[*] Binary protection state of libxml2.so.2.9.13
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function mmap tear down of libxml2.so.2.9.13
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x3e0b8 */
| #include <stdint.h>
|
; (fcn) fcn.0003e0b8 () | void fcn_0003e0b8 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_1fch;
| int16_t var_200h;
| r0 = arg1;
| r1 = arg2;
0x0003e0b8 push {r4, r5, r6, lr} |
0x0003e0ba mov r4, r0 | r4 = r0;
0x0003e0bc ldr r0, [pc, 0x80] |
0x0003e0be sub.w sp, sp, 0x200 |
0x0003e0c2 ldr r2, [pc, 0x80] | r2 = *(0x3e146);
0x0003e0c4 add r0, pc | r0 = 0x7c208;
0x0003e0c6 ldr r3, [pc, 0x80] |
0x0003e0c8 ldr r5, [r4, 0x18] | r5 = *((r4 + 0x18));
0x0003e0ca ldr r2, [r0, r2] |
0x0003e0cc add r3, pc |
0x0003e0ce ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0003e0d0 ldr r2, [r2] | r2 = *(0x7c208);
0x0003e0d2 str r2, [sp, 0x1fc] | var_1fch = r2;
0x0003e0d4 mov.w r2, 0 | r2 = 0;
0x0003e0d8 ldr r2, [pc, 0x70] | r2 = *(0x3e14c);
0x0003e0da subs r5, r5, r0 | r5 -= r0;
0x0003e0dc ldr r3, [r3, r2] |
0x0003e0de ldr r2, [r4] | r2 = *(r4);
0x0003e0e0 ldr r3, [r3] | r3 = *(0x7c21a);
0x0003e0e2 adds r6, r1, r2 | r6 = r1 + r2;
0x0003e0e4 mov r1, r6 | r1 = r6;
0x0003e0e6 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| if (r0 == 0) {
0x0003e0e8 cbz r0, 0x3e112 | goto label_0;
| }
0x0003e0ea adds r3, r0, r5 | r3 = r0 + r5;
0x0003e0ec str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0003e0ee movs r0, 0 | r0 = 0;
0x0003e0f0 subs r5, r6, r5 | r5 = r6 - r5;
0x0003e0f2 str r6, [r4] | *(r4) = r6;
0x0003e0f4 strd r3, r5, [r4, 0x18] | __asm ("strd r3, r5, [r4, 0x18]");
| do {
0x0003e0f8 ldr r2, [pc, 0x54] |
0x0003e0fa ldr r3, [pc, 0x48] | r3 = *(0x3e146);
0x0003e0fc add r2, pc | r2 = 0x7c250;
0x0003e0fe ldr r3, [r2, r3] | r3 = *(0x7c250);
0x0003e100 ldr r2, [r3] | r2 = *(0x7c250);
0x0003e102 ldr r3, [sp, 0x1fc] | r3 = var_1fch;
0x0003e104 eors r2, r3 | r2 ^= r3;
0x0003e106 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003e10a bne 0x3e13a | goto label_1;
| }
0x0003e10c add.w sp, sp, 0x200 |
0x0003e110 pop {r4, r5, r6, pc} |
| label_0:
0x0003e112 ldr r3, [pc, 0x40] |
0x0003e114 add r4, sp, 8 | r4 += var_8h;
0x0003e116 ldr r2, [pc, 0x40] |
0x0003e118 mov.w r1, 0x1f4 | r1 = 0x1f4;
0x0003e11c mov r0, r4 | r0 = r4;
0x0003e11e str r6, [sp] | *(sp) = r6;
0x0003e120 add r3, pc | r3 = 0x7c27a;
0x0003e122 add r2, pc | r2 = 0x7c280;
0x0003e124 bl 0x6c1e0 | xmlStrPrintf ();
0x0003e128 movs r0, 8 | r0 = 8;
0x0003e12a mov r2, r4 | r2 = r4;
0x0003e12c movw r1, 0x60a | r1 = 0x60a;
0x0003e130 blx 0x1bcac | fcn_0001bcac ();
0x0003e134 mov.w r0, -1 | r0 = -1;
0x0003e138 b 0x3e0f8 |
| } while (1);
| label_1:
0x0003e13a blx 0x1bb70 | fputc (r0, r1);
0x0003e13e nop |
0x0003e140 ldrh r0, [r6, r3] | r0 = *((r6 + r3));
0x0003e142 movs r2, r1 | r2 = r1;
0x0003e144 lsls r0, r1, 0xf | r0 = r1 << 0xf;
0x0003e146 movs r0, r0 |
0x0003e148 ldrh r0, [r5, r3] | r0 = *((r5 + r3));
0x0003e14a movs r2, r1 | r2 = r1;
0x0003e14c lsls r0, r6, 0xc | r0 = r6 << 0xc;
0x0003e14e movs r0, r0 |
0x0003e150 ldrh r0, [r7, r2] | r0 = *((r7 + r2));
0x0003e152 movs r2, r1 | r2 = r1;
0x0003e154 strh r4, [r5, r4] | *((r5 + r4)) = r4;
0x0003e156 movs r7, r0 | r7 = r0;
0x0003e158 strh r2, [r3, r5] | *((r3 + r5)) = r2;
0x0003e15a movs r7, r0 | r7 = r0;
0x0003e15c cmp r1, 0 |
0x0003e15e it ne |
| if (r1 != 0) {
0x0003e160 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x0003e162 push {r4, r5, r6, lr} |
0x0003e164 mov r5, r0 | r5 = r0;
| if (r1 == 0) {
0x0003e166 beq 0x3e19c | goto label_2;
| }
0x0003e168 mov r4, r2 | r4 = r2;
0x0003e16a mov r0, r1 | r0 = r1;
0x0003e16c mov r3, r5 | r3 = r5;
0x0003e16e movs r2, 1 | r2 = 1;
0x0003e170 mov r1, r4 | r1 = r4;
0x0003e172 blx 0x1baf8 | r0 = fcn_0001baf8 ();
0x0003e176 mov r6, r0 | r6 = r0;
0x0003e178 cbz r0, 0x3e180 |
| while (r0 == 0) {
0x0003e17a mul r0, r6, r4 | r0 = r6 * r4;
0x0003e17e pop {r4, r5, r6, pc} |
0x0003e180 mov r0, r5 | r0 = r5;
0x0003e182 blx 0x1bd38 | r0 = fcn_0001bd38 ();
0x0003e186 cmp r0, 0 |
0x0003e188 beq 0x3e17a |
| }
0x0003e18a ldr r2, [pc, 0x18] |
0x0003e18c mov r1, r6 | r1 = r6;
0x0003e18e movs r0, 8 | r0 = 8;
0x0003e190 add r2, pc | r2 = 0x7c33a;
0x0003e192 blx 0x1bcac | fcn_0001bcac ();
0x0003e196 mov.w r0, -1 | r0 = -1;
0x0003e19a pop {r4, r5, r6, pc} |
| label_2:
0x0003e19c mov.w r0, -1 | r0 = -1;
0x0003e1a0 pop {r4, r5, r6, pc} |
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x57170).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x7a038 */
| #include <stdint.h>
|
; (fcn) fcn.0007a038 () | void fcn_0007a038 (int16_t arg_1a8h, int16_t arg_1c8h, int16_t arg_340h, int16_t arg1, uint32_t arg2) {
| int16_t var_30h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x0007a038 blmi 0xfe4cca80 | __asm ("blmi 0xfe4cca80");
0x0007a03c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0007a040 sub sp, 0x34 |
0x0007a042 add r2, pc | r2 += pc;
0x0007a044 ldr.w sb, [pc, 0x23c] | sb = *(0x0007a284);
0x0007a048 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007a04a add sb, pc | sb += pc;
0x0007a04c ldr r3, [r3] | r3 = *(r3);
0x0007a04e str r3, [sp, 0x2c] | var_2ch = r3;
0x0007a050 mov.w r3, 0 | r3 = 0;
0x0007a054 cmp r1, 0 |
| if (r1 == 0) {
0x0007a056 beq.w 0x7a16e | goto label_0;
| }
0x0007a05a ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0007a05c mov r5, r1 | r5 = r1;
0x0007a05e ands r4, r3, 2 | r4 = r3 & 2;
| if (r4 != r3) {
0x0007a062 bne 0x7a0de | goto label_1;
| }
0x0007a064 orr r3, r3, 2 | r3 |= 2;
0x0007a068 mov r6, r0 | r6 = r0;
0x0007a06a str r3, [r1, 4] | *((r1 + 4)) = r3;
0x0007a06c ldr r1, [r1, 0x2c] | r1 = *((r1 + 0x2c));
0x0007a06e ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0007a070 cmp r3, 0 |
| if (r3 <= 0) {
0x0007a072 ble 0x7a0d6 | goto label_4;
| }
0x0007a074 ldr r3, [pc, 0x210] |
0x0007a076 mov r8, r0 | r8 = r0;
0x0007a078 add r3, pc | r3 = 0xf4304;
0x0007a07a str r3, [sp, 0x1c] | var_1ch = r3;
0x0007a07c ldr r3, [pc, 0x20c] |
0x0007a07e add r3, pc | r3 = 0xf430e;
0x0007a080 str r3, [sp, 0x20] | var_20h = r3;
0x0007a082 ldr r3, [pc, 0x20c] |
0x0007a084 add r3, pc | r3 = 0xf431a;
0x0007a086 str r3, [sp, 0x24] | var_24h = r3;
| do {
0x0007a088 ldr r3, [r1] | r3 = *(r1);
0x0007a08a ldr.w sl, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| sl = *((r3 + offset_0));
0x0007a08e ldr.w r3, [sl] | r3 = *(sl);
0x0007a092 subs r3, 4 | r3 -= 4;
0x0007a094 cmp r3, 0x14 |
| if (r3 <= 0x14) {
0x0007a096 bhi 0x7a0b2 |
0x0007a098 tbb [pc, r3] | __asm ("tbb [0x0007a0a0]");
| }
0x0007a0b2 cmp.w r8, 0 |
| if (r8 != 0) {
0x0007a0b6 beq 0x7a0cc |
0x0007a0b8 ldr r2, [pc, 0x1d8] |
0x0007a0ba movs r3, 0 | r3 = 0;
0x0007a0bc ldr r1, [pc, 0x1d8] |
0x0007a0be mov r0, r8 | r0 = r8;
0x0007a0c0 str r3, [sp] | *(sp) = r3;
0x0007a0c2 add r2, pc | r2 = 0xf435a;
0x0007a0c4 add r1, pc | r1 = 0xf4360;
0x0007a0c6 bl 0x7552c | fcn_0007552c (r0, r1, r2, r3);
0x0007a0ca ldr r1, [r5, 0x2c] | r1 = *((r5 + 0x2c));
| }
0x0007a0cc ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0007a0ce adds r4, 1 | r4++;
0x0007a0d0 cmp r3, r4 |
0x0007a0d2 bgt 0x7a088 |
| } while (r3 > r4);
0x0007a0d4 mov r6, r8 | r6 = r8;
| label_4:
0x0007a0d6 ldr r4, [r5, 0x18] | r4 = *((r5 + 0x18));
0x0007a0d8 cmp r4, 0 |
| if (r4 != 0) {
0x0007a0da bne.w 0x7a204 | goto label_5;
| }
| label_1:
0x0007a0de movs r0, 0 | r0 = 0;
| do {
0x0007a0e0 ldr r2, [pc, 0x1b8] |
0x0007a0e2 ldr r3, [pc, 0x19c] | r3 = *(0x7a282);
0x0007a0e4 add r2, pc | r2 = 0xf4384;
0x0007a0e6 ldr r3, [r2, r3] | r3 = *(0xf4384);
0x0007a0e8 ldr r2, [r3] | r2 = *(0xf4384);
0x0007a0ea ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0007a0ec eors r2, r3 | r2 ^= r3;
0x0007a0ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007a0f2 bne.w 0x7a276 | goto label_6;
| }
0x0007a0f6 add sp, 0x34 |
0x0007a0f8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_0:
0x0007a16e mov.w r0, -1 | r0 = -1;
0x0007a172 b 0x7a0e0 |
| } while (1);
| label_3:
0x0007a1f2 mov r0, r6 | r0 = r6;
0x0007a1f4 bl 0x7a038 | fcn_0007a038 (r0, r1, r2, r3, r4);
0x0007a1f8 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0007a1fa beq 0x7a16e | goto label_0;
| }
| label_2:
0x0007a1fc ldr r4, [r4] | r4 = *(r4);
0x0007a1fe cmp r4, 0 |
| if (r4 == 0) {
0x0007a200 beq.w 0x7a0de | goto label_1;
| }
| label_5:
0x0007a204 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x0007a206 cmp r1, 0 |
| if (r1 == 0) {
0x0007a208 beq 0x7a1fc | goto label_2;
| }
0x0007a20a ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0007a20c lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 < r3) {
0x0007a20e bmi 0x7a1fc | goto label_2;
| }
0x0007a210 b 0x7a1f2 | goto label_3;
| label_6:
0x0007a276 blx 0x1bb70 | fputc (r0, r1);
0x0007a27a nop |
0x0007a27c ldr r3, [sp, 0x1c8] | r3 = *(arg_1c8h);
0x0007a27e movs r6, r0 | r6 = r0;
0x0007a280 lsls r0, r1, 0xf | r0 = r1 << 0xf;
0x0007a282 movs r0, r0 |
0x0007a284 ldr r3, [sp, 0x1a8] | r3 = *(arg_1a8h);
0x0007a286 movs r6, r0 | r6 = r0;
0x0007a288 cmp ip, sp |
0x0007a28a movs r4, r0 | r4 = r0;
0x0007a28c adds r0, 0xa2 | r0 += 0xa2;
0x0007a28e movs r4, r0 | r4 = r0;
0x0007a290 cmp r6, 0xec |
0x0007a292 movs r4, r0 | r4 = r0;
0x0007a294 cmp r6, r7 |
0x0007a296 movs r4, r0 | r4 = r0;
0x0007a298 cmp r0, ip |
0x0007a29a movs r4, r0 | r4 = r0;
0x0007a29c ldr r2, [sp, 0x340] | r2 = *(arg_340h);
0x0007a29e movs r6, r0 | r6 = r0;
0x0007a2a0 add lr, sl | lr += sl;
0x0007a2a2 movs r4, r0 | r4 = r0;
0x0007a2a4 add ip, r7 |
0x0007a2a6 movs r4, r0 | r4 = r0;
0x0007a2a8 lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x0007a2aa movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x9d004 */
| #include <stdint.h>
|
; (fcn) fcn.0009d004 () | void fcn_0009d004 (int16_t arg1, uint32_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0009d004 invalid |
0x0009d008 strh r2, [r6, 0xc] | *((r6 + 0xc)) = r2;
0x0009d00a push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009d00e mov r6, r0 | r6 = r0;
0x0009d010 mov r7, r2 | r7 = r2;
0x0009d012 mov r4, r1 | r4 = r1;
0x0009d014 movs r5, 0 | r5 = 0;
| do {
| label_1:
0x0009d016 ldr r3, [r4] | r3 = *(r4);
0x0009d018 sub.w r1, r3, 0xb | r1 = r3 - 0xb;
0x0009d01c bics r2, r1, 2 | __asm ("bics r2, r1, 2");
| if (r5 != 0) {
0x0009d020 bne 0x9d044 | goto label_14;
| }
0x0009d022 ldrsh.w r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0009d026 adds r3, 3 | r3 += 3;
| if (r3 == 3) {
0x0009d028 beq 0x9d0c0 | goto label_15;
| }
0x0009d02a movw r3, 0xfffd | r3 = 0xfffd;
0x0009d02e ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x0009d030 mov r2, r4 | r2 = r4;
0x0009d032 strh r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
0x0009d034 mov r0, r6 | r0 = r6;
0x0009d036 bl 0x9d004 | fcn_0009d004 (r0, r1, r2);
0x0009d03a ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
| label_0:
0x0009d03c cmp r4, 0 |
0x0009d03e bne 0x9d016 |
| } while (r4 != 0);
| label_2:
0x0009d040 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x0009d044 cmp r3, 1 |
| if (r3 == 1) {
0x0009d046 beq 0x9d07e | goto label_16;
| }
0x0009d048 cmp r3, 0 |
| if (r3 != 0) {
0x0009d04a bne 0x9d0c8 | goto label_17;
| }
0x0009d04c str r7, [r4, 0x1c] | *((r4 + 0x1c)) = r7;
0x0009d04e cmp r7, 0 |
| if (r7 == 0) {
0x0009d050 beq.w 0x9d158 | goto label_18;
| }
0x0009d054 ldr r3, [r7] | r3 = *(r7);
0x0009d056 sub.w r2, r3, 0xf | r2 = r3 - 0xf;
0x0009d05a cmp r2, 1 |
| if (r2 < 1) {
0x0009d05c bls.w 0x9d32e | goto label_19;
| }
0x0009d060 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x0009d062 subs r3, 0x12 | r3 -= 0x12;
0x0009d064 cmp r3, 1 |
0x0009d066 itt hi |
| if (r3 <= 1) {
0x0009d068 movhi r5, r4 | r5 = r4;
| }
| if (r3 > 1) {
0x0009d06a movhi r4, r2 | r4 = r2;
| goto label_20;
| }
| if (r3 > 1) {
| label_20:
0x0009d06c bhi 0x9d03c | goto label_0;
| }
0x0009d06e cmp r5, 0 |
| if (r5 == 0) {
0x0009d070 beq.w 0x9d2fa | goto label_21;
| }
0x0009d074 str r2, [r5, 0x20] | *((r5 + 0x20)) = r2;
0x0009d076 ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
0x0009d078 cmp r4, 0 |
| if (r4 != 0) {
0x0009d07a bne 0x9d016 | goto label_1;
| }
0x0009d07c b 0x9d040 | goto label_2;
| label_16:
0x0009d07e str r7, [r4, 0x1c] | *((r4 + 0x1c)) = r7;
0x0009d080 cmp r7, 0 |
| if (r7 == 0) {
0x0009d082 beq 0x9d158 | goto label_18;
| }
0x0009d084 ldr r2, [r7] | r2 = *(r7);
0x0009d086 sub.w r3, r2, 8 | r3 = r2 - 8;
0x0009d08a sub.w r1, r2, 0x12 | r1 = r2 - 0x12;
0x0009d08e cmp r1, 1 |
0x0009d090 it hi |
| if (r1 > 1) {
0x0009d092 cmphi r3, 1 | __asm ("cmphi r3, 1");
| }
0x0009d094 sub.w r1, r2, 0xf | r1 = r2 - 0xf;
0x0009d098 ite ls |
| if (r1 > 1) {
0x0009d09a movls r3, 1 | r3 = 1;
| }
| if (r1 <= 1) {
0x0009d09c movhi r3, 0 | r3 = 0;
| }
0x0009d09e cmp r1, 1 |
0x0009d0a0 it ls |
| if (r1 > 1) {
0x0009d0a2 orrls r3, r3, 1 | r3 |= 1;
| }
0x0009d0a6 cmp r3, 0 |
| if (r3 != 0) {
0x0009d0a8 bne.w 0x9d2b0 | goto label_22;
| }
0x0009d0ac ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0009d0ae cmp r2, 0x11 |
0x0009d0b0 itt ne |
| if (r2 == 0x11) {
0x0009d0b2 movne r5, r4 | r5 = r4;
| }
| if (r2 != 0x11) {
0x0009d0b4 movne r4, r3 | r4 = r3;
| goto label_23;
| }
| if (r2 != 0x11) {
| label_23:
0x0009d0b6 bne 0x9d03c | goto label_0;
| }
0x0009d0b8 cmp r5, 0 |
| if (r5 == 0) {
0x0009d0ba beq.w 0x9d2c6 | goto label_24;
| }
0x0009d0be str r3, [r5, 0x20] | *((r5 + 0x20)) = r3;
| label_15:
0x0009d0c0 ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
0x0009d0c2 cmp r4, 0 |
| if (r4 != 0) {
0x0009d0c4 bne 0x9d016 | goto label_1;
| }
0x0009d0c6 b 0x9d040 | goto label_2;
| label_17:
0x0009d0c8 ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x0009d0ca str r7, [r4, 0x1c] | *((r4 + 0x1c)) = r7;
| if (r1 != 0) {
0x0009d0cc cbz r1, 0x9d0d8 |
0x0009d0ce mov r2, r4 | r2 = r4;
0x0009d0d0 mov r0, r6 | r0 = r6;
0x0009d0d2 bl 0x9d004 | fcn_0009d004 (r0, r1, r2);
0x0009d0d6 ldr r3, [r4] | r3 = *(r4);
| }
0x0009d0d8 cmp r3, 7 |
| if (r3 == 7) {
0x0009d0da beq 0x9d164 | goto label_25;
| }
0x0009d0dc ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
| if (r1 != 0) {
0x0009d0de cbz r1, 0x9d0e8 |
0x0009d0e0 mov r2, r4 | r2 = r4;
0x0009d0e2 mov r0, r6 | r0 = r6;
0x0009d0e4 bl 0x9d004 | fcn_0009d004 (r0, r1, r2);
| }
0x0009d0e8 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
| if (r1 != 0) {
0x0009d0ea cbz r1, 0x9d0f4 |
| label_3:
0x0009d0ec mov r2, r4 | r2 = r4;
0x0009d0ee mov r0, r6 | r0 = r6;
0x0009d0f0 bl 0x9d004 | fcn_0009d004 (r0, r1, r2);
| }
0x0009d0f4 ldr.w r8, [r4] | r8 = *(r4);
0x0009d0f8 cmp.w r8, 4 |
0x0009d0fc mov r3, r8 | r3 = r8;
| if (r8 == 4) {
0x0009d0fe beq 0x9d1e8 | goto label_26;
| }
0x0009d100 sub.w r2, r8, 0x12 | r2 = r8 - 0x12;
0x0009d104 cmp r2, 1 |
| if (r2 > 1) {
0x0009d106 bhi 0x9d16a | goto label_27;
| }
0x0009d108 ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x0009d10a cmp r1, 0 |
| if (r1 == 0) {
0x0009d10c beq.w 0x9d258 | goto label_28;
| }
0x0009d110 ldr r2, [r1, 0x20] | r2 = *((r1 + 0x20));
0x0009d112 cmp r2, 0 |
| if (r2 == 0) {
0x0009d114 beq.w 0x9d29a | goto label_29;
| }
0x0009d118 clz r3, r8 | r3 &= r8;
0x0009d11c cmp r7, 0 |
0x0009d11e lsr.w r3, r3, 5 | r3 >>= 5;
0x0009d122 it eq |
| if (r7 != 0) {
0x0009d124 moveq r3, 0 | r3 = 0;
| }
| label_13:
0x0009d126 mov r2, r4 | r2 = r4;
0x0009d128 cmp r3, 0 |
| if (r3 == 0) {
0x0009d12a beq.w 0x9d268 | goto label_30;
| }
| label_8:
0x0009d12e ldr r3, [r7] | r3 = *(r7);
0x0009d130 sub.w r1, r3, 0xf | r1 = r3 - 0xf;
0x0009d134 cmp r1, 1 |
| if (r1 < 1) {
0x0009d136 bls.w 0x9d32e | goto label_19;
| }
0x0009d13a subs r3, 0x11 | r3 -= 0x11;
0x0009d13c ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
0x0009d13e cmp r3, 2 |
0x0009d140 it hi |
| if (r3 > 2) {
0x0009d142 movhi r5, r2 | r5 = r2;
| goto label_31;
| }
| if (r3 > 2) {
| label_31:
0x0009d144 bhi.w 0x9d03c | goto label_0;
| }
0x0009d148 cmp r5, 0 |
| if (r5 == 0) {
0x0009d14a beq.w 0x9d334 | goto label_32;
| }
| label_5:
0x0009d14e str r4, [r5, 0x20] | *((r5 + 0x20)) = r4;
0x0009d150 cmp r4, 0 |
| if (r4 != 0) {
0x0009d152 bne.w 0x9d016 | goto label_1;
| }
0x0009d156 b 0x9d040 | goto label_2;
| label_18:
0x0009d158 mov r5, r4 | r5 = r4;
0x0009d15a ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
0x0009d15c cmp r4, 0 |
| if (r4 != 0) {
0x0009d15e bne.w 0x9d016 | goto label_1;
| }
0x0009d162 b 0x9d040 | goto label_2;
| label_25:
0x0009d164 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0009d166 cmp r1, 0 |
| if (r1 != 0) {
0x0009d168 bne 0x9d0ec | goto label_3;
| }
| label_27:
0x0009d16a mov r8, r3 | r8 = r3;
0x0009d16c mov r1, r4 | r1 = r4;
| label_10:
0x0009d16e cmp.w r8, 2 |
| if (r8 != 2) {
0x0009d172 bne 0x9d18a | goto label_33;
| }
0x0009d174 ldr r3, [r1, 0x18] | r3 = *((r1 + 0x18));
0x0009d176 ldr r4, [r1, 0x20] | r4 = *((r1 + 0x20));
| if (r3 != 0) {
0x0009d178 cbz r3, 0x9d180 |
0x0009d17a ldr r3, [r3] | r3 = *(r3);
0x0009d17c cmp r3, 1 |
| if (r3 == 1) {
0x0009d17e beq 0x9d274 | goto label_34;
| }
| }
| label_4:
0x0009d180 mov r5, r1 | r5 = r1;
0x0009d182 cmp r4, 0 |
| if (r4 != 0) {
0x0009d184 bne.w 0x9d016 | goto label_1;
| }
0x0009d188 b 0x9d040 | goto label_2;
| label_33:
0x0009d18a cmp.w r8, 1 |
| if (r8 != 1) {
0x0009d18e bne.w 0x9d370 | goto label_35;
| }
0x0009d192 cmp r7, 0 |
| if (r7 == 0) {
0x0009d194 beq 0x9d28e | goto label_36;
| }
0x0009d196 ldr r2, [r7] | r2 = *(r7);
0x0009d198 sub.w r3, r2, 0x12 | r3 = r2 - 0x12;
0x0009d19c sub.w r0, r2, 8 | r0 = r2 - 8;
0x0009d1a0 cmp r0, 1 |
0x0009d1a2 it hi |
| if (r0 > 1) {
0x0009d1a4 cmphi r3, 1 | __asm ("cmphi r3, 1");
| }
0x0009d1a6 sub.w r0, r2, 0xf | r0 = r2 - 0xf;
0x0009d1aa ite ls |
| if (r0 > 1) {
0x0009d1ac movls r3, 1 | r3 = 1;
| }
| if (r0 <= 1) {
0x0009d1ae movhi r3, 0 | r3 = 0;
| }
0x0009d1b0 cmp r0, 1 |
0x0009d1b2 it ls |
| if (r0 > 1) {
0x0009d1b4 orrls r3, r3, 1 | r3 |= 1;
| }
0x0009d1b8 cmp r3, 0 |
| if (r3 != 0) {
0x0009d1ba bne 0x9d2b0 | goto label_22;
| }
0x0009d1bc cmp r2, 0x11 |
0x0009d1be ldr r4, [r1, 0x20] | r4 = *((r1 + 0x20));
| if (r2 != 0x11) {
0x0009d1c0 bne 0x9d180 | goto label_4;
| }
0x0009d1c2 cmp r5, 0 |
| if (r5 != 0) {
0x0009d1c4 bne 0x9d14e | goto label_5;
| }
| label_9:
0x0009d1c6 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x0009d1c8 cmp r1, r3 |
| if (r1 == r3) {
0x0009d1ca beq.w 0x9d35a | goto label_37;
| }
0x0009d1ce ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0009d1d0 cmp r1, r3 |
| if (r1 == r3) {
0x0009d1d2 beq.w 0x9d364 | goto label_38;
| }
0x0009d1d6 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x0009d1d8 cmp r1, r3 |
| if (r1 != r3) {
0x0009d1da bne.w 0x9d03c | goto label_0;
| }
| label_12:
0x0009d1de str r4, [r7, 0x28] | *((r7 + 0x28)) = r4;
0x0009d1e0 cmp r4, 0 |
| if (r4 != 0) {
0x0009d1e2 bne.w 0x9d016 | goto label_1;
| }
0x0009d1e6 b 0x9d040 | goto label_2;
| label_26:
0x0009d1e8 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0009d1ea mov r0, r3 | r0 = r3;
0x0009d1ec cmp r3, 0 |
| if (r3 == 0) {
0x0009d1ee beq.w 0x9d372 | goto label_39;
| }
0x0009d1f2 ldr.w fp, [r6, 0x24] | fp = *((r6 + 0x24));
0x0009d1f6 cmp.w fp, 0 |
| if (fp == 0) {
0x0009d1fa beq 0x9d234 | goto label_40;
| }
| label_6:
0x0009d1fc mov sb, r3 | sb = r3;
0x0009d1fe cmp r3, 0 |
| if (r3 == 0) {
0x0009d200 beq.w 0x9d372 | goto label_39;
| }
| do {
| label_7:
0x0009d204 ldr.w sl, [sb, 0x20] | sl = *((sb + 0x20));
0x0009d208 mov r0, sl | r0 = sl;
0x0009d20a cmp.w sl, 0 |
| if (sl == 0) {
0x0009d20e beq.w 0x9d372 | goto label_39;
| }
0x0009d212 cmp.w fp, 0 |
| if (fp == 0) {
0x0009d216 bne 0x9d220 |
0x0009d218 bl 0x98bf0 | r0 = fcn_00098bf0 (r0);
0x0009d21c cmp r0, 1 |
| if (r0 == 1) {
0x0009d21e beq 0x9d240 | goto label_41;
| }
| }
0x0009d220 mov sb, sl | sb = sl;
0x0009d222 b 0x9d204 |
| } while (1);
| do {
0x0009d224 ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x0009d226 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x0009d228 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0009d22a str r1, [r3, 0x20] | *((r3 + 0x20)) = r1;
0x0009d22c str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x0009d22e cmp r0, 0 |
| if (r0 == 0) {
0x0009d230 beq.w 0x9d372 | goto label_39;
| }
| label_40:
0x0009d234 bl 0x98bf0 | r0 = fcn_00098bf0 (r0);
0x0009d238 cmp r0, 1 |
0x0009d23a ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0009d23c beq 0x9d224 |
| } while (r0 == 1);
0x0009d23e b 0x9d1fc | goto label_6;
| label_41:
0x0009d240 ldr.w r1, [sl, 0x20] | r1 = *((sl + 0x20));
0x0009d244 ldr r0, [r4, 0x24] | r0 = *((r4 + 0x24));
0x0009d246 str.w r1, [sb, 0x20] | __asm ("str.w r1, [sb, 0x20]");
0x0009d24a str.w r0, [sl, 0x20] | __asm ("str.w r0, [sl, 0x20]");
0x0009d24e str.w sl, [r4, 0x24] | __asm ("str.w sl, [r4, 0x24]");
0x0009d252 mov sl, sb | sl = sb;
0x0009d254 mov sb, sl | sb = sl;
0x0009d256 b 0x9d204 | goto label_7;
| label_28:
0x0009d258 subs r3, r7, 0 | r3 = r7 - 0;
0x0009d25a mov r2, r4 | r2 = r4;
0x0009d25c it ne |
| if (r3 == r7) {
0x0009d25e movne r3, 1 | r3 = 1;
| }
0x0009d260 str r1, [r4] | *(r4) = r1;
0x0009d262 cmp r3, 0 |
| if (r3 != 0) {
0x0009d264 bne.w 0x9d12e | goto label_8;
| }
| label_30:
0x0009d268 ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
0x0009d26a mov r5, r2 | r5 = r2;
| label_11:
0x0009d26c cmp r4, 0 |
| if (r4 != 0) {
0x0009d26e bne.w 0x9d016 | goto label_1;
| }
0x0009d272 b 0x9d040 | goto label_2;
| label_34:
0x0009d274 cmp r5, 0 |
| if (r5 != 0) {
0x0009d276 bne.w 0x9d14e | goto label_5;
| }
0x0009d27a cmp r7, 0 |
| if (r7 != 0) {
0x0009d27c bne 0x9d1c6 | goto label_9;
| }
0x0009d27e mov.w r3, -1 | r3 = -1;
0x0009d282 mov r5, r1 | r5 = r1;
0x0009d284 str r3, [r1] | *(r1) = r3;
0x0009d286 cmp r4, 0 |
| if (r4 != 0) {
0x0009d288 bne.w 0x9d016 | goto label_1;
| }
0x0009d28c b 0x9d040 | goto label_2;
| label_36:
0x0009d28e ldr r4, [r1, 0x20] | r4 = *((r1 + 0x20));
0x0009d290 mov r5, r1 | r5 = r1;
0x0009d292 cmp r4, 0 |
| if (r4 != 0) {
0x0009d294 bne.w 0x9d016 | goto label_1;
| }
0x0009d298 b 0x9d040 | goto label_2;
| label_29:
0x0009d29a orrs.w r3, r5, r7 | r3 = r5 | r7;
| if (r3 != r5) {
0x0009d29e beq 0x9d2b8 |
0x0009d2a0 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0009d2a2 cmp r5, 0 |
| if (r5 == 0) {
0x0009d2a4 beq 0x9d350 | goto label_42;
| }
0x0009d2a6 str r3, [r1, 0x20] | *((r1 + 0x20)) = r3;
0x0009d2a8 ldr.w r8, [r1] | r8 = *(r1);
0x0009d2ac str r1, [r5, 0x20] | *((r5 + 0x20)) = r1;
0x0009d2ae b 0x9d16e | goto label_10;
| label_22:
0x0009d2b0 movs r3, 1 | r3 = 1;
0x0009d2b2 str r3, [r7] | *(r7) = r3;
0x0009d2b4 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0009d2b8 mov r2, r4 | r2 = r4;
0x0009d2ba mov.w r3, -1 | r3 = -1;
0x0009d2be str r3, [r4] | *(r4) = r3;
0x0009d2c0 mov r5, r2 | r5 = r2;
0x0009d2c2 ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
0x0009d2c4 b 0x9d26c | goto label_11;
| label_24:
0x0009d2c6 ldr r2, [r7, 0x18] | r2 = *((r7 + 0x18));
0x0009d2c8 cmp r2, r4 |
0x0009d2ca itt eq |
| if (r2 != r4) {
0x0009d2cc moveq r4, r3 | r4 = r3;
| }
| if (r2 == r4) {
0x0009d2ce streq r3, [r7, 0x18] | *((r7 + 0x18)) = r3;
| goto label_43;
| }
| if (r2 == r4) {
| label_43:
0x0009d2d0 beq.w 0x9d03c | goto label_0;
| }
0x0009d2d4 ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x0009d2d6 cmp r2, r4 |
0x0009d2d8 itt eq |
| if (r2 != r4) {
0x0009d2da moveq r4, r3 | r4 = r3;
| }
| if (r2 == r4) {
0x0009d2dc streq r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
| goto label_44;
| }
| if (r2 == r4) {
| label_44:
0x0009d2de beq.w 0x9d03c | goto label_0;
| }
0x0009d2e2 ldr r2, [r7, 0x28] | r2 = *((r7 + 0x28));
0x0009d2e4 cmp r2, r4 |
0x0009d2e6 itt eq |
| if (r2 != r4) {
0x0009d2e8 moveq r4, r3 | r4 = r3;
| }
| if (r2 == r4) {
0x0009d2ea streq r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
| goto label_45;
| }
| if (r2 == r4) {
| label_45:
0x0009d2ec beq.w 0x9d03c | goto label_0;
| }
0x0009d2f0 mov r4, r3 | r4 = r3;
0x0009d2f2 cmp r4, 0 |
| if (r4 != 0) {
0x0009d2f4 bne.w 0x9d016 | goto label_1;
| }
0x0009d2f8 b 0x9d040 | goto label_2;
| label_21:
0x0009d2fa ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x0009d2fc cmp r3, r4 |
0x0009d2fe itt eq |
| if (r3 != r4) {
0x0009d300 moveq r4, r2 | r4 = r2;
| }
| if (r3 == r4) {
0x0009d302 streq r2, [r7, 0x18] | *((r7 + 0x18)) = r2;
| goto label_46;
| }
| if (r3 == r4) {
| label_46:
0x0009d304 beq.w 0x9d03c | goto label_0;
| }
0x0009d308 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0009d30a cmp r3, r4 |
0x0009d30c itt eq |
| if (r3 != r4) {
0x0009d30e moveq r4, r2 | r4 = r2;
| }
| if (r3 == r4) {
0x0009d310 streq r2, [r7, 0x24] | *((r7 + 0x24)) = r2;
| goto label_47;
| }
| if (r3 == r4) {
| label_47:
0x0009d312 beq.w 0x9d03c | goto label_0;
| }
0x0009d316 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x0009d318 cmp r3, r4 |
0x0009d31a itt eq |
| if (r3 != r4) {
0x0009d31c moveq r4, r2 | r4 = r2;
| }
| if (r3 == r4) {
0x0009d31e streq r2, [r7, 0x28] | *((r7 + 0x28)) = r2;
| goto label_48;
| }
| if (r3 == r4) {
| label_48:
0x0009d320 beq.w 0x9d03c | goto label_0;
| }
0x0009d324 mov r4, r2 | r4 = r2;
0x0009d326 cmp r4, 0 |
| if (r4 != 0) {
0x0009d328 bne.w 0x9d016 | goto label_1;
| }
0x0009d32c b 0x9d040 | goto label_2;
| label_19:
0x0009d32e movs r3, 0 | r3 = 0;
0x0009d330 str r3, [r7] | *(r7) = r3;
0x0009d332 b 0x9d040 | goto label_2;
| label_32:
0x0009d334 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x0009d336 cmp r3, r2 |
| if (r3 == r2) {
0x0009d338 beq 0x9d35a | goto label_37;
| }
0x0009d33a ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0009d33c cmp r3, r2 |
| if (r3 == r2) {
0x0009d33e beq 0x9d364 | goto label_38;
| }
0x0009d340 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x0009d342 cmp r3, r2 |
| if (r3 == r2) {
0x0009d344 beq.w 0x9d1de | goto label_12;
| }
0x0009d348 cmp r4, 0 |
| if (r4 != 0) {
0x0009d34a bne.w 0x9d016 | goto label_1;
| }
0x0009d34e b 0x9d040 | goto label_2;
| label_42:
0x0009d350 str r1, [r7, 0x18] | *((r7 + 0x18)) = r1;
0x0009d352 ldr.w r8, [r1] | r8 = *(r1);
0x0009d356 str r3, [r1, 0x20] | *((r1 + 0x20)) = r3;
0x0009d358 b 0x9d16e | goto label_10;
| label_37:
0x0009d35a str r4, [r7, 0x18] | *((r7 + 0x18)) = r4;
0x0009d35c cmp r4, 0 |
| if (r4 != 0) {
0x0009d35e bne.w 0x9d016 | goto label_1;
| }
0x0009d362 b 0x9d040 | goto label_2;
| label_38:
0x0009d364 str r4, [r7, 0x24] | *((r7 + 0x24)) = r4;
0x0009d366 cmp r4, 0 |
| if (r4 != 0) {
0x0009d368 bne.w 0x9d016 | goto label_1;
| }
0x0009d36c b 0x9d040 | goto label_2;
0x0009d36e bx lr | return;
| label_35:
0x0009d370 mov r4, r1 | r4 = r1;
| label_39:
0x0009d372 clz r3, r8 | r3 &= r8;
0x0009d376 cmp r7, 0 |
0x0009d378 lsr.w r3, r3, 5 | r3 >>= 5;
0x0009d37c it eq |
| if (r7 != 0) {
0x0009d37e moveq r3, 0 | r3 = 0;
| }
0x0009d380 b 0x9d126 | goto label_13;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0xa99d0 */
| #include <stdint.h>
|
; (fcn) fcn.000a99d0 () | void fcn_000a99d0 (int16_t arg1) {
| r0 = arg1;
0x000a99d0 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a99d4 mov r4, r0 | r4 = r0;
0x000a99d6 ldr r6, [pc, 0x1f4] |
0x000a99d8 ldr r2, [r0] | r2 = *(r0);
0x000a99da add r6, pc | r6 = 0x1535ac;
0x000a99dc b 0xa99e2 |
| while (r1 != 0) {
0x000a99de adds r2, 1 | r2++;
0x000a99e0 str r2, [r4] | *(r4) = r2;
0x000a99e2 ldrb r3, [r2] | r3 = *(r2);
0x000a99e4 cmp r3, 0x20 |
0x000a99e6 it ne |
| if (r3 != 0x20) {
0x000a99e8 cmpne r3, 0xd | __asm ("cmpne r3, 0xd");
| }
0x000a99ea sub.w r3, r3, 9 | r3 -= 9;
0x000a99ee ite eq |
| if (r3 != 0x20) {
0x000a99f0 moveq r1, 1 | r1 = 1;
| }
| if (r3 == 0x20) {
0x000a99f2 movne r1, 0 | r1 = 0;
| }
0x000a99f4 cmp r3, 1 |
0x000a99f6 it ls |
| if (r3 > 1) {
0x000a99f8 orrls r1, r1, 1 | r1 |= 1;
| }
0x000a99fc cmp r1, 0 |
0x000a99fe bne 0xa99de |
| }
0x000a9a00 mov r0, r4 | r0 = r4;
0x000a9a02 bl 0xa9250 | r0 = fcn_000a9250 (r0, r1, r2, r3, r4, r5);
0x000a9a06 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000a9a08 cbz r0, 0xa9a4e | goto label_9;
| }
0x000a9a0a ldr r3, [r4] | r3 = *(r4);
0x000a9a0c ldrb r2, [r3] | r2 = *(r3);
0x000a9a0e cmp r2, 0x3a |
| if (r2 != 0x3a) {
0x000a9a10 bne 0xa9a40 | goto label_10;
| }
0x000a9a12 adds r2, r3, 1 | r2 = r3 + 1;
0x000a9a14 str r2, [r4] | *(r4) = r2;
0x000a9a16 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x000a9a18 cmp r3, 0x20 |
0x000a9a1a it ne |
| if (r3 != 0x20) {
0x000a9a1c cmpne r3, 0xd | __asm ("cmpne r3, 0xd");
| }
0x000a9a1e sub.w r3, r3, 9 | r3 -= 9;
0x000a9a22 ite eq |
| if (r3 != 0x20) {
0x000a9a24 moveq r2, 1 | r2 = 1;
| }
| if (r3 == 0x20) {
0x000a9a26 movne r2, 0 | r2 = 0;
| }
0x000a9a28 cmp r3, 1 |
0x000a9a2a it ls |
| if (r3 > 1) {
0x000a9a2c orrls r2, r2, 1 | r2 |= 1;
| }
| if (r2 == 0) {
0x000a9a30 cbz r2, 0xa9a7e | goto label_11;
| }
0x000a9a32 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a9a34 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 == 0) {
0x000a9a36 cbz r3, 0xa9a74 | goto label_12;
| }
| do {
| label_1:
0x000a9a38 movs r3, 1 | r3 = 1;
0x000a9a3a str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_0:
0x000a9a3c pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_10:
0x000a9a40 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000a9a42 mov r2, r5 | r2 = r5;
0x000a9a44 movs r3, 0 | r3 = 0;
0x000a9a46 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9a4a movs r1, 4 | r1 = 4;
0x000a9a4c b 0xa996c | void (*0xa996c)() ();
| label_9:
0x000a9a4e ldr r3, [r4] | r3 = *(r4);
0x000a9a50 ldrb r3, [r3] | r3 = *(r3);
0x000a9a52 cmp r3, 0x2a |
0x000a9a54 bne 0xa9a38 |
| } while (r3 != 0x2a);
0x000a9a56 mov r3, r0 | r3 = r0;
0x000a9a58 mov r2, r0 | r2 = r0;
0x000a9a5a movs r1, 4 | r1 = 4;
0x000a9a5c ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000a9a5e bl 0xa996c | r0 = fcn_000a996c (r0, r1, r2, r3);
0x000a9a62 cmp r0, 0 |
| if (r0 != 0) {
0x000a9a64 bne 0xa9a3c | goto label_0;
| }
0x000a9a66 ldr r3, [r4] | r3 = *(r4);
0x000a9a68 ldrb r2, [r3] | r2 = *(r3);
0x000a9a6a cmp r2, 0 |
| if (r2 == 0) {
0x000a9a6c beq 0xa9a3c | goto label_0;
| }
0x000a9a6e adds r3, 1 | r3++;
0x000a9a70 str r3, [r4] | *(r4) = r3;
0x000a9a72 b 0xa9a3c | goto label_0;
| label_12:
0x000a9a74 ldr r3, [pc, 0x158] |
0x000a9a76 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9a78 ldr r3, [r3] | r3 = *(0xa9bd0);
0x000a9a7a blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x000a9a7c b 0xa9a38 | goto label_1;
| label_11:
0x000a9a7e mov r0, r4 | r0 = r4;
0x000a9a80 bl 0xa9434 | fcn_000a9434 (r0, r1, r2, r3, r4, r5);
0x000a9a84 ldrb r3, [r5] | r3 = *(r5);
0x000a9a86 mov sb, r0 | sb = r0;
0x000a9a88 cmp r3, 0x78 |
| if (r3 == 0x78) {
0x000a9a8a beq 0xa9b34 | goto label_13;
| }
| label_3:
0x000a9a8c ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000a9a8e cmp r3, 0 |
0x000a9a90 itt gt |
| if (r3 <= 0) {
0x000a9a92 movgt r7, 0 | r7 = 0;
| }
| if (r3 <= 0) {
0x000a9a94 movgt r8, r7 | r8 = r7;
| }
| if (r3 > 0) {
0x000a9a96 bgt 0xa9aa6 | goto label_14;
| }
0x000a9a98 b 0xa9b1e | goto label_15;
| do {
0x000a9a9a ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000a9a9c add.w r8, r8, 1 | r8++;
0x000a9aa0 adds r7, 8 | r7 += 8;
0x000a9aa2 cmp r3, r8 |
| if (r3 <= r8) {
0x000a9aa4 ble 0xa9b1e | goto label_15;
| }
| label_14:
0x000a9aa6 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000a9aa8 mov r1, r5 | r1 = r5;
0x000a9aaa add r3, r7 | r3 += r7;
0x000a9aac ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a9aae bl 0x6bd74 | r0 = xmlStrEqual ();
0x000a9ab2 cmp r0, 0 |
0x000a9ab4 beq 0xa9a9a |
| } while (r0 == 0);
0x000a9ab6 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a9ab8 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a9aba ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000a9abc ldr r1, [r3, r7] | r1 = *((r3 + r7));
0x000a9abe cmp r0, 0 |
| if (r0 == 0) {
0x000a9ac0 beq 0xa9b9a | goto label_16;
| }
0x000a9ac2 mov.w r2, -1 | r2 = -1;
0x000a9ac6 bl 0xa24d0 | r0 = xmlDictLookup ();
0x000a9aca mov r7, r0 | r7 = r0;
| label_8:
0x000a9acc ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000a9ace cmp r3, r8 |
| if (r3 <= r8) {
0x000a9ad0 ble 0xa9bb0 | goto label_17;
| }
| label_4:
0x000a9ad2 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a9ad4 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a9ad6 cmp r3, 0 |
| if (r3 == 0) {
0x000a9ad8 beq 0xa9b62 | goto label_18;
| }
| label_5:
0x000a9ada cmp.w sb, 0 |
| if (sb == 0) {
0x000a9ade beq 0xa9b6e | goto label_19;
| }
0x000a9ae0 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000a9ae2 mov r3, r7 | r3 = r7;
0x000a9ae4 mov r2, sb | r2 = sb;
0x000a9ae6 movs r1, 4 | r1 = 4;
0x000a9ae8 bl 0xa996c | r0 = fcn_000a996c (r0, r1, r2, r3);
0x000a9aec cmp r0, 0 |
| if (r0 == 0) {
0x000a9aee beq 0xa9a3c | goto label_0;
| }
| if (r7 == 0) {
0x000a9af0 cbz r7, 0xa9b08 | goto label_20;
| }
| label_6:
0x000a9af2 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a9af4 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 == 0) {
0x000a9af6 cbnz r3, 0xa9b02 |
0x000a9af8 ldr r3, [pc, 0xd4] |
0x000a9afa mov r0, r7 | r0 = r7;
0x000a9afc ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9afe ldr r3, [r3] | r3 = *(0xa9bd0);
0x000a9b00 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
| label_2:
0x000a9b02 cmp.w sb, 0 |
| if (sb == 0) {
0x000a9b06 beq 0xa9a3c | goto label_0;
| }
| label_20:
0x000a9b08 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a9b0a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a9b0c cmp r3, 0 |
| if (r3 != 0) {
0x000a9b0e bne 0xa9a3c | goto label_0;
| }
0x000a9b10 ldr r3, [pc, 0xbc] |
0x000a9b12 mov r0, sb | r0 = sb;
0x000a9b14 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9b16 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9b1a ldr r3, [r3] | r3 = *(0xa9bd0);
0x000a9b1c bx r3 | return uint32_t (*r3)() ();
| label_15:
0x000a9b1e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a9b20 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 != 0) {
0x000a9b22 cbnz r3, 0xa9b5c | goto label_21;
| }
0x000a9b24 ldr r3, [pc, 0xa8] |
0x000a9b26 mov r0, r5 | r0 = r5;
0x000a9b28 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9b2a ldr r3, [r3] | r3 = *(0xa9bd0);
0x000a9b2c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000a9b2e movs r3, 1 | r3 = 1;
0x000a9b30 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x000a9b32 b 0xa9b02 | goto label_2;
| label_13:
0x000a9b34 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x000a9b36 cmp r3, 0x6d |
| if (r3 != 0x6d) {
0x000a9b38 bne 0xa9a8c | goto label_3;
| }
0x000a9b3a ldrb r3, [r5, 2] | r3 = *((r5 + 2));
0x000a9b3c cmp r3, 0x6c |
| if (r3 != 0x6c) {
0x000a9b3e bne 0xa9a8c | goto label_3;
| }
0x000a9b40 ldrb r3, [r5, 3] | r3 = *((r5 + 3));
0x000a9b42 cmp r3, 0 |
| if (r3 != 0) {
0x000a9b44 bne 0xa9a8c | goto label_3;
| }
0x000a9b46 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a9b48 ldr r0, [r3, 4] | r0 = *((r3 + 4));
| if (r0 == 0) {
0x000a9b4a cbz r0, 0xa9ba4 | goto label_22;
| }
0x000a9b4c ldr r1, [pc, 0x84] |
0x000a9b4e mov.w r2, -1 | r2 = -1;
0x000a9b52 add r1, pc | r1 = 0x15372a;
0x000a9b54 bl 0xa24d0 | r0 = xmlDictLookup ();
0x000a9b58 mov r7, r0 | r7 = r0;
0x000a9b5a b 0xa9ad2 | goto label_4;
| label_21:
0x000a9b5c movs r3, 1 | r3 = 1;
0x000a9b5e str r3, [r4, 8] | *((r4 + 8)) = r3;
0x000a9b60 b 0xa9b02 | goto label_2;
| label_18:
0x000a9b62 ldr r3, [pc, 0x6c] |
0x000a9b64 mov r0, r5 | r0 = r5;
0x000a9b66 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9b68 ldr r3, [r3] | r3 = *(0xa9bd2);
0x000a9b6a blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000a9b6c b 0xa9ada | goto label_5;
| label_19:
0x000a9b6e ldr r3, [r4] | r3 = *(r4);
0x000a9b70 ldrb r2, [r3] | r2 = *(r3);
0x000a9b72 cmp r2, 0x2a |
0x000a9b74 itt ne |
| if (r2 == 0x2a) {
0x000a9b76 movne r3, 1 | r3 = 1;
| }
| if (r2 == 0x2a) {
0x000a9b78 strne r3, [r4, 8] | *((r4 + 8)) = r3;
| }
| if (r2 == 0x2a) {
0x000a9b7a beq 0xa9b82 | goto label_23;
| }
| label_7:
0x000a9b7c cmp r7, 0 |
| if (r7 != 0) {
0x000a9b7e bne 0xa9af2 | goto label_6;
| }
0x000a9b80 b 0xa9a3c | goto label_0;
| label_23:
0x000a9b82 adds r3, 1 | r3++;
0x000a9b84 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000a9b86 str r3, [r4] | *(r4) = r3;
0x000a9b88 mov r2, sb | r2 = sb;
0x000a9b8a mov r3, r7 | r3 = r7;
0x000a9b8c movs r1, 4 | r1 = 4;
0x000a9b8e bl 0xa996c | r0 = fcn_000a996c (r0, r1, r2, r3);
0x000a9b92 cmp r0, 0 |
| if (r0 == 0) {
0x000a9b94 beq.w 0xa9a3c | goto label_0;
| }
0x000a9b98 b 0xa9b7c | goto label_7;
| label_16:
0x000a9b9a mov r0, r1 | r0 = r1;
0x000a9b9c bl 0x6bca8 | r0 = xmlStrdup ();
0x000a9ba0 mov r7, r0 | r7 = r0;
0x000a9ba2 b 0xa9acc | goto label_8;
| label_22:
0x000a9ba4 ldr r0, [pc, 0x30] |
0x000a9ba6 add r0, pc | r0 = 0x153782;
0x000a9ba8 bl 0x6bca8 | r0 = xmlStrdup ();
0x000a9bac mov r7, r0 | r7 = r0;
0x000a9bae b 0xa9ad2 | goto label_4;
| label_17:
0x000a9bb0 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a9bb2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 == 0) {
0x000a9bb4 cbnz r3, 0xa9bc0 |
0x000a9bb6 ldr r3, [pc, 0x18] |
0x000a9bb8 mov r0, r5 | r0 = r5;
0x000a9bba ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9bbc ldr r3, [r3] | r3 = *(0xa9bd2);
0x000a9bbe blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x000a9bc0 movs r3, 1 | r3 = 1;
0x000a9bc2 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x000a9bc4 cmp r7, 0 |
| if (r7 != 0) {
0x000a9bc6 bne 0xa9af2 | goto label_6;
| }
0x000a9bc8 b 0xa9b02 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0xa9bdc */
| #include <stdint.h>
|
; (fcn) fcn.000a9bdc () | void fcn_000a9bdc (int16_t arg1) {
| r0 = arg1;
0x000a9bdc ldr r2, [r0] | r2 = *(r0);
0x000a9bde push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9be2 mov r5, r0 | r5 = r0;
0x000a9be4 ldr.w r6, [pc, 0x454] | r6 = *(0x000aa03c);
0x000a9be8 ldrb r3, [r2] | r3 = *(r2);
0x000a9bea add r6, pc | r6 += pc;
0x000a9bec cmp r3, 0xd |
0x000a9bee it ne |
| if (r3 != 0xd) {
0x000a9bf0 cmpne r3, 0x20 | __asm ("cmpne r3, 0x20");
| }
0x000a9bf2 sub.w r0, r3, 9 | r0 = r3 - 9;
0x000a9bf6 ite eq |
| if (r3 != 0xd) {
0x000a9bf8 moveq r1, 1 | r1 = 1;
| }
| if (r3 == 0xd) {
0x000a9bfa movne r1, 0 | r1 = 0;
| }
0x000a9bfc cmp r0, 1 |
0x000a9bfe it ls |
| if (r0 > 1) {
0x000a9c00 orrls r1, r1, 1 | r1 |= 1;
| }
| if (r1 == 0) {
0x000a9c04 cbz r1, 0xa9c28 | goto label_21;
| }
| do {
0x000a9c06 adds r2, 1 | r2++;
0x000a9c08 str r2, [r5] | *(r5) = r2;
0x000a9c0a ldrb r3, [r2] | r3 = *(r2);
0x000a9c0c cmp r3, 0xd |
0x000a9c0e it ne |
| if (r3 != 0xd) {
0x000a9c10 cmpne r3, 0x20 | __asm ("cmpne r3, 0x20");
| }
0x000a9c12 sub.w r4, r3, 9 | r4 = r3 - 9;
0x000a9c16 ite eq |
| if (r3 != 0xd) {
0x000a9c18 moveq r1, 1 | r1 = 1;
| }
| if (r3 == 0xd) {
0x000a9c1a movne r1, 0 | r1 = 0;
| }
0x000a9c1c cmp r4, 1 |
0x000a9c1e it ls |
| if (r4 > 1) {
0x000a9c20 orrls r1, r1, 1 | r1 |= 1;
| }
0x000a9c24 cmp r1, 0 |
0x000a9c26 bne 0xa9c06 |
| } while (r1 != 0);
| label_21:
0x000a9c28 cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x000a9c2a beq 0xa9cb6 | goto label_22;
| }
0x000a9c2c cmp r3, 0x40 |
| if (r3 == 0x40) {
0x000a9c2e bne 0xa9c42 |
0x000a9c30 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9c32 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a9c34 lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
| if (r1 >= r3) {
0x000a9c36 bpl.w 0xa9dc4 | goto label_23;
| }
| label_2:
0x000a9c3a movs r3, 1 | r3 = 1;
0x000a9c3c str r3, [r5, 8] | *((r5 + 8)) = r3;
| label_0:
0x000a9c3e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x000a9c42 mov r0, r5 | r0 = r5;
0x000a9c44 bl 0xa9250 | r0 = fcn_000a9250 (r0, r1, r2, r3, r4, r5);
0x000a9c48 mov r4, r0 | r4 = r0;
0x000a9c4a cmp r0, 0 |
| if (r0 == 0) {
0x000a9c4c beq.w 0xa9dd0 | goto label_4;
| }
0x000a9c50 ldr r2, [r5] | r2 = *(r5);
0x000a9c52 ldrb r3, [r2] | r3 = *(r2);
0x000a9c54 cmp r3, 0xd |
0x000a9c56 it ne |
| if (r3 != 0xd) {
0x000a9c58 cmpne r3, 0x20 | __asm ("cmpne r3, 0x20");
| }
0x000a9c5a sub.w r1, r3, 9 | r1 = r3 - 9;
0x000a9c5e ite eq |
| if (r3 != 0xd) {
0x000a9c60 moveq r7, 1 | r7 = 1;
| }
| if (r3 == 0xd) {
0x000a9c62 movne r7, 0 | r7 = 0;
| }
0x000a9c64 cmp r1, 1 |
0x000a9c66 it ls |
| if (r1 > 1) {
0x000a9c68 orrls r7, r7, 1 | r7 |= 1;
| }
| if (r7 == 0) {
0x000a9c6c cbz r7, 0xa9c92 | goto label_24;
| }
| do {
0x000a9c6e adds r2, 1 | r2++;
0x000a9c70 str r2, [r5] | *(r5) = r2;
0x000a9c72 ldrb r3, [r2] | r3 = *(r2);
0x000a9c74 cmp r3, 0xd |
0x000a9c76 it ne |
| if (r3 != 0xd) {
0x000a9c78 cmpne r3, 0x20 | __asm ("cmpne r3, 0x20");
| }
0x000a9c7a sub.w r0, r3, 9 | r0 = r3 - 9;
0x000a9c7e ite eq |
| if (r3 != 0xd) {
0x000a9c80 moveq r1, 1 | r1 = 1;
| }
| if (r3 == 0xd) {
0x000a9c82 movne r1, 0 | r1 = 0;
| }
0x000a9c84 cmp r0, 1 |
0x000a9c86 it ls |
| if (r0 > 1) {
0x000a9c88 orrls r1, r1, 1 | r1 |= 1;
| }
0x000a9c8c cmp r1, 0 |
0x000a9c8e bne 0xa9c6e |
| } while (r1 != 0);
0x000a9c90 movs r7, 1 | r7 = 1;
| label_24:
0x000a9c92 cmp r3, 0x3a |
| if (r3 == 0x3a) {
0x000a9c94 beq 0xa9cc8 | goto label_25;
| }
0x000a9c96 cmp r3, 0x2a |
0x000a9c98 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9c9a itt eq |
| if (r3 != 0x2a) {
0x000a9c9c moveq r3, 1 | r3 = 1;
| }
| if (r3 != 0x2a) {
0x000a9c9e streq r3, [r5, 8] | *((r5 + 8)) = r3;
| }
| if (r3 == 0x2a) {
0x000a9ca0 beq.w 0xa9dae | goto label_26;
| }
0x000a9ca4 movs r3, 0 | r3 = 0;
0x000a9ca6 mov r2, r4 | r2 = r4;
0x000a9ca8 movs r1, 2 | r1 = 2;
0x000a9caa bl 0xa996c | r0 = fcn_000a996c (r0, r1, r2, r3);
0x000a9cae cmp r0, 0 |
| if (r0 == 0) {
0x000a9cb0 beq 0xa9c3e | goto label_0;
| }
| label_1:
0x000a9cb2 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9cb4 b 0xa9dae | goto label_26;
| label_22:
0x000a9cb6 adds r4, r2, 1 | r4 = r2 + 1;
0x000a9cb8 movs r3, 0 | r3 = 0;
0x000a9cba ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9cbc mov r2, r3 | r2 = r3;
0x000a9cbe str r4, [r5] | *(r5) = r4;
0x000a9cc0 movs r1, 2 | r1 = 2;
0x000a9cc2 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9cc6 b 0xa996c | void (*0xa996c)() ();
| label_25:
0x000a9cc8 adds r3, r2, 1 | r3 = r2 + 1;
0x000a9cca str r3, [r5] | *(r5) = r3;
0x000a9ccc ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x000a9cce cmp r3, 0x3a |
| if (r3 == 0x3a) {
0x000a9cd0 beq.w 0xa9df8 | goto label_27;
| }
0x000a9cd4 cmp r7, 0 |
| if (r7 != 0) {
0x000a9cd6 bne 0xa9da8 | goto label_5;
| }
0x000a9cd8 subs r3, 9 | r3 -= 9;
0x000a9cda uxtb r3, r3 | r3 = (int8_t) r3;
0x000a9cdc cmp r3, 0x17 |
| if (r3 <= 0x17) {
0x000a9cde bhi 0xa9cec |
0x000a9ce0 movs r2, 0x13 |
0x000a9ce2 movt r2, 0x80 | r2 = 0x800013;
0x000a9ce6 lsrs r2, r3 | r2 >>= r3;
0x000a9ce8 lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 < r2) {
0x000a9cea bmi 0xa9da8 | goto label_5;
| }
| }
0x000a9cec mov r0, r5 | r0 = r5;
0x000a9cee bl 0xa9434 | fcn_000a9434 (r0, r1, r2, r3, r4, r5);
0x000a9cf2 ldrb r3, [r4] | r3 = *(r4);
0x000a9cf4 mov r8, r0 | r8 = r0;
0x000a9cf6 cmp r3, 0x78 |
| if (r3 == 0x78) {
0x000a9cf8 beq.w 0xa9f3e | goto label_28;
| }
| label_12:
0x000a9cfc ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000a9cfe cmp r3, 0 |
0x000a9d00 it gt |
| if (r3 <= 0) {
0x000a9d02 movgt sb, 0 | sb = 0;
| }
| if (r3 > 0) {
0x000a9d06 bgt 0xa9d18 | goto label_29;
| }
0x000a9d08 b 0xa9eca | goto label_30;
| do {
0x000a9d0a ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000a9d0c adds r7, 1 | r7++;
0x000a9d0e add.w sb, sb, 8 | sb += 8;
0x000a9d12 cmp r3, r7 |
| if (r3 <= r7) {
0x000a9d14 ble.w 0xa9eca | goto label_30;
| }
| label_29:
0x000a9d18 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000a9d1a mov r1, r4 | r1 = r4;
0x000a9d1c add r3, sb | r3 += sb;
0x000a9d1e ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a9d20 bl 0x6bd74 | r0 = xmlStrEqual ();
0x000a9d24 cmp r0, 0 |
0x000a9d26 beq 0xa9d0a |
| } while (r0 == 0);
0x000a9d28 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9d2a ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a9d2c ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000a9d2e ldr.w r1, [r3, sb] | r1 = *((r3 + sb));
0x000a9d32 cmp r0, 0 |
| if (r0 == 0) {
0x000a9d34 beq.w 0xa9fa8 | goto label_31;
| }
0x000a9d38 mov.w r2, -1 | r2 = -1;
0x000a9d3c bl 0xa24d0 | r0 = xmlDictLookup ();
0x000a9d40 mov sb, r0 | sb = r0;
| label_14:
0x000a9d42 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000a9d44 cmp r3, r7 |
| if (r3 <= r7) {
0x000a9d46 ble.w 0xa9ed8 | goto label_32;
| }
| label_13:
0x000a9d4a ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9d4c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a9d4e cmp r3, 0 |
| if (r3 == 0) {
0x000a9d50 beq 0xa9dec | goto label_33;
| }
| label_3:
0x000a9d52 cmp.w r8, 0 |
| if (r8 == 0) {
0x000a9d56 beq.w 0xa9ef8 | goto label_34;
| }
0x000a9d5a ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9d5c mov r3, sb | r3 = sb;
0x000a9d5e mov r2, r8 | r2 = r8;
0x000a9d60 movs r1, 2 | r1 = 2;
0x000a9d62 bl 0xa996c | r0 = fcn_000a996c (r0, r1, r2, r3);
0x000a9d66 cmp r0, 0 |
| if (r0 == 0) {
0x000a9d68 beq.w 0xa9c3e | goto label_0;
| }
| label_6:
0x000a9d6c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9d6e ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x000a9d70 cmp.w sb, 0 |
| if (sb == 0) {
0x000a9d74 beq.w 0xaa01c | goto label_35;
| }
0x000a9d78 cmp r4, 0 |
| if (r4 != 0) {
0x000a9d7a bne.w 0xa9c3e | goto label_0;
| }
| label_9:
0x000a9d7e ldr r3, [pc, 0x2c0] |
0x000a9d80 mov r0, sb | r0 = sb;
0x000a9d82 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9d84 ldr r3, [r3] | r3 = *(0xaa042);
0x000a9d86 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000a9d88 cmp.w r8, 0 |
| if (r8 == 0) {
0x000a9d8c beq 0xa9da2 | goto label_10;
| }
| label_7:
0x000a9d8e ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9d90 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a9d92 cmp r3, 0 |
| if (r3 != 0) {
0x000a9d94 bne.w 0xa9c3e | goto label_0;
| }
0x000a9d98 ldr r3, [pc, 0x2a4] |
0x000a9d9a mov r0, r8 | r0 = r8;
0x000a9d9c ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9d9e ldr r3, [r3] | r3 = *(0xaa040);
0x000a9da0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_10:
0x000a9da2 cmp r4, 0 |
| if (r4 != 0) {
0x000a9da4 bne 0xa9cb2 | goto label_1;
| }
0x000a9da6 b 0xa9c3e | goto label_0;
| label_5:
0x000a9da8 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9daa movs r3, 1 | r3 = 1;
0x000a9dac str r3, [r5, 8] | *((r5 + 8)) = r3;
| label_26:
0x000a9dae ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000a9db0 cmp r3, 0 |
| if (r3 != 0) {
0x000a9db2 bne.w 0xa9c3e | goto label_0;
| }
0x000a9db6 ldr r3, [pc, 0x288] |
0x000a9db8 mov r0, r4 | r0 = r4;
0x000a9dba ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9dbc pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9dc0 ldr r3, [r3] | r3 = *(0xaa042);
0x000a9dc2 bx r3 | return uint32_t (*r3)() ();
| label_23:
0x000a9dc4 adds r2, 1 | r2++;
0x000a9dc6 mov r0, r5 | r0 = r5;
0x000a9dc8 str r2, [r5] | *(r5) = r2;
0x000a9dca pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9dce b 0xa99d0 | void (*0xa99d0)() ();
| label_4:
0x000a9dd0 ldr r1, [r5] | r1 = *(r5);
0x000a9dd2 ldrb r2, [r1] | r2 = *(r1);
0x000a9dd4 cmp r2, 0x2a |
| if (r2 != 0x2a) {
0x000a9dd6 bne.w 0xa9c3a | goto label_2;
| }
0x000a9dda adds r1, 1 | r1++;
0x000a9ddc ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9dde str r1, [r5] | *(r5) = r1;
0x000a9de0 mov r3, r4 | r3 = r4;
0x000a9de2 mov r2, r4 | r2 = r4;
0x000a9de4 movs r1, 8 | r1 = 8;
0x000a9de6 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9dea b 0xa996c | void (*0xa996c)() ();
| label_33:
0x000a9dec ldr r3, [pc, 0x250] |
0x000a9dee mov r0, r4 | r0 = r4;
0x000a9df0 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9df2 ldr r3, [r3] | r3 = *(0xaa040);
0x000a9df4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000a9df6 b 0xa9d52 | goto label_3;
| label_27:
0x000a9df8 ldr r1, [pc, 0x248] |
0x000a9dfa adds r2, 2 | r2 += 2;
0x000a9dfc mov r0, r4 | r0 = r4;
0x000a9dfe str r2, [r5] | *(r5) = r2;
0x000a9e00 add r1, pc | r1 = 0x153e48;
0x000a9e02 bl 0x6bd74 | r0 = xmlStrEqual ();
0x000a9e06 cmp r0, 0 |
| if (r0 == 0) {
0x000a9e08 beq.w 0xa9f6e | goto label_36;
| }
0x000a9e0c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9e0e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a9e10 cmp r3, 0 |
| if (r3 == 0) {
0x000a9e12 beq.w 0xa9fb2 | goto label_37;
| }
| label_15:
0x000a9e16 mov r0, r5 | r0 = r5;
0x000a9e18 bl 0xa9434 | r0 = fcn_000a9434 (r0, r1, r2, r3, r4, r5);
0x000a9e1c mov r4, r0 | r4 = r0;
0x000a9e1e cmp r0, 0 |
| if (r0 == 0) {
0x000a9e20 beq 0xa9dd0 | goto label_4;
| }
0x000a9e22 ldr r3, [r5] | r3 = *(r5);
0x000a9e24 ldrb r2, [r3] | r2 = *(r3);
0x000a9e26 cmp r2, 0x3a |
| if (r2 != 0x3a) {
0x000a9e28 bne.w 0xa9f94 | goto label_38;
| }
0x000a9e2c adds r2, r3, 1 | r2 = r3 + 1;
0x000a9e2e str r2, [r5] | *(r5) = r2;
0x000a9e30 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x000a9e32 cmp r3, 0xd |
0x000a9e34 it ne |
| if (r3 != 0xd) {
0x000a9e36 cmpne r3, 0x20 | __asm ("cmpne r3, 0x20");
| }
0x000a9e38 sub.w r3, r3, 9 | r3 -= 9;
0x000a9e3c ite eq |
| if (r3 != 0xd) {
0x000a9e3e moveq r2, 1 | r2 = 1;
| }
| if (r3 == 0xd) {
0x000a9e40 movne r2, 0 | r2 = 0;
| }
0x000a9e42 cmp r3, 1 |
0x000a9e44 it ls |
| if (r3 > 1) {
0x000a9e46 orrls r2, r2, 1 | r2 |= 1;
| }
0x000a9e4a cmp r2, 0 |
| if (r2 != 0) {
0x000a9e4c bne 0xa9da8 | goto label_5;
| }
0x000a9e4e mov r0, r5 | r0 = r5;
0x000a9e50 bl 0xa9434 | fcn_000a9434 (r0, r1, r2, r3, r4, r5);
0x000a9e54 ldrb r3, [r4] | r3 = *(r4);
0x000a9e56 mov r8, r0 | r8 = r0;
0x000a9e58 cmp r3, 0x78 |
| if (r3 == 0x78) {
0x000a9e5a beq.w 0xa9fcc | goto label_39;
| }
| label_17:
0x000a9e5e ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000a9e60 cmp r3, 0 |
0x000a9e62 itt gt |
| if (r3 <= 0) {
0x000a9e64 movgt r7, 0 | r7 = 0;
| }
| if (r3 <= 0) {
0x000a9e66 movgt sl, r7 | sl = r7;
| }
| if (r3 > 0) {
0x000a9e68 bgt 0xa9e78 | goto label_40;
| }
0x000a9e6a b 0xa9eca | goto label_30;
| do {
0x000a9e6c ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000a9e6e add.w sl, sl, 1 | sl++;
0x000a9e72 adds r7, 8 | r7 += 8;
0x000a9e74 cmp r3, sl |
| if (r3 <= sl) {
0x000a9e76 ble 0xa9eca | goto label_30;
| }
| label_40:
0x000a9e78 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000a9e7a mov r1, r4 | r1 = r4;
0x000a9e7c add r3, r7 | r3 += r7;
0x000a9e7e ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a9e80 bl 0x6bd74 | r0 = xmlStrEqual ();
0x000a9e84 cmp r0, 0 |
0x000a9e86 beq 0xa9e6c |
| } while (r0 == 0);
0x000a9e88 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9e8a ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a9e8c ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000a9e8e ldr r1, [r3, r7] | r1 = *((r3 + r7));
0x000a9e90 cmp r0, 0 |
| if (r0 == 0) {
0x000a9e92 beq.w 0xaa012 | goto label_41;
| }
0x000a9e96 mov.w r2, -1 | r2 = -1;
0x000a9e9a bl 0xa24d0 | r0 = xmlDictLookup ();
0x000a9e9e mov sb, r0 | sb = r0;
| label_20:
0x000a9ea0 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000a9ea2 cmp r3, sl |
| if (r3 <= sl) {
0x000a9ea4 ble 0xa9ed8 | goto label_32;
| }
| label_18:
0x000a9ea6 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9ea8 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a9eaa cmp r3, 0 |
| if (r3 == 0) {
0x000a9eac beq.w 0xaa006 | goto label_42;
| }
| label_19:
0x000a9eb0 cmp.w r8, 0 |
| if (r8 == 0) {
0x000a9eb4 beq 0xa9ef8 | goto label_34;
| }
0x000a9eb6 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9eb8 mov r3, sb | r3 = sb;
0x000a9eba mov r2, r8 | r2 = r8;
0x000a9ebc movs r1, 3 | r1 = 3;
0x000a9ebe bl 0xa996c | r0 = fcn_000a996c (r0, r1, r2, r3);
0x000a9ec2 cmp r0, 0 |
| if (r0 != 0) {
0x000a9ec4 bne.w 0xa9d6c | goto label_6;
| }
0x000a9ec8 b 0xa9c3e | goto label_0;
| label_30:
0x000a9eca movs r3, 1 | r3 = 1;
0x000a9ecc str r3, [r5, 8] | *((r5 + 8)) = r3;
| label_8:
0x000a9ece cmp.w r8, 0 |
| if (r8 != 0) {
0x000a9ed2 bne.w 0xa9d8e | goto label_7;
| }
0x000a9ed6 b 0xa9cb2 | goto label_1;
| label_32:
0x000a9ed8 movs r3, 1 | r3 = 1;
0x000a9eda str r3, [r5, 8] | *((r5 + 8)) = r3;
0x000a9edc cmp.w sb, 0 |
| if (sb == 0) {
0x000a9ee0 beq 0xa9ece | goto label_8;
| }
0x000a9ee2 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9ee4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000a9ee6 cmp r3, 0 |
| if (r3 == 0) {
0x000a9ee8 beq.w 0xa9d7e | goto label_9;
| }
0x000a9eec cmp.w r8, 0 |
| if (r8 == 0) {
0x000a9ef0 beq.w 0xa9da2 | goto label_10;
| }
0x000a9ef4 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_34:
0x000a9ef8 ldr r3, [r5] | r3 = *(r5);
0x000a9efa ldrb r2, [r3] | r2 = *(r3);
0x000a9efc cmp r2, 0x2a |
0x000a9efe itt ne |
| if (r2 == 0x2a) {
0x000a9f00 movne r3, 1 | r3 = 1;
| }
| if (r2 == 0x2a) {
0x000a9f02 strne r3, [r5, 8] | *((r5 + 8)) = r3;
| }
| if (r2 == 0x2a) {
0x000a9f04 beq 0xa9f26 | goto label_43;
| }
| label_11:
0x000a9f06 cmp.w sb, 0 |
| if (sb == 0) {
0x000a9f0a beq.w 0xa9c3e | goto label_0;
| }
0x000a9f0e ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9f10 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a9f12 cmp r3, 0 |
| if (r3 != 0) {
0x000a9f14 bne.w 0xa9c3e | goto label_0;
| }
0x000a9f18 ldr r3, [pc, 0x124] |
0x000a9f1a mov r0, sb | r0 = sb;
0x000a9f1c ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9f1e pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9f22 ldr r3, [r3] | r3 = *(0xaa040);
0x000a9f24 bx r3 | return uint32_t (*r3)() ();
| label_43:
0x000a9f26 adds r2, r3, 1 | r2 = r3 + 1;
0x000a9f28 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9f2a str r2, [r5] | *(r5) = r2;
0x000a9f2c mov r3, r8 | r3 = r8;
0x000a9f2e mov r2, sb | r2 = sb;
0x000a9f30 movs r1, 7 | r1 = 7;
0x000a9f32 bl 0xa996c | r0 = fcn_000a996c (r0, r1, r2, r3);
0x000a9f36 cmp r0, 0 |
| if (r0 == 0) {
0x000a9f38 beq.w 0xa9c3e | goto label_0;
| }
0x000a9f3c b 0xa9f06 | goto label_11;
| label_28:
0x000a9f3e ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x000a9f40 cmp r3, 0x6d |
| if (r3 != 0x6d) {
0x000a9f42 bne.w 0xa9cfc | goto label_12;
| }
0x000a9f46 ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x000a9f48 cmp r3, 0x6c |
| if (r3 != 0x6c) {
0x000a9f4a bne.w 0xa9cfc | goto label_12;
| }
0x000a9f4e ldrb r3, [r4, 3] | r3 = *((r4 + 3));
0x000a9f50 cmp r3, 0 |
| if (r3 != 0) {
0x000a9f52 bne.w 0xa9cfc | goto label_12;
| }
0x000a9f56 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9f58 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a9f5a cmp r0, 0 |
| if (r0 == 0) {
0x000a9f5c beq 0xa9ffa | goto label_44;
| }
0x000a9f5e ldr r1, [pc, 0xe8] |
0x000a9f60 mov.w r2, -1 | r2 = -1;
0x000a9f64 add r1, pc | r1 = 0x153fb2;
0x000a9f66 bl 0xa24d0 | r0 = xmlDictLookup ();
0x000a9f6a mov sb, r0 | sb = r0;
0x000a9f6c b 0xa9d4a | goto label_13;
| label_36:
0x000a9f6e ldr r1, [pc, 0xdc] |
0x000a9f70 mov r0, r4 | r0 = r4;
0x000a9f72 add r1, pc | r1 = 0x153fc4;
0x000a9f74 bl 0x6bd74 | r0 = xmlStrEqual ();
0x000a9f78 cmp r0, 0 |
| if (r0 == 0) {
0x000a9f7a beq.w 0xa9da8 | goto label_5;
| }
0x000a9f7e ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9f80 ldr r2, [r3, 4] | r2 = *((r3 + 4));
| if (r2 == 0) {
0x000a9f82 cbz r2, 0xa9fbe | goto label_45;
| }
| label_16:
0x000a9f84 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a9f86 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 < r3) {
0x000a9f88 bmi.w 0xa9c3a | goto label_2;
| }
0x000a9f8c mov r0, r5 | r0 = r5;
0x000a9f8e pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000a9f92 b 0xa99d0 | void (*0xa99d0)() ();
| label_38:
0x000a9f94 mov r2, r0 | r2 = r0;
0x000a9f96 movs r3, 0 | r3 = 0;
0x000a9f98 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a9f9a movs r1, 3 | r1 = 3;
0x000a9f9c bl 0xa996c | r0 = fcn_000a996c (r0, r1, r2, r3);
0x000a9fa0 cmp r0, 0 |
| if (r0 == 0) {
0x000a9fa2 beq.w 0xa9c3e | goto label_0;
| }
0x000a9fa6 b 0xa9cb2 | goto label_1;
| label_31:
0x000a9fa8 mov r0, r1 | r0 = r1;
0x000a9faa bl 0x6bca8 | r0 = xmlStrdup ();
0x000a9fae mov sb, r0 | sb = r0;
0x000a9fb0 b 0xa9d42 | goto label_14;
| label_37:
0x000a9fb2 ldr r3, [pc, 0x8c] |
0x000a9fb4 mov r0, r4 | r0 = r4;
0x000a9fb6 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9fb8 ldr r3, [r3] | r3 = *(0xaa042);
0x000a9fba blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000a9fbc b 0xa9e16 | goto label_15;
| label_45:
0x000a9fbe ldr r3, [pc, 0x80] |
0x000a9fc0 mov r0, r4 | r0 = r4;
0x000a9fc2 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a9fc4 ldr r3, [r3] | r3 = *(0xaa042);
0x000a9fc6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000a9fc8 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9fca b 0xa9f84 | goto label_16;
| label_39:
0x000a9fcc ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x000a9fce cmp r3, 0x6d |
| if (r3 != 0x6d) {
0x000a9fd0 bne.w 0xa9e5e | goto label_17;
| }
0x000a9fd4 ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x000a9fd6 cmp r3, 0x6c |
| if (r3 != 0x6c) {
0x000a9fd8 bne.w 0xa9e5e | goto label_17;
| }
0x000a9fdc ldrb r3, [r4, 3] | r3 = *((r4 + 3));
0x000a9fde cmp r3, 0 |
| if (r3 != 0) {
0x000a9fe0 bne.w 0xa9e5e | goto label_17;
| }
0x000a9fe4 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a9fe6 ldr r0, [r3, 4] | r0 = *((r3 + 4));
| if (r0 == 0) {
0x000a9fe8 cbz r0, 0xaa030 | goto label_46;
| }
0x000a9fea ldr r1, [pc, 0x64] |
0x000a9fec mov.w r2, -1 | r2 = -1;
0x000a9ff0 add r1, pc | r1 = 0x154046;
0x000a9ff2 bl 0xa24d0 | r0 = xmlDictLookup ();
0x000a9ff6 mov sb, r0 | sb = r0;
0x000a9ff8 b 0xa9ea6 | goto label_18;
| label_44:
0x000a9ffa ldr r0, [pc, 0x58] |
0x000a9ffc add r0, pc | r0 = 0x154056;
0x000a9ffe bl 0x6bca8 | r0 = xmlStrdup ();
0x000aa002 mov sb, r0 | sb = r0;
0x000aa004 b 0xa9d4a | goto label_13;
| label_42:
0x000aa006 ldr r3, [pc, 0x38] |
0x000aa008 mov r0, r4 | r0 = r4;
0x000aa00a ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000aa00c ldr r3, [r3] | r3 = *(0xaa042);
0x000aa00e blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000aa010 b 0xa9eb0 | goto label_19;
| label_41:
0x000aa012 mov r0, r1 | r0 = r1;
0x000aa014 bl 0x6bca8 | r0 = xmlStrdup ();
0x000aa018 mov sb, r0 | sb = r0;
0x000aa01a b 0xa9ea0 | goto label_20;
| label_35:
0x000aa01c cmp r4, 0 |
| if (r4 != 0) {
0x000aa01e bne.w 0xa9c3e | goto label_0;
| }
0x000aa022 ldr r3, [pc, 0x1c] |
0x000aa024 mov r0, r8 | r0 = r8;
0x000aa026 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000aa028 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000aa02c ldr r3, [r3] | r3 = *(0xaa042);
0x000aa02e bx r3 | return uint32_t (*r3)() ();
| label_46:
0x000aa030 ldr r0, [pc, 0x24] |
0x000aa032 add r0, pc | r0 = 0x15408e;
0x000aa034 bl 0x6bca8 | r0 = xmlStrdup ();
0x000aa038 mov sb, r0 | sb = r0;
0x000aa03a b 0xa9ea6 | goto label_18;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x7194c */
| #include <stdint.h>
|
; (fcn) sym.xmlRegexpPrint () | void xmlRegexpPrint (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, 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_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0007194c cmp r0, 0 |
| if (arg_0h == ) {
0x0007194e beq.w 0x71dac | goto label_26;
| }
0x00071952 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00071956 mov r3, r0 | r3 = r0;
0x00071958 mov r4, r0 | r4 = r0;
0x0007195a ldr.w r0, [pc, 0x468] | r0 = *(0x00071dc4);
0x0007195e mov r6, r1 | r6 = r1;
0x00071960 sub sp, 0x1c |
0x00071962 movs r2, 9 | r2 = 9;
0x00071964 movs r1, 1 | r1 = 1;
0x00071966 add r0, pc | r0 += pc;
0x00071968 blx 0x1baf8 | fcn_0001baf8 ();
0x0007196c cmp r6, 0 |
| if (r6 == 0) {
0x0007196e beq.w 0x71dae | goto label_27;
| }
0x00071972 ldr.w r2, [pc, 0x454] |
0x00071976 movs r1, 1 | r1 = 1;
0x00071978 ldr r3, [r6] | r3 = *(r6);
0x0007197a mov r0, r4 | r0 = r4;
0x0007197c add r2, pc | r2 = 0xe374a;
0x0007197e blx 0x1bb8c | fcn_0001bb8c ();
0x00071982 mov r1, r4 | r1 = r4;
0x00071984 movs r0, 0xa | r0 = 0xa;
0x00071986 blx 0x1bbd0 | memmove (r0, r1, r2);
0x0007198a ldr.w r2, [pc, 0x440] |
0x0007198e movs r1, 1 | r1 = 1;
0x00071990 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00071992 mov r0, r4 | r0 = r4;
0x00071994 add r2, pc | r2 = 0xe3766;
0x00071996 blx 0x1bb8c | fcn_0001bb8c ();
0x0007199a ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0007199c cmp r3, 0 |
| if (r3 <= 0) {
0x0007199e ble 0x71a54 | goto label_28;
| }
0x000719a0 ldr.w sb, [pc, 0x42c] | sb = *(0x00071dd0);
0x000719a4 movs r7, 0 | r7 = 0;
0x000719a6 ldr.w r3, [pc, 0x42c] |
0x000719aa add sb, pc | sb += pc;
0x000719ac add r3, pc | r3 = 0xe3786;
0x000719ae str r3, [sp, 0x10] | var_10h = r3;
| do {
0x000719b0 mov r3, r7 | r3 = r7;
0x000719b2 mov r2, sb | r2 = sb;
0x000719b4 movs r1, 1 | r1 = 1;
0x000719b6 mov r0, r4 | r0 = r4;
0x000719b8 blx 0x1bb8c | fcn_0001bb8c ();
0x000719bc ldr r5, [r6, 0x10] | r5 = *((r6 + 0x10));
0x000719be mov r3, r4 | r3 = r4;
0x000719c0 ldr.w r0, [pc, 0x414] |
0x000719c4 movs r2, 7 | r2 = 7;
0x000719c6 movs r1, 1 | r1 = 1;
0x000719c8 ldr.w r5, [r5, r7, lsl 2] | offset_0 = r7 << 2;
| r5 = *((r5 + offset_0));
0x000719cc add r0, pc | r0 = 0xe37a8;
0x000719ce blx 0x1baf8 | fcn_0001baf8 ();
0x000719d2 cmp r5, 0 |
| if (r5 == 0) {
0x000719d4 beq.w 0x71d8c | goto label_29;
| }
0x000719d8 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000719da cmp r3, 0 |
| if (r3 != 0) {
0x000719dc bne.w 0x71c36 | goto label_30;
| }
| label_6:
0x000719e0 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x000719e2 mov r0, r4 | r0 = r4;
0x000719e4 bl 0x6dbdc | fcn_0006dbdc (r0, r1, r2, r3, r4, r5, r6);
0x000719e8 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x000719ea subs r3, 1 | r3--;
0x000719ec cmp r3, 7 |
| if (r3 <= 7) {
0x000719ee bhi 0x71a2a |
| /* switch table (9 cases) at 0x719f4 */
0x000719f0 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
0x00071a04 ldr r0, [pc, 0x3d4] |
0x00071a06 mov r3, r4 | r3 = r4;
0x00071a08 movs r2, 6 | r2 = 6;
0x00071a0a movs r1, 1 | r1 = 1;
0x00071a0c add r0, pc | r0 = 0xe37ec;
0x00071a0e blx 0x1baf8 | fcn_0001baf8 ();
0x00071a12 ldr r3, [r5, 8] | r3 = *((r5 + 8));
| label_11:
0x00071a14 cmp r3, 8 |
| if (r3 != 8) {
0x00071a16 bne 0x71a2a | goto label_31;
| }
0x00071a18 ldrd r3, r2, [r5, 0xc] | __asm ("ldrd r3, r2, [r5, 0xc]");
0x00071a1c movs r1, 1 | r1 = 1;
0x00071a1e mov r0, r4 | r0 = r4;
0x00071a20 str r2, [sp] | *(sp) = r2;
0x00071a22 ldr r2, [pc, 0x3bc] |
0x00071a24 add r2, pc | r2 = 0xe380a;
0x00071a26 blx 0x1bb8c | fcn_0001bb8c ();
| }
| label_31:
0x00071a2a ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00071a2c cmp r3, 5 |
| if (r3 == 5) {
0x00071a2e beq.w 0x71c84 | goto label_32;
| }
0x00071a32 cmp r3, 2 |
| if (r3 == 2) {
0x00071a34 beq.w 0x71c9a | goto label_33;
| }
| label_9:
0x00071a38 cmp r3, 3 |
| if (r3 == 3) {
0x00071a3a beq.w 0x71caa | goto label_34;
| }
0x00071a3e cmp r3, 4 |
| if (r3 == 4) {
0x00071a40 beq.w 0x71c46 | goto label_35;
| }
0x00071a44 mov r1, r4 | r1 = r4;
0x00071a46 movs r0, 0xa | r0 = 0xa;
0x00071a48 blx 0x1bbd0 | memmove (r0, r1, r2);
| label_7:
0x00071a4c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00071a4e adds r7, 1 | r7++;
0x00071a50 cmp r7, r3 |
0x00071a52 blt 0x719b0 |
| } while (r7 < r3);
| label_28:
0x00071a54 ldr r2, [pc, 0x38c] |
0x00071a56 movs r1, 1 | r1 = 1;
0x00071a58 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00071a5a mov r0, r4 | r0 = r4;
0x00071a5c add r2, pc | r2 = 0xe3844;
0x00071a5e blx 0x1bb8c | fcn_0001bb8c ();
0x00071a62 mov r1, r4 | r1 = r4;
0x00071a64 movs r0, 0xa | r0 = 0xa;
0x00071a66 blx 0x1bbd0 | memmove (r0, r1, r2);
0x00071a6a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00071a6c cmp r3, 0 |
| if (r3 <= 0) {
0x00071a6e ble.w 0x71bac | goto label_36;
| }
0x00071a72 ldr r3, [pc, 0x374] |
0x00071a74 movs r2, 0 | r2 = 0;
0x00071a76 ldr.w fp, [pc, 0x374] | fp = *(0x00071dec);
0x00071a7a str r2, [sp, 8] | var_8h = r2;
0x00071a7c add r3, pc | r3 = 0xe386a;
0x00071a7e str r6, [sp, 0xc] | var_ch = r6;
0x00071a80 str r3, [sp, 0x10] | var_10h = r3;
0x00071a82 add fp, pc |
0x00071a84 ldr r3, [pc, 0x368] |
0x00071a86 add r3, pc | r3 = 0xe387a;
0x00071a88 str r3, [sp, 0x14] | var_14h = r3;
0x00071a8a movw r3, 0x3456 |
0x00071a8e movt r3, 0x12 | r3 = 0x123456;
0x00071a92 mov sl, r3 | sl = r3;
| label_2:
0x00071a94 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00071a96 movs r2, 8 | r2 = 8;
0x00071a98 ldr r6, [sp, 8] | r6 = var_8h;
0x00071a9a movs r1, 1 | r1 = 1;
0x00071a9c ldr r0, [sp, 0x10] | r0 = var_10h;
0x00071a9e ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x00071aa0 mov r3, r4 | r3 = r4;
0x00071aa2 ldr.w r8, [r5, r6, lsl 2] | offset_1 = r6 << 2;
| r8 = *((r5 + offset_1));
0x00071aa6 blx 0x1baf8 | fcn_0001baf8 ();
0x00071aaa cmp.w r8, 0 |
| if (r8 == 0) {
0x00071aae beq.w 0x71d9c | goto label_37;
| }
0x00071ab2 ldr.w r1, [r8] | r1 = *(r8);
0x00071ab6 cmp r1, 1 |
| if (r1 == 1) {
0x00071ab8 beq.w 0x71c5e | goto label_38;
| }
0x00071abc cmp r1, 2 |
| if (r1 == 2) {
0x00071abe beq.w 0x71c74 | goto label_39;
| }
| label_8:
0x00071ac2 ldr.w r0, [r8, 0x18] | r0 = *((r8 + 0x18));
0x00071ac6 movs r1, 1 | r1 = 1;
0x00071ac8 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00071acc ldr r2, [sp, 0x14] | r2 = var_14h;
0x00071ace str r0, [sp] | *(sp) = r0;
0x00071ad0 mov r0, r4 | r0 = r4;
0x00071ad2 blx 0x1bb8c | fcn_0001bb8c ();
0x00071ad6 ldr.w r3, [r8, 0x18] | r3 = *((r8 + 0x18));
0x00071ada cmp r3, 0 |
| if (r3 <= 0) {
0x00071adc ble 0x71b9a | goto label_13;
| }
0x00071ade ldr.w sb, [pc, 0x314] | sb = *(0x00071df4);
0x00071ae2 movs r6, 0 | r6 = 0;
0x00071ae4 mov r7, r6 | r7 = r6;
0x00071ae6 add sb, pc | sb += pc;
0x00071ae8 b 0x71b22 |
| while (r3 != sl) {
0x00071aea cmp r3, 0 |
| if (r3 >= 0) {
0x00071aec blt 0x71afa |
0x00071aee ldr r2, [pc, 0x308] |
0x00071af0 movs r1, 1 | r1 = 1;
0x00071af2 mov r0, r4 | r0 = r4;
0x00071af4 add r2, pc | r2 = 0xe38f2;
0x00071af6 blx 0x1bb8c | fcn_0001bb8c ();
| }
0x00071afa ldr r3, [r5] | r3 = *(r5);
0x00071afc cmp r3, 0 |
| if (r3 == 0) {
0x00071afe beq 0x71b80 | goto label_40;
| }
| label_0:
0x00071b00 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00071b02 cmp r2, 2 |
| if (r2 == 2) {
0x00071b04 beq 0x71bf6 | goto label_41;
| }
| label_3:
0x00071b06 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00071b08 movs r1, 1 | r1 = 1;
0x00071b0a ldr r3, [r3] | r3 = *(r3);
0x00071b0c mov r0, r4 | r0 = r4;
0x00071b0e str r2, [sp] | *(sp) = r2;
0x00071b10 mov r2, fp | r2 = fp;
0x00071b12 blx 0x1bb8c | fcn_0001bb8c ();
| label_4:
0x00071b16 ldr.w r3, [r8, 0x18] | r3 = *((r8 + 0x18));
0x00071b1a adds r7, 1 | r7++;
0x00071b1c adds r6, 0x14 | r6 += 0x14;
0x00071b1e cmp r7, r3 |
| if (r7 >= r3) {
0x00071b20 bge 0x71b9a | goto label_13;
| }
| label_1:
0x00071b22 ldr.w r5, [r8, 0x1c] | r5 = *((r8 + 0x1c));
0x00071b26 mov r3, r4 | r3 = r4;
0x00071b28 movs r2, 9 | r2 = 9;
0x00071b2a movs r1, 1 | r1 = 1;
0x00071b2c mov r0, sb | r0 = sb;
0x00071b2e add r5, r6 | r5 += r6;
0x00071b30 blx 0x1baf8 | fcn_0001baf8 ();
0x00071b34 cmp r5, 0 |
| if (r5 == 0) {
0x00071b36 beq 0x71c26 | goto label_42;
| }
0x00071b38 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00071b3a cmp r3, 0 |
| if (r3 < 0) {
0x00071b3c blt 0x71c08 | goto label_43;
| }
0x00071b3e ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
| if (r3 != 0) {
0x00071b40 cbz r3, 0x71b54 |
0x00071b42 cmp r3, 2 |
0x00071b44 mov r3, r4 | r3 = r4;
| if (r3 == 2) {
0x00071b46 beq 0x71c18 | goto label_44;
| }
0x00071b48 ldr r0, [pc, 0x2b0] |
0x00071b4a movs r2, 0x11 | r2 = 0x11;
0x00071b4c movs r1, 1 | r1 = 1;
0x00071b4e add r0, pc | r0 = 0xe394e;
0x00071b50 blx 0x1baf8 | fcn_0001baf8 ();
| }
| label_5:
0x00071b54 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00071b56 cmp r3, 0 |
| if (r3 >= 0) {
0x00071b58 blt 0x71b66 |
0x00071b5a ldr r2, [pc, 0x2a4] |
0x00071b5c movs r1, 1 | r1 = 1;
0x00071b5e mov r0, r4 | r0 = r4;
0x00071b60 add r2, pc | r2 = 0xe3966;
0x00071b62 blx 0x1bb8c | fcn_0001bb8c ();
| }
0x00071b66 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00071b68 cmp r3, sl |
0x00071b6a bne 0x71aea |
| }
0x00071b6c ldr r0, [pc, 0x294] |
0x00071b6e mov r3, r4 | r3 = r4;
0x00071b70 movs r2, 0x10 | r2 = 0x10;
0x00071b72 movs r1, 1 | r1 = 1;
0x00071b74 add r0, pc | r0 = 0xe397c;
0x00071b76 blx 0x1baf8 | fcn_0001baf8 ();
0x00071b7a ldr r3, [r5] | r3 = *(r5);
0x00071b7c cmp r3, 0 |
| if (r3 != 0) {
0x00071b7e bne 0x71b00 | goto label_0;
| }
| label_40:
0x00071b80 ldr r2, [pc, 0x284] |
0x00071b82 movs r1, 1 | r1 = 1;
0x00071b84 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00071b86 mov r0, r4 | r0 = r4;
0x00071b88 adds r7, 1 | r7++;
0x00071b8a adds r6, 0x14 | r6 += 0x14;
0x00071b8c add r2, pc | r2 = 0xe3998;
0x00071b8e blx 0x1bb8c | fcn_0001bb8c ();
0x00071b92 ldr.w r3, [r8, 0x18] | r3 = *((r8 + 0x18));
0x00071b96 cmp r7, r3 |
| if (r7 < r3) {
0x00071b98 blt 0x71b22 | goto label_1;
| }
| label_13:
0x00071b9a ldr r3, [sp, 0xc] | r3 = var_ch;
0x00071b9c ldr r2, [sp, 8] | r2 = var_8h;
0x00071b9e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00071ba0 adds r2, 1 | r2++;
0x00071ba2 str r2, [sp, 8] | var_8h = r2;
0x00071ba4 cmp r2, r3 |
| if (r2 < r3) {
0x00071ba6 blt.w 0x71a94 | goto label_2;
| }
0x00071baa ldr r6, [sp, 0xc] | r6 = var_ch;
| label_36:
0x00071bac ldr r2, [pc, 0x25c] |
0x00071bae movs r1, 1 | r1 = 1;
0x00071bb0 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00071bb2 mov r0, r4 | r0 = r4;
0x00071bb4 add r2, pc | r2 = 0xe39c4;
0x00071bb6 blx 0x1bb8c | fcn_0001bb8c ();
0x00071bba ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00071bbc cmp r3, 0 |
| if (r3 <= 0) {
0x00071bbe ble 0x71bf0 | goto label_45;
| }
0x00071bc0 ldr.w r8, [pc, 0x24c] |
0x00071bc4 movs r5, 0 | r5 = 0;
0x00071bc6 mov sb, r4 | sb = r4;
0x00071bc8 add r8, pc | r8 = 0xe39dc;
| do {
0x00071bca ldr r7, [r6, 0x18] | r7 = *((r6 + 0x18));
0x00071bcc mov r3, r5 | r3 = r5;
0x00071bce movs r1, 1 | r1 = 1;
0x00071bd0 mov r2, r8 | r2 = r8;
0x00071bd2 mov r0, sb | r0 = sb;
0x00071bd4 add.w ip, r7, r5, lsl 3 |
0x00071bd8 ldr.w r4, [ip, 4] | r4 = *((ip + 4));
0x00071bdc str r4, [sp, 4] | var_4h = r4;
0x00071bde ldr.w r7, [r7, r5, lsl 3] | offset_2 = r5 << 3;
| r7 = *((r7 + offset_2));
0x00071be2 add r5, r1 | r5 += r1;
0x00071be4 str r7, [sp] | *(sp) = r7;
0x00071be6 blx 0x1bb8c | fcn_0001bb8c ();
0x00071bea ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00071bec cmp r5, r3 |
0x00071bee blt 0x71bca |
| } while (r5 < r3);
| label_45:
0x00071bf0 add sp, 0x1c |
0x00071bf2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_41:
0x00071bf6 ldr r2, [pc, 0x21c] |
0x00071bf8 movs r1, 1 | r1 = 1;
0x00071bfa ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x00071bfc mov r0, r4 | r0 = r4;
0x00071bfe add r2, pc | r2 = 0xe3a18;
0x00071c00 blx 0x1bb8c | fcn_0001bb8c ();
0x00071c04 ldr r3, [r5] | r3 = *(r5);
0x00071c06 b 0x71b06 | goto label_3;
| label_43:
0x00071c08 ldr r0, [pc, 0x20c] |
0x00071c0a mov r3, r4 | r3 = r4;
0x00071c0c movs r2, 8 | r2 = 8;
0x00071c0e movs r1, 1 | r1 = 1;
0x00071c10 add r0, pc | r0 = 0xe3a2c;
0x00071c12 blx 0x1baf8 | fcn_0001baf8 ();
0x00071c16 b 0x71b16 | goto label_4;
| label_44:
0x00071c18 ldr r0, [pc, 0x200] |
0x00071c1a movs r2, 0x16 | r2 = 0x16;
0x00071c1c movs r1, 1 | r1 = 1;
0x00071c1e add r0, pc | r0 = 0xe3a3e;
0x00071c20 blx 0x1baf8 | fcn_0001baf8 ();
0x00071c24 b 0x71b54 | goto label_5;
| label_42:
0x00071c26 ldr r0, [pc, 0x1f8] |
0x00071c28 mov r3, r4 | r3 = r4;
0x00071c2a movs r2, 5 | r2 = 5;
0x00071c2c movs r1, 1 | r1 = 1;
0x00071c2e add r0, pc | r0 = 0xe3a54;
0x00071c30 blx 0x1baf8 | fcn_0001baf8 ();
0x00071c34 b 0x71b16 | goto label_4;
| label_30:
0x00071c36 ldr r0, [pc, 0x1ec] |
0x00071c38 mov r3, r4 | r3 = r4;
0x00071c3a movs r2, 4 | r2 = 4;
0x00071c3c movs r1, 1 | r1 = 1;
0x00071c3e add r0, pc | r0 = 0xe3a68;
0x00071c40 blx 0x1baf8 | fcn_0001baf8 ();
0x00071c44 b 0x719e0 | goto label_6;
| label_35:
0x00071c46 ldr r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x00071c48 movs r1, 1 | r1 = 1;
0x00071c4a ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00071c4c mov r0, r4 | r0 = r4;
0x00071c4e ldr r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x00071c50 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00071c52 str r2, [sp] | *(sp) = r2;
0x00071c54 ldr r2, [pc, 0x1d0] |
0x00071c56 add r2, pc | r2 = 0xe3a82;
0x00071c58 blx 0x1bb8c | fcn_0001bb8c ();
0x00071c5c b 0x71a4c | goto label_7;
| label_38:
0x00071c5e ldr r0, [pc, 0x1cc] |
0x00071c60 mov r3, r4 | r3 = r4;
0x00071c62 movs r2, 6 | r2 = 6;
0x00071c64 add r0, pc | r0 = 0xe3a96;
0x00071c66 blx 0x1baf8 | fcn_0001baf8 ();
0x00071c6a ldr.w r1, [r8] | r1 = *(r8);
0x00071c6e cmp r1, 2 |
| if (r1 != 2) {
0x00071c70 bne.w 0x71ac2 | goto label_8;
| }
| label_39:
0x00071c74 ldr r0, [pc, 0x1b8] |
0x00071c76 mov r3, r4 | r3 = r4;
0x00071c78 movs r2, 6 | r2 = 6;
0x00071c7a movs r1, 1 | r1 = 1;
0x00071c7c add r0, pc | r0 = 0xe3ab0;
0x00071c7e blx 0x1baf8 | fcn_0001baf8 ();
0x00071c82 b 0x71ac2 | goto label_8;
| label_32:
0x00071c84 ldr r2, [pc, 0x1ac] |
0x00071c86 movs r1, 1 | r1 = 1;
0x00071c88 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00071c8a mov r0, r4 | r0 = r4;
0x00071c8c add r2, pc | r2 = 0xe3ac4;
0x00071c8e blx 0x1bb8c | fcn_0001bb8c ();
0x00071c92 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00071c94 cmp r3, 2 |
| if (r3 != 2) {
0x00071c96 bne.w 0x71a38 | goto label_9;
| }
| label_33:
0x00071c9a ldr r2, [pc, 0x19c] |
0x00071c9c movs r1, 1 | r1 = 1;
0x00071c9e ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x00071ca0 mov r0, r4 | r0 = r4;
0x00071ca2 add r2, pc | r2 = 0xe3ae0;
0x00071ca4 blx 0x1bb8c | fcn_0001bb8c ();
0x00071ca8 b 0x71a4c | goto label_7;
| label_34:
0x00071caa ldr r2, [pc, 0x190] |
0x00071cac movs r1, 1 | r1 = 1;
0x00071cae ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00071cb0 mov r0, r4 | r0 = r4;
0x00071cb2 add r2, pc | r2 = 0xe3af4;
0x00071cb4 blx 0x1bb8c | fcn_0001bb8c ();
0x00071cb8 ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00071cba cmp r3, 0 |
| if (r3 <= 0) {
0x00071cbc ble.w 0x71a4c | goto label_7;
| }
0x00071cc0 ldr.w sl, [pc, 0x17c] | sl = *(0x00071e40);
0x00071cc4 mov.w r8, 0 | r8 = 0;
0x00071cc8 strd r7, r6, [sp, 8] | __asm ("strd r7, r6, [var_8h]");
0x00071ccc ldr r6, [sp, 0x10] | r6 = var_10h;
0x00071cce add sl, pc | sl += pc;
0x00071cd0 b 0x71cf4 |
| while (r3 == 0) {
| label_10:
0x00071cd2 ldr.w r1, [fp, 4] | r1 = *(arg_4h);
0x00071cd6 mov r0, r4 | r0 = r4;
0x00071cd8 bl 0x6dbdc | fcn_0006dbdc (r0, r1, r2, r3, r4, r5, r6);
0x00071cdc ldrd r3, r2, [fp, 8] | __asm ("ldrd r3, r2, [arg_8h]");
0x00071ce0 movs r1, 1 | r1 = 1;
0x00071ce2 mov r0, r4 | r0 = r4;
0x00071ce4 str r2, [sp] | *(sp) = r2;
0x00071ce6 ldr r2, [pc, 0x15c] |
0x00071ce8 add r2, pc | r2 = 0xe3b32;
0x00071cea blx 0x1bb8c | fcn_0001bb8c ();
0x00071cee ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00071cf0 cmp r8, r3 |
| if (r8 >= r3) {
0x00071cf2 bge 0x71d20 | goto label_46;
| }
0x00071cf4 ldr r7, [r5, 0x38] | r7 = *((r5 + 0x38));
0x00071cf6 mov r3, r4 | r3 = r4;
0x00071cf8 movs r2, 9 | r2 = 9;
0x00071cfa movs r1, 1 | r1 = 1;
0x00071cfc mov r0, sl | r0 = sl;
0x00071cfe ldr.w fp, [r7, r8, lsl 2] | offset_3 = r8 << 2;
| fp = *((r7 + offset_3));
0x00071d02 add.w r8, r8, 1 | r8++;
0x00071d06 blx 0x1baf8 | fcn_0001baf8 ();
0x00071d0a ldr.w r3, [fp] | r3 = *(fp);
0x00071d0e cmp r3, 0 |
0x00071d10 beq 0x71cd2 |
| }
0x00071d12 mov r3, r4 | r3 = r4;
0x00071d14 movs r2, 9 | r2 = 9;
0x00071d16 movs r1, 1 | r1 = 1;
0x00071d18 mov r0, r6 | r0 = r6;
0x00071d1a blx 0x1baf8 | fcn_0001baf8 ();
0x00071d1e b 0x71cd2 | goto label_10;
| label_46:
0x00071d20 ldrd r7, r6, [sp, 8] | __asm ("ldrd r7, r6, [var_8h]");
0x00071d24 b 0x71a4c | goto label_7;
0x00071d26 ldr r0, [pc, 0x120] |
0x00071d28 mov r3, r4 | r3 = r4;
0x00071d2a movs r2, 4 | r2 = 4;
0x00071d2c movs r1, 1 | r1 = 1;
0x00071d2e add r0, pc | r0 = 0xe3b7c;
0x00071d30 blx 0x1baf8 | fcn_0001baf8 ();
0x00071d34 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00071d36 b 0x71a14 | goto label_11;
0x00071d38 ldr r0, [pc, 0x110] |
0x00071d3a mov r3, r4 | r3 = r4;
0x00071d3c movs r2, 9 | r2 = 9;
0x00071d3e movs r1, 1 | r1 = 1;
0x00071d40 add r0, pc | r0 = 0xe3b90;
0x00071d42 blx 0x1baf8 | fcn_0001baf8 ();
0x00071d46 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00071d48 b 0x71a14 | goto label_11;
0x00071d4a ldr r0, [pc, 0x104] |
0x00071d4c add r0, pc | r0 = 0xe3ba2;
| do {
| label_12:
0x00071d4e mov r3, r4 | r3 = r4;
0x00071d50 movs r2, 2 | r2 = 2;
0x00071d52 movs r1, 1 | r1 = 1;
0x00071d54 blx 0x1baf8 | fcn_0001baf8 ();
0x00071d58 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00071d5a b 0x71a14 | goto label_11;
0x00071d5c ldr r0, [pc, 0xf4] |
0x00071d5e add r0, pc | r0 = 0xe3bb6;
0x00071d60 b 0x71d4e |
| } while (1);
0x00071d62 ldr r0, [pc, 0xf4] |
0x00071d64 add r0, pc | r0 = 0xe3bc2;
0x00071d66 b 0x71d4e | goto label_12;
0x00071d68 ldr r0, [pc, 0xf0] |
0x00071d6a mov r3, r4 | r3 = r4;
0x00071d6c movs r2, 5 | r2 = 5;
0x00071d6e movs r1, 1 | r1 = 1;
0x00071d70 add r0, pc | r0 = 0xe3bd0;
0x00071d72 blx 0x1baf8 | fcn_0001baf8 ();
0x00071d76 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00071d78 b 0x71a14 | goto label_11;
0x00071d7a ldr r0, [pc, 0xe4] |
0x00071d7c mov r3, r4 | r3 = r4;
0x00071d7e movs r2, 8 | r2 = 8;
0x00071d80 movs r1, 1 | r1 = 1;
0x00071d82 add r0, pc | r0 = 0xe3be8;
0x00071d84 blx 0x1baf8 | fcn_0001baf8 ();
0x00071d88 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00071d8a b 0x71a14 | goto label_11;
| label_29:
0x00071d8c ldr r0, [pc, 0xd4] |
0x00071d8e mov r3, r4 | r3 = r4;
0x00071d90 movs r2, 5 | r2 = 5;
0x00071d92 movs r1, 1 | r1 = 1;
0x00071d94 add r0, pc | r0 = 0xe3bfc;
0x00071d96 blx 0x1baf8 | fcn_0001baf8 ();
0x00071d9a b 0x71a4c | goto label_7;
| label_37:
0x00071d9c ldr r0, [pc, 0xc8] |
0x00071d9e mov r3, r4 | r3 = r4;
0x00071da0 movs r2, 5 | r2 = 5;
0x00071da2 movs r1, 1 | r1 = 1;
0x00071da4 add r0, pc | r0 = 0xe3c10;
0x00071da6 blx 0x1baf8 | fcn_0001baf8 ();
0x00071daa b 0x71b9a | goto label_13;
| label_26:
0x00071dac bx lr | return;
| label_27:
0x00071dae ldr r0, [pc, 0xbc] |
0x00071db0 mov r3, r4 | r3 = r4;
0x00071db2 movs r2, 5 | r2 = 5;
0x00071db4 movs r1, 1 | r1 = 1;
0x00071db6 add r0, pc | r0 = 0xe3c28;
0x00071db8 add sp, 0x1c |
0x00071dba pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00071dbe b.w 0x1baf4 | void (*0x1baf4)() ();
| do {
| label_17:
0x0007aa80 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
| if (r3 != 0) {
0x0007aa82 cbz r3, 0x7aaa0 |
0x0007aa84 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0007aa86 mov r1, sl | r1 = sl;
0x0007aa88 bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007aa8c cmp r0, 0 |
| if (r0 != 0) {
0x0007aa8e bne 0x7ab86 | goto label_47;
| }
| label_20:
0x0007aa90 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
| if (r3 == 0) {
0x0007aa92 cbz r3, 0x7aaa0 | goto label_14;
| }
0x0007aa94 ldr r1, [pc, 0x1f4] |
0x0007aa96 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0007aa98 add r1, pc | r1 = 0xf5728;
0x0007aa9a bl 0x6bd74 | r0 = xmlStrEqual ();
| if (r0 != 0) {
0x0007aa9e cbnz r0, 0x7aab4 | goto label_48;
| }
| }
| label_14:
0x0007aaa0 cmp r5, 0 |
| if (r5 == 0) {
0x0007aaa2 beq 0x7ab70 | goto label_49;
| }
| label_19:
0x0007aaa4 ldr r4, [r4, 0x18] | r4 = *((r4 + 0x18));
0x0007aaa6 movs r5, 1 | r5 = 1;
0x0007aaa8 cmp r4, 0 |
0x0007aaaa bne 0x7aa80 |
| } while (r4 != 0);
| label_18:
0x0007aaac ldr r0, [sp, 0x14] | r0 = var_14h;
0x0007aaae add sp, 0x24 |
0x0007aab0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_48:
0x0007aab4 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0007aab6 ldr r1, [pc, 0x1d8] |
0x0007aab8 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0007aaba add r1, pc | r1 = 0xf5750;
0x0007aabc bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007aac0 cmp r0, 0 |
| if (r0 == 0) {
0x0007aac2 beq 0x7aaa0 | goto label_14;
| }
0x0007aac4 ldr r7, [r4, 0x2c] | r7 = *((r4 + 0x2c));
0x0007aac6 cmp r7, 0 |
| if (r7 == 0) {
0x0007aac8 beq 0x7ab68 | goto label_50;
| }
0x0007aaca ldr r3, [pc, 0x1c8] |
0x0007aacc ldr.w sb, [pc, 0x1c8] | sb = *(0x0007ac98);
0x0007aad0 ldr.w fp, [pc, 0x1c8] | fp = *(0x0007ac9c);
0x0007aad4 add r3, pc | r3 = 0xf576e;
0x0007aad6 add sb, pc | sb += pc;
0x0007aad8 str r3, [sp, 0x1c] | var_1ch = r3;
0x0007aada add fp, pc |
0x0007aadc b 0x7aaee |
| while (r0 == 0) {
0x0007aade ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x0007aae0 bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007aae4 cmp r0, 0 |
| if (r0 != 0) {
0x0007aae6 bne.w 0x7ac1a | goto label_51;
| }
| label_24:
0x0007aaea ldr r7, [r7, 0x18] | r7 = *((r7 + 0x18));
| if (r7 == 0) {
0x0007aaec cbz r7, 0x7ab12 | goto label_52;
| }
| label_15:
0x0007aaee ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x0007aaf0 mov r1, sb | r1 = sb;
0x0007aaf2 cmp r2, 0 |
| if (r2 == 0) {
0x0007aaf4 beq.w 0x7ac00 | goto label_53;
| }
0x0007aaf8 ldr r0, [r2, 8] | r0 = *((r2 + 8));
0x0007aafa bl 0x6bd74 | xmlStrEqual ();
0x0007aafe mov r1, fp | r1 = fp;
0x0007ab00 cmp r0, 0 |
0x0007ab02 beq 0x7aade |
| }
0x0007ab04 mov r1, r7 | r1 = r7;
0x0007ab06 mov r0, r6 | r0 = r6;
0x0007ab08 bl 0x7940c | fcn_0007940c (r0, r1);
| label_25:
0x0007ab0c ldr r7, [r7, 0x18] | r7 = *((r7 + 0x18));
0x0007ab0e cmp r7, 0 |
| if (r7 != 0) {
0x0007ab10 bne 0x7aaee | goto label_15;
| }
| label_52:
0x0007ab12 ldr.w sb, [r4, 0x2c] | sb = *((r4 + 0x2c));
0x0007ab16 cmp.w sb, 0 |
| if (sb == 0) {
0x0007ab1a beq 0x7ab68 | goto label_50;
| }
0x0007ab1c mov r7, sb | r7 = sb;
0x0007ab1e ldr.w sb, [sp, 0x18] | sb = var_18h;
0x0007ab22 b 0x7ab28 |
| while (r3 == 0) {
| label_16:
0x0007ab24 ldr r7, [r7, 0x18] | r7 = *((r7 + 0x18));
| if (r7 == 0) {
0x0007ab26 cbz r7, 0x7ab68 | goto label_50;
| }
0x0007ab28 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0007ab2a mov r1, r8 | r1 = r8;
0x0007ab2c cmp r3, 0 |
0x0007ab2e beq 0x7ab24 |
| }
0x0007ab30 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x0007ab32 bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007ab36 cmp r0, 0 |
| if (r0 == 0) {
0x0007ab38 beq 0x7ab24 | goto label_16;
| }
0x0007ab3a ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0007ab3c mov r1, sb | r1 = sb;
0x0007ab3e ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0007ab40 bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007ab44 cmp r0, 0 |
| if (r0 == 0) {
0x0007ab46 beq 0x7ab24 | goto label_16;
| }
0x0007ab48 movs r0, 0x11 | r0 = 0x11;
0x0007ab4a mov sb, r7 | sb = r7;
0x0007ab4c bl 0x8dfb8 | r0 = xmlSchemaGetBuiltInType ();
0x0007ab50 mov fp, r0 |
| if (r0 != 0) {
0x0007ab52 cbz r0, 0x7ab68 |
0x0007ab54 mov r1, sb | r1 = sb;
0x0007ab56 mov r0, r6 | r0 = r6;
0x0007ab58 bl 0x7419c | fcn_0007419c (r0, r1);
0x0007ab5c mov r3, fp | r3 = fp;
0x0007ab5e mov r2, r0 | r2 = r0;
0x0007ab60 mov r1, sb | r1 = sb;
0x0007ab62 mov r0, r6 | r0 = r6;
0x0007ab64 bl 0x7a5e0 | fcn_0007a5e0 (r0, r1, r2, r3);
| }
| label_50:
0x0007ab68 ldr r4, [r4, 0x18] | r4 = *((r4 + 0x18));
0x0007ab6a cmp r4, 0 |
| if (r4 != 0) {
0x0007ab6c bne 0x7aa80 | goto label_17;
| }
0x0007ab6e b 0x7aaac | goto label_18;
| label_49:
0x0007ab70 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0007ab72 mov r3, r4 | r3 = r4;
0x0007ab74 movw r1, 0xbd9 | r1 = 0xbd9;
0x0007ab78 mov r0, r6 | r0 = r6;
0x0007ab7a strd r5, r2, [sp] | __asm ("strd r5, r2, [sp]");
0x0007ab7e ldr r2, [sp, 0x10] | r2 = var_10h;
0x0007ab80 bl 0x770f4 | fcn_000770f4 (r0, r1, r2, r3, r4, r5);
0x0007ab84 b 0x7aaa4 | goto label_19;
| label_47:
0x0007ab86 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0007ab88 ldr r1, [pc, 0x114] |
0x0007ab8a ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0007ab8c add r1, pc | r1 = 0xf5830;
0x0007ab8e bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007ab92 cmp r0, 0 |
| if (r0 == 0) {
0x0007ab94 beq.w 0x7aa90 | goto label_20;
| }
0x0007ab98 ldr r7, [r4, 0x2c] | r7 = *((r4 + 0x2c));
| if (r7 == 0) {
0x0007ab9a cbz r7, 0x7abde | goto label_54;
| }
0x0007ab9c ldr.w sb, [pc, 0x104] |
0x0007aba0 ldr.w fp, [pc, 0x104] | fp = *(0x0007aca8);
0x0007aba4 add sb, pc | sb = 0xf584c;
0x0007aba6 add fp, pc |
0x0007aba8 b 0x7abc0 |
| while (r3 != 0) {
| label_22:
0x0007abaa ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0007abac mov r1, sb | r1 = sb;
0x0007abae bl 0x6bd74 | r0 = xmlStrEqual ();
| if (r0 != 0) {
0x0007abb2 cbz r0, 0x7abbc |
| label_21:
0x0007abb4 mov r1, r7 | r1 = r7;
0x0007abb6 mov r0, r6 | r0 = r6;
0x0007abb8 bl 0x7940c | fcn_0007940c (r0, r1);
| }
0x0007abbc ldr r7, [r7, 0x18] | r7 = *((r7 + 0x18));
| if (r7 == 0) {
0x0007abbe cbz r7, 0x7abde | goto label_54;
| }
| label_23:
0x0007abc0 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0007abc2 cmp r3, 0 |
0x0007abc4 bne 0x7abaa |
| }
0x0007abc6 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x0007abc8 mov r1, fp | r1 = fp;
0x0007abca bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007abce cmp r0, 0 |
| if (r0 == 0) {
0x0007abd0 beq 0x7abb4 | goto label_21;
| }
0x0007abd2 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0007abd4 cmp r3, 0 |
| if (r3 != 0) {
0x0007abd6 bne 0x7abaa | goto label_22;
| }
0x0007abd8 ldr r7, [r7, 0x18] | r7 = *((r7 + 0x18));
0x0007abda cmp r7, 0 |
| if (r7 != 0) {
0x0007abdc bne 0x7abc0 | goto label_23;
| }
| label_54:
0x0007abde movs r0, 0x1d | r0 = 0x1d;
0x0007abe0 bl 0x8dfb8 | xmlSchemaGetBuiltInType ();
0x0007abe4 movs r2, 0 | r2 = 0;
0x0007abe6 mov r3, r0 | r3 = r0;
0x0007abe8 str r2, [sp] | *(sp) = r2;
0x0007abea mov r1, r4 | r1 = r4;
0x0007abec ldr r2, [pc, 0xbc] |
0x0007abee mov r0, r6 | r0 = r6;
0x0007abf0 add r2, pc | r2 = 0xf58a0;
0x0007abf2 bl 0x7a960 | fcn_0007a960 (r0, r1, r2, r3, r4);
0x0007abf6 ldr r4, [r4, 0x18] | r4 = *((r4 + 0x18));
0x0007abf8 cmp r4, 0 |
| if (r4 != 0) {
0x0007abfa bne.w 0x7aa80 | goto label_17;
| }
0x0007abfe b 0x7aaac | goto label_18;
| label_53:
0x0007ac00 ldr r1, [pc, 0xac] |
0x0007ac02 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x0007ac04 add r1, pc | r1 = 0xf58b8;
0x0007ac06 bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007ac0a cmp r0, 0 |
| if (r0 != 0) {
0x0007ac0c bne.w 0x7aaea | goto label_24;
| }
0x0007ac10 mov r1, r7 | r1 = r7;
0x0007ac12 mov r0, r6 | r0 = r6;
0x0007ac14 bl 0x7940c | fcn_0007940c (r0, r1);
0x0007ac18 b 0x7ab0c | goto label_25;
| label_51:
0x0007ac1a ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x0007ac1c ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0007ac1e ldr r0, [r2, 8] | r0 = *((r2 + 8));
0x0007ac20 bl 0x6bd74 | r0 = xmlStrEqual ();
0x0007ac24 cmp r0, 0 |
| if (r0 != 0) {
0x0007ac26 bne.w 0x7aaea | goto label_24;
| }
0x0007ac2a mov r1, r7 | r1 = r7;
0x0007ac2c mov r0, r6 | r0 = r6;
0x0007ac2e bl 0x7940c | fcn_0007940c (r0, r1);
0x0007ac32 b 0x7ab0c | goto label_25;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x40d7c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.xmlSaveUri () | void xmlSaveUri (uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00040d7c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00040d80 mov r8, r0 | r8 = r0;
0x00040d82 ldr.w r7, [pc, 0xbcc] |
0x00040d86 sub sp, 0xc |
0x00040d88 add r7, pc | r7 = 0x826de;
0x00040d8a cmp r0, 0 |
| if (r0 == 0) {
0x00040d8c beq.w 0x41534 | goto label_53;
| }
0x00040d90 ldr.w r3, [pc, 0xbc0] |
0x00040d94 movs r0, 0x51 | r0 = 0x51;
0x00040d96 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00040d98 ldr r3, [r3] | r3 = *(0x41954);
0x00040d9a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00040d9c mov r6, r0 | r6 = r0;
0x00040d9e cmp r0, 0 |
| if (r0 == 0) {
0x00040da0 beq.w 0x41640 | goto label_54;
| }
0x00040da4 ldr.w r4, [r8] | r4 = *(r8);
0x00040da8 cmp r4, 0 |
| if (r4 == 0) {
0x00040daa beq.w 0x410a4 | goto label_55;
| }
0x00040dae ldrb r3, [r4] | r3 = *(r4);
0x00040db0 cmp r3, 0 |
| if (r3 == 0) {
0x00040db2 beq.w 0x4175c | goto label_56;
| }
0x00040db6 mov.w sl, 0 | sl = 0;
0x00040dba movs r5, 0x50 | r5 = 0x50;
| do {
0x00040dbc strb.w r3, [r6, sl] | *((r6 + sl)) = r3;
0x00040dc0 add.w sb, sl, 1 | sb = sl + 1;
0x00040dc4 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
| if (r3 == 0) {
0x00040dc8 cbz r3, 0x40e06 | goto label_57;
| }
| label_0:
0x00040dca cmp sb, r5 |
0x00040dcc mov sl, sb | sl = sb;
0x00040dce blt 0x40dbc |
| } while (sb < r5);
0x00040dd0 cmp.w r5, 0x100000 |
0x00040dd4 lsl.w r5, r5, 1 | r5 <<= 1;
0x00040dd8 ldr.w r3, [pc, 0xb7c] | r3 = *(0x41958);
0x00040ddc mov r0, r6 | r0 = r6;
0x00040dde add.w r1, r5, 1 | r1 = r5 + 1;
| if (r5 > 0x100000) {
0x00040de2 bgt.w 0x4114e | goto label_58;
| }
0x00040de6 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00040de8 ldr r3, [r3] | r3 = *(r3);
0x00040dea blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00040dec cmp r0, 0 |
| if (r0 == 0) {
0x00040dee beq.w 0x4151c | goto label_59;
| }
0x00040df2 ldrb r3, [r4] | r3 = *(r4);
0x00040df4 mov r6, r0 | r6 = r0;
0x00040df6 add.w sb, sl, 1 | sb = sl + 1;
0x00040df8 lsrs r1, r0, 4 | r1 = r0 >> 4;
0x00040dfa strb.w r3, [r6, sl] | *((r6 + sl)) = r3;
0x00040dfe ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00040e02 cmp r3, 0 |
| if (r3 != 0) {
0x00040e04 bne 0x40dca | goto label_0;
| }
| label_57:
0x00040e06 cmp sb, r5 |
| if (sb >= r5) {
0x00040e08 bge.w 0x41276 | goto label_60;
| }
0x00040e0c add sb, r6 | sb += r6;
0x00040e0e add.w r4, sl, 2 | r4 = sl + 2;
| label_19:
0x00040e12 movs r3, 0x3a | r3 = 0x3a;
0x00040e14 strb.w r3, [sb] | *(sb) = r3;
0x00040e18 ldr.w sb, [r8, 4] | sb = *((r8 + 4));
0x00040e1c cmp.w sb, 0 |
| if (sb == 0) {
0x00040e20 beq.w 0x410b2 | goto label_61;
| }
| label_11:
0x00040e24 ldrb.w r3, [sb] | r3 = *(sb);
0x00040e28 cmp r3, 0 |
| if (r3 == 0) {
0x00040e2a beq 0x40ece | goto label_29;
| }
0x00040e2c movw sl, 0xbfe9 |
0x00040e30 movt sl, 0x3ff | sl = 0x3ffbfe9;
0x00040e34 b 0x40e72 |
| while (fp < r5) {
| label_1:
0x00040e36 ldrb r3, [sb], 1 | r3 = *(sb);
| sb++;
0x00040e3a adds r0, r6, r4 | r0 = r6 + r4;
0x00040e3c add.w ip, r4, 1 |
0x00040e40 cmp r3, 0x2f |
0x00040e42 it ne |
| if (r3 != 0x2f) {
0x00040e44 cmpne r3, 0x3b | __asm ("cmpne r3, 0x3b");
| }
| if (r3 != 0x2f) {
0x00040e46 beq 0x40e68 |
0x00040e48 cmp r3, 0x5b |
| if (r3 > 0x5b) {
0x00040e4a bhi.w 0x40f6e | goto label_62;
| }
0x00040e4e cmp r3, 0x3e |
| if (r3 > 0x3e) {
0x00040e50 bhi 0x40e68 | goto label_2;
| }
0x00040e52 cmp r3, 0x3a |
| if (r3 > 0x3a) {
0x00040e54 bhi 0x40e9c | goto label_63;
| }
0x00040e56 cmp r3, 0x20 |
| if (r3 < 0x20) {
0x00040e58 bls 0x40ea0 | goto label_64;
| }
0x00040e5a sub.w r1, r3, 0x21 | r1 = r3 - 0x21;
0x00040e5e uxtb r1, r1 | r1 = (int8_t) r1;
0x00040e60 lsr.w r1, sl, r1 | r1 = sl >> r1;
0x00040e64 lsls r2, r1, 0x1f | r2 = r1 << 0x1f;
| if (r2 >= r1) {
0x00040e66 bpl 0x40ea0 | goto label_64;
| }
| }
| label_2:
0x00040e68 strb r3, [r0] | *(r0) = r3;
0x00040e6a mov r4, ip | r4 = ip;
0x00040e6c ldrb.w r3, [sb] | r3 = *(sb);
| if (r3 == 0) {
0x00040e70 cbz r3, 0x40ece | goto label_29;
| }
| label_3:
0x00040e72 add.w fp, r4, 3 |
0x00040e76 cmp fp, r5 |
0x00040e78 blt 0x40e36 |
| }
0x00040e7a cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x00040e7e bgt.w 0x4116e | goto label_65;
| }
0x00040e82 ldr.w r3, [pc, 0xad4] |
0x00040e86 lsls r5, r5, 1 | r5 <<= 1;
0x00040e88 mov r0, r6 | r0 = r6;
0x00040e8a adds r1, r5, 1 | r1 = r5 + 1;
0x00040e8c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00040e8e ldr r3, [r3] | r3 = *(0x4195a);
0x00040e90 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00040e92 cmp r0, 0 |
| if (r0 == 0) {
0x00040e94 beq.w 0x41528 | goto label_66;
| }
0x00040e98 mov r6, r0 | r6 = r0;
0x00040e9a b 0x40e36 | goto label_1;
| label_63:
0x00040e9c cmp r3, 0x3d |
| if (r3 == 0x3d) {
0x00040e9e beq 0x40e68 | goto label_2;
| }
| label_64:
0x00040ea0 mov.w r2, 0x25 | r2 = 0x25;
0x00040ea4 asr.w lr, r3, 4 | lr = r3 >> 4;
0x00040ea8 strb r2, [r0] | *(r0) = r2;
0x00040eaa movs r1, 0x30 | r1 = 0x30;
0x00040eac and r0, r3, 0xf | r0 = r3 & 0xf;
| label_5:
0x00040eb0 cmp r0, 9 |
0x00040eb2 add r1, lr | r1 += lr;
0x00040eb4 ite hi |
| if (r0 <= 9) {
0x00040eb6 movhi r3, 0x37 | r3 = 0x37;
| }
| if (r0 > 9) {
0x00040eb8 movls r3, 0x30 | r3 = 0x30;
| }
0x00040eba strb.w r1, [r6, ip] | *((r6 + ip)) = r1;
0x00040ebe add r3, r0 | r3 += r0;
0x00040ec0 adds r1, r4, 2 | r1 = r4 + 2;
0x00040ec2 mov r4, fp | r4 = fp;
0x00040ec4 strb r3, [r6, r1] | *((r6 + r1)) = r3;
0x00040ec6 ldrb.w r3, [sb] | r3 = *(sb);
0x00040eca cmp r3, 0 |
| if (r3 != 0) {
0x00040ecc bne 0x40e72 | goto label_3;
| }
| label_29:
0x00040ece ldr.w r3, [r8, 0x20] | r3 = *((r8 + 0x20));
0x00040ed2 cmp r3, 0 |
| if (r3 == 0) {
0x00040ed4 beq 0x40f5c | goto label_67;
| }
0x00040ed6 adds r3, r4, 3 | r3 = r4 + 3;
0x00040ed8 cmp r3, r5 |
| if (r3 >= r5) {
0x00040eda bge.w 0x414fa | goto label_68;
| }
| label_31:
0x00040ede movs r3, 0x23 | r3 = 0x23;
0x00040ee0 strb r3, [r6, r4] | *((r6 + r4)) = r3;
0x00040ee2 adds r4, 1 | r4++;
0x00040ee4 ldr.w r8, [r8, 0x20] | r8 = *((r8 + 0x20));
0x00040ee8 ldrb.w r3, [r8] | r3 = *(r8);
| if (r3 == 0) {
0x00040eec cbz r3, 0x40f5c | goto label_67;
| }
0x00040eee movw fp, 0xfffd |
0x00040ef2 mov.w sb, 0x25 | sb = 0x25;
0x00040ef6 movt fp, 0x1aff | fp = 0x1afffffd;
0x00040efa b 0x40f34 |
| while (r2 > 0x19) {
0x00040efc cmp r3, 0x40 |
| if (r3 > 0x40) {
0x00040efe bhi.w 0x41042 | goto label_69;
| }
0x00040f02 cmp r3, 0x23 |
| if (r3 > 0x23) {
0x00040f04 bhi.w 0x4102c | goto label_70;
| }
0x00040f08 cmp r3, 0x21 |
| if (r3 == 0x21) {
0x00040f0a beq 0x40f50 | goto label_8;
| }
| label_6:
0x00040f0c asr.w ip, r3, 4 |
0x00040f10 strb.w sb, [r1] | *(r1) = sb;
0x00040f14 movs r2, 0x30 | r2 = 0x30;
0x00040f16 and r1, r3, 0xf | r1 = r3 & 0xf;
| label_9:
0x00040f1a cmp r1, 9 |
0x00040f1c add r2, ip | r2 += ip;
0x00040f1e ite hi |
| if (r1 <= 9) {
0x00040f20 movhi r3, 0x37 | r3 = 0x37;
| }
| if (r1 > 9) {
0x00040f22 movls r3, 0x30 | r3 = 0x30;
| }
0x00040f24 strb r2, [r6, r0] | *((r6 + r0)) = r2;
0x00040f26 add r3, r1 | r3 += r1;
0x00040f28 adds r2, r4, 2 | r2 = r4 + 2;
0x00040f2a mov r4, sl | r4 = sl;
0x00040f2c strb r3, [r6, r2] | *((r6 + r2)) = r3;
0x00040f2e ldrb.w r3, [r8] | r3 = *(r8);
| if (r3 == 0) {
0x00040f32 cbz r3, 0x40f5c | goto label_67;
| }
| label_4:
0x00040f34 add.w sl, r4, 3 | sl = r4 + 3;
0x00040f38 cmp sl, r5 |
| if (sl >= r5) {
0x00040f3a bge.w 0x41082 | goto label_71;
| }
| label_10:
0x00040f3e ldrb r3, [r8], 1 | r3 = *(r8);
| r8++;
0x00040f42 adds r1, r6, r4 | r1 = r6 + r4;
0x00040f44 adds r0, r4, 1 | r0 = r4 + 1;
0x00040f46 bic r2, r3, 0x20 | r2 = BIT_MASK (r3, 0x20);
0x00040f48 lsls r0, r4, 8 | r0 = r4 << 8;
0x00040f4a subs r2, 0x41 | r2 -= 0x41;
0x00040f4c cmp r2, 0x19 |
0x00040f4e bhi 0x40efc |
| }
| label_8:
0x00040f50 mov r4, r0 | r4 = r0;
0x00040f52 strb r3, [r1] | *(r1) = r3;
| label_7:
0x00040f54 ldrb.w r3, [r8] | r3 = *(r8);
0x00040f58 cmp r3, 0 |
| if (r3 != 0) {
0x00040f5a bne 0x40f34 | goto label_4;
| }
| label_67:
0x00040f5c cmp r4, r5 |
| if (r4 >= r5) {
0x00040f5e bge.w 0x4144e | goto label_72;
| }
| label_27:
0x00040f62 movs r3, 0 | r3 = 0;
0x00040f64 strb r3, [r6, r4] | *((r6 + r4)) = r3;
| label_32:
0x00040f66 mov r0, r6 | r0 = r6;
0x00040f68 add sp, 0xc |
0x00040f6a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00040f6c ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_62:
0x00040f6e sub.w r1, r3, 0x5d | r1 = r3 - 0x5d;
0x00040f72 uxtb.w lr, r1 | lr = (int8_t) r1;
0x00040f76 cmp.w lr, 0x21 |
| if (lr <= 0x21) {
0x00040f7a bhi 0x41014 |
0x00040f7c cmp r1, 0x21 |
| if (r1 > 0x21) {
0x00040f7e bhi 0x41014 | goto label_73;
| }
0x00040f80 addw lr, pc, 8 | __asm ("addw lr, pc, 8");
0x00040f84 ldr.w r1, [lr, r1, lsl 2] | offset_0 = r1 << 2;
| r1 = *((lr + offset_0));
0x00040f88 add lr, r1 | lr += r1;
0x00040f8a bx lr | return;
| }
| label_73:
0x00041014 cmp r3, 0x9f |
0x00041016 mov.w r2, 0x25 | r2 = 0x25;
0x0004101a strb r2, [r0] | *(r0) = r2;
0x0004101c asr.w lr, r3, 4 | lr = r3 >> 4;
0x00041020 and r0, r3, 0xf | r0 = r3 & 0xf;
0x00041024 ite hi |
| if (r3 <= 0x9f) {
0x00041026 movhi r1, 0x37 | r1 = 0x37;
| }
| if (r3 > 0x9f) {
0x00041028 movls r1, 0x30 | r1 = 0x30;
| }
0x0004102a b 0x40eb0 | goto label_5;
| label_70:
0x0004102c sub.w r2, r3, 0x24 | r2 = r3 - 0x24;
0x00041030 uxtb r2, r2 | r2 = (int8_t) r2;
0x00041032 lsr.w r2, fp, r2 | r2 = fp >> r2;
0x00041036 lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 >= r2) {
0x00041038 bpl.w 0x40f0c | goto label_6;
| }
0x0004103c mov r4, r0 | r4 = r0;
0x0004103e strb r3, [r1] | *(r1) = r3;
0x00041040 b 0x40f54 | goto label_7;
| label_69:
0x00041042 cmp r3, 0x5f |
| if (r3 > 0x5f) {
0x00041044 bhi 0x41066 | goto label_74;
| }
0x00041046 cmp r3, 0x5a |
| if (r3 < 0x5a) {
0x00041048 bls.w 0x40f0c | goto label_6;
| }
0x0004104c sub.w ip, r3, 0x5b |
0x00041050 movs r2, 0x15 | r2 = 0x15;
0x00041052 uxtb.w ip, ip | ip = (int8_t) ip;
0x00041056 lsr.w r2, r2, ip | r2 >>= ip;
0x0004105a lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 >= r2) {
0x0004105c bpl.w 0x40f0c | goto label_6;
| }
0x00041060 mov r4, r0 | r4 = r0;
0x00041062 strb r3, [r1] | *(r1) = r3;
0x00041064 b 0x40f54 | goto label_7;
| label_74:
0x00041066 cmp r3, 0x7e |
| if (r3 == 0x7e) {
0x00041068 beq.w 0x40f50 | goto label_8;
| }
0x0004106c cmp r3, 0x9f |
0x0004106e strb.w sb, [r1] | *(r1) = sb;
0x00041072 asr.w ip, r3, 4 |
0x00041076 and r1, r3, 0xf | r1 = r3 & 0xf;
0x0004107a ite hi |
| if (r3 <= 0x9f) {
0x0004107c movhi r2, 0x37 | r2 = 0x37;
| }
| if (r3 > 0x9f) {
0x0004107e movls r2, 0x30 | r2 = 0x30;
| }
0x00041080 b 0x40f1a | goto label_9;
| label_71:
0x00041082 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x00041086 bgt.w 0x41442 | goto label_75;
| }
0x0004108a ldr.w r3, [pc, 0x8cc] |
0x0004108e lsls r5, r5, 1 | r5 <<= 1;
0x00041090 mov r0, r6 | r0 = r6;
0x00041092 adds r1, r5, 1 | r1 = r5 + 1;
0x00041094 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041096 ldr r3, [r3] | r3 = *(0x4195a);
0x00041098 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004109a cmp r0, 0 |
| if (r0 == 0) {
0x0004109c beq.w 0x41556 | goto label_76;
| }
0x000410a0 mov r6, r0 | r6 = r0;
0x000410a2 b 0x40f3e | goto label_10;
| label_55:
0x000410a4 ldr.w sb, [r8, 4] | sb = *((r8 + 4));
0x000410a8 movs r5, 0x50 | r5 = 0x50;
0x000410aa cmp.w sb, 0 |
| if (sb != 0) {
0x000410ae bne.w 0x40e24 | goto label_11;
| }
| label_61:
0x000410b2 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x000410b6 cmp r3, 0 |
| if (r3 == 0) {
0x000410b8 beq 0x4117a | goto label_77;
| }
| label_13:
0x000410ba adds r3, r4, 3 | r3 = r4 + 3;
0x000410bc cmp r3, r5 |
| if (r3 >= r5) {
0x000410be bge.w 0x41538 | goto label_78;
| }
| label_33:
0x000410c2 movs r3, 0x2f | r3 = 0x2f;
0x000410c4 adds r2, r6, r4 | r2 = r6 + r4;
0x000410c6 strb r3, [r6, r4] | *((r6 + r4)) = r3;
0x000410c8 add.w sb, r4, 2 | sb = r4 + 2;
0x000410cc strb r3, [r2, 1] | *((r2 + 1)) = r3;
0x000410ce ldr.w r4, [r8, 0x10] | r4 = *((r8 + 0x10));
0x000410d2 cmp r4, 0 |
| if (r4 == 0) {
0x000410d4 beq.w 0x412b2 | goto label_79;
| }
0x000410d8 ldrb r3, [r4] | r3 = *(r4);
0x000410da cmp r3, 0 |
| if (r3 == 0) {
0x000410dc beq.w 0x4129e | goto label_80;
| }
0x000410e0 movw sl, 0xbfe9 |
0x000410e4 movt sl, 0x17ff | sl = 0x17ffbfe9;
0x000410e8 b 0x41128 |
| while (r1 > 0x19) {
0x000410ea cmp r3, 0x3d |
| if (r3 > 0x3d) {
0x000410ec bhi.w 0x41234 | goto label_81;
| }
0x000410f0 cmp r3, 0x20 |
| if (r3 > 0x20) {
0x000410f2 bhi.w 0x4121e | goto label_82;
| }
| label_15:
0x000410f6 mov.w r2, 0x25 | r2 = 0x25;
0x000410fa asr.w lr, r3, 4 | lr = r3 >> 4;
0x000410fe strb r2, [r0] | *(r0) = r2;
0x00041100 movs r1, 0x30 | r1 = 0x30;
0x00041102 and r0, r3, 0xf | r0 = r3 & 0xf;
| label_17:
0x00041106 add r1, lr | r1 += lr;
0x00041108 cmp r0, 9 |
0x0004110a strb.w r1, [r6, ip] | *((r6 + ip)) = r1;
0x0004110e it hi |
| if (r0 <= 9) {
0x00041110 movhi r3, 0x37 | r3 = 0x37;
| }
0x00041112 add.w r1, sb, 2 | r1 = sb + 2;
0x00041116 it ls |
| if (r0 > 9) {
0x00041118 movls r3, 0x30 | r3 = 0x30;
| }
0x0004111a mov sb, fp | sb = fp;
0x0004111c add r3, r0 | r3 += r0;
0x0004111e strb r3, [r6, r1] | *((r6 + r1)) = r3;
| label_12:
0x00041120 ldrb r3, [r4] | r3 = *(r4);
0x00041122 cmp r3, 0 |
| if (r3 == 0) {
0x00041124 beq.w 0x4129e | goto label_80;
| }
0x00041128 add.w fp, sb, 3 |
0x0004112c cmp fp, r5 |
| if (fp >= r5) {
0x0004112e bge.w 0x41254 | goto label_83;
| }
| label_18:
0x00041132 ldrb r3, [r4], 1 | r3 = *(r4);
| r4++;
0x00041136 add.w r0, r6, sb | r0 = r6 + sb;
0x0004113a add.w ip, sb, 1 |
0x0004113e bic r1, r3, 0x20 | r1 = BIT_MASK (r3, 0x20);
0x00041142 subs r1, 0x41 | r1 -= 0x41;
0x00041144 cmp r1, 0x19 |
0x00041146 bhi 0x410ea |
| }
| label_16:
0x00041148 mov sb, ip | sb = ip;
0x0004114a strb r3, [r0] | *(r0) = r3;
0x0004114c b 0x41120 | goto label_12;
| label_58:
0x0004114e ldr.w r0, [pc, 0x80c] | r0 = *(0x0004195c);
0x00041152 add r0, pc | r0 += pc;
0x00041154 bl 0x409f4 | fcn_000409f4 (r0);
| do {
| label_26:
0x00041158 ldr.w r3, [pc, 0x804] |
0x0004115c mov r0, r6 | r0 = r6;
0x0004115e movs r6, 0 | r6 = 0;
0x00041160 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041162 ldr r3, [r3] | r3 = *(0x41960);
0x00041164 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00041166 mov r0, r6 | r0 = r6;
0x00041168 add sp, 0xc |
0x0004116a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_65:
0x0004116e ldr.w r0, [pc, 0x7f4] | r0 = *(0x00041964);
0x00041172 add r0, pc | r0 += pc;
0x00041174 bl 0x409f4 | fcn_000409f4 (r0);
0x00041178 b 0x41158 |
| } while (1);
| label_77:
0x0004117a ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x0004117e adds r3, 1 | r3++;
| if (r3 == 1) {
0x00041180 beq 0x410ba | goto label_13;
| }
0x00041182 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x00041186 cmp r3, 0 |
| if (r3 == 0) {
0x00041188 beq.w 0x41470 | goto label_84;
| }
0x0004118c adds r3, r4, 3 | r3 = r4 + 3;
0x0004118e cmp r3, r5 |
| if (r3 >= r5) {
0x00041190 bge.w 0x417f0 | goto label_85;
| }
| label_49:
0x00041194 movs r3, 0x2f | r3 = 0x2f;
0x00041196 adds r2, r6, r4 | r2 = r6 + r4;
0x00041198 strb r3, [r6, r4] | *((r6 + r4)) = r3;
0x0004119a add.w sb, r4, 2 | sb = r4 + 2;
0x0004119e strb r3, [r2, 1] | *((r2 + 1)) = r3;
0x000411a0 ldr.w r4, [r8, 8] | r4 = *((r8 + 8));
0x000411a4 ldrb r3, [r4] | r3 = *(r4);
0x000411a6 cmp r3, 0 |
| if (r3 == 0) {
0x000411a8 beq.w 0x41352 | goto label_34;
| }
0x000411ac movw sl, 0xf7fd |
0x000411b0 movt sl, 0x12ff | sl = 0x12fff7fd;
0x000411b4 b 0x411f6 |
| while (r1 > 0x19) {
0x000411b6 cmp r3, 0x40 |
| if (r3 > 0x40) {
0x000411b8 bhi.w 0x415da | goto label_86;
| }
0x000411bc cmp r3, 0x23 |
| if (r3 > 0x23) {
0x000411be bhi.w 0x415c2 | goto label_87;
| }
0x000411c2 cmp r3, 0x21 |
| if (r3 == 0x21) {
0x000411c4 beq 0x41216 | goto label_38;
| }
| label_37:
0x000411c6 mov.w r2, 0x25 | r2 = 0x25;
0x000411ca movs r1, 0x30 | r1 = 0x30;
0x000411cc strb.w r2, [ip] | *(ip) = r2;
0x000411d0 asr.w ip, r3, 4 |
0x000411d4 and r3, r3, 0xf | r3 &= 0xf;
| label_39:
0x000411d8 add r1, ip | r1 += ip;
0x000411da cmp r3, 9 |
0x000411dc strb r1, [r6, r0] | *((r6 + r0)) = r1;
0x000411de add.w r0, sb, 2 | r0 = sb + 2;
0x000411e2 ite hi |
| if (r3 <= 9) {
0x000411e4 movhi r1, 0x37 | r1 = 0x37;
| }
| if (r3 > 9) {
0x000411e6 movls r1, 0x30 | r1 = 0x30;
| }
0x000411e8 mov sb, fp | sb = fp;
0x000411ea add r3, r1 | r3 += r1;
0x000411ec strb r3, [r6, r0] | *((r6 + r0)) = r3;
| label_14:
0x000411ee ldrb r3, [r4] | r3 = *(r4);
0x000411f0 cmp r3, 0 |
| if (r3 == 0) {
0x000411f2 beq.w 0x41352 | goto label_34;
| }
0x000411f6 add.w fp, sb, 3 |
0x000411fa cmp fp, r5 |
| if (fp >= r5) {
0x000411fc bge.w 0x41602 | goto label_88;
| }
| label_40:
0x00041200 ldrb r3, [r4], 1 | r3 = *(r4);
| r4++;
0x00041204 add.w ip, r6, sb |
0x00041208 add.w r0, sb, 1 | r0 = sb + 1;
0x0004120c bic r1, r3, 0x20 | r1 = BIT_MASK (r3, 0x20);
0x00041210 subs r1, 0x41 | r1 -= 0x41;
0x00041212 cmp r1, 0x19 |
0x00041214 bhi 0x411b6 |
| }
| label_38:
0x00041216 mov sb, r0 | sb = r0;
0x00041218 strb.w r3, [ip] | *(ip) = r3;
0x0004121c b 0x411ee | goto label_14;
| label_82:
0x0004121e sub.w r1, r3, 0x21 | r1 = r3 - 0x21;
0x00041222 uxtb r1, r1 | r1 = (int8_t) r1;
0x00041224 lsr.w r1, sl, r1 | r1 = sl >> r1;
0x00041228 lsls r1, r1, 0x1f | r1 <<= 0x1f;
| if (r1 >= r1) {
0x0004122a bpl.w 0x410f6 | goto label_15;
| }
0x0004122e mov sb, ip | sb = ip;
0x00041230 strb r3, [r0] | *(r0) = r3;
0x00041232 b 0x41120 | goto label_12;
| label_81:
0x00041234 cmp r3, 0x5f |
| if (r3 == 0x5f) {
0x00041236 beq 0x41148 | goto label_16;
| }
0x00041238 cmp r3, 0x7e |
| if (r3 == 0x7e) {
0x0004123a beq 0x41148 | goto label_16;
| }
0x0004123c cmp r3, 0x9f |
0x0004123e mov.w r2, 0x25 | r2 = 0x25;
0x00041242 strb r2, [r0] | *(r0) = r2;
0x00041244 asr.w lr, r3, 4 | lr = r3 >> 4;
0x00041248 and r0, r3, 0xf | r0 = r3 & 0xf;
0x0004124c ite hi |
| if (r3 <= 0x9f) {
0x0004124e movhi r1, 0x37 | r1 = 0x37;
| }
| if (r3 > 0x9f) {
0x00041250 movls r1, 0x30 | r1 = 0x30;
| }
0x00041252 b 0x41106 | goto label_17;
| label_83:
0x00041254 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x00041258 bgt.w 0x41622 | goto label_89;
| }
0x0004125c ldr.w r3, [pc, 0x6f8] |
0x00041260 lsls r5, r5, 1 | r5 <<= 1;
0x00041262 mov r0, r6 | r0 = r6;
0x00041264 adds r1, r5, 1 | r1 = r5 + 1;
0x00041266 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041268 ldr r3, [r3] | r3 = *(0x41958);
0x0004126a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004126c cmp r0, 0 |
| if (r0 == 0) {
0x0004126e beq.w 0x417a4 | goto label_90;
| }
0x00041272 mov r6, r0 | r6 = r0;
0x00041274 b 0x41132 | goto label_18;
| label_60:
0x00041276 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x0004127a bgt.w 0x417c2 | goto label_91;
| }
0x0004127e ldr.w r3, [pc, 0x6d8] |
0x00041282 lsls r5, r5, 1 | r5 <<= 1;
0x00041284 mov r0, r6 | r0 = r6;
0x00041286 adds r1, r5, 1 | r1 = r5 + 1;
0x00041288 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0004128a ldr r3, [r3] | r3 = *(0x4195a);
0x0004128c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004128e cmp r0, 0 |
| if (r0 == 0) {
0x00041290 beq.w 0x4183c | goto label_92;
| }
0x00041294 add sb, r0 | sb += r0;
0x00041296 add.w r4, sl, 2 | r4 = sl + 2;
0x0004129a mov r6, r0 | r6 = r0;
0x0004129c b 0x40e12 | goto label_19;
| label_80:
0x0004129e add.w r3, sb, 3 | r3 = sb + 3;
0x000412a2 cmp r3, r5 |
| if (r3 >= r5) {
0x000412a4 bge.w 0x41766 | goto label_93;
| }
| label_47:
0x000412a8 movs r3, 0x40 | r3 = 0x40;
0x000412aa strb.w r3, [r6, sb] | *((r6 + sb)) = r3;
0x000412ae add.w sb, sb, 1 | sb++;
| label_79:
0x000412b2 ldr.w r4, [r8, 0xc] | r4 = *((r8 + 0xc));
0x000412b6 cmp r4, 0 |
| if (r4 == 0) {
0x000412b8 beq 0x41352 | goto label_34;
| }
0x000412ba ldrb r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x000412bc cbnz r3, 0x412ce | goto label_94;
| }
0x000412be b 0x412fa | goto label_95;
| do {
| label_20:
0x000412c0 ldrb r3, [r4] | r3 = *(r4);
0x000412c2 strb.w r3, [r6, sb] | *((r6 + sb)) = r3;
0x000412c6 mov sb, sl | sb = sl;
0x000412c8 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
| if (r3 == 0) {
0x000412cc cbz r3, 0x412fc | goto label_96;
| }
| label_94:
0x000412ce cmp sb, r5 |
0x000412d0 add.w sl, sb, 1 | sl = sb + 1;
0x000412d4 blt 0x412c0 |
| } while (sb < r5);
0x000412d6 cmp.w r5, 0x100000 |
0x000412da ldr.w r3, [pc, 0x67c] | r3 = *(0x4195a);
0x000412de lsl.w r5, r5, 1 | r5 <<= 1;
| if (r5 > 0x100000) {
0x000412e2 bgt.w 0x41636 | goto label_97;
| }
0x000412e6 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000412e8 mov r0, r6 | r0 = r6;
0x000412ea adds r1, r5, 1 | r1 = r5 + 1;
0x000412ec ldr r3, [r3] | r3 = *(r3);
0x000412ee blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000412f0 cmp r0, 0 |
| if (r0 == 0) {
0x000412f2 beq.w 0x417b8 | goto label_98;
| }
0x000412f6 mov r6, r0 | r6 = r0;
0x000412f8 b 0x412c0 | goto label_20;
| label_95:
0x000412fa mov sl, sb | sl = sb;
| label_96:
0x000412fc ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00041300 cmp r3, 0 |
| if (r3 <= 0) {
0x00041302 ble.w 0x41562 | goto label_99;
| }
0x00041306 add.w r2, sl, 0xa | r2 = sl + 0xa;
0x0004130a cmp r2, r5 |
| if (r2 >= r5) {
0x0004130c blt 0x41332 |
0x0004130e cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x00041312 bgt.w 0x418be | goto label_100;
| }
0x00041316 ldr.w r3, [pc, 0x640] |
0x0004131a lsls r5, r5, 1 | r5 <<= 1;
0x0004131c mov r0, r6 | r0 = r6;
0x0004131e adds r1, r5, 1 | r1 = r5 + 1;
0x00041320 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041322 ldr r3, [r3] | r3 = *(0x4195a);
0x00041324 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00041326 cmp r0, 0 |
| if (r0 == 0) {
0x00041328 beq.w 0x418c8 | goto label_101;
| }
0x0004132c ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00041330 mov r6, r0 | r6 = r0;
| }
0x00041332 str r3, [sp, 4] | var_4h = r3;
0x00041334 movs r2, 1 | r2 = 1;
0x00041336 ldr.w r3, [pc, 0x630] | r3 = *(0x00041968);
0x0004133a sub.w r1, r5, sl | r1 = r5 - sl;
0x0004133e add.w r0, r6, sl | r0 = r6 + sl;
0x00041342 add r3, pc | r3 += pc;
0x00041344 str r3, [sp] | *(sp) = r3;
0x00041346 mov.w r3, -1 | r3 = -1;
0x0004134a blx 0x1baac | r0 = fcn_0001baac ();
0x0004134e add.w sb, r0, sl | sb = r0 + sl;
| label_34:
0x00041352 ldr.w sl, [r8, 0x18] | sl = *((r8 + 0x18));
0x00041356 cmp.w sl, 0 |
| if (sl == 0) {
0x0004135a beq.w 0x41492 | goto label_102;
| }
0x0004135e ldr.w r0, [r8] | r0 = *(r8);
0x00041362 ldrb.w r3, [sl] | r3 = *(sl);
| if (r0 != 0) {
0x00041366 cbz r0, 0x41372 |
| label_28:
0x00041368 ldrb.w r3, [sl] | r3 = *(sl);
0x0004136c cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0004136e beq.w 0x41566 | goto label_103;
| }
| }
| label_36:
0x00041372 cmp r3, 0 |
| if (r3 == 0) {
0x00041374 beq.w 0x41492 | goto label_102;
| }
| label_35:
0x00041378 movw r4, 0xfffd |
0x0004137c movt r4, 0x12bf | r4 = 0x12bffffd;
0x00041380 b 0x413c2 |
| while (r1 > 0x19) {
0x00041382 cmp r3, 0x40 |
| if (r3 > 0x40) {
0x00041384 bhi 0x413fe | goto label_104;
| }
0x00041386 cmp r3, 0x23 |
| if (r3 > 0x23) {
0x00041388 bhi 0x413e8 | goto label_105;
| }
0x0004138a cmp r3, 0x21 |
| if (r3 == 0x21) {
0x0004138c beq 0x413e0 | goto label_23;
| }
| label_22:
0x0004138e mov.w r2, 0x25 | r2 = 0x25;
0x00041392 asr.w lr, r3, 4 | lr = r3 >> 4;
0x00041396 strb.w r2, [ip] | *(ip) = r2;
0x0004139a movs r1, 0x30 | r1 = 0x30;
0x0004139c and ip, r3, 0xf |
| label_24:
0x000413a0 add r1, lr | r1 += lr;
0x000413a2 cmp.w ip, 9 |
0x000413a6 strb r1, [r6, r0] | *((r6 + r0)) = r1;
0x000413a8 it hi |
| if (ip <= 9) {
0x000413aa movhi r3, 0x37 | r3 = 0x37;
| }
0x000413ac add.w r1, sb, 2 | r1 = sb + 2;
0x000413b0 it ls |
| if (ip > 9) {
0x000413b2 movls r3, 0x30 | r3 = 0x30;
| }
0x000413b4 mov sb, fp | sb = fp;
0x000413b6 add r3, ip | r3 += ip;
0x000413b8 strb r3, [r6, r1] | *((r6 + r1)) = r3;
| label_21:
0x000413ba ldrb.w r3, [sl] | r3 = *(sl);
0x000413be cmp r3, 0 |
| if (r3 == 0) {
0x000413c0 beq 0x41492 | goto label_102;
| }
0x000413c2 add.w fp, sb, 3 |
0x000413c6 cmp fp, r5 |
| if (fp >= r5) {
0x000413c8 bge 0x41420 | goto label_106;
| }
| label_25:
0x000413ca ldrb r3, [sl], 1 | r3 = *(sl);
| sl++;
0x000413ce add.w ip, r6, sb |
0x000413d2 add.w r0, sb, 1 | r0 = sb + 1;
0x000413d6 bic r1, r3, 0x20 | r1 = BIT_MASK (r3, 0x20);
0x000413da subs r1, 0x41 | r1 -= 0x41;
0x000413dc cmp r1, 0x19 |
0x000413de bhi 0x41382 |
| }
| label_23:
0x000413e0 mov sb, r0 | sb = r0;
0x000413e2 strb.w r3, [ip] | *(ip) = r3;
0x000413e6 b 0x413ba | goto label_21;
| label_105:
0x000413e8 sub.w r1, r3, 0x24 | r1 = r3 - 0x24;
0x000413ec uxtb r1, r1 | r1 = (int8_t) r1;
0x000413ee lsr.w r1, r4, r1 | r1 = r4 >> r1;
0x000413f2 lsls r1, r1, 0x1f | r1 <<= 0x1f;
| if (r1 >= r1) {
0x000413f4 bpl 0x4138e | goto label_22;
| }
0x000413f6 mov sb, r0 | sb = r0;
0x000413f8 strb.w r3, [ip] | *(ip) = r3;
0x000413fc b 0x413ba | goto label_21;
| label_104:
0x000413fe cmp r3, 0x5f |
| if (r3 == 0x5f) {
0x00041400 beq 0x413e0 | goto label_23;
| }
0x00041402 cmp r3, 0x7e |
| if (r3 == 0x7e) {
0x00041404 beq 0x413e0 | goto label_23;
| }
0x00041406 cmp r3, 0x9f |
0x00041408 mov.w r2, 0x25 | r2 = 0x25;
0x0004140c strb.w r2, [ip] | *(ip) = r2;
0x00041410 asr.w lr, r3, 4 | lr = r3 >> 4;
0x00041414 and ip, r3, 0xf |
0x00041418 ite hi |
| if (r3 <= 0x9f) {
0x0004141a movhi r1, 0x37 | r1 = 0x37;
| }
| if (r3 > 0x9f) {
0x0004141c movls r1, 0x30 | r1 = 0x30;
| }
0x0004141e b 0x413a0 | goto label_24;
| label_106:
0x00041420 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x00041424 bgt.w 0x4162c | goto label_107;
| }
0x00041428 ldr.w r3, [pc, 0x52c] |
0x0004142c lsls r5, r5, 1 | r5 <<= 1;
0x0004142e mov r0, r6 | r0 = r6;
0x00041430 adds r1, r5, 1 | r1 = r5 + 1;
0x00041432 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041434 ldr r3, [r3] | r3 = *(0x41958);
0x00041436 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00041438 cmp r0, 0 |
| if (r0 == 0) {
0x0004143a beq.w 0x417ae | goto label_108;
| }
0x0004143e mov r6, r0 | r6 = r0;
0x00041440 b 0x413ca | goto label_25;
| label_75:
0x00041442 ldr.w r0, [pc, 0x528] | r0 = *(0x0004196c);
0x00041446 add r0, pc | r0 += pc;
0x00041448 bl 0x409f4 | fcn_000409f4 (r0);
0x0004144c b 0x41158 | goto label_26;
| label_72:
0x0004144e cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x00041452 bgt.w 0x417d6 | goto label_109;
| }
0x00041456 ldr.w r3, [pc, 0x500] |
0x0004145a lsls r1, r5, 1 | r1 = r5 << 1;
0x0004145c mov r0, r6 | r0 = r6;
0x0004145e adds r1, 1 | r1++;
0x00041460 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041462 ldr r3, [r3] | r3 = *(0x4195a);
0x00041464 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00041466 cmp r0, 0 |
| if (r0 == 0) {
0x00041468 beq.w 0x4185a | goto label_110;
| }
0x0004146c mov r6, r0 | r6 = r0;
0x0004146e b 0x40f62 | goto label_27;
| label_84:
0x00041470 ldr.w r0, [r8] | r0 = *(r8);
0x00041474 cmp r0, 0 |
| if (r0 == 0) {
0x00041476 beq.w 0x41878 | goto label_111;
| }
0x0004147a adds r3, r4, 3 | r3 = r4 + 3;
0x0004147c cmp r3, r5 |
| if (r3 >= r5) {
0x0004147e bge.w 0x418a0 | goto label_112;
| }
0x00041482 ldr.w sl, [r8, 0x18] | sl = *((r8 + 0x18));
0x00041486 mov sb, r4 | sb = r4;
0x00041488 cmp.w sl, 0 |
| if (sl != 0) {
0x0004148c bne.w 0x41368 | goto label_28;
| }
| label_51:
0x00041490 mov sb, r4 | sb = r4;
| label_102:
0x00041492 ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x00041496 cmp r3, 0 |
| if (r3 == 0) {
0x00041498 beq.w 0x4164a | goto label_113;
| }
0x0004149c add.w r4, sb, 1 | r4 = sb + 1;
0x000414a0 cmp r4, r5 |
| if (r4 >= r5) {
0x000414a2 bge.w 0x41786 | goto label_114;
| }
| label_48:
0x000414a6 movs r3, 0x3f | r3 = 0x3f;
0x000414a8 strb.w r3, [r6, sb] | *((r6 + sb)) = r3;
0x000414ac ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x000414b0 ldrb r2, [r3] | r2 = *(r3);
0x000414b2 cmp r2, 0 |
| if (r2 == 0) {
0x000414b4 beq.w 0x40ece | goto label_29;
| }
0x000414b8 mov sb, r3 | sb = r3;
0x000414ba b 0x414ce | goto label_115;
| label_30:
0x000414bc ldrb.w r3, [sb] | r3 = *(sb);
0x000414c0 strb.w r3, [r6, sl] | *((r6 + sl)) = r3;
0x000414c4 ldrb r3, [sb, 1]! | r3 = *((sb += 1));
0x000414c8 cmp r3, 0 |
| if (r3 == 0) {
0x000414ca beq.w 0x40ece | goto label_29;
| }
| label_115:
0x000414ce mov sl, r4 | sl = r4;
0x000414d0 adds r4, 1 | r4++;
0x000414d2 cmp r4, r5 |
| if (r4 < r5) {
0x000414d4 blt 0x414bc | goto label_30;
| }
0x000414d6 cmp.w r5, 0x100000 |
0x000414da ldr.w r3, [pc, 0x47c] | r3 = *(0x4195a);
0x000414de lsl.w r5, r5, 1 | r5 <<= 1;
| if (r5 > 0x100000) {
0x000414e2 bgt.w 0x41752 | goto label_116;
| }
0x000414e6 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000414e8 mov r0, r6 | r0 = r6;
0x000414ea adds r1, r5, 1 | r1 = r5 + 1;
0x000414ec ldr r3, [r3] | r3 = *(r3);
0x000414ee blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000414f0 cmp r0, 0 |
| if (r0 == 0) {
0x000414f2 beq.w 0x417cc | goto label_117;
| }
0x000414f6 mov r6, r0 | r6 = r0;
0x000414f8 b 0x414bc | goto label_30;
| label_68:
0x000414fa cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x000414fe bgt.w 0x4180c | goto label_118;
| }
0x00041502 ldr.w r3, [pc, 0x454] |
0x00041506 lsls r5, r5, 1 | r5 <<= 1;
0x00041508 mov r0, r6 | r0 = r6;
0x0004150a adds r1, r5, 1 | r1 = r5 + 1;
0x0004150c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0004150e ldr r3, [r3] | r3 = *(0x4195a);
0x00041510 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00041512 cmp r0, 0 |
| if (r0 == 0) {
0x00041514 beq.w 0x41864 | goto label_119;
| }
0x00041518 mov r6, r0 | r6 = r0;
0x0004151a b 0x40ede | goto label_31;
| label_59:
0x0004151c ldr.w r0, [pc, 0x450] |
0x00041520 add r0, pc | r0 = 0x82e94;
0x00041522 bl 0x409f4 | fcn_000409f4 (r0);
0x00041526 b 0x41158 | goto label_26;
| label_66:
0x00041528 ldr.w r0, [pc, 0x448] |
0x0004152c add r0, pc | r0 = 0x82ea4;
0x0004152e bl 0x409f4 | fcn_000409f4 (r0);
0x00041532 b 0x41158 | goto label_26;
| label_53:
0x00041534 mov r6, r0 | r6 = r0;
0x00041536 b 0x40f66 | goto label_32;
| label_78:
0x00041538 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x0004153c bgt.w 0x41846 | goto label_120;
| }
0x00041540 ldr.w r3, [pc, 0x414] |
0x00041544 lsls r5, r5, 1 | r5 <<= 1;
0x00041546 mov r0, r6 | r0 = r6;
0x00041548 adds r1, r5, 1 | r1 = r5 + 1;
0x0004154a ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0004154c ldr r3, [r3] | r3 = *(0x41958);
0x0004154e blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| if (r0 == 0) {
0x00041550 cbz r0, 0x415b8 | goto label_121;
| }
0x00041552 mov r6, r0 | r6 = r0;
0x00041554 b 0x410c2 | goto label_33;
| label_76:
0x00041556 ldr.w r0, [pc, 0x420] | r0 = *(0x00041978);
0x0004155a add r0, pc | r0 += pc;
0x0004155c bl 0x409f4 | fcn_000409f4 (r0);
0x00041560 b 0x41158 | goto label_26;
| label_99:
0x00041562 mov sb, sl | sb = sl;
0x00041564 b 0x41352 | goto label_34;
| label_103:
0x00041566 ldrb.w r3, [sl, 1] | r3 = *((sl + 1));
0x0004156a bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x0004156e subs r3, 0x41 | r3 -= 0x41;
0x00041570 cmp r3, 0x19 |
| if (r3 > 0x19) {
0x00041572 bhi.w 0x41378 | goto label_35;
| }
0x00041576 ldrb.w r3, [sl, 2] | r3 = *((sl + 2));
0x0004157a cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x0004157c bne.w 0x41378 | goto label_35;
| }
0x00041580 ldr r1, [pc, 0x3f8] |
0x00041582 add r1, pc | r1 = 0x82f02;
0x00041584 bl 0x6bd74 | r0 = xmlStrEqual ();
| if (r0 != 0) {
0x00041588 cbz r0, 0x415b2 |
0x0004158a add.w r4, sb, 3 | r4 = sb + 3;
0x0004158e cmp r4, r5 |
| if (r4 >= r5) {
0x00041590 bge.w 0x41904 | goto label_122;
| }
| label_52:
0x00041594 ldrb.w r3, [sl] | r3 = *(sl);
0x00041598 add.w sl, sl, 3 | sl += 3;
0x0004159c strb.w r3, [r6, sb] | *((r6 + sb)) = r3;
0x000415a0 add.w r3, r6, sb | r3 = r6 + sb;
0x000415a4 ldrb r2, [sl, -0x2] | r2 = *((sl - 0x2));
0x000415a8 mov sb, r4 | sb = r4;
0x000415aa strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x000415ac ldrb r2, [sl, -0x1] | r2 = *((sl - 0x1));
0x000415b0 strb r2, [r3, 2] | *((r3 + 2)) = r2;
| }
0x000415b2 ldrb.w r3, [sl] | r3 = *(sl);
0x000415b6 b 0x41372 | goto label_36;
| label_121:
0x000415b8 ldr r0, [pc, 0x3c4] |
0x000415ba add r0, pc | r0 = 0x82f3e;
0x000415bc bl 0x409f4 | fcn_000409f4 (r0);
0x000415c0 b 0x41158 | goto label_26;
| label_87:
0x000415c2 sub.w r1, r3, 0x24 | r1 = r3 - 0x24;
0x000415c6 uxtb r1, r1 | r1 = (int8_t) r1;
0x000415c8 lsr.w r1, sl, r1 | r1 = sl >> r1;
0x000415cc lsls r2, r1, 0x1f | r2 = r1 << 0x1f;
| if (r2 >= r1) {
0x000415ce bpl.w 0x411c6 | goto label_37;
| }
0x000415d2 mov sb, r0 | sb = r0;
0x000415d4 strb.w r3, [ip] | *(ip) = r3;
0x000415d8 b 0x411ee | goto label_14;
| label_86:
0x000415da cmp r3, 0x5f |
| if (r3 == 0x5f) {
0x000415dc beq.w 0x41216 | goto label_38;
| }
0x000415e0 cmp r3, 0x7e |
| if (r3 == 0x7e) {
0x000415e2 beq.w 0x41216 | goto label_38;
| }
0x000415e6 cmp r3, 0x9f |
0x000415e8 mov.w r2, 0x25 | r2 = 0x25;
0x000415ec strb.w r2, [ip] | *(ip) = r2;
0x000415f0 it hi |
| if (r3 <= 0x9f) {
0x000415f2 movhi r1, 0x37 | r1 = 0x37;
| }
0x000415f4 asr.w ip, r3, 4 |
0x000415f8 it ls |
| if (r3 > 0x9f) {
0x000415fa movls r1, 0x30 | r1 = 0x30;
| }
0x000415fc and r3, r3, 0xf | r3 &= 0xf;
0x00041600 b 0x411d8 | goto label_39;
| label_88:
0x00041602 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x00041606 bgt.w 0x417e0 | goto label_123;
| }
0x0004160a ldr r3, [pc, 0x34c] |
0x0004160c lsls r5, r5, 1 | r5 <<= 1;
0x0004160e mov r0, r6 | r0 = r6;
0x00041610 adds r1, r5, 1 | r1 = r5 + 1;
0x00041612 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041614 ldr r3, [r3] | r3 = *(0x4195a);
0x00041616 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00041618 cmp r0, 0 |
| if (r0 == 0) {
0x0004161a beq.w 0x41850 | goto label_124;
| }
0x0004161e mov r6, r0 | r6 = r0;
0x00041620 b 0x41200 | goto label_40;
| label_89:
0x00041622 ldr r0, [pc, 0x360] |
0x00041624 add r0, pc | r0 = 0x82fae;
0x00041626 bl 0x409f4 | fcn_000409f4 (r0);
0x0004162a b 0x41158 | goto label_26;
| label_107:
0x0004162c ldr r0, [pc, 0x358] |
0x0004162e add r0, pc | r0 = 0x82fba;
0x00041630 bl 0x409f4 | fcn_000409f4 (r0);
0x00041634 b 0x41158 | goto label_26;
| label_97:
0x00041636 ldr r0, [pc, 0x354] |
0x00041638 add r0, pc | r0 = 0x82fca;
0x0004163a bl 0x409f4 | fcn_000409f4 (r0);
0x0004163e b 0x41158 | goto label_26;
| label_54:
0x00041640 ldr r0, [pc, 0x34c] |
0x00041642 add r0, pc | r0 = 0x82fd6;
0x00041644 bl 0x409f4 | fcn_000409f4 (r0);
0x00041648 b 0x40f66 | goto label_32;
| label_113:
0x0004164a ldr.w r3, [r8, 0x1c] | r3 = *((r8 + 0x1c));
0x0004164e cmp r3, 0 |
| if (r3 == 0) {
0x00041650 beq.w 0x417ea | goto label_125;
| }
0x00041654 add.w r3, sb, 3 | r3 = sb + 3;
0x00041658 cmp r3, r5 |
| if (r3 >= r5) {
0x0004165a bge.w 0x41820 | goto label_126;
| }
| label_50:
0x0004165e movs r3, 0x3f | r3 = 0x3f;
0x00041660 add.w r4, sb, 1 | r4 = sb + 1;
0x00041664 strb.w r3, [r6, sb] | *((r6 + sb)) = r3;
0x00041668 ldr.w sb, [r8, 0x1c] | sb = *((r8 + 0x1c));
0x0004166c ldrb.w r3, [sb] | r3 = *(sb);
0x00041670 cmp r3, 0 |
| if (r3 == 0) {
0x00041672 beq.w 0x40ece | goto label_29;
| }
0x00041676 movw sl, 0xfffd |
0x0004167a movt sl, 0x1aff | sl = 0x1afffffd;
0x0004167e b 0x416be | goto label_127;
| label_41:
0x00041680 cmp r3, 0x40 |
| if (r3 > 0x40) {
0x00041682 bhi 0x416f8 | goto label_128;
| }
0x00041684 cmp r3, 0x23 |
| if (r3 > 0x23) {
0x00041686 bhi 0x416e2 | goto label_129;
| }
0x00041688 cmp r3, 0x21 |
| if (r3 == 0x21) {
0x0004168a beq 0x416da | goto label_44;
| }
| label_43:
0x0004168c mov.w r2, 0x25 | r2 = 0x25;
0x00041690 movs r1, 0x30 | r1 = 0x30;
0x00041692 strb.w r2, [ip] | *(ip) = r2;
0x00041696 asr.w ip, r3, 4 |
0x0004169a and r3, r3, 0xf | r3 &= 0xf;
| label_45:
0x0004169e add r1, ip | r1 += ip;
0x000416a0 cmp r3, 9 |
0x000416a2 strb r1, [r6, r0] | *((r6 + r0)) = r1;
0x000416a4 add.w r0, r4, 2 | r0 = r4 + 2;
0x000416a8 ite hi |
| if (r3 <= 9) {
0x000416aa movhi r1, 0x37 | r1 = 0x37;
| }
| if (r3 > 9) {
0x000416ac movls r1, 0x30 | r1 = 0x30;
| }
0x000416ae mov r4, fp | r4 = fp;
0x000416b0 add r3, r1 | r3 += r1;
0x000416b2 strb r3, [r6, r0] | *((r6 + r0)) = r3;
| label_42:
0x000416b4 ldrb.w r3, [sb] | r3 = *(sb);
0x000416b8 cmp r3, 0 |
| if (r3 == 0) {
0x000416ba beq.w 0x40ece | goto label_29;
| }
| label_127:
0x000416be add.w fp, r4, 3 |
0x000416c2 cmp fp, r5 |
| if (fp >= r5) {
0x000416c4 bge 0x41734 | goto label_130;
| }
| label_46:
0x000416c6 ldrb r3, [sb], 1 | r3 = *(sb);
| sb++;
0x000416ca add.w ip, r6, r4 |
0x000416ce adds r0, r4, 1 | r0 = r4 + 1;
0x000416d0 bic r1, r3, 0x20 | r1 = BIT_MASK (r3, 0x20);
0x000416d4 subs r1, 0x41 | r1 -= 0x41;
0x000416d6 cmp r1, 0x19 |
| if (r1 > 0x19) {
0x000416d8 bhi 0x41680 | goto label_41;
| }
| label_44:
0x000416da mov r4, r0 | r4 = r0;
0x000416dc strb.w r3, [ip] | *(ip) = r3;
0x000416e0 b 0x416b4 | goto label_42;
| label_129:
0x000416e2 sub.w r1, r3, 0x24 | r1 = r3 - 0x24;
0x000416e6 uxtb r1, r1 | r1 = (int8_t) r1;
0x000416e8 lsr.w r1, sl, r1 | r1 = sl >> r1;
0x000416ec lsls r1, r1, 0x1f | r1 <<= 0x1f;
| if (r1 >= r1) {
0x000416ee bpl 0x4168c | goto label_43;
| }
0x000416f0 mov r4, r0 | r4 = r0;
0x000416f2 strb.w r3, [ip] | *(ip) = r3;
0x000416f6 b 0x416b4 | goto label_42;
| label_128:
0x000416f8 cmp r3, 0x5f |
| if (r3 > 0x5f) {
0x000416fa bhi 0x41714 | goto label_131;
| }
0x000416fc cmp r3, 0x5a |
| if (r3 < 0x5a) {
0x000416fe bls 0x4168c | goto label_43;
| }
0x00041700 sub.w lr, r3, 0x5b | lr = r3 - 0x5b;
0x00041704 movs r1, 0x15 | r1 = 0x15;
0x00041706 uxtb.w lr, lr | lr = (int8_t) lr;
0x0004170a lsr.w r1, r1, lr | r1 >>= lr;
0x0004170e lsls r2, r1, 0x1f | r2 = r1 << 0x1f;
| if (r2 < r1) {
0x00041710 bmi 0x416da | goto label_44;
| }
0x00041712 b 0x4168c | goto label_43;
| label_131:
0x00041714 cmp r3, 0x7e |
| if (r3 == 0x7e) {
0x00041716 beq 0x416da | goto label_44;
| }
0x00041718 cmp r3, 0x9f |
0x0004171a mov.w r2, 0x25 | r2 = 0x25;
0x0004171e strb.w r2, [ip] | *(ip) = r2;
0x00041722 it hi |
| if (r3 <= 0x9f) {
0x00041724 movhi r1, 0x37 | r1 = 0x37;
| }
0x00041726 asr.w ip, r3, 4 |
0x0004172a it ls |
| if (r3 > 0x9f) {
0x0004172c movls r1, 0x30 | r1 = 0x30;
| }
0x0004172e and r3, r3, 0xf | r3 &= 0xf;
0x00041732 b 0x4169e | goto label_45;
| label_130:
0x00041734 cmp.w r5, 0x100000 |
| if (r5 <= 0x100000) {
0x00041738 bgt 0x41816 |
0x0004173a ldr r3, [pc, 0x21c] |
0x0004173c lsls r5, r5, 1 | r5 <<= 1;
0x0004173e mov r0, r6 | r0 = r6;
0x00041740 adds r1, r5, 1 | r1 = r5 + 1;
0x00041742 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041744 ldr r3, [r3] | r3 = *(0x4195a);
0x00041746 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00041748 cmp r0, 0 |
| if (r0 == 0) {
0x0004174a beq.w 0x4186e | goto label_132;
| }
0x0004174e mov r6, r0 | r6 = r0;
0x00041750 b 0x416c6 | goto label_46;
| label_116:
0x00041752 ldr r0, [pc, 0x240] |
0x00041754 add r0, pc | r0 = 0x830ee;
0x00041756 bl 0x409f4 | fcn_000409f4 (r0);
0x0004175a b 0x41158 | goto label_26;
| label_56:
0x0004175c mov sb, r0 | sb = r0;
0x0004175e movs r4, 1 | r4 = 1;
0x00041760 movs r5, 0x50 | r5 = 0x50;
0x00041762 b.w 0x40e12 | goto label_19;
| label_93:
0x00041766 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x0004176a bgt.w 0x41896 | goto label_133;
| }
0x0004176e ldr r3, [pc, 0x1e8] |
0x00041770 lsls r5, r5, 1 | r5 <<= 1;
0x00041772 mov r0, r6 | r0 = r6;
0x00041774 adds r1, r5, 1 | r1 = r5 + 1;
0x00041776 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041778 ldr r3, [r3] | r3 = *(0x4195a);
0x0004177a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004177c cmp r0, 0 |
| if (r0 == 0) {
0x0004177e beq.w 0x418f0 | goto label_134;
| }
0x00041782 mov r6, r0 | r6 = r0;
0x00041784 b 0x412a8 | goto label_47;
| label_114:
0x00041786 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x0004178a bgt 0x4188c | goto label_135;
| }
0x0004178c ldr r3, [pc, 0x1c8] |
0x0004178e lsls r5, r5, 1 | r5 <<= 1;
0x00041790 mov r0, r6 | r0 = r6;
0x00041792 adds r1, r5, 1 | r1 = r5 + 1;
0x00041794 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041796 ldr r3, [r3] | r3 = *(0x41958);
0x00041798 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004179a cmp r0, 0 |
| if (r0 == 0) {
0x0004179c beq.w 0x418e6 | goto label_136;
| }
0x000417a0 mov r6, r0 | r6 = r0;
0x000417a2 b 0x414a6 | goto label_48;
| label_90:
0x000417a4 ldr r0, [pc, 0x1f0] |
0x000417a6 add r0, pc | r0 = 0x83142;
0x000417a8 bl 0x409f4 | fcn_000409f4 (r0);
0x000417ac b 0x41158 | goto label_26;
| label_108:
0x000417ae ldr r0, [pc, 0x1ec] |
0x000417b0 add r0, pc | r0 = 0x83152;
0x000417b2 bl 0x409f4 | fcn_000409f4 (r0);
0x000417b6 b 0x41158 | goto label_26;
| label_98:
0x000417b8 ldr r0, [pc, 0x1e4] |
0x000417ba add r0, pc | r0 = 0x8315e;
0x000417bc bl 0x409f4 | fcn_000409f4 (r0);
0x000417c0 b 0x41158 | goto label_26;
| label_91:
0x000417c2 ldr r0, [pc, 0x1e0] |
0x000417c4 add r0, pc | r0 = 0x8316e;
0x000417c6 bl 0x409f4 | fcn_000409f4 (r0);
0x000417ca b 0x41158 | goto label_26;
| label_117:
0x000417cc ldr r0, [pc, 0x1d8] |
0x000417ce add r0, pc | r0 = 0x8317a;
0x000417d0 bl 0x409f4 | fcn_000409f4 (r0);
0x000417d4 b 0x41158 | goto label_26;
| label_109:
0x000417d6 ldr r0, [pc, 0x1d4] |
0x000417d8 add r0, pc | r0 = 0x8318a;
0x000417da bl 0x409f4 | fcn_000409f4 (r0);
0x000417de b 0x41158 | goto label_26;
| label_123:
0x000417e0 ldr r0, [pc, 0x1cc] |
0x000417e2 add r0, pc | r0 = 0x83196;
0x000417e4 bl 0x409f4 | fcn_000409f4 (r0);
0x000417e8 b 0x41158 | goto label_26;
| label_125:
0x000417ea mov r4, sb | r4 = sb;
0x000417ec b.w 0x40ece | goto label_29;
| label_85:
0x000417f0 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x000417f4 bgt 0x418dc | goto label_137;
| }
0x000417f6 ldr r3, [pc, 0x160] |
0x000417f8 lsls r5, r5, 1 | r5 <<= 1;
0x000417fa mov r0, r6 | r0 = r6;
0x000417fc adds r1, r5, 1 | r1 = r5 + 1;
0x000417fe ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041800 ldr r3, [r3] | r3 = *(0x4195a);
0x00041802 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00041804 cmp r0, 0 |
| if (r0 == 0) {
0x00041806 beq 0x418fa | goto label_138;
| }
0x00041808 mov r6, r0 | r6 = r0;
0x0004180a b 0x41194 | goto label_49;
| label_118:
0x0004180c ldr r0, [pc, 0x1a4] |
0x0004180e add r0, pc | r0 = 0x831c6;
0x00041810 bl 0x409f4 | fcn_000409f4 (r0);
0x00041814 b 0x41158 | goto label_26;
| }
0x00041816 ldr r0, [pc, 0x1a0] |
0x00041818 add r0, pc | r0 = 0x831d6;
0x0004181a bl 0x409f4 | fcn_000409f4 (r0);
0x0004181e b 0x41158 | goto label_26;
| label_126:
0x00041820 cmp.w r5, 0x100000 |
| if (r5 > 0x100000) {
0x00041824 bgt 0x418d2 | goto label_139;
| }
0x00041826 ldr r3, [pc, 0x130] |
0x00041828 lsls r5, r5, 1 | r5 <<= 1;
0x0004182a mov r0, r6 | r0 = r6;
0x0004182c adds r1, r5, 1 | r1 = r5 + 1;
0x0004182e ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041830 ldr r3, [r3] | r3 = *(0x4195a);
0x00041832 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00041834 cmp r0, 0 |
| if (r0 == 0) {
0x00041836 beq 0x4191e | goto label_140;
| }
0x00041838 mov r6, r0 | r6 = r0;
0x0004183a b 0x4165e | goto label_50;
| label_92:
0x0004183c ldr r0, [pc, 0x17c] |
0x0004183e add r0, pc | r0 = 0x831fe;
0x00041840 bl 0x409f4 | fcn_000409f4 (r0);
0x00041844 b 0x41158 | goto label_26;
| label_120:
0x00041846 ldr r0, [pc, 0x178] |
0x00041848 add r0, pc | r0 = 0x8320e;
0x0004184a bl 0x409f4 | fcn_000409f4 (r0);
0x0004184e b 0x41158 | goto label_26;
| label_124:
0x00041850 ldr r0, [pc, 0x170] |
0x00041852 add r0, pc | r0 = 0x8321a;
0x00041854 bl 0x409f4 | fcn_000409f4 (r0);
0x00041858 b 0x41158 | goto label_26;
| label_110:
0x0004185a ldr r0, [pc, 0x16c] |
0x0004185c add r0, pc | r0 = 0x8322a;
0x0004185e bl 0x409f4 | fcn_000409f4 (r0);
0x00041862 b 0x41158 | goto label_26;
| label_119:
0x00041864 ldr r0, [pc, 0x164] |
0x00041866 add r0, pc | r0 = 0x83236;
0x00041868 bl 0x409f4 | fcn_000409f4 (r0);
0x0004186c b 0x41158 | goto label_26;
| label_132:
0x0004186e ldr r0, [pc, 0x160] |
0x00041870 add r0, pc | r0 = 0x83246;
0x00041872 bl 0x409f4 | fcn_000409f4 (r0);
0x00041876 b 0x41158 | goto label_26;
| label_111:
0x00041878 ldr.w sl, [r8, 0x18] | sl = *((r8 + 0x18));
0x0004187c cmp.w sl, 0 |
| if (sl == 0) {
0x00041880 beq.w 0x41490 | goto label_51;
| }
0x00041884 ldrb.w r3, [sl] | r3 = *(sl);
0x00041888 mov sb, r4 | sb = r4;
0x0004188a b 0x41372 | goto label_36;
| label_135:
0x0004188c ldr r0, [pc, 0x144] |
0x0004188e add r0, pc | r0 = 0x83266;
0x00041890 bl 0x409f4 | fcn_000409f4 (r0);
0x00041894 b 0x41158 | goto label_26;
| label_133:
0x00041896 ldr r0, [pc, 0x140] |
0x00041898 add r0, pc | r0 = 0x83276;
0x0004189a bl 0x409f4 | fcn_000409f4 (r0);
0x0004189e b 0x41158 | goto label_26;
| label_112:
0x000418a0 cmp.w r5, 0x100000 |
| if (r5 <= 0x100000) {
0x000418a4 bgt 0x41946 |
0x000418a6 ldr r3, [pc, 0xb0] |
0x000418a8 lsls r5, r5, 1 | r5 <<= 1;
0x000418aa mov r0, r6 | r0 = r6;
0x000418ac adds r1, r5, 1 | r1 = r5 + 1;
0x000418ae ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000418b0 ldr r3, [r3] | r3 = *(0x4195a);
0x000418b2 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000418b4 cmp r0, 0 |
| if (r0 != 0) {
0x000418b6 beq 0x4193c |
0x000418b8 mov sb, r4 | sb = r4;
0x000418ba mov r6, r0 | r6 = r0;
0x000418bc b 0x41352 | goto label_34;
| label_100:
0x000418be ldr r0, [pc, 0x11c] |
0x000418c0 add r0, pc | r0 = 0x832a2;
0x000418c2 bl 0x409f4 | fcn_000409f4 (r0);
0x000418c6 b 0x41158 | goto label_26;
| label_101:
0x000418c8 ldr r0, [pc, 0x114] |
0x000418ca add r0, pc | r0 = 0x832ae;
0x000418cc bl 0x409f4 | fcn_000409f4 (r0);
0x000418d0 b 0x41158 | goto label_26;
| label_139:
0x000418d2 ldr r0, [pc, 0x110] |
0x000418d4 add r0, pc | r0 = 0x832be;
0x000418d6 bl 0x409f4 | fcn_000409f4 (r0);
0x000418da b 0x41158 | goto label_26;
| label_137:
0x000418dc ldr r0, [pc, 0x108] |
0x000418de add r0, pc | r0 = 0x832ca;
0x000418e0 bl 0x409f4 | fcn_000409f4 (r0);
0x000418e4 b 0x41158 | goto label_26;
| label_136:
0x000418e6 ldr r0, [pc, 0x104] |
0x000418e8 add r0, pc | r0 = 0x832da;
0x000418ea bl 0x409f4 | fcn_000409f4 (r0);
0x000418ee b 0x41158 | goto label_26;
| label_134:
0x000418f0 ldr r0, [pc, 0xfc] |
0x000418f2 add r0, pc | r0 = 0x832e6;
0x000418f4 bl 0x409f4 | fcn_000409f4 (r0);
0x000418f8 b 0x41158 | goto label_26;
| label_138:
0x000418fa ldr r0, [pc, 0xf8] |
0x000418fc add r0, pc | r0 = 0x832f6;
0x000418fe bl 0x409f4 | fcn_000409f4 (r0);
0x00041902 b 0x41158 | goto label_26;
| label_122:
0x00041904 cmp.w r5, 0x100000 |
| if (r5 <= 0x100000) {
0x00041908 bgt 0x41932 |
0x0004190a ldr r3, [pc, 0x4c] |
0x0004190c lsls r5, r5, 1 | r5 <<= 1;
0x0004190e mov r0, r6 | r0 = r6;
0x00041910 adds r1, r5, 1 | r1 = r5 + 1;
0x00041912 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00041914 ldr r3, [r3] | r3 = *(0x4195a);
0x00041916 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| if (r0 != 0) {
0x00041918 cbz r0, 0x41928 |
0x0004191a mov r6, r0 | r6 = r0;
0x0004191c b 0x41594 | goto label_52;
| label_140:
0x0004191e ldr r0, [pc, 0xd8] |
0x00041920 add r0, pc | r0 = 0x8331e;
0x00041922 bl 0x409f4 | fcn_000409f4 (r0);
0x00041926 b 0x41158 | goto label_26;
| }
0x00041928 ldr r0, [pc, 0xd0] |
0x0004192a add r0, pc | r0 = 0x8332a;
0x0004192c bl 0x409f4 | fcn_000409f4 (r0);
0x00041930 b 0x41158 | goto label_26;
| }
0x00041932 ldr r0, [pc, 0xcc] |
0x00041934 add r0, pc | r0 = 0x8333a;
0x00041936 bl 0x409f4 | fcn_000409f4 (r0);
0x0004193a b 0x41158 | goto label_26;
| }
0x0004193c ldr r0, [pc, 0xc4] |
0x0004193e add r0, pc | r0 = 0x83346;
0x00041940 bl 0x409f4 | fcn_000409f4 (r0);
0x00041944 b 0x41158 | goto label_26;
| }
0x00041946 ldr r0, [pc, 0xc0] |
0x00041948 add r0, pc | r0 = 0x83356;
0x0004194a bl 0x409f4 | fcn_000409f4 (r0);
0x0004194e b 0x41158 | goto label_26;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x456c8 */
| #include <stdint.h>
|
; (fcn) sym.xmlSnprintfElementContent () | void xmlSnprintfElementContent (int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000456c8 cmp r2, 0 |
| if (r2 == 0) {
0x000456ca beq.w 0x4585c | goto label_5;
| }
0x000456ce push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x000456d2 mov r4, r1 | r4 = r1;
0x000456d4 mov r7, r3 | r7 = r3;
0x000456d6 mov r5, r0 | r5 = r0;
0x000456d8 mov r6, r2 | r6 = r2;
0x000456da blx 0x1b95c | r0 = fcn_0001b95c ();
0x000456de sub.w r8, r4, r0 | r8 = r4 - r0;
0x000456e2 mov r3, r0 | r3 = r0;
0x000456e4 cmp.w r8, 0x31 |
| if (r8 <= 0x31) {
0x000456e8 ble 0x4573e | goto label_6;
| }
0x000456ea cmp r7, 0 |
| if (r7 != 0) {
0x000456ec bne 0x4575c | goto label_7;
| }
| label_1:
0x000456ee ldr r3, [r6] | r3 = *(r6);
0x000456f0 subs r3, 1 | r3--;
0x000456f2 cmp r3, 3 |
| if (r3 <= 3) {
0x000456f4 bhi 0x45716 |
| /* switch table (4 cases) at 0x456fa */
0x000456f6 tbb [pc, r3] | __asm ("tbb [0x000456fc]");
0x000456fe mov r0, r5 | r0 = r5;
0x00045700 blx 0x1b95c | fcn_0001b95c ();
0x00045704 ldr r2, [pc, 0x1d0] |
0x00045706 mov r3, r0 | r3 = r0;
0x00045708 add.w ip, r5, r0 |
0x0004570c add r2, pc | r2 = 0x8afe8;
0x0004570e ldm r2!, {r0, r1} | r0 = *(r2!);
| r1 = *((r2! + 4));
0x00045710 str r0, [r5, r3] | *((r5 + r3)) = r0;
0x00045712 str.w r1, [ip, 4] | __asm ("str.w r1, [ip, 4]");
| }
| label_2:
0x00045716 mov r0, r5 | r0 = r5;
0x00045718 blx 0x1b95c | r0 = fcn_0001b95c ();
0x0004571c subs r4, r4, r0 | r4 -= r0;
0x0004571e cmp r4, 2 |
| if (r4 < 2) {
0x00045720 bls 0x4573a | goto label_0;
| }
0x00045722 cmp r7, 0 |
| if (r7 != 0) {
0x00045724 bne.w 0x45852 | goto label_8;
| }
| label_3:
0x00045728 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0004572a cmp r3, 3 |
| if (r3 == 3) {
0x0004572c beq.w 0x4585e | goto label_9;
| }
0x00045730 cmp r3, 4 |
| if (r3 == 4) {
0x00045732 beq.w 0x45842 | goto label_10;
| }
0x00045734 strh r6, [r0, 4] | *((r0 + 4)) = r6;
0x00045736 cmp r3, 2 |
| if (r3 == 2) {
0x00045738 beq 0x45832 | goto label_11;
| }
| do {
| label_0:
0x0004573a pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_6:
0x0004573e cmp.w r8, 4 |
0x00045742 ble 0x4573a |
| } while (r8 <= 4);
0x00045744 adds r2, r5, r0 | r2 = r5 + r0;
0x00045746 ldrb r1, [r2, -0x1] | r1 = *((r2 - 0x1));
0x0004574a cmp r1, 0x2e |
| if (r1 == 0x2e) {
0x0004574c beq 0x4573a | goto label_0;
| }
0x0004574e ldr r1, [pc, 0x18c] |
0x00045750 add r1, pc | r1 = 0x8b032;
0x00045752 ldr r0, [r1] | r0 = *(0x8b032);
0x00045754 ldrb r1, [r1, 4] | r1 = *((r1 + 4));
0x00045756 str r0, [r5, r3] | *((r5 + r3)) = r0;
0x00045758 strb r1, [r2, 4] | *((r2 + 4)) = r1;
0x0004575a b 0x4573a | goto label_0;
| label_7:
0x0004575c ldr r2, [pc, 0x180] |
0x0004575e add r2, pc | r2 = 0x8b042;
0x00045760 ldrh r2, [r2] | r2 = *(r2);
0x00045762 strh r2, [r5, r0] | *((r5 + r0)) = r2;
0x00045764 b 0x456ee | goto label_1;
0x00045766 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00045768 bl 0x6bfec | r0 = xmlStrlen ();
0x0004576c mov sb, r0 | sb = r0;
0x0004576e ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x00045770 cmp r0, 0 |
| if (r0 == 0) {
0x00045772 beq.w 0x458b4 | goto label_12;
| }
0x00045776 bl 0x6bfec | xmlStrlen ();
0x0004577a add r0, sb | r0 += sb;
0x0004577c adds r0, 0xa | r0 += 0xa;
0x0004577e cmp r8, r0 |
| if (r8 <= r0) {
0x00045780 ble.w 0x458be | goto label_13;
| }
0x00045784 ldr.w r8, [r6, 0x18] | r8 = *((r6 + 0x18));
0x00045788 cmp.w r8, 0 |
| if (r8 != 0) {
0x0004578c beq 0x457a4 |
0x0004578e mov r0, r5 | r0 = r5;
0x00045790 blx 0x1b95c | fcn_0001b95c ();
0x00045794 mov r1, r8 | r1 = r8;
0x00045796 add r0, r5 | r0 += r5;
0x00045798 blx 0x1b724 | fcn_0001b724 ();
0x0004579c ldr r3, [pc, 0x144] |
0x0004579e add r3, pc | r3 = 0x8b086;
0x000457a0 ldrh r3, [r3] | r3 = *(r3);
0x000457a2 strh r3, [r0] | *(r0) = r3;
| }
| label_4:
0x000457a4 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x000457a6 cmp r1, 0 |
| if (r1 == 0) {
0x000457a8 beq 0x45716 | goto label_2;
| }
0x000457aa mov r0, r5 | r0 = r5;
0x000457ac blx 0x1bc24 | fcn_0001bc24 ();
0x000457b0 b 0x45716 | goto label_2;
0x000457b2 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000457b4 mov r1, r4 | r1 = r4;
0x000457b6 mov r0, r5 | r0 = r5;
0x000457b8 ldr r3, [r2] | r3 = *(r2);
0x000457ba subs r3, 3 | r3 -= 3;
0x000457bc cmp r3, 1 |
0x000457be ite ls |
| if (r3 > 1) {
0x000457c0 movls r3, 1 | r3 = 1;
| }
| if (r3 <= 1) {
0x000457c2 movhi r3, 0 | r3 = 0;
| }
0x000457c4 bl 0x456c8 | xmlSnprintfElementContent ();
0x000457c8 mov r0, r5 | r0 = r5;
0x000457ca blx 0x1b95c | r0 = fcn_0001b95c ();
0x000457ce subs r2, r4, r0 | r2 = r4 - r0;
0x000457d0 mov r3, r0 | r3 = r0;
0x000457d2 cmp r2, 0x31 |
| if (r2 > 0x31) {
0x000457d4 bgt 0x45898 | goto label_14;
| }
0x000457d6 cmp r2, 4 |
| if (r2 <= 4) {
0x000457d8 ble 0x4573a | goto label_0;
| }
0x000457da adds r2, r5, r0 | r2 = r5 + r0;
0x000457dc ldrb r1, [r2, -0x1] | r1 = *((r2 - 0x1));
0x000457e0 cmp r1, 0x2e |
| if (r1 == 0x2e) {
0x000457e2 beq 0x4573a | goto label_0;
| }
0x000457e4 ldr r1, [pc, 0x100] |
0x000457e6 add r1, pc | r1 = 0x8b0d2;
0x000457e8 ldr r0, [r1] | r0 = *(0x8b0d2);
0x000457ea ldrb r1, [r1, 4] | r1 = *((r1 + 4));
0x000457ec str r0, [r5, r3] | *((r5 + r3)) = r0;
0x000457ee strb r1, [r2, 4] | *((r2 + 4)) = r1;
0x000457f0 b 0x4573a | goto label_0;
0x000457f2 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000457f4 mov r1, r4 | r1 = r4;
0x000457f6 mov r0, r5 | r0 = r5;
0x000457f8 ldr r3, [r2] | r3 = *(r2);
0x000457fa subs r3, 3 | r3 -= 3;
0x000457fc cmp r3, 1 |
0x000457fe ite ls |
| if (r3 > 1) {
0x00045800 movls r3, 1 | r3 = 1;
| }
| if (r3 <= 1) {
0x00045802 movhi r3, 0 | r3 = 0;
| }
0x00045804 bl 0x456c8 | xmlSnprintfElementContent ();
0x00045808 mov r0, r5 | r0 = r5;
0x0004580a blx 0x1b95c | r0 = fcn_0001b95c ();
0x0004580e subs r2, r4, r0 | r2 = r4 - r0;
0x00045810 mov r3, r0 | r3 = r0;
0x00045812 cmp r2, 0x31 |
| if (r2 > 0x31) {
0x00045814 bgt 0x4586e | goto label_15;
| }
0x00045816 cmp r2, 4 |
| if (r2 <= 4) {
0x00045818 ble 0x4573a | goto label_0;
| }
0x0004581a adds r2, r5, r0 | r2 = r5 + r0;
0x0004581c ldrb r1, [r2, -0x1] | r1 = *((r2 - 0x1));
0x00045820 cmp r1, 0x2e |
| if (r1 == 0x2e) {
0x00045822 beq 0x4573a | goto label_0;
| }
0x00045824 ldr r1, [pc, 0xc4] |
0x00045826 add r1, pc | r1 = 0x8b116;
0x00045828 ldr r0, [r1] | r0 = *(0x8b116);
0x0004582a ldrb r1, [r1, 4] | r1 = *((r1 + 4));
0x0004582c str r0, [r5, r3] | *((r5 + r3)) = r0;
0x0004582e strb r1, [r2, 4] | *((r2 + 4)) = r1;
0x00045830 b 0x4573a | goto label_0;
| label_11:
0x00045832 mov r0, r5 | r0 = r5;
0x00045834 blx 0x1b95c | fcn_0001b95c ();
0x00045838 ldr r3, [pc, 0xb4] |
0x0004583a add r3, pc | r3 = 0x8b12e;
0x0004583c ldrh r3, [r3] | r3 = *(r3);
0x0004583e strh r3, [r5, r0] | *((r5 + r0)) = r3;
0x00045840 b 0x4573a | goto label_0;
| label_10:
0x00045842 mov r0, r5 | r0 = r5;
0x00045844 blx 0x1b95c | fcn_0001b95c ();
0x00045848 ldr r3, [pc, 0xa8] |
0x0004584a add r3, pc | r3 = 0x8b142;
0x0004584c ldrh r3, [r3] | r3 = *(r3);
0x0004584e strh r3, [r5, r0] | *((r5 + r0)) = r3;
0x00045850 b 0x4573a | goto label_0;
| label_8:
0x00045852 ldr r3, [pc, 0xa4] |
0x00045854 add r3, pc | r3 = 0x8b152;
0x00045856 ldrh r3, [r3] | r3 = *(r3);
0x00045858 strh r3, [r5, r0] | *((r5 + r0)) = r3;
0x0004585a b 0x45728 | goto label_3;
| label_5:
0x0004585c bx lr | return;
| label_9:
0x0004585e mov r0, r5 | r0 = r5;
0x00045860 blx 0x1b95c | fcn_0001b95c ();
0x00045864 ldr r3, [pc, 0x94] |
0x00045866 add r3, pc | r3 = 0x8b166;
0x00045868 ldrh r3, [r3] | r3 = *(r3);
0x0004586a strh r3, [r5, r0] | *((r5 + r0)) = r3;
0x0004586c b 0x4573a | goto label_0;
| label_15:
0x0004586e ldr r2, [pc, 0x90] |
0x00045870 add r2, pc | r2 = 0x8b176;
0x00045872 ldr r0, [r2] | r0 = *(0x8b176);
0x00045874 str r0, [r5, r3] | *((r5 + r3)) = r0;
0x00045876 ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x00045878 ldr r1, [r2] | r1 = *(0x8b176);
0x0004587a cmp r1, 3 |
| if (r1 == 3) {
0x0004587c beq 0x458a8 | goto label_16;
| }
| do {
0x0004587e ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00045880 cmp r3, 1 |
0x00045882 it ne |
| if (r3 != 1) {
0x00045884 cmpne r1, 2 | __asm ("cmpne r1, 2");
| }
0x00045886 ite ne |
| if (r3 == 1) {
0x00045888 movne r3, 1 | r3 = 1;
| }
| if (r3 != 1) {
0x0004588a moveq r3, 0 | r3 = 0;
| }
| if (r3 != 1) {
0x0004588c bne 0x458a8 | goto label_16;
| }
0x0004588e mov r1, r4 | r1 = r4;
0x00045890 mov r0, r5 | r0 = r5;
0x00045892 bl 0x456c8 | xmlSnprintfElementContent ();
0x00045896 b 0x45716 | goto label_2;
| label_14:
0x00045898 ldr r2, [pc, 0x68] |
0x0004589a add r2, pc | r2 = 0x8b1a2;
0x0004589c ldr r0, [r2] | r0 = *(0x8b1a2);
0x0004589e str r0, [r5, r3] | *((r5 + r3)) = r0;
0x000458a0 ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x000458a2 ldr r1, [r2] | r1 = *(0x8b1a2);
0x000458a4 cmp r1, 4 |
0x000458a6 bne 0x4587e |
| } while (r1 != 4);
| label_16:
0x000458a8 movs r3, 1 | r3 = 1;
0x000458aa mov r1, r4 | r1 = r4;
0x000458ac mov r0, r5 | r0 = r5;
0x000458ae bl 0x456c8 | xmlSnprintfElementContent ();
0x000458b2 b 0x45716 | goto label_2;
| label_12:
0x000458b4 add.w r0, sb, 9 | r0 = sb + 9;
0x000458b8 cmp r8, r0 |
| if (r8 > r0) {
0x000458ba bgt.w 0x457a4 | goto label_4;
| }
| label_13:
0x000458be mov r0, r5 | r0 = r5;
0x000458c0 blx 0x1b95c | fcn_0001b95c ();
0x000458c4 ldr r2, [pc, 0x40] |
0x000458c6 mov r3, r0 | r3 = r0;
0x000458c8 adds r1, r5, r0 | r1 = r5 + r0;
0x000458ca add r2, pc | r2 = 0x8b1d6;
0x000458cc ldr r0, [r2] | r0 = *(0x8b1d6);
0x000458ce ldrb r2, [r2, 4] | r2 = *((r2 + 4));
0x000458d0 str r0, [r5, r3] | *((r5 + r3)) = r0;
0x000458d2 strb r2, [r1, 4] | *((r1 + 4)) = r2;
0x000458d4 b 0x4573a | goto label_0;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x57b04).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libxml2.so.2.9.13 @ 0x56660 */
| #include <stdint.h>
|
; (fcn) sym.xmlXPathNormalizeFunction () | void xmlXPathNormalizeFunction (uint32_t arg1, uint32_t arg2) {
| int16_t var_3h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00056660 ldr r2, [pc, 0x1b0] |
0x00056662 ldr r3, [pc, 0x1b4] | r3 = *(0x5681a);
0x00056664 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00056668 sub sp, 0xc |
0x0005666a add r2, pc | r2 = 0xace82;
0x0005666c ldr r3, [r2, r3] |
0x0005666e ldr r3, [r3] | r3 = *(0xace82);
0x00056670 str r3, [sp, 4] | var_4h = r3;
0x00056672 mov.w r3, 0 | r3 = 0;
0x00056676 cmp r0, 0 |
| if (r0 == 0) {
0x00056678 beq.w 0x567d2 | goto label_3;
| }
0x0005667c mov r4, r0 | r4 = r0;
| if (r1 != 0) {
0x0005667e cbz r1, 0x566a8 |
0x00056680 cmp r1, 1 |
| if (r1 == 1) {
0x00056682 beq 0x566c6 | goto label_4;
| }
0x00056684 ldr r2, [pc, 0x194] |
0x00056686 ldr r3, [pc, 0x190] | r3 = *(0x5681a);
0x00056688 add r2, pc | r2 = 0xacea8;
0x0005668a ldr r3, [r2, r3] | r3 = *(0xacea8);
0x0005668c ldr r2, [r3] | r2 = *(0xacea8);
0x0005668e ldr r3, [sp, 4] | r3 = var_4h;
0x00056690 eors r2, r3 | r2 ^= r3;
0x00056692 mov.w r3, 0 | r3 = 0;
0x00056696 it eq |
| if (r2 != r3) {
0x00056698 moveq r1, 0xc | r1 = 0xc;
| }
| if (r2 != r3) {
0x0005669a bne.w 0x56804 | goto label_5;
| }
0x0005669e add sp, 0xc |
0x000566a0 pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x000566a4 b.w 0x52f88 | void (*0x52f88)() ();
| }
0x000566a8 ldr r5, [r0, 0xc] | r5 = *((r0 + 0xc));
0x000566aa ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000566ac bl 0x376f8 | r0 = xmlNodeGetContent ();
0x000566b0 mov r1, r0 | r1 = r0;
0x000566b2 cmp r0, 0 |
| if (r0 == 0) {
0x000566b4 beq.w 0x56808 | goto label_6;
| }
| label_2:
0x000566b8 mov r0, r5 | r0 = r5;
0x000566ba bl 0x55250 | r0 = fcn_00055250 (r0, r1);
0x000566be mov r1, r0 | r1 = r0;
0x000566c0 mov r0, r4 | r0 = r4;
0x000566c2 bl 0x536c8 | valuePush ();
| label_4:
0x000566c6 ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x000566c8 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000566ca cmp r2, r3 |
| if (r2 >= r3) {
0x000566cc bge.w 0x567ec | goto label_7;
| }
0x000566d0 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000566d2 cmp r3, 0 |
| if (r3 == 0) {
0x000566d4 beq 0x56788 | goto label_8;
| }
0x000566d6 ldr r3, [r3] | r3 = *(r3);
0x000566d8 cmp r3, 4 |
| if (r3 != 4) {
0x000566da bne 0x56776 | goto label_9;
| }
| label_1:
0x000566dc mov r0, r4 | r0 = r4;
0x000566de bl 0x53684 | valuePop ();
0x000566e2 ldr r5, [r0, 0x18] | r5 = *((r0 + 0x18));
0x000566e4 mov r6, r0 | r6 = r0;
0x000566e6 blx 0x1b870 | r0 = fcn_0001b870 ();
0x000566ea mov r7, r0 | r7 = r0;
0x000566ec cmp r0, 0 |
0x000566ee it ne |
| if (r0 != 0) {
0x000566f0 cmpne r5, 0 | __asm ("cmpne r5, 0");
| }
| if (r0 == 0) {
0x000566f2 beq 0x567ca | goto label_10;
| }
0x000566f4 ldrb r3, [r5] | r3 = *(r5);
0x000566f6 b 0x566fc |
| while (r2 != 0) {
0x000566f8 ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
0x000566fc cmp r3, 0x20 |
0x000566fe it ne |
| if (r3 != 0x20) {
0x00056700 cmpne r3, 0xd | __asm ("cmpne r3, 0xd");
| }
0x00056702 sub.w r3, r3, 9 | r3 -= 9;
0x00056706 ite eq |
| if (r3 != 0x20) {
0x00056708 moveq r2, 1 | r2 = 1;
| }
| if (r3 == 0x20) {
0x0005670a movne r2, 0 | r2 = 0;
| }
0x0005670c cmp r3, 1 |
0x0005670e it ls |
| if (r3 > 1) {
0x00056710 orrls r2, r2, 1 | r2 |= 1;
| }
0x00056714 cmp r2, 0 |
0x00056716 bne 0x566f8 |
| }
0x00056718 movs r3, 0 | r3 = 0;
0x0005671a strb.w r3, [sp, 3] | var_3h = r3;
0x0005671e ldrb r3, [r5] | r3 = *(r5);
0x00056720 cmp r3, 0 |
| if (r3 == 0) {
0x00056722 beq 0x567ac | goto label_11;
| }
0x00056724 mov.w sb, 0x13 | sb = 0x13;
0x00056728 add.w r8, sp, 3 | r8 += var_3h;
0x0005672c movt sb, 0x80 | sb = (sb & 0xFFFF) | 0x800000;
0x00056730 b 0x56744 | goto label_12;
| label_0:
0x00056732 movs r2, 1 | r2 = 1;
0x00056734 mov r1, r5 | r1 = r5;
0x00056736 mov r0, r7 | r0 = r7;
0x00056738 blx 0x1b9dc | fcn_0001b9dc ();
| do {
0x0005673c ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
0x00056740 cmp r3, 0 |
| if (r3 == 0) {
0x00056742 beq 0x567ac | goto label_11;
| }
| label_12:
0x00056744 subs r3, 9 | r3 -= 9;
0x00056746 uxtb r3, r3 | r3 = (int8_t) r3;
0x00056748 cmp r3, 0x17 |
| if (r3 > 0x17) {
0x0005674a bhi 0x5675c | goto label_13;
| }
0x0005674c lsr.w r3, sb, r3 | r3 = sb >> r3;
0x00056750 lsls r3, r3, 0x1f | r3 <<= 0x1f;
0x00056752 itt mi |
| if (r3 >= r3) {
0x00056754 movmi r3, 0x20 | r3 = 0x20;
| }
| if (r3 >= r3) {
0x00056756 strbmi r3, [sp, 3] | var_3h = r3;
| }
0x0005675a bmi 0x5673c |
| } while (r3 < r3);
| label_13:
0x0005675c ldrb.w r3, [sp, 3] | r3 = var_3h;
0x00056760 cmp r3, 0 |
| if (r3 == 0) {
0x00056762 beq 0x56732 | goto label_0;
| }
0x00056764 movs r2, 1 | r2 = 1;
0x00056766 mov r1, r8 | r1 = r8;
0x00056768 mov r0, r7 | r0 = r7;
0x0005676a blx 0x1b9dc | fcn_0001b9dc ();
0x0005676e movs r3, 0 | r3 = 0;
0x00056770 strb.w r3, [sp, 3] | var_3h = r3;
0x00056774 b 0x56732 | goto label_0;
| label_9:
0x00056776 movs r1, 1 | r1 = 1;
0x00056778 mov r0, r4 | r0 = r4;
0x0005677a bl 0x56118 | xmlXPathStringFunction ();
0x0005677e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
| if (r3 == 0) {
0x00056780 cbz r3, 0x56788 | goto label_8;
| }
0x00056782 ldr r3, [r3] | r3 = *(r3);
0x00056784 cmp r3, 4 |
| if (r3 == 4) {
0x00056786 beq 0x566dc | goto label_1;
| }
| label_8:
0x00056788 ldr r2, [pc, 0x94] |
0x0005678a ldr r3, [pc, 0x8c] | r3 = *(0x5681a);
0x0005678c add r2, pc | r2 = 0xacfb0;
0x0005678e ldr r3, [r2, r3] | r3 = *(0xacfb0);
0x00056790 ldr r2, [r3] | r2 = *(0xacfb0);
0x00056792 ldr r3, [sp, 4] | r3 = var_4h;
0x00056794 eors r2, r3 | r2 ^= r3;
0x00056796 mov.w r3, 0 | r3 = 0;
0x0005679a it eq |
| if (r2 != r3) {
0x0005679c moveq r1, 0xb | r1 = 0xb;
| }
| if (r2 != r3) {
0x0005679e bne 0x56804 | goto label_5;
| }
| do {
0x000567a0 mov r0, r4 | r0 = r4;
0x000567a2 add sp, 0xc |
0x000567a4 pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x000567a8 b.w 0x52f88 | void (*0x52f88)() ();
| label_11:
0x000567ac ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x000567ae mov r0, r7 | r0 = r7;
0x000567b0 bl 0x6cccc | r0 = xmlBufContent ();
0x000567b4 mov r1, r0 | r1 = r0;
0x000567b6 mov r0, r5 | r0 = r5;
0x000567b8 bl 0x551a4 | r0 = fcn_000551a4 (r0, r1);
0x000567bc mov r1, r0 | r1 = r0;
0x000567be mov r0, r4 | r0 = r4;
0x000567c0 bl 0x536c8 | valuePush ();
0x000567c4 mov r0, r7 | r0 = r7;
0x000567c6 blx 0x1bc84 | fcn_0001bc84 ();
| label_10:
0x000567ca ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000567cc mov r1, r6 | r1 = r6;
0x000567ce bl 0x55670 | fcn_00055670 (r0, r1);
| label_3:
0x000567d2 ldr r2, [pc, 0x50] |
0x000567d4 ldr r3, [pc, 0x40] | r3 = *(0x56818);
0x000567d6 add r2, pc | r2 = 0xad000;
0x000567d8 ldr r3, [r2, r3] | r3 = *(0xad000);
0x000567da ldr r2, [r3] | r2 = *(0xad000);
0x000567dc ldr r3, [sp, 4] | r3 = var_4h;
0x000567de eors r2, r3 | r2 ^= r3;
0x000567e0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000567e4 bne 0x56804 | goto label_5;
| }
0x000567e6 add sp, 0xc |
0x000567e8 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_7:
0x000567ec ldr r2, [pc, 0x38] |
0x000567ee ldr r3, [pc, 0x28] | r3 = *(0x5681a);
0x000567f0 add r2, pc | r2 = 0xad01c;
0x000567f2 ldr r3, [r2, r3] | r3 = *(0xad01c);
0x000567f4 ldr r2, [r3] | r2 = *(0xad01c);
0x000567f6 ldr r3, [sp, 4] | r3 = var_4h;
0x000567f8 eors r2, r3 | r2 ^= r3;
0x000567fa mov.w r3, 0 | r3 = 0;
0x000567fc lsls r0, r0, 0xc | r0 <<= 0xc;
0x000567fe it eq |
| if (r0 != r0) {
0x00056800 moveq r1, 0x17 | r1 = 0x17;
| }
0x00056802 beq 0x567a0 |
| } while (r0 == r0);
| label_5:
0x00056804 blx 0x1bb70 | fputc (r0, r1);
| label_6:
0x00056808 ldr r0, [pc, 0x20] |
0x0005680a add r0, pc | r0 = 0xad03a;
0x0005680c bl 0x6bca8 | r0 = xmlStrdup ();
0x00056810 mov r1, r0 | r1 = r0;
0x00056812 b 0x566b8 | goto label_2;
| }
[*] Function mmap used 1 times libxml2.so.2.9.13