[*] Binary protection state of dbus-test-tool
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function printf tear down of dbus-test-tool
; 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-test-tool @ 0x112b4 */
| #include <stdint.h>
|
; (fcn) fcn.000112b4 () | void fcn_000112b4 (int32_t arg1, int32_t arg2) {
| void * s;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x000112b4 push {r4, r5, lr} |
0x000112b8 sub sp, sp, 0x14 |
0x000112bc mov r5, r0 | r5 = r0;
0x000112c0 mov r2, 0x10 | r2 = 0x10;
0x000112c4 mov r4, r1 | r4 = r1;
0x000112c8 mov r0, sp | r0 = sp;
0x000112cc mov r1, 0 | r1 = 0;
0x000112d0 bl 0x10f58 | memset (r0, r1, r2);
0x000112d4 mov r3, 1 | r3 = 1;
0x000112d8 mov r0, r5 | r0 = r5;
0x000112dc mov r1, sp | r1 = sp;
0x000112e0 strb r3, [sp, 8] | var_8h = r3;
0x000112e4 bl 0x1103c | r0 = dbus_bus_get ();
0x000112e8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x000112ec bne 0x11314 | goto label_0;
| }
0x000112f0 ldr r0, [pc, 0x8c] |
0x000112f4 ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
0x000112f8 ldr r1, [pc, 0x88] | r1 = stderr;
0x000112fc ldr r0, [r0] | r0 = *(0x11380);
0x00011300 bl 0x11030 | fprintf (r0, r1, r2)
0x00011304 mov r0, sp | r0 = sp;
0x00011308 bl 0x10fb8 | dbus_error_free ();
| do {
0x0001130c mov r0, 1 | r0 = 1;
0x00011310 bl 0x11018 | exit (r0);
| label_0:
0x00011314 cmp r4, 0 |
| if (r4 == 0) {
0x00011318 beq 0x1134c | goto label_1;
| }
0x0001131c mov r3, 0 | r3 = 0;
0x00011320 mov r2, 4 | r2 = 4;
0x00011324 mov r1, r4 | r1 = r4;
0x00011328 bl 0x110c0 | r0 = dbus_bus_request_name ();
0x0001132c cmp r0, 1 |
| if (r0 == 1) {
0x00011330 beq 0x11354 | goto label_2;
| }
0x00011334 ldr r3, [pc, 0x48] | r3 = *(0x11380);
0x00011338 mov r2, r4 | r2 = r4;
0x0001133c ldr r1, [pc, 0x48] | r1 = "Failed_to_connect_to_bus:__s:__s";
0x00011340 ldr r0, [r3] | r0 = *(0x11380);
0x00011344 bl 0x11030 | fprintf (r0, "Failed_to_connect_to_bus:__s:__s", r2, r3)
0x00011348 b 0x1130c |
| } while (1);
| label_1:
0x0001134c bl 0x11114 | dbus_bus_get_unique_name ();
0x00011350 bl 0x11108 | puts (r0);
| label_2:
0x00011354 mov r3, 0 | r3 = 0;
0x00011358 mov r2, r3 | r2 = r3;
0x0001135c ldr r1, [pc, 0x2c] | r1 = "failed_to_take_bus_name__s";
0x00011360 mov r0, r5 | r0 = r5;
0x00011364 bl 0x10f70 | r0 = dbus_connection_add_filter ();
0x00011368 cmp r0, 0 |
| if (r0 == 0) {
0x0001136c bne 0x11378 |
0x00011370 ldr r0, [pc, 0x1c] | r0 = *(0x11390);
0x00011374 bl 0x120ec | fcn_000120ec (r0);
| }
0x00011378 mov r0, r5 | r0 = r5;
0x0001137c add sp, sp, 0x14 |
0x00011380 pop {r4, r5, pc} |
| }
; 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-test-tool @ 0x11708 */
| #include <stdint.h>
|
; (fcn) fcn.00011708 () | void fcn_00011708 (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x00011708 push {r4, r5, lr} |
0x0001170c sub sp, sp, 0x1c |
0x00011710 mov r5, r0 | r5 = r0;
0x00011714 add r0, sp, 8 | r0 += var_8h;
0x00011718 mov r4, r1 | r4 = r1;
0x0001171c bl 0x10ec8 | dbus_error_init ();
0x00011720 mov r0, r5 | r0 = r5;
0x00011724 bl 0x11120 | dbus_pending_call_steal_reply ();
0x00011728 ldr r3, [pc, 0x58] |
0x0001172c ldr r3, [r3] | r3 = *(0x11784);
0x00011730 cmp r3, 0 |
| if (r3 == 0) {
0x00011734 bne 0x11774 |
0x00011738 mov r5, r0 | r5 = r0;
0x0001173c bl 0x11090 | r0 = dbus_message_get_type ();
0x00011740 cmp r0, 3 |
| if (r0 != 3) {
0x00011744 bne 0x11774 | goto label_0;
| }
0x00011748 mov r1, r5 | r1 = r5;
0x0001174c add r0, sp, 8 | r0 += var_8h;
0x00011750 bl 0x11048 | dbus_set_error_from_message ();
0x00011754 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00011758 ldr r0, [pc, 0x2c] |
0x0001175c str r3, [sp] | *(sp) = r3;
0x00011760 ldr r2, [r4] | r2 = *(r4);
0x00011764 ldr r3, [sp, 8] | r3 = var_8h;
0x00011768 ldr r1, [pc, 0x20] | r1 = stderr;
0x0001176c ldr r0, [r0] | r0 = *(0x11788);
0x00011770 bl 0x11030 | fprintf (r0, r1, r2, r3)
| }
| label_0:
0x00011774 ldr r3, [r4] | r3 = *(r4);
0x00011778 add r3, r3, 1 | r3++;
0x0001177c str r3, [r4] | *(r4) = r3;
0x00011780 add sp, sp, 0x1c |
0x00011784 pop {r4, r5, pc} |
| }
; 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-test-tool @ 0x11794 */
| #include <stdint.h>
|
; (fcn) fcn.00011794 () | void fcn_00011794 () {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t seed;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| void * s;
| int32_t var_50h_2;
| int32_t var_58h;
| int32_t var_64h;
0x00011794 ldr r3, [pc, 0x14] | r3 = *(0x117ac);
0x00011798 push {r4, lr} |
0x0001179c ldr r0, [pc, 0x10] | r0 = stderr;
0x000117a0 ldr r1, [r3] | r1 = *(0x117ac);
0x000117a4 bl 0x110a8 | fputs (r0, r1);
0x000117a8 mov r0, 2 | r0 = 2;
0x000117ac bl 0x11018 | exit (r0);
| if (? != ?) {
0x000117b0 andeq r3, r2, ip, ror 1 | r3 = r2 & (ip >>> 1);
| }
| if (? != ?) {
0x000117b4 andeq r2, r1, sb, lsr 12 | r2 = r1 & (sb >> 12);
| }
0x000117b8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000117bc sub sp, sp, 0x64 |
0x000117c0 mov r4, 0 | r4 = 0;
0x000117c4 str r0, [sp, 0x30] | var_30h = r0;
0x000117c8 str r1, [sp, 0x34] | var_34h = r1;
0x000117cc mov r2, 0x10 | r2 = 0x10;
0x000117d0 mov r1, 0 | r1 = 0;
0x000117d4 add r0, sp, 0x50 | r0 += s;
0x000117d8 bl 0x10f58 | memset (r0, r1, r2);
0x000117dc mov r3, 1 | r3 = 1;
0x000117e0 mov r0, r4 | r0 = r4;
0x000117e4 strb r3, [sp, 0x58] | var_58h = r3;
0x000117e8 str r4, [sp, 0x38] | var_38h = r4;
0x000117ec str r4, [sp, 0x3c] | var_3ch = r4;
0x000117f0 str r4, [sp, 0x40] | var_40h = r4;
0x000117f4 bl 0x10f4c | time (r0);
0x000117f8 mov r3, 0x73 | r3 = 0x73;
0x000117fc str r3, [sp, 0x18] | var_18h = r3;
0x00011800 mov r3, 2 | r3 = 2;
0x00011804 str r3, [sp, 0x1c] | var_1ch = r3;
0x00011808 ldr r3, [pc, 0x844] | r3 = *(0x12050);
0x0001180c mov sl, 1 | sl = 1;
0x00011810 mov r5, r4 | r5 = r4;
0x00011814 mov fp, r4 |
0x00011818 str r4, [sp, 0x14] | var_14h = r4;
0x0001181c str r4, [sp, 0xc] | var_ch = r4;
0x00011820 str r4, [sp, 0x10] | var_10h = r4;
0x00011824 str sl, [sp, 0x20] | var_20h = sl;
0x00011828 str r3, [sp, 0x28] | var_28h = r3;
0x0001182c str r4, [sp, 0x24] | var_24h = r4;
0x00011830 str r0, [sp, 0x2c] | seed = r0;
| label_0:
0x00011834 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00011838 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0001183c cmp r3, r2 |
| if (r3 >= r2) {
0x00011840 blt 0x118e4 |
0x00011844 ldr r0, [sp, 0x2c] | r0 = seed;
0x00011848 bl 0x10f1c | srand (r0);
0x0001184c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00011850 cmp r3, 0 |
| if (r3 != 0) {
0x00011854 ldreq r3, [pc, 0x7fc] | r3 = "hello__world_";
| }
| if (r3 != 0) {
0x00011858 streq r3, [sp, 0x3c] | var_3ch = r3;
| }
| if (r3 != 0) {
0x0001185c moveq r3, 0xd | r3 = 0xd;
| }
| if (r3 != 0) {
0x00011860 streq r3, [sp, 0x44] | var_44h = r3;
| }
0x00011864 mov r8, 0 | r8 = 0;
0x00011868 mov r7, r8 | r7 = r8;
0x0001186c mov sb, r8 | sb = r8;
0x00011870 mov r6, r8 | r6 = r8;
| label_11:
0x00011874 cmp r5, 0 |
| if (r5 == 0) {
0x00011878 beq 0x1203c | goto label_15;
| }
0x0001187c ldr r3, [sp, 0x20] | r3 = var_20h;
0x00011880 cmp r3, sb |
| if (r3 > sb) {
0x00011884 movle r3, 0 | r3 = 0;
| }
| if (r3 <= sb) {
0x00011888 movgt r3, 1 | r3 = 1;
| }
| label_14:
0x0001188c cmp r3, 0 |
| if (r3 != 0) {
0x00011890 bne 0x11d60 | goto label_16;
| }
0x00011894 cmp r6, 0 |
| if (r6 != 0) {
0x00011898 beq 0x118b4 |
0x0001189c mov r0, r6 | r0 = r6;
0x000118a0 bl 0x10f04 | dbus_connection_flush ();
0x000118a4 mov r0, r6 | r0 = r6;
0x000118a8 bl 0x10fd0 | dbus_connection_close ();
0x000118ac mov r0, r6 | r0 = r6;
0x000118b0 bl 0x10f7c | dbus_connection_unref ();
| }
0x000118b4 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000118b8 bl 0x110cc | dbus_free ();
0x000118bc mov r0, r4 | r0 = r4;
0x000118c0 bl 0x110cc | dbus_free ();
0x000118c4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000118c8 cmp r3, 0 |
| if (r3 != 0) {
0x000118cc beq 0x118d8 |
0x000118d0 mov r0, r3 | r0 = r3;
0x000118d4 bl 0x11078 | dbus_message_unref ();
| }
0x000118d8 bl 0x10fdc | dbus_shutdown ();
0x000118dc mov r0, 0 | r0 = 0;
0x000118e0 b 0x11e00 | goto label_17;
| }
0x000118e4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000118e8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000118ec ldr r6, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r6 = *((r3 + offset_0));
0x000118f0 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000118f4 cmp r3, 0 |
| if (r3 == 0) {
0x000118f8 beq 0x11960 | goto label_18;
| }
0x000118fc ldr r1, [pc, 0x758] | r1 = "hello__world_";
0x00011900 mov r0, r6 | r0 = r6;
0x00011904 bl 0x10fa0 | r0 = strstr (r0, "hello__world_");
0x00011908 cmp r6, r0 |
| if (r6 != r0) {
0x0001190c beq 0x1194c |
0x00011910 ldr r1, [pc, 0x748] | r1 = "--payload=";
0x00011914 mov r0, r6 | r0 = r6;
0x00011918 bl 0x10f40 | r0 = strcmp (r0, "--payload=");
0x0001191c cmp r0, 0 |
| if (r0 == 0) {
0x00011920 beq 0x1194c | goto label_19;
| }
0x00011924 ldr r1, [pc, 0x738] | r1 = "__stdin";
0x00011928 mov r0, r6 | r0 = r6;
0x0001192c bl 0x10f40 | r0 = strcmp (r0, "__stdin");
0x00011930 cmp r0, 0 |
| if (r0 == 0) {
0x00011934 beq 0x1194c | goto label_19;
| }
0x00011938 ldr r1, [pc, 0x728] | r1 = "__message_stdin";
0x0001193c mov r0, r6 | r0 = r6;
0x00011940 bl 0x10f40 | r0 = strcmp (r0, "__message_stdin");
0x00011944 cmp r0, 0 |
| if (r0 != 0) {
0x00011948 bne 0x11960 | goto label_18;
| }
| }
| label_19:
0x0001194c ldr r3, [pc, 0x718] | r3 = "__random_size";
0x00011950 ldr r0, [pc, 0x718] | r0 = stderr;
0x00011954 ldr r1, [r3] | r1 = "__random_size";
0x00011958 bl 0x110a8 | r0 = fputs (r0, "__random_size");
| do {
| label_4:
0x0001195c bl 0x11794 | fcn_00011794 ();
| label_18:
0x00011960 ldr r1, [pc, 0x70c] | r1 = "At_most_one_of___payload____stdin____message_stdin_and___random_size_may_be_specified";
0x00011964 mov r0, r6 | r0 = r6;
0x00011968 bl 0x10f40 | r0 = strcmp (r0, "At_most_one_of___payload____stdin____message_stdin_and___random_size_may_be_specified");
0x0001196c cmp r0, 0 |
| if (r0 == 0) {
0x00011970 beq 0x11d30 | goto label_20;
| }
0x00011974 ldr r1, [pc, 0x6fc] | r1 = "--system";
0x00011978 mov r0, r6 | r0 = r6;
0x0001197c bl 0x10f40 | r0 = strcmp (r0, "--system");
0x00011980 cmp r0, 0 |
| if (r0 == 0) {
0x00011984 beq 0x11d3c | goto label_21;
| }
0x00011988 ldr r1, [pc, 0x6ec] | r1 = "__session";
0x0001198c mov r0, r6 | r0 = r6;
0x00011990 bl 0x10fa0 | r0 = strstr (r0, "__session");
0x00011994 cmp r6, r0 |
| if (r6 != r0) {
0x00011998 bne 0x119c0 | goto label_22;
| }
0x0001199c add r0, r6, 8 | r0 = r6 + 8;
0x000119a0 bl 0x110e4 | r0 = atoi (r0);
0x000119a4 subs r3, r0, 0 | r3 = r0 - 0;
0x000119a8 str r3, [sp, 0x20] | var_20h = r3;
0x000119ac ble 0x1195c |
| } while (r3 <= r0);
| do {
| label_1:
0x000119b0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000119b4 add r3, r3, 1 | r3++;
0x000119b8 str r3, [sp, 0x1c] | var_1ch = r3;
0x000119bc b 0x11834 | goto label_0;
| label_22:
0x000119c0 ldr r1, [pc, 0x6b8] | r1 = "__count";
0x000119c4 mov r0, r6 | r0 = r6;
0x000119c8 bl 0x10f40 | r0 = strcmp (r0, "__count");
0x000119cc cmp r0, 0 |
| if (r0 != 0) {
0x000119d0 ldreq r3, [pc, 0x6ac] | r3 = *(0x00012084);
| }
| if (r0 != 0) {
0x000119d4 moveq r2, 1 | r2 = 1;
| }
| if (r0 != 0) {
0x000119d8 streq r2, [r3] | *(r3) = r2;
| }
0x000119dc beq 0x119b0 |
| } while (r0 == 0);
0x000119e0 ldr r1, [pc, 0x6a0] | r1 = *(0x12084);
0x000119e4 mov r0, r6 | r0 = r6;
0x000119e8 bl 0x10fa0 | r0 = strstr (r0, r1);
0x000119ec cmp r6, r0 |
| if (r6 != r0) {
0x000119f0 addeq r3, r6, 7 | r3 = r6 + 7;
| }
| if (r6 == r0) {
0x000119f4 streq r3, [sp, 0x28] | var_28h = r3;
| goto label_23;
| }
| if (r6 == r0) {
| label_23:
0x000119f8 beq 0x119b0 | goto label_1;
| }
0x000119fc mov r0, r6 | r0 = r6;
0x00011a00 ldr r1, [pc, 0x654] | r1 = "hello__world_";
0x00011a04 bl 0x10fa0 | r0 = strstr (r0, "hello__world_");
0x00011a08 cmp r6, r0 |
| if (r6 != r0) {
0x00011a0c addeq r6, r6, 0xa | r6 += 0xa;
| }
| if (r6 == r0) {
0x00011a10 streq r6, [sp, 0x3c] | var_3ch = r6;
| goto label_24;
| }
| if (r6 == r0) {
| label_24:
0x00011a14 beq 0x119b0 | goto label_1;
| }
0x00011a18 ldr r1, [pc, 0x640] | r1 = "--payload=";
0x00011a1c mov r0, r6 | r0 = r6;
0x00011a20 bl 0x10f40 | r0 = strcmp (r0, "--payload=");
0x00011a24 cmp r0, 0 |
| if (r0 == 0) {
0x00011a28 bne 0x11a44 |
0x00011a2c add r1, sp, 0x44 | r1 += var_44h;
0x00011a30 add r0, sp, 0x40 | r0 += var_40h;
0x00011a34 bl 0x11678 | fcn_00011678 (r0, r1);
0x00011a38 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00011a3c str r3, [sp, 0x3c] | var_3ch = r3;
0x00011a40 b 0x119b0 | goto label_1;
| }
0x00011a44 ldr r1, [pc, 0x618] | r1 = "__stdin";
0x00011a48 mov r0, r6 | r0 = r6;
0x00011a4c bl 0x10f40 | r0 = strcmp (r0, "__stdin");
0x00011a50 cmp r0, 0 |
| if (r0 != 0) {
0x00011a54 bne 0x11ac0 | goto label_25;
| }
0x00011a58 add r1, sp, 0x44 | r1 += var_44h;
0x00011a5c add r0, sp, 0x40 | r0 += var_40h;
0x00011a60 bl 0x11678 | fcn_00011678 (r0, r1);
0x00011a64 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00011a68 add r2, sp, 0x50 | r2 += s;
0x00011a6c ldr r1, [sp, 0x44] | r1 = var_44h;
0x00011a70 str r0, [sp, 0x3c] | var_3ch = r0;
0x00011a74 bl 0x10f88 | r0 = dbus_message_demarshal ();
0x00011a78 subs r3, r0, 0 | r3 = r0 - 0;
0x00011a7c str r3, [sp, 0x10] | var_10h = r3;
| if (r3 == r0) {
0x00011a80 bne 0x11aa0 |
0x00011a84 ldr r0, [pc, 0x5e0] |
0x00011a88 ldrd r2, r3, [sp, 0x50] | __asm ("ldrd r2, r3, [s]");
0x00011a8c ldr r1, [pc, 0x5f8] | r1 = "--dest=";
0x00011a90 ldr r0, [r0] | r0 = "__random_size";
0x00011a94 bl 0x11030 | fprintf ("__random_size", "--dest=", r2)
| label_2:
0x00011a98 mov r0, 1 | r0 = 1;
0x00011a9c bl 0x11018 | r0 = exit (r0);
| }
0x00011aa0 bl 0x11090 | r0 = dbus_message_get_type ();
0x00011aa4 cmp r0, 1 |
| if (r0 == 1) {
0x00011aa8 beq 0x119b0 | goto label_1;
| }
0x00011aac ldr r3, [pc, 0x5b8] | r3 = "__random_size";
0x00011ab0 ldr r0, [pc, 0x5d8] | r0 = "Unable to demarshal template message: %s: %s";
0x00011ab4 ldr r1, [r3] | r1 = "__random_size";
| label_12:
0x00011ab8 bl 0x110a8 | fputs ("Unable to demarshal template message: %s: %s", "__random_size");
0x00011abc b 0x11a98 | goto label_2;
| label_25:
0x00011ac0 ldr r1, [pc, 0x5a0] | r1 = "__message_stdin";
0x00011ac4 mov r0, r6 | r0 = r6;
0x00011ac8 bl 0x10f40 | r0 = strcmp (r0, "__message_stdin");
0x00011acc subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 != r0) {
0x00011ad0 bne 0x11c00 | goto label_26;
| }
0x00011ad4 add r1, sp, 0x44 | r1 += var_44h;
0x00011ad8 add r0, sp, 0x40 | r0 += var_40h;
0x00011adc str r8, [sp, 0x4c] | var_4ch = r8;
0x00011ae0 ldr r6, [pc, 0x5ac] | r6 = "Template_message_must_be_a_method_call";
0x00011ae4 bl 0x11678 | fcn_00011678 (r0, r1);
0x00011ae8 ldr r4, [sp, 0x40] | r4 = var_40h;
| do {
0x00011aec ldrd r2, r3, [sp, 0x40] | __asm ("ldrd r2, r3, [var_40h]");
0x00011af0 add r3, r3, r2 | r3 += r2;
0x00011af4 cmp r4, r3 |
| if (r4 < r3) {
0x00011af8 bhs 0x11b18 |
0x00011afc add r3, sp, 0x4c | r3 += var_4ch;
0x00011b00 add r2, sp, 0x48 | r2 += var_48h;
0x00011b04 mov r1, r6 | r1 = r6;
0x00011b08 mov r0, r4 | r0 = r4;
0x00011b0c bl 0x10f10 | r0 = sscanf (r0, r1, r2);
0x00011b10 cmp r0, 0 |
| if (r0 != 0) {
0x00011b14 bne 0x11b34 | goto label_27;
| }
| }
0x00011b18 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00011b1c lsl r0, r3, 2 | r0 = r3 << 2;
0x00011b20 bl 0x10ebc | r0 = dbus_malloc0 ();
0x00011b24 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x00011b28 bne 0x11b4c | goto label_28;
| }
0x00011b2c ldr r0, [pc, 0x564] | r0 = "_u__n";
| label_3:
0x00011b30 bl 0x120ec | fcn_000120ec ("_u__n");
| label_27:
0x00011b34 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00011b38 add r3, r3, 1 | r3++;
0x00011b3c str r3, [sp, 0x14] | var_14h = r3;
0x00011b40 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00011b44 add r4, r4, r3 | r4 += r3;
0x00011b48 b 0x11aec |
| } while (1);
| label_28:
0x00011b4c ldr sb, [sp, 0x40] | sb = var_40h;
0x00011b50 mov r6, 0 | r6 = 0;
| do {
0x00011b54 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00011b58 ldr r7, [sp, 0x44] | r7 = var_44h;
0x00011b5c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00011b60 add r7, r0, r7 | r7 = r0 + r7;
0x00011b64 cmp sb, r7 |
| if (sb < r7) {
0x00011b68 movhs r2, 0 | r2 = 0;
| }
| if (sb >= r7) {
0x00011b6c movlo r2, 1 | r2 = 1;
| }
0x00011b70 cmp r3, r8 |
| if (r3 > r8) {
0x00011b74 movle r2, 0 | r2 = 0;
| }
0x00011b78 cmp r2, 0 |
0x00011b7c mov r7, r2 | r7 = r2;
| if (r2 == 0) {
0x00011b80 bne 0x11bb0 |
0x00011b84 bl 0x110cc | dbus_free ();
0x00011b88 add r0, r6, 1 | r0 = r6 + 1;
0x00011b8c str r0, [sp, 0x44] | var_44h = r0;
0x00011b90 bl 0x10fe8 | r0 = dbus_malloc ();
0x00011b94 cmp r0, 0 |
0x00011b98 mov r6, r0 | r6 = r0;
0x00011b9c str r0, [sp, 0x40] | var_40h = r0;
0x00011ba0 str r0, [sp, 0x3c] | var_3ch = r0;
| if (r0 != 0) {
0x00011ba4 bne 0x11be4 | goto label_29;
| }
0x00011ba8 ldr r0, [pc, 0x4ec] | r0 = "allocating array of message lengths";
0x00011bac b 0x11b30 | goto label_3;
| }
0x00011bb0 add r3, sp, 0x4c | r3 += var_4ch;
0x00011bb4 mov r0, sb | r0 = sb;
0x00011bb8 add r2, sp, 0x48 | r2 += var_48h;
0x00011bbc ldr r1, [pc, 0x4d0] | r1 = "Template_message_must_be_a_method_call";
0x00011bc0 bl 0x10f10 | sscanf (r0, "Template_message_must_be_a_method_call", r2);
0x00011bc4 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00011bc8 cmp r6, r3 |
0x00011bcc str r3, [r4, r8, lsl 2] | offset_1 = r8 << 2;
| *((r4 + offset_1)) = r3;
| if (r6 >= r3) {
0x00011bd0 movlo r6, r3 | r6 = r3;
| }
0x00011bd4 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00011bd8 add r8, r8, 1 | r8++;
0x00011bdc add sb, sb, r3 | sb += r3;
0x00011be0 b 0x11b54 |
| } while (1);
| label_29:
0x00011be4 ldr r8, [sp, 0x44] | r8 = var_44h;
0x00011be8 mov r1, 0x58 | r1 = 0x58;
0x00011bec mov r2, r8 | r2 = r8;
0x00011bf0 add r6, r6, r8 | r6 += r8;
0x00011bf4 bl 0x10f58 | memset (r0, r1, r2);
0x00011bf8 strb r7, [r6, -1] | *((r6 - 1)) = r7;
0x00011bfc b 0x119b0 | goto label_1;
| label_26:
0x00011c00 ldr r1, [pc, 0x498] | r1 = "allocating maximum-sized payload";
0x00011c04 mov r0, r6 | r0 = r6;
0x00011c08 bl 0x10f40 | r0 = strcmp (r0, "allocating maximum-sized payload");
0x00011c0c cmp r0, 0 |
| if (r0 == 0) {
0x00011c10 beq 0x11d44 | goto label_30;
| }
0x00011c14 ldr r1, [pc, 0x488] | r1 = "__empty";
0x00011c18 mov r0, r6 | r0 = r6;
0x00011c1c bl 0x10f40 | r0 = strcmp (r0, "__empty");
0x00011c20 cmp r0, 0 |
| if (r0 == 0) {
0x00011c24 beq 0x11d50 | goto label_31;
| }
0x00011c28 ldr r1, [pc, 0x478] | r1 = "__string";
0x00011c2c mov r0, r6 | r0 = r6;
0x00011c30 bl 0x10f40 | r0 = strcmp (r0, "__string");
0x00011c34 cmp r0, 0 |
| if (r0 == 0) {
0x00011c38 beq 0x11d58 | goto label_32;
| }
0x00011c3c ldr r1, [pc, 0x468] | r1 = "--bytes";
0x00011c40 mov r0, r6 | r0 = r6;
0x00011c44 bl 0x10f40 | r0 = strcmp (r0, "--bytes");
0x00011c48 cmp r0, 0 |
| if (r0 != 0) {
0x00011c4c bne 0x11c70 | goto label_33;
| }
0x00011c50 cmp sl, 1 |
| if (sl > 1) {
0x00011c54 bgt 0x1195c | goto label_4;
| }
0x00011c58 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00011c5c cmp r3, 0 |
| if (r3 != 0) {
0x00011c60 bne 0x1195c | goto label_4;
| }
0x00011c64 mov fp, 1 |
| label_5:
0x00011c68 mvn sl, 0 | sl = ~0;
0x00011c6c b 0x119b0 | goto label_1;
| label_33:
0x00011c70 ldr r1, [pc, 0x438] | r1 = "--flood";
0x00011c74 mov r0, r6 | r0 = r6;
0x00011c78 bl 0x10f40 | r0 = strcmp (r0, "--flood");
0x00011c7c cmp r0, 0 |
| if (r0 != 0) {
0x00011c80 bne 0x11c94 | goto label_34;
| }
0x00011c84 cmp sl, 1 |
| if (sl > 1) {
0x00011c88 bgt 0x1195c | goto label_4;
| }
0x00011c8c mov r5, 1 | r5 = 1;
0x00011c90 b 0x11c68 | goto label_5;
| label_34:
0x00011c94 ldr r1, [pc, 0x418] | r1 = "--no-reply";
0x00011c98 mov r0, r6 | r0 = r6;
0x00011c9c bl 0x10fa0 | r0 = strstr (r0, "--no-reply");
0x00011ca0 cmp r6, r0 |
| if (r6 != r0) {
0x00011ca4 bne 0x11cc8 | goto label_35;
| }
0x00011ca8 orrs r5, fp, r5 | r5 = fp | r5;
| if (r5 != fp) {
0x00011cac bne 0x1195c | goto label_4;
| }
0x00011cb0 add r0, r6, 8 | r0 = r6 + 8;
0x00011cb4 bl 0x110e4 | r0 = atoi (r0);
0x00011cb8 subs sl, r0, 0 | sl = r0 - 0;
| if (sl <= r0) {
0x00011cbc ble 0x1195c | goto label_4;
| }
0x00011cc0 mov fp, r5 |
0x00011cc4 b 0x119b0 | goto label_1;
| label_35:
0x00011cc8 ldr r1, [pc, 0x3e8] | r1 = "__queue";
0x00011ccc mov r0, r6 | r0 = r6;
0x00011cd0 bl 0x10fa0 | r0 = strstr (r0, "__queue");
0x00011cd4 cmp r6, r0 |
| if (r6 == r0) {
0x00011cd8 bne 0x11cf4 |
0x00011cdc mov r2, 0xa | r2 = 0xa;
0x00011ce0 mov r1, 0 | r1 = 0;
0x00011ce4 add r0, r6, 7 | r0 = r6 + 7;
0x00011ce8 bl 0x11054 | strtoul (r0, r1, r2);
0x00011cec str r0, [sp, 0x2c] | seed = r0;
0x00011cf0 b 0x119b0 | goto label_1;
| }
0x00011cf4 ldr r1, [pc, 0x3c0] | r1 = "--seed=";
0x00011cf8 mov r0, r6 | r0 = r6;
0x00011cfc bl 0x10fa0 | r0 = strstr (r0, "--seed=");
0x00011d00 cmp r6, r0 |
| if (r6 != r0) {
0x00011d04 bne 0x1195c | goto label_4;
| }
0x00011d08 add r0, r6, 0x14 | r0 = r6 + 0x14;
0x00011d0c bl 0x110e4 | r0 = atoi (r0);
0x00011d10 cmp r0, 0 |
0x00011d14 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x00011d18 movne r3, fp | r3 = fp;
| }
| if (r0 != 0) {
0x00011d1c moveq r3, 0 | r3 = 0;
| }
0x00011d20 cmp r3, 0 |
0x00011d24 str r0, [sp, 0xc] | var_ch = r0;
| if (r3 == 0) {
0x00011d28 beq 0x119b0 | goto label_1;
| }
0x00011d2c b 0x1195c | goto label_4;
| label_20:
0x00011d30 mov r3, 1 | r3 = 1;
0x00011d34 str r3, [sp, 0x24] | var_24h = r3;
0x00011d38 b 0x119b0 | goto label_1;
| label_21:
0x00011d3c str r0, [sp, 0x24] | var_24h = r0;
0x00011d40 b 0x119b0 | goto label_1;
| label_30:
0x00011d44 mov r3, 0 | r3 = 0;
| do {
| label_6:
0x00011d48 str r3, [sp, 0x18] | var_18h = r3;
0x00011d4c b 0x119b0 | goto label_1;
| label_31:
0x00011d50 mov r3, 0x73 | r3 = 0x73;
0x00011d54 b 0x11d48 |
| } while (1);
| label_32:
0x00011d58 mov r3, 0x61 | r3 = 0x61;
0x00011d5c b 0x11d48 | goto label_6;
| label_16:
0x00011d60 cmp r6, 0 |
| if (r6 != 0) {
0x00011d64 beq 0x11dbc |
0x00011d68 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00011d6c ldr r2, [sp, 0xc] | r2 = var_ch;
0x00011d70 sub r3, r7, r3 | r3 = r7 - r3;
0x00011d74 cmp r2, 0 |
0x00011d78 clz r3, r3 | r3 &= r3;
0x00011d7c lsr r3, r3, 5 | r3 >>= 5;
| if (r2 != 0) {
0x00011d80 moveq r3, 0 | r3 = 0;
| }
0x00011d84 cmp r3, 0 |
| if (r3 == 0) {
0x00011d88 beq 0x11e10 | goto label_36;
| }
0x00011d8c cmp r5, 0 |
| if (r5 == 0) {
0x00011d90 bne 0x11da4 |
0x00011d94 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00011d98 sub r3, r3, r8 | r3 -= r8;
0x00011d9c cmp r3, r2 |
| if (r3 != r2) {
0x00011da0 bne 0x11e10 | goto label_36;
| }
| }
0x00011da4 mov r0, r6 | r0 = r6;
0x00011da8 bl 0x10f04 | dbus_connection_flush ();
0x00011dac mov r0, r6 | r0 = r6;
0x00011db0 bl 0x10fd0 | dbus_connection_close ();
0x00011db4 mov r0, r6 | r0 = r6;
0x00011db8 bl 0x10f7c | dbus_connection_unref ();
| }
0x00011dbc add r1, sp, 0x50 | r1 += s;
0x00011dc0 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00011dc4 bl 0x110f0 | r0 = dbus_bus_get_private ();
0x00011dc8 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x00011dcc bne 0x11e08 |
0x00011dd0 ldr r0, [pc, 0x294] |
0x00011dd4 ldrd r2, r3, [sp, 0x50] | __asm ("ldrd r2, r3, [s]");
0x00011dd8 ldr r1, [pc, 0x2e0] | r1 = "--messages-per-conn=";
0x00011ddc ldr r0, [r0] | r0 = "__random_size";
0x00011de0 bl 0x11030 | fprintf ("__random_size", "--messages-per-conn=", r2)
0x00011de4 add r0, sp, 0x50 | r0 += s;
0x00011de8 bl 0x10fb8 | dbus_error_free ();
0x00011dec mov r0, r4 | r0 = r4;
0x00011df0 bl 0x110cc | dbus_free ();
0x00011df4 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00011df8 bl 0x110cc | dbus_free ();
0x00011dfc mov r0, 1 | r0 = 1;
| label_17:
0x00011e00 add sp, sp, 0x64 |
0x00011e04 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00011e08 ldr r8, [sp, 0x38] | r8 = var_38h;
0x00011e0c mov r7, 0 | r7 = 0;
| label_36:
0x00011e10 mov fp, sb |
0x00011e14 b 0x11fa4 | goto label_37;
| label_10:
0x00011e18 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00011e1c cmp r3, 0 |
| if (r3 == 0) {
0x00011e20 beq 0x11e68 | goto label_38;
| }
0x00011e24 mov r0, r3 | r0 = r3;
0x00011e28 bl 0x110d8 | r0 = dbus_message_copy ();
0x00011e2c subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x00011e30 ldreq r0, [pc, 0x28c] | r0 = "copying_message";
| goto label_39;
| }
| if (sb == r0) {
| label_39:
0x00011e34 beq 0x11b30 | goto label_3;
| }
0x00011e38 mov r1, r5 | r1 = r5;
0x00011e3c bl 0x11000 | dbus_message_set_no_reply ();
| label_7:
0x00011e40 cmp r5, 0 |
| if (r5 == 0) {
0x00011e44 beq 0x11f4c | goto label_40;
| }
0x00011e48 mov r2, 0 | r2 = 0;
0x00011e4c mov r1, sb | r1 = sb;
0x00011e50 mov r0, r6 | r0 = r6;
0x00011e54 bl 0x110b4 | r0 = dbus_connection_send ();
0x00011e58 cmp r0, 0 |
| if (r0 != 0) {
0x00011e5c bne 0x11f94 | goto label_41;
| }
| label_9:
0x00011e60 ldr r0, [pc, 0x260] | r0 = "copying_message";
0x00011e64 b 0x11b30 | goto label_3;
| label_38:
0x00011e68 ldr r3, [pc, 0x25c] | r3 = "sending message";
0x00011e6c ldr r2, [pc, 0x25c] | r2 = "Spam";
0x00011e70 ldr r1, [pc, 0x25c] | r1 = "com.example";
0x00011e74 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00011e78 bl 0x10fac | r0 = dbus_message_new_method_call ();
0x00011e7c subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x00011e80 ldreq r0, [pc, 0x250] | r0 = "allocating message";
| goto label_42;
| }
| if (sb == r0) {
| label_42:
0x00011e84 beq 0x11b30 | goto label_3;
| }
0x00011e88 mov r1, r5 | r1 = r5;
0x00011e8c bl 0x11000 | dbus_message_set_no_reply ();
0x00011e90 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00011e94 cmp r3, 0x61 |
| if (r3 == 0x61) {
0x00011e98 beq 0x11f0c | goto label_43;
| }
0x00011e9c cmp r3, 0x73 |
| if (r3 != 0x73) {
0x00011ea0 bne 0x11e40 | goto label_7;
| }
0x00011ea4 cmp r4, 0 |
| if (r4 != 0) {
0x00011ea8 streq r4, [sp, 0x1c] | var_1ch = r4;
| }
| if (r4 != 0) {
0x00011eac beq 0x11ed4 |
0x00011eb0 bl 0x10f64 | rand ();
0x00011eb4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00011eb8 bl 0x122b4 | fcn_000122b4 (r0, r1);
0x00011ebc ldr r3, [r4, r1, lsl 2] | offset_2 = r1 << 2;
| r3 = *((r4 + offset_2));
0x00011ec0 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00011ec4 str r3, [sp, 0x1c] | var_1ch = r3;
0x00011ec8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00011ecc ldr r3, [sp, 0x40] | r3 = var_40h;
0x00011ed0 strb r1, [r3, r2] | *((r3 + r2)) = r1;
| }
0x00011ed4 mov r3, 0 | r3 = 0;
0x00011ed8 add r2, sp, 0x3c | r2 += var_3ch;
0x00011edc mov r1, 0x73 | r1 = 0x73;
0x00011ee0 mov r0, sb | r0 = sb;
0x00011ee4 bl 0x10f94 | dbus_message_append_args ();
0x00011ee8 cmp r4, 0 |
| if (r4 == 0) {
0x00011eec ldrne r3, [sp, 0x40] | r3 = var_40h;
| }
| if (r4 == 0) {
0x00011ef0 ldrne r1, [sp, 0x1c] | r1 = var_1ch;
| }
| if (r4 == 0) {
0x00011ef4 movne r2, 0x58 | r2 = 0x58;
| }
| if (r4 == 0) {
0x00011ef8 strbne r2, [r3, r1] | *((r3 + r1)) = r2;
| }
| label_8:
0x00011efc cmp r0, 0 |
| if (r0 != 0) {
0x00011f00 bne 0x11e40 | goto label_7;
| }
0x00011f04 ldr r0, [pc, 0x1d0] | r0 = "allocating message";
0x00011f08 b 0x11b30 | goto label_3;
| label_43:
0x00011f0c cmp r4, 0 |
| if (r4 != 0) {
0x00011f10 ldreq r3, [sp, 0x44] | r3 = var_44h;
| }
| if (r4 != 0) {
0x00011f14 beq 0x11f28 |
0x00011f18 bl 0x10f64 | rand ();
0x00011f1c ldr r1, [sp, 0x14] | r1 = var_14h;
0x00011f20 bl 0x122b4 | fcn_000122b4 (r0, r1);
0x00011f24 ldr r3, [r4, r1, lsl 2] | offset_3 = r1 << 2;
| r3 = *((r4 + offset_3));
| }
0x00011f28 mov r2, 0 | r2 = 0;
0x00011f2c str r2, [sp, 4] | var_4h = r2;
0x00011f30 str r3, [sp] | *(sp) = r3;
0x00011f34 mov r2, 0x79 | r2 = 0x79;
0x00011f38 add r3, sp, 0x3c | r3 += var_3ch;
0x00011f3c mov r1, 0x61 | r1 = 0x61;
0x00011f40 mov r0, sb | r0 = sb;
0x00011f44 bl 0x10f94 | dbus_message_append_args ();
0x00011f48 b 0x11efc | goto label_8;
| label_40:
0x00011f4c mvn r3, 0x80000000 | r3 = ~0x80000000;
0x00011f50 add r2, sp, 0x4c | r2 += var_4ch;
0x00011f54 mov r1, sb | r1 = sb;
0x00011f58 mov r0, r6 | r0 = r6;
0x00011f5c bl 0x110fc | r0 = dbus_connection_send_with_reply ();
0x00011f60 cmp r0, 0 |
| if (r0 == 0) {
0x00011f64 beq 0x11e60 | goto label_9;
| }
0x00011f68 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00011f6c cmp r0, 0 |
| if (r0 == 0) {
0x00011f70 beq 0x11e60 | goto label_9;
| }
0x00011f74 bl 0x1112c | r0 = dbus_pending_call_get_completed ();
0x00011f78 cmp r0, 0 |
| if (r0 == 0) {
0x00011f7c beq 0x12018 | goto label_44;
| }
0x00011f80 add r1, sp, 0x38 | r1 += var_38h;
0x00011f84 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00011f88 bl 0x11708 | fcn_00011708 (r0, r1);
| label_13:
0x00011f8c ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00011f90 bl 0x10f28 | dbus_pending_call_unref ();
| label_41:
0x00011f94 mov r0, sb | r0 = sb;
0x00011f98 bl 0x11078 | dbus_message_unref ();
0x00011f9c add fp, fp, 1 |
0x00011fa0 add r7, r7, 1 | r7++;
| label_37:
0x00011fa4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00011fa8 mov sb, fp | sb = fp;
0x00011fac cmp r3, fp |
| if (r3 <= fp) {
0x00011fb0 ble 0x11ff4 | goto label_45;
| }
0x00011fb4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00011fb8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00011fbc cmp r3, r7 |
| if (r3 > r7) {
0x00011fc0 movls r3, 0 | r3 = 0;
| }
| if (r3 <= r7) {
0x00011fc4 movhi r3, 1 | r3 = 1;
| }
0x00011fc8 cmp r2, 0 |
| if (r2 != 0) {
0x00011fcc moveq r3, 1 | r3 = 1;
| }
0x00011fd0 cmp r3, 0 |
| if (r3 == 0) {
0x00011fd4 beq 0x11ff4 | goto label_45;
| }
0x00011fd8 cmn sl, 1 |
| if (sl == 1) {
0x00011fdc beq 0x11e18 | goto label_10;
| }
0x00011fe0 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00011fe4 add r3, sl, r3 | r3 = sl + r3;
0x00011fe8 sub r3, r3, r8 | r3 -= r8;
0x00011fec cmp r3, r7 |
| if (r3 > r7) {
0x00011ff0 bhi 0x11e18 | goto label_10;
| }
| label_45:
0x00011ff4 mvn r1, 0 | r1 = ~0;
0x00011ff8 mov r0, r6 | r0 = r6;
0x00011ffc bl 0x11084 | r0 = dbus_connection_read_write_dispatch ();
0x00012000 cmp r0, 0 |
| if (r0 != 0) {
0x00012004 bne 0x11874 | goto label_11;
| }
0x00012008 ldr r3, [pc, 0x5c] | r3 = "__random_size";
0x0001200c ldr r0, [pc, 0xcc] | r0 = "building_message";
0x00012010 ldr r1, [r3] | r1 = "__random_size";
0x00012014 b 0x11ab8 | goto label_12;
| label_44:
0x00012018 mov r3, r5 | r3 = r5;
0x0001201c add r2, sp, 0x38 | r2 += var_38h;
0x00012020 ldr r1, [pc, 0xbc] | r1 = "Disconnected from bus\n";
0x00012024 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00012028 bl 0x10ff4 | r0 = dbus_pending_call_set_notify ();
0x0001202c cmp r0, 0 |
| if (r0 != 0) {
0x00012030 bne 0x11f8c | goto label_13;
| }
0x00012034 ldr r0, [pc, 0xac] | r0 = *(0x120e4);
0x00012038 b 0x11b30 | goto label_3;
| label_15:
0x0001203c ldr r3, [sp, 0x38] | r3 = var_38h;
0x00012040 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00012044 cmp r3, r2 |
| if (r3 < r2) {
0x00012048 movge r3, 0 | r3 = 0;
| }
| if (r3 >= r2) {
0x0001204c movlt r3, 1 | r3 = 1;
| }
0x00012050 b 0x1188c | goto label_14;
| }
; 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-test-tool @ 0x120ec */
| #include <stdint.h>
|
; (fcn) fcn.000120ec () | void fcn_000120ec (int32_t arg1) {
| r0 = arg1;
0x000120ec ldr r3, [pc, 0x18] | r3 = *(0x12108);
0x000120f0 push {r4, lr} |
0x000120f4 ldr r1, [pc, 0x14] | r1 = stderr;
0x000120f8 mov r2, r0 | r2 = r0;
0x000120fc ldr r0, [r3] | r0 = *(0x12108);
0x00012100 bl 0x11030 | fprintf (r0, r1, r2, r3, r4)
0x00012104 mov r0, 1 | r0 = 1;
0x00012108 bl 0x11018 | exit (r0);
| if (? != ?) {
0x0001210c andeq r3, r2, ip, ror 1 | r3 = r2 & (ip >>> 1);
| }
| if (? != ?) {
0x00012110 andeq r2, r1, r0, asr 26 | r2 = r1 & (r0 >> 26);
| }
0x00012114 push {r4, r5, r6, r7, r8, lr} |
0x00012118 mov r7, r0 | r7 = r0;
0x0001211c mov r5, r1 | r5 = r1;
0x00012120 mov r6, r2 | r6 = r2;
0x00012124 mov r4, 0 | r4 = 0;
| do {
| label_0:
0x00012128 cmp r4, r6 |
| if (r4 > r6) {
0x0001212c blo 0x12138 |
0x00012130 mov r0, 1 | r0 = 1;
0x00012134 pop {r4, r5, r6, r7, r8, pc} |
| }
0x00012138 sub r2, r6, r4 | r2 = r6 - r4;
0x0001213c mov r1, r5 | r1 = r5;
0x00012140 mov r0, r7 | r0 = r7;
0x00012144 bl 0x10eec | r0 = write (r0, r1, r2);
0x00012148 cmp r0, 0 |
| if (r0 < 0) {
0x0001214c addge r5, r5, r0 | r5 += r0;
| }
| if (r0 < 0) {
0x00012150 addge r4, r4, r0 | r4 += r0;
| }
0x00012154 bge 0x12128 |
| } while (r0 >= 0);
0x00012158 bl 0x1109c | r0 = errno_location ();
0x0001215c ldr r3, [r0] | r3 = *(r0);
0x00012160 cmp r3, 4 |
| if (r3 == 4) {
0x00012164 beq 0x12128 | goto label_0;
| }
0x00012168 mov r0, 0 | r0 = 0;
0x0001216c pop {r4, r5, r6, r7, r8, pc} |
| }
; 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-test-tool @ 0x12170 */
| #include <stdint.h>
|
; (fcn) fcn.00012170 () | void fcn_00012170 () {
0x00012170 ldr r4, [pc, 0x4c] | r4 = *(0x121c0);
0x00012174 push {r7, lr} |
0x00012178 ldr r1, [r4] | r1 = *(0x121c0);
0x0001217c ldr r0, [pc, 0x44] | r0 = stderr;
0x00012180 bl 0x110a8 | fputs (r0, r1);
0x00012184 ldr r6, [pc, 0x40] | r6 = "Usage:_dbus_test_tool_SUBCOMMAND__OPTIONS_Known_SUBCOMMANDs_are:";
0x00012188 ldr r7, [pc, 0x40] | r7 = "black_hole";
0x0001218c mov r5, 0 | r5 = 0;
| do {
0x00012190 ldr r2, [r6, r5, lsl 3] | offset_0 = r5 << 3;
| r2 = *((r6 + offset_0));
0x00012194 ldr r0, [r4] | r0 = *(r4);
0x00012198 cmp r2, 0 |
| if (r2 == 0) {
0x0001219c bne 0x121b4 |
0x000121a0 mov r1, r0 | r1 = r0;
0x000121a4 ldr r0, [pc, 0x28] | r0 = "- %s\n";
0x000121a8 bl 0x110a8 | fputs ("- %s\n", r1);
0x000121ac mov r0, 2 | r0 = 2;
0x000121b0 bl 0x11018 | exit (r0);
| }
0x000121b4 mov r1, r7 | r1 = r7;
0x000121b8 bl 0x11030 | fprintf (r0, r1)
0x000121bc add r5, r5, 1 | r5++;
0x000121c0 b 0x12190 |
| } while (1);
| }
[*] Function printf used 8 times dbus-test-tool