[*] Binary protection state of libsystemd.so.0.34.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function mmap tear down of libsystemd.so.0.34.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x29c0c */
| #include <stdint.h>
|
; (fcn) fcn.00029c0c () | void fcn_00029c0c (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_18h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00029c0c tstlt r8, 248, 10 | __asm ("tstlt r8, 248, 10");
0x00029c10 mov r6, r1 | r6 = r1;
0x00029c12 mov r5, r0 | r5 = r0;
0x00029c14 add.w r1, r3, 0x20 | r1 = r3 + 0x20;
0x00029c18 movs r0, 1 | r0 = 1;
0x00029c1a cmp r1, r0 |
0x00029c1c mov r7, r2 | r7 = r2;
0x00029c1e it lo |
| if (r1 >= r0) {
0x00029c20 movlo r1, r0 | r1 = r0;
| }
0x00029c22 blx 0xe2f8 | r0 = fcn_0000e2f8 ();
0x00029c26 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00029c28 cbz r0, 0x29c4c | goto label_0;
| }
0x00029c2a movs r3, 1 | r3 = 1;
0x00029c2c strb r7, [r0, 4] | *((r0 + 4)) = r7;
0x00029c2e str r3, [r0] | *(r0) = r3;
0x00029c30 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00029c32 str r5, [r0, 8] | *((r0 + 8)) = r5;
0x00029c34 strb r6, [r0, 5] | *((r0 + 5)) = r6;
0x00029c36 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00029c38 cbz r6, 0x29c50 |
| while (1) {
0x00029c3a ldr.w r3, [r5, 0x408] | r3 = *((r5 + 0x408));
0x00029c3e str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| if (r3 != 0) {
0x00029c40 cbz r3, 0x29c44 |
0x00029c42 str r4, [r3, 0x1c] | *((r3 + 0x1c)) = r4;
| }
0x00029c44 movs r3, 0 | r3 = 0;
0x00029c46 str.w r4, [r5, 0x408] | __asm ("str.w r4, aav.0x000000ff");
0x00029c4a str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_0:
0x00029c4c mov r0, r4 | r0 = r4;
0x00029c4e pop {r3, r4, r5, r6, r7, pc} |
0x00029c50 mov r0, r5 | r0 = r5;
0x00029c52 blx 0xeca0 | mmap64 ()
0x00029c56 b 0x29c3a |
| }
0x00029c58 ldr r1, [pc, 0x10] |
0x00029c5a movs r2, 0x14 | r2 = 0x14;
0x00029c5c ldr r3, [pc, 0x10] |
0x00029c5e ldr r0, [pc, 0x14] |
0x00029c60 add r1, pc | r1 = 0x538d0;
0x00029c62 add r3, pc | r3 = 0x538d6;
0x00029c64 adds r1, 7 | r1 += 7;
0x00029c66 add r0, pc | r0 = 0x538e0;
0x00029c68 bl 0x68d78 | r0 = fcn_00068d78 (r0, r1, r2, r3);
0x00029c6c subs r4, r0, 3 | r4 = r0 - 3;
0x00029c6e movs r5, r0 | r5 = r0;
0x00029c70 movs r0, 0xea | r0 = 0xea;
0x00029c72 movs r5, r0 | r5 = r0;
0x00029c74 adds r7, 0xce | r7 += 0xce;
0x00029c76 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x32298 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_default () | void sd_bus_default (int16_t arg_3c8h, int16_t arg1) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
0x00032298 ldr r2, [pc, 0xa8] |
0x0003229a ldr r3, [pc, 0xac] | r3 = *(0x3234a);
0x0003229c push {r4, r5, r6, lr} |
0x0003229e sub sp, 0x10 |
0x000322a0 add r2, pc | r2 = 0x645e8;
0x000322a2 movs r4, 0 | r4 = 0;
0x000322a4 mov r6, r0 | r6 = r0;
0x000322a6 add r0, sp, 4 | r0 += var_4h;
0x000322a8 ldr r3, [r2, r3] |
0x000322aa ldr r3, [r3] | r3 = *(0x645e8);
0x000322ac str r3, [sp, 0xc] | var_ch = r3;
0x000322ae mov.w r3, 0 | r3 = 0;
0x000322b2 str r4, [sp, 4] | var_4h = r4;
0x000322b4 bl 0x2d9b0 | fcn_0002d9b0 (r0);
0x000322b8 ldr r3, [sp, 4] | r3 = var_4h;
0x000322ba str r4, [sp, 8] | var_8h = r4;
| if (r3 == 0) {
0x000322bc cbz r3, 0x32314 | goto label_1;
| }
0x000322be mov r5, r0 | r5 = r0;
0x000322c0 cmp r0, 0 |
| if (r0 == 0) {
0x000322c2 beq 0x3232a | goto label_2;
| }
0x000322c4 ldr r0, [r0] | r0 = *(r0);
| if (r6 == 0) {
0x000322c6 cbz r6, 0x3230c | goto label_3;
| }
| if (r0 != 0) {
0x000322c8 cbnz r0, 0x32300 | goto label_4;
| }
0x000322ca add r0, sp, 8 | r0 += var_8h;
0x000322cc blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
0x000322ce cmp r0, 0 |
| if (r0 < 0) {
0x000322d0 blt 0x322e8 | goto label_0;
| }
0x000322d2 ldr r4, [sp, 8] | r4 = var_8h;
0x000322d4 str.w r5, [r4, 0x3f8] | __asm ("str.w r5, aav.0x000000ff");
0x000322d8 blx 0xeb34 | fcn_0000eb34 ();
0x000322dc ldr r3, [sp, 8] | r3 = var_8h;
0x000322de str.w r0, [r4, 0x3e4] | __asm ("str.w r0, aav.0x000000ff");
0x000322e2 movs r0, 1 | r0 = 1;
0x000322e4 str r3, [r5] | *(r5) = r3;
0x000322e6 str r3, [r6] | *(r6) = r3;
| do {
| label_0:
0x000322e8 ldr r2, [pc, 0x60] |
0x000322ea ldr r3, [pc, 0x5c] | r3 = *(0x3234a);
0x000322ec add r2, pc | r2 = 0x6463c;
0x000322ee ldr r3, [r2, r3] | r3 = *(0x6463c);
0x000322f0 ldr r2, [r3] | r2 = *(0x6463c);
0x000322f2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000322f4 eors r2, r3 | r2 ^= r3;
0x000322f6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000322fa bne 0x32340 | goto label_5;
| }
0x000322fc add sp, 0x10 |
0x000322fe pop {r4, r5, r6, pc} |
| label_4:
0x00032300 blx 0xeca0 | r0 = mmap64 ()
0x00032304 mov r3, r0 | r3 = r0;
0x00032306 mov r0, r4 | r0 = r4;
0x00032308 str r3, [r6] | *(r6) = r3;
0x0003230a b 0x322e8 |
| } while (1);
| label_3:
0x0003230c subs r0, 0 |
0x0003230e it ne |
| if (r0 == 0) {
0x00032310 movne r0, 1 | r0 = 1;
| }
0x00032312 b 0x322e8 | goto label_0;
| label_1:
0x00032314 ldr r1, [pc, 0x38] |
0x00032316 movw r2, 0xf2f | r2 = 0xf2f;
0x0003231a ldr r3, [pc, 0x38] |
0x0003231c ldr r0, [pc, 0x38] |
0x0003231e add r1, pc | r1 = 0x64672;
0x00032320 add r3, pc | r3 = 0x6467a;
0x00032322 adds r1, 7 | r1 += 7;
0x00032324 add r0, pc | r0 = 0x64680;
0x00032326 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_2:
0x0003232a ldr r1, [pc, 0x30] |
0x0003232c mov.w r2, 0xf30 | r2 = 0xf30;
0x00032330 ldr r3, [pc, 0x2c] |
0x00032332 ldr r0, [pc, 0x30] |
0x00032334 add r1, pc | r1 = 0x64696;
0x00032336 add r3, pc | r3 = 0x6469a;
0x00032338 adds r1, 7 | r1 += 7;
0x0003233a add r0, pc | r0 = 0x646a4;
0x0003233c bl 0x68d78 | r0 = fcn_00068d78 (r0, r1, r2, r3);
| label_5:
0x00032340 blx 0xed3c | strnlen ();
0x00032344 adr r5, 0x390 | r5 = fcn.00000004;
0x00032346 movs r6, r0 | r6 = r0;
0x00032348 lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x0003234a movs r0, r0 |
0x0003234c adr r5, 0x260 | r5 = 0x260;
0x0003234e movs r6, r0 | r6 = r0;
0x00032350 add r0, sp, 0x3c8 | r0 += arg_3c8h;
0x00032352 movs r4, r0 | r4 = r0;
0x00032354 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x34a50 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_default_flush_close () | void sd_bus_default_flush_close () {
| do {
0x0000e09c invalid | void (*0xe0a0)() ();
0x00034a50 ldr r0, [pc, 0x48] |
0x00034a52 push {r3, lr} |
0x00034a54 add r0, pc | r0 = 0x694f4;
0x00034a56 blx 0xecf0 | fcn_0000ecf0 ();
0x00034a5a ldr r3, [pc, 0x44] | r3 = *(0x34aa2);
0x00034a5c ldr r0, [r3, r0] | r0 = *(0x34aa2);
| if (r0 != 0) {
0x00034a5e cbz r0, 0x34a68 |
0x00034a60 blx 0xeca0 | mmap64 ()
0x00034a64 blx 0xe0a0 | signalfd ();
| }
0x00034a68 ldr r0, [pc, 0x38] |
0x00034a6a add r0, pc | r0 = 0x69512;
0x00034a6c blx 0xecf0 | fcn_0000ecf0 ();
0x00034a70 ldr r3, [pc, 0x34] | r3 = *(0x34aa8);
0x00034a72 ldr r0, [r3, r0] | r0 = *(0x34aa8);
| if (r0 != 0) {
0x00034a74 cbz r0, 0x34a7e |
0x00034a76 blx 0xeca0 | mmap64 ()
0x00034a7a blx 0xe0a0 | signalfd ();
0x00034a7c invalid |
| }
0x00034a7e ldr r0, [pc, 0x2c] |
0x00034a80 add r0, pc | r0 = 0x69532;
0x00034a82 blx 0xecf0 | fcn_0000ecf0 ();
0x00034a86 ldr r3, [pc, 0x28] | r3 = *(0x34ab2);
0x00034a88 ldr r0, [r3, r0] | r0 = *(0x34ab2);
| if (r0 == 0) {
0x00034a8a cbz r0, 0x34a98 | goto label_0;
| }
0x00034a8c blx 0xeca0 | mmap64 ()
0x00034a90 pop.w {r3, lr} |
0x00034a94 b.w 0xe09c |
| } while (1);
| label_0:
0x00034a98 pop {r3, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x35290 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_default_system () | void sd_bus_default_system (int16_t arg1) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00035290 ldr r1, [pc, 0x84] |
0x00035292 ldr r2, [pc, 0x88] | r2 = *(0x3531e);
0x00035294 ldr r3, [pc, 0x78] |
0x00035296 add r1, pc | r1 = 0x6a5b2;
0x00035298 push {r4, r5, r6, r7, lr} |
0x0003529a ldr r7, [pc, 0x78] | r7 = *(0x35316);
0x0003529c mov r5, r0 | r5 = r0;
0x0003529e add r3, pc | r3 = 0x6a5b2;
0x000352a0 sub sp, 0xc |
0x000352a2 ldr r2, [r1, r2] |
0x000352a4 movs r4, 0 | r4 = 0;
0x000352a6 mov r0, r3 | r0 = r3;
0x000352a8 ldr r2, [r2] | r2 = *(0x6a5b2);
0x000352aa str r2, [sp, 4] | var_4h = r2;
0x000352ac mov.w r2, 0 | r2 = 0;
0x000352b0 str r4, [sp] | *(sp) = r4;
0x000352b2 blx 0xecf0 | r0 = fcn_0000ecf0 ();
0x000352b6 mov r6, r0 | r6 = r0;
0x000352b8 ldr r0, [r0, r7] | r0 = *((r0 + r7));
| if (r5 == 0) {
0x000352ba cbz r5, 0x35304 | goto label_1;
| }
| if (r0 != 0) {
0x000352bc cbnz r0, 0x352f8 | goto label_2;
| }
0x000352be mov r0, sp | r0 = sp;
0x000352c0 blx 0xeb88 | r0 = fcn_0000eb88 ();
0x000352c4 cmp r0, 0 |
| if (r0 < 0) {
0x000352c6 blt 0x352e0 | goto label_0;
| }
0x000352c8 ldr r4, [sp] | r4 = *(sp);
0x000352ca adds r3, r6, r7 | r3 = r6 + r7;
0x000352cc str.w r3, [r4, 0x3f8] | __asm ("str.w r3, aav.0x000000ff");
0x000352d0 blx 0xeb34 | fcn_0000eb34 ();
0x000352d4 ldr r3, [sp] | r3 = *(sp);
0x000352d6 str.w r0, [r4, 0x3e4] | __asm ("str.w r0, aav.0x000000ff");
0x000352da movs r0, 1 | r0 = 1;
0x000352dc str r3, [r6, r7] | *((r6 + r7)) = r3;
0x000352de str r3, [r5] | *(r5) = r3;
| do {
| label_0:
0x000352e0 ldr r2, [pc, 0x3c] |
0x000352e2 ldr r3, [pc, 0x38] | r3 = *(0x3531e);
0x000352e4 add r2, pc | r2 = 0x6a608;
0x000352e6 ldr r3, [r2, r3] | r3 = *(0x6a608);
0x000352e8 ldr r2, [r3] | r2 = *(0x6a608);
0x000352ea ldr r3, [sp, 4] | r3 = var_4h;
0x000352ec eors r2, r3 | r2 ^= r3;
0x000352ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000352f2 bne 0x3530c | goto label_3;
| }
0x000352f4 add sp, 0xc |
0x000352f6 pop {r4, r5, r6, r7, pc} |
| label_2:
0x000352f8 blx 0xeca0 | r0 = mmap64 ()
0x000352fc mov r3, r0 | r3 = r0;
0x000352fe mov r0, r4 | r0 = r4;
0x00035300 str r3, [r5] | *(r5) = r3;
0x00035302 b 0x352e0 |
| } while (1);
| label_1:
0x00035304 subs r0, r0, r4 | r0 -= r4;
0x00035306 it ne |
| if (r0 == r0) {
0x00035308 movne r0, 1 | r0 = 1;
| }
0x0003530a b 0x352e0 | goto label_0;
| label_3:
0x0003530c blx 0xed3c | strnlen ();
0x00035310 ldrb r6, [r7, 0x12] | r6 = *((r7 + 0x12));
0x00035312 movs r6, r0 | r6 = r0;
0x00035314 movs r0, r5 | r0 = r5;
0x00035316 movs r0, r0 |
0x00035318 strb r6, [r5, 0x17] | *((r5 + 0x17)) = r6;
0x0003531a movs r6, r0 | r6 = r0;
0x0003531c lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x0003531e movs r0, r0 |
0x00035320 strb r0, [r4, 0x16] | *((r4 + 0x16)) = r0;
0x00035322 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x353e4 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_default_user () | void sd_bus_default_user (int16_t arg1) {
| int16_t var_4h_2;
| int16_t var_14h;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x000353e4 bmi 0x8c7870 |
0x000353e8 ldr r3, [pc, 0x78] |
0x000353ea add r1, pc | r1 += pc;
0x000353ec push {r4, r5, r6, r7, lr} |
0x000353ee ldr r7, [pc, 0x78] | r7 = *(0x3546a);
0x000353f0 mov r5, r0 | r5 = r0;
0x000353f2 add r3, pc | r3 = 0x6a85a;
0x000353f4 sub sp, 0xc |
0x000353f6 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x000353f8 movs r4, 0 | r4 = 0;
0x000353fa mov r0, r3 | r0 = r3;
0x000353fc ldr r2, [r2] | r2 = *(r2);
0x000353fe str r2, [sp, 4] | var_4h = r2;
0x00035400 mov.w r2, 0 | r2 = 0;
0x00035404 str r4, [sp] | *(sp) = r4;
0x00035406 blx 0xecf0 | r0 = fcn_0000ecf0 ();
0x0003540a mov r6, r0 | r6 = r0;
0x0003540c ldr r0, [r0, r7] | r0 = *((r0 + r7));
| if (r5 == 0) {
0x0003540e cbz r5, 0x35458 | goto label_1;
| }
| if (r0 != 0) {
0x00035410 cbnz r0, 0x3544c | goto label_2;
| }
0x00035412 mov r0, sp | r0 = sp;
0x00035414 blx 0xefec | r0 = fcn_0000efec ();
0x00035418 cmp r0, 0 |
| if (r0 < 0) {
0x0003541a blt 0x35434 | goto label_0;
| }
0x0003541c ldr r4, [sp] | r4 = *(sp);
0x0003541e adds r3, r6, r7 | r3 = r6 + r7;
0x00035420 str.w r3, [r4, 0x3f8] | __asm ("str.w r3, aav.0x000000ff");
0x00035424 blx 0xeb34 | fcn_0000eb34 ();
0x00035428 ldr r3, [sp] | r3 = *(sp);
0x0003542a str.w r0, [r4, 0x3e4] | __asm ("str.w r0, aav.0x000000ff");
0x0003542e movs r0, 1 | r0 = 1;
0x00035430 str r3, [r6, r7] | *((r6 + r7)) = r3;
0x00035432 str r3, [r5] | *(r5) = r3;
| do {
| label_0:
0x00035434 ldr r2, [pc, 0x3c] |
0x00035436 ldr r3, [pc, 0x38] | r3 = *(0x35472);
0x00035438 add r2, pc | r2 = 0x6a8b0;
0x0003543a ldr r3, [r2, r3] | r3 = *(0x6a8b0);
0x0003543c ldr r2, [r3] | r2 = *(0x6a8b0);
0x0003543e ldr r3, [sp, 4] | r3 = var_4h;
0x00035440 eors r2, r3 | r2 ^= r3;
0x00035442 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00035446 bne 0x35460 | goto label_3;
| }
0x00035448 add sp, 0xc |
0x0003544a pop {r4, r5, r6, r7, pc} |
| label_2:
0x0003544c blx 0xeca0 | r0 = mmap64 ()
0x00035450 mov r3, r0 | r3 = r0;
0x00035452 mov r0, r4 | r0 = r4;
0x00035454 str r3, [r5] | *(r5) = r3;
0x00035456 b 0x35434 |
| } while (1);
| label_1:
0x00035458 subs r0, r0, r4 | r0 -= r4;
0x0003545a it ne |
| if (r0 == r0) {
0x0003545c movne r0, 1 | r0 = 1;
| }
0x0003545e b 0x35434 | goto label_0;
| label_3:
0x00035460 blx 0xed3c | strnlen ();
0x00035464 ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x00035466 movs r6, r0 | r6 = r0;
0x00035468 movs r4, r4 |
0x0003546a movs r0, r0 |
0x0003546c strb r2, [r3, 0x12] | *((r3 + 0x12)) = r2;
0x0003546e movs r6, r0 | r6 = r0;
0x00035470 lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x00035472 movs r0, r0 |
0x00035474 strb r4, [r1, 0x11] | *((r1 + 0x11)) = r4;
0x00035476 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x34a50 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_default_flush_close () | void sd_bus_default_flush_close () {
| do {
0x0000e09c invalid | void (*0xe0a0)() ();
0x00034a50 ldr r0, [pc, 0x48] |
0x00034a52 push {r3, lr} |
0x00034a54 add r0, pc | r0 = 0x694f4;
0x00034a56 blx 0xecf0 | fcn_0000ecf0 ();
0x00034a5a ldr r3, [pc, 0x44] | r3 = *(0x34aa2);
0x00034a5c ldr r0, [r3, r0] | r0 = *(0x34aa2);
| if (r0 != 0) {
0x00034a5e cbz r0, 0x34a68 |
0x00034a60 blx 0xeca0 | mmap64 ()
0x00034a64 blx 0xe0a0 | signalfd ();
| }
0x00034a68 ldr r0, [pc, 0x38] |
0x00034a6a add r0, pc | r0 = 0x69512;
0x00034a6c blx 0xecf0 | fcn_0000ecf0 ();
0x00034a70 ldr r3, [pc, 0x34] | r3 = *(0x34aa8);
0x00034a72 ldr r0, [r3, r0] | r0 = *(0x34aa8);
| if (r0 != 0) {
0x00034a74 cbz r0, 0x34a7e |
0x00034a76 blx 0xeca0 | mmap64 ()
0x00034a7a blx 0xe0a0 | signalfd ();
0x00034a7c invalid |
| }
0x00034a7e ldr r0, [pc, 0x2c] |
0x00034a80 add r0, pc | r0 = 0x69532;
0x00034a82 blx 0xecf0 | fcn_0000ecf0 ();
0x00034a86 ldr r3, [pc, 0x28] | r3 = *(0x34ab2);
0x00034a88 ldr r0, [r3, r0] | r0 = *(0x34ab2);
| if (r0 == 0) {
0x00034a8a cbz r0, 0x34a98 | goto label_0;
| }
0x00034a8c blx 0xeca0 | mmap64 ()
0x00034a90 pop.w {r3, lr} |
0x00034a94 b.w 0xe09c |
| } while (1);
| label_0:
0x00034a98 pop {r3, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x35290 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_default_system () | void sd_bus_default_system (int16_t arg1) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00035290 ldr r1, [pc, 0x84] |
0x00035292 ldr r2, [pc, 0x88] | r2 = *(0x3531e);
0x00035294 ldr r3, [pc, 0x78] |
0x00035296 add r1, pc | r1 = 0x6a5b2;
0x00035298 push {r4, r5, r6, r7, lr} |
0x0003529a ldr r7, [pc, 0x78] | r7 = *(0x35316);
0x0003529c mov r5, r0 | r5 = r0;
0x0003529e add r3, pc | r3 = 0x6a5b2;
0x000352a0 sub sp, 0xc |
0x000352a2 ldr r2, [r1, r2] |
0x000352a4 movs r4, 0 | r4 = 0;
0x000352a6 mov r0, r3 | r0 = r3;
0x000352a8 ldr r2, [r2] | r2 = *(0x6a5b2);
0x000352aa str r2, [sp, 4] | var_4h = r2;
0x000352ac mov.w r2, 0 | r2 = 0;
0x000352b0 str r4, [sp] | *(sp) = r4;
0x000352b2 blx 0xecf0 | r0 = fcn_0000ecf0 ();
0x000352b6 mov r6, r0 | r6 = r0;
0x000352b8 ldr r0, [r0, r7] | r0 = *((r0 + r7));
| if (r5 == 0) {
0x000352ba cbz r5, 0x35304 | goto label_1;
| }
| if (r0 != 0) {
0x000352bc cbnz r0, 0x352f8 | goto label_2;
| }
0x000352be mov r0, sp | r0 = sp;
0x000352c0 blx 0xeb88 | r0 = fcn_0000eb88 ();
0x000352c4 cmp r0, 0 |
| if (r0 < 0) {
0x000352c6 blt 0x352e0 | goto label_0;
| }
0x000352c8 ldr r4, [sp] | r4 = *(sp);
0x000352ca adds r3, r6, r7 | r3 = r6 + r7;
0x000352cc str.w r3, [r4, 0x3f8] | __asm ("str.w r3, aav.0x000000ff");
0x000352d0 blx 0xeb34 | fcn_0000eb34 ();
0x000352d4 ldr r3, [sp] | r3 = *(sp);
0x000352d6 str.w r0, [r4, 0x3e4] | __asm ("str.w r0, aav.0x000000ff");
0x000352da movs r0, 1 | r0 = 1;
0x000352dc str r3, [r6, r7] | *((r6 + r7)) = r3;
0x000352de str r3, [r5] | *(r5) = r3;
| do {
| label_0:
0x000352e0 ldr r2, [pc, 0x3c] |
0x000352e2 ldr r3, [pc, 0x38] | r3 = *(0x3531e);
0x000352e4 add r2, pc | r2 = 0x6a608;
0x000352e6 ldr r3, [r2, r3] | r3 = *(0x6a608);
0x000352e8 ldr r2, [r3] | r2 = *(0x6a608);
0x000352ea ldr r3, [sp, 4] | r3 = var_4h;
0x000352ec eors r2, r3 | r2 ^= r3;
0x000352ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000352f2 bne 0x3530c | goto label_3;
| }
0x000352f4 add sp, 0xc |
0x000352f6 pop {r4, r5, r6, r7, pc} |
| label_2:
0x000352f8 blx 0xeca0 | r0 = mmap64 ()
0x000352fc mov r3, r0 | r3 = r0;
0x000352fe mov r0, r4 | r0 = r4;
0x00035300 str r3, [r5] | *(r5) = r3;
0x00035302 b 0x352e0 |
| } while (1);
| label_1:
0x00035304 subs r0, r0, r4 | r0 -= r4;
0x00035306 it ne |
| if (r0 == r0) {
0x00035308 movne r0, 1 | r0 = 1;
| }
0x0003530a b 0x352e0 | goto label_0;
| label_3:
0x0003530c blx 0xed3c | strnlen ();
0x00035310 ldrb r6, [r7, 0x12] | r6 = *((r7 + 0x12));
0x00035312 movs r6, r0 | r6 = r0;
0x00035314 movs r0, r5 | r0 = r5;
0x00035316 movs r0, r0 |
0x00035318 strb r6, [r5, 0x17] | *((r5 + 0x17)) = r6;
0x0003531a movs r6, r0 | r6 = r0;
0x0003531c lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x0003531e movs r0, r0 |
0x00035320 strb r0, [r4, 0x16] | *((r4 + 0x16)) = r0;
0x00035322 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x353e4 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_default_user () | void sd_bus_default_user (int16_t arg1) {
| int16_t var_4h_2;
| int16_t var_14h;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x000353e4 bmi 0x8c7870 |
0x000353e8 ldr r3, [pc, 0x78] |
0x000353ea add r1, pc | r1 += pc;
0x000353ec push {r4, r5, r6, r7, lr} |
0x000353ee ldr r7, [pc, 0x78] | r7 = *(0x3546a);
0x000353f0 mov r5, r0 | r5 = r0;
0x000353f2 add r3, pc | r3 = 0x6a85a;
0x000353f4 sub sp, 0xc |
0x000353f6 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x000353f8 movs r4, 0 | r4 = 0;
0x000353fa mov r0, r3 | r0 = r3;
0x000353fc ldr r2, [r2] | r2 = *(r2);
0x000353fe str r2, [sp, 4] | var_4h = r2;
0x00035400 mov.w r2, 0 | r2 = 0;
0x00035404 str r4, [sp] | *(sp) = r4;
0x00035406 blx 0xecf0 | r0 = fcn_0000ecf0 ();
0x0003540a mov r6, r0 | r6 = r0;
0x0003540c ldr r0, [r0, r7] | r0 = *((r0 + r7));
| if (r5 == 0) {
0x0003540e cbz r5, 0x35458 | goto label_1;
| }
| if (r0 != 0) {
0x00035410 cbnz r0, 0x3544c | goto label_2;
| }
0x00035412 mov r0, sp | r0 = sp;
0x00035414 blx 0xefec | r0 = fcn_0000efec ();
0x00035418 cmp r0, 0 |
| if (r0 < 0) {
0x0003541a blt 0x35434 | goto label_0;
| }
0x0003541c ldr r4, [sp] | r4 = *(sp);
0x0003541e adds r3, r6, r7 | r3 = r6 + r7;
0x00035420 str.w r3, [r4, 0x3f8] | __asm ("str.w r3, aav.0x000000ff");
0x00035424 blx 0xeb34 | fcn_0000eb34 ();
0x00035428 ldr r3, [sp] | r3 = *(sp);
0x0003542a str.w r0, [r4, 0x3e4] | __asm ("str.w r0, aav.0x000000ff");
0x0003542e movs r0, 1 | r0 = 1;
0x00035430 str r3, [r6, r7] | *((r6 + r7)) = r3;
0x00035432 str r3, [r5] | *(r5) = r3;
| do {
| label_0:
0x00035434 ldr r2, [pc, 0x3c] |
0x00035436 ldr r3, [pc, 0x38] | r3 = *(0x35472);
0x00035438 add r2, pc | r2 = 0x6a8b0;
0x0003543a ldr r3, [r2, r3] | r3 = *(0x6a8b0);
0x0003543c ldr r2, [r3] | r2 = *(0x6a8b0);
0x0003543e ldr r3, [sp, 4] | r3 = var_4h;
0x00035440 eors r2, r3 | r2 ^= r3;
0x00035442 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00035446 bne 0x35460 | goto label_3;
| }
0x00035448 add sp, 0xc |
0x0003544a pop {r4, r5, r6, r7, pc} |
| label_2:
0x0003544c blx 0xeca0 | r0 = mmap64 ()
0x00035450 mov r3, r0 | r3 = r0;
0x00035452 mov r0, r4 | r0 = r4;
0x00035454 str r3, [r5] | *(r5) = r3;
0x00035456 b 0x35434 |
| } while (1);
| label_1:
0x00035458 subs r0, r0, r4 | r0 -= r4;
0x0003545a it ne |
| if (r0 == r0) {
0x0003545c movne r0, 1 | r0 = 1;
| }
0x0003545e b 0x35434 | goto label_0;
| label_3:
0x00035460 blx 0xed3c | strnlen ();
0x00035464 ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x00035466 movs r6, r0 | r6 = r0;
0x00035468 movs r4, r4 |
0x0003546a movs r0, r0 |
0x0003546c strb r2, [r3, 0x12] | *((r3 + 0x12)) = r2;
0x0003546e movs r6, r0 | r6 = r0;
0x00035470 lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x00035472 movs r0, r0 |
0x00035474 strb r4, [r1, 0x11] | *((r1 + 0x11)) = r4;
0x00035476 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x28eec */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sd_bus_emit_interfaces_added_strv () | void sd_bus_emit_interfaces_added_strv (int16_t arg_1h, uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int32_t var_24h_2;
| int16_t var_2ch;
| int16_t var_33h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00028eec svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00028ef0 mov r8, r1 | r8 = r1;
0x00028ef2 ldr r1, [pc, 0x3c8] |
0x00028ef4 mov r5, r2 | r5 = r2;
0x00028ef6 sub sp, 0x44 |
0x00028ef8 movs r3, 0 | r3 = 0;
0x00028efa ldr r2, [pc, 0x3c4] | r2 = *(0x292c2);
0x00028efc add r1, pc | r1 = 0x521be;
0x00028efe ldr r2, [r1, r2] |
0x00028f00 ldr r2, [r2] | r2 = *(0x521be);
0x00028f02 str r2, [sp, 0x3c] | var_3ch = r2;
0x00028f04 mov.w r2, 0 | r2 = 0;
0x00028f08 str r3, [sp, 0x34] | var_34h = r3;
0x00028f0a cmp r0, 0 |
| if (r0 == 0) {
0x00028f0c beq.w 0x2918a | goto label_9;
| }
0x00028f10 bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x00028f14 mov sl, r0 | sl = r0;
0x00028f16 cmp r0, 0 |
| if (r0 == 0) {
0x00028f18 beq.w 0x291a6 | goto label_10;
| }
0x00028f1c mov r0, r8 | r0 = r8;
0x00028f1e bl 0x18e10 | r0 = fcn_00018e10 (r0);
0x00028f22 cmp r0, 0 |
| if (r0 == 0) {
0x00028f24 beq.w 0x291c2 | goto label_11;
| }
0x00028f28 mov r0, sl | r0 = sl;
0x00028f2a bl 0x2f628 | r0 = fcn_0002f628 (r0);
0x00028f2e cmp r0, 0 |
| if (r0 != 0) {
0x00028f30 bne.w 0x291da | goto label_12;
| }
0x00028f34 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x00028f38 subs r3, 1 | r3--;
0x00028f3a cmp r3, 4 |
| if (r3 > 4) {
0x00028f3c bhi.w 0x29292 | goto label_13;
| }
0x00028f40 cmp r5, 0 |
| if (r5 == 0) {
0x00028f42 beq.w 0x290ba | goto label_14;
| }
0x00028f46 ldr r4, [r5] | r4 = *(r5);
0x00028f48 cmp r4, 0 |
| if (r4 == 0) {
0x00028f4a beq.w 0x29094 | goto label_3;
| }
0x00028f4e strb.w r0, [sp, 0x33] | var_33h = r0;
0x00028f52 add.w r3, sp, 0x33 | r3 += var_33h;
0x00028f56 mov r2, r8 | r2 = r8;
0x00028f58 add r1, sp, 0x38 | r1 += var_38h;
0x00028f5a mov r0, sl | r0 = sl;
0x00028f5c bl 0x253c8 | r0 = fcn_000253c8 (r0, r1, r2, r3);
0x00028f60 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00028f62 blt.w 0x29094 | goto label_3;
| }
| if (r4 == r0) {
0x00028f66 beq.w 0x29298 | goto label_15;
| }
0x00028f6a mov r0, sl | r0 = sl;
0x00028f6c ldr.w sb, [pc, 0x354] |
0x00028f70 blx 0xeca0 | mmap64 ()
0x00028f74 ldr r3, [pc, 0x350] |
0x00028f76 ldr r6, [sp, 0x38] | r6 = var_38h;
0x00028f78 add sb, pc | sb = 0x52240;
0x00028f7a mov r7, sb | r7 = sb;
0x00028f7c str r0, [sp, 0xc] | var_ch = r0;
0x00028f7e add r3, pc | r3 = 0x5224a;
0x00028f80 str r3, [sp, 0x14] | var_14h = r3;
0x00028f82 mov r4, r6 | r4 = r6;
0x00028f84 ldr r3, [pc, 0x344] |
0x00028f86 add r3, pc | r3 = 0x52256;
0x00028f88 str r3, [sp, 0x1c] | var_1ch = r3;
0x00028f8a add r3, sp, 0x34 | r3 += var_34h;
0x00028f8c str r3, [sp, 0x18] | var_18h = r3;
0x00028f8e mov r3, r5 | r3 = r5;
0x00028f90 mov r5, r8 | r5 = r8;
0x00028f92 mov r8, r3 | r8 = r3;
| label_1:
0x00028f94 ldrb.w r3, [sl, 0x1d] | r3 = *((sl + 0x1d));
0x00028f98 bfc r3, 1, 1 | value_0 = BIT_MASK (1, );
| value_0 = ~value_0;
| r3 &= value_0;
0x00028f9c strb.w r3, [sl, 0x1d] | *((sl + 0x1d)) = r3;
0x00028fa0 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00028fa2 blx 0xefbc | fcn_0000efbc ();
0x00028fa6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00028fa8 str r0, [sp, 0x34] | var_34h = r0;
0x00028faa mov r0, sl | r0 = sl;
0x00028fac ldr r2, [r4] | r2 = *(r4);
0x00028fae ldr r1, [sp, 0x18] | r1 = var_18h;
0x00028fb0 str r3, [sp] | *(sp) = r3;
0x00028fb2 mov r3, r7 | r3 = r7;
0x00028fb4 blx 0xe524 | r0 = fcn_0000e524 ();
0x00028fb8 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x00028fba blt.w 0x29270 | goto label_16;
| }
0x00028fbe ldr r0, [sp, 0x34] | r0 = var_34h;
0x00028fc0 mov r2, r5 | r2 = r5;
0x00028fc2 movs r1, 0x6f | r1 = 0x6f;
0x00028fc4 blx 0xf39c | r0 = fcn_0000f39c ();
0x00028fc8 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x00028fca blt.w 0x29270 | goto label_16;
| }
0x00028fce ldr r0, [sp, 0x34] | r0 = var_34h;
0x00028fd0 movs r1, 0x61 | r1 = 0x61;
0x00028fd2 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00028fd4 blx 0xe858 | r0 = fcn_0000e858 ();
0x00028fd8 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x00028fda blt.w 0x29270 | goto label_16;
| }
0x00028fde ldr.w r0, [r8] | r0 = *(r8);
0x00028fe2 cmp r0, 0 |
| if (r0 == 0) {
0x00028fe4 beq.w 0x2929e | goto label_17;
| }
0x00028fe8 ldr r3, [pc, 0x2e4] |
0x00028fea mov sb, r8 | sb = r8;
0x00028fec strd r4, r8, [sp, 0x24] | __asm ("strd r4, r8, [var_24h]");
0x00028ff0 str r7, [sp, 0x2c] | var_2ch = r7;
0x00028ff2 add r3, pc | r3 = 0x522c6;
0x00028ff4 str r3, [sp, 0x10] | var_10h = r3;
| label_0:
0x00028ff6 bl 0x18ea8 | r0 = fcn_00018ea8 (r0);
0x00028ffa cmp r0, 0 |
| if (r0 == 0) {
0x00028ffc beq.w 0x291fe | goto label_18;
| }
0x00029000 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00029002 movs r1, 0x65 | r1 = 0x65;
0x00029004 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00029006 blx 0xe858 | r0 = fcn_0000e858 ();
0x0002900a subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x0002900c blt.w 0x29270 | goto label_16;
| }
0x00029010 ldr r4, [sp, 0x34] | r4 = var_34h;
0x00029012 ldr.w r7, [sb] | r7 = *(sb);
0x00029016 cmp r4, 0 |
| if (r4 == 0) {
0x00029018 beq.w 0x29222 | goto label_19;
| }
0x0002901c cmp r5, 0 |
| if (r5 == 0) {
0x0002901e beq.w 0x29244 | goto label_20;
| }
0x00029022 cmp r7, 0 |
| if (r7 == 0) {
0x00029024 beq.w 0x2925a | goto label_21;
| }
0x00029028 movs r3, 0 | r3 = 0;
0x0002902a mov r2, r5 | r2 = r5;
0x0002902c strd r7, r3, [sp] | __asm ("strd r7, r3, [sp]");
0x00029030 mov r1, r4 | r1 = r4;
0x00029032 mov r3, r5 | r3 = r5;
0x00029034 mov r0, sl | r0 = sl;
0x00029036 bl 0x272d0 | r0 = fcn_000272d0 (r0, r1, r2, r3, r4, r5, r6);
0x0002903a mov r3, r0 | r3 = r0;
0x0002903c cmp r0, 0 |
| if (r0 != 0) {
0x0002903e bne 0x290be | goto label_22;
| }
0x00029040 ldrb.w r3, [sl, 0x1d] | r3 = *((sl + 0x1d));
0x00029044 lsls r0, r3, 0x1e | r0 = r3 << 0x1e;
| if (r0 < r3) {
0x00029046 bmi.w 0x291f6 | goto label_23;
| }
0x0002904a mov r0, r5 | r0 = r5;
0x0002904c blx 0xe81c | r0 = fcn_0000e81c ();
0x00029050 cmp.w r0, 0x10000 |
| if (r0 > 0x10000) {
0x00029054 bhi.w 0x2927c | goto label_24;
| }
0x00029058 adds r6, r0, 1 | r6 = r0 + 1;
0x0002905a mov r0, r6 | r0 = r6;
0x0002905c blx 0xece4 | r0 = fcn_0000ece4 ();
0x00029060 mov fp, r0 |
0x00029062 cmp r0, 0 |
| if (r0 == 0) {
0x00029064 beq.w 0x292ac | goto label_25;
| }
0x00029068 mov r2, r6 | r2 = r6;
0x0002906a mov r1, r5 | r1 = r5;
0x0002906c blx 0xe8b0 | fcn_0000e8b0 ();
0x00029070 ldrb.w r3, [fp] | r3 = *(fp);
0x00029074 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x00029076 bne 0x29130 | goto label_26;
| }
0x00029078 ldrb.w r3, [fp, 1] | r3 = *(arg_1h);
0x0002907c cmp r3, 0 |
| if (r3 != 0) {
0x0002907e bne 0x29130 | goto label_26;
| }
| label_4:
0x00029080 ldr r7, [sp, 0xc] | r7 = var_ch;
0x00029082 mov r0, fp | r0 = fp;
0x00029084 mvn r4, 1 | r4 = ~1;
0x00029088 blx 0xe5d4 | write (r0, r1, r2);
| if (r7 == 0) {
0x0002908c cbz r7, 0x29094 | goto label_3;
| }
| label_2:
0x0002908e mov r0, r7 | r0 = r7;
0x00029090 blx 0xe4e8 | fcn_0000e4e8 ();
| do {
| label_3:
0x00029094 ldr r0, [sp, 0x34] | r0 = var_34h;
| if (r0 != 0) {
0x00029096 cbz r0, 0x2909c |
0x00029098 blx 0xefbc | fcn_0000efbc ();
| }
0x0002909c ldr r2, [pc, 0x234] |
0x0002909e ldr r3, [pc, 0x220] | r3 = *(0x292c2);
0x000290a0 add r2, pc | r2 = 0x52378;
0x000290a2 ldr r3, [r2, r3] | r3 = *(0x52378);
0x000290a4 ldr r2, [r3] | r2 = *(0x52378);
0x000290a6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000290a8 eors r2, r3 | r2 ^= r3;
0x000290aa mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000290ae bne.w 0x292a8 | goto label_27;
| }
0x000290b2 mov r0, r4 | r0 = r4;
0x000290b4 add sp, 0x44 |
0x000290b6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x000290ba mov r4, r5 | r4 = r5;
0x000290bc b 0x29094 |
| } while (1);
| label_22:
0x000290be mov.w fp, 0 |
| label_6:
0x000290c2 mov r0, fp | r0 = fp;
0x000290c4 str r3, [sp, 0x20] | var_20h = r3;
0x000290c6 blx 0xe5d4 | write (r0, r1, r2);
0x000290ca ldr r3, [sp, 0x20] | r3 = var_20h;
0x000290cc cmp r3, 0 |
| if (r3 < 0) {
0x000290ce blt.w 0x29270 | goto label_16;
| }
| label_7:
0x000290d2 ldrb.w r3, [sl, 0x1d] | r3 = *((sl + 0x1d));
0x000290d6 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000290d8 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 < r3) {
0x000290da bmi.w 0x291f6 | goto label_23;
| }
0x000290de blx 0xe1b8 | r0 = fcn_0000e1b8 ();
0x000290e2 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x000290e4 blt.w 0x29270 | goto label_16;
| }
0x000290e8 ldr r0, [sb, 4]! | r0 = *((sb += 4));
0x000290ec cmp r0, 0 |
| if (r0 != 0) {
0x000290ee bne 0x28ff6 | goto label_0;
| }
0x000290f0 ldrb.w fp, [sl, 0x1d] | fp = *((sl + 0x1d));
0x000290f4 ldrd r4, r8, [sp, 0x24] | __asm ("ldrd r4, r8, [var_24h]");
0x000290f8 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x000290fa and fp, fp, 2 |
| label_8:
0x000290fe ldr r0, [sp, 0x34] | r0 = var_34h;
0x00029100 cmp.w fp, 0 |
| if (fp != 0) {
0x00029104 bne.w 0x28f94 | goto label_1;
| }
0x00029108 blx 0xe1b8 | r0 = fcn_0000e1b8 ();
0x0002910c subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x0002910e blt.w 0x29270 | goto label_16;
| }
0x00029112 ldrb.w r3, [sl, 0x1d] | r3 = *((sl + 0x1d));
0x00029116 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 < r3) {
0x00029118 bmi.w 0x28f94 | goto label_1;
| }
0x0002911c ldr r7, [sp, 0xc] | r7 = var_ch;
0x0002911e mov r2, fp | r2 = fp;
0x00029120 ldr r1, [sp, 0x34] | r1 = var_34h;
0x00029122 mov r0, sl | r0 = sl;
0x00029124 blx 0xeac8 | r0 = fcn_0000eac8 ();
0x00029128 mov r4, r0 | r4 = r0;
0x0002912a cmp r7, 0 |
| if (r7 != 0) {
0x0002912c bne 0x2908e | goto label_2;
| }
0x0002912e b 0x29094 | goto label_3;
| label_26:
0x00029130 movs r1, 0x2f | r1 = 0x2f;
0x00029132 mov r0, fp | r0 = fp;
0x00029134 blx 0xe3e0 | r0 = fcn_0000e3e0 ();
0x00029138 cmp r0, 0 |
| if (r0 == 0) {
0x0002913a beq 0x29080 | goto label_4;
| }
0x0002913c mov.w r8, 0 | r8 = 0;
0x00029140 movs r6, 1 | r6 = 1;
| label_5:
0x00029142 sub.w r3, r0, fp | r3 = r0 - fp;
0x00029146 mov r2, fp | r2 = fp;
0x00029148 clz r3, r3 | r3 &= r3;
0x0002914c mov r1, r4 | r1 = r4;
0x0002914e lsrs r3, r3, 5 | r3 >>= 5;
0x00029150 strb.w r8, [r0, r3] | *((r0 + r3)) = r8;
0x00029154 mov r3, r5 | r3 = r5;
0x00029156 mov r0, sl | r0 = sl;
0x00029158 strd r7, r6, [sp] | __asm ("strd r7, r6, [sp]");
0x0002915c bl 0x272d0 | r0 = fcn_000272d0 (r0, r1, r2, r3, r4, r5, r6);
0x00029160 cmp r0, 0 |
| if (r0 != 0) {
0x00029162 bne 0x29238 | goto label_28;
| }
0x00029164 ldrb.w r3, [sl, 0x1d] | r3 = *((sl + 0x1d));
0x00029168 lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
| if (r1 < r3) {
0x0002916a bmi 0x2923c | goto label_29;
| }
0x0002916c ldrb.w r3, [fp] | r3 = *(fp);
0x00029170 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x00029172 bne 0x2917c | goto label_30;
| }
0x00029174 ldrb.w r3, [fp, 1] | r3 = *(arg_1h);
0x00029178 cmp r3, 0 |
| if (r3 == 0) {
0x0002917a beq 0x29080 | goto label_4;
| }
| label_30:
0x0002917c movs r1, 0x2f | r1 = 0x2f;
0x0002917e mov r0, fp | r0 = fp;
0x00029180 blx 0xe3e0 | r0 = fcn_0000e3e0 ();
0x00029184 cmp r0, 0 |
| if (r0 != 0) {
0x00029186 bne 0x29142 | goto label_5;
| }
0x00029188 b 0x29080 | goto label_4;
| label_9:
0x0002918a ldr r1, [pc, 0x14c] |
0x0002918c movw r2, 0xb2e | r2 = 0xb2e;
0x00029190 ldr r3, [pc, 0x148] |
0x00029192 ldr r0, [pc, 0x14c] |
0x00029194 add r1, pc | r1 = 0x52472;
0x00029196 add r3, pc | r3 = 0x52476;
0x00029198 adds r1, 7 | r1 += 7;
0x0002919a add r0, pc | r0 = 0x52480;
0x0002919c bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| do {
0x000291a0 mvn r4, 0x15 | r4 = ~0x15;
0x000291a4 b 0x29094 | goto label_3;
| label_10:
0x000291a6 ldr r1, [pc, 0x13c] |
0x000291a8 movw r2, 0xb2f | r2 = 0xb2f;
0x000291ac ldr r3, [pc, 0x138] |
0x000291ae mvn r4, 0x40 | r4 = ~0x40;
0x000291b2 ldr r0, [pc, 0x138] |
0x000291b4 add r1, pc | r1 = 0x5249e;
0x000291b6 add r3, pc | r3 = 0x524a2;
0x000291b8 adds r1, 7 | r1 += 7;
0x000291ba add r0, pc | r0 = 0x524ac;
0x000291bc bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x000291c0 b 0x29094 | goto label_3;
| label_11:
0x000291c2 ldr r1, [pc, 0x12c] |
0x000291c4 mov.w r2, 0xb30 | r2 = 0xb30;
0x000291c8 ldr r3, [pc, 0x128] |
0x000291ca ldr r0, [pc, 0x12c] |
0x000291cc add r1, pc | r1 = 0x524c2;
0x000291ce add r3, pc | r3 = 0x524c6;
0x000291d0 adds r1, 7 | r1 += 7;
0x000291d2 add r0, pc | r0 = 0x524d0;
0x000291d4 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x000291d8 b 0x291a0 |
| } while (1);
| label_12:
0x000291da ldr r1, [pc, 0x120] |
0x000291dc movw r2, 0xb31 | r2 = 0xb31;
0x000291e0 ldr r3, [pc, 0x11c] |
0x000291e2 mvn r4, 9 | r4 = ~9;
0x000291e6 ldr r0, [pc, 0x11c] |
0x000291e8 add r1, pc | r1 = 0x524ea;
0x000291ea add r3, pc | r3 = 0x524ee;
0x000291ec adds r1, 7 | r1 += 7;
0x000291ee add r0, pc | r0 = 0x524f8;
0x000291f0 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x000291f4 b 0x29094 | goto label_3;
| label_23:
0x000291f6 ldrd r4, r8, [sp, 0x24] | __asm ("ldrd r4, r8, [var_24h]");
0x000291fa ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x000291fc b 0x28f94 | goto label_1;
| label_18:
0x000291fe ldr r1, [pc, 0x108] |
0x00029200 movw r2, 0xb53 | r2 = 0xb53;
0x00029204 ldr r7, [sp, 0xc] | r7 = var_ch;
0x00029206 mvn r4, 0x15 | r4 = ~0x15;
0x0002920a ldr r3, [pc, 0x100] |
0x0002920c ldr r0, [pc, 0x100] |
0x0002920e add r1, pc | r1 = 0x5251c;
0x00029210 adds r1, 7 | r1 += 7;
0x00029212 add r3, pc | r3 = 0x52524;
0x00029214 add r0, pc | r0 = 0x52528;
0x00029216 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0002921a cmp r7, 0 |
| if (r7 != 0) {
0x0002921c bne.w 0x2908e | goto label_2;
| }
0x00029220 b 0x29094 | goto label_3;
| label_19:
0x00029222 ldr r1, [pc, 0xf0] |
0x00029224 movw r2, 0xb0e | r2 = 0xb0e;
0x00029228 ldr r3, [pc, 0xec] |
0x0002922a ldr r0, [pc, 0xf0] |
0x0002922c add r1, pc | r1 = 0x52546;
0x0002922e add r3, pc | r3 = 0x5254a;
0x00029230 adds r1, 7 | r1 += 7;
0x00029232 add r0, pc | r0 = 0x52554;
0x00029234 bl 0x68d78 | r0 = fcn_00068d78 (r0, r1, r2, r3);
| label_28:
0x00029238 mov r3, r0 | r3 = r0;
0x0002923a b 0x290c2 | goto label_6;
| label_29:
0x0002923c mov r0, fp | r0 = fp;
0x0002923e blx 0xe5d4 | write (r0, r1, r2);
0x00029242 b 0x290d2 | goto label_7;
| label_20:
0x00029244 ldr r1, [pc, 0xd8] |
0x00029246 movw r2, 0xb0f | r2 = 0xb0f;
0x0002924a ldr r3, [pc, 0xd8] |
0x0002924c ldr r0, [pc, 0xd8] |
0x0002924e add r1, pc | r1 = 0x52572;
0x00029250 add r3, pc | r3 = 0x5257a;
0x00029252 adds r1, 7 | r1 += 7;
0x00029254 add r0, pc | r0 = 0x52580;
0x00029256 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_21:
0x0002925a ldr r1, [pc, 0xd0] |
0x0002925c mov.w r2, 0xb10 | r2 = 0xb10;
0x00029260 ldr r3, [pc, 0xcc] |
0x00029262 ldr r0, [pc, 0xd0] |
0x00029264 add r1, pc | r1 = 0x52596;
0x00029266 add r3, pc | r3 = 0x5259a;
0x00029268 adds r1, 7 | r1 += 7;
0x0002926a add r0, pc | r0 = 0x525a4;
0x0002926c bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_16:
0x00029270 ldr r7, [sp, 0xc] | r7 = var_ch;
0x00029272 mov r4, r3 | r4 = r3;
0x00029274 cmp r7, 0 |
| if (r7 != 0) {
0x00029276 bne.w 0x2908e | goto label_2;
| }
0x0002927a b 0x29094 | goto label_3;
| label_24:
0x0002927c ldr r1, [pc, 0xb8] |
0x0002927e movw r2, 0xb19 | r2 = 0xb19;
0x00029282 ldr r3, [pc, 0xb8] |
0x00029284 ldr r0, [pc, 0xb8] |
0x00029286 add r1, pc | r1 = 0x525c2;
0x00029288 add r3, pc | r3 = 0x525ca;
0x0002928a adds r1, 7 | r1 += 7;
0x0002928c add r0, pc | r0 = 0x525d0;
0x0002928e bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_13:
0x00029292 mvn r4, 0x6a | r4 = ~0x6a;
0x00029296 b 0x29094 | goto label_3;
| label_15:
0x00029298 mvn r4, 2 | r4 = ~2;
0x0002929c b 0x29094 | goto label_3;
| label_17:
0x0002929e ldrb.w fp, [sl, 0x1d] | fp = *((sl + 0x1d));
0x000292a2 and fp, fp, 2 |
0x000292a6 b 0x290fe | goto label_8;
| label_27:
0x000292a8 blx 0xed3c | strnlen ();
| label_25:
0x000292ac ldr r7, [sp, 0xc] | r7 = var_ch;
0x000292ae mvn r4, 0xb | r4 = ~0xb;
0x000292b2 cmp r7, 0 |
| if (r7 != 0) {
0x000292b4 bne.w 0x2908e | goto label_2;
| }
0x000292b8 b 0x29094 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x286b4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sd_bus_emit_object_added () | void sd_bus_emit_object_added (int16_t arg_0h, uint32_t arg1, int16_t arg2) {
| 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_1ch;
| int16_t var_23h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x000286b4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000286b8 mov r6, r1 | r6 = r1;
0x000286ba ldr r1, [pc, 0x390] |
0x000286bc sub sp, 0x34 |
0x000286be movs r3, 0 | r3 = 0;
0x000286c0 ldr r2, [pc, 0x38c] | r2 = *(0x28a50);
0x000286c2 add r1, pc | r1 = 0x51114;
0x000286c4 ldr.w fp, [pc, 0x38c] | fp = *(0x00028a54);
0x000286c8 ldr r2, [r1, r2] |
0x000286ca add fp, pc |
0x000286cc ldr r2, [r2] | r2 = *(0x51114);
0x000286ce str r2, [sp, 0x2c] | var_2ch = r2;
0x000286d0 mov.w r2, 0 | r2 = 0;
0x000286d4 str r3, [sp, 0x24] | var_24h = r3;
0x000286d6 cmp r0, 0 |
| if (arg_0h == ) {
0x000286d8 beq.w 0x28970 | goto label_6;
| }
0x000286dc bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x000286e0 mov r5, r0 | r5 = r0;
0x000286e2 cmp r0, 0 |
| if (r0 == 0) {
0x000286e4 beq.w 0x288a8 | goto label_7;
| }
0x000286e8 mov r0, r6 | r0 = r6;
0x000286ea bl 0x18e10 | fcn_00018e10 (r0);
0x000286ec invalid |
| if (r0 == 0) {
0x000286f0 beq.w 0x289a6 | goto label_8;
| }
0x000286f4 mov r0, r5 | r0 = r5;
0x000286f6 bl 0x2f628 | r0 = fcn_0002f628 (r0);
0x000286fa cmp r0, 0 |
| if (r0 != 0) {
0x000286fc bne.w 0x289be | goto label_9;
| }
0x00028700 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00028702 subs r3, 1 | r3--;
0x00028704 cmp r3, 4 |
| if (r3 > 4) {
0x00028706 bhi.w 0x289f0 | goto label_10;
| }
0x0002870a strb.w r0, [sp, 0x23] | var_23h = r0;
0x0002870e add.w r3, sp, 0x23 | r3 += var_23h;
0x00028712 mov r2, r6 | r2 = r6;
0x00028714 add r1, sp, 0x28 | r1 += var_28h;
0x00028716 mov r0, r5 | r0 = r5;
0x00028718 bl 0x253c8 | r0 = fcn_000253c8 (r0, r1, r2, r3);
0x0002871c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0002871e blt.w 0x288c2 | goto label_1;
| }
| if (r4 == r0) {
0x00028722 beq.w 0x289f6 | goto label_11;
| }
0x00028726 mov r0, r5 | r0 = r5;
0x00028728 ldr.w sb, [pc, 0x32c] |
0x0002872c blx 0xeca0 | mmap64 ()
0x00028730 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00028732 mov r8, r0 | r8 = r0;
0x00028734 add sb, pc | sb = 0x51190;
0x00028736 str r3, [sp, 0x10] | var_10h = r3;
0x00028738 ldr r3, [pc, 0x320] |
0x0002873a add r3, pc | r3 = 0x5119a;
0x0002873c str r3, [sp, 0x14] | var_14h = r3;
0x0002873e ldr r3, [pc, 0x320] |
0x00028740 add r3, pc | r3 = 0x511a6;
0x00028742 str r3, [sp, 0x18] | var_18h = r3;
0x00028744 add r3, sp, 0x24 | r3 += var_24h;
0x00028746 str r3, [sp, 0x1c] | var_1ch = r3;
| label_3:
0x00028748 ldrb r3, [r5, 0x1d] | r3 = *((r5 + 0x1d));
0x0002874a bfc r3, 1, 1 | value_0 = BIT_MASK (1, );
| value_0 = ~value_0;
| r3 &= value_0;
0x0002874e strb r3, [r5, 0x1d] | *((r5 + 0x1d)) = r3;
0x00028750 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00028752 blx 0xefbc | fcn_0000efbc ();
0x00028756 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00028758 str r0, [sp, 0x24] | var_24h = r0;
0x0002875a mov r0, r5 | r0 = r5;
0x0002875c ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0002875e ldr r2, [r3] | r2 = *(r3);
0x00028760 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00028762 str r3, [sp] | *(sp) = r3;
0x00028764 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00028766 blx 0xe524 | r0 = fcn_0000e524 ();
0x0002876a cmp r0, 0 |
| if (r0 < 0) {
0x0002876c blt.w 0x289a2 | goto label_12;
| }
0x00028770 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00028772 mov r2, r6 | r2 = r6;
0x00028774 movs r1, 0x6f | r1 = 0x6f;
0x00028776 blx 0xf39c | r0 = fcn_0000f39c ();
0x0002877a cmp r0, 0 |
| if (r0 < 0) {
0x0002877c blt.w 0x289a2 | goto label_12;
| }
0x00028780 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00028782 mov r2, sb | r2 = sb;
0x00028784 movs r1, 0x61 | r1 = 0x61;
0x00028786 blx 0xe858 | r0 = fcn_0000e858 ();
0x0002878a cmp r0, 0 |
| if (r0 < 0) {
0x0002878c blt.w 0x289a2 | goto label_12;
| }
0x00028790 ldr r7, [sp, 0x24] | r7 = var_24h;
0x00028792 ldrb.w sl, [sp, 0x23] | sl = var_23h;
0x00028796 cmp r7, 0 |
| if (r7 == 0) {
0x00028798 beq.w 0x2895a | goto label_13;
| }
0x0002879c cmp r6, 0 |
| if (r6 == 0) {
0x0002879e beq.w 0x2898c | goto label_14;
| }
0x000287a2 ldr r3, [pc, 0x2c0] | r3 = *(0x28a66);
0x000287a4 ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x000287a8 mov r0, r3 | r0 = r3;
0x000287aa str r3, [sp, 0xc] | var_ch = r3;
0x000287ac bl 0x66210 | r0 = fcn_00066210 (r0);
0x000287b0 mov r4, r0 | r4 = r0;
0x000287b2 cmp r0, 0 |
| if (r0 == 0) {
0x000287b4 beq.w 0x28a1c | goto label_15;
| }
0x000287b8 ldr r2, [pc, 0x2ac] |
0x000287ba movs r3, 0 | r3 = 0;
0x000287bc mov r1, sb | r1 = sb;
0x000287be mov r0, r7 | r0 = r7;
0x000287c0 add r2, pc | r2 = 0x5122c;
0x000287c2 blx 0xed54 | r0 = fcn_0000ed54 ();
0x000287c6 cmp r0, 0 |
| if (r0 < 0) {
0x000287c8 blt.w 0x288fe | goto label_16;
| }
0x000287cc ldr r2, [pc, 0x29c] |
0x000287ce movs r3, 0 | r3 = 0;
0x000287d0 mov r1, sb | r1 = sb;
0x000287d2 mov r0, r7 | r0 = r7;
0x000287d4 add r2, pc | r2 = 0x51244;
0x000287d6 blx 0xed54 | fcn_0000ed54 ();
0x000287d8 invalid |
| if (r3 < 0) {
0x000287dc blt.w 0x288fe | goto label_16;
| }
0x000287e0 ldr r2, [pc, 0x28c] |
0x000287e2 movs r3, 0 | r3 = 0;
0x000287e4 mov r1, sb | r1 = sb;
0x000287e6 mov r0, r7 | r0 = r7;
0x000287e8 add r2, pc | r2 = 0x5125c;
0x000287ea blx 0xed54 | r0 = fcn_0000ed54 ();
0x000287ee cmp r0, 0 |
| if (r0 < 0) {
0x000287f0 blt.w 0x288fe | goto label_16;
| }
0x000287f4 cmp.w sl, 0 |
| if (sl != 0) {
0x000287f8 bne 0x288e8 | goto label_17;
| }
| label_0:
0x000287fa mov.w sl, 0 | sl = 0;
0x000287fe mov r3, r6 | r3 = r6;
0x00028800 mov r2, r4 | r2 = r4;
0x00028802 mov r1, r7 | r1 = r7;
0x00028804 mov r0, r5 | r0 = r5;
0x00028806 str r6, [sp] | *(sp) = r6;
0x00028808 str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h]");
0x0002880c bl 0x27044 | r0 = fcn_00027044 (r0, r1, r2, r3, r4, r5);
0x00028810 cmp r0, 0 |
| if (r0 < 0) {
0x00028812 blt.w 0x28a3a | goto label_18;
| }
0x00028816 ldrb r3, [r5, 0x1d] | r3 = *((r5 + 0x1d));
0x00028818 lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
| if (r1 < r3) {
0x0002881a bmi.w 0x28928 | goto label_19;
| }
0x0002881e mov r0, r6 | r0 = r6;
0x00028820 blx 0xe81c | r0 = fcn_0000e81c ();
0x00028824 cmp.w r0, 0x10000 |
| if (r0 > 0x10000) {
0x00028828 bhi.w 0x289fc | goto label_20;
| }
0x0002882c adds r2, r0, 1 | r2 = r0 + 1;
0x0002882e mov r0, r2 | r0 = r2;
0x00028830 str r2, [sp, 0xc] | var_ch = r2;
0x00028832 blx 0xece4 | fcn_0000ece4 ();
0x00028836 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00028838 mov sl, r0 | sl = r0;
0x0002883a cmp r0, 0 |
| if (r0 == 0) {
0x0002883c beq.w 0x28a12 | goto label_21;
| }
0x00028840 mov r1, r6 | r1 = r6;
0x00028842 blx 0xe8b0 | fcn_0000e8b0 ();
0x00028846 ldrb.w r2, [sl] | r2 = *(sl);
0x0002884a cmp r2, 0x2f |
| if (r2 == 0x2f) {
0x0002884c beq 0x2891a | goto label_22;
| }
| label_2:
0x0002884e movs r1, 0x2f | r1 = 0x2f;
0x00028850 mov r0, sl | r0 = sl;
0x00028852 blx 0xe3e0 | r0 = fcn_0000e3e0 ();
0x00028856 cmp r0, 0 |
| if (r0 == 0) {
0x00028858 beq.w 0x28a22 | goto label_23;
| }
| do {
0x0002885c sub.w r3, sl, r0 | r3 = sl - r0;
0x00028860 mov.w r2, 0 | r2 = 0;
0x00028864 clz r3, r3 | r3 &= r3;
0x00028868 mov r1, r7 | r1 = r7;
0x0002886a lsrs r3, r3, 5 | r3 >>= 5;
0x0002886c strb r2, [r0, r3] | *((r0 + r3)) = r2;
0x0002886e movs r3, 1 | r3 = 1;
0x00028870 strd r6, r3, [sp] | __asm ("strd r6, r3, [sp]");
0x00028874 mov r2, r4 | r2 = r4;
0x00028876 mov r3, sl | r3 = sl;
0x00028878 mov r0, r5 | r0 = r5;
0x0002887a bl 0x27044 | r0 = fcn_00027044 (r0, r1, r2, r3, r4, r5);
0x0002887e cmp r0, 0 |
| if (r0 < 0) {
0x00028880 blt.w 0x289da | goto label_24;
| }
0x00028884 ldrb r3, [r5, 0x1d] | r3 = *((r5 + 0x1d));
0x00028886 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 < r3) {
0x00028888 bmi 0x28922 | goto label_25;
| }
0x0002888a ldrb.w r3, [sl] | r3 = *(sl);
0x0002888e cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00028890 bne 0x2889a |
0x00028892 ldrb.w r3, [sl, 1] | r3 = *((sl + 1));
0x00028896 cmp r3, 0 |
| if (r3 == 0) {
0x00028898 beq 0x28922 | goto label_25;
| }
| }
0x0002889a movs r1, 0x2f | r1 = 0x2f;
0x0002889c mov r0, sl | r0 = sl;
0x0002889e blx 0xe3e0 | r0 = fcn_0000e3e0 ();
0x000288a2 cmp r0, 0 |
0x000288a4 bne 0x2885c |
| } while (r0 != 0);
0x000288a6 b 0x28922 | goto label_25;
| label_7:
0x000288a8 ldr r1, [pc, 0x1c8] |
0x000288aa movw r2, 0x9dc | r2 = 0x9dc;
0x000288ae ldr r3, [pc, 0x1c8] |
0x000288b0 mvn r4, 0x40 | r4 = ~0x40;
0x000288b4 ldr r0, [pc, 0x1c4] |
0x000288b6 add r1, pc | r1 = 0x5132e;
0x000288b8 add r3, pc | r3 = 0x51336;
0x000288ba adds r1, 7 | r1 += 7;
0x000288bc add r0, pc | r0 = 0x5133c;
0x000288be bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| label_1:
0x000288c2 ldr r0, [sp, 0x24] | r0 = var_24h;
| if (r0 != 0) {
0x000288c4 cbz r0, 0x288ca |
0x000288c6 blx 0xefbc | fcn_0000efbc ();
| }
0x000288ca ldr r2, [pc, 0x1b4] |
0x000288cc ldr r3, [pc, 0x180] | r3 = *(0x28a50);
0x000288ce add r2, pc | r2 = 0x51354;
0x000288d0 ldr r3, [r2, r3] | r3 = *(0x51354);
0x000288d2 ldr r2, [r3] | r2 = *(0x51354);
0x000288d4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000288d6 eors r2, r3 | r2 ^= r3;
0x000288d8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000288dc bne.w 0x28a36 | goto label_26;
| }
0x000288e0 mov r0, r4 | r0 = r4;
0x000288e2 add sp, 0x34 |
0x000288e4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x000288e8 ldr r2, [pc, 0x198] |
0x000288ea movs r3, 0 | r3 = 0;
0x000288ec ldr r1, [pc, 0x198] |
0x000288ee mov r0, r7 | r0 = r7;
0x000288f0 add r2, pc | r2 = 0x51378;
0x000288f2 add r1, pc | r1 = 0x5137e;
0x000288f4 blx 0xed54 | r0 = fcn_0000ed54 ();
0x000288f8 cmp r0, 0 |
| if (r0 >= 0) {
0x000288fa bge.w 0x287fa | goto label_0;
| }
| label_16:
0x000288fe mov r7, r4 | r7 = r4;
0x00028900 movs r2, 0 | r2 = 0;
0x00028902 mov r4, r0 | r4 = r0;
0x00028904 mov r1, r2 | r1 = r2;
0x00028906 mov r0, r7 | r0 = r7;
0x00028908 bl 0x668b4 | fcn_000668b4 (r0, r1, r2);
| label_4:
0x0002890c cmp.w r8, 0 |
| if (r8 == 0) {
0x00028910 beq 0x288c2 | goto label_1;
| }
0x00028912 mov r0, r8 | r0 = r8;
0x00028914 blx 0xe4e8 | fcn_0000e4e8 ();
0x00028918 b 0x288c2 | goto label_1;
| label_22:
0x0002891a ldrb.w r2, [sl, 1] | r2 = *((sl + 1));
0x0002891e cmp r2, 0 |
| if (r2 != 0) {
0x00028920 bne 0x2884e | goto label_2;
| }
| label_25:
0x00028922 mov r0, sl | r0 = sl;
0x00028924 blx 0xe5d4 | write (r0, r1, r2);
| label_19:
0x00028928 movs r2, 0 | r2 = 0;
0x0002892a mov r0, r4 | r0 = r4;
0x0002892c mov r1, r2 | r1 = r2;
0x0002892e bl 0x668b4 | fcn_000668b4 (r0, r1, r2);
| label_5:
0x00028932 ldrb r3, [r5, 0x1d] | r3 = *((r5 + 0x1d));
0x00028934 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00028936 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 < r3) {
0x00028938 bmi.w 0x28748 | goto label_3;
| }
0x0002893c blx 0xe1b8 | r0 = fcn_0000e1b8 ();
0x00028940 cmp r0, 0 |
| if (r0 < 0) {
0x00028942 blt 0x289a2 | goto label_12;
| }
0x00028944 ldrb r2, [r5, 0x1d] | r2 = *((r5 + 0x1d));
0x00028946 ands r2, r2, 2 | r2 &= 2;
| if (r2 != r2) {
0x0002894a bne.w 0x28748 | goto label_3;
| }
0x0002894e ldr r1, [sp, 0x24] | r1 = var_24h;
0x00028950 mov r0, r5 | r0 = r5;
0x00028952 blx 0xeac8 | r0 = fcn_0000eac8 ();
0x00028956 mov r4, r0 | r4 = r0;
0x00028958 b 0x2890c | goto label_4;
| label_13:
0x0002895a ldr r1, [pc, 0x130] |
0x0002895c movw r2, 0x98f | r2 = 0x98f;
0x00028960 ldr r3, [pc, 0x12c] |
0x00028962 ldr r0, [pc, 0x130] |
0x00028964 add r1, pc | r1 = 0x513f6;
0x00028966 add r3, pc | r3 = 0x513fa;
0x00028968 adds r1, 7 | r1 += 7;
0x0002896a add r0, pc | r0 = 0x51404;
0x0002896c bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_6:
0x00028970 ldr r1, [pc, 0x124] |
0x00028972 movw r2, 0x9db | r2 = 0x9db;
0x00028976 ldr r3, [pc, 0x124] |
0x00028978 ldr r0, [pc, 0x124] |
0x0002897a add r1, pc | r1 = 0x51416;
0x0002897c add r3, pc | r3 = 0x5141e;
0x0002897e adds r1, 7 | r1 += 7;
0x00028980 add r0, pc | r0 = 0x51424;
0x00028982 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| do {
0x00028986 mvn r4, 0x15 | r4 = ~0x15;
0x0002898a b 0x288c2 | goto label_1;
| label_14:
0x0002898c ldr r1, [pc, 0x114] |
0x0002898e mov.w r2, 0x990 | r2 = 0x990;
0x00028992 ldr r3, [pc, 0x114] |
0x00028994 ldr r0, [pc, 0x114] |
0x00028996 add r1, pc | r1 = 0x5143e;
0x00028998 add r3, pc | r3 = 0x51446;
0x0002899a adds r1, 7 | r1 += 7;
0x0002899c add r0, pc | r0 = 0x5144c;
0x0002899e bl 0x68d78 | r0 = fcn_00068d78 (r0, r1, r2, r3);
| label_12:
0x000289a2 mov r4, r0 | r4 = r0;
0x000289a4 b 0x2890c | goto label_4;
| label_8:
0x000289a6 ldr r1, [pc, 0x108] |
0x000289a8 movw r2, 0x9dd | r2 = 0x9dd;
0x000289ac ldr r3, [pc, 0x104] |
0x000289ae ldr r0, [pc, 0x108] |
0x000289b0 add r1, pc | r1 = 0x51466;
0x000289b2 add r3, pc | r3 = 0x5146a;
0x000289b4 adds r1, 7 | r1 += 7;
0x000289b6 add r0, pc | r0 = 0x51474;
0x000289b8 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x000289bc b 0x28986 |
| } while (1);
| label_9:
0x000289be ldr r1, [pc, 0xfc] |
0x000289c0 movw r2, 0x9de | r2 = 0x9de;
0x000289c4 ldr r3, [pc, 0xf8] |
0x000289c6 mvn r4, 9 | r4 = ~9;
0x000289ca ldr r0, [pc, 0xf8] |
0x000289cc add r1, pc | r1 = 0x5148e;
0x000289ce add r3, pc | r3 = 0x51492;
0x000289d0 adds r1, 7 | r1 += 7;
0x000289d2 add r0, pc | r0 = 0x5149c;
0x000289d4 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x000289d8 b 0x288c2 | goto label_1;
| label_24:
0x000289da mov r7, r4 | r7 = r4;
0x000289dc mov r4, r0 | r4 = r0;
0x000289de mov r0, sl | r0 = sl;
0x000289e0 blx 0xe5d4 | write (r0, r1, r2);
0x000289e4 movs r2, 0 | r2 = 0;
0x000289e6 mov r0, r7 | r0 = r7;
0x000289e8 mov r1, r2 | r1 = r2;
0x000289ea bl 0x668b4 | fcn_000668b4 (r0, r1, r2);
0x000289ee b 0x2890c | goto label_4;
| label_10:
0x000289f0 mvn r4, 0x6a | r4 = ~0x6a;
0x000289f4 b 0x288c2 | goto label_1;
| label_11:
0x000289f6 mvn r4, 2 | r4 = ~2;
0x000289fa b 0x288c2 | goto label_1;
| label_20:
0x000289fc ldr r1, [pc, 0xc8] |
0x000289fe movw r2, 0x9bb | r2 = 0x9bb;
0x00028a00 asrs r3, r7, 0xa | r3 = r7 >> 0xa;
0x00028a02 ldr r3, [pc, 0xc8] |
0x00028a04 ldr r0, [pc, 0xc8] |
0x00028a06 add r1, pc | r1 = 0x514d2;
0x00028a08 add r3, pc | r3 = 0x514da;
0x00028a0a adds r1, 7 | r1 += 7;
0x00028a0c add r0, pc | r0 = 0x514e0;
0x00028a0e bl 0x68d78 | r0 = fcn_00068d78 (r0, r1, r2, r3);
| label_21:
0x00028a12 mov r2, r0 | r2 = r0;
0x00028a14 mov r1, r0 | r1 = r0;
0x00028a16 mov r0, r4 | r0 = r4;
0x00028a18 bl 0x668b4 | fcn_000668b4 (r0, r1, r2);
| label_15:
0x00028a1c mvn r4, 0xb | r4 = ~0xb;
0x00028a20 b 0x2890c | goto label_4;
| label_23:
0x00028a22 str r0, [sp, 0xc] | var_ch = r0;
0x00028a24 mov r0, sl | r0 = sl;
0x00028a26 blx 0xe5d4 | write (r0, r1, r2);
0x00028a2a ldr r2, [sp, 0xc] | r2 = var_ch;
0x00028a2c mov r0, r4 | r0 = r4;
0x00028a2e mov r1, r2 | r1 = r2;
0x00028a30 bl 0x668b4 | fcn_000668b4 (r0, r1, r2);
0x00028a34 b 0x28932 | goto label_5;
| label_26:
0x00028a36 blx 0xed3c | strnlen ();
| label_18:
0x00028a3a mov r7, r4 | r7 = r4;
0x00028a3c mov r2, sl | r2 = sl;
0x00028a3e mov r4, r0 | r4 = r0;
0x00028a40 mov r1, sl | r1 = sl;
0x00028a42 mov r0, r7 | r0 = r7;
0x00028a44 bl 0x668b4 | fcn_000668b4 (r0, r1, r2);
0x00028a48 b 0x2890c | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x28ad4 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_emit_object_removed () | void sd_bus_emit_object_removed (uint32_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_23h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x00028ad4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00028ad8 mov r6, r1 | r6 = r1;
0x00028ada ldr r1, [pc, 0x388] |
0x00028adc sub sp, 0x34 |
0x00028ade movs r3, 0 | r3 = 0;
0x00028ae0 ldr r2, [pc, 0x384] | r2 = *(0x28e68);
0x00028ae2 add r1, pc | r1 = 0x5194c;
0x00028ae4 ldr.w fp, [pc, 0x384] | fp = *(0x00028e6c);
0x00028ae8 ldr r2, [r1, r2] |
0x00028aea add fp, pc |
0x00028aec ldr r2, [r2] | r2 = *(0x5194c);
0x00028aee str r2, [sp, 0x2c] | var_2ch = r2;
0x00028af0 mov.w r2, 0 | r2 = 0;
0x00028af4 str r3, [sp, 0x24] | var_24h = r3;
0x00028af6 cmp r0, 0 |
| if (r0 == 0) {
0x00028af8 beq.w 0x28d88 | void (*0x28d88)() ();
| }
0x00028afc bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x00028b00 mov r5, r0 | r5 = r0;
0x00028b02 cmp r0, 0 |
| if (r0 == 0) {
0x00028b04 beq.w 0x28cc2 | goto label_0;
| }
0x00028b08 mov r0, r6 | r0 = r6;
0x00028b0a bl 0x18e10 | r0 = fcn_00018e10 (r0);
0x00028b0e cmp r0, 0 |
| if (r0 == 0) {
0x00028b10 beq.w 0x28dbe | goto label_1;
| }
0x00028b14 mov r0, r5 | r0 = r5;
0x00028b16 bl 0x2f628 | r0 = fcn_0002f628 (r0);
0x00028b1a cmp r0, 0 |
| if (r0 != 0) {
0x00028b1c bne.w 0x28dd6 | goto label_2;
| }
0x00028b20 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00028b22 subs r3, 1 | r3--;
0x00028b24 cmp r3, 4 |
| if (r3 > 4) {
0x00028b26 bhi.w 0x28e08 | goto label_3;
| }
0x00028b2a strb.w r0, [sp, 0x23] | var_23h = r0;
0x00028b2e add.w r3, sp, 0x23 | r3 += var_23h;
0x00028b32 mov r2, r6 | r2 = r6;
0x00028b34 add r1, sp, 0x28 | r1 += var_28h;
0x00028b36 mov r0, r5 | r0 = r5;
0x00028b38 bl 0x253c8 | r0 = fcn_000253c8 (r0, r1, r2, r3);
0x00028b3c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00028b3e blt.w 0x28cdc | void (*0x28cdc)() ();
| }
| if (r4 != r0) {
0x00028b42 beq.w 0x28e0e |
0x00028b46 mov r0, r5 | r0 = r5;
0x00028b48 ldr.w sb, [pc, 0x324] |
0x00028b4c blx 0xeca0 | mmap64 ()
0x00028b50 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00028b52 mov r8, r0 | r8 = r0;
0x00028b54 add sb, pc | sb = 0x519c8;
0x00028b56 str r3, [sp, 0x10] | var_10h = r3;
0x00028b58 ldr r3, [pc, 0x318] |
0x00028b5a add r3, pc | r3 = 0x519d2;
0x00028b5c str r3, [sp, 0x14] | var_14h = r3;
0x00028b5e ldr r3, [pc, 0x318] |
0x00028b60 add r3, pc | r3 = 0x519de;
0x00028b62 str r3, [sp, 0x18] | var_18h = r3;
0x00028b64 add r3, sp, 0x24 | r3 += var_24h;
0x00028b66 str r3, [sp, 0x1c] | var_1ch = r3;
| label_0:
0x00028cc2 ldr r1, [pc, 0x1c8] |
0x00028cc4 mov.w r2, 0xa90 | r2 = 0xa90;
0x00028cc8 ldr r3, [pc, 0x1c4] |
0x00028cca mvn r4, 0x40 | r4 = ~0x40;
0x00028cce ldr r0, [pc, 0x1c4] |
0x00028cd0 add r1, pc | r1 = 0x51b62;
0x00028cd2 add r3, pc | r3 = 0x51b66;
0x00028cd4 adds r1, 7 | r1 += 7;
0x00028cd6 add r0, pc | r0 = 0x51b70;
0x00028cd8 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| label_1:
0x00028dbe ldr r1, [pc, 0x108] |
0x00028dc0 movw r2, 0xa91 | r2 = 0xa91;
0x00028dc4 ldr r3, [pc, 0x104] |
0x00028dc6 ldr r0, [pc, 0x108] |
0x00028dc8 add r1, pc | r1 = 0x51c96;
0x00028dca add r3, pc | r3 = 0x51c9a;
0x00028dcc adds r1, 7 | r1 += 7;
0x00028dce add r0, pc | r0 = sd_id128_get_machine;
0x00028dd0 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x00028dd4 b 0x28d9e | void (*0x28d9e)() ();
| label_2:
0x00028dd6 ldr r1, [pc, 0xfc] |
0x00028dd8 movw r2, 0xa92 | r2 = 0xa92;
0x00028ddc ldr r3, [pc, 0xf8] |
0x00028dde mvn r4, 9 | r4 = ~9;
0x00028de2 ldr r0, [pc, 0xf8] |
0x00028de4 add r1, pc | r1 = 0x51cbe;
0x00028de6 add r3, pc | r3 = 0x51cc2;
0x00028de8 adds r1, 7 | r1 += 7;
0x00028dea add r0, pc | r0 = 0x51ccc;
0x00028dec bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x00028df0 b 0x28cdc | void (*0x28cdc)() ();
| label_3:
0x00028e08 mvn r4, 0x6a | r4 = ~0x6a;
0x00028e0c b 0x28cdc | void (*0x28cdc)() ();
| }
0x00028e0e mvn r4, 2 | r4 = ~2;
0x00028e12 b 0x28cdc | return void (*0x28cdc)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x2821c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sd_bus_emit_properties_changed_strv () | void sd_bus_emit_properties_changed_strv (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1bh;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0002821c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00028220 mov r8, r2 | r8 = r2;
0x00028222 ldr r2, [pc, 0x238] |
0x00028224 mov r7, r3 | r7 = r3;
0x00028226 sub sp, 0x24 |
0x00028228 movs r4, 0 | r4 = 0;
0x0002822a ldr r3, [pc, 0x234] | r3 = *(0x28462);
0x0002822c add r2, pc | r2 = 0x5068e;
0x0002822e ldr r3, [r2, r3] |
0x00028230 ldr r3, [r3] | r3 = *(0x5068e);
0x00028232 str r3, [sp, 0x1c] | var_1ch = r3;
0x00028234 mov.w r3, 0 | r3 = 0;
0x00028238 strb.w r4, [sp, 0x1b] | var_1bh = r4;
0x0002823c cmp r0, 0 |
| if (r0 == 0) {
0x0002823e beq.w 0x283a8 | goto label_7;
| }
0x00028242 mov r6, r1 | r6 = r1;
0x00028244 bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x00028248 mov r5, r0 | r5 = r0;
0x0002824a cmp r0, 0 |
| if (r0 == 0) {
0x0002824c beq.w 0x283c6 | goto label_8;
| }
0x00028250 mov r0, r6 | r0 = r6;
0x00028252 bl 0x18e10 | r0 = fcn_00018e10 (r0);
0x00028256 cmp r0, 0 |
| if (r0 == 0) {
0x00028258 beq.w 0x283e8 | goto label_9;
| }
0x0002825c mov r0, r8 | r0 = r8;
0x0002825e bl 0x18ea8 | r0 = fcn_00018ea8 (r0);
0x00028262 cmp r0, 0 |
| if (r0 == 0) {
0x00028264 beq.w 0x28400 | goto label_10;
| }
0x00028268 mov r0, r5 | r0 = r5;
0x0002826a bl 0x2f628 | r0 = fcn_0002f628 (r0);
0x0002826e cmp r0, 0 |
| if (r0 != 0) {
0x00028270 bne.w 0x28418 | goto label_11;
| }
0x00028274 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00028276 subs r3, 1 | r3--;
0x00028278 cmp r3, 4 |
| if (r3 > 4) {
0x0002827a bhi.w 0x2844a | goto label_12;
| }
| if (r7 != 0) {
0x0002827e cbz r7, 0x28288 |
0x00028280 ldr r4, [r7] | r4 = *(r7);
0x00028282 cmp r4, 0 |
| if (r4 == 0) {
0x00028284 beq.w 0x283e4 | goto label_13;
| }
| }
0x00028288 mov r0, r5 | r0 = r5;
0x0002828a blx 0xeca0 | r0 = mmap64 ()
0x0002828e mov fp, r0 |
0x00028290 mov r0, r6 | r0 = r6;
0x00028292 blx 0xe81c | r0 = fcn_0000e81c ();
0x00028296 cmp.w r0, 0x10000 |
| if (r0 > 0x10000) {
0x0002829a bhi.w 0x28434 | goto label_14;
| }
0x0002829e adds r0, 1 | r0++;
0x000282a0 blx 0xece4 | r0 = fcn_0000ece4 ();
0x000282a4 mov r4, r0 | r4 = r0;
0x000282a6 cmp r0, 0 |
| if (r0 == 0) {
0x000282a8 beq.w 0x28456 | goto label_15;
| }
0x000282ac add.w sb, sp, 0x1b | sb += var_1bh;
0x000282b0 str.w fp, [sp, 0x10] | __asm ("str.w fp, [var_10h]");
| do {
| label_0:
0x000282b4 ldrb r1, [r5, 0x1d] | r1 = *((r5 + 0x1d));
0x000282b6 mov r3, r8 | r3 = r8;
0x000282b8 mov r2, r6 | r2 = r6;
0x000282ba mov r0, r5 | r0 = r5;
0x000282bc bfc r1, 1, 1 | value_0 = BIT_MASK (1, );
| value_0 = ~value_0;
| r1 &= value_0;
0x000282c0 strb r1, [r5, 0x1d] | *((r5 + 0x1d)) = r1;
0x000282c2 movs r1, 0 | r1 = 0;
0x000282c4 str r1, [sp] | *(sp) = r1;
0x000282c6 mov r1, r6 | r1 = r6;
0x000282c8 strd sb, r7, [sp, 4] | __asm ("strd sb, r7, [var_4h]");
0x000282cc bl 0x27b1c | r0 = fcn_00027b1c (r0, r1, r2, r3, r4, r5, r6);
0x000282d0 cmp r0, 0 |
| if (r0 != 0) {
0x000282d2 bne 0x283a0 | goto label_16;
| }
0x000282d4 ldrb r2, [r5, 0x1d] | r2 = *((r5 + 0x1d));
0x000282d6 lsls r2, r2, 0x1e | r2 <<= 0x1e;
0x000282d8 bmi 0x282b4 |
| } while (r2 < r2);
0x000282da str r0, [sp, 0x14] | var_14h = r0;
0x000282dc mov r1, r6 | r1 = r6;
0x000282de mov r0, r4 | r0 = r4;
0x000282e0 blx 0xe9d0 | raise (r0);
0x000282e4 ldrb r2, [r4] | r2 = *(r4);
0x000282e6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000282e8 cmp r2, 0x2f |
| if (r2 != 0x2f) {
0x000282ea bne 0x28302 | goto label_17;
| }
0x000282ec ldrb r2, [r4, 1] | r2 = *((r4 + 1));
| if (r2 != 0) {
0x000282ee cbnz r2, 0x28302 | goto label_17;
| }
| label_1:
0x000282f0 ldrb r2, [r5, 0x1d] | r2 = *((r5 + 0x1d));
0x000282f2 and r2, r2, 2 | r2 &= 2;
0x000282f6 cmp r2, 0 |
| if (r2 != 0) {
0x000282f8 bne 0x282b4 | goto label_0;
| }
0x000282fa ldr.w fp, [sp, 0x10] | fp = var_10h;
0x000282fe mov sl, r3 | sl = r3;
0x00028300 b 0x28350 | goto label_18;
| label_17:
0x00028302 movs r1, 0x2f | r1 = 0x2f;
0x00028304 mov r0, r4 | r0 = r4;
0x00028306 str r3, [sp, 0x14] | var_14h = r3;
0x00028308 blx 0xe3e0 | fcn_0000e3e0 ();
0x0002830c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0002830e cmp r0, 0 |
| if (r0 == 0) {
0x00028310 beq 0x282f0 | goto label_1;
| }
0x00028312 mov.w sl, 0 | sl = 0;
0x00028316 mov.w fp, 1 |
| label_2:
0x0002831a subs r3, r0, r4 | r3 = r0 - r4;
0x0002831c mov r2, r6 | r2 = r6;
0x0002831e clz r3, r3 | r3 &= r3;
0x00028322 mov r1, r4 | r1 = r4;
0x00028324 lsrs r3, r3, 5 | r3 >>= 5;
0x00028326 strb.w sl, [r0, r3] | *((r0 + r3)) = sl;
0x0002832a mov r3, r8 | r3 = r8;
0x0002832c mov r0, r5 | r0 = r5;
0x0002832e strd sb, r7, [sp, 4] | __asm ("strd sb, r7, [var_4h]");
0x00028332 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00028336 bl 0x27b1c | r0 = fcn_00027b1c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x0002833a cbnz r0, 0x28398 | goto label_19;
| }
0x0002833c ldrb r3, [r5, 0x1d] | r3 = *((r5 + 0x1d));
0x0002833e lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 < r3) {
0x00028340 bmi 0x282b4 | goto label_0;
| }
0x00028342 ldrb r3, [r4] | r3 = *(r4);
0x00028344 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00028346 bne 0x2838a |
0x00028348 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
| if (r3 != 0) {
0x0002834a cbnz r3, 0x2838a | goto label_20;
| }
| label_3:
0x0002834c ldrd fp, sl, [sp, 0x10] | __asm ("ldrd fp, sl, [var_10h]");
| label_18:
0x00028350 ldrb.w r2, [sp, 0x1b] | r2 = var_1bh;
0x00028354 cmp r2, 0 |
0x00028356 it eq |
| if (r2 != 0) {
0x00028358 mvneq sl, 1 | sl = ~1;
| }
| label_4:
0x0002835c cmp.w fp, 0 |
| if (fp != 0) {
0x00028360 beq 0x28368 |
0x00028362 mov r0, fp | r0 = fp;
0x00028364 blx 0xe4e8 | fcn_0000e4e8 ();
| }
| label_5:
0x00028368 mov r0, r4 | r0 = r4;
0x0002836a blx 0xe5d4 | write (r0, r1, r2);
0x0002836e ldr r1, [pc, 0xf4] |
0x00028370 ldr r2, [pc, 0xec] | r2 = *(0x28460);
0x00028372 add r1, pc | r1 = 0x507dc;
0x00028374 ldr r2, [r1, r2] | r2 = *(0x507dc);
0x00028376 ldr r1, [r2] | r1 = *(0x507dc);
0x00028378 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0002837a eors r1, r2 | r1 ^= r2;
0x0002837c mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x00028380 bne 0x28452 | goto label_21;
| }
0x00028382 mov r0, sl | r0 = sl;
0x00028384 add sp, 0x24 |
0x00028386 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
| label_20:
0x0002838a movs r1, 0x2f | r1 = 0x2f;
0x0002838c mov r0, r4 | r0 = r4;
0x0002838e blx 0xe3e0 | r0 = fcn_0000e3e0 ();
0x00028392 cmp r0, 0 |
| if (r0 != 0) {
0x00028394 bne 0x2831a | goto label_2;
| }
0x00028396 b 0x2834c | goto label_3;
| label_19:
0x00028398 ldr.w fp, [sp, 0x10] | fp = var_10h;
0x0002839c mov sl, r0 | sl = r0;
0x0002839e b 0x2835c | goto label_4;
| label_16:
0x000283a0 ldr.w fp, [sp, 0x10] | fp = var_10h;
0x000283a4 mov sl, r0 | sl = r0;
0x000283a6 b 0x2835c | goto label_4;
| label_7:
0x000283a8 ldr r1, [pc, 0xbc] |
0x000283aa movw r2, 0x8e7 | r2 = 0x8e7;
0x000283ae ldr r3, [pc, 0xbc] |
0x000283b0 ldr r0, [pc, 0xbc] |
0x000283b2 add r1, pc | r1 = 0x5081e;
0x000283b4 add r3, pc | r3 = 0x50826;
0x000283b6 adds r1, 7 | r1 += 7;
0x000283b8 add r0, pc | r0 = 0x5082c;
0x000283ba bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| do {
| label_6:
0x000283be movs r4, 0 | r4 = 0;
0x000283c0 mvn sl, 0x15 | sl = ~0x15;
0x000283c4 b 0x28368 | goto label_5;
| label_8:
0x000283c6 ldr r1, [pc, 0xac] |
0x000283c8 movw r2, 0x8e8 | r2 = 0x8e8;
0x000283cc ldr r3, [pc, 0xa8] |
0x000283ce mov r4, r5 | r4 = r5;
0x000283d0 ldr r0, [pc, 0xa8] |
0x000283d2 mvn sl, 0x40 | sl = ~0x40;
0x000283d6 add r1, pc | r1 = 0x50850;
0x000283d8 add r3, pc | r3 = 0x50854;
0x000283da adds r1, 7 | r1 += 7;
0x000283dc add r0, pc | r0 = 0x5085c;
0x000283de bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x000283e2 b 0x28368 | goto label_5;
| label_13:
0x000283e4 mov sl, r4 | sl = r4;
0x000283e6 b 0x28368 | goto label_5;
| label_9:
0x000283e8 ldr r1, [pc, 0x94] |
0x000283ea movw r2, 0x8e9 | r2 = 0x8e9;
0x000283ee ldr r3, [pc, 0x94] |
0x000283f0 ldr r0, [pc, 0x94] |
0x000283f2 add r1, pc | r1 = 0x50876;
0x000283f4 add r3, pc | r3 = 0x5087e;
0x000283f6 adds r1, 7 | r1 += 7;
0x000283f8 add r0, pc | r0 = 0x50884;
0x000283fa bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x000283fe b 0x283be |
| } while (1);
| label_10:
0x00028400 ldr r1, [pc, 0x88] |
0x00028402 movw r2, 0x8ea | r2 = 0x8ea;
0x00028406 ldr r3, [pc, 0x88] |
0x00028408 ldr r0, [pc, 0x88] |
0x0002840a add r1, pc | r1 = 0x5089a;
0x0002840c add r3, pc | r3 = 0x508a2;
0x0002840e adds r1, 7 | r1 += 7;
0x00028410 add r0, pc | r0 = 0x508a8;
0x00028412 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x00028416 b 0x283be | goto label_6;
| label_11:
0x00028418 ldr r1, [pc, 0x7c] |
0x0002841a movw r2, 0x8eb | r2 = 0x8eb;
0x0002841e ldr r3, [pc, 0x7c] |
0x00028420 mvn sl, 9 | sl = ~9;
0x00028424 ldr r0, [pc, 0x78] |
0x00028426 add r1, pc | r1 = 0x508c2;
0x00028428 add r3, pc | r3 = 0x508ca;
0x0002842a adds r1, 7 | r1 += 7;
0x0002842c add r0, pc | r0 = 0x508d0;
0x0002842e bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x00028432 b 0x28368 | goto label_5;
| label_14:
0x00028434 ldr r1, [pc, 0x6c] |
0x00028436 movw r2, 0x8fa | r2 = 0x8fa;
0x0002843a ldr r3, [pc, 0x6c] |
0x0002843c ldr r0, [pc, 0x6c] |
0x0002843e add r1, pc | r1 = 0x508e6;
0x00028440 add r3, pc | r3 = 0x508ee;
0x00028442 adds r1, 7 | r1 += 7;
0x00028444 add r0, pc | r0 = 0x508f4;
0x00028446 bl 0x68d78 | r0 = fcn_00068d78 (r0, r1, r2, r3);
| label_12:
0x0002844a mov r4, r0 | r4 = r0;
0x0002844c mvn sl, 0x6a | sl = ~0x6a;
0x00028450 b 0x28368 | goto label_5;
| label_21:
0x00028452 blx 0xed3c | strnlen ();
| label_15:
0x00028456 mvn sl, 0xb | sl = ~0xb;
0x0002845a b 0x2835c | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1c6a8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sd_bus_message_new () | void sd_bus_message_new (uint32_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0001c6a8 push.w {r4, r5, r6, r7, r8, lr} |
0x0001c6ac cmp r0, 0 |
| if (r0 == 0) {
0x0001c6ae beq 0x1c75e | goto label_1;
| }
0x0001c6b0 mov r6, r1 | r6 = r1;
0x0001c6b2 mov r7, r2 | r7 = r2;
0x0001c6b4 bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x0001c6b8 mov r5, r0 | r5 = r0;
0x0001c6ba cmp r0, 0 |
| if (r0 == 0) {
0x0001c6bc beq 0x1c77a | goto label_2;
| }
0x0001c6be ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0001c6c0 cmp r3, 0 |
| if (r3 == 0) {
0x0001c6c2 beq 0x1c796 | goto label_3;
| }
0x0001c6c4 cmp r6, 0 |
| if (r6 == 0) {
0x0001c6c6 beq 0x1c7ae | goto label_4;
| }
0x0001c6c8 cmp r7, 4 |
| if (r7 > 4) {
0x0001c6ca bhi 0x1c7ca | goto label_5;
| }
0x0001c6cc mov.w r1, 0x210 | r1 = 0x210;
0x0001c6d0 movs r0, 1 | r0 = 1;
0x0001c6d2 blx 0xe2f8 | r0 = fcn_0000e2f8 ();
0x0001c6d6 mov r4, r0 | r4 = r0;
0x0001c6d8 cmp r0, 0 |
| if (r0 == 0) {
0x0001c6da beq.w 0x1c7e2 | goto label_6;
| }
0x0001c6de mov.w r8, 1 | r8 = 1;
0x0001c6e2 str.w r8, [r0] | __asm ("str.w r8, [r0]");
0x0001c6e6 mov r0, r5 | r0 = r5;
0x0001c6e8 blx 0xeca0 | mmap64 ()
0x0001c6ec add.w r3, r4, 0x200 | r3 = r4 + 0x200;
0x0001c6f0 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0001c6f2 str.w r3, [r4, 0x104] | __asm ("str.w r3, aav.0x000000ff");
0x0001c6f4 adds r1, 4 | r1 += 4;
0x0001c6f6 movs r3, 0x6c | r3 = 0x6c;
0x0001c6f8 strb.w r7, [r4, 0x201] | *((r4 + 0x201)) = r7;
0x0001c6fc strb.w r3, [r4, 0x200] | *((r4 + 0x200)) = r3;
0x0001c700 ldrb r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x0001c702 strb.w r2, [r4, 0x203] | *((r4 + 0x203)) = r2;
0x0001c706 ldrb r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0001c708 lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
0x0001c70a bpl 0x1c748 |
| while (1) {
0x0001c70c ldrb.w r3, [r4, 0x100] | r3 = *((r4 + 0x100));
0x0001c710 sub.w r2, r2, 2 | r2 -= 2;
0x0001c714 clz r2, r2 | r2 &= r2;
0x0001c718 movs r0, 0 | r0 = 0;
0x0001c71a lsrs r2, r2, 5 | r2 >>= 5;
0x0001c71c bfi r3, r8, 2, 1 | value_0 = BIT_MASK (2, 1);
| value_1 = r8 & value_0;
| value_0 = ~value_0;
| r3 &= value_0;
| r3 |= value_1;
0x0001c720 strb.w r3, [r4, 0x100] | *((r4 + 0x100)) = r3;
0x0001c724 ldrb.w r3, [r4, 0x165] | r3 = *((r4 + 0x165));
0x0001c728 bfi r3, r2, 0, 1 | value_2 = BIT_MASK (0, 1);
| value_3 = r2 & value_2;
| value_2 = ~value_2;
| r3 &= value_2;
| r3 |= value_3;
0x0001c72c strb.w r3, [r4, 0x165] | *((r4 + 0x165)) = r3;
0x0001c730 ldrb r3, [r5, 0x1d] | r3 = *((r5 + 0x1d));
0x0001c732 str r4, [r6] | *(r6) = r4;
0x0001c734 lsls r3, r3, 0x19 | r3 <<= 0x19;
0x0001c736 ittt mi |
| if (r3 >= r3) {
0x0001c738 ldrbmi r3, [r4, 0x202] | r3 = *((r4 + 0x202));
| }
| if (r3 >= r3) {
0x0001c73c orrmi r3, r3, 4 | r3 |= 4;
| }
| if (r3 < r3) {
0x0001c740 strb.w r3, [r4, 0x202] | *((r4 + 0x202)) = r3;
| }
| label_0:
0x0001c744 pop.w {r4, r5, r6, r7, r8, pc} |
0x0001c748 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0001c74a sub.w r8, r3, 4 | r8 = r3 - 4;
0x0001c74e cmp.w r8, 1 |
0x0001c752 ite ls |
| if (r8 > 1) {
0x0001c754 movls r8, 0 | r8 = 0;
| }
| if (r8 > 1) {
0x0001c758 mov.w r8, 1 | r8 = 1;
| }
0x0001c75c b 0x1c70c |
| }
| label_1:
0x0001c75e ldr r1, [pc, 0x88] |
0x0001c760 mov.w r2, 0x24c | r2 = 0x24c;
0x0001c764 ldr r3, [pc, 0x84] |
0x0001c766 ldr r0, [pc, 0x88] |
0x0001c768 add r1, pc | r1 = 0x38f56;
0x0001c76a add r3, pc | r3 = 0x38f5a;
0x0001c76c adds r1, 7 | r1 += 7;
0x0001c76e add r0, pc | r0 = 0x38f64;
0x0001c770 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| do {
0x0001c774 mvn r0, 0x6a | r0 = ~0x6a;
0x0001c778 b 0x1c744 | goto label_0;
| label_2:
0x0001c77a ldr r1, [pc, 0x78] |
0x0001c77c movw r2, 0x24d | r2 = 0x24d;
0x0001c780 ldr r3, [pc, 0x74] |
0x0001c782 ldr r0, [pc, 0x78] |
0x0001c784 add r1, pc | r1 = 0x38f7e;
0x0001c786 add r3, pc | r3 = 0x38f82;
0x0001c788 adds r1, 7 | r1 += 7;
0x0001c78a add r0, pc | r0 = 0x38f8c;
0x0001c78c bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001c790 mvn r0, 0x40 | r0 = ~0x40;
0x0001c794 b 0x1c744 | goto label_0;
| label_3:
0x0001c796 ldr r1, [pc, 0x68] |
0x0001c798 movw r2, 0x24e | r2 = 0x24e;
0x0001c79c ldr r3, [pc, 0x64] |
0x0001c79e ldr r0, [pc, 0x68] |
0x0001c7a0 add r1, pc | r1 = 0x38fa6;
0x0001c7a2 add r3, pc | r3 = 0x38faa;
0x0001c7a4 adds r1, 7 | r1 += 7;
0x0001c7a6 add r0, pc | r0 = 0x38fb4;
0x0001c7a8 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001c7ac b 0x1c774 |
| } while (1);
| label_4:
0x0001c7ae ldr r1, [pc, 0x5c] |
0x0001c7b0 movw r2, 0x24f | r2 = 0x24f;
0x0001c7b4 ldr r3, [pc, 0x58] |
0x0001c7b6 ldr r0, [pc, 0x5c] |
0x0001c7b8 add r1, pc | r1 = 0x38fca;
0x0001c7ba add r3, pc | r3 = 0x38fce;
0x0001c7bc adds r1, 7 | r1 += 7;
0x0001c7be add r0, pc | r0 = 0x38fd8;
0x0001c7c0 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| do {
0x0001c7c4 mvn r0, 0x15 | r0 = ~0x15;
0x0001c7c8 b 0x1c744 | goto label_0;
| label_5:
0x0001c7ca ldr r1, [pc, 0x4c] |
0x0001c7cc movw r2, 0x251 | r2 = 0x251;
0x0001c7d0 ldr r3, [pc, 0x48] |
0x0001c7d2 ldr r0, [pc, 0x4c] |
0x0001c7d4 add r1, pc | r1 = 0x38ff2;
0x0001c7d6 add r3, pc | r3 = 0x38ff6;
0x0001c7d8 adds r1, 7 | r1 += 7;
0x0001c7da add r0, pc | r0 = 0x39000;
0x0001c7dc bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001c7e0 b 0x1c7c4 |
| } while (1);
| label_6:
0x0001c7e2 mvn r0, 0xb | r0 = ~0xb;
0x0001c7e6 b 0x1c744 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1c9b8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sd_bus_message_new_signal () | void sd_bus_message_new_signal (int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_48h, 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_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| label_2:
0x0001c4f8 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0001c4fa cmp r3, 0 |
| if (r3 == 0) {
0x0001c4fc beq.w 0x1c656 | goto label_8;
| }
0x0001c500 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x0001c502 cmp r7, 0x6c |
0x0001c504 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x0001c506 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0001c508 it ne |
| if (r7 != 0x6c) {
0x0001c50a revne r1, r1 | __asm ("revne r1, r1");
| }
0x0001c50c sub.w r3, r3, 0x10 | r3 -= 0x10;
0x0001c510 it ne |
| if (r7 != 0x6c) {
0x0001c512 revne r0, r0 | __asm ("revne r0, r0");
| }
0x0001c514 cmp r1, r3 |
0x0001c516 strd r1, r0, [r4, 0x114] | __asm ("strd r1, r0, aav.0x000000ff");
| if (r1 > r3) {
0x0001c51a bhi.w 0x1c656 | goto label_8;
| }
0x0001c51e adds r1, 7 | r1 += 7;
0x0001c520 bic r1, r1, 7 | r1 = BIT_MASK (r1, 7);
0x0001c524 cmp r3, r1 |
| if (r3 <= r1) {
0x0001c526 blo.w 0x1c656 | goto label_8;
| }
0x0001c52a subs r3, r3, r1 | r3 -= r1;
0x0001c52c cmp r3, r0 |
| if (r3 != r0) {
0x0001c52e bne.w 0x1c656 | goto label_8;
| }
0x0001c532 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x0001c534 str.w r3, [r4, 0x160] | __asm ("str.w r3, aav.0x000000ff");
0x0001c538 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0001c53a str.w r3, [r4, 0x15c] | __asm ("str.w r3, aav.0x000000ff");
0x0001c53e ldr r3, [sp, 0x40] | r3 = *(arg_40h);
| if (r3 != 0) {
0x0001c540 cbz r3, 0x1c55c |
0x0001c542 ldr r0, [sp, 4] | r0 = var_4h;
0x0001c544 mov r1, r3 | r1 = r3;
0x0001c546 add.w r2, sl, 1 | r2 = sl + 1;
0x0001c54a add r0, r4 | r0 += r4;
0x0001c54c str.w r0, [r4, 0xc4] | __asm ("str.w r0, [r4, 0xc4]");
0x0001c550 blx 0xe8b0 | fcn_0000e8b0 ();
0x0001c554 ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x0001c556 orr r3, r3, 0x8000000 | r3 |= 0x8000000;
0x0001c55a str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
| }
0x0001c55c movs r3, 1 | r3 = 1;
0x0001c55e mov r0, sb | r0 = sb;
0x0001c560 str r3, [r4] | *(r4) = r3;
0x0001c562 blx 0xeca0 | mmap64 ()
0x0001c566 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x0001c568 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0001c56a str r4, [r3] | *(r3) = r4;
0x0001c56c movs r4, 0 | r4 = 0;
0x0001c56e mov r5, r4 | r5 = r4;
| do {
0x0001c570 mov r0, r4 | r0 = r4;
0x0001c572 blx 0xe5d4 | write (r0, r1, r2);
0x0001c576 mov r0, r5 | r0 = r5;
0x0001c578 add sp, 0xc |
0x0001c57a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x0001c656 mvn r5, 0x49 | r5 = ~0x49;
0x0001c65a b 0x1c570 |
| } while (1);
0x0001c9b8 push.w {r4, r5, r6, r7, r8, lr} |
0x0001c9bc mov r6, r2 | r6 = r2;
0x0001c9be ldr r2, [pc, 0x1cc] |
0x0001c9c0 mov r7, r3 | r7 = r3;
0x0001c9c2 sub sp, 0x18 |
0x0001c9c4 movs r4, 0 | r4 = 0;
0x0001c9c6 ldr r3, [pc, 0x1c8] | r3 = *(0x1cb92);
0x0001c9c8 add r2, pc | r2 = 0x3955a;
0x0001c9ca ldr.w r8, [sp, 0x30] | r8 = *(arg_30h);
0x0001c9ce ldr r3, [r2, r3] |
0x0001c9d0 ldr r3, [r3] | r3 = *(0x3955a);
0x0001c9d2 str r3, [sp, 0x14] | var_14h = r3;
0x0001c9d4 mov.w r3, 0 | r3 = 0;
0x0001c9d8 str r4, [sp, 0x10] | var_10h = r4;
0x0001c9da cmp r0, 0 |
| if (arg_30h == ) {
0x0001c9dc beq.w 0x1caf0 | goto label_9;
| }
0x0001c9e0 mov r5, r1 | r5 = r1;
0x0001c9e2 bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x0001c9e6 mov r4, r0 | r4 = r0;
0x0001c9e8 cmp r0, 0 |
| if (r0 != 0) {
0x0001c9ea beq 0x1ca96 |
0x0001c9ec ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0001c9ee cmp r3, 0 |
| if (r3 == 0) {
0x0001c9f0 beq.w 0x1cb0c | goto label_10;
| }
0x0001c9f4 mov r0, r6 | r0 = r6;
0x0001c9f6 bl 0x18e10 | r0 = fcn_00018e10 (r0);
0x0001c9fa cmp r0, 0 |
| if (r0 == 0) {
0x0001c9fc beq.w 0x1cb24 | goto label_11;
| }
0x0001ca00 mov r0, r7 | r0 = r7;
0x0001ca02 bl 0x18ea8 | r0 = fcn_00018ea8 (r0);
0x0001ca06 cmp r0, 0 |
| if (r0 == 0) {
0x0001ca08 beq.w 0x1cb3c | goto label_12;
| }
0x0001ca0c mov r0, r8 | r0 = r8;
0x0001ca0e bl 0x1900c | r0 = fcn_0001900c (r0);
0x0001ca12 cmp r0, 0 |
| if (r0 == 0) {
0x0001ca14 beq.w 0x1cb54 | goto label_13;
| }
0x0001ca18 cmp r5, 0 |
| if (r5 == 0) {
0x0001ca1a beq 0x1cad4 | goto label_14;
| }
0x0001ca1c mov r0, r4 | r0 = r4;
0x0001ca1e movs r2, 4 | r2 = 4;
0x0001ca20 add r1, sp, 0x10 | r1 += var_10h;
0x0001ca22 blx 0xec10 | r0 = fcn_0000ec10 ();
0x0001ca26 cmp r0, 0 |
| if (r0 < 0) {
0x0001ca28 blt.w 0x1cb82 | goto label_15;
| }
0x0001ca2c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0001ca2e cmp r3, 0 |
| if (r3 == 0) {
0x0001ca30 beq.w 0x1cb6c | goto label_16;
| }
0x0001ca34 ldr.w r2, [r3, 0x104] | r2 = *((r3 + 0x104));
0x0001ca38 movs r1, 0x6f | r1 = 0x6f;
0x0001ca3a ldrb r3, [r2, 2] | r3 = *((r2 + 2));
0x0001ca3c orr r3, r3, 1 | r3 |= 1;
0x0001ca40 strb r3, [r2, 2] | *((r2 + 2)) = r3;
0x0001ca42 movs r2, 1 | r2 = 1;
0x0001ca44 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0001ca46 movs r3, 0 | r3 = 0;
0x0001ca48 strd r1, r6, [sp] | __asm ("strd r1, r6, [sp]");
0x0001ca4c add.w r1, r0, 0x18 | r1 = r0 + 0x18;
0x0001ca50 str r1, [sp, 8] | var_8h = r1;
0x0001ca52 bl 0x1bcc4 | r0 = fcn_0001bcc4 (r0, r1, r2);
0x0001ca56 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0001ca58 blt 0x1cab0 | goto label_0;
| }
0x0001ca5a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0001ca5c movs r6, 0x73 | r6 = 0x73;
0x0001ca5e movs r2, 2 | r2 = 2;
0x0001ca60 str r7, [sp, 4] | var_4h = r7;
0x0001ca62 str r6, [sp] | *(sp) = r6;
0x0001ca64 add.w r3, r0, 0x1c | r3 = r0 + 0x1c;
0x0001ca68 str r3, [sp, 8] | var_8h = r3;
0x0001ca6a movs r3, 0 | r3 = 0;
0x0001ca6c bl 0x1bcc4 | r0 = fcn_0001bcc4 (r0, r1, r2);
0x0001ca70 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0001ca72 blt 0x1cab0 | goto label_0;
| }
0x0001ca74 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0001ca76 movs r2, 3 | r2 = 3;
0x0001ca78 movs r3, 0 | r3 = 0;
0x0001ca7a str.w r8, [sp, 4] | __asm ("str.w r8, [var_4h]");
0x0001ca7e str r6, [sp] | *(sp) = r6;
0x0001ca80 add.w r1, r0, 0x20 | r1 = r0 + 0x20;
0x0001ca84 str r1, [sp, 8] | var_8h = r1;
0x0001ca86 bl 0x1bcc4 | r0 = fcn_0001bcc4 (r0, r1, r2);
0x0001ca8a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0001ca8c blt 0x1cab0 | goto label_0;
| }
0x0001ca8e ldr r3, [sp, 0x10] | r3 = var_10h;
0x0001ca90 movs r4, 0 | r4 = 0;
0x0001ca92 str r3, [r5] | *(r5) = r3;
0x0001ca94 b 0x1cab8 | goto label_17;
| }
0x0001ca96 ldr r1, [pc, 0xfc] |
0x0001ca98 movw r2, 0x272 | r2 = 0x272;
0x0001ca9c ldr r3, [pc, 0xf8] |
0x0001ca9e mvn r4, 0x40 | r4 = ~0x40;
0x0001caa2 ldr r0, [pc, 0xf8] |
0x0001caa4 add r1, pc | r1 = 0x3963e;
0x0001caa6 add r3, pc | r3 = 0x39642;
0x0001caa8 adds r1, 7 | r1 += 7;
0x0001caaa add r0, pc | r0 = 0x3964c;
0x0001caac bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| do {
| label_0:
0x0001cab0 ldr r0, [sp, 0x10] | r0 = var_10h;
| if (r0 != 0) {
0x0001cab2 cbz r0, 0x1cab8 |
0x0001cab4 blx 0xefbc | fcn_0000efbc ();
| }
| label_17:
0x0001cab8 ldr r2, [pc, 0xe4] |
0x0001caba ldr r3, [pc, 0xd4] | r3 = *(0x1cb92);
0x0001cabc add r2, pc | r2 = 0x39660;
0x0001cabe ldr r3, [r2, r3] | r3 = *(0x39660);
0x0001cac0 ldr r2, [r3] | r2 = *(0x39660);
0x0001cac2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001cac4 eors r2, r3 | r2 ^= r3;
0x0001cac6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001caca bne 0x1cb88 | goto label_18;
| }
0x0001cacc mov r0, r4 | r0 = r4;
0x0001cace add sp, 0x18 |
0x0001cad0 pop.w {r4, r5, r6, r7, r8, pc} |
| label_14:
0x0001cad4 ldr r1, [pc, 0xcc] |
0x0001cad6 movw r2, 0x277 | r2 = 0x277;
0x0001cada ldr r3, [pc, 0xcc] |
0x0001cadc ldr r0, [pc, 0xcc] |
0x0001cade add r1, pc | r1 = 0x39686;
0x0001cae0 add r3, pc | r3 = 0x3968e;
0x0001cae2 adds r1, 7 | r1 += 7;
0x0001cae4 add r0, pc | r0 = 0x39694;
0x0001cae6 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| label_1:
0x0001caea mvn r4, 0x15 | r4 = ~0x15;
0x0001caee b 0x1cab0 |
| } while (1);
| label_9:
0x0001caf0 ldr r1, [pc, 0xbc] |
0x0001caf2 movw r2, 0x271 | r2 = 0x271;
0x0001caf6 ldr r3, [pc, 0xbc] |
0x0001caf8 ldr r0, [pc, 0xbc] |
0x0001cafa add r1, pc | r1 = 0x396ae;
0x0001cafc add r3, pc | r3 = 0x396b6;
0x0001cafe adds r1, 7 | r1 += 7;
0x0001cb00 add r0, pc | r0 = 0x396bc;
0x0001cb02 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| do {
0x0001cb06 mvn r4, 0x6a | r4 = ~0x6a;
0x0001cb0a b 0x1cab0 | goto label_0;
| label_10:
0x0001cb0c ldr r1, [pc, 0xac] |
0x0001cb0e movw r2, 0x273 | r2 = 0x273;
0x0001cb12 ldr r3, [pc, 0xac] |
0x0001cb14 ldr r0, [pc, 0xac] |
0x0001cb16 add r1, pc | r1 = 0x396d6;
0x0001cb18 add r3, pc | r3 = 0x396de;
0x0001cb1a adds r1, 7 | r1 += 7;
0x0001cb1c add r0, pc | r0 = 0x396e4;
0x0001cb1e bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001cb22 b 0x1cb06 |
| } while (1);
| label_11:
0x0001cb24 ldr r1, [pc, 0xa0] |
0x0001cb26 mov.w r2, 0x274 | r2 = 0x274;
0x0001cb2a ldr r3, [pc, 0xa0] |
0x0001cb2c ldr r0, [pc, 0xa0] |
0x0001cb2e add r1, pc | r1 = 0x396fa;
0x0001cb30 add r3, pc | r3 = 0x39702;
0x0001cb32 adds r1, 7 | r1 += 7;
0x0001cb34 add r0, pc | r0 = 0x39708;
0x0001cb36 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001cb3a b 0x1caea | goto label_1;
| label_12:
0x0001cb3c ldr r1, [pc, 0x94] |
0x0001cb3e movw r2, 0x275 | r2 = 0x275;
0x0001cb42 ldr r3, [pc, 0x94] |
0x0001cb44 ldr r0, [pc, 0x94] |
0x0001cb46 add r1, pc | r1 = 0x3971e;
0x0001cb48 add r3, pc | r3 = 0x39726;
0x0001cb4a adds r1, 7 | r1 += 7;
0x0001cb4c add r0, pc | r0 = 0x3972c;
0x0001cb4e bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001cb52 b 0x1caea | goto label_1;
| label_13:
0x0001cb54 ldr r1, [pc, 0x88] |
0x0001cb56 movw r2, 0x276 | r2 = 0x276;
0x0001cb5a ldr r3, [pc, 0x88] |
0x0001cb5c ldr r0, [pc, 0x88] |
0x0001cb5e add r1, pc | r1 = 0x39742;
0x0001cb60 add r3, pc | r3 = 0x3974a;
0x0001cb62 adds r1, 7 | r1 += 7;
0x0001cb64 add r0, pc | r0 = 0x39750;
0x0001cb66 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001cb6a b 0x1caea | goto label_1;
| label_16:
0x0001cb6c ldr r1, [pc, 0x7c] |
0x0001cb6e movw r2, 0x27d | r2 = 0x27d;
0x0001cb72 ldr r3, [pc, 0x7c] |
0x0001cb74 ldr r0, [pc, 0x7c] |
0x0001cb76 add r1, pc | r1 = 0x39766;
0x0001cb78 add r3, pc | r3 = 0x3976e;
0x0001cb7a adds r1, 7 | r1 += 7;
0x0001cb7c add r0, pc | r0 = 0x39774;
0x0001cb7e bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_15:
0x0001cb82 mvn r4, 0xb | r4 = ~0xb;
0x0001cb86 b 0x1cab0 | goto label_0;
| label_18:
0x0001cb88 blx 0xed3c | strnlen ();
0x0001cb8c cdp2 p0, 0xb, c0, c12, c7, 0 | __asm ("cdp2 p0, 0xb, c0, c12, c7, 0");
0x0001cb90 lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x0001cb92 movs r0, r0 |
| if (r0 == r0) {
0x0001cb94 bne 0x1cc18 |
0x0001cb96 movs r5, r0 | r5 = r0;
0x0001cb98 b 0x1c4f8 | goto label_2;
| }
0x0001cc18 str r3, [sp, 0x10] | var_10h = r3;
0x0001cc1a cmp r0, 0 |
| if (r0 == 0) {
0x0001cc1c beq.w 0x1cd40 | goto label_19;
| }
0x0001cc20 mov r7, r1 | r7 = r1;
0x0001cc22 bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x0001cc26 mov r4, r0 | r4 = r0;
0x0001cc28 cmp r0, 0 |
| if (r0 != 0) {
0x0001cc2a beq 0x1ccec |
0x0001cc2c ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0001cc2e cmp r3, 0 |
| if (r3 == 0) {
0x0001cc30 beq.w 0x1cd5c | goto label_20;
| }
0x0001cc34 cmp r6, 0 |
| if (r6 != 0) {
0x0001cc36 bne.w 0x1cd74 | goto label_21;
| }
| label_4:
0x0001cc3a mov r0, r5 | r0 = r5;
0x0001cc3c bl 0x18e10 | r0 = fcn_00018e10 (r0);
0x0001cc40 cmp r0, 0 |
| if (r0 == 0) {
0x0001cc42 beq.w 0x1cd98 | goto label_22;
| }
0x0001cc46 cmp.w r8, 0 |
| if (r8 != 0) {
0x0001cc4a bne.w 0x1cdb4 | goto label_23;
| }
| label_6:
0x0001cc4e mov r0, sb | r0 = sb;
0x0001cc50 bl 0x1900c | r0 = fcn_0001900c (r0);
0x0001cc54 cmp r0, 0 |
| if (r0 == 0) {
0x0001cc56 beq.w 0x1cdd8 | goto label_24;
| }
0x0001cc5a cmp r7, 0 |
| if (r7 == 0) {
0x0001cc5c beq.w 0x1cdf0 | goto label_25;
| }
0x0001cc60 mov r0, r4 | r0 = r4;
0x0001cc62 movs r2, 1 | r2 = 1;
0x0001cc64 add r1, sp, 0x10 | r1 += var_10h;
0x0001cc66 blx 0xec10 | r0 = fcn_0000ec10 ();
0x0001cc6a cmp r0, 0 |
| if (r0 < 0) {
0x0001cc6c blt.w 0x1ce08 | goto label_26;
| }
0x0001cc70 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0001cc72 cmp r0, 0 |
| if (r0 == 0) {
0x0001cc74 beq 0x1cd2a | goto label_27;
| }
0x0001cc76 add.w r3, r0, 0x18 | r3 = r0 + 0x18;
0x0001cc7a movs r2, 1 | r2 = 1;
0x0001cc7c str r3, [sp, 8] | var_8h = r3;
0x0001cc7e movs r3, 0x6f | r3 = 0x6f;
0x0001cc80 str r3, [sp] | *(sp) = r3;
0x0001cc82 movs r3, 0 | r3 = 0;
0x0001cc84 str r5, [sp, 4] | var_4h = r5;
0x0001cc86 bl 0x1bcc4 | r0 = fcn_0001bcc4 (r0, r1, r2);
0x0001cc8a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0001cc8c blt 0x1cd06 | goto label_5;
| }
0x0001cc8e ldr r0, [sp, 0x10] | r0 = var_10h;
0x0001cc90 movs r5, 0x73 | r5 = 0x73;
0x0001cc92 movs r2, 3 | r2 = 3;
0x0001cc94 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x0001cc98 str r5, [sp] | *(sp) = r5;
0x0001cc9a add.w r3, r0, 0x20 | r3 = r0 + 0x20;
0x0001cc9e str r3, [sp, 8] | var_8h = r3;
0x0001cca0 movs r3, 0 | r3 = 0;
0x0001cca2 bl 0x1bcc4 | r0 = fcn_0001bcc4 (r0, r1, r2);
0x0001cca6 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0001cca8 blt 0x1cd06 | goto label_5;
| }
0x0001ccaa ldr r0, [sp, 0x10] | r0 = var_10h;
0x0001ccac cmp.w r8, 0 |
| if (r8 != 0) {
0x0001ccb0 beq 0x1ccca |
0x0001ccb2 add.w r1, r0, 0x1c | r1 = r0 + 0x1c;
0x0001ccb6 movs r2, 2 | r2 = 2;
0x0001ccb8 movs r3, 0 | r3 = 0;
0x0001ccba strd r5, r8, [sp] | __asm ("strd r5, r8, [sp]");
0x0001ccbe str r1, [sp, 8] | var_8h = r1;
0x0001ccc0 bl 0x1bcc4 | r0 = fcn_0001bcc4 (r0, r1, r2);
0x0001ccc4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0001ccc6 blt 0x1cd06 | goto label_5;
| }
0x0001ccc8 ldr r0, [sp, 0x10] | r0 = var_10h;
| }
| if (r6 != 0) {
0x0001ccca cbz r6, 0x1cce6 |
0x0001cccc add.w r3, r0, 0x24 | r3 = r0 + 0x24;
0x0001ccd0 movs r1, 0x73 | r1 = 0x73;
0x0001ccd2 strd r6, r3, [sp, 4] | __asm ("strd r6, r3, [var_8h]");
0x0001ccd6 movs r2, 6 | r2 = 6;
0x0001ccd8 movs r3, 0 | r3 = 0;
0x0001ccda str r1, [sp] | *(sp) = r1;
0x0001ccdc bl 0x1bcc4 | r0 = fcn_0001bcc4 (r0, r1, r2);
0x0001cce0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0001cce2 blt 0x1cd06 | goto label_5;
| }
0x0001cce4 ldr r0, [sp, 0x10] | r0 = var_10h;
| }
0x0001cce6 movs r4, 0 | r4 = 0;
0x0001cce8 str r0, [r7] | *(r7) = r0;
0x0001ccea b 0x1cd0e | goto label_28;
| }
0x0001ccec ldr r1, [pc, 0x12c] |
0x0001ccee movw r2, 0x29b | r2 = 0x29b;
0x0001ccf2 ldr r3, [pc, 0x12c] |
0x0001ccf4 mvn r4, 0x40 | r4 = ~0x40;
0x0001ccf8 ldr r0, [pc, 0x128] |
0x0001ccfa add r1, pc | r1 = 0x39b1a;
0x0001ccfc add r3, pc | r3 = 0x39b22;
0x0001ccfe adds r1, 7 | r1 += 7;
0x0001cd00 add r0, pc | r0 = 0x39b28;
0x0001cd02 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| do {
| label_5:
0x0001cd06 ldr r0, [sp, 0x10] | r0 = var_10h;
| if (r0 != 0) {
0x0001cd08 cbz r0, 0x1cd0e |
0x0001cd0a blx 0xefbc | fcn_0000efbc ();
| }
| label_28:
0x0001cd0e ldr r2, [pc, 0x118] |
0x0001cd10 ldr r3, [pc, 0x104] | r3 = *(0x1ce18);
0x0001cd12 add r2, pc | r2 = 0x39b40;
0x0001cd14 ldr r3, [r2, r3] | r3 = *(0x39b40);
0x0001cd16 ldr r2, [r3] | r2 = *(0x39b40);
0x0001cd18 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001cd1a eors r2, r3 | r2 ^= r3;
0x0001cd1c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001cd20 bne 0x1ce0e | goto label_29;
| }
0x0001cd22 mov r0, r4 | r0 = r4;
0x0001cd24 add sp, 0x1c |
0x0001cd26 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_27:
0x0001cd2a ldr r1, [pc, 0x100] |
0x0001cd2c movw r2, 0x2a7 | r2 = 0x2a7;
0x0001cd30 ldr r3, [pc, 0xfc] |
0x0001cd32 ldr r0, [pc, 0x100] |
0x0001cd34 add r1, pc | r1 = 0x39b66;
0x0001cd36 add r3, pc | r3 = 0x39b6a;
0x0001cd38 adds r1, 7 | r1 += 7;
0x0001cd3a add r0, pc | r0 = 0x39b74;
0x0001cd3c bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_19:
0x0001cd40 ldr r1, [pc, 0xf4] |
0x0001cd42 movw r2, 0x29a | r2 = 0x29a;
0x0001cd46 ldr r3, [pc, 0xf4] |
0x0001cd48 ldr r0, [pc, 0xf4] |
0x0001cd4a add r1, pc | r1 = 0x39b86;
0x0001cd4c add r3, pc | r3 = 0x39b8e;
0x0001cd4e adds r1, 7 | r1 += 7;
0x0001cd50 add r0, pc | r0 = 0x39b94;
0x0001cd52 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| label_3:
0x0001cd56 mvn r4, 0x6a | r4 = ~0x6a;
0x0001cd5a b 0x1cd06 |
| } while (1);
| label_20:
0x0001cd5c ldr r1, [pc, 0xe4] |
0x0001cd5e mov.w r2, 0x29c | r2 = 0x29c;
0x0001cd62 ldr r3, [pc, 0xe4] |
0x0001cd64 ldr r0, [pc, 0xe4] |
0x0001cd66 add r1, pc | r1 = 0x39bae;
0x0001cd68 add r3, pc | r3 = 0x39bb6;
0x0001cd6a adds r1, 7 | r1 += 7;
0x0001cd6c add r0, pc | r0 = 0x39bbc;
0x0001cd6e bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001cd72 b 0x1cd56 | goto label_3;
| label_21:
0x0001cd74 mov r0, r6 | r0 = r6;
0x0001cd76 bl 0x18f68 | r0 = fcn_00018f68 (r0);
0x0001cd7a cmp r0, 0 |
| if (r0 != 0) {
0x0001cd7c bne.w 0x1cc3a | goto label_4;
| }
0x0001cd80 ldr r1, [pc, 0xcc] |
0x0001cd82 movw r2, 0x29d | r2 = 0x29d;
0x0001cd86 ldr r3, [pc, 0xcc] |
0x0001cd88 ldr r0, [pc, 0xcc] |
0x0001cd8a add r1, pc | r1 = 0x39bde;
0x0001cd8c add r3, pc | r3 = 0x39be6;
0x0001cd8e adds r1, 7 | r1 += 7;
0x0001cd90 add r0, pc | r0 = 0x39bec;
0x0001cd92 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001cd96 b 0x1cdae | goto label_7;
| label_22:
0x0001cd98 ldr r1, [pc, 0xc0] |
0x0001cd9a movw r2, 0x29e | r2 = 0x29e;
0x0001cd9e ldr r3, [pc, 0xc0] |
0x0001cda0 ldr r0, [pc, 0xc0] |
0x0001cda2 add r1, pc | r1 = 0x39c02;
0x0001cda4 add r3, pc | r3 = 0x39c0a;
0x0001cda6 adds r1, 7 | r1 += 7;
0x0001cda8 add r0, pc | r0 = 0x39c10;
0x0001cdaa bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| label_7:
0x0001cdae mvn r4, 0x15 | r4 = ~0x15;
0x0001cdb2 b 0x1cd06 | goto label_5;
| label_23:
0x0001cdb4 mov r0, r8 | r0 = r8;
0x0001cdb6 bl 0x18ea8 | r0 = fcn_00018ea8 (r0);
0x0001cdba cmp r0, 0 |
| if (r0 != 0) {
0x0001cdbc bne.w 0x1cc4e | goto label_6;
| }
0x0001cdc0 ldr r1, [pc, 0xa4] |
0x0001cdc2 movw r2, 0x29f | r2 = 0x29f;
0x0001cdc6 ldr r3, [pc, 0xa4] |
0x0001cdc8 ldr r0, [pc, 0xa4] |
0x0001cdca add r1, pc | r1 = 0x39c36;
0x0001cdcc add r3, pc | r3 = 0x39c3e;
0x0001cdce adds r1, 7 | r1 += 7;
0x0001cdd0 add r0, pc | r0 = 0x39c44;
0x0001cdd2 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001cdd6 b 0x1cdae | goto label_7;
| label_24:
0x0001cdd8 ldr r1, [pc, 0x98] |
0x0001cdda mov.w r2, 0x2a0 | r2 = 0x2a0;
0x0001cdde ldr r3, [pc, 0x98] |
0x0001cde0 ldr r0, [pc, 0x98] |
0x0001cde2 add r1, pc | r1 = 0x39c5a;
0x0001cde4 add r3, pc | r3 = 0x39c62;
0x0001cde6 adds r1, 7 | r1 += 7;
0x0001cde8 add r0, pc | r0 = 0x39c68;
0x0001cdea bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001cdee b 0x1cdae | goto label_7;
| label_25:
0x0001cdf0 ldr r1, [pc, 0x8c] |
0x0001cdf2 movw r2, 0x2a1 | r2 = 0x2a1;
0x0001cdf6 ldr r3, [pc, 0x8c] |
0x0001cdf8 ldr r0, [pc, 0x8c] |
0x0001cdfa add r1, pc | r1 = 0x39c7e;
0x0001cdfc add r3, pc | r3 = 0x39c86;
0x0001cdfe adds r1, 7 | r1 += 7;
0x0001ce00 add r0, pc | r0 = 0x39c8c;
0x0001ce02 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001ce06 b 0x1cdae | goto label_7;
| label_26:
0x0001ce08 mvn r4, 0xb | r4 = ~0xb;
0x0001ce0c b 0x1cd06 | goto label_5;
| label_29:
0x0001ce0e blx 0xed3c | strnlen ();
0x0001ce12 nop |
0x0001ce14 ldc2l p0, c0, [lr], -0x1c | __asm ("ldc2l p0, c0, [lr], -0x1c");
0x0001ce18 lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x0001ce1a movs r0, r0 |
0x0001ce1c ldm r6, {r1, r3, r5, r6, r7} | r1 = *(r6);
| r3 = *((r6 + 4));
| r5 = *((r6 + 8));
| r6 = *((r6 + 12));
| r7 = *((r6 + 16));
0x0001ce1e movs r5, r0 | r5 = r0;
0x0001ce20 b 0x1d214 |
| while (1) {
0x0001d1fe mvn r0, 0x15 | r0 = ~0x15;
0x0001d202 pop {r3, pc} |
0x0001d214 add r0, pc | r0 += pc;
0x0001d216 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001d21a b 0x1d1fe |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1cbf8 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_message_new_method_call () | void sd_bus_message_new_method_call (int16_t arg_38h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001cbf8 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0001cbfc mov r6, r2 | r6 = r2;
0x0001cbfe ldr r2, [pc, 0x214] |
0x0001cc00 mov r5, r3 | r5 = r3;
0x0001cc02 sub sp, 0x1c |
0x0001cc04 ldr r3, [pc, 0x210] | r3 = *(0x1ce18);
0x0001cc06 add r2, pc | r2 = 0x39a20;
0x0001cc08 ldrd r8, sb, [sp, 0x38] | __asm ("ldrd r8, sb, [arg_38h]");
0x0001cc0c ldr r3, [r2, r3] |
0x0001cc0e ldr r3, [r3] | r3 = *(0x39a20);
0x0001cc10 str r3, [sp, 0x14] | var_14h = r3;
0x0001cc12 mov.w r3, 0 | r3 = 0;
0x0001cc16 movs r3, 0 | r3 = 0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1d0a8 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_message_new_method_return () | void sd_bus_message_new_method_return (int16_t arg2) {
| r1 = arg2;
0x0001d0a8 mov r2, r1 | r2 = r1;
0x0001d0aa movs r1, 2 | r1 = 2;
0x0001d0ac b.w 0x1ce8c | return void (*0x1ce8c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1e140 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_message_new_method_error () | void sd_bus_message_new_method_error (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| label_1:
0x0001e084 str r7, [r7, 0x28] | *((r7 + 0x28)) = r7;
0x0001e086 ldr r3, [pc, 0xa0] |
0x0001e088 ldr r0, [pc, 0xa0] |
0x0001e08a add r1, pc | r1 += pc;
0x0001e08c add r3, pc | r3 = 0x3c1ba;
0x0001e08e adds r1, 7 | r1 += 7;
0x0001e090 add r0, pc | r0 = 0x3c1c0;
0x0001e092 orr r0, sl, 0x71 | r0 = sl | 0x71;
0x0001e140 push.w {r4, r5, r6, r7, r8, lr} |
0x0001e144 mov r6, r1 | r6 = r1;
0x0001e146 ldr r1, [pc, 0xd4] |
0x0001e148 mov r5, r2 | r5 = r2;
0x0001e14a sub sp, 0x18 |
0x0001e14c mov r4, r0 | r4 = r0;
0x0001e14e ldr r3, [pc, 0xd0] | r3 = *(0x1e222);
0x0001e150 movs r2, 0 | r2 = 0;
0x0001e152 add r1, pc | r1 = 0x3c374;
0x0001e154 mov r0, r5 | r0 = r5;
0x0001e156 ldr r3, [r1, r3] |
0x0001e158 ldr r3, [r3] | r3 = *(0x3c374);
0x0001e15a str r3, [sp, 0x14] | var_14h = r3;
0x0001e15c mov.w r3, 0 | r3 = 0;
0x0001e160 str r2, [sp, 0x10] | var_10h = r2;
0x0001e162 blx 0xe804 | r0 = fcn_0000e804 ();
0x0001e166 cmp r0, 0 |
| if (r0 == 0) {
0x0001e168 beq 0x1e1e4 | goto label_2;
| }
0x0001e16a cmp r6, 0 |
| if (r6 == 0) {
0x0001e16c beq 0x1e200 | goto label_3;
| }
0x0001e16e mov r0, r4 | r0 = r4;
0x0001e170 add r2, sp, 0x10 | r2 += var_10h;
0x0001e172 movs r1, 3 | r1 = 3;
0x0001e174 bl 0x1ce8c | r0 = fcn_0001ce8c (r0, r1);
0x0001e178 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0001e17a blt 0x1e1be |
0x0001e17c ldr r7, [sp, 0x10] | r7 = var_10h;
0x0001e17e mov.w r8, 0x73 | r8 = 0x73;
0x0001e182 ldr r2, [r5] | r2 = *(r5);
0x0001e184 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0001e188 add.w r3, r7, 0x2c | r3 = r7 + 0x2c;
0x0001e18c mov r0, r7 | r0 = r7;
0x0001e18e strd r2, r3, [sp, 4] | __asm ("strd r2, r3, [sp, 4]");
0x0001e192 movs r2, 4 | r2 = 4;
0x0001e194 movs r3, 0 | r3 = 0;
0x0001e196 bl 0x1bcc4 | r0 = fcn_0001bcc4 (r0, r1, r2);
0x0001e19a subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x0001e19c blt 0x1e1c0 |
0x0001e19e ldr r2, [r5, 4] | r2 = *((r5 + 4));
| if (r2 != 0) {
0x0001e1a0 cbz r2, 0x1e1b2 |
0x0001e1a2 add.w r3, r7, 0x30 | r3 = r7 + 0x30;
0x0001e1a6 mov r1, r8 | r1 = r8;
0x0001e1a8 mov r0, r7 | r0 = r7;
0x0001e1aa bl 0x1dc5c | r0 = fcn_0001dc5c (r0, r1, r2, r3, r4);
0x0001e1ae subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0001e1b0 blt 0x1e1c0 | goto label_4;
| }
| }
0x0001e1b2 mov.w r3, -1 | r3 = -1;
0x0001e1b6 movs r4, 0 | r4 = 0;
0x0001e1b8 str r3, [r7, 0x34] | *((r7 + 0x34)) = r3;
0x0001e1ba str r7, [r6] | *(r6) = r7;
0x0001e1bc b 0x1e1c8 |
| } else {
0x0001e1be ldr r7, [sp, 0x10] | r7 = var_10h;
| }
| if (r7 == 0) {
| label_4:
0x0001e1c0 cbz r7, 0x1e1c8 | goto label_5;
| }
0x0001e1c2 mov r0, r7 | r0 = r7;
0x0001e1c4 blx 0xefbc | fcn_0000efbc ();
| }
| do {
| label_5:
0x0001e1c8 ldr r2, [pc, 0x58] |
0x0001e1ca ldr r3, [pc, 0x54] | r3 = *(0x1e222);
0x0001e1cc add r2, pc | r2 = 0x3c3f4;
0x0001e1ce ldr r3, [r2, r3] | r3 = *(0x3c3f4);
0x0001e1d0 ldr r2, [r3] | r2 = *(0x3c3f4);
0x0001e1d2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001e1d4 eors r2, r3 | r2 ^= r3;
0x0001e1d6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001e1da bne 0x1e218 | goto label_6;
| }
0x0001e1dc mov r0, r4 | r0 = r4;
0x0001e1de add sp, 0x18 |
0x0001e1e0 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x0001e1e4 ldr r1, [pc, 0x40] |
0x0001e1e6 movw r2, 0x301 | r2 = 0x301;
0x0001e1ea ldr r3, [pc, 0x40] |
0x0001e1ec ldr r0, [pc, 0x40] |
0x0001e1ee add r1, pc | r1 = 0x3c41a;
0x0001e1f0 add r3, pc | r3 = 0x3c422;
0x0001e1f2 adds r1, 7 | r1 += 7;
0x0001e1f4 add r0, pc | r0 = 0x3c428;
0x0001e1f6 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| label_0:
0x0001e1fa mvn r4, 0x15 | r4 = ~0x15;
0x0001e1fe b 0x1e1c8 |
| } while (1);
| label_3:
0x0001e200 ldr r1, [pc, 0x30] |
0x0001e202 movw r2, 0x302 | r2 = 0x302;
0x0001e206 ldr r3, [pc, 0x30] |
0x0001e208 ldr r0, [pc, 0x30] |
0x0001e20a add r1, pc | r1 = 0x3c442;
0x0001e20c add r3, pc | r3 = 0x3c44a;
0x0001e20e adds r1, 7 | r1 += 7;
0x0001e210 add r0, pc | r0 = 0x3c450;
0x0001e212 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001e216 b 0x1e1fa | goto label_0;
| label_6:
0x0001e218 blx 0xed3c | strnlen ();
0x0001e21c b 0x1e084 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1e240 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_message_new_method_errorf () | void sd_bus_message_new_method_errorf (int16_t arg_30h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0001e240 push {r3} |
0x0001e242 movs r3, 0 | r3 = 0;
0x0001e244 push {r4, r5, r6, lr} |
0x0001e246 mov r6, r0 | r6 = r0;
0x0001e248 mov r4, r1 | r4 = r1;
0x0001e24a sub sp, 0x1c |
0x0001e24c ldr r0, [pc, 0x98] |
0x0001e24e ldr r1, [pc, 0x9c] | r1 = *(0x1e2ee);
0x0001e250 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001e254 add r0, pc | r0 = 0x3c540;
0x0001e256 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x0001e258 vstr d16, [sp, 8] | __asm ("vstr d16, [sp, 8]");
0x0001e25c ldr r1, [r0, r1] |
0x0001e25e ldr r1, [r1] | r1 = *(0x3c540);
0x0001e260 str r1, [sp, 0x14] | var_14h = r1;
0x0001e262 mov.w r1, 0 | r1 = 0;
0x0001e266 str r3, [sp, 0x10] | var_10h = r3;
| if (r2 == 0) {
0x0001e268 cbz r2, 0x1e2ae | goto label_1;
| }
| if (r4 == 0) {
0x0001e26a cbz r4, 0x1e2cc | goto label_2;
| }
0x0001e26c mov r1, r2 | r1 = r2;
0x0001e26e mov r2, r5 | r2 = r5;
0x0001e270 add r5, sp, 8 | r5 += var_8h;
0x0001e272 add r3, sp, 0x30 | r3 += arg_30h;
0x0001e274 mov r0, r5 | r0 = r5;
0x0001e276 str r3, [sp, 4] | var_4h = r3;
0x0001e278 bl 0x18078 | fcn_00018078 (r0, r1, r2, r3);
0x0001e27c mov r1, r4 | r1 = r4;
0x0001e27e mov r2, r5 | r2 = r5;
0x0001e280 mov r0, r6 | r0 = r6;
0x0001e282 blx 0xeb94 | r0 = fcn_0000eb94 ();
0x0001e286 mov r4, r0 | r4 = r0;
| do {
0x0001e288 mov r0, r5 | r0 = r5;
0x0001e28a blx 0xe1dc | fcn_0000e1dc ();
0x0001e28c vshll.s32 q2, d8, 8 | __asm ("vshll.s32 q2, d8, 8");
0x0001e290 ldr r3, [pc, 0x58] | r3 = *(0x1e2ec);
0x0001e292 add r2, pc | r2 += pc;
0x0001e294 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001e296 ldr r2, [r3] | r2 = *(0x1e2ec);
0x0001e298 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001e29a eors r2, r3 | r2 ^= r3;
0x0001e29c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001e2a0 bne 0x1e2e4 | goto label_3;
| }
0x0001e2a2 mov r0, r4 | r0 = r4;
0x0001e2a4 add sp, 0x1c |
0x0001e2a6 pop.w {r4, r5, r6, lr} |
0x0001e2aa add sp, 4 |
0x0001e2ac bx lr | return;
| label_1:
0x0001e2ae ldr r1, [pc, 0x44] |
0x0001e2b0 movw r2, 0x322 | r2 = 0x322;
0x0001e2b4 ldr r3, [pc, 0x40] |
0x0001e2b6 ldr r0, [pc, 0x44] |
0x0001e2b8 add r1, pc | r1 = 0x3c5b2;
0x0001e2ba add r3, pc | r3 = 0x3c5b6;
0x0001e2bc adds r1, 7 | r1 += 7;
0x0001e2be add r0, pc | r0 = 0x3c5c0;
0x0001e2c0 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| label_0:
0x0001e2c4 mvn r4, 0x15 | r4 = ~0x15;
0x0001e2c8 add r5, sp, 8 | r5 += var_8h;
0x0001e2ca b 0x1e288 |
| } while (1);
| label_2:
0x0001e2cc ldr r1, [pc, 0x30] |
0x0001e2ce movw r2, 0x323 | r2 = 0x323;
0x0001e2d2 ldr r3, [pc, 0x30] |
0x0001e2d4 ldr r0, [pc, 0x30] |
0x0001e2d6 add r1, pc | r1 = 0x3c5da;
0x0001e2d8 add r3, pc | r3 = 0x3c5e2;
0x0001e2da adds r1, 7 | r1 += 7;
0x0001e2dc add r0, pc | r0 = 0x3c5e8;
0x0001e2de bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0001e2e2 b 0x1e2c4 | goto label_0;
| label_3:
0x0001e2e4 blx 0xed3c | strnlen ();
0x0001e2e8 b 0x1df4c | return void (*0x1df4c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1e30c */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_message_new_method_errno () | void sd_bus_message_new_method_errno (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001e30c push.w {r4, r5, r6, r7, r8, lr} |
0x0001e310 mov r6, r1 | r6 = r1;
0x0001e312 ldr r1, [pc, 0x78] |
0x0001e314 mov r8, r2 | r8 = r2;
0x0001e316 sub sp, 0x10 |
0x0001e318 mov r4, r3 | r4 = r3;
0x0001e31a ldr r2, [pc, 0x74] | r2 = *(0x1e392);
0x0001e31c movs r3, 0 | r3 = 0;
0x0001e31e vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001e322 add r1, pc | r1 = 0x3c6b4;
0x0001e324 mov r5, r0 | r5 = r0;
0x0001e326 mov r0, r4 | r0 = r4;
0x0001e328 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001e32c ldr r2, [r1, r2] |
0x0001e32e ldr r2, [r2] | r2 = *(0x3c6b4);
0x0001e330 str r2, [sp, 0xc] | var_ch = r2;
0x0001e332 mov.w r2, 0 | r2 = 0;
0x0001e336 str r3, [sp, 8] | var_8h = r3;
0x0001e338 blx 0xe804 | r0 = fcn_0000e804 ();
| if (r0 != 0) {
0x0001e33c cbnz r0, 0x1e376 | goto label_0;
| }
0x0001e33e mov r7, sp | r7 = sp;
0x0001e340 mov r1, r8 | r1 = r8;
0x0001e342 mov r0, r7 | r0 = r7;
0x0001e344 blx 0xe48c | fcn_0000e48c ();
0x0001e348 mov r2, r7 | r2 = r7;
0x0001e34a mov r1, r6 | r1 = r6;
0x0001e34c mov r0, r5 | r0 = r5;
0x0001e34e blx 0xeb94 | r0 = fcn_0000eb94 ();
0x0001e352 mov r4, r0 | r4 = r0;
| do {
0x0001e354 mov r0, r7 | r0 = r7;
0x0001e356 blx 0xe1dc | fcn_0000e1dc ();
0x0001e35a ldr r2, [pc, 0x38] |
0x0001e35c ldr r3, [pc, 0x30] | r3 = *(0x1e390);
0x0001e35e add r2, pc | r2 = 0x3c6f8;
0x0001e360 ldr r3, [r2, r3] | r3 = *(0x3c6f8);
0x0001e362 ldr r2, [r3] | r2 = *(0x3c6f8);
0x0001e364 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001e366 eors r2, r3 | r2 ^= r3;
0x0001e368 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001e36c bne 0x1e386 | goto label_1;
| }
0x0001e36e mov r0, r4 | r0 = r4;
0x0001e370 add sp, 0x10 |
0x0001e372 pop.w {r4, r5, r6, r7, r8, pc} |
| label_0:
0x0001e376 mov r2, r4 | r2 = r4;
0x0001e378 mov r1, r6 | r1 = r6;
0x0001e37a mov r0, r5 | r0 = r5;
0x0001e37c mov r7, sp | r7 = sp;
0x0001e37e blx 0xeb94 | r0 = fcn_0000eb94 ();
0x0001e382 mov r4, r0 | r4 = r0;
0x0001e384 b 0x1e354 |
| } while (1);
| label_1:
0x0001e386 blx 0xed3c | strnlen ();
0x0001e38a nop |
0x0001e38c b 0x1de54 | return void (*0x1de54)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1e398 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_message_new_method_errnof () | void sd_bus_message_new_method_errnof (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0001e398 push {r3} |
0x0001e39a push {r4, r5, r6, lr} |
0x0001e39c sub sp, 0x1c |
0x0001e39e add r3, sp, 0x2c | r3 += var_2ch;
0x0001e3a0 mov r6, r1 | r6 = r1;
0x0001e3a2 mov r1, r2 | r1 = r2;
0x0001e3a4 mov r5, r0 | r5 = r0;
0x0001e3a6 ldr r4, [r3], 4 | r4 = *(r3);
| r3 += 4;
0x0001e3aa vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001e3ae ldr r0, [pc, 0x5c] | r0 = *(0x1e40e);
0x0001e3b0 mov r2, r4 | r2 = r4;
0x0001e3b2 ldr r4, [pc, 0x5c] |
0x0001e3b4 vstr d16, [sp, 8] | __asm ("vstr d16, [sp, 8]");
0x0001e3b8 add r4, pc | r4 = 0x3c7ce;
0x0001e3ba ldr r0, [r4, r0] |
0x0001e3bc add r4, sp, 8 | r4 += var_8h;
0x0001e3be ldr r0, [r0] | r0 = *(0x3c7ce);
0x0001e3c0 str r0, [sp, 0x14] | var_14h = r0;
0x0001e3c2 mov.w r0, 0 | r0 = 0;
0x0001e3c6 movs r0, 0 | r0 = 0;
0x0001e3c8 str r0, [sp, 0x10] | var_10h = r0;
0x0001e3ca mov r0, r4 | r0 = r4;
0x0001e3cc str r3, [sp, 4] | var_4h = r3;
0x0001e3ce blx 0xef18 | fcn_0000ef18 ();
0x0001e3d2 mov r2, r4 | r2 = r4;
0x0001e3d4 mov r1, r6 | r1 = r6;
0x0001e3d6 mov r0, r5 | r0 = r5;
0x0001e3d8 blx 0xeb94 | r0 = fcn_0000eb94 ();
0x0001e3dc mov r3, r0 | r3 = r0;
0x0001e3de mov r0, r4 | r0 = r4;
0x0001e3e0 mov r4, r3 | r4 = r3;
0x0001e3e2 blx 0xe1dc | fcn_0000e1dc ();
0x0001e3e6 ldr r2, [pc, 0x2c] |
0x0001e3e8 ldr r3, [pc, 0x20] | r3 = *(0x1e40c);
0x0001e3ea add r2, pc | r2 = 0x3c804;
0x0001e3ec ldr r3, [r2, r3] | r3 = *(0x3c804);
0x0001e3ee ldr r2, [r3] | r2 = *(0x3c804);
0x0001e3f0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001e3f2 eors r2, r3 | r2 ^= r3;
0x0001e3f4 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0001e3f8 bne 0x1e406 |
0x0001e3fa mov r0, r4 | r0 = r4;
0x0001e3fc add sp, 0x1c |
0x0001e3fe pop.w {r4, r5, r6, lr} |
0x0001e400 eors r0, r6 | r0 ^= r6;
0x0001e402 add sp, 4 |
0x0001e404 bx lr | return;
| }
0x0001e406 blx 0xed3c | strnlen ();
0x0001e40a nop |
0x0001e40c lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x0001e40e movs r0, r0 |
0x0001e410 b 0x1ddac | return void (*0x1ddac)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x1c924 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_message_ref () | void sd_bus_message_ref (int16_t arg1) {
| r0 = arg1;
| label_2:
0x0001bcb8 svc 0x92 | __asm ("svc 0x92");
0x0001bcba movs r5, r0 | r5 = r0;
0x0001bcbc movt r0, 0xc005 | r0 = (r0 & 0xFFFF) | 0xc0050000;
0x0001bcc0 ldr r1, [pc, 0x2c0] | r1 = *(0x1bf84);
0x0001bcc2 movs r6, r0 | r6 = r0;
| label_1:
0x0001c2d0 movs r3, r0 | r3 = r0;
0x0001c2d2 ldr r3, [r0, -0x28] | r3 = *((r0 - 0x28));
0x0001c2d6 subs r0, 0x34 | r0 -= 0x34;
| if (r3 == 0) {
0x0001c2d8 cbz r3, 0x1c2f2 | goto label_5;
| }
| do {
0x0001c2da ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x0001c2dc ldrb r0, [r3, r2] | r0 = *((r3 + r2));
0x0001c2de clz r0, r0 | r0 &= r0;
0x0001c2e2 lsrs r0, r0, 5 | r0 >>= 5;
0x0001c2e4 pop {r3, pc} |
| label_0:
0x0001c2f0 bne 0x1c2da |
| } while (r0 != r0);
| label_5:
0x0001c2f2 movs r0, 1 | r0 = 1;
0x0001c2f4 pop {r3, pc} |
| label_3:
0x0001c304 add r0, pc | r0 += pc;
0x0001c306 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
0x0001c308 invalid |
0x0001c30a ldr r1, [pc, 0x20] |
0x0001c30c movw r2, 0xc1d | r2 = 0xc1d;
0x0001c310 ldr r3, [pc, 0x1c] |
0x0001c312 ldr r0, [pc, 0x20] |
0x0001c314 add r1, pc | r1 = 0x38646;
0x0001c316 add r3, pc | r3 = 0x3864a;
0x0001c318 adds r1, 7 | r1 += 7;
0x0001c31a add r0, pc | r0 = 0x38654;
0x0001c31c bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| if (r1 > 7) {
0x0001c320 bhi 0x1c2f0 | goto label_0;
| }
0x0001c322 movs r5, r0 | r5 = r0;
0x0001c324 adcs.w r0, r4, r5 | __asm ("adcs.w r0, r4, r5");
| if (r5 < r0) {
0x0001c328 bls 0x1c3ac | goto label_6;
| }
0x0001c32a movs r5, r0 | r5 = r0;
| if (r5 > r0) {
0x0001c32c bhi 0x1c2d0 | goto label_1;
| }
0x0001c32e movs r5, r0 | r5 = r0;
0x0001c330 b 0x1bcb8 | goto label_2;
| label_6:
0x0001c3ac adds r1, 7 | r1 += 7;
0x0001c3ae add r0, pc | r0 += pc;
0x0001c3b0 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
0x0001c3b4 ldr r0, [r3, 0x18] | r0 = *((r3 + 0x18));
0x0001c3b6 cmp r0, r1 |
0x0001c3b8 ite hi |
| if (r0 <= r1) {
0x0001c3ba movhi r0, 0 | r0 = 0;
| }
| if (r0 > r1) {
0x0001c3bc movls r0, 1 | r0 = 1;
| }
0x0001c3be pop {r3, pc} |
| if (r0 <= r1) {
| label_4:
0x0001c88c blo 0x1c98c | goto label_7;
| }
0x0001c88e movs r5, r0 | r5 = r0;
0x0001c890 b 0x1c304 | goto label_3;
0x0001c924 push {r4, lr} |
0x0001c926 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0001c928 cbz r0, 0x1c938 | goto label_8;
| }
0x0001c92a ldr r3, [r0] | r3 = *(r0);
0x0001c92c cbz r3, 0x1c93c |
| while (r2 != 0) {
0x0001c92e adds r3, 1 | r3++;
0x0001c930 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0001c932 str r3, [r4] | *(r4) = r3;
0x0001c934 blx 0xeca0 | mmap64 ()
| label_8:
0x0001c938 mov r0, r4 | r0 = r4;
0x0001c93a pop {r4, pc} |
0x0001c93c ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x0001c93e cmp r2, 0 |
0x0001c940 bne 0x1c92e |
| }
0x0001c942 ldr r1, [pc, 0x14] |
0x0001c944 movw r2, 0x397 | r2 = 0x397;
0x0001c948 ldr r3, [pc, 0x10] |
0x0001c94a ldr r0, [pc, 0x14] |
0x0001c94c add r1, pc | r1 = 0x392aa;
0x0001c94e add r3, pc | r3 = 0x392ae;
0x0001c950 adds r1, 7 | r1 += 7;
0x0001c952 add r0, pc | r0 = 0x392b8;
0x0001c954 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| if (r1 >= 7) {
0x0001c958 bhs 0x1c88c | goto label_4;
| }
0x0001c95a movs r5, r0 | r5 = r0;
0x0001c95c b 0x1d15c | void (*0x1d15c)() ();
| label_7:
0x0001c98c movs r0, 0 | r0 = 0;
0x0001c98e pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x346c0 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) sym.sd_bus_process () | void sd_bus_process (int16_t arg_118h, int16_t arg_190h, int16_t arg_240h, int16_t arg_2f0h, int16_t arg_308h, uint32_t arg1, int16_t arg2) {
| 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_30h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_70h;
| int16_t var_80h;
| int16_t var_90h;
| int16_t var_a4h;
| r0 = arg1;
| r1 = arg2;
| label_46:
0x000339e8 ldr.w r2, [pc, 0xbcc] | r2 = switch.0x00068e90;
0x000339ec ldr.w r3, [pc, 0xbcc] |
0x000339f0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000339f4 add r2, pc | r2 += pc;
0x000339f6 vpush {d8} | __asm ("vpush {d8}");
0x000339fa sub sp, 0xac |
0x000339fc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000339fe ldr r3, [r3] | r3 = *(0x345bc);
0x00033a00 str r3, [sp, 0xa4] | var_a4h = r3;
0x00033a02 mov.w r3, 0 | r3 = 0;
0x00033a06 cmp r0, 0 |
| if (r0 == 0) {
0x00033a08 beq.w 0x33bb6 | goto label_47;
| }
0x00033a0c mov r6, r1 | r6 = r1;
0x00033a0e bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x00033a12 mov r4, r0 | r4 = r0;
0x00033a14 cmp r0, 0 |
| if (r0 == 0) {
0x00033a16 beq.w 0x33bd8 | goto label_48;
| }
0x00033a1a bl 0x2f628 | r0 = fcn_0002f628 (r0);
0x00033a1e cmp r0, 0 |
| if (r0 != 0) {
0x00033a20 bne.w 0x33bfa | goto label_49;
| }
0x00033a24 ldr.w r3, [r4, 0x3e8] | r3 = *((r4 + 0x3e8));
0x00033a28 cmp r3, 0 |
| if (r3 != 0) {
0x00033a2a bne.w 0x33c1c | goto label_50;
| }
0x00033a2e ldr.w r3, [r4, 0x3ec] | r3 = *((r4 + 0x3ec));
0x00033a32 cmp r3, 0 |
| if (r3 != 0) {
0x00033a34 bne.w 0x33c3e | goto label_51;
| }
0x00033a38 mov r0, r4 | r0 = r4;
0x00033a3a blx 0xeca0 | mmap64 ()
0x00033a3e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00033a40 mov r7, r0 | r7 = r0;
0x00033a42 cmp r3, 7 |
| if (r3 > 7) {
0x00033a44 bhi.w 0x345a6 | goto label_52;
| }
| /* switch table (8 cases) at 0x33a4c */
0x00033a48 tbb [pc, r3] | __asm ("tbb aav.0x000000ff");
0x00033a54 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00033a58 mov.w sl, 0 | sl = 0;
0x00033a5c str.w sl, [sp, 0x60] | __asm ("str.w sl, [var_60h]");
0x00033a60 str.w sl, [sp, 0x54] | __asm ("str.w sl, [var_54h]");
0x00033a64 vstr d16, [sp, 0x58] | __asm ("vstr d16, [sp, 0x58]");
0x00033a68 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00033a6a subs r3, 4 | r3 -= 4;
0x00033a6c cmp r3, 1 |
| if (r3 < 1) {
0x00033a6e bls 0x33b3e | goto label_53;
| }
0x00033a70 ldr.w r1, [pc, 0xb4c] |
0x00033a74 movw r2, 0xa3d | r2 = 0xa3d;
0x00033a78 ldr.w r3, [pc, 0xb48] | r3 = *(0x000345c4);
0x00033a7c ldr.w r0, [pc, 0xb48] | r0 = *(0x000345c8);
0x00033a80 add r1, pc | r1 = 0x68044;
0x00033a82 add r3, pc | r3 += pc;
0x00033a84 adds r1, 7 | r1 += 7;
0x00033a86 add r0, pc | r0 += pc;
0x00033a88 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
0x00033a8c movs r5, 0 | r5 = 0;
0x00033a8e ldr.w r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x00033a92 mov r2, r5 | r2 = r5;
0x00033a94 mov r1, r5 | r1 = r5;
0x00033a96 str r5, [sp, 0x50] | var_50h = r5;
0x00033a98 bl 0x666d4 | r0 = fcn_000666d4 (r0, r1, r2);
0x00033a9c mov sb, r0 | sb = r0;
0x00033a9e cmp r0, 0 |
| if (r0 != 0) {
0x00033aa0 bne.w 0x33e50 | goto label_54;
| }
0x00033aa4 ldr.w r0, [r4, 0x40c] | r0 = *((r4 + 0x40c));
0x00033aa8 cmp r0, 0 |
| if (r0 == 0) {
0x00033aaa beq.w 0x33c5a | goto label_55;
| }
0x00033aae bl 0x2d544 | fcn_0002d544 (r0);
0x00033ab2 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00033ab4 movs r5, 1 | r5 = 1;
| if (r0 == 0) {
| label_8:
0x00033ab6 cbz r0, 0x33abc | goto label_0;
| }
| label_16:
0x00033ab8 blx 0xefbc | fcn_0000efbc ();
| do {
| if (r7 != 0) {
| label_0:
0x00033abc cbz r7, 0x33ac4 |
0x00033abe mov r0, r7 | r0 = r7;
0x00033ac0 blx 0xe4e8 | fcn_0000e4e8 ();
| }
| label_4:
0x00033ac4 ldr.w r2, [pc, 0xb04] |
0x00033ac8 ldr.w r3, [pc, 0xaf0] | r3 = *(0x345bc);
0x00033acc add r2, pc | r2 = 0x6809c;
0x00033ace ldr r3, [r2, r3] | r3 = *(0x6809c);
0x00033ad0 ldr r2, [r3] | r2 = *(0x6809c);
0x00033ad2 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x00033ad4 eors r2, r3 | r2 ^= r3;
0x00033ad6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00033ada bne.w 0x3423c | goto label_56;
| }
0x00033ade mov r0, r5 | r0 = r5;
0x00033ae0 add sp, 0xac |
0x00033ae2 vpop {d8} | __asm ("vpop {d8}");
0x00033ae6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00033aea mov r0, r4 | r0 = r4;
0x00033aec bl 0x2c910 | r0 = fcn_0002c910 (r0);
0x00033af0 mov r5, r0 | r5 = r0;
| label_1:
0x00033af2 eor.w r3, r5, r5, asr 31 | r3 = r5 ^ (r5 >> 31);
0x00033af6 sub.w r3, r3, r5, asr 31 | r3 -= (r5 >> 31);
0x00033afa cmp r3, 0x71 |
| if (r3 <= 0x71) {
0x00033afc bgt 0x33b10 |
0x00033afe cmp r3, 0x5b |
| if (r3 > 0x5b) {
0x00033b00 bgt 0x33b9c | goto label_57;
| }
0x00033b02 sub.w r2, r3, 0x20 | r2 = r3 - 0x20;
0x00033b06 bics r2, r2, 0x20 | __asm ("bics r2, r2, 0x20");
| if (r3 == 0x5b) {
0x00033b0a beq 0x33bac | goto label_7;
| }
0x00033b0c cmp r3, 0x47 |
| if (r3 == 0x47) {
0x00033b0e beq 0x33bac | goto label_7;
| }
| }
| label_2:
0x00033b10 cmp r5, 0 |
0x00033b12 blt 0x33abc |
| } while (r5 < 0);
| label_3:
0x00033b14 cmp r6, 0 |
| if (r6 == 0) {
0x00033b16 beq 0x33abc | goto label_0;
| }
| label_6:
0x00033b18 movs r3, 0 | r3 = 0;
0x00033b1a str r3, [r6] | *(r6) = r3;
0x00033b1c b 0x33abc | goto label_0;
0x00033b1e mov r0, r4 | r0 = r4;
0x00033b20 bl 0x2c9d8 | r0 = fcn_0002c9d8 (r0);
0x00033b24 mov r5, r0 | r5 = r0;
0x00033b26 b 0x33af2 | goto label_1;
0x00033b28 mov r0, r4 | r0 = r4;
0x00033b2a bl 0x2ca54 | r0 = fcn_0002ca54 (r0);
0x00033b2e mov r5, r0 | r5 = r0;
0x00033b30 b 0x33af2 | goto label_1;
0x00033b32 mvn r5, 0x67 | r5 = ~0x67;
0x00033b36 b 0x33abc | goto label_0;
0x00033b38 mvn r5, 0x6a | r5 = ~0x6a;
0x00033b3c b 0x33abc | goto label_0;
| label_53:
0x00033b3e ldr r0, [r4, 0x7c] | r0 = *((r4 + 0x7c));
0x00033b40 mov r1, sl | r1 = sl;
0x00033b42 bl 0x6d478 | r0 = fcn_0006d478 (r0, r1);
0x00033b46 mov sb, r0 | sb = r0;
0x00033b48 cmp r0, 0 |
| if (r0 == 0) {
0x00033b4a beq.w 0x33cf8 | goto label_58;
| }
0x00033b4e movs r0, 1 | r0 = 1;
0x00033b50 bl 0x725f4 | fcn_000725f4 (r0);
0x00033b54 ldrd r2, r3, [sb, 8] | __asm ("ldrd r2, r3, [sb, 8]");
0x00033b58 cmp r0, r2 |
0x00033b5a sbcs r1, r3 | __asm ("sbcs r1, r3");
| if (r0 >= r2) {
0x00033b5c bhs.w 0x33d04 | goto label_59;
| }
0x00033b60 ldr r0, [sp, 0x54] | r0 = var_54h;
0x00033b62 cmp r0, 0 |
| if (r0 == 0) {
0x00033b64 beq.w 0x33cf8 | goto label_58;
| }
0x00033b68 add.w r8, sp, 0x58 | r8 += var_58h;
0x00033b6c blx 0xefbc | fcn_0000efbc ();
0x00033b70 mov r0, r8 | r0 = r8;
0x00033b72 blx 0xe1dc | fcn_0000e1dc ();
| label_5:
0x00033b76 mov r0, r4 | r0 = r4;
0x00033b78 bl 0x2e418 | r0 = fcn_0002e418 (r0);
0x00033b7c mov r5, r0 | r5 = r0;
0x00033b7e cmp r0, 0 |
| if (r0 != 0) {
0x00033b80 bne.w 0x33e12 | goto label_60;
| }
0x00033b84 ldr.w r0, [r4, 0x404] | r0 = *((r4 + 0x404));
0x00033b88 cmp r0, 0 |
| if (r0 == 0) {
0x00033b8a beq.w 0x33f74 | goto label_61;
| }
0x00033b8e bl 0x2d47c | fcn_0002d47c (r0);
| if (r6 != 0) {
| label_13:
0x00033b92 cbz r6, 0x33b98 |
0x00033b94 movs r3, 0 | r3 = 0;
0x00033b96 str r3, [r6] | *(r6) = r3;
| }
| label_20:
0x00033b98 movs r5, 1 | r5 = 1;
0x00033b9a b 0x33abc | goto label_0;
| label_57:
0x00033b9c movw r2, 0x9f01 |
0x00033ba0 subs r3, 0x5c | r3 -= 0x5c;
0x00033ba2 movt r2, 0x3d | r2 = 0x3d9f01;
0x00033ba6 lsrs r2, r3 | r2 >>= r3;
0x00033ba8 lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 >= r2) {
0x00033baa bpl 0x33b10 | goto label_2;
| }
| label_7:
0x00033bac mov r0, r4 | r0 = r4;
0x00033bae movs r5, 1 | r5 = 1;
0x00033bb0 bl 0x2ef5c | fcn_0002ef5c (r0, r1, r2, r3, r4, r5, r6);
0x00033bb4 b 0x33b14 | goto label_3;
| label_47:
0x00033bb6 ldr.w r1, [pc, 0xa18] | r1 = *(0x000345d0);
0x00033bba movw r2, 0xc78 | r2 = 0xc78;
0x00033bbe ldr.w r3, [pc, 0xa14] |
0x00033bc2 mvn r5, 0x15 | r5 = ~0x15;
0x00033bc6 ldr.w r0, [pc, 0xa10] |
0x00033bca add r1, pc | r1 += pc;
0x00033bcc add r3, pc | r3 = 0x681a6;
0x00033bce adds r1, 7 | r1 += 7;
0x00033bd0 add r0, pc | r0 = 0x681ae;
0x00033bd2 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x00033bd6 b 0x33ac4 | goto label_4;
| label_48:
0x00033bd8 ldr.w r1, [pc, 0xa00] |
0x00033bdc movw r2, 0xc79 | r2 = 0xc79;
0x00033be0 ldr.w r3, [pc, 0x9fc] | r3 = *(0x000345e0);
0x00033be4 mvn r5, 0x40 | r5 = ~0x40;
0x00033be8 ldr.w r0, [pc, 0x9f8] | r0 = *(0x000345e4);
0x00033bec add r1, pc | r1 = 0x681cc;
0x00033bee add r3, pc | r3 += pc;
0x00033bf0 adds r1, 7 | r1 += 7;
0x00033bf2 add r0, pc | r0 += pc;
0x00033bf4 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x00033bf8 b 0x33ac4 | goto label_4;
| label_49:
0x00033bfa ldr.w r1, [pc, 0x9ec] | r1 = *(0x000345e8);
0x00033bfe movw r2, 0xc7a | r2 = 0xc7a;
0x00033c02 ldr.w r3, [pc, 0x9e8] |
0x00033c06 mvn r5, 9 | r5 = ~9;
0x00033c08 lsls r1, r1, 0x14 | r1 <<= 0x14;
0x00033c0a ldr.w r0, [pc, 0x9e4] |
0x00033c0e add r1, pc | r1 += pc;
0x00033c10 add r3, pc | r3 = 0x68202;
0x00033c12 adds r1, 7 | r1 += 7;
0x00033c14 add r0, pc | r0 = 0x6820a;
0x00033c16 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x00033c18 vld4.16 {d14[1], d15[1], d16[1], d17[1]}, [sp:0x40], r3 | __asm ("vld4.16 {d14[1], d15[1], d16[1], d17[1]}, [sp:0x40], r3");
| label_50:
0x00033c1c ldr.w r1, [pc, 0x9d4] |
0x00033c20 movw r2, 0xc7d | r2 = 0xc7d;
0x00033c24 ldr.w r3, [pc, 0x9d0] | r3 = *(0x000345f8);
0x00033c28 mvn r5, 0xf | r5 = ~0xf;
0x00033c2c ldr.w r0, [pc, 0x9cc] | r0 = *(0x000345fc);
0x00033c30 add r1, pc | r1 = 0x68228;
0x00033c32 add r3, pc | r3 += pc;
0x00033c34 adds r1, 7 | r1 += 7;
0x00033c36 add r0, pc | r0 += pc;
0x00033c38 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x00033c3c b 0x33ac4 | goto label_4;
| label_51:
0x00033c3e ldr.w r1, [pc, 0x9c0] | r1 = *(0x00034600);
0x00033c42 movw r2, 0xc7e | r2 = 0xc7e;
0x00033c46 ldr.w r3, [pc, 0x9bc] |
0x00033c4a ldr.w r0, [pc, 0x9bc] |
0x00033c4e add r1, pc | r1 += pc;
0x00033c50 add r3, pc | r3 = 0x6825a;
0x00033c52 adds r1, 7 | r1 += 7;
0x00033c54 add r0, pc | r0 = 0x68262;
0x00033c56 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_55:
0x00033c5a ldr.w r2, [pc, 0x9b0] | r2 = *(0x0003460c);
0x00033c5e add r1, sp, 0x50 | r1 += var_50h;
0x00033c60 ldr.w r3, [pc, 0x9ac] | r3 = *(0x00034610);
0x00033c64 mov r0, r4 | r0 = r4;
0x00033c66 add r2, pc | r2 += pc;
0x00033c68 str r2, [sp] | *(sp) = r2;
0x00033c6a add r3, pc | r3 += pc;
0x00033c6c ldr.w r2, [pc, 0x9a4] |
0x00033c70 add r2, pc | r2 = 0x68288;
0x00033c72 blx 0xe524 | r0 = fcn_0000e524 ();
0x00033c76 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00033c78 blt.w 0x33f56 | goto label_62;
| }
0x00033c7c ldr r1, [sp, 0x50] | r1 = var_50h;
0x00033c7e mov r0, r4 | r0 = r4;
0x00033c80 bl 0x1c824 | fcn_0001c824 (r0, r1);
0x00033c84 ldrd r3, r2, [r4, 0x48] | __asm ("ldrd r3, r2, [r4, 0x48]");
0x00033c88 mov r0, r4 | r0 = r4;
0x00033c8a ldr r1, [sp, 0x50] | r1 = var_50h;
0x00033c8c adds r3, 1 | r3++;
0x00033c8e adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00033c92 strd r3, r2, [r4, 0x48] | __asm ("strd r3, r2, [r4, 0x48]");
0x00033c96 strd r3, r2, [r1, 0x1f8] | __asm ("strd r3, r2, aav.0x000000ff");
0x00033c9a bl 0x2f224 | r0 = fcn_0002f224 (r0, r1, r2);
0x00033c9e subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00033ca0 blt.w 0x33f56 | goto label_62;
| }
0x00033ca4 mov r0, r4 | r0 = r4;
0x00033ca6 blx 0xe548 | fcn_0000e548 ();
0x00033ca8 mrrc p8, 0xd, pc, r0, c4 | __asm ("mrrc p8, 0xd, pc, r0, c4");
0x00033cac adds r3, 0xc4 | r3 += 0xc4;
0x00033cae mov r0, r4 | r0 = r4;
0x00033cb0 ldr r1, [sp, 0x50] | r1 = var_50h;
0x00033cb2 adds r3, 1 | r3++;
0x00033cb4 str.w r1, [r4, 0x3e8] | __asm ("str.w r1, aav.0x000000ff");
0x00033cb8 str.w r3, [r4, 0x3c4] | __asm ("str.w r3, aav.0x000000ff");
0x00033cbc bl 0x2df34 | r0 = fcn_0002df34 (r0, r1);
0x00033cc0 mov r5, r0 | r5 = r0;
0x00033cc2 cmp r0, 0 |
| if (r0 != 0) {
0x00033cc4 bne.w 0x33f6a | goto label_63;
| }
0x00033cc8 ldr r1, [sp, 0x50] | r1 = var_50h;
0x00033cca mov r0, r4 | r0 = r4;
0x00033ccc bl 0x2e160 | r0 = fcn_0002e160 (r0, r1);
0x00033cd0 mov r5, r0 | r5 = r0;
0x00033cd2 cmp r0, 0 |
| if (r0 != 0) {
0x00033cd4 bne.w 0x33f6a | goto label_63;
| }
0x00033cd8 ldrb r3, [r4, 0x1e] | r3 = *((r4 + 0x1e));
0x00033cda mov r0, r4 | r0 = r4;
0x00033cdc orr r3, r3, 2 | r3 |= 2;
0x00033ce0 strb r3, [r4, 0x1e] | *((r4 + 0x1e)) = r3;
0x00033ce2 bl 0x2e1d4 | fcn_0002e1d4 (r0);
0x00033ce6 cmp r6, 0 |
| if (r6 == 0) {
0x00033ce8 beq.w 0x3422e | goto label_64;
| }
0x00033cec ldr r3, [sp, 0x50] | r3 = var_50h;
0x00033cee str r3, [r6] | *(r6) = r3;
0x00033cf0 str.w r5, [r4, 0x3e8] | __asm ("str.w r5, aav.0x000000ff");
0x00033cf4 movs r5, 1 | r5 = 1;
0x00033cf6 b 0x33abc | goto label_0;
| label_58:
0x00033cf8 add.w r8, sp, 0x58 | r8 += var_58h;
0x00033cfc mov r0, r8 | r0 = r8;
0x00033cfe blx 0xe1dc | fcn_0000e1dc ();
0x00033d02 b 0x33b76 | goto label_5;
| label_59:
0x00033d04 ldr.w r3, [pc, 0x910] |
0x00033d08 ldrd fp, ip, [sb, 0x10] | __asm ("ldrd fp, ip, [sb, 0x10]");
0x00033d0c add r3, pc | r3 = 0x68328;
0x00033d0e adds r3, 0x28 | r3 += 0x28;
0x00033d10 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x00033d14 add r3, sp, 0x64 | r3 += var_64h;
0x00033d16 stm.w r3, {r0, r1, r2} | *(r3) = r0;
| *((r3 + 4)) = r1;
| *((r3 + 8)) = r2;
0x00033d1a add r2, sp, 0x54 | r2 += var_54h;
0x00033d1c strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00033d20 mov r0, r4 | r0 = r4;
0x00033d22 mov r2, fp | r2 = fp;
0x00033d24 mov r3, ip | r3 = ip;
0x00033d26 bl 0x1e418 | r0 = fcn_0001e418 (r0, r1, r2, r3);
0x00033d2a subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00033d2c blt.w 0x33f5a | goto label_65;
| }
0x00033d30 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x00033d32 mov r0, r4 | r0 = r4;
0x00033d34 ldr r2, [r4, 0x4c] | r2 = *((r4 + 0x4c));
0x00033d36 adds r3, 1 | r3++;
0x00033d38 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00033d3c str r3, [r4, 0x48] | *((r4 + 0x48)) = r3;
0x00033d3e str r2, [r4, 0x4c] | *((r4 + 0x4c)) = r2;
0x00033d40 ldr r1, [sp, 0x54] | r1 = var_54h;
0x00033d42 strd r3, r2, [r1, 0x1f8] | __asm ("strd r3, r2, aav.0x000000ff");
0x00033d46 bl 0x2f224 | r0 = fcn_0002f224 (r0, r1, r2);
0x00033d4a subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00033d4c blt.w 0x33f5a | goto label_65;
| }
0x00033d50 ldr r0, [r4, 0x7c] | r0 = *((r4 + 0x7c));
0x00033d52 bl 0x6d48c | r0 = fcn_0006d48c (r0);
0x00033d56 cmp sb, r0 |
| if (sb != r0) {
0x00033d58 bne.w 0x34212 | goto label_66;
| }
0x00033d5c vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x00033d60 add.w r1, sb, 0x10 | r1 = sb + 0x10;
0x00033d64 sub.w fp, sb, 0x20 |
0x00033d68 vstr d8, [sb, 8] | __asm ("vstr d8, [sb, 8]");
0x00033d6c ldr.w r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x00033d70 bl 0x66610 | fcn_00066610 (r0, r1);
0x00033d74 vstr d8, [sb, 0x10] | __asm ("vstr d8, [sb, 0x10]");
0x00033d78 ldr.w r3, [r4, 0x3c4] | r3 = *((r4 + 0x3c4));
0x00033d7c adds r3, 1 | r3++;
0x00033d7e str.w r3, [r4, 0x3c4] | __asm ("str.w r3, aav.0x000000ff");
0x00033d82 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00033d84 cmp r3, 4 |
| if (r3 == 4) {
0x00033d86 bne 0x33d9e |
0x00033d88 ldr.w r3, [pc, 0x890] | r3 = *(0x0003461c);
0x00033d8c ldr.w r2, [sb] | r2 = *(sb);
0x00033d90 add r3, pc | r3 += pc;
0x00033d92 sub.w sl, r2, r3 | sl = r2 - r3;
0x00033d96 clz sl, sl | sl &= sl;
0x00033d9a lsr.w sl, sl, 5 | sl >>= 5;
| }
0x00033d9e ldr r3, [sp, 0x54] | r3 = var_54h;
0x00033da0 mov r0, fp | r0 = fp;
0x00033da2 add.w r8, sp, 0x58 | r8 += var_58h;
0x00033da6 str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x00033daa blx 0xefa0 | fcn_0000efa0 ();
0x00033dae str.w r0, [r4, 0x3ec] | __asm ("str.w r0, aav.0x000000ff");
0x00033db2 mov r2, r8 | r2 = r8;
0x00033db4 ldr.w r3, [sb] | r3 = *(sb);
0x00033db8 str.w r3, [r4, 0x3f0] | __asm ("str.w r3, aav.0x000000ff");
0x00033dbc ldr r1, [sb, -0x14] | r1 = *((sb - 0x14));
0x00033dc0 str.w r1, [r4, 0x3f4] | __asm ("str.w r1, aav.0x000000ff");
0x00033dc4 ldr r0, [sp, 0x54] | r0 = var_54h;
0x00033dc6 ldr.w r3, [sb] | r3 = *(sb);
0x00033dca blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00033dcc vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00033dd0 movs r3, 0 | r3 = 0;
0x00033dd2 strd r3, r3, [r4, 0x3f0] | __asm ("strd r3, r3, aav.0x000000ff");
0x00033dd6 mov r5, r0 | r5 = r0;
0x00033dd8 vstr d16, [r4, 0x3e8] | __asm ("vstr d16, aav.0x000000ff");
0x00033ddc ldrb r3, [sb, -0x1b] | r3 = *((sb - 0x1b));
0x00033de0 cmp r3, 0 |
| if (r3 != 0) {
0x00033de2 bne.w 0x34204 | goto label_67;
| }
| label_14:
0x00033de6 mov r0, fp | r0 = fp;
0x00033de8 blx 0xe4a8 | fcn_0000e4a8 ();
0x00033dec cmp.w sl, 0 |
| if (sl == 0) {
0x00033df0 bne 0x33dfe |
0x00033df2 mov r1, r5 | r1 = r5;
0x00033df4 ldr r0, [sp, 0x54] | r0 = var_54h;
0x00033df6 mov r2, r8 | r2 = r8;
0x00033df8 bl 0x192bc | r0 = fcn_000192bc (r0, r1, r2);
0x00033dfc mov r5, r0 | r5 = r0;
| }
0x00033dfe ldr r0, [sp, 0x54] | r0 = var_54h;
| if (r0 != 0) {
0x00033e00 cbz r0, 0x33e06 |
0x00033e02 blx 0xefbc | fcn_0000efbc ();
| }
0x00033e06 mov r0, r8 | r0 = r8;
0x00033e08 blx 0xe1dc | fcn_0000e1dc ();
0x00033e0c cmp r5, 0 |
| if (r5 == 0) {
0x00033e0e beq.w 0x33b76 | goto label_5;
| }
| label_60:
0x00033e12 mvns r3, r5 | r3 = ~r5;
0x00033e14 cmp r6, 0 |
0x00033e16 lsr.w r3, r3, 0x1f | r3 >>= 0x1f;
0x00033e1a it eq |
| if (r6 != 0) {
0x00033e1c moveq r3, 0 | r3 = 0;
| }
0x00033e1e cmp r3, 0 |
| if (r3 != 0) {
0x00033e20 bne.w 0x33b18 | goto label_6;
| }
| label_17:
0x00033e24 cmp r5, 0 |
| if (r5 >= 0) {
0x00033e26 bge.w 0x33abc | goto label_0;
| }
| label_10:
0x00033e2a cmn.w r5, 0x71 |
| if (r5 < 0x71) {
0x00033e2e blt.w 0x33abc | goto label_0;
| }
0x00033e32 cmn.w r5, 0x5b |
| if (r5 < 0x5b) {
0x00033e36 blt 0x33f38 | goto label_68;
| }
0x00033e38 mvn r3, 0x1f | r3 = ~0x1f;
0x00033e3c subs r3, r3, r5 | r3 -= r5;
0x00033e3e bics r3, r3, 0x20 | __asm ("bics r3, r3, 0x20");
0x00033e40 lsls r0, r4, 0xc | r0 = r4 << 0xc;
| if (r0 == r4) {
0x00033e42 beq.w 0x33bac | goto label_7;
| }
0x00033e46 cmn.w r5, 0x47 |
| if (r5 != 0x47) {
0x00033e4a bne.w 0x33abc | goto label_0;
| }
0x00033e4e b 0x33bac | goto label_7;
| label_54:
0x00033e50 ldr.w r3, [pc, 0x7cc] |
0x00033e54 add r2, sp, 0x54 | r2 += var_54h;
0x00033e56 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00033e5a str r5, [sp, 0x60] | var_60h = r5;
0x00033e5c add r3, pc | r3 = 0x68480;
0x00033e5e str r5, [sp, 0x54] | var_54h = r5;
0x00033e60 adds r3, 0x40 | r3 += 0x40;
0x00033e62 vstr d16, [sp, 0x58] | __asm ("vstr d16, [sp, 0x58]");
0x00033e66 ldrd sl, fp, [r0, 0x10] | __asm ("ldrd sl, fp, [r0, 0x10]");
0x00033e6a add r5, sp, 0x64 | r5 += var_64h;
0x00033e6c str r2, [sp, 4] | var_4h = r2;
0x00033e6e ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x00033e72 mov r3, fp | r3 = fp;
0x00033e74 str r5, [sp] | *(sp) = r5;
0x00033e76 stm.w r5, {r0, r1, r2} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
0x00033e7a mov r2, sl | r2 = sl;
0x00033e7c mov r0, r4 | r0 = r4;
0x00033e7e bl 0x1e418 | r0 = fcn_0001e418 (r0, r1, r2, r3);
0x00033e82 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00033e84 blt 0x33f50 | goto label_69;
| }
0x00033e86 ldrd r3, r2, [r4, 0x48] | __asm ("ldrd r3, r2, [r4, 0x48]");
0x00033e8a mov r0, r4 | r0 = r4;
0x00033e8c adds r3, 1 | r3++;
0x00033e8e adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00033e92 strd r3, r2, [r4, 0x48] | __asm ("strd r3, r2, [r4, 0x48]");
0x00033e96 ldr r1, [sp, 0x54] | r1 = var_54h;
0x00033e98 strd r3, r2, [r1, 0x1f8] | __asm ("strd r3, r2, aav.0x000000ff");
0x00033e9c bl 0x2f224 | r0 = fcn_0002f224 (r0, r1, r2);
0x00033ea0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00033ea2 blt 0x33f50 | goto label_69;
| }
0x00033ea4 ldrd r3, r2, [sb, 8] | __asm ("ldrd r3, r2, [sb, 8]");
0x00033ea8 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x00033eaa bne 0x33f98 | goto label_70;
| }
| label_11:
0x00033eac add.w r1, sb, 0x10 | r1 = sb + 0x10;
0x00033eb0 ldr.w r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x00033eb4 bl 0x66610 | fcn_00066610 (r0, r1);
0x00033eb8 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00033ebc sub.w r6, sb, 0x20 | r6 = sb - 0x20;
0x00033ec0 mov r0, r6 | r0 = r6;
0x00033ec2 add.w r8, sp, 0x58 | r8 += var_58h;
0x00033ec6 vstr d16, [sb, 0x10] | __asm ("vstr d16, [sb, 0x10]");
0x00033ec8 lsrs r4, r0, 0xc | r4 = r0 >> 0xc;
0x00033eca ldr.w r3, [r4, 0x3c4] | r3 = *((r4 + 0x3c4));
0x00033ece adds r3, 1 | r3++;
0x00033ed0 str.w r3, [r4, 0x3c4] | __asm ("str.w r3, aav.0x000000ff");
0x00033ed4 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00033ed6 str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x00033eda blx 0xefa0 | fcn_0000efa0 ();
0x00033ede str.w r0, [r4, 0x3ec] | __asm ("str.w r0, aav.0x000000ff");
0x00033ee2 mov r2, r8 | r2 = r8;
0x00033ee4 ldr.w r3, [sb] | r3 = *(sb);
0x00033ee8 str.w r3, [r4, 0x3f0] | __asm ("str.w r3, aav.0x000000ff");
0x00033eec ldr r1, [sb, -0x14] | r1 = *((sb - 0x14));
0x00033ef0 str.w r1, [r4, 0x3f4] | __asm ("str.w r1, aav.0x000000ff");
0x00033ef4 ldr r0, [sp, 0x54] | r0 = var_54h;
0x00033ef6 ldr.w r3, [sb] | r3 = *(sb);
0x00033efa blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00033efc vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00033f00 movs r3, 0 | r3 = 0;
0x00033f02 strd r3, r3, [r4, 0x3f0] | __asm ("strd r3, r3, aav.0x000000ff");
0x00033f06 mov r5, r0 | r5 = r0;
0x00033f08 vstr d16, [r4, 0x3e8] | __asm ("vstr d16, aav.0x000000ff");
0x00033f0c ldrb r3, [sb, -0x1b] | r3 = *((sb - 0x1b));
0x00033f10 cmp r3, 0 |
| if (r3 != 0) {
0x00033f12 bne 0x33fae | goto label_71;
| }
| label_12:
0x00033f14 mov r0, r6 | r0 = r6;
0x00033f16 blx 0xe4a8 | fcn_0000e4a8 ();
0x00033f1a mov r1, r5 | r1 = r5;
0x00033f1c ldr r0, [sp, 0x54] | r0 = var_54h;
0x00033f1e mov r2, r8 | r2 = r8;
0x00033f20 bl 0x192bc | r0 = fcn_000192bc (r0, r1, r2);
0x00033f24 mov r5, r0 | r5 = r0;
| label_9:
0x00033f26 ldr r0, [sp, 0x54] | r0 = var_54h;
| if (r0 != 0) {
0x00033f28 cbz r0, 0x33f2e |
0x00033f2a blx 0xefbc | fcn_0000efbc ();
| }
0x00033f2e mov r0, r8 | r0 = r8;
0x00033f30 blx 0xe1dc | fcn_0000e1dc ();
0x00033f34 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00033f36 b 0x33ab6 | goto label_8;
| label_68:
0x00033f38 mvn r2, 0x5b | r2 = ~0x5b;
0x00033f3c movw r3, 0x9f01 |
0x00033f40 subs r2, r2, r5 | r2 -= r5;
0x00033f42 movt r3, 0x3d | r3 = 0x3d9f01;
0x00033f44 lsls r5, r7, 0xc | r5 = r7 << 0xc;
0x00033f46 lsrs r3, r2 | r3 >>= r2;
0x00033f48 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x00033f4a bmi.w 0x33bac | goto label_7;
| }
0x00033f4e b 0x33abc | goto label_0;
| label_69:
0x00033f50 add.w r8, sp, 0x58 | r8 += var_58h;
0x00033f54 b 0x33f26 | goto label_9;
| label_62:
0x00033f56 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00033f58 b 0x33ab6 | goto label_8;
| label_65:
0x00033f5a ldr r0, [sp, 0x54] | r0 = var_54h;
| if (r0 != 0) {
0x00033f5c cbz r0, 0x33f62 |
0x00033f5e blx 0xefbc | fcn_0000efbc ();
| }
0x00033f62 add r0, sp, 0x58 | r0 += var_58h;
0x00033f64 blx 0xe1dc | fcn_0000e1dc ();
0x00033f68 b 0x33e2a | goto label_10;
| label_63:
0x00033f6a ldr r0, [sp, 0x50] | r0 = var_50h;
| label_15:
0x00033f6c movs r3, 0 | r3 = 0;
0x00033f6e str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x00033f70 adds r3, 0xe8 | r3 += 0xe8;
0x00033f72 b 0x33ab6 | goto label_8;
| label_61:
0x00033f74 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00033f76 subs r3, 4 | r3 -= 4;
0x00033f78 cmp r3, 1 |
| if (r3 >= 1) {
0x00033f7a bls 0x33fb8 |
0x00033f7c ldr.w r1, [pc, 0x6a4] |
0x00033f80 movw r2, 0x817 | r2 = 0x817;
0x00033f84 ldr.w r3, [pc, 0x6a0] | r3 = *(0x00034628);
0x00033f88 ldr.w r0, [pc, 0x6a0] | r0 = *(0x0003462c);
0x00033f8c add r1, pc | r1 = 0x685b4;
0x00033f8e add r3, pc | r3 += pc;
0x00033f90 adds r1, 7 | r1 += 7;
0x00033f92 add r0, pc | r0 += pc;
0x00033f94 bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_70:
0x00033f98 ldr r0, [r4, 0x7c] | r0 = *((r4 + 0x7c));
0x00033f9a add.w r2, sb, 0x18 | r2 = sb + 0x18;
0x00033f9e mov r1, sb | r1 = sb;
0x00033fa0 bl 0x6d418 | fcn_0006d418 (r0);
0x00033fa4 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00033fa8 vstr d16, [sb, 8] | __asm ("vstr d16, [sb, 8]");
0x00033fac b 0x33eac | goto label_11;
| label_71:
0x00033fae movs r1, 1 | r1 = 1;
0x00033fb0 mov r0, r6 | r0 = r6;
0x00033fb2 bl 0x29d1c | fcn_00029d1c (r0, r1);
0x00033fb6 b 0x33f14 | goto label_12;
| }
0x00033fb8 mov sb, r5 | sb = r5;
0x00033fba b 0x33fd0 |
| while (r3 == 0) {
0x00033fbc mov r0, r4 | r0 = r4;
0x00033fbe bl 0x2c620 | r0 = fcn_0002c620 (r0);
0x00033fc2 cmp r0, 0 |
| if (r0 < 0) {
0x00033fc4 blt.w 0x3420e | goto label_72;
| }
| if (r0 == 0) {
0x00033fc8 beq.w 0x34234 | goto label_73;
| }
0x00033fcc mov.w sb, 1 | sb = 1;
0x00033fd0 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00033fd2 cmp r3, 0 |
0x00033fd4 beq 0x33fbc |
| }
0x00033fd6 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00033fd8 ldr r0, [r3] | r0 = *(r3);
0x00033fda blx 0xe684 | fcn_0000e684 ();
0x00033fde movs r1, 0 | r1 = 0;
0x00033fe0 mov sb, r0 | sb = r0;
0x00033fe2 mov r0, r4 | r0 = r4;
0x00033fe4 bl 0x2dcf4 | fcn_0002dcf4 (r0, r1);
0x00033fe8 cmp.w sb, 0 |
| if (sb == 0) {
0x00033fec beq.w 0x33b92 | goto label_13;
| }
0x00033ff0 ldr.w r3, [r4, 0x3c4] | r3 = *((r4 + 0x3c4));
0x00033ff4 str.w sb, [r4, 0x3e8] | __asm ("str.w sb, aav.0x000000ff");
0x00033ff8 adds r3, 1 | r3++;
0x00033ffa str.w r3, [r4, 0x3c4] | __asm ("str.w r3, aav.0x000000ff");
0x00033ffe bl 0x68450 | r0 = fcn_00068450 ();
0x00034002 cmp r0, 6 |
| if (r0 > 6) {
0x00034004 ble 0x340e4 |
0x00034006 ldr.w r3, [sb, 0x104] | r3 = *((sb + 0x104));
0x0003400a ldrb r0, [r3, 1] | r0 = *((r3 + 1));
0x0003400c bl 0x191f0 | fcn_000191f0 ();
0x00034010 str r0, [sp, 0x44] | var_44h = r0;
0x00034012 cmp r0, 0 |
| if (r0 == 0) {
0x00034014 beq.w 0x343a6 | goto label_74;
| }
| label_29:
0x00034018 mov r0, sb | r0 = sb;
0x0003401a blx 0xe054 | fcn_0000e054 ();
0x0003401e str r0, [sp, 0x48] | var_48h = r0;
0x00034020 cmp r0, 0 |
| if (r0 == 0) {
0x00034022 beq.w 0x3439e | goto label_75;
| }
| label_28:
0x00034026 mov r0, sb | r0 = sb;
0x00034028 blx 0xe0e0 | fcn_0000e0e0 ();
0x0003402c str r0, [sp, 0x4c] | var_4ch = r0;
0x0003402e cmp r0, 0 |
| if (r0 == 0) {
0x00034030 beq.w 0x34396 | goto label_76;
| }
| label_27:
0x00034034 mov r0, sb | r0 = sb;
0x00034036 blx 0xf254 | r0 = fcn_0000f254 ();
0x0003403a mov sl, r0 | sl = r0;
0x0003403c cmp r0, 0 |
| if (r0 == 0) {
0x0003403e beq.w 0x3438e | goto label_77;
| }
| label_26:
0x00034042 mov r0, sb | r0 = sb;
0x00034044 blx 0xe15c | r0 = fcn_0000e15c ();
0x00034048 mov fp, r0 |
0x0003404a cmp r0, 0 |
| if (r0 == 0) {
0x0003404c beq.w 0x34386 | goto label_78;
| }
| label_25:
0x00034050 mov r0, sb | r0 = sb;
0x00034052 blx 0xeab8 | r0 = fcn_0000eab8 ();
0x00034056 mov r2, r0 | r2 = r0;
0x00034058 cmp r0, 0 |
| if (r0 == 0) {
0x0003405a beq.w 0x34380 | goto label_79;
| }
| label_24:
0x0003405e ldr.w r1, [sb, 0x104] | r1 = *((sb + 0x104));
0x00034062 ldrb r3, [r1, 3] | r3 = *((r1 + 3));
0x00034064 ldrb r0, [r1] | r0 = *(r1);
0x00034066 cmp r3, 2 |
0x00034068 ldr r3, [r1, 8] | r3 = *((r1 + 8));
| if (r3 == 2) {
0x0003406a beq.w 0x34370 | goto label_80;
| }
0x0003406e cmp r0, 0x6c |
0x00034070 mov.w r1, 0 | r1 = 0;
0x00034074 it ne |
| if (r0 != 0x6c) {
0x00034076 revne r3, r3 | __asm ("revne r3, r3");
| }
| label_23:
0x00034078 ldr.w r0, [sb, 0x170] | r0 = *((sb + 0x170));
0x0003407c vldr d16, [sb, 0x10] | __asm ("vldr d16, [sb, 0x10]");
0x00034080 cmp r0, 0 |
| if (r0 == 0) {
0x00034082 beq.w 0x3436a | goto label_81;
| }
| label_22:
0x00034086 ldr.w ip, [sb, 0x2c] | ip = *((sb + 0x2c));
0x0003408a cmp.w ip, 0 |
| if (ip == 0) {
0x0003408e beq.w 0x343ae | goto label_82;
| }
| label_30:
0x00034092 ldr.w lr, [sb, 0x30] |
0x00034096 cmp.w lr, 0 |
| if (lr == 0) {
0x0003409a beq.w 0x34362 | goto label_83;
| }
| label_21:
0x0003409e strd r3, r1, [sp, 0x20] | __asm ("strd r3, r1, [sp, 0x20]");
0x000340a2 movs r1, 0 | r1 = 0;
0x000340a4 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000340a6 strd fp, r2, [sp, 0x18] | __asm ("strd fp, r2, [sp, 0x18]");
0x000340aa ldr.w r2, [pc, 0x584] | r2 = *(0x00034630);
0x000340ac movs r5, 0x84 | r5 = 0x84;
0x000340ae str r3, [sp, 0x10] | var_10h = r3;
0x000340b0 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000340b2 add r2, pc | r2 += pc;
0x000340b4 str r0, [sp, 0x30] | var_30h = r0;
0x000340b6 adds r2, 7 | r2 += 7;
0x000340b8 movs r0, 7 | r0 = 7;
0x000340ba str r3, [sp, 0xc] | var_ch = r3;
0x000340bc ldr r3, [sp, 0x44] | r3 = var_44h;
0x000340be vstr d16, [sp, 0x28] | __asm ("vstr d16, [sp, 0x28]");
0x000340c2 strd ip, lr, [sp, 0x34] | __asm ("strd ip, lr, [sp, 0x34]");
0x000340c6 str r3, [sp, 8] | var_8h = r3;
0x000340c8 ldr.w r3, [pc, 0x568] |
0x000340cc str.w sl, [sp, 0x14] | __asm ("str.w sl, [var_14h]");
0x000340d0 add r3, pc | r3 = 0x68708;
0x000340d2 str r3, [sp, 4] | var_4h = r3;
0x000340d4 ldr.w r3, [pc, 0x560] |
0x000340d8 add r3, pc | r3 = 0x68714;
0x000340da str r3, [sp] | *(sp) = r3;
0x000340dc movw r3, 0xb78 | r3 = 0xb78;
0x000340e0 bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
| }
0x000340e4 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000340e6 ldr.w r2, [sb, 0x104] | r2 = *((sb + 0x104));
0x000340ea cmp r3, 4 |
| if (r3 == 4) {
0x000340ec bne 0x34108 |
0x000340ee ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x000340f0 subs r3, 2 | r3 -= 2;
0x000340f2 cmp r3, 1 |
| if (r3 > 1) {
0x000340f4 bhi.w 0x34240 | goto label_84;
| }
0x000340f8 ldr.w r3, [sb, 0x10] | r3 = *((sb + 0x10));
0x000340fc ldr.w r1, [sb, 0x14] | r1 = *((sb + 0x14));
0x00034100 subs r3, 1 | r3--;
0x00034102 orrs r3, r1 | r3 |= r1;
| if (r3 != r1) {
0x00034104 bne.w 0x34240 | goto label_84;
| }
| }
0x00034108 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0003410c movs r3, 0 | r3 = 0;
0x0003410e str r3, [sp, 0x54] | var_54h = r3;
0x00034110 str r3, [sp, 0x60] | var_60h = r3;
0x00034112 vstr d16, [sp, 0x58] | __asm ("vstr d16, [sp, 0x58]");
0x00034116 ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x00034118 subs r3, 2 | r3 -= 2;
0x0003411a cmp r3, 1 |
| if (r3 <= 1) {
0x0003411c bhi.w 0x34252 |
0x00034120 ldr.w r0, [sb, 0x24] | r0 = *((sb + 0x24));
| if (r0 != 0) {
0x00034124 cbz r0, 0x34134 |
0x00034126 ldr r1, [r4, 0x50] | r1 = *((r4 + 0x50));
| if (r1 == 0) {
0x00034128 cbz r1, 0x34134 | goto label_85;
| }
0x0003412a blx 0xf350 | r0 = fcn_0000f350 ();
0x0003412e cmp r0, 0 |
| if (r0 != 0) {
0x00034130 bne.w 0x34252 | goto label_86;
| }
| }
| label_85:
0x00034134 ldr.w r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x00034138 add.w r1, sb, 0x10 | r1 = sb + 0x10;
0x0003413c bl 0x66610 | r0 = fcn_00066610 (r0, r1);
0x00034140 mov sl, r0 | sl = r0;
0x00034142 cmp r0, 0 |
| if (r0 == 0) {
0x00034144 beq.w 0x34252 | goto label_86;
| }
0x00034148 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0003414c vstr d16, [r0, 0x10] | __asm ("vstr d16, [r0, 0x10]");
0x00034150 ldr.w r3, [sb, 0x15c] | r3 = *((sb + 0x15c));
| if (r3 != 0) {
0x00034154 cbz r3, 0x3415e |
0x00034156 ldrb r3, [r4, 0x1e] | r3 = *((r4 + 0x1e));
0x00034158 lsls r0, r3, 0x1a | r0 = r3 << 0x1a;
| if (r0 >= r3) {
0x0003415a bpl.w 0x34484 | goto label_87;
| }
0x0003415c strh r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
| }
0x0003415e movs r1, 1 | r1 = 1;
0x00034160 mov r0, sb | r0 = sb;
0x00034162 blx 0xe780 | r0 = fcn_0000e780 ();
0x00034166 subs.w fp, r0, 0 |
| if (fp < r0) {
0x0003416a blt.w 0x34290 | goto label_35;
| }
0x0003416e str.w sb, [sp, 0x44] | __asm ("str.w sb, [var_44h]");
| label_36:
0x00034172 ldrd r3, r2, [sl, 8] | __asm ("ldrd r3, r2, [sl, 8]");
0x00034176 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x00034178 bne.w 0x34574 | goto label_88;
| }
| label_41:
0x0003417c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0003417e cmp r3, 4 |
| if (r3 == 4) {
0x00034180 bne 0x34192 |
0x00034182 ldr.w r3, [pc, 0x4b8] | r3 = *(0x0003463c);
0x00034186 ldr.w r5, [sl] | r5 = *(sl);
0x0003418a add r3, pc | r3 += pc;
0x0003418c subs r1, r5, r3 | r1 = r5 - r3;
0x0003418e rsbs r5, r1, 0 | r5 = r1 - ;
0x00034190 adcs r5, r1 | __asm ("adcs r5, r1");
| }
0x00034192 sub.w r3, sl, 0x20 | r3 = sl - 0x20;
0x00034196 mov r0, r3 | r0 = r3;
0x00034198 str r3, [sp, 0x48] | var_48h = r3;
0x0003419a blx 0xefa0 | fcn_0000efa0 ();
0x0003419e str.w r0, [r4, 0x3ec] | __asm ("str.w r0, aav.0x000000ff");
0x000341a2 mov r2, r8 | r2 = r8;
0x000341a4 ldr.w r3, [sl] | r3 = *(sl);
0x000341a8 ldr r0, [sp, 0x44] | r0 = var_44h;
0x000341aa str.w r3, [r4, 0x3f0] | __asm ("str.w r3, aav.0x000000ff");
0x000341ae ldr r1, [sl, -0x14] | r1 = *((sl - 0x14));
0x000341b2 str.w r1, [r4, 0x3f4] | __asm ("str.w r1, aav.0x000000ff");
0x000341b6 ldr.w r3, [sl] | r3 = *(sl);
0x000341ba blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000341bc movs r3, 0 | r3 = 0;
0x000341be mov fp, r0 |
0x000341c0 strd r3, r3, [r4, 0x3f0] | __asm ("strd r3, r3, aav.0x000000ff");
0x000341c4 str.w r3, [r4, 0x3ec] | __asm ("str.w r3, aav.0x000000ff");
0x000341c8 ldrb r3, [sl, -0x1b] | r3 = *((sl - 0x1b));
0x000341cc cmp r3, 0 |
| if (r3 != 0) {
0x000341ce bne.w 0x3447a | goto label_89;
| }
| label_34:
0x000341d2 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000341d4 blx 0xe4a8 | fcn_0000e4a8 ();
| if (r5 == 0) {
0x000341d8 cbnz r5, 0x341e6 |
0x000341da mov r1, fp | r1 = fp;
0x000341dc ldr r0, [sp, 0x44] | r0 = var_44h;
0x000341de mov r2, r8 | r2 = r8;
0x000341e0 bl 0x192bc | r0 = fcn_000192bc (r0, r1, r2);
0x000341e4 mov fp, r0 |
| }
0x000341e6 mov r0, r8 | r0 = r8;
0x000341e8 blx 0xe1dc | fcn_0000e1dc ();
0x000341ec ldr r0, [sp, 0x54] | r0 = var_54h;
| if (r0 != 0) {
0x000341ee cbz r0, 0x341f4 |
0x000341f0 blx 0xefbc | fcn_0000efbc ();
| }
0x000341f4 cmp.w fp, 0 |
| if (fp == 0) {
0x000341f8 beq 0x34260 | goto label_90;
| }
0x000341fa movs r3, 0 | r3 = 0;
0x000341fc mov r5, fp | r5 = fp;
0x000341fe str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x00034202 b 0x34282 | goto label_19;
| label_67:
0x00034204 movs r1, 1 | r1 = 1;
0x00034206 mov r0, fp | r0 = fp;
0x00034208 bl 0x29d1c | fcn_00029d1c (r0, r1);
0x0003420c b 0x33de6 | goto label_14;
| label_72:
0x0003420e mov r5, r0 | r5 = r0;
0x00034210 b 0x33e2a | goto label_10;
| label_66:
0x00034212 ldr.w r1, [pc, 0x42c] | r1 = *(0x00034640);
0x00034216 movw r2, 0xa55 | r2 = 0xa55;
0x0003421a ldr.w r3, [pc, 0x428] |
0x0003421e ldr.w r0, [pc, 0x428] |
0x00034222 add r1, pc | r1 += pc;
0x00034224 add r3, pc | r3 = 0x6886e;
0x00034226 adds r1, 7 | r1 += 7;
0x00034228 add r0, pc | r0 = 0x68876;
0x0003422a bl 0x68d78 | fcn_00068d78 (r0, r1, r2, r3);
| label_64:
0x0003422e ldr r0, [sp, 0x50] | r0 = var_50h;
0x00034230 movs r5, 1 | r5 = 1;
0x00034232 b 0x33f6c | goto label_15;
| if (r6 != 0) {
| label_73:
0x00034234 cbz r6, 0x34238 |
0x00034236 str r0, [r6] | *(r6) = r0;
| }
0x00034238 mov r5, sb | r5 = sb;
0x0003423a b 0x33abc | goto label_0;
| label_56:
0x0003423c blx 0xed3c | strnlen ();
| label_84:
0x00034240 movs r3, 0 | r3 = 0;
0x00034242 mov r0, sb | r0 = sb;
0x00034244 str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x00034248 mvn r5, 4 | r5 = ~4;
0x0003424c blx 0xefbc | fcn_0000efbc ();
0x00034250 b 0x33abc | goto label_0;
| }
| label_86:
0x00034252 mov r0, r8 | r0 = r8;
0x00034254 blx 0xe1dc | fcn_0000e1dc ();
0x00034258 ldr r0, [sp, 0x54] | r0 = var_54h;
| if (r0 != 0) {
0x0003425a cbz r0, 0x34260 |
0x0003425c blx 0xefbc | fcn_0000efbc ();
| }
| label_90:
0x00034260 ldrb r3, [r4, 0x1e] | r3 = *((r4 + 0x1e));
0x00034262 lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
| if (r2 < r3) {
0x00034264 bmi 0x342c2 | goto label_91;
| }
0x00034266 ldr.w r2, [sb, 0x15c] | r2 = *((sb + 0x15c));
| if (r2 == 0) {
0x0003426a cbz r2, 0x342c2 | goto label_91;
| }
0x0003426c lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 < r3) {
0x0003426e bmi 0x342c2 | goto label_91;
| }
0x00034270 ldr.w r3, [sb, 0x104] | r3 = *((sb + 0x104));
0x00034274 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00034276 cmp r3, 1 |
| if (r3 == 1) {
0x00034278 beq 0x342ae | goto label_92;
| }
0x0003427a movs r5, 1 | r5 = 1;
| do {
| label_18:
0x0003427c movs r3, 0 | r3 = 0;
0x0003427e str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
| label_19:
0x00034282 cmp r5, 0 |
| if (r5 >= 0) {
0x00034284 blt 0x342a6 |
| if (r6 == 0) {
0x00034286 cbz r6, 0x342a6 | goto label_33;
| }
0x00034288 movs r3, 0 | r3 = 0;
0x0003428a mov r0, sb | r0 = sb;
0x0003428c str r3, [r6] | *(r6) = r3;
0x0003428e b 0x33ab8 | goto label_16;
| label_35:
0x00034290 mov r0, r8 | r0 = r8;
0x00034292 blx 0xe1dc | fcn_0000e1dc ();
0x00034296 ldr r0, [sp, 0x54] | r0 = var_54h;
| if (r0 != 0) {
0x00034298 cbz r0, 0x3429e |
0x0003429a blx 0xefbc | fcn_0000efbc ();
| }
0x0003429e mov r5, fp | r5 = fp;
0x000342a0 movs r3, 0 | r3 = 0;
0x000342a2 str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
| }
| label_33:
0x000342a6 mov r0, sb | r0 = sb;
0x000342a8 blx 0xefbc | fcn_0000efbc ();
0x000342ac b 0x33e24 | goto label_17;
| label_92:
0x000342ae ldr r2, [pc, 0x39c] |
0x000342b0 mov r0, sb | r0 = sb;
0x000342b2 ldr r1, [pc, 0x39c] |
0x000342b4 add r2, pc | r2 = 0x68906;
0x000342b6 add r1, pc | r1 = 0x6890c;
0x000342b8 blx 0xe5f8 | r0 = fcn_0000e5f8 ();
0x000342bc mov r5, r0 | r5 = r0;
0x000342be cmp r0, 0 |
0x000342c0 bne 0x3427c |
| } while (r0 != 0);
| label_91:
0x000342c2 mov r1, sb | r1 = sb;
0x000342c4 mov r0, r4 | r0 = r4;
0x000342c6 bl 0x2df34 | r0 = fcn_0002df34 (r0, r1);
0x000342ca mov r5, r0 | r5 = r0;
0x000342cc cmp r0, 0 |
| if (r0 != 0) {
0x000342ce bne 0x3427c | goto label_18;
| }
0x000342d0 mov r1, sb | r1 = sb;
0x000342d2 mov r0, r4 | r0 = r4;
0x000342d4 bl 0x2e160 | r0 = fcn_0002e160 (r0, r1);
0x000342d8 mov r5, r0 | r5 = r0;
0x000342da cmp r0, 0 |
| if (r0 != 0) {
0x000342dc bne 0x3427c | goto label_18;
| }
0x000342de str r0, [sp, 0x64] | var_64h = r0;
0x000342e0 ldrb r3, [r4, 0x1e] | r3 = *((r4 + 0x1e));
0x000342e2 lsls r5, r3, 0x1b | r5 = r3 << 0x1b;
| if (r5 >= r3) {
0x000342e4 bmi 0x34302 |
0x000342e6 ldrb r3, [r4, 0x1d] | r3 = *((r4 + 0x1d));
0x000342e8 lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
| if (r0 < r3) {
0x000342ea bmi 0x34302 | goto label_32;
| }
0x000342ec ldr.w r5, [sb, 0x104] | r5 = *((sb + 0x104));
0x000342f0 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x000342f2 cmp r3, 1 |
| if (r3 != 1) {
0x000342f4 bne 0x34302 | goto label_32;
| }
0x000342f6 ldr.w r8, [sb, 0x1c] | r8 = *((sb + 0x1c));
0x000342fa cmp.w r8, 0 |
| if (r8 != 0) {
0x000342fe bne.w 0x34414 | goto label_93;
| }
| }
| label_32:
0x00034302 mov r1, sb | r1 = sb;
0x00034304 mov r0, r4 | r0 = r4;
0x00034306 bl 0x26d8c | fcn_00026d8c (r0, r1);
0x00034308 stc2l p3, c2, [r1, -0] | __asm ("stc2l p3, c2, [r1, -0]");
0x0003430c mov r5, r0 | r5 = r0;
0x0003430e str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x00034312 cmp r0, 0 |
| if (r0 != 0) {
0x00034314 bne 0x34282 | goto label_19;
| }
| if (r6 != 0) {
0x00034316 cbz r6, 0x3432a |
0x00034318 movs r1, 1 | r1 = 1;
0x0003431a mov r0, sb | r0 = sb;
0x0003431c blx 0xe780 | r0 = fcn_0000e780 ();
0x00034320 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00034322 blt 0x3435a | goto label_94;
| }
0x00034324 str.w sb, [r6] | __asm ("str.w sb, [r6]");
0x00034328 b 0x33b98 | goto label_20;
| }
0x0003432a ldr.w r3, [sb, 0x104] | r3 = *((sb + 0x104));
0x0003432e ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00034330 cmp r3, 1 |
0x00034332 beq 0x3433c |
| while (r5 >= r0) {
0x00034334 mov r0, sb | r0 = sb;
0x00034336 blx 0xefbc | fcn_0000efbc ();
0x0003433a b 0x33b98 | goto label_20;
0x0003433c bl 0x68450 | r0 = fcn_00068450 ();
0x00034340 cmp r0, 6 |
| if (r0 > 6) {
0x00034342 bgt 0x343b6 | goto label_95;
| }
| label_31:
0x00034344 ldr r2, [pc, 0x30c] |
0x00034346 mov r0, sb | r0 = sb;
0x00034348 ldr r1, [pc, 0x30c] |
0x0003434a ldr.w r3, [sb, 0x18] | r3 = *((sb + 0x18));
0x0003434e add r2, pc | r2 = 0x689a6;
0x00034350 add r1, pc | r1 = 0x689ac;
0x00034352 blx 0xe5f8 | r0 = fcn_0000e5f8 ();
0x00034356 subs r5, r0, 0 | r5 = r0 - 0;
0x00034358 bge 0x34334 |
| }
| label_94:
0x0003435a mov r0, sb | r0 = sb;
0x0003435c blx 0xefbc | fcn_0000efbc ();
0x00034360 b 0x33e2a | goto label_10;
| label_83:
0x00034362 ldr.w lr, [pc, 0x2f8] |
0x00034366 add lr, pc | lr += pc;
0x00034368 b 0x3409e | goto label_21;
| label_81:
0x0003436a ldr r0, [pc, 0x2f4] |
0x0003436c add r0, pc | r0 = 0x689d2;
0x0003436e b 0x34086 | goto label_22;
| label_80:
0x00034370 cmp r0, 0x6c |
0x00034372 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
| if (r0 == 0x6c) {
0x00034374 beq.w 0x34078 | goto label_23;
| }
0x00034378 rev r0, r3 | r3 = SWAP32 (r0);
0x0003437a rev r3, r1 | r1 = SWAP32 (r3);
0x0003437c mov r1, r0 | r1 = r0;
0x0003437e b 0x34078 | goto label_23;
| label_79:
0x00034380 ldr r2, [pc, 0x2e0] |
0x00034382 add r2, pc | r2 = 0x689ea;
0x00034384 b 0x3405e | goto label_24;
| label_78:
0x00034386 ldr.w fp, [pc, 0x2e0] | fp = *(0x00034668);
0x0003438a add fp, pc |
0x0003438c b 0x34050 | goto label_25;
| label_77:
0x0003438e ldr.w sl, [pc, 0x2dc] | sl = *(0x0003466c);
0x00034392 add sl, pc | sl += pc;
0x00034394 b 0x34042 | goto label_26;
| label_76:
0x00034396 ldr r3, [pc, 0x2d8] |
0x00034398 add r3, pc | r3 = 0x68a0e;
0x0003439a str r3, [sp, 0x4c] | var_4ch = r3;
0x0003439c b 0x34034 | goto label_27;
| label_75:
0x0003439e ldr r3, [pc, 0x2d4] |
0x000343a0 add r3, pc | r3 = 0x68a1a;
0x000343a2 str r3, [sp, 0x48] | var_48h = r3;
0x000343a4 b 0x34026 | goto label_28;
| label_74:
0x000343a6 ldr r3, [pc, 0x2d0] |
0x000343a8 add r3, pc | r3 = 0x68a26;
0x000343aa str r3, [sp, 0x44] | var_44h = r3;
0x000343ac b 0x34018 | goto label_29;
| label_82:
0x000343ae ldr.w ip, [pc, 0x2cc] | ip = *(0x0003467c);
0x000343b2 add ip, pc |
0x000343b4 b 0x34092 | goto label_30;
| label_95:
0x000343b6 mov r0, sb | r0 = sb;
0x000343b8 blx 0xe054 | r0 = fcn_0000e054 ();
0x000343bc mov r5, r0 | r5 = r0;
0x000343be cmp r0, 0 |
| if (r0 == 0) {
0x000343c0 beq.w 0x345a0 | goto label_96;
| }
| label_45:
0x000343c4 mov r0, sb | r0 = sb;
0x000343c6 blx 0xf254 | r0 = fcn_0000f254 ();
0x000343ca mov r8, r0 | r8 = r0;
0x000343cc cmp r0, 0 |
| if (r0 == 0) {
0x000343ce beq.w 0x34598 | goto label_97;
| }
| label_44:
0x000343d2 mov r0, sb | r0 = sb;
0x000343d4 blx 0xe15c | r0 = fcn_0000e15c ();
0x000343d8 mov sl, r0 | sl = r0;
0x000343da cmp r0, 0 |
| if (r0 == 0) {
0x000343dc beq.w 0x34590 | goto label_98;
| }
| label_43:
0x000343e0 mov r0, sb | r0 = sb;
0x000343e2 blx 0xeab8 | r0 = fcn_0000eab8 ();
0x000343e6 cmp r0, 0 |
| if (r0 == 0) {
0x000343e8 beq.w 0x3458a | goto label_99;
| }
| label_42:
0x000343ec ldr r3, [pc, 0x290] |
0x000343ee movs r1, 0 | r1 = 0;
0x000343f0 ldr r2, [pc, 0x290] |
0x000343f2 strd sl, r0, [sp, 0x10] | __asm ("strd sl, r0, [sp, 0x10]");
0x000343f6 movs r0, 7 | r0 = 7;
0x000343f8 add r3, pc | r3 = 0x68a7c;
0x000343fa strd r5, r8, [sp, 8] | __asm ("strd r5, r8, [sp, 8]");
0x000343fe str r3, [sp, 4] | var_4h = r3;
0x00034400 add r2, pc | r2 = 0x68a88;
0x00034402 ldr r3, [pc, 0x284] |
0x00034404 adds r2, 7 | r2 += 7;
0x00034406 add r3, pc | r3 = 0x68a94;
0x00034408 str r3, [sp] | *(sp) = r3;
0x0003440a movw r3, 0xbcb | r3 = 0xbcb;
0x0003440e bl 0x68ca8 | fcn_00068ca8 (r0, r1, r2, r3, r4, r5, r6);
0x00034412 b 0x34344 | goto label_31;
| label_93:
0x00034414 ldr r1, [pc, 0x274] |
0x00034416 mov r0, r8 | r0 = r8;
0x00034418 add r1, pc | r1 = 0x68aa8;
0x0003441a blx 0xf350 | r0 = fcn_0000f350 ();
0x0003441e cmp r0, 0 |
| if (r0 != 0) {
0x00034420 bne.w 0x34302 | goto label_32;
| }
0x00034424 ldrb r3, [r5, 2] | r3 = *((r5 + 2));
0x00034426 lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
| if (r1 >= r3) {
0x00034428 bmi 0x34462 |
0x0003442a ldr.w r5, [sb, 0x20] | r5 = *((sb + 0x20));
0x0003442e cmp r5, 0 |
| if (r5 != 0) {
0x00034430 bne 0x344f6 | goto label_100;
| }
| label_37:
0x00034432 ldr r3, [pc, 0x25c] |
0x00034434 add r1, sp, 0x64 | r1 += var_64h;
0x00034436 ldr r2, [pc, 0x25c] |
0x00034438 mov r0, sb | r0 = sb;
0x0003443a strd r5, r8, [sp] | __asm ("strd r5, r8, [sp]");
0x0003443e add r3, pc | r3 = 0x68ad4;
0x00034440 add r2, pc | r2 = 0x68ada;
0x00034442 blx 0xeb64 | r0 = fcn_0000eb64 ();
0x00034446 mov r5, r0 | r5 = r0;
| label_38:
0x00034448 cmp r5, 0 |
0x0003444a ldr r1, [sp, 0x64] | r1 = var_64h;
| if (r5 < 0) {
0x0003444c blt 0x344e6 | goto label_101;
| }
0x0003444e movs r2, 0 | r2 = 0;
0x00034450 mov r0, r4 | r0 = r4;
0x00034452 blx 0xeac8 | r0 = fcn_0000eac8 ();
0x00034456 subs r5, r0, 0 | r5 = r0 - 0;
0x00034458 ldr r0, [sp, 0x64] | r0 = var_64h;
| if (r5 < r0) {
0x0003445a blt 0x3446c | goto label_102;
| }
| if (r0 == 0) {
0x0003445c cbz r0, 0x34462 | goto label_103;
| }
0x0003445e blx 0xefbc | fcn_0000efbc ();
| }
| label_103:
0x00034462 movs r3, 0 | r3 = 0;
0x00034464 movs r5, 1 | r5 = 1;
0x00034466 str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x0003446a b 0x34282 | goto label_19;
| if (r0 != 0) {
| label_102:
0x0003446c cbz r0, 0x34472 |
| label_39:
0x0003446e blx 0xefbc | fcn_0000efbc ();
| }
| label_40:
0x00034472 movs r3, 0 | r3 = 0;
0x00034474 str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x00034478 b 0x342a6 | goto label_33;
| label_89:
0x0003447a ldr r0, [sp, 0x48] | r0 = var_48h;
0x0003447c movs r1, 1 | r1 = 1;
0x0003447e bl 0x29d1c | fcn_00029d1c (r0, r1);
0x00034482 b 0x341d2 | goto label_34;
| label_87:
0x00034484 ldr r3, [pc, 0x210] |
0x00034486 ldrd fp, ip, [sb, 0x10] | __asm ("ldrd fp, ip, [sb, 0x10]");
0x0003448a add r3, pc | r3 = 0x68b26;
0x0003448c adds r3, 0x34 | r3 += 0x34;
0x0003448e ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x00034492 add r3, sp, 0x64 | r3 += var_64h;
0x00034494 stm.w r3, {r0, r1, r2} | *(r3) = r0;
| *((r3 + 4)) = r1;
| *((r3 + 8)) = r2;
0x00034498 add r2, sp, 0x54 | r2 += var_54h;
0x0003449a strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x0003449c adds r2, 0 | r2 += 0;
0x0003449e mov r0, r4 | r0 = r4;
0x000344a0 mov r2, fp | r2 = fp;
0x000344a2 mov r3, ip | r3 = ip;
0x000344a4 bl 0x1e418 | r0 = fcn_0001e418 (r0, r1, r2, r3);
0x000344a8 subs.w fp, r0, 0 |
| if (fp < r0) {
0x000344ac blt.w 0x34290 | goto label_35;
| }
0x000344b0 ldrd r2, r3, [sb, 0xe8] | __asm ("ldrd r2, r3, [sb, 0xe8]");
0x000344b4 mov r0, r4 | r0 = r4;
0x000344b6 ldr r1, [sp, 0x54] | r1 = var_54h;
0x000344b8 strd r2, r3, [r1, 0xe8] | __asm ("strd r2, r3, [r1, 0xe8]");
0x000344bc ldrd r2, r3, [sb, 0xe0] | __asm ("ldrd r2, r3, [sb, 0xe0]");
0x000344c0 strd r2, r3, [r1, 0xe0] | __asm ("strd r2, r3, [r1, 0xe0]");
0x000344c4 ldrd r2, r3, [sb, 0xf0] | __asm ("ldrd r2, r3, [sb, 0xf0]");
0x000344c8 strd r2, r3, [r1, 0xf0] | __asm ("strd r2, r3, [r1, 0xf0]");
0x000344cc ldrd r2, r3, [sb, 0x1f8] | __asm ("ldrd r2, r3, aav.0x000000ff");
0x000344d0 strd r2, r3, [r1, 0x1f8] | __asm ("strd r2, r3, aav.0x000000ff");
0x000344d4 bl 0x2f224 | r0 = fcn_0002f224 (r0, r1, r2);
0x000344d8 subs.w fp, r0, 0 |
| if (fp < r0) {
0x000344dc blt.w 0x34290 | goto label_35;
| }
0x000344e0 ldr r3, [sp, 0x54] | r3 = var_54h;
0x000344e2 str r3, [sp, 0x44] | var_44h = r3;
0x000344e4 b 0x34172 | goto label_36;
| if (r1 == 0) {
| label_101:
0x000344e6 cbz r1, 0x34554 | goto label_104;
| }
0x000344e8 mov r0, r1 | r0 = r1;
0x000344ea blx 0xefbc | fcn_0000efbc ();
0x000344ee movs r3, 0 | r3 = 0;
0x000344f0 str.w r3, [r4, 0x3e8] | __asm ("str.w r3, aav.0x000000ff");
0x000344f4 b 0x342a6 | goto label_33;
| label_100:
0x000344f6 ldr r1, [pc, 0x1a4] |
0x000344f8 mov r0, r5 | r0 = r5;
0x000344fa add r1, pc | r1 = 0x68b9c;
0x000344fc blx 0xf350 | r0 = fcn_0000f350 ();
| if (r0 == 0) {
0x00034500 cbz r0, 0x34568 | goto label_105;
| }
0x00034502 ldr r1, [pc, 0x19c] |
0x00034504 mov r0, r5 | r0 = r5;
0x00034506 add r1, pc | r1 = 0x68bac;
0x00034508 blx 0xf350 | r0 = fcn_0000f350 ();
0x0003450c mov sl, r0 | sl = r0;
0x0003450e cmp r0, 0 |
| if (r0 != 0) {
0x00034510 bne 0x34432 | goto label_37;
| }
0x00034512 add.w r8, sp, 0x70 | r8 += var_70h;
0x00034516 mov r0, r8 | r0 = r8;
0x00034518 blx 0xf158 | r0 = fcn_0000f158 ();
0x0003451c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0003451e blt 0x34560 |
0x00034520 add r1, sp, 0x64 | r1 += var_64h;
0x00034522 mov r0, sb | r0 = sb;
0x00034524 blx 0xf368 | r0 = fcn_0000f368 ();
0x00034528 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0003452a blt 0x34560 | goto label_106;
| }
0x0003452c add r3, sp, 0x80 | r3 += var_80h;
0x0003452e mov r1, sl | r1 = sl;
0x00034530 movs r2, 0x21 | r2 = 0x21;
0x00034532 mov r0, r3 | r0 = r3;
0x00034534 ldr r5, [sp, 0x64] | r5 = var_64h;
0x00034536 blx 0xe380 | fcn_0000e380 ();
0x0003453a str r0, [sp] | *(sp) = r0;
0x0003453c ldm.w r8, {r0, r1, r2, r3} | r0 = *(r8);
| r1 = *((r8 + 4));
| r2 = *((r8 + 8));
| r3 = *((r8 + 12));
0x00034540 blx 0xe50c | fcn_0000e50c ();
0x00034544 ldr r1, [pc, 0x15c] |
0x00034546 mov r2, r0 | r2 = r0;
0x00034548 mov r0, r5 | r0 = r5;
0x0003454a add r1, pc | r1 = 0x68bf2;
0x0003454c blx 0xed54 | r0 = fcn_0000ed54 ();
0x00034550 mov r5, r0 | r5 = r0;
0x00034552 b 0x34448 | goto label_38;
| label_104:
0x00034554 mov r0, sb | r0 = sb;
0x00034556 str.w r1, [r4, 0x3e8] | __asm ("str.w r1, aav.0x000000ff");
0x0003455a blx 0xefbc | fcn_0000efbc ();
0x0003455e b 0x33e2a | goto label_10;
| }
| label_106:
0x00034560 ldr r0, [sp, 0x64] | r0 = var_64h;
0x00034562 cmp r0, 0 |
| if (r0 != 0) {
0x00034564 bne 0x3446e | goto label_39;
| }
0x00034566 b 0x34472 | goto label_40;
| label_105:
0x00034568 add r1, sp, 0x64 | r1 += var_64h;
0x0003456a mov r0, sb | r0 = sb;
0x0003456c blx 0xf368 | r0 = fcn_0000f368 ();
0x00034570 mov r5, r0 | r5 = r0;
0x00034572 b 0x34448 | goto label_38;
| label_88:
0x00034574 ldr r0, [r4, 0x7c] | r0 = *((r4 + 0x7c));
0x00034576 add.w r2, sl, 0x18 | r2 = sl + 0x18;
0x0003457a mov r1, sl | r1 = sl;
0x0003457c bl 0x6d418 | fcn_0006d418 (r0);
0x00034580 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00034584 vstr d16, [sl, 8] | __asm ("vstr d16, [sl, 8]");
0x00034588 b 0x3417c | goto label_41;
| label_99:
0x0003458a ldr r0, [pc, 0x11c] |
0x0003458c add r0, pc | r0 = 0x68c3a;
0x0003458e b 0x343ec | goto label_42;
| label_98:
0x00034590 ldr.w sl, [pc, 0x118] | sl = switch.0x00043480;
0x00034594 add sl, pc | sl += pc;
0x00034596 b 0x343e0 | goto label_43;
| label_97:
0x00034598 ldr.w r8, [pc, 0x114] |
0x0003459c add r8, pc | r8 = 0x68c50;
0x0003459e b 0x343d2 | goto label_44;
| label_96:
0x000345a0 ldr r5, [pc, 0x110] |
0x000345a2 add r5, pc | r5 = 0x68c5a;
0x000345a4 b 0x343c4 | goto label_45;
| label_52:
0x000345a6 ldr r0, [pc, 0x110] |
0x000345a8 movw r1, 0xca3 | r1 = 0xca3;
0x000345ac ldr r2, [pc, 0x10c] |
0x000345ae add r0, pc | r0 = 0x68c6c;
0x000345b0 add r2, pc | r2 = 0x68c70;
0x000345b2 adds r0, 7 | r0 += 7;
0x000345b4 bl 0x68db0 | fcn_00068db0 (r0, r1, r2);
0x000345b8 ldrh r0, [r2, 0x34] | r0 = *((r2 + 0x34));
0x000345ba movs r6, r0 | r6 = r0;
0x000345bc lsls r4, r6, 0x1c | r4 = r6 << 0x1c;
0x000345be movs r0, r0 |
0x000345c0 str r1, [sp, 0x240] | *(arg_240h) = r1;
0x000345c2 movs r4, r0 | r4 = r0;
0x000345c4 adr r2, 0x368 | r2 = 0x368;
0x000345c6 movs r4, r0 | r4 = r0;
0x000345c8 strh r2, [r1, 0x1a] | *((r1 + 0x1a)) = r2;
0x000345ca movs r4, r0 | r4 = r0;
0x000345cc ldrh r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x000345ce movs r6, r0 | r6 = r0;
0x000345d0 str r0, [sp, 0x118] | *(arg_118h) = r0;
0x000345d2 movs r4, r0 | r4 = r0;
0x000345d4 adr r1, 0x2c0 | r1 = 0x2c0;
0x000345d6 movs r4, r0 | r4 = r0;
0x000345d8 ldr r0, [sp, 0x190] | r0 = *(arg_190h);
0x000345da movs r4, r0 | r4 = r0;
0x000345dc str r0, [sp, 0x90] | var_90h = r0;
0x000345de movs r4, r0 | r4 = r0;
0x000345e0 adr r1, 0x238 | r1 = 0x238;
0x000345e2 movs r4, r0 | r4 = r0;
0x000345e4 cmp r5, 0x1e |
0x000345e6 movs r4, r0 | r4 = r0;
0x000345e8 str r0, [sp, 8] | var_8h = r0;
0x000345ea movs r4, r0 | r4 = r0;
0x000345ec adr r1, 0x1b0 | r1 = 0x1b0;
0x000345ee movs r4, r0 | r4 = r0;
0x000345f0 cmp r5, 0x1c |
0x000345f2 movs r4, r0 | r4 = r0;
0x000345f4 ldrh r0, [r4, 0x3e] | r0 = *((r4 + 0x3e));
0x000345f6 movs r4, r0 | r4 = r0;
0x000345f8 adr r1, 0x128 | r1 = 0x128;
0x000345fa movs r4, r0 | r4 = r0;
0x000345fc ldr r0, [sp, 0x308] | r0 = *(arg_308h);
0x000345fe movs r4, r0 | r4 = r0;
0x00034600 ldrh r2, [r0, 0x3e] | r2 = *((r0 + 0x3e));
0x00034602 movs r4, r0 | r4 = r0;
0x00034604 adr r1, 0xb0 | r1 = 0xb0;
0x00034606 movs r4, r0 | r4 = r0;
0x00034608 ldr r0, [sp, 0x2f0] | r0 = *(arg_2f0h);
0x0003460a movs r4, r0 | r4 = r0;
0x0003460c invalid |
0x000346c0 b.w 0x339e8 | goto label_46;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x34bf0 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_process_priority () | void sd_bus_process_priority (int16_t arg_0h, int16_t arg1) {
| r0 = arg1;
0x00034bf0 ldr r1, [sp] | r1 = *(sp);
0x00034bf2 b.w 0x339e8 | return void (*0x339e8)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x2a394 */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_slot_set_floating () | void sd_bus_slot_set_floating (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002a394 push {r4, lr} |
| if (r0 == 0) {
0x0002a396 cbz r0, 0x2a3ce | goto label_0;
| }
0x0002a398 ldrb r2, [r0, 5] | r2 = *((r0 + 5));
0x0002a39a subs r3, r1, 0 | r3 = r1 - 0;
0x0002a39c it ne |
| if (r3 == r1) {
0x0002a39e movne r3, 1 | r3 = 1;
| }
0x0002a3a0 mov r4, r0 | r4 = r0;
0x0002a3a2 cmp r2, r3 |
0x0002a3a4 it eq |
| if (r2 != r3) {
0x0002a3a6 moveq r0, 0 | r0 = 0;
| }
| if (r2 == r3) {
0x0002a3a8 beq 0x2a3c0 | goto label_1;
| }
0x0002a3aa ldr r2, [r4, 8] | r2 = *((r4 + 8));
| if (r2 == 0) {
0x0002a3ac cbz r2, 0x2a3ea | goto label_2;
| }
0x0002a3ae strb r3, [r4, 5] | *((r4 + 5)) = r3;
| if (r1 != 0) {
0x0002a3b0 cbnz r1, 0x2a3c2 | goto label_3;
| }
0x0002a3b2 mov r0, r2 | r0 = r2;
0x0002a3b4 blx 0xeca0 | mmap64 ()
0x0002a3b8 mov r0, r4 | r0 = r4;
0x0002a3ba blx 0xe4a8 | fcn_0000e4a8 ();
| do {
0x0002a3be movs r0, 1 | r0 = 1;
| label_1:
0x0002a3c0 pop {r4, pc} |
| label_3:
0x0002a3c2 blx 0xefa0 | fcn_0000efa0 ();
0x0002a3c6 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0002a3c8 blx 0xe4e8 | fcn_0000e4e8 ();
0x0002a3cc b 0x2a3be |
| } while (1);
| label_0:
0x0002a3ce ldr r1, [pc, 0x20] |
0x0002a3d0 movw r2, 0x10d | r2 = 0x10d;
0x0002a3d4 ldr r3, [pc, 0x1c] |
0x0002a3d6 ldr r0, [pc, 0x20] |
0x0002a3d8 add r1, pc | r1 = 0x547ce;
0x0002a3da add r3, pc | r3 = 0x547d2;
0x0002a3dc adds r1, 7 | r1 += 7;
0x0002a3de add r0, pc | r0 = 0x547dc;
0x0002a3e0 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0002a3e4 mvn r0, 0x15 | r0 = ~0x15;
0x0002a3e8 pop {r4, pc} |
| label_2:
0x0002a3ea mvn r0, 0x73 | r0 = ~0x73;
0x0002a3ee pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsystemd.so.0.34.0 @ 0x2cdbc */
| #include <stdint.h>
|
; (fcn) sym.sd_bus_track_new () | void sd_bus_track_new (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0002cdbc push.w {r4, r5, r6, r7, r8, lr} |
0x0002cdc0 cmp r0, 0 |
| if (r0 == 0) {
0x0002cdc2 beq 0x2ce2a | goto label_2;
| }
0x0002cdc4 mov r6, r1 | r6 = r1;
0x0002cdc6 mov r8, r2 | r8 = r2;
0x0002cdc8 mov r7, r3 | r7 = r3;
0x0002cdca bl 0x2e4cc | r0 = fcn_0002e4cc (r0);
0x0002cdce mov r5, r0 | r5 = r0;
0x0002cdd0 cmp r0, 0 |
| if (r0 == 0) {
0x0002cdd2 beq 0x2ce44 | goto label_3;
| }
0x0002cdd4 cmp r6, 0 |
| if (r6 == 0) {
0x0002cdd6 beq 0x2ce5e | goto label_4;
| }
0x0002cdd8 ldrb r3, [r0, 0x1c] | r3 = *((r0 + 0x1c));
0x0002cdda lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 >= r3) {
0x0002cddc bpl 0x2ce3e | goto label_1;
| }
0x0002cdde movs r1, 0x38 | r1 = 0x38;
0x0002cde0 movs r0, 1 | r0 = 1;
0x0002cde2 blx 0xe2f8 | r0 = fcn_0000e2f8 ();
0x0002cde6 mov r4, r0 | r4 = r0;
0x0002cde8 cmp r0, 0 |
| if (r0 == 0) {
0x0002cdea beq 0x2ce74 | goto label_5;
| }
0x0002cdec movs r3, 1 | r3 = 1;
0x0002cdee str.w r8, [r0, 0xc] | __asm ("str.w r8, [r0, 0xc]");
0x0002cdf2 str r3, [r4] | *(r4) = r3;
0x0002cdf4 mov r0, r5 | r0 = r5;
0x0002cdf6 str r7, [r4, 0x10] | *((r4 + 0x10)) = r7;
0x0002cdf8 blx 0xeca0 | mmap64 ()
0x0002cdfc str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0002cdfe ldr.w r3, [r5, 0x40c] | r3 = *((r5 + 0x40c));
0x0002ce02 str r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
| if (r3 != 0) {
0x0002ce04 cbz r3, 0x2ce08 |
0x0002ce06 str r4, [r3, 0x34] | *((r3 + 0x34)) = r4;
| }
0x0002ce08 movs r7, 0 | r7 = 0;
0x0002ce0a mov r0, r4 | r0 = r4;
0x0002ce0c str r7, [r4, 0x34] | *((r4 + 0x34)) = r7;
0x0002ce0e str.w r4, [r5, 0x40c] | __asm ("str.w r4, aav.0x000000ff");
0x0002ce12 ldrb.w r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002ce16 orr r3, r3, 1 | r3 |= 1;
0x0002ce1a strb.w r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002ce1e bl 0x2cbc8 | fcn_0002cbc8 (r0);
0x0002ce22 mov r0, r7 | r0 = r7;
0x0002ce24 str r4, [r6] | *(r6) = r4;
| do {
| label_0:
0x0002ce26 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x0002ce2a ldr r1, [pc, 0x50] |
0x0002ce2c movs r2, 0x7b | r2 = 0x7b;
0x0002ce2e ldr r3, [pc, 0x50] |
0x0002ce30 ldr r0, [pc, 0x50] |
0x0002ce32 add r1, pc | r1 = 0x59cb4;
0x0002ce34 add r3, pc | r3 = 0x59cba;
0x0002ce36 adds r1, 7 | r1 += 7;
0x0002ce38 add r0, pc | r0 = 0x59cc0;
0x0002ce3a bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
| label_1:
0x0002ce3e mvn r0, 0x15 | r0 = ~0x15;
0x0002ce42 b 0x2ce26 |
| } while (1);
| label_3:
0x0002ce44 ldr r1, [pc, 0x40] |
0x0002ce46 movs r2, 0x7c | r2 = 0x7c;
0x0002ce48 ldr r3, [pc, 0x40] |
0x0002ce4a ldr r0, [pc, 0x44] |
0x0002ce4c add r1, pc | r1 = 0x59cd8;
0x0002ce4e add r3, pc | r3 = 0x59cde;
0x0002ce50 adds r1, 7 | r1 += 7;
0x0002ce52 add r0, pc | r0 = 0x59ce8;
0x0002ce54 bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0002ce58 mvn r0, 0x40 | r0 = ~0x40;
0x0002ce5c b 0x2ce26 | goto label_0;
| label_4:
0x0002ce5e ldr r1, [pc, 0x34] |
0x0002ce60 movs r2, 0x7d | r2 = 0x7d;
0x0002ce62 ldr r3, [pc, 0x34] |
0x0002ce64 ldr r0, [pc, 0x34] |
0x0002ce66 add r1, pc | r1 = 0x59d00;
0x0002ce68 add r3, pc | r3 = 0x59d06;
0x0002ce6a adds r1, 7 | r1 += 7;
0x0002ce6c add r0, pc | r0 = 0x59d0c;
0x0002ce6e bl 0x68f74 | fcn_00068f74 (r0, r1, r2, r3);
0x0002ce72 b 0x2ce3e | goto label_1;
| label_5:
0x0002ce74 mvn r0, 0xb | r0 = ~0xb;
0x0002ce78 b 0x2ce26 | goto label_0;
| }
[*] Function mmap used 23 times libsystemd.so.0.34.0