[*] Binary protection state of dbus-launch
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of dbus-launch
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/dbus-launch @ 0x19cc */
| #include <stdint.h>
|
; (fcn) fcn.000019cc () | void fcn_000019cc (int16_t arg_0h, int16_t arg_80000000h, int16_t arg_8h, int16_t arg_ch, int16_t arg_18h, void * errnum, int16_t arg_28h, char * s2, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, char * * endptr, int16_t arg_60h, int16_t arg_64h, int16_t arg_68h, int16_t arg_70h, int16_t arg_78h, int16_t arg_80h, int16_t arg_84h, int16_t arg_104h, int16_t arg_180h, int16_t arg_200h, void * s1, int16_t arg_284h, int16_t arg_28ch, void * buf) {
| int16_t var_0h;
| int16_t var_4h;
| do {
0x00000cd6 cmp.w fp, 0x2d |
| if (fp != 0x2d) {
0x00000cda bne.w 0xe5a | goto label_25;
| }
0x00000cde ldrb r1, [r4, 1] | r1 = *((r4 + 1));
0x00000ce0 cmp r1, 0x63 |
| if (r1 != 0x63) {
0x00000ce2 bne.w 0xe5a | goto label_25;
| }
0x00000ce6 ldrb r1, [r4, 2] | r1 = *((r4 + 2));
0x00000ce8 cmp r1, 0 |
| if (r1 != 0) {
0x00000cea bne.w 0xe5a | goto label_25;
| }
| label_1:
0x00000cee movs r3, 1 | r3 = 1;
0x00000cf0 str r3, [sp, 0x28] | *(arg_28h) = r3;
| label_2:
0x00000cf2 adds r5, 1 | r5++;
0x00000cf4 cmp r7, r5 |
| if (r7 == r5) {
0x00000cf6 beq 0xd4e | goto label_26;
| }
| label_0:
0x00000cf8 mov sl, r4 | sl = r4;
0x00000cfa ldr r4, [r6, 4]! | r4 = *((r6 += 4));
0x00000cfe mov r1, r8 | r1 = r8;
0x00000d00 mov r0, r4 | r0 = r4;
0x00000d02 blx 0xa44 | r0 = strcmp (r0, r1);
0x00000d06 cmp r0, 0 |
| if (r0 == 0) {
0x00000d08 beq.w 0x13be | goto label_27;
| }
0x00000d0c ldrb.w fp, [r4] | fp = *(r4);
0x00000d10 cmp.w fp, 0x2d |
| if (fp == 0x2d) {
0x00000d14 bne 0xd38 |
0x00000d16 ldrb r1, [r4, 1] | r1 = *((r4 + 1));
0x00000d18 cmp r1, 0x68 |
| if (r1 == 0x68) {
0x00000d1a bne 0xd24 |
0x00000d1c ldrb r1, [r4, 2] | r1 = *((r4 + 2));
0x00000d1e cmp r1, 0 |
| if (r1 == 0) {
0x00000d20 beq.w 0x13be | goto label_27;
| }
| }
0x00000d24 cmp.w fp, 0x2d |
| if (fp != 0x2d) {
0x00000d28 bne 0xd38 | goto label_28;
| }
0x00000d2a ldrb r1, [r4, 1] | r1 = *((r4 + 1));
0x00000d2c cmp r1, 0x3f |
| if (r1 != 0x3f) {
0x00000d2e bne 0xd38 | goto label_28;
| }
0x00000d30 ldrb r1, [r4, 2] | r1 = *((r4 + 2));
0x00000d32 cmp r1, 0 |
| if (r1 == 0) {
0x00000d34 beq.w 0x13be | goto label_27;
| }
0x00000d36 strh r3, [r0, 0x1a] | *((r0 + 0x1a)) = r3;
| }
| label_28:
0x00000d38 mov r1, sb | r1 = sb;
0x00000d3a mov r0, r4 | r0 = r4;
0x00000d3c blx 0xa44 | r0 = strcmp (r0, r1);
0x00000d40 cmp r0, 0 |
0x00000d42 bne 0xcd6 |
| } while (r0 != 0);
0x00000d44 adds r5, 1 | r5++;
0x00000d46 movs r3, 1 | r3 = 1;
0x00000d48 cmp r7, r5 |
0x00000d4a str r3, [sp, 0x24] | *(errnum) = r3;
| if (r7 != r5) {
0x00000d4c bne 0xcf8 | goto label_0;
| }
| label_26:
0x00000d4e movs r3, 0 | r3 = 0;
0x00000d50 mov fp, r3 |
0x00000d52 str r3, [sp, 0x2c] | *(s2) = r3;
| label_16:
0x00000d54 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00000d56 cmp r3, 0 |
| if (r3 != 0) {
0x00000d58 bne.w 0x1764 | goto label_29;
| }
0x00000d5c ldr r3, [sp, 0x24] | r3 = *(errnum);
0x00000d5e cmp r3, 0 |
| if (r3 != 0) {
0x00000d60 bne.w 0x1046 | goto label_30;
| }
| label_3:
0x00000d64 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00000d66 cmp r3, 0 |
| if (r3 != 0) {
0x00000d68 bne.w 0x17ec | goto label_31;
| }
0x00000d6a strh r0, [r0, 0x2a] | *((r0 + 0x2a)) = r0;
0x00000d6c ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00000d6e cmp r3, 0 |
| if (r3 != 0) {
0x00000d70 bne.w 0x179c | goto label_32;
| }
0x00000d74 add.w r8, sp, 0x68 | r8 += arg_68h;
0x00000d78 mov r0, r8 | r0 = r8;
0x00000d7a blx 0xbf4 | r0 = pipe ();
0x00000d7e cmp r0, 0 |
| if (r0 < 0) {
0x00000d80 blt.w 0x170e | goto label_33;
| }
0x00000d84 add r6, sp, 0x78 | r6 += arg_78h;
0x00000d86 mov r0, r6 | r0 = r6;
0x00000d88 blx 0xbf4 | r0 = pipe ();
0x00000d8c cmp r0, 0 |
| if (r0 < 0) {
0x00000d8e blt.w 0x170e | goto label_33;
| }
0x00000d92 add.w sb, sp, 0x70 | sb += arg_70h;
0x00000d96 mov r0, sb | r0 = sb;
0x00000d98 blx 0xbf4 | r0 = pipe ();
0x00000d9c cmp r0, 0 |
| if (r0 < 0) {
0x00000d9e blt.w 0x170e | goto label_33;
| }
0x00000da0 strh r6, [r6, 0x24] | *((r6 + 0x24)) = r6;
0x00000da2 blx 0xc0c | r0 = fork ();
0x00000da6 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00000da8 blt.w 0x16f4 | goto label_34;
| }
| if (r4 != r0) {
0x00000dac bne.w 0x1082 | goto label_35;
| }
0x00000db0 ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x00000db2 cmp r3, 0 |
| if (r3 != 0) {
0x00000db4 bne.w 0x125e | goto label_36;
| }
| label_5:
0x00000db8 blx 0xc0c | r0 = fork ();
0x00000dbc subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00000dbe blt.w 0x1728 | goto label_37;
| }
0x00000dc2 ldr.w r0, [r8] | r0 = *(r8);
| if (r5 == r0) {
0x00000dc6 beq.w 0xf30 | goto label_38;
| }
0x00000dca blx 0xc54 | close (r0);
0x00000dce ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00000dd2 blx 0xc54 | close (r0);
0x00000dd6 ldr r0, [r6] | r0 = *(r6);
0x00000dd8 blx 0xc54 | close (r0);
0x00000ddc ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00000dde blx 0xc54 | close (r0);
0x00000de2 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x00000de6 blx 0xc54 | close (r0);
0x00000dea ldr.w r0, [pc, 0xa78] |
0x00000dee ldr.w r6, [sb] | r6 = *(sb);
0x00000df2 add r0, pc | r0 = 0x265c;
0x00000df4 blx 0xae0 | r0 = chdir ();
0x00000df8 cmp r0, 0 |
| if (r0 < 0) {
0x00000dfa blt.w 0x12a8 | goto label_39;
| }
0x00000dfe ldr.w r0, [pc, 0xa68] |
0x00000e02 add r4, sp, 0x64 | r4 += arg_64h;
0x00000e04 ldr r3, [sp, 0x54] | r3 = *(arg_54h);
0x00000e06 add r0, pc | r0 = 0x2674;
0x00000e08 rsb.w r7, r3, 3 | r7 = 3 - r3;
0x00000e0c blx 0xb1c | getenv (r0);
0x00000e10 str r0, [r4] | *(r4) = r0;
| if (r0 != 0) {
0x00000e12 cbz r0, 0xe18 |
0x00000e14 ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x00000e16 cbnz r3, 0xe1c | goto label_40;
| }
| }
0x00000e18 orr r7, r7, 4 | r7 |= 4;
| label_40:
0x00000e1c mov r0, r7 | r0 = r7;
0x00000e1e mov r1, r4 | r1 = r4;
0x00000e20 blx 0xb88 | r0 = dbus_ensure_standard_fds ();
0x00000e24 cmp r0, 0 |
| if (r0 != 0) {
0x00000e26 bne.w 0x12f4 | goto label_41;
| }
0x00000e2a ldr.w r2, [pc, 0xa40] | r2 = *(0x186e);
0x00000e2e ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00000e30 ldr r6, [r4] | r6 = *(r4);
0x00000e32 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x00000e34 ldr r5, [r3] | r5 = *(r3);
0x00000e36 blx 0xb94 | r0 = errno_location ();
0x00000e3a ldr r0, [r0] | r0 = *(r0);
0x00000e3c blx 0xb40 | strerror (r0);
0x00000e40 ldr.w r2, [pc, 0xa2c] |
0x00000e44 mov r4, r0 | r4 = r0;
0x00000e46 add r2, pc | r2 = 0x26ba;
| label_4:
0x00000e48 mov r3, r6 | r3 = r6;
0x00000e4a movs r1, 1 | r1 = 1;
0x00000e4c mov r0, r5 | r0 = r5;
0x00000e4e str r4, [sp] | *(sp) = r4;
0x00000e50 blx 0xbdc | fprintf_chk ()
0x00000e54 movs r0, 1 | r0 = 1;
0x00000e56 blx 0xb64 | exit (r0);
| label_25:
0x00000e5a ldr r1, [sp, 0x2c] | r1 = *(s2);
0x00000e5c mov r0, r4 | r0 = r4;
0x00000e5e blx 0xa44 | r0 = strcmp (r0, r1);
0x00000e62 cmp r0, 0 |
| if (r0 == 0) {
0x00000e64 beq.w 0xcee | goto label_1;
| }
0x00000e66 add r7, sp, 0x10c | r7 = sp + 0x10c;
0x00000e68 cmp.w fp, 0x2d |
| if (fp != 0x2d) {
0x00000e6c bne 0xe7e | goto label_42;
| }
0x00000e6e ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x00000e70 cmp r2, 0x73 |
| if (r2 != 0x73) {
0x00000e72 bne 0xe7e | goto label_42;
| }
0x00000e74 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00000e76 cbnz r2, 0xe7e |
| while (r0 == 0) {
0x00000e78 movs r3, 1 | r3 = 1;
0x00000e7a str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00000e7c b 0xcf2 | goto label_2;
| label_42:
0x00000e7e ldr.w r1, [pc, 0x9f4] |
0x00000e82 mov r0, r4 | r0 = r4;
0x00000e84 add r1, pc | r1 = 0x26fe;
0x00000e86 blx 0xa44 | r0 = strcmp (r0, r1);
0x00000e8a cmp r0, 0 |
0x00000e8c beq 0xe78 |
| }
0x00000e8e ldr.w r1, [pc, 0x9e8] |
0x00000e92 mov r0, r4 | r0 = r4;
0x00000e94 add r1, pc | r1 = 0x2712;
0x00000e96 blx 0xa44 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00000e9a cbz r0, 0xec2 |
0x00000e9c ldr.w r1, [pc, 0x9dc] |
0x00000ea0 mov r0, r4 | r0 = r4;
0x00000ea2 add r1, pc | r1 = 0x2722;
0x00000ea4 blx 0xa44 | r0 = strcmp (r0, r1);
0x00000ea8 cmp r0, 0 |
| if (r0 == 0) {
0x00000eaa beq.w 0x174c | goto label_43;
| }
0x00000eae ldr.w r1, [pc, 0x9d0] |
0x00000eb2 mov r0, r4 | r0 = r4;
0x00000eb4 add r1, pc | r1 = 0x273a;
0x00000eb6 blx 0xa44 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00000eba cbnz r0, 0xec8 | goto label_44;
| }
0x00000ebc movs r3, 1 | r3 = 1;
0x00000ebe str r3, [sp, 0x54] | *(arg_54h) = r3;
0x00000ec0 b 0xcf2 | goto label_2;
| }
0x00000ec2 movs r3, 1 | r3 = 1;
0x00000ec4 str r3, [sp, 0x50] | *(arg_50h) = r3;
0x00000ec6 b 0xcf2 | goto label_2;
| label_44:
0x00000ec8 ldr.w r1, [pc, 0x9b8] |
0x00000ecc mov r0, r4 | r0 = r4;
0x00000ece add r1, pc | r1 = 0x2756;
0x00000ed0 blx 0xa44 | r0 = strcmp (r0, r1);
0x00000ed4 cmp r0, 0 |
| if (r0 == 0) {
0x00000ed6 beq.w 0x1294 | goto label_45;
| }
0x00000eda ldr.w r1, [pc, 0x9ac] |
0x00000ede mov r0, r4 | r0 = r4;
0x00000ee0 add r1, pc | r1 = 0x276e;
0x00000ee2 blx 0xa44 | r0 = strcmp (r0, r1);
0x00000ee6 cmp r0, 0 |
| if (r0 == 0) {
0x00000ee8 beq.w 0x1352 | goto label_46;
| }
0x00000eec ldr.w r1, [pc, 0x99c] |
0x00000ef0 movs r2, 0xd | r2 = 0xd;
0x00000ef2 mov r0, r4 | r0 = r4;
0x00000ef4 add r1, pc | r1 = 0x2784;
0x00000ef6 blx 0xc3c | r0 = strncmp (r0, r1, r2);
0x00000efa cmp r0, 0 |
| if (r0 == 0) {
0x00000efc beq.w 0x1472 | goto label_47;
| }
0x00000f00 cmp.w sl, 0 |
| if (sl == 0) {
0x00000f04 beq.w 0x136a | goto label_48;
| }
0x00000f08 ldr.w r1, [pc, 0x984] |
0x00000f0c mov r0, sl | r0 = sl;
0x00000f0e add r1, pc | r1 = 0x27a2;
0x00000f10 blx 0xa44 | r0 = strcmp (r0, r1);
0x00000f14 cmp r0, 0 |
| if (r0 != 0) {
0x00000f16 bne.w 0x136a | goto label_48;
| }
0x00000f1a ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00000f1c cmp r3, 0 |
| if (r3 != 0) {
0x00000f1e bne.w 0x17da | goto label_49;
| }
0x00000f22 mov r0, r4 | r0 = r4;
0x00000f24 str r3, [sp, 0x40] | *(arg_40h) = r3;
0x00000f26 bl 0x1b9c | fcn_00001b9c (r0);
0x00000f2a movs r3, 1 | r3 = 1;
0x00000f2c str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x00000f2e b 0xcf2 | goto label_2;
| label_38:
0x00000f30 blx 0xc54 | close (r0);
0x00000f34 ldr r0, [r6] | r0 = *(r6);
0x00000f36 add r4, sp, 0x28c | r4 += arg_28ch;
0x00000f38 blx 0xc54 | close (r0);
0x00000f3c ldr.w r0, [sb] | r0 = *(sb);
0x00000f40 blx 0xc54 | close (r0);
0x00000f44 ldr.w r5, [pc, 0x94c] |
0x00000f48 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x00000f4c blx 0xc54 | close (r0);
0x00000f50 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00000f54 add r5, pc | r5 = 0x27ec;
0x00000f56 movs r2, 0x40 | r2 = 0x40;
0x00000f58 movs r1, 1 | r1 = 1;
0x00000f5a mov r0, r4 | r0 = r4;
0x00000f5c str r3, [sp] | *(sp) = r3;
0x00000f5e mov r3, r5 | r3 = r5;
0x00000f60 blx 0xba0 | sprintf_chk ();
0x00000f64 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00000f66 movs r2, 0x40 | r2 = 0x40;
0x00000f68 movs r1, 1 | r1 = 1;
0x00000f6a str r3, [sp] | *(sp) = r3;
0x00000f6c mov r3, r5 | r3 = r5;
0x00000f6e add r5, sp, 0x2cc | r5 += buf;
0x00000f70 mov r0, r5 | r0 = r5;
0x00000f72 blx 0xba0 | sprintf_chk ();
0x00000f76 ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x00000f78 cmp r3, 0 |
| if (r3 != 0) {
0x00000f7a bne.w 0x129a | goto label_50;
| }
0x00000f7e ldr.w r8, [pc, 0x918] |
0x00000f82 add r8, pc | r8 = 0x2820;
| label_6:
0x00000f84 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00000f86 cmp r3, 0 |
| if (r3 == 0) {
0x00000f88 beq.w 0x134a | goto label_51;
| }
0x00000f8c ldr.w sl, [pc, 0x90c] |
0x00000f90 add sl, pc | sl = 0x2830;
| label_9:
0x00000f92 ldr.w r1, [pc, 0x90c] |
0x00000f96 mov.w fp, 0 |
0x00000f9a ldr.w r7, [pc, 0x908] |
0x00000f9c ldrb r0, [r1, 4] | r0 = *((r1 + 4));
0x00000f9e ldr.w sb, [pc, 0x908] |
0x00000fa2 ldr.w r2, [pc, 0x908] |
0x00000fa6 add r1, pc | r1 = 0x284c;
0x00000fa8 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00000faa add r7, pc | r7 = 0x2854;
0x00000fac add sb, pc | sb = 0x285a;
0x00000fae mov r0, r1 | r0 = r1;
0x00000fb0 add r2, pc | r2 = 0x2862;
0x00000fb2 str r4, [sp, 4] | var_4h = r4;
0x00000fb4 strd sl, r3, [sp, 0x10] | __asm ("strd sl, r3, [sp, 0x10]");
0x00000fb8 mov r3, r7 | r3 = r7;
0x00000fba str r2, [sp, 0x28] | *(arg_28h) = r2;
0x00000fbc str r2, [sp] | *(sp) = r2;
0x00000fbe mov r2, r8 | r2 = r8;
0x00000fc0 str r5, [sp, 0xc] | *(arg_ch) = r5;
0x00000fc2 str.w sb, [sp, 8] | __asm ("str.w sb, [arg_8h]");
0x00000fc6 str.w fp, [sp, 0x18] | __asm ("str.w fp, [arg_18h]");
0x00000fca str r1, [sp, 0x30] | *(arg_30h) = r1;
0x00000fcc blx 0xc24 | execl ();
0x00000fd0 ldr.w r3, [pc, 0x898] | r3 = *(0x186c);
0x00000fd4 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00000fd6 ldr r0, [r0, r3] | r0 = *((r0 + r3));
0x00000fd8 str r0, [sp, 0x24] | *(errnum) = r0;
0x00000fda blx 0xb94 | r0 = errno_location ();
0x00000fde mov r6, r0 | r6 = r0;
0x00000fe0 ldr r0, [sp, 0x24] | r0 = *(errnum);
0x00000fe2 ldr r2, [r0] | r2 = *(r0);
0x00000fe4 ldr r0, [r6] | r0 = *(r6);
0x00000fe6 str r2, [sp, 0x2c] | *(s2) = r2;
0x00000fe8 blx 0xb40 | strerror (r0);
0x00000fec ldr r2, [sp, 0x2c] | r2 = *(s2);
0x00000fee ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00000ff0 str r0, [sp] | *(sp) = r0;
0x00000ff2 mov r0, r2 | r0 = r2;
0x00000ff4 ldr.w r2, [pc, 0x8b8] |
0x00000ff8 mov r3, r1 | r3 = r1;
0x00000ffa movs r1, 1 | r1 = 1;
0x00000ffc add r2, pc | r2 = 0x28b0;
0x00000ffe blx 0xbdc | fprintf_chk ()
0x00001002 ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x00001004 mov r2, r8 | r2 = r8;
0x00001006 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00001008 str r4, [sp, 4] | var_4h = r4;
0x0000100a str r1, [sp] | *(sp) = r1;
0x0000100c ldr.w r1, [pc, 0x8a4] |
0x00001010 strd sl, r3, [sp, 0x10] | __asm ("strd sl, r3, [sp, 0x10]");
0x00001014 mov r3, r7 | r3 = r7;
0x00001016 str.w fp, [sp, 0x18] | __asm ("str.w fp, [arg_18h]");
0x0000101a add r1, pc | r1 = 0x28d2;
0x0000101c strd sb, r5, [sp, 8] | __asm ("strd sb, r5, [sp, 8]");
0x00001020 mov r0, r1 | r0 = r1;
0x00001022 blx 0xaa4 | execlp ();
0x00001026 ldr r0, [sp, 0x24] | r0 = *(errnum);
0x00001028 ldr r4, [r0] | r4 = *(r0);
0x0000102a ldr r0, [r6] | r0 = *(r6);
0x0000102c blx 0xb40 | strerror (r0);
0x00001030 ldr.w r2, [pc, 0x884] |
0x00001034 mov r3, r0 | r3 = r0;
0x00001036 add r2, pc | r2 = 0x28f2;
| label_7:
0x00001038 movs r1, 1 | r1 = 1;
0x0000103a mov r0, r4 | r0 = r4;
0x0000103c blx 0xbdc | fprintf_chk ()
0x00001040 movs r0, 1 | r0 = 1;
0x00001042 blx 0xb64 | exit (r0);
| label_30:
0x00001046 ldr.w r0, [pc, 0x874] |
0x0000104a add r0, pc | r0 = 0x290c;
0x0000104c blx 0xb1c | r0 = getenv (r0);
0x00001050 mov r4, r0 | r4 = r0;
0x00001052 cmp r0, 0 |
| if (r0 == 0) {
0x00001054 beq.w 0x12a2 | goto label_52;
| }
0x00001058 blx 0xb70 | strlen (r0);
0x0000105c ldr.w r1, [pc, 0x860] |
0x00001060 subs r0, 3 | r0 -= 3;
0x00001062 movs r2, 3 | r2 = 3;
0x00001064 add r0, r4 | r0 += r4;
0x00001066 add r1, pc | r1 = 0x292a;
0x00001068 blx 0xc3c | strncmp (r0, r1, r2);
0x0000106c ldr r2, [sp, 0x24] | r2 = *(errnum);
0x0000106e cmp r0, 0 |
0x00001070 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00001072 it ne |
| if (r0 == 0) {
0x00001074 movne r3, r2 | r3 = r2;
| }
0x00001076 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00001078 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x0000107a it eq |
| if (r0 != 0) {
0x0000107c moveq r3, r2 | r3 = r2;
| }
0x0000107e str r3, [sp, 0x28] | *(arg_28h) = r3;
0x00001080 b 0xd64 | goto label_3;
| label_35:
0x00001082 ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00001086 blx 0xc54 | close (r0);
0x0000108a ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0000108c blx 0xc54 | close (r0);
0x00001090 ldr.w r0, [sb] | r0 = *(sb);
0x00001094 blx 0xc54 | close (r0);
0x00001098 mov r0, r4 | r0 = r4;
0x0000109a bl 0x1aa0 | r0 = fcn_00001aa0 (r0);
0x0000109e cmp r0, 0 |
| if (r0 < 0) {
0x000010a0 blt.w 0x1782 | goto label_53;
| }
0x000010a4 add r5, sp, 0x2cc | r5 += buf;
0x000010a6 ldr r0, [r6] | r0 = *(r6);
0x000010a8 mov.w r2, 0x200 | r2 = 0x200;
0x000010ac mov r1, r5 | r1 = r5;
0x000010ae bl 0x1ac4 | r0 = fcn_00001ac4 (r0, r1, r2);
0x000010b2 cmp r0, 1 |
0x000010b4 mov r4, r0 | r4 = r0;
| if (r0 == 1) {
0x000010b6 beq.w 0x17f6 | goto label_54;
| }
0x000010ba cmp r0, 2 |
| if (r0 == 2) {
0x000010bc beq.w 0x181c | goto label_55;
| }
0x000010c0 ldr r0, [r6] | r0 = *(r6);
0x000010c2 add r4, sp, 0x28c | r4 += arg_28ch;
0x000010c4 blx 0xc54 | close (r0);
0x000010c8 ldr.w r0, [r8] | r0 = *(r8);
0x000010cc movs r2, 0x40 | r2 = 0x40;
0x000010ce mov r1, r4 | r1 = r4;
0x000010d0 bl 0x1ac4 | r0 = fcn_00001ac4 (r0, r1, r2);
0x000010d4 cmp r0, 1 |
0x000010d6 mov r6, r0 | r6 = r0;
| if (r0 == 1) {
0x000010d8 beq.w 0x1826 | goto label_56;
| }
0x000010dc cmp r0, 2 |
| if (r0 == 2) {
0x000010de beq.w 0x1742 | goto label_57;
| }
0x000010e2 add.w sl, sp, 0x5c | sl += endptr;
0x000010e6 movs r2, 0 | r2 = 0;
0x000010e8 mov r1, sl | r1 = sl;
0x000010ea mov r0, r4 | r0 = r4;
0x000010ec str.w r2, [sl] | __asm ("str.w r2, [sl]");
0x000010f0 blx 0xa5c | strtol (r0, r1, r2);
0x000010f2 ldc p8, c15, [r4], 0x368 | __asm ("ldc p8, c15, [r4], 0x368");
0x000010f6 adds r0, 0 | r0 += 0;
0x000010f8 mov r6, r0 | r6 = r0;
0x000010fa cmp r3, r4 |
| if (r3 == r4) {
0x000010fc beq.w 0x12c6 | goto label_58;
| }
0x00001100 cmp r3, 0 |
| if (r3 == 0) {
0x00001102 beq.w 0x12c6 | goto label_58;
| }
0x00001106 ldr.w r3, [pc, 0x7bc] | r3 = *(0x000018c4);
0x0000110a add r4, sp, 0x64 | r4 += arg_64h;
0x0000110c ldr.w r0, [r8] | r0 = *(r8);
0x00001110 add r3, pc | r3 += pc;
0x00001112 str r6, [r3] | *(r3) = r6;
0x00001114 blx 0xc54 | close (r0);
0x00001116 ldc p8, c15, [lr, 0x364] | __asm ("ldc p8, c15, [lr, 0x364]");
0x0000111a movs r4, r0 | r4 = r0;
0x0000111c movs r2, 4 | r2 = 4;
0x0000111e mov r1, r4 | r1 = r4;
0x00001120 str r6, [r4] | *(r4) = r6;
0x00001122 bl 0x1b20 | fcn_00001b20 (r0, r1, r2);
0x00001126 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0000112a blx 0xc54 | close (r0);
0x0000112e ldr r3, [sp, 0x2c] | r3 = *(s2);
0x00001130 cmp r3, 0 |
| if (r3 == 0) {
0x00001132 beq.w 0x13dc | goto label_59;
| }
0x00001136 mov r2, fp | r2 = fp;
0x00001138 mov r0, r5 | r0 = r5;
0x0000113a subs r7, r7, r2 | r7 -= r2;
0x0000113c blx 0xb70 | strlen (r0);
0x00001140 adds r0, 0x1a | r0 += 0x1a;
0x00001142 blx 0xb34 | malloc (r0);
0x00001146 str r0, [sp, 0x24] | *(errnum) = r0;
0x00001148 mov r4, r0 | r4 = r0;
0x0000114a adds r0, r7, 2 | r0 = r7 + 2;
0x0000114c lsls r0, r0, 2 | r0 <<= 2;
0x0000114e blx 0xb34 | r0 = malloc (r0);
0x00001152 mov r8, r0 | r8 = r0;
0x00001154 cmp r4, 0 |
| if (r4 == 0) {
0x00001156 beq.w 0x14ac | goto label_22;
| }
0x0000115a cmp r0, 0 |
| if (r0 == 0) {
0x0000115c beq.w 0x17b0 | goto label_60;
| }
0x00001160 ldr r0, [sp, 0x2c] | r0 = *(s2);
0x00001162 bl 0x1bf8 | fcn_00001bf8 (r0);
0x00001166 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0000116a cmp r0, 0 |
| if (r0 == 0) {
0x0000116c beq.w 0x14a6 | goto label_21;
| }
0x00001170 cmp r7, 0 |
| if (r7 <= 0) {
0x00001172 ble.w 0x16d6 | goto label_61;
| }
0x00001176 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00001178 add.w r4, fp, -0x80000000 | r4 = fp + -0x80000000;
0x0000117c subs r4, 1 | r4--;
0x0000117e mov sl, r8 | sl = r8;
0x00001180 movs r6, 1 | r6 = 1;
0x00001182 mov fp, r5 |
0x00001184 add.w r4, r3, r4, lsl 2 | r4 = r3 + (r4 << 2);
| do {
0x00001188 ldr r5, [r4, 4]! | r5 = *((r4 += 4));
0x0000118c mov r0, r5 | r0 = r5;
0x0000118e blx 0xb70 | r0 = strlen (r0);
0x00001192 add.w sb, r0, 1 | sb = r0 + 1;
0x00001196 mov r0, sb | r0 = sb;
0x00001198 blx 0xb34 | malloc (r0);
0x0000119c str r0, [sl, 4]! | *((sl += 4)) = r0;
0x000011a0 cmp r0, 0 |
| if (r0 == 0) {
0x000011a2 beq.w 0x1494 | goto label_62;
| }
0x000011a6 mov r2, sb | r2 = sb;
0x000011a8 mov r1, r5 | r1 = r5;
0x000011aa adds r6, 1 | r6++;
0x000011ac blx 0xbb8 | strncpy (r0, r1, r2);
0x000011ae stc p2, c4, [r4, -0x2dc] | __asm ("stc p2, c4, [r4, -0x2dc]");
0x000011b2 bge 0x1188 |
| } while (r6 >= 1);
0x000011b4 mov r5, fp | r5 = fp;
| label_20:
0x000011b6 ldr.w r7, [pc, 0x710] |
0x000011ba movs r3, 0 | r3 = 0;
0x000011bc ldr.w ip, [sp, 0x24] | ip = *(errnum);
0x000011c0 str.w r3, [r8, r6, lsl 2] | __asm ("str.w r3, [r8, r6, lsl 2]");
0x000011c4 add r7, pc | r7 = 0x2a92;
0x000011c6 ldm r7!, {r0, r1, r2, r3} | r0 = *(r7!);
| r1 = *((r7! + 4));
| r2 = *((r7! + 8));
| r3 = *((r7! + 12));
0x000011c8 mov r4, ip | r4 = ip;
0x000011ca stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x000011cc ldm.w r7, {r0, r1, r2} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
0x000011d0 stm r4!, {r0, r1} | *(r4!) = r0;
| *((r4! + 4)) = r1;
0x000011d2 add.w r0, ip, 0x19 | r0 = ip + 0x19;
0x000011d6 strb r2, [r4] | *(r4) = r2;
0x000011d8 mov r1, r5 | r1 = r5;
0x000011da mov r4, ip | r4 = ip;
0x000011dc blx 0xb10 | strcpy (r0, r1);
0x000011e0 mov r0, r4 | r0 = r4;
0x000011e2 blx 0xc18 | putenv ();
0x000011e6 ldr r6, [sp, 0x2c] | r6 = *(s2);
0x000011e8 mov r1, r8 | r1 = r8;
0x000011ea mov r0, r6 | r0 = r6;
0x000011ec blx 0xa98 | execvp ();
0x000011f0 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000011f2 ldr.w r3, [pc, 0x678] | r3 = *(0x186e);
0x000011f6 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000011f8 ldr r5, [r3] | r5 = *(0x186e);
0x000011fa blx 0xb94 | r0 = errno_location ();
0x000011fe ldr r0, [r0] | r0 = *(r0);
0x00001200 blx 0xb40 | strerror (r0);
0x00001204 ldr.w r2, [pc, 0x6c4] |
0x00001208 mov r4, r0 | r4 = r0;
0x0000120a add r2, pc | r2 = 0x2ada;
0x0000120c b 0xe48 | goto label_4;
| label_36:
0x0000125e ldr.w r3, [pc, 0x60c] | r3 = *(0x186e);
0x00001262 add r4, sp, 0x64 | r4 += arg_64h;
0x00001264 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00001266 ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x00001268 ldr r0, [r5] | r0 = *(r5);
0x0000126a blx 0xa74 | fflush (r0);
0x0000126e mov r1, r4 | r1 = r4;
0x00001270 movs r0, 4 | r0 = 4;
0x00001272 blx 0xb88 | r0 = dbus_ensure_standard_fds ();
0x00001276 cmp r0, 0 |
| if (r0 != 0) {
0x00001278 bne.w 0xdb8 | goto label_5;
| }
0x0000127c blx 0xb94 | r0 = errno_location ();
0x00001280 ldr r0, [r0] | r0 = *(r0);
0x00001282 ldr r5, [r5] | r5 = *(r5);
0x00001284 ldr r6, [sp, 0x64] | r6 = *(arg_64h);
0x00001286 blx 0xb40 | strerror (r0);
0x0000128a ldr.w r2, [pc, 0x64c] |
0x0000128e mov r4, r0 | r4 = r0;
0x00001290 add r2, pc | r2 = 0x2b6e;
0x00001292 b 0xe48 | goto label_4;
| label_45:
0x00001294 movs r3, 1 | r3 = 1;
0x00001296 str r3, [sp, 0x48] | *(arg_48h) = r3;
0x00001298 b 0xcf2 | goto label_2;
| label_50:
0x0000129a ldr.w r8, [pc, 0x640] |
0x0000129e add r8, pc | r8 = 0x2b80;
0x000012a0 b 0xf84 | goto label_6;
| label_52:
0x000012a2 ldr r3, [sp, 0x24] | r3 = *(errnum);
0x000012a4 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x000012a6 b 0xd64 | goto label_3;
| label_39:
0x000012a8 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000012aa ldr.w r3, [pc, 0x5c0] | r3 = *(0x186e);
0x000012ae ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000012b0 ldr r4, [r3] | r4 = *(0x186e);
0x000012b2 blx 0xb94 | r0 = errno_location ();
0x000012b6 ldr r0, [r0] | r0 = *(r0);
0x000012b8 blx 0xb40 | strerror (r0);
0x000012bc ldr.w r2, [pc, 0x620] |
0x000012c0 mov r3, r0 | r3 = r0;
0x000012c2 add r2, pc | r2 = 0x2ba6;
0x000012c4 b 0x1038 | goto label_7;
| label_58:
0x000012c6 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000012c8 ldr.w r3, [pc, 0x5a0] | r3 = *(0x186c);
0x000012cc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000012ce ldr r6, [r3] | r6 = *(0x186c);
0x000012d0 blx 0xb94 | r0 = errno_location ();
0x000012d4 ldr r0, [r0] | r0 = *(r0);
0x000012d6 blx 0xb40 | strerror (r0);
0x000012da ldr.w r2, [pc, 0x608] |
0x000012de mov r5, r0 | r5 = r0;
0x000012e0 mov r3, r4 | r3 = r4;
0x000012e2 movs r1, 1 | r1 = 1;
0x000012e4 mov r0, r6 | r0 = r6;
0x000012e6 str r5, [sp] | *(sp) = r5;
0x000012e8 add r2, pc | r2 = 0x2bd2;
0x000012ea blx 0xbdc | fprintf_chk ()
0x000012ee movs r0, 1 | r0 = 1;
0x000012f0 blx 0xb64 | r0 = exit (r0);
| label_41:
0x000012f4 blx 0xc0c | r0 = fork ();
0x000012f8 cmp r0, 0 |
| if (r0 < 0) {
0x000012fa blt.w 0x1454 | goto label_63;
| }
| if (r0 != 0) {
0x000012fe bne 0x1358 | goto label_64;
| }
0x00001300 ldr.w r7, [pc, 0x5e4] | r7 = *(0x000018e8);
0x00001304 movs r5, 4 | r5 = 4;
0x00001306 mov r4, r0 | r4 = r0;
0x00001308 mov r2, r5 | r2 = r5;
0x0000130a add r7, pc | r7 += pc;
0x0000130c b 0x131c |
| while (r0 >= 0) {
| if (r5 == 4) {
0x0000130e beq.w 0x15e6 | goto label_65;
| }
0x00001312 add r4, r0 | r4 += r0;
| label_8:
0x00001314 rsbs.w r2, r4, 4 | r2 = 4 - r4;
| if (r5 == 4) {
0x00001318 beq.w 0x14f2 | goto label_66;
| }
0x0000131c adds r1, r7, r4 | r1 = r7 + r4;
0x0000131e mov r0, r6 | r0 = r6;
0x00001320 blx 0xa68 | r0 = read (r0, r1, r2);
0x00001324 cmp r0, 0 |
0x00001326 bge 0x130e |
| }
0x00001328 blx 0xb94 | r0 = errno_location ();
0x0000132c ldr r0, [r0] | r0 = *(r0);
0x0000132e cmp r0, 4 |
| if (r0 == 4) {
0x00001330 beq 0x1314 | goto label_8;
| }
0x00001332 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00001334 ldr.w r3, [pc, 0x534] | r3 = *(0x186c);
0x00001338 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000133a ldr r4, [r3] | r4 = *(0x186c);
0x0000133c blx 0xb40 | strerror (r0);
0x00001340 ldr.w r2, [pc, 0x5a8] |
0x00001344 mov r3, r0 | r3 = r0;
0x00001346 add r2, pc | r2 = 0x2c36;
0x00001348 b 0x1038 | goto label_7;
| label_51:
0x0000134a ldr.w sl, [pc, 0x5a4] |
0x0000134e add sl, pc | sl = 0x2c44;
0x00001350 b 0xf92 | goto label_9;
| label_46:
0x00001352 movs r3, 1 | r3 = 1;
0x00001354 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
0x00001356 b 0xcf2 | goto label_2;
| label_64:
0x00001358 mov r0, r5 | r0 = r5;
0x0000135a bl 0x1aa0 | r0 = fcn_00001aa0 (r0);
0x0000135e cmp r0, 0 |
| if (r0 < 0) {
0x00001360 blt.w 0x14d4 | goto label_67;
| }
0x00001362 strh r0, [r7, 4] | *((r7 + 4)) = r0;
| do {
| label_10:
0x00001364 movs r0, 0 | r0 = 0;
0x00001366 blx 0xb64 | exit (r0);
| label_48:
0x0000136a ldr.w r1, [pc, 0x588] |
0x0000136e mov r0, r4 | r0 = r4;
0x00001370 add r1, pc | r1 = 0x2c6a;
0x00001372 blx 0xa44 | r0 = strcmp (r0, r1);
0x00001376 cmp r0, 0 |
| if (r0 == 0) {
0x00001378 beq.w 0x148e | goto label_15;
| }
0x0000137c ldr.w r1, [pc, 0x578] |
0x00001380 movs r2, 0xe | r2 = 0xe;
0x00001382 mov r0, r4 | r0 = r4;
0x00001384 add r1, pc | r1 = 0x2c80;
0x00001386 blx 0xc3c | r0 = strncmp (r0, r1, r2);
0x0000138a cmp r0, 0 |
| if (r0 == 0) {
0x0000138c beq.w 0x16da | goto label_68;
| }
0x00001390 cmp.w sl, 0 |
| if (sl == 0) {
0x00001394 beq.w 0x1668 | goto label_69;
| }
0x00001396 strh r0, [r5, 0xa] | *((r5 + 0xa)) = r0;
0x00001398 ldr.w r1, [pc, 0x560] |
0x0000139c mov r0, sl | r0 = sl;
0x0000139e add r1, pc | r1 = 0x2c9e;
0x000013a0 blx 0xa44 | r0 = strcmp (r0, r1);
0x000013a2 adcs.w r8, r0, r0, lsl 8 | __asm ("adcs.w r8, r0, r0, lsl 8");
| if (sl != 0) {
0x000013a6 bne.w 0x1668 | goto label_69;
| }
0x000013aa ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x000013ac cmp r3, 0 |
| if (r3 != 0) {
0x000013ae bne.w 0x17a6 | goto label_70;
| }
0x000013b2 str r0, [sp, 0x40] | *(arg_40h) = r0;
0x000013b4 mov r0, r4 | r0 = r4;
0x000013b6 bl 0x1bf8 | fcn_00001bf8 (r0);
0x000013ba str r0, [sp, 0x44] | *(arg_44h) = r0;
0x000013bc b 0xcf2 | goto label_2;
| label_27:
0x000013be ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x000013c0 movs r2, 0xdd | r2 = 0xdd;
0x000013c2 ldr.w r3, [pc, 0x4a8] |
0x000013c6 movs r1, 1 | r1 = 1;
0x000013c8 ldr.w r0, [pc, 0x534] |
0x000013ca lsls r4, r6, 0x14 | r4 = r6 << 0x14;
0x000013cc ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000013ce add r0, pc | r0 = 0x2cd2;
0x000013d0 ldr r3, [r3] | r3 = *(0x186e);
0x000013d2 blx 0xaf8 | fwrite (r0, r1, r2, r3);
0x000013d6 movs r0, 0 | r0 = 0;
0x000013d8 blx 0xb64 | exit (r0);
| label_59:
0x000013dc ldr r3, [sp, 0x2c] | r3 = *(s2);
0x000013de add r7, sp, 0x60 | r7 += arg_60h;
0x000013e0 str r6, [r7] | *(r7) = r6;
0x000013e2 str r3, [r4] | *(r4) = r3;
0x000013e4 ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x000013e6 cmp r3, 0 |
| if (r3 != 0) {
0x000013e8 bne.w 0x163c | goto label_71;
| }
0x000013ec ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x000013ee cmp r3, 0 |
| if (r3 != 0) {
0x000013f0 bne.w 0x1616 | goto label_72;
| }
0x000013f4 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000013f6 cmp r3, 0 |
| if (r3 == 0) {
0x000013f8 beq.w 0x15f0 | goto label_73;
| }
0x000013fc ldr.w r1, [pc, 0x504] |
0x00001400 mov r2, r5 | r2 = r5;
0x00001402 movs r0, 1 | r0 = 1;
0x00001404 add r1, pc | r1 = 0x2d0c;
0x00001406 blx 0xbc4 | printf_chk ();
0x0000140a ldr.w r0, [pc, 0x4fc] |
0x0000140e add r0, pc | r0 = 0x2d1c;
0x00001410 blx 0xb28 | puts (r0);
0x00001414 ldr r2, [r7] | r2 = *(r7);
0x00001416 cmp r2, 0 |
| if (r2 != 0) {
0x00001418 bne.w 0x16ca | goto label_74;
| }
| label_19:
0x0000141c ldr r2, [r4] | r2 = *(r4);
0x0000141e cmp r2, 0 |
| if (r2 != 0) {
0x00001420 bne.w 0x16be | goto label_75;
| }
| label_13:
0x00001424 ldr.w r3, [pc, 0x4e4] | r3 = *(0x190c);
0x00001428 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x0000142a ldr r4, [r2, r3] | r4 = *((r2 + r3));
0x0000142c ldr r0, [r4] | r0 = *(r4);
0x0000142e blx 0xa74 | fflush (r0);
| label_14:
0x00001432 ldr r0, [r4] | r0 = *(r4);
0x00001434 blx 0xa74 | fflush (r0);
0x00001438 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x0000143a ldr.w r3, [pc, 0x430] | r3 = *(0x186e);
0x0000143e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001440 ldr r0, [r3] | r0 = *(0x186e);
0x00001442 blx 0xa74 | fflush (r0);
0x00001446 movs r0, 1 | r0 = 1;
0x00001448 blx 0xc54 | close (r0);
0x0000144c movs r0, 2 | r0 = 2;
0x0000144e blx 0xc54 | close (r0);
0x00001452 b 0x1364 |
| } while (1);
| label_63:
0x00001454 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00001456 ldr.w r3, [pc, 0x414] | r3 = *(0x186e);
0x0000145a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000145c ldr r4, [r3] | r4 = *(0x186e);
0x0000145e blx 0xb94 | r0 = errno_location ();
0x00001462 ldr r0, [r0] | r0 = *(r0);
0x00001464 blx 0xb40 | strerror (r0);
0x00001468 ldr.w r2, [pc, 0x4a4] |
0x0000146c mov r3, r0 | r3 = r0;
0x0000146e add r2, pc | r2 = 0x2d82;
0x00001470 b 0x1038 | goto label_7;
| label_47:
0x00001472 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00001474 cmp r3, 0 |
| if (r3 != 0) {
0x00001476 bne.w 0x17da | goto label_49;
| }
0x0000147a movs r1, 0x3d | r1 = 0x3d;
0x0000147c mov r0, r4 | r0 = r4;
0x0000147e blx 0xb7c | strchr (r0, r1);
0x00001482 adds r0, 1 | r0++;
0x00001484 bl 0x1b9c | fcn_00001b9c (r0);
0x00001488 movs r3, 1 | r3 = 1;
0x0000148a str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x0000148c b 0xcf2 | goto label_2;
| label_15:
0x0000148e movs r3, 1 | r3 = 1;
0x00001490 str r3, [sp, 0x40] | *(arg_40h) = r3;
0x00001492 b 0xcf2 | goto label_2;
| label_62:
0x00001494 add.w r6, r8, r6, lsl 2 | r6 = r8 + (r6 << 2);
0x00001498 b 0x14a0 |
| while (r8 != r6) {
0x0000149a ldr r0, [r6] | r0 = *(r6);
0x0000149c blx 0xa80 | free (r0);
0x000014a0 subs r6, 4 | r6 -= 4;
0x000014a2 cmp r8, r6 |
0x000014a4 bne 0x149a |
| }
| label_21:
0x000014a6 ldr r0, [sp, 0x24] | r0 = *(errnum);
0x000014a8 blx 0xa80 | free (r0);
| label_22:
0x000014ac cmp.w r8, 0 |
| if (r8 != 0) {
0x000014b0 beq 0x14b8 |
0x000014b2 mov r0, r8 | r0 = r8;
0x000014b4 blx 0xa80 | free (r0);
| }
0x000014b8 ldr.w r0, [pc, 0x458] |
0x000014bc movs r2, 0xe | r2 = 0xe;
0x000014be ldr r3, [pc, 0x3ac] | r3 = *(0x186e);
0x000014c0 add r0, pc | r0 = 0x2dd8;
| do {
| label_12:
0x000014c2 ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x000014c4 movs r1, 1 | r1 = 1;
0x000014c6 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000014c8 ldr r3, [r3] | r3 = *(r3);
0x000014ca blx 0xaf8 | fwrite (r0, r1, r2, r3);
0x000014ce movs r0, 1 | r0 = 1;
0x000014d0 blx 0xb64 | exit (r0);
| label_67:
0x000014d4 ldr.w r0, [pc, 0x440] |
0x000014d8 movs r2, 0x31 | r2 = 0x31;
0x000014da ldr r3, [pc, 0x390] | r3 = *(0x186e);
0x000014dc add r0, pc | r0 = 0x2df8;
0x000014de b 0x14c2 |
| } while (1);
| label_66:
0x000014f2 ldr r3, [sp, 0x54] | r3 = *(arg_54h);
0x000014f4 mov r5, r2 | r5 = r2;
0x000014f6 cmp r3, 0 |
| if (r3 == 0) {
0x000014f8 beq.w 0x1364 | goto label_10;
| }
0x000014fc ldr.w r8, [pc, 0x41c] | r8 = *(0x0000191c);
0x00001500 add r4, sp, 0x180 | r4 += arg_180h;
0x00001502 mov r0, r4 | r0 = r4;
0x00001504 add r8, pc | r8 += pc;
0x00001506 str.w r5, [r8] | __asm ("str.w r5, [r8]");
0x0000150a blx 0xc00 | sigemptyset ();
0x0000150e ldr.w r3, [pc, 0x410] | r3 = *(0x1922);
| label_24:
0x00001510 adds r4, 0x10 | r4 += 0x10;
0x00001512 mov r1, r4 | r1 = r4;
0x00001514 movs r2, 0x80 | r2 = 0x80;
0x00001516 add r4, sp, 0x200 | r4 += arg_200h;
0x00001518 add r0, sp, 0x204 | r0 += s1;
0x0000151a add r3, pc | r3 += pc;
0x0000151c str r3, [sp, 0x200] | *(arg_200h) = r3;
0x0000151e blx 0xa8c | memcpy (r0, r1, r2);
0x00001522 mov r2, r5 | r2 = r5;
0x00001524 mov r1, r4 | r1 = r4;
0x00001526 movs r0, 1 | r0 = 1;
0x00001528 str r5, [sp, 0x284] | *(arg_284h) = r5;
0x0000152a blx 0xaec | sigaction ();
0x0000152e mov r2, r5 | r2 = r5;
0x00001530 mov r1, r4 | r1 = r4;
0x00001532 movs r0, 0xf | r0 = 0xf;
0x00001534 blx 0xaec | sigaction ();
0x00001538 mov r2, r5 | r2 = r5;
0x0000153a mov r1, r4 | r1 = r4;
0x0000153c movs r0, 2 | r0 = 2;
0x0000153e blx 0xaec | sigaction ();
0x00001542 mov r0, r5 | r0 = r5;
0x00001544 blx 0xc30 | r0 = isatty (r0);
0x00001548 cmp r0, 0 |
| if (r0 == 0) {
0x0000154a beq.w 0x16a4 | goto label_76;
| }
0x0000154e add r7, sp, 0x80 | r7 += arg_80h;
0x00001550 add.w sl, sp, 0x84 | sl += arg_84h;
0x00001554 add.w fp, sp, 0x100 |
0x00001558 add.w sb, sp, 0x104 | sb += arg_104h;
| do {
| label_11:
0x0000155c movs r2, 0x7c | r2 = 0x7c;
0x0000155e movs r1, 0 | r1 = 0;
0x00001560 mov r0, sl | r0 = sl;
0x00001562 movs r4, 1 | r4 = 1;
0x00001564 blx 0xbac | memset (r0, r1, r2);
0x00001568 movs r2, 0x7c | r2 = 0x7c;
0x0000156a movs r1, 0 | r1 = 0;
0x0000156c mov r0, sb | r0 = sb;
0x0000156e blx 0xbac | memset (r0, r1, r2);
0x00001572 str r5, [sp] | *(sp) = r5;
0x00001574 mov r3, fp | r3 = fp;
0x00001576 movs r2, 0 | r2 = 0;
0x00001578 mov r1, r7 | r1 = r7;
0x0000157a mov r0, r4 | r0 = r4;
0x0000157c str r4, [r7] | *(r7) = r4;
0x0000157e str.w r4, [fp] | __asm ("str.w r4, [fp]");
0x00001582 blx 0xab0 | select ();
0x00001586 ldr.w r3, [r8] | r3 = *(r8);
| if (r3 != 0) {
0x0000158a cbnz r3, 0x159a | goto label_77;
| }
0x0000158c ldr r2, [r7] | r2 = *(r7);
0x0000158e lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 < r2) {
0x00001590 bmi 0x15a0 | goto label_78;
| }
0x00001592 ldr.w r3, [fp] | r3 = *(fp);
0x00001596 lsls r3, r3, 0x1f | r3 <<= 0x1f;
0x00001598 bpl 0x155c |
| } while (r3 >= r3);
| do {
| label_77:
0x0000159a movs r0, 0 | r0 = 0;
0x0000159c bl 0x1c1c | fcn_00001c1c (r0);
| label_78:
0x000015a0 mov.w r2, 0x200 | r2 = 0x200;
0x000015a4 add r1, sp, 0x2cc | r1 += buf;
0x000015a6 mov r0, r3 | r0 = r3;
0x000015a8 str r3, [sp, 0x24] | *(errnum) = r3;
0x000015aa blx 0xa68 | r0 = read (r0, r1, r2);
0x000015ae mov r6, r0 | r6 = r0;
0x000015b0 blx 0xb94 | r0 = errno_location ();
0x000015b4 ldr r0, [r0] | r0 = *(r0);
0x000015b6 cmp r6, 0 |
0x000015b8 beq 0x159a |
| } while (r6 == 0);
0x000015ba cmp r6, 0 |
| if (r6 >= 0) {
0x000015bc bge 0x155c | goto label_11;
| }
0x000015be cmp r0, 4 |
0x000015c0 ldr r3, [sp, 0x24] | r3 = *(errnum);
| if (r0 == 4) {
0x000015c2 beq 0x155c | goto label_11;
| }
0x000015c4 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000015c6 mov r6, r3 | r6 = r3;
0x000015c8 ldr r3, [pc, 0x2a0] | r3 = *(0x186c);
0x000015ca ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000015cc ldr r5, [r3] | r5 = *(0x186c);
0x000015ce blx 0xb40 | strerror (r0);
0x000015d2 ldr r2, [pc, 0x350] |
0x000015d4 mov r3, r0 | r3 = r0;
0x000015d6 mov r1, r4 | r1 = r4;
0x000015d8 mov r0, r5 | r0 = r5;
0x000015da add r2, pc | r2 = 0x2f04;
0x000015dc blx 0xbdc | fprintf_chk ()
0x000015e0 mov r0, r6 | r0 = r6;
0x000015e2 bl 0x1c1c | fcn_00001c1c (r0);
| label_65:
0x000015e6 ldr r0, [pc, 0x340] |
0x000015e8 movs r2, 0x2f | r2 = 0x2f;
0x000015ea ldr r3, [pc, 0x280] | r3 = *(0x186e);
0x000015ec add r0, pc | r0 = 0x2f1a;
0x000015ee b 0x14c2 | goto label_12;
| label_73:
0x000015f0 ldr r1, [pc, 0x338] |
0x000015f2 mov r2, r5 | r2 = r5;
0x000015f4 movs r0, 1 | r0 = 1;
0x000015f6 add r1, pc | r1 = 0x2f26;
0x000015f8 blx 0xbc4 | printf_chk ();
0x000015fc ldr r2, [r7] | r2 = *(r7);
0x000015fe cmp r2, 0 |
| if (r2 != 0) {
0x00001600 bne 0x168c | goto label_79;
| }
| label_17:
0x00001602 ldr r2, [r4] | r2 = *(r4);
0x00001604 cmp r2, 0 |
| if (r2 == 0) {
0x00001606 beq.w 0x1424 | goto label_13;
| }
0x0000160a ldr r1, [pc, 0x324] |
0x0000160c movs r0, 1 | r0 = 1;
0x0000160e add r1, pc | r1 = 0x2f44;
0x00001610 blx 0xbc4 | printf_chk ();
0x00001614 b 0x1424 | goto label_13;
| label_72:
0x00001616 ldr r1, [pc, 0x31c] |
0x00001618 mov r2, r5 | r2 = r5;
0x0000161a movs r0, 1 | r0 = 1;
0x0000161c add r1, pc | r1 = 0x2f56;
0x0000161e blx 0xbc4 | printf_chk ();
0x00001622 ldr r2, [r7] | r2 = *(r7);
0x00001624 cmp r2, 0 |
| if (r2 != 0) {
0x00001626 bne 0x1698 | goto label_80;
| }
| label_18:
0x00001628 ldr r2, [r4] | r2 = *(r4);
0x0000162a cmp r2, 0 |
| if (r2 == 0) {
0x0000162c beq.w 0x1424 | goto label_13;
| }
0x00001630 ldr r1, [pc, 0x304] |
0x00001632 movs r0, 1 | r0 = 1;
0x00001634 add r1, pc | r1 = 0x2f70;
0x00001636 blx 0xbc4 | printf_chk ();
0x0000163a b 0x1424 | goto label_13;
| label_71:
0x0000163c mov r0, r5 | r0 = r5;
0x0000163e blx 0xb70 | strlen (r0);
0x00001642 mov r1, r5 | r1 = r5;
0x00001644 adds r2, r0, 1 | r2 = r0 + 1;
0x00001646 movs r0, 1 | r0 = 1;
0x00001648 bl 0x1b20 | fcn_00001b20 (r0, r1, r2);
0x0000164c movs r2, 4 | r2 = 4;
0x0000164e mov r1, r7 | r1 = r7;
0x00001650 movs r0, 1 | r0 = 1;
0x00001652 bl 0x1b20 | fcn_00001b20 (r0, r1, r2);
0x00001656 movs r2, 4 | r2 = 4;
0x00001658 mov r1, r4 | r1 = r4;
0x0000165a movs r0, 1 | r0 = 1;
0x0000165c bl 0x1b20 | fcn_00001b20 (r0, r1, r2);
0x00001660 ldr r3, [pc, 0x2a8] | r3 = *(0x190c);
0x00001662 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00001664 ldr r4, [r2, r3] | r4 = *((r2 + r3));
0x00001666 b 0x1432 | goto label_14;
| label_69:
0x00001668 ldr r1, [pc, 0x2d0] |
0x0000166a mov r0, r4 | r0 = r4;
0x0000166c add r1, pc | r1 = 0x2fac;
0x0000166e blx 0xa44 | r0 = strcmp (r0, r1);
0x00001672 cmp r0, 0 |
| if (r0 == 0) {
0x00001674 beq.w 0x148e | goto label_15;
| }
0x00001678 ldrb r3, [r4] | r3 = *(r4);
0x0000167a cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x0000167c beq.w 0x17ba | goto label_81;
| }
0x00001680 adds r3, r5, 1 | r3 = r5 + 1;
0x00001682 str r4, [sp, 0x2c] | *(s2) = r4;
0x00001684 mov fp, r3 |
0x00001686 mov r4, sl | r4 = sl;
0x00001688 b.w 0xd54 | goto label_16;
| label_79:
0x0000168c ldr r1, [pc, 0x2b0] |
0x0000168e movs r0, 1 | r0 = 1;
0x00001690 add r1, pc | r1 = 0x2fd4;
0x00001692 blx 0xbc4 | printf_chk ();
0x00001696 b 0x1602 | goto label_17;
| label_80:
0x00001698 ldr r1, [pc, 0x2a8] |
0x0000169a movs r0, 1 | r0 = 1;
0x0000169c add r1, pc | r1 = 0x2fe4;
0x0000169e blx 0xbc4 | printf_chk ();
0x000016a2 b 0x1628 | goto label_18;
| label_76:
0x000016a4 ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x000016a6 movs r2, 0x5e | r2 = 0x5e;
0x000016a8 ldr r3, [pc, 0x1c0] |
0x000016aa movs r1, 1 | r1 = 1;
0x000016ac ldr r0, [pc, 0x298] |
0x000016ae ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000016b0 add r0, pc | r0 = 0x2ffc;
0x000016b2 ldr r3, [r3] | r3 = *(0x186c);
0x000016b4 blx 0xaf8 | fwrite (r0, r1, r2, r3);
0x000016b8 movs r0, 1 | r0 = 1;
0x000016ba bl 0x1c1c | fcn_00001c1c (r0);
| label_75:
0x000016be ldr r1, [pc, 0x28c] |
0x000016c0 movs r0, 1 | r0 = 1;
0x000016c2 add r1, pc | r1 = 0x3014;
0x000016c4 blx 0xbc4 | printf_chk ();
0x000016c8 b 0x1424 | goto label_13;
| label_74:
0x000016ca ldr r1, [pc, 0x284] |
0x000016cc movs r0, 1 | r0 = 1;
0x000016ce add r1, pc | r1 = 0x3024;
0x000016d0 blx 0xbc4 | printf_chk ();
0x000016d4 b 0x141c | goto label_19;
| label_61:
0x000016d6 movs r6, 1 | r6 = 1;
0x000016d8 b 0x11b6 | goto label_20;
| label_68:
0x000016da ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x000016dc cmp r3, 0 |
| if (r3 == 0) {
0x000016de bne 0x17a6 |
0x000016e0 movs r1, 0x3d | r1 = 0x3d;
0x000016e2 mov r0, r4 | r0 = r4;
0x000016e4 blx 0xb7c | strchr (r0, r1);
0x000016e8 adds r0, 1 | r0++;
0x000016ea bl 0x1bf8 | fcn_00001bf8 (r0);
0x000016ee str r0, [sp, 0x44] | *(arg_44h) = r0;
0x000016f0 b.w 0xcf2 | goto label_2;
| label_34:
0x000016f4 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000016f6 ldr r3, [pc, 0x174] | r3 = *(0x186e);
0x000016f8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000016fa ldr r4, [r3] | r4 = *(0x186e);
0x000016fc blx 0xb94 | r0 = errno_location ();
0x00001700 ldr r0, [r0] | r0 = *(r0);
0x00001702 blx 0xb40 | strerror (r0);
0x00001706 ldr r2, [pc, 0x24c] |
0x00001708 mov r3, r0 | r3 = r0;
0x0000170a add r2, pc | r2 = 0x3064;
0x0000170c b 0x1038 | goto label_7;
| label_33:
0x0000170e ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00001710 ldr r3, [pc, 0x158] | r3 = *(0x186c);
0x00001712 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001714 ldr r4, [r3] | r4 = *(0x186c);
0x00001716 blx 0xb94 | r0 = errno_location ();
0x0000171a ldr r0, [r0] | r0 = *(r0);
0x0000171c blx 0xb40 | strerror (r0);
0x00001720 ldr r2, [pc, 0x234] |
0x00001722 mov r3, r0 | r3 = r0;
0x00001724 add r2, pc | r2 = 0x3080;
0x00001726 b 0x1038 | goto label_7;
| label_37:
0x00001728 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x0000172a ldr r3, [pc, 0x140] | r3 = *(0x186e);
0x0000172c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000172e ldr r4, [r3] | r4 = *(0x186e);
0x00001730 blx 0xb94 | r0 = errno_location ();
0x00001734 ldr r0, [r0] | r0 = *(r0);
0x00001736 blx 0xb40 | strerror (r0);
0x0000173a ldr r2, [pc, 0x220] |
0x0000173c mov r3, r0 | r3 = r0;
0x0000173e add r2, pc | r2 = 0x30a0;
0x00001740 b 0x1038 | goto label_7;
| label_57:
0x00001742 ldr r0, [pc, 0x21c] |
0x00001744 movs r2, 0x20 | r2 = 0x20;
0x00001746 ldr r3, [pc, 0x124] | r3 = *(0x186e);
0x00001748 add r0, pc | r0 = 0x30ae;
0x0000174a b 0x14c2 | goto label_12;
| label_43:
0x0000174c ldr r2, [pc, 0x214] |
0x0000174e ldr r1, [pc, 0x218] |
0x00001750 str r0, [sp, 0x24] | *(errnum) = r0;
0x00001752 movs r0, 1 | r0 = 1;
0x00001754 add r2, pc | r2 = 0x30bc;
0x00001756 add r1, pc | r1 = 0x30c4;
0x00001758 blx 0xbc4 | printf_chk ();
0x0000175c ldr r3, [sp, 0x24] | r3 = *(errnum);
0x0000175e mov r0, r3 | r0 = r3;
0x00001760 blx 0xb64 | exit (r0);
| label_29:
0x00001764 ldr r2, [pc, 0x204] |
0x00001766 ldr r0, [pc, 0x104] | r0 = *(0x186e);
0x00001768 add r2, pc | r2 = 0x30d8;
| label_23:
0x0000176a mov r3, r4 | r3 = r4;
0x0000176c ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x0000176e movs r1, 1 | r1 = 1;
0x00001770 ldr r0, [r4, r0] | r0 = *((r4 + r0));
0x00001772 ldr r0, [r0] | r0 = *(r0);
0x00001774 blx 0xbdc | fprintf_chk ()
0x00001778 movs r0, 1 | r0 = 1;
0x0000177a blx 0xb64 | r0 = exit (r0);
0x0000177e blx 0xac8 | stack_chk_fail ();
| label_53:
0x00001782 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00001784 ldr r3, [pc, 0xe4] | r3 = *(0x186c);
0x00001786 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001788 ldr r4, [r3] | r4 = *(0x186c);
0x0000178a blx 0xb94 | r0 = errno_location ();
0x0000178e ldr r0, [r0] | r0 = *(r0);
0x00001790 blx 0xb40 | strerror (r0);
0x00001794 ldr r2, [pc, 0x1d8] |
0x00001796 mov r3, r0 | r3 = r0;
0x00001798 add r2, pc | r2 = 0x310c;
0x0000179a b 0x1038 | goto label_7;
| label_32:
0x0000179c ldr r0, [pc, 0x1d4] |
0x0000179e movs r2, 0x4a | r2 = 0x4a;
0x000017a0 ldr r3, [pc, 0xc8] | r3 = *(0x186c);
0x000017a2 add r0, pc | r0 = 0x311a;
0x000017a4 b 0x14c2 | goto label_12;
| }
| label_70:
0x000017a6 ldr r0, [pc, 0x1d0] |
0x000017a8 movs r2, 0x1a | r2 = 0x1a;
0x000017aa ldr r3, [pc, 0xc0] | r3 = *(0x186e);
0x000017ac add r0, pc | r0 = 0x312a;
0x000017ae b 0x14c2 | goto label_12;
| label_60:
0x000017b0 ldr r3, [sp, 0x24] | r3 = *(errnum);
0x000017b2 cmp r3, 0 |
| if (r3 != 0) {
0x000017b4 bne.w 0x14a6 | goto label_21;
| }
0x000017b8 b 0x14ac | goto label_22;
| label_81:
0x000017ba ldr r1, [pc, 0x1c0] |
0x000017bc mov r0, r4 | r0 = r4;
0x000017be add r1, pc | r1 = 0x3140;
0x000017c0 blx 0xa44 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x000017c4 cbnz r0, 0x17e4 |
0x000017c6 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x000017c8 adds r3, r5, 1 | r3 = r5 + 1;
0x000017ca mov r4, sl | r4 = sl;
0x000017cc ldr.w r3, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r2 + offset_0));
0x000017d0 str r3, [sp, 0x2c] | *(s2) = r3;
0x000017d2 adds r3, r5, 2 | r3 = r5 + 2;
0x000017d4 mov fp, r3 |
0x000017d6 b.w 0xd54 | goto label_16;
| label_49:
0x000017da ldr r0, [pc, 0x1a4] |
0x000017dc movs r2, 0x19 | r2 = 0x19;
0x000017de ldr r3, [pc, 0x8c] | r3 = *(0x186e);
0x000017e0 add r0, pc | r0 = 0x3166;
0x000017e2 b 0x14c2 | goto label_12;
| }
0x000017e4 ldr r2, [pc, 0x19c] |
0x000017e6 ldr r0, [pc, 0x84] | r0 = *(0x186e);
0x000017e8 add r2, pc | r2 = 0x3170;
0x000017ea b 0x176a | goto label_23;
| label_31:
0x000017ec ldr r0, [pc, 0x198] |
0x000017ee movs r2, 0x48 | r2 = 0x48;
0x000017f0 ldr r3, [pc, 0x78] | r3 = *(0x186c);
0x000017f2 add r0, pc | r0 = 0x317e;
0x000017f4 b 0x14c2 | goto label_12;
| label_54:
0x000017f6 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000017f8 ldr r3, [pc, 0x70] | r3 = *(0x186c);
0x000017fa ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000017fc ldr r5, [r3] | r5 = *(0x186c);
0x000017fe blx 0xb94 | r0 = errno_location ();
0x00001802 ldr r0, [r0] | r0 = *(r0);
0x00001804 blx 0xb40 | strerror (r0);
0x00001808 ldr r2, [pc, 0x180] |
0x0000180a mov r3, r0 | r3 = r0;
0x0000180c mov r1, r4 | r1 = r4;
0x0000180e mov r0, r5 | r0 = r5;
0x00001810 add r2, pc | r2 = 0x31a0;
0x00001812 blx 0xbdc | fprintf_chk ()
0x00001816 mov r0, r4 | r0 = r4;
0x00001818 blx 0xb64 | exit (r0);
| label_55:
0x0000181c ldr r0, [pc, 0x170] |
0x0000181e movs r2, 0x33 | r2 = 0x33;
0x00001820 ldr r3, [pc, 0x48] | r3 = *(0x186c);
0x00001822 add r0, pc | r0 = 0x31b6;
0x00001824 b 0x14c2 | goto label_12;
| label_56:
0x00001826 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00001828 ldr r3, [pc, 0x40] | r3 = *(0x186c);
0x0000182a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000182c ldr r4, [r3] | r4 = *(0x186c);
0x0000182e blx 0xb94 | r0 = errno_location ();
0x00001832 ldr r0, [r0] | r0 = *(r0);
0x00001834 blx 0xb40 | strerror (r0);
0x00001838 ldr r2, [pc, 0x158] |
0x0000183a mov r3, r0 | r3 = r0;
0x0000183c mov r1, r6 | r1 = r6;
0x0000183e mov r0, r4 | r0 = r4;
0x00001840 add r2, pc | r2 = 0x31d8;
0x00001842 blx 0xbdc | fprintf_chk ()
0x00001846 mov r0, r6 | r0 = r6;
0x00001848 blx 0xb64 | exit (r0);
0x0000184c movs r2, 0x9e | r2 = 0x9e;
0x0000184e movs r1, r0 | r1 = r0;
0x00001850 lsls r4, r1, 3 | r4 = r1 << 3;
0x00001852 movs r0, r0 |
0x00001854 movs r2, 0x86 | r2 = 0x86;
0x00001856 movs r1, r0 | r1 = r0;
0x00001858 asrs r6, r1, 0xa | r6 = r1 >> 0xa;
0x0000185a movs r0, r0 |
0x0000185c asrs r2, r2, 6 | r2 >>= 6;
0x0000185e movs r0, r0 |
0x00001860 asrs r6, r6, 9 | r6 >>= 9;
0x00001862 movs r0, r0 |
0x00001864 asrs r6, r4, 0x10 | r6 = r4 >> 0x10;
0x00001866 movs r0, r0 |
0x00001868 asrs r6, r7, 0x10 | r6 = r7 >> 0x10;
0x0000186a movs r0, r0 |
0x0000186c lsls r0, r2, 3 | r0 = r2 << 3;
0x0000186e movs r0, r0 |
0x00001870 asrs r2, r1, 0xf | r2 = r1 >> 0xf;
0x00001872 movs r0, r0 |
0x00001874 asrs r0, r2, 3 | r0 = r2 >> 3;
0x00001876 movs r0, r0 |
0x00001878 asrs r4, r1, 3 | r4 = r1 >> 3;
0x0000187a movs r0, r0 |
0x0000187c asrs r6, r1, 3 | r6 = r1 >> 3;
0x0000187e movs r0, r0 |
0x00001880 asrs r0, r5, 6 | r0 = r5 >> 6;
0x00001882 movs r0, r0 |
0x00001884 asrs r2, r4, 6 | r2 = r4 >> 6;
0x00001886 movs r0, r0 |
0x00001888 asrs r0, r4, 6 | r0 = r4 >> 6;
0x0000188a movs r0, r0 |
0x0000188c asrs r4, r3, 6 | r4 = r3 >> 6;
0x0000188e movs r0, r0 |
0x00001890 asrs r6, r5, 6 | r6 = r5 >> 6;
0x00001892 movs r0, r0 |
0x00001894 asrs r0, r5, 0xf | r0 = r5 >> 0xf;
0x00001896 movs r0, r0 |
0x00001898 lsrs r6, r4, 0x19 | r6 = r4 >> 0x19;
0x0000189a movs r0, r0 |
0x0000189c lsrs r4, r4, 0x19 | r4 >>= 0x19;
0x0000189e movs r0, r0 |
0x000018a0 asrs r2, r4, 0xe | r2 = r4 >> 0xe;
0x000018a2 movs r0, r0 |
0x000018a4 asrs r6, r2, 0xe | r6 = r2 >> 0xe;
0x000018a6 movs r0, r0 |
0x000018a8 asrs r4, r6, 0xe | r4 = r6 >> 0xe;
0x000018aa movs r0, r0 |
0x000018ac asrs r0, r0, 0xf | r0 >>= 0xf;
0x000018ae movs r0, r0 |
0x000018b0 asrs r0, r0, 0xe | r0 >>= 0xe;
0x000018b2 movs r0, r0 |
0x000018b4 asrs r6, r6, 0xe | r6 >>= 0xe;
0x000018b6 movs r0, r0 |
0x000018b8 asrs r6, r4, 0xe | r6 = r4 >> 0xe;
0x000018ba movs r0, r0 |
0x000018bc asrs r2, r6, 3 | r2 = r6 >> 3;
0x000018be movs r0, r0 |
0x000018c0 asrs r6, r3, 3 | r6 = r3 >> 3;
0x000018c2 movs r0, r0 |
0x000018c4 subs r4, r6, 3 | r4 = r6 - 3;
0x000018c6 movs r1, r0 | r1 = r0;
0x000018c8 asrs r4, r4, 0xd | r4 >>= 0xd;
0x000018ca movs r0, r0 |
0x000018cc asrs r2, r7, 0xc | r2 = r7 >> 0xc;
0x000018ce movs r0, r0 |
0x000018d0 lsrs r6, r3, 0xf | r6 = r3 >> 0xf;
0x000018d2 movs r0, r0 |
0x000018d4 adds r0, r3, 3 | r0 = r3 + 3;
0x000018d6 movs r1, r0 | r1 = r0;
0x000018d8 lsrs r0, r0, 0x1e | r0 >>= 0x1e;
0x000018da movs r0, r0 |
0x000018dc lsrs r2, r7, 0xc | r2 = r7 >> 0xc;
0x000018de movs r0, r0 |
0x000018e0 lsrs r2, r3, 0x1d | r2 = r3 >> 0x1d;
0x000018e2 movs r0, r0 |
0x000018e4 asrs r4, r3, 8 | r4 = r3 >> 8;
0x000018e6 movs r0, r0 |
0x000018e8 adds r2, r7, 3 | r2 = r7 + 3;
0x000018ea movs r1, r0 | r1 = r0;
0x000018ec asrs r2, r4, 0xd | r2 = r4 >> 0xd;
0x000018ee movs r0, r0 |
0x000018f0 lsrs r6, r6, 0xa | r6 >>= 0xa;
0x000018f2 movs r0, r0 |
0x000018f4 lsrs r4, r1, 0x15 | r4 = r1 >> 0x15;
0x000018f6 movs r0, r0 |
0x000018f8 lsrs r0, r1, 0x15 | r0 = r1 >> 0x15;
0x000018fa movs r0, r0 |
0x000018fc lsrs r6, r2, 9 | r6 = r2 >> 9;
0x000018fe movs r0, r0 |
0x00001900 lsrs r6, r0, 0xa | r6 = r0 >> 0xa;
0x00001902 movs r0, r0 |
0x00001904 asrs r4, r0, 7 | r4 = r0 >> 7;
0x00001906 movs r0, r0 |
0x00001908 asrs r2, r3, 7 | r2 = r3 >> 7;
0x0000190a movs r0, r0 |
0x0000190c lsls r0, r3, 3 | r0 = r3 << 3;
0x0000190e movs r0, r0 |
0x00001910 lsrs r2, r5, 0x17 | r2 = r5 >> 0x17;
0x00001912 movs r0, r0 |
0x00001914 asrs r0, r5, 6 | r0 = r5 >> 6;
0x00001916 movs r0, r0 |
0x00001918 lsrs r0, r4, 0x16 | r0 = r4 >> 0x16;
0x0000191a movs r0, r0 |
0x0000191c subs r0, r1, r4 | r0 = r1 - r4;
0x0000191e movs r1, r0 | r1 = r0;
0x00001920 lsls r7, r6, 0x15 | r7 = r6 << 0x15;
0x00001922 movs r0, r0 |
0x00001924 lsrs r6, r6, 0x14 | r6 >>= 0x14;
0x00001926 movs r0, r0 |
0x00001928 asrs r4, r1, 2 | r4 = r1 >> 2;
0x0000192a movs r0, r0 |
0x0000192c asrs r6, r2, 0x20 | r6 = r2 >> 0x20;
0x0000192e movs r0, r0 |
0x00001930 asrs r2, r7, 0x20 | r2 = r7 >> 0x20;
0x00001932 movs r0, r0 |
0x00001934 lsrs r0, r0, 0x1d | r0 >>= 0x1d;
0x00001936 movs r0, r0 |
0x00001938 lsrs r0, r6, 0x1d | r0 = r6 >> 0x1d;
0x0000193a movs r0, r0 |
0x0000193c lsls r0, r1, 0x1e | r0 = r1 << 0x1e;
0x0000193e movs r0, r0 |
0x00001940 lsrs r4, r3, 0x1e | r4 = r3 >> 0x1e;
0x00001942 movs r0, r0 |
0x00001944 lsrs r0, r5, 0x1b | r0 = r5 >> 0x1b;
0x00001946 movs r0, r0 |
0x00001948 lsrs r0, r0, 0x10 | r0 >>= 0x10;
0x0000194a movs r0, r0 |
0x0000194c lsrs r6, r4, 0x1b | r6 = r4 >> 0x1b;
0x0000194e movs r0, r0 |
0x00001950 lsrs r2, r7, 0x1a | r2 = r7 >> 0x1a;
0x00001952 movs r0, r0 |
0x00001954 lsrs r2, r6, 0xb | r2 = r6 >> 0xb;
0x00001956 movs r0, r0 |
0x00001958 lsrs r4, r7, 0xa | r4 = r7 >> 0xa;
0x0000195a movs r0, r0 |
0x0000195c lsrs r6, r7, 0xa | r6 = r7 >> 0xa;
0x0000195e movs r0, r0 |
0x00001960 lsrs r0, r6, 0x15 | r0 = r6 >> 0x15;
0x00001962 movs r0, r0 |
0x00001964 lsrs r0, r5, 0x20 | r0 = r5 >> 0x20;
0x00001966 movs r0, r0 |
0x00001968 lsrs r6, r5, 0x20 | r6 = r5 >> 0x20;
0x0000196a movs r0, r0 |
0x0000196c lsrs r0, r6, 6 | r0 = r6 >> 6;
0x0000196e movs r0, r0 |
0x00001970 lsrs r0, r6, 0x11 | r0 = r6 >> 0x11;
0x00001972 movs r0, r0 |
0x00001974 lsrs r2, r6, 7 | r2 = r6 >> 7;
0x00001976 movs r0, r0 |
0x00001978 lsrs r0, r6, 4 | r0 = r6 >> 4;
0x0000197a movs r0, r0 |
0x0000197c lsrs r2, r7, 4 | r2 = r7 >> 4;
0x0000197e movs r0, r0 |
0x00001980 lsrs r0, r0, 3 | r0 >>= 3;
0x00001982 movs r0, r0 |
0x00001984 lsrs r4, r2, 4 | r4 = r2 >> 4;
0x00001986 movs r0, r0 |
0x00001988 lsrs r6, r2, 5 | r6 = r2 >> 5;
0x0000198a movs r0, r0 |
0x0000198c lsrs r4, r5, 0x11 | r4 = r5 >> 0x11;
0x0000198e movs r0, r0 |
0x00001990 lsrs r6, r4, 0x10 | r6 = r4 >> 0x10;
0x00001992 movs r0, r0 |
0x00001994 lsrs r4, r3, 0x12 | r4 = r3 >> 0x12;
0x00001996 movs r0, r0 |
0x000019cc adds r0, 0x14 | r0 += 0x14;
0x000019ce b 0x1510 | goto label_24;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/dbus-launch @ 0x1b20 */
| #include <stdint.h>
|
; (fcn) fcn.00001b20 () | void fcn_00001b20 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00001b20 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00001b24 mov r8, r1 | r8 = r1;
0x00001b26 ldr.w sb, [pc, 0x68] | sb = *(0x00001b90);
0x00001b2a mov r6, r2 | r6 = r2;
0x00001b2c mov r7, r0 | r7 = r0;
0x00001b2e mov.w sl, 0 | sl = 0;
0x00001b32 mov r5, r2 | r5 = r2;
0x00001b34 mov r4, r1 | r4 = r1;
0x00001b36 add sb, pc | sb += pc;
| label_0:
0x00001b38 mov r2, r5 | r2 = r5;
0x00001b3a mov r1, r4 | r1 = r4;
0x00001b3c mov r0, r7 | r0 = r7;
0x00001b3e blx 0xbd0 | r0 = write (r0, r1, r2);
0x00001b42 cmp r0, 0 |
| if (r0 < 0) {
0x00001b44 blt 0x1b62 | goto label_1;
| }
| do {
0x00001b46 add sl, r0 | sl += r0;
0x00001b48 cmp r6, sl |
| if (r6 < sl) {
0x00001b4a bls 0x1b8c | goto label_2;
| }
0x00001b4c sub.w r5, r6, sl | r5 = r6 - sl;
0x00001b50 add.w r4, r8, sl | r4 = r8 + sl;
0x00001b54 mov r2, r5 | r2 = r5;
0x00001b56 mov r1, r4 | r1 = r4;
0x00001b58 mov r0, r7 | r0 = r7;
0x00001b5a blx 0xbd0 | r0 = write (r0, r1, r2);
0x00001b5e cmp r0, 0 |
0x00001b60 bge 0x1b46 |
| } while (r0 >= 0);
| label_1:
0x00001b62 blx 0xb94 | r0 = errno_location ();
0x00001b66 ldr r0, [r0] | r0 = *(r0);
0x00001b68 cmp r0, 4 |
| if (r0 == 4) {
0x00001b6a beq 0x1b38 | goto label_0;
| }
0x00001b6c ldr r3, [pc, 0x24] | r3 = *(0x1b94);
0x00001b6e ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00001b72 ldr r4, [r3] | r4 = *(0x1b94);
0x00001b74 blx 0xb40 | strerror (r0);
0x00001b78 ldr r2, [pc, 0x1c] |
0x00001b7a mov r3, r0 | r3 = r0;
0x00001b7c movs r1, 1 | r1 = 1;
0x00001b7e mov r0, r4 | r0 = r4;
0x00001b80 add r2, pc | r2 = 0x371c;
0x00001b82 blx 0xbdc | fprintf_chk ()
0x00001b86 movs r0, 1 | r0 = 1;
0x00001b88 blx 0xb64 | exit (r0);
| label_2:
0x00001b8c pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/dbus-launch @ 0x1b9c */
| #include <stdint.h>
|
; (fcn) fcn.00001b9c () | uint32_t fcn_00001b9c (int16_t arg1) {
| r0 = arg1;
0x00001b9c invalid |
0x00001ba0 ldr r5, [pc, 0x30] |
0x00001ba2 blx 0xb70 | r0 = strlen (r0);
0x00001ba6 cmp r0, 0x20 |
0x00001ba8 add r5, pc | r5 = 0x3780;
| if (r0 == 0x20) {
0x00001baa bne 0x1bba |
0x00001bac mov r0, r4 | r0 = r4;
0x00001bae blx 0xad4 | dbus_strdup ();
0x00001bb2 ldr r3, [pc, 0x24] |
0x00001bb4 add r3, pc | r3 = 0x3792;
0x00001bb6 str r0, [r3, 4] | *((r3 + 4)) = r0;
0x00001bb8 pop {r3, r4, r5, pc} |
| }
0x00001bba ldr r0, [pc, 0x20] |
0x00001bbc mov r3, r4 | r3 = r4;
0x00001bbe ldr r2, [pc, 0x20] |
0x00001bc0 movs r1, 1 | r1 = 1;
0x00001bc2 ldr r0, [r5, r0] | r0 = *((r5 + r0));
0x00001bc4 add r2, pc | r2 = 0x37aa;
0x00001bc6 ldr r0, [r0] | r0 = *(0x1bde);
0x00001bc8 blx 0xbdc | fprintf_chk ()
0x00001bcc movs r0, 1 | r0 = 1;
0x00001bce blx 0xb64 | exit (r0);
0x00001bd2 nop |
0x00001bd4 asrs r0, r6, 0xd | r0 = r6 >> 0xd;
0x00001bd6 movs r1, r0 | r1 = r0;
0x00001bd8 asrs r0, r3, 0x11 | r0 = r3 >> 0x11;
0x00001bda movs r1, r0 | r1 = r0;
0x00001bdc lsls r0, r2, 3 | r0 = r2 << 3;
0x00001bde movs r0, r0 |
0x00001be0 lsls r0, r1, 7 | r0 = r1 << 7;
0x00001be2 movs r0, r0 |
0x00001be4 ldr r3, [pc, 4] | r3 = *(0x00001bec);
0x00001be6 add r3, pc | r3 += pc;
0x00001be8 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00001bea bx lr | return r0;
| }
[*] Function fprintf used 11 times dbus-launch