[*] Binary protection state of libpacsio-api.so.0.0.55
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function system tear down of libpacsio-api.so.0.0.55
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0xe134 */
| #include <stdint.h>
|
; (fcn) fcn.0000e134 () | void fcn_0000e134 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_8h;
| int32_t var_8h_2;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
0x0000e134 push {r4, r5, r6, lr} |
0x0000e136 movs r2, 0 | r2 = 0;
0x0000e138 ldr r6, [pc, 0x8c] |
0x0000e13a sub sp, 0x20 |
0x0000e13c mov r1, r2 | r1 = r2;
0x0000e13e mov r5, r0 | r5 = r0;
0x0000e140 ldr r3, [pc, 0x88] | r3 = *(0xe1cc);
0x0000e142 mov r4, r2 | r4 = r2;
0x0000e144 add r6, pc | r6 = 0x1c310;
0x0000e146 ldr r0, [r0, 0x1c] | r0 = *((r0 + 0x1c));
0x0000e148 ldr r3, [r6, r3] |
0x0000e14a ldr r3, [r3] | r3 = *(0x1c310);
0x0000e14c str r3, [sp, 0x1c] | var_1ch = r3;
0x0000e14e mov.w r3, 0 | r3 = 0;
0x0000e152 blx 0x64f4 | fcn_000064f4 ();
0x0000e156 str r4, [sp, 0x18] | var_18h = r4;
0x0000e158 mov r6, r0 | r6 = r0;
0x0000e15a blx 0x5b18 | ipc_data_get_key_references ();
0x0000e15e movs r1, 1 | r1 = 1;
0x0000e160 strd r4, r4, [sp, 8] | __asm ("strd r4, r4, [var_8h]");
0x0000e164 str r4, [sp] | *(sp) = r4;
0x0000e166 mov r3, r4 | r3 = r4;
0x0000e168 add r4, sp, 0x18 | r4 += var_18h;
0x0000e16a str r1, [sp, 4] | var_4h = r1;
0x0000e16c mov r2, r0 | r2 = r0;
0x0000e16e str r4, [sp, 0x10] | var_10h = r4;
0x0000e170 mov r1, r6 | r1 = r6;
0x0000e172 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x0000e174 blx 0x602c | r0 = fcn_0000602c ();
| if (r0 != 0) {
0x0000e178 cbnz r0, 0xe198 | goto label_0;
| }
0x0000e17a ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 == 0) {
0x0000e17c cbz r3, 0xe1bc | goto label_1;
| }
0x0000e17e ldr r1, [r3, 8] | r1 = *((r3 + 8));
| do {
0x0000e180 ldr r2, [r5] | r2 = *(r5);
0x0000e182 ldr r3, [pc, 0x4c] |
0x0000e184 ldr r0, [pc, 0x4c] |
0x0000e186 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x0000e18a movs r1, 0x10 | r1 = 0x10;
0x0000e18c ldr r2, [pc, 0x48] |
0x0000e18e add r3, pc | r3 = 0x1c364;
0x0000e190 add r0, pc | r0 = 0x1c368;
0x0000e192 add r2, pc | r2 = 0x1c36e;
0x0000e194 blx 0x647c | fcn_0000647c ();
| label_0:
0x0000e198 mov r0, r4 | r0 = r4;
0x0000e19a blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000e19e mov r0, r6 | r0 = r6;
0x0000e1a0 blx 0x5438 | fcn_00005438 ();
0x0000e1a4 ldr r2, [pc, 0x34] |
0x0000e1a6 ldr r3, [pc, 0x24] | r3 = *(0xe1ce);
0x0000e1a8 add r2, pc | r2 = 0x1c388;
0x0000e1aa ldr r3, [r2, r3] | r3 = *(0x1c388);
0x0000e1ac ldr r2, [r3] | r2 = *(0x1c388);
0x0000e1ae ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000e1b0 eors r2, r3 | r2 ^= r3;
0x0000e1b2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e1b6 bne 0xe1c2 | goto label_2;
| }
0x0000e1b8 add sp, 0x20 |
0x0000e1ba pop {r4, r5, r6, pc} |
| label_1:
0x0000e1bc ldr r1, [pc, 0x20] |
0x0000e1be add r1, pc | r1 = 0x1c3a2;
0x0000e1c0 b 0xe180 |
| } while (1);
| label_2:
0x0000e1c2 blx 0x5fbc | domain_contract_new ();
0x0000e1c6 nop |
0x0000e1c8 ldr r4, [r6, r3] | r4 = *((r6 + r3));
0x0000e1ca movs r0, r0 |
0x0000e1cc lsls r4, r7, 0x16 | r4 = r7 << 0x16;
0x0000e1ce movs r0, r0 |
0x0000e1d0 adds r6, r0, r4 | r6 = r0 + r4;
0x0000e1d2 movs r0, r0 |
0x0000e1d4 asrs r4, r1, 0x15 | r4 = r1 >> 0x15;
0x0000e1d6 movs r0, r0 |
0x0000e1d8 adds r5, 0xfe | r5 += 0xfe;
0x0000e1da movs r0, r0 |
0x0000e1dc ldr r0, [r2, r2] | r0 = *((r2 + r2));
0x0000e1de movs r0, r0 |
0x0000e1e0 adds r5, 0xca | r5 += 0xca;
0x0000e1e2 movs r0, 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/libpacsio-api.so.0.0.55 @ 0xe23c */
| #include <stdint.h>
|
; (fcn) fcn.0000e23c () | void fcn_0000e23c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_18h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_44h;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000e23c invalid |
0x0000e240 mov r3, r1 | r3 = r1;
0x0000e242 mov r1, r2 | r1 = r2;
0x0000e244 ldr r2, [pc, 0x68] |
0x0000e246 push {r4, r5, lr} |
0x0000e248 sub sp, 0x14 |
0x0000e24a add ip, pc |
0x0000e24c movs r4, 0 | r4 = 0;
0x0000e24e add r5, sp, 8 | r5 += var_8h;
0x0000e250 ldr.w r2, [ip, r2] | r2 = *((ip + r2));
0x0000e254 ldr r2, [r2] | r2 = *(0xe2b0);
0x0000e256 str r2, [sp, 0xc] | var_ch = r2;
0x0000e258 mov.w r2, 0 | r2 = 0;
0x0000e25c str r4, [sp, 8] | var_8h = r4;
0x0000e25e mov r2, r5 | r2 = r5;
0x0000e260 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0000e262 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0000e264 cbnz r0, 0xe280 | goto label_0;
| }
0x0000e266 ldr r3, [sp, 8] | r3 = var_8h;
| if (r3 == 0) {
0x0000e268 cbz r3, 0xe2a0 | goto label_1;
| }
0x0000e26a ldr r1, [r3, 8] | r1 = *((r3 + 8));
| do {
0x0000e26c ldr r3, [pc, 0x44] |
0x0000e26e ldr r2, [pc, 0x48] |
0x0000e270 ldr r0, [pc, 0x48] |
0x0000e272 str r1, [sp] | *(sp) = r1;
0x0000e274 add r3, pc | r3 = 0x1c52c;
0x0000e276 add r2, pc | r2 = 0x1c534;
0x0000e278 movs r1, 0x10 | r1 = 0x10;
0x0000e27a add r0, pc | r0 = 0x1c53a;
0x0000e27c blx 0x647c | fcn_0000647c ();
| label_0:
0x0000e280 mov r0, r5 | r0 = r5;
0x0000e282 blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000e286 ldr r2, [pc, 0x38] |
0x0000e288 ldr r3, [pc, 0x24] | r3 = *(0xe2b0);
0x0000e28a add r2, pc | r2 = 0x1c550;
0x0000e28c ldr r3, [r2, r3] | r3 = *(0x1c550);
0x0000e28e ldr r2, [r3] | r2 = *(0x1c550);
0x0000e290 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000e292 eors r2, r3 | r2 ^= r3;
0x0000e294 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e298 bne 0xe2a6 | goto label_2;
| }
0x0000e29a mov r0, r4 | r0 = r4;
0x0000e29c add sp, 0x14 |
0x0000e29e pop {r4, r5, pc} |
| label_1:
0x0000e2a0 ldr r1, [pc, 0x20] |
0x0000e2a2 add r1, pc | r1 = 0x1c56a;
0x0000e2a4 b 0xe26c |
| } while (1);
| label_2:
0x0000e2a6 blx 0x5fbc | domain_contract_new ();
0x0000e2aa nop |
0x0000e2ac ldrsb r6, [r5, r7] | r6 = *((r5 + r7));
0x0000e2ae movs r0, r0 |
0x0000e2b0 lsls r4, r7, 0x16 | r4 = r7 << 0x16;
0x0000e2b2 movs r0, r0 |
0x0000e2b4 adds r0, r4, r0 | r0 = r4 + r0;
0x0000e2b6 movs r0, r0 |
0x0000e2b8 adds r5, 0x82 | r5 += 0x82;
0x0000e2ba movs r0, r0 |
0x0000e2bc asrs r2, r4, 0x11 | r2 = r4 >> 0x11;
0x0000e2be movs r0, r0 |
0x0000e2c0 ldrsb r6, [r5, r6] | r6 = *((r5 + r6));
0x0000e2c2 movs r0, r0 |
0x0000e2c4 adds r4, 0xe6 | r4 += 0xe6;
0x0000e2c6 movs r0, 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/libpacsio-api.so.0.0.55 @ 0xe2c8 */
| #include <stdint.h>
|
; (fcn) fcn.0000e2c8 () | void fcn_0000e2c8 (int16_t arg_70h, int16_t arg_74h, int16_t arg_78h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_7h;
| int16_t var_44h;
| int8_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000e2c8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000e2cc sub sp, 0x4c |
0x0000e2ce strd r2, r3, [sp, 0x1c] | __asm ("strd r2, r3, [var_20h]");
0x0000e2d2 mov r4, r0 | r4 = r0;
0x0000e2d4 mov r0, r1 | r0 = r1;
0x0000e2d6 ldr r2, [pc, 0x1e8] |
0x0000e2d8 ldr r1, [sp, 0x70] | r1 = *(arg_70h);
0x0000e2da ldr r3, [pc, 0x1e8] | r3 = *(0xe4c6);
0x0000e2dc add r2, pc | r2 = 0x1c7a2;
0x0000e2de ldr r6, [pc, 0x1e8] |
0x0000e2e0 str r1, [sp, 0x24] | var_24h = r1;
0x0000e2e2 ldr r3, [r2, r3] |
0x0000e2e4 ldr r5, [pc, 0x1e4] |
0x0000e2e6 add r6, pc | r6 = 0x1c7b4;
0x0000e2e8 ldr r3, [r3] | r3 = *(0x1c7a2);
0x0000e2ea str r3, [sp, 0x44] | var_44h = r3;
0x0000e2ec mov.w r3, 0 | r3 = 0;
0x0000e2f0 ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x0000e2f2 add r5, pc | r5 = 0x1c7c2;
0x0000e2f4 str r3, [sp, 0x30] | var_30h = r3;
0x0000e2f6 ldr r3, [sp, 0x78] | r3 = *(arg_78h);
0x0000e2f8 str r3, [sp, 0x34] | var_34h = r3;
0x0000e2fa blx 0x54d8 | fcn_000054d8 ();
0x0000e2fe movs r2, 0 | r2 = 0;
0x0000e300 mov r1, r6 | r1 = r6;
0x0000e302 str r0, [sp, 0x38] | var_38h = r0;
0x0000e304 blx 0x5568 | fcn_00005568 ();
0x0000e308 movs r2, 0 | r2 = 0;
0x0000e30a mov r1, r5 | r1 = r5;
0x0000e30c str r0, [sp, 0x18] | var_18h = r0;
0x0000e30e ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000e310 blx 0x6388 | domain_rs485port_set_requested_baudrate ();
0x0000e314 mov r1, r6 | r1 = r6;
0x0000e316 str r0, [sp, 0x2c] | var_2ch = r0;
0x0000e318 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000e31a blx 0x5674 | fcn_00005674 ();
0x0000e31e ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000e320 mov r1, r5 | r1 = r5;
0x0000e322 blx 0x5674 | fcn_00005674 ();
0x0000e326 ldr r7, [r4, 0x10] | r7 = *((r4 + 0x10));
0x0000e328 ldr r2, [pc, 0x1a4] |
0x0000e32a ldr.w fp, [sp, 0x38] | fp = var_38h;
0x0000e32e add r2, pc | r2 = 0x1c802;
0x0000e330 cmp r7, 0 |
| if (r7 == 0) {
0x0000e332 beq 0xe3e4 | goto label_2;
| }
0x0000e334 ldr r3, [pc, 0x19c] |
0x0000e336 add r6, sp, 0x40 | r6 += var_40h;
0x0000e338 ldr.w sb, [pc, 0x19c] |
0x0000e33c ldr r1, [pc, 0x19c] | r1 = *(0xe4dc);
0x0000e33e ldr.w sl, [pc, 0x1a0] |
0x0000e342 add r3, pc | r3 = 0x1c81a;
0x0000e344 add sb, pc | sb = 0x1c820;
0x0000e346 ldr.w r8, [r2, r1] | r8 = *((r2 + r1));
0x0000e34a add sl, pc | sl = 0x1c830;
0x0000e34c str.w sb, [sp, 0x14] | __asm ("str.w sb, [var_14h]");
0x0000e350 mov sb, r3 | sb = r3;
0x0000e352 str r4, [sp, 0x28] | var_28h = r4;
| do {
0x0000e354 ldr r4, [r7] | r4 = *(r7);
0x0000e356 mov r0, fp | r0 = fp;
0x0000e358 ldr r1, [r4] | r1 = *(r4);
0x0000e35a blx 0x634c | domain_resource_load_from_id ();
0x0000e35e str r0, [sp, 0x40] | var_40h = r0;
0x0000e360 blx 0x54d8 | fcn_000054d8 ();
0x0000e364 mov r1, sb | r1 = sb;
0x0000e366 mov r5, r0 | r5 = r0;
0x0000e368 blx 0x5674 | fcn_00005674 ();
0x0000e36c ldr r2, [r4, 4] | r2 = *((r4 + 4));
| if (r2 != 0) {
0x0000e36e cbz r2, 0xe378 |
0x0000e370 mov r1, sl | r1 = sl;
0x0000e372 mov r0, r5 | r0 = r5;
0x0000e374 blx 0x5928 | fcn_00005928 ();
| }
0x0000e378 ldr r2, [r4, 8] | r2 = *((r4 + 8));
| if (r2 != 0) {
0x0000e37a cbz r2, 0xe384 |
0x0000e37c ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000e37e mov r0, r5 | r0 = r5;
0x0000e380 blx 0x5450 | fcn_00005450 ();
| }
0x0000e384 mov r1, r5 | r1 = r5;
0x0000e386 movs r0, 0 | r0 = 0;
0x0000e388 blx 0x613c | g_once_init_enter ();
0x0000e38c ldr r1, [pc, 0x154] |
0x0000e38e mov r5, r0 | r5 = r0;
0x0000e390 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0000e392 add r1, pc | r1 = 0x1c87a;
0x0000e394 blx 0x5674 | fcn_00005674 ();
0x0000e398 ldr r1, [pc, 0x14c] |
0x0000e39a ldr r0, [sp, 0x40] | r0 = var_40h;
0x0000e39c add r1, pc | r1 = 0x1c888;
0x0000e39e blx 0x5674 | fcn_00005674 ();
0x0000e3a2 ldr r1, [pc, 0x148] |
0x0000e3a4 mov r2, r5 | r2 = r5;
0x0000e3a6 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0000e3a8 add r1, pc | r1 = 0x1c89a;
0x0000e3aa blx 0x5c20 | fcn_00005c20 ();
0x0000e3ae ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 != 0) {
0x0000e3b0 cbz r3, 0xe3c0 |
0x0000e3b2 ldr r2, [pc, 0x13c] |
0x0000e3b4 ldr r1, [pc, 0x13c] |
0x0000e3b6 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0000e3b8 add r2, pc | r2 = 0x1c8ae;
0x0000e3ba add r1, pc | r1 = 0x1c8b2;
0x0000e3bc blx 0x5450 | fcn_00005450 ();
| }
0x0000e3c0 ldr r1, [r4] | r1 = *(r4);
0x0000e3c2 mov r0, fp | r0 = fp;
0x0000e3c4 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0000e3c6 blx 0x5928 | fcn_00005928 ();
0x0000e3ca mov r0, r6 | r0 = r6;
0x0000e3cc blx 0x5d2c | fcn_00005d2c ();
0x0000e3d0 mov r1, r8 | r1 = r8;
0x0000e3d2 mov r0, r5 | r0 = r5;
0x0000e3d4 blx 0x57e8 | fcn_000057e8 ();
0x0000e3d8 ldr r7, [r7, 4] | r7 = *((r7 + 4));
0x0000e3da cmp r7, 0 |
0x0000e3dc bne 0xe354 |
| } while (r7 != 0);
0x0000e3de ldr r4, [sp, 0x28] | r4 = var_28h;
0x0000e3e0 ldr.w fp, [sp, 0x38] | fp = var_38h;
| label_2:
0x0000e3e4 add r7, sp, 0x3c | r7 += var_3ch;
0x0000e3e6 movs r5, 0 | r5 = 0;
0x0000e3e8 ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_24h]");
0x0000e3ec mov r0, fp | r0 = fp;
0x0000e3ee ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000e3f0 str r7, [sp] | *(sp) = r7;
0x0000e3f2 str r5, [sp, 0x3c] | var_3ch = r5;
0x0000e3f4 blx 0x630c | r0 = fcn_0000630c ();
0x0000e3f8 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000e3fa cbz r0, 0xe438 | goto label_3;
| }
0x0000e3fc ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x0000e3fe cbz r3, 0xe40c |
0x0000e400 ldr r1, [pc, 0xf4] |
0x0000e402 mov r2, r3 | r2 = r3;
0x0000e404 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000e406 add r1, pc | r1 = 0x1c902;
0x0000e408 blx 0x5450 | fcn_00005450 ();
| }
0x0000e40c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000e40e movs r1, 0 | r1 = 0;
0x0000e410 add r6, sp, 0x40 | r6 += var_40h;
0x0000e412 str r1, [sp, 0x40] | var_40h = r1;
0x0000e414 str r6, [sp, 4] | var_4h = r6;
0x0000e416 str r3, [sp] | *(sp) = r3;
0x0000e418 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000e41a ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000e41c ldr r0, [r4, 0x24] | r0 = *((r4 + 0x24));
0x0000e41e ldr r1, [sp, 0x18] | r1 = var_18h;
0x0000e420 blx 0x5e1c | r0 = fcn_00005e1c ();
0x0000e424 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000e426 cbz r0, 0xe484 | goto label_4;
| }
0x0000e428 mov r0, r6 | r0 = r6;
0x0000e42a blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000e42e mov r0, r5 | r0 = r5;
0x0000e430 blx 0x5644 | domain_aadpdevice_set_name ();
| do {
0x0000e434 movs r5, 1 | r5 = 1;
0x0000e436 b 0xe45c | goto label_5;
| label_3:
0x0000e438 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0000e43a cmp r3, 0 |
| if (r3 == 0) {
0x0000e43c beq 0xe4ae | goto label_6;
| }
0x0000e43e ldr r3, [r3, 8] | r3 = *((r3 + 8));
| label_0:
0x0000e440 ldr r2, [r4] | r2 = *(r4);
0x0000e442 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0000e444 ldr r0, [pc, 0xb4] |
0x0000e446 str r3, [sp, 8] | var_8h = r3;
0x0000e448 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x0000e44c movs r1, 0x10 | r1 = 0x10;
0x0000e44e ldr r3, [pc, 0xb0] |
0x0000e450 add r0, pc | r0 = 0x1c950;
0x0000e452 ldr r2, [pc, 0xb0] |
0x0000e454 add r3, pc | r3 = 0x1c95a;
0x0000e456 add r2, pc | r2 = 0x1c960;
0x0000e458 blx 0x647c | fcn_0000647c ();
| label_5:
0x0000e45c mov r0, r7 | r0 = r7;
0x0000e45e blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000e462 add r0, sp, 0x38 | r0 += var_38h;
0x0000e464 blx 0x5d2c | fcn_00005d2c ();
0x0000e468 ldr r2, [pc, 0x9c] |
0x0000e46a ldr r3, [pc, 0x58] | r3 = *(0xe4c6);
0x0000e46c add r2, pc | r2 = 0x1c978;
0x0000e46e ldr r3, [r2, r3] | r3 = *(0x1c978);
0x0000e470 ldr r2, [r3] | r2 = *(0x1c978);
0x0000e472 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000e474 eors r2, r3 | r2 ^= r3;
0x0000e476 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e47a bne 0xe4ba | goto label_7;
| }
0x0000e47c mov r0, r5 | r0 = r5;
0x0000e47e add sp, 0x4c |
0x0000e480 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x0000e484 ldr r3, [sp, 0x40] | r3 = var_40h;
| if (r3 == 0) {
0x0000e486 cbz r3, 0xe4b4 | goto label_8;
| }
0x0000e488 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| label_1:
0x0000e48a ldr r2, [r4] | r2 = *(r4);
0x0000e48c ldr r1, [sp, 0x18] | r1 = var_18h;
0x0000e48e str r3, [sp, 8] | var_8h = r3;
0x0000e490 ldr r0, [pc, 0x78] |
0x0000e492 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x0000e496 movs r1, 0x10 | r1 = 0x10;
0x0000e498 ldr r3, [pc, 0x74] |
0x0000e49a ldr r2, [pc, 0x78] |
0x0000e49c add r0, pc | r0 = 0x1c9ac;
0x0000e49e add r3, pc | r3 = 0x1c9b2;
0x0000e4a0 add r2, pc | r2 = 0x1c9ba;
0x0000e4a2 blx 0x647c | fcn_0000647c ();
0x0000e4a6 mov r0, r6 | r0 = r6;
0x0000e4a8 blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000e4ac b 0xe434 |
| } while (1);
| label_6:
0x0000e4ae ldr r3, [pc, 0x68] |
0x0000e4b0 add r3, pc | r3 = 0x1c9ce;
0x0000e4b2 b 0xe440 | goto label_0;
| label_8:
0x0000e4b4 ldr r3, [pc, 0x64] |
0x0000e4b6 add r3, pc | r3 = 0x1c9d6;
0x0000e4b8 b 0xe48a | goto label_1;
| label_7:
0x0000e4ba blx 0x5fbc | domain_contract_new ();
0x0000e4be nop |
0x0000e4c0 ldrsb r4, [r3, r5] | r4 = *((r3 + r5));
0x0000e4c2 movs r0, r0 |
0x0000e4c4 lsls r4, r7, 0x16 | r4 = r7 << 0x16;
0x0000e4c6 movs r0, r0 |
0x0000e4c8 adds r2, r3, 2 | r2 = r3 + 2;
0x0000e4ca movs r0, r0 |
0x0000e4cc subs r6, r1, 4 | r6 = r1 - 4;
0x0000e4ce movs r0, r0 |
0x0000e4d0 ldrsb r2, [r1, r4] | r2 = *((r1 + r4));
0x0000e4d2 movs r0, r0 |
0x0000e4d4 adds r4, 0xe6 | r4 += 0xe6;
0x0000e4d6 movs r0, r0 |
0x0000e4d8 adds r4, 0xf4 | r4 += 0xf4;
0x0000e4da movs r0, r0 |
0x0000e4dc lsls r0, r6, 0x16 | r0 = r6 << 0x16;
0x0000e4de movs r0, r0 |
0x0000e4e0 adds r4, 0xe6 | r4 += 0xe6;
0x0000e4e2 movs r0, r0 |
0x0000e4e4 subs r6, r5, r7 | r6 = r5 - r7;
0x0000e4e6 movs r0, r0 |
0x0000e4e8 subs r0, r4, 2 | r0 = r4 - 2;
0x0000e4ea movs r0, r0 |
0x0000e4ec adds r4, 0x98 | r4 += 0x98;
0x0000e4ee movs r0, r0 |
0x0000e4f0 adds r4, 0x90 | r4 += 0x90;
0x0000e4f2 movs r0, r0 |
0x0000e4f4 adds r4, 0x6e | r4 += 0x6e;
0x0000e4f6 movs r0, r0 |
0x0000e4f8 adds r2, r7, 7 | r2 += var_7h;
0x0000e4fa movs r0, r0 |
0x0000e4fc asrs r4, r1, 0xa | r4 = r1 >> 0xa;
0x0000e4fe movs r0, r0 |
0x0000e500 asrs r0, r0, 0x19 | r0 >>= 0x19;
0x0000e502 movs r0, r0 |
0x0000e504 adds r4, 0x32 | r4 += 0x32;
0x0000e506 movs r0, r0 |
0x0000e508 strb r4, [r1, r7] | *((r1 + r7)) = r4;
0x0000e50a movs r0, r0 |
0x0000e50c asrs r0, r0, 9 | r0 >>= 9;
0x0000e50e movs r0, r0 |
0x0000e510 asrs r6, r6, 0x17 | r6 >>= 0x17;
0x0000e512 movs r0, r0 |
0x0000e514 adds r3, 0xb4 | r3 += 0xb4;
0x0000e516 movs r0, r0 |
0x0000e518 adds r2, 0xd8 | r2 += 0xd8;
0x0000e51a movs r0, r0 |
0x0000e51c adds r2, 0xd2 | r2 += 0xd2;
0x0000e51e movs r0, r0 |
0x0000e520 push {r3, r4, r5, lr} |
0x0000e522 mov r5, r0 | r5 = r0;
0x0000e524 mov r4, r1 | r4 = r1;
0x0000e526 blx 0x5a9c | r0 = fcn_00005a9c ();
0x0000e52a mov r1, r0 | r1 = r0;
0x0000e52c mov r0, r5 | r0 = r5;
0x0000e52e blx 0x5f94 | fcn_00005f94 ();
0x0000e532 ldr r3, [r4] | r3 = *(r4);
0x0000e534 ldrd r1, r2, [r4, 4] | __asm ("ldrd r1, r2, [r4, 4]");
0x0000e538 bl 0xe0c4 | r0 = fcn_0000e0c4 (r0, r1, r2, r3);
| if (r0 != 0) {
0x0000e53c cbz r0, 0xe548 |
0x0000e53e mov r1, r0 | r1 = r0;
0x0000e540 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0000e542 blx 0x613c | g_once_init_enter ();
0x0000e546 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
| }
0x0000e548 movs r0, 1 | r0 = 1;
0x0000e54a pop {r3, r4, r5, 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/libpacsio-api.so.0.0.55 @ 0x8794 */
| #include <stdint.h>
|
; (fcn) sym.auxio_collection_new () | void auxio_collection_new (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int32_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00008794 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00008798 mov r8, r2 | r8 = r2;
0x0000879a ldr r2, [pc, 0x1e0] |
0x0000879c sub sp, 0x2c |
0x0000879e mov r6, r0 | r6 = r0;
0x000087a0 mov r7, r1 | r7 = r1;
0x000087a2 ldr r3, [pc, 0x1dc] | r3 = *(0x8982);
0x000087a4 add r2, pc | r2 = 0x11126;
0x000087a6 ldr.w sb, [pc, 0x1dc] |
0x000087aa ldr r3, [r2, r3] |
0x000087ac add sb, pc | sb = 0x11136;
0x000087ae ldr r3, [r3] | r3 = *(0x11126);
0x000087b0 str r3, [sp, 0x24] | var_24h = r3;
0x000087b2 mov.w r3, 0 | r3 = 0;
0x000087b4 lsls r0, r0, 0xc | r0 <<= 0xc;
0x000087b6 ldr r3, [pc, 0x1d0] |
0x000087b8 add r3, pc | r3 = 0x11146;
0x000087ba ldr r4, [r3, 4] | r4 = *(0x1114a);
0x000087bc movs r3, 0 | r3 = 0;
0x000087be str r3, [sp, 0x1c] | var_1ch = r3;
| if (r4 != 0) {
0x000087c0 cbz r4, 0x8814 |
0x000087c2 ldr r2, [pc, 0x1c8] |
0x000087c4 add.w sl, sp, 0x20 | sl += var_20h;
0x000087c8 str r3, [sp, 0x20] | var_20h = r3;
0x000087ca mov r3, sl | r3 = sl;
0x000087cc add r2, pc | r2 = 0x1115e;
0x000087ce blx 0x624c | fcn_0000624c ();
0x000087d2 ldr r1, [sp, 0x20] | r1 = var_20h;
0x000087d4 mov r5, r0 | r5 = r0;
0x000087d6 cmp r1, 0 |
| if (r1 == 0) {
0x000087d8 beq 0x88b8 | goto label_3;
| }
| label_0:
0x000087da add r4, sp, 0x1c | r4 += var_1ch;
0x000087dc mov r0, r4 | r0 = r4;
0x000087de blx 0x5b68 | fcn_00005b68 ();
0x000087e2 ldr r3, [pc, 0x1ac] |
0x000087e4 movs r1, 0 | r1 = 0;
0x000087e6 ldr r2, [pc, 0x1ac] | r2 = *(0x8996);
0x000087e8 add r3, pc | r3 = 0x1117e;
0x000087ea ldr r0, [r3, 4] | r0 = *(0x11182);
0x000087ec str r1, [r3, 4] | *((r3 + 4)) = r1;
0x000087ee ldr.w r3, [sb, r2] | r3 = *((sb + r2));
0x000087f2 mov r1, r3 | r1 = r3;
0x000087f4 str r3, [sp, 0x14] | var_14h = r3;
0x000087f6 blx 0x57e8 | fcn_000057e8 ();
0x000087fa ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 == 0) {
0x000087fc cbz r3, 0x8814 | goto label_2;
| }
0x000087fe ldr r2, [pc, 0x198] |
0x00008800 movs r1, 0x10 | r1 = 0x10;
0x00008802 ldr r0, [pc, 0x198] |
0x00008804 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00008806 add r2, pc | r2 = "/etc/served/pacsio-api/instances_wiegandport.json";
0x00008808 add r0, pc | r0 = 0x111aa;
0x0000880a blx 0x647c | fcn_0000647c ();
0x0000880e mov r0, r4 | r0 = r4;
0x00008810 blx 0x56e0 | get_schema_cache_from_system_registry ()
| }
| label_2:
0x00008814 ldr.w sb, [pc, 0x188] |
0x00008818 movs r1, 0x11 | r1 = 0x11;
0x0000881a add sb, pc | sb = 0x111be;
0x0000881c mov r0, sb | r0 = sb;
0x0000881e blx 0x64ac | r0 = fcn_000064ac ();
0x00008822 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00008824 cbnz r0, 0x8862 | goto label_4;
| }
0x00008826 blx 0x5e28 | fcn_00005e28 ();
0x0000882a ldr r2, [pc, 0x178] |
0x0000882c mov r1, r0 | r1 = r0;
0x0000882e ldr r0, [pc, 0x178] |
0x00008830 mov r3, r4 | r3 = r4;
0x00008832 str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h]");
0x00008834 strh r0, [r1] | *(r1) = r0;
0x00008836 add r2, pc | r2 = 0x111e0;
0x00008838 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x0000883c add r0, pc | r0 = 0x111ea;
0x0000883e blx 0x643c | r0 = domain_osdp_get_type ();
0x00008842 mov r5, r0 | r5 = r0;
| do {
| label_1:
0x00008844 ldr r2, [pc, 0x164] |
0x00008846 ldr r3, [pc, 0x138] | r3 = *(0x8982);
0x00008848 add r2, pc | r2 = 0x111f8;
0x0000884a ldr r3, [r2, r3] | r3 = *(0x111f8);
0x0000884c ldr r2, [r3] | r2 = *(0x111f8);
0x0000884e ldr r3, [sp, 0x24] | r3 = var_24h;
0x00008850 eors r2, r3 | r2 ^= r3;
0x00008852 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00008856 bne.w 0x8976 | goto label_5;
| }
0x0000885a mov r0, r5 | r0 = r5;
0x0000885c add sp, 0x2c |
0x0000885e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00008862 ldr.w sl, [pc, 0x14c] |
0x00008866 movs r1, 0x40 | r1 = 0x40;
0x00008868 ldr r4, [pc, 0x148] |
0x0000886a ldr r2, [pc, 0x14c] |
0x0000886c add sl, pc | sl = 0x11222;
0x0000886e str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00008870 str r0, [sp] | *(sp) = r0;
0x00008872 add r4, pc | r4 = 0x1122a;
0x00008874 mov r3, sl | r3 = sl;
0x00008876 add r2, pc | r2 = 0x11234;
0x00008878 mov r0, r4 | r0 = r4;
0x0000887a blx 0x647c | fcn_0000647c ();
0x0000887e blx 0x5e28 | fcn_00005e28 ();
0x00008882 ldr r2, [pc, 0x138] |
0x00008884 mov r1, r0 | r1 = r0;
0x00008886 ldr r0, [pc, 0x138] |
0x00008888 mov r3, sb | r3 = sb;
0x0000888a strd r7, r8, [sp, 4] | __asm ("strd r7, r8, [var_8h]");
0x0000888e add r2, pc | r2 = 0x11250;
0x00008890 str r6, [sp] | *(sp) = r6;
0x00008892 add r0, pc | r0 = 0x11258;
0x00008894 blx 0x643c | r0 = domain_osdp_get_type ();
0x00008898 mov r5, r0 | r5 = r0;
0x0000889a mov r0, sb | r0 = sb;
0x0000889c blx 0x54f0 | fcn_000054f0 ();
0x0000889e cdp p8, 2, c2, c8, c0, 0 | __asm ("cdp p8, 2, c2, c8, c0, 0");
| if (r1 != 0x40) {
0x000088a2 bne 0x891c | goto label_6;
| }
0x000088a4 ldr r2, [pc, 0x11c] |
0x000088a6 mov r3, sl | r3 = sl;
0x000088a8 mov r0, r4 | r0 = r4;
0x000088aa movs r1, 0x40 | r1 = 0x40;
0x000088ac str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000088b0 add r2, pc | r2 = 0x11278;
0x000088b2 blx 0x647c | fcn_0000647c ();
0x000088b4 stcl p7, c14, [r4, 0x314]! | __asm ("stcl p7, c14, [r4, 0x314]!");
0x000088b6 b 0x8844 |
| } while (1);
| label_3:
0x000088b8 str r1, [sp, 0x14] | var_14h = r1;
0x000088ba blx 0x5e28 | fcn_00005e28 ();
0x000088be ldr r1, [sp, 0x14] | r1 = var_14h;
0x000088c0 mov r2, r5 | r2 = r5;
0x000088c2 mov r3, r1 | r3 = r1;
0x000088c4 ldr r1, [pc, 0x100] |
0x000088c6 add r1, pc | r1 = 0x11292;
0x000088c8 blx 0x59b0 | free (r0);
0x000088cc ldr r2, [pc, 0xfc] |
0x000088ce mov r5, r0 | r5 = r0;
0x000088d0 ldr r0, [pc, 0xfc] |
0x000088d2 movs r1, 0x80 | r1 = 0x80;
0x000088d4 add r2, pc | r2 = 0x112a4;
0x000088d6 add r0, pc | r0 = 0x112aa;
0x000088d8 blx 0x647c | fcn_0000647c ();
0x000088dc b 0x88e2 |
| while (r1 == 0) {
0x000088de ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x000088e0 cbz r4, 0x8930 | goto label_7;
| }
0x000088e2 ldr.w fp, [r4] | fp = *(r4);
0x000088e6 blx 0x60fc | r0 = fcn_000060fc ();
0x000088ea mov r1, r0 | r1 = r0;
0x000088ec mov r0, r5 | r0 = r5;
0x000088ee blx 0x5f94 | fcn_00005f94 ();
0x000088f2 mov r2, fp | r2 = fp;
0x000088f4 mov r3, r7 | r3 = r7;
0x000088f6 movs r1, 0 | r1 = 0;
0x000088f8 strd r6, sl, [sp] | __asm ("strd r6, sl, [sp]");
0x000088fa ldr r0, [r0, 0x20] | r0 = *((r0 + 0x20));
0x000088fc blx 0x5e1c | r0 = fcn_00005e1c ();
| if (r0 != 0) {
0x00008900 cbz r0, 0x8906 |
0x00008902 blx 0x5644 | domain_aadpdevice_set_name ();
| }
0x00008906 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00008908 cmp r1, 0 |
0x0000890a beq 0x88de |
| }
0x0000890c cmp r5, 0 |
| if (r5 == 0) {
0x0000890e beq.w 0x87da | goto label_0;
| }
0x00008912 mov r0, r5 | r0 = r5;
0x00008914 blx 0x5644 | domain_aadpdevice_set_name ();
0x00008916 cdp p9, 9, c9, c6, c8, 0 | __asm ("cdp p9, 9, c9, c6, c8, 0");
0x0000891a b 0x87da | goto label_0;
| label_6:
0x0000891c ldr r2, [pc, 0xb4] |
0x0000891e mov r3, sl | r3 = sl;
0x00008920 mov r0, r4 | r0 = r4;
0x00008922 movs r1, 0x10 | r1 = 0x10;
0x00008924 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00008928 add r2, pc | r2 = 0x11300;
0x0000892a blx 0x647c | fcn_0000647c ();
0x0000892e b 0x8844 | goto label_1;
| label_7:
0x00008930 ldr r3, [pc, 0xa4] |
0x00008932 ldr r2, [pc, 0x60] | r2 = *(0x8996);
0x00008934 add r3, pc | r3 = 0x11310;
0x00008936 ldr r0, [r3, 4] | r0 = *(0x11314);
0x00008938 str r4, [r3, 4] | *((r3 + 4)) = r4;
0x0000893a ldr.w r3, [sb, r2] | r3 = *((sb + r2));
0x0000893e mov r1, r3 | r1 = r3;
0x00008940 str r3, [sp, 0x14] | var_14h = r3;
0x00008942 blx 0x57e8 | fcn_000057e8 ();
0x00008944 vqdmulh.s16 d25, d2, d7 | __asm ("vqdmulh.s16 d25, d2, d7");
0x00008946 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x00008948 cbnz r3, 0x8952 | goto label_8;
| }
0x0000894a cmp r5, 0 |
| if (r5 != 0) {
0x0000894c bne.w 0x8844 | goto label_1;
| }
0x00008950 b 0x8814 | goto label_2;
| label_8:
0x00008952 ldr r0, [pc, 0x88] |
0x00008954 movs r1, 0x10 | r1 = 0x10;
0x00008956 ldr r2, [pc, 0x88] |
0x00008958 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0000895a add r0, pc | r0 = 0x1133c;
0x0000895c add r2, pc | r2 = 0x11342;
0x0000895e blx 0x647c | fcn_0000647c ();
0x00008962 add r0, sp, 0x1c | r0 += var_1ch;
0x00008964 blx 0x56e0 | get_schema_cache_from_system_registry ()
0x00008968 cmp r5, 0 |
| if (r5 == 0) {
0x0000896a beq.w 0x8814 | goto label_2;
| }
0x0000896c add r7, sp, 0x14c | r7 = sp + 0x14c;
0x0000896e mov r0, r5 | r0 = r5;
0x00008970 blx 0x5644 | domain_aadpdevice_set_name ();
0x00008974 b 0x8814 | goto label_2;
| label_5:
0x00008976 blx 0x5fbc | domain_contract_new ();
0x0000897a nop |
0x0000897c uxth r4, r2 | r4 = (int16_t) r2;
0x0000897e movs r0, r0 |
0x00008980 lsls r4, r7, 0x16 | r4 = r7 << 0x16;
0x00008982 movs r0, r0 |
0x00008984 uxth r4, r1 | r4 = (int16_t) r1;
0x00008986 movs r0, r0 |
| if (r4 == 0) {
0x00008988 cbnz r4, 0x89a6 |
0x0000898a movs r0, r0 |
0x0000898c ldrb r0, [r3, 9] | r0 = *((r3 + 9));
0x0000898e movs r0, r0 |
| if (r4 == 0) {
0x00008990 cbnz r4, 0x89a2 |
0x00008992 movs r0, r0 |
0x00008994 lsls r0, r6, 0x16 | r0 = r6 << 0x16;
0x00008996 movs r0, r0 |
0x00008998 ldrb r2, [r0, 9] | r2 = *((r0 + 9));
0x0000899a movs r0, r0 |
0x0000899c ldr r4, [r2, 0x6c] | r4 = *((r2 + 0x6c));
0x0000899e movs r0, r0 |
0x000089a0 ldrb r2, [r2, 9] | r2 = *((r2 + 9));
| }
0x000089a2 movs r0, r0 |
0x000089a4 ldrb r2, [r3, 0xa] | r2 = *((r3 + 0xa));
| }
0x000089a6 movs r0, r0 |
0x000089a8 ldrb r0, [r5, 7] | r0 = *((r5 + 7));
0x000089aa movs r0, r0 |
| if (r0 != 0) {
0x000089ac cbz r0, 0x89ec |
0x000089ae movs r0, r0 |
0x000089b0 strb r0, [r5, 8] | *((r5 + 8)) = r0;
0x000089b2 movs r0, r0 |
0x000089b4 ldr r2, [r5, 0x64] | r2 = *((r5 + 0x64));
0x000089b6 movs r0, r0 |
0x000089b8 ldrb r2, [r4, 8] | r2 = *((r4 + 8));
0x000089ba movs r0, r0 |
0x000089bc ldrb r2, [r0, 9] | r2 = *((r0 + 9));
0x000089be movs r0, r0 |
0x000089c0 ldrb r2, [r2, 6] | r2 = *((r2 + 6));
0x000089c2 movs r0, r0 |
0x000089c4 ldrb r4, [r1, 9] | r4 = *((r1 + 9));
0x000089c6 movs r0, r0 |
0x000089c8 strb r2, [r0, 0x11] | *((r0 + 0x11)) = r2;
0x000089ca movs r0, r0 |
0x000089cc ldrb r0, [r3, 5] | r0 = *((r3 + 5));
0x000089ce movs r0, r0 |
0x000089d0 ldr r6, [r0, 0x60] | r6 = *((r0 + 0x60));
0x000089d2 movs r0, r0 |
0x000089d4 ldrb r0, [r7, 7] | r0 = *((r7 + 7));
0x000089d6 movs r0, r0 |
0x000089d8 invalid |
| }
0x000089ec mov r4, r0 | r4 = r0;
0x000089ee movs r5, 0xc | r5 = 0xc;
0x000089f0 ldr r0, [pc, 0x24] |
0x000089f2 add r0, pc | r0 = 0x1140e;
0x000089f4 blx 0x5514 | fcn_00005514 ();
0x000089f8 ldr r3, [pc, 0x20] |
0x000089fa movs r2, 0 | r2 = 0;
0x000089fc mov r1, r0 | r1 = r0;
0x000089fe str r5, [sp] | *(sp) = r5;
0x00008a00 mov r0, r4 | r0 = r4;
0x00008a02 add r3, pc | r3 = 0x11422;
0x00008a04 strd r3, r2, [sp, 4] | __asm ("strd r3, r2, [var_8h]");
0x00008a08 movs r2, 0xa0 | r2 = 0xa0;
0x00008a0a ldr r3, [pc, 0x14] |
0x00008a0c add r3, pc | r3 = 0x11432;
0x00008a0e blx 0x6080 | fcn_00006080 ();
0x00008a12 add sp, 0x14 |
0x00008a14 pop {r4, r5, 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/libpacsio-api.so.0.0.55 @ 0x6dfc */
| #include <stdint.h>
|
; (fcn) sym.pacsio_helper_read_io2d_conf_as_ipc_data () | void pacsio_helper_read_io2d_conf_as_ipc_data (int16_t arg_f8h, int16_t arg1) {
| int16_t var_38h;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
0x00006dfc blmi 0xfeb198b0 | __asm ("blmi aav.0x0000cc32");
0x00006e00 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00006e04 movs r6, 0 | r6 = 0;
0x00006e06 add r2, pc | r2 += pc;
0x00006e08 sub sp, 0x2c |
0x00006e0a mov r4, r0 | r4 = r0;
0x00006e0c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00006e0e ldr r3, [r3] | r3 = *(r3);
0x00006e10 str r3, [sp, 0x24] | var_24h = r3;
0x00006e12 mov.w r3, 0 | r3 = 0;
0x00006e16 str r6, [sp, 0x18] | var_18h = r6;
0x00006e18 blx 0x56bc | g_strdup ();
0x00006e1c movs r1, 0x11 | r1 = 0x11;
0x00006e1e mov r5, r0 | r5 = r0;
0x00006e20 mov r0, r4 | r0 = r4;
0x00006e22 str r6, [sp, 0x1c] | var_1ch = r6;
0x00006e24 blx 0x64ac | r0 = fcn_000064ac ();
0x00006e28 cmp r0, 0 |
| if (r0 == 0) {
0x00006e2a beq.w 0x7080 | goto label_10;
| }
0x00006e2e add r3, sp, 0x18 | r3 += var_18h;
0x00006e30 movs r2, 1 | r2 = 1;
0x00006e32 mov r1, r4 | r1 = r4;
0x00006e34 mov r0, r5 | r0 = r5;
0x00006e36 blx 0x5fb0 | resource_get_collection_name ();
0x00006e38 ldm.w ip!, {fp, sp} | fp = *(ip!);
| sp = *((ip! + 4));
| if (r2 == 1) {
0x00006e3c beq.w 0x704c | goto label_11;
| }
0x00006e40 add r1, sp, 0x1c | r1 += var_1ch;
0x00006e42 mov r0, r5 | r0 = r5;
0x00006e44 blx 0x5edc | r0 = fcn_00005edc ();
0x00006e48 mov sb, r0 | sb = r0;
0x00006e4a cmp r0, 0 |
| if (r0 == 0) {
0x00006e4c beq.w 0x7094 | goto label_12;
| }
0x00006e50 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00006e52 mov r7, r3 | r7 = r3;
0x00006e54 cmp r3, 0 |
| if (r3 == 0) {
0x00006e56 beq 0x6f52 | goto label_6;
| }
0x00006e58 ldr r2, [pc, 0x258] |
0x00006e5a mov sl, r6 | sl = r6;
0x00006e5c ldr.w r8, [pc, 0x258] |
0x00006e60 subs r6, r0, 4 | r6 = r0 - 4;
0x00006e62 mov r7, sl | r7 = sl;
0x00006e64 str r0, [sp, 0x14] | var_14h = r0;
0x00006e66 add r2, pc | r2 = 0xdf1e;
0x00006e68 str r2, [sp, 0xc] | var_ch_2 = r2;
0x00006e6a add r8, pc | r8 = 0xdf26;
0x00006e6c ldr r2, [pc, 0x24c] |
0x00006e6e add r2, pc | r2 = 0xdf2e;
0x00006e70 str r2, [sp, 0x10] | var_10h = r2;
0x00006e72 b 0x6f16 | goto label_13;
| label_0:
0x00006e74 movs r3, 0 | r3 = 0;
0x00006e76 mov r2, r8 | r2 = r8;
0x00006e78 mov r1, r4 | r1 = r4;
0x00006e7a mov r0, r5 | r0 = r5;
0x00006e7c blx 0x5c9c | r0 = fcn_00005c9c ();
0x00006e80 mov sb, r0 | sb = r0;
0x00006e82 cmp r0, 0 |
| if (r0 == 0) {
0x00006e84 beq 0x6f86 | goto label_14;
| }
0x00006e86 ldr r2, [pc, 0x238] |
0x00006e88 movs r3, 0 | r3 = 0;
0x00006e8a mov r1, r4 | r1 = r4;
0x00006e8c mov r0, r5 | r0 = r5;
0x00006e8e add r2, pc | r2 = 0xdf54;
0x00006e90 blx 0x5c9c | r0 = fcn_00005c9c ();
0x00006e94 cmp r0, 0 |
| if (r0 == 0) {
0x00006e96 beq.w 0x700a | goto label_15;
| }
0x00006e9a ldr r2, [pc, 0x228] |
0x00006e9c add r2, pc | r2 = 0xdf66;
| label_3:
0x00006e9e ldr r1, [pc, 0x228] |
0x00006ea0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00006ea2 add r1, pc | r1 = 0xdf70;
0x00006ea4 blx 0x5450 | fcn_00005450 ();
0x00006ea6 invalid |
0x00006eaa movs r3, 0 | r3 = 0;
0x00006eac mov r1, r4 | r1 = r4;
0x00006eae mov r0, r5 | r0 = r5;
0x00006eb0 add r2, pc | r2 += pc;
0x00006eb2 blx 0x55c4 | r0 = fcn_000055c4 ();
0x00006eb6 mov fp, r0 |
| if (r0 != 0) {
0x00006eb8 cbz r0, 0x6edc |
0x00006eba movs r2, 0 | r2 = 0;
0x00006ebc mov.w r1, -1 | r1 = -1;
0x00006ec0 blx 0x53f8 | r0 = g_utf8_validate ();
0x00006ec4 cmp r0, 0 |
| if (r0 == 0) {
0x00006ec6 beq.w 0x7010 | goto label_16;
| }
0x00006ec8 strh r3, [r4, 4] | *((r4 + 4)) = r3;
0x00006eca ldr r1, [pc, 0x204] |
0x00006ecc mov r2, fp | r2 = fp;
0x00006ece ldr r0, [sp, 0x20] | r0 = var_20h;
0x00006ed0 add r1, pc | r1 = 0xdfa6;
0x00006ed2 blx 0x5450 | fcn_00005450 ();
0x00006ed4 invalid |
| label_4:
0x00006ed6 mov r0, fp | r0 = fp;
0x00006ed8 blx 0x5438 | fcn_00005438 ();
| }
0x00006edc ldr.w fp, [pc, 0x1f4] |
0x00006ee0 movs r3, 0 | r3 = 0;
0x00006ee2 mov r1, r4 | r1 = r4;
0x00006ee4 mov r0, r5 | r0 = r5;
0x00006ee6 add fp, pc | fp = 0xdfbe;
0x00006ee8 mov r2, fp | r2 = fp;
0x00006eea blx 0x54b4 | r0 = fcn_000054b4 ();
0x00006eee cmp r0, 0 |
| if (r0 != 0) {
0x00006ef0 bne.w 0x702e | goto label_17;
| }
| label_1:
0x00006ef4 ldr r2, [sp, 0x20] | r2 = var_20h;
| if (r2 != 0) {
0x00006ef6 cbz r2, 0x6f0c |
0x00006ef8 cmp r7, 0 |
| if (r7 == 0) {
0x00006efa beq.w 0x7024 | goto label_18;
| }
| label_5:
0x00006efe mov r0, r7 | r0 = r7;
0x00006f00 mov r1, r4 | r1 = r4;
0x00006f02 blx 0x5928 | fcn_00005928 ();
0x00006f04 ldc p8, c10, [r2, -0x20] | __asm ("ldc p8, c10, [r2, -0x20]");
0x00006f08 blx 0x5d2c | fcn_00005d2c ();
| }
0x00006f0c ldr r3, [sp, 0x1c] | r3 = var_1ch;
| do {
0x00006f0e add.w sl, sl, 1 | sl++;
0x00006f12 cmp r3, sl |
| if (r3 < sl) {
0x00006f14 bls 0x6f4e | goto label_19;
| }
| label_13:
0x00006f16 ldr r4, [r6, 4]! | r4 = *((r6 += 4));
0x00006f1a cmp r4, 0 |
0x00006f1c beq 0x6f0e |
| } while (r4 == 0);
0x00006f1e blx 0x5898 | fcn_00005898 ();
0x00006f22 movs r3, 0 | r3 = 0;
0x00006f24 str r0, [sp, 0x20] | var_20h = r0;
0x00006f26 mov r2, r8 | r2 = r8;
0x00006f28 mov r1, r4 | r1 = r4;
0x00006f2a mov r0, r5 | r0 = r5;
0x00006f2c blx 0x54b4 | r0 = fcn_000054b4 ();
0x00006f30 cmp r0, 0 |
| if (r0 != 0) {
0x00006f32 bne 0x6e74 | goto label_0;
| }
0x00006f34 ldr r3, [pc, 0x1a0] |
0x00006f36 movs r1, 0x10 | r1 = 0x10;
0x00006f38 ldr r2, [pc, 0x1a0] |
0x00006f3a ldr r0, [pc, 0x1a4] |
0x00006f3c add r3, pc | r3 = 0xe018;
0x00006f3e add r2, pc | r2 = 0xe01e;
0x00006f40 add r0, pc | r0 = 0xe026;
0x00006f42 blx 0x647c | fcn_0000647c ();
0x00006f46 add r0, sp, 0x20 | r0 += var_20h;
0x00006f48 blx 0x5d2c | fcn_00005d2c ();
0x00006f4c b 0x6ef4 | goto label_1;
| label_19:
0x00006f4e ldr.w sb, [sp, 0x14] | sb = var_14h;
| label_6:
0x00006f52 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x00006f54 cbz r3, 0x6f5c |
0x00006f56 add r0, sp, 0x18 | r0 += var_18h;
0x00006f58 blx 0x56e0 | get_schema_cache_from_system_registry ()
| }
0x00006f5c mov r0, sb | r0 = sb;
0x00006f5e blx 0x62c4 | fcn_000062c4 ();
0x00006f62 mov r0, r5 | r0 = r5;
0x00006f64 blx 0x6294 | fcn_00006294 ();
0x00006f68 ldr r2, [pc, 0x178] |
0x00006f6a ldr r3, [pc, 0x144] | r3 = *(0x70b2);
0x00006f6c add r2, pc | r2 = 0xe054;
0x00006f6e ldr r3, [r2, r3] | r3 = *(0xe054);
0x00006f70 ldr r2, [r3] | r2 = *(0xe054);
0x00006f72 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006f74 eors r2, r3 | r2 ^= r3;
0x00006f76 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00006f7a bne.w 0x70a8 | goto label_20;
| }
0x00006f7e mov r0, r7 | r0 = r7;
0x00006f80 add sp, 0x2c |
0x00006f82 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x00006f86 ldrd r2, r1, [sp, 0xc] | __asm ("ldrd r2, r1, [var_ch_2]");
0x00006f8a ldr r0, [sp, 0x20] | r0 = var_20h;
0x00006f8c blx 0x5450 | fcn_00005450 ();
0x00006f90 ldr r2, [pc, 0x154] |
0x00006f92 mov r3, sb | r3 = sb;
0x00006f94 mov r1, r4 | r1 = r4;
0x00006f96 mov r0, r5 | r0 = r5;
0x00006f98 add r2, pc | r2 = 0xe084;
0x00006f9a blx 0x55c4 | r0 = fcn_000055c4 ();
0x00006f9e mov fp, r0 |
| if (r0 != 0) {
0x00006fa0 cbz r0, 0x6fc0 |
0x00006fa2 mov r2, sb | r2 = sb;
0x00006fa4 mov.w r1, -1 | r1 = -1;
0x00006fa8 blx 0x53f8 | r0 = g_utf8_validate ();
| if (r0 == 0) {
0x00006fac cbz r0, 0x6ff6 | goto label_21;
| }
0x00006fae ldr r1, [pc, 0x13c] |
0x00006fb0 mov r2, fp | r2 = fp;
0x00006fb2 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00006fb4 add r1, pc | r1 = 0xe0a6;
0x00006fb6 blx 0x5450 | fcn_00005450 ();
| label_2:
0x00006fba mov r0, fp | r0 = fp;
0x00006fbc blx 0x5438 | fcn_00005438 ();
| }
0x00006fc0 ldr.w fp, [pc, 0x12c] |
0x00006fc4 movs r3, 0 | r3 = 0;
0x00006fc6 mov r1, r4 | r1 = r4;
0x00006fc8 mov r0, r5 | r0 = r5;
0x00006fca add fp, pc | fp = 0xe0be;
0x00006fcc mov r2, fp | r2 = fp;
0x00006fce blx 0x54b4 | r0 = fcn_000054b4 ();
0x00006fd2 cmp r0, 0 |
| if (r0 == 0) {
0x00006fd4 beq 0x6ef4 | goto label_1;
| }
0x00006fd6 mov r2, fp | r2 = fp;
0x00006fd8 movs r3, 0 | r3 = 0;
0x00006fda mov r1, r4 | r1 = r4;
0x00006fdc mov r0, r5 | r0 = r5;
0x00006fde blx 0x5c9c | r0 = fcn_00005c9c ();
0x00006fe2 cmp r0, 0 |
| if (r0 != 0) {
0x00006fe4 bne 0x7074 | goto label_22;
| }
0x00006fe6 ldr r2, [pc, 0x10c] |
0x00006fe8 add r2, pc | r2 = 0xe0e2;
| label_7:
0x00006fea ldr r1, [pc, 0x10c] |
0x00006fec ldr r0, [sp, 0x20] | r0 = var_20h;
0x00006fee add r1, pc | r1 = 0xe0ec;
0x00006ff0 blx 0x5450 | fcn_00005450 ();
0x00006ff4 b 0x6ef4 | goto label_1;
| label_21:
0x00006ff6 ldr r3, [pc, 0x104] |
0x00006ff8 movs r1, 0x10 | r1 = 0x10;
0x00006ffa ldr r2, [pc, 0x104] |
0x00006ffc ldr r0, [pc, 0x104] |
0x00006ffe add r3, pc | r3 = 0xe100;
0x00007000 add r2, pc | r2 = 0xe106;
0x00007002 add r0, pc | r0 = 0xe10a;
0x00007004 blx 0x647c | fcn_0000647c ();
0x00007008 b 0x6fba | goto label_2;
| label_15:
0x0000700a ldr r2, [pc, 0xfc] |
0x0000700c add r2, pc | r2 = 0xe11a;
0x0000700e b 0x6e9e | goto label_3;
| label_16:
0x00007010 ldr r3, [pc, 0xf8] |
0x00007012 movs r1, 0x10 | r1 = 0x10;
0x00007014 ldr r2, [pc, 0xf8] |
0x00007016 ldr r0, [pc, 0xfc] |
0x00007018 add r3, pc | r3 = 0xe128;
0x0000701a add r2, pc | r2 = 0xe12e;
0x0000701c add r0, pc | r0 = 0xe136;
0x0000701e blx 0x647c | fcn_0000647c ();
0x00007022 b 0x6ed6 | goto label_4;
| label_18:
0x00007024 blx 0x5898 | fcn_00005898 ();
0x00007028 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000702a mov r7, r0 | r7 = r0;
0x0000702c b 0x6efe | goto label_5;
| label_17:
0x0000702e mov r2, fp | r2 = fp;
0x00007030 movs r3, 0 | r3 = 0;
0x00007032 mov r1, r4 | r1 = r4;
0x00007034 mov r0, r5 | r0 = r5;
0x00007036 blx 0x5c9c | r0 = fcn_00005c9c ();
| if (r0 != 0) {
0x0000703a cbnz r0, 0x706e | goto label_23;
| }
0x0000703c ldr r2, [pc, 0xd8] |
0x0000703e add r2, pc | r2 = 0xe15a;
| do {
0x00007040 ldr r1, [pc, 0xd8] |
0x00007042 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00007044 add r1, pc | r1 = 0xe164;
0x00007046 blx 0x5450 | fcn_00005450 ();
0x0000704a b 0x6ef4 | goto label_1;
| label_11:
0x0000704c ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 == 0) {
0x0000704e cbz r3, 0x707a | goto label_24;
| }
0x00007050 ldr r0, [r3, 8] | r0 = *((r3 + 8));
| label_8:
0x00007052 ldr r3, [pc, 0xcc] |
0x00007054 movs r1, 0x10 | r1 = 0x10;
0x00007056 ldr r2, [pc, 0xcc] |
0x00007058 str r0, [sp] | *(sp) = r0;
0x0000705a ldr r0, [pc, 0xcc] |
0x0000705c add r3, pc | r3 = 0xe182;
0x0000705e add r2, pc | r2 = 0xe188;
0x00007060 add r0, pc | r0 = 0xe18e;
0x00007062 blx 0x647c | fcn_0000647c ();
| label_9:
0x00007066 mov.w sb, 0 | sb = 0;
0x0000706a mov r7, sb | r7 = sb;
0x0000706c b 0x6f52 | goto label_6;
| label_23:
0x0000706e ldr r2, [pc, 0xbc] |
0x00007070 add r2, pc | r2 = 0xe1a2;
0x00007072 b 0x7040 |
| } while (1);
| label_22:
0x00007074 ldr r2, [pc, 0xb8] |
0x00007076 add r2, pc | r2 = 0xe1aa;
0x00007078 b 0x6fea | goto label_7;
| label_24:
0x0000707a ldr r0, [pc, 0xb8] |
0x0000707c add r0, pc | r0 = 0xe1b6;
0x0000707e b 0x7052 | goto label_8;
| label_10:
0x00007080 ldr r3, [pc, 0xb4] |
0x00007082 movs r1, 0x40 | r1 = 0x40;
0x00007084 ldr r2, [pc, 0xb4] |
0x00007086 ldr r0, [pc, 0xb8] |
0x00007088 add r3, pc | r3 = 0xe1c4;
0x0000708a add r2, pc | r2 = 0xe1ca;
0x0000708c add r0, pc | r0 = 0xe1d2;
0x0000708e blx 0x647c | fcn_0000647c ();
0x00007092 b 0x7066 | goto label_9;
| label_12:
0x00007094 ldr r3, [pc, 0xac] |
0x00007096 movs r1, 0x10 | r1 = 0x10;
0x00007098 ldr r2, [pc, 0xac] |
0x0000709a ldr r0, [pc, 0xb0] |
0x0000709c add r3, pc | r3 = 0xe1e4;
0x0000709e add r2, pc | r2 = 0xe1ea;
0x000070a0 add r0, pc | r0 = 0xe1f2;
0x000070a2 blx 0x647c | fcn_0000647c ();
0x000070a6 b 0x7066 | goto label_9;
| label_20:
0x000070a8 blx 0x5fbc | domain_contract_new ();
0x000070ac ldm r4, {r1, r4, r5} | r1 = *(r4);
| r4 = *((r4 + 4));
| r5 = *((r4 + 8));
0x000070ae movs r0, r0 |
0x000070b0 lsls r4, r7, 0x16 | r4 = r7 << 0x16;
0x000070b2 movs r0, r0 |
0x000070b4 str r2, [sp, 0xf8] | *(arg_f8h) = r2;
0x000070b6 movs r0, r0 |
0x000070b8 ldrh r6, [r5, 0x18] | r6 = *((r5 + 0x18));
0x000070ba movs r0, r0 |
0x000070bc ldrh r2, [r5, 0x1a] | r2 = *((r5 + 0x1a));
0x000070be movs r0, r0 |
0x000070c0 ldrh r6, [r6, 0x18] | r6 = *((r6 + 0x18));
0x000070c2 movs r0, r0 |
0x000070c4 ldrh r4, [r3, 0x12] | r4 = *((r3 + 0x12));
0x000070c6 movs r0, r0 |
0x000070c8 ldrh r6, [r6, 0x18] | r6 = *((r6 + 0x18));
0x000070ca movs r0, r0 |
0x000070cc ldrh r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x000070ce movs r0, r0 |
0x000070d0 ldrh r4, [r3, 0x18] | r4 = *((r3 + 0x18));
0x000070d2 movs r0, r0 |
0x000070d4 ldrh r6, [r0, 0x1a] | r6 = *((r0 + 0x1a));
0x000070d6 movs r0, r0 |
0x000070d8 ldrh r0, [r3, 0x1a] | r0 = *((r3 + 0x1a));
0x000070da movs r0, r0 |
0x000070dc ldrh r2, [r4, 0x12] | r2 = *((r4 + 0x12));
0x000070de movs r0, r0 |
0x000070e0 strh r4, [r3, 0x3c] | *((r3 + 0x3c)) = r4;
0x000070e2 movs r0, r0 |
0x000070e4 ldm r2, {r2, r3, r6, r7} | r2 = *(r2);
| r3 = *((r2 + 4));
| r6 = *((r2 + 8));
| r7 = *((r2 + 12));
0x000070e6 movs r0, r0 |
0x000070e8 ldrh r0, [r7, 0x14] | r0 = *((r7 + 0x14));
0x000070ea movs r0, r0 |
0x000070ec ldrh r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x000070ee movs r0, r0 |
0x000070f0 ldrh r6, [r1, 0x16] | r6 = *((r1 + 0x16));
0x000070f2 movs r0, r0 |
0x000070f4 ldrh r0, [r7, 8] | r0 = *((r7 + 8));
0x000070f6 movs r0, r0 |
0x000070f8 ldrh r6, [r1, 0x12] | r6 = *((r1 + 0x12));
0x000070fa movs r0, r0 |
0x000070fc ldrh r6, [r2, 0x14] | r6 = *((r2 + 0x14));
0x000070fe movs r0, r0 |
0x00007100 ldrh r4, [r3, 0x12] | r4 = *((r3 + 0x12));
0x00007102 movs r0, r0 |
0x00007104 strh r2, [r3, 0x36] | *((r3 + 0x36)) = r2;
0x00007106 movs r0, r0 |
0x00007108 ldrh r0, [r7, 6] | r0 = *((r7 + 6));
0x0000710a movs r0, r0 |
0x0000710c ldrh r4, [r7, 0x12] | r4 = *((r7 + 0x12));
0x0000710e movs r0, r0 |
0x00007110 ldrh r2, [r3, 0xe] | r2 = *((r3 + 0xe));
0x00007112 movs r0, r0 |
0x00007114 strh r0, [r0, 0x36] | *((r0 + 0x36)) = r0;
0x00007116 movs r0, r0 |
0x00007118 ldrh r2, [r4, 6] | r2 = *((r4 + 6));
0x0000711a movs r0, r0 |
0x0000711c ldrh r0, [r7, 0xe] | r0 = *((r7 + 0xe));
0x0000711e movs r0, r0 |
0x00007120 ldrh r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x00007122 movs r0, r0 |
0x00007124 ldrh r6, [r5, 6] | r6 = *((r5 + 6));
0x00007126 movs r0, r0 |
0x00007128 strh r4, [r7, 0x32] | *((r7 + 0x32)) = r4;
0x0000712a movs r0, r0 |
0x0000712c ldrh r4, [r4, 4] | r4 = *((r4 + 4));
0x0000712e movs r0, r0 |
0x00007130 ldrh r6, [r3, 4] | r6 = *((r3 + 4));
0x00007132 movs r0, r0 |
0x00007134 ldrh r4, [r5, 2] | r4 = *((r5 + 2));
0x00007136 movs r0, r0 |
0x00007138 ldrh r4, [r1, 0x10] | r4 = *((r1 + 0x10));
0x0000713a movs r0, r0 |
0x0000713c ldrh r6, [r4, 4] | r6 = *((r4 + 4));
0x0000713e movs r0, r0 |
0x00007140 strh r0, [r2, 0x32] | *((r2 + 0x32)) = r0;
0x00007142 movs r0, r0 |
0x00007144 ldrh r0, [r7, 0xe] | r0 = *((r7 + 0xe));
0x00007146 movs r0, r0 |
0x00007148 ldrh r6, [r1, 6] | r6 = *((r1 + 6));
0x0000714a movs r0, r0 |
0x0000714c strh r4, [r7, 0x30] | *((r7 + 0x30)) = r4;
0x0000714e movs r0, 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/libpacsio-api.so.0.0.55 @ 0xe838 */
| #include <stdint.h>
|
; (fcn) sym.purge_restorer_init () | void purge_restorer_init (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_14h;
| int32_t var_0h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x0000e838 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000e83c mov r4, r0 | r4 = r0;
0x0000e83e ldr r2, [r0] | r2 = *(r0);
0x0000e840 mov r7, r1 | r7 = r1;
0x0000e842 sub sp, 0x34 |
0x0000e844 movs r3, 0 | r3 = 0;
0x0000e846 ldr r0, [pc, 0x26c] |
0x0000e848 ldr r1, [pc, 0x26c] | r1 = *(0xeab8);
0x0000e84a ldr.w sb, [pc, 0x270] |
0x0000e84e add r0, pc | r0 = 0x1d308;
0x0000e850 ldr.w r8, [pc, 0x26c] |
0x0000e854 ldr r1, [r0, r1] |
0x0000e856 ldr r0, [pc, 0x26c] |
0x0000e858 add sb, pc | sb = 0x1d31a;
0x0000e85a add r8, pc | r8 = 0x1d31e;
0x0000e85c ldr r1, [r1] | r1 = *(0x1d308);
0x0000e85e str r1, [sp, 0x2c] | var_2ch = r1;
0x0000e860 mov.w r1, 0 | r1 = 0;
0x0000e864 mov r1, sb | r1 = sb;
0x0000e866 add r0, pc | r0 = 0x1d330;
0x0000e868 str r3, [sp, 0x14] | var_14h = r3;
0x0000e86a blx 0x621c | fcn_0000621c ();
0x0000e86e movs r1, 4 | r1 = 4;
0x0000e870 mov r5, r0 | r5 = r0;
0x0000e872 mov r0, sb | r0 = sb;
0x0000e874 blx 0x64ac | r0 = fcn_000064ac ();
0x0000e878 cbz r0, 0xe8d4 |
| while (1) {
0x0000e87a mov r0, r5 | r0 = r5;
0x0000e87c blx 0x62e8 | r0 = fcn_000062e8 ();
0x0000e880 mov r6, r0 | r6 = r0;
0x0000e882 mov r0, r5 | r0 = r5;
0x0000e884 blx 0x5438 | fcn_00005438 ();
0x0000e888 ldr r5, [sp, 0x14] | r5 = var_14h;
0x0000e88a str r6, [r4, 0x18] | *((r4 + 0x18)) = r6;
0x0000e88c cmp r5, 0 |
| if (r5 == 0) {
0x0000e88e beq 0xe904 | goto label_4;
| }
0x0000e890 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0000e892 mov.w r1, 0x100 | r1 = 0x100;
0x0000e896 ldr r3, [pc, 0x230] |
0x0000e898 add r5, sp, 0x14 | r5 += var_14h;
0x0000e89a ldr r2, [pc, 0x230] |
0x0000e89c str r0, [sp] | *(sp) = r0;
0x0000e89e ldr r0, [pc, 0x230] |
0x0000e8a0 add r3, pc | r3 = 0x1d36e;
0x0000e8a2 add r2, pc | r2 = 0x1d374;
0x0000e8a4 add r0, pc | r0 = 0x1d37a;
0x0000e8a6 blx 0x647c | fcn_0000647c ();
| label_1:
0x0000e8aa movs r6, 0 | r6 = 0;
0x0000e8ac movs r7, 1 | r7 = 1;
| label_0:
0x0000e8ae mov r0, r5 | r0 = r5;
0x0000e8b0 blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000e8b4 ldr r2, [pc, 0x21c] |
0x0000e8b6 ldr r3, [pc, 0x200] | r3 = *(0xeaba);
0x0000e8b8 str r6, [r4, 0x2c] | *((r4 + 0x2c)) = r6;
0x0000e8ba add r2, pc | r2 = 0x1d392;
0x0000e8bc ldr r3, [r2, r3] | r3 = *(0x1d392);
0x0000e8be ldr r2, [r3] | r2 = *(0x1d392);
0x0000e8c0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000e8c2 eors r2, r3 | r2 ^= r3;
0x0000e8c4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e8c8 bne.w 0xeaae | goto label_5;
| }
0x0000e8cc mov r0, r7 | r0 = r7;
0x0000e8ce add sp, 0x34 |
0x0000e8d0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0000e8d4 mov r6, r0 | r6 = r0;
0x0000e8d6 ldr r3, [pc, 0x200] |
0x0000e8d8 ldr r2, [pc, 0x200] |
0x0000e8da movs r1, 0x10 | r1 = 0x10;
0x0000e8dc ldr r0, [pc, 0x200] |
0x0000e8de add r3, pc | r3 = 0x1d3bc;
0x0000e8e0 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0000e8e4 add r2, pc | r2 = 0x1d3c4;
0x0000e8e6 add r0, pc | r0 = 0x1d3ca;
0x0000e8e8 blx 0x647c | fcn_0000647c ();
0x0000e8ec mov r0, sb | r0 = sb;
0x0000e8ee blx 0x62e8 | fcn_000062e8 ();
0x0000e8f2 mov r2, r6 | r2 = r6;
0x0000e8f4 mov sb, r0 | sb = r0;
0x0000e8f6 mov r1, r6 | r1 = r6;
0x0000e8f8 blx 0x5600 | fcn_00005600 ();
0x0000e8fc mov r0, sb | r0 = sb;
0x0000e8fe blx 0x5644 | domain_aadpdevice_set_name ();
0x0000e902 b 0xe87a |
| }
| label_4:
0x0000e904 add.w fp, sp, 0x18 |
0x0000e908 add.w sb, sp, 0x1c | sb += var_1ch;
0x0000e90c mov r0, r6 | r0 = r6;
0x0000e90e mov r3, r5 | r3 = r5;
0x0000e910 mov r2, fp | r2 = fp;
0x0000e912 mov r1, r5 | r1 = r5;
0x0000e914 str r5, [sp] | *(sp) = r5;
0x0000e916 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x0000e91a strd r5, r5, [sp, 0x18] | __asm ("strd r5, r5, [var_1ch]");
0x0000e91e blx 0x6488 | r0 = fcn_00006488 ();
| if (r0 != 0) {
0x0000e922 cbz r0, 0xe986 |
0x0000e924 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000e926 blx 0x6234 | r0 = fcn_00006234 ();
0x0000e92a mov sl, r0 | sl = r0;
0x0000e92c ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000e92e blx 0x5438 | fcn_00005438 ();
0x0000e932 mov r0, sb | r0 = sb;
0x0000e934 blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000e938 str.w sl, [r4, 0x1c] | __asm ("str.w sl, [r4, 0x1c]");
0x0000e93c cmp.w sl, 0 |
| if (sl == 0) {
0x0000e940 beq 0xe9ae | goto label_2;
| }
0x0000e942 mov r0, r7 | r0 = r7;
0x0000e944 bl 0xe038 | r0 = fcn_0000e038 ();
0x0000e948 mov r6, r0 | r6 = r0;
0x0000e94a cmp r0, 0 |
| if (r0 == 0) {
0x0000e94c beq 0xea26 | goto label_6;
| }
0x0000e94e ldr r1, [pc, 0x194] |
0x0000e950 mov r2, r5 | r2 = r5;
0x0000e952 mov r0, sl | r0 = sl;
0x0000e954 add r1, pc | r1 = 0x1d43e;
0x0000e956 blx 0x6388 | r0 = domain_rs485port_set_requested_baudrate ();
0x0000e95a mov r1, r0 | r1 = r0;
0x0000e95c mov r0, r6 | r0 = r6;
0x0000e95e cmp r1, 0 |
| if (r1 == 0) {
0x0000e960 beq 0xea22 | goto label_7;
| }
0x0000e962 blx 0x5698 | r0 = domain_resource_get_id ();
0x0000e966 cmp r0, 0 |
| if (r0 == 0) {
0x0000e968 beq.w 0xea94 | goto label_8;
| }
0x0000e96c mov r0, r6 | r0 = r6;
0x0000e96e movs r7, 2 | r7 = 2;
0x0000e970 blx 0x5438 | fcn_00005438 ();
0x0000e974 ldr r1, [pc, 0x170] |
0x0000e976 movs r6, 1 | r6 = 1;
0x0000e978 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0000e97a add r5, sp, 0x14 | r5 += var_14h;
0x0000e97c add r1, pc | r1 = 0x1d468;
0x0000e97e blx 0x56a4 | g_key_file_new ();
0x0000e982 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0000e984 b 0xe8ae | goto label_0;
| }
0x0000e986 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000e988 cmp r3, 0 |
| if (r3 == 0) {
0x0000e98a beq.w 0xeaa8 | goto label_9;
| }
0x0000e98e ldr r3, [r3, 8] | r3 = *((r3 + 8));
| label_3:
0x0000e990 str r3, [sp] | *(sp) = r3;
0x0000e992 movs r1, 0x10 | r1 = 0x10;
0x0000e994 ldr r3, [pc, 0x154] |
0x0000e996 ldr r2, [pc, 0x158] |
0x0000e998 ldr r0, [pc, 0x158] |
0x0000e99a add r3, pc | r3 = 0x1d48a;
0x0000e99c add r2, pc | r2 = 0x1d492;
0x0000e99e add r0, pc | r0 = 0x1d496;
0x0000e9a0 blx 0x647c | fcn_0000647c ();
0x0000e9a4 mov r0, sb | r0 = sb;
0x0000e9a6 blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000e9aa movs r3, 0 | r3 = 0;
0x0000e9ac str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| do {
| label_2:
0x0000e9ae ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
| if (r0 != 0) {
0x0000e9b0 cbz r0, 0xe9c4 |
0x0000e9b2 ldr r3, [pc, 0x144] | r3 = *(0xeafa);
0x0000e9b4 movs r2, 0 | r2 = 0;
0x0000e9b6 str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
0x0000e9b8 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0000e9bc mov r1, r3 | r1 = r3;
0x0000e9be str r3, [sp, 0xc] | var_ch = r3;
0x0000e9c0 blx 0x57e8 | fcn_000057e8 ();
| }
0x0000e9c4 blx 0x5898 | fcn_00005898 ();
0x0000e9c8 movs r3, 0 | r3 = 0;
0x0000e9ca str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x0000e9cc str r3, [sp, 0x18] | var_18h = r3;
0x0000e9ce ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000e9d0 str r3, [sp, 0x28] | var_28h = r3;
0x0000e9d2 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0000e9d4 ldr r5, [r4, 0x24] | r5 = *((r4 + 0x24));
0x0000e9d6 str r7, [sp, 0x1c] | var_1ch = r7;
0x0000e9d8 str r3, [sp, 0x24] | var_24h = r3;
0x0000e9da str r0, [sp, 0x20] | var_20h = r0;
0x0000e9dc blx 0x5cb4 | fcn_00005cb4 ();
0x0000e9e0 ldr r3, [pc, 0x118] |
0x0000e9e2 mov r1, r0 | r1 = r0;
0x0000e9e4 mov r2, r7 | r2 = r7;
0x0000e9e6 mov r0, r5 | r0 = r5;
0x0000e9e8 str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h]");
0x0000e9ec add r3, pc | r3 = 0x1d4ec;
0x0000e9ee str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0000e9f2 blx 0x5544 | fcn_00005544 ();
0x0000e9f6 ldr r1, [sp, 0x18] | r1 = var_18h;
| if (r1 == 0) {
0x0000e9f8 cbz r1, 0xea36 | goto label_10;
| }
0x0000e9fa add r5, sp, 0x14 | r5 += var_14h;
0x0000e9fc mov r0, r5 | r0 = r5;
0x0000e9fe blx 0x5b68 | fcn_00005b68 ();
0x0000ea02 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000ea04 ldr r1, [r4] | r1 = *(r4);
0x0000ea06 ldr r3, [pc, 0xf8] |
0x0000ea08 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x0000ea0a ldr r0, [pc, 0xf8] |
0x0000ea0c add r3, pc | r3 = 0x1d512;
0x0000ea0e strd r1, r2, [sp] | __asm ("strd r1, r2, [sp]");
0x0000ea12 mov.w r1, 0x100 | r1 = 0x100;
0x0000ea16 ldr r2, [pc, 0xf0] |
0x0000ea18 add r0, pc | r0 = 0x1d522;
0x0000ea1a add r2, pc | r2 = 0x1d528;
0x0000ea1c blx 0x647c | fcn_0000647c ();
0x0000ea20 b 0xe8aa | goto label_1;
| label_7:
0x0000ea22 blx 0x5438 | fcn_00005438 ();
| label_6:
0x0000ea26 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0000ea28 movs r3, 0 | r3 = 0;
0x0000ea2a str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x0000ea2c cmp r0, 0 |
0x0000ea2e beq 0xe9ae |
| } while (r0 == 0);
0x0000ea30 blx 0x57c0 | fcn_000057c0 ();
0x0000ea34 b 0xe9ae | goto label_2;
| label_10:
0x0000ea36 mov r0, r7 | r0 = r7;
0x0000ea38 ldr r6, [r4, 0x1c] | r6 = *((r4 + 0x1c));
0x0000ea3a bl 0xe038 | fcn_0000e038 ();
0x0000ea3e ldr r1, [pc, 0xcc] |
0x0000ea40 mov r2, r0 | r2 = r0;
0x0000ea42 mov r5, r0 | r5 = r0;
0x0000ea44 mov r0, r6 | r0 = r6;
0x0000ea46 add r1, pc | r1 = 0x1d558;
0x0000ea48 blx 0x5450 | fcn_00005450 ();
0x0000ea4c mov r0, r5 | r0 = r5;
0x0000ea4e blx 0x5438 | fcn_00005438 ();
0x0000ea52 ldr r1, [pc, 0xbc] |
0x0000ea54 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000ea56 add r1, pc | r1 = 0x1d56c;
0x0000ea58 blx 0x5df8 | fcn_00005df8 ();
0x0000ea5c ldr r1, [pc, 0xb4] |
0x0000ea5e mov r2, r0 | r2 = r0;
0x0000ea60 str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
0x0000ea62 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0000ea64 add r1, pc | r1 = 0x1d57c;
0x0000ea66 blx 0x5c20 | fcn_00005c20 ();
0x0000ea6a mov r0, r4 | r0 = r4;
0x0000ea6c bl 0xe134 | fcn_0000e134 (r0);
0x0000ea70 ldr r0, [r4] | r0 = *(r4);
0x0000ea72 movs r1, 0x40 | r1 = 0x40;
0x0000ea74 ldr r3, [pc, 0xa0] |
0x0000ea76 ldr r2, [pc, 0xa4] |
0x0000ea78 str r0, [sp] | *(sp) = r0;
0x0000ea7a ldr r0, [pc, 0xa4] |
0x0000ea7c add r3, pc | r3 = 0x1d598;
0x0000ea7e add r2, pc | r2 = 0x1d5a0;
0x0000ea80 add r0, pc | r0 = 0x1d5a6;
0x0000ea82 blx 0x647c | fcn_0000647c ();
| do {
0x0000ea86 mov r0, r4 | r0 = r4;
0x0000ea88 movs r6, 0 | r6 = 0;
0x0000ea8a movs r7, 3 | r7 = 3;
0x0000ea8c add r5, sp, 0x14 | r5 += var_14h;
0x0000ea8e bl 0xe1e4 | fcn_0000e1e4 (r0);
0x0000ea92 b 0xe8ae | goto label_0;
| label_8:
0x0000ea94 mov r0, r6 | r0 = r6;
0x0000ea96 blx 0x5438 | fcn_00005438 ();
0x0000ea9a ldr r1, [pc, 0x88] |
0x0000ea9c ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0000ea9e add r1, pc | r1 = 0x1d5c8;
0x0000eaa0 blx 0x56a4 | g_key_file_new ();
0x0000eaa4 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0000eaa6 b 0xea86 |
| } while (1);
| label_9:
0x0000eaa8 ldr r3, [pc, 0x7c] |
0x0000eaaa add r3, pc | r3 = 0x1d5d6;
0x0000eaac b 0xe990 | goto label_3;
| label_5:
0x0000eaae blx 0x5fbc | domain_contract_new ();
0x0000eab2 nop |
0x0000eab4 str r2, [r5, r7] | *((r5 + r7)) = r2;
0x0000eab6 movs r0, r0 |
0x0000eab8 lsls r4, r7, 0x16 | r4 = r7 << 0x16;
0x0000eaba movs r0, r0 |
0x0000eabc adds r0, 0xec | r0 += 0xec;
0x0000eabe movs r0, r0 |
0x0000eac0 str r6, [r3, r7] | *((r3 + r7)) = r6;
0x0000eac2 movs r0, r0 |
0x0000eac4 adds r0, 0xfe | r0 += 0xfe;
0x0000eac6 movs r0, r0 |
0x0000eac8 asrs r4, r6, 7 | r4 = r6 >> 7;
0x0000eaca movs r0, r0 |
0x0000eacc adds r1, 0xa2 | r1 += 0xa2;
0x0000eace movs r0, r0 |
0x0000ead0 lsrs r0, r7, 0x18 | r0 = r7 >> 0x18;
0x0000ead2 movs r0, r0 |
0x0000ead4 str r6, [r7, r5] | *((r7 + r5)) = r6;
0x0000ead6 movs r0, r0 |
0x0000ead8 asrs r6, r6, 6 | r6 >>= 6;
0x0000eada movs r0, r0 |
0x0000eadc adds r0, 0x84 | r0 += 0x84;
0x0000eade movs r0, r0 |
0x0000eae0 lsrs r6, r6, 0x17 | r6 >>= 0x17;
0x0000eae2 movs r0, r0 |
0x0000eae4 adds r0, 0x7c | r0 += 0x7c;
0x0000eae6 movs r0, r0 |
0x0000eae8 cmp r7, 0xe0 |
0x0000eaea movs r0, r0 |
0x0000eaec asrs r2, r7, 3 | r2 = r7 >> 3;
0x0000eaee movs r0, r0 |
0x0000eaf0 cmp r7, 0xfc |
0x0000eaf2 movs r0, r0 |
0x0000eaf4 lsrs r6, r7, 0x14 | r6 = r7 >> 0x14;
0x0000eaf6 movs r0, r0 |
0x0000eaf8 lsls r0, r6, 0x16 | r0 = r6 << 0x16;
0x0000eafa movs r0, r0 |
0x0000eafc 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/libpacsio-api.so.0.0.55 @ 0xeb30 */
| #include <stdint.h>
|
; (fcn) sym.purge_restorer_restore () | void purge_restorer_restore (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int32_t var_0h_2;
| int32_t var_4h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000eb30 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000eb34 mov r6, r1 | r6 = r1;
0x0000eb36 ldr r1, [pc, 0x2b0] |
0x0000eb38 mov r5, r2 | r5 = r2;
0x0000eb3a sub sp, 0x2c |
0x0000eb3c mov r4, r0 | r4 = r0;
0x0000eb3e ldr r2, [pc, 0x2ac] | r2 = *(0xedee);
0x0000eb40 add r1, pc | r1 = 0x1d92e;
0x0000eb42 ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x0000eb44 ldr r2, [r1, r2] |
0x0000eb46 ldr r2, [r2] | r2 = *(0x1d92e);
0x0000eb48 str r2, [sp, 0x24] | var_24h = r2;
0x0000eb4a mov.w r2, 0 | r2 = 0;
0x0000eb4e cmp r3, 0 |
| if (r3 != 0) {
0x0000eb50 bne.w 0xecfc | goto label_5;
| }
| label_1:
0x0000eb54 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x0000eb56 blx 0x59ec | r0 = collection_count ();
0x0000eb5a cmp r0, 0 |
| if (r0 != 0) {
0x0000eb5c beq 0xec2c |
0x0000eb5e ldr r3, [pc, 0x290] |
0x0000eb60 mov.w sl, 1 | sl = 1;
0x0000eb64 movs r1, 0 | r1 = 0;
0x0000eb66 dmb ish | __asm ("dmb ish");
0x0000eb6a mov r0, r5 | r0 = r5;
0x0000eb6c mov.w fp, 0 |
0x0000eb70 add r3, pc | r3 = 0x1d966;
0x0000eb72 str.w sl, [r3] | __asm ("str.w sl, [r3]");
0x0000eb76 dmb ish | __asm ("dmb ish");
0x0000eb7a blx 0x5fd4 | r0 = g_file_replace_contents ();
0x0000eb7e mov r7, r0 | r7 = r0;
0x0000eb80 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000eb82 str.w fp, [sp, 0x1c] | __asm ("str.w fp, [var_1ch]");
0x0000eb86 blx 0x5cb4 | r0 = fcn_00005cb4 ();
0x0000eb8a mov r8, r0 | r8 = r0;
0x0000eb8c ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000eb8e blx 0x5f18 | fcn_00005f18 ();
0x0000eb92 mov r1, r8 | r1 = r8;
0x0000eb94 mov r2, r0 | r2 = r0;
0x0000eb96 mov r0, r7 | r0 = r7;
0x0000eb98 blx 0x5c08 | r0 = fcn_00005c08 ();
0x0000eb9c mov sb, r0 | sb = r0;
0x0000eb9e cmp r0, 0 |
| if (r0 == 0) {
0x0000eba0 beq.w 0xed0a | goto label_6;
| }
0x0000eba4 ldr r2, [pc, 0x24c] |
0x0000eba6 add.w r8, sp, 0x20 | r8 += var_20h;
0x0000ebaa add r3, sp, 0x1c | r3 += var_1ch;
0x0000ebac mov r1, fp | r1 = fp;
0x0000ebae str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000ebb2 add r2, pc | r2 = 0x1d9aa;
0x0000ebb4 str.w fp, [sp, 0x20] | __asm ("str.w fp, [var_20h]");
0x0000ebb8 blx 0x54fc | r0 = fcn_000054fc ();
0x0000ebbc cmp r0, 0 |
| if (r0 != 0) {
0x0000ebbe bne 0xec86 | goto label_7;
| }
0x0000ebc0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000ebc2 cmp r3, 0 |
| if (r3 == 0) {
0x0000ebc4 beq.w 0xedc0 | goto label_8;
| }
0x0000ebc8 ldr r7, [r3, 8] | r7 = *((r3 + 8));
| label_4:
0x0000ebca ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000ebcc ldr r6, [r4] | r6 = *(r4);
0x0000ebce blx 0x5f18 | fcn_00005f18 ();
0x0000ebd2 ldr r3, [pc, 0x224] |
0x0000ebd4 movs r1, 0x10 | r1 = 0x10;
0x0000ebd6 strd r0, r7, [sp, 4] | __asm ("strd r0, r7, [var_0h_2]");
0x0000ebda ldr r2, [pc, 0x220] |
0x0000ebdc ldr r0, [pc, 0x220] |
0x0000ebde add r3, pc | r3 = 0x1d9dc;
0x0000ebe0 str r6, [sp] | *(sp) = r6;
0x0000ebe2 add r2, pc | r2 = 0x1d9e4;
0x0000ebe4 add r0, pc | r0 = 0x1d9e8;
0x0000ebe6 blx 0x647c | fcn_0000647c ();
0x0000ebea mov r0, r8 | r0 = r8;
0x0000ebec blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000ebf0 mov r0, sb | r0 = sb;
0x0000ebf2 blx 0x5644 | domain_aadpdevice_set_name ();
| label_2:
0x0000ebf6 ldr r1, [r4] | r1 = *(r4);
0x0000ebf8 ldr r3, [pc, 0x208] |
0x0000ebfa ldr r2, [pc, 0x20c] |
0x0000ebfc ldr r0, [pc, 0x20c] |
0x0000ebfe str r1, [sp] | *(sp) = r1;
0x0000ec00 add r3, pc | r3 = 0x1da08;
0x0000ec02 add r2, pc | r2 = 0x1da10;
0x0000ec04 mov.w r1, 0x100 | r1 = 0x100;
0x0000ec08 add r0, pc | r0 = 0x1da18;
0x0000ec0a blx 0x647c | fcn_0000647c ();
| label_3:
0x0000ec0e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000ec10 movs r3, 0 | r3 = 0;
0x0000ec12 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r0 != 0) {
0x0000ec14 cbz r0, 0xec1a |
0x0000ec16 blx 0x5438 | fcn_00005438 ();
| }
0x0000ec1a ldr r3, [pc, 0x1f4] |
0x0000ec1c movs r2, 0 | r2 = 0;
0x0000ec1e dmb ish | __asm ("dmb ish");
0x0000ec22 add r3, pc | r3 = 0x1da38;
0x0000ec24 str r2, [r3] | *(r3) = r2;
0x0000ec26 dmb ish | __asm ("dmb ish");
0x0000ec2a b 0xec42 |
| } else {
0x0000ec2c ldr r1, [r4] | r1 = *(r4);
0x0000ec2e ldr r3, [pc, 0x1e4] |
0x0000ec30 ldr r2, [pc, 0x1e4] |
0x0000ec32 ldr r0, [pc, 0x1e8] |
0x0000ec34 str r1, [sp] | *(sp) = r1;
0x0000ec36 add r3, pc | r3 = 0x1da50;
0x0000ec38 add r2, pc | r2 = 0x1da54;
0x0000ec3a movs r1, 0x40 | r1 = 0x40;
0x0000ec3c add r0, pc | r0 = 0x1da5e;
0x0000ec3e blx 0x647c | fcn_0000647c ();
| }
0x0000ec42 mov r0, r5 | r0 = r5;
0x0000ec44 ldr r6, [r4, 0x1c] | r6 = *((r4 + 0x1c));
0x0000ec46 bl 0xe038 | fcn_0000e038 ();
0x0000ec4a ldr r1, [pc, 0x1d4] |
0x0000ec4c mov r2, r0 | r2 = r0;
0x0000ec4e mov r5, r0 | r5 = r0;
0x0000ec50 mov r0, r6 | r0 = r6;
0x0000ec52 add r1, pc | r1 = 0x1da78;
0x0000ec54 blx 0x5450 | fcn_00005450 ();
0x0000ec58 mov r0, r5 | r0 = r5;
0x0000ec5a blx 0x5438 | fcn_00005438 ();
0x0000ec5e mov r0, r4 | r0 = r4;
0x0000ec60 bl 0xe134 | fcn_0000e134 (r0);
0x0000ec64 ldr r2, [pc, 0x1bc] |
0x0000ec66 ldr r3, [pc, 0x184] | r3 = *(0xedee);
0x0000ec68 add r2, pc | r2 = 0x1da90;
0x0000ec6a ldr r3, [r2, r3] | r3 = *(0x1da90);
0x0000ec6c ldr r2, [r3] | r2 = *(0x1da90);
0x0000ec6e ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000ec70 eors r2, r3 | r2 ^= r3;
0x0000ec72 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000ec76 bne.w 0xedca | goto label_9;
| }
0x0000ec7a mov r0, r4 | r0 = r4;
0x0000ec7c add sp, 0x2c |
0x0000ec7e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000ec82 b.w 0xe1e4 | void (*0xe1e4)() ();
| label_7:
0x0000ec86 mov r0, r8 | r0 = r8;
0x0000ec88 blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000ec8c mov r0, sb | r0 = sb;
0x0000ec8e blx 0x5644 | domain_aadpdevice_set_name ();
0x0000ec92 mov r1, fp | r1 = fp;
0x0000ec94 mov r0, r5 | r0 = r5;
0x0000ec96 blx 0x56f8 | fcn_000056f8 ();
0x0000ec9a ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0000ec9c mov sb, r0 | sb = r0;
0x0000ec9e cmp r2, 2 |
| if (r2 == 2) {
0x0000eca0 beq 0xed2a | goto label_10;
| }
0x0000eca2 cmp r2, 1 |
| if (r2 != 1) {
0x0000eca4 bne.w 0xedce | goto label_11;
| }
0x0000eca8 ldr.w fp, [r4, 0x20] | fp = *((r4 + 0x20));
0x0000ecac ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000ecae cmp.w fp, 0 |
| if (fp == 0) {
0x0000ecb2 beq.w 0xedc6 | goto label_12;
| }
0x0000ecb6 str r6, [sp, 0x10] | var_10h = r6;
0x0000ecb8 mov sl, r2 | sl = r2;
0x0000ecba mov r6, fp | r6 = fp;
0x0000ecbc mov fp, r3 |
0x0000ecbe b 0xecce |
| while (r0 == 0) {
0x0000ecc0 mov sl, r0 | sl = r0;
| label_0:
0x0000ecc2 mov r0, r8 | r0 = r8;
0x0000ecc4 blx 0x5444 | fcn_00005444 ();
0x0000ecc8 ldr r6, [r6, 4] | r6 = *((r6 + 4));
0x0000ecca cmp r6, 0 |
| if (r6 == 0) {
0x0000eccc beq 0xed80 | goto label_13;
| }
0x0000ecce blx 0x5870 | fcn_00005870 ();
0x0000ecd2 mov r3, sb | r3 = sb;
0x0000ecd4 str r0, [sp, 0x20] | var_20h = r0;
0x0000ecd6 mov r2, fp | r2 = fp;
0x0000ecd8 ldr r1, [r6] | r1 = *(r6);
0x0000ecda strd r0, r5, [sp, 4] | __asm ("strd r0, r5, [var_0h_2]");
0x0000ecde mov r0, r4 | r0 = r4;
0x0000ece0 str r7, [sp] | *(sp) = r7;
0x0000ece2 bl 0xe2c8 | r0 = fcn_0000e2c8 (r0, r1, r2, r3, r4, r5, r6);
0x0000ece6 cmp r0, 0 |
0x0000ece8 beq 0xecc0 |
| }
0x0000ecea ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000ecec ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000ecee ldrd r0, r1, [r3] | __asm ("ldrd r0, r1, [r3]");
0x0000ecf2 bl 0xe23c | r0 = fcn_0000e23c (r0, r1, r2);
0x0000ecf6 and.w sl, sl, r0 | sl &= r0;
0x0000ecfa b 0xecc2 | goto label_0;
| label_5:
0x0000ecfc mov r1, r3 | r1 = r3;
0x0000ecfe ldr r0, [r0, 0x24] | r0 = *((r0 + 0x24));
0x0000ed00 blx 0x5d98 | fcn_00005d98 ();
0x0000ed04 movs r3, 0 | r3 = 0;
0x0000ed06 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0000ed08 b 0xeb54 | goto label_1;
| label_6:
0x0000ed0a ldr r6, [r4] | r6 = *(r4);
0x0000ed0c ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000ed0e blx 0x5f18 | fcn_00005f18 ();
0x0000ed12 ldr r3, [pc, 0x114] |
0x0000ed14 movs r1, 0x10 | r1 = 0x10;
0x0000ed16 strd r6, r0, [sp] | __asm ("strd r6, r0, [sp]");
0x0000ed1a ldr r2, [pc, 0x110] |
0x0000ed1c ldr r0, [pc, 0x110] |
0x0000ed1e add r3, pc | r3 = 0x1db4c;
0x0000ed20 add r2, pc | r2 = 0x1db52;
0x0000ed22 add r0, pc | r0 = 0x1db56;
0x0000ed24 blx 0x647c | fcn_0000647c ();
0x0000ed28 b 0xebf6 | goto label_2;
| label_10:
0x0000ed2a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000ed2c str r3, [sp, 0x10] | var_10h = r3;
0x0000ed2e blx 0x5870 | fcn_00005870 ();
0x0000ed32 ldr.w fp, [r4, 0x20] | fp = *((r4 + 0x20));
0x0000ed36 mov r2, r0 | r2 = r0;
0x0000ed38 str r0, [sp, 0x20] | var_20h = r0;
0x0000ed3a cmp.w fp, 0 |
| if (fp == 0) {
0x0000ed3e beq 0xed6c | goto label_14;
| }
0x0000ed40 str r6, [sp, 0x14] | var_14h = r6;
0x0000ed42 mov r6, fp | r6 = fp;
0x0000ed44 ldr.w fp, [sp, 0x10] | fp = var_10h;
0x0000ed48 b 0xed4c |
| while (r6 != 0) {
0x0000ed4a ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000ed4c ldr r1, [r6] | r1 = *(r6);
0x0000ed4e mov r3, sb | r3 = sb;
0x0000ed50 strd r2, r5, [sp, 4] | __asm ("strd r2, r5, [var_0h_2]");
0x0000ed54 mov r0, r4 | r0 = r4;
0x0000ed56 mov r2, fp | r2 = fp;
0x0000ed58 str r7, [sp] | *(sp) = r7;
0x0000ed5a bl 0xe2c8 | fcn_0000e2c8 (r0, r1, r2, r3, r4, r5, r6);
0x0000ed5e ldr r6, [r6, 4] | r6 = *((r6 + 4));
0x0000ed60 and.w sl, sl, r0 | sl &= r0;
0x0000ed64 cmp r6, 0 |
0x0000ed66 bne 0xed4a |
| }
0x0000ed68 ldr r6, [sp, 0x14] | r6 = var_14h;
0x0000ed6a ldr r2, [sp, 0x20] | r2 = var_20h;
| label_14:
0x0000ed6c ldrd r0, r1, [r6] | __asm ("ldrd r0, r1, [r6]");
0x0000ed70 bl 0xe23c | r0 = fcn_0000e23c (r0, r1, r2);
0x0000ed74 mov r3, r0 | r3 = r0;
0x0000ed76 mov r0, r8 | r0 = r8;
0x0000ed78 and.w sl, r3, sl | sl = r3 & sl;
0x0000ed7c blx 0x5444 | fcn_00005444 ();
| label_13:
0x0000ed80 ldr r6, [r4] | r6 = *(r4);
0x0000ed82 cmp.w sl, 0 |
| if (sl == 0) {
0x0000ed86 bne 0xed9e |
0x0000ed88 ldr r3, [pc, 0xa8] |
0x0000ed8a movs r1, 0x10 | r1 = 0x10;
0x0000ed8c ldr r2, [pc, 0xa8] |
0x0000ed8e ldr r0, [pc, 0xac] |
0x0000ed90 add r3, pc | r3 = 0x1dbc8;
0x0000ed92 str r6, [sp] | *(sp) = r6;
0x0000ed94 add r2, pc | r2 = 0x1dbd0;
0x0000ed96 add r0, pc | r0 = 0x1dbd8;
0x0000ed98 blx 0x647c | fcn_0000647c ();
0x0000ed9c b 0xec0e | goto label_3;
| }
0x0000ed9e ldr.w fp, [r4, 0x20] | fp = *((r4 + 0x20));
| do {
0x0000eda2 mov r0, fp | r0 = fp;
0x0000eda4 blx 0x59ec | collection_count ();
0x0000eda8 ldr r3, [pc, 0x94] |
0x0000edaa movs r1, 0x40 | r1 = 0x40;
0x0000edac strd r6, r0, [sp] | __asm ("strd r6, r0, [sp]");
0x0000edb0 ldr r2, [pc, 0x90] |
0x0000edb2 ldr r0, [pc, 0x94] |
0x0000edb4 add r3, pc | r3 = 0x1dbf8;
0x0000edb6 add r2, pc | r2 = 0x1dbfe;
0x0000edb8 add r0, pc | r0 = 0x1dc06;
0x0000edba blx 0x647c | fcn_0000647c ();
0x0000edbe b 0xec0e | goto label_3;
| label_8:
0x0000edc0 ldr r7, [pc, 0x88] |
0x0000edc2 add r7, pc | r7 = 0x1dc12;
0x0000edc4 b 0xebca | goto label_4;
| label_12:
0x0000edc6 ldr r6, [r4] | r6 = *(r4);
0x0000edc8 b 0xeda2 |
| } while (1);
| label_9:
0x0000edca blx 0x5fbc | domain_contract_new ();
| label_11:
0x0000edce ldr r3, [pc, 0x80] |
0x0000edd0 mov.w r2, 0x29c | r2 = 0x29c;
0x0000edd4 ldr r1, [pc, 0x7c] |
0x0000edd6 ldr r0, [pc, 0x80] |
0x0000edd8 add r3, pc | r3 = 0x1dc2e;
0x0000edda str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x0000edde add r1, pc | r1 = 0x1dc36;
0x0000ede0 adds r3, 0x24 | r3 += 0x24;
0x0000ede2 add r0, pc | r0 = 0x1dc40;
0x0000ede4 blx 0x598c | interface_definition_create ();
0x0000ede8 ldr r6, [pc, 0x3e0] | r6 = *(0xf1cc);
0x0000edea movs r0, r0 |
0x0000edec lsls r4, r7, 0x16 | r4 = r7 << 0x16;
0x0000edee movs r0, r0 |
0x0000edf0 ldrsb r4, [r3, r2] | r4 = *((r3 + r2));
0x0000edf2 movs r0, r0 |
0x0000edf4 cmp r6, 0xbe |
0x0000edf6 movs r0, r0 |
0x0000edf8 lsrs r6, r6, 0x1a | r6 >>= 0x1a;
0x0000edfa movs r0, r0 |
0x0000edfc cmp r6, 0x96 |
0x0000edfe movs r0, r0 |
0x0000ee00 lsrs r0, r7, 0xb | r0 = r7 >> 0xb;
0x0000ee02 movs r0, r0 |
0x0000ee04 lsrs r4, r2, 0x1a | r4 = r2 >> 0x1a;
0x0000ee06 movs r0, r0 |
0x0000ee08 cmp r7, 0x56 |
0x0000ee0a movs r0, r0 |
0x0000ee0c lsrs r4, r2, 0xb | r4 = r2 >> 0xb;
0x0000ee0e movs r0, r0 |
0x0000ee10 strb r2, [r5, r7] | *((r5 + r7)) = r2;
0x0000ee12 movs r0, r0 |
0x0000ee14 lsrs r6, r3, 0x19 | r6 = r3 >> 0x19;
0x0000ee16 movs r0, r0 |
0x0000ee18 cmp r7, 0x54 |
0x0000ee1a movs r0, r0 |
0x0000ee1c lsrs r0, r4, 0xa | r0 = r4 >> 0xa;
0x0000ee1e movs r0, r0 |
0x0000ee20 cmp r5, 0x7e |
0x0000ee22 movs r0, r0 |
0x0000ee24 ldr r5, [pc, 0x340] | r5 = *(0xf168);
0x0000ee26 movs r0, r0 |
0x0000ee28 lsrs r6, r6, 0x15 | r6 >>= 0x15;
0x0000ee2a movs r0, r0 |
0x0000ee2c cmp r5, 0x98 |
0x0000ee2e movs r0, r0 |
0x0000ee30 lsrs r2, r7, 6 | r2 = r7 >> 6;
0x0000ee32 movs r0, r0 |
0x0000ee34 lsrs r4, r0, 0x14 | r4 = r0 >> 0x14;
0x0000ee36 movs r0, r0 |
0x0000ee38 cmp r5, 0x9c |
0x0000ee3a movs r0, r0 |
0x0000ee3c lsrs r6, r0, 5 | r6 = r0 >> 5;
0x0000ee3e movs r0, r0 |
0x0000ee40 lsrs r0, r4, 0x13 | r0 = r4 >> 0x13;
0x0000ee42 movs r0, r0 |
0x0000ee44 cmp r5, 0x42 |
0x0000ee46 movs r0, r0 |
0x0000ee48 lsrs r4, r4, 4 | r4 >>= 4;
0x0000ee4a movs r0, r0 |
0x0000ee4c cmp r1, 0xc6 |
0x0000ee4e movs r0, r0 |
0x0000ee50 cmp r5, 0xe0 |
0x0000ee52 movs r0, r0 |
0x0000ee54 cmp r1, 0x2e |
0x0000ee56 movs r0, r0 |
0x0000ee58 lsrs r2, r7, 3 | r2 = r7 >> 3;
0x0000ee5a movs r0, 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/libpacsio-api.so.0.0.55 @ 0xb570 */
| #include <stdint.h>
|
; (fcn) sym.terminal_block_collection_new () | void terminal_block_collection_new (int16_t arg1, int16_t arg2, int16_t arg3) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000b570 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000b574 mov r4, r0 | r4 = r0;
0x0000b576 ldr r0, [pc, 0x178] |
0x0000b578 sub sp, 0x2c |
0x0000b57a mov r6, r2 | r6 = r2;
0x0000b57c mov r5, r1 | r5 = r1;
0x0000b57e ldr r3, [pc, 0x174] | r3 = *(0xb6f6);
0x0000b580 movs r1, 0x80 | r1 = 0x80;
0x0000b582 add r0, pc | r0 = 0x16c78;
0x0000b584 str r6, [sp, 8] | var_8h = r6;
0x0000b586 ldr.w sb, [pc, 0x170] |
0x0000b58a add.w r8, sp, 0x1c | r8 += var_1ch;
0x0000b58e ldr r3, [r0, r3] |
0x0000b590 movs r7, 0 | r7 = 0;
0x0000b592 ldr.w sl, [pc, 0x168] |
0x0000b596 ldr r2, [pc, 0x168] |
0x0000b598 add sb, pc | sb = 0x16c96;
0x0000b59a ldr r3, [r3] | r3 = *(0x16c78);
0x0000b59c str r3, [sp, 0x24] | var_24h = r3;
0x0000b59e mov.w r3, 0 | r3 = 0;
0x0000b5a2 ldr r3, [pc, 0x160] |
0x0000b5a4 mov r0, sb | r0 = sb;
0x0000b5a6 add sl, pc | sl = 0x16ca8;
0x0000b5a8 add r2, pc | r2 = 0x16cae;
0x0000b5aa add r3, pc | r3 = 0x16cb4;
0x0000b5ac str r3, [sp, 0xc] | var_ch = r3;
0x0000b5ae blx 0x647c | fcn_0000647c ();
0x0000b5b2 mov r3, r8 | r3 = r8;
0x0000b5b4 mov r2, sl | r2 = sl;
0x0000b5b6 mov r1, r5 | r1 = r5;
0x0000b5b8 mov r0, r4 | r0 = r4;
0x0000b5ba str r7, [sp, 0x1c] | var_1ch = r7;
0x0000b5bc blx 0x624c | fcn_0000624c ();
0x0000b5c0 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x0000b5c2 cmp r6, 0 |
| if (r6 != 0) {
0x0000b5c4 bne 0xb64c | goto label_3;
| }
0x0000b5c6 mov fp, r0 |
0x0000b5c8 blx 0x568c | ipc_data_get_ipc_data_array ();
0x0000b5cc ldr r1, [pc, 0x138] |
0x0000b5ce mov r3, r6 | r3 = r6;
0x0000b5d0 mov r2, fp | r2 = fp;
0x0000b5d2 add.w fp, sp, 0x20 |
0x0000b5d6 add r1, pc | r1 = 0x16ce2;
0x0000b5d8 blx 0x59b0 | r0 = free (r0);
0x0000b5dc mov r7, r0 | r7 = r0;
0x0000b5de blx 0x60fc | r0 = fcn_000060fc ();
0x0000b5e2 mov r1, r0 | r1 = r0;
0x0000b5e4 mov r0, r7 | r0 = r7;
0x0000b5e6 blx 0x5f94 | fcn_00005f94 ();
0x0000b5ea ldr r2, [pc, 0x120] |
0x0000b5ec movs r1, 0x80 | r1 = 0x80;
0x0000b5ee str r0, [sp, 0x10] | var_10h = r0;
0x0000b5f0 mov r0, sb | r0 = sb;
0x0000b5f2 add r2, pc | r2 = 0x16d04;
0x0000b5f4 blx 0x647c | fcn_0000647c ();
0x0000b5f8 mov r1, fp | r1 = fp;
0x0000b5fa mov r0, r4 | r0 = r4;
0x0000b5fc str r6, [sp, 0x20] | var_20h = r6;
0x0000b5fe blx 0x5fd4 | g_file_replace_contents ();
0x0000b602 ldr r3, [sp, 0x20] | r3 = var_20h;
| if (r3 == 0) {
0x0000b604 cbz r3, 0xb656 | goto label_4;
| }
| label_1:
0x0000b606 ldr r2, [pc, 0x108] |
0x0000b608 movs r1, 0x10 | r1 = 0x10;
0x0000b60a ldr r0, [pc, 0x108] |
0x0000b60c add r2, pc | r2 = 0x16d22;
0x0000b60e add r0, pc | r0 = 0x16d28;
0x0000b610 blx 0x647c | fcn_0000647c ();
0x0000b614 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000b616 mov r0, r8 | r0 = r8;
0x0000b618 blx 0x5b68 | fcn_00005b68 ();
| label_0:
0x0000b61c ldr r1, [sp, 0x1c] | r1 = var_1ch;
| if (r1 != 0) {
0x0000b61e cbz r1, 0xb626 |
0x0000b620 ldr r0, [sp, 8] | r0 = var_8h;
0x0000b622 blx 0x5b68 | fcn_00005b68 ();
| }
0x0000b626 blx 0x60fc | r0 = fcn_000060fc ();
0x0000b62a mov r1, r0 | r1 = r0;
0x0000b62c mov r0, r7 | r0 = r7;
0x0000b62e blx 0x5f94 | fcn_00005f94 ();
| do {
0x0000b632 ldr r2, [pc, 0xe4] |
0x0000b634 ldr r3, [pc, 0xbc] | r3 = *(0xb6f4);
0x0000b636 add r2, pc | r2 = 0x16d54;
0x0000b638 ldr r3, [r2, r3] | r3 = *(0x16d54);
0x0000b63a ldr r2, [r3] | r2 = *(0x16d54);
0x0000b63c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000b63e eors r2, r3 | r2 ^= r3;
0x0000b640 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000b644 bne 0xb6ec | goto label_5;
| }
0x0000b646 add sp, 0x2c |
0x0000b648 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x0000b64c mov r0, r8 | r0 = r8;
0x0000b64e blx 0x56e0 | get_schema_cache_from_system_registry ()
0x0000b652 mov r0, r7 | r0 = r7;
0x0000b654 b 0xb632 |
| } while (1);
| label_4:
0x0000b656 str r0, [sp, 0x14] | var_14h = r0;
0x0000b658 blx 0x5da4 | fcn_00005da4 ();
0x0000b65c ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000b65e blx 0x61e0 | r0 = fcn_000061e0 ();
| if (r0 == 0) {
0x0000b662 cbz r0, 0xb678 | goto label_6;
| }
0x0000b664 ldr r2, [pc, 0xb4] |
0x0000b666 mov r0, sb | r0 = sb;
0x0000b668 movs r1, 0x80 | r1 = 0x80;
0x0000b66a add r2, pc | r2 = 0x16d8a;
0x0000b66c blx 0x647c | fcn_0000647c ();
| label_2:
0x0000b670 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000b672 cmp r3, 0 |
| if (r3 == 0) {
0x0000b674 beq 0xb61c | goto label_0;
| }
0x0000b676 b 0xb606 | goto label_1;
| label_6:
0x0000b678 ldr r2, [pc, 0xa4] |
0x0000b67a mov r0, sb | r0 = sb;
0x0000b67c movs r1, 0x80 | r1 = 0x80;
0x0000b67e add r2, pc | r2 = 0x16da2;
0x0000b680 blx 0x647c | fcn_0000647c ();
0x0000b684 ldr r0, [pc, 0x9c] |
0x0000b686 mov r1, sl | r1 = sl;
0x0000b688 mov r2, fp | r2 = fp;
0x0000b68a add r0, pc | r0 = 0x16db2;
0x0000b68c blx 0x6108 | r0 = fcn_00006108 ();
0x0000b690 mov sl, r0 | sl = r0;
0x0000b692 cmp r0, 0 |
| if (r0 == 0) {
0x0000b694 beq 0xb670 | goto label_2;
| }
0x0000b696 mov r3, fp | r3 = fp;
0x0000b698 ldr.w sb, [sp, 0x10] | sb = var_10h;
0x0000b69c mov fp, r7 |
0x0000b69e mov r6, r0 | r6 = r0;
0x0000b6a0 mov r7, r3 | r7 = r3;
0x0000b6a2 b 0xb6c0 |
| while (r1 == 0) {
0x0000b6a4 ldr r2, [r6] | r2 = *(r6);
0x0000b6a6 mov r3, r5 | r3 = r5;
0x0000b6a8 mov r0, sb | r0 = sb;
0x0000b6aa strd r4, r7, [sp] | __asm ("strd r4, r7, [sp]");
0x0000b6ae blx 0x5e1c | fcn_00005e1c ();
0x0000b6b2 ldr r2, [sp, 0x20] | r2 = var_20h;
| if (r2 != 0) {
0x0000b6b4 cbnz r2, 0xb6da | goto label_7;
| }
| if (r0 != 0) {
0x0000b6b6 cbz r0, 0xb6bc |
0x0000b6b8 blx 0x5644 | domain_aadpdevice_set_name ();
| }
0x0000b6bc ldr r6, [r6, 4] | r6 = *((r6 + 4));
| if (r6 == 0) {
0x0000b6be cbz r6, 0xb6c6 | goto label_8;
| }
0x0000b6c0 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000b6c2 cmp r1, 0 |
0x0000b6c4 beq 0xb6a4 |
| }
| label_8:
0x0000b6c6 mov r7, fp | r7 = fp;
| do {
0x0000b6c8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000b6ca mov r0, sl | r0 = sl;
0x0000b6cc ldr r3, [pc, 0x58] | r3 = *(0xb728);
0x0000b6ce ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000b6d0 mov r1, r3 | r1 = r3;
0x0000b6d2 str r3, [sp, 0xc] | var_ch = r3;
0x0000b6d4 blx 0x57e8 | fcn_000057e8 ();
0x0000b6d8 b 0xb670 | goto label_2;
| label_7:
0x0000b6da ldr r2, [pc, 0x50] |
0x0000b6dc movs r1, 0x10 | r1 = 0x10;
0x0000b6de ldr r0, [pc, 0x50] |
0x0000b6e0 mov r7, fp | r7 = fp;
0x0000b6e2 add r2, pc | r2 = 0x16e14;
0x0000b6e4 add r0, pc | r0 = 0x16e1a;
0x0000b6e6 blx 0x647c | fcn_0000647c ();
0x0000b6ea b 0xb6c8 |
| } while (1);
| label_5:
0x0000b6ec blx 0x5fbc | domain_contract_new ();
0x0000b6f0 strh r6, [r6, 0x24] | *((r6 + 0x24)) = r6;
0x0000b6f2 movs r0, r0 |
0x0000b6f4 lsls r4, r7, 0x16 | r4 = r7 << 0x16;
0x0000b6f6 movs r0, r0 |
0x0000b6f8 adcs r4, r0 | __asm ("adcs r4, r0");
0x0000b6fa movs r0, r0 |
0x0000b6fc ldr r6, [r0, r1] | r6 = *((r0 + r1));
0x0000b6fe movs r0, r0 |
0x0000b700 ldr r4, [r4, r0] | r4 = *((r4 + r0));
0x0000b702 movs r0, r0 |
0x0000b704 strh r6, [r1, 0x24] | *((r1 + 0x24)) = r6;
0x0000b706 movs r0, r0 |
0x0000b708 bx r6 | return uint32_t (*r6)() ();
| }
[*] Function system used 15 times libpacsio-api.so.0.0.55