[*] Binary protection state of udevadm
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of udevadm
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x65aac */
| #include <stdint.h>
|
; (fcn) fcn.00065aac () | void fcn_00065aac (int16_t arg1, int16_t arg2) {
| int32_t var_0h_2;
| int32_t var_0h_3;
| int16_t var_8h_3;
| int16_t var_8h_2;
| int32_t var_bh;
| int32_t var_fh;
| int8_t var_13h;
| int16_t var_8h;
| int32_t var_4h;
| int16_t var_8h_4;
| int32_t var_ch;
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x00065aac push {r4, r5, r7, lr} |
0x00065aae mov r5, r1 | r5 = r1;
0x00065ab0 ldr r1, [pc, 0xbc] |
0x00065ab2 sub sp, 0x18 |
0x00065ab4 movs r3, 0 | r3 = 0;
0x00065ab6 ldr r2, [pc, 0xbc] | r2 = *(0x65b76);
0x00065ab8 add r7, sp, 8 | r7 += var_8h;
0x00065aba add r1, pc | r1 = 0xcb62e;
0x00065abc ldr r2, [r1, r2] |
0x00065abe ldr r2, [r2] | r2 = imp.__progname;
0x00065ac0 str r2, [r7, 0xc] | var_ch = r2;
0x00065ac2 mov.w r2, 0 | r2 = 0;
0x00065ac6 str r3, [r7, 4] | var_4h = r3;
0x00065ac8 cmp r5, 0 |
| if (r5 == 0) {
0x00065aca beq 0x65b52 | goto label_1;
| }
| if (r0 == 0) {
0x00065acc cbz r0, 0x65b30 | goto label_2;
| }
0x00065ace ldr r1, [pc, 0xa8] |
0x00065ad0 sub sp, 0x20 |
0x00065ad2 ldr r3, [pc, 0xa8] |
0x00065ad4 add r4, sp, 8 | r4 += var_8h_3;
0x00065ad6 movs r2, 0x1c | r2 = 0x1c;
0x00065ad8 add r1, pc | r1 = 0xcb656;
0x00065ada strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x00065ade add r3, pc | r3 = 0xcb660;
0x00065ae0 movs r1, 1 | r1 = 1;
0x00065ae2 mov r0, r4 | r0 = r4;
0x00065ae4 blx 0x9494 | fcn_00009494 ();
| do {
0x00065ae8 mov r0, r4 | r0 = r4;
0x00065aea adds r1, r7, 4 | r1 += var_4h;
0x00065aec bl 0x6b320 | fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x00065af0 subs r4, r0, 0 | r4 -= var_8h_2;
| if (r4 >= var_8h_2) {
0x00065af2 blt 0x65b0e |
0x00065af4 ldr r0, [r7, 4] | r0 = var_4h;
0x00065af6 add.w r1, r7, 8 | r1 += var_8h_4;
0x00065afa bl 0x7d7e8 | r0 = fcn_0007d7e8 (r0, r1);
0x00065afe adds r3, r0, 6 | r3 = r0 + 6;
0x00065b00 mov r4, r0 | r4 = r0;
| if (r3 == r0) {
0x00065b02 beq 0x65b66 | goto label_3;
| }
0x00065b04 cmp r0, 0 |
| if (r0 < 0) {
0x00065b06 blt 0x65b0e | goto label_0;
| }
0x00065b08 ldr r3, [r7, 8] | r3 = var_8h_4;
0x00065b0a movs r4, 0 | r4 = 0;
0x00065b0c str r3, [r5] | *(r5) = r3;
| }
| label_0:
0x00065b0e ldr r0, [r7, 4] | r0 = var_4h;
0x00065b10 blx 0x8dac | fcn_00008dac ();
0x00065b14 ldr r2, [pc, 0x68] |
0x00065b16 ldr r3, [pc, 0x5c] | r3 = *(0x65b76);
0x00065b18 add r2, pc | r2 = 0xcb69c;
0x00065b1a ldr r3, [r2, r3] | r3 = imp.__progname;
0x00065b1c ldr r2, [r3] | r2 = imp.__progname;
0x00065b1e ldr r3, [r7, 0xc] | r3 = var_ch;
0x00065b20 eors r2, r3 | r2 ^= r3;
0x00065b22 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00065b26 bne 0x65b6c | goto label_4;
| }
0x00065b28 mov r0, r4 | r0 = r4;
0x00065b2a adds r7, 0x10 | r7 += 0x10;
0x00065b2c mov sp, r7 |
0x00065b2e pop {r4, r5, r7, pc} |
| label_2:
0x00065b30 ldr r2, [pc, 0x50] |
0x00065b32 sub sp, 0x18 |
0x00065b34 ldr r3, [pc, 0x50] |
0x00065b36 add r4, sp, 8 | r4 += var_8h_2;
0x00065b38 add r2, pc | r2 = 0xcb6c0;
0x00065b3a ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x00065b3c add r3, pc | r3 = 0xcb6c8;
0x00065b3e stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x00065b42 ldm r3!, {r0, r1} | r0 = *(r3!);
| r1 = *((r3! + 4));
0x00065b44 ldrb r3, [r3] | r3 = *(r3);
0x00065b46 str.w r0, [r4, 0xb] | __asm ("str.w r0, [var_bh]");
0x00065b48 movs r3, r1 | r3 = r1;
0x00065b4a str.w r1, [r4, 0xf] | __asm ("str.w r1, [var_fh]");
0x00065b4e strb r3, [r4, 0x13] | var_13h = r3;
0x00065b50 b 0x65ae8 |
| } while (1);
| label_1:
0x00065b52 ldr r1, [pc, 0x38] |
0x00065b54 movs r2, 0x35 | r2 = 0x35;
0x00065b56 ldr r3, [pc, 0x38] |
0x00065b58 ldr r0, [pc, 0x38] |
0x00065b5a add r1, pc | r1 = 0xcb6ec;
0x00065b5c add r3, pc | r3 = 0xcb6f2;
0x00065b5e adds r1, 7 | r1 += 7;
0x00065b60 add r0, pc | r0 = 0xcb6f8;
0x00065b62 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00065b66 mvn r4, 0x3c | r4 = ~0x3c;
0x00065b6a b 0x65b0e | goto label_0;
| label_4:
0x00065b6c blx 0x927c | fprintf_chk ()
0x00065b70 adds r0, 0xa | r0 += 0xa;
0x00065b72 movs r6, r0 | r6 = r0;
0x00065b74 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00065b76 movs r0, r0 |
0x00065b78 stm r0!, {r2, r3, r4, r5, r7} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r4;
| *((r0! + 12)) = r5;
| *((r0! + 16)) = r7;
0x00065b7a movs r3, r0 | r3 = r0;
0x00065b7c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x65cf8 */
| #include <stdint.h>
|
; (fcn) fcn.00065cf8 () | void fcn_00065cf8 (uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00065cf8 blmi 0xef85e4 | __asm ("blmi aav.0x00062dc4");
0x00065cfc push {r4, r5, lr} |
0x00065cfe sub sp, 0xc |
0x00065d00 add r2, pc | r2 += pc;
0x00065d02 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00065d04 ldr r3, [r3] | r3 = *(r3);
0x00065d06 str r3, [sp, 4] | var_4h = r3;
0x00065d08 mov.w r3, 0 | r3 = 0;
0x00065d0c cmp r0, 0 |
| if (r0 == 0) {
0x00065d0e beq 0x65dbe | goto label_2;
| }
0x00065d10 mov r1, sp | r1 = sp;
0x00065d12 mov r4, r0 | r4 = r0;
0x00065d14 bl 0x746ac | r0 = fcn_000746ac (r0, r1);
0x00065d18 cmp r0, 0 |
| if (r0 < 0) {
0x00065d1a blt 0x65d3e | goto label_3;
| }
0x00065d1c ldr r0, [sp] | r0 = *(sp);
0x00065d1e cmp r0, 0x40 |
0x00065d20 it hs |
0x00065d22 mvnhs r0, 0x15 | r0 = ~0x15;
| while (1) {
| label_0:
0x00065d26 ldr r2, [pc, 0xc0] |
0x00065d28 ldr r3, [pc, 0xb8] | r3 = *(0x65de4);
0x00065d2a add r2, pc | r2 = 0xcbb18;
0x00065d2c ldr r3, [r2, r3] | r3 = imp.__progname;
0x00065d2e ldr r2, [r3] | r2 = imp.__progname;
0x00065d30 ldr r3, [sp, 4] | r3 = var_4h;
0x00065d32 eors r2, r3 | r2 ^= r3;
0x00065d34 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00065d38 bne 0x65ddc | goto label_4;
| }
0x00065d3a add sp, 0xc |
0x00065d3c pop {r4, r5, pc} |
| label_3:
0x00065d3e mov r0, r4 | r0 = r4;
0x00065d40 blx 0x8f38 | fcn_00008f38 ();
0x00065d42 ldrd r1, pc, [sl], 0x30c | __asm ("ldrd r1, pc, [sl], 0x30c");
0x00065d46 cmp r3, 0xf |
| if (r3 > 0xf) {
0x00065d48 bhi 0x65db8 | goto label_5;
| }
0x00065d4a cmp r0, 7 |
| if (r0 != 7) {
0x00065d4c beq 0x65d66 |
0x00065d4e cmp r0, 8 |
| if (r0 != 8) {
0x00065d50 beq 0x65d5c |
0x00065d52 ldr r3, [pc, 0x98] |
0x00065d54 ldrb r2, [r4, 8] | r2 = *((r4 + 8));
0x00065d56 add r3, pc | r3 = 0xcbb48;
0x00065d58 ldrb r3, [r3, r2] | r3 = *((r3 + r2));
0x00065d5a add r0, r3 | r0 += r3;
| }
0x00065d5c ldr r3, [pc, 0x90] |
0x00065d5e ldrb r2, [r4, 7] | r2 = *((r4 + 7));
0x00065d60 add r3, pc | r3 = 0xcbb54;
0x00065d62 ldrb r3, [r3, r2] | r3 = *((r3 + r2));
0x00065d64 add r0, r3 | r0 += r3;
| }
0x00065d66 ldr r3, [pc, 0x8c] |
0x00065d68 ldrb r2, [r4, 4] | r2 = *((r4 + 4));
0x00065d6a add r3, pc | r3 = 0xcbb64;
0x00065d6c ldrb r3, [r3, r2] | r3 = *((r3 + r2));
0x00065d6e add r3, r0 | r3 += r0;
0x00065d70 cmp r3, 0x4a |
| if (r3 > 0x4a) {
0x00065d72 bhi 0x65db8 | goto label_5;
| }
0x00065d74 ldr r2, [pc, 0x80] |
0x00065d76 add r2, pc |
0x00065d78 ldr.w r2, [r2, r3, lsl 3] | r2 = imp.__progname;
| if (r2 == 0) {
0x00065d7c cbz r2, 0x65db8 | goto label_5;
| }
0x00065d7e ldrb r1, [r4] | r1 = *(r4);
0x00065d80 ldrb r0, [r2] | r0 = *(r2);
0x00065d82 eor.w ip, r1, r0 |
0x00065d86 tst.w ip, 0xdf |
| if ((ip & 0xdf) != 0) {
0x00065d8a bne 0x65db8 | goto label_5;
| }
0x00065d8c ldr.w ip, [pc, 0x6c] |
0x00065d90 add ip, pc | ip = 0xcbb90;
| label_1:
0x00065d92 ldrb.w r1, [ip, r1] | r1 = *((ip + r1));
0x00065d96 ldrb.w r0, [ip, r0] | r0 = *((ip + r0));
0x00065d9a subs r5, r1, 0 | r5 = r1 - 0;
0x00065d9c it ne |
| if (r5 == r1) {
0x00065d9e movne r5, 1 | r5 = 1;
| }
0x00065da0 cmp r1, r0 |
0x00065da2 it ne |
| if (r1 == r0) {
0x00065da4 movne r5, 0 | r5 = 0;
| }
| if (r5 != 0) {
0x00065da6 cbnz r5, 0x65dd2 | goto label_6;
| }
0x00065da8 cmp r1, r0 |
| if (r1 != r0) {
0x00065daa bne 0x65db8 | goto label_5;
| }
0x00065dac ldr r2, [pc, 0x50] |
0x00065dae add r2, pc | r2 = 0xcbbb2;
0x00065db0 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x00065db4 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00065db6 b 0x65d26 |
| }
| label_5:
0x00065db8 mvn r0, 0x15 | r0 = ~0x15;
0x00065dbc b 0x65d26 | goto label_0;
| label_2:
0x00065dbe ldr r1, [pc, 0x44] |
0x00065dc0 movs r2, 0x22 | r2 = 0x22;
0x00065dc2 ldr r3, [pc, 0x44] |
0x00065dc4 ldr r0, [pc, 0x44] |
0x00065dc6 add r1, pc | r1 = 0xcbbd0;
0x00065dc8 add r3, pc | r3 = 0xcbbd6;
0x00065dca adds r1, 7 | r1 += 7;
0x00065dcc add r0, pc | r0 = 0xcbbdc;
0x00065dce bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00065dd0 invalid |
| label_6:
0x00065dd2 ldrb r1, [r4, 1]! | r1 = *((r4 += 1));
0x00065dd6 ldrb r0, [r2, 1]! | r0 = *((r2 += 1));
0x00065dda b 0x65d92 | goto label_1;
| label_4:
0x00065ddc blx 0x927c | fprintf_chk ()
0x00065de0 cmp r5, 0xc4 |
0x00065de2 movs r6, r0 | r6 = r0;
0x00065de4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00065de6 movs r0, r0 |
0x00065de8 cmp r5, 0x9a |
0x00065dea movs r6, r0 | r6 = r0;
0x00065dec stm r4!, {r1, r2, r4} | *(r4!) = r1;
| *((r4! + 4)) = r2;
| *((r4! + 8)) = r4;
0x00065dee movs r3, r0 | r3 = r0;
0x00065df0 stm r4!, {r2, r3} | *(r4!) = r2;
| *((r4! + 4)) = r3;
0x00065df2 movs r3, r0 | r3 = r0;
0x00065df4 stm r4!, {r1} | *(r4!) = r1;
0x00065df6 movs r3, r0 | r3 = r0;
0x00065df8 asrs r2, r3, 0x20 | r2 = r3 >> 0x20;
0x00065dfa movs r6, r0 | r6 = r0;
0x00065dfc stm r4!, {r2, r3, r4, r6, r7} | *(r4!) = r2;
| *((r4! + 4)) = r3;
| *((r4! + 8)) = r4;
| *((r4! + 12)) = r6;
| *((r4! + 16)) = r7;
0x00065dfe movs r3, r0 | r3 = r0;
0x00065e00 lsrs r2, r4, 0x1f | r2 = r4 >> 0x1f;
0x00065e02 movs r6, r0 | r6 = r0;
0x00065e04 bkpt 0x62 | __asm ("bkpt 0x62");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x65e10 */
| #include <stdint.h>
|
; (fcn) fcn.00065e10 () | void fcn_00065e10 () {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
0x00065e10 blmi 0xef86fc | __asm ("blmi aav.0x00062cae");
0x00065e14 ldr r0, [pc, 0xd0] |
0x00065e16 add r2, pc | r2 += pc;
0x00065e18 push {r4, r5, r6, r7, lr} |
0x00065e1a ldr r5, [pc, 0xd0] | r5 = *(0x65eee);
0x00065e1c sub sp, 0x14 |
0x00065e1e movs r4, 0 | r4 = 0;
0x00065e20 add r0, pc | r0 = 0xcbd0c;
0x00065e22 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00065e24 ldr r3, [r3] | r3 = *(r3);
0x00065e26 str r3, [sp, 0xc] | var_ch = r3;
0x00065e28 mov.w r3, 0 | r3 = 0;
0x00065e2c strd r4, r4, [sp, 4] | __asm ("strd r4, r4, [var_4h]");
0x00065e2e add r1, r0 | r1 += r0;
0x00065e30 blx 0x9240 | nl_langinfo (r0);
0x00065e34 ldrb r6, [r5, r0] | r6 = *((r5 + r0));
0x00065e36 mov r7, r0 | r7 = r0;
| if (r6 != 0) {
0x00065e38 cbz r6, 0x65e5e |
0x00065e3a ldr r3, [pc, 0xb4] | r3 = *(0x65ef2);
0x00065e3c mov r0, r4 | r0 = r4;
0x00065e3e ldr r4, [r3, r7] | r4 = *(0x65ef2);
| label_0:
0x00065e40 blx 0x8dac | fcn_00008dac ();
0x00065e44 ldr r2, [pc, 0xb8] |
0x00065e46 ldr r3, [pc, 0xb4] | r3 = *(0x65efe);
0x00065e48 add r2, pc | r2 = 0xcbd4c;
0x00065e4a ldr r3, [r2, r3] | r3 = imp.__progname;
0x00065e4c ldr r2, [r3] | r2 = imp.__progname;
0x00065e4e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00065e50 eors r2, r3 | r2 ^= r3;
0x00065e52 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00065e56 bne 0x65ee4 | goto label_3;
| }
0x00065e58 mov r0, r4 | r0 = r4;
0x00065e5a add sp, 0x14 |
0x00065e5c pop {r4, r5, r6, r7, pc} |
| }
0x00065e5e ldr r0, [pc, 0xa4] |
0x00065e60 add r1, sp, 4 | r1 += var_4h;
0x00065e62 add r0, pc | r0 = 0xcbd6c;
0x00065e64 bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x00065e68 cmp r0, 0 |
| if (r0 >= 0) {
0x00065e6a blt 0x65e7a |
0x00065e6c ldr r0, [sp, 4] | r0 = var_4h;
0x00065e6e add r2, sp, 8 | r2 += var_8h;
0x00065e70 mov r1, r6 | r1 = r6;
0x00065e72 bl 0x7444c | r0 = fcn_0007444c (r0, r1, r2);
0x00065e76 cmp r0, 0 |
| if (r0 >= 0) {
0x00065e78 bge 0x65ed0 | goto label_4;
| }
| }
0x00065e7a movs r1, 0x28 | r1 = 0x28;
0x00065e7c movs r0, 0x17 | r0 = 0x17;
0x00065e7e str r1, [sp, 8] | var_8h = r1;
0x00065e80 blx 0x93bc | r0 = fcn_000093bc ();
0x00065e84 cmp r0, 0 |
0x00065e86 ldr r4, [sp, 8] | r4 = var_8h;
| if (r0 >= 0) {
0x00065e88 bge 0x65e9e | goto label_5;
| }
0x00065e8a b 0x65ec6 | goto label_6;
| do {
0x00065e8c adds r1, r4, 1 | r1 = r4 + 1;
0x00065e8e movs r0, 0x17 | r0 = 0x17;
0x00065e90 blx 0x93bc | r0 = fcn_000093bc ();
0x00065e94 cmp r0, 0 |
0x00065e96 ldr r4, [sp, 8] | r4 = var_8h;
| if (r0 < 0) {
0x00065e98 blt 0x65ea2 | goto label_2;
| }
0x00065e9a adds r4, 1 | r4++;
0x00065e9c str r4, [sp, 8] | var_8h = r4;
| label_5:
0x00065e9e cmp r4, 0x3e |
0x00065ea0 bls 0x65e8c |
| } while (r4 < 0x3e);
| do {
| label_2:
0x00065ea2 ldr r0, [pc, 0x50] |
0x00065ea4 add r0, pc | r0 = 0xcbd9e;
0x00065ea6 blx 0x9240 | nl_langinfo (r0);
0x00065ea8 strd r4, sl, [ip, 0x44] | __asm ("strd r4, sl, [ip, 0x44]");
0x00065eaa ldr r2, [pc, 0x44] | r2 = *(0x65ef2);
0x00065eac mov r3, r0 | r3 = r0;
0x00065eae ldr r0, [sp, 4] | r0 = var_4h;
0x00065eb0 str r4, [r2, r3] | *((r2 + r3)) = r4;
0x00065eb2 movs r2, 1 | r2 = 1;
0x00065eb4 strb r2, [r5, r3] | *((r5 + r3)) = r2;
0x00065eb6 b 0x65e40 | goto label_0;
| label_1:
0x00065eb8 mov r1, r4 | r1 = r4;
0x00065eba movs r0, 0x17 | r0 = 0x17;
0x00065ebc blx 0x93bc | r0 = fcn_000093bc ();
0x00065ec0 cmp r0, 0 |
0x00065ec2 ldr r4, [sp, 8] | r4 = var_8h;
0x00065ec4 bge 0x65ea2 |
| } while (r0 >= 0);
| label_6:
0x00065ec6 subs r4, 1 | r4--;
0x00065ec8 str r4, [sp, 8] | var_8h = r4;
0x00065eca cmp r4, 0 |
| if (r4 != 0) {
0x00065ecc bne 0x65eb8 | goto label_1;
| }
0x00065ece b 0x65ea2 | goto label_2;
| label_4:
0x00065ed0 ldr r4, [sp, 8] | r4 = var_8h;
0x00065ed2 movs r2, 1 | r2 = 1;
0x00065ed4 ldr r3, [pc, 0x18] | r3 = *(0x65ef0);
0x00065ed6 ldr r0, [sp, 4] | r0 = var_4h;
0x00065ed8 cmp r4, 0x3f |
0x00065eda strb r2, [r5, r7] | *((r5 + r7)) = r2;
0x00065edc it hs |
| if (r4 < 0x3f) {
0x00065ede movhs r4, 0x3f | r4 = 0x3f;
| }
0x00065ee0 str r4, [r3, r7] | *((r3 + r7)) = r4;
0x00065ee2 b 0x65e40 | goto label_0;
| label_3:
0x00065ee4 blx 0x927c | fprintf_chk ()
0x00065ee8 adds r0, 0xfc | r0 += 0xfc;
0x00065eea movs r6, r0 | r6 = r0;
0x00065eec lsls r0, r4, 1 | r0 = r4 << 1;
0x00065eee movs r0, r0 |
0x00065ef0 lsls r4, r3, 1 | r4 = r3 << 1;
0x00065ef2 movs r0, r0 |
0x00065ef4 adds r0, 0x78 | r0 += 0x78;
0x00065ef6 movs r6, r0 | r6 = r0;
0x00065ef8 cmp r4, 0xae |
0x00065efa movs r6, r0 | r6 = r0;
0x00065efc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00065efe movs r0, r0 |
0x00065f00 cmp r4, 0x7c |
0x00065f02 movs r6, r0 | r6 = r0;
0x00065f04 stm r5!, {r1, r3} | *(r5!) = r1;
| *((r5! + 4)) = r3;
0x00065f06 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x65f08 */
| #include <stdint.h>
|
; (fcn) fcn.00065f08 () | void fcn_00065f08 (int16_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
0x00065f08 blmi 0xa787ac | __asm ("blmi aav.0x00062bb4");
0x00065f0c push {r4, r5, r6, r7, lr} |
0x00065f0e sub sp, 0xc |
0x00065f10 add r2, pc | r2 += pc;
0x00065f12 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00065f14 ldr r3, [r3] | r3 = *(r3);
0x00065f16 str r3, [sp, 4] | var_4h_2 = r3;
0x00065f18 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00065f1c cbz r0, 0x65f7a | goto label_1;
| }
0x00065f1e mov r5, r1 | r5 = r1;
0x00065f20 cmp r1, 0 |
| if (r1 == 0) {
0x00065f22 beq 0x65f8e | goto label_2;
| }
0x00065f24 mov r4, r0 | r4 = r0;
0x00065f26 movs r7, 0 | r7 = 0;
0x00065f28 blx 0x9628 | fcn_00009628 ();
0x00065f2c ldr r1, [pc, 0x80] |
0x00065f2e mov r6, r0 | r6 = r0;
0x00065f30 str r7, [r0] | *(r0) = r7;
0x00065f32 mov r2, sp | r2 = sp;
0x00065f34 mov r0, r4 | r0 = r4;
0x00065f36 add r1, pc | r1 = 0xcbeea;
0x00065f38 blx 0x8ad8 | clock_gettime ();
0x00065f3a stcl p8, c2, [lr, 4] | __asm ("stcl p8, c2, [lr, 4]");
| if (r7 != 0) {
0x00065f3e bne 0x65f5e | goto label_3;
| }
0x00065f40 ldr r3, [sp] | r3 = *(sp);
| if (r3 == 0) {
0x00065f42 cbz r3, 0x65f70 | goto label_4;
| }
0x00065f44 str r3, [r5] | *(r5) = r3;
| do {
| label_0:
0x00065f46 ldr r2, [pc, 0x6c] |
0x00065f48 ldr r3, [pc, 0x60] | r3 = *(0x65fac);
0x00065f4a add r2, pc | r2 = 0xcbf04;
0x00065f4c ldr r3, [r2, r3] | r3 = imp.__progname;
0x00065f4e ldr r2, [r3] | r2 = imp.__progname;
0x00065f50 ldr r3, [sp, 4] | r3 = var_4h_2;
0x00065f52 eors r2, r3 | r2 ^= r3;
0x00065f54 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00065f58 bne 0x65fa2 | goto label_5;
| }
0x00065f5a add sp, 0xc |
0x00065f5c pop {r4, r5, r6, r7, pc} |
| label_3:
0x00065f5e mov r0, r4 | r0 = r4;
0x00065f60 blx 0x8fe4 | r0 = fcn_00008fe4 ();
| if (r0 != 0) {
0x00065f64 cbnz r0, 0x65f76 | goto label_6;
| }
0x00065f66 ldr r0, [r6] | r0 = *(r6);
0x00065f68 cmp r0, r7 |
0x00065f6a it gt |
| if (r0 > r7) {
0x00065f6c rsbgt r0, r0, 0 | __asm ("rsbgt r0, r0, 0");
| }
0x00065f6e bgt 0x65f46 |
| } while (r0 > r7);
| label_4:
0x00065f70 mvn r0, 4 | r0 = ~4;
0x00065f74 b 0x65f46 | goto label_0;
| label_6:
0x00065f76 mov r0, r7 | r0 = r7;
0x00065f78 b 0x65f46 | goto label_0;
| label_1:
0x00065f7a ldr r1, [pc, 0x3c] |
0x00065f7c movs r2, 0x47 | r2 = 0x47;
0x00065f7e ldr r3, [pc, 0x3c] |
0x00065f80 ldr r0, [pc, 0x3c] |
0x00065f82 add r1, pc | r1 = 0xcbf40;
0x00065f84 add r3, pc | r3 = 0xcbf46;
0x00065f86 adds r1, 7 | r1 += 7;
0x00065f88 add r0, pc | r0 = 0xcbf4c;
0x00065f8a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00065f8c invalid |
| label_2:
0x00065f8e ldr r1, [pc, 0x34] |
0x00065f90 movs r2, 0x48 | r2 = 0x48;
0x00065f92 ldr r3, [pc, 0x34] |
0x00065f94 ldr r0, [pc, 0x34] |
0x00065f96 add r1, pc | r1 = 0xcbf60;
0x00065f98 add r3, pc | r3 = 0xcbf66;
0x00065f9a adds r1, 7 | r1 += 7;
0x00065f9c add r0, pc | r0 = 0xcbf6c;
0x00065f9e bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00065fa2 blx 0x927c | fprintf_chk ()
0x00065fa6 nop |
0x00065fa8 cmp r3, 0xb4 |
0x00065faa movs r6, r0 | r6 = r0;
0x00065fac lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00065fae movs r0, r0 |
0x00065fb0 ldcl p0, c0, [r2], -8 | __asm ("ldcl p0, c0, [r2], -8");
0x00065fb2 movs r2, r0 | r2 = r0;
0x00065fb4 cmp r3, 0x7a |
0x00065fb6 movs r6, r0 | r6 = r0;
0x00065fb8 stm r4!, {r1, r3} | *(r4!) = r1;
| *((r4! + 4)) = r3;
0x00065fba movs r3, r0 | r3 = r0;
0x00065fbc ldm r2!, {r4, r5, r6, r7} | r4 = *(r2!);
| r5 = *((r2! + 4));
| r6 = *((r2! + 8));
| r7 = *((r2! + 12));
0x00065fbe movs r3, r0 | r3 = r0;
0x00065fc0 add r8, r3 | r8 += r3;
0x00065fc2 movs r2, r0 | r2 = r0;
0x00065fc4 stm r3!, {r1, r2, r4, r5, r6, r7} | *(r3!) = r1;
| *((r3! + 4)) = r2;
| *((r3! + 8)) = r4;
| *((r3! + 12)) = r5;
| *((r3! + 16)) = r6;
| *((r3! + 20)) = r7;
0x00065fc6 movs r3, r0 | r3 = r0;
0x00065fc8 ldm r2, {r2, r3, r4, r6, r7} | r2 = *(r2);
| r3 = *((r2 + 4));
| r4 = *((r2 + 8));
| r6 = *((r2 + 12));
| r7 = *((r2 + 16));
0x00065fca movs r3, r0 | r3 = r0;
0x00065fcc stm r4!, {r4} | *(r4!) = r4;
0x00065fce movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x66098 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00066098 () | void fcn_00066098 (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x00066098 blmi 0xcf8964 | __asm ("blmi aav.0x00062a24");
0x0006609c push {r4, r5, r6, r7, lr} |
0x0006609e sub sp, 0xc |
0x000660a0 add r2, pc | r2 += pc;
0x000660a2 add r7, sp, 0 | r7 += var_0h;
0x000660a4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000660a6 ldr r3, [r3] | r3 = *(r3);
0x000660a8 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x000660aa mov.w r3, 0 | r3 = 0;
0x000660ae cmp r0, 0 |
| if (var_0h == ) {
0x000660b0 beq 0x66124 | goto label_1;
| }
0x000660b2 mov r5, r1 | r5 = r1;
0x000660b4 cmp r1, 0 |
| if (r1 == 0) {
0x000660b6 beq 0x6613a | goto label_2;
| }
0x000660b8 ldr r1, [pc, 0xac] |
0x000660ba mov r4, r0 | r4 = r0;
0x000660bc add r1, pc | r1 = 0xcc228;
0x000660be blx 0x9488 | r0 = fcn_00009488 ();
0x000660c2 cmp r0, 2 |
0x000660c4 mov r1, r0 | r1 = r0;
| if (r0 < 2) {
0x000660c6 bls 0x66150 | goto label_3;
| }
0x000660c8 mov r0, r4 | r0 = r4;
0x000660ca movs r6, 0 | r6 = 0;
0x000660cc blx 0x92c8 | r0 = fcn_000092c8 ();
0x000660d0 add.w r3, r0, 8 | r3 = r0 + 8;
0x000660d4 mov r1, r4 | r1 = r4;
0x000660d6 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000660da mov r2, r0 | r2 = r0;
0x000660dc sub.w sp, sp, r3 |
0x000660e0 mov r3, sp | r3 = sp;
0x000660e2 lsrs r3, r3, 3 | r3 >>= 3;
0x000660e4 strb.w r6, [r0, r3, lsl 3] | offset_0 = r3 << 3;
| *((r0 + offset_0)) = r6;
0x000660e8 mov r0, sp | r0 = sp;
0x000660ea blx 0x8f9c | fcn_00008f9c ();
0x000660ee bl 0x66068 | fcn_00066068 (r0);
0x000660f2 movs r1, 5 | r1 = 5;
0x000660f4 mov r4, r0 | r4 = r0;
0x000660f6 bl 0x7d37c | fcn_0007d37c (r0, r1);
0x000660f8 vst2.16 {d27, d28, d29, d30}, [r1], r8 | __asm ("vst2.16 {d27, d28, d29, d30}, [r1], r8");
0x000660fc mov r0, r4 | r0 = r4;
0x000660fe blx 0x9200 | r0 = fcn_00009200 ();
0x00066102 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x00066104 cbz r0, 0x6615a | goto label_4;
| }
0x00066106 mov r0, r6 | r0 = r6;
0x00066108 str r3, [r5] | *(r5) = r3;
| do {
| label_0:
0x0006610a ldr r2, [pc, 0x60] |
0x0006610c ldr r3, [pc, 0x54] | r3 = *(0x66164);
0x0006610e add r2, pc | r2 = 0xcc280;
0x00066110 ldr r3, [r2, r3] | r3 = imp.__progname;
0x00066112 ldr r2, [r3] | r2 = imp.__progname;
0x00066114 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00066116 eors r2, r3 | r2 ^= r3;
0x00066118 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006611c bne 0x66156 | goto label_5;
| }
0x0006611e adds r7, 0xc | r7 += 0xc;
0x00066120 mov sp, r7 |
0x00066122 pop {r4, r5, r6, r7, pc} |
| label_1:
0x00066124 ldr r1, [pc, 0x48] |
0x00066126 movw r2, 0x437 | r2 = 0x437;
0x0006612a ldr r3, [pc, 0x48] |
0x0006612c ldr r0, [pc, 0x48] |
0x0006612e add r1, pc | r1 = 0xcc2a2;
0x00066130 add r3, pc | r3 = 0xcc2aa;
0x00066132 adds r1, 7 | r1 += 7;
0x00066134 add r0, pc | r0 = 0xcc2b0;
0x00066136 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x0006613a ldr r1, [pc, 0x40] |
0x0006613c mov.w r2, 0x438 | r2 = 0x438;
0x00066140 ldr r3, [pc, 0x3c] |
0x00066142 ldr r0, [pc, 0x40] |
0x00066144 add r1, pc | r1 = 0xcc2c6;
0x00066146 add r3, pc | r3 = 0xcc2ca;
0x00066148 adds r1, 7 | r1 += 7;
0x0006614a add r0, pc | r0 = 0xcc2d4;
0x0006614c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00066150 mvn r0, 5 | r0 = ~5;
0x00066154 b 0x6610a |
| } while (1);
| label_5:
0x00066156 blx 0x927c | fprintf_chk ()
| label_4:
0x0006615a mvn r0, 0xb | r0 = ~0xb;
0x0006615e b 0x6610a | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x66188 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00066188 () | void fcn_00066188 (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h_3;
| int8_t var_0h_4;
| int16_t var_0h;
| int32_t var_4h;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
0x00066188 ldr r2, [pc, 0x8c] |
0x0006618a cmp r0, 0 |
0x0006618c it ne |
| if (r0 != 0) {
0x0006618e cmpne r1, 6 | __asm ("cmpne r1, 6");
| }
0x00066190 ldr r3, [pc, 0x88] | r3 = *(0x6621c);
0x00066192 push.w {r4, r5, r6, r7, r8, lr} |
0x00066196 sub sp, 8 |
0x00066198 add r2, pc | r2 = 0xcc3b4;
0x0006619a add r7, sp, 0 | r7 += var_0h;
0x0006619c it ls |
| if (r0 > 0) {
0x0006619e movls r6, 1 | r6 = 1;
| }
0x000661a0 ldr r3, [r2, r3] |
0x000661a2 ite hi |
| if (r0 <= 0) {
0x000661a4 movhi r6, 0 | r6 = 0;
| }
| if (r0 > 0) {
0x000661a6 movls r6, 0 | r6 = 0;
| }
0x000661a8 ldr r3, [r3] | r3 = imp.__progname;
0x000661aa str r3, [r7, 4] | var_4h = r3;
0x000661ac mov.w r3, 0 | r3 = 0;
| if (r0 < 0) {
0x000661b0 bls 0x661c6 | goto label_0;
| }
0x000661b2 mov r5, r0 | r5 = r0;
0x000661b4 mov r4, r1 | r4 = r1;
0x000661b6 subs r0, r1, 6 | r0 = r1 - 6;
0x000661b8 ldr r1, [pc, 0x64] |
0x000661ba movs r2, 6 | r2 = 6;
0x000661bc add r0, r5 | r0 += r5;
0x000661be add r1, pc | r1 = 0xcc3e2;
0x000661c0 blx 0x8a78 | r0 = getauxval ();
0x000661c4 cbz r0, 0x661e4 |
| while (1) {
| label_0:
0x000661c6 ldr r2, [pc, 0x5c] |
0x000661c8 ldr r3, [pc, 0x50] | r3 = *(0x6621c);
0x000661ca add r2, pc | r2 = 0xcc3f4;
0x000661cc ldr r3, [r2, r3] | r3 = imp.__progname;
0x000661ce ldr r2, [r3] | r2 = imp.__progname;
0x000661d0 ldr r3, [r7, 4] | r3 = var_4h;
0x000661d2 eors r2, r3 | r2 ^= r3;
0x000661d4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000661d8 bne 0x66212 | goto label_1;
| }
0x000661da mov r0, r6 | r0 = r6;
0x000661dc adds r7, 8 | r7 += 8;
0x000661de mov sp, r7 |
0x000661e0 pop.w {r4, r5, r6, r7, r8, pc} |
0x000661e4 add.w r3, r4, 8 | r3 = r4 + 8;
0x000661e8 mov r8, sp | r8 = sp;
0x000661ea bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000661ee mov r2, r4 | r2 = r4;
0x000661f0 sub.w sp, sp, r3 |
0x000661f4 mov r1, r5 | r1 = r5;
0x000661f6 mov r0, sp | r0 = sp;
0x000661f8 blx 0x8f9c | fcn_00008f9c ();
0x000661fa cdp p8, 0xd, c15, c0, c13, 0 | __asm ("cdp p8, 0xd, c15, c0, c13, 0");
0x000661fe str r4, [r0] | *(r0) = r4;
0x00066200 mov r0, sp | r0 = sp;
0x00066202 bl 0x66068 | fcn_00066068 (r0);
0x00066206 movs r1, 1 | r1 = 1;
0x00066208 bl 0x7d37c | fcn_0007d37c (r0, r1);
0x0006620a ldrh.w r4, [r8, 0x606] | r4 = *((r8 + 0x606));
0x0006620c mov r6, r0 | r6 = r0;
0x0006620e mov sp, r8 |
0x00066210 b 0x661c6 |
| }
| label_1:
0x00066212 blx 0x927c | fprintf_chk ()
0x00066216 nop |
0x00066218 cmp r1, 0x2c |
0x0006621a movs r6, r0 | r6 = r0;
0x0006621c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006621e movs r0, r0 |
0x00066220 stm r2!, {r1, r3, r4, r6} | *(r2!) = r1;
| *((r2! + 4)) = r3;
| *((r2! + 8)) = r4;
| *((r2! + 12)) = r6;
0x00066222 movs r3, r0 | r3 = r0;
0x00066224 cmp r0, 0xfa |
0x00066226 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x66280 */
| #include <stdint.h>
|
; (fcn) fcn.00066280 () | void fcn_00066280 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00066280 invalid |
0x00066284 ldr r1, [pc, 0x90] |
0x00066286 sub sp, 8 |
0x00066288 movs r3, 0 | r3 = 0;
0x0006628a ldr r2, [pc, 0x90] | r2 = *(0x6631e);
0x0006628c add r1, pc | r1 = 0xcc5a8;
0x0006628e ldr r2, [r1, r2] |
0x00066290 ldr r2, [r2] | r2 = imp.__progname;
0x00066292 str r2, [sp, 4] | var_4h = r2;
0x00066294 mov.w r2, 0 | r2 = 0;
0x00066298 str r3, [sp] | *(sp) = r3;
| if (r0 == 0) {
0x0006629a cbz r0, 0x662e0 | goto label_0;
| }
| if (r5 == 0) {
0x0006629c cbz r5, 0x662f6 | goto label_1;
| }
0x0006629e bl 0x66228 | fcn_00066228 (r0);
0x000662a2 mov r1, sp | r1 = sp;
0x000662a4 bl 0x66098 | r0 = fcn_00066098 (r0, r1);
0x000662a8 subs r4, r0, 0 | r4 = r0 - 0;
0x000662aa it lt |
| if (r4 >= r0) {
0x000662ac ldrlt r0, [sp] | r0 = *(sp);
| }
| if (r4 < r0) {
0x000662ae blt 0x662c2 | goto label_2;
| }
0x000662b0 ldr r6, [sp] | r6 = *(sp);
0x000662b2 ldr r1, [pc, 0x6c] |
0x000662b4 mov r0, r6 | r0 = r6;
0x000662b6 add r1, pc | r1 = 0xcc5dc;
0x000662b8 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
| if (r0 != 0) {
0x000662bc cbnz r0, 0x6630c | goto label_3;
| }
0x000662be mov r4, r0 | r4 = r0;
0x000662c0 str r6, [r5] | *(r5) = r6;
| do {
| label_2:
0x000662c2 blx 0x8dac | fcn_00008dac ();
0x000662c6 ldr r2, [pc, 0x5c] |
0x000662c8 ldr r3, [pc, 0x50] | r3 = *(0x6631c);
0x000662ca add r2, pc | r2 = 0xcc5f4;
0x000662cc ldr r3, [r2, r3] | r3 = imp.__progname;
0x000662ce ldr r2, [r3] | r2 = imp.__progname;
0x000662d0 ldr r3, [sp, 4] | r3 = var_4h;
0x000662d2 eors r2, r3 | r2 ^= r3;
0x000662d4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000662d8 bne 0x66314 | goto label_4;
| }
0x000662da mov r0, r4 | r0 = r4;
0x000662dc add sp, 8 |
0x000662de pop {r4, r5, r6, pc} |
| label_0:
0x000662e0 ldr r1, [pc, 0x44] |
0x000662e2 movw r2, 0x479 | r2 = 0x479;
0x000662e6 ldr r3, [pc, 0x44] |
0x000662e8 ldr r0, [pc, 0x44] |
0x000662ea add r1, pc | r1 = 0xcc616;
0x000662ec add r3, pc | r3 = 0xcc61e;
0x000662ee adds r1, 7 | r1 += 7;
0x000662f0 add r0, pc | r0 = 0xcc624;
0x000662f2 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_1:
0x000662f6 ldr r1, [pc, 0x3c] |
0x000662f8 movw r2, 0x47a | r2 = 0x47a;
0x000662fa rsbs r2, r7, 0 | r2 = r7 - ;
0x000662fc ldr r3, [pc, 0x38] |
0x000662fe ldr r0, [pc, 0x3c] |
0x00066300 add r1, pc | r1 = 0xcc63a;
0x00066302 add r3, pc | r3 = 0xcc63e;
0x00066304 adds r1, 7 | r1 += 7;
0x00066306 add r0, pc | r0 = 0xcc648;
0x00066308 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0006630c mov r0, r6 | r0 = r6;
0x0006630e mvn r4, 5 | r4 = ~5;
0x00066312 b 0x662c2 |
| } while (1);
| label_4:
0x00066314 blx 0x927c | r0 = fprintf_chk ()
0x00066318 cmp r0, 0x38 |
0x0006631a movs r6, r0 | r6 = r0;
0x0006631c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006631e movs r0, r0 |
0x00066320 stm r1!, {r1, r5, r6} | *(r1!) = r1;
| *((r1! + 4)) = r5;
| *((r1! + 8)) = r6;
0x00066322 movs r3, r0 | r3 = r0;
0x00066324 movs r7, 0xfa | r7 = 0xfa;
0x00066326 movs r6, r0 | r6 = r0;
0x00066328 stm r0!, {r1, r5, r7} | *(r0!) = r1;
| *((r0! + 4)) = r5;
| *((r0! + 8)) = r7;
0x0006632a movs r3, r0 | r3 = r0;
0x0006632c stm r6!, {r4, r5, r7} | *(r6!) = r4;
| *((r6! + 4)) = r5;
| *((r6! + 8)) = r7;
0x0006632e movs r3, r0 | r3 = r0;
0x00066330 strb r0, [r6, 0x10] | *((r6 + 0x10)) = r0;
0x00066332 movs r3, r0 | r3 = r0;
0x00066334 stm r0!, {r2, r3, r7} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r7;
0x00066336 movs r3, r0 | r3 = r0;
0x00066338 stm r6!, {r1, r3, r4, r7} | *(r6!) = r1;
| *((r6! + 4)) = r3;
| *((r6! + 8)) = r4;
| *((r6! + 12)) = r7;
0x0006633a movs r3, r0 | r3 = r0;
0x0006633c b 0x6659c | return void (*0x6659c)() ();
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x663f4).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6650c */
| #include <stdint.h>
|
; (fcn) fcn.0006650c () | void fcn_0006650c (uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_6ch;
| r0 = arg1;
0x0006650c blmi 0xfeff9008 | __asm ("blmi aav.0x000625b0");
0x00066510 push {r4, r5, r6, r7, lr} |
0x00066512 sub sp, 0x74 |
0x00066514 add r2, pc | r2 += pc;
0x00066516 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00066518 ldr r3, [r3] | r3 = *(r3);
0x0006651a str r3, [sp, 0x6c] | var_6ch = r3;
0x0006651c mov.w r3, 0 | r3 = 0;
0x0006651e lsls r0, r0, 0xc | r0 <<= 0xc;
0x00066520 cmp r0, 0 |
| if (r0 == 0) {
0x00066522 beq 0x66590 | goto label_10;
| }
0x00066524 ldr r0, [pc, 0x2bc] |
0x00066526 ldr r4, [pc, 0x2c0] | r4 = *(0x667ea);
0x00066528 add r0, pc | r0 = 0xccd10;
0x0006652a blx 0x9240 | nl_langinfo (r0);
0x0006652e mov.w r3, -1 | r3 = -1;
0x00066532 str r3, [r4, r0] | *((r4 + r0)) = r3;
| do {
0x00066534 ldr r0, [pc, 0x2d4] |
0x00066536 add r7, sp, 0x10 | r7 += var_10h;
0x00066538 mov r1, r7 | r1 = r7;
0x0006653a add r0, pc | r0 = 0xccd4a;
0x0006653c blx 0x8a44 | r0 = fcn_00008a44 ();
0x00066540 cmp r0, 0 |
| if (r0 < 0) {
0x00066542 blt 0x665a2 | goto label_11;
| }
0x00066544 ldr r5, [sp, 0x10] | r5 = var_10h;
0x00066546 movw r6, 0x7270 |
0x0006654a movt r6, 0x6367 | r6 = 0x63677270;
0x0006654e cmp r5, r6 |
| if (r5 == r6) {
0x00066550 beq 0x665c6 | goto label_12;
| }
0x00066552 movw r3, 0x1994 |
0x00066556 movt r3, 0x102 | r3 = 0x1021994;
0x0006655a cmp r5, r3 |
| if (r5 == r3) {
0x0006655c beq 0x6665a | goto label_13;
| }
0x0006655e bl 0x70bf8 | fcn_00070bf8 ();
0x00066562 movw r3, 0x6572 |
0x00066566 movt r3, 0x6265 | r3 = 0x62656572;
0x0006656a cmp r5, r3 |
| if (r5 == r3) {
0x0006656c beq 0x6662e | goto label_14;
| }
0x0006656e cmp r0, 6 |
| if (r0 > 6) {
0x00066570 bgt 0x66600 | goto label_15;
| }
| label_2:
0x00066572 mvn r0, 0x7a | r0 = ~0x7a;
| label_0:
0x00066576 ldr r2, [pc, 0x298] |
0x00066578 ldr r3, [pc, 0x28c] | r3 = *(0x66808);
0x0006657a add r2, pc | r2 = 0xccd90;
0x0006657c ldr r3, [r2, r3] | r3 = imp.__progname;
0x0006657e ldr r2, [r3] | r2 = imp.__progname;
0x00066580 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00066582 eors r2, r3 | r2 ^= r3;
0x00066584 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00066588 bne.w 0x667b8 | goto label_16;
| }
0x0006658c add sp, 0x74 |
0x0006658e pop {r4, r5, r6, r7, pc} |
| label_10:
0x00066590 ldr r0, [pc, 0x258] |
0x00066592 ldr r4, [pc, 0x254] | r4 = *(0x667ea);
0x00066594 add r0, pc | r0 = 0xccd84;
0x00066596 blx 0x9240 | nl_langinfo (r0);
0x0006659a ldr r0, [r4, r0] | r0 = *(0x667ea);
0x0006659c cmp r0, 0 |
0x0006659e blt 0x66534 |
| } while (r0 < 0);
0x000665a0 b 0x66576 | goto label_0;
| label_11:
0x000665a2 blx 0x9628 | r0 = fcn_00009628 ();
0x000665a6 ldr r4, [r0] | r4 = *(r0);
0x000665a8 bl 0x70bf8 | fcn_00070bf8 ();
0x000665aa smlad r8, r6, r6, r2 | __asm ("smlad r8, r6, r6, r2");
| if (r0 > 0) {
0x000665ae bgt 0x665e0 | goto label_17;
| }
| label_5:
0x000665b0 eor.w r0, r4, r4, asr 31 | r0 = r4 ^ (r4 >> 31);
0x000665b4 sub.w r0, r0, r4, asr 31 | r0 -= (r4 >> 31);
0x000665b8 uxtb r0, r0 | r0 = (int8_t) r0;
0x000665ba rsbs r0, r0, 0 | r0 -= ;
| label_1:
0x000665bc cmp r0, 0 |
| if (r0 < 0) {
0x000665be blt 0x66576 | goto label_0;
| }
| do {
| label_3:
0x000665c0 mvn r0, 0x55 | r0 = ~0x55;
0x000665c4 b 0x66576 | goto label_0;
| label_12:
0x000665c6 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000665ca cmp r0, 6 |
| if (r0 > 6) {
0x000665cc bgt 0x666b0 | goto label_18;
| }
| label_4:
0x000665ce ldr r0, [pc, 0x220] |
0x000665d0 add r0, pc | r0 = 0xccdc6;
0x000665d2 blx 0x9240 | nl_langinfo (r0);
0x000665d4 cdp p3, 3, c2, c6, c2, 0 | __asm ("cdp p3, 3, c2, c6, c2, 0");
0x000665d8 mov r2, r0 | r2 = r0;
0x000665da str r3, [r4, r2] | *((r4 + r2)) = r3;
0x000665dc mov r0, r3 | r0 = r3;
0x000665de b 0x66576 | goto label_0;
| label_17:
0x000665e0 ldr r2, [pc, 0x230] |
0x000665e2 movw r3, 0x7fc | r3 = 0x7fc;
0x000665e6 ldr r5, [pc, 0x230] |
0x000665e8 ldr r0, [pc, 0x230] |
0x000665ea add r2, pc | r2 = 0xcce02;
0x000665ec add r5, pc | r5 = 0xcce0a;
0x000665ee add r0, pc | r0 = 0xcce0e;
| label_6:
0x000665f0 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x000665f4 mov r1, r4 | r1 = r4;
0x000665f6 adds r2, 7 | r2 += 7;
0x000665f8 movs r0, 7 | r0 = 7;
0x000665fa bl 0x71448 | fcn_00071448 ();
0x000665fe b 0x665bc | goto label_1;
| label_15:
0x00066600 ldr r2, [pc, 0x21c] |
0x00066602 asrs r6, r5, 0x1f | r6 = r5 >> 0x1f;
0x00066604 ldr r0, [pc, 0x21c] |
0x00066606 movs r1, 0x7b | r1 = 0x7b;
0x00066608 ldr r4, [pc, 0x21c] |
0x0006660a movw r3, 0x822 | r3 = 0x822;
0x0006660c lsls r2, r4, 0xc | r2 = r4 << 0xc;
0x0006660e add r2, pc | r2 = 0xcce32;
0x00066610 movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00066614 add r0, pc | r0 = 0xcce3c;
0x00066616 adds r2, 7 | r2 += 7;
0x00066618 add r4, pc | r4 = 0xcce44;
0x0006661a str r0, [sp, 4] | var_4h = r0;
0x0006661c str r5, [sp, 8] | var_8h = r5;
0x0006661e movs r0, 7 | r0 = 7;
0x00066620 str r6, [sp, 0xc] | var_ch = r6;
0x00066622 str r4, [sp] | *(sp) = r4;
0x00066624 bl 0x71448 | r0 = fcn_00071448 ();
0x00066628 cmp r0, 0 |
0x0006662a bge 0x665c0 |
| } while (r0 >= 0);
0x0006662c b 0x66576 | goto label_0;
| label_14:
0x0006662e cmp r0, 6 |
| if (r0 <= 6) {
0x00066630 ble 0x66572 | goto label_2;
| }
0x00066632 ldr r2, [pc, 0x1f8] |
0x00066634 movs r1, 0x7b | r1 = 0x7b;
0x00066636 ldr r0, [pc, 0x1f8] |
0x00066638 movw r3, 0x81f | r3 = 0x81f;
0x0006663c ldr r4, [pc, 0x1f4] |
0x0006663e movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00066642 add r2, pc | r2 = 0xcce74;
0x00066644 add r0, pc | r0 = 0xcce7a;
0x00066646 adds r2, 7 | r2 += 7;
0x00066648 add r4, pc | r4 = 0xcce80;
0x0006664a str r0, [sp, 4] | var_4h = r0;
0x0006664c str r4, [sp] | *(sp) = r4;
0x0006664e movs r0, 7 | r0 = 7;
0x00066650 bl 0x71448 | fcn_00071448 ();
0x00066652 cdp2 p8, 0xf, c2, c10, c0, 0 | __asm ("cdp2 p8, 0xf, c2, c10, c0, 0");
| if (r0 >= 7) {
0x00066656 bge 0x665c0 | goto label_3;
| }
0x00066658 b 0x66576 | goto label_0;
| label_13:
0x0006665a ldr r0, [pc, 0x1dc] |
0x0006665c mov r1, r7 | r1 = r7;
0x0006665e add r0, pc | r0 = 0xcce9c;
0x00066660 blx 0x8a44 | r0 = fcn_00008a44 ();
0x00066664 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00066666 cbnz r0, 0x6666e |
0x00066668 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006666a cmp r3, r6 |
| if (r3 == r6) {
0x0006666c beq 0x666f6 | goto label_19;
| }
| }
0x0006666e ldr r0, [pc, 0x1cc] |
0x00066670 mov r1, r7 | r1 = r7;
0x00066672 add r0, pc | r0 = 0xcceb4;
0x00066674 blx 0x8a44 | r0 = fcn_00008a44 ();
0x00066678 cmp r0, 0 |
| if (r0 >= 0) {
0x0006667a blt 0x666d0 |
0x0006667c ldr r5, [sp, 0x10] | r5 = var_10h;
0x0006667e bl 0x70bf8 | fcn_00070bf8 ();
0x00066682 movw r3, 0x7270 |
0x00066686 movt r3, 0x6367 | r3 = 0x63677270;
0x0006668a cmp r5, r3 |
| if (r5 == r3) {
0x0006668c beq 0x66714 | goto label_20;
| }
0x0006668e movw r3, 0xe0eb |
0x00066692 movt r3, 0x27 | r3 = 0x27e0eb;
0x00066696 cmp r5, r3 |
| if (r5 == r3) {
0x00066698 beq 0x6672e | goto label_21;
| }
0x0006669a cmp r0, 6 |
| if (r0 > 6) {
0x0006669c bgt 0x66772 | goto label_22;
| }
| label_7:
0x0006669e ldr r0, [pc, 0x154] |
0x000666a0 add r0, pc | r0 = 0xcce9a;
0x000666a2 blx 0x9240 | nl_langinfo (r0);
0x000666a6 movs r2, 0 | r2 = 0;
0x000666a8 mov r3, r0 | r3 = r0;
0x000666aa str r2, [r4, r3] | *((r4 + r3)) = r2;
0x000666ac mov r0, r2 | r0 = r2;
0x000666ae b 0x66576 | goto label_0;
| label_18:
0x000666b0 ldr r2, [pc, 0x18c] |
0x000666b2 movw r3, 0x7ff | r3 = 0x7ff;
0x000666b6 ldr r0, [pc, 0x18c] |
0x000666b8 ldr r1, [pc, 0x18c] |
0x000666ba add r2, pc | r2 = 0xccefe;
0x000666bc add r0, pc | r0 = 0xccf06;
0x000666be adds r2, 7 | r2 += 7;
0x000666c0 add r1, pc | r1 = 0xccf0c;
0x000666c2 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x000666c6 movs r1, 0 | r1 = 0;
0x000666c8 movs r0, 7 | r0 = 7;
0x000666ca bl 0x71448 | fcn_00071448 ();
0x000666ce b 0x665ce | goto label_4;
| }
0x000666d0 blx 0x9628 | r0 = fcn_00009628 ();
0x000666d4 ldr r4, [r0] | r4 = *(r0);
0x000666d6 bl 0x70bf8 | fcn_00070bf8 ();
0x000666da cmp r4, 2 |
| if (r4 == 2) {
0x000666dc beq 0x667bc | goto label_23;
| }
0x000666de cmp r0, 6 |
| if (r0 <= 6) {
0x000666e0 ble.w 0x665b0 | goto label_5;
| }
0x000666e4 ldr r2, [pc, 0x164] |
0x000666e6 movw r3, 0x80e | r3 = 0x80e;
0x000666e8 lsls r6, r1, 0xc | r6 = r1 << 0xc;
0x000666ea ldr r5, [pc, 0x164] |
0x000666ec ldr r0, [pc, 0x164] |
0x000666ee add r2, pc | r2 = 0xccf3e;
0x000666f0 add r5, pc | r5 = 0xccf46;
0x000666f2 add r0, pc | r0 = 0xccf4a;
0x000666f4 b 0x665f0 | goto label_6;
| label_19:
0x000666f6 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000666fa cmp r0, 6 |
| if (r0 > 6) {
0x000666fc bgt 0x66752 | goto label_24;
| }
| label_8:
0x000666fe ldr r0, [pc, 0xf8] |
0x00066700 add r0, pc | r0 = 0xccefe;
0x00066702 blx 0x9240 | nl_langinfo (r0);
0x00066706 ldr r2, [pc, 0xf4] | r2 = *(0x667fe);
0x00066708 mov r3, r0 | r3 = r0;
0x0006670a movs r1, 0 | r1 = 0;
0x0006670c movs r0, 1 | r0 = 1;
0x0006670e str r0, [r4, r3] | *((r4 + r3)) = r0;
0x00066710 strb r1, [r2, r3] | *((r2 + r3)) = r1;
0x00066712 b 0x66576 | goto label_0;
| label_20:
0x00066714 cmp r0, 6 |
| if (r0 > 6) {
0x00066716 bgt 0x66798 | goto label_25;
| }
| label_9:
0x00066718 ldr r0, [pc, 0xe4] |
0x0006671a add r0, pc | r0 = 0xccf1e;
0x0006671c blx 0x9240 | nl_langinfo (r0);
0x00066720 ldr r1, [pc, 0xd8] | r1 = *(0x667fc);
0x00066722 movs r2, 1 | r2 = 1;
0x00066724 mov r3, r0 | r3 = r0;
0x00066726 mov r0, r2 | r0 = r2;
0x00066728 str r2, [r4, r3] | *((r4 + r3)) = r2;
0x0006672a strb r2, [r1, r3] | *((r1 + r3)) = r2;
0x0006672c b 0x66576 | goto label_0;
| label_21:
0x0006672e cmp r0, 6 |
| if (r0 <= 6) {
0x00066730 ble 0x6669e | goto label_7;
| }
0x00066732 ldr r2, [pc, 0x124] |
0x00066734 movw r3, 0x816 | r3 = 0x816;
0x00066738 ldr r0, [pc, 0x120] |
0x0006673a ldr r1, [pc, 0x124] |
0x0006673c add r2, pc | r2 = 0xccf9a;
0x0006673e add r0, pc | r0 = 0xccf9e;
0x00066740 adds r2, 7 | r2 += 7;
0x00066742 add r1, pc | r1 = 0xccfa8;
0x00066744 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x00066746 asrs r0, r0, 0x20 | r0 >>= 0x20;
0x00066748 movs r1, 0 | r1 = 0;
0x0006674a movs r0, 7 | r0 = 7;
0x0006674c bl 0x71448 | fcn_00071448 ();
0x00066750 b 0x6669e | goto label_7;
| label_24:
0x00066752 ldr r2, [pc, 0x110] |
0x00066754 mov r1, r5 | r1 = r5;
0x00066756 ldr r0, [pc, 0x110] |
0x00066758 ldr r3, [pc, 0x110] |
0x0006675a add r2, pc | r2 = 0xccfc4;
0x0006675c add r0, pc | r0 = 0xccfca;
0x0006675e adds r2, 7 | r2 += 7;
0x00066760 add r3, pc | r3 = 0xccfd0;
0x00066762 strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x00066766 movw r3, 0x804 | r3 = 0x804;
0x0006676a movs r0, 7 | r0 = 7;
0x0006676c bl 0x71448 | fcn_00071448 ();
0x00066770 b 0x666fe | goto label_8;
| label_22:
0x00066772 ldr r2, [pc, 0xfc] |
0x00066774 asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x00066776 ldr r0, [pc, 0xfc] |
0x00066778 ldr r1, [pc, 0xfc] |
0x0006677a add r2, pc | r2 = 0xccff0;
0x0006677c str r3, [sp, 0xc] | var_ch = r3;
0x0006677e add r0, pc | r0 = 0xccff8;
0x00066780 adds r2, 7 | r2 += 7;
0x00066782 add r1, pc | r1 = 0xccffe;
0x00066784 movw r3, 0x819 | r3 = 0x819;
0x00066788 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0006678c movs r1, 0 | r1 = 0;
0x0006678e str r5, [sp, 8] | var_8h = r5;
0x00066790 movs r0, 7 | r0 = 7;
0x00066792 bl 0x71448 | fcn_00071448 ();
0x00066796 b 0x6669e | goto label_7;
| label_25:
0x00066798 ldr r2, [pc, 0xe0] |
0x0006679a movw r3, 0x812 | r3 = 0x812;
0x0006679e ldr r0, [pc, 0xe0] |
0x000667a0 ldr r1, [pc, 0xe0] |
0x000667a2 add r2, pc | r2 = 0xcd022;
0x000667a4 add r0, pc | r0 = 0xcd02a;
0x000667a6 adds r2, 7 | r2 += 7;
0x000667a8 add r1, pc | r1 = 0xcd030;
0x000667aa strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x000667ae movs r1, 0 | r1 = 0;
0x000667b0 movs r0, 7 | r0 = 7;
0x000667b2 bl 0x71448 | fcn_00071448 ();
0x000667b6 b 0x66718 | goto label_9;
| label_16:
0x000667b8 blx 0x927c | r0 = fprintf_chk ()
| label_23:
0x000667bc cmp r0, 6 |
| if (r0 <= 6) {
0x000667be ble.w 0x66572 | goto label_2;
| }
0x000667c2 ldr r2, [pc, 0xc4] |
0x000667c4 movw r3, 0x80b | r3 = 0x80b;
0x000667c8 ldr r5, [pc, 0xc0] |
0x000667ca mov r1, r4 | r1 = r4;
0x000667cc ldr r0, [pc, 0xc0] |
0x000667ce add r2, pc | r2 = 0xcd05c;
0x000667d0 add r5, pc | r5 = 0xcd060;
0x000667d2 adds r2, 7 | r2 += 7;
0x000667d4 add r0, pc | r0 = 0xcd068;
0x000667d6 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x000667da movs r0, 7 | r0 = 7;
0x000667dc bl 0x71448 | fcn_00071448 ();
0x000667e0 b 0x66572 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x668c8 */
| #include <stdint.h>
|
; (fcn) fcn.000668c8 () | void fcn_000668c8 (uint32_t arg1, int16_t arg2, uint32_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h_3;
| int16_t var_8h_2;
| int16_t var_2h;
| int32_t var_bh;
| int16_t var_fh;
| int8_t var_11h;
| int16_t var_8h;
| int32_t var_4h_2;
| int32_t var_ch;
| int32_t var_10h;
| int16_t var_14h;
| int32_t var_14h_2;
| int32_t var_1ch;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000668c8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000668cc sub sp, 0x2c |
0x000668ce ldr r5, [pc, 0x208] |
0x000668d0 subs.w r8, r1, 0 | r8 = r1 - 0;
0x000668d4 add r7, sp, 8 | r7 += var_8h;
0x000668d6 ldr r4, [pc, 0x204] | r4 = *(0x66ade);
0x000668d8 mov.w r3, 0 | r3 = 0;
0x000668da lsls r0, r0, 0xc | r0 <<= 0xc;
0x000668dc add r5, pc | r5 = 0xcd3ba;
0x000668de ldr r4, [r5, r4] |
0x000668e0 ldr r4, [r4] | r4 = imp.__progname;
0x000668e2 str r4, [r7, 0x1c] | var_1ch = r4;
0x000668e4 mov.w r4, 0 | r4 = 0;
0x000668e6 lsls r0, r0, 0x10 | r0 <<= 0x10;
0x000668e8 str r3, [r7, 0xc] | var_ch = r3;
| if (r0 < r0) {
0x000668ea blt.w 0x66a74 | goto label_4;
| }
0x000668ee mov r6, r2 | r6 = r2;
0x000668f0 cmp r2, 0 |
| if (r2 == 0) {
0x000668f2 beq.w 0x66a8a | goto label_5;
| }
0x000668f6 mov r4, r0 | r4 = r0;
0x000668f8 cmp r0, 0 |
| if (r0 == 0) {
0x000668fa beq.w 0x66a6a | goto label_6;
| }
0x000668fe bl 0x664a8 | r0 = fcn_000664a8 (r0);
0x00066902 cmp r0, 0 |
| if (r0 == 0) {
0x00066904 beq.w 0x66ac0 | goto label_7;
| }
| label_1:
0x00066908 mov r0, r4 | r0 = r4;
0x0006690a bl 0x66894 | r0 = fcn_00066894 (r0);
0x0006690e subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00066910 blt 0x669da | goto label_2;
| }
0x00066912 it ne |
| if (r5 == r0) {
0x00066914 movne r4, 0 | r4 = 0;
| }
| if (r5 == r0) {
0x00066916 bne 0x66928 |
0x00066918 ldr r1, [pc, 0x1c4] |
0x0006691a mov r0, r4 | r0 = r4;
0x0006691c add r1, pc | r1 = 0xcd400;
0x0006691e blx 0x95e0 | r0 = fcn_000095e0 ();
| if (r0 != 0) {
0x00066922 cbnz r0, 0x66928 | goto label_8;
| }
0x00066924 ldr r4, [pc, 0x1bc] |
0x00066926 add r4, pc | r4 = 0xcd40e;
| }
| label_8:
0x00066928 cmp.w r8, 0 |
| if (r8 == 0) {
0x0006692c beq 0x669fe | goto label_9;
| }
0x0006692e ldr r2, [pc, 0x1b8] |
0x00066930 sub sp, 0x20 |
0x00066932 ldr r3, [pc, 0x1b8] |
0x00066934 add.w sb, sp, 8 | sb += var_8h_3;
0x00066938 movs r1, 1 | r1 = 1;
0x0006693a mov r0, sb | r0 = sb;
0x0006693c add r2, pc | r2 = 0xcd42a;
0x0006693e str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00066942 str r2, [sp, 4] | var_4h = r2;
0x00066944 add r3, pc | r3 = 0xcd436;
0x00066946 movs r2, 0x1a | r2 = 0x1a;
0x00066948 blx 0x9494 | fcn_00009494 ();
| do {
0x0006694c ldr r1, [pc, 0x1a0] |
0x0006694e add.w r2, r7, 0xc | r2 += var_ch;
0x00066952 mov r0, sb | r0 = sb;
0x00066954 add r1, pc | r1 = 0xcd448;
0x00066956 bl 0x6a520 | fcn_0006a520 (r0);
0x0006695a adds r3, r0, 2 | r3 += var_2h;
| if (r3 == var_2h) {
0x0006695c beq.w 0x66ac6 | goto label_10;
| }
0x00066960 cmp r0, 0 |
| if (r0 < 0) {
0x00066962 blt.w 0x66a70 | goto label_11;
| }
0x00066966 ldr.w fp, [pc, 0x18c] |
0x0006696a add.w sl, r7, 0x10 | sl += var_10h;
0x0006696c lsrs r0, r2, 8 | r0 = r2 >> 8;
0x0006696e ldr r3, [pc, 0x188] |
0x00066970 add fp, pc | fp = 0xcd46a;
0x00066972 add r3, pc | r3 = 0xcd470;
0x00066974 str r3, [r7, 4] | var_4h_2 = r3;
0x00066976 movs r3, 0 | r3 = 0;
0x00066978 ldr r0, [r7, 0xc] | r0 = var_ch;
0x0006697a str r3, [r7, 0x10] | var_10h = r3;
0x0006697c movs r2, 0 | r2 = 0;
0x0006697e mov r3, sl | r3 = sl;
0x00066980 mov.w r1, 0x100000 | r1 = 0x100000;
0x00066982 asrs r0, r0, 6 | r0 >>= 6;
0x00066984 bl 0x6b144 | r0 = fcn_0006b144 (r0, r1, r2, r3);
0x00066988 cmp r0, 0 |
| if (r0 < 0) {
0x0006698a blt.w 0x66ab6 | goto label_12;
| }
0x0006698e ldr.w sb, [r7, 0x10] | sb = var_10h;
| if (r0 == 0) {
0x00066992 beq.w 0x66aba | goto label_13;
| }
0x00066996 cmp r5, 0 |
| if (r5 == 0) {
0x00066998 beq 0x66a26 | goto label_14;
| }
0x0006699a mov r1, fp | r1 = fp;
0x0006699c mov r0, sb | r0 = sb;
0x0006699e bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x000669a2 cmp r0, 0 |
| if (r0 == 0) {
0x000669a4 beq 0x66a62 | goto label_15;
| }
0x000669a6 movs r1, 0x3a | r1 = 0x3a;
0x000669a8 blx 0x8bb0 | r0 = get_current_dir_name ();
0x000669ac mov r8, r0 | r8 = r0;
0x000669ae cmp r0, 0 |
| if (r0 == 0) {
0x000669b0 beq 0x66a62 | goto label_15;
| }
| label_0:
0x000669b2 add.w r0, r8, 1 | r0 = r8 + 1;
0x000669b6 blx 0x9200 | r0 = fcn_00009200 ();
0x000669ba mov r4, r0 | r4 = r0;
0x000669bc cmp r0, 0 |
| if (r0 == 0) {
0x000669be beq.w 0x66ad0 | goto label_16;
| }
0x000669c2 ldr r1, [pc, 0x138] |
0x000669c4 add r1, pc | r1 = 0xcd4c6;
0x000669c6 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
| if (r0 != 0) {
0x000669ca cbz r0, 0x669d0 |
0x000669cc movs r3, 0 | r3 = 0;
0x000669ce strb r3, [r0] | *(r0) = r3;
| }
0x000669d0 movs r5, 0 | r5 = 0;
0x000669d2 str r4, [r6] | *(r6) = r4;
| label_3:
0x000669d4 ldr r0, [r7, 0x10] | r0 = var_10h;
0x000669d6 blx 0x8dac | fcn_00008dac ();
0x000669d8 invalid |
| label_2:
0x000669da ldr r0, [r7, 0xc] | r0 = var_ch;
0x000669dc bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x000669e0 ldr r2, [pc, 0x11c] |
0x000669e2 ldr r3, [pc, 0xf8] | r3 = *(0x66ade);
0x000669e4 add r2, pc | r2 = 0xcd4e8;
0x000669e6 ldr r3, [r2, r3] | r3 = imp.__progname;
0x000669e8 ldr r2, [r3] | r2 = imp.__progname;
0x000669ea ldr r3, [r7, 0x1c] | r3 = var_1ch;
0x000669ec eors r2, r3 | r2 ^= r3;
0x000669ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000669f2 bne 0x66acc | goto label_17;
| }
0x000669f4 mov r0, r5 | r0 = r5;
0x000669f6 adds r7, 0x24 | r7 += 0x24;
0x000669f8 mov sp, r7 |
0x000669fa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x000669fe ldr r2, [pc, 0x104] |
0x00066a00 sub sp, 0x18 |
0x00066a02 ldr r3, [pc, 0x104] |
0x00066a04 add.w sb, sp, 8 | sb += var_8h_2;
0x00066a08 add r2, pc | r2 = 0xcd512;
0x00066a0a ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x00066a0c add r3, pc | r3 = 0xcd51a;
0x00066a0e stm.w sb, {r0, r1, r2} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
0x00066a12 ldr r0, [r3] | r0 = imp.__progname;
0x00066a14 ldrh r2, [r3, 4] | r2 = *((r3 + 4));
0x00066a16 ldrb r3, [r3, 6] | r3 = *((r3 + 6));
0x00066a18 str.w r0, [sb, 0xb] | __asm ("str.w r0, [var_bh]");
0x00066a1c strh.w r2, [sb, 0xf] | var_fh = r2;
0x00066a20 strb.w r3, [sb, 0x11] | var_11h = r3;
0x00066a24 b 0x6694c |
| } while (1);
| label_14:
0x00066a26 movs r1, 0x3a | r1 = 0x3a;
0x00066a28 mov r0, sb | r0 = sb;
0x00066a2a blx 0x8bb0 | r0 = get_current_dir_name ();
| if (r0 == 0) {
0x00066a2e cbz r0, 0x66a62 | goto label_15;
| }
0x00066a30 adds r2, r0, 1 | r2 = r0 + 1;
0x00066a32 movs r1, 0x3a | r1 = 0x3a;
0x00066a34 mov r0, r2 | r0 = r2;
0x00066a36 str r2, [r7] | *(r7) = r2;
0x00066a38 blx 0x8bb0 | r0 = get_current_dir_name ();
0x00066a3c mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x00066a3e cbz r0, 0x66a62 | goto label_15;
| }
0x00066a40 ldr r2, [r7] | r2 = *(r7);
0x00066a42 strb r5, [r0] | *(r0) = r5;
| if (r4 == 0) {
0x00066a44 cbz r4, 0x66aa0 | goto label_18;
| }
0x00066a46 mov r0, r2 | r0 = r2;
0x00066a48 ldr r1, [r7, 4] | r1 = var_4h_2;
0x00066a4a mov r3, r5 | r3 = r5;
0x00066a4c add.w r2, r7, 0x14 | r2 += var_14h;
0x00066a50 strd r4, r5, [r7, 0x14] | __asm ("strd r4, r5, [var_14h]");
0x00066a54 bl 0x7aec4 | r0 = fcn_0007aec4 (r0, r1, r2, r3);
0x00066a58 cmp r0, 0 |
| if (r0 < 0) {
0x00066a5a blt 0x66ab6 | goto label_12;
| }
| if (r0 != 0) {
0x00066a5c bne 0x669b2 | goto label_0;
| }
0x00066a5e ldr.w sb, [r7, 0x10] | sb = var_10h;
| label_15:
0x00066a62 mov r0, sb | r0 = sb;
0x00066a64 blx 0x8dac | fcn_00008dac ();
0x00066a66 invalid |
| label_6:
0x00066a6a ldr r4, [pc, 0xa0] |
0x00066a6c add r4, pc | r4 = 0xcd57e;
0x00066a6e b 0x66908 | goto label_1;
| label_11:
0x00066a70 mov r5, r0 | r5 = r0;
0x00066a72 b 0x669da | goto label_2;
| label_4:
0x00066a74 ldr r1, [pc, 0x98] |
0x00066a76 movw r2, 0x29a | r2 = 0x29a;
0x00066a7a ldr r3, [pc, 0x98] |
0x00066a7c ldr r0, [pc, 0x98] |
0x00066a7e add r1, pc | r1 = 0xcd592;
0x00066a80 add r3, pc | r3 = 0xcd59a;
0x00066a82 adds r1, 7 | r1 += 7;
0x00066a84 add r0, pc | r0 = 0xcd5a0;
0x00066a86 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00066a88 invalid |
| label_5:
0x00066a8a ldr r1, [pc, 0x90] |
0x00066a8c movw r2, 0x29b | r2 = 0x29b;
0x00066a90 ldr r3, [pc, 0x8c] |
0x00066a92 ldr r0, [pc, 0x90] |
0x00066a94 add r1, pc | r1 = 0xcd5b6;
0x00066a96 add r3, pc | r3 = 0xcd5ba;
0x00066a98 adds r1, 7 | r1 += 7;
0x00066a9a add r0, pc | r0 = 0xcd5c4;
0x00066a9c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_18:
0x00066aa0 ldr r1, [pc, 0x84] |
0x00066aa2 movw r2, 0x2d3 | r2 = 0x2d3;
0x00066aa6 ldr r3, [pc, 0x84] |
0x00066aa8 ldr r0, [pc, 0x84] |
0x00066aaa add r1, pc | r1 = 0xcd5d6;
0x00066aac add r3, pc | r3 = 0xcd5de;
0x00066aae adds r1, 7 | r1 += 7;
0x00066ab0 add r0, pc | r0 = 0xcd5e4;
0x00066ab2 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_12:
0x00066ab6 mov r5, r0 | r5 = r0;
0x00066ab8 b 0x669d4 | goto label_3;
| label_13:
0x00066aba mvn r5, 0x3c | r5 = ~0x3c;
0x00066abe b 0x669d4 | goto label_3;
| label_7:
0x00066ac0 mvn r5, 0x15 | r5 = ~0x15;
0x00066ac4 b 0x669da | goto label_2;
| label_10:
0x00066ac6 mvn r5, 2 | r5 = ~2;
0x00066aca b 0x669da | goto label_2;
| label_17:
0x00066acc blx 0x927c | fprintf_chk ()
| label_16:
0x00066ad0 mvn r5, 0xb | r5 = ~0xb;
0x00066ad4 b 0x669d4 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x66b34 */
| #include <stdint.h>
|
; (fcn) fcn.00066b34 () | void fcn_00066b34 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00066b34 ldr r2, [pc, 0x8c] |
0x00066b36 ldr r3, [pc, 0x90] | r3 = *(0x66bca);
0x00066b38 push {r4, r5, lr} |
0x00066b3a sub sp, 0xc |
0x00066b3c add r2, pc | r2 = 0xcd704;
0x00066b3e ldr r3, [r2, r3] |
0x00066b40 ldr r3, [r3] | r3 = imp.__progname;
0x00066b42 str r3, [sp, 4] | var_4h = r3;
0x00066b44 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00066b48 cbz r0, 0x66baa | goto label_2;
| }
0x00066b4a mov r4, r0 | r4 = r0;
0x00066b4c ldr r0, [pc, 0x7c] |
0x00066b4e mov r2, sp | r2 = sp;
0x00066b50 movs r1, 1 | r1 = 1;
0x00066b52 add r0, pc | r0 = 0xcd722;
0x00066b54 bl 0x668c8 | r0 = fcn_000668c8 (r0, r1, r2);
0x00066b58 cmp r0, 0 |
| if (r0 < 0) {
0x00066b5a blt 0x66b74 | goto label_3;
| }
0x00066b5c ldr r5, [sp] | r5 = *(sp);
0x00066b5e ldr r1, [pc, 0x70] |
0x00066b60 mov r0, r5 | r0 = r5;
0x00066b62 add r1, pc | r1 = 0xcd738;
0x00066b64 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x00066b68 cbz r0, 0x66b8c |
| while (r0 != 0) {
| label_1:
0x00066b6a movs r3, 0 | r3 = 0;
0x00066b6c strb r3, [r0] | *(r0) = r3;
0x00066b6e ldr r5, [sp] | r5 = *(sp);
| label_0:
0x00066b70 movs r0, 0 | r0 = 0;
0x00066b72 str r5, [r4] | *(r4) = r5;
| label_3:
0x00066b74 ldr r2, [pc, 0x5c] |
0x00066b76 ldr r3, [pc, 0x50] | r3 = *(0x66bca);
0x00066b78 add r2, pc | r2 = 0xcd750;
0x00066b7a ldr r3, [r2, r3] | r3 = imp.__progname;
0x00066b7c ldr r2, [r3] | r2 = imp.__progname;
0x00066b7e ldr r3, [sp, 4] | r3 = var_4h;
0x00066b80 eors r2, r3 | r2 ^= r3;
0x00066b82 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00066b86 bne 0x66bc0 | goto label_4;
| }
0x00066b88 add sp, 0xc |
0x00066b8a pop {r4, r5, pc} |
0x00066b8c ldr r1, [pc, 0x48] |
0x00066b8e mov r0, r5 | r0 = r5;
0x00066b90 add r1, pc | r1 = 0xcd76c;
0x00066b92 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x00066b96 cmp r0, 0 |
0x00066b98 bne 0x66b6a |
| }
0x00066b9a ldr r1, [pc, 0x40] |
0x00066b9c mov r0, r5 | r0 = r5;
0x00066b9e add r1, pc | r1 = 0xcd780;
0x00066ba0 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x00066ba4 cmp r0, 0 |
| if (r0 == 0) {
0x00066ba6 beq 0x66b70 | goto label_0;
| }
0x00066ba8 b 0x66b6a | goto label_1;
| label_2:
0x00066baa ldr r1, [pc, 0x34] |
0x00066bac movw r2, 0x3e6 | r2 = 0x3e6;
0x00066bb0 ldr r3, [pc, 0x30] |
0x00066bb2 ldr r0, [pc, 0x34] |
0x00066bb4 add r1, pc | r1 = 0xcd79a;
0x00066bb6 add r3, pc | r3 = 0xcd79e;
0x00066bb8 adds r1, 7 | r1 += 7;
0x00066bba add r0, pc | r0 = 0xcd7a8;
0x00066bbc bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00066bc0 blx 0x927c | fprintf_chk ()
0x00066bc4 subs r0, r1, 6 | r0 = r1 - 6;
0x00066bc6 movs r6, r0 | r6 = r0;
0x00066bc8 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00066bca movs r0, r0 |
| if (r0 <= r0) {
0x00066bcc bgt 0x66bdc |
0x00066bce movs r1, r0 | r1 = r0;
0x00066bd0 pop {r1, r3, r5, r6} |
0x00066bd2 movs r3, r0 | r3 = r0;
0x00066bd4 subs r4, r1, 5 | r4 = r1 - 5;
0x00066bd6 movs r6, r0 | r6 = r0;
0x00066bd8 pop {r3, r6} |
0x00066bda movs r3, r0 | r3 = r0;
| }
0x00066bdc pop {r1, r3, r6} |
0x00066bde movs r3, r0 | r3 = r0;
0x00066be0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x66bec */
| #include <stdint.h>
|
; (fcn) fcn.00066bec () | void fcn_00066bec (int16_t arg1, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r2 = arg3;
0x00066bec push {r4, r5, r6, lr} |
0x00066bee mov r4, r0 | r4 = r0;
0x00066bf0 ldr r0, [pc, 0x9c] |
0x00066bf2 mov r5, r2 | r5 = r2;
0x00066bf4 sub sp, 8 |
0x00066bf6 movs r3, 0 | r3 = 0;
0x00066bf8 ldr r2, [pc, 0x98] | r2 = *(0x66c94);
0x00066bfa add r0, pc | r0 = 0xcd88e;
0x00066bfc ldr r2, [r0, r2] |
0x00066bfe ldr r2, [r2] | r2 = *(0xcd88e);
0x00066c00 str r2, [sp, 4] | var_4h = r2;
0x00066c02 mov.w r2, 0 | r2 = 0;
0x00066c06 str r3, [sp] | *(sp) = r3;
| if (r4 == 0) {
0x00066c08 cbz r4, 0x66c5e | goto label_1;
| }
0x00066c0a cmp r5, 0 |
| if (r5 == 0) {
0x00066c0c beq 0x66c74 | goto label_2;
| }
| if (r1 == 0) {
0x00066c0e cbz r1, 0x66c50 | goto label_3;
| }
| label_0:
0x00066c10 movs r2, 1 | r2 = 1;
0x00066c12 mov r0, r4 | r0 = r4;
0x00066c14 bl 0x75208 | r0 = fcn_00075208 (r0, r1, r2);
0x00066c18 cmp r0, 0 |
0x00066c1a it ne |
| if (r0 != 0) {
0x00066c1c cmpne r4, r0 | __asm ("cmpne r4, r0");
| }
0x00066c1e itett lo |
| if (r0 >= 0) {
0x00066c20 movlo r6, 1 | r6 = 1;
| }
| if (r0 < 0) {
0x00066c22 movhs r6, 0 | r6 = 0;
| }
| if (r0 >= 0) {
0x00066c24 movlo r6, 0 | r6 = 0;
| }
| if (r0 >= 0) {
0x00066c26 addlo r0, r0, -1 | r0 += -1;
| }
0x00066c2a ite lo |
| if (r0 >= 0) {
0x00066c2c strlo r0, [r5] | *(r5) = r0;
| }
0x00066c2e strhs r4, [r5] | *(r5) = r4;
| while (r6 < var_0h) {
0x00066c30 ldr r0, [sp] | r0 = *(sp);
0x00066c32 blx 0x8dac | fcn_00008dac ();
0x00066c36 ldr r2, [pc, 0x60] |
0x00066c38 ldr r3, [pc, 0x58] | r3 = *(0x66c94);
0x00066c3a add r2, pc | r2 = 0xcd8d8;
0x00066c3c ldr r3, [r2, r3] | r3 = *(0xcd8d8);
0x00066c3e ldr r2, [r3] | r2 = *(0xcd8d8);
0x00066c40 ldr r3, [sp, 4] | r3 = var_4h;
0x00066c42 eors r2, r3 | r2 ^= r3;
0x00066c44 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00066c48 bne 0x66c8a | goto label_4;
| }
0x00066c4a mov r0, r6 | r0 = r6;
0x00066c4c add sp, 8 |
0x00066c4e pop {r4, r5, r6, pc} |
| label_3:
0x00066c50 mov r0, sp | r0 = sp;
0x00066c52 bl 0x66b34 | fcn_00066b34 (r0);
0x00066c56 subs r6, r0, 0 | r6 -= var_0h;
0x00066c58 blt 0x66c30 |
| }
0x00066c5a ldr r1, [sp] | r1 = *(sp);
0x00066c5c b 0x66c10 | goto label_0;
| label_1:
0x00066c5e ldr r1, [pc, 0x3c] |
0x00066c60 movw r2, 0x3fd | r2 = 0x3fd;
0x00066c64 ldr r3, [pc, 0x38] |
0x00066c66 ldr r0, [pc, 0x3c] |
0x00066c68 add r1, pc | r1 = 0xcd90a;
0x00066c6a add r3, pc | r3 = 0xcd90e;
0x00066c6c adds r1, 7 | r1 += 7;
0x00066c6e add r0, pc | r0 = 0xcd918;
0x00066c70 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00066c74 ldr r1, [pc, 0x30] |
0x00066c76 movw r2, 0x3fe | r2 = 0x3fe;
0x00066c7a ldr r3, [pc, 0x30] |
0x00066c7c ldr r0, [pc, 0x30] |
0x00066c7e add r1, pc | r1 = 0xcd92a;
0x00066c80 add r3, pc | r3 = 0xcd932;
0x00066c82 adds r1, 7 | r1 += 7;
0x00066c84 add r0, pc | r0 = 0xcd938;
0x00066c86 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00066c8a blx 0x927c | fprintf_chk ()
0x00066c8e nop |
0x00066c90 subs r2, r1, 3 | r2 = r1 - 3;
0x00066c92 movs r6, r0 | r6 = r0;
0x00066c94 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00066c96 movs r0, r0 |
0x00066c98 subs r2, r1, 2 | r2 = r1 - 2;
0x00066c9a movs r6, r0 | r6 = r0;
0x00066c9c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x66cb4 */
| #include <stdint.h>
|
; (fcn) fcn.00066cb4 () | void fcn_00066cb4 (int16_t arg1, int16_t arg2, uint32_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00066cb4 invalid |
0x00066cb8 ldr r4, [pc, 0xb0] |
0x00066cba subs r1, r0, 0 | r1 = r0 - 0;
0x00066cbc sub sp, 0x14 |
0x00066cbe mov.w r6, 0 | r6 = 0;
0x00066cc2 ldr r3, [pc, 0xac] | r3 = *(0x66d72);
0x00066cc4 add r4, pc | r4 = 0xcda34;
0x00066cc6 ldr r3, [r4, r3] |
0x00066cc8 ldr r3, [r3] | r3 = *(0xcda34);
0x00066cca str r3, [sp, 0xc] | var_ch = r3;
0x00066ccc mov.w r3, 0 | r3 = 0;
0x00066cd0 str r6, [sp, 4] | var_4h = r6;
| if (r1 < r0) {
0x00066cd2 blt 0x66d34 | goto label_1;
| }
0x00066cd4 mov r5, r2 | r5 = r2;
0x00066cd6 cmp r2, 0 |
| if (r2 == 0) {
0x00066cd8 beq 0x66d4a | goto label_2;
| }
0x00066cda ldr r0, [pc, 0x98] |
0x00066cdc add r2, sp, 4 | r2 += var_4h;
0x00066cde add r0, pc | r0 = 0xcda58;
0x00066ce0 bl 0x668c8 | r0 = fcn_000668c8 (r0, r1, r2);
0x00066ce4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00066ce6 blt 0x66d0a |
0x00066ce8 ldr r0, [sp, 4] | r0 = var_4h;
0x00066cea add r2, sp, 8 | r2 += var_8h;
0x00066cec mov r1, r7 | r1 = r7;
0x00066cee bl 0x66bec | r0 = fcn_00066bec (r0, r1);
0x00066cf2 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00066cf4 blt 0x66d0a |
0x00066cf6 ldrd r7, r0, [sp, 4] | __asm ("ldrd r7, r0, [var_4h]");
0x00066cfa cmp r0, r7 |
| if (r0 == r7) {
0x00066cfc beq 0x66d2c | goto label_3;
| }
0x00066cfe blx 0x9200 | r0 = fcn_00009200 ();
| if (r0 == 0) {
0x00066d02 cbz r0, 0x66d64 | goto label_4;
| }
0x00066d04 mov r4, r6 | r4 = r6;
0x00066d06 str r0, [r5] | *(r5) = r0;
0x00066d08 b 0x66d0c |
| }
| } else {
0x00066d0a ldr r7, [sp, 4] | r7 = var_4h;
| }
| do {
| label_0:
0x00066d0c mov r0, r7 | r0 = r7;
0x00066d0e blx 0x8dac | fcn_00008dac ();
0x00066d12 ldr r2, [pc, 0x64] |
0x00066d14 ldr r3, [pc, 0x58] | r3 = *(0x66d70);
0x00066d16 add r2, pc | r2 = 0xcda94;
0x00066d18 ldr r3, [r2, r3] | r3 = *(0xcda94);
0x00066d1a ldr r2, [r3] | r2 = *(0xcda94);
0x00066d1c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00066d1e eors r2, r3 | r2 ^= r3;
0x00066d20 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00066d24 bne 0x66d60 | goto label_5;
| }
0x00066d26 mov r0, r4 | r0 = r4;
0x00066d28 add sp, 0x14 |
0x00066d2a pop {r4, r5, r6, r7, pc} |
| label_3:
0x00066d2c str r7, [r5] | *(r5) = r7;
0x00066d2e mov r4, r6 | r4 = r6;
0x00066d30 mov r7, r6 | r7 = r6;
0x00066d32 b 0x66d0c |
| } while (1);
| label_1:
0x00066d34 ldr r1, [pc, 0x44] |
0x00066d36 movw r2, 0x419 | r2 = 0x419;
0x00066d38 tst r1, r3 |
0x00066d3a ldr r3, [pc, 0x44] |
0x00066d3c ldr r0, [pc, 0x44] |
0x00066d3e add r1, pc | r1 = 0xcdabe;
0x00066d40 add r3, pc | r3 = 0xcdac6;
0x00066d42 adds r1, 7 | r1 += 7;
0x00066d44 add r0, pc | r0 = 0xcdacc;
0x00066d46 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00066d4a ldr r1, [pc, 0x3c] |
0x00066d4c movw r2, 0x41a | r2 = 0x41a;
0x00066d50 ldr r3, [pc, 0x38] |
0x00066d52 ldr r0, [pc, 0x3c] |
0x00066d54 add r1, pc | r1 = 0xcdae2;
0x00066d56 add r3, pc | r3 = 0xcdae6;
0x00066d58 adds r1, 7 | r1 += 7;
0x00066d5a add r0, pc | r0 = 0xcdaf0;
0x00066d5c bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00066d60 blx 0x927c | fprintf_chk ()
| label_4:
0x00066d64 mvn r4, 0xb | r4 = ~0xb;
0x00066d68 b 0x66d0c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x66d94 */
| #include <stdint.h>
|
; (fcn) fcn.00066d94 () | void fcn_00066d94 (int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r1 = arg2;
0x00066d94 ldr r2, [pc, 0x68] |
0x00066d96 ldr r3, [pc, 0x6c] | r3 = *(0x66e06);
0x00066d98 push {r4, r5, lr} |
0x00066d9a mov r5, r1 | r5 = r1;
0x00066d9c add r2, pc | r2 = 0xcdba0;
0x00066d9e sub sp, 0xc |
0x00066da0 movs r1, 0 | r1 = 0;
0x00066da2 ldr r3, [r2, r3] |
0x00066da4 ldr r3, [r3] | r3 = *(0xcdba0);
0x00066da6 str r3, [sp, 4] | var_4h = r3;
0x00066da8 mov.w r3, 0 | r3 = 0;
0x00066dac str r1, [sp] | *(sp) = r1;
| if (r5 != 0) {
0x00066dae cbz r5, 0x66de4 |
0x00066db0 mov r2, sp | r2 = sp;
0x00066db2 bl 0x66cb4 | r0 = fcn_00066cb4 (r0, r1, r2);
0x00066db6 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00066db8 blt 0x66dc4 |
0x00066dba ldr r0, [sp] | r0 = *(sp);
0x00066dbc mov r1, r5 | r1 = r5;
0x00066dbe bl 0x66280 | r0 = fcn_00066280 (r0, r1);
0x00066dc2 mov r4, r0 | r4 = r0;
| }
0x00066dc4 ldr r0, [sp] | r0 = *(sp);
0x00066dc6 blx 0x8dac | fcn_00008dac ();
0x00066dca ldr r2, [pc, 0x3c] |
0x00066dcc ldr r3, [pc, 0x34] | r3 = *(0x66e04);
0x00066dce add r2, pc | r2 = 0xcdbdc;
0x00066dd0 ldr r3, [r2, r3] | r3 = *(0xcdbdc);
0x00066dd2 ldr r2, [r3] | r2 = *(0xcdbdc);
0x00066dd4 ldr r3, [sp, 4] | r3 = var_4h;
0x00066dd6 eors r2, r3 | r2 ^= r3;
0x00066dd8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00066ddc bne 0x66dfa | goto label_0;
| }
0x00066dde mov r0, r4 | r0 = r4;
0x00066de0 add sp, 0xc |
0x00066de2 pop {r4, r5, pc} |
| }
0x00066de4 ldr r1, [pc, 0x24] |
0x00066de6 movw r2, 0x48e | r2 = 0x48e;
0x00066de8 cmp r6, r1 |
0x00066dea ldr r3, [pc, 0x24] |
0x00066dec ldr r0, [pc, 0x24] |
0x00066dee add r1, pc | r1 = 0xcdbfe;
0x00066df0 add r3, pc | r3 = 0xcdc06;
0x00066df2 adds r1, 7 | r1 += 7;
0x00066df4 add r0, pc | r0 = 0xcdc0c;
0x00066df6 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_0:
0x00066dfa blx 0x927c | fprintf_chk ()
0x00066dfe nop |
0x00066e00 adds r0, r5, 4 | r0 = r5 + 4;
0x00066e02 movs r6, r0 | r6 = r0;
0x00066e04 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00066e06 movs r0, r0 |
0x00066e08 adds r6, r6, 3 | r6 += 3;
0x00066e0a movs r6, r0 | r6 = r0;
0x00066e0c push {r1, r2, r3, r4, r7, lr} |
0x00066e0e movs r3, r0 | r3 = r0;
| if (r0 != 0) {
0x00066e10 cbnz r0, 0x66e78 | void (*0x66e78)() ();
| }
0x00066e12 movs r3, r0 | r3 = r0;
0x00066e14 ldrh r4, [r0, r3] | r4 = *((r0 + r3));
0x00066e16 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x66e18 */
| #include <stdint.h>
|
; (fcn) fcn.00066e18 () | void fcn_00066e18 (int16_t arg2) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| r1 = arg2;
0x00066e18 ldr.w ip, [pc, 0x54] |
0x00066e1c ldr r3, [pc, 0x54] | r3 = *(0x66e74);
0x00066e1e push {r4, r5, lr} |
0x00066e20 movs r4, 0 | r4 = 0;
0x00066e22 add ip, pc | ip = 0xcdc96;
0x00066e24 sub sp, 0xc |
0x00066e26 mov r5, r1 | r5 = r1;
0x00066e28 mov r2, sp | r2 = sp;
0x00066e2a invalid |
0x00066e2c adds r0, 3 | r0 += 3;
0x00066e2e mov r1, r4 | r1 = r4;
0x00066e30 ldr r3, [r3] | r3 = *(r3);
0x00066e32 str r3, [sp, 4] | var_4h_2 = r3;
0x00066e34 mov.w r3, 0 | r3 = 0;
0x00066e38 str r4, [sp] | *(sp) = r4;
0x00066e3a bl 0x66cb4 | r0 = fcn_00066cb4 (r0, r1, r2);
0x00066e3e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00066e40 blt 0x66e4c |
0x00066e42 ldr r0, [sp] | r0 = *(sp);
0x00066e44 mov r1, r5 | r1 = r5;
0x00066e46 bl 0x663f4 | r0 = fcn_000663f4 (r0, r1);
0x00066e4a mov r4, r0 | r4 = r0;
| }
0x00066e4c ldr r0, [sp] | r0 = *(sp);
0x00066e4e blx 0x8dac | fcn_00008dac ();
0x00066e52 ldr r2, [pc, 0x24] |
0x00066e54 ldr r3, [pc, 0x1c] | r3 = *(0x66e74);
0x00066e56 add r2, pc | r2 = 0xcdcd4;
0x00066e58 ldr r3, [r2, r3] | r3 = *(0xcdcd4);
0x00066e5a ldr r2, [r3] | r2 = *(0xcdcd4);
0x00066e5c ldr r3, [sp, 4] | r3 = var_4h_2;
0x00066e5e eors r2, r3 | r2 ^= r3;
0x00066e60 mov.w r3, 0 | r3 = 0;
0x00066e62 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 == r0) {
0x00066e64 bne 0x66e6c |
0x00066e66 mov r0, r4 | r0 = r4;
0x00066e68 add sp, 0xc |
0x00066e6a pop {r4, r5, pc} |
| }
0x00066e6c blx 0x927c | fprintf_chk ()
0x00066e70 adds r2, r4, 2 | r2 = r4 + 2;
0x00066e72 movs r6, r0 | r6 = r0;
0x00066e74 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00066e76 movs r0, r0 |
0x00066e78 adds r6, r5, 1 | r6 = r5 + 1;
0x00066e7a movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x670c4 */
| #include <stdint.h>
|
; (fcn) fcn.000670c4 () | void fcn_000670c4 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000670c4 ssub16mi fp, r5, r0 | __asm ("ssub16mi fp, r5, r0");
0x000670c8 ldr r4, [pc, 0x74] |
0x000670ca mov r2, r3 | r2 = r3;
0x000670cc sub sp, 8 |
0x000670ce movs r6, 0 | r6 = 0;
0x000670d0 ldr r3, [pc, 0x70] | r3 = *(0x67144);
0x000670d2 add r4, pc | r4 = 0xce216;
0x000670d4 ldr r3, [r4, r3] |
0x000670d6 ldr r3, [r3] | r3 = *(0xce216);
0x000670d8 str r3, [sp, 4] | var_4h = r3;
0x000670da mov.w r3, 0 | r3 = 0;
0x000670de str r6, [sp] | *(sp) = r6;
| if (r5 == 0) {
0x000670e0 cbz r5, 0x6711c | goto label_0;
| }
0x000670e2 mov r3, sp | r3 = sp;
0x000670e4 bl 0x66f2c | r0 = fcn_00066f2c (r0, r1, r2, r3);
0x000670e8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000670ea blt 0x670fc | goto label_1;
| }
0x000670ec ldr r1, [pc, 0x58] |
0x000670ee ldr r0, [sp] | r0 = *(sp);
0x000670f0 add r1, pc | r1 = 0xce23c;
0x000670f2 blx 0x8fb4 | r0 = fcn_00008fb4 ();
| if (r0 == 0) {
0x000670f6 cbz r0, 0x67134 | goto label_2;
| }
0x000670f8 mov r4, r6 | r4 = r6;
0x000670fa str r0, [r5] | *(r5) = r0;
| do {
| label_1:
0x000670fc ldr r0, [sp] | r0 = *(sp);
0x000670fe blx 0x8dac | fcn_00008dac ();
0x00067102 ldr r2, [pc, 0x48] |
0x00067104 ldr r3, [pc, 0x3c] | r3 = *(0x67144);
0x00067106 add r2, pc | r2 = 0xce258;
0x00067108 ldr r3, [r2, r3] | r3 = *(0xce258);
0x0006710a ldr r2, [r3] | r2 = *(0xce258);
0x0006710c ldr r3, [sp, 4] | r3 = var_4h;
0x0006710e eors r2, r3 | r2 ^= r3;
0x00067110 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00067114 bne 0x67130 |
0x00067116 mov r0, r4 | r0 = r4;
0x00067118 add sp, 8 |
0x0006711a pop {r4, r5, r6, pc} |
| label_0:
0x0006711c ldr r1, [pc, 0x30] |
0x0006711e movs r2, 0x2f | r2 = 0x2f;
0x00067120 ldr r3, [pc, 0x30] |
0x00067122 ldr r0, [pc, 0x34] |
0x00067124 add r1, pc | r1 = 0xce278;
0x00067126 add r3, pc | r3 = 0xce27e;
0x00067128 adds r1, 7 | r1 += 7;
0x0006712a add r0, pc | r0 = 0xce288;
0x0006712c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x0006712e invalid |
| }
0x00067130 blx 0x927c | fprintf_chk ()
| label_2:
0x00067134 blx 0x9628 | r0 = fcn_00009628 ();
0x00067138 ldr r4, [r0] | r4 = *(r0);
0x0006713a rsbs r4, r4, 0 | r4 -= ;
0x0006713c b 0x670fc |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6715c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006715c () | void fcn_0006715c (int16_t arg_60h, int16_t arg_64h, int16_t arg_6ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int32_t var_14h_2;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006715c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00067160 sub sp, 0x3c |
0x00067162 ldr r5, [pc, 0x1bc] |
0x00067164 ldr r4, [pc, 0x1bc] | r4 = *(0x67324);
0x00067166 add r5, pc | r5 = 0xce48c;
0x00067168 ldrd r6, sl, [sp, 0x64] | __asm ("ldrd r6, sl, [arg_64h]");
0x0006716c ldr r4, [r5, r4] |
0x0006716e subs r5, r2, 0 | r5 = r2 - 0;
0x00067170 ldr r4, [r4] | r4 = *(0xce48c);
0x00067172 str r4, [sp, 0x34] | var_34h = r4;
0x00067174 mov.w r4, 0 | r4 = 0;
0x00067176 lsls r0, r0, 0x10 | r0 <<= 0x10;
0x00067178 str r3, [sp, 0x10] | var_10h = r3;
0x0006717a ldr r3, [sp, 0x6c] | r3 = *(arg_6ch);
0x0006717c ldr r4, [sp, 0x60] | r4 = *(arg_60h);
0x0006717e strd r0, r1, [sp, 0x14] | __asm ("strd r0, r1, [var_14h]");
0x00067182 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r0 < r0) {
0x00067184 blt.w 0x672e6 | goto label_10;
| }
0x00067186 strh r7, [r5, 4] | *((r5 + 4)) = r7;
0x00067188 cmp r5, 9 |
| if (r5 == 9) {
0x0006718a beq.w 0x672ca | goto label_11;
| }
0x0006718c strh r6, [r3, 4] | *((r3 + 4)) = r6;
0x0006718e cmp r5, 0x12 |
| if (r5 == 0x12) {
0x00067190 beq.w 0x672ca | goto label_11;
| }
0x00067194 cmp r4, 0 |
| if (r4 == 0) {
0x00067196 beq.w 0x672d8 | goto label_12;
| }
| label_6:
0x0006719a movs r3, 0 | r3 = 0;
0x0006719c str r3, [sp, 0x24] | var_24h = r3;
| label_7:
0x0006719e movs r7, 0 | r7 = 0;
0x000671a0 str r7, [sp, 4] | var_4h = r7;
0x000671a2 mov r8, r7 | r8 = r7;
0x000671a4 bl 0x76a30 | fcn_00076a30 (r0);
0x000671a8 add r3, sp, 0x2c | r3 += var_2ch;
0x000671aa str r0, [sp, 8] | var_8h = r0;
0x000671ac str r3, [sp, 0x20] | var_20h = r3;
0x000671ae ldr r3, [sp, 0x10] | r3 = var_10h;
0x000671b0 and fp, r3, 2 |
| label_2:
0x000671b4 movs r3, 0 | r3 = 0;
0x000671b6 ldrd r0, r1, [sp, 0x14] | __asm ("ldrd r0, r1, [var_14h]");
0x000671ba strd r3, r3, [sp, 0x2c] | __asm ("strd r3, r3, [var_2ch]");
0x000671be ldrd r3, r2, [sp, 0x1c] | __asm ("ldrd r3, r2, [var_1ch]");
0x000671c0 adds r2, 7 | r2 += 7;
0x000671c2 bl 0x670c4 | r0 = fcn_000670c4 (r0, r1, r2, r3);
0x000671c6 cmp r0, 0 |
| if (r0 < 0) {
0x000671c8 blt.w 0x672fa | goto label_13;
| }
0x000671cc movs r3, 1 | r3 = 1;
0x000671ce ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x000671d0 str r3, [sp] | *(sp) = r3;
0x000671d2 add.w sb, sp, 0x30 | sb += var_30h;
0x000671d6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000671d8 and r3, r3, 1 | r3 &= 1;
0x000671dc str r3, [sp, 0xc] | var_ch = r3;
| do {
| label_0:
0x000671de mov r1, sb | r1 = sb;
0x000671e0 mov r0, r7 | r0 = r7;
0x000671e2 bl 0x65f08 | r0 = fcn_00065f08 (r0, r1);
0x000671e6 cmp r0, 0 |
| if (r0 <= 0) {
0x000671e8 ble 0x6724e | goto label_14;
| }
| label_1:
0x000671ea ldr r1, [sp, 0x30] | r1 = var_30h;
0x000671ec cmp.w fp, 0 |
| if (fp == 0) {
0x000671f0 beq 0x671f8 | goto label_15;
| }
0x000671f2 ldr r3, [sp, 8] | r3 = var_8h;
0x000671f4 cmp r1, r3 |
0x000671f6 beq 0x671de |
| } while (r1 == r3);
| label_15:
0x000671f8 mov r0, r4 | r0 = r4;
0x000671fa bl 0x6eb7c | r0 = fcn_0006eb7c (r0, r1);
0x000671fe mov r3, r0 | r3 = r0;
0x00067200 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00067202 cmp r3, r0 |
| if (r3 == r0) {
0x00067204 beq 0x671de | goto label_0;
| }
| if (r6 != 0) {
0x00067206 cbz r6, 0x67212 |
0x00067208 mov r2, sl | r2 = sl;
0x0006720a mov r1, r5 | r1 = r5;
0x0006720c blx r6 | uint32_t (*r6)(uint32_t, uint32_t) (r1, r2);
0x0006720e str r0, [sp, 4] | var_4h = r0;
0x00067210 ldr r0, [sp, 0x30] | r0 = var_30h;
| }
0x00067212 mov r1, r5 | r1 = r5;
0x00067214 blx 0x94c4 | r0 = fcn_000094c4 ();
0x00067218 cmp r0, 0 |
| if (r0 < 0) {
0x0006721a blt 0x6726a | goto label_16;
| }
0x0006721c ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 != 0) {
0x0006721e cbnz r3, 0x67260 | goto label_17;
| }
| label_3:
0x00067220 cmp.w r8, 0 |
| if (r8 == 0) {
0x00067224 bne 0x67232 |
0x00067226 ldr r3, [sp, 4] | r3 = var_4h;
0x00067228 cmp r6, 0 |
0x0006722a ite eq |
| if (r6 != 0) {
0x0006722c moveq r8, 1 | r8 = 1;
| }
| if (r6 == 0) {
0x00067230 mov r8, r3 | r8 = r3;
| goto label_4;
| }
| }
| label_4:
0x00067232 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00067234 mov r0, r4 | r0 = r4;
0x00067236 bl 0x6ea0c | r0 = fcn_0006ea0c (r0, r1);
0x0006723a cmp r0, 0 |
| if (r0 < 0) {
0x0006723c blt 0x6728a | goto label_18;
| }
| label_5:
0x0006723e movs r3, 0 | r3 = 0;
0x00067240 mov r1, sb | r1 = sb;
0x00067242 mov r0, r7 | r0 = r7;
0x00067244 str r3, [sp] | *(sp) = r3;
0x00067246 bl 0x65f08 | r0 = fcn_00065f08 (r0, r1);
0x0006724a cmp r0, 0 |
| if (r0 > 0) {
0x0006724c bgt 0x671ea | goto label_1;
| }
| if (r0 != 0) {
| label_14:
0x0006724e bne 0x6728a | goto label_18;
| }
0x00067250 mov r0, r7 | r0 = r7;
0x00067252 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x00067256 ldr r3, [sp] | r3 = *(sp);
0x00067258 cmp r3, 0 |
| if (r3 == 0) {
0x0006725a beq 0x671b4 | goto label_2;
| }
0x0006725c mov r3, r8 | r3 = r8;
0x0006725e b 0x6729e | goto label_19;
| label_17:
0x00067260 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00067262 movs r1, 0x12 | r1 = 0x12;
0x00067264 blx 0x94c4 | fcn_000094c4 ();
0x00067268 b 0x67220 | goto label_3;
| label_16:
0x0006726a cmp.w r8, 0 |
| if (r8 < 0) {
0x0006726e blt 0x67232 | goto label_4;
| }
0x00067270 blx 0x9628 | r0 = fcn_00009628 ();
0x00067274 ldr r3, [r0] | r3 = *(r0);
0x00067276 mov r0, r4 | r0 = r4;
0x00067278 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0006727a cmp r3, 3 |
0x0006727c it ne |
| if (r3 != 3) {
0x0006727e rsbne r8, r3, 0 | __asm ("rsbne r8, r3, 0");
| }
0x00067282 bl 0x6ea0c | r0 = fcn_0006ea0c (r0, r1);
0x00067286 cmp r0, 0 |
| if (r0 >= 0) {
0x00067288 bge 0x6723e | goto label_5;
| }
| label_18:
0x0006728a mov r3, r0 | r3 = r0;
0x0006728c bics.w r3, r3, r8, asr 32 | __asm ("bics.w r3, r3, r8, asr 32");
0x00067290 it hs |
| if (r0 < 0) {
0x00067292 movhs r3, r8 | r3 = r8;
| }
| label_8:
0x00067294 mov r0, r7 | r0 = r7;
0x00067296 str r3, [sp] | *(sp) = r3;
0x00067298 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0006729c ldr r3, [sp] | r3 = *(sp);
| label_19:
0x0006729e ldr r0, [sp, 0x24] | r0 = var_24h;
| if (r0 != 0) {
0x000672a0 cbz r0, 0x672ae |
0x000672a2 movs r2, 0 | r2 = 0;
0x000672a4 str r3, [sp] | *(sp) = r3;
0x000672a6 mov r1, r2 | r1 = r2;
0x000672a8 bl 0x6eee8 | fcn_0006eee8 (r0);
0x000672ac ldr r3, [sp] | r3 = *(sp);
| }
| label_9:
0x000672ae ldr r1, [pc, 0x78] |
0x000672b0 ldr r2, [pc, 0x70] | r2 = *(0x67324);
0x000672b2 add r1, pc | r1 = 0xce5e0;
0x000672b4 ldr r2, [r1, r2] | r2 = *(0xce5e0);
0x000672b6 ldr r1, [r2] | r1 = *(0xce5e0);
0x000672b8 ldr r2, [sp, 0x34] | r2 = var_34h;
0x000672ba eors r1, r2 | r1 ^= r2;
0x000672bc mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x000672c0 bne 0x6731a | goto label_20;
| }
0x000672c2 mov r0, r3 | r0 = r3;
0x000672c4 add sp, 0x3c |
0x000672c6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x000672ca ldr r3, [sp, 0x10] | r3 = var_10h;
0x000672cc bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x000672d0 str r3, [sp, 0x10] | var_10h = r3;
0x000672d2 cmp r4, 0 |
| if (r4 != 0) {
0x000672d4 bne.w 0x6719a | goto label_6;
| }
| label_12:
0x000672d8 mov r0, r4 | r0 = r4;
0x000672da bl 0x6e828 | r0 = fcn_0006e828 ();
0x000672de mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x000672e0 cbz r0, 0x67314 |
0x000672e2 str r0, [sp, 0x24] | var_24h = r0;
0x000672e4 b 0x6719e | goto label_7;
| label_10:
0x000672e6 ldr r1, [pc, 0x44] |
0x000672e8 movs r2, 0xfa | r2 = 0xfa;
0x000672ea ldr r3, [pc, 0x44] |
0x000672ec ldr r0, [pc, 0x44] |
0x000672ee add r1, pc | r1 = 0xce620;
0x000672f0 add r3, pc | r3 = 0xce626;
0x000672f2 adds r1, 7 | r1 += 7;
0x000672f4 add r0, pc | r0 = 0xce62c;
0x000672f6 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_13:
0x000672fa mvn.w r2, r8 | r2 = ~r8;
0x000672fe adds r1, r0, 2 | r1 = r0 + 2;
0x00067300 lsr.w r2, r2, 0x1f | r2 >>= 0x1f;
0x00067304 mov r3, r0 | r3 = r0;
0x00067306 it eq |
| if (r1 != r0) {
0x00067308 moveq r2, 0 | r2 = 0;
| }
0x0006730a ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x0006730c cmp r2, 0 |
0x0006730e it eq |
| if (r2 != 0) {
0x00067310 moveq r3, r8 | r3 = r8;
| }
0x00067312 b 0x67294 | goto label_8;
| }
0x00067314 mvn r3, 0xb | r3 = ~0xb;
0x00067318 b 0x672ae | goto label_9;
| label_20:
0x0006731a blx 0x927c | fprintf_chk ()
0x0006731e nop |
0x00067320 adds r6, r3, r5 | r6 = r3 + r5;
0x00067322 movs r6, r0 | r6 = r0;
0x00067324 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00067326 movs r0, r0 |
0x00067328 adds r2, r2, r0 | r2 += r0;
0x0006732a movs r6, r0 | r6 = r0;
0x0006732c sub sp, 0x78 |
0x0006732e movs r3, r0 | r3 = r0;
0x00067330 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x673a8 */
| #include <stdint.h>
|
; (fcn) fcn.000673a8 () | void fcn_000673a8 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000673a8 ldrsbgt pc, [r4], -0x8f | __asm ("ldrsbgt pc, [r4], -0x8f");
0x000673ac push {r4, r5, lr} |
0x000673ae mov r5, r3 | r5 = r3;
0x000673b0 ldr r3, [pc, 0x50] |
0x000673b2 sub sp, 0xc |
0x000673b4 add ip, pc |
0x000673b6 movs r4, 0 | r4 = 0;
0x000673b8 ldr.w r3, [ip, r3] | r3 = *((ip + r3));
0x000673bc ldr r3, [r3] | r3 = *(0x67404);
0x000673be str r3, [sp, 4] | var_4h = r3;
0x000673c0 mov.w r3, 0 | r3 = 0;
0x000673c4 mov r3, sp | r3 = sp;
0x000673c6 str r4, [sp] | *(sp) = r4;
0x000673c8 bl 0x66f2c | fcn_00066f2c (r0, r1, r2, r3);
0x000673ca ldc2 p14, c1, [r0, 0x10]! | __asm ("ldc2 p14, c1, [r0, 0x10]!");
| if (r4 >= 0) {
0x000673ce blt 0x673da |
0x000673d0 ldr r0, [sp] | r0 = *(sp);
0x000673d2 mov r1, r5 | r1 = r5;
0x000673d4 bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x000673d8 mov r4, r0 | r4 = r0;
| }
0x000673da ldr r0, [sp] | r0 = *(sp);
0x000673dc blx 0x8dac | fcn_00008dac ();
0x000673e0 ldr r2, [pc, 0x24] |
0x000673e2 ldr r3, [pc, 0x20] | r3 = *(0x67406);
0x000673e4 add r2, pc | r2 = 0xce7f0;
0x000673e6 ldr r3, [r2, r3] | r3 = *(0xce7f0);
0x000673e8 ldr r2, [r3] | r2 = *(0xce7f0);
0x000673ea ldr r3, [sp, 4] | r3 = var_4h;
0x000673ec eors r2, r3 | r2 ^= r3;
0x000673ee mov.w r3, 0 | r3 = 0;
0x000673f0 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 == r0) {
0x000673f2 bne 0x673fa |
0x000673f4 mov r0, r4 | r0 = r4;
0x000673f6 add sp, 0xc |
0x000673f8 pop {r4, r5, pc} |
| }
0x000673fa blx 0x927c | fprintf_chk ()
0x000673fe nop |
0x00067400 asrs r0, r2, 0x1c | r0 = r2 >> 0x1c;
0x00067402 movs r6, r0 | r6 = r0;
0x00067404 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00067406 movs r0, r0 |
0x00067408 asrs r0, r4, 0x1b | r0 = r4 >> 0x1b;
0x0006740a movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6740c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006740c () | void fcn_0006740c (int16_t arg_240h, int16_t arg_298h, int16_t arg1, uint32_t arg2) {
| int16_t var_0h_2;
| int16_t var_0h;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_14h;
| int16_t var_0h_3;
| r0 = arg1;
| r1 = arg2;
0x0006740c blmi 0x1079d10 | __asm ("blmi aav.0x000616ae");
0x00067410 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00067414 sub sp, 0x1c |
0x00067416 add r2, pc | r2 += pc;
0x00067418 add r7, sp, 0 | r7 += var_0h;
0x0006741a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006741c ldr r3, [r3] | r3 = *(r3);
0x0006741e str r3, [r7, 0x14] | var_14h = r3;
0x00067420 mov.w r3, 0 | r3 = 0;
0x00067424 cmp r1, 0 |
| if (r1 == 0) {
0x00067426 beq 0x674dc | goto label_1;
| }
0x00067428 mov r6, r0 | r6 = r0;
0x0006742a mov r0, r1 | r0 = r1;
0x0006742c bl 0x66ec4 | fcn_00066ec4 (r0);
0x00067430 mov r3, r6 | r3 = r6;
0x00067432 strd r0, r6, [r7, 8] | __asm ("strd r0, r6, [var_8h]");
| if (r6 != 0) {
0x00067436 cbz r6, 0x6743c |
0x00067438 ldr r3, [pc, 0xd8] |
0x0006743a add r3, pc | r3 = 0xce952;
| }
0x0006743c add.w r5, r7, 8 | r5 += var_8h;
0x00067440 add.w r8, r7, 0x14 | r8 += var_14h;
0x00067444 mov sb, r5 | sb = r5;
0x00067446 movs r0, 0xf | r0 = 0xf;
0x00067448 cmp sb, r8 |
0x0006744a mov.w r4, 0 | r4 = 0;
0x0006744e add r4, r0 | r4 += r0;
0x00067450 str r3, [r7, 0x10] | var_10h = r3;
| if (sb == r8) {
0x00067452 beq 0x67464 | goto label_2;
| }
| do {
0x00067454 ldr r0, [sb], 4 | r0 = *(sb);
| sb += 4;
| if (r0 == 0) {
0x00067458 cbz r0, 0x67464 | goto label_2;
| }
0x0006745a blx 0x8f38 | fcn_00008f38 ();
0x0006745e cmp sb, r8 |
0x00067460 add r4, r0 | r4 += r0;
0x00067462 bne 0x67454 |
| } while (sb != r8);
| label_2:
0x00067464 adds r4, 1 | r4++;
0x00067466 cmp.w r4, 0x400000 |
| if (r4 > 0x400000) {
0x0006746a bhi 0x674f2 | goto label_3;
| }
0x0006746c cmp r4, 1 |
0x0006746e ldr r1, [pc, 0xa8] |
0x00067470 it lo |
| if (r4 >= 1) {
0x00067472 movlo r4, 1 | r4 = 1;
| }
0x00067474 adds r4, 7 | r4 += 7;
0x00067476 bic r4, r4, 7 | r4 = BIT_MASK (r4, 7);
0x0006747a add r1, pc | r1 = 0xce998;
0x0006747c sub.w sp, sp, r4 |
0x00067480 mov r4, sp | r4 = sp;
0x00067482 mov r0, r4 | r0 = r4;
| do {
0x00067484 blx 0x8c38 | fcn_00008c38 ();
0x00067488 cmp r5, r8 |
| if (r5 == r8) {
0x0006748a beq 0x67494 | goto label_4;
| }
0x0006748c ldr r1, [r5], 4 | r1 = *(r5);
| r5 += 4;
0x00067490 cmp r1, 0 |
0x00067492 bne 0x67484 |
| } while (r1 != 0);
| label_4:
0x00067494 subs r2, r6, 0 | r2 = r6 - 0;
0x00067496 mov.w r3, 0x100 | r3 = 0x100;
0x0006749a it ne |
| if (r2 == r6) {
0x0006749c movne r2, 1 | r2 = 1;
| }
0x0006749e mov r1, r4 | r1 = r4;
0x000674a0 lsls r2, r2, 1 | r2 <<= 1;
0x000674a2 mvn r0, 0x63 | r0 = ~0x63;
0x000674a6 blx 0x93b0 | r0 = fcn_000093b0 ();
0x000674aa cmp r0, 0 |
0x000674ac blt 0x674cc |
| while (r0 <= 0) {
0x000674ae movs r0, 0 | r0 = 0;
| label_0:
0x000674b0 ldr r2, [pc, 0x68] |
0x000674b2 ldr r3, [pc, 0x5c] | r3 = *(0x67512);
0x000674b4 add r2, pc | r2 = 0xce9d4;
0x000674b6 ldr r3, [r2, r3] | r3 = *(0xce9d4);
0x000674b8 ldr r2, [r3] | r2 = *(0xce9d4);
0x000674ba ldr r3, [r7, 0x14] | r3 = var_14h;
0x000674bc eors r2, r3 | r2 ^= r3;
0x000674be mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000674c2 bne 0x67508 | goto label_5;
| }
0x000674c4 adds r7, 0x1c | r7 += 0x1c;
0x000674c6 mov sp, r7 |
0x000674c8 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x000674cc blx 0x9628 | r0 = fcn_00009628 ();
0x000674d0 ldr r0, [r0] | r0 = *(r0);
0x000674d2 cmp r0, 0 |
0x000674d4 it gt |
| if (r0 > 0) {
0x000674d6 rsbgt r0, r0, 0 | __asm ("rsbgt r0, r0, 0");
| }
0x000674d8 ble 0x674ae |
| }
0x000674da b 0x674b0 | goto label_0;
| label_1:
0x000674dc ldr r1, [pc, 0x40] |
0x000674de movw r2, 0x215 | r2 = 0x215;
0x000674e2 ldr r3, [pc, 0x40] |
0x000674e4 ldr r0, [pc, 0x40] |
0x000674e6 add r1, pc | r1 = 0xcea0a;
0x000674e8 add r3, pc | r3 = 0xcea12;
0x000674ea adds r1, 7 | r1 += 7;
0x000674ec add r0, pc | r0 = 0xcea18;
0x000674ee bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x000674f2 ldr r1, [pc, 0x38] |
0x000674f4 movw r2, 0x21d | r2 = 0x21d;
0x000674f8 ldr r3, [pc, 0x34] |
0x000674fa ldr r0, [pc, 0x38] |
0x000674fc add r1, pc | r1 = 0xcea2e;
0x000674fe add r3, pc | r3 = 0xcea32;
0x00067500 adds r1, 7 | r1 += 7;
0x00067502 add r0, pc | r0 = 0xcea3c;
0x00067504 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00067508 blx 0x927c | fprintf_chk ()
0x0006750c asrs r6, r5, 0x1a | r6 = r5 >> 0x1a;
0x0006750e movs r6, r0 | r6 = r0;
0x00067510 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00067512 movs r0, r0 |
0x00067514 push {r1, r2, r3, r4} |
0x00067516 movs r3, r0 | r3 = r0;
0x00067518 add sp, 0xe8 |
0x0006751a movs r3, r0 | r3 = r0;
0x0006751c asrs r0, r2, 0x18 | r0 = r2 >> 0x18;
0x0006751e movs r6, r0 | r6 = r0;
0x00067520 add r6, sp, 0x298 | r6 += arg_298h;
0x00067522 movs r3, r0 | r3 = r0;
0x00067524 push {r2, r3, r4, r5, lr} |
0x00067526 movs r3, r0 | r3 = r0;
| if (r4 == 0) {
0x00067528 cbz r4, 0x67572 | void (*0x67572)() ();
| }
0x0006752a movs r3, r0 | r3 = r0;
0x0006752c add r6, sp, 0x240 | r6 += arg_240h;
0x0006752e movs r3, r0 | r3 = r0;
0x00067530 push {r1, r2, r5, lr} |
0x00067532 movs r3, r0 | r3 = r0;
0x00067534 lsls r6, r3, 3 | r6 = r3 << 3;
0x00067536 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x67560 */
| #include <stdint.h>
|
; (fcn) fcn.00067560 () | void fcn_00067560 (int16_t arg_1f8h, int16_t arg_250h, uint32_t arg1, uint32_t arg2) {
| uint32_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00067560 ldr r2, [pc, 0xbc] |
0x00067562 ldr r3, [pc, 0xc0] | r3 = *(0x67626);
0x00067564 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00067568 sub sp, 0x14 |
0x0006756a add r2, pc | r2 = 0xceb8e;
0x0006756c str r0, [sp, 4] | var_4h = r0;
0x0006756e ldr r3, [r2, r3] |
0x00067570 ldr r3, [r3] | r3 = *(0xceb8e);
0x00067572 str r3, [sp, 0xc] | var_ch = r3;
0x00067574 mov.w r3, 0 | r3 = 0;
0x00067578 cmp r1, 0 |
| if (r1 == 0) {
0x0006757a beq 0x675ee | goto label_0;
| }
0x0006757c cmp r0, 0 |
| if (r0 == 0) {
0x0006757e beq 0x67604 | goto label_1;
| }
0x00067580 movs r4, 0 | r4 = 0;
0x00067582 mov sb, r1 | sb = r1;
0x00067584 add r7, sp, 8 | r7 += var_8h;
0x00067586 add r6, sp, 4 | r6 += var_4h;
0x00067588 mov r5, r4 | r5 = r4;
0x0006758a mov.w r8, 1 | r8 = 1;
0x0006758e b 0x675ae |
| while (sl >= var_4h) {
0x00067590 ldr.w fp, [sp, 8] | fp = var_8h;
0x00067594 mov r0, fp | r0 = fp;
| if (r4 == 0) {
0x00067596 beq 0x675e4 | goto label_2;
| }
0x00067598 bl 0x67550 | r0 = fcn_00067550 (r0);
0x0006759c cmp r0, 0 |
0x0006759e itett ge |
| if (r0 < 0) {
0x000675a0 lslge r3, r8, r0 | r3 = r8 << r0;
| }
| if (r0 < 0) {
0x000675a4 movge r0, fp | r0 = fp;
| }
| if (r0 < 0) {
0x000675a6 movge r0, fp | r0 = fp;
| }
| if (r0 >= 0) {
0x000675a8 orrs r4, r3 | r4 |= r3;
| }
0x000675aa blx 0x8dac | fcn_00008dac ();
0x000675ae movs r3, 0 | r3 = 0;
0x000675b0 mov r1, r7 | r1 = r7;
0x000675b2 mov r2, r3 | r2 = r3;
0x000675b4 mov r0, r6 | r0 = r6;
0x000675b6 str r5, [sp, 8] | var_8h = r5;
0x000675b8 bl 0x695ac | fcn_000695ac (r0, r1, r2, r3);
0x000675bc subs.w sl, r0, 0 | sl -= var_4h;
0x000675c0 bge 0x67590 |
| }
0x000675c2 ldr r0, [sp, 8] | r0 = var_8h;
0x000675c4 blx 0x8dac | fcn_00008dac ();
| do {
0x000675c8 ldr r2, [pc, 0x5c] |
0x000675ca ldr r3, [pc, 0x58] | r3 = *(0x67626);
0x000675cc add r2, pc | r2 = 0xcebf8;
0x000675ce ldr r3, [r2, r3] | r3 = *(0xcebf8);
0x000675d0 ldr r2, [r3] | r2 = *(0xcebf8);
0x000675d2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000675d4 eors r2, r3 | r2 ^= r3;
0x000675d6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000675da bne 0x6761a | goto label_3;
| }
0x000675dc mov r0, sl | r0 = sl;
0x000675de add sp, 0x14 |
0x000675e0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x000675e4 blx 0x8dac | fcn_00008dac ();
0x000675e8 str.w r4, [sb] | __asm ("str.w r4, [sb]");
0x000675ea ands r0, r0 | r0 &= r0;
0x000675ec b 0x675c8 |
| } while (1);
| label_0:
0x000675ee ldr r1, [pc, 0x3c] |
0x000675f0 movw r2, 0x747 | r2 = 0x747;
0x000675f4 ldr r3, [pc, 0x38] |
0x000675f6 ldr r0, [pc, 0x3c] |
0x000675f8 add r1, pc | r1 = 0xcec2a;
0x000675fa add r3, pc | r3 = 0xcec2e;
0x000675fc adds r1, 7 | r1 += 7;
0x000675fe add r0, pc | r0 = 0xcec38;
0x00067600 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_1:
0x00067604 ldr r1, [pc, 0x30] |
0x00067606 mov.w r2, 0x748 | r2 = 0x748;
0x0006760a ldr r3, [pc, 0x30] |
0x0006760c ldr r0, [pc, 0x30] |
0x0006760e add r1, pc | r1 = 0xcec4a;
0x00067610 add r3, pc | r3 = 0xcec52;
0x00067612 adds r1, 7 | r1 += 7;
0x00067614 add r0, pc | r0 = 0xcec58;
0x00067616 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00067618 invalid |
| label_3:
0x0006761a blx 0x927c | fprintf_chk ()
0x0006761e nop |
0x00067620 asrs r2, r3, 0x15 | r2 = r3 >> 0x15;
0x00067622 movs r6, r0 | r6 = r0;
0x00067624 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00067626 movs r0, r0 |
0x00067628 asrs r0, r7, 0x13 | r0 = r7 >> 0x13;
0x0006762a movs r6, r0 | r6 = r0;
0x0006762c add r5, sp, 0x250 | r5 += arg_250h;
0x0006762e movs r3, r0 | r3 = r0;
0x00067630 push {r1, r2, r4} |
0x00067632 movs r3, r0 | r3 = r0;
0x00067634 ldm r6!, {r1, r2, r4, r5} | r1 = *(r6!);
| r2 = *((r6! + 4));
| r4 = *((r6! + 8));
| r5 = *((r6! + 12));
0x00067636 movs r1, r0 | r1 = r0;
0x00067638 add r5, sp, 0x1f8 | r5 += arg_1f8h;
0x0006763a movs r3, r0 | r3 = r0;
0x0006763c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x67644 */
| #include <stdint.h>
|
; (fcn) fcn.00067644 () | void fcn_00067644 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| label_1:
0x00067644 blmi 0xd79f18 | __asm ("blmi aav.0x00061476");
0x00067648 push.w {r4, r5, r6, r7, r8, lr} |
0x0006764c sub sp, 0x10 |
0x0006764e add r2, pc | r2 += pc;
0x00067650 mov r7, r0 | r7 = r0;
0x00067652 mov r8, r1 | r8 = r1;
0x00067654 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00067656 ldr r3, [r3] | r3 = *(r3);
0x00067658 str r3, [sp, 0xc] | var_ch = r3;
0x0006765a mov.w r3, 0 | r3 = 0;
0x0006765e bl 0x66e7c | r0 = fcn_00066e7c ();
0x00067662 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00067664 blt 0x6769e | goto label_0;
| }
0x00067666 itt eq |
| if (r4 != r0) {
0x00067668 moveq r6, 1 | r6 = 1;
| }
| if (r4 != r0) {
0x0006766a streq r4, [sp] | *(sp) = r4;
| }
| if (r4 != r0) {
0x0006766c bne 0x676ba | goto label_2;
| }
| do {
0x0006766e lsl.w r5, r6, r4 | r5 = r6 << r4;
0x00067672 bics r3, r5, 0xf3 | __asm ("bics r3, r5, 0xf3");
| if (r4 == r0) {
0x00067676 bne 0x67690 |
0x00067678 mov r0, r4 | r0 = r4;
0x0006767a bl 0x67538 | fcn_00067538 (r0);
0x0006767c vmax.u16 d20, d13, d1 | __asm ("vmax.u16 d20, d13, d1");
0x00067680 mov r0, r7 | r0 = r7;
0x00067682 bl 0x6740c | r0 = fcn_0006740c (r0, r1, r2, r3);
0x00067686 cmp r0, 0 |
0x00067688 ittt ge |
| if (r0 < 0) {
0x0006768a ldrge r3, [sp] | r3 = *(sp);
| }
| if (r0 < 0) {
0x0006768c orrge r3, r5 | r3 |= r5;
| }
| if (r0 >= 0) {
0x0006768e strge r3, [sp] | *(sp) = r3;
| goto label_3;
| }
| }
| label_3:
0x00067690 adds r4, 1 | r4++;
0x00067692 cmp r4, 0xc |
0x00067694 bne 0x6766e |
| } while (r4 != 0xc);
| do {
0x00067696 ldr r3, [sp] | r3 = *(sp);
0x00067698 movs r4, 0 | r4 = 0;
0x0006769a str.w r3, [r8] | __asm ("str.w r3, [r8]");
| label_0:
0x0006769e ldr r2, [pc, 0x7c] |
0x000676a0 ldr r3, [pc, 0x74] | r3 = *(0x67718);
0x000676a2 add r2, pc | r2 = 0xcedc4;
0x000676a4 ldr r3, [r2, r3] | r3 = *(0xcedc4);
0x000676a6 ldr r2, [r3] | r2 = *(0xcedc4);
0x000676a8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000676aa eors r2, r3 | r2 ^= r3;
0x000676ac mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000676b0 bne 0x67710 | goto label_4;
| }
0x000676b2 mov r0, r4 | r0 = r4;
0x000676b4 add sp, 0x10 |
0x000676b6 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x000676ba ldr r2, [pc, 0x64] |
0x000676bc movs r4, 0 | r4 = 0;
0x000676be ldr r0, [pc, 0x64] |
0x000676c0 add r3, sp, 8 | r3 += var_8h;
0x000676c2 mov r1, r7 | r1 = r7;
0x000676c4 strd r4, r4, [sp, 4] | __asm ("strd r4, r4, [sp, 4]");
0x000676c8 add r2, pc | r2 = 0xcedee;
0x000676ca add r0, pc | r0 = 0xcedf4;
0x000676cc bl 0x66f2c | r0 = fcn_00066f2c (r0, r1, r2, r3);
0x000676d0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000676d2 blt 0x67702 | goto label_5;
| }
0x000676d4 ldr r0, [sp, 8] | r0 = var_8h;
0x000676d6 add r1, sp, 4 | r1 += var_4h_2;
0x000676d8 bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x000676dc subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000676de blt 0x67702 | goto label_5;
| }
0x000676e0 ldr r0, [sp, 4] | r0 = var_4h_2;
0x000676e2 mov r1, sp | r1 = sp;
0x000676e4 bl 0x67560 | fcn_00067560 (r0, r1, r2, r3);
0x000676e6 invalid |
| if (r4 < r0) {
0x000676ea blt 0x67702 | goto label_5;
| }
0x000676ec ldr r3, [sp] | r3 = *(sp);
0x000676ee ldr r0, [sp, 8] | r0 = var_8h;
0x000676f0 and r3, r3, 0xad | r3 &= 0xad;
0x000676f4 str r3, [sp] | *(sp) = r3;
0x000676f6 blx 0x8dac | fcn_00008dac ();
0x000676fa ldr r0, [sp, 4] | r0 = var_4h_2;
0x000676fc blx 0x8dac | fcn_00008dac ();
0x00067700 b 0x67696 |
| } while (1);
| label_5:
0x00067702 ldr r0, [sp, 8] | r0 = var_8h;
0x00067704 blx 0x8dac | fcn_00008dac ();
0x00067708 ldr r0, [sp, 4] | r0 = var_4h_2;
0x0006770a blx 0x8dac | fcn_00008dac ();
0x0006770e b 0x6769e | goto label_0;
| label_4:
0x00067710 blx 0x927c | fprintf_chk ()
0x00067714 asrs r6, r6, 0x11 | r6 >>= 0x11;
0x00067716 movs r6, r0 | r6 = r0;
0x00067718 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006771a movs r0, r0 |
0x0006771c asrs r2, r4, 0x10 | r2 = r4 >> 0x10;
0x0006771e movs r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00067720 cbz r0, 0x6774c | void (*0x6774c)() ();
| }
0x00067722 movs r3, r0 | r3 = r0;
| if (r3 == r0) {
0x00067724 beq 0x67644 | goto label_1;
| }
0x00067726 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x67728 */
| #include <stdint.h>
|
; (fcn) fcn.00067728 () | void fcn_00067728 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00067728 ldr r1, [pc, 0x50] |
0x0006772a movs r3, 0 | r3 = 0;
0x0006772c ldr r2, [pc, 0x50] | r2 = *(0x67780);
0x0006772e push {r4, r5, lr} |
0x00067730 sub sp, 0xc |
0x00067732 add r1, pc | r1 = 0xceeb2;
0x00067734 mov r5, r0 | r5 = r0;
0x00067736 mov r0, sp | r0 = sp;
0x00067738 ldr r2, [r1, r2] |
0x0006773a ldr r2, [r2] | r2 = *(0xceeb2);
0x0006773c str r2, [sp, 4] | var_4h = r2;
0x0006773e mov.w r2, 0 | r2 = 0;
0x00067742 str r3, [sp] | *(sp) = r3;
0x00067744 bl 0x66b34 | fcn_00066b34 (r0);
0x00067748 subs r4, r0, 0 | r4 -= var_0h;
| if (r4 >= var_0h) {
0x0006774a blt 0x67756 |
0x0006774c ldr r0, [sp] | r0 = *(sp);
0x0006774e mov r1, r5 | r1 = r5;
0x00067750 bl 0x67644 | r0 = fcn_00067644 (r0, r1);
0x00067754 mov r4, r0 | r4 = r0;
| }
0x00067756 ldr r0, [sp] | r0 = *(sp);
0x00067758 blx 0x8dac | fcn_00008dac ();
0x0006775c ldr r2, [pc, 0x24] |
0x0006775e ldr r3, [pc, 0x20] | r3 = *(0x67782);
0x00067760 add r2, pc | r2 = 0xceee8;
0x00067762 ldr r3, [r2, r3] | r3 = *(0xceee8);
0x00067764 ldr r2, [r3] | r2 = *(0xceee8);
0x00067766 ldr r3, [sp, 4] | r3 = var_4h;
0x00067768 eors r2, r3 | r2 ^= r3;
0x0006776a mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0006776e bne 0x67776 |
0x00067770 mov r0, r4 | r0 = r4;
0x00067772 add sp, 0xc |
0x00067774 pop {r4, r5, pc} |
| }
0x00067776 blx 0x927c | fprintf_chk ()
0x0006777a nop |
0x0006777c asrs r2, r2, 0xe | r2 >>= 0xe;
0x0006777e movs r6, r0 | r6 = r0;
0x00067780 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00067782 movs r0, r0 |
0x00067784 asrs r4, r4, 0xd | r4 >>= 0xd;
0x00067786 movs r6, r0 | r6 = r0;
0x00067788 push {r3, r4, r5, lr} |
0x0006778a mov r5, r1 | r5 = r1;
0x0006778c ldr r0, [r0] | r0 = *(r0);
0x0006778e blx 0x9634 | fcn_00009634 ();
0x00067790 vmax.s16 d20, d2, d4 | __asm ("vmax.s16 d20, d2, d4");
0x00067794 ldr r0, [r5] | r0 = *(r5);
0x00067796 blx 0x9634 | r0 = fcn_00009634 ();
0x0006779a mov r1, r0 | r1 = r0;
0x0006779c mov r0, r4 | r0 = r4;
0x0006779e pop.w {r3, r4, r5, lr} |
0x000677a2 b.w 0x95dc | return void (*0x95dc)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x677a8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000677a8 () | void fcn_000677a8 (int16_t arg_1h, int16_t arg_218h, int16_t arg_340h_2, int16_t arg_140h, int16_t arg_270h, int16_t arg_228h, int16_t arg_338h_2, int16_t arg_198h, int16_t arg_200h, int16_t arg_340h, int16_t arg_388h_2, int16_t arg_338h, int16_t arg_360h, int16_t arg_388h, int16_t arg_3d8h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_1ch_2;
| int16_t var_48h_2;
| int16_t var_1ch;
| int16_t var_48h;
| int16_t var_158h_2;
| int16_t var_218h;
| int16_t var_0h;
| int16_t var_4h;
| int8_t var_1h;
| int16_t var_8h;
| int16_t var_0h_3;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_4h_2;
| int32_t var_8h_2;
| int32_t var_ch_2;
| int32_t var_10h_2;
| int32_t var_14h;
| int16_t var_158h;
| int32_t var_1ch_3;
| int16_t var_20h;
| int32_t var_30h;
| int32_t var_8ch;
| int16_t var_0h_2;
| int16_t var_c0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000677a8 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000677ac mov r6, r2 | r6 = r2;
0x000677ae ldr.w r2, [pc, 0x4cc] |
0x000677b2 mov r4, r3 | r4 = r3;
0x000677b4 sub sp, 0xa4 |
0x000677b6 ldr.w r3, [pc, 0x4c8] | r3 = *(0x67c82);
0x000677ba add r7, sp, 0x10 | r7 += var_10h;
0x000677bc add r2, pc | r2 = 0xcf43e;
0x000677be str r1, [r7, 0x1c] | var_1ch_3 = r1;
0x000677c0 ldrd r8, r5, [r7, 0xb8] | __asm ("ldrd r8, r5, [r7, 0xb8]");
0x000677c4 ldr r3, [r2, r3] |
0x000677c6 ldr r3, [r3] | r3 = *(0xcf43e);
0x000677c8 str.w r3, [r7, 0x8c] | __asm ("str.w r3, [var_8ch]");
0x000677ca adds r0, 0x8c | r0 += 0x8c;
0x000677cc mov.w r3, 0 | r3 = 0;
0x000677d0 ldr.w r3, [pc, 0x4b0] |
0x000677d4 add r3, pc | r3 = 0xcf45c;
0x000677d6 str r3, [r7, 0x14] | var_14h = r3;
0x000677d8 cmp r0, 0 |
| if (r0 == 0) {
0x000677da beq.w 0x67bba | goto label_11;
| }
0x000677de ands r3, r8, 0x10 | r3 = r8 & 0x10;
0x000677e2 mov sl, r0 | sl = r0;
0x000677e4 str r3, [r7, 0x10] | var_10h_2 = r3;
| if (r3 != r8) {
0x000677e6 bne.w 0x67b44 | goto label_12;
| }
| label_7:
0x000677ea cmp r5, 0 |
| if (r5 == 0) {
0x000677ec beq.w 0x67bce | goto label_13;
| }
0x000677ee strh r7, [r5, 0xe] | *((r5 + 0xe)) = r7;
0x000677f0 ldrb.w sb, [r5] | sb = *(r5);
0x000677f4 cmp.w sb, 0x2f |
| if (sb != 0x2f) {
0x000677f8 bne 0x67806 | goto label_14;
| }
0x000677fa mov r2, r5 | r2 = r5;
| do {
0x000677fc mov r5, r2 | r5 = r2;
0x000677fe ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00067802 cmp r3, 0x2f |
0x00067804 beq 0x677fc |
| } while (r3 == 0x2f);
| if (r4 != 0) {
| label_14:
0x00067806 cbz r4, 0x67810 |
0x00067808 ldrb r3, [r4] | r3 = *(r4);
0x0006780a cmp r3, 0 |
| if (r3 != 0) {
0x0006780c bne.w 0x67936 | goto label_15;
| }
0x0006780e strh r3, [r2, 4] | *((r2 + 4)) = r3;
| }
0x00067810 mov r0, r5 | r0 = r5;
0x00067812 blx 0x8a68 | r0 = fcn_00008a68 ();
0x00067816 mov sb, r0 | sb = r0;
0x00067818 cmp r0, 0 |
| if (r0 == 0) {
0x0006781a beq.w 0x679aa | goto label_16;
| }
| label_0:
0x0006781e bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x00067822 cmp r0, 0 |
| if (r0 == 0) {
0x00067824 beq 0x678fa | goto label_17;
| }
0x00067826 ldr.w r3, [pc, 0x460] |
0x0006782a str r5, [r7, 0x18] | var_158h = r5;
0x0006782c ldr r5, [r7, 0x10] | r5 = var_10h_2;
0x0006782e add r3, pc | r3 = 0xcf4bc;
0x00067830 adds r3, 7 | r3 += 7;
0x00067832 str r3, [r7, 8] | var_8h_2 = r3;
0x00067834 ldr.w r3, [pc, 0x454] |
0x00067838 add r3, pc | r3 = 0xcf4c8;
0x0006783a adds r3, 7 | r3 += 7;
0x0006783c str r3, [r7, 0xc] | var_ch_2 = r3;
0x0006783e ldr.w r3, [pc, 0x450] |
0x00067842 add r3, pc | r3 = 0xcf4d8;
0x00067844 str r3, [r7, 4] | var_4h_2 = r3;
0x00067846 ldr.w r3, [pc, 0x44c] |
0x00067848 adds r4, 0x4c | r4 += 0x4c;
0x0006784a add r3, pc | r3 = 0xcf4e4;
0x0006784c str r3, [r7] | *(r7) = r3;
| do {
0x0006784e add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x00067852 mov r0, r4 | r0 = r4;
0x00067854 bl 0x75b88 | r0 = fcn_00075b88 (r0);
0x00067858 cmp r0, 0 |
| if (r0 == 0) {
0x0006785a bne 0x678f0 |
| if (r6 != 0) {
0x0006785c cbz r6, 0x6786a |
0x0006785e mov r1, r6 | r1 = r6;
0x00067860 mov r0, r4 | r0 = r4;
0x00067862 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x00067866 cmp r0, 0 |
| if (r0 == 0) {
0x00067868 beq 0x678f0 | goto label_2;
| }
| }
0x0006786a mov r1, r4 | r1 = r4;
0x0006786c mov r0, sl | r0 = sl;
0x0006786e bl 0x6ec28 | r0 = fcn_0006ec28 (r0, r1);
0x00067872 mov fp, r0 |
0x00067874 cmp r0, 0 |
| if (r0 != 0) {
0x00067876 bne.w 0x67a06 | goto label_18;
| }
0x0006787a cmp r5, 0 |
| if (r5 != 0) {
0x0006787c bne.w 0x67a34 | goto label_19;
| }
0x0006787e strh r2, [r3, 6] | *((r3 + 6)) = r2;
0x00067880 tst.w r8, 0x17 |
| if ((r8 & 0x17) != 0) {
0x00067884 bne.w 0x67aa8 | goto label_20;
| }
| label_3:
0x00067888 tst.w r8, 6 |
| if ((r8 & 6) != 0) {
0x0006788c beq 0x678b6 |
0x0006788e tst.w r8, 4 |
| if ((r8 & 4) != 0) {
0x00067892 beq 0x678a0 |
0x00067894 ldr r3, [r7, 0x30] | r3 = var_30h;
0x00067896 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0006789a cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x0006789e beq 0x678b6 | goto label_21;
| }
| }
0x000678a0 tst.w r8, 2 |
| if ((r8 & 2) == 0) {
0x000678a4 beq.w 0x679de | goto label_22;
| }
0x000678a8 ldr r3, [r7, 0x30] | r3 = var_30h;
0x000678aa and r3, r3, 0xf000 | r3 &= 0xf000;
0x000678ae cmp.w r3, 0x8000 |
| if (r3 != 0x8000) {
0x000678b2 bne.w 0x679de | goto label_22;
| }
| }
| label_21:
0x000678b6 tst.w r8, 1 |
| if ((r8 & 1) != 0) {
0x000678ba beq 0x678c6 |
0x000678bc ldr r1, [r7, 0x30] | r1 = var_30h;
0x000678be ands fp, r1, 0x49 |
| if (fp == r1) {
0x000678c2 beq.w 0x67b94 | goto label_23;
| }
| }
0x000678c6 ands r0, r8, 8 | r0 = r8 & 8;
| if (r0 == r8) {
0x000678ca beq.w 0x67af6 | goto label_24;
| }
0x000678ce mov r0, r4 | r0 = r4;
0x000678d0 blx 0x9200 | r0 = fcn_00009200 ();
0x000678d4 mov r4, r0 | r4 = r0;
0x000678d6 cmp r0, 0 |
| if (r0 == 0) {
0x000678d8 beq.w 0x67c52 | goto label_25;
| }
0x000678dc mov r1, r0 | r1 = r0;
| label_5:
0x000678de mov r2, r4 | r2 = r4;
0x000678e0 mov r0, sl | r0 = sl;
0x000678e2 bl 0x6e910 | fcn_0006e910 (r0, r1, r2, r3);
0x000678e4 invalid |
| if (r0 < 0) {
0x000678e8 blt.w 0x67c28 | goto label_26;
| }
| if (r0 == 0) {
0x000678ec beq.w 0x67be2 | goto label_27;
| }
| }
| label_2:
0x000678f0 mov r0, sb | r0 = sb;
0x000678f2 bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x000678f6 cmp r0, 0 |
0x000678f8 bne 0x6784e |
| } while (r0 != 0);
| label_17:
0x000678fa blx 0x9628 | r0 = fcn_00009628 ();
0x000678fe ldr r3, [r0] | r3 = *(r0);
0x00067900 cmp r3, 0 |
0x00067902 it gt |
| if (r3 > 0) {
0x00067904 rsbgt fp, r3, 0 | __asm ("rsbgt fp, r3, 0");
| }
| if (r3 <= 0) {
0x00067908 bgt 0x6790e |
0x0006790a mov.w fp, 0 |
| }
| label_4:
0x0006790e mov r0, sb | r0 = sb;
0x00067910 blx 0x91a8 | fcn_000091a8 ();
| label_1:
0x00067914 ldr r2, [pc, 0x380] |
0x00067916 ldr r3, [pc, 0x368] | r3 = *(0x67c82);
0x00067918 add r2, pc | r2 = 0xcf5b4;
0x0006791a ldr r3, [r2, r3] | r3 = *(0xcf5b4);
0x0006791c ldr r2, [r3] | r2 = *(0xcf5b4);
0x0006791e ldr.w r3, [r7, 0x8c] | r3 = var_8ch;
0x00067922 eors r2, r3 | r2 ^= r3;
0x00067924 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00067928 bne.w 0x67c78 | goto label_28;
| }
0x0006792c mov r0, fp | r0 = fp;
0x0006792e adds r7, 0x94 | r7 += 0x94;
0x00067930 mov sp, r7 |
0x00067932 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00067934 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_15:
0x00067936 mov r0, r4 | r0 = r4;
0x00067938 blx 0x8f38 | fcn_00008f38 ();
0x0006793c str r0, [r7, 0x18] | var_158h = r0;
0x0006793e mov r0, r5 | r0 = r5;
0x00067940 blx 0x8f38 | fcn_00008f38 ();
0x00067944 ldr r3, [r7, 0x18] | r3 = var_158h;
0x00067946 mov fp, r0 |
0x00067948 adds r0, r3, r0 | r0 = r3 + r0;
0x0006794a adds r3, r0, 2 | r3 = r0 + 2;
0x0006794c cmp.w r3, 0x400000 |
| if (r3 > 0x400000) {
0x00067950 bhi.w 0x67b80 | goto label_29;
| }
0x00067954 adds r0, 9 | r0 += 9;
0x00067956 mov r1, r4 | r1 = r4;
0x00067958 bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x0006795c sub.w sp, sp, r0 |
0x00067960 add r4, sp, 0x10 | r4 += var_10h;
0x00067962 mov r0, r4 | r0 = r4;
0x00067964 blx 0x8c38 | r0 = fcn_00008c38 ();
0x00067968 cmp r0, r4 |
0x0006796a mov r3, r0 | r3 = r0;
| if (r0 > r4) {
0x0006796c bhi 0x67976 | goto label_30;
| }
0x0006796e b 0x67982 | goto label_6;
| do {
0x00067970 cmp r3, r4 |
| if (r3 == r4) {
0x00067972 beq.w 0x67b12 | goto label_31;
| }
| label_30:
0x00067976 ldrb r2, [r3, -0x1] | r2 = *((r3 - 0x1));
0x0006797a mov r0, r3 | r0 = r3;
0x0006797c subs r3, 1 | r3--;
0x0006797e cmp r2, 0x2f |
0x00067980 beq 0x67970 |
| } while (r2 == 0x2f);
| label_6:
0x00067982 cmp.w sb, 0x2f |
0x00067986 mov r1, r5 | r1 = r5;
0x00067988 it ne |
| if (sb == 0x2f) {
0x0006798a movne r3, 0x2f | r3 = 0x2f;
| }
0x0006798c add.w r2, fp, 1 | r2 += arg_1h;
0x00067990 it ne |
| if (sb == 0x2f) {
0x00067992 strbne r3, [r0], 1 | *(r0) = r3;
| r0++;
| }
0x00067996 mov r5, r4 | r5 = r4;
0x00067998 blx 0x8f9c | fcn_00008f9c ();
0x0006799c mov r0, r5 | r0 = r5;
0x0006799e blx 0x8a68 | r0 = fcn_00008a68 ();
0x000679a2 mov sb, r0 | sb = r0;
0x000679a4 cmp r0, 0 |
| if (r0 != 0) {
0x000679a6 bne.w 0x6781e | goto label_0;
| }
| label_16:
0x000679aa blx 0x9628 | r0 = fcn_00009628 ();
0x000679ae ldr r4, [r0] | r4 = *(r0);
0x000679b0 cmp r4, 2 |
0x000679b2 it eq |
| if (r4 == 2) {
0x000679b4 moveq fp, sb | goto label_32;
| }
| if (r4 == 2) {
| label_32:
0x000679b6 beq 0x67914 | goto label_1;
| }
0x000679b8 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000679bc cmp r0, 6 |
| if (r0 > 6) {
0x000679be bgt.w 0x67b5e | goto label_33;
| }
0x000679c2 eor.w fp, r4, r4, asr 31 |
0x000679c6 sub.w fp, fp, r4, asr 31 |
0x000679c8 ldrb r4, [r4, 0xf] | r4 = *((r4 + 0xf));
0x000679ca uxtb.w fp, fp | fp = (int8_t) fp;
0x000679ce rsb.w fp, fp, 0 |
| label_8:
0x000679d2 cmp.w fp, 0 |
0x000679d6 it ge |
| if (fp < 0) {
0x000679d8 mvnge fp, 0x55 |
| }
0x000679dc b 0x67914 | goto label_1;
| label_22:
0x000679de bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000679e2 cmp r0, 6 |
| if (r0 <= 6) {
0x000679e4 ble 0x678f0 | goto label_2;
| }
0x000679e6 ldr r3, [r7, 0x18] | r3 = var_158h;
0x000679e8 movs r1, 0 | r1 = 0;
0x000679ea ldr r2, [r7, 0xc] | r2 = var_ch_2;
0x000679ec movs r0, 7 | r0 = 7;
0x000679ee str r4, [sp, 0xc] | var_ch = r4;
0x000679f0 str r3, [sp, 8] | var_8h = r3;
0x000679f2 ldr r3, [pc, 0x2a8] |
0x000679f4 add r3, pc | r3 = 0xcf696;
0x000679f6 str r3, [sp, 4] | var_4h = r3;
0x000679f8 ldr r3, [pc, 0x2a4] |
0x000679fa add r3, pc | r3 = 0xcf69e;
0x000679fc str r3, [sp] | *(sp) = r3;
0x000679fe movs r3, 0x5f | r3 = 0x5f;
0x00067a00 bl 0x71448 | fcn_00071448 ();
0x00067a04 b 0x678f0 | goto label_2;
| label_18:
0x00067a06 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00067a0a cmp r0, 6 |
| if (r0 <= 6) {
0x00067a0c ble.w 0x678f0 | goto label_2;
| }
0x00067a10 ldr r3, [r7, 0x18] | r3 = var_158h;
0x00067a12 movs r1, 0 | r1 = 0;
0x00067a14 ldr r2, [pc, 0x28c] |
0x00067a16 movs r0, 7 | r0 = 7;
0x00067a18 str r4, [sp, 0xc] | var_ch = r4;
0x00067a1a str r3, [sp, 8] | var_8h = r3;
0x00067a1c ldr r3, [pc, 0x288] |
0x00067a1e add r2, pc | r2 = 0xcf6c6;
0x00067a20 adds r2, 7 | r2 += 7;
0x00067a22 add r3, pc | r3 = 0xcf6ce;
0x00067a24 str r3, [sp, 4] | var_4h = r3;
0x00067a26 ldr r3, [pc, 0x284] |
0x00067a28 add r3, pc | r3 = 0xcf6da;
0x00067a2a str r3, [sp] | *(sp) = r3;
0x00067a2c movs r3, 0x3c | r3 = 0x3c;
0x00067a2e bl 0x71448 | fcn_00071448 ();
0x00067a32 b 0x678f0 | goto label_2;
| label_19:
0x00067a34 ldr r0, [r7, 0x1c] | r0 = var_1ch_3;
0x00067a36 mov r1, r4 | r1 = r4;
0x00067a38 bl 0x6ec28 | r0 = fcn_0006ec28 (r0, r1);
0x00067a3c cmp r0, 0 |
| if (r0 != 0) {
0x00067a3e bne 0x67b16 | goto label_34;
| }
0x00067a40 tst.w r8, 0x17 |
0x00067a44 it eq |
| if ((r8 & 0x17) != 0) {
0x00067a46 addeq fp, r7, 0x20 |
| }
| if ((r8 & 0x17) != 0) {
0x00067a4a bne.w 0x67bf6 | goto label_35;
| }
| label_9:
0x00067a4e mov r0, fp | r0 = fp;
0x00067a50 bl 0x79de4 | r0 = fcn_00079de4 (r0);
0x00067a54 cmp r0, 0 |
| if (r0 == 0) {
0x00067a56 beq.w 0x67888 | goto label_3;
| }
0x00067a5a ldr r3, [r7, 0x1c] | r3 = var_1ch_3;
0x00067a5c cmp r3, 0 |
| if (r3 == 0) {
0x00067a5e beq.w 0x67c14 | goto label_36;
| }
0x00067a62 ldr r2, [r7, 0x14] | r2 = var_14h;
0x00067a64 add.w r0, r7, 0x1c | r0 += var_1ch_3;
0x00067a68 ldr r3, [pc, 0x244] | r3 = *(0x67cb0);
0x00067a6a ldr r1, [r2, r3] | r1 = *((r2 + r3));
0x00067a6c mov r2, r4 | r2 = r4;
0x00067a6e bl 0x6f25c | fcn_0006f25c (r0, r1);
0x00067a72 subs.w fp, r0, 0 |
| if (fp < var_1ch_3) {
0x00067a76 blt.w 0x6790e | goto label_4;
| }
0x00067a78 add r7, sp, 0x128 | r7 = sp + 0x128;
0x00067a7a bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00067a7e cmp r0, 6 |
| if (r0 <= 6) {
0x00067a80 ble.w 0x678f0 | goto label_2;
| }
0x00067a84 ldr r3, [r7, 0x18] | r3 = var_158h;
0x00067a86 movs r1, 0 | r1 = 0;
0x00067a88 ldr r2, [pc, 0x228] |
0x00067a8a movs r0, 7 | r0 = 7;
0x00067a8c str r4, [sp, 0xc] | var_ch = r4;
0x00067a8e str r3, [sp, 8] | var_8h = r3;
0x00067a90 ldr r3, [pc, 0x224] |
0x00067a92 add r2, pc | r2 = 0xcf74a;
0x00067a94 adds r2, 7 | r2 += 7;
0x00067a96 add r3, pc | r3 = 0xcf752;
0x00067a98 str r3, [sp, 4] | var_4h = r3;
0x00067a9a ldr r3, [pc, 0x220] |
0x00067a9c add r3, pc | r3 = 0xcf75e;
0x00067a9e str r3, [sp] | *(sp) = r3;
0x00067aa0 movs r3, 0x57 | r3 = 0x57;
0x00067aa2 bl 0x71448 | fcn_00071448 ();
0x00067aa6 b 0x678f0 | goto label_2;
| label_20:
0x00067aa8 mov r0, sb | r0 = sb;
0x00067aaa blx 0x9128 | fcn_00009128 ();
0x00067aae mov r3, r5 | r3 = r5;
0x00067ab0 add.w r2, r7, 0x20 | r2 += var_20h;
0x00067ab4 mov r1, r4 | r1 = r4;
0x00067ab6 blx 0x9334 | r0 = fcn_00009334 ();
0x00067aba cmp r0, 0 |
| if (r0 >= 0) {
0x00067abc bge.w 0x67888 | goto label_3;
| }
| label_10:
0x00067ac0 blx 0x9628 | r0 = fcn_00009628 ();
0x00067ac4 ldr.w fp, [r0] | fp = *(r0);
0x00067ac8 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00067acc cmp r0, 6 |
| if (r0 <= 6) {
0x00067ace ble.w 0x678f0 | goto label_2;
| }
0x00067ad2 ldr r3, [r7, 0x18] | r3 = var_158h;
0x00067ad4 mov r1, fp | r1 = fp;
0x00067ad6 ldr r2, [pc, 0x1e8] |
0x00067ad8 movs r0, 7 | r0 = 7;
0x00067ada str r4, [sp, 0xc] | var_ch = r4;
0x00067adc str r3, [sp, 8] | var_8h = r3;
0x00067ade ldr r3, [pc, 0x1e4] |
0x00067ae0 add r2, pc | r2 = 0xcf7a6;
0x00067ae2 adds r2, 7 | r2 += 7;
0x00067ae4 add r3, pc | r3 = 0xcf7ae;
0x00067ae6 str r3, [sp, 4] | var_4h = r3;
0x00067ae8 ldr r3, [pc, 0x1dc] |
0x00067aea add r3, pc | r3 = 0xcf7b6;
0x00067aec str r3, [sp] | *(sp) = r3;
0x00067aee movs r3, 0x49 | r3 = 0x49;
0x00067af0 bl 0x71448 | fcn_00071448 ();
0x00067af4 b 0x678f0 | goto label_2;
| label_24:
0x00067af6 mov r2, r4 | r2 = r4;
0x00067af8 ldr r1, [r7, 0x18] | r1 = var_158h;
0x00067afa mov.w r3, -1 | r3 = -1;
0x00067afe bl 0x74ccc | r0 = fcn_00074ccc ();
0x00067b02 mov r4, r0 | r4 = r0;
0x00067b04 cmp r0, 0 |
| if (r0 == 0) {
0x00067b06 beq.w 0x67c52 | goto label_25;
| }
0x00067b0a blx 0x9634 | r0 = fcn_00009634 ();
0x00067b0e mov r1, r0 | r1 = r0;
0x00067b10 b 0x678de | goto label_5;
| label_31:
0x00067b12 mov r0, r4 | r0 = r4;
0x00067b14 b 0x67982 | goto label_6;
| label_34:
0x00067b16 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00067b1a cmp r0, 6 |
| if (r0 <= 6) {
0x00067b1c ble.w 0x678f0 | goto label_2;
| }
0x00067b20 ldr r3, [r7, 0x18] | r3 = var_158h;
0x00067b22 mov r1, fp | r1 = fp;
0x00067b24 ldr r2, [pc, 0x1a4] |
0x00067b26 movs r0, 7 | r0 = 7;
0x00067b28 str r4, [sp, 0xc] | var_ch = r4;
0x00067b2a str r3, [sp, 8] | var_8h = r3;
0x00067b2c ldr r3, [pc, 0x1a0] |
0x00067b2e add r2, pc | r2 = 0xcf7fe;
0x00067b30 adds r2, 7 | r2 += 7;
0x00067b32 add r3, pc | r3 = 0xcf806;
0x00067b34 str r3, [sp, 4] | var_4h = r3;
0x00067b36 ldr r3, [pc, 0x19c] |
0x00067b38 add r3, pc | r3 = 0xcf812;
0x00067b3a str r3, [sp] | *(sp) = r3;
0x00067b3c movs r3, 0x42 | r3 = 0x42;
0x00067b3e bl 0x71448 | fcn_00071448 ();
0x00067b42 b 0x678f0 | goto label_2;
| label_12:
0x00067b44 cmp r1, 0 |
| if (r1 != 0) {
0x00067b46 bne.w 0x677ea | goto label_7;
| }
0x00067b4a ldr r1, [pc, 0x18c] |
0x00067b4c movs r2, 0x25 | r2 = 0x25;
0x00067b4e ldr r3, [pc, 0x18c] |
0x00067b50 ldr r0, [pc, 0x18c] |
0x00067b52 add r1, pc | r1 = 0xcf830;
0x00067b54 add r3, pc | r3 = 0xcf836;
0x00067b56 adds r1, 7 | r1 += 7;
0x00067b58 add r0, pc | r0 = 0xcf83c;
0x00067b5a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_33:
0x00067b5e ldr r2, [pc, 0x184] |
0x00067b60 movs r3, 0x2f | r3 = 0x2f;
0x00067b62 ldr r0, [pc, 0x184] |
0x00067b64 mov r1, r4 | r1 = r4;
0x00067b66 ldr r6, [pc, 0x184] |
0x00067b68 add r2, pc | r2 = 0xcf852;
0x00067b6a str r5, [sp, 8] | var_8h = r5;
0x00067b6c add r0, pc | r0 = 0xcf85a;
0x00067b6e adds r2, 7 | r2 += 7;
0x00067b70 add r6, pc | r6 = 0xcf862;
0x00067b72 str r0, [sp, 4] | var_4h = r0;
0x00067b74 str r6, [sp] | *(sp) = r6;
0x00067b76 movs r0, 7 | r0 = 7;
0x00067b78 bl 0x71448 | r0 = fcn_00071448 ();
0x00067b7c mov fp, r0 |
0x00067b7e b 0x679d2 | goto label_8;
| label_29:
0x00067b80 ldr r1, [pc, 0x16c] |
0x00067b82 movs r2, 0x28 | r2 = 0x28;
0x00067b84 ldr r3, [pc, 0x16c] |
0x00067b86 ldr r0, [pc, 0x170] |
0x00067b88 add r1, pc | r1 = 0xcf87c;
0x00067b8a add r3, pc | r3 = 0xcf882;
0x00067b8c adds r1, 7 | r1 += 7;
0x00067b8e add r0, pc | r0 = 0xcf88c;
0x00067b90 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_23:
0x00067b94 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00067b98 cmp r0, 6 |
| if (r0 <= 6) {
0x00067b9a ble.w 0x678f0 | goto label_2;
| }
0x00067b9e ldr r3, [r7, 0x18] | r3 = var_158h;
0x00067ba0 mov r1, fp | r1 = fp;
0x00067ba2 ldr r2, [r7, 8] | r2 = var_8h_2;
0x00067ba4 movs r0, 7 | r0 = 7;
0x00067ba6 str r4, [sp, 0xc] | var_ch = r4;
0x00067ba8 str r3, [sp, 8] | var_8h = r3;
0x00067baa ldr r3, [r7, 4] | r3 = var_4h_2;
0x00067bac str r3, [sp, 4] | var_4h = r3;
0x00067bae ldr r3, [r7] | r3 = *(r7);
0x00067bb0 str r3, [sp] | *(sp) = r3;
0x00067bb2 movs r3, 0x6a | r3 = 0x6a;
0x00067bb4 bl 0x71448 | fcn_00071448 ();
0x00067bb8 b 0x678f0 | goto label_2;
| label_11:
0x00067bba ldr r1, [pc, 0x140] |
0x00067bbc movs r2, 0x24 | r2 = 0x24;
0x00067bbe ldr r3, [pc, 0x140] |
0x00067bc0 ldr r0, [pc, 0x140] |
0x00067bc2 add r1, pc | r1 = 0xcf8c4;
0x00067bc4 add r3, pc | r3 = 0xcf8ca;
0x00067bc6 adds r1, 7 | r1 += 7;
0x00067bc8 add r0, pc | r0 = 0xcf8d0;
0x00067bca bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_13:
0x00067bce ldr r1, [pc, 0x138] |
0x00067bd0 movs r2, 0x26 | r2 = 0x26;
0x00067bd2 ldr r3, [pc, 0x138] |
0x00067bd4 ldr r0, [pc, 0x138] |
0x00067bd6 add r1, pc | r1 = 0xcf8e4;
0x00067bd8 add r3, pc | r3 = 0xcf8ea;
0x00067bda adds r1, 7 | r1 += 7;
0x00067bdc add r0, pc | r0 = 0xcf8f0;
0x00067bde bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_27:
0x00067be2 ldr r1, [pc, 0x130] |
0x00067be4 movs r2, 0x82 | r2 = 0x82;
0x00067be6 ldr r3, [pc, 0x130] |
0x00067be8 ldr r0, [pc, 0x130] |
0x00067bea add r1, pc | r1 = 0xcf904;
0x00067bec add r3, pc | r3 = 0xcf90a;
0x00067bee adds r1, 7 | r1 += 7;
0x00067bf0 add r0, pc | r0 = 0xcf910;
0x00067bf2 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_35:
0x00067bf6 str r0, [r7, 0x10] | var_10h_2 = r0;
0x00067bf8 add.w fp, r7, 0x20 |
0x00067bfc mov r0, sb | r0 = sb;
0x00067bfe blx 0x9128 | fcn_00009128 ();
0x00067c02 ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x00067c04 mov r1, r4 | r1 = r4;
0x00067c06 mov r2, fp | r2 = fp;
0x00067c08 blx 0x9334 | r0 = fcn_00009334 ();
0x00067c0c cmp r0, 0 |
| if (r0 >= 0) {
0x00067c0e bge.w 0x67a4e | goto label_9;
| }
0x00067c12 b 0x67ac0 | goto label_10;
| label_36:
0x00067c14 ldr r1, [pc, 0x108] |
0x00067c16 movs r2, 0x50 | r2 = 0x50;
0x00067c18 ldr r3, [pc, 0x108] |
0x00067c1a ldr r0, [pc, 0x10c] |
0x00067c1c add r1, pc | r1 = 0xcf940;
0x00067c1e add r3, pc | r3 = 0xcf946;
0x00067c20 adds r1, 7 | r1 += 7;
0x00067c22 add r0, pc | r0 = 0xcf950;
0x00067c24 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00067c26 invalid |
| label_26:
0x00067c28 mov fp, r0 |
0x00067c2a mov r0, r4 | r0 = r4;
0x00067c2c blx 0x8dac | fcn_00008dac ();
0x00067c30 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00067c34 cmp r0, 6 |
0x00067c36 ittt le |
| if (r0 <= 6) {
0x00067c38 rsble fp, fp, 0 | __asm ("rsble fp, fp, 0");
| }
| if (r0 <= 6) {
0x00067c3c uxtble fp, fp | __asm ("uxtble fp, fp");
| }
| if (r0 <= 6) {
0x00067c40 rsb.w fp, fp, 0 |
| }
0x00067c44 bgt 0x67c58 |
| while (1) {
0x00067c46 cmp.w fp, 0 |
0x00067c4a it ge |
| if (fp < 0) {
0x00067c4c mvnge fp, 0x55 |
| }
0x00067c50 b 0x6790e | goto label_4;
| label_25:
0x00067c52 mvn fp, 0xb |
0x00067c56 b 0x6790e | goto label_4;
0x00067c58 ldr r2, [pc, 0xd0] |
0x00067c5a mov r1, fp | r1 = fp;
0x00067c5c ldr r4, [pc, 0xd0] |
0x00067c5e movs r3, 0x7f | r3 = 0x7f;
0x00067c60 ldr r0, [pc, 0xd0] |
0x00067c62 add r2, pc | r2 = 0xcf992;
0x00067c64 add r4, pc | r4 = 0xcf998;
0x00067c66 adds r2, 7 | r2 += 7;
0x00067c68 add r0, pc | r0 = 0xcf9a0;
0x00067c6a strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x00067c6e movs r0, 7 | r0 = 7;
0x00067c70 bl 0x71448 | r0 = fcn_00071448 ();
0x00067c74 mov fp, r0 |
0x00067c76 b 0x67c46 |
| }
| label_28:
0x00067c78 blx 0x927c | fprintf_chk ()
0x00067c7c asrs r0, r1, 0xc | r0 = r1 >> 0xc;
0x00067c7e movs r6, r0 | r6 = r0;
0x00067c80 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00067c82 movs r0, r0 |
0x00067c84 asrs r0, r6, 0xb | r0 = r6 >> 0xb;
0x00067c86 movs r6, r0 | r6 = r0;
0x00067c88 uxth r2, r1 | r2 = (int16_t) r1;
0x00067c8a movs r3, r0 | r3 = r0;
0x00067c8c uxth r0, r0 | r0 = (int16_t) r0;
0x00067c8e movs r3, r0 | r3 = r0;
| if (r6 != 0) {
0x00067c90 cbz r6, 0x67d02 |
0x00067c92 movs r3, r0 | r3 = r0;
0x00067c94 push {r1, r7} |
0x00067c96 movs r3, r0 | r3 = r0;
0x00067c98 asrs r4, r5, 6 | r4 = r5 >> 6;
0x00067c9a movs r6, r0 | r6 = r0;
| if (r4 != 0) {
0x00067c9c cbz r4, 0x67cd4 |
0x00067c9e movs r3, r0 | r3 = r0;
0x00067ca0 uxtb r2, r2 | r2 = (int8_t) r2;
0x00067ca2 movs r3, r0 | r3 = r0;
0x00067ca4 sub sp, 0x68 |
0x00067ca6 movs r3, r0 | r3 = r0;
| if (r6 != 0) {
0x00067ca8 cbz r6, 0x67cae |
0x00067caa movs r3, r0 | r3 = r0;
0x00067cac uxth r4, r4 | r4 = (int16_t) r4;
| }
0x00067cae movs r3, r0 | r3 = r0;
0x00067cb0 lsls r0, r5, 0x13 | r0 = r5 << 0x13;
0x00067cb2 movs r0, r0 |
0x00067cb4 add sp, 0x98 |
0x00067cb6 movs r3, r0 | r3 = r0;
| if (r2 != 0) {
0x00067cb8 cbz r2, 0x67cc2 |
0x00067cba movs r3, r0 | r3 = r0;
0x00067cbc sxth r0, r6 | __asm ("sxth r0, r6");
0x00067cbe movs r3, r0 | r3 = r0;
0x00067cc0 add r7, sp, 0x360 | r7 += arg_360h;
| }
0x00067cc2 movs r3, r0 | r3 = r0;
0x00067cc4 sub sp, 0x70 |
0x00067cc6 movs r3, r0 | r3 = r0;
| if (r2 == 0) {
0x00067cc8 cbz r2, 0x67d04 | goto label_37;
| }
0x00067cca movs r3, r0 | r3 = r0;
0x00067ccc add r7, sp, 0x228 | r7 += arg_228h;
0x00067cce movs r3, r0 | r3 = r0;
0x00067cd0 add sp, 0x88 |
0x00067cd2 movs r3, r0 | r3 = r0;
| }
| if (r4 != 0) {
0x00067cd4 cbz r4, 0x67cfc |
0x00067cd6 movs r3, r0 | r3 = r0;
0x00067cd8 add r7, sp, 0x198 | r7 += arg_198h;
0x00067cda movs r3, r0 | r3 = r0;
| if (r4 != 0) {
0x00067cdc cbz r4, 0x67cec |
0x00067cde movs r3, r0 | r3 = r0;
0x00067ce0 add r7, sp, 0x200 | r7 += arg_200h;
0x00067ce2 movs r3, r0 | r3 = r0;
0x00067ce4 add r7, sp, 0x140 | r7 += arg_140h;
0x00067ce6 movs r3, r0 | r3 = r0;
0x00067ce8 add r7, sp, 0x280 | r7 += arg_338h;
0x00067cea movs r3, r0 | r3 = r0;
| }
| if (r4 == 0) {
0x00067cec cbz r4, 0x67d06 | goto label_38;
| }
0x00067cee movs r3, r0 | r3 = r0;
0x00067cf0 add r7, sp, 0xc0 | r7 += var_c0h;
0x00067cf2 movs r3, r0 | r3 = r0;
0x00067cf4 sub sp, 0x1f8 |
0x00067cf6 movs r3, r0 | r3 = r0;
0x00067cf8 invalid |
| }
0x00067cfc add r6, sp, 0x3d8 | r6 += arg_3d8h;
0x00067cfe movs r3, r0 | r3 = r0;
0x00067d00 sub sp, 0x110 |
| }
0x00067d02 movs r3, r0 | r3 = r0;
| label_37:
0x00067d04 cmp r4, 0x1c |
| label_38:
0x00067d06 movs r3, r0 | r3 = r0;
0x00067d08 add r6, sp, 0x388 | r6 += arg_388h;
0x00067d0a movs r3, r0 | r3 = r0;
0x00067d0c sub sp, 0xc0 |
0x00067d0e movs r3, r0 | r3 = r0;
0x00067d10 ldrh r4, [r0, r5] | r4 = *((r0 + r5));
0x00067d12 movs r3, r0 | r3 = r0;
0x00067d14 add r6, sp, 0x338 | r6 += arg_338h;
0x00067d16 movs r3, r0 | r3 = r0;
0x00067d18 sub sp, 0x70 |
0x00067d1a movs r3, r0 | r3 = r0;
0x00067d1c ldm r0!, {r2, r4, r5} | r2 = *(r0!);
| r4 = *((r0! + 4));
| r5 = *((r0! + 8));
0x00067d1e movs r3, r0 | r3 = r0;
0x00067d20 add r6, sp, 0x270 | r6 += arg_270h;
0x00067d22 movs r3, r0 | r3 = r0;
0x00067d24 add sp, 0x1a8 |
0x00067d26 movs r3, r0 | r3 = r0;
0x00067d28 add r7, sp, 0x218 | r7 += arg_218h;
0x00067d2a movs r3, r0 | r3 = r0;
0x00067d2c add r6, sp, 0x158 | r6 += var_158h;
0x00067d2e movs r3, r0 | r3 = r0;
0x00067d30 add r7, sp, 0x340 | r7 += arg_340h;
0x00067d32 movs r3, r0 | r3 = r0;
0x00067d34 add sp, 0x190 |
0x00067d36 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x67ee4 */
| #include <stdint.h>
|
; (fcn) fcn.00067ee4 () | void fcn_00067ee4 (int16_t arg_168h, int16_t arg_1f0h, uint32_t arg1) {
| int16_t var_0h;
| int16_t var_10h;
| int16_t var_6ch;
| r0 = arg1;
0x00067ee4 ldr r2, [pc, 0xc8] |
0x00067ee6 ldr r3, [pc, 0xcc] | r3 = *(0x67fb6);
0x00067ee8 push {r4, r5, r6, lr} |
0x00067eea sub sp, 0x70 |
0x00067eec add r2, pc | r2 = 0xcfea0;
0x00067eee ldr r3, [r2, r3] |
0x00067ef0 ldr r3, [r3] | r3 = *(0xcfea0);
0x00067ef2 str r3, [sp, 0x6c] | var_6ch = r3;
0x00067ef4 mov.w r3, 0 | r3 = 0;
0x00067ef8 cmp r0, 0 |
| if (r0 == 0) {
0x00067efa beq 0x67f96 | goto label_1;
| }
0x00067efc mov r5, r0 | r5 = r0;
0x00067efe blx 0x9628 | fcn_00009628 ();
0x00067f02 movs r2, 0 | r2 = 0;
0x00067f04 mov r3, r0 | r3 = r0;
0x00067f06 str r2, [r3] | *(r3) = r2;
0x00067f08 mov r0, r5 | r0 = r5;
0x00067f0a blx 0x9434 | r0 = fcn_00009434 ();
0x00067f0e mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00067f10 cbz r0, 0x67f16 | goto label_0;
| }
0x00067f12 ldrb r6, [r0, 0x12] | r6 = *((r0 + 0x12));
0x00067f14 cbz r6, 0x67f30 |
| while (r0 < 0) {
| label_0:
0x00067f16 ldr r2, [pc, 0xa0] |
0x00067f18 ldr r3, [pc, 0x98] | r3 = *(0x67fb4);
0x00067f1a add r2, pc | r2 = 0xcfed8;
0x00067f1c ldr r3, [r2, r3] | r3 = *(0xcfed8);
0x00067f1e ldr r2, [r3] | r2 = *(0xcfed8);
0x00067f20 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00067f22 eors r2, r3 | r2 ^= r3;
0x00067f24 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00067f28 bne 0x67faa | goto label_2;
| }
0x00067f2a mov r0, r4 | r0 = r4;
0x00067f2c add sp, 0x70 |
0x00067f2e pop {r4, r5, r6, pc} |
0x00067f30 mov r0, r5 | r0 = r5;
0x00067f32 blx 0x9128 | fcn_00009128 ();
0x00067f36 mov.w r3, 0x100 | r3 = 0x100;
0x00067f3a mov r2, sp | r2 = sp;
0x00067f3c add.w r1, r4, 0x13 | r1 = r4 + 0x13;
0x00067f40 blx 0x9334 | r0 = fcn_00009334 ();
0x00067f44 cmp r0, 0 |
0x00067f46 blt 0x67f16 |
| }
0x00067f48 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00067f4a and r3, r3, 0xf000 | r3 &= 0xf000;
0x00067f4c muls r0, r6, r0 | r0 = r6 * r0;
0x00067f4e cmp.w r3, 0x8000 |
0x00067f52 it eq |
| if (r3 != 0x8000) {
0x00067f54 moveq r6, 8 | r6 = 8;
| }
| if (r3 != 0x8000) {
0x00067f56 beq 0x67f92 |
0x00067f58 cmp.w r3, 0x4000 |
0x00067f5c it eq |
| if (r3 != 0x4000) {
0x00067f5e moveq r6, 4 | r6 = 4;
| }
| if (r3 == 0x4000) {
0x00067f60 beq 0x67f92 | goto label_3;
| }
0x00067f62 cmp.w r3, 0xa000 |
0x00067f66 it eq |
| if (r3 != 0xa000) {
0x00067f68 moveq r6, 0xa | r6 = 0xa;
| }
| if (r3 == 0xa000) {
0x00067f6a beq 0x67f92 | goto label_3;
| }
0x00067f6c cmp.w r3, 0x1000 |
0x00067f70 it eq |
| if (r3 != 0x1000) {
0x00067f72 moveq r6, 1 | r6 = 1;
| }
| if (r3 == 0x1000) {
0x00067f74 beq 0x67f92 | goto label_3;
| }
0x00067f76 cmp.w r3, 0xc000 |
0x00067f7a it eq |
| if (r3 != 0xc000) {
0x00067f7c moveq r6, 0xc | r6 = 0xc;
| }
| if (r3 == 0xc000) {
0x00067f7e beq 0x67f92 | goto label_3;
| }
0x00067f80 cmp.w r3, 0x2000 |
0x00067f84 it eq |
| if (r3 != 0x2000) {
0x00067f86 moveq r6, 2 | r6 = 2;
| }
| if (r3 == 0x2000) {
0x00067f88 beq 0x67f92 | goto label_3;
| }
0x00067f8a cmp.w r3, 0x6000 |
0x00067f8e it eq |
| if (r3 == 0x6000) {
0x00067f90 moveq r6, 6 | r6 = 6;
| goto label_3;
| }
| }
| label_3:
0x00067f92 strb r6, [r4, 0x12] | *((r4 + 0x12)) = r6;
0x00067f94 b 0x67f16 | goto label_0;
| label_1:
0x00067f96 ldr r1, [pc, 0x24] |
0x00067f98 movs r2, 0x41 | r2 = 0x41;
0x00067f9a ldr r3, [pc, 0x24] |
0x00067f9c ldr r0, [pc, 0x24] |
0x00067f9e add r1, pc | r1 = 0xcff60;
0x00067fa0 add r3, pc | r3 = 0xcff66;
0x00067fa2 adds r1, 7 | r1 += 7;
0x00067fa4 add r0, pc | r0 = 0xcff6c;
0x00067fa6 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00067fa8 invalid |
| label_2:
0x00067faa blx 0x927c | fprintf_chk ()
0x00067fae nop |
0x00067fb0 lsrs r0, r3, 0xf | r0 = r3 >> 0xf;
0x00067fb2 movs r6, r0 | r6 = r0;
0x00067fb4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00067fb6 movs r0, r0 |
0x00067fb8 lsrs r2, r5, 0xe | r2 = r5 >> 0xe;
0x00067fba movs r6, r0 | r6 = r0;
0x00067fbc add r5, sp, 0x168 | r5 += arg_168h;
0x00067fbe movs r3, r0 | r3 = r0;
0x00067fc0 add r5, sp, 0x1f0 | r5 += arg_1f0h;
0x00067fc2 movs r3, r0 | r3 = r0;
0x00067fc4 strh r4, [r4, r7] | *((r4 + r7)) = r4;
0x00067fc6 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x68180 */
| #include <stdint.h>
|
; (fcn) fcn.00068180 () | void fcn_00068180 (int16_t arg_2h, int16_t arg_78h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00068180 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00068184 sub sp, 0x54 |
0x00068186 strd r2, r3, [sp, 0x1c] | __asm ("strd r2, r3, [var_1ch]");
0x0006818a mov r8, r1 | r8 = r1;
0x0006818c ldr.w r2, [pc, 0x480] |
0x00068190 ldr.w r3, [pc, 0x480] | r3 = *(0x68614);
0x00068194 add r2, pc | r2 = 0xd07a8;
0x00068196 ldr r3, [r2, r3] |
0x00068198 ldr r2, [sp, 0x78] | r2 = *(arg_78h);
0x0006819a ldr r3, [r3] | r3 = *(0xd07a8);
0x0006819c str r3, [sp, 0x4c] | var_4ch = r3;
0x0006819e mov.w r3, 0 | r3 = 0;
0x000681a2 movs r3, 0 | r3 = 0;
0x000681a4 strd r3, r3, [sp, 0x40] | __asm ("strd r3, r3, [var_40h]");
0x000681a6 adds r3, 0x10 | r3 += 0x10;
0x000681a8 str r3, [sp, 0x48] | var_48h = r3;
0x000681aa str r2, [sp, 0x24] | var_24h = r2;
0x000681ac cmp r0, 0 |
| if (arg_78h == ) {
0x000681ae beq.w 0x682d2 | goto label_22;
| }
0x000681b2 mov r1, r3 | r1 = r3;
0x000681b4 str r3, [sp, 0xc] | var_ch = r3;
0x000681b6 str r3, [sp, 4] | var_4h = r3;
0x000681b8 add r3, sp, 0x40 | r3 += var_40h;
0x000681ba str r3, [sp, 8] | var_8h = r3;
0x000681bc mov.w r3, -1 | r3 = -1;
0x000681c0 str r3, [sp] | *(sp) = r3;
0x000681c2 mov.w r2, -1 | r2 = -1;
0x000681c6 mov.w r3, -1 | r3 = -1;
0x000681ca bl 0x6b4cc | r0 = fcn_0006b4cc (r0, r1, r2, r3, r4, r5, r6);
0x000681ce mov r5, r0 | r5 = r0;
| label_3:
0x000681d0 cmp r5, 0 |
| if (r5 < 0) {
0x000681d2 blt 0x6829e | goto label_5;
| }
0x000681d4 ldr r4, [sp, 0x40] | r4 = var_40h;
0x000681d6 ldrb r5, [r4] | r5 = *(r4);
0x000681d8 cmp r5, 0 |
| if (r5 == 0) {
0x000681da beq 0x6829e | goto label_5;
| }
0x000681dc ldr.w r3, [pc, 0x438] |
0x000681e0 movs r6, 1 | r6 = 1;
0x000681e2 add r3, pc | r3 = 0xd07fe;
0x000681e4 str r3, [sp, 0x3c] | var_3ch = r3;
0x000681e6 ldr.w r3, [pc, 0x434] |
0x000681e8 adds r4, 0x34 | r4 += 0x34;
0x000681ea add r3, pc | r3 = 0xd080c;
0x000681ec str r3, [sp, 0x30] | var_30h = r3;
| do {
| label_4:
0x000681ee ldr.w r7, [pc, 0x430] |
0x000681f2 ldr.w sb, [pc, 0x430] |
0x000681f6 add r7, pc | r7 = 0xd081c;
0x000681f8 add sb, pc | sb = 0xd0822;
| label_2:
0x000681fa mov r1, r5 | r1 = r5;
0x000681fc mov r0, r7 | r0 = r7;
0x000681fe blx 0x8bb0 | r0 = get_current_dir_name ();
| if (r0 == 0) {
0x00068202 cbz r0, 0x68242 | goto label_23;
| }
0x00068204 ldrb r1, [r4, 1] | r1 = *((r4 + 1));
0x00068206 adds r7, r4, 1 | r7 = r4 + 1;
| if (r1 == 0) {
0x00068208 cbz r1, 0x6822c | goto label_1;
| }
0x0006820a ldr.w sb, [pc, 0x41c] |
0x0006820e add sb, pc | sb = 0xd083c;
| label_0:
0x00068210 cmp r1, 0x5c |
0x00068212 mov r3, r7 | r3 = r7;
0x00068214 add.w r7, r7, 1 | r7++;
0x00068218 ldrb r5, [r7] | r5 = *(r7);
0x0006821a mov r4, r7 | r4 = r7;
| if (r1 == 0x5c) {
0x0006821c beq 0x68234 | goto label_24;
| }
0x0006821e mov r0, sb | r0 = sb;
0x00068220 blx 0x8bb0 | r0 = get_current_dir_name ();
| if (r0 == 0) {
0x00068224 cbz r0, 0x68258 | goto label_25;
| }
0x00068226 adds r6, 1 | r6++;
0x00068228 cmp r5, 0 |
0x0006822a bne 0x681ee |
| } while (r5 != 0);
| do {
| label_1:
0x0006822c ldr r3, [sp, 0x48] | r3 = var_48h;
0x0006822e movs r5, 0 | r5 = 0;
0x00068230 str r3, [sp, 0x38] | var_38h = r3;
0x00068232 b 0x682a2 | goto label_7;
| label_24:
0x00068234 cmp r5, 0 |
0x00068236 beq 0x6822c |
| } while (r5 == 0);
0x00068238 ldrb r1, [r3, 2] | r1 = *((r3 + 2));
0x0006823a adds r7, r3, 2 | r7 = r3 + 2;
0x0006823c cmp r1, 0 |
| if (r1 != 0) {
0x0006823e bne 0x68210 | goto label_0;
| }
0x00068240 b 0x6822c | goto label_1;
| label_23:
0x00068242 mov r1, r5 | r1 = r5;
0x00068244 mov r0, sb | r0 = sb;
0x00068246 blx 0x8bb0 | get_current_dir_name ();
0x00068248 ldc p8, c2, [r4], 0 | __asm ("ldc p8, c2, [r4], 0");
| if (r1 == 0) {
0x0006824c beq 0x682f6 | goto label_26;
| }
0x0006824e ldrb r5, [r4, 1]! | r5 = *((r4 += 1));
0x00068252 cmp r5, 0 |
| if (r5 != 0) {
0x00068254 bne 0x681fa | goto label_2;
| }
0x00068256 b 0x6822c | goto label_1;
| label_25:
0x00068258 cmp r5, 0 |
| if (r5 == 0) {
0x0006825a beq 0x6822c | goto label_1;
| }
0x0006825c mov r1, r5 | r1 = r5;
0x0006825e b 0x68210 | goto label_0;
| label_15:
0x00068260 ldrb r7, [r4, 1] | r7 = *((r4 + 1));
0x00068262 adds r4, 1 | r4++;
0x00068264 cmp r7, 0 |
| if (r7 != 0) {
0x00068266 bne.w 0x683b6 | goto label_8;
| }
| label_9:
0x0006826a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0006826c movs r2, 0 | r2 = 0;
0x0006826e ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00068270 strb r2, [r3, r1] | *((r3 + r1)) = r2;
0x00068272 ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x00068274 cbz r3, 0x68278 |
0x00068276 strb r2, [r3, r5] | *((r3 + r5)) = r2;
| }
| label_13:
0x00068278 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0006827a mov r0, r8 | r0 = r8;
0x0006827c ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x0006827e adds r3, r1, 1 | r3 = r1 + 1;
0x00068280 ittt ne |
| if (r3 == r1) {
0x00068282 ldrne r3, [sp, 0x44] | r3 = var_44h;
| }
| if (r3 == r1) {
0x00068284 movne r2, 0 | r2 = 0;
| }
| if (r3 == r1) {
0x00068286 strbne r2, [r3, r1] | *((r3 + r1)) = r2;
| }
0x00068288 mov r1, r6 | r1 = r6;
0x0006828a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006828c str r3, [sp, 4] | var_4h = r3;
0x0006828e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00068290 str r3, [sp] | *(sp) = r3;
0x00068292 ldrd r2, r3, [sp, 0x44] | __asm ("ldrd r2, r3, [var_48h]");
0x00068296 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00068298 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0006829a bge.w 0x68404 | goto label_27;
| }
| label_5:
0x0006829e ldr r3, [sp, 0x48] | r3 = var_48h;
0x000682a0 str r3, [sp, 0x38] | var_38h = r3;
| label_7:
0x000682a2 ldr r0, [sp, 0x38] | r0 = var_38h;
0x000682a4 blx 0x8dac | fcn_00008dac ();
0x000682a8 ldr r0, [sp, 0x44] | r0 = var_44h;
0x000682aa blx 0x8dac | fcn_00008dac ();
0x000682ae ldr r0, [sp, 0x40] | r0 = var_40h;
0x000682b0 blx 0x8dac | fcn_00008dac ();
0x000682b4 ldr r2, [pc, 0x374] |
0x000682b6 ldr r3, [pc, 0x35c] | r3 = *(0x68616);
0x000682b8 add r2, pc | r2 = 0xd08e8;
0x000682ba ldr r3, [r2, r3] | r3 = *(0xd08e8);
0x000682bc ldr r2, [r3] | r2 = *(0xd08e8);
0x000682be ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000682c0 eors r2, r3 | r2 ^= r3;
0x000682c2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000682c6 bne.w 0x6860a | goto label_28;
| }
0x000682c8 strh r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x000682ca mov r0, r5 | r0 = r5;
0x000682cc add sp, 0x54 |
0x000682ce pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x000682d2 add r3, sp, 0x40 | r3 += var_40h;
0x000682d4 str r0, [sp, 0x10] | var_10h = r0;
0x000682d6 str r3, [sp, 0xc] | var_ch = r3;
0x000682d8 mov.w r3, -1 | r3 = -1;
0x000682dc strd r0, r0, [sp, 4] | __asm ("strd r0, r0, [var_4h]");
0x000682e0 mov.w r2, -1 | r2 = -1;
0x000682e4 str r3, [sp] | *(sp) = r3;
0x000682e6 mvn r0, 0x63 | r0 = ~0x63;
0x000682ea mov.w r3, -1 | r3 = -1;
0x000682ee bl 0x6b8d4 | r0 = fcn_0006b8d4 (r0, r1, r2, r3);
0x000682f2 mov r5, r0 | r5 = r0;
0x000682f4 b 0x681d0 | goto label_3;
| label_26:
0x000682f6 add.w sb, sp, 0x44 | sb += var_44h;
0x000682fa movs r2, 1 | r2 = 1;
0x000682fc movs r1, 2 | r1 = 2;
0x000682fe mov r0, sb | r0 = sb;
0x00068300 bl 0x6530c | r0 = fcn_0006530c (r0, r1, r2);
0x00068304 cmp r0, 0 |
| if (r0 == 0) {
0x00068306 beq.w 0x685de | goto label_29;
| }
0x0006830a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0006830c strb r5, [r3] | *(r3) = r5;
0x0006830e adds r5, r4, 1 | r5 = r4 + 1;
0x00068310 ldrb.w sl, [r4, 1] | sl = *((r4 + 1));
0x00068314 cmp.w sl, 0 |
| if (sl == 0) {
0x00068318 beq 0x68390 | goto label_30;
| }
0x0006831a ldr r4, [pc, 0x314] |
0x0006831c mov.w r3, -1 | r3 = -1;
0x00068320 ldr r7, [pc, 0x310] |
0x00068322 str r3, [sp, 0x28] | var_28h = r3;
0x00068324 movs r3, 1 | r3 = 1;
0x00068326 add r4, pc | r4 = 0xd095c;
0x00068328 mov fp, r3 |
0x0006832a mov r3, r4 | r3 = r4;
0x0006832c add r7, pc | r7 = 0xd0964;
0x0006832e mov r4, sl | r4 = sl;
0x00068330 mov sl, r3 | sl = r3;
| label_6:
0x00068332 mov r1, r4 | r1 = r4;
0x00068334 mov r0, r7 | r0 = r7;
0x00068336 blx 0x8bb0 | r0 = get_current_dir_name ();
| if (r0 == 0) {
0x0006833a cbz r0, 0x6834a | goto label_31;
| }
0x0006833c adds r4, r5, 1 | r4 = r5 + 1;
0x0006833e ldrb r5, [r5, 1] | r5 = *((r5 + 1));
0x00068340 adds r6, 1 | r6++;
0x00068342 cmp r5, 0 |
| if (r5 != 0) {
0x00068344 bne.w 0x681ee | goto label_4;
| }
0x00068348 b 0x6829e | goto label_5;
| label_31:
0x0006834a cmp r4, 0x3d |
| if (r4 == 0x3d) {
0x0006834c beq 0x68398 | goto label_32;
| }
0x0006834e mov r1, r4 | r1 = r4;
0x00068350 mov r0, sl | r0 = sl;
0x00068352 blx 0x8bb0 | r0 = get_current_dir_name ();
0x00068356 cmp r0, 0 |
| if (r0 == 0) {
0x00068358 beq.w 0x685d6 | goto label_33;
| }
0x0006835a strh r5, [r7, 8] | *((r7 + 8)) = r5;
0x0006835c ldr r2, [sp, 0x28] | r2 = var_28h;
0x0006835e mov r3, r2 | r3 = r2;
0x00068360 cmp.w r2, -1 |
0x00068364 it eq |
| if (r2 != -1) {
0x00068366 moveq r3, fp | r3 = fp;
| }
0x00068368 str r3, [sp, 0x28] | var_28h = r3;
| label_19:
0x0006836a movs r2, 1 | r2 = 1;
0x0006836c add.w r1, fp, 2 | r1 += arg_2h;
0x00068370 mov r0, sb | r0 = sb;
0x00068372 bl 0x6530c | r0 = fcn_0006530c (r0, r1, r2);
0x00068376 cmp r0, 0 |
| if (r0 == 0) {
0x00068378 beq.w 0x685de | goto label_29;
| }
0x0006837c ldr r2, [sp, 0x44] | r2 = var_44h;
0x0006837e strb.w r4, [r2, fp] | *((r2 + fp)) = r4;
0x00068382 add.w fp, fp, 1 |
0x00068386 ldrb r4, [r5, 1]! | r4 = *((r5 += 1));
0x0006838a cmp r4, 0 |
| if (r4 != 0) {
0x0006838c bne 0x68332 | goto label_6;
| }
0x0006838e mov sl, r4 | sl = r4;
| label_30:
0x00068390 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00068392 mov r5, sl | r5 = sl;
0x00068394 str r3, [sp, 0x38] | var_38h = r3;
0x00068396 b 0x682a2 | goto label_7;
| label_32:
0x00068398 ldrb.w sl, [r5, 1] | sl = *((r5 + 1));
0x0006839c adds r4, r5, 1 | r4 = r5 + 1;
0x0006839e str r0, [sp, 0x38] | var_38h = r0;
0x000683a0 str.w fp, [sp, 0x2c] | __asm ("str.w fp, [var_2ch]");
0x000683a4 cmp.w sl, 0 |
| if (sl == 0) {
0x000683a8 beq.w 0x68606 | goto label_34;
| }
0x000683ac ldr r5, [sp, 0x38] | r5 = var_38h;
0x000683ae mov fp, r7 |
0x000683b0 add.w sb, sp, 0x48 | sb += var_48h;
0x000683b4 mov r7, sl | r7 = sl;
| label_8:
0x000683b6 mov r1, r7 | r1 = r7;
0x000683b8 mov r0, fp | r0 = fp;
0x000683ba blx 0x8bb0 | r0 = get_current_dir_name ();
| if (r0 == 0) {
0x000683be cbz r0, 0x68408 | goto label_35;
| }
0x000683c0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000683c2 movs r2, 0 | r2 = 0;
0x000683c4 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000683c6 adds r6, 1 | r6++;
0x000683c8 strb r2, [r3, r1] | *((r3 + r1)) = r2;
0x000683ca ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x000683cc cbz r3, 0x683d0 |
0x000683ce strb r2, [r3, r5] | *((r3 + r5)) = r2;
| }
| label_10:
0x000683d0 ldr r1, [sp, 0x28] | r1 = var_28h;
0x000683d2 mov r0, r8 | r0 = r8;
0x000683d4 adds r2, r1, 1 | r2 = r1 + 1;
0x000683d6 ittt ne |
| if (r2 == r1) {
0x000683d8 ldrne r3, [sp, 0x44] | r3 = var_44h;
| }
| if (r2 == r1) {
0x000683da movne r2, 0 | r2 = 0;
| }
| if (r2 == r1) {
0x000683dc strbne r2, [r3, r1] | *((r3 + r1)) = r2;
| }
0x000683de mov r1, r6 | r1 = r6;
0x000683e0 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000683e2 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x000683e4 str r3, [sp, 4] | var_4h = r3;
0x000683e6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000683e8 str r3, [sp] | *(sp) = r3;
0x000683ea ldrd r2, r3, [sp, 0x44] | __asm ("ldrd r2, r3, [var_48h]");
0x000683ee blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000683f0 cmp r0, 0 |
| if (r0 < 0) {
0x000683f2 blt.w 0x685e8 | goto label_36;
| }
0x000683f6 movs r3, 0 | r3 = 0;
0x000683f8 adds r4, 1 | r4++;
0x000683fa str r3, [sp, 0x48] | var_48h = r3;
0x000683fc ldrb r5, [r4] | r5 = *(r4);
0x000683fe cmp r5, 0 |
| if (r5 != 0) {
0x00068400 bne.w 0x681ee | goto label_4;
| }
| label_27:
0x00068404 movs r5, 0 | r5 = 0;
0x00068406 b 0x682a2 | goto label_7;
| label_35:
0x00068408 cmp r7, 0x27 |
| if (r7 == 0x27) {
0x0006840a beq 0x68500 | goto label_37;
| }
0x0006840c cmp r7, 0x22 |
| if (r7 == 0x22) {
0x0006840e beq.w 0x6852e | goto label_38;
| }
0x00068410 strh r6, [r1, 4] | *((r1 + 4)) = r6;
0x00068412 cmp r7, 0x5c |
| if (r7 == 0x5c) {
0x00068414 beq 0x6842e | goto label_11;
| }
0x00068416 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00068418 mov r1, r7 | r1 = r7;
0x0006841a blx 0x8bb0 | r0 = get_current_dir_name ();
0x0006841e cmp r0, 0 |
| if (r0 == 0) {
0x00068420 beq.w 0x685f0 | goto label_39;
| }
0x00068424 ldrb r7, [r4, 1]! | r7 = *((r4 += 1));
0x00068428 cmp r7, 0 |
| if (r7 != 0) {
0x0006842a bne 0x683b6 | goto label_8;
| }
0x0006842c b 0x6826a | goto label_9;
| label_11:
0x0006842e ldrb r7, [r4, 1] | r7 = *((r4 + 1));
0x00068430 adds r4, 1 | r4++;
0x00068432 cmp r7, 0 |
| if (r7 == 0) {
0x00068434 beq.w 0x6826a | goto label_9;
| }
0x00068438 ldr r0, [pc, 0x1fc] |
0x0006843a mov r1, r7 | r1 = r7;
0x0006843c add r0, pc | r0 = 0xd0a78;
0x0006843e blx 0x8bb0 | r0 = get_current_dir_name ();
0x00068442 cmp r0, 0 |
| if (r0 == 0) {
0x00068444 beq 0x684e2 | goto label_40;
| }
| label_20:
0x00068446 ldrb r7, [r4, 1] | r7 = *((r4 + 1));
0x00068448 adds r4, 1 | r4++;
0x0006844a cmp r7, 0 |
| if (r7 == 0) {
0x0006844c beq.w 0x6826a | goto label_9;
| }
| label_14:
0x00068450 ldr.w fp, [pc, 0x1e8] |
0x00068454 mov.w sb, -1 | sb = -1;
0x00068458 ldr r3, [pc, 0x1e4] |
0x0006845a add.w sl, sp, 0x48 | sl += var_48h;
0x0006845e add fp, pc | fp = 0xd0a9e;
0x00068460 add r3, pc | r3 = 0xd0aa4;
0x00068462 str r3, [sp, 0x34] | var_34h = r3;
| label_12:
0x00068464 mov r1, r7 | r1 = r7;
0x00068466 mov r0, fp | r0 = fp;
0x00068468 blx 0x8bb0 | r0 = get_current_dir_name ();
| if (r0 != 0) {
0x0006846c cbz r0, 0x6848e |
0x0006846e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00068470 movs r2, 0 | r2 = 0;
0x00068472 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00068474 adds r6, 1 | r6++;
0x00068476 strb r2, [r3, r1] | *((r3 + r1)) = r2;
0x00068478 ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x0006847a cbz r3, 0x6847e |
0x0006847c strb r2, [r3, r5] | *((r3 + r5)) = r2;
| }
0x0006847e cmp.w sb, -1 |
0x00068482 ittt ne |
| if (sb == -1) {
0x00068484 ldrne r3, [sp, 0x48] | r3 = var_48h;
| }
| if (sb == -1) {
0x00068486 movne r2, 0 | r2 = 0;
| }
| if (sb == -1) {
0x00068488 strbne r2, [r3, sb] | *((r3 + sb)) = r2;
| }
0x0006848c b 0x683d0 | goto label_10;
| }
0x0006848e cmp r7, 0x5c |
| if (r7 == 0x5c) {
0x00068490 beq 0x6842e | goto label_11;
| }
0x00068492 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00068494 mov r1, r7 | r1 = r7;
0x00068496 blx 0x8bb0 | r0 = get_current_dir_name ();
0x0006849a cmp r0, 0 |
| if (r0 == 0) {
0x0006849c beq.w 0x685d0 | goto label_41;
| }
0x000684a0 cmp.w sb, -1 |
0x000684a4 it eq |
| if (sb != -1) {
0x000684a6 moveq sb, r5 | sb = r5;
| }
| label_18:
0x000684a8 movs r2, 1 | r2 = 1;
0x000684aa adds r1, r5, 2 | r1 = r5 + 2;
0x000684ac mov r0, sl | r0 = sl;
0x000684ae bl 0x6530c | fcn_0006530c (r0, r1, r2);
0x000684b2 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000684b4 cmp r0, 0 |
| if (r0 == 0) {
0x000684b6 beq.w 0x685e0 | goto label_42;
| }
0x000684ba strb r7, [r3, r5] | *((r3 + r5)) = r7;
0x000684bc adds r5, 1 | r5++;
0x000684be ldrb r7, [r4, 1]! | r7 = *((r4 += 1));
0x000684c2 cmp r7, 0 |
| if (r7 != 0) {
0x000684c4 bne 0x68464 | goto label_12;
| }
0x000684c6 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000684c8 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000684ca strb r7, [r3, r2] | *((r3 + r2)) = r7;
0x000684cc ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x000684ce cbz r3, 0x684d2 |
| label_21:
0x000684d0 strb r7, [r3, r5] | *((r3 + r5)) = r7;
| }
0x000684d2 cmp.w sb, -1 |
0x000684d6 ittt ne |
| if (sb == -1) {
0x000684d8 ldrne r3, [sp, 0x48] | r3 = var_48h;
| }
| if (sb == -1) {
0x000684da movne r2, 0 | r2 = 0;
| }
| if (sb == -1) {
0x000684dc strbne r2, [r3, sb] | *((r3 + sb)) = r2;
| }
0x000684e0 b 0x68278 | goto label_13;
| label_40:
0x000684e2 movs r2, 1 | r2 = 1;
0x000684e4 adds r1, r5, 2 | r1 = r5 + 2;
0x000684e6 add r0, sp, 0x48 | r0 += var_48h;
0x000684e8 bl 0x6530c | fcn_0006530c (r0, r1, r2);
0x000684ec ldr r3, [sp, 0x48] | r3 = var_48h;
0x000684ee cmp r0, 0 |
| if (r0 == 0) {
0x000684f0 beq 0x685e0 | goto label_42;
| }
0x000684f2 strb r7, [r3, r5] | *((r3 + r5)) = r7;
0x000684f4 adds r4, 1 | r4++;
0x000684f6 ldrb r7, [r4] | r7 = *(r4);
0x000684f8 adds r5, 1 | r5++;
0x000684fa cmp r7, 0 |
| if (r7 != 0) {
0x000684fc bne 0x68450 | goto label_14;
| }
0x000684fe b 0x6826a | goto label_9;
| label_37:
0x00068500 ldrb r7, [r4, 1] | r7 = *((r4 + 1));
0x00068502 adds r4, 1 | r4++;
0x00068504 cmp r7, 0 |
| if (r7 == 0) {
0x00068506 beq.w 0x6826a | goto label_9;
| }
| label_16:
0x0006850a cmp r7, 0x27 |
| if (r7 == 0x27) {
0x0006850c beq.w 0x68260 | goto label_15;
| }
0x00068510 movs r2, 1 | r2 = 1;
0x00068512 adds r1, r5, 2 | r1 = r5 + 2;
0x00068514 mov r0, sb | r0 = sb;
0x00068516 bl 0x6530c | fcn_0006530c (r0, r1, r2);
0x0006851a ldr r3, [sp, 0x48] | r3 = var_48h;
0x0006851c cmp r0, 0 |
| if (r0 == 0) {
0x0006851e beq 0x685e0 | goto label_42;
| }
0x00068520 strb r7, [r3, r5] | *((r3 + r5)) = r7;
0x00068522 adds r5, 1 | r5++;
0x00068524 ldrb r7, [r4, 1]! | r7 = *((r4 += 1));
0x00068528 cmp r7, 0 |
| if (r7 != 0) {
0x0006852a bne 0x6850a | goto label_16;
| }
0x0006852c b 0x6826a | goto label_9;
| label_38:
0x0006852e ldrb r7, [r4, 1] | r7 = *((r4 + 1));
0x00068530 adds r4, 1 | r4++;
0x00068532 cmp r7, 0 |
| if (r7 == 0) {
0x00068534 beq.w 0x6826a | goto label_9;
| }
| label_17:
0x00068538 cmp r7, 0x22 |
| if (r7 == 0x22) {
0x0006853a beq.w 0x68260 | goto label_15;
| }
0x0006853e cmp r7, 0x5c |
| if (r7 == 0x5c) {
0x00068540 beq 0x68560 | goto label_43;
| }
0x00068542 movs r2, 1 | r2 = 1;
0x00068544 adds r1, r5, 2 | r1 = r5 + 2;
0x00068546 mov r0, sb | r0 = sb;
0x00068548 bl 0x6530c | fcn_0006530c (r0, r1, r2);
0x0006854c ldr r3, [sp, 0x48] | r3 = var_48h;
0x0006854e cmp r0, 0 |
| if (r0 == 0) {
0x00068550 beq 0x685e0 | goto label_42;
| }
0x00068552 strb r7, [r3, r5] | *((r3 + r5)) = r7;
0x00068554 adds r5, 1 | r5++;
0x00068556 ldrb r7, [r4, 1]! | r7 = *((r4 += 1));
0x0006855a cmp r7, 0 |
| if (r7 != 0) {
0x0006855c bne 0x68538 | goto label_17;
| }
0x0006855e b 0x6826a | goto label_9;
| label_43:
0x00068560 ldrb.w sl, [r4, 1] | sl = *((r4 + 1));
0x00068564 cmp.w sl, 0 |
| if (sl == 0) {
0x00068568 beq.w 0x6826a | goto label_9;
| }
0x0006856c ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006856e mov r1, sl | r1 = sl;
0x00068570 blx 0x8bb0 | r0 = get_current_dir_name ();
| if (r0 == 0) {
0x00068574 cbz r0, 0x68594 | goto label_44;
| }
0x00068576 movs r2, 1 | r2 = 1;
0x00068578 adds r1, r5, 2 | r1 = r5 + 2;
0x0006857a mov r0, sb | r0 = sb;
0x0006857c bl 0x6530c | r0 = fcn_0006530c (r0, r1, r2);
| if (r0 == 0) {
0x00068580 cbz r0, 0x685de | goto label_29;
| }
0x00068582 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00068584 adds r4, 2 | r4 += 2;
0x00068586 strb.w sl, [r2, r5] | *((r2 + r5)) = sl;
0x0006858a adds r2, r5, 1 | r2 = r5 + 1;
0x0006858c ldrb r7, [r4] | r7 = *(r4);
| if (r7 == 0) {
0x0006858e cbz r7, 0x685bc | goto label_45;
| }
| do {
0x00068590 mov r5, r2 | r5 = r2;
0x00068592 b 0x68538 | goto label_17;
| label_44:
0x00068594 cmp.w sl, 0xa |
| if (sl == 0xa) {
0x00068598 beq 0x685c0 | goto label_46;
| }
0x0006859a movs r2, 1 | r2 = 1;
0x0006859c adds r1, r5, 3 | r1 = r5 + 3;
0x0006859e mov r0, sb | r0 = sb;
0x000685a0 bl 0x6530c | r0 = fcn_0006530c (r0, r1, r2);
| if (r0 == 0) {
0x000685a4 cbz r0, 0x685de | goto label_29;
| }
0x000685a6 ldr r2, [sp, 0x48] | r2 = var_48h;
0x000685a8 adds r4, 2 | r4 += 2;
0x000685aa strb r7, [r2, r5] | *((r2 + r5)) = r7;
0x000685ac adds r2, r5, 2 | r2 = r5 + 2;
0x000685ae ldr r1, [sp, 0x48] | r1 = var_48h;
0x000685b0 add r1, r5 | r1 += r5;
0x000685b2 strb.w sl, [r1, 1] | *((r1 + 1)) = sl;
0x000685b6 ldrb r7, [r4] | r7 = *(r4);
0x000685b8 cmp r7, 0 |
0x000685ba bne 0x68590 |
| } while (r7 != 0);
| label_45:
0x000685bc mov r5, r2 | r5 = r2;
0x000685be b 0x6826a | goto label_9;
| label_46:
0x000685c0 ldrb r7, [r4, 2] | r7 = *((r4 + 2));
0x000685c2 adds r4, 2 | r4 += 2;
0x000685c4 cmp r7, 0 |
| if (r7 == 0) {
0x000685c6 beq.w 0x6826a | goto label_9;
| }
0x000685ca mov r2, r5 | r2 = r5;
0x000685cc mov r5, r2 | r5 = r2;
0x000685ce b 0x68538 | goto label_17;
| label_41:
0x000685d0 mov.w sb, -1 | sb = -1;
0x000685d4 b 0x684a8 | goto label_18;
| label_33:
0x000685d6 mov.w r3, -1 | r3 = -1;
0x000685da str r3, [sp, 0x28] | var_28h = r3;
0x000685dc b 0x6836a | goto label_19;
| label_29:
0x000685de ldr r3, [sp, 0x48] | r3 = var_48h;
| do {
| label_42:
0x000685e0 mvn r5, 0xb | r5 = ~0xb;
0x000685e4 str r3, [sp, 0x38] | var_38h = r3;
0x000685e6 b 0x682a2 | goto label_7;
| label_36:
0x000685e8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000685ea mov r5, r0 | r5 = r0;
0x000685ec str r3, [sp, 0x38] | var_38h = r3;
0x000685ee b 0x682a2 | goto label_7;
| label_39:
0x000685f0 movs r2, 1 | r2 = 1;
0x000685f2 adds r1, r5, 2 | r1 = r5 + 2;
0x000685f4 add r0, sp, 0x48 | r0 += var_48h;
0x000685f6 bl 0x6530c | fcn_0006530c (r0, r1, r2);
0x000685fa ldr r3, [sp, 0x48] | r3 = var_48h;
0x000685fc cmp r0, 0 |
0x000685fe beq 0x685e0 |
| } while (r0 == 0);
0x00068600 strb r7, [r3, r5] | *((r3 + r5)) = r7;
0x00068602 adds r5, 1 | r5++;
0x00068604 b 0x68446 | goto label_20;
| label_34:
0x00068606 mov r5, r0 | r5 = r0;
0x00068608 b 0x6826a | goto label_9;
| label_28:
0x0006860a blx 0x927c | fprintf_chk ()
0x0006860e nop |
0x00068610 lsrs r0, r6, 4 | r0 = r6 >> 4;
0x00068612 movs r6, r0 | r6 = r0;
0x00068614 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00068616 movs r0, r0 |
0x00068618 b 0x684d0 | goto label_21;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x68644 */
| #include <stdint.h>
|
; (fcn) fcn.00068644 () | void fcn_00068644 (int16_t arg3) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r2 = arg3;
0x00068644 push {r4, lr} |
0x00068646 sub sp, 0x18 |
0x00068648 ldr.w lr, [pc, 0x4c] |
0x0006864c add r3, sp, 0xc | r3 += var_ch;
0x0006864e movs r4, 0 | r4 = 0;
0x00068650 ldr.w ip, [pc, 0x48] | ip = *(0x6869c);
0x00068654 add lr, pc | lr = 0xd0cf0;
0x00068656 str r3, [sp] | *(sp) = r3;
0x00068658 add r3, sp, 0x10 | r3 += var_10h;
0x0006865a ldr.w ip, [lr, ip] |
0x0006865e ldr.w ip, [ip] | ip = *(0xd0cf0);
0x00068662 str.w ip, [sp, 0x14] | __asm ("str.w ip, [var_14h]");
0x00068666 mov.w ip, 0 |
0x0006866a strd r4, r2, [sp, 0xc] | __asm ("strd r4, r2, [var_ch]");
0x0006866e ldr r2, [pc, 0x30] |
0x00068670 add r2, pc | r2 = 0xd0d16;
0x00068672 bl 0x68180 | fcn_00068180 (r0, r1, r2, r3, r4, r5);
0x00068676 ldr r2, [pc, 0x2c] |
0x00068678 cmp r0, 0 |
0x0006867a ldr r3, [pc, 0x20] | r3 = *(0x6869e);
0x0006867c it ge |
| if (r0 < 0) {
0x0006867e ldrge r0, [sp, 0xc] | r0 = var_ch;
| }
0x00068680 add r2, pc | r2 = 0xd0d2a;
0x00068682 ldr r3, [r2, r3] | r3 = *(0xd0d2a);
0x00068684 ldr r2, [r3] | r2 = *(0xd0d2a);
0x00068686 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00068688 eors r2, r3 | r2 ^= r3;
0x0006868a mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0006868e bne 0x68694 |
0x00068690 add sp, 0x18 |
0x00068692 pop {r4, pc} |
| }
0x00068694 blx 0x927c | fprintf_chk ()
0x00068698 lsls r0, r6, 0x11 | r0 = r6 << 0x11;
0x0006869a movs r6, r0 | r6 = r0;
0x0006869c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006869e movs r0, r0 |
0x000686a0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x686a8 */
| #include <stdint.h>
|
; (fcn) fcn.000686a8 () | void fcn_000686a8 () {
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_4h_3;
| int16_t var_ch;
| int16_t var_4h_2;
0x000686a8 ldmdbmi r0, {r1, r2, r3, sl, ip, sp, pc} | __asm ("ldmdbmi r0, {r1, r2, r3, sl, ip, sp, pc}");
0x000686ac ldr r3, [pc, 0x40] |
0x000686ae push {lr} |
0x000686b0 sub sp, 8 |
0x000686b2 add r2, sp, 0xc | r2 += var_ch;
0x000686b4 add r1, pc | r1 += pc;
0x000686b6 ldr r3, [r1, r3] | r3 = *((r1 + r3));
0x000686b8 ldr r1, [r2], 4 | r1 = *(r2);
| r2 += 4;
0x000686bc ldr r3, [r3] | r3 = *(0x686f0);
0x000686be str r3, [sp, 4] | var_4h = r3;
0x000686c0 mov.w r3, 0 | r3 = 0;
0x000686c4 str r2, [sp] | *(sp) = r2;
0x000686c6 bl 0x68644 | fcn_00068644 (r0);
0x000686ca ldr r2, [pc, 0x28] |
0x000686cc ldr r3, [pc, 0x20] | r3 = *(0x686f0);
0x000686ce add r2, pc | r2 = 0xd0dc8;
0x000686d0 ldr r3, [r2, r3] | r3 = *(0xd0dc8);
0x000686d2 ldr r2, [r3] | r2 = *(0xd0dc8);
0x000686d4 ldr r3, [sp, 4] | r3 = var_4h;
0x000686d6 eors r2, r3 | r2 ^= r3;
0x000686d8 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000686dc bne 0x686e8 |
0x000686de add sp, 8 |
0x000686e0 ldr lr, [sp], 4 |
0x000686e4 add sp, 0xc |
0x000686e6 bx lr | return;
| }
0x000686e8 blx 0x927c | fprintf_chk ()
0x000686ec lsls r0, r2, 0x10 | r0 = r2 << 0x10;
0x000686ee movs r6, r0 | r6 = r0;
0x000686f0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000686f2 movs r0, r0 |
0x000686f4 lsls r6, r6, 0xf | r6 <<= 0xf;
0x000686f6 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x68b38 */
| #include <stdint.h>
|
; (fcn) fcn.00068b38 () | void fcn_00068b38 (int16_t arg_88h, int16_t arg_1d0h, uint32_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00068b38 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x00068b3c mov r5, r2 | r5 = r2;
0x00068b3e ldr r2, [pc, 0x2cc] |
0x00068b40 mov r6, r3 | r6 = r3;
0x00068b42 sub sp, 0x2c |
0x00068b44 ldr r3, [pc, 0x2c8] | r3 = *(0x68e10);
0x00068b46 add r2, pc | r2 = 0xd1958;
0x00068b48 ldrb.w r7, [sp, 0x48] | r7 = var_0h;
0x00068b4c ldr r3, [r2, r3] |
0x00068b4e ldr r3, [r3] | r3 = *(0xd1958);
0x00068b50 str r3, [sp, 0x24] | var_24h = r3;
0x00068b52 mov.w r3, 0 | r3 = 0;
0x00068b56 cmp r0, 0 |
| if (r0 == 0) {
0x00068b58 beq.w 0x68d98 | goto label_4;
| }
0x00068b5c cmp r5, 0 |
| if (r5 == 0) {
0x00068b5e beq.w 0x68dac | goto label_5;
| }
0x00068b62 cmp r1, 0 |
| if (r1 == 0) {
0x00068b64 beq 0x68c2c | goto label_0;
| }
0x00068b66 mov r4, r0 | r4 = r0;
0x00068b68 ldrb r0, [r0] | r0 = *(r0);
0x00068b6a sub.w ip, r0, 0x22 |
0x00068b6e cmp.w ip, 0x56 |
| if (ip > 0x56) {
0x00068b72 bhi 0x68c2c | goto label_0;
| }
| /* switch table (88 cases) at 0x68b78 */
0x00068b74 tbh [pc, ip, lsl 1] | __asm ("tbh [pc, ip, lsl 1]");
0x00068c26 cmp r1, 4 |
| if (r1 > 4) {
0x00068c28 bhi.w 0x68dc0 | goto label_6;
| }
| do {
| label_0:
0x00068c2c mvn r0, 0x15 | r0 = ~0x15;
| label_1:
0x00068c30 ldr r2, [pc, 0x1e0] |
0x00068c32 ldr r3, [pc, 0x1dc] | r3 = *(0x68e12);
0x00068c34 add r2, pc | r2 = 0xd1a4c;
0x00068c36 ldr r3, [r2, r3] | r3 = *(0xd1a4c);
0x00068c38 ldr r2, [r3] | r2 = *(0xd1a4c);
0x00068c3a ldr r3, [sp, 0x24] | r3 = var_24h;
0x00068c3c eors r2, r3 | r2 ^= r3;
0x00068c3e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00068c42 bne.w 0x68e08 | goto label_7;
| }
0x00068c46 add sp, 0x2c |
0x00068c48 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x00068c4c cmp r1, 2 |
0x00068c4e bls 0x68c2c |
| } while (r1 < 2);
0x00068c50 bl 0x6f458 | r0 = fcn_0006f458 ();
0x00068c54 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x00068c58 blt 0x68c2c | goto label_0;
| }
0x00068c5a ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00068c5c bl 0x6f458 | r0 = fcn_0006f458 ();
0x00068c60 subs.w r8, r0, 0 | r8 = r0 - 0;
0x00068c62 lsrs r0, r0, 0x20 | r0 >>= 0x20;
| if (r0 < r0) {
0x00068c64 blt 0x68c2c | goto label_0;
| }
0x00068c66 ldrb r0, [r4, 2] | r0 = *((r4 + 2));
0x00068c68 bl 0x6f458 | r0 = fcn_0006f458 ();
0x00068c6c cmp r0, 0 |
| if (r0 < 0) {
0x00068c6e blt 0x68c2c | goto label_0;
| }
0x00068c70 orr.w r3, sb, r8 | r3 = sb | r8;
0x00068c74 orrs r3, r0 | r3 |= r0;
0x00068c76 it ne |
| if (r3 == r0) {
0x00068c78 orrne r7, r7, 1 | r7 |= 1;
| }
0x00068c7c cmp r7, 0 |
| if (r7 == 0) {
0x00068c7e beq 0x68c2c | goto label_0;
| }
0x00068c80 lsl.w r3, r8, 3 | r3 = r8 << 3;
0x00068c84 orr.w r3, r3, sb, lsl 6 | r3 |= (sb << 6);
0x00068c88 orrs r3, r0 | r3 |= r0;
0x00068c8a cmp r3, 0xff |
| if (r3 > 0xff) {
0x00068c8c bhi 0x68c2c | goto label_0;
| }
0x00068c8e movs r2, 1 | r2 = 1;
0x00068c90 str r3, [r5] | *(r5) = r3;
0x00068c92 movs r0, 3 | r0 = 3;
0x00068c94 strb r2, [r6] | *(r6) = r2;
0x00068c96 b 0x68c30 | goto label_1;
0x00068c98 cmp r1, 8 |
| if (r1 < 8) {
0x00068c9a bls 0x68c2c | goto label_0;
| }
0x00068c9c mov r6, sp | r6 = sp;
0x00068c9e add.w r8, r4, 8 | r8 = r4 + 8;
| label_2:
0x00068ca2 ldrb r0, [r4, 1]! | r0 = *((r4 += 1));
0x00068ca6 bl 0x6f478 | r0 = fcn_0006f478 (r0);
0x00068caa cmp r0, 0 |
0x00068cac str r0, [r6, 4]! | *((r6 += 4)) = r0;
| if (r0 < 0) {
0x00068cb0 blt 0x68c30 | goto label_1;
| }
0x00068cb2 cmp r4, r8 |
| if (r4 != r8) {
0x00068cb4 bne 0x68ca2 | goto label_2;
| }
0x00068cb6 ldrd r1, r3, [sp, 4] | __asm ("ldrd r1, r3, [var_4h]");
0x00068cba eor r7, r7, 1 | r7 ^= 1;
0x00068cbe ldr r2, [sp, 0x20] | r2 = var_20h;
0x00068cc0 and r7, r7, 1 | r7 &= 1;
0x00068cc4 lsls r3, r3, 0x18 | r3 <<= 0x18;
0x00068cc6 orr.w r3, r3, r1, lsl 28 | r3 |= (r1 << 28);
0x00068cca orrs r3, r2 | r3 |= r2;
0x00068ccc ldrd r1, r2, [sp, 0xc] | __asm ("ldrd r1, r2, [var_ch]");
0x00068cce asrs r3, r0, 8 | r3 = r0 >> 8;
0x00068cd0 orr.w r3, r3, r1, lsl 20 | r3 |= (r1 << 20);
0x00068cd4 orr.w r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x00068cd8 ldrd r1, r2, [sp, 0x14] | __asm ("ldrd r1, r2, [var_14h]");
0x00068cda asrs r5, r0, 8 | r5 = r0 >> 8;
0x00068cdc orr.w r3, r3, r1, lsl 12 | r3 |= (r1 << 12);
0x00068ce0 orr.w r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00068ce4 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00068ce6 orrs.w r4, r3, r2, lsl 4 | r4 = r3 | (r2 << 4);
0x00068cea it ne |
| if (r4 == r3) {
0x00068cec movne r7, 0 | r7 = 0;
| }
0x00068cee cmp r7, 0 |
| if (r7 != 0) {
0x00068cf0 bne 0x68c2c | goto label_0;
| }
0x00068cf2 mov r0, r4 | r0 = r4;
0x00068cf4 bl 0x7e198 | r0 = fcn_0007e198 (r0);
0x00068cf8 cmp r0, 0 |
| if (r0 == 0) {
0x00068cfa beq 0x68c2c | goto label_0;
| }
0x00068cfc movs r0, 9 | r0 = 9;
0x00068cfe str r4, [r5] | *(r5) = r4;
0x00068d00 b 0x68c30 | goto label_1;
0x00068d02 movs r3, 0x5c | r3 = 0x5c;
0x00068d04 movs r0, 1 | r0 = 1;
0x00068d06 str r3, [r5] | *(r5) = r3;
0x00068d08 b 0x68c30 | goto label_1;
0x00068d0a movs r3, 7 | r3 = 7;
0x00068d0c movs r0, 1 | r0 = 1;
0x00068d0e str r3, [r5] | *(r5) = r3;
0x00068d10 b 0x68c30 | goto label_1;
0x00068d12 movs r3, 8 | r3 = 8;
0x00068d14 movs r0, 1 | r0 = 1;
0x00068d16 str r3, [r5] | *(r5) = r3;
0x00068d18 b 0x68c30 | goto label_1;
0x00068d1a movs r3, 0xc | r3 = 0xc;
0x00068d1c movs r0, 1 | r0 = 1;
0x00068d1e str r3, [r5] | *(r5) = r3;
0x00068d20 b 0x68c30 | goto label_1;
0x00068d22 movs r3, 0xa | r3 = 0xa;
0x00068d24 movs r0, 1 | r0 = 1;
0x00068d26 str r3, [r5] | *(r5) = r3;
0x00068d28 b 0x68c30 | goto label_1;
0x00068d2a movs r3, 0xd | r3 = 0xd;
0x00068d2c movs r0, 1 | r0 = 1;
0x00068d2e str r3, [r5] | *(r5) = r3;
0x00068d30 b 0x68c30 | goto label_1;
0x00068d32 movs r3, 0x20 | r3 = 0x20;
0x00068d34 movs r0, 1 | r0 = 1;
0x00068d36 str r3, [r5] | *(r5) = r3;
0x00068d38 b 0x68c30 | goto label_1;
0x00068d3a movs r3, 9 | r3 = 9;
0x00068d3c movs r0, 1 | r0 = 1;
0x00068d3e str r3, [r5] | *(r5) = r3;
0x00068d40 b 0x68c30 | goto label_1;
0x00068d42 movs r3, 0xb | r3 = 0xb;
0x00068d44 movs r0, 1 | r0 = 1;
0x00068d46 str r3, [r5] | *(r5) = r3;
0x00068d48 b 0x68c30 | goto label_1;
0x00068d4a cmp r1, 2 |
| if (r1 < 2) {
0x00068d4c bls.w 0x68c2c | goto label_0;
| }
0x00068d50 ldrb r0, [r4, 1] | r0 = *((r4 + 1));
0x00068d52 bl 0x6f478 | r0 = fcn_0006f478 (r0);
0x00068d56 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x00068d5a blt.w 0x68c2c | goto label_0;
| }
0x00068d5c add r7, sp, 0x19c | r7 = sp + 0x19c;
0x00068d5e ldrb r0, [r4, 2] | r0 = *((r4 + 2));
0x00068d60 bl 0x6f478 | r0 = fcn_0006f478 (r0);
0x00068d64 cmp r0, 0 |
| if (r0 < 0) {
0x00068d66 blt.w 0x68c2c | goto label_0;
| }
0x00068d6a orrs.w r3, r8, r0 | r3 = r8 | r0;
0x00068d6e it ne |
| if (r3 == r8) {
0x00068d70 orrne r7, r7, 1 | r7 |= 1;
| }
0x00068d74 cmp r7, 0 |
| if (r7 == 0) {
0x00068d76 beq.w 0x68c2c | goto label_0;
| }
0x00068d78 add r7, sp, 0x164 | r7 = sp + 0x164;
0x00068d7a orr.w r3, r0, r8, lsl 4 | r3 = r0 | (r8 << 4);
0x00068d7e movs r2, 1 | r2 = 1;
0x00068d80 movs r0, 3 | r0 = 3;
0x00068d82 str r3, [r5] | *(r5) = r3;
0x00068d84 strb r2, [r6] | *(r6) = r2;
0x00068d86 b 0x68c30 | goto label_1;
0x00068d88 movs r3, 0x22 | r3 = 0x22;
0x00068d8a movs r0, 1 | r0 = 1;
0x00068d8c str r3, [r5] | *(r5) = r3;
0x00068d8e b 0x68c30 | goto label_1;
0x00068d90 movs r3, 0x27 | r3 = 0x27;
0x00068d92 movs r0, 1 | r0 = 1;
0x00068d94 str r3, [r5] | *(r5) = r3;
0x00068d96 b 0x68c30 | goto label_1;
| label_4:
0x00068d98 ldr r1, [pc, 0x7c] |
0x00068d9a movs r2, 0x6c | r2 = 0x6c;
0x00068d9c ldr r3, [pc, 0x7c] |
0x00068d9e ldr r0, [pc, 0x80] |
0x00068da0 add r1, pc | r1 = 0xd1bbc;
0x00068da2 add r3, pc | r3 = 0xd1bc2;
0x00068da4 adds r1, 7 | r1 += 7;
0x00068da6 add r0, pc | r0 = 0xd1bcc;
0x00068da8 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00068dac ldr r1, [pc, 0x74] |
0x00068dae movs r2, 0x6d | r2 = 0x6d;
0x00068db0 ldr r3, [pc, 0x74] |
0x00068db2 ldr r0, [pc, 0x78] |
0x00068db4 add r1, pc | r1 = 0xd1bdc;
0x00068db6 add r3, pc | r3 = 0xd1be2;
0x00068db8 adds r1, 7 | r1 += 7;
0x00068dba add r0, pc | r0 = 0xd1bec;
0x00068dbc bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x00068dc0 add r6, sp, 4 | r6 += var_4h;
0x00068dc2 add.w r8, r4, 4 | r8 = r4 + 4;
| label_3:
0x00068dc6 ldrb r0, [r4, 1]! | r0 = *((r4 += 1));
0x00068dca bl 0x6f478 | r0 = fcn_0006f478 (r0);
0x00068dcc smmla r8, r5, r0, r2 | __asm ("smmla r8, r5, r0, r2");
0x00068dd0 str r0, [r6], 4 | *(r6) = r0;
| r6 += 4;
| if (r1 < 7) {
0x00068dd4 blt.w 0x68c30 | goto label_1;
| }
0x00068dd8 cmp r4, r8 |
| if (r4 != r8) {
0x00068dda bne 0x68dc6 | goto label_3;
| }
0x00068ddc ldrd r1, r3, [sp, 4] | __asm ("ldrd r1, r3, [var_4h]");
0x00068de0 eor r7, r7, 1 | r7 ^= 1;
0x00068de2 lsls r1, r0, 0x1c | r1 = r0 << 0x1c;
0x00068de4 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00068de6 and r7, r7, 1 | r7 &= 1;
0x00068de8 lsls r1, r0, 0x1c | r1 = r0 << 0x1c;
0x00068dea lsls r3, r3, 8 | r3 <<= 8;
0x00068dec orr.w r3, r3, r1, lsl 12 | r3 |= (r1 << 12);
0x00068df0 orrs r3, r2 | r3 |= r2;
0x00068df2 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00068df4 orrs.w r3, r3, r2, lsl 4 | r3 |= (r2 << 4);
0x00068df6 asrs r2, r0, 0xc | r2 = r0 >> 0xc;
0x00068df8 it ne |
| if (r3 == r3) {
0x00068dfa movne r7, 0 | r7 = 0;
| }
0x00068dfc cmp r7, 0 |
| if (r7 != 0) {
0x00068dfe bne.w 0x68c2c | goto label_0;
| }
0x00068e02 movs r0, 5 | r0 = 5;
0x00068e04 str r3, [r5] | *(r5) = r3;
0x00068e06 b 0x68c30 | goto label_1;
| label_7:
0x00068e08 blx 0x927c | fprintf_chk ()
0x00068e0c invalid |
0x0006dd80 adr r0, 0x1d8 | r0 = 0x1d8;
0x0006dd82 movs r5, r0 | r5 = r0;
0x0006dd84 adr r0, 0x120 | r0 = case.0x584aa.6;
0x0006dd86 movs r5, r0 | r5 = r0;
0x0006dd88 adr r0, 0x118 | r0 = case.0x584aa.10;
0x0006dd8a movs r5, r0 | r5 = r0;
0x0006dd8c ldr r7, [sp, 0x1d0] | r7 = *(arg_1d0h);
0x0006dd8e movs r5, r0 | r5 = r0;
0x0006dd90 ldr r7, [sp, 0x88] | r7 = *(arg_88h);
0x0006dd92 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x68e30 */
| #include <stdint.h>
|
; (fcn) fcn.00068e30 () | void fcn_00068e30 (int16_t arg_48h, int16_t arg_60h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_17h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00068e30 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00068e34 mov r6, r2 | r6 = r2;
0x00068e36 ldr r2, [pc, 0x180] |
0x00068e38 mov r8, r3 | r8 = r3;
0x00068e3a sub sp, 0x24 |
0x00068e3c ldr r3, [pc, 0x17c] | r3 = *(0x68fbc);
0x00068e3e add r2, pc | r2 = 0xd1dfc;
0x00068e40 ldr.w sl, [sp, 0x48] | sl = *(arg_48h);
0x00068e44 ldr r3, [r2, r3] |
0x00068e46 ldr r3, [r3] | r3 = *(0xd1dfc);
0x00068e48 str r3, [sp, 0x1c] | var_1ch = r3;
0x00068e4a mov.w r3, 0 | r3 = 0;
0x00068e4e cmp r0, 0 |
| if (arg_48h == ) {
0x00068e50 beq.w 0x68f7a | goto label_6;
| }
0x00068e54 cmp.w sl, 0 |
| if (sl == 0) {
0x00068e58 beq.w 0x68f9e | goto label_7;
| }
0x00068e5c mov fp, r1 |
0x00068e5e mov r4, r0 | r4 = r0;
0x00068e60 adds r5, r1, 1 | r5 = r1 + 1;
0x00068e62 cmp r6, 0 |
| if (r6 == 0) {
0x00068e64 beq 0x68f58 | goto label_8;
| }
0x00068e66 mov r0, r6 | r0 = r6;
0x00068e68 blx 0x8f38 | r0 = fcn_00008f38 ();
0x00068e6c mov r7, r0 | r7 = r0;
0x00068e6e add r0, r5 | r0 += r5;
0x00068e70 cmp r0, 1 |
0x00068e72 it lo |
| if (r0 >= 1) {
0x00068e74 movlo r0, 1 | r0 = 1;
| }
0x00068e76 blx 0x9234 | r0 = blkid_safe_string ();
0x00068e7a mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x00068e7c cbz r0, 0x68ee2 | goto label_3;
| }
0x00068e7e mov r1, r6 | r1 = r6;
0x00068e80 mov r2, r7 | r2 = r7;
0x00068e82 adds r5, r0, r7 | r5 = r0 + r7;
0x00068e84 blx 0x8f9c | fcn_00008f9c ();
| label_4:
0x00068e88 add.w r6, r4, fp | r6 = r4 + fp;
0x00068e8c cmp r6, r4 |
| if (r6 < r4) {
0x00068e8e bls 0x68f90 | goto label_9;
| }
0x00068e90 movs r3, 0 | r3 = 0;
0x00068e92 strb.w r3, [sp, 0x17] | var_17h = r3;
0x00068e96 cmp.w fp, 0 |
| if (fp == 0) {
0x00068e9a beq 0x68ecc | goto label_10;
| }
0x00068e9c mov r1, fp | r1 = fp;
0x00068e9e ubfx r3, r8, 1, 1 | r3 = (r8 >> 1) & ((1 << 1) - 1);
0x00068ea2 str r3, [sp, 8] | var_8h = r3;
| do {
0x00068ea4 ldrb r7, [r4] | r7 = *(r4);
0x00068ea6 cmp r7, 0x5c |
| if (r7 == 0x5c) {
0x00068ea8 bne 0x68eb4 |
0x00068eaa cmp r1, 1 |
| if (r1 != 1) {
0x00068eac bne 0x68f02 | goto label_11;
| }
0x00068eae tst.w r8, 1 |
| if ((r8 & 1) == 0) {
0x00068eb2 beq 0x68f3a | goto label_12;
| }
| }
0x00068eb4 adds r4, 1 | r4++;
0x00068eb6 adds r3, r5, 1 | r3 = r5 + 1;
| label_1:
0x00068eb8 strb r7, [r5] | *(r5) = r7;
0x00068eba mov r5, r3 | r5 = r3;
| label_0:
0x00068ebc cmp r6, r4 |
| if (r6 < r4) {
0x00068ebe bls 0x68f90 | goto label_9;
| }
0x00068ec0 subs r1, r6, r4 | r1 = r6 - r4;
0x00068ec2 mov.w r3, 0 | r3 = 0;
0x00068ec4 lsls r0, r0, 0xc | r0 <<= 0xc;
0x00068ec6 strb.w r3, [sp, 0x17] | var_17h = r3;
0x00068eca bne 0x68ea4 |
| } while (r0 != r0);
| label_10:
0x00068ecc ldr r1, [pc, 0xf0] |
0x00068ece movw r2, 0x13d | r2 = 0x13d;
0x00068ed2 ldr r3, [pc, 0xf0] |
0x00068ed4 ldr r0, [pc, 0xf0] |
0x00068ed6 add r1, pc | r1 = 0xd1e9a;
0x00068ed8 add r3, pc | r3 = 0xd1ea2;
0x00068eda adds r1, 7 | r1 += 7;
0x00068edc add r0, pc | r0 = 0xd1ea8;
0x00068ede bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00068ee2 mvn r3, 0xb | r3 = ~0xb;
| do {
| label_5:
0x00068ee6 ldr r1, [pc, 0xe4] |
0x00068ee8 ldr r2, [pc, 0xd0] | r2 = *(0x68fbc);
0x00068eea add r1, pc | r1 = 0xd1ebc;
0x00068eec ldr r2, [r1, r2] | r2 = *(0xd1ebc);
0x00068eee ldr r1, [r2] | r1 = *(0xd1ebc);
0x00068ef0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00068ef2 eors r1, r2 | r1 ^= r2;
0x00068ef4 mov.w r2, 0 | r2 = 0;
0x00068ef6 lsls r0, r0, 8 | r0 <<= 8;
| if (r0 != r0) {
0x00068ef8 bne 0x68fb4 | goto label_13;
| }
0x00068efa mov r0, r3 | r0 = r3;
0x00068efc add sp, 0x24 |
0x00068efe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x00068f02 ldr r3, [sp, 8] | r3 = var_8h;
0x00068f04 add.w fp, r4, 1 |
0x00068f08 subs r1, 1 | r1--;
0x00068f0a add r2, sp, 0x18 | r2 += var_18h;
0x00068f0c mov r0, fp | r0 = fp;
0x00068f0e str r3, [sp] | *(sp) = r3;
0x00068f10 add.w r3, sp, 0x17 | r3 += var_17h;
0x00068f14 bl 0x68b38 | fcn_00068b38 (r0, r1, r2, r3, r4, r5);
0x00068f16 cdp2 p14, 1, c1, c0, c3, 0 | __asm ("cdp2 p14, 1, c1, c0, c3, 0");
| if (r1 >= 1) {
0x00068f1a blt 0x68f2e |
0x00068f1c ldrb.w r2, [sp, 0x17] | r2 = var_17h;
0x00068f20 ldr r1, [sp, 0x18] | r1 = var_18h;
| if (r2 == 0) {
0x00068f22 cbz r2, 0x68f4a | goto label_14;
| }
0x00068f24 strb r1, [r5], 1 | *(r5) = r1;
| r5++;
| label_2:
0x00068f28 adds r0, r3, 1 | r0 = r3 + 1;
0x00068f2a add r4, r0 | r4 += r0;
0x00068f2c b 0x68ebc | goto label_0;
| }
0x00068f2e tst.w r8, 1 |
| if ((r8 & 1) == 0) {
0x00068f32 beq 0x68f6e | goto label_15;
| }
0x00068f34 mov r4, fp | r4 = fp;
0x00068f36 adds r3, r5, 1 | r3 = r5 + 1;
0x00068f38 b 0x68eb8 | goto label_1;
| label_12:
0x00068f3a mvn r3, 0x15 | r3 = ~0x15;
0x00068f3e mov r0, sb | r0 = sb;
0x00068f40 str r3, [sp, 8] | var_8h = r3;
0x00068f42 blx 0x8dac | fcn_00008dac ();
0x00068f46 ldr r3, [sp, 8] | r3 = var_8h;
0x00068f48 b 0x68ee6 |
| } while (1);
| label_14:
0x00068f4a mov r0, r5 | r0 = r5;
0x00068f4c str r3, [sp, 0xc] | var_ch = r3;
0x00068f4e bl 0x7e2a8 | fcn_0007e2a8 (r0, r1);
0x00068f52 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00068f54 add r5, r0 | r5 += r0;
0x00068f56 b 0x68f28 | goto label_2;
| label_8:
0x00068f58 cmp r5, 1 |
0x00068f5a mov r0, r5 | r0 = r5;
0x00068f5c it lo |
| if (r5 >= 1) {
0x00068f5e movlo r0, 1 | r0 = 1;
| }
0x00068f60 blx 0x9234 | r0 = blkid_safe_string ();
0x00068f64 mov r5, r0 | r5 = r0;
0x00068f66 cmp r0, 0 |
| if (r0 == 0) {
0x00068f68 beq 0x68ee2 | goto label_3;
| }
0x00068f6a mov sb, r0 | sb = r0;
0x00068f6c b 0x68e88 | goto label_4;
| label_15:
0x00068f6e mov r0, sb | r0 = sb;
0x00068f70 str r3, [sp, 8] | var_8h = r3;
0x00068f72 blx 0x8dac | fcn_00008dac ();
0x00068f76 ldr r3, [sp, 8] | r3 = var_8h;
0x00068f78 b 0x68ee6 | goto label_5;
| label_6:
0x00068f7a ldr r1, [pc, 0x54] |
0x00068f7c mov.w r2, 0x128 | r2 = 0x128;
0x00068f80 ldr r3, [pc, 0x50] |
0x00068f82 ldr r0, [pc, 0x54] |
0x00068f84 add r1, pc | r1 = 0xd1f5a;
0x00068f86 add r3, pc | r3 = 0xd1f5e;
0x00068f88 adds r1, 7 | r1 += 7;
0x00068f8a add r0, pc | r0 = 0xd1f68;
0x00068f8c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x00068f90 movs r2, 0 | r2 = 0;
0x00068f92 sub.w r3, r5, sb | r3 = r5 - sb;
0x00068f96 strb r2, [r5] | *(r5) = r2;
0x00068f98 str.w sb, [sl] | __asm ("str.w sb, [sl]");
0x00068f9c b 0x68ee6 | goto label_5;
| label_7:
0x00068f9e ldr r1, [pc, 0x3c] |
0x00068fa0 movw r2, 0x129 | r2 = 0x129;
0x00068fa4 ldr r3, [pc, 0x38] |
0x00068fa6 ldr r0, [pc, 0x3c] |
0x00068fa8 add r1, pc | r1 = 0xd1f8a;
0x00068faa add r3, pc | r3 = 0xd1f8e;
0x00068fac adds r1, 7 | r1 += 7;
0x00068fae add r0, pc | r0 = 0xd1f98;
0x00068fb0 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_13:
0x00068fb4 blx 0x927c | fprintf_chk ()
0x00068fb8 stc2 p0, c0, [r6], {5} | __asm ("stc2 p0, c0, [r6], {5}");
0x00068fbc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00068fbe movs r0, r0 |
0x00068fc0 adr r7, 0x208 | r7 = segment.PHDR;
0x00068fc2 movs r3, r0 | r3 = r0;
0x00068fc4 add r0, sp, 0x60 | r0 += arg_60h;
0x00068fc6 movs r3, r0 | r3 = r0;
0x00068fc8 adr r7, 0x290 | r7 = 0x290;
0x00068fca movs r3, r0 | r3 = r0;
0x00068fcc invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x69194 */
| #include <stdint.h>
|
; (fcn) fcn.00069194 () | void fcn_00069194 (int16_t arg_b8h, int16_t arg_108h, int16_t arg_140h, int16_t arg_210h, int16_t arg_270h, int16_t arg_350h, uint32_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00069194 invalid |
0x00069198 tst.w r3, 1 |
| if ((r3 & 1) != 0) {
0x0006919c beq 0x691a6 |
0x0006919e ldr r1, [pc, 0x10] |
0x000691a0 add r1, pc | r1 = 0xd2356;
0x000691a2 b.w 0x68fe8 | void (*0x68fe8)() ();
| }
0x000691a6 ubfx r2, r3, 1, 1 | r2 = (r3 >> 1) & ((1 << 1) - 1);
0x000691aa b.w 0x7e668 |
0x0007e668 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0007e66c sub sp, 0x24 |
0x0007e66e str r2, [sp, 0x14] | var_14h = r2;
0x0007e670 ldr r2, [pc, 0x1cc] |
0x0007e672 ldr r3, [pc, 0x1d0] | r3 = *(0x7e846);
0x0007e674 add r2, pc | r2 = 0xfceb8;
0x0007e676 ldr r3, [r2, r3] |
0x0007e678 ldr r3, [r3] | r3 = *(0xfceb8);
0x0007e67a str r3, [sp, 0x1c] | var_1ch = r3;
0x0007e67c mov.w r3, 0 | r3 = 0;
0x0007e680 cmp r0, 0 |
| if (r0 == 0) {
0x0007e682 beq.w 0x7e80c | goto label_5;
| }
0x0007e686 mov r7, r1 | r7 = r1;
0x0007e688 cmp r1, 0 |
| if (r1 == 0) {
0x0007e68a beq.w 0x7e7ea | goto label_6;
| }
0x0007e68e mov r5, r0 | r5 = r0;
0x0007e690 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0007e694 lsls r0, r0, 2 | r0 <<= 2;
0x0007e696 adds r0, 1 | r0++;
0x0007e698 blx 0x9234 | blkid_safe_string ();
0x0007e69c str r0, [sp, 0x10] | var_10h = r0;
0x0007e69e cmp r0, 0 |
| if (r0 == 0) {
0x0007e6a0 beq.w 0x7e834 | goto label_7;
| }
0x0007e6a4 ldrb r3, [r5] | r3 = *(r5);
0x0007e6a6 cmp r3, 0 |
| if (r3 == 0) {
0x0007e6a8 beq.w 0x7e82a | goto label_8;
| }
0x0007e6ac ldr r2, [pc, 0x198] |
0x0007e6ae mov.w fp, 0 |
0x0007e6b2 mov r8, r0 | r8 = r0;
0x0007e6b4 mov sl, fp | sl = fp;
0x0007e6b6 str r0, [sp, 4] | var_4h = r0;
0x0007e6b8 add r2, pc | r2 = 0xfcf04;
0x0007e6ba str r2, [sp, 8] | var_8h = r2;
0x0007e6bc b 0x7e702 |
| while (r4 > r0) {
0x0007e6be movs r2, 1 | r2 = 1;
0x0007e6c0 mov r1, r4 | r1 = r4;
0x0007e6c2 mov r0, r5 | r0 = r5;
0x0007e6c4 bl 0x7e480 | r0 = fcn_0007e480 (r0, r1, r2, r3, r4, r5, r6);
| if (r0 == 0) {
0x0007e6c8 cbz r0, 0x7e730 | goto label_9;
| }
0x0007e6ca add r1, sp, 0x18 | r1 += var_18h;
0x0007e6cc mov r0, r5 | r0 = r5;
0x0007e6ce bl 0x7e1c8 | r0 = fcn_0007e1c8 (r0, r1, r2, r3);
0x0007e6d2 cmp r0, 0 |
| if (r0 < 0) {
0x0007e6d4 blt 0x7e77a | goto label_10;
| }
0x0007e6d6 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0007e6d8 bl 0x806e8 | fcn_000806e8 (r0);
0x0007e6dc adds r0, 1 | r0++;
0x0007e6de add r0, sl | r0 += sl;
0x0007e6e0 cmp r0, r7 |
| if (r0 > r7) {
0x0007e6e2 bhi.w 0x7e824 | goto label_11;
| }
0x0007e6e6 mov r1, r5 | r1 = r5;
0x0007e6e8 mov r2, r4 | r2 = r4;
0x0007e6ea mov sl, r0 | sl = r0;
0x0007e6ec mov r0, r8 | r0 = r8;
0x0007e6ee add r5, r4 | r5 += r4;
0x0007e6f0 blx 0x8f9c | r0 = fcn_00008f9c ();
0x0007e6f4 add r4, r0 | r4 += r0;
| label_0:
0x0007e6f6 ldrb r2, [r5] | r2 = *(r5);
0x0007e6f8 str.w r8, [sp, 4] | __asm ("str.w r8, [var_4h]");
0x0007e6fc cmp r2, 0 |
| if (r2 == 0) {
0x0007e6fe beq 0x7e78e | goto label_12;
| }
0x0007e700 mov r8, r4 | r8 = r4;
0x0007e702 mov.w r1, -1 | r1 = -1;
0x0007e706 mov r0, r5 | r0 = r5;
0x0007e708 bl 0x7e348 | r0 = fcn_0007e348 (r0, r1, r2, r3, r4, r5, r6);
0x0007e70c subs r4, r0, 0 | r4 = r0 - 0;
0x0007e70e bgt 0x7e6be |
| }
0x0007e710 add.w sl, sl, 1 | sl++;
0x0007e714 cmp sl, r7 |
| if (sl > r7) {
0x0007e716 bhi.w 0x7e820 | goto label_13;
| }
0x0007e71a ldr r3, [sp, 8] | r3 = var_8h;
0x0007e71c adds r5, 1 | r5++;
0x0007e71e add.w r4, r8, 3 | r4 = r8 + 3;
0x0007e722 ldrh r2, [r3] | r2 = *(r3);
0x0007e724 strh.w r2, [r8] | *(r8) = r2;
0x0007e728 ldrb r2, [r3, 2] | r2 = *((r3 + 2));
0x0007e72a strb.w r2, [r8, 2] | *((r8 + 2)) = r2;
0x0007e72e b 0x7e6f6 | goto label_0;
| label_9:
0x0007e730 adds r6, r5, r4 | r6 = r5 + r4;
0x0007e732 mov fp, r5 |
0x0007e734 mov r4, r8 | r4 = r8;
0x0007e736 mov.w sb, 0x78 | sb = 0x78;
0x0007e73a str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch]");
| do {
0x0007e73e mov r1, sl | r1 = sl;
0x0007e740 add.w sl, sl, 4 | sl += 4;
0x0007e744 cmp sl, r7 |
| if (sl > r7) {
0x0007e746 bhi 0x7e794 | goto label_1;
| }
0x0007e748 ldrb r8, [fp], 1 | r8 = *(fp);
| fp++;
0x0007e74c mov.w r3, 0x5c | r3 = 0x5c;
0x0007e750 strb r3, [r4] | *(r4) = r3;
0x0007e752 adds r4, 4 | r4 += 4;
0x0007e754 strb sb, [r4, -0x3] | *((r4 - 0x3)) = sb;
0x0007e758 mov r5, fp | r5 = fp;
0x0007e75a lsr.w r0, r8, 4 | r0 = r8 >> 4;
0x0007e75e bl 0x6f468 | fcn_0006f468 (r0);
0x0007e762 strb r0, [r4, -0x2] | *((r4 - 0x2)) = r0;
0x0007e766 mov r0, r8 | r0 = r8;
0x0007e768 bl 0x6f468 | fcn_0006f468 (r0);
0x0007e76c cmp r6, fp |
0x0007e76e strb r0, [r4, -0x1] | *((r4 - 0x1)) = r0;
0x0007e772 bne 0x7e73e |
| } while (r6 != fp);
0x0007e774 ldr.w r8, [sp, 0xc] | r8 = var_ch;
0x0007e778 b 0x7e6f6 | goto label_0;
| label_10:
0x0007e77a ldr r1, [pc, 0xd0] |
0x0007e77c movs r2, 0xf5 | r2 = 0xf5;
0x0007e77e ldr r3, [pc, 0xd0] |
0x0007e780 ldr r0, [pc, 0xd0] |
0x0007e782 add r1, pc | r1 = 0xfcfd4;
0x0007e784 add r3, pc | r3 = 0xfcfda;
0x0007e786 adds r1, 7 | r1 += 7;
0x0007e788 add r0, pc | r0 = 0xfcfe0;
0x0007e78a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_12:
0x0007e78e ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 == 0) {
0x0007e790 cbz r3, 0x7e7b0 | goto label_3;
| }
0x0007e792 mov r1, sl | r1 = sl;
| label_1:
0x0007e794 ldr r3, [sp, 4] | r3 = var_4h;
0x0007e796 adds r1, 1 | r1++;
0x0007e798 cmp r1, r7 |
0x0007e79a it hi |
0x0007e79c movhi r4, r3 | r4 = r3;
| while (1) {
| label_2:
0x0007e79e ldr r3, [pc, 0xb8] |
0x0007e7a0 adds r4, 3 | r4 += 3;
0x0007e7a2 add r3, pc | r3 = 0xfd000;
0x0007e7a4 ldrh r2, [r3] | r2 = *(r3);
0x0007e7a6 ldrb r3, [r3, 2] | r3 = *((r3 + 2));
0x0007e7a8 strh r2, [r4, -0x3] | *((r4 - 0x3)) = r2;
0x0007e7ac strb r3, [r4, -0x1] | *((r4 - 0x1)) = r3;
| label_3:
0x0007e7b0 ldr r5, [sp, 0x10] | r5 = var_10h;
0x0007e7b2 movs r3, 0 | r3 = 0;
0x0007e7b4 strb r3, [r4] | *(r4) = r3;
0x0007e7b6 mov r0, r5 | r0 = r5;
0x0007e7b8 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0007e7bc adds r1, r0, 1 | r1 = r0 + 1;
0x0007e7be mov r0, r5 | r0 = r5;
0x0007e7c0 blx 0x94dc | fcn_000094dc ();
0x0007e7c4 mov r3, r5 | r3 = r5;
0x0007e7c6 cmp r0, 0 |
0x0007e7c8 it ne |
| if (r0 == 0) {
0x0007e7ca movne r3, r0 | r3 = r0;
| }
0x0007e7cc mov fp, r3 |
| label_4:
0x0007e7ce ldr r2, [pc, 0x8c] |
0x0007e7d0 ldr r3, [pc, 0x70] | r3 = *(0x7e844);
0x0007e7d2 add r2, pc | r2 = 0xfd034;
0x0007e7d4 ldr r3, [r2, r3] | r3 = *(0xfd034);
0x0007e7d6 ldr r2, [r3] | r2 = *(0xfd034);
0x0007e7d8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0007e7da eors r2, r3 | r2 ^= r3;
0x0007e7dc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007e7e0 bne 0x7e83a | goto label_14;
| }
0x0007e7e2 mov r0, fp | r0 = fp;
0x0007e7e4 add sp, 0x24 |
0x0007e7e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0007e7ea ldr r2, [pc, 0x74] |
0x0007e7ec ldr r3, [pc, 0x54] | r3 = *(0x7e844);
0x0007e7ee add r2, pc | r2 = 0xfd054;
0x0007e7f0 ldr r3, [r2, r3] | r3 = *(0xfd054);
0x0007e7f2 ldr r2, [r3] | r2 = *(0xfd054);
0x0007e7f4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0007e7f6 eors r2, r3 | r2 ^= r3;
0x0007e7f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007e7fc bne 0x7e83a | goto label_14;
| }
0x0007e7fe ldr r0, [pc, 0x64] |
0x0007e800 add r0, pc | r0 = 0xfd06a;
0x0007e802 add sp, 0x24 |
0x0007e804 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0007e808 b.w 0x91fc | void (*0x91fc)() ();
| label_5:
0x0007e80c ldr r1, [pc, 0x58] |
0x0007e80e movs r2, 0xdb | r2 = 0xdb;
0x0007e810 ldr r3, [pc, 0x58] |
0x0007e812 ldr r0, [pc, 0x5c] |
0x0007e814 add r1, pc | r1 = 0xfd080;
0x0007e816 add r3, pc | r3 = 0xfd086;
0x0007e818 adds r1, 7 | r1 += 7;
0x0007e81a add r0, pc | r0 = 0xfd090;
0x0007e81c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_13:
0x0007e820 ldr r4, [sp, 4] | r4 = var_4h;
0x0007e822 b 0x7e79e |
| }
| label_11:
0x0007e824 mov r1, sl | r1 = sl;
0x0007e826 mov r4, r8 | r4 = r8;
0x0007e828 b 0x7e794 | goto label_1;
| label_8:
0x0007e82a ldrd r4, r3, [sp, 0x10] | __asm ("ldrd r4, r3, [var_14h]");
0x0007e82e cmp r3, 0 |
| if (r3 != 0) {
0x0007e830 bne 0x7e79e | goto label_2;
| }
0x0007e832 b 0x7e7b0 | goto label_3;
| label_7:
0x0007e834 ldr.w fp, [sp, 0x10] | fp = var_10h;
0x0007e838 b 0x7e7ce | goto label_4;
| label_14:
0x0007e83a blx 0x927c | fprintf_chk ()
0x0007e83e nop |
0x0007e840 adr r4, 0x140 | r4 = 0x140;
0x0007e842 movs r4, r0 | r4 = r0;
0x0007e844 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007e846 movs r0, r0 |
0x0007e848 ldr r1, [sp, 0x140] | r1 = *(arg_140h);
0x0007e84a movs r2, r0 | r2 = r0;
0x0007e84c ldr r0, [sp, 0xb8] | r0 = *(arg_b8h);
0x0007e84e movs r2, r0 | r2 = r0;
0x0007e850 ldr r0, [sp, 0x350] | r0 = *(arg_350h);
0x0007e852 movs r2, r0 | r2 = r0;
0x0007e854 ldr r0, [sp, 0x210] | r0 = *(arg_210h);
0x0007e856 movs r2, r0 | r2 = r0;
0x0007e858 str r2, [r6, 0x38] | *((r6 + 0x38)) = r2;
0x0007e85a movs r2, r0 | r2 = r0;
0x0007e85c adr r2, 0x3c8 | r2 = 0x3c8;
0x0007e85e movs r4, r0 | r4 = r0;
0x0007e860 adr r2, 0x358 | r2 = 0x358;
0x0007e862 movs r4, r0 | r4 = r0;
0x0007e864 lsrs r4, r1 | r4 >>= r1;
0x0007e866 movs r0, r0 |
0x0007e868 str r7, [sp, 0x270] | *(arg_270h) = r7;
0x0007e86a movs r2, r0 | r2 = r0;
0x0007e86c ldr r0, [sp, 0x108] | r0 = *(arg_108h);
0x0007e86e movs r2, r0 | r2 = r0;
0x0007e870 adr r0, 0x78 | r0 = 0x78;
0x0007e872 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x69c30 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00069c30 () | void fcn_00069c30 (int16_t arg_1h, uint32_t arg1, int16_t arg2) {
| int16_t var_8h_2;
| int16_t var_10h;
| int16_t var_17h;
| r0 = arg1;
| r1 = arg2;
0x00069c30 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00069c34 subs r3, r1, 0 | r3 = r1 - 0;
0x00069c36 mov r4, r1 | r4 = r1;
0x00069c38 ldr.w r1, [pc, 0x40c] |
0x00069c3c sub sp, 0x34 |
0x00069c3e it ne |
| if (r3 == r1) {
0x00069c40 movne r3, 1 | r3 = 1;
| }
0x00069c42 ldr.w r2, [pc, 0x408] | r2 = *(0x6a04e);
0x00069c46 add r1, pc | r1 = 0xd3c92;
0x00069c48 ldr.w r8, [pc, 0x404] |
0x00069c4a strh r4, [r0, 0x20] | *((r0 + 0x20)) = r4;
0x00069c4c cmp r0, 0 |
0x00069c4e add r7, sp, 0x10 | r7 += var_10h;
0x00069c50 ldr r2, [r1, r2] |
0x00069c52 it ne |
| if (r0 == 0) {
0x00069c54 movne r3, 0 | r3 = 0;
| }
0x00069c56 add r8, pc | r8 = 0xd3caa;
0x00069c58 ldr r2, [r2] | r2 = *(0xd3c92);
0x00069c5a str r2, [r7, 0x1c] | *((r7 + 0x1c)) = r2;
0x00069c5c mov.w r2, 0 | r2 = 0;
0x00069c60 cmp r3, 0 |
| if (r3 != 0) {
0x00069c62 bne.w 0x69eda | goto label_13;
| }
0x00069c66 ldr r2, [pc, 0x3ec] |
0x00069c68 mov r6, r0 | r6 = r0;
0x00069c6a add r2, pc | r2 = 0xd3cc4;
0x00069c6c ldrb r2, [r2] | r2 = *(r2);
0x00069c6e cmp r2, 0 |
| if (r2 == 0) {
0x00069c70 beq 0x69d72 | goto label_4;
| }
0x00069c72 cmp r4, 0 |
| if (r4 == 0) {
0x00069c74 beq 0x69d32 | goto label_14;
| }
0x00069c76 adds r2, r4, 1 | r2 = r4 + 1;
| if (r2 == r4) {
0x00069c78 beq.w 0x69fa0 | goto label_15;
| }
0x00069c7c add.w sb, r4, 1 | sb = r4 + 1;
0x00069c80 cmp.w sb, 0x40 |
| if (sb > 0x40) {
0x00069c84 bhi.w 0x69ffc | goto label_16;
| }
0x00069c88 lsl.w r2, sb, 2 | r2 = sb << 2;
0x00069c8c mov sl, r3 | sl = r3;
0x00069c8e mov r1, r0 | r1 = r0;
0x00069c90 lsl.w fp, r4, 2 |
0x00069c94 adds r3, r2, 7 | r3 = r2 + 7;
0x00069c96 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00069c9a subs r2, 4 | r2 -= 4;
0x00069c9c sub.w sp, sp, r3 |
0x00069ca0 add.w r3, sp, 0x17 | r3 += var_17h;
0x00069ca4 bic r5, r3, 7 | r5 = BIT_MASK (r3, 7);
0x00069ca8 lsrs r3, r3, 3 | r3 >>= 3;
0x00069caa mov r0, r5 | r0 = r5;
0x00069cac str r3, [r7, 4] | *((r7 + 4)) = r3;
0x00069cae blx 0x8f9c | fcn_00008f9c ();
0x00069cb2 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00069cb4 movs r2, 2 | r2 = 2;
0x00069cb6 str.w r2, [fp, r3, lsl 3] | __asm ("str.w r2, [fp, r3, lsl 3]");
0x00069cba add.w r3, r5, fp | r3 = r5 + fp;
0x00069cbe str r3, [r7, 4] | *((r7 + 4)) = r3;
| label_11:
0x00069cc0 ldr r3, [pc, 0x394] | r3 = *(0x6a058);
0x00069cc2 mov r1, sb | r1 = sb;
0x00069cc4 mov r0, r5 | r0 = r5;
0x00069cc6 movs r2, 4 | r2 = 4;
0x00069cc8 mov sb, r5 | sb = r5;
0x00069cca ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00069cce mov.w r8, 0 | r8 = 0;
0x00069cd2 mov r5, r8 | r5 = r8;
0x00069cd4 blx 0x8988 | qsort ();
0x00069cd8 b 0x69d00 |
| while (r0 <= r1) {
0x00069cda sub.w fp, r1, r0 |
0x00069cde cmp.w fp, 1 |
| if (fp > 1) {
0x00069ce2 ble 0x69cfa |
0x00069ce4 subs r1, 1 | r1--;
0x00069ce6 adds r0, 1 | r0++;
0x00069ce8 movs r2, 0 | r2 = 0;
0x00069cea blx 0x8e54 | r0 = fcn_00008e54 ();
0x00069cee cmp r0, 0 |
| if (r0 < 0) {
0x00069cf0 blt.w 0x69fb4 | goto label_17;
| }
0x00069cf4 add.w r3, fp, -1 | r3 = fp + -1;
0x00069cf8 add r5, r3 | r5 += r3;
| }
0x00069cfa cmp r8, r4 |
| if (r8 == r4) {
0x00069cfc beq.w 0x69eee | goto label_18;
| }
0x00069d00 ldr.w r0, [sb] | r0 = *(sb);
0x00069d04 add.w r8, r8, 1 | r8++;
0x00069d06 lsrs r1, r0, 0x20 | r1 = r0 >> 0x20;
0x00069d08 ldr r1, [sb, 4]! | r1 = *((sb += 4));
0x00069d0c cmp r0, 2 |
0x00069d0e it lt |
| if (r0 >= 2) {
0x00069d10 movlt r0, 2 | r0 = 2;
| }
0x00069d12 cmp r1, 2 |
0x00069d14 it lt |
| if (r1 >= 2) {
0x00069d16 movlt r1, 2 | r1 = 2;
| }
0x00069d18 cmp r0, r1 |
0x00069d1a ble 0x69cda |
| }
0x00069d1c ldr r1, [pc, 0x33c] |
0x00069d1e mov.w r2, 0x10a | r2 = 0x10a;
0x00069d20 strb r5, [r0, 0xa] | *((r0 + 0xa)) = r5;
0x00069d22 ldr r3, [pc, 0x33c] |
0x00069d24 ldr r0, [pc, 0x33c] |
0x00069d26 add r1, pc | r1 = 0xd3d86;
0x00069d28 add r3, pc | r3 = 0xd3d8e;
0x00069d2a adds r1, 7 | r1 += 7;
0x00069d2c add r0, pc | r0 = 0xd3d94;
0x00069d2e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_14:
0x00069d32 mov r2, r4 | r2 = r4;
0x00069d34 mov.w r1, -1 | r1 = -1;
0x00069d38 movs r0, 3 | r0 = 3;
0x00069d3a blx 0x8e54 | r0 = fcn_00008e54 ();
0x00069d3e cmp r0, 0 |
0x00069d40 it ge |
| if (r0 < 0) {
0x00069d42 movge r5, 1 | r5 = 1;
| }
| if (r0 >= 0) {
0x00069d44 bge 0x69df6 | goto label_2;
| }
0x00069d46 blx 0x9628 | r0 = fcn_00009628 ();
0x00069d4a ldr r5, [r0] | r5 = *(r0);
0x00069d4c eor.w r3, r5, r5, asr 31 | r3 = r5 ^ (r5 >> 31);
0x00069d50 sub.w r3, r3, r5, asr 31 | r3 -= (r5 >> 31);
0x00069d54 cmp r3, 0x26 |
| if (r3 != 0x26) {
0x00069d56 beq 0x69d6a |
| if (r3 > 0x26) {
0x00069d58 bgt.w 0x69ece | goto label_19;
| }
0x00069d5c cmp r3, 0x19 |
| if (r3 == 0x19) {
0x00069d5e beq 0x69d6a | goto label_3;
| }
0x00069d60 cmp r3, 1 |
| if (r3 == 1) {
0x00069d62 beq 0x69d6a | goto label_3;
| }
0x00069d64 cmp r3, 0xd |
| if (r3 != 0xd) {
0x00069d66 bne.w 0x69ed6 | goto label_20;
| }
| }
| label_3:
0x00069d6a ldr r3, [pc, 0x2fc] |
0x00069d6c movs r2, 0 | r2 = 0;
0x00069d6e add r3, pc | r3 = 0xd3ddc;
0x00069d70 strb r2, [r3] | *(r3) = r2;
| label_4:
0x00069d72 ldr r0, [pc, 0x2f8] |
0x00069d74 add r0, pc | r0 = 0xd3de6;
0x00069d76 blx 0x8a68 | r0 = fcn_00008a68 ();
0x00069d7a mov r8, r0 | r8 = r0;
0x00069d7c cmp r0, 0 |
| if (r0 == 0) {
0x00069d7e beq 0x69e42 | goto label_21;
| }
0x00069d80 movs r5, 0 | r5 = 0;
0x00069d82 add.w sb, r7, 8 | sb = r7 + 8;
0x00069d86 bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x00069d8a cmp r0, 0 |
| if (r0 == 0) {
0x00069d8c beq.w 0x69ff0 | goto label_22;
| }
| label_0:
0x00069d90 add.w fp, r0, 0x13 |
0x00069d94 mov r0, fp | r0 = fp;
0x00069d96 bl 0x75b88 | r0 = fcn_00075b88 (r0);
0x00069d9a mov sl, r0 | sl = r0;
| if (r0 != 0) {
0x00069d9c cbnz r0, 0x69dda | goto label_23;
| }
0x00069d9e mov.w r3, -1 | r3 = -1;
0x00069da2 mov r0, fp | r0 = fp;
0x00069da4 mov r1, sb | r1 = sb;
0x00069da6 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x00069da8 bl 0x746ac | r0 = fcn_000746ac (r0, r1);
0x00069dac cmp r0, 0 |
| if (r0 < 0) {
0x00069dae blt 0x69dda | goto label_23;
| }
0x00069db0 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00069db2 cmp r2, 2 |
| if (r2 <= 2) {
0x00069db4 ble 0x69dda | goto label_23;
| }
0x00069db6 mov r0, r8 | r0 = r8;
0x00069db8 blx 0x9128 | r0 = fcn_00009128 ();
0x00069dbc mov r2, r0 | r2 = r0;
0x00069dbe ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00069dc0 cmp r2, r0 |
| if (r2 == r0) {
0x00069dc2 beq 0x69dda | goto label_23;
| }
| if (r4 == 0) {
0x00069dc4 cbz r4, 0x69e16 | goto label_24;
| }
0x00069dc6 mov r3, sl | r3 = sl;
0x00069dc8 subs r2, r6, 4 | r2 = r6 - 4;
0x00069dca b 0x69dd2 |
| while (r0 != r1) {
0x00069dcc adds r3, 1 | r3++;
0x00069dce cmp r4, r3 |
| if (r4 == r3) {
0x00069dd0 beq 0x69e16 | goto label_24;
| }
0x00069dd2 ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x00069dd6 cmp r0, r1 |
0x00069dd8 bne 0x69dcc |
| }
| label_23:
0x00069dda mov r0, r8 | r0 = r8;
0x00069ddc bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x00069de0 cmp r0, 0 |
| if (r0 != 0) {
0x00069de2 bne 0x69d90 | goto label_0;
| }
| label_1:
0x00069de4 blx 0x9628 | r0 = fcn_00009628 ();
0x00069de8 ldr r3, [r0] | r3 = *(r0);
0x00069dea mov r0, r8 | r0 = r8;
0x00069dec cmp r3, 0 |
0x00069dee it gt |
| if (r3 > 0) {
0x00069df0 rsbgt r5, r3, 0 | __asm ("rsbgt r5, r3, 0");
| }
0x00069df2 blx 0x91a8 | fcn_000091a8 ();
| label_2:
0x00069df6 ldr r2, [pc, 0x278] |
0x00069df8 ldr r3, [pc, 0x250] | r3 = *(0x6a04c);
0x00069dfa add r2, pc | r2 = 0xd3e70;
0x00069dfc ldr r3, [r2, r3] | r3 = *(0xd3e70);
0x00069dfe ldr r2, [r3] | r2 = *(0xd3e70);
0x00069e00 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00069e02 eors r2, r3 | r2 ^= r3;
0x00069e04 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00069e08 bne.w 0x6a044 | goto label_25;
| }
0x00069e0c mov r0, r5 | r0 = r5;
0x00069e0e adds r7, 0x24 | r7 += 0x24;
0x00069e10 mov sp, r7 |
0x00069e12 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00069e14 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_24:
0x00069e16 bl 0x699c0 | r0 = fcn_000699c0 (r0, r1, r2);
0x00069e1a adds.w r3, r0, 9 | r3 = r0 + 9;
0x00069e1e it ne |
| if (r3 == r0) {
0x00069e20 movne r3, 1 | r3 = 1;
| }
0x00069e22 and.w r3, r3, r0, lsr 31 | r3 &= (r0 >> 31);
0x00069e26 cmp r5, 0 |
0x00069e28 ite ne |
| if (r5 == 0) {
0x00069e2a movne r3, 0 | r3 = 0;
| }
| if (r5 != 0) {
0x00069e2c andeq r3, r3, 1 | r3 &= 1;
| }
0x00069e30 cmp r3, 0 |
0x00069e32 it ne |
| if (r3 == 0) {
0x00069e34 movne r5, r0 | r5 = r0;
| }
0x00069e36 mov r0, r8 | r0 = r8;
0x00069e38 bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x00069e3c cmp r0, 0 |
| if (r0 != 0) {
0x00069e3e bne 0x69d90 | goto label_0;
| }
0x00069e40 b 0x69de4 | goto label_1;
| label_21:
0x00069e42 add.w r1, r7, 8 | r1 = r7 + 8;
0x00069e46 movs r0, 7 | r0 = 7;
0x00069e48 blx 0x8e60 | r0 = fcn_00008e60 ();
0x00069e4c cmp r0, 0 |
| if (r0 < 0) {
0x00069e4e blt.w 0x69fda | goto label_26;
| }
0x00069e52 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00069e54 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x00069e56 ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x00069e58 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00069e5a cmp r2, r0 |
0x00069e5c sbcs.w r5, r3, r1 | __asm ("sbcs.w r5, r3, r1");
0x00069e60 itt lo |
| if (r2 >= r0) {
0x00069e62 movlo r2, r0 | r2 = r0;
| }
| if (r2 >= r0) {
0x00069e64 movlo r3, r1 | r3 = r1;
| }
0x00069e66 cmp.w r2, 0x400 |
0x00069e6a sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x00069e6e it lo |
| if (r2 < 0x400) {
0x00069e70 movwlo r8, 0x3ff | __asm ("movwlo r8, aav.0x000000ff");
| }
| if (r2 <= 0x400) {
0x00069e74 blo 0x69f44 | goto label_27;
| }
0x00069e76 cmp.w r2, -0x80000000 |
0x00069e7a sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x00069e7e it hs |
| if (r2 < -0x80000000) {
0x00069e80 mvnhs r8, 0x80000000 | r8 = ~0x80000000;
| }
| if (r2 < -0x80000000) {
0x00069e84 bhs 0x69e90 |
0x00069e86 add.w r8, r2, -1 | r8 = r2 + -1;
| label_8:
0x00069e8a cmp.w r8, 0x100000 |
| if (r8 <= 0x100000) {
0x00069e8e ble 0x69f44 | goto label_27;
| }
| }
0x00069e90 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00069e94 cmp r0, 6 |
0x00069e96 it le |
| if (r0 <= 6) {
0x00069e98 movle r5, -1 | r5 = -1;
| goto label_28;
| }
| if (r0 <= 6) {
| label_28:
0x00069e9c ble 0x69df6 | goto label_2;
| }
0x00069e9e ldr r2, [pc, 0x1d4] |
0x00069ea0 movs r1, 1 | r1 = 1;
0x00069ea2 ldr r5, [pc, 0x1d4] |
0x00069ea4 movw r3, 0x13d | r3 = 0x13d;
0x00069ea8 ldr r4, [pc, 0x1d0] |
0x00069eaa movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00069eac lsls r0, r0, 4 | r0 <<= 4;
0x00069eae add r2, pc | r2 = 0xd3f28;
0x00069eb0 movs r0, 7 | r0 = 7;
0x00069eb2 add r5, pc | r5 = 0xd3f30;
0x00069eb4 adds r2, 7 | r2 += 7;
0x00069eb6 add r4, pc | r4 = 0xd3f36;
0x00069eb8 str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h_2]");
0x00069ebc strd r4, r5, [sp] | __asm ("strd r4, r5, [sp]");
0x00069ebe cmp r0, r0 |
0x00069ec0 bl 0x71448 | r0 = fcn_00071448 ();
0x00069ec4 subs r5, r0, 0 | r5 = r0 - 0;
0x00069ec6 it ge |
| if (r5 < r0) {
0x00069ec8 mvnge r5, 0x55 | r5 = ~0x55;
| }
0x00069ecc b 0x69df6 | goto label_2;
| label_19:
0x00069ece subs r3, 0x5d | r3 -= 0x5d;
0x00069ed0 cmp r3, 4 |
| if (r3 < 4) {
0x00069ed2 bls.w 0x69d6a | goto label_3;
| }
| label_20:
0x00069ed6 rsbs r5, r5, 0 | r5 -= ;
0x00069ed8 b 0x69df6 | goto label_2;
| label_13:
0x00069eda ldr r1, [pc, 0x1a4] |
0x00069edc movs r2, 0xd9 | r2 = 0xd9;
0x00069ede ldr r3, [pc, 0x1a4] |
0x00069ee0 ldr r0, [pc, 0x1a4] |
0x00069ee2 add r1, pc | r1 = 0xd3f68;
0x00069ee4 add r3, pc | r3 = 0xd3f6e;
0x00069ee6 adds r1, 7 | r1 += 7;
0x00069ee8 add r0, pc | r0 = 0xd3f74;
0x00069eea bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_18:
0x00069eee ldr r3, [pc, 0x19c] |
0x00069ef0 add r3, pc | r3 = 0xd3f82;
0x00069ef2 ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x00069ef4 cbz r3, 0x69f3c |
0x00069ef6 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00069ef8 ldr r0, [r3] | r0 = *(r3);
0x00069efa mvn r3, 0x80000000 | r3 = ~0x80000000;
0x00069efe cmp r0, r3 |
| if (r0 == r3) {
0x00069f00 beq 0x69f74 | goto label_29;
| }
0x00069f02 movs r2, 0 | r2 = 0;
0x00069f04 adds r0, 1 | r0++;
0x00069f06 mov.w r1, -1 | r1 = -1;
0x00069f0a blx 0x8e54 | r0 = fcn_00008e54 ();
0x00069f0e cmp r0, 0 |
0x00069f10 it ge |
| if (r0 < 0) {
0x00069f12 addge r5, 1 | r5++;
| }
| if (r0 >= 0) {
0x00069f14 bge 0x69f74 | goto label_29;
| }
0x00069f16 blx 0x9628 | r0 = fcn_00009628 ();
0x00069f1a ldr r5, [r0] | r5 = *(r0);
0x00069f1c eor.w r3, r5, r5, asr 31 | r3 = r5 ^ (r5 >> 31);
0x00069f20 sub.w r3, r3, r5, asr 31 | r3 -= (r5 >> 31);
0x00069f24 cmp r3, 0x26 |
| if (r3 != 0x26) {
0x00069f26 beq 0x69f34 |
| if (r3 > 0x26) {
0x00069f28 bgt 0x69ff4 | goto label_30;
| }
0x00069f2a cmp r3, 0x19 |
| if (r3 == 0x19) {
0x00069f2c beq 0x69f34 | goto label_10;
| }
0x00069f2e cmp r3, 1 |
| if (r3 != 1) {
0x00069f30 bne.w 0x6a036 | goto label_31;
| }
| }
| label_10:
0x00069f34 ldr r3, [pc, 0x158] |
0x00069f36 movs r2, 0 | r2 = 0;
0x00069f38 add r3, pc | r3 = 0xd3fcc;
0x00069f3a strb r2, [r3] | *(r3) = r2;
| }
| label_7:
0x00069f3c mov r0, sl | r0 = sl;
0x00069f3e blx 0x8dac | fcn_00008dac ();
0x00069f42 b 0x69d72 | goto label_4;
| label_27:
0x00069f44 mov.w sb, 3 | sb = 3;
0x00069f48 movs r5, 0 | r5 = 0;
| label_5:
0x00069f4a subs r2, r6, 4 | r2 = r6 - 4;
0x00069f4c movs r3, 0 | r3 = 0;
| if (r4 != 0) {
0x00069f4e cbnz r4, 0x69f58 | goto label_32;
| }
0x00069f50 b 0x69f7c | goto label_33;
| do {
0x00069f52 adds r3, 1 | r3++;
0x00069f54 cmp r4, r3 |
| if (r4 == r3) {
0x00069f56 beq 0x69f7c | goto label_33;
| }
| label_32:
0x00069f58 ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x00069f5c cmp r1, sb |
0x00069f5e bne 0x69f52 |
| } while (r1 != sb);
| label_6:
0x00069f60 cmp r8, sb |
| if (r8 <= sb) {
0x00069f62 ble.w 0x69df6 | goto label_2;
| }
0x00069f66 add.w sb, sb, 1 | sb++;
0x00069f6a b 0x69f4a | goto label_5;
| do {
0x00069f6c subs r3, 0x5d | r3 -= 0x5d;
0x00069f6e cmp r3, 4 |
| if (r3 < 4) {
0x00069f70 bls 0x69fd0 | goto label_12;
| }
| label_9:
0x00069f72 rsbs r5, r5, 0 | r5 -= ;
| label_29:
0x00069f74 mov r0, sl | r0 = sl;
0x00069f76 blx 0x8dac | fcn_00008dac ();
0x00069f7a b 0x69df6 | goto label_2;
| label_33:
0x00069f7c mov r0, sb | r0 = sb;
0x00069f7e bl 0x699c0 | r0 = fcn_000699c0 (r0, r1, r2);
0x00069f82 adds.w r3, r0, 9 | r3 = r0 + 9;
0x00069f86 it ne |
| if (r3 == r0) {
0x00069f88 movne r3, 1 | r3 = 1;
| }
0x00069f8a and.w r3, r3, r0, lsr 31 | r3 &= (r0 >> 31);
0x00069f8e cmp r5, 0 |
0x00069f90 ite ne |
| if (r5 == 0) {
0x00069f92 movne r3, 0 | r3 = 0;
| }
| if (r5 != 0) {
0x00069f94 andeq r3, r3, 1 | r3 &= 1;
| }
0x00069f98 cmp r3, 0 |
0x00069f9a it ne |
| if (r3 == 0) {
0x00069f9c movne r5, r0 | r5 = r0;
| }
0x00069f9e b 0x69f60 | goto label_6;
| label_15:
0x00069fa0 ldr r1, [pc, 0xf0] |
0x00069fa2 movs r2, 0xf1 | r2 = 0xf1;
0x00069fa4 ldr r3, [pc, 0xf0] |
0x00069fa6 ldr r0, [pc, 0xf4] |
0x00069fa8 add r1, pc | r1 = 0xd4040;
0x00069faa add r3, pc | r3 = 0xd4046;
0x00069fac adds r1, 7 | r1 += 7;
0x00069fae add r0, pc | r0 = 0xd4050;
0x00069fb0 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_17:
0x00069fb4 blx 0x9628 | r0 = fcn_00009628 ();
0x00069fb8 ldr r5, [r0] | r5 = *(r0);
0x00069fba eor.w r3, r5, r5, asr 31 | r3 = r5 ^ (r5 >> 31);
0x00069fbe sub.w r3, r3, r5, asr 31 | r3 -= (r5 >> 31);
0x00069fc2 cmp r3, 0x26 |
| if (r3 == 0x26) {
0x00069fc4 beq 0x69fd0 | goto label_12;
| }
0x00069fc6 bgt 0x69f6c |
| } while (r3 > 0x26);
0x00069fc8 cmp r3, 0x19 |
| if (r3 != 0x19) {
0x00069fca beq 0x69fd0 |
0x00069fcc cmp r3, 1 |
| if (r3 != 1) {
0x00069fce bne 0x6a030 | goto label_34;
| }
| }
| label_12:
0x00069fd0 ldr r3, [pc, 0xcc] |
0x00069fd2 movs r2, 0 | r2 = 0;
0x00069fd4 add r3, pc | r3 = 0xd4078;
0x00069fd6 strb r2, [r3] | *(r3) = r2;
0x00069fd8 b 0x69f3c | goto label_7;
| label_26:
0x00069fda blx 0x9628 | r0 = fcn_00009628 ();
0x00069fde ldr r3, [r0] | r3 = *(r0);
0x00069fe0 cmp r3, 0 |
0x00069fe2 rsb.w r5, r3, 0 | r5 = r3 - ;
0x00069fe6 it le |
| if (r3 <= 0) {
0x00069fe8 movle r8, r5 | r8 = r5;
| goto label_35;
| }
| if (r3 > 0) {
| label_35:
0x00069fea bgt.w 0x69df6 | goto label_2;
| }
0x00069fee b 0x69e8a | goto label_8;
| label_22:
0x00069ff0 mov r5, r0 | r5 = r0;
0x00069ff2 b 0x69de4 | goto label_1;
| label_30:
0x00069ff4 subs r3, 0x5d | r3 -= 0x5d;
0x00069ff6 cmp r3, 4 |
| if (r3 > 4) {
0x00069ff8 bhi 0x69f72 | goto label_9;
| }
0x00069ffa b 0x69f34 | goto label_10;
| label_16:
0x00069ffc lsrs.w r3, sb, 0x1e | r3 = sb >> 0x1e;
| if (r3 != sb) {
0x0006a000 bne 0x6a03e | goto label_36;
| }
0x0006a002 lsl.w sl, sb, 2 | sl = sb << 2;
0x0006a006 mov r0, sl | r0 = sl;
0x0006a008 cmp r0, 1 |
0x0006a00a it lo |
| if (r0 >= 1) {
0x0006a00c movlo r0, 1 | r0 = 1;
| }
0x0006a00e blx 0x9234 | r0 = blkid_safe_string ();
0x0006a012 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0006a014 cbz r0, 0x6a03e | goto label_36;
| }
0x0006a016 sub.w r2, sl, 4 | r2 = sl - 4;
0x0006a01a mov r1, r6 | r1 = r6;
0x0006a01c blx 0x8f9c | fcn_00008f9c ();
0x0006a020 add.w r3, r5, r4, lsl 2 | r3 = r5 + (r4 << 2);
0x0006a024 mov sl, r5 | sl = r5;
0x0006a026 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x0006a028 movs r3, 2 | r3 = 2;
0x0006a02a invalid |
0x0006a02c adds r0, 0x24 | r0 += 0x24;
0x0006a02e b 0x69cc0 | goto label_11;
| label_34:
0x0006a030 cmp r3, 0xd |
| if (r3 == 0xd) {
0x0006a032 beq 0x69fd0 | goto label_12;
| }
0x0006a034 b 0x69f72 | goto label_9;
| label_31:
0x0006a036 cmp r3, 0xd |
| if (r3 == 0xd) {
0x0006a038 beq.w 0x69f34 | goto label_10;
| }
0x0006a03c b 0x69f72 | goto label_9;
| label_36:
0x0006a03e mov.w sl, 0 | sl = 0;
0x0006a042 b 0x69f3c | goto label_7;
| label_25:
0x0006a044 blx 0x927c | fprintf_chk ()
0x0006a048 cdp p0, 7, c0, c14, c5, 0 | __asm ("cdp p0, 7, c0, c14, c5, 0");
0x0006a04c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006a04e movs r0, r0 |
0x0006a050 cdp p0, 6, c0, c14, c5, 0 | __asm ("cdp p0, 6, c0, c14, c5, 0");
0x0006a054 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6a120 */
| #include <stdint.h>
|
; (fcn) fcn.0006a120 () | void fcn_0006a120 (int16_t arg_398h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| if (? >= ?) {
0x0006a120 addlt fp, fp, r0, lsr r5 |
| }
0x0006a124 str r0, [sp, 4] | var_4h = r0;
0x0006a126 mov r5, r1 | r5 = r1;
0x0006a128 movs r3, 0x1a | r3 = 0x1a;
0x0006a12a movs r2, 1 | r2 = 1;
0x0006a12c ldr r4, [pc, 0x58] |
0x0006a12e ldr r0, [pc, 0x5c] |
0x0006a130 ldr r1, [pc, 0x5c] | r1 = *(0x6a190);
0x0006a132 add r4, pc | r4 = 0xd42be;
0x0006a134 add r0, pc | r0 = 0xd42c6;
0x0006a136 str r4, [sp] | *(sp) = r4;
0x0006a138 ldr r1, [r0, r1] |
0x0006a13a add r4, sp, 8 | r4 += var_8h;
0x0006a13c mov r0, r4 | r0 = r4;
0x0006a13e ldr r1, [r1] | r1 = *(0xd42c6);
0x0006a140 str r1, [sp, 0x24] | var_24h = r1;
0x0006a142 mov.w r1, 0 | r1 = 0;
0x0006a144 lsls r0, r0, 4 | r0 <<= 4;
0x0006a146 mov r1, r3 | r1 = r3;
0x0006a148 blx 0x9110 | fcn_00009110 ();
0x0006a14c mov r1, r5 | r1 = r5;
0x0006a14e mov r0, r4 | r0 = r4;
0x0006a150 bl 0x6bff0 | r0 = fcn_0006bff0 (r0, r1);
0x0006a154 adds r3, r0, 2 | r3 = r0 + 2;
0x0006a156 beq 0x6a170 |
| while (1) {
0x0006a158 ldr r2, [pc, 0x38] |
0x0006a15a ldr r3, [pc, 0x34] | r3 = *(0x6a192);
0x0006a15c add r2, pc | r2 = 0xd42f4;
0x0006a15e ldr r3, [r2, r3] | r3 = *(0xd42f4);
0x0006a160 ldr r2, [r3] | r2 = *(0xd42f4);
0x0006a162 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006a164 eors r2, r3 | r2 ^= r3;
0x0006a166 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006a16a bne 0x6a182 | goto label_0;
| }
0x0006a16c add sp, 0x2c |
0x0006a16e pop {r4, r5, pc} |
0x0006a170 bl 0x7a398 | r0 = fcn_0007a398 ();
0x0006a174 cmp r0, 0 |
0x0006a176 ite eq |
| if (r0 != 0) {
0x0006a178 mvneq r0, 0x25 | r0 = ~0x25;
| }
| if (r0 != 0) {
0x0006a17c mvn r0, 8 | r0 = ~8;
| }
0x0006a180 b 0x6a158 |
| }
| label_0:
0x0006a182 blx 0x927c | fprintf_chk ()
0x0006a186 nop |
0x0006a188 str r7, [sp, 0x398] | *(arg_398h) = r7;
0x0006a18a movs r3, r0 | r3 = r0;
0x0006a18c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6a214 */
| #include <stdint.h>
|
; (fcn) fcn.0006a214 () | void fcn_0006a214 (int16_t arg_0h, int16_t arg_4h, int16_t arg_80h, int16_t arg_350h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int32_t var_0h;
| int16_t var_4h;
| int32_t var_4h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006a214 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006a218 mov r7, r1 | r7 = r1;
0x0006a21a ldr r1, [pc, 0x1a0] |
0x0006a21c mov r8, r2 | r8 = r2;
0x0006a21e sub sp, 0x24 |
0x0006a220 mov r4, r0 | r4 = r0;
0x0006a222 ldr r2, [pc, 0x19c] | r2 = *(0x6a3c2);
0x0006a224 orr.w r6, r7, r8 | r6 = r7 | r8;
0x0006a228 add r1, pc | r1 = 0xd45ea;
0x0006a22a ldr r3, [pc, 0x198] |
0x0006a22c add r5, sp, 0x10 | r5 += var_10h;
0x0006a22e ldr r2, [r1, r2] |
0x0006a230 add r3, pc | r3 = 0xd45fa;
0x0006a232 ldr r2, [r2] | r2 = *(0xd45ea);
0x0006a234 str r2, [sp, 0x1c] | var_1ch = r2;
0x0006a236 mov.w r2, 0 | r2 = 0;
0x0006a23a strd r0, r7, [sp, 4] | __asm ("strd r0, r7, [var_4h]");
0x0006a23e ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0006a242 orrs.w r3, r4, r6 | r3 = r4 | r6;
0x0006a246 str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch]");
0x0006a24a stm.w r5, {r0, r1, r2} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
| if (r3 < r4) {
0x0006a24e bpl 0x6a29a |
0x0006a250 cmp r6, 0 |
0x0006a252 it lt |
| if (r6 < 0) {
0x0006a254 cmplt r4, 0 | __asm ("cmplt r4, 0");
| }
0x0006a256 itt lt |
| if (r6 >= 0) {
0x0006a258 movlt r1, 2 | r1 = 2;
| }
| if (r6 < 0) {
0x0006a25a movtlt r1, 8 | __asm ("movtlt r1, 8");
| }
| if (r6 >= 0) {
0x0006a25e blt 0x6a26e |
0x0006a260 movs r1, 1 | r1 = 1;
0x0006a262 cmp r4, 0 |
0x0006a264 movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x0006a268 it lt |
| if (r4 < 0) {
0x0006a26a movlt r1, 0x80000 | r1 = 0x80000;
| goto label_5;
| }
| }
| label_5:
0x0006a26e ldr r0, [pc, 0x158] |
0x0006a270 add r0, pc | r0 = 0xd463e;
0x0006a272 blx 0x91b4 | r0 = fcn_000091b4 ();
0x0006a276 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0006a27a blt 0x6a374 | goto label_3;
| }
0x0006a27c cmp.w sb, 2 |
| if (sb > 2) {
0x0006a280 bgt 0x6a29e | goto label_6;
| }
0x0006a282 movs r2, 3 | r2 = 3;
0x0006a284 movw r1, 0x406 | r1 = 0x406;
0x0006a288 blx 0x90e0 | r0 = fcn_000090e0 ();
0x0006a28c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0006a28e blt 0x6a374 | goto label_3;
| }
0x0006a290 mov r0, sb | r0 = sb;
0x0006a292 mov sb, r6 | sb = r6;
0x0006a294 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006a298 b 0x6a29e |
| } else {
0x0006a29a mov.w sb, -1 | sb = -1;
| }
| label_6:
0x0006a29e mov r0, r4 | r0 = r4;
0x0006a2a0 add.w sl, sp, 4 | sl += var_4h;
0x0006a2a4 cmp r0, 0 |
0x0006a2a6 mov fp, sl |
0x0006a2a8 mov.w r6, 0 | r6 = 0;
0x0006a2ac it lt |
| if (r0 < 0) {
0x0006a2ae invalid |
| }
| label_4:
0x0006a2b0 str r0, [sp] | *(sp) = r0;
0x0006a2b2 blt 0x6a2c6 |
| while (r0 >= 0) {
0x0006a2b4 cmp r0, 2 |
0x0006a2b6 ite gt |
| if (r0 <= 2) {
0x0006a2b8 movgt r3, 0 | r3 = 0;
| }
| if (r0 > 2) {
0x0006a2ba movle r3, 1 | r3 = 1;
| }
0x0006a2bc cmp r0, r6 |
0x0006a2be it eq |
| if (r0 != r6) {
0x0006a2c0 moveq r3, 0 | r3 = 0;
| }
0x0006a2c2 cmp r3, 0 |
| if (r3 != 0) {
0x0006a2c4 bne 0x6a38c | goto label_7;
| }
| label_0:
0x0006a2c6 adds r6, 1 | r6++;
0x0006a2c8 adds r5, 4 | r5 += 4;
0x0006a2ca cmp r6, 3 |
| if (r6 == 3) {
0x0006a2cc beq 0x6a2de | goto label_8;
| }
0x0006a2ce ldr r0, [fp, 4]! | r0 = *(arg_4h);
0x0006a2d2 cmp r0, 0 |
0x0006a2d4 it lt |
| if (r0 >= 0) {
0x0006a2d6 strlt sb, [fp] | *(fp) = sb;
| }
0x0006a2da bge 0x6a2b4 |
| }
0x0006a2dc b 0x6a2c6 | goto label_0;
| label_8:
0x0006a2de movs r5, 0 | r5 = 0;
| do {
0x0006a2e0 ldr r0, [sl], 4 | r0 = *(sl);
| sl += 4;
0x0006a2e4 cmp r0, r5 |
| if (r0 == r5) {
0x0006a2e6 beq 0x6a37e | goto label_9;
| }
0x0006a2e8 cmp r0, 2 |
| if (r0 <= 2) {
0x0006a2ea ble 0x6a3a2 | goto label_10;
| }
0x0006a2ec mov r1, r5 | r1 = r5;
0x0006a2ee blx 0x938c | r0 = fcn_0000938c ();
0x0006a2f2 cmp r0, 0 |
| if (r0 < 0) {
0x0006a2f4 blt 0x6a374 | goto label_3;
| }
| label_2:
0x0006a2f6 adds r5, 1 | r5++;
0x0006a2f8 cmp r5, 3 |
0x0006a2fa bne 0x6a2e0 |
| } while (r5 != 3);
0x0006a2fc movs r6, 0 | r6 = 0;
| label_1:
0x0006a2fe cmp r4, 2 |
| if (r4 > 2) {
0x0006a300 ble 0x6a308 |
0x0006a302 mov r0, r4 | r0 = r4;
0x0006a304 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
| }
0x0006a308 cmp r4, r7 |
0x0006a30a it ne |
| if (r4 != r7) {
0x0006a30c cmpne r7, 2 | __asm ("cmpne r7, 2");
| }
| if (r4 > r7) {
0x0006a30e ble 0x6a316 |
0x0006a310 mov r0, r7 | r0 = r7;
0x0006a312 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
| }
0x0006a316 cmp r4, r8 |
0x0006a318 it ne |
| if (r4 != r8) {
0x0006a31a cmpne r7, r8 | __asm ("cmpne r7, r8");
| }
0x0006a31c ite ne |
| if (r4 == r8) {
0x0006a31e movne r4, 1 | r4 = 1;
| }
| if (r4 != r8) {
0x0006a320 moveq r4, 0 | r4 = 0;
| }
0x0006a322 eor r4, r4, 1 | r4 ^= 1;
0x0006a324 lsls r1, r0, 0x10 | r1 = r0 << 0x10;
0x0006a326 cmp.w r8, 2 |
0x0006a32a it le |
| if (r8 > 2) {
0x0006a32c orrle r4, r4, 1 | r4 |= 1;
| }
0x0006a330 cbz r4, 0x6a36c |
| while (1) {
0x0006a332 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006a334 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006a338 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006a33a bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006a33e ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006a340 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006a344 cmp.w sb, 2 |
| if (sb > 2) {
0x0006a348 ble 0x6a350 |
0x0006a34a mov r0, sb | r0 = sb;
0x0006a34c bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
| }
0x0006a350 ldr r2, [pc, 0x78] |
0x0006a352 ldr r3, [pc, 0x6c] | r3 = *(0x6a3c2);
0x0006a354 add r2, pc | r2 = 0xd4724;
0x0006a356 ldr r3, [r2, r3] | r3 = *(0xd4724);
0x0006a358 ldr r2, [r3] | r2 = *(0xd4724);
0x0006a35a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006a35c eors r2, r3 | r2 ^= r3;
0x0006a35e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006a362 bne 0x6a3b8 | goto label_11;
| }
0x0006a364 mov r0, r6 | r0 = r6;
0x0006a366 add sp, 0x24 |
0x0006a368 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006a36c mov r0, r8 | r0 = r8;
0x0006a36e bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006a372 b 0x6a332 |
| }
| label_3:
0x0006a374 blx 0x9628 | r0 = fcn_00009628 ();
0x0006a378 ldr r6, [r0] | r6 = *(r0);
0x0006a37a rsbs r6, r6, 0 | r6 -= ;
0x0006a37c b 0x6a2fe | goto label_1;
| label_9:
0x0006a37e movs r1, 0 | r1 = 0;
0x0006a380 mov r0, r5 | r0 = r5;
0x0006a382 bl 0x69bd4 | r0 = fcn_00069bd4 (r0, r1, r2);
0x0006a386 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0006a388 bge 0x6a2f6 | goto label_2;
| }
0x0006a38a b 0x6a2fe | goto label_1;
| label_7:
0x0006a38c movs r2, 3 | r2 = 3;
0x0006a38e movw r1, 0x406 | r1 = 0x406;
0x0006a392 blx 0x90e0 | r0 = fcn_000090e0 ();
0x0006a396 cmp r0, 0 |
0x0006a398 str r0, [r5] | *(r5) = r0;
| if (r0 < 0) {
0x0006a39a blt 0x6a374 | goto label_3;
| }
0x0006a39c str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x0006a3a0 b 0x6a2c6 | goto label_0;
| label_10:
0x0006a3a2 ldr r1, [pc, 0x2c] |
0x0006a3a4 movw r2, 0x285 | r2 = 0x285;
0x0006a3a8 ldr r3, [pc, 0x28] |
0x0006a3aa ldr r0, [pc, 0x2c] |
0x0006a3ac add r1, pc | r1 = 0xd4782;
0x0006a3ae add r3, pc | r3 = 0xd4786;
0x0006a3b0 adds r1, 7 | r1 += 7;
0x0006a3b2 add r0, pc | r0 = 0xd4790;
0x0006a3b4 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x0006a3b6 invalid |
| label_11:
0x0006a3b8 blx 0x927c | r0 = fprintf_chk ()
0x0006a3bc ldm.w ip, {r0, r2} | r0 = *(ip);
| r2 = *((ip + 4));
0x0006a3c0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006a3c2 movs r0, r0 |
0x0006a3c4 str r7, [sp, 0x80] | *(arg_80h) = r7;
0x0006a3c6 movs r3, r0 | r3 = r0;
0x0006a3c8 str r6, [sp, 0x350] | *(arg_350h) = r6;
0x0006a3ca movs r3, r0 | r3 = r0;
0x0006a3cc b 0x6a2b0 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6a3dc */
| #include <stdint.h>
|
; (fcn) fcn.0006a3dc () | void fcn_0006a3dc (int16_t arg_a8h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x0006a3dc push {r4, r5, lr} |
0x0006a3de sub sp, 0x2c |
0x0006a3e0 str r0, [sp, 4] | var_4h = r0;
0x0006a3e2 mov r5, r1 | r5 = r1;
0x0006a3e4 movs r3, 0x1a | r3 = 0x1a;
0x0006a3e6 movs r2, 1 | r2 = 1;
0x0006a3e8 ldr r4, [pc, 0x64] |
0x0006a3ea ldr r0, [pc, 0x68] |
0x0006a3ec ldr r1, [pc, 0x68] | r1 = *(0x6a458);
0x0006a3ee add r4, pc | r4 = 0xd4842;
0x0006a3f0 add r0, pc | r0 = 0xd484a;
0x0006a3f2 str r4, [sp] | *(sp) = r4;
0x0006a3f4 ldr r1, [r0, r1] |
0x0006a3f6 add r4, sp, 8 | r4 += var_8h;
0x0006a3f8 mov r0, r4 | r0 = r4;
0x0006a3fa ldr r1, [r1] | r1 = *(0xd484a);
0x0006a3fc str r1, [sp, 0x24] | var_24h = r1;
0x0006a3fe mov.w r1, 0 | r1 = 0;
0x0006a402 mov r1, r3 | r1 = r3;
0x0006a404 blx 0x9110 | fcn_00009110 ();
0x0006a408 mov r1, r5 | r1 = r5;
0x0006a40a mov r0, r4 | r0 = r4;
0x0006a40c blx 0x91b4 | r0 = fcn_000091b4 ();
0x0006a410 cmp r0, 0 |
0x0006a412 blt 0x6a42c |
| while (r0 != 2) {
| label_0:
0x0006a414 ldr r2, [pc, 0x44] |
0x0006a416 ldr r3, [pc, 0x40] | r3 = *(0x6a45a);
0x0006a418 add r2, pc | r2 = 0xd4878;
0x0006a41a ldr r3, [r2, r3] | r3 = *(0xd4878);
0x0006a41c ldr r2, [r3] | r2 = *(0xd4878);
0x0006a41e ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006a420 eors r2, r3 | r2 ^= r3;
0x0006a422 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006a426 bne 0x6a44c | goto label_1;
| }
0x0006a428 add sp, 0x2c |
0x0006a42a pop {r4, r5, pc} |
0x0006a42c blx 0x9628 | r0 = fcn_00009628 ();
0x0006a430 ldr r0, [r0] | r0 = *(r0);
0x0006a432 cmp r0, 2 |
0x0006a434 it ne |
| if (r0 != 2) {
0x0006a436 rsbne r0, r0, 0 | __asm ("rsbne r0, r0, 0");
| }
0x0006a438 bne 0x6a414 |
| }
0x0006a43a bl 0x7a398 | r0 = fcn_0007a398 ();
0x0006a43e cmp r0, 0 |
0x0006a440 ite eq |
| if (r0 != 0) {
0x0006a442 mvneq r0, 0x25 | r0 = ~0x25;
| }
| if (r0 != 0) {
0x0006a446 mvn r0, 1 | r0 = ~1;
| }
0x0006a44a b 0x6a414 | goto label_0;
| label_1:
0x0006a44c blx 0x927c | fprintf_chk ()
0x0006a450 str r5, [sp, 0xa8] | *(arg_a8h) = r5;
0x0006a452 movs r3, r0 | r3 = r0;
0x0006a454 b 0x6a200 | return void (*0x6a200)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6a668 */
| #include <stdint.h>
|
; (fcn) fcn.0006a668 () | void fcn_0006a668 (int16_t arg_0h, uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006a668 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006a66c mov r6, r1 | r6 = r1;
0x0006a66e ldr r1, [pc, 0x120] |
0x0006a670 mov r4, r2 | r4 = r2;
0x0006a672 sub sp, 0xc |
0x0006a674 movs r3, 0 | r3 = 0;
0x0006a676 ldr r2, [pc, 0x11c] | r2 = *(0x6a796);
0x0006a678 add r1, pc | r1 = 0xd4e0e;
0x0006a67a ldr r2, [r1, r2] |
0x0006a67c ldr r2, [r2] | r2 = *(0xd4e0e);
0x0006a67e str r2, [sp, 4] | var_4h = r2;
0x0006a680 mov.w r2, 0 | r2 = 0;
0x0006a684 str r3, [sp] | *(sp) = r3;
0x0006a686 cmp r0, 0 |
| if (arg_0h == ) {
0x0006a688 beq 0x6a75a | goto label_1;
| }
0x0006a68a cmp r6, 0 |
| if (r6 == 0) {
0x0006a68c beq 0x6a770 | goto label_2;
| }
0x0006a68e mov r5, r0 | r5 = r0;
0x0006a690 mov r0, r6 | r0 = r6;
0x0006a692 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0006a696 mov r8, r0 | r8 = r0;
0x0006a698 mov sb, r0 | sb = r0;
0x0006a69a cmp r4, 0 |
0x0006a69c bne 0x6a732 |
| while (1) {
0x0006a69e add.w sl, sb, 1 | sl = sb + 1;
0x0006a6a2 mov r0, sl | r0 = sl;
0x0006a6a4 blx 0x9234 | r0 = blkid_safe_string ();
0x0006a6a8 mov r7, r0 | r7 = r0;
0x0006a6aa cmp r0, 0 |
| if (r0 == 0) {
0x0006a6ac beq 0x6a786 | goto label_3;
| }
0x0006a6ae ldr r1, [pc, 0xe8] |
0x0006a6b0 mov r0, r5 | r0 = r5;
0x0006a6b2 mov r2, sp | r2 = sp;
0x0006a6b4 add r1, pc | r1 = 0xd4e52;
0x0006a6b6 bl 0x6a520 | r0 = fcn_0006a520 (r0);
0x0006a6ba subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0006a6bc blt 0x6a70a |
0x0006a6be blx 0x9628 | fcn_00009628 ();
0x0006a6c2 movs r3, 0 | r3 = 0;
0x0006a6c4 mov r2, sl | r2 = sl;
0x0006a6c6 str r3, [r0] | *(r0) = r3;
0x0006a6c8 movs r1, 1 | r1 = 1;
0x0006a6ca ldr r3, [sp] | r3 = *(sp);
0x0006a6cc mov fp, r0 |
0x0006a6ce mov r0, r7 | r0 = r7;
0x0006a6d0 blx 0x94a0 | r0 = fcn_000094a0 ();
0x0006a6d4 mov r5, r0 | r5 = r0;
0x0006a6d6 ldr r0, [sp] | r0 = *(sp);
0x0006a6d8 blx 0x94d0 | r0 = fcn_000094d0 ();
0x0006a6dc mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0006a6de cbnz r0, 0x6a748 | goto label_4;
| }
0x0006a6e0 cmp r5, sb |
0x0006a6e2 it ne |
| if (r5 != sb) {
0x0006a6e4 cmpne r8, r5 | __asm ("cmpne r8, r5");
| }
| if (r5 != sb) {
0x0006a6e6 bne 0x6a70a | goto label_0;
| }
0x0006a6e8 mov r1, r6 | r1 = r6;
0x0006a6ea mov r2, r8 | r2 = r8;
0x0006a6ec mov r0, r7 | r0 = r7;
0x0006a6ee blx 0x8a78 | r0 = getauxval ();
| if (r0 != 0) {
0x0006a6f2 cbnz r0, 0x6a70a | goto label_0;
| }
0x0006a6f4 cmp r8, r5 |
0x0006a6f6 it hs |
| if (r8 < r5) {
0x0006a6f8 movhs r4, 1 | r4 = 1;
| }
| if (r8 >= r5) {
0x0006a6fa bhs 0x6a70a | goto label_0;
| }
0x0006a6fc ldrb.w r4, [r7, r8] | r4 = *((r7 + r8));
0x0006a700 sub.w r4, r4, 0xa | r4 -= 0xa;
0x0006a702 lsls r2, r1, 0x10 | r2 = r1 << 0x10;
0x0006a704 clz r4, r4 | r4 &= r4;
0x0006a708 lsrs r4, r4, 5 | r4 >>= 5;
| }
| label_0:
0x0006a70a mov r0, r7 | r0 = r7;
0x0006a70c blx 0x8dac | fcn_00008dac ();
0x0006a710 ldr r0, [sp] | r0 = *(sp);
0x0006a712 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0006a716 ldr r2, [pc, 0x84] |
0x0006a718 ldr r3, [pc, 0x78] | r3 = *(0x6a794);
0x0006a71a add r2, pc | r2 = 0xd4ebc;
0x0006a71c ldr r3, [r2, r3] | r3 = *(0xd4ebc);
0x0006a71e ldr r2, [r3] | r2 = *(0xd4ebc);
0x0006a720 ldr r3, [sp, 4] | r3 = var_4h;
0x0006a722 eors r2, r3 | r2 ^= r3;
0x0006a724 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006a728 bne 0x6a78c | goto label_5;
| }
0x0006a72a mov r0, r4 | r0 = r4;
0x0006a72c add sp, 0xc |
0x0006a72e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006a732 ldr r1, [pc, 0x6c] |
0x0006a734 mov r0, r6 | r0 = r6;
0x0006a736 add r1, pc | r1 = 0xd4edc;
0x0006a738 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x0006a73c cmp r0, 0 |
0x0006a73e ite ne |
| if (r0 == 0) {
0x0006a740 movne sb, r8 | sb = r8;
| }
| if (r0 != 0) {
0x0006a742 addeq sb, r8, 1 | sb = r8 + 1;
| }
0x0006a746 b 0x6a69e |
| }
| label_4:
0x0006a748 ldr.w r4, [fp] | r4 = *(fp);
0x0006a74c cmp r4, 0 |
0x0006a74e it gt |
| if (r4 <= 0) {
0x0006a750 rsbgt r4, r4, 0 | __asm ("rsbgt r4, r4, 0");
| goto label_6;
| }
| if (r4 > 0) {
| label_6:
0x0006a752 bgt 0x6a70a | goto label_0;
| }
0x0006a754 mvn r4, 4 | r4 = ~4;
0x0006a758 b 0x6a70a | goto label_0;
| label_1:
0x0006a75a ldr r1, [pc, 0x48] |
0x0006a75c mov.w r2, 0x15a | r2 = 0x15a;
0x0006a760 ldr r3, [pc, 0x44] |
0x0006a762 ldr r0, [pc, 0x48] |
0x0006a764 add r1, pc | r1 = 0xd4f0e;
0x0006a766 add r3, pc | r3 = 0xd4f12;
0x0006a768 adds r1, 7 | r1 += 7;
0x0006a76a add r0, pc | r0 = 0xd4f1c;
0x0006a76c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x0006a770 ldr r1, [pc, 0x3c] |
0x0006a772 movw r2, 0x15b | r2 = 0x15b;
0x0006a776 ldr r3, [pc, 0x3c] |
0x0006a778 ldr r0, [pc, 0x3c] |
0x0006a77a add r1, pc | r1 = 0xd4f2e;
0x0006a77c add r3, pc | r3 = 0xd4f36;
0x0006a77e adds r1, 7 | r1 += 7;
0x0006a780 add r0, pc | r0 = 0xd4f3c;
0x0006a782 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0006a786 mvn r4, 0xb | r4 = ~0xb;
0x0006a78a b 0x6a70a | goto label_0;
| label_5:
0x0006a78c blx 0x927c | fprintf_chk ()
0x0006a790 b 0x6a02c | return void (*0x6a02c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6a7bc */
| #include <stdint.h>
|
; (fcn) fcn.0006a7bc () | void fcn_0006a7bc (int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_28h;
| int16_t var_48h;
| int32_t var_48h_2;
| int16_t var_84h;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006a7bc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006a7c0 sub sp, 0x8c |
0x0006a7c2 strd r3, r2, [sp, 0xc] | __asm ("strd r3, r2, [var_10h]");
0x0006a7c6 mov r8, r1 | r8 = r1;
0x0006a7c8 mov.w r1, 0x100 | r1 = 0x100;
0x0006a7cc ldr r2, [pc, 0x1dc] |
0x0006a7ce movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x0006a7d2 ldr r3, [pc, 0x1dc] | r3 = *(0x6a9b2);
0x0006a7d4 add r2, pc | r2 = 0xd5184;
0x0006a7d6 ldr r3, [r2, r3] |
0x0006a7d8 ldr r3, [r3] | r3 = *(0xd5184);
0x0006a7da str r3, [sp, 0x84] | var_84h = r3;
0x0006a7dc mov.w r3, 0 | r3 = 0;
0x0006a7e0 blx 0x908c | r0 = fcn_0000908c ();
0x0006a7e4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0006a7e6 blt.w 0x6a90c | goto label_6;
| }
0x0006a7ea movs r3, 1 |
0x0006a7ec movt r3, 0xffc0 | r3 = 0x-3fffff;
0x0006a7f0 add r3, r8 | r3 += r8;
0x0006a7f2 cmn.w r3, 0x400000 |
| if (r3 <= 0x400000) {
0x0006a7f6 blo.w 0x6a92e | goto label_7;
| }
0x0006a7fa movw sl, 0xfffe |
0x0006a7fe mov r3, r8 | r3 = r8;
0x0006a800 movt sl, 0x3f | sl = 0x3ffffe;
0x0006a804 mov.w sb, 3 | sb = 3;
0x0006a808 cmp r8, sl |
0x0006a80a str.w sl, [sp, 0x14] | __asm ("str.w sl, [var_14h]");
0x0006a80e it hs |
| if (r8 < sl) {
0x0006a810 movhs r3, sl | r3 = sl;
| }
0x0006a812 add.w fp, sp, 0x18 |
0x0006a816 mov sl, r3 | sl = r3;
| label_0:
0x0006a818 mov r1, fp | r1 = fp;
0x0006a81a mov r0, r4 | r0 = r4;
0x0006a81c blx 0x9020 | r0 = fcn_00009020 ();
0x0006a820 cmp r0, 0 |
| if (r0 < 0) {
0x0006a822 blt 0x6a90c | goto label_6;
| }
0x0006a824 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0006a826 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0006a82a cmp.w r3, 0x8000 |
| if (r3 != 0x8000) {
0x0006a82e bne.w 0x6a944 | goto label_8;
| }
0x0006a832 ldrd r0, r3, [sp, 0x48] | __asm ("ldrd r0, r3, [var_48h]");
0x0006a836 cmp r0, 1 |
0x0006a838 sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r0 < 1) {
0x0006a83c blt 0x6a8f4 | goto label_9;
| }
0x0006a83e cmp.w sb, 1 |
| if (sb == 1) {
0x0006a842 beq 0x6a8ba | goto label_10;
| }
0x0006a844 cmp.w r0, -0x80000000 |
0x0006a848 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r0 < -0x80000000) {
0x0006a84c blt 0x6a91a | goto label_11;
| }
0x0006a84e cmp.w r8, -1 |
| if (r8 == -1) {
0x0006a852 beq 0x6a926 | goto label_12;
| }
0x0006a854 mov r0, r8 | r0 = r8;
| label_3:
0x0006a856 add.w sb, sb, -1 | sb += -1;
| label_1:
0x0006a85a adds r0, 1 | r0++;
0x0006a85c blx 0x9234 | r0 = blkid_safe_string ();
0x0006a860 mov r5, r0 | r5 = r0;
0x0006a862 cmp r0, 0 |
| if (r0 == 0) {
0x0006a864 beq.w 0x6a9a6 | goto label_13;
| }
0x0006a868 blx 0x8bf8 | r0 = reallocarray ();
0x0006a86c subs r7, r0, 1 | r7 = r0 - 1;
0x0006a86e cmp r7, sl |
0x0006a870 it hs |
| if (r7 < sl) {
0x0006a872 movhs r7, sl | r7 = sl;
| }
0x0006a874 adds r6, r7, 1 | r6 = r7 + 1;
0x0006a876 b 0x6a882 |
| while (r0 < 0) {
0x0006a878 blx 0x9628 | r0 = fcn_00009628 ();
0x0006a87c ldr r0, [r0] | r0 = *(r0);
0x0006a87e cmp r0, 4 |
| if (r0 != 4) {
0x0006a880 bne 0x6a8c8 | goto label_14;
| }
0x0006a882 mov r2, r6 | r2 = r6;
0x0006a884 mov r1, r5 | r1 = r5;
0x0006a886 mov r0, r4 | r0 = r4;
0x0006a888 blx 0x8dc4 | r0 = fcn_00008dc4 ();
0x0006a88c cmp r0, 0 |
0x0006a88e blt 0x6a878 |
| }
0x0006a890 cmp r7, r0 |
0x0006a892 mov r6, r0 | r6 = r0;
| if (r7 >= r0) {
0x0006a894 bhs 0x6a952 | goto label_15;
| }
0x0006a896 cmp r8, r0 |
| if (r8 <= r0) {
0x0006a898 blo 0x6a978 | goto label_16;
| }
0x0006a89a cmp.w sb, 0 |
| if (sb == 0) {
0x0006a89e beq 0x6a94c | goto label_17;
| }
0x0006a8a0 movs r3, 0 | r3 = 0;
0x0006a8a2 mov r0, r4 | r0 = r4;
0x0006a8a4 str r3, [sp] | *(sp) = r3;
0x0006a8a6 movs r2, 0 | r2 = 0;
0x0006a8a8 movs r3, 0 | r3 = 0;
0x0006a8aa blx 0x9228 | sigprocmask ();
0x0006a8ae cmp r1, 0 |
| if (r1 < 0) {
0x0006a8b0 blt 0x6a8c2 | goto label_18;
| }
0x0006a8b2 mov r0, r5 | r0 = r5;
0x0006a8b4 blx 0x8dac | fcn_00008dac ();
0x0006a8b8 b 0x6a818 | goto label_0;
| do {
| label_10:
0x0006a8ba mov r0, sl | r0 = sl;
0x0006a8bc mov.w sb, 0 | sb = 0;
0x0006a8c0 b 0x6a85a | goto label_1;
| label_18:
0x0006a8c2 blx 0x9628 | r0 = fcn_00009628 ();
0x0006a8c6 ldr r0, [r0] | r0 = *(r0);
| label_14:
0x0006a8c8 rsb.w r8, r0, 0 | r8 = r0 - ;
| label_2:
0x0006a8cc mov r0, r4 | r0 = r4;
0x0006a8ce bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006a8d2 mov r0, r5 | r0 = r5;
0x0006a8d4 blx 0x8dac | fcn_00008dac ();
0x0006a8d8 ldr r2, [pc, 0xd8] |
0x0006a8da ldr r3, [pc, 0xd4] | r3 = *(0x6a9b2);
0x0006a8dc add r2, pc | r2 = 0xd5294;
0x0006a8de ldr r3, [r2, r3] | r3 = *(0xd5294);
0x0006a8e0 ldr r2, [r3] | r2 = *(0xd5294);
0x0006a8e2 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0006a8e4 eors r2, r3 | r2 ^= r3;
0x0006a8e6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006a8ea bne 0x6a9a2 | goto label_19;
| }
0x0006a8ec mov r0, r8 | r0 = r8;
0x0006a8ee add sp, 0x8c |
0x0006a8f0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x0006a8f4 cmp.w sb, 1 |
0x0006a8f8 beq 0x6a8ba |
| } while (sb == 1);
0x0006a8fa bl 0x725dc | fcn_000725dc ();
0x0006a8fe subs r0, 1 | r0--;
0x0006a900 mov.w sb, 1 | sb = 1;
0x0006a904 cmp r0, sl |
0x0006a906 it hs |
| if (r0 < sl) {
0x0006a908 movhs r0, sl | r0 = sl;
| }
0x0006a90a b 0x6a85a | goto label_1;
| label_6:
0x0006a90c blx 0x9628 | r0 = fcn_00009628 ();
0x0006a910 ldr r0, [r0] | r0 = *(r0);
0x0006a912 movs r5, 0 | r5 = 0;
0x0006a914 rsb.w r8, r0, 0 | r8 = r0 - ;
0x0006a918 b 0x6a8cc | goto label_2;
| label_11:
0x0006a91a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006a91c cmp r0, r8 |
0x0006a91e it hs |
| if (r0 < r8) {
0x0006a920 movhs r0, r8 | r0 = r8;
| }
0x0006a922 cmp r0, r3 |
| if (r0 < r3) {
0x0006a924 bls 0x6a856 | goto label_3;
| }
| label_12:
0x0006a926 movs r5, 0 | r5 = 0;
0x0006a928 mvn r8, 0x1a | r8 = ~0x1a;
0x0006a92c b 0x6a8cc | goto label_2;
| label_7:
0x0006a92e ldr r1, [pc, 0x88] |
0x0006a930 mov.w r2, 0x192 | r2 = 0x192;
0x0006a934 ldr r3, [pc, 0x84] |
0x0006a936 ldr r0, [pc, 0x88] |
0x0006a938 add r1, pc | r1 = 0xd52f6;
0x0006a93a add r3, pc | r3 = 0xd52fa;
0x0006a93c adds r1, 7 | r1 += 7;
0x0006a93e add r0, pc | r0 = 0xd5304;
0x0006a940 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x0006a944 movs r5, 0 | r5 = 0;
0x0006a946 mvn r8, 8 | r8 = ~8;
0x0006a94a b 0x6a8cc | goto label_2;
| label_17:
0x0006a94c mvn r8, 0x1a | r8 = ~0x1a;
0x0006a950 b 0x6a8cc | goto label_2;
| label_15:
0x0006a952 mov.w r8, 0 | r8 = 0;
| do {
0x0006a956 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r3 != 0) {
0x0006a958 cbz r3, 0x6a96c |
0x0006a95a ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 == 0) {
0x0006a95c cbz r3, 0x6a98e | goto label_20;
| }
| label_5:
0x0006a95e cmp r6, r7 |
| if (r6 <= r7) {
0x0006a960 blo 0x6a980 | goto label_21;
| }
| label_4:
0x0006a962 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006a964 str r5, [r3] | *(r3) = r5;
0x0006a966 movs r3, 0 | r3 = 0;
0x0006a968 strb r3, [r5, r6] | *((r5 + r6)) = r3;
0x0006a96a mov r5, r3 | r5 = r3;
| }
0x0006a96c ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 != 0) {
0x0006a96e cbz r3, 0x6a972 |
0x0006a970 str r6, [r3] | *(r3) = r6;
| }
0x0006a972 eor r8, r8, 1 | r8 ^= 1;
0x0006a976 b 0x6a8cc | goto label_2;
| label_16:
0x0006a978 mov r6, r7 | r6 = r7;
0x0006a97a mov.w r8, 1 | r8 = 1;
0x0006a97e b 0x6a956 |
| } while (1);
| label_21:
0x0006a980 adds r1, r6, 1 | r1 = r6 + 1;
0x0006a982 mov r0, r5 | r0 = r5;
0x0006a984 blx 0x94dc | r0 = fcn_000094dc ();
| if (r0 == 0) {
0x0006a988 cbz r0, 0x6a9a6 | goto label_13;
| }
0x0006a98a mov r5, r0 | r5 = r0;
0x0006a98c b 0x6a962 | goto label_4;
| label_20:
0x0006a98e mov r2, r6 | r2 = r6;
0x0006a990 mov r1, r3 | r1 = r3;
0x0006a992 mov r0, r5 | r0 = r5;
0x0006a994 blx 0x95ac | r0 = getpwuid_r ();
0x0006a998 cmp r0, 0 |
| if (r0 == 0) {
0x0006a99a beq 0x6a95e | goto label_5;
| }
0x0006a99c mvn r8, 0x49 | r8 = ~0x49;
0x0006a9a0 b 0x6a8cc | goto label_2;
| label_19:
0x0006a9a2 blx 0x927c | fprintf_chk ()
| label_13:
0x0006a9a6 mvn r8, 0xb | r8 = ~0xb;
0x0006a9aa b 0x6a8cc | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6a9c4 */
| #include <stdint.h>
|
; (fcn) fcn.0006a9c4 () | void fcn_0006a9c4 (uint32_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006a9c4 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0006a9c8 mov r6, r1 | r6 = r1;
0x0006a9ca ldr r1, [pc, 0x154] |
0x0006a9cc mov sb, r3 | sb = r3;
0x0006a9ce sub sp, 8 |
0x0006a9d0 ldr r3, [pc, 0x150] | r3 = *(0x6ab24);
0x0006a9d2 add r1, pc | r1 = 0xd54f8;
0x0006a9d4 ldr r3, [r1, r3] |
0x0006a9d6 ldr r3, [r3] | r3 = *(0xd54f8);
0x0006a9d8 str r3, [sp, 4] | var_4h = r3;
0x0006a9da mov.w r3, 0 | r3 = 0;
0x0006a9de movs r3, 0 | r3 = 0;
0x0006a9e0 str r3, [sp] | *(sp) = r3;
0x0006a9e2 cmp r2, 0 |
| if (r2 == 0) {
0x0006a9e4 beq 0x6aabc | goto label_2;
| }
0x0006a9e6 cmp r0, 0 |
| if (r0 == 0) {
0x0006a9e8 beq 0x6aad2 | goto label_3;
| }
0x0006a9ea cmp r6, 0 |
| if (r6 == 0) {
0x0006a9ec beq 0x6aae8 | goto label_4;
| }
0x0006a9ee cmp.w sb, 0 |
| if (sb == 0) {
0x0006a9f2 beq.w 0x6aafe | goto label_5;
| }
0x0006a9f6 mov r8, r2 | r8 = r2;
0x0006a9f8 mov.w r1, -1 | r1 = -1;
0x0006a9fc mov r2, sp | r2 = sp;
0x0006a9fe bl 0x6a7bc | r0 = fcn_0006a7bc (r0, r1, r2);
0x0006aa02 subs r4, r0, 0 | r4 = r0 - 0;
0x0006aa04 ldr r7, [sp] | r7 = *(sp);
| if (r4 < r0) {
0x0006aa06 blt 0x6aa94 | goto label_1;
| }
0x0006aa08 ldr.w sl, [pc, 0x11c] |
0x0006aa0c mov r5, r7 | r5 = r7;
0x0006aa0e add sl, pc | sl = 0xd553a;
| do {
| label_0:
0x0006aa10 mov r1, r6 | r1 = r6;
0x0006aa12 mov r0, r5 | r0 = r5;
0x0006aa14 blx 0x9164 | r0 = fcn_00009164 ();
0x0006aa18 mov r4, r0 | r4 = r0;
0x0006aa1a cmp r0, 0 |
| if (r0 == 0) {
0x0006aa1c beq 0x6aab6 | goto label_6;
| }
0x0006aa1e mov r0, r6 | r0 = r6;
0x0006aa20 blx 0x8f38 | fcn_00008f38 ();
0x0006aa24 cmp r7, r4 |
0x0006aa26 add.w r5, r4, r0 | r5 = r4 + r0;
| if (r7 == r4) {
0x0006aa2a beq 0x6aa34 | goto label_7;
| }
0x0006aa2c ldrb r3, [r4, -0x1] | r3 = *((r4 - 0x1));
0x0006aa30 cmp r3, 0xa |
0x0006aa32 bne 0x6aa10 |
| } while (r3 != 0xa);
| label_7:
0x0006aa34 mov r0, r5 | r0 = r5;
0x0006aa36 mov r1, sl | r1 = sl;
0x0006aa38 blx 0x9428 | r0 = fcn_00009428 ();
0x0006aa3c add r5, r0 | r5 += r0;
0x0006aa3e ldrb r3, [r5] | r3 = *(r5);
0x0006aa40 cmp r3, 0 |
| if (r3 == 0) {
0x0006aa42 beq 0x6aab6 | goto label_6;
| }
0x0006aa44 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x0006aa46 bne 0x6aa10 | goto label_0;
| }
0x0006aa48 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0006aa4a adds r5, 1 | r5++;
| if (r3 != 0) {
0x0006aa4c cbz r3, 0x6aa7a |
0x0006aa4e mov r1, sl | r1 = sl;
0x0006aa50 mov r0, r5 | r0 = r5;
0x0006aa52 blx 0x9428 | fcn_00009428 ();
0x0006aa56 ldr r1, [pc, 0xd4] |
0x0006aa58 adds r4, r5, r0 | r4 = r5 + r0;
0x0006aa5a mov r0, r4 | r0 = r4;
0x0006aa5c add r1, pc | r1 = 0xd558e;
0x0006aa5e blx 0x9428 | fcn_00009428 ();
0x0006aa62 ldrb r6, [r4, r0] | r6 = *((r4 + r0));
0x0006aa64 mov r5, r0 | r5 = r0;
0x0006aa66 add r5, r4 | r5 += r4;
| if (r6 != 0) {
0x0006aa68 cbz r6, 0x6aa78 |
0x0006aa6a blx 0x91d8 | r0 = fcn_000091d8 ();
0x0006aa6e ldr r3, [r0] | r3 = *(r0);
0x0006aa70 ldrh.w r3, [r3, r6, lsl 1] | offset_0 = r6 << 1;
| r3 = *((r3 + offset_0));
0x0006aa74 lsls r3, r3, 0x12 | r3 <<= 0x12;
| if (r3 >= r3) {
0x0006aa76 bpl 0x6aa7a | goto label_8;
| }
| }
0x0006aa78 subs r5, 1 | r5--;
| }
| label_8:
0x0006aa7a mov r1, r8 | r1 = r8;
0x0006aa7c mov r0, r5 | r0 = r5;
0x0006aa7e blx 0x9488 | r0 = fcn_00009488 ();
0x0006aa82 mov r1, r0 | r1 = r0;
0x0006aa84 mov r0, r5 | r0 = r5;
0x0006aa86 blx 0x8f2c | r0 = fcn_00008f2c ();
0x0006aa8a cmp r0, 0 |
| if (r0 == 0) {
0x0006aa8c beq 0x6ab18 | goto label_9;
| }
0x0006aa8e movs r4, 0 | r4 = 0;
0x0006aa90 str.w r0, [sb] | __asm ("str.w r0, [sb]");
| do {
| label_1:
0x0006aa94 mov r0, r7 | r0 = r7;
0x0006aa96 blx 0x8dac | fcn_00008dac ();
0x0006aa9a ldr r2, [pc, 0x94] |
0x0006aa9c ldr r3, [pc, 0x84] | r3 = *(0x6ab24);
0x0006aa9e add r2, pc | r2 = 0xd55d4;
0x0006aaa0 ldr r3, [r2, r3] | r3 = *(0xd55d4);
0x0006aaa2 ldr r2, [r3] | r2 = *(0xd55d4);
0x0006aaa4 ldr r3, [sp, 4] | r3 = var_4h;
0x0006aaa6 eors r2, r3 | r2 ^= r3;
0x0006aaa8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006aaac bne 0x6ab14 | goto label_10;
| }
0x0006aaae mov r0, r4 | r0 = r4;
0x0006aab0 add sp, 8 |
0x0006aab2 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_6:
0x0006aab6 mvn r4, 1 | r4 = ~1;
0x0006aaba b 0x6aa94 |
| } while (1);
| label_2:
0x0006aabc ldr r1, [pc, 0x74] |
0x0006aabe movw r2, 0x32f | r2 = 0x32f;
0x0006aac2 ldr r3, [pc, 0x74] |
0x0006aac4 ldr r0, [pc, 0x74] |
0x0006aac6 add r1, pc | r1 = 0xd55fe;
0x0006aac8 add r3, pc | r3 = 0xd5606;
0x0006aaca adds r1, 7 | r1 += 7;
0x0006aacc add r0, pc | r0 = 0xd560c;
0x0006aace bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0006aad2 ldr r1, [pc, 0x6c] |
0x0006aad4 mov.w r2, 0x330 | r2 = 0x330;
0x0006aad8 ldr r3, [pc, 0x68] |
0x0006aada ldr r0, [pc, 0x6c] |
0x0006aadc add r1, pc | r1 = 0xd5622;
0x0006aade add r3, pc | r3 = 0xd5626;
0x0006aae0 adds r1, 7 | r1 += 7;
0x0006aae2 add r0, pc | r0 = 0xd5630;
0x0006aae4 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x0006aae8 ldr r1, [pc, 0x60] |
0x0006aaea movw r2, 0x331 | r2 = 0x331;
0x0006aaee ldr r3, [pc, 0x60] |
0x0006aaf0 ldr r0, [pc, 0x60] |
0x0006aaf2 add r1, pc | r1 = 0xd5642;
0x0006aaf4 add r3, pc | r3 = 0xd564a;
0x0006aaf6 adds r1, 7 | r1 += 7;
0x0006aaf8 add r0, pc | r0 = 0xd5650;
0x0006aafa bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x0006aafe ldr r1, [pc, 0x58] |
0x0006ab00 movw r2, 0x332 | r2 = 0x332;
0x0006ab04 ldr r3, [pc, 0x54] |
0x0006ab06 ldr r0, [pc, 0x58] |
0x0006ab08 add r1, pc | r1 = 0xd5666;
0x0006ab0a add r3, pc | r3 = 0xd566a;
0x0006ab0c adds r1, 7 | r1 += 7;
0x0006ab0e add r0, pc | r0 = 0xd5674;
0x0006ab10 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_10:
0x0006ab14 blx 0x927c | fprintf_chk ()
| label_9:
0x0006ab18 mvn r4, 0xb | r4 = ~0xb;
0x0006ab1c b 0x6aa94 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6ac70 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006ac70 () | void fcn_0006ac70 (int16_t arg_0h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006ac70 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006ac74 mov sb, r2 | sb = r2;
0x0006ac76 ldr r2, [pc, 0x184] |
0x0006ac78 mov r5, r3 | r5 = r3;
0x0006ac7a sub sp, 0x1c |
0x0006ac7c ldr r3, [pc, 0x180] | r3 = *(0x6ae00);
0x0006ac7e add r7, sp, 0 | r7 += arg_0h;
0x0006ac80 add r2, pc | r2 = 0xd5a82;
0x0006ac82 ldr r3, [r2, r3] |
0x0006ac84 ldr r3, [r3] | r3 = *(0xd5a82);
0x0006ac86 str r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x0006ac88 mov.w r3, 0 | r3 = 0;
0x0006ac8c cmp r0, 0 |
| if (arg_0h == ) {
0x0006ac8e beq.w 0x6ad9a | goto label_5;
| }
0x0006ac92 mov r6, r1 | r6 = r1;
0x0006ac94 cmp r1, 0 |
| if (r1 == 0) {
0x0006ac96 beq.w 0x6adae | goto label_6;
| }
0x0006ac9a mov r4, r0 | r4 = r0;
0x0006ac9c blx 0x94d0 | r0 = fcn_000094d0 ();
0x0006aca0 mov r8, r0 | r8 = r0;
0x0006aca2 cmp r0, 0 |
| if (r0 != 0) {
0x0006aca4 bne.w 0x6adea | goto label_7;
| }
0x0006aca8 cmp r5, 0 |
| if (r5 == 0) {
0x0006acaa beq 0x6ad34 | goto label_8;
| }
0x0006acac mov r0, r4 | r0 = r4;
0x0006acae blx 0x89b0 | r0 = fcn_000089b0 ();
0x0006acb2 subs.w sl, r0, 0 | sl = r0 - 0;
| if (sl < r0) {
0x0006acb6 blt.w 0x6adf0 | goto label_9;
| }
| do {
0x0006acba tst.w sb, 8 |
| if ((sb & 8) == 0) {
0x0006acbe bne 0x6acd2 |
0x0006acc0 ldr.w fp, [pc, 0x140] |
0x0006acc4 mov r0, r6 | r0 = r6;
0x0006acc6 add fp, pc | fp = 0xd5ace;
0x0006acc8 mov r1, fp | r1 = fp;
0x0006acca bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x0006acce cmp r0, 0 |
| if (r0 == 0) {
0x0006acd0 beq 0x6ad5e | goto label_10;
| }
| }
| label_3:
0x0006acd2 mov r0, r6 | r0 = r6;
0x0006acd4 mov r1, r4 | r1 = r4;
0x0006acd6 blx 0x9670 | fcn_00009670 ();
0x0006acda adds r0, 1 | r0++;
| if (r0 == 1) {
0x0006acdc beq 0x6ad52 | goto label_11;
| }
| label_0:
0x0006acde tst.w sb, 0x40 |
0x0006ace2 mov r0, r4 | r0 = r4;
| if ((sb & 0x40) == 0) {
0x0006ace4 beq 0x6ad8e | goto label_12;
| }
0x0006ace6 bl 0x6ac14 | r0 = void (*0x6ac14)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0006acea cmp r0, 0 |
| if (r0 < 0) {
0x0006acec blt 0x6ad96 | goto label_13;
| }
| if (r5 != 0) {
| label_4:
0x0006acee cbz r5, 0x6ad16 |
0x0006acf0 ldm.w r5, {r0, r1} | r0 = *(r5);
| r1 = *((r5 + 4));
0x0006acf4 cmp.w sl, -1 |
0x0006acf8 add.w r3, r7, 4 | r3 = r7 + 4;
0x0006acfc add.w r2, r7, 0xc | r2 = r7 + 0xc;
0x0006ad00 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x0006ad04 stm.w r2, {r0, r1} | *(r2) = r0;
| *((r2 + 4)) = r1;
| if (sl == -1) {
0x0006ad08 beq 0x6adc2 | goto label_14;
| }
0x0006ad0a mov r1, r3 | r1 = r3;
0x0006ad0c mov r0, sl | r0 = sl;
0x0006ad0e blx 0x957c | r0 = fchmod (r0, r1);
0x0006ad12 cmp r0, 0 |
| if (r0 < 0) {
0x0006ad14 blt 0x6ad52 | goto label_11;
| }
| }
| label_1:
0x0006ad16 ldr r2, [pc, 0xf0] |
0x0006ad18 ldr r3, [pc, 0xe4] | r3 = *(0x6ae00);
0x0006ad1a add r2, pc | r2 = 0xd5b28;
0x0006ad1c ldr r3, [r2, r3] | r3 = *(0xd5b28);
0x0006ad1e ldr r2, [r3] | r2 = *(0xd5b28);
0x0006ad20 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x0006ad22 eors r2, r3 | r2 ^= r3;
0x0006ad24 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006ad28 bne 0x6adf6 | goto label_15;
| }
0x0006ad2a mov r0, r8 | r0 = r8;
0x0006ad2c adds r7, 0x1c | r7 += 0x1c;
0x0006ad2e mov sp, r7 |
0x0006ad30 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x0006ad34 mov.w sl, -1 | sl = -1;
0x0006ad38 b 0x6acba |
| } while (1);
| label_2:
0x0006ad3a mov r0, r6 | r0 = r6;
0x0006ad3c mov r1, r4 | r1 = r4;
0x0006ad3e blx 0x9670 | fcn_00009670 ();
0x0006ad42 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0006ad44 beq 0x6ad52 | goto label_11;
| }
0x0006ad46 mov r1, r4 | r1 = r4;
0x0006ad48 movs r0, 0xa | r0 = 0xa;
0x0006ad4a blx 0x92e0 | fcn_000092e0 ();
0x0006ad4e adds r0, 1 | r0++;
| if (r0 != 1) {
0x0006ad50 bne 0x6acde | goto label_0;
| }
| label_11:
0x0006ad52 blx 0x9628 | r0 = fcn_00009628 ();
0x0006ad56 ldr r3, [r0] | r3 = *(r0);
0x0006ad58 rsb.w r8, r3, 0 | r8 = r3 - ;
0x0006ad5c b 0x6ad16 | goto label_1;
| label_10:
0x0006ad5e tst.w sb, 0x80 |
| if ((sb & 0x80) == 0) {
0x0006ad62 beq 0x6ad3a | goto label_2;
| }
0x0006ad64 mov r0, r6 | r0 = r6;
0x0006ad66 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0006ad6a adds r3, r0, 2 | r3 = r0 + 2;
0x0006ad6c cmp.w r3, 0x400000 |
| if (r3 > 0x400000) {
0x0006ad70 bhi 0x6add6 | goto label_16;
| }
0x0006ad72 adds r0, 9 | r0 += 9;
0x0006ad74 mov r1, r6 | r1 = r6;
0x0006ad76 bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x0006ad7a sub.w sp, sp, r0 |
0x0006ad7e mov r6, sp | r6 = sp;
0x0006ad80 mov r0, r6 | r0 = r6;
0x0006ad82 blx 0x8c38 | fcn_00008c38 ();
0x0006ad86 ldrh.w r3, [fp] | r3 = *(fp);
0x0006ad8a strh r3, [r0] | *(r0) = r3;
0x0006ad8c b 0x6acd2 | goto label_3;
| label_12:
0x0006ad8e bl 0x6abc4 | r0 = fcn_0006abc4 (r0, r1, r2);
0x0006ad92 cmp r0, 0 |
| if (r0 >= 0) {
0x0006ad94 bge 0x6acee | goto label_4;
| }
| label_13:
0x0006ad96 mov r8, r0 | r8 = r0;
0x0006ad98 b 0x6ad16 | goto label_1;
| label_5:
0x0006ad9a ldr r1, [pc, 0x70] |
0x0006ad9c movs r2, 0x89 | r2 = 0x89;
0x0006ad9e ldr r3, [pc, 0x70] |
0x0006ada0 ldr r0, [pc, 0x70] |
0x0006ada2 add r1, pc | r1 = 0xd5bb4;
0x0006ada4 add r3, pc | r3 = 0xd5bba;
0x0006ada6 adds r1, 7 | r1 += 7;
0x0006ada8 add r0, pc | r0 = 0xd5bc0;
0x0006adaa bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x0006adae ldr r1, [pc, 0x68] |
0x0006adb0 movs r2, 0x8a | r2 = 0x8a;
0x0006adb2 ldr r3, [pc, 0x68] |
0x0006adb4 ldr r0, [pc, 0x68] |
0x0006adb6 add r1, pc | r1 = 0xd5bd4;
0x0006adb8 add r3, pc | r3 = 0xd5bda;
0x0006adba adds r1, 7 | r1 += 7;
0x0006adbc add r0, pc | r0 = 0xd5be0;
0x0006adbe bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_14:
0x0006adc2 ldr r1, [pc, 0x60] |
0x0006adc4 movs r2, 0xb2 | r2 = 0xb2;
0x0006adc6 ldr r3, [pc, 0x60] |
0x0006adc8 ldr r0, [pc, 0x60] |
0x0006adca add r1, pc | r1 = 0xd5bf4;
0x0006adcc add r3, pc | r3 = 0xd5bfa;
0x0006adce adds r1, 7 | r1 += 7;
0x0006add0 add r0, pc | r0 = 0xd5c00;
0x0006add2 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_16:
0x0006add6 ldr r1, [pc, 0x58] |
0x0006add8 movs r2, 0x9d | r2 = 0x9d;
0x0006adda ldr r3, [pc, 0x58] |
0x0006addc ldr r0, [pc, 0x58] |
0x0006adde add r1, pc | r1 = 0xd5c14;
0x0006ade0 add r3, pc | r3 = 0xd5c1a;
0x0006ade2 adds r1, 7 | r1 += 7;
0x0006ade4 add r0, pc | r0 = 0xd5c20;
0x0006ade6 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x0006adea mvn r8, 4 | r8 = ~4;
0x0006adee b 0x6ad16 | goto label_1;
| label_9:
0x0006adf0 mvn r8, 8 | r8 = ~8;
0x0006adf4 b 0x6ad16 | goto label_1;
| label_15:
0x0006adf6 blx 0x927c | fprintf_chk ()
0x0006adfa nop |
0x0006adfc udf 0x44 | __asm ("udf 0x44");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6ae3c */
| #include <stdint.h>
|
; (fcn) fcn.0006ae3c () | void fcn_0006ae3c (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| char * dest;
| int16_t var_ch;
| int16_t var_fh;
| int16_t var_10h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006ae3c mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x0006ae40 mov r4, r2 | r4 = r2;
0x0006ae42 ldr r2, [pc, 0x24c] |
0x0006ae44 mov r8, r3 | r8 = r3;
0x0006ae46 sub sp, 0x14 |
0x0006ae48 ldr r3, [pc, 0x248] | r3 = *(0x6b094);
0x0006ae4a add r2, pc | r2 = 0xd5ee0;
0x0006ae4c ldr r3, [r2, r3] |
0x0006ae4e ldr r3, [r3] | r3 = *(0xd5ee0);
0x0006ae50 str r3, [sp, 0xc] | var_ch = r3;
0x0006ae52 mov.w r3, 0 | r3 = 0;
0x0006ae56 movs r3, 0 | r3 = 0;
0x0006ae58 str r3, [sp] | *(sp) = r3;
0x0006ae5a cmp r0, 0 |
| if (r0 == 0) {
0x0006ae5c beq.w 0x6affe | goto label_7;
| }
0x0006ae60 mov r7, r1 | r7 = r1;
0x0006ae62 cmp r1, 0 |
| if (r1 == 0) {
0x0006ae64 beq.w 0x6b012 | goto label_8;
| }
0x0006ae68 and r3, r4, 0x50 | r3 = r4 & 0x50;
0x0006ae6c cmp r3, 0x50 |
| if (r3 == 0x50) {
0x0006ae6e beq.w 0x6b026 | goto label_9;
| }
0x0006ae72 lsls r5, r4, 0x16 | r5 = r4 << 0x16;
0x0006ae74 mov r6, r0 | r6 = r0;
| if (r5 < r4) {
0x0006ae76 bmi.w 0x6af84 | goto label_10;
| }
0x0006ae7a lsls r1, r4, 0x1d | r1 = r4 << 0x1d;
| if (r1 >= r4) {
0x0006ae7c bpl 0x6af18 | goto label_2;
| }
| label_1:
0x0006ae7e mvn.w sb, r4 | sb = ~r4;
0x0006ae82 ands sb, sb, 1 | sb &= 1;
| if (sb != sb) {
0x0006ae86 bne.w 0x6b048 | goto label_11;
| }
0x0006ae8a add r2, sp, 8 | r2 += dest;
0x0006ae8c add r1, sp, 4 | r1 += var_4h;
0x0006ae8e mov r0, r6 | r0 = r6;
0x0006ae90 strd sb, sb, [sp, 4] | __asm ("strd sb, sb, [var_4h]");
0x0006ae94 bl 0x7d228 | r0 = fcn_0007d228 (r0, r1, r2);
0x0006ae98 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0006ae9a blt.w 0x6afc6 | goto label_12;
| }
0x0006ae9e ldr r0, [sp, 4] | r0 = var_4h;
0x0006aea0 mov r3, r8 | r3 = r8;
0x0006aea2 mov r2, r4 | r2 = r4;
0x0006aea4 mov r1, r7 | r1 = r7;
0x0006aea6 bl 0x6ac70 | r0 = fcn_0006ac70 (r0, r1, r2, r3, r4);
0x0006aeaa subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0006aeac blt.w 0x6afe0 | goto label_13;
| }
0x0006aeb0 ldr r0, [sp, 4] | r0 = var_4h;
0x0006aeb2 blx 0x89b0 | fcn_000089b0 ();
0x0006aeb6 tst.w r4, 0x400 |
0x0006aeb8 ldr r0, [r0, 0x78] | r0 = *((r0 + 0x78));
0x0006aeba ite ne |
| if ((r4 & 0x400) == 0) {
0x0006aebc movne r1, 0x180 | r1 = 0x180;
| }
| if ((r4 & 0x400) == 0) {
0x0006aec0 mov.w r1, 0x1a4 | r1 = 0x1a4;
| }
0x0006aec4 bl 0x6c070 | r0 = fcn_0006c070 (r0, r1);
0x0006aec8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0006aeca blt.w 0x6afe0 | goto label_13;
| }
0x0006aece ldr r0, [sp, 8] | r0 = dest;
0x0006aed0 mov r1, r6 | r1 = r6;
0x0006aed2 blx 0x8b50 | r0 = strncpy (r0, r1, r2);
0x0006aed6 cmp r0, 0 |
| if (r0 < 0) {
0x0006aed8 blt 0x6afd8 | goto label_14;
| }
0x0006aeda ands r8, r4, 0x40 | r8 = r4 & 0x40;
| if (r8 != r4) {
0x0006aede bne.w 0x6b07a | goto label_15;
| }
0x0006aee2 ldr r0, [sp, 8] | r0 = dest;
0x0006aee4 mov r5, r8 | r5 = r8;
0x0006aee6 blx 0x8dac | fcn_00008dac ();
0x0006aeea ldr r0, [sp, 4] | r0 = var_4h;
0x0006aeec str.w r8, [sp, 8] | __asm ("str.w r8, [dest]");
0x0006aef0 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
| do {
| label_0:
0x0006aef4 ldr r0, [sp] | r0 = *(sp);
0x0006aef6 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0006aefa ldr r2, [pc, 0x19c] |
0x0006aefc ldr r3, [pc, 0x194] | r3 = *(0x6b094);
0x0006aefe add r2, pc | r2 = 0xd5f9c;
0x0006af00 ldr r3, [r2, r3] | r3 = *(0xd5f9c);
0x0006af02 ldr r2, [r3] | r2 = *(0xd5f9c);
0x0006af04 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006af06 eors r2, r3 | r2 ^= r3;
0x0006af08 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006af0c bne.w 0x6b08a | goto label_16;
| }
0x0006af10 mov r0, r5 | r0 = r5;
0x0006af12 add sp, 0x14 |
0x0006af14 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x0006af18 cmp.w r8, 0 |
| if (r8 != 0) {
0x0006af1c bne.w 0x6b05c | goto label_17;
| }
0x0006af20 lsls r3, r4, 7 | r3 = r4 << 7;
0x0006af22 lsls r2, r4, 8 | r2 = r4 << 8;
0x0006af24 and r3, r3, 0x8000 | r3 &= 0x8000;
0x0006af28 and r2, r2, 0x200 | r2 &= 0x200;
0x0006af2c orrs r3, r2 | r3 |= r2;
0x0006af2e lsls r2, r4, 6 | r2 = r4 << 6;
0x0006af30 movw r1, 0x101 |
0x0006af34 and r2, r2, 0x40 | r2 &= 0x40;
0x0006af38 tst.w r4, 0x400 |
0x0006af3c orr.w r3, r3, r2 | r3 |= r2;
0x0006af40 movt r1, 8 | r1 = 0x80101;
0x0006af44 ite ne |
| if ((r4 & 0x400) == 0) {
0x0006af46 movne r2, 0x180 | r2 = 0x180;
| }
| if ((r4 & 0x400) == 0) {
0x0006af4a mov.w r2, 0x1b6 | r2 = 0x1b6;
| }
0x0006af4e orrs r1, r3 | r1 |= r3;
0x0006af50 mov r0, r6 | r0 = r6;
0x0006af52 blx 0x908c | r0 = fcn_0000908c ();
0x0006af56 subs.w sb, r0, 0 | sb = r0 - 0;
0x0006af58 lsrs r0, r0, 4 | r0 >>= 4;
| if (r0 < r0) {
0x0006af5a blt 0x6af98 | goto label_18;
| }
0x0006af5c ldr r1, [pc, 0x13c] |
0x0006af5e mov r2, sp | r2 = sp;
0x0006af60 add r1, pc | r1 = 0xd6000;
0x0006af62 bl 0x6a564 | r0 = fcn_0006a564 (r0);
0x0006af66 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0006af68 blt.w 0x6b072 | goto label_19;
| }
0x0006af6c lsls r2, r4, 0x18 | r2 = r4 << 0x18;
| if (r2 < r4) {
0x0006af6e bmi 0x6b03a | goto label_20;
| }
| label_5:
0x0006af70 ldr r0, [sp] | r0 = *(sp);
0x0006af72 movs r3, 0 | r3 = 0;
0x0006af74 mov r2, r4 | r2 = r4;
0x0006af76 mov r1, r7 | r1 = r7;
0x0006af78 bl 0x6ac70 | r0 = fcn_0006ac70 (r0, r1, r2, r3, r4);
0x0006af7c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0006af7e blt 0x6afa0 | goto label_4;
| }
| label_3:
0x0006af80 movs r5, 0 | r5 = 0;
0x0006af82 b 0x6aef4 |
| } while (1);
| label_10:
0x0006af84 movw r1, 0x1ed | r1 = 0x1ed;
0x0006af88 bl 0x72cb0 | r0 = fcn_00072cb0 (r0, r1);
0x0006af8c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0006af8e blt 0x6aef4 | goto label_0;
| }
0x0006af90 lsls r1, r4, 0x1d | r1 = r4 << 0x1d;
| if (r1 < r4) {
0x0006af92 bmi.w 0x6ae7e | goto label_1;
| }
0x0006af96 b 0x6af18 | goto label_2;
| label_18:
0x0006af98 blx 0x9628 | r0 = fcn_00009628 ();
0x0006af9c ldr r5, [r0] | r5 = *(r0);
0x0006af9e rsbs r5, r5, 0 | r5 -= ;
| label_4:
0x0006afa0 lsls r3, r4, 0x1b | r3 = r4 << 0x1b;
| if (r3 >= r4) {
0x0006afa2 bpl 0x6aef4 | goto label_0;
| }
0x0006afa4 ldr r0, [sp] | r0 = *(sp);
0x0006afa6 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0006afaa and r2, r4, 0x28 | r2 = r4 & 0x28;
0x0006afae mov r3, r0 | r3 = r0;
0x0006afb0 subs r2, 8 | r2 -= 8;
0x0006afb2 mov r1, r7 | r1 = r7;
0x0006afb4 it ne |
| if (r2 == 8) {
0x0006afb6 movne r2, 1 | r2 = 1;
| }
0x0006afb8 mov r0, r6 | r0 = r6;
0x0006afba str r3, [sp] | *(sp) = r3;
0x0006afbc bl 0x6a668 | r0 = fcn_0006a668 (r0, r1, r2, r3);
0x0006afc0 cmp r0, 0 |
| if (r0 > 0) {
0x0006afc2 bgt 0x6af80 | goto label_3;
| }
0x0006afc4 b 0x6aef4 | goto label_0;
| label_12:
0x0006afc6 ldr r0, [sp, 8] | r0 = dest;
0x0006afc8 blx 0x8dac | fcn_00008dac ();
0x0006afcc ldr r0, [sp, 4] | r0 = var_4h;
0x0006afce str.w sb, [sp, 8] | __asm ("str.w sb, [dest]");
0x0006afd2 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0006afd6 b 0x6afa0 | goto label_4;
| label_14:
0x0006afd8 blx 0x9628 | r0 = fcn_00009628 ();
0x0006afdc ldr r5, [r0] | r5 = *(r0);
0x0006afde rsbs r5, r5, 0 | r5 -= ;
| label_13:
0x0006afe0 ldr r0, [sp, 8] | r0 = dest;
0x0006afe2 blx 0x8f68 | fcn_00008f68 ();
| label_6:
0x0006afe6 ldr r0, [sp, 8] | r0 = dest;
0x0006afe8 blx 0x8dac | fcn_00008dac ();
0x0006afec movs r3, 0 | r3 = 0;
0x0006afee ldr r0, [sp, 4] | r0 = var_4h;
0x0006aff0 str r3, [sp, 8] | dest = r3;
0x0006aff2 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0006aff6 cmp r5, 0 |
| if (r5 >= 0) {
0x0006aff8 bge.w 0x6aef4 | goto label_0;
| }
0x0006affc b 0x6afa0 | goto label_4;
| label_7:
0x0006affe ldr r1, [pc, 0xa0] |
0x0006b000 movs r2, 0xf2 | r2 = 0xf2;
0x0006b002 ldr r3, [pc, 0xa0] |
0x0006b004 ldr r0, [pc, 0xa0] |
0x0006b006 add r1, pc | r1 = 0xd60ac;
0x0006b008 add r3, pc | r3 = 0xd60b2;
0x0006b00a adds r1, 7 | r1 += 7;
0x0006b00c add r0, pc | r0 = 0xd60b8;
0x0006b00e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x0006b012 ldr r1, [pc, 0x98] |
0x0006b014 movs r2, 0xf3 | r2 = 0xf3;
0x0006b016 ldr r3, [pc, 0x98] |
0x0006b018 ldr r0, [pc, 0x98] |
0x0006b01a add r1, pc | r1 = 0xd60cc;
0x0006b01c add r3, pc | r3 = 0xd60d2;
0x0006b01e adds r1, 7 | r1 += 7;
0x0006b020 add r0, pc | r0 = 0xd60d8;
0x0006b022 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x0006b026 ldr r1, [pc, 0x90] | r1 = *(0x6b0ba);
| do {
0x0006b028 movs r2, 0xf6 | r2 = 0xf6;
0x0006b02a ldr r3, [pc, 0x90] |
0x0006b02c ldr r0, [pc, 0x90] |
0x0006b02e add r1, pc | r1 += pc;
0x0006b030 add r3, pc | r3 = 0xd60f2;
0x0006b032 adds r1, 7 | r1 += 7;
0x0006b034 add r0, pc | r0 = 0xd60f8;
0x0006b036 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_20:
0x0006b03a ldr r0, [sp] | r0 = *(sp);
0x0006b03c mov r3, r8 | r3 = r8;
0x0006b03e mov r1, r8 | r1 = r8;
0x0006b040 movs r2, 2 | r2 = 2;
0x0006b042 blx 0x91cc | fcn_000091cc ();
0x0006b046 b 0x6af70 | goto label_5;
| label_11:
0x0006b048 ldr r1, [pc, 0x78] |
0x0006b04a movs r2, 0xff | r2 = 0xff;
0x0006b04c ldr r3, [pc, 0x78] |
0x0006b04e ldr r0, [pc, 0x7c] |
0x0006b050 add r1, pc | r1 = 0xd6118;
0x0006b052 add r3, pc | r3 = 0xd611e;
0x0006b054 adds r1, 7 | r1 += 7;
0x0006b056 add r0, pc | r0 = 0xd6128;
0x0006b058 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x0006b05a invalid |
| label_17:
0x0006b05c ldr r1, [pc, 0x70] |
0x0006b05e movw r2, 0x107 | r2 = 0x107;
0x0006b062 ldr r3, [pc, 0x70] |
0x0006b064 ldr r0, [pc, 0x70] |
0x0006b066 add r1, pc | r1 = 0xd613a;
0x0006b068 add r3, pc | r3 = 0xd6142;
0x0006b06a adds r1, 7 | r1 += 7;
0x0006b06c add r0, pc | r0 = 0xd6148;
0x0006b06e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_19:
0x0006b072 mov r0, sb | r0 = sb;
0x0006b074 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006b078 b 0x6afa0 | goto label_4;
| label_15:
0x0006b07a ldr r0, [sp, 4] | r0 = var_4h;
0x0006b07c blx 0x89b0 | fcn_000089b0 ();
0x0006b080 bl 0x6d118 | r0 = fcn_0006d118 (r0);
0x0006b084 and.w r5, r0, r0, asr 31 | r5 = r0 & (r0 >> 31);
0x0006b088 b 0x6afe6 | goto label_6;
| label_16:
0x0006b08a blx 0x927c | fprintf_chk ()
0x0006b08e nop |
| if (r1 > 7) {
0x0006b090 bgt 0x6b188 | goto label_21;
| }
0x0006b092 movs r5, r0 | r5 = r0;
0x0006b094 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006b096 movs r0, r0 |
0x0006b098 blt 0x6b028 |
| } while (r0 < r0);
0x0006b09a movs r5, r0 | r5 = r0;
0x0006b09c lsls r0, r1, 0x16 | r0 = r1 << 0x16;
0x0006b09e movs r2, r0 | r2 = r0;
0x0006b0a0 ldrh r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0006b0a2 movs r3, r0 | r3 = r0;
0x0006b0a4 ldrh r4, [r4, 0x24] | r4 = *((r4 + 0x24));
0x0006b0a6 movs r3, r0 | r3 = r0;
0x0006b0a8 invalid |
| label_21:
0x0006b188 cmp.w r8, 0 |
| if (r8 == 0) {
0x0006b18c beq 0x6b200 | void (*0x6b200)() ();
| }
0x0006b18e movs r7, 0 | r7 = 0;
0x0006b190 mov.w fp, 1 |
0x0006b194 mov r4, r7 | r4 = r7;
0x0006b196 add.w sl, sp, 0xf | sl += var_fh;
0x0006b19a add r3, sp, 0x10 | r3 += var_10h;
0x0006b19c str r3, [sp] | *(sp) = r3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6b320 */
| #include <stdint.h>
|
; (fcn) fcn.0006b320 () | void fcn_0006b320 (int16_t arg_1h, int16_t arg2) {
| int16_t var_0h_3;
| int16_t var_4h_3;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_fh;
| int16_t var_10h;
| int16_t var_14h;
| r1 = arg2;
| do {
0x0006b19e mov r1, sl | r1 = sl;
0x0006b1a0 mov r0, r6 | r0 = r6;
0x0006b1a2 bl 0x6b0dc | r0 = fcn_0006b0dc (r0, r1);
0x0006b1a6 subs r1, r0, 0 | r1 = r0 - 0;
0x0006b1a8 add.w r2, fp, -1 | r2 = fp + -1;
| if (r1 < r0) {
0x0006b1ac blt 0x6b204 | goto label_5;
| }
| if (r1 == r0) {
0x0006b1ae beq 0x6b290 | goto label_8;
| }
0x0006b1b0 cmp r5, 1 |
0x0006b1b2 ldrb.w r0, [sp, 0xf] | r0 = var_fh;
| if (r5 != 1) {
0x0006b1b6 beq 0x6b1c0 |
0x0006b1b8 cmp r0, 0xa |
| if (r0 == 0xa) {
0x0006b1ba beq 0x6b276 | goto label_9;
| }
0x0006b1bc cmp r0, 0xd |
| if (r0 == 0xd) {
0x0006b1be beq 0x6b2b2 | goto label_10;
| }
| }
0x0006b1c0 cmp r0, 0 |
| if (r0 == 0) {
0x0006b1c2 beq 0x6b234 | goto label_11;
| }
0x0006b1c4 cmp r7, 0 |
| if (r7 != 0) {
0x0006b1c6 bne 0x6b282 | goto label_12;
| }
0x0006b1c8 cmp.w sb, 0 |
| if (sb != 0) {
0x0006b1cc beq 0x6b1e6 |
0x0006b1ce ldr r0, [sp] | r0 = *(sp);
0x0006b1d0 movs r2, 1 | r2 = 1;
0x0006b1d2 adds r1, r4, 2 | r1 = r4 + 2;
0x0006b1d4 bl 0x6530c | r0 = fcn_0006530c (r0, r1, r2);
0x0006b1d8 cmp r0, 0 |
| if (r0 == 0) {
0x0006b1da beq.w 0x6b2ea | goto label_13;
| }
0x0006b1dc strh r6, [r0, 4] | *((r0 + 4)) = r6;
0x0006b1de ldrb.w r1, [sp, 0xf] | r1 = var_fh;
0x0006b1e2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006b1e4 strb r1, [r2, r4] | *((r2 + r4)) = r1;
| }
0x0006b1e6 adds r4, 1 | r4++;
| label_0:
0x0006b1e8 mvn r2, 0x80000000 | r2 = ~0x80000000;
0x0006b1ec cmp fp, r2 |
0x0006b1ee it ne |
| if (fp != r2) {
0x0006b1f0 cmpne r8, r4 | __asm ("cmpne r8, r4");
| }
0x0006b1f2 add.w fp, fp, 1 |
0x0006b1f6 ite ls |
| if (fp > r2) {
0x0006b1f8 movls r2, 1 | r2 = 1;
| }
| if (fp <= r2) {
0x0006b1fa movhi r2, 0 | r2 = 0;
| }
0x0006b1fc cmp r2, 0 |
0x0006b1fe beq 0x6b19e |
| } while (r2 == 0);
0x0006b200 mvn r1, 0x68 | r1 = ~0x68;
| label_5:
0x0006b204 mov r0, r6 | r0 = r6;
0x0006b206 str r1, [sp] | *(sp) = r1;
0x0006b208 blx 0x8d78 | strtoull (r0, r1, r2);
0x0006b20c ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006b20e ldr r1, [sp] | r1 = *(sp);
| label_3:
0x0006b210 str r1, [sp] | *(sp) = r1;
0x0006b212 blx 0x8dac | fcn_00008dac ();
0x0006b216 ldr r2, [pc, 0xec] |
0x0006b218 ldr r3, [pc, 0xe4] | r3 = *(0x6b300);
0x0006b21a ldr r1, [sp] | r1 = *(sp);
0x0006b21c add r2, pc | r2 = 0xd6526;
0x0006b21e ldr r3, [r2, r3] | r3 = *(0xd6526);
0x0006b220 ldr r2, [r3] | r2 = *(0xd6526);
0x0006b222 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006b224 eors r2, r3 | r2 ^= r3;
0x0006b226 mov.w r3, 0 | r3 = 0;
0x0006b228 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0006b22a bne 0x6b2f8 | goto label_14;
| }
0x0006b22c mov r0, r1 | r0 = r1;
0x0006b22e add sp, 0x1c |
0x0006b230 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006b232 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_11:
0x0006b234 mov.w ip, 1 |
0x0006b238 mov r1, ip | r1 = ip;
| label_4:
0x0006b23a tst.w ip, r7 |
| if ((ip & r7) != 0) {
0x0006b23e bne 0x6b282 | goto label_12;
| }
| label_2:
0x0006b240 tst.w r5, 6 |
0x0006b244 beq 0x6b24e |
| while (r0 < 0) {
| label_1:
0x0006b246 lsls r3, r5, 0x1e | r3 = r5 << 0x1e;
| if (r3 < r5) {
0x0006b248 bmi 0x6b2d0 | goto label_15;
| }
0x0006b24a orrs r7, r1 | r7 |= r1;
0x0006b24c b 0x6b1e8 | goto label_0;
0x0006b24e mov r0, r6 | r0 = r6;
0x0006b250 str r1, [sp, 4] | var_4h = r1;
0x0006b252 blx 0x89b0 | r0 = fcn_000089b0 ();
0x0006b256 cmp r0, 0 |
| label_6:
0x0006b258 ldr r1, [sp, 4] | r1 = var_4h;
0x0006b25a it lt |
| if (r0 >= 0) {
0x0006b25c orrlt r5, r5, 4 | r5 |= 4;
| }
0x0006b260 blt 0x6b246 |
| }
0x0006b262 str r1, [sp, 4] | var_4h = r1;
0x0006b264 blx 0x8ef0 | r0 = fcn_00008ef0 ();
0x0006b268 cmp r0, 0 |
0x0006b26a ldr r1, [sp, 4] | r1 = var_4h;
0x0006b26c ite ne |
| if (r0 == 0) {
0x0006b26e movne r2, 2 | r2 = 2;
| }
| if (r0 != 0) {
0x0006b270 moveq r2, 4 | r2 = 4;
| }
0x0006b272 orrs r5, r2 | r5 |= r2;
0x0006b274 b 0x6b246 | goto label_1;
| label_9:
0x0006b276 mov.w ip, 3 |
0x0006b27a movs r1, 2 | r1 = 2;
0x0006b27c tst.w ip, r7 |
| if ((ip & r7) == 0) {
0x0006b280 beq 0x6b240 | goto label_2;
| }
| label_12:
0x0006b282 mov r1, r6 | r1 = r6;
0x0006b284 str r2, [sp] | *(sp) = r2;
0x0006b286 blx 0x8ccc | fcn_00008ccc ();
0x0006b28a adds r0, 1 | r0++;
0x0006b28c ldr r2, [sp] | r2 = *(sp);
| if (r0 == 1) {
0x0006b28e beq 0x6b2d4 | goto label_16;
| }
| do {
| label_8:
0x0006b290 mov r0, r6 | r0 = r6;
0x0006b292 str r2, [sp] | *(sp) = r2;
0x0006b294 blx 0x8d78 | strtoull (r0, r1, r2);
0x0006b298 ldr r2, [sp] | r2 = *(sp);
0x0006b29a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006b29c cmp.w sb, 0 |
| if (sb != 0) {
0x0006b2a0 beq 0x6b2ae |
0x0006b2a2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006b2a4 movs r0, 0 | r0 = 0;
0x0006b2a6 strb r0, [r3, r4] | *((r3 + r4)) = r0;
0x0006b2a8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006b2aa str.w r3, [sb] | __asm ("str.w r3, [sb]");
| }
0x0006b2ae mov r1, r2 | r1 = r2;
0x0006b2b0 b 0x6b210 | goto label_3;
| label_10:
0x0006b2b2 mov.w ip, 5 |
0x0006b2b6 movs r1, 4 | r1 = 4;
0x0006b2b8 b 0x6b23a | goto label_4;
| label_15:
0x0006b2d0 mov r2, fp | r2 = fp;
0x0006b2d2 b 0x6b290 |
| } while (1);
| label_16:
0x0006b2d4 ldr r1, [pc, 0x3c] |
0x0006b2d6 movw r2, 0x526 | r2 = 0x526;
0x0006b2da ldr r3, [pc, 0x3c] |
0x0006b2dc ldr r0, [pc, 0x3c] |
0x0006b2de add r1, pc | r1 = 0xd65f6;
0x0006b2e0 add r3, pc | r3 = 0xd65fe;
0x0006b2e2 adds r1, 7 | r1 += 7;
0x0006b2e4 add r0, pc | r0 = 0xd6604;
0x0006b2e6 invalid |
| label_7:
0x0006b2e8 invalid |
| label_13:
0x0006b2ea mvn r1, 0xb | r1 = ~0xb;
0x0006b2ee b 0x6b204 | goto label_5;
| label_14:
0x0006b2f8 blx 0x927c | fprintf_chk ()
| if (r1 < 7) {
0x0006b2fc bls 0x6b3e0 | void (*0x6b3e0)() ();
| }
0x0006b2fe movs r5, r0 | r5 = r0;
0x0006b300 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006b302 movs r0, r0 |
| if (r0 > r0) {
0x0006b304 bhi 0x6b258 | goto label_6;
| }
0x0006b306 movs r5, r0 | r5 = r0;
0x0006b308 strh r4, [r4, 0x3a] | *((r4 + 0x3a)) = r4;
0x0006b30a movs r3, r0 | r3 = r0;
0x0006b30c ldrh r6, [r2, 0xe] | r6 = *((r2 + 0xe));
0x0006b30e movs r3, r0 | r3 = r0;
0x0006b310 adcs r0, r6, 1 | __asm ("adcs r0, r6, 1");
0x0006b314 strh r2, [r1, 0x3a] | *((r1 + 0x3a)) = r2;
0x0006b316 movs r3, r0 | r3 = r0;
0x0006b318 ldrh r4, [r7, 0xc] | r4 = *((r7 + 0xc));
0x0006b31a movs r3, r0 | r3 = r0;
0x0006b31c ldrh r0, [r1, 2] | r0 = *((r1 + 2));
0x0006b31e movs r3, r0 | r3 = r0;
0x0006b320 ldr r2, [pc, 0x88] |
0x0006b322 ldr r3, [pc, 0x8c] | r3 = *(0x6b3b2);
0x0006b324 push {r4, r5, r6, lr} |
0x0006b326 movs r6, 0 | r6 = 0;
0x0006b328 add r2, pc | r2 = 0xd66d8;
0x0006b32a sub sp, 8 |
0x0006b32c ldr r3, [r2, r3] |
0x0006b32e ldr r3, [r3] | r3 = *(0xd66d8);
0x0006b330 str r3, [sp, 4] | var_4h_3 = r3;
0x0006b332 mov.w r3, 0 | r3 = 0;
0x0006b336 str r6, [sp] | *(sp) = r6;
| if (r0 != 0) {
0x0006b338 cbz r0, 0x6b37c |
0x0006b33a mov r5, r1 | r5 = r1;
| if (r1 == 0) {
0x0006b33c cbz r1, 0x6b392 | goto label_17;
| }
0x0006b33e ldr r1, [pc, 0x74] |
0x0006b340 mov r2, sp | r2 = sp;
0x0006b342 add r1, pc | r1 = 0xd66fc;
0x0006b344 bl 0x6a520 | r0 = fcn_0006a520 (r0);
0x0006b348 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0006b34a blt 0x6b35c |
0x0006b34c ldr r0, [sp] | r0 = *(sp);
0x0006b34e mov r3, r5 | r3 = r5;
0x0006b350 mov r2, r6 | r2 = r6;
0x0006b352 mov.w r1, 0x100000 | r1 = 0x100000;
0x0006b356 bl 0x6b144 | r0 = fcn_0006b144 (r0, r1, r2, r3);
0x0006b35a mov r4, r0 | r4 = r0;
| }
0x0006b35c ldr r0, [sp] | r0 = *(sp);
0x0006b35e bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0006b362 ldr r2, [pc, 0x54] |
0x0006b364 ldr r3, [pc, 0x48] | r3 = *(0x6b3b0);
0x0006b366 add r2, pc | r2 = 0xd6724;
0x0006b368 ldr r3, [r2, r3] | r3 = *(0xd6724);
0x0006b36a ldr r2, [r3] | r2 = *(0xd6724);
0x0006b36c ldr r3, [sp, 4] | r3 = var_4h_3;
0x0006b36e eors r2, r3 | r2 ^= r3;
0x0006b370 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006b374 bne 0x6b3a8 | goto label_18;
| }
0x0006b376 mov r0, r4 | r0 = r4;
0x0006b378 add sp, 8 |
0x0006b37a pop {r4, r5, r6, pc} |
| }
0x0006b37c ldr r1, [pc, 0x3c] |
0x0006b37e mov.w r2, 0x14a | r2 = 0x14a;
0x0006b382 ldr r3, [pc, 0x3c] |
0x0006b384 ldr r0, [pc, 0x3c] |
0x0006b386 add r1, pc | r1 = 0xd6746;
0x0006b388 add r3, pc | r3 = 0xd674e;
0x0006b38a adds r1, 7 | r1 += 7;
0x0006b38c add r0, pc | r0 = 0xd6754;
0x0006b38e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_17:
0x0006b392 ldr r1, [pc, 0x34] |
0x0006b394 movw r2, 0x14b | r2 = 0x14b;
0x0006b398 ldr r3, [pc, 0x30] |
0x0006b39a ldr r0, [pc, 0x34] |
0x0006b39c add r1, pc | r1 = 0xd676a;
0x0006b39e add r3, pc | r3 = 0xd676e;
0x0006b3a0 adds r1, 7 | r1 += 7;
0x0006b3a2 add r0, pc | r0 = 0xd6778;
0x0006b3a4 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_18:
0x0006b3a8 blx 0x927c | fprintf_chk ()
0x0006b3ac bvc 0x6b2e8 | __asm ("bvc aav.0x000000ff");
| goto label_7;
0x0006b3ae movs r5, r0 | r5 = r0;
0x0006b3b0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006b3b2 movs r0, r0 |
0x0006b3b4 lsrs r6, r0, 0xc | r6 = r0 >> 0xc;
0x0006b3b6 movs r3, r0 | r3 = r0;
0x0006b3b8 bvc 0x6b478 | __asm ("bvc aav.0x000000ff");
0x0006b3ba movs r5, r0 | r5 = r0;
0x0006b3bc strh r2, [r4, 0x34] | *((r4 + 0x34)) = r2;
0x0006b3be movs r3, r0 | r3 = r0;
0x0006b3c0 ldrh r0, [r0, 8] | r0 = *((r0 + 8));
0x0006b3c2 movs r3, r0 | r3 = r0;
0x0006b3c4 subs.w r0, ip, 1 | r0 = ip - 1;
0x0006b3c8 strh r4, [r1, 0x34] | *((r1 + 0x34)) = r4;
0x0006b3ca movs r3, r0 | r3 = r0;
0x0006b3cc ldrh r2, [r5, 6] | r2 = *((r5 + 6));
0x0006b3ce movs r3, r0 | r3 = r0;
0x0006b3d0 vhadd.u32 d0, d2, d1 | __asm ("vhadd.u32 d0, d2, d1");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6b3d4 */
| #include <stdint.h>
|
; (fcn) fcn.0006b3d4 () | void fcn_0006b3d4 (int16_t arg_8ch, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_8ch_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_20h_3;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006b3d4 push.w {r4, r5, r6, r7, r8, lr} |
0x0006b3d8 mov r6, r2 | r6 = r2;
0x0006b3da ldr r2, [pc, 0xcc] | r2 = *(0x6b4aa);
0x0006b3dc mov r7, r3 | r7 = r3;
0x0006b3de sub sp, 0x90 |
0x0006b3e0 ldr r3, [pc, 0xc8] |
0x0006b3e2 add r2, pc | r2 += pc;
0x0006b3e4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006b3e6 ldr r3, [r3] | r3 = *(0x6b4ac);
0x0006b3e8 str r3, [sp, 0x8c] | *(arg_8ch) = r3;
0x0006b3ea mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x0006b3ee cbz r0, 0x6b40a | goto label_4;
| }
0x0006b3f0 mov r5, r0 | r5 = r0;
0x0006b3f2 cmp r1, 0 |
| if (r1 == 0) {
0x0006b3f4 beq 0x6b48a | goto label_5;
| }
| label_1:
0x0006b3f6 ldr.w r8, [r1, 0x10] | r8 = *((r1 + 0x10));
0x0006b3fa tst.w r8, 7 |
| if ((r8 & 7) == 0) {
0x0006b3fe beq 0x6b40a | goto label_4;
| }
0x0006b400 bl 0x70bf8 | fcn_00070bf8 ();
| if (r6 == 0) {
0x0006b404 cbz r6, 0x6b426 | goto label_6;
| }
0x0006b406 cmp r0, 3 |
| if (r0 > 3) {
0x0006b408 bgt 0x6b454 | goto label_7;
| }
| do {
| label_4:
0x0006b40a movs r0, 0 | r0 = 0;
| label_0:
0x0006b40c ldr r2, [pc, 0xa0] |
0x0006b40e ldr r3, [pc, 0x9c] | r3 = *(0x6b4ae);
0x0006b410 add r2, pc | r2 = 0xd68c4;
0x0006b412 ldr r3, [r2, r3] | r3 = *(0xd68c4);
0x0006b414 ldr r2, [r3] | r2 = *(0xd68c4);
0x0006b416 ldr r3, [sp, 0x8c] | r3 = *(arg_8ch);
0x0006b418 eors r2, r3 | r2 ^= r3;
0x0006b41a invalid |
| label_3:
0x0006b41c lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0006b41e bne 0x6b4a4 | goto label_8;
| }
0x0006b420 add sp, 0x90 |
0x0006b422 pop.w {r4, r5, r6, r7, r8, pc} |
| label_6:
0x0006b426 cmp r0, 3 |
0x0006b428 ble 0x6b40a |
| } while (r0 <= 3);
0x0006b42a ldr r2, [pc, 0x88] |
0x0006b42c ubfx r3, r8, 0, 0xc | r3 = (r8 >> 0) & ((1 << 0xc) - 1);
0x0006b430 ldr r0, [pc, 0x84] |
0x0006b432 ldr r1, [pc, 0x88] |
0x0006b434 add r2, pc | r2 = 0xd68ee;
0x0006b436 strd r5, r3, [sp, 8] | __asm ("strd r5, r3, [sp, 8]");
0x0006b43a add r0, pc | r0 = 0xd68f6;
0x0006b43c movw r3, 0x589 | r3 = 0x589;
0x0006b440 add r1, pc | r1 = 0xd6902;
0x0006b442 adds r2, 7 | r2 += 7;
0x0006b444 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0006b448 mov r1, r6 | r1 = r6;
0x0006b44a movs r0, 4 | r0 = 4;
0x0006b44c bl 0x71448 | fcn_00071448 ();
0x0006b450 mov r0, r6 | r0 = r6;
0x0006b452 b 0x6b40c | goto label_0;
| label_7:
0x0006b454 ldr r3, [pc, 0x68] |
0x0006b456 movs r4, 0 | r4 = 0;
0x0006b458 ldr r2, [pc, 0x68] |
0x0006b45a mov r0, r6 | r0 = r6;
0x0006b45c ldr r1, [pc, 0x68] |
0x0006b45e add r3, pc | r3 = 0xd6922;
0x0006b460 str r4, [sp] | *(sp) = r4;
0x0006b462 add r2, pc | r2 = 0xd692a;
0x0006b464 adds r3, 7 | r3 += 7;
0x0006b466 add r1, pc | r1 = 0xd6932;
0x0006b468 str r2, [sp, 0x10] | var_10h = r2;
0x0006b46a str r1, [sp, 0xc] | var_ch = r1;
0x0006b46c ubfx r2, r8, 0, 0xc | r2 = (r8 >> 0) & ((1 << 0xc) - 1);
0x0006b46e lsls r3, r1, 8 | r3 = r1 << 8;
| label_2:
0x0006b470 movw r1, 0x585 | r1 = 0x585;
0x0006b474 str r3, [sp, 4] | var_4h = r3;
0x0006b476 invalid |
0x0006b478 strh r5, [r0, r0] | *((r0 + r0)) = r5;
0x0006b47a mov r3, r7 | r3 = r7;
0x0006b47c str r1, [sp, 8] | *((sp + 8)) = r1;
0x0006b47e mov r2, r5 | r2 = r5;
0x0006b480 movs r1, 4 | r1 = 4;
0x0006b482 bl 0x722f4 | fcn_000722f4 (r0, r1, r2, r3, r4, r5, r6);
0x0006b486 mov r0, r4 | r0 = r4;
0x0006b488 b 0x6b40c | goto label_0;
| label_5:
0x0006b48a add r4, sp, 0x20 | r4 += var_20h_3;
0x0006b48c mov r1, r4 | r1 = r4;
0x0006b48e blx 0x8e3c | r0 = fcn_00008e3c ();
0x0006b492 cmp r0, 0 |
0x0006b494 it ge |
| if (r0 >= 0) {
0x0006b496 movge r1, r4 | r1 = r4;
| goto label_9;
| }
| if (r0 >= 0) {
| label_9:
0x0006b498 bge 0x6b3f6 | goto label_1;
| }
0x0006b49a blx 0x9628 | r0 = fcn_00009628 ();
0x0006b49e ldr r0, [r0] | r0 = *(r0);
0x0006b4a0 rsbs r0, r0, 0 | r0 -= ;
0x0006b4a2 b 0x6b40c | goto label_0;
| label_8:
0x0006b4a4 blx 0x927c | fprintf_chk ()
0x0006b4a8 bvs 0x6b470 | __asm ("bvs aav.0x000000ff");
| goto label_2;
0x0006b4aa movs r5, r0 | r5 = r0;
0x0006b4ac lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006b4ae movs r0, r0 |
0x0006b4b0 bvs 0x6b41c | __asm ("bvs aav.0x000000ff");
| goto label_3;
0x0006b4b2 movs r5, r0 | r5 = r0;
0x0006b4b4 strh r4, [r6, 0x2e] | *((r6 + 0x2e)) = r4;
0x0006b4b6 movs r3, r0 | r3 = r0;
0x0006b4b8 strh r6, [r2, 0x38] | *((r2 + 0x38)) = r6;
0x0006b4ba movs r3, r0 | r3 = r0;
0x0006b4bc ldrh r4, [r3, 8] | r4 = *((r3 + 8));
0x0006b4be movs r3, r0 | r3 = r0;
0x0006b4c0 strh r2, [r1, 0x2e] | *((r1 + 0x2e)) = r2;
0x0006b4c2 movs r3, r0 | r3 = r0;
0x0006b4c4 strh r6, [r5, 0x36] | *((r5 + 0x36)) = r6;
0x0006b4c6 movs r3, r0 | r3 = r0;
0x0006b4c8 ldrh r6, [r6, 6] | r6 = *((r6 + 6));
0x0006b4ca movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6b4cc */
| #include <stdint.h>
|
; (fcn) fcn.0006b4cc () | void fcn_0006b4cc (int16_t arg_128h, int16_t arg_8ch, int16_t arg_170h, int16_t arg_174h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_14h_2;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_30h;
| int16_t var_50h;
| int16_t var_8ch;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_18h;
| int16_t var_28h_2;
| int16_t var_2ah;
| int16_t var_2bh;
| int16_t var_a8h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006b4cc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006b4d0 mov r4, r2 | r4 = r2;
0x0006b4d2 ldr r2, [pc, 0x3a0] |
0x0006b4d4 mov r7, r3 | r7 = r3;
0x0006b4d6 sub sp, 0x94 |
0x0006b4d8 ldr r3, [pc, 0x39c] | r3 = *(0x6b878);
0x0006b4da add r2, pc | r2 = 0xd6d54;
0x0006b4dc ldr.w sl, [sp, 0xb8] | sl = var_0h;
0x0006b4e0 ldr r3, [r2, r3] |
0x0006b4e2 ldr r3, [r3] | r3 = *(0xd6d54);
0x0006b4e4 str r3, [sp, 0x8c] | var_8ch = r3;
0x0006b4e6 mov.w r3, 0 | r3 = 0;
0x0006b4ea ldr r3, [sp, 0xc0] | r3 = var_8h;
0x0006b4ec str r3, [sp, 0x10] | var_10h_2 = r3;
0x0006b4ee ldr r3, [sp, 0xc4] | r3 = var_ch;
0x0006b4f0 str r3, [sp, 0x14] | var_14h_2 = r3;
0x0006b4f2 cmp r0, 0 |
| if (var_0h_2 == ) {
0x0006b4f4 beq.w 0x6b6c8 | goto label_20;
| }
0x0006b4f8 ldr r3, [sp, 0x10] | r3 = var_10h_2;
0x0006b4fa cmp r3, 0 |
| if (r3 == 0) {
0x0006b4fc beq.w 0x6b6de | goto label_21;
| }
0x0006b500 ldr r3, [sp, 0xbc] | r3 = var_4h;
0x0006b502 mvns r3, r3 | r3 = ~r3;
0x0006b504 tst.w r3, 6 |
| if ((r3 & 6) == 0) {
0x0006b508 beq.w 0x6b6f4 | goto label_22;
| }
0x0006b50c mov r8, r1 | r8 = r1;
0x0006b50e mvn r2, 0x80000000 | r2 = ~0x80000000;
0x0006b512 adds.w r1, r4, -0x80000000 | r1 = r4 + -0x80000000;
0x0006b516 adc r3, r7, -1 | __asm ("adc r3, r7, -1");
0x0006b51a cmp r1, r2 |
0x0006b51c sbcs r3, r3, -1 | __asm ("sbcs r3, r3, -1");
| if (r1 <= r2) {
0x0006b520 blo.w 0x6b83e | goto label_23;
| }
0x0006b524 cmp.w sl, -1 |
0x0006b528 mov r6, r0 | r6 = r0;
0x0006b52a ite ne |
| if (sl == -1) {
0x0006b52c movne r5, sl | r5 = sl;
| }
| if (sl != -1) {
0x0006b52e moveq r5, 0x800 | r5 = 0x800;
| }
0x0006b532 blx 0x89b0 | r0 = fcn_000089b0 ();
0x0006b536 cmp r0, 0 |
| if (r0 >= 0) {
0x0006b538 bge.w 0x6b658 | goto label_24;
| }
| label_2:
0x0006b53c cmp.w r7, -1 |
0x0006b540 it eq |
| if (r7 == -1) {
0x0006b542 cmpeq r4, -1 | __asm ("cmpeq r4, -1");
| }
| if (r7 != -1) {
0x0006b546 bne 0x6b61a | goto label_25;
| }
| label_1:
0x0006b548 ldr r3, [sp, 0xbc] | r3 = var_4h;
0x0006b54a mov.w r8, 0 | r8 = 0;
0x0006b54e mov r7, r8 | r7 = r8;
0x0006b550 mov sb, r8 | sb = r8;
0x0006b552 adds r1, r5, 1 | r1 = r5 + 1;
0x0006b554 and r3, r3, 1 | r3 &= 1;
0x0006b558 str r3, [sp, 0xc] | var_ch_2 = r3;
0x0006b55a ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x0006b55c cmp r3, 0 |
| if (r3 == 0) {
0x0006b55e beq 0x6b606 | goto label_26;
| }
| do {
0x0006b560 mov r0, r1 | r0 = r1;
0x0006b562 blx 0x9234 | r0 = blkid_safe_string ();
0x0006b566 mov r4, r0 | r4 = r0;
0x0006b568 cmp r0, 0 |
| if (r0 == 0) {
0x0006b56a beq.w 0x6b864 | goto label_27;
| }
0x0006b56e cmp.w sb, 0 |
| if (sb != 0) {
0x0006b572 beq 0x6b590 |
0x0006b574 cmp.w r8, 0 |
| if (r8 == 0) {
0x0006b578 beq.w 0x6b718 | goto label_28;
| }
0x0006b57c mov r2, sb | r2 = sb;
0x0006b57e mov r1, r8 | r1 = r8;
0x0006b580 blx 0x8f9c | fcn_00008f9c ();
0x0006b584 mov r1, sb | r1 = sb;
0x0006b586 mov.w r2, -1 | r2 = -1;
0x0006b58a mov r0, r8 | r0 = r8;
0x0006b58c blx 0x9014 | fcn_00009014 ();
| }
0x0006b590 mov r0, r8 | r0 = r8;
0x0006b592 blx 0x8dac | fcn_00008dac ();
| label_0:
0x0006b596 cmp.w sl, -1 |
| if (sl == -1) {
0x0006b59a beq 0x6b692 | goto label_29;
| }
| label_3:
0x0006b59c blx 0x9628 | fcn_00009628 ();
0x0006b5a0 sub.w r8, r5, r7 | r8 = r5 - r7;
0x0006b5a4 movs r3, 0 | r3 = 0;
0x0006b5a6 str r3, [r0] | *(r0) = r3;
0x0006b5a8 mov sb, r0 | sb = r0;
0x0006b5aa mov r3, r6 | r3 = r6;
0x0006b5ac mov r2, r8 | r2 = r8;
0x0006b5ae movs r1, 1 | r1 = 1;
0x0006b5b0 adds r0, r4, r7 | r0 = r4 + r7;
0x0006b5b2 blx 0x94a0 | r0 = fcn_000094a0 ();
0x0006b5b6 cmp r8, r0 |
0x0006b5b8 mov fp, r0 |
| if (r8 <= r0) {
0x0006b5ba blo 0x6b69c | goto label_30;
| }
0x0006b5bc add r7, r0 | r7 += r0;
0x0006b5be mov r0, r6 | r0 = r6;
0x0006b5c0 blx 0x94d0 | r0 = fcn_000094d0 ();
0x0006b5c4 mov r8, r0 | r8 = r0;
0x0006b5c6 cmp r0, 0 |
| if (r0 != 0) {
0x0006b5c8 bne.w 0x6b7f2 | goto label_31;
| }
0x0006b5ca strh r3, [r2, 8] | *((r2 + 8)) = r3;
0x0006b5cc mov r0, r6 | r0 = r6;
0x0006b5ce blx 0x8fe4 | r0 = fcn_00008fe4 ();
0x0006b5d2 cmp r0, 0 |
| if (r0 != 0) {
0x0006b5d4 bne.w 0x6b72c | goto label_7;
| }
0x0006b5d8 cmp.w sl, -1 |
| if (sl != -1) {
0x0006b5dc bne.w 0x6b806 | goto label_32;
| }
0x0006b5e0 cmp.w fp, 0 |
| if (fp == 0) {
0x0006b5e4 beq 0x6b6b2 | goto label_33;
| }
0x0006b5e6 mvn r3, 0xfc000000 | r3 = ~0xfc000000;
0x0006b5ea cmp r5, r3 |
| if (r5 >= r3) {
0x0006b5ec bhs.w 0x6b820 | goto label_34;
| }
0x0006b5f0 lsls r2, r5, 1 | r2 = r5 << 1;
0x0006b5f2 mov sb, r5 | sb = r5;
0x0006b5f4 mov r8, r4 | r8 = r4;
0x0006b5f6 cmp r2, r3 |
0x0006b5f8 it hs |
| if (r2 < r3) {
0x0006b5fa movhs r2, r3 | r2 = r3;
| }
0x0006b5fc ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x0006b5fe mov r5, r2 | r5 = r2;
0x0006b600 adds r1, r5, 1 | r1 = r5 + 1;
0x0006b602 cmp r3, 0 |
0x0006b604 bne 0x6b560 |
| } while (r3 != 0);
| label_26:
0x0006b606 mov r0, r8 | r0 = r8;
0x0006b608 blx 0x94dc | r0 = fcn_000094dc ();
0x0006b60c mov r4, r0 | r4 = r0;
0x0006b60e cmp r0, 0 |
| if (r0 != 0) {
0x0006b610 bne 0x6b596 | goto label_0;
| }
0x0006b612 mov r4, r8 | r4 = r8;
0x0006b614 mvn r8, 0xb | r8 = ~0xb;
0x0006b618 b 0x6b634 | goto label_4;
| label_25:
0x0006b61a mov r1, r4 | r1 = r4;
0x0006b61c movs r2, 0 | r2 = 0;
0x0006b61e mov r0, r6 | r0 = r6;
0x0006b620 blx 0x8e30 | r0 = fcn_00008e30 ();
0x0006b624 cmp r0, 0 |
| if (r0 >= 0) {
0x0006b626 bge 0x6b548 | goto label_1;
| }
0x0006b628 blx 0x9628 | r0 = fcn_00009628 ();
0x0006b62c ldr r3, [r0] | r3 = *(r0);
0x0006b62e movs r4, 0 | r4 = 0;
0x0006b630 rsb.w r8, r3, 0 | r8 = r3 - ;
| label_4:
0x0006b634 mov r0, r4 | r0 = r4;
0x0006b636 blx 0x8dac | fcn_00008dac ();
0x0006b63a ldr r2, [pc, 0x240] |
0x0006b63c ldr r3, [pc, 0x238] | r3 = *(0x6b878);
0x0006b63e add r2, pc | r2 = 0xd6ec0;
0x0006b640 ldr r3, [r2, r3] | r3 = *(0xd6ec0);
0x0006b642 ldr r2, [r3] | r2 = *(0xd6ec0);
0x0006b644 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0006b646 eors r2, r3 | r2 ^= r3;
0x0006b648 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006b64c bne.w 0x6b86e | goto label_35;
| }
0x0006b650 mov r0, r8 | r0 = r8;
0x0006b652 add sp, 0x94 |
0x0006b654 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_24:
0x0006b658 add.w sb, sp, 0x20 | sb += var_20h;
0x0006b65c mov r1, sb | r1 = sb;
0x0006b65e blx 0x9020 | r0 = fcn_00009020 ();
0x0006b662 cmp r0, 0 |
| if (r0 < 0) {
0x0006b664 blt 0x6b70a | goto label_36;
| }
0x0006b666 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006b668 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0006b66c cmp.w r3, 0x8000 |
| if (r3 != 0x8000) {
0x0006b670 bne.w 0x6b53c | goto label_2;
| }
0x0006b674 cmp.w sl, -1 |
| if (sl == -1) {
0x0006b678 beq.w 0x6b78a | goto label_37;
| }
| label_5:
0x0006b67c ldr r3, [sp, 0xbc] | r3 = var_4h;
0x0006b67e lsls r3, r3, 0x1c | r3 <<= 0x1c;
| if (r3 >= r3) {
0x0006b680 bpl.w 0x6b53c | goto label_2;
| }
0x0006b684 movs r3, 0 | r3 = 0;
0x0006b686 mov r1, sb | r1 = sb;
0x0006b688 mov r0, r8 | r0 = r8;
0x0006b68a mov r2, r3 | r2 = r3;
0x0006b68c bl 0x6b3d4 | fcn_0006b3d4 (r0, r1, r2, r3, r4);
0x0006b690 b 0x6b53c | goto label_2;
| label_29:
0x0006b692 mov r0, r4 | r0 = r4;
0x0006b694 blx 0x8bf8 | r0 = reallocarray ();
0x0006b698 subs r5, r0, 1 | r5 = r0 - 1;
0x0006b69a b 0x6b59c | goto label_3;
| label_30:
0x0006b69c ldr r1, [pc, 0x1e0] |
0x0006b69e movw r2, 0x263 | r2 = 0x263;
0x0006b6a0 movs r2, 0x63 | r2 = 0x63;
0x0006b6a2 ldr r3, [pc, 0x1e0] |
0x0006b6a4 ldr r0, [pc, 0x1e0] |
0x0006b6a6 add r1, pc | r1 = 0xd6f2a;
0x0006b6a8 add r3, pc | r3 = 0xd6f32;
0x0006b6aa adds r1, 7 | r1 += 7;
0x0006b6ac add r0, pc | r0 = 0xd6f38;
0x0006b6ae bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_33:
0x0006b6b2 ldr r1, [pc, 0x1d8] |
0x0006b6b4 movw r2, 0x272 | r2 = 0x272;
0x0006b6b8 ldr r3, [pc, 0x1d4] |
0x0006b6ba ldr r0, [pc, 0x1d8] |
0x0006b6bc add r1, pc | r1 = 0xd6f4e;
0x0006b6be add r3, pc | r3 = 0xd6f52;
0x0006b6c0 adds r1, 7 | r1 += 7;
0x0006b6c2 add r0, pc | r0 = 0xd6f5c;
0x0006b6c4 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_20:
0x0006b6c8 ldr r1, [pc, 0x1cc] |
0x0006b6ca mov.w r2, 0x21c | r2 = 0x21c;
0x0006b6ce ldr r3, [pc, 0x1cc] |
0x0006b6d0 ldr r0, [pc, 0x1cc] |
0x0006b6d2 add r1, pc | r1 = 0xd6f6e;
0x0006b6d4 add r3, pc | r3 = 0xd6f76;
0x0006b6d6 adds r1, 7 | r1 += 7;
0x0006b6d8 add r0, pc | r0 = 0xd6f7c;
0x0006b6da bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_21:
0x0006b6de ldr r1, [pc, 0x1c4] |
0x0006b6e0 movw r2, 0x21d | r2 = 0x21d;
0x0006b6e4 ldr r3, [pc, 0x1c0] |
0x0006b6e6 ldr r0, [pc, 0x1c4] |
0x0006b6e8 add r1, pc | r1 = 0xd6f92;
0x0006b6ea add r3, pc | r3 = 0xd6f96;
0x0006b6ec adds r1, 7 | r1 += 7;
0x0006b6ee add r0, pc | r0 = 0xd6fa0;
0x0006b6f0 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_22:
0x0006b6f4 ldr r1, [pc, 0x1b8] |
0x0006b6f6 movw r2, 0x21e | r2 = 0x21e;
0x0006b6fa ldr r3, [pc, 0x1b8] |
0x0006b6fc ldr r0, [pc, 0x1b8] |
0x0006b6fe add r1, pc | r1 = 0xd6fb2;
0x0006b700 add r3, pc | r3 = 0xd6fba;
0x0006b702 adds r1, 7 | r1 += 7;
0x0006b704 add r0, pc | r0 = 0xd6fc0;
0x0006b706 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_36:
0x0006b70a blx 0x9628 | r0 = fcn_00009628 ();
0x0006b70e ldr r3, [r0] | r3 = *(r0);
0x0006b710 rsb.w r8, r3, 0 | r8 = r3 - ;
| label_11:
0x0006b714 movs r4, 0 | r4 = 0;
0x0006b716 b 0x6b634 | goto label_4;
| label_28:
0x0006b718 ldr r1, [pc, 0x1a0] |
0x0006b71a movs r2, 0x16 | r2 = 0x16;
0x0006b71c ldr r3, [pc, 0x1a0] |
0x0006b71e ldr r0, [pc, 0x1a4] |
0x0006b720 add r1, pc | r1 = 0xd6fe0;
0x0006b722 add r3, pc | r3 = 0xd6fe6;
0x0006b724 adds r1, 7 | r1 += 7;
0x0006b726 add r0, pc | r0 = 0xd6ff0;
0x0006b728 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x0006b72c ldr r3, [sp, 0xbc] | r3 = var_4h;
0x0006b72e tst.w r3, 6 |
| if ((r3 & 6) != 0) {
0x0006b732 beq 0x6b776 |
0x0006b734 movs r3, 0 | r3 = 0;
0x0006b736 ldrb.w r2, [sp, 0xc] | r2 = var_ch_2;
0x0006b73a strb r3, [r4, r7] | *((r4 + r7)) = r3;
0x0006b73c adds r1, r7, 1 | r1 = r7 + 1;
0x0006b73e str r3, [sp, 0x1c] | var_1ch = r3;
0x0006b740 mov r0, r4 | r0 = r4;
0x0006b742 ldr r3, [sp, 0xbc] | r3 = var_4h;
0x0006b744 tst.w r3, 2 |
0x0006b748 add r3, sp, 0x20 | r3 += var_20h;
0x0006b74a str r3, [sp] | *(sp) = r3;
0x0006b74c add r3, sp, 0x1c | r3 += var_1ch;
| if ((r3 & 2) == 0) {
0x0006b74e beq 0x6b826 | goto label_38;
| }
0x0006b750 bl 0x6f730 | r0 = fcn_0006f730 (r0, r1, r2, r3, r4, r5, r6);
0x0006b754 mov r3, r0 | r3 = r0;
| label_8:
0x0006b756 cmp r3, 0 |
| if (r3 < 0) {
0x0006b758 blt 0x6b846 | goto label_39;
| }
0x0006b75a ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x0006b75c cmp r5, 0 |
0x0006b75e ite eq |
| if (r5 != 0) {
0x0006b760 moveq r3, 0 | r3 = 0;
| }
| if (r5 == 0) {
0x0006b762 andne r3, r3, 1 | r3 &= 1;
| }
0x0006b766 cmp r3, 0 |
| if (r3 != 0) {
0x0006b768 bne 0x6b850 | goto label_40;
| }
| label_10:
0x0006b76a mov r0, r4 | r0 = r4;
0x0006b76c blx 0x8dac | fcn_00008dac ();
0x0006b770 ldrd r4, r5, [sp, 0x1c] | __asm ("ldrd r4, r5, [var_1ch]");
0x0006b774 mov r7, r5 | r7 = r5;
| }
0x0006b776 ldr r3, [sp, 0x14] | r3 = var_14h_2;
| if (r3 != 0) {
0x0006b778 cbz r3, 0x6b7c6 |
0x0006b77a ldr r2, [sp, 0x10] | r2 = var_10h_2;
0x0006b77c movs r3, 0 | r3 = 0;
0x0006b77e strb r3, [r4, r7] | *((r4 + r7)) = r3;
0x0006b780 str r4, [r2] | *(r2) = r4;
0x0006b782 mov r4, r3 | r4 = r3;
0x0006b784 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x0006b786 str r7, [r3] | *(r3) = r7;
0x0006b788 b 0x6b634 | goto label_4;
| label_37:
0x0006b78a ldrd r0, r2, [sp, 0x50] | __asm ("ldrd r0, r2, [var_50h]");
| label_13:
0x0006b78c lsls r4, r2, 8 | r4 = r2 << 8;
0x0006b78e cmp.w r7, -1 |
0x0006b792 it eq |
| if (r7 == -1) {
0x0006b794 cmpeq r4, -1 | __asm ("cmpeq r4, -1");
| }
0x0006b798 itete eq |
| if (r7 != -1) {
0x0006b79a moveq r3, 0 | r3 = 0;
| }
| if (r7 == -1) {
0x0006b79c movne r3, r4 | r3 = r4;
| }
| if (r7 != -1) {
0x0006b79e moveq r1, r3 | r1 = r3;
| }
| if (r7 == -1) {
0x0006b7a0 movne r1, r7 | r1 = r7;
| }
0x0006b7a2 cmp r3, r0 |
0x0006b7a4 sbcs.w ip, r1, r2 | __asm ("sbcs.w ip, r1, r2");
| if (r3 >= r0) {
0x0006b7a8 bhs 0x6b82e | goto label_41;
| }
0x0006b7aa subs r3, r0, r3 | r3 = r0 - r3;
0x0006b7ac sbc.w r1, r2, r1 | __asm ("sbc.w r1, r2, r1");
0x0006b7b0 cmp.w r3, 0x4000000 |
0x0006b7b4 sbcs r1, r1, 0 | __asm ("sbcs r1, r1, 0");
| if (r3 >= 0x4000000) {
0x0006b7b8 bhs 0x6b85e | goto label_42;
| }
| label_9:
0x0006b7ba cmp r0, 1 |
0x0006b7bc sbcs r2, r2, 0 | __asm ("sbcs r2, r2, 0");
0x0006b7c0 it ge |
| if (r0 < 1) {
0x0006b7c2 addge r5, r3, 1 | r5 = r3 + 1;
| }
0x0006b7c4 b 0x6b67c | goto label_5;
| }
0x0006b7c6 mov r2, r7 | r2 = r7;
0x0006b7c8 mov r1, r3 | r1 = r3;
0x0006b7ca mov r0, r4 | r0 = r4;
0x0006b7cc blx 0x95ac | r0 = getpwuid_r ();
| if (r0 == 0) {
0x0006b7d0 cbz r0, 0x6b832 | goto label_43;
| }
0x0006b7d2 mvn r8, 0x49 | r8 = ~0x49;
| label_6:
0x0006b7d6 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x0006b7d8 cmp r3, 0 |
| if (r3 == 0) {
0x0006b7da beq.w 0x6b634 | goto label_4;
| }
| label_12:
0x0006b7de cmp r5, 0 |
| if (r5 == 0) {
0x0006b7e0 beq.w 0x6b634 | goto label_4;
| }
0x0006b7e4 mov.w r2, -1 | r2 = -1;
0x0006b7e8 mov r1, r5 | r1 = r5;
0x0006b7ea mov r0, r4 | r0 = r4;
0x0006b7ec blx 0x9014 | fcn_00009014 ();
0x0006b7f0 b 0x6b634 | goto label_4;
| label_31:
0x0006b7f2 ldr.w r3, [sb] | r3 = *(sb);
0x0006b7f6 cmp r3, 0 |
0x0006b7f8 it gt |
| if (r3 <= 0) {
0x0006b7fa rsbgt r8, r3, 0 | __asm ("rsbgt r8, r3, 0");
| goto label_44;
| }
| if (r3 > 0) {
| label_44:
0x0006b7fe bgt 0x6b7d6 | goto label_6;
| }
0x0006b800 mvn r8, 4 | r8 = ~4;
0x0006b804 b 0x6b7d6 | goto label_6;
| label_32:
0x0006b806 cmp sl, r7 |
| if (sl == r7) {
0x0006b808 beq 0x6b72c | goto label_7;
| }
0x0006b80a ldr r1, [pc, 0xbc] |
0x0006b80c movw r2, 0x26e | r2 = 0x26e;
0x0006b810 ldr r3, [pc, 0xb8] |
0x0006b812 ldr r0, [pc, 0xbc] |
0x0006b814 add r1, pc | r1 = 0xd70e2;
0x0006b816 add r3, pc | r3 = 0xd70e6;
0x0006b818 adds r1, 7 | r1 += 7;
0x0006b81a add r0, pc | r0 = 0xd70f0;
0x0006b81c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_34:
0x0006b820 mvn r8, 6 | r8 = ~6;
0x0006b824 b 0x6b7d6 | goto label_6;
| label_38:
0x0006b826 bl 0x6f518 | r0 = fcn_0006f518 (r0, r1, r2, r3, r4, r5, r6);
0x0006b82a mov r3, r0 | r3 = r0;
0x0006b82c b 0x6b756 | goto label_8;
| label_41:
0x0006b82e movs r3, 0 | r3 = 0;
0x0006b830 b 0x6b7ba | goto label_9;
| label_43:
0x0006b832 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x0006b834 ldr r2, [sp, 0x10] | r2 = var_10h_2;
0x0006b836 strb r3, [r4, r7] | *((r4 + r7)) = r3;
0x0006b838 str r4, [r2] | *(r2) = r4;
0x0006b83a mov r4, r3 | r4 = r3;
0x0006b83c b 0x6b634 | goto label_4;
| label_23:
0x0006b83e movs r4, 0 | r4 = 0;
0x0006b840 mvn r8, 0x21 | r8 = ~0x21;
0x0006b844 b 0x6b634 | goto label_4;
| label_39:
0x0006b846 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006b848 mov r8, r3 | r8 = r3;
0x0006b84a blx 0x8dac | fcn_00008dac ();
0x0006b84e b 0x6b7d6 | goto label_6;
0x0006b84c invalid |
| label_40:
0x0006b850 mov r1, r5 | r1 = r5;
0x0006b852 mov.w r2, -1 | r2 = -1;
0x0006b856 mov r0, r4 | r0 = r4;
0x0006b858 blx 0x9014 | fcn_00009014 ();
0x0006b85c b 0x6b76a | goto label_10;
| label_42:
0x0006b85e mvn r8, 6 | r8 = ~6;
0x0006b862 b 0x6b714 | goto label_11;
| label_27:
0x0006b864 mov r4, r8 | r4 = r8;
0x0006b866 mov r5, sb | r5 = sb;
0x0006b868 mvn r8, 0xb | r8 = ~0xb;
0x0006b86c b 0x6b7de | goto label_12;
| label_35:
0x0006b86e blx 0x927c | fprintf_chk ()
0x0006b872 nop |
| if (r4 >= 0) {
0x0006b874 bpl 0x6b84c | void (*0x6b84c)() ();
| }
0x0006b876 movs r5, r0 | r5 = r0;
0x0006b878 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006b87a movs r0, r0 |
| if (r0 < r0) {
0x0006b87c bmi 0x6b78c | goto label_13;
| }
0x0006b87e movs r5, r0 | r5 = r0;
0x0006b880 strh r2, [r0, 0x1c] | *((r0 + 0x1c)) = r2;
0x0006b882 movs r3, r0 | r3 = r0;
0x0006b884 strh r0, [r5, 0x2c] | *((r5 + 0x2c)) = r0;
0x0006b886 movs r3, r0 | r3 = r0;
0x0006b888 strh r0, [r2, 0x2a] | *((r2 + 0x2a)) = r0;
0x0006b88a movs r3, r0 | r3 = r0;
0x0006b88c strh r4, [r5, 0x1a] | *((r5 + 0x1a)) = r4;
0x0006b88e movs r3, r0 | r3 = r0;
0x0006b890 strh r2, [r2, 0x2c] | *((r2 + 0x2c)) = r2;
0x0006b892 movs r3, r0 | r3 = r0;
0x0006b894 ldr r7, [pc, 0x3b8] | r7 = *(0x6bc50);
0x0006b896 movs r2, r0 | r2 = r0;
0x0006b898 strh r6, [r2, 0x1a] | *((r2 + 0x1a)) = r6;
0x0006b89a movs r3, r0 | r3 = r0;
0x0006b89c strh r4, [r7, 0x2a] | *((r7 + 0x2a)) = r4;
0x0006b89e movs r3, r0 | r3 = r0;
0x0006b8a0 stcl p0, c0, [r8, -4] | __asm ("stcl p0, c0, [r8, -4]");
0x0006b8a4 strh r0, [r0, 0x1a] | *((r0 + 0x1a)) = r0;
0x0006b8a6 movs r3, r0 | r3 = r0;
0x0006b8a8 strh r6, [r4, 0x2a] | *((r4 + 0x2a)) = r6;
0x0006b8aa movs r3, r0 | r3 = r0;
0x0006b8ac strh r2, [r7, 0x24] | *((r7 + 0x24)) = r2;
0x0006b8ae movs r3, r0 | r3 = r0;
0x0006b8b0 strh r2, [r5, 0x18] | *((r5 + 0x18)) = r2;
0x0006b8b2 movs r3, r0 | r3 = r0;
0x0006b8b4 strh r0, [r2, 0x2a] | *((r2 + 0x2a)) = r0;
0x0006b8b6 movs r3, r0 | r3 = r0;
0x0006b8b8 strh r4, [r6, 0x24] | *((r6 + 0x24)) = r4;
0x0006b8ba movs r3, r0 | r3 = r0;
0x0006b8bc adr r3, 0x30 | r3 = 0x30;
0x0006b8be movs r2, r0 | r2 = r0;
0x0006b8c0 strh r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0006b8c2 movs r3, r0 | r3 = r0;
| if (r2 != 0) {
0x0006b8c4 cbz r2, 0x6b8fe |
0x0006b8c6 movs r1, r0 | r1 = r0;
0x0006b8c8 strh r4, [r2, 0x10] | *((r2 + 0x10)) = r4;
0x0006b8ca movs r3, r0 | r3 = r0;
0x0006b8cc strh r2, [r7, 0x20] | *((r7 + 0x20)) = r2;
0x0006b8ce movs r3, r0 | r3 = r0;
0x0006b8d0 strh r6, [r5, 0x1e] | *((r5 + 0x1e)) = r6;
0x0006b8d2 movs r3, r0 | r3 = r0;
| }
| if (r3 == r0) {
0x0006b8fe beq.w 0x6ba86 | goto label_45;
| }
0x0006b902 cmp.w sl, 0 |
| if (sl == 0) {
0x0006b906 beq.w 0x6ba9c | goto label_46;
| }
0x0006b908 strh r1, [r1, 6] | *((r1 + 6)) = r1;
0x0006b90a ldr r2, [pc, 0x23c] |
0x0006b90c mov sb, r0 | sb = r0;
0x0006b90e str r6, [sp] | *(sp) = r6;
0x0006b910 mov r5, r1 | r5 = r1;
0x0006b912 add r2, pc | r2 = 0xd7460;
0x0006b914 bl 0x6ab64 | r0 = fcn_0006ab64 (r0, r1, r2, r3, r4);
0x0006b918 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0006b91a bge.w 0x6ba2a |
0x0006b91e adds r2, r4, 6 | r2 = r4 + 6;
| if (r2 != r4) {
0x0006b920 bne.w 0x6ba72 | goto label_47;
| }
0x0006b924 ldr r3, [sp, 0x174] | r3 = *(arg_174h);
0x0006b926 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 >= r3) {
0x0006b928 bpl.w 0x6ba72 | goto label_47;
| }
0x0006b92a strh r3, [r4, 4] | *((r4 + 4)) = r3;
0x0006b92c cmp.w r7, -1 |
0x0006b930 it eq |
| if (r7 == -1) {
0x0006b932 cmpeq r8, -1 | __asm ("cmpeq r8, -1");
| }
| if (r7 != -1) {
0x0006b936 bne.w 0x6bab2 | goto label_48;
| }
0x0006b93a cmn.w sb, 0x64 |
| if (sb == 0x64) {
0x0006b93e beq.w 0x6bacc | goto label_49;
| }
0x0006b942 mov r0, sb | r0 = sb;
0x0006b944 mov.w r2, 0x280000 | r2 = 0x280000;
0x0006b948 mov r1, r5 | r1 = r5;
0x0006b94a blx 0x8e0c | r0 = fcn_00008e0c ();
0x0006b94e subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0006b952 blt.w 0x6babe | goto label_50;
| }
0x0006b956 ldr r3, [pc, 0x1f4] |
0x0006b958 add r0, sp, 0x128 | r0 += arg_128h;
0x0006b95a movs r2, 1 | r2 = 1;
0x0006b95c str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h_2]");
0x0006b960 str r0, [sp, 0x14] | *((sp + 0x14)) = r0;
0x0006b962 add r3, pc | r3 = 0xd74b4;
0x0006b964 str r3, [sp] | *(sp) = r3;
0x0006b966 movs r3, 0x1a | r3 = 0x1a;
0x0006b968 mov r1, r3 | r1 = r3;
0x0006b96a blx 0x9110 | fcn_00009110 ();
0x0006b96e add r3, sp, 0x28 | r3 += var_28h_2;
0x0006b970 ldr r1, [sp, 0x14] | r1 = *((sp + 0x14));
0x0006b972 mov r0, r3 | r0 = r3;
0x0006b974 str r3, [sp, 0x14] | *((sp + 0x14)) = r3;
0x0006b976 bl 0x79a88 | fcn_00079a88 (r0, r1);
0x0006b978 invalid |
0x0006b97a cmp r0, 0 |
| if (r0 < 0) {
0x0006b97c blt.w 0x6bade | goto label_51;
| }
0x0006b980 movs r1, 1 | r1 = 1;
0x0006b982 movs r2, 0 | r2 = 0;
0x0006b984 movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x0006b988 movs r0, 1 | r0 = 1;
0x0006b98a blx 0x8ea8 | r0 = fcn_00008ea8 ();
0x0006b98e subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x0006b990 blt.w 0x6bae6 | goto label_52;
| }
0x0006b994 ldr r1, [sp, 0x10] | r1 = *((sp + 0x10));
| if (r1 != 0) {
0x0006b996 cbz r1, 0x6b9c2 |
0x0006b998 add r2, sp, 0xa8 | r2 += var_a8h;
0x0006b99a str r3, [sp, 0x10] | *((sp + 0x10)) = r3;
0x0006b99c mov r0, r2 | r0 = r2;
0x0006b99e str r2, [sp, 0x1c] | *((sp + 0x1c)) = r2;
0x0006b9a0 bl 0x79a88 | r0 = fcn_00079a88 (r0, r1);
0x0006b9a4 cmp r0, 0 |
0x0006b9a6 ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006b9a8 str r0, [sp, 0x18] | var_18h = r0;
| if (r0 < 0) {
0x0006b9aa blt.w 0x6bb04 | goto label_53;
| }
0x0006b9ae ldr r2, [sp, 0x1c] | r2 = *((sp + 0x1c));
0x0006b9b0 mov r1, r2 | r1 = r2;
0x0006b9b2 mov r2, r0 | r2 = r0;
0x0006b9b4 mov r0, r3 | r0 = r3;
0x0006b9b6 blx 0x9140 | r0 = fcn_00009140 ();
0x0006b9ba cmp r0, 0 |
0x0006b9bc ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
| if (r0 < 0) {
0x0006b9be blt.w 0x6bb04 | goto label_53;
| }
| }
0x0006b9c2 ldr r2, [sp, 0x14] | r2 = *((sp + 0x14));
0x0006b9c4 ldrh r2, [r2] | r2 = *(r2);
0x0006b9c6 cmp r2, 1 |
| if (r2 != 1) {
0x0006b9c8 bne.w 0x6bb24 | goto label_54;
| }
0x0006b9cc ldr r2, [sp, 0x14] | r2 = *((sp + 0x14));
0x0006b9ce str r3, [sp, 0x10] | *((sp + 0x10)) = r3;
0x0006b9d0 ldrb r2, [r2, 2] | r2 = *((r2 + 2));
0x0006b9d2 cmp r2, 0 |
| if (r2 != 0) {
0x0006b9d4 bne.w 0x6baf4 | goto label_55;
| }
0x0006b9d8 movs r1, 0x6b | r1 = 0x6b;
0x0006b9da add.w r0, sp, 0x2b | r0 += var_2bh;
0x0006b9de blx 0x92c8 | fcn_000092c8 ();
0x0006b9e2 ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006b9e4 adds r2, r0, 3 | r2 = r0 + 3;
| label_15:
0x0006b9e6 mov r0, r3 | r0 = r3;
0x0006b9e8 ldr r1, [sp, 0x14] | r1 = *((sp + 0x14));
0x0006b9ea str r3, [sp, 0x10] | *((sp + 0x10)) = r3;
0x0006b9ec blx 0x8a20 | r0 = fcn_00008a20 ();
0x0006b9f0 cmp r0, 0 |
0x0006b9f2 ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
| if (r0 < 0) {
0x0006b9f4 blt.w 0x6bb08 | goto label_56;
| }
0x0006b9f8 mov r0, r3 | r0 = r3;
0x0006b9fa movs r1, 1 | r1 = 1;
0x0006b9fc str r3, [sp, 0x10] | *((sp + 0x10)) = r3;
0x0006b9fe blx 0x9134 | r0 = fcn_00009134 ();
0x0006ba02 cmp r0, 0 |
0x0006ba04 ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
| if (r0 < 0) {
0x0006ba06 blt.w 0x6bb18 | goto label_57;
| }
0x0006ba0a ldr r1, [pc, 0x144] |
0x0006ba0c mov r0, r3 | r0 = r3;
0x0006ba0e str r3, [sp, 0x10] | *((sp + 0x10)) = r3;
0x0006ba10 add r1, pc | r1 = 0xd7566;
0x0006ba12 blx 0x914c | fcn_0000914c ();
0x0006ba16 str r0, [r6] | *(r6) = r0;
0x0006ba18 cmp r0, 0 |
| if (r0 == 0) {
0x0006ba1a beq 0x6bb18 | goto label_57;
| }
0x0006ba1c mov.w r0, -1 | r0 = -1;
0x0006ba20 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006ba24 mov r0, sb | r0 = sb;
0x0006ba26 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
| }
0x0006ba2a movs r1, 2 | r1 = 2;
0x0006ba2c ldr r0, [r6] | r0 = *(r6);
0x0006ba2e blx 0x9198 | mount ();
0x0006ba32 ldr r4, [sp, 0x174] | r4 = *(arg_174h);
0x0006ba34 mov r2, r8 | r2 = r8;
0x0006ba36 str.w fp, [sp, 0xc] | __asm ("str.w fp, [sp, 0xc]");
0x0006ba3a mov r3, r7 | r3 = r7;
0x0006ba3c str.w sl, [sp, 8] | __asm ("str.w sl, [var_8h_2]");
0x0006ba40 mov r1, r5 | r1 = r5;
0x0006ba42 ldr r0, [r6] | r0 = *(r6);
0x0006ba44 str r4, [sp, 4] | var_4h_2 = r4;
0x0006ba46 ldr r4, [sp, 0x170] | r4 = *(arg_170h);
0x0006ba48 str r4, [sp] | *(sp) = r4;
0x0006ba4a bl 0x6b4cc | r0 = fcn_0006b4cc (r0, r1, r2, r3, r4, r5, r6);
0x0006ba4e mov r4, r0 | r4 = r0;
| do {
0x0006ba50 ldr r0, [r6] | r0 = *(r6);
0x0006ba52 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0006ba56 ldr r2, [pc, 0xfc] |
0x0006ba58 ldr r3, [pc, 0xe8] | r3 = *(0x6bb44);
0x0006ba5a add r2, pc | r2 = 0xd75b4;
0x0006ba5c ldr r3, [r2, r3] | r3 = *(0xd75b4);
0x0006ba5e ldr r2, [r3] | r2 = *(0xd75b4);
0x0006ba60 ldr r3, [sp, 0x144] | r3 = *(arg_8ch);
0x0006ba62 eors r2, r3 | r2 ^= r3;
0x0006ba64 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006ba68 bne 0x6bb3a | goto label_58;
| }
0x0006ba6a mov r0, r4 | r0 = r4;
0x0006ba6c add sp, 0x14c |
0x0006ba6e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_47:
0x0006ba72 mov.w r3, -1 | r3 = -1;
0x0006ba76 mov sb, r3 | sb = r3;
| label_14:
0x0006ba78 mov r0, r3 | r0 = r3;
0x0006ba7a bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006ba7e mov r0, sb | r0 = sb;
0x0006ba80 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006ba84 b 0x6ba50 |
| } while (1);
| label_45:
0x0006ba86 ldr r1, [pc, 0xd0] |
0x0006ba88 movw r2, 0x2b6 | r2 = 0x2b6;
0x0006ba8a movs r2, 0xb6 | r2 = 0xb6;
0x0006ba8c ldr r3, [pc, 0xcc] |
0x0006ba8e ldr r0, [pc, 0xd0] |
0x0006ba90 add r1, pc | r1 = 0xd75ee;
0x0006ba92 add r3, pc | r3 = 0xd75f2;
0x0006ba94 adds r1, 7 | r1 += 7;
0x0006ba96 add r0, pc | r0 = 0xd75fc;
0x0006ba98 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_46:
0x0006ba9c ldr r1, [pc, 0xc4] |
0x0006ba9e movw r2, 0x2b7 | r2 = 0x2b7;
0x0006baa2 ldr r3, [pc, 0xc4] |
0x0006baa4 ldr r0, [pc, 0xc4] |
0x0006baa6 add r1, pc | r1 = 0xd760e;
0x0006baa8 add r3, pc | r3 = 0xd7616;
0x0006baaa adds r1, 7 | r1 += 7;
0x0006baac add r0, pc | r0 = 0xd761c;
0x0006baae bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_48:
0x0006bab2 mov.w r3, -1 | r3 = -1;
0x0006bab6 mvn r4, 0x1c | r4 = ~0x1c;
0x0006baba mov sb, r3 | sb = r3;
0x0006babc b 0x6ba78 | goto label_14;
| label_50:
0x0006babe blx 0x9628 | r0 = fcn_00009628 ();
0x0006bac2 ldr r4, [r0] | r4 = *(r0);
0x0006bac4 mov.w r3, -1 | r3 = -1;
0x0006bac8 rsbs r4, r4, 0 | r4 -= ;
0x0006baca b 0x6ba78 | goto label_14;
| label_49:
0x0006bacc add r3, sp, 0x28 | r3 += var_28h_2;
0x0006bace mov r1, r5 | r1 = r5;
0x0006bad0 mov r0, r3 | r0 = r3;
0x0006bad2 str r3, [sp, 0x14] | *((sp + 0x14)) = r3;
0x0006bad4 mov.w sb, -1 | sb = -1;
0x0006bad8 bl 0x79a88 | fcn_00079a88 (r0, r1);
0x0006bada invalid |
| label_51:
0x0006bade mov r4, r0 | r4 = r0;
0x0006bae0 mov.w r3, -1 | r3 = -1;
0x0006bae4 b 0x6ba78 | goto label_14;
| label_52:
0x0006bae6 str r3, [sp, 0x10] | *((sp + 0x10)) = r3;
0x0006bae8 blx 0x9628 | fcn_00009628 ();
0x0006baea ldc p8, c6, [lr, 0x10] | __asm ("ldc p8, c6, [lr, 0x10]");
0x0006baee ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006baf0 rsbs r4, r4, 0 | r4 -= ;
0x0006baf2 b 0x6ba78 | goto label_14;
| label_55:
0x0006baf4 movs r1, 0x6c | r1 = 0x6c;
0x0006baf6 add.w r0, sp, 0x2a | r0 += var_2ah;
0x0006bafa blx 0x92c8 | fcn_000092c8 ();
0x0006bafe ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006bb00 adds r2, r0, 3 | r2 = r0 + 3;
0x0006bb02 b 0x6b9e6 | goto label_15;
| do {
| label_53:
0x0006bb04 ldr r4, [sp, 0x18] | r4 = var_18h;
0x0006bb06 b 0x6ba78 | goto label_14;
| label_56:
0x0006bb08 blx 0x9628 | r0 = fcn_00009628 ();
0x0006bb0c ldr r2, [r0] | r2 = *(r0);
0x0006bb0e ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006bb10 cmp r2, 0x58 |
0x0006bb12 it ne |
| if (r2 != 0x58) {
0x0006bb14 rsbne r4, r2, 0 | __asm ("rsbne r4, r2, 0");
| }
0x0006bb16 b 0x6ba78 | goto label_14;
| label_57:
0x0006bb18 blx 0x9628 | r0 = fcn_00009628 ();
0x0006bb1c ldr r4, [r0] | r4 = *(r0);
0x0006bb1e ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006bb20 rsbs r4, r4, 0 | r4 -= ;
0x0006bb22 b 0x6ba78 | goto label_14;
| label_54:
0x0006bb24 ldr r1, [pc, 0x48] |
0x0006bb26 movw r2, 0x2ef | r2 = 0x2ef;
0x0006bb2a ldr r3, [pc, 0x48] |
0x0006bb2c ldr r0, [pc, 0x48] |
0x0006bb2e add r1, pc | r1 = 0xd76a2;
0x0006bb30 add r3, pc | r3 = 0xd76aa;
0x0006bb32 adds r1, 7 | r1 += 7;
0x0006bb34 add r0, pc | r0 = 0xd76b0;
0x0006bb36 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_58:
0x0006bb3a blx 0x927c | fprintf_chk ()
0x0006bb3e nop |
0x0006bb40 bne 0x6bb04 |
| } while (r1 != 7);
0x0006bb42 movs r5, r0 | r5 = r0;
0x0006bb44 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006bb46 movs r0, r0 |
0x0006bb48 lsls r6, r6, 0x14 | r6 <<= 0x14;
0x0006bb4a movs r3, r0 | r3 = r0;
0x0006bb4c ldrb r6, [r6, 0x1e] | r6 = *((r6 + 0x1e));
0x0006bb4e movs r3, r0 | r3 = r0;
0x0006bb50 ldrd r0, r0, [ip, -0x4]! | __asm ("ldrd r0, r0, [ip, -0x4]!");
| if (r3 == r0) {
0x0006bb54 beq 0x6bc2c | goto label_59;
| }
0x0006bb56 movs r5, r0 | r5 = r0;
0x0006bb58 ldrb r0, [r3, 0x1e] | r0 = *((r3 + 0x1e));
0x0006bb5a movs r3, r0 | r3 = r0;
0x0006bb5c strh r6, [r3, 0xc] | *((r3 + 0xc)) = r6;
0x0006bb5e movs r3, r0 | r3 = r0;
0x0006bb60 subs r6, r2, r4 | r6 = r2 - r4;
0x0006bb62 movs r2, r0 | r2 = r0;
0x0006bb64 ldrb r2, [r0, 0x1e] | r2 = *((r0 + 0x1e));
0x0006bb66 movs r3, r0 | r3 = r0;
0x0006bb68 strh r0, [r1, 0xc] | *((r1 + 0xc)) = r0;
0x0006bb6a movs r3, r0 | r3 = r0;
0x0006bb6c strh r4, [r7, 6] | *((r7 + 6)) = r4;
0x0006bb6e movs r3, r0 | r3 = r0;
0x0006bb70 ldrb r2, [r7, 0x1b] | r2 = *((r7 + 0x1b));
0x0006bb72 movs r3, r0 | r3 = r0;
0x0006bb74 strh r0, [r0, 8] | *((r0 + 8)) = r0;
0x0006bb76 movs r3, r0 | r3 = r0;
0x0006bb78 adr r7, 0x320 | r7 = 0x320;
0x0006bb7a movs r1, r0 | r1 = r0;
| label_17:
0x0006bc12 movs r1, 1 | r1 = 1;
0x0006bc14 mov r0, r4 | r0 = r4;
0x0006bc16 bl 0x79c8c | r0 = fcn_00079c8c ();
0x0006bc1a cmp r0, 0 |
| if (r0 >= 0) {
0x0006bc1c blt 0x6bc24 |
| if (r0 != 0) {
0x0006bc1e bne 0x6bc8c | goto label_60;
| }
| label_16:
0x0006bc20 mvn r0, 0x13 | r0 = ~0x13;
| }
| label_18:
0x0006bc24 cmp r5, 0 |
0x0006bc26 it eq |
0x0006bc28 moveq r5, r0 | r5 = r0;
| while (r0 == 0) {
0x0006bc2a ldr r4, [r8, 4]! | r4 = *((r8 += 4));
| label_59:
0x0006bc2c ldr r7, [pc, 0x10] | r7 = *(0x6bc40);
| if (r4 == 0) {
0x0006bc2e cbz r4, 0x6bc50 | goto label_61;
| }
0x0006bc30 mov r0, r4 | r0 = r4;
0x0006bc32 blx 0x8de8 | r0 = fcn_00008de8 ();
0x0006bc36 mov r4, r0 | r4 = r0;
0x0006bc38 cmp r0, 0 |
0x0006bc3a beq 0x6bc2a |
| }
0x0006bc3c ldrb r3, [r0] | r3 = *(r0);
0x0006bc3e cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x0006bc40 bne 0x6bc20 | goto label_16;
| }
0x0006bc42 bl 0x75b1c | r0 = fcn_00075b1c (r0);
0x0006bc46 cmp r0, 0 |
| if (r0 != 0) {
0x0006bc48 bne 0x6bc12 | goto label_17;
| }
0x0006bc4a mov.w r0, -1 | r0 = -1;
0x0006bc4e b 0x6bc24 | goto label_18;
| label_61:
0x0006bc50 movs r1, 1 | r1 = 1;
0x0006bc52 mov r0, r7 | r0 = r7;
0x0006bc54 bl 0x79c8c | r0 = fcn_00079c8c ();
0x0006bc58 cmp r0, 0 |
| if (r0 == 0) {
0x0006bc5a beq 0x6bc80 | goto label_62;
| }
0x0006bc5c itt ge |
| if (r0 < 0) {
0x0006bc5e movge r5, r4 | r5 = r4;
| }
| if (r0 < 0) {
0x0006bc60 strge r7, [r6] | *(r6) = r7;
| }
0x0006bc62 blt 0x6bc84 |
| while (1) {
| label_19:
0x0006bc64 ldr r2, [pc, 0x58] |
0x0006bc66 ldr r3, [pc, 0x48] | r3 = *(0x6bcb2);
0x0006bc68 add r2, pc | r2 = 0xd792c;
0x0006bc6a ldr r3, [r2, r3] | r3 = *(0xd792c);
0x0006bc6c ldr r2, [r3] | r2 = *(0xd792c);
0x0006bc6e ldr r3, [sp, 0x14] | r3 = *((sp + 0x14));
0x0006bc70 eors r2, r3 | r2 ^= r3;
0x0006bc72 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006bc76 bne 0x6bca8 | goto label_63;
| }
0x0006bc78 mov r0, r5 | r0 = r5;
0x0006bc7a add sp, 0x18 |
0x0006bc7c pop.w {r4, r5, r6, r7, r8, pc} |
| label_62:
0x0006bc80 mvn r0, 0x13 | r0 = ~0x13;
0x0006bc84 cmp r5, 0 |
0x0006bc86 it eq |
| if (r5 != 0) {
0x0006bc88 moveq r5, r0 | r5 = r0;
| }
0x0006bc8a b 0x6bc64 |
| }
| label_60:
0x0006bc8c movs r5, 0 | r5 = 0;
0x0006bc8e str r4, [r6] | *(r6) = r4;
0x0006bc90 b 0x6bc64 | goto label_19;
| label_63:
0x0006bca8 blx 0x927c | fprintf_chk ()
0x0006bcac ldm r6, {r1, r5, r6, r7} | r1 = *(r6);
| r5 = *((r6 + 4));
| r6 = *((r6 + 8));
| r7 = *((r6 + 12));
0x0006bcae movs r5, r0 | r5 = r0;
0x0006bcb0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006bcb2 movs r0, r0 |
0x0006bcb4 strh r4, [r0, 0xc] | *((r0 + 0xc)) = r4;
0x0006bcb6 movs r3, r0 | r3 = r0;
0x0006bcb8 strh r4, [r4, 0xc] | *((r4 + 0xc)) = r4;
0x0006bcba movs r3, r0 | r3 = r0;
0x0006bcbc strh r4, [r4, 0xc] | *((r4 + 0xc)) = r4;
0x0006bcbe movs r3, r0 | r3 = r0;
0x0006bcc0 ldm r6, {r2, r3, r4, r6} | r2 = *(r6);
| r3 = *((r6 + 4));
| r4 = *((r6 + 8));
| r6 = *((r6 + 12));
0x0006bcc2 movs r5, r0 | r5 = r0;
0x0006bcc4 strh r0, [r6, 6] | *((r6 + 6)) = r0;
0x0006bcc6 movs r3, r0 | r3 = r0;
0x0006bcc8 strh r2, [r2, 0x1e] | *((r2 + 0x1e)) = r2;
0x0006bcca movs r3, r0 | r3 = r0;
0x0006bccc strh r2, [r2, 0x3c] | *((r2 + 0x3c)) = r2;
0x0006bcce movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6bcd0 */
| #include <stdint.h>
|
; (fcn) fcn.0006bcd0 () | void fcn_0006bcd0 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_20h_2;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_40h;
| int16_t var_94h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006bcd0 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x0006bcd4 ands r3, r3, 0x80 | r3 &= 0x80;
0x0006bcd8 ldr r5, [pc, 0x138] |
0x0006bcda sub sp, 0x98 |
0x0006bcdc mov.w r6, 0 | r6 = 0;
0x0006bce0 ldr r4, [pc, 0x134] | r4 = *(0x6be18);
0x0006bce2 add r5, pc | r5 = 0xd7afa;
0x0006bce4 ldr r4, [r5, r4] |
0x0006bce6 ldr r4, [r4] | r4 = *(0xd7afa);
0x0006bce8 str r4, [sp, 0x94] | var_94h = r4;
0x0006bcea mov.w r4, 0 | r4 = 0;
0x0006bcec lsls r0, r0, 0x10 | r0 <<= 0x10;
0x0006bcee strd r6, r6, [sp, 0x20] | __asm ("strd r6, r6, [sp, 0x20]");
| if (r0 == r0) {
0x0006bcf2 beq.w 0x6be00 | goto label_5;
| }
0x0006bcf6 mov r5, r1 | r5 = r1;
0x0006bcf8 add r1, sp, 0x20 | r1 += var_20h_2;
0x0006bcfa mov r4, r0 | r4 = r0;
0x0006bcfc mov r7, r2 | r7 = r2;
0x0006bcfe add.w r8, sp, 0x28 | r8 += var_28h;
0x0006bd02 bl 0x6a120 | fcn_0006a120 (r0, r1, r2);
0x0006bd06 add r1, sp, 0x24 | r1 += var_24h;
0x0006bd08 mov r0, r5 | r0 = r5;
0x0006bd0a bl 0x6a120 | fcn_0006a120 (r0, r1, r2);
0x0006bd0e mov r0, r4 | r0 = r4;
0x0006bd10 mov r1, r8 | r1 = r8;
0x0006bd12 blx 0x9020 | r0 = fcn_00009020 ();
0x0006bd16 cmp r0, 0 |
| if (r0 == 0) {
0x0006bd18 beq 0x6bdb8 | goto label_6;
| }
0x0006bd1a mov r1, r8 | r1 = r8;
0x0006bd1c mov r0, r5 | r0 = r5;
0x0006bd1e movs r4, 0 | r4 = 0;
0x0006bd20 blx 0x9020 | r0 = fcn_00009020 ();
0x0006bd24 cmp r0, 0 |
| if (r0 == 0) {
0x0006bd26 beq 0x6bdce | goto label_7;
| }
| do {
| label_0:
0x0006bd28 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0006bd2c cmp r0, 3 |
| if (r0 <= 3) {
0x0006bd2e ble 0x6be0a | goto label_8;
| }
0x0006bd30 ldr r5, [sp, 0x20] | r5 = var_20h_2;
0x0006bd32 cmp r5, 0 |
| if (r5 == 0) {
0x0006bd34 beq 0x6bdfa | goto label_9;
| }
| label_3:
0x0006bd36 mov r8, r6 | r8 = r6;
0x0006bd38 cmp r6, 0 |
| if (r6 == 0) {
0x0006bd3a beq 0x6bdd8 | goto label_10;
| }
0x0006bd3c movs r0, 0xd | r0 = 0xd;
0x0006bd3e bl 0x70340 | fcn_00070340 (r0);
0x0006bd42 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006bd44 cmp r3, 0 |
| if (r3 == 0) {
0x0006bd46 beq 0x6bdea | goto label_11;
| }
| label_1:
0x0006bd48 mov r2, r4 | r2 = r4;
0x0006bd4a cmp r4, 0 |
| if (r4 == 0) {
0x0006bd4c beq 0x6bdf4 | goto label_12;
| }
| label_2:
0x0006bd4e strd r2, r7, [sp, 0x18] | __asm ("strd r2, r7, [sp, 0x18]");
0x0006bd52 ldr r1, [pc, 0xc8] |
0x0006bd54 ldr r2, [pc, 0xc8] |
0x0006bd56 strd r0, r3, [sp, 0x10] | __asm ("strd r0, r3, [sp, 0x10]");
0x0006bd5a movw r3, 0x2f7 | r3 = 0x2f7;
0x0006bd5e add r1, pc |
0x0006bd60 strd r5, r8, [sp, 8] | __asm ("strd r5, r8, [sp, 8]");
0x0006bd64 add r2, pc | r2 = 0xd7b88;
0x0006bd66 movs r0, 4 | r0 = 4;
0x0006bd68 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x0006bd6c movs r1, 0x43 | r1 = 0x43;
0x0006bd6e ldr r2, [pc, 0xb4] |
0x0006bd70 movt r1, 0x4000 | r1 = 0x400d7b80;
0x0006bd74 add r2, pc | r2 = 0xd7b9e;
0x0006bd76 adds r2, 7 | r2 += 7;
0x0006bd78 bl 0x71448 | r0 = fcn_00071448 ();
0x0006bd7c subs r5, r0, 0 | r5 = r0 - 0;
0x0006bd7e it ge |
| if (r5 < r0) {
0x0006bd80 mvnge r5, 0x55 | r5 = ~0x55;
| }
| label_4:
0x0006bd84 mov r0, r4 | r0 = r4;
0x0006bd86 blx 0x8dac | fcn_00008dac ();
0x0006bd8a mov r0, r6 | r0 = r6;
0x0006bd8c blx 0x8dac | fcn_00008dac ();
0x0006bd90 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0006bd92 blx 0x8dac | fcn_00008dac ();
0x0006bd94 invalid |
0x0006bd98 blx 0x8dac | fcn_00008dac ();
0x0006bd9c ldr r2, [pc, 0x88] |
0x0006bd9e ldr r3, [pc, 0x78] | r3 = *(0x6be1a);
0x0006bda0 add r2, pc | r2 = 0xd7bcc;
0x0006bda2 ldr r3, [r2, r3] | r3 = *(0xd7bcc);
0x0006bda4 ldr r2, [r3] | r2 = *(0xd7bcc);
0x0006bda6 ldr r3, [sp, 0x94] | r3 = var_94h;
0x0006bda8 eors r2, r3 | r2 ^= r3;
0x0006bdaa mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006bdae bne 0x6be10 | goto label_13;
| }
0x0006bdb0 mov r0, r5 | r0 = r5;
0x0006bdb2 add sp, 0x98 |
0x0006bdb4 pop.w {r4, r5, r6, r7, r8, pc} |
| label_6:
0x0006bdb8 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0006bdba movs r4, 0 | r4 = 0;
0x0006bdbc bl 0x7e034 | fcn_0007e034 (r0, r1, r2, r3, r4, r5);
0x0006bdc0 mov r1, r8 | r1 = r8;
0x0006bdc2 mov r6, r0 | r6 = r0;
0x0006bdc4 mov r0, r5 | r0 = r5;
0x0006bdc6 blx 0x9020 | r0 = fcn_00009020 ();
0x0006bdca cmp r0, 0 |
0x0006bdcc bne 0x6bd28 |
| } while (r0 != 0);
| label_7:
0x0006bdce ldr r0, [sp, 0x40] | r0 = var_40h;
0x0006bdd0 bl 0x7e034 | r0 = fcn_0007e034 (r0, r1, r2, r3, r4, r5);
0x0006bdd4 mov r4, r0 | r4 = r0;
0x0006bdd6 b 0x6bd28 | goto label_0;
| label_10:
0x0006bdd8 movs r0, 0xd | r0 = 0xd;
0x0006bdda ldr.w r8, [pc, 0x50] |
0x0006bdde bl 0x70340 | fcn_00070340 (r0);
0x0006bde2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006bde4 add r8, pc | r8 = 0xd7c16;
0x0006bde6 cmp r3, 0 |
| if (r3 != 0) {
0x0006bde8 bne 0x6bd48 | goto label_1;
| }
| label_11:
0x0006bdea ldr r3, [pc, 0x44] |
0x0006bdec mov r2, r4 | r2 = r4;
0x0006bdee add r3, pc | r3 = 0xd7c24;
0x0006bdf0 cmp r4, 0 |
| if (r4 != 0) {
0x0006bdf2 bne 0x6bd4e | goto label_2;
| }
| label_12:
0x0006bdf4 ldr r2, [pc, 0x3c] |
0x0006bdf6 add r2, pc | r2 = 0xd7c2e;
0x0006bdf8 b 0x6bd4e | goto label_2;
| label_9:
0x0006bdfa ldr r5, [pc, 0x3c] |
0x0006bdfc add r5, pc | r5 = 0xd7c3a;
0x0006bdfe b 0x6bd36 | goto label_3;
| label_5:
0x0006be00 mov r4, r3 | r4 = r3;
0x0006be02 mvn r5, 0x42 | r5 = ~0x42;
0x0006be04 lsls r2, r0, 0x15 | r2 = r0 << 0x15;
0x0006be06 mov r6, r3 | r6 = r3;
0x0006be08 b 0x6bd84 | goto label_4;
| label_8:
0x0006be0a mvn r5, 0x42 | r5 = ~0x42;
0x0006be0e b 0x6bd84 | goto label_4;
| label_13:
0x0006be10 blx 0x927c | fprintf_chk ()
0x0006be14 ldm r5, {r1, r5, r6, r7} | r1 = *(r5);
| r5 = *((r5 + 4));
| r6 = *((r5 + 8));
| r7 = *((r5 + 12));
0x0006be16 movs r5, r0 | r5 = r0;
0x0006be18 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006be1a movs r0, r0 |
0x0006be1c strh r6, [r2, 2] | *((r2 + 2)) = r6;
0x0006be1e movs r3, r0 | r3 = r0;
0x0006be20 strh r0, [r7, 0x1c] | *((r7 + 0x1c)) = r0;
0x0006be22 movs r3, r0 | r3 = r0;
0x0006be24 strh r0, [r3] | *(r3) = r0;
0x0006be26 movs r3, r0 | r3 = r0;
0x0006be28 ldm r5, {r2, r5} | r2 = *(r5);
| r5 = *((r5 + 4));
0x0006be2a movs r5, r0 | r5 = r0;
0x0006be2c ldr r4, [r0, 0x40] | r4 = *((r0 + 0x40));
0x0006be2e movs r1, r0 | r1 = r0;
0x0006be30 ldr r2, [r7, 0x3c] | r2 = *((r7 + 0x3c));
0x0006be32 movs r1, r0 | r1 = r0;
0x0006be34 ldr r2, [r6, 0x3c] | r2 = *((r6 + 0x3c));
0x0006be36 movs r1, r0 | r1 = r0;
0x0006be38 ldr r4, [r5, 0x3c] | r4 = *((r5 + 0x3c));
0x0006be3a movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6bffc */
| #include <stdint.h>
|
; (fcn) fcn.0006bffc () | void fcn_0006bffc (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0006bffc blmi 0x6fe868 | __asm ("blmi aav.0x0005cac0");
0x0006c000 push {r4, r5, r6, lr} |
0x0006c002 sub sp, 8 |
0x0006c004 add r2, pc | r2 += pc;
0x0006c006 mov r5, r1 | r5 = r1;
0x0006c008 movs r6, 0 | r6 = 0;
0x0006c00a mov r1, sp | r1 = sp;
0x0006c00c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006c00e ldr r3, [r3] | r3 = *(r3);
0x0006c010 str r3, [sp, 4] | var_4h = r3;
0x0006c012 mov.w r3, 0 | r3 = 0;
0x0006c016 str r6, [sp] | *(sp) = r6;
0x0006c018 bl 0x6bff0 | r0 = fcn_0006bff0 (r0, r1);
0x0006c01c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0006c01e blt 0x6c032 | goto label_0;
| }
0x0006c020 ldr r0, [sp] | r0 = *(sp);
0x0006c022 blx 0x9634 | r0 = fcn_00009634 ();
| if (r0 == 0) {
0x0006c026 cbz r0, 0x6c052 | goto label_1;
| }
0x0006c028 blx 0x9200 | r0 = fcn_00009200 ();
| if (r0 == 0) {
0x0006c02c cbz r0, 0x6c05c | goto label_2;
| }
0x0006c02e mov r4, r6 | r4 = r6;
0x0006c030 str r0, [r5] | *(r5) = r0;
| do {
| label_0:
0x0006c032 ldr r0, [sp] | r0 = *(sp);
0x0006c034 blx 0x8dac | fcn_00008dac ();
0x0006c038 ldr r2, [pc, 0x30] |
0x0006c03a ldr r3, [pc, 0x2c] | r3 = *(0x6c06a);
0x0006c03c add r2, pc | r2 = 0xd80ac;
0x0006c03e ldr r3, [r2, r3] | r3 = *(0xd80ac);
0x0006c040 ldr r2, [r3] | r2 = *(0xd80ac);
0x0006c042 ldr r3, [sp, 4] | r3 = var_4h;
0x0006c044 eors r2, r3 | r2 ^= r3;
0x0006c046 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c04a bne 0x6c058 | goto label_3;
| }
0x0006c04c mov r0, r4 | r0 = r4;
0x0006c04e add sp, 8 |
0x0006c050 pop {r4, r5, r6, pc} |
| label_1:
0x0006c052 mvn r4, 1 | r4 = ~1;
0x0006c056 b 0x6c032 |
| } while (1);
| label_3:
0x0006c058 blx 0x927c | fprintf_chk ()
| label_2:
0x0006c05c mvn r4, 0xb | r4 = ~0xb;
0x0006c060 b 0x6c032 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6c0a4 */
| #include <stdint.h>
|
; (fcn) fcn.0006c0a4 () | void fcn_0006c0a4 (int16_t arg1, int16_t arg2) {
| int16_t var_8h_2;
| int16_t var_74h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int8_t var_1h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x0006c0a4 push {r4, r5, lr} |
0x0006c0a6 sub sp, 0x2c |
0x0006c0a8 str r0, [sp, 4] | var_4h = r0;
0x0006c0aa mov r5, r1 | r5 = r1;
0x0006c0ac movs r3, 0x1a | r3 = 0x1a;
0x0006c0ae movs r2, 1 | r2 = 1;
0x0006c0b0 ldr r4, [pc, 0x68] |
0x0006c0b2 ldr r0, [pc, 0x6c] |
0x0006c0b4 ldr r1, [pc, 0x6c] | r1 = *(0x6c124);
0x0006c0b6 add r4, pc | r4 = 0xd81d6;
0x0006c0b8 add r0, pc | r0 = 0xd81de;
0x0006c0ba str r4, [sp] | *(sp) = r4;
0x0006c0bc ldr r1, [r0, r1] |
0x0006c0be add r4, sp, 8 | r4 += var_8h;
0x0006c0c0 mov r0, r4 | r0 = r4;
0x0006c0c2 ldr r1, [r1] | r1 = *(0xd81de);
0x0006c0c4 str r1, [sp, 0x24] | var_24h = r1;
0x0006c0c6 mov.w r1, 0 | r1 = 0;
0x0006c0ca mov r1, r3 | r1 = r3;
0x0006c0cc blx 0x9110 | fcn_00009110 ();
0x0006c0d0 mov r1, r5 | r1 = r5;
0x0006c0d2 mov r0, r4 | r0 = r4;
0x0006c0d4 blx 0x8d20 | r0 = fcn_00008d20 ();
0x0006c0d8 cmp r0, 0 |
0x0006c0da it ge |
| if (r0 < 0) {
0x0006c0dc movge r0, 0 | r0 = 0;
| }
0x0006c0de blt 0x6c0f8 |
| while (r0 != 2) {
| label_0:
0x0006c0e0 ldr r2, [pc, 0x44] |
0x0006c0e2 ldr r3, [pc, 0x40] | r3 = *(0x6c126);
0x0006c0e4 add r2, pc | r2 = 0xd8210;
0x0006c0e6 ldr r3, [r2, r3] | r3 = *(0xd8210);
0x0006c0e8 ldr r2, [r3] | r2 = *(0xd8210);
0x0006c0ea ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006c0ec eors r2, r3 | r2 ^= r3;
0x0006c0ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c0f2 bne 0x6c118 | goto label_1;
| }
0x0006c0f4 add sp, 0x2c |
0x0006c0f6 pop {r4, r5, pc} |
0x0006c0f8 blx 0x9628 | r0 = fcn_00009628 ();
0x0006c0fc ldr r0, [r0] | r0 = *(r0);
0x0006c0fe cmp r0, 2 |
0x0006c100 it ne |
| if (r0 != 2) {
0x0006c102 rsbne r0, r0, 0 | __asm ("rsbne r0, r0, 0");
| }
0x0006c104 bne 0x6c0e0 |
| }
0x0006c106 bl 0x7a398 | r0 = fcn_0007a398 ();
0x0006c10a cmp r0, 0 |
0x0006c10c ite eq |
| if (r0 != 0) {
0x0006c10e mvneq r0, 0x25 | r0 = ~0x25;
| }
| if (r0 != 0) {
0x0006c112 mvn r0, 1 | r0 = ~1;
| }
0x0006c114 movs r1, r0 | r1 = r0;
0x0006c116 b 0x6c0e0 | goto label_0;
| label_1:
0x0006c118 blx 0x927c | fprintf_chk ()
0x0006c11c ldrb r2, [r4, 1] | r2 = var_1h;
0x0006c11e movs r3, r0 | r3 = r0;
0x0006c120 ldm r2, {r2, r3} | r2 = *(r2);
| r3 = *((r2 + 4));
0x0006c122 movs r5, r0 | r5 = r0;
0x0006c124 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006c126 movs r0, r0 |
0x0006c128 ldm r1!, {r5, r6, r7} | r5 = *(r1!);
| r6 = *((r1! + 4));
| r7 = *((r1! + 8));
0x0006c12a movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6c12c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006c12c () | void fcn_0006c12c (int16_t arg_a0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_18h;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_74h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006c12c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006c130 mov r5, r2 | r5 = r2;
0x0006c132 ldr r2, [pc, 0x244] |
0x0006c134 mov r6, r3 | r6 = r3;
0x0006c136 sub sp, 0x7c |
0x0006c138 mov r8, r1 | r8 = r1;
0x0006c13a ldr r3, [pc, 0x240] | r3 = *(0x6c37e);
0x0006c13c add r1, sp, 8 | r1 += var_8h;
0x0006c13e add r2, pc | r2 = 0xd84bc;
0x0006c140 ldr.w sb, [sp, 0xa0] | sb = *(arg_a0h);
0x0006c144 mov r7, r0 | r7 = r0;
0x0006c146 ldr r3, [r2, r3] |
0x0006c148 ldr r3, [r3] | r3 = *(0xd84bc);
0x0006c14a str r3, [sp, 0x74] | var_74h = r3;
0x0006c14c mov.w r3, 0 | r3 = 0;
0x0006c150 blx 0x9020 | r0 = fcn_00009020 ();
0x0006c154 cmp r0, 0 |
| if (r0 < 0) {
0x0006c156 blt 0x6c23a | goto label_9;
| }
0x0006c158 adds r1, r6, 1 | r1 = r6 + 1;
| if (r1 == r6) {
0x0006c15a beq 0x6c1e6 | goto label_14;
| }
0x0006c15c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006c15e cmp r3, r6 |
| if (r3 == r6) {
0x0006c160 beq 0x6c1e6 | goto label_14;
| }
0x0006c162 ldr.w fp, [sp, 0x18] | fp = var_18h;
0x0006c166 and r3, fp, 0xf000 | r3 = fp & 0xf000;
0x0006c16a cmp.w r3, 0xa000 |
| if (r3 == 0xa000) {
0x0006c16e beq.w 0x6c296 | goto label_15;
| }
0x0006c172 adds r2, r5, 1 | r2 = r5 + 1;
0x0006c174 it ne |
| if (r2 == r5) {
0x0006c176 movne r3, 1 | r3 = 1;
| }
| if (r2 == r5) {
0x0006c178 beq.w 0x6c2c8 | goto label_16;
| }
| do {
| label_4:
0x0006c17c eor.w r2, r5, fp | r2 = r5 ^ fp;
0x0006c180 ubfx r1, r2, 0, 0xc | r1 = (r2 >> 0) & ((1 << 0xc) - 1);
0x0006c184 cmp r1, 0 |
0x0006c186 ite eq |
| if (r1 != 0) {
0x0006c188 moveq r4, r3 | r4 = r3;
| }
| if (r1 == 0) {
0x0006c18a movne r4, 1 | r4 = 1;
| }
0x0006c18c tst.w r5, 0xf000 |
| if ((r5 & 0xf000) != 0) {
0x0006c190 bne 0x6c25e | goto label_17;
| }
| label_1:
0x0006c192 ands.w sl, r4, r3 | sl = r4 & r3;
| if (sl == r4) {
0x0006c196 beq.w 0x6c2be | goto label_18;
| }
0x0006c19a bic.w r3, fp, r5 | r3 = BIT_MASK (fp, r5);
0x0006c19e and.w fp, r5, fp |
0x0006c1a2 ubfx r3, r3, 0, 0xc | r3 = (r3 >> 0) & ((1 << 0xc) - 1);
| if (r3 != 0) {
0x0006c1a6 cbz r3, 0x6c1ba |
0x0006c1a8 ubfx fp, fp, 0, 0xc | fp = (fp >> 0) & ((1 << 0xc) - 1);
0x0006c1ac mov r0, r7 | r0 = r7;
0x0006c1ae mov r1, fp | r1 = fp;
0x0006c1b0 bl 0x6c0a4 | r0 = fcn_0006c0a4 (r0, r1);
0x0006c1b4 cmp r0, 0 |
| if (r0 < 0) {
0x0006c1b6 blt.w 0x6c2e8 | goto label_19;
| }
| }
| label_10:
0x0006c1ba mov.w r1, 0x1000 | r1 = 0x1000;
0x0006c1be mov r3, sb | r3 = sb;
0x0006c1c0 str r1, [sp] | *(sp) = r1;
0x0006c1c2 mov r2, r6 | r2 = r6;
0x0006c1c4 ldr r1, [pc, 0x1b8] |
0x0006c1c6 mov r0, r7 | r0 = r7;
0x0006c1c8 add r1, pc | r1 = 0xd854c;
0x0006c1ca blx 0x8d5c | r0 = fcn_00008d5c ();
0x0006c1ce cmp r0, 0 |
| if (r0 < 0) {
0x0006c1d0 blt 0x6c23a | goto label_9;
| }
| label_7:
0x0006c1d2 ubfx r5, r5, 0, 0xc | r5 = (r5 >> 0) & ((1 << 0xc) - 1);
0x0006c1d6 mov r0, r7 | r0 = r7;
0x0006c1d8 mov r1, r5 | r1 = r5;
0x0006c1da bl 0x6c0a4 | r0 = fcn_0006c0a4 (r0, r1);
0x0006c1de cmp r0, 0 |
| if (r0 < 0) {
0x0006c1e0 blt 0x6c21a | goto label_20;
| }
| label_0:
0x0006c1e2 movs r4, 1 | r4 = 1;
0x0006c1e4 b 0x6c214 | goto label_3;
| label_14:
0x0006c1e6 cmp.w sb, -1 |
| if (sb == -1) {
0x0006c1ea beq 0x6c27c | goto label_21;
| }
0x0006c1ec ldr r2, [sp, 0x24] | r2 = var_24h;
0x0006c1ee ldr.w fp, [sp, 0x18] | fp = var_18h;
0x0006c1f2 subs.w r1, r2, sb | r1 = r2 - sb;
0x0006c1f6 and r0, fp, 0xf000 | r0 = fp & 0xf000;
0x0006c1fa it ne |
| if (r1 == r2) {
0x0006c1fc movne r1, 1 | r1 = 1;
| }
0x0006c1fe cmp.w r0, 0xa000 |
0x0006c202 mov r3, r1 | r3 = r1;
| if (r0 == 0xa000) {
0x0006c204 beq 0x6c26a | goto label_22;
| }
0x0006c206 adds r0, r5, 1 | r0 = r5 + 1;
0x0006c208 bne 0x6c17c |
| } while (r0 != r5);
0x0006c20a cmp r2, sb |
| if (r2 != sb) {
0x0006c20c bne 0x6c2c8 | goto label_16;
| }
| label_5:
0x0006c20e mov.w sl, 0 | sl = 0;
0x0006c212 mov r4, sl | r4 = sl;
| label_3:
0x0006c214 orr.w r0, r4, sl | r0 = r4 | sl;
0x0006c218 b 0x6c242 | goto label_2;
| label_20:
0x0006c21a adds.w r3, r0, 0x26 | r3 = r0 + 0x26;
0x0006c21e it ne |
| if (r3 == r0) {
0x0006c220 movne r3, 1 | r3 = 1;
| }
0x0006c222 cmp.w r8, 0 |
0x0006c226 it eq |
| if (r8 != 0) {
0x0006c228 orreq r3, r3, 1 | r3 |= 1;
| }
0x0006c22a lsls r1, r0, 0xc | r1 = r0 << 0xc;
| if (r3 != 0) {
0x0006c22c cbnz r3, 0x6c242 | goto label_2;
| }
0x0006c22e mov r1, r5 | r1 = r5;
0x0006c230 mov r0, r8 | r0 = r8;
0x0006c232 blx 0x8d20 | r0 = fcn_00008d20 ();
0x0006c236 cmp r0, 0 |
| if (r0 >= 0) {
0x0006c238 bge 0x6c1e2 | goto label_0;
| }
| label_9:
0x0006c23a blx 0x9628 | r0 = fcn_00009628 ();
0x0006c23e ldr r0, [r0] | r0 = *(r0);
0x0006c240 rsbs r0, r0, 0 | r0 -= ;
| label_2:
0x0006c242 ldr r2, [pc, 0x140] |
0x0006c244 ldr r3, [pc, 0x134] | r3 = *(0x6c37c);
0x0006c246 add r2, pc | r2 = 0xd85d0;
0x0006c248 ldr r3, [r2, r3] | r3 = *(0xd85d0);
0x0006c24a ldr r2, [r3] | r2 = *(0xd85d0);
0x0006c24c ldr r3, [sp, 0x74] | r3 = var_74h;
0x0006c24e eors r2, r3 | r2 ^= r3;
0x0006c250 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c254 bne.w 0x6c370 | goto label_23;
| }
0x0006c258 add sp, 0x7c |
0x0006c25a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x0006c25e tst.w r2, 0xf000 |
| if ((r2 & 0xf000) == 0) {
0x0006c262 beq 0x6c192 | goto label_1;
| }
| label_6:
0x0006c264 mvn r0, 0x15 | r0 = ~0x15;
0x0006c268 b 0x6c242 | goto label_2;
| label_22:
0x0006c26a adds r3, r5, 1 | r3 = r5 + 1;
| if (r3 == r5) {
0x0006c26c beq 0x6c340 | goto label_24;
| }
0x0006c26e ands sl, r5, 0xf000 | sl = r5 & 0xf000;
| if (sl != r5) {
0x0006c272 bne 0x6c374 | goto label_25;
| }
0x0006c274 cmp r2, sb |
| if (r2 != sb) {
0x0006c276 bne 0x6c366 | goto label_26;
| }
| label_11:
0x0006c278 movs r4, 0 | r4 = 0;
0x0006c27a b 0x6c214 | goto label_3;
| label_21:
0x0006c27c ldr.w fp, [sp, 0x18] | fp = var_18h;
0x0006c280 and r3, fp, 0xf000 | r3 = fp & 0xf000;
0x0006c284 cmp.w r3, 0xa000 |
| if (r3 == 0xa000) {
0x0006c288 beq 0x6c32e | goto label_27;
| }
0x0006c28a adds r3, r5, 1 | r3 = r5 + 1;
0x0006c28c it ne |
| if (r3 != r5) {
0x0006c28e movne r3, 0 | r3 = 0;
| goto label_28;
| }
| if (r3 != r5) {
| label_28:
0x0006c290 bne.w 0x6c17c | goto label_4;
| }
0x0006c294 b 0x6c20e | goto label_5;
| label_15:
0x0006c296 adds r1, r5, 1 | r1 = r5 + 1;
| if (r1 == r5) {
0x0006c298 beq 0x6c346 | goto label_29;
| }
0x0006c29a tst.w r5, 0xf000 |
0x0006c29e it ne |
| if ((r5 & 0xf000) == 0) {
0x0006c2a0 movne sl, 1 | sl = 1;
| }
| if ((r5 & 0xf000) == 0) {
0x0006c2a4 beq 0x6c366 | goto label_26;
| }
| label_12:
0x0006c2a6 eor.w r0, r5, fp | r0 = r5 ^ fp;
0x0006c2aa ands r0, r0, 0xf000 | r0 &= 0xf000;
| if (r0 != r0) {
0x0006c2ae bne 0x6c264 | goto label_6;
| }
0x0006c2b0 mov r4, r0 | r4 = r0;
0x0006c2b2 cmp.w sl, 0 |
| if (sl != 0) {
0x0006c2b6 bne 0x6c30e | goto label_30;
| }
| label_8:
0x0006c2b8 cmp r4, 0 |
| if (r4 == 0) {
0x0006c2ba beq 0x6c214 | goto label_3;
| }
0x0006c2bc b 0x6c1d2 | goto label_7;
| label_18:
0x0006c2be mov sl, r3 | sl = r3;
0x0006c2c0 cmp.w sl, 0 |
| if (sl == 0) {
0x0006c2c4 beq 0x6c2b8 | goto label_8;
| }
0x0006c2c6 b 0x6c30e | goto label_30;
| label_16:
0x0006c2c8 mov.w r1, 0x1000 | r1 = 0x1000;
0x0006c2cc mov r3, sb | r3 = sb;
0x0006c2ce str r1, [sp] | *(sp) = r1;
0x0006c2d0 mov r2, r6 | r2 = r6;
0x0006c2d2 ldr r1, [pc, 0xb4] |
0x0006c2d4 mov r0, r7 | r0 = r7;
0x0006c2d6 add r1, pc | r1 = 0xd8664;
0x0006c2d8 blx 0x8d5c | r0 = fcn_00008d5c ();
0x0006c2dc cmp r0, 0 |
| if (r0 < 0) {
0x0006c2de blt 0x6c23a | goto label_9;
| }
0x0006c2e0 mov r5, fp | r5 = fp;
0x0006c2e2 mov.w sl, 1 | sl = 1;
0x0006c2e6 b 0x6c1d2 | goto label_7;
| label_19:
0x0006c2e8 adds.w r3, r0, 0x26 | r3 = r0 + 0x26;
0x0006c2ec it ne |
| if (r3 == r0) {
0x0006c2ee movne r3, 1 | r3 = 1;
| }
0x0006c2f0 cmp.w r8, 0 |
0x0006c2f4 it eq |
| if (r8 != 0) {
0x0006c2f6 orreq r3, r3, 1 | r3 |= 1;
| }
0x0006c2fa cmp r3, 0 |
| if (r3 != 0) {
0x0006c2fc bne 0x6c242 | goto label_2;
| }
0x0006c2fe mov r1, fp | r1 = fp;
0x0006c300 mov r0, r8 | r0 = r8;
0x0006c302 blx 0x8d20 | r0 = fcn_00008d20 ();
0x0006c306 cmp r0, 0 |
| if (r0 >= 0) {
0x0006c308 bge.w 0x6c1ba | goto label_10;
| }
0x0006c30c b 0x6c23a | goto label_9;
| label_30:
0x0006c30e mov.w r1, 0x1000 | r1 = 0x1000;
0x0006c312 mov r3, sb | r3 = sb;
0x0006c314 str r1, [sp] | *(sp) = r1;
0x0006c316 mov r2, r6 | r2 = r6;
0x0006c318 ldr r1, [pc, 0x70] |
0x0006c31a mov r0, r7 | r0 = r7;
0x0006c31c add r1, pc | r1 = 0xd86ac;
0x0006c31e blx 0x8d5c | r0 = fcn_00008d5c ();
0x0006c322 cmp r0, 0 |
| if (r0 < 0) {
0x0006c324 blt 0x6c23a | goto label_9;
| }
0x0006c326 cmp r4, 0 |
| if (r4 == 0) {
0x0006c328 beq.w 0x6c214 | goto label_3;
| }
0x0006c32c b 0x6c1d2 | goto label_7;
| label_27:
0x0006c32e adds r2, r5, 1 | r2 = r5 + 1;
| if (r2 == r5) {
0x0006c330 beq.w 0x6c20e | goto label_5;
| }
0x0006c334 ands sl, r5, 0xf000 | sl = r5 & 0xf000;
| if (sl == r5) {
0x0006c338 beq 0x6c278 | goto label_11;
| }
0x0006c33a mov.w sl, 0 | sl = 0;
0x0006c33e b 0x6c2a6 | goto label_12;
| label_24:
0x0006c340 cmp r2, sb |
| if (r2 == sb) {
0x0006c342 beq.w 0x6c20e | goto label_5;
| }
0x0006c344 add r7, sp, 0x190 | r7 = sp + 0x190;
| label_29:
0x0006c346 ldr r1, [pc, 0x48] |
0x0006c348 mov.w r4, 0x1000 | r4 = 0x1000;
0x0006c34c add r1, pc | r1 = 0xd86e2;
| label_13:
0x0006c34e mov r3, sb | r3 = sb;
0x0006c350 mov r2, r6 | r2 = r6;
0x0006c352 mov r0, r7 | r0 = r7;
0x0006c354 str r4, [sp] | *(sp) = r4;
0x0006c356 blx 0x8d5c | r0 = fcn_00008d5c ();
0x0006c35a cmp r0, 0 |
| if (r0 < 0) {
0x0006c35c blt.w 0x6c23a | goto label_9;
| }
0x0006c360 mov.w sl, 1 | sl = 1;
0x0006c364 b 0x6c278 | goto label_11;
| label_26:
0x0006c366 ldr r1, [pc, 0x2c] |
0x0006c368 mov.w r4, 0x1000 | r4 = 0x1000;
0x0006c36c add r1, pc | r1 = 0xd8706;
0x0006c36e b 0x6c34e | goto label_13;
| label_23:
0x0006c370 blx 0x927c | fprintf_chk ()
| label_25:
0x0006c374 mov sl, r1 | sl = r1;
0x0006c376 b 0x6c2a6 | goto label_12;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6c400 */
| #include <stdint.h>
|
; (fcn) fcn.0006c400 () | void fcn_0006c400 (int16_t arg1, int16_t arg2) {
| int16_t var_34h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int8_t var_14h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x0006c400 push {r4, r5, lr} |
0x0006c402 sub sp, 0x2c |
0x0006c404 ldr r4, [pc, 0x78] |
0x0006c406 movs r3, 0x1a | r3 = 0x1a;
0x0006c408 mov r5, r1 | r5 = r1;
0x0006c40a movs r2, 1 | r2 = 1;
0x0006c40c str r0, [sp, 4] | var_4h = r0;
0x0006c40e mov r1, r3 | r1 = r3;
0x0006c410 add r4, pc | r4 = 0xd8894;
0x0006c412 ldr r0, [pc, 0x70] | r0 = *(0x6c486);
0x0006c414 str r4, [sp] | *(sp) = r4;
0x0006c416 ldr r4, [pc, 0x70] |
0x0006c418 add r4, pc | r4 = 0xd88a6;
0x0006c41a ldr r0, [r4, r0] |
0x0006c41c add r4, sp, 8 | r4 += var_8h;
0x0006c41e ldr r0, [r0] | r0 = *(0xd88a6);
0x0006c420 str r0, [sp, 0x24] | var_24h = r0;
0x0006c422 mov.w r0, 0 | r0 = 0;
0x0006c426 mov r0, r4 | r0 = r4;
0x0006c428 blx 0x9110 | fcn_00009110 ();
0x0006c42c movs r3, 0 | r3 = 0;
0x0006c42e mov r2, r5 | r2 = r5;
0x0006c430 mov r1, r4 | r1 = r4;
0x0006c432 mvn r0, 0x63 | r0 = ~0x63;
0x0006c436 blx 0x90f8 | r0 = fcn_000090f8 ();
0x0006c43a cmp r0, 0 |
0x0006c43c it ge |
| if (r0 < 0) {
0x0006c43e movge r0, 0 | r0 = 0;
| }
0x0006c440 blt 0x6c45a |
| while (r0 != 2) {
| label_0:
0x0006c442 ldr r2, [pc, 0x48] |
0x0006c444 ldr r3, [pc, 0x3c] | r3 = *(0x6c484);
0x0006c446 add r2, pc | r2 = 0xd88d8;
0x0006c448 ldr r3, [r2, r3] | r3 = *(0xd88d8);
0x0006c44a ldr r2, [r3] | r2 = *(0xd88d8);
0x0006c44c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006c44e eors r2, r3 | r2 ^= r3;
0x0006c450 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c454 bne 0x6c47a | goto label_1;
| }
0x0006c456 add sp, 0x2c |
0x0006c458 pop {r4, r5, pc} |
0x0006c45a blx 0x9628 | r0 = fcn_00009628 ();
0x0006c45e ldr r0, [r0] | r0 = *(r0);
0x0006c460 cmp r0, 2 |
0x0006c462 it ne |
| if (r0 != 2) {
0x0006c464 rsbne r0, r0, 0 | __asm ("rsbne r0, r0, 0");
| }
0x0006c466 bne 0x6c442 |
| }
0x0006c468 bl 0x7a398 | r0 = fcn_0007a398 ();
0x0006c46c cmp r0, 0 |
0x0006c46e ite eq |
| if (r0 != 0) {
0x0006c470 mvneq r0, 0x25 | r0 = ~0x25;
| }
| if (r0 != 0) {
0x0006c474 mvn r0, 1 | r0 = ~1;
| }
0x0006c478 b 0x6c442 | goto label_0;
| label_1:
0x0006c47a blx 0x927c | fprintf_chk ()
0x0006c47e nop |
0x0006c480 strb r0, [r1, 0x14] | var_14h = r0;
0x0006c482 movs r3, r0 | r3 = r0;
0x0006c484 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006c486 movs r0, r0 |
0x0006c488 stm r6!, {r2, r3, r5, r7} | *(r6!) = r2;
| *((r6! + 4)) = r3;
| *((r6! + 8)) = r5;
| *((r6! + 12)) = r7;
0x0006c48a movs r5, r0 | r5 = r0;
0x0006c48c stm r6!, {r1, r2, r3, r4, r5, r6} | *(r6!) = r1;
| *((r6! + 4)) = r2;
| *((r6! + 8)) = r3;
| *((r6! + 12)) = r4;
| *((r6! + 16)) = r5;
| *((r6! + 20)) = r6;
0x0006c48e movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6c5b4 */
| #include <stdint.h>
|
; (fcn) fcn.0006c5b4 () | void fcn_0006c5b4 (int16_t arg1, int16_t arg2) {
| int16_t var_6ch;
| r0 = arg1;
| r1 = arg2;
0x0006c5b4 stmdbmi r1!, {r0, r1, r3, sb, sl, lr} | __asm ("stmdbmi r1!, {r0, r1, r3, sb, sl, lr}");
0x0006c5b8 ldr r2, [pc, 0x84] |
0x0006c5ba push {r4, r5, lr} |
0x0006c5bc sub sp, 0x74 |
0x0006c5be add r1, pc | r1 += pc;
0x0006c5c0 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x0006c5c2 ldr r2, [r2] | r2 = *(0x6c640);
0x0006c5c4 str r2, [sp, 0x6c] | var_6ch = r2;
0x0006c5c6 mov.w r2, 0 | r2 = 0;
| if (r0 == 0) {
0x0006c5ca cbz r0, 0x6c60a | goto label_0;
| }
0x0006c5cc cmp r3, 0 |
| if (r3 < 0) {
0x0006c5ce blt 0x6c620 | goto label_1;
| }
0x0006c5d0 mov r5, sp | r5 = sp;
0x0006c5d2 mov r4, r0 | r4 = r0;
0x0006c5d4 mov r1, r5 | r1 = r5;
0x0006c5d6 mov r0, r3 | r0 = r3;
0x0006c5d8 blx 0x9020 | r0 = fcn_00009020 ();
0x0006c5dc cmp r0, 0 |
| if (r0 < 0) {
0x0006c5de blt 0x6c600 | goto label_2;
| }
0x0006c5e0 mov r1, r5 | r1 = r5;
0x0006c5e2 mov r0, r4 | r0 = r4;
0x0006c5e4 bl 0x6c490 | fcn_0006c490 (r0, r1);
| do {
0x0006c5e8 ldr r2, [pc, 0x58] |
0x0006c5ea ldr r3, [pc, 0x54] | r3 = *(0x6c642);
0x0006c5ec add r2, pc | r2 = 0xd8c34;
0x0006c5ee ldr r3, [r2, r3] | r3 = *(0xd8c34);
0x0006c5f0 ldr r2, [r3] | r2 = *(0xd8c34);
0x0006c5f2 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0006c5f4 eors r2, r3 | r2 ^= r3;
0x0006c5f6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c5fa bne 0x6c636 | goto label_3;
| }
0x0006c5fc add sp, 0x74 |
0x0006c5fe pop {r4, r5, pc} |
| label_2:
0x0006c600 blx 0x9628 | r0 = fcn_00009628 ();
0x0006c604 ldr r0, [r0] | r0 = *(r0);
0x0006c606 rsbs r0, r0, 0 | r0 -= ;
0x0006c608 b 0x6c5e8 |
| } while (1);
| label_0:
0x0006c60a ldr r1, [pc, 0x3c] |
0x0006c60c movw r2, 0x175 | r2 = 0x175;
0x0006c610 ldr r3, [pc, 0x38] |
0x0006c612 ldr r0, [pc, 0x3c] |
0x0006c614 add r1, pc | r1 = 0xd8c62;
0x0006c616 add r3, pc | r3 = 0xd8c66;
0x0006c618 adds r1, 7 | r1 += 7;
0x0006c61a add r0, pc | r0 = 0xd8c70;
0x0006c61c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_1:
0x0006c620 ldr r1, [pc, 0x30] |
0x0006c622 mov.w r2, 0x176 | r2 = 0x176;
0x0006c626 ldr r3, [pc, 0x30] |
0x0006c628 ldr r0, [pc, 0x30] |
0x0006c62a add r1, pc | r1 = 0xd8c82;
0x0006c62c add r3, pc | r3 = 0xd8c8a;
0x0006c62e adds r1, 7 | r1 += 7;
0x0006c630 add r0, pc | r0 = 0xd8c90;
0x0006c632 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0006c636 blx 0x927c | fprintf_chk ()
0x0006c63a nop |
0x0006c63c stm r5!, {r1, r2} | *(r5!) = r1;
| *((r5! + 4)) = r2;
0x0006c63e movs r5, r0 | r5 = r0;
0x0006c640 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006c642 movs r0, r0 |
0x0006c644 stm r4!, {r3, r4, r6, r7} | *(r4!) = r3;
| *((r4! + 4)) = r4;
| *((r4! + 8)) = r6;
| *((r4! + 12)) = r7;
0x0006c646 movs r5, r0 | r5 = r0;
0x0006c648 strb r0, [r7, 0x1d] | *((r7 + 0x1d)) = r0;
0x0006c64a movs r3, r0 | r3 = r0;
0x0006c64c ldrb r6, [r1, 0xa] | r6 = *((r1 + 0xa));
0x0006c64e movs r3, r0 | r3 = r0;
0x0006c650 asrs r6, r0, 4 | r6 = r0 >> 4;
0x0006c652 movs r3, r0 | r3 = r0;
0x0006c654 strb r2, [r4, 0x1d] | *((r4 + 0x1d)) = r2;
0x0006c656 movs r3, r0 | r3 = r0;
0x0006c658 ldrb r0, [r7, 9] | r0 = *((r7 + 9));
0x0006c65a movs r3, r0 | r3 = r0;
0x0006c65c adds r4, r7, r7 | r4 = r7 + r7;
0x0006c65e movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6c660 */
| #include <stdint.h>
|
; (fcn) fcn.0006c660 () | void fcn_0006c660 (int16_t arg_58h, int16_t arg_60h, uint32_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_0h_2;
| int32_t var_0h_3;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006c660 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x0006c664 mov r8, r2 | r8 = r2;
0x0006c666 ldr r2, [pc, 0x124] |
0x0006c668 mov r7, r3 | r7 = r3;
0x0006c66a sub sp, 0x3c |
0x0006c66c ldr r3, [pc, 0x120] | r3 = *(0x6c790);
0x0006c66e add r2, pc | r2 = 0xd8e00;
0x0006c670 ldr r3, [r2, r3] |
0x0006c672 ldr r3, [r3] | r3 = *(0xd8e00);
0x0006c674 str r3, [sp, 0x34] | var_34h = r3;
0x0006c676 mov.w r3, 0 | r3 = 0;
0x0006c67a cmp r0, 0 |
| if (arg_58h == ) {
0x0006c67c beq 0x6c770 | goto label_1;
| }
0x0006c67e mov r6, r0 | r6 = r0;
0x0006c680 cmp r1, 0 |
0x0006c682 bne 0x6c742 |
| while (1) {
0x0006c684 mov.w r1, 0x288000 | r1 = 0x288000;
0x0006c688 mov r0, r6 | r0 = r6;
0x0006c68a blx 0x908c | r0 = fcn_0000908c ();
0x0006c68e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0006c690 bge 0x6c6c2 |
0x0006c692 blx 0x9628 | r0 = fcn_00009628 ();
0x0006c696 ldr r5, [r0] | r5 = *(r0);
0x0006c698 mov sb, r0 | sb = r0;
0x0006c69a cmp r5, 2 |
| if (r5 != 2) {
0x0006c69c beq 0x6c6a2 |
0x0006c69e rsbs r5, r5, 0 | r5 -= ;
0x0006c6a0 b 0x6c720 | goto label_0;
| }
0x0006c6a2 ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x0006c6a4 movs r1, 0xc1 | r1 = 0xc1;
0x0006c6a6 mov r0, r6 | r0 = r6;
0x0006c6a8 movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x0006c6ac subs r3, 1 | r3--;
0x0006c6ae adds r3, 3 | r3 += 3;
0x0006c6b0 ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x0006c6b2 ite hi |
| if (r3 <= 3) {
0x0006c6b4 movhi r2, 0x1a4 | r2 = 0x1a4;
| }
| if (r3 <= 3) {
0x0006c6b8 mov r2, r3 | r2 = r3;
| }
0x0006c6ba blx 0x908c | r0 = fcn_0000908c ();
0x0006c6be subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0006c6c0 blt 0x6c768 | goto label_2;
| }
| }
0x0006c6c2 ldr r2, [pc, 0xd0] |
0x0006c6c4 movs r3, 0x1a | r3 = 0x1a;
0x0006c6c6 add.w sb, sp, 0x18 | sb += var_18h;
0x0006c6ca mov r1, r3 | r1 = r3;
0x0006c6cc mov r0, sb | r0 = sb;
0x0006c6ce add r2, pc | r2 = 0xd8e68;
0x0006c6d0 strd r2, r4, [sp] | __asm ("strd r2, r4, [sp]");
0x0006c6d4 movs r2, 1 | r2 = 1;
0x0006c6d6 blx 0x9110 | fcn_00009110 ();
0x0006c6da ldrd r3, r2, [sp, 0x58] | __asm ("ldrd r3, r2, [arg_58h]");
0x0006c6de movs r1, 0 | r1 = 0;
0x0006c6e0 mov r0, r4 | r0 = r4;
0x0006c6e2 str r2, [sp] | *(sp) = r2;
0x0006c6e4 ldr r2, [sp, 0x60] | r2 = *(arg_60h);
0x0006c6e6 bl 0x6c12c | fcn_0006c12c (r0, r1, r2, r3, r4);
0x0006c6ea cmp.w r7, -1 |
0x0006c6ee it eq |
| if (r7 == -1) {
0x0006c6f0 cmpeq r8, -1 | __asm ("cmpeq r8, -1");
| }
0x0006c6f4 mov r5, r0 | r5 = r0;
| if (r7 == -1) {
0x0006c6f6 beq 0x6c74c | goto label_3;
| }
0x0006c6f8 add r6, sp, 8 | r6 += var_8h;
0x0006c6fa mov r2, r8 | r2 = r8;
0x0006c6fc mov r3, r7 | r3 = r7;
0x0006c6fe mov r0, r6 | r0 = r6;
0x0006c700 bl 0x7c6a8 | r0 = fcn_0007c6a8 (r0, r1, r2, r3, r4);
0x0006c704 ldm.w r6, {r0, r1} | r0 = *(r6);
| r1 = *((r6 + 4));
0x0006c708 mov r2, r6 | r2 = r6;
0x0006c70a add r6, sp, 0x10 | r6 += var_10h;
0x0006c70c movs r3, 0 | r3 = 0;
0x0006c70e stm.w r6, {r0, r1} | *(r6) = r0;
| *((r6 + 4)) = r1;
0x0006c712 mov r1, sb | r1 = sb;
0x0006c714 mvn r0, 0x63 | r0 = ~0x63;
0x0006c718 blx 0x90f8 | fcn_000090f8 ();
0x0006c71c bics r0, r5 | __asm ("bics r0, r5");
| if (r3 < 0) {
0x0006c71e bmi 0x6c75e | goto label_4;
| }
| label_0:
0x0006c720 mov r0, r4 | r0 = r4;
0x0006c722 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006c726 ldr r2, [pc, 0x70] |
0x0006c728 ldr r3, [pc, 0x64] | r3 = *(0x6c790);
0x0006c72a add r2, pc | r2 = 0xd8ec8;
0x0006c72c ldr r3, [r2, r3] | r3 = *(0xd8ec8);
0x0006c72e ldr r2, [r3] | r2 = *(0xd8ec8);
0x0006c730 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0006c732 eors r2, r3 | r2 ^= r3;
0x0006c734 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c738 bne 0x6c786 | goto label_5;
| }
0x0006c73a mov r0, r5 | r0 = r5;
0x0006c73c add sp, 0x3c |
0x0006c73e pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0006c742 movw r1, 0x1ed | r1 = 0x1ed;
0x0006c746 bl 0x72cb0 | fcn_00072cb0 (r0, r1);
0x0006c74a b 0x6c684 |
| }
| label_3:
0x0006c74c movs r3, 0 | r3 = 0;
0x0006c74e mov r1, sb | r1 = sb;
0x0006c750 mov r2, r3 | r2 = r3;
0x0006c752 mvn r0, 0x63 | r0 = ~0x63;
0x0006c754 lsls r3, r4, 1 | r3 = r4 << 1;
0x0006c756 blx 0x90f8 | fcn_000090f8 ();
0x0006c75a bics r0, r5 | __asm ("bics r0, r5");
| if (r3 >= r4) {
0x0006c75c bpl 0x6c720 | goto label_0;
| }
| label_4:
0x0006c75e blx 0x9628 | r0 = fcn_00009628 ();
0x0006c762 ldr r5, [r0] | r5 = *(r0);
0x0006c764 rsbs r5, r5, 0 | r5 -= ;
0x0006c766 b 0x6c720 | goto label_0;
| label_2:
0x0006c768 ldr.w r5, [sb] | r5 = *(sb);
0x0006c76c rsbs r5, r5, 0 | r5 -= ;
0x0006c76e b 0x6c720 | goto label_0;
| label_1:
0x0006c770 ldr r1, [pc, 0x28] |
0x0006c772 movw r2, 0x183 | r2 = 0x183;
0x0006c776 ldr r3, [pc, 0x28] |
0x0006c778 ldr r0, [pc, 0x28] |
0x0006c77a add r1, pc | r1 = 0xd8f1a;
0x0006c77c add r3, pc | r3 = 0xd8f22;
0x0006c77e adds r1, 7 | r1 += 7;
0x0006c780 add r0, pc | r0 = 0xd8f28;
0x0006c782 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x0006c786 blx 0x927c | fprintf_chk ()
0x0006c78a nop |
0x0006c78c stm r4!, {r1, r2, r4, r6} | *(r4!) = r1;
| *((r4! + 4)) = r2;
| *((r4! + 8)) = r4;
| *((r4! + 12)) = r6;
0x0006c78e movs r5, r0 | r5 = r0;
0x0006c790 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006c792 movs r0, r0 |
0x0006c794 strb r2, [r1, 9] | *((r1 + 9)) = r2;
0x0006c796 movs r3, r0 | r3 = r0;
0x0006c798 stm r3!, {r1, r3, r4, r7} | *(r3!) = r1;
| *((r3! + 4)) = r3;
| *((r3! + 8)) = r4;
| *((r3! + 12)) = r7;
0x0006c79a movs r5, r0 | r5 = r0;
0x0006c79c strb r2, [r2, 0x18] | *((r2 + 0x18)) = r2;
0x0006c79e movs r3, r0 | r3 = r0;
0x0006c7a0 ldrb r4, [r3, 4] | r4 = *((r3 + 4));
0x0006c7a2 movs r3, r0 | r3 = r0;
0x0006c7a4 lsrs r0, r4, 0x1e | r0 = r4 >> 0x1e;
0x0006c7a6 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6c7d8 */
| #include <stdint.h>
|
; (fcn) fcn.0006c7d8 () | void fcn_0006c7d8 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006c7d8 invalid |
0x0006c7dc sub sp, 0x28 |
0x0006c7de ldr r4, [pc, 0x5c] |
0x0006c7e0 movs r3, 0x1b | r3 = 0x1b;
0x0006c7e2 mov r6, r2 | r6 = r2;
0x0006c7e4 ldr r0, [pc, 0x58] |
0x0006c7e6 movs r2, 1 | r2 = 1;
0x0006c7e8 str r1, [sp, 4] | var_4h = r1;
0x0006c7ea add r4, pc | r4 = 0xd902c;
0x0006c7ec ldr r1, [pc, 0x54] | r1 = *(0x6c844);
0x0006c7ee add r0, pc | r0 = 0xd9032;
0x0006c7f0 str r4, [sp] | *(sp) = r4;
0x0006c7f2 add r4, sp, 8 | r4 += var_8h;
0x0006c7f4 ldr r1, [r0, r1] |
0x0006c7f6 mov r0, r4 | r0 = r4;
0x0006c7f8 ldr r1, [r1] | r1 = *(0xd9032);
0x0006c7fa str r1, [sp, 0x24] | var_24h = r1;
0x0006c7fc mov.w r1, 0 | r1 = 0;
0x0006c800 mov r1, r3 | r1 = r3;
0x0006c802 blx 0x9110 | fcn_00009110 ();
0x0006c806 mov r2, r6 | r2 = r6;
0x0006c808 mov r1, r4 | r1 = r4;
0x0006c80a mov r0, r5 | r0 = r5;
0x0006c80c blx 0x93d4 | r0 = fcn_000093d4 ();
0x0006c810 cmp r0, 0 |
0x0006c812 blt 0x6c82c |
| while (1) {
0x0006c814 ldr r2, [pc, 0x30] |
0x0006c816 ldr r3, [pc, 0x2c] | r3 = *(0x6c846);
0x0006c818 add r2, pc | r2 = 0xd9064;
0x0006c81a ldr r3, [r2, r3] | r3 = *(0xd9064);
0x0006c81c ldr r2, [r3] | r2 = *(0xd9064);
0x0006c81e ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006c820 eors r2, r3 | r2 ^= r3;
0x0006c822 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c826 bne 0x6c836 | goto label_0;
| }
0x0006c828 add sp, 0x28 |
0x0006c82a pop {r4, r5, r6, pc} |
0x0006c82c blx 0x9628 | r0 = fcn_00009628 ();
0x0006c830 ldr r0, [r0] | r0 = *(r0);
0x0006c832 rsbs r0, r0, 0 | r0 -= ;
0x0006c834 b 0x6c814 |
| }
| label_0:
0x0006c836 blx 0x927c | fprintf_chk ()
0x0006c83a nop |
0x0006c83c strb r6, [r5, 4] | *((r5 + 4)) = r6;
0x0006c83e movs r3, r0 | r3 = r0;
0x0006c840 stm r2!, {r1, r2, r4, r6, r7} | *(r2!) = r1;
| *((r2! + 4)) = r2;
| *((r2! + 8)) = r4;
| *((r2! + 12)) = r6;
| *((r2! + 16)) = r7;
0x0006c842 movs r5, r0 | r5 = r0;
0x0006c844 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006c846 movs r0, r0 |
0x0006c848 stm r2!, {r2, r3, r5, r7} | *(r2!) = r2;
| *((r2! + 4)) = r3;
| *((r2! + 8)) = r5;
| *((r2! + 12)) = r7;
0x0006c84a movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6c85c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006c85c () | void fcn_0006c85c (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_4h_2;
| int32_t var_8h_2;
| int32_t var_ch_2;
| int32_t var_10h_2;
| 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 var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_38h_2;
| int32_t var_40h;
| int32_t var_44h;
| int16_t var_48h;
| int32_t var_4ch;
| int16_t var_50h;
| int16_t var_b8h;
| int32_t var_c8h;
| int32_t var_124h;
| int16_t var_12ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006c85c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006c860 sub sp, 0x13c |
0x0006c862 add r7, sp, 0x10 | r7 += var_10h;
0x0006c864 movs r4, 0 | r4 = 0;
0x0006c866 ldr.w r5, [r7, 0x150] | r5 = *((r7 + 0x150));
0x0006c86a str r3, [r7, 0x30] | var_30h = r3;
0x0006c86c ldr.w r3, [pc, 0x7b4] | r3 = *(0x6d024);
0x0006c870 str r5, [r7, 0x34] | var_34h = r5;
0x0006c872 mov r5, r2 | r5 = r2;
0x0006c874 ldr.w r2, [pc, 0x7b0] |
0x0006c878 add r2, pc | r2 = 0xd98a4;
0x0006c87a ldr r3, [r2, r3] |
0x0006c87c ldr r3, [r3] | r3 = *(0xd98a4);
0x0006c87e str.w r3, [r7, 0x124] | __asm ("str.w r3, [var_124h]");
0x0006c882 mov.w r3, 0 | r3 = 0;
0x0006c886 strd r4, r4, [r7, 0x38] | __asm ("strd r4, r4, [var_38h]");
0x0006c88a str r4, [r7, 0x40] | var_40h = r4;
0x0006c88c cmp r0, 0 |
| if (r0 == 0) {
0x0006c88e beq.w 0x6cdda | goto label_26;
| }
0x0006c892 ands r3, r5, 2 | r3 = r5 & 2;
0x0006c896 mov r6, r1 | r6 = r1;
0x0006c898 mov r4, r0 | r4 = r0;
0x0006c89a str r3, [r7, 0x1c] | var_1ch = r3;
| if (r3 != r5) {
0x0006c89c bne 0x6c8fa | goto label_27;
| }
0x0006c89e ands r3, r5, 0x20 | r3 = r5 & 0x20;
0x0006c8a2 str r3, [r7, 0x2c] | var_2ch = r3;
| if (r3 != r5) {
0x0006c8a4 beq 0x6c8aa |
0x0006c8a6 ldr r3, [r7, 0x34] | r3 = var_34h;
| if (r3 != 0) {
0x0006c8a8 cbnz r3, 0x6c8ae | goto label_0;
| }
| }
0x0006c8aa ldrb r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x0006c8ac cbnz r3, 0x6c90c | goto label_28;
| }
| do {
| label_0:
0x0006c8ae mov.w r6, -1 | r6 = -1;
0x0006c8b2 mvn r1, 0x15 | r1 = ~0x15;
| label_3:
0x0006c8b6 mov r0, r6 | r0 = r6;
0x0006c8b8 str r1, [r7, 0x34] | var_34h = r1;
0x0006c8ba bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006c8be ldr r0, [r7, 0x40] | r0 = var_40h;
0x0006c8c0 blx 0x8dac | fcn_00008dac ();
0x0006c8c4 ldr r0, [r7, 0x3c] | r0 = var_38h_2;
0x0006c8c6 blx 0x8dac | fcn_00008dac ();
0x0006c8ca ldr r0, [r7, 0x38] | r0 = var_38h;
0x0006c8cc blx 0x8dac | fcn_00008dac ();
0x0006c8d0 ldr.w r2, [pc, 0x758] |
0x0006c8d4 ldr.w r3, [pc, 0x74c] | r3 = *(0x6d024);
0x0006c8d8 ldr r1, [r7, 0x34] | r1 = var_34h;
0x0006c8da add r2, pc | r2 = 0xd990a;
0x0006c8dc ldr r3, [r2, r3] | r3 = *(0xd990a);
0x0006c8de ldr r2, [r3] | r2 = *(0xd990a);
0x0006c8e0 ldr.w r3, [r7, 0x124] | r3 = var_124h;
0x0006c8e4 eors r2, r3 | r2 ^= r3;
0x0006c8e6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006c8ea bne.w 0x6d006 | goto label_29;
| }
0x0006c8ee mov r0, r1 | r0 = r1;
0x0006c8f0 add.w r7, r7, 0x12c | r7 += var_12ch;
0x0006c8f4 mov sp, r7 |
0x0006c8f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x0006c8fa ldr r3, [r7, 0x34] | r3 = var_34h;
0x0006c8fc cmp r3, 0 |
0x0006c8fe bne 0x6c8ae |
| } while (r3 != 0);
0x0006c900 and r3, r5, 0x20 | r3 = r5 & 0x20;
0x0006c904 str r3, [r7, 0x2c] | var_2ch = r3;
0x0006c906 ldrb r3, [r4] | r3 = *(r4);
0x0006c908 cmp r3, 0 |
| if (r3 == 0) {
0x0006c90a beq 0x6c8ae | goto label_0;
| }
| label_28:
0x0006c90c mov r0, r6 | r0 = r6;
0x0006c90e bl 0x75cb4 | r0 = fcn_00075cb4 (r0);
0x0006c912 cmp r0, 0 |
| if (r0 == 0) {
0x0006c914 beq.w 0x6cac6 | goto label_30;
| }
0x0006c918 ldr r3, [r7, 0x30] | r3 = var_30h;
| if (r3 == 0) {
0x0006c91a cbnz r3, 0x6c934 |
| label_1:
0x0006c91c ldr r3, [r7, 0x34] | r3 = var_34h;
0x0006c91e and r2, r5, 0x2e | r2 = r5 & 0x2e;
0x0006c922 subs r3, 0 |
0x0006c924 it ne |
| if (r3 == 0) {
0x0006c926 movne r3, 1 | r3 = 1;
| }
0x0006c928 cmp r2, 0 |
0x0006c92a it ne |
| if (r2 == 0) {
0x0006c92c movne r3, 0 | r3 = 0;
| }
0x0006c92e cmp r3, 0 |
| if (r3 != 0) {
0x0006c930 bne.w 0x6cd24 | goto label_31;
| }
| }
| label_2:
0x0006c934 add.w r1, r7, 0x38 | r1 += var_38h;
0x0006c938 mov r0, r4 | r0 = r4;
0x0006c93a bl 0x74e1c | r0 = fcn_00074e1c (r0, r1);
0x0006c93e subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x0006c940 blt.w 0x6cb78 | goto label_32;
| }
0x0006c944 ldr r0, [r7, 0x40] | r0 = var_40h;
0x0006c946 cmp r0, 0 |
| if (r0 == 0) {
0x0006c948 beq.w 0x6cdd4 | goto label_33;
| }
| label_10:
0x0006c94c mov.w r1, 0x284000 | r1 = 0x284000;
0x0006c950 blx 0x908c | r0 = fcn_0000908c ();
0x0006c954 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0006c956 blt.w 0x6cb8c | goto label_34;
| }
0x0006c95a ands r3, r5, 8 | r3 = r5 & 8;
0x0006c95e str r3, [r7, 0x18] | var_18h = r3;
| if (r3 != r5) {
0x0006c960 bne.w 0x6cb7e | goto label_35;
| }
| label_4:
0x0006c964 ands r3, r5, 0x10 | r3 = r5 & 0x10;
0x0006c968 ldr.w sb, [r7, 0x38] | sb = var_38h;
0x0006c96c it eq |
| if (r3 != r5) {
0x0006c96e streq r3, [r7, 0xc] | var_ch_2 = r3;
| }
| if (r3 != r5) {
0x0006c970 beq 0x6c988 |
0x0006c972 ldr.w r1, [pc, 0x6bc] |
0x0006c976 mov r0, sb | r0 = sb;
0x0006c978 add r1, pc | r1 = 0xd99ae;
0x0006c97a bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x0006c97e cmp r0, 0 |
| if (r0 == 0) {
0x0006c980 beq.w 0x6ce5a | goto label_36;
| }
0x0006c984 movs r3, 1 | r3 = 1;
0x0006c986 str r3, [r7, 0xc] | var_ch_2 = r3;
| }
| label_13:
0x0006c988 ldr.w r8, [r7, 0x40] | r8 = var_40h;
0x0006c98c cmp.w r8, 0 |
| if (r8 == 0) {
0x0006c990 beq.w 0x6cdfe | goto label_37;
| }
0x0006c994 mov r0, sb | r0 = sb;
0x0006c996 movs r2, 1 | r2 = 1;
0x0006c998 mov r1, r8 | r1 = r8;
0x0006c99a bl 0x75208 | fcn_00075208 (r0, r1, r2);
0x0006c99c ldc2 p4, c6, [r5], -0x1e0 | __asm ("ldc2 p4, c6, [r5], -aav.0x000000ff");
0x0006c9a0 cmp r0, 0 |
| if (r0 == 0) {
0x0006c9a2 beq.w 0x6cb96 | goto label_38;
| }
0x0006c9a6 mov r0, r8 | r0 = r8;
0x0006c9a8 blx 0x9200 | fcn_00009200 ();
0x0006c9ac ldr.w r3, [pc, 0x684] |
0x0006c9b0 str r0, [r7, 0x3c] | var_38h_2 = r0;
0x0006c9b2 add r3, pc | r3 = 0xd99ea;
0x0006c9b4 str r3, [r7, 0x20] | var_20h = r3;
0x0006c9b6 ldr.w r3, [pc, 0x680] |
0x0006c9ba add r3, pc | r3 = 0xd99f8;
0x0006c9bc str r3, [r7, 4] | var_4h_2 = r3;
0x0006c9be ldr.w r3, [pc, 0x67c] |
0x0006c9c2 add r3, pc | r3 = 0xd9a04;
0x0006c9c4 str r3, [r7, 8] | var_8h_2 = r3;
0x0006c9c6 movs r3, 0x20 | r3 = 0x20;
0x0006c9c8 str r3, [r7, 0x14] | var_14h = r3;
0x0006c9ca add.w r3, r7, 0x48 | r3 += var_48h;
0x0006c9ce str r3, [r7, 0x24] | var_24h = r3;
0x0006c9d0 add.w r3, r7, 0x44 | r3 += var_44h;
0x0006c9d4 str r3, [r7, 0x28] | var_28h = r3;
| do {
| label_6:
0x0006c9d6 movs r1, 1 | r1 = 1;
0x0006c9d8 ldr r2, [r7, 0x24] | r2 = var_24h;
0x0006c9da ldr r0, [r7, 0x28] | r0 = var_28h;
0x0006c9dc bl 0x75070 | r0 = fcn_00075070 (r0, r1, r2);
0x0006c9e0 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x0006c9e2 blt.w 0x6ce90 | goto label_39;
| }
| if (r1 == r0) {
0x0006c9e6 beq.w 0x6ce9a | goto label_40;
| }
0x0006c9ea ldr r0, [r7, 0x48] | r0 = var_48h;
0x0006c9ec blx 0x8f2c | r0 = fcn_00008f2c ();
0x0006c9f0 mov r8, r0 | r8 = r0;
0x0006c9f2 cmp r0, 0 |
| if (r0 == 0) {
0x0006c9f4 beq.w 0x6cf92 | goto label_41;
| }
0x0006c9f8 ldr r1, [r7, 0x20] | r1 = var_20h;
0x0006c9fa bl 0x754cc | r0 = fcn_000754cc (r0, r1);
0x0006c9fe mov sb, r0 | sb = r0;
0x0006ca00 cmp r0, 0 |
| if (r0 != 0) {
0x0006ca02 bne.w 0x6cbe6 | goto label_42;
| }
0x0006ca06 ldr r0, [r7, 0x3c] | r0 = var_38h_2;
0x0006ca08 bl 0x75cb4 | r0 = fcn_00075cb4 (r0);
0x0006ca0c cmp r0, 0 |
| if (r0 == 0) {
0x0006ca0e bne 0x6caa6 |
0x0006ca10 ldr r0, [r7, 0x3c] | r0 = var_38h_2;
0x0006ca12 bl 0x75000 | r0 = fcn_00075000 ();
0x0006ca16 mov sb, r0 | sb = r0;
0x0006ca18 cmp r0, 0 |
| if (r0 == 0) {
0x0006ca1a beq.w 0x6cfce | goto label_43;
| }
0x0006ca1e ldrd sl, fp, [r7, 0x3c] | __asm ("ldrd sl, fp, [var_38h_2]");
0x0006ca22 cmp.w fp, 0 |
| if (fp != 0) {
0x0006ca26 beq 0x6ca40 |
0x0006ca28 movs r2, 1 | r2 = 1;
0x0006ca2a mov r1, fp | r1 = fp;
0x0006ca2c mov r0, sl | r0 = sl;
0x0006ca2e bl 0x75208 | r0 = fcn_00075208 (r0, r1, r2);
| if (r0 == 0) {
0x0006ca32 cbz r0, 0x6ca40 | goto label_44;
| }
0x0006ca34 mov r1, fp | r1 = fp;
0x0006ca36 movs r2, 1 | r2 = 1;
0x0006ca38 mov r0, sb | r0 = sb;
0x0006ca3a bl 0x75208 | r0 = fcn_00075208 (r0, r1, r2);
| if (r0 == 0) {
0x0006ca3e cbz r0, 0x6caa6 | goto label_45;
| }
| }
| label_44:
0x0006ca40 mov r0, sl | r0 = sl;
0x0006ca42 blx 0x8dac | fcn_00008dac ();
0x0006ca46 ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x0006ca48 str.w sb, [r7, 0x3c] | __asm ("str.w sb, [var_38h_2]");
0x0006ca4c cmp r3, 0 |
| if (r3 != 0) {
0x0006ca4e bne.w 0x6cfd8 | goto label_46;
| }
0x0006ca52 ldr.w r1, [pc, 0x5ec] |
0x0006ca56 mov.w r2, 0x288000 | r2 = 0x288000;
0x0006ca58 asrs r2, r4, 8 | r2 = r4 >> 8;
0x0006ca5a mov r0, r6 | r0 = r6;
0x0006ca5c add r1, pc | r1 = 0xd9aa2;
0x0006ca5e blx 0x8e0c | r0 = fcn_00008e0c ();
0x0006ca62 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0006ca66 blt.w 0x6cf74 | goto label_47;
| }
0x0006ca6a ldr r3, [r7, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x0006ca6c cbz r3, 0x6ca9a |
0x0006ca6e add.w sl, r7, 0xb8 | sl += var_b8h;
0x0006ca72 mov r1, sl | r1 = sl;
0x0006ca74 blx 0x9020 | r0 = fcn_00009020 ();
0x0006ca78 cmp r0, 0 |
| if (r0 < 0) {
0x0006ca7a blt.w 0x6cf74 | goto label_47;
| }
0x0006ca7e add.w fp, r7, 0x50 |
0x0006ca82 mov r1, sl | r1 = sl;
0x0006ca84 mov r0, fp | r0 = fp;
0x0006ca86 bl 0x6c84c | fcn_0006c84c (r0, r1);
0x0006ca88 cdp2 p8, 0xe, c2, c1, c0, 0 | __asm ("cdp2 p8, 0xe, c2, c1, c0, 0");
| if (r0 != 0) {
0x0006ca8c bne.w 0x6ce6e | goto label_48;
| }
0x0006ca90 mov r1, sl | r1 = sl;
0x0006ca92 mov r0, fp | r0 = fp;
0x0006ca94 movs r2, 0x68 | r2 = 0x68;
0x0006ca96 blx 0x8f9c | fcn_00008f9c ();
| }
0x0006ca9a mov r0, r6 | r0 = r6;
0x0006ca9c mov r6, sb | r6 = sb;
0x0006ca9e mov.w sb, 0 | sb = 0;
0x0006caa2 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
| }
| label_45:
0x0006caa6 mov.w r0, -1 | r0 = -1;
0x0006caaa bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006caae mov r0, sb | r0 = sb;
0x0006cab0 mov.w sb, -1 | sb = -1;
0x0006cab4 blx 0x8dac | fcn_00008dac ();
| label_5:
0x0006cab8 mov r0, sb | r0 = sb;
0x0006caba bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006cabe mov r0, r8 | r0 = r8;
0x0006cac0 blx 0x8dac | fcn_00008dac ();
0x0006cac4 b 0x6c9d6 |
| } while (1);
| label_30:
0x0006cac6 ldr r3, [r7, 0x30] | r3 = var_30h;
0x0006cac8 orrs r3, r6 | r3 |= r6;
| if (r3 == r6) {
0x0006caca beq.w 0x6c91c | goto label_1;
| }
0x0006cace cmp r6, 0 |
| if (r6 == 0) {
0x0006cad0 beq.w 0x6c934 | goto label_2;
| }
0x0006cad4 add.w r1, r7, 0x40 | r1 += var_40h;
0x0006cad8 mov r0, r6 | r0 = r6;
0x0006cada bl 0x74e1c | r0 = fcn_00074e1c (r0, r1);
0x0006cade subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x0006cae0 blt 0x6cb78 | goto label_32;
| }
0x0006cae2 ldr.w r1, [pc, 0x560] |
0x0006cae6 ldr r0, [r7, 0x40] | r0 = var_40h;
0x0006cae8 add r1, pc | r1 = 0xd9b32;
0x0006caea bl 0x7a954 | fcn_0007a954 (r0, r1);
0x0006caee ldr r0, [r7, 0x40] | r0 = var_40h;
0x0006caf0 bl 0x75130 | fcn_00075130 (r0);
0x0006caf2 invalid |
| if (r1 >= r0) {
0x0006caf6 bpl.w 0x6c934 | goto label_2;
| }
0x0006cafa ldrb r3, [r4] | r3 = *(r4);
0x0006cafc cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x0006cafe bne.w 0x6c8ae | goto label_0;
| }
0x0006cb02 ldr r6, [r7, 0x40] | r6 = var_40h;
0x0006cb04 mov r3, r4 | r3 = r4;
| do {
0x0006cb06 mov r4, r3 | r4 = r3;
0x0006cb08 adds r3, 1 | r3++;
0x0006cb0a ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0006cb0c cmp r2, 0x2f |
0x0006cb0e beq 0x6cb06 |
| } while (r2 == 0x2f);
0x0006cb10 cmp r6, 0 |
| if (r6 == 0) {
0x0006cb12 beq.w 0x6c934 | goto label_2;
| }
0x0006cb16 ldrb r3, [r6] | r3 = *(r6);
0x0006cb18 cmp r3, 0 |
| if (r3 == 0) {
0x0006cb1a beq.w 0x6c934 | goto label_2;
| }
0x0006cb1e mov r0, r6 | r0 = r6;
0x0006cb20 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0006cb24 mov sb, r0 | sb = r0;
0x0006cb26 mov r0, r4 | r0 = r4;
0x0006cb28 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0006cb2c add.w r3, sb, r0 | r3 = sb + r0;
0x0006cb30 mov r8, r0 | r8 = r0;
0x0006cb32 adds r2, r3, 2 | r2 = r3 + 2;
0x0006cb34 cmp.w r2, 0x400000 |
| if (r2 > 0x400000) {
0x0006cb38 bhi.w 0x6cf5e | goto label_49;
| }
0x0006cb3c adds r3, 9 | r3 += 9;
0x0006cb3e mov r1, r6 | r1 = r6;
0x0006cb40 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0006cb44 sub.w sp, sp, r3 |
0x0006cb48 add r6, sp, 0x10 | r6 += var_10h;
0x0006cb4a mov r0, r6 | r0 = r6;
0x0006cb4c blx 0x8c38 | r0 = fcn_00008c38 ();
0x0006cb50 cmp r0, r6 |
0x0006cb52 mov r3, r0 | r3 = r0;
| if (r0 > r6) {
0x0006cb54 bhi 0x6cb5e | goto label_50;
| }
0x0006cb56 b 0x6cb6a | goto label_14;
| do {
0x0006cb58 cmp r6, r3 |
| if (r6 == r3) {
0x0006cb5a beq.w 0x6ce8c | goto label_51;
| }
| label_50:
0x0006cb5e ldrb r2, [r3, -0x1] | r2 = *((r3 - 0x1));
0x0006cb62 mov r0, r3 | r0 = r3;
0x0006cb64 subs r3, 1 | r3--;
0x0006cb66 cmp r2, 0x2f |
0x0006cb68 beq 0x6cb58 |
| } while (r2 == 0x2f);
| label_14:
0x0006cb6a mov r1, r4 | r1 = r4;
0x0006cb6c add.w r2, r8, 1 | r2 = r8 + 1;
0x0006cb70 mov r4, r6 | r4 = r6;
0x0006cb72 blx 0x8f9c | fcn_00008f9c ();
0x0006cb76 b 0x6c934 | goto label_2;
| label_32:
0x0006cb78 mov.w r6, -1 | r6 = -1;
0x0006cb7c b 0x6c8b6 | goto label_3;
| label_35:
0x0006cb7e add.w r1, r7, 0x50 | r1 += var_50h;
0x0006cb82 blx 0x9020 | r0 = fcn_00009020 ();
0x0006cb86 cmp r0, 0 |
| if (r0 >= 0) {
0x0006cb88 bge.w 0x6c964 | goto label_4;
| }
| label_34:
0x0006cb8c blx 0x9628 | r0 = fcn_00009628 ();
0x0006cb90 ldr r1, [r0] | r1 = *(r0);
0x0006cb92 rsbs r1, r1, 0 | r1 -= ;
0x0006cb94 b 0x6c8b6 | goto label_3;
| label_38:
0x0006cb96 tst.w r5, 0x80 |
0x0006cb9a ite ne |
| if ((r5 & 0x80) == 0) {
0x0006cb9c movne r5, 4 | r5 = 4;
| }
| if ((r5 & 0x80) != 0) {
0x0006cb9e moveq r5, 7 | r5 = 7;
| }
0x0006cba0 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0006cba4 cmp r0, r5 |
0x0006cba6 it lt |
| if (r0 < r5) {
0x0006cba8 mvnlt r1, 0x2b | r1 = ~0x2b;
| goto label_52;
| }
| if (r0 < r5) {
| label_52:
0x0006cbac blt.w 0x6c8b6 | goto label_3;
| }
0x0006cbb0 strd r4, r8, [sp, 8] | __asm ("strd r4, r8, [var_8h]");
0x0006cbb4 movs r1, 0x2c | r1 = 0x2c;
0x0006cbb6 ldr.w r2, [pc, 0x490] |
0x0006cbba movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x0006cbbe ldr.w ip, [pc, 0x48c] |
0x0006cbc2 mov r0, r5 | r0 = r5;
0x0006cbc4 ldr.w r4, [pc, 0x488] |
0x0006cbc8 movw r3, 0x387 | r3 = 0x387;
0x0006cbca adds r3, 0x87 | r3 += 0x87;
0x0006cbcc add r2, pc | r2 = 0xd9c1a;
0x0006cbce add ip, pc | ip = 0xd9c20;
0x0006cbd0 adds r2, 7 | r2 += 7;
0x0006cbd2 add r4, pc | r4 = 0xd9c26;
0x0006cbd4 strd r4, ip, [sp] | __asm ("strd r4, ip, [sp]");
0x0006cbd8 bl 0x71448 | r0 = fcn_00071448 ();
0x0006cbdc subs r1, r0, 0 | r1 = r0 - 0;
0x0006cbde it ge |
| if (r1 < r0) {
0x0006cbe0 mvnge r1, 0x55 | r1 = ~0x55;
| }
0x0006cbe4 b 0x6c8b6 | goto label_3;
| label_42:
0x0006cbe6 mov.w r2, 0x288000 | r2 = 0x288000;
0x0006cbea mov r1, r8 | r1 = r8;
0x0006cbec mov r0, r6 | r0 = r6;
0x0006cbee blx 0x8e0c | r0 = fcn_00008e0c ();
0x0006cbf2 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0006cbf6 blt.w 0x6cf34 | goto label_53;
| }
0x0006cbfa add.w sl, r7, 0xb8 | sl += var_b8h;
0x0006cbfe mov r1, sl | r1 = sl;
0x0006cc00 blx 0x9020 | r0 = fcn_00009020 ();
0x0006cc04 cmp r0, 0 |
| if (r0 < 0) {
0x0006cc06 blt.w 0x6cf54 | goto label_54;
| }
0x0006cc0a ldr r3, [r7, 0x18] | r3 = var_18h;
0x0006cc0c add.w fp, r7, 0x50 |
0x0006cc10 cmp r3, 0 |
| if (r3 != 0) {
0x0006cc12 bne.w 0x6cd44 | goto label_55;
| }
| label_7:
0x0006cc16 mov r1, sl | r1 = sl;
0x0006cc18 movs r2, 0x68 | r2 = 0x68;
0x0006cc1a mov r0, fp | r0 = fp;
0x0006cc1c blx 0x8f9c | fcn_00008f9c ();
0x0006cc20 lsls r1, r5, 0x1d | r1 = r5 << 0x1d;
| if (r1 < r5) {
0x0006cc22 bmi.w 0x6cd62 | goto label_56;
| }
| label_9:
0x0006cc26 ldr.w r3, [r7, 0xc8] | r3 = var_c8h;
0x0006cc2a and r3, r3, 0xf000 | r3 &= 0xf000;
0x0006cc2e cmp.w r3, 0xa000 |
| if (r3 != 0xa000) {
0x0006cc32 bne 0x6ccda | goto label_57;
| }
0x0006cc34 lsls r3, r5, 0x19 | r3 = r5 << 0x19;
| if (r3 < r5) {
0x0006cc36 bpl 0x6cc44 |
0x0006cc38 ldr r3, [r7, 0x44] | r3 = var_44h;
0x0006cc3a cmp r3, 0 |
| if (r3 == 0) {
0x0006cc3c beq 0x6ccda | goto label_57;
| }
0x0006cc3e ldrb r3, [r3] | r3 = *(r3);
0x0006cc40 cmp r3, 0 |
| if (r3 == 0) {
0x0006cc42 beq 0x6ccda | goto label_57;
| }
| }
0x0006cc44 movs r3, 0 | r3 = 0;
0x0006cc46 str r3, [r7, 0x4c] | var_4ch = r3;
0x0006cc48 ldr r3, [r7, 0x14] | r3 = var_14h;
0x0006cc4a subs r3, 1 | r3--;
0x0006cc4c str r3, [r7, 0x14] | var_14h = r3;
| if (r3 == 1) {
0x0006cc4e beq.w 0x6cfe4 | goto label_58;
| }
0x0006cc52 add.w r3, r7, 0x4c | r3 += var_4ch;
0x0006cc56 mov r1, r8 | r1 = r8;
0x0006cc58 mov r2, r3 | r2 = r3;
0x0006cc5a mov r0, r6 | r0 = r6;
0x0006cc5c str r3, [r7, 0x10] | var_10h_2 = r3;
0x0006cc5e bl 0x6bf2c | r0 = fcn_0006bf2c (r0, r1, r2);
0x0006cc62 subs r1, r0, 0 | r1 = r0 - 0;
0x0006cc64 ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x0006cc66 ldr r0, [r7, 0x4c] | r0 = var_4ch;
| if (r1 < r0) {
0x0006cc68 blt 0x6cd0a | goto label_12;
| }
0x0006cc6a cmp r0, 0 |
| if (r0 == 0) {
0x0006cc6c beq 0x6cd06 | goto label_59;
| }
0x0006cc6e ldrb r2, [r0] | r2 = *(r0);
0x0006cc70 cmp r2, 0 |
| if (r2 == 0) {
0x0006cc72 beq 0x6cd06 | goto label_59;
| }
0x0006cc74 cmp r2, 0x2f |
| if (r2 == 0x2f) {
0x0006cc76 beq.w 0x6ce0c | goto label_60;
| }
| label_11:
0x0006cc7a ldr r1, [r7, 0x44] | r1 = var_44h;
0x0006cc7c mov r0, r3 | r0 = r3;
0x0006cc7e mov.w r2, -1 | r2 = -1;
0x0006cc82 bl 0x74ccc | r0 = fcn_00074ccc ();
0x0006cc86 cmp r0, 0 |
| if (r0 == 0) {
0x0006cc88 beq.w 0x6cfec | goto label_61;
| }
0x0006cc8c ldr r0, [r7, 0x38] | r0 = var_38h;
0x0006cc8e blx 0x8dac | fcn_00008dac ();
0x0006cc92 ldr r3, [r7, 0x4c] | r3 = var_4ch;
0x0006cc94 str r3, [r7, 0x38] | var_38h = r3;
0x0006cc96 str r3, [r7, 0x44] | var_44h = r3;
0x0006cc98 ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x0006cc9a cmp r3, 0 |
| if (r3 == 0) {
0x0006cc9c beq.w 0x6cab8 | goto label_5;
| }
| label_23:
0x0006cca0 mov r0, sb | r0 = sb;
0x0006cca2 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006cca6 mov r0, r8 | r0 = r8;
0x0006cca8 blx 0x8dac | fcn_00008dac ();
0x0006ccac ldr r3, [r7, 0x30] | r3 = var_30h;
0x0006ccae mov r1, r3 | r1 = r3;
0x0006ccb0 cmp r3, 0 |
| if (r3 == 0) {
0x0006ccb2 beq.w 0x6c8b6 | goto label_3;
| }
0x0006ccb6 movs r1, 1 | r1 = 1;
0x0006ccb8 ldr r0, [r7, 0x28] | r0 = var_28h;
0x0006ccba add.w r2, r7, 0xb8 | r2 += var_b8h;
0x0006ccbe bl 0x75070 | r0 = fcn_00075070 (r0, r1, r2);
0x0006ccc2 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 < r0) {
0x0006ccc4 blt.w 0x6c8b6 | goto label_3;
| }
0x0006ccc8 ldr r0, [r7, 0x3c] | r0 = var_38h_2;
0x0006ccca it eq |
| if (r1 != r0) {
0x0006cccc streq r1, [r7, 0x3c] | var_38h_2 = r1;
| }
| if (r1 != r0) {
0x0006ccce bne.w 0x6cf18 | goto label_62;
| }
| label_18:
0x0006ccd2 ldr r3, [r7, 0x30] | r3 = var_30h;
0x0006ccd4 movs r1, 0 | r1 = 0;
0x0006ccd6 str r0, [r3] | *(r3) = r0;
0x0006ccd8 b 0x6c8b6 | goto label_3;
| label_57:
0x0006ccda mov.w r2, -1 | r2 = -1;
0x0006ccde mov r1, r8 | r1 = r8;
0x0006cce0 add.w r0, r7, 0x3c | r0 += var_38h_2;
0x0006cce4 bl 0x74ccc | r0 = fcn_00074ccc ();
0x0006cce8 cmp r0, 0 |
| if (r0 == 0) {
0x0006ccea beq.w 0x6cfc8 | goto label_63;
| }
0x0006ccee mov r0, r6 | r0 = r6;
0x0006ccf0 mov r6, sb | r6 = sb;
0x0006ccf2 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006ccf6 mov.w r0, -1 | r0 = -1;
0x0006ccf8 adds r0, 0xff | r0 += 0xff;
0x0006ccfa bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006ccfe mov r0, r8 | r0 = r8;
0x0006cd00 blx 0x8dac | fcn_00008dac ();
0x0006cd04 b 0x6c9d6 | goto label_6;
| label_59:
0x0006cd06 mvn r1, 0x15 | r1 = ~0x15;
| label_12:
0x0006cd0a str r1, [r7, 0x34] | var_34h = r1;
0x0006cd0c blx 0x8dac | fcn_00008dac ();
0x0006cd10 ldr r1, [r7, 0x34] | r1 = var_34h;
| label_8:
0x0006cd12 mov r0, sb | r0 = sb;
0x0006cd14 str r1, [r7, 0x34] | var_34h = r1;
0x0006cd16 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006cd1a mov r0, r8 | r0 = r8;
0x0006cd1c blx 0x8dac | fcn_00008dac ();
0x0006cd20 ldr r1, [r7, 0x34] | r1 = var_34h;
0x0006cd22 b 0x6c8b6 | goto label_3;
| label_31:
0x0006cd24 lsls r1, r5, 9 | r1 = r5 << 9;
0x0006cd26 mov r0, r4 | r0 = r4;
0x0006cd28 and r1, r1, 0x8000 | r1 &= 0x8000;
0x0006cd2c orr r1, r1, 0x280000 | r1 |= 0x280000;
0x0006cd30 blx 0x91b4 | r0 = fcn_000091b4 ();
0x0006cd34 cmp r0, 0 |
| if (r0 < 0) {
0x0006cd36 blt 0x6cdf0 | goto label_64;
| }
0x0006cd38 ldr r3, [r7, 0x34] | r3 = var_34h;
0x0006cd3a mov.w r6, -1 | r6 = -1;
0x0006cd3e movs r1, 0 | r1 = 0;
0x0006cd40 str r0, [r3] | *(r3) = r0;
0x0006cd42 b 0x6c8b6 | goto label_3;
| label_55:
0x0006cd44 mov r1, sl | r1 = sl;
0x0006cd46 mov r0, fp | r0 = fp;
0x0006cd48 bl 0x6c84c | r0 = fcn_0006c84c (r0, r1);
0x0006cd4c cmp r0, 0 |
| if (r0 == 0) {
0x0006cd4e beq.w 0x6cc16 | goto label_7;
| }
0x0006cd52 mov r1, sb | r1 = sb;
0x0006cd54 mov r3, r5 | r3 = r5;
0x0006cd56 mov r2, r4 | r2 = r4;
0x0006cd58 mov r0, r6 | r0 = r6;
0x0006cd5a bl 0x6bcd0 | r0 = fcn_0006bcd0 (r0, r1, r2, r3);
0x0006cd5e mov r1, r0 | r1 = r0;
0x0006cd60 b 0x6cd12 | goto label_8;
| label_56:
0x0006cd62 movw r1, 0x187 | r1 = 0x187;
0x0006cd66 mov r0, sb | r0 = sb;
0x0006cd68 bl 0x7a0f4 | r0 = fcn_0007a0f4 (r0);
0x0006cd6c cmp r0, 0 |
| if (r0 <= 0) {
0x0006cd6e ble.w 0x6cc26 | goto label_9;
| }
0x0006cd72 lsls r2, r5, 0x18 | r2 = r5 << 0x18;
0x0006cd74 mov.w r3, 0 | r3 = 0;
0x0006cd78 str r3, [r7, 0x4c] | var_4ch = r3;
| if (r2 >= r5) {
0x0006cd7a bpl.w 0x6d01c | goto label_65;
| }
0x0006cd7e add.w r1, r7, 0x4c | r1 += var_4ch;
0x0006cd82 mov r0, sb | r0 = sb;
0x0006cd84 bl 0x6a120 | r0 = fcn_0006a120 (r0, r1, r2);
0x0006cd88 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0006cd8c cmp r0, 3 |
| if (r0 <= 3) {
0x0006cd8e ble.w 0x6d01c | goto label_65;
| }
0x0006cd92 ldr r1, [r7, 0x4c] | r1 = var_4ch;
0x0006cd94 cmp r1, 0 |
| if (r1 == 0) {
0x0006cd96 beq.w 0x6d000 | goto label_66;
| }
| label_24:
0x0006cd9a ldr r2, [pc, 0x2b8] |
0x0006cd9c ldr r3, [pc, 0x2b8] |
0x0006cd9e ldr r0, [pc, 0x2bc] |
0x0006cda0 str r1, [sp, 8] | var_8h = r1;
0x0006cda2 add r2, pc | r2 = 0xd9dfc;
0x0006cda4 add r3, pc | r3 = 0xd9e00;
0x0006cda6 movs r1, 0x42 | r1 = 0x42;
0x0006cda8 add r0, pc | r0 = 0xd9e0a;
0x0006cdaa movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x0006cdae str r3, [sp, 4] | var_4h = r3;
0x0006cdb0 adds r2, 7 | r2 += 7;
0x0006cdb2 str r0, [sp] | *(sp) = r0;
0x0006cdb4 mov.w r3, 0x304 | r3 = 0x304;
0x0006cdb8 movs r0, 4 | r0 = 4;
0x0006cdba str r4, [sp, 0xc] | var_ch = r4;
0x0006cdbc bl 0x71448 | r0 = fcn_00071448 ();
0x0006cdc0 subs r1, r0, 0 | r1 = r0 - 0;
0x0006cdc2 it ge |
| if (r1 < r0) {
0x0006cdc4 mvnge r1, 0x55 | r1 = ~0x55;
| }
0x0006cdc6 lsls r5, r2, 5 | r5 = r2 << 5;
| label_25:
0x0006cdc8 ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x0006cdca str r1, [r7, 0x34] | var_34h = r1;
0x0006cdcc blx 0x8dac | fcn_00008dac ();
0x0006cdd0 ldr r1, [r7, 0x34] | r1 = var_34h;
0x0006cdd2 b 0x6cd12 | goto label_8;
| label_33:
0x0006cdd4 ldr r0, [pc, 0x288] |
0x0006cdd6 add r0, pc | r0 = 0xd9e3a;
0x0006cdd8 b 0x6c94c | goto label_10;
| label_26:
0x0006cdda ldr r1, [pc, 0x288] |
0x0006cddc movw r2, 0x312 | r2 = 0x312;
0x0006cde0 ldr r3, [pc, 0x284] |
0x0006cde2 ldr r0, [pc, 0x288] |
0x0006cde4 add r1, pc | r1 = 0xd9e4e;
0x0006cde6 add r3, pc | r3 = 0xd9e52;
0x0006cde8 adds r1, 7 | r1 += 7;
0x0006cdea add r0, pc | r0 = 0xd9e5c;
0x0006cdec bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_64:
0x0006cdf0 blx 0x9628 | r0 = fcn_00009628 ();
0x0006cdf4 ldr r1, [r0] | r1 = *(r0);
0x0006cdf6 mov.w r6, -1 | r6 = -1;
0x0006cdfa rsbs r1, r1, 0 | r1 -= ;
0x0006cdfc b 0x6c8b6 | goto label_3;
| label_37:
0x0006cdfe ldr r0, [pc, 0x270] |
0x0006ce00 str.w sb, [r7, 0x44] | __asm ("str.w sb, [var_44h]");
0x0006ce04 add r0, pc | r0 = 0xd9e7a;
0x0006ce06 blx 0x9200 | fcn_00009200 ();
0x0006ce08 ldrd lr, r5, [ip, 0x33c]! | __asm ("ldrd lr, r5, aav.0x000000ff!");
| label_60:
0x0006ce0c mov r0, r6 | r0 = r6;
0x0006ce0e str r3, [r7, 0x10] | var_10h_2 = r3;
0x0006ce10 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006ce14 ldr r0, [r7, 0x40] | r0 = var_40h;
0x0006ce16 ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x0006ce18 cmp r0, 0 |
| if (r0 == 0) {
0x0006ce1a beq 0x6cf0e | goto label_67;
| }
| label_16:
0x0006ce1c mov.w r1, 0x284000 | r1 = 0x284000;
0x0006ce20 str r3, [r7, 0x10] | var_10h_2 = r3;
0x0006ce22 blx 0x908c | r0 = fcn_0000908c ();
0x0006ce26 subs r6, r0, 0 | r6 = r0 - 0;
0x0006ce28 ldr r3, [r7, 0x10] | r3 = var_10h_2;
| if (r6 < r0) {
0x0006ce2a blt.w 0x6cff4 | goto label_68;
| }
0x0006ce2e ldr r2, [r7, 0x18] | r2 = var_18h;
0x0006ce30 cmp r2, 0 |
| if (r2 != 0) {
0x0006ce32 bne 0x6cedc | goto label_69;
| }
| label_15:
0x0006ce34 ldr r1, [r7, 0x40] | r1 = var_40h;
0x0006ce36 cmp r1, 0 |
| if (r1 == 0) {
0x0006ce38 beq 0x6cf14 | goto label_70;
| }
0x0006ce3a ldrb r2, [r1] | r2 = *(r1);
0x0006ce3c cmp r2, 0 |
0x0006ce3e ldr r2, [r7, 8] | r2 = var_8h_2;
0x0006ce40 it eq |
| if (r2 != 0) {
0x0006ce42 moveq r1, r2 | r1 = r2;
| }
| label_17:
0x0006ce44 add.w r0, r7, 0x3c | r0 += var_38h_2;
0x0006ce48 str r3, [r7, 0x10] | var_10h_2 = r3;
0x0006ce4a bl 0x7adac | fcn_0007adac (r0, r1);
0x0006ce4e subs r1, r0, 0 | r1 -= var_38h_2;
0x0006ce50 ldr r3, [r7, 0x10] | r3 = var_10h_2;
| if (r1 >= var_38h_2) {
0x0006ce52 bge.w 0x6cc7a | goto label_11;
| }
0x0006ce56 ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x0006ce58 b 0x6cd0a | goto label_12;
| label_36:
0x0006ce5a ldr r1, [pc, 0x218] |
0x0006ce5c mov r0, sb | r0 = sb;
0x0006ce5e add r1, pc | r1 = 0xd9ed8;
0x0006ce60 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x0006ce64 subs r3, r0, 0 | r3 = r0 - 0;
0x0006ce66 it ne |
| if (r3 == r0) {
0x0006ce68 movne r3, 1 | r3 = 1;
| }
0x0006ce6a str r3, [r7, 0xc] | var_ch_2 = r3;
0x0006ce6c b 0x6c988 | goto label_13;
| label_48:
0x0006ce6e mov r1, sb | r1 = sb;
0x0006ce70 mov r3, r5 | r3 = r5;
0x0006ce72 mov r2, r4 | r2 = r4;
0x0006ce74 mov r0, r6 | r0 = r6;
0x0006ce76 bl 0x6bcd0 | r0 = fcn_0006bcd0 (r0, r1, r2, r3);
0x0006ce7a mov r1, r0 | r1 = r0;
| label_19:
0x0006ce7c mov r0, sb | r0 = sb;
0x0006ce7e str r1, [r7, 0x34] | var_34h = r1;
0x0006ce80 mov.w sb, -1 | sb = -1;
0x0006ce84 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006ce88 ldr r1, [r7, 0x34] | r1 = var_34h;
0x0006ce8a b 0x6cd12 | goto label_8;
| label_51:
0x0006ce8c mov r0, r6 | r0 = r6;
0x0006ce8e b 0x6cb6a | goto label_14;
| label_39:
0x0006ce90 mov.w sb, -1 | sb = -1;
0x0006ce94 mov.w r8, 0 | r8 = 0;
0x0006ce98 b 0x6cd12 | goto label_8;
| label_40:
0x0006ce9a ldr r3, [r7, 0xc] | r3 = var_ch_2;
0x0006ce9c cmp r3, 0 |
| if (r3 != 0) {
0x0006ce9e bne 0x6cf7e | goto label_71;
| }
| label_20:
0x0006cea0 mov.w sb, -1 | sb = -1;
0x0006cea4 mov.w r8, 0 | r8 = 0;
0x0006cea8 movs r4, 1 | r4 = 1;
| label_22:
0x0006ceaa mov r0, sb | r0 = sb;
0x0006ceac bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006ceb0 mov r0, r8 | r0 = r8;
0x0006ceb2 blx 0x8dac | fcn_00008dac ();
0x0006ceb6 ldr r3, [r7, 0x30] | r3 = var_30h;
| if (r3 != 0) {
0x0006ceb8 cbz r3, 0x6cec4 |
0x0006ceba ldr r3, [r7, 0x3c] | r3 = var_38h_2;
0x0006cebc ldr r2, [r7, 0x30] | r2 = var_30h;
0x0006cebe str r3, [r2] | *(r2) = r3;
0x0006cec0 movs r3, 0 | r3 = 0;
0x0006cec2 str r3, [r7, 0x3c] | var_38h_2 = r3;
| }
0x0006cec4 ldr r3, [r7, 0x34] | r3 = var_34h;
| if (r3 != 0) {
0x0006cec6 cbz r3, 0x6ced0 |
0x0006cec8 ldr r3, [r7, 0x34] | r3 = var_34h;
0x0006ceca str r6, [r3] | *(r3) = r6;
0x0006cecc mov.w r6, -1 | r6 = -1;
| }
0x0006ced0 ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x0006ced2 cmp r3, 0 |
0x0006ced4 ite eq |
| if (r3 != 0) {
0x0006ced6 moveq r1, r4 | r1 = r4;
| }
| if (r3 == 0) {
0x0006ced8 movne r1, 1 | r1 = 1;
| }
0x0006ceda b 0x6c8b6 | goto label_3;
| label_69:
0x0006cedc mov r1, sl | r1 = sl;
0x0006cede str r3, [r7, 0x10] | var_10h_2 = r3;
0x0006cee0 blx 0x9020 | r0 = fcn_00009020 ();
0x0006cee4 cmp r0, 0 |
0x0006cee6 ldr r3, [r7, 0x10] | r3 = var_10h_2;
| if (r0 < 0) {
0x0006cee8 blt.w 0x6cff4 | goto label_68;
| }
0x0006ceec mov r1, sl | r1 = sl;
0x0006ceee mov r0, fp | r0 = fp;
0x0006cef0 str r3, [r7, 0x10] | var_10h_2 = r3;
0x0006cef2 bl 0x6c84c | fcn_0006c84c (r0, r1);
0x0006cef6 ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x0006cef8 cmp r0, 0 |
| if (r0 != 0) {
0x0006cefa bne.w 0x6d00a | goto label_72;
| }
0x0006cefe mov r1, sl | r1 = sl;
0x0006cf00 mov r0, fp | r0 = fp;
0x0006cf02 movs r2, 0x68 | r2 = 0x68;
0x0006cf04 str r3, [r7, 0x10] | var_10h_2 = r3;
0x0006cf06 blx 0x8f9c | fcn_00008f9c ();
0x0006cf0a ldr r3, [r7, 0x10] | r3 = var_10h_2;
0x0006cf0c b 0x6ce34 | goto label_15;
| label_67:
0x0006cf0e ldr r0, [pc, 0x168] |
0x0006cf10 add r0, pc | r0 = 0xd9f8e;
0x0006cf12 b 0x6ce1c | goto label_16;
| label_70:
0x0006cf14 ldr r1, [r7, 4] | r1 = var_4h_2;
0x0006cf16 b 0x6ce44 | goto label_17;
| label_62:
0x0006cf18 mov r1, r0 | r1 = r0;
0x0006cf1a ldr.w r2, [r7, 0xb8] | r2 = var_b8h;
0x0006cf1e mov.w r3, -1 | r3 = -1;
0x0006cf22 movs r0, 0 | r0 = 0;
0x0006cf24 bl 0x74ccc | fcn_00074ccc ();
0x0006cf28 mvn r1, 0xb | r1 = ~0xb;
0x0006cf2c cmp r0, 0 |
| if (r0 != 0) {
0x0006cf2e bne.w 0x6ccd2 | goto label_18;
| }
0x0006cf32 b 0x6c8b6 | goto label_3;
| label_53:
0x0006cf34 blx 0x9628 | r0 = fcn_00009628 ();
0x0006cf38 ldr r4, [r0] | r4 = *(r0);
0x0006cf3a ldr r2, [r7, 0x1c] | r2 = var_1ch;
0x0006cf3c sub.w r3, r4, 2 | r3 = r4 - 2;
0x0006cf40 clz r3, r3 | r3 &= r3;
0x0006cf44 cmp r2, 0 |
0x0006cf46 lsr.w r3, r3, 5 | r3 >>= 5;
0x0006cf4a it eq |
| if (r2 != 0) {
0x0006cf4c moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x0006cf4e cbnz r3, 0x6cf9c | goto label_73;
| }
| label_21:
0x0006cf50 rsbs r1, r4, 0 | r1 = r4 - ;
0x0006cf52 b 0x6cd12 | goto label_8;
| label_54:
0x0006cf54 blx 0x9628 | r0 = fcn_00009628 ();
0x0006cf58 ldr r1, [r0] | r1 = *(r0);
0x0006cf5a rsbs r1, r1, 0 | r1 -= ;
0x0006cf5c b 0x6cd12 | goto label_8;
| label_49:
0x0006cf5e ldr r1, [pc, 0x11c] |
0x0006cf60 movw r2, 0x36f | r2 = 0x36f;
0x0006cf64 ldr r3, [pc, 0x118] |
0x0006cf66 ldr r0, [pc, 0x11c] |
0x0006cf68 add r1, pc | r1 = 0xd9fea;
0x0006cf6a add r3, pc | r3 = 0xd9fee;
0x0006cf6c adds r1, 7 | r1 += 7;
0x0006cf6e add r0, pc | r0 = 0xd9ff8;
0x0006cf70 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_47:
0x0006cf74 blx 0x9628 | r0 = fcn_00009628 ();
0x0006cf78 ldr r1, [r0] | r1 = *(r0);
0x0006cf7a rsbs r1, r1, 0 | r1 -= ;
0x0006cf7c b 0x6ce7c | goto label_19;
| label_71:
0x0006cf7e ldr r2, [pc, 0x108] |
0x0006cf80 mov r3, r1 | r3 = r1;
0x0006cf82 add.w r0, r7, 0x3c | r0 += var_38h_2;
0x0006cf86 add r2, pc | r2 = 0xda014;
0x0006cf88 bl 0x7ac34 | r0 = fcn_0007ac34 (r0);
0x0006cf8c mov r8, r0 | r8 = r0;
0x0006cf8e cmp r0, 0 |
| if (r0 != 0) {
0x0006cf90 bne 0x6cea0 | goto label_20;
| }
| label_41:
0x0006cf92 mov.w sb, -1 | sb = -1;
0x0006cf96 mvn r1, 0xb | r1 = ~0xb;
0x0006cf9a b 0x6cd12 | goto label_8;
| label_73:
0x0006cf9c ldr r5, [r7, 0x44] | r5 = var_44h;
| if (r5 == 0) {
0x0006cf9e cbz r5, 0x6cfb0 | goto label_74;
| }
0x0006cfa0 ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x0006cfa2 cbz r3, 0x6cfb0 | goto label_74;
| }
0x0006cfa4 movs r1, 0 | r1 = 0;
0x0006cfa6 mov r0, r5 | r0 = r5;
0x0006cfa8 bl 0x75754 | r0 = fcn_00075754 (r0, r1);
0x0006cfac cmp r0, 0 |
| if (r0 == 0) {
0x0006cfae beq 0x6cf50 | goto label_21;
| }
| label_74:
0x0006cfb0 mov r2, r5 | r2 = r5;
0x0006cfb2 mov.w r3, -1 | r3 = -1;
0x0006cfb6 mov r1, r8 | r1 = r8;
0x0006cfb8 add.w r0, r7, 0x3c | r0 += var_38h_2;
0x0006cfbc movs r4, 0 | r4 = 0;
0x0006cfbe bl 0x74ccc | r0 = fcn_00074ccc ();
0x0006cfc2 cmp r0, 0 |
| if (r0 != 0) {
0x0006cfc4 bne.w 0x6ceaa | goto label_22;
| }
| label_63:
0x0006cfc8 mvn r1, 0xb | r1 = ~0xb;
0x0006cfcc b 0x6cd12 | goto label_8;
| label_43:
0x0006cfce mov.w sb, -1 | sb = -1;
0x0006cfd2 mvn r1, 0xb | r1 = ~0xb;
0x0006cfd6 b 0x6ce7c | goto label_19;
| label_46:
0x0006cfd8 mov.w r0, -1 | r0 = -1;
0x0006cfdc mov sb, r0 | sb = r0;
0x0006cfde bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006cfe2 b 0x6cca0 | goto label_23;
| label_58:
0x0006cfe4 ldr r0, [r7, 0x14] | r0 = var_14h;
0x0006cfe6 mvn r1, 0x27 | r1 = ~0x27;
0x0006cfea b 0x6cd0a | goto label_12;
| label_61:
0x0006cfec ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x0006cfee mvn r1, 0xb | r1 = ~0xb;
0x0006cff2 b 0x6cd0a | goto label_12;
| label_68:
0x0006cff4 blx 0x9628 | r0 = fcn_00009628 ();
0x0006cff8 ldr r1, [r0] | r1 = *(r0);
0x0006cffa ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x0006cffc rsbs r1, r1, 0 | r1 -= ;
0x0006cffe b 0x6cd0a | goto label_12;
| label_66:
0x0006d000 ldr r1, [pc, 0x88] |
0x0006d002 add r1, pc | r1 = 0xda092;
0x0006d004 b 0x6cd9a | goto label_24;
| label_29:
0x0006d006 blx 0x927c | fprintf_chk ()
| label_72:
0x0006d00a mov r1, r6 | r1 = r6;
0x0006d00c mov r3, r5 | r3 = r5;
0x0006d00e mov r2, r4 | r2 = r4;
0x0006d010 mov r0, sb | r0 = sb;
0x0006d012 bl 0x6bcd0 | r0 = fcn_0006bcd0 (r0, r1, r2, r3);
0x0006d016 mov r1, r0 | r1 = r0;
0x0006d018 ldr r0, [r7, 0x4c] | r0 = var_4ch;
0x0006d01a b 0x6cd0a | goto label_12;
| label_65:
0x0006d01c mvn r1, 0x41 | r1 = ~0x41;
0x0006d020 b 0x6cdc8 | goto label_25;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6d090 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.0006d090 () | void fcn_0006d090 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_14h;
| int16_t var_84h;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006d090 push {r4, r5, r6, lr} |
0x0006d092 mov r6, r2 | r6 = r2;
0x0006d094 ldr r4, [pc, 0x74] |
0x0006d096 sub sp, 8 |
0x0006d098 movs r3, 0 | r3 = 0;
0x0006d09a mov r5, r1 | r5 = r1;
0x0006d09c ldr r2, [pc, 0x70] | r2 = *(0x6d110);
0x0006d09e mov r1, sp | r1 = sp;
0x0006d0a0 add r4, pc | r4 = 0xda1b0;
0x0006d0a2 ldr r2, [r4, r2] |
0x0006d0a4 ldr r2, [r2] | r2 = *(0xda1b0);
0x0006d0a6 str r2, [sp, 4] | var_4h = r2;
0x0006d0a8 mov.w r2, 0 | r2 = 0;
0x0006d0ac str r3, [sp] | *(sp) = r3;
0x0006d0ae bl 0x75a54 | fcn_00075a54 (r0, r1);
0x0006d0b0 ldc2l p14, c1, [r1], {4} | __asm ("ldc2l p14, c1, [r1], {4}");
| if (r3 < 0) {
0x0006d0b4 blt 0x6d0dc | goto label_0;
| }
0x0006d0b6 mov.w r3, 0x4000 | r3 = 0x4000;
0x0006d0ba ldr r0, [sp] | r0 = *(sp);
0x0006d0bc mov r2, r3 | r2 = r3;
0x0006d0be movt r3, 0x60 | r3 = (r3 & 0xFFFF) | 0x600000;
0x0006d0c2 ands r3, r5 | r3 &= r5;
0x0006d0c4 movt r2, 0x40 | r2 = (r2 & 0xFFFF) | 0x400000;
0x0006d0c8 cmp r3, r2 |
0x0006d0ca mov r2, r6 | r2 = r6;
0x0006d0cc it ne |
| if (r3 == r2) {
0x0006d0ce orrne r5, r5, 0x4000 | r5 |= 0x4000;
| }
0x0006d0d2 mov r1, r5 | r1 = r5;
0x0006d0d4 blx 0x908c | r0 = fcn_0000908c ();
0x0006d0d8 subs r4, r0, 0 | r4 = r0 - 0;
0x0006d0da blt 0x6d0fc |
| while (1) {
| label_0:
0x0006d0dc ldr r0, [sp] | r0 = *(sp);
0x0006d0de blx 0x8dac | fcn_00008dac ();
0x0006d0e2 ldr r2, [pc, 0x30] |
0x0006d0e4 ldr r3, [pc, 0x28] | r3 = *(0x6d110);
0x0006d0e6 add r2, pc | r2 = 0xda200;
0x0006d0e8 ldr r3, [r2, r3] | r3 = *(0xda200);
0x0006d0ea ldr r2, [r3] | r2 = *(0xda200);
0x0006d0ec ldr r3, [sp, 4] | r3 = var_4h;
0x0006d0ee eors r2, r3 | r2 ^= r3;
0x0006d0f0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006d0f4 bne 0x6d106 | goto label_1;
| }
0x0006d0f6 mov r0, r4 | r0 = r4;
0x0006d0f8 add sp, 8 |
0x0006d0fa pop {r4, r5, r6, pc} |
0x0006d0fc blx 0x9628 | r0 = fcn_00009628 ();
0x0006d100 ldr r4, [r0] | r4 = *(r0);
0x0006d102 rsbs r4, r4, 0 | r4 -= ;
0x0006d104 b 0x6d0dc |
| }
| label_1:
0x0006d106 blx 0x927c | fprintf_chk ()
0x0006d10a nop |
0x0006d10c rev r4, r4 | r4 = SWAP32 (r4);
0x0006d10e movs r5, r0 | r5 = r0;
0x0006d110 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006d112 movs r0, r0 |
| if (r6 != 0) {
0x0006d114 cbnz r6, 0x6d14e | void (*0x6d14e)() ();
| }
0x0006d116 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6d118 */
| #include <stdint.h>
|
; (fcn) fcn.0006d118 () | void fcn_0006d118 (int16_t arg1) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_28h;
| int16_t var_84h;
| r0 = arg1;
0x0006d118 push {r4, r5, r6, lr} |
0x0006d11a movs r6, 0 | r6 = 0;
0x0006d11c ldr r4, [pc, 0x140] |
0x0006d11e sub sp, 0x88 |
0x0006d120 ldr r1, [pc, 0x140] | r1 = *(0x6d264);
0x0006d122 add r4, pc | r4 = 0xda386;
0x0006d124 ldr r1, [r4, r1] |
0x0006d126 subs r4, r0, 0 | r4 = r0 - 0;
0x0006d128 ldr r1, [r1] | r1 = *(0xda386);
0x0006d12a str r1, [sp, 0x84] | var_84h = r1;
0x0006d12c mov.w r1, 0 | r1 = 0;
0x0006d12e lsls r0, r0, 4 | r0 <<= 4;
0x0006d130 str r6, [sp, 0x14] | var_14h = r6;
| if (r0 < r0) {
0x0006d132 blt 0x6d1d8 | goto label_4;
| }
0x0006d134 add r1, sp, 0x18 | r1 += var_18h;
0x0006d136 blx 0x9020 | r0 = fcn_00009020 ();
0x0006d13a cmp r0, 0 |
| if (r0 < 0) {
0x0006d13c blt 0x6d1a0 | goto label_5;
| }
0x0006d13e ldr r1, [sp, 0x28] | r1 = var_28h;
0x0006d140 and r1, r1, 0xf000 | r1 &= 0xf000;
0x0006d144 cmp.w r1, 0x8000 |
| if (r1 == 0x8000) {
0x0006d148 beq 0x6d1ae | goto label_6;
| }
0x0006d14a cmp.w r1, 0x4000 |
| if (r1 != 0x4000) {
0x0006d14e bne 0x6d22e | goto label_7;
| }
0x0006d150 ldr r1, [pc, 0x114] |
0x0006d152 mov r0, r4 | r0 = r4;
0x0006d154 mov r3, r6 | r3 = r6;
0x0006d156 mov.w r2, 0x84000 | r2 = 0x84000;
0x0006d15a add r1, pc | r1 = 0xda3c6;
0x0006d15c blx 0x8e0c | r0 = fcn_00008e0c ();
0x0006d160 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0006d162 blt 0x6d196 | goto label_8;
| }
| label_1:
0x0006d164 mov r0, r4 | r0 = r4;
0x0006d166 blx 0x8c9c | r0 = fcn_00008c9c ();
0x0006d16a cmp r0, 0 |
| if (r0 < 0) {
0x0006d16c blt 0x6d196 | goto label_8;
| }
| label_2:
0x0006d16e movs r5, 0 | r5 = 0;
| do {
| label_0:
0x0006d170 mov r0, r4 | r0 = r4;
0x0006d172 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0006d176 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006d178 blx 0x8dac | fcn_00008dac ();
0x0006d17c ldr r2, [pc, 0xec] |
0x0006d17e ldr r3, [pc, 0xe4] | r3 = *(0x6d266);
0x0006d180 add r2, pc | r2 = 0xda3f0;
0x0006d182 ldr r3, [r2, r3] | r3 = *(0xda3f0);
0x0006d184 ldr r2, [r3] | r2 = *(0xda3f0);
0x0006d186 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0006d188 eors r2, r3 | r2 ^= r3;
0x0006d18a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006d18e bne 0x6d25c | goto label_9;
| }
0x0006d190 mov r0, r5 | r0 = r5;
0x0006d192 add sp, 0x88 |
0x0006d194 pop {r4, r5, r6, pc} |
| label_8:
0x0006d196 blx 0x9628 | r0 = fcn_00009628 ();
0x0006d19a ldr r5, [r0] | r5 = *(r0);
0x0006d19c rsbs r5, r5, 0 | r5 -= ;
0x0006d19e b 0x6d170 |
| } while (1);
| label_5:
0x0006d1a0 blx 0x9628 | r0 = fcn_00009628 ();
0x0006d1a4 ldr r5, [r0] | r5 = *(r0);
0x0006d1a6 mov.w r4, -1 | r4 = -1;
0x0006d1aa rsbs r5, r5, 0 | r5 -= ;
0x0006d1ac b 0x6d170 | goto label_0;
| label_6:
0x0006d1ae add r1, sp, 0x14 | r1 += var_14h;
0x0006d1b0 mov r0, r4 | r0 = r4;
0x0006d1b2 bl 0x6a120 | r0 = fcn_0006a120 (r0, r1, r2);
0x0006d1b6 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0006d1b8 blt 0x6d1ee | goto label_10;
| }
0x0006d1ba ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006d1bc cmp r0, 0 |
| if (r0 == 0) {
0x0006d1be beq 0x6d23e | goto label_11;
| }
0x0006d1c0 ldrb r3, [r0] | r3 = *(r0);
0x0006d1c2 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x0006d1c4 bne 0x6d252 | goto label_12;
| }
0x0006d1c6 mov r2, r6 | r2 = r6;
0x0006d1c8 mov.w r1, 0x88000 | r1 = 0x88000;
0x0006d1cc bl 0x6d090 | r0 = fcn_0006d090 (r0, r1, r2);
0x0006d1d0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0006d1d2 bge 0x6d164 | goto label_1;
| }
0x0006d1d4 mov r5, r4 | r5 = r4;
0x0006d1d6 b 0x6d170 | goto label_0;
| label_4:
0x0006d1d8 ldr r1, [pc, 0x94] |
0x0006d1da movw r2, 0x56a | r2 = 0x56a;
0x0006d1de ldr r3, [pc, 0x94] |
0x0006d1e0 ldr r0, [pc, 0x94] |
0x0006d1e2 add r1, pc | r1 = 0xda456;
0x0006d1e4 add r3, pc | r3 = 0xda45e;
0x0006d1e6 adds r1, 7 | r1 += 7;
0x0006d1e8 add r0, pc | r0 = 0xda464;
0x0006d1ea bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_10:
0x0006d1ee bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0006d1f2 cmp r0, 6 |
| if (r0 > 6) {
0x0006d1f4 ble 0x6d222 |
0x0006d1f6 cmn.w r5, 0x26 |
| if (r5 == 0x26) {
0x0006d1fa beq 0x6d238 | goto label_13;
| }
0x0006d1fc ldr r3, [pc, 0x7c] |
0x0006d1fe add r3, pc | r3 = 0xda47e;
| label_3:
0x0006d200 ldr r2, [pc, 0x7c] |
0x0006d202 ldr r0, [pc, 0x80] |
0x0006d204 ldr r1, [pc, 0x80] |
0x0006d206 add r2, pc | r2 = 0xda48a;
0x0006d208 strd r4, r3, [sp, 8] | __asm ("strd r4, r3, [var_8h]");
0x0006d20c add r0, pc | r0 = 0xda496;
0x0006d20e movw r3, 0x574 | r3 = 0x574;
0x0006d212 add r1, pc | r1 = 0xda49e;
0x0006d214 adds r2, 7 | r2 += 7;
0x0006d216 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0006d21a mov r1, r5 | r1 = r5;
0x0006d21c movs r0, 7 | r0 = 7;
0x0006d21e bl 0x71448 | fcn_00071448 ();
| }
0x0006d222 cmn.w r5, 0x26 |
0x0006d226 mov.w r4, -1 | r4 = -1;
| if (r5 != 0x26) {
0x0006d22a bne 0x6d170 | goto label_0;
| }
0x0006d22c b 0x6d16e | goto label_2;
| label_7:
0x0006d22e mov.w r4, -1 | r4 = -1;
0x0006d232 mvn r5, 0x18 | r5 = ~0x18;
0x0006d236 b 0x6d170 | goto label_0;
| label_13:
0x0006d238 ldr r3, [pc, 0x50] |
0x0006d23a add r3, pc | r3 = 0xda4ca;
0x0006d23c b 0x6d200 | goto label_3;
| label_11:
0x0006d23e ldr r1, [pc, 0x50] |
0x0006d240 movs r2, 0x33 | r2 = 0x33;
0x0006d242 ldr r3, [pc, 0x50] |
0x0006d244 ldr r0, [pc, 0x50] |
0x0006d246 add r1, pc | r1 = 0xda4dc;
0x0006d248 add r3, pc | r3 = 0xda4e2;
0x0006d24a adds r1, 7 | r1 += 7;
0x0006d24c add r0, pc | r0 = 0xda4e8;
0x0006d24e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_12:
0x0006d252 mov.w r4, -1 | r4 = -1;
0x0006d256 mvn r5, 0x15 | r5 = ~0x15;
0x0006d25a b 0x6d170 | goto label_0;
| label_9:
0x0006d25c blx 0x927c | fprintf_chk ()
| if (r2 == 0) {
0x0006d260 cbnz r2, 0x6d28c |
0x0006d262 movs r5, r0 | r5 = r0;
0x0006d264 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006d266 movs r0, r0 |
| if (r0 != r0) {
0x0006d268 beq 0x6d280 |
0x0006d26a movs r2, r0 | r2 = r0;
| if (r4 != 0) {
0x0006d26c cbnz r4, 0x6d280 | goto label_14;
| }
0x0006d26e movs r5, r0 | r5 = r0;
0x0006d270 ldr r2, [r5, 0x38] | r2 = *((r5 + 0x38));
0x0006d272 movs r3, r0 | r3 = r0;
0x0006d274 ldr r4, [r5, 0x6c] | r4 = *((r5 + 0x6c));
0x0006d276 movs r3, r0 | r3 = r0;
0x0006d278 lsrs r4, r0, 0x19 | r4 = r0 >> 0x19;
0x0006d27a movs r3, r0 | r3 = r0;
0x0006d27c ldrsb r6, [r1, r3] | r6 = *((r1 + r3));
0x0006d27e movs r1, r0 | r1 = r0;
| }
| label_14:
0x0006d280 ldr r6, [r0, 0x38] | r6 = *((r0 + 0x38));
0x0006d282 movs r3, r0 | r3 = r0;
0x0006d284 ldr r4, [r5, 0x60] | r4 = *((r5 + 0x60));
0x0006d286 movs r3, r0 | r3 = r0;
0x0006d288 ldr r2, [r1, 0x74] | r2 = *((r1 + 0x74));
0x0006d28a movs r3, r0 | r3 = r0;
| }
0x0006d28c stm r6!, {r1, r2, r5} | *(r6!) = r1;
| *((r6! + 4)) = r2;
| *((r6! + 8)) = r5;
0x0006d28e movs r2, r0 | r2 = r0;
0x0006d290 movs r1, 0x72 | r1 = 0x72;
0x0006d292 movs r2, r0 | r2 = r0;
0x0006d294 ldr r4, [r7, 0x60] | r4 = *((r7 + 0x60));
0x0006d296 movs r3, r0 | r3 = r0;
0x0006d298 ldm r6, {r2, r6, r7} | r2 = *(r6);
| r6 = *((r6 + 4));
| r7 = *((r6 + 8));
0x0006d29a movs r1, r0 | r1 = r0;
0x0006d29c b.w 0x91a4 | return void (*0x91a4)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6d374 */
| #include <stdint.h>
|
; (fcn) fcn.0006d374 () | void fcn_0006d374 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_24h;
| r0 = arg1;
0x0006d374 ldr.w ip, [pc, 0x78] |
0x0006d378 movs r2, 0x24 | r2 = 0x24;
0x0006d37a ldr r3, [pc, 0x78] | r3 = *(0x6d3f6);
0x0006d37c movs r1, 0 | r1 = 0;
0x0006d37e push {r4, r5, lr} |
0x0006d380 sub sp, 0x2c |
0x0006d382 add ip, pc | ip = 0xda776;
0x0006d384 mov r4, r0 | r4 = r0;
0x0006d386 mov r5, sp | r5 = sp;
0x0006d388 ldr.w r3, [ip, r3] |
0x0006d38c mov r0, r5 | r0 = r5;
0x0006d38e ldr r3, [r3] | r3 = *(0xda776);
0x0006d390 str r3, [sp, 0x24] | var_24h = r3;
0x0006d392 mov.w r3, 0 | r3 = 0;
0x0006d396 blx 0x8c54 | fcn_00008c54 ();
| if (r4 != 0) {
0x0006d39a cbz r4, 0x6d3d8 |
0x0006d39c mov r0, r4 | r0 = r4;
0x0006d39e mov r2, r5 | r2 = r5;
0x0006d3a0 movw r1, 0x404 | r1 = 0x404;
0x0006d3a4 bl 0x6d2a0 | r0 = fcn_0006d2a0 (r0, r1, r2);
0x0006d3a8 adds r3, r0, 2 | r3 = r0 + 2;
0x0006d3aa mov r4, r0 | r4 = r0;
0x0006d3ac it eq |
| if (r3 != r0) {
0x0006d3ae moveq r4, 0 | r4 = 0;
| }
| if (r3 != r0) {
0x0006d3b0 beq 0x6d3b8 |
0x0006d3b2 cmp r4, 0 |
0x0006d3b4 it ge |
| if (r4 >= 0) {
0x0006d3b6 movge r4, 1 | r4 = 1;
| goto label_0;
| }
| }
| label_0:
0x0006d3b8 mov r0, r5 | r0 = r5;
0x0006d3ba blx 0x8e6c | fcn_00008e6c ();
0x0006d3be ldr r2, [pc, 0x38] |
0x0006d3c0 ldr r3, [pc, 0x30] | r3 = *(0x6d3f4);
0x0006d3c2 add r2, pc | r2 = 0xda7c0;
0x0006d3c4 ldr r3, [r2, r3] | r3 = *(0xda7c0);
0x0006d3c6 ldr r2, [r3] | r2 = *(0xda7c0);
0x0006d3c8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006d3ca eors r2, r3 | r2 ^= r3;
0x0006d3cc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006d3d0 bne 0x6d3ec | goto label_1;
| }
0x0006d3d2 mov r0, r4 | r0 = r4;
0x0006d3d4 add sp, 0x2c |
0x0006d3d6 pop {r4, r5, pc} |
| }
0x0006d3d8 ldr r1, [pc, 0x20] |
0x0006d3da movs r2, 0x36 | r2 = 0x36;
0x0006d3dc ldr r3, [pc, 0x20] |
0x0006d3de ldr r0, [pc, 0x24] |
0x0006d3e0 add r1, pc | r1 = 0xda7e0;
0x0006d3e2 add r3, pc | r3 = 0xda7e6;
0x0006d3e4 adds r1, 7 | r1 += 7;
0x0006d3e6 add r0, pc | r0 = 0xda7f0;
0x0006d3e8 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_1:
0x0006d3ec blx 0x927c | fprintf_chk ()
0x0006d3f0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6d6d4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006d6d4 () | void fcn_0006d6d4 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
0x0006d6d4 blmi 0x87ff58 | __asm ("blmi aav.0x0005b3e8");
0x0006d6d8 push {r4, r5, r6, lr} |
0x0006d6da sub sp, 0x38 |
0x0006d6dc add r2, pc | r2 += pc;
0x0006d6de mov r6, r1 | r6 = r1;
0x0006d6e0 mov r4, r0 | r4 = r0;
0x0006d6e2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006d6e4 ldr r3, [r3] | r3 = *(r3);
0x0006d6e6 str r3, [sp, 0x34] | var_34h = r3;
0x0006d6e8 mov.w r3, 0 | r3 = 0;
0x0006d6ec ldrb.w r3, [r0, 0x27] | r3 = *((r0 + 0x27));
0x0006d6f0 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
0x0006d6f2 it mi |
| if (r1 >= r3) {
0x0006d6f4 addmi r1, r0, 8 | r1 = r0 + 8;
| }
| if (r1 >= r3) {
0x0006d6f8 bmi 0x6d6fe |
0x0006d6fa ldr r1, [pc, 0x60] |
0x0006d6fc add r1, pc | r1 = 0xdae5e;
| }
0x0006d6fe mov r5, sp | r5 = sp;
0x0006d700 mov r0, r5 | r0 = r5;
0x0006d702 bl 0x78af4 | fcn_00078af4 (r0, r1);
0x0006d706 ldr r3, [r4] | r3 = *(r4);
0x0006d708 mov r1, r5 | r1 = r5;
0x0006d70a mov r0, r6 | r0 = r6;
0x0006d70c ldr r3, [r3] | r3 = *(r3);
0x0006d70e blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0006d710 mov r0, r5 | r0 = r5;
0x0006d712 bl 0x78e88 | fcn_00078e88 (r0, r1);
0x0006d716 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006d71a lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 >= r3) {
0x0006d71c bpl 0x6d740 | goto label_1;
| }
0x0006d71e ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
| do {
0x0006d720 movs r3, 0 | r3 = 0;
0x0006d722 bl 0x80fd8 | fcn_00080fd8 (r0, r1, r2, r3);
0x0006d726 mov r0, r2 | r0 = r2;
0x0006d728 ldr r2, [pc, 0x34] |
0x0006d72a ldr r3, [pc, 0x2c] | r3 = *(0x6d75a);
0x0006d72c add r2, pc | r2 = 0xdae90;
0x0006d72e ldr r3, [r2, r3] | r3 = *(0xdae90);
0x0006d730 ldr r2, [r3] | r2 = *(0xdae90);
0x0006d732 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0006d734 eors r2, r3 | r2 ^= r3;
0x0006d736 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006d73a bne 0x6d750 | goto label_2;
| }
0x0006d73c add sp, 0x38 |
0x0006d73e pop {r4, r5, r6, pc} |
| label_1:
0x0006d740 ldr r2, [pc, 0x20] |
0x0006d742 and r3, r3, 3 | r3 &= 3;
0x0006d746 add r2, pc | r2 = 0xdaeae;
0x0006d748 add.w r3, r2, r3, lsl 4 | r3 = r2 + (r3 << 4);
0x0006d74c ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0006d74e b 0x6d720 |
| } while (1);
| label_2:
0x0006d750 blx 0x927c | r0 = fprintf_chk ()
| if (r0 != 0) {
0x0006d754 cbz r0, 0x6d7d2 |
0x0006d756 movs r5, r0 | r5 = r0;
0x0006d758 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006d75a movs r0, r0 |
0x0006d75c stm r6!, {r2, r3, r5, r6, r7} | *(r6!) = r2;
| *((r6! + 4)) = r3;
| *((r6! + 8)) = r5;
| *((r6! + 12)) = r6;
| *((r6! + 16)) = r7;
0x0006d75e movs r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0006d760 cbz r0, 0x6d7ca |
0x0006d762 movs r5, r0 | r5 = r0;
0x0006d764 adr r5, 0x88 | r5 = 0x88;
0x0006d766 movs r5, r0 | r5 = r0;
| }
0x0006d7ca rors r0, r6 | __asm ("rors r0, r6");
0x0006d7cc mov r6, r0 | r6 = r0;
0x0006d7ce ldr r7, [pc, 0x90] | r7 = *(0x6d862);
0x0006d7d0 mov r5, r1 | r5 = r1;
| }
0x0006d7d2 bl 0x72738 | fcn_00072738 ();
0x0006d7d6 add r7, pc | r7 += pc;
0x0006d7d8 mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x0006d7da cbz r0, 0x6d82a | goto label_3;
| }
0x0006d7dc ldr r3, [pc, 0x84] |
0x0006d7de add r3, pc | r3 = 0xdb046;
0x0006d7e0 add.w r3, r3, r5, lsl 4 | r3 += (r5 << 4);
0x0006d7e4 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0006d7e6 bl 0x72710 | r0 = fcn_00072710 (r0);
0x0006d7ea mov r4, r0 | r4 = r0;
| do {
| if (r4 != 0) {
0x0006d7ec cbz r4, 0x6d824 |
0x0006d7ee ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006d7f2 bfi r3, r5, 0, 2 | value_0 = BIT_MASK (0, 2);
| value_1 = r5 & value_0;
| value_0 = ~value_0;
| r3 &= value_0;
| r3 |= value_1;
0x0006d7f6 bfi r3, r8, 6, 1 | value_2 = BIT_MASK (6, 1);
| value_3 = r8 & value_2;
| value_2 = ~value_2;
| r3 &= value_2;
| r3 |= value_3;
0x0006d7fa strb.w r3, [r4, 0x27] | *((r4 + 0x27)) = r3;
| if (r6 == 0) {
0x0006d7fe cbz r6, 0x6d842 | goto label_4;
| }
| label_0:
0x0006d800 cmp r5, 1 |
0x0006d802 mov r0, r4 | r0 = r4;
0x0006d804 it eq |
| if (r5 != 1) {
0x0006d806 moveq r3, -1 | r3 = -1;
| }
0x0006d80a str r6, [r4] | *(r4) = r6;
0x0006d80c it eq |
| if (r5 == 1) {
0x0006d80e strdeq r3, r3, [r4, 0x2c] | __asm ("strdeq r3, r3, [r4, 0x2c]");
| }
0x0006d812 bl 0x6d768 | fcn_0006d768 (r0);
0x0006d816 ldr r1, [pc, 0x50] |
0x0006d818 ldr r0, [pc, 0x50] |
0x0006d81a add r1, pc | r1 = 0xdb088;
0x0006d81c add r0, pc | r0 = 0xdb08c;
0x0006d81e blx 0x8d08 | r0 = fcn_00008d08 ();
| if (r0 != 0) {
0x0006d822 cbnz r0, 0x6d848 | goto label_5;
| }
| }
0x0006d824 mov r0, r4 | r0 = r4;
0x0006d826 pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x0006d82a ldr r3, [pc, 0x44] |
0x0006d82c lsls r2, r5, 4 | r2 = r5 << 4;
0x0006d82e movs r0, 1 | r0 = 1;
0x0006d830 add r3, pc | r3 = 0xdb0a6;
0x0006d832 ldr r1, [r3, r2] | r1 = *(0xdb0a6);
0x0006d834 cmp r1, 1 |
0x0006d836 it lo |
| if (r1 >= 1) {
0x0006d838 movlo r1, 1 | r1 = 1;
| }
0x0006d83a blx 0x8c20 | r0 = fcn_00008c20 ();
0x0006d83e mov r4, r0 | r4 = r0;
0x0006d840 b 0x6d7ec |
| } while (1);
| label_4:
0x0006d842 ldr r3, [pc, 0x30] | r3 = *(0x6d876);
0x0006d844 ldr r6, [r7, r3] | r6 = *((r7 + r3));
0x0006d846 b 0x6d800 | goto label_0;
| label_5:
0x0006d848 ldr r1, [pc, 0x2c] |
0x0006d84a movw r2, 0x319 | r2 = 0x319;
0x0006d84e ldr r3, [pc, 0x2c] |
0x0006d850 ldr r0, [pc, 0x2c] |
0x0006d852 add r1, pc | r1 = 0xdb0ce;
0x0006d854 add r3, pc | r3 = 0xdb0d6;
0x0006d856 adds r1, 7 | r1 += 7;
0x0006d858 add r0, pc | r0 = 0xdb0dc;
0x0006d85a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x0006d85e nop |
0x0006d860 uxtb r6, r5 | r6 = (int8_t) r5;
0x0006d862 movs r5, r0 | r5 = r0;
0x0006d864 adr r4, 0x228 | r4 = 0x228;
0x0006d866 movs r5, r0 | r5 = r0;
0x0006d868 mcr2 p15, 5, pc, c7, c15, 7 | __asm ("mcr2 p15, 5, pc, c7, c15, 7");
0x0006d86c stm r5!, {r3, r6, r7} | *(r5!) = r3;
| *((r5! + 4)) = r6;
| *((r5! + 8)) = r7;
0x0006d86e movs r5, r0 | r5 = r0;
0x0006d870 adr r4, 0xe0 | r4 = 0xe0;
0x0006d872 movs r5, r0 | r5 = r0;
0x0006d874 lsls r0, r0, 0x12 | r0 <<= 0x12;
0x0006d876 movs r0, r0 |
0x0006d878 ldr r6, [r7, 0x18] | r6 = *((r7 + 0x18));
0x0006d87a movs r3, r0 | r3 = r0;
0x0006d87c ldr r0, [r2, 0x4c] | r0 = imp.__progname;
0x0006d87e movs r3, r0 | r3 = r0;
0x0006d880 ldr r4, [r0, 0x20] | r4 = *(0x385);
0x0006d882 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6dd94 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006dd94 () | void fcn_0006dd94 (int16_t arg_120h, int16_t arg_230h, int16_t arg_2b8h, int16_t arg_2f8h, int16_t arg_308h, int16_t arg_320h, uint32_t arg1, uint32_t arg2) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_2ch;
| int16_t var_98h;
| r0 = arg1;
| r1 = arg2;
0x0006dd94 ldr r2, [pc, 0x350] |
0x0006dd96 ldr r3, [pc, 0x354] | r3 = *(0x6e0ee);
0x0006dd98 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006dd9c sub sp, 0x34 |
0x0006dd9e add r2, pc | r2 = 0xdbe8a;
0x0006dda0 ldr r3, [r2, r3] |
0x0006dda2 ldr r3, [r3] | r3 = *(0xdbe8a);
0x0006dda4 str r3, [sp, 0x2c] | var_2ch = r3;
0x0006dda6 mov.w r3, 0 | r3 = 0;
0x0006ddaa cmp r0, 0 |
| if (var_0h_2 == ) {
0x0006ddac beq.w 0x6df0e | goto label_9;
| }
0x0006ddb0 ldrb.w r3, [r0, 0x27] | r3 = *(var_0h_2x27);
0x0006ddb4 mov r4, r0 | r4 = r0;
0x0006ddb6 ands r0, r3, 4 | r0 = r3 & 4;
0x0006ddba and r5, r3, 3 | r5 = r3 & 3;
0x0006ddbe ite ne |
| if (r0 == r3) {
0x0006ddc0 ldrne r2, [r4, 0x18] | r2 = *((r4 + 0x18));
| }
| if (r0 == r3) {
0x0006ddc2 ubfxeq r2, r3, 3, 3 | __asm ("ubfxeq r2, r3, 3, 3");
| }
0x0006ddc6 adds r1, r1, r2 | r1 += r2;
| if (r1 >= r1) {
0x0006ddc8 bhs.w 0x6df08 | goto label_10;
| }
0x0006ddcc ubfx r3, r3, 2, 1 | r3 = (r3 >> 2) & ((1 << 1) - 1);
0x0006ddd0 cbz r3, 0x6de1e |
| while (r2 <= r1) {
0x0006ddd2 lsrs r3, r1, 2 | r3 = r1 >> 2;
0x0006ddd4 adds r3, r3, r1 | r3 += r1;
| if (r3 >= r3) {
0x0006ddd6 bhs.w 0x6df08 | goto label_10;
| }
0x0006ddda ldr r2, [pc, 0x314] |
0x0006dddc add r2, pc | r2 = 0xdbed2;
0x0006ddde add.w r2, r2, r5, lsl 4 | r2 += (r5 << 4);
0x0006dde2 ldr r6, [r2, 4] | r6 = *((r2 + 4));
0x0006dde4 add.w sb, r6, 1 | sb = r6 + 1;
0x0006dde8 umull r5, r1, sb, r3 | r5:r1 = sb * r3;
0x0006ddec subs r5, r1, 0 | r5 = r1 - 0;
0x0006ddee it ne |
| if (r5 == r1) {
0x0006ddf0 movne r5, 1 | r5 = 1;
| }
0x0006ddf2 cmp r1, 0 |
| if (r1 != 0) {
0x0006ddf4 bne.w 0x6df08 | goto label_10;
| }
| if (r0 != 0) {
0x0006ddf8 cbnz r0, 0x6de30 | goto label_11;
| }
0x0006ddfa ldr r7, [r2, 0xc] | r7 = *((r2 + 0xc));
0x0006ddfc cmp r3, r7 |
| if (r3 > r7) {
0x0006ddfe bhi.w 0x6df24 | goto label_12;
| }
| label_0:
0x0006de02 ldr r2, [pc, 0x2f0] |
0x0006de04 ldr r3, [pc, 0x2e4] | r3 = *(0x6e0ec);
0x0006de06 add r2, pc | r2 = 0xdbf00;
0x0006de08 ldr r3, [r2, r3] | r3 = *(0xdbf00);
0x0006de0a ldr r2, [r3] | r2 = *(0xdbf00);
0x0006de0c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0006de0e eors r2, r3 | r2 ^= r3;
0x0006de10 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006de14 bne.w 0x6e0e4 | goto label_13;
| }
0x0006de18 add sp, 0x34 |
0x0006de1a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006de1e ldr r2, [pc, 0x2d8] |
0x0006de20 add r2, pc | r2 = 0xdbf1e;
0x0006de22 add.w r2, r2, r5, lsl 4 | r2 += (r5 << 4);
0x0006de26 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x0006de28 cmp r2, r1 |
0x0006de2a blo 0x6ddd2 |
| }
0x0006de2c mov r0, r3 | r0 = r3;
0x0006de2e b 0x6de02 | goto label_0;
| label_11:
0x0006de30 ldr r7, [r4, 0x1c] | r7 = *((r4 + 0x1c));
0x0006de32 cmp r3, r7 |
0x0006de34 it ls |
| if (r3 <= r7) {
0x0006de36 movls r0, r5 | r0 = r5;
| goto label_14;
| }
| if (r3 < r7) {
| label_14:
0x0006de38 bls 0x6de02 | goto label_0;
| }
0x0006de3a mul r3, r3, sb | r3 *= sb;
0x0006de3e ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0006de40 cmp r3, 0x46 |
0x0006de42 it lo |
| if (r3 >= 0x46) {
0x0006de44 movlo r3, 0x46 | r3 = 0x46;
| }
0x0006de46 subs r3, 1 | r3--;
0x0006de48 clz r8, r3 | r8 &= r3;
0x0006de4c rsb.w r8, r8, 0x20 | r8 = 0x20 - r8;
| label_1:
0x0006de50 movs r3, 1 | r3 = 1;
0x0006de52 lsl.w r8, r3, r8 | r8 = r3 << r8;
0x0006de56 mov r1, r8 | r1 = r8;
0x0006de58 blx 0x94dc | r0 = fcn_000094dc ();
0x0006de5c mov sl, r0 | sl = r0;
0x0006de5e cmp r0, 0 |
| if (r0 == 0) {
0x0006de60 beq 0x6df08 | goto label_10;
| }
0x0006de62 ldrb.w fp, [r4, 0x27] | fp = *((r4 + 0x27));
0x0006de66 ubfx fp, fp, 2, 1 | fp = (fp >> 2) & ((1 << 1) - 1);
0x0006de6a cmp.w fp, 0 |
| if (fp == 0) {
0x0006de6e beq.w 0x6e08a | goto label_15;
| }
| label_6:
0x0006de72 ldr r0, [pc, 0x288] |
0x0006de74 movs r1, 0x10 | r1 = 0x10;
0x0006de76 add r0, pc | r0 = 0xdbf78;
0x0006de78 bl 0x784dc | fcn_000784dc (r0, r1);
0x0006de7c ldr r3, [pc, 0x280] |
0x0006de7e movs r2, 1 | r2 = 1;
0x0006de80 add r3, pc | r3 = 0xdbf84;
0x0006de82 strb r2, [r3] | *(r3) = r2;
| label_5:
0x0006de84 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006de88 ldr.w ip, [pc, 0x278] |
0x0006de8c orr r3, r3, 4 | r3 |= 4;
0x0006de90 add ip, pc | ip = 0xdbf98;
0x0006de92 strb.w r3, [r4, 0x27] | *((r4 + 0x27)) = r3;
0x0006de96 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x0006de9a str.w sl, [r4, 4] | __asm ("str.w sl, [r4, 4]");
0x0006de9e str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0006dea0 mov r0, r8 | r0 = r8;
0x0006dea2 str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
0x0006dea4 mov r1, sb | r1 = sb;
0x0006dea6 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0006dea8 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x0006deaa bl 0x80738 | fcn_00080738 (r0, r1, r2);
0x0006deae ldr r2, [pc, 0x258] |
0x0006deb0 mul r1, r7, r6 | r1 = r7 * r6;
0x0006deb4 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006deb8 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x0006deba add r2, pc |
0x0006debc and ip, r3, 3 |
0x0006dec0 add.w r2, r2, ip, lsl 4 |
0x0006dec4 ldr r2, [r2, 4] | r2 = *(0xdbfcc);
0x0006dec6 mla sb, r2, r0, sl | __asm ("mla sb, r2, r0, sl");
0x0006deca cmp r7, 0 |
| if (r7 == 0) {
0x0006decc beq 0x6df40 | goto label_16;
| }
0x0006dece subs r1, 1 | r1--;
0x0006ded0 add sl, r1 | sl += r1;
0x0006ded2 subs r1, r7, 1 | r1 = r7 - 1;
0x0006ded4 add r1, sb | r1 += sb;
0x0006ded6 add.w r2, sb, -1 | r2 = sb + -1;
0x0006deda b 0x6deea |
| while (r3 != 0xfe) {
0x0006dedc cmp r3, 0xff |
0x0006dede it ne |
| if (r3 == 0xff) {
0x0006dee0 movne r3, 0xfe | r3 = 0xfe;
| }
0x0006dee2 strb r3, [r2, 1]! | *((r2 += 1)) = r3;
0x0006dee6 cmp r1, r2 |
| if (r1 == r2) {
0x0006dee8 beq 0x6df3c | goto label_17;
| }
0x0006deea ldrb r3, [sl, 1]! | r3 = *((sl += 1));
0x0006deee cmp r3, 0xfe |
0x0006def0 bne 0x6dedc |
| }
0x0006def2 ldr r1, [pc, 0x218] |
0x0006def4 movw r2, 0x477 | r2 = 0x477;
0x0006def8 ldr r3, [pc, 0x214] |
0x0006defa ldr r0, [pc, 0x218] |
0x0006defc add r1, pc | r1 = 0xdc00e;
0x0006defe add r3, pc | r3 = 0xdc012;
0x0006df00 adds r1, 7 | r1 += 7;
0x0006df02 add r0, pc | r0 = 0xdc01c;
0x0006df04 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_10:
0x0006df08 mvn r0, 0xb | r0 = ~0xb;
0x0006df0c b 0x6de02 | goto label_0;
| label_9:
0x0006df0e ldr r1, [pc, 0x208] |
0x0006df10 movw r2, 0x432 | r2 = 0x432;
0x0006df14 ldr r3, [pc, 0x204] |
0x0006df16 ldr r0, [pc, 0x208] |
0x0006df18 add r1, pc | r1 = 0xdc036;
0x0006df1a add r3, pc | r3 = 0xdc03a;
0x0006df1c adds r1, 7 | r1 += 7;
0x0006df1e add r0, pc | r0 = 0xdc044;
0x0006df20 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_12:
0x0006df24 mul r3, r3, sb | r3 *= sb;
0x0006df28 mov r0, r5 | r0 = r5;
0x0006df2a cmp r3, 0x46 |
0x0006df2c it lo |
| if (r3 >= 0x46) {
0x0006df2e movlo r3, 0x46 | r3 = 0x46;
| }
0x0006df30 subs r3, 1 | r3--;
0x0006df32 clz r8, r3 | r8 &= r3;
0x0006df36 rsb.w r8, r8, 0x20 | r8 = 0x20 - r8;
0x0006df3a b 0x6de50 | goto label_1;
| label_17:
0x0006df3c ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
| label_16:
0x0006df40 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
0x0006df42 add.w r8, sb, r7 | r8 = sb + r7;
| if (r1 >= r3) {
0x0006df46 bpl.w 0x6e0c6 | goto label_18;
| }
0x0006df4a ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0006df4c subs r2, r2, r7 | r2 -= r7;
0x0006df4e mul r1, r2, r6 | r1 = r2 * r6;
| if (r1 != 0) {
0x0006df52 cbz r1, 0x6df8a |
0x0006df54 and r3, r3, 3 | r3 &= 3;
0x0006df58 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0006df5a lsls r3, r3, 4 | r3 <<= 4;
| label_7:
0x0006df5c ldr.w sl, [pc, 0x1c4] |
0x0006df60 mov r2, r1 | r2 = r1;
0x0006df62 movs r1, 0 | r1 = 0;
0x0006df64 add sl, pc | sl = 0xdc08c;
0x0006df66 add r3, sl | r3 += sl;
0x0006df68 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0006df6a mla r0, r3, r7, r0 | __asm ("mla r0, r3, r7, r0");
0x0006df6e blx 0x8c54 | fcn_00008c54 ();
0x0006df72 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006df76 lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
0x0006df78 itett pl |
| if (r2 < r3) {
0x0006df7a andpl r3, r3, 3 | r3 &= 3;
| }
| if (r2 < r3) {
0x0006df7e ldrpl r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
| }
| if (r2 < r3) {
0x0006df80 addpl sl, sl, r3, lsl 4 | sl += (r3 << 4);
| }
| if (r2 >= r3) {
0x0006df84 ldr.w r2, [sl, 0xc] | r2 = *(0xdc098);
| }
0x0006df88 subs r2, r2, r7 | r2 -= r7;
| }
| label_8:
0x0006df8a mov r0, r8 | r0 = r8;
0x0006df8c movs r1, 0xff | r1 = 0xff;
0x0006df8e blx 0x8c54 | fcn_00008c54 ();
0x0006df92 cmp r7, 0 |
| if (r7 == 0) {
0x0006df94 beq 0x6e05a | goto label_19;
| }
0x0006df96 ldr r3, [pc, 0x190] |
0x0006df98 add.w sb, sb, -1 | sb += -1;
0x0006df9c mov.w sl, 0 | sl = 0;
0x0006dfa0 add r3, pc | r3 = 0xdc0ce;
0x0006dfa2 str r3, [sp] | *(sp) = r3;
0x0006dfa4 ldr r3, [pc, 0x184] |
0x0006dfa6 add r3, pc | r3 = 0xdc0d6;
0x0006dfa8 str r3, [sp, 4] | var_4h_2 = r3;
0x0006dfaa b 0x6dfbc | goto label_20;
| label_2:
0x0006dfac adds r5, 1 | r5++;
0x0006dfae movs r3, 0 | r3 = 0;
0x0006dfb0 strb.w r3, [sb] | *(sb) = r3;
| do {
| label_3:
0x0006dfb4 add.w sl, sl, 1 | sl++;
0x0006dfb8 cmp sl, r7 |
| if (sl == r7) {
0x0006dfba beq 0x6e05c | goto label_21;
| }
| label_20:
0x0006dfbc ldrb r3, [sb, 1]! | r3 = *((sb += 1));
0x0006dfc0 cmp r3, 0xfe |
0x0006dfc2 bne 0x6dfb4 |
| } while (r3 != 0xfe);
0x0006dfc4 svc 0x54 | __asm ("svc 0x54");
0x0006dfc6 movs r6, r0 | r6 = r0;
0x0006dfc8 ldr r1, [sp] | r1 = *(sp);
0x0006dfca lsls r0, r3, 0x1d | r0 = r3 << 0x1d;
0x0006dfcc and r3, r3, 3 | r3 &= 3;
0x0006dfd0 ite mi |
| if (r0 >= r3) {
0x0006dfd2 ldrmi r2, [r4, 4] | r2 = *((r4 + 4));
| }
| if (r0 < r3) {
0x0006dfd4 addpl r2, r4, 4 | r2 = r4 + 4;
| }
0x0006dfd6 add.w r3, r1, r3, lsl 4 | r3 = r1 + (r3 << 4);
0x0006dfda mov r0, r4 | r0 = r4;
0x0006dfdc ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0006dfde mul r3, r3, sl | r3 *= sl;
0x0006dfe2 ldr r1, [r2, r3] | r1 = *((r2 + r3));
0x0006dfe4 bl 0x6d6d4 | r0 = fcn_0006d6d4 (r0, r1);
0x0006dfe8 cmp sl, r0 |
0x0006dfea mov r8, r0 | r8 = r0;
| if (sl == r0) {
0x0006dfec beq 0x6dfac | goto label_2;
| }
0x0006dfee mov.w r3, -1 | r3 = -1;
0x0006dff2 add.w fp, sp, 0xc |
0x0006dff6 mov r1, fp | r1 = fp;
0x0006dff8 strb.w r3, [sb] | *(sb) = r3;
0x0006dffc mov r2, sl | r2 = sl;
0x0006dffe mvn r3, 3 | r3 = ~3;
0x0006e002 mov r0, r4 | r0 = r4;
0x0006e004 bl 0x6da54 | fcn_0006da54 (r0, r1, r2, r3);
0x0006e006 stc2 p6, c4, [r6, -0x104]! | __asm ("stc2 p6, c4, aav.0x000000ff!");
| if (r6 != 0) {
0x0006e00a cbz r6, 0x6e032 |
0x0006e00c ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006e010 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
0x0006e012 ldr r1, [sp, 4] | r1 = var_4h_2;
0x0006e014 and r3, r3, 3 | r3 &= 3;
0x0006e018 ite mi |
| if (r1 >= r3) {
0x0006e01a ldrmi r2, [r4, 4] | r2 = *((r4 + 4));
| }
| if (r1 < r3) {
0x0006e01c addpl r2, r4, 4 | r2 = r4 + 4;
| }
0x0006e01e add.w r3, r1, r3, lsl 4 | r3 = r1 + (r3 << 4);
0x0006e022 movs r1, 0 | r1 = 0;
0x0006e024 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0006e026 mla r0, r0, sl, r2 | __asm ("mla r0, r0, sl, r2");
0x0006e02a mov r2, r6 | r2 = r6;
0x0006e02c blx 0x8c54 | fcn_00008c54 ();
0x0006e030 mov r1, r8 | r1 = r8;
| }
0x0006e032 mov r2, fp | r2 = fp;
0x0006e034 mov r0, r4 | r0 = r4;
0x0006e036 adds r5, 1 | r5++;
0x0006e038 bl 0x6dbd8 | r0 = fcn_0006dbd8 (r0, r1, r2, r3);
0x0006e03c cmp r0, 0 |
| if (r0 == 0) {
0x0006e03e beq 0x6dfb4 | goto label_3;
| }
| label_4:
0x0006e040 ldr r1, [sp, 0xc] | r1 = var_ch_2;
0x0006e042 mov r0, r4 | r0 = r4;
0x0006e044 bl 0x6d6d4 | fcn_0006d6d4 (r0, r1);
0x0006e048 mov r2, fp | r2 = fp;
0x0006e04a mov r1, r0 | r1 = r0;
0x0006e04c mov r0, r4 | r0 = r4;
0x0006e04e adds r5, 1 | r5++;
0x0006e050 bl 0x6dbd8 | r0 = fcn_0006dbd8 (r0, r1, r2, r3);
0x0006e054 cmp r0, 0 |
| if (r0 == 0) {
0x0006e056 beq 0x6dfb4 | goto label_3;
| }
0x0006e058 b 0x6e040 | goto label_4;
| label_19:
0x0006e05a mov r5, r7 | r5 = r7;
| label_21:
0x0006e05c ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006e060 lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
0x0006e062 ite mi |
| if (r2 >= r3) {
0x0006e064 ldrmi r3, [r4, 0x18] | r3 = *((r4 + 0x18));
| }
| if (r2 >= r3) {
0x0006e066 ubfxpl r3, r3, 3, 3 | __asm ("ubfxpl r3, r3, 3, 3");
| }
0x0006e06a cmp r3, r5 |
0x0006e06c it eq |
| if (r3 == r5) {
0x0006e06e moveq r0, 1 | r0 = 1;
| goto label_22;
| }
| if (r3 == r5) {
| label_22:
0x0006e070 beq.w 0x6de02 | goto label_0;
| }
0x0006e074 ldr r1, [pc, 0xb8] |
0x0006e076 movw r2, 0x4a9 | r2 = 0x4a9;
0x0006e07a ldr r3, [pc, 0xb8] |
0x0006e07c ldr r0, [pc, 0xb8] |
0x0006e07e add r1, pc | r1 = 0xdc1b2;
0x0006e080 add r3, pc | r3 = 0xdc1ba;
0x0006e082 adds r1, 7 | r1 += 7;
0x0006e084 add r0, pc | r0 = 0xdc1c0;
0x0006e086 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_15:
0x0006e08a mul r2, r7, sb | r2 = r7 * sb;
0x0006e08e adds r1, r4, 4 | r1 = r4 + 4;
0x0006e090 blx 0x8f9c | fcn_00008f9c ();
0x0006e094 ldr r3, [pc, 0xa4] |
0x0006e096 ldrb.w r1, [r4, 0x27] | r1 = *((r4 + 0x27));
0x0006e09a str.w fp, [r4, 0x20] | __asm ("str.w fp, [r4, 0x20]");
0x0006e09e add r3, pc | r3 = 0xdc1de;
0x0006e0a0 ldrb r3, [r3] | r3 = *(r3);
0x0006e0a2 mov r2, r1 | r2 = r1;
0x0006e0a4 bfi r2, fp, 3, 3 | value_0 = BIT_MASK (3, 3);
| value_1 = fp & value_0;
| value_0 = ~value_0;
| r2 &= value_0;
| r2 |= value_1;
0x0006e0a8 ubfx r1, r1, 3, 3 | r1 = (r1 >> 3) & ((1 << 3) - 1);
0x0006e0ac strb.w r2, [r4, 0x27] | *((r4 + 0x27)) = r2;
0x0006e0b0 ubfx r2, r2, 2, 1 | r2 = (r2 >> 2) & ((1 << 1) - 1);
0x0006e0b4 eor r3, r3, 1 | r3 ^= 1;
0x0006e0b8 str r1, [r4, 0x18] | *((r4 + 0x18)) = r1;
0x0006e0ba orrs r3, r2 | r3 |= r2;
0x0006e0bc uxtb r3, r3 | r3 = (int8_t) r3;
0x0006e0be cmp r3, 0 |
| if (r3 == 0) {
0x0006e0c0 beq.w 0x6de84 | goto label_5;
| }
0x0006e0c4 b 0x6de72 | goto label_6;
| label_18:
0x0006e0c6 ldr r2, [pc, 0x78] |
0x0006e0c8 and r3, r3, 3 | r3 &= 3;
0x0006e0cc lsls r3, r3, 4 | r3 <<= 4;
0x0006e0ce adds r0, r4, 4 | r0 = r4 + 4;
0x0006e0d0 add r2, pc |
0x0006e0d2 add r2, r3 | r2 += r3;
0x0006e0d4 ldr r2, [r2, 0xc] | r2 = *(0xdc222);
0x0006e0d6 subs r2, r2, r7 | r2 -= r7;
0x0006e0d8 mul r1, r2, r6 | r1 = r2 * r6;
0x0006e0dc cmp r1, 0 |
| if (r1 != 0) {
0x0006e0de bne.w 0x6df5c | goto label_7;
| }
0x0006e0e2 b 0x6df8a | goto label_8;
| label_13:
0x0006e0e4 blx 0x927c | fprintf_chk ()
0x0006e0e8 add r5, sp, 0x98 | r5 += var_98h;
0x0006e0ea movs r5, r0 | r5 = r0;
0x0006e0ec lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006e0ee movs r0, r0 |
0x0006e0f0 ldr r6, [sp, 0x230] | r6 = *(arg_230h);
0x0006e0f2 movs r5, r0 | r5 = r0;
0x0006e0f4 add r4, sp, 0x2f8 | r4 += arg_2f8h;
0x0006e0f6 movs r5, r0 | r5 = r0;
0x0006e0f8 ldr r6, [sp, 0x120] | r6 = *(arg_120h);
0x0006e0fa movs r5, r0 | r5 = r0;
0x0006e0fc itte pl |
| if (r5 < r0) {
0x0006e0fe movpl r5, r0 | r5 = r0;
| }
| if (r5 >= r0) {
0x0006e100 hintpl 6 | __asm ("hintpl 6");
| }
| if (r5 >= r0) {
0x0006e102 movmi r5, r0 | r5 = r0;
| }
0x0006e104 sev | __asm ("sev");
0x0006e106 movs r5, r0 | r5 = r0;
0x0006e108 ldr r5, [sp, 0x2b8] | r5 = *(arg_2b8h);
0x0006e10a movs r5, r0 | r5 = r0;
0x0006e10c str r4, [r2, 0x30] | *((r2 + 0x30)) = r4;
0x0006e10e movs r3, r0 | r3 = r0;
0x0006e110 str r6, [r1, 0x58] | *((r1 + 0x58)) = r6;
0x0006e112 movs r3, r0 | r3 = r0;
0x0006e114 str r2, [r3, 0x3c] | *((r3 + 0x3c)) = r2;
0x0006e116 movs r3, r0 | r3 = r0;
0x0006e118 str r0, [r7, 0x2c] | *((r7 + 0x2c)) = r0;
0x0006e11a movs r3, r0 | r3 = r0;
0x0006e11c str r2, [r6, 0x54] | *((r6 + 0x54)) = r2;
0x0006e11e movs r3, r0 | r3 = r0;
0x0006e120 ldm r0!, {r1, r2, r6, r7} | r1 = *(r0!);
| r2 = *((r0! + 4));
| r6 = *((r0! + 8));
| r7 = *((r0! + 12));
0x0006e122 movs r2, r0 | r2 = r0;
0x0006e124 ldr r5, [sp, 0x10] | r5 = var_10h_2;
0x0006e126 movs r5, r0 | r5 = r0;
0x0006e128 ldr r4, [sp, 0x320] | r4 = *(arg_320h);
0x0006e12a movs r5, r0 | r5 = r0;
0x0006e12c ldr r4, [sp, 0x308] | r4 = *(arg_308h);
0x0006e12e movs r5, r0 | r5 = r0;
0x0006e130 str r2, [r2, 0x18] | *((r2 + 0x18)) = r2;
0x0006e132 movs r3, r0 | r3 = r0;
0x0006e134 str r4, [r1, 0x40] | *((r1 + 0x40)) = r4;
0x0006e136 movs r3, r0 | r3 = r0;
0x0006e138 str r0, [r7, 0x24] | *((r7 + 0x24)) = r0;
0x0006e13a movs r3, r0 | r3 = r0;
0x0006e13c pop {r1, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6e910 */
| #include <stdint.h>
|
; (fcn) fcn.0006e910 () | void fcn_0006e910 (int16_t arg_50h, uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int32_t var_4h_2;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006e910 ssub8mi fp, r5, r0 | __asm ("ssub8mi fp, r5, r0");
0x0006e914 ldr r2, [pc, 0x98] |
0x0006e916 sub sp, 0x2c |
0x0006e918 ldr r3, [pc, 0x98] | r3 = *(0x6e9b4);
0x0006e91a add r2, pc | r2 = 0xdd2ce;
0x0006e91c ldr r3, [r2, r3] |
0x0006e91e ldr r3, [r3] | r3 = *(0xdd2ce);
0x0006e920 str r3, [sp, 0x24] | var_24h = r3;
0x0006e922 mov.w r3, 0 | r3 = 0;
0x0006e926 cmp r0, 0 |
| if (r0 != 0) {
0x0006e928 beq 0x6e996 |
0x0006e92a mov r6, r1 | r6 = r1;
0x0006e92c mov r4, r0 | r4 = r0;
0x0006e92e bl 0x6d6d4 | fcn_0006d6d4 (r0, r1);
0x0006e932 mov r2, r6 | r2 = r6;
0x0006e934 mov r1, r0 | r1 = r0;
0x0006e936 mov r7, r0 | r7 = r0;
0x0006e938 mov r0, r4 | r0 = r4;
0x0006e93a bl 0x6d954 | r0 = fcn_0006d954 (r0, r1, r2);
0x0006e93e adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 != r0) {
0x0006e940 beq 0x6e984 |
0x0006e942 ldrb.w r2, [r4, 0x27] | r2 = *((r4 + 0x27));
0x0006e946 lsls r3, r2, 0x1d | r3 = r2 << 0x1d;
0x0006e948 ldr r3, [pc, 0x6c] |
0x0006e94a and r2, r2, 3 | r2 &= 3;
0x0006e94e ite mi |
| if (r3 >= r2) {
0x0006e950 ldrmi r4, [r4, 4] | r4 = *((r4 + 4));
| }
| if (r3 < r2) {
0x0006e952 addpl r4, 4 | r4 += 4;
| }
0x0006e954 add r3, pc | r3 = 0xdd310;
0x0006e956 add.w r3, r3, r2, lsl 4 | r3 += (r2 << 4);
0x0006e95a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0006e95c mla r0, r3, r0, r4 | __asm ("mla r0, r3, r0, r4");
0x0006e960 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0006e962 cmp r3, r5 |
0x0006e964 ite eq |
| if (r3 != r5) {
0x0006e966 moveq r0, 0 | r0 = 0;
| }
| if (r3 == r5) {
0x0006e968 mvnne r0, 0x10 | r0 = ~0x10;
| }
0x0006e96c ldr r2, [pc, 0x4c] |
0x0006e96e ldr r3, [pc, 0x44] | r3 = *(0x6e9b6);
0x0006e970 add r2, pc | r2 = 0xdd330;
0x0006e972 ldr r3, [r2, r3] | r3 = *(0xdd330);
0x0006e974 ldr r2, [r3] | r2 = *(0xdd330);
0x0006e976 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006e978 eors r2, r3 | r2 ^= r3;
0x0006e97a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006e97e bne 0x6e9ac | goto label_0;
| }
0x0006e980 add sp, 0x2c |
0x0006e982 pop {r4, r5, r6, r7, pc} |
| }
0x0006e984 movs r3, 1 | r3 = 1;
0x0006e986 mov r1, r7 | r1 = r7;
0x0006e988 mov r0, r4 | r0 = r4;
0x0006e98a add r2, sp, 4 | r2 += var_4h;
0x0006e98c strd r6, r5, [sp, 4] | __asm ("strd r6, r5, [var_4h]");
0x0006e990 bl 0x6e144 | fcn_0006e144 (r0, r1, r2, r3, r4, r5, r6);
0x0006e992 invalid |
| }
0x0006e996 ldr r1, [pc, 0x28] |
0x0006e998 movw r2, 0x4d1 | r2 = 0x4d1;
0x0006e99c ldr r3, [pc, 0x24] |
0x0006e99e ldr r0, [pc, 0x28] |
0x0006e9a0 add r1, pc | r1 = 0xdd366;
0x0006e9a2 add r3, pc | r3 = 0xdd36a;
0x0006e9a4 adds r1, 7 | r1 += 7;
0x0006e9a6 add r0, pc | r0 = 0xdd374;
0x0006e9a8 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_0:
0x0006e9ac blx 0x927c | fprintf_chk ()
0x0006e9b0 adr r1, 0x2a8 | r1 = case.0x584aa.7;
0x0006e9b2 movs r5, r0 | r5 = r0;
0x0006e9b4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006e9b6 movs r0, r0 |
0x0006e9b8 str r3, [sp, 0x50] | *(arg_50h) = r3;
0x0006e9ba movs r5, r0 | r5 = r0;
0x0006e9bc adr r1, 0x150 | r1 = 0x150;
0x0006e9be movs r5, r0 | r5 = r0;
0x0006e9c0 ldr r0, [r6, r1] | r0 = *((r6 + r1));
0x0006e9c2 movs r3, r0 | r3 = r0;
0x0006e9c4 ldrh r6, [r4, r4] | r6 = *((r4 + r4));
0x0006e9c6 movs r3, r0 | r3 = r0;
0x0006e9c8 bkpt 0x3e | __asm ("bkpt 0x3e");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6ea0c */
| #include <stdint.h>
|
; (fcn) fcn.0006ea0c () | void fcn_0006ea0c (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x0006ea0c blmi 0x7c1284 | __asm ("blmi aav.0x0005a0b0");
0x0006ea10 push {r4, r5, r6, lr} |
0x0006ea12 sub sp, 0x28 |
0x0006ea14 add r2, pc | r2 += pc;
0x0006ea16 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006ea18 ldr r3, [r3] | r3 = *(r3);
0x0006ea1a str r3, [sp, 0x24] | var_24h = r3;
0x0006ea1c mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x0006ea20 cbz r0, 0x6ea66 | goto label_0;
| }
0x0006ea22 mov r5, r1 | r5 = r1;
0x0006ea24 mov r4, r0 | r4 = r0;
0x0006ea26 bl 0x6d6d4 | fcn_0006d6d4 (r0, r1);
0x0006ea2a mov r2, r5 | r2 = r5;
0x0006ea2c mov r1, r0 | r1 = r0;
0x0006ea2e mov r6, r0 | r6 = r0;
0x0006ea30 mov r0, r4 | r0 = r4;
0x0006ea32 bl 0x6d954 | fcn_0006d954 (r0, r1, r2);
0x0006ea36 adds r0, 1 | r0++;
0x0006ea38 it ne |
| if (r0 == 1) {
0x0006ea3a movne r0, 0 | r0 = 0;
| }
0x0006ea3c beq 0x6ea56 |
| while (1) {
0x0006ea3e ldr r2, [pc, 0x48] |
0x0006ea40 ldr r3, [pc, 0x40] | r3 = *(0x6ea84);
0x0006ea42 add r2, pc | r2 = 0xdd4d0;
0x0006ea44 ldr r3, [r2, r3] | r3 = *(0xdd4d0);
0x0006ea46 ldr r2, [r3] | r2 = *(0xdd4d0);
0x0006ea48 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006ea4a eors r2, r3 | r2 ^= r3;
0x0006ea4c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006ea50 bne 0x6ea7c | goto label_1;
| }
0x0006ea52 add sp, 0x28 |
0x0006ea54 pop {r4, r5, r6, pc} |
0x0006ea56 movs r3, 1 | r3 = 1;
0x0006ea58 add r2, sp, 4 | r2 += var_4h;
0x0006ea5a mov r1, r6 | r1 = r6;
0x0006ea5c mov r0, r4 | r0 = r4;
0x0006ea5e str r5, [sp, 4] | var_4h = r5;
0x0006ea60 bl 0x6e144 | fcn_0006e144 (r0, r1, r2, r3, r4, r5, r6);
0x0006ea64 b 0x6ea3e |
| }
| label_0:
0x0006ea66 ldr r1, [pc, 0x24] |
0x0006ea68 movw r2, 0x4e7 | r2 = 0x4e7;
0x0006ea6c ldr r3, [pc, 0x20] |
0x0006ea6e ldr r0, [pc, 0x24] |
0x0006ea70 add r1, pc | r1 = 0xdd502;
0x0006ea72 add r3, pc | r3 = 0xdd506;
0x0006ea74 adds r1, 7 | r1 += 7;
0x0006ea76 add r0, pc | r0 = 0xdd510;
0x0006ea78 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_1:
0x0006ea7c blx 0x927c | fprintf_chk ()
0x0006ea80 adr r0, 0x2c0 | r0 = 0x2c0;
0x0006ea82 movs r5, r0 | r5 = r0;
0x0006ea84 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006ea86 movs r0, r0 |
0x0006ea88 adr r0, 0x208 | r0 = 0x208;
0x0006ea8a movs r5, r0 | r5 = r0;
0x0006ea8c ldrsb r0, [r4, r6] | r0 = *((r4 + r6));
0x0006ea8e movs r3, r0 | r3 = r0;
0x0006ea90 ldr r2, [r5, r7] | r2 = *((r5 + r7));
0x0006ea92 movs r3, r0 | r3 = r0;
0x0006ea94 adr r2, 0x38 | r2 = 0x38;
0x0006ea96 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6eab4 */
| #include <stdint.h>
|
; (fcn) fcn.0006eab4 () | void fcn_0006eab4 (int16_t arg_1d8h, int16_t arg_298h, uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int32_t var_4h_2;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006eab4 ssub8mi fp, r6, r0 | __asm ("ssub8mi fp, r6, r0");
0x0006eab8 ldr r2, [pc, 0xa4] |
0x0006eaba sub sp, 0x2c |
0x0006eabc ldr r3, [pc, 0xa4] | r3 = *(0x6eb64);
0x0006eabe add r2, pc | r2 = 0xdd622;
0x0006eac0 ldr r3, [r2, r3] |
0x0006eac2 ldr r3, [r3] | r3 = *(0xdd622);
0x0006eac4 str r3, [sp, 0x24] | var_24h = r3;
0x0006eac6 mov.w r3, 0 | r3 = 0;
0x0006eaca cmp r0, 0 |
| if (r0 == 0) {
0x0006eacc beq 0x6eb44 | goto label_0;
| }
0x0006eace mov r5, r1 | r5 = r1;
0x0006ead0 mov r4, r0 | r4 = r0;
0x0006ead2 bl 0x6d6d4 | fcn_0006d6d4 (r0, r1);
0x0006ead6 mov r2, r5 | r2 = r5;
0x0006ead8 mov r1, r0 | r1 = r0;
0x0006eada mov r7, r0 | r7 = r0;
0x0006eadc mov r0, r4 | r0 = r4;
0x0006eade bl 0x6d954 | r0 = fcn_0006d954 (r0, r1, r2);
0x0006eae2 adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x0006eae4 beq 0x6eb32 | goto label_1;
| }
0x0006eae6 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006eaea ldr r1, [pc, 0x7c] |
0x0006eaec lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
0x0006eaee and r3, r3, 3 | r3 &= 3;
0x0006eaf2 add r1, pc | r1 = 0xdd660;
0x0006eaf4 it mi |
| if (r2 >= r3) {
0x0006eaf6 ldrmi r2, [r4, 4] | r2 = *((r4 + 4));
| }
0x0006eaf8 add.w r3, r1, r3, lsl 4 | r3 = r1 + (r3 << 4);
0x0006eafc it pl |
| if (r2 < r3) {
0x0006eafe addpl r2, r4, 4 | r2 = r4 + 4;
| }
0x0006eb00 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0006eb02 mul r0, r3, r0 | r0 = r3 * r0;
0x0006eb06 str r5, [r2, r0] | *((r2 + r0)) = r5;
0x0006eb08 add r2, r0 | r2 += r0;
0x0006eb0a str r6, [r2, 4] | *((r2 + 4)) = r6;
0x0006eb0c movs r0, 0 | r0 = 0;
0x0006eb0e ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006eb12 orr r3, r3, 0x80 | r3 |= 0x80;
0x0006eb16 strb.w r3, [r4, 0x27] | *((r4 + 0x27)) = r3;
| do {
0x0006eb1a ldr r2, [pc, 0x50] |
0x0006eb1c ldr r3, [pc, 0x44] | r3 = *(0x6eb64);
0x0006eb1e add r2, pc | r2 = 0xdd690;
0x0006eb20 ldr r3, [r2, r3] | r3 = *(0xdd690);
0x0006eb22 ldr r2, [r3] | r2 = *(0xdd690);
0x0006eb24 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006eb26 eors r2, r3 | r2 ^= r3;
0x0006eb28 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006eb2c bne 0x6eb5a | goto label_2;
| }
0x0006eb2e add sp, 0x2c |
0x0006eb30 pop {r4, r5, r6, r7, pc} |
| label_1:
0x0006eb32 movs r3, 1 | r3 = 1;
0x0006eb34 mov r1, r7 | r1 = r7;
0x0006eb36 mov r0, r4 | r0 = r4;
0x0006eb38 add r2, sp, 4 | r2 += var_4h;
0x0006eb3a strd r5, r6, [sp, 4] | __asm ("strd r5, r6, [var_4h]");
0x0006eb3e bl 0x6e144 | fcn_0006e144 (r0, r1, r2, r3, r4, r5, r6);
0x0006eb42 b 0x6eb1a |
| } while (1);
| label_0:
0x0006eb44 ldr r1, [pc, 0x28] |
0x0006eb46 mov.w r2, 0x510 | r2 = 0x510;
0x0006eb4a ldr r3, [pc, 0x28] |
0x0006eb4c ldr r0, [pc, 0x28] |
0x0006eb4e add r1, pc | r1 = 0xdd6c2;
0x0006eb50 add r3, pc | r3 = 0xdd6ca;
0x0006eb52 adds r1, 7 | r1 += 7;
0x0006eb54 add r0, pc | r0 = 0xdd6d0;
0x0006eb56 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x0006eb5a blx 0x927c | fprintf_chk ()
0x0006eb5e nop |
0x0006eb60 adr r0, 0x18 | r0 = 0x18;
0x0006eb62 movs r5, r0 | r5 = r0;
0x0006eb64 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006eb66 movs r0, r0 |
0x0006eb68 str r1, [sp, 0x1d8] | *(arg_1d8h) = r1;
0x0006eb6a movs r5, r0 | r5 = r0;
0x0006eb6c ldr r7, [sp, 0x298] | r7 = *(arg_298h);
0x0006eb6e movs r5, r0 | r5 = r0;
0x0006eb70 ldrsb r2, [r0, r3] | r2 = *((r0 + r3));
0x0006eb72 movs r3, r0 | r3 = r0;
0x0006eb74 ldr r4, [r7, r3] | r4 = *((r7 + r3));
0x0006eb76 movs r3, r0 | r3 = r0;
0x0006eb78 pop {r4, r7} |
0x0006eb7a movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6ed10 */
| #include <stdint.h>
|
; (fcn) fcn.0006ed10 () | void fcn_0006ed10 (int16_t arg_c0h, int16_t arg_280h, uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int32_t var_4h_2;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006ed10 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x0006ed14 mov r7, r1 | r7 = r1;
0x0006ed16 ldr r1, [pc, 0xc8] |
0x0006ed18 mov r5, r2 | r5 = r2;
0x0006ed1a sub sp, 0x10 |
0x0006ed1c mvn r4, 1 | r4 = ~1;
0x0006ed20 ldr r2, [pc, 0xc0] | r2 = *(0x6ede4);
0x0006ed22 movs r3, 0 | r3 = 0;
0x0006ed24 add r1, pc | r1 = 0xddb0a;
0x0006ed26 ldr r2, [r1, r2] |
0x0006ed28 ldr r2, [r2] | r2 = *(0xddb0a);
0x0006ed2a str r2, [sp, 0xc] | var_ch = r2;
0x0006ed2c mov.w r2, 0 | r2 = 0;
0x0006ed30 strd r4, r3, [sp, 4] | __asm ("strd r4, r3, [var_4h]");
0x0006ed32 orrs r1, r0 | r1 |= r0;
0x0006ed34 cmp r0, 0 |
| if (r0 == 0) {
0x0006ed36 beq 0x6edcc | goto label_4;
| }
0x0006ed38 ldrb.w r3, [r0, 0x27] | r3 = *((r0 + 0x27));
0x0006ed3c mov r4, r0 | r4 = r0;
0x0006ed3e ands r6, r3, 4 | r6 = r3 & 4;
0x0006ed42 ite ne |
| if (r6 == r3) {
0x0006ed44 ldrne r2, [r0, 0x18] | r2 = *((r0 + 0x18));
| }
| if (r6 == r3) {
0x0006ed46 ubfxeq r2, r3, 3, 3 | __asm ("ubfxeq r2, r3, 3, 3");
| }
0x0006ed4a cmp r2, 0 |
| if (r2 == 0) {
0x0006ed4c beq 0x6edcc | goto label_4;
| }
0x0006ed4e and r3, r3, 3 | r3 &= 3;
0x0006ed52 add r1, sp, 4 | r1 += var_4h;
0x0006ed54 cmp r3, 1 |
| if (r3 == 1) {
0x0006ed56 beq 0x6edc4 | goto label_5;
| }
0x0006ed58 bl 0x6e2f0 | r0 = fcn_0006e2f0 (r0, r1, r2, r3, r4, r5);
0x0006ed5c mov r1, r0 | r1 = r0;
| label_2:
0x0006ed5e adds r3, r1, 1 | r3 = r1 + 1;
| if (r3 == r1) {
0x0006ed60 beq 0x6edcc | goto label_4;
| }
| if (r6 == 0) {
0x0006ed62 cbz r6, 0x6edc0 | goto label_6;
| }
0x0006ed64 ldr r6, [r4, 4] | r6 = *((r4 + 4));
| label_1:
0x0006ed66 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006ed6a ldr r2, [pc, 0x7c] |
0x0006ed6c and r3, r3, 3 | r3 &= 3;
0x0006ed70 add r2, pc | r2 = 0xddb5e;
0x0006ed72 cmp r3, 1 |
0x0006ed74 add.w r2, r2, r3, lsl 4 | r2 += (r3 << 4);
0x0006ed78 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0006ed7a mul r2, r1, r2 | r2 = r1 * r2;
0x0006ed7e ldr.w r8, [r6, r2] | r8 = *((r6 + r2));
0x0006ed82 add r6, r2 | r6 += r2;
| if (r3 > 1) {
0x0006ed84 bhi 0x6edb4 | goto label_7;
| }
0x0006ed86 ldr r6, [r6, 4] | r6 = *((r6 + 4));
| label_0:
0x0006ed88 cbnz r7, 0x6edac |
| if (r5 != 0) {
| while (1) {
0x0006ed8a cbz r5, 0x6ed90 |
0x0006ed8c str.w r8, [r5] | __asm ("str.w r8, [r5]");
| }
| label_3:
0x0006ed90 ldr r2, [pc, 0x58] |
0x0006ed92 ldr r3, [pc, 0x50] | r3 = *(0x6ede6);
0x0006ed94 add r2, pc | r2 = 0xddb84;
0x0006ed96 ldr r3, [r2, r3] | r3 = *(0xddb84);
0x0006ed98 ldr r2, [r3] | r2 = *(0xddb84);
0x0006ed9a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006ed9c eors r2, r3 | r2 ^= r3;
0x0006ed9e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006eda2 bne 0x6edda | goto label_8;
| }
0x0006eda4 mov r0, r6 | r0 = r6;
0x0006eda6 add sp, 0x10 |
0x0006eda8 pop.w {r4, r5, r6, r7, r8, pc} |
0x0006edac mov r0, r4 | r0 = r4;
0x0006edae bl 0x6e4c8 | fcn_0006e4c8 (r0, r1);
0x0006edb2 b 0x6ed8a |
| }
| label_7:
0x0006edb4 cmp r3, 2 |
0x0006edb6 it eq |
| if (r3 == 2) {
0x0006edb8 moveq r6, r8 | r6 = r8;
| goto label_9;
| }
| if (r3 == 2) {
| label_9:
0x0006edba beq 0x6ed88 | goto label_0;
| }
0x0006edbc bl 0x6d884 | fcn_0006d884 ();
| label_6:
0x0006edc0 adds r6, r4, 4 | r6 = r4 + 4;
0x0006edc2 b 0x6ed66 | goto label_1;
| label_5:
0x0006edc4 bl 0x6d584 | r0 = fcn_0006d584 (r0, r1);
0x0006edc8 mov r1, r0 | r1 = r0;
0x0006edca b 0x6ed5e | goto label_2;
| label_4:
0x0006edcc mov r6, r5 | r6 = r5;
0x0006edce cmp r5, 0 |
| if (r5 == 0) {
0x0006edd0 beq 0x6ed90 | goto label_3;
| }
0x0006edd2 movs r3, 0 | r3 = 0;
0x0006edd4 mov r6, r3 | r6 = r3;
0x0006edd6 str r3, [r5] | *(r5) = r3;
0x0006edd8 b 0x6ed90 | goto label_3;
| label_8:
0x0006edda blx 0x927c | fprintf_chk ()
0x0006edde nop |
0x0006ede0 ldr r5, [sp, 0x280] | r5 = *(arg_280h);
0x0006ede2 movs r5, r0 | r5 = r0;
0x0006ede4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006ede6 movs r0, r0 |
0x0006ede8 ldrh r0, [r7, 0x36] | r0 = *((r7 + 0x36));
0x0006edea movs r5, r0 | r5 = r0;
0x0006edec ldr r5, [sp, 0xc0] | r5 = *(arg_c0h);
0x0006edee movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6ee04 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006ee04 () | void fcn_0006ee04 (int16_t arg_80h, int16_t arg_2d0h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006ee04 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x0006ee08 mov r4, r0 | r4 = r0;
0x0006ee0a ldr r0, [pc, 0xd0] |
0x0006ee0c sub sp, 0xc |
0x0006ee0e ldr r3, [pc, 0xd0] | r3 = *(0x6eee2);
0x0006ee10 add r0, pc | r0 = 0xddcf2;
0x0006ee12 ldr r3, [r0, r3] |
0x0006ee14 ldr r3, [r3] | r3 = *(0xddcf2);
0x0006ee16 str r3, [sp, 4] | var_4h = r3;
0x0006ee18 mov.w r3, 0 | r3 = 0;
0x0006ee1c cmp r4, 0 |
| if (r4 == 0) {
0x0006ee1e beq 0x6eea0 | goto label_3;
| }
0x0006ee20 ldr r3, [r4] | r3 = *(r4);
0x0006ee22 ldrd r6, r7, [r3, 8] | __asm ("ldrd r6, r7, [r3, 8]");
0x0006ee26 cmp r6, 0 |
0x0006ee28 it eq |
| if (r6 != 0) {
0x0006ee2a moveq r6, r1 | r6 = r1;
| }
0x0006ee2c cmp r7, 0 |
| if (r7 == 0) {
0x0006ee2e beq 0x6eeba | goto label_4;
| }
| label_1:
0x0006ee30 mov.w sb, 0 | sb = 0;
0x0006ee34 mov r8, sp | r8 = sp;
| do {
0x0006ee36 mov r0, r4 | r0 = r4;
0x0006ee38 bl 0x6edf0 | r0 = fcn_0006edf0 (r0);
| if (r0 == 0) {
0x0006ee3c cbz r0, 0x6ee66 | goto label_5;
| }
| label_0:
0x0006ee3e mov r2, r8 | r2 = r8;
0x0006ee40 movs r1, 1 | r1 = 1;
0x0006ee42 mov r0, r4 | r0 = r4;
0x0006ee44 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006ee48 bl 0x6ed10 | r0 = fcn_0006ed10 (r0, r1, r2, r3, r4);
0x0006ee4c mov r5, r0 | r5 = r0;
| if (r6 != 0) {
0x0006ee4e cbz r6, 0x6ee54 |
0x0006ee50 ldr r0, [sp] | r0 = *(sp);
0x0006ee52 blx r6 | uint32_t (*r6)(uint32_t) (r0);
| }
0x0006ee54 cmp r7, 0 |
0x0006ee56 beq 0x6ee36 |
| } while (r7 == 0);
0x0006ee58 mov r0, r5 | r0 = r5;
0x0006ee5a blx r7 | uint32_t (*r7)(uint32_t) (r0);
0x0006ee5c mov r0, r4 | r0 = r4;
0x0006ee5e bl 0x6edf0 | r0 = fcn_0006edf0 (r0);
0x0006ee62 cmp r0, 0 |
| if (r0 != 0) {
0x0006ee64 bne 0x6ee3e | goto label_0;
| }
| do {
| label_5:
0x0006ee66 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006ee6a lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 < r3) {
0x0006ee6c bmi 0x6eec4 | goto label_6;
| }
| label_2:
0x0006ee6e ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006ee72 mov r0, r4 | r0 = r4;
0x0006ee74 bfc r3, 3, 3 | value_0 = BIT_MASK (3, );
| value_0 = ~value_0;
| r3 &= value_0;
0x0006ee78 strb.w r3, [r4, 0x27] | *((r4 + 0x27)) = r3;
0x0006ee7c bl 0x6d768 | fcn_0006d768 (r0);
0x0006ee80 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006ee84 and r3, r3, 3 | r3 &= 3;
0x0006ee88 cmp r3, 1 |
0x0006ee8a itt eq |
| if (r3 != 1) {
0x0006ee8c moveq r3, -1 | r3 = -1;
| }
| if (r3 == 1) {
0x0006ee90 strd r3, r3, [r4, 0x2c] | __asm ("strd r3, r3, [r4, 0x2c]");
| }
0x0006ee94 ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006ee98 orr r3, r3, 0x80 | r3 |= 0x80;
0x0006ee9c strb.w r3, [r4, 0x27] | *((r4 + 0x27)) = r3;
| label_3:
0x0006eea0 ldr r2, [pc, 0x40] |
0x0006eea2 ldr r3, [pc, 0x3c] | r3 = *(0x6eee2);
0x0006eea4 add r2, pc | r2 = 0xddd8c;
0x0006eea6 ldr r3, [r2, r3] | r3 = *(0xddd8c);
0x0006eea8 ldr r2, [r3] | r2 = *(0xddd8c);
0x0006eeaa ldr r3, [sp, 4] | r3 = var_4h;
0x0006eeac eors r2, r3 | r2 ^= r3;
0x0006eeae mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006eeb2 bne 0x6eed8 | goto label_7;
| }
0x0006eeb4 add sp, 0xc |
0x0006eeb6 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_4:
0x0006eeba orrs.w r3, r6, r2 | r3 = r6 | r2;
0x0006eebe beq 0x6ee66 |
| } while (r3 == r6);
0x0006eec0 mov r7, r2 | r7 = r2;
0x0006eec2 b 0x6ee30 | goto label_1;
| label_6:
0x0006eec4 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0006eec6 blx 0x8dac | fcn_00008dac ();
0x0006eeca ldrb.w r3, [r4, 0x27] | r3 = *((r4 + 0x27));
0x0006eece bfc r3, 2, 1 | value_1 = BIT_MASK (1, );
| value_1 = ~value_1;
| r3 &= value_1;
0x0006eed2 strb.w r3, [r4, 0x27] | *((r4 + 0x27)) = r3;
0x0006eed6 b 0x6ee6e | goto label_2;
| label_7:
0x0006eed8 blx 0x927c | fprintf_chk ()
0x0006eedc ldr r4, [sp, 0x2d0] | r4 = *(arg_2d0h);
0x0006eede movs r5, r0 | r5 = r0;
0x0006eee0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006eee2 movs r0, r0 |
0x0006eee4 ldr r4, [sp, 0x80] | r4 = *(arg_80h);
0x0006eee6 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6efa0 */
| #include <stdint.h>
|
; (fcn) fcn.0006efa0 () | void fcn_0006efa0 (int16_t arg_4h, int16_t arg_68h, int16_t arg_90h, int16_t arg_1a8h, uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
0x0006efa0 blmi 0x15018ec | __asm ("blmi aav.0x00059b1a");
0x0006efa4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006efa8 sub sp, 0x1c |
0x0006efaa add r2, pc | r2 += pc;
0x0006efac ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006efae ldr r3, [r3] | r3 = *(r3);
0x0006efb0 str r3, [sp, 0x14] | var_14h = r3;
0x0006efb2 mov.w r3, 0 | r3 = 0;
0x0006efb6 cmp r0, 0 |
| if (r0 == 0) {
0x0006efb8 beq 0x6f09c | goto label_7;
| }
0x0006efba ldrb.w r7, [r0, 0x27] | r7 = *((r0 + 0x27));
0x0006efbe mov r4, r0 | r4 = r0;
0x0006efc0 ands r8, r7, 4 | r8 = r7 & 4;
| if (r8 == r7) {
0x0006efc4 beq 0x6f08e | goto label_8;
| }
0x0006efc6 ldr r0, [r0, 0x18] | r0 = *((r0 + 0x18));
0x0006efc8 adds r0, 1 | r0++;
| if (r0 != 1) {
0x0006efca bne 0x6f0c2 | goto label_9;
| }
| label_3:
0x0006efcc lsls r0, r0, 2 | r0 <<= 2;
0x0006efce cmp r0, 1 |
0x0006efd0 it lo |
| if (r0 >= 1) {
0x0006efd2 movlo r0, 1 | r0 = 1;
| }
0x0006efd4 blx 0x9234 | blkid_safe_string ();
0x0006efd8 str r0, [sp, 4] | var_4h = r0;
0x0006efda cmp r0, 0 |
| if (r0 == 0) {
0x0006efdc beq 0x6f0c6 | goto label_10;
| }
0x0006efde and r7, r7, 3 | r7 &= 3;
0x0006efe2 mvn r3, 1 | r3 = ~1;
0x0006efe6 cmp r7, 1 |
0x0006efe8 add.w sl, sp, 0xc | sl += var_14h;
0x0006efec str r3, [sp, 0xc] | var_14h = r3;
0x0006efee mov.w r3, 0 | r3 = 0;
0x0006eff2 mov r0, r4 | r0 = r4;
0x0006eff4 mov r1, sl | r1 = sl;
0x0006eff6 str r3, [sp, 0x10] | var_10h = r3;
| if (r7 == 1) {
0x0006eff8 beq 0x6f096 | goto label_11;
| }
0x0006effa bl 0x6e2f0 | r0 = fcn_0006e2f0 (r0, r1, r2, r3, r4, r5);
| label_4:
0x0006effe adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x0006f000 beq 0x6f0be | goto label_12;
| }
0x0006f002 ldrb.w r6, [r4, 0x27] | r6 = *((r4 + 0x27));
0x0006f006 movs r5, 0 | r5 = 0;
0x0006f008 ldr r3, [pc, 0xe4] |
0x0006f00a and r6, r6, 3 | r6 &= 3;
0x0006f00e add r3, pc | r3 = 0xde102;
0x0006f010 add.w r3, r3, r6, lsl 4 | r3 += (r6 << 4);
0x0006f014 ldr.w sb, [r3, 4] | sb = *((r3 + 4));
0x0006f018 ldr r3, [sp, 4] | r3 = var_4h;
0x0006f01a sub.w fp, r3, 4 |
0x0006f01e adds r3, r4, 4 | r3 = r4 + 4;
0x0006f020 str r3, [sp] | *(sp) = r3;
| do {
0x0006f022 cmp.w r8, 0 |
| if (r8 == 0) {
0x0006f026 beq 0x6f08a | goto label_13;
| }
0x0006f028 ldr r2, [r4, 4] | r2 = *((r4 + 4));
| label_2:
0x0006f02a cmp r6, 1 |
0x0006f02c add.w r5, r5, 1 | r5++;
0x0006f030 mla r2, r0, sb, r2 | __asm ("mla r2, r0, sb, r2");
| if (r6 > 1) {
0x0006f034 bhi 0x6f072 | goto label_14;
| }
0x0006f036 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0006f038 cmp r7, 1 |
0x0006f03a mov r1, sl | r1 = sl;
0x0006f03c mov r0, r4 | r0 = r4;
0x0006f03e str r2, [fp, 4]! | *(arg_4h) = r2;
0x0006f040 cmp r7, 4 |
| if (r7 == 4) {
0x0006f042 beq 0x6f084 | goto label_15;
| }
| label_0:
0x0006f044 bl 0x6e2f0 | r0 = fcn_0006e2f0 (r0, r1, r2, r3, r4, r5);
| label_1:
0x0006f048 adds r3, r0, 1 | r3 = r0 + 1;
0x0006f04a bne 0x6f022 |
| } while (r3 != r0);
0x0006f04c ldr r3, [sp, 4] | r3 = var_4h;
0x0006f04e add.w r5, r3, r5, lsl 2 | r5 = r3 + (r5 << 2);
| label_5:
0x0006f052 movs r3, 0 | r3 = 0;
0x0006f054 str r3, [r5] | *(r5) = r3;
| label_6:
0x0006f056 ldr r2, [pc, 0x9c] |
0x0006f058 ldr r3, [pc, 0x90] | r3 = *(0x6f0ec);
0x0006f05a add r2, pc | r2 = 0xde154;
0x0006f05c ldr r3, [r2, r3] | r3 = *(0xde154);
0x0006f05e ldr r2, [r3] | r2 = *(0xde154);
0x0006f060 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006f062 eors r2, r3 | r2 ^= r3;
0x0006f064 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006f068 bne 0x6f0e2 | goto label_16;
| }
0x0006f06a ldr r0, [sp, 4] | r0 = var_4h;
0x0006f06c add sp, 0x1c |
0x0006f06e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006f070 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_14:
0x0006f072 cmp r6, 2 |
| if (r6 != 2) {
0x0006f074 bne 0x6f0cc | goto label_17;
| }
0x0006f076 ldr r2, [r2] | r2 = *(r2);
0x0006f078 cmp r7, 1 |
0x0006f07a mov r1, sl | r1 = sl;
0x0006f07c mov r0, r4 | r0 = r4;
0x0006f07e str r2, [fp, 4]! | *(arg_4h) = r2;
| if (r7 != 1) {
0x0006f082 bne 0x6f044 | goto label_0;
| }
| label_15:
0x0006f084 bl 0x6d584 | fcn_0006d584 (r0, r1);
0x0006f088 b 0x6f048 | goto label_1;
| label_13:
0x0006f08a ldr r2, [sp] | r2 = *(sp);
0x0006f08c b 0x6f02a | goto label_2;
| label_8:
0x0006f08e ubfx r0, r7, 3, 3 | r0 = (r7 >> 3) & ((1 << 3) - 1);
0x0006f092 adds r0, 1 | r0++;
0x0006f094 b 0x6efcc | goto label_3;
| label_11:
0x0006f096 bl 0x6d584 | fcn_0006d584 (r0, r1);
0x0006f09a b 0x6effe | goto label_4;
| label_7:
0x0006f09c ldr r2, [pc, 0x58] |
0x0006f09e ldr r3, [pc, 0x4c] | r3 = *(0x6f0ee);
0x0006f0a0 add r2, pc | r2 = 0xde19c;
0x0006f0a2 ldr r3, [r2, r3] | r3 = *(0xde19c);
0x0006f0a4 ldr r2, [r3] | r2 = *(0xde19c);
0x0006f0a6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006f0a8 eors r2, r3 | r2 ^= r3;
0x0006f0aa mov.w r3, 0 | r3 = 0;
0x0006f0ac lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0006f0ae bne 0x6f0e2 | goto label_16;
| }
0x0006f0b0 movs r1, 4 | r1 = 4;
0x0006f0b2 movs r0, 1 | r0 = 1;
0x0006f0b4 add sp, 0x1c |
0x0006f0b6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006f0ba b.w 0x8c1c | void (*0x8c1c)() ();
| label_12:
0x0006f0be ldr r5, [sp, 4] | r5 = var_4h;
0x0006f0c0 b 0x6f052 | goto label_5;
| label_9:
0x0006f0c2 lsrs r3, r0, 0x1e | r3 = r0 >> 0x1e;
| if (r3 == r0) {
0x0006f0c4 beq 0x6efcc | goto label_3;
| }
| label_10:
0x0006f0c6 movs r3, 0 | r3 = 0;
0x0006f0c8 str r3, [sp, 4] | var_4h = r3;
0x0006f0ca b 0x6f056 | goto label_6;
| label_17:
0x0006f0cc ldr r1, [pc, 0x2c] |
0x0006f0ce mov.w r2, 0x204 | r2 = 0x204;
0x0006f0d2 ldr r3, [pc, 0x2c] |
0x0006f0d4 ldr r0, [pc, 0x2c] |
0x0006f0d6 add r1, pc | r1 = 0xde1d6;
0x0006f0d8 add r3, pc | r3 = 0xde1de;
0x0006f0da adds r1, 7 | r1 += 7;
0x0006f0dc add r0, pc | r0 = 0xde1e4;
0x0006f0de bl 0x71614 | r0 = fcn_00071614 (r0, r1, r2, r3);
| label_16:
0x0006f0e2 blx 0x927c | fprintf_chk ()
0x0006f0e6 nop |
0x0006f0e8 ldr r3, [sp, 0x68] | r3 = *(arg_68h);
0x0006f0ea movs r5, r0 | r5 = r0;
0x0006f0ec lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006f0ee movs r0, r0 |
0x0006f0f0 ldrh r2, [r3, 0x22] | r2 = *((r3 + 0x22));
0x0006f0f2 movs r5, r0 | r5 = r0;
0x0006f0f4 ldr r2, [sp, 0x1a8] | r2 = *(arg_1a8h);
0x0006f0f6 movs r5, r0 | r5 = r0;
0x0006f0f8 ldr r2, [sp, 0x90] | r2 = *(arg_90h);
0x0006f0fa movs r5, r0 | r5 = r0;
0x0006f0fc str r2, [r7, r4] | *((r7 + r4)) = r2;
0x0006f0fe movs r3, r0 | r3 = r0;
0x0006f100 strb r0, [r4, r1] | *((r4 + r1)) = r0;
0x0006f102 movs r3, r0 | r3 = r0;
0x0006f104 str r0, [r7, r6] | *((r7 + r6)) = r0;
0x0006f106 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6f2dc */
| #include <stdint.h>
|
; (fcn) fcn.0006f2dc () | void fcn_0006f2dc (int16_t arg_368h, int16_t arg_3e8h, int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| uint32_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int32_t var_1ch_2;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006f2dc svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006f2e0 sub sp, 0x2c |
0x0006f2e2 strd r1, r2, [sp, 4] | __asm ("strd r1, r2, [var_4h]");
0x0006f2e6 ldr r1, [pc, 0x150] |
0x0006f2e8 ldr r2, [pc, 0x150] | r2 = *(0x6f43c);
0x0006f2ea add r1, pc | r1 = 0xde728;
0x0006f2ec ldr r2, [r1, r2] |
0x0006f2ee ldr r2, [r2] | r2 = *(0xde728);
0x0006f2f0 str r2, [sp, 0x24] | var_24h = r2;
0x0006f2f2 mov.w r2, 0 | r2 = 0;
0x0006f2f6 movs r2, 0 | r2 = 0;
0x0006f2f8 str r2, [sp, 0x14] | var_14h = r2;
0x0006f2fa str r3, [sp, 0xc] | var_ch = r3;
0x0006f2fc cmp r3, 0 |
| if (r3 == 0) {
0x0006f2fe beq.w 0x6f41e | goto label_6;
| }
0x0006f302 mov r5, r0 | r5 = r0;
0x0006f304 bl 0x6edf0 | r0 = fcn_0006edf0 (r0);
0x0006f308 cmp r0, 0 |
| if (r0 == 0) {
0x0006f30a beq 0x6f3f6 | goto label_7;
| }
0x0006f30c ldr r3, [sp, 4] | r3 = var_4h;
0x0006f30e cmp r3, 0 |
| if (r3 == 0) {
0x0006f310 beq 0x6f404 | goto label_8;
| }
0x0006f312 mov r0, r3 | r0 = r3;
0x0006f314 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0006f318 mov r6, r0 | r6 = r0;
0x0006f31a cmp r0, 0 |
| if (r0 == 0) {
0x0006f31c beq 0x6f3fe | goto label_9;
| }
0x0006f31e ldr r3, [sp, 8] | r3 = var_8h;
0x0006f320 eor r7, r3, 1 | r7 = r3 ^ 1;
| label_4:
0x0006f324 ldr r3, [sp, 8] | r3 = var_8h;
0x0006f326 movs r4, 0 | r4 = 0;
0x0006f328 add.w sb, sp, 0x18 | sb += var_18h;
0x0006f32c add.w r8, sp, 0x1c | r8 += var_1ch;
0x0006f330 add.w fp, sp, 0x14 |
0x0006f334 cmp r3, 0 |
0x0006f336 mvn r3, 1 | r3 = ~1;
0x0006f338 lsls r1, r0, 0xc | r1 = r0 << 0xc;
0x0006f33a strd r3, r4, [sp, 0x1c] | __asm ("strd r3, r4, [var_1ch]");
0x0006f33e ite ne |
| if (r1 == r0) {
0x0006f340 movne r3, r6 | r3 = r6;
| }
| if (r1 != r0) {
0x0006f342 moveq r3, r4 | r3 = r4;
| }
0x0006f344 adds r3, 1 | r3++;
0x0006f346 str r3, [sp] | *(sp) = r3;
| do {
| label_0:
0x0006f348 movs r3, 0 | r3 = 0;
0x0006f34a mov r2, sb | r2 = sb;
0x0006f34c mov r1, r8 | r1 = r8;
0x0006f34e mov r0, r5 | r0 = r5;
0x0006f350 bl 0x6e79c | r0 = fcn_0006e79c (r0, r1, r2, r3);
| if (r0 == 0) {
0x0006f354 cbz r0, 0x6f3ae | goto label_10;
| }
| label_1:
0x0006f356 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006f358 cmp r0, 0 |
0x0006f35a beq 0x6f348 |
| } while (r0 == 0);
0x0006f35c blx 0x8f38 | r0 = fcn_00008f38 ();
0x0006f360 mov sl, r0 | sl = r0;
0x0006f362 cmp r0, 0 |
| if (r0 == 0) {
0x0006f364 beq 0x6f348 | goto label_0;
| }
0x0006f366 ldr r3, [sp] | r3 = *(sp);
0x0006f368 adds r1, r4, r3 | r1 = r4 + r3;
0x0006f36a add r1, r0 | r1 += r0;
0x0006f36c cmp r7, 0 |
| if (r7 != 0) {
0x0006f36e bne 0x6f3e2 | goto label_11;
| }
0x0006f370 add r1, r6 | r1 += r6;
0x0006f372 movs r2, 1 | r2 = 1;
0x0006f374 mov r0, fp | r0 = fp;
0x0006f376 bl 0x6530c | r0 = fcn_0006530c (r0, r1, r2);
0x0006f37a cmp r0, 0 |
| if (r0 == 0) {
0x0006f37c beq 0x6f3ee | goto label_12;
| }
| if (r6 != 0) {
0x0006f37e cbz r6, 0x6f38e |
0x0006f380 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006f382 mov r2, r6 | r2 = r6;
0x0006f384 ldr r1, [sp, 4] | r1 = var_4h;
0x0006f386 add r0, r4 | r0 += r4;
0x0006f388 add r4, r6 | r4 += r6;
0x0006f38a blx 0x8f9c | fcn_00008f9c ();
| }
| label_2:
0x0006f38e ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006f390 mov r2, sl | r2 = sl;
0x0006f392 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0006f394 movs r7, 0 | r7 = 0;
0x0006f396 add r0, r4 | r0 += r4;
0x0006f398 add r4, sl | r4 += sl;
0x0006f39a blx 0x8f9c | fcn_00008f9c ();
0x0006f39e movs r3, 0 | r3 = 0;
0x0006f3a0 mov r2, sb | r2 = sb;
0x0006f3a2 mov r1, r8 | r1 = r8;
0x0006f3a4 mov r0, r5 | r0 = r5;
0x0006f3a6 bl 0x6e79c | r0 = fcn_0006e79c (r0, r1, r2, r3);
0x0006f3aa cmp r0, 0 |
| if (r0 != 0) {
0x0006f3ac bne 0x6f356 | goto label_1;
| }
| label_10:
0x0006f3ae ldr r3, [sp, 8] | r3 = var_8h;
| if (r3 != 0) {
0x0006f3b0 cbnz r3, 0x6f40e | goto label_13;
| }
| label_5:
0x0006f3b2 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006f3b4 movs r3, 0 | r3 = 0;
0x0006f3b6 mov r0, r3 | r0 = r3;
0x0006f3b8 strb r3, [r2, r4] | *((r2 + r4)) = r3;
0x0006f3ba mov r4, r3 | r4 = r3;
0x0006f3bc ldr r2, [sp, 0xc] | r2 = var_ch;
0x0006f3be ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006f3c0 str r3, [r2] | *(r2) = r3;
| label_3:
0x0006f3c2 blx 0x8dac | fcn_00008dac ();
0x0006f3c6 ldr r2, [pc, 0x78] |
0x0006f3c8 ldr r3, [pc, 0x70] | r3 = *(0x6f43c);
0x0006f3ca add r2, pc | r2 = 0xde810;
0x0006f3cc ldr r3, [r2, r3] | r3 = *(0xde810);
0x0006f3ce ldr r2, [r3] | r2 = *(0xde810);
0x0006f3d0 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006f3d2 eors r2, r3 | r2 ^= r3;
0x0006f3d4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006f3d8 bne 0x6f434 | goto label_14;
| }
0x0006f3da mov r0, r4 | r0 = r4;
0x0006f3dc add sp, 0x2c |
0x0006f3de pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x0006f3e2 movs r2, 1 | r2 = 1;
0x0006f3e4 mov r0, fp | r0 = fp;
0x0006f3e6 bl 0x6530c | r0 = fcn_0006530c (r0, r1, r2);
0x0006f3ea cmp r0, 0 |
| if (r0 != 0) {
0x0006f3ec bne 0x6f38e | goto label_2;
| }
| label_12:
0x0006f3ee ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006f3f0 mvn r4, 0xb | r4 = ~0xb;
0x0006f3f4 b 0x6f3c2 | goto label_3;
| label_7:
0x0006f3f6 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0006f3f8 mov r4, r0 | r4 = r0;
0x0006f3fa str r0, [r2] | *(r2) = r0;
0x0006f3fc b 0x6f3c2 | goto label_3;
| label_9:
0x0006f3fe movs r7, 1 | r7 = 1;
0x0006f400 str r0, [sp, 8] | var_8h = r0;
0x0006f402 b 0x6f324 | goto label_4;
| label_8:
0x0006f404 ldr r3, [sp, 4] | r3 = var_4h;
0x0006f406 movs r7, 1 | r7 = 1;
0x0006f408 mov r6, r3 | r6 = r3;
0x0006f40a str r3, [sp, 8] | var_8h = r3;
0x0006f40c b 0x6f324 | goto label_4;
| label_13:
0x0006f40e ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006f410 mov r2, r6 | r2 = r6;
0x0006f412 ldr r1, [sp, 4] | r1 = var_4h;
0x0006f414 add r0, r4 | r0 += r4;
0x0006f416 add r4, r6 | r4 += r6;
0x0006f418 blx 0x8f9c | fcn_00008f9c ();
0x0006f41c b 0x6f3b2 | goto label_5;
| label_6:
0x0006f41e ldr r1, [pc, 0x24] |
0x0006f420 movw r2, 0x7cf | r2 = 0x7cf;
0x0006f424 ldr r3, [pc, 0x20] |
0x0006f426 ldr r0, [pc, 0x24] |
0x0006f428 add r1, pc | r1 = 0xde872;
0x0006f42a add r3, pc | r3 = 0xde876;
0x0006f42c adds r1, 7 | r1 += 7;
0x0006f42e add r0, pc | r0 = 0xde880;
0x0006f430 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_14:
0x0006f434 blx 0x927c | fprintf_chk ()
0x0006f438 str r7, [sp, 0x368] | *(arg_368h) = r7;
0x0006f43a movs r5, r0 | r5 = r0;
0x0006f43c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006f43e movs r0, r0 |
0x0006f440 str r6, [sp, 0x3e8] | *(arg_3e8h) = r6;
0x0006f442 movs r5, r0 | r5 = r0;
0x0006f444 ldr r5, [pc, 0x3a0] | r5 = *(0x6f7e8);
0x0006f446 movs r3, r0 | r3 = r0;
0x0006f448 str r2, [r0, r0] | *((r0 + r0)) = r2;
0x0006f44a movs r3, r0 | r3 = r0;
0x0006f44c str r6, [r0, r0] | *((r0 + r0)) = r6;
0x0006f44e movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6f518 */
| #include <stdint.h>
|
; (fcn) fcn.0006f518 () | void fcn_0006f518 (int16_t arg_38h, int16_t arg_270h, int16_t arg_3b8h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| uint32_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006f518 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006f51c mov r7, r2 | r7 = r2;
0x0006f51e ldr r2, [pc, 0x100] |
0x0006f520 mov r6, r3 | r6 = r3;
0x0006f522 sub sp, 0x14 |
0x0006f524 cmp r1, 0 |
0x0006f526 ldr r3, [pc, 0xfc] | r3 = *(0x6f626);
0x0006f528 add r2, pc | r2 = 0xdeb4e;
0x0006f52a str r1, [sp, 4] | var_4h = r1;
0x0006f52c ldr r3, [r2, r3] |
0x0006f52e ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x0006f530 ldr r3, [r3] | r3 = *(0xdeb4e);
0x0006f532 str r3, [sp, 0xc] | var_ch = r3;
0x0006f534 mov.w r3, 0 | r3 = 0;
0x0006f536 lsls r0, r0, 0xc | r0 <<= 0xc;
0x0006f538 clz r3, r0 | r3 &= r0;
0x0006f53c lsr.w r3, r3, 5 | r3 >>= 5;
0x0006f540 it eq |
| if (r0 != r0) {
0x0006f542 moveq r3, 0 | r3 = 0;
| }
0x0006f544 str r2, [sp] | *(sp) = r2;
0x0006f546 cmp r3, 0 |
| if (r3 != 0) {
0x0006f548 bne 0x6f602 | goto label_1;
| }
0x0006f54a adds r3, r1, 1 | r3 = r1 + 1;
0x0006f54c mov r4, r0 | r4 = r0;
| if (r3 == r1) {
0x0006f54e bne 0x6f558 |
0x0006f550 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0006f554 mov r1, r0 | r1 = r0;
0x0006f556 str r0, [sp, 4] | var_4h = r0;
| }
0x0006f558 adds r5, r1, 1 | r5 = r1 + 1;
0x0006f55a lsrs r5, r5, 1 | r5 >>= 1;
0x0006f55c adds r5, 1 | r5++;
0x0006f55e mov r0, r5 | r0 = r5;
0x0006f560 blx 0x9234 | r0 = blkid_safe_string ();
0x0006f564 mov sb, r0 | sb = r0;
0x0006f566 cmp r0, 0 |
| if (r0 == 0) {
0x0006f568 beq 0x6f616 | goto label_2;
| }
0x0006f56a add.w r8, sp, 4 | r8 += var_4h;
0x0006f56e add.w fp, sp, 8 |
0x0006f572 mov sl, r0 | sl = r0;
0x0006f574 mov r1, r8 | r1 = r8;
0x0006f576 mov r0, fp | r0 = fp;
0x0006f578 str r4, [sp, 8] | var_8h = r4;
0x0006f57a bl 0x6f4a4 | r0 = fcn_0006f4a4 (r0, r1);
0x0006f57e cmn.w r0, 0x20 |
0x0006f582 mov r4, r0 | r4 = r0;
| if (r0 == 0x20) {
0x0006f584 beq 0x6f5ae | goto label_3;
| }
| do {
0x0006f586 cmp r0, 0 |
| if (r0 < 0) {
0x0006f588 blt 0x6f5f0 | goto label_4;
| }
0x0006f58a mov r1, r8 | r1 = r8;
0x0006f58c mov r0, fp | r0 = fp;
0x0006f58e bl 0x6f4a4 | r0 = fcn_0006f4a4 (r0, r1);
0x0006f592 cmp r0, 0 |
| if (r0 < 0) {
0x0006f594 blt 0x6f5ee | goto label_5;
| }
0x0006f596 orr.w r0, r0, r4, lsl 4 | r0 |= (r4 << 4);
0x0006f59a mov r1, r8 | r1 = r8;
0x0006f59c strb r0, [sl], 1 | *(sl) = r0;
| sl++;
0x0006f5a0 mov r0, fp | r0 = fp;
0x0006f5a2 bl 0x6f4a4 | r0 = fcn_0006f4a4 (r0, r1);
0x0006f5a6 cmn.w r0, 0x20 |
0x0006f5aa mov r4, r0 | r4 = r0;
0x0006f5ac bne 0x6f586 |
| } while (r0 != 0x20);
| label_3:
0x0006f5ae ldr r2, [sp] | r2 = *(sp);
0x0006f5b0 movs r3, 0 | r3 = 0;
0x0006f5b2 strb.w r3, [sl] | *(sl) = r3;
| if (r2 != 0) {
0x0006f5b6 cbz r2, 0x6f5be |
0x0006f5b8 sub.w r3, sl, sb | r3 = sl - sb;
0x0006f5bc str r3, [r2] | *(r2) = r3;
| }
0x0006f5be mov r4, r6 | r4 = r6;
| if (r6 == 0) {
0x0006f5c0 cbz r6, 0x6f5cc | goto label_0;
| }
0x0006f5c2 str.w sb, [r6] | __asm ("str.w sb, [r6]");
0x0006f5c6 mov.w sb, 0 | sb = 0;
0x0006f5ca mov r4, sb | r4 = sb;
| do {
| label_0:
0x0006f5cc mov r0, sb | r0 = sb;
0x0006f5ce blx 0x8dac | fcn_00008dac ();
0x0006f5d2 ldr r2, [pc, 0x54] |
0x0006f5d4 ldr r3, [pc, 0x4c] | r3 = *(0x6f624);
0x0006f5d6 add r2, pc | r2 = 0xdec04;
0x0006f5d8 ldr r3, [r2, r3] | r3 = *(0xdec04);
0x0006f5da ldr r2, [r3] | r2 = *(0xdec04);
0x0006f5dc ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006f5de eors r2, r3 | r2 ^= r3;
0x0006f5e0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006f5e4 bne 0x6f61c | goto label_6;
| }
0x0006f5e6 mov r0, r4 | r0 = r4;
0x0006f5e8 add sp, 0x14 |
0x0006f5ea pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x0006f5ee mov r4, r0 | r4 = r0;
| label_4:
0x0006f5f0 cmp r7, 0 |
0x0006f5f2 beq 0x6f5cc |
| } while (r7 == 0);
0x0006f5f4 mov.w r2, -1 | r2 = -1;
0x0006f5f8 mov r1, r5 | r1 = r5;
0x0006f5fa mov r0, sb | r0 = sb;
0x0006f5fc blx 0x9014 | fcn_00009014 ();
0x0006f600 b 0x6f5cc | goto label_0;
| label_1:
0x0006f602 ldr r1, [pc, 0x28] |
0x0006f604 movs r2, 0x76 | r2 = 0x76;
0x0006f606 ldr r3, [pc, 0x28] |
0x0006f608 ldr r0, [pc, 0x28] |
0x0006f60a add r1, pc | r1 = 0xdec3c;
0x0006f60c add r3, pc | r3 = 0xdec42;
0x0006f60e adds r1, 7 | r1 += 7;
0x0006f610 add r0, pc | r0 = 0xdec48;
0x0006f612 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x0006f616 mvn r4, 0xb | r4 = ~0xb;
0x0006f61a b 0x6f5cc | goto label_0;
| label_6:
0x0006f61c blx 0x927c | fprintf_chk ()
0x0006f620 str r5, [sp, 0x270] | *(arg_270h) = r5;
0x0006f622 movs r5, r0 | r5 = r0;
0x0006f624 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006f626 movs r0, r0 |
0x0006f628 str r4, [sp, 0x3b8] | *(arg_3b8h) = r4;
0x0006f62a movs r5, r0 | r5 = r0;
0x0006f62c ldr r7, [pc, 0x308] | r7 = *(0x6f938);
0x0006f62e movs r3, r0 | r3 = r0;
0x0006f630 ldr r7, [pc, 0x3b0] | r7 = *(0x6f9e4);
0x0006f632 movs r3, r0 | r3 = r0;
0x0006f634 ldr r7, [pc, 0x370] | r7 = *(0x6f9a8);
0x0006f636 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6f730 */
| #include <stdint.h>
|
; (fcn) fcn.0006f730 () | void fcn_0006f730 (int16_t arg_48h, int16_t arg_190h, int16_t arg_208h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| uint32_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006f730 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006f734 sub sp, 0x24 |
0x0006f736 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x0006f73a cmp r1, 0 |
0x0006f73c ldr r2, [pc, 0x1bc] |
0x0006f73e ldr r3, [pc, 0x1c0] | r3 = *(0x6f902);
0x0006f740 str r1, [sp, 0x14] | var_14h = r1;
0x0006f742 add r2, pc | r2 = 0xdf042;
0x0006f744 ldr r3, [r2, r3] |
0x0006f746 ldr r2, [sp, 0x48] | r2 = *(arg_48h);
0x0006f748 ldr r3, [r3] | r3 = *(0xdf042);
0x0006f74a str r3, [sp, 0x1c] | var_1ch = r3;
0x0006f74c mov.w r3, 0 | r3 = 0;
0x0006f750 clz r3, r0 | r3 &= r0;
0x0006f754 lsr.w r3, r3, 5 | r3 >>= 5;
0x0006f758 it eq |
| if (r1 != 0) {
0x0006f75a moveq r3, 0 | r3 = 0;
| }
0x0006f75c str r2, [sp, 0x10] | var_10h = r2;
0x0006f75e cmp r3, 0 |
| if (r3 != 0) {
0x0006f760 bne.w 0x6f88a | goto label_4;
| }
0x0006f764 adds r2, r1, 1 | r2 = r1 + 1;
0x0006f766 mov r4, r0 | r4 = r0;
| if (r2 == r1) {
0x0006f768 bne 0x6f772 |
0x0006f76a blx 0x8f38 | r0 = fcn_00008f38 ();
0x0006f76e mov r1, r0 | r1 = r0;
0x0006f770 str r0, [sp, 0x14] | var_14h = r0;
| }
0x0006f772 lsr.w sl, r1, 2 | sl = r1 >> 2;
0x0006f776 ands r1, r1, 3 | r1 &= 3;
0x0006f77a it ne |
| if (r1 == r1) {
0x0006f77c addne r1, r1, -1 | r1 += -1;
| }
0x0006f780 add.w r3, sl, sl, lsl 1 | r3 = sl + (sl << 1);
0x0006f784 str r3, [sp] | *(sp) = r3;
0x0006f786 itt ne |
| if (r1 == r1) {
0x0006f788 addne r3, r3, r1 | r3 += r1;
| }
| if (r1 == r1) {
0x0006f78a strne r3, [sp] | *(sp) = r3;
| }
0x0006f78c ldr r3, [sp] | r3 = *(sp);
0x0006f78e adds r0, r3, 1 | r0 = r3 + 1;
0x0006f790 blx 0x9234 | blkid_safe_string ();
0x0006f794 str r0, [sp, 4] | var_4h = r0;
0x0006f796 cmp r0, 0 |
| if (r0 == 0) {
0x0006f798 beq.w 0x6f8f2 | goto label_5;
| }
0x0006f79c mov r5, r0 | r5 = r0;
0x0006f79e add.w fp, sp, 0x14 |
0x0006f7a2 add.w r8, sp, 0x18 | r8 += var_18h;
0x0006f7a6 mvn sb, 0x80000000 | sb = ~0x80000000;
0x0006f7aa str r4, [sp, 0x18] | var_18h = r4;
0x0006f7ac b 0x6f80c |
| while (r0 != 0x20) {
0x0006f7ae cmp r0, 0 |
| if (r0 < 0) {
0x0006f7b0 blt 0x6f846 | goto label_0;
| }
0x0006f7b2 cmp r0, sb |
| if (r0 == sb) {
0x0006f7b4 beq 0x6f842 | goto label_1;
| }
0x0006f7b6 mov r1, fp | r1 = fp;
0x0006f7b8 mov r0, r8 | r0 = r8;
0x0006f7ba bl 0x6f6b0 | fcn_0006f6b0 (r0, r1);
0x0006f7be subs r7, r0, 0 | r7 -= var_18h;
| if (r7 < var_18h) {
0x0006f7c0 blt 0x6f886 | goto label_6;
| }
0x0006f7c2 cmp r7, sb |
| if (r7 == sb) {
0x0006f7c4 beq 0x6f842 | goto label_1;
| }
0x0006f7c6 mov r1, fp | r1 = fp;
0x0006f7c8 mov r0, r8 | r0 = r8;
0x0006f7ca bl 0x6f6b0 | fcn_0006f6b0 (r0, r1);
0x0006f7ce subs.w sl, r0, 0 | sl -= var_18h;
| if (sl < var_18h) {
0x0006f7d2 blt 0x6f8a0 | goto label_7;
| }
0x0006f7d4 mov r1, fp | r1 = fp;
0x0006f7d6 mov r0, r8 | r0 = r8;
0x0006f7d8 bl 0x6f6b0 | r0 = fcn_0006f6b0 (r0, r1);
0x0006f7dc cmp r0, 0 |
| if (r0 < 0) {
0x0006f7de blt 0x6f8a4 | goto label_8;
| }
0x0006f7e0 cmp sl, sb |
| if (sl == sb) {
0x0006f7e2 beq 0x6f83e | goto label_9;
| }
0x0006f7e4 cmp r0, sb |
0x0006f7e6 add.w r5, r5, 3 | r5 += 3;
| if (r0 == sb) {
0x0006f7ea beq 0x6f8a8 | goto label_10;
| }
0x0006f7ec orr.w r0, r0, sl, lsl 6 | r0 |= (sl << 6);
0x0006f7f0 ubfx sl, sl, 2, 6 | sl = (sl >> 2) & ((1 << 6) - 1);
0x0006f7f4 orr.w sl, sl, r7, lsl 4 | sl |= (r7 << 4);
0x0006f7f8 ubfx r7, r7, 4, 4 | r7 = (r7 >> 4) & ((1 << 4) - 1);
0x0006f7fc orr.w r7, r7, r4, lsl 2 | r7 |= (r4 << 2);
0x0006f800 strb r0, [r5, -0x1] | *((r5 - 0x1)) = r0;
0x0006f804 strb sl, [r5, -0x2] | *((r5 - 0x2)) = sl;
0x0006f808 strb r7, [r5, -0x3] | *((r5 - 0x3)) = r7;
0x0006f80c mov r1, fp | r1 = fp;
0x0006f80e mov r0, r8 | r0 = r8;
0x0006f810 bl 0x6f6b0 | r0 = fcn_0006f6b0 (r0, r1);
0x0006f814 cmn.w r0, 0x20 |
0x0006f818 mov r4, r0 | r4 = r0;
0x0006f81a mov r6, r5 | r6 = r5;
0x0006f81c bne 0x6f7ae |
| }
| label_2:
0x0006f81e movs r3, 0 | r3 = 0;
0x0006f820 strb r3, [r6] | *(r6) = r3;
0x0006f822 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r3 != 0) {
0x0006f824 cbz r3, 0x6f82c |
0x0006f826 ldr r2, [sp, 4] | r2 = var_4h;
0x0006f828 subs r6, r6, r2 | r6 -= r2;
0x0006f82a str r6, [r3] | *(r3) = r6;
| }
0x0006f82c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006f82e cmp r3, 0 |
| if (r3 == 0) {
0x0006f830 beq 0x6f8ce | goto label_11;
| }
0x0006f832 ldr r2, [sp, 4] | r2 = var_4h;
0x0006f834 str r2, [r3] | *(r3) = r2;
0x0006f836 movs r3, 0 | r3 = 0;
0x0006f838 mov r4, r3 | r4 = r3;
0x0006f83a str r3, [sp, 4] | var_4h = r3;
0x0006f83c b 0x6f856 | goto label_3;
| label_9:
0x0006f83e cmp r0, sb |
| if (r0 == sb) {
0x0006f840 beq 0x6f8d2 | goto label_12;
| }
| label_1:
0x0006f842 mvn r4, 0x15 | r4 = ~0x15;
| label_0:
0x0006f846 ldr r3, [sp, 8] | r3 = var_8h;
0x0006f848 ldr r2, [sp] | r2 = *(sp);
0x0006f84a cmp r2, 0 |
0x0006f84c ite eq |
| if (r2 != 0) {
0x0006f84e moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0) {
0x0006f850 andne r3, r3, 1 | r3 &= 1;
| }
0x0006f852 lsls r1, r0, 0xc | r1 = r0 << 0xc;
0x0006f854 cbnz r3, 0x6f878 |
| while (1) {
| label_3:
0x0006f856 ldr r0, [sp, 4] | r0 = var_4h;
0x0006f858 blx 0x8dac | fcn_00008dac ();
0x0006f85c ldr r2, [pc, 0xa4] |
0x0006f85e ldr r3, [pc, 0xa0] | r3 = *(0x6f902);
0x0006f860 add r2, pc | r2 = 0xdf168;
0x0006f862 ldr r3, [r2, r3] | r3 = *(0xdf168);
0x0006f864 ldr r2, [r3] | r2 = *(0xdf168);
0x0006f866 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006f868 eors r2, r3 | r2 ^= r3;
0x0006f86a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006f86e bne 0x6f8f8 | goto label_13;
| }
0x0006f870 mov r0, r4 | r0 = r4;
0x0006f872 add sp, 0x24 |
0x0006f874 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006f878 ldrd r1, r0, [sp] | __asm ("ldrd r1, r0, [sp]");
0x0006f87c mov.w r2, -1 | r2 = -1;
0x0006f880 blx 0x9014 | fcn_00009014 ();
0x0006f884 b 0x6f856 |
| }
| label_6:
0x0006f886 mov r4, r7 | r4 = r7;
0x0006f888 b 0x6f846 | goto label_0;
| label_4:
0x0006f88a ldr r1, [pc, 0x7c] |
0x0006f88c movw r2, 0x2cd | r2 = 0x2cd;
0x0006f890 ldr r3, [pc, 0x78] |
0x0006f892 ldr r0, [pc, 0x7c] |
0x0006f894 add r1, pc | r1 = 0xdf1a2;
0x0006f896 add r3, pc | r3 = 0xdf1a6;
0x0006f898 adds r1, 7 | r1 += 7;
0x0006f89a add r0, pc | r0 = 0xdf1b0;
0x0006f89c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x0006f8a0 mov r4, sl | r4 = sl;
0x0006f8a2 b 0x6f846 | goto label_0;
| label_8:
0x0006f8a4 mov r4, r0 | r4 = r0;
0x0006f8a6 b 0x6f846 | goto label_0;
| label_10:
0x0006f8a8 tst.w sl, 3 |
| if ((sl & 3) != 0) {
0x0006f8ac bne 0x6f842 | goto label_1;
| }
0x0006f8ae ldr r2, [sp, 0x14] | r2 = var_14h;
| if (r2 != 0) {
0x0006f8b0 cbnz r2, 0x6f8ec | goto label_14;
| }
0x0006f8b2 ubfx r3, sl, 2, 6 | r3 = (sl >> 2) & ((1 << 6) - 1);
0x0006f8b6 ubfx r1, r7, 4, 4 | r1 = (r7 >> 4) & ((1 << 4) - 1);
0x0006f8ba orr.w r2, r3, r7, lsl 4 | r2 = r3 | (r7 << 4);
0x0006f8bc asrs r7, r0, 8 | r7 = r0 >> 8;
0x0006f8be orr.w r1, r1, r4, lsl 2 | r1 |= (r4 << 2);
0x0006f8c2 mov r3, r6 | r3 = r6;
0x0006f8c4 strb r1, [r3], 2 | *(r3) = r1;
| r3 += 2;
0x0006f8c8 strb r2, [r6, 1] | *((r6 + 1)) = r2;
0x0006f8ca mov r6, r3 | r6 = r3;
0x0006f8cc b 0x6f81e | goto label_2;
| label_11:
0x0006f8ce ldr r4, [sp, 0xc] | r4 = var_ch;
0x0006f8d0 b 0x6f856 | goto label_3;
| label_12:
0x0006f8d2 lsls r3, r7, 0x1c | r3 = r7 << 0x1c;
| if (r3 != r7) {
0x0006f8d4 bne 0x6f842 | goto label_1;
| }
0x0006f8d6 ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 == 0) {
0x0006f8d8 cbnz r3, 0x6f8ec |
0x0006f8da lsls r3, r4, 2 | r3 = r4 << 2;
0x0006f8dc and r3, r3, 0x3fc | r3 &= 0x3fc;
0x0006f8e0 orr.w r3, r3, r7, asr 4 | r3 |= (r7 >> 4);
0x0006f8e4 strb r3, [r5], 1 | *(r5) = r3;
| r5++;
0x0006f8e8 mov r6, r5 | r6 = r5;
0x0006f8ea b 0x6f81e | goto label_2;
| }
| label_14:
0x0006f8ec mvn r4, 0x23 | r4 = ~0x23;
0x0006f8f0 b 0x6f846 | goto label_0;
| label_5:
0x0006f8f2 mvn r4, 0xb | r4 = ~0xb;
0x0006f8f6 b 0x6f856 | goto label_3;
| label_13:
0x0006f8f8 blx 0x927c | fprintf_chk ()
0x0006f8fc str r3, [sp, 0x208] | *(arg_208h) = r3;
0x0006f8fe movs r5, r0 | r5 = r0;
0x0006f900 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006f902 movs r0, r0 |
0x0006f904 str r2, [sp, 0x190] | *(arg_190h) = r2;
0x0006f906 movs r5, r0 | r5 = r0;
0x0006f908 ldr r5, [pc, 0xe0] | r5 = *(0x6f9ec);
0x0006f90a movs r3, r0 | r3 = r0;
0x0006f90c ldr r5, [pc, 0x1c8] | r5 = *(0x6fad8);
0x0006f90e movs r3, r0 | r3 = r0;
0x0006f910 ldr r5, [pc, 0x148] | r5 = *(0x6fa5c);
0x0006f912 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6f9c4 */
| #include <stdint.h>
|
; (fcn) fcn.0006f9c4 () | void fcn_0006f9c4 (int16_t arg_90h, int16_t arg_178h, int16_t arg_3e8h) {
| int16_t var_4h;
| int16_t var_18ch;
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
0x0006f9c4 blmi 0x12c22ec | __asm ("blmi aav.0x000590fa");
0x0006f9c8 ldr r0, [pc, 0x124] |
0x0006f9ca add r2, pc | r2 += pc;
0x0006f9cc push {r4, r5, r6, lr} |
0x0006f9ce ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006f9d0 sub sp, 0x18 |
0x0006f9d2 add r0, pc | r0 = 0xdf4c6;
0x0006f9d4 ldr r3, [r3] | r3 = *(r3);
0x0006f9d6 str r3, [sp, 0x14] | var_14h = r3;
0x0006f9d8 mov.w r3, 0 | r3 = 0;
0x0006f9dc blx 0x8de8 | r0 = fcn_00008de8 ();
| if (r0 == 0) {
0x0006f9e0 cbz r0, 0x6f9f8 | goto label_2;
| }
0x0006f9e2 movs r1, 0 | r1 = 0;
0x0006f9e4 mov r4, r0 | r4 = r0;
0x0006f9e6 bl 0x6f934 | r0 = fcn_0006f934 (r0, r1);
0x0006f9ea mov r5, r0 | r5 = r0;
0x0006f9ec cmp r0, 0 |
| if (r0 != 0) {
0x0006f9ee bne 0x6fa9c | goto label_3;
| }
0x0006f9f0 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0006f9f4 cmp r0, 6 |
0x0006f9f6 bgt 0x6fa7c |
| while (1) {
| label_2:
0x0006f9f8 ldr r1, [pc, 0xf8] |
0x0006f9fa movs r4, 0 | r4 = 0;
0x0006f9fc mov r3, r4 | r3 = r4;
0x0006f9fe add r2, sp, 0x10 | r2 += var_10h;
0x0006fa00 mov r0, r4 | r0 = r4;
0x0006fa02 str r4, [sp, 0x10] | var_10h = r4;
0x0006fa04 add r1, pc | r1 = 0xdf4fc;
0x0006fa06 bl 0x73f70 | r0 = fcn_00073f70 ();
0x0006fa0a subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0006fa0c blt 0x6fa48 |
0x0006fa0e ldr r6, [sp, 0x10] | r6 = var_10h;
| if (r6 == 0) {
0x0006fa10 cbz r6, 0x6fa52 | goto label_1;
| }
0x0006fa12 mov r1, r4 | r1 = r4;
0x0006fa14 mov r0, r6 | r0 = r6;
0x0006fa16 bl 0x6f934 | r0 = fcn_0006f934 (r0, r1);
0x0006fa1a mov r5, r0 | r5 = r0;
0x0006fa1c cmp r0, 0 |
| if (r0 != 0) {
0x0006fa1e bne 0x6fabc | goto label_4;
| }
0x0006fa20 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0006fa24 cmp r0, 6 |
| if (r0 <= 6) {
0x0006fa26 ble 0x6fa52 | goto label_1;
| }
0x0006fa28 ldr r2, [pc, 0xcc] |
0x0006fa2a mov r1, r5 | r1 = r5;
0x0006fa2c ldr r3, [pc, 0xcc] |
0x0006fa2e movs r0, 7 | r0 = 7;
0x0006fa30 ldr r4, [pc, 0xcc] |
0x0006fa32 add r2, pc | r2 = 0xdf52e;
0x0006fa34 str r6, [sp, 8] | var_8h = r6;
0x0006fa36 add r3, pc | r3 = 0xdf536;
0x0006fa38 adds r2, 7 | r2 += 7;
0x0006fa3a add r4, pc | r4 = 0xdf53e;
0x0006fa3c str r3, [sp, 4] | var_4h_2 = r3;
0x0006fa3e str r4, [sp] | *(sp) = r4;
0x0006fa40 movs r3, 0x21 | r3 = 0x21;
0x0006fa42 bl 0x71448 | fcn_00071448 ();
0x0006fa46 b 0x6fa50 |
| } else {
0x0006fa48 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0006fa4c cmp r0, 6 |
| if (r0 > 6) {
0x0006fa4e bgt 0x6fac2 | goto label_5;
| }
| }
0x0006fa50 ldr r6, [sp, 0x10] | r6 = var_10h;
| label_1:
0x0006fa52 ldr r0, [pc, 0xb0] |
0x0006fa54 add r0, pc | r0 = 0xdf55e;
0x0006fa56 blx 0x9200 | r0 = fcn_00009200 ();
0x0006fa5a mov r5, r0 | r5 = r0;
| label_0:
0x0006fa5c mov r0, r6 | r0 = r6;
0x0006fa5e blx 0x8dac | fcn_00008dac ();
0x0006fa62 ldr r2, [pc, 0xa4] |
0x0006fa64 ldr r3, [pc, 0x84] | r3 = *(0x6faec);
0x0006fa66 add r2, pc | r2 = 0xdf574;
0x0006fa68 ldr r3, [r2, r3] | r3 = *(0xdf574);
0x0006fa6a ldr r2, [r3] | r2 = *(0xdf574);
0x0006fa6c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006fa6e eors r2, r3 | r2 ^= r3;
0x0006fa70 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006fa74 bne 0x6fae2 | goto label_6;
| }
0x0006fa76 mov r0, r5 | r0 = r5;
0x0006fa78 add sp, 0x18 |
0x0006fa7a pop {r4, r5, r6, pc} |
0x0006fa7c ldr r2, [pc, 0x8c] |
0x0006fa7e mov r1, r5 | r1 = r5;
0x0006fa80 ldr r3, [pc, 0x8c] |
0x0006fa82 movs r0, 7 | r0 = 7;
0x0006fa84 ldr r6, [pc, 0x8c] |
0x0006fa86 add r2, pc | r2 = 0xdf596;
0x0006fa88 str r4, [sp, 8] | var_8h = r4;
0x0006fa8a add r3, pc | r3 = 0xdf59e;
0x0006fa8c adds r2, 7 | r2 += 7;
0x0006fa8e add r6, pc | r6 = 0xdf5a6;
0x0006fa90 str r3, [sp, 4] | var_4h_2 = r3;
0x0006fa92 str r6, [sp] | *(sp) = r6;
0x0006fa94 movs r3, 0x17 | r3 = 0x17;
0x0006fa96 bl 0x71448 | fcn_00071448 ();
0x0006fa9a b 0x6f9f8 |
| }
| label_3:
0x0006fa9c ldr r2, [pc, 0x78] |
0x0006fa9e ldr r3, [pc, 0x4c] | r3 = *(0x6faee);
0x0006faa0 add r2, pc | r2 = 0xdf5bc;
0x0006faa2 ldr r3, [r2, r3] | r3 = *(0xdf5bc);
0x0006faa4 ldr r2, [r3] | r2 = *(0xdf5bc);
0x0006faa6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006faa8 eors r2, r3 | r2 ^= r3;
0x0006faaa mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0006faae bne 0x6fae2 |
0x0006fab0 mov r0, r4 | r0 = r4;
0x0006fab2 add sp, 0x18 |
0x0006fab4 pop.w {r4, r5, r6, lr} |
0x0006fab8 b.w 0x91fc | void (*0x91fc)() ();
| label_4:
0x0006fabc mov r5, r6 | r5 = r6;
0x0006fabe mov r6, r4 | r6 = r4;
0x0006fac0 b 0x6fa5c | goto label_0;
| label_5:
0x0006fac2 ldr r2, [pc, 0x58] |
0x0006fac4 movs r3, 0x1d | r3 = 0x1d;
0x0006fac6 ldr r4, [pc, 0x58] |
0x0006fac8 mov r1, r5 | r1 = r5;
0x0006faca ldr r0, [pc, 0x58] |
0x0006facc add r2, pc | r2 = 0xdf5ee;
0x0006face add r4, pc | r4 = 0xdf5f4;
0x0006fad0 adds r2, 7 | r2 += 7;
0x0006fad2 add r0, pc | r0 = 0xdf5fc;
0x0006fad4 strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x0006fad8 movs r0, 7 | r0 = 7;
0x0006fada bl 0x71448 | fcn_00071448 ();
0x0006fade ldr r6, [sp, 0x10] | r6 = var_10h;
0x0006fae0 b 0x6fa52 | goto label_1;
| }
| label_6:
0x0006fae2 blx 0x927c | fprintf_chk ()
0x0006fae6 nop |
0x0006fae8 str r0, [sp, 0x3e8] | *(arg_3e8h) = r0;
0x0006faea movs r5, r0 | r5 = r0;
0x0006faec lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006faee movs r0, r0 |
0x0006faf0 ldr r4, [pc, 0x268] | r4 = *(0x6fd5c);
0x0006faf2 movs r3, r0 | r3 = r0;
0x0006faf4 ldr r4, [pc, 0x1c0] | r4 = *(0x6fcb8);
0x0006faf6 movs r3, r0 | r3 = r0;
0x0006faf8 ldr r4, [pc, 0x158] | r4 = *(0x6fc54);
0x0006fafa movs r3, r0 | r3 = r0;
0x0006fafc ldr r4, [pc, 0x378] | r4 = *(0x6fe78);
0x0006fafe movs r3, r0 | r3 = r0;
0x0006fb00 ldr r5, [pc, 0xc8] | r5 = *(0x6fbcc);
0x0006fb02 movs r3, r0 | r3 = r0;
0x0006fb04 ldr r4, [pc, 0x3c0] | r4 = *(0x6fec8);
0x0006fb06 movs r3, r0 | r3 = r0;
0x0006fb08 str r0, [sp, 0x178] | *(arg_178h) = r0;
0x0006fb0a movs r5, r0 | r5 = r0;
0x0006fb0c ldr r4, [pc, 8] | r4 = *(0x6fb18);
0x0006fb0e movs r3, r0 | r3 = r0;
0x0006fb10 ldr r4, [pc, 0x88] | r4 = *(0x6fb9c);
0x0006fb12 movs r3, r0 | r3 = r0;
0x0006fb14 ldr r4, [pc, 0x378] | r4 = *(0x6fe90);
0x0006fb16 movs r3, r0 | r3 = r0;
0x0006fb18 str r0, [sp, 0x90] | *(arg_90h) = r0;
0x0006fb1a movs r5, r0 | r5 = r0;
0x0006fb1c ldr r3, [pc, 0x2f0] | r3 = *(0x6fe10);
0x0006fb1e movs r3, r0 | r3 = r0;
0x0006fb20 ldr r4, [pc, 0x68] | r4 = *(0x6fb8c);
0x0006fb22 movs r3, r0 | r3 = r0;
0x0006fb24 ldr r4, [pc, 0x268] | r4 = *(0x6fd90);
0x0006fb26 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6fb28 */
| #include <stdint.h>
|
; (fcn) fcn.0006fb28 () | void fcn_0006fb28 () {
| int16_t var_ch;
| int16_t var_4h;
| int16_t var_45h;
| int16_t var_18ch;
0x0006fb28 blmi 0x7c23a0 | __asm ("blmi aav.0x00058f94");
0x0006fb2c push {r4, lr} |
0x0006fb2e sub sp, 0x190 |
0x0006fb30 add r2, pc | r2 += pc;
0x0006fb32 add r4, sp, 4 | r4 += var_4h;
0x0006fb34 mov r0, r4 | r0 = r4;
0x0006fb36 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006fb38 ldr r3, [r3] | r3 = *(r3);
0x0006fb3a str r3, [sp, 0x18c] | var_18ch = r3;
0x0006fb3c mov.w r3, 0 | r3 = 0;
0x0006fb40 blx 0x8c60 | r0 = fcn_00008c60 ();
0x0006fb44 cmp r0, 0 |
| if (r0 < 0) {
0x0006fb46 blt 0x6fb84 | goto label_1;
| }
0x0006fb48 ldrb.w r3, [r4, 0x41] | r3 = var_45h;
0x0006fb4c cbnz r3, 0x6fb6a |
| while (r0 == 0) {
0x0006fb4e bl 0x6f9c4 | fcn_0006f9c4 (r0, r1, r2);
| label_0:
0x0006fb52 ldr r2, [pc, 0x50] |
0x0006fb54 ldr r3, [pc, 0x48] | r3 = *(0x6fba0);
0x0006fb56 add r2, pc | r2 = 0xdf700;
0x0006fb58 ldr r3, [r2, r3] | r3 = *(0xdf700);
0x0006fb5a ldr r2, [r3] | r2 = *(0xdf700);
0x0006fb5c ldr r3, [sp, 0x18c] | r3 = var_18ch;
0x0006fb5e eors r2, r3 | r2 ^= r3;
0x0006fb60 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006fb64 bne 0x6fb98 | goto label_2;
| }
0x0006fb66 add sp, 0x190 |
0x0006fb68 pop {r4, pc} |
0x0006fb6a ldr r1, [pc, 0x3c] |
0x0006fb6c add.w r4, sp, 0x45 | r4 += var_45h;
0x0006fb70 mov r0, r4 | r0 = r4;
0x0006fb72 add r1, pc | r1 = 0xdf720;
0x0006fb74 blx 0x95e0 | r0 = fcn_000095e0 ();
0x0006fb78 cmp r0, 0 |
0x0006fb7a beq 0x6fb4e |
| }
0x0006fb7c mov r0, r4 | r0 = r4;
0x0006fb7e blx 0x9200 | fcn_00009200 ();
0x0006fb82 b 0x6fb52 | goto label_0;
| label_1:
0x0006fb84 ldr r1, [pc, 0x24] |
0x0006fb86 movs r2, 0x2f | r2 = 0x2f;
0x0006fb88 ldr r3, [pc, 0x24] |
0x0006fb8a ldr r0, [pc, 0x28] |
0x0006fb8c add r1, pc | r1 = 0xdf73c;
0x0006fb8e add r3, pc | r3 = 0xdf742;
0x0006fb90 adds r1, 7 | r1 += 7;
0x0006fb92 add r0, pc | r0 = 0xdf74c;
0x0006fb94 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x0006fb98 blx 0x927c | fprintf_chk ()
0x0006fb9c ldrh r4, [r2, 0x3c] | r4 = *((r2 + 0x3c));
0x0006fb9e movs r5, r0 | r5 = r0;
0x0006fba0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006fba2 movs r0, r0 |
0x0006fba4 ldrh r6, [r5, 0x3a] | r6 = *((r5 + 0x3a));
0x0006fba6 movs r5, r0 | r5 = r0;
0x0006fba8 ldr r3, [pc, 0x378] | r3 = *(0x6ff24);
0x0006fbaa movs r3, r0 | r3 = r0;
0x0006fbac ldr r2, [pc, 0x3f0] | r2 = *(0x6ffa0);
0x0006fbae movs r3, r0 | r3 = r0;
0x0006fbb0 ldr r3, [pc, 0x328] | r3 = *(0x6fedc);
0x0006fbb2 movs r3, r0 | r3 = r0;
0x0006fbb4 cdp2 p0, 2, c0, c6, c1, 0 | __asm ("cdp2 p0, 2, c0, c6, c1, 0");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6fbb8 */
| #include <stdint.h>
|
; (fcn) fcn.0006fbb8 () | void fcn_0006fbb8 (int16_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ah;
| int16_t var_ch_2;
| int16_t var_4h_2;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006fbb8 blx 0xfec9d180 | void (*0xfec9d180)() ();
0x0006fbbc invalid |
0x0006fbc0 lsrs r6, r6, 5 | r6 >>= 5;
0x0006fbc2 cmp r1, 0 |
0x0006fbc4 ldr r4, [pc, 0xb8] |
0x0006fbc6 it eq |
| if (r1 != 0) {
0x0006fbc8 moveq r6, 0 | r6 = 0;
| }
0x0006fbca add r5, pc | r5 += pc;
0x0006fbcc sub sp, 0x10 |
0x0006fbce ldr r4, [r5, r4] | r4 = *((r5 + r4));
0x0006fbd0 ldr r4, [r4] | r4 = *(0x6fc80);
0x0006fbd2 str r4, [sp, 0xc] | var_ch = r4;
0x0006fbd4 mov.w r4, 0 | r4 = 0;
0x0006fbd8 cmp r6, 0 |
| if (r6 != 0) {
0x0006fbda bne 0x6fc64 | goto label_2;
| }
0x0006fbdc mov r4, r1 | r4 = r1;
| if (r1 == 0) {
0x0006fbde cbz r1, 0x6fc50 | goto label_3;
| }
0x0006fbe0 cmp.w r3, -1 |
0x0006fbe4 it eq |
| if (r3 == -1) {
0x0006fbe6 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
0x0006fbea mov r5, r0 | r5 = r0;
0x0006fbec it eq |
| if (r3 != -1) {
0x0006fbee moveq r2, r6 | r2 = r6;
| }
| if (r3 != -1) {
0x0006fbf0 bne 0x6fc38 | goto label_4;
| }
0x0006fbf2 movs r3, 0 | r3 = 0;
0x0006fbf4 mov r1, r4 | r1 = r4;
0x0006fbf6 mov r0, r5 | r0 = r5;
0x0006fbf8 blx 0x8d2c | r0 = fcn_00008d2c ();
0x0006fbfc cmp r0, 0 |
| if (r0 < 0) {
0x0006fbfe blt 0x6fc54 | goto label_5;
| }
| if (r0 == 0) {
| label_0:
0x0006fc00 beq 0x6fc20 | goto label_1;
| }
0x0006fc02 mov r1, r0 | r1 = r0;
0x0006fc04 movs r3, 0 | r3 = 0;
0x0006fc06 add.w ip, r5, 6 |
| do {
0x0006fc0a ldrsh.w r2, [ip, r3, lsl 3] | offset_0 = r3 << 3;
| r2 = *((ip + offset_0));
| if (r2 != 0) {
0x0006fc0e cbz r2, 0x6fc16 |
0x0006fc10 lsls r2, r2, 0x1a | r2 <<= 0x1a;
| if (r2 < r2) {
0x0006fc12 bmi 0x6fc5e | goto label_6;
| }
0x0006fc14 subs r1, 1 | r1--;
| }
0x0006fc16 adds r3, 1 | r3++;
0x0006fc18 cmp r1, 0 |
0x0006fc1a it ne |
| if (r1 != 0) {
0x0006fc1c cmpne r4, r3 | __asm ("cmpne r4, r3");
| }
0x0006fc1e bhi 0x6fc0a |
| } while (r1 > 0);
| label_1:
0x0006fc20 ldr r2, [pc, 0x60] |
0x0006fc22 ldr r3, [pc, 0x5c] | r3 = *(0x6fc82);
0x0006fc24 add r2, pc | r2 = 0xdf8ac;
0x0006fc26 ldr r3, [r2, r3] | r3 = *(0xdf8ac);
0x0006fc28 ldr r2, [r3] | r2 = *(0xdf8ac);
0x0006fc2a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006fc2c eors r2, r3 | r2 ^= r3;
0x0006fc2e mov.w r3, 0 | r3 = 0;
0x0006fc30 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0006fc32 bne 0x6fc78 | goto label_7;
| }
0x0006fc34 add sp, 0x10 |
0x0006fc36 pop {r4, r5, r6, pc} |
| label_4:
0x0006fc38 add r0, sp, 4 | r0 += var_4h_2;
0x0006fc3a bl 0x7c6a8 | fcn_0007c6a8 (r0, r1, r2, r3, r4);
0x0006fc3c ldc2 p3, c2, [r5, -0]! | __asm ("ldc2 p3, c2, [r5, -0]!");
0x0006fc40 mov r2, r0 | r2 = r0;
0x0006fc42 mov r1, r4 | r1 = r4;
0x0006fc44 mov r0, r5 | r0 = r5;
0x0006fc46 blx 0x8d2c | r0 = fcn_00008d2c ();
0x0006fc4a cmp r0, 0 |
| if (r0 >= 0) {
0x0006fc4c bge 0x6fc00 | goto label_0;
| }
0x0006fc4e b 0x6fc54 | goto label_5;
| label_3:
0x0006fc50 mov r0, r1 | r0 = r1;
0x0006fc52 b 0x6fc20 | goto label_1;
| label_5:
0x0006fc54 blx 0x9628 | r0 = fcn_00009628 ();
0x0006fc58 ldr r0, [r0] | r0 = *(r0);
0x0006fc5a rsbs r0, r0, 0 | r0 -= ;
0x0006fc5c b 0x6fc20 | goto label_1;
| label_6:
0x0006fc5e mvn r0, 8 | r0 = ~8;
0x0006fc62 b 0x6fc20 | goto label_1;
| label_2:
0x0006fc64 ldr r1, [pc, 0x20] |
0x0006fc66 movs r2, 0xa5 | r2 = 0xa5;
0x0006fc68 ldr r3, [pc, 0x20] |
0x0006fc6a ldr r0, [pc, 0x24] |
0x0006fc6c add r1, pc | r1 = 0xdf8f8;
0x0006fc6e add r3, pc | r3 = 0xdf8fe;
0x0006fc70 adds r1, 7 | r1 += 7;
0x0006fc72 add r0, pc | r0 = 0xdf908;
0x0006fc74 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x0006fc78 blx 0x927c | fprintf_chk ()
0x0006fc7c ldrh r2, [r7, 0x36] | r2 = *((r7 + 0x36));
0x0006fc7e movs r5, r0 | r5 = r0;
0x0006fc80 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006fc82 movs r0, r0 |
0x0006fc84 ldrh r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x0006fc86 movs r5, r0 | r5 = r0;
0x0006fc88 ldr r3, [pc, 0x60] | r3 = *(0x6fcec);
0x0006fc8a movs r3, r0 | r3 = r0;
0x0006fc8c ldr r3, [pc, 0x178] | r3 = *(0x6fe08);
0x0006fc8e movs r3, r0 | r3 = r0;
0x0006fc90 ldr r3, [pc, 0xb8] | r3 = *(0x6fd4c);
0x0006fc92 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6fc94 */
| #include <stdint.h>
|
; (fcn) fcn.0006fc94 () | void fcn_0006fc94 (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ah;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0006fc94 pkhbtmi fp, ip, r0, lsl 0xa | __asm ("pkhbtmi fp, ip, r0, lsl 0xa");
0x0006fc98 ldr r4, [pc, 0x50] |
0x0006fc9a sub sp, 0x10 |
0x0006fc9c movs r1, 0 | r1 = 0;
0x0006fc9e ldr.w lr, [pc, 0x50] | lr = *(0x6fcf2);
0x0006fca2 add r4, pc | r4 = 0xdf992;
0x0006fca4 ldr.w lr, [r4, lr] |
0x0006fca8 ldr.w lr, [lr] | lr = *(0xdf992);
0x0006fcac str.w lr, [sp, 0xc] | __asm ("str.w lr, [var_ch]");
0x0006fcb0 mov.w lr, 0 | lr = 0;
0x0006fcb2 lsrs r0, r0, 0x18 | r0 >>= 0x18;
0x0006fcb4 strh.w r1, [sp, 0xa] | var_ah = r1;
0x0006fcb8 str r0, [sp, 4] | var_4h = r0;
0x0006fcba movs r1, 1 | r1 = 1;
0x0006fcbc add r0, sp, 4 | r0 += var_4h;
0x0006fcbe strh.w ip, [sp, 8] | var_8h = ip;
0x0006fcc2 bl 0x6fbb8 | fcn_0006fbb8 (r0, r1, r2, r3);
0x0006fcc6 ldr r2, [pc, 0x2c] |
0x0006fcc8 cmp r0, 0 |
0x0006fcca ldr r3, [pc, 0x24] | r3 = *(0x6fcf2);
0x0006fccc it gt |
| if (r0 > 0) {
0x0006fcce ldrshgt r0, [sp, 0xa] | __asm ("ldrshgt r0, [var_ah]");
| }
0x0006fcd2 add r2, pc | r2 = 0xdf9cc;
0x0006fcd4 ldr r3, [r2, r3] | r3 = *(0xdf9cc);
0x0006fcd6 ldr r2, [r3] | r2 = *(0xdf9cc);
0x0006fcd8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006fcda eors r2, r3 | r2 ^= r3;
0x0006fcdc mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0006fce0 bne 0x6fce6 |
0x0006fce2 add sp, 0x10 |
0x0006fce4 pop {r4, pc} |
| }
0x0006fce6 blx 0x927c | fprintf_chk ()
0x0006fcea nop |
0x0006fcec ldrh r2, [r4, 0x30] | r2 = *((r4 + 0x30));
0x0006fcee movs r5, r0 | r5 = r0;
0x0006fcf0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006fcf2 movs r0, r0 |
0x0006fcf4 ldrh r2, [r6, 0x2e] | r2 = *((r6 + 0x2e));
0x0006fcf6 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6fcf8 */
| #include <stdint.h>
|
; (fcn) fcn.0006fcf8 () | void fcn_0006fcf8 (int16_t arg_804h, int16_t arg1) {
| int16_t var_4h_2;
| r0 = arg1;
0x0006fcf8 blmi 0x88257c | __asm ("blmi aav.0x00058dc2");
0x0006fcfc push {r4, r5, r6, lr} |
0x0006fcfe subw sp, sp, 0x808 | __asm ("subw sp, sp, aav.0x000000ff");
0x0006fd02 add r2, pc | r2 += pc;
0x0006fd04 movs r5, 0 | r5 = 0;
0x0006fd06 mov r4, r0 | r4 = r0;
0x0006fd08 add r6, sp, 4 | r6 += var_4h_2;
0x0006fd0a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006fd0c ldr r3, [r3] | r3 = *(r3);
0x0006fd0e str.w r3, [sp, 0x804] | __asm ("str.w r3, [arg_804h]");
0x0006fd12 mov.w r3, 0 | r3 = 0;
| do {
| label_0:
0x0006fd16 movs r2, 0 | r2 = 0;
0x0006fd18 movs r3, 0 | r3 = 0;
0x0006fd1a movs r1, 1 | r1 = 1;
0x0006fd1c mov r0, r4 | r0 = r4;
0x0006fd1e bl 0x6fc94 | r0 = fcn_0006fc94 (r0, r1);
0x0006fd22 cmp r0, 0 |
| if (r0 < 0) {
0x0006fd24 blt 0x6fd3e | goto label_2;
| }
| if (r0 == 0) {
0x0006fd26 beq 0x6fd70 | goto label_3;
| }
0x0006fd28 mov.w r2, 0x800 | r2 = 0x800;
0x0006fd2c mov r1, r6 | r1 = r6;
0x0006fd2e mov r0, r4 | r0 = r4;
0x0006fd30 blx 0x8dc4 | r0 = fcn_00008dc4 ();
0x0006fd34 cmp r0, 0 |
| if (r0 < 0) {
0x0006fd36 blt 0x6fd5e | goto label_4;
| }
| if (r0 == 0) {
0x0006fd38 beq 0x6fd70 | goto label_3;
| }
0x0006fd3a add r5, r0 | r5 += r0;
0x0006fd3c b 0x6fd16 |
| } while (1);
| label_2:
0x0006fd3e adds r3, r0, 4 | r3 = r0 + 4;
| if (r3 == r0) {
0x0006fd40 beq 0x6fd16 | goto label_0;
| }
| label_1:
0x0006fd42 ldr r2, [pc, 0x3c] |
0x0006fd44 ldr r3, [pc, 0x34] | r3 = *(0x6fd7c);
0x0006fd46 add r2, pc | r2 = 0xdfacc;
0x0006fd48 ldr r3, [r2, r3] | r3 = *(0xdfacc);
0x0006fd4a ldr r2, [r3] | r2 = *(0xdfacc);
0x0006fd4c ldr.w r3, [sp, 0x804] | r3 = *(arg_804h);
0x0006fd50 eors r2, r3 | r2 ^= r3;
0x0006fd52 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006fd56 bne 0x6fd74 | goto label_5;
| }
0x0006fd58 addw sp, sp, 0x808 | __asm ("addw sp, sp, aav.0x000000ff");
0x0006fd5c pop {r4, r5, r6, pc} |
| label_4:
0x0006fd5e blx 0x9628 | r0 = fcn_00009628 ();
0x0006fd62 ldr r0, [r0] | r0 = *(r0);
0x0006fd64 cmp r0, 4 |
| if (r0 == 4) {
0x0006fd66 beq 0x6fd16 | goto label_0;
| }
0x0006fd68 cmp r0, 0xb |
0x0006fd6a it ne |
| if (r0 == 0xb) {
0x0006fd6c rsbne r0, r0, 0 | __asm ("rsbne r0, r0, 0");
| goto label_6;
| }
| if (r0 != 0xb) {
| label_6:
0x0006fd6e bne 0x6fd42 | goto label_1;
| }
| label_3:
0x0006fd70 mov r0, r5 | r0 = r5;
0x0006fd72 b 0x6fd42 | goto label_1;
| label_5:
0x0006fd74 blx 0x927c | fprintf_chk ()
0x0006fd78 ldrh r2, [r0, 0x2e] | r2 = *((r0 + 0x2e));
0x0006fd7a movs r5, r0 | r5 = r0;
0x0006fd7c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0006fd7e movs r0, r0 |
0x0006fd80 ldrh r6, [r7, 0x2a] | r6 = *((r7 + 0x2a));
0x0006fd82 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x6ff50 */
| #include <stdint.h>
|
; (fcn) fcn.0006ff50 () | void fcn_0006ff50 () {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int32_t var_18h_2;
| int16_t var_24h;
0x0006ff50 movwhs r4, 0x975 | __asm ("movwhs r4, aav.0x00058b66");
0x0006ff54 ldr r2, [pc, 0x1d4] |
0x0006ff56 movs r0, 0x55 | r0 = 0x55;
0x0006ff58 push.w {r4, r5, r6, r7, r8, lr} |
0x0006ff5c sub sp, 0x28 |
0x0006ff5e add r1, pc | r1 += pc;
0x0006ff60 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x0006ff62 ldr r2, [r2] | r2 = *(0x7012c);
0x0006ff64 str r2, [sp, 0x24] | var_24h = r2;
0x0006ff66 mov.w r2, 0 | r2 = 0;
0x0006ff6a strd r3, r3, [sp, 0x10] | __asm ("strd r3, r3, [var_14h]");
0x0006ff6e blx 0x8a90 | r0 = pthread_sigmask ();
0x0006ff72 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 <= r0) {
0x0006ff74 ble.w 0x70096 | goto label_3;
| }
0x0006ff76 strh r7, [r1, 4] | *((r1 + 4)) = r7;
0x0006ff78 bl 0x725dc | fcn_000725dc ();
0x0006ff7c asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x0006ff7e umull r7, r4, r4, r0 | r7:r4 = r4 * r0;
0x0006ff82 mov r5, r0 | r5 = r0;
0x0006ff84 add r0, sp, 0x10 | r0 += var_10h;
0x0006ff86 mla r4, r5, r3, r4 | __asm ("mla r4, r5, r3, r4");
0x0006ff8a bl 0x66b34 | fcn_00066b34 (r0);
0x0006ff8c ldc2l p14, c1, [r3, 0x18] | __asm ("ldc2l p14, c1, [r3, 0x18]");
| if (r4 >= r0) {
0x0006ff90 blt 0x6fff4 |
0x0006ff92 bl 0x66e7c | fcn_00066e7c ();
0x0006ff96 subs r6, r0, 0 | r6 -= var_10h;
| if (r6 < var_10h) {
0x0006ff98 blt 0x70052 | goto label_4;
| }
0x0006ff9a ldr r1, [sp, 0x10] | r1 = var_10h;
0x0006ff9c add r3, sp, 0x14 | r3 += var_14h;
| if (r6 != var_10h) {
0x0006ff9e bne 0x7002a | goto label_5;
| }
0x0006ffa0 ldr r2, [pc, 0x18c] |
0x0006ffa2 ldr r0, [pc, 0x190] |
0x0006ffa4 add r2, pc | r2 = 0xe00d8;
0x0006ffa6 add r0, pc | r0 = 0xe00e0;
0x0006ffa8 bl 0x673a8 | r0 = fcn_000673a8 (r0, r1, r2, r3);
0x0006ffac subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0006ffae blt.w 0x700d4 | goto label_6;
| }
0x0006ffb2 ldr r6, [sp, 0x14] | r6 = var_14h;
| label_0:
0x0006ffb4 add r2, sp, 0x18 | r2 += var_18h;
0x0006ffb6 mov r0, r6 | r0 = r6;
0x0006ffb8 movs r1, 0 | r1 = 0;
0x0006ffba bl 0x747dc | r0 = fcn_000747dc (r0, r1, r2);
0x0006ffbe subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0006ffc2 blt 0x700aa | goto label_7;
| }
0x0006ffc4 ldrd r0, r1, [sp, 0x18] | __asm ("ldrd r0, r1, [var_18h]");
0x0006ffc8 ldr r6, [sp, 0x14] | r6 = var_14h;
0x0006ffca cmp.w r1, -1 |
0x0006ffce it eq |
| if (r1 == -1) {
0x0006ffd0 cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| }
| if (r1 == -1) {
0x0006ffd4 beq 0x6fffe | goto label_1;
| }
0x0006ffd6 movs r3, 0 | r3 = 0;
0x0006ffd8 mov r2, r5 | r2 = r5;
0x0006ffda bl 0x80fd8 | r0 = fcn_00080fd8 (r0, r1, r2, r3);
0x0006ffde umull r0, r3, r0, r5 | r0:r3 = r0 * r5;
0x0006ffe2 mla r1, r5, r1, r3 | __asm ("mla r1, r5, r1, r3");
0x0006ffe6 cmp r0, r7 |
0x0006ffe8 sbcs.w r3, r1, r4 | __asm ("sbcs.w r3, r1, r4");
0x0006ffec itt lo |
| if (r0 >= r7) {
0x0006ffee movlo r7, r0 | r7 = r0;
| }
| if (r0 >= r7) {
0x0006fff0 movlo r4, r1 | r4 = r1;
| }
0x0006fff2 b 0x6fffe | goto label_1;
| }
0x0006fff4 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0006fff8 cmp r0, 6 |
| if (r0 > 6) {
0x0006fffa bgt 0x70078 | goto label_8;
| }
| do {
| label_2:
0x0006fffc ldr r6, [sp, 0x14] | r6 = var_14h;
| label_1:
0x0006fffe mov r0, r6 | r0 = r6;
0x00070000 blx 0x8dac | fcn_00008dac ();
0x00070004 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00070006 blx 0x8dac | fcn_00008dac ();
0x00070008 vfnma.f32 s9, s4, s22 | __asm ("vfnma.f32 s9, s4, s22");
0x0007000c ldr r3, [pc, 0x11c] | r3 = *(0x7012c);
0x0007000e add r2, pc | r2 += pc;
0x00070010 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00070012 ldr r2, [r3] | r2 = *(0x7012c);
0x00070014 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00070016 eors r2, r3 | r2 ^= r3;
0x00070018 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007001c bne.w 0x70124 | goto label_9;
| }
0x00070020 mov r0, r7 | r0 = r7;
0x00070022 mov r1, r4 | r1 = r4;
0x00070024 add sp, 0x28 |
0x00070026 pop.w {r4, r5, r6, r7, r8, pc} |
| label_5:
0x0007002a ldr r2, [pc, 0x110] |
0x0007002c ldr r0, [pc, 0x110] |
0x0007002e add r2, pc | r2 = 0xe0170;
0x00070030 add r0, pc | r0 = 0xe0174;
0x00070032 bl 0x673a8 | r0 = fcn_000673a8 (r0, r1, r2, r3);
0x00070036 adds r3, r0, 2 | r3 = r0 + 2;
0x00070038 mov r6, r0 | r6 = r0;
0x0007003a beq 0x6fffc |
| } while (r3 == r0);
0x0007003c cmp r0, 0 |
| if (r0 < 0) {
0x0007003e blt 0x700fc | goto label_10;
| }
0x00070040 ldr r6, [sp, 0x14] | r6 = var_14h;
0x00070042 ldr r1, [pc, 0x100] |
0x00070044 mov r0, r6 | r0 = r6;
0x00070046 add r1, pc | r1 = 0xe0190;
0x00070048 blx 0x95e0 | r0 = fcn_000095e0 ();
0x0007004c cmp r0, 0 |
| if (r0 != 0) {
0x0007004e bne 0x6ffb4 | goto label_0;
| }
0x00070050 b 0x6fffe | goto label_1;
| label_4:
0x00070052 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00070056 cmp r0, 6 |
| if (r0 <= 6) {
0x00070058 ble 0x6fffc | goto label_2;
| }
0x0007005a ldr r3, [pc, 0xec] |
0x0007005c mov r1, r6 | r1 = r6;
0x0007005e ldr r2, [pc, 0xec] |
0x00070060 movs r0, 7 | r0 = 7;
0x00070062 add r3, pc | r3 = 0xe01b0;
0x00070064 str r3, [sp, 4] | var_4h = r3;
0x00070066 add r2, pc | r2 = 0xe01b8;
0x00070068 ldr r3, [pc, 0xe4] |
0x0007006a adds r2, 7 | r2 += 7;
0x0007006c add r3, pc | r3 = 0xe01c0;
0x0007006e str r3, [sp] | *(sp) = r3;
0x00070070 movs r3, 0x27 | r3 = 0x27;
0x00070072 bl 0x71448 | fcn_00071448 ();
0x00070076 b 0x6fffc | goto label_2;
| label_8:
0x00070078 ldr r3, [pc, 0xd8] |
0x0007007a mov r1, r6 | r1 = r6;
0x0007007c ldr r2, [pc, 0xd8] |
0x0007007e movs r0, 7 | r0 = 7;
0x00070080 add r3, pc | r3 = 0xe01d8;
0x00070082 str r3, [sp, 4] | var_4h = r3;
0x00070084 add r2, pc | r2 = 0xe01e0;
0x00070086 ldr r3, [pc, 0xd4] |
0x00070088 adds r2, 7 | r2 += 7;
0x0007008a add r3, pc | r3 = 0xe01ec;
0x0007008c str r3, [sp] | *(sp) = r3;
0x0007008e movs r3, 0x21 | r3 = 0x21;
0x00070090 bl 0x71448 | fcn_00071448 ();
0x00070094 b 0x6fffc | goto label_2;
| label_3:
0x00070096 ldr r1, [pc, 0xc8] |
0x00070098 movs r2, 0x1a | r2 = 0x1a;
0x0007009a ldr r3, [pc, 0xc8] |
0x0007009c ldr r0, [pc, 0xc8] |
0x0007009e add r1, pc | r1 = 0xe0204;
0x000700a0 add r3, pc | r3 = 0xe020a;
0x000700a2 adds r1, 7 | r1 += 7;
0x000700a4 add r0, pc | r0 = 0xe0210;
0x000700a6 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x000700aa bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000700ae cmp r0, 6 |
0x000700b0 ldr r6, [sp, 0x14] | r6 = var_14h;
| if (r0 <= 6) {
0x000700b2 ble 0x6fffe | goto label_1;
| }
0x000700b4 ldr r3, [pc, 0xb4] |
0x000700b6 mov r1, r8 | r1 = r8;
0x000700b8 ldr r2, [pc, 0xb4] |
0x000700ba movs r0, 7 | r0 = 7;
0x000700bc str r6, [sp, 8] | var_8h = r6;
0x000700be add r3, pc | r3 = 0xe022e;
0x000700c0 str r3, [sp, 4] | var_4h = r3;
0x000700c2 add r2, pc | r2 = 0xe0236;
0x000700c4 ldr r3, [pc, 0xac] |
0x000700c6 adds r2, 7 | r2 += 7;
0x000700c8 add r3, pc | r3 = 0xe0240;
0x000700ca str r3, [sp] | *(sp) = r3;
0x000700cc movs r3, 0x42 | r3 = 0x42;
0x000700ce bl 0x71448 | fcn_00071448 ();
0x000700d2 b 0x6fffc | goto label_2;
| label_6:
0x000700d4 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000700d8 cmp r0, 6 |
| if (r0 <= 6) {
0x000700da ble 0x6fffc | goto label_2;
| }
0x000700dc ldr r3, [pc, 0x98] |
0x000700de mov r1, r6 | r1 = r6;
0x000700e0 ldr r2, [pc, 0x98] |
0x000700e2 movs r0, 7 | r0 = 7;
0x000700e4 add r3, pc | r3 = 0xe0260;
0x000700e6 str r3, [sp, 4] | var_4h = r3;
0x000700e8 add r2, pc | r2 = 0xe0268;
0x000700ea ldr r3, [pc, 0x94] |
0x000700ec adds r2, 7 | r2 += 7;
0x000700ee add r3, pc | r3 = 0xe0274;
0x000700f0 str r3, [sp] | *(sp) = r3;
0x000700f2 movs r3, 0x3b | r3 = 0x3b;
0x000700f4 bl 0x71448 | fcn_00071448 ();
0x000700f8 ldr r6, [sp, 0x14] | r6 = var_14h;
0x000700fa b 0x6fffe | goto label_1;
| label_10:
0x000700fc bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00070100 cmp r0, 6 |
| if (r0 <= 6) {
0x00070102 ble.w 0x6fffc | goto label_2;
| }
0x00070106 ldr r3, [pc, 0x7c] |
0x00070108 mov r1, r6 | r1 = r6;
0x0007010a ldr r2, [pc, 0x7c] |
0x0007010c movs r0, 7 | r0 = 7;
0x0007010e add r3, pc | r3 = 0xe0298;
0x00070110 str r3, [sp, 4] | var_4h = r3;
0x00070112 add r2, pc | r2 = 0xe02a0;
0x00070114 ldr r3, [pc, 0x74] |
0x00070116 adds r2, 7 | r2 += 7;
0x00070118 add r3, pc | r3 = 0xe02a8;
0x0007011a str r3, [sp] | *(sp) = r3;
0x0007011c movs r3, 0x32 | r3 = 0x32;
0x0007011e bl 0x71448 | fcn_00071448 ();
0x00070122 b 0x6fffc | goto label_2;
| label_9:
0x00070124 blx 0x927c | fprintf_chk ()
0x00070128 ldrh r6, [r4, 0x1a] | r6 = *((r4 + 0x1a));
0x0007012a movs r5, r0 | r5 = r0;
0x0007012c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007012e movs r0, r0 |
0x00070130 ldr r1, [pc, 0x180] | r1 = *(0x702b4);
0x00070132 movs r3, r0 | r3 = r0;
0x00070134 cmp r1, 0x12 |
0x00070136 movs r3, r0 | r3 = r0;
0x00070138 ldrh r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x0007013a movs r5, r0 | r5 = r0;
0x0007013c ldr r0, [pc, 0x1d8] | r0 = *(0x70318);
0x0007013e movs r3, r0 | r3 = r0;
0x00070140 cmp r0, 0x88 |
0x00070142 movs r3, r0 | r3 = r0;
0x00070144 ldr r0, [pc, 0x2e8] | r0 = *(0x70430);
0x00070146 movs r3, r0 | r3 = r0;
0x00070148 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x70190 */
| #include <stdint.h>
|
; (fcn) fcn.00070190 () | void fcn_00070190 (int16_t arg_138h, int16_t arg_268h, int16_t arg_310h, int16_t arg_3c8h) {
| int16_t var_0h;
| int16_t var_ch;
0x00070190 ldmdbmi r1!, {r4, r5, r8, sb, fp, lr} | __asm ("ldmdbmi r1!, {r4, r5, r8, sb, fp, lr}");
0x00070194 ldr r2, [pc, 0xc4] |
0x00070196 add r3, pc | r3 += pc;
0x00070198 push {lr} |
0x0007019a ldr r3, [r3] | r3 = *(r3);
0x0007019c add r1, pc | r1 += pc;
0x0007019e sub sp, 0x14 |
0x000701a0 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x000701a2 cmp r3, 0 |
0x000701a4 ldr r2, [r2] | r2 = *(0x7025c);
0x000701a6 str r2, [sp, 0xc] | var_ch = r2;
0x000701a8 mov.w r2, 0 | r2 = 0;
| if (r3 < 0) {
0x000701ac blt 0x701ce | goto label_2;
| }
0x000701ae ite ne |
| if (r3 == 0) {
0x000701b0 movne r0, 1 | r0 = 1;
| }
0x000701b2 moveq r0, 0 | r0 = 0;
| while (1) {
| label_1:
0x000701b4 ldr r2, [pc, 0xa8] |
0x000701b6 ldr r3, [pc, 0xa4] | r3 = *(0x7025e);
0x000701b8 add r2, pc | r2 = 0xe041c;
0x000701ba ldr r3, [r2, r3] | r3 = *(0xe041c);
0x000701bc ldr r2, [r3] | r2 = *(0xe041c);
0x000701be ldr r3, [sp, 0xc] | r3 = var_ch;
0x000701c0 eors r2, r3 | r2 ^= r3;
0x000701c2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000701c6 bne 0x70250 | goto label_3;
| }
0x000701c8 add sp, 0x14 |
0x000701ca ldr pc, [sp], 4 | pc = *(sp);
| sp += 4;
| label_2:
0x000701ce ldr r1, [pc, 0x94] |
0x000701d0 movs r0, 6 | r0 = 6;
0x000701d2 add r1, pc | r1 = 0xe043c;
0x000701d4 blx 0x8fa8 | r0 = fcn_00008fa8 ();
| if (r0 != 0) {
0x000701d8 cbz r0, 0x701ec |
0x000701da movs r0, 0xe | r0 = 0xe;
0x000701dc blx 0x9270 | r0 = gmtime_r ();
| if (r0 == 0) {
0x000701e0 cbz r0, 0x701ec | goto label_0;
| }
0x000701e2 ldr r1, [pc, 0x84] |
0x000701e4 add r1, pc | r1 = 0xe0452;
0x000701e6 blx 0x95e0 | r0 = fcn_000095e0 ();
| if (r0 != 0) {
0x000701ea cbnz r0, 0x701f8 | goto label_4;
| }
| }
| label_0:
0x000701ec ldr r3, [pc, 0x7c] |
0x000701ee movs r2, 1 | r2 = 1;
0x000701f0 mov r0, r2 | r0 = r2;
0x000701f2 add r3, pc | r3 = 0xe0462;
0x000701f4 str r2, [r3] | *(r3) = r2;
0x000701f6 b 0x701b4 |
| }
| label_4:
0x000701f8 movs r1, 0 | r1 = 0;
0x000701fa mov r0, r1 | r0 = r1;
0x000701fc blx 0x8fa8 | r0 = fcn_00008fa8 ();
0x00070200 mov ip, r0 |
0x00070202 cmp r0, 0 |
| if (r0 == 0) {
0x00070204 beq 0x701ec | goto label_0;
| }
0x00070206 ldr r3, [pc, 0x68] |
0x00070208 add r3, pc | r3 = 0xe047e;
0x0007020a ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0007020e mov r3, sp | r3 = sp;
0x00070210 stm.w r3, {r0, r1, r2} | *(r3) = r0;
| *((r3 + 4)) = r1;
| *((r3 + 8)) = r2;
0x00070214 mov r1, ip | r1 = ip;
0x00070216 mov r0, r3 | r0 = r3;
0x00070218 bl 0x7af74 | r0 = fcn_0007af74 (r0, r1);
| if (r0 != 0) {
0x0007021c cbz r0, 0x70244 |
0x0007021e ldr r0, [pc, 0x54] |
0x00070220 add r0, pc | r0 = 0xe049a;
0x00070222 blx 0x8b80 | r0 = ftello64 ();
| if (r0 == 0) {
0x00070226 cbnz r0, 0x70244 |
0x00070228 ldr r0, [pc, 0x4c] |
0x0007022a add r0, pc | r0 = 0xe04a6;
0x0007022c blx 0x8b80 | r0 = ftello64 ();
| if (r0 != 0) {
0x00070230 cbnz r0, 0x70244 | goto label_5;
| }
0x00070232 ldr r0, [pc, 0x48] |
0x00070234 add r0, pc | r0 = 0xe04b6;
0x00070236 blx 0x8b80 | r0 = ftello64 ();
0x0007023a clz r0, r0 | r0 &= r0;
0x0007023e lsrs r0, r0, 5 | r0 >>= 5;
0x00070240 mov r2, r0 | r2 = r0;
0x00070242 b 0x70248 |
| }
| } else {
| label_5:
0x00070244 movs r0, 0 | r0 = 0;
0x00070246 mov r2, r0 | r2 = r0;
| }
0x00070248 ldr r3, [pc, 0x34] |
0x0007024a add r3, pc | r3 = 0xe04ce;
0x0007024c str r2, [r3] | *(r3) = r2;
0x0007024e b 0x701b4 | goto label_1;
| label_3:
0x00070250 blx 0x927c | fprintf_chk ()
0x00070254 str r1, [sp, 0x138] | *(arg_138h) = r1;
0x00070256 movs r5, r0 | r5 = r0;
0x00070258 ldrh r0, [r5, 8] | r0 = *((r5 + 8));
0x0007025a movs r5, r0 | r5 = r0;
0x0007025c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007025e movs r0, r0 |
0x00070260 ldrh r4, [r1, 8] | r4 = *((r1 + 8));
0x00070262 movs r5, r0 | r5 = r0;
0x00070264 movs r6, 0xfa | r6 = 0xfa;
0x00070266 movs r1, r0 | r1 = r0;
0x00070268 ldr r0, [pc, 0xe0] | r0 = *(0x7034c);
0x0007026a movs r3, r0 | r3 = r0;
0x0007026c str r0, [sp, 0x3c8] | *(arg_3c8h) = r0;
0x0007026e movs r5, r0 | r5 = r0;
0x00070270 str r0, [sp, 0x310] | *(arg_310h) = r0;
0x00070272 movs r5, r0 | r5 = r0;
0x00070274 ldr r0, [pc, 0x1a0] | r0 = *(0x70418);
0x00070276 movs r3, r0 | r3 = r0;
0x00070278 ldr r0, [pc, 0x198] | r0 = *(0x70414);
0x0007027a movs r3, r0 | r3 = r0;
0x0007027c ldr r0, [pc, 0x1a0] | r0 = *(0x70420);
0x0007027e movs r3, r0 | r3 = r0;
0x00070280 str r0, [sp, 0x268] | *(arg_268h) = r0;
0x00070282 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x70284 */
| #include <stdint.h>
|
; (fcn) fcn.00070284 () | void fcn_00070284 (int16_t arg_138h) {
| int16_t var_ch_2;
| int16_t var_10h;
0x00070284 blmi 0xa42b24 | __asm ("blmi aav.0x00058838");
0x00070288 push {r4, r5, lr} |
0x0007028a sub sp, 0x14 |
0x0007028c add r2, pc | r2 += pc;
0x0007028e ldr r5, [pc, 0x98] |
0x00070290 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00070292 add r5, pc | r5 = 0xe05c0;
0x00070294 ldr r3, [r3] | r3 = *(r3);
0x00070296 str r3, [sp, 0xc] | var_ch_2 = r3;
0x00070298 mov.w r3, 0 | r3 = 0;
0x0007029c ldr r3, [r5] | r3 = *(0xe05c0);
0x0007029e cmp r3, 0 |
| if (r3 < 0) {
0x000702a0 blt 0x702c2 | goto label_2;
| }
0x000702a2 ite ne |
| if (r3 == 0) {
0x000702a4 movne r4, 1 | r4 = 1;
| }
0x000702a6 moveq r4, 0 | r4 = 0;
| while (1) {
| label_0:
0x000702a8 ldr r2, [pc, 0x80] |
0x000702aa ldr r3, [pc, 0x78] | r3 = *(0x70326);
0x000702ac add r2, pc | r2 = 0xe05dc;
0x000702ae ldr r3, [r2, r3] | r3 = *(0xe05dc);
0x000702b0 ldr r2, [r3] | r2 = *(0xe05dc);
0x000702b2 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x000702b4 eors r2, r3 | r2 ^= r3;
0x000702b6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000702ba bne 0x7031a | goto label_3;
| }
0x000702bc mov r0, r4 | r0 = r4;
0x000702be add sp, 0x14 |
0x000702c0 pop {r4, r5, pc} |
| label_2:
0x000702c2 ldr r0, [pc, 0x6c] |
0x000702c4 add r0, pc | r0 = 0xe05fa;
0x000702c6 bl 0x6881c | r0 = fcn_0006881c ();
0x000702ca cmp r0, 0 |
| if (r0 < 0) {
0x000702cc blt 0x702d8 | goto label_4;
| }
0x000702ce ite ne |
| if (r0 == 0) {
0x000702d0 movne r4, 1 | r4 = 1;
| }
| if (r0 != 0) {
0x000702d2 moveq r4, 0 | r4 = 0;
| }
0x000702d4 str r0, [r5] | *(r5) = r0;
0x000702d6 b 0x702a8 |
| }
| label_4:
0x000702d8 bl 0x70190 | r0 = fcn_00070190 (r0, r1, r2, r3);
0x000702dc mov r4, r0 | r4 = r0;
0x000702de mov r2, r0 | r2 = r0;
0x000702e0 cbnz r0, 0x702ea |
| while (1) {
| label_1:
0x000702e2 ldr r3, [pc, 0x50] |
0x000702e4 add r3, pc | r3 = 0xe061e;
0x000702e6 str r2, [r3] | *(r3) = r2;
0x000702e8 b 0x702a8 | goto label_0;
0x000702ea ldr r0, [pc, 0x4c] |
0x000702ec add r0, pc | r0 = 0xe062a;
0x000702ee blx 0x8b80 | r0 = ftello64 ();
0x000702f2 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000702f4 cbz r0, 0x70316 | goto label_5;
| }
0x000702f6 ldr r3, [pc, 0x44] |
0x000702f8 add r3, pc | r3 = 0xe063a;
0x000702fa adds r3, 0xc | r3 += 0xc;
0x000702fc ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x00070300 mov r3, sp | r3 = sp;
0x00070302 stm.w r3, {r0, r1, r2} | *(r3) = r0;
| *((r3 + 4)) = r1;
| *((r3 + 8)) = r2;
0x00070306 mov r1, r5 | r1 = r5;
0x00070308 mov r0, r3 | r0 = r3;
0x0007030a bl 0x7af74 | r0 = fcn_0007af74 (r0, r1);
| if (r0 == 0) {
0x0007030e cbz r0, 0x70316 | goto label_5;
| }
0x00070310 movs r4, 0 | r4 = 0;
0x00070312 mov r2, r4 | r2 = r4;
0x00070314 b 0x702e2 |
| }
| label_5:
0x00070316 movs r2, 1 | r2 = 1;
0x00070318 b 0x702e2 | goto label_1;
| label_3:
0x0007031a blx 0x927c | fprintf_chk ()
0x0007031e nop |
0x00070320 ldrh r0, [r7] | r0 = *(r7);
0x00070322 movs r5, r0 | r5 = r0;
0x00070324 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00070326 movs r0, r0 |
0x00070328 str r0, [sp, 0x158] | *(arg_138h) = r0;
0x0007032a movs r5, r0 | r5 = r0;
0x0007032c ldrh r0, [r3] | r0 = *(r3);
0x0007032e movs r5, r0 | r5 = r0;
0x00070330 blx ip | r0 = ip (r0);
0x00070332 movs r3, r0 | r3 = r0;
0x00070334 str r0, [sp, 0x10] | var_10h = r0;
0x00070336 movs r5, r0 | r5 = r0;
0x00070338 blx sb | r0 = sb (r0, r3);
0x0007033a movs r3, r0 | r3 = r0;
0x0007033c ldrh r4, [r2, 0x3e] | r4 = *((r2 + 0x3e));
0x0007033e movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x70394 */
| #include <stdint.h>
|
; (fcn) fcn.00070394 () | void fcn_00070394 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_14h;
| r0 = arg1;
0x00070394 invalid |
0x00070398 movs r1, 0 | r1 = 0;
0x0007039a ldr r4, [pc, 0x84] |
0x0007039c sub sp, 0x1c |
0x0007039e movs r2, 0 | r2 = 0;
0x000703a0 movs r0, 1 | r0 = 1;
0x000703a2 ldr r3, [pc, 0x80] | r3 = *(0x70426);
0x000703a4 add r4, pc | r4 = 0xe07ca;
0x000703a6 ldr r3, [r4, r3] |
0x000703a8 ldr r3, [r3] | r3 = *(0xe07ca);
0x000703aa str r3, [sp, 0x14] | var_14h = r3;
0x000703ac mov.w r3, 0 | r3 = 0;
0x000703b0 blx 0x8ea8 | r0 = fcn_00008ea8 ();
0x000703b4 cmp r0, 0 |
| if (r0 < 0) {
0x000703b6 blt 0x70412 | goto label_0;
| }
0x000703b8 bl 0x6a198 | fcn_0006a198 (r0, r1, r2, r3);
0x000703bc movs r2, 1 | r2 = 1;
0x000703be mov.w r1, 0x800000 | r1 = 0x800000;
0x000703c0 lsls r0, r0, 4 | r0 <<= 4;
0x000703c2 mov r4, r0 | r4 = r0;
0x000703c4 add r5, sp, 0xc | r5 += var_ch;
0x000703c6 bl 0x79268 | r0 = fcn_00079268 (r0, r1, r2);
0x000703ca bl 0x76a30 | r0 = fcn_00076a30 (r0);
0x000703ce cmp r0, 1 |
0x000703d0 mov.w r3, 0 | r3 = 0;
0x000703d4 itet ne |
| if (r0 != 1) {
0x000703d6 movwne r2, 0x9680 | __asm ("movwne r2, aav.0x000000ff");
| }
| if (r0 == 1) {
0x000703da movwne r2, 0x2710 |
| }
| if (r0 != 1) {
0x000703de movt r2, 0x98 | r2 = 0x982710;
| }
0x000703e2 mov r0, r5 | r0 = r5;
0x000703e4 bl 0x7c718 | fcn_0007c718 (r0, r1, r2);
0x000703e8 movs r0, 8 | r0 = 8;
0x000703ea mov r3, r5 | r3 = r5;
0x000703ec str r0, [sp] | *(sp) = r0;
0x000703ee movs r2, 0x15 | r2 = 0x15;
0x000703f0 movs r1, 1 | r1 = 1;
0x000703f2 mov r0, r4 | r0 = r4;
0x000703f4 blx 0x9564 | kmod_module_get_initstate ();
| do {
0x000703f8 ldr r2, [pc, 0x2c] |
0x000703fa ldr r3, [pc, 0x28] | r3 = *(0x70426);
0x000703fc add r2, pc | r2 = 0xe0828;
0x000703fe ldr r3, [r2, r3] | r3 = *(0xe0828);
0x00070400 ldr r2, [r3] | r2 = *(0xe0828);
0x00070402 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00070404 eors r2, r3 | r2 ^= r3;
0x00070406 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007040a bne 0x7041c | goto label_1;
| }
0x0007040c mov r0, r4 | r0 = r4;
0x0007040e add sp, 0x1c |
0x00070410 pop {r4, r5, pc} |
| label_0:
0x00070412 blx 0x9628 | r0 = fcn_00009628 ();
0x00070416 ldr r4, [r0] | r4 = *(r0);
0x00070418 rsbs r4, r4, 0 | r4 -= ;
0x0007041a b 0x703f8 |
| } while (1);
| label_1:
0x0007041c blx 0x927c | fprintf_chk ()
0x00070420 strh r0, [r4, 0x38] | *((r4 + 0x38)) = r0;
0x00070422 movs r5, r0 | r5 = r0;
0x00070424 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00070426 movs r0, r0 |
0x00070428 strh r0, [r1, 0x36] | *((r1 + 0x36)) = r0;
0x0007042a movs r5, r0 | r5 = r0;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x706f8).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x70c24 */
| #include <stdint.h>
|
; (fcn) fcn.00070c24 () | void fcn_00070c24 (int16_t arg_224h, int16_t arg_250h, int16_t arg_270h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_28h_2;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_11ch;
| int16_t var_148h;
| int16_t var_14ch;
| int16_t var_150h;
| int16_t var_154h;
| int16_t var_158h;
| int16_t var_15ch;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch_2;
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_4h;
| int16_t var_0h_3;
| int32_t var_4h_2;
| int16_t var_74h;
| int16_t var_84h;
| int16_t var_94h;
| int16_t var_bch;
| int16_t var_108h;
| int16_t var_1bch;
| int16_t var_1c8h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00070c24 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00070c28 mov r6, r3 | r6 = r3;
0x00070c2a ldr r5, [pc, 0x268] |
0x00070c2c sub sp, 0x1c4 |
0x00070c2e add.w sb, sp, 0x24 | sb += var_24h;
0x00070c30 lsrs r4, r4, 4 | r4 >>= 4;
0x00070c32 add.w sl, sp, 0x28 | sl += var_28h;
0x00070c36 ldr r4, [pc, 0x260] | r4 = *(0x70e9a);
0x00070c38 ldr r3, [pc, 0x260] |
0x00070c3a add r5, pc | r5 = 0xe1ad4;
0x00070c3c ldr r4, [r5, r4] |
0x00070c3e add r3, pc |
0x00070c40 ldr r3, [r3] | r3 = *(0xe1ade);
0x00070c42 ldr r4, [r4] | r4 = *(0xe1ad4);
0x00070c44 str r4, [sp, 0x1bc] | var_1bch = r4;
0x00070c46 mov.w r4, 0 | r4 = 0;
0x00070c4a movs r4, 0 | r4 = 0;
0x00070c4c str r1, [sp, 0x1c] | var_1ch = r1;
0x00070c4e cmp r3, r4 |
0x00070c50 str.w r4, [sb] | __asm ("str.w r4, [sb]");
0x00070c54 str.w r4, [sl] | __asm ("str.w r4, [sl]");
| if (r3 < r4) {
0x00070c58 blt 0x70d48 | goto label_6;
| }
0x00070c5a ldr r3, [pc, 0x244] |
0x00070c5c mov r8, r2 | r8 = r2;
0x00070c5e mov r7, r0 | r7 = r0;
0x00070c60 add r3, pc | r3 = 0xe1b06;
0x00070c62 ldr r2, [r3] | r2 = *(0xe1b06);
0x00070c64 cmp r2, 1 |
0x00070c66 it ne |
| if (r2 == 1) {
0x00070c68 addne r5, sp, 0x2c | r5 += var_2ch_2;
| }
| if (r2 == 1) {
0x00070c6a beq.w 0x70e50 | goto label_10;
| }
| label_7:
0x00070c6e ldr r3, [pc, 0x234] |
0x00070c70 add r3, pc | r3 = 0xe1b1a;
0x00070c72 ldrb r3, [r3] | r3 = *(r3);
0x00070c74 cmp r3, 0 |
0x00070c76 bne 0x70d64 |
| while (r1 == 0x26) {
| label_0:
0x00070c78 ldr r3, [pc, 0x22c] |
0x00070c7a add r3, pc | r3 = 0xe1b26;
0x00070c7c ldrb r3, [r3] | r3 = *(r3);
0x00070c7e cmp r3, 0 |
| if (r3 != 0) {
0x00070c80 bne.w 0x70df0 | goto label_11;
| }
| label_4:
0x00070c84 bl 0x70c10 | r0 = fcn_00070c10 ();
0x00070c88 cmp r0, 0 |
| if (r0 != 0) {
0x00070c8a bne.w 0x70db0 | goto label_12;
| }
0x00070c8e ldr r3, [pc, 0x21c] |
0x00070c90 add r3, pc | r3 = 0xe1b42;
0x00070c92 ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x00070c94 cbz r3, 0x70cd2 |
| label_2:
0x00070c96 ldr r3, [pc, 0x218] |
0x00070c98 add r3, pc | r3 = 0xe1b4e;
0x00070c9a mov r7, r3 | r7 = r3;
| label_3:
0x00070c9c strd r8, r3, [sp, 0xc] | __asm ("strd r8, r3, [var_154h]");
0x00070ca0 movs r2, 1 | r2 = 1;
0x00070ca2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00070ca4 add.w r8, r4, 1 | r8 = r4 + 1;
0x00070ca6 lsrs r1, r0, 0x20 | r1 = r0 >> 0x20;
0x00070ca8 strd r7, r3, [sp, 4] | __asm ("strd r7, r3, [var_14ch]");
0x00070cac add r7, sp, 0xbc | r7 += var_bch;
0x00070cae ldr r3, [pc, 0x204] |
0x00070cb0 mov r0, r7 | r0 = r7;
0x00070cb2 add r3, pc | r3 = 0xe1b6c;
0x00070cb4 str r3, [sp] | *(sp) = r3;
0x00070cb6 mov.w r3, 0x100 | r3 = 0x100;
0x00070cba mov r1, r3 | r1 = r3;
0x00070cbc blx 0x9110 | fcn_00009110 ();
0x00070cc0 mov r0, r7 | r0 = r7;
0x00070cc2 blx 0x8f38 | fcn_00008f38 ();
0x00070cc6 str.w r7, [r5, r4, lsl 3] | __asm ("str.w r7, [r5, r4, lsl 3]");
0x00070cc8 strb r4, [r6] | *(r6) = r4;
0x00070cca add.w r4, r5, r4, lsl 3 | r4 = r5 + (r4 << 3);
0x00070cce str r0, [r4, 4] | var_4h = r0;
0x00070cd0 mov r4, r8 | r4 = r8;
| }
| label_1:
0x00070cd2 ldr.w r7, [sb] | r7 = *(sb);
| if (r7 != 0) {
0x00070cd6 cbz r7, 0x70cea |
0x00070cd8 mov r0, r7 | r0 = r7;
0x00070cda blx 0x8f38 | fcn_00008f38 ();
0x00070cde add.w r3, r5, r4, lsl 3 | r3 = r5 + (r4 << 3);
0x00070ce2 str.w r7, [r5, r4, lsl 3] | __asm ("str.w r7, [r5, r4, lsl 3]");
0x00070ce6 adds r4, 1 | r4++;
0x00070ce8 str r0, [r3, 4] | var_4h = r0;
| }
0x00070cea mov r0, r6 | r0 = r6;
0x00070cec adds r7, r4, 1 | r7 = r4 + 1;
0x00070cee blx 0x8f38 | fcn_00008f38 ();
0x00070cf2 str.w r6, [r5, r4, lsl 3] | __asm ("str.w r6, [r5, r4, lsl 3]");
0x00070cf6 add.w r3, r5, r4, lsl 3 | r3 = r5 + (r4 << 3);
0x00070cfa ldr.w r6, [sl] | r6 = *(sl);
0x00070cfe str r0, [r3, 4] | var_4h = r0;
0x00070d00 cmp r6, 0 |
| if (r6 == 0) {
0x00070d02 beq.w 0x70e20 | goto label_13;
| }
0x00070d06 mov r0, r6 | r0 = r6;
0x00070d08 adds r4, 2 | r4 += 2;
0x00070d0a blx 0x8f38 | r0 = fcn_00008f38 ();
0x00070d0c ldmdb r6, {r0, r2, r6, fp, ip, sp, lr, pc} | __asm ("ldmdb r6, {r0, r2, r6, fp, ip, sp, lr, pc}");
0x00070d10 str r7, [r6] | *(r6) = r7;
0x00070d12 add.w r7, r5, r7, lsl 3 | r7 = r5 + (r7 << 3);
0x00070d16 str r0, [r7, 4] | var_4h_2 = r0;
| label_5:
0x00070d18 ldr r3, [pc, 0x19c] |
0x00070d1a add.w r2, r5, r4, lsl 3 | r2 = r5 + (r4 << 3);
0x00070d1e ldr r6, [pc, 0x19c] |
0x00070d20 adds r4, 1 | r4++;
0x00070d22 add r3, pc | r3 = 0xe1bde;
0x00070d24 adds r3, 8 | r3 += 8;
0x00070d26 add r6, pc | r6 = 0xe1be8;
0x00070d28 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00070d2c stm.w r2, {r0, r1} | *(r2) = r0;
| *((r2 + 4)) = r1;
0x00070d30 mov r2, r4 | r2 = r4;
0x00070d32 ldr r0, [r6] | r0 = *(0xe1be8);
0x00070d34 mov r1, r5 | r1 = r5;
0x00070d36 blx 0x8d44 | r0 = fcn_00008d44 ();
0x00070d3a cmp r0, 0 |
| if (r0 < 0) {
0x00070d3c bge 0x70d48 |
0x00070d3e blx 0x9628 | r0 = fcn_00009628 ();
0x00070d42 ldr r3, [r0] | r3 = *(r0);
0x00070d44 cmp r3, 5 |
| if (r3 == 5) {
0x00070d46 beq 0x70e24 | goto label_14;
| }
| }
| label_6:
0x00070d48 ldr r2, [pc, 0x174] |
0x00070d4a ldr r3, [pc, 0x14c] | r3 = *(0x70e9a);
0x00070d4c add r2, pc | r2 = 0xe1c10;
0x00070d4e ldr r3, [r2, r3] | r3 = *(0xe1c10);
0x00070d50 ldr r2, [r3] | r2 = *(0xe1c10);
0x00070d52 ldr r3, [sp, 0x1bc] | r3 = var_1bch;
0x00070d54 eors r2, r3 | r2 ^= r3;
0x00070d56 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00070d5a bne.w 0x70e8e | goto label_15;
| }
0x00070d5e add sp, 0x1c4 |
0x00070d60 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00070d64 movs r0, 0 | r0 = 0;
0x00070d66 add.w fp, sp, 0x94 |
0x00070d6a bl 0x7c5e4 | fcn_0007c5e4 (r0, r1, r2);
0x00070d6e mov r3, r1 | r3 = r1;
0x00070d70 movs r1, 0 | r1 = 0;
0x00070d72 mov r2, r0 | r2 = r0;
0x00070d74 str r1, [sp] | *(sp) = r1;
0x00070d76 mov r0, fp | r0 = fp;
0x00070d78 movs r1, 0x26 | r1 = 0x26;
0x00070d7a bl 0x7ceec | fcn_0007ceec (r0, r1, r2, r3, r4);
0x00070d7c ldrh.w r2, [r7, 0x800] | r2 = *((r7 + 0x800));
0x00070d80 beq.w 0x70c78 |
| }
0x00070d84 mov r0, fp | r0 = fp;
0x00070d86 blx 0x8f38 | fcn_00008f38 ();
0x00070d8a ldr r2, [pc, 0x138] |
0x00070d8c mov ip, r0 |
0x00070d8e adds r3, r4, 1 | r3 = r4 + 1;
0x00070d90 str.w fp, [r5, r4, lsl 3] | __asm ("str.w fp, [r5, r4, lsl 3]");
0x00070d94 add.w r3, r5, r3, lsl 3 | r3 = r5 + (r3 << 3);
0x00070d98 add r2, pc | r2 = 0xe1c62;
0x00070d9a adds r2, 0x10 | r2 += 0x10;
0x00070d9c ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x00070da0 add.w r2, r5, r4, lsl 3 | r2 = r5 + (r4 << 3);
0x00070da4 adds r4, 2 | r4 += 2;
0x00070da6 str.w ip, [r2, 4] | __asm ("str.w ip, [var_0h]");
0x00070daa stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00070dae b 0x70c78 | goto label_0;
| label_12:
0x00070db0 movs r3, 0 | r3 = 0;
0x00070db2 and r0, r7, 7 | r0 = r7 & 7;
0x00070db6 mov r2, sl | r2 = sl;
0x00070db8 mov r1, sb | r1 = sb;
0x00070dba bl 0x7c3c8 | fcn_0007c3c8 (r0, r1, r2, r3);
0x00070dbe ldr r3, [pc, 0x108] |
0x00070dc0 add r3, pc | r3 = 0xe1c8e;
0x00070dc2 ldrb r3, [r3] | r3 = *(r3);
0x00070dc4 cmp r3, 0 |
| if (r3 == 0) {
0x00070dc6 beq 0x70cd2 | goto label_1;
| }
0x00070dc8 bl 0x70c10 | r0 = fcn_00070c10 ();
0x00070dcc cmp r0, 0 |
| if (r0 == 0) {
0x00070dce beq.w 0x70c96 | goto label_2;
| }
0x00070dd2 bl 0x7c344 | r0 = fcn_0007c344 ();
0x00070dd6 cmp r0, 0 |
| if (r0 == 0) {
0x00070dd8 beq 0x70e82 | goto label_16;
| }
0x00070dda cmp r0, 0x10 |
| if (r0 != 0x10) {
0x00070ddc bne 0x70e7c | goto label_17;
| }
0x00070dde ldr r7, [pc, 0xec] |
0x00070de0 add r7, pc | r7 = 0xe1cb2;
| label_8:
0x00070de2 bl 0x7c344 | r0 = fcn_0007c344 ();
0x00070de6 cmp r0, 0 |
| if (r0 != 0) {
0x00070de8 bne 0x70e76 | goto label_18;
| }
0x00070dea ldr r3, [pc, 0xe4] |
0x00070dec add r3, pc | r3 = 0xe1cc2;
0x00070dee b 0x70c9c | goto label_3;
| label_11:
0x00070df0 blx 0x9158 | fcn_00009158 ();
0x00070df4 ldr r3, [pc, 0xdc] |
0x00070df6 add.w fp, sp, 0x84 |
0x00070dfa movs r2, 1 | r2 = 1;
0x00070dfc str r0, [sp, 4] | var_14ch = r0;
0x00070dfe mov r0, fp | r0 = fp;
0x00070e00 add r3, pc | r3 = 0xe1cd8;
0x00070e02 str r3, [sp] | *(sp) = r3;
0x00070e04 movs r3, 0x10 | r3 = 0x10;
0x00070e06 mov r1, r3 | r1 = r3;
0x00070e08 blx 0x9110 | fcn_00009110 ();
0x00070e0c mov r0, fp | r0 = fp;
0x00070e0e blx 0x8f38 | fcn_00008f38 ();
0x00070e12 add.w r3, r5, r4, lsl 3 | r3 = r5 + (r4 << 3);
0x00070e16 str.w fp, [r5, r4, lsl 3] | __asm ("str.w fp, [r5, r4, lsl 3]");
0x00070e1a adds r4, 1 | r4++;
0x00070e1c str r0, [r3, 4] | var_0h = r0;
0x00070e1e b 0x70c84 | goto label_4;
| label_13:
0x00070e20 mov r4, r7 | r4 = r7;
0x00070e22 b 0x70d18 | goto label_5;
| label_14:
0x00070e24 bl 0x76a30 | r0 = fcn_00076a30 (r0);
0x00070e28 cmp r0, 1 |
| if (r0 != 1) {
0x00070e2a bne 0x70d48 | goto label_6;
| }
0x00070e2c ldr r0, [r6] | r0 = *(r6);
0x00070e2e cmp r0, 2 |
| if (r0 <= 2) {
0x00070e30 ble 0x70e88 | goto label_19;
| }
0x00070e32 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
| label_9:
0x00070e36 ldr r6, [pc, 0xa0] |
0x00070e38 add r6, pc | r6 = 0xe1d16;
0x00070e3a str r0, [r6] | *(r6) = r0;
0x00070e3c bl 0x70474 | fcn_00070474 ();
0x00070e40 ldr r0, [r6] | r0 = *(0xe1d16);
0x00070e42 cmp r0, 0 |
| if (r0 < 0) {
0x00070e44 blt 0x70d48 | goto label_6;
| }
0x00070e46 mov r2, r4 | r2 = r4;
0x00070e48 mov r1, r5 | r1 = r5;
0x00070e4a blx 0x8d44 | fcn_00008d44 ();
0x00070e4e b 0x70d48 | goto label_6;
| label_10:
0x00070e50 ldr r3, [pc, 0x88] |
0x00070e52 add.w fp, sp, 0x74 |
0x00070e56 str r0, [sp, 4] | var_14ch = r0;
0x00070e58 mov r0, fp | r0 = fp;
0x00070e5a mov r4, r2 | r4 = r2;
0x00070e5c add r5, sp, 0x2c | r5 += var_2ch_2;
0x00070e5e add r3, pc | r3 = 0xe1d3e;
0x00070e60 str r3, [sp] | *(sp) = r3;
0x00070e62 movs r3, 0xf | r3 = 0xf;
0x00070e64 mov r1, r3 | r1 = r3;
0x00070e66 blx 0x9110 | fcn_00009110 ();
0x00070e6a mov r0, fp | r0 = fp;
0x00070e6c blx 0x8f38 | r0 = fcn_00008f38 ();
0x00070e70 strd fp, r0, [r5] | __asm ("strd fp, r0, [r5]");
0x00070e74 b 0x70c6e | goto label_7;
| label_18:
0x00070e76 ldr r3, [pc, 0x68] |
0x00070e78 add r3, pc | r3 = 0xe1d5e;
0x00070e7a b 0x70c9c | goto label_3;
| label_17:
0x00070e7c ldr r7, [pc, 0x64] |
0x00070e7e add r7, pc | r7 = 0xe1d66;
0x00070e80 b 0x70de2 | goto label_8;
| label_16:
0x00070e82 ldr r7, [pc, 0x64] |
0x00070e84 add r7, pc | r7 = 0xe1d72;
0x00070e86 b 0x70de2 | goto label_8;
| label_19:
0x00070e88 mov.w r0, -1 | r0 = -1;
0x00070e8c b 0x70e36 | goto label_9;
| label_15:
0x00070e8e blx 0x927c | fprintf_chk ()
0x00070e92 nop |
0x00070e94 ldrb r2, [r1, 0x1a] | r2 = *((r1 + 0x1a));
0x00070e96 movs r5, r0 | r5 = r0;
0x00070e98 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00070e9a movs r0, r0 |
0x00070e9c strh r6, [r0, 0x36] | *((r0 + 0x36)) = r6;
0x00070e9e movs r5, r0 | r5 = r0;
0x00070ea0 ldr r1, [sp, 0x270] | r1 = *(arg_270h);
0x00070ea2 movs r5, r0 | r5 = r0;
0x00070ea4 ldr r1, [sp, 0x250] | r1 = *(arg_250h);
0x00070ea6 movs r5, r0 | r5 = r0;
0x00070ea8 ldr r1, [sp, 0x224] | r1 = *(arg_224h);
0x00070eaa movs r5, r0 | r5 = r0;
0x00070eac ldr r1, [sp, 0x1c8] | r1 = var_1c8h;
0x00070eae movs r5, r0 | r5 = r0;
0x00070eb0 adds r4, r6, 0 | r4 = r6 + 0;
0x00070eb2 movs r1, r0 | r1 = r0;
0x00070eb4 lsrs r2, r2 | r2 >>= r2;
0x00070eb6 movs r3, r0 | r3 = r0;
0x00070eb8 strh r2, [r1, 0x2e] | *((r1 + 0x2e)) = r2;
0x00070eba movs r5, r0 | r5 = r0;
0x00070ebc strh r6, [r3, 0x2e] | *((r3 + 0x2e)) = r6;
0x00070ebe movs r5, r0 | r5 = r0;
0x00070ec0 ldrb r0, [r7, 0x15] | r0 = *((r7 + 0x15));
0x00070ec2 movs r5, r0 | r5 = r0;
0x00070ec4 strh r4, [r2, 0x2a] | *((r2 + 0x2a)) = r4;
0x00070ec6 movs r5, r0 | r5 = r0;
0x00070ec8 ldr r0, [sp, 0x108] | r0 = var_108h;
0x00070eca movs r5, r0 | r5 = r0;
0x00070ecc subs r7, 0x78 | r7 -= 0x78;
0x00070ece movs r3, r0 | r3 = r0;
0x00070ed0 subs r0, r4, r3 | r0 = r4 - r3;
0x00070ed2 movs r1, r0 | r1 = r0;
0x00070ed4 subs r7, 0x90 | r7 -= 0x90;
0x00070ed6 movs r3, r0 | r3 = r0;
0x00070ed8 strh r4, [r1, 0x26] | *((r1 + 0x26)) = r4;
0x00070eda movs r5, r0 | r5 = r0;
0x00070edc subs r7, 0x1e | r7 -= 0x1e;
0x00070ede movs r3, r0 | r3 = r0;
0x00070ee0 subs r6, 0xfc | r6 -= 0xfc;
0x00070ee2 movs r3, r0 | r3 = r0;
0x00070ee4 subs r6, 0xe6 | r6 -= 0xe6;
0x00070ee6 movs r3, r0 | r3 = r0;
0x00070ee8 subs r0, r1, r1 | r0 = r1 - r1;
0x00070eea movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x70eec */
| #include <stdint.h>
|
; (fcn) fcn.00070eec () | void fcn_00070eec (int16_t arg_148h, int16_t arg_14ch, int16_t arg_150h, int16_t arg_154h, int16_t arg_158h, int16_t arg_15ch, int16_t arg_358h, int16_t arg_398h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_4;
| int16_t var_4h_4;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h_3;
| int16_t var_1ch_2;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int32_t var_48h_2;
| int16_t var_50h;
| int16_t var_54h;
| int32_t var_58h;
| int32_t var_58h_2;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int32_t var_a4h;
| int32_t var_a4h_2;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_c8h;
| int16_t var_dch;
| int16_t var_11ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00070eec svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00070ef0 mov r8, r2 | r8 = r2;
0x00070ef2 sub sp, 0x124 |
0x00070ef4 ldr r2, [pc, 0x36c] |
0x00070ef6 mov sb, r3 | sb = r3;
0x00070ef8 ldr r4, [sp, 0x148] | r4 = *(arg_148h);
0x00070efa ldr r3, [pc, 0x36c] | r3 = *(0x7126a);
0x00070efc add r2, pc | r2 = 0xe2164;
0x00070efe strd r1, r4, [sp, 0x20] | __asm ("strd r1, r4, [var_20h]");
0x00070f00 asrs r0, r1, 0x10 | r0 = r1 >> 0x10;
0x00070f02 ldr r3, [r2, r3] |
0x00070f04 ldr r4, [sp, 0x15c] | r4 = *(arg_15ch);
0x00070f06 ldr r3, [r3] | r3 = *(0xe2164);
0x00070f08 str r3, [sp, 0x11c] | var_11ch = r3;
0x00070f0a mov.w r3, 0 | r3 = 0;
0x00070f0e ldr r3, [pc, 0x35c] |
0x00070f10 add r3, pc | r3 = 0xe2182;
0x00070f12 str r3, [sp, 0x38] | var_38h = r3;
0x00070f14 ldr r3, [sp, 0x14c] | r3 = *(arg_14ch);
0x00070f16 str r3, [sp, 0x28] | var_28h = r3;
0x00070f18 ldr r3, [sp, 0x150] | r3 = *(arg_150h);
0x00070f1a str r3, [sp, 0x2c] | var_2ch = r3;
0x00070f1c ldr r3, [sp, 0x154] | r3 = *(arg_154h);
0x00070f1e str r3, [sp, 0x30] | var_30h = r3;
0x00070f20 ldr r3, [sp, 0x158] | r3 = *(arg_158h);
0x00070f22 str r3, [sp, 0x34] | var_34h = r3;
0x00070f24 cmp r4, 0 |
| if (r4 == 0) {
0x00070f26 beq.w 0x71332 | goto label_15;
| }
0x00070f2a ldr r3, [pc, 0x344] |
0x00070f2c add r3, pc |
0x00070f2e ldr r3, [r3] | r3 = *(0xe21a2);
0x00070f30 cmp r3, 8 |
| if (r3 == 8) {
0x00070f32 beq.w 0x7104a | goto label_13;
| }
0x00070f36 tst.w r0, 0x3f8 |
0x00070f3a mov r7, r0 | r7 = r0;
| if ((arg_148hx3f8 & undefined) == 0) {
0x00070f3c bne 0x70f46 |
0x00070f3e ldr r3, [pc, 0x334] |
0x00070f40 add r3, pc |
0x00070f42 ldr r3, [r3] | r3 = *(0xe21ba);
0x00070f44 orrs r7, r3 | r7 |= r3;
| }
0x00070f46 ldr r3, [pc, 0x330] |
0x00070f48 add r3, pc | r3 = 0xe21c6;
0x00070f4a ldrb r3, [r3] | r3 = *(r3);
0x00070f4c cmp r3, 0 |
| if (r3 != 0) {
0x00070f4e bne.w 0x71256 | goto label_16;
| }
0x00070f50 strh r2, [r0, 0xc] | *((r0 + 0xc)) = r2;
| label_9:
0x00070f52 ldr r3, [pc, 0x328] |
0x00070f54 add r3, pc | r3 = 0xe21d6;
0x00070f56 str r3, [sp, 0x1c] | var_1ch_2 = r3;
| do {
| label_0:
0x00070f58 ldr r6, [pc, 0x324] |
0x00070f5a mov r0, r4 | r0 = r4;
0x00070f5c add r6, pc | r6 = 0xe21e0;
0x00070f5e mov r1, r6 | r1 = r6;
0x00070f60 blx 0x9428 | fcn_00009428 ();
0x00070f64 ldrb r3, [r4, r0] | r3 = *((r4 + r0));
0x00070f66 adds r5, r4, r0 | r5 = r4 + r0;
0x00070f68 cmp r3, 0 |
| if (r3 == 0) {
0x00070f6a beq 0x7103e | goto label_1;
| }
0x00070f6c mov r1, r6 | r1 = r6;
0x00070f6e mov r0, r5 | r0 = r5;
0x00070f70 blx 0x9594 | r0 = sched_cpufree ();
0x00070f74 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00070f76 cbz r0, 0x70f7e |
0x00070f78 movs r3, 0 | r3 = 0;
0x00070f7a strb r3, [r4], 1 | *(r4) = r3;
| r4++;
| }
0x00070f7e ldr r3, [pc, 0x304] |
0x00070f80 add r3, pc |
0x00070f82 ldr r3, [r3] | r3 = *(0xe220a);
0x00070f84 cmp r3, 4 |
| if (r3 > 4) {
0x00070f86 bgt.w 0x71094 | goto label_17;
| }
0x00070f8a cmp r3, 2 |
| if (r3 > 2) {
0x00070f8c bgt.w 0x711f0 | goto label_18;
| }
| label_2:
0x00070f90 cmp r3, 7 |
| if (r3 > 7) {
0x00070f92 bhi 0x71080 | goto label_7;
| }
0x00070f94 movs r2, 0xd4 | r2 = 0xd4;
0x00070f96 lsr.w r3, r2, r3 | r3 = r2 >> r3;
0x00070f98 ssat r7, 0x1c, r3, lsl 3 | __asm ("ssat r7, 0x1c, r3, lsl 3");
| if (r2 >= 0xd4) {
0x00070f9c bpl 0x71080 | goto label_7;
| }
| label_8:
0x00070f9e ldr r6, [pc, 0x2e8] |
0x00070fa0 add r6, pc | r6 = 0xe222e;
0x00070fa2 ldr r3, [r6] | r3 = *(0xe222e);
0x00070fa4 cmp r3, 0 |
| if (r3 < 0) {
0x00070fa6 blt 0x71080 | goto label_7;
| }
0x00070fa8 ldr r0, [pc, 0x2b0] |
0x00070faa add r0, pc | r0 = 0xe220a;
0x00070fac blx 0x9240 | nl_langinfo (r0);
0x00070fb0 ldr r3, [pc, 0x2ac] | r3 = *(0x71260);
0x00070fb2 add r0, r3 | r0 += r3;
0x00070fb4 bl 0x784fc | r0 = fcn_000784fc (r0, r1);
0x00070fb8 cmp r0, 0 |
| if (r0 == 0) {
0x00070fba beq 0x71080 | goto label_7;
| }
0x00070fbc ldr r3, [pc, 0x2cc] |
0x00070fbe add.w fp, sp, 0xc8 |
0x00070fc2 movs r2, 1 | r2 = 1;
0x00070fc4 mov r0, fp | r0 = fp;
0x00070fc6 str r7, [sp, 4] | var_4h_4 = r7;
0x00070fc8 add.w sl, sp, 0xdc | sl += var_dch;
0x00070fcc add r3, pc | r3 = 0xe225c;
0x00070fce str r3, [sp] | *(sp) = r3;
0x00070fd0 movs r3, 0xf | r3 = 0xf;
0x00070fd2 mov r1, r3 | r1 = r3;
0x00070fd4 blx 0x9110 | fcn_00009110 ();
0x00070fd8 bl 0x76a30 | fcn_00076a30 (r0);
0x00070fdc ldr r3, [pc, 0x2b0] |
0x00070fde movs r2, 1 | r2 = 1;
0x00070fe0 str r0, [sp, 4] | var_4h_4 = r0;
0x00070fe2 mov r0, sl | r0 = sl;
0x00070fe4 add r3, pc | r3 = 0xe2278;
0x00070fe6 str r3, [sp] | *(sp) = r3;
0x00070fe8 movs r3, 0x11 | r3 = 0x11;
0x00070fea mov r1, r3 | r1 = r3;
0x00070fec blx 0x9110 | fcn_00009110 ();
0x00070ff0 mov r0, fp | r0 = fp;
0x00070ff2 str.w fp, [sp, 0x90] | __asm ("str.w fp, [var_90h]");
0x00070ff6 blx 0x8f38 | fcn_00008f38 ();
0x00070ffa ldr r2, [sp, 0x38] | r2 = var_38h;
0x00070ffc ldr r3, [pc, 0x294] |
0x00070ffe str r0, [sp, 0x94] | var_94h = r0;
0x00071000 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00071002 ldr r0, [r3] | r0 = *(0x71294);
0x00071004 str r0, [sp, 0x98] | var_98h = r0;
0x00071006 blx 0x8f38 | fcn_00008f38 ();
0x0007100a strd r0, sl, [sp, 0x9c] | __asm ("strd r0, sl, [var_9ch]");
0x0007100e mov r0, sl | r0 = sl;
0x00071010 blx 0x8f38 | fcn_00008f38 ();
0x00071014 strd r0, r5, [sp, 0xa4] | __asm ("strd r0, r5, [var_a4h]");
0x00071018 mov r0, r5 | r0 = r5;
0x0007101a blx 0x8f38 | fcn_00008f38 ();
0x0007101c invalid |
0x00071020 movs r2, 5 | r2 = 5;
0x00071022 str r0, [sp, 0xac] | var_ach = r0;
0x00071024 add r1, sp, 0x90 | r1 += var_90h;
0x00071026 ldr r0, [r6] | r0 = *(r6);
0x00071028 add r3, pc | r3 = 0xe22c0;
0x0007102a str r3, [sp, 0xb0] | var_b0h = r3;
0x0007102c movs r3, 1 | r3 = 1;
0x0007102e str r3, [sp, 0xb4] | var_b4h = r3;
0x00071030 blx 0x8d44 | r0 = fcn_00008d44 ();
0x00071034 cmp r0, 0 |
| if (r0 < 0) {
0x00071036 blt.w 0x7134a | goto label_19;
| }
| label_3:
0x0007103a cmp r4, 0 |
0x0007103c bne 0x70f58 |
| } while (r4 != 0);
| label_1:
0x0007103e ldr r3, [pc, 0x25c] |
0x00071040 add r3, pc | r3 = 0xe22e2;
0x00071042 ldrb r3, [r3] | r3 = *(r3);
0x00071044 cmp r3, 0 |
| if (r3 != 0) {
0x00071046 bne.w 0x7132c | goto label_20;
| }
| label_13:
0x0007104a ldr r2, [pc, 0x254] |
0x0007104c ldr r3, [pc, 0x218] | r3 = *(0x71268);
0x0007104e ldr r0, [sp, 0x20] | r0 = var_20h;
0x00071050 add r2, pc | r2 = 0xe22f6;
0x00071052 ldr r3, [r2, r3] | r3 = *(0xe22f6);
0x00071054 cmp r0, 0 |
0x00071056 it lt |
| if (r0 < 0) {
0x00071058 rsblt r0, r0, 0 | __asm ("rsblt r0, r0, 0");
| }
0x0007105a uxtb r0, r0 | r0 = (int8_t) r0;
0x0007105c ldr r2, [r3] | r2 = *(0xe22f6);
0x0007105e ldr r3, [sp, 0x11c] | r3 = var_11ch;
0x00071060 eors r2, r3 | r2 ^= r3;
0x00071062 mov.w r3, 0 | r3 = 0;
0x00071066 rsb.w r0, r0, 0 | r0 -= ;
| if (r2 != r3) {
0x0007106a bne.w 0x71362 | goto label_21;
| }
0x0007106e add sp, 0x124 |
0x00071070 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x00071074 ldr r0, [r6] | r0 = *(r6);
0x00071076 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007107a str r0, [r6] | *(r6) = r0;
0x0007107c bl 0x70474 | fcn_00070474 ();
| label_7:
0x00071080 mov r3, r5 | r3 = r5;
0x00071082 mov r2, sb | r2 = sb;
0x00071084 mov r1, r8 | r1 = r8;
0x00071086 mov r0, r7 | r0 = r7;
0x00071088 bl 0x70c24 | fcn_00070c24 (r0, r1, r2, r3, r4, r5, r6);
0x0007108c cmp r4, 0 |
| if (r4 != 0) {
0x0007108e bne.w 0x70f58 | goto label_0;
| }
0x00071092 b 0x7103e | goto label_1;
| label_17:
0x00071094 cmp r3, 7 |
| if (r3 == 7) {
0x00071096 beq.w 0x711f0 | goto label_18;
| }
0x00071098 strh r3, [r5, 4] | *((r5 + 4)) = r3;
0x0007109a subs r2, r3, 5 | r2 = r3 - 5;
0x0007109c cmp r2, 1 |
| if (r2 > 1) {
0x0007109e bhi.w 0x70f90 | goto label_2;
| }
| label_6:
0x000710a2 ldr r3, [pc, 0x200] |
0x000710a4 add r3, pc |
0x000710a6 ldr r3, [r3] | r3 = *(0xe234e);
0x000710a8 cmp r3, 0 |
| if (r3 < 0) {
0x000710aa blt.w 0x71324 | goto label_22;
| }
0x000710ac strh r3, [r7, 8] | *((r7 + 8)) = r3;
0x000710ae ldr r3, [pc, 0x1f8] |
0x000710b0 add r6, sp, 0xb8 | r6 += var_b8h;
0x000710b2 movs r2, 1 | r2 = 1;
0x000710b4 mov r0, r6 | r0 = r6;
0x000710b6 str r7, [sp, 4] | var_4h_4 = r7;
0x000710b8 add.w sl, sp, 0x64 | sl += var_64h;
0x000710bc add r3, pc | r3 = 0xe236a;
0x000710be str r3, [sp] | *(sp) = r3;
0x000710c0 movs r3, 0xf | r3 = 0xf;
0x000710c2 mov r1, r3 | r1 = r3;
0x000710c4 blx 0x9110 | fcn_00009110 ();
0x000710c8 movs r0, 0 | r0 = 0;
0x000710ca bl 0x7c5e4 | fcn_0007c5e4 (r0, r1, r2);
0x000710ce movw r2, 0x4240 |
0x000710d2 movs r3, 0 | r3 = 0;
0x000710d4 movt r2, 0xf | r2 = 0xf4240;
0x000710d8 bl 0x80fd8 | fcn_00080fd8 (r0, r1, r2, r3);
0x000710dc mov r1, sl | r1 = sl;
0x000710de str r0, [sp, 0x44] | var_44h = r0;
0x000710e0 add r0, sp, 0x44 | r0 += var_44h;
0x000710e2 blx 0x89fc | r0 = fcn_000089fc ();
0x000710e6 cmp r0, 0 |
| if (r0 == 0) {
0x000710e8 beq.w 0x712e4 | goto label_23;
| }
0x000710ea strh r4, [r7, 6] | *((r7 + 6)) = r4;
0x000710ec ldr r2, [pc, 0x1bc] |
0x000710ee add.w fp, sp, 0xdc |
0x000710f2 mov r3, sl | r3 = sl;
0x000710f4 movs r1, 0x40 | r1 = 0x40;
0x000710f6 mov r0, fp | r0 = fp;
0x000710f8 add r2, pc | r2 = 0xe23a8;
0x000710fa blx 0x93a4 | r0 = fcn_000093a4 ();
0x000710fe cmp r0, 0 |
| if (r0 == 0) {
0x00071100 beq.w 0x712e4 | goto label_23;
| }
0x00071104 bl 0x76a30 | fcn_00076a30 (r0);
0x00071108 ldr r3, [pc, 0x1a4] |
0x0007110a add.w sl, sp, 0xc8 | sl += var_c8h;
0x0007110e movs r2, 1 | r2 = 1;
0x00071110 str r0, [sp, 4] | var_4h_4 = r0;
0x00071112 mov r0, sl | r0 = sl;
0x00071114 add r3, pc | r3 = 0xe23c8;
0x00071116 str r3, [sp] | *(sp) = r3;
0x00071118 movs r3, 0x11 | r3 = 0x11;
0x0007111a mov r1, r3 | r1 = r3;
0x0007111c blx 0x9110 | fcn_00009110 ();
0x00071120 mov r0, r6 | r0 = r6;
0x00071122 str r6, [sp, 0x90] | var_90h = r6;
0x00071124 blx 0x8f38 | fcn_00008f38 ();
0x00071128 strd r0, fp, [sp, 0x94] | __asm ("strd r0, fp, [var_0h_4x94]");
0x0007112c mov r0, fp | r0 = fp;
0x0007112e blx 0x8f38 | fcn_00008f38 ();
0x00071132 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00071134 add.w fp, sp, 0x48 |
0x00071138 ldr r3, [pc, 0x158] | r3 = *(0x71294);
0x0007113a str r0, [sp, 0x9c] | var_9ch = r0;
0x0007113c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007113e ldr r0, [r3] | r0 = *(0x71294);
0x00071140 str r0, [sp, 0xa0] | var_a0h = r0;
0x00071142 blx 0x8f38 | fcn_00008f38 ();
0x00071146 strd r0, sl, [sp, 0xa4] | __asm ("strd r0, sl, [var_a4h]");
0x0007114a mov r0, sl | r0 = sl;
0x0007114c blx 0x8f38 | fcn_00008f38 ();
0x00071150 strd r0, r5, [sp, 0xac] | __asm ("strd r0, r5, [var_ach]");
0x00071154 mov r0, r5 | r0 = r5;
0x00071156 blx 0x8f38 | fcn_00008f38 ();
0x0007115a ldr r3, [pc, 0x158] |
0x0007115c add.w sl, sp, 0x90 | sl += var_90h;
0x00071160 str r0, [sp, 0xb4] | var_b4h = r0;
0x00071162 str.w sl, [sp, 0x50] | __asm ("str.w sl, [var_50h]");
0x00071164 adr r0, 0x140 | r0 = 0x140;
0x00071166 add r3, pc | r3 = 0xe2420;
0x00071168 ldrb r2, [r3] | r2 = *(r3);
0x0007116a movs r3, 0 | r3 = 0;
0x0007116c strd r3, r3, [sp, 0x48] | __asm ("strd r3, r3, [var_48h]");
0x00071170 strd r3, r3, [sp, 0x58] | __asm ("strd r3, r3, [var_58h]");
0x00071174 str r3, [sp, 0x60] | var_60h = r3;
0x00071176 movs r3, 5 | r3 = 5;
0x00071178 str r3, [sp, 0x54] | var_54h = r3;
| if (r2 != 0) {
0x0007117a cbz r2, 0x71180 |
0x0007117c adds r0, 1 | r0++;
0x0007117e str r0, [sp, 0xb4] | var_b4h = r0;
| }
0x00071180 ldr r3, [pc, 0x134] |
0x00071182 str r5, [sp, 0x3c] | var_3ch = r5;
0x00071184 mov r5, fp | r5 = fp;
0x00071186 mov fp, sl |
0x00071188 add r3, pc | r3 = 0xe2444;
0x0007118a mov sl, r3 | sl = r3;
| label_4:
0x0007118c ldr.w r0, [sl] | r0 = *(sl);
0x00071190 mov.w r2, 0x4000 | r2 = 0x4000;
0x00071194 mov r1, r5 | r1 = r5;
0x00071196 blx 0x8db8 | r0 = fcn_00008db8 ();
0x0007119a subs.w ip, r0, 0 |
| if (ip < r0) {
0x0007119e blt.w 0x712d0 | goto label_24;
| }
0x000711a2 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x000711a4 ldrb r3, [r3] | r3 = *(r3);
0x000711a6 cmp r3, 0 |
| if (r3 == 0) {
0x000711a8 beq.w 0x7103a | goto label_3;
| }
0x000711ac mov r1, ip | r1 = ip;
0x000711ae mov r3, fp | r3 = fp;
| label_5:
0x000711b0 ldr r2, [r3, 4] | r2 = var_94h;
| if (r2 == 0) {
0x000711b2 cbz r2, 0x711d0 | goto label_25;
| }
0x000711b4 cmp r1, 0 |
| if (r1 == 0) {
0x000711b6 beq 0x7118c | goto label_4;
| }
0x000711b8 cmp r2, r1 |
0x000711ba ldr r0, [r3] | r0 = *(r3);
0x000711bc mov ip, r2 |
0x000711be it hs |
| if (r2 < r1) {
0x000711c0 movhs ip, r1 |
| }
0x000711c2 sub.w r1, r1, ip | r1 -= ip;
0x000711c6 sub.w r2, r2, ip | r2 -= ip;
0x000711ca add r0, ip | r0 += ip;
0x000711cc str r2, [r3, 4] | var_94h = r2;
0x000711ce str r0, [r3] | *(r3) = r0;
| label_25:
0x000711d0 adds r3, 8 | r3 += 8;
0x000711d2 cmp r3, r6 |
| if (r3 != r6) {
0x000711d4 bne 0x711b0 | goto label_5;
| }
0x000711d6 cmp r1, 0 |
| if (r1 == 0) {
0x000711d8 beq.w 0x7103a | goto label_3;
| }
0x000711dc ldr r1, [pc, 0xdc] |
0x000711de movs r2, 0x36 | r2 = 0x36;
0x000711e0 ldr r3, [pc, 0xdc] |
0x000711e2 ldr r0, [pc, 0xe0] |
0x000711e4 add r1, pc | r1 = 0xe24a4;
0x000711e6 add r3, pc | r3 = 0xe24aa;
0x000711e8 adds r1, 7 | r1 += 7;
0x000711ea add r0, pc | r0 = 0xe24b4;
0x000711ec bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_18:
0x000711f0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000711f2 mov r2, r8 | r2 = r8;
0x000711f4 ldr r1, [sp, 0x20] | r1 = var_20h;
0x000711f6 mov r0, r7 | r0 = r7;
0x000711f8 str r5, [sp, 0x14] | var_14h_3 = r5;
0x000711fa str r3, [sp, 0x10] | var_10h_2 = r3;
0x000711fc ldr r3, [sp, 0x30] | r3 = var_30h;
0x000711fe str r3, [sp, 0xc] | var_ch = r3;
0x00071200 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00071202 str r3, [sp, 8] | var_8h_2 = r3;
0x00071204 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00071206 str r3, [sp, 4] | var_4h_4 = r3;
0x00071208 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007120a str r3, [sp] | *(sp) = r3;
0x0007120c mov r3, sb | r3 = sb;
0x0007120e bl 0x706f8 | r0 = fcn_000706f8 (r0, r1, r2, r3, r4, r5, r6);
0x00071212 adds.w r3, r0, 0xb | r3 = r0 + 0xb;
0x00071216 it ne |
| if (r3 == r0) {
0x00071218 movne r3, 1 | r3 = 1;
| }
0x0007121a ands.w r3, r3, r0, lsr 31 | r3 &= (r0 >> 31);
| if (r3 != r3) {
0x0007121e bne 0x71308 | goto label_26;
| }
0x00071220 ldr r3, [pc, 0xa4] |
0x00071222 add r3, pc |
0x00071224 ldr r3, [r3] | r3 = *(0xe24ee);
0x00071226 subs r3, 5 | r3 -= 5;
0x00071228 cmp r3, 1 |
| if (r3 < 1) {
0x0007122a bls.w 0x710a2 | goto label_6;
| }
| label_10:
0x0007122e cmp r0, 0 |
| if (r0 > 0) {
0x00071230 bgt.w 0x7103a | goto label_3;
| }
0x00071234 ldr r3, [pc, 0x94] |
0x00071236 add r3, pc | r3 = 0xe2506;
0x00071238 ldr r2, [r3] | r2 = *(0xe2506);
0x0007123a cmp r2, 7 |
| if (r2 > 7) {
0x0007123c bhi.w 0x71080 | goto label_7;
| }
0x00071240 movs r3, 0xd4 | r3 = 0xd4;
0x00071242 lsrs r3, r2 | r3 >>= r2;
0x00071244 lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
| if (r1 >= r3) {
0x00071246 bpl.w 0x71080 | goto label_7;
| }
0x0007124a cmp r0, 0 |
| if (r0 == 0) {
0x0007124c beq.w 0x70f9e | goto label_8;
| }
| label_11:
0x00071250 bl 0x7042c | fcn_0007042c ();
0x00071254 b 0x70f9e | goto label_8;
| label_16:
0x00071256 bl 0x70868 | fcn_00070868 ();
0x0007125a b 0x70f52 | goto label_9;
| label_24:
0x000712d0 blx 0x9628 | r0 = fcn_00009628 ();
0x000712d4 ldr r0, [r0] | r0 = *(r0);
0x000712d6 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x000712d8 cmp r0, 0xb |
0x000712da it ne |
| if (r0 != 0xb) {
0x000712dc cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x000712de it le |
| if (r0 > 0xb) {
0x000712e0 rsble r0, r0, 0 | __asm ("rsble r0, r0, 0");
| goto label_27;
| }
| if (r0 <= 0xb) {
| label_27:
0x000712e2 ble 0x7122e | goto label_10;
| }
| label_23:
0x000712e4 ldr r6, [pc, 0x80] |
0x000712e6 add r6, pc | r6 = 0xe2652;
0x000712e8 ldr r0, [r6] | r0 = *(0xe2652);
0x000712ea bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x000712ee ldr r3, [pc, 0x7c] |
0x000712f0 str r0, [r6] | *(r6) = r0;
0x000712f2 add r3, pc |
0x000712f4 ldr r3, [r3] | r3 = *(0xe2664);
| label_12:
0x000712f6 cmp r3, 7 |
| if (r3 > 7) {
0x000712f8 bhi.w 0x71080 | goto label_7;
| }
0x000712fc movs r2, 0xd4 | r2 = 0xd4;
0x000712fe lsr.w r3, r2, r3 | r3 = r2 >> r3;
0x00071302 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 < r3) {
0x00071304 bmi 0x71250 | goto label_11;
| }
0x00071306 b 0x71080 | goto label_7;
| label_26:
0x00071308 ldr r6, [pc, 0x64] |
0x0007130a add r6, pc | r6 = 0xe267e;
0x0007130c ldr r0, [r6] | r0 = *(0xe267e);
0x0007130e bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x00071312 ldr r3, [pc, 0x60] |
0x00071314 str r0, [r6] | *(r6) = r0;
0x00071316 add r3, pc |
0x00071318 ldr r3, [r3] | r3 = *(0xe2690);
0x0007131a subs r2, r3, 5 | r2 = r3 - 5;
0x0007131c cmp r2, 1 |
| if (r2 < 1) {
0x0007131e bls.w 0x710a2 | goto label_6;
| }
0x00071322 b 0x712f6 | goto label_12;
| label_22:
0x00071324 ldr r3, [pc, 0x50] |
0x00071326 add r3, pc |
0x00071328 ldr r3, [r3] | r3 = *(0xe26a2);
0x0007132a b 0x70f90 | goto label_2;
| label_20:
0x0007132c bl 0x70b9c | fcn_00070b9c ();
0x00071330 b 0x7104a | goto label_13;
| label_15:
0x00071332 ldr r3, [pc, 0x48] |
0x00071334 movs r2, 7 | r2 = 7;
0x00071336 ldr r4, [sp, 0x38] | r4 = var_38h;
0x00071338 movs r1, 1 | r1 = 1;
0x0007133a ldr r0, [pc, 0x44] |
0x0007133c ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x0007133e add r0, pc | r0 = 0xe26c4;
0x00071340 ldr r3, [r3] | r3 = *(0x7137e);
0x00071342 blx 0x918c | open64_2 ();
0x00071346 blx 0x8a14 | fcn_00008a14 ();
| label_19:
0x0007134a blx 0x9628 | r0 = fcn_00009628 ();
0x0007134e ldr r3, [r0] | r3 = *(r0);
0x00071350 cmp r3, 0 |
| if (r3 > 0) {
0x00071352 bgt.w 0x71074 | goto label_14;
| }
| if (r3 == 0) {
0x00071356 beq.w 0x71080 | goto label_7;
| }
0x0007135a cmp r4, 0 |
| if (r4 != 0) {
0x0007135c bne.w 0x70f58 | goto label_0;
| }
0x00071360 b 0x7103e | goto label_1;
| label_21:
0x00071362 blx 0x927c | fprintf_chk ()
0x00071366 nop |
0x00071368 strh r6, [r6] | *(r6) = r6;
0x0007136a movs r5, r0 | r5 = r0;
0x0007136c str r3, [sp, 0x28] | var_28h = r3;
0x0007136e movs r5, r0 | r5 = r0;
0x00071370 ldrb r6, [r7, 0x1f] | r6 = *((r7 + 0x1f));
0x00071372 movs r5, r0 | r5 = r0;
0x00071374 str r2, [sp, 0x398] | *(arg_398h) = r2;
0x00071376 movs r5, r0 | r5 = r0;
0x00071378 str r2, [sp, 0x358] | *(arg_358h) = r2;
0x0007137a movs r5, r0 | r5 = r0;
0x0007137c lsls r0, r2, 0x14 | r0 = r2 << 0x14;
0x0007137e movs r0, r0 |
0x00071380 subs r2, 0x5a | r2 -= 0x5a;
0x00071382 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x71384 */
| #include <stdint.h>
|
; (fcn) fcn.00071384 () | void fcn_00071384 (int16_t arg_81ch, int16_t arg_848h, int16_t arg_84ch, int16_t arg_850h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_14h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00071384 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00071388 mov r6, r0 | r6 = r0;
0x0007138a ldr r0, [pc, 0xac] |
0x0007138c mov r7, r1 | r7 = r1;
0x0007138e subw sp, sp, 0x824 | __asm ("subw sp, sp, aav.0x000000ff");
0x00071392 mov r8, r2 | r8 = r2;
0x00071394 ldr r1, [pc, 0xa4] | r1 = *(0x7143c);
0x00071396 mov sb, r3 | sb = r3;
0x00071398 add r0, pc | r0 = 0xe27d6;
0x0007139a eor.w r4, r7, r7, asr 31 | r4 = r7 ^ (r7 >> 31);
0x0007139e ldr.w sl, [sp, 0x848] | sl = *(arg_848h);
0x000713a2 ldr r1, [r0, r1] |
0x000713a4 sub.w r4, r4, r7, asr 31 | r4 -= (r7 >> 31);
0x000713a8 uxtb r4, r4 | r4 = (int8_t) r4;
0x000713aa ldr r1, [r1] | r1 = *(0xe27d6);
0x000713ac str.w r1, [sp, 0x81c] | __asm ("str.w r1, [arg_81ch]");
0x000713b0 mov.w r1, 0 | r1 = 0;
0x000713b4 blx 0x9628 | fcn_00009628 ();
0x000713b8 ldr r3, [pc, 0x84] |
0x000713ba and r2, r6, 7 | r2 = r6 & 7;
0x000713be ldr.w r1, [sp, 0x84c] | r1 = *(arg_84ch);
0x000713c2 mov r5, r0 | r5 = r0;
0x000713c4 ldr.w fp, [r0] | fp = *(0xe27d6);
0x000713c8 add r3, pc |
0x000713ca ldr r3, [r3] | r3 = *(0xe280c);
0x000713cc cmp r2, r3 |
| if (r2 <= r3) {
0x000713ce ble 0x713fa | goto label_0;
| }
0x000713d0 rsbs r0, r4, 0 | r0 = r4 - ;
| do {
0x000713d2 ldr r2, [pc, 0x70] |
0x000713d4 cmp.w fp, 0 |
0x000713d8 ldr r3, [pc, 0x60] | r3 = *(0x7143c);
0x000713da it ge |
| if (fp < 0) {
0x000713dc strge fp, [r5] | *(r5) = fp;
| }
0x000713e0 add r2, pc | r2 = 0xe282a;
0x000713e2 ldr r3, [r2, r3] | r3 = *(0xe282a);
0x000713e4 ldr r2, [r3] | r2 = *(0xe282a);
0x000713e6 ldr.w r3, [sp, 0x81c] | r3 = *(arg_81ch);
0x000713ea eors r2, r3 | r2 ^= r3;
0x000713ec mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000713f0 bne 0x71432 | goto label_1;
| }
0x000713f2 addw sp, sp, 0x824 | __asm ("addw sp, sp, aav.0x000000ff");
0x000713f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_0:
0x000713fa ldr.w r3, [sp, 0x850] | r3 = *(arg_850h);
0x000713fe movs r2, 1 | r2 = 1;
0x00071400 str r4, [r0] | *(r0) = r4;
0x00071402 add r4, sp, 0x1c | r4 += var_1ch;
0x00071404 str r1, [sp] | *(sp) = r1;
0x00071406 mov r0, r4 | r0 = r4;
0x00071408 str r3, [sp, 4] | var_4h = r3;
0x0007140a mov.w r3, 0x800 | r3 = 0x800;
0x0007140e mov r1, r3 | r1 = r3;
0x00071410 blx 0x9074 | fcn_00009074 ();
0x00071412 cdp p4, 3, c9, c0, c5, 0 | __asm ("cdp p4, 3, c9, c0, c5, 0");
0x00071416 movs r4, 0 | r4 = 0;
0x00071418 mov r3, sb | r3 = sb;
0x0007141a mov r2, r8 | r2 = r8;
0x0007141c mov r1, r7 | r1 = r7;
0x0007141e mov r0, r6 | r0 = r6;
0x00071420 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00071424 strd r4, r4, [sp, 0xc] | __asm ("strd r4, r4, [sp, 0xc]");
0x00071428 strd r4, r4, [sp, 4] | __asm ("strd r4, r4, [sp, 4]");
0x0007142c bl 0x70eec | fcn_00070eec (r0, r1, r2, r3, r4, r5, r6);
0x00071430 b 0x713d2 |
| } while (1);
| label_1:
0x00071432 blx 0x927c | fprintf_chk ()
0x00071436 nop |
0x00071438 strb r4, [r5, 0x1c] | *((r5 + 0x1c)) = r4;
0x0007143a movs r5, r0 | r5 = r0;
0x0007143c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007143e movs r0, r0 |
0x00071440 ldrb r4, [r1, 0x1d] | r4 = *((r1 + 0x1d));
0x00071442 movs r5, r0 | r5 = r0;
0x00071444 strb r4, [r4, 0x1b] | *((r4 + 0x1b)) = r4;
0x00071446 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x71448 */
| #include <stdint.h>
|
; (fcn) fcn.00071448 () | void fcn_00071448 () {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_28h_2;
| if (? >= ?) {
0x00071448 addlt fp, r6, r0, lsl r5 |
| }
0x0007144c ldr r4, [sp, 0x20] | r4 = var_0h;
0x0007144e ldr.w ip, [pc, 0x40] |
0x00071452 str r4, [sp] | *(sp) = r4;
0x00071454 ldr r4, [pc, 0x3c] | r4 = *(0x71494);
0x00071456 add ip, pc | ip = 0xe28ec;
0x00071458 ldr.w r4, [ip, r4] |
0x0007145c ldr r4, [r4] | r4 = *(0xe28ec);
0x0007145e str r4, [sp, 0x14] | var_14h_2 = r4;
0x00071460 mov.w r4, 0 | r4 = 0;
0x00071464 ldr r4, [sp, 0x24] | r4 = var_4h;
0x00071466 str r4, [sp, 4] | var_4h_2 = r4;
0x00071468 add r4, sp, 0x28 | r4 += var_28h_2;
0x0007146a str r4, [sp, 8] | var_8h = r4;
0x0007146c str r4, [sp, 0x10] | var_10h = r4;
0x0007146e bl 0x71384 | fcn_00071384 (r0, r1, r2, r3, r4, r5, r6);
0x00071472 ldr r2, [pc, 0x24] |
0x00071474 ldr r3, [pc, 0x1c] | r3 = *(0x71494);
0x00071476 add r2, pc | r2 = 0xe2914;
0x00071478 ldr r3, [r2, r3] | r3 = *(0xe2914);
0x0007147a ldr r2, [r3] | r2 = *(0xe2914);
0x0007147c ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x0007147e eors r2, r3 | r2 ^= r3;
0x00071480 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00071484 bne 0x7148a |
0x00071486 add sp, 0x18 |
0x00071488 pop {r4, pc} |
| }
0x0007148a blx 0x927c | fprintf_chk ()
0x0007148e nop |
0x00071490 strb r6, [r5, 0x19] | *((r5 + 0x19)) = r6;
0x00071492 movs r5, r0 | r5 = r0;
0x00071494 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00071496 movs r0, r0 |
0x00071498 strb r6, [r1, 0x19] | *((r1 + 0x19)) = r6;
0x0007149a movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7164c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007164c () | void fcn_0007164c (int16_t arg_240h, int16_t arg_244h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_4h;
| int16_t var_214h;
| int16_t var_21ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0007164c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00071650 mov r4, r2 | r4 = r2;
0x00071652 sub.w sp, sp, 0x21c |
0x00071656 ldr r2, [pc, 0x154] |
0x00071658 str r3, [sp] | *(sp) = r3;
0x0007165a ldr r3, [pc, 0x154] | r3 = *(0x717b2);
0x0007165c add r2, pc | r2 = 0xe2e0e;
0x0007165e ldrd fp, sl, [sp, 0x244] | __asm ("ldrd fp, sl, [arg_244h]");
0x00071662 ldr r6, [sp, 0x240] | r6 = *(arg_240h);
0x00071664 ldr r3, [r2, r3] |
0x00071666 ldr r3, [r3] | r3 = *(0xe2e0e);
0x00071668 str r3, [sp, 0x214] | var_214h = r3;
0x0007166a mov.w r3, 0 | r3 = 0;
0x0007166e cmp.w fp, 0 |
| if (fp == 0) {
0x00071672 beq 0x71744 | goto label_2;
| }
0x00071674 cmp r6, 0 |
0x00071676 ldr r3, [pc, 0x13c] |
0x00071678 it lt |
| if (r6 < 0) {
0x0007167a rsblt r6, r6, 0 | __asm ("rsblt r6, r6, 0");
| }
0x0007167c mov r5, r0 | r5 = r0;
0x0007167e uxtb r7, r6 | r7 = (int8_t) r6;
0x00071680 mov r8, r1 | r8 = r1;
0x00071682 add r3, pc | r3 = 0xe2e3c;
0x00071684 str r3, [sp, 4] | var_4h_2 = r3;
| label_0:
0x00071686 ldr r2, [r4] | r2 = *(r4);
0x00071688 adds r2, 1 | r2++;
0x0007168a cmp r2, r8 |
| if (r2 >= r8) {
0x0007168c bhs 0x71744 | goto label_2;
| }
0x0007168e add r6, sp, 0x10 | r6 += var_10h;
0x00071690 blx 0x9628 | fcn_00009628 ();
0x00071694 mov r3, sl | r3 = sl;
0x00071696 str r7, [r0] | *(r0) = r7;
0x00071698 mov r2, fp | r2 = fp;
0x0007169a movs r1, 1 | r1 = 1;
0x0007169c mov r0, r6 | r0 = r6;
0x0007169e str.w sl, [sp, 0xc] | __asm ("str.w sl, [var_ch]");
0x000716a2 blx 0x961c | r0 = fcn_0000961c ();
0x000716a6 cmp r0, 0 |
| if (r0 < 0) {
0x000716a8 blt 0x7178a | goto label_3;
| }
0x000716aa add.w sb, sp, 0x14 | sb += var_14h;
0x000716ae movs r1, 0x80 | r1 = 0x80;
0x000716b0 mov r2, sb | r2 = sb;
0x000716b2 mov r0, fp | r0 = fp;
0x000716b4 blx 0x917c | r0 = fcn_0000917c ();
0x000716b8 cmp r0, 0x7f |
| if (r0 > 0x7f) {
0x000716ba bhi 0x71774 | goto label_4;
| }
| if (r0 == 0) {
0x000716bc cbz r0, 0x71702 | goto label_5;
| }
0x000716be add.w r3, sb, r0, lsl 2 | r3 = sb + (r0 << 2);
0x000716c2 mov r2, sb | r2 = sb;
0x000716c4 movw r0, 0x107 | r0 = 0x107;
| do {
0x000716c8 ldr r1, [r2], 4 | r1 = *(r2);
| r2 += 4;
0x000716cc tst.w r1, 0x800 |
| if ((r1 & 0x800) == 0) {
0x000716d0 bne 0x716fa |
0x000716d2 cmp.w r1, 0x100 |
| if (r1 == 0x100) {
0x000716d6 beq 0x71766 | goto label_6;
| }
| if (r1 <= 0x100) {
0x000716d8 bgt 0x716ee |
0x000716da cmp r1, 7 |
| if (r1 > 7) {
0x000716dc bhi 0x71790 | goto label_7;
| }
0x000716de subs r1, 2 | r1 -= 2;
0x000716e0 cmp r1, 5 |
| if (r1 > 5) {
0x000716e2 bhi 0x716fa | goto label_8;
| }
| /* switch table (6 cases) at 0x716e8 */
0x000716e4 tbb [pc, r1] | __asm ("tbb aav.0x000000ff");
| }
0x000716ee cmp.w r1, 0x200 |
| if (r1 == 0x200) {
0x000716f2 beq 0x716fa | goto label_8;
| }
0x000716f4 cmp.w r1, 0x400 |
| if (r1 != 0x400) {
0x000716f8 bne 0x71762 | goto label_9;
| }
| }
| label_8:
0x000716fa add.w sl, sl, 4 | sl += 4;
| label_1:
0x000716fe cmp r2, r3 |
0x00071700 bne 0x716c8 |
| } while (r2 != r3);
| label_5:
0x00071702 ldr.w sb, [r4] | sb = *(r4);
0x00071706 ldr r6, [r6] | r6 = *(r6);
0x00071708 add.w r1, sb, 1 | r1 = sb + 1;
0x0007170c mov r0, r6 | r0 = r6;
0x0007170e str r1, [r4] | *(r4) = r1;
0x00071710 blx 0x8f38 | fcn_00008f38 ();
0x00071714 ldr r3, [sp] | r3 = *(sp);
0x00071716 add.w fp, r5, sb, lsl 3 |
0x0007171a str.w r6, [r5, sb, lsl 3] | __asm ("str.w r6, [r5, sb, lsl 3]");
0x0007171e str.w r0, [fp, 4] | __asm ("str.w r0, [arg_244h]");
| if (r3 != 0) {
0x00071722 cbz r3, 0x7173a |
0x00071724 ldr r3, [r4] | r3 = *(r4);
0x00071726 movs r2, 1 | r2 = 1;
0x00071728 ldr r1, [sp, 4] | r1 = var_4h_2;
0x0007172a str.w r1, [r5, r3, lsl 3] | __asm ("str.w r1, [r5, r3, lsl 3]");
0x0007172e add.w r3, r5, r3, lsl 3 | r3 = r5 + (r3 << 3);
0x00071732 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00071734 ldr r3, [r4] | r3 = *(r4);
0x00071736 add r3, r2 | r3 += r2;
0x00071738 str r3, [r4] | *(r4) = r3;
| }
0x0007173a ldr fp, [sl], 4 | fp = *(sl);
| sl += 4;
0x0007173e cmp.w fp, 0 |
| if (fp != 0) {
0x00071742 bne 0x71686 | goto label_0;
| }
| label_2:
0x00071744 movs r0, 0 | r0 = 0;
| do {
0x00071746 ldr r2, [pc, 0x70] |
0x00071748 ldr r3, [pc, 0x64] | r3 = *(0x717b0);
0x0007174a add r2, pc | r2 = 0xe2f08;
0x0007174c ldr r3, [r2, r3] | r3 = *(0xe2f08);
0x0007174e ldr r2, [r3] | r2 = *(0xe2f08);
0x00071750 ldr r3, [sp, 0x214] | r3 = var_214h;
0x00071752 eors r2, r3 | r2 ^= r3;
0x00071754 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00071758 bne 0x717a6 | goto label_10;
| }
0x0007175a add.w sp, sp, 0x21c |
0x0007175e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x00071762 cmp r1, r0 |
| if (r1 != r0) {
0x00071764 bne 0x71790 | goto label_7;
| }
| label_6:
0x00071766 add.w sl, sl, 7 | sl += 7;
0x0007176a bic sl, sl, 7 | sl = BIT_MASK (sl, 7);
0x0007176e add.w sl, sl, 8 | sl += 8;
0x00071772 b 0x716fe | goto label_1;
| label_4:
0x00071774 ldr r1, [pc, 0x44] |
0x00071776 movw r2, 0x397 | r2 = 0x397;
0x0007177a ldr r3, [pc, 0x44] |
0x0007177c ldr r0, [pc, 0x44] |
0x0007177e add r1, pc | r1 = 0xe2f3e;
0x00071780 add r3, pc | r3 = 0xe2f46;
0x00071782 adds r1, 7 | r1 += 7;
0x00071784 add r0, pc | r0 = 0xe2f4c;
0x00071786 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0007178a mvn r0, 0x15 | r0 = ~0x15;
0x0007178e b 0x71746 |
| } while (1);
| label_7:
0x00071790 ldr r1, [pc, 0x34] |
0x00071792 movw r2, 0x397 | r2 = 0x397;
0x00071796 ldr r3, [pc, 0x34] |
0x00071798 ldr r0, [pc, 0x34] |
0x0007179a add r1, pc | r1 = 0xe2f66;
0x0007179c add r3, pc | r3 = 0xe2f6e;
0x0007179e adds r1, 7 | r1 += 7;
0x000717a0 add r0, pc | r0 = 0xe2f74;
0x000717a2 bl 0x71614 | r0 = fcn_00071614 (r0, r1, r2, r3);
| label_10:
0x000717a6 blx 0x927c | fprintf_chk ()
0x000717aa nop |
0x000717ac strb r0, [r5, 0x11] | *((r5 + 0x11)) = r0;
0x000717ae movs r5, r0 | r5 = r0;
0x000717b0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000717b2 movs r0, r0 |
0x000717b4 subs r6, 0 |
0x000717b6 movs r3, r0 | r3 = r0;
0x000717b8 strb r2, [r7, 0xd] | *((r7 + 0xd)) = r2;
0x000717ba movs r5, r0 | r5 = r0;
0x000717bc adds r6, 0xa6 | r6 += 0xa6;
0x000717be movs r3, r0 | r3 = r0;
0x000717c0 subs r4, 0x88 | r4 -= 0x88;
0x000717c2 movs r3, r0 | r3 = r0;
0x000717c4 adds r7, 0x44 | r7 += 0x44;
0x000717c6 movs r3, r0 | r3 = r0;
0x000717c8 adds r6, 0x8a | r6 += 0x8a;
0x000717ca movs r3, r0 | r3 = r0;
0x000717cc subs r4, 0x6c | r4 -= 0x6c;
0x000717ce movs r3, r0 | r3 = r0;
0x000717d0 adds r7, 0x44 | r7 += 0x44;
0x000717d2 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x71828 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00071828 () | void fcn_00071828 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h_2;
| int16_t var_18h_3;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_10h;
| int8_t var_2h;
| int16_t var_14h;
| int16_t var_18h_2;
| int16_t var_0h_3;
| int16_t var_4h_3;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_10h_3;
| int16_t var_14h_3;
| int16_t var_18h_4;
| int16_t var_20h_2;
| int16_t var_24h_2;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h_2;
| int16_t var_3ch_2;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_18h;
| int32_t var_4h_4;
| int32_t var_8h_3;
| int32_t var_ch_3;
| int32_t var_10h_4;
| int32_t var_14h_4;
| int32_t var_1ch;
| int16_t var_0h_4;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00071828 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0007182c mov r5, r0 | r5 = r0;
0x0007182e ldr r0, [pc, 0x120] |
0x00071830 mov r6, r1 | r6 = r1;
0x00071832 sub sp, 0x3c |
0x00071834 ldr r1, [pc, 0x11c] | r1 = *(0x71954);
0x00071836 add r7, sp, 0x18 | r7 += var_18h;
0x00071838 add r0, pc | r0 = 0xe318e;
0x0007183a mov sb, r3 | sb = r3;
0x0007183c ldr r3, [r7, 0x48] | r3 = *((r7 + 0x48));
0x0007183e mov r8, r2 | r8 = r2;
0x00071840 ldr r1, [r0, r1] |
0x00071842 ldr r1, [r1] | r1 = *(0xe318e);
0x00071844 str r1, [r7, 0x1c] | var_1ch = r1;
0x00071846 mov.w r1, 0 | r1 = 0;
0x0007184a str r3, [r7, 0x14] | var_14h_4 = r3;
0x0007184c ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
0x0007184e str r3, [r7, 0x10] | var_10h_4 = r3;
0x00071850 blx 0x9628 | fcn_00009628 ();
0x00071854 ldr r3, [pc, 0x100] |
0x00071856 mov r4, r0 | r4 = r0;
0x00071858 eor.w r0, r6, r6, asr 31 | r0 = r6 ^ (r6 >> 31);
0x0007185c and r1, r5, 7 | r1 = r5 & 7;
0x00071860 ldr.w sl, [r4] | sl = *(r4);
0x00071864 add r3, pc | r3 = 0xe31c0;
0x00071866 sub.w r0, r0, r6, asr 31 | r0 -= (r6 >> 31);
0x0007186a ldr r2, [r3] | r2 = *(0xe31c0);
0x0007186c ldrd fp, r3, [r7, 0x50] | __asm ("ldrd fp, r3, [r7, 0x50]");
0x00071870 uxtb r0, r0 | r0 = (int8_t) r0;
0x00071872 cmp r1, r2 |
0x00071874 str r3, [r7, 0xc] | var_ch_3 = r3;
0x00071876 ldr r3, [r7, 0x58] | r3 = *((r7 + 0x58));
0x00071878 str r3, [r7, 8] | var_8h_3 = r3;
0x0007187a ldr r3, [r7, 0x5c] | r3 = *((r7 + 0x5c));
| if (r1 <= r2) {
0x0007187c ble 0x718a6 | goto label_1;
| }
0x0007187e rsbs r0, r0, 0 | r0 -= ;
| do {
0x00071880 ldr r2, [pc, 0xd8] |
0x00071882 cmp.w sl, 0 |
0x00071886 ldr r3, [pc, 0xcc] | r3 = *(0x71956);
0x00071888 it ge |
| if (sl < 0) {
0x0007188a strge sl, [r4] | *(r4) = sl;
| }
0x0007188e add r2, pc | r2 = 0xe31ee;
0x00071890 ldr r3, [r2, r3] | r3 = *(0xe31ee);
0x00071892 ldr r2, [r3] | r2 = *(0xe31ee);
0x00071894 ldr r3, [r7, 0x1c] | r3 = var_1ch;
0x00071896 eors r2, r3 | r2 ^= r3;
0x00071898 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007189c bne 0x7194a | goto label_2;
| }
0x0007189e adds r7, 0x24 | r7 += 0x24;
0x000718a0 mov sp, r7 |
0x000718a2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x000718a6 str r0, [r4] | *(r4) = r0;
0x000718a8 cmp.w fp, 0 |
| if (fp == 0) {
0x000718ac beq 0x71928 | goto label_3;
| }
0x000718ae mov r0, fp | r0 = fp;
0x000718b0 str r3, [r7, 4] | var_4h_4 = r3;
0x000718b2 blx 0x8f38 | r0 = fcn_00008f38 ();
0x000718b6 addw r2, r0, 0x802 | __asm ("addw r2, r0, aav.0x000000ff");
0x000718ba ldr r3, [r7, 4] | r3 = var_4h_4;
0x000718bc cmp.w r2, 0x400000 |
| if (r2 > 0x400000) {
0x000718c0 bhi 0x71934 | goto label_4;
| }
0x000718c2 addw r0, r0, 0x809 | __asm ("addw r0, r0, aav.0x000000ff");
0x000718c6 str r3, [r7] | *(r7) = r3;
0x000718c8 bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x000718cc mov r1, fp | r1 = fp;
0x000718ce sub.w sp, sp, r0 |
0x000718d2 add r3, sp, 0x18 | r3 += var_18h;
0x000718d4 mov r0, r3 | r0 = r3;
0x000718d6 str r3, [r7, 4] | var_4h_4 = r3;
0x000718d8 blx 0x8c38 | fcn_00008c38 ();
0x000718dc ldr r2, [pc, 0x80] |
0x000718de ldr r3, [r7] | r3 = *(r7);
0x000718e0 add r2, pc | r2 = 0xe3244;
0x000718e2 ldrh.w ip, [r2] | ip = *(r2);
0x000718e6 ldrb r2, [r2, 2] | r2 = *((r2 + 2));
0x000718e8 strh.w ip, [r0] | *(r0) = ip;
0x000718ec strb r2, [r0, 2]! | *((r0 += 2)) = r2;
| label_0:
0x000718f0 str r3, [sp] | *(sp) = r3;
0x000718f2 movs r2, 1 | r2 = 1;
0x000718f4 ldr r3, [r7, 0x60] | r3 = *((r7 + 0x60));
0x000718f6 mov.w r1, 0x800 | r1 = 0x800;
0x000718fa str r3, [sp, 4] | var_4h = r3;
0x000718fc mov.w r3, -1 | r3 = -1;
0x00071900 blx 0x9074 | fcn_00009074 ();
0x00071902 subs.w r8, r8, fp, ror 25 | r8 -= (fp >>> 25);
0x00071906 mov r2, r8 | r2 = r8;
0x00071908 mov r1, r6 | r1 = r6;
0x0007190a mov r0, r5 | r0 = r5;
0x0007190c str r3, [sp, 0x14] | var_14h = r3;
0x0007190e ldr r3, [r7, 8] | r3 = var_8h_3;
0x00071910 str r3, [sp, 0x10] | var_10h = r3;
0x00071912 ldr r3, [r7, 0xc] | r3 = var_ch_3;
0x00071914 strd fp, r3, [sp, 8] | __asm ("strd fp, r3, [var_38h]");
0x00071918 ldr r3, [r7, 0x10] | r3 = var_10h_4;
0x0007191a str r3, [sp, 4] | var_4h = r3;
0x0007191c ldr r3, [r7, 0x14] | r3 = var_14h_4;
0x0007191e str r3, [sp] | *(sp) = r3;
0x00071920 mov r3, sb | r3 = sb;
0x00071922 bl 0x70eec | fcn_00070eec (r0, r1, r2, r3, r4, r5, r6);
0x00071926 b 0x71880 |
| } while (1);
| label_3:
0x00071928 sub.w sp, sp, 0x800 |
0x0007192c add r2, sp, 0x18 | r2 += var_18h_2;
0x0007192e mov r0, r2 | r0 = r2;
0x00071930 str r2, [r7, 4] | var_4h_4 = r2;
0x00071932 b 0x718f0 | goto label_0;
| label_4:
0x00071934 ldr r1, [pc, 0x2c] |
0x00071936 mov.w r2, 0x320 | r2 = 0x320;
0x0007193a ldr r3, [pc, 0x2c] |
0x0007193c ldr r0, [pc, 0x2c] |
0x0007193e add r1, pc | r1 = 0xe32a6;
0x00071940 add r3, pc | r3 = 0xe32ae;
0x00071942 adds r1, 7 | r1 += 7;
0x00071944 add r0, pc | r0 = 0xe32b4;
0x00071946 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x0007194a blx 0x927c | fprintf_chk ()
0x0007194e nop |
0x00071950 strb r4, [r1, 0xa] | *((r1 + 0xa)) = r4;
0x00071952 movs r5, r0 | r5 = r0;
0x00071954 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00071956 movs r0, r0 |
0x00071958 ldrb r0, [r6, 0xa] | r0 = *((r6 + 0xa));
0x0007195a movs r5, r0 | r5 = r0;
0x0007195c strb r6, [r6, 8] | *((r6 + 8)) = r6;
0x0007195e movs r5, r0 | r5 = r0;
0x00071960 adds r4, 0xd0 | r4 += 0xd0;
0x00071962 movs r3, r0 | r3 = r0;
0x00071964 adds r4, 0xe6 | r4 += 0xe6;
0x00071966 movs r3, r0 | r3 = r0;
0x00071968 subs r2, 0x68 | r2 -= 0x68;
0x0007196a movs r3, r0 | r3 = r0;
0x0007196c ldrb r4, [r3, r2] | r4 = *((r3 + r2));
0x0007196e movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x71970 */
| #include <stdint.h>
|
; (fcn) fcn.00071970 () | void fcn_00071970 (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 var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_20h;
| int16_t var_24h;
| if (? >= ?) {
0x00071970 addlt fp, sl, r0, lsl r5 |
| }
0x00071974 ldr r4, [sp, 0x30] | r4 = *(arg_30h);
0x00071976 ldr.w ip, [pc, 0x50] |
0x0007197a str r4, [sp] | *(sp) = r4;
0x0007197c ldr r4, [pc, 0x4c] | r4 = *(0x719cc);
0x0007197e add ip, pc | ip = 0xe334c;
0x00071980 ldr.w r4, [ip, r4] |
0x00071984 ldr r4, [r4] | r4 = *(0xe334c);
0x00071986 str r4, [sp, 0x24] | var_24h = r4;
0x00071988 mov.w r4, 0 | r4 = 0;
0x0007198c ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x0007198e str r4, [sp, 4] | var_4h = r4;
0x00071990 ldr r4, [sp, 0x38] | r4 = *(arg_38h);
0x00071992 str r4, [sp, 8] | var_8h = r4;
0x00071994 ldr r4, [sp, 0x3c] | r4 = *(arg_3ch);
0x00071996 str r4, [sp, 0xc] | var_ch = r4;
0x00071998 ldr r4, [sp, 0x40] | r4 = *(arg_40h);
0x0007199a str r4, [sp, 0x10] | var_10h = r4;
0x0007199c ldr r4, [sp, 0x44] | r4 = *(arg_44h);
0x0007199e str r4, [sp, 0x14] | var_14h = r4;
0x000719a0 add r4, sp, 0x48 | r4 += arg_48h;
0x000719a2 str r4, [sp, 0x18] | var_18h = r4;
0x000719a4 str r4, [sp, 0x20] | var_20h = r4;
0x000719a6 bl 0x71828 | fcn_00071828 (r0, r1, r2, r3);
0x000719aa ldr r2, [pc, 0x24] |
0x000719ac ldr r3, [pc, 0x1c] | r3 = *(0x719cc);
0x000719ae add r2, pc | r2 = 0xe3384;
0x000719b0 ldr r3, [r2, r3] | r3 = *(0xe3384);
0x000719b2 ldr r2, [r3] | r2 = *(0xe3384);
0x000719b4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000719b6 eors r2, r3 | r2 ^= r3;
0x000719b8 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000719bc bne 0x719c2 |
0x000719be add sp, 0x28 |
0x000719c0 pop {r4, pc} |
| }
0x000719c2 blx 0x927c | fprintf_chk ()
0x000719c6 nop |
0x000719c8 strb r6, [r0, 5] | *((r0 + 5)) = r6;
0x000719ca movs r5, r0 | r5 = r0;
0x000719cc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000719ce movs r0, r0 |
0x000719d0 strb r6, [r2, 4] | *((r2 + 4)) = r6;
0x000719d2 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x719d4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000719d4 () | void fcn_000719d4 (int16_t arg_38h, int16_t arg_264h, int16_t arg_a5ch, int16_t arg_a88h, int16_t arg_a8ch, int16_t arg_a90h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_14h_2;
| int16_t var_1ch;
| int16_t var_20h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_40h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000719d4 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000719d8 mov r7, r0 | r7 = r0;
0x000719da ldr r4, [pc, 0x2f0] |
0x000719dc subw sp, sp, 0xa64 | __asm ("subw sp, sp, aav.0x000000ff");
0x000719e0 ldr r0, [pc, 0x2ec] | r0 = *(0x71cd0);
0x000719e2 add r4, pc | r4 = 0xe36b4;
0x000719e4 ldr r0, [r4, r0] |
0x000719e6 mov r4, r1 | r4 = r1;
0x000719e8 ldr r0, [r0] | r0 = *(0xe36b4);
0x000719ea str.w r0, [sp, 0xa5c] | __asm ("str.w r0, [arg_a5ch]");
0x000719ee mov.w r0, 0 | r0 = 0;
0x000719f2 strd r2, r3, [sp, 0x1c] | __asm ("strd r2, r3, [sp, 0x1c]");
0x000719f6 ldr.w r3, [sp, 0xa88] | r3 = *(arg_a88h);
0x000719fa str r3, [sp, 0x24] | var_0h = r3;
0x000719fc blx 0x9628 | fcn_00009628 ();
0x00071a00 ldr r3, [pc, 0x2d0] |
0x00071a02 and r2, r7, 7 | r2 = r7 & 7;
0x00071a06 ldr.w r8, [sp, 0xa8c] | r8 = *(arg_a8ch);
0x00071a0a mov r5, r0 | r5 = r0;
0x00071a0c ldr.w sb, [r0] | sb = *(r0);
0x00071a10 add r3, pc |
0x00071a12 ldr r3, [r3] | r3 = *(0xe36e8);
0x00071a14 cmp r2, r3 |
0x00071a16 ble 0x71a4e |
| while (r3 == 8) {
| label_0:
0x00071a18 eor.w r0, r4, r4, asr 31 | r0 = r4 ^ (r4 >> 31);
0x00071a1c sub.w r0, r0, r4, asr 31 | r0 -= (r4 >> 31);
0x00071a20 uxtb r0, r0 | r0 = (int8_t) r0;
0x00071a22 rsbs r0, r0, 0 | r0 -= ;
| label_7:
0x00071a24 ldr r2, [pc, 0x2b0] |
0x00071a26 cmp.w sb, 0 |
0x00071a2a ldr r3, [pc, 0x2a4] | r3 = *(0x71cd2);
0x00071a2c it ge |
| if (sb < 0) {
0x00071a2e strge sb, [r5] | *(r5) = sb;
| }
0x00071a32 add r2, pc | r2 = 0xe370e;
0x00071a34 ldr r3, [r2, r3] | r3 = *(0xe370e);
0x00071a36 ldr r2, [r3] | r2 = *(0xe370e);
0x00071a38 ldr.w r3, [sp, 0xa5c] | r3 = *(arg_a5ch);
0x00071a3c eors r2, r3 | r2 ^= r3;
0x00071a3e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00071a42 bne.w 0x71cc8 | goto label_10;
| }
0x00071a46 addw sp, sp, 0xa64 | __asm ("addw sp, sp, aav.0x000000ff");
0x00071a4a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00071a4c ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
0x00071a4e ldr r3, [pc, 0x28c] |
0x00071a50 add r3, pc |
0x00071a52 ldr r3, [r3] | r3 = *(0xe3732);
0x00071a54 cmp r3, 8 |
0x00071a56 beq 0x71a18 |
| }
0x00071a58 tst.w r7, 0x3f8 |
| if ((r7 & 0x3f8) == 0) {
0x00071a5c bne 0x71a66 |
0x00071a5e ldr r2, [pc, 0x280] |
0x00071a60 add r2, pc |
0x00071a62 ldr r2, [r2] | r2 = *(0xe3746);
0x00071a64 orrs r7, r2 | r7 |= r2;
| }
0x00071a66 cmp r3, 4 |
| if (r3 <= 4) {
0x00071a68 ble 0x71b5a | goto label_11;
| }
0x00071a6a cmp r3, 7 |
| if (r3 != 7) {
0x00071a6c bne 0x71b5e | goto label_12;
| }
| label_1:
0x00071a6e ldr r3, [pc, 0x274] |
0x00071a70 ldr r2, [pc, 0x274] |
0x00071a72 add r3, pc | r3 = 0xe375c;
0x00071a74 ldrb r3, [r3] | r3 = *(r3);
0x00071a76 add r2, pc |
0x00071a78 ldr r2, [r2] | r2 = *(0xe3762);
0x00071a7a cmp r3, 0 |
| if (r3 != 0) {
0x00071a7c bne.w 0x71c42 | goto label_13;
| }
| label_6:
0x00071a80 ldr r3, [pc, 0x268] |
0x00071a82 add r3, pc |
0x00071a84 ldr r3, [r3] | r3 = *(0xe3772);
0x00071a86 cmp r3, 0 |
| if (r3 < 0) {
0x00071a88 blt 0x71b5e | goto label_12;
| }
| label_5:
0x00071a8a add r2, sp, 0x5c | r2 += arg_38h;
0x00071a8c movs r1, 0 | r1 = 0;
0x00071a8e mov r6, r2 | r6 = r2;
0x00071a90 movs r2, 0x88 | r2 = 0x88;
0x00071a92 mov r0, r6 | r0 = r6;
0x00071a94 add.w fp, sp, 0x25c |
0x00071a98 blx 0x8c54 | fcn_00008c54 ();
0x00071a9c movs r3, 0 | r3 = 0;
0x00071a9e movs r1, 0 | r1 = 0;
0x00071aa0 strd r3, r3, [sp, 0x10] | __asm ("strd r3, r3, [sp, 0x10]");
0x00071aa4 mov r2, r4 | r2 = r4;
0x00071aa6 strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [sp, 8]");
0x00071aaa mov r0, fp | r0 = fp;
0x00071aac ldr r3, [sp, 0x24] | r3 = var_0h;
0x00071aae add.w sl, sp, 0x38 | sl += var_14h;
0x00071ab2 str r6, [sp, 0x2c] | var_8h = r6;
0x00071ab4 str r6, [sp, 0x48] | var_24h = r6;
0x00071ab6 add r6, sp, 0x3c | r6 += var_18h;
0x00071ab8 str r3, [sp, 4] | var_4h_2 = r3;
0x00071aba ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x00071abc strd r1, r1, [sp, 0x40] | __asm ("strd r1, r1, [sp, 0x40]");
0x00071ac0 strd r1, r1, [sp, 0x4c] | __asm ("strd r1, r1, [sp, 0x4c]");
0x00071ac4 str r3, [sp] | *(sp) = r3;
0x00071ac6 add r3, sp, 0x40 | r3 += var_40h;
0x00071ac8 str r3, [sp, 0x34] | var_10h = r3;
0x00071aca strd r1, r1, [sp, 0x54] | __asm ("strd r1, r1, [sp, 0x54]");
0x00071ace ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00071ad0 str r1, [r6] | *(r6) = r1;
0x00071ad2 mov r1, r7 | r1 = r7;
0x00071ad4 bl 0x704cc | fcn_000704cc (r0, r1, r2, r3, r4, r5, r6);
0x00071ad8 ldr r3, [r6] | r3 = *(r6);
0x00071ada add.w r1, sp, 0xa90 | r1 += arg_a90h;
0x00071ade mov r0, fp | r0 = fp;
0x00071ae0 str r1, [sp, 0x28] | var_4h = r1;
0x00071ae2 adds r2, r3, 1 | r2 = r3 + 1;
0x00071ae4 str r3, [sp, 0x30] | var_ch = r3;
0x00071ae6 str r2, [r6] | *(r6) = r2;
0x00071ae8 blx 0x8f38 | fcn_00008f38 ();
0x00071aec ldrd r2, r3, [sp, 0x2c] | __asm ("ldrd r2, r3, [var_8h]");
0x00071af0 ldr r1, [sp, 0x28] | r1 = var_4h;
0x00071af2 str.w fp, [r2, r3, lsl 3] | __asm ("str.w fp, [r2, r3, lsl 3]");
0x00071af6 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x00071afa mov r2, r6 | r2 = r6;
0x00071afc str r0, [r3, 4] | *((r3 + 4)) = r0;
0x00071afe movs r3, 1 | r3 = 1;
0x00071b00 strd r8, r1, [sp, 4] | __asm ("strd r8, r1, [sp, 4]");
0x00071b04 str r4, [sp] | *(sp) = r4;
0x00071b06 ldr r0, [sp, 0x2c] | r0 = var_8h;
0x00071b08 str.w r1, [sl] | __asm ("str.w r1, [sl]");
0x00071b0c movs r1, 0x11 | r1 = 0x11;
0x00071b0e bl 0x7164c | r0 = fcn_0007164c (r0, r1, r2, r3, r4, r5);
0x00071b12 cmp r0, 0 |
| if (r0 >= 0) {
0x00071b14 bge.w 0x71c8c | goto label_14;
| }
0x00071b18 ldr r3, [r6] | r3 = *(r6);
0x00071b1a cmp r3, 1 |
0x00071b1c itt hi |
| if (r3 <= 1) {
0x00071b1e movhi r3, 1 | r3 = 1;
| }
| if (r3 <= 1) {
0x00071b20 strhi r3, [sp, 0x30] | var_ch = r3;
| }
| if (r3 < 1) {
0x00071b22 bls 0x71b68 | goto label_15;
| }
| label_8:
0x00071b24 ldr r3, [sp, 0x2c] | r3 = var_8h;
0x00071b26 mov.w fp, 1 |
0x00071b2a str r4, [sp, 0x2c] | var_8h = r4;
0x00071b2c mov r4, r6 | r4 = r6;
0x00071b2e mov r6, r3 | r6 = r3;
| do {
0x00071b30 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00071b32 add.w fp, fp, 2 |
0x00071b36 blx 0x8dac | fcn_00008dac ();
0x00071b3a ldr r3, [r4] | r3 = *(r4);
0x00071b3c adds r6, 0x10 | r6 += 0x10;
0x00071b3e cmp r3, fp |
0x00071b40 bhi 0x71b30 |
| } while (r3 > fp);
0x00071b42 ldrd r4, r3, [sp, 0x2c] | __asm ("ldrd r4, r3, [var_8h]");
| if (r3 != 0) {
0x00071b46 cbnz r3, 0x71b68 | goto label_15;
| }
| label_9:
0x00071b48 ldr r3, [pc, 0x1a4] |
0x00071b4a add r3, pc | r3 = 0xe383e;
0x00071b4c ldrb r3, [r3] | r3 = *(r3);
0x00071b4e cmp r3, 0 |
| if (r3 == 0) {
0x00071b50 beq.w 0x71a18 | goto label_0;
| }
| label_3:
0x00071b54 bl 0x70b9c | fcn_00070b9c ();
0x00071b58 b 0x71a18 | goto label_0;
| label_11:
0x00071b5a cmp r3, 2 |
| if (r3 > 2) {
0x00071b5c bgt 0x71a6e | goto label_1;
| }
| label_12:
0x00071b5e add.w sl, sp, 0x38 | sl += var_14h;
0x00071b62 add.w r3, sp, 0xa90 | r3 += arg_a90h;
0x00071b66 str r3, [sp, 0x28] | var_4h = r3;
| label_15:
0x00071b68 ldr r3, [sp, 0x28] | r3 = var_4h;
0x00071b6a str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x00071b6e eor.w r3, r4, r4, asr 31 | r3 = r4 ^ (r4 >> 31);
0x00071b72 sub.w r3, r3, r4, asr 31 | r3 -= (r4 >> 31);
0x00071b76 uxtb r3, r3 | r3 = (int8_t) r3;
0x00071b78 cmp.w r8, 0 |
| if (r8 == 0) {
0x00071b7c beq 0x71c26 | goto label_16;
| }
0x00071b7e ldr r2, [pc, 0x174] |
0x00071b80 add r1, sp, 0x40 | r1 += var_40h;
0x00071b82 str.w sb, [sp, 0x28] | __asm ("str.w sb, [var_4h]");
0x00071b86 add.w fp, sp, 0x25c |
0x00071b8a str r7, [sp, 0x30] | var_ch = r7;
0x00071b8c movw r6, 0x107 | r6 = 0x107;
0x00071b90 add r2, pc | r2 = 0xe388a;
0x00071b92 str r4, [sp, 0x2c] | var_8h = r4;
0x00071b94 mov r7, r3 | r7 = r3;
0x00071b96 mov r4, r8 | r4 = r8;
0x00071b98 mov sb, r1 | sb = r1;
0x00071b9a mov r8, r2 | r8 = r2;
| label_2:
0x00071b9c str r7, [r5] | *(r5) = r7;
0x00071b9e movs r2, 1 | r2 = 1;
0x00071ba0 str r4, [sp] | *(sp) = r4;
0x00071ba2 mov r0, fp | r0 = fp;
0x00071ba4 ldr.w r3, [sl] | r3 = *(sl);
0x00071ba8 str r3, [sp, 4] | var_4h_2 = r3;
0x00071baa str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x00071bae mov.w r3, 0x800 | r3 = 0x800;
0x00071bb2 mov r1, r3 | r1 = r3;
0x00071bb4 blx 0x9074 | fcn_00009074 ();
0x00071bb8 mov r1, r8 | r1 = r8;
0x00071bba mov r0, fp | r0 = fp;
0x00071bbc bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x00071bc0 cmp r0, 0 |
| if (r0 != 0) {
0x00071bc2 bne 0x71c64 | goto label_17;
| }
0x00071bc4 mov r0, r4 | r0 = r4;
0x00071bc6 add r4, sp, 0x5c | r4 += arg_38h;
0x00071bc8 mov r2, r4 | r2 = r4;
0x00071bca movs r1, 0x80 | r1 = 0x80;
0x00071bcc blx 0x917c | r0 = fcn_0000917c ();
0x00071bd0 cmp r0, 0x7f |
| if (r0 > 0x7f) {
0x00071bd2 bhi 0x71c4e | goto label_18;
| }
0x00071bd4 ldr.w r1, [sl] | r1 = *(sl);
| if (r0 == 0) {
0x00071bd8 cbz r0, 0x71c16 | goto label_19;
| }
0x00071bda add.w r0, r4, r0, lsl 2 | r0 = r4 + (r0 << 2);
0x00071bde mov r2, r4 | r2 = r4;
| do {
0x00071be0 ldr r3, [r2], 4 | r3 = *(r2);
| r2 += 4;
0x00071be4 lsls r4, r3, 0x14 | r4 = r3 << 0x14;
| if (r4 >= r3) {
0x00071be6 bmi 0x71c10 |
0x00071be8 cmp.w r3, 0x100 |
| if (r3 == 0x100) {
0x00071bec beq 0x71c38 | goto label_20;
| }
| if (r3 <= 0x100) {
0x00071bee bgt 0x71c04 |
0x00071bf0 cmp r3, 7 |
| if (r3 > 7) {
0x00071bf2 bhi 0x71cb2 | goto label_21;
| }
0x00071bf4 subs r3, 2 | r3 -= 2;
0x00071bf6 cmp r3, 5 |
| if (r3 > 5) {
0x00071bf8 bhi 0x71c10 | goto label_22;
| }
| /* switch table (6 cases) at 0x71bfe */
0x00071bfa tbb [pc, r3] | __asm ("tbb aav.0x000000ff");
| }
0x00071c04 cmp.w r3, 0x200 |
| if (r3 == 0x200) {
0x00071c08 beq 0x71c10 | goto label_22;
| }
0x00071c0a cmp.w r3, 0x400 |
| if (r3 != 0x400) {
0x00071c0e bne 0x71c34 | goto label_23;
| }
| }
| label_22:
0x00071c10 adds r1, 4 | r1 += 4;
| label_4:
0x00071c12 cmp r2, r0 |
0x00071c14 bne 0x71be0 |
| } while (r2 != r0);
| label_19:
0x00071c16 ldr r4, [r1] | r4 = *(r1);
0x00071c18 adds r1, 4 | r1 += 4;
0x00071c1a str.w r1, [sl] | __asm ("str.w r1, [sl]");
0x00071c1c asrs r0, r0, 0x20 | r0 >>= 0x20;
0x00071c1e cmp r4, 0 |
| if (r4 != 0) {
0x00071c20 bne 0x71b9c | goto label_2;
| }
0x00071c22 ldrd sb, r4, [sp, 0x28] | __asm ("ldrd sb, r4, [var_4h]");
| label_16:
0x00071c26 ldr r3, [pc, 0xd0] |
0x00071c28 add r3, pc | r3 = 0xe3926;
0x00071c2a ldrb r3, [r3] | r3 = *(r3);
0x00071c2c cmp r3, 0 |
| if (r3 == 0) {
0x00071c2e beq.w 0x71a18 | goto label_0;
| }
0x00071c32 b 0x71b54 | goto label_3;
| label_23:
0x00071c34 cmp r3, r6 |
| if (r3 != r6) {
0x00071c36 bne 0x71cb2 | goto label_21;
| }
| label_20:
0x00071c38 adds r1, 7 | r1 += 7;
0x00071c3a bic r1, r1, 7 | r1 = BIT_MASK (r1, 7);
0x00071c3e adds r1, 8 | r1 += 8;
0x00071c40 b 0x71c12 | goto label_4;
| label_13:
0x00071c42 cmp r2, 0 |
| if (r2 >= 0) {
0x00071c44 bge.w 0x71a8a | goto label_5;
| }
0x00071c48 bl 0x70818 | fcn_00070818 ();
0x00071c4c b 0x71a80 | goto label_6;
| label_18:
0x00071c4e ldr r1, [pc, 0xac] |
0x00071c50 movw r2, 0x3f7 | r2 = 0x3f7;
0x00071c54 ldr r3, [pc, 0xa8] |
0x00071c56 ldr r0, [pc, 0xac] |
0x00071c58 add r1, pc | r1 = 0xe395a;
0x00071c5a add r3, pc | r3 = 0xe395e;
0x00071c5c adds r1, 7 | r1 += 7;
0x00071c5e add r0, pc | r0 = 0xe3968;
0x00071c60 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00071c62 invalid |
| label_17:
0x00071c64 ldrd r4, r7, [sp, 0x2c] | __asm ("ldrd r4, r7, [var_8h]");
0x00071c68 ldr r3, [sp, 0x24] | r3 = var_0h;
0x00071c6a ldr.w sb, [sp, 0x28] | sb = var_4h;
0x00071c6e mov r1, r4 | r1 = r4;
0x00071c70 movs r4, 0 | r4 = 0;
0x00071c72 strd r4, r4, [sp, 0xc] | __asm ("strd r4, r4, [sp, 0xc]");
0x00071c76 mov r0, r7 | r0 = r7;
0x00071c78 strd r4, r4, [sp, 4] | __asm ("strd r4, r4, [sp, 4]");
0x00071c7c add r4, sp, 0x264 | r4 += arg_264h;
0x00071c7e str r3, [sp] | *(sp) = r3;
0x00071c80 str r4, [sp, 0x14] | var_14h_2 = r4;
0x00071c82 ldrd r2, r3, [sp, 0x1c] | __asm ("ldrd r2, r3, [var_1ch]");
0x00071c86 bl 0x70eec | fcn_00070eec (r0, r1, r2, r3, r4, r5, r6);
0x00071c8a b 0x71a24 | goto label_7;
| label_14:
0x00071c8c ldr r3, [pc, 0x78] |
0x00071c8e ldr r2, [sp, 0x34] | r2 = var_10h;
0x00071c90 add r3, pc | r3 = 0xe399c;
0x00071c92 ldr r0, [r3] | r0 = *(0xe399c);
0x00071c94 mov r1, r2 | r1 = r2;
0x00071c96 ldr r3, [r6] | r3 = *(r6);
0x00071c98 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x00071c9a mov.w r2, 0x4000 | r2 = 0x4000;
0x00071c9e blx 0x8db8 | fcn_00008db8 ();
0x00071ca2 ldr r3, [r6] | r3 = *(r6);
0x00071ca4 cmp r3, 1 |
0x00071ca6 itt hi |
| if (r3 <= 1) {
0x00071ca8 movhi r3, 0 | r3 = 0;
| }
| if (r3 > 1) {
0x00071caa strhi r3, [sp, 0x30] | var_ch = r3;
| goto label_24;
| }
| if (r3 > 1) {
| label_24:
0x00071cac bhi.w 0x71b24 | goto label_8;
| }
0x00071cb0 b 0x71b48 | goto label_9;
| label_21:
0x00071cb2 ldr r1, [pc, 0x58] |
0x00071cb4 movw r2, 0x3f7 | r2 = 0x3f7;
0x00071cb8 ldr r3, [pc, 0x54] |
0x00071cba ldr r0, [pc, 0x58] |
0x00071cbc add r1, pc | r1 = 0xe39ce;
0x00071cbe add r3, pc | r3 = 0xe39d2;
0x00071cc0 adds r1, 7 | r1 += 7;
0x00071cc2 add r0, pc | r0 = 0xe39dc;
0x00071cc4 bl 0x71614 | r0 = fcn_00071614 (r0, r1, r2, r3);
| label_10:
0x00071cc8 blx 0x927c | fprintf_chk ()
0x00071ccc strb r2, [r4, 3] | *((r4 + 3)) = r2;
0x00071cce movs r5, r0 | r5 = r0;
0x00071cd0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00071cd2 movs r0, r0 |
0x00071cd4 ldrb r4, [r0, 4] | r4 = *((r0 + 4));
0x00071cd6 movs r5, r0 | r5 = r0;
0x00071cd8 strb r2, [r2, 2] | *((r2 + 2)) = r2;
0x00071cda movs r5, r0 | r5 = r0;
0x00071cdc ldrh r4, [r5, 0x1c] | r4 = *((r5 + 0x1c));
0x00071cde movs r5, r0 | r5 = r0;
0x00071ce0 ldrb r0, [r6, 2] | r0 = *((r6 + 2));
0x00071ce2 movs r5, r0 | r5 = r0;
0x00071ce4 ldrh r6, [r1, 0x1c] | r6 = *((r1 + 0x1c));
0x00071ce6 movs r5, r0 | r5 = r0;
0x00071ce8 ldrb r2, [r2, 2] | r2 = *((r2 + 2));
0x00071cea movs r5, r0 | r5 = r0;
0x00071cec ldrb r6, [r0, 2] | r6 = *((r0 + 2));
0x00071cee movs r5, r0 | r5 = r0;
0x00071cf0 ldrh r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x00071cf2 movs r5, r0 | r5 = r0;
0x00071cf4 adds r3, 0xb0 | r3 += 0xb0;
0x00071cf6 movs r3, r0 | r3 = r0;
0x00071cf8 ldrh r0, [r3, 0xe] | r0 = *((r3 + 0xe));
0x00071cfa movs r5, r0 | r5 = r0;
0x00071cfc adds r1, 0xcc | r1 += 0xcc;
0x00071cfe movs r3, r0 | r3 = r0;
0x00071d00 adds r7, 0x9a | r7 += 0x9a;
0x00071d02 movs r3, r0 | r3 = r0;
0x00071d04 adds r2, 0x6a | r2 += 0x6a;
0x00071d06 movs r3, r0 | r3 = r0;
0x00071d08 strb r0, [r7, 0x19] | *((r7 + 0x19)) = r0;
0x00071d0a movs r5, r0 | r5 = r0;
0x00071d0c adds r1, 0x68 | r1 += 0x68;
0x00071d0e movs r3, r0 | r3 = r0;
0x00071d10 adds r7, 0x36 | r7 += 0x36;
0x00071d12 movs r3, r0 | r3 = r0;
0x00071d14 adds r2, 0x22 | r2 += 0x22;
0x00071d16 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x71dc0 */
| #include <stdint.h>
|
; (fcn) fcn.00071dc0 () | void fcn_00071dc0 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
0x00071dc0 blmi 0xfe444800 | __asm ("blmi aav.0x00056cfc");
0x00071dc4 push {r4, lr} |
0x00071dc6 sub sp, 0x18 |
0x00071dc8 add r2, pc | r2 += pc;
0x00071dca ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00071dcc ldr r3, [r3] | r3 = *(r3);
0x00071dce str r3, [sp, 0x14] | var_14h = r3;
0x00071dd0 mov.w r3, 0 | r3 = 0;
0x00071dd4 bl 0x76a30 | r0 = fcn_00076a30 (r0);
0x00071dd8 cmp r0, 1 |
| if (r0 != 1) {
0x00071dda beq 0x71df4 |
0x00071ddc ldr r0, [pc, 0x224] |
0x00071dde add r0, pc | r0 = 0xe3de6;
0x00071de0 blx 0x8b80 | r0 = ftello64 ();
0x00071de4 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00071de6 cbz r0, 0x71e00 | goto label_7;
| }
0x00071de8 ldrb r3, [r0] | r3 = *(r0);
0x00071dea cmp r3, 0x2a |
| if (r3 != 0x2a) {
0x00071dec bne 0x71e96 | goto label_21;
| }
0x00071dee ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00071df0 cmp r3, 0 |
| if (r3 != 0) {
0x00071df2 bne 0x71e96 | goto label_21;
| }
| }
| label_0:
0x00071df4 ldr r0, [pc, 0x210] |
0x00071df6 movs r2, 1 | r2 = 1;
0x00071df8 movs r1, 0 | r1 = 0;
0x00071dfa add r0, pc | r0 = 0xe3e06;
0x00071dfc bl 0x763c4 | fcn_000763c4 (r0, r1, r2);
| do {
| label_7:
0x00071e00 ldr r0, [pc, 0x208] |
0x00071e02 add r0, pc | r0 = 0xe3e12;
0x00071e04 blx 0x8b80 | r0 = ftello64 ();
0x00071e08 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00071e0a cbz r0, 0x71e16 |
0x00071e0c bl 0x71dac | r0 = fcn_00071dac (r0);
0x00071e10 cmp r0, 0 |
| if (r0 < 0) {
0x00071e12 blt.w 0x71f9a | goto label_22;
| }
0x00071e14 strh r2, [r0, 6] | *((r0 + 6)) = r2;
| }
| label_6:
0x00071e16 ldr r0, [pc, 0x1f8] |
0x00071e18 add r0, pc | r0 = 0xe3e2e;
0x00071e1a blx 0x8b80 | r0 = ftello64 ();
0x00071e1e mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00071e20 cbz r0, 0x71e2c |
0x00071e22 bl 0x71600 | r0 = fcn_00071600 (r0);
0x00071e26 cmp r0, 0 |
| if (r0 < 0) {
0x00071e28 blt.w 0x71f6a | goto label_23;
| }
| }
| label_5:
0x00071e2c ldr r0, [pc, 0x1e4] |
0x00071e2e add r0, pc | r0 = 0xe3e46;
0x00071e30 blx 0x8b80 | r0 = ftello64 ();
0x00071e34 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00071e36 cbz r0, 0x71e40 |
0x00071e38 bl 0x71d3c | r0 = fcn_00071d3c (r0);
0x00071e3c cmp r0, 0 |
| if (r0 < 0) {
0x00071e3e blt 0x71f3a | goto label_24;
| }
| }
| label_4:
0x00071e40 ldr r0, [pc, 0x1d4] |
0x00071e42 add r0, pc | r0 = 0xe3e5e;
0x00071e44 blx 0x8b80 | r0 = ftello64 ();
0x00071e48 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00071e4a cbz r0, 0x71e54 |
0x00071e4c bl 0x71d54 | r0 = fcn_00071d54 (r0);
0x00071e50 cmp r0, 0 |
| if (r0 < 0) {
0x00071e52 blt 0x71f0c | goto label_25;
| }
| }
| label_3:
0x00071e54 ldr r0, [pc, 0x1c4] |
0x00071e56 add r0, pc | r0 = 0xe3e76;
0x00071e58 blx 0x8b80 | r0 = ftello64 ();
0x00071e5c mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00071e5e cbz r0, 0x71e68 |
0x00071e60 bl 0x71d6c | r0 = fcn_00071d6c (r0);
0x00071e64 cmp r0, 0 |
| if (r0 < 0) {
0x00071e66 blt 0x71ede | goto label_26;
| }
| }
| label_2:
0x00071e68 ldr r0, [pc, 0x1b4] |
0x00071e6a add r0, pc | r0 = 0xe3e8e;
0x00071e6c blx 0x8b80 | r0 = ftello64 ();
0x00071e70 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00071e72 cbz r0, 0x71e7c |
0x00071e74 bl 0x71d84 | r0 = fcn_00071d84 (r0);
0x00071e78 cmp r0, 0 |
| if (r0 < 0) {
0x00071e7a blt 0x71eb0 | goto label_27;
| }
| }
| label_1:
0x00071e7c ldr r2, [pc, 0x1a4] |
0x00071e7e ldr r3, [pc, 0x180] | r3 = *(0x72002);
0x00071e80 add r2, pc | r2 = 0xe3ea8;
0x00071e82 ldr r3, [r2, r3] | r3 = *(0xe3ea8);
0x00071e84 ldr r2, [r3] | r2 = *(0xe3ea8);
0x00071e86 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00071e88 eors r2, r3 | r2 ^= r3;
0x00071e8a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00071e8e bne.w 0x71ff6 | goto label_28;
| }
0x00071e92 add sp, 0x18 |
0x00071e94 pop {r4, pc} |
| label_21:
0x00071e96 add r1, sp, 0x10 | r1 += var_10h;
0x00071e98 mov r0, r4 | r0 = r4;
0x00071e9a bl 0x74584 | r0 = fcn_00074584 (r0, r1);
0x00071e9e cmp r0, 0 |
| if (r0 < 0) {
0x00071ea0 blt.w 0x71fca | goto label_29;
| }
0x00071ea4 bl 0x76a30 | fcn_00076a30 (r0);
0x00071ea8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00071eaa cmp r0, r3 |
0x00071eac bne 0x71e00 |
| } while (r0 != r3);
0x00071eae b 0x71df4 | goto label_0;
| label_27:
0x00071eb0 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00071eb4 cmp r0, 3 |
| if (r0 <= 3) {
0x00071eb6 ble 0x71e7c | goto label_1;
| }
0x00071eb8 ldr r2, [pc, 0x16c] |
0x00071eba movw r3, 0x4c6 | r3 = 0x4c6;
0x00071ebe ldr r1, [pc, 0x16c] |
0x00071ec0 movs r0, 4 | r0 = 4;
0x00071ec2 ldr.w ip, [pc, 0x16c] |
0x00071ec4 stm r1!, {r2, r3, r5, r6} | *(r1!) = r2;
| *((r1! + 4)) = r3;
| *((r1! + 8)) = r5;
| *((r1! + 12)) = r6;
0x00071ec6 add r2, pc | r2 = 0xe3ef2;
0x00071ec8 str r4, [sp, 8] | var_8h_2 = r4;
0x00071eca add r1, pc | r1 = 0xe3efc;
0x00071ecc adds r2, 7 | r2 += 7;
0x00071ece add ip, pc | ip = 0xe3f04;
0x00071ed0 str r1, [sp, 4] | var_4h_2 = r1;
0x00071ed2 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00071ed6 movs r1, 0 | r1 = 0;
0x00071ed8 bl 0x71448 | fcn_00071448 ();
0x00071edc b 0x71e7c | goto label_1;
| label_26:
0x00071ede bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00071ee2 cmp r0, 3 |
| if (r0 <= 3) {
0x00071ee4 ble 0x71e68 | goto label_2;
| }
0x00071ee6 ldr r2, [pc, 0x14c] |
0x00071ee8 movw r3, 0x4c2 | r3 = 0x4c2;
0x00071eec ldr r1, [pc, 0x148] |
0x00071eee movs r0, 4 | r0 = 4;
0x00071ef0 ldr.w ip, [pc, 0x148] |
0x00071ef4 add r2, pc | r2 = 0xe3f2e;
0x00071ef6 str r4, [sp, 8] | var_8h_2 = r4;
0x00071ef8 add r1, pc | r1 = 0xe3f34;
0x00071efa adds r2, 7 | r2 += 7;
0x00071efc add ip, pc | ip = 0xe3f3c;
0x00071efe str r1, [sp, 4] | var_4h_2 = r1;
0x00071f00 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00071f04 movs r1, 0 | r1 = 0;
0x00071f06 bl 0x71448 | fcn_00071448 ();
0x00071f0a b 0x71e68 | goto label_2;
| label_25:
0x00071f0c bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00071f10 cmp r0, 3 |
| if (r0 <= 3) {
0x00071f12 ble 0x71e54 | goto label_3;
| }
0x00071f14 ldr r2, [pc, 0x128] |
0x00071f16 movw r3, 0x4be | r3 = 0x4be;
0x00071f1a ldr r1, [pc, 0x128] |
0x00071f1c movs r0, 4 | r0 = 4;
0x00071f1e ldr.w ip, [pc, 0x128] |
0x00071f22 add r2, pc | r2 = 0xe3f66;
0x00071f24 str r4, [sp, 8] | var_8h_2 = r4;
0x00071f26 add r1, pc | r1 = 0xe3f70;
0x00071f28 adds r2, 7 | r2 += 7;
0x00071f2a add ip, pc | ip = 0xe3f78;
0x00071f2c str r1, [sp, 4] | var_4h_2 = r1;
0x00071f2e str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00071f32 movs r1, 0 | r1 = 0;
0x00071f34 bl 0x71448 | fcn_00071448 ();
0x00071f38 b 0x71e54 | goto label_3;
| label_24:
0x00071f3a bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00071f3e cmp r0, 3 |
| if (r0 <= 3) {
0x00071f40 ble.w 0x71e40 | goto label_4;
| }
0x00071f44 ldr r2, [pc, 0x104] |
0x00071f46 movw r3, 0x4ba | r3 = 0x4ba;
0x00071f4a ldr r1, [pc, 0x104] |
0x00071f4c movs r0, 4 | r0 = 4;
0x00071f4e ldr.w ip, [pc, 0x104] |
0x00071f52 add r2, pc | r2 = 0xe3fa2;
0x00071f54 str r4, [sp, 8] | var_8h_2 = r4;
0x00071f56 add r1, pc | r1 = 0xe3fac;
0x00071f58 adds r2, 7 | r2 += 7;
0x00071f5a add ip, pc | ip = 0xe3fb4;
0x00071f5c str r1, [sp, 4] | var_4h_2 = r1;
0x00071f5e str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00071f62 movs r1, 0 | r1 = 0;
0x00071f64 bl 0x71448 | fcn_00071448 ();
0x00071f68 b 0x71e40 | goto label_4;
| label_23:
0x00071f6a bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00071f6e cmp r0, 3 |
| if (r0 <= 3) {
0x00071f70 ble.w 0x71e2c | goto label_5;
| }
0x00071f72 add r7, sp, 0x170 | r7 = sp + 0x170;
0x00071f74 ldr r2, [pc, 0xe0] |
0x00071f76 movw r3, 0x4b6 | r3 = 0x4b6;
0x00071f7a ldr r1, [pc, 0xe0] |
0x00071f7c movs r0, 4 | r0 = 4;
0x00071f7e ldr.w ip, [pc, 0xe0] |
0x00071f82 add r2, pc | r2 = 0xe3fde;
0x00071f84 str r4, [sp, 8] | var_8h_2 = r4;
0x00071f86 add r1, pc | r1 = 0xe3fe8;
0x00071f88 adds r2, 7 | r2 += 7;
0x00071f8a add ip, pc | ip = 0xe3ff0;
0x00071f8c str r1, [sp, 4] | var_4h_2 = r1;
0x00071f8e str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00071f92 movs r1, 0 | r1 = 0;
0x00071f94 bl 0x71448 | fcn_00071448 ();
0x00071f98 b 0x71e2c | goto label_5;
| label_22:
0x00071f9a bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00071f9e cmp r0, 3 |
| if (r0 <= 3) {
0x00071fa0 ble.w 0x71e16 | goto label_6;
| }
0x00071fa4 ldr r2, [pc, 0xbc] |
0x00071fa6 movw r3, 0x4b2 | r3 = 0x4b2;
0x00071faa ldr r1, [pc, 0xbc] |
0x00071fac movs r0, 4 | r0 = 4;
0x00071fae ldr.w ip, [pc, 0xbc] |
0x00071fb2 add r2, pc | r2 = 0xe401a;
0x00071fb4 str r4, [sp, 8] | var_8h_2 = r4;
0x00071fb6 add r1, pc | r1 = 0xe4024;
0x00071fb8 adds r2, 7 | r2 += 7;
0x00071fba add ip, pc | ip = 0xe402c;
0x00071fbc str r1, [sp, 4] | var_4h_2 = r1;
0x00071fbe str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00071fc2 movs r1, 0 | r1 = 0;
0x00071fc4 bl 0x71448 | fcn_00071448 ();
0x00071fc8 b 0x71e16 | goto label_6;
| label_29:
0x00071fca bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00071fce cmp r0, 6 |
| if (r0 <= 6) {
0x00071fd0 ble.w 0x71e00 | goto label_7;
| }
0x00071fd4 ldr r2, [pc, 0x98] |
0x00071fd6 movw r3, 0x4a1 | r3 = 0x4a1;
0x00071fda ldr r1, [pc, 0x98] |
0x00071fdc ldr r0, [pc, 0x98] |
0x00071fde add r2, pc | r2 = 0xe4052;
0x00071fe0 str r4, [sp, 8] | var_8h_2 = r4;
0x00071fe2 add r1, pc | r1 = 0xe405c;
0x00071fe4 adds r2, 7 | r2 += 7;
0x00071fe6 add r0, pc | r0 = 0xe4062;
0x00071fe8 str r1, [sp, 4] | var_4h_2 = r1;
0x00071fea str r0, [sp] | *(sp) = r0;
0x00071fec movs r1, 0 | r1 = 0;
0x00071fee movs r0, 7 | r0 = 7;
0x00071ff0 bl 0x71448 | fcn_00071448 ();
0x00071ff4 b 0x71e00 | goto label_7;
| label_28:
0x00071ff6 blx 0x927c | fprintf_chk ()
0x00071ffa nop |
0x00071ffc ldr r4, [r7, 0x4c] | r4 = *((r7 + 0x4c));
0x00071ffe movs r5, r0 | r5 = r0;
0x00072000 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00072002 movs r0, r0 |
0x00072004 adds r1, 0x6e | r1 += 0x6e;
0x00072006 movs r3, r0 | r3 = r0;
0x00072008 lsls r7, r7, 9 | r7 <<= 9;
0x0007200a movs r0, r0 |
0x0007200c adds r1, 0x92 | r1 += 0x92;
0x0007200e movs r3, r0 | r3 = r0;
0x00072010 adds r1, 0xbc | r1 += 0xbc;
0x00072012 movs r3, r0 | r3 = r0;
0x00072014 adds r1, 0xe6 | r1 += 0xe6;
0x00072016 movs r3, r0 | r3 = r0;
0x00072018 adds r2, 0x12 | r2 += 0x12;
0x0007201a movs r3, r0 | r3 = r0;
0x0007201c adds r2, 0x46 | r2 += 0x46;
0x0007201e movs r3, r0 | r3 = r0;
0x00072020 adds r2, 0x72 | r2 += 0x72;
0x00072022 movs r3, r0 | r3 = r0;
0x00072024 ldr r4, [r0, 0x44] | r4 = *((r0 + 0x44));
0x00072026 movs r5, r0 | r5 = r0;
0x00072028 cmp r7, 0x5e |
0x0007202a movs r3, r0 | r3 = r0;
0x0007202c adds r2, 0x22 | r2 += 0x22;
0x0007202e movs r3, r0 | r3 = r0;
0x00072030 adds r5, 0x9e | r5 += 0x9e;
0x00072032 movs r3, r0 | r3 = r0;
0x00072034 cmp r7, 0x30 |
0x00072036 movs r3, r0 | r3 = r0;
0x00072038 adds r1, 0xb8 | r1 += 0xb8;
0x0007203a movs r3, r0 | r3 = r0;
0x0007203c adds r5, 0x70 | r5 += 0x70;
0x0007203e movs r3, r0 | r3 = r0;
0x00072040 cmp r7, 2 |
0x00072042 movs r3, r0 | r3 = r0;
0x00072044 adds r1, 0x46 | r1 += 0x46;
0x00072046 movs r3, r0 | r3 = r0;
0x00072048 adds r5, 0x42 | r5 += 0x42;
0x0007204a movs r3, r0 | r3 = r0;
0x0007204c cmp r6, 0xd2 |
0x0007204e movs r3, r0 | r3 = r0;
0x00072050 adds r0, 0xd2 | r0 += 0xd2;
0x00072052 movs r3, r0 | r3 = r0;
0x00072054 adds r5, 0x12 | r5 += 0x12;
0x00072056 movs r3, r0 | r3 = r0;
0x00072058 cmp r6, 0xa2 |
0x0007205a movs r3, r0 | r3 = r0;
0x0007205c adds r0, 0x62 | r0 += 0x62;
0x0007205e movs r3, r0 | r3 = r0;
0x00072060 adds r4, 0xe2 | r4 += 0xe2;
0x00072062 movs r3, r0 | r3 = r0;
0x00072064 cmp r6, 0x72 |
0x00072066 movs r3, r0 | r3 = r0;
0x00072068 cmp r7, 0xf2 |
0x0007206a movs r3, r0 | r3 = r0;
0x0007206c adds r4, 0xb2 | r4 += 0xb2;
0x0007206e movs r3, r0 | r3 = r0;
0x00072070 cmp r6, 0x46 |
0x00072072 movs r3, r0 | r3 = r0;
0x00072074 cmp r7, 0x7e |
0x00072076 movs r3, r0 | r3 = r0;
0x00072078 adds r4, 0x36 | r4 += 0x36;
0x0007207a movs r3, r0 | r3 = r0;
0x0007207c push {r4, r5, lr} |
0x0007207e mov r4, r1 | r4 = r1;
0x00072080 ldr r1, [pc, 0x1e0] |
0x00072082 sub sp, 0x14 |
0x00072084 mov r5, r0 | r5 = r0;
0x00072086 add r1, pc | r1 = 0xe42ee;
0x00072088 blx 0x95e0 | r0 = fcn_000095e0 ();
| if (r0 != 0) {
0x0007208c cbnz r0, 0x720de | goto label_30;
| }
0x0007208e cmp r4, 0 |
| if (r4 == 0) {
0x00072090 beq 0x72138 | goto label_31;
| }
0x00072092 ldr r1, [pc, 0x1d4] |
0x00072094 mov r0, r5 | r0 = r5;
0x00072096 add r1, pc | r1 = 0xe4304;
0x00072098 bl 0x765f0 | r0 = fcn_000765f0 (r0);
0x0007209c cmp r0, 0 |
| if (r0 == 0) {
0x0007209e beq 0x72108 | goto label_32;
| }
| label_8:
0x000720a0 mov r0, r4 | r0 = r4;
0x000720a2 bl 0x71dac | r0 = fcn_00071dac (r0);
0x000720a6 cmp r0, 0 |
0x000720a8 blt 0x720b0 |
| while (r0 <= 3) {
| label_9:
0x000720aa movs r0, 0 | r0 = 0;
0x000720ac add sp, 0x14 |
0x000720ae pop {r4, r5, pc} |
0x000720b0 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000720b4 cmp r0, 3 |
0x000720b6 ble 0x720aa |
| }
0x000720b8 ldr r2, [pc, 0x1b0] |
0x000720ba movw r3, 0x46a | r3 = 0x46a;
0x000720be ldr r1, [pc, 0x1b0] |
0x000720c0 ldr r0, [pc, 0x1b0] |
0x000720c2 add r2, pc | r2 = 0xe4332;
0x000720c4 add r1, pc | r1 = 0xe433a;
0x000720c6 add r0, pc | r0 = 0xe433e;
| label_11:
0x000720c8 str r4, [sp, 8] | var_8h = r4;
| label_10:
0x000720ca str r1, [sp, 4] | var_4h = r1;
0x000720cc adds r2, 7 | r2 += 7;
0x000720ce str r0, [sp] | *(sp) = r0;
0x000720d0 movs r1, 0 | r1 = 0;
0x000720d2 movs r0, 4 | r0 = 4;
0x000720d4 bl 0x71448 | fcn_00071448 ();
0x000720d8 movs r0, 0 | r0 = 0;
0x000720da add sp, 0x14 |
0x000720dc pop {r4, r5, pc} |
| label_30:
0x000720de ldr r1, [pc, 0x198] |
0x000720e0 mov r0, r5 | r0 = r5;
0x000720e2 add r1, pc | r1 = 0xe4360;
0x000720e4 bl 0x765f0 | r0 = fcn_000765f0 (r0);
| if (r0 == 0) {
0x000720e8 cbz r0, 0x72144 | goto label_33;
| }
0x000720ea cmp r4, 0 |
| if (r4 != 0) {
0x000720ec bne 0x720a0 | goto label_8;
| }
| label_13:
0x000720ee bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000720f2 cmp r0, 3 |
| if (r0 <= 3) {
0x000720f4 ble 0x720aa | goto label_9;
| }
0x000720f6 ldr r2, [pc, 0x184] |
0x000720f8 movs r3, 0x22 | r3 = 0x22;
0x000720fa ldr r1, [pc, 0x184] |
0x000720fc ldr r0, [pc, 0x184] |
0x000720fe add r2, pc | r2 = 0xe4380;
0x00072100 str r5, [sp, 8] | var_8h = r5;
0x00072102 add r1, pc | r1 = 0xe4388;
0x00072104 add r0, pc | r0 = 0xe438c;
0x00072106 b 0x720ca | goto label_10;
| label_32:
0x00072108 ldr r1, [pc, 0x17c] |
0x0007210a mov r0, r5 | r0 = r5;
0x0007210c add r1, pc | r1 = 0xe4398;
0x0007210e bl 0x765f0 | r0 = fcn_000765f0 (r0);
| if (r0 == 0) {
0x00072112 cbz r0, 0x72158 | goto label_34;
| }
| label_12:
0x00072114 mov r0, r4 | r0 = r4;
0x00072116 bl 0x71600 | r0 = fcn_00071600 (r0);
0x0007211a cmp r0, 0 |
| if (r0 >= 0) {
0x0007211c bge 0x720aa | goto label_9;
| }
0x0007211e bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00072122 cmp r0, 3 |
| if (r0 <= 3) {
0x00072124 ble 0x720aa | goto label_9;
| }
0x00072126 ldr r2, [pc, 0x164] |
0x00072128 movw r3, 0x472 | r3 = 0x472;
0x0007212c ldr r1, [pc, 0x160] |
0x0007212e ldr r0, [pc, 0x164] |
0x00072130 add r2, pc | r2 = 0xe43c2;
0x00072132 add r1, pc | r1 = 0xe43c6;
0x00072134 add r0, pc | r0 = 0xe43ce;
0x00072136 b 0x720c8 | goto label_11;
| label_31:
0x00072138 movs r0, 7 | r0 = 7;
0x0007213a bl 0x715c4 | fcn_000715c4 (r0);
0x0007213e movs r0, 0 | r0 = 0;
0x00072140 add sp, 0x14 |
0x00072142 pop {r4, r5, pc} |
| label_33:
0x00072144 ldr r1, [pc, 0x150] |
0x00072146 mov r0, r5 | r0 = r5;
0x00072148 add r1, pc | r1 = 0xe43e4;
0x0007214a bl 0x765f0 | r0 = fcn_000765f0 (r0);
0x0007214e cmp r0, 0 |
| if (r0 == 0) {
0x00072150 beq 0x721f0 | goto label_35;
| }
0x00072152 cmp r4, 0 |
| if (r4 != 0) {
0x00072154 bne 0x72114 | goto label_12;
| }
0x00072156 b 0x720ee | goto label_13;
| label_34:
0x00072158 ldr r1, [pc, 0x140] |
0x0007215a mov r0, r5 | r0 = r5;
0x0007215c add r1, pc | r1 = 0xe43fc;
0x0007215e bl 0x765f0 | r0 = fcn_000765f0 (r0);
| if (r0 == 0) {
0x00072162 cbz r0, 0x72188 | goto label_36;
| }
| label_14:
0x00072164 mov r0, r4 | r0 = r4;
| label_15:
0x00072166 bl 0x71d3c | r0 = fcn_00071d3c (r0);
0x0007216a cmp r0, 0 |
| if (r0 >= 0) {
0x0007216c bge 0x720aa | goto label_9;
| }
0x0007216e bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00072172 cmp r0, 3 |
| if (r0 <= 3) {
0x00072174 ble 0x720aa | goto label_9;
| }
0x00072176 ldr r2, [pc, 0x128] |
0x00072178 movw r3, 0x477 | r3 = 0x477;
0x0007217c ldr r1, [pc, 0x124] |
0x0007217e ldr r0, [pc, 0x128] |
0x00072180 add r2, pc | r2 = 0xe4426;
0x00072182 add r1, pc | r1 = 0xe442a;
0x00072184 add r0, pc | r0 = 0xe4432;
0x00072186 b 0x720c8 | goto label_11;
| label_36:
0x00072188 ldr r1, [pc, 0x120] |
0x0007218a mov r0, r5 | r0 = r5;
0x0007218c add r1, pc | r1 = 0xe443c;
0x0007218e bl 0x765f0 | r0 = fcn_000765f0 (r0);
| if (r0 == 0) {
0x00072192 cbz r0, 0x721b8 | goto label_16;
| }
| label_17:
0x00072194 mov r0, r4 | r0 = r4;
| label_18:
0x00072196 bl 0x71d54 | r0 = fcn_00071d54 (r0);
0x0007219a cmp r0, 0 |
| if (r0 >= 0) {
0x0007219c bge 0x720aa | goto label_9;
| }
0x0007219e bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000721a2 cmp r0, 3 |
| if (r0 <= 3) {
0x000721a4 ble 0x720aa | goto label_9;
| }
0x000721a6 ldr r2, [pc, 0x108] |
0x000721a8 movw r3, 0x47c | r3 = 0x47c;
0x000721ac ldr r1, [pc, 0x104] |
0x000721ae ldr r0, [pc, 0x108] |
0x000721b0 add r2, pc | r2 = 0xe4466;
0x000721b2 add r1, pc | r1 = 0xe446a;
0x000721b4 add r0, pc | r0 = 0xe4472;
0x000721b6 b 0x720c8 | goto label_11;
| label_16:
0x000721b8 ldr r1, [pc, 0x100] |
0x000721ba mov r0, r5 | r0 = r5;
0x000721bc add r1, pc | r1 = 0xe447c;
0x000721be bl 0x765f0 | r0 = fcn_000765f0 (r0);
| if (r0 == 0) {
0x000721c2 cbz r0, 0x7221e | goto label_37;
| }
0x000721c4 mov r0, r4 | r0 = r4;
0x000721c6 cmp r4, 0 |
| if (r4 == 0) {
0x000721c8 beq 0x72258 | goto label_38;
| }
| label_19:
0x000721ca bl 0x71d84 | r0 = fcn_00071d84 (r0);
0x000721ce cmp r0, 0 |
| if (r0 >= 0) {
0x000721d0 bge.w 0x720aa | goto label_9;
| }
0x000721d4 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000721d8 cmp r0, 3 |
| if (r0 <= 3) {
0x000721da ble.w 0x720aa | goto label_9;
| }
0x000721de ldr r2, [pc, 0xe0] |
0x000721e0 movw r3, 0x481 | r3 = 0x481;
0x000721e2 bics r1, r0 | __asm ("bics r1, r0");
0x000721e4 ldr r1, [pc, 0xdc] |
0x000721e6 ldr r0, [pc, 0xe0] |
0x000721e8 add r2, pc | r2 = 0xe44ae;
0x000721ea add r1, pc | r1 = 0xe44b2;
0x000721ec add r0, pc | r0 = 0xe44ba;
0x000721ee b 0x720c8 | goto label_11;
| label_35:
0x000721f0 ldr r1, [pc, 0xd8] |
0x000721f2 mov r0, r5 | r0 = r5;
0x000721f4 add r1, pc | r1 = 0xe44c4;
0x000721f6 bl 0x765f0 | r0 = fcn_000765f0 (r0);
| if (r0 == 0) {
0x000721fa cbz r0, 0x72206 | goto label_39;
| }
0x000721fc cmp r4, 0 |
| if (r4 != 0) {
0x000721fe bne 0x72164 | goto label_14;
| }
0x00072200 ldr r0, [pc, 0xcc] |
0x00072202 add r0, pc | r0 = 0xe44d6;
0x00072204 b 0x72166 | goto label_15;
| label_39:
0x00072206 ldr r1, [pc, 0xcc] |
0x00072208 mov r0, r5 | r0 = r5;
0x0007220a add r1, pc | r1 = 0xe44e4;
0x0007220c bl 0x765f0 | r0 = fcn_000765f0 (r0);
0x00072210 cmp r0, 0 |
| if (r0 == 0) {
0x00072212 beq 0x721b8 | goto label_16;
| }
0x00072214 cmp r4, 0 |
| if (r4 != 0) {
0x00072216 bne 0x72194 | goto label_17;
| }
0x00072218 ldr r0, [pc, 0xbc] |
0x0007221a add r0, pc | r0 = 0xe44f6;
0x0007221c b 0x72196 | goto label_18;
| label_37:
0x0007221e ldr r1, [pc, 0xbc] |
0x00072220 mov r0, r5 | r0 = r5;
0x00072222 add r1, pc | r1 = 0xe4504;
0x00072224 bl 0x765f0 | r0 = fcn_000765f0 (r0);
0x00072228 cmp r0, 0 |
| if (r0 == 0) {
0x0007222a beq.w 0x720aa | goto label_9;
| }
0x0007222e mov r0, r4 | r0 = r4;
| if (r4 == 0) {
0x00072230 cbz r4, 0x7225e | goto label_40;
| }
| label_20:
0x00072232 bl 0x71d6c | r0 = fcn_00071d6c (r0);
0x00072236 cmp r0, 0 |
| if (r0 >= 0) {
0x00072238 bge.w 0x720aa | goto label_9;
| }
0x0007223c bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00072240 cmp r0, 3 |
| if (r0 <= 3) {
0x00072242 ble.w 0x720aa | goto label_9;
| }
0x00072246 ldr r2, [pc, 0x98] |
0x00072248 movw r3, 0x486 | r3 = 0x486;
0x0007224c ldr r1, [pc, 0x94] |
0x0007224e ldr r0, [pc, 0x98] |
0x00072250 add r2, pc | r2 = 0xe4536;
0x00072252 add r1, pc | r1 = 0xe453a;
0x00072254 add r0, pc | r0 = 0xe4542;
0x00072256 b 0x720c8 | goto label_11;
| label_38:
0x00072258 ldr r0, [pc, 0x90] |
0x0007225a add r0, pc | r0 = 0xe454a;
0x0007225c b 0x721ca | goto label_19;
| label_40:
0x0007225e ldr r0, [pc, 0x90] |
0x00072260 add r0, pc | r0 = 0xe4556;
0x00072262 b 0x72232 | goto label_20;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x722f4 */
| #include <stdint.h>
|
; (fcn) fcn.000722f4 () | void fcn_000722f4 (int16_t arg_24h, int16_t arg_30h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_844h, int16_t arg_870h, int16_t arg_874h, int16_t arg_878h, int16_t arg_87ch, int16_t arg_880h, int16_t arg_884h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int32_t var_844h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_10h_2;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000722f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000722f8 mov r5, r1 | r5 = r1;
0x000722fa ldr r4, [pc, 0x198] |
0x000722fc subw sp, sp, 0x84c | __asm ("subw sp, sp, aav.0x000000ff");
0x00072300 mov r6, r2 | r6 = r2;
0x00072302 mov sb, r3 | sb = r3;
0x00072304 ldr r1, [pc, 0x190] | r1 = *(0x72498);
0x00072306 mov r8, r0 | r8 = r0;
0x00072308 add r4, pc | r4 = 0xe47a2;
0x0007230a ldr r1, [r4, r1] |
0x0007230c ldr r1, [r1] | r1 = *(0xe47a2);
0x0007230e str.w r1, [sp, 0x844] | __asm ("str.w r1, [arg_844h]");
0x00072312 mov.w r1, 0 | r1 = 0;
0x00072316 blx 0x9628 | fcn_00009628 ();
0x0007231a ldr.w r2, [sp, 0x870] | r2 = *(arg_870h);
0x0007231e mov r4, r0 | r4 = r0;
0x00072320 ldr r3, [pc, 0x178] |
0x00072322 ldr.w fp, [sp, 0x874] | fp = *(arg_874h);
0x00072326 ldr.w sl, [sp, 0x87c] | sl = *(arg_87ch);
0x0007232a add r3, pc |
0x0007232c eor.w r0, r2, r2, asr 31 | r0 = r2 ^ (r2 >> 31);
0x00072330 ldr r3, [r3] | r3 = *(0xe47ca);
0x00072332 sub.w r0, r0, r2, asr 31 | r0 -= (r2 >> 31);
0x00072336 and r2, r5, 7 | r2 = r5 & 7;
0x0007233a ldr.w r1, [sp, 0x880] | r1 = *(arg_880h);
0x0007233e cmp r2, r3 |
0x00072340 ldr r7, [r4] | r7 = *(r4);
0x00072342 uxtb r0, r0 | r0 = (int8_t) r0;
0x00072344 ble 0x7236e |
| while (r3 == 8) {
0x00072346 rsbs r0, r0, 0 | r0 -= ;
| label_0:
0x00072348 ldr r2, [pc, 0x154] |
0x0007234a cmp r7, 0 |
0x0007234c ldr r3, [pc, 0x148] | r3 = *(0x72498);
0x0007234e it ge |
| if (r7 < 0) {
0x00072350 strge r7, [r4] | *(r4) = r7;
| }
0x00072352 add r2, pc | r2 = 0xe47f6;
0x00072354 ldr r3, [r2, r3] | r3 = *(0xe47f6);
0x00072356 ldr r2, [r3] | r2 = *(0xe47f6);
0x00072358 ldr.w r3, [sp, 0x844] | r3 = *(arg_844h);
0x0007235c eors r2, r3 | r2 ^= r3;
0x0007235e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00072362 bne.w 0x72490 | goto label_1;
| }
0x00072366 addw sp, sp, 0x84c | __asm ("addw sp, var_38h");
0x0007236a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0007236c ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
0x0007236e ldr r3, [pc, 0x134] |
0x00072370 add r3, pc |
0x00072372 ldr r3, [r3] | r3 = *(0xe481a);
0x00072374 cmp r3, 8 |
0x00072376 beq 0x72346 |
| }
0x00072378 add r3, sp, 0x44 | r3 += arg_44h;
0x0007237a addw r2, sp, 0x884 | __asm ("addw r2, arg_884h");
0x0007237e str r0, [r4] | *(r4) = r0;
0x00072380 mov r0, r3 | r0 = r3;
0x00072382 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x00072384 mov.w r3, 0x800 | r3 = 0x800;
0x00072386 str r0, [r0, 0x30] | *((r0 + 0x30)) = r0;
0x00072388 str r1, [sp] | *(sp) = r1;
0x0007238a mov r1, r3 | r1 = r3;
0x0007238c str r2, [sp, 4] | var_3ch = r2;
0x0007238e str r2, [sp, 0x40] | *(arg_40h) = r2;
0x00072390 movs r2, 1 | r2 = 1;
0x00072392 blx 0x9074 | fcn_00009074 ();
0x00072396 cmp.w r8, 0 |
| if (r8 == 0) {
0x0007239a beq 0x723dc | goto label_2;
| }
0x0007239c bl 0x76a30 | r0 = fcn_00076a30 (r0);
0x000723a0 cmp r0, 1 |
| if (r0 == 1) {
0x000723a2 beq 0x7248a | goto label_3;
| }
0x000723a4 ldr r3, [pc, 0x100] |
0x000723a6 add r3, pc | r3 = 0xe4852;
| do {
| if (r6 == 0) {
0x000723a8 cbnz r6, 0x723e0 |
0x000723aa str r3, [sp, 0x14] | var_14h_2 = r3;
0x000723ac mov r2, fp | r2 = fp;
0x000723ae ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x000723b0 mov r0, r5 | r0 = r5;
0x000723b2 ldr.w r1, [sp, 0x870] | r1 = *(arg_870h);
0x000723b6 str r6, [sp, 0x1c] | var_1ch = r6;
0x000723b8 str r3, [sp, 0x10] | var_10h_2 = r3;
0x000723ba ldr r3, [pc, 0xf0] |
0x000723bc str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x000723c0 str.w r8, [sp, 0x18] | __asm ("str.w r8, [var_18h]");
0x000723c4 add r3, pc | r3 = 0xe4876;
0x000723c6 str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_44h]");
0x000723ca str r3, [sp, 8] | var_40h = r3;
0x000723cc ldr r3, [pc, 0xe0] |
0x000723ce add r3, pc | r3 = 0xe4882;
0x000723d0 str r3, [sp, 4] | var_3ch = r3;
0x000723d2 ldr.w r3, [sp, 0x878] | r3 = *(arg_878h);
0x000723d4 subs r0, 0x78 | r0 -= 0x78;
0x000723d6 bl 0x719d4 | fcn_000719d4 (r0, r1, r2, r3, r4, r5, r6);
0x000723da b 0x72348 | goto label_0;
| label_2:
0x000723dc mov r3, r8 | r3 = r8;
| if (r6 == 0) {
0x000723de cbz r6, 0x7242c | goto label_4;
| }
| }
0x000723e0 cmp.w sb, 0 |
| if (sb != 0) {
0x000723e4 beq 0x72454 |
0x000723e6 strd r3, r8, [sp, 0x28] | __asm ("strd r3, r8, [sp, 0x28]");
0x000723ea mov r2, fp | r2 = fp;
0x000723ec ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x000723ee mov r0, r5 | r0 = r5;
0x000723f0 ldr.w r1, [sp, 0x870] | r1 = *(arg_870h);
0x000723f4 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x000723f8 str r3, [sp, 0x24] | *(arg_24h) = r3;
0x000723fa ldr r3, [pc, 0xb8] |
0x000723fc str.w sb, [sp, 0x20] | __asm ("str.w sb, [var_20h]");
0x00072400 str.w sb, [sp, 0x14] | __asm ("str.w sb, [var_14h_2]");
0x00072404 add r3, pc | r3 = 0xe48be;
0x00072406 str r6, [sp, 0x1c] | var_1ch = r6;
0x00072408 str r3, [sp, 0x18] | var_18h = r3;
0x0007240a ldr r3, [pc, 0xac] |
0x0007240c str r6, [sp, 0xc] | var_44h = r6;
0x0007240e add r3, pc | r3 = 0xe48cc;
0x00072410 str r3, [sp, 0x10] | var_10h_2 = r3;
0x00072412 ldr r3, [pc, 0xa8] |
0x00072414 add r3, pc | r3 = 0xe48d6;
0x00072416 str r3, [sp, 8] | var_40h = r3;
0x00072418 ldr r3, [pc, 0xa4] |
0x0007241a add r3, pc | r3 = 0xe48de;
0x0007241c str r3, [sp, 4] | var_3ch = r3;
0x0007241e movs r3, 0 | r3 = 0;
0x00072420 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00072422 ldr.w r3, [sp, 0x878] | r3 = *(arg_878h);
0x00072426 bl 0x719d4 | fcn_000719d4 (r0, r1, r2, r3, r4, r5, r6);
0x0007242a b 0x72348 | goto label_0;
| label_4:
0x0007242c ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007242e mov r2, fp | r2 = fp;
0x00072430 ldr.w r1, [sp, 0x870] | r1 = *(arg_870h);
0x00072434 mov r0, r5 | r0 = r5;
0x00072436 str r6, [sp, 0x10] | var_10h_2 = r6;
0x00072438 str r3, [sp, 0xc] | var_44h = r3;
0x0007243a ldr r3, [pc, 0x88] |
0x0007243c str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00072440 add r3, pc | r3 = 0xe490a;
0x00072442 str r3, [sp, 8] | var_40h = r3;
0x00072444 ldr r3, [pc, 0x80] |
0x00072446 add r3, pc | r3 = 0xe4912;
0x00072448 str r3, [sp, 4] | var_3ch = r3;
0x0007244a ldr.w r3, [sp, 0x878] | r3 = *(arg_878h);
0x0007244c subs r0, 0x78 | r0 -= 0x78;
0x0007244e bl 0x719d4 | fcn_000719d4 (r0, r1, r2, r3, r4, r5, r6);
0x00072452 b 0x72348 | goto label_0;
| }
0x00072454 str r3, [sp, 0x1c] | var_1ch = r3;
0x00072456 mov r2, fp | r2 = fp;
0x00072458 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007245a mov r0, r5 | r0 = r5;
0x0007245c ldr.w r1, [sp, 0x870] | r1 = *(arg_870h);
0x00072460 strd r8, sb, [sp, 0x20] | __asm ("strd r8, sb, [sp, 0x20]");
0x00072464 str r3, [sp, 0x18] | var_18h = r3;
0x00072466 ldr r3, [pc, 0x64] |
0x00072468 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0007246c str r6, [sp, 0x14] | var_14h_2 = r6;
0x0007246e add r3, pc | r3 = 0xe4940;
0x00072470 str r6, [sp, 0xc] | var_44h = r6;
0x00072472 str r3, [sp, 0x10] | var_10h_2 = r3;
0x00072474 ldr r3, [pc, 0x58] |
0x00072476 add r3, pc | r3 = 0xe494a;
0x00072478 str r3, [sp, 8] | var_40h = r3;
0x0007247a ldr r3, [pc, 0x58] |
0x0007247c add r3, pc | r3 = 0xe4956;
0x0007247e str r3, [sp, 4] | var_3ch = r3;
0x00072480 ldr.w r3, [sp, 0x878] | r3 = *(arg_878h);
0x00072484 bl 0x719d4 | fcn_000719d4 (r0, r1, r2, r3, r4, r5, r6);
0x00072488 b 0x72348 | goto label_0;
| label_3:
0x0007248a ldr r3, [pc, 0x4c] |
0x0007248c add r3, pc | r3 = 0xe496a;
0x0007248e b 0x723a8 |
| } while (1);
| label_1:
0x00072490 blx 0x927c | fprintf_chk ()
0x00072494 str r4, [r7, 0x78] | *((r7 + 0x78)) = r4;
0x00072496 movs r5, r0 | r5 = r0;
0x00072498 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007249a movs r0, r0 |
0x0007249c ldr r2, [r5, 0x7c] | r2 = *((r5 + 0x7c));
0x0007249e movs r5, r0 | r5 = r0;
0x000724a0 str r2, [r6, 0x74] | *((r6 + 0x74)) = r2;
0x000724a2 movs r5, r0 | r5 = r0;
0x000724a4 strh r4, [r1, 0x14] | *((r1 + 0x14)) = r4;
0x000724a6 movs r5, r0 | r5 = r0;
0x000724a8 cmp r6, 0xf6 |
0x000724aa movs r3, r0 | r3 = r0;
0x000724ac cmp r7, 0x48 |
0x000724ae movs r3, r0 | r3 = r0;
0x000724b0 cmp r7, 0x12 |
0x000724b2 movs r3, r0 | r3 = r0;
0x000724b4 cmp r6, 0xa8 |
0x000724b6 movs r3, r0 | r3 = r0;
0x000724b8 cmp r6, 0xb2 |
0x000724ba movs r3, r0 | r3 = r0;
0x000724bc cmp r6, 0xbc |
0x000724be movs r3, r0 | r3 = r0;
0x000724c0 cmp r6, 0xc6 |
0x000724c2 movs r3, r0 | r3 = r0;
0x000724c4 cmp r6, 0xdc |
0x000724c6 movs r3, r0 | r3 = r0;
0x000724c8 cmp r6, 0x9a |
0x000724ca movs r3, r0 | r3 = r0;
0x000724cc cmp r6, 0x9e |
0x000724ce movs r3, r0 | r3 = r0;
0x000724d0 cmp r6, 0x5a |
0x000724d2 movs r3, r0 | r3 = r0;
0x000724d4 cmp r6, 0x64 |
0x000724d6 movs r3, r0 | r3 = r0;
0x000724d8 cmp r6, 8 |
0x000724da movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x727a8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000727a8 () | void fcn_000727a8 (int16_t arg_d0h, int16_t arg_d4h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_38h;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_94h;
| int32_t var_98h;
| int32_t var_98h_2;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (? >= ?) {
0x000727a8 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x000727ac mov r7, r2 | r7 = r2;
0x000727ae ldr r2, [pc, 0x2b4] |
0x000727b0 mov r8, r3 | r8 = r3;
0x000727b2 sub sp, 0xb0 |
0x000727b4 ldr r3, [pc, 0x2b0] | r3 = *(0x72a68);
0x000727b6 add r2, pc | r2 = 0xe5220;
0x000727b8 ldr.w sb, [sp, 0xd4] | sb = *(arg_d4h);
0x000727bc ldr r3, [r2, r3] |
0x000727be ldr r3, [r3] | r3 = *(0xe5220);
0x000727c0 str r3, [sp, 0xac] | var_ach = r3;
0x000727c2 mov.w r3, 0 | r3 = 0;
0x000727c6 ldr r3, [pc, 0x2a4] |
0x000727c8 add r3, pc | r3 = 0xe523a;
0x000727ca cmp r0, 0 |
| if (arg_d0h == ) {
0x000727cc beq.w 0x72970 | goto label_4;
| }
0x000727d0 ldr r2, [pc, 0x29c] | r2 = *(0x72a70);
0x000727d2 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x000727d4 cmp.w sb, 0 |
0x000727d8 it ne |
| if (sb != 0) {
0x000727da cmpne sb, r3 | __asm ("cmpne sb, r3");
| }
| if (sb == 0) {
0x000727dc beq.w 0x7295c | goto label_5;
| }
0x000727e0 mov r6, r1 | r6 = r1;
0x000727e2 mov r4, r0 | r4 = r0;
0x000727e4 blx sb | r0 = sb ();
0x000727e6 cmp r0, 0 |
| if (r0 >= 0) {
0x000727e8 blt 0x727fa |
0x000727ea mov r3, r8 | r3 = r8;
0x000727ec mov r2, r7 | r2 = r7;
0x000727ee mov r1, r6 | r1 = r6;
0x000727f0 mov r0, r4 | r0 = r4;
0x000727f2 bl 0x6c398 | r0 = fcn_0006c398 (r0, r1, r2);
0x000727f6 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x000727f8 blt 0x7283e | goto label_0;
| }
| }
0x000727fa add.w sl, sp, 0x28 | sl += var_28h;
0x000727fe mov r0, r4 | r0 = r4;
0x00072800 mov r1, sl | r1 = sl;
0x00072802 blx 0x931c | r0 = fcn_0000931c ();
0x00072806 cmp r0, 0 |
| if (r0 < 0) {
0x00072808 blt 0x7290a | goto label_6;
| }
0x0007280a ldr r2, [sp, 0xd0] | r2 = *(arg_d0h);
0x0007280c ldr r5, [sp, 0x38] | r5 = var_38h;
0x0007280e lsls r1, r2, 0x1f | r1 = r2 << 0x1f;
0x00072810 and r3, r5, 0xf000 | r3 = r5 & 0xf000;
| if (r1 < r2) {
0x00072814 bpl 0x7281e |
0x00072816 cmp.w r3, 0xa000 |
| if (r3 == 0xa000) {
0x0007281a beq.w 0x72984 | goto label_7;
| }
| }
| label_1:
0x0007281e cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x00072822 beq 0x7285c | goto label_8;
| }
0x00072824 ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x00072826 tst.w r3, 2 |
0x0007282a ite ne |
| if ((r3 & 2) == 0) {
0x0007282c movne r5, 4 | r5 = 4;
| }
| if ((r3 & 2) != 0) {
0x0007282e moveq r5, 7 | r5 = 7;
| }
0x00072830 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00072834 cmp r0, r5 |
0x00072836 it lt |
| if (r0 >= r5) {
0x00072838 mvnlt r5, 0x13 | r5 = ~0x13;
| }
| if (r0 >= r5) {
0x0007283c bge 0x7292e | goto label_9;
| }
| do {
| label_0:
0x0007283e ldr r2, [pc, 0x234] |
0x00072840 ldr r3, [pc, 0x224] | r3 = *(0x72a68);
0x00072842 add r2, pc | r2 = 0xe52bc;
0x00072844 ldr r3, [r2, r3] | r3 = *(0xe52bc);
0x00072846 ldr r2, [r3] | r2 = *(0xe52bc);
0x00072848 ldr r3, [sp, 0xac] | r3 = var_ach;
0x0007284a eors r2, r3 | r2 ^= r3;
0x0007284c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00072850 bne.w 0x72a48 | goto label_10;
| }
0x00072854 mov r0, r5 | r0 = r5;
0x00072856 add sp, 0xb0 |
0x00072858 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_8:
0x0007285c and r3, r5, 7 | r3 = r5 & 7;
0x00072860 and r2, r6, 7 | r2 = r6 & 7;
0x00072864 cmp r3, r2 |
| if (r3 > r2) {
0x00072866 bhi 0x72914 | goto label_11;
| }
0x00072868 and r3, r5, 0x38 | r3 = r5 & 0x38;
0x0007286c and r2, r6, 0x38 | r2 = r6 & 0x38;
0x00072870 cmp r3, r2 |
| if (r3 > r2) {
0x00072872 bhi 0x72914 | goto label_11;
| }
0x00072874 and r3, r5, 0x1c0 | r3 = r5 & 0x1c0;
0x00072878 and r2, r6, 0x1c0 | r2 = r6 & 0x1c0;
0x0007287c cmp r3, r2 |
| if (r3 > r2) {
0x0007287e bhi 0x72914 | goto label_11;
| }
0x00072880 adds r2, r7, 1 | r2 = r7 + 1;
| if (r2 == r7) {
0x00072882 beq.w 0x729b4 | goto label_12;
| }
0x00072886 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00072888 cmp r3, r7 |
| if (r3 == r7) {
0x0007288a beq.w 0x729b4 | goto label_12;
| }
0x0007288e ldr r2, [pc, 0x1e8] |
0x00072890 movs r1, 0x2d | r1 = 0x2d;
0x00072892 movs r3, 0xc | r3 = 0xc;
0x00072894 str r1, [sp, 0x94] | var_94h = r1;
0x00072896 str r1, [sp, 0xa0] | var_a0h = r1;
0x00072898 movs r1, 0 | r1 = 0;
0x0007289a add r2, pc | r2 = 0xe5318;
0x0007289c str r1, [sp, 0xa8] | var_a8h = r1;
0x0007289e str r2, [sp] | *(sp) = r2;
0x000728a0 add r0, sp, 0x94 | r0 += var_94h;
0x000728a2 strd r1, r1, [sp, 0x98] | __asm ("strd r1, r1, [var_98h]");
0x000728a6 movs r2, 1 | r2 = 1;
0x000728a8 str r1, [sp, 0xa4] | var_a4h = r1;
0x000728aa mov r1, r3 | r1 = r3;
0x000728ac str r7, [sp, 4] | var_4h = r7;
0x000728ae blx 0x9110 | fcn_00009110 ();
0x000728b2 cmp.w r8, -1 |
| if (r8 != -1) {
0x000728b6 bne.w 0x729d4 | goto label_3;
| }
| label_2:
0x000728ba ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x000728bc tst.w r3, 2 |
0x000728c0 ite ne |
| if ((r3 & 2) == 0) {
0x000728c2 movne r5, 4 | r5 = 4;
| }
| if ((r3 & 2) != 0) {
0x000728c4 moveq r5, 7 | r5 = 7;
| }
0x000728c6 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000728ca cmp r0, r5 |
| if (r0 < r5) {
0x000728cc blt 0x72928 | goto label_13;
| }
0x000728ce ldrd r1, r3, [sp, 0x40] | __asm ("ldrd r1, r3, [var_40h]");
0x000728d2 mov r0, r5 | r0 = r5;
0x000728d4 str r4, [sp, 8] | var_8h = r4;
0x000728d6 ldr r4, [pc, 0x1a4] |
0x000728d8 str r3, [sp, 0x10] | var_10h = r3;
0x000728da ldr r2, [pc, 0x1a4] |
0x000728dc ldr r3, [pc, 0x1a4] |
0x000728de add r4, pc | r4 = 0xe5360;
0x000728e0 str r4, [sp] | *(sp) = r4;
0x000728e2 add r4, sp, 0xa0 | r4 += var_a0h;
0x000728e4 str r1, [sp, 0xc] | var_ch = r1;
0x000728e6 add r2, pc | r2 = 0xe536c;
0x000728e8 add r3, pc | r3 = 0xe5370;
0x000728ea str r4, [sp, 0x18] | var_18h = r4;
0x000728ec movs r1, 0x11 | r1 = 0x11;
0x000728ee add r4, sp, 0x94 | r4 += var_94h;
0x000728f0 str r3, [sp, 4] | var_4h = r3;
0x000728f2 adds r2, 7 | r2 += 7;
0x000728f4 movs r3, 0x49 | r3 = 0x49;
0x000728f6 movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x000728fa str r4, [sp, 0x14] | var_14h = r4;
0x000728fc bl 0x71448 | r0 = fcn_00071448 ();
0x00072900 subs r5, r0, 0 | r5 = r0 - 0;
0x00072902 it ge |
| if (r5 < r0) {
0x00072904 mvnge r5, 0x55 | r5 = ~0x55;
| }
0x00072908 b 0x7283e |
| } while (1);
| label_6:
0x0007290a blx 0x9628 | r0 = fcn_00009628 ();
0x0007290e ldr r5, [r0] | r5 = *(r0);
0x00072910 rsbs r5, r5, 0 | r5 -= ;
0x00072912 b 0x7283e | goto label_0;
| label_11:
0x00072914 ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x00072916 tst.w r3, 2 |
0x0007291a ite ne |
| if ((r3 & 2) == 0) {
0x0007291c movne r7, 4 | r7 = 4;
| }
| if ((r3 & 2) != 0) {
0x0007291e moveq r7, 7 | r7 = 7;
| }
0x00072920 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00072924 cmp r0, r7 |
| if (r0 >= r7) {
0x00072926 bge 0x729ea | goto label_14;
| }
| label_13:
0x00072928 mvn r5, 0x10 | r5 = ~0x10;
0x0007292c b 0x7283e | goto label_0;
| label_9:
0x0007292e ldr r2, [pc, 0x158] |
0x00072930 movs r1, 0x14 | r1 = 0x14;
0x00072932 ldr r3, [pc, 0x158] |
0x00072934 mov r0, r5 | r0 = r5;
0x00072936 ldr r6, [pc, 0x158] |
0x00072938 movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x0007293c add r2, pc | r2 = 0xe53ca;
0x0007293e str r4, [sp, 8] | var_8h = r4;
0x00072940 add r3, pc | r3 = 0xe53d2;
0x00072942 adds r2, 7 | r2 += 7;
0x00072944 add r6, pc | r6 = 0xe53da;
0x00072946 str r3, [sp, 4] | var_4h = r3;
0x00072948 str r6, [sp] | *(sp) = r6;
0x0007294a movs r3, 0x38 | r3 = 0x38;
0x0007294c bl 0x71448 | r0 = fcn_00071448 ();
0x00072950 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00072952 blt.w 0x7283e | goto label_0;
| }
| do {
0x00072956 mvn r5, 0x55 | r5 = ~0x55;
0x0007295a b 0x7283e | goto label_0;
| label_5:
0x0007295c ldr r1, [pc, 0x134] |
0x0007295e movs r2, 0x1d | r2 = 0x1d;
0x00072960 ldr r3, [pc, 0x134] |
0x00072962 ldr r0, [pc, 0x138] |
0x00072964 add r1, pc | r1 = 0xe53fc;
0x00072966 add r3, pc | r3 = 0xe5402;
0x00072968 adds r1, 7 | r1 += 7;
0x0007296a add r0, pc | r0 = 0xe540c;
0x0007296c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00072970 ldr r1, [pc, 0x12c] |
0x00072972 movs r2, 0x1c | r2 = 0x1c;
0x00072974 ldr r3, [pc, 0x12c] |
0x00072976 ldr r0, [pc, 0x130] |
0x00072978 add r1, pc | r1 = 0xe541c;
0x0007297a add r3, pc | r3 = 0xe5422;
0x0007297c adds r1, 7 | r1 += 7;
0x0007297e add r0, pc | r0 = 0xe542c;
0x00072980 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x00072984 movs r1, 0 | r1 = 0;
0x00072986 add r3, sp, 0x24 | r3 += var_24h;
0x00072988 movs r2, 2 | r2 = 2;
0x0007298a mov r0, r4 | r0 = r4;
0x0007298c str r1, [sp] | *(sp) = r1;
0x0007298e str r1, [sp, 0x24] | var_24h = r1;
0x00072990 bl 0x6c85c | r0 = fcn_0006c85c (r0, r1, r2, r3);
0x00072994 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00072996 blt 0x72a32 | goto label_15;
| }
0x00072998 ldr r0, [sp, 0x24] | r0 = var_24h;
| if (r5 == r0) {
0x0007299a beq 0x72a1a | goto label_16;
| }
0x0007299c mov r1, sl | r1 = sl;
0x0007299e blx 0x931c | r0 = fcn_0000931c ();
0x000729a2 cmp r0, 0 |
| if (r0 < 0) {
0x000729a4 blt 0x72a3e | goto label_17;
| }
0x000729a6 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000729a8 blx 0x8dac | fcn_00008dac ();
0x000729ac ldr r5, [sp, 0x38] | r5 = var_38h;
0x000729ae and r3, r5, 0xf000 | r3 = r5 & 0xf000;
0x000729b2 b 0x7281e | goto label_1;
| label_12:
0x000729b4 cmp.w r8, -1 |
| if (r8 == -1) {
0x000729b8 beq 0x72a3a | goto label_18;
| }
0x000729ba ldr r3, [sp, 0x44] | r3 = var_44h;
0x000729bc cmp r3, r8 |
| if (r3 == r8) {
0x000729be beq 0x72a3a | goto label_18;
| }
0x000729c0 movs r3, 0x2d | r3 = 0x2d;
0x000729c2 str r3, [sp, 0x94] | var_94h = r3;
0x000729c4 str r3, [sp, 0xa0] | var_a0h = r3;
0x000729c6 movs r3, 0 | r3 = 0;
0x000729c8 strd r3, r3, [sp, 0x98] | __asm ("strd r3, r3, [var_98h]");
0x000729cc strd r3, r3, [sp, 0xa4] | __asm ("strd r3, r3, [var_a8h]");
0x000729d0 adds r3, r7, 1 | r3 = r7 + 1;
| if (r3 != r7) {
0x000729d2 bne 0x72a4c | goto label_19;
| }
| label_3:
0x000729d4 ldr r1, [pc, 0xd4] |
0x000729d6 movs r3, 0xc | r3 = 0xc;
0x000729d8 movs r2, 1 | r2 = 1;
0x000729da add r0, sp, 0xa0 | r0 += var_a0h;
0x000729dc add r1, pc | r1 = 0xe548c;
0x000729de strd r1, r8, [sp] | __asm ("strd r1, r8, [sp]");
0x000729e2 mov r1, r3 | r1 = r3;
0x000729e4 blx 0x9110 | fcn_00009110 ();
0x000729e8 b 0x728ba | goto label_2;
| label_14:
0x000729ea str r6, [sp, 0x10] | var_10h = r6;
0x000729ec ubfx r5, r5, 0, 9 | r5 = (r5 >> 0) & ((1 << 9) - 1);
0x000729f0 str r4, [sp, 8] | var_8h = r4;
0x000729f2 movs r1, 0x11 | r1 = 0x11;
0x000729f4 ldr r2, [pc, 0xb8] |
0x000729f6 mov r0, r7 | r0 = r7;
0x000729f8 ldr r6, [pc, 0xb8] |
0x000729fa movs r3, 0x3d | r3 = 0x3d;
0x000729fc ldr r4, [pc, 0xb8] |
0x000729fe movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00072a02 add r2, pc | r2 = 0xe54b6;
0x00072a04 str r5, [sp, 0xc] | var_ch = r5;
0x00072a06 add r6, pc | r6 = 0xe54be;
0x00072a08 adds r2, 7 | r2 += 7;
0x00072a0a add r4, pc | r4 = 0xe54c6;
0x00072a0c strd r4, r6, [sp] | __asm ("strd r4, r6, [sp]");
0x00072a10 bl 0x71448 | r0 = fcn_00071448 ();
0x00072a14 subs r5, r0, 0 | r5 = r0 - 0;
0x00072a16 bge 0x72956 |
| } while (r5 >= r0);
0x00072a18 b 0x7283e | goto label_0;
| label_16:
0x00072a1a ldr r4, [sp, 0xd0] | r4 = *(arg_d0h);
0x00072a1c mov r3, r8 | r3 = r8;
0x00072a1e mov r2, r7 | r2 = r7;
0x00072a20 mov r1, r6 | r1 = r6;
0x00072a22 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x00072a26 bic r4, r4, 1 | r4 = BIT_MASK (r4, 1);
0x00072a2a str r4, [sp] | *(sp) = r4;
0x00072a2c bl 0x727a8 | r0 = fcn_000727a8 (r0, r1, r2, r3, r4, r5);
0x00072a30 mov r5, r0 | r5 = r0;
| do {
| label_15:
0x00072a32 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00072a34 blx 0x8dac | fcn_00008dac ();
0x00072a38 b 0x7283e | goto label_0;
| label_18:
0x00072a3a movs r5, 0 | r5 = 0;
0x00072a3c b 0x7283e | goto label_0;
| label_17:
0x00072a3e blx 0x9628 | r0 = fcn_00009628 ();
0x00072a42 ldr r5, [r0] | r5 = *(r0);
0x00072a44 rsbs r5, r5, 0 | r5 -= ;
0x00072a46 b 0x72a32 |
| } while (1);
| label_10:
0x00072a48 blx 0x927c | fprintf_chk ()
| label_19:
0x00072a4c ldr r2, [pc, 0x6c] |
0x00072a4e movs r3, 0xc | r3 = 0xc;
0x00072a50 mov r1, r3 | r1 = r3;
0x00072a52 add r0, sp, 0x94 | r0 += var_94h;
0x00072a54 add r2, pc | r2 = 0xe5514;
0x00072a56 strd r2, r7, [sp] | __asm ("strd r2, r7, [sp]");
0x00072a5a movs r2, 1 | r2 = 1;
0x00072a5c blx 0x9110 | fcn_00009110 ();
0x00072a60 b 0x729d4 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x72ac0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00072ac0 () | void fcn_00072ac0 (int16_t arg_318h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int8_t var_0h_4;
| int16_t var_8h;
| int32_t var_4h_3;
| int16_t var_fh;
| int32_t var_8h_3;
| int32_t var_ch;
| int32_t var_14h;
| int16_t var_0h_3;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00072ac0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00072ac4 sub sp, 0x24 |
0x00072ac6 add r7, sp, 8 | r7 += var_8h;
0x00072ac8 mov fp, r3 |
0x00072aca str r2, [r7] | *(r7) = r2;
0x00072acc ldr r2, [pc, 0x1b0] |
0x00072ace ldr r3, [pc, 0x1b4] | r3 = *(0x72c86);
0x00072ad0 add r2, pc | r2 = 0xe5754;
0x00072ad2 ldr r3, [r2, r3] |
0x00072ad4 ldr r2, [r7, 0x48] | r2 = *((r7 + 0x48));
0x00072ad6 ldr r3, [r3] | r3 = *(0xe5754);
0x00072ad8 str r3, [r7, 0x14] | var_14h = r3;
0x00072ada mov.w r3, 0 | r3 = 0;
0x00072ade ldr r3, [pc, 0x1a8] |
0x00072ae0 str r2, [r7, 4] | var_4h_3 = r2;
0x00072ae2 add r3, pc | r3 = 0xe5770;
0x00072ae4 cmp r1, 0 |
| if (r1 == 0) {
0x00072ae6 beq.w 0x72c4c | goto label_3;
| }
0x00072aea ldr r2, [pc, 0x1a0] | r2 = *(0x72c8e);
0x00072aec ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x00072aee ldr r2, [r7, 4] | r2 = var_4h_3;
0x00072af0 cmp r2, r3 |
| if (r2 == r3) {
0x00072af2 beq.w 0x72c60 | goto label_4;
| }
0x00072af6 mov r8, r0 | r8 = r0;
0x00072af8 mov r5, r1 | r5 = r1;
| if (r0 != 0) {
0x00072afa cbz r0, 0x72b0c |
0x00072afc mov r1, r0 | r1 = r0;
0x00072afe movs r2, 1 | r2 = 1;
0x00072b00 mov r0, r5 | r0 = r5;
0x00072b02 bl 0x75208 | fcn_00075208 (r0, r1, r2);
0x00072b04 smull r2, r8, r1, r0 | r2:r8 = r1 * r0;
0x00072b06 cmp r0, 0 |
| if (r0 == 0) {
0x00072b08 beq.w 0x72c74 | goto label_5;
| }
| }
0x00072b0c movs r1, 0x2f | r1 = 0x2f;
0x00072b0e mov r0, r5 | r0 = r5;
0x00072b10 blx 0x8c90 | r0 = fcn_00008c90 ();
0x00072b14 cmp r5, r0 |
0x00072b16 it ne |
| if (r5 != r0) {
0x00072b18 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x00072b1a ite eq |
| if (r5 != r0) {
0x00072b1c moveq r3, 1 | r3 = 1;
| }
| if (r5 == r0) {
0x00072b1e movne r3, 0 | r3 = 0;
| }
0x00072b20 str r3, [r7, 8] | var_8h_3 = r3;
| if (r5 == r0) {
0x00072b22 beq 0x72bc8 | goto label_6;
| }
0x00072b24 subs r1, r0, r5 | r1 = r0 - r5;
0x00072b26 mov r0, r5 | r0 = r5;
0x00072b28 blx 0x92c8 | r0 = fcn_000092c8 ();
0x00072b2c add.w r3, r0, 8 | r3 = r0 + 8;
0x00072b30 mov r2, r0 | r2 = r0;
0x00072b32 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00072b36 ldr r4, [r7, 8] | r4 = var_8h_3;
0x00072b38 sub.w sp, sp, r3 |
0x00072b3c mov r1, r5 | r1 = r5;
0x00072b3e add.w r0, sp, 0xf | r0 += var_fh;
0x00072b42 lsrs r3, r0, 3 | r3 = r0 >> 3;
0x00072b44 bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x00072b48 strb.w r4, [r2, r3, lsl 3] | offset_0 = r3 << 3;
| *((r2 + offset_0)) = r4;
0x00072b4c blx 0x8f9c | fcn_00008f9c ();
0x00072b50 movs r1, 1 | r1 = 1;
0x00072b52 bl 0x79c8c | r0 = fcn_00079c8c ();
0x00072b56 cmp r0, 0 |
| if (r0 > 0) {
0x00072b58 bgt 0x72bc8 | goto label_6;
| }
| if (r0 == 0) {
0x00072b5a beq.w 0x72c74 | goto label_5;
| }
0x00072b5e ldr.w sb, [pc, 0x130] |
0x00072b62 mov r0, r5 | r0 = r5;
0x00072b64 add sb, pc | sb = 0xe57fa;
0x00072b66 mov r1, sb | r1 = sb;
0x00072b68 blx 0x9428 | r0 = fcn_00009428 ();
0x00072b6c adds r4, r5, r0 | r4 = r5 + r0;
| do {
| label_2:
0x00072b6e mov r0, r5 | r0 = r5;
0x00072b70 mov sl, sp | sl = sp;
0x00072b72 blx 0x8f38 | fcn_00008f38 ();
0x00072b76 adds r0, 8 | r0 += 8;
0x00072b78 mov r1, sb | r1 = sb;
0x00072b7a bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x00072b7e sub.w sp, sp, r0 |
0x00072b82 mov r0, r4 | r0 = r4;
0x00072b84 blx 0x9488 | r0 = fcn_00009488 ();
0x00072b88 adds r2, r4, r0 | r2 = r4 + r0;
0x00072b8a mov r1, sb | r1 = sb;
0x00072b8c mov r0, r2 | r0 = r2;
0x00072b8e str r2, [r7, 0xc] | var_ch = r2;
0x00072b90 blx 0x9428 | fcn_00009428 ();
0x00072b94 ldr r2, [r7, 0xc] | r2 = var_ch;
0x00072b96 add r6, sp, 8 | r6 += var_8h;
0x00072b98 ldrb r3, [r2, r0] | r3 = *((r2 + r0));
0x00072b9a adds r4, r2, r0 | r4 = r2 + r0;
0x00072b9c cmp r3, 0 |
| if (r3 == 0) {
0x00072b9e beq 0x72c46 | goto label_7;
| }
0x00072ba0 subs r2, r2, r5 | r2 -= r5;
0x00072ba2 mov r1, r5 | r1 = r5;
0x00072ba4 mov r0, r6 | r0 = r6;
0x00072ba6 str r2, [r7, 0xc] | var_ch = r2;
0x00072ba8 blx 0x8f9c | fcn_00008f9c ();
0x00072bac ldrd r3, r2, [r7, 8] | __asm ("ldrd r3, r2, [var_8h_3]");
0x00072bae adds r2, 2 | r2 += 2;
0x00072bb0 strb r3, [r6, r2] | *((r6 + r2)) = r3;
0x00072bb2 cmp.w r8, 0 |
| if (r8 == 0) {
0x00072bb6 beq 0x72be6 | goto label_8;
| }
0x00072bb8 movs r2, 1 | r2 = 1;
0x00072bba mov r1, r6 | r1 = r6;
0x00072bbc mov r0, r8 | r0 = r8;
0x00072bbe bl 0x75208 | fcn_00075208 (r0, r1, r2);
0x00072bc0 invalid |
| label_0:
0x00072bc4 mov sp, sl |
0x00072bc6 b 0x72b6e |
| } while (1);
| label_6:
0x00072bc8 movs r0, 0 | r0 = 0;
| label_1:
0x00072bca ldr r2, [pc, 0xc8] |
0x00072bcc ldr r3, [pc, 0xb4] | r3 = *(0x72c84);
0x00072bce add r2, pc | r2 = 0xe5868;
0x00072bd0 ldr r3, [r2, r3] | r3 = *(0xe5868);
0x00072bd2 ldr r2, [r3] | r2 = *(0xe5868);
0x00072bd4 ldr r3, [r7, 0x14] | r3 = var_14h;
0x00072bd6 eors r2, r3 | r2 ^= r3;
0x00072bd8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00072bdc bne 0x72c7a | goto label_9;
| }
0x00072bde adds r7, 0x1c | r7 += 0x1c;
0x00072be0 mov sp, r7 |
0x00072be2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00072be6 mov r0, fp | r0 = fp;
0x00072be8 bl 0x7d7d0 | r0 = fcn_0007d7d0 (r0);
| if (r0 == 0) {
0x00072bec cbnz r0, 0x72c06 |
0x00072bee ldr r0, [r7, 0x40] | r0 = *((r7 + 0x40));
0x00072bf0 bl 0x7d7d0 | fcn_0007d7d0 (r0);
0x00072bf4 ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00072bf6 eor r0, r0, 1 | r0 ^= 1;
0x00072bfa cmp r3, 0 |
0x00072bfc ite ne |
| if (r3 == 0) {
0x00072bfe movne r0, 0 | r0 = 0;
| }
| if (r3 != 0) {
0x00072c00 andeq r0, r0, 1 | r0 &= 1;
| }
| if (r0 != 0) {
0x00072c04 cbnz r0, 0x72c2c | goto label_10;
| }
| }
0x00072c06 ldr r3, [r7, 4] | r3 = var_4h_3;
0x00072c08 mov r0, r6 | r0 = r6;
0x00072c0a mov r2, fp | r2 = fp;
0x00072c0c str r3, [sp, 4] | var_4h_2 = r3;
0x00072c0e ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00072c10 str r3, [sp] | *(sp) = r3;
0x00072c12 ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x00072c14 ldr r1, [r7] | r1 = *(r7);
0x00072c16 bl 0x727a8 | r0 = fcn_000727a8 (r0, r1, r2, r3, r4, r5);
0x00072c1a adds.w r3, r0, 0x11 | r3 = r0 + 0x11;
0x00072c1c lsls r1, r2, 0xc | r1 = r2 << 0xc;
0x00072c1e it ne |
| if (r1 == r2) {
0x00072c20 movne r3, 1 | r3 = 1;
| }
0x00072c22 ands.w r3, r3, r0, lsr 31 | r3 &= (r0 >> 31);
| if (r3 == r3) {
0x00072c26 beq 0x72bc4 | goto label_0;
| }
| do {
0x00072c28 mov sp, sl |
0x00072c2a b 0x72bca | goto label_1;
| label_10:
0x00072c2c ldrd r1, r3, [r7] | __asm ("ldrd r1, r3, [r7]");
0x00072c30 mov r0, r6 | r0 = r6;
0x00072c32 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
0x00072c34 adds.w r3, r0, 0x11 | r3 = r0 + 0x11;
0x00072c38 it ne |
| if (r3 == r0) {
0x00072c3a movne r3, 1 | r3 = 1;
| }
0x00072c3c ands.w r3, r3, r0, lsr 31 | r3 &= (r0 >> 31);
0x00072c40 bne 0x72c28 |
| } while (r3 != r3);
0x00072c42 mov sp, sl |
0x00072c44 b 0x72b6e | goto label_2;
| label_7:
0x00072c46 mov r0, r3 | r0 = r3;
0x00072c48 mov sp, sl |
0x00072c4a b 0x72bca | goto label_1;
| label_3:
0x00072c4c ldr r1, [pc, 0x48] |
0x00072c4e movs r2, 0x65 | r2 = 0x65;
0x00072c50 ldr r3, [pc, 0x48] |
0x00072c52 ldr r0, [pc, 0x4c] |
0x00072c54 add r1, pc | r1 = 0xe58f0;
0x00072c56 add r3, pc | r3 = 0xe58f6;
0x00072c58 adds r1, 7 | r1 += 7;
0x00072c5a add r0, pc | r0 = 0xe5900;
0x00072c5c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00072c60 ldr r1, [pc, 0x40] |
0x00072c62 movs r2, 0x66 | r2 = 0x66;
0x00072c64 ldr r3, [pc, 0x40] |
0x00072c66 ldr r0, [pc, 0x44] |
0x00072c68 add r1, pc | r1 = 0xe5910;
0x00072c6a add r3, pc | r3 = 0xe5916;
0x00072c6c adds r1, 7 | r1 += 7;
0x00072c6e add r0, pc | r0 = 0xe5920;
0x00072c70 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00072c74 mvn r0, 0x13 | r0 = ~0x13;
0x00072c78 b 0x72bca | goto label_1;
| label_9:
0x00072c7a blx 0x927c | fprintf_chk ()
0x00072c7e nop |
0x00072c80 ldrsh r4, [r6, r7] | r4 = *((r6 + r7));
0x00072c82 movs r5, r0 | r5 = r0;
0x00072c84 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00072c86 movs r0, r0 |
0x00072c88 ldrsh r2, [r4, r7] | r2 = *((r4 + r7));
0x00072c8a movs r5, r0 | r5 = r0;
0x00072c8c lsls r0, r4, 0x11 | r0 = r4 << 0x11;
0x00072c8e movs r0, r0 |
0x00072c90 subs.w r0, ip, 0x810000 | r0 = ip - 0x810000;
0x00072c92 movs r1, r0 | r1 = r0;
0x00072c94 ldrsh r6, [r6, r3] | r6 = *((r6 + r3));
0x00072c96 movs r5, r0 | r5 = r0;
0x00072c98 cmp r2, 0x48 |
0x00072c9a movs r3, r0 | r3 = r0;
0x00072c9c cmp r3, 0x9e |
0x00072c9e movs r3, r0 | r3 = r0;
0x00072ca0 add r2, sp, 0x318 | r2 += arg_318h;
0x00072ca2 movs r2, r0 | r2 = r0;
0x00072ca4 cmp r2, 0x34 |
0x00072ca6 movs r3, r0 | r3 = r0;
0x00072ca8 cmp r3, 0x8a |
0x00072caa movs r3, r0 | r3 = r0;
0x00072cac cmp r3, 0x62 |
0x00072cae movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x72de0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00072de0 () | void fcn_00072de0 (uint32_t arg1) {
| int16_t var_0h;
| int32_t var_4h;
| int16_t var_0h_2;
| r0 = arg1;
0x00072de0 invalid |
0x00072de4 ldr r3, [pc, 0x84] |
0x00072de6 push {r4, r5, r6, r7, lr} |
0x00072de8 sub sp, 0xc |
0x00072dea add r2, pc | r2 += pc;
0x00072dec add r7, sp, 0 | r7 += var_0h;
0x00072dee mov r5, r0 | r5 = r0;
0x00072df0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00072df2 ldr r3, [r3] | r3 = *(0x72e6c);
0x00072df4 str r3, [r7, 4] | var_4h = r3;
0x00072df6 mov.w r3, 0 | r3 = 0;
0x00072dfa blx 0x8bb0 | r0 = get_current_dir_name ();
| if (r0 == 0) {
0x00072dfe cbz r0, 0x72e5a | goto label_0;
| }
0x00072e00 subs r6, r0, r5 | r6 = r0 - r5;
0x00072e02 mov r4, r0 | r4 = r0;
0x00072e04 cmp.w r6, 0x1000 |
| if (r6 <= 0x1000) {
0x00072e08 bgt 0x72e16 |
0x00072e0a ldr r1, [pc, 0x64] |
0x00072e0c add r1, pc | r1 = 0xe5c82;
0x00072e0e blx 0x9428 | fcn_00009428 ();
0x00072e12 ldrb r4, [r4, r0] | r4 = *((r4 + r0));
| if (r4 == 0) {
0x00072e14 cbz r4, 0x72e32 | goto label_1;
| }
| }
0x00072e16 movs r0, 0 | r0 = 0;
| do {
0x00072e18 ldr r2, [pc, 0x58] |
0x00072e1a ldr r3, [pc, 0x50] | r3 = *(0x72e6e);
0x00072e1c add r2, pc | r2 = 0xe5c94;
0x00072e1e ldr r3, [r2, r3] | r3 = *(0xe5c94);
0x00072e20 ldr r2, [r3] | r2 = *(0xe5c94);
0x00072e22 ldr r3, [r7, 4] | r3 = var_4h;
0x00072e24 eors r2, r3 | r2 ^= r3;
0x00072e26 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00072e2a bne 0x72e62 | goto label_2;
| }
0x00072e2c adds r7, 0xc | r7 += 0xc;
0x00072e2e mov sp, r7 |
0x00072e30 pop {r4, r5, r6, r7, pc} |
| label_1:
0x00072e32 mov r1, r6 | r1 = r6;
0x00072e34 mov r0, r5 | r0 = r5;
0x00072e36 blx 0x92c8 | r0 = fcn_000092c8 ();
0x00072e3a add.w r3, r0, 8 | r3 = r0 + 8;
0x00072e3e mov r2, r0 | r2 = r0;
0x00072e40 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00072e44 mov r1, r5 | r1 = r5;
0x00072e46 sub.w sp, sp, r3 |
0x00072e4a mov r0, sp | r0 = sp;
0x00072e4c strb.w r4, [sp, r2] | *((sp + r2)) = r4;
0x00072e50 blx 0x8f9c | fcn_00008f9c ();
0x00072e52 invalid |
0x00072e54 bl 0x75c84 | fcn_00075c84 (r0);
0x00072e56 vaba.u16 q7, q11, q7 | __asm ("vaba.u16 q7, q11, q7");
| label_0:
0x00072e5a mov r0, r5 | r0 = r5;
0x00072e5c bl 0x75c84 | fcn_00075c84 (r0);
0x00072e60 b 0x72e18 |
| } while (1);
| label_2:
0x00072e62 blx 0x927c | fprintf_chk ()
0x00072e66 nop |
0x00072e68 ldrb r2, [r3, r3] | r2 = *((r3 + r3));
0x00072e6a movs r5, r0 | r5 = r0;
0x00072e6c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00072e6e movs r0, r0 |
0x00072e70 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x72e78 */
| #include <stdint.h>
|
; (fcn) fcn.00072e78 () | void fcn_00072e78 (int16_t arg1, int16_t arg2, uint32_t arg3, uint32_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_2h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (? < ?) {
0x00072e78 strhs fp, [r0], -0x5f0 | *(r0) = fp;
| r0 += -0x5f0;
| }
0x00072e7c ldr r6, [pc, 0x130] |
0x00072e7e sub sp, 0x34 |
0x00072e80 ldr r5, [pc, 0x130] | r5 = *(0x72fb4);
0x00072e82 add r6, pc | r6 = 0xe5e36;
0x00072e84 ldr r5, [r6, r5] |
0x00072e86 ldr r5, [r5] | r5 = *(0xe5e36);
0x00072e88 str r5, [sp, 0x2c] | var_2ch = r5;
0x00072e8a mov.w r5, 0 | r5 = 0;
0x00072e8e str r4, [sp, 8] | var_8h = r4;
0x00072e90 cmp r3, 0 |
| if (r3 == 0) {
0x00072e92 beq 0x72f7c | goto label_1;
| }
0x00072e94 mov r6, r3 | r6 = r3;
0x00072e96 bics r3, r2, 0x1400 | __asm ("bics r3, r2, aav.0x000000ff");
| if (r3 != 0) {
0x00072e9a bne 0x72f90 | goto label_2;
| }
0x00072e9c lsls r4, r2, 0x13 | r4 = r2 << 0x13;
| if (r4 < r2) {
0x00072e9e bpl 0x72ec2 |
| if (r1 != 0) {
0x00072ea0 cbz r1, 0x72ea6 |
0x00072ea2 ldrb r3, [r1] | r3 = *(r1);
| if (r3 != 0) {
0x00072ea4 cbnz r3, 0x72ec2 | goto label_3;
| }
| }
0x00072ea6 ldr r1, [pc, 0x110] |
0x00072ea8 movs r3, 0x1e | r3 = 0x1e;
0x00072eaa add r4, sp, 0xc | r4 += var_ch;
0x00072eac str r0, [sp, 4] | var_4h = r0;
0x00072eae movs r2, 1 | r2 = 1;
0x00072eb0 mov r0, r4 | r0 = r4;
0x00072eb2 add r1, pc | r1 = 0xe5e70;
0x00072eb4 mov.w r5, -1 | r5 = -1;
0x00072eb8 str r1, [sp] | *(sp) = r1;
0x00072eba mov r1, r3 | r1 = r3;
0x00072ebc blx 0x9110 | fcn_00009110 ();
0x00072ec0 b 0x72eee |
| } else {
| label_3:
0x00072ec2 tst.w r2, 0x400 |
0x00072ec6 ite ne |
| if ((r2 & 0x400) == 0) {
0x00072ec8 movne r2, 0x280000 | r2 = 0x280000;
| }
| if ((r2 & 0x400) == 0) {
0x00072ecc mov.w r2, 0x288000 | r2 = 0x288000;
| }
0x00072ed0 blx 0x8acc | r0 = isoc99_fscanf ();
0x00072ed4 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00072ed6 blt 0x72f3c | goto label_4;
| }
0x00072ed8 ldr r2, [pc, 0xe0] |
0x00072eda add r4, sp, 0xc | r4 += var_ch;
0x00072edc movs r3, 0x1e | r3 = 0x1e;
0x00072ede mov r0, r4 | r0 = r4;
0x00072ee0 mov r1, r3 | r1 = r3;
0x00072ee2 add r2, pc | r2 = 0xe5ea2;
0x00072ee4 strd r2, r5, [sp] | __asm ("strd r2, r5, [sp]");
0x00072ee8 movs r2, 1 | r2 = 1;
0x00072eea blx 0x9110 | fcn_00009110 ();
| }
0x00072eee movs r3, 0 | r3 = 0;
0x00072ef0 mov r0, r4 | r0 = r4;
0x00072ef2 add r2, sp, 8 | r2 += var_8h;
0x00072ef4 mov.w r1, -1 | r1 = -1;
0x00072ef8 bl 0x6a7bc | fcn_0006a7bc (r0, r1, r2);
0x00072efc adds r3, r0, 2 | r3 += var_2h;
0x00072efe mov r4, r0 | r4 = r0;
| if (r3 == var_2h) {
0x00072f00 beq 0x72fa4 | goto label_5;
| }
0x00072f02 cmp r0, 0 |
| if (r0 < 0) {
0x00072f04 blt 0x72f44 | goto label_0;
| }
0x00072f06 ldr r7, [sp, 8] | r7 = var_8h;
0x00072f08 ldr r1, [pc, 0xb4] |
0x00072f0a mov r0, r7 | r0 = r7;
0x00072f0c add r1, pc | r1 = 0xe5ed0;
0x00072f0e bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x00072f12 mov r4, r0 | r4 = r0;
0x00072f14 cbz r0, 0x72f6a |
| while (1) {
0x00072f16 ldr r7, [pc, 0xac] |
0x00072f18 mov r0, r4 | r0 = r4;
0x00072f1a add r7, pc | r7 = 0xe5ee4;
0x00072f1c mov r1, r7 | r1 = r7;
0x00072f1e blx 0x9428 | r0 = fcn_00009428 ();
0x00072f22 add r4, r0 | r4 += r0;
0x00072f24 mov r1, r7 | r1 = r7;
0x00072f26 mov r0, r4 | r0 = r4;
0x00072f28 blx 0x9488 | fcn_00009488 ();
0x00072f2c movs r3, 0 | r3 = 0;
0x00072f2e mov r1, r6 | r1 = r6;
0x00072f30 strb r3, [r4, r0] | *((r4 + r0)) = r3;
0x00072f32 mov r0, r4 | r0 = r4;
0x00072f34 bl 0x746ac | r0 = fcn_000746ac (r0, r1);
0x00072f38 mov r4, r0 | r4 = r0;
0x00072f3a b 0x72f44 | goto label_0;
| label_4:
0x00072f3c blx 0x9628 | r0 = fcn_00009628 ();
0x00072f40 ldr r4, [r0] | r4 = *(r0);
0x00072f42 rsbs r4, r4, 0 | r4 -= ;
| label_0:
0x00072f44 mov r0, r5 | r0 = r5;
0x00072f46 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x00072f4a ldr r0, [sp, 8] | r0 = var_8h;
0x00072f4c blx 0x8dac | fcn_00008dac ();
0x00072f50 ldr r2, [pc, 0x74] |
0x00072f52 ldr r3, [pc, 0x60] | r3 = *(0x72fb6);
0x00072f54 add r2, pc | r2 = 0xe5f20;
0x00072f56 ldr r3, [r2, r3] | r3 = *(0xe5f20);
0x00072f58 ldr r2, [r3] | r2 = *(0xe5f20);
0x00072f5a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00072f5c eors r2, r3 | r2 ^= r3;
0x00072f5e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00072f62 bne 0x72faa | goto label_6;
| }
0x00072f64 mov r0, r4 | r0 = r4;
0x00072f66 add sp, 0x34 |
0x00072f68 pop {r4, r5, r6, r7, pc} |
0x00072f6a ldr r1, [pc, 0x60] |
0x00072f6c mov r0, r7 | r0 = r7;
0x00072f6e add r1, pc | r1 = 0xe5f40;
0x00072f70 blx 0x9164 | fcn_00009164 ();
0x00072f72 ldrd fp, r1, [r8], 0x2c0 | __asm ("ldrd fp, r1, [r8], aav.0x000000ff");
0x00072f76 add.w r4, r0, 8 | r4 = r0 + 8;
0x00072f7a b 0x72f16 |
| }
| label_1:
0x00072f7c ldr r1, [pc, 0x50] |
0x00072f7e movs r2, 0x67 | r2 = 0x67;
0x00072f80 ldr r3, [pc, 0x50] |
0x00072f82 ldr r0, [pc, 0x54] |
0x00072f84 add r1, pc | r1 = 0xe5f58;
0x00072f86 add r3, pc | r3 = 0xe5f5e;
0x00072f88 adds r1, 7 | r1 += 7;
0x00072f8a add r0, pc | r0 = 0xe5f68;
0x00072f8c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00072f90 ldr r1, [pc, 0x48] |
0x00072f92 movs r2, 0x68 | r2 = 0x68;
0x00072f94 ldr r3, [pc, 0x48] |
0x00072f96 ldr r0, [pc, 0x4c] |
0x00072f98 add r1, pc | r1 = 0xe5f78;
0x00072f9a add r3, pc | r3 = 0xe5f7e;
0x00072f9c adds r1, 7 | r1 += 7;
0x00072f9e add r0, pc | r0 = 0xe5f88;
0x00072fa0 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00072fa4 mvn r4, 0x5e | r4 = ~0x5e;
0x00072fa8 b 0x72f44 | goto label_0;
| label_6:
0x00072faa blx 0x927c | fprintf_chk ()
0x00072fae nop |
0x00072fb0 ldrb r2, [r0, r1] | r2 = *((r0 + r1));
0x00072fb2 movs r5, r0 | r5 = r0;
0x00072fb4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00072fb6 movs r0, r0 |
0x00072fb8 cmp r1, 0xfa |
0x00072fba movs r3, r0 | r3 = r0;
0x00072fbc cmp r1, 0xca |
0x00072fbe movs r3, r0 | r3 = r0;
0x00072fc0 cmp r1, 0x8c |
0x00072fc2 movs r3, r0 | r3 = r0;
0x00072fc4 subs r2, 0x22 | r2 -= 0x22;
0x00072fc6 movs r1, r0 | r1 = r0;
0x00072fc8 ldrh r0, [r6, r5] | r0 = *((r6 + r5));
0x00072fca movs r5, r0 | r5 = r0;
0x00072fcc cmp r1, 0x32 |
0x00072fce movs r3, r0 | r3 = r0;
0x00072fd0 cmp r0, 0xb0 |
0x00072fd2 movs r3, r0 | r3 = r0;
0x00072fd4 cmp r1, 0x9e |
0x00072fd6 movs r3, r0 | r3 = r0;
0x00072fd8 cmp r0, 0xce |
0x00072fda movs r3, r0 | r3 = r0;
0x00072fdc cmp r0, 0x9c |
0x00072fde movs r3, r0 | r3 = r0;
0x00072fe0 cmp r1, 0x8a |
0x00072fe2 movs r3, r0 | r3 = r0;
0x00072fe4 cmp r0, 0xc6 |
0x00072fe6 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73044 */
| #include <stdint.h>
|
; (fcn) fcn.00073044 () | void fcn_00073044 (int16_t arg_40h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_8h;
| int16_t var_ch_2;
| int16_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00073044 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00073048 sub sp, 0x1c |
0x0007304a ldr r5, [pc, 0xfc] |
0x0007304c mov r8, r3 | r8 = r3;
0x0007304e ldr r4, [pc, 0xfc] | r4 = *(0x7314e);
0x00073050 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00073052 add r5, pc | r5 = 0xe61a0;
0x00073054 ldr r4, [r5, r4] |
0x00073056 bics r3, r3, 0x1400 | __asm ("bics r3, r3, aav.0x000000ff");
0x0007305a ldr r4, [r4] | r4 = *(0xe61a0);
0x0007305c str r4, [sp, 0x14] | var_14h = r4;
0x0007305e mov.w r4, 0 | r4 = 0;
0x00073062 str r3, [sp, 0xc] | var_ch = r3;
| if (? != ?) {
0x00073064 bne 0x73120 | goto label_1;
| }
0x00073066 mov r6, r0 | r6 = r0;
0x00073068 mov r7, r1 | r7 = r1;
0x0007306a mov sb, r2 | sb = r2;
0x0007306c movs r4, 0x80 | r4 = 0x80;
0x0007306e mov.w sl, -1 | sl = -1;
0x00073072 add.w fp, sp, 0x10 |
0x00073076 b 0x73080 |
| while (r3 <= 9) {
0x00073078 mov r0, r5 | r0 = r5;
0x0007307a mov r4, r3 | r4 = r3;
0x0007307c blx 0x8dac | fcn_00008dac ();
0x00073080 add.w r1, r4, 8 | r1 = r4 + 8;
0x00073084 movs r0, 1 | r0 = 1;
0x00073086 str.w sl, [sp, 0x10] | __asm ("str.w sl, [var_10h_2]");
0x0007308a blx 0x8c20 | r0 = fcn_00008c20 ();
0x0007308e mov r5, r0 | r5 = r0;
0x00073090 cmp r0, 0 |
| if (r0 == 0) {
0x00073092 beq 0x7313a | goto label_2;
| }
0x00073094 str r4, [r0] | *(r0) = r4;
0x00073096 mov r2, r0 | r2 = r0;
0x00073098 ldr r0, [sp, 0x40] | r0 = *(arg_40h);
0x0007309a mov r3, fp | r3 = fp;
0x0007309c mov r1, r7 | r1 = r7;
0x0007309e str r0, [sp] | *(sp) = r0;
0x000730a0 mov r0, r6 | r0 = r6;
0x000730a2 blx 0x8ed8 | r0 = fcn_00008ed8 ();
0x000730a6 cmp r0, 0 |
| if (r0 >= 0) {
0x000730a8 bge 0x73100 | goto label_3;
| }
0x000730aa blx 0x9628 | r0 = fcn_00009628 ();
0x000730ae ldr r3, [r0] | r3 = *(r0);
0x000730b0 cmp r3, 0x4b |
| if (r3 != 0x4b) {
0x000730b2 bne 0x7311a | goto label_4;
| }
0x000730b4 clz r3, sb | r3 &= sb;
0x000730b8 cmp.w r8, 0 |
0x000730bc lsr.w r3, r3, 5 | r3 >>= 5;
0x000730c0 it eq |
| if (r8 != 0) {
0x000730c2 moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x000730c4 cbz r3, 0x730cc |
0x000730c6 ldr r3, [sp, 0x10] | r3 = var_10h_2;
0x000730c8 cmp r3, 0 |
| if (r3 >= 0) {
0x000730ca bge 0x73134 | goto label_5;
| }
| }
0x000730cc ldr r3, [r5] | r3 = *(r5);
0x000730ce cmn.w r3, 9 |
0x000730d2 it ls |
| if (r3 <= 9) {
0x000730d4 cmpls r4, r3 | __asm ("cmpls r4, r3");
| }
0x000730d6 blo 0x73078 |
| }
0x000730d8 mvn r3, 0x4a | r3 = ~0x4a;
0x000730dc str r3, [sp, 0xc] | var_ch = r3;
| do {
| label_0:
0x000730de mov r0, r5 | r0 = r5;
0x000730e0 blx 0x8dac | fcn_00008dac ();
0x000730e4 ldr r2, [pc, 0x68] |
0x000730e6 ldr r3, [pc, 0x64] | r3 = *(0x7314e);
0x000730e8 add r2, pc | r2 = 0xe623c;
0x000730ea ldr r3, [r2, r3] | r3 = *(0xe623c);
0x000730ec ldr r2, [r3] | r2 = *(0xe623c);
0x000730ee ldr r3, [sp, 0x14] | r3 = var_14h;
0x000730f0 eors r2, r3 | r2 ^= r3;
0x000730f2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000730f6 bne 0x73142 | goto label_6;
| }
0x000730f8 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000730fa add sp, 0x1c |
0x000730fc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00073100 cmp.w sb, 0 |
| if (sb != 0) {
0x00073104 beq 0x7310c |
0x00073106 str.w r5, [sb] | __asm ("str.w r5, [sb]");
0x0007310a movs r5, 0 | r5 = 0;
| }
0x0007310c cmp.w r8, 0 |
0x00073110 beq 0x730de |
| } while (r8 == 0);
0x00073112 ldr r3, [sp, 0x10] | r3 = var_10h_2;
0x00073114 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x00073116 adds r0, 0 | r0 += 0;
0x00073118 b 0x730de | goto label_0;
| label_4:
0x0007311a rsbs r3, r3, 0 | r3 -= ;
0x0007311c str r3, [sp, 0xc] | var_ch = r3;
0x0007311e b 0x730de | goto label_0;
| label_1:
0x00073120 ldr r1, [pc, 0x30] |
0x00073122 movs r2, 0x28 | r2 = 0x28;
0x00073124 ldr r3, [pc, 0x30] |
0x00073126 ldr r0, [pc, 0x34] |
0x00073128 add r1, pc | r1 = 0xe6280;
0x0007312a add r3, pc | r3 = 0xe6286;
0x0007312c adds r1, 7 | r1 += 7;
0x0007312e add r0, pc | r0 = 0xe6290;
0x00073130 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00073132 invalid |
| label_5:
0x00073134 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x00073138 b 0x730de | goto label_0;
| label_2:
0x0007313a mvn r3, 0xb | r3 = ~0xb;
0x0007313e str r3, [sp, 0xc] | var_ch = r3;
0x00073140 b 0x730de | goto label_0;
| label_6:
0x00073142 blx 0x927c | fprintf_chk ()
0x00073146 nop |
0x00073148 ldrh r2, [r6, r1] | r2 = *((r6 + r1));
0x0007314a movs r5, r0 | r5 = r0;
0x0007314c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007314e movs r0, r0 |
0x00073150 ldr r4, [r3, r7] | r4 = *((r3 + r7));
0x00073152 movs r5, r0 | r5 = r0;
0x00073154 movs r7, 0xc | r7 = 0xc;
0x00073156 movs r3, r0 | r3 = r0;
0x00073158 cmp r0, 0x46 |
0x0007315a movs r3, r0 | r3 = r0;
0x0007315c movs r7, 0x36 | r7 = 0x36;
0x0007315e movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73160 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00073160 () | void fcn_00073160 (int16_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_bp_0h;
| int16_t var_bp_1ch;
| int16_t var_38h;
| int16_t var_0h;
| int16_t var_8h_2;
| int16_t var_ch_3;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_88h;
| int16_t var_f8h;
| int16_t var_1f4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00073160 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00073164 sub sp, 0x1fc |
0x00073166 ldr r4, [pc, 0x2f8] |
0x00073168 movs r6, 0 | r6 = 0;
0x0007316a add r7, sp, 0x10 | r7 += var_10h;
0x0007316c add.w r8, sp, 0x14 | r8 += var_14h_2;
0x0007316e lsrs r4, r2, 0x20 | r4 = r2 >> 0x20;
0x00073170 ldr r3, [pc, 0x2f0] | r3 = *(0x73464);
0x00073172 add.w sb, sp, 0x18 | sb += var_18h;
0x00073176 add r4, pc | r4 = 0xe65dc;
0x00073178 add.w sl, sp, 0x1c | sl += var_1ch;
0x0007317c ldr r3, [r4, r3] |
0x0007317e ldr r3, [r3] | r3 = *(0xe65dc);
0x00073180 str r3, [sp, 0x1f4] | var_1f4h = r3;
0x00073182 mov.w r3, 0 | r3 = 0;
0x00073186 str r6, [r7] | *(r7) = r6;
0x00073188 str.w r6, [r8] | __asm ("str.w r6, [r8]");
0x0007318c subs r6, r0, 0 | r6 -= var_0h;
0x0007318e mov.w r3, -1 | r3 = -1;
0x00073192 str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x00073196 str.w r3, [sl] | __asm ("str.w r3, [sl]");
| if (r6 < var_0h) {
0x0007319a blt.w 0x733e0 | goto label_5;
| }
0x0007319c strh r1, [r4, 8] | *((r4 + 8)) = r1;
0x0007319e mov r5, r1 | r5 = r1;
0x000731a0 cmp r1, 0 |
| if (r1 == 0) {
0x000731a2 beq.w 0x733f4 | goto label_6;
| }
0x000731a6 bics r3, r2, 0x1400 | __asm ("bics r3, r2, aav.0x000000ff");
0x000731aa mov r4, r2 | r4 = r2;
| if (r1 != 0) {
0x000731ac bne.w 0x73408 | goto label_7;
| }
0x000731b0 mov r0, r1 | r0 = r1;
0x000731b2 bl 0x72de0 | fcn_00072de0 (r0);
0x000731b6 str r0, [sp, 0xc] | var_ch_3 = r0;
0x000731b8 cmp r0, 0 |
| if (r0 == 0) {
0x000731ba beq.w 0x73452 | goto label_8;
| }
0x000731be ands r3, r4, 0x400 | r3 = r4 & 0x400;
0x000731c2 and r2, r4, 0x1000 | r2 = r4 & 0x1000;
0x000731c6 str r3, [sp, 8] | var_8h_2 = r3;
0x000731c8 ite eq |
| if (r3 != r4) {
0x000731ca moveq r3, 1 | r3 = 1;
| }
| if (r3 == r4) {
0x000731cc movne r3, 0 | r3 = 0;
| }
0x000731ce add.w fp, sp, 0xf0 |
0x000731d0 lsrs r0, r6, 0xf | r0 = r6 >> 0xf;
0x000731d2 orr.w r2, r2, r3, lsl 8 | r2 |= (r3 << 8);
0x000731d6 mov r1, r5 | r1 = r5;
0x000731d8 movs r3, 1 | r3 = 1;
0x000731da str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x000731de orr r2, r2, 0x800 | r2 |= 0x800;
0x000731e2 mov r0, r6 | r0 = r6;
0x000731e4 blx 0x9548 | r0 = fcn_00009548 ();
0x000731e8 cmp r0, 0 |
| if (r0 < 0) {
0x000731ea blt 0x73256 | goto label_9;
| }
0x000731ec ldr.w r3, [fp, 0x38] | r3 = var_38h;
0x000731f0 and r3, r3, 0x2000 | r3 &= 0x2000;
0x000731f4 cmp r3, 0 |
| if (r3 != 0) {
0x000731f6 bne.w 0x733d2 | goto label_10;
| }
0x000731fa ldr.w r2, [fp] | r2 = *(fp);
0x000731fe lsls r3, r2, 0x1f | r3 = r2 << 0x1f;
| if (r3 < r2) {
0x00073200 bmi 0x732b0 | goto label_11;
| }
| do {
| label_0:
0x00073202 mov r3, sb | r3 = sb;
0x00073204 mov r2, r7 | r2 = r7;
0x00073206 mov r1, r5 | r1 = r5;
0x00073208 mov r0, r6 | r0 = r6;
0x0007320a str r4, [sp] | *(sp) = r4;
0x0007320c bl 0x73044 | r0 = fcn_00073044 (r0, r1, r2, r3, r4);
0x00073210 subs.w fp, r0, 0 |
| if (fp < r0) {
0x00073214 blt.w 0x73394 | goto label_12;
| }
0x00073218 ldr r1, [pc, 0x24c] |
0x0007321a mov.w r3, 0x1000 | r3 = 0x1000;
0x0007321e str r3, [sp] | *(sp) = r3;
0x00073220 mov r2, r8 | r2 = r8;
0x00073222 mov r3, sl | r3 = sl;
0x00073224 mov r0, r6 | r0 = r6;
0x00073226 add r1, pc | r1 = 0xe6692;
0x00073228 bl 0x73044 | r0 = fcn_00073044 (r0, r1, r2, r3, r4);
0x0007322c subs.w fp, r0, 0 |
| if (fp < r0) {
0x00073230 blt 0x732c8 | goto label_13;
| }
0x00073232 ldr r0, [r7] | r0 = *(r7);
0x00073234 ldr.w r4, [r8] | r4 = *(r8);
0x00073236 ands r0, r0 | r0 &= r0;
0x00073238 ldr r2, [r0] | r2 = *(r0);
0x0007323a ldr r3, [r4] | r3 = *(r4);
0x0007323c cmp r2, r3 |
| if (r2 == r3) {
0x0007323e beq.w 0x7341c | goto label_14;
| }
| label_3:
0x00073242 ldr.w r2, [sb] | r2 = *(sb);
0x00073246 ldr.w r3, [sl] | r3 = *(sl);
0x0007324a subs.w fp, r2, r3 |
0x0007324e it ne |
| if (fp == r2) {
0x00073250 movne fp, 1 |
| }
0x00073254 b 0x7327e | goto label_1;
| label_9:
0x00073256 blx 0x9628 | r0 = fcn_00009628 ();
0x0007325a ldr r2, [r0] | r2 = *(r0);
0x0007325c eor.w r3, r2, r2, asr 31 | r3 = r2 ^ (r2 >> 31);
0x00073260 sub.w r3, r3, r2, asr 31 | r3 -= (r2 >> 31);
0x00073264 cmp r3, 0x26 |
0x00073266 beq 0x73202 |
| } while (r3 == 0x26);
| if (r3 > 0x26) {
0x00073268 bgt 0x732a8 | goto label_15;
| }
0x0007326a cmp r3, 0x19 |
| if (r3 == 0x19) {
0x0007326c beq 0x73202 | goto label_0;
| }
0x0007326e cmp r3, 1 |
| if (r3 == 1) {
0x00073270 beq 0x73202 | goto label_0;
| }
0x00073272 cmp r3, 0xd |
| if (r3 == 0xd) {
0x00073274 beq 0x73202 | goto label_0;
| }
| do {
0x00073276 ldr.w r4, [r8] | r4 = *(r8);
0x0007327a rsb.w fp, r2, 0 |
| label_1:
0x0007327e mov r0, r4 | r0 = r4;
0x00073280 blx 0x8dac | fcn_00008dac ();
0x00073284 ldr r0, [r7] | r0 = *(r7);
0x00073286 blx 0x8dac | fcn_00008dac ();
0x0007328a ldr r2, [pc, 0x1e0] |
0x0007328c ldr r3, [pc, 0x1d4] | r3 = *(0x73464);
0x0007328e add r2, pc | r2 = 0xe6700;
0x00073290 ldr r3, [r2, r3] | r3 = *(0xe6700);
0x00073292 ldr r2, [r3] | r2 = *(0xe6700);
0x00073294 ldr r3, [sp, 0x1f4] | r3 = var_1f4h;
0x00073296 eors r2, r3 | r2 ^= r3;
0x00073298 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007329c bne.w 0x7345a | goto label_16;
| }
0x000732a0 mov r0, fp | r0 = fp;
0x000732a2 add sp, 0x1fc |
0x000732a4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x000732a8 subs r3, 0x5d | r3 -= 0x5d;
0x000732aa cmp r3, 4 |
0x000732ac bhi 0x73276 |
| } while (r3 > 4);
0x000732ae b 0x73202 | goto label_0;
| label_11:
0x000732b0 ldrh.w r2, [fp, 0x1c] | r2 = var_bp_1ch;
0x000732b4 and r2, r2, 0xf000 | r2 &= 0xf000;
0x000732b8 cmp.w r2, 0xa000 |
| if (r2 != 0xa000) {
0x000732bc bne 0x73202 | goto label_0;
| }
| do {
0x000732be ldr.w r4, [r8] | r4 = *(r8);
0x000732c2 mov.w fp, 0 |
0x000732c6 b 0x7327e | goto label_1;
| label_13:
0x000732c8 bl 0x72fe8 | r0 = fcn_00072fe8 (r0);
0x000732cc cmp r0, 0 |
| if (r0 != 0) {
0x000732ce bne 0x733c2 | goto label_17;
| }
0x000732d0 cmn.w fp, 0x5f |
| if (fp == 0x5f) {
0x000732d4 beq 0x733c8 | goto label_18;
| }
| label_2:
0x000732d6 mov r3, sb | r3 = sb;
0x000732d8 mov r2, r4 | r2 = r4;
0x000732da mov r1, r5 | r1 = r5;
0x000732dc mov r0, r6 | r0 = r6;
0x000732de bl 0x72e78 | r0 = fcn_00072e78 (r0, r1, r2, r3);
0x000732e2 cmn.w r0, 0xd |
0x000732e6 mov fp, r0 |
| if (r0 != 0xd) {
0x000732e8 beq 0x73320 |
0x000732ea cmp.w r0, -1 |
| if (r0 == -1) {
0x000732ee beq 0x73320 | goto label_19;
| }
0x000732f0 cmn.w r0, 0x5f |
| if (r0 == 0x5f) {
0x000732f4 beq 0x73320 | goto label_19;
| }
0x000732f6 cmp r0, 0 |
| if (r0 < 0) {
0x000732f8 blt 0x733c2 | goto label_17;
| }
0x000732fa ldr r1, [pc, 0x174] |
0x000732fc mov r3, sl | r3 = sl;
0x000732fe mov.w r2, 0x1000 | r2 = 0x1000;
0x00073302 mov r0, r6 | r0 = r6;
0x00073304 add r1, pc | r1 = 0xe677a;
0x00073306 bl 0x72e78 | r0 = fcn_00072e78 (r0, r1, r2, r3);
0x0007330a subs.w fp, r0, 0 |
| if (fp < r0) {
0x0007330e blt 0x733c2 | goto label_17;
| }
0x00073310 ldr.w r2, [sb] | r2 = *(sb);
0x00073314 ldr.w r3, [sl] | r3 = *(sl);
0x00073316 adds r0, 0 | r0 += 0;
0x00073318 cmp r2, r3 |
| if (r2 != r3) {
0x0007331a bne 0x733c8 | goto label_18;
| }
0x0007331c movs r3, 0 | r3 = 0;
0x0007331e str r3, [sp, 0xc] | var_ch_3 = r3;
| }
| label_19:
0x00073320 ldr r3, [sp, 8] | r3 = var_8h_2;
0x00073322 cmp r3, 0 |
| if (r3 != 0) {
0x00073324 bne.w 0x7343c | goto label_20;
| }
0x00073328 orr r3, r4, 0x100 | r3 = r4 | 0x100;
| label_4:
0x0007332c mov r1, r5 | r1 = r5;
0x0007332e add r5, sp, 0x20 | r5 += var_20h;
0x00073330 mov r0, r6 | r0 = r6;
0x00073332 mov r2, r5 | r2 = r5;
0x00073334 blx 0x9334 | fcn_00009334 ();
0x00073336 invalid |
| if (r3 < 0) {
0x0007333a blt.w 0x73442 | goto label_21;
| }
0x0007333e ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00073340 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00073342 muls r0, r6, r0 | r0 = r6 * r0;
0x00073344 cmp.w r3, 0xa000 |
0x00073348 beq 0x732be |
| } while (r3 == 0xa000);
0x0007334a ldr r1, [pc, 0x128] |
0x0007334c mov r0, r6 | r0 = r6;
0x0007334e add r6, sp, 0x88 | r6 += var_88h;
0x00073350 mov.w r3, 0x1000 | r3 = 0x1000;
0x00073354 mov r2, r6 | r2 = r6;
0x00073356 add r1, pc | r1 = 0xe67d0;
0x00073358 blx 0x9334 | r0 = fcn_00009334 ();
0x0007335c cmp r0, 0 |
| if (r0 < 0) {
0x0007335e blt 0x73442 | goto label_21;
| }
0x00073360 ldrd r0, r2, [r5] | __asm ("ldrd r0, r2, [r5]");
0x00073364 ldrd r1, r3, [r6] | __asm ("ldrd r1, r3, [r6]");
0x00073368 ldr.w r4, [r8] | r4 = *(r8);
0x0007336c cmp r2, r3 |
0x0007336e it eq |
| if (r2 == r3) {
0x00073370 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
0x00073372 it ne |
| if (r2 != r3) {
0x00073374 ldrne fp, [sp, 0xc] | fp = var_ch_3;
| goto label_22;
| }
| if (r2 != r3) {
| label_22:
0x00073378 bne 0x7327e | goto label_1;
| }
0x0007337a ldrd r0, r2, [r5, 0x60] | __asm ("ldrd r0, r2, [r5, 0x60]");
0x0007337e ldrd r1, r3, [r6, 0x60] | __asm ("ldrd r1, r3, [r6, 0x60]");
0x00073382 cmp r2, r3 |
0x00073384 it eq |
| if (r2 == r3) {
0x00073386 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
0x00073388 ite eq |
| if (r2 != r3) {
0x0007338a moveq fp, 1 |
| }
| if (r2 != r3) {
0x0007338e mov.w fp, 0 |
| }
0x00073392 b 0x7327e | goto label_1;
| label_12:
0x00073394 bl 0x72fe8 | r0 = fcn_00072fe8 (r0);
| if (r0 != 0) {
0x00073398 cbnz r0, 0x733c2 | goto label_17;
| }
0x0007339a cmn.w fp, 0x5f |
| if (fp != 0x5f) {
0x0007339e bne 0x732d6 | goto label_2;
| }
0x000733a0 ldr r1, [pc, 0xd4] |
0x000733a2 mov.w r3, 0x1000 | r3 = 0x1000;
0x000733a6 str r3, [sp] | *(sp) = r3;
0x000733a8 mov r2, r8 | r2 = r8;
0x000733aa mov r3, sl | r3 = sl;
0x000733ac mov r0, r6 | r0 = r6;
0x000733ae add r1, pc | r1 = 0xe682a;
0x000733b0 bl 0x73044 | fcn_00073044 (r0, r1, r2, r3, r4);
0x000733b2 mcr2 p1, 2, pc, c8, c0, 5 | __asm ("mcr2 p1, 2, pc, c8, c0, 5");
0x000733b6 lsrs r0, r0, 0xc | r0 >>= 0xc;
| if (r0 >= r0) {
0x000733b8 bge 0x733c8 | goto label_18;
| }
0x000733ba bl 0x72fe8 | r0 = fcn_00072fe8 (r0);
0x000733be cmp r0, 0 |
| if (r0 == 0) {
0x000733c0 beq 0x732d6 | goto label_2;
| }
| label_17:
0x000733c2 ldr.w r4, [r8] | r4 = *(r8);
0x000733c6 b 0x7327e | goto label_1;
| label_18:
0x000733c8 ldr.w r4, [r8] | r4 = *(r8);
0x000733cc mov.w fp, 1 |
0x000733d0 b 0x7327e | goto label_1;
| label_10:
0x000733d2 ldr.w r3, [fp, 8] | r3 = var_f8h;
0x000733d6 ldr.w r4, [r8] | r4 = *(r8);
0x000733da ubfx fp, r3, 0xd, 1 | fp = (r3 >> 0xd) & ((1 << 1) - 1);
0x000733de b 0x7327e | goto label_1;
| label_5:
0x000733e0 ldr r1, [pc, 0x98] |
0x000733e2 movs r2, 0xb5 | r2 = 0xb5;
0x000733e4 ldr r3, [pc, 0x98] |
0x000733e6 ldr r0, [pc, 0x9c] |
0x000733e8 add r1, pc | r1 = 0xe6868;
0x000733ea add r3, pc | r3 = 0xe686e;
0x000733ec adds r1, 7 | r1 += 7;
0x000733ee add r0, pc | r0 = 0xe6878;
0x000733f0 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x000733f4 ldr r1, [pc, 0x90] |
0x000733f6 movs r2, 0xb6 | r2 = 0xb6;
0x000733f8 ldr r3, [pc, 0x90] |
0x000733fa ldr r0, [pc, 0x94] |
0x000733fc add r1, pc | r1 = 0xe6888;
0x000733fe add r3, pc | r3 = 0xe688e;
0x00073400 adds r1, 7 | r1 += 7;
0x00073402 add r0, pc | r0 = 0xe6898;
0x00073404 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x00073408 ldr r1, [pc, 0x88] |
0x0007340a movs r2, 0xb7 | r2 = 0xb7;
0x0007340c ldr r3, [pc, 0x88] |
0x0007340e ldr r0, [pc, 0x8c] |
0x00073410 add r1, pc | r1 = 0xe68a8;
0x00073412 add r3, pc | r3 = 0xe68ae;
0x00073414 adds r1, 7 | r1 += 7;
0x00073416 add r0, pc | r0 = 0xe68b8;
0x00073418 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_14:
0x0007341c ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x0007341e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00073420 cmp r1, r3 |
| if (r1 != r3) {
0x00073422 bne.w 0x73242 | goto label_3;
| }
0x00073426 adds r0, 8 | r0 += 8;
0x00073428 add.w r1, r4, 8 | r1 = r4 + 8;
0x0007342c mov.w fp, 1 |
0x00073430 blx 0x8a78 | r0 = getauxval ();
0x00073434 cmp r0, 0 |
| if (r0 != 0) {
0x00073436 bne.w 0x73242 | goto label_3;
| }
0x0007343a b 0x7327e | goto label_1;
| label_20:
0x0007343c bic r3, r4, 0x400 | r3 = BIT_MASK (r4, 0x400);
0x00073440 b 0x7332c | goto label_4;
| label_21:
0x00073442 blx 0x9628 | r0 = fcn_00009628 ();
0x00073446 ldr r3, [r0] | r3 = *(r0);
0x00073448 ldr.w r4, [r8] | r4 = *(r8);
0x0007344c rsb.w fp, r3, 0 |
0x00073450 b 0x7327e | goto label_1;
| label_8:
0x00073452 ldr r4, [sp, 0xc] | r4 = var_ch_3;
0x00073454 mvn fp, 0x15 |
0x00073458 b 0x7327e | goto label_1;
| label_16:
0x0007345a blx 0x927c | fprintf_chk ()
0x0007345e nop |
0x00073460 ldr r6, [r1, r5] | r6 = *((r1 + r5));
0x00073462 movs r5, r0 | r5 = r0;
0x00073464 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00073466 movs r0, r0 |
0x00073468 subw r0, r6, 0x800 | __asm ("subw r0, r6, aav.0x000000ff");
0x0007346a movs r0, r0 |
0x0007346c ldr r6, [r6, r0] | r6 = *((r6 + r0));
0x0007346e movs r5, r0 | r5 = r0;
0x00073470 rsb.w r0, r8, 0x800000 | r0 = 0x800000 - r8;
0x00073474 sbcs r0, r6, 0x800000 | __asm ("sbcs r0, r6, aav.0x000000ff");
0x00073478 adds.w r0, lr, 0x800000 | r0 = lr + 0x800000;
0x0007347c movs r4, 0x4c | r4 = 0x4c;
0x0007347e movs r3, r0 | r3 = r0;
0x00073480 movs r5, 0x72 | r5 = 0x72;
0x00073482 movs r3, r0 | r3 = r0;
0x00073484 add r4, sp, 0xf8 | r4 += var_f8h;
0x00073486 movs r2, r0 | r2 = r0;
0x00073488 movs r4, 0x38 | r4 = 0x38;
0x0007348a movs r3, r0 | r3 = r0;
0x0007348c movs r5, 0x5e | r5 = 0x5e;
0x0007348e movs r3, r0 | r3 = r0;
0x00073490 adr r1, 0x2a8 | r1 = 0x2a8;
0x00073492 movs r1, r0 | r1 = r0;
0x00073494 movs r4, 0x24 | r4 = 0x24;
0x00073496 movs r3, r0 | r3 = r0;
0x00073498 movs r5, 0x4a | r5 = 0x4a;
0x0007349a movs r3, r0 | r3 = r0;
0x0007349c movs r4, 0x4e | r4 = 0x4e;
0x0007349e movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x734a0 */
| #include <stdint.h>
|
; (fcn) fcn.000734a0 () | void fcn_000734a0 (uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_4;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000734a0 invalid |
0x000734a4 ldr r1, [pc, 0xd0] |
0x000734a6 mov r4, r2 | r4 = r2;
0x000734a8 sub sp, 0x14 |
0x000734aa movs r3, 0 | r3 = 0;
0x000734ac ldr r2, [pc, 0xcc] | r2 = *(0x7357c);
0x000734ae add r1, pc | r1 = 0xe6a2a;
0x000734b0 ldr r2, [r1, r2] |
0x000734b2 ldr r2, [r2] | r2 = *(0xe6a2a);
0x000734b4 str r2, [sp, 0xc] | var_ch = r2;
0x000734b6 mov.w r2, 0 | r2 = 0;
0x000734b8 lsls r0, r0, 8 | r0 <<= 8;
0x000734ba str r3, [sp, 8] | var_8h = r3;
0x000734bc cmp r0, 0 |
| if (r0 == 0) {
0x000734be beq 0x73546 | goto label_2;
| }
0x000734c0 bics r7, r4, 0x400 | __asm ("bics r7, r4, aav.0x000000ff");
| if (r0 != 0) {
0x000734c4 bne 0x7355c | goto label_3;
| }
0x000734c6 ldr r1, [pc, 0xb8] |
0x000734c8 mov r5, r0 | r5 = r0;
0x000734ca add r1, pc | r1 = 0xe6a50;
0x000734cc bl 0x754cc | r0 = fcn_000754cc (r0, r1);
| if (r0 == 0) {
0x000734d0 cbz r0, 0x7353e | goto label_4;
| }
0x000734d2 lsls r3, r4, 0x15 | r3 = r4 << 0x15;
| if (r3 < r4) {
0x000734d4 bmi 0x73522 | goto label_5;
| }
| label_0:
0x000734d6 mov r0, r5 | r0 = r5;
0x000734d8 movs r2, 0 | r2 = 0;
0x000734da mov.w r1, 0x280000 | r1 = 0x280000;
0x000734de bl 0x6d090 | fcn_0006d090 (r0, r1, r2);
0x000734e0 ldc2l p14, c1, [r7, 0x18] | __asm ("ldc2l p14, c1, [r7, 0x18]");
0x000734e4 it lt |
| if (r2 >= 0) {
0x000734e6 movlt r5, r6 | r5 = r6;
| }
| if (r2 < 0) {
0x000734e8 blt 0x734fc | goto label_1;
| }
0x000734ea mov r0, r5 | r0 = r5;
0x000734ec bl 0x7570c | fcn_0007570c (r0);
0x000734ee invalid |
0x000734f2 mov r1, r0 | r1 = r0;
0x000734f4 mov r0, r6 | r0 = r6;
0x000734f6 bl 0x73160 | r0 = fcn_00073160 (r0, r1, r2);
0x000734fa mov r5, r0 | r5 = r0;
| do {
| label_1:
0x000734fc mov r0, r6 | r0 = r6;
0x000734fe bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x00073500 invalid |
0x00073504 blx 0x8dac | fcn_00008dac ();
0x00073508 ldr r2, [pc, 0x78] |
0x0007350a ldr r3, [pc, 0x70] | r3 = *(0x7357e);
0x0007350c add r2, pc | r2 = 0xe6a94;
0x0007350e ldr r3, [r2, r3] | r3 = *(0xe6a94);
0x00073510 ldr r2, [r3] | r2 = *(0xe6a94);
0x00073512 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00073514 eors r2, r3 | r2 ^= r3;
0x00073516 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007351a bne 0x73572 | goto label_6;
| }
0x0007351c mov r0, r5 | r0 = r5;
0x0007351e add sp, 0x14 |
0x00073520 pop {r4, r5, r6, r7, pc} |
| label_5:
0x00073522 mov r1, r6 | r1 = r6;
0x00073524 mov r0, r5 | r0 = r5;
0x00073526 add r3, sp, 8 | r3 += var_8h;
0x00073528 movs r2, 0x10 | r2 = 0x10;
0x0007352a str r7, [sp] | *(sp) = r7;
0x0007352c bl 0x6c85c | r0 = fcn_0006c85c (r0, r1, r2, r3);
0x00073530 subs r5, r0, 0 | r5 = r0 - 0;
0x00073532 it lt |
| if (r5 >= r0) {
0x00073534 movlt r6, -1 | r6 = -1;
| }
0x00073536 adds r6, 0xff | r6 += 0xff;
0x00073538 blt 0x734fc |
| } while (r6 < 0xff);
0x0007353a ldr r5, [sp, 8] | r5 = var_8h;
0x0007353c b 0x734d6 | goto label_0;
| label_4:
0x0007353e mov.w r6, -1 | r6 = -1;
0x00073542 movs r5, 1 | r5 = 1;
0x00073544 b 0x734fc | goto label_1;
| label_2:
0x00073546 ldr r1, [pc, 0x40] |
0x00073548 movw r2, 0x139 | r2 = 0x139;
0x0007354c ldr r3, [pc, 0x3c] |
0x0007354e ldr r0, [pc, 0x40] |
0x00073550 add r1, pc | r1 = 0xe6ade;
0x00073552 add r3, pc | r3 = 0xe6ae2;
0x00073554 adds r1, 7 | r1 += 7;
0x00073556 add r0, pc | r0 = 0xe6aec;
0x00073558 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0007355c ldr r1, [pc, 0x34] |
0x0007355e mov.w r2, 0x13a | r2 = 0x13a;
0x00073560 strb r5, [r3, 0xa] | *((r3 + 0xa)) = r5;
0x00073562 ldr r3, [pc, 0x34] |
0x00073564 ldr r0, [pc, 0x34] |
0x00073566 add r1, pc | r1 = 0xe6afe;
0x00073568 add r3, pc | r3 = 0xe6b06;
0x0007356a adds r1, 7 | r1 += 7;
0x0007356c add r0, pc | r0 = 0xe6b0c;
0x0007356e bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x00073572 blx 0x927c | fprintf_chk ()
0x00073576 nop |
0x00073578 ldrsb r6, [r2, r0] | r6 = *((r2 + r0));
0x0007357a movs r5, r0 | r5 = r0;
0x0007357c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007357e movs r0, r0 |
0x00073580 mrrc p0, 0, r0, r6, c1 | __asm ("mrrc p0, 0, r0, r6, c1");
0x00073582 movs r1, r0 | r1 = r0;
0x00073584 strb r0, [r7, r6] | *((r7 + r6)) = r0;
0x00073586 movs r5, r0 | r5 = r0;
0x00073588 movs r2, 0xe4 | r2 = 0xe4;
0x0007358a movs r3, r0 | r3 = r0;
0x0007358c movs r3, 0xbe | r3 = 0xbe;
0x0007358e movs r3, r0 | r3 = r0;
0x00073590 ldr r2, [r6, 0x38] | r2 = *((r6 + 0x38));
0x00073592 movs r1, r0 | r1 = r0;
0x00073594 movs r2, 0xce | r2 = 0xce;
0x00073596 movs r3, r0 | r3 = r0;
0x00073598 movs r3, 0xa8 | r3 = 0xa8;
0x0007359a movs r3, r0 | r3 = r0;
0x0007359c movs r3, 0x58 | r3 = 0x58;
0x0007359e movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x735a0 */
| #include <stdint.h>
|
; (fcn) fcn.000735a0 () | void fcn_000735a0 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_8h_2;
| int16_t var_10ch;
| r0 = arg1;
| r1 = arg2;
0x000735a0 invalid |
0x000735a4 ldr r0, [pc, 0xb4] |
0x000735a6 mov r6, r1 | r6 = r1;
0x000735a8 sub sp, 0x110 |
0x000735aa mov.w r3, 0x1000 | r3 = 0x1000;
0x000735ae ldr r1, [pc, 0xb0] | r1 = *(0x73662);
0x000735b0 add r4, sp, 8 | r4 += var_8h_2;
0x000735b2 add r0, pc | r0 = 0xe6c12;
0x000735b4 str r4, [sp] | *(sp) = r4;
0x000735b6 mov.w r2, 0x900 | r2 = 0x900;
0x000735ba ldr r1, [r0, r1] |
0x000735bc mvn r0, 0x63 | r0 = ~0x63;
0x000735c0 ldr r1, [r1] | r1 = *(0xe6c12);
0x000735c2 str r1, [sp, 0x10c] | var_10ch = r1;
0x000735c4 mov.w r1, 0 | r1 = 0;
0x000735c8 mov r1, r5 | r1 = r5;
0x000735ca blx 0x9548 | r0 = fcn_00009548 ();
0x000735ce cmp r0, 0 |
| if (r0 < 0) {
0x000735d0 blt 0x7362a | goto label_2;
| }
0x000735d2 ldr r3, [r4] | r3 = *(r4);
0x000735d4 lsls r3, r3, 0x13 | r3 <<= 0x13;
| if (r3 < r3) {
0x000735d6 bmi 0x73620 | goto label_3;
| }
| label_1:
0x000735d8 movs r2, 0 | r2 = 0;
0x000735da mov r3, r6 | r3 = r6;
0x000735dc mov r1, r5 | r1 = r5;
0x000735de mvn r0, 0x63 | r0 = ~0x63;
0x000735e2 str r2, [sp] | *(sp) = r2;
0x000735e4 bl 0x73044 | r0 = fcn_00073044 (r0, r1, r2, r3, r4);
0x000735e8 mov r4, r0 | r4 = r0;
0x000735ea cbnz r0, 0x73606 |
| while (r0 != 0) {
| label_0:
0x000735ec ldr r2, [pc, 0x74] |
0x000735ee ldr r3, [pc, 0x70] | r3 = *(0x73662);
0x000735f0 add r2, pc | r2 = 0xe6c58;
0x000735f2 ldr r3, [r2, r3] | r3 = *(0xe6c58);
0x000735f4 ldr r2, [r3] | r2 = *(0xe6c58);
0x000735f6 ldr r3, [sp, 0x10c] | r3 = var_10ch;
0x000735f8 eors r2, r3 | r2 ^= r3;
0x000735fa mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000735fe bne 0x73656 | goto label_4;
| }
0x00073600 mov r0, r4 | r0 = r4;
0x00073602 add sp, 0x110 |
0x00073604 pop {r4, r5, r6, pc} |
0x00073606 bl 0x72fe8 | r0 = fcn_00072fe8 (r0);
0x0007360a cmp r0, 0 |
0x0007360c bne 0x735ec |
| }
0x0007360e mov r2, r0 | r2 = r0;
0x00073610 mov r3, r6 | r3 = r6;
0x00073612 mov r1, r5 | r1 = r5;
0x00073614 mvn r0, 0x63 | r0 = ~0x63;
0x00073616 lsls r3, r4, 1 | r3 = r4 << 1;
0x00073618 bl 0x72e78 | fcn_00072e78 (r0, r1, r2, r3);
0x0007361a stc2 p6, c4, [lr], -0x10 | __asm ("stc2 p6, c4, [lr], -0x10");
0x0007361e b 0x735ec | goto label_0;
| label_3:
0x00073620 ldr.w r3, [r4, 0x90] | r3 = *((r4 + 0x90));
0x00073624 movs r4, 0 | r4 = 0;
0x00073626 str r3, [r6] | *(r6) = r3;
0x00073628 b 0x735ec | goto label_0;
| label_2:
0x0007362a blx 0x9628 | r0 = fcn_00009628 ();
0x0007362e ldr r4, [r0] | r4 = *(r0);
0x00073630 eor.w r3, r4, r4, asr 31 | r3 = r4 ^ (r4 >> 31);
0x00073632 strb r4, [r4, 0xf] | *((r4 + 0xf)) = r4;
0x00073634 sub.w r3, r3, r4, asr 31 | r3 -= (r4 >> 31);
0x00073636 strb r4, [r4, 0xf] | *((r4 + 0xf)) = r4;
0x00073638 cmp r3, 0x26 |
| if (r3 == 0x26) {
0x0007363a beq 0x735d8 | goto label_1;
| }
| if (r3 > 0x26) {
0x0007363c bgt 0x7364c | goto label_5;
| }
0x0007363e cmp r3, 0x19 |
| if (r3 == 0x19) {
0x00073640 beq 0x735d8 | goto label_1;
| }
0x00073642 cmp r3, 1 |
| if (r3 == 1) {
0x00073644 beq 0x735d8 | goto label_1;
| }
0x00073646 cmp r3, 0xd |
| if (r3 == 0xd) {
0x00073648 beq 0x735d8 | goto label_1;
| }
0x0007364a b 0x73652 | goto label_6;
| label_5:
0x0007364c subs r3, 0x5d | r3 -= 0x5d;
0x0007364e cmp r3, 4 |
| if (r3 < 4) {
0x00073650 bls 0x735d8 | goto label_1;
| }
| label_6:
0x00073652 rsbs r4, r4, 0 | r4 -= ;
0x00073654 b 0x735ec | goto label_0;
| label_4:
0x00073656 blx 0x927c | fprintf_chk ()
0x0007365a nop |
0x0007365c strb r2, [r2, r4] | *((r2 + r4)) = r2;
0x0007365e movs r5, r0 | r5 = r0;
0x00073660 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00073662 movs r0, r0 |
0x00073664 strb r4, [r2, r3] | *((r2 + r3)) = r4;
0x00073666 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73668 */
| #include <stdint.h>
|
; (fcn) fcn.00073668 () | void fcn_00073668 () {
| int16_t var_4h;
| int16_t var_8h_3;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h;
0x00073668 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x0007366c sub sp, 0x1c |
0x0007366e ldr r4, [pc, 0xc8] |
0x00073670 movs r3, 0 | r3 = 0;
0x00073672 add r1, sp, 8 | r1 += var_8h_3;
0x00073674 ldr r2, [pc, 0xc4] | r2 = *(0x7373c);
0x00073676 add r4, pc | r4 = 0xe6db4;
0x00073678 ldr r0, [pc, 0xc4] |
0x0007367a ldr r2, [r4, r2] |
0x0007367c add r0, pc | r0 = 0xe6dc0;
0x0007367e ldr r2, [r2] | r2 = *(0xe6db4);
0x00073680 str r2, [sp, 0x14] | var_14h = r2;
0x00073682 mov.w r2, 0 | r2 = 0;
0x00073686 str r3, [sp, 4] | var_4h = r3;
0x00073688 bl 0x735a0 | r0 = fcn_000735a0 (r0, r1);
0x0007368c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007368e blt 0x7370c | goto label_1;
| }
0x00073690 ldr r1, [pc, 0xb0] |
0x00073692 add r2, sp, 4 | r2 += var_4h;
0x00073694 ldr r0, [pc, 0xb0] |
0x00073696 add r1, pc | r1 = 0xe6dde;
0x00073698 add r0, pc | r0 = 0xe6de4;
0x0007369a bl 0x6a520 | r0 = fcn_0006a520 (r0);
0x0007369e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000736a0 blt 0x7370c | goto label_1;
| }
0x000736a2 ldr r7, [pc, 0xa8] |
0x000736a4 add r6, sp, 0xc | r6 += var_ch_2;
0x000736a6 ldr.w r8, [pc, 0xa8] |
0x000736aa ldr.w sb, [pc, 0xa8] |
0x000736ae add r7, pc | r7 = 0xe6e00;
0x000736b0 add r8, pc | r8 = 0xe6e06;
0x000736b2 add sb, pc | sb = 0xe6e0c;
0x000736b4 b 0x736da |
| while (r0 == 1) {
0x000736b6 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000736b8 ldrd r3, r5, [sp, 8] | __asm ("ldrd r3, r5, [var_8h_3]");
0x000736bc cmp r2, r3 |
| if (r2 == r3) {
0x000736be bne 0x736d4 |
0x000736c0 mov r1, r8 | r1 = r8;
0x000736c2 mov r0, r5 | r0 = r5;
0x000736c4 blx 0x9164 | r0 = fcn_00009164 ();
| if (r0 == 0) {
0x000736c8 cbz r0, 0x736d4 | goto label_0;
| }
0x000736ca adds r0, 3 | r0 += 3;
0x000736cc mov r1, sb | r1 = sb;
0x000736ce bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
| if (r0 != 0) {
0x000736d2 cbnz r0, 0x73706 | goto label_2;
| }
| }
| label_0:
0x000736d4 mov r0, r5 | r0 = r5;
0x000736d6 blx 0x8dac | fcn_00008dac ();
0x000736da movs r2, 0 | r2 = 0;
0x000736dc ldr r0, [sp, 4] | r0 = var_4h;
0x000736de mov r3, r6 | r3 = r6;
0x000736e0 mov.w r1, 0x100000 | r1 = 0x100000;
0x000736e4 str r2, [sp, 0xc] | var_ch_2 = r2;
0x000736e6 bl 0x6b144 | r0 = fcn_0006b144 (r0, r1, r2, r3);
0x000736ea subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000736ec blt 0x73704 | goto label_3;
| }
0x000736ee ldr r0, [sp, 0xc] | r0 = var_ch_2;
| if (r4 == r0) {
0x000736f0 beq 0x7372e | goto label_4;
| }
0x000736f2 add r2, sp, 0x10 | r2 += var_10h;
0x000736f4 mov r1, r7 | r1 = r7;
0x000736f6 blx 0x8b20 | r0 = kmod_list_next ();
0x000736fa cmp r0, 1 |
0x000736fc mov r4, r0 | r4 = r0;
0x000736fe beq 0x736b6 |
| }
0x00073700 ldr r5, [sp, 0xc] | r5 = var_ch_2;
0x00073702 b 0x736d4 | goto label_0;
| label_3:
0x00073704 ldr r5, [sp, 0xc] | r5 = var_ch_2;
| label_2:
0x00073706 mov r0, r5 | r0 = r5;
0x00073708 blx 0x8dac | fcn_00008dac ();
| do {
| label_1:
0x0007370c ldr r0, [sp, 4] | r0 = var_4h;
0x0007370e bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x00073712 ldr r2, [pc, 0x44] |
0x00073714 ldr r3, [pc, 0x24] | r3 = *(0x7373c);
0x00073716 add r2, pc | r2 = 0xe6e74;
0x00073718 ldr r3, [r2, r3] | r3 = *(0xe6e74);
0x0007371a ldr r2, [r3] | r2 = *(0xe6e74);
0x0007371c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007371e eors r2, r3 | r2 ^= r3;
0x00073720 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00073724 bne 0x73734 | goto label_5;
| }
0x00073726 mov r0, r4 | r0 = r4;
0x00073728 add sp, 0x1c |
0x0007372a pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_4:
0x0007372e blx 0x8dac | fcn_00008dac ();
0x00073732 b 0x7370c |
| } while (1);
| label_5:
0x00073734 blx 0x927c | fprintf_chk ()
0x00073738 strb r6, [r1, r1] | *((r1 + r1)) = r6;
0x0007373a movs r5, r0 | r5 = r0;
0x0007373c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007373e movs r0, r0 |
0x00073740 adds r3, 0x18 | r3 += 0x18;
0x00073742 movs r1, r0 | r1 = r0;
0x00073744 strh r2, [r6, 0x3c] | *((r6 + 0x3c)) = r2;
0x00073746 movs r2, r0 | r2 = r0;
0x00073748 movs r2, 0x50 | r2 = 0x50;
0x0007374a movs r3, r0 | r3 = r0;
0x0007374c subs r2, r6, r1 | r2 = r6 - r1;
0x0007374e movs r1, r0 | r1 = r0;
0x00073750 movs r2, 0x50 | r2 = 0x50;
0x00073752 movs r3, r0 | r3 = r0;
0x00073754 movs r2, 0x52 | r2 = 0x52;
0x00073756 movs r3, r0 | r3 = r0;
0x00073758 strh r6, [r5, r6] | *((r5 + r6)) = r6;
0x0007375a movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7375c */
| #include <stdint.h>
|
; (fcn) fcn.0007375c () | void fcn_0007375c (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_8h_4;
| int16_t var_0h_3;
| int16_t var_4h_3;
| int16_t var_8h_7;
| int16_t var_8h_8;
| int16_t var_4h_4;
| int16_t var_8h_9;
| int16_t var_8h_6;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_5;
| int16_t var_8h_10;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0007375c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00073760 sub sp, 0x24 |
0x00073762 ldr r5, [pc, 0x32c] |
0x00073764 add r7, sp, 8 | r7 += var_8h_4;
0x00073766 ldr r4, [pc, 0x32c] | r4 = *(0x73a96);
0x00073768 add r5, pc | r5 = 0xe71fe;
0x0007376a ldr r4, [r5, r4] |
0x0007376c ldr r4, [r4] | r4 = *(0xe71fe);
0x0007376e str r4, [r7, 0x14] | *((r7 + 0x14)) = r4;
0x00073770 mov.w r4, 0 | r4 = 0;
0x00073774 ldr r4, [r7, 0x40] | r4 = *((r7 + 0x40));
0x00073776 str r4, [r7, 4] | var_4h_4 = r4;
0x00073778 ldr r4, [r7, 0x44] | r4 = *((r7 + 0x44));
0x0007377a strd r4, r3, [r7, 8] | __asm ("strd r4, r3, [var_8h_9]");
0x0007377e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00073780 blt.w 0x73a78 | goto label_11;
| }
0x00073784 mov r6, r1 | r6 = r1;
0x00073786 mov r5, r2 | r5 = r2;
0x00073788 cmp r2, 0 |
| if (r2 == 0) {
0x0007378a beq.w 0x73976 | goto label_12;
| }
0x0007378c strh r4, [r6, 6] | *((r6 + 6)) = r4;
0x0007378e cmp r4, 0 |
| if (r4 == 0) {
0x00073790 beq.w 0x7394e | goto label_13;
| }
0x00073794 ldr r3, [pc, 0x300] |
0x00073796 sub sp, 0x20 |
0x00073798 add.w r8, sp, 8 | r8 += var_8h_5;
0x0007379c movs r2, 0x1a | r2 = 0x1a;
0x0007379e movs r1, 1 | r1 = 1;
0x000737a0 mov r0, r8 | r0 = r8;
0x000737a2 add r3, pc | r3 = 0xe723e;
0x000737a4 str r4, [sp] | *(sp) = r4;
0x000737a6 str r3, [sp, 4] | var_4h_2 = r3;
0x000737a8 ldr r3, [pc, 0x2f0] |
0x000737aa add r3, pc | r3 = 0xe724a;
0x000737ac blx 0x9494 | fcn_00009494 ();
| do {
0x000737b0 mov.w r1, 0x100 | r1 = 0x100;
0x000737b4 mov r0, r8 | r0 = r8;
0x000737b6 movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x000737b8 lsls r0, r1, 4 | r0 = r1 << 4;
0x000737ba blx 0x908c | r0 = fcn_0000908c ();
0x000737be subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x000737c2 blt.w 0x73a0c | goto label_14;
| }
0x000737c6 cmp r6, 0 |
| if (r6 == 0) {
0x000737c8 beq.w 0x73980 | goto label_15;
| }
| label_0:
0x000737cc cmp r4, 0 |
| if (r4 != 0) {
0x000737ce bne.w 0x739aa | goto label_16;
| }
0x000737d2 ldr r3, [pc, 0x2cc] |
0x000737d4 sub sp, 0x18 |
0x000737d6 add.w sb, sp, 8 | sb += var_8h_10;
0x000737da ldr r2, [pc, 0x2c8] |
0x000737dc add r3, pc | r3 = 0xe7282;
0x000737de ldrh r1, [r3, 4] | r1 = *((r3 + 4));
0x000737e0 add r2, pc | r2 = 0xe728a;
0x000737e2 strh.w r1, [sb, 0xf] | *((sb + 0xf)) = r1;
0x000737e6 ldrb r1, [r3, 6] | r1 = *((r3 + 6));
0x000737e8 strb.w r1, [sb, 0x11] | *((sb + 0x11)) = r1;
0x000737ec ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x000737ee stm.w sb, {r0, r1, r2} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
0x000737f2 ldr r0, [r3] | r0 = *(0xe7282);
0x000737f4 str.w r0, [sb, 0xb] | __asm ("str.w r0, [sb, 0xb]");
| label_5:
0x000737f8 mov.w r1, 0x100 | r1 = 0x100;
0x000737fc mov r0, sb | r0 = sb;
0x000737fe movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x00073800 lsls r0, r1, 4 | r0 = r1 << 4;
0x00073802 blx 0x908c | r0 = fcn_0000908c ();
0x00073806 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0007380a blt.w 0x73a56 | goto label_17;
| }
0x0007380e ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00073810 cmp r3, 0 |
| if (r3 == 0) {
0x00073812 beq.w 0x7398c | goto label_18;
| }
| label_1:
0x00073816 cmp r4, 0 |
| if (r4 != 0) {
0x00073818 bne.w 0x739c8 | goto label_19;
| }
0x0007381c ldr r3, [pc, 0x288] |
0x0007381e sub sp, 0x18 |
0x00073820 add.w sl, sp, 8 | sl += var_8h_6;
0x00073824 ldr r2, [pc, 0x284] |
0x00073826 add r3, pc | r3 = 0xe72d2;
0x00073828 ldrh r1, [r3, 4] | r1 = *((r3 + 4));
0x0007382a add r2, pc | r2 = 0xe72da;
0x0007382c strh.w r1, [sl, 0xf] | *((sl + 0xf)) = r1;
0x00073830 ldrb r1, [r3, 6] | r1 = *((r3 + 6));
0x00073832 strb.w r1, [sl, 0x11] | *((sl + 0x11)) = r1;
0x00073836 ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x00073838 stm.w sl, {r0, r1, r2} | *(sl) = r0;
| *((sl + 4)) = r1;
| *((sl + 8)) = r2;
0x0007383a movs r7, r0 | r7 = r0;
0x0007383c ldr r0, [r3] | r0 = *(0xe72d2);
0x0007383e str.w r0, [sl, 0xb] | __asm ("str.w r0, [sl, 0xb]");
| label_6:
0x00073842 mov.w r1, 0x100 | r1 = 0x100;
0x00073846 mov r0, sl | r0 = sl;
0x00073848 movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x0007384c blx 0x908c | r0 = fcn_0000908c ();
0x00073850 subs.w fp, r0, 0 |
| if (fp < r0) {
0x00073854 blt.w 0x73a66 | goto label_20;
| }
0x00073858 ldr r3, [r7, 4] | r3 = var_4h_4;
0x0007385a cmp r3, 0 |
| if (r3 == 0) {
0x0007385c beq.w 0x73998 | goto label_21;
| }
| label_2:
0x00073860 cmp r4, 0 |
| if (r4 == 0) {
0x00073862 beq.w 0x739e6 | goto label_22;
| }
0x00073866 ldr r3, [pc, 0x248] |
0x00073868 sub sp, 0x20 |
0x0007386a add.w sl, sp, 8 | sl += var_8h_9;
0x0007386e movs r2, 0x1b | r2 = 0x1b;
0x00073870 movs r1, 1 | r1 = 1;
0x00073872 mov r0, sl | r0 = sl;
0x00073874 add r3, pc | r3 = 0xe732a;
0x00073876 str r4, [sp] | *(sp) = r4;
0x00073878 str r3, [sp, 4] | var_4h_4 = r3;
0x0007387a ldr r3, [pc, 0x238] |
0x0007387c add r3, pc | r3 = 0xe7336;
0x0007387e blx 0x9494 | fcn_00009494 ();
0x00073880 invalid |
| label_7:
0x00073882 mov.w r1, 0x100 | r1 = 0x100;
0x00073886 mov r0, sl | r0 = sl;
0x00073888 movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x0007388c blx 0x908c | r0 = fcn_0000908c ();
0x00073890 subs.w sl, r0, 0 | sl = r0 - 0;
| if (sl < r0) {
0x00073894 blt.w 0x73a44 | goto label_23;
| }
| label_10:
0x00073898 ldr r3, [r7, 8] | r3 = var_8h_9;
0x0007389a cmp r3, 0 |
| if (r3 == 0) {
0x0007389c beq.w 0x739a4 | goto label_24;
| }
| label_3:
0x000738a0 cmp r4, 0 |
| if (r4 != 0) {
0x000738a2 bne.w 0x73a28 | goto label_25;
| }
0x000738a6 ldr.w ip, [pc, 0x210] |
0x000738aa sub sp, 0x10 |
0x000738ac ldr r3, [pc, 0x20c] |
0x000738ae add r4, sp, 8 | r4 += var_8h_8;
0x000738b0 add ip, pc | ip = 0xe736e;
0x000738b2 ldrb.w r2, [ip, 4] | r2 = *((ip + 4));
0x000738b6 add r3, pc | r3 = 0xe7376;
0x000738b8 strb r2, [r4, 0xf] | *((r4 + 0xf)) = r2;
0x000738ba ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x000738be stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x000738c2 ldr.w r0, [ip] | r0 = *(0xe736e);
0x000738c6 str.w r0, [r4, 0xb] | __asm ("str.w r0, [r4, 0xb]");
| label_9:
0x000738ca mov.w r1, 0x4100 | r1 = 0x4100;
0x000738ce mov r0, r4 | r0 = r4;
0x000738d0 movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x000738d4 blx 0x908c | r0 = fcn_0000908c ();
0x000738d8 cmp r0, 0 |
| if (r0 < 0) {
0x000738da blt.w 0x73a1e | goto label_26;
| }
0x000738dc strh r0, [r4, 4] | *((r4 + 4)) = r0;
| if (r6 != 0) {
| label_4:
0x000738de cbz r6, 0x738e8 |
0x000738e0 str.w sb, [r6] | __asm ("str.w sb, [r6]");
0x000738e4 mov.w sb, -1 | sb = -1;
| }
| if (r5 != 0) {
0x000738e8 cbz r5, 0x738f2 |
0x000738ea str.w r8, [r5] | __asm ("str.w r8, [r5]");
0x000738ee mov.w r8, -1 | r8 = -1;
| }
0x000738f2 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
| if (r3 != 0) {
0x000738f4 cbz r3, 0x738fe |
0x000738f6 str.w fp, [r3] | __asm ("str.w fp, [r3]");
0x000738fa mov.w fp, -1 |
| }
0x000738fe ldr r3, [r7, 4] | r3 = var_4h_4;
| if (r3 != 0) {
0x00073900 cbz r3, 0x7390a |
0x00073902 str.w sl, [r3] | __asm ("str.w sl, [r3]");
0x00073906 mov.w sl, -1 | sl = -1;
0x00073908 subs r2, 0xff | r2 -= 0xff;
| }
0x0007390a ldr r3, [r7, 8] | r3 = var_8h_9;
0x0007390c cmp r3, 0 |
| if (r3 == 0) {
0x0007390e beq.w 0x73a74 | goto label_27;
| }
0x00073912 movs r4, 0 | r4 = 0;
0x00073914 str r0, [r3] | *(r3) = r0;
| label_8:
0x00073916 mov r0, sl | r0 = sl;
0x00073918 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007391a invalid |
0x0007391c mov r0, fp | r0 = fp;
0x0007391e bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x00073922 mov r0, r8 | r0 = r8;
0x00073924 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x00073928 mov r0, sb | r0 = sb;
0x0007392a bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007392e ldr r2, [pc, 0x190] |
0x00073930 ldr r3, [pc, 0x160] | r3 = *(0x73a94);
0x00073932 add r2, pc | r2 = 0xe73f8;
0x00073934 ldr r3, [r2, r3] | r3 = *(0xe73f8);
0x00073936 ldr r2, [r3] | r2 = *(0xe73f8);
0x00073938 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x0007393a eors r2, r3 | r2 ^= r3;
0x0007393c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00073940 bne.w 0x73a8c | goto label_28;
| }
0x00073944 mov r0, r4 | r0 = r4;
0x00073946 adds r7, 0x1c | r7 += 0x1c;
0x00073948 mov sp, r7 |
0x0007394a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0007394c ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_13:
0x0007394e ldr r3, [pc, 0x174] |
0x00073950 sub sp, 0x18 |
0x00073952 add.w r8, sp, 8 | r8 += var_8h_10;
0x00073954 lsrs r0, r1, 0x20 | r0 = r1 >> 0x20;
0x00073956 ldr r2, [pc, 0x170] |
0x00073958 add r3, pc | r3 = 0xe7422;
0x0007395a ldrh r1, [r3, 4] | r1 = *((r3 + 4));
0x0007395c add r2, pc | r2 = 0xe742a;
0x0007395e strh.w r1, [r8, 0xf] | *((r8 + 0xf)) = r1;
0x00073962 ldrb r1, [r3, 6] | r1 = *((r3 + 6));
0x00073964 strb.w r1, [r8, 0x11] | *((r8 + 0x11)) = r1;
0x00073968 ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x0007396a stm.w r8, {r0, r1, r2} | *(r8) = r0;
| *((r8 + 4)) = r1;
| *((r8 + 8)) = r2;
0x0007396e ldr r0, [r3] | r0 = *(0xe7422);
0x00073970 str.w r0, [r8, 0xb] | __asm ("str.w r0, [r8, 0xb]");
0x00073974 b 0x737b0 |
| } while (1);
| label_12:
0x00073976 mov.w r8, -1 | r8 = -1;
0x0007397a cmp r6, 0 |
| if (r6 != 0) {
0x0007397c bne.w 0x737cc | goto label_0;
| }
| label_15:
0x00073980 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00073982 mov.w sb, -1 | sb = -1;
0x00073986 cmp r3, 0 |
| if (r3 != 0) {
0x00073988 bne.w 0x73816 | goto label_1;
| }
| label_18:
0x0007398c ldr r3, [r7, 4] | r3 = var_4h_4;
0x0007398e mov.w fp, -1 |
0x00073992 cmp r3, 0 |
| if (r3 != 0) {
0x00073994 bne.w 0x73860 | goto label_2;
| }
| label_21:
0x00073998 ldr r3, [r7, 8] | r3 = var_8h_9;
0x0007399a mov.w sl, -1 | sl = -1;
0x0007399e cmp r3, 0 |
| if (r3 != 0) {
0x000739a0 bne.w 0x738a0 | goto label_3;
| }
0x000739a2 add r7, sp, 0x1f8 | r7 = sp + 0x1f8;
| label_24:
0x000739a4 mov.w r0, -1 | r0 = -1;
0x000739a8 b 0x738de | goto label_4;
| label_16:
0x000739aa ldr r3, [pc, 0x120] |
0x000739ac sub sp, 0x20 |
0x000739ae add.w sb, sp, 8 | sb += var_8h_5;
0x000739b2 movs r2, 0x1a | r2 = 0x1a;
0x000739b4 movs r1, 1 | r1 = 1;
0x000739b6 mov r0, sb | r0 = sb;
0x000739b8 add r3, pc | r3 = 0xe748a;
0x000739ba str r4, [sp] | *(sp) = r4;
0x000739bc str r3, [sp, 4] | var_4h_2 = r3;
0x000739be ldr r3, [pc, 0x110] |
0x000739c0 add r3, pc | r3 = 0xe7496;
0x000739c2 blx 0x9494 | fcn_00009494 ();
0x000739c6 b 0x737f8 | goto label_5;
| label_19:
0x000739c8 ldr r3, [pc, 0x108] |
0x000739ca sub sp, 0x20 |
0x000739cc add.w sl, sp, 8 | sl += var_8h_9;
0x000739d0 movs r2, 0x1a | r2 = 0x1a;
0x000739d2 movs r1, 1 | r1 = 1;
0x000739d4 mov r0, sl | r0 = sl;
0x000739d6 add r3, pc | r3 = 0xe74ae;
0x000739d8 str r4, [sp] | *(sp) = r4;
0x000739da str r3, [sp, 4] | var_4h_4 = r3;
0x000739dc ldr r3, [pc, 0xf8] |
0x000739de add r3, pc | r3 = 0xe74ba;
0x000739e0 blx 0x9494 | fcn_00009494 ();
0x000739e4 b 0x73842 | goto label_6;
| label_22:
0x000739e6 ldr r3, [pc, 0xf4] |
0x000739e8 sub sp, 0x18 |
0x000739ea ldr.w ip, [pc, 0xf4] |
0x000739ee add.w sl, sp, 8 | sl += var_8h_6;
0x000739f2 add r3, pc | r3 = 0xe74d4;
0x000739f4 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x000739f8 add ip, pc | ip = 0xe74de;
0x000739fa stm.w sl, {r0, r1, r2} | *(sl) = r0;
| *((sl + 4)) = r1;
| *((sl + 8)) = r2;
0x000739fe ldm.w ip!, {r0, r1} | r0 = *(ip!);
| r1 = *((ip! + 4));
0x00073a02 str.w r0, [sl, 0xb] | __asm ("str.w r0, [sl, 0xb]");
0x00073a06 str.w r1, [sl, 0xf] | __asm ("str.w r1, [sl, 0xf]");
0x00073a0a b 0x73882 | goto label_7;
| label_14:
0x00073a0c blx 0x9628 | r0 = fcn_00009628 ();
0x00073a10 ldr r4, [r0] | r4 = *(r0);
0x00073a12 mov.w sl, -1 | sl = -1;
0x00073a16 mov fp, sl |
0x00073a18 mov sb, sl | sb = sl;
0x00073a1a rsbs r4, r4, 0 | r4 -= ;
0x00073a1c b 0x73916 | goto label_8;
| label_26:
0x00073a1e blx 0x9628 | r0 = fcn_00009628 ();
0x00073a22 ldr r4, [r0] | r4 = *(r0);
0x00073a24 rsbs r4, r4, 0 | r4 -= ;
0x00073a26 b 0x73916 | goto label_8;
| label_25:
0x00073a28 ldr r3, [pc, 0xb8] |
0x00073a2a sub sp, 0x18 |
0x00073a2c str r4, [sp] | *(sp) = r4;
0x00073a2e add r4, sp, 8 | r4 += var_8h_7;
0x00073a30 movs r2, 0x18 | r2 = 0x18;
0x00073a32 movs r1, 1 | r1 = 1;
0x00073a34 add r3, pc | r3 = 0xe751c;
0x00073a36 mov r0, r4 | r0 = r4;
0x00073a38 str r3, [sp, 4] | var_4h_3 = r3;
0x00073a3a ldr r3, [pc, 0xac] |
0x00073a3c add r3, pc | r3 = 0xe752a;
0x00073a3e blx 0x9494 | fcn_00009494 ();
0x00073a40 stc p7, c14, [sl, -0x108]! | __asm ("stc p7, c14, aav.0x000000ff!");
0x00073a42 b 0x738ca | goto label_9;
| label_23:
0x00073a44 blx 0x9628 | r0 = fcn_00009628 ();
0x00073a48 ldr r3, [r0] | r3 = *(r0);
0x00073a4a cmp r3, 2 |
0x00073a4c it ne |
| if (r3 == 2) {
0x00073a4e rsbne r4, r3, 0 | __asm ("rsbne r4, r3, 0");
| goto label_29;
| }
| if (r3 != 2) {
| label_29:
0x00073a50 bne.w 0x73916 | goto label_8;
| }
0x00073a54 b 0x73898 | goto label_10;
| label_17:
0x00073a56 blx 0x9628 | r0 = fcn_00009628 ();
0x00073a5a ldr r4, [r0] | r4 = *(r0);
0x00073a5c mov.w sl, -1 | sl = -1;
0x00073a60 mov fp, sl |
0x00073a62 rsbs r4, r4, 0 | r4 -= ;
0x00073a64 b 0x73916 | goto label_8;
| label_20:
0x00073a66 blx 0x9628 | r0 = fcn_00009628 ();
0x00073a6a ldr r4, [r0] | r4 = *(r0);
0x00073a6c mov.w sl, -1 | sl = -1;
0x00073a70 rsbs r4, r4, 0 | r4 -= ;
0x00073a72 b 0x73916 | goto label_8;
| label_27:
0x00073a74 ldr r4, [r7, 8] | r4 = var_8h_9;
0x00073a76 b 0x73916 | goto label_8;
| label_11:
0x00073a78 ldr r1, [pc, 0x70] |
0x00073a7a movs r2, 0x14 | r2 = 0x14;
0x00073a7c ldr r3, [pc, 0x70] |
0x00073a7e ldr r0, [pc, 0x74] |
0x00073a80 add r1, pc | r1 = 0xe7570;
0x00073a82 add r3, pc | r3 = 0xe7576;
0x00073a84 adds r1, 7 | r1 += 7;
0x00073a86 add r0, pc | r0 = 0xe7580;
0x00073a88 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_28:
0x00073a8c blx 0x927c | fprintf_chk ()
0x00073a90 strh r4, [r3, r5] | *((r3 + r5)) = r4;
0x00073a92 movs r5, r0 | r5 = r0;
0x00073a94 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00073a96 movs r0, r0 |
0x00073a98 movs r2, 0xa | r2 = 0xa;
0x00073a9a movs r3, r0 | r3 = r0;
0x00073a9c asrs r6, r2, 0xf | r6 = r2 >> 0xf;
0x00073a9e movs r2, r0 | r2 = r0;
0x00073aa0 movs r1, 0xd8 | r1 = 0xd8;
0x00073aa2 movs r3, r0 | r3 = r0;
0x00073aa4 asrs r4, r1, 0xe | r4 = r1 >> 0xe;
0x00073aa6 movs r2, r0 | r2 = r0;
0x00073aa8 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73af8 */
| #include <stdint.h>
|
; (fcn) fcn.00073af8 () | void fcn_00073af8 (int16_t arg_48h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00073af8 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x00073afc sub sp, 0x2c |
0x00073afe ldr r5, [pc, 0x104] |
0x00073b00 mov r6, r1 | r6 = r1;
0x00073b02 mov r7, r2 | r7 = r2;
0x00073b04 ldr r4, [pc, 0x100] | r4 = *(0x73c08);
0x00073b06 add r5, pc | r5 = 0xe7710;
0x00073b08 ldr.w r8, [sp, 0x48] | r8 = *(arg_48h);
0x00073b0c ldr r4, [r5, r4] |
0x00073b0e mov r5, r0 | r5 = r0;
0x00073b10 ldr r4, [r4] | r4 = *(0xe7710);
0x00073b12 str r4, [sp, 0x24] | var_24h = r4;
0x00073b14 mov.w r4, 0 | r4 = 0;
0x00073b18 subs r4, r3, 0 | r4 = r3 - 0;
| if (r4 >= r3) {
0x00073b1a bge 0x73bbe | goto label_6;
| }
0x00073b1c cmp r5, 0 |
| if (r5 >= 0) {
0x00073b1e bge 0x73bf0 | goto label_7;
| }
| label_5:
0x00073b20 cmp r6, 0 |
0x00073b22 bge 0x73b66 |
| while (r0 >= 0) {
0x00073b24 cmp r7, 0 |
| if (r7 >= 0) {
0x00073b26 bge 0x73b96 | goto label_8;
| }
0x00073b28 cmp r4, 0 |
| if (r4 >= 0) {
0x00073b2a bge 0x73ba8 | goto label_9;
| }
| label_0:
0x00073b2c cmp.w r8, 0 |
| if (r8 >= 0) {
0x00073b30 blt 0x73b48 |
| label_2:
0x00073b32 mov r0, r8 | r0 = r8;
0x00073b34 blx 0x94ac | r0 = fcn_000094ac ();
0x00073b38 cmp r0, 0 |
| if (r0 < 0) {
0x00073b3a blt 0x73b74 | goto label_1;
| }
0x00073b3c ldr r0, [pc, 0xcc] |
0x00073b3e add r0, pc | r0 = 0xe774e;
0x00073b40 blx 0x9044 | r0 = fcn_00009044 ();
0x00073b44 cmp r0, 0 |
| if (r0 < 0) {
0x00073b46 blt 0x73b74 | goto label_1;
| }
| }
| label_3:
0x00073b48 ldr r2, [pc, 0xc4] |
0x00073b4a ldr r3, [pc, 0xbc] | r3 = *(0x73c0a);
0x00073b4c add r2, pc | r2 = 0xe7760;
0x00073b4e ldr r3, [r2, r3] | r3 = *(0xe7760);
0x00073b50 ldr r2, [r3] | r2 = *(0xe7760);
0x00073b52 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00073b54 eors r2, r3 | r2 ^= r3;
0x00073b56 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00073b5a bne 0x73c00 | goto label_10;
| }
0x00073b5c add sp, 0x2c |
0x00073b5e pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00073b62 b.w 0x7daf0 | void (*0x7daf0)() ();
0x00073b66 mov.w r1, 0x20000 | r1 = 0x20000;
0x00073b6a mov r0, r6 | r0 = r6;
0x00073b6c blx 0x9440 | r0 = fcn_00009440 ();
0x00073b70 cmp r0, 0 |
0x00073b72 bge 0x73b24 |
| }
| do {
| label_1:
0x00073b74 blx 0x9628 | r0 = fcn_00009628 ();
0x00073b78 ldr r0, [r0] | r0 = *(r0);
0x00073b7a rsbs r0, r0, 0 | r0 -= ;
| label_4:
0x00073b7c ldr r2, [pc, 0x94] |
0x00073b7e ldr r3, [pc, 0x88] | r3 = *(0x73c0a);
0x00073b80 add r2, pc | r2 = 0xe7798;
0x00073b82 ldr r3, [r2, r3] | r3 = *(0xe7798);
0x00073b84 ldr r2, [r3] | r2 = *(0xe7798);
0x00073b86 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00073b88 eors r2, r3 | r2 ^= r3;
0x00073b8a mov.w r3, 0 | r3 = 0;
0x00073b8c lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00073b8e bne 0x73c00 | goto label_10;
| }
0x00073b90 add sp, 0x2c |
0x00073b92 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x00073b94 strh r0, [r6, 0x1e] | *((r6 + 0x1e)) = r0;
| label_8:
0x00073b96 mov.w r1, 0x40000000 | r1 = 0x40000000;
0x00073b9a mov r0, r7 | r0 = r7;
0x00073b9c blx 0x9440 | fcn_00009440 ();
0x00073b9e mrrc p8, 0, r2, r0, c0 | __asm ("mrrc p8, 0, r2, r0, c0");
0x00073ba2 blt 0x73b74 |
| } while (r0 < r0);
0x00073ba4 cmp r4, 0 |
| if (r4 < 0) {
0x00073ba6 blt 0x73b2c | goto label_0;
| }
| label_9:
0x00073ba8 mov.w r1, 0x10000000 | r1 = 0x10000000;
0x00073bac mov r0, r4 | r0 = r4;
0x00073bae blx 0x9440 | r0 = fcn_00009440 ();
0x00073bb2 cmp r0, 0 |
| if (r0 < 0) {
0x00073bb4 blt 0x73b74 | goto label_1;
| }
0x00073bb6 cmp.w r8, 0 |
| if (r8 >= 0) {
0x00073bba bge 0x73b32 | goto label_2;
| }
0x00073bbc b 0x73b48 | goto label_3;
| label_6:
0x00073bbe ldr r3, [pc, 0x58] |
0x00073bc0 add.w sb, sp, 8 | sb += var_8h;
0x00073bc4 movs r2, 1 | r2 = 1;
0x00073bc6 mov r0, sb | r0 = sb;
0x00073bc8 str r4, [sp, 4] | var_4h = r4;
0x00073bca add r3, pc | r3 = 0xe77e8;
0x00073bcc str r3, [sp] | *(sp) = r3;
0x00073bce movs r3, 0x1a | r3 = 0x1a;
0x00073bd0 mov r1, r3 | r1 = r3;
0x00073bd2 blx 0x9110 | fcn_00009110 ();
0x00073bd6 ldr r1, [pc, 0x44] |
0x00073bd8 mov r0, sb | r0 = sb;
0x00073bda movs r2, 0 | r2 = 0;
0x00073bdc add r1, pc | r1 = 0xe77fe;
0x00073bde bl 0x79fe4 | r0 = fcn_00079fe4 (r0, r1, r2);
0x00073be2 cmp r0, 0 |
| if (r0 < 0) {
0x00073be4 blt 0x73b7c | goto label_4;
| }
0x00073be6 it ne |
| if (r0 == 0) {
0x00073be8 movne r4, -1 | r4 = -1;
| }
0x00073bec cmp r5, 0 |
| if (r5 < 0) {
0x00073bee blt 0x73b20 | goto label_5;
| }
| label_7:
0x00073bf0 mov r0, r5 | r0 = r5;
0x00073bf2 mov.w r1, 0x20000000 | r1 = 0x20000000;
0x00073bf4 str r0, [r0, r4] | *((r0 + r4)) = r0;
0x00073bf6 blx 0x9440 | fcn_00009440 ();
0x00073bf8 stc p8, c2, [r4], -0 | __asm ("stc p8, c2, [r4], -0");
| if (r5 >= 0) {
0x00073bfc bge 0x73b20 | goto label_5;
| }
0x00073bfe b 0x73b74 | goto label_1;
| label_10:
0x00073c00 blx 0x927c | fprintf_chk ()
0x00073c04 ldr r7, [pc, 0x2f8] | r7 = *(0x73f00);
0x00073c06 movs r5, r0 | r5 = r0;
0x00073c08 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00073c0a movs r0, r0 |
0x00073c0c ldr r2, [pc, 0xb8] | r2 = *(0x73cc8);
0x00073c0e movs r1, r0 | r1 = r0;
0x00073c10 ldr r7, [pc, 0x1e0] | r7 = *(0x73df4);
0x00073c12 movs r5, r0 | r5 = r0;
0x00073c14 ldr r7, [pc, 0x110] | r7 = *(0x73d28);
0x00073c16 movs r5, r0 | r5 = r0;
0x00073c18 adds r2, r7, 7 | r2 = r7 + 7;
0x00073c1a movs r3, r0 | r3 = r0;
0x00073c1c adds r4, r7, 7 | r4 = r7 + 7;
0x00073c1e movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73c94 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00073c94 () | void fcn_00073c94 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_0h;
| int32_t var_0h_3;
| int16_t var_8h_3;
| int16_t var_10h;
| int16_t var_1h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_4;
| int32_t var_10h_2;
| int32_t var_14h;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00073c94 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00073c98 mov r6, r2 | r6 = r2;
0x00073c9a ldr r2, [pc, 0x18c] |
0x00073c9c mov r8, r3 | r8 = r3;
0x00073c9e sub sp, 0x2c |
0x00073ca0 ldr r3, [pc, 0x188] | r3 = *(0x73e2c);
0x00073ca2 add r7, sp, 0x10 | r7 += var_10h;
0x00073ca4 add r2, pc | r2 = 0xe7ad2;
0x00073ca6 movs r4, 0 | r4 = 0;
0x00073ca8 mov r5, r0 | r5 = r0;
0x00073caa mov sb, r1 | sb = r1;
0x00073cac ldr r3, [r2, r3] |
0x00073cae ldr r3, [r3] | r3 = *(0xe7ad2);
0x00073cb0 str r3, [r7, 0x14] | var_14h = r3;
0x00073cb2 mov.w r3, 0 | r3 = 0;
0x00073cb6 str r4, [r7] | *(r7) = r4;
0x00073cb8 cmp r1, 0 |
| if (r1 == 0) {
0x00073cba beq.w 0x73dc6 | goto label_3;
| }
0x00073cbe mov r0, r1 | r0 = r1;
0x00073cc0 bl 0x73c50 | r0 = fcn_00073c50 (r0);
0x00073cc4 mov r4, r0 | r4 = r0;
0x00073cc6 cmp r0, 0 |
| if (r0 == 0) {
0x00073cc8 beq 0x73d86 | goto label_4;
| }
0x00073cca mov r0, sb | r0 = sb;
0x00073ccc blx 0x8f38 | r0 = fcn_00008f38 ();
0x00073cd0 add.w r3, r0, 0x30 | r3 = r0 + 0x30;
0x00073cd4 cmp.w r3, 0x400000 |
| if (r3 > 0x400000) {
0x00073cd8 bhi.w 0x73e10 | goto label_5;
| }
0x00073cdc ldr.w ip, [pc, 0x150] |
0x00073ce0 adds r0, 0x37 | r0 += 0x37;
0x00073ce2 bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x00073ce6 sub.w sp, sp, r0 |
0x00073cea add ip, pc | ip = 0xe7b1e;
0x00073cec add.w sl, sp, 0x10 | sl += var_10h;
0x00073cf0 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00073cf4 mov r4, sl | r4 = sl;
0x00073cf6 stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x00073cf8 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00073cfc stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x00073cfe ldm.w ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x00073d02 stm.w r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
0x00073d06 mov r1, sb | r1 = sb;
0x00073d08 add.w r0, sl, 0x2f | r0 = sl + 0x2f;
0x00073d0c blx 0x9050 | fcn_00009050 ();
0x00073d10 mov r3, r6 | r3 = r6;
| if (r6 != 0) {
0x00073d12 cbz r6, 0x73d16 |
0x00073d14 mov r3, r7 | r3 = r7;
| }
0x00073d16 mov r2, r8 | r2 = r8;
0x00073d18 cmp.w r8, 0 |
| if (r8 != 0) {
0x00073d1c beq 0x73d20 |
0x00073d1e adds r2, r7, 4 | r2 += var_4h;
| }
0x00073d20 str r2, [sp] | *(sp) = r2;
0x00073d22 mov r1, r5 | r1 = r5;
0x00073d24 mov r0, sl | r0 = sl;
0x00073d26 movs r2, 1 | r2 = 1;
0x00073d28 bl 0x6c85c | fcn_0006c85c (r0, r1, r2, r3);
0x00073d2a ldc2 p6, c4, [r8, 0x10] | __asm ("ldc2 p6, c4, [r8, 0x10]");
| label_1:
0x00073d2e cmp r4, 0 |
| if (r4 < 0) {
0x00073d30 blt 0x73e0c | goto label_6;
| }
0x00073d32 cmp.w r8, 0 |
| if (r8 != 0) {
0x00073d36 beq 0x73d58 |
0x00073d38 mov.w r1, 0x100 | r1 = 0x100;
0x00073d3c ldr r0, [r7, 4] | r0 = var_4h;
0x00073d3e movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x00073d42 bl 0x6a3dc | r0 = fcn_0006a3dc (r0, r1, r2);
0x00073d46 mov r4, r0 | r4 = r0;
0x00073d48 ldr r0, [r7, 4] | r0 = var_4h;
0x00073d4a bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x00073d4e cmp r4, 0 |
0x00073d50 it ge |
| if (r4 < 0) {
0x00073d52 strge r4, [r8] | *(r8) = r4;
| }
| if (r4 < 0) {
0x00073d56 blt 0x73e0c | goto label_6;
| }
| }
0x00073d58 ldr r0, [r7] | r0 = *(r7);
0x00073d5a mov r4, r6 | r4 = r6;
| if (r6 == 0) {
0x00073d5c cbz r6, 0x73d64 | goto label_0;
| }
0x00073d5e str r0, [r6] | *(r6) = r0;
0x00073d60 movs r0, 0 | r0 = 0;
0x00073d62 mov r4, r0 | r4 = r0;
| do {
| label_0:
0x00073d64 blx 0x8dac | fcn_00008dac ();
0x00073d68 ldr r2, [pc, 0xc8] |
0x00073d6a ldr r3, [pc, 0xc0] | r3 = *(0x73e2e);
0x00073d6c add r2, pc | r2 = 0xe7ba4;
0x00073d6e ldr r3, [r2, r3] | r3 = *(0xe7ba4);
0x00073d70 ldr r2, [r3] | r2 = *(0xe7ba4);
0x00073d72 ldr r3, [r7, 0x14] | r3 = var_14h;
0x00073d74 eors r2, r3 | r2 ^= r3;
0x00073d76 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00073d7a bne 0x73e24 | goto label_7;
| }
0x00073d7c mov r0, r4 | r0 = r4;
0x00073d7e adds r7, 0x1c | r7 += 0x1c;
0x00073d80 mov sp, r7 |
0x00073d82 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00073d86 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00073d8a cmp r0, 6 |
0x00073d8c itt le |
| if (r0 > 6) {
0x00073d8e movle r0, r4 | r0 = r4;
| }
| if (r0 > 6) {
0x00073d90 mvnle r4, 0x15 | r4 = ~0x15;
| }
0x00073d94 ble 0x73d64 |
| } while (r0 <= 6);
0x00073d96 ldr r2, [pc, 0xa0] |
0x00073d98 movs r1, 0x16 | r1 = 0x16;
0x00073d9a ldr r5, [pc, 0xa0] |
0x00073d9c movs r3, 0x3f | r3 = 0x3f;
0x00073d9e ldr r4, [pc, 0xa0] |
0x00073da0 movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00073da4 add r2, pc | r2 = 0xe7be2;
0x00073da6 movs r0, 7 | r0 = 7;
0x00073da8 add r5, pc | r5 = 0xe7bea;
0x00073daa adds r2, 7 | r2 += 7;
0x00073dac add r4, pc | r4 = 0xe7bf2;
0x00073dae str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h_3]");
0x00073db2 strd r4, r5, [sp] | __asm ("strd r4, r5, [sp]");
0x00073db6 bl 0x71448 | r0 = fcn_00071448 ();
0x00073dba subs r4, r0, 0 | r4 = r0 - 0;
0x00073dbc ldr r0, [r7] | r0 = *(r7);
0x00073dbe it ge |
| if (r4 < r0) {
0x00073dc0 mvnge r4, 0x55 | r4 = ~0x55;
| }
0x00073dc4 b 0x73d64 | goto label_0;
| label_3:
0x00073dc6 cmp r6, 0 |
0x00073dc8 ldr r0, [pc, 0x78] |
0x00073dca ldr r3, [pc, 0x7c] |
0x00073dcc mov fp, r7 |
0x00073dce it eq |
| if (r6 != 0) {
0x00073dd0 moveq fp, 0 |
| }
0x00073dd4 cmp.w r8, 0 |
0x00073dd8 add.w sl, r7, 4 | sl += var_4h;
0x00073ddc add.w sb, r7, 8 | sb += var_8h;
0x00073de0 it eq |
| if (r8 != 0) {
0x00073de2 moveq sl, 0 | sl = 0;
| }
0x00073de6 add r0, pc | r0 = 0xe7c2e;
0x00073de8 add r3, pc | r3 = 0xe7c36;
0x00073dea str r1, [r7, 0x10] | var_10h_2 = r1;
0x00073dec strd r0, r3, [r7, 8] | __asm ("strd r0, r3, [var_8h]");
| label_2:
0x00073df0 mov r3, fp | r3 = fp;
0x00073df2 movs r2, 1 | r2 = 1;
0x00073df4 mov r1, r5 | r1 = r5;
0x00073df6 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00073dfa bl 0x6c85c | r0 = fcn_0006c85c (r0, r1, r2, r3);
0x00073dfe adds r3, r0, 2 | r3 = r0 + 2;
0x00073e00 mov r4, r0 | r4 = r0;
| if (r3 != r0) {
0x00073e02 bne 0x73d2e | goto label_1;
| }
0x00073e04 ldr r0, [sb, 4]! | r0 = var_8h_4;
0x00073e08 cmp r0, 0 |
| if (r0 != 0) {
0x00073e0a bne 0x73df0 | goto label_2;
| }
| label_6:
0x00073e0c ldr r0, [r7] | r0 = *(r7);
0x00073e0e b 0x73d64 | goto label_0;
| label_5:
0x00073e10 ldr r1, [pc, 0x38] |
0x00073e12 movs r2, 0x42 | r2 = 0x42;
0x00073e14 ldr r3, [pc, 0x38] |
0x00073e16 ldr r0, [pc, 0x3c] |
0x00073e18 add r1, pc | r1 = 0xe7c68;
0x00073e1a add r3, pc | r3 = 0xe7c6e;
0x00073e1c adds r1, 7 | r1 += 7;
0x00073e1e add r0, pc | r0 = 0xe7c78;
0x00073e20 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x00073e24 blx 0x927c | fprintf_chk ()
0x00073e28 ldr r6, [pc, 0x80] | r6 = *(0x73eac);
0x00073e2a movs r5, r0 | r5 = r0;
0x00073e2c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00073e2e movs r0, r0 |
0x00073e30 adds r6, r4, 5 | r6 = r4 + 5;
0x00073e32 movs r3, r0 | r3 = r0;
0x00073e34 ldr r5, [pc, 0x160] | r5 = *(0x73f98);
0x00073e36 movs r5, r0 | r5 = r0;
0x00073e38 adds r4, r5, 1 | r4 = r5 + 1;
0x00073e3a movs r3, r0 | r3 = r0;
0x00073e3c adds r4, r0, 2 | r4 = r0 + 2;
0x00073e3e movs r3, r0 | r3 = r0;
0x00073e40 adds r0, r0, 4 | r0 += 4;
0x00073e42 movs r3, r0 | r3 = r0;
0x00073e44 adds r2, r3, 0 | r2 = r3 + 0;
0x00073e46 movs r3, r0 | r3 = r0;
0x00073e48 adds r0, r3, 2 | r0 = r3 + 2;
0x00073e4a movs r3, r0 | r3 = r0;
0x00073e4c subs r0, r7, r7 | r0 = r7 - r7;
0x00073e4e movs r3, r0 | r3 = r0;
0x00073e50 adds r2, r7, 1 | r2 += var_1h;
0x00073e52 movs r3, r0 | r3 = r0;
0x00073e54 adds r7, 0xc2 | r7 += 0xc2;
0x00073e56 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73e58 */
| #include <stdint.h>
|
; (fcn) fcn.00073e58 () | void fcn_00073e58 (int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00073e58 strdlt fp, ip, [r5], r0 | __asm ("strdlt fp, ip, [r5], r0");
0x00073e5c ldr r5, [pc, 0x8c] |
0x00073e5e mov.w r6, -1 | r6 = -1;
0x00073e62 ldr r4, [pc, 0x8c] | r4 = *(0x73ef2);
0x00073e64 add r5, pc | r5 = 0xe7d54;
0x00073e66 ldr r4, [r5, r4] |
0x00073e68 ldr r4, [r4] | r4 = *(0xe7d54);
0x00073e6a str r4, [sp, 0xc] | var_ch = r4;
0x00073e6c mov.w r4, 0 | r4 = 0;
0x00073e6e lsls r0, r0, 0x10 | r0 <<= 0x10;
0x00073e70 movs r4, 0 | r4 = 0;
0x00073e72 strd r4, r6, [sp, 4] | __asm ("strd r4, r6, [sp, 4]");
0x00073e76 cmp r3, 0 |
| if (r3 == 0) {
0x00073e78 beq 0x73ee0 | goto label_1;
| }
0x00073e7a mov r4, r0 | r4 = r0;
0x00073e7c mov ip, r1 |
0x00073e7e mov r5, r2 | r5 = r2;
0x00073e80 mov r6, r3 | r6 = r3;
| if (r2 != 0) {
0x00073e82 cbz r2, 0x73e86 |
0x00073e84 add r2, sp, 4 | r2 += var_4h;
| }
0x00073e86 add r7, sp, 8 | r7 += var_8h;
0x00073e88 mov r0, r4 | r0 = r4;
0x00073e8a mov r1, ip | r1 = ip;
0x00073e8c mov r3, r7 | r3 = r7;
0x00073e8e bl 0x73c94 | fcn_00073c94 (r0, r1, r2, r3);
0x00073e90 vcge.f32 d1, d1, d4 | __asm ("vcge.f32 d1, d1, d4");
| if (r2 < 0) {
0x00073e94 blt 0x73eb0 | goto label_0;
| }
0x00073e96 ldr r1, [pc, 0x5c] |
0x00073e98 mov r0, r7 | r0 = r7;
0x00073e9a add r1, pc | r1 = 0xe7d94;
0x00073e9c bl 0x6a5e4 | r0 = fcn_0006a5e4 (r0, r1, r2);
| if (r0 == 0) {
0x00073ea0 cbz r0, 0x73ed6 | goto label_2;
| }
| if (r5 != 0) {
0x00073ea2 cbz r5, 0x73eac |
0x00073ea4 ldr r3, [sp, 4] | r3 = var_4h;
0x00073ea6 movs r2, 0 | r2 = 0;
0x00073ea8 str r2, [sp, 4] | var_4h = r2;
0x00073eaa str r3, [r5] | *(r5) = r3;
| }
0x00073eac movs r4, 0 | r4 = 0;
0x00073eae str r0, [r6] | *(r6) = r0;
| do {
| label_0:
0x00073eb0 ldr r0, [sp, 8] | r0 = var_8h;
0x00073eb2 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x00073eb6 ldr r0, [sp, 4] | r0 = var_4h;
0x00073eb8 blx 0x8dac | fcn_00008dac ();
0x00073eba invalid |
0x00073ebc ldr r2, [pc, 0x38] |
0x00073ebe ldr r3, [pc, 0x30] | r3 = *(0x73ef2);
0x00073ec0 add r2, pc | r2 = 0xe7dbc;
0x00073ec2 ldr r3, [r2, r3] | r3 = *(0xe7dbc);
0x00073ec4 ldr r2, [r3] | r2 = *(0xe7dbc);
0x00073ec6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00073ec8 eors r2, r3 | r2 ^= r3;
0x00073eca mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00073ece bne 0x73ee8 | goto label_3;
| }
0x00073ed0 mov r0, r4 | r0 = r4;
0x00073ed2 add sp, 0x14 |
0x00073ed4 pop {r4, r5, r6, r7, pc} |
| label_2:
0x00073ed6 blx 0x9628 | r0 = fcn_00009628 ();
0x00073eda ldr r4, [r0] | r4 = *(r0);
0x00073edc rsbs r4, r4, 0 | r4 -= ;
0x00073ede b 0x73eb0 |
| } while (1);
| label_1:
0x00073ee0 bl 0x73c94 | r0 = fcn_00073c94 (r0, r1, r2, r3);
0x00073ee4 mov r4, r0 | r4 = r0;
0x00073ee6 b 0x73eb0 | goto label_0;
| label_3:
0x00073ee8 blx 0x927c | fprintf_chk ()
0x00073eec ldr r4, [pc, 0x180] | r4 = *(0x74070);
0x00073eee movs r5, r0 | r5 = r0;
0x00073ef0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00073ef2 movs r0, r0 |
0x00073ef4 str r2, [r6, 0x4c] | *((r6 + 0x4c)) = r2;
0x00073ef6 movs r1, r0 | r1 = r0;
0x00073ef8 ldr r4, [pc, 0x10] | r4 = *(0x73f0c);
0x00073efa movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73efc */
| #include <stdint.h>
|
; (fcn) fcn.00073efc () | void fcn_00073efc (int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_10h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r2 = arg3;
0x00073efc invalid |
0x00073f00 push {r4, r5, lr} |
0x00073f02 mov r5, r2 | r5 = r2;
0x00073f04 ldr r2, [pc, 0x60] |
0x00073f06 sub sp, 0x14 |
0x00073f08 add ip, pc |
0x00073f0a movs r4, 0 | r4 = 0;
0x00073f0c add r3, sp, 4 | r3 += var_4h;
0x00073f0e ldr.w r2, [ip, r2] | r2 = *((ip + r2));
0x00073f12 ldr r2, [r2] | r2 = *(0x73f68);
0x00073f14 str r2, [sp, 0xc] | var_ch = r2;
0x00073f16 mov.w r2, 0 | r2 = 0;
0x00073f1a add r2, sp, 8 | r2 += var_8h;
0x00073f1c strd r4, r4, [sp, 4] | __asm ("strd r4, r4, [var_4h]");
0x00073f20 bl 0x73e58 | r0 = fcn_00073e58 (r0, r1, r2, r3);
0x00073f24 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00073f26 blt 0x73f34 |
0x00073f28 ldrd r0, r1, [sp, 4] | __asm ("ldrd r0, r1, [var_4h]");
0x00073f2c mov r2, r5 | r2 = r5;
0x00073f2e bl 0x68644 | r0 = fcn_00068644 (r0);
0x00073f32 mov r4, r0 | r4 = r0;
| }
0x00073f34 ldr r0, [sp, 8] | r0 = var_8h;
0x00073f36 blx 0x8dac | fcn_00008dac ();
0x00073f3a movs r3, 0 | r3 = 0;
0x00073f3c ldr r0, [sp, 4] | r0 = var_4h;
0x00073f3e str r3, [sp, 8] | var_8h = r3;
0x00073f40 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x00073f44 ldr r2, [pc, 0x24] |
0x00073f46 ldr r3, [pc, 0x20] | r3 = *(0x73f6a);
0x00073f48 add r2, pc | r2 = 0xe7eb8;
0x00073f4a ldr r3, [r2, r3] | r3 = *(0xe7eb8);
0x00073f4c ldr r2, [r3] | r2 = *(0xe7eb8);
0x00073f4e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00073f50 eors r2, r3 | r2 ^= r3;
0x00073f52 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00073f56 bne 0x73f5e |
0x00073f58 mov r0, r4 | r0 = r4;
0x00073f5a add sp, 0x14 |
0x00073f5c pop {r4, r5, pc} |
| }
0x00073f5e blx 0x927c | fprintf_chk ()
0x00073f62 nop |
0x00073f64 ldr r3, [pc, 0x2f0] | r3 = *(0x74258);
0x00073f66 movs r5, r0 | r5 = r0;
0x00073f68 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00073f6a movs r0, r0 |
0x00073f6c ldr r3, [pc, 0x1f0] | r3 = *(0x74160);
0x00073f6e movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73f70 */
| #include <stdint.h>
|
; (fcn) fcn.00073f70 () | void fcn_00073f70 () {
| int16_t var_1ch;
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_4h_3;
| int16_t var_10h;
| int16_t var_4h_2;
0x00073f70 invalid |
0x00073f74 push {r0, r1, r2, r3} |
0x00073f76 movs r1, 0 | r1 = 0;
0x00073f78 ldr r3, [pc, 0x44] |
0x00073f7a add ip, pc |
0x00073f7c push {lr} |
0x00073f7e sub sp, 0xc |
0x00073f80 add r2, sp, 0x10 | r2 += var_10h;
0x00073f82 ldr.w r3, [ip, r3] | r3 = *((ip + r3));
0x00073f86 ldr r0, [r2], 4 | r0 = *(r2);
| r2 += 4;
0x00073f88 lsrs r4, r0, 0xc | r4 = r0 >> 0xc;
0x00073f8a ldr r3, [r3] | r3 = *(0x73fc0);
0x00073f8c str r3, [sp, 4] | var_4h = r3;
0x00073f8e mov.w r3, 0 | r3 = 0;
0x00073f92 str r2, [sp] | *(sp) = r2;
0x00073f94 bl 0x73efc | fcn_00073efc (r0);
0x00073f98 ldr r2, [pc, 0x28] |
0x00073f9a ldr r3, [pc, 0x24] | r3 = *(0x73fc2);
0x00073f9c add r2, pc | r2 = 0xe7f64;
0x00073f9e ldr r3, [r2, r3] | r3 = *(0xe7f64);
0x00073fa0 ldr r2, [r3] | r2 = *(0xe7f64);
0x00073fa2 ldr r3, [sp, 4] | r3 = var_4h;
0x00073fa4 eors r2, r3 | r2 ^= r3;
0x00073fa6 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00073faa bne 0x73fb6 |
0x00073fac add sp, 0xc |
0x00073fae ldr lr, [sp], 4 |
0x00073fb2 add sp, 0x10 |
0x00073fb4 bx lr | return;
| }
0x00073fb6 blx 0x927c | fprintf_chk ()
0x00073fba nop |
0x00073fbc ldr r3, [pc, 0x128] | r3 = *(0x740e8);
0x00073fbe movs r5, r0 | r5 = r0;
0x00073fc0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00073fc2 movs r0, r0 |
0x00073fc4 ldr r3, [pc, 0xa0] | r3 = *(0x74068);
0x00073fc6 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x73fc8 */
| #include <stdint.h>
|
; (fcn) fcn.00073fc8 () | void fcn_00073fc8 (int16_t arg1, int16_t arg2) {
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00073fc8 blmi 0xb06874 | __asm ("blmi aav.0x00054af2");
0x00073fcc push.w {r4, r5, r6, r7, r8, lr} |
0x00073fd0 sub sp, 0x10 |
0x00073fd2 add r2, pc | r2 += pc;
0x00073fd4 ldr r7, [r1] | r7 = *(r1);
0x00073fd6 mov r4, r0 | r4 = r0;
0x00073fd8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00073fda ldr r3, [r3] | r3 = *(r3);
0x00073fdc str r3, [sp, 0xc] | var_ch = r3;
0x00073fde mov.w r3, 0 | r3 = 0;
0x00073fe2 bics r3, r7, 0x70000000 | __asm ("bics r3, r7, aav.0x000000ff");
| if (? != ?) {
0x00073fe6 bne 0x74034 | goto label_0;
| }
0x00073fe8 ldr r2, [pc, 0x8c] |
0x00073fea mov r6, r1 | r6 = r1;
0x00073fec ldr r3, [pc, 0x8c] |
0x00073fee mov r8, sp | r8 = sp;
0x00073ff0 mov r5, r8 | r5 = r8;
0x00073ff2 add r2, pc | r2 = 0xe806e;
0x00073ff4 ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x00073ff6 add r3, pc | r3 = 0xe8076;
0x00073ff8 stm.w r8, {r0, r1, r2} | *(r8) = r0;
| *((r8 + 4)) = r1;
| *((r8 + 8)) = r2;
0x00073ffc b 0x74004 |
| while (r0 == 0) {
0x00073ffe ldr r3, [r5, 4]! | r3 = *((r5 += 4));
| if (r3 == 0) {
0x00074002 cbz r3, 0x74038 | goto label_3;
| }
0x00074004 mov r1, r3 | r1 = r3;
0x00074006 mov r0, r4 | r0 = r4;
0x00074008 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x0007400c cmp r0, 0 |
0x0007400e beq 0x73ffe |
| }
0x00074010 and r7, r7, 0x70000000 | r7 &= 0x70000000;
0x00074014 orr r7, r7, 2 | r7 |= 2;
0x00074016 lsls r2, r0, 0x1c | r2 = r0 << 0x1c;
0x00074018 str r7, [r6] | *(r6) = r7;
| do {
| label_2:
0x0007401a ldr r2, [pc, 0x64] |
0x0007401c ldr r3, [pc, 0x54] | r3 = *(0x74074);
0x0007401e add r2, pc | r2 = 0xe80a4;
0x00074020 ldr r3, [r2, r3] | r3 = *(0xe80a4);
0x00074022 ldr r2, [r3] | r2 = *(0xe80a4);
0x00074024 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00074026 eors r2, r3 | r2 ^= r3;
0x00074028 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007402c bne 0x7406c | goto label_4;
| }
0x0007402e add sp, 0x10 |
0x00074030 pop.w {r4, r5, r6, r7, r8, pc} |
| label_0:
0x00074034 mov r0, r4 | r0 = r4;
0x00074036 b 0x7401a |
| } while (1);
| label_3:
0x00074038 ldr r2, [pc, 0x48] |
0x0007403a mov r5, r8 | r5 = r8;
0x0007403c ldr r3, [pc, 0x48] |
0x0007403e add r2, pc | r2 = 0xe80c6;
0x00074040 adds r2, 0xc | r2 += 0xc;
0x00074042 add r3, pc | r3 = 0xe80ce;
0x00074044 ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x00074046 stm.w r8, {r0, r1, r2} | *(r8) = r0;
| *((r8 + 4)) = r1;
| *((r8 + 8)) = r2;
0x0007404a b 0x74054 | goto label_5;
| label_1:
0x0007404c ldr r3, [r5, 4]! | r3 = *((r5 += 4));
0x00074050 cmp r3, 0 |
| if (r3 == 0) {
0x00074052 beq 0x74034 | goto label_0;
| }
| label_5:
0x00074054 mov r1, r3 | r1 = r3;
0x00074056 mov r0, r4 | r0 = r4;
0x00074058 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x0007405c cmp r0, 0 |
| if (r0 == 0) {
0x0007405e beq 0x7404c | goto label_1;
| }
0x00074060 and r7, r7, 0x70000000 | r7 &= 0x70000000;
0x00074064 orr r7, r7, 8 | r7 |= 8;
0x00074068 str r7, [r6] | *(r6) = r7;
0x0007406a b 0x7401a | goto label_2;
| label_4:
0x0007406c blx 0x927c | fprintf_chk ()
0x00074070 ldr r2, [pc, 0x3c8] | r2 = *(0x7443c);
0x00074072 movs r5, r0 | r5 = r0;
0x00074074 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074076 movs r0, r0 |
0x00074078 strh r2, [r6, r4] | *((r6 + r4)) = r2;
0x0007407a movs r5, r0 | r5 = r0;
0x0007407c subs r6, r1, r3 | r6 = r1 - r3;
0x0007407e movs r3, r0 | r3 = r0;
0x00074080 ldr r2, [pc, 0x298] | r2 = *(0x7431c);
0x00074082 movs r5, r0 | r5 = r0;
0x00074084 strh r6, [r4, r3] | *((r4 + r3)) = r6;
0x00074086 movs r5, r0 | r5 = r0;
0x00074088 subs r6, r0, r2 | r6 = r0 - r2;
0x0007408a movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7408c */
| #include <stdint.h>
|
; (fcn) fcn.0007408c () | void fcn_0007408c (int16_t arg1) {
| int16_t var_0h;
| int16_t var_1ch;
| r0 = arg1;
0x0007408c blmi 0x94691c | __asm ("blmi aav.0x00054a30");
0x00074090 push {r4, r5, r6, lr} |
0x00074092 sub sp, 0x20 |
0x00074094 add r2, pc | r2 += pc;
0x00074096 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00074098 ldr r3, [r3] | r3 = *(r3);
0x0007409a str r3, [sp, 0x1c] | var_1ch = r3;
0x0007409c mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x000740a0 cbz r0, 0x7410c | goto label_1;
| }
0x000740a2 ldr r4, [pc, 0x7c] |
0x000740a4 mov r5, r0 | r5 = r0;
0x000740a6 mov ip, sp |
0x000740a8 mov r6, sp | r6 = sp;
0x000740aa add r4, pc | r4 = 0xe81d0;
0x000740ac add.w lr, r4, 0x18 | lr = r4 + 0x18;
0x000740b0 ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000740b4 stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000740b8 ldm.w lr, {r0, r1, r2} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
0x000740bc stm.w ip, {r0, r1, r2} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
0x000740c0 mov r1, r5 | r1 = r5;
0x000740c2 mov r0, r6 | r0 = r6;
0x000740c4 bl 0x7afbc | r0 = fcn_0007afbc (r0, r1);
| if (r0 == 0) {
0x000740c8 cbz r0, 0x740e4 | goto label_2;
| }
0x000740ca movs r0, 1 | r0 = 1;
| do {
| label_0:
0x000740cc ldr r2, [pc, 0x54] |
0x000740ce ldr r3, [pc, 0x4c] | r3 = *(0x7411e);
0x000740d0 add r2, pc | r2 = 0xe81f8;
0x000740d2 ldr r3, [r2, r3] | r3 = *(0xe81f8);
0x000740d4 ldr r2, [r3] | r2 = *(0xe81f8);
0x000740d6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000740d8 eors r2, r3 | r2 ^= r3;
0x000740da mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000740de bne 0x74112 | goto label_3;
| }
0x000740e0 add sp, 0x20 |
0x000740e2 pop {r4, r5, r6, pc} |
| label_2:
0x000740e4 add.w ip, r4, 0x34 |
0x000740e8 mov r4, r6 | r4 = r6;
0x000740ea ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000740ee stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x000740f0 ldm.w ip, {r0, r1, r2} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
0x000740f4 stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x000740f8 mov r1, r5 | r1 = r5;
0x000740fa mov r0, r6 | r0 = r6;
0x000740fc bl 0x7afbc | r0 = fcn_0007afbc (r0, r1);
0x00074100 cmp r0, 0 |
0x00074102 ite eq |
| if (r0 != 0) {
0x00074104 mvneq r0, 0x15 | r0 = ~0x15;
| }
| if (r0 != 0) {
0x00074108 movs r0, 0 | r0 = 0;
| }
0x0007410a b 0x740cc |
| } while (1);
| label_1:
0x0007410c mvn r0, 0x15 | r0 = ~0x15;
0x00074110 b 0x740cc | goto label_0;
| label_3:
0x00074112 blx 0x927c | fprintf_chk ()
0x00074116 nop |
0x00074118 ldr r2, [pc, 0xc0] | r2 = *(0x741dc);
0x0007411a movs r5, r0 | r5 = r0;
0x0007411c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007411e movs r0, r0 |
0x00074120 strh r2, [r7, r1] | *((r7 + r1)) = r2;
0x00074122 movs r5, r0 | r5 = r0;
0x00074124 ldr r1, [pc, 0x3d0] | r1 = *(0x744f8);
0x00074126 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74128 */
| #include <stdint.h>
|
; (fcn) fcn.00074128 () | void fcn_00074128 (int16_t arg_264h, int16_t arg_268h, int16_t arg1, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch_2;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_68h;
| r0 = arg1;
| r2 = arg3;
| r3 = arg4;
0x00074128 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0007412c mov r6, r0 | r6 = r0;
0x0007412e vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x00074132 sub sp, 0x34 |
0x00074134 ldr r1, [sp, 0x68] | r1 = var_68h;
0x00074136 ldr r0, [pc, 0x258] |
0x00074138 str r1, [sp, 0x1c] | var_1ch_2 = r1;
0x0007413a ldr r1, [pc, 0x258] | r1 = *(0x74396);
0x0007413c add r0, pc | r0 = 0xe84d2;
0x0007413e ldr r1, [r0, r1] |
0x00074140 ldr r1, [r1] | r1 = *(0xe84d2);
0x00074142 str r1, [sp, 0x2c] | var_2ch = r1;
0x00074144 mov.w r1, 0 | r1 = 0;
0x00074148 cmp r6, 0 |
| if (r6 == 0) {
0x0007414a beq.w 0x7434e | goto label_6;
| }
0x0007414e sub.w r1, r2, 0x3e8 | r1 = r2 - 0x3e8;
0x00074152 orrs r1, r3 | r1 |= r3;
| if (r1 == r3) {
0x00074154 beq.w 0x7433e | goto label_7;
| }
0x00074158 sub.w r2, r2, 0x400 | r2 -= 0x400;
0x0007415c orrs r2, r3 | r2 |= r3;
| if (r2 != r3) {
0x0007415e beq 0x74174 |
0x00074160 ldr r1, [pc, 0x234] |
0x00074162 movs r2, 0xb5 | r2 = 0xb5;
0x00074164 ldr r3, [pc, 0x234] |
0x00074166 ldr r0, [pc, 0x238] |
0x00074168 add r1, pc | r1 = 0xe8504;
0x0007416a add r3, pc | r3 = 0xe850a;
0x0007416c adds r1, 7 | r1 += 7;
0x0007416e add r0, pc | r0 = 0xe8514;
0x00074170 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| }
0x00074174 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00074176 cmp r3, 0 |
| if (r3 == 0) {
0x00074178 beq.w 0x74362 | goto label_8;
| }
0x0007417c ldr r3, [pc, 0x224] |
0x0007417e add r3, pc | r3 = 0xe8526;
0x00074180 str r3, [sp, 0x18] | var_18h = r3;
| label_4:
0x00074182 ldr r3, [pc, 0x224] |
0x00074184 movs r4, 0 | r4 = 0;
0x00074186 vldr d9, [pc, 0x200] | __asm ("vldr d9, aav.0x000000ff");
0x0007418a mov r5, r4 | r5 = r4;
0x0007418c mov fp, r4 |
0x0007418e add r3, pc | r3 = 0xe853c;
0x00074190 str r3, [sp, 0x14] | var_14h = r3;
0x00074192 blx 0x9628 | fcn_00009628 ();
0x00074196 ldr r3, [pc, 0x214] |
0x00074198 str r0, [sp, 8] | var_8h = r0;
0x0007419a add r3, pc | r3 = 0xe854c;
0x0007419c str r3, [sp, 0xc] | var_ch = r3;
0x0007419e add r3, sp, 0x24 | r3 += var_24h;
0x000741a0 str r3, [sp, 0x10] | var_10h = r3;
| label_0:
0x000741a2 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000741a4 mov r0, r6 | r0 = r6;
0x000741a6 blx 0x9428 | r0 = fcn_00009428 ();
0x000741aa add.w sl, r6, r0 | sl = r6 + r0;
0x000741ae ldr r6, [sp, 8] | r6 = var_8h;
0x000741b0 movs r7, 0 | r7 = 0;
0x000741b2 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000741b4 movs r2, 0xa | r2 = 0xa;
0x000741b6 mov r0, sl | r0 = sl;
0x000741b8 str r7, [r6] | *(r6) = r7;
0x000741ba blx 0x8d90 | free (r0);
0x000741bc stcl p6, c4, [sl, 0x200]! | __asm ("stcl p6, c4, aav.0x000000ff!");
0x000741c0 ldr r0, [r6] | r0 = *(r6);
0x000741c2 mov sb, r1 | sb = r1;
0x000741c4 cmp r0, r7 |
| if (r0 > r7) {
0x000741c6 bgt.w 0x7434a | goto label_9;
| }
0x000741ca ldr r6, [sp, 0x24] | r6 = var_24h;
0x000741cc cmp r6, sl |
| if (r6 == sl) {
0x000741ce beq.w 0x742d8 | goto label_10;
| }
0x000741d2 ldrb.w r3, [sl] | r3 = *(sl);
0x000741d6 cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x000741d8 beq 0x742d2 | goto label_11;
| }
0x000741da ldrb r3, [r6] | r3 = *(r6);
0x000741dc cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x000741de beq.w 0x742fa | goto label_12;
| }
0x000741e2 vmov.i64 d8, 0 | __asm ("vmov.i64 d8, 0");
| label_3:
0x000741e6 mov r0, r6 | r0 = r6;
0x000741e8 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000741ea blx 0x9428 | fcn_00009428 ();
0x000741ee cmp r4, 8 |
0x000741f0 add r6, r0 | r6 += r0;
0x000741f2 str r6, [sp, 0x24] | var_24h = r6;
| if (r4 == 8) {
0x000741f4 beq 0x742d8 | goto label_10;
| }
0x000741f6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000741f8 add.w sl, r3, r4, lsl 4 | sl = r3 + (r4 << 4);
0x000741fc b 0x74208 |
| while (r0 == 0) {
0x000741fe adds r4, 1 | r4++;
0x00074200 add.w sl, sl, 0x10 | sl += 0x10;
0x00074202 lsrs r0, r2, 8 | r0 = r2 >> 8;
0x00074204 cmp r4, 8 |
| if (r4 == 8) {
0x00074206 beq 0x742d8 | goto label_10;
| }
0x00074208 ldr.w r7, [sl] | r7 = *(sl);
0x0007420c mov r0, r6 | r0 = r6;
0x0007420e mov r1, r7 | r1 = r7;
0x00074210 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x00074214 cmp r0, 0 |
0x00074216 beq 0x741fe |
| }
0x00074218 vcmpe.f64 d8, 0 | __asm ("vcmpe.f64 d8, 0");
0x0007421c vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00074220 ite gt |
| if (r0 <= 0) {
0x00074222 movgt r1, 1 | r1 = 1;
| }
| if (r0 > 0) {
0x00074224 movle r1, 0 | r1 = 0;
| }
0x00074226 adds.w r1, r1, r8 | r1 += r8;
0x0007422a ldrd r3, r2, [sl, 8] | __asm ("ldrd r3, r2, [sl, 8]");
0x0007422e adc r0, sb, 0 | __asm ("adc r0, sb, 0");
0x00074232 mov.w sl, 0 | sl = 0;
0x00074236 cmp r0, 0 |
| if (r0 != 0) {
0x00074238 bne 0x742b2 | goto label_13;
| }
0x0007423a mov r0, r2 | r0 = r2;
0x0007423c mov ip, r1 |
0x0007423e cmp r2, 0 |
| if (r2 != 0) {
0x00074240 bne 0x742b6 | goto label_14;
| }
| label_1:
0x00074242 cmp.w sl, 0 |
| if (sl != 0) {
0x00074246 bne 0x742d2 | goto label_11;
| }
| label_2:
0x00074248 mov r0, r3 | r0 = r3;
0x0007424a mov r1, r2 | r1 = r2;
0x0007424c str r3, [sp, 4] | var_4h = r3;
0x0007424e str r2, [sp] | *(sp) = r2;
0x00074250 bl 0x80f6c | r0 = fcn_00080f6c (r0, r1, r2);
0x00074254 vmov d16, r0, r1 | __asm ("vmov d16, r0, r1");
0x00074258 vmul.f64 d16, d16, d8 | __asm ("vmul.f64 d16, d16, d8");
0x0007425a lsrs r0, r1, 0xe | r0 = r1 >> 0xe;
0x0007425c vmov r0, r1, d16 | __asm ("vmov r0, r1, d16");
0x0007425e lsrs r0, r6, 0xc | r0 = r6 >> 0xc;
0x00074260 bl 0x81018 | fcn_00081018 (r0, r1);
0x00074264 ldr r3, [sp, 4] | r3 = var_4h;
0x00074266 ldr r2, [sp] | r2 = *(sp);
0x00074268 mul sb, r3, sb | sb = r3 * sb;
0x0007426c mla sb, r8, r2, sb | __asm ("mla sb, r8, r2, sb");
0x00074270 umull r3, r8, r3, r8 | r3:r8 = r3 * r8;
0x00074274 adds r3, r0, r3 | r3 = r0 + r3;
0x00074276 add r8, sb | r8 += sb;
0x00074278 adc.w r8, r8, r1 | __asm ("adc.w r8, r8, r1");
0x0007427c adds r2, r5, r3 | r2 = r5 + r3;
0x0007427e adcs.w r2, fp, r8 | __asm ("adcs.w r2, fp, r8");
0x00074282 it hs |
| if (r2 < r5) {
0x00074284 movhs sl, 1 | sl = 1;
| }
0x00074288 cmp.w sl, 0 |
| if (sl != 0) {
0x0007428c bne 0x742d2 | goto label_11;
| }
0x0007428e adds r3, r5, r3 | r3 = r5 + r3;
0x00074290 mov r0, r7 | r0 = r7;
0x00074292 mov r5, r3 | r5 = r3;
0x00074294 adc.w fp, fp, r8 | __asm ("adc.w fp, fp, r8");
0x00074298 blx 0x8f38 | fcn_00008f38 ();
0x0007429c ldrb r3, [r6, r0] | r3 = *((r6 + r0));
0x0007429e adds r4, 1 | r4++;
0x000742a0 add r6, r0 | r6 += r0;
0x000742a2 cmp r3, 0 |
| if (r3 != 0) {
0x000742a4 bne.w 0x741a2 | goto label_0;
| }
0x000742a8 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x000742aa mov r0, sl | r0 = sl;
0x000742ac strd r5, fp, [r3] | __asm ("strd r5, fp, [r3]");
0x000742b0 b 0x742dc | goto label_5;
| if (r2 != 0) {
| label_13:
0x000742b2 cbnz r2, 0x742c8 | goto label_15;
| }
0x000742b4 mov ip, r3 |
| label_14:
0x000742b6 umull r0, ip, ip, r0 | r0:ip = ip * r0;
0x000742ba umull lr, r1, r1, r3 | lr:r1 = r1 * r3;
0x000742be adds r1, r0, r1 | r1 = r0 + r1;
0x000742c0 adc r1, ip, 0 | __asm ("adc r1, ip, 0");
0x000742c4 cmp r1, 0 |
| if (r1 == 0) {
0x000742c6 beq 0x74242 | goto label_1;
| }
| label_15:
0x000742c8 mov.w sl, 1 | sl = 1;
0x000742cc cmp.w sl, 0 |
| if (sl == 0) {
0x000742d0 beq 0x74248 | goto label_2;
| }
| label_11:
0x000742d2 mvn r0, 0x21 | r0 = ~0x21;
0x000742d6 b 0x742dc | goto label_5;
| label_10:
0x000742d8 mvn r0, 0x15 | r0 = ~0x15;
| label_5:
0x000742dc ldr r2, [pc, 0xd0] |
0x000742de ldr r3, [pc, 0xb4] | r3 = *(0x74396);
0x000742e0 add r2, pc | r2 = 0xe8694;
0x000742e2 ldr r3, [r2, r3] | r3 = *(0xe8694);
0x000742e4 ldr r2, [r3] | r2 = *(0xe8694);
0x000742e6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000742e8 eors r2, r3 | r2 ^= r3;
0x000742ea mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000742ee bne 0x7437e | goto label_16;
| }
0x000742f0 add sp, 0x34 |
0x000742f2 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x000742f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x000742fa adds r0, r6, 1 | r0 = r6 + 1;
0x000742fc str r0, [sp, 0x24] | var_24h = r0;
0x000742fe ldrb r3, [r6, 1] | r3 = *((r6 + 1));
0x00074300 subs r3, 0x30 | r3 -= 0x30;
0x00074302 cmp r3, 9 |
| if (r3 >= 9) {
0x00074304 bls 0x7430e |
0x00074306 vmov.i64 d8, 0 | __asm ("vmov.i64 d8, 0");
0x0007430a mov r6, r0 | r6 = r0;
0x0007430c b 0x741e6 | goto label_3;
| }
0x0007430e movs r2, 0xa | r2 = 0xa;
0x00074310 add r1, sp, 0x28 | r1 += var_28h;
0x00074312 blx 0x8d90 | free (r0);
0x00074316 ldr r3, [sp, 8] | r3 = var_8h;
0x00074318 ldr r3, [r3] | r3 = *(r3);
0x0007431a cmp r3, 0 |
| if (r3 > 0) {
0x0007431c bgt 0x7437a | goto label_17;
| }
0x0007431e bl 0x80f6c | fcn_00080f6c (r0, r1, r2);
0x00074322 ldrd r3, r6, [sp, 0x24] | __asm ("ldrd r3, r6, [var_24h]");
0x00074326 vmov d8, r0, r1 | __asm ("vmov d8, r0, r1");
0x0007432a cmp r6, r3 |
| if (r6 < r3) {
0x0007432c bls 0x74376 | goto label_18;
| }
0x0007432e subs r3, r6, r3 | r3 = r6 - r3;
| do {
0x00074330 adds r7, 1 | r7++;
0x00074332 vmul.f64 d8, d8, d9 | __asm ("vmul.f64 d8, d8, d9");
0x00074336 cmp r3, r7 |
0x00074338 bne 0x74330 |
| } while (r3 != r7);
0x0007433a str r6, [sp, 0x24] | var_24h = r6;
0x0007433c b 0x741e6 | goto label_3;
| label_7:
0x0007433e ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
| if (r3 != 0) {
0x00074340 cbz r3, 0x74362 |
0x00074342 ldr r3, [pc, 0x70] |
0x00074344 add r3, pc | r3 = 0xe86fe;
0x00074346 str r3, [sp, 0x18] | var_18h = r3;
0x00074348 b 0x74182 | goto label_4;
| label_9:
0x0007434a rsbs r0, r0, 0 | r0 -= ;
0x0007434c b 0x742dc | goto label_5;
| label_6:
0x0007434e ldr r1, [pc, 0x68] |
0x00074350 movs r2, 0xb4 | r2 = 0xb4;
0x00074352 ldr r3, [pc, 0x68] |
0x00074354 ldr r0, [pc, 0x68] |
0x00074356 add r1, pc | r1 = 0xe8714;
0x00074358 add r3, pc | r3 = 0xe871a;
0x0007435a adds r1, 7 | r1 += 7;
0x0007435c add r0, pc | r0 = 0xe8720;
0x0007435e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| }
| label_8:
0x00074362 ldr r1, [pc, 0x60] |
0x00074364 movs r2, 0xb6 | r2 = 0xb6;
0x00074366 ldr r3, [pc, 0x60] |
0x00074368 ldr r0, [pc, 0x60] |
0x0007436a add r1, pc | r1 = 0xe8734;
0x0007436c add r3, pc | r3 = 0xe873a;
0x0007436e adds r1, 7 | r1 += 7;
0x00074370 add r0, pc | r0 = 0xe8740;
0x00074372 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_18:
0x00074376 mov r6, r3 | r6 = r3;
0x00074378 b 0x741e6 | goto label_3;
| label_17:
0x0007437a rsbs r0, r3, 0 | r0 = r3 - ;
0x0007437c b 0x742dc | goto label_5;
| label_16:
0x0007437e blx 0x927c | fprintf_chk ()
0x00074382 nop |
0x00074384 nop.w |
0x00074388 ldr r1, [sp, 0x268] | r1 = *(arg_268h);
0x0007438a ldr r1, [sp, 0x264] | r1 = *(arg_264h);
0x0007438c ldr r1, [sp, 0x264] | r1 = *(arg_264h);
0x0007438e subs r7, 0xb9 | r7 -= 0xb9;
0x00074390 ldr r1, [pc, 0x220] | r1 = *(0x745b4);
0x00074392 movs r5, r0 | r5 = r0;
0x00074394 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074396 movs r0, r0 |
0x00074398 adds r4, r4, r5 | r4 += r5;
0x0007439a movs r3, r0 | r3 = r0;
0x0007439c adds r2, r5, r7 | r2 = r5 + r7;
0x0007439e movs r3, r0 | r3 = r0;
0x000743a0 adds r6, r7, r5 | r6 = r7 + r5;
0x000743a2 movs r3, r0 | r3 = r0;
0x000743a4 subs r4, 0x1e | r4 -= 0x1e;
0x000743a6 movs r5, r0 | r5 = r0;
0x000743a8 movs r7, 0xae | r7 = 0xae;
0x000743aa movs r1, r0 | r1 = r0;
0x000743ac movs r7, 0xa2 | r7 = 0xa2;
0x000743ae movs r1, r0 | r1 = r0;
0x000743b0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x743d0 */
| #include <stdint.h>
|
; (fcn) fcn.000743d0 () | void fcn_000743d0 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_0h;
| int16_t var_8h;
| int32_t var_8h_3;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000743d0 invalid |
0x000743d4 push {r4, r5, lr} |
0x000743d6 mov r4, r0 | r4 = r0;
0x000743d8 mov r0, r1 | r0 = r1;
0x000743da ldr r1, [pc, 0x68] |
0x000743dc sub sp, 0x1c |
0x000743de add ip, pc |
0x000743e0 add r3, sp, 8 | r3 += var_8h;
0x000743e2 mov r5, r2 | r5 = r2;
0x000743e4 str r3, [sp] | *(sp) = r3;
0x000743e6 mov.w r2, 0x400 | r2 = 0x400;
0x000743ea ldr.w r1, [ip, r1] | r1 = *((ip + r1));
0x000743ee movs r3, 0 | r3 = 0;
0x000743f0 ldr r1, [r1] | r1 = *(0x74446);
0x000743f2 str r1, [sp, 0x14] | var_14h = r1;
0x000743f4 mov.w r1, 0 | r1 = 0;
0x000743f8 bl 0x74128 | fcn_00074128 (r0, r1, r2, r3, r4);
0x000743fa cdp2 p8, 9, c2, c6, c0, 0 | __asm ("cdp2 p8, 9, c2, c6, c0, 0");
| if (r3 >= 0) {
0x000743fe blt 0x7441c |
0x00074400 ldrd r1, r3, [sp, 8] | __asm ("ldrd r1, r3, [var_8h]");
0x00074404 movs r0, 0 | r0 = 0;
| if (r3 != 0) {
0x00074406 cbnz r3, 0x74434 | goto label_0;
| }
0x00074408 cmp r4, 0xa |
0x0007440a ite eq |
| if (r4 != 0xa) {
0x0007440c moveq r2, 0x500 | r2 = 0x500;
| }
| if (r4 != 0xa) {
0x00074410 movs r2, 0x44 | r2 = 0x44;
| }
0x00074412 cmp r1, r2 |
0x00074414 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r1 <= r2) {
0x00074418 blo 0x74434 | goto label_0;
| }
0x0007441a str r1, [r5] | *(r5) = r1;
| }
0x0007441c ldr r2, [pc, 0x28] |
0x0007441e ldr r3, [pc, 0x24] | r3 = *(0x74446);
0x00074420 add r2, pc | r2 = 0xe886c;
0x00074422 ldr r3, [r2, r3] | r3 = *(0xe886c);
0x00074424 ldr r2, [r3] | r2 = *(0xe886c);
0x00074426 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00074428 eors r2, r3 | r2 ^= r3;
0x0007442a mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0007442e bne 0x7443a |
0x00074430 add sp, 0x1c |
0x00074432 pop {r4, r5, pc} |
| label_0:
0x00074434 mvn r2, 0x4e | r2 = ~0x4e;
0x00074438 movs r1, r0 | r1 = r0;
| }
0x0007443a blx 0x927c | fprintf_chk ()
0x0007443e nop |
0x00074440 mov lr, ip | lr = ip;
0x00074442 movs r5, r0 | r5 = r0;
0x00074444 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074446 movs r0, r0 |
0x00074448 mov ip, r4 |
0x0007444a movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7444c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007444c () | void fcn_0007444c (int16_t arg1, int16_t arg2, uint32_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0007444c invalid |
0x00074450 movs r7, r0 | r7 = r0;
0x00074452 mov r6, r2 | r6 = r2;
0x00074454 sub sp, 0x10 |
0x00074456 movs r3, 0 | r3 = 0;
0x00074458 ldr r2, [pc, 0x100] |
0x0007445a add r0, pc | r0 += pc;
0x0007445c str r1, [sp, 4] | var_4h = r1;
0x0007445e ldr r2, [r0, r2] | r2 = *((r0 + r2));
0x00074460 ldr r2, [r2] | r2 = *(0x7455c);
0x00074462 str r2, [sp, 0xc] | var_ch = r2;
0x00074464 mov.w r2, 0 | r2 = 0;
0x00074468 str r3, [sp, 8] | var_8h = r3;
0x0007446a cmp r4, 0 |
| if (r4 == 0) {
0x0007446c beq 0x74520 | goto label_3;
| }
0x0007446e bic r3, r1, 0x70000000 | r3 = BIT_MASK (r1, 0x70000000);
0x00074472 mov r5, r1 | r5 = r1;
0x00074474 cmp r3, 0x10 |
| if (r3 > 0x10) {
0x00074476 bhi 0x74536 | goto label_4;
| }
0x00074478 lsls r0, r1, 3 | r0 = r1 << 3;
| if (r0 < r1) {
0x0007447a bpl 0x7448a |
0x0007447c ldr r0, [pc, 0xe0] |
0x0007447e ldrb r1, [r4] | r1 = *(r4);
0x00074480 add r0, pc | r0 = 0xe89e4;
0x00074482 blx 0x8bb0 | r0 = get_current_dir_name ();
0x00074486 cmp r0, 0 |
| if (r0 != 0) {
0x00074488 bne 0x74512 | goto label_2;
| }
| }
0x0007448a ldr r1, [pc, 0xd8] |
0x0007448c mov r0, r4 | r0 = r4;
0x0007448e add r1, pc | r1 = 0xe89f8;
0x00074490 blx 0x9428 | fcn_00009428 ();
0x00074494 lsls r1, r5, 1 | r1 = r5 << 1;
0x00074496 mov r3, r0 | r3 = r0;
0x00074498 add r0, r4 | r0 += r4;
0x0007449a bmi 0x74508 |
| while ((r2 & 0xfd) != 0) {
0x0007449c lsls r2, r5, 2 | r2 = r5 << 2;
| if (r2 < r5) {
0x0007449e bpl 0x744a6 |
0x000744a0 ldrb r3, [r4, r3] | r3 = *((r4 + r3));
0x000744a2 cmp r3, 0x30 |
| if (r3 == 0x30) {
0x000744a4 beq 0x74518 | goto label_5;
| }
| }
| label_1:
0x000744a6 add r1, sp, 4 | r1 += var_4h;
0x000744a8 bl 0x73fc8 | fcn_00073fc8 (r0, r1);
0x000744aa stc2 p6, c4, [lr, 0x14] | __asm ("stc2 p6, c4, [lr, 0x14]");
0x000744ae blx 0x9628 | fcn_00009628 ();
0x000744b2 ldr r2, [sp, 4] | r2 = var_4h;
0x000744b4 movs r3, 0 | r3 = 0;
0x000744b6 str r3, [r0] | *(r0) = r3;
0x000744b8 mov r4, r0 | r4 = r0;
0x000744ba add r1, sp, 8 | r1 += var_8h;
0x000744bc mov r0, r5 | r0 = r5;
0x000744be bic r2, r2, 0x70000000 | r2 = BIT_MASK (r2, 0x70000000);
0x000744c2 blx 0x8f80 | fcn_00008f80 ();
0x000744c6 ldr r3, [r4] | r3 = *(r4);
0x000744c8 mov r2, r0 | r2 = r0;
0x000744ca cmp r3, 0 |
0x000744cc it gt |
| if (r3 > 0) {
0x000744ce rsbgt r0, r3, 0 | __asm ("rsbgt r0, r3, 0");
| }
| if (r3 <= 0) {
0x000744d0 bgt 0x744f0 |
0x000744d2 ldr r3, [sp, 8] | r3 = var_8h;
0x000744d4 cmp r3, 0 |
0x000744d6 it ne |
| if (r3 != 0) {
0x000744d8 cmpne r3, r5 | __asm ("cmpne r3, r5");
| }
| if (r3 == 0) {
0x000744da beq 0x74512 | goto label_2;
| }
0x000744dc ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x000744de cbnz r3, 0x74512 | goto label_2;
| }
| if (r2 != 0) {
0x000744e0 cbz r2, 0x744e8 |
0x000744e2 ldrb r3, [r5] | r3 = *(r5);
0x000744e4 cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x000744e6 beq 0x7454c | goto label_6;
| }
| }
0x000744e8 mov r0, r6 | r0 = r6;
| if (r6 == 0) {
0x000744ea cbz r6, 0x744f0 | goto label_0;
| }
0x000744ec movs r0, 0 | r0 = 0;
0x000744ee str r2, [r6] | *(r6) = r2;
| }
| label_0:
0x000744f0 ldr r2, [pc, 0x74] |
0x000744f2 ldr r3, [pc, 0x68] | r3 = *(0x7455e);
0x000744f4 add r2, pc | r2 = 0xe8a60;
0x000744f6 ldr r3, [r2, r3] | r3 = *(0xe8a60);
0x000744f8 ldr r2, [r3] | r2 = *(0xe8a60);
0x000744fa ldr r3, [sp, 0xc] | r3 = var_ch;
0x000744fc eors r2, r3 | r2 ^= r3;
0x000744fe mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00074502 bne 0x74552 | goto label_7;
| }
0x00074504 add sp, 0x10 |
0x00074506 pop {r4, r5, r6, pc} |
0x00074508 ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x0007450a subs r2, 0x2b | r2 -= 0x2b;
0x0007450c tst.w r2, 0xfd |
0x00074510 bne 0x7449c |
| }
| label_2:
0x00074512 mvn r0, 0x15 | r0 = ~0x15;
0x00074516 b 0x744f0 | goto label_0;
| label_5:
0x00074518 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0007451a cmp r3, 0 |
| if (r3 == 0) {
0x0007451c beq 0x744a6 | goto label_1;
| }
0x0007451e b 0x74512 | goto label_2;
| label_3:
0x00074520 ldr r1, [pc, 0x48] |
0x00074522 movw r2, 0x15b | r2 = 0x15b;
0x00074526 ldr r3, [pc, 0x48] |
0x00074528 ldr r0, [pc, 0x48] |
0x0007452a add r1, pc | r1 = 0xe8a9a;
0x0007452c add r3, pc | r3 = 0xe8aa2;
0x0007452e adds r1, 7 | r1 += 7;
0x00074530 add r0, pc | r0 = 0xe8aa8;
0x00074532 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00074536 ldr r1, [pc, 0x40] |
0x00074538 mov.w r2, 0x15c | r2 = 0x15c;
0x0007453c ldr r3, [pc, 0x3c] |
0x0007453e ldr r0, [pc, 0x40] |
0x00074540 add r1, pc | r1 = 0xe8abe;
0x00074542 add r3, pc | r3 = 0xe8ac2;
0x00074544 adds r1, 7 | r1 += 7;
0x00074546 add r0, pc | r0 = 0xe8acc;
0x00074548 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x0007454c mvn r0, 0x21 | r0 = ~0x21;
0x00074550 b 0x744f0 | goto label_0;
| label_7:
0x00074552 blx 0x927c | fprintf_chk ()
0x00074556 nop |
0x00074558 mov r2, sp | r2 = sp;
0x0007455a movs r5, r0 | r5 = r0;
0x0007455c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007455e movs r0, r0 |
0x00074560 movs r4, 0xbc | r4 = 0xbc;
0x00074562 movs r1, r0 | r1 = r0;
0x00074564 movs r4, 0xae | r4 = 0xae;
0x00074566 movs r1, r0 | r1 = r0;
0x00074568 cmp r8, sl |
0x0007456a movs r5, r0 | r5 = r0;
0x0007456c asrs r2, r4, 0x16 | r2 = r4 >> 0x16;
0x0007456e movs r3, r0 | r3 = r0;
0x00074570 asrs r0, r3, 0x18 | r0 = r3 >> 0x18;
0x00074572 movs r3, r0 | r3 = r0;
0x00074574 bx sl | return uint32_t (*sl)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74584 */
| #include <stdint.h>
|
; (fcn) fcn.00074584 () | void fcn_00074584 (int16_t arg1, int16_t arg2) {
| int16_t var_4h_2;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00074584 blmi 0x846e04 | __asm ("blmi aav.0x00054538");
0x00074588 push {r4, r5, lr} |
0x0007458a movs r5, 0 | r5 = 0;
0x0007458c add r2, pc | r2 += pc;
0x0007458e sub sp, 0xc |
0x00074590 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00074592 ldr r3, [r3] | r3 = *(r3);
0x00074594 str r3, [sp, 4] | var_4h = r3;
0x00074596 mov.w r3, 0 | r3 = 0;
0x00074598 lsls r0, r0, 0xc | r0 <<= 0xc;
0x0007459a str r5, [sp] | *(sp) = r5;
| if (r0 != 0) {
0x0007459c cbz r0, 0x745d4 |
0x0007459e mov r4, r1 | r4 = r1;
| if (r1 == 0) {
0x000745a0 cbz r1, 0x745e8 | goto label_0;
| }
0x000745a2 mov r2, sp | r2 = sp;
0x000745a4 mov r1, r5 | r1 = r5;
0x000745a6 bl 0x7444c | r0 = fcn_0007444c (r0, r1, r2);
0x000745aa cmp r0, 0 |
| if (r0 >= 0) {
0x000745ac blt 0x745bc |
0x000745ae ldr r3, [sp] | r3 = *(sp);
0x000745b0 cmp r3, 0 |
0x000745b2 itet gt |
| if (r3 <= 0) {
0x000745b4 movgt r0, r5 | r0 = r5;
| }
| if (r3 > 0) {
0x000745b6 mvnle r0, 0x21 | r0 = ~0x21;
| }
| if (r3 <= 0) {
0x000745ba str r3, [r4] | *(r4) = r3;
| goto label_1;
| }
| }
| label_1:
0x000745bc ldr r2, [pc, 0x48] |
0x000745be ldr r3, [pc, 0x44] | r3 = *(0x74606);
0x000745c0 add r2, pc | r2 = 0xe8bcc;
0x000745c2 ldr r3, [r2, r3] | r3 = *(0xe8bcc);
0x000745c4 ldr r2, [r3] | r2 = *(0xe8bcc);
0x000745c6 ldr r3, [sp, 4] | r3 = var_4h;
0x000745c8 eors r2, r3 | r2 ^= r3;
0x000745ca mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000745ce bne 0x745fc | goto label_2;
| }
0x000745d0 add sp, 0xc |
0x000745d2 pop {r4, r5, pc} |
| }
0x000745d4 ldr r1, [pc, 0x34] |
0x000745d6 movs r2, 0x35 | r2 = 0x35;
0x000745d8 ldr r3, [pc, 0x34] |
0x000745da ldr r0, [pc, 0x38] |
0x000745dc add r1, pc | r1 = 0xe8bec;
0x000745de add r3, pc | r3 = 0xe8bf2;
0x000745e0 adds r1, 7 | r1 += 7;
0x000745e2 add r0, pc | r0 = 0xe8bfc;
0x000745e4 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_0:
0x000745e8 ldr r1, [pc, 0x2c] |
0x000745ea movs r2, 0x36 | r2 = 0x36;
0x000745ec ldr r3, [pc, 0x2c] |
0x000745ee ldr r0, [pc, 0x30] |
0x000745f0 add r1, pc | r1 = 0xe8c0c;
0x000745f2 add r3, pc | r3 = 0xe8c12;
0x000745f4 adds r1, 7 | r1 += 7;
0x000745f6 add r0, pc | r0 = 0xe8c1c;
0x000745f8 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x000745fc blx 0x927c | r0 = fprintf_chk ()
0x00074600 cmp r0, r7 |
0x00074602 movs r5, r0 | r5 = r0;
0x00074604 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074606 movs r0, r0 |
0x00074608 cmp r4, r0 |
0x0007460a movs r5, r0 | r5 = r0;
0x0007460c asrs r0, r6, 0x13 | r0 = r6 >> 0x13;
0x0007460e movs r3, r0 | r3 = r0;
0x00074610 asrs r6, r3, 0x16 | r6 = r3 >> 0x16;
0x00074612 movs r3, r0 | r3 = r0;
0x00074614 mov sl, r4 | sl = r4;
0x00074616 movs r1, r0 | r1 = r0;
0x00074618 asrs r4, r3, 0x13 | r4 = r3 >> 0x13;
0x0007461a movs r3, r0 | r3 = r0;
0x0007461c asrs r2, r1, 0x16 | r2 = r1 >> 0x16;
0x0007461e movs r3, r0 | r3 = r0;
0x00074620 asrs r2, r6, 0x14 | r2 = r6 >> 0x14;
0x00074622 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74624 */
| #include <stdint.h>
|
; (fcn) fcn.00074624 () | void fcn_00074624 (int16_t arg1, int16_t arg2) {
| int16_t var_ch;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00074624 blmi 0x786e98 | __asm ("blmi aav.0x00054498");
0x00074628 push {r4, lr} |
0x0007462a sub sp, 8 |
0x0007462c add r2, pc | r2 += pc;
0x0007462e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00074630 ldr r3, [r3] | r3 = *(r3);
0x00074632 str r3, [sp, 4] | var_4h = r3;
0x00074634 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00074638 cbz r0, 0x74674 | goto label_0;
| }
0x0007463a mov r4, r1 | r4 = r1;
0x0007463c movs r1, 8 | r1 = 8;
0x0007463e mov r2, sp | r2 = sp;
0x00074640 movt r1, 0x4000 | r1 = (r1 & 0xFFFF) | 0x40000000;
0x00074644 bl 0x7444c | r0 = fcn_0007444c (r0, r1, r2);
0x00074648 cmp r0, 0 |
| if (r0 < 0) {
0x0007464a blt 0x7465c | goto label_1;
| }
0x0007464c ldr r3, [sp] | r3 = *(sp);
0x0007464e cmp.w r3, 0x1000 |
| if (r3 >= 0x1000) {
0x00074652 bhs 0x74688 | goto label_2;
| }
0x00074654 mov r0, r4 | r0 = r4;
| if (r4 == 0) {
0x00074656 cbz r4, 0x7465c | goto label_1;
| }
0x00074658 movs r0, 0 | r0 = 0;
0x0007465a str r3, [r4] | *(r4) = r3;
| do {
| label_1:
0x0007465c ldr r2, [pc, 0x3c] |
0x0007465e ldr r3, [pc, 0x38] | r3 = *(0x7469a);
0x00074660 add r2, pc | r2 = 0xe8d00;
0x00074662 ldr r3, [r2, r3] | r3 = *(0xe8d00);
0x00074664 ldr r2, [r3] | r2 = *(0xe8d00);
0x00074666 ldr r3, [sp, 4] | r3 = var_4h;
0x00074668 eors r2, r3 | r2 ^= r3;
0x0007466a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007466e bne 0x7468e | goto label_3;
| }
0x00074670 add sp, 8 |
0x00074672 pop {r4, pc} |
| label_0:
0x00074674 ldr r1, [pc, 0x28] |
0x00074676 movs r2, 0x4c | r2 = 0x4c;
0x00074678 ldr r3, [pc, 0x28] |
0x0007467a ldr r0, [pc, 0x2c] |
0x0007467c add r1, pc | r1 = 0xe8d20;
0x0007467e add r3, pc | r3 = 0xe8d26;
0x00074680 adds r1, 7 | r1 += 7;
0x00074682 add r0, pc | r0 = 0xe8d30;
0x00074684 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00074688 mvn r0, 0x21 | r0 = ~0x21;
0x0007468c b 0x7465c |
| } while (1);
| label_3:
0x0007468e blx 0x927c | fprintf_chk ()
0x00074692 nop |
0x00074694 add r8, r3 | r8 += r3;
0x00074696 movs r5, r0 | r5 = r0;
0x00074698 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007469a movs r0, r0 |
0x0007469c add r4, ip | r4 += ip;
0x0007469e movs r5, r0 | r5 = r0;
0x000746a0 asrs r0, r2, 0x11 | r0 = r2 >> 0x11;
0x000746a2 movs r3, r0 | r3 = r0;
0x000746a4 asrs r2, r6, 0x13 | r2 = r6 >> 0x13;
0x000746a6 movs r3, r0 | r3 = r0;
0x000746a8 mov r2, r0 | r2 = r0;
0x000746aa movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x746ac */
| #include <stdint.h>
|
; (fcn) fcn.000746ac () | void fcn_000746ac (int16_t arg1, uint32_t arg2) {
| int16_t var_4h_5;
| int16_t var_8h_4;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000746ac blmi 0xa86f50 | __asm ("blmi aav.0x00054410");
0x000746b0 push {r4, r5, r6, r7, lr} |
0x000746b2 movs r7, 0 | r7 = 0;
0x000746b4 add r2, pc | r2 += pc;
0x000746b6 sub sp, 0x14 |
0x000746b8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000746ba ldr r3, [r3] | r3 = *(r3);
0x000746bc str r3, [sp, 0xc] | var_ch = r3;
0x000746be mov.w r3, 0 | r3 = 0;
0x000746c2 strd r7, r7, [sp, 4] | __asm ("strd r7, r7, [var_4h_5]");
| if (r0 == 0) {
0x000746c6 cbz r0, 0x7472a | goto label_1;
| }
0x000746c8 mov r6, r1 | r6 = r1;
0x000746ca ldr r1, [pc, 0x88] |
0x000746cc mov r4, r0 | r4 = r0;
0x000746ce add r1, pc | r1 = 0xe8e28;
0x000746d0 blx 0x9428 | fcn_00009428 ();
0x000746d4 add r1, sp, 4 | r1 += var_4h_5;
0x000746d6 add r0, r4 | r0 += r4;
0x000746d8 bl 0x73fc8 | r0 = fcn_00073fc8 (r0, r1);
0x000746dc mov r5, r0 | r5 = r0;
0x000746de blx 0x9628 | fcn_00009628 ();
0x000746e2 ldr r2, [sp, 4] | r2 = var_4h_5;
0x000746e4 mov r4, r0 | r4 = r0;
0x000746e6 str r7, [r0] | *(r0) = r7;
0x000746e8 add r1, sp, 8 | r1 += var_8h_4;
0x000746ea mov r0, r5 | r0 = r5;
0x000746ec blx 0x902c | fcn_0000902c ();
0x000746f0 ldr r3, [r4] | r3 = *(r4);
0x000746f2 mov r2, r0 | r2 = r0;
0x000746f4 cmp r3, 0 |
0x000746f6 it gt |
| if (r3 > 0) {
0x000746f8 rsbgt r0, r3, 0 | __asm ("rsbgt r0, r3, 0");
| }
| if (r3 > 0) {
0x000746fa bgt 0x7470e | goto label_0;
| }
0x000746fc ldr r3, [sp, 8] | r3 = var_8h_4;
0x000746fe cmp r3, 0 |
0x00074700 it ne |
| if (r3 != 0) {
0x00074702 cmpne r3, r5 | __asm ("cmpne r3, r5");
| }
| if (r3 == 0) {
0x00074704 beq 0x74740 | goto label_2;
| }
0x00074706 ldrb r0, [r3] | r0 = *(r3);
| if (r0 != 0) {
0x00074708 cbnz r0, 0x74740 | goto label_2;
| }
| if (r6 == 0) {
0x0007470a cbz r6, 0x74726 | goto label_3;
| }
0x0007470c str r2, [r6] | *(r6) = r2;
| do {
| label_0:
0x0007470e ldr r2, [pc, 0x48] |
0x00074710 ldr r3, [pc, 0x3c] | r3 = *(0x74750);
0x00074712 add r2, pc | r2 = 0xe8e70;
0x00074714 ldr r3, [r2, r3] | r3 = *(0xe8e70);
0x00074716 ldr r2, [r3] | r2 = *(0xe8e70);
0x00074718 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007471a eors r2, r3 | r2 ^= r3;
0x0007471c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00074720 bne 0x74746 | goto label_4;
| }
0x00074722 add sp, 0x14 |
0x00074724 pop {r4, r5, r6, r7, pc} |
| label_3:
0x00074726 mov r0, r6 | r0 = r6;
0x00074728 b 0x7470e |
| } while (1);
| label_1:
0x0007472a ldr r1, [pc, 0x30] |
0x0007472c movw r2, 0x18f | r2 = 0x18f;
0x00074730 ldr r3, [pc, 0x2c] |
0x00074732 ldr r0, [pc, 0x30] |
0x00074734 add r1, pc | r1 = 0xe8e96;
0x00074736 add r3, pc | r3 = 0xe8e9a;
0x00074738 adds r1, 7 | r1 += 7;
0x0007473a add r0, pc | r0 = 0xe8ea4;
0x0007473c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00074740 mvn r0, 0x15 | r0 = ~0x15;
0x00074744 b 0x7470e | goto label_0;
| label_4:
0x00074746 blx 0x927c | fprintf_chk ()
0x0007474a nop |
0x0007474c add r0, r2 | r0 += r2;
0x0007474e movs r5, r0 | r5 = r0;
0x00074750 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074752 movs r0, r0 |
0x00074754 movs r2, 0x6e | r2 = 0x6e;
0x00074756 movs r1, r0 | r1 = r0;
0x00074758 bics r2, r6 | __asm ("bics r2, r6");
0x0007475a movs r5, r0 | r5 = r0;
0x0007475c asrs r0, r3, 0xe | r0 = r3 >> 0xe;
0x0007475e movs r3, r0 | r3 = r0;
0x00074760 asrs r6, r0, 0x12 | r6 = r0 >> 0x12;
0x00074762 movs r3, r0 | r3 = r0;
0x00074764 cmp r2, sb |
0x00074766 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74768 */
| #include <stdint.h>
|
; (fcn) fcn.00074768 () | void fcn_00074768 (uint32_t arg1) {
| int16_t var_0h_2;
| int16_t var_4h;
| r0 = arg1;
0x00074768 blmi 0x646fc8 | __asm ("blmi aav.0x00054354");
0x0007476c push {lr} |
0x0007476e sub sp, 0xc |
0x00074770 add r2, pc | r2 += pc;
0x00074772 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00074774 ldr r3, [r3] | r3 = *(r3);
0x00074776 str r3, [sp, 4] | var_4h = r3;
0x00074778 mov.w r3, 0 | r3 = 0;
| if (r0 != 0) {
0x0007477c cbz r0, 0x747ac |
0x0007477e mov r1, sp | r1 = sp;
0x00074780 bl 0x746ac | r0 = fcn_000746ac (r0, r1);
0x00074784 cmp r0, 0 |
| if (r0 >= 0) {
0x00074786 blt 0x74792 |
0x00074788 ldr r0, [sp] | r0 = *(sp);
0x0007478a cmp r0, 0 |
0x0007478c it le |
| if (r0 <= 0) {
0x0007478e mvnle r0, 0x15 | r0 = ~0x15;
| goto label_0;
| }
| }
| label_0:
0x00074792 ldr r2, [pc, 0x38] |
0x00074794 ldr r3, [pc, 0x30] | r3 = *(0x747c8);
0x00074796 add r2, pc | r2 = 0xe8f68;
0x00074798 ldr r3, [r2, r3] | r3 = *(0xe8f68);
0x0007479a ldr r2, [r3] | r2 = *(0xe8f68);
0x0007479c ldr r3, [sp, 4] | r3 = var_4h;
0x0007479e eors r2, r3 | r2 ^= r3;
0x000747a0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000747a4 bne 0x747c0 | goto label_1;
| }
0x000747a6 add sp, 0xc |
0x000747a8 ldr pc, [sp], 4 | pc = *(sp);
| sp += 4;
| }
0x000747ac ldr r1, [pc, 0x20] |
0x000747ae movs r2, 0x61 | r2 = 0x61;
0x000747b0 ldr r3, [pc, 0x20] |
0x000747b2 ldr r0, [pc, 0x24] |
0x000747b4 add r1, pc | r1 = 0xe8f88;
0x000747b6 add r3, pc | r3 = 0xe8f8e;
0x000747b8 adds r1, 7 | r1 += 7;
0x000747ba add r0, pc | r0 = 0xe8f98;
0x000747bc bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_1:
0x000747c0 blx 0x927c | fprintf_chk ()
0x000747c4 muls r4, r2, r4 | r4 = r2 * r4;
0x000747c6 movs r5, r0 | r5 = r0;
0x000747c8 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000747ca movs r0, r0 |
0x000747cc orrs r6, r5 | r6 |= r5;
0x000747ce movs r5, r0 | r5 = r0;
0x000747d0 asrs r0, r3, 0xc | r0 = r3 >> 0xc;
0x000747d2 movs r3, r0 | r3 = r0;
0x000747d4 asrs r2, r5, 0xe | r2 = r5 >> 0xe;
0x000747d6 movs r3, r0 | r3 = r0;
0x000747d8 add sl, sb | sl += sb;
0x000747da movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x747dc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000747dc () | void fcn_000747dc (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000747dc invalid |
0x000747e0 ldr r0, [pc, 0x108] |
0x000747e2 mov r6, r2 | r6 = r2;
0x000747e4 sub sp, 0x10 |
0x000747e6 movs r3, 0 | r3 = 0;
0x000747e8 ldr r2, [pc, 0x104] | r2 = *(0x748f0);
0x000747ea add r0, pc | r0 = 0xe90da;
0x000747ec str r1, [sp, 4] | var_4h_2 = r1;
0x000747ee ldr r2, [r0, r2] |
0x000747f0 ldr r2, [r2] | r2 = *(0xe90da);
0x000747f2 str r2, [sp, 0xc] | var_ch_2 = r2;
0x000747f4 mov.w r2, 0 | r2 = 0;
0x000747f8 str r3, [sp, 8] | var_8h = r3;
0x000747fa cmp r4, 0 |
| if (r4 == 0) {
0x000747fc beq 0x748b6 | goto label_3;
| }
0x000747fe bic r3, r1, 0x70000000 | r3 = BIT_MASK (r1, 0x70000000);
0x00074802 mov r5, r1 | r5 = r1;
0x00074804 cmp r3, 0x10 |
| if (r3 > 0x10) {
0x00074806 bhi 0x748cc | goto label_4;
| }
0x00074808 lsls r0, r1, 3 | r0 = r1 << 3;
| if (r0 < r1) {
0x0007480a bpl 0x7481a |
0x0007480c ldr r0, [pc, 0xe4] |
0x0007480e ldrb r1, [r4] | r1 = *(r4);
0x00074810 add r0, pc | r0 = 0xe9108;
0x00074812 blx 0x8bb0 | r0 = get_current_dir_name ();
0x00074816 cmp r0, 0 |
| if (r0 != 0) {
0x00074818 bne 0x748a8 | goto label_2;
| }
| }
0x0007481a ldr r1, [pc, 0xdc] |
0x0007481c mov r0, r4 | r0 = r4;
0x0007481e add r1, pc | r1 = 0xe911c;
0x00074820 blx 0x9428 | fcn_00009428 ();
0x00074824 lsls r1, r5, 1 | r1 = r5 << 1;
0x00074826 mov r3, r0 | r3 = r0;
0x00074828 add r0, r4 | r0 += r4;
0x0007482a bmi 0x7489e |
| while ((r2 & 0xfd) != 0) {
0x0007482c lsls r2, r5, 2 | r2 = r5 << 2;
| if (r2 < r5) {
0x0007482e bpl 0x74836 |
0x00074830 ldrb r3, [r4, r3] | r3 = *((r4 + r3));
0x00074832 cmp r3, 0x30 |
| if (r3 == 0x30) {
0x00074834 beq 0x748ae | goto label_5;
| }
| }
| label_1:
0x00074836 add r1, sp, 4 | r1 += var_4h_2;
0x00074838 bl 0x73fc8 | r0 = fcn_00073fc8 (r0, r1);
0x0007483c mov r5, r0 | r5 = r0;
0x0007483e blx 0x9628 | fcn_00009628 ();
0x00074842 ldr r2, [sp, 4] | r2 = var_4h_2;
0x00074844 movs r3, 0 | r3 = 0;
0x00074846 str r3, [r0] | *(r0) = r3;
0x00074848 mov r4, r0 | r4 = r0;
0x0007484a add r1, sp, 8 | r1 += var_8h;
0x0007484c mov r0, r5 | r0 = r5;
0x0007484e bic r2, r2, 0x70000000 | r2 = BIT_MASK (r2, 0x70000000);
0x00074852 blx 0x8d90 | free (r0);
0x00074856 ldr r3, [r4] | r3 = *(r4);
0x00074858 mov r2, r0 | r2 = r0;
0x0007485a cmp r3, 0 |
0x0007485c it gt |
| if (r3 > 0) {
0x0007485e rsbgt r0, r3, 0 | __asm ("rsbgt r0, r3, 0");
| }
| if (r3 <= 0) {
0x00074860 bgt 0x74886 |
0x00074862 ldr r3, [sp, 8] | r3 = var_8h;
0x00074864 cmp r3, 0 |
0x00074866 it ne |
| if (r3 != 0) {
0x00074868 cmpne r3, r5 | __asm ("cmpne r3, r5");
| }
| if (r3 == 0) {
0x0007486a beq 0x748a8 | goto label_2;
| }
0x0007486c ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x0007486e cbnz r3, 0x748a8 | goto label_2;
| }
0x00074870 orrs.w r3, r2, r1 | r3 = r2 | r1;
| if (r3 != r2) {
0x00074874 beq 0x7487c |
0x00074876 ldrb r3, [r5] | r3 = *(r5);
0x00074878 cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x0007487a beq 0x748e2 | goto label_6;
| }
| }
0x0007487c mov r0, r6 | r0 = r6;
| if (r6 == 0) {
0x0007487e cbz r6, 0x74886 | goto label_0;
| }
0x00074880 movs r0, 0 | r0 = 0;
0x00074882 strd r2, r1, [r6] | __asm ("strd r2, r1, [r6]");
| }
| label_0:
0x00074886 ldr r2, [pc, 0x74] |
0x00074888 ldr r3, [pc, 0x64] | r3 = *(0x748f0);
0x0007488a add r2, pc | r2 = 0xe918c;
0x0007488c ldr r3, [r2, r3] | r3 = *(0xe918c);
0x0007488e ldr r2, [r3] | r2 = *(0xe918c);
0x00074890 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x00074892 eors r2, r3 | r2 ^= r3;
0x00074894 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00074898 bne 0x748e8 | goto label_7;
| }
0x0007489a add sp, 0x10 |
0x0007489c pop {r4, r5, r6, pc} |
0x0007489e ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x000748a0 subs r2, 0x2b | r2 -= 0x2b;
0x000748a2 tst.w r2, 0xfd |
0x000748a6 bne 0x7482c |
| }
| label_2:
0x000748a8 mvn r0, 0x15 | r0 = ~0x15;
0x000748ac b 0x74886 | goto label_0;
| label_5:
0x000748ae ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x000748b0 cmp r3, 0 |
| if (r3 == 0) {
0x000748b2 beq 0x74836 | goto label_1;
| }
0x000748b4 b 0x748a8 | goto label_2;
| label_3:
0x000748b6 ldr r1, [pc, 0x48] |
0x000748b8 movw r2, 0x1a7 | r2 = 0x1a7;
0x000748bc ldr r3, [pc, 0x44] |
0x000748be ldr r0, [pc, 0x48] |
0x000748c0 add r1, pc | r1 = 0xe91c6;
0x000748c2 add r3, pc | r3 = 0xe91ca;
0x000748c4 adds r1, 7 | r1 += 7;
0x000748c6 add r0, pc | r0 = 0xe91d4;
0x000748c8 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x000748cc ldr r1, [pc, 0x3c] |
0x000748ce mov.w r2, 0x1a8 | r2 = 0x1a8;
0x000748d2 ldr r3, [pc, 0x3c] |
0x000748d4 ldr r0, [pc, 0x3c] |
0x000748d6 add r1, pc | r1 = 0xe91e6;
0x000748d8 add r3, pc | r3 = 0xe91ee;
0x000748da adds r1, 7 | r1 += 7;
0x000748dc add r0, pc | r0 = 0xe91f4;
0x000748de bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x000748e2 mvn r0, 0x21 | r0 = ~0x21;
0x000748e6 b 0x74886 | goto label_0;
| label_7:
0x000748e8 blx 0x927c | fprintf_chk ()
0x000748ec cmn r2, r3 |
0x000748ee movs r5, r0 | r5 = r0;
0x000748f0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000748f2 movs r0, r0 |
0x000748f4 movs r1, 0x2c | r1 = 0x2c;
0x000748f6 movs r1, r0 | r1 = r0;
0x000748f8 movs r1, 0x1e | r1 = 0x1e;
0x000748fa movs r1, r0 | r1 = r0;
0x000748fc tst r2, r7 |
0x000748fe movs r5, r0 | r5 = r0;
0x00074900 asrs r4, r1, 8 | r4 = r1 >> 8;
0x00074902 movs r3, r0 | r3 = r0;
0x00074904 asrs r6, r4, 0xb | r6 = r4 >> 0xb;
0x00074906 movs r3, r0 | r3 = r0;
0x00074908 bics r6, r7 | __asm ("bics r6, r7");
0x0007490a movs r1, r0 | r1 = r0;
0x0007490c asrs r6, r6, 7 | r6 >>= 7;
0x0007490e movs r3, r0 | r3 = r0;
0x00074910 asrs r0, r2, 0xb | r0 = r2 >> 0xb;
0x00074912 movs r3, r0 | r3 = r0;
0x00074914 asrs r4, r5, 8 | r4 = r5 >> 8;
0x00074916 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74918 */
| #include <stdint.h>
|
; (fcn) fcn.00074918 () | void fcn_00074918 (int16_t arg1, int16_t arg2) {
| int16_t var_4h_4;
| int16_t var_8h_3;
| int16_t var_ch_3;
| r0 = arg1;
| r1 = arg2;
0x00074918 blmi 0xa871bc | __asm ("blmi aav.0x000541a4");
0x0007491c push {r4, r5, r6, r7, lr} |
0x0007491e movs r7, 0 | r7 = 0;
0x00074920 add r2, pc | r2 += pc;
0x00074922 sub sp, 0x14 |
0x00074924 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00074926 ldr r3, [r3] | r3 = *(r3);
0x00074928 str r3, [sp, 0xc] | var_ch_3 = r3;
0x0007492a mov.w r3, 0 | r3 = 0;
0x0007492e strd r7, r7, [sp, 4] | __asm ("strd r7, r7, [sp, 4]");
| if (r0 == 0) {
0x00074932 cbz r0, 0x74998 | goto label_1;
| }
0x00074934 mov r5, r1 | r5 = r1;
0x00074936 ldr r1, [pc, 0x88] |
0x00074938 mov r4, r0 | r4 = r0;
0x0007493a add r1, pc | r1 = 0xe9300;
0x0007493c blx 0x9428 | fcn_00009428 ();
0x00074940 add r1, sp, 4 | r1 += var_4h_4;
0x00074942 add r0, r4 | r0 += r4;
0x00074944 bl 0x73fc8 | r0 = fcn_00073fc8 (r0, r1);
0x00074948 mov r6, r0 | r6 = r0;
0x0007494a blx 0x9628 | fcn_00009628 ();
0x0007494e ldr r2, [sp, 4] | r2 = var_4h_4;
0x00074950 mov r4, r0 | r4 = r0;
0x00074952 str r7, [r0] | *(r0) = r7;
0x00074954 add r1, sp, 8 | r1 += var_8h_3;
0x00074956 mov r0, r6 | r0 = r6;
0x00074958 blx 0x8cfc | fcn_00008cfc ();
0x0007495c ldr r3, [r4] | r3 = *(r4);
0x0007495e mov r2, r0 | r2 = r0;
0x00074960 cmp r3, 0 |
0x00074962 it gt |
| if (r3 > 0) {
0x00074964 rsbgt r0, r3, 0 | __asm ("rsbgt r0, r3, 0");
| }
| if (r3 > 0) {
0x00074966 bgt 0x7497c | goto label_0;
| }
0x00074968 ldr r3, [sp, 8] | r3 = var_8h_3;
0x0007496a cmp r3, 0 |
0x0007496c it ne |
| if (r3 != 0) {
0x0007496e cmpne r3, r6 | __asm ("cmpne r3, r6");
| }
| if (r3 == 0) {
0x00074970 beq 0x749ae | goto label_2;
| }
0x00074972 ldrb r0, [r3] | r0 = *(r3);
| if (r0 != 0) {
0x00074974 cbnz r0, 0x749ae | goto label_2;
| }
| if (r5 == 0) {
0x00074976 cbz r5, 0x74994 | goto label_3;
| }
0x00074978 strd r2, r1, [r5] | __asm ("strd r2, r1, [r5]");
| do {
| label_0:
0x0007497c ldr r2, [pc, 0x44] |
0x0007497e ldr r3, [pc, 0x3c] | r3 = *(0x749be);
0x00074980 add r2, pc | r2 = 0xe9348;
0x00074982 ldr r3, [r2, r3] | r3 = *(0xe9348);
0x00074984 ldr r2, [r3] | r2 = *(0xe9348);
0x00074986 ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x00074988 eors r2, r3 | r2 ^= r3;
0x0007498a mov.w r3, 0 | r3 = 0;
0x0007498c lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0007498e bne 0x749b4 | goto label_4;
| }
0x00074990 add sp, 0x14 |
0x00074992 pop {r4, r5, r6, r7, pc} |
| label_3:
0x00074994 mov r0, r5 | r0 = r5;
0x00074996 b 0x7497c |
| } while (1);
| label_1:
0x00074998 ldr r1, [pc, 0x2c] |
0x0007499a mov.w r2, 0x1ce | r2 = 0x1ce;
0x0007499e ldr r3, [pc, 0x2c] |
0x000749a0 ldr r0, [pc, 0x2c] |
0x000749a2 add r1, pc | r1 = 0xe936e;
0x000749a4 add r3, pc | r3 = 0xe9376;
0x000749a6 adds r1, 7 | r1 += 7;
0x000749a8 add r0, pc | r0 = 0xe937c;
0x000749aa bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x000749ae mvn r0, 0x15 | r0 = ~0x15;
0x000749b2 b 0x7497c | goto label_0;
| label_4:
0x000749b4 blx 0x927c | fprintf_chk ()
0x000749b8 sbcs r4, r4 | __asm ("sbcs r4, r4");
0x000749ba movs r5, r0 | r5 = r0;
0x000749bc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000749be movs r0, r0 |
0x000749c0 movs r0, 2 | r0 = 2;
0x000749c2 movs r1, r0 | r1 = r0;
0x000749c4 adcs r4, r0 | __asm ("adcs r4, r0");
0x000749c6 movs r5, r0 | r5 = r0;
0x000749c8 asrs r2, r5, 4 | r2 = r5 >> 4;
0x000749ca movs r3, r0 | r3 = r0;
0x000749cc asrs r0, r7, 7 | r0 = r7 >> 7;
0x000749ce movs r3, r0 | r3 = r0;
0x000749d0 cmn r4, r3 |
0x000749d2 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x749d4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000749d4 () | void fcn_000749d4 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h_3;
| int16_t var_8h_2;
| int16_t var_ch_4;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000749d4 invalid |
0x000749d8 ldr r0, [pc, 0x10c] |
0x000749da mov r6, r2 | r6 = r2;
0x000749dc sub sp, 0x10 |
0x000749de movs r3, 0 | r3 = 0;
0x000749e0 ldr r2, [pc, 0x108] | r2 = *(0x74aec);
0x000749e2 add r0, pc | r0 = 0xe94ce;
0x000749e4 str r1, [sp, 4] | var_4h_3 = r1;
0x000749e6 ldr r2, [r0, r2] |
0x000749e8 ldr r2, [r2] | r2 = *(0xe94ce);
0x000749ea str r2, [sp, 0xc] | var_ch_4 = r2;
0x000749ec mov.w r2, 0 | r2 = 0;
0x000749f0 str r3, [sp, 8] | var_8h_2 = r3;
0x000749f2 cmp r4, 0 |
| if (r4 == 0) {
0x000749f4 beq 0x74ab2 | goto label_4;
| }
0x000749f6 bic r3, r1, 0x70000000 | r3 = BIT_MASK (r1, 0x70000000);
0x000749fa mov r5, r1 | r5 = r1;
0x000749fc cmp r3, 0x10 |
| if (r3 > 0x10) {
0x000749fe bhi 0x74ac8 | goto label_5;
| }
0x00074a00 lsls r0, r1, 3 | r0 = r1 << 3;
| if (r0 < r1) {
0x00074a02 bpl 0x74a12 |
0x00074a04 ldr r0, [pc, 0xe8] |
0x00074a06 ldrb r1, [r4] | r1 = *(r4);
0x00074a08 add r0, pc | r0 = 0xe94fc;
0x00074a0a blx 0x8bb0 | r0 = get_current_dir_name ();
0x00074a0e cmp r0, 0 |
| if (r0 != 0) {
0x00074a10 bne 0x74aa0 | goto label_3;
| }
| }
0x00074a12 ldr r1, [pc, 0xe0] |
0x00074a14 mov r0, r4 | r0 = r4;
0x00074a16 add r1, pc | r1 = 0xe9510;
0x00074a18 blx 0x9428 | fcn_00009428 ();
0x00074a1c lsls r1, r5, 1 | r1 = r5 << 1;
0x00074a1e mov r3, r0 | r3 = r0;
0x00074a20 add r0, r4 | r0 += r4;
0x00074a22 bmi 0x74a96 |
| while ((r2 & 0xfd) != 0) {
0x00074a24 lsls r2, r5, 2 | r2 = r5 << 2;
| if (r2 < r5) {
0x00074a26 bpl 0x74a2e |
0x00074a28 ldrb r3, [r4, r3] | r3 = *((r4 + r3));
0x00074a2a cmp r3, 0x30 |
| if (r3 == 0x30) {
0x00074a2c beq 0x74aaa | goto label_6;
| }
| }
| label_2:
0x00074a2e add r1, sp, 4 | r1 += var_4h_3;
0x00074a30 bl 0x73fc8 | r0 = fcn_00073fc8 (r0, r1);
0x00074a34 mov r5, r0 | r5 = r0;
0x00074a36 blx 0x9628 | fcn_00009628 ();
0x00074a3a ldr r2, [sp, 4] | r2 = var_4h_3;
0x00074a3c movs r3, 0 | r3 = 0;
0x00074a3e str r3, [r0] | *(r0) = r3;
0x00074a40 mov r4, r0 | r4 = r0;
0x00074a42 add r1, sp, 8 | r1 += var_8h_2;
0x00074a44 mov r0, r5 | r0 = r5;
0x00074a46 bic r2, r2, 0x70000000 | r2 = BIT_MASK (r2, 0x70000000);
0x00074a4a blx 0x8f80 | fcn_00008f80 ();
0x00074a4e ldr r3, [r4] | r3 = *(r4);
0x00074a50 cmp r3, 0 |
0x00074a52 it gt |
| if (r3 > 0) {
0x00074a54 rsbgt r0, r3, 0 | __asm ("rsbgt r0, r3, 0");
| }
| if (r3 <= 0) {
0x00074a56 bgt 0x74a7e |
0x00074a58 ldr r3, [sp, 8] | r3 = var_8h_2;
0x00074a5a cmp r3, 0 |
0x00074a5c it ne |
| if (r3 != 0) {
0x00074a5e cmpne r3, r5 | __asm ("cmpne r3, r5");
| }
| if (r3 == 0) {
0x00074a60 beq 0x74aa0 | goto label_3;
| }
0x00074a62 ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x00074a64 cbnz r3, 0x74aa0 | goto label_3;
| }
| if (r0 == 0) {
0x00074a66 cbz r0, 0x74aa6 | goto label_7;
| }
0x00074a68 ldrb r3, [r5] | r3 = *(r5);
0x00074a6a cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x00074a6c beq 0x74ade | goto label_8;
| }
0x00074a6e uxth r2, r0 | r2 = (int16_t) r0;
0x00074a70 cmp r2, r0 |
0x00074a72 mov r3, r2 | r3 = r2;
| if (r2 != r0) {
0x00074a74 bne 0x74ade | goto label_8;
| }
| label_1:
0x00074a76 mov r0, r6 | r0 = r6;
| if (r6 == 0) {
0x00074a78 cbz r6, 0x74a7e | goto label_0;
| }
0x00074a7a movs r0, 0 | r0 = 0;
0x00074a7c strh r3, [r6] | *(r6) = r3;
| }
| label_0:
0x00074a7e ldr r2, [pc, 0x78] |
0x00074a80 ldr r3, [pc, 0x68] | r3 = *(0x74aec);
0x00074a82 add r2, pc | r2 = 0xe9580;
0x00074a84 ldr r3, [r2, r3] | r3 = *(0xe9580);
0x00074a86 ldr r2, [r3] | r2 = *(0xe9580);
0x00074a88 ldr r3, [sp, 0xc] | r3 = var_ch_4;
0x00074a8a eors r2, r3 | r2 ^= r3;
0x00074a8c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00074a90 bne 0x74ae4 | goto label_9;
| }
0x00074a92 add sp, 0x10 |
0x00074a94 pop {r4, r5, r6, pc} |
0x00074a96 ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x00074a98 subs r2, 0x2b | r2 -= 0x2b;
0x00074a9a tst.w r2, 0xfd |
0x00074a9e bne 0x74a24 |
| }
| label_3:
0x00074aa0 mvn r0, 0x15 | r0 = ~0x15;
0x00074aa4 b 0x74a7e | goto label_0;
| label_7:
0x00074aa6 mov r3, r0 | r3 = r0;
0x00074aa8 b 0x74a76 | goto label_1;
| label_6:
0x00074aaa ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00074aac cmp r3, 0 |
| if (r3 == 0) {
0x00074aae beq 0x74a2e | goto label_2;
| }
0x00074ab0 b 0x74aa0 | goto label_3;
| label_4:
0x00074ab2 ldr r1, [pc, 0x48] |
0x00074ab4 mov.w r2, 0x1fe | r2 = 0x1fe;
0x00074ab8 ldr r3, [pc, 0x44] |
0x00074aba ldr r0, [pc, 0x48] |
0x00074abc add r1, pc | r1 = 0xe95be;
0x00074abe add r3, pc | r3 = 0xe95c2;
0x00074ac0 adds r1, 7 | r1 += 7;
0x00074ac2 add r0, pc | r0 = 0xe95cc;
0x00074ac4 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00074ac8 ldr r1, [pc, 0x3c] |
0x00074aca movw r2, 0x1ff | r2 = 0x1ff;
0x00074ace ldr r3, [pc, 0x3c] |
0x00074ad0 ldr r0, [pc, 0x3c] |
0x00074ad2 add r1, pc | r1 = 0xe95de;
0x00074ad4 add r3, pc | r3 = 0xe95e6;
0x00074ad6 adds r1, 7 | r1 += 7;
0x00074ad8 add r0, pc | r0 = 0xe95ec;
0x00074ada bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x00074ade mvn r0, 0x21 | r0 = ~0x21;
0x00074ae2 b 0x74a7e | goto label_0;
| label_9:
0x00074ae4 blx 0x927c | fprintf_chk ()
0x00074ae8 lsrs r2, r4 | r2 >>= r4;
0x00074aea movs r5, r0 | r5 = r0;
0x00074aec lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074aee movs r0, r0 |
0x00074af0 subs r4, r6, 4 | r4 = r6 - 4;
0x00074af2 movs r1, r0 | r1 = r0;
0x00074af4 subs r6, r4, 4 | r6 = r4 - 4;
0x00074af6 movs r1, r0 | r1 = r0;
0x00074af8 eors r2, r0 | r2 ^= r0;
0x00074afa movs r5, r0 | r5 = r0;
0x00074afc asrs r0, r2, 0x20 | r0 = r2 >> 0x20;
0x00074afe movs r3, r0 | r3 = r0;
0x00074b00 asrs r2, r1, 3 | r2 = r1 >> 3;
0x00074b02 movs r3, r0 | r3 = r0;
0x00074b04 rors r2, r0 | __asm ("rors r2, r0");
0x00074b06 movs r1, r0 | r1 = r0;
0x00074b08 lsrs r2, r7, 0x1f | r2 = r7 >> 0x1f;
0x00074b0a movs r3, r0 | r3 = r0;
0x00074b0c asrs r4, r6, 2 | r4 = r6 >> 2;
0x00074b0e movs r3, r0 | r3 = r0;
0x00074b10 asrs r0, r6, 0x20 | r0 = r6 >> 0x20;
0x00074b12 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74b14 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00074b14 () | void fcn_00074b14 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x00074b14 blmi 0xdc73ec | __asm ("blmi aav.0x00053fa6");
0x00074b18 push.w {r4, r5, r6, r7, r8, lr} |
0x00074b1c mov r6, r1 | r6 = r1;
0x00074b1e add r2, pc | r2 += pc;
0x00074b20 ldr r1, [pc, 0xcc] |
0x00074b22 sub sp, 0x10 |
0x00074b24 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00074b26 add r7, sp, 0 | r7 += var_0h;
0x00074b28 add r1, pc | r1 = 0xe971c;
0x00074b2a mov r5, r0 | r5 = r0;
0x00074b2c ldr r3, [r3] | r3 = *(r3);
0x00074b2e str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x00074b30 mov.w r3, 0 | r3 = 0;
0x00074b34 blx 0x9428 | r0 = fcn_00009428 ();
0x00074b38 cmp r0, 0 |
| if (r0 == 0) {
0x00074b3a beq 0x74bd6 | goto label_1;
| }
0x00074b3c ldrb r3, [r5, r0] | r3 = *((r5 + r0));
0x00074b3e mov r4, r0 | r4 = r0;
0x00074b40 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x00074b42 bne 0x74bd6 | goto label_1;
| }
0x00074b44 mov r1, r0 | r1 = r0;
0x00074b46 mov r0, r5 | r0 = r5;
0x00074b48 blx 0x92c8 | r0 = fcn_000092c8 ();
0x00074b4c add.w r3, r0, 8 | r3 = r0 + 8;
0x00074b50 mov.w r8, 0 | r8 = 0;
0x00074b54 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00074b58 mov r2, r0 | r2 = r0;
0x00074b5a sub.w sp, sp, r3 |
0x00074b5e mov r1, r5 | r1 = r5;
0x00074b60 mov r3, sp | r3 = sp;
0x00074b62 lsrs r3, r3, 3 | r3 >>= 3;
0x00074b64 strb.w r8, [r0, r3, lsl 3] | offset_0 = r3 << 3;
| *((r0 + offset_0)) = r8;
0x00074b68 mov r0, sp | r0 = sp;
0x00074b6a blx 0x8f9c | fcn_00008f9c ();
0x00074b6e adds r2, r7, 4 | r2 = r7 + 4;
0x00074b70 mov r1, r8 | r1 = r8;
0x00074b72 bl 0x7444c | r0 = fcn_0007444c (r0, r1, r2);
0x00074b76 cmp r0, 0 |
| if (r0 < 0) {
0x00074b78 blt 0x74bba | goto label_0;
| }
0x00074b7a adds r4, 1 | r4++;
0x00074b7c add.w r2, r7, 8 | r2 = r7 + 8;
0x00074b80 mov r1, r8 | r1 = r8;
0x00074b82 adds r0, r5, r4 | r0 = r5 + r4;
0x00074b84 bl 0x7444c | r0 = fcn_0007444c (r0, r1, r2);
0x00074b88 cmp r0, 0 |
| if (r0 < 0) {
0x00074b8a blt 0x74bba | goto label_0;
| }
0x00074b8c ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x00074b8e cmp.w r1, 0x1000 |
| if (r1 >= 0x1000) {
0x00074b92 bhs 0x74bdc | goto label_2;
| }
0x00074b94 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00074b96 cmp.w r3, 0x100000 |
0x00074b98 subs r0, r0, 6 | r0 -= 6;
| if (r0 >= r0) {
0x00074b9a bhs 0x74bdc | goto label_2;
| }
0x00074b9c mov r2, r8 | r2 = r8;
0x00074b9e uxtb r4, r3 | r4 = (int8_t) r3;
0x00074ba0 movt r2, 0xfff0 | r2 = (r2 & 0xFFFF) | 0xfff00000;
0x00074ba4 and.w r2, r2, r3, lsl 12 | r2 &= (r3 << 12);
0x00074ba8 lsrs r3, r3, 0x14 | r3 >>= 0x14;
0x00074baa orr.w r4, r4, r1, lsl 8 | r4 |= (r1 << 8);
0x00074bae orr.w r3, r3, r1, lsr 24 | r3 |= (r1 >> 24);
0x00074bb2 mov r0, r8 | r0 = r8;
0x00074bb4 orrs r2, r4 | r2 |= r4;
0x00074bb6 str r2, [r6] | *(r6) = r2;
0x00074bb8 str r3, [r6, 4] | *((r6 + 4)) = r3;
| do {
| label_0:
0x00074bba ldr r2, [pc, 0x38] |
0x00074bbc ldr r3, [pc, 0x2c] | r3 = *(0x74bec);
0x00074bbe add r2, pc | r2 = 0xe97b8;
0x00074bc0 ldr r3, [r2, r3] | r3 = *(0xe97b8);
0x00074bc2 ldr r2, [r3] | r2 = *(0xe97b8);
0x00074bc4 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00074bc6 eors r2, r3 | r2 ^= r3;
0x00074bc8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00074bcc bne 0x74be2 | goto label_3;
| }
0x00074bce adds r7, 0x10 | r7 += 0x10;
0x00074bd0 mov sp, r7 |
0x00074bd2 pop.w {r4, r5, r6, r7, r8, pc} |
| label_1:
0x00074bd6 mvn r0, 0x15 | r0 = ~0x15;
0x00074bda b 0x74bba |
| } while (1);
| label_2:
0x00074bdc mvn r0, 0x21 | r0 = ~0x21;
0x00074be0 b 0x74bba | goto label_0;
| label_3:
0x00074be2 blx 0x927c | fprintf_chk ()
0x00074be6 nop |
0x00074be8 subs r7, 0xa6 | r7 -= 0xa6;
0x00074bea movs r5, r0 | r5 = r0;
0x00074bec lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074bee movs r0, r0 |
0x00074bf0 adds r4, r3, 5 | r4 = r3 + 5;
0x00074bf2 movs r2, r0 | r2 = r0;
0x00074bf4 subs r7, 6 | r7 -= 6;
0x00074bf6 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74ccc */
| #include <stdint.h>
|
; (fcn) fcn.00074ccc () | void fcn_00074ccc () {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_4h_2;
0x00074ccc bmi 0x1461d10 |
0x00074cd0 ldr r3, [pc, 0x13c] |
0x00074cd2 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00074cd6 sub sp, 0xc |
0x00074cd8 add r2, pc | r2 += pc;
0x00074cda ldr r6, [sp, 0x28] | r6 = var_28h;
0x00074cdc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00074cde ldr r3, [r3] | r3 = *(0x74e10);
0x00074ce0 str r3, [sp, 4] | var_4h = r3;
0x00074ce2 mov.w r3, 0 | r3 = 0;
0x00074ce6 cmp r6, 0 |
| if (r6 == 0) {
0x00074ce8 beq 0x74dd2 | goto label_7;
| }
0x00074cea ldr.w r8, [r6] | r8 = *(r6);
0x00074cee mov r5, r8 | r5 = r8;
0x00074cf0 cmp.w r8, 0 |
0x00074cf2 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 != r0) {
0x00074cf4 beq 0x74cfe |
0x00074cf6 mov r0, r8 | r0 = r8;
0x00074cf8 blx 0x8f38 | r0 = fcn_00008f38 ();
0x00074cfa ldmdb lr, {r0, r2, sb, sl, lr} | __asm ("ldmdb lr, {r0, r2, sb, sl, lr}");
| }
0x00074cfe ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00074d00 add r3, sp, 0x30 | r3 += var_30h;
0x00074d02 str r3, [sp] | *(sp) = r3;
0x00074d04 add r4, sp, 0x2c | r4 += var_2ch;
0x00074d06 adds r3, r0, 1 | r3 = r0 + 1;
0x00074d08 it eq |
| if (r3 != r0) {
0x00074d0a moveq r7, r5 | r7 = r5;
| }
| if (r3 == r0) {
0x00074d0c beq 0x74d36 | goto label_8;
| }
| label_1:
0x00074d0e mov r7, r5 | r7 = r5;
| do {
| if (r0 != 0) {
0x00074d10 cbz r0, 0x74d22 |
0x00074d12 ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x00074d14 cbz r3, 0x74d22 | goto label_9;
| }
0x00074d16 blx 0x8f38 | fcn_00008f38 ();
0x00074d1a adds r0, 1 | r0++;
0x00074d1c adds r0, r0, r7 | r0 += r7;
| if (r0 >= r0) {
0x00074d1e bhs 0x74e02 | goto label_10;
| }
0x00074d20 mov r7, r0 | r7 = r0;
| }
| label_9:
0x00074d22 ldr r3, [sp] | r3 = *(sp);
0x00074d24 ldr r0, [r3] | r0 = *(r3);
0x00074d26 adds r3, 4 | r3 += 4;
0x00074d28 str r3, [sp] | *(sp) = r3;
0x00074d2a adds r2, r0, 1 | r2 = r0 + 1;
0x00074d2c bne 0x74d10 |
| } while (r2 != r0);
0x00074d2e cmp r6, 0 |
| if (r6 == 0) {
0x00074d30 beq 0x74dfc | goto label_11;
| }
0x00074d32 ldr.w r8, [r6] | r8 = *(r6);
| label_8:
0x00074d36 mov r0, r8 | r0 = r8;
0x00074d38 adds r1, r7, 1 | r1 = r7 + 1;
| label_5:
0x00074d3a cmp r1, 2 |
| if (r1 < 2) {
0x00074d3c bls 0x74df8 | goto label_12;
| }
0x00074d3e clz r7, r7 | r7 &= r7;
| if (r7 != 0) {
0x00074d42 cbz r7, 0x74d4c |
0x00074d44 rsb.w r7, r7, 0x20 | r7 = 0x20 - r7;
0x00074d48 movs r1, 1 | r1 = 1;
0x00074d4a lsls r1, r7 | r1 <<= r7;
| }
| label_4:
0x00074d4c blx 0x94dc | r0 = fcn_000094dc ();
0x00074d50 mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x00074d52 cbz r0, 0x74db2 | goto label_2;
| }
| if (r6 != 0) {
0x00074d54 cbz r6, 0x74d58 |
0x00074d56 str r0, [r6] | *(r6) = r0;
| }
0x00074d58 cmp r5, 0 |
| if (r5 == 0) {
0x00074d5a beq 0x74dee | goto label_13;
| }
0x00074d5c add r5, r7 | r5 += r7;
0x00074d5e ldrb r0, [r5, -0x1] | r0 = *((r5 - 0x1));
0x00074d62 sub.w r0, r0, 0x2f | r0 -= 0x2f;
0x00074d66 clz r0, r0 | r0 &= r0;
0x00074d6a lsrs r0, r0, 5 | r0 >>= 5;
| label_3:
0x00074d6c ldr.w r8, [pc, 0xa4] | r8 = *(0x74e14);
| label_6:
0x00074d70 mov.w sb, 0x2f | sb = 0x2f;
0x00074d74 add r8, pc | r8 += pc;
| do {
0x00074d76 ldr r6, [r4] | r6 = *(r4);
0x00074d78 adds r4, 4 | r4 += 4;
0x00074d7a str r4, [sp] | *(sp) = r4;
0x00074d7c adds r3, r6, 1 | r3 = r6 + 1;
| if (r3 == r6) {
0x00074d7e beq 0x74db2 | goto label_2;
| }
| if (r6 == 0) {
| label_0:
0x00074d80 cbz r6, 0x74daa | goto label_14;
| }
0x00074d82 ldrb r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x00074d84 cbz r3, 0x74daa | goto label_14;
| }
| if (r0 == 0) {
0x00074d86 cbnz r0, 0x74d90 |
0x00074d88 cmp r3, 0x2f |
0x00074d8a it ne |
| if (r3 != 0x2f) {
0x00074d8c strbne sb, [r5], 1 | *(r5) = sb;
| r5++;
| goto label_15;
| }
| }
| label_15:
0x00074d90 mov r1, r6 | r1 = r6;
0x00074d92 mov r0, r5 | r0 = r5;
0x00074d94 blx 0x8c38 | fcn_00008c38 ();
0x00074d98 mov r1, r8 | r1 = r8;
0x00074d9a mov r5, r0 | r5 = r0;
0x00074d9c mov r0, r6 | r0 = r6;
0x00074d9e bl 0x80428 | fcn_00080428 (r0, r1);
0x00074da2 subs r0, 0 |
0x00074da4 it ne |
| if (r0 == 0) {
0x00074da6 movne r0, 1 | r0 = 1;
| }
0x00074da8 b 0x74d76 |
| } while (1);
| label_14:
0x00074daa ldr r6, [r4], 4 | r6 = *(r4);
| r4 += 4;
0x00074dae adds r1, r6, 1 | r1 = r6 + 1;
| if (r1 != r6) {
0x00074db0 bne 0x74d80 | goto label_0;
| }
| label_2:
0x00074db2 ldr r2, [pc, 0x64] |
0x00074db4 ldr r3, [pc, 0x58] | r3 = *(0x74e10);
0x00074db6 add r2, pc | r2 = 0xe9bd4;
0x00074db8 ldr r3, [r2, r3] | r3 = *(0xe9bd4);
0x00074dba ldr r2, [r3] | r2 = *(0xe9bd4);
0x00074dbc ldr r3, [sp, 4] | r3 = var_4h;
0x00074dbe eors r2, r3 | r2 ^= r3;
0x00074dc0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00074dc4 bne 0x74e06 | goto label_16;
| }
0x00074dc6 mov r0, r7 | r0 = r7;
0x00074dc8 add sp, 0xc |
0x00074dca pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00074dce add sp, 0x10 |
0x00074dd0 bx lr | return;
| label_7:
0x00074dd2 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00074dd4 add r3, sp, 0x30 | r3 += var_30h;
0x00074dd6 add r4, sp, 0x2c | r4 += var_2ch;
0x00074dd8 str r3, [sp] | *(sp) = r3;
0x00074dda adds r2, r0, 1 | r2 = r0 + 1;
0x00074ddc it ne |
| if (r2 != r0) {
0x00074dde movne r5, r6 | r5 = r6;
| goto label_17;
| }
| if (r2 != r0) {
| label_17:
0x00074de0 bne 0x74d0e | goto label_1;
| }
0x00074de2 movs r0, 2 | r0 = 2;
0x00074de4 blx 0x9234 | r0 = blkid_safe_string ();
0x00074de8 mov r7, r0 | r7 = r0;
0x00074dea cmp r0, 0 |
| if (r0 == 0) {
0x00074dec beq 0x74db2 | goto label_2;
| }
| label_13:
0x00074dee movs r3, 0 | r3 = 0;
0x00074df0 movs r0, 1 | r0 = 1;
0x00074df2 mov r5, r7 | r5 = r7;
0x00074df4 strb r3, [r7] | *(r7) = r3;
0x00074df6 b 0x74d6c | goto label_3;
| label_12:
0x00074df8 movs r1, 2 | r1 = 2;
0x00074dfa b 0x74d4c | goto label_4;
| label_11:
0x00074dfc adds r1, r7, 1 | r1 = r7 + 1;
0x00074dfe mov r0, r6 | r0 = r6;
0x00074e00 b 0x74d3a | goto label_5;
| label_10:
0x00074e02 movs r7, 0 | r7 = 0;
0x00074e04 b 0x74db2 | goto label_2;
| label_16:
0x00074e06 blx 0x927c | fprintf_chk ()
0x00074e0a nop |
0x00074e0c subs r5, 0xec | r5 -= 0xec;
0x00074e0e movs r5, r0 | r5 = r0;
0x00074e10 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074e12 movs r0, r0 |
| if (r0 <= r0) {
0x00074e14 blo 0x74d70 | goto label_6;
| }
0x00074e16 movs r1, r0 | r1 = r0;
0x00074e18 subs r5, 0xe | r5 -= 0xe;
0x00074e1a movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74e1c */
| #include <stdint.h>
|
; (fcn) fcn.00074e1c () | void fcn_00074e1c (int16_t arg1, uint32_t arg2) {
| int16_t var_0h_3;
| int16_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
0x00074e1c ldr r2, [pc, 0xa8] |
0x00074e1e ldr r3, [pc, 0xac] | r3 = *(0x74ece);
0x00074e20 push {r4, r5, r6, r7, lr} |
0x00074e22 sub sp, 0xc |
0x00074e24 add r2, pc | r2 = 0xe9cf0;
0x00074e26 ldr r3, [r2, r3] |
0x00074e28 ldr r3, [r3] | r3 = *(0xe9cf0);
0x00074e2a str r3, [sp, 4] | var_4h_2 = r3;
0x00074e2c mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00074e30 cbz r0, 0x74e94 | goto label_1;
| }
0x00074e32 mov r5, r1 | r5 = r1;
0x00074e34 cmp r1, 0 |
| if (r1 == 0) {
0x00074e36 beq 0x74ea8 | goto label_2;
| }
0x00074e38 ldrb r3, [r0] | r3 = *(r0);
0x00074e3a mov r4, r0 | r4 = r0;
0x00074e3c cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00074e3e beq 0x74e84 | goto label_3;
| }
0x00074e40 movs r7, 0 | r7 = 0;
0x00074e42 mov r0, sp | r0 = sp;
0x00074e44 str r7, [sp] | *(sp) = r7;
0x00074e46 bl 0x74c74 | r0 = fcn_00074c74 (r0);
0x00074e4a subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00074e4c blt 0x74e8c | goto label_4;
| }
0x00074e4e mov r2, r4 | r2 = r4;
0x00074e50 ldr r1, [sp] | r1 = *(sp);
0x00074e52 mov.w r3, -1 | r3 = -1;
0x00074e56 mov r0, r7 | r0 = r7;
0x00074e58 bl 0x74ccc | r0 = fcn_00074ccc ();
0x00074e5c mov r4, r0 | r4 = r0;
0x00074e5e ldr r0, [sp] | r0 = *(sp);
0x00074e60 blx 0x8dac | fcn_00008dac ();
| if (r4 == 0) {
| do {
0x00074e64 cbz r4, 0x74ebc | goto label_5;
| }
0x00074e66 movs r6, 0 | r6 = 0;
0x00074e68 str r4, [r5] | *(r5) = r4;
| label_0:
0x00074e6a ldr r2, [pc, 0x64] |
0x00074e6c ldr r3, [pc, 0x5c] | r3 = *(0x74ecc);
0x00074e6e add r2, pc | r2 = 0xe9d44;
0x00074e70 ldr r3, [r2, r3] | r3 = *(0xe9d44);
0x00074e72 ldr r2, [r3] | r2 = *(0xe9d44);
0x00074e74 ldr r3, [sp, 4] | r3 = var_4h_2;
0x00074e76 eors r2, r3 | r2 ^= r3;
0x00074e78 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00074e7c bne 0x74ec2 | goto label_6;
| }
0x00074e7e mov r0, r6 | r0 = r6;
0x00074e80 add sp, 0xc |
0x00074e82 pop {r4, r5, r6, r7, pc} |
| label_3:
0x00074e84 blx 0x9200 | r0 = fcn_00009200 ();
0x00074e88 mov r4, r0 | r4 = r0;
0x00074e8a b 0x74e64 |
| } while (1);
| label_4:
0x00074e8c ldr r0, [sp] | r0 = *(sp);
0x00074e8e blx 0x8dac | fcn_00008dac ();
0x00074e92 b 0x74e6a | goto label_0;
| label_1:
0x00074e94 ldr r1, [pc, 0x3c] |
0x00074e96 movs r2, 0x56 | r2 = 0x56;
0x00074e98 ldr r3, [pc, 0x3c] |
0x00074e9a ldr r0, [pc, 0x40] |
0x00074e9c add r1, pc | r1 = 0xe9d74;
0x00074e9e add r3, pc | r3 = 0xe9d7a;
0x00074ea0 adds r1, 7 | r1 += 7;
0x00074ea2 add r0, pc | r0 = 0xe9d84;
0x00074ea4 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00074ea8 ldr r1, [pc, 0x34] |
0x00074eaa movs r2, 0x57 | r2 = 0x57;
0x00074eac ldr r3, [pc, 0x34] |
0x00074eae ldr r0, [pc, 0x38] |
0x00074eb0 add r1, pc | r1 = 0xe9d94;
0x00074eb2 add r3, pc | r3 = 0xe9d9a;
0x00074eb4 adds r1, 7 | r1 += 7;
0x00074eb6 add r0, pc | r0 = 0xe9da4;
0x00074eb8 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00074ebc mvn r6, 0xb | r6 = ~0xb;
0x00074ec0 b 0x74e6a | goto label_0;
| label_6:
0x00074ec2 blx 0x927c | fprintf_chk ()
0x00074ec6 nop |
0x00074ec8 subs r4, 0xa0 | r4 -= 0xa0;
0x00074eca movs r5, r0 | r5 = r0;
0x00074ecc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074ece movs r0, r0 |
0x00074ed0 subs r4, 0x56 | r4 -= 0x56;
0x00074ed2 movs r5, r0 | r5 = r0;
0x00074ed4 lsrs r0, r6, 0x14 | r0 = r6 >> 0x14;
0x00074ed6 movs r3, r0 | r3 = r0;
0x00074ed8 lsrs r6, r1, 0x1c | r6 = r1 >> 0x1c;
0x00074eda movs r3, r0 | r3 = r0;
0x00074edc strh r6, [r5, r1] | *((r5 + r1)) = r6;
0x00074ede movs r1, r0 | r1 = r0;
0x00074ee0 lsrs r4, r3, 0x14 | r4 = r3 >> 0x14;
0x00074ee2 movs r3, r0 | r3 = r0;
0x00074ee4 lsrs r2, r7, 0x1b | r2 = r7 >> 0x1b;
0x00074ee6 movs r3, r0 | r3 = r0;
0x00074ee8 sbcs r0, lr, 0x800000 | __asm ("sbcs r0, lr, aav.0x000000ff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x74eec */
| #include <stdint.h>
|
; (fcn) fcn.00074eec () | void fcn_00074eec (uint32_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_4h_3;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_68h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00074eec svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00074ef0 mov r8, r2 | r8 = r2;
0x00074ef2 ldr r2, [pc, 0xe4] |
0x00074ef4 sub sp, 0x8c |
0x00074ef6 ldr r3, [pc, 0xe4] | r3 = *(0x74fde);
0x00074ef8 add r2, pc | r2 = 0xe9ed6;
0x00074efa ldr r3, [r2, r3] |
0x00074efc ldr r3, [r3] | r3 = *(0xe9ed6);
0x00074efe str r3, [sp, 0x84] | var_84h = r3;
0x00074f00 mov.w r3, 0 | r3 = 0;
0x00074f04 cmp r1, 0 |
| if (r1 == 0) {
0x00074f06 beq 0x74fba | goto label_1;
| }
0x00074f08 mov r7, r0 | r7 = r0;
0x00074f0a mov sl, r0 | sl = r0;
0x00074f0c cmp r0, 0 |
| if (var_0h_2 == ) {
0x00074f0e beq 0x74f98 | goto label_0;
| }
0x00074f10 ldr r0, [r0] | r0 = *(r0);
0x00074f12 mov r6, r1 | r6 = r1;
0x00074f14 ldrd r3, r2, [r1] | __asm ("ldrd r3, r2, [r1]");
0x00074f16 adds r2, 0 | r2 += 0;
0x00074f18 cmp r0, 0 |
| if (var_0h_2 == ) {
0x00074f1a beq 0x74fd0 | goto label_2;
| }
0x00074f1c orrs r3, r2 | r3 |= r2;
0x00074f1e ldr r2, [pc, 0xc0] |
0x00074f20 ldr r3, [pc, 0xc0] |
0x00074f22 mov.w sl, 0 | sl = 0;
0x00074f26 ldr.w fp, [pc, 0xc0] |
0x00074f28 sub sp, 0x100 |
0x00074f2a add.w sb, sp, 0x18 | sb += var_18h;
0x00074f2e add r2, pc | r2 = 0xe9f14;
0x00074f30 add r3, pc | r3 = 0xe9f18;
0x00074f32 it ne |
| if (r3 == r2) {
0x00074f34 movne r3, r2 | r3 = r2;
| }
0x00074f36 str r3, [sp, 0x10] | var_10h = r3;
0x00074f38 add fp, pc | fp = 0xe9f26;
0x00074f3a ldr r3, [pc, 0xb0] |
0x00074f3c add.w fp, fp, 7 |
0x00074f40 add r3, pc | r3 = 0xe9f32;
0x00074f42 str r3, [sp, 0x14] | var_14h = r3;
| do {
0x00074f44 mov r1, sb | r1 = sb;
0x00074f46 blx 0x8e3c | r0 = fcn_00008e3c ();
0x00074f4a cmp r0, 0 |
| if (r0 >= 0) {
0x00074f4c blt 0x74f90 |
0x00074f4e add r0, sp, 0x68 | r0 += var_68h;
0x00074f50 bl 0x7c590 | fcn_0007c590 (r0, r1);
0x00074f54 ldrd r2, r3, [r6] | __asm ("ldrd r2, r3, [r6]");
0x00074f58 mov r5, r0 | r5 = r0;
0x00074f5a mov r4, r1 | r4 = r1;
0x00074f5c cmp r2, r0 |
0x00074f5e sbcs r3, r1 | __asm ("sbcs r3, r1");
| if (r2 >= r0) {
0x00074f60 bhs 0x74f90 | goto label_3;
| }
0x00074f62 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00074f66 cmp r0, 6 |
| if (r0 > 6) {
0x00074f68 ble 0x74f84 |
0x00074f6a ldr r2, [sp, 0x10] | r2 = var_10h;
0x00074f6c movs r1, 0 | r1 = 0;
0x00074f6e ldr r3, [r7] | r3 = *(r7);
0x00074f70 movs r0, 7 | r0 = 7;
0x00074f72 str r2, [sp, 4] | var_4h_3 = r2;
0x00074f74 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00074f76 str r3, [sp, 8] | var_8h = r3;
0x00074f78 movw r3, 0x2e3 | r3 = 0x2e3;
0x00074f7c str r2, [sp] | *(sp) = r2;
0x00074f7e mov r2, fp | r2 = fp;
0x00074f80 bl 0x71448 | fcn_00071448 ();
| }
0x00074f84 cmp.w r8, 0 |
| if (r8 == 0) {
0x00074f88 beq 0x74fb4 | goto label_4;
| }
0x00074f8a mov sl, r8 | sl = r8;
0x00074f8c strd r5, r4, [r6] | __asm ("strd r5, r4, [r6]");
| }
| label_3:
0x00074f90 ldr r0, [r7, 4]! | r0 = *((r7 += 4));
0x00074f94 cmp r0, 0 |
0x00074f96 bne 0x74f44 |
| } while (r0 != 0);
| do {
| label_0:
0x00074f98 ldr r2, [pc, 0x54] |
0x00074f9a ldr r3, [pc, 0x40] | r3 = *(0x74fde);
0x00074f9c add r2, pc | r2 = 0xe9f90;
0x00074f9e ldr r3, [r2, r3] | r3 = *(0xe9f90);
0x00074fa0 ldr r2, [r3] | r2 = *(0xe9f90);
0x00074fa2 ldr r3, [sp, 0x84] | r3 = var_84h;
0x00074fa4 eors r2, r3 | r2 ^= r3;
0x00074fa6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00074faa bne 0x74fd4 | goto label_5;
| }
0x00074fac mov r0, sl | r0 = sl;
0x00074fae add sp, 0x8c |
0x00074fb0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00074fb4 mov.w sl, 1 | sl = 1;
0x00074fb8 b 0x74f98 |
| } while (1);
| label_1:
0x00074fba ldr r1, [pc, 0x38] |
0x00074fbc movw r2, 0x2cf | r2 = 0x2cf;
0x00074fc0 ldr r3, [pc, 0x34] |
0x00074fc2 ldr r0, [pc, 0x38] |
0x00074fc4 add r1, pc | r1 = 0xe9fbe;
0x00074fc6 add r3, pc | r3 = 0xe9fc2;
0x00074fc8 adds r1, 7 | r1 += 7;
0x00074fca add r0, pc | r0 = 0xe9fcc;
0x00074fcc bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00074fd0 mov sl, r0 | sl = r0;
0x00074fd2 b 0x74f98 | goto label_0;
| label_5:
0x00074fd4 blx 0x927c | fprintf_chk ()
0x00074fd8 subs r3, 0xcc | r3 -= 0xcc;
0x00074fda movs r5, r0 | r5 = r0;
0x00074fdc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00074fde movs r0, r0 |
0x00074fe0 lsrs r6, r4, 0x13 | r6 = r4 >> 0x13;
0x00074fe2 movs r3, r0 | r3 = r0;
0x00074fe4 lsrs r0, r1, 0x13 | r0 = r1 >> 0x13;
0x00074fe6 movs r3, r0 | r3 = r0;
0x00074fe8 lsrs r4, r2, 0x12 | r4 = r2 >> 0x12;
0x00074fea movs r3, r0 | r3 = r0;
0x00074fec lsrs r4, r6, 0x1b | r4 = r6 >> 0x1b;
0x00074fee movs r3, r0 | r3 = r0;
0x00074ff0 subs r3, 0x28 | r3 -= 0x28;
0x00074ff2 movs r5, r0 | r5 = r0;
0x00074ff4 lsrs r0, r1, 0x10 | r0 = r1 >> 0x10;
0x00074ff6 movs r3, r0 | r3 = r0;
0x00074ff8 lsrs r2, r0, 0x16 | r2 = r0 >> 0x16;
0x00074ffa movs r3, r0 | r3 = r0;
0x00074ffc lsrs r2, r4, 0x10 | r2 = r4 >> 0x10;
0x00074ffe movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x75130 */
| #include <stdint.h>
|
; (fcn) fcn.00075130 () | void fcn_00075130 (uint32_t arg1) {
| int16_t var_14h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_0h;
| r0 = arg1;
0x00075130 blmi 0xc879f4 | __asm ("blmi aav.0x0005398a");
0x00075134 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00075138 sub sp, 0x14 |
0x0007513a add r2, pc | r2 += pc;
0x0007513c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007513e ldr r3, [r3] | r3 = *(r3);
0x00075140 str r3, [sp, 0xc] | var_ch = r3;
0x00075142 mov.w r3, 0 | r3 = 0;
0x00075146 cmp r0, 0 |
| if (r0 == 0) {
0x00075148 beq 0x751d4 | goto label_2;
| }
0x0007514a ldrb r3, [r0] | r3 = *(r0);
0x0007514c mov r6, r0 | r6 = r0;
| if (r3 == 0) {
0x0007514e cbnz r3, 0x7516c |
| label_0:
0x00075150 ldr r2, [pc, 0xa4] |
0x00075152 ldr r3, [pc, 0xa0] | r3 = *(0x751f6);
0x00075154 add r2, pc | r2 = 0xea350;
0x00075156 ldr r3, [r2, r3] | r3 = *(0xea350);
0x00075158 ldr r2, [r3] | r2 = *(0xea350);
0x0007515a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007515c eors r2, r3 | r2 ^= r3;
0x0007515e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00075162 bne 0x751ea | goto label_3;
| }
0x00075164 mov r0, r6 | r0 = r6;
0x00075166 add sp, 0x14 |
0x00075168 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0007516a strh r0, [r6, 0x1e] | *((r6 + 0x1e)) = r0;
| }
0x0007516c cmp r3, 0x2f |
0x0007516e it ne |
| if (r3 == 0x2f) {
0x00075170 movne r4, r0 | r4 = r0;
| }
| if (r3 == 0x2f) {
0x00075172 beq 0x751bc | goto label_4;
| }
| label_1:
0x00075174 movs r5, 0 | r5 = 0;
0x00075176 add.w r8, sp, 8 | r8 += var_8h;
0x0007517a add r7, sp, 4 | r7 += var_4h;
0x0007517c mov.w sb, 0x2f | sb = 0x2f;
0x0007517e lsrs r7, r5, 4 | r7 = r5 >> 4;
0x00075180 str r4, [sp, 4] | var_4h = r4;
0x00075182 b 0x7519a |
| while (r0 != 0) {
| if (r5 != 0) {
0x00075184 cbz r5, 0x7518a |
0x00075186 strb sb, [r4], 1 | *(r4) = sb;
| r4++;
| }
0x0007518a cmp r2, 0 |
| if (r2 < 0) {
0x0007518c blt 0x751c0 | goto label_5;
| }
0x0007518e mov r0, r4 | r0 = r4;
0x00075190 ldr r1, [sp, 8] | r1 = var_8h;
0x00075192 add r4, r2 | r4 += r2;
0x00075194 movs r5, 1 | r5 = 1;
0x00075196 blx 0x9358 | fcn_00009358 ();
0x0007519a mov r2, r8 | r2 = r8;
0x0007519c movs r1, 1 | r1 = 1;
0x0007519e mov r0, r7 | r0 = r7;
0x000751a0 bl 0x75070 | r0 = fcn_00075070 (r0, r1, r2);
0x000751a4 mov r2, r0 | r2 = r0;
0x000751a6 cmp r0, 0 |
0x000751a8 bne 0x75184 |
| }
0x000751aa cmp r6, r4 |
0x000751ac ittt eq |
| if (r6 != r4) {
0x000751ae moveq r4, r6 | r4 = r6;
| }
| if (r6 != r4) {
0x000751b0 moveq r3, 0x2e | r3 = 0x2e;
| }
| if (r6 != r4) {
0x000751b2 strbeq r3, [r4], 1 | *(r4) = r3;
| r4++;
| }
0x000751b6 movs r3, 0 | r3 = 0;
0x000751b8 strb r3, [r4] | *(r4) = r3;
0x000751ba b 0x75150 | goto label_0;
| label_4:
0x000751bc adds r4, r6, 1 | r4 = r6 + 1;
0x000751be b 0x75174 | goto label_1;
| label_5:
0x000751c0 ldr r5, [sp, 4] | r5 = var_4h;
0x000751c2 mov r0, r5 | r0 = r5;
0x000751c4 blx 0x8f38 | fcn_00008f38 ();
0x000751c8 mov r1, r5 | r1 = r5;
0x000751ca adds r2, r0, 1 | r2 = r0 + 1;
0x000751cc mov r0, r4 | r0 = r4;
0x000751ce blx 0x9358 | fcn_00009358 ();
0x000751d2 b 0x75150 | goto label_0;
| label_2:
0x000751d4 ldr r1, [pc, 0x24] |
0x000751d6 movw r2, 0x14f | r2 = 0x14f;
0x000751da ldr r3, [pc, 0x24] |
0x000751dc ldr r0, [pc, 0x24] |
0x000751de add r1, pc | r1 = 0xea3de;
0x000751e0 add r3, pc | r3 = 0xea3e6;
0x000751e2 adds r1, 7 | r1 += 7;
0x000751e4 add r0, pc | r0 = 0xea3ec;
0x000751e6 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x000751ea blx 0x927c | fprintf_chk ()
0x000751ee nop |
0x000751f0 subs r1, 0x8a | r1 -= 0x8a;
0x000751f2 movs r5, r0 | r5 = r0;
0x000751f4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000751f6 movs r0, r0 |
0x000751f8 subs r1, 0x70 | r1 -= 0x70;
0x000751fa movs r5, r0 | r5 = r0;
0x000751fc lsrs r6, r5, 7 | r6 = r5 >> 7;
0x000751fe movs r3, r0 | r3 = r0;
0x00075200 lsrs r0, r5, 0xe | r0 = r5 >> 0xe;
0x00075202 movs r3, r0 | r3 = r0;
0x00075204 strh r4, [r7, 0x28] | *((r7 + 0x28)) = r4;
0x00075206 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x75208 */
| #include <stdint.h>
|
; (fcn) fcn.00075208 () | void fcn_00075208 (int16_t arg1, uint32_t arg2, int16_t arg3) {
| uint32_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00075208 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x0007520c sub sp, 0x1c |
0x0007520e strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x00075212 mov r3, r0 | r3 = r0;
0x00075214 mov r5, r2 | r5 = r2;
0x00075216 ldr r0, [pc, 0xc4] |
0x00075218 ldr r2, [pc, 0xc4] | r2 = *(0x752e0);
0x0007521a add r0, pc | r0 = 0xea4fc;
0x0007521c ldr r2, [r0, r2] |
0x0007521e ldr r2, [r2] | r2 = *(0xea4fc);
0x00075220 str r2, [sp, 0x14] | var_14h = r2;
0x00075222 mov.w r2, 0 | r2 = 0;
0x00075224 lsls r0, r0, 8 | r0 <<= 8;
0x00075226 cmp r3, 0 |
| if (r3 == 0) {
0x00075228 beq 0x752aa | goto label_1;
| }
0x0007522a cmp r1, 0 |
| if (r1 == 0) {
0x0007522c beq 0x752c0 | goto label_2;
| }
0x0007522e ldrb r2, [r3] | r2 = *(r3);
0x00075230 ldrb r3, [r1] | r3 = *(r1);
0x00075232 sub.w r2, r2, 0x2f | r2 -= 0x2f;
0x00075236 sub.w r3, r3, 0x2f | r3 -= 0x2f;
0x0007523a clz r2, r2 | r2 &= r2;
0x0007523e clz r3, r3 | r3 &= r3;
0x00075242 lsrs r2, r2, 5 | r2 >>= 5;
0x00075244 lsrs r3, r3, 5 | r3 >>= 5;
0x00075246 cmp r2, r3 |
| if (r2 != r3) {
0x00075248 bne 0x75284 | goto label_3;
| }
0x0007524a add r7, sp, 0xc | r7 += var_ch;
0x0007524c add r6, sp, 4 | r6 += var_4h;
0x0007524e add.w sb, sp, 0x10 | sb += var_10h;
0x00075252 mov r8, sp | r8 = sp;
0x00075254 b 0x75276 |
| while (r4 >= var_4h) {
0x00075256 mov r2, sb | r2 = sb;
0x00075258 mov r1, r5 | r1 = r5;
0x0007525a mov r0, r8 | r0 = r8;
0x0007525c bl 0x75070 | r0 = fcn_00075070 (r0, r1, r2);
0x00075260 cmp r0, 0 |
| if (r0 < 0) {
0x00075262 blt 0x75284 | goto label_3;
| }
| if (r0 == 0) {
0x00075264 beq 0x752a0 | goto label_4;
| }
0x00075266 cmp r4, r0 |
| if (r4 != r0) {
0x00075268 bne 0x75284 | goto label_3;
| }
0x0007526a ldrd r0, r1, [sp, 0xc] | __asm ("ldrd r0, r1, [var_ch]");
0x0007526e mov r2, r4 | r2 = r4;
0x00075270 blx 0x94b8 | r0 = fcn_000094b8 ();
| if (r0 != 0) {
0x00075274 cbnz r0, 0x75284 | goto label_3;
| }
0x00075276 mov r2, r7 | r2 = r7;
0x00075278 mov r1, r5 | r1 = r5;
0x0007527a mov r0, r6 | r0 = r6;
0x0007527c bl 0x75070 | fcn_00075070 (r0, r1, r2);
0x00075280 subs r4, r0, 0 | r4 -= var_4h;
0x00075282 bge 0x75256 |
| }
| label_3:
0x00075284 movs r0, 0 | r0 = 0;
| do {
| label_0:
0x00075286 ldr r2, [pc, 0x5c] |
0x00075288 ldr r3, [pc, 0x54] | r3 = *(0x752e0);
0x0007528a add r2, pc | r2 = 0xea574;
0x0007528c ldr r3, [r2, r3] | r3 = *(0xea574);
0x0007528e ldr r2, [r3] | r2 = *(0xea574);
0x00075290 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00075292 eors r2, r3 | r2 ^= r3;
0x00075294 mov.w r3, 0 | r3 = 0;
0x00075296 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00075298 bne 0x752d6 | goto label_5;
| }
0x0007529a add sp, 0x1c |
0x0007529c pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_4:
0x000752a0 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000752a2 cmp r0, 0 |
0x000752a4 bne 0x75286 |
| } while (r0 != 0);
0x000752a6 ldr r0, [sp, 4] | r0 = var_4h;
0x000752a8 b 0x75286 | goto label_0;
| label_1:
0x000752aa ldr r1, [pc, 0x3c] |
0x000752ac movw r2, 0x1ab | r2 = 0x1ab;
0x000752b0 ldr r3, [pc, 0x38] |
0x000752b2 ldr r0, [pc, 0x3c] |
0x000752b4 add r1, pc | r1 = 0xea5a2;
0x000752b6 add r3, pc | r3 = 0xea5a6;
0x000752b8 adds r1, 7 | r1 += 7;
0x000752ba add r0, pc | r0 = 0xea5b0;
0x000752bc bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x000752c0 ldr r1, [pc, 0x30] |
0x000752c2 mov.w r2, 0x1ac | r2 = 0x1ac;
0x000752c6 ldr r3, [pc, 0x30] |
0x000752c8 ldr r0, [pc, 0x30] |
0x000752ca add r1, pc | r1 = 0xea5c2;
0x000752cc add r3, pc | r3 = 0xea5ca;
0x000752ce adds r1, 7 | r1 += 7;
0x000752d0 add r0, pc | r0 = 0xea5d0;
0x000752d2 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x000752d6 blx 0x927c | fprintf_chk ()
0x000752da nop |
0x000752dc subs r0, 0xaa | r0 -= 0xaa;
0x000752de movs r5, r0 | r5 = r0;
0x000752e0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000752e2 movs r0, r0 |
0x000752e4 subs r0, 0x3a | r0 -= 0x3a;
0x000752e6 movs r5, r0 | r5 = r0;
0x000752e8 lsrs r0, r3, 4 | r0 = r3 >> 4;
0x000752ea movs r3, r0 | r3 = r0;
0x000752ec lsrs r2, r7, 0xa | r2 = r7 >> 0xa;
0x000752ee movs r3, r0 | r3 = r0;
0x000752f0 strh r6, [r4, 0x22] | *((r4 + 0x22)) = r6;
0x000752f2 movs r2, r0 | r2 = r0;
0x000752f4 lsrs r2, r0, 4 | r2 = r0 >> 4;
0x000752f6 movs r3, r0 | r3 = r0;
0x000752f8 lsrs r4, r4, 0xa | r4 >>= 0xa;
0x000752fa movs r3, r0 | r3 = r0;
0x000752fc ldrb r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x000752fe movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x75328 */
| #include <stdint.h>
|
; (fcn) fcn.00075328 () | void fcn_00075328 (uint32_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x00075328 blmi 0x1787c9c | __asm ("blmi aav.0x00053792");
0x0007532c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00075330 sub sp, 0x24 |
0x00075332 add r2, pc | r2 += pc;
0x00075334 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00075336 ldr r3, [r3] | r3 = *(r3);
0x00075338 str r3, [sp, 0x1c] | var_1ch = r3;
0x0007533a mov.w r3, 0 | r3 = 0;
0x0007533e cmp r0, 0 |
| if (r0 == 0) {
0x00075340 beq 0x75442 | goto label_4;
| }
0x00075342 ldr r4, [r0] | r4 = *(r0);
0x00075344 mov sb, r0 | sb = r0;
0x00075346 cmp r4, 0 |
| if (r4 == 0) {
0x00075348 beq 0x75400 | goto label_5;
| }
0x0007534a ldr r3, [pc, 0x154] |
0x0007534c movs r6, 0 | r6 = 0;
0x0007534e mov r5, r1 | r5 = r1;
0x00075350 mov r8, r0 | r8 = r0;
0x00075352 add.w fp, sp, 0x18 |
0x00075356 str r6, [sp, 0xc] | var_ch = r6;
0x00075358 add r3, pc | r3 = 0xea7fe;
0x0007535a str r3, [sp, 0x14] | var_14h = r3;
0x0007535c b 0x753d8 |
| while (sl == 0x2f) {
0x0007535e cmp r5, 0 |
| if (r5 == 0) {
0x00075360 beq 0x7541c | goto label_6;
| }
0x00075362 mov.w r3, -1 | r3 = -1;
0x00075366 mov r2, r4 | r2 = r4;
0x00075368 mov r1, r5 | r1 = r5;
0x0007536a movs r0, 0 | r0 = 0;
0x0007536c bl 0x74ccc | r0 = fcn_00074ccc ();
0x00075370 mov r7, r0 | r7 = r0;
0x00075372 cmp r0, 0 |
| if (r0 == 0) {
0x00075374 beq 0x7545c | goto label_7;
| }
0x00075376 movs r3, 0 | r3 = 0;
0x00075378 movs r2, 0 | r2 = 0;
0x0007537a str r3, [sp] | *(sp) = r3;
0x0007537c mov r1, r5 | r1 = r5;
0x0007537e mov r3, fp | r3 = fp;
0x00075380 bl 0x6c85c | r0 = fcn_0006c85c (r0, r1, r2, r3);
0x00075384 adds r2, r0, 2 | r2 = r0 + 2;
0x00075386 mov r3, r0 | r3 = r0;
| if (r2 == r0) {
0x00075388 beq 0x75446 | goto label_8;
| }
0x0007538a cmp r0, 0 |
| if (r0 < 0) {
0x0007538c blt 0x75470 | goto label_9;
| }
0x0007538e mov r0, r7 | r0 = r7;
0x00075390 blx 0x8dac | fcn_00008dac ();
0x00075394 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00075396 movs r2, 1 | r2 = 1;
0x00075398 mov r1, r5 | r1 = r5;
0x0007539a mov r0, r7 | r0 = r7;
0x0007539c bl 0x75208 | fcn_00075208 (r0, r1, r2);
0x000753a0 str r0, [sp, 0x10] | var_10h = r0;
0x000753a2 cmp r0, 0 |
| if (r0 == 0) {
0x000753a4 beq 0x75486 | goto label_10;
| }
0x000753a6 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000753a8 bl 0x803c0 | fcn_000803c0 (r0, r1);
0x000753ac ldr r3, [sp, 0x10] | r3 = var_10h;
0x000753ae cmp r0, 0 |
| if (r0 == 0) {
0x000753b0 beq 0x75462 | goto label_11;
| }
| label_3:
0x000753b2 mov r0, r3 | r0 = r3;
0x000753b4 blx 0x9200 | r0 = fcn_00009200 ();
0x000753b8 mov sl, r0 | sl = r0;
0x000753ba mov r0, r7 | r0 = r7;
0x000753bc blx 0x8dac | fcn_00008dac ();
0x000753c0 cmp.w sl, 0 |
| if (sl == 0) {
0x000753c4 beq 0x7545c | goto label_7;
| }
| label_1:
0x000753c6 mov r0, r4 | r0 = r4;
0x000753c8 str.w sl, [sb, r6, lsl 2] | __asm ("str.w sl, [sb, r6, lsl 2]");
0x000753cc blx 0x8dac | fcn_00008dac ();
0x000753d0 ldr r4, [r8, 4]! | r4 = *((r8 += 4));
0x000753d4 adds r6, 1 | r6++;
| if (r4 == 0) {
0x000753d6 cbz r4, 0x753f8 | goto label_12;
| }
| label_0:
0x000753d8 ldrb.w sl, [r4] | sl = *(r4);
0x000753dc cmp.w sl, 0x2f |
0x000753e0 beq 0x7535e |
| }
0x000753e2 mov r0, r4 | r0 = r4;
0x000753e4 movs r4, 0 | r4 = 0;
0x000753e6 blx 0x8dac | fcn_00008dac ();
| label_2:
0x000753ea mov r0, r4 | r0 = r4;
0x000753ec blx 0x8dac | fcn_00008dac ();
0x000753f0 ldr r4, [r8, 4]! | r4 = *((r8 += 4));
0x000753f4 cmp r4, 0 |
| if (r4 != 0) {
0x000753f6 bne 0x753d8 | goto label_0;
| }
| label_12:
0x000753f8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000753fa str.w r4, [sb, r6, lsl 2] | __asm ("str.w r4, [sb, r6, lsl 2]");
| if (r3 != 0) {
0x000753fe cbnz r3, 0x75442 | goto label_4;
| }
| label_5:
0x00075400 mov r0, sb | r0 = sb;
| do {
0x00075402 ldr r2, [pc, 0xa0] |
0x00075404 ldr r3, [pc, 0x94] | r3 = *(0x7549c);
0x00075406 add r2, pc | r2 = 0xea8b0;
0x00075408 ldr r3, [r2, r3] | r3 = *(0xea8b0);
0x0007540a ldr r2, [r3] | r2 = *(0xea8b0);
0x0007540c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0007540e eors r2, r3 | r2 ^= r3;
0x00075410 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00075414 bne 0x75494 | goto label_13;
| }
0x00075416 add sp, 0x24 |
0x00075418 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0007541c mov r3, fp | r3 = fp;
0x0007541e mov r1, r5 | r1 = r5;
0x00075420 mov r2, r5 | r2 = r5;
0x00075422 mov r0, r4 | r0 = r4;
0x00075424 str r5, [sp] | *(sp) = r5;
0x00075426 bl 0x6c85c | r0 = fcn_0006c85c (r0, r1, r2, r3);
0x0007542a adds r1, r0, 2 | r1 = r0 + 2;
0x0007542c mov r3, r0 | r3 = r0;
| if (r1 == r0) {
0x0007542e beq 0x75456 | goto label_14;
| }
0x00075430 cmp r0, 0 |
| if (r0 < 0) {
0x00075432 blt 0x7546c | goto label_15;
| }
0x00075434 mov r0, r4 | r0 = r4;
0x00075436 mov r4, r5 | r4 = r5;
0x00075438 blx 0x8dac | fcn_00008dac ();
0x0007543c ldr.w sl, [sp, 0x18] | sl = var_18h;
0x00075440 b 0x753c6 | goto label_1;
| label_4:
0x00075442 movs r0, 0 | r0 = 0;
0x00075444 b 0x75402 |
| } while (1);
| label_8:
0x00075446 mov r0, r7 | r0 = r7;
0x00075448 str r4, [sp, 0x18] | var_18h = r4;
0x0007544a blx 0x8dac | fcn_00008dac ();
0x0007544e movs r4, 0 | r4 = 0;
0x00075450 ldr.w sl, [sp, 0x18] | sl = var_18h;
0x00075454 b 0x753c6 | goto label_1;
| label_14:
0x00075456 mov sl, r4 | sl = r4;
0x00075458 mov r4, r5 | r4 = r5;
0x0007545a b 0x753c6 | goto label_1;
| label_7:
0x0007545c movs r3, 1 | r3 = 1;
0x0007545e str r3, [sp, 0xc] | var_ch = r3;
0x00075460 b 0x753ea | goto label_2;
| label_11:
0x00075462 strb sl, [r3, -0x1] | *((r3 - 0x1)) = sl;
0x00075466 subs r3, 1 | r3--;
0x00075468 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0007546a b 0x753b2 | goto label_3;
| label_15:
0x0007546c mov r7, r4 | r7 = r4;
0x0007546e mov r4, r5 | r4 = r5;
| label_9:
0x00075470 mov r0, r7 | r0 = r7;
0x00075472 str r3, [sp, 0x10] | var_10h = r3;
0x00075474 blx 0x8dac | fcn_00008dac ();
0x00075478 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0007547a adds r3, 0xc | r3 += 0xc;
0x0007547c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007547e it eq |
| if (r3 != 0xc) {
0x00075480 moveq r3, 1 | r3 = 1;
| }
0x00075482 str r3, [sp, 0xc] | var_ch = r3;
0x00075484 b 0x753ea | goto label_2;
| label_10:
0x00075486 mov r0, r7 | r0 = r7;
0x00075488 mov sl, r4 | sl = r4;
0x0007548a blx 0x8dac | fcn_00008dac ();
0x0007548e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00075490 mov r4, r3 | r4 = r3;
0x00075492 b 0x753c6 | goto label_1;
| label_13:
0x00075494 blx 0x927c | fprintf_chk ()
0x00075498 adds r7, 0x92 | r7 += 0x92;
0x0007549a movs r5, r0 | r5 = r0;
0x0007549c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007549e movs r0, r0 |
0x000754a0 ldm r5!, {r3, r6, r7} | r3 = *(r5!);
| r6 = *((r5! + 4));
| r7 = *((r5! + 8));
0x000754a2 movs r1, r0 | r1 = r0;
0x000754a4 adds r6, 0xbe | r6 += 0xbe;
0x000754a6 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x754cc */
| #include <stdint.h>
|
; (fcn) fcn.000754cc () | void fcn_000754cc (uint32_t arg1, uint32_t arg2) {
| uint32_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x000754cc blmi 0x1087dd0 | __asm ("blmi aav.0x000535ee");
0x000754d0 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000754d4 sub sp, 0x1c |
0x000754d6 add r2, pc | r2 += pc;
0x000754d8 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x000754dc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000754de ldr r3, [r3] | r3 = *(r3);
0x000754e0 str r3, [sp, 0x14] | var_14h = r3;
0x000754e2 mov.w r3, 0 | r3 = 0;
0x000754e4 lsls r0, r0, 0xc | r0 <<= 0xc;
0x000754e6 cmp r0, 0 |
| if (r0 == 0) {
0x000754e8 beq 0x75590 | goto label_1;
| }
0x000754ea cmp r1, 0 |
| if (r1 == 0) {
0x000754ec beq 0x755a6 | goto label_2;
| }
0x000754ee ldrb r3, [r0] | r3 = *(r0);
0x000754f0 ldrb r2, [r1] | r2 = *(r1);
0x000754f2 sub.w r3, r3, 0x2f | r3 -= 0x2f;
0x000754f6 sub.w r2, r2, 0x2f | r2 -= 0x2f;
0x000754fa clz r3, r3 | r3 &= r3;
0x000754fe clz r2, r2 | r2 &= r2;
0x00075502 lsrs r3, r3, 5 | r3 >>= 5;
0x00075504 lsrs r2, r2, 5 | r2 >>= 5;
0x00075506 cmp r2, r3 |
| if (r2 > r3) {
0x00075508 bhi 0x7558a | goto label_3;
| }
| if (r2 <= r3) {
0x0007550a blo 0x7556e | goto label_4;
| }
0x0007550c add.w r8, sp, 0xc | r8 += var_ch;
0x00075510 add r7, sp, 4 | r7 += var_4h;
0x00075512 add r6, sp, 0x10 | r6 += var_10h;
0x00075514 mov r5, sp | r5 = sp;
0x00075516 b 0x75538 |
| while (r1 >= sb) {
0x00075518 cmp.w sb, 0 |
| if (sb == 0) {
0x0007551c beq 0x755bc | goto label_5;
| }
| if (r0 == 0) {
0x0007551e cbz r0, 0x7556e | goto label_4;
| }
0x00075520 cmp sb, r4 |
0x00075522 mov r2, sb | r2 = sb;
0x00075524 ldrd r0, r1, [sp, 0xc] | __asm ("ldrd r0, r1, [var_ch]");
0x00075528 it ge |
| if (sb < r4) {
0x0007552a movge r2, r4 | r2 = r4;
| }
0x0007552c blx 0x8a78 | r0 = getauxval ();
| if (r0 != 0) {
0x00075530 cbnz r0, 0x75570 | goto label_0;
| }
0x00075532 cmp sb, r4 |
| if (sb < r4) {
0x00075534 blt 0x7558a | goto label_3;
| }
| if (sb > r4) {
0x00075536 bgt 0x7556e | goto label_4;
| }
0x00075538 mov r2, r8 | r2 = r8;
0x0007553a movs r1, 1 | r1 = 1;
0x0007553c mov r0, r7 | r0 = r7;
0x0007553e bl 0x75070 | fcn_00075070 (r0, r1, r2);
0x00075542 mov r2, r6 | r2 = r6;
0x00075544 mov sb, r0 | sb = r0;
0x00075546 movs r1, 1 | r1 = 1;
0x00075548 mov r0, r5 | r0 = r5;
0x0007554a bl 0x75070 | r0 = fcn_00075070 (r0, r1, r2);
0x0007554e orrs.w r1, sb, r0 | r1 = sb | r0;
0x00075552 lsr.w r2, sb, 0x1f | r2 = sb >> 0x1f;
0x00075556 lsr.w r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x0007555a mov r4, r0 | r4 = r0;
0x0007555c bpl 0x75518 |
| }
0x0007555e cmp r2, r3 |
| if (r2 < r3) {
0x00075560 blt 0x7558a | goto label_3;
| }
| if (r2 <= r3) {
0x00075562 bgt 0x7556e |
0x00075564 ldrd r1, r0, [sp] | __asm ("ldrd r1, r0, [sp]");
0x00075568 blx 0x95e0 | fcn_000095e0 ();
0x0007556c b 0x75570 |
| } else {
| label_4:
0x0007556e movs r0, 1 | r0 = 1;
| }
| do {
| label_0:
0x00075570 ldr r2, [pc, 0x60] |
0x00075572 ldr r3, [pc, 0x5c] | r3 = *(0x755d2);
0x00075574 add r2, pc | r2 = 0xeab4c;
0x00075576 ldr r3, [r2, r3] | r3 = *(0xeab4c);
0x00075578 ldr r2, [r3] | r2 = *(0xeab4c);
0x0007557a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007557c eors r2, r3 | r2 ^= r3;
0x0007557e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00075582 bne 0x755c6 | goto label_6;
| }
0x00075584 add sp, 0x1c |
0x00075586 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_3:
0x0007558a mov.w r0, -1 | r0 = -1;
0x0007558e b 0x75570 |
| } while (1);
| label_1:
0x00075590 ldr r1, [pc, 0x44] |
0x00075592 movw r2, 0x1d5 | r2 = 0x1d5;
0x00075596 ldr r3, [pc, 0x44] |
0x00075598 ldr r0, [pc, 0x44] |
0x0007559a add r1, pc | r1 = 0xeab76;
0x0007559c add r3, pc | r3 = 0xeab7e;
0x0007559e adds r1, 7 | r1 += 7;
0x000755a0 add r0, pc | r0 = 0xeab84;
0x000755a2 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x000755a6 ldr r1, [pc, 0x3c] |
0x000755a8 mov.w r2, 0x1d6 | r2 = 0x1d6;
0x000755ac ldr r3, [pc, 0x38] |
0x000755ae ldr r0, [pc, 0x3c] |
0x000755b0 add r1, pc | r1 = 0xeab9a;
0x000755b2 add r3, pc | r3 = 0xeab9e;
0x000755b4 adds r1, 7 | r1 += 7;
0x000755b6 add r0, pc | r0 = 0xeaba8;
0x000755b8 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x000755ba invalid |
| label_5:
0x000755bc subs r4, r0, 0 | r4 = r0 - 0;
0x000755be it ne |
| if (r4 == r0) {
0x000755c0 movne r4, 1 | r4 = 1;
| }
0x000755c2 rsbs r0, r4, 0 | r0 = r4 - ;
0x000755c4 b 0x75570 | goto label_0;
| label_6:
0x000755c6 blx 0x927c | fprintf_chk ()
0x000755ca nop |
0x000755cc adds r5, 0xee | r5 += 0xee;
0x000755ce movs r5, r0 | r5 = r0;
0x000755d0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000755d2 movs r0, r0 |
0x000755d4 adds r5, 0x50 | r5 += 0x50;
0x000755d6 movs r5, r0 | r5 = r0;
0x000755d8 lsls r2, r6, 0x18 | r2 = r6 << 0x18;
0x000755da movs r3, r0 | r3 = r0;
0x000755dc lsls r4, r0, 0x1f | r4 = r0 << 0x1f;
0x000755de movs r3, r0 | r3 = r0;
0x000755e0 str r4, [r1, 0x70] | *((r1 + 0x70)) = r4;
0x000755e2 movs r1, r0 | r1 = r0;
0x000755e4 lsls r4, r3, 0x18 | r4 = r3 << 0x18;
0x000755e6 movs r3, r0 | r3 = r0;
0x000755e8 lsls r6, r5, 0x1e | r6 = r5 << 0x1e;
0x000755ea movs r3, r0 | r3 = r0;
0x000755ec str r6, [r0, 0x60] | *((r0 + 0x60)) = r6;
0x000755ee movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x75754 */
| #include <stdint.h>
|
; (fcn) fcn.00075754 () | void fcn_00075754 (int16_t arg1, int16_t arg2) {
| int16_t var_14h;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00075754 blmi 0x6c7fbc | __asm ("blmi aav.0x00053368");
0x00075758 push {r4, r5, r6, lr} |
0x0007575a sub sp, 8 |
0x0007575c add r2, pc | r2 += pc;
0x0007575e mov r4, r0 | r4 = r0;
0x00075760 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00075762 ldr r3, [r3] | r3 = *(r3);
0x00075764 str r3, [sp, 4] | var_4h = r3;
0x00075766 mov.w r3, 0 | r3 = 0;
0x00075768 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 == 0) {
0x0007576a cbz r0, 0x75796 | goto label_0;
| }
0x0007576c ldrb r0, [r0] | r0 = *(r0);
| if (r0 == 0) {
0x0007576e cbz r0, 0x75796 | goto label_0;
| }
0x00075770 mov r6, r1 | r6 = r1;
0x00075772 mov r5, sp | r5 = sp;
0x00075774 str r4, [sp] | *(sp) = r4;
0x00075776 b 0x75786 |
| while (r0 >= 0) {
0x00075778 ldr r3, [sp] | r3 = *(sp);
0x0007577a subs r2, r3, r4 | r2 = r3 - r4;
0x0007577c cmp.w r2, 0x1000 |
| if (r2 >= 0x1000) {
0x00075780 bge 0x75794 | goto label_1;
| }
0x00075782 ldrb r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x00075784 cbz r3, 0x757ae | goto label_2;
| }
0x00075786 movs r2, 0 | r2 = 0;
0x00075788 mov r1, r6 | r1 = r6;
0x0007578a mov r0, r5 | r0 = r5;
0x0007578c bl 0x75070 | r0 = fcn_00075070 (r0, r1, r2);
0x00075790 cmp r0, 0 |
0x00075792 bge 0x75778 |
| }
| label_1:
0x00075794 movs r0, 0 | r0 = 0;
| do {
| label_0:
0x00075796 ldr r2, [pc, 0x28] |
0x00075798 ldr r3, [pc, 0x20] | r3 = *(0x757bc);
0x0007579a add r2, pc | r2 = 0xeaf60;
0x0007579c ldr r3, [r2, r3] | r3 = *(0xeaf60);
0x0007579e ldr r2, [r3] | r2 = *(0xeaf60);
0x000757a0 ldr r3, [sp, 4] | r3 = var_4h;
0x000757a2 eors r2, r3 | r2 ^= r3;
0x000757a4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000757a8 bne 0x757b2 | goto label_3;
| }
0x000757aa add sp, 8 |
0x000757ac pop {r4, r5, r6, pc} |
| label_2:
0x000757ae movs r0, 1 | r0 = 1;
0x000757b0 b 0x75796 |
| } while (1);
| label_3:
0x000757b2 blx 0x927c | fprintf_chk ()
0x000757b6 nop |
0x000757b8 adds r3, 0x68 | r3 += 0x68;
0x000757ba movs r5, r0 | r5 = r0;
0x000757bc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000757be movs r0, r0 |
0x000757c0 adds r3, 0x2a | r3 += 0x2a;
0x000757c2 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x757c4 */
| #include <stdint.h>
|
; (fcn) fcn.000757c4 () | void fcn_000757c4 (int16_t arg1, uint32_t arg2, int16_t arg3) {
| uint32_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000757c4 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x000757c8 sub sp, 0x1c |
0x000757ca strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x000757ce mov r3, r0 | r3 = r0;
0x000757d0 mov sb, r2 | sb = r2;
0x000757d2 ldr r0, [pc, 0x1b4] |
0x000757d4 ldr r2, [pc, 0x1b4] | r2 = *(0x7598c);
0x000757d6 add r0, pc | r0 = 0xeb164;
0x000757d8 ldr r2, [r0, r2] |
0x000757da ldr r2, [r2] | r2 = *(0xeb164);
0x000757dc str r2, [sp, 0x14] | var_14h = r2;
0x000757de mov.w r2, 0 | r2 = 0;
0x000757e2 cmp r3, 0 |
| if (r3 == 0) {
0x000757e4 beq.w 0x7591c | goto label_7;
| }
0x000757e8 cmp r1, 0 |
| if (r1 == 0) {
0x000757ea beq.w 0x75930 | goto label_8;
| }
0x000757ee cmp.w sb, 0 |
| if (sb == 0) {
0x000757f2 beq.w 0x75944 | goto label_9;
| }
0x000757f6 ldrb r3, [r3] | r3 = *(r3);
0x000757f8 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x000757fa bne.w 0x75972 | goto label_6;
| }
0x000757fe ldrb r3, [r1] | r3 = *(r1);
0x00075800 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x00075802 bne.w 0x75972 | goto label_6;
| }
0x00075806 add r6, sp, 0xc | r6 += var_ch;
0x00075808 add r5, sp, 4 | r5 += var_4h;
0x0007580a add.w r8, sp, 0x10 | r8 += var_10h;
0x0007580e mov r7, sp | r7 = sp;
0x00075810 b 0x75832 |
| while (r4 >= var_4h) {
0x00075812 mov r2, r8 | r2 = r8;
0x00075814 movs r1, 1 | r1 = 1;
0x00075816 mov r0, r7 | r0 = r7;
0x00075818 bl 0x75070 | r0 = fcn_00075070 (r0, r1, r2);
0x0007581c cmp r0, 0 |
| if (r0 < 0) {
0x0007581e blt 0x7587e | goto label_10;
| }
| if (r4 == 0) {
0x00075820 cbz r4, 0x75884 | goto label_11;
| }
0x00075822 cmp r4, r0 |
| if (r4 != r0) {
0x00075824 bne 0x75866 | goto label_12;
| }
0x00075826 ldrd r0, r1, [sp, 0xc] | __asm ("ldrd r0, r1, [var_10h]");
0x0007582a mov r2, r4 | r2 = r4;
0x0007582c blx 0x94b8 | r0 = fcn_000094b8 ();
| if (r0 != 0) {
0x00075830 cbnz r0, 0x75866 | goto label_12;
| }
0x00075832 mov r2, r6 | r2 = r6;
0x00075834 movs r1, 1 | r1 = 1;
0x00075836 mov r0, r5 | r0 = r5;
0x00075838 bl 0x75070 | fcn_00075070 (r0, r1, r2);
0x0007583c subs r4, r0, 0 | r4 -= var_4h;
0x0007583e bge 0x75812 |
| }
| label_0:
0x00075840 movs r5, 0 | r5 = 0;
| label_1:
0x00075842 mov r0, r5 | r0 = r5;
0x00075844 blx 0x8dac | fcn_00008dac ();
0x00075848 ldr r2, [pc, 0x144] |
0x0007584a ldr r3, [pc, 0x140] | r3 = *(0x7598e);
0x0007584c add r2, pc | r2 = 0xeb1e0;
0x0007584e ldr r3, [r2, r3] | r3 = *(0xeb1e0);
0x00075850 ldr r2, [r3] | r2 = *(0xeb1e0);
0x00075852 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00075854 eors r2, r3 | r2 ^= r3;
0x00075856 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007585a bne.w 0x75982 | goto label_13;
| }
0x0007585e mov r0, r4 | r0 = r4;
0x00075860 add sp, 0x1c |
0x00075862 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_12:
0x00075866 movs r7, 1 | r7 = 1;
0x00075868 b 0x7586e |
| if (r7 == 1) {
| while (r4 >= var_4h) {
0x0007586a beq 0x7589e | goto label_14;
| }
0x0007586c adds r7, 1 | r7++;
0x0007586e mov r2, r6 | r2 = r6;
0x00075870 movs r1, 0 | r1 = 0;
0x00075872 mov r0, r5 | r0 = r5;
0x00075874 bl 0x75070 | fcn_00075070 (r0, r1, r2);
0x00075878 subs r4, r0, 0 | r4 -= var_4h;
0x0007587a bge 0x7586a |
| }
0x0007587c b 0x75840 | goto label_0;
| label_10:
0x0007587e mov r4, r0 | r4 = r0;
0x00075880 movs r5, 0 | r5 = 0;
0x00075882 b 0x75842 | goto label_1;
| label_11:
0x00075884 cmp r0, 0 |
| if (r0 != 0) {
0x00075886 bne 0x75958 | goto label_15;
| }
0x00075888 ldr r0, [pc, 0x108] |
0x0007588a add r0, pc | r0 = 0xeb222;
0x0007588c blx 0x9200 | fcn_00009200 ();
0x0007588e ldc p6, c4, [r8], 0x14 | __asm ("ldc p6, c4, [r8], 0x14");
0x00075892 cmp r0, 0 |
| if (r0 == 0) {
0x00075894 beq 0x75964 | goto label_16;
| }
| label_2:
0x00075896 str.w r5, [sb] | __asm ("str.w r5, [sb]");
0x0007589a movs r5, 0 | r5 = 0;
0x0007589c b 0x75842 | goto label_1;
| label_14:
0x0007589e ldr r6, [sp, 0x10] | r6 = var_10h;
0x000758a0 add.w r5, r7, r7, lsl 1 | r5 = r7 + (r7 << 1);
0x000758a4 cmp r6, 0 |
| if (r6 == 0) {
0x000758a6 beq 0x7597a | goto label_17;
| }
0x000758a8 ldrb.w r8, [r6] | r8 = *(r6);
0x000758ac cmp.w r8, 0 |
| if (r8 == 0) {
0x000758b0 beq 0x7596c | goto label_18;
| }
| label_4:
0x000758b2 mov r0, r6 | r0 = r6;
0x000758b4 cmp.w r8, 0 |
0x000758b8 it ne |
| if (r8 == 0) {
0x000758ba addne r5, 1 | r5++;
| }
0x000758bc blx 0x8f38 | r0 = fcn_00008f38 ();
0x000758c0 add r5, r0 | r5 += r0;
| label_5:
0x000758c2 cmp r5, 1 |
0x000758c4 mov r0, r5 | r0 = r5;
0x000758c6 it lo |
| if (r5 >= 1) {
0x000758c8 movlo r0, 1 | r0 = 1;
| }
0x000758ca blx 0x9234 | r0 = blkid_safe_string ();
0x000758ce mov r5, r0 | r5 = r0;
0x000758d0 cmp r0, 0 |
| if (r0 == 0) {
0x000758d2 beq 0x75964 | goto label_16;
| }
| if (r7 == 0) {
0x000758d4 cbz r7, 0x758ea | goto label_19;
| }
0x000758d6 ldr r3, [pc, 0xc0] |
0x000758d8 add r3, pc | r3 = 0xeb276;
0x000758da ldrh r2, [r3] | r2 = *(r3);
0x000758dc ldrb r3, [r3, 2] | r3 = *((r3 + 2));
| do {
0x000758de subs r7, 1 | r7--;
0x000758e0 strh r2, [r0] | *(r0) = r2;
0x000758e2 strb r3, [r0, 2] | *((r0 + 2)) = r3;
0x000758e4 add.w r0, r0, 3 | r0 += 3;
0x000758e8 bne 0x758de |
| } while (r7 != 1);
| if (r6 == 0) {
| label_19:
0x000758ea cbz r6, 0x7590e | goto label_20;
| }
0x000758ec ldrb r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x000758ee cbz r3, 0x7590e | goto label_20;
| }
0x000758f0 mov r1, r6 | r1 = r6;
0x000758f2 blx 0x9050 | fcn_00009050 ();
0x000758f6 mov r0, r5 | r0 = r5;
| label_3:
0x000758f8 bl 0x75130 | fcn_00075130 (r0);
0x000758fc movs r1, 1 | r1 = 1;
0x000758fe mov r0, r5 | r0 = r5;
0x00075900 bl 0x75754 | r0 = fcn_00075754 (r0, r1);
0x00075904 cmp r0, 0 |
| if (r0 != 0) {
0x00075906 bne 0x75896 | goto label_2;
| }
0x00075908 mvn r4, 0x15 | r4 = ~0x15;
0x0007590c b 0x75842 | goto label_1;
| label_20:
0x0007590e movs r3, 0 | r3 = 0;
0x00075910 str.w r5, [sb] | __asm ("str.w r5, [sb]");
0x00075914 strb r3, [r0, -0x1] | *((r0 - 0x1)) = r3;
0x00075916 subs r4, 1 | r4--;
0x00075918 mov r5, r3 | r5 = r3;
0x0007591a b 0x75842 | goto label_1;
| label_7:
0x0007591c ldr r1, [pc, 0x7c] |
0x0007591e movs r2, 0x75 | r2 = 0x75;
0x00075920 ldr r3, [pc, 0x7c] |
0x00075922 ldr r0, [pc, 0x80] |
0x00075924 add r1, pc | r1 = 0xeb2c4;
0x00075926 add r3, pc | r3 = 0xeb2ca;
0x00075928 adds r1, 7 | r1 += 7;
0x0007592a add r0, pc | r0 = 0xeb2d4;
0x0007592c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x00075930 ldr r1, [pc, 0x74] |
0x00075932 movs r2, 0x76 | r2 = 0x76;
0x00075934 ldr r3, [pc, 0x74] |
0x00075936 ldr r0, [pc, 0x78] |
0x00075938 add r1, pc | r1 = 0xeb2e4;
0x0007593a add r3, pc | r3 = 0xeb2ea;
0x0007593c adds r1, 7 | r1 += 7;
0x0007593e add r0, pc | r0 = 0xeb2f4;
0x00075940 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x00075944 ldr r1, [pc, 0x6c] |
0x00075946 movs r2, 0x77 | r2 = 0x77;
0x00075948 ldr r3, [pc, 0x6c] |
0x0007594a ldr r0, [pc, 0x70] |
0x0007594c add r1, pc | r1 = 0xeb304;
0x0007594e add r3, pc | r3 = 0xeb30a;
0x00075950 adds r1, 7 | r1 += 7;
0x00075952 add r0, pc | r0 = 0xeb314;
0x00075954 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_15:
0x00075958 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0007595a blx 0x9200 | r0 = fcn_00009200 ();
0x0007595e mov r5, r0 | r5 = r0;
0x00075960 cmp r0, 0 |
| if (r0 != 0) {
0x00075962 bne 0x758f8 | goto label_3;
| }
| label_16:
0x00075964 movs r5, 0 | r5 = 0;
0x00075966 mvn r4, 0xb | r4 = ~0xb;
0x0007596a b 0x75842 | goto label_1;
| label_18:
0x0007596c cmp.w r5, 0x1000 |
| if (r5 < 0x1000) {
0x00075970 bls 0x758b2 | goto label_4;
| }
| label_6:
0x00075972 movs r5, 0 | r5 = 0;
0x00075974 mvn r4, 0x15 | r4 = ~0x15;
0x00075978 b 0x75842 | goto label_1;
| label_17:
0x0007597a cmp.w r5, 0x1000 |
| if (r5 < 0x1000) {
0x0007597e bls 0x758c2 | goto label_5;
| }
0x00075980 b 0x75972 | goto label_6;
| label_13:
0x00075982 blx 0x927c | fprintf_chk ()
0x00075986 nop |
0x00075988 adds r2, 0xee | r2 += 0xee;
0x0007598a movs r5, r0 | r5 = r0;
0x0007598c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007598e movs r0, r0 |
0x00075990 adds r2, 0x78 | r2 += 0x78;
0x00075992 movs r5, r0 | r5 = r0;
0x00075994 cmp r4, 0xe2 |
0x00075996 movs r1, r0 | r1 = r0;
0x00075998 adds r2, 0xb4 | r2 += 0xb4;
0x0007599a movs r1, r0 | r1 = r0;
0x0007599c lsls r0, r5, 0xa | r0 = r5 << 0xa;
0x0007599e movs r3, r0 | r3 = r0;
0x000759a0 lsls r2, r6, 0x11 | r2 = r6 << 0x11;
0x000759a2 movs r3, r0 | r3 = r0;
0x000759a4 lsls r6, r0, 0xc | r6 = r0 << 0xc;
0x000759a6 movs r3, r0 | r3 = r0;
0x000759a8 lsls r4, r2, 0xa | r4 = r2 << 0xa;
0x000759aa movs r3, r0 | r3 = r0;
0x000759ac lsls r6, r3, 0x11 | r6 = r3 << 0x11;
0x000759ae movs r3, r0 | r3 = r0;
0x000759b0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x759c0 */
| #include <stdint.h>
|
; (fcn) fcn.000759c0 () | void fcn_000759c0 (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000759c0 blmi 0x90824c | __asm ("blmi aav.0x000530fc");
0x000759c4 push {r4, r5, r6, lr} |
0x000759c6 mov r5, r1 | r5 = r1;
0x000759c8 add r2, pc | r2 += pc;
0x000759ca sub sp, 0x10 |
0x000759cc movs r6, 0 | r6 = 0;
0x000759ce movs r1, 1 | r1 = 1;
0x000759d0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000759d2 mov r4, r0 | r4 = r0;
0x000759d4 ldr r3, [r3] | r3 = *(r3);
0x000759d6 str r3, [sp, 0xc] | var_ch = r3;
0x000759d8 mov.w r3, 0 | r3 = 0;
0x000759dc str r6, [sp, 8] | var_8h = r6;
0x000759de bl 0x75754 | r0 = fcn_00075754 (r0, r1);
| if (r0 == 0) {
0x000759e2 cbz r0, 0x75a30 | goto label_1;
| }
0x000759e4 mov r0, r4 | r0 = r4;
0x000759e6 add r3, sp, 4 | r3 += var_4h;
0x000759e8 add r2, sp, 8 | r2 += var_8h;
0x000759ea mov r1, r6 | r1 = r6;
0x000759ec bl 0x755f0 | r0 = fcn_000755f0 (r0, r1, r2, r3);
0x000759f0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x000759f2 blt 0x75a16 | goto label_0;
| }
| if (r4 == r0) {
0x000759f4 beq 0x75a36 | goto label_2;
| }
0x000759f6 ldr r6, [sp, 4] | r6 = var_4h;
0x000759f8 mov r1, r4 | r1 = r4;
0x000759fa mov r0, r6 | r0 = r6;
0x000759fc blx 0x8f2c | r0 = fcn_00008f2c ();
0x00075a00 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x00075a02 cbz r0, 0x75a40 | goto label_3;
| }
0x00075a04 mov r0, r6 | r0 = r6;
0x00075a06 str r3, [r5] | *(r5) = r3;
0x00075a08 blx 0x8f38 | r0 = fcn_00008f38 ();
0x00075a0c cmp r4, r0 |
0x00075a0e ite hs |
| if (r4 < r0) {
0x00075a10 movhs r4, 0 | r4 = 0;
| }
| if (r4 >= r0) {
0x00075a12 movlo r4, 1 | r4 = 1;
| }
0x00075a14 lsls r4, r4, 0xe | r4 <<= 0xe;
| do {
| label_0:
0x00075a16 ldr r2, [pc, 0x38] |
0x00075a18 ldr r3, [pc, 0x30] | r3 = *(0x75a4c);
0x00075a1a add r2, pc | r2 = 0xeb470;
0x00075a1c ldr r3, [r2, r3] | r3 = *(0xeb470);
0x00075a1e ldr r2, [r3] | r2 = *(0xeb470);
0x00075a20 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00075a22 eors r2, r3 | r2 ^= r3;
0x00075a24 mov.w r3, 0 | r3 = 0;
0x00075a26 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00075a28 bne 0x75a3c | goto label_4;
| }
0x00075a2a mov r0, r4 | r0 = r4;
0x00075a2c add sp, 0x10 |
0x00075a2e pop {r4, r5, r6, pc} |
| label_1:
0x00075a30 mvn r4, 0x15 | r4 = ~0x15;
0x00075a34 b 0x75a16 |
| } while (1);
| label_2:
0x00075a36 mvn r4, 0x62 | r4 = ~0x62;
0x00075a3a b 0x75a16 | goto label_0;
| label_4:
0x00075a3c blx 0x927c | fprintf_chk ()
| label_3:
0x00075a40 mvn r4, 0xb | r4 = ~0xb;
0x00075a44 b 0x75a16 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x75a54 */
| #include <stdint.h>
|
; (fcn) fcn.00075a54 () | void fcn_00075a54 (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00075a54 push {r4, r5, r6, r7, lr} |
0x00075a56 mov r7, r1 | r7 = r1;
0x00075a58 ldr r1, [pc, 0xb0] |
0x00075a5a sub sp, 0x14 |
0x00075a5c movs r6, 0 | r6 = 0;
0x00075a5e add r3, sp, 4 | r3 += var_4h;
0x00075a60 ldr r2, [pc, 0xac] | r2 = *(0x75b10);
0x00075a62 mov r4, r0 | r4 = r0;
0x00075a64 add r1, pc | r1 = 0xeb574;
0x00075a66 ldr r2, [r1, r2] |
0x00075a68 mov r1, r6 | r1 = r6;
0x00075a6a ldr r2, [r2] | r2 = *(0xeb574);
0x00075a6c str r2, [sp, 0xc] | var_ch = r2;
0x00075a6e mov.w r2, 0 | r2 = 0;
0x00075a72 add r2, sp, 8 | r2 += var_8h;
0x00075a74 str r6, [sp, 8] | var_8h = r6;
0x00075a76 bl 0x755f0 | r0 = fcn_000755f0 (r0, r1, r2, r3);
0x00075a7a subs r5, r0, 0 | r5 = r0 - 0;
0x00075a7c it lt |
| if (r5 >= r0) {
0x00075a7e movlt r4, r6 | r4 = r6;
| }
| if (r5 < r0) {
0x00075a80 blt 0x75aac | goto label_0;
| }
| if (r5 == r0) {
0x00075a82 beq 0x75acc | goto label_1;
| }
0x00075a84 ldr r1, [sp, 8] | r1 = var_8h;
0x00075a86 cmp r1, r4 |
| if (r1 == r4) {
0x00075a88 beq 0x75ae0 | goto label_2;
| }
0x00075a8a subs r1, r1, r4 | r1 -= r4;
0x00075a8c mov r0, r4 | r0 = r4;
0x00075a8e blx 0x8f2c | r0 = fcn_00008f2c ();
0x00075a92 mov r4, r0 | r4 = r0;
0x00075a94 cmp r0, 0 |
| if (r0 == 0) {
0x00075a96 beq 0x75b04 | goto label_3;
| }
0x00075a98 bl 0x75130 | fcn_00075130 (r0);
0x00075a9c movs r1, 1 | r1 = 1;
0x00075a9e mov r0, r4 | r0 = r4;
0x00075aa0 bl 0x75754 | r0 = fcn_00075754 (r0, r1);
| if (r0 == 0) {
0x00075aa4 cbz r0, 0x75ada | goto label_4;
| }
0x00075aa6 str r4, [r7] | *(r7) = r4;
0x00075aa8 mov r5, r6 | r5 = r6;
0x00075aaa mov r4, r6 | r4 = r6;
| do {
| label_0:
0x00075aac mov r0, r4 | r0 = r4;
0x00075aae blx 0x8dac | fcn_00008dac ();
0x00075ab2 ldr r2, [pc, 0x60] |
0x00075ab4 ldr r3, [pc, 0x58] | r3 = *(0x75b10);
0x00075ab6 add r2, pc | r2 = 0xeb5d0;
0x00075ab8 ldr r3, [r2, r3] | r3 = *(0xeb5d0);
0x00075aba ldr r2, [r3] | r2 = *(0xeb5d0);
0x00075abc ldr r3, [sp, 0xc] | r3 = var_ch;
0x00075abe eors r2, r3 | r2 ^= r3;
0x00075ac0 mov.w r3, 0 | r3 = 0;
0x00075ac2 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00075ac4 bne 0x75b00 | goto label_5;
| }
0x00075ac6 mov r0, r5 | r0 = r5;
0x00075ac8 add sp, 0x14 |
0x00075aca pop {r4, r5, r6, r7, pc} |
| if (r4 == 0) {
| label_1:
0x00075acc cbz r4, 0x75ada | goto label_4;
| }
0x00075ace ldrb r3, [r4] | r3 = *(r4);
0x00075ad0 mov r4, r5 | r4 = r5;
0x00075ad2 mvn r5, 0x62 | r5 = ~0x62;
0x00075ad6 cmp r3, 0 |
0x00075ad8 bne 0x75aac |
| } while (r3 != 0);
| label_4:
0x00075ada mvn r5, 0x15 | r5 = ~0x15;
0x00075ade b 0x75aac | goto label_0;
| label_2:
0x00075ae0 ldrb r3, [r4] | r3 = *(r4);
0x00075ae2 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00075ae4 bne 0x75af8 |
0x00075ae6 ldr r0, [pc, 0x30] |
0x00075ae8 add r0, pc | r0 = 0xeb606;
0x00075aea blx 0x9200 | fcn_00009200 ();
0x00075aec invalid |
0x00075af0 mov r4, r6 | r4 = r6;
0x00075af2 mov r5, r6 | r5 = r6;
0x00075af4 str r0, [r7] | *(r7) = r0;
0x00075af6 b 0x75aac | goto label_0;
| }
0x00075af8 mov r4, r6 | r4 = r6;
0x00075afa mvn r5, 0x58 | r5 = ~0x58;
0x00075afe b 0x75aac | goto label_0;
| label_5:
0x00075b00 blx 0x927c | fprintf_chk ()
| label_3:
0x00075b04 movs r4, 0 | r4 = 0;
0x00075b06 mvn r5, 0xb | r5 = ~0xb;
0x00075b0a b 0x75aac | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x75b88 */
| #include <stdint.h>
|
; (fcn) fcn.00075b88 () | void fcn_00075b88 (uint32_t arg1) {
| int16_t var_4h;
| int16_t var_4ch;
| r0 = arg1;
0x00075b88 ldr r2, [pc, 0xa8] |
0x00075b8a ldr r3, [pc, 0xac] | r3 = *(0x75c3a);
0x00075b8c push {r4, lr} |
0x00075b8e sub sp, 0x50 |
0x00075b90 add r2, pc | r2 = 0xeb7c8;
0x00075b92 ldr r3, [r2, r3] |
0x00075b94 ldr r3, [r3] | r3 = *(0xeb7c8);
0x00075b96 str r3, [sp, 0x4c] | var_4ch = r3;
0x00075b98 mov.w r3, 0 | r3 = 0;
0x00075b9c cmp r0, 0 |
| if (r0 == 0) {
0x00075b9e beq 0x75c1a | goto label_1;
| }
0x00075ba0 ldrb r3, [r0] | r3 = *(r0);
0x00075ba2 mov r4, r0 | r4 = r0;
0x00075ba4 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x00075ba6 beq 0x75bd6 |
0x00075ba8 ldr r1, [pc, 0x90] |
0x00075baa add r1, pc | r1 = 0xeb7ea;
0x00075bac blx 0x95e0 | r0 = fcn_000095e0 ();
| if (r0 == 0) {
0x00075bb0 cbz r0, 0x75bd6 | goto label_2;
| }
0x00075bb2 ldr r1, [pc, 0x8c] |
0x00075bb4 mov r0, r4 | r0 = r4;
0x00075bb6 add r1, pc | r1 = 0xeb7fc;
0x00075bb8 blx 0x95e0 | r0 = fcn_000095e0 ();
| if (r0 == 0) {
0x00075bbc cbz r0, 0x75bd6 | goto label_2;
| }
0x00075bbe ldr r1, [pc, 0x84] |
0x00075bc0 mov r0, r4 | r0 = r4;
0x00075bc2 add r1, pc | r1 = 0xeb80c;
0x00075bc4 blx 0x95e0 | fcn_000095e0 ();
0x00075bc6 stc p1, c11, [ip, -0xa0] | __asm ("stc p1, c11, [ip, -0xa0]");
0x00075bca ldr r1, [pc, 0x7c] |
0x00075bcc mov r0, r4 | r0 = r4;
0x00075bce add r1, pc | r1 = 0xeb81c;
0x00075bd0 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
| if (r0 == 0) {
0x00075bd4 cbz r0, 0x75bf0 | goto label_3;
| }
| }
| label_2:
0x00075bd6 movs r0, 1 | r0 = 1;
| do {
| label_0:
0x00075bd8 ldr r2, [pc, 0x70] |
0x00075bda ldr r3, [pc, 0x5c] | r3 = *(0x75c3a);
0x00075bdc add r2, pc | r2 = 0xeb82c;
0x00075bde ldr r3, [r2, r3] | r3 = *(0xeb82c);
0x00075be0 ldr r2, [r3] | r2 = *(0xeb82c);
0x00075be2 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00075be4 eors r2, r3 | r2 ^= r3;
0x00075be6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00075bea bne 0x75c30 | goto label_4;
| }
0x00075bec add sp, 0x50 |
0x00075bee pop {r4, pc} |
| label_3:
0x00075bf0 mov r0, r4 | r0 = r4;
0x00075bf2 movs r1, 0x2e | r1 = 0x2e;
0x00075bf4 blx 0x8c90 | r0 = fcn_00008c90 ();
0x00075bf8 mov r4, r0 | r4 = r0;
0x00075bfa cmp r0, 0 |
0x00075bfc beq 0x75bd8 |
| } while (r0 == 0);
0x00075bfe ldr r1, [pc, 0x50] |
0x00075c00 add r3, sp, 4 | r3 += var_4h;
0x00075c02 movs r2, 0x48 | r2 = 0x48;
0x00075c04 mov r0, r3 | r0 = r3;
0x00075c06 add r1, pc | r1 = 0xeb85c;
0x00075c08 blx 0x8f9c | fcn_00008f9c ();
0x00075c0c adds r1, r4, 1 | r1 = r4 + 1;
0x00075c0e bl 0x7af74 | fcn_0007af74 (r0, r1);
0x00075c12 subs r0, 0 |
0x00075c14 it ne |
| if (r0 == 0) {
0x00075c16 movne r0, 1 | r0 = 1;
| }
0x00075c18 b 0x75bd8 | goto label_0;
| label_1:
0x00075c1a ldr r1, [pc, 0x38] |
0x00075c1c movw r2, 0x4b2 | r2 = 0x4b2;
0x00075c20 ldr r3, [pc, 0x34] |
0x00075c22 ldr r0, [pc, 0x38] |
0x00075c24 add r1, pc | r1 = 0xeb87e;
0x00075c26 add r3, pc | r3 = 0xeb882;
0x00075c28 adds r1, 7 | r1 += 7;
0x00075c2a add r0, pc | r0 = 0xeb88c;
0x00075c2c bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00075c30 blx 0x927c | fprintf_chk ()
0x00075c34 cmp r7, 0x34 |
0x00075c36 movs r5, r0 | r5 = r0;
0x00075c38 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00075c3a movs r0, r0 |
0x00075c3c lsls r6, r2, 2 | r6 = r2 << 2;
0x00075c3e movs r3, r0 | r3 = r0;
0x00075c40 lsls r6, r2, 2 | r6 = r2 << 2;
0x00075c42 movs r3, r0 | r3 = r0;
0x00075c44 lsls r6, r2, 2 | r6 = r2 << 2;
0x00075c46 movs r3, r0 | r3 = r0;
0x00075c48 lsls r2, r3, 2 | r2 = r3 << 2;
0x00075c4a movs r3, r0 | r3 = r0;
0x00075c4c cmp r6, 0xe8 |
0x00075c4e movs r5, r0 | r5 = r0;
0x00075c50 adds r7, 0x6e | r7 += 0x6e;
0x00075c52 movs r5, r0 | r5 = r0;
0x00075c54 vaddl.u32 q0, d8, d2 | __asm ("vaddl.u32 q0, d8, d2");
0x00075c58 lsls r6, r5, 6 | r6 = r5 << 6;
0x00075c5a movs r3, r0 | r3 = r0;
0x00075c5c ldrb r2, [r0, 6] | r2 = *((r0 + 6));
0x00075c5e movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x76194 */
| #include <stdint.h>
|
; (fcn) fcn.00076194 () | void fcn_00076194 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00076194 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00076198 sub sp, 0x1c |
0x0007619a str r1, [sp, 4] | var_4h = r1;
0x0007619c mov r6, r2 | r6 = r2;
0x0007619e mov r5, r0 | r5 = r0;
0x000761a0 add.w r8, sp, 0x10 | r8 += var_10h;
0x000761a2 lsrs r0, r2, 0x20 | r0 = r2 >> 0x20;
0x000761a4 ldr r1, [pc, 0xb4] |
0x000761a6 add.w sl, sp, 0xc | sl += var_ch;
0x000761aa ldr r2, [pc, 0xb4] | r2 = *(0x76262);
0x000761ac mov.w sb, 0 | sb = 0;
0x000761b0 ldr.w fp, [pc, 0xb0] |
0x000761b4 add r1, pc | r1 = 0xec414;
0x000761b6 ldr r3, [r0] | r3 = *(r0);
0x000761b8 ldr r2, [r1, r2] |
0x000761ba add fp, pc | fp = 0xec422;
0x000761bc ldr r2, [r2] | r2 = *(0xec414);
0x000761be str r2, [sp, 0x14] | var_14h = r2;
0x000761c0 mov.w r2, 0 | r2 = 0;
0x000761c4 str r3, [sp, 0xc] | var_ch = r3;
0x000761c6 movs r3, 0xa1 | r3 = 0xa1;
0x000761c8 movs r2, 0 | r2 = 0;
0x000761ca mov r1, r8 | r1 = r8;
0x000761cc mov r0, sl | r0 = sl;
0x000761ce str.w sb, [sp, 0x10] | __asm ("str.w sb, [var_10h]");
0x000761d2 bl 0x695ac | fcn_000695ac (r0, r1, r2, r3);
0x000761d6 subs r4, r0, 0 | r4 -= var_ch;
| if (r4 < var_ch) {
0x000761d8 blt 0x76242 | goto label_3;
| }
0x000761da ldr r7, [sp, 0x10] | r7 = var_10h;
| if (r4 == var_ch) {
0x000761dc beq 0x76246 | goto label_4;
| }
0x000761de mov r1, fp | r1 = fp;
0x000761e0 mov r0, r7 | r0 = r7;
0x000761e2 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x000761e6 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000761e8 cbz r0, 0x76222 | goto label_5;
| }
0x000761ea bl 0x7e874 | r0 = fcn_0007e874 ();
| if (r0 == 0) {
0x000761ee cbz r0, 0x7622e | goto label_6;
| }
0x000761f0 lsls r2, r6, 0x1f | r2 = r6 << 0x1f;
| if (r2 < r6) {
0x000761f2 bmi 0x76236 | goto label_7;
| }
| label_0:
0x000761f4 ldr r7, [sp, 0x10] | r7 = var_10h;
| do {
0x000761f6 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000761f8 movs r0, 0 | r0 = 0;
0x000761fa ldr r3, [sp, 4] | r3 = var_4h;
0x000761fc movs r4, 1 | r4 = 1;
0x000761fe str r2, [r5] | *(r5) = r2;
0x00076200 str r7, [r3] | *(r3) = r7;
| label_1:
0x00076202 blx 0x8dac | fcn_00008dac ();
| label_2:
0x00076206 ldr r2, [pc, 0x60] |
0x00076208 ldr r3, [pc, 0x54] | r3 = *(0x76260);
0x0007620a add r2, pc | r2 = 0xec478;
0x0007620c ldr r3, [r2, r3] | r3 = *(0xec478);
0x0007620e ldr r2, [r3] | r2 = *(0xec478);
0x00076210 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00076212 eors r2, r3 | r2 ^= r3;
0x00076214 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00076218 bne 0x76256 | goto label_8;
| }
0x0007621a mov r0, r4 | r0 = r4;
0x0007621c add sp, 0x1c |
0x0007621e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00076222 lsls r3, r6, 0x1d | r3 = r6 << 0x1d;
0x00076224 bpl 0x761f6 |
| } while (r3 >= r6);
0x00076226 bl 0x7e874 | r0 = fcn_0007e874 ();
0x0007622a cmp r0, 0 |
| if (r0 == 0) {
0x0007622c beq 0x761f4 | goto label_0;
| }
| label_6:
0x0007622e ldr r0, [sp, 0x10] | r0 = var_10h;
0x00076230 blx 0x8dac | fcn_00008dac ();
0x00076232 ldc p7, c14, [ip, 0x31c]! | __asm ("ldc p7, c14, aav.0x000000ff!");
| label_7:
0x00076236 mov r1, r4 | r1 = r4;
0x00076238 mov r0, r8 | r0 = r8;
0x0007623a bl 0x7adac | fcn_0007adac (r0, r1);
0x0007623e subs r4, r0, 0 | r4 -= var_10h;
| if (r4 >= var_10h) {
0x00076240 bge 0x761f4 | goto label_0;
| }
| label_3:
0x00076242 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00076244 b 0x76202 | goto label_1;
| label_4:
0x00076246 mov r0, r7 | r0 = r7;
0x00076248 blx 0x8dac | fcn_00008dac ();
0x0007624c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007624e str r3, [r5] | *(r5) = r3;
0x00076250 ldr r3, [sp, 4] | r3 = var_4h;
0x00076252 str r4, [r3] | *(r3) = r4;
0x00076254 b 0x76206 | goto label_2;
| label_8:
0x00076256 blx 0x927c | fprintf_chk ()
0x0007625a nop |
0x0007625c cmp r1, 0x10 |
0x0007625e movs r5, r0 | r5 = r0;
0x00076260 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00076262 movs r0, r0 |
0x00076264 pop {r1, r2, r4} |
0x00076266 movs r1, r0 | r1 = r0;
0x00076268 cmp r0, 0xba |
0x0007626a movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7626c */
| #include <stdint.h>
|
; (fcn) fcn.0007626c () | void fcn_0007626c (int16_t arg1) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
0x0007626c movwlt fp, 0x8570 | __asm ("movwlt fp, aav.0x000000ff");
0x00076270 mov r4, r0 | r4 = r0;
0x00076272 ldr r0, [pc, 0x5c] |
0x00076274 add r0, pc | r0 = 0xec54a;
0x00076276 blx 0x8de8 | r0 = fcn_00008de8 ();
0x0007627a mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0007627c cbz r0, 0x7628c |
0x0007627e blx 0x9200 | r0 = fcn_00009200 ();
0x00076282 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x00076284 cbz r0, 0x762c8 | goto label_3;
| }
0x00076286 movs r0, 0 | r0 = 0;
0x00076288 str r3, [r4] | *(r4) = r3;
0x0007628a pop {r4, r5, r6, pc} |
| }
0x0007628c bl 0x7fdf4 | r0 = fcn_0007fdf4 ();
0x00076290 cmp r0, 0 |
| if (r0 > 0) {
0x00076292 ble 0x762a6 |
0x00076294 mov r3, r4 | r3 = r4;
0x00076296 mov r2, r5 | r2 = r5;
0x00076298 mov.w r1, -1 | r1 = -1;
0x0007629a adds r1, 0xff | r1 += 0xff;
0x0007629c pop.w {r4, r5, r6, lr} |
0x000762a0 movs r0, 1 | r0 = 1;
0x000762a2 b.w 0x76f84 |
| } else {
0x000762a6 ldr r0, [pc, 0x2c] |
0x000762a8 mov r1, r4 | r1 = r4;
0x000762aa pop.w {r4, r5, r6, lr} |
0x000762ae add r0, pc | r0 = 0xec588;
0x000762b0 b.w 0x6b320 | void (*0x6b320)() ();
0x000762b4 ldr r1, [pc, 0x20] |
0x000762b6 movs r2, 0x15 | r2 = 0x15;
0x000762b8 ldr r3, [pc, 0x20] |
0x000762ba ldr r0, [pc, 0x24] |
0x000762bc add r1, pc | r1 = 0xec598;
0x000762be add r3, pc | r3 = 0xec59e;
0x000762c0 adds r1, 7 | r1 += 7;
0x000762c2 add r0, pc | r0 = 0xec5a8;
0x000762c4 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x000762c8 mvn r0, 0xb | r0 = ~0xb;
0x000762cc pop {r4, r5, r6, pc} |
| }
0x00076f84 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00076f88 sub sp, 0x18 |
0x00076f8a ldr r6, [pc, 0x188] |
0x00076f8c ldr r5, [pc, 0x188] | r5 = *(0x77118);
0x00076f8e add r6, pc | r6 = 0xee0a8;
0x00076f90 ldr r5, [r6, r5] |
0x00076f92 ldr r5, [r5] | r5 = *(0xee0a8);
0x00076f94 str r5, [sp, 0x14] | var_14h = r5;
0x00076f96 mov.w r5, 0 | r5 = 0;
0x00076f98 lsls r0, r0, 0x14 | r0 <<= 0x14;
0x00076f9a movs r5, 0 | r5 = 0;
0x00076f9c str r5, [sp, 0xc] | var_ch = r5;
0x00076f9e cmp r3, 0 |
| if (r3 == 0) {
0x00076fa0 beq.w 0x770ce | goto label_4;
| }
0x00076fa4 cmp r0, 0 |
0x00076fa6 mov r4, r0 | r4 = r0;
| if (r0 < 0) {
0x00076fa8 blt.w 0x770e2 | goto label_5;
| }
0x00076fac mov r7, r3 | r7 = r3;
0x00076fae add r3, sp, 0x10 | r3 += var_10h;
0x00076fb0 str r3, [sp] | *(sp) = r3;
0x00076fb2 add r3, sp, 0xc | r3 += var_ch;
0x00076fb4 mov sb, r1 | sb = r1;
0x00076fb6 mov r6, r2 | r6 = r2;
0x00076fb8 bl 0x76e40 | fcn_00076e40 (r0, r1, r2, r3);
0x00076fba vcge.f32 d17, d2, d5 | __asm ("vcge.f32 d17, d2, d5");
0x00076fbe it lt |
| if (r0 >= 0) {
0x00076fc0 ldrlt r8, [sp, 0xc] | r8 = var_ch;
| }
| if (r0 < 0) {
0x00076fc4 blt 0x77022 | goto label_0;
| }
0x00076fc6 tst.w r6, 0xc |
0x00076fca and sl, r6, 2 | sl = r6 & 2;
| if ((r6 & 0xc) == 0) {
0x00076fce beq 0x77044 | goto label_6;
| }
0x00076fd0 lsrs r6, r6, 2 | r6 >>= 2;
0x00076fd2 and r6, r6, 2 | r6 &= 2;
0x00076fd6 orr r6, r6, 4 | r6 |= 4;
0x00076fda cmp.w sl, 0 |
| if (sl != 0) {
0x00076fde bne.w 0x770f6 | goto label_7;
| }
0x00076fe2 ldrd r8, r1, [sp, 0xc] | __asm ("ldrd r8, r1, [var_ch]");
0x00076fe6 mov r0, r8 | r0 = r8;
0x00076fe8 bl 0x7b69c | r0 = fcn_0007b69c (r0, r1, r2);
0x00076fec mov sb, r0 | sb = r0;
0x00076fee cmp r0, 0 |
| if (r0 == 0) {
0x00076ff0 beq.w 0x7710a | goto label_8;
| }
0x00076ff4 ldr r0, [r0] | r0 = *(r0);
0x00076ff6 mov r5, sb | r5 = sb;
| if (r0 != 0) {
0x00076ff8 cbnz r0, 0x7700c | goto label_9;
| }
0x00076ffa b 0x770b2 | goto label_10;
| do {
0x00076ffc ldr r0, [r5] | r0 = *(r5);
0x00076ffe blx 0x8dac | fcn_00008dac ();
0x00077002 str r4, [r5] | *(r5) = r4;
0x00077004 ldr r0, [r5, 4]! | r0 = *((r5 += 4));
0x00077008 cmp r0, 0 |
| if (r0 == 0) {
0x0007700a beq 0x770b2 | goto label_10;
| }
| label_9:
0x0007700c mov r1, r6 | r1 = r6;
0x0007700e bl 0x691b4 | r0 = fcn_000691b4 (r0, r1);
0x00077012 mov r4, r0 | r4 = r0;
0x00077014 cmp r0, 0 |
0x00077016 bne 0x76ffc |
| } while (r0 != 0);
| label_1:
0x00077018 mov r0, sb | r0 = sb;
0x0007701a mvn r5, 0xb | r5 = ~0xb;
0x0007701e bl 0x7b004 | fcn_0007b004 (r0);
| label_0:
0x00077022 mov r0, r8 | r0 = r8;
0x00077024 blx 0x8dac | fcn_00008dac ();
0x00077028 ldr r2, [pc, 0xf0] |
0x0007702a ldr r3, [pc, 0xec] | r3 = *(0x7711a);
0x0007702c add r2, pc | r2 = 0xee14c;
0x0007702e ldr r3, [r2, r3] | r3 = *(0xee14c);
0x00077030 ldr r2, [r3] | r2 = *(0xee14c);
0x00077032 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00077034 eors r2, r3 | r2 ^= r3;
0x00077036 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007703a bne 0x77110 | goto label_11;
| }
0x0007703c mov r0, r5 | r0 = r5;
0x0007703e add sp, 0x18 |
0x00077040 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_6:
0x00077044 ldrd r8, r0, [sp, 0xc] | __asm ("ldrd r8, r0, [var_ch]");
0x00077048 cmp r0, 1 |
0x0007704a itttt ne |
| if (r0 == 1) {
0x0007704c subne r0, 2 | r0 -= 2;
| }
| if (r0 == 1) {
0x0007704e addne r4, r8, -1 | r4 = r8 + -1;
| }
| if (r0 == 1) {
0x00077052 addne r0, r8 | r0 += r8;
| }
| if (r0 != 1) {
0x00077054 movs r2, 0x20 | r2 = 0x20;
| }
| if (r2 == 0x20) {
0x00077056 beq 0x77064 | goto label_12;
| }
| do {
0x00077058 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
| if (r3 == 0) {
0x0007705c cbnz r3, 0x77060 |
0x0007705e strb r2, [r4] | *(r4) = r2;
| }
0x00077060 cmp r0, r4 |
0x00077062 bne 0x77058 |
| } while (r0 != r4);
| label_12:
0x00077064 ldr r1, [pc, 0xb8] |
0x00077066 mov r0, r8 | r0 = r8;
0x00077068 add r1, pc | r1 = 0xee18c;
0x0007706a bl 0x7a954 | fcn_0007a954 (r0, r1);
0x0007706e cmp.w sl, 0 |
0x00077072 bne 0x770a4 |
| while (1) {
0x00077074 clz r2, r5 | r2 &= r5;
0x00077078 mov r1, sb | r1 = sb;
0x0007707a lsrs r2, r2, 5 | r2 >>= 5;
0x0007707c mov r0, r8 | r0 = r8;
0x0007707e orr.w r2, sl, r2, lsl 1 | r2 = sl | (r2 << 1);
0x00077082 bl 0x69194 | r0 = fcn_00069194 (r0, r1, r2, r3, r4, r5, r6);
0x00077086 mov r4, r0 | r4 = r0;
0x00077088 cmp r0, 0 |
| if (r0 == 0) {
0x0007708a beq 0x7710a | goto label_8;
| }
0x0007708c blx 0x8f38 | r0 = fcn_00008f38 ();
0x00077090 adds r1, r0, 1 | r1 = r0 + 1;
0x00077092 mov r0, r4 | r0 = r4;
0x00077094 blx 0x94dc | r0 = fcn_000094dc ();
0x00077098 cmp r0, 0 |
0x0007709a it ne |
| if (r0 == 0) {
0x0007709c movne r4, r0 | r4 = r0;
| }
| label_2:
0x0007709e movs r5, 0 | r5 = 0;
0x000770a0 str r4, [r7] | *(r7) = r4;
0x000770a2 b 0x77022 | goto label_0;
0x000770a4 bl 0x70190 | r0 = fcn_00070190 (r0, r1, r2, r3);
0x000770a8 eor sl, r0, 1 | sl = r0 ^ 1;
0x000770ac uxtb.w sl, sl | sl = (int8_t) sl;
0x000770b0 b 0x77074 |
| }
| label_10:
0x000770b2 ldr r1, [pc, 0x70] |
0x000770b4 movs r3, 0 | r3 = 0;
0x000770b6 mov r2, r3 | r2 = r3;
0x000770b8 mov r0, sb | r0 = sb;
0x000770ba add r1, pc | r1 = 0xee1e4;
0x000770bc bl 0x7b3b0 | r0 = fcn_0007b3b0 (r0, r1, r2, r3, r4, r5);
0x000770c0 mov r4, r0 | r4 = r0;
0x000770c2 cmp r0, 0 |
| if (r0 == 0) {
0x000770c4 beq 0x77018 | goto label_1;
| }
0x000770c6 mov r0, sb | r0 = sb;
0x000770c8 bl 0x7b004 | fcn_0007b004 (r0);
0x000770cc b 0x7709e | goto label_2;
| label_4:
0x000770ce ldr r1, [pc, 0x58] |
0x000770d0 movs r2, 0xbe | r2 = 0xbe;
0x000770d2 ldr r3, [pc, 0x58] |
0x000770d4 ldr r0, [pc, 0x58] | r0 = *(0x77130);
0x000770d6 add r1, pc | r1 = 0xee204;
0x000770d8 add r3, pc | r3 = 0xee20a;
0x000770da adds r1, 7 | r1 += 7;
| do {
0x000770dc add r0, pc | r0 += pc;
0x000770de bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x000770e2 ldr r1, [pc, 0x50] |
0x000770e4 movs r2, 0xbf | r2 = 0xbf;
0x000770e6 ldr r3, [pc, 0x50] |
0x000770e8 ldr r0, [pc, 0x50] |
0x000770ea add r1, pc | r1 = 0xee224;
0x000770ec add r3, pc | r3 = 0xee22a;
0x000770ee adds r1, 7 | r1 += 7;
0x000770f0 add r0, pc | r0 = 0xee230;
0x000770f2 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x000770f6 ldr r1, [pc, 0x48] |
0x000770f8 movs r2, 0xd7 | r2 = 0xd7;
0x000770fa ldr r3, [pc, 0x48] |
0x000770fc ldr r0, [pc, 0x48] |
0x000770fe add r1, pc | r1 = 0xee244;
0x00077100 add r3, pc | r3 = 0xee24a;
0x00077102 adds r1, 7 | r1 += 7;
0x00077104 add r0, pc | r0 = 0xee250;
0x00077106 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00077108 invalid |
| label_8:
0x0007710a mvn r5, 0xb | r5 = ~0xb;
0x0007710e b 0x77022 | goto label_0;
| label_11:
0x00077110 blx 0x927c | fprintf_chk ()
0x00077114 subs r6, r6, r4 | r6 -= r4;
0x00077116 movs r5, r0 | r5 = r0;
0x00077118 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007711a movs r0, r0 |
0x0007711c subs r0, r3, r2 | r0 = r3 - r2;
0x0007711e movs r5, r0 | r5 = r0;
0x00077120 ldr.w r0, [r4] | r0 = *(r4);
0x00077124 bgt 0x770dc |
| } while (r5 > r0);
0x00077126 movs r2, r0 | r2 = r0;
0x00077128 vaddl.s16 q0, d14, d2 | __asm ("vaddl.s16 q0, d14, d2");
0x0007712c subs.w r0, r4, 0x820000 | r0 = r4 - 0x820000;
0x0007712e movs r2, r0 | r2 = r0;
0x00077130 rors r0, r5 | __asm ("rors r0, r5");
0x00077132 movs r1, r0 | r1 = r0;
0x00077134 vaddl.s8 q0, d10, d2 | __asm ("vaddl.s8 q0, d10, d2");
0x00077138 sub.w r0, r0, 0x820000 | r0 -= 0x820000;
0x0007713a movs r2, r0 | r2 = r0;
0x0007713c ldrsb r4, [r7, r6] | r4 = *((r7 + r6));
0x0007713e movs r2, r0 | r2 = r0;
0x00077140 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x762e4 */
| #include <stdint.h>
|
; (fcn) fcn.000762e4 () | void fcn_000762e4 (int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000762e4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000762e8 mov r7, r2 | r7 = r2;
0x000762ea ldr r2, [pc, 0xb4] |
0x000762ec mov r5, r3 | r5 = r3;
0x000762ee sub sp, 0x14 |
0x000762f0 ldr r3, [pc, 0xb0] | r3 = *(0x763a4);
0x000762f2 add r2, pc | r2 = 0xec698;
0x000762f4 ldr r3, [r2, r3] |
0x000762f6 ldr r3, [r3] | r3 = *(0xec698);
0x000762f8 str r3, [sp, 0xc] | var_ch = r3;
0x000762fa mov.w r3, 0 | r3 = 0;
0x000762fe cmp r1, 0 |
| if (r1 == 0) {
0x00076300 beq 0x76374 | goto label_0;
| }
0x00076302 ands r4, r5, 2 | r4 = r5 & 2;
0x00076306 itttt eq |
| if (r4 != r5) {
0x00076308 moveq r6, r1 | r6 = r1;
| }
| if (r4 != r5) {
0x0007630a addeq sb, sp, 8 | sb += var_8h;
| }
| if (r4 != r5) {
0x0007630e addeq r8, sp, 4 | r8 += var_4h;
| }
| if (r4 == r5) {
0x00076312 str r0, [sp, 4] | var_4h = r0;
| }
| if (r4 == r5) {
0x00076314 beq 0x7633c | goto label_1;
| }
0x00076316 b 0x76388 | goto label_2;
| if (r4 == r5) {
| do {
0x00076318 beq 0x76352 | goto label_3;
| }
0x0007631a movs r1, 0x3d | r1 = 0x3d;
0x0007631c mov r0, fp | r0 = fp;
0x0007631e blx 0x8bb0 | r0 = get_current_dir_name ();
0x00076322 mov r1, r0 | r1 = r0;
| if (r0 != 0) {
0x00076324 cbz r0, 0x7632a |
0x00076326 strb r4, [r1], 1 | *(r1) = r4;
| r1++;
| }
0x0007632a mov r2, r7 | r2 = r7;
0x0007632c mov r0, fp | r0 = fp;
0x0007632e blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t) (r0, r2);
0x00076330 subs.w sl, r0, 0 | sl = r0 - 0;
| if (sl < r0) {
0x00076334 blt 0x76352 | goto label_3;
| }
0x00076336 mov r0, fp | r0 = fp;
0x00076338 blx 0x8dac | fcn_00008dac ();
| label_1:
0x0007633c mov r2, r5 | r2 = r5;
0x0007633e mov r1, sb | r1 = sb;
0x00076340 mov r0, r8 | r0 = r8;
0x00076342 str r4, [sp, 8] | var_8h = r4;
0x00076344 bl 0x76194 | fcn_00076194 (r0, r1, r2);
0x00076348 subs.w sl, r0, 0 | sl -= var_4h;
0x0007634c ldr.w fp, [sp, 8] | fp = var_8h;
0x00076350 bge 0x76318 |
| } while (sl >= var_4h);
| label_3:
0x00076352 mov r0, fp | r0 = fp;
0x00076354 blx 0x8dac | fcn_00008dac ();
0x00076358 ldr r2, [pc, 0x4c] |
0x0007635a ldr r3, [pc, 0x48] | r3 = *(0x763a6);
0x0007635c add r2, pc | r2 = 0xec708;
0x0007635e ldr r3, [r2, r3] | r3 = *(0xec708);
0x00076360 ldr r2, [r3] | r2 = *(0xec708);
0x00076362 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00076364 eors r2, r3 | r2 ^= r3;
0x00076366 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0007636a bne 0x7639c |
0x0007636c mov r0, sl | r0 = sl;
0x0007636e add sp, 0x14 |
0x00076370 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_0:
0x00076374 ldr r1, [pc, 0x34] |
0x00076376 movs r2, 0x55 | r2 = 0x55;
0x00076378 ldr r3, [pc, 0x34] |
0x0007637a ldr r0, [pc, 0x38] |
0x0007637c add r1, pc | r1 = 0xec72c;
0x0007637e add r3, pc | r3 = 0xec732;
0x00076380 adds r1, 7 | r1 += 7;
0x00076382 add r0, pc | r0 = 0xec73c;
0x00076384 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00076388 ldr r1, [pc, 0x2c] | r1 = *(0x763b8);
0x0007638a movs r2, 0x59 | r2 = 0x59;
0x0007638c ldr r3, [pc, 0x2c] |
0x0007638e bics r2, r3 | __asm ("bics r2, r3");
0x00076390 movs r7, r0 | r7 = r0;
0x00076392 add r3, pc | r3 = 0xec752;
0x00076394 adds r1, 7 | r1 += 7;
0x00076396 add r0, pc | r0 += pc;
0x00076398 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| }
0x0007639c blx 0x927c | fprintf_chk ()
0x000763a0 add r3, pc | r3 += pc;
0x000763a2 movs r5, r0 | r5 = r0;
0x000763a4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000763a6 movs r0, r0 |
0x000763a8 movs r7, 0x68 | r7 = 0x68;
0x000763aa movs r5, r0 | r5 = r0;
0x000763ac invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x763c4 */
| #include <stdint.h>
|
; (fcn) fcn.000763c4 () | void fcn_000763c4 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000763c4 invalid |
0x000763c8 ldr r1, [pc, 0x68] |
0x000763ca mov r7, r2 | r7 = r2;
0x000763cc sub sp, 0xc |
0x000763ce movs r3, 0 | r3 = 0;
0x000763d0 ldr r2, [pc, 0x64] | r2 = *(0x76438);
0x000763d2 add r1, pc | r1 = 0xec80a;
0x000763d4 ldr r2, [r1, r2] |
0x000763d6 ldr r2, [r2] | r2 = *(0xec80a);
0x000763d8 str r2, [sp, 4] | var_4h = r2;
0x000763da mov.w r2, 0 | r2 = 0;
0x000763de str r3, [sp] | *(sp) = r3;
| if (r0 != 0) {
0x000763e0 cbz r0, 0x7641c |
0x000763e2 mov r5, r0 | r5 = r0;
0x000763e4 mov r0, sp | r0 = sp;
0x000763e6 bl 0x7626c | fcn_0007626c (r0);
0x000763ea subs r4, r0, 0 | r4 -= var_0h;
| if (r4 >= var_0h) {
0x000763ec blt 0x763fc |
0x000763ee ldr r0, [sp] | r0 = *(sp);
0x000763f0 mov r3, r7 | r3 = r7;
0x000763f2 mov r2, r6 | r2 = r6;
0x000763f4 mov r1, r5 | r1 = r5;
0x000763f6 bl 0x762e4 | r0 = fcn_000762e4 (r0, r1, r2, r3);
0x000763fa mov r4, r0 | r4 = r0;
| }
0x000763fc ldr r0, [sp] | r0 = *(sp);
0x000763fe blx 0x8dac | fcn_00008dac ();
0x00076402 ldr r2, [pc, 0x38] |
0x00076404 ldr r3, [pc, 0x30] | r3 = *(0x76438);
0x00076406 add r2, pc | r2 = 0xec848;
0x00076408 ldr r3, [r2, r3] | r3 = *(0xec848);
0x0007640a ldr r2, [r3] | r2 = *(0xec848);
0x0007640c ldr r3, [sp, 4] | r3 = var_4h;
0x0007640e eors r2, r3 | r2 ^= r3;
0x00076410 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00076414 bne 0x76430 | goto label_0;
| }
0x00076416 mov r0, r4 | r0 = r4;
0x00076418 add sp, 0xc |
0x0007641a pop {r4, r5, r6, r7, pc} |
| }
0x0007641c ldr r1, [pc, 0x20] |
0x0007641e movs r2, 0x76 | r2 = 0x76;
0x00076420 ldr r3, [pc, 0x20] |
0x00076422 ldr r0, [pc, 0x24] |
0x00076424 add r1, pc | r1 = 0xec868;
0x00076426 add r3, pc | r3 = 0xec86e;
0x00076428 adds r1, 7 | r1 += 7;
0x0007642a add r0, pc | r0 = 0xec878;
0x0007642c bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_0:
0x00076430 blx 0x927c | fprintf_chk ()
0x00076434 movs r6, 0xf2 | r6 = 0xf2;
0x00076436 movs r5, r0 | r5 = r0;
0x00076438 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007643a movs r0, r0 |
0x0007643c movs r6, 0xbe | r6 = 0xbe;
0x0007643e movs r5, r0 | r5 = r0;
0x00076440 smlawb r0, r0, r2, r0 | __asm ("smlawb r0, r0, r2, r0");
0x00076444 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x764c4 */
| #include <stdint.h>
|
; (fcn) fcn.000764c4 () | void fcn_000764c4 (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000764c4 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000764c8 mov r4, r2 | r4 = r2;
0x000764ca ldr r2, [pc, 0x100] |
0x000764cc mov r6, r3 | r6 = r3;
0x000764ce sub sp, 0x1c |
0x000764d0 movs r7, 0 | r7 = 0;
0x000764d2 ldr r3, [pc, 0xfc] | r3 = *(0x765d2);
0x000764d4 add r2, pc | r2 = 0xecaa6;
0x000764d6 ldr r3, [r2, r3] |
0x000764d8 ldr r3, [r3] | r3 = *(0xecaa6);
0x000764da str r3, [sp, 0x14] | var_14h = r3;
0x000764dc mov.w r3, 0 | r3 = 0;
0x000764e0 str r7, [sp, 8] | var_8h = r7;
0x000764e2 cmp r0, 0 |
| if (r0 == 0) {
0x000764e4 beq 0x7659e | goto label_4;
| }
0x000764e6 mov r5, r1 | r5 = r1;
0x000764e8 cmp r1, 0 |
| if (r1 == 0) {
0x000764ea beq 0x765b2 | goto label_5;
| }
0x000764ec and r3, r4, 2 | r3 = r4 & 2;
0x000764f0 add.w sb, sp, 0x10 | sb += var_10h;
0x000764f2 lsrs r0, r2, 4 | r0 = r2 >> 4;
0x000764f4 add.w r8, sp, 0xc | r8 += var_ch;
0x000764f8 str r7, [sp] | *(sp) = r7;
0x000764fa str r0, [sp, 0xc] | var_ch = r0;
0x000764fc str r3, [sp, 4] | var_4h = r3;
0x000764fe b 0x7651c |
| while (r6 != 0) {
0x00076500 bl 0x7644c | r0 = fcn_0007644c (r0, r1);
| if (r0 != 0) {
0x00076504 cbz r0, 0x76516 |
0x00076506 ldrb r3, [r0] | r3 = *(r0);
0x00076508 cmp r3, 0x3d |
| if (r3 == 0x3d) {
0x0007650a beq 0x76552 | goto label_6;
| }
| if (r3 != 0) {
0x0007650c cbnz r3, 0x76516 | goto label_0;
| }
0x0007650e ldr r3, [sp, 4] | r3 = var_4h;
| if (r3 == 0) {
0x00076510 cbz r3, 0x76516 | goto label_0;
| }
| label_1:
0x00076512 movs r3, 1 | r3 = 1;
0x00076514 str r3, [sp] | *(sp) = r3;
| }
| label_0:
0x00076516 mov r0, sl | r0 = sl;
0x00076518 blx 0x8dac | fcn_00008dac ();
0x0007651c mov r2, r4 | r2 = r4;
0x0007651e mov r1, sb | r1 = sb;
0x00076520 mov r0, r8 | r0 = r8;
0x00076522 str r7, [sp, 0x10] | var_10h = r7;
0x00076524 bl 0x76194 | fcn_00076194 (r0, r1, r2);
0x00076528 subs.w fp, r0, 0 |
0x0007652c ldr.w sl, [sp, 0x10] | sl = var_10h;
| if (fp < var_ch) {
0x00076530 blt 0x76560 | goto label_7;
| }
| if (fp == var_ch) {
0x00076532 beq 0x76588 | goto label_8;
| }
0x00076534 mov r1, r5 | r1 = r5;
0x00076536 mov r0, sl | r0 = sl;
0x00076538 cmp r6, 0 |
0x0007653a bne 0x76500 |
| }
0x0007653c blx 0x95e0 | r0 = fcn_000095e0 ();
0x00076540 cmp r0, 0 |
| if (r0 != 0) {
0x00076542 bne 0x76516 | goto label_0;
| }
0x00076544 mov r0, sl | r0 = sl;
0x00076546 mov.w fp, 1 |
0x0007654a blx 0x8dac | fcn_00008dac ();
| label_2:
0x0007654e ldr r0, [sp, 8] | r0 = var_8h;
0x00076550 b 0x76568 | goto label_3;
| label_6:
0x00076552 adds r1, r0, 1 | r1 = r0 + 1;
0x00076554 add r0, sp, 8 | r0 += var_8h;
0x00076556 bl 0x7adac | fcn_0007adac (r0, r1);
0x0007655a subs.w fp, r0, 0 |
| if (fp >= var_8h) {
0x0007655e bge 0x76512 | goto label_1;
| }
| label_7:
0x00076560 mov r0, sl | r0 = sl;
0x00076562 blx 0x8dac | fcn_00008dac ();
0x00076566 ldr r0, [sp, 8] | r0 = var_8h;
| label_3:
0x00076568 blx 0x8dac | fcn_00008dac ();
0x0007656c ldr r1, [pc, 0x64] |
0x0007656e ldr r2, [pc, 0x60] | r2 = *(0x765d2);
0x00076570 add r1, pc | r1 = 0xecb48;
0x00076572 ldr r2, [r1, r2] | r2 = *(0xecb48);
0x00076574 ldr r1, [r2] | r1 = *(0xecb48);
0x00076576 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00076578 eors r1, r2 | r1 ^= r2;
0x0007657a mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x0007657e bne 0x765c6 | goto label_9;
| }
0x00076580 mov r0, fp | r0 = fp;
0x00076582 add sp, 0x1c |
0x00076584 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00076588 mov r0, sl | r0 = sl;
0x0007658a ldr.w fp, [sp] | fp = *(sp);
0x0007658e blx 0x8dac | fcn_00008dac ();
0x00076590 invalid |
| if (r1 == r2) {
0x00076594 beq 0x7654e | goto label_2;
| }
0x00076596 ldr r2, [sp, 8] | r2 = var_8h;
0x00076598 movs r0, 0 | r0 = 0;
0x0007659a str r2, [r6] | *(r6) = r2;
0x0007659c b 0x76568 | goto label_3;
| label_4:
0x0007659e ldr r1, [pc, 0x38] |
0x000765a0 movs r2, 0xb5 | r2 = 0xb5;
0x000765a2 ldr r3, [pc, 0x38] |
0x000765a4 ldr r0, [pc, 0x38] |
0x000765a6 add r1, pc | r1 = 0xecb84;
0x000765a8 add r3, pc | r3 = 0xecb8a;
0x000765aa adds r1, 7 | r1 += 7;
0x000765ac add r0, pc | r0 = 0xecb90;
0x000765ae bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x000765b2 ldr r1, [pc, 0x30] |
0x000765b4 movs r2, 0xb6 | r2 = 0xb6;
0x000765b6 ldr r3, [pc, 0x30] |
0x000765b8 ldr r0, [pc, 0x30] |
0x000765ba add r1, pc | r1 = 0xecba4;
0x000765bc add r3, pc | r3 = 0xecbaa;
0x000765be adds r1, 7 | r1 += 7;
0x000765c0 add r0, pc | r0 = 0xecbb0;
0x000765c2 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x000765c6 blx 0x927c | fprintf_chk ()
0x000765ca nop |
0x000765cc movs r5, 0xf0 | r5 = 0xf0;
0x000765ce movs r5, r0 | r5 = r0;
0x000765d0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000765d2 movs r0, r0 |
0x000765d4 movs r5, 0x54 | r5 = 0x54;
0x000765d6 movs r5, r0 | r5 = r0;
0x000765d8 vld1.8 {d0[0]}, [lr], r2 | __asm ("vld1.8 {d0[0]}, [lr], r2");
0x000765dc invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x76668 */
| #include <stdint.h>
|
; (fcn) fcn.00076668 () | void fcn_00076668 (uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00076668 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x0007666c mov r6, r2 | r6 = r2;
0x0007666e ldr r2, [pc, 0xb8] |
0x00076670 sub sp, 0x10 |
0x00076672 movs r4, 0 | r4 = 0;
0x00076674 mov r5, r0 | r5 = r0;
0x00076676 ldr r3, [pc, 0xb4] | r3 = *(0x7672e);
0x00076678 add r2, pc | r2 = 0xecda6;
0x0007667a ldr r3, [r2, r3] |
0x0007667c ldr r3, [r3] | r3 = *(0xecda6);
0x0007667e str r3, [sp, 0xc] | var_ch = r3;
0x00076680 mov.w r3, 0 | r3 = 0;
0x00076684 strd r4, r4, [sp, 4] | __asm ("strd r4, r4, [var_ch]");
0x00076688 cmp r0, 0 |
| if (r0 == 0) {
0x0007668a beq 0x766fc | goto label_1;
| }
0x0007668c ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x0007668e cbz r3, 0x766f2 | goto label_2;
| }
0x00076690 clz r0, r6 | r0 &= r6;
0x00076694 mov r7, r1 | r7 = r1;
0x00076696 lsrs r0, r0, 5 | r0 >>= 5;
0x00076698 ands.w r8, r0, r1, lsr 1 | r8 = r0 & (r1 >> 1);
| if (r8 != r0) {
0x0007669c bne 0x766fa | goto label_3;
| }
0x0007669e add r0, sp, 4 | r0 += var_ch;
0x000766a0 bl 0x7626c | fcn_0007626c (r0);
0x000766a4 subs r4, r0, 0 | r4 -= var_ch;
| if (r4 >= var_ch) {
0x000766a6 blt 0x766c8 |
0x000766a8 lsls r3, r7, 0x1c | r3 = r7 << 0x1c;
0x000766aa ldr r0, [sp, 4] | r0 = var_ch;
| if (r3 < r7) {
0x000766ac bmi 0x76702 | goto label_4;
| }
0x000766ae mov r3, r6 | r3 = r6;
| if (r6 != 0) {
0x000766b0 cbz r6, 0x766b4 |
0x000766b2 add r3, sp, 8 | r3 += var_8h;
| }
0x000766b4 mov r1, r5 | r1 = r5;
0x000766b6 mov r2, r7 | r2 = r7;
0x000766b8 bl 0x764c4 | r0 = fcn_000764c4 (r0, r1, r2, r3);
0x000766bc subs r4, r0, 0 | r4 = r0 - 0;
0x000766be ldr r5, [sp, 8] | r5 = var_8h;
| if (r4 < r0) {
0x000766c0 blt 0x766ca | goto label_0;
| }
| if (r4 == r0) {
0x000766c2 beq 0x76712 | goto label_5;
| }
| if (r6 == 0) {
0x000766c4 cbz r6, 0x766ca | goto label_0;
| }
0x000766c6 str r5, [r6] | *(r6) = r5;
| }
0x000766c8 movs r5, 0 | r5 = 0;
| do {
| label_0:
0x000766ca mov r0, r5 | r0 = r5;
0x000766cc blx 0x8dac | fcn_00008dac ();
0x000766d0 ldr r0, [sp, 4] | r0 = var_ch;
0x000766d2 blx 0x8dac | fcn_00008dac ();
0x000766d6 ldr r2, [pc, 0x58] |
0x000766d8 ldr r3, [pc, 0x50] | r3 = *(0x7672c);
0x000766da add r2, pc | r2 = 0xece10;
0x000766dc ldr r3, [r2, r3] | r3 = *(0xece10);
0x000766de ldr r2, [r3] | r2 = *(0xece10);
0x000766e0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000766e2 eors r2, r3 | r2 ^= r3;
0x000766e4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000766e8 bne 0x76722 | goto label_6;
| }
0x000766ea mov r0, r4 | r0 = r4;
0x000766ec add sp, 0x10 |
0x000766ee pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x000766f2 mov r5, r3 | r5 = r3;
0x000766f4 mvn r4, 0x15 | r4 = ~0x15;
0x000766f8 b 0x766ca |
| } while (1);
| label_3:
0x000766fa mov r5, r4 | r5 = r4;
| label_1:
0x000766fc mvn r4, 0x15 | r4 = ~0x15;
0x00076700 b 0x766ca | goto label_0;
| label_4:
0x00076702 mov r1, r5 | r1 = r5;
0x00076704 mov r3, r6 | r3 = r6;
0x00076706 mov r2, r7 | r2 = r7;
0x00076708 mov r5, r8 | r5 = r8;
0x0007670a bl 0x764c4 | r0 = fcn_000764c4 (r0, r1, r2, r3);
0x0007670e mov r4, r0 | r4 = r0;
0x00076710 b 0x766ca | goto label_0;
| label_5:
0x00076712 ldr r0, [sp, 4] | r0 = var_ch;
0x00076714 blx 0x8dac | fcn_00008dac ();
0x00076718 str r4, [sp, 4] | var_ch = r4;
0x0007671a cmp r6, 0 |
| if (r6 == 0) {
0x0007671c beq 0x766ca | goto label_0;
| }
0x0007671e str r4, [r6] | *(r6) = r4;
0x00076720 b 0x766ca | goto label_0;
| label_6:
0x00076722 blx 0x927c | fprintf_chk ()
0x00076726 nop |
0x00076728 movs r4, 0x4c | r4 = 0x4c;
0x0007672a movs r5, r0 | r5 = r0;
0x0007672c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007672e movs r0, r0 |
0x00076730 movs r3, 0xea | r3 = 0xea;
0x00076732 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x76734 */
| #include <stdint.h>
|
; (fcn) fcn.00076734 () | void fcn_00076734 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
0x00076734 invalid |
0x00076738 ldr r1, [pc, 0x84] |
0x0007673a sub sp, 8 |
0x0007673c movs r3, 0 | r3 = 0;
0x0007673e ldr r2, [pc, 0x84] | r2 = *(0x767c6);
0x00076740 add r1, pc | r1 = 0xecf04;
0x00076742 ldr r2, [r1, r2] |
0x00076744 ldr r2, [r2] | r2 = *(0xecf04);
0x00076746 str r2, [sp, 4] | var_4h_2 = r2;
0x00076748 mov.w r2, 0 | r2 = 0;
0x0007674c str r3, [sp] | *(sp) = r3;
| if (r5 == 0) {
0x0007674e cbz r5, 0x767a4 | goto label_0;
| }
0x00076750 mov r2, sp | r2 = sp;
0x00076752 movs r1, 2 | r1 = 2;
0x00076754 bl 0x76668 | r0 = fcn_00076668 (r0, r1, r2);
0x00076758 subs r4, r0, 0 | r4 = r0 - 0;
0x0007675a ldr r6, [sp] | r6 = *(sp);
| if (r4 < r0) {
0x0007675c blt 0x7677c | goto label_1;
| }
0x0007675e it eq |
| if (r4 != r0) {
0x00076760 strbeq r4, [r5] | *(r5) = r4;
| }
| if (r4 == r0) {
0x00076762 beq 0x7677c | goto label_1;
| }
| if (r6 == 0) {
0x00076764 cbz r6, 0x7679c | goto label_2;
| }
0x00076766 mov r0, r6 | r0 = r6;
0x00076768 bl 0x7408c | r0 = fcn_0007408c (r0);
0x0007676c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007676e blt 0x7677c | goto label_1;
| }
0x00076770 mov.w r4, 1 | r4 = 1;
0x00076774 ite ne |
| if (r4 == r0) {
0x00076776 movne r3, 1 | r3 = 1;
| }
| if (r4 != r0) {
0x00076778 moveq r3, 0 | r3 = 0;
| }
0x0007677a strb r3, [r5] | *(r5) = r3;
| do {
| label_1:
0x0007677c mov r0, r6 | r0 = r6;
0x0007677e blx 0x8dac | fcn_00008dac ();
0x00076782 ldr r2, [pc, 0x44] |
0x00076784 ldr r3, [pc, 0x3c] | r3 = *(0x767c4);
0x00076786 add r2, pc | r2 = 0xecf54;
0x00076788 ldr r3, [r2, r3] | r3 = *(0xecf54);
0x0007678a ldr r2, [r3] | r2 = *(0xecf54);
0x0007678c ldr r3, [sp, 4] | r3 = var_4h_2;
0x0007678e eors r2, r3 | r2 ^= r3;
0x00076790 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00076794 bne 0x767ba | goto label_3;
| }
0x00076796 mov r0, r4 | r0 = r4;
0x00076798 add sp, 8 |
0x0007679a pop {r4, r5, r6, pc} |
| label_2:
0x0007679c movs r3, 1 | r3 = 1;
0x0007679e mov r4, r3 | r4 = r3;
0x000767a0 strb r3, [r5] | *(r5) = r3;
0x000767a2 b 0x7677c |
| } while (1);
| label_0:
0x000767a4 ldr r1, [pc, 0x24] |
0x000767a6 mov.w r2, 0x11c | r2 = 0x11c;
0x000767aa ldr r3, [pc, 0x24] |
0x000767ac ldr r0, [pc, 0x24] |
0x000767ae add r1, pc | r1 = 0xecf7e;
0x000767b0 add r3, pc | r3 = 0xecf86;
0x000767b2 adds r1, 7 | r1 += 7;
0x000767b4 add r0, pc | r0 = 0xecf8c;
0x000767b6 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x000767ba blx 0x927c | fprintf_chk ()
0x000767be nop |
0x000767c0 movs r3, 0x84 | r3 = 0x84;
0x000767c2 movs r5, r0 | r5 = r0;
0x000767c4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000767c6 movs r0, r0 |
0x000767c8 movs r3, 0x3e | r3 = 0x3e;
0x000767ca movs r5, r0 | r5 = r0;
0x000767cc invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x76820 */
| #include <stdint.h>
|
; (fcn) fcn.00076820 () | void fcn_00076820 (uint32_t arg1, int16_t arg2) {
| uint32_t var_0h_2;
| int32_t var_0h_3;
| int16_t var_8h_3;
| int16_t var_8h_2;
| int32_t var_bh;
| int16_t var_8h;
| int32_t var_4h;
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x00076820 stmdahs r0, {r1, r3, r5, sb, fp, lr} | __asm ("stmdahs r0, {r1, r3, r5, sb, fp, lr}");
0x00076824 ldr r3, [pc, 0xa8] |
0x00076826 push {r4, r5, r7, lr} |
0x00076828 sub sp, 0x10 |
0x0007682a add r2, pc | r2 += pc;
0x0007682c add r7, sp, 8 | r7 += var_8h;
0x0007682e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00076830 ldr r3, [r3] | r3 = *(0x768d0);
0x00076832 str r3, [r7, 4] | var_4h = r3;
0x00076834 mov.w r3, 0 | r3 = 0;
| if (? < ?) {
0x00076838 blt 0x768b2 | goto label_0;
| }
0x0007683a mov r4, r1 | r4 = r1;
| if (? == ?) {
0x0007683c beq 0x76892 | goto label_1;
| }
0x0007683e ldr r1, [pc, 0x94] |
0x00076840 sub sp, 0x18 |
0x00076842 ldr r3, [pc, 0x94] |
0x00076844 add r5, sp, 8 | r5 += var_8h_3;
0x00076846 movs r2, 0x17 | r2 = 0x17;
0x00076848 add r1, pc | r1 = 0xed122;
0x0007684a strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0007684e add r3, pc | r3 = 0xed12c;
0x00076850 movs r1, 1 | r1 = 1;
0x00076852 mov r0, r5 | r0 = r5;
0x00076854 blx 0x9494 | fcn_00009494 ();
0x00076856 invalid |
| do {
0x00076858 mov r1, r4 | r1 = r4;
0x0007685a mov r0, r5 | r0 = r5;
0x0007685c bl 0x767e8 | fcn_000767e8 (r0, r1);
0x0007685e vmlal.u8 q9, d4, d0 | __asm ("vmlal.u8 q9, d4, d0");
0x00076860 cmp r0, 0 |
| if (r0 >= 0) {
0x00076862 blt 0x76878 |
0x00076864 ldr r1, [pc, 0x74] |
0x00076866 ldr r0, [r4] | r0 = *(r4);
0x00076868 add r1, pc | r1 = 0xed148;
0x0007686a bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x0007686e mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x00076870 cbz r0, 0x76878 | goto label_2;
| }
0x00076872 movs r2, 0 | r2 = 0;
0x00076874 mov r0, r2 | r0 = r2;
0x00076876 strb r2, [r3] | *(r3) = r2;
| }
| label_2:
0x00076878 ldr r2, [pc, 0x64] |
0x0007687a ldr r3, [pc, 0x54] | r3 = *(0x768d2);
0x0007687c add r2, pc | r2 = 0xed160;
0x0007687e ldr r3, [r2, r3] | r3 = *(0xed160);
0x00076880 ldr r2, [r3] | r2 = *(0xed160);
0x00076882 ldr r3, [r7, 4] | r3 = var_4h;
0x00076884 eors r2, r3 | r2 ^= r3;
0x00076886 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007688a bne 0x768c8 | goto label_3;
| }
0x0007688c adds r7, 8 | r7 += 8;
0x0007688e mov sp, r7 |
0x00076890 pop {r4, r5, r7, pc} |
| label_1:
0x00076892 ldr r3, [pc, 0x50] |
0x00076894 sub sp, 0x10 |
0x00076896 ldr.w ip, [pc, 0x50] |
0x00076898 stm r0!, {r4, r6} | *(r0!) = r4;
| *((r0! + 4)) = r6;
0x0007689a add r5, sp, 8 | r5 += var_8h_2;
0x0007689c add r3, pc | r3 = 0xed186;
0x0007689e ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x000768a2 add ip, pc | ip = 0xed190;
0x000768a4 stm.w r5, {r0, r1, r2} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
0x000768a8 ldr.w r0, [ip] | r0 = *(0xed190);
0x000768aa movs r0, r0 |
0x000768ac str.w r0, [r5, 0xb] | __asm ("str.w r0, [var_bh]");
0x000768b0 b 0x76858 |
| } while (1);
| label_0:
0x000768b2 ldr r1, [pc, 0x38] |
0x000768b4 mov.w r2, 0x1f2 | r2 = 0x1f2;
0x000768b8 ldr r3, [pc, 0x34] |
0x000768ba ldr r0, [pc, 0x38] |
0x000768bc add r1, pc | r1 = 0xed1ae;
0x000768be add r3, pc | r3 = 0xed1b2;
0x000768c0 adds r1, 7 | r1 += 7;
0x000768c2 add r0, pc | r0 = 0xed1bc;
0x000768c4 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x000768c8 blx 0x927c | fprintf_chk ()
0x000768cc movs r2, 0x9a | r2 = 0x9a;
0x000768ce movs r5, r0 | r5 = r0;
0x000768d0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000768d2 movs r0, r0 |
0x000768d4 ldr.w r0, [ip, r2] | r0 = *((ip + r2));
0x000768d8 b 0x76f40 | return void (*0x76f40)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x768f8 */
| #include <stdint.h>
|
; (fcn) fcn.000768f8 () | void fcn_000768f8 (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
0x000768f8 ldr r2, [pc, 0x98] |
0x000768fa ldr r3, [pc, 0x9c] | r3 = *(0x7699a);
0x000768fc push {r4, r5, lr} |
0x000768fe subs r5, r0, 0 | r5 = r0 - 0;
0x00076900 add r2, pc | r2 = 0xed298;
0x00076902 sub sp, 0x8c |
0x00076904 ldr r3, [r2, r3] |
0x00076906 ldr r3, [r3] | r3 = *(0xed298);
0x00076908 str r3, [sp, 0x84] | var_84h = r3;
0x0007690a mov.w r3, 0 | r3 = 0;
0x0007690c lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 <= r0) {
0x0007690e ble 0x7695c | goto label_2;
| }
0x00076910 mov r4, r1 | r4 = r1;
| if (r1 == 0) {
0x00076912 cbz r1, 0x76958 | goto label_3;
| }
| do {
| label_0:
0x00076914 movs r2, 0x80 | r2 = 0x80;
0x00076916 movs r1, 0 | r1 = 0;
0x00076918 mov r0, r4 | r0 = r4;
0x0007691a blx 0x8c54 | fcn_00008c54 ();
0x0007691e movs r3, 4 | r3 = 4;
0x00076920 mov r2, r4 | r2 = r4;
0x00076922 mov r1, r5 | r1 = r5;
0x00076924 movs r0, 1 | r0 = 1;
0x00076926 blx 0x8ba4 | r0 = strchr (r0, r1);
0x0007692a cmp r0, 0 |
| if (r0 >= 0) {
0x0007692c bge 0x76972 | goto label_4;
| }
0x0007692e blx 0x9628 | r0 = fcn_00009628 ();
0x00076932 ldr r0, [r0] | r0 = *(r0);
0x00076934 cmp r0, 4 |
0x00076936 beq 0x76914 |
| } while (r0 == 4);
0x00076938 cmp r0, 0 |
0x0007693a it gt |
| if (r0 > 0) {
0x0007693c rsbgt r0, r0, 0 | __asm ("rsbgt r0, r0, 0");
| }
| if (r0 <= 0) {
0x0007693e ble 0x76976 | goto label_5;
| }
| do {
| label_1:
0x00076940 ldr r2, [pc, 0x58] |
0x00076942 ldr r3, [pc, 0x54] | r3 = *(0x7699a);
0x00076944 add r2, pc | r2 = 0xed2e4;
0x00076946 ldr r3, [r2, r3] | r3 = *(0xed2e4);
0x00076948 ldr r2, [r3] | r2 = *(0xed2e4);
0x0007694a ldr r3, [sp, 0x84] | r3 = var_84h;
0x0007694c eors r2, r3 | r2 ^= r3;
0x0007694e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00076952 bne 0x76990 | goto label_6;
| }
0x00076954 add sp, 0x8c |
0x00076956 pop {r4, r5, pc} |
| label_3:
0x00076958 add r4, sp, 4 | r4 += var_4h;
0x0007695a b 0x76914 | goto label_0;
| label_2:
0x0007695c ldr r1, [pc, 0x40] |
0x0007695e mov.w r2, 0x2d0 | r2 = 0x2d0;
0x00076962 ldr r3, [pc, 0x40] |
0x00076964 ldr r0, [pc, 0x40] |
0x00076966 add r1, pc | r1 = 0xed30a;
0x00076968 add r3, pc | r3 = 0xed312;
0x0007696a adds r1, 7 | r1 += 7;
0x0007696c add r0, pc | r0 = 0xed318;
0x0007696e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00076972 movs r0, 0 | r0 = 0;
0x00076974 b 0x76940 |
| } while (1);
| label_5:
0x00076976 ldr r1, [pc, 0x34] |
0x00076978 movs r2, 0x1e | r2 = 0x1e;
0x0007697a ldr r3, [pc, 0x34] |
0x0007697c ldr r0, [pc, 0x34] |
0x0007697e add r1, pc | r1 = 0xed330;
0x00076980 add r3, pc | r3 = 0xed336;
0x00076982 adds r1, 7 | r1 += 7;
0x00076984 add r0, pc | r0 = 0xed33c;
0x00076986 bl 0x717d4 | fcn_000717d4 (r0, r1, r2, r3);
0x0007698a mvn r0, 0x15 | r0 = ~0x15;
0x0007698e b 0x76940 | goto label_1;
| label_6:
0x00076990 blx 0x927c | fprintf_chk ()
0x00076994 movs r1, 0xc4 | r1 = 0xc4;
0x00076996 movs r5, r0 | r5 = r0;
0x00076998 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007699a movs r0, r0 |
0x0007699c movs r1, 0x80 | r1 = 0x80;
0x0007699e movs r5, r0 | r5 = r0;
0x000769a0 ssat r0, 3, lr | __asm ("ssat r0, 3, lr");
0x000769a4 stc2l p0, c0, [r4], 8 | __asm ("stc2l p0, c0, [r4], 8");
0x000769a8 sbfx r0, r4, 0, 3 | __asm ("sbfx r0, r4, 0, 3");
0x000769aa movs r2, r0 | r2 = r0;
0x000769ac subs r6, 0x4a | r6 -= 0x4a;
0x000769ae movs r2, r0 | r2 = r0;
0x000769b0 ldc2 p0, c0, [ip], 8 | __asm ("ldc2 p0, c0, [ip], 8");
0x000769b4 subs r6, 0x64 | r6 -= 0x64;
0x000769b6 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x76ac0 */
| #include <stdint.h>
|
; (fcn) fcn.00076ac0 () | void fcn_00076ac0 (int16_t arg_28h, int16_t arg_94h, uint32_t arg1, int16_t arg2) {
| int32_t var_0h_3;
| int32_t var_0h_4;
| int16_t var_8h_2;
| int16_t var_2h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
0x00076ac0 invalid |
0x00076ac4 ldr r1, [pc, 0xec] |
0x00076ac6 sub sp, 0x14 |
0x00076ac8 movs r3, 0 | r3 = 0;
0x00076aca ldr r2, [pc, 0xec] | r2 = *(0x76bba);
0x00076acc add r7, sp, 8 | r7 += var_8h;
0x00076ace add r1, pc | r1 = 0xed686;
0x00076ad0 ldr r2, [r1, r2] |
0x00076ad2 ldr r2, [r2] | r2 = *(0xed686);
0x00076ad4 str r2, [r7, 4] | var_ch = r2;
0x00076ad6 mov.w r2, 0 | r2 = 0;
0x00076ada str r3, [r7] | *(r7) = r3;
0x00076adc cmp r4, 0 |
| if (r4 == 0) {
0x00076ade beq 0x76b7c | goto label_6;
| }
0x00076ae0 cmp r0, 0 |
0x00076ae2 mov r5, r0 | r5 = r0;
| if (arg_28h < ) {
0x00076ae4 blt 0x76b90 | goto label_7;
| }
0x00076ae6 bne 0x76b3c |
| while (r0 == r5) {
0x00076ae8 movs r1, 1 | r1 = 1;
0x00076aea movs r0, 0x11 | r0 = 0x11;
0x00076aec blx 0x8c20 | r0 = fcn_00008c20 ();
0x00076af0 mov r1, r0 | r1 = r0;
0x00076af2 str r0, [r7] | *(r7) = r0;
0x00076af4 cmp r0, 0 |
| if (r0 == 0) {
0x00076af6 beq 0x76baa | goto label_8;
| }
0x00076af8 movs r0, 0x10 | r0 = 0x10;
0x00076afa blx 0x93bc | r0 = fcn_000093bc ();
0x00076afe cmp r0, 0 |
| if (r0 < 0) {
0x00076b00 blt 0x76b72 | goto label_9;
| }
| label_0:
0x00076b02 movs r0, 0x80 | r0 = 0x80;
0x00076b04 blx 0x9234 | blkid_safe_string ();
0x00076b08 ldr r2, [r7] | r2 = *(r7);
0x00076b0a mov r5, r0 | r5 = r0;
0x00076b0c cmp r0, 0 |
| if (r0 == 0) {
0x00076b0e beq 0x76baa | goto label_8;
| }
0x00076b10 movs r6, 0 | r6 = 0;
0x00076b12 movs r1, 0x80 | r1 = 0x80;
0x00076b14 bl 0x7aa9c | fcn_0007aa9c (r0, r1, r2);
0x00076b18 str r5, [r4] | *(r4) = r5;
| label_1:
0x00076b1a ldr r0, [r7] | r0 = *(r7);
0x00076b1c blx 0x8dac | fcn_00008dac ();
0x00076b1e strd r4, sl, [r6, -0x98] | __asm ("strd r4, sl, [r6, -0x98]");
0x00076b22 ldr r3, [pc, 0x94] | r3 = *(0x76bba);
0x00076b24 add r2, pc | r2 += pc;
0x00076b26 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00076b28 ldr r2, [r3] | r2 = *(0x76bba);
0x00076b2a ldr r3, [r7, 4] | r3 = var_ch;
0x00076b2c eors r2, r3 | r2 ^= r3;
0x00076b2e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00076b32 bne 0x76bb0 | goto label_10;
| }
0x00076b34 mov r0, r6 | r0 = r6;
0x00076b36 adds r7, 0xc | r7 += 0xc;
0x00076b38 mov sp, r7 |
0x00076b3a pop {r4, r5, r6, r7, pc} |
0x00076b3c bl 0x76a30 | r0 = fcn_00076a30 (r0);
0x00076b40 cmp r0, r5 |
0x00076b42 beq 0x76ae8 |
| }
0x00076b44 ldr r1, [pc, 0x78] |
0x00076b46 sub sp, 0x18 |
0x00076b48 ldr r3, [pc, 0x78] |
0x00076b4a add r6, sp, 8 | r6 += var_8h_2;
0x00076b4c movs r2, 0x18 | r2 = 0x18;
0x00076b4e mov r0, r6 | r0 = r6;
0x00076b50 add r1, pc | r1 = 0xed714;
0x00076b52 add r3, pc | r3 = 0xed71a;
0x00076b54 strd r5, r1, [sp] | __asm ("strd r5, r1, [sp]");
0x00076b58 movs r1, 1 | r1 = 1;
0x00076b5a blx 0x9494 | fcn_00009494 ();
0x00076b5e mov r0, r6 | r0 = r6;
0x00076b60 mov r1, r7 | r1 = r7;
0x00076b62 bl 0x6b320 | fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x00076b66 adds r3, r0, 2 | r3 += var_2h;
0x00076b68 mov r6, r0 | r6 = r0;
| if (r3 == var_2h) {
0x00076b6a beq 0x76ba4 | goto label_11;
| }
0x00076b6c cmp r0, 0 |
| if (r0 >= 0) {
0x00076b6e bge 0x76b02 | goto label_0;
| }
0x00076b70 b 0x76b1a | goto label_1;
| label_9:
0x00076b72 blx 0x9628 | r0 = fcn_00009628 ();
0x00076b76 ldr r6, [r0] | r6 = *(r0);
0x00076b78 rsbs r6, r6, 0 | r6 -= ;
0x00076b7a b 0x76b1a | goto label_1;
| label_6:
0x00076b7c ldr r1, [pc, 0x48] |
0x00076b7e movs r2, 0x5c | r2 = 0x5c;
0x00076b80 ldr r3, [pc, 0x48] |
0x00076b82 ldr r0, [pc, 0x4c] |
0x00076b84 add r1, pc | r1 = 0xed750;
0x00076b86 add r3, pc | r3 = 0xed756;
0x00076b88 adds r1, 7 | r1 += 7;
0x00076b8a add r0, pc | r0 = 0xed760;
0x00076b8c bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00076b8e invalid |
| label_7:
0x00076b90 ldr r1, [pc, 0x40] |
0x00076b92 movs r2, 0x5d | r2 = 0x5d;
0x00076b94 ldr r3, [pc, 0x40] |
0x00076b96 ldr r0, [pc, 0x44] |
0x00076b98 add r1, pc | r1 = 0xed770;
0x00076b9a add r3, pc | r3 = 0xed776;
0x00076b9c adds r1, 7 | r1 += 7;
0x00076b9e add r0, pc | r0 = 0xed780;
0x00076ba0 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00076ba2 invalid |
| label_11:
0x00076ba4 mvn r6, 2 | r6 = ~2;
0x00076ba8 b 0x76b1a | goto label_1;
| label_8:
0x00076baa mvn r6, 0xb | r6 = ~0xb;
0x00076bae b 0x76b1a | goto label_1;
| label_10:
0x00076bb0 blx 0x927c | fprintf_chk ()
0x00076bb4 subs r6, r6, 7 | r6 -= 7;
0x00076bb6 movs r5, r0 | r5 = r0;
0x00076bb8 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00076bba movs r0, r0 |
0x00076bbc subs r0, r4, 6 | r0 = r4 - 6;
0x00076bbe movs r5, r0 | r5 = r0;
0x00076bc0 sbc r0, ip, 0x820000 | __asm ("sbc r0, ip, aav.0x000000ff");
0x00076bc4 b 0x76c24 |
0x00076c24 vmull.u32 q9, d9, d1 | __asm ("vmull.u32 q9, d9, d1");
| if (r5 == r0) {
0x00076c28 beq 0x76cdc | goto label_12;
| }
0x00076c2a subs r4, 2 | r4 -= 2;
0x00076c2c cmp r4, 1 |
| if (r4 < 1) {
0x00076c2e bls.w 0x76d8e | goto label_13;
| }
0x00076c32 cmp r7, r0 |
| if (r7 <= r0) {
0x00076c34 ble 0x76c5c | goto label_14;
| }
| label_5:
0x00076c36 mvn r4, 0x46 | r4 = ~0x46;
| do {
| label_3:
0x00076c3a ldr r0, [sp, 0x10] | r0 = var_10h;
0x00076c3c blx 0x8dac | fcn_00008dac ();
0x00076c40 ldr r2, [pc, 0x194] |
0x00076c42 ldr r3, [pc, 0x190] | r3 = *(0x76dd6);
0x00076c44 add r2, pc | r2 = 0xeda20;
0x00076c46 ldr r3, [r2, r3] | r3 = *(0xeda20);
0x00076c48 ldr r2, [r3] | r2 = *(0xeda20);
0x00076c4a ldr r3, [sp, 0x94] | r3 = *(arg_94h);
0x00076c4c eors r2, r3 | r2 ^= r3;
0x00076c4e mov.w r3, 0 | r3 = 0;
0x00076c50 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00076c52 bne.w 0x76dcc | goto label_15;
| }
0x00076c54 strh r3, [r7, 4] | *((r7 + 4)) = r3;
0x00076c56 mov r0, r4 | r0 = r4;
0x00076c58 add sp, 0x9c |
0x00076c5a pop {r4, r5, r6, r7, pc} |
| label_14:
0x00076c5c cmp r5, 0 |
| if (r5 == 0) {
0x00076c5e beq 0x76cc6 | goto label_16;
| }
| label_2:
0x00076c60 ldr r2, [pc, 0x178] |
0x00076c62 mov r0, r7 | r0 = r7;
0x00076c64 ldr r3, [pc, 0x178] |
0x00076c66 movs r1, 0 | r1 = 0;
0x00076c68 ldr r4, [pc, 0x178] |
0x00076c6a add r2, pc | r2 = 0xeda4a;
0x00076c6c str r5, [sp, 8] | var_8h = r5;
0x00076c6e add r3, pc | r3 = 0xeda52;
0x00076c70 adds r2, 7 | r2 += 7;
0x00076c72 add r4, pc | r4 = 0xeda5a;
0x00076c74 str r3, [sp, 4] | var_4h = r3;
0x00076c76 str r4, [sp] | *(sp) = r4;
0x00076c78 movw r3, 0x316 | r3 = 0x316;
0x00076c7a adds r3, 0x16 | r3 += 0x16;
0x00076c7c mvn r4, 0x46 | r4 = ~0x46;
0x00076c80 bl 0x71448 | fcn_00071448 ();
0x00076c84 b 0x76c3a |
| } while (1);
| label_16:
0x00076cc6 ldr r5, [pc, 0x12c] |
0x00076cc8 add r5, pc | r5 = 0xedac2;
0x00076cca b 0x76c60 | goto label_2;
| label_12:
0x00076cdc ldr r4, [sp, 0x28] | r4 = *(arg_28h);
| if (r4 == 0) {
0x00076cde cbz r4, 0x76d2e | goto label_17;
| }
0x00076ce0 tst.w r6, 2 |
0x00076ce4 ite ne |
| if ((r6 & 2) == 0) {
0x00076ce6 movne r3, 3 | r3 = 3;
| }
| if ((r6 & 2) != 0) {
0x00076ce8 moveq r3, 7 | r3 = 7;
| }
0x00076cea cmp r3, r0 |
| if (r3 > r0) {
0x00076cec bgt 0x76c3a | goto label_3;
| }
0x00076cee cmp r5, 0 |
| if (r5 == 0) {
0x00076cf0 beq 0x76d88 | goto label_18;
| }
| label_4:
0x00076cf2 ldr r2, [pc, 0x104] |
0x00076cf4 mov r0, r3 | r0 = r3;
0x00076cf6 ldr r6, [pc, 0x104] |
0x00076cf8 movw r3, 0x309 | r3 = 0x309;
0x00076cfc ldr r1, [pc, 0x100] |
0x00076cfe add r2, pc | r2 = 0xedafc;
0x00076d00 str r4, [sp, 0xc] | var_ch = r4;
0x00076d02 add r6, pc | r6 = 0xedb04;
0x00076d04 adds r2, 7 | r2 += 7;
0x00076d06 add r1, pc | r1 = 0xedb0a;
0x00076d08 str r5, [sp, 8] | var_8h = r5;
0x00076d0a strd r1, r6, [sp] | __asm ("strd r1, r6, [sp]");
0x00076d0c asrs r0, r0, 0x18 | r0 >>= 0x18;
0x00076d0e movs r1, 0 | r1 = 0;
0x00076d10 bl 0x71448 | fcn_00071448 ();
0x00076d12 invalid |
0x00076d16 b 0x76c3a | goto label_3;
| label_17:
0x00076d2e cmp r0, 6 |
| if (r0 <= 6) {
0x00076d30 ble 0x76c3a | goto label_3;
| }
0x00076d32 ldr r2, [pc, 0xdc] |
0x00076d34 mov r1, r4 | r1 = r4;
0x00076d36 ldr r3, [pc, 0xdc] |
0x00076d38 movs r0, 7 | r0 = 7;
0x00076d3a ldr r6, [pc, 0xdc] |
0x00076d3c add r2, pc | r2 = 0xedb52;
0x00076d3e str r5, [sp, 8] | var_8h = r5;
0x00076d40 add r3, pc | r3 = 0xedb5a;
0x00076d42 adds r2, 7 | r2 += 7;
0x00076d44 add r6, pc | r6 = 0xedb62;
0x00076d46 str r3, [sp, 4] | var_4h = r3;
0x00076d48 str r6, [sp] | *(sp) = r6;
0x00076d4a mov.w r3, 0x30c | r3 = 0x30c;
0x00076d4c strb r3, [r0, 0xd] | *((r0 + 0xd)) = r3;
0x00076d4e bl 0x71448 | fcn_00071448 ();
0x00076d50 usada8 ip, fp, sl, sb | __asm ("usada8 ip, fp, sl, sb");
0x00076d54 b 0x76c3a | goto label_3;
| label_18:
0x00076d88 ldr r5, [pc, 0xa0] |
0x00076d8a add r5, pc | r5 = 0xedbba;
0x00076d8c b 0x76cf2 | goto label_4;
| label_13:
0x00076d8e cmp r7, r0 |
| if (r7 > r0) {
0x00076d90 bgt.w 0x76c36 | goto label_5;
| }
0x00076d94 cbz r5, 0x76dc6 |
| while (1) {
0x00076d96 ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x00076d98 mvn r4, 0x46 | r4 = ~0x46;
0x00076d9c bl 0x78824 | r0 = fcn_00078824 (r0);
0x00076da0 mov r3, r0 | r3 = r0;
0x00076da2 ldr r2, [pc, 0x8c] |
0x00076da4 str r3, [sp, 0xc] | var_ch = r3;
0x00076da6 mov r0, r7 | r0 = r7;
0x00076da8 ldr r3, [pc, 0x88] |
0x00076daa ldr r1, [pc, 0x8c] |
0x00076dac add r2, pc | r2 = 0xedbe2;
0x00076dae adds r2, 7 | r2 += 7;
0x00076db0 str r5, [sp, 8] | var_8h = r5;
0x00076db2 add r3, pc | r3 = 0xedbea;
0x00076db4 add r1, pc | r1 = 0xedbf2;
0x00076db6 str r3, [sp, 4] | var_4h = r3;
0x00076db8 str r1, [sp] | *(sp) = r1;
0x00076dba movw r3, 0x312 | r3 = 0x312;
0x00076dbe movs r1, 0 | r1 = 0;
0x00076dc0 bl 0x71448 | fcn_00071448 ();
0x00076dc4 b 0x76c3a | goto label_3;
0x00076dc6 ldr r5, [pc, 0x74] |
0x00076dc8 add r5, pc | r5 = 0xedc0a;
0x00076dca b 0x76d96 |
| }
| label_15:
0x00076dcc blx 0x927c | fprintf_chk ()
0x00076dd0 subs r4, r2, 3 | r4 = r2 - 3;
0x00076dd2 movs r5, r0 | r5 = r0;
0x00076dd4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00076dd6 movs r0, r0 |
0x00076dd8 subs r0, r0, 2 | r0 -= 2;
0x00076dda movs r5, r0 | r5 = r0;
0x00076ddc and r0, sl, 0x820000 | r0 = sl & 0x820000;
0x00076de0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x76e40 */
| #include <stdint.h>
|
; (fcn) fcn.00076e40 () | void fcn_00076e40 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_2h;
| int16_t var_8h_3;
| int32_t var_bh;
| int32_t var_fh;
| int16_t var_8h;
| int16_t var_4h_2;
| int16_t var_8h_4;
| int32_t var_ch;
| int8_t var_12h;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00076e40 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00076e44 mov sb, r2 | sb = r2;
0x00076e46 ldr r2, [pc, 0x118] |
0x00076e48 mov r8, r3 | r8 = r3;
0x00076e4a sub sp, 0x1c |
0x00076e4c ldr r3, [pc, 0x114] | r3 = *(0x76f64);
0x00076e4e add r7, sp, 8 | r7 += var_8h;
0x00076e50 add r2, pc | r2 = 0xeddb6;
0x00076e52 ldr.w sl, [r7, 0x38] | sl = *((r7 + 0x38));
0x00076e56 mov r6, r1 | r6 = r1;
0x00076e58 mov r5, r0 | r5 = r0;
0x00076e5a ldr r3, [r2, r3] |
0x00076e5c ldr r3, [r3] | r3 = *(0xeddb6);
0x00076e5e str r3, [r7, 0xc] | var_ch = r3;
0x00076e60 mov.w r3, 0 | r3 = 0;
0x00076e64 cmp r0, 0 |
| if (r0 != 0) {
0x00076e66 bne 0x76f2c | goto label_3;
| }
0x00076e68 ldr r3, [pc, 0xfc] |
0x00076e6a sub sp, 0x18 |
0x00076e6c ldr.w ip, [pc, 0xfc] |
0x00076e70 add r4, sp, 8 | r4 += var_8h_3;
0x00076e72 add r3, pc | r3 = 0xeddde;
0x00076e74 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x00076e78 add ip, pc | ip = 0xedde8;
0x00076e7a stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x00076e7e ldm.w ip!, {r0, r1} | r0 = *(ip!);
| r1 = *((ip! + 4));
0x00076e82 str.w r0, [r4, 0xb] | __asm ("str.w r0, [var_bh]");
0x00076e86 str.w r1, [r4, 0xf] | __asm ("str.w r1, [var_fh]");
0x00076e8a mov r0, r4 | r0 = r4;
0x00076e8c adds r3, r7, 4 | r3 += var_4h_2;
0x00076e8e mov r2, r7 | r2 = r7;
0x00076e90 mov r1, r6 | r1 = r6;
0x00076e92 bl 0x6a7bc | fcn_0006a7bc (r0, r1, r2);
0x00076e96 adds r3, r0, 2 | r3 += var_2h;
0x00076e98 mov r4, r0 | r4 = r0;
| if (r3 == var_2h) {
0x00076e9a beq 0x76f54 | goto label_4;
| }
0x00076e9c cmp r0, 0 |
| if (r0 < 0) {
0x00076e9e blt 0x76eb2 | goto label_1;
| }
0x00076ea0 ldrd r0, fp, [r7] | __asm ("ldrd r0, fp, [r7]");
0x00076ea4 cmp.w fp, 0 |
0x00076ea6 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x00076ea8 beq 0x76ed0 | goto label_5;
| }
| label_0:
0x00076eaa str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x00076eae str.w fp, [sl] | __asm ("str.w fp, [sl]");
| do {
| label_1:
0x00076eb2 ldr r2, [pc, 0xbc] |
0x00076eb4 ldr r3, [pc, 0xac] | r3 = *(0x76f64);
0x00076eb6 add r2, pc | r2 = 0xede2c;
0x00076eb8 ldr r3, [r2, r3] | r3 = *(0xede2c);
0x00076eba ldr r2, [r3] | r2 = *(0xede2c);
0x00076ebc ldr r3, [r7, 0xc] | r3 = var_ch;
0x00076ebe eors r2, r3 | r2 ^= r3;
0x00076ec0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00076ec4 bne 0x76f5a | goto label_6;
| }
0x00076ec6 mov r0, r4 | r0 = r4;
0x00076ec8 adds r7, 0x14 | r7 += 0x14;
0x00076eca mov sp, r7 |
0x00076ecc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00076ed0 blx 0x8dac | fcn_00008dac ();
0x00076ed4 tst.w sb, 1 |
0x00076ed8 str.w fp, [r7] | __asm ("str.w fp, [r7]");
0x00076edc it eq |
| if ((sb & 1) != 0) {
0x00076ede mvneq r4, 1 | r4 = ~1;
| }
0x00076ee2 beq 0x76eb2 |
| } while ((sb & 1) == 0);
0x00076ee4 add.w r1, r7, 8 | r1 += var_8h_4;
0x00076ee8 mov r0, r5 | r0 = r5;
0x00076eea str.w fp, [r7, 8] | __asm ("str.w fp, [var_8h_4]");
0x00076eee bl 0x76ac0 | fcn_00076ac0 (r0, r1, r2, r3);
0x00076ef0 stc2l p14, c1, [r7, 0x10]! | __asm ("stc2l p14, c1, [r7, 0x10]!");
| if ((sb & 1) >= 0) {
0x00076ef4 blt 0x76f4c |
0x00076ef6 ldr r2, [pc, 0x7c] |
0x00076ef8 mov r3, fp | r3 = fp;
0x00076efa ldr r0, [pc, 0x7c] |
0x00076efc ldr r1, [r7, 8] | r1 = var_8h_4;
0x00076efe add r2, pc | r2 = 0xede78;
0x00076f00 add r0, pc | r0 = 0xede7e;
0x00076f02 bl 0x7a8a8 | r0 = fcn_0007a8a8 (r0, r1);
0x00076f06 mov r5, r0 | r5 = r0;
0x00076f08 str r0, [r7] | *(r7) = r0;
| if (r0 != 0) {
0x00076f0a cbz r0, 0x76f48 |
0x00076f0c blx 0x8f38 | r0 = fcn_00008f38 ();
0x00076f10 cmp r6, r0 |
0x00076f12 str r0, [r7, 4] | var_4h_2 = r0;
0x00076f14 ite lo |
| if (r6 >= r0) {
0x00076f16 strblo fp, [r5, r6] | *((r5 + r6)) = fp;
| }
| if (r6 >= r0) {
0x00076f1a movs r4, 1 | r4 = 1;
| }
0x00076f1c ldr r0, [r7, 8] | r0 = var_8h_4;
0x00076f1e it lo |
| if (r4 >= 1) {
0x00076f20 movlo r4, 0 | r4 = 0;
| }
0x00076f22 blx 0x8dac | fcn_00008dac ();
0x00076f26 ldrd r0, fp, [r7] | __asm ("ldrd r0, fp, [r7]");
0x00076f2a b 0x76eaa | goto label_0;
| label_3:
0x00076f2c ldr r3, [pc, 0x4c] |
0x00076f2e sub sp, 0x20 |
0x00076f30 add r4, sp, 8 | r4 += var_8h_2;
0x00076f32 str r0, [sp] | *(sp) = r0;
0x00076f34 movs r2, 0x1b | r2 = 0x1b;
0x00076f36 movs r1, 1 | r1 = 1;
0x00076f38 add r3, pc | r3 = 0xedeb8;
0x00076f3a mov r0, r4 | r0 = r4;
0x00076f3c str r3, [sp, 4] | var_4h = r3;
0x00076f3e ldr r3, [pc, 0x40] | r3 = *(0x76f82);
0x00076f40 add r3, pc | r3 += pc;
0x00076f42 blx 0x9494 | fcn_00009494 ();
0x00076f44 invalid |
| }
0x00076f48 mvn r4, 0xb | r4 = ~0xb;
| }
0x00076f4c ldr r0, [r7, 8] | r0 = var_8h_4;
0x00076f4e blx 0x8dac | fcn_00008dac ();
0x00076f50 vabd.s32 d14, d30, d30 | __asm ("vabd.s32 d14, d30, d30");
| label_4:
0x00076f54 mvn r4, 2 | r4 = ~2;
0x00076f58 b 0x76eb2 | goto label_1;
| label_6:
0x00076f5a invalid |
| label_2:
0x00076f5c invalid |
| do {
0x00076f60 adds r4, r6, 1 | r4 = r6 + 1;
0x00076f62 movs r5, r0 | r5 = r0;
0x00076f64 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00076f66 movs r0, r0 |
0x00076f68 bgt 0x76f60 |
| } while (r0 > r0);
0x00076f6a movs r1, r0 | r1 = r0;
0x00076f6c subs r0, r2, 0 | r0 = r2 - 0;
0x00076f6e movs r1, r0 | r1 = r0;
0x00076f70 adds r6, r1, 0 | r6 = r1 + 0;
0x00076f72 movs r5, r0 | r5 = r0;
| if (r5 < r0) {
0x00076f74 blt 0x76f5c | goto label_2;
| }
0x00076f76 movs r2, r0 | r2 = r0;
0x00076f78 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7714c */
| #include <stdint.h>
|
; (fcn) fcn.0007714c () | void fcn_0007714c (int16_t arg_0h, int16_t arg1, uint32_t arg2, uint32_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_2h;
| int16_t var_8h;
| int32_t var_4h_2;
| int16_t var_8h_3;
| int32_t var_ch;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0007714c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00077150 sub sp, 0x1c |
0x00077152 ldr r4, [pc, 0x18c] |
0x00077154 mov.w fp, 0 |
0x00077158 add r7, sp, 8 | r7 += var_8h;
0x0007715a ldr r3, [pc, 0x188] | r3 = *(0x772e6);
0x0007715c add r4, pc | r4 = 0xee442;
0x0007715e ldr r3, [r4, r3] |
0x00077160 subs r4, r0, 0 | r4 -= arg_0h;
0x00077162 ldr r3, [r3] | r3 = *(0xee442);
0x00077164 str r3, [r7, 0xc] | var_ch = r3;
0x00077166 mov.w r3, 0 | r3 = 0;
0x0007716a str.w fp, [r7, 4] | __asm ("str.w fp, [var_4h_2]");
0x0007716c add sp, 0x10 |
| if (r4 < arg_0h) {
0x0007716e blt 0x7725c | goto label_2;
| }
0x00077170 mov r5, r1 | r5 = r1;
0x00077172 cmp r1, 0 |
| if (r1 == 0) {
0x00077174 beq 0x77272 | goto label_3;
| }
0x00077176 mov r8, r2 | r8 = r2;
0x00077178 cmp r2, 0 |
| if (r2 == 0) {
0x0007717a beq.w 0x77288 | goto label_4;
| }
0x0007717e cbnz r4, 0x771c0 |
| while (r0 == r4) {
0x00077180 mov r0, r5 | r0 = r5;
0x00077182 blx 0x8b80 | r0 = ftello64 ();
0x00077186 cmp r0, 0 |
| if (r0 == 0) {
0x00077188 beq 0x77254 | goto label_5;
| }
0x0007718a blx 0x9200 | r0 = fcn_00009200 ();
0x0007718e cmp r0, 0 |
| if (r0 == 0) {
0x00077190 beq.w 0x772d2 | goto label_6;
| }
0x00077194 movs r4, 1 | r4 = 1;
0x00077196 str.w r0, [r8] | __asm ("str.w r0, [r8]");
| label_0:
0x0007719a ldr r0, [r7, 4] | r0 = var_4h_2;
0x0007719c bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x000771a0 ldr r2, [pc, 0x144] |
0x000771a2 ldr r3, [pc, 0x140] | r3 = *(0x772e6);
0x000771a4 add r2, pc | r2 = 0xee490;
0x000771a6 ldr r3, [r2, r3] | r3 = *(0xee490);
0x000771a8 ldr r2, [r3] | r2 = *(0xee490);
0x000771aa ldr r3, [r7, 0xc] | r3 = var_ch;
0x000771ac eors r2, r3 | r2 ^= r3;
0x000771ae mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000771b2 bne.w 0x772ce | goto label_7;
| }
0x000771b6 mov r0, r4 | r0 = r4;
0x000771b8 adds r7, 0x14 | r7 += 0x14;
0x000771ba mov sp, r7 |
0x000771bc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000771c0 bl 0x76a30 | r0 = fcn_00076a30 (r0);
0x000771c4 cmp r0, r4 |
0x000771c6 beq 0x77180 |
| }
0x000771c8 ldr r2, [pc, 0x120] |
0x000771ca sub sp, 0x20 |
0x000771cc ldr r3, [pc, 0x120] |
0x000771ce add r6, sp, 8 | r6 += var_8h_2;
0x000771d0 movs r1, 1 | r1 = 1;
0x000771d2 str r4, [sp] | *(sp) = r4;
0x000771d4 add r2, pc | r2 = 0xee4c4;
0x000771d6 mov r0, r6 | r0 = r6;
0x000771d8 add r3, pc | r3 = 0xee4cc;
0x000771da str r2, [sp, 4] | var_4h = r2;
0x000771dc movs r2, 0x1b | r2 = 0x1b;
0x000771de blx 0x9494 | fcn_00009494 ();
0x000771e2 ldr r1, [pc, 0x110] |
0x000771e4 adds r2, r7, 4 | r2 += var_4h_2;
0x000771e6 mov r0, r6 | r0 = r6;
0x000771e8 add r1, pc | r1 = 0xee4e2;
0x000771ea bl 0x6a520 | fcn_0006a520 (r0);
0x000771ee adds r3, r0, 2 | r3 += var_2h;
0x000771f0 mov r4, r0 | r4 = r0;
| if (r3 == var_2h) {
0x000771f2 beq 0x772c8 | goto label_8;
| }
0x000771f4 cmp r0, 0 |
| if (r0 < 0) {
0x000771f6 blt 0x7719a | goto label_0;
| }
0x000771f8 mov r0, r5 | r0 = r5;
0x000771fa mov r6, fp | r6 = fp;
0x000771fc blx 0x8f38 | fcn_00008f38 ();
0x00077200 add.w sl, r7, 8 | sl += var_8h_3;
0x00077204 mov sb, r0 | sb = r0;
0x00077206 str.w fp, [r7, 8] | __asm ("str.w fp, [var_8h_3]");
0x00077208 add sp, 0x20 |
0x0007720a b 0x77236 |
| while (r4 >= r0) {
| if (r0 == 0) {
0x0007720c beq 0x7729e | goto label_9;
| }
0x0007720e mov r2, sb | r2 = sb;
0x00077210 mov r1, r5 | r1 = r5;
0x00077212 mov r0, fp | r0 = fp;
0x00077214 add r6, r4 | r6 += r4;
0x00077216 blx 0x94b8 | r0 = fcn_000094b8 ();
| if (r0 == 0) {
0x0007721a cbnz r0, 0x77224 |
0x0007721c ldrb.w r2, [fp, sb] | r2 = *((fp + sb));
0x00077220 cmp r2, 0x3d |
| if (r2 == 0x3d) {
0x00077222 beq 0x772b4 | goto label_10;
| }
| }
0x00077224 mov r0, fp | r0 = fp;
0x00077226 blx 0x8dac | fcn_00008dac ();
0x0007722a cmp.w r6, 0x500000 |
0x0007722e mov.w r3, 0 | r3 = 0;
0x00077232 str r3, [r7, 8] | var_8h_3 = r3;
| if (r6 > 0x500000) {
0x00077234 bhi 0x772aa | goto label_11;
| }
0x00077236 ldr r0, [r7, 4] | r0 = var_4h_2;
0x00077238 mov r3, sl | r3 = sl;
0x0007723a movs r2, 1 | r2 = 1;
0x0007723c mov.w r1, 0x100000 | r1 = 0x100000;
0x0007723e asrs r0, r0, 6 | r0 >>= 6;
0x00077240 bl 0x6b144 | r0 = fcn_0006b144 (r0, r1, r2, r3);
0x00077244 subs r4, r0, 0 | r4 = r0 - 0;
0x00077246 ldr.w fp, [r7, 8] | fp = var_8h_3;
0x0007724a bge 0x7720c |
| }
| do {
| label_1:
0x0007724c mov r0, fp | r0 = fp;
0x0007724e blx 0x8dac | fcn_00008dac ();
0x00077252 b 0x7719a | goto label_0;
| label_5:
0x00077254 mov r4, r0 | r4 = r0;
0x00077256 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0007725a b 0x7719a | goto label_0;
| label_2:
0x0007725c ldr r1, [pc, 0x98] |
0x0007725e movw r2, 0x387 | r2 = 0x387;
0x00077260 adds r2, 0x87 | r2 += 0x87;
0x00077262 ldr r3, [pc, 0x98] |
0x00077264 ldr r0, [pc, 0x98] |
0x00077266 add r1, pc | r1 = 0xee562;
0x00077268 add r3, pc | r3 = 0xee56a;
0x0007726a adds r1, 7 | r1 += 7;
0x0007726c add r0, pc | r0 = 0xee570;
0x0007726e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00077272 ldr r1, [pc, 0x90] |
0x00077274 mov.w r2, 0x388 | r2 = 0x388;
0x00077278 ldr r3, [pc, 0x8c] |
0x0007727a ldr r0, [pc, 0x90] |
0x0007727c add r1, pc | r1 = 0xee586;
0x0007727e add r3, pc | r3 = 0xee58a;
0x00077280 adds r1, 7 | r1 += 7;
0x00077282 add r0, pc | r0 = 0xee594;
0x00077284 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00077288 ldr r1, [pc, 0x84] |
0x0007728a movw r2, 0x389 | r2 = 0x389;
0x0007728e ldr r3, [pc, 0x84] |
0x00077290 ldr r0, [pc, 0x84] |
0x00077292 add r1, pc | r1 = 0xee5a6;
0x00077294 add r3, pc | r3 = 0xee5ae;
0x00077296 adds r1, 7 | r1 += 7;
0x00077298 add r0, pc | r0 = 0xee5b4;
0x0007729a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x0007729e mov r0, fp | r0 = fp;
0x000772a0 blx 0x8dac | fcn_00008dac ();
0x000772a4 str.w r4, [r8] | __asm ("str.w r4, [r8]");
0x000772a8 b 0x7719a | goto label_0;
| label_11:
0x000772aa mov.w fp, 0 |
0x000772ae mvn r4, 0x68 | r4 = ~0x68;
0x000772b2 b 0x7724c |
| } while (1);
| label_10:
0x000772b4 add.w r0, sb, 1 | r0 = sb + 1;
0x000772b8 add r0, fp | r0 += fp;
0x000772ba blx 0x9200 | r0 = fcn_00009200 ();
| if (r0 != 0) {
0x000772be cbz r0, 0x772d8 |
0x000772c0 movs r4, 1 | r4 = 1;
0x000772c2 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x000772c6 b 0x7724c | goto label_1;
| label_8:
0x000772c8 mvn r4, 2 | r4 = ~2;
0x000772cc b 0x7719a | goto label_0;
| label_7:
0x000772ce blx 0x927c | fprintf_chk ()
| label_6:
0x000772d2 mvn r4, 0xb | r4 = ~0xb;
0x000772d6 b 0x7719a | goto label_0;
| }
0x000772d8 mvn r4, 0xb | r4 = ~0xb;
0x000772dc b 0x7724c | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x77350 */
| #include <stdint.h>
|
; (fcn) fcn.00077350 () | void fcn_00077350 (int16_t arg1) {
| int32_t var_0h_2;
| int32_t var_0h_3;
| int16_t var_8h_2;
| int16_t var_2h;
| int16_t var_8h;
| int16_t var_7h;
| int32_t var_8h_3;
| int32_t var_ch;
| int16_t var_0h;
| r0 = arg1;
0x00077350 ldr r1, [pc, 0xc8] |
0x00077352 movs r3, 0 | r3 = 0;
0x00077354 ldr r2, [pc, 0xc8] | r2 = *(0x77420);
0x00077356 push {r4, r5, r7, lr} |
0x00077358 sub sp, 0x18 |
0x0007735a add r1, pc | r1 = 0xee77a;
0x0007735c subs r4, r0, 0 | r4 = r0 - 0;
0x0007735e add r7, sp, 8 | r7 += var_8h;
0x00077360 ldr r2, [r1, r2] |
0x00077362 ldr r2, [r2] | r2 = *(0xee77a);
0x00077364 str r2, [r7, 0xc] | var_ch = r2;
0x00077366 mov.w r2, 0 | r2 = 0;
0x00077368 lsls r0, r0, 8 | r0 <<= 8;
0x0007736a str r3, [r7, 8] | var_8h_3 = r3;
| if (r0 < r0) {
0x0007736c blt 0x773fe | goto label_1;
| }
0x0007736e it eq |
| if (r0 != r0) {
0x00077370 moveq r5, 0x52 | r5 = 0x52;
| }
| if (r0 == r0) {
0x00077372 beq 0x773d6 | goto label_0;
| }
0x00077374 bl 0x76a30 | r0 = fcn_00076a30 (r0);
0x00077378 cmp r0, r4 |
| if (r0 == r4) {
0x0007737a beq 0x773f8 | goto label_2;
| }
0x0007737c ldr r0, [pc, 0xa4] |
0x0007737e sub sp, 0x18 |
0x00077380 ldr r3, [pc, 0xa4] |
0x00077382 add r5, sp, 8 | r5 += var_8h_2;
0x00077384 movs r2, 0x18 | r2 = 0x18;
0x00077386 movs r1, 1 | r1 = 1;
0x00077388 add r0, pc | r0 = 0xee7b0;
0x0007738a add r3, pc | r3 = 0xee7b6;
0x0007738c strd r4, r0, [sp] | __asm ("strd r4, r0, [sp]");
0x0007738e ands r0, r0 | r0 &= r0;
0x00077390 mov r0, r5 | r0 = r5;
0x00077392 blx 0x9494 | fcn_00009494 ();
0x00077396 mov r0, r5 | r0 = r5;
0x00077398 add.w r1, r7, 8 | r1 += var_8h_3;
0x0007739c bl 0x6b320 | fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x000773a0 adds r3, r0, 2 | r3 += var_2h;
0x000773a2 mov r5, r0 | r5 = r0;
0x000773a4 ldr r4, [r7, 8] | r4 = var_8h_3;
0x000773a6 it eq |
| if (r3 != var_2h) {
0x000773a8 mvneq r5, 2 | r5 = ~2;
| }
0x000773aa lsls r2, r0, 0x14 | r2 = r0 << 0x14;
| if (r2 == r0) {
0x000773ac beq 0x773d6 | goto label_0;
| }
0x000773ae cmp r5, 0 |
| if (r5 < 0) {
0x000773b0 blt 0x773d6 | goto label_0;
| }
0x000773b2 movs r1, 0x29 | r1 = 0x29;
0x000773b4 mov r0, r4 | r0 = r4;
0x000773b6 blx 0x8c90 | fcn_00008c90 ();
0x000773b8 stcl p3, c11, [ip], -0x140 | __asm ("stcl p3, c11, [ip], -aav.0x000000ff");
0x000773bc ldr r1, [pc, 0x6c] |
0x000773be adds r2, r7, 7 | r2 += var_7h;
0x000773c0 adds r0, 1 | r0++;
0x000773c2 add r1, pc | r1 = 0xee7f2;
0x000773c4 blx 0x8b20 | r0 = kmod_list_next ();
0x000773c8 cmp r0, 1 |
0x000773ca ittee ne |
| if (r0 == 1) {
0x000773cc ldrne r4, [r7, 8] | r4 = *((r7 + 8));
| }
| if (r0 == 1) {
0x000773ce mvnne r5, 4 | r5 = ~4;
| }
| if (r0 != 1) {
0x000773d2 ldrbeq r5, [r7, 7] | r5 = var_7h;
| }
0x000773d4 ldr r4, [r7, 8] | r4 = var_8h_3;
| while (1) {
| label_0:
0x000773d6 mov r0, r4 | r0 = r4;
0x000773d8 blx 0x8dac | fcn_00008dac ();
0x000773dc ldr r2, [pc, 0x50] |
0x000773de ldr r3, [pc, 0x40] | r3 = *(0x77422);
0x000773e0 add r2, pc | r2 = 0xee814;
0x000773e2 ldr r3, [r2, r3] | r3 = *(0xee814);
0x000773e4 ldr r2, [r3] | r2 = *(0xee814);
0x000773e6 ldr r3, [r7, 0xc] | r3 = var_ch;
0x000773e8 eors r2, r3 | r2 ^= r3;
0x000773ea mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000773ee bne 0x77418 | goto label_3;
| }
0x000773f0 mov r0, r5 | r0 = r5;
0x000773f2 adds r7, 0x10 | r7 += 0x10;
0x000773f4 mov sp, r7 |
0x000773f6 pop {r4, r5, r7, pc} |
| label_2:
0x000773f8 ldr r4, [r7, 8] | r4 = var_8h_3;
0x000773fa movs r5, 0x52 | r5 = 0x52;
0x000773fc b 0x773d6 |
| }
| label_1:
0x000773fe ldr r1, [pc, 0x34] |
0x00077400 movs r2, 0x3e | r2 = 0x3e;
0x00077402 ldr r3, [pc, 0x34] |
0x00077404 ldr r0, [pc, 0x34] |
0x00077406 add r1, pc | r1 = 0xee840;
0x00077408 add r3, pc | r3 = 0xee846;
0x0007740a adds r1, 7 | r1 += 7;
0x0007740c add r0, pc | r0 = 0xee84c;
0x0007740e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00077412 mvn r5, 4 | r5 = ~4;
0x00077416 b 0x773d6 | goto label_0;
| do {
| label_3:
0x00077418 blx 0x927c | fprintf_chk ()
0x0007741c asrs r2, r5, 0x1d | r2 = r5 >> 0x1d;
0x0007741e movs r5, r0 | r5 = r0;
0x00077420 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00077422 movs r0, r0 |
0x00077424 cdp p0, 2, c0, c8, c2, 0 | __asm ("cdp p0, 2, c0, c8, c2, 0");
0x00077428 bvc 0x77418 | __asm ("bvc aav.0x000000ff");
| } while (1);
0x0007742a movs r1, r0 | r1 = r0;
0x0007742c ldcl p0, c0, [r6, 8]! | __asm ("ldcl p0, c0, [r6, 8]!");
0x00077430 asrs r4, r4, 0x1b | r4 >>= 0x1b;
0x00077432 movs r5, r0 | r5 = r0;
0x00077434 stcl p0, c0, [lr], -8 | __asm ("stcl p0, c0, [lr], -8");
0x00077438 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x77a6c */
| #include <stdint.h>
|
; (fcn) fcn.00077a6c () | void fcn_00077a6c () {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_10h;
| int16_t var_24h;
| int16_t var_a4h;
| label_1:
0x00077a00 strd r3, r7, [sp, 8] | __asm ("strd r3, r7, [sp, 8]");
0x00077a04 movs r1, 0 | r1 = 0;
0x00077a06 ldr.w r3, [pc, 0x540] |
0x00077a0a movs r0, 7 | r0 = 7;
0x00077a0c ldr.w r2, [pc, 0x53c] |
0x00077a10 add r3, pc | r3 = 0xef95e;
0x00077a12 str r3, [sp, 4] | var_4h = r3;
0x00077a14 add r2, pc | r2 = 0xef964;
0x00077a16 ldr.w r3, [pc, 0x538] |
0x00077a1a adds r2, 7 | r2 += 7;
0x00077a1c add r3, pc | r3 = 0xef972;
0x00077a1e str r3, [sp] | *(sp) = r3;
0x00077a20 movw r3, 0x531 | r3 = 0x531;
0x00077a22 strh r1, [r6, r4] | *((r6 + r4)) = r1;
0x00077a24 bl 0x71448 | fcn_00071448 ();
0x00077a28 lsls r3, r4, 0x18 | r3 = r4 << 0x18;
| if (r3 >= r4) {
0x00077a2a bpl 0x77a4e | goto label_3;
| }
0x00077a2c ldr r3, [sp, 0x10] | r3 = var_10h;
0x00077a2e cmp r3, 0 |
0x00077a30 bne.w 0x77e06 |
| while (1) {
0x00077a34 cmp.w sl, 0 |
0x00077a38 mov r0, r6 | r0 = r6;
0x00077a3a ite eq |
| if (sl != 0) {
0x00077a3c moveq r2, sl | r2 = sl;
| }
| if (sl == 0) {
0x00077a3e movne r2, 3 | r2 = 3;
| }
0x00077a40 mov r1, r7 | r1 = r7;
0x00077a42 bl 0x76be0 | r0 = fcn_00076be0 (r0, r1, r2);
0x00077a46 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x00077a48 blt 0x77a5a |
| if (r4 != r0) {
0x00077a4a bne.w 0x77e60 | goto label_4;
| }
| label_3:
0x00077a4e movs r4, 1 | r4 = 1;
0x00077a50 cmp.w r8, 0 |
0x00077a52 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x00077a54 beq 0x77a5a | goto label_0;
| }
0x00077a56 str.w r7, [r8] | __asm ("str.w r7, [r8]");
| }
| if (r5 != 0) {
| label_0:
0x00077a5a cbz r5, 0x77a66 |
0x00077a5c movs r2, 0 | r2 = 0;
0x00077a5e mov r1, r5 | r1 = r5;
0x00077a60 movs r0, 2 | r0 = 2;
0x00077a62 blx 0x9258 | sigaction ();
| }
0x00077a66 ldr.w r2, [pc, 0x4ec] | r2 = *(0x77f56);
0x00077a6a invalid |
0x00077a6c adds r4, 0xd4 | r4 += 0xd4;
0x00077a6e add r2, pc | r2 += pc;
0x00077a70 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00077a72 ldr r2, [r3] | r2 = *(r3);
0x00077a74 ldr r3, [sp, 0x124] | r3 = *((sp + 0x124));
0x00077a76 eors r2, r3 | r2 ^= r3;
0x00077a78 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00077a7c bne.w 0x77ece | goto label_5;
| }
0x00077a80 mov r0, r4 | r0 = r4;
0x00077a82 add sp, 0x12c |
0x00077a84 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00077e06 add r4, sp, 0xa4 | r4 += var_a4h;
0x00077e08 movs r2, 0x80 | r2 = 0x80;
0x00077e0a add r1, sp, 0x24 | r1 += var_24h;
0x00077e0c mov r0, r4 | r0 = r4;
0x00077e0e blx 0x8f9c | fcn_00008f9c ();
0x00077e12 movs r1, 0x11 | r1 = 0x11;
0x00077e14 mov r0, r4 | r0 = r4;
0x00077e16 blx 0x9038 | r0 = fcn_00009038 ();
0x00077e1a cmp r0, 0 |
| if (r0 < 0) {
0x00077e1c blt 0x77eb8 | goto label_6;
| }
0x00077e1e mov r1, r4 | r1 = r4;
0x00077e20 movs r2, 0 | r2 = 0;
0x00077e22 movs r0, 2 | r0 = 2;
0x00077e24 blx 0x9258 | sigaction ();
0x00077e28 b 0x77a34 |
| }
| label_4:
0x00077e60 mvn r4, 0x46 | r4 = ~0x46;
0x00077e64 b 0x77a5a | goto label_0;
| do {
| label_2:
0x00077e74 movs r0, 1 | r0 = 1;
0x00077e76 blx 0x8d68 | fcn_00008d68 ();
0x00077e7a ldr r3, [pc, 0x16c] |
0x00077e7c add r3, pc | r3 = 0xefe6a;
0x00077e7e b 0x77a00 | goto label_1;
| label_6:
0x00077eb8 ldr r1, [pc, 0x148] |
0x00077eba movw r2, 0x537 | r2 = 0x537;
0x00077ebe ldr r3, [pc, 0x148] |
0x00077ec0 ldr r0, [pc, 0x148] |
0x00077ec2 add r1, pc | r1 = 0xefeca;
0x00077ec4 add r3, pc | r3 = 0xefed2;
0x00077ec6 adds r1, 7 | r1 += 7;
0x00077ec8 add r0, pc | r0 = 0xefed8;
0x00077eca bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x00077ece blx 0x927c | fprintf_chk ()
0x00077ed2 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00077ed6 cmp r0, sb |
0x00077ed8 blt 0x77e74 |
| } while (r0 < sb);
0x00077eda ldr r2, [pc, 0x134] |
0x00077edc mov r1, r6 | r1 = r6;
0x00077ede ldr r4, [pc, 0x134] |
0x00077ee0 mov r0, sb | r0 = sb;
0x00077ee2 ldr r3, [pc, 0x134] |
0x00077ee4 add r2, pc | r2 = 0xefefa;
0x00077ee6 add r4, pc | r4 = 0xeff00;
0x00077ee8 adds r2, 7 | r2 += 7;
0x00077eea add r3, pc | r3 = 0xeff08;
0x00077eec strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x00077ef0 movw r3, 0x563 | r3 = 0x563;
0x00077ef4 bl 0x71448 | fcn_00071448 ();
0x00077ef8 b 0x77e74 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x78034 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00078034 () | void fcn_00078034 (int16_t arg_30h, int16_t arg_34h, int16_t arg_3ch, int16_t arg_44h, int16_t arg_48h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00078034 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00078038 mov r4, r2 | r4 = r2;
0x0007803a ldr r2, [pc, 0xdc] |
0x0007803c mov r5, r3 | r5 = r3;
0x0007803e sub sp, 0x14 |
0x00078040 mov r6, r1 | r6 = r1;
0x00078042 ldr r3, [pc, 0xd8] | r3 = *(0x7811e);
0x00078044 mov r1, r4 | r1 = r4;
0x00078046 add r2, pc | r2 = 0xf0164;
0x00078048 ldr.w sb, [sp, 0x30] | sb = *(arg_30h);
0x0007804c ldr r7, [sp, 0x48] | r7 = *(arg_48h);
0x0007804e ldr r3, [r2, r3] |
0x00078050 mov r2, r5 | r2 = r5;
0x00078052 ldr r3, [r3] | r3 = *(0xf0164);
0x00078054 str r3, [sp, 0xc] | var_ch = r3;
0x00078056 mov.w r3, 0 | r3 = 0;
0x00078058 lsls r0, r0, 0xc | r0 <<= 0xc;
0x0007805a bic r3, sb, 0x324 | r3 = BIT_MASK (sb, 0x324);
0x0007805e orr r3, r3, 4 | r3 |= 4;
0x00078062 str r7, [sp] | *(sp) = r7;
0x00078064 bl 0x77968 | r0 = fcn_00077968 (r0, r1, r2, r3, r4);
0x00078068 cmp r0, 0 |
| if (r0 < 0) {
0x0007806a blt 0x78072 | goto label_0;
| }
0x0007806c it ne |
| if (r0 == 0) {
0x0007806e movne r0, 1 | r0 = 1;
| }
0x00078070 beq 0x7808c |
| while (r7 == 0) {
| label_0:
0x00078072 ldr r2, [pc, 0xac] |
0x00078074 ldr r3, [pc, 0xa4] | r3 = *(0x7811c);
0x00078076 add r2, pc | r2 = 0xf019c;
0x00078078 ldr r3, [r2, r3] | r3 = *(0xf019c);
0x0007807a ldr r2, [r3] | r2 = *(0xf019c);
0x0007807c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007807e eors r2, r3 | r2 ^= r3;
0x00078080 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00078084 bne 0x78112 | goto label_1;
| }
0x00078086 add sp, 0x14 |
0x00078088 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0007808c ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x0007808e ldrd r0, r1, [sp, 0x34] | __asm ("ldrd r0, r1, [arg_34h]");
0x00078092 str r3, [sp] | *(sp) = r3;
0x00078094 ldrd r2, r3, [sp, 0x3c] | __asm ("ldrd r2, r3, [arg_3ch]");
0x00078098 bl 0x73af8 | r0 = fcn_00073af8 (r0, r1, r2, r3, r4);
0x0007809c subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x000780a0 blt 0x780dc | goto label_2;
| }
0x000780a2 add r3, sp, 8 | r3 += var_8h;
0x000780a4 mov r2, r5 | r2 = r5;
0x000780a6 str r3, [sp] | *(sp) = r3;
0x000780a8 mov r1, r4 | r1 = r4;
0x000780aa bic r3, sb, 0x93 | r3 = BIT_MASK (sb, 0x93);
0x000780ae mov r0, r6 | r0 = r6;
0x000780b0 bl 0x77968 | r0 = fcn_00077968 (r0, r1, r2, r3, r4);
0x000780b4 cmp r0, 0 |
| if (r0 < 0) {
0x000780b6 blt 0x7810c | goto label_3;
| }
| if (r0 != 0) {
0x000780b8 beq 0x780d2 |
0x000780ba ands r2, sb, 0x40 | r2 = sb & 0x40;
0x000780be ldr r1, [sp, 8] | r1 = var_8h;
0x000780c0 it ne |
| if (r2 == sb) {
0x000780c2 movne r2, 3 | r2 = 3;
| }
0x000780c4 mov r0, r6 | r0 = r6;
0x000780c6 bl 0x76be0 | r0 = fcn_00076be0 (r0, r1, r2);
0x000780ca cmp r0, 0 |
| if (r0 < 0) {
0x000780cc blt 0x7810c | goto label_3;
| }
0x000780ce blx 0x8d68 | fcn_00008d68 ();
| }
0x000780d2 cmp r7, 0 |
0x000780d4 beq 0x78072 |
| }
0x000780d6 ldr r3, [sp, 8] | r3 = var_8h;
0x000780d8 str r3, [r7] | *(r7) = r3;
0x000780da b 0x78072 | goto label_0;
| label_2:
0x000780dc tst.w sb, 0x40 |
0x000780e0 ite ne |
| if ((sb & 0x40) == 0) {
0x000780e2 movne r5, 3 | r5 = 3;
| }
| if ((sb & 0x40) != 0) {
0x000780e4 moveq r5, 7 | r5 = 7;
| }
0x000780e6 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000780ea cmp r0, r5 |
| if (r0 >= r5) {
0x000780ec blt 0x7810c |
0x000780ee ldr r2, [pc, 0x34] |
0x000780f0 mov r1, r8 | r1 = r8;
0x000780f2 ldr r4, [pc, 0x34] |
0x000780f4 mov r0, r5 | r0 = r5;
0x000780f6 ldr r3, [pc, 0x34] |
0x000780f8 add r2, pc | r2 = 0xf0222;
0x000780fa add r4, pc | r4 = 0xf0228;
0x000780fc adds r2, 7 | r2 += 7;
0x000780fe add r3, pc | r3 = 0xf0230;
0x00078100 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x00078104 movw r3, 0x5d7 | r3 = 0x5d7;
0x00078108 bl 0x71448 | fcn_00071448 ();
| }
| label_3:
0x0007810c movs r0, 1 | r0 = 1;
0x0007810e blx 0x8d68 | fcn_00008d68 ();
| label_1:
0x00078112 blx 0x927c | fprintf_chk ()
0x00078116 nop |
0x00078118 lsrs r6, r7, 9 | r6 = r7 >> 9;
0x0007811a movs r5, r0 | r5 = r0;
0x0007811c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007811e movs r0, r0 |
0x00078120 lsrs r6, r1, 9 | r6 = r1 >> 9;
0x00078122 movs r5, r0 | r5 = r0;
0x00078124 svc 0x7c | __asm ("svc 0x7c");
0x00078126 movs r2, r0 | r2 = r0;
0x00078128 b 0x77a90 | return void (*0x77a90)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x78130 */
| #include <stdint.h>
|
; (fcn) fcn.00078130 () | void fcn_00078130 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_14h;
| r0 = arg1;
0x00078130 push {r4, lr} |
0x00078132 sub sp, 0x18 |
0x00078134 ldr r4, [pc, 0x48] |
0x00078136 movs r2, 0xc | r2 = 0xc;
0x00078138 movs r1, 1 | r1 = 1;
0x0007813a str r0, [sp] | *(sp) = r0;
0x0007813c ldr r0, [pc, 0x44] | r0 = *(0x78184);
0x0007813e add r4, pc | r4 = 0xf02c2;
0x00078140 ldr r3, [pc, 0x44] |
0x00078142 ldr r0, [r4, r0] |
0x00078144 add r4, sp, 8 | r4 += var_8h;
0x00078146 add r3, pc | r3 = 0xf02d2;
0x00078148 ldr r0, [r0] | r0 = *(0xf02c2);
0x0007814a str r0, [sp, 0x14] | var_14h = r0;
0x0007814c mov.w r0, 0 | r0 = 0;
0x00078150 mov r0, r4 | r0 = r4;
0x00078152 blx 0x9494 | fcn_00009494 ();
0x00078156 ldr r0, [pc, 0x34] |
0x00078158 movs r3, 0 | r3 = 0;
0x0007815a movs r2, 0x90 | r2 = 0x90;
0x0007815c mov r1, r4 | r1 = r4;
0x0007815e add r0, pc | r0 = 0xf02f0;
0x00078160 bl 0x6ae3c | fcn_0006ae3c (r0, r1, r2, r3);
0x00078164 ldr r2, [pc, 0x28] |
0x00078166 ldr r3, [pc, 0x1c] | r3 = *(0x78186);
0x00078168 add r2, pc | r2 = 0xf02fc;
0x0007816a ldr r3, [r2, r3] | r3 = *(0xf02fc);
0x0007816c ldr r2, [r3] | r2 = *(0xf02fc);
0x0007816e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00078170 eors r2, r3 | r2 ^= r3;
0x00078172 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00078176 bne 0x7817c |
0x00078178 add sp, 0x18 |
0x0007817a pop {r4, pc} |
| }
0x0007817c blx 0x927c | r0 = fprintf_chk ()
0x00078180 lsrs r6, r0, 6 | r6 = r0 >> 6;
0x00078182 movs r5, r0 | r5 = r0;
0x00078184 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00078186 movs r0, r0 |
0x00078188 ldm r7, {r1, r3, r4, r6, r7} | r1 = *(r7);
| r3 = *((r7 + 4));
| r4 = *((r7 + 8));
| r6 = *((r7 + 12));
| r7 = *((r7 + 16));
0x0007818a movs r0, r0 |
0x0007818c b 0x77a6c | return void (*0x77a6c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x781ec */
| #include <stdint.h>
|
; (fcn) fcn.000781ec () | void fcn_000781ec () {
| int16_t var_0h;
| int16_t var_4h;
0x000781ec ldr r3, [pc, 0x98] |
0x000781ee ldr r1, [pc, 0x9c] |
0x000781f0 ldr r2, [pc, 0x9c] | r2 = *(0x78290);
0x000781f2 add r3, pc | r3 = 0xf047e;
0x000781f4 push {r4, r5, r6, lr} |
0x000781f6 add r1, pc | r1 = 0xf0488;
0x000781f8 ldrb r3, [r3] | r3 = *(r3);
0x000781fa sub sp, 8 |
0x000781fc ldr r2, [r1, r2] |
0x000781fe ldr r2, [r2] | r2 = *(0xf0488);
0x00078200 str r2, [sp, 4] | var_4h = r2;
0x00078202 mov.w r2, 0 | r2 = 0;
0x00078206 cbz r3, 0x78220 |
| while (r1 != 0) {
| label_0:
0x00078208 ldr r2, [pc, 0x88] |
0x0007820a ldr r3, [pc, 0x84] | r3 = *(0x78292);
0x0007820c add r2, pc | r2 = 0xf04a4;
0x0007820e ldr r3, [r2, r3] | r3 = *(0xf04a4);
0x00078210 ldr r2, [r3] | r2 = *(0xf04a4);
0x00078212 ldr r3, [sp, 4] | r3 = var_4h;
0x00078214 eors r2, r3 | r2 ^= r3;
0x00078216 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007821a bne 0x78284 | goto label_2;
| }
0x0007821c add sp, 8 |
0x0007821e pop {r4, r5, r6, pc} |
0x00078220 movs r0, 0x19 | r0 = 0x19;
0x00078222 blx 0x8a84 | r0 = sysconf ();
0x00078226 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00078228 cbnz r0, 0x78276 | goto label_3;
| }
| label_1:
0x0007822a movs r0, 0 | r0 = 0;
0x0007822c bl 0x7c5e4 | r0 = fcn_0007c5e4 (r0, r1, r2);
0x00078230 mov r6, r0 | r6 = r0;
0x00078232 blx 0x9158 | r0 = fcn_00009158 ();
0x00078236 mov r4, r0 | r4 = r0;
0x00078238 mov r0, sp | r0 = sp;
0x0007823a bl 0x781e4 | r0 = fcn_000781e4 ();
0x0007823e cmp r0, 0 |
0x00078240 eor.w r4, r4, r6 | r4 ^= r6;
0x00078244 it ge |
| if (r0 < 0) {
0x00078246 ldrge r3, [sp] | r3 = *(sp);
| }
0x00078248 eor.w r4, r4, r5 | r4 ^= r5;
0x0007824c ldr r5, [pc, 0x48] |
0x0007824e it ge |
| if (r0 < 0) {
0x00078250 eorge r4, r3 | r4 ^= r3;
| }
0x00078252 mov r0, r4 | r0 = r4;
0x00078254 add r5, pc | r5 = 0xf04f0;
0x00078256 blx 0x8a38 | fcn_00008a38 ();
0x0007825a ldr r3, [pc, 0x40] |
0x0007825c movs r4, 1 | r4 = 1;
0x0007825e ldrb r1, [r5] | r1 = *(r5);
0x00078260 add r3, pc | r3 = 0xf0502;
0x00078262 strb r4, [r3] | *(r3) = r4;
0x00078264 cmp r1, 0 |
0x00078266 bne 0x78208 |
| }
0x00078268 ldr r2, [pc, 0x34] |
0x0007826a mov r0, r1 | r0 = r1;
0x0007826c add r2, pc | r2 = 0xf0510;
0x0007826e bl 0x8115c | fcn_0008115c ();
0x00078272 strb r4, [r5] | *(r5) = r4;
0x00078274 b 0x78208 | goto label_0;
| label_3:
0x00078276 ldr r2, [pc, 0x2c] |
0x00078278 movs r1, 0x10 | r1 = 0x10;
0x0007827a add r2, pc | r2 = 0xf0524;
0x0007827c bl 0x78f1c | r0 = fcn_00078f1c (r0, r1, r2);
0x00078280 mov r5, r0 | r5 = r0;
0x00078282 b 0x7822a | goto label_1;
| label_2:
0x00078284 blx 0x927c | fprintf_chk ()
0x00078288 movs r4, 0x27 | r4 = 0x27;
0x0007828a movs r5, r0 | r5 = r0;
0x0007828c lsrs r6, r1, 3 | r6 = r1 >> 3;
0x0007828e movs r5, r0 | r5 = r0;
0x00078290 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00078292 movs r0, r0 |
0x00078294 lsrs r0, r7, 2 | r0 = r7 >> 2;
0x00078296 movs r5, r0 | r5 = r0;
0x00078298 movs r3, 0xc4 | r3 = 0xc4;
0x0007829a movs r5, r0 | r5 = r0;
0x0007829c movs r3, 0xb9 | r3 = 0xb9;
0x0007829e movs r5, r0 | r5 = r0;
0x000782a0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x782e4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000782e4 () | void fcn_000782e4 (int16_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000782e4 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000782e8 mov r8, r2 | r8 = r2;
0x000782ea ldr r2, [pc, 0x1c0] |
0x000782ec sub sp, 0xc |
0x000782ee ldr r3, [pc, 0x1c0] | r3 = *(0x784b2);
0x000782f0 add r2, pc | r2 = 0xf07a2;
0x000782f2 ldr r3, [r2, r3] |
0x000782f4 ldr r3, [r3] | r3 = *(0xf07a2);
0x000782f6 str r3, [sp, 4] | var_4h = r3;
0x000782f8 mov.w r3, 0 | r3 = 0;
0x000782fc cmp r1, 0 |
| if (r1 == 0) {
0x000782fe beq 0x783b8 | goto label_4;
| }
0x00078300 ands r5, r8, 8 | r5 = r8 & 8;
0x00078304 mov r6, r0 | r6 = r0;
0x00078306 mov r4, r1 | r4 = r1;
| if (r5 == r8) {
0x00078308 bne 0x7837c |
| label_0:
0x0007830a ldr r3, [pc, 0x1a8] |
0x0007830c add r3, pc |
0x0007830e ldr r3, [r3] | r3 = *(0xf07c6);
| if (r3 != 0) {
0x00078310 cbz r3, 0x7835a |
0x00078312 ldr.w sb, [pc, 0x1a4] |
0x00078316 lsr.w sl, r8, 2 | sl = r8 >> 2;
0x0007831a and fp, r8, 2 |
0x0007831e movs r7, 1 | r7 = 1;
0x00078320 add sb, pc | sb = 0xf07de;
| label_1:
0x00078322 and r2, sl, 4 | r2 = sl & 4;
0x00078326 mov r1, r4 | r1 = r4;
0x00078328 cmp.w fp, 0 |
0x0007832c it eq |
| if (fp != 0) {
0x0007832e orreq r2, r2, 1 | r2 |= 1;
| }
0x00078332 mov r0, r6 | r0 = r6;
0x00078334 blx 0x8f5c | r0 = fcn_00008f5c ();
0x00078338 cmp r0, 0 |
| if (r0 <= 0) {
0x0007833a ble 0x783e0 | goto label_5;
| }
0x0007833c cmp r4, r0 |
0x0007833e str.w r7, [sb] | __asm ("str.w r7, [sb]");
| if (r4 == r0) {
0x00078342 beq 0x783b8 | goto label_4;
| }
0x00078344 cmp r0, r4 |
| if (r0 >= r4) {
0x00078346 bhs 0x7843e | goto label_6;
| }
0x00078348 tst.w r8, 1 |
0x0007834c add r6, r0 | r6 += r0;
0x0007834e sub.w r4, r4, r0 | r4 -= r0;
| if ((r8 & 1) != 0) {
0x00078352 bne 0x78452 | goto label_7;
| }
0x00078354 cmp.w fp, 0 |
| if (fp != 0) {
0x00078358 bne 0x78426 | goto label_8;
| }
| }
| label_2:
0x0007835a ldr r0, [pc, 0x160] |
0x0007835c mov.w r1, 0x100 |
0x00078360 movt r1, 8 | r1 = 0x80100;
0x00078364 add r0, pc | r0 = 0xf0826;
0x00078366 blx 0x908c | r0 = fcn_0000908c ();
0x0007836a subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0007836c blt 0x7842a | goto label_9;
| }
0x0007836e mov r2, r4 | r2 = r4;
0x00078370 movs r3, 1 | r3 = 1;
0x00078372 mov r1, r6 | r1 = r6;
0x00078374 bl 0x6fe5c | r0 = fcn_0006fe5c (r0, r1, r2, r3);
0x00078378 mov r4, r0 | r4 = r0;
0x0007837a b 0x783be | goto label_3;
| }
0x0007837c movs r5, 0 | r5 = 0;
0x0007837e mov r7, sp | r7 = sp;
0x00078380 b 0x7839c |
| while (r0 >= 0) {
0x00078382 cmp r4, 4 |
0x00078384 mov r5, r4 | r5 = r4;
0x00078386 it hs |
| if (r4 < 4) {
0x00078388 movhs r5, 4 | r5 = 4;
| }
0x0007838a mov r0, r6 | r0 = r6;
0x0007838c mov r2, r5 | r2 = r5;
0x0007838e mov r1, r7 | r1 = r7;
0x00078390 blx 0x8f9c | fcn_00008f9c ();
0x00078394 subs r4, r4, r5 | r4 -= r5;
0x00078396 add r6, r5 | r6 += r5;
| if (r4 == r4) {
0x00078398 beq 0x783b8 | goto label_4;
| }
0x0007839a movs r5, 1 | r5 = 1;
0x0007839c mov r0, r7 | r0 = r7;
0x0007839e bl 0x781e4 | r0 = fcn_000781e4 ();
0x000783a2 cmp r0, 0 |
0x000783a4 bge 0x78382 |
| }
0x000783a6 cmp r5, 0 |
| if (r5 == 0) {
0x000783a8 beq 0x7830a | goto label_0;
| }
0x000783aa tst.w r8, 1 |
| if ((r8 & 1) == 0) {
0x000783ae beq 0x7830a | goto label_0;
| }
0x000783b0 mov r1, r4 | r1 = r4;
0x000783b2 mov r0, r6 | r0 = r6;
0x000783b4 bl 0x782a8 | fcn_000782a8 (r0, r1);
| label_4:
0x000783b8 mov.w r5, -1 | r5 = -1;
0x000783bc movs r4, 0 | r4 = 0;
| label_3:
0x000783be mov r0, r5 | r0 = r5;
0x000783c0 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x000783c4 ldr r2, [pc, 0xf8] |
0x000783c6 ldr r3, [pc, 0xe8] | r3 = *(0x784b2);
0x000783c8 add r2, pc | r2 = 0xf088c;
0x000783ca ldr r3, [r2, r3] | r3 = *(0xf088c);
0x000783cc ldr r2, [r3] | r2 = *(0xf088c);
0x000783ce ldr r3, [sp, 4] | r3 = var_4h;
0x000783d0 eors r2, r3 | r2 ^= r3;
0x000783d2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000783d6 bne 0x784a8 | goto label_10;
| }
0x000783d8 mov r0, r4 | r0 = r4;
0x000783da add sp, 0xc |
0x000783dc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| if (r2 == r3) {
| label_5:
0x000783e0 beq 0x78462 | goto label_11;
| }
0x000783e2 blx 0x9628 | r0 = fcn_00009628 ();
0x000783e6 ldr r3, [r0] | r3 = *(r0);
0x000783e8 eor.w r2, r3, r3, asr 31 | r2 = r3 ^ (r3 >> 31);
0x000783ec sub.w r2, r2, r3, asr 31 | r2 -= (r3 >> 31);
0x000783f0 cmp r2, 0x26 |
| if (r2 == 0x26) {
0x000783f2 beq 0x7841c | goto label_12;
| }
| if (r2 > 0x26) {
0x000783f4 bgt 0x78416 | goto label_13;
| }
0x000783f6 cmp r2, 0x19 |
| if (r2 == 0x19) {
0x000783f8 beq 0x7841c | goto label_12;
| }
| do {
0x000783fa cmp r3, 0xb |
| if (r3 == 0xb) {
0x000783fc beq 0x7847e | goto label_14;
| }
0x000783fe cmp r3, 0x16 |
| if (r3 != 0x16) {
0x00078400 bne 0x784a0 | goto label_15;
| }
0x00078402 tst.w r8, 0x10 |
| if ((r8 & 0x10) == 0) {
0x00078406 beq 0x78474 | goto label_16;
| }
0x00078408 bic r8, r8, 0x10 | r8 = BIT_MASK (r8, 0x10);
0x0007840c lsr.w sl, r8, 2 | sl = r8 >> 2;
0x00078410 and fp, r8, 2 |
0x00078414 b 0x78322 | goto label_1;
| label_13:
0x00078416 subs r2, 0x5d | r2 -= 0x5d;
0x00078418 cmp r2, 4 |
0x0007841a bhi 0x783fa |
| } while (r2 > 4);
| label_12:
0x0007841c ldr r3, [pc, 0xa4] |
0x0007841e movs r2, 0 | r2 = 0;
0x00078420 add r3, pc | r3 = 0xf08e8;
0x00078422 str r2, [r3] | *(r3) = r2;
0x00078424 b 0x7835a | goto label_2;
| label_8:
0x00078426 movs r5, 1 | r5 = 1;
0x00078428 b 0x78322 | goto label_1;
| label_9:
0x0007842a blx 0x9628 | r0 = fcn_00009628 ();
0x0007842e ldr r4, [r0] | r4 = *(r0);
0x00078430 cmp r4, 2 |
0x00078432 it ne |
| if (r4 == 2) {
0x00078434 rsbne r4, r4, 0 | __asm ("rsbne r4, r4, 0");
| goto label_17;
| }
| if (r4 != 2) {
| label_17:
0x00078436 bne 0x783be | goto label_3;
| }
0x00078438 mvn r4, 0x25 | r4 = ~0x25;
0x0007843c b 0x783be | goto label_3;
| label_6:
0x0007843e ldr r1, [pc, 0x88] |
0x00078440 movs r2, 0xe8 | r2 = 0xe8;
0x00078442 ldr r3, [pc, 0x88] |
0x00078444 ldr r0, [pc, 0x88] |
0x00078446 add r1, pc | r1 = 0xf0914;
0x00078448 add r3, pc | r3 = 0xf091a;
0x0007844a adds r1, 7 | r1 += 7;
0x0007844c add r0, pc | r0 = 0xf0920;
0x0007844e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| do {
| label_7:
0x00078452 mov r1, r4 | r1 = r4;
0x00078454 mov r0, r6 | r0 = r6;
0x00078456 mov.w r5, -1 | r5 = -1;
0x00078458 adds r5, 0xff | r5 += 0xff;
0x0007845a movs r4, 0 | r4 = 0;
0x0007845c bl 0x782a8 | fcn_000782a8 (r0, r1);
0x00078460 b 0x783be | goto label_3;
| label_11:
0x00078462 ldr r3, [pc, 0x70] |
0x00078464 movs r2, 1 | r2 = 1;
0x00078466 mov.w r5, -1 | r5 = -1;
0x0007846a mvn r4, 4 | r4 = ~4;
0x0007846e add r3, pc | r3 = 0xf0948;
0x00078470 str r2, [r3] | *(r3) = r2;
0x00078472 b 0x783be | goto label_3;
| label_16:
0x00078474 mov.w r5, -1 | r5 = -1;
0x00078478 mvn r4, 0x15 | r4 = ~0x15;
0x0007847c b 0x783be | goto label_3;
| label_14:
0x0007847e ldr r3, [pc, 0x58] |
0x00078480 movs r2, 1 | r2 = 1;
0x00078482 add r3, pc | r3 = 0xf0960;
0x00078484 str r2, [r3] | *(r3) = r2;
| if (r5 == 0) {
0x00078486 cbz r5, 0x7848e | goto label_18;
| }
0x00078488 tst.w r8, 1 |
0x0007848c bne 0x78452 |
| } while ((r8 & 1) != 0);
| label_18:
0x0007848e tst.w r8, 4 |
| if ((r8 & 4) == 0) {
0x00078492 beq.w 0x7835a | goto label_2;
| }
0x00078496 mov.w r5, -1 | r5 = -1;
0x0007849a mvn r4, 0x3c | r4 = ~0x3c;
0x0007849e b 0x783be | goto label_3;
| label_15:
0x000784a0 rsbs r4, r3, 0 | r4 = r3 - ;
0x000784a2 mov.w r5, -1 | r5 = -1;
0x000784a6 b 0x783be | goto label_3;
| label_10:
0x000784a8 blx 0x927c | fprintf_chk ()
0x000784ac lsls r4, r2, 0x1f | r4 = r2 << 0x1f;
0x000784ae movs r5, r0 | r5 = r0;
0x000784b0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000784b2 movs r0, r0 |
0x000784b4 asrs r0, r5, 3 | r0 = r5 >> 3;
0x000784b6 movs r5, r0 | r5 = r0;
0x000784b8 asrs r4, r2, 3 | r4 = r2 >> 3;
0x000784ba movs r5, r0 | r5 = r0;
0x000784bc b 0x78cb8 | return void (*0x78cb8)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x78588 */
| #include <stdint.h>
|
; (fcn) fcn.00078588 () | void fcn_00078588 () {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_24h;
0x00078588 ldr r2, [pc, 0xe8] |
0x0007858a movs r0, 7 | r0 = 7;
0x0007858c ldr r3, [pc, 0xe8] | r3 = *(0x78678);
0x0007858e push {r4, lr} |
0x00078590 sub sp, 0x28 |
0x00078592 add r2, pc | r2 = 0xf0c0a;
0x00078594 add r4, sp, 0x10 | r4 += var_10h;
0x00078596 mov r1, r4 | r1 = r4;
0x00078598 ldr r3, [r2, r3] |
0x0007859a ldr r3, [r3] | r3 = *(0xf0c0a);
0x0007859c str r3, [sp, 0x24] | var_24h = r3;
0x0007859e mov.w r3, 0 | r3 = 0;
0x000785a2 blx 0x8e60 | r0 = fcn_00008e60 ();
0x000785a6 cmp r0, 0 |
| if (r0 < 0) {
0x000785a8 blt 0x78614 | goto label_2;
| }
0x000785aa ldrd r1, r3, [sp, 0x10] | __asm ("ldrd r1, r3, [var_10h]");
0x000785ae movw r2, 0x401 | r2 = 0x401;
0x000785b2 cmp r1, r2 |
0x000785b4 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x000785b8 it lo |
| if (r1 >= r2) {
0x000785ba movlo r0, 0 | r0 = 0;
| }
0x000785bc bhs 0x785d6 |
| while (r0 >= 0) {
| label_0:
0x000785be ldr r2, [pc, 0xbc] |
0x000785c0 ldr r3, [pc, 0xb4] | r3 = *(0x78678);
0x000785c2 add r2, pc | r2 = 0xf0c44;
0x000785c4 ldr r3, [r2, r3] | r3 = *(0xf0c44);
0x000785c6 ldr r2, [r3] | r2 = *(0xf0c44);
0x000785c8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000785ca eors r2, r3 | r2 ^= r3;
0x000785cc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000785d0 bne 0x7866e | goto label_3;
| }
0x000785d2 add sp, 0x28 |
0x000785d4 pop {r4, pc} |
0x000785d6 mov.w r2, 0x400 | r2 = 0x400;
0x000785da movs r3, 0 | r3 = 0;
0x000785dc mov r1, r4 | r1 = r4;
0x000785de movs r0, 7 | r0 = 7;
0x000785e0 strd r2, r3, [sp, 0x10] | __asm ("strd r2, r3, [var_10h]");
0x000785e4 blx 0x950c | r0 = fcn_0000950c ();
0x000785e8 cmp r0, 0 |
0x000785ea it ge |
| if (r0 < 0) {
0x000785ec movge r0, 1 | r0 = 1;
| }
0x000785ee bge 0x785be |
| }
0x000785f0 blx 0x9628 | r0 = fcn_00009628 ();
0x000785f4 ldr r4, [r0] | r4 = *(r0);
0x000785f6 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000785fa cmp r0, 6 |
| if (r0 > 6) {
0x000785fc bgt 0x78644 | goto label_4;
| }
| do {
0x000785fe eor.w r0, r4, r4, asr 31 | r0 = r4 ^ (r4 >> 31);
0x00078602 sub.w r0, r0, r4, asr 31 | r0 -= (r4 >> 31);
0x00078606 uxtb r0, r0 | r0 = (int8_t) r0;
0x00078608 rsbs r0, r0, 0 | r0 -= ;
| label_1:
0x0007860a cmp r0, 0 |
0x0007860c it ge |
| if (r0 < 0) {
0x0007860e mvnge r0, 0x55 | r0 = ~0x55;
| }
0x00078612 b 0x785be | goto label_0;
| label_2:
0x00078614 blx 0x9628 | r0 = fcn_00009628 ();
0x00078618 ldr r4, [r0] | r4 = *(r0);
0x0007861a bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007861e cmp r0, 6 |
0x00078620 ble 0x785fe |
| } while (r0 <= 6);
0x00078622 ldr r2, [pc, 0x5c] |
0x00078624 movw r3, 0x191 | r3 = 0x191;
0x00078628 ldr.w ip, [pc, 0x58] |
0x0007862c mov r1, r4 | r1 = r4;
0x0007862e ldr r0, [pc, 0x58] |
0x00078630 add r2, pc | r2 = 0xf0cb6;
0x00078632 add ip, pc | ip = 0xf0cba;
0x00078634 adds r2, 7 | r2 += 7;
0x00078636 add r0, pc | r0 = 0xf0cc4;
0x00078638 strd r0, ip, [sp] | __asm ("strd r0, ip, [sp]");
0x0007863c movs r0, 7 | r0 = 7;
0x0007863e bl 0x71448 | fcn_00071448 ();
0x00078642 b 0x7860a | goto label_1;
| label_4:
0x00078644 ldr r2, [pc, 0x44] |
0x00078646 mov r1, r4 | r1 = r4;
0x00078648 ldr.w ip, [pc, 0x44] |
0x0007864c mov.w r3, 0x198 | r3 = 0x198;
0x00078650 ldr r0, [pc, 0x40] |
0x00078652 vldr d16, [sp, 0x10] | __asm ("vldr d16, [sp, 0x10]");
0x00078656 add r2, pc | r2 = 0xf0ce6;
0x00078658 add ip, pc | ip = 0xf0cec;
0x0007865a adds r2, 7 | r2 += 7;
0x0007865c add r0, pc | r0 = 0xf0cf4;
0x0007865e strd r0, ip, [sp] | __asm ("strd r0, ip, [sp]");
0x00078662 movs r0, 7 | r0 = 7;
0x00078664 vstr d16, [sp, 8] | __asm ("vstr d16, [sp, 8]");
0x00078668 bl 0x71448 | fcn_00071448 ();
0x0007866c b 0x7860a | goto label_1;
| label_3:
0x0007866e blx 0x927c | fprintf_chk ()
0x00078672 nop |
0x00078674 lsls r2, r6, 0x14 | r2 = r6 << 0x14;
0x00078676 movs r5, r0 | r5 = r0;
0x00078678 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007867a movs r0, r0 |
0x0007867c lsls r2, r0, 0x14 | r2 = r0 << 0x14;
0x0007867e movs r5, r0 | r5 = r0;
0x00078680 b 0x789b4 | return void (*0x789b4)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x78740 */
| #include <stdint.h>
|
; (fcn) fcn.00078740 () | void fcn_00078740 () {
| int16_t var_4h_2;
| int16_t var_84h_2;
| int16_t var_9ch;
| int16_t var_4h;
| int16_t var_84h;
0x00078740 ldr r2, [pc, 0x54] |
0x00078742 ldr r3, [pc, 0x58] | r3 = *(0x7879e);
0x00078744 push {r4, lr} |
0x00078746 sub sp, 0x88 |
0x00078748 add r2, pc | r2 = 0xf0ee4;
0x0007874a add r4, sp, 4 | r4 += var_4h;
0x0007874c mov r0, r4 | r0 = r4;
0x0007874e ldr r3, [r2, r3] |
0x00078750 ldr r3, [r3] | r3 = *(0xf0ee4);
0x00078752 str r3, [sp, 0x84] | var_84h = r3;
0x00078754 mov.w r3, 0 | r3 = 0;
0x00078758 blx 0x8994 | r0 = sigemptyset ();
0x0007875c cmp r0, 0 |
| if (r0 < 0) {
0x0007875e blt 0x7878a | goto label_0;
| }
0x00078760 movs r2, 0 | r2 = 0;
0x00078762 mov r1, r4 | r1 = r4;
0x00078764 movs r0, 2 | r0 = 2;
0x00078766 blx 0x9258 | r0 = sigaction ();
0x0007876a cmp r0, 0 |
0x0007876c it ge |
| if (r0 < 0) {
0x0007876e movge r0, 0 | r0 = 0;
| }
0x00078770 blt 0x7878a |
| while (1) {
0x00078772 ldr r2, [pc, 0x2c] |
0x00078774 ldr r3, [pc, 0x24] | r3 = *(0x7879c);
0x00078776 add r2, pc | r2 = 0xf0f1c;
0x00078778 ldr r3, [r2, r3] | r3 = *(0xf0f1c);
0x0007877a ldr r2, [r3] | r2 = *(0xf0f1c);
0x0007877c ldr r3, [sp, 0x84] | r3 = var_84h;
0x0007877e eors r2, r3 | r2 ^= r3;
0x00078780 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00078784 bne 0x78794 | goto label_1;
| }
0x00078786 add sp, 0x88 |
0x00078788 pop {r4, pc} |
| label_0:
0x0007878a blx 0x9628 | r0 = fcn_00009628 ();
0x0007878e ldr r0, [r0] | r0 = *(r0);
0x00078790 rsbs r0, r0, 0 | r0 -= ;
0x00078792 b 0x78772 |
| }
| label_1:
0x00078794 blx 0x927c | fprintf_chk ()
0x00078798 lsls r4, r7, 0xd | r4 = r7 << 0xd;
0x0007879a movs r5, r0 | r5 = r0;
0x0007879c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007879e movs r0, r0 |
0x000787a0 lsls r6, r1, 0xd | r6 = r1 << 0xd;
0x000787a2 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x787a4 */
| #include <stdint.h>
|
; (fcn) fcn.000787a4 () | void fcn_000787a4 (int16_t arg1) {
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_84h;
| int16_t var_9ch;
| int16_t var_a0h;
| r0 = arg1;
0x000787a4 bmi 0x7a57e4 |
0x000787a8 ldr r3, [pc, 0x70] |
0x000787aa add r2, pc | r2 += pc;
0x000787ac push {r4, r5, r6, lr} |
0x000787ae sub sp, 0x8c |
0x000787b0 mov r4, r0 | r4 = r0;
0x000787b2 add r5, sp, 4 | r5 += var_4h;
0x000787b4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000787b6 mov r0, r5 | r0 = r5;
0x000787b8 ldr r6, [sp, 0x9c] | r6 = var_9ch;
0x000787ba ldr r3, [r3] | r3 = *(0x7881c);
0x000787bc str r3, [sp, 0x84] | var_84h = r3;
0x000787be mov.w r3, 0 | r3 = 0;
0x000787c2 blx 0x8994 | r0 = sigemptyset ();
0x000787c6 cmp r0, 0 |
| if (r0 < 0) {
0x000787c8 blt 0x78808 | goto label_0;
| }
0x000787ca add r1, sp, 0xa0 | r1 += var_a0h;
0x000787cc mov r0, r5 | r0 = r5;
0x000787ce str r1, [sp] | *(sp) = r1;
0x000787d0 bl 0x78698 | r0 = fcn_00078698 (r0, r1);
0x000787d4 cmp r0, 0 |
| if (r0 < 0) {
0x000787d6 blt 0x787ea | goto label_1;
| }
0x000787d8 mov r2, r6 | r2 = r6;
0x000787da mov r1, r5 | r1 = r5;
0x000787dc mov r0, r4 | r0 = r4;
0x000787de blx 0x9258 | r0 = sigaction ();
0x000787e2 cmp r0, 0 |
0x000787e4 it ge |
| if (r0 < 0) {
0x000787e6 movge r0, 0 | r0 = 0;
| }
0x000787e8 blt 0x78808 |
| while (1) {
| label_1:
0x000787ea ldr r2, [pc, 0x34] |
0x000787ec ldr r3, [pc, 0x2c] | r3 = *(0x7881c);
0x000787ee add r2, pc | r2 = 0xf1014;
0x000787f0 ldr r3, [r2, r3] | r3 = *(0xf1014);
0x000787f2 ldr r2, [r3] | r2 = *(0xf1014);
0x000787f4 ldr r3, [sp, 0x84] | r3 = var_84h;
0x000787f6 eors r2, r3 | r2 ^= r3;
0x000787f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000787fc bne 0x78812 | goto label_2;
| }
0x000787fe add sp, 0x8c |
0x00078800 pop.w {r4, r5, r6, lr} |
0x00078804 add sp, 0xc |
0x00078806 bx lr | return;
| label_0:
0x00078808 blx 0x9628 | r0 = fcn_00009628 ();
0x0007880c ldr r0, [r0] | r0 = *(r0);
0x0007880e rsbs r0, r0, 0 | r0 -= ;
0x00078810 b 0x787ea |
| }
| label_2:
0x00078812 blx 0x927c | fprintf_chk ()
0x00078816 nop |
0x00078818 lsls r2, r3, 0xc | r2 = r3 << 0xc;
0x0007881a movs r5, r0 | r5 = r0;
0x0007881c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007881e movs r0, r0 |
0x00078820 lsls r6, r2, 0xb | r6 = r2 << 0xb;
0x00078822 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x788c0 */
| #include <stdint.h>
|
; (fcn) fcn.000788c0 () | void fcn_000788c0 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x000788c0 blmi 0x108b1c4 | __asm ("blmi aav.0x000501fc");
0x000788c4 push {r4, r5, lr} |
0x000788c6 sub sp, 0xc |
0x000788c8 add r2, pc | r2 += pc;
0x000788ca mov r5, sp | r5 = sp;
0x000788cc mov r1, r5 | r1 = r5;
0x000788ce mov r4, r0 | r4 = r0;
0x000788d0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000788d2 ldr r3, [r3] | r3 = *(r3);
0x000788d4 str r3, [sp, 4] | var_4h = r3;
0x000788d6 mov.w r3, 0 | r3 = 0;
0x000788da bl 0x746ac | r0 = fcn_000746ac (r0, r1);
0x000788de cmp r0, 0 |
| if (r0 < 0) {
0x000788e0 blt 0x78902 | goto label_1;
| }
0x000788e2 ldr r0, [sp] | r0 = *(sp);
0x000788e4 subs r3, r0, 1 | r3 = r0 - 1;
0x000788e6 cmp r3, 0x3f |
| if (r3 > 0x3f) {
0x000788e8 bhi 0x789a8 | goto label_2;
| }
| do {
| label_0:
0x000788ea ldr r2, [pc, 0xdc] |
0x000788ec ldr r3, [pc, 0xd4] | r3 = *(0x789c4);
0x000788ee add r2, pc | r2 = 0xf12bc;
0x000788f0 ldr r3, [r2, r3] | r3 = *(0xf12bc);
0x000788f2 ldr r2, [r3] | r2 = *(0xf12bc);
0x000788f4 ldr r3, [sp, 4] | r3 = var_4h;
0x000788f6 eors r2, r3 | r2 ^= r3;
0x000788f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000788fc bne 0x789ba | goto label_3;
| }
0x000788fe add sp, 0xc |
0x00078900 pop {r4, r5, pc} |
| label_1:
0x00078902 ldr r1, [pc, 0xc8] |
0x00078904 mov r0, r4 | r0 = r4;
0x00078906 add r1, pc | r1 = 0xf12d8;
0x00078908 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
| if (r0 != 0) {
0x0007890c cbz r0, 0x78910 |
0x0007890e adds r4, 3 | r4 += 3;
| }
0x00078910 ldr r0, [pc, 0xbc] |
0x00078912 mov r2, r4 | r2 = r4;
0x00078914 movs r1, 0x20 | r1 = 0x20;
0x00078916 add r0, pc | r0 = 0xf12ea;
0x00078918 bl 0x7a870 | r0 = fcn_0007a870 (r0, r1, r2);
0x0007891c cmp r0, 0 |
0x0007891e str r0, [sp] | *(sp) = r0;
0x00078920 bgt 0x788ea |
| } while (r0 > 0);
0x00078922 ldr r1, [pc, 0xb0] |
0x00078924 mov r0, r4 | r0 = r4;
0x00078926 add r1, pc | r1 = 0xf1300;
0x00078928 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
| if (r0 == 0) {
0x0007892c cbz r0, 0x78962 | goto label_4;
| }
0x0007892e ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x00078930 cbz r3, 0x789a2 | goto label_5;
| }
0x00078932 cmp r3, 0x2b |
| if (r3 != 0x2b) {
0x00078934 bne 0x789b4 | goto label_6;
| }
0x00078936 mov r1, r5 | r1 = r5;
0x00078938 bl 0x746ac | r0 = fcn_000746ac (r0, r1);
0x0007893c cmp r0, 0 |
| if (r0 < 0) {
0x0007893e blt 0x788ea | goto label_0;
| }
0x00078940 ldr r3, [sp] | r3 = *(sp);
0x00078942 cmp r3, 0 |
| if (r3 < 0) {
0x00078944 blt 0x789a8 | goto label_2;
| }
0x00078946 blx 0x92f8 | r0 = fcn_000092f8 ();
0x0007894a mov r4, r0 | r4 = r0;
0x0007894c blx 0x8aa8 | blkid_probe_set_device ();
0x00078950 ldr r3, [sp] | r3 = *(sp);
0x00078952 subs r4, r4, r0 | r4 -= r0;
0x00078954 cmp r4, r3 |
| if (r4 < r3) {
0x00078956 blt 0x789a8 | goto label_2;
| }
0x00078958 blx 0x8aa8 | blkid_probe_set_device ();
0x0007895c ldr r3, [sp] | r3 = *(sp);
0x0007895e add r0, r3 | r0 += r3;
0x00078960 b 0x788ea | goto label_0;
| label_4:
0x00078962 ldr r1, [pc, 0x74] |
0x00078964 mov r0, r4 | r0 = r4;
0x00078966 add r1, pc | r1 = 0xf1344;
0x00078968 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
| if (r0 == 0) {
0x0007896c cbz r0, 0x789b4 | goto label_6;
| }
0x0007896e ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x00078970 cbz r3, 0x789ae | goto label_7;
| }
0x00078972 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00078974 bne 0x789b4 | goto label_6;
| }
0x00078976 mov r1, r5 | r1 = r5;
0x00078978 bl 0x746ac | r0 = fcn_000746ac (r0, r1);
0x0007897c cmp r0, 0 |
| if (r0 < 0) {
0x0007897e blt 0x788ea | goto label_0;
| }
0x00078980 ldr r3, [sp] | r3 = *(sp);
0x00078982 cmp r3, 0 |
| if (r3 <= 0) {
0x00078984 bgt 0x789a8 |
0x00078986 blx 0x8aa8 | r0 = blkid_probe_set_device ();
0x0007898a mov r4, r0 | r4 = r0;
0x0007898c blx 0x92f8 | fcn_000092f8 ();
0x00078990 ldr r3, [sp] | r3 = *(sp);
0x00078992 subs r4, r4, r0 | r4 -= r0;
0x00078994 cmp r4, r3 |
| if (r4 > r3) {
0x00078996 bgt 0x789a8 | goto label_2;
| }
0x00078998 blx 0x92f8 | fcn_000092f8 ();
0x0007899c ldr r3, [sp] | r3 = *(sp);
0x0007899e add r0, r3 | r0 += r3;
0x000789a0 b 0x788ea | goto label_0;
| label_5:
0x000789a2 blx 0x8aa8 | blkid_probe_set_device ();
0x000789a6 b 0x788ea | goto label_0;
| }
| label_2:
0x000789a8 mvn r0, 0x21 | r0 = ~0x21;
0x000789ac b 0x788ea | goto label_0;
| label_7:
0x000789ae blx 0x92f8 | fcn_000092f8 ();
0x000789b2 b 0x788ea | goto label_0;
| label_6:
0x000789b4 mvn r0, 0x15 | r0 = ~0x15;
0x000789b8 b 0x788ea | goto label_0;
| label_3:
0x000789ba blx 0x927c | fprintf_chk ()
0x000789be nop |
0x000789c0 lsls r4, r7, 7 | r4 = r7 << 7;
0x000789c2 movs r5, r0 | r5 = r0;
0x000789c4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000789c6 movs r0, r0 |
0x000789c8 lsls r6, r2, 7 | r6 = r2 << 7;
0x000789ca movs r5, r0 | r5 = r0;
0x000789cc svc 0x8e | __asm ("svc 0x8e");
0x000789ce movs r2, r0 | r2 = r0;
0x000789d0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x789dc */
| #include <stdint.h>
|
; (fcn) fcn.000789dc () | void fcn_000789dc (int16_t arg1) {
| int16_t var_4h;
| int16_t var_84h;
| r0 = arg1;
0x000789dc ldrsbgt pc, [r8], -0x8f | __asm ("ldrsbgt pc, [r8], -0x8f");
0x000789e0 movs r1, 0 | r1 = 0;
0x000789e2 ldr r3, [pc, 0x58] |
0x000789e4 push {r4, r5, lr} |
0x000789e6 sub sp, 0x8c |
0x000789e8 add ip, pc |
0x000789ea add r5, sp, 4 | r5 += var_4h;
0x000789ec mov r4, r0 | r4 = r0;
0x000789ee mov r2, r5 | r2 = r5;
0x000789f0 ldr.w r3, [ip, r3] | r3 = *((ip + r3));
0x000789f4 movs r0, 2 | r0 = 2;
0x000789f6 ldr r3, [r3] | r3 = *(0x78a3e);
0x000789f8 str r3, [sp, 0x84] | var_84h = r3;
0x000789fa mov.w r3, 0 | r3 = 0;
0x000789fe blx 0x8a9c | r0 = libc_current_sigrtmin ();
| if (r0 == 0) {
0x00078a02 cbz r0, 0x78a1e | goto label_1;
| }
| label_0:
0x00078a04 rsbs r0, r0, 0 | r0 -= ;
| do {
0x00078a06 ldr r2, [pc, 0x38] |
0x00078a08 ldr r3, [pc, 0x30] | r3 = *(0x78a3c);
0x00078a0a add r2, pc | r2 = 0xf1450;
0x00078a0c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00078a0e ldr r2, [r3] | r2 = *(r3);
0x00078a10 ldr r3, [sp, 0x84] | r3 = var_84h;
0x00078a12 eors r2, r3 | r2 ^= r3;
0x00078a14 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00078a18 bne 0x78a32 | goto label_2;
| }
0x00078a1a add sp, 0x8c |
0x00078a1c pop {r4, r5, pc} |
| label_1:
0x00078a1e mov r1, r4 | r1 = r4;
0x00078a20 mov r0, r5 | r0 = r5;
0x00078a22 blx 0x8af0 | r0 = loc_imp_gmon_start_ ();
0x00078a26 cmp r0, 0 |
0x00078a28 bge 0x78a06 |
| } while (r0 >= 0);
0x00078a2a blx 0x9628 | r0 = fcn_00009628 ();
0x00078a2e ldr r0, [r0] | r0 = *(r0);
0x00078a30 b 0x78a04 | goto label_0;
| label_2:
0x00078a32 blx 0x927c | fprintf_chk ()
0x00078a36 nop |
0x00078a38 lsls r4, r3, 3 | r4 = r3 << 3;
0x00078a3a movs r5, r0 | r5 = r0;
0x00078a3c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00078a3e movs r0, r0 |
0x00078a40 lsls r2, r7, 2 | r2 = r7 << 2;
0x00078a42 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x78f1c */
| #include <stdint.h>
|
; (fcn) fcn.00078f1c () | void fcn_00078f1c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00078f1c invalid |
0x00078f20 mov r1, r2 | r1 = r2;
0x00078f22 ldr r2, [pc, 0x74] |
0x00078f24 sub sp, 0x38 |
0x00078f26 ldr r3, [pc, 0x74] | r3 = *(0x78f9e);
0x00078f28 add r2, pc | r2 = 0xf1ec6;
0x00078f2a ldr r3, [r2, r3] |
0x00078f2c ldr r3, [r3] | r3 = *(0xf1ec6);
0x00078f2e str r3, [sp, 0x34] | var_34h = r3;
0x00078f30 mov.w r3, 0 | r3 = 0;
| if (r0 != 0) {
0x00078f34 cbz r0, 0x78f6a |
| if (r1 == 0) {
0x00078f36 cbz r1, 0x78f7e | goto label_0;
| }
0x00078f38 mov r4, sp | r4 = sp;
0x00078f3a mov r5, r0 | r5 = r0;
0x00078f3c mov r0, r4 | r0 = r4;
0x00078f3e bl 0x78af4 | fcn_00078af4 (r0, r1);
0x00078f42 mov r2, r4 | r2 = r4;
0x00078f44 mov r1, r6 | r1 = r6;
0x00078f46 mov r0, r5 | r0 = r5;
0x00078f48 bl 0x78bc0 | fcn_00078bc0 (r0, r1, r2, r3, r4, r5, r6);
0x00078f4c mov r0, r4 | r0 = r4;
0x00078f4e bl 0x78e88 | fcn_00078e88 (r0, r1);
0x00078f52 ldr r2, [pc, 0x4c] | r2 = *(0x78fa2);
0x00078f54 ldr r3, [pc, 0x44] | r3 = *(0x78f9c);
0x00078f56 add r2, pc | r2 += pc;
0x00078f58 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00078f5a ldr r2, [r3] | r2 = *(0x78f9c);
0x00078f5c ldr r3, [sp, 0x34] | r3 = var_34h;
0x00078f5e eors r2, r3 | r2 ^= r3;
0x00078f60 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00078f64 bne 0x78f92 | goto label_1;
| }
0x00078f66 add sp, 0x38 |
0x00078f68 pop {r4, r5, r6, pc} |
| }
0x00078f6a ldr r1, [pc, 0x38] |
0x00078f6c movs r2, 0xc3 | r2 = 0xc3;
0x00078f6e ldr r3, [pc, 0x38] |
0x00078f70 ldr r0, [pc, 0x38] |
0x00078f72 add r1, pc | r1 = 0xf1f1c;
0x00078f74 add r3, pc | r3 = 0xf1f22;
0x00078f76 adds r1, 7 | r1 += 7;
0x00078f78 add r0, pc | r0 = 0xf1f28;
0x00078f7a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_0:
0x00078f7e ldr r1, [pc, 0x30] |
0x00078f80 movs r2, 0xc4 | r2 = 0xc4;
0x00078f82 ldr r3, [pc, 0x30] |
0x00078f84 ldr r0, [pc, 0x30] |
0x00078f86 add r1, pc | r1 = 0xf1f3c;
0x00078f88 add r3, pc | r3 = 0xf1f42;
0x00078f8a adds r1, 7 | r1 += 7;
0x00078f8c add r0, pc | r0 = 0xf1f48;
0x00078f8e bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_1:
0x00078f92 blx 0x927c | fprintf_chk ()
0x00078f96 nop |
0x00078f98 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x78fbc */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00078fbc () | void fcn_00078fbc (int16_t arg_78h, uint32_t arg1, uint32_t arg2, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_2ch;
| int16_t var_5ch;
| r0 = arg1;
| r1 = arg2;
| r3 = arg4;
0x00078fbc mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00078fc0 mov r6, r3 | r6 = r3;
0x00078fc2 ldr r4, [pc, 0x244] |
0x00078fc4 sub sp, 0x60 |
0x00078fc6 ldr r3, [pc, 0x244] | r3 = *(0x7920e);
0x00078fc8 add r4, pc | r4 = 0xf21d6;
0x00078fca ldr r5, [sp, 0x78] | r5 = *(arg_78h);
0x00078fcc ldr r3, [r4, r3] |
0x00078fce ldr r3, [r3] | r3 = *(0xf21d6);
0x00078fd0 str r3, [sp, 0x5c] | var_5ch = r3;
0x00078fd2 mov.w r3, 0 | r3 = 0;
0x00078fd6 cmp r0, 0 |
| if (arg_78h == ) {
0x00078fd8 beq.w 0x79138 | goto label_8;
| }
0x00078fdc cmp r1, 1 |
| if (r1 < 1) {
0x00078fde bls.w 0x7914e | goto label_9;
| }
0x00078fe2 mov r4, r0 | r4 = r0;
0x00078fe4 ldrh r0, [r0] | r0 = *(r0);
0x00078fe6 cmp r0, 0xa |
| if (arg_78hxa == ) {
0x00078fe8 beq 0x790dc | goto label_10;
| }
| if (arg_78hxa <= ) {
0x00078fea bhi 0x79024 |
0x00078fec cmp r0, 1 |
| if (r0 == 1) {
0x00078fee beq 0x79070 | goto label_11;
| }
0x00078ff0 cmp r0, 2 |
| if (r0 != 2) {
0x00078ff2 bne 0x79050 | goto label_12;
| }
0x00078ff4 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00078ff6 rev r2, r2 | r2 = SWAP32 (r2);
0x00078ff8 uxtb r0, r2 | r0 = (int8_t) r2;
0x00078ffa lsrs r3, r2, 0x18 | r3 = r2 >> 0x18;
0x00078ffc ubfx r7, r2, 0x10, 8 | r7 = (r2 >> 0x10) & ((1 << 8) - 1);
0x00079000 ubfx r1, r2, 8, 8 | r1 = (r2 >> 8) & ((1 << 8) - 1);
0x00079004 str r0, [sp, 8] | var_8h = r0;
0x00079006 cmp r6, 0 |
| if (r6 == 0) {
0x00079008 beq 0x790ac | goto label_13;
| }
0x0007900a ldrh r0, [r4, 2] | r0 = *((r4 + 2));
0x0007900c ldr r2, [pc, 0x200] |
0x0007900e str r1, [sp, 4] | var_4h = r1;
0x00079010 movs r1, 1 | r1 = 1;
0x00079012 rev16 r0, r0 | __asm ("rev16 r0, r0");
0x00079014 str r7, [sp] | *(sp) = r7;
0x00079016 uxth r0, r0 | r0 = (int16_t) r0;
0x00079018 add r2, pc | r2 = 0xf222c;
0x0007901a str r0, [sp, 0xc] | var_ch = r0;
0x0007901c add r0, sp, 0x14 | r0 += var_14h;
0x0007901e blx 0x8e48 | fcn_00008e48 ();
0x00079022 b 0x79044 |
| } else {
0x00079024 cmp r0, 0x28 |
| if (arg_78hx28 != ) {
0x00079026 bne 0x79050 | goto label_12;
| }
0x00079028 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0007902a cmp r6, 0 |
| if (r6 == 0) {
0x0007902c beq 0x790be | goto label_14;
| }
0x0007902e adds r2, r3, 1 | r2 = r3 + 1;
0x00079030 ldr r0, [r4, 4] | r0 = *((r4 + 4));
| if (r2 == r3) {
0x00079032 beq.w 0x791b2 | goto label_15;
| }
0x00079036 ldr r2, [pc, 0x1dc] |
0x00079038 movs r1, 1 | r1 = 1;
0x0007903a str r0, [sp] | *(sp) = r0;
0x0007903c add r0, sp, 0x14 | r0 += var_14h;
0x0007903e add r2, pc | r2 = 0xf2258;
0x00079040 blx 0x8e48 | r0 = fcn_00008e48 ();
| }
| label_1:
0x00079044 cmp r0, 0 |
| if (r0 < 0) {
0x00079046 blt 0x790a6 | goto label_3;
| }
0x00079048 ldr r3, [sp, 0x14] | r3 = var_14h;
| do {
| label_2:
0x0007904a movs r0, 0 | r0 = 0;
0x0007904c str r3, [r5] | *(r5) = r3;
0x0007904e b 0x79054 | goto label_0;
| label_12:
0x00079050 mvn r0, 0x5e | r0 = ~0x5e;
| label_0:
0x00079054 ldr r2, [pc, 0x1c0] |
0x00079056 ldr r3, [pc, 0x1b4] | r3 = *(0x7920e);
0x00079058 add r2, pc | r2 = 0xf2274;
0x0007905a ldr r3, [r2, r3] | r3 = *(0xf2274);
0x0007905c ldr r2, [r3] | r2 = *(0xf2274);
0x0007905e ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00079060 eors r2, r3 | r2 ^= r3;
0x00079062 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079066 bne.w 0x791fc | goto label_16;
| }
0x0007906a add sp, 0x60 |
0x0007906c pop.w {r4, r5, r6, r7, r8, pc} |
| label_11:
0x00079070 cmp r1, 2 |
| if (r1 == 2) {
0x00079072 beq 0x790cc | goto label_17;
| }
0x00079074 ldrb r6, [r4, 2] | r6 = *((r4 + 2));
0x00079076 cmp r6, 0 |
| if (r6 != 0) {
0x00079078 bne 0x79164 | goto label_18;
| }
0x0007907a cmp r1, 3 |
| if (r1 == 3) {
0x0007907c beq 0x790cc | goto label_17;
| }
0x0007907e adds r0, r4, 3 | r0 = r4 + 3;
0x00079080 subs r1, 3 | r1 -= 3;
0x00079082 bl 0x68a98 | r0 = fcn_00068a98 (r0, r1, r2, r3, r4, r5);
0x00079086 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00079088 cbz r0, 0x790a6 | goto label_3;
| }
0x0007908a ldr r0, [pc, 0x190] |
0x0007908c mov r2, r6 | r2 = r6;
0x0007908e mov r1, r4 | r1 = r4;
0x00079090 add r0, pc | r0 = 0xf22b2;
0x00079092 bl 0x7a8a8 | r0 = fcn_0007a8a8 (r0, r1);
0x00079096 mov r3, r0 | r3 = r0;
0x00079098 mov r0, r4 | r0 = r4;
0x0007909a str r3, [sp, 0x14] | var_14h = r3;
0x0007909c blx 0x8dac | fcn_00008dac ();
0x000790a0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000790a2 cmp r3, 0 |
0x000790a4 bne 0x7904a |
| } while (r3 != 0);
| label_3:
0x000790a6 mvn r0, 0xb | r0 = ~0xb;
0x000790aa b 0x79054 | goto label_0;
| label_13:
0x000790ac ldr r2, [pc, 0x170] |
0x000790ae add r0, sp, 0x14 | r0 += var_14h;
0x000790b0 strd r7, r1, [sp] | __asm ("strd r7, r1, [sp]");
0x000790b4 movs r1, 1 | r1 = 1;
0x000790b6 add r2, pc | r2 = 0xf22da;
0x000790b8 blx 0x8e48 | fcn_00008e48 ();
0x000790bc b 0x79044 | goto label_1;
| label_14:
0x000790be ldr r2, [pc, 0x164] |
0x000790c0 movs r1, 1 | r1 = 1;
0x000790c2 add r0, sp, 0x14 | r0 += var_14h;
0x000790c4 add r2, pc | r2 = 0xf22ee;
0x000790c6 blx 0x8e48 | fcn_00008e48 ();
0x000790ca b 0x79044 | goto label_1;
| label_17:
0x000790cc ldr r0, [pc, 0x158] |
0x000790ce add r0, pc | r0 = 0xf22fa;
0x000790d0 blx 0x9200 | r0 = fcn_00009200 ();
0x000790d4 mov r3, r0 | r3 = r0;
0x000790d6 cmp r3, 0 |
| if (r3 != 0) {
0x000790d8 bne 0x7904a | goto label_2;
| }
0x000790da b 0x790a6 | goto label_3;
| label_10:
0x000790dc add.w r7, r4, 8 | r7 = r4 + 8;
| if (r2 != 0) {
0x000790e0 cbz r2, 0x79110 |
0x000790e2 ldr r1, [pc, 0x148] |
0x000790e4 movs r2, 0xc | r2 = 0xc;
0x000790e6 mov r0, r7 | r0 = r7;
0x000790e8 add r1, pc | r1 = 0xf231a;
0x000790ea blx 0x8a78 | r0 = getauxval ();
| if (r0 != 0) {
0x000790ee cbnz r0, 0x79110 | goto label_19;
| }
0x000790f0 ldrb r2, [r4, 0x17] | r2 = *((r4 + 0x17));
0x000790f2 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000790f4 ldrb r0, [r4, 0x15] | r0 = *((r4 + 0x15));
0x000790f6 ldrb r7, [r4, 0x16] | r7 = *((r4 + 0x16));
0x000790f8 str r2, [sp, 8] | var_8h = r2;
0x000790fa cmp r6, 0 |
| if (r6 != 0) {
0x000790fc bne 0x79180 | goto label_20;
| }
0x000790fe ldr r2, [pc, 0x130] |
0x00079100 str r7, [sp, 4] | var_4h = r7;
0x00079102 add r2, pc | r2 = 0xf2338;
| label_5:
0x00079104 str r0, [sp] | *(sp) = r0;
0x00079106 movs r1, 1 | r1 = 1;
0x00079108 add r0, sp, 0x14 | r0 += var_14h;
0x0007910a blx 0x8e48 | fcn_00008e48 ();
0x0007910e b 0x79044 | goto label_1;
| }
| label_19:
0x00079110 add.w r8, sp, 0x2c | r8 += var_2ch;
0x00079114 mov r1, r7 | r1 = r7;
0x00079116 movs r3, 0x2e | r3 = 0x2e;
0x00079118 mov r2, r8 | r2 = r8;
0x0007911a movs r0, 0xa | r0 = 0xa;
0x0007911c blx 0x89bc | fcn_000089bc ();
0x00079120 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00079122 cmp r0, 0 |
| if (r0 != 0) {
0x00079124 bne 0x791c2 | goto label_21;
| }
0x00079126 cmp r6, 0 |
| if (r6 != 0) {
0x00079128 bne 0x7919a | goto label_22;
| }
| label_6:
0x0007912a mov r0, r8 | r0 = r8;
0x0007912c blx 0x9200 | r0 = fcn_00009200 ();
0x00079130 mov r3, r0 | r3 = r0;
0x00079132 cmp r3, 0 |
| if (r3 != 0) {
0x00079134 bne 0x7904a | goto label_2;
| }
0x00079136 b 0x790a6 | goto label_3;
| label_8:
0x00079138 ldr r1, [pc, 0xf8] |
0x0007913a mov.w r2, 0x19e | r2 = 0x19e;
0x0007913e ldr r3, [pc, 0xf8] |
0x00079140 ldr r0, [pc, 0xf8] |
0x00079142 add r1, pc | r1 = 0xf237a;
0x00079144 add r3, pc | r3 = 0xf2382;
0x00079146 adds r1, 7 | r1 += 7;
0x00079148 add r0, pc | r0 = 0xf2388;
0x0007914a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x0007914e ldr r1, [pc, 0xf0] |
0x00079150 movw r2, 0x19f | r2 = 0x19f;
0x00079154 ldr r3, [pc, 0xec] |
0x00079156 ldr r0, [pc, 0xf0] |
0x00079158 add r1, pc | r1 = 0xf239e;
0x0007915a add r3, pc | r3 = 0xf23a2;
0x0007915c adds r1, 7 | r1 += 7;
0x0007915e add r0, pc | r0 = 0xf23ac;
0x00079160 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_18:
0x00079164 adds r0, r4, 2 | r0 = r4 + 2;
0x00079166 subs r3, r1, 3 | r3 = r1 - 3;
0x00079168 ldrb r2, [r0, r3] | r2 = *((r0 + r3));
| if (r2 != 0) {
0x0007916a cbnz r2, 0x7917c | goto label_23;
| }
| label_4:
0x0007916c mov r1, r3 | r1 = r3;
0x0007916e bl 0x68a98 | r0 = fcn_00068a98 (r0, r1, r2, r3, r4, r5);
0x00079172 mov r3, r0 | r3 = r0;
0x00079174 cmp r3, 0 |
| if (r3 != 0) {
0x00079176 bne.w 0x7904a | goto label_2;
| }
0x0007917a b 0x790a6 | goto label_3;
| label_23:
0x0007917c subs r3, r1, 2 | r3 = r1 - 2;
0x0007917e b 0x7916c | goto label_4;
| label_20:
0x00079180 ldrh r1, [r4, 2] | r1 = *((r4 + 2));
0x00079182 ldr r2, [pc, 0xc8] |
0x00079184 str r0, [sp] | *(sp) = r0;
0x00079186 add r0, sp, 0x14 | r0 += var_14h;
0x00079188 rev16 r1, r1 | __asm ("rev16 r1, r1");
0x0007918a str r7, [sp, 4] | var_4h = r7;
0x0007918c uxth r1, r1 | r1 = (int16_t) r1;
0x0007918e add r2, pc | r2 = 0xf23e0;
0x00079190 str r1, [sp, 0xc] | var_ch = r1;
0x00079192 movs r1, 1 | r1 = 1;
0x00079194 blx 0x8e48 | fcn_00008e48 ();
0x00079198 b 0x79044 | goto label_1;
| label_22:
0x0007919a ldrh r0, [r4, 2] | r0 = *((r4 + 2));
0x0007919c ldr r1, [pc, 0xb0] |
0x0007919e rev16 r0, r0 | __asm ("rev16 r0, r0");
0x000791a0 add r1, pc | r1 = 0xf23f4;
0x000791a2 uxth r0, r0 | r0 = (int16_t) r0;
0x000791a4 mov r7, r1 | r7 = r1;
| do {
| label_7:
0x000791a6 ldr r2, [pc, 0xac] |
0x000791a8 mov r3, r8 | r3 = r8;
0x000791aa str r7, [sp, 8] | var_8h = r7;
0x000791ac str r1, [sp, 4] | var_4h = r1;
0x000791ae add r2, pc | r2 = 0xf2408;
0x000791b0 b 0x79104 | goto label_5;
| label_15:
0x000791b2 ldr r2, [pc, 0xa4] |
0x000791b4 mov r3, r0 | r3 = r0;
0x000791b6 movs r1, 1 | r1 = 1;
0x000791b8 add r0, sp, 0x14 | r0 += var_14h;
0x000791ba add r2, pc | r2 = 0xf2418;
0x000791bc blx 0x8e48 | fcn_00008e48 ();
0x000791c0 b 0x79044 | goto label_1;
| label_21:
0x000791c2 add r7, sp, 0x18 | r7 += var_18h;
0x000791c4 movs r2, 1 | r2 = 1;
0x000791c6 mov r1, r7 | r1 = r7;
0x000791c8 bl 0x6bb7c | fcn_0006bb7c (r0, r1, r2);
| if (r6 == 0) {
0x000791cc cbz r6, 0x791de | goto label_24;
| }
0x000791ce ldrh r0, [r4, 2] | r0 = *((r4 + 2));
0x000791d0 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000791d2 rev16 r0, r0 | __asm ("rev16 r0, r0");
0x000791d4 uxth r0, r0 | r0 = (int16_t) r0;
| if (r3 == 0) {
0x000791d6 cbz r3, 0x79200 | goto label_25;
| }
0x000791d8 ldr r1, [pc, 0x80] |
0x000791da add r1, pc | r1 = 0xf243a;
0x000791dc b 0x791a6 |
| } while (1);
| label_24:
0x000791de ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000791e0 cmp r3, 0 |
| if (r3 == 0) {
0x000791e2 beq 0x7912a | goto label_6;
| }
0x000791e4 ldr r1, [pc, 0x78] |
0x000791e6 mov r3, r6 | r3 = r6;
0x000791e8 mov r2, r7 | r2 = r7;
0x000791ea mov r0, r8 | r0 = r8;
0x000791ec add r1, pc | r1 = 0xf2450;
0x000791ee bl 0x7a8a8 | r0 = fcn_0007a8a8 (r0, r1);
0x000791f2 mov r3, r0 | r3 = r0;
0x000791f4 cmp r3, 0 |
| if (r3 != 0) {
0x000791f6 bne.w 0x7904a | goto label_2;
| }
0x000791fa b 0x790a6 | goto label_3;
| label_16:
0x000791fc blx 0x927c | fprintf_chk ()
| label_25:
0x00079200 ldr r1, [pc, 0x60] |
0x00079202 add r1, pc | r1 = 0xf246a;
0x00079204 mov r7, r1 | r7 = r1;
0x00079206 b 0x791a6 | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79268 */
| #include <stdint.h>
|
; (fcn) fcn.00079268 () | void fcn_00079268 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00079268 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0007926c sub sp, 0x18 |
0x0007926e ldr r5, [pc, 0x110] |
0x00079270 movs r3, 4 | r3 = 4;
0x00079272 ldr r4, [pc, 0x110] | r4 = *(0x79386);
0x00079274 add r5, pc | r5 = 0xf25fa;
0x00079276 ldr r4, [r5, r4] |
0x00079278 ldr r4, [r4] | r4 = *(0xf25fa);
0x0007927a str r4, [sp, 0x14] | var_14h = r4;
0x0007927c mov.w r4, 0 | r4 = 0;
0x00079280 subs r4, r1, 0 | r4 = r1 - 0;
0x00079282 str r3, [sp, 0xc] | var_ch = r3;
| if (r4 < r1) {
0x00079284 blt 0x79376 | goto label_4;
| }
0x00079286 add.w r8, sp, 8 | r8 += var_8h;
0x0007928a add.w sb, sp, 0xc | sb += var_ch;
0x0007928e mov r5, r2 | r5 = r2;
0x00079290 mov r3, r8 | r3 = r8;
0x00079292 movs r2, 7 | r2 = 7;
0x00079294 movs r1, 1 | r1 = 1;
0x00079296 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0007929a mov r6, r0 | r6 = r0;
0x0007929c blx 0x953c | r0 = fcn_0000953c ();
0x000792a0 cmp r0, 0 |
0x000792a2 lsl.w r7, r4, 1 | r7 = r4 << 1;
| if (r0 >= 0) {
0x000792a6 blt 0x792b8 |
0x000792a8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000792aa cmp r2, 4 |
0x000792ac ite ne |
| if (r2 == 4) {
0x000792ae movne r3, 0 | r3 = 0;
| }
| if (r2 != 4) {
0x000792b0 andeq r3, r5, 1 | r3 = r5 & 1;
| }
0x000792b4 cmp r3, 0 |
| if (r3 != 0) {
0x000792b6 bne 0x79352 | goto label_5;
| }
| }
0x000792b8 ldr r3, [sp, 8] | r3 = var_8h;
0x000792ba subs r3, r3, r7 | r3 -= r7;
0x000792bc clz r3, r3 | r3 &= r3;
0x000792c0 lsrs r3, r3, 5 | r3 >>= 5;
| label_1:
0x000792c2 movs r0, 0 | r0 = 0;
| if (r3 != 0) {
0x000792c4 cbnz r3, 0x7932a | goto label_0;
| }
0x000792c6 movs r3, 4 | r3 = 4;
0x000792c8 add.w sl, sp, 0x10 | sl += var_10h;
0x000792cc str r3, [sp] | *(sp) = r3;
0x000792ce movs r2, 7 | r2 = 7;
0x000792d0 mov r3, sl | r3 = sl;
0x000792d2 movs r1, 1 | r1 = 1;
0x000792d4 mov r0, r6 | r0 = r6;
0x000792d6 str r4, [sp, 0x10] | var_10h = r4;
0x000792d8 blx 0x9564 | r0 = kmod_module_get_initstate ();
0x000792dc cmp r0, 0 |
0x000792de blt 0x79344 |
| while (r0 <= 0) {
0x000792e0 movs r2, 4 | r2 = 4;
0x000792e2 mov r3, r8 | r3 = r8;
0x000792e4 str r2, [sp, 0xc] | var_ch = r2;
0x000792e6 movs r1, 1 | r1 = 1;
0x000792e8 movs r2, 7 | r2 = 7;
0x000792ea mov r0, r6 | r0 = r6;
0x000792ec str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000792f0 blx 0x953c | r0 = fcn_0000953c ();
0x000792f4 cmp r0, 0 |
| if (r0 >= 0) {
0x000792f6 blt 0x79306 |
0x000792f8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000792fa cmp r3, 4 |
0x000792fc ite ne |
| if (r3 == 4) {
0x000792fe movne r5, 0 | r5 = 0;
| }
| if (r3 != 4) {
0x00079300 andeq r5, r5, 1 | r5 &= 1;
| }
| if (r5 != 0) {
0x00079304 cbnz r5, 0x7936a | goto label_6;
| }
| }
0x00079306 ldr r3, [sp, 8] | r3 = var_8h;
0x00079308 subs r3, r3, r7 | r3 -= r7;
0x0007930a clz r3, r3 | r3 &= r3;
0x0007930e lsrs r3, r3, 5 | r3 >>= 5;
| if (r3 == 0) {
| label_3:
0x00079310 cbnz r3, 0x79328 |
0x00079312 movs r1, 4 | r1 = 4;
0x00079314 mov r3, sl | r3 = sl;
0x00079316 str r1, [sp] | *(sp) = r1;
0x00079318 movs r2, 0x20 | r2 = 0x20;
0x0007931a mov r0, r6 | r0 = r6;
0x0007931c movs r1, 1 | r1 = 1;
0x0007931e str r4, [sp, 0x10] | var_10h = r4;
0x00079320 blx 0x9564 | r0 = kmod_module_get_initstate ();
0x00079324 cmp r0, 0 |
| if (r0 < 0) {
0x00079326 blt 0x7935e | goto label_7;
| }
| }
| label_2:
0x00079328 movs r0, 1 | r0 = 1;
| label_0:
0x0007932a ldr r2, [pc, 0x5c] |
0x0007932c ldr r3, [pc, 0x54] | r3 = *(0x79384);
0x0007932e add r2, pc | r2 = 0xf26bc;
0x00079330 ldr r3, [r2, r3] | r3 = *(0xf26bc);
0x00079332 ldr r2, [r3] | r2 = *(0xf26bc);
0x00079334 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00079336 eors r2, r3 | r2 ^= r3;
0x00079338 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007933c bne 0x7937c | goto label_8;
| }
0x0007933e add sp, 0x18 |
0x00079340 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x00079344 blx 0x9628 | r0 = fcn_00009628 ();
0x00079348 ldr r0, [r0] | r0 = *(r0);
0x0007934a cmp r0, 0 |
0x0007934c ble 0x792e0 |
| }
| do {
0x0007934e rsbs r0, r0, 0 | r0 -= ;
0x00079350 b 0x7932a | goto label_0;
| label_5:
0x00079352 ldr r3, [sp, 8] | r3 = var_8h;
0x00079354 cmp r3, r7 |
0x00079356 ite lo |
| if (r3 >= r7) {
0x00079358 movlo r3, 0 | r3 = 0;
| }
| if (r3 < r7) {
0x0007935a movhs r3, 1 | r3 = 1;
| }
0x0007935c b 0x792c2 | goto label_1;
| label_7:
0x0007935e blx 0x9628 | r0 = fcn_00009628 ();
0x00079362 ldr r0, [r0] | r0 = *(r0);
0x00079364 cmp r0, 0 |
0x00079366 bgt 0x7934e |
| } while (r0 > 0);
0x00079368 b 0x79328 | goto label_2;
| label_6:
0x0007936a ldr r3, [sp, 8] | r3 = var_8h;
0x0007936c cmp r7, r3 |
0x0007936e ite hi |
| if (r7 <= r3) {
0x00079370 movhi r3, 0 | r3 = 0;
| }
| if (r7 > r3) {
0x00079372 movls r3, 1 | r3 = 1;
| }
0x00079374 b 0x79310 | goto label_3;
| label_4:
0x00079376 mvn r0, 0x21 | r0 = ~0x21;
0x0007937a b 0x7932a | goto label_0;
| label_8:
0x0007937c blx 0x927c | fprintf_chk ()
0x00079380 ldr.w r0, [r0, r4] | r0 = *((r0 + r4));
0x00079384 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00079386 movs r0, r0 |
0x00079388 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7938c */
| #include <stdint.h>
|
; (fcn) fcn.0007938c () | void fcn_0007938c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| if (? >= ?) {
0x0007938c ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x00079390 sub sp, 0x18 |
0x00079392 ldr r5, [pc, 0x110] |
0x00079394 movs r3, 4 | r3 = 4;
0x00079396 ldr r4, [pc, 0x110] | r4 = *(0x794aa);
0x00079398 add r5, pc | r5 = 0xf2842;
0x0007939a ldr r4, [r5, r4] |
0x0007939c ldr r4, [r4] | r4 = *(0xf2842);
0x0007939e str r4, [sp, 0x14] | var_14h = r4;
0x000793a0 mov.w r4, 0 | r4 = 0;
0x000793a4 subs r4, r1, 0 | r4 = r1 - 0;
0x000793a6 str r3, [sp, 0xc] | var_ch = r3;
| if (r4 < r1) {
0x000793a8 blt 0x7949a | goto label_4;
| }
0x000793aa add.w r8, sp, 8 | r8 += var_8h;
0x000793ae add.w sb, sp, 0xc | sb += var_ch;
0x000793b2 mov r5, r2 | r5 = r2;
0x000793b4 mov r3, r8 | r3 = r8;
0x000793b6 movs r2, 8 | r2 = 8;
0x000793b8 movs r1, 1 | r1 = 1;
0x000793ba str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000793be mov r6, r0 | r6 = r0;
0x000793c0 blx 0x953c | r0 = fcn_0000953c ();
0x000793c4 cmp r0, 0 |
0x000793c6 lsl.w r7, r4, 1 | r7 = r4 << 1;
| if (r0 >= 0) {
0x000793ca blt 0x793dc |
0x000793cc ldr r2, [sp, 0xc] | r2 = var_ch;
0x000793ce cmp r2, 4 |
0x000793d0 ite ne |
| if (r2 == 4) {
0x000793d2 movne r3, 0 | r3 = 0;
| }
| if (r2 != 4) {
0x000793d4 andeq r3, r5, 1 | r3 = r5 & 1;
| }
0x000793d8 cmp r3, 0 |
| if (r3 != 0) {
0x000793da bne 0x79476 | goto label_5;
| }
| }
0x000793dc ldr r3, [sp, 8] | r3 = var_8h;
0x000793de subs r3, r3, r7 | r3 -= r7;
0x000793e0 clz r3, r3 | r3 &= r3;
0x000793e4 lsrs r3, r3, 5 | r3 >>= 5;
| label_1:
0x000793e6 movs r0, 0 | r0 = 0;
| if (r3 != 0) {
0x000793e8 cbnz r3, 0x7944e | goto label_0;
| }
0x000793ea movs r3, 4 | r3 = 4;
0x000793ec add.w sl, sp, 0x10 | sl += var_10h;
0x000793f0 str r3, [sp] | *(sp) = r3;
0x000793f2 movs r2, 8 | r2 = 8;
0x000793f4 mov r3, sl | r3 = sl;
0x000793f6 movs r1, 1 | r1 = 1;
0x000793f8 mov r0, r6 | r0 = r6;
0x000793fa str r4, [sp, 0x10] | var_10h = r4;
0x000793fc blx 0x9564 | r0 = kmod_module_get_initstate ();
0x00079400 cmp r0, 0 |
0x00079402 blt 0x79468 |
| while (r0 <= 0) {
0x00079404 movs r2, 4 | r2 = 4;
0x00079406 mov r3, r8 | r3 = r8;
0x00079408 str r2, [sp, 0xc] | var_ch = r2;
0x0007940a movs r1, 1 | r1 = 1;
0x0007940c movs r2, 8 | r2 = 8;
0x0007940e mov r0, r6 | r0 = r6;
0x00079410 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00079414 blx 0x953c | r0 = fcn_0000953c ();
0x00079418 cmp r0, 0 |
| if (r0 >= 0) {
0x0007941a blt 0x7942a |
0x0007941c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007941e cmp r3, 4 |
0x00079420 ite ne |
| if (r3 == 4) {
0x00079422 movne r5, 0 | r5 = 0;
| }
| if (r3 != 4) {
0x00079424 andeq r5, r5, 1 | r5 &= 1;
| }
| if (r5 != 0) {
0x00079428 cbnz r5, 0x7948e | goto label_6;
| }
| }
0x0007942a ldr r3, [sp, 8] | r3 = var_8h;
0x0007942c subs r3, r3, r7 | r3 -= r7;
0x0007942e clz r3, r3 | r3 &= r3;
0x00079432 lsrs r3, r3, 5 | r3 >>= 5;
| if (r3 == 0) {
| label_3:
0x00079434 cbnz r3, 0x7944c |
0x00079436 movs r1, 4 | r1 = 4;
0x00079438 mov r3, sl | r3 = sl;
0x0007943a str r1, [sp] | *(sp) = r1;
0x0007943c movs r2, 0x21 | r2 = 0x21;
0x0007943e mov r0, r6 | r0 = r6;
0x00079440 movs r1, 1 | r1 = 1;
0x00079442 str r4, [sp, 0x10] | var_10h = r4;
0x00079444 blx 0x9564 | r0 = kmod_module_get_initstate ();
0x00079448 cmp r0, 0 |
| if (r0 < 0) {
0x0007944a blt 0x79482 | goto label_7;
| }
| }
| label_2:
0x0007944c movs r0, 1 | r0 = 1;
| label_0:
0x0007944e ldr r2, [pc, 0x5c] |
0x00079450 ldr r3, [pc, 0x54] | r3 = *(0x794a8);
0x00079452 add r2, pc | r2 = 0xf2904;
0x00079454 ldr r3, [r2, r3] | r3 = *(0xf2904);
0x00079456 ldr r2, [r3] | r2 = *(0xf2904);
0x00079458 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007945a eors r2, r3 | r2 ^= r3;
0x0007945c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079460 bne 0x794a0 | goto label_8;
| }
0x00079462 add sp, 0x18 |
0x00079464 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x00079468 blx 0x9628 | r0 = fcn_00009628 ();
0x0007946c ldr r0, [r0] | r0 = *(r0);
0x0007946e cmp r0, 0 |
0x00079470 ble 0x79404 |
| }
| do {
0x00079472 rsbs r0, r0, 0 | r0 -= ;
0x00079474 b 0x7944e | goto label_0;
| label_5:
0x00079476 ldr r3, [sp, 8] | r3 = var_8h;
0x00079478 cmp r3, r7 |
0x0007947a ite lo |
| if (r3 >= r7) {
0x0007947c movlo r3, 0 | r3 = 0;
| }
| if (r3 < r7) {
0x0007947e movhs r3, 1 | r3 = 1;
| }
0x00079480 b 0x793e6 | goto label_1;
| label_7:
0x00079482 blx 0x9628 | r0 = fcn_00009628 ();
0x00079486 ldr r0, [r0] | r0 = *(r0);
0x00079488 cmp r0, 0 |
0x0007948a bgt 0x79472 |
| } while (r0 > 0);
0x0007948c b 0x7944c | goto label_2;
| label_6:
0x0007948e ldr r3, [sp, 8] | r3 = var_8h;
0x00079490 cmp r7, r3 |
0x00079492 ite hi |
| if (r7 <= r3) {
0x00079494 movhi r3, 0 | r3 = 0;
| }
| if (r7 > r3) {
0x00079496 movls r3, 1 | r3 = 1;
| }
0x00079498 b 0x79434 | goto label_3;
| label_4:
0x0007949a mvn r0, 0x21 | r0 = ~0x21;
0x0007949e b 0x7944e | goto label_0;
| label_8:
0x000794a0 blx 0x927c | fprintf_chk ()
0x000794a4 ssat16 r0, 5, ip | __asm ("ssat16 r0, 5, ip");
0x000794a8 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000794aa movs r0, r0 |
0x000794ac invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x794e0 */
| #include <stdint.h>
|
; (fcn) fcn.000794e0 () | void fcn_000794e0 (int16_t arg1, int16_t arg2) {
| int16_t var_ch_2;
| int16_t var_1ch;
| int16_t var_0h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000794e0 blmi 0xd8bdb4 | __asm ("blmi aav.0x0004f5dc");
0x000794e4 push {r4, r5, lr} |
0x000794e6 sub sp, 0x14 |
0x000794e8 add r2, pc | r2 += pc;
0x000794ea ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000794ec ldr r3, [r3] | r3 = *(r3);
0x000794ee str r3, [sp, 0xc] | var_ch = r3;
0x000794f0 mov.w r3, 0 | r3 = 0;
0x000794f4 bics r3, r1, 3 | __asm ("bics r3, r1, 3");
| if (? != ?) {
0x000794f8 bne 0x79590 | goto label_5;
| }
0x000794fa mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000794fc cbz r0, 0x79502 | goto label_0;
| }
0x000794fe ldrb r3, [r0] | r3 = *(r0);
0x00079500 cbnz r3, 0x7951e |
| while (r0 > 0xf) {
| label_0:
0x00079502 movs r4, 0 | r4 = 0;
| label_1:
0x00079504 ldr r2, [pc, 0xb0] |
0x00079506 ldr r3, [pc, 0xac] | r3 = *(0x795b6);
0x00079508 add r2, pc | r2 = 0xf2ac4;
0x0007950a ldr r3, [r2, r3] | r3 = *(0xf2ac4);
0x0007950c ldr r2, [r3] | r2 = *(0xf2ac4);
0x0007950e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00079510 eors r2, r3 | r2 ^= r3;
0x00079512 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079516 bne 0x795ac | goto label_6;
| }
0x00079518 mov r0, r4 | r0 = r4;
0x0007951a add sp, 0x14 |
0x0007951c pop {r4, r5, pc} |
0x0007951e mov r4, r1 | r4 = r1;
| label_4:
0x00079520 bl 0x74768 | r0 = fcn_00074768 (r0);
0x00079524 cmp r0, 0 |
| if (r0 >= 0) {
0x00079526 bge 0x7958a | goto label_7;
| }
0x00079528 mov r0, r5 | r0 = r5;
0x0007952a blx 0x8f38 | fcn_00008f38 ();
0x0007952e lsls r3, r4, 0x1f | r3 = r4 << 0x1f;
| if (r3 < r4) {
0x00079530 bmi 0x79584 | goto label_8;
| }
0x00079532 cmp r0, 0xf |
0x00079534 bhi 0x79502 |
| }
| label_2:
0x00079536 mov r0, r5 | r0 = r5;
0x00079538 bl 0x75c60 | r0 = fcn_00075c60 (r0);
0x0007953c mov r4, r0 | r4 = r0;
0x0007953e cmp r0, 0 |
| if (r0 != 0) {
0x00079540 bne 0x79502 | goto label_0;
| }
0x00079542 ldr r3, [pc, 0x78] |
0x00079544 add r3, pc | r3 = 0xf2b06;
0x00079546 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0007954a mov r3, sp | r3 = sp;
0x0007954c stm.w r3, {r0, r1, r2} | *(r3) = r0;
| *((r3 + 4)) = r1;
| *((r3 + 8)) = r2;
0x00079550 mov r1, r5 | r1 = r5;
0x00079552 mov r0, r3 | r0 = r3;
0x00079554 bl 0x7af74 | r0 = fcn_0007af74 (r0, r1);
0x00079558 cmp r0, 0 |
| if (r0 != 0) {
0x0007955a bne 0x79504 | goto label_1;
| }
0x0007955c ldrb r0, [r5] | r0 = *(r5);
0x0007955e cmp r0, 0 |
| if (r0 == 0) {
0x00079560 beq 0x79504 | goto label_1;
| }
0x00079562 movs r4, 1 | r4 = 1;
0x00079564 b 0x7957a |
| if (r4 != 0) {
| while (r0 != 0) {
0x00079566 cbz r4, 0x79574 |
0x00079568 ldrb r4, [r5] | r4 = *(r5);
0x0007956a subs r4, 0x30 | r4 -= 0x30;
0x0007956c cmp r4, 9 |
0x0007956e ite hi |
| if (r4 <= 9) {
| label_3:
0x00079570 movhi r4, 0 | r4 = 0;
| }
| if (r4 <= 9) {
0x00079572 movls r4, 1 | r4 = 1;
| goto label_9;
| }
| }
| label_9:
0x00079574 ldrb r0, [r5, 1]! | r0 = *((r5 += 1));
| if (r0 == 0) {
0x00079578 cbz r0, 0x795a6 | goto label_10;
| }
0x0007957a bl 0x794b0 | r0 = fcn_000794b0 (r0);
0x0007957e cmp r0, 0 |
0x00079580 bne 0x79566 |
| }
0x00079582 b 0x79502 | goto label_0;
| label_8:
0x00079584 cmp r0, 0x7f |
| if (r0 < 0x7f) {
0x00079586 bls 0x79536 | goto label_2;
| }
0x00079588 b 0x79502 | goto label_0;
| label_7:
0x0007958a ubfx r4, r4, 1, 1 | r4 = (r4 >> 1) & ((1 << 1) - 1);
0x0007958e b 0x79504 | goto label_1;
| label_5:
0x00079590 ldr r1, [pc, 0x2c] |
0x00079592 movw r2, 0x306 | r2 = 0x306;
0x00079596 ldr r3, [pc, 0x2c] |
0x00079598 ldr r0, [pc, 0x2c] |
0x0007959a add r1, pc | r1 = 0xf2b5e;
0x0007959c add r3, pc | r3 = 0xf2b66;
0x0007959e adds r1, 7 | r1 += 7;
0x000795a0 add r0, pc | r0 = 0xf2b6c;
0x000795a2 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_10:
0x000795a6 eor r4, r4, 1 | r4 ^= 1;
0x000795aa b 0x79504 | goto label_1;
| label_6:
0x000795ac blx 0x927c | fprintf_chk ()
0x000795b0 rsbs.w r0, ip, 0x840000 | r0 = 0x840000 - ip;
0x000795b4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x000795b6 movs r0, r0 |
0x000795b8 subs.w r0, ip, 0x840000 | r0 = ip - 0x840000;
0x000795bc cdp2 p0, 0xb, c0, c4, c4, 0 | __asm ("cdp2 p0, 0xb, c0, c4, c4, 0");
| if (r0 < ip) {
0x000795c0 bmi 0x79570 | goto label_3;
| }
0x000795c2 movs r2, r0 | r2 = r0;
0x000795c4 bvc 0x79520 | __asm ("bvc aav.0x000000ff");
| goto label_4;
0x000795c6 movs r2, r0 | r2 = r0;
0x000795c8 bvs 0x795dc | __asm ("bvs aav.0x000000ff");
0x000795ca movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x795cc */
| #include <stdint.h>
|
; (fcn) fcn.000795cc () | void fcn_000795cc (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x000795cc push {r4, r5, lr} |
0x000795ce cmp r0, 0 |
0x000795d0 ldr r4, [pc, 0xa4] |
0x000795d2 sub sp, 0x24 |
0x000795d4 mov.w r3, 0xc | r3 = 0xc;
0x000795d8 ldr r2, [pc, 0xa0] | r2 = *(0x7967c);
0x000795da add r4, pc | r4 = 0xf2c56;
0x000795dc ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x000795de ldr r2, [r2] | r2 = *(r2);
0x000795e0 str r2, [sp, 0x1c] | var_1ch = r2;
0x000795e2 mov.w r2, 0 | r2 = 0;
0x000795e6 str r3, [sp, 0xc] | var_ch = r3;
| if (r0 < 0) {
0x000795e8 blt 0x7963c | goto label_1;
| }
0x000795ea mov r4, r1 | r4 = r1;
| if (r1 == 0) {
0x000795ec cbz r1, 0x79652 | goto label_2;
| }
0x000795ee add r2, sp, 0xc | r2 += var_ch;
0x000795f0 add r5, sp, 0x10 | r5 += var_10h;
0x000795f2 str r2, [sp] | *(sp) = r2;
0x000795f4 mov r3, r5 | r3 = r5;
0x000795f6 movs r2, 0x11 | r2 = 0x11;
0x000795f8 movs r1, 1 | r1 = 1;
0x000795fa blx 0x953c | r0 = fcn_0000953c ();
0x000795fe cmp r0, 0 |
| if (r0 < 0) {
0x00079600 blt 0x79632 | goto label_3;
| }
0x00079602 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00079604 cmp r3, 0xc |
| if (r3 != 0xc) {
0x00079606 bne 0x79668 | goto label_4;
| }
0x00079608 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0007960a cmp r3, 0 |
| if (r3 <= 0) {
0x0007960c ble 0x7966e | goto label_5;
| }
0x0007960e ldm.w r5, {r0, r1, r2} | r0 = *(r5);
| r1 = *((r5 + 4));
| r2 = *((r5 + 8));
0x00079612 movs r3, 0 | r3 = 0;
0x00079614 stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| do {
| label_0:
0x00079618 ldr r1, [pc, 0x64] |
0x0007961a ldr r2, [pc, 0x60] | r2 = *(0x7967e);
0x0007961c add r1, pc | r1 = 0xf2ca0;
0x0007961e ldr r2, [r1, r2] | r2 = *(0xf2ca0);
0x00079620 ldr r1, [r2] | r1 = *(0xf2ca0);
0x00079622 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00079624 eors r1, r2 | r1 ^= r2;
0x00079626 mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x0007962a bne 0x79674 | goto label_6;
| }
0x0007962c mov r0, r3 | r0 = r3;
0x0007962e add sp, 0x24 |
0x00079630 pop {r4, r5, pc} |
| label_3:
0x00079632 blx 0x9628 | r0 = fcn_00009628 ();
0x00079636 ldr r3, [r0] | r3 = *(r0);
0x00079638 rsbs r3, r3, 0 | r3 -= ;
0x0007963a b 0x79618 |
| } while (1);
| label_1:
0x0007963c ldr r1, [pc, 0x44] |
0x0007963e movw r2, 0x347 | r2 = 0x347;
0x00079642 ldr r3, [pc, 0x44] |
0x00079644 ldr r0, [pc, 0x44] |
0x00079646 add r1, pc | r1 = 0xf2cce;
0x00079648 add r3, pc | r3 = 0xf2cd6;
0x0007964a adds r1, 7 | r1 += 7;
0x0007964c add r0, pc | r0 = 0xf2cdc;
0x0007964e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00079652 ldr r1, [pc, 0x3c] |
0x00079654 mov.w r2, 0x348 | r2 = 0x348;
0x00079658 ldr r3, [pc, 0x38] |
0x0007965a ldr r0, [pc, 0x3c] |
0x0007965c add r1, pc | r1 = 0xf2cf2;
0x0007965e add r3, pc | r3 = 0xf2cf6;
0x00079660 adds r1, 7 | r1 += 7;
0x00079662 add r0, pc | r0 = 0xf2d00;
0x00079664 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x00079668 mvn r3, 4 | r3 = ~4;
0x0007966c b 0x79618 | goto label_0;
| label_5:
0x0007966e mvn r3, 0x3c | r3 = ~0x3c;
0x00079672 b 0x79618 | goto label_0;
| label_6:
0x00079674 blx 0x927c | fprintf_chk ()
0x00079678 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7969c */
| #include <stdint.h>
|
; (fcn) fcn.0007969c () | void fcn_0007969c (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0007969c mcrne p5, 0, fp, c5, c0, 7 | __asm ("mcrne p5, 0, fp, c5, c0, 7");
0x000796a0 ldr r4, [pc, 0xc0] |
0x000796a2 sub sp, 0x14 |
0x000796a4 mov.w r3, 0x40 | r3 = 0x40;
0x000796a8 ldr r2, [pc, 0xbc] | r2 = *(0x79768);
0x000796aa add r4, pc | r4 = 0xf2e12;
0x000796ac ldr r2, [r4, r2] |
0x000796ae ldr r2, [r2] | r2 = *(0xf2e12);
0x000796b0 str r2, [sp, 0xc] | var_ch = r2;
0x000796b2 mov.w r2, 0 | r2 = 0;
0x000796b6 str r3, [sp, 8] | var_8h = r3;
| if (? < ?) {
0x000796b8 blt 0x7972e | goto label_1;
| }
0x000796ba mov r6, r1 | r6 = r1;
0x000796bc mov r0, r3 | r0 = r3;
0x000796be add r7, sp, 8 | r7 += var_8h;
| if (r1 != 0) {
0x000796c0 cbnz r1, 0x796d6 | goto label_2;
| }
0x000796c2 b 0x79744 | goto label_3;
| do {
0x000796c4 blx 0x9628 | r0 = fcn_00009628 ();
0x000796c8 ldr r3, [r0] | r3 = *(r0);
0x000796ca cmp r3, 0x22 |
| if (r3 != 0x22) {
0x000796cc bne 0x7972a | goto label_4;
| }
0x000796ce mov r0, r4 | r0 = r4;
0x000796d0 blx 0x8dac | fcn_00008dac ();
0x000796d4 ldr r0, [sp, 8] | r0 = var_8h;
| label_2:
0x000796d6 adds r0, 1 | r0++;
0x000796d8 movs r1, 1 | r1 = 1;
0x000796da cmp r0, r1 |
0x000796dc it lo |
| if (r0 >= r1) {
0x000796de movlo r0, r1 | r0 = r1;
| }
0x000796e0 blx 0x8c20 | r0 = fcn_00008c20 ();
0x000796e4 mov r4, r0 | r4 = r0;
0x000796e6 cmp r0, 0 |
| if (r0 == 0) {
0x000796e8 beq 0x7975a | goto label_5;
| }
0x000796ea mov r3, r0 | r3 = r0;
0x000796ec movs r2, 0x1f | r2 = 0x1f;
0x000796ee movs r1, 1 | r1 = 1;
0x000796f0 mov r0, r5 | r0 = r5;
0x000796f2 str r7, [sp] | *(sp) = r7;
0x000796f4 blx 0x953c | r0 = fcn_0000953c ();
0x000796f8 cmp r0, 0 |
0x000796fa blt 0x796c4 |
| } while (r0 < 0);
0x000796fc ldrb r3, [r4] | r3 = *(r4);
0x000796fe mvn r5, 0x5e | r5 = ~0x5e;
| if (r3 == 0) {
0x00079702 cbz r3, 0x7970a | goto label_0;
| }
0x00079704 str r4, [r6] | *(r6) = r4;
0x00079706 movs r4, 0 | r4 = 0;
0x00079708 mov r5, r4 | r5 = r4;
| do {
| label_0:
0x0007970a mov r0, r4 | r0 = r4;
0x0007970c blx 0x8dac | fcn_00008dac ();
0x00079710 ldr r2, [pc, 0x58] |
0x00079712 ldr r3, [pc, 0x54] | r3 = *(0x7976a);
0x00079714 add r2, pc | r2 = 0xf2e84;
0x00079716 ldr r3, [r2, r3] | r3 = *(0xf2e84);
0x00079718 ldr r2, [r3] | r2 = *(0xf2e84);
0x0007971a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007971c eors r2, r3 | r2 ^= r3;
0x0007971e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079722 bne 0x79760 | goto label_6;
| }
0x00079724 mov r0, r5 | r0 = r5;
0x00079726 add sp, 0x14 |
0x00079728 pop {r4, r5, r6, r7, pc} |
| label_4:
0x0007972a rsbs r5, r3, 0 | r5 = r3 - ;
0x0007972c b 0x7970a |
| } while (1);
| label_1:
0x0007972e ldr r1, [pc, 0x40] |
0x00079730 mov.w r2, 0x360 | r2 = 0x360;
0x00079734 ldr r3, [pc, 0x3c] |
0x00079736 ldr r0, [pc, 0x40] |
0x00079738 add r1, pc | r1 = 0xf2eae;
0x0007973a add r3, pc | r3 = 0xf2eb2;
0x0007973c adds r1, 7 | r1 += 7;
0x0007973e add r0, pc | r0 = 0xf2ebc;
0x00079740 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00079744 ldr r1, [pc, 0x34] |
0x00079746 movw r2, 0x361 | r2 = 0x361;
0x0007974a ldr r3, [pc, 0x34] |
0x0007974c ldr r0, [pc, 0x34] |
0x0007974e add r1, pc | r1 = 0xf2ece;
0x00079750 add r3, pc | r3 = 0xf2ed6;
0x00079752 adds r1, 7 | r1 += 7;
0x00079754 add r0, pc | r0 = 0xf2edc;
0x00079756 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x0007975a mvn r5, 0xb | r5 = ~0xb;
0x0007975e b 0x7970a | goto label_0;
| label_6:
0x00079760 blx 0x927c | fprintf_chk ()
0x00079764 ands r0, sl, 0x840000 | r0 = sl & 0x840000;
0x00079768 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007976a movs r0, r0 |
0x0007976c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79788 */
| #include <stdint.h>
|
; (fcn) fcn.00079788 () | void fcn_00079788 (int16_t arg_3f0h, int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00079788 mcrne p5, 0, fp, c6, c0, 7 | __asm ("mcrne p5, 0, fp, c6, c0, 7");
0x0007978c ldr r4, [pc, 0xd0] | r4 = *(0x79860);
0x0007978e sub sp, 0x14 |
0x00079790 mov.w r3, 0x100 | r3 = 0x100;
| label_3:
0x00079794 ldr r2, [pc, 0xcc] |
0x00079796 add r4, pc | r4 += pc;
0x00079798 ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x0007979a ldr r2, [r2] | r2 = *(0x79864);
0x0007979c str r2, [sp, 0xc] | var_ch = r2;
0x0007979e mov.w r2, 0 | r2 = 0;
0x000797a2 str r3, [sp, 8] | var_8h = r3;
| if (? < ?) {
0x000797a4 blt 0x79812 | goto label_4;
| }
0x000797a6 mov r5, r1 | r5 = r1;
0x000797a8 mov r0, r3 | r0 = r3;
0x000797aa add r7, sp, 8 | r7 += var_8h;
| if (r1 != 0) {
0x000797ac cbnz r1, 0x797c2 | goto label_5;
| }
0x000797ae b 0x79828 | goto label_6;
| do {
0x000797b0 blx 0x9628 | r0 = fcn_00009628 ();
0x000797b4 ldr r3, [r0] | r3 = *(r0);
0x000797b6 cmp r3, 0x22 |
| if (r3 != 0x22) {
0x000797b8 bne 0x7980e | goto label_7;
| }
0x000797ba mov r0, r4 | r0 = r4;
0x000797bc blx 0x8dac | fcn_00008dac ();
0x000797c0 ldr r0, [sp, 8] | r0 = var_8h;
| label_5:
0x000797c2 blx 0x9234 | r0 = blkid_safe_string ();
0x000797c6 mov r4, r0 | r4 = r0;
0x000797c8 cmp r0, 0 |
| if (r0 == 0) {
0x000797ca beq 0x79854 | goto label_8;
| }
0x000797cc mov r3, r0 | r3 = r0;
0x000797ce movs r2, 0x3b | r2 = 0x3b;
0x000797d0 movs r1, 1 | r1 = 1;
0x000797d2 mov r0, r6 | r0 = r6;
0x000797d4 str r7, [sp] | *(sp) = r7;
0x000797d6 blx 0x953c | r0 = fcn_0000953c ();
0x000797da cmp r0, 0 |
0x000797dc blt 0x797b0 |
| } while (r0 < 0);
0x000797de ldr r3, [sp, 8] | r3 = var_8h;
0x000797e0 ands r2, r3, 3 | r2 = r3 & 3;
0x000797e4 ittt eq |
| if (r2 != r3) {
0x000797e6 streq r4, [r5] | *(r5) = r4;
| }
| if (r2 != r3) {
0x000797e8 lsreq r5, r3, 2 | r5 = r3 >> 2;
| }
| if (r2 != r3) {
0x000797ea moveq r4, r2 | r4 = r2;
| }
| if (r2 != r3) {
0x000797ec bne 0x7983e | goto label_9;
| }
| do {
| label_0:
0x000797ee mov r0, r4 | r0 = r4;
0x000797f0 blx 0x8dac | fcn_00008dac ();
0x000797f4 ldr r2, [pc, 0x70] |
0x000797f6 ldr r3, [pc, 0x6c] | r3 = *(0x79866);
0x000797f8 add r2, pc | r2 = 0xf3064;
0x000797fa ldr r3, [r2, r3] | r3 = *(0xf3064);
0x000797fc ldr r2, [r3] | r2 = *(0xf3064);
0x000797fe ldr r3, [sp, 0xc] | r3 = var_ch;
0x00079800 eors r2, r3 | r2 ^= r3;
0x00079802 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079806 bne 0x7985a | goto label_10;
| }
0x00079808 mov r0, r5 | r0 = r5;
0x0007980a add sp, 0x14 |
0x0007980c pop {r4, r5, r6, r7, pc} |
| label_7:
0x0007980e rsbs r5, r3, 0 | r5 = r3 - ;
0x00079810 b 0x797ee |
| } while (1);
| label_4:
0x00079812 ldr r1, [pc, 0x58] |
0x00079814 movw r2, 0x37d | r2 = 0x37d;
0x00079818 ldr r3, [pc, 0x54] |
0x0007981a ldr r0, [pc, 0x58] |
0x0007981c add r1, pc | r1 = 0xf308e;
0x0007981e add r3, pc | r3 = 0xf3092;
0x00079820 adds r1, 7 | r1 += 7;
0x00079822 add r0, pc | r0 = 0xf309c;
0x00079824 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x00079828 ldr r1, [pc, 0x4c] |
0x0007982a movw r2, 0x37e | r2 = 0x37e;
0x0007982e ldr r3, [pc, 0x4c] |
0x00079830 ldr r0, [pc, 0x4c] | r0 = *(0x79880);
0x00079832 add r1, pc | r1 = 0xf30ae;
0x00079834 add r3, pc | r3 = 0xf30b6;
0x00079836 adds r1, 7 | r1 += 7;
| label_2:
0x00079838 add r0, pc | r0 += pc;
0x0007983a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x0007983e ldr r1, [pc, 0x44] |
0x00079840 movw r2, 0x38e | r2 = 0x38e;
0x00079844 ldr r3, [pc, 0x40] |
0x00079846 ldr r0, [pc, 0x44] |
0x00079848 add r1, pc | r1 = 0xf30d2;
0x0007984a add r3, pc | r3 = 0xf30d6;
0x0007984c adds r1, 7 | r1 += 7;
0x0007984e add r0, pc | r0 = 0xf30e0;
0x00079850 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x00079854 mvn r5, 0xb | r5 = ~0xb;
| label_1:
0x00079858 b 0x797ee | goto label_0;
| label_10:
0x0007985a blx 0x927c | fprintf_chk ()
0x0007985e nop |
0x00079860 ssat16 r0, 5, lr | __asm ("ssat16 r0, 5, lr");
0x00079864 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00079866 movs r0, r0 |
0x00079868 movt r0, 0xc004 | r0 = 0xNaN;
| if (r0 >= r0) {
0x0007986c bhs 0x79918 | goto label_11;
| }
0x0007986e movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00079870 bpl 0x79878 | goto label_12;
| }
0x00079872 movs r2, r0 | r2 = r0;
0x00079874 ldr r0, [pc, 0x28] | r0 = *(0x798a0);
0x00079876 movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
| label_12:
0x00079878 bhs 0x798f8 | void (*0x798f8)() ();
| }
0x0007987a movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x0007987c bmi 0x79858 | goto label_1;
| }
0x0007987e movs r2, r0 | r2 = r0;
0x00079880 add r3, sp, 0x3f0 | r3 += arg_3f0h;
0x00079882 movs r0, r0 |
| if (r0 >= r0) {
0x00079884 bhs 0x798d8 | void (*0x798d8)() ();
| }
0x00079886 movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00079888 bmi 0x79838 | goto label_2;
| }
0x0007988a movs r2, r0 | r2 = r0;
| if (r2 <= r0) {
0x0007988c blo 0x79794 | goto label_3;
| }
0x0007988e movs r2, r0 | r2 = r0;
| label_11:
0x00079918 addw r0, r0, 4 | __asm ("addw r0, r0, 4");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79890 */
| #include <stdint.h>
|
; (fcn) fcn.00079890 () | void fcn_00079890 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00079890 push {r4, lr} |
0x00079892 movs r2, 0 | r2 = 0;
0x00079894 ldr.w lr, [pc, 0x78] |
0x00079898 sub sp, 8 |
0x0007989a movs r3, 0x22 | r3 = 0x22;
0x0007989c mov r1, r2 | r1 = r2;
0x0007989e ldr.w ip, [pc, 0x74] | ip = *(0x79916);
0x000798a2 mov r4, r0 | r4 = r0;
0x000798a4 add lr, pc | lr = 0xf31b8;
0x000798a6 ldr.w ip, [lr, ip] |
0x000798aa ldr.w ip, [ip] | ip = *(0xf31b8);
0x000798ac invalid |
0x000798b0 stm r0!, {r2} | *(r0!) = r2;
0x000798b2 mov.w ip, 0 |
0x000798b6 blx 0x8b74 | r0 = getenv (r0);
0x000798ba cmp r0, 0 |
| if (r0 < 0) {
0x000798bc blt 0x798f8 | goto label_2;
| }
0x000798be beq 0x798d8 |
| while (r0 >= 0) {
| label_1:
0x000798c0 ldr r2, [pc, 0x54] |
0x000798c2 ldr r3, [pc, 0x50] | r3 = *(0x79916);
0x000798c4 add r2, pc | r2 = 0xf31e0;
0x000798c6 ldr r3, [r2, r3] | r3 = *(0xf31e0);
0x000798c8 ldr r2, [r3] | r2 = *(0xf31e0);
0x000798ca ldr r3, [sp, 4] | r3 = var_4h;
0x000798cc eors r2, r3 | r2 ^= r3;
0x000798ce mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000798d2 bne 0x7990a | goto label_3;
| }
0x000798d4 add sp, 8 |
0x000798d6 pop {r4, pc} |
| label_0:
0x000798d8 movs r3, 0 | r3 = 0;
0x000798da mov r2, sp | r2 = sp;
0x000798dc movw r1, 0x541b | r1 = 0x541b;
0x000798e0 mov r0, r4 | r0 = r4;
0x000798e2 str r3, [sp] | *(sp) = r3;
0x000798e4 blx 0x8ee4 | r0 = fcn_00008ee4 ();
0x000798e8 cmp r0, 0 |
0x000798ea it ge |
| if (r0 < 0) {
0x000798ec ldrge r0, [sp] | r0 = *(sp);
| }
0x000798ee bge 0x798c0 |
| }
0x000798f0 blx 0x9628 | r0 = fcn_00009628 ();
0x000798f4 ldr r0, [r0] | r0 = *(r0);
0x000798f6 b 0x79906 | goto label_4;
| label_2:
0x000798f8 blx 0x9628 | r0 = fcn_00009628 ();
0x000798fc ldr r0, [r0] | r0 = *(r0);
0x000798fe cmp r0, 0xe |
| if (r0 == 0xe) {
0x00079900 beq 0x798d8 | goto label_0;
| }
0x00079902 cmp r0, 0x5f |
| if (r0 == 0x5f) {
0x00079904 beq 0x798d8 | goto label_0;
| }
| label_4:
0x00079906 rsbs r0, r0, 0 | r0 -= ;
0x00079908 b 0x798c0 | goto label_1;
| label_3:
0x0007990a blx 0x927c | fprintf_chk ()
0x0007990e nop |
0x00079910 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x799c4 */
| #include <stdint.h>
|
; (fcn) fcn.000799c4 () | void fcn_000799c4 (uint32_t arg1) {
| int16_t var_0h_3;
| int8_t var_6ch;
| int16_t var_0h;
| int32_t var_4h;
| int16_t var_0h_2;
| r0 = arg1;
0x000799c4 blmi 0xb4c274 | __asm ("blmi aav.0x0004f0f8");
0x000799c8 push {r4, r7, lr} |
0x000799ca sub sp, 0xc |
0x000799cc add r2, pc | r2 += pc;
0x000799ce add r7, sp, 0 | r7 += var_0h;
0x000799d0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000799d2 ldr r3, [r3] | r3 = *(r3);
0x000799d4 str r3, [r7, 4] | var_4h = r3;
0x000799d6 mov.w r3, 0 | r3 = 0;
0x000799da cmp r0, 0 |
| if (r0 == 0) {
0x000799dc beq 0x79a50 | goto label_2;
| }
0x000799de ldrh r3, [r0] | r3 = *(r0);
0x000799e0 cmp r3, 1 |
| if (r3 != 1) {
0x000799e2 bne 0x79a66 | goto label_3;
| }
0x000799e4 ldrb r3, [r0, 2] | r3 = *((r0 + 2));
| if (r3 == 0) {
0x000799e6 cbz r3, 0x79a20 | goto label_4;
| }
0x000799e8 adds r4, r0, 2 | r4 = r0 + 2;
0x000799ea movs r2, 0x6c | r2 = 0x6c;
0x000799ec movs r1, 0 | r1 = 0;
0x000799ee mov r0, r4 | r0 = r4;
0x000799f0 blx 0x95ac | r0 = getpwuid_r ();
0x000799f4 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x000799f6 cbz r0, 0x79a2e | goto label_5;
| }
0x000799f8 mov r0, r4 | r0 = r4;
0x000799fa blx 0x8f68 | r0 = fcn_00008f68 ();
0x000799fe cmp r0, 0 |
0x00079a00 it ge |
| if (r0 < 0) {
0x00079a02 movge r0, 1 | r0 = 1;
| }
| if (r0 < 0) {
0x00079a04 blt 0x79a24 | goto label_1;
| }
| do {
| label_0:
0x00079a06 ldr r2, [pc, 0x70] |
0x00079a08 ldr r3, [pc, 0x68] | r3 = *(0x79a74);
0x00079a0a add r2, pc | r2 = 0xf3488;
0x00079a0c ldr r3, [r2, r3] | r3 = *(0xf3488);
0x00079a0e ldr r2, [r3] | r2 = *(0xf3488);
0x00079a10 ldr r3, [r7, 4] | r3 = var_4h;
0x00079a12 eors r2, r3 | r2 ^= r3;
0x00079a14 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079a18 bne 0x79a6c | goto label_6;
| }
0x00079a1a adds r7, 0xc | r7 += 0xc;
0x00079a1c mov sp, r7 |
0x00079a1e pop {r4, r7, pc} |
| label_4:
0x00079a20 mov r0, r3 | r0 = r3;
0x00079a22 b 0x79a06 |
| } while (1);
| label_1:
0x00079a24 blx 0x9628 | r0 = fcn_00009628 ();
0x00079a28 ldr r0, [r0] | r0 = *(r0);
0x00079a2a rsbs r0, r0, 0 | r0 -= ;
0x00079a2c b 0x79a06 | goto label_0;
| label_5:
0x00079a2e sub sp, 0x70 |
0x00079a30 mov r1, r4 | r1 = r4;
0x00079a32 mov r0, sp | r0 = sp;
0x00079a34 movs r2, 0x6c | r2 = 0x6c;
0x00079a36 strb.w r3, [r0, 0x6c] | var_6ch = r3;
0x00079a3a blx 0x8f9c | r0 = fcn_00008f9c ();
0x00079a3e mov r4, r0 | r4 = r0;
0x00079a40 mov r0, r4 | r0 = r4;
0x00079a42 blx 0x8f68 | r0 = fcn_00008f68 ();
0x00079a46 cmp r0, 0 |
0x00079a48 it ge |
| if (r0 >= 0) {
0x00079a4a movge r0, 1 | r0 = 1;
| goto label_7;
| }
| if (r0 >= 0) {
| label_7:
0x00079a4c bge 0x79a06 | goto label_0;
| }
0x00079a4e b 0x79a24 | goto label_1;
| label_2:
0x00079a50 ldr r1, [pc, 0x28] |
0x00079a52 movw r2, 0x489 | r2 = 0x489;
0x00079a56 ldr r3, [pc, 0x28] |
0x00079a58 ldr r0, [pc, 0x28] |
0x00079a5a add r1, pc | r1 = 0xf34da;
0x00079a5c add r3, pc | r3 = 0xf34e2;
0x00079a5e adds r1, 7 | r1 += 7;
0x00079a60 add r0, pc | r0 = 0xf34e8;
0x00079a62 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00079a66 mvn r0, 0x5a | r0 = ~0x5a;
0x00079a6a b 0x79a06 | goto label_0;
| label_6:
0x00079a6c blx 0x927c | fprintf_chk ()
0x00079a70 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79c08 */
| #include <stdint.h>
|
; (fcn) fcn.00079c08 () | void fcn_00079c08 () {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_10h_2;
| int16_t var_6ch;
| label_0:
0x00079bc4 svchi 0xf8e8bd | __asm ("svchi aav.0x000000ff");
0x00079c08 ldr r2, [pc, 0x68] |
0x00079c0a ldr r3, [pc, 0x6c] | r3 = *(0x79c7a);
0x00079c0c push {lr} |
0x00079c0e sub sp, 0x74 |
0x00079c10 add r2, pc | r2 = 0xf3888;
0x00079c12 ldr r3, [r2, r3] |
0x00079c14 ldr r3, [r3] | r3 = *(0xf3888);
0x00079c16 str r3, [sp, 0x6c] | var_6ch = r3;
0x00079c18 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00079c1c cbz r0, 0x79c5c | goto label_1;
| }
0x00079c1e mov r1, sp | r1 = sp;
0x00079c20 blx 0x931c | r0 = fcn_0000931c ();
0x00079c24 cmp r0, 0 |
| if (r0 < 0) {
0x00079c26 blt 0x79c52 | goto label_2;
| }
0x00079c28 ldr r0, [sp, 0x10] | r0 = var_10h_2;
0x00079c2a and r0, r0, 0xf000 | r0 &= 0xf000;
0x00079c2e sub.w r0, r0, 0xa000 | r0 -= 0xa000;
0x00079c32 clz r0, r0 | r0 &= r0;
0x00079c36 lsrs r0, r0, 5 | r0 >>= 5;
| do {
0x00079c38 ldr r2, [pc, 0x40] |
0x00079c3a ldr r3, [pc, 0x3c] | r3 = *(0x79c7a);
0x00079c3c add r2, pc | r2 = 0xf38bc;
0x00079c3e ldr r3, [r2, r3] | r3 = *(0xf38bc);
0x00079c40 ldr r2, [r3] | r2 = *(0xf38bc);
0x00079c42 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00079c44 eors r2, r3 | r2 ^= r3;
0x00079c46 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079c4a bne 0x79c70 | goto label_3;
| }
0x00079c4c add sp, 0x74 |
0x00079c4e ldr pc, [sp], 4 | pc = *(sp);
| sp += 4;
| label_2:
0x00079c52 blx 0x9628 | r0 = fcn_00009628 ();
0x00079c56 ldr r0, [r0] | r0 = *(r0);
0x00079c58 rsbs r0, r0, 0 | r0 -= ;
0x00079c5a b 0x79c38 |
| } while (1);
| label_1:
0x00079c5c ldr r1, [pc, 0x20] |
0x00079c5e movs r2, 0x1a | r2 = 0x1a;
0x00079c60 ldr r3, [pc, 0x20] |
0x00079c62 ldr r0, [pc, 0x24] |
0x00079c64 add r1, pc | r1 = 0xf38e8;
0x00079c66 add r3, pc | r3 = 0xf38ee;
0x00079c68 adds r1, 7 | r1 += 7;
0x00079c6a add r0, pc | r0 = 0xf38f8;
0x00079c6c bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00079c70 blx 0x927c | fprintf_chk ()
0x00079c74 cdp p0, 0xb, c0, c4, c4, 0 | __asm ("cdp p0, 0xb, c0, c4, c4, 0");
0x00079c78 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00079c7a movs r0, r0 |
0x00079c7c cdp p0, 8, c0, c8, c4, 0 | __asm ("cdp p0, 8, c0, c8, c4, 0");
| if (r0 != r0) {
0x00079c80 bne 0x79bc4 | goto label_0;
| }
0x00079c82 movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00079c84 bhs 0x79d64 | void (*0x79d64)() ();
| }
0x00079c86 movs r2, r0 | r2 = r0;
0x00079c88 subs r2, 0xb6 | r2 -= 0xb6;
0x00079c8a movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79c8c */
| #include <stdint.h>
|
; (fcn) fcn.00079c8c () | void fcn_00079c8c () {
| int16_t var_10h;
| int16_t var_6ch_2;
| int16_t var_0h;
0x00079c8c ldr r2, [pc, 0x74] |
0x00079c8e ldr r3, [pc, 0x78] | r3 = *(0x79d0a);
0x00079c90 push {lr} |
0x00079c92 sub sp, 0x74 |
0x00079c94 add r2, pc | r2 = 0xf399c;
0x00079c96 ldr r3, [r2, r3] |
0x00079c98 ldr r3, [r3] | r3 = *(0xf399c);
0x00079c9a str r3, [sp, 0x6c] | var_6ch_2 = r3;
0x00079c9c mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00079ca0 cbz r0, 0x79cec | goto label_5;
| }
| if (r1 != 0) {
0x00079ca2 cbnz r1, 0x79cd8 | goto label_6;
| }
0x00079ca4 mov r1, sp | r1 = sp;
0x00079ca6 blx 0x931c | r0 = fcn_0000931c ();
0x00079caa cmp r0, 0 |
| if (r0 < 0) {
0x00079cac blt 0x79ce2 | goto label_7;
| }
| do {
0x00079cae ldr r0, [sp, 0x10] | r0 = var_10h;
0x00079cb0 and r0, r0, 0xf000 | r0 &= 0xf000;
0x00079cb4 sub.w r0, r0, 0x4000 | r0 -= 0x4000;
0x00079cb8 clz r0, r0 | r0 &= r0;
0x00079cbc lsrs r0, r0, 5 | r0 >>= 5;
| label_0:
0x00079cbe ldr r2, [pc, 0x4c] |
0x00079cc0 ldr r3, [pc, 0x44] | r3 = *(0x79d08);
0x00079cc2 add r2, pc | r2 = 0xf39d4;
| label_1:
0x00079cc4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00079cc6 ldr r2, [r3] | r2 = *(r3);
0x00079cc8 ldr r3, [sp, 0x6c] | r3 = var_6ch_2;
0x00079cca eors r2, r3 | r2 ^= r3;
0x00079ccc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079cd0 bne 0x79d00 | goto label_8;
| }
0x00079cd2 add sp, 0x74 |
0x00079cd4 ldr pc, [sp], 4 | pc = *(sp);
| sp += 4;
| label_6:
0x00079cd8 mov r1, sp | r1 = sp;
0x00079cda blx 0x8e3c | r0 = fcn_00008e3c ();
0x00079cde cmp r0, 0 |
0x00079ce0 bge 0x79cae |
| } while (r0 >= 0);
| label_7:
0x00079ce2 blx 0x9628 | r0 = fcn_00009628 ();
0x00079ce6 ldr r0, [r0] | r0 = *(r0);
0x00079ce8 rsbs r0, r0, 0 | r0 -= ;
0x00079cea b 0x79cbe | goto label_0;
| label_5:
0x00079cec ldr r1, [pc, 0x20] |
0x00079cee movs r2, 0x26 | r2 = 0x26;
0x00079cf0 ldr r3, [pc, 0x20] |
0x00079cf2 ldr r0, [pc, 0x24] |
0x00079cf4 add r1, pc | r1 = 0xf3a08;
0x00079cf6 add r3, pc | r3 = 0xf3a0e;
0x00079cf8 adds r1, 7 | r1 += 7;
0x00079cfa add r0, pc | r0 = 0xf3a18;
0x00079cfc bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x00079d00 blx 0x927c | fprintf_chk ()
0x00079d04 cdp p0, 3, c0, c0, c4, 0 | __asm ("cdp p0, 3, c0, c0, c4, 0");
0x00079d08 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00079d0a movs r0, r0 |
0x00079d0c cdp p0, 0, c0, c2, c4, 0 | __asm ("cdp p0, 0, c0, c2, c4, 0");
| if (r0 != r0) {
0x00079d10 bne 0x79d34 | goto label_9;
| }
0x00079d12 movs r2, r0 | r2 = r0;
| if (r2 != r0) {
0x00079d14 bne 0x79cc4 | goto label_1;
| }
0x00079d16 movs r2, r0 | r2 = r0;
0x00079d18 subs r2, 0x26 | r2 -= 0x26;
0x00079d1a movs r2, r0 | r2 = r0;
| label_9:
0x00079d34 str r3, [sp] | *(sp) = r3;
0x00079d36 cmp r1, 0 |
| if (r1 == 0) {
0x00079d38 beq 0x79da8 | goto label_10;
| }
0x00079d3a mov.w r2, 0x84000 | r2 = 0x84000;
0x00079d3e blx 0x8e0c | r0 = fcn_00008e0c ();
0x00079d42 cmp r0, 0 |
0x00079d44 mov r5, r0 | r5 = r0;
0x00079d46 str r0, [sp] | *(sp) = r0;
| if (r0 < 0) {
0x00079d48 blt 0x79dc8 | goto label_11;
| }
| label_3:
0x00079d4a mov r0, sp | r0 = sp;
0x00079d4c bl 0x6a61c | r0 = fcn_0006a61c (r0, r1, r2);
0x00079d50 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00079d52 cbz r0, 0x79dbc | goto label_12;
| }
0x00079d54 bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
| if (r0 == 0) {
0x00079d58 cbz r0, 0x79d96 | goto label_13;
| }
| do {
0x00079d5a adds r0, 0x13 | r0 += 0x13;
0x00079d5c bl 0x75b88 | r0 = fcn_00075b88 (r0);
0x00079d60 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00079d62 cbnz r0, 0x79d8c |
| label_2:
0x00079d64 mov r0, r5 | r0 = r5;
0x00079d66 blx 0x91a8 | fcn_000091a8 ();
0x00079d6a ldr r5, [sp] | r5 = *(sp);
| label_4:
0x00079d6c mov r0, r5 | r0 = r5;
0x00079d6e invalid |
| }
0x00079d8c mov r0, r5 | r0 = r5;
0x00079d8e bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x00079d92 cmp r0, 0 |
0x00079d94 bne 0x79d5a |
| } while (r0 != 0);
| label_13:
0x00079d96 blx 0x9628 | r0 = fcn_00009628 ();
0x00079d9a ldr r4, [r0] | r4 = *(r0);
0x00079d9c cmp r4, 0 |
0x00079d9e it gt |
| if (r4 <= 0) {
0x00079da0 rsbgt r4, r4, 0 | __asm ("rsbgt r4, r4, 0");
| goto label_14;
| }
| if (r4 > 0) {
| label_14:
0x00079da2 bgt 0x79d64 | goto label_2;
| }
0x00079da4 movs r4, 1 | r4 = 1;
0x00079da6 b 0x79d64 | goto label_2;
| label_10:
0x00079da8 mov.w r1, 0x84000 | r1 = 0x84000;
0x00079dac bl 0x6a3dc | r0 = fcn_0006a3dc (r0, r1, r2);
0x00079db0 cmp r0, 0 |
0x00079db2 mov r4, r0 | r4 = r0;
0x00079db4 str r0, [sp] | *(sp) = r0;
| if (r0 >= 0) {
0x00079db6 bge 0x79d4a | goto label_3;
| }
0x00079db8 mov r5, r0 | r5 = r0;
0x00079dba b 0x79d6c | goto label_4;
| label_12:
0x00079dbc blx 0x9628 | r0 = fcn_00009628 ();
0x00079dc0 ldr r4, [r0] | r4 = *(r0);
0x00079dc2 ldr r5, [sp] | r5 = *(sp);
0x00079dc4 rsbs r4, r4, 0 | r4 -= ;
0x00079dc6 b 0x79d6c | goto label_4;
| label_11:
0x00079dc8 blx 0x9628 | r0 = fcn_00009628 ();
0x00079dcc ldr r4, [r0] | r4 = *(r0);
0x00079dce rsbs r4, r4, 0 | r4 -= ;
0x00079dd0 b 0x79d6c | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79de4 */
| #include <stdint.h>
|
; (fcn) fcn.00079de4 () | void fcn_00079de4 (int16_t arg1) {
| r0 = arg1;
| do {
0x00079d70 invalid |
0x00079d74 ldr r3, [pc, 0x64] | r3 = *(0x79ddc);
0x00079d76 add r2, pc | r2 += pc;
0x00079d78 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00079d7a ldr r2, [r3] | r2 = *(0x79ddc);
0x00079d7c ldr r3, [sp, 4] | r3 = *((sp + 4));
0x00079d7e eors r2, r3 | r2 ^= r3;
0x00079d80 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00079d84 bne 0x79dd2 |
0x00079d86 mov r0, r4 | r0 = r4;
0x00079d88 add sp, 0xc |
0x00079d8a pop {r4, r5, pc} |
| }
0x00079dd2 blx 0x927c | fprintf_chk ()
0x00079dd6 nop |
0x00079dd8 ldc p0, c0, [ip, 0x10] | __asm ("ldc p0, c0, [ip, 0x10]");
0x00079ddc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00079dde movs r0, r0 |
0x00079de0 stcl p0, c0, [lr, -0x10] | __asm ("stcl p0, c0, [lr, -0x10]");
0x00079de4 push {r3, lr} |
| if (r0 != 0) {
0x00079de6 cbz r0, 0x79e12 |
0x00079de8 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x00079dea and r3, r3, 0xf000 | r3 &= 0xf000;
0x00079dee cmp.w r3, 0x8000 |
| if (r3 != 0x8000) {
0x00079df2 beq 0x79e00 |
0x00079df4 sub.w r0, r3, 0x2000 | r0 = r3 - 0x2000;
0x00079df8 clz r0, r0 | r0 &= r0;
0x00079dfc lsrs r0, r0, 5 | r0 >>= 5;
0x00079dfe pop {r3, pc} |
| }
0x00079e00 ldrd r2, r3, [r0, 0x30] | __asm ("ldrd r2, r3, [r0, 0x30]");
0x00079e04 cmp r2, 1 |
0x00079e06 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x00079e0a ite lt |
| if (r2 >= 1) {
0x00079e0c movlt r0, 1 | r0 = 1;
| }
| if (r2 < 1) {
0x00079e0e movge r0, 0 | r0 = 0;
| }
0x00079e10 pop {r3, pc} |
| }
0x00079e12 ldr r1, [pc, 0x14] |
0x00079e14 movs r2, 0x62 | r2 = 0x62;
0x00079e16 ldr r3, [pc, 0x14] |
0x00079e18 ldr r0, [pc, 0x14] |
0x00079e1a add r1, pc | r1 = 0xf3c48;
0x00079e1c add r3, pc | r3 = 0xf3c4e;
0x00079e1e adds r1, 7 | r1 += 7;
0x00079e20 add r0, pc | r0 = 0xf3c54;
0x00079e22 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x00079e26 nop |
0x00079e28 ldm r7, {r1, r3, r5, r6, r7} | r1 = *(r7);
| r3 = *((r7 + 4));
| r5 = *((r7 + 8));
| r6 = *((r7 + 12));
| r7 = *((r7 + 16));
0x00079e2a movs r2, r0 | r2 = r0;
0x00079e2c beq 0x79d70 |
| } while (r2 == r0);
0x00079e2e movs r2, r0 | r2 = r0;
0x00079e30 ldc p0, c0, [r0], {1} | __asm ("ldc p0, c0, [r0], {1}");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79e34 */
| #include <stdint.h>
|
; (fcn) fcn.00079e34 () | void fcn_00079e34 (int16_t arg_3d8h, uint32_t arg1) {
| int16_t var_6ch_2;
| int16_t var_0h;
| int16_t var_6ch;
| r0 = arg1;
0x00079e34 ldr r2, [pc, 0x70] |
0x00079e36 ldr r3, [pc, 0x74] | r3 = *(0x79eae);
0x00079e38 push {r4, r5, lr} |
0x00079e3a sub sp, 0x74 |
0x00079e3c add r2, pc | r2 = 0xf3ce8;
0x00079e3e ldr r3, [r2, r3] |
0x00079e40 ldr r3, [r3] | r3 = *(0xf3ce8);
0x00079e42 str r3, [sp, 0x6c] | var_6ch = r3;
0x00079e44 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00079e48 cbz r0, 0x79e90 | goto label_1;
| }
0x00079e4a ldr r1, [pc, 0x64] |
0x00079e4c mov r4, r0 | r4 = r0;
0x00079e4e add r1, pc | r1 = 0xf3d04;
0x00079e50 bl 0x754cc | r0 = fcn_000754cc (r0, r1);
| if (r0 != 0) {
0x00079e54 cbnz r0, 0x79e70 | goto label_2;
| }
0x00079e56 movs r0, 1 | r0 = 1;
| do {
| label_0:
0x00079e58 ldr r2, [pc, 0x58] |
0x00079e5a ldr r3, [pc, 0x50] | r3 = *(0x79eae);
0x00079e5c add r2, pc | r2 = 0xf3d14;
0x00079e5e ldr r3, [r2, r3] | r3 = *(0xf3d14);
0x00079e60 ldr r2, [r3] | r2 = *(0xf3d14);
0x00079e62 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00079e64 eors r2, r3 | r2 ^= r3;
0x00079e66 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079e6a bne 0x79ea4 | goto label_3;
| }
0x00079e6c add sp, 0x74 |
0x00079e6e pop {r4, r5, pc} |
| label_2:
0x00079e70 mov r5, sp | r5 = sp;
0x00079e72 mov r0, r4 | r0 = r4;
0x00079e74 mov r1, r5 | r1 = r5;
0x00079e76 blx 0x8e3c | r0 = fcn_00008e3c ();
0x00079e7a cmp r0, 0 |
| if (r0 < 0) {
0x00079e7c blt 0x79e86 | goto label_4;
| }
0x00079e7e mov r0, r5 | r0 = r5;
0x00079e80 bl 0x79de4 | fcn_00079de4 (r0);
0x00079e84 b 0x79e58 |
| } while (1);
| label_4:
0x00079e86 blx 0x9628 | r0 = fcn_00009628 ();
0x00079e8a ldr r0, [r0] | r0 = *(r0);
0x00079e8c rsbs r0, r0, 0 | r0 -= ;
0x00079e8e b 0x79e58 | goto label_0;
| label_1:
0x00079e90 ldr r1, [pc, 0x24] |
0x00079e92 movs r2, 0x73 | r2 = 0x73;
0x00079e94 ldr r3, [pc, 0x24] |
0x00079e96 ldr r0, [pc, 0x28] |
0x00079e98 add r1, pc | r1 = 0xf3d54;
0x00079e9a add r3, pc | r3 = 0xf3d5a;
0x00079e9c adds r1, 7 | r1 += 7;
0x00079e9e add r0, pc | r0 = 0xf3d64;
0x00079ea0 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00079ea4 blx 0x927c | fprintf_chk ()
0x00079ea8 stc p0, c0, [r8], {4} | __asm ("stc p0, c0, [r8], {4}");
0x00079eac lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00079eae movs r0, r0 |
0x00079eb0 ldr r2, [sp, 0x3d8] | r2 = *(arg_3d8h);
0x00079eb2 movs r2, r0 | r2 = r0;
0x00079eb4 stcl p0, c0, [r8], -0x10 | __asm ("stcl p0, c0, [r8], -0x10");
0x00079eb8 ldm r7!, {r2, r3, r5, r6} | r2 = *(r7!);
| r3 = *((r7! + 4));
| r5 = *((r7! + 8));
| r6 = *((r7! + 12));
0x00079eba movs r2, r0 | r2 = r0;
| if (r2 == r0) {
0x00079ebc beq 0x79edc | void (*0x79edc)() ();
| }
0x00079ebe movs r2, r0 | r2 = r0;
0x00079ec0 lsls r2, r5, 0x1a | r2 = r5 << 0x1a;
0x00079ec2 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79ec4 */
| #include <stdint.h>
|
; (fcn) fcn.00079ec4 () | void fcn_00079ec4 (uint32_t arg1) {
| int16_t var_0h;
| int16_t var_6ch;
| r0 = arg1;
0x00079ec4 ldr r2, [pc, 0x60] |
0x00079ec6 cmp r0, 0 |
0x00079ec8 ldr r3, [pc, 0x60] | r3 = *(0x79f2c);
0x00079eca push {r4, lr} |
0x00079ecc sub sp, 0x70 |
0x00079ece add r2, pc | r2 = 0xf3dfa;
0x00079ed0 ldr r3, [r2, r3] |
0x00079ed2 ldr r3, [r3] | r3 = *(0xf3dfa);
0x00079ed4 str r3, [sp, 0x6c] | var_6ch = r3;
0x00079ed6 mov.w r3, 0 | r3 = 0;
| if (r0 < 0) {
0x00079eda blt 0x79f10 | goto label_0;
| }
0x00079edc mov r4, sp | r4 = sp;
0x00079ede mov r1, r4 | r1 = r4;
0x00079ee0 blx 0x9020 | r0 = fcn_00009020 ();
0x00079ee4 cmp r0, 0 |
| if (r0 < 0) {
0x00079ee6 blt 0x79f06 | goto label_1;
| }
0x00079ee8 mov r0, r4 | r0 = r4;
0x00079eea bl 0x79de4 | fcn_00079de4 (r0);
| do {
0x00079eee ldr r2, [pc, 0x40] |
0x00079ef0 ldr r3, [pc, 0x38] | r3 = *(0x79f2c);
0x00079ef2 add r2, pc | r2 = 0xf3e28;
0x00079ef4 ldr r3, [r2, r3] | r3 = *(0xf3e28);
0x00079ef6 ldr r2, [r3] | r2 = *(0xf3e28);
0x00079ef8 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00079efa eors r2, r3 | r2 ^= r3;
0x00079efc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079f00 bne 0x79f24 | goto label_2;
| }
0x00079f02 add sp, 0x70 |
0x00079f04 pop {r4, pc} |
| label_1:
0x00079f06 blx 0x9628 | r0 = fcn_00009628 ();
0x00079f0a ldr r0, [r0] | r0 = *(r0);
0x00079f0c rsbs r0, r0, 0 | r0 -= ;
0x00079f0e b 0x79eee |
| } while (1);
| label_0:
0x00079f10 ldr r1, [pc, 0x20] |
0x00079f12 movs r2, 0x82 | r2 = 0x82;
0x00079f14 ldr r3, [pc, 0x20] |
0x00079f16 ldr r0, [pc, 0x24] |
0x00079f18 add r1, pc | r1 = 0xf3e50;
0x00079f1a add r3, pc | r3 = 0xf3e56;
0x00079f1c adds r1, 7 | r1 += 7;
0x00079f1e add r0, pc | r0 = 0xf3e60;
0x00079f20 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x00079f24 blx 0x927c | fprintf_chk ()
0x00079f28 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79f40 */
| #include <stdint.h>
|
; (fcn) fcn.00079f40 () | void fcn_00079f40 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_40h;
| int16_t var_64h;
| r0 = arg1;
0x00079f40 blmi 0x94c7d0 | __asm ("blmi aav.0x0004eb7c");
0x00079f44 push {r4, r5, lr} |
0x00079f46 sub sp, 0x6c |
0x00079f48 add r2, pc | r2 += pc;
0x00079f4a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00079f4c ldr r3, [r3] | r3 = *(r3);
0x00079f4e str r3, [sp, 0x64] | var_64h = r3;
0x00079f50 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x00079f54 cbz r0, 0x79fb2 | goto label_1;
| }
0x00079f56 mov r1, sp | r1 = sp;
0x00079f58 mov r5, r0 | r5 = r0;
0x00079f5a blx 0x8cd8 | r0 = fcn_00008cd8 ();
0x00079f5e cmp r0, 0 |
| if (r0 < 0) {
0x00079f60 blt 0x79fa8 | goto label_2;
| }
0x00079f62 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00079f64 ands r4, r3, 1 | r4 = r3 & 1;
0x00079f68 it ne |
| if (r4 == r3) {
0x00079f6a movne r0, 1 | r0 = 1;
| }
0x00079f6c beq 0x79f86 |
| while (r0 >= 0) {
| label_0:
0x00079f6e ldr r2, [pc, 0x64] |
0x00079f70 ldr r3, [pc, 0x5c] | r3 = *(0x79fd0);
0x00079f72 add r2, pc | r2 = 0xf3f4c;
0x00079f74 ldr r3, [r2, r3] | r3 = *(0xf3f4c);
0x00079f76 ldr r2, [r3] | r2 = *(0xf3f4c);
0x00079f78 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00079f7a eors r2, r3 | r2 ^= r3;
0x00079f7c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079f80 bne 0x79fc6 | goto label_3;
| }
0x00079f82 add sp, 0x6c |
0x00079f84 pop {r4, r5, pc} |
0x00079f86 movs r1, 2 | r1 = 2;
0x00079f88 mov r0, r5 | r0 = r5;
0x00079f8a blx 0x8df4 | r0 = fcn_00008df4 ();
0x00079f8e cmp r0, 0 |
0x00079f90 it ge |
| if (r0 < 0) {
0x00079f92 movge r0, r4 | r0 = r4;
| }
0x00079f94 bge 0x79f6e |
| }
0x00079f96 blx 0x9628 | r0 = fcn_00009628 ();
0x00079f9a ldr r0, [r0] | r0 = *(r0);
0x00079f9c sub.w r0, r0, 0x1e | r0 -= 0x1e;
0x00079fa0 clz r0, r0 | r0 &= r0;
0x00079fa4 lsrs r0, r0, 5 | r0 >>= 5;
0x00079fa6 b 0x79f6e | goto label_0;
| label_2:
0x00079fa8 blx 0x9628 | r0 = fcn_00009628 ();
0x00079fac ldr r0, [r0] | r0 = *(r0);
0x00079fae rsbs r0, r0, 0 | r0 -= ;
0x00079fb0 b 0x79f6e | goto label_0;
| label_1:
0x00079fb2 ldr r1, [pc, 0x24] |
0x00079fb4 movs r2, 0x8d | r2 = 0x8d;
0x00079fb6 ldr r3, [pc, 0x24] |
0x00079fb8 ldr r0, [pc, 0x24] |
0x00079fba add r1, pc | r1 = 0xf3f98;
0x00079fbc add r3, pc | r3 = 0xf3f9e;
0x00079fbe adds r1, 7 | r1 += 7;
0x00079fc0 add r0, pc | r0 = 0xf3fa4;
0x00079fc2 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x00079fc6 blx 0x927c | fprintf_chk ()
0x00079fca nop |
0x00079fcc sbcs.w r0, ip, r4 | __asm ("sbcs.w r0, ip, r4");
0x00079fd0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x00079fd2 movs r0, r0 |
0x00079fd4 adcs.w r0, r2, r4 | __asm ("adcs.w r0, r2, r4");
0x00079fd8 ldm r6, {r1, r3, r6} | r1 = *(r6);
| r3 = *((r6 + 4));
| r6 = *((r6 + 8));
0x00079fda movs r2, r0 | r2 = r0;
0x00079fdc ldm r7!, {r2, r3, r4, r5} | r2 = *(r7!);
| r3 = *((r7! + 4));
| r4 = *((r7! + 8));
| r5 = *((r7! + 12));
0x00079fde movs r2, r0 | r2 = r0;
0x00079fe0 adds r7, 0x60 | r7 += 0x60;
0x00079fe2 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x79fe4 */
| #include <stdint.h>
|
; (fcn) fcn.00079fe4 () | void fcn_00079fe4 (uint32_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_60h;
| int16_t var_68h;
| int16_t var_c8h;
| int16_t var_d4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00079fe4 sasxmi fp, r5, r0 | __asm ("sasxmi fp, r5, r0");
0x00079fe8 ldr r2, [pc, 0xb4] |
0x00079fea sub sp, 0xdc |
0x00079fec ldr r3, [pc, 0xb4] | r3 = *(0x7a0a4);
0x00079fee add r2, pc | r2 = 0xf4092;
0x00079ff0 ldr r3, [r2, r3] |
0x00079ff2 ldr r3, [r3] | r3 = *(0xf4092);
0x00079ff4 str r3, [sp, 0xd4] | var_d4h = r3;
0x00079ff6 mov.w r3, 0 | r3 = 0;
0x00079ffa cmp r0, 0 |
| if (r0 != 0) {
0x00079ffc beq 0x7a072 |
0x00079ffe mov r4, r1 | r4 = r1;
0x0007a000 cmp r1, 0 |
| if (r1 == 0) {
0x0007a002 beq 0x7a086 | goto label_0;
| }
0x0007a004 mov r1, r0 | r1 = r0;
0x0007a006 mov r3, r5 | r3 = r5;
0x0007a008 mov r2, sp | r2 = sp;
0x0007a00a mvn r0, 0x63 | r0 = ~0x63;
0x0007a00e blx 0x9334 | r0 = fcn_00009334 ();
0x0007a012 cmp r0, 0 |
| if (r0 >= 0) {
0x0007a014 blt 0x7a052 |
0x0007a016 mov r3, r5 | r3 = r5;
0x0007a018 add r2, sp, 0x68 | r2 += var_68h;
0x0007a01a mov r1, r4 | r1 = r4;
0x0007a01c mvn r0, 0x63 | r0 = ~0x63;
0x0007a020 blx 0x9334 | r0 = fcn_00009334 ();
0x0007a024 cmp r0, 0 |
| if (r0 >= 0) {
0x0007a026 blt 0x7a052 |
0x0007a028 ldrd r0, r2, [sp] | __asm ("ldrd r0, r2, [sp]");
0x0007a02c ldrd r1, r3, [sp, 0x68] | __asm ("ldrd r1, r3, [var_68h]");
0x0007a030 cmp r2, r3 |
0x0007a032 it eq |
| if (r2 == r3) {
0x0007a034 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
0x0007a036 it ne |
| if (r2 == r3) {
0x0007a038 movne r0, 0 | r0 = 0;
| }
| if (r2 != r3) {
0x0007a03a bne 0x7a05a | goto label_1;
| }
0x0007a03c ldrd r0, r2, [sp, 0x60] | __asm ("ldrd r0, r2, [var_60h]");
0x0007a040 ldrd r1, r3, [sp, 0xc8] | __asm ("ldrd r1, r3, [var_c8h]");
0x0007a044 cmp r2, r3 |
0x0007a046 it eq |
| if (r2 == r3) {
0x0007a048 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
0x0007a04a ite eq |
| if (r2 != r3) {
0x0007a04c moveq r0, 1 | r0 = 1;
| }
| if (r2 == r3) {
0x0007a04e movne r0, 0 | r0 = 0;
| }
0x0007a050 b 0x7a05a |
| }
| } else {
0x0007a052 blx 0x9628 | r0 = fcn_00009628 ();
0x0007a056 ldr r0, [r0] | r0 = *(r0);
0x0007a058 rsbs r0, r0, 0 | r0 -= ;
| }
| label_1:
0x0007a05a ldr r2, [pc, 0x4c] |
0x0007a05c ldr r3, [pc, 0x44] | r3 = *(0x7a0a4);
0x0007a05e add r2, pc | r2 = 0xf410c;
0x0007a060 ldr r3, [r2, r3] | r3 = *(0xf410c);
0x0007a062 ldr r2, [r3] | r2 = *(0xf410c);
0x0007a064 ldr r3, [sp, 0xd4] | r3 = var_d4h;
0x0007a066 eors r2, r3 | r2 ^= r3;
0x0007a068 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007a06c bne 0x7a09a | goto label_2;
| }
0x0007a06e add sp, 0xdc |
0x0007a070 pop {r4, r5, pc} |
| }
0x0007a072 ldr r1, [pc, 0x38] |
0x0007a074 movs r2, 0xa1 | r2 = 0xa1;
0x0007a076 ldr r3, [pc, 0x38] |
0x0007a078 ldr r0, [pc, 0x38] |
0x0007a07a add r1, pc | r1 = 0xf412c;
0x0007a07c add r3, pc | r3 = 0xf4132;
0x0007a07e adds r1, 7 | r1 += 7;
0x0007a080 add r0, pc | r0 = 0xf4138;
0x0007a082 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_0:
0x0007a086 ldr r1, [pc, 0x30] |
0x0007a088 movs r2, 0xa2 | r2 = 0xa2;
0x0007a08a ldr r3, [pc, 0x30] |
0x0007a08c ldr r0, [pc, 0x30] |
0x0007a08e add r1, pc | r1 = 0xf414c;
0x0007a090 add r3, pc | r3 = 0xf4152;
0x0007a092 adds r1, 7 | r1 += 7;
0x0007a094 add r0, pc | r0 = 0xf4158;
0x0007a096 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_2:
0x0007a09a blx 0x927c | fprintf_chk ()
0x0007a09e nop |
0x0007a0a0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7a0f4 */
| #include <stdint.h>
|
; (fcn) fcn.0007a0f4 () | void fcn_0007a0f4 (int16_t arg2) {
| int16_t var_0h;
| int16_t var_5ch;
| r1 = arg2;
0x0007a0f4 blmi 0x58c948 | __asm ("blmi aav.0x0004e9c8");
0x0007a0f8 push {r4, r5, lr} |
0x0007a0fa sub sp, 0x64 |
0x0007a0fc add r2, pc | r2 += pc;
0x0007a0fe mov r5, sp | r5 = sp;
0x0007a100 mov r4, r1 | r4 = r1;
0x0007a102 mov r1, r5 | r1 = r5;
0x0007a104 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007a106 ldr r3, [r3] | r3 = *(r3);
0x0007a108 str r3, [sp, 0x5c] | var_5ch = r3;
0x0007a10a mov.w r3, 0 | r3 = 0;
0x0007a10e blx 0x8f74 | r0 = fcn_00008f74 ();
0x0007a112 cmp r0, 0 |
| if (r0 < 0) {
0x0007a114 blt 0x7a136 | goto label_0;
| }
0x0007a116 mov r1, r4 | r1 = r4;
0x0007a118 mov r0, r5 | r0 = r5;
0x0007a11a bl 0x7a0c4 | fcn_0007a0c4 (r0, r1);
| do {
0x0007a11e ldr r2, [pc, 0x2c] |
0x0007a120 ldr r3, [pc, 0x24] | r3 = *(0x7a148);
0x0007a122 add r2, pc | r2 = 0xf4274;
0x0007a124 ldr r3, [r2, r3] | r3 = *(0xf4274);
0x0007a126 ldr r2, [r3] | r2 = *(0xf4274);
0x0007a128 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0007a12a eors r2, r3 | r2 ^= r3;
0x0007a12c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007a130 bne 0x7a140 | goto label_1;
| }
0x0007a132 add sp, 0x64 |
0x0007a134 pop {r4, r5, pc} |
| label_0:
0x0007a136 blx 0x9628 | r0 = fcn_00009628 ();
0x0007a13a ldr r0, [r0] | r0 = *(r0);
0x0007a13c rsbs r0, r0, 0 | r0 -= ;
0x0007a13e b 0x7a11e |
| } while (1);
| label_1:
0x0007a140 blx 0x927c | r0 = fprintf_chk ()
0x0007a144 strd r0, r0, [r8, 0x10] | __asm ("strd r0, r0, [r8, 0x10]");
0x0007a148 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007a14a movs r0, r0 |
0x0007a14c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7a150 */
| #include <stdint.h>
|
; (fcn) fcn.0007a150 () | void fcn_0007a150 (int16_t arg2) {
| int16_t var_5ch_2;
| int16_t var_0h;
| int16_t var_5ch;
| r1 = arg2;
0x0007a150 blmi 0x58c9a4 | __asm ("blmi aav.0x0004e96c");
0x0007a154 push {r4, r5, lr} |
0x0007a156 sub sp, 0x64 |
0x0007a158 add r2, pc | r2 += pc;
0x0007a15a mov r5, sp | r5 = sp;
0x0007a15c mov r4, r1 | r4 = r1;
0x0007a15e mov r1, r5 | r1 = r5;
0x0007a160 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007a162 ldr r3, [r3] | r3 = *(r3);
0x0007a164 str r3, [sp, 0x5c] | var_5ch = r3;
0x0007a166 mov.w r3, 0 | r3 = 0;
0x0007a16a blx 0x8a44 | r0 = fcn_00008a44 ();
0x0007a16e cmp r0, 0 |
| if (r0 < 0) {
0x0007a170 blt 0x7a192 | goto label_0;
| }
0x0007a172 mov r1, r4 | r1 = r4;
0x0007a174 mov r0, r5 | r0 = r5;
0x0007a176 bl 0x7a0c4 | fcn_0007a0c4 (r0, r1);
| do {
0x0007a17a ldr r2, [pc, 0x2c] |
0x0007a17c ldr r3, [pc, 0x24] | r3 = *(0x7a1a4);
0x0007a17e add r2, pc | r2 = 0xf432c;
0x0007a180 ldr r3, [r2, r3] | r3 = *(0xf432c);
0x0007a182 ldr r2, [r3] | r2 = *(0xf432c);
0x0007a184 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0007a186 eors r2, r3 | r2 ^= r3;
0x0007a188 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007a18c bne 0x7a19c | goto label_1;
| }
0x0007a18e add sp, 0x64 |
0x0007a190 pop {r4, r5, pc} |
| label_0:
0x0007a192 blx 0x9628 | r0 = fcn_00009628 ();
0x0007a196 ldr r0, [r0] | r0 = *(r0);
0x0007a198 rsbs r0, r0, 0 | r0 -= ;
0x0007a19a b 0x7a17a |
| } while (1);
| label_1:
0x0007a19c blx 0x927c | r0 = fprintf_chk ()
0x0007a1a0 strd r0, r0, [ip, -0x10]! | __asm ("strd r0, r0, [ip, -0x10]!");
0x0007a1a4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007a1a6 movs r0, r0 |
0x0007a1a8 strd r0, r0, [r6, -0x10] | __asm ("strd r0, r0, [r6, -0x10]");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7a1d4 */
| #include <stdint.h>
|
; (fcn) fcn.0007a1d4 () | void fcn_0007a1d4 () {
| int16_t var_0h;
| int16_t var_5ch;
0x0007a1d4 blmi 0x54ca24 | __asm ("blmi aav.0x0004e8e8");
0x0007a1d8 push {r4, lr} |
0x0007a1da sub sp, 0x60 |
0x0007a1dc add r2, pc | r2 += pc;
0x0007a1de mov r4, sp | r4 = sp;
0x0007a1e0 mov r1, r4 | r1 = r4;
0x0007a1e2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007a1e4 ldr r3, [r3] | r3 = *(r3);
0x0007a1e6 str r3, [sp, 0x5c] | var_5ch = r3;
0x0007a1e8 mov.w r3, 0 | r3 = 0;
0x0007a1ec blx 0x8a44 | r0 = fcn_00008a44 ();
0x0007a1f0 cmp r0, 0 |
| if (r0 < 0) {
0x0007a1f2 blt 0x7a212 | goto label_0;
| }
0x0007a1f4 mov r0, r4 | r0 = r4;
0x0007a1f6 bl 0x7a1ac | fcn_0007a1ac (r0);
| do {
0x0007a1fa ldr r2, [pc, 0x2c] |
0x0007a1fc ldr r3, [pc, 0x24] | r3 = *(0x7a224);
0x0007a1fe add r2, pc | r2 = 0xf442c;
0x0007a200 ldr r3, [r2, r3] | r3 = *(0xf442c);
0x0007a202 ldr r2, [r3] | r2 = *(0xf442c);
0x0007a204 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0007a206 eors r2, r3 | r2 ^= r3;
0x0007a208 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007a20c bne 0x7a21c | goto label_1;
| }
0x0007a20e add sp, 0x60 |
0x0007a210 pop {r4, pc} |
| label_0:
0x0007a212 blx 0x9628 | r0 = fcn_00009628 ();
0x0007a216 ldr r0, [r0] | r0 = *(r0);
0x0007a218 rsbs r0, r0, 0 | r0 -= ;
0x0007a21a b 0x7a1fa |
| } while (1);
| label_1:
0x0007a21c blx 0x927c | r0 = fprintf_chk ()
0x0007a220 strd r0, r0, [r8], 0x10 | __asm ("strd r0, r0, [r8], 0x10");
0x0007a224 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007a226 movs r0, r0 |
0x0007a228 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7a2a0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007a2a0 () | void fcn_0007a2a0 (int16_t arg_28h, int16_t arg1, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r2 = arg3;
| r3 = arg4;
0x0007a2a0 strdlt fp, ip, [r5], r0 | __asm ("strdlt fp, ip, [r5], r0");
0x0007a2a4 ldr r4, [pc, 0xd0] |
0x0007a2a6 movs r5, 0 | r5 = 0;
0x0007a2a8 ldr r1, [pc, 0xd0] | r1 = *(0x7a37c);
0x0007a2aa add r4, pc | r4 = 0xf4626;
0x0007a2ac ldr r1, [r4, r1] |
0x0007a2ae ldr r4, [sp, 0x28] | r4 = *(arg_28h);
0x0007a2b0 ldr r1, [r1] | r1 = *(0xf4626);
0x0007a2b2 str r1, [sp, 0xc] | var_ch = r1;
0x0007a2b4 mov.w r1, 0 | r1 = 0;
0x0007a2b8 str r5, [sp, 8] | var_8h = r5;
0x0007a2ba cmp r4, 0 |
| if (r4 == 0) {
0x0007a2bc beq 0x7a344 | goto label_2;
| }
0x0007a2be lsr.w lr, r2, 0xc | lr = r2 >> 0xc;
0x0007a2c2 bic r1, r3, 0xff0 | r1 = BIT_MASK (r3, 0xff0);
0x0007a2c6 uxtb r7, r2 | r7 = (int8_t) r2;
0x0007a2c8 bic r1, r1, 0xf | r1 = BIT_MASK (r1, 0xf);
0x0007a2cc orr.w lr, lr, r3, lsl 20 | lr |= (r3 << 20);
0x0007a2d0 ubfx ip, r2, 8, 0xc | ip = (r2 >> 8) & ((1 << 0xc) - 1);
0x0007a2d4 orr.w r1, r1, ip | r1 |= ip;
0x0007a2d8 bic lr, lr, 0xff | lr = BIT_MASK (lr, 0xff);
0x0007a2dc orrs r1, r7 | r1 |= r7;
0x0007a2de orrs.w r1, r1, lr | r1 |= lr;
| if (r1 != r1) {
0x0007a2e2 bne 0x7a324 | goto label_3;
| }
0x0007a2e4 and r6, r0, 0xf000 | r6 &= arg_28hxf000;
0x0007a2e8 cmp.w r6, 0x2000 |
| if (r6 == 0x2000) {
0x0007a2ec beq 0x7a35a | goto label_4;
| }
0x0007a2ee cmp.w r6, 0x6000 |
| if (r6 != 0x6000) {
0x0007a2f2 bne 0x7a364 | goto label_5;
| }
0x0007a2f4 ldr r0, [pc, 0x88] |
0x0007a2f6 add r0, pc | r0 = 0xf467a;
0x0007a2f8 blx 0x9200 | r0 = fcn_00009200 ();
| label_1:
0x0007a2fc cmp r0, 0 |
| if (r0 == 0) {
0x0007a2fe beq 0x7a370 | goto label_6;
| }
0x0007a300 str r0, [r4] | *(r4) = r0;
0x0007a302 movs r0, 0 | r0 = 0;
0x0007a304 mov r6, r0 | r6 = r0;
| do {
| label_0:
0x0007a306 blx 0x8dac | fcn_00008dac ();
0x0007a30a ldr r2, [pc, 0x78] |
0x0007a30c ldr r3, [pc, 0x6c] | r3 = *(0x7a37c);
0x0007a30e add r2, pc | r2 = 0xf4698;
0x0007a310 ldr r3, [r2, r3] | r3 = *(0xf4698);
0x0007a312 ldr r2, [r3] | r2 = *(0xf4698);
0x0007a314 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007a316 eors r2, r3 | r2 ^= r3;
0x0007a318 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007a31c bne 0x7a36c | goto label_7;
| }
0x0007a31e mov r0, r6 | r0 = r6;
0x0007a320 add sp, 0x14 |
0x0007a322 pop {r4, r5, r6, r7, pc} |
| label_3:
0x0007a324 add r1, sp, 8 | r1 += var_8h;
0x0007a326 str r1, [sp] | *(sp) = r1;
0x0007a328 bl 0x7a22c | r0 = fcn_0007a22c (r0, r1, r2, r3);
0x0007a32c subs r6, r0, 0 | r6 = r0 - 0;
0x0007a32e ldr r0, [sp, 8] | r0 = var_8h;
0x0007a330 blt 0x7a306 |
| } while (r6 < r0);
0x0007a332 mov r3, r4 | r3 = r4;
0x0007a334 mov r2, r5 | r2 = r5;
0x0007a336 mov r1, r5 | r1 = r5;
0x0007a338 str r5, [sp] | *(sp) = r5;
0x0007a33a bl 0x6c85c | r0 = fcn_0006c85c (r0, r1, r2, r3);
0x0007a33e mov r6, r0 | r6 = r0;
0x0007a340 ldr r0, [sp, 8] | r0 = var_8h;
0x0007a342 b 0x7a306 | goto label_0;
| label_2:
0x0007a344 ldr r1, [pc, 0x40] |
0x0007a346 mov.w r2, 0x13e | r2 = 0x13e;
0x0007a34a ldr r3, [pc, 0x40] |
0x0007a34c ldr r0, [pc, 0x40] |
0x0007a34e add r1, pc | r1 = 0xf46da;
0x0007a350 add r3, pc | r3 = 0xf46e2;
0x0007a352 adds r1, 7 | r1 += 7;
0x0007a354 add r0, pc | r0 = 0xf46e8;
0x0007a356 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x0007a35a ldr r0, [pc, 0x38] |
0x0007a35c add r0, pc | r0 = 0xf46f6;
0x0007a35e blx 0x9200 | fcn_00009200 ();
0x0007a362 b 0x7a2fc | goto label_1;
| label_5:
0x0007a364 mov r0, r1 | r0 = r1;
0x0007a366 mvn r6, 0x12 | r6 = ~0x12;
0x0007a36a b 0x7a306 | goto label_0;
| label_7:
0x0007a36c blx 0x927c | fprintf_chk ()
| label_6:
0x0007a370 mvn r6, 0xb | r6 = ~0xb;
0x0007a374 b 0x7a306 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7a8a8 */
| #include <stdint.h>
|
; (fcn) fcn.0007a8a8 () | void fcn_0007a8a8 (int16_t arg_30h, int16_t arg_34h) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_20h;
| int16_t var_4h_2;
| int16_t var_4h_3;
0x0007a8a8 push {r0, r1, r2, r3} |
0x0007a8aa ldr r2, [pc, 0x9c] |
0x0007a8ac push {r4, r5, r6, r7, lr} |
0x0007a8ae sub sp, 0xc |
0x0007a8b0 ldr r3, [pc, 0x98] | r3 = *(0x7a94c);
0x0007a8b2 add r6, sp, 0x20 | r6 += var_20h;
0x0007a8b4 add r2, pc | r2 = 0xf5202;
0x0007a8b6 ldr r7, [r6], 4 | r7 = *(r6);
| r6 += 4;
0x0007a8ba ldr r3, [r2, r3] |
0x0007a8bc ldr r3, [r3] | r3 = *(0xf5202);
0x0007a8be str r3, [sp, 4] | var_4h = r3;
0x0007a8c0 mov.w r3, 0 | r3 = 0;
0x0007a8c4 str r6, [sp] | *(sp) = r6;
0x0007a8c6 cmp r7, 0 |
| if (r7 == 0) {
0x0007a8c8 beq 0x7a932 | goto label_5;
| }
0x0007a8ca mov r0, r7 | r0 = r7;
0x0007a8cc mov r5, r6 | r5 = r6;
0x0007a8ce blx 0x8f38 | r0 = fcn_00008f38 ();
0x0007a8d2 adds r4, r0, 1 | r4 = r0 + 1;
0x0007a8d4 b 0x7a8de |
| while (r0 != 0) {
0x0007a8d6 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0007a8da adds r4, r4, r0 | r4 += r0;
| if (r4 >= r4) {
0x0007a8dc bhs 0x7a940 | goto label_6;
| }
0x0007a8de ldr r0, [r5], 4 | r0 = *(r5);
| r5 += 4;
0x0007a8e2 cmp r0, 0 |
0x0007a8e4 bne 0x7a8d6 |
| }
0x0007a8e6 cmp r4, 1 |
0x0007a8e8 mov r0, r4 | r0 = r4;
0x0007a8ea it lo |
| if (r4 >= 1) {
0x0007a8ec movlo r0, 1 | r0 = 1;
| }
0x0007a8ee blx 0x9234 | blkid_safe_string ();
0x0007a8f0 stc p6, c4, [r2], 0x14 | __asm ("stc p6, c4, [r2], 0x14");
| if (r0 == 0) {
0x0007a8f4 cbz r0, 0x7a940 | goto label_6;
| }
0x0007a8f6 mov r4, r6 | r4 = r6;
0x0007a8f8 mov r0, r5 | r0 = r5;
0x0007a8fa str r6, [sp] | *(sp) = r6;
| do {
0x0007a8fc mov r1, r7 | r1 = r7;
0x0007a8fe adds r4, 4 | r4 += 4;
0x0007a900 blx 0x8c38 | fcn_00008c38 ();
0x0007a904 ldr r7, [r4, -0x4] | r7 = *((r4 - 0x4));
0x0007a908 str r4, [sp] | *(sp) = r4;
0x0007a90a cmp r7, 0 |
0x0007a90c bne 0x7a8fc |
| } while (r7 != 0);
| do {
0x0007a90e movs r3, 0 | r3 = 0;
0x0007a910 strb r3, [r0] | *(r0) = r3;
| label_0:
0x0007a912 ldr r2, [pc, 0x3c] |
0x0007a914 ldr r3, [pc, 0x34] | r3 = *(0x7a94c);
0x0007a916 add r2, pc | r2 = 0xf526c;
0x0007a918 ldr r3, [r2, r3] | r3 = *(0xf526c);
0x0007a91a ldr r2, [r3] | r2 = *(0xf526c);
0x0007a91c ldr r3, [sp, 4] | r3 = var_4h;
0x0007a91e eors r2, r3 | r2 ^= r3;
0x0007a920 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007a924 bne 0x7a944 | goto label_7;
| }
0x0007a926 mov r0, r5 | r0 = r5;
0x0007a928 add sp, 0xc |
0x0007a92a pop.w {r4, r5, r6, r7, lr} |
0x0007a92e add sp, 0x10 |
0x0007a930 bx lr | return;
| label_5:
0x0007a932 movs r0, 1 | r0 = 1;
0x0007a934 blx 0x9234 | r0 = blkid_safe_string ();
| if (r0 == 0) {
0x0007a938 cbz r0, 0x7a940 | goto label_6;
| }
0x0007a93a mov r5, r0 | r5 = r0;
0x0007a93c str r6, [sp] | *(sp) = r6;
0x0007a93e b 0x7a90e |
| } while (1);
| label_6:
0x0007a940 movs r5, 0 | r5 = 0;
0x0007a942 b 0x7a912 | goto label_0;
| label_7:
0x0007a944 blx 0x927c | fprintf_chk ()
0x0007a948 b 0x7ad6c | goto label_8;
| label_4:
0x0007ac76 mov r8, fp | r8 = fp;
0x0007ac78 cmp.w fp, 0 |
| if (fp != 0) {
0x0007ac7c beq 0x7ac86 |
0x0007ac7e mov r0, fp | r0 = fp;
0x0007ac80 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0007ac84 mov r8, r0 | r8 = r0;
| }
0x0007ac86 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x0007ac88 add r3, sp, 0x34 | r3 += arg_34h;
0x0007ac8a add r7, sp, 0x30 | r7 += arg_30h;
0x0007ac8c mov r5, r4 | r5 = r4;
0x0007ac8e str r3, [sp] | *(sp) = r3;
| if (r0 != 0) {
0x0007ac90 cbnz r0, 0x7aca2 | goto label_9;
| }
0x0007ac92 b 0x7acd0 | goto label_10;
| do {
0x0007ac94 ldr r3, [sp] | r3 = *(sp);
0x0007ac96 add r5, r0 | r5 += r0;
0x0007ac98 movs r6, 1 | r6 = 1;
0x0007ac9a ldr r0, [r3] | r0 = *(r3);
0x0007ac9c adds r3, 4 | r3 += 4;
0x0007ac9e str r3, [sp] | *(sp) = r3;
| if (r0 == 0) {
0x0007aca0 cbz r0, 0x7acd0 | goto label_10;
| }
| label_9:
0x0007aca2 blx 0x8f38 | fcn_00008f38 ();
| if (r6 != 0) {
0x0007aca6 cbz r6, 0x7acaa |
0x0007aca8 add r0, r8 | r0 += r8;
| }
0x0007acaa mvns r3, r5 | r3 = ~r5;
0x0007acac cmp r3, r0 |
0x0007acae bhi 0x7ac94 |
| } while (r3 > r0);
| do {
0x0007acb0 movs r0, 0 | r0 = 0;
| label_2:
0x0007acb2 ldr r2, [pc, 0xdc] |
0x0007acb4 ldr r3, [pc, 0xd4] | r3 = *(0x7ad8c);
0x0007acb6 add r2, pc | r2 = 0xf5a4c;
0x0007acb8 ldr r3, [r2, r3] | r3 = *(0xf5a4c);
0x0007acba ldr r2, [r3] | r2 = *(0xf5a4c);
0x0007acbc ldr r3, [sp, 4] | r3 = var_4h;
0x0007acbe eors r2, r3 | r2 ^= r3;
0x0007acc0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007acc4 bne 0x7ad84 | goto label_11;
| }
0x0007acc6 add sp, 8 |
0x0007acc8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0007accc add sp, 0xc |
0x0007acce bx lr | return;
| label_10:
0x0007acd0 mov r8, sl | r8 = sl;
0x0007acd2 cmp.w sl, 0 |
| if (sl != 0) {
0x0007acd6 beq 0x7ace6 |
0x0007acd8 ldrb.w r8, [sl] | r8 = *(sl);
0x0007acdc subs.w r8, r8, 0 |
0x0007ace0 it ne |
| if (r8 != r8) {
0x0007ace2 movne r8, 1 | r8 = 1;
| goto label_12;
| }
| }
| label_12:
0x0007ace6 adds r1, r5, 1 | r1 = r5 + 1;
0x0007ace8 cmp r1, 2 |
| if (r1 < 2) {
0x0007acea bls 0x7ad64 | goto label_13;
| }
0x0007acec clz r3, r5 | r3 &= r5;
| if (r3 != 0) {
0x0007acf0 cbz r3, 0x7acfa |
0x0007acf2 rsb.w r3, r3, 0x20 | r3 = 0x20 - r3;
0x0007acf6 movs r1, 1 | r1 = 1;
0x0007acf8 lsls r1, r3 | r1 <<= r3;
| }
| label_3:
0x0007acfa mov r0, sl | r0 = sl;
0x0007acfc blx 0x94dc | r0 = fcn_000094dc ();
0x0007ad00 mov sl, r0 | sl = r0;
0x0007ad02 cmp r0, 0 |
0x0007ad04 beq 0x7acb0 |
| } while (r0 == 0);
0x0007ad06 str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x0007ad0a adds r7, 4 | r7 += 4;
0x0007ad0c ldr r6, [sp, 0x30] | r6 = *(arg_30h);
0x0007ad0e add r0, r4 | r0 += r4;
0x0007ad10 str r7, [sp] | *(sp) = r7;
| if (r6 == 0) {
0x0007ad12 cbz r6, 0x7ad40 | goto label_14;
| }
0x0007ad14 subs.w r4, fp, 0 | r4 -= arg_30h;
0x0007ad18 it ne |
| if (r4 == arg_30h) {
0x0007ad1a movne r4, 1 | r4 = 1;
| }
0x0007ad1c b 0x7ad32 |
| while ((r4 & r8) == 0) {
| label_1:
0x0007ad1e mov r1, r6 | r1 = r6;
0x0007ad20 adds r7, 4 | r7 += 4;
0x0007ad22 blx 0x8c38 | fcn_00008c38 ();
0x0007ad26 ldr r6, [r7, -0x4] | r6 = *((r7 - 0x4));
0x0007ad2a mov.w r8, 1 | r8 = 1;
0x0007ad2e str r7, [sp] | *(sp) = r7;
| if (r6 == 0) {
0x0007ad30 cbz r6, 0x7ad40 | goto label_14;
| }
0x0007ad32 tst.w r4, r8 |
0x0007ad36 beq 0x7ad1e |
| }
0x0007ad38 mov r1, fp | r1 = fp;
0x0007ad3a blx 0x8c38 | fcn_00008c38 ();
0x0007ad3e b 0x7ad1e | goto label_1;
| label_14:
0x0007ad40 add.w r6, sl, r5 | r6 = sl + r5;
0x0007ad44 cmp r0, r6 |
0x0007ad46 itt eq |
| if (r0 != r6) {
0x0007ad48 moveq r3, 0 | r3 = 0;
| }
| if (r0 == r6) {
0x0007ad4a strbeq r3, [r0] | *(r0) = r3;
| goto label_15;
| }
| if (r0 == r6) {
| label_15:
0x0007ad4c beq 0x7acb2 | goto label_2;
| }
0x0007ad4e ldr r1, [pc, 0x44] |
0x0007ad50 movw r2, 0x312 | r2 = 0x312;
0x0007ad54 ldr r3, [pc, 0x40] |
0x0007ad56 ldr r0, [pc, 0x44] |
0x0007ad58 add r1, pc | r1 = 0xf5af2;
0x0007ad5a add r3, pc | r3 = 0xf5af6;
0x0007ad5c adds r1, 7 | r1 += 7;
0x0007ad5e add r0, pc | r0 = 0xf5b00;
0x0007ad60 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_13:
0x0007ad64 movs r1, 2 | r1 = 2;
0x0007ad66 b 0x7acfa | goto label_3;
| label_8:
0x0007ad6c b 0x7ac76 | goto label_4;
| label_11:
0x0007ad84 blx 0x927c | fprintf_chk ()
0x0007ad88 udf 0x8a | __asm ("udf 0x8a");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7a9b8 */
| #include <stdint.h>
|
; (fcn) fcn.0007a9b8 () | void fcn_0007a9b8 (int16_t arg_14h, int16_t arg1) {
| int16_t var_4h;
| r0 = arg1;
0x0007a9b8 invalid |
0x0007a9bc ldr r1, [pc, 0x24] |
0x0007a9be mov r4, r0 | r4 = r0;
0x0007a9c0 add r1, pc | r1 = 0xf53a8;
0x0007a9c2 blx 0x9488 | fcn_00009488 ();
0x0007a9c6 movs r3, 0 | r3 = 0;
0x0007a9c8 strb r3, [r4, r0] | *((r4 + r0)) = r3;
0x0007a9ca mov r0, r4 | r0 = r4;
0x0007a9cc pop {r4, pc} |
0x0007a9ce ldr r1, [pc, 0x18] |
0x0007a9d0 movs r2, 0xad | r2 = 0xad;
0x0007a9d2 ldr r3, [pc, 0x18] |
0x0007a9d4 ldr r0, [pc, 0x18] |
0x0007a9d6 add r1, pc | r1 = 0xf53c4;
0x0007a9d8 add r3, pc | r3 = 0xf53ca;
0x0007a9da adds r1, 7 | r1 += 7;
0x0007a9dc add r0, pc | r0 = 0xf53d0;
0x0007a9de bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x0007a9e2 nop |
0x0007a9e4 ldc p0, c0, [r4], {1} | __asm ("ldc p0, c0, [r4], {1}");
0x0007a9e8 stm r5!, {r1, r2, r3, r4, r6} | *(r5!) = r1;
| *((r5! + 4)) = r2;
| *((r5! + 8)) = r3;
| *((r5! + 12)) = r4;
| *((r5! + 16)) = r6;
0x0007a9ea movs r2, r0 | r2 = r0;
0x0007a9ec stm r5!, {r3, r4, r5, r6, r7} | *(r5!) = r3;
| *((r5! + 4)) = r4;
| *((r5! + 8)) = r5;
| *((r5! + 12)) = r6;
| *((r5! + 16)) = r7;
0x0007a9ee movs r2, r0 | r2 = r0;
0x0007a9f0 b 0x7af44 |
| while (r3 == 0) {
| label_0:
0x0007af28 ldr r1, [pc, 0x3c] |
0x0007af2a ldr r2, [pc, 0x38] | r2 = *(0x7af66);
0x0007af2c add r1, pc | r1 = 0xf5e98;
0x0007af2e ldr r2, [r1, r2] | r2 = *(0xf5e98);
0x0007af30 ldr r1, [r2] | r1 = *(0xf5e98);
0x0007af32 ldr r2, [sp, 0x14] | r2 = *(arg_14h);
0x0007af34 eors r1, r2 | r1 ^= r2;
0x0007af36 invalid |
| label_1:
0x0007af38 lsls r0, r0, 8 | r0 <<= 8;
| if (r0 != r0) {
0x0007af3a bne 0x7af5c | goto label_2;
| }
0x0007af3c mov r0, fp | r0 = fp;
0x0007af3e add sp, 0x1c |
0x0007af40 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0007af44 mov r4, fp | r4 = fp;
0x0007af46 mov r0, r8 | r0 = r8;
0x0007af48 blx 0x8dac | fcn_00008dac ();
0x0007af4c ldr r3, [sp, 4] | r3 = var_4h;
0x0007af4e cmp r3, 0 |
0x0007af50 beq 0x7af28 |
| }
0x0007af52 str r4, [r3] | *(r3) = r4;
0x0007af54 b 0x7af28 | goto label_0;
| label_2:
0x0007af5c blx 0x927c | fprintf_chk ()
| if (r3 < 0) {
0x0007af60 blt 0x7af38 | goto label_1;
| }
0x0007af62 movs r4, r0 | r4 = r0;
0x0007af64 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007af66 movs r0, r0 |
| if (r0 < r0) {
0x0007af68 blt 0x7ae9c | void (*0x7ae9c)() ();
| }
0x0007af6a movs r4, r0 | r4 = r0;
0x0007af6c ldr r1, [r1] | r1 = *(r1);
0x0007af6e ldr r0, [r0] | r0 = *(r0);
0x0007af70 b.w 0x95dc | return void (*0x95dc)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7b1cc */
| #include <stdint.h>
|
; (fcn) fcn.0007b1cc () | void fcn_0007b1cc (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0007b1cc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0007b1d0 mov r7, r2 | r7 = r2;
0x0007b1d2 ldr r2, [pc, 0xfc] |
0x0007b1d4 mov r8, r3 | r8 = r3;
0x0007b1d6 sub sp, 0x1c |
0x0007b1d8 movs r4, 0 | r4 = 0;
0x0007b1da ldr r3, [pc, 0xf8] | r3 = *(0x7b2d6);
0x0007b1dc add r2, pc | r2 = 0xf64b2;
0x0007b1de str r1, [sp, 4] | var_4h = r1;
0x0007b1e0 ldr r3, [r2, r3] |
0x0007b1e2 ldr r3, [r3] | r3 = *(0xf64b2);
0x0007b1e4 str r3, [sp, 0x14] | var_14h = r3;
0x0007b1e6 mov.w r3, 0 | r3 = 0;
0x0007b1ea str r4, [sp, 0xc] | var_ch = r4;
0x0007b1ec str r0, [sp] | *(sp) = r0;
0x0007b1ee cmp r0, 0 |
| if (r0 == 0) {
0x0007b1f0 beq 0x7b28e | goto label_4;
| }
0x0007b1f2 cmp r1, 0 |
| if (r1 == 0) {
0x0007b1f4 beq 0x7b2a4 | goto label_3;
| }
0x0007b1f6 mov r6, r4 | r6 = r4;
0x0007b1f8 add.w sl, sp, 0x10 | sl += var_10h;
0x0007b1fc add.w sb, sp, 4 | sb += var_4h;
0x0007b200 mov r5, r4 | r5 = r4;
0x0007b202 add.w fp, sp, 0xc |
0x0007b206 b 0x7b230 |
| while (r0 >= 0) {
| if (r1 == 0) {
0x0007b208 beq 0x7b276 | goto label_5;
| }
0x0007b20a movs r2, 4 | r2 = 4;
0x0007b20c adds r1, r6, 2 | r1 = r6 + 2;
0x0007b20e mov r0, fp | r0 = fp;
0x0007b210 bl 0x6530c | fcn_0006530c (r0, r1, r2);
0x0007b212 invalid |
0x0007b216 cmp r0, 0 |
| if (r0 == 0) {
0x0007b218 beq 0x7b288 | goto label_6;
| }
0x0007b21a ldrd r2, r1, [sp, 0xc] | __asm ("ldrd r2, r1, [var_ch]");
0x0007b21e adds r6, 1 | r6++;
0x0007b220 str r5, [sp, 0x10] | var_10h = r5;
0x0007b222 str r1, [r2, r4] | *((r2 + r4)) = r1;
0x0007b224 mov r4, r3 | r4 = r3;
0x0007b226 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0007b228 str r5, [r2, r3] | *((r2 + r3)) = r5;
0x0007b22a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0007b22c blx 0x8dac | fcn_00008dac ();
0x0007b230 mov r3, r8 | r3 = r8;
0x0007b232 mov r2, r7 | r2 = r7;
0x0007b234 mov r1, sl | r1 = sl;
0x0007b236 mov r0, sb | r0 = sb;
0x0007b238 str r5, [sp, 0x10] | var_10h = r5;
0x0007b23a bl 0x695ac | r0 = fcn_000695ac (r0, r1, r2, r3);
0x0007b23e cmp r0, 0 |
0x0007b240 bge 0x7b208 |
| }
0x0007b242 mov r3, r0 | r3 = r0;
| label_0:
0x0007b244 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0007b246 str r3, [sp] | *(sp) = r3;
0x0007b248 blx 0x8dac | fcn_00008dac ();
0x0007b24c ldr r0, [sp, 0xc] | r0 = var_ch;
0x0007b24e ldr r3, [sp] | r3 = *(sp);
| if (r0 == 0) {
0x0007b250 cbz r0, 0x7b25a | goto label_2;
| }
0x0007b252 str r3, [sp] | *(sp) = r3;
0x0007b254 bl 0x7b004 | fcn_0007b004 (r0);
0x0007b258 ldr r3, [sp] | r3 = *(sp);
| do {
| label_2:
0x0007b25a ldr r1, [pc, 0x7c] |
0x0007b25c ldr r2, [pc, 0x74] | r2 = *(0x7b2d4);
0x0007b25e add r1, pc | r1 = 0xf653c;
0x0007b260 ldr r2, [r1, r2] | r2 = *(0xf653c);
0x0007b262 ldr r1, [r2] | r1 = *(0xf653c);
0x0007b264 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0007b266 eors r1, r2 | r1 ^= r2;
0x0007b268 mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x0007b26c bne 0x7b2cc | goto label_7;
| }
0x0007b26e mov r0, r3 | r0 = r3;
0x0007b270 add sp, 0x1c |
0x0007b272 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x0007b276 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0007b278 blx 0x8dac | fcn_00008dac ();
0x0007b27c ldr r0, [sp, 0xc] | r0 = var_ch;
| if (r0 == 0) {
0x0007b27e cbz r0, 0x7b2ba | goto label_8;
| }
| label_1:
0x0007b280 ldr r2, [sp] | r2 = *(sp);
0x0007b282 mov r3, r6 | r3 = r6;
0x0007b284 str r0, [r2] | *(r2) = r0;
0x0007b286 b 0x7b25a |
| } while (1);
| label_6:
0x0007b288 mvn r3, 0xb | r3 = ~0xb;
0x0007b28c b 0x7b244 | goto label_0;
| label_4:
0x0007b28e ldr r1, [pc, 0x4c] |
0x0007b290 mov.w r2, 0x110 | r2 = 0x110;
0x0007b294 ldr r3, [pc, 0x48] |
0x0007b296 ldr r0, [pc, 0x4c] |
0x0007b298 add r1, pc | r1 = 0xf657a;
0x0007b29a add r3, pc | r3 = 0xf657e;
0x0007b29c adds r1, 7 | r1 += 7;
0x0007b29e add r0, pc | r0 = 0xf6588;
0x0007b2a0 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0007b2a4 ldr r1, [pc, 0x40] |
0x0007b2a6 movw r2, 0x111 | r2 = 0x111;
0x0007b2aa ldr r3, [pc, 0x40] |
0x0007b2ac ldr r0, [pc, 0x40] |
0x0007b2ae add r1, pc | r1 = 0xf659a;
0x0007b2b0 add r3, pc | r3 = 0xf65a2;
0x0007b2b2 adds r1, 7 | r1 += 7;
0x0007b2b4 add r0, pc | r0 = 0xf65a8;
0x0007b2b6 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x0007b2ba movs r1, 4 | r1 = 4;
0x0007b2bc movs r0, 1 | r0 = 1;
0x0007b2be blx 0x8c20 | r0 = fcn_00008c20 ();
0x0007b2c2 cmp r0, 0 |
| if (r0 != 0) {
0x0007b2c4 bne 0x7b280 | goto label_1;
| }
0x0007b2c6 mvn r3, 0xb | r3 = ~0xb;
0x0007b2ca b 0x7b25a | goto label_2;
| label_7:
0x0007b2cc blx 0x927c | fprintf_chk ()
| if (r0 > 0) {
0x0007b2d0 bhi 0x7b2a4 | goto label_3;
| }
0x0007b2d2 movs r4, r0 | r4 = r0;
0x0007b2d4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007b2d6 movs r0, r0 |
| if (r0 > r0) {
0x0007b2d8 bhi 0x7b3a8 | goto label_9;
| }
0x0007b2da movs r4, r0 | r4 = r0;
0x0007b2dc pop {r2, r3, r7, pc} |
| do {
| label_9:
0x0007b3a8 pop {r2, r3, r4, r6, r7} |
0x0007b3aa movs r2, r0 | r2 = r0;
0x0007b3ac bhi 0x7b3a8 |
| } while (r2 > r0);
0x0007b3ae movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7b2f4 */
| #include <stdint.h>
|
; (fcn) fcn.0007b2f4 () | void fcn_0007b2f4 (int16_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0007b2f4 push {r4, r5, r6, r7, lr} |
0x0007b2f6 mov r5, r0 | r5 = r0;
0x0007b2f8 ldr r0, [pc, 0x98] |
0x0007b2fa mov r3, r2 | r3 = r2;
0x0007b2fc sub sp, 0xc |
0x0007b2fe movs r4, 0 | r4 = 0;
0x0007b300 ldr r2, [pc, 0x94] | r2 = *(0x7b398);
0x0007b302 add r0, pc | r0 = 0xf669a;
0x0007b304 ldr r2, [r0, r2] |
0x0007b306 ldr r2, [r2] | r2 = *(0xf669a);
0x0007b308 str r2, [sp, 4] | var_4h = r2;
0x0007b30a mov.w r2, 0 | r2 = 0;
0x0007b30e str r4, [sp] | *(sp) = r4;
0x0007b310 cmp r1, 0 |
| if (r1 == 0) {
0x0007b312 beq 0x7b37a | goto label_2;
| }
0x0007b314 ldr r2, [pc, 0x84] |
0x0007b316 mov r0, sp | r0 = sp;
0x0007b318 add r2, pc | r2 = 0xf66b8;
0x0007b31a bl 0x7b1cc | fcn_0007b1cc (r0, r1, r2, r3);
0x0007b31e subs r4, r0, 0 | r4 -= var_0h;
0x0007b31c invalid |
| if (r4 < var_0h) {
0x0007b322 ldr r6, [sp] | r6 = *(sp);
0x0007b324 mov r0, r6 | r0 = r6;
0x0007b326 bl 0x7b02c | r0 = fcn_0007b02c (r0);
0x0007b32a mov r4, r0 | r4 = r0;
0x0007b32c cbnz r0, 0x7b34a |
| }
0x0007b320 blt 0x7b36e | goto label_3;
| while (r3 != 0) {
| label_0:
0x0007b32e str r6, [r5] | *(r5) = r6;
| label_1:
0x0007b330 ldr r2, [pc, 0x6c] |
0x0007b332 ldr r3, [pc, 0x64] | r3 = *(0x7b39a);
0x0007b334 add r2, pc | r2 = 0xf66d8;
0x0007b336 ldr r3, [r2, r3] | r3 = *(0xf66d8);
0x0007b338 ldr r2, [r3] | r2 = *(0xf66d8);
0x0007b33a ldr r3, [sp, 4] | r3 = var_4h;
0x0007b33c eors r2, r3 | r2 ^= r3;
0x0007b33e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007b342 bne 0x7b38e | goto label_4;
| }
0x0007b344 mov r0, r4 | r0 = r4;
0x0007b346 add sp, 0xc |
0x0007b348 pop {r4, r5, r6, r7, pc} |
0x0007b34a add.w r3, r0, 0x40000000 | r3 = r0 + 0x40000000;
0x0007b34e subs r3, 1 | r3--;
0x0007b350 ldr.w r0, [r6, r3, lsl 2] | offset_0 = r3 << 2;
| r0 = *((r6 + offset_0));
0x0007b354 add.w r7, r6, r3, lsl 2 | r7 = r6 + (r3 << 2);
| if (r0 == 0) {
0x0007b358 cbz r0, 0x7b360 | goto label_5;
| }
0x0007b35a ldrb r3, [r0] | r3 = *(r0);
0x0007b35c cmp r3, 0 |
0x0007b35e bne 0x7b32e |
| }
| label_5:
0x0007b360 blx 0x8dac | fcn_00008dac ();
0x0007b364 movs r3, 0 | r3 = 0;
0x0007b366 subs r4, 1 | r4--;
0x0007b368 str r3, [r7] | *(r7) = r3;
0x0007b36a ldr r6, [sp] | r6 = *(sp);
0x0007b36c b 0x7b32e | goto label_0;
| label_3:
0x0007b36e ldr r0, [sp] | r0 = *(sp);
0x0007b370 cmp r0, 0 |
| if (r0 == 0) {
0x0007b372 beq 0x7b330 | goto label_1;
| }
0x0007b374 bl 0x7b004 | fcn_0007b004 (r0);
0x0007b378 b 0x7b330 | goto label_1;
| label_2:
0x0007b37a ldr r1, [pc, 0x28] |
0x0007b37c movs r2, 0xf8 | r2 = 0xf8;
0x0007b37e ldr r3, [pc, 0x28] |
0x0007b380 ldr r0, [pc, 0x28] |
0x0007b382 add r1, pc | r1 = 0xf672c;
0x0007b384 add r3, pc | r3 = 0xf6732;
0x0007b386 adds r1, 7 | r1 += 7;
0x0007b388 add r0, pc | r0 = 0xf6738;
0x0007b38a bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x0007b38e blx 0x927c | fprintf_chk ()
0x0007b392 nop |
0x0007b394 bvc 0x7b31c | __asm ("bvc aav.0x000000ff");
0x0007b396 movs r4, r0 | r4 = r0;
0x0007b398 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007b39a movs r0, r0 |
0x0007b39c b 0x7ba18 | return void (*0x7ba18)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7b8e8 */
| #include <stdint.h>
|
; (fcn) fcn.0007b8e8 () | void fcn_0007b8e8 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x0007b8e8 push {r2, r3} |
0x0007b8ea push {r4, r5, lr} |
0x0007b8ec mov r5, r0 | r5 = r0;
0x0007b8ee sub sp, 0x14 |
0x0007b8f0 ldr r0, [pc, 0x8c] | r0 = *(0x7b980);
0x0007b8f2 ldr r2, [pc, 0x90] | r2 = *(0x7b986);
| label_1:
0x0007b8f4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0007b8f6 add r0, pc | r0 += pc;
0x0007b8f8 ldr r2, [r0, r2] | r2 = *((r0 + r2));
0x0007b8fa ldr r2, [r2] | r2 = *(r2);
0x0007b8fc str r2, [sp, 0xc] | var_ch = r2;
0x0007b8fe mov.w r2, 0 | r2 = 0;
| if (r5 == 0) {
0x0007b902 cbz r5, 0x7b952 | goto label_2;
| }
0x0007b904 cmp r3, 0 |
| if (r3 == 0) {
0x0007b906 beq 0x7b966 | goto label_3;
| }
0x0007b908 mov r4, r1 | r4 = r1;
0x0007b90a cbnz r1, 0x7b92c |
| while (1) {
0x0007b90c ldr r2, [pc, 0x78] |
0x0007b90e ldr r3, [pc, 0x74] | r3 = *(0x7b986);
0x0007b910 add r2, pc | r2 = 0xf729c;
0x0007b912 ldr r3, [r2, r3] | r3 = *(0xf729c);
0x0007b914 ldr r2, [r3] | r2 = *(0xf729c);
0x0007b916 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007b918 eors r2, r3 | r2 ^= r3;
0x0007b91a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007b91e bne 0x7b97a | goto label_4;
| }
| label_0:
0x0007b920 mov r0, r4 | r0 = r4;
0x0007b922 add sp, 0x14 |
0x0007b924 pop.w {r4, r5, lr} |
0x0007b928 add sp, 8 |
0x0007b92a bx lr | return;
0x0007b92c add r2, sp, 0x24 | r2 += var_24h;
0x0007b92e str r3, [sp] | *(sp) = r3;
0x0007b930 strd r2, r2, [sp, 4] | __asm ("strd r2, r2, [var_4h]");
0x0007b934 mov.w r3, -1 | r3 = -1;
0x0007b938 ldr r0, [r5] | r0 = *(r5);
0x0007b93a movs r2, 1 | r2 = 1;
0x0007b93c blx 0x9074 | r0 = fcn_00009074 ();
0x0007b940 cmp r4, r0 |
0x0007b942 ittet gt |
| if (r4 <= r0) {
0x0007b944 ldrgt r3, [r5] | r3 = *(r5);
| }
| if (r4 <= r0) {
0x0007b946 subgt r4, r4, r0 | r4 -= r0;
| }
| if (r4 > r0) {
0x0007b948 movle r4, 0 | r4 = 0;
| }
| if (r4 <= r0) {
0x0007b94a addgt r3, r3, r0 | r3 += r0;
| }
0x0007b94c it gt |
| if (r4 <= r0) {
0x0007b94e strgt r3, [r5] | *(r5) = r3;
| }
0x0007b950 b 0x7b90c |
| }
| label_2:
0x0007b952 ldr r1, [pc, 0x38] |
0x0007b954 movs r2, 0x33 | r2 = 0x33;
0x0007b956 ldr r3, [pc, 0x38] |
0x0007b958 ldr r0, [pc, 0x38] |
0x0007b95a add r1, pc | r1 = 0xf72ec;
0x0007b95c add r3, pc | r3 = 0xf72f2;
0x0007b95e adds r1, 7 | r1 += 7;
0x0007b960 add r0, pc | r0 = 0xf72f8;
0x0007b962 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0007b966 ldr r1, [pc, 0x30] |
0x0007b968 movs r2, 0x34 | r2 = 0x34;
0x0007b96a ldr r3, [pc, 0x30] |
0x0007b96c ldr r0, [pc, 0x30] |
0x0007b96e add r1, pc | r1 = 0xf730c;
0x0007b970 add r3, pc | r3 = 0xf7312;
0x0007b972 adds r1, 7 | r1 += 7;
0x0007b974 add r0, pc | r0 = 0xf7318;
0x0007b976 bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x0007b97a blx 0x927c | fprintf_chk ()
0x0007b97e nop |
| if (r1 != 7) {
0x0007b980 bne 0x7b920 | goto label_0;
| }
0x0007b982 movs r4, r0 | r4 = r0;
0x0007b984 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007b986 movs r0, r0 |
| if (r0 != r0) {
0x0007b988 bne 0x7b8f4 | goto label_1;
| }
0x0007b98a movs r4, r0 | r4 = r0;
0x0007b98c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7bc4c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007bc4c () | void fcn_0007bc4c (int16_t arg_300h, uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_ch;
| int32_t var_ch_2;
| int16_t var_18h;
| int32_t var_4h_2;
| int16_t var_0h_2;
| int16_t var_22h;
| r0 = arg1;
| r1 = arg2;
0x0007bc4c ldr r2, [pc, 0x178] |
0x0007bc4e ldr r3, [pc, 0x17c] | r3 = *(0x7bdce);
0x0007bc50 push.w {r4, r5, r6, r7, r8, lr} |
0x0007bc54 sub sp, 0x20 |
0x0007bc56 add r2, pc | r2 = 0xf7a22;
0x0007bc58 add r7, sp, 0x18 | r7 += var_18h;
0x0007bc5a ldr r3, [r2, r3] |
0x0007bc5c ldr r3, [r3] | r3 = *(0xf7a22);
0x0007bc5e str r3, [r7, 4] | var_4h_2 = r3;
0x0007bc60 mov.w r3, 0 | r3 = 0;
0x0007bc64 cmp r0, 0 |
| if (r0 == 0) {
0x0007bc66 beq.w 0x7bd72 | goto label_2;
| }
0x0007bc6a mov r4, r1 | r4 = r1;
0x0007bc6c cmp r1, 0 |
| if (r1 == 0) {
0x0007bc6e beq.w 0x7bd86 | goto label_3;
| }
0x0007bc72 mov r5, r0 | r5 = r0;
0x0007bc74 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007bc78 cmp r0, 6 |
| if (r0 > 6) {
0x0007bc7a bgt 0x7bd44 | goto label_4;
| }
| label_1:
0x0007bc7c mov r0, r5 | r0 = r5;
0x0007bc7e blx 0x8f38 | r0 = fcn_00008f38 ();
0x0007bc82 add.w r3, r0, 0xb | r3 = r0 + 0xb;
0x0007bc86 cmp.w r3, 0x400000 |
| if (r3 > 0x400000) {
0x0007bc8a bhi.w 0x7bd9a | goto label_5;
| }
0x0007bc8e ldr r2, [pc, 0x140] |
0x0007bc90 add.w r3, r0, 0x12 | r3 = r0 + 0x12;
0x0007bc94 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x0007bc98 sub.w sp, sp, r3 |
0x0007bc9c add r2, pc | r2 = 0xf7a72;
0x0007bc9e add r6, sp, 0x18 | r6 += var_18h;
0x0007bca0 ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x0007bca2 mov r3, r6 | r3 = r6;
0x0007bca4 stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x0007bca6 mov r1, r5 | r1 = r5;
0x0007bca8 strh r2, [r3] | *(r3) = r2;
0x0007bcaa add.w r0, sp, 0x22 | r0 += var_22h;
0x0007bcae blx 0x9050 | fcn_00009050 ();
0x0007bcb2 movs r1, 1 | r1 = 1;
0x0007bcb4 mov r0, r6 | r0 = r6;
0x0007bcb6 movt r1, 8 | r1 = (r1 & 0xFFFF) | 0x80000;
0x0007bcba blx 0x908c | r0 = fcn_0000908c ();
0x0007bcbe subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0007bcc0 blt 0x7bd3a | goto label_6;
| }
0x0007bcc2 ldr.w r8, [pc, 0x110] |
0x0007bcc6 mov r0, r4 | r0 = r4;
0x0007bcc8 add r8, pc | r8 = 0xf7aa2;
0x0007bcca mov r1, r8 | r1 = r8;
0x0007bccc bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x0007bcd0 mov r6, r0 | r6 = r0;
0x0007bcd2 mov r0, r4 | r0 = r4;
0x0007bcd4 blx 0x8f38 | fcn_00008f38 ();
0x0007bcd8 cbz r6, 0x7bd16 |
| while (1) {
0x0007bcda mov r0, r4 | r0 = r4;
0x0007bcdc blx 0x8f38 | fcn_00008f38 ();
0x0007bce0 mov r1, r4 | r1 = r4;
0x0007bce2 mov r2, r0 | r2 = r0;
0x0007bce4 mov r0, r5 | r0 = r5;
0x0007bce6 blx 0x8dd0 | r0 = fcn_00008dd0 ();
0x0007bcea cmp r0, 0 |
0x0007bcec it ge |
| if (r0 < 0) {
0x0007bcee movge r4, 0 | r4 = 0;
| }
| if (r0 < 0) {
0x0007bcf0 blt 0x7bd3a | goto label_6;
| }
| label_0:
0x0007bcf2 mov r0, r5 | r0 = r5;
0x0007bcf4 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007bcf8 ldr r2, [pc, 0xdc] |
0x0007bcfa ldr r3, [pc, 0xd0] | r3 = *(0x7bdce);
0x0007bcfc add r2, pc | r2 = 0xf7ad8;
0x0007bcfe ldr r3, [r2, r3] | r3 = *(0xf7ad8);
0x0007bd00 ldr r2, [r3] | r2 = *(0xf7ad8);
0x0007bd02 ldr r3, [r7, 4] | r3 = var_4h_2;
0x0007bd04 eors r2, r3 | r2 ^= r3;
0x0007bd06 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007bd0a bne 0x7bdc2 | goto label_7;
| }
0x0007bd0c mov r0, r4 | r0 = r4;
0x0007bd0e adds r7, 8 | r7 += 8;
0x0007bd10 mov sp, r7 |
0x0007bd12 pop.w {r4, r5, r6, r7, r8, pc} |
0x0007bd16 adds r3, r0, 2 | r3 = r0 + 2;
0x0007bd18 cmp.w r3, 0x400000 |
| if (r3 > 0x400000) {
0x0007bd1c bhi 0x7bdae | goto label_8;
| }
0x0007bd1e adds r0, 9 | r0 += 9;
0x0007bd20 mov r1, r4 | r1 = r4;
0x0007bd22 bic r3, r0, 7 | r3 = BIT_MASK (r0, 7);
0x0007bd26 sub.w sp, sp, r3 |
0x0007bd28 lsrs r3, r0, 0x14 | r3 = r0 >> 0x14;
0x0007bd2a add r0, sp, 0x18 | r0 += var_18h;
0x0007bd2c mov r4, r0 | r4 = r0;
0x0007bd2e blx 0x8c38 | fcn_00008c38 ();
0x0007bd32 ldrh.w r3, [r8] | r3 = *(r8);
0x0007bd36 strh r3, [r0] | *(r0) = r3;
0x0007bd38 b 0x7bcda |
| }
| label_6:
0x0007bd3a blx 0x9628 | r0 = fcn_00009628 ();
0x0007bd3e ldr r4, [r0] | r4 = *(r0);
0x0007bd40 rsbs r4, r4, 0 | r4 -= ;
0x0007bd42 b 0x7bcf2 | goto label_0;
| label_4:
0x0007bd44 ldr r1, [pc, 0x94] |
0x0007bd46 mov r0, r4 | r0 = r4;
0x0007bd48 ldr r6, [pc, 0x94] |
0x0007bd4a add r1, pc | r1 = 0xf7b2a;
0x0007bd4c blx 0x9488 | fcn_00009488 ();
0x0007bd50 ldr r2, [pc, 0x90] |
0x0007bd52 add r6, pc | r6 = 0xf7b36;
0x0007bd54 ldr r3, [pc, 0x90] |
0x0007bd56 movs r1, 0 | r1 = 0;
0x0007bd58 strd r0, r4, [sp, 0xc] | __asm ("strd r0, r4, [var_ch]");
0x0007bd5c movs r0, 7 | r0 = 7;
0x0007bd5e add r2, pc | r2 = 0xf7b46;
0x0007bd60 str r5, [sp, 8] | var_8h = r5;
0x0007bd62 add r3, pc | r3 = 0xf7b4e;
0x0007bd64 adds r2, 7 | r2 += 7;
0x0007bd66 str r3, [sp, 4] | var_4h = r3;
0x0007bd68 movs r3, 0x34 | r3 = 0x34;
0x0007bd6a str r6, [sp] | *(sp) = r6;
0x0007bd6c bl 0x71448 | fcn_00071448 ();
0x0007bd70 b 0x7bc7c | goto label_1;
| label_2:
0x0007bd72 ldr r1, [pc, 0x78] |
0x0007bd74 movs r2, 0x31 | r2 = 0x31;
0x0007bd76 ldr r3, [pc, 0x78] |
0x0007bd78 ldr r0, [pc, 0x78] |
0x0007bd7a add r1, pc | r1 = 0xf7b6c;
0x0007bd7c add r3, pc | r3 = 0xf7b72;
0x0007bd7e adds r1, 7 | r1 += 7;
0x0007bd80 add r0, pc | r0 = 0xf7b78;
0x0007bd82 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0007bd86 ldr r1, [pc, 0x70] |
0x0007bd88 movs r2, 0x32 | r2 = 0x32;
0x0007bd8a ldr r3, [pc, 0x70] |
0x0007bd8c ldr r0, [pc, 0x70] |
0x0007bd8e add r1, pc | r1 = 0xf7b8c;
0x0007bd90 add r3, pc | r3 = 0xf7b92;
0x0007bd92 adds r1, 7 | r1 += 7;
0x0007bd94 add r0, pc | r0 = 0xf7b98;
0x0007bd96 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x0007bd9a ldr r1, [pc, 0x68] |
0x0007bd9c movs r2, 0x36 | r2 = 0x36;
0x0007bd9e ldr r3, [pc, 0x68] |
0x0007bda0 ldr r0, [pc, 0x68] |
0x0007bda2 add r1, pc | r1 = 0xf7bac;
0x0007bda4 add r3, pc | r3 = 0xf7bb2;
0x0007bda6 adds r1, 7 | r1 += 7;
0x0007bda8 add r0, pc | r0 = 0xf7bb8;
0x0007bdaa bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x0007bdae ldr r1, [pc, 0x60] |
0x0007bdb0 movs r2, 0x3c | r2 = 0x3c;
0x0007bdb2 ldr r3, [pc, 0x60] |
0x0007bdb4 ldr r0, [pc, 0x60] |
0x0007bdb6 add r1, pc | r1 = 0xf7bcc;
0x0007bdb8 add r3, pc | r3 = 0xf7bd2;
0x0007bdba adds r1, 7 | r1 += 7;
0x0007bdbc add r0, pc | r0 = 0xf7bd8;
0x0007bdbe bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x0007bdc2 blx 0x927c | fprintf_chk ()
0x0007bdc6 nop |
0x0007bdc8 ldm r6, {r1, r2, r3, r5, r6} | r1 = *(r6);
| r2 = *((r6 + 4));
| r3 = *((r6 + 8));
| r5 = *((r6 + 12));
| r6 = *((r6 + 16));
0x0007bdca movs r4, r0 | r4 = r0;
0x0007bdcc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007bdce movs r0, r0 |
0x0007bdd0 push {r2, r3, r4, r5, r6, r7} |
0x0007bdd2 movs r2, r0 | r2 = r0;
0x0007bdd4 adds r0, r1, r3 | r0 = r1 + r3;
0x0007bdd6 movs r2, r0 | r2 = r0;
0x0007bdd8 ldm r5!, {r3, r6, r7} | r3 = *(r5!);
| r6 = *((r5! + 4));
| r7 = *((r5! + 8));
0x0007bdda movs r4, r0 | r4 = r0;
| if (r4 >= r0) {
0x0007bddc bls 0x7bdf4 |
0x0007bdde movs r1, r0 | r1 = r0;
0x0007bde0 push {r1, r2, r3, r5, r6} |
0x0007bde2 movs r2, r0 | r2 = r0;
0x0007bde4 push {r1} |
0x0007bde6 movs r2, r0 | r2 = r0;
0x0007bde8 push {r1, r2, r3, r4} |
0x0007bdea movs r2, r0 | r2 = r0;
| if (r6 == 0) {
0x0007bdec cbz r6, 0x7be68 | goto label_9;
| }
0x0007bdee movs r2, r0 | r2 = r0;
0x0007bdf0 push {r2, r4, r5} |
0x0007bdf2 movs r2, r0 | r2 = r0;
| }
0x0007bdf4 ldrb r0, [r3, r7] | r0 = *((r3 + r7));
0x0007bdf6 movs r0, r0 |
| if (r2 != 0) {
0x0007bdf8 cbz r2, 0x7be70 |
0x0007bdfa movs r2, r0 | r2 = r0;
0x0007bdfc push {r5} |
0x0007bdfe movs r2, r0 | r2 = r0;
0x0007be00 str r0, [sp, 0x300] | *(arg_300h) = r0;
0x0007be02 movs r0, r0 |
| if (r6 == 0) {
0x0007be04 cbz r6, 0x7be76 | goto label_10;
| }
0x0007be06 movs r2, r0 | r2 = r0;
0x0007be08 push {r2, r3} |
0x0007be0a movs r2, r0 | r2 = r0;
0x0007be0c invalid |
| label_9:
0x0007be68 movs r2, r1 | r2 = r1;
0x0007be6a blx 0x9050 | fcn_00009050 ();
0x0007be6e movs r3, 0 | r3 = 0;
| }
0x0007be70 mov r2, r5 | r2 = r5;
0x0007be72 mov.w r1, -1 | r1 = -1;
| label_10:
0x0007be76 mov r0, r6 | r0 = r6;
0x0007be78 bl 0x6a7bc | fcn_0006a7bc (r0, r1, r2);
0x0007be7c ldr r2, [pc, 0x64] |
0x0007be7e ldr r3, [pc, 0x5c] | r3 = *(0x7bede);
0x0007be80 add r2, pc | r2 = 0xf7d68;
0x0007be82 ldr r3, [r2, r3] | r3 = *(0xf7d68);
0x0007be84 ldr r2, [r3] | r2 = *(0xf7d68);
0x0007be86 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0007be88 eors r2, r3 | r2 ^= r3;
0x0007be8a mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0007be8e bne 0x7bed2 |
0x0007be90 adds r7, 0xc | r7 += 0xc;
0x0007be92 mov sp, r7 |
0x0007be94 pop {r4, r5, r6, r7, pc} |
| }
0x0007bed2 blx 0x927c | fprintf_chk ()
0x0007bed6 nop |
0x0007bed8 ldm r4!, {r5, r7} | r5 = *(r4!);
| r7 = *((r4! + 4));
0x0007beda movs r4, r0 | r4 = r0;
0x0007bedc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007bede movs r0, r0 |
| if (r0 == 0) {
0x0007bee0 cbz r0, 0x7bf34 | void (*0x7bf34)() ();
| }
0x0007bee2 movs r2, r0 | r2 = r0;
0x0007bee4 ldm r4!, {r2, r6} | r2 = *(r4!);
| r6 = *((r4! + 4));
0x0007bee6 movs r4, r0 | r4 = r0;
0x0007bee8 uxtb r2, r0 | r2 = (int8_t) r0;
0x0007beea movs r2, r0 | r2 = r0;
| if (r4 == 0) {
0x0007beec cbz r4, 0x7bf30 | void (*0x7bf30)() ();
| }
0x0007beee movs r2, r0 | r2 = r0;
0x0007bef0 ldrb r4, [r6, r2] | r4 = *((r6 + r2));
0x0007bef2 movs r0, r0 |
0x0007bef4 uxth r6, r5 | r6 = (int16_t) r5;
0x0007bef6 movs r2, r0 | r2 = r0;
0x0007bef8 uxtb r0, r6 | r0 = (int8_t) r6;
0x0007befa movs r2, r0 | r2 = r0;
0x0007befc strh r4, [r7, 0x2a] | *((r7 + 0x2a)) = r4;
0x0007befe movs r0, r0 |
0x0007bf00 uxth r2, r3 | r2 = (int16_t) r3;
0x0007bf02 movs r2, r0 | r2 = r0;
0x0007bf04 uxtb r4, r3 | r4 = (int8_t) r3;
0x0007bf06 movs r2, r0 | r2 = r0;
0x0007bf08 invalid |
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7bf0c).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7c0c0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007c0c0 () | void fcn_0007c0c0 (uint32_t arg1, int16_t arg2) {
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_a4h;
| uint32_t var_0h_2;
| int32_t var_0h_3;
| int16_t var_8h_3;
| int16_t var_8h_2;
| int32_t var_bh;
| int8_t var_fh;
| int16_t var_8h;
| int32_t var_4h;
| int16_t var_8h_4;
| int32_t var_ch_2;
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x0007c0c0 strdlt fp, ip, [r7], r0 | __asm ("strdlt fp, ip, [r7], r0");
0x0007c0c4 ldr r4, [pc, 0xf4] |
0x0007c0c6 cmp r0, 0 |
0x0007c0c8 add r7, sp, 8 | r7 += var_8h;
0x0007c0ca ldr r2, [pc, 0xf4] | r2 = *(0x7c1c2);
0x0007c0cc mov.w r3, 0 | r3 = 0;
0x0007c0d0 add r4, pc | r4 = 0xf8290;
0x0007c0d2 ldr r2, [r4, r2] |
0x0007c0d4 ldr r2, [r2] | r2 = *(0xf8290);
0x0007c0d6 str r2, [r7, 0xc] | var_ch_2 = r2;
0x0007c0d8 mov.w r2, 0 | r2 = 0;
0x0007c0dc str r3, [r7, 4] | var_4h = r3;
| if (r0 < 0) {
0x0007c0de blt 0x7c196 | goto label_1;
| }
0x0007c0e0 mov r5, r1 | r5 = r1;
| if (r0 == 0) {
0x0007c0e2 beq 0x7c176 | goto label_2;
| }
0x0007c0e4 ldr r1, [pc, 0xdc] |
0x0007c0e6 sub sp, 0x18 |
0x0007c0e8 ldr r3, [pc, 0xdc] |
0x0007c0ea add r4, sp, 8 | r4 += var_8h_3;
0x0007c0ec movs r2, 0x18 | r2 = 0x18;
0x0007c0ee add r1, pc | r1 = 0xf82b6;
0x0007c0f0 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x0007c0f4 add r3, pc | r3 = 0xf82c0;
0x0007c0f6 movs r1, 1 | r1 = 1;
0x0007c0f8 mov r0, r4 | r0 = r4;
0x0007c0fa blx 0x9494 | fcn_00009494 ();
| do {
0x0007c0fe mov r0, r4 | r0 = r4;
0x0007c100 adds r1, r7, 4 | r1 += var_4h;
0x0007c102 bl 0x6b320 | fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007c106 subs r4, r0, 0 | r4 -= var_8h_2;
0x0007c108 ldr r6, [r7, 4] | r6 = var_4h;
| if (r4 >= var_8h_2) {
0x0007c10a blt 0x7c154 |
0x0007c10c movs r1, 0x29 | r1 = 0x29;
0x0007c10e mov r0, r6 | r0 = r6;
0x0007c110 blx 0x8c90 | r0 = fcn_00008c90 ();
0x0007c114 cmp r0, 0 |
| if (r0 == 0) {
0x0007c116 beq 0x7c1b2 | goto label_3;
| }
0x0007c118 ldr r1, [pc, 0xb0] |
0x0007c11a add.w r2, r7, 8 | r2 += var_8h_4;
0x0007c11e adds r0, 1 | r0++;
0x0007c120 add r1, pc | r1 = 0xf82f0;
0x0007c122 blx 0x8b20 | r0 = kmod_list_next ();
0x0007c126 cmp r0, 1 |
0x0007c128 itt ne |
| if (r0 == 1) {
0x0007c12a ldrne r6, [r7, 4] | r6 = *((r7 + 4));
| }
| if (r0 == 1) {
0x0007c12c mvnne r4, 4 | r4 = ~4;
| }
| if (r0 != 1) {
0x0007c130 bne 0x7c154 | goto label_0;
| }
0x0007c132 ldrd r6, r2, [r7, 4] | __asm ("ldrd r6, r2, [var_4h]");
0x0007c136 movs r0, 0 | r0 = 0;
0x0007c138 ubfx r3, r2, 8, 0xc | r3 = (r2 >> 8) & ((1 << 0xc) - 1);
0x0007c13c lsrs r1, r2, 0xc | r1 = r2 >> 0xc;
0x0007c13e bic r1, r1, 0xff | r1 = BIT_MASK (r1, 0xff);
0x0007c142 orrs r3, r1 | r3 |= r1;
0x0007c144 uxtb r1, r2 | r1 = (int8_t) r2;
0x0007c146 orrs r3, r1 | r3 |= r1;
| if (r3 == r1) {
0x0007c148 beq 0x7c1ac | goto label_4;
| }
0x0007c14a mov r4, r5 | r4 = r5;
| if (r5 == 0) {
0x0007c14c cbz r5, 0x7c154 | goto label_0;
| }
0x0007c14e mov r4, r0 | r4 = r0;
0x0007c150 strd r2, r0, [r5] | __asm ("strd r2, r0, [r5]");
| }
| label_0:
0x0007c154 mov r0, r6 | r0 = r6;
0x0007c156 blx 0x8dac | fcn_00008dac ();
0x0007c15a ldr r2, [pc, 0x74] |
0x0007c15c ldr r3, [pc, 0x60] | r3 = *(0x7c1c0);
0x0007c15e add r2, pc | r2 = 0xf8334;
0x0007c160 ldr r3, [r2, r3] | r3 = *(0xf8334);
0x0007c162 ldr r2, [r3] | r2 = *(0xf8334);
0x0007c164 ldr r3, [r7, 0xc] | r3 = var_ch_2;
0x0007c166 eors r2, r3 | r2 ^= r3;
0x0007c168 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007c16c bne 0x7c1b8 | goto label_5;
| }
0x0007c16e mov r0, r4 | r0 = r4;
0x0007c170 adds r7, 0x14 | r7 += 0x14;
0x0007c172 mov sp, r7 |
0x0007c174 pop {r4, r5, r6, r7, pc} |
| label_2:
0x0007c176 ldr r3, [pc, 0x5c] |
0x0007c178 sub sp, 0x10 |
0x0007c17a ldr r6, [pc, 0x5c] |
0x0007c17c add r4, sp, 8 | r4 += var_8h_2;
0x0007c17e add r3, pc | r3 = 0xf8358;
0x0007c180 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0007c184 add r6, pc | r6 = 0xf8362;
0x0007c186 stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x0007c18a ldrb r2, [r6, 4] | r2 = *((r6 + 4));
0x0007c18c ldr r0, [r6] | r0 = *(0xf8362);
0x0007c18e strb r2, [r4, 0xf] | var_fh = r2;
0x0007c190 str.w r0, [r4, 0xb] | __asm ("str.w r0, [var_bh]");
0x0007c194 b 0x7c0fe |
| } while (1);
| label_1:
0x0007c196 ldr r1, [pc, 0x44] |
0x0007c198 movw r2, 0x3a5 | r2 = 0x3a5;
0x0007c19c ldr r3, [pc, 0x40] |
0x0007c19e ldr r0, [pc, 0x44] |
0x0007c1a0 add r1, pc | r1 = 0xf8382;
0x0007c1a2 add r3, pc | r3 = 0xf8386;
0x0007c1a4 adds r1, 7 | r1 += 7;
0x0007c1a6 add r0, pc | r0 = 0xf8390;
0x0007c1a8 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x0007c1ac mvn r4, 5 | r4 = ~5;
0x0007c1b0 b 0x7c154 | goto label_0;
| label_3:
0x0007c1b2 mvn r4, 4 | r4 = ~4;
0x0007c1b6 b 0x7c154 | goto label_0;
| label_5:
0x0007c1b8 blx 0x927c | fprintf_chk ()
0x0007c1bc ldm r1!, {r2, r4, r5, r6, r7} | r2 = *(r1!);
| r4 = *((r1! + 4));
| r5 = *((r1! + 8));
| r6 = *((r1! + 12));
| r7 = *((r1! + 16));
0x0007c1be movs r4, r0 | r4 = r0;
0x0007c1c0 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007c1c2 movs r0, r0 |
0x0007c1c4 adr r0, 0x308 | r0 = case.0x584aa.7;
0x0007c1c6 movs r2, r0 | r2 = r0;
0x0007c1c8 ldrh r4, [r1, 0x14] | r4 = *((r1 + 0x14));
0x0007c1ca movs r1, r0 | r1 = r0;
| if (r0 == 0) {
0x0007c1cc cbz r0, 0x7c1f2 | void (*0x7c1f2)() ();
| }
0x0007c1ce movs r2, r0 | r2 = r0;
0x0007c1d0 ldm r1, {r1, r2, r5, r6} | r1 = *(r1);
| r2 = *((r1 + 4));
| r5 = *((r1 + 8));
| r6 = *((r1 + 12));
0x0007c1d2 movs r4, r0 | r4 = r0;
0x0007c1d4 ldrh r6, [r5, 0xe] | r6 = *((r5 + 0xe));
0x0007c1d6 movs r1, r0 | r1 = r0;
0x0007c1d8 adr r0, 0xb0 | r0 = 0xb0;
0x0007c1da movs r2, r0 | r2 = r0;
0x0007c1dc sub sp, 0x180 |
0x0007c1de movs r2, r0 | r2 = r0;
| if (r2 == 0) {
0x0007c1e0 cbz r2, 0x7c21c | void (*0x7c21c)() ();
| }
0x0007c1e2 movs r2, r0 | r2 = r0;
0x0007c1e4 lsls r6, r0, 0x1c | r6 = r0 << 0x1c;
0x0007c1e6 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7c1e8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007c1e8 () | void fcn_0007c1e8 (int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_28h;
| int16_t var_38h;
| int32_t var_38h_2;
| int16_t var_84h;
| int16_t var_a4h;
| r1 = arg2;
| r2 = arg3;
0x0007c1e8 push {r4, r5, r6, r7, lr} |
0x0007c1ea mov r6, r2 | r6 = r2;
0x0007c1ec ldr r4, [pc, 0x110] | r4 = *(0x7c300);
0x0007c1ee sub sp, 0xac |
0x0007c1f0 movs r3, 0 | r3 = 0;
0x0007c1f2 mov r5, r1 | r5 = r1;
0x0007c1f4 ldr r2, [pc, 0x10c] |
0x0007c1f6 add r1, sp, 0x10 | r1 += var_10h;
0x0007c1f8 add r4, pc | r4 += pc;
0x0007c1fa ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x0007c1fc ldr r2, [r2] | r2 = *(0x7c304);
0x0007c1fe str r2, [sp, 0xa4] | var_a4h = r2;
0x0007c200 mov.w r2, 0 | r2 = 0;
0x0007c204 str r3, [sp, 0xc] | var_ch = r3;
0x0007c206 bl 0x7c0c0 | r0 = fcn_0007c0c0 (r0, r1);
0x0007c20a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007c20c blt 0x7c254 | goto label_0;
| }
0x0007c20e add r7, sp, 0xc | r7 += var_ch;
0x0007c210 ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x0007c214 mov.w r0, 0x2000 | r0 = 0x2000;
0x0007c218 str r7, [sp] | *(sp) = r7;
0x0007c21a invalid |
0x0007c21c strt r1, [r1, 4] | __asm ("strt r1, [var_14h]");
0x0007c220 blt 0x7c250 |
| while (r4 >= r0) {
0x0007c222 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0007c224 mov r7, r0 | r7 = r0;
| label_2:
0x0007c226 ldr r1, [pc, 0xe0] |
0x0007c228 movs r2, 1 | r2 = 1;
0x0007c22a add r1, pc | r1 = 0xf8538;
0x0007c22c bl 0x75208 | r0 = fcn_00075208 (r0, r1, r2);
0x0007c230 cmp r0, 0 |
| if (r0 == 0) {
0x0007c232 beq 0x7c2f0 | goto label_4;
| }
| if (r6 != 0) {
0x0007c234 cbz r6, 0x7c240 |
0x0007c236 blx 0x9200 | r0 = fcn_00009200 ();
0x0007c23a cmp r0, 0 |
| if (r0 == 0) {
0x0007c23c beq 0x7c2fa | goto label_5;
| }
0x0007c23e str r0, [r6] | *(r6) = r0;
| }
0x0007c240 mov r4, r5 | r4 = r5;
| if (r5 != 0) {
0x0007c242 cbz r5, 0x7c256 |
0x0007c244 ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x0007c248 movs r4, 0 | r4 = 0;
0x0007c24a strd r2, r3, [r5] | __asm ("strd r2, r3, [r5]");
0x0007c24e b 0x7c256 | goto label_3;
0x0007c250 adds r3, r4, 2 | r3 = r4 + 2;
| if (r3 == r4) {
0x0007c252 beq 0x7c276 | goto label_6;
| }
| label_0:
0x0007c254 ldr r7, [sp, 0xc] | r7 = var_ch;
| }
| label_3:
0x0007c256 mov r0, r7 | r0 = r7;
0x0007c258 blx 0x8dac | fcn_00008dac ();
0x0007c25c ldr r2, [pc, 0xac] |
0x0007c25e ldr r3, [pc, 0xa4] | r3 = *(0x7c306);
0x0007c260 add r2, pc | r2 = 0xf8570;
0x0007c262 ldr r3, [r2, r3] | r3 = *(0xf8570);
0x0007c264 ldr r2, [r3] | r2 = *(0xf8570);
0x0007c266 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0007c268 eors r2, r3 | r2 ^= r3;
0x0007c26a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007c26e bne 0x7c2f6 | goto label_7;
| }
0x0007c270 mov r0, r4 | r0 = r4;
0x0007c272 add sp, 0xac |
0x0007c274 pop {r4, r5, r6, r7, pc} |
| label_6:
0x0007c276 ldrd r2, r1, [sp, 0x10] | __asm ("ldrd r2, r1, [var_10h]");
0x0007c27a add r4, sp, 0x84 | r4 += var_84h;
0x0007c27c ldr r3, [pc, 0x90] |
0x0007c27e mov r0, r4 | r0 = r4;
0x0007c280 add r3, pc | r3 = 0xf8594;
0x0007c282 str r3, [sp] | *(sp) = r3;
0x0007c284 lsrs r3, r2, 0xc | r3 = r2 >> 0xc;
0x0007c286 uxtb r2, r2 | r2 = (int8_t) r2;
0x0007c288 orr.w r3, r3, r1, lsl 20 | r3 |= (r1 << 20);
0x0007c28c bic r3, r3, 0xff | r3 = BIT_MASK (r3, 0xff);
0x0007c290 orrs r2, r3 | r2 |= r3;
0x0007c292 movs r3, 0x20 | r3 = 0x20;
0x0007c294 mov r1, r3 | r1 = r3;
0x0007c296 str r2, [sp, 4] | var_4h = r2;
0x0007c298 movs r2, 1 | r2 = 1;
0x0007c29a blx 0x9110 | fcn_00009110 ();
0x0007c29e add r1, sp, 0x18 | r1 += var_18h;
0x0007c2a0 mov r0, r4 | r0 = r4;
0x0007c2a2 blx 0x8e3c | r0 = fcn_00008e3c ();
0x0007c2a6 cmp r0, 0 |
| if (r0 < 0) {
0x0007c2a8 blt 0x7c2ca | goto label_8;
| }
0x0007c2aa ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007c2ac ldr r2, [sp, 0x10] | r2 = var_10h;
0x0007c2ae and r1, r3, 0xf000 | r1 = r3 & 0xf000;
0x0007c2b2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007c2b4 cmp.w r1, 0x2000 |
| if (r1 == 0x2000) {
0x0007c2b8 beq 0x7c2de | goto label_9;
| }
| label_1:
0x0007c2ba mov.w r0, 0x2000 | r0 = 0x2000;
0x0007c2be str r7, [sp] | *(sp) = r7;
0x0007c2c0 bl 0x7a22c | r0 = fcn_0007a22c (r0, r1, r2, r3);
0x0007c2c4 subs r4, r0, 0 | r4 = r0 - 0;
0x0007c2c6 bge 0x7c222 |
| }
0x0007c2c8 b 0x7c254 | goto label_0;
| label_8:
0x0007c2ca blx 0x9628 | r0 = fcn_00009628 ();
0x0007c2ce ldr r4, [r0] | r4 = *(r0);
0x0007c2d0 cmp r4, 2 |
0x0007c2d2 ite eq |
| if (r4 == 2) {
0x0007c2d4 ldrdeq r2, r3, [sp, 0x10] | __asm ("ldrdeq r2, r3, [var_10h]");
| }
| if (r4 == 2) {
0x0007c2d8 rsbs r4, r4, 0 | r4 -= ;
| goto label_10;
| }
| if (r4 != 2) {
| label_10:
0x0007c2da bne 0x7c254 | goto label_0;
| }
0x0007c2dc b 0x7c2ba | goto label_1;
| label_9:
0x0007c2de ldrd r0, r1, [sp, 0x38] | __asm ("ldrd r0, r1, [var_38h]");
0x0007c2e2 cmp r1, r3 |
0x0007c2e4 it eq |
| if (r1 != r3) {
0x0007c2e6 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| goto label_11;
| }
| if (r1 != r3) {
| label_11:
0x0007c2e8 bne 0x7c2ba | goto label_1;
| }
0x0007c2ea ldr r7, [sp, 0xc] | r7 = var_ch;
0x0007c2ec mov r0, r4 | r0 = r4;
0x0007c2ee b 0x7c226 | goto label_2;
| label_4:
0x0007c2f0 mvn r4, 0x15 | r4 = ~0x15;
0x0007c2f4 b 0x7c256 | goto label_3;
| label_7:
0x0007c2f6 blx 0x927c | fprintf_chk ()
| label_5:
0x0007c2fa mvn r4, 0xb | r4 = ~0xb;
0x0007c2fe b 0x7c256 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7c5e4 */
| #include <stdint.h>
|
; (fcn) fcn.0007c5e4 () | void fcn_0007c5e4 (int16_t arg_178h, int16_t arg_1e0h, uint32_t arg1) {
| int16_t var_4h;
| int16_t var_ch;
| r0 = arg1;
0x0007c5e4 ldr r2, [pc, 0x60] |
0x0007c5e6 cmp r0, 8 |
0x0007c5e8 ldr r3, [pc, 0x60] | r3 = *(0x7c64c);
0x0007c5ea it eq |
| if (r0 != 8) {
0x0007c5ec moveq r0, 0 | r0 = 0;
| }
0x0007c5ee push {r4, lr} |
0x0007c5f0 sub sp, 0x10 |
0x0007c5f2 add r2, pc | r2 = 0xf8c3e;
0x0007c5f4 ldr r3, [r2, r3] |
0x0007c5f6 ldr r3, [r3] | r3 = *(0xf8c3e);
0x0007c5f8 str r3, [sp, 0xc] | var_ch = r3;
0x0007c5fa mov.w r3, 0 | r3 = 0;
| if (r0 != 8) {
0x0007c5fe beq 0x7c606 |
0x0007c600 cmp r0, 9 |
0x0007c602 it eq |
| if (r0 == 9) {
0x0007c604 moveq r0, 7 | r0 = 7;
| goto label_0;
| }
| }
| label_0:
0x0007c606 add r4, sp, 4 | r4 += var_4h;
0x0007c608 mov r1, r4 | r1 = r4;
0x0007c60a blx 0x8ae4 | r0 = sigismember ();
| if (r0 == 0) {
0x0007c60e cbnz r0, 0x7c62e |
0x0007c610 mov r0, r4 | r0 = r4;
0x0007c612 bl 0x7c590 | fcn_0007c590 (r0, r1);
0x0007c616 ldr r2, [pc, 0x38] |
0x0007c618 ldr r3, [pc, 0x30] | r3 = *(0x7c64c);
0x0007c61a add r2, pc | r2 = 0xf8c70;
0x0007c61c ldr r3, [r2, r3] | r3 = *(0xf8c70);
0x0007c61e ldr r2, [r3] | r2 = *(0xf8c70);
0x0007c620 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007c622 eors r2, r3 | r2 ^= r3;
0x0007c624 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007c628 bne 0x7c642 | goto label_1;
| }
0x0007c62a add sp, 0x10 |
0x0007c62c pop {r4, pc} |
| }
0x0007c62e ldr r1, [pc, 0x24] |
0x0007c630 movs r2, 0x35 | r2 = 0x35;
0x0007c632 ldr r3, [pc, 0x24] |
0x0007c634 ldr r0, [pc, 0x24] |
0x0007c636 add r1, pc | r1 = 0xf8c90;
0x0007c638 add r3, pc | r3 = 0xf8c96;
0x0007c63a adds r1, 7 | r1 += 7;
0x0007c63c add r0, pc | r0 = 0xf8c9c;
0x0007c63e bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_1:
0x0007c642 blx 0x927c | fprintf_chk ()
0x0007c646 nop |
0x0007c648 stm r4!, {r1, r4, r6, r7} | *(r4!) = r1;
| *((r4! + 4)) = r4;
| *((r4! + 8)) = r6;
| *((r4! + 12)) = r7;
0x0007c64a movs r4, r0 | r4 = r0;
0x0007c64c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007c64e movs r0, r0 |
0x0007c650 stm r4!, {r1, r3, r5, r7} | *(r4!) = r1;
| *((r4! + 4)) = r3;
| *((r4! + 8)) = r5;
| *((r4! + 12)) = r7;
0x0007c652 movs r4, r0 | r4 = r0;
0x0007c654 add r5, sp, 0x178 | r5 += arg_178h;
0x0007c656 movs r2, r0 | r2 = r0;
0x0007c658 sub sp, 0x20 |
0x0007c65a movs r2, r0 | r2 = r0;
0x0007c65c add r5, sp, 0x1e0 | r5 += arg_1e0h;
0x0007c65e movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7cd9c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007cd9c () | void fcn_0007cd9c (int16_t arg_90h, int16_t arg_98h, int16_t arg_130h, int16_t arg_1c8h, int16_t arg_220h, int16_t arg_3f8h, uint32_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_50h;
| r0 = arg1;
| r1 = arg2;
| label_9:
0x0007ca84 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0007ca88 sub sp, 0x34 |
0x0007ca8a strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [sp, 8]");
0x0007ca8e ldr r2, [pc, 0x2cc] |
0x0007ca90 ldr r3, [pc, 0x2cc] | r3 = *(0x7cd60);
0x0007ca92 str r1, [sp, 0x1c] | var_1ch = r1;
0x0007ca94 add r2, pc | r2 = 0xf97f6;
0x0007ca96 ldr r3, [r2, r3] |
0x0007ca98 ldr r3, [r3] | r3 = *(0xf97f6);
0x0007ca9a str r3, [sp, 0x2c] | var_2ch = r3;
0x0007ca9c mov.w r3, 0 | r3 = 0;
0x0007caa0 cmp r0, 0 |
| if (r0 == 0) {
0x0007caa2 beq.w 0x7cd10 | goto label_10;
| }
0x0007caa6 ldrd r3, r2, [sp, 8] | __asm ("ldrd r3, r2, [var_8h]");
0x0007caaa orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x0007caac beq.w 0x7cd26 | goto label_11;
| }
0x0007cab0 ldr r3, [pc, 0x2b0] |
0x0007cab2 mov r6, r0 | r6 = r0;
0x0007cab4 add r3, pc | r3 = 0xf981c;
0x0007cab6 mov r1, r3 | r1 = r3;
0x0007cab8 mov r4, r3 | r4 = r3;
0x0007caba str r3, [sp, 0x18] | var_18h = r3;
0x0007cabc blx 0x9428 | fcn_00009428 ();
0x0007cac0 ldr r1, [pc, 0x2a4] |
0x0007cac2 add r6, r0 | r6 += r0;
0x0007cac4 mov r0, r6 | r0 = r6;
0x0007cac6 add r1, pc | r1 = 0xf9832;
0x0007cac8 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x0007cacc mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0007cace cbz r0, 0x7cb0c |
0x0007cad0 mov r1, r4 | r1 = r4;
0x0007cad2 blx 0x9428 | fcn_00009428 ();
0x0007cad6 ldrb r0, [r5, r0] | r0 = *((r5 + r0));
0x0007cad8 cmp r0, 0 |
| if (r0 != 0) {
0x0007cada bne.w 0x7cc04 | goto label_7;
| }
0x0007cade ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0007cae0 cmp r3, 0 |
| if (r3 == 0) {
0x0007cae2 beq.w 0x7cc1a | goto label_8;
| }
0x0007cae6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0007cae8 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x0007caec vstr d16, [r3] | __asm ("vstr d16, [r3]");
| label_2:
0x0007caf0 ldr r2, [pc, 0x278] |
0x0007caf2 ldr r3, [pc, 0x26c] | r3 = *(0x7cd62);
0x0007caf4 add r2, pc | r2 = 0xf9864;
0x0007caf6 ldr r3, [r2, r3] | r3 = *(0xf9864);
0x0007caf8 ldr r2, [r3] | r2 = *(0xf9864);
0x0007cafa ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0007cafc eors r2, r3 | r2 ^= r3;
0x0007cafe mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007cb02 bne.w 0x7cd56 | goto label_12;
| }
0x0007cb06 add sp, 0x34 |
0x0007cb08 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0007cb0c ldr r3, [pc, 0x260] |
0x0007cb0e mov r4, r0 | r4 = r0;
0x0007cb10 mov fp, r0 |
0x0007cb12 add r3, pc | r3 = 0xf9886;
0x0007cb14 str r3, [sp, 0x24] | var_24h = r3;
0x0007cb16 ldr r3, [pc, 0x25c] |
0x0007cb18 add r3, pc | r3 = 0xf9892;
0x0007cb1a str r3, [sp, 0x20] | var_20h = r3;
| label_0:
0x0007cb1c mov r0, r6 | r0 = r6;
0x0007cb1e ldr r1, [sp, 0x18] | r1 = var_18h;
0x0007cb20 blx 0x9428 | fcn_00009428 ();
0x0007cb24 ldrb r3, [r6, r0] | r3 = *((r6 + r0));
0x0007cb26 add r6, r0 | r6 += r0;
0x0007cb28 cmp r3, 0 |
| if (r3 == 0) {
0x0007cb2a beq.w 0x7cd3c | goto label_13;
| }
0x0007cb2e cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x0007cb30 beq 0x7cc1e | goto label_4;
| }
0x0007cb32 blx 0x9628 | fcn_00009628 ();
0x0007cb36 movs r3, 0 | r3 = 0;
0x0007cb38 mov r5, r0 | r5 = r0;
0x0007cb3a str r3, [r0] | *(r0) = r3;
0x0007cb3c movs r2, 0xa | r2 = 0xa;
0x0007cb3e add r1, sp, 0x28 | r1 += var_28h;
0x0007cb40 mov r0, r6 | r0 = r6;
0x0007cb42 blx 0x8cfc | fcn_00008cfc ();
0x0007cb46 ldr r3, [r5] | r3 = *(r5);
0x0007cb48 mov r7, r0 | r7 = r0;
0x0007cb4a mov r8, r1 | r8 = r1;
0x0007cb4c cmp r3, 0 |
| if (r3 > 0) {
0x0007cb4e bgt.w 0x7cd52 | goto label_14;
| }
0x0007cb52 cmp r1, 0 |
| if (r1 < 0) {
0x0007cb54 blt 0x7cc1e | goto label_4;
| }
0x0007cb56 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007cb58 str r3, [sp, 4] | var_4h = r3;
0x0007cb5a ldrb r3, [r3] | r3 = *(r3);
0x0007cb5c cmp r3, 0x2e |
0x0007cb5e str r3, [sp, 0x10] | var_10h = r3;
0x0007cb60 ldr r3, [sp, 4] | r3 = var_4h;
| if (r3 == 0x2e) {
0x0007cb62 beq 0x7cc0a | goto label_15;
| }
0x0007cb64 cmp r3, r6 |
| if (r3 == r6) {
0x0007cb66 beq 0x7cc04 | goto label_7;
| }
0x0007cb68 mov sb, r3 | sb = r3;
| label_3:
0x0007cb6a ldr r1, [sp, 0x20] | r1 = var_20h;
0x0007cb6c mov r0, sb | r0 = sb;
0x0007cb6e blx 0x9428 | fcn_00009428 ();
0x0007cb72 ldr r5, [pc, 0x204] |
0x0007cb74 add.w r6, sb, r0 | r6 = sb + r0;
0x0007cb78 ldr r1, [pc, 0x200] |
0x0007cb7a mov.w sl, 0 | sl = 0;
0x0007cb7e add r5, pc | r5 = 0xf98fc;
0x0007cb80 add r1, pc | r1 = 0xf9900;
0x0007cb82 b 0x7cb92 |
| while (r0 == 0) {
0x0007cb84 add.w sl, sl, 1 | sl++;
0x0007cb88 cmp.w sl, 0x1d |
| if (sl == 0x1d) {
0x0007cb8c beq 0x7cbf6 | goto label_16;
| }
0x0007cb8e ldr r1, [r5, 0x10]! | r1 = *((r5 += 0x10));
0x0007cb92 mov r0, r6 | r0 = r6;
0x0007cb94 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x0007cb98 cmp r0, 0 |
0x0007cb9a beq 0x7cb84 |
| }
0x0007cb9c ldr r2, [pc, 0x1e0] |
0x0007cb9e mov r6, r0 | r6 = r0;
0x0007cba0 cmp sb, r6 |
0x0007cba2 add r2, pc | r2 = 0xf9926;
0x0007cba4 add.w r3, r2, sl, lsl 4 | r3 = r2 + (sl << 4);
0x0007cba8 ldrd r2, r5, [r3, 8] | __asm ("ldrd r2, r5, [r3, 8]");
| if (sb == r6) {
0x0007cbac beq 0x7cbfe | goto label_17;
| }
| do {
| label_1:
0x0007cbae mov r3, r5 | r3 = r5;
0x0007cbb0 mov.w r0, -1 | r0 = -1;
0x0007cbb4 mov.w r1, -1 | r1 = -1;
0x0007cbb8 str r2, [sp, 0x14] | var_14h = r2;
0x0007cbba bl 0x80fd8 | r0 = fcn_00080fd8 (r0, r1, r2, r3);
0x0007cbbe cmp r7, r0 |
0x0007cbc0 sbcs.w r1, r8, r1 | __asm ("sbcs.w r1, r8, r1");
| if (r7 >= r0) {
0x0007cbc4 bhs 0x7cc1e | goto label_4;
| }
0x0007cbc6 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0007cbc8 mul r3, r7, r5 | r3 = r7 * r5;
0x0007cbcc mvn.w r0, fp | r0 = ~fp;
0x0007cbd0 umull r1, r7, r7, r2 | r1:r7 = r7 * r2;
0x0007cbd4 mla r3, r2, r8, r3 | __asm ("mla r3, r2, r8, r3");
0x0007cbd8 add r3, r7 | r3 += r7;
0x0007cbda mvns r7, r4 | r7 = ~r4;
0x0007cbdc cmp r1, r7 |
0x0007cbde sbcs.w r0, r3, r0 | __asm ("sbcs.w r0, r3, r0");
| if (r1 >= r7) {
0x0007cbe2 bhs 0x7cc1e | goto label_4;
| }
0x0007cbe4 adds r1, r4, r1 | r1 = r4 + r1;
0x0007cbe6 adc.w fp, r3, fp | __asm ("adc.w fp, r3, fp");
0x0007cbea ldr r3, [sp, 0x10] | r3 = var_10h;
0x0007cbec mov r4, r1 | r4 = r1;
0x0007cbee cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x0007cbf0 beq 0x7cc24 | goto label_18;
| }
| label_6:
0x0007cbf2 movs r5, 1 | r5 = 1;
0x0007cbf4 b 0x7cb1c | goto label_0;
| label_16:
0x0007cbf6 cmp sb, r6 |
0x0007cbf8 ldrd r2, r5, [sp, 8] | __asm ("ldrd r2, r5, [var_8h]");
0x0007cbfc bne 0x7cbae |
| } while (sb != r6);
| label_17:
0x0007cbfe ldrb r3, [r6] | r3 = *(r6);
0x0007cc00 cmp r3, 0 |
| if (r3 == 0) {
0x0007cc02 beq 0x7cbae | goto label_1;
| }
| do {
| label_7:
0x0007cc04 mvn r0, 0x15 | r0 = ~0x15;
0x0007cc08 b 0x7caf0 | goto label_2;
| label_15:
0x0007cc0a add.w sb, r3, 1 | sb = r3 + 1;
0x0007cc0e ldr r1, [sp, 0x24] | r1 = var_24h;
0x0007cc10 mov r0, sb | r0 = sb;
0x0007cc12 blx 0x9428 | r0 = fcn_00009428 ();
0x0007cc16 add sb, r0 | sb += r0;
0x0007cc18 b 0x7cb6a | goto label_3;
| label_8:
0x0007cc1a movs r0, 0 | r0 = 0;
0x0007cc1c b 0x7caf0 | goto label_2;
| label_4:
0x0007cc1e mvn r0, 0x21 | r0 = ~0x21;
0x0007cc22 b 0x7caf0 | goto label_2;
| label_18:
0x0007cc24 adds r3, r2, r5 | r3 = r2 + r5;
0x0007cc26 movw ip, 0xcccd |
0x0007cc2a adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0007cc2e movt ip, 0xcccc | ip = 0xcccccccd;
0x0007cc32 umull r1, r0, ip, r3 | r1:r0 = ip * r3;
0x0007cc36 mov.w lr, -0x33333334 | lr = -0x33333334;
0x0007cc3a ldr r7, [sp, 4] | r7 = var_4h;
0x0007cc3c ldrb r1, [r7, 1] | r1 = *((r7 + 1));
0x0007cc3e adds r7, 1 | r7++;
0x0007cc40 bic r8, r0, 3 | r8 = BIT_MASK (r0, 3);
0x0007cc44 str r7, [sp, 4] | var_4h = r7;
0x0007cc46 add.w r8, r8, r0, lsr 2 | r8 += (r0 >> 2);
0x0007cc4a subs r1, 0x30 | r1 -= 0x30;
0x0007cc4c sub.w r3, r3, r8 | r3 -= r8;
0x0007cc50 uxtb r7, r1 | r7 = (int8_t) r1;
0x0007cc52 subs r3, r2, r3 | r3 = r2 - r3;
0x0007cc54 mul r2, lr, r3 | r2 = lr * r3;
0x0007cc58 sbc r5, r5, 0 | __asm ("sbc r5, r5, 0");
0x0007cc5c cmp r7, 9 |
0x0007cc5e mla r5, ip, r5, r2 | __asm ("mla r5, ip, r5, r2");
0x0007cc62 umull r2, r0, r3, ip | r2:r0 = r3 * ip;
0x0007cc66 lsr.w r3, r2, 1 | r3 = r2 >> 1;
0x0007cc6a add r0, r5 | r0 += r5;
0x0007cc6c orr.w r3, r3, r0, lsl 31 | r3 |= (r0 << 31);
0x0007cc70 lsr.w r0, r0, 1 | r0 >>= 1;
0x0007cc74 bhi 0x7cc04 |
| } while (r7 > 9);
0x0007cc76 mul r5, r1, r0 | r5 = r1 * r0;
0x0007cc7a asrs r2, r1, 0x1f | r2 = r1 >> 0x1f;
0x0007cc7c mvns r7, r4 | r7 = ~r4;
0x0007cc7e mla r5, r3, r2, r5 | __asm ("mla r5, r3, r2, r5");
0x0007cc82 umull r1, r2, r1, r3 | r1:r2 = r1 * r3;
0x0007cc86 add r2, r5 | r2 += r5;
0x0007cc88 cmp r1, r7 |
0x0007cc8a mvn.w r5, fp | r5 = ~fp;
0x0007cc8e sbcs.w r5, r2, r5 | __asm ("sbcs.w r5, r2, r5");
| if (r1 >= r7) {
0x0007cc92 bhs 0x7cc1e | goto label_4;
| }
0x0007cc94 mov r5, r3 | r5 = r3;
0x0007cc96 ldr.w r8, [sp, 4] | r8 = var_4h;
0x0007cc9a mov sb, ip | sb = ip;
0x0007cc9c mov r3, r2 | r3 = r2;
0x0007cc9e b 0x7ccbe | goto label_19;
| label_5:
0x0007cca0 mul r7, r2, r0 | r7 = r2 * r0;
0x0007cca4 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0007cca6 mla r7, r5, r3, r7 | __asm ("mla r7, r5, r3, r7");
0x0007ccaa umull r1, r3, r2, r5 | r1:r3 = r2 * r5;
0x0007ccae mvn.w r2, fp | r2 = ~fp;
0x0007ccb2 add r3, r7 | r3 += r7;
0x0007ccb4 mvns r7, r4 | r7 = ~r4;
0x0007ccb6 cmp r1, r7 |
0x0007ccb8 sbcs.w r2, r3, r2 | __asm ("sbcs.w r2, r3, r2");
| if (r1 >= r7) {
0x0007ccbc bhs 0x7cc1e | goto label_4;
| }
| label_19:
0x0007ccbe adds r2, r4, r1 | r2 = r4 + r1;
0x0007ccc0 adc.w fp, fp, r3 | __asm ("adc.w fp, fp, r3");
0x0007ccc4 adds r3, r5, r0 | r3 = r5 + r0;
0x0007ccc6 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0007ccca mov r4, r2 | r4 = r2;
0x0007cccc umull r1, sl, ip, r3 | r1:sl = ip * r3;
0x0007ccd0 ldrb r2, [r8, 1]! | r2 = *((r8 += 1));
0x0007ccd4 subs r2, 0x30 | r2 -= 0x30;
0x0007ccd6 uxtb r1, r2 | r1 = (int8_t) r2;
0x0007ccd8 bic r7, sl, 3 | r7 = BIT_MASK (sl, 3);
0x0007ccdc add.w r7, r7, sl, lsr 2 | r7 += (sl >> 2);
0x0007cce0 subs r3, r3, r7 | r3 -= r7;
0x0007cce2 subs r3, r5, r3 | r3 = r5 - r3;
0x0007cce4 sbc r5, r0, 0 | __asm ("sbc r5, r0, 0");
0x0007cce8 mul r0, lr, r3 | r0 = lr * r3;
0x0007ccec cmp r1, 9 |
0x0007ccee mla r0, ip, r5, r0 | __asm ("mla r0, ip, r5, r0");
0x0007ccf2 umull r3, r5, r3, sb | r3:r5 = r3 * sb;
0x0007ccf6 lsr.w r3, r3, 1 | r3 >>= 1;
0x0007ccfa add r0, r5 | r0 += r5;
0x0007ccfc orr.w r5, r3, r0, lsl 31 | r5 = r3 | (r0 << 31);
0x0007cd00 lsr.w r0, r0, 1 | r0 >>= 1;
| if (r1 < 9) {
0x0007cd04 bls 0x7cca0 | goto label_5;
| }
0x0007cd06 ldr r3, [sp, 4] | r3 = var_4h;
0x0007cd08 cmp r3, r8 |
| if (r3 != r8) {
0x0007cd0a bne.w 0x7cbf2 | goto label_6;
| }
0x0007cd0e b 0x7cc04 | goto label_7;
| label_10:
0x0007cd10 ldr r1, [pc, 0x70] |
0x0007cd12 mov.w r2, 0x3e8 | r2 = 0x3e8;
0x0007cd16 ldr r3, [pc, 0x70] |
0x0007cd18 ldr r0, [pc, 0x70] |
0x0007cd1a add r1, pc | r1 = 0xf9aa2;
0x0007cd1c add r3, pc | r3 = 0xf9aaa;
0x0007cd1e adds r1, 7 | r1 += 7;
0x0007cd20 add r0, pc | r0 = 0xf9ab0;
0x0007cd22 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_11:
0x0007cd26 ldr r1, [pc, 0x68] |
0x0007cd28 movw r2, 0x3e9 | r2 = 0x3e9;
0x0007cd2c ldr r3, [pc, 0x64] |
0x0007cd2e ldr r0, [pc, 0x68] |
0x0007cd30 add r1, pc | r1 = 0xf9ac6;
0x0007cd32 add r3, pc | r3 = 0xf9aca;
0x0007cd34 adds r1, 7 | r1 += 7;
0x0007cd36 add r0, pc | r0 = 0xf9ad4;
0x0007cd38 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_13:
0x0007cd3c cmp r5, 0 |
| if (r5 == 0) {
0x0007cd3e beq.w 0x7cc04 | goto label_7;
| }
0x0007cd42 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0007cd44 cmp r2, 0 |
| if (r2 == 0) {
0x0007cd46 beq.w 0x7cc1a | goto label_8;
| }
0x0007cd4a mov r0, r3 | r0 = r3;
0x0007cd4c strd r4, fp, [r2] | __asm ("strd r4, fp, [r2]");
0x0007cd50 b 0x7caf0 | goto label_2;
| label_14:
0x0007cd52 rsbs r0, r3, 0 | r0 = r3 - ;
0x0007cd54 b 0x7caf0 | goto label_2;
| label_12:
0x0007cd56 blx 0x927c | fprintf_chk ()
0x0007cd5a nop |
0x0007cd5c stm r0!, {r4, r5} | *(r0!) = r4;
| *((r0! + 4)) = r5;
0x0007cd5e movs r4, r0 | r4 = r0;
| do {
0x0007cd60 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007cd62 movs r0, r0 |
0x0007cd64 ldr r6, [sp, 0x220] | r6 = *(arg_220h);
0x0007cd66 movs r0, r0 |
0x0007cd68 ldr r5, [sp, 0x98] | r5 = *(arg_98h);
0x0007cd6a movs r2, r0 | r2 = r0;
0x0007cd6c hint 0xd | __asm ("hint 0xd");
0x0007cd6e movs r4, r0 | r4 = r0;
0x0007cd70 ldr r5, [sp, 0x1c8] | r5 = *(arg_1c8h);
0x0007cd72 movs r1, r0 | r1 = r0;
0x0007cd74 ldr r6, [sp, 0x90] | r6 = *(arg_90h);
0x0007cd76 movs r0, r0 |
| if (r6 == 0) {
0x0007cd78 cbz r6, 0x7cdea | goto label_20;
| }
0x0007cd7a movs r4, r0 | r4 = r0;
0x0007cd7c add r1, sp, 0x130 | r1 += arg_130h;
0x0007cd7e movs r2, r0 | r2 = r0;
| if (r2 == 0) {
0x0007cd80 cbz r2, 0x7cdea | goto label_20;
| }
0x0007cd82 movs r4, r0 | r4 = r0;
0x0007cd84 adr r6, 0x1e8 | r6 = 0x1e8;
0x0007cd86 movs r2, r0 | r2 = r0;
0x0007cd88 add r1, sp, 0x50 | r1 += var_50h;
0x0007cd8a movs r2, r0 | r2 = r0;
0x0007cd8c blo 0x7cd60 |
| } while (r2 <= r0);
0x0007cd8e movs r0, r0 |
0x0007cd90 adr r6, 0x190 | r6 = 0x190;
0x0007cd92 movs r2, r0 | r2 = r0;
0x0007cd94 add r0, sp, 0x3f8 | r0 += arg_3f8h;
0x0007cd96 movs r2, r0 | r2 = r0;
0x0007cd98 adr r7, 0x278 | r7 = 0x278;
0x0007cd9a movs r2, r0 | r2 = r0;
0x0007cd9c movw r2, 0x4240 |
0x0007cda0 movs r3, 0 | r3 = 0;
0x0007cda2 movt r2, 0xf | r2 = 0xf4240;
0x0007cda6 b.w 0x7ca84 | goto label_9;
| label_20:
0x0007cdea movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7ce58 */
| #include <stdint.h>
|
; (fcn) fcn.0007ce58 () | void fcn_0007ce58 (uint32_t arg1) {
| int16_t var_4h;
| int16_t var_ch;
| r0 = arg1;
0x0007ce58 ldr r2, [pc, 0x74] |
0x0007ce5a cmp r0, 7 |
0x0007ce5c ldr r3, [pc, 0x74] | r3 = *(0x7ced4);
0x0007ce5e push {r4, lr} |
0x0007ce60 sub sp, 0x10 |
0x0007ce62 add r2, pc | r2 = 0xf9d36;
0x0007ce64 ldr r3, [r2, r3] |
0x0007ce66 ldr r3, [r3] | r3 = *(0xf9d36);
0x0007ce68 str r3, [sp, 0xc] | var_ch = r3;
0x0007ce6a mov.w r3, 0 | r3 = 0;
| if (r0 == 7) {
0x0007ce6e beq 0x7ceae | goto label_1;
| }
0x0007ce70 mov r4, r0 | r4 = r0;
| if (r0 > 7) {
0x0007ce72 bgt 0x7ce94 | goto label_2;
| }
0x0007ce74 cmp r0, 1 |
0x0007ce76 it ls |
| if (r0 > 1) {
0x0007ce78 movls r0, 1 | r0 = 1;
| }
| if (r0 > 1) {
0x0007ce7a bhi 0x7cea0 | goto label_3;
| }
| do {
| label_0:
0x0007ce7c ldr r2, [pc, 0x58] |
0x0007ce7e ldr r3, [pc, 0x54] | r3 = *(0x7ced6);
0x0007ce80 add r2, pc | r2 = 0xf9d5c;
0x0007ce82 ldr r3, [r2, r3] | r3 = *(0xf9d5c);
0x0007ce84 ldr r2, [r3] | r2 = *(0xf9d5c);
0x0007ce86 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007ce88 eors r2, r3 | r2 ^= r3;
0x0007ce8a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007ce8e bne 0x7cecc | goto label_4;
| }
0x0007ce90 add sp, 0x10 |
0x0007ce92 pop {r4, pc} |
| label_2:
0x0007ce94 cmp r0, 9 |
| if (r0 != 9) {
0x0007ce96 bne 0x7cea0 | goto label_3;
| }
0x0007ce98 bl 0x7cdac | r0 = fcn_0007cdac ();
0x0007ce9c cmp r0, 0 |
0x0007ce9e beq 0x7ce7c |
| } while (r0 == 0);
| label_3:
0x0007cea0 add r1, sp, 4 | r1 += var_4h;
0x0007cea2 mov r0, r4 | r0 = r4;
0x0007cea4 blx 0x8ae4 | r0 = sigismember ();
0x0007cea8 mvns r0, r0 | r0 = ~r0;
0x0007ceaa lsrs r0, r0, 0x1f | r0 >>= 0x1f;
0x0007ceac b 0x7ce7c | goto label_0;
| label_1:
0x0007ceae ldr r2, [pc, 0x2c] |
0x0007ceb0 ldr r3, [pc, 0x20] | r3 = *(0x7ced4);
0x0007ceb2 add r2, pc | r2 = 0xf9d94;
0x0007ceb4 ldr r3, [r2, r3] | r3 = *(0xf9d94);
0x0007ceb6 ldr r2, [r3] | r2 = *(0xf9d94);
0x0007ceb8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007ceba eors r2, r3 | r2 ^= r3;
0x0007cebc mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0007cec0 bne 0x7cecc |
0x0007cec2 add sp, 0x10 |
0x0007cec4 pop.w {r4, lr} |
0x0007cec8 b.w 0x7cdac | void (*0x7cdac)() ();
| }
| label_4:
0x0007cecc blx 0x927c | fprintf_chk ()
0x0007ced0 pop {r1, r5, r6} |
0x0007ced2 movs r4, r0 | r4 = r0;
0x0007ced4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007ced6 movs r0, r0 |
0x0007ced8 pop {r2, r6} |
0x0007ceda movs r4, r0 | r4 = r0;
0x0007cedc pop {r1, r4} |
0x0007cede movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7ceec */
| #include <stdint.h>
|
; (fcn) fcn.0007ceec () | void fcn_0007ceec (int16_t arg_60h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_ch_2;
| int16_t var_14h_2;
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_ch_3;
| int16_t var_10h_2;
| int16_t var_28h;
| int16_t var_38h;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (? >= ?) {
0x0007ceec ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x0007cef0 mov r5, r1 | r5 = r1;
0x0007cef2 ldr r4, [pc, 0x188] |
0x0007cef4 mov r1, r3 | r1 = r3;
0x0007cef6 sub sp, 0x40 |
0x0007cef8 ldr r3, [pc, 0x184] | r3 = *(0x7d080);
0x0007cefa add r4, pc | r4 = 0xf9f7c;
0x0007cefc ldr r6, [sp, 0x60] | r6 = *(arg_60h);
0x0007cefe ldr r3, [r4, r3] |
0x0007cf00 ldr r3, [r3] | r3 = *(0xf9f7c);
0x0007cf02 str r3, [sp, 0x3c] | var_3ch = r3;
0x0007cf04 mov.w r3, 0 | r3 = 0;
0x0007cf08 cmp r0, 0 |
| if (arg_60h == ) {
0x0007cf0a beq.w 0x7d034 | goto label_1;
| }
0x0007cf0e cmp r6, 3 |
| if (r6 <= 3) {
0x0007cf10 bhi 0x7cffe |
0x0007cf12 ldr r3, [pc, 0x170] |
0x0007cf14 mov r4, r0 | r4 = r0;
0x0007cf16 ldr r0, [pc, 0x170] |
0x0007cf18 add r3, pc |
0x0007cf1a ldr.w r3, [r3, r6, lsl 2] | r3 = *(0xf9fa2);
0x0007cf1e add r0, pc | r0 = 0xf9fac;
0x0007cf20 ldrb r7, [r0, r6] | r7 = *((r0 + r6));
0x0007cf22 cmp r5, r3 |
| if (r5 <= r3) {
0x0007cf24 blo 0x7cffe | goto label_2;
| }
0x0007cf26 subs r0, r2, 1 | r0 = r2 - 1;
0x0007cf28 adc r3, r1, -1 | __asm ("adc r3, r1, -1");
0x0007cf2c adds r0, 2 | r0 += 2;
0x0007cf2e sbcs r3, r3, -1 | __asm ("sbcs r3, r3, -1");
| if (r0 >= 2) {
0x0007cf32 bhs 0x7cffe | goto label_2;
| }
0x0007cf34 movw r0, 0xbdc0 |
0x0007cf38 movw r3, 0xa11f |
0x0007cf3c movt r0, 0xfff0 | r0 = 0xfff0bdc0;
0x0007cf40 movt r3, 7 | r3 = 0x7a11f;
0x0007cf44 cmp r0, r2 |
0x0007cf46 sbcs r3, r1 | __asm ("sbcs r3, r1");
| if (r0 <= r2) {
0x0007cf48 blo 0x7d01c | goto label_3;
| }
0x0007cf4a mov r0, r2 | r0 = r2;
0x0007cf4c movw r2, 0x4240 |
0x0007cf50 add.w sl, sp, 0x10 | sl += var_10h_2;
0x0007cf54 movt r2, 0xf | r2 = 0xf4240;
0x0007cf58 movs r3, 0 | r3 = 0;
0x0007cf5a bl 0x80fd8 | fcn_00080fd8 (r0, r1, r2, r3);
0x0007cf5e mov r1, sl | r1 = sl;
0x0007cf60 mov sb, r2 | sb = r2;
0x0007cf62 str r0, [sp, 0xc] | var_ch_3 = r0;
0x0007cf64 mov r2, r7 | r2 = r7;
0x0007cf66 add r0, sp, 0xc | r0 += var_ch_3;
0x0007cf68 mov r8, r3 | r8 = r3;
0x0007cf6a bl 0x7cee0 | r0 = fcn_0007cee0 ();
0x0007cf6e cmp r0, 0 |
| if (r0 == 0) {
0x0007cf70 beq 0x7cffe | goto label_2;
| }
0x0007cf72 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0007cf74 cmp r2, 6 |
| if (r2 > 6) {
0x0007cf76 bhi 0x7d04e | goto label_4;
| }
0x0007cf78 ldr r1, [pc, 0x110] |
0x0007cf7a mov r0, r4 | r0 = r4;
0x0007cf7c mov r3, sl | r3 = sl;
0x0007cf7e add r1, pc | r1 = 0xfa00e;
0x0007cf80 ldr.w r2, [r1, r2, lsl 2] |
0x0007cf84 subs r1, r5, 3 | r1 = r5 - 3;
0x0007cf86 ldr r2, [r2] | r2 = *(0xfa00e);
0x0007cf88 str r2, [r0], 3 | *(r0) = r2;
| r0 += 3;
0x0007cf8c ldr r2, [pc, 0x100] |
0x0007cf8e add r2, pc | r2 = 0xfa022;
0x0007cf90 blx 0x93a4 | r0 = fcn_000093a4 ();
| if (r0 == 0) {
0x0007cf94 cbz r0, 0x7cffe | goto label_2;
| }
0x0007cf96 mov r0, r4 | r0 = r4;
0x0007cf98 blx 0x8f38 | fcn_00008f38 ();
0x0007cf9c lsls r3, r6, 0x1f | r3 = r6 << 0x1f;
| if (r3 < r6) {
0x0007cf9e bpl 0x7cfc0 |
0x0007cfa0 add.w r3, r0, 8 | r3 = r0 + 8;
0x0007cfa4 cmp r3, r5 |
| if (r3 > r5) {
0x0007cfa6 bhi 0x7cffe | goto label_2;
| }
0x0007cfa8 ldr r3, [pc, 0xe8] |
0x0007cfaa add r0, r4 | r0 += r4;
0x0007cfac mov.w r2, -1 | r2 = -1;
0x0007cfb0 movs r1, 1 | r1 = 1;
0x0007cfb2 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0007cfb6 add r3, pc | r3 = 0xfa04e;
0x0007cfb8 str.w r8, [sp, 4] | __asm ("str.w r8, [var_4h]");
0x0007cfbc blx 0x9494 | fcn_00009494 ();
| }
0x0007cfc0 mov r0, r4 | r0 = r4;
0x0007cfc2 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0007cfc6 mov r6, r0 | r6 = r0;
| if (r7 != 0) {
0x0007cfc8 cbz r7, 0x7cfe2 |
0x0007cfca adds r3, r0, 5 | r3 = r0 + 5;
0x0007cfcc cmp r3, r5 |
| if (r3 > r5) {
0x0007cfce bhi 0x7cffe | goto label_2;
| }
0x0007cfd0 ldr r3, [pc, 0xc4] |
0x0007cfd2 adds r2, r4, r0 | r2 = r4 + r0;
0x0007cfd4 mov r5, r4 | r5 = r4;
0x0007cfd6 add r3, pc | r3 = 0xfa072;
0x0007cfd8 ldr r0, [r3] | r0 = *(0xfa072);
0x0007cfda ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x0007cfdc str r0, [r4, r6] | *((r4 + r6)) = r0;
0x0007cfde strb r3, [r2, 4] | *((r2 + 4)) = r3;
0x0007cfe0 b 0x7d000 | goto label_0;
| }
0x0007cfe2 ldr r7, [sp, 0x38] | r7 = var_38h;
| if (r7 == 0) {
0x0007cfe4 cbz r7, 0x7d04a | goto label_5;
| }
0x0007cfe6 ldrb r3, [r7] | r3 = *(r7);
| if (r3 == 0) {
0x0007cfe8 cbz r3, 0x7d04a | goto label_5;
| }
0x0007cfea mov r0, r7 | r0 = r7;
0x0007cfec blx 0x8f38 | fcn_00008f38 ();
0x0007cff0 adds r3, r6, 2 | r3 = r6 + 2;
0x0007cff2 add r3, r0 | r3 += r0;
0x0007cff4 cmp r3, r5 |
| if (r3 < r5) {
0x0007cff6 bls 0x7d064 | goto label_6;
| }
0x0007cff8 adds r6, 8 | r6 += 8;
0x0007cffa cmp r6, r5 |
| if (r6 < r5) {
0x0007cffc bls 0x7d04a | goto label_5;
| }
| }
| label_2:
0x0007cffe movs r5, 0 | r5 = 0;
| do {
| label_0:
0x0007d000 ldr r2, [pc, 0x98] |
0x0007d002 ldr r3, [pc, 0x7c] | r3 = *(0x7d082);
0x0007d004 add r2, pc | r2 = 0xfa0a4;
0x0007d006 ldr r3, [r2, r3] | r3 = *(0xfa0a4);
0x0007d008 ldr r2, [r3] | r2 = *(0xfa0a4);
0x0007d00a ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0007d00c eors r2, r3 | r2 ^= r3;
0x0007d00e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007d012 bne 0x7d076 | goto label_7;
| }
0x0007d014 mov r0, r5 | r0 = r5;
0x0007d016 add sp, 0x40 |
0x0007d018 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x0007d01c ldr r6, [pc, 0x80] |
0x0007d01e mov r5, r4 | r5 = r4;
0x0007d020 add r6, pc | r6 = 0xfa0c4;
0x0007d022 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x0007d024 str r0, [r4] | *(r4) = r0;
0x0007d026 str r1, [r4, 4] | *((r4 + 4)) = r1;
0x0007d028 ldm r6!, {r0, r1} | r0 = *(r6!);
| r1 = *((r6! + 4));
0x0007d02a str r2, [r4, 8] | *((r4 + 8)) = r2;
0x0007d02c str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x0007d02e str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0007d030 str r1, [r4, 0x14] | *((r4 + 0x14)) = r1;
0x0007d032 b 0x7d000 |
| } while (1);
| label_1:
0x0007d034 ldr r1, [pc, 0x6c] |
0x0007d036 mov.w r2, 0x144 | r2 = 0x144;
0x0007d03a ldr r3, [pc, 0x6c] |
0x0007d03c ldr r0, [pc, 0x6c] |
0x0007d03e add r1, pc | r1 = 0xfa0e6;
0x0007d040 add r3, pc | r3 = 0xfa0ee;
0x0007d042 adds r1, 7 | r1 += 7;
0x0007d044 add r0, pc | r0 = 0xfa0f4;
0x0007d046 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_5:
0x0007d04a mov r5, r4 | r5 = r4;
0x0007d04c b 0x7d000 | goto label_0;
| label_4:
0x0007d04e ldr r1, [pc, 0x60] |
0x0007d050 mov.w r2, 0x16e | r2 = 0x16e;
0x0007d054 ldr r3, [pc, 0x5c] |
0x0007d056 ldr r0, [pc, 0x60] |
0x0007d058 add r1, pc | r1 = 0xfa10e;
0x0007d05a add r3, pc | r3 = 0xfa112;
0x0007d05c adds r1, 7 | r1 += 7;
0x0007d05e add r0, pc | r0 = 0xfa11c;
0x0007d060 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x0007d064 movs r3, 0x20 | r3 = 0x20;
0x0007d066 adds r0, r6, 1 | r0 = r6 + 1;
0x0007d068 mov r1, r7 | r1 = r7;
0x0007d06a add r0, r4 | r0 += r4;
0x0007d06c strb r3, [r4, r6] | *((r4 + r6)) = r3;
0x0007d06e mov r5, r4 | r5 = r4;
0x0007d070 blx 0x9050 | fcn_00009050 ();
0x0007d074 b 0x7d000 | goto label_0;
| label_7:
0x0007d076 blx 0x927c | fprintf_chk ()
0x0007d07a nop |
| if (r2 != 0) {
0x0007d07c cbnz r2, 0x7d0f2 | void (*0x7d0f2)() ();
| }
0x0007d07e movs r4, r0 | r4 = r0;
0x0007d080 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007d082 movs r0, r0 |
0x0007d084 adr r7, 0x10 | r7 = 0x10;
0x0007d086 movs r2, r0 | r2 = r0;
0x0007d088 adr r7, 0x38 | r7 = 0x38;
0x0007d08a movs r2, r0 | r2 = r0;
0x0007d08c sxth r6, r3 | __asm ("sxth r6, r3");
0x0007d08e movs r4, r0 | r4 = r0;
0x0007d090 adr r5, 0x278 | r5 = 0x278;
0x0007d092 movs r2, r0 | r2 = r0;
0x0007d094 adr r5, 0x228 | r5 = 0x228;
0x0007d096 movs r2, r0 | r2 = r0;
0x0007d098 adr r5, 0x1c8 | r5 = 0x1c8;
0x0007d09a movs r2, r0 | r2 = r0;
0x0007d09c revsh r0, r0 | __asm ("revsh r0, r0");
0x0007d09e movs r4, r0 | r4 = r0;
0x0007d0a0 adr r4, 0x320 | r4 = 0x320;
0x0007d0a2 movs r2, r0 | r2 = r0;
0x0007d0a4 adr r3, 0x158 | r3 = 0x158;
0x0007d0a6 movs r2, r0 | r2 = r0;
0x0007d0a8 adr r6, 0x30 | r6 = 0x30;
0x0007d0aa movs r2, r0 | r2 = r0;
0x0007d0ac lsls r0, r5, 3 | r0 = r5 << 3;
0x0007d0ae movs r1, r0 | r1 = r0;
0x0007d0b0 adr r3, 0xf0 | r3 = 0xf0;
0x0007d0b2 movs r2, r0 | r2 = r0;
0x0007d0b4 adr r5, 0x3c8 | r5 = 0x3c8;
0x0007d0b6 movs r2, r0 | r2 = r0;
0x0007d0b8 adr r4, 0x288 | r4 = 0x288;
0x0007d0ba movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7d114 */
| #include <stdint.h>
|
; (fcn) fcn.0007d114 () | void fcn_0007d114 (int16_t arg1, int16_t arg2, uint32_t arg3) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_4h;
| int16_t var_8h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0007d114 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0007d118 mov r7, r1 | r7 = r1;
0x0007d11a ldr r1, [pc, 0xe8] |
0x0007d11c sub sp, 0x18 |
0x0007d11e movs r5, 0 | r5 = 0;
0x0007d120 ldr r3, [pc, 0xe4] | r3 = *(0x7d208);
0x0007d122 add r1, pc | r1 = 0xfa32c;
0x0007d124 ldr r3, [r1, r3] |
0x0007d126 ldr r3, [r3] | r3 = *(0xfa32c);
0x0007d128 str r3, [sp, 0x14] | var_14h = r3;
0x0007d12a mov.w r3, 0 | r3 = 0;
0x0007d12e strd r5, r5, [sp, 0xc] | __asm ("strd r5, r5, [sp, 0xc]");
0x0007d132 cmp r2, 0 |
| if (r2 == 0) {
0x0007d134 beq 0x7d1d8 | goto label_4;
| }
0x0007d136 add.w r8, sp, 0xc | r8 += var_ch;
0x0007d13a mov sl, r0 | sl = r0;
0x0007d13c mov r1, r8 | r1 = r8;
0x0007d13e mov r6, r2 | r6 = r2;
0x0007d140 bl 0x75a54 | r0 = fcn_00075a54 (r0, r1);
0x0007d144 adds.w r3, r0, 0x59 | r3 = r0 + 0x59;
0x0007d148 mov r4, r0 | r4 = r0;
0x0007d14a it ne |
| if (r3 == r0) {
0x0007d14c movne r3, 1 | r3 = 1;
| }
0x0007d14e ands.w sb, r3, r0, lsr 31 | sb = r3 & (r0 >> 31);
0x0007d152 beq 0x7d182 |
| while (r4 < r0) {
| label_0:
0x0007d154 mov r0, r5 | r0 = r5;
0x0007d156 blx 0x8dac | fcn_00008dac ();
0x0007d15a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0007d15c blx 0x8dac | fcn_00008dac ();
0x0007d160 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0007d162 blx 0x8dac | fcn_00008dac ();
0x0007d166 ldr r2, [pc, 0xa4] |
0x0007d168 ldr r3, [pc, 0x9c] | r3 = *(0x7d208);
0x0007d16a add r2, pc | r2 = 0xfa37c;
0x0007d16c ldr r3, [r2, r3] | r3 = *(0xfa37c);
0x0007d16e ldr r2, [r3] | r2 = *(0xfa37c);
0x0007d170 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007d172 eors r2, r3 | r2 ^= r3;
0x0007d174 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007d178 bne 0x7d1fe | goto label_5;
| }
0x0007d17a mov r0, r4 | r0 = r4;
0x0007d17c add sp, 0x18 |
0x0007d17e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x0007d182 mov r0, sl | r0 = sl;
0x0007d184 add r1, sp, 0x10 | r1 += var_10h;
0x0007d186 bl 0x759c0 | r0 = fcn_000759c0 (r0, r1);
0x0007d18a subs r4, r0, 0 | r4 = r0 - 0;
0x0007d18c it lt |
| if (r4 >= r0) {
0x0007d18e movlt r5, sb | r5 = sb;
| }
0x0007d190 blt 0x7d154 |
| }
0x0007d192 cbz r7, 0x7d1ec |
| while (1) {
0x0007d194 ldr r3, [pc, 0x78] |
0x0007d196 movs r4, 0 | r4 = 0;
0x0007d198 ldr r0, [pc, 0x78] |
0x0007d19a mov r1, r7 | r1 = r7;
0x0007d19c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0007d19e add r3, pc | r3 = 0xfa3b2;
0x0007d1a0 str r4, [sp] | *(sp) = r4;
0x0007d1a2 add r0, pc | r0 = 0xfa3ba;
0x0007d1a4 bl 0x7a8a8 | r0 = fcn_0007a8a8 (r0, r1);
0x0007d1a8 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0007d1aa cbz r0, 0x7d1f8 | goto label_6;
| }
0x0007d1ac bl 0x75c84 | r0 = fcn_00075c84 (r0);
| if (r0 == 0) {
0x0007d1b0 cbz r0, 0x7d1f2 | goto label_7;
| }
0x0007d1b2 ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 != 0) {
0x0007d1b4 cbz r3, 0x7d1d0 |
0x0007d1b6 mov.w r2, -1 | r2 = -1;
0x0007d1ba mov r0, r8 | r0 = r8;
0x0007d1bc mov r1, r5 | r1 = r5;
0x0007d1be bl 0x74ccc | r0 = fcn_00074ccc ();
| if (r0 == 0) {
0x0007d1c2 cbz r0, 0x7d1f8 | goto label_6;
| }
0x0007d1c4 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0007d1c6 str r4, [sp, 0xc] | var_ch = r4;
0x0007d1c8 bl 0x75130 | fcn_00075130 (r0);
0x0007d1cc str r0, [r6] | *(r6) = r0;
0x0007d1ce b 0x7d154 | goto label_0;
| }
0x0007d1d0 str r5, [r6] | *(r6) = r5;
0x0007d1d2 mov r4, r3 | r4 = r3;
0x0007d1d4 mov r5, r3 | r5 = r3;
0x0007d1d6 b 0x7d154 | goto label_0;
| label_4:
0x0007d1d8 ldr r1, [pc, 0x3c] |
0x0007d1da movs r2, 0x64 | r2 = 0x64;
0x0007d1dc ldr r3, [pc, 0x3c] |
0x0007d1de ldr r0, [pc, 0x40] |
0x0007d1e0 add r1, pc | r1 = 0xfa3fc;
0x0007d1e2 add r3, pc | r3 = 0xfa402;
0x0007d1e4 adds r1, 7 | r1 += 7;
0x0007d1e6 add r0, pc | r0 = 0xfa40c;
0x0007d1e8 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
0x0007d1ec ldr r7, [pc, 0x34] |
0x0007d1ee add r7, pc | r7 = 0xfa416;
0x0007d1f0 b 0x7d194 |
| }
| label_7:
0x0007d1f2 mvn r4, 0x15 | r4 = ~0x15;
0x0007d1f6 b 0x7d154 | goto label_0;
| label_6:
0x0007d1f8 mvn r4, 0xb | r4 = ~0xb;
0x0007d1fc b 0x7d154 | goto label_0;
| label_5:
0x0007d1fe blx 0x927c | fprintf_chk ()
0x0007d202 nop |
| if (r2 == 0) {
0x0007d204 cbnz r2, 0x7d230 |
0x0007d206 movs r4, r0 | r4 = r0;
0x0007d208 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007d20a movs r0, r0 |
| if (r2 == 0) {
0x0007d20c cbnz r2, 0x7d226 |
0x0007d20e movs r4, r0 | r4 = r0;
0x0007d210 adr r5, 0x118 | r5 = 0x118;
0x0007d212 movs r2, r0 | r2 = r0;
0x0007d214 ldrh r2, [r3, 2] | r2 = *((r3 + 2));
0x0007d216 movs r2, r0 | r2 = r0;
0x0007d218 adr r4, 0x390 | r4 = 0x390;
0x0007d21a movs r2, r0 | r2 = r0;
0x0007d21c adr r5, 0x28 | r5 = 0x28;
0x0007d21e movs r2, r0 | r2 = r0;
0x0007d220 strb r6, [r1, 9] | *((r1 + 9)) = r6;
0x0007d222 movs r0, r0 |
0x0007d224 ldrsb r6, [r3, r3] | r6 = *((r3 + r3));
| }
0x0007d226 movs r0, r0 |
| }
0x0007d230 sub sp, 0x18 |
0x0007d232 movs r4, 0 | r4 = 0;
0x0007d234 mov.w r8, -1 | r8 = -1;
0x0007d238 ldr r3, [pc, 0xd4] |
0x0007d23a mov r7, r1 | r7 = r1;
0x0007d23c add r2, pc | r2 += pc;
0x0007d23e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007d240 ldr r3, [r3] | r3 = *(0x7d310);
0x0007d242 str r3, [sp, 0x14] | *((sp + 0x14)) = r3;
0x0007d244 mov.w r3, 0 | r3 = 0;
0x0007d248 strd r4, r4, [sp, 4] | __asm ("strd r4, r4, [sp, 4]");
0x0007d24c str.w r8, [sp, 0xc] | __asm ("str.w r8, [sp, 0xc]");
0x0007d250 cmp r0, 0 |
| if (r0 == 0) {
0x0007d252 beq 0x7d2d6 | goto label_8;
| }
0x0007d254 mov r1, r4 | r1 = r4;
0x0007d256 add r2, sp, 8 | r2 += var_8h;
0x0007d258 bl 0x7d114 | r0 = fcn_0007d114 (r0, r1, r2);
0x0007d25c subs r4, r0, 0 | r4 = r0 - 0;
0x0007d25e it ge |
| if (r4 < r0) {
0x0007d260 ldrge r0, [sp, 8] | r0 = var_8h;
| }
| if (r4 < r0) {
0x0007d262 blt 0x7d2e2 | goto label_3;
| }
| label_2:
0x0007d264 bl 0x7d0bc | r0 = fcn_0007d0bc (r0);
0x0007d268 cmp r0, 0 |
0x0007d26a mov r5, r0 | r5 = r0;
0x0007d26c str r0, [sp, 0xc] | *((sp + 0xc)) = r0;
| if (r0 < 0) {
0x0007d26e blt 0x7d2cc | goto label_9;
| }
0x0007d270 ldr r1, [pc, 0xa0] |
0x0007d272 add r2, sp, 4 | r2 += var_4h;
0x0007d274 add r0, sp, 0xc | r0 = sp + 0xc;
0x0007d276 add r1, pc | r1 = 0xfa58e;
0x0007d278 bl 0x6a5a8 | r0 = fcn_0006a5a8 (r0, r1, r2);
0x0007d27c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007d27e blt 0x7d300 | goto label_10;
| }
| if (r7 != 0) {
0x0007d280 cbz r7, 0x7d28a |
0x0007d282 ldr r3, [sp, 4] | r3 = var_4h;
0x0007d284 movs r2, 0 | r2 = 0;
0x0007d286 str r2, [sp, 4] | var_4h = r2;
0x0007d288 str r3, [r7] | *(r7) = r3;
| }
0x0007d28a ldr r5, [sp, 0xc] | r5 = *((sp + 0xc));
0x0007d28c mov r4, r6 | r4 = r6;
| if (r6 == 0) {
0x0007d28e cbz r6, 0x7d29a | goto label_1;
| }
0x0007d290 ldr r2, [sp, 8] | r2 = var_8h;
0x0007d292 movs r3, 0 | r3 = 0;
0x0007d294 mov r4, r3 | r4 = r3;
0x0007d296 str r3, [sp, 8] | var_8h = r3;
0x0007d298 str r2, [r6] | *(r6) = r2;
| do {
| label_1:
0x0007d29a mov r0, r5 | r0 = r5;
0x0007d29c bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007d2a0 ldr r0, [sp, 8] | r0 = var_8h;
0x0007d2a2 blx 0x8dac | fcn_00008dac ();
0x0007d2a6 movs r3, 0 | r3 = 0;
0x0007d2a8 ldr r0, [sp, 4] | r0 = var_4h;
0x0007d2aa str r3, [sp, 8] | var_8h = r3;
0x0007d2ac bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0007d2b0 ldr r2, [pc, 0x64] |
0x0007d2b2 ldr r3, [pc, 0x5c] | r3 = *(0x7d312);
0x0007d2b4 add r2, pc | r2 = 0xfa5d0;
0x0007d2b6 ldr r3, [r2, r3] | r3 = *(0xfa5d0);
0x0007d2b8 ldr r2, [r3] | r2 = *(0xfa5d0);
0x0007d2ba ldr r3, [sp, 0x14] | r3 = *((sp + 0x14));
0x0007d2bc eors r2, r3 | r2 ^= r3;
0x0007d2be mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007d2c2 bne 0x7d308 | goto label_11;
| }
0x0007d2c4 mov r0, r4 | r0 = r4;
0x0007d2c6 add sp, 0x18 |
0x0007d2c8 pop.w {r4, r5, r6, r7, r8, pc} |
| label_9:
0x0007d2cc blx 0x9628 | r0 = fcn_00009628 ();
0x0007d2d0 ldr r4, [r0] | r4 = *(r0);
0x0007d2d2 rsbs r4, r4, 0 | r4 -= ;
0x0007d2d4 b 0x7d29a |
| } while (1);
| label_8:
0x0007d2d6 mov r5, r0 | r5 = r0;
0x0007d2d8 add r0, sp, 0x10 | r0 = sp + 0x10;
0x0007d2da bl 0x6c7c8 | r0 = fcn_0006c7c8 (r0);
0x0007d2de subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007d2e0 bge 0x7d2e6 |
| label_3:
0x0007d2e2 ldr r5, [sp, 0xc] | r5 = *((sp + 0xc));
0x0007d2e4 b 0x7d29a | goto label_1;
| }
0x0007d2e6 ldr r2, [pc, 0x34] |
0x0007d2e8 mov r3, r8 | r3 = r8;
0x0007d2ea ldr r1, [sp, 0x10] | r1 = *((sp + 0x10));
0x0007d2ec mov r0, r5 | r0 = r5;
0x0007d2ee mvn r4, 0xb | r4 = ~0xb;
0x0007d2f2 add r2, pc | r2 = 0xfa614;
0x0007d2f4 bl 0x74ccc | fcn_00074ccc ();
0x0007d2f8 str r0, [sp, 8] | var_8h = r0;
0x0007d2fa cmp r0, 0 |
| if (r0 != 0) {
0x0007d2fc bne 0x7d264 | goto label_2;
| }
0x0007d2fe b 0x7d2e2 | goto label_3;
| label_10:
0x0007d300 ldr r0, [sp, 8] | r0 = var_8h;
0x0007d302 blx 0x8f68 | fcn_00008f68 ();
0x0007d306 b 0x7d2e2 | goto label_3;
| label_11:
0x0007d308 blx 0x927c | fprintf_chk ()
0x0007d30c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7d634 */
| #include <stdint.h>
|
; (fcn) fcn.0007d634 () | void fcn_0007d634 (uint32_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0007d634 blmi 0x100ff30 | __asm ("blmi aav.0x0004b486");
0x0007d638 push.w {r4, r5, r6, r7, r8, lr} |
0x0007d63c sub sp, 8 |
0x0007d63e add r2, pc | r2 += pc;
0x0007d640 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007d642 ldr r3, [r3] | r3 = *(r3);
0x0007d644 str r3, [sp, 4] | var_4h = r3;
0x0007d646 mov.w r3, 0 | r3 = 0;
0x0007d64a cmp r0, 0 |
| if (r0 == 0) {
0x0007d64c beq 0x7d6e4 | goto label_4;
| }
0x0007d64e ldrb r4, [r0] | r4 = *(r0);
0x0007d650 mvn r6, 0x15 | r6 = ~0x15;
0x0007d654 cbnz r4, 0x7d678 |
| while (r5 == 0) {
| label_0:
0x0007d656 mov r0, r4 | r0 = r4;
0x0007d658 blx 0x8dac | fcn_00008dac ();
0x0007d65c ldr r2, [pc, 0xd4] |
0x0007d65e ldr r3, [pc, 0xd0] | r3 = *(0x7d732);
0x0007d660 add r2, pc | r2 = 0xfad98;
0x0007d662 ldr r3, [r2, r3] | r3 = *(0xfad98);
0x0007d664 ldr r2, [r3] | r2 = *(0xfad98);
0x0007d666 ldr r3, [sp, 4] | r3 = var_4h;
0x0007d668 eors r2, r3 | r2 ^= r3;
0x0007d66a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007d66e bne 0x7d722 | goto label_5;
| }
0x0007d670 mov r0, r6 | r0 = r6;
0x0007d672 add sp, 8 |
0x0007d674 pop.w {r4, r5, r6, r7, r8, pc} |
0x0007d678 cmp r4, 0x2d |
0x0007d67a mov r5, r1 | r5 = r1;
| if (r4 != 0x2d) {
0x0007d67c bne 0x7d69e | goto label_6;
| }
0x0007d67e ldrb r3, [r0, 1] | r3 = *((r0 + 1));
| if (r3 != 0) {
0x0007d680 cbnz r3, 0x7d69e | goto label_6;
| }
0x0007d682 ldr r0, [pc, 0xb4] |
0x0007d684 add r0, pc | r0 = 0xfadc2;
0x0007d686 blx 0x9200 | r0 = fcn_00009200 ();
0x0007d68a mov r4, r0 | r4 = r0;
0x0007d68c cmp r0, 0 |
| if (r0 == 0) {
0x0007d68e beq 0x7d726 | goto label_7;
| }
| label_3:
0x0007d690 mov r6, r5 | r6 = r5;
0x0007d692 cmp r5, 0 |
0x0007d694 beq 0x7d656 |
| }
0x0007d696 str r4, [r5] | *(r5) = r4;
0x0007d698 movs r4, 0 | r4 = 0;
0x0007d69a mov r6, r4 | r6 = r4;
0x0007d69c b 0x7d656 | goto label_0;
| label_6:
0x0007d69e mov.w r8, 0 | r8 = 0;
0x0007d6a2 mov r1, sp | r1 = sp;
0x0007d6a4 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0007d6a8 bl 0x7d580 | r0 = fcn_0007d580 (r0, r1);
0x0007d6ac subs r6, r0, 0 | r6 = r0 - 0;
0x0007d6ae ldr r7, [sp] | r7 = *(sp);
| if (r6 < r0) {
0x0007d6b0 blt 0x7d6e0 | goto label_8;
| }
0x0007d6b2 ldr r6, [pc, 0x88] |
0x0007d6b4 mov r0, r7 | r0 = r7;
0x0007d6b6 add r6, pc | r6 = 0xfadf8;
0x0007d6b8 mov r1, r6 | r1 = r6;
0x0007d6ba bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x0007d6be mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0007d6c0 cbz r0, 0x7d6d0 | goto label_9;
| }
0x0007d6c2 mov r4, r8 | r4 = r8;
0x0007d6c4 mvn r6, 0x15 | r6 = ~0x15;
| do {
| label_1:
0x0007d6c8 mov r0, r7 | r0 = r7;
0x0007d6ca blx 0x8dac | fcn_00008dac ();
0x0007d6ce b 0x7d656 | goto label_0;
| label_9:
0x0007d6d0 mov r1, r6 | r1 = r6;
0x0007d6d2 mov r0, r7 | r0 = r7;
0x0007d6d4 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
| if (r0 == 0) {
0x0007d6d8 cbz r0, 0x7d6fa | goto label_10;
| }
| label_2:
0x0007d6da mvn r6, 0x15 | r6 = ~0x15;
0x0007d6de b 0x7d6c8 |
| } while (1);
| label_8:
0x0007d6e0 mov r4, r8 | r4 = r8;
0x0007d6e2 b 0x7d6c8 | goto label_1;
| label_4:
0x0007d6e4 ldr r1, [pc, 0x58] |
0x0007d6e6 mov.w r2, 0x19e | r2 = 0x19e;
0x0007d6ea ldr r3, [pc, 0x58] |
0x0007d6ec ldr r0, [pc, 0x58] |
0x0007d6ee add r1, pc | r1 = 0xfae32;
0x0007d6f0 add r3, pc | r3 = 0xfae3a;
0x0007d6f2 adds r1, 7 | r1 += 7;
0x0007d6f4 add r0, pc | r0 = 0xfae40;
0x0007d6f6 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_10:
0x0007d6fa mov r2, r4 | r2 = r4;
0x0007d6fc mov r1, r7 | r1 = r7;
0x0007d6fe mov r0, r6 | r0 = r6;
0x0007d700 bl 0x7a8a8 | r0 = fcn_0007a8a8 (r0, r1);
0x0007d704 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0007d706 cbz r0, 0x7d71a | goto label_11;
| }
0x0007d708 bl 0x75b1c | fcn_00075b1c (r0);
0x0007d70c ldr r7, [sp] | r7 = *(sp);
0x0007d70e cmp r0, 0 |
| if (r0 == 0) {
0x0007d710 beq 0x7d6da | goto label_2;
| }
0x0007d712 mov r0, r7 | r0 = r7;
0x0007d714 blx 0x8dac | fcn_00008dac ();
0x0007d718 b 0x7d690 | goto label_3;
| label_11:
0x0007d71a ldr r7, [sp] | r7 = *(sp);
0x0007d71c mvn r6, 0xb | r6 = ~0xb;
0x0007d720 b 0x7d6c8 | goto label_1;
| label_5:
0x0007d722 blx 0x927c | fprintf_chk ()
| label_7:
0x0007d726 mvn r6, 0xb | r6 = ~0xb;
0x0007d72a b 0x7d656 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7d74c */
| #include <stdint.h>
|
; (fcn) fcn.0007d74c () | void fcn_0007d74c (int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r1 = arg2;
0x0007d74c push {r4, r5, lr} |
0x0007d74e mov r5, r1 | r5 = r1;
0x0007d750 ldr r1, [pc, 0x64] |
0x0007d752 sub sp, 0xc |
0x0007d754 movs r3, 0 | r3 = 0;
0x0007d756 ldr r2, [pc, 0x64] | r2 = *(0x7d7be);
0x0007d758 add r1, pc | r1 = 0xfaf14;
0x0007d75a ldr r2, [r1, r2] |
0x0007d75c ldr r2, [r2] | r2 = *(0xfaf14);
0x0007d75e str r2, [sp, 4] | var_4h = r2;
0x0007d760 mov.w r2, 0 | r2 = 0;
0x0007d764 str r3, [sp] | *(sp) = r3;
| if (r0 != 0) {
0x0007d766 cbz r0, 0x7d79c |
0x0007d768 mov r1, sp | r1 = sp;
0x0007d76a bl 0x7d470 | r0 = fcn_0007d470 (r0, r1);
0x0007d76e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0007d770 blt 0x7d77c |
0x0007d772 ldr r0, [sp] | r0 = *(sp);
0x0007d774 mov r1, r5 | r1 = r5;
0x0007d776 bl 0x7d634 | r0 = fcn_0007d634 (r0, r1);
0x0007d77a mov r4, r0 | r4 = r0;
| }
0x0007d77c ldr r0, [sp] | r0 = *(sp);
0x0007d77e blx 0x8dac | fcn_00008dac ();
0x0007d782 ldr r2, [pc, 0x3c] |
0x0007d784 ldr r3, [pc, 0x34] | r3 = *(0x7d7bc);
0x0007d786 add r2, pc | r2 = 0xfaf4c;
0x0007d788 ldr r3, [r2, r3] | r3 = *(0xfaf4c);
0x0007d78a ldr r2, [r3] | r2 = *(0xfaf4c);
0x0007d78c ldr r3, [sp, 4] | r3 = var_4h;
0x0007d78e eors r2, r3 | r2 ^= r3;
0x0007d790 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007d794 bne 0x7d7b2 | goto label_0;
| }
0x0007d796 mov r0, r4 | r0 = r4;
0x0007d798 add sp, 0xc |
0x0007d79a pop {r4, r5, pc} |
| }
0x0007d79c ldr r1, [pc, 0x24] |
0x0007d79e movw r2, 0x241 | r2 = 0x241;
0x0007d7a2 ldr r3, [pc, 0x24] |
0x0007d7a4 ldr r0, [pc, 0x24] |
0x0007d7a6 add r1, pc | r1 = 0xfaf6e;
0x0007d7a8 add r3, pc | r3 = 0xfaf76;
0x0007d7aa adds r1, 7 | r1 += 7;
0x0007d7ac add r0, pc | r0 = 0xfaf7c;
0x0007d7ae bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_0:
0x0007d7b2 blx 0x927c | fprintf_chk ()
0x0007d7b6 nop |
| if (r4 != 0) {
0x0007d7b8 cbz r4, 0x7d816 |
0x0007d7ba movs r4, r0 | r4 = r0;
0x0007d7bc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007d7be movs r0, r0 |
| if (r6 != 0) {
0x0007d7c0 cbz r6, 0x7d812 |
0x0007d7c2 movs r4, r0 | r4 = r0;
0x0007d7c4 adr r5, 0x178 | r5 = 0x178;
0x0007d7c6 movs r2, r0 | r2 = r0;
0x0007d7c8 adr r6, 0x220 | r6 = 0x220;
0x0007d7ca movs r2, r0 | r2 = r0;
0x0007d7cc lsls r4, r1, 0x17 | r4 = r1 << 0x17;
0x0007d7ce movs r1, r0 | r1 = r0;
| }
| if (r1 < r0) {
0x0007d812 blt 0x7d826 | goto label_1;
| }
0x0007d814 ldr r0, [sp] | r0 = *(sp);
| }
0x0007d816 bl 0x7d7d0 | r0 = fcn_0007d7d0 (r0);
| if (r0 == 0) {
0x0007d81a cbz r0, 0x7d852 | goto label_2;
| }
0x0007d81c mov r0, r4 | r0 = r4;
| if (r4 == 0) {
0x0007d81e cbz r4, 0x7d826 | goto label_1;
| }
0x0007d820 ldr r3, [sp] | r3 = *(sp);
0x0007d822 mov r0, r5 | r0 = r5;
0x0007d824 str r3, [r4] | *(r4) = r3;
| do {
| label_1:
0x0007d826 ldr r2, [pc, 0x3c] |
0x0007d828 ldr r3, [pc, 0x34] | r3 = *(0x7d860);
0x0007d82a add r2, pc | r2 = 0xfb094;
0x0007d82c ldr r3, [r2, r3] | r3 = *(0xfb094);
0x0007d82e ldr r2, [r3] | r2 = *(0xfb094);
0x0007d830 ldr r3, [sp, 4] | r3 = var_4h;
0x0007d832 eors r2, r3 | r2 ^= r3;
0x0007d834 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007d838 bne 0x7d858 | goto label_3;
| }
0x0007d83a add sp, 0xc |
0x0007d83c pop {r4, r5, pc} |
| label_2:
0x0007d852 mvn r0, 5 | r0 = ~5;
0x0007d856 b 0x7d826 |
| } while (1);
| label_3:
0x0007d858 blx 0x927c | fprintf_chk ()
0x0007d85c uxtb r4, r2 | r4 = (int8_t) r2;
0x0007d85e movs r4, r0 | r4 = r0;
0x0007d860 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007d862 movs r0, r0 |
0x0007d864 uxth r2, r3 | r2 = (int16_t) r3;
0x0007d866 movs r4, r0 | r4 = r0;
0x0007d868 adr r5, 0x3f8 | r5 = 0x3f8;
0x0007d86a movs r2, r0 | r2 = r0;
0x0007d86c adr r7, 0x130 | r7 = 0x130;
0x0007d86e movs r2, r0 | r2 = r0;
0x0007d870 push {r3, r4, r5} |
0x0007d872 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7d874 */
| #include <stdint.h>
|
; (fcn) fcn.0007d874 () | void fcn_0007d874 (int16_t arg1) {
| int16_t var_24h;
| r0 = arg1;
0x0007d874 blmi 0x6500d4 | __asm ("blmi aav.0x0004b248");
0x0007d878 push {r4, lr} |
0x0007d87a sub sp, 0x28 |
0x0007d87c add r2, pc | r2 += pc;
0x0007d87e ldr.w lr, [pc, 0x58] |
0x0007d882 mov r4, r0 | r4 = r0;
0x0007d884 mov ip, sp |
0x0007d886 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007d888 add lr, pc | lr = 0xfb166;
0x0007d88a ldr r3, [r3] | r3 = *(r3);
0x0007d88c str r3, [sp, 0x24] | var_24h = r3;
0x0007d88e mov.w r3, 0 | r3 = 0;
0x0007d892 ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0007d896 stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0007d89a ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0007d89e stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0007d8a2 mov r1, r4 | r1 = r4;
0x0007d8a4 ldr.w r3, [lr] | r3 = *(0xfb166);
0x0007d8a8 mov r0, sp | r0 = sp;
0x0007d8aa str.w r3, [ip] | __asm ("str.w r3, [ip]");
0x0007d8ae bl 0x75cd8 | fcn_00075cd8 (r0, r1);
0x0007d8b2 ldr r2, [pc, 0x28] |
0x0007d8b4 ldr r3, [pc, 0x1c] | r3 = *(0x7d8d4);
0x0007d8b6 add r2, pc | r2 = 0xfb198;
0x0007d8b8 ldr r3, [r2, r3] | r3 = *(0xfb198);
0x0007d8ba ldr r2, [r3] | r2 = *(0xfb198);
0x0007d8bc ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007d8be eors r2, r3 | r2 ^= r3;
0x0007d8c0 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0007d8c4 bne 0x7d8ca |
0x0007d8c6 add sp, 0x28 |
0x0007d8c8 pop {r4, pc} |
| }
0x0007d8ca blx 0x927c | fprintf_chk ()
0x0007d8ce nop |
0x0007d8d0 sxtb r0, r1 | r0 = (int32_t) r1;
0x0007d8d2 movs r4, r0 | r4 = r0;
0x0007d8d4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007d8d6 movs r0, r0 |
| if (r0 == 0) {
0x0007d8d8 cbnz r0, 0x7d93e |
0x0007d8da movs r4, r0 | r4 = r0;
0x0007d8dc sxth r6, r1 | __asm ("sxth r6, r1");
0x0007d8de movs r4, r0 | r4 = r0;
| }
0x0007d93e mvn r4, 0x15 | r4 = ~0x15;
0x0007d942 mov r0, r5 | r0 = r5;
0x0007d944 blx 0x8dac | fcn_00008dac ();
0x0007d948 mov r0, r4 | r0 = r4;
0x0007d94a pop.w {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7d984 */
| #include <stdint.h>
|
; (fcn) fcn.0007d984 () | void fcn_0007d984 (int16_t arg1) {
| int16_t var_ch_2;
| int32_t var_0h_2;
| int32_t var_0h_3;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x0007d984 blmi 0x950214 | __asm ("blmi aav.0x0004b138");
0x0007d988 push {r4, r5, r6, lr} |
0x0007d98a mov r5, r0 | r5 = r0;
0x0007d98c add r2, pc | r2 += pc;
0x0007d98e sub sp, 8 |
0x0007d990 movs r4, 0 | r4 = 0;
0x0007d992 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007d994 ldr r3, [r3] | r3 = *(r3);
0x0007d996 str r3, [sp, 4] | var_4h = r3;
0x0007d998 mov.w r3, 0 | r3 = 0;
0x0007d99c str r4, [sp] | *(sp) = r4;
0x0007d99e blx 0x9658 | r0 = fcn_00009658 ();
0x0007d9a2 cmp r0, r5 |
| if (r0 == r5) {
0x0007d9a4 beq 0x7d9dc | goto label_2;
| }
0x0007d9a6 blx 0x90bc | r0 = fcn_000090bc ();
0x0007d9aa cmp r0, r5 |
| if (r0 == r5) {
0x0007d9ac beq 0x7d9dc | goto label_2;
| }
0x0007d9ae mov r0, r5 | r0 = r5;
0x0007d9b0 bl 0x7d7d0 | r0 = fcn_0007d7d0 (r0);
| if (r0 == 0) {
0x0007d9b4 cbz r0, 0x7da02 | goto label_3;
| }
0x0007d9b6 mov r0, sp | r0 = sp;
0x0007d9b8 bl 0x7d8e0 | fcn_0007d8e0 (r0);
0x0007d9bc subs r6, r0, 0 | r6 -= var_0h;
0x0007d9be ldr r0, [sp] | r0 = *(sp);
| if (r6 < var_0h) {
0x0007d9c0 blt 0x7d9e0 | goto label_0;
| }
| if (r6 == var_0h) {
0x0007d9c2 beq 0x7d9e0 | goto label_0;
| }
0x0007d9c4 subs r2, r0, 4 | r2 = r0 - 4;
0x0007d9c6 mov r3, r4 | r3 = r4;
0x0007d9c8 b 0x7d9d0 |
| while (r5 != r1) {
0x0007d9ca adds r3, 1 | r3++;
0x0007d9cc cmp r6, r3 |
| if (r6 == r3) {
0x0007d9ce beq 0x7d9fe | goto label_4;
| }
0x0007d9d0 ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x0007d9d4 cmp r5, r1 |
0x0007d9d6 bne 0x7d9ca |
| }
0x0007d9d8 movs r6, 1 | r6 = 1;
0x0007d9da b 0x7d9e0 | goto label_0;
| label_2:
0x0007d9dc ldr r0, [sp] | r0 = *(sp);
0x0007d9de movs r6, 1 | r6 = 1;
| do {
| label_0:
0x0007d9e0 blx 0x8dac | fcn_00008dac ();
0x0007d9e4 ldr r2, [pc, 0x30] |
0x0007d9e6 ldr r3, [pc, 0x2c] | r3 = *(0x7da16);
0x0007d9e8 add r2, pc | r2 = 0xfb404;
0x0007d9ea ldr r3, [r2, r3] | r3 = *(0xfb404);
0x0007d9ec ldr r2, [r3] | r2 = *(0xfb404);
0x0007d9ee ldr r3, [sp, 4] | r3 = var_4h;
0x0007d9f0 eors r2, r3 | r2 ^= r3;
0x0007d9f2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007d9f6 bne 0x7da0a | goto label_5;
| }
0x0007d9f8 mov r0, r6 | r0 = r6;
0x0007d9fa add sp, 8 |
0x0007d9fc pop {r4, r5, r6, pc} |
| label_4:
0x0007d9fe movs r6, 0 | r6 = 0;
0x0007da00 b 0x7d9e0 |
| } while (1);
| label_3:
0x0007da02 ldr r0, [sp] | r0 = *(sp);
0x0007da04 mvn r6, 0x15 | r6 = ~0x15;
0x0007da08 b 0x7d9e0 | goto label_0;
| label_5:
0x0007da0a blx 0x927c | fprintf_chk ()
0x0007da0e nop |
| if (r0 != 0) {
0x0007da10 cbz r0, 0x7da22 |
0x0007da12 movs r4, r0 | r4 = r0;
0x0007da14 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007da16 movs r0, r0 |
0x0007da18 sub sp, 0x170 |
0x0007da1a movs r4, r0 | r4 = r0;
0x0007da1c ldr r2, [pc, 0xb0] | r2 = *(0x7dad0);
0x0007da1e ldr r3, [pc, 0xb4] | r3 = *(0x7dad6);
0x0007da20 push {r4, r5, r6, r7, lr} |
| }
0x0007da22 sub sp, 0x14 |
0x0007da24 add r2, pc | r2 += pc;
0x0007da26 mov r6, r1 | r6 = r1;
0x0007da28 mov r4, r0 | r4 = r0;
0x0007da2a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007da2c ldr r3, [r3] | r3 = *(r3);
0x0007da2e str r3, [sp, 0xc] | var_ch = r3;
0x0007da30 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x0007da34 cbnz r0, 0x7da60 |
0x0007da36 ldr r0, [pc, 0xa0] |
0x0007da38 add r1, sp, 8 | r1 += var_8h;
0x0007da3a str r4, [sp, 8] | var_8h = r4;
0x0007da3c add r0, pc | r0 = 0xfb51a;
0x0007da3e bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007da42 adds r3, r0, 2 | r3 = r0 + 2;
0x0007da44 ldr r7, [sp, 8] | r7 = var_8h;
0x0007da46 mov r5, r0 | r5 = r0;
| if (r3 != r0) {
0x0007da48 beq 0x7da5a |
0x0007da4a cmp r0, 0 |
| if (r0 < 0) {
0x0007da4c blt 0x7daa0 | goto label_6;
| }
0x0007da4e ldr r1, [pc, 0x8c] |
0x0007da50 mov r0, r7 | r0 = r7;
0x0007da52 add r1, pc | r1 = 0xfb534;
0x0007da54 blx 0x95e0 | r0 = fcn_000095e0 ();
| if (r0 != 0) {
0x0007da58 cbnz r0, 0x7da94 | goto label_7;
| }
| }
0x0007da5a mov r0, r7 | r0 = r7;
0x0007da5c blx 0x8dac | fcn_00008dac ();
| }
0x0007da60 mov r1, r6 | r1 = r6;
0x0007da62 mov r0, r4 | r0 = r4;
0x0007da64 blx 0x8a50 | r0 = fcn_00008a50 ();
0x0007da68 cmp r0, 0 |
0x0007da6a it ge |
| if (r0 < 0) {
0x0007da6c movge r5, 0 | r5 = 0;
| }
0x0007da6e blt 0x7da8a |
| while (1) {
| label_1:
0x0007da70 ldr r2, [pc, 0x6c] |
0x0007da72 ldr r3, [pc, 0x60] | r3 = *(0x7dad6);
0x0007da74 add r2, pc | r2 = 0xfb558;
0x0007da76 ldr r3, [r2, r3] | r3 = *(0xfb558);
0x0007da78 ldr r2, [r3] | r2 = *(0xfb558);
0x0007da7a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007da7c eors r2, r3 | r2 ^= r3;
0x0007da7e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007da82 bne 0x7dacc | goto label_8;
| }
0x0007da84 mov r0, r5 | r0 = r5;
0x0007da86 add sp, 0x14 |
0x0007da88 pop {r4, r5, r6, r7, pc} |
0x0007da8a blx 0x9628 | r0 = fcn_00009628 ();
0x0007da8e ldr r5, [r0] | r5 = *(r0);
0x0007da90 rsbs r5, r5, 0 | r5 -= ;
0x0007da92 b 0x7da70 |
| }
| label_7:
0x0007da94 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007da98 cmp r0, 6 |
0x0007da9a it le |
| if (r0 > 6) {
0x0007da9c movle r5, r4 | r5 = r4;
| }
0x0007da9e bgt 0x7daa8 |
| while (1) {
| label_6:
0x0007daa0 mov r0, r7 | r0 = r7;
0x0007daa2 blx 0x8dac | fcn_00008dac ();
0x0007daa6 b 0x7da70 | goto label_1;
0x0007daa8 ldr r2, [pc, 0x38] |
0x0007daaa movw r3, 0x3ad | r3 = 0x3ad;
0x0007daae ldr r0, [pc, 0x38] |
0x0007dab0 mov r5, r4 | r5 = r4;
0x0007dab2 ldr r1, [pc, 0x38] |
0x0007dab4 add r2, pc | r2 = 0xfb59c;
0x0007dab6 add r0, pc | r0 = 0xfb5a4;
0x0007dab8 adds r2, 7 | r2 += 7;
0x0007daba add r1, pc | r1 = 0xfb5ac;
0x0007dabc strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0007dac0 mov r1, r4 | r1 = r4;
0x0007dac2 movs r0, 7 | r0 = 7;
0x0007dac4 bl 0x71448 | fcn_00071448 ();
0x0007dac8 ldr r7, [sp, 8] | r7 = var_8h;
0x0007daca b 0x7daa0 |
| }
| label_8:
0x0007dacc blx 0x927c | fprintf_chk ()
0x0007dad0 sub sp, 0x80 |
0x0007dad2 movs r4, r0 | r4 = r0;
0x0007dad4 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007dad6 movs r0, r0 |
0x0007dad8 adr r4, 0xa0 | r4 = 0xa0;
0x0007dada movs r2, r0 | r2 = r0;
0x0007dadc adr r4, 0xa8 | r4 = 0xa8;
0x0007dade movs r2, r0 | r2 = r0;
0x0007dae0 add sp, 0x140 |
0x0007dae2 movs r4, r0 | r4 = r0;
0x0007dae4 adr r3, 0x240 | r3 = 0x240;
0x0007dae6 movs r2, r0 | r2 = r0;
0x0007dae8 adr r3, 0x338 | r3 = 0x338;
0x0007daea movs r2, r0 | r2 = r0;
0x0007daec adr r4, 0x398 | r4 = 0x398;
0x0007daee movs r2, r0 | r2 = r0;
0x0007daf0 movs r1, 0 | r1 = 0;
0x0007daf2 push {r3, lr} |
0x0007daf4 mov r0, r1 | r0 = r1;
0x0007daf6 bl 0x7da1c | r0 = void (*0x7da1c)(uint32_t) (r0);
0x0007dafa cmp r0, 0 |
| if (r0 >= 0) {
0x0007dafc blt 0x7db1e |
0x0007dafe movs r2, 0 | r2 = 0;
0x0007db00 mov r1, r2 | r1 = r2;
0x0007db02 mov r0, r2 | r0 = r2;
0x0007db04 blx 0x8fd8 | r0 = fcn_00008fd8 ();
0x0007db08 cmp r0, 0 |
| if (r0 < 0) {
0x0007db0a blt 0x7db20 | goto label_9;
| }
0x0007db0c movs r2, 0 | r2 = 0;
0x0007db0e mov r1, r2 | r1 = r2;
0x0007db10 mov r0, r2 | r0 = r2;
0x0007db12 blx 0x9570 | r0 = memchr (r0, r1, r2);
0x0007db16 cmp r0, 0 |
0x0007db18 it ge |
| if (r0 < 0) {
0x0007db1a movge r0, 0 | r0 = 0;
| }
| if (r0 < 0) {
0x0007db1c blt 0x7db20 | goto label_9;
| }
| }
0x0007db1e pop {r3, pc} |
| label_9:
0x0007db20 blx 0x9628 | r0 = fcn_00009628 ();
0x0007db24 ldr r0, [r0] | r0 = *(r0);
0x0007db26 rsbs r0, r0, 0 | r0 -= ;
0x0007db28 pop {r3, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7db58 */
| #include <stdint.h>
|
; (fcn) fcn.0007db58 () | void fcn_0007db58 (int16_t arg_38h, int16_t arg_3ch, int16_t arg_168h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0007db58 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0007db5c mov r7, r2 | r7 = r2;
0x0007db5e ldr r2, [pc, 0xf0] |
0x0007db60 mov r6, r3 | r6 = r3;
0x0007db62 sub sp, 0x14 |
0x0007db64 mov r5, r0 | r5 = r0;
0x0007db66 ldr r3, [pc, 0xec] | r3 = *(0x7dc56);
0x0007db68 mov r8, r1 | r8 = r1;
0x0007db6a add r2, pc | r2 = 0xfb7c0;
0x0007db6c ldr.w sl, [pc, 0xe8] |
0x0007db70 mov r4, sp | r4 = sp;
0x0007db72 ldr.w fp, [sp, 0x38] | fp = *(arg_38h);
0x0007db76 ldr r3, [r2, r3] |
0x0007db78 add sl, pc | sl = 0xfb7d4;
0x0007db7a ldr r3, [r3] | r3 = *(0xfb7c0);
0x0007db7c str r3, [sp, 0xc] | var_ch = r3;
0x0007db7e mov.w r3, 0 | r3 = 0;
0x0007db82 add.w r3, sl, 0x24 | r3 = sl + 0x24;
0x0007db86 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0007db8a stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x0007db8e mov r0, r4 | r0 = r4;
0x0007db90 ldr r1, [r5] | r1 = *(r5);
0x0007db92 bl 0x7af74 | r0 = fcn_0007af74 (r0, r1);
| if (r0 == 0) {
0x0007db96 cbz r0, 0x7dbe2 | goto label_2;
| }
0x0007db98 ldr r3, [pc, 0xc0] |
0x0007db9a add r3, pc | r3 = 0xfb7fa;
0x0007db9c str r3, [r5] | *(r5) = r3;
0x0007db9e cmp.w r8, 0 |
| if (r8 != 0) {
0x0007dba2 beq 0x7dbaa |
0x0007dba4 movs r3, 0 | r3 = 0;
0x0007dba6 str.w r3, [r8] | __asm ("str.w r3, [r8]");
| }
| if (r7 != 0) {
0x0007dbaa cbz r7, 0x7dbb0 |
0x0007dbac movs r3, 0 | r3 = 0;
0x0007dbae str r3, [r7] | *(r7) = r3;
| }
| if (r6 != 0) {
0x0007dbb0 cbz r6, 0x7dbb8 |
0x0007dbb2 ldr r3, [pc, 0xac] |
0x0007dbb4 add r3, pc | r3 = 0xfb81a;
0x0007dbb6 str r3, [r6] | *(r6) = r3;
| }
0x0007dbb8 cmp.w fp, 0 |
| if (fp == 0) {
0x0007dbbc beq 0x7dbc6 | goto label_0;
| }
0x0007dbbe ldr r3, [pc, 0xa4] |
0x0007dbc0 add r3, pc | r3 = 0xfb82a;
0x0007dbc2 str.w r3, [fp] | __asm ("str.w r3, [fp]");
| do {
| label_0:
0x0007dbc6 movs r0, 0 | r0 = 0;
| label_1:
0x0007dbc8 ldr r2, [pc, 0x9c] |
0x0007dbca ldr r3, [pc, 0x88] | r3 = *(0x7dc56);
0x0007dbcc add r2, pc | r2 = 0xfb838;
0x0007dbce ldr r3, [r2, r3] | r3 = *(0xfb838);
0x0007dbd0 ldr r2, [r3] | r2 = *(0xfb838);
0x0007dbd2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007dbd4 eors r2, r3 | r2 ^= r3;
0x0007dbd6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007dbda bne 0x7dc4c | goto label_3;
| }
0x0007dbdc add sp, 0x14 |
0x0007dbde pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0007dbe2 mov sb, r0 | sb = r0;
0x0007dbe4 bl 0x7db2c | r0 = fcn_0007db2c ();
| if (r0 == 0) {
0x0007dbe8 cbz r0, 0x7dc46 | goto label_4;
| }
0x0007dbea add.w sl, sl, 0x30 | sl += 0x30;
0x0007dbee ldm.w sl, {r0, r1, r2} | r0 = *(sl);
| r1 = *((sl + 4));
| r2 = *((sl + 8));
0x0007dbf2 stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x0007dbf6 mov r0, r4 | r0 = r4;
0x0007dbf8 ldr r1, [r5] | r1 = *(r5);
0x0007dbfa bl 0x7af74 | r0 = fcn_0007af74 (r0, r1);
| if (r0 == 0) {
0x0007dbfe cbz r0, 0x7dc46 | goto label_4;
| }
0x0007dc00 ldr r3, [pc, 0x68] |
0x0007dc02 add r3, pc | r3 = 0xfb872;
0x0007dc04 str r3, [r5] | *(r5) = r3;
0x0007dc06 cmp.w r8, 0 |
| if (r8 != 0) {
0x0007dc0a beq 0x7dc14 |
0x0007dc0c movw r3, 0xfffe | r3 = 0xfffe;
0x0007dc10 str.w r3, [r8] | __asm ("str.w r3, [r8]");
| }
| if (r7 != 0) {
0x0007dc14 cbz r7, 0x7dc1c |
0x0007dc16 movw r3, 0xfffe | r3 = 0xfffe;
0x0007dc1a str r3, [r7] | *(r7) = r3;
| }
| if (r6 != 0) {
0x0007dc1c cbz r6, 0x7dc2e |
0x0007dc1e ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007dc20 lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
0x0007dc22 it mi |
| if (r2 >= r3) {
0x0007dc24 movmi r3, 0 | r3 = 0;
| }
| if (r2 >= r3) {
0x0007dc26 bmi 0x7dc2c |
0x0007dc28 ldr r3, [pc, 0x44] |
0x0007dc2a add r3, pc | r3 = 0xfb89e;
| }
0x0007dc2c str r3, [r6] | *(r6) = r3;
| }
0x0007dc2e cmp.w fp, 0 |
0x0007dc32 beq 0x7dbc6 |
| } while (fp == 0);
0x0007dc34 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007dc36 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x0007dc38 bmi 0x7dc40 |
0x0007dc3a ldr.w sb, [pc, 0x38] |
0x0007dc3e add sb, pc | sb = 0xfb8b8;
| }
0x0007dc40 str.w sb, [fp] | __asm ("str.w sb, [fp]");
0x0007dc44 b 0x7dbc6 | goto label_0;
| label_4:
0x0007dc46 mvn r0, 0x7a | r0 = ~0x7a;
0x0007dc4a b 0x7dbc8 | goto label_1;
| label_3:
0x0007dc4c blx 0x927c | fprintf_chk ()
0x0007dc50 add r7, sp, 0x168 | r7 += arg_168h;
0x0007dc52 movs r4, r0 | r4 = r0;
0x0007dc54 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007dc56 movs r0, r0 |
0x0007dc58 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7dc78 */
| #include <stdint.h>
|
; (fcn) fcn.0007dc78 () | void fcn_0007dc78 (int16_t arg_38h, int16_t arg_3ch, int16_t arg_e0h, int16_t arg_f8h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_14h;
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0007dc78 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0007dc7c mov r7, r2 | r7 = r2;
0x0007dc7e ldr r2, [pc, 0x1e4] |
0x0007dc80 mov r5, r3 | r5 = r3;
0x0007dc82 sub sp, 0x14 |
0x0007dc84 ldr r3, [pc, 0x1e0] | r3 = *(0x7de68);
0x0007dc86 add r2, pc | r2 = 0xfbaf0;
0x0007dc88 ldr.w sl, [sp, 0x38] | sl = *(arg_38h);
0x0007dc8c ldr r3, [r2, r3] |
0x0007dc8e ldr r3, [r3] | r3 = *(0xfbaf0);
0x0007dc90 str r3, [sp, 0xc] | var_ch = r3;
0x0007dc92 mov.w r3, 0 | r3 = 0;
0x0007dc96 mov.w r3, -1 | r3 = -1;
0x0007dc9a str r3, [sp, 8] | var_8h = r3;
0x0007dc9c cmp r0, 0 |
| if (arg_38h == ) {
0x0007dc9e beq.w 0x7de04 | goto label_9;
| }
0x0007dca2 mov r4, r0 | r4 = r0;
0x0007dca4 ldr r0, [r0] | r0 = *(r0);
0x0007dca6 cmp r0, 0 |
| if (arg_38h == ) {
0x0007dca8 beq.w 0x7de18 | goto label_10;
| }
0x0007dcac ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007dcae mov r8, r1 | r8 = r1;
0x0007dcb0 ands fp, r3, 1 |
| if (fp == r3) {
0x0007dcb4 beq 0x7dd30 | goto label_11;
| }
0x0007dcb6 orrs.w r3, r5, sl | r3 = r5 | sl;
0x0007dcba beq 0x7dd30 |
| while (1) {
0x0007dcbc add r1, sp, 8 | r1 += var_8h;
0x0007dcbe bl 0x7d7e8 | r0 = fcn_0007d7e8 (r0, r1);
0x0007dcc2 mov r6, r0 | r6 = r0;
0x0007dcc4 blx 0x9628 | fcn_00009628 ();
0x0007dcc8 cmp r6, 0 |
0x0007dcca mov.w r2, 0 | r2 = 0;
0x0007dcce mov sb, r0 | sb = r0;
0x0007dcd0 str r2, [r0] | *(r0) = r2;
| if (r6 < 0) {
0x0007dcd2 blt 0x7dd50 | goto label_12;
| }
0x0007dcd4 ldr r0, [sp, 8] | r0 = var_8h;
0x0007dcd6 blx 0x8fc0 | r0 = fcn_00008fc0 ();
0x0007dcda mov r6, r0 | r6 = r0;
0x0007dcdc cmp r0, 0 |
| if (r0 == 0) {
0x0007dcde beq 0x7dda4 | goto label_13;
| }
0x0007dce0 ldr r3, [r0] | r3 = *(r0);
0x0007dce2 str r3, [r4] | *(r4) = r3;
| label_0:
0x0007dce4 cmp.w r8, 0 |
| if (r8 != 0) {
0x0007dce8 beq 0x7dcfc |
0x0007dcea ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x0007dcec bl 0x7d7d0 | r0 = fcn_0007d7d0 (r0);
0x0007dcf0 cmp r0, 0 |
| if (r0 == 0) {
0x0007dcf2 beq.w 0x7de44 | goto label_14;
| }
0x0007dcf6 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0007dcf8 str.w r3, [r8] | __asm ("str.w r3, [r8]");
| }
| if (r7 != 0) {
0x0007dcfc cbz r7, 0x7dd0e |
0x0007dcfe ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0007dd00 bl 0x7d7d0 | r0 = fcn_0007d7d0 (r0);
0x0007dd04 cmp r0, 0 |
| if (r0 == 0) {
0x0007dd06 beq.w 0x7de44 | goto label_14;
| }
0x0007dd0a ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0007dd0c str r3, [r7] | *(r7) = r3;
| }
| if (r5 != 0) {
0x0007dd0e cbz r5, 0x7dd1a |
0x0007dd10 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007dd12 ldr r4, [r6, 0x14] | r4 = *((r6 + 0x14));
0x0007dd14 lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 < r3) {
0x0007dd16 bmi 0x7ddc4 | goto label_15;
| }
| label_8:
0x0007dd18 str r4, [r5] | *(r5) = r4;
| }
0x0007dd1a cmp.w sl, 0 |
| if (sl == 0) {
0x0007dd1e beq 0x7dd86 | goto label_2;
| }
0x0007dd20 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007dd22 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 < r3) {
0x0007dd24 bmi 0x7ddd6 | goto label_16;
| }
| label_6:
0x0007dd26 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0007dd28 movs r6, 0 | r6 = 0;
0x0007dd2a str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x0007dd2e b 0x7dd88 | goto label_3;
| label_11:
0x0007dd30 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007dd32 mov r2, r7 | r2 = r7;
0x0007dd34 mov r1, r8 | r1 = r8;
0x0007dd36 mov r0, r4 | r0 = r4;
0x0007dd38 strd sl, r3, [sp] | __asm ("strd sl, r3, [sp]");
0x0007dd3c mov r3, r5 | r3 = r5;
0x0007dd3e bl 0x7db58 | r0 = fcn_0007db58 (r0, r1, r2, r3, r4, r5, r6);
0x0007dd42 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x0007dd44 bge 0x7dd86 | goto label_2;
| }
0x0007dd46 cmn.w r6, 0x7b |
| if (r6 != 0x7b) {
0x0007dd4a bne 0x7dd88 | goto label_3;
| }
0x0007dd4c ldr r0, [r4] | r0 = *(r4);
0x0007dd4e b 0x7dcbc |
| }
| label_12:
0x0007dd50 ldr r0, [r4] | r0 = *(r4);
0x0007dd52 blx 0x964c | r0 = fcn_0000964c ();
0x0007dd56 mov r6, r0 | r6 = r0;
0x0007dd58 cmp r0, 0 |
| if (r0 != 0) {
0x0007dd5a bne 0x7dce4 | goto label_0;
| }
| do {
| label_1:
0x0007dd5c ldr.w r6, [sb] | r6 = *(sb);
0x0007dd60 cmp r6, 0 |
0x0007dd62 it le |
| if (r6 > 0) {
0x0007dd64 mvnle r6, 2 | r6 = ~2;
| }
| if (r6 > 0) {
0x0007dd68 bgt 0x7ddc0 | goto label_17;
| }
| label_4:
0x0007dd6a cmp.w fp, 0 |
| if (fp != 0) {
0x0007dd6e beq 0x7dd88 |
0x0007dd70 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007dd72 mov r2, r7 | r2 = r7;
0x0007dd74 mov r1, r8 | r1 = r8;
0x0007dd76 mov r0, r4 | r0 = r4;
0x0007dd78 strd sl, r3, [sp] | __asm ("strd sl, r3, [sp]");
0x0007dd7c mov r3, r5 | r3 = r5;
0x0007dd7e bl 0x7db58 | r0 = fcn_0007db58 (r0, r1, r2, r3, r4, r5, r6);
0x0007dd82 cmp r0, 0 |
| if (r0 < 0) {
0x0007dd84 blt 0x7dd88 | goto label_3;
| }
| label_2:
0x0007dd86 movs r6, 0 | r6 = 0;
| }
| label_3:
0x0007dd88 ldr r2, [pc, 0xe0] |
0x0007dd8a ldr r3, [pc, 0xdc] | r3 = *(0x7de6a);
0x0007dd8c add r2, pc | r2 = 0xfbbfc;
0x0007dd8e ldr r3, [r2, r3] | r3 = *(0xfbbfc);
0x0007dd90 ldr r2, [r3] | r2 = *(0xfbbfc);
0x0007dd92 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007dd94 eors r2, r3 | r2 ^= r3;
0x0007dd96 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007dd9a bne 0x7de5e | goto label_18;
| }
0x0007dd9c mov r0, r6 | r0 = r6;
0x0007dd9e add sp, 0x14 |
0x0007dda0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_13:
0x0007dda4 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007dda6 lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
0x0007dda8 bpl 0x7dd5c |
| } while (r1 >= r3);
0x0007ddaa orr.w r6, sl, r7 | r6 = sl | r7;
0x0007ddae orrs r6, r5 | r6 |= r5;
| if (r6 != r5) {
0x0007ddb0 bne 0x7dd5c | goto label_1;
| }
0x0007ddb2 cmp.w r8, 0 |
| if (r8 == 0) {
0x0007ddb6 beq 0x7dd86 | goto label_2;
| }
0x0007ddb8 ldr r3, [sp, 8] | r3 = var_8h;
0x0007ddba str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0007ddbe b 0x7dd88 | goto label_3;
| label_17:
0x0007ddc0 rsbs r6, r6, 0 | r6 -= ;
0x0007ddc2 b 0x7dd6a | goto label_4;
| label_15:
0x0007ddc4 mov r0, r4 | r0 = r4;
0x0007ddc6 bl 0x75cb4 | r0 = fcn_00075cb4 (r0);
| if (r0 == 0) {
0x0007ddca cbz r0, 0x7de2c | goto label_19;
| }
| label_7:
0x0007ddcc movs r3, 0 | r3 = 0;
0x0007ddce str r3, [r5] | *(r5) = r3;
0x0007ddd0 cmp.w sl, 0 |
| if (sl == 0) {
0x0007ddd4 beq 0x7dd86 | goto label_2;
| }
| label_16:
0x0007ddd6 ldr r4, [r6, 0x18] | r4 = *((r6 + 0x18));
| if (r4 == 0) {
0x0007ddd8 cbz r4, 0x7ddde | goto label_5;
| }
0x0007ddda ldrb r5, [r4] | r5 = *(r4);
0x0007dddc cbnz r5, 0x7dde8 |
| while (r0 == 0) {
| label_5:
0x0007ddde movs r3, 0 | r3 = 0;
0x0007dde0 mov r6, r3 | r6 = r3;
0x0007dde2 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x0007dde6 b 0x7dd88 | goto label_3;
0x0007dde8 ldr r0, [r6, 0x14] | r0 = *((r6 + 0x14));
0x0007ddea movs r1, 1 | r1 = 1;
0x0007ddec bl 0x75754 | r0 = fcn_00075754 (r0, r1);
0x0007ddf0 cmp r0, 0 |
0x0007ddf2 beq 0x7ddde |
| }
0x0007ddf4 cmp r5, 0x2f |
| if (r5 != 0x2f) {
0x0007ddf6 bne 0x7ddde | goto label_5;
| }
0x0007ddf8 mov r0, r4 | r0 = r4;
0x0007ddfa bl 0x7d874 | r0 = fcn_0007d874 (r0);
0x0007ddfe cmp r0, 0 |
| if (r0 != 0) {
0x0007de00 bne 0x7ddde | goto label_5;
| }
0x0007de02 b 0x7dd26 | goto label_6;
| label_9:
0x0007de04 ldr r1, [pc, 0x68] |
0x0007de06 movs r2, 0xd8 | r2 = 0xd8;
0x0007de08 ldr r3, [pc, 0x68] |
0x0007de0a ldr r0, [pc, 0x6c] |
0x0007de0c add r1, pc | r1 = 0xfbc80;
0x0007de0e add r3, pc | r3 = 0xfbc86;
0x0007de10 adds r1, 7 | r1 += 7;
0x0007de12 add r0, pc | r0 = 0xfbc90;
0x0007de14 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_10:
0x0007de18 ldr r1, [pc, 0x60] |
0x0007de1a movs r2, 0xd9 | r2 = 0xd9;
0x0007de1c ldr r3, [pc, 0x60] |
0x0007de1e ldr r0, [pc, 0x64] |
0x0007de20 add r1, pc | r1 = 0xfbca0;
0x0007de22 add r3, pc | r3 = 0xfbca6;
0x0007de24 adds r1, 7 | r1 += 7;
0x0007de26 add r0, pc | r0 = 0xfbcb0;
0x0007de28 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_19:
0x0007de2c ldr r4, [r6, 0x14] | r4 = *((r6 + 0x14));
0x0007de2e movs r1, 1 | r1 = 1;
0x0007de30 mov r0, r4 | r0 = r4;
0x0007de32 bl 0x75754 | r0 = fcn_00075754 (r0, r1);
0x0007de36 cmp r0, 0 |
| if (r0 == 0) {
0x0007de38 beq 0x7ddcc | goto label_7;
| }
| if (r4 == 0) {
0x0007de3a cbz r4, 0x7de4a | goto label_20;
| }
0x0007de3c ldrb r3, [r4] | r3 = *(r4);
0x0007de3e cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x0007de40 bne 0x7ddcc | goto label_7;
| }
0x0007de42 b 0x7dd18 | goto label_8;
| label_14:
0x0007de44 mvn r6, 0x49 | r6 = ~0x49;
0x0007de48 b 0x7dd88 | goto label_3;
| label_20:
0x0007de4a ldr r1, [pc, 0x3c] |
0x0007de4c movs r2, 0x33 | r2 = 0x33;
0x0007de4e ldr r3, [pc, 0x3c] |
0x0007de50 ldr r0, [pc, 0x3c] |
0x0007de52 add r1, pc | r1 = 0xfbce0;
0x0007de54 add r3, pc | r3 = 0xfbce6;
0x0007de56 adds r1, 7 | r1 += 7;
0x0007de58 add r0, pc | r0 = 0xfbcec;
0x0007de5a bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_18:
0x0007de5e blx 0x927c | fprintf_chk ()
0x0007de62 nop |
0x0007de64 add r6, sp, 0xf8 | r6 += arg_f8h;
0x0007de66 movs r4, r0 | r4 = r0;
0x0007de68 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007de6a movs r0, r0 |
0x0007de6c add r5, sp, 0xe0 | r5 += arg_e0h;
0x0007de6e movs r4, r0 | r4 = r0;
0x0007de70 adr r0, 0xe0 | r0 = 0xe0;
0x0007de72 movs r2, r0 | r2 = r0;
0x0007de74 adr r1, 0x1d8 | r1 = 0x1d8;
0x0007de76 movs r2, r0 | r2 = r0;
0x0007de78 adr r0, 0x3d8 | r0 = 0x3d8;
0x0007de7a movs r2, r0 | r2 = r0;
0x0007de7c adr r0, 0x90 | r0 = 0x90;
0x0007de7e movs r2, r0 | r2 = r0;
0x0007de80 adr r1, 0x188 | r1 = 0x188;
0x0007de82 movs r2, r0 | r2 = r0;
0x0007de84 adr r0, 0x3b8 | r0 = 0x3b8;
0x0007de86 movs r2, r0 | r2 = r0;
0x0007de88 asrs r6, r4, 0x15 | r6 = r4 >> 0x15;
0x0007de8a movs r1, r0 | r1 = r0;
0x0007de8c adr r1, 0x70 | r1 = 0x70;
0x0007de8e movs r2, r0 | r2 = r0;
0x0007de90 stm r2!, {r3, r4, r5, r7} | *(r2!) = r3;
| *((r2! + 4)) = r4;
| *((r2! + 8)) = r5;
| *((r2! + 12)) = r7;
0x0007de92 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7de94 */
| #include <stdint.h>
|
; (fcn) fcn.0007de94 () | void fcn_0007de94 (int16_t arg_90h, int16_t arg_290h, int16_t arg_338h, int16_t arg_380h, int16_t arg_390h, int16_t arg_3a0h, uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0007de94 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x0007de98 mov r7, r2 | r7 = r2;
0x0007de9a ldr r2, [pc, 0x11c] |
0x0007de9c sub sp, 0x1c |
0x0007de9e ldr r3, [pc, 0x11c] | r3 = *(0x7dfbe);
0x0007dea0 add r2, pc | r2 = 0xfbe5e;
0x0007dea2 ldr r3, [r2, r3] |
0x0007dea4 ldr r3, [r3] | r3 = *(0xfbe5e);
0x0007dea6 str r3, [sp, 0x14] | var_14h = r3;
0x0007dea8 mov.w r3, 0 | r3 = 0;
0x0007deac cmp r0, 0 |
| if (r0 == 0) {
0x0007deae beq 0x7df6c | goto label_4;
| }
0x0007deb0 ldr.w r8, [pc, 0x10c] |
0x0007deb4 mov r4, r0 | r4 = r0;
0x0007deb6 mov r6, r1 | r6 = r1;
0x0007deb8 add r5, sp, 8 | r5 += var_8h_2;
0x0007deba add r8, pc | r8 = 0xfbe7e;
0x0007debc add.w r3, r8, 0x24 | r3 = r8 + 0x24;
0x0007dec0 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0007dec4 stm.w r5, {r0, r1, r2} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
0x0007dec8 mov r0, r5 | r0 = r5;
0x0007deca ldr r1, [r4] | r1 = *(r4);
0x0007decc bl 0x7af74 | r0 = fcn_0007af74 (r0, r1);
| if (r0 == 0) {
0x0007ded0 cbz r0, 0x7defa | goto label_5;
| }
0x0007ded2 ldr r3, [pc, 0xf0] |
0x0007ded4 add r3, pc | r3 = 0xfbe9e;
0x0007ded6 str r3, [r4] | *(r4) = r3;
| if (r6 == 0) {
0x0007ded8 cbz r6, 0x7dede | goto label_0;
| }
0x0007deda movs r3, 0 | r3 = 0;
0x0007dedc str r3, [r6] | *(r6) = r3;
| do {
| label_0:
0x0007dede movs r0, 0 | r0 = 0;
| label_1:
0x0007dee0 ldr r2, [pc, 0xe4] |
0x0007dee2 ldr r3, [pc, 0xd8] | r3 = *(0x7dfbe);
0x0007dee4 add r2, pc | r2 = 0xfbeb0;
0x0007dee6 ldr r3, [r2, r3] | r3 = *(0xfbeb0);
0x0007dee8 ldr r2, [r3] | r2 = *(0xfbeb0);
0x0007deea ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007deec eors r2, r3 | r2 ^= r3;
0x0007deee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007def2 bne 0x7dfb4 | goto label_6;
| }
0x0007def4 add sp, 0x1c |
0x0007def6 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_5:
0x0007defa bl 0x7db2c | r0 = fcn_0007db2c ();
| if (r0 == 0) {
0x0007defe cbz r0, 0x7df2c | goto label_7;
| }
0x0007df00 add.w r8, r8, 0x30 | r8 += 0x30;
0x0007df04 ldr.w sb, [r4] | sb = *(r4);
0x0007df08 ldm.w r8, {r0, r1, r2} | r0 = *(r8);
| r1 = *((r8 + 4));
| r2 = *((r8 + 8));
0x0007df0c stm.w r5, {r0, r1, r2} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
0x0007df10 mov r0, r5 | r0 = r5;
0x0007df12 mov r1, sb | r1 = sb;
0x0007df14 bl 0x7af74 | r0 = fcn_0007af74 (r0, r1);
| if (r0 == 0) {
0x0007df18 cbz r0, 0x7df30 | goto label_8;
| }
0x0007df1a ldr r3, [pc, 0xb0] |
0x0007df1c add r3, pc | r3 = 0xfbeee;
0x0007df1e str r3, [r4] | *(r4) = r3;
0x0007df20 cmp r6, 0 |
0x0007df22 beq 0x7dede |
| } while (r6 == 0);
0x0007df24 movw r3, 0xfffe | r3 = 0xfffe;
0x0007df28 str r3, [r6] | *(r6) = r3;
0x0007df2a b 0x7dede | goto label_0;
| label_7:
0x0007df2c ldr.w sb, [r4] | sb = *(r4);
| label_8:
0x0007df30 add r1, sp, 4 | r1 += var_4h_2;
0x0007df32 mov r0, sb | r0 = sb;
0x0007df34 bl 0x7d7e8 | r0 = fcn_0007d7e8 (r0, r1);
0x0007df38 mov r5, r0 | r5 = r0;
0x0007df3a blx 0x9628 | fcn_00009628 ();
0x0007df3e cmp r5, 0 |
0x0007df40 mov.w r3, 0 | r3 = 0;
0x0007df44 mov r8, r0 | r8 = r0;
0x0007df46 str r3, [r0] | *(r0) = r3;
| if (r5 < 0) {
0x0007df48 blt 0x7df82 | goto label_9;
| }
0x0007df4a ldr r0, [sp, 4] | r0 = var_4h_2;
0x0007df4c blx 0x9310 | r0 = fcn_00009310 ();
0x0007df50 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0007df52 cbz r0, 0x7dfa0 | goto label_10;
| }
0x0007df54 ldr r3, [r0] | r3 = *(r0);
0x0007df56 str r3, [r4] | *(r4) = r3;
| label_2:
0x0007df58 cmp r6, 0 |
| if (r6 == 0) {
0x0007df5a beq 0x7dede | goto label_0;
| }
0x0007df5c ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0007df5e bl 0x7d7d0 | r0 = fcn_0007d7d0 (r0);
| if (r0 == 0) {
0x0007df62 cbz r0, 0x7dfae | goto label_11;
| }
0x0007df64 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0007df66 movs r0, 0 | r0 = 0;
0x0007df68 str r3, [r6] | *(r6) = r3;
0x0007df6a b 0x7dee0 | goto label_1;
| label_4:
0x0007df6c ldr r1, [pc, 0x60] |
0x0007df6e mov.w r2, 0x13c | r2 = 0x13c;
0x0007df72 ldr r3, [pc, 0x60] |
0x0007df74 ldr r0, [pc, 0x60] |
0x0007df76 add r1, pc | r1 = 0xfbf4a;
0x0007df78 add r3, pc | r3 = 0xfbf52;
0x0007df7a adds r1, 7 | r1 += 7;
0x0007df7c add r0, pc | r0 = 0xfbf58;
0x0007df7e bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x0007df82 ldr r0, [r4] | r0 = *(r4);
0x0007df84 blx 0x8bec | r0 = malloc_usable_size ();
0x0007df88 mov r5, r0 | r5 = r0;
0x0007df8a cmp r0, 0 |
| if (r0 != 0) {
0x0007df8c bne 0x7df58 | goto label_2;
| }
| label_3:
0x0007df8e ldr.w r0, [r8] | r0 = *(r8);
0x0007df92 cmp r0, 0 |
0x0007df94 it le |
| if (r0 <= 0) {
0x0007df96 mvnle r0, 2 | r0 = ~2;
| goto label_12;
| }
| if (r0 <= 0) {
| label_12:
0x0007df9a ble 0x7dee0 | goto label_1;
| }
0x0007df9c rsbs r0, r0, 0 | r0 -= ;
0x0007df9e b 0x7dee0 | goto label_1;
| label_10:
0x0007dfa0 lsls r3, r7, 0x1e | r3 = r7 << 0x1e;
| if (r3 >= r7) {
0x0007dfa2 bpl 0x7df8e | goto label_3;
| }
0x0007dfa4 cmp r6, 0 |
| if (r6 == 0) {
0x0007dfa6 beq 0x7dede | goto label_0;
| }
0x0007dfa8 ldr r3, [sp, 4] | r3 = var_4h_2;
0x0007dfaa str r3, [r6] | *(r6) = r3;
0x0007dfac b 0x7dee0 | goto label_1;
| label_11:
0x0007dfae mvn r0, 0x49 | r0 = ~0x49;
0x0007dfb2 b 0x7dee0 | goto label_1;
| label_6:
0x0007dfb4 blx 0x927c | fprintf_chk ()
0x0007dfb8 add r4, sp, 0x90 | r4 += arg_90h;
0x0007dfba movs r4, r0 | r4 = r0;
0x0007dfbc lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007dfbe movs r0, r0 |
0x0007dfc0 push {r1, r2, r4, r6, lr} |
0x0007dfc2 movs r4, r0 | r4 = r0;
0x0007dfc4 adr r6, 0x370 | r6 = 0x370;
0x0007dfc6 movs r2, r0 | r2 = r0;
0x0007dfc8 add r3, sp, 0x380 | r3 += arg_380h;
0x0007dfca movs r4, r0 | r4 = r0;
0x0007dfcc ldr r7, [sp, 0x390] | r7 = *(arg_390h);
0x0007dfce movs r2, r0 | r2 = r0;
0x0007dfd0 ldr r6, [sp, 0x338] | r6 = *(arg_338h);
0x0007dfd2 movs r2, r0 | r2 = r0;
0x0007dfd4 ldr r7, [sp, 0x3a0] | r7 = *(arg_3a0h);
0x0007dfd6 movs r2, r0 | r2 = r0;
0x0007dfd8 ldr r7, [sp, 0x290] | r7 = *(arg_290h);
0x0007dfda movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7dfdc */
| #include <stdint.h>
|
; (fcn) fcn.0007dfdc () | void fcn_0007dfdc (int16_t arg_2d8h, int16_t arg_370h, int16_t arg1) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
0x0007dfdc invalid |
0x0007dfe0 movs r2, 0 | r2 = 0;
0x0007dfe2 ldr r3, [pc, 0x48] |
0x0007dfe4 push {lr} |
0x0007dfe6 sub sp, 0x14 |
0x0007dfe8 add ip, pc |
0x0007dfea str r0, [sp, 4] | var_4h = r0;
0x0007dfec add r1, sp, 8 | r1 += var_8h;
0x0007dfee add r0, sp, 4 | r0 += var_4h;
0x0007dff0 ldr.w r3, [ip, r3] | r3 = *((ip + r3));
0x0007dff4 ldr r3, [r3] | r3 = *(0x7e02e);
0x0007dff6 str r3, [sp, 0xc] | var_ch = r3;
0x0007dff8 mov.w r3, 0 | r3 = 0;
0x0007dffc bl 0x7de94 | r0 = fcn_0007de94 (r0, r1, r2, r3, r4, r5, r6);
0x0007e000 cmp r0, 0 |
| if (r0 >= 0) {
0x0007e002 blt 0x7e00a |
0x0007e004 ldr r0, [sp, 8] | r0 = var_8h;
0x0007e006 bl 0x7d984 | fcn_0007d984 (r0);
| }
0x0007e00a ldr r2, [pc, 0x24] |
0x0007e00c ldr r3, [pc, 0x1c] | r3 = *(0x7e02c);
0x0007e00e add r2, pc | r2 = 0xfc044;
0x0007e010 ldr r3, [r2, r3] | r3 = *(0xfc044);
0x0007e012 ldr r2, [r3] | r2 = *(0xfc044);
0x0007e014 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0007e016 eors r2, r3 | r2 ^= r3;
0x0007e018 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0007e01c bne 0x7e024 |
0x0007e01e add sp, 0x14 |
0x0007e020 ldr pc, [sp], 4 | pc = *(sp);
| sp += 4;
| }
0x0007e024 blx 0x927c | fprintf_chk ()
0x0007e028 add r2, sp, 0x370 | r2 += arg_370h;
0x0007e02a movs r4, r0 | r4 = r0;
0x0007e02c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007e02e movs r0, r0 |
0x0007e030 add r2, sp, 0x2d8 | r2 += arg_2d8h;
0x0007e032 movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7e034 */
| #include <stdint.h>
|
; (fcn) fcn.0007e034 () | void fcn_0007e034 (int16_t arg_218h, int16_t arg_228h, int16_t arg_2d0h, int16_t arg_300h, int16_t arg_370h, uint32_t arg1) {
| int16_t var_0h;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_2ch;
| r0 = arg1;
| label_1:
0x000091fc invalid | void (*0x9200)() ();
0x0007e034 ldr r2, [pc, 0x11c] |
0x0007e036 ldr r3, [pc, 0x120] | r3 = *(0x7e15a);
0x0007e038 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0007e03c sub sp, 0x30 |
0x0007e03e add r2, pc | r2 = 0xfc196;
0x0007e040 ldr r3, [r2, r3] |
0x0007e042 ldr r3, [r3] | r3 = *(0xfc196);
0x0007e044 str r3, [sp, 0x2c] | var_2ch = r3;
0x0007e046 mov.w r3, 0 | r3 = 0;
0x0007e04a cmp r0, 0 |
| if (var_0h == ) {
0x0007e04c beq 0x7e100 | goto label_4;
| }
0x0007e04e mov r6, r0 | r6 = r0;
0x0007e050 bl 0x7db2c | fcn_0007db2c ();
0x0007e054 movw r3, 0xfffe | r3 = 0xfffe;
0x0007e058 cmp r6, r3 |
0x0007e05a ite ne |
| if (r6 == r3) {
0x0007e05c movne r8, 0 | r8 = 0;
| }
| if (r6 == r3) {
0x0007e060 and r8, r0, 1 | r8 = r0 & 1;
| }
0x0007e064 cmp.w r8, 0 |
| if (r8 != 0) {
0x0007e068 bne 0x7e136 | goto label_5;
| }
0x0007e06a mov r0, r6 | r0 = r6;
0x0007e06c add.w sb, sp, 0x10 | sb += var_10h;
0x0007e070 bl 0x7d7d0 | r0 = fcn_0007d7d0 (r0);
| if (r0 == 0) {
0x0007e074 cbz r0, 0x7e0ba | goto label_6;
| }
0x0007e076 movs r0, 0x46 | r0 = 0x46;
0x0007e078 add r7, sp, 0x10 | r7 += var_10h;
0x0007e07a blx 0x8a90 | r0 = pthread_sigmask ();
0x0007e07e subs r5, r0, 0 | r5 = r0 - 0;
0x0007e080 add.w sl, sp, 0xc | sl += var_ch_2;
0x0007e084 it le |
| if (r5 > r0) {
0x0007e086 movle r5, 0x1000 | r5 = 0x1000;
| }
| label_0:
0x0007e08a mov r0, r5 | r0 = r5;
0x0007e08c str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch_2]");
0x0007e090 blx 0x9234 | r0 = blkid_safe_string ();
0x0007e094 mov r4, r0 | r4 = r0;
0x0007e096 cmp r0, 0 |
| if (r0 == 0) {
0x0007e098 beq 0x7e122 | goto label_7;
| }
0x0007e09a mov r2, r0 | r2 = r0;
0x0007e09c mov r3, r5 | r3 = r5;
0x0007e09e mov r1, r7 | r1 = r7;
0x0007e0a0 mov r0, r6 | r0 = r6;
0x0007e0a2 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0007e0a6 mov sb, r7 | sb = r7;
0x0007e0a8 blx 0x95ec | r0 = fcn_000095ec ();
| if (r0 != 0) {
0x0007e0ac cbnz r0, 0x7e0ec | goto label_8;
| }
0x0007e0ae ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x0007e0b0 cmp r3, 0 |
| if (r3 != 0) {
0x0007e0b2 bne 0x7e12c | goto label_9;
| }
| do {
0x0007e0b4 mov r0, r4 | r0 = r4;
0x0007e0b6 blx 0x8dac | fcn_00008dac ();
| label_6:
0x0007e0ba ldr r2, [pc, 0xa0] |
0x0007e0bc mov r3, r6 | r3 = r6;
0x0007e0be movs r1, 1 | r1 = 1;
0x0007e0c0 mov r0, sb | r0 = sb;
0x0007e0c2 add r2, pc | r2 = 0xfc224;
0x0007e0c4 blx 0x8e48 | r0 = fcn_00008e48 ();
0x0007e0c8 cmp r0, 0 |
0x0007e0ca ite ge |
| if (r0 < 0) {
0x0007e0cc ldrge r5, [sp, 0x10] | r5 = var_10h;
| }
| if (r0 >= 0) {
0x0007e0ce movlt r5, 0 | r5 = 0;
| }
| label_2:
0x0007e0d0 ldr r2, [pc, 0x8c] |
0x0007e0d2 ldr r3, [pc, 0x84] | r3 = *(0x7e15a);
0x0007e0d4 add r2, pc | r2 = 0xfc238;
0x0007e0d6 ldr r3, [r2, r3] | r3 = *(0xfc238);
0x0007e0d8 ldr r2, [r3] | r2 = *(0xfc238);
0x0007e0da ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0007e0dc eors r2, r3 | r2 ^= r3;
0x0007e0de mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007e0e2 bne 0x7e150 | goto label_10;
| }
0x0007e0e4 mov r0, r5 | r0 = r5;
0x0007e0e6 add sp, 0x30 |
0x0007e0e8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_8:
0x0007e0ec cmp r0, 0x22 |
0x0007e0ee bne 0x7e0b4 |
| } while (r0 != 0x22);
0x0007e0f0 cmp.w r5, 0x40000000 |
| if (r5 < 0x40000000) {
0x0007e0f4 bge 0x7e122 |
0x0007e0f6 mov r0, r4 | r0 = r4;
0x0007e0f8 lsls r5, r5, 1 | r5 <<= 1;
0x0007e0fa blx 0x8dac | fcn_00008dac ();
0x0007e0fe b 0x7e08a | goto label_0;
| label_4:
0x0007e100 ldr r2, [pc, 0x60] |
0x0007e102 ldr r3, [pc, 0x54] | r3 = *(0x7e15a);
0x0007e104 add r2, pc | r2 = 0xfc26c;
0x0007e106 ldr r3, [r2, r3] | r3 = *(0xfc26c);
0x0007e108 ldr r2, [r3] | r2 = *(0xfc26c);
0x0007e10a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0007e10c eors r2, r3 | r2 ^= r3;
0x0007e10e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007e112 bne 0x7e150 | goto label_10;
| }
0x0007e114 ldr r0, [pc, 0x50] |
0x0007e116 add r0, pc | r0 = 0xfc282;
| label_3:
0x0007e118 add sp, 0x30 |
0x0007e11a pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0007e11e b.w 0x91fc | goto label_1;
| }
| label_7:
0x0007e122 movs r5, 0 | r5 = 0;
| do {
0x0007e124 mov r0, r4 | r0 = r4;
0x0007e126 blx 0x8dac | fcn_00008dac ();
0x0007e12a b 0x7e0d0 | goto label_2;
| label_9:
0x0007e12c ldr r0, [r3] | r0 = *(r3);
0x0007e12e blx 0x9200 | r0 = fcn_00009200 ();
0x0007e132 mov r5, r0 | r5 = r0;
0x0007e134 b 0x7e124 |
| } while (1);
| label_5:
0x0007e136 ldr r2, [pc, 0x34] |
0x0007e138 ldr r3, [pc, 0x1c] | r3 = *(0x7e158);
0x0007e13a add r2, pc | r2 = 0xfc2ac;
0x0007e13c ldr r3, [r2, r3] | r3 = *(0xfc2ac);
0x0007e13e ldr r2, [r3] | r2 = *(0xfc2ac);
0x0007e140 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0007e142 eors r2, r3 | r2 ^= r3;
0x0007e144 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0007e148 bne 0x7e150 |
0x0007e14a ldr r0, [pc, 0x24] |
0x0007e14c add r0, pc | r0 = 0xfc2c2;
0x0007e14e b 0x7e118 | goto label_3;
| }
| label_10:
0x0007e150 blx 0x927c | fprintf_chk ()
0x0007e154 add r2, sp, 0x218 | r2 += arg_218h;
0x0007e156 movs r4, r0 | r4 = r0;
0x0007e158 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007e15a movs r0, r0 |
0x0007e15c vhadd.u32 d16, d2, d1 | __asm ("vhadd.u32 d16, d2, d1");
0x0007e160 add r1, sp, 0x3c0 | r1 += arg_370h;
0x0007e162 movs r4, r0 | r4 = r0;
0x0007e164 add r1, sp, 0x300 | r1 += arg_300h;
0x0007e166 movs r4, r0 | r4 = r0;
0x0007e168 adr r4, 0x268 | r4 = 0x268;
0x0007e16a movs r2, r0 | r2 = r0;
0x0007e16c add r1, sp, 0x228 | r1 += arg_228h;
0x0007e16e movs r4, r0 | r4 = r0;
0x0007e170 ldr r5, [sp, 0x2d0] | r5 = *(arg_2d0h);
0x0007e172 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7e348 */
| #include <stdint.h>
|
; (fcn) fcn.0007e348 () | void fcn_0007e348 (int16_t arg_108h, int16_t arg_160h, int16_t arg_380h, int16_t arg_3c8h, int16_t arg_3d8h, int16_t arg1, uint32_t arg2) {
| int16_t var_0h_2;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0007e348 blmi 0x11d0c60 | __asm ("blmi aav.0x0004a774");
0x0007e34c push {r4, r5, lr} |
0x0007e34e sub sp, 0xc |
0x0007e350 add r2, pc | r2 += pc;
0x0007e352 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007e354 ldr r3, [r3] | r3 = *(r3);
0x0007e356 str r3, [sp, 4] | var_4h = r3;
0x0007e358 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x0007e35c cbz r0, 0x7e3b0 | goto label_5;
| }
| if (r1 == 0) {
0x0007e35e cbz r1, 0x7e3c6 | goto label_6;
| }
0x0007e360 ldrb r3, [r0] | r3 = *(r0);
0x0007e362 lsls r2, r3, 0x18 | r2 = r3 << 0x18;
0x0007e364 it pl |
| if (r2 < r3) {
0x0007e366 movpl r4, 1 | r4 = 1;
| }
| if (r2 >= r3) {
0x0007e368 bpl 0x7e396 | goto label_2;
| }
0x0007e36a and r2, r3, 0xe0 | r2 = r3 & 0xe0;
0x0007e36e cmp r2, 0xc0 |
| if (r2 == 0xc0) {
0x0007e370 beq 0x7e3dc | goto label_7;
| }
0x0007e372 and r2, r3, 0xf0 | r2 = r3 & 0xf0;
0x0007e376 cmp r2, 0xe0 |
| if (r2 == 0xe0) {
0x0007e378 beq 0x7e43c | goto label_8;
| }
0x0007e37a and r2, r3, 0xf8 | r2 = r3 & 0xf8;
0x0007e37e cmp r2, 0xf0 |
| if (r2 == 0xf0) {
0x0007e380 beq 0x7e444 | goto label_9;
| }
0x0007e382 and r2, r3, 0xfc | r2 = r3 & 0xfc;
0x0007e386 cmp r2, 0xf8 |
| if (r2 == 0xf8) {
0x0007e388 beq 0x7e44c | goto label_10;
| }
0x0007e38a and r3, r3, 0xfe | r3 &= 0xfe;
0x0007e38e cmp r3, 0xfc |
| if (r3 == 0xfc) {
0x0007e390 beq 0x7e454 | goto label_11;
| }
| do {
| label_0:
0x0007e392 mvn r4, 0x15 | r4 = ~0x15;
| label_2:
0x0007e396 ldr r2, [pc, 0xcc] |
0x0007e398 ldr r3, [pc, 0xc4] | r3 = *(0x7e460);
0x0007e39a add r2, pc | r2 = 0xfc804;
0x0007e39c ldr r3, [r2, r3] | r3 = *(0xfc804);
0x0007e39e ldr r2, [r3] | r2 = *(0xfc804);
0x0007e3a0 ldr r3, [sp, 4] | r3 = var_4h;
0x0007e3a2 eors r2, r3 | r2 ^= r3;
0x0007e3a4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007e3a8 bne 0x7e458 | goto label_12;
| }
0x0007e3aa mov r0, r4 | r0 = r4;
0x0007e3ac add sp, 0xc |
0x0007e3ae pop {r4, r5, pc} |
| label_5:
0x0007e3b0 ldr r1, [pc, 0xb4] |
0x0007e3b2 mov.w r2, 0x1fe | r2 = 0x1fe;
0x0007e3b6 ldr r3, [pc, 0xb4] |
0x0007e3b8 ldr r0, [pc, 0xb4] |
0x0007e3ba add r1, pc | r1 = 0xfc826;
0x0007e3bc add r3, pc | r3 = 0xfc82e;
0x0007e3be adds r1, 7 | r1 += 7;
0x0007e3c0 add r0, pc | r0 = 0xfc834;
0x0007e3c2 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_6:
0x0007e3c6 ldr r1, [pc, 0xac] |
0x0007e3c8 movw r2, 0x1ff | r2 = 0x1ff;
0x0007e3cc ldr r3, [pc, 0xa8] |
0x0007e3ce ldr r0, [pc, 0xac] |
0x0007e3d0 add r1, pc | r1 = 0xfc84a;
0x0007e3d2 add r3, pc | r3 = 0xfc84e;
0x0007e3d4 adds r1, 7 | r1 += 7;
0x0007e3d6 add r0, pc | r0 = 0xfc858;
0x0007e3d8 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x0007e3dc cmp r1, 1 |
0x0007e3de beq 0x7e392 |
| } while (r1 == 1);
0x0007e3e0 movs r5, 2 | r5 = 2;
| label_3:
0x0007e3e2 adds r3, r0, 1 | r3 = r0 + 1;
0x0007e3e4 adds r1, r0, r5 | r1 = r0 + r5;
0x0007e3e6 b 0x7e3f0 | goto label_13;
| label_1:
0x0007e3e8 ldrsb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0007e3ec cmp r2, 0 |
| if (r2 >= 0) {
0x0007e3ee bge 0x7e392 | goto label_0;
| }
| label_13:
0x0007e3f0 cmp r3, r1 |
| if (r3 != r1) {
0x0007e3f2 bne 0x7e3e8 | goto label_1;
| }
0x0007e3f4 mov r1, sp | r1 = sp;
0x0007e3f6 bl 0x7e1c8 | r0 = fcn_0007e1c8 (r0, r1, r2, r3);
0x0007e3fa subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007e3fc blt 0x7e396 | goto label_2;
| }
0x0007e3fe ldr r0, [sp] | r0 = *(sp);
0x0007e400 cmp r0, 0x7f |
| if (r0 < 0x7f) {
0x0007e402 bls 0x7e392 | goto label_0;
| }
0x0007e404 cmp.w r0, 0x800 |
0x0007e408 it lo |
| if (r0 >= 0x800) {
0x0007e40a movlo r3, 2 | r3 = 2;
| }
| if (r0 > 0x800) {
0x0007e40c blo 0x7e42c |
0x0007e40e cmp.w r0, 0x10000 |
0x0007e412 it lo |
| if (r0 >= 0x10000) {
0x0007e414 movlo r3, 3 | r3 = 3;
| }
| if (r0 <= 0x10000) {
0x0007e416 blo 0x7e42c | goto label_14;
| }
0x0007e418 cmp.w r0, 0x200000 |
0x0007e41c it lo |
| if (r0 >= 0x200000) {
0x0007e41e movlo r3, 4 | r3 = 4;
| }
| if (r0 <= 0x200000) {
0x0007e420 blo 0x7e42c | goto label_14;
| }
0x0007e422 cmp.w r0, 0x4000000 |
0x0007e426 ite hs |
| if (r0 < 0x4000000) {
0x0007e428 movhs r3, 6 | r3 = 6;
| }
| if (r0 < 0x4000000) {
0x0007e42a movlo r3, 5 | r3 = 5;
| goto label_14;
| }
| }
| label_14:
0x0007e42c cmp r5, r3 |
0x0007e42e mov r4, r5 | r4 = r5;
| if (r5 != r3) {
0x0007e430 bne 0x7e392 | goto label_0;
| }
0x0007e432 bl 0x7e198 | r0 = fcn_0007e198 (r0);
0x0007e436 cmp r0, 0 |
| if (r0 != 0) {
0x0007e438 bne 0x7e396 | goto label_2;
| }
0x0007e43a b 0x7e392 | goto label_0;
| label_8:
0x0007e43c movs r5, 3 | r5 = 3;
| label_4:
0x0007e43e cmp r1, r5 |
| if (r1 >= r5) {
0x0007e440 bhs 0x7e3e2 | goto label_3;
| }
0x0007e442 b 0x7e392 | goto label_0;
| label_9:
0x0007e444 cmp r1, 3 |
| if (r1 < 3) {
0x0007e446 bls 0x7e392 | goto label_0;
| }
0x0007e448 movs r5, 4 | r5 = 4;
0x0007e44a b 0x7e3e2 | goto label_3;
| label_10:
0x0007e44c cmp r1, 4 |
| if (r1 < 4) {
0x0007e44e bls 0x7e392 | goto label_0;
| }
0x0007e450 movs r5, 5 | r5 = 5;
0x0007e452 b 0x7e3e2 | goto label_3;
| label_11:
0x0007e454 movs r5, 6 | r5 = 6;
0x0007e456 b 0x7e43e | goto label_4;
| label_12:
0x0007e458 blx 0x927c | fprintf_chk ()
0x0007e45c adr r7, 0x1d0 | r7 = 0x1d0;
0x0007e45e movs r4, r0 | r4 = r0;
0x0007e460 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007e462 movs r0, r0 |
0x0007e464 adr r7, 0xa8 | r7 = 0xa8;
0x0007e466 movs r4, r0 | r4 = r0;
0x0007e468 ldr r3, [sp, 0x3d8] | r3 = *(arg_3d8h);
0x0007e46a movs r2, r0 | r2 = r0;
0x0007e46c ldr r4, [sp, 0x160] | r4 = *(arg_160h);
0x0007e46e movs r2, r0 | r2 = r0;
0x0007e470 adr r4, 0x1e0 | r4 = 0x1e0;
0x0007e472 movs r0, r0 |
0x0007e474 ldr r3, [sp, 0x380] | r3 = *(arg_380h);
0x0007e476 movs r2, r0 | r2 = r0;
0x0007e478 ldr r4, [sp, 0x108] | r4 = *(arg_108h);
0x0007e47a movs r2, r0 | r2 = r0;
0x0007e47c ldr r3, [sp, 0x3c8] | r3 = *(arg_3c8h);
0x0007e47e movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7e480 */
| #include <stdint.h>
|
; (fcn) fcn.0007e480 () | void fcn_0007e480 (int16_t arg_190h, int16_t arg_1e0h, int16_t arg_1e8h, int16_t arg_238h, int16_t arg_2b0h, uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0007e480 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x0007e484 mov r7, r1 | r7 = r1;
0x0007e486 ldr r1, [pc, 0xc0] |
0x0007e488 sub sp, 8 |
0x0007e48a ldr r3, [pc, 0xc0] | r3 = *(0x7e54e);
0x0007e48c add r1, pc | r1 = 0xfc9da;
0x0007e48e ldr r3, [r1, r3] |
0x0007e490 ldr r3, [r3] | r3 = *(0xfc9da);
0x0007e492 str r3, [sp, 4] | var_4h_2 = r3;
0x0007e494 mov.w r3, 0 | r3 = 0;
0x0007e498 cmp r0, 0 |
| if (var_0h == ) {
0x0007e49a beq 0x7e52e | goto label_4;
| }
0x0007e49c cmp r7, 0 |
| if (r7 == 0) {
0x0007e49e beq 0x7e50e | goto label_5;
| }
0x0007e4a0 mov r8, r0 | r8 = r0;
0x0007e4a2 mov r6, sp | r6 = sp;
0x0007e4a4 eor r5, r2, 1 | r5 = r2 ^ 1;
| label_0:
0x0007e4a8 mov r1, r7 | r1 = r7;
0x0007e4aa mov r0, r8 | r0 = r8;
0x0007e4ac bl 0x7e348 | r0 = fcn_0007e348 (r0, r1, r2, r3, r4, r5, r6);
0x0007e4b0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007e4b2 blt 0x7e4de | goto label_2;
| }
0x0007e4b4 ite eq |
| if (r4 != r0) {
0x0007e4b6 moveq r3, 1 | r3 = 1;
| }
| if (r4 == r0) {
0x0007e4b8 movne r3, 0 | r3 = 0;
| }
0x0007e4ba cmp r4, r7 |
0x0007e4bc it hi |
| if (r4 <= r7) {
0x0007e4be orrhi r3, r3, 1 | r3 |= 1;
| }
| if (r3 != 0) {
0x0007e4c2 cbnz r3, 0x7e51a | goto label_6;
| }
0x0007e4c4 mov r1, r6 | r1 = r6;
0x0007e4c6 mov r0, r8 | r0 = r8;
0x0007e4c8 bl 0x7e1c8 | r0 = fcn_0007e1c8 (r0, r1, r2, r3);
0x0007e4cc cmp r0, 0 |
| if (r0 < 0) {
0x0007e4ce blt 0x7e4de | goto label_2;
| }
0x0007e4d0 ldr r3, [sp] | r3 = *(sp);
0x0007e4d2 cmp r3, 0x1f |
| if (r3 > 0x1f) {
0x0007e4d4 bhi 0x7e512 | goto label_7;
| }
0x0007e4d6 sub.w r2, r3, 9 | r2 = r3 - 9;
0x0007e4da cmp r2, 1 |
0x0007e4dc bls 0x7e4fa |
| while (r2 != 0) {
| label_2:
0x0007e4de movs r0, 0 | r0 = 0;
| label_1:
0x0007e4e0 ldr r2, [pc, 0x6c] |
0x0007e4e2 ldr r3, [pc, 0x68] | r3 = *(0x7e54e);
0x0007e4e4 add r2, pc | r2 = 0xfca38;
0x0007e4e6 ldr r3, [r2, r3] | r3 = *(0xfca38);
0x0007e4e8 ldr r2, [r3] | r2 = *(0xfca38);
0x0007e4ea ldr r3, [sp, 4] | r3 = var_4h_2;
0x0007e4ec eors r2, r3 | r2 ^= r3;
0x0007e4ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007e4f2 bne 0x7e542 | goto label_8;
| }
0x0007e4f4 add sp, 8 |
0x0007e4f6 pop.w {r4, r5, r6, r7, r8, pc} |
0x0007e4fa cmp r3, 0xa |
0x0007e4fc ite ne |
| if (r3 == 0xa) {
0x0007e4fe movne r2, 0 | r2 = 0;
| }
| if (r3 != 0xa) {
0x0007e500 andeq r2, r5, 1 | r2 = r5 & 1;
| }
0x0007e504 cmp r2, 0 |
0x0007e506 bne 0x7e4de |
| }
| label_3:
0x0007e508 subs r7, r7, r4 | r7 -= r4;
0x0007e50a add r8, r4 | r8 += r4;
| if (r7 != r7) {
0x0007e50c bne 0x7e4a8 | goto label_0;
| }
| label_5:
0x0007e50e movs r0, 1 | r0 = 1;
0x0007e510 b 0x7e4e0 | goto label_1;
| label_7:
0x0007e512 subs r3, 0x7f | r3 -= 0x7f;
0x0007e514 cmp r3, 0x20 |
| if (r3 < 0x20) {
0x0007e516 bls 0x7e4de | goto label_2;
| }
0x0007e518 b 0x7e508 | goto label_3;
| label_6:
0x0007e51a ldr r1, [pc, 0x38] |
0x0007e51c movs r2, 0x8a | r2 = 0x8a;
0x0007e51e ldr r3, [pc, 0x38] |
0x0007e520 ldr r0, [pc, 0x38] |
0x0007e522 add r1, pc | r1 = 0xfca7c;
0x0007e524 add r3, pc | r3 = 0xfca82;
0x0007e526 adds r1, 7 | r1 += 7;
0x0007e528 add r0, pc | r0 = 0xfca88;
0x0007e52a bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_4:
0x0007e52e ldr r1, [pc, 0x30] |
0x0007e530 movs r2, 0x81 | r2 = 0x81;
0x0007e532 ldr r3, [pc, 0x30] |
0x0007e534 ldr r0, [pc, 0x30] |
0x0007e536 add r1, pc | r1 = 0xfca9c;
0x0007e538 add r3, pc | r3 = 0xfcaa2;
0x0007e53a adds r1, 7 | r1 += 7;
0x0007e53c add r0, pc | r0 = 0xfcaa8;
0x0007e53e bl 0x71518 | r0 = fcn_00071518 (r0, r1, r2, r3);
| label_8:
0x0007e542 blx 0x927c | fprintf_chk ()
0x0007e546 nop |
0x0007e548 adr r6, 0xe0 | r6 = 0xe0;
0x0007e54a movs r4, r0 | r4 = r0;
0x0007e54c lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007e54e movs r0, r0 |
0x0007e550 adr r5, 0x380 | r5 = 0x380;
0x0007e552 movs r4, r0 | r4 = r0;
0x0007e554 ldr r2, [sp, 0x238] | r2 = *(arg_238h);
0x0007e556 movs r2, r0 | r2 = r0;
0x0007e558 ldr r3, [sp, 0x1e0] | r3 = *(arg_1e0h);
0x0007e55a movs r2, r0 | r2 = r0;
0x0007e55c ldr r2, [sp, 0x2b0] | r2 = *(arg_2b0h);
0x0007e55e movs r2, r0 | r2 = r0;
0x0007e560 ldr r2, [sp, 0x1e8] | r2 = *(arg_1e8h);
0x0007e562 movs r2, r0 | r2 = r0;
0x0007e564 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x0007e566 movs r2, r0 | r2 = r0;
0x0007e568 adr r2, 0x3f0 | r2 = 0x3f0;
0x0007e56a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7ea10 */
| #include <stdint.h>
|
; (fcn) fcn.0007ea10 () | void fcn_0007ea10 (int16_t arg_2d0h) {
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_dh;
| int32_t var_4h_2;
| int16_t var_14h;
0x0007ea10 blmi 0x1cd13d8 | __asm ("blmi aav.0x0004a0ae");
0x0007ea14 ldr r0, [pc, 0x1c4] |
0x0007ea16 add r2, pc | r2 += pc;
0x0007ea18 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0007ea1c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007ea1e sub sp, 0x1c |
0x0007ea20 add r0, pc | r0 = 0xfd600;
0x0007ea22 ldr r3, [r3] | r3 = *(r3);
0x0007ea24 str r3, [sp, 0x14] | var_14h = r3;
0x0007ea26 mov.w r3, 0 | r3 = 0;
0x0007ea2a blx 0x8a68 | r0 = fcn_00008a68 ();
0x0007ea2e cmp r0, 0 |
| if (r0 == 0) {
0x0007ea30 beq.w 0x7eb94 | goto label_9;
| }
0x0007ea34 mov r5, r0 | r5 = r0;
0x0007ea36 bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x0007ea3a cmp r0, 0 |
| if (r0 == 0) {
0x0007ea3c beq.w 0x7ebac | goto label_10;
| }
0x0007ea40 ldr.w r8, [pc, 0x19c] |
0x0007ea44 mov.w r6, 0x4100 | r6 = 0x4100;
0x0007ea48 movw r7, 0x614d |
0x0007ea4c mov.w sb, 0 | sb = 0;
0x0007ea50 movt r6, 8 | r6 = (r6 & 0xFFFF) | 0x80000;
0x0007ea54 movt r7, 0x6e69 | r7 = 0x6e69614d;
0x0007ea58 add r8, pc | r8 = 0xfd63c;
| do {
0x0007ea5a add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x0007ea5e mov r0, r4 | r0 = r4;
0x0007ea60 bl 0x75b88 | r0 = fcn_00075b88 (r0);
| if (r0 == 0) {
0x0007ea64 cbnz r0, 0x7ead0 |
0x0007ea66 mov r0, r5 | r0 = r5;
0x0007ea68 blx 0x9128 | fcn_00009128 ();
0x0007ea6c mov r2, r6 | r2 = r6;
0x0007ea6e mov r1, r4 | r1 = r4;
0x0007ea70 blx 0x8e0c | r0 = fcn_00008e0c ();
0x0007ea74 subs.w sl, r0, 0 | sl = r0 - 0;
| if (sl >= r0) {
0x0007ea78 bge 0x7eaf6 | goto label_11;
| }
0x0007ea7a blx 0x9628 | r0 = fcn_00009628 ();
0x0007ea7e ldr r3, [r0] | r3 = *(r0);
0x0007ea80 cmp r3, 2 |
| if (r3 != 2) {
0x0007ea82 beq 0x7eac0 |
0x0007ea84 cmp r3, 0x14 |
| if (r3 == 0x14) {
0x0007ea86 beq 0x7eac0 | goto label_12;
| }
0x0007ea88 rsb.w sb, r3, 0 | sb = r3 - ;
0x0007ea8c mov.w fp, -1 |
| label_2:
0x0007ea90 mov r0, sl | r0 = sl;
0x0007ea92 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007ea96 mov r0, fp | r0 = fp;
0x0007ea98 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
| label_0:
0x0007ea9c mov r0, r5 | r0 = r5;
0x0007ea9e blx 0x91a8 | fcn_000091a8 ();
| label_5:
0x0007eaa2 ldr r2, [pc, 0x140] |
0x0007eaa4 ldr r3, [pc, 0x130] | r3 = *(0x7ebd8);
0x0007eaa6 add r2, pc | r2 = 0xfd690;
0x0007eaa8 ldr r3, [r2, r3] | r3 = *(0xfd690);
0x0007eaaa ldr r2, [r3] | r2 = *(0xfd690);
0x0007eaac ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007eaae eors r2, r3 | r2 ^= r3;
0x0007eab0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007eab4 bne.w 0x7ebce | goto label_13;
| }
0x0007eab8 mov r0, sb | r0 = sb;
0x0007eaba add sp, 0x1c |
0x0007eabc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
| label_12:
0x0007eac0 mov.w fp, -1 |
| label_1:
0x0007eac4 mov r0, sl | r0 = sl;
0x0007eac6 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007eaca mov r0, fp | r0 = fp;
0x0007eacc bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
| }
| label_4:
0x0007ead0 mov r0, r5 | r0 = r5;
0x0007ead2 bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x0007ead6 cmp r0, 0 |
0x0007ead8 bne 0x7ea5a |
| } while (r0 != 0);
| label_6:
0x0007eada blx 0x9628 | r0 = fcn_00009628 ();
0x0007eade ldr r3, [r0] | r3 = *(r0);
0x0007eae0 cmp r3, 0 |
0x0007eae2 it gt |
| if (r3 <= 0) {
0x0007eae4 rsbgt sb, r3, 0 | __asm ("rsbgt sb, r3, 0");
| goto label_14;
| }
| if (r3 > 0) {
| label_14:
0x0007eae8 bgt 0x7ea9c | goto label_0;
| }
0x0007eaea movs r3, 0 | r3 = 0;
| label_8:
0x0007eaec eor sb, sb, 1 | sb ^= 1;
0x0007eaf0 orr.w sb, r3, sb | sb = r3 | sb;
0x0007eaf4 b 0x7ea9c | goto label_0;
| label_11:
0x0007eaf6 mov.w r2, 0x100 | r2 = 0x100;
0x0007eafa mov r1, r8 | r1 = r8;
0x0007eafc movt r2, 8 | r2 = (r2 & 0xFFFF) | 0x80000;
0x0007eb00 blx 0x8e0c | r0 = fcn_00008e0c ();
0x0007eb04 subs.w fp, r0, 0 |
| if (fp >= r0) {
0x0007eb08 bge 0x7eb1a | goto label_15;
| }
| label_3:
0x0007eb0a blx 0x9628 | r0 = fcn_00009628 ();
0x0007eb0e ldr r3, [r0] | r3 = *(r0);
0x0007eb10 cmp r3, 2 |
| if (r3 == 2) {
0x0007eb12 beq 0x7eac4 | goto label_1;
| }
| label_7:
0x0007eb14 rsb.w sb, r3, 0 | sb = r3 - ;
0x0007eb18 b 0x7ea90 | goto label_2;
| label_15:
0x0007eb1a add r4, sp, 0xc | r4 += var_ch;
0x0007eb1c movs r2, 6 | r2 = 6;
0x0007eb1e mov r1, r4 | r1 = r4;
0x0007eb20 blx 0x8dc4 | r0 = fcn_00008dc4 ();
0x0007eb24 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x0007eb26 blt 0x7ebb0 | goto label_16;
| }
0x0007eb28 cmp r3, 6 |
| if (r3 != 6) {
0x0007eb2a bne 0x7eac4 | goto label_1;
| }
0x0007eb2c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0007eb2e cmp r2, r7 |
| if (r2 != r7) {
0x0007eb30 bne 0x7eac4 | goto label_1;
| }
0x0007eb32 ldrh r1, [r4, 4] | r1 = var_4h_2;
0x0007eb34 movw r2, 0xa73 | r2 = 0xa73;
0x0007eb38 cmp r1, r2 |
| if (r1 != r2) {
0x0007eb3a bne 0x7eac4 | goto label_1;
| }
0x0007eb3c mov r0, fp | r0 = fp;
0x0007eb3e str r3, [sp, 4] | var_4h = r3;
0x0007eb40 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007eb44 ldr r1, [pc, 0xa0] |
0x0007eb46 mov.w r2, 0x100 |
0x0007eb4a movt r2, 8 | r2 = 0x80100;
0x0007eb4e mov r0, sl | r0 = sl;
0x0007eb50 add r1, pc | r1 = 0xfd73c;
0x0007eb52 blx 0x8e0c | r0 = fcn_00008e0c ();
0x0007eb56 subs.w fp, r0, 0 |
0x0007eb5a ldr r3, [sp, 4] | r3 = var_4h;
| if (fp < r0) {
0x0007eb5c blt 0x7eb0a | goto label_3;
| }
0x0007eb5e mov r2, r3 | r2 = r3;
0x0007eb60 mov r1, r4 | r1 = r4;
0x0007eb62 blx 0x8dc4 | r0 = fcn_00008dc4 ();
0x0007eb66 cmp r0, 0 |
| if (r0 < 0) {
0x0007eb68 blt 0x7ebb0 | goto label_16;
| }
0x0007eb6a cmp r0, 2 |
| if (r0 != 2) {
0x0007eb6c bne 0x7ebb8 | goto label_17;
| }
0x0007eb6e ldrb.w r3, [sp, 0xd] | r3 = var_dh;
0x0007eb72 cmp r3, 0xa |
| if (r3 != 0xa) {
0x0007eb74 bne 0x7ebb8 | goto label_17;
| }
0x0007eb76 ldrb.w r3, [sp, 0xc] | r3 = var_ch;
0x0007eb7a cmp r3, 0x31 |
| if (r3 == 0x31) {
0x0007eb7c beq 0x7ebbe | goto label_18;
| }
0x0007eb7e cmp r3, 0x30 |
| if (r3 != 0x30) {
0x0007eb80 bne 0x7ebb8 | goto label_17;
| }
0x0007eb82 mov r0, sl | r0 = sl;
0x0007eb84 mov.w sb, 1 | sb = 1;
0x0007eb88 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007eb8c mov r0, fp | r0 = fp;
0x0007eb8e bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007eb92 b 0x7ead0 | goto label_4;
| label_9:
0x0007eb94 blx 0x9628 | r0 = fcn_00009628 ();
0x0007eb98 ldr r3, [r0] | r3 = *(r0);
0x0007eb9a cmp r3, 2 |
0x0007eb9c it ne |
| if (r3 == 2) {
0x0007eb9e rsbne sb, r3, 0 | __asm ("rsbne sb, r3, 0");
| goto label_19;
| }
| if (r3 != 2) {
| label_19:
0x0007eba2 bne.w 0x7eaa2 | goto label_5;
| }
0x0007eba6 mov.w sb, 1 | sb = 1;
0x0007ebaa b 0x7eaa2 | goto label_5;
| label_10:
0x0007ebac mov sb, r0 | sb = r0;
0x0007ebae b 0x7eada | goto label_6;
| label_16:
0x0007ebb0 blx 0x9628 | r0 = fcn_00009628 ();
0x0007ebb4 ldr r3, [r0] | r3 = *(r0);
0x0007ebb6 b 0x7eb14 | goto label_7;
| label_17:
0x0007ebb8 mvn sb, 4 | sb = ~4;
0x0007ebbc b 0x7ea90 | goto label_2;
| label_18:
0x0007ebbe mov r0, sl | r0 = sl;
0x0007ebc0 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007ebc4 mov r0, fp | r0 = fp;
0x0007ebc6 bl 0x69a04 | fcn_00069a04 (r0, r1, r2, r3);
0x0007ebca movs r3, 1 | r3 = 1;
0x0007ebcc b 0x7eaec | goto label_8;
| label_13:
0x0007ebce blx 0x927c | fprintf_chk ()
0x0007ebd2 nop |
0x0007ebd4 adr r0, 0x2b8 | r0 = 0x2b8;
0x0007ebd6 movs r4, r0 | r4 = r0;
0x0007ebd8 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007ebda movs r0, r0 |
0x0007ebdc str r7, [sp, 0x2d0] | *(arg_2d0h) = r7;
0x0007ebde movs r2, r0 | r2 = r0;
| if (r2 != r0) {
0x0007ebe0 bne 0x7ec94 | void (*0x7ec94)() ();
| }
0x0007ebe2 movs r1, r0 | r1 = r0;
0x0007ebe4 adr r0, 0x78 | r0 = 0x78;
0x0007ebe6 movs r4, r0 | r4 = r0;
0x0007ebe8 adr r3, 0x360 | r3 = 0x360;
0x0007ebea movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7ebec */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0007ebec () | void fcn_0007ebec (int16_t arg_c8h, int16_t arg_210h, int16_t arg_258h, int16_t arg_280h, int16_t arg_2a8h, int16_t arg_338h, int16_t arg_370h, int16_t arg_3b0h, int16_t arg_3c0h, uint32_t arg1, uint32_t arg2) {
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_26h;
| int16_t var_20h;
| r0 = arg1;
| r1 = arg2;
0x0007ebec ldr r2, [pc, 0x16c] |
0x0007ebee ldr r3, [pc, 0x170] | r3 = *(0x7ed62);
0x0007ebf0 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0007ebf4 sub sp, 0x24 |
0x0007ebf6 add r2, pc | r2 = 0xfd956;
0x0007ebf8 movs r6, 0 | r6 = 0;
0x0007ebfa add r7, sp, 0x10 | r7 += var_10h;
0x0007ebfc ldr r3, [r2, r3] |
0x0007ebfe ldr r3, [r3] | r3 = *(0xfd956);
0x0007ec00 str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x0007ec02 mov.w r3, 0 | r3 = 0;
0x0007ec06 strd r6, r6, [r7] | __asm ("strd r6, r6, [r7]");
0x0007ec0a cmp r0, 0 |
| if (r0 == 0) {
0x0007ec0c beq.w 0x7ed22 | goto label_2;
| }
0x0007ec10 mov r8, r1 | r8 = r1;
0x0007ec12 cmp r1, 0 |
| if (r1 == 0) {
0x0007ec14 beq.w 0x7ed36 | goto label_3;
| }
0x0007ec18 ldr r1, [pc, 0x148] |
0x0007ec1a mov r5, r0 | r5 = r0;
0x0007ec1c add r1, pc | r1 = 0xfd984;
0x0007ec1e blx 0x95e0 | r0 = fcn_000095e0 ();
0x0007ec22 mov r4, r0 | r4 = r0;
0x0007ec24 cmp r0, 0 |
| if (r0 == 0) {
0x0007ec26 beq 0x7ecd6 | goto label_4;
| }
0x0007ec28 mov r1, r6 | r1 = r6;
0x0007ec2a mov r0, r5 | r0 = r5;
0x0007ec2c bl 0x6f934 | r0 = fcn_0006f934 (r0, r1);
0x0007ec30 cmp r0, 0 |
| if (r0 == 0) {
0x0007ec32 beq.w 0x7ed50 | goto label_5;
| }
0x0007ec36 mov r0, r5 | r0 = r5;
0x0007ec38 blx 0x8f38 | r0 = fcn_00008f38 ();
0x0007ec3c add.w r3, r0, 0x17 | r3 = r0 + 0x17;
0x0007ec40 cmp.w r3, 0x400000 |
| if (r3 > 0x400000) {
0x0007ec44 bhi 0x7ece0 | goto label_6;
| }
0x0007ec46 ldr.w ip, [pc, 0x120] |
0x0007ec4a adds r0, 0x1e | r0 += 0x1e;
0x0007ec4c bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x0007ec50 sub.w sp, sp, r0 |
0x0007ec54 add ip, pc | ip = 0xfd9c2;
0x0007ec56 add.w sb, sp, 0x10 | sb += var_10h;
0x0007ec5a ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x0007ec5e mov r4, sb | r4 = sb;
0x0007ec60 stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x0007ec62 ldm.w ip, {r0, r1} | r0 = *(ip);
| r1 = *((ip + 4));
0x0007ec66 str r0, [r4], 4 | *(r4) = r0;
| r4 += 4;
0x0007ec6a add.w r0, sp, 0x26 | r0 += var_26h;
0x0007ec6e strh r1, [r4] | *(r4) = r1;
0x0007ec70 mov r1, r5 | r1 = r5;
0x0007ec72 ldr r4, [pc, 0xf8] |
0x0007ec74 adds r5, r7, 4 | r5 = r7 + 4;
0x0007ec76 blx 0x9050 | fcn_00009050 ();
0x0007ec7a ldr r2, [pc, 0xf4] |
0x0007ec7c mov r3, r7 | r3 = r7;
0x0007ec7e add r4, pc | r4 = 0xfd9f0;
0x0007ec80 mov r1, sb | r1 = sb;
0x0007ec82 strd r4, r5, [sp] | __asm ("strd r4, r5, [sp]");
0x0007ec86 mov r0, r6 | r0 = r6;
0x0007ec88 add r2, pc | r2 = 0xfd9fe;
0x0007ec8a str r6, [sp, 8] | var_8h = r6;
0x0007ec8c bl 0x686a8 | r0 = fcn_000686a8 ();
0x0007ec90 adds r3, r0, 2 | r3 = r0 + 2;
0x0007ec92 mov r4, r0 | r4 = r0;
0x0007ec94 ldr r5, [r7, 4] | r5 = *((r7 + 4));
0x0007ec96 it eq |
| if (r3 != r0) {
0x0007ec98 mvneq r4, 0x6f | r4 = ~0x6f;
| }
| if (r3 == r0) {
0x0007ec9c beq 0x7ecac | goto label_1;
| }
0x0007ec9e cmp r4, 0 |
| if (r4 < 0) {
0x0007eca0 blt 0x7ecac | goto label_1;
| }
0x0007eca2 ldr r6, [r7] | r6 = *(r7);
| if (r6 != 0) {
0x0007eca4 cbz r6, 0x7eca8 |
| if (r5 != 0) {
0x0007eca6 cbnz r5, 0x7ecf4 | goto label_7;
| }
| }
| label_0:
0x0007eca8 mvn r4, 4 | r4 = ~4;
| do {
| label_1:
0x0007ecac mov r0, r5 | r0 = r5;
0x0007ecae blx 0x8dac | fcn_00008dac ();
0x0007ecb2 ldr r0, [r7] | r0 = *(r7);
0x0007ecb4 blx 0x8dac | fcn_00008dac ();
0x0007ecb8 ldr r2, [pc, 0xb8] |
0x0007ecba ldr r3, [pc, 0xa4] | r3 = *(0x7ed62);
0x0007ecbc add r2, pc | r2 = 0xfda34;
0x0007ecbe ldr r3, [r2, r3] | r3 = *(0xfda34);
0x0007ecc0 ldr r2, [r3] | r2 = *(0xfda34);
0x0007ecc2 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x0007ecc4 eors r2, r3 | r2 ^= r3;
0x0007ecc6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007ecca bne 0x7ed58 | goto label_8;
| }
0x0007eccc mov r0, r4 | r0 = r4;
0x0007ecce adds r7, 0x14 | r7 += 0x14;
0x0007ecd0 mov sp, r7 |
0x0007ecd2 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_4:
0x0007ecd6 movs r3, 1 | r3 = 1;
0x0007ecd8 mov r5, r0 | r5 = r0;
0x0007ecda str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0007ecde b 0x7ecac |
| } while (1);
| label_6:
0x0007ece0 ldr r1, [pc, 0x94] |
0x0007ece2 movs r2, 0xc8 | r2 = 0xc8;
0x0007ece4 ldr r3, [pc, 0x94] |
0x0007ece6 ldr r0, [pc, 0x98] |
0x0007ece8 add r1, pc | r1 = 0xfda64;
0x0007ecea add r3, pc | r3 = 0xfda6a;
0x0007ecec adds r1, 7 | r1 += 7;
0x0007ecee add r0, pc | r0 = 0xfda74;
0x0007ecf0 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_7:
0x0007ecf4 ldr r1, [pc, 0x8c] |
0x0007ecf6 mov r0, r5 | r0 = r5;
0x0007ecf8 add r1, pc | r1 = 0xfda80;
0x0007ecfa blx 0x95e0 | r0 = fcn_000095e0 ();
0x0007ecfe mov r4, r0 | r4 = r0;
0x0007ed00 cmp r0, 0 |
| if (r0 != 0) {
0x0007ed02 bne 0x7eca8 | goto label_0;
| }
0x0007ed04 add.w r1, r7, 8 | r1 = r7 + 8;
0x0007ed08 mov r0, r6 | r0 = r6;
0x0007ed0a bl 0x74584 | r0 = fcn_00074584 (r0, r1);
0x0007ed0e cmp r0, 0 |
| if (r0 < 0) {
0x0007ed10 blt 0x7ed4a | goto label_9;
| }
0x0007ed12 ldrd r5, r3, [r7, 4] | __asm ("ldrd r5, r3, [r7, 4]");
0x0007ed16 cmp r3, 1 |
0x0007ed18 it gt |
| if (r3 > 1) {
0x0007ed1a strgt r3, [r8] | *(r8) = r3;
| goto label_10;
| }
| if (r3 > 1) {
| label_10:
0x0007ed1e bgt 0x7ecac | goto label_1;
| }
0x0007ed20 b 0x7eca8 | goto label_0;
| label_2:
0x0007ed22 ldr r1, [pc, 0x64] |
0x0007ed24 movs r2, 0xbd | r2 = 0xbd;
0x0007ed26 ldr r3, [pc, 0x64] |
0x0007ed28 ldr r0, [pc, 0x64] |
0x0007ed2a add r1, pc | r1 = 0xfdab8;
0x0007ed2c add r3, pc | r3 = 0xfdabe;
0x0007ed2e adds r1, 7 | r1 += 7;
0x0007ed30 add r0, pc | r0 = 0xfdac4;
0x0007ed32 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_3:
0x0007ed36 ldr r1, [pc, 0x5c] |
0x0007ed38 movs r2, 0xbe | r2 = 0xbe;
0x0007ed3a ldr r3, [pc, 0x5c] |
0x0007ed3c ldr r0, [pc, 0x5c] |
0x0007ed3e add r1, pc | r1 = 0xfdad8;
0x0007ed40 add r3, pc | r3 = 0xfdade;
0x0007ed42 adds r1, 7 | r1 += 7;
0x0007ed44 add r0, pc | r0 = 0xfdae4;
0x0007ed46 bl 0x71518 | fcn_00071518 (r0, r1, r2, r3);
| label_9:
0x0007ed4a ldr r5, [r7, 4] | r5 = *((r7 + 4));
0x0007ed4c mov r4, r0 | r4 = r0;
0x0007ed4e b 0x7ecac | goto label_1;
| label_5:
0x0007ed50 mov r5, r0 | r5 = r0;
0x0007ed52 mvn r4, 0x15 | r4 = ~0x15;
0x0007ed56 b 0x7ecac | goto label_1;
| label_8:
0x0007ed58 blx 0x927c | fprintf_chk ()
0x0007ed5c ldr r6, [sp, 0x338] | r6 = *(arg_338h);
0x0007ed5e movs r4, r0 | r4 = r0;
0x0007ed60 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007ed62 movs r0, r0 |
0x0007ed64 ldrb r4, [r0, 0x13] | r4 = *((r0 + 0x13));
0x0007ed66 movs r1, r0 | r1 = r0;
0x0007ed68 str r5, [sp, 0x280] | *(arg_280h) = r5;
0x0007ed6a movs r2, r0 | r2 = r0;
0x0007ed6c str r5, [sp, 0x258] | *(arg_258h) = r5;
0x0007ed6e movs r2, r0 | r2 = r0;
0x0007ed70 str r5, [sp, 0x210] | *(arg_210h) = r5;
0x0007ed72 movs r2, r0 | r2 = r0;
0x0007ed74 ldr r6, [sp, 0x20] | r6 = var_20h;
0x0007ed76 movs r4, r0 | r4 = r0;
0x0007ed78 str r3, [sp, 0x3b0] | *(arg_3b0h) = r3;
0x0007ed7a movs r2, r0 | r2 = r0;
0x0007ed7c str r5, [sp, 0xc8] | *(arg_c8h) = r5;
0x0007ed7e movs r2, r0 | r2 = r0;
0x0007ed80 ldrh r2, [r6, 6] | r2 = *((r6 + 6));
0x0007ed82 movs r0, r0 |
0x0007ed84 lsrs r4, r7, 9 | r4 = r7 >> 9;
0x0007ed86 movs r1, r0 | r1 = r0;
0x0007ed88 str r3, [sp, 0x2a8] | *(arg_2a8h) = r3;
0x0007ed8a movs r2, r0 | r2 = r0;
0x0007ed8c str r4, [sp, 0x3c0] | *(arg_3c0h) = r4;
0x0007ed8e movs r2, r0 | r2 = r0;
0x0007ed90 ldrb r0, [r7, 0xe] | r0 = *((r7 + 0xe));
0x0007ed92 movs r1, r0 | r1 = r0;
0x0007ed94 str r3, [sp, 0x258] | *(arg_258h) = r3;
0x0007ed96 movs r2, r0 | r2 = r0;
0x0007ed98 str r4, [sp, 0x370] | *(arg_370h) = r4;
0x0007ed9a movs r2, r0 | r2 = r0;
0x0007ed9c ldr r0, [r5, 0x5c] | r0 = *((r5 + 0x5c));
0x0007ed9e movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7eda0 */
| #include <stdint.h>
|
; (fcn) fcn.0007eda0 () | void fcn_0007eda0 (int16_t arg_48h, int16_t arg_50h, int16_t arg_a0h, int16_t arg_f0h, int16_t arg_120h, int16_t arg_178h, int16_t arg_190h, int16_t arg_210h, int16_t arg_320h, int16_t arg_340h, int16_t arg_3c8h) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
0x0007eda0 ldrsbgt pc, [r0, -pc] | __asm ("ldrsbgt pc, [r0, -pc]");
0x0007eda4 mov.w r1, -1 | r1 = -1;
0x0007eda8 push {r4, r5, lr} |
0x0007edaa sub sp, 0x24 |
0x0007edac ldr r5, [pc, 0x108] |
0x0007edae movs r4, 0 | r4 = 0;
0x0007edb0 add ip, pc |
0x0007edb2 add r3, sp, 0x18 | r3 += var_18h;
0x0007edb4 ldr r0, [pc, 0x104] |
0x0007edb6 add r2, sp, 0x14 | r2 += var_14h;
0x0007edb8 ldr.w r5, [ip, r5] | r5 = *((ip + r5));
0x0007edbc add r0, pc | r0 = 0xfdc7c;
0x0007edbe ldr r5, [r5] | r5 = *(0x7eeb8);
0x0007edc0 str r5, [sp, 0x1c] | var_1ch = r5;
0x0007edc2 mov.w r5, 0 | r5 = 0;
0x0007edc6 str r4, [sp, 0x14] | var_14h = r4;
0x0007edc8 bl 0x6a7bc | r0 = fcn_0006a7bc (r0, r1, r2);
0x0007edcc subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0007edce blt 0x7ee40 | goto label_2;
| }
0x0007edd0 ldr r5, [sp, 0x18] | r5 = var_18h;
0x0007edd2 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007edd6 mov r3, r0 | r3 = r0;
0x0007edd8 cmp r5, 0x13 |
| if (r5 < 0x13) {
0x0007edda bls 0x7ee12 | goto label_3;
| }
0x0007eddc ldr r0, [sp, 0x14] | r0 = var_14h;
0x0007edde ldrb r2, [r0, 1] | r2 = *((r0 + 1));
0x0007ede0 cmp r2, 0x13 |
| if (r2 < 0x13) {
0x0007ede2 bls 0x7ee12 | goto label_3;
| }
0x0007ede4 ldrb r1, [r0, 0x13] | r1 = *((r0 + 0x13));
0x0007ede6 ands r1, r1, 0x10 | r1 &= 0x10;
| if (r1 != r1) {
0x0007edea bne 0x7ee1c | goto label_4;
| }
0x0007edec cmp r3, 6 |
0x0007edee it le |
| if (r3 > 6) {
0x0007edf0 movle r4, 1 | r4 = 1;
| }
| if (r3 > 6) {
0x0007edf2 bgt 0x7ee6a | goto label_5;
| }
| do {
| label_0:
0x0007edf4 blx 0x8dac | fcn_00008dac ();
0x0007edf8 ldr r2, [pc, 0xc4] |
0x0007edfa ldr r3, [pc, 0xbc] | r3 = *(0x7eeba);
0x0007edfc add r2, pc | r2 = 0xfdcc0;
0x0007edfe ldr r3, [r2, r3] | r3 = *(0xfdcc0);
0x0007ee00 ldr r2, [r3] | r2 = *(0xfdcc0);
0x0007ee02 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0007ee04 eors r2, r3 | r2 ^= r3;
0x0007ee06 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007ee0a bne 0x7eeae | goto label_6;
| }
0x0007ee0c mov r0, r4 | r0 = r4;
0x0007ee0e add sp, 0x24 |
0x0007ee10 pop {r4, r5, pc} |
| label_3:
0x0007ee12 cmp r3, 6 |
| if (r3 > 6) {
0x0007ee14 bgt 0x7ee8a | goto label_7;
| }
| label_1:
0x0007ee16 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0007ee18 movs r4, 2 | r4 = 2;
0x0007ee1a b 0x7edf4 |
| } while (1);
| label_4:
0x0007ee1c cmp r3, 6 |
| if (r3 <= 6) {
0x0007ee1e ble 0x7edf4 | goto label_0;
| }
0x0007ee20 ldr r2, [pc, 0xa0] |
0x0007ee22 movs r3, 0xdf | r3 = 0xdf;
0x0007ee24 ldr r0, [pc, 0xa0] |
0x0007ee26 ldr r1, [pc, 0xa4] |
0x0007ee28 add r2, pc | r2 = 0xfdcf0;
0x0007ee2a add r0, pc | r0 = 0xfdcf6;
0x0007ee2c adds r2, 7 | r2 += 7;
0x0007ee2e add r1, pc | r1 = 0xfdd00;
0x0007ee30 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0007ee34 mov r1, r4 | r1 = r4;
0x0007ee36 movs r0, 7 | r0 = 7;
0x0007ee38 bl 0x71448 | fcn_00071448 ();
0x0007ee3c ldr r0, [sp, 0x14] | r0 = var_14h;
0x0007ee3e b 0x7edf4 | goto label_0;
| label_2:
0x0007ee40 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007ee44 cmp r0, 6 |
| if (r0 <= 6) {
0x0007ee46 ble 0x7ee16 | goto label_1;
| }
0x0007ee48 ldr r2, [pc, 0x84] |
0x0007ee4a movs r3, 0xcf | r3 = 0xcf;
0x0007ee4c ldr r4, [pc, 0x84] |
0x0007ee4e mov r1, r5 | r1 = r5;
0x0007ee50 ldr r0, [pc, 0x84] |
0x0007ee52 add r2, pc | r2 = 0xfdd26;
0x0007ee54 add r4, pc | r4 = 0xfdd2c;
0x0007ee56 adds r2, 7 | r2 += 7;
0x0007ee58 add r0, pc | r0 = 0xfdd34;
0x0007ee5a strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x0007ee5e movs r0, 7 | r0 = 7;
0x0007ee60 bl 0x71448 | fcn_00071448 ();
0x0007ee64 movs r4, 2 | r4 = 2;
0x0007ee66 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0007ee68 b 0x7edf4 | goto label_0;
| label_5:
0x0007ee6a ldr r2, [pc, 0x70] |
0x0007ee6c movs r3, 0xe2 | r3 = 0xe2;
0x0007ee6e ldr r4, [pc, 0x70] |
0x0007ee70 ldr r0, [pc, 0x70] |
0x0007ee72 add r2, pc | r2 = 0xfdd54;
0x0007ee74 add r4, pc | r4 = 0xfdd5a;
0x0007ee76 adds r2, 7 | r2 += 7;
0x0007ee78 add r0, pc | r0 = 0xfdd60;
0x0007ee7a strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x0007ee7e movs r0, 7 | r0 = 7;
0x0007ee80 bl 0x71448 | fcn_00071448 ();
0x0007ee84 movs r4, 1 | r4 = 1;
0x0007ee86 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0007ee88 b 0x7edf4 | goto label_0;
| label_7:
0x0007ee8a ldr r2, [pc, 0x5c] |
0x0007ee8c movs r3, 0xd8 | r3 = 0xd8;
0x0007ee8e ldr r1, [pc, 0x5c] |
0x0007ee90 movs r0, 7 | r0 = 7;
0x0007ee92 ldr r4, [pc, 0x5c] |
0x0007ee94 add r2, pc | r2 = 0xfdd82;
0x0007ee96 str r5, [sp, 8] | var_8h_2 = r5;
0x0007ee98 add r1, pc | r1 = 0xfdd8a;
0x0007ee9a adds r2, 7 | r2 += 7;
0x0007ee9c add r4, pc | r4 = 0xfdd92;
0x0007ee9e str r1, [sp, 4] | var_4h = r1;
0x0007eea0 str r4, [sp] | *(sp) = r4;
0x0007eea2 movs r1, 0 | r1 = 0;
0x0007eea4 bl 0x71448 | fcn_00071448 ();
0x0007eea8 movs r4, 2 | r4 = 2;
0x0007eeaa ldr r0, [sp, 0x14] | r0 = var_14h;
0x0007eeac b 0x7edf4 | goto label_0;
| label_6:
0x0007eeae blx 0x927c | fprintf_chk ()
0x0007eeb2 nop |
0x0007eeb4 ldr r5, [sp, 0x50] | r5 = *(arg_50h);
0x0007eeb6 movs r4, r0 | r4 = r0;
0x0007eeb8 lsls r0, r0, 0x13 | r0 <<= 0x13;
0x0007eeba movs r0, r0 |
0x0007eebc str r4, [sp, 0x210] | *(arg_210h) = r4;
0x0007eebe movs r2, r0 | r2 = r0;
0x0007eec0 ldr r4, [sp, 0x320] | r4 = *(arg_320h);
0x0007eec2 movs r4, r0 | r4 = r0;
0x0007eec4 str r4, [sp, 0xf0] | *(arg_f0h) = r4;
0x0007eec6 movs r2, r0 | r2 = r0;
0x0007eec8 str r5, [sp, 0x178] | *(arg_178h) = r5;
0x0007eeca movs r2, r0 | r2 = r0;
0x0007eecc adr r2, 0x388 | r2 = 0x388;
0x0007eece movs r2, r0 | r2 = r0;
0x0007eed0 str r4, [sp, 0x48] | *(arg_48h) = r4;
0x0007eed2 movs r2, r0 | r2 = r0;
0x0007eed4 str r4, [sp, 0xa0] | *(arg_a0h) = r4;
0x0007eed6 movs r2, r0 | r2 = r0;
0x0007eed8 adr r2, 0x2e0 | r2 = 0x2e0;
0x0007eeda movs r2, r0 | r2 = r0;
0x0007eedc str r3, [sp, 0x3c8] | *(arg_3c8h) = r3;
0x0007eede movs r2, r0 | r2 = r0;
0x0007eee0 str r5, [sp, 0x120] | *(arg_120h) = r5;
0x0007eee2 movs r2, r0 | r2 = r0;
0x0007eee4 adr r2, 0x260 | r2 = 0x260;
0x0007eee6 movs r2, r0 | r2 = r0;
0x0007eee8 str r3, [sp, 0x340] | *(arg_340h) = r3;
0x0007eeea movs r2, r0 | r2 = r0;
0x0007eeec str r4, [sp, 0x190] | *(arg_190h) = r4;
0x0007eeee movs r2, r0 | r2 = r0;
0x0007eef0 adr r2, 0x1d0 | r2 = 0x1d0;
0x0007eef2 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7ef7c */
| #include <stdint.h>
|
; (fcn) fcn.0007ef7c () | void fcn_0007ef7c (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
0x0007ef7c blmi 0x1d91950 | __asm ("blmi aav.0x00049b42");
0x0007ef80 ldr r1, [pc, 0x1d0] |
0x0007ef82 add r2, pc | r2 += pc;
0x0007ef84 push {r4, r5, r6, lr} |
0x0007ef86 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007ef88 sub sp, 0x28 |
0x0007ef8a movs r5, 0 | r5 = 0;
0x0007ef8c add r1, pc | r1 = 0xfe0e4;
0x0007ef8e mov r6, r0 | r6 = r0;
0x0007ef90 ldr r3, [r3] | r3 = *(r3);
0x0007ef92 str r3, [sp, 0x24] | var_24h = r3;
0x0007ef94 mov.w r3, 0 | r3 = 0;
0x0007ef98 strd r5, r5, [sp, 0x10] | __asm ("strd r5, r5, [var_10h]");
0x0007ef9c blx 0x8fb4 | r0 = fcn_00008fb4 ();
0x0007efa0 mov r4, r0 | r4 = r0;
0x0007efa2 cmp r0, 0 |
| if (r0 == 0) {
0x0007efa4 beq.w 0x7f110 | goto label_6;
| }
0x0007efa8 mov r3, r0 | r3 = r0;
0x0007efaa movs r2, 0xa | r2 = 0xa;
0x0007efac add r1, sp, 0x14 | r1 += var_14h;
0x0007efae add r0, sp, 0x10 | r0 += var_10h;
0x0007efb0 blx 0x92bc | r0 = fcn_000092bc ();
0x0007efb4 cmp r0, 0 |
| if (r0 < 0) {
0x0007efb6 blt 0x7f030 | goto label_7;
| }
0x0007efb8 ldr r1, [pc, 0x19c] |
0x0007efba add r2, sp, 0x20 | r2 += var_20h;
0x0007efbc str r2, [sp] | *(sp) = r2;
0x0007efbe add r3, sp, 0x1c | r3 += var_1ch;
0x0007efc0 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0007efc2 add r2, sp, 0x18 | r2 += var_18h;
0x0007efc4 add r1, pc | r1 = 0xfe120;
0x0007efc6 blx 0x8b20 | r0 = kmod_list_next ();
0x0007efca cmp r0, 2 |
| if (r0 <= 2) {
0x0007efcc ble 0x7f00e | goto label_8;
| }
0x0007efce ldrd r5, r3, [sp, 0x18] | __asm ("ldrd r5, r3, [var_1ch]");
0x0007efd2 orrs r5, r3 | r5 |= r3;
0x0007efd4 bl 0x70bf8 | fcn_00070bf8 ();
0x0007efd8 cmp r5, 0 |
| if (r5 == 0) {
0x0007efda beq 0x7f094 | goto label_9;
| }
| label_3:
0x0007efdc cmp r0, 6 |
| if (r0 > 6) {
0x0007efde bgt 0x7f0c6 | goto label_10;
| }
| label_0:
0x0007efe0 movs r5, 1 | r5 = 1;
| do {
| label_4:
0x0007efe2 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0007efe4 blx 0x8dac | fcn_00008dac ();
0x0007efe8 movs r3, 0 | r3 = 0;
0x0007efea mov r0, r4 | r0 = r4;
0x0007efec str r3, [sp, 0x10] | var_10h = r3;
0x0007efee bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0007eff2 ldr r2, [pc, 0x168] |
0x0007eff4 ldr r3, [pc, 0x158] | r3 = *(0x7f150);
0x0007eff6 add r2, pc | r2 = 0xfe158;
0x0007eff8 ldr r3, [r2, r3] | r3 = *(0xfe158);
0x0007effa ldr r2, [r3] | r2 = *(0xfe158);
0x0007effc ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007effe eors r2, r3 | r2 ^= r3;
0x0007f000 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007f004 bne.w 0x7f10c | goto label_11;
| }
0x0007f008 mov r0, r5 | r0 = r5;
0x0007f00a add sp, 0x28 |
0x0007f00c pop {r4, r5, r6, pc} |
| label_8:
0x0007f00e blx 0x9628 | r0 = fcn_00009628 ();
0x0007f012 ldr r5, [r0] | r5 = *(r0);
0x0007f014 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f018 cmp r0, 6 |
| if (r0 > 6) {
0x0007f01a bgt 0x7f0a2 | goto label_12;
| }
| label_1:
0x0007f01c cmp r5, 0 |
0x0007f01e it lt |
| if (r5 < 0) {
0x0007f020 rsblt r5, r5, 0 | __asm ("rsblt r5, r5, 0");
| }
0x0007f022 uxtb r5, r5 | r5 = (int8_t) r5;
0x0007f024 rsbs r5, r5, 0 | r5 -= ;
| label_2:
0x0007f026 cmp r5, 0 |
0x0007f028 it ge |
| if (r5 < 0) {
0x0007f02a mvnge r5, 0x55 | r5 = ~0x55;
| }
0x0007f02e b 0x7efe2 |
| } while (1);
| label_7:
0x0007f030 mov r0, r4 | r0 = r4;
0x0007f032 blx 0x8fe4 | r0 = fcn_00008fe4 ();
| if (r0 == 0) {
0x0007f036 cbz r0, 0x7f062 | goto label_13;
| }
0x0007f038 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f03c cmp r0, 6 |
| if (r0 <= 6) {
0x0007f03e ble 0x7efe0 | goto label_0;
| }
0x0007f040 ldr r2, [pc, 0x11c] |
0x0007f042 mov r1, r5 | r1 = r5;
0x0007f044 ldr r3, [pc, 0x11c] |
0x0007f046 ldr r0, [pc, 0x120] |
0x0007f048 add r2, pc | r2 = 0xfe1ac;
0x0007f04a str r6, [sp, 8] | var_8h = r6;
0x0007f04c add r3, pc | r3 = 0xfe1b4;
0x0007f04e adds r2, 7 | r2 += 7;
0x0007f050 add r0, pc | r0 = 0xfe1be;
0x0007f052 str r3, [sp, 4] | var_4h = r3;
0x0007f054 str r0, [sp] | *(sp) = r0;
0x0007f056 movw r3, 0x32e | r3 = 0x32e;
0x0007f05a movs r0, 7 | r0 = 7;
0x0007f05c bl 0x71448 | fcn_00071448 ();
0x0007f060 b 0x7efe0 | goto label_0;
| label_13:
0x0007f062 blx 0x9628 | r0 = fcn_00009628 ();
0x0007f066 ldr r5, [r0] | r5 = *(r0);
0x0007f068 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f06c cmp r0, 6 |
| if (r0 <= 6) {
0x0007f06e ble 0x7f01c | goto label_1;
| }
0x0007f070 ldr r2, [pc, 0xf8] |
0x0007f072 mov r1, r5 | r1 = r5;
0x0007f074 ldr r3, [pc, 0xf8] |
0x0007f076 ldr r0, [pc, 0xfc] |
0x0007f078 add r2, pc | r2 = 0xfe1e8;
0x0007f07a str r6, [sp, 8] | var_8h = r6;
0x0007f07c add r3, pc | r3 = 0xfe1f0;
0x0007f07e adds r2, 7 | r2 += 7;
0x0007f080 add r0, pc | r0 = 0xfe1fa;
0x0007f082 str r3, [sp, 4] | var_4h = r3;
0x0007f084 str r0, [sp] | *(sp) = r0;
0x0007f086 movw r3, 0x332 | r3 = 0x332;
0x0007f08a movs r0, 7 | r0 = 7;
0x0007f08c bl 0x71448 | r0 = fcn_00071448 ();
0x0007f090 mov r5, r0 | r5 = r0;
0x0007f092 b 0x7f026 | goto label_2;
| label_9:
0x0007f094 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0007f096 adds r3, 1 | r3++;
| if (r3 != 1) {
0x0007f098 bne 0x7efdc | goto label_3;
| }
0x0007f09a cmp r0, 6 |
0x0007f09c bgt 0x7f0ea |
| while (r5 == 2) {
0x0007f09e movs r5, 0 | r5 = 0;
0x0007f0a0 b 0x7efe2 | goto label_4;
| label_12:
0x0007f0a2 ldr r2, [pc, 0xd4] |
0x0007f0a4 mov r1, r5 | r1 = r5;
0x0007f0a6 ldr r3, [pc, 0xd4] |
0x0007f0a8 ldr r0, [pc, 0xd4] |
0x0007f0aa add r2, pc | r2 = 0xfe228;
0x0007f0ac str r6, [sp, 8] | var_8h = r6;
0x0007f0ae add r3, pc | r3 = 0xfe230;
0x0007f0b0 adds r2, 7 | r2 += 7;
0x0007f0b2 add r0, pc | r0 = 0xfe236;
0x0007f0b4 str r3, [sp, 4] | var_4h = r3;
0x0007f0b6 str r0, [sp] | *(sp) = r0;
0x0007f0b8 movw r3, 0x337 | r3 = 0x337;
0x0007f0bc movs r0, 7 | r0 = 7;
0x0007f0be bl 0x71448 | r0 = fcn_00071448 ();
0x0007f0c2 mov r5, r0 | r5 = r0;
0x0007f0c4 b 0x7f026 | goto label_2;
| label_10:
0x0007f0c6 ldr r2, [pc, 0xbc] |
0x0007f0c8 movs r1, 0 | r1 = 0;
0x0007f0ca ldr r3, [pc, 0xbc] |
0x0007f0cc movs r5, 1 | r5 = 1;
0x0007f0ce ldr r0, [pc, 0xbc] |
0x0007f0d0 add r2, pc | r2 = 0xfe25a;
0x0007f0d2 str r6, [sp, 8] | var_8h = r6;
0x0007f0d4 add r3, pc | r3 = 0xfe262;
0x0007f0d6 adds r2, 7 | r2 += 7;
0x0007f0d8 add r0, pc | r0 = 0xfe26a;
0x0007f0da str r3, [sp, 4] | var_4h = r3;
0x0007f0dc str r0, [sp] | *(sp) = r0;
0x0007f0de mov.w r3, 0x340 | r3 = 0x340;
0x0007f0e2 movs r0, 7 | r0 = 7;
0x0007f0e4 bl 0x71448 | fcn_00071448 ();
0x0007f0e8 b 0x7efe2 | goto label_4;
0x0007f0ea ldr r2, [pc, 0xa4] |
0x0007f0ec movs r0, 7 | r0 = 7;
0x0007f0ee ldr r3, [pc, 0xa4] |
0x0007f0f0 ldr r1, [pc, 0xa4] |
0x0007f0f2 add r2, pc | r2 = 0xfe288;
0x0007f0f4 str r6, [sp, 8] | var_8h = r6;
0x0007f0f6 add r3, pc | r3 = 0xfe290;
0x0007f0f8 adds r2, 7 | r2 += 7;
0x0007f0fa add r1, pc | r1 = 0xfe296;
0x0007f0fc str r3, [sp, 4] | var_4h = r3;
0x0007f0fe str r1, [sp] | *(sp) = r1;
0x0007f100 movw r3, 0x33b | r3 = 0x33b;
0x0007f104 mov r1, r5 | r1 = r5;
0x0007f106 bl 0x71448 | fcn_00071448 ();
0x0007f10a b 0x7efe2 | goto label_4;
| label_11:
0x0007f10c blx 0x927c | fprintf_chk ()
| label_6:
0x0007f110 blx 0x9628 | r0 = fcn_00009628 ();
0x0007f114 mov r5, r0 | r5 = r0;
0x0007f116 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f11a cmp r0, 6 |
| if (r0 > 6) {
0x0007f11c bgt 0x7f128 | goto label_14;
| }
| label_5:
0x0007f11e ldr r5, [r5] | r5 = *(r5);
0x0007f120 cmp r5, 2 |
0x0007f122 beq 0x7f09e |
| }
0x0007f124 rsbs r5, r5, 0 | r5 -= ;
0x0007f126 b 0x7efe2 | goto label_4;
| label_14:
0x0007f128 ldr r2, [pc, 0x70] |
0x0007f12a movs r0, 7 | r0 = 7;
0x0007f12c ldr r3, [pc, 0x70] |
0x0007f12e ldr r1, [pc, 0x74] |
0x0007f130 add r2, pc | r2 = 0xfe2d0;
0x0007f132 add r3, pc | r3 = 0xfe2d6;
0x0007f134 adds r2, 7 | r2 += 7;
0x0007f136 add r1, pc | r1 = 0xfe2e0;
0x0007f138 strd r3, r6, [sp, 4] | __asm ("strd r3, r6, [var_8h]");
0x0007f13c str r1, [sp] | *(sp) = r1;
0x0007f13e movw r3, 0x327 | r3 = 0x327;
0x0007f142 ldr r1, [r5] | r1 = *(r5);
0x0007f144 bl 0x71448 | fcn_00071448 ();
0x0007f148 b 0x7f11e | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x7fdf4 */
| #include <stdint.h>
|
; (fcn) fcn.0007fdf4 () | void fcn_0007fdf4 () {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_10h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_bh;
| int8_t var_fh;
| int16_t var_10h;
| int32_t var_0h_3;
| int32_t var_8h_3;
| int16_t var_ch;
| int32_t var_10h_3;
| int32_t var_14h;
| int16_t var_0h_4;
0x0007fdf4 ldr r2, [pc, 0x2d4] |
0x0007fdf6 ldr r3, [pc, 0x2d8] | r3 = *(0x800d2);
0x0007fdf8 ldr r0, [pc, 0x2c4] |
0x0007fdfa add r2, pc | r2 = 0xffeca;
0x0007fdfc push {r4, r5, r6, r7, lr} |
0x0007fdfe ldr r6, [pc, 0x2c4] | r6 = *(0x800c6);
0x0007fe00 sub sp, 0x2c |
0x0007fe02 movs r4, 0 | r4 = 0;
0x0007fe04 ldr r3, [r2, r3] |
0x0007fe06 add r7, sp, 0x10 | r7 += var_10h;
0x0007fe08 add r0, pc | r0 = 0xffecc;
0x0007fe0a ldr r3, [r3] | r3 = *(0xffeca);
0x0007fe0c str r3, [r7, 0x14] | var_14h = r3;
0x0007fe0e mov.w r3, 0 | r3 = 0;
0x0007fe12 strd r4, r4, [r7] | __asm ("strd r4, r4, [r7]");
0x0007fe16 str r4, [r7, 8] | var_8h_3 = r4;
0x0007fe18 blx 0x9240 | nl_langinfo (r0);
0x0007fe1c ldr r5, [r6, r0] | r5 = *(0x800c6);
0x0007fe1e cmp r5, r4 |
0x0007fe20 it ge |
| if (r5 < r4) {
0x0007fe22 movge r0, r4 | r0 = r4;
| }
0x0007fe24 blt 0x7fe54 |
| while (1) {
0x0007fe26 blx 0x8dac | fcn_00008dac ();
0x0007fe2a ldr r0, [r7, 4] | r0 = var_0h_3;
0x0007fe2c blx 0x8dac | fcn_00008dac ();
0x0007fe30 ldr r0, [r7] | r0 = *(r7);
0x0007fe32 blx 0x8dac | fcn_00008dac ();
0x0007fe36 ldr r2, [pc, 0x29c] |
0x0007fe38 ldr r3, [pc, 0x294] | r3 = *(0x800d0);
0x0007fe3a add r2, pc | r2 = 0xfff14;
0x0007fe3c ldr r3, [r2, r3] | r3 = *(0xfff14);
0x0007fe3e ldr r2, [r3] | r2 = *(0xfff14);
0x0007fe40 ldr r3, [r7, 0x14] | r3 = var_14h;
0x0007fe42 eors r2, r3 | r2 ^= r3;
0x0007fe44 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007fe48 bne.w 0x802e0 | goto label_21;
| }
0x0007fe4c mov r0, r5 | r0 = r5;
0x0007fe4e adds r7, 0x1c | r7 += 0x1c;
0x0007fe50 mov sp, r7 |
0x0007fe52 pop {r4, r5, r6, r7, pc} |
0x0007fe54 ldr r0, [pc, 0x280] |
0x0007fe56 mov r1, r4 | r1 = r4;
0x0007fe58 add r0, pc | r0 = 0xfff34;
0x0007fe5a blx 0x8df4 | r0 = fcn_00008df4 ();
0x0007fe5e cmp r0, r4 |
| if (r0 >= r4) {
0x0007fe60 bge 0x7ff5a | goto label_22;
| }
0x0007fe62 blx 0x9628 | r0 = fcn_00009628 ();
0x0007fe66 ldr r4, [r0] | r4 = *(r0);
0x0007fe68 cmp r4, 2 |
| if (r4 != 2) {
0x0007fe6a beq 0x7fe92 |
0x0007fe6c bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007fe70 cmp r0, 6 |
| if (r0 <= 6) {
0x0007fe72 ble 0x7fe92 | goto label_1;
| }
0x0007fe74 ldr r2, [pc, 0x264] |
0x0007fe76 movw r3, 0x28e | r3 = 0x28e;
0x0007fe7a ldr r5, [pc, 0x264] |
0x0007fe7c ldr r0, [pc, 0x264] |
0x0007fe7e add r2, pc | r2 = 0xfff5e;
0x0007fe80 add r5, pc | r5 = 0xfff66;
0x0007fe82 add r0, pc | r0 = 0xfff6a;
| label_2:
0x0007fe84 strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x0007fe88 mov r1, r4 | r1 = r4;
0x0007fe8a adds r2, 7 | r2 += 7;
0x0007fe8c movs r0, 7 | r0 = 7;
0x0007fe8e bl 0x71448 | fcn_00071448 ();
| }
| label_1:
0x0007fe92 ldr r0, [pc, 0x254] |
0x0007fe94 adds r1, r7, 4 | r1 += var_0h_3;
0x0007fe96 add r0, pc | r0 = 0xfff84;
0x0007fe98 bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007fe9c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007fe9e blt 0x7ff8e | goto label_23;
| }
0x0007fea0 ldr r4, [r7, 4] | r4 = var_0h_3;
0x0007fea2 ldr r1, [pc, 0x248] |
0x0007fea4 mov r0, r4 | r0 = r4;
0x0007fea6 add r1, pc | r1 = 0xfff98;
0x0007fea8 blx 0x9164 | r0 = fcn_00009164 ();
| if (r0 == 0) {
0x0007feac cbz r0, 0x7fec8 | goto label_24;
| }
| label_0:
0x0007feae movs r5, 0x18 | r5 = 0x18;
| label_5:
0x0007feb0 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007feb4 cmp r0, 6 |
| if (r0 > 6) {
0x0007feb6 bgt 0x7ffb6 | goto label_25;
| }
| label_4:
0x0007feb8 ldr r0, [pc, 0x20c] |
0x0007feba add r0, pc | r0 = 0xfff86;
0x0007febc blx 0x9240 | nl_langinfo (r0);
0x0007febe strd r4, r6, [r0, 0xc] | __asm ("strd r4, r6, [r0, 0xc]");
0x0007fec2 ldr r0, [r7, 8] | r0 = var_8h_3;
0x0007fec4 str r5, [r6, r3] | *((r6 + r3)) = r5;
0x0007fec6 b 0x7fe26 |
| }
| label_24:
0x0007fec8 ldr r1, [pc, 0x224] |
0x0007feca mov r0, r4 | r0 = r4;
0x0007fecc add r1, pc | r1 = 0xfffc0;
0x0007fece blx 0x9164 | r0 = fcn_00009164 ();
0x0007fed2 cmp r0, 0 |
| if (r0 != 0) {
0x0007fed4 bne 0x7feae | goto label_0;
| }
| label_3:
0x0007fed6 ldr r2, [pc, 0x21c] |
0x0007fed8 add.w r3, r7, 8 | r3 += var_8h_3;
0x0007fedc ldr r1, [pc, 0x218] |
0x0007fede ldr r0, [pc, 0x21c] |
0x0007fee0 add r2, pc | r2 = 0xfffda;
0x0007fee2 add r1, pc | r1 = 0xfffde;
0x0007fee4 add r0, pc | r0 = 0xfffe6;
0x0007fee6 bl 0x6a9c4 | r0 = fcn_0006a9c4 (r0, r1, r2, r3);
0x0007feea subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007feec blt 0x7ffde | goto label_26;
| }
0x0007feee ldr r0, [r7, 8] | r0 = var_8h_3;
0x0007fef0 ldrb r3, [r0] | r3 = *(r0);
0x0007fef2 cmp r3, 0x30 |
| if (r3 == 0x30) {
0x0007fef4 beq.w 0x80040 | goto label_27;
| }
| label_7:
0x0007fef8 add.w r1, r7, 0xc | r1 += var_ch;
0x0007fefc bl 0x74584 | r0 = fcn_00074584 (r0, r1);
0x0007ff00 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0007ff02 blt.w 0x80160 | goto label_28;
| }
0x0007ff06 ldr r1, [r7, 0xc] | r1 = var_ch;
0x0007ff08 movs r3, 0 | r3 = 0;
0x0007ff0a str r3, [r7, 0x10] | var_10h_3 = r3;
0x0007ff0c cmp r1, 0 |
| if (r1 != 0) {
0x0007ff0e bne.w 0x801ae | goto label_29;
| }
0x0007ff12 ldr r3, [pc, 0x1ec] |
0x0007ff14 sub sp, 0x10 |
0x0007ff16 ldr r5, [pc, 0x1ec] |
0x0007ff18 add r4, sp, 0x10 | r4 += var_0h;
0x0007ff1a add r3, pc | r3 = 0x100020;
0x0007ff1c ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0007ff20 add r5, pc | r5 = 0x10002a;
0x0007ff22 stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x0007ff26 ldrb r2, [r5, 4] | r2 = *((r5 + 4));
0x0007ff28 ldr r0, [r5] | r0 = imp.__progname;
0x0007ff2a strb r2, [r4, 0xf] | var_fh = r2;
0x0007ff2c str.w r0, [r4, 0xb] | __asm ("str.w r0, [var_bh]");
| label_14:
0x0007ff30 add.w r1, r7, 0x10 | r1 += var_10h_3;
0x0007ff34 mov r0, r4 | r0 = r4;
0x0007ff36 bl 0x6b320 | fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007ff3a subs r5, r0, 0 | r5 -= var_10h_2;
| if (r5 < var_10h_2) {
0x0007ff3c blt.w 0x80256 | goto label_30;
| }
0x0007ff40 ldr r4, [r7, 0x10] | r4 = var_10h_3;
0x0007ff42 ldr r1, [pc, 0x1c4] |
0x0007ff44 mov r0, r4 | r0 = r4;
0x0007ff46 add r1, pc | r1 = 0x100054;
0x0007ff48 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x0007ff4c cmp r0, 0 |
| if (r0 != 0) {
0x0007ff4e bne.w 0x8028c | goto label_31;
| }
| label_16:
0x0007ff52 mov r0, r4 | r0 = r4;
0x0007ff54 blx 0x8dac | fcn_00008dac ();
0x0007ff58 b 0x7ffe8 | goto label_6;
| label_22:
0x0007ff5a ldr r0, [pc, 0x1b0] |
0x0007ff5c mov r1, r4 | r1 = r4;
0x0007ff5e add r0, pc | r0 = 0x100070;
0x0007ff60 blx 0x8df4 | r0 = fcn_00008df4 ();
0x0007ff64 cmp r0, 0 |
| if (r0 >= 0) {
0x0007ff66 bge 0x7fe92 | goto label_1;
| }
0x0007ff68 blx 0x9628 | r0 = fcn_00009628 ();
0x0007ff6c ldr r4, [r0] | r4 = *(r0);
0x0007ff6e bl 0x70bf8 | fcn_00070bf8 ();
0x0007ff72 cmp r4, 2 |
| if (r4 == 2) {
0x0007ff74 beq.w 0x801aa | goto label_32;
| }
0x0007ff78 cmp r0, 6 |
| if (r0 <= 6) {
0x0007ff7a ble 0x7fe92 | goto label_1;
| }
0x0007ff7c ldr r2, [pc, 0x190] |
0x0007ff7e movw r3, 0x295 | r3 = 0x295;
0x0007ff82 ldr r5, [pc, 0x190] |
0x0007ff84 ldr r0, [pc, 0x190] |
0x0007ff86 add r2, pc | r2 = 0x10009a;
0x0007ff88 add r5, pc | r5 = 0x1000a2;
0x0007ff8a add r0, pc | r0 = 0x1000a6;
0x0007ff8c b 0x7fe84 | goto label_2;
| label_23:
0x0007ff8e bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007ff92 cmp r0, 6 |
| if (r0 <= 6) {
0x0007ff94 ble 0x7fed6 | goto label_3;
| }
0x0007ff96 ldr r2, [pc, 0x184] |
0x0007ff98 movw r3, 0x29b | r3 = 0x29b;
0x0007ff9c ldr r5, [pc, 0x180] |
0x0007ff9e mov r1, r4 | r1 = r4;
0x0007ffa0 ldr r0, [pc, 0x180] |
0x0007ffa2 add r2, pc | r2 = 0x1000c4;
0x0007ffa4 add r5, pc | r5 = 0x1000c8;
0x0007ffa6 adds r2, 7 | r2 += 7;
0x0007ffa8 add r0, pc | r0 = 0x1000d0;
0x0007ffaa strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x0007ffae movs r0, 7 | r0 = 7;
0x0007ffb0 bl 0x71448 | fcn_00071448 ();
0x0007ffb4 b 0x7fed6 | goto label_3;
| label_25:
0x0007ffb6 mov r0, r5 | r0 = r5;
0x0007ffb8 ldr r4, [pc, 0x16c] |
0x0007ffba bl 0x7f314 | fcn_0007f314 (r0);
0x0007ffbe ldr r2, [pc, 0x16c] |
0x0007ffc0 movs r1, 0 | r1 = 0;
0x0007ffc2 ldr r3, [pc, 0x16c] |
0x0007ffc4 add r4, pc | r4 = 0x1000f0;
0x0007ffc6 str r0, [sp, 8] | var_8h = r0;
0x0007ffc8 movs r0, 7 | r0 = 7;
0x0007ffca add r2, pc | r2 = 0x1000fc;
0x0007ffcc str r4, [sp] | *(sp) = r4;
0x0007ffce add r3, pc | r3 = 0x100104;
0x0007ffd0 adds r2, 7 | r2 += 7;
0x0007ffd2 str r3, [sp, 4] | var_4h = r3;
0x0007ffd4 movw r3, 0x30e | r3 = 0x30e;
0x0007ffd8 bl 0x71448 | fcn_00071448 ();
0x0007ffdc b 0x7feb8 | goto label_4;
| label_26:
0x0007ffde bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007ffe2 cmp r0, 6 |
| if (r0 > 6) {
0x0007ffe4 bgt.w 0x80198 | goto label_33;
| }
| label_6:
0x0007ffe8 ldr r0, [pc, 0x148] |
0x0007ffea mov r1, r7 | r1 = r7;
0x0007ffec add r0, pc | r0 = 0x100124;
0x0007ffee bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007fff2 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 <= r0) {
0x0007fff4 bgt 0x80018 |
0x0007fff6 adds r3, r4, 2 | r3 = r4 + 2;
0x0007fff8 bics r3, r3, 2 | __asm ("bics r3, r3, 2");
| if (r3 == r4) {
0x0007fffc beq 0x80048 | goto label_34;
| }
0x0007fffe bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00080002 cmp r0, 6 |
| if (r0 > 6) {
0x00080004 bgt 0x80092 | goto label_35;
| }
| label_9:
0x00080006 rsbs r5, r4, 0 | r5 = r4 - ;
0x00080008 uxtb r5, r5 | r5 = (int8_t) r5;
0x0008000a rsbs r5, r5, 0 | r5 -= ;
| label_10:
0x0008000c cmp r5, 0 |
0x0008000e ldr r0, [r7, 8] | r0 = var_8h_3;
0x00080010 it ge |
| if (r5 < 0) {
0x00080012 mvnge r5, 0x55 | r5 = ~0x55;
| }
0x00080016 movs r0, r0 |
| }
| label_8:
0x00080018 ldr r4, [r7] | r4 = *(r7);
| label_11:
0x0008001a ldr r1, [pc, 0x11c] |
0x0008001c mov r0, r4 | r0 = r4;
0x0008001e add r1, pc | r1 = 0x10015c;
0x00080020 blx 0x95e0 | r0 = fcn_000095e0 ();
0x00080024 cmp r0, 0 |
| if (r0 == 0) {
0x00080026 beq.w 0x8018a | goto label_36;
| }
0x0008002a ldr r0, [pc, 0x110] |
0x0008002c mov r2, r4 | r2 = r4;
0x0008002e movs r1, 0x1c | r1 = 0x1c;
0x00080030 add r0, pc | r0 = 0x100172;
0x00080032 bl 0x7a870 | r0 = fcn_0007a870 (r0, r1, r2);
0x00080036 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x00080038 bge.w 0x7feb0 | goto label_5;
| }
| label_12:
0x0008003c movs r5, 0x1b | r5 = 0x1b;
0x0008003e b 0x7feb0 | goto label_5;
| label_27:
0x00080040 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00080042 cmp r3, 0 |
| if (r3 == 0) {
0x00080044 beq 0x7ffe8 | goto label_6;
| }
0x00080046 b 0x7fef8 | goto label_7;
| label_34:
0x00080048 bl 0x76a30 | r0 = fcn_00076a30 (r0);
0x0008004c cmp r0, 1 |
| if (r0 == 1) {
0x0008004e beq 0x800a4 | goto label_37;
| }
0x00080050 ldr r0, [pc, 0xec] |
0x00080052 mov r1, r7 | r1 = r7;
0x00080054 add r0, pc | r0 = 0x100198;
0x00080056 bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0008005a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 > r0) {
0x0008005c bgt 0x80018 | goto label_8;
| }
0x0008005e adds r3, r4, 2 | r3 = r4 + 2;
0x00080060 bics r3, r3, 2 | __asm ("bics r3, r3, 2");
| if (r3 == r4) {
0x00080064 beq.w 0x801ca | goto label_38;
| }
0x00080068 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0008006c cmp r0, 6 |
| if (r0 <= 6) {
0x0008006e ble 0x80006 | goto label_9;
| }
0x00080070 ldr r2, [pc, 0xd0] |
0x00080072 mov.w r3, 0x2e0 | r3 = 0x2e0;
0x00080076 ldr r6, [pc, 0xd0] |
0x00080078 ldr r5, [pc, 0xd0] |
0x0008007a add r2, pc | r2 = 0x1001c2;
0x0008007c add r6, pc | r6 = 0x1001ca;
0x0008007e add r5, pc | r5 = 0x1001ce;
| do {
0x00080080 movs r0, 7 | r0 = 7;
0x00080082 strd r5, r6, [sp] | __asm ("strd r5, r6, [sp]");
0x00080086 mov r1, r4 | r1 = r4;
0x00080088 add r2, r0 | r2 += r0;
0x0008008a bl 0x71448 | r0 = fcn_00071448 ();
0x0008008e mov r5, r0 | r5 = r0;
0x00080090 b 0x8000c | goto label_10;
| label_35:
0x00080092 ldr r2, [pc, 0xbc] |
0x00080094 mov.w r3, 0x2c4 | r3 = 0x2c4;
0x00080098 ldr r6, [pc, 0xb8] |
0x0008009a ldr r5, [pc, 0xbc] |
0x0008009c add r2, pc | r2 = 0x1001f2;
0x0008009e add r6, pc | r6 = 0x1001f6;
0x000800a0 add r5, pc | r5 = 0x1001fe;
0x000800a2 b 0x80080 |
| } while (1);
| label_37:
0x000800a4 ldr r0, [pc, 0xb4] |
0x000800a6 add r0, pc | r0 = 0x100206;
0x000800a8 blx 0x8b80 | r0 = ftello64 ();
0x000800ac mov r4, r0 | r4 = r0;
0x000800ae cmp r0, 0 |
| if (r0 == 0) {
0x000800b0 beq.w 0x801e6 | goto label_17;
| }
0x000800b4 ldrb r3, [r0] | r3 = *(r0);
0x000800b6 cmp r3, 0 |
| if (r3 != 0) {
0x000800b8 bne 0x8001a | goto label_11;
| }
| label_15:
0x000800ba movs r5, 0 | r5 = 0;
0x000800bc b 0x7feb0 | goto label_5;
| label_28:
0x00080160 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00080164 cmp r0, 6 |
| if (r0 <= 6) {
0x00080166 ble.w 0x7ffe8 | goto label_6;
| }
0x0008016a ldr r2, [pc, 0x1a4] |
0x0008016c mov.w r3, 0x2ac | r3 = 0x2ac;
0x00080170 ldr r5, [pc, 0x1a0] |
0x00080172 ldr r0, [pc, 0x1a4] |
0x00080174 add r2, pc | r2 = 0x10048a;
0x00080176 add r5, pc | r5 = 0x10048e;
0x00080178 add r0, pc | r0 = 0x100496;
| label_13:
0x0008017a strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x0008017e mov r1, r4 | r1 = r4;
0x00080180 adds r2, 7 | r2 += 7;
0x00080182 movs r0, 7 | r0 = 7;
0x00080184 bl 0x71448 | fcn_00071448 ();
0x00080188 b 0x7ffe8 | goto label_6;
| label_36:
0x0008018a bl 0x7eef4 | r0 = fcn_0007eef4 ();
0x0008018e mov r5, r0 | r5 = r0;
0x00080190 cmp r0, 0 |
| if (r0 != 0) {
0x00080192 bne.w 0x7feb0 | goto label_5;
| }
0x00080196 b 0x8003c | goto label_12;
| label_33:
0x00080198 ldr r2, [pc, 0x180] |
0x0008019a movw r3, 0x2a6 | r3 = 0x2a6;
0x0008019e ldr r5, [pc, 0x180] |
0x000801a0 ldr r0, [pc, 0x180] |
0x000801a2 add r2, pc | r2 = 0x1004c2;
0x000801a4 add r5, pc | r5 = 0x1004ca;
0x000801a6 add r0, pc | r0 = 0x1004ce;
0x000801a8 b 0x8017a | goto label_13;
| label_32:
0x000801aa movs r5, 0x14 | r5 = 0x14;
0x000801ac b 0x7feb0 | goto label_5;
| label_29:
0x000801ae ldr r0, [pc, 0x178] |
0x000801b0 sub sp, 0x18 |
0x000801b2 ldr r3, [pc, 0x178] |
0x000801b4 add r4, sp, 0x10 | r4 += var_10h_2;
0x000801b6 movs r2, 0x18 | r2 = 0x18;
0x000801b8 add r0, pc | r0 = 0x1004e6;
0x000801ba strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x000801be add r3, pc | r3 = 0x1004f0;
0x000801c0 movs r1, 1 | r1 = 1;
0x000801c2 mov r0, r4 | r0 = r4;
0x000801c4 blx 0x9494 | fcn_00009494 ();
0x000801c8 b 0x7ff30 | goto label_14;
| label_38:
0x000801ca ldr r1, [pc, 0x164] |
0x000801cc mov r2, r7 | r2 = r7;
0x000801ce movs r0, 1 | r0 = 1;
0x000801d0 add r1, pc | r1 = 0x100506;
0x000801d2 bl 0x7714c | r0 = fcn_0007714c (r0, r1, r2, r3);
0x000801d6 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 > r0) {
0x000801d8 bgt.w 0x80018 | goto label_8;
| }
| if (r4 != r0) {
0x000801dc beq 0x801e6 |
0x000801de bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x000801e2 cmp r0, 6 |
| if (r0 > 6) {
0x000801e4 bgt 0x80296 | goto label_39;
| }
| }
| label_17:
0x000801e6 bl 0x7eef4 | r0 = fcn_0007eef4 ();
0x000801ea mov r5, r0 | r5 = r0;
0x000801ec cmp r0, 0 |
| if (r0 != 0) {
0x000801ee bne.w 0x7feb0 | goto label_5;
| }
0x000801f2 bl 0x65fd0 | r0 = fcn_00065fd0 ();
0x000801f6 cmp r0, 0 |
| if (r0 == 0) {
0x000801f8 beq.w 0x800ba | goto label_15;
| }
0x000801fc bl 0x66e7c | r0 = fcn_00066e7c ();
0x00080200 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00080202 blt 0x8022c | goto label_40;
| }
| if (r4 == r0) {
0x00080204 beq 0x802b6 | goto label_41;
| }
0x00080206 ldr r0, [pc, 0x12c] |
0x00080208 mov r1, r5 | r1 = r5;
0x0008020a add r0, pc | r0 = 0x100544;
0x0008020c blx 0x8df4 | r0 = fcn_00008df4 ();
0x00080210 cmp r0, 0 |
| if (r0 >= 0) {
0x00080212 bge 0x802e4 | goto label_42;
| }
| label_18:
0x00080214 blx 0x9628 | r0 = fcn_00009628 ();
0x00080218 ldr r4, [r0] | r4 = *(r0);
0x0008021a cmp r4, 2 |
| if (r4 == 2) {
0x0008021c beq.w 0x800ba | goto label_15;
| }
| label_19:
0x00080220 rsbs r4, r4, 0 | r4 -= ;
0x00080222 cmp r4, 0 |
| if (r4 > 0) {
0x00080224 bgt.w 0x8003c | goto label_12;
| }
| if (r4 == 0) {
0x00080228 beq.w 0x800ba | goto label_15;
| }
| label_40:
0x0008022c bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x00080230 cmp r0, 6 |
| if (r0 <= 6) {
0x00080232 ble.w 0x7feb8 | goto label_4;
| }
0x00080236 ldr r2, [pc, 0x100] |
0x00080238 mov r1, r4 | r1 = r4;
0x0008023a ldr r0, [pc, 0x100] |
0x0008023c ldr r3, [pc, 0x100] |
0x0008023e add r2, pc | r2 = 0x10057c;
0x00080240 add r0, pc | r0 = 0x100582;
0x00080242 adds r2, 7 | r2 += 7;
0x00080244 add r3, pc | r3 = 0x100588;
0x00080246 strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x0008024a movw r3, 0x2fa | r3 = 0x2fa;
0x0008024e movs r0, 7 | r0 = 7;
0x00080250 bl 0x71448 | fcn_00071448 ();
0x00080254 b 0x7feb0 | goto label_5;
| label_30:
0x00080256 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0008025a cmp r0, 6 |
0x0008025c it le |
| if (r0 <= 6) {
0x0008025e ldrle r4, [r7, 0x10] | r4 = *((r7 + 0x10));
| goto label_43;
| }
| if (r0 <= 6) {
| label_43:
0x00080260 ble.w 0x7ff52 | goto label_16;
| }
0x00080264 ldr r2, [pc, 0xdc] |
0x00080266 mov r1, r5 | r1 = r5;
0x00080268 ldr r3, [pc, 0xdc] |
0x0008026a movs r0, 7 | r0 = 7;
0x0008026c ldr.w ip, [pc, 0xdc] |
0x00080270 add r2, pc | r2 = 0x1005b8;
0x00080272 str r4, [sp, 8] | var_8h_2 = r4;
0x00080274 add r3, pc | r3 = 0x1005c0;
0x00080276 adds r2, 7 | r2 += 7;
0x00080278 add ip, pc | ip = 0x1005c8;
0x0008027a str r3, [sp, 4] | var_4h_2 = r3;
0x0008027c str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00080280 mov.w r3, 0x2b4 | r3 = 0x2b4;
0x00080284 bl 0x71448 | fcn_00071448 ();
0x00080288 ldr r4, [r7, 0x10] | r4 = var_10h_3;
0x0008028a b 0x7ff52 | goto label_16;
| label_31:
0x0008028c mov r0, r4 | r0 = r4;
0x0008028e movs r5, 0x19 | r5 = 0x19;
0x00080290 blx 0x8dac | fcn_00008dac ();
0x00080294 b 0x7feb0 | goto label_5;
| label_39:
0x00080296 ldr r2, [pc, 0xb8] |
0x00080298 movw r3, 0x2e9 | r3 = 0x2e9;
0x0008029c ldr r5, [pc, 0xb4] |
0x0008029e mov r1, r4 | r1 = r4;
0x000802a0 ldr r0, [pc, 0xb4] |
0x000802a2 add r2, pc | r2 = 0x1005f8;
0x000802a4 add r5, pc | r5 = 0x1005fc;
0x000802a6 adds r2, 7 | r2 += 7;
0x000802a8 add r0, pc | r0 = 0x100604;
0x000802aa strd r0, r5, [sp] | __asm ("strd r0, r5, [sp]");
0x000802ae movs r0, 7 | r0 = 7;
0x000802b0 bl 0x71448 | fcn_00071448 ();
0x000802b4 b 0x801e6 | goto label_17;
| label_41:
0x000802b6 ldr r0, [pc, 0xa4] |
0x000802b8 mov r1, r4 | r1 = r4;
0x000802ba add r0, pc | r0 = 0x10061c;
0x000802bc blx 0x8df4 | r0 = fcn_00008df4 ();
0x000802c0 cmp r0, 0 |
| if (r0 < 0) {
0x000802c2 blt 0x80214 | goto label_18;
| }
0x000802c4 ldr r0, [pc, 0x98] |
0x000802c6 mov r1, r4 | r1 = r4;
0x000802c8 add r0, pc | r0 = 0x10062c;
0x000802ca blx 0x8df4 | r0 = fcn_00008df4 ();
0x000802ce cmp r0, 0 |
| if (r0 >= 0) {
0x000802d0 bge.w 0x800ba | goto label_15;
| }
| label_20:
0x000802d4 blx 0x9628 | r0 = fcn_00009628 ();
0x000802d8 ldr r4, [r0] | r4 = *(r0);
0x000802da cmp r4, 2 |
| if (r4 != 2) {
0x000802dc bne 0x80220 | goto label_19;
| }
0x000802de b 0x8003c | goto label_12;
| label_21:
0x000802e0 blx 0x927c | fprintf_chk ()
| label_42:
0x000802e4 ldr r0, [pc, 0x7c] |
0x000802e6 mov r1, r5 | r1 = r5;
0x000802e8 add r0, pc | r0 = 0x100650;
0x000802ea blx 0x8df4 | r0 = fcn_00008df4 ();
0x000802ee cmp r0, 0 |
| if (r0 == 0) {
0x000802f0 beq.w 0x8003c | goto label_12;
| }
| if (r0 >= 0) {
0x000802f4 bge 0x80300 | goto label_44;
| }
0x000802f6 blx 0x9628 | r0 = fcn_00009628 ();
0x000802fa ldr r4, [r0] | r4 = *(r0);
0x000802fc cmp r4, 2 |
| if (r4 != 2) {
0x000802fe bne 0x80220 | goto label_19;
| }
| label_44:
0x00080300 ldr r0, [pc, 0x64] |
0x00080302 movs r1, 0 | r1 = 0;
0x00080304 add r0, pc | r0 = 0x100670;
0x00080306 blx 0x8df4 | r0 = fcn_00008df4 ();
0x0008030a cmp r0, 0 |
| if (r0 < 0) {
0x0008030c blt 0x802d4 | goto label_20;
| }
0x0008030e b 0x800ba | goto label_15;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/udevadm @ 0x8036c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0008036c () | void fcn_0008036c () {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| label_26:
0x0007f32c ldr r2, [pc, 0x2f0] |
0x0007f32e ldr r3, [pc, 0x2f4] | r3 = *(0x7f626);
0x0007f330 ldr r0, [pc, 0x2e0] |
0x0007f332 add r2, pc | r2 = 0xfe956;
0x0007f334 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0007f338 ldr r7, [pc, 0x2dc] | r7 = *(0x7f618);
0x0007f33a sub sp, 0x34 |
0x0007f33c add r0, pc | r0 = 0xfe954;
0x0007f33e ldr r3, [r2, r3] |
0x0007f340 ldr r3, [r3] | r3 = *(0xfe956);
0x0007f342 str r3, [sp, 0x2c] | var_2ch = r3;
0x0007f344 mov.w r3, 0 | r3 = 0;
0x0007f348 blx 0x9240 | nl_langinfo (r0);
0x0007f34c ldr r4, [r7, r0] | r4 = *(0x7f618);
0x0007f34e cmp r4, 0 |
| if (r4 >= 0) {
0x0007f350 blt 0x7f370 |
| label_0:
0x0007f352 ldr r2, [pc, 0x2d4] |
0x0007f354 ldr r3, [pc, 0x2cc] | r3 = *(0x7f624);
0x0007f356 add r2, pc | r2 = 0xfe984;
0x0007f358 ldr r3, [r2, r3] | r3 = *(0xfe984);
0x0007f35a ldr r2, [r3] | r2 = *(0xfe984);
0x0007f35c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0007f35e eors r2, r3 | r2 ^= r3;
0x0007f360 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007f364 bne.w 0x7fb92 | goto label_27;
| }
0x0007f368 mov r0, r4 | r0 = r4;
0x0007f36a add sp, 0x34 |
0x0007f36c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0007f370 ldr r6, [pc, 0x2b8] |
0x0007f372 add r5, sp, 0x28 | r5 += var_28h;
0x0007f374 ldr.w sb, [pc, 0x2b8] |
0x0007f378 ldr.w fp, [pc, 0x2b8] |
0x0007f37c ldr.w r8, [pc, 0x2b8] |
0x0007f380 add r6, pc | r6 = 0xfe9b0;
0x0007f382 add sb, pc | sb = 0xfe9b6;
0x0007f384 add.w sl, r6, 4 | sl = r6 + 4;
0x0007f388 add fp, pc | fp = 0xfe9c0;
0x0007f38a add.w r3, r6, 0x10 | r3 = r6 + 0x10;
0x0007f38e add r8, pc | r8 = 0xfe9ca;
0x0007f390 str r3, [sp, 0x1c] | var_1ch = r3;
| label_7:
0x0007f392 movs r6, 0 | r6 = 0;
0x0007f394 mov r1, r5 | r1 = r5;
0x0007f396 mov r0, sb | r0 = sb;
0x0007f398 str r6, [sp, 0x28] | var_28h = r6;
0x0007f39a bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007f39e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0007f3a0 bge 0x7f408 | goto label_28;
| }
0x0007f3a2 adds r6, r4, 2 | r6 = r4 + 2;
0x0007f3a4 ldr r0, [sp, 0x28] | r0 = var_28h;
| if (r6 == r4) {
0x0007f3a6 beq 0x7f428 | goto label_29;
| }
0x0007f3a8 blx 0x8dac | fcn_00008dac ();
| label_1:
0x0007f3ac ldr r1, [pc, 0x28c] |
0x0007f3ae ldr r0, [pc, 0x290] |
0x0007f3b0 add r1, pc | r1 = 0xfe9f0;
0x0007f3b2 add r0, pc | r0 = 0xfe9f8;
0x0007f3b4 blx 0x8fb4 | r0 = fcn_00008fb4 ();
0x0007f3b8 mov r6, r0 | r6 = r0;
0x0007f3ba cmp r0, 0 |
| if (r0 == 0) {
0x0007f3bc beq.w 0x7fc36 | goto label_30;
| }
0x0007f3c0 ldr.w sb, [pc, 0x280] |
0x0007f3c4 mov.w r8, 0 | r8 = 0;
0x0007f3c8 add sb, pc | sb = 0xfea10;
0x0007f3ca b 0x7f3e2 |
| while (r3 >= r0) {
0x0007f3cc ldr.w sl, [sp, 0x28] | sl = var_28h;
| if (r0 == 0) {
0x0007f3d0 beq 0x7f45a | goto label_31;
| }
0x0007f3d2 mov r1, sb | r1 = sb;
0x0007f3d4 mov r0, sl | r0 = sl;
0x0007f3d6 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
| if (r0 != 0) {
0x0007f3da cbnz r0, 0x7f44c | goto label_32;
| }
0x0007f3dc mov r0, sl | r0 = sl;
0x0007f3de blx 0x8dac | fcn_00008dac ();
0x0007f3e2 mov r3, r5 | r3 = r5;
0x0007f3e4 movs r2, 0 | r2 = 0;
0x0007f3e6 mov.w r1, 0x100000 | r1 = 0x100000;
0x0007f3ea mov r0, r6 | r0 = r6;
0x0007f3ec str.w r8, [sp, 0x28] | __asm ("str.w r8, [var_28h]");
0x0007f3f0 bl 0x6b144 | r0 = fcn_0006b144 (r0, r1, r2, r3);
0x0007f3f4 subs r3, r0, 0 | r3 = r0 - 0;
0x0007f3f6 bge 0x7f3cc |
| }
0x0007f3f8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007f3fa mov r4, r3 | r4 = r3;
0x0007f3fc blx 0x8dac | fcn_00008dac ();
0x0007f400 mov r0, r6 | r0 = r6;
0x0007f402 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0007f406 b 0x7f352 | goto label_0;
| label_28:
0x0007f408 mov r4, r6 | r4 = r6;
0x0007f40a mov r1, fp | r1 = fp;
0x0007f40c ldr r6, [sp, 0x28] | r6 = var_28h;
0x0007f40e b 0x7f414 |
| while (r4 != 0xc) {
0x0007f410 ldr.w r1, [r8, r4, lsl 3] | offset_0 = r4 << 3;
| r1 = *((r8 + offset_0));
0x0007f414 mov r0, r6 | r0 = r6;
0x0007f416 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x0007f41a cmp r0, 0 |
| if (r0 != 0) {
0x0007f41c bne.w 0x7f576 | goto label_33;
| }
0x0007f420 adds r4, 1 | r4++;
0x0007f422 cmp r4, 0xc |
0x0007f424 bne 0x7f410 |
| }
0x0007f426 mov r0, r6 | r0 = r6;
| label_29:
0x0007f428 blx 0x8dac | fcn_00008dac ();
0x0007f42c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0007f42e cmp r3, sl |
| if (r3 != sl) {
0x0007f430 bne.w 0x7f71e | goto label_34;
| }
0x0007f434 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f438 cmp r0, 6 |
| if (r0 > 6) {
0x0007f43a bgt.w 0x7f724 | goto label_35;
| }
| label_2:
0x0007f43e bl 0x7eda0 | r0 = fcn_0007eda0 (r0, r1, r2, r3, r4, r5, r6);
0x0007f442 clz r4, r0 | r4 &= r0;
0x0007f446 lsrs r4, r4, 5 | r4 >>= 5;
0x0007f448 lsls r4, r4, 4 | r4 <<= 4;
0x0007f44a b 0x7f3ac | goto label_1;
| label_32:
0x0007f44c ldr r1, [pc, 0x1f8] |
0x0007f44e add r1, pc | r1 = 0xfea9a;
0x0007f450 bl 0x803c0 | r0 = fcn_000803c0 (r0, r1);
0x0007f454 cmp r0, 0 |
| if (r0 != 0) {
0x0007f456 bne.w 0x7f6d6 | goto label_36;
| }
| label_31:
0x0007f45a mov r0, sl | r0 = sl;
0x0007f45c blx 0x8dac | fcn_00008dac ();
0x0007f460 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f464 cmp r0, 6 |
| if (r0 > 6) {
0x0007f466 ble 0x7f486 |
0x0007f468 ldr r3, [pc, 0x1e0] |
0x0007f46a ldr r2, [pc, 0x1e4] |
0x0007f46c add r3, pc | r3 = 0xfeabc;
0x0007f46e str r3, [sp, 4] | var_4h = r3;
0x0007f470 add r2, pc | r2 = 0xfeac6;
0x0007f472 ldr r3, [pc, 0x1e0] |
0x0007f474 adds r2, 7 | r2 += 7;
0x0007f476 add r3, pc | r3 = 0xfead0;
0x0007f478 str r3, [sp] | *(sp) = r3;
0x0007f47a movw r3, 0x18f | r3 = 0x18f;
| label_25:
0x0007f47e movs r1, 0 | r1 = 0;
0x0007f480 movs r0, 7 | r0 = 7;
0x0007f482 bl 0x71448 | fcn_00071448 ();
| }
| label_24:
0x0007f486 mov r0, r6 | r0 = r6;
0x0007f488 movs r6, 0 | r6 = 0;
0x0007f48a bl 0x69b30 | r0 = fcn_00069b30 (r0, r1, r2, r3);
| label_23:
0x0007f48e bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f492 cmp r0, 6 |
| if (r0 > 6) {
0x0007f494 bgt.w 0x7f748 | goto label_37;
| }
| label_8:
0x0007f498 cmp r4, 0 |
| if (r4 < 0) {
0x0007f49a blt.w 0x7f352 | goto label_0;
| }
0x0007f49e cmp r4, 0x10 |
| if (r4 == 0x10) {
0x0007f4a0 beq.w 0x7f71a | goto label_38;
| }
0x0007f4a4 cmp r4, 0 |
| if (r4 != 0) {
0x0007f4a6 bne.w 0x7f5d2 | goto label_17;
| }
| label_6:
0x0007f4aa ldr r0, [pc, 0x1ac] |
0x0007f4ac movs r1, 0 | r1 = 0;
0x0007f4ae add r0, pc | r0 = 0xfeb0c;
0x0007f4b0 blx 0x8df4 | r0 = fcn_00008df4 ();
0x0007f4b4 cmp r0, 0 |
| if (r0 < 0) {
0x0007f4b6 blt.w 0x7f858 | goto label_39;
| }
0x0007f4ba bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f4be cmp r0, 6 |
| if (r0 > 6) {
0x0007f4c0 bgt.w 0x7f914 | goto label_40;
| }
| label_3:
0x0007f4c4 ldr.w sb, [pc, 0x194] |
0x0007f4c8 add.w r8, sp, 0x20 | r8 += var_20h;
0x0007f4cc movs r3, 0 | r3 = 0;
0x0007f4ce mov r1, r8 | r1 = r8;
0x0007f4d0 str r3, [sp, 0x20] | var_20h = r3;
0x0007f4d2 add sb, pc | sb = 0xfeb32;
0x0007f4d4 mov r0, sb | r0 = sb;
0x0007f4d6 bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007f4da adds r3, r0, 2 | r3 = r0 + 2;
0x0007f4dc mov r4, r0 | r4 = r0;
0x0007f4de it ne |
| if (r3 == r0) {
0x0007f4e0 movne r3, 1 | r3 = 1;
| }
0x0007f4e2 ands.w r6, r3, r0, lsr 31 | r6 = r3 & (r0 >> 31);
| if (r6 != r3) {
0x0007f4e6 bne 0x7f56e | goto label_41;
| }
0x0007f4e8 cmp r0, 0 |
| if (r0 >= 0) {
0x0007f4ea blt 0x7f508 |
0x0007f4ec ldr r1, [pc, 0x170] |
0x0007f4ee mov r2, r5 | r2 = r5;
0x0007f4f0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007f4f2 add r1, pc | r1 = 0xfeb56;
0x0007f4f4 blx 0x8b20 | r0 = kmod_list_next ();
0x0007f4f8 cmp r0, 1 |
| if (r0 == 1) {
0x0007f4fa beq.w 0x7f9b0 | goto label_42;
| }
0x0007f4fe bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f502 cmp r0, 6 |
| if (r0 > 6) {
0x0007f504 bgt.w 0x7f980 | goto label_43;
| }
| }
| label_11:
0x0007f508 ldr r0, [pc, 0x158] |
0x0007f50a mov r1, r8 | r1 = r8;
0x0007f50c add r0, pc | r0 = 0xfeb74;
0x0007f50e bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007f512 adds r2, r0, 2 | r2 = r0 + 2;
0x0007f514 mov r4, r0 | r4 = r0;
| if (r2 == r0) {
0x0007f516 beq.w 0x7f93a | goto label_44;
| }
0x0007f51a cmp r4, 0 |
0x0007f51c ldr r0, [sp, 0x20] | r0 = var_20h;
| if (r4 < 0) {
0x0007f51e blt.w 0x7f7ec | goto label_45;
| }
0x0007f522 ldr.w sb, [pc, 0x144] |
0x0007f526 add.w r8, sp, 0x24 | r8 += var_24h;
0x0007f52a ldr.w sl, [pc, 0x140] |
0x0007f52e movs r6, 0 | r6 = 0;
0x0007f530 str r0, [sp, 0x24] | var_24h = r0;
0x0007f532 add sb, pc | sb = 0xfeba0;
0x0007f534 add sl, pc | sl = 0xfeba6;
0x0007f536 b 0x7f556 |
| if (r6 == 0) {
| while (r4 >= r0) {
0x0007f538 beq.w 0x7f94e | goto label_46;
| }
0x0007f53c ldr.w fp, [sp, 0x28] | fp = var_28h;
0x0007f540 mov r1, sl | r1 = sl;
0x0007f542 mov r0, fp | r0 = fp;
0x0007f544 blx 0x95e0 | r0 = fcn_000095e0 ();
0x0007f548 mov r4, r0 | r4 = r0;
0x0007f54a cmp r0, 0 |
| if (r0 == 0) {
0x0007f54c beq.w 0x7f968 | goto label_47;
| }
0x0007f550 mov r0, fp | r0 = fp;
0x0007f552 blx 0x8dac | fcn_00008dac ();
0x0007f556 movs r3, 0 | r3 = 0;
0x0007f558 mov r2, sb | r2 = sb;
0x0007f55a mov r1, r5 | r1 = r5;
0x0007f55c mov r0, r8 | r0 = r8;
0x0007f55e str r6, [sp, 0x28] | var_28h = r6;
0x0007f560 bl 0x695ac | r0 = fcn_000695ac (r0, r1, r2, r3);
0x0007f564 subs r4, r0, 0 | r4 = r0 - 0;
0x0007f566 bge 0x7f538 |
| }
0x0007f568 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007f56a blx 0x8dac | fcn_00008dac ();
| label_41:
0x0007f56e ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007f570 blx 0x8dac | fcn_00008dac ();
0x0007f574 b 0x7f352 | goto label_0;
| label_33:
0x0007f576 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f57a cmp r0, 6 |
| if (r0 > 6) {
0x0007f57c bgt.w 0x7f6f0 | goto label_48;
| }
| label_5:
0x0007f580 ldr r2, [pc, 0xec] |
0x0007f582 mov r0, r6 | r0 = r6;
0x0007f584 add r2, pc | r2 = 0xfebf8;
0x0007f586 add.w r3, r2, r4, lsl 3 | r3 = r2 + (r4 << 3);
0x0007f58a ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x0007f58c blx 0x8dac | fcn_00008dac ();
0x0007f590 cmp r4, 2 |
| if (r4 == 2) {
0x0007f592 bne 0x7f5ba |
0x0007f594 bl 0x7eda0 | r0 = fcn_0007eda0 (r0, r1, r2, r3, r4, r5, r6);
0x0007f598 cmp r0, 1 |
| if (r0 == 1) {
0x0007f59a beq.w 0x7f76c | goto label_49;
| }
0x0007f59e cmp r0, 2 |
| if (r0 == 2) {
0x0007f5a0 beq 0x7f68c | goto label_50;
| }
| if (r0 == 0) {
0x0007f5a2 cbz r0, 0x7f5d8 | goto label_4;
| }
0x0007f5a4 ldr r1, [pc, 0xcc] |
0x0007f5a6 mov.w r2, 0x10a | r2 = 0x10a;
0x0007f5aa ldr r3, [pc, 0xcc] |
0x0007f5ac ldr r0, [pc, 0xcc] |
0x0007f5ae add r1, pc | r1 = 0xfec26;
0x0007f5b0 add r3, pc | r3 = 0xfec2e;
0x0007f5b2 adds r1, 7 | r1 += 7;
0x0007f5b4 add r0, pc | r0 = 0xfec34;
0x0007f5b6 bl 0x71614 | fcn_00071614 (r0, r1, r2, r3);
| }
0x0007f5ba cmp r4, 0 |
| if (r4 == 0) {
0x0007f5bc beq.w 0x7f43e | goto label_2;
| }
0x0007f5c0 cmp r4, 8 |
| if (r4 > 8) {
0x0007f5c2 bhi.w 0x7f3ac | goto label_1;
| }
0x0007f5c6 mov.w r3, 0x124 | r3 = 0x124;
0x0007f5ca lsrs r3, r4 | r3 >>= r4;
0x0007f5cc lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
| if (r0 >= r3) {
0x0007f5ce bpl.w 0x7f3ac | goto label_1;
| }
| label_17:
0x0007f5d2 cmp r4, 5 |
| if (r4 == 5) {
0x0007f5d4 beq.w 0x7f4c4 | goto label_3;
| }
| label_4:
0x0007f5d8 ldr r0, [pc, 0x40] |
0x0007f5da add r0, pc | r0 = 0xfebfa;
0x0007f5dc blx 0x9240 | nl_langinfo (r0);
0x0007f5e0 str r4, [r7, r0] | *((r7 + r0)) = r4;
0x0007f5e2 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f5e6 cmp r0, 6 |
| if (r0 <= 6) {
0x0007f5e8 ble.w 0x7f352 | goto label_0;
| }
0x0007f5ec mov r0, r4 | r0 = r4;
0x0007f5ee ldr r5, [pc, 0x90] |
0x0007f5f0 bl 0x7f314 | fcn_0007f314 (r0);
0x0007f5f4 ldr r2, [pc, 0x8c] |
0x0007f5f6 movs r1, 0 | r1 = 0;
0x0007f5f8 ldr r3, [pc, 0x8c] |
0x0007f5fa add r5, pc | r5 = 0xfec80;
0x0007f5fc str r0, [sp, 8] | var_8h = r0;
0x0007f5fe movs r0, 7 | r0 = 7;
0x0007f600 add r2, pc | r2 = 0xfec88;
0x0007f602 str r5, [sp] | *(sp) = r5;
0x0007f604 add r3, pc | r3 = 0xfec90;
0x0007f606 adds r2, 7 | r2 += 7;
0x0007f608 str r3, [sp, 4] | var_4h = r3;
0x0007f60a movw r3, 0x212 | r3 = 0x212;
0x0007f60e bl 0x71448 | fcn_00071448 ();
0x0007f612 b 0x7f352 | goto label_0;
| label_50:
0x0007f68c ldr.w r0, [pc, 0x634] |
0x0007f690 mov.w r8, 0 | r8 = 0;
0x0007f694 mov r3, r8 | r3 = r8;
0x0007f696 mov r2, r5 | r2 = r5;
0x0007f698 mov.w r1, -1 | r1 = -1;
0x0007f69c str.w r8, [sp, 0x28] | __asm ("str.w r8, [var_28h]");
0x0007f6a0 add r0, pc | r0 = 0xff368;
0x0007f6a2 bl 0x6a7bc | r0 = fcn_0006a7bc (r0, r1, r2);
0x0007f6a6 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x0007f6a8 blt.w 0x7f7f2 | goto label_51;
| }
0x0007f6ac ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007f6ae bl 0x7a9b8 | fcn_0007a9b8 (r0, r1);
0x0007f6b2 ldr.w r1, [pc, 0x614] |
0x0007f6b6 add r1, pc | r1 = 0xff384;
0x0007f6b8 bl 0x80428 | r0 = fcn_00080428 (r0, r1);
0x0007f6bc cmp r0, 0 |
| if (r0 == 0) {
0x0007f6be beq.w 0x7f81c | goto label_20;
| }
0x0007f6c2 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f6c6 cmp r0, 6 |
| if (r0 > 6) {
0x0007f6c8 bgt.w 0x7fa00 | goto label_52;
| }
0x0007f6cc ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007f6ce mov r4, r8 | r4 = r8;
0x0007f6d0 blx 0x8dac | fcn_00008dac ();
0x0007f6d4 b 0x7f3ac | goto label_1;
| label_36:
0x0007f6d6 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f6da cmp r0, 6 |
| if (r0 > 6) {
0x0007f6dc bgt.w 0x7f824 | goto label_53;
| }
0x0007f6e0 mov r0, sl | r0 = sl;
0x0007f6e2 movs r4, 6 | r4 = 6;
0x0007f6e4 blx 0x8dac | fcn_00008dac ();
0x0007f6e8 mov r0, r6 | r0 = r6;
0x0007f6ea bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0007f6ee b 0x7f5d8 | goto label_4;
| label_48:
0x0007f6f0 ldr.w r2, [pc, 0x5d8] |
0x0007f6f4 movs r1, 0 | r1 = 0;
0x0007f6f6 ldr.w r3, [pc, 0x5d8] |
0x0007f6fa movs r0, 7 | r0 = 7;
0x0007f6fc strd r6, sb, [sp, 8] | __asm ("strd r6, sb, [sp, 8]");
0x0007f700 add r2, pc | r2 = 0xff3d0;
0x0007f702 add r3, pc | r3 = 0xff3d8;
0x0007f704 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x0007f708 movs r3, 0xba | r3 = 0xba;
0x0007f70a ldr.w r2, [pc, 0x5c8] |
0x0007f70e add r2, pc | r2 = 0xff3e8;
0x0007f710 adds r2, 7 | r2 += 7;
0x0007f712 bl 0x71448 | fcn_00071448 ();
0x0007f716 ldr r6, [sp, 0x28] | r6 = var_28h;
0x0007f718 b 0x7f580 | goto label_5;
| label_38:
0x0007f71a movs r6, 1 | r6 = 1;
0x0007f71c b 0x7f4aa | goto label_6;
| label_34:
0x0007f71e ldr sb, [sl], 4 | sb = *(sl);
| sl += 4;
0x0007f722 b 0x7f392 | goto label_7;
| label_35:
0x0007f724 ldr.w r2, [pc, 0x5b0] |
0x0007f728 movs r0, 7 | r0 = 7;
0x0007f72a ldr.w r1, [pc, 0x5b0] |
0x0007f72e ldr.w r3, [pc, 0x5b0] |
0x0007f732 add r2, pc | r2 = 0xff40e;
0x0007f734 add r1, pc | r1 = 0xff416;
0x0007f736 adds r2, 7 | r2 += 7;
0x0007f738 add r3, pc | r3 = 0xff41e;
0x0007f73a strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x0007f73e movs r3, 0xbe | r3 = 0xbe;
0x0007f740 movs r1, 0 | r1 = 0;
0x0007f742 bl 0x71448 | fcn_00071448 ();
0x0007f746 b 0x7f43e | goto label_2;
| label_37:
0x0007f748 ldr.w r3, [pc, 0x598] |
0x0007f74c movs r1, 0 | r1 = 0;
0x0007f74e ldr.w r2, [pc, 0x598] |
0x0007f752 movs r0, 7 | r0 = 7;
0x0007f754 add r3, pc | r3 = 0xff43c;
0x0007f756 str r3, [sp, 4] | var_4h = r3;
0x0007f758 add r2, pc | r2 = 0xff446;
0x0007f75a ldr.w r3, [pc, 0x590] |
0x0007f75e adds r2, 7 | r2 += 7;
0x0007f760 add r3, pc | r3 = 0xff452;
0x0007f762 str r3, [sp] | *(sp) = r3;
0x0007f764 movs r3, 0x58 | r3 = 0x58;
0x0007f766 bl 0x71448 | fcn_00071448 ();
0x0007f76a b 0x7f498 | goto label_8;
| label_49:
0x0007f76c movs r4, 0 | r4 = 0;
0x0007f76e b 0x7f3ac | goto label_1;
| label_9:
0x0007f770 ldr.w r0, [pc, 0x57c] |
0x0007f774 mov r1, r8 | r1 = r8;
0x0007f776 add r0, pc | r0 = 0xff46a;
0x0007f778 blx 0x8df4 | r0 = fcn_00008df4 ();
0x0007f77c mov r1, r0 | r1 = r0;
| if (r0 == 0) {
0x0007f77e cbnz r0, 0x7f792 |
0x0007f780 ldr.w r0, [pc, 0x570] |
0x0007f784 add r0, pc | r0 = 0xff47c;
0x0007f786 blx 0x8df4 | r0 = fcn_00008df4 ();
0x0007f78a mov r1, r0 | r1 = r0;
0x0007f78c cmp r0, 0 |
| if (r0 == 0) {
0x0007f78e beq.w 0x7fbaa | goto label_54;
| }
| }
| label_19:
0x0007f792 ldr.w r0, [pc, 0x564] |
0x0007f796 add r0, pc | r0 = 0xff494;
0x0007f798 blx 0x8a68 | r0 = fcn_00008a68 ();
0x0007f79c mov r8, r0 | r8 = r0;
0x0007f79e cmp r0, 0 |
| if (r0 == 0) {
0x0007f7a0 beq.w 0x7fb28 | goto label_55;
| }
0x0007f7a4 bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
| if (r0 == 0) {
0x0007f7a8 cbz r0, 0x7f7d6 | goto label_56;
| }
0x0007f7aa ldr.w sb, [pc, 0x550] |
0x0007f7ae add sb, pc | sb = 0xff4b0;
| do {
0x0007f7b0 add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x0007f7b4 mov r0, r4 | r0 = r4;
0x0007f7b6 bl 0x75b88 | r0 = fcn_00075b88 (r0);
0x0007f7ba mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0007f7bc cbnz r0, 0x7f7cc |
0x0007f7be mov r1, sb | r1 = sb;
0x0007f7c0 mov r0, r4 | r0 = r4;
0x0007f7c2 blx 0x9164 | r0 = fcn_00009164 ();
0x0007f7c6 cmp r0, 0 |
| if (r0 != 0) {
0x0007f7c8 bne.w 0x7fbc2 | goto label_57;
| }
| }
0x0007f7cc mov r0, r8 | r0 = r8;
0x0007f7ce bl 0x67ee4 | r0 = fcn_00067ee4 (r0, r1, r2);
0x0007f7d2 cmp r0, 0 |
0x0007f7d4 bne 0x7f7b0 |
| } while (r0 != 0);
| label_56:
0x0007f7d6 blx 0x9628 | r0 = fcn_00009628 ();
0x0007f7da ldr r4, [r0] | r4 = *(r0);
0x0007f7dc cmp r4, 0 |
| if (r4 <= 0) {
0x0007f7de ble.w 0x7fc20 | goto label_58;
| }
0x0007f7e2 mov r0, r8 | r0 = r8;
0x0007f7e4 rsbs r4, r4, 0 | r4 -= ;
0x0007f7e6 blx 0x91a8 | fcn_000091a8 ();
| label_10:
0x0007f7ea ldr r0, [sp, 0x28] | r0 = var_28h;
| label_45:
0x0007f7ec blx 0x8dac | fcn_00008dac ();
0x0007f7f0 b 0x7f352 | goto label_0;
| label_51:
0x0007f7f2 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f7f6 cmp r0, 6 |
| if (r0 > 6) {
0x0007f7f8 ble 0x7f81c |
0x0007f7fa ldr.w r3, [pc, 0x504] |
0x0007f7fe mov r1, r6 | r1 = r6;
0x0007f800 ldr.w r2, [pc, 0x500] |
0x0007f804 movs r0, 7 | r0 = 7;
0x0007f806 add r3, pc | r3 = 0xff50c;
0x0007f808 str r3, [sp, 4] | var_4h = r3;
0x0007f80a add r2, pc | r2 = 0xff512;
0x0007f80c ldr.w r3, [pc, 0x4f8] |
0x0007f810 adds r2, 7 | r2 += 7;
0x0007f812 add r3, pc | r3 = 0xff51e;
0x0007f814 str r3, [sp] | *(sp) = r3;
0x0007f816 movs r3, 0xff | r3 = 0xff;
0x0007f818 bl 0x71448 | fcn_00071448 ();
| }
| label_20:
0x0007f81c ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007f81e blx 0x8dac | fcn_00008dac ();
0x0007f822 b 0x7f5d8 | goto label_4;
| label_53:
0x0007f824 ldr.w r2, [pc, 0x4e4] |
0x0007f828 movs r0, 7 | r0 = 7;
0x0007f82a ldr.w r1, [pc, 0x4e4] |
0x0007f82e movs r4, 6 | r4 = 6;
0x0007f830 ldr.w r3, [pc, 0x4e0] |
0x0007f834 add r2, pc | r2 = 0xff544;
0x0007f836 add r1, pc | r1 = 0xff54c;
0x0007f838 adds r2, 7 | r2 += 7;
0x0007f83a add r3, pc | r3 = 0xff552;
0x0007f83c strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x0007f840 movw r3, 0x187 | r3 = 0x187;
0x0007f844 movs r1, 0 | r1 = 0;
0x0007f846 bl 0x71448 | fcn_00071448 ();
0x0007f84a ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007f84c blx 0x8dac | fcn_00008dac ();
0x0007f850 mov r0, r6 | r0 = r6;
0x0007f852 bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0007f856 b 0x7f5d8 | goto label_4;
| label_39:
0x0007f858 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f85c cmp r0, 6 |
| if (r0 > 6) {
0x0007f85e bgt.w 0x7fa54 | goto label_59;
| }
| label_13:
0x0007f862 ldr.w r0, [pc, 0x4b4] |
0x0007f866 mov.w r8, 0 | r8 = 0;
0x0007f86a mov r1, r5 | r1 = r5;
0x0007f86c str.w r8, [sp, 0x28] | __asm ("str.w r8, [var_28h]");
0x0007f870 add r0, pc | r0 = 0xff58e;
0x0007f872 bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007f876 adds r3, r0, 2 | r3 = r0 + 2;
0x0007f878 mov r4, r0 | r4 = r0;
| if (r3 == r0) {
0x0007f87a beq.w 0x7fb10 | goto label_60;
| }
0x0007f87e cmp r4, 0 |
0x0007f880 ldr r6, [sp, 0x28] | r6 = var_28h;
| if (r4 < 0) {
0x0007f882 blt.w 0x7fa28 | goto label_61;
| }
0x0007f886 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f88a cmp r0, 6 |
| if (r0 > 6) {
0x0007f88c bgt.w 0x7fa30 | goto label_62;
| }
0x0007f88e strh r0, [r2, 6] | *((r2 + 6)) = r0;
| label_12:
0x0007f890 ldr.w r1, [pc, 0x488] |
0x0007f894 mov r0, r6 | r0 = r6;
0x0007f896 add r1, pc | r1 = 0xff5b6;
0x0007f898 blx 0x95e0 | r0 = fcn_000095e0 ();
0x0007f89c cmp r0, 0 |
| if (r0 == 0) {
0x0007f89e beq.w 0x7f9a8 | goto label_63;
| }
0x0007f8a2 mov r0, r6 | r0 = r6;
0x0007f8a4 movs r6, 1 | r6 = 1;
0x0007f8a6 blx 0x8dac | fcn_00008dac ();
| label_15:
0x0007f8aa ldr.w r0, [pc, 0x474] |
0x0007f8ae mov r1, r5 | r1 = r5;
0x0007f8b0 mov.w r8, 0 | r8 = 0;
0x0007f8b4 str.w r8, [sp, 0x28] | __asm ("str.w r8, [var_28h]");
0x0007f8b8 add r0, pc | r0 = 0xff5de;
0x0007f8ba bl 0x6b320 | r0 = fcn_0006b320 (r0, r1, r2, r3, r4, r5, r6);
0x0007f8be adds r1, r0, 2 | r1 = r0 + 2;
0x0007f8c0 mov r4, r0 | r4 = r0;
| if (r1 == r0) {
0x0007f8c2 beq.w 0x7f770 | goto label_9;
| }
0x0007f8c6 cmp r0, 0 |
0x0007f8c8 ldr r6, [sp, 0x28] | r6 = var_28h;
| if (r0 < 0) {
0x0007f8ca blt 0x7f7ea | goto label_10;
| }
0x0007f8cc bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f8d0 cmp r0, 6 |
| if (r0 > 6) {
0x0007f8d2 bgt.w 0x7faee | goto label_64;
| }
| label_14:
0x0007f8d6 ldr.w r1, [pc, 0x44c] |
0x0007f8da mov r0, r6 | r0 = r6;
0x0007f8dc add r1, pc | r1 = 0xff606;
0x0007f8de blx 0x95e0 | r0 = fcn_000095e0 ();
0x0007f8e2 cmp r0, 0 |
| if (r0 == 0) {
0x0007f8e4 beq.w 0x7fb18 | goto label_65;
| }
0x0007f8e8 ldr.w r1, [pc, 0x43c] |
0x0007f8ec mov r0, r6 | r0 = r6;
0x0007f8ee add r1, pc | r1 = 0xff61a;
0x0007f8f0 blx 0x9164 | r0 = fcn_00009164 ();
0x0007f8f4 cmp r0, 0 |
| if (r0 != 0) {
0x0007f8f6 bne 0x7f9a8 | goto label_63;
| }
0x0007f8f8 ldr.w r1, [pc, 0x430] |
0x0007f8fc mov r0, r6 | r0 = r6;
0x0007f8fe add r1, pc | r1 = 0xff62e;
0x0007f900 blx 0x9164 | r0 = fcn_00009164 ();
0x0007f904 cmp r0, 0 |
| if (r0 == 0) {
0x0007f906 beq.w 0x7fb88 | goto label_66;
| }
0x0007f908 strh r7, [r7, 8] | *((r7 + 8)) = r7;
0x0007f90a mov r0, r6 | r0 = r6;
0x0007f90c movs r4, 7 | r4 = 7;
0x0007f90e blx 0x8dac | fcn_00008dac ();
0x0007f912 b 0x7f5d8 | goto label_4;
| label_40:
0x0007f914 ldr.w r2, [pc, 0x418] |
0x0007f918 movs r0, 7 | r0 = 7;
0x0007f91a ldr.w r1, [pc, 0x418] |
0x0007f91e ldr.w r3, [pc, 0x418] |
0x0007f920 adds r4, 0x18 | r4 += 0x18;
0x0007f922 add r2, pc | r2 = 0xff656;
0x0007f924 add r1, pc | r1 = 0xff65e;
0x0007f926 adds r2, 7 | r2 += 7;
0x0007f928 add r3, pc | r3 = 0xff666;
0x0007f92a strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x0007f92e movw r3, 0x121 | r3 = 0x121;
0x0007f932 movs r1, 0 | r1 = 0;
0x0007f934 bl 0x71448 | fcn_00071448 ();
0x0007f938 b 0x7f4c4 | goto label_3;
| label_44:
0x0007f93a bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f93e cmp r0, 6 |
0x0007f940 bgt.w 0x7fa74 |
| while (1) {
0x0007f944 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007f946 movs r4, 5 | r4 = 5;
0x0007f948 blx 0x8dac | fcn_00008dac ();
0x0007f94c b 0x7f5d8 | goto label_4;
| label_46:
0x0007f94e bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f952 cmp r0, 6 |
| if (r0 <= 6) {
0x0007f954 bgt.w 0x7fa9c |
0x0007f958 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007f95a movs r4, 5 | r4 = 5;
0x0007f95c blx 0x8dac | fcn_00008dac ();
0x0007f95e bic.w r8, r6, r8, lsl 4 | r8 = BIT_MASK (r6, r8);
0x0007f962 blx 0x8dac | fcn_00008dac ();
0x0007f966 b 0x7f5d8 | goto label_4;
| label_47:
0x0007f968 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f96c cmp r0, 6 |
| if (r0 > 6) {
0x0007f96e bgt.w 0x7fac2 | goto label_67;
| }
0x0007f972 mov r0, fp | r0 = fp;
0x0007f974 blx 0x8dac | fcn_00008dac ();
0x0007f978 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007f97a blx 0x8dac | fcn_00008dac ();
0x0007f97e b 0x7f5d8 | goto label_4;
| label_43:
0x0007f980 ldr r3, [pc, 0x3b8] |
0x0007f982 mov r1, r6 | r1 = r6;
0x0007f984 ldr r2, [pc, 0x3b8] |
0x0007f986 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007f988 add r3, pc | r3 = 0xff6c8;
0x0007f98a str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x0007f98e str r3, [sp, 4] | var_4h = r3;
0x0007f990 add r2, pc | r2 = 0xff6d4;
0x0007f992 ldr r3, [pc, 0x3b0] |
0x0007f994 adds r2, 7 | r2 += 7;
0x0007f996 str r0, [sp, 0xc] | var_ch = r0;
0x0007f998 movs r0, 7 | r0 = 7;
0x0007f99a add r3, pc | r3 = 0xff6e4;
0x0007f99c str r3, [sp] | *(sp) = r3;
0x0007f99e mov.w r3, 0x13c | r3 = 0x13c;
0x0007f9a2 bl 0x71448 | fcn_00071448 ();
0x0007f9a6 b 0x7f508 | goto label_11;
| label_63:
0x0007f9a8 mov r0, r6 | r0 = r6;
0x0007f9aa blx 0x8dac | fcn_00008dac ();
0x0007f9ae b 0x7f4c4 | goto label_3;
| label_42:
0x0007f9b0 ldr r5, [sp, 0x28] | r5 = var_28h;
0x0007f9b2 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007f9b6 cmp r0, 6 |
0x0007f9b8 and r4, r5, 0x800 | r4 = r5 & 0x800;
| if (r0 > 6) {
0x0007f9bc ble 0x7f9f0 |
0x0007f9be cmp r4, 0 |
| if (r4 != 0) {
0x0007f9c0 bne.w 0x7fb22 | goto label_68;
| }
0x0007f9c4 ldr r3, [pc, 0x380] |
0x0007f9c6 add r3, pc | r3 = 0xff712;
| label_16:
0x0007f9c8 str r3, [sp, 0x10] | var_10h = r3;
0x0007f9ca movs r0, 7 | r0 = 7;
0x0007f9cc ldr r3, [pc, 0x37c] |
0x0007f9ce ldr r2, [pc, 0x380] |
0x0007f9d0 ldr r1, [pc, 0x380] |
0x0007f9d2 add r3, pc | r3 = 0xff722;
0x0007f9d4 str r5, [sp, 0xc] | var_ch = r5;
0x0007f9d6 str r3, [sp, 8] | var_8h = r3;
0x0007f9d8 add r2, pc | r2 = 0xff72e;
0x0007f9da ldr r3, [pc, 0x37c] |
0x0007f9dc add r1, pc | r1 = 0xff734;
0x0007f9de adds r2, 7 | r2 += 7;
0x0007f9e0 add r3, pc | r3 = 0xff73e;
0x0007f9e2 strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x0007f9e6 movw r3, 0x137 | r3 = 0x137;
0x0007f9ea movs r1, 0 | r1 = 0;
0x0007f9ec bl 0x71448 | fcn_00071448 ();
| }
0x0007f9f0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007f9f2 blx 0x8dac | fcn_00008dac ();
0x0007f9f6 cmp r4, 0 |
0x0007f9f8 ite eq |
| if (r4 != 0) {
0x0007f9fa moveq r4, 5 | r4 = 5;
| }
| if (r4 == 0) {
0x0007f9fc movne r4, 0 | r4 = 0;
| }
0x0007f9fe b 0x7f5d8 | goto label_4;
| label_52:
0x0007fa00 ldr r3, [pc, 0x358] |
0x0007fa02 mov r1, r8 | r1 = r8;
0x0007fa04 ldr r2, [pc, 0x358] |
0x0007fa06 movs r0, 7 | r0 = 7;
0x0007fa08 mov r4, r8 | r4 = r8;
0x0007fa0a add r3, pc | r3 = 0xff76a;
0x0007fa0c str r3, [sp, 4] | var_4h = r3;
0x0007fa0e add r2, pc | r2 = 0xff772;
0x0007fa10 ldr r3, [pc, 0x350] |
0x0007fa12 adds r2, 7 | r2 += 7;
0x0007fa14 add r3, pc | r3 = 0xff77c;
0x0007fa16 str r3, [sp] | *(sp) = r3;
0x0007fa18 mov.w r3, 0x104 | r3 = 0x104;
0x0007fa1c bl 0x71448 | fcn_00071448 ();
0x0007fa20 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fa22 blx 0x8dac | fcn_00008dac ();
0x0007fa26 b 0x7f3ac | goto label_1;
| label_61:
0x0007fa28 mov r0, r6 | r0 = r6;
0x0007fa2a blx 0x8dac | fcn_00008dac ();
0x0007fa2e b 0x7f352 | goto label_0;
| label_62:
0x0007fa30 ldr r3, [pc, 0x334] |
0x0007fa32 mov r1, r8 | r1 = r8;
0x0007fa34 ldr r2, [pc, 0x334] |
0x0007fa36 movs r0, 7 | r0 = 7;
0x0007fa38 str r6, [sp, 8] | var_8h = r6;
0x0007fa3a add r3, pc | r3 = 0xff7a6;
0x0007fa3c str r3, [sp, 4] | var_4h = r3;
0x0007fa3e add r2, pc | r2 = 0xff7ae;
0x0007fa40 ldr r3, [pc, 0x32c] |
0x0007fa42 adds r2, 7 | r2 += 7;
0x0007fa44 add r3, pc | r3 = 0xff7b8;
0x0007fa46 str r3, [sp] | *(sp) = r3;
0x0007fa48 mov.w r3, 0x164 | r3 = 0x164;
0x0007fa4c bl 0x71448 | fcn_00071448 ();
0x0007fa50 ldr r6, [sp, 0x28] | r6 = var_28h;
0x0007fa52 b 0x7f890 | goto label_12;
| label_59:
0x0007fa54 ldr r3, [pc, 0x31c] |
0x0007fa56 movs r1, 0 | r1 = 0;
0x0007fa58 ldr r2, [pc, 0x31c] |
0x0007fa5a movs r0, 7 | r0 = 7;
0x0007fa5c add r3, pc | r3 = 0xff7d4;
0x0007fa5e str r3, [sp, 4] | var_4h = r3;
0x0007fa60 add r2, pc | r2 = 0xff7dc;
0x0007fa62 ldr r3, [pc, 0x318] |
0x0007fa64 adds r2, 7 | r2 += 7;
0x0007fa66 add r3, pc | r3 = 0xff7e8;
0x0007fa68 str r3, [sp] | *(sp) = r3;
0x0007fa6a movw r3, 0x11d | r3 = 0x11d;
0x0007fa6e bl 0x71448 | fcn_00071448 ();
0x0007fa72 b 0x7f862 | goto label_13;
0x0007fa74 ldr r2, [pc, 0x308] |
0x0007fa76 mov.w r3, 0x142 | r3 = 0x142;
0x0007fa7a ldr r0, [pc, 0x308] |
0x0007fa7c movs r4, 5 | r4 = 5;
0x0007fa7e ldr r1, [pc, 0x308] |
0x0007fa80 add r2, pc | r2 = 0xff804;
0x0007fa82 add r0, pc | r0 = 0xff80c;
0x0007fa84 adds r2, 7 | r2 += 7;
0x0007fa86 add r1, pc | r1 = 0xff814;
0x0007fa88 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x0007fa8c movs r1, 0 | r1 = 0;
0x0007fa8e movs r0, 7 | r0 = 7;
0x0007fa90 bl 0x71448 | fcn_00071448 ();
0x0007fa94 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007fa96 blx 0x8dac | fcn_00008dac ();
0x0007fa9a b 0x7f5d8 | goto label_4;
| }
0x0007fa9c ldr r2, [pc, 0x2ec] |
0x0007fa9e mov r1, r4 | r1 = r4;
0x0007faa0 ldr r0, [pc, 0x2ec] |
0x0007faa2 ldr r3, [pc, 0x2f0] |
0x0007faa4 add r2, pc | r2 = 0xff834;
0x0007faa6 add r0, pc | r0 = 0xff83a;
0x0007faa8 adds r2, 7 | r2 += 7;
0x0007faaa add r3, pc | r3 = 0xff844;
0x0007faac strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x0007fab0 movw r3, 0x14f | r3 = 0x14f;
0x0007fab4 movs r0, 7 | r0 = 7;
0x0007fab6 bl 0x71448 | fcn_00071448 ();
0x0007faba ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fabc blx 0x8dac | fcn_00008dac ();
0x0007fac0 b 0x7f944 |
| }
| label_67:
0x0007fac2 ldr r2, [pc, 0x2d4] |
0x0007fac4 movs r0, 7 | r0 = 7;
0x0007fac6 ldr r1, [pc, 0x2d4] |
0x0007fac8 ldr r3, [pc, 0x2d4] |
0x0007faca add r2, pc | r2 = 0xff868;
0x0007facc add r1, pc | r1 = 0xff86e;
0x0007face adds r2, 7 | r2 += 7;
0x0007fad0 add r3, pc | r3 = 0xff874;
0x0007fad2 strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x0007fad6 mov.w r3, 0x154 | r3 = 0x154;
0x0007fada mov r1, r4 | r1 = r4;
0x0007fadc bl 0x71448 | fcn_00071448 ();
0x0007fae0 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fae2 blx 0x8dac | fcn_00008dac ();
0x0007fae6 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007fae8 blx 0x8dac | fcn_00008dac ();
0x0007faec b 0x7f5d8 | goto label_4;
| label_64:
0x0007faee ldr r3, [pc, 0x2b4] |
0x0007faf0 mov r1, r8 | r1 = r8;
0x0007faf2 ldr r2, [pc, 0x2b4] |
0x0007faf4 movs r0, 7 | r0 = 7;
0x0007faf6 str r6, [sp, 8] | var_8h = r6;
0x0007faf8 add r3, pc | r3 = 0xff8a2;
0x0007fafa str r3, [sp, 4] | var_4h = r3;
0x0007fafc add r2, pc | r2 = 0xff8aa;
0x0007fafe ldr r3, [pc, 0x2ac] |
0x0007fb00 adds r2, 7 | r2 += 7;
0x0007fb02 add r3, pc | r3 = 0xff8b4;
0x0007fb04 str r3, [sp] | *(sp) = r3;
0x0007fb06 movs r3, 0x80 | r3 = 0x80;
0x0007fb08 bl 0x71448 | fcn_00071448 ();
0x0007fb0c ldr r6, [sp, 0x28] | r6 = var_28h;
0x0007fb0e b 0x7f8d6 | goto label_14;
| label_60:
0x0007fb10 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fb12 blx 0x8dac | fcn_00008dac ();
0x0007fb16 b 0x7f8aa | goto label_15;
| label_65:
0x0007fb18 mov r0, r6 | r0 = r6;
0x0007fb1a movs r4, 1 | r4 = 1;
0x0007fb1c blx 0x8dac | fcn_00008dac ();
0x0007fb20 b 0x7f5d8 | goto label_4;
| label_68:
0x0007fb22 ldr r3, [pc, 0x28c] |
0x0007fb24 add r3, pc | r3 = 0xff8da;
0x0007fb26 b 0x7f9c8 | goto label_16;
| label_55:
0x0007fb28 blx 0x9628 | r0 = fcn_00009628 ();
0x0007fb2c ldr.w r8, [r0] | r8 = *(r0);
0x0007fb30 cmp.w r8, 2 |
| if (r8 == 2) {
0x0007fb34 beq 0x7fb96 | goto label_69;
| }
0x0007fb36 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fb38 rsb.w r4, r8, 0 | r4 = r8 - ;
0x0007fb3c blx 0x8dac | fcn_00008dac ();
0x0007fb40 cmp.w r8, 0 |
| if (r8 > 0) {
0x0007fb44 bgt.w 0x7f352 | goto label_0;
| }
0x0007fb48 cmn.w r8, 0x10 |
0x0007fb4c it eq |
| if (r8 != 0x10) {
0x0007fb4e moveq r4, 0x10 | r4 = 0x10;
| }
| if (r8 != 0x10) {
0x0007fb50 bne 0x7fb7c | goto label_70;
| }
| label_18:
0x0007fb52 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007fb56 cmp r0, 6 |
| if (r0 <= 6) {
0x0007fb58 ble.w 0x7f5d8 | goto label_4;
| }
0x0007fb5c ldr r2, [pc, 0x254] |
0x0007fb5e movs r0, 7 | r0 = 7;
0x0007fb60 ldr r1, [pc, 0x254] |
0x0007fb62 ldr r3, [pc, 0x258] |
0x0007fb64 add r2, pc | r2 = 0xff91c;
0x0007fb66 add r1, pc | r1 = 0xff922;
0x0007fb68 adds r2, 7 | r2 += 7;
0x0007fb6a add r3, pc | r3 = 0xff92c;
0x0007fb6c strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x0007fb70 movw r3, 0x1a5 | r3 = 0x1a5;
0x0007fb74 movs r1, 0 | r1 = 0;
0x0007fb76 bl 0x71448 | fcn_00071448 ();
0x0007fb7a b 0x7f5d8 | goto label_4;
| label_70:
0x0007fb7c cmp.w r8, 0 |
| if (r8 != 0) {
0x0007fb80 bne.w 0x7f5d2 | goto label_17;
| }
| label_22:
0x0007fb84 lsls r4, r6, 4 | r4 = r6 << 4;
0x0007fb86 b 0x7fb52 | goto label_18;
| label_66:
0x0007fb88 mov r0, r6 | r0 = r6;
0x0007fb8a movs r4, 0x10 | r4 = 0x10;
0x0007fb8c blx 0x8dac | fcn_00008dac ();
0x0007fb90 b 0x7fb52 | goto label_18;
| label_27:
0x0007fb92 blx 0x927c | fprintf_chk ()
| label_69:
0x0007fb96 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007fb9a cmp r0, 6 |
0x0007fb9c lsl.w r4, r6, 4 | r4 = r6 << 4;
| if (r0 > 6) {
0x0007fba0 bgt 0x7fbd4 | goto label_71;
| }
| label_21:
0x0007fba2 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fba4 blx 0x8dac | fcn_00008dac ();
0x0007fba8 b 0x7fb52 | goto label_18;
| label_54:
0x0007fbaa ldr r0, [pc, 0x214] |
0x0007fbac add r0, pc | r0 = 0xff972;
0x0007fbae blx 0x8df4 | r0 = fcn_00008df4 ();
0x0007fbb2 cmp r0, 0 |
| if (r0 == 0) {
0x0007fbb4 beq.w 0x7f792 | goto label_19;
| }
0x0007fbb8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fbba movs r4, 0xf | r4 = 0xf;
0x0007fbbc blx 0x8dac | fcn_00008dac ();
0x0007fbc0 b 0x7f5d8 | goto label_4;
| label_57:
0x0007fbc2 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007fbc6 cmp r0, 6 |
| if (r0 <= 6) {
0x0007fbc8 bgt 0x7fbf2 |
0x0007fbca mov r0, r8 | r0 = r8;
0x0007fbcc movs r4, 3 | r4 = 3;
0x0007fbce blx 0x91a8 | fcn_000091a8 ();
0x0007fbd2 b 0x7f81c | goto label_20;
| label_71:
0x0007fbd4 ldr r3, [pc, 0x1ec] |
0x0007fbd6 mov r1, r8 | r1 = r8;
0x0007fbd8 ldr r2, [pc, 0x1ec] |
0x0007fbda movs r0, 7 | r0 = 7;
0x0007fbdc add r3, pc | r3 = 0xff9a4;
0x0007fbde str r3, [sp, 4] | var_4h = r3;
0x0007fbe0 add r2, pc | r2 = 0xff9ac;
0x0007fbe2 ldr r3, [pc, 0x1e8] |
0x0007fbe4 adds r2, 7 | r2 += 7;
0x0007fbe6 add r3, pc | r3 = 0xff9b8;
0x0007fbe8 str r3, [sp] | *(sp) = r3;
0x0007fbea movs r3, 0x6f | r3 = 0x6f;
0x0007fbec bl 0x71448 | fcn_00071448 ();
0x0007fbf0 b 0x7fba2 | goto label_21;
| }
0x0007fbf2 ldr r3, [pc, 0x1dc] |
0x0007fbf4 mov r1, r5 | r1 = r5;
0x0007fbf6 ldr r2, [pc, 0x1dc] |
0x0007fbf8 movs r0, 7 | r0 = 7;
0x0007fbfa str r4, [sp, 8] | var_8h = r4;
0x0007fbfc movs r4, 3 | r4 = 3;
0x0007fbfe add r3, pc | r3 = 0xff9d4;
0x0007fc00 str r3, [sp, 4] | var_4h = r3;
0x0007fc02 add r2, pc | r2 = 0xff9dc;
0x0007fc04 ldr r3, [pc, 0x1d0] |
0x0007fc06 adds r2, 7 | r2 += 7;
0x0007fc08 add r3, pc | r3 = 0xff9e4;
0x0007fc0a str r3, [sp] | *(sp) = r3;
0x0007fc0c movs r3, 0x77 | r3 = 0x77;
0x0007fc0e bl 0x71448 | fcn_00071448 ();
0x0007fc12 mov r0, r8 | r0 = r8;
0x0007fc14 blx 0x91a8 | fcn_000091a8 ();
0x0007fc18 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fc1a blx 0x8dac | fcn_00008dac ();
0x0007fc1e b 0x7f5d8 | goto label_4;
| label_58:
0x0007fc20 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007fc24 cmp r0, 6 |
| if (r0 > 6) {
0x0007fc26 bgt 0x7fc98 | goto label_72;
| }
0x0007fc28 mov r0, r8 | r0 = r8;
0x0007fc2a blx 0x91a8 | fcn_000091a8 ();
0x0007fc2e ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fc30 blx 0x8dac | fcn_00008dac ();
0x0007fc34 b 0x7fb84 | goto label_22;
| label_30:
0x0007fc36 blx 0x9628 | r0 = fcn_00009628 ();
0x0007fc3a ldr.w r8, [r0] | r8 = *(r0);
0x0007fc3e cmp.w r8, 2 |
| if (r8 == 2) {
0x0007fc42 beq 0x7fc74 | goto label_73;
| }
0x0007fc44 mov r0, r6 | r0 = r6;
0x0007fc46 rsb.w r6, r8, 0 | r6 = r8 - ;
0x0007fc4a bl 0x69b30 | fcn_00069b30 (r0, r1, r2, r3);
0x0007fc4e cmp.w r8, 0 |
| if (r8 > 0) {
0x0007fc52 bgt 0x7fc6e | goto label_74;
| }
0x0007fc54 cmn.w r8, 0x10 |
0x0007fc58 it eq |
| if (r8 == 0x10) {
0x0007fc5a moveq r6, 1 | r6 = 1;
| goto label_75;
| }
| if (r8 == 0x10) {
| label_75:
0x0007fc5c beq.w 0x7f48e | goto label_23;
| }
0x0007fc60 cmp.w r8, 0 |
| if (r8 == 0) {
0x0007fc64 bne 0x7fc6a |
0x0007fc66 mov r6, r8 | r6 = r8;
0x0007fc68 b 0x7f48e | goto label_23;
| }
0x0007fc6a mov r4, r6 | r4 = r6;
0x0007fc6c b 0x7f5d2 | goto label_17;
| label_74:
0x0007fc6e mov r4, r6 | r4 = r6;
0x0007fc70 b.w 0x7f352 | goto label_0;
| label_73:
0x0007fc74 bl 0x70bf8 | r0 = fcn_00070bf8 ();
0x0007fc78 cmp r0, 6 |
| if (r0 <= 6) {
0x0007fc7a ble.w 0x7f486 | goto label_24;
| }
0x0007fc7e ldr r3, [pc, 0x15c] |
0x0007fc80 ldr r2, [pc, 0x15c] |
0x0007fc82 add r3, pc | r3 = 0xffa64;
0x0007fc84 str r3, [sp, 4] | var_4h = r3;
0x0007fc86 add r2, pc | r2 = 0xffa6a;
0x0007fc88 ldr r3, [pc, 0x158] |
0x0007fc8a adds r2, 7 | r2 += 7;
0x0007fc8c add r3, pc | r3 = 0xffa74;
0x0007fc8e str r3, [sp] | *(sp) = r3;
0x0007fc90 mov.w r3, 0x174 | r3 = 0x174;
0x0007fc94 b.w 0x7f47e | goto label_25;
| label_72:
0x0007fc98 ldr r3, [pc, 0x14c] |
0x0007fc9a movs r1, 0 | r1 = 0;
0x0007fc9c ldr r2, [pc, 0x14c] |
0x0007fc9e movs r0, 7 | r0 = 7;
0x0007fca0 add r3, pc | r3 = 0xffa8c;
0x0007fca2 str r3, [sp, 4] | var_4h = r3;
0x0007fca4 add r2, pc | r2 = 0xffa94;
0x0007fca6 ldr r3, [pc, 0x148] |
0x0007fca8 adds r2, 7 | r2 += 7;
0x0007fcaa add r3, pc | r3 = 0xffaa0;
0x0007fcac str r3, [sp] | *(sp) = r3;
0x0007fcae movs r3, 0x7b | r3 = 0x7b;
0x0007fcb0 bl 0x71448 | fcn_00071448 ();
0x0007fcb4 mov r0, r8 | r0 = r8;
0x0007fcb6 blx 0x91a8 | fcn_000091a8 ();
0x0007fcba ldr r0, [sp, 0x28] | r0 = var_28h;
0x0007fcbc blx 0x8dac | fcn_00008dac ();
0x0007fcc0 b 0x7fb84 | goto label_22;
0x0008036c push {r3, lr} |
0x0008036e bl 0x7fdf4 | r0 = fcn_0007fdf4 ();
| if (r0 != 0) {
0x00080372 cbz r0, 0x80376 |
0x00080374 pop {r3, pc} |
| }
0x00080376 pop.w {r3, lr} |
0x0008037a b.w 0x7f32c | goto label_26;
| }
[*] Function fprintf used 206 times udevadm