[*] Binary protection state of libsoap.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libsoap.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x139d8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.soap_begin_recv () | void soap_begin_recv (int16_t arg_fb4h, int16_t arg_fb8h, int16_t arg_ff8h, int16_t arg1) {
| int16_t var_4h;
| r0 = arg1;
0x000139d8 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000139dc add.w r6, r0, 0x16000 | r6 = r0 + 0x16000;
0x000139e0 movs r4, 0 | r4 = 0;
0x000139e2 mov r5, r0 | r5 = r0;
0x000139e4 sub sp, 0xc |
0x000139e6 add.w r7, r5, 0x3000 | r7 = r5 + 0x3000;
0x000139ea str.w r4, [r6, 0x184] | __asm ("str.w r4, aav.0x000000ff");
0x000139ee blx 0x5d68 | fcn_00005d68 ();
0x000139f2 mov r0, r5 | r0 = r5;
0x000139f4 blx 0x672c | fcn_0000672c ();
0x000139f8 mov r0, r5 | r0 = r5;
0x000139fa strh r4, [r5, 2] | *((r5 + 2)) = r4;
0x000139fc bl 0x69e0 | fcn_000069e0 (r0);
0x00013a00 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00013a02 ldrsh.w r1, [r6, 0x154] | r1 = *((r6 + 0x154));
0x00013a06 and r3, r2, 3 | r3 = r2 & 3;
0x00013a0a cmp r3, 3 |
0x00013a0c ittt eq |
| if (r3 != 3) {
0x00013a0e ldreq r3, [r5, 0xc] | r3 = *((r5 + 0xc));
| }
| if (r3 != 3) {
0x00013a10 orreq r3, r3, 3 | r3 |= 3;
| }
| if (r3 == 3) {
0x00013a14 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
| }
0x00013a16 bic r3, r2, 0x102 | r3 = BIT_MASK (r2, 0x102);
0x00013a1a bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00013a1e strd r3, r3, [r5, 4] | __asm ("strd r3, r3, [r5, 4]");
| if (r1 == 0) {
0x00013a22 cbnz r1, 0x13a28 |
0x00013a24 strd r1, r1, [r7, 0xb0] | __asm ("strd r1, r1, [r7, 0xb0]");
| }
0x00013a28 ands r3, r2, 0x10 | r3 = r2 & 0x10;
0x00013a2c add.w r8, r5, 0x17000 | r8 = r5 + 0x17000;
0x00013a30 it eq |
| if (r3 == r2) {
0x00013a32 strheq r3, [r6, 0x154] | __asm ("strheq r3, aav.0x000000ff");
| }
0x00013a36 add.w sl, r5, 0x15000 | sl = r5 + 0x15000;
0x00013a3a movs r3, 0 | r3 = 0;
0x00013a3c bic r2, r2, 0x500 | r2 = BIT_MASK (r2, 0x500);
0x00013a40 str.w r3, [r7, 0xb8] | __asm ("str.w r3, [r7, 0xb8]");
0x00013a44 add.w fp, r5, 0x2000 |
0x00013a48 str.w r3, [r7, 0xc0] | __asm ("str.w r3, [r7, 0xc0]");
0x00013a4c bic r2, r2, 3 | r2 = BIT_MASK (r2, 3);
0x00013a50 str.w r3, [sl, 0x52c] | __asm ("str.w r3, aav.0x000000ff");
0x00013a54 add.w sb, r5, 0x30c0 | sb = r5 + 0x30c0;
0x00013a58 strh.w r3, [sl, 0x530] | *((sl + 0x530)) = r3;
0x00013a5c add.w sb, sb, 0x18 | sb += 0x18;
0x00013a60 strd r3, r3, [r7, 0xc4] | __asm ("strd r3, r3, [r7, 0xc4]");
0x00013a64 mov.w r0, 0x3f800000 | r0 = 0x3f800000;
0x00013a68 strh.w r3, [r7, 0xbc] | *((r7 + 0xbc)) = r3;
0x00013a6c strb.w r3, [sl, 0x53c] | *((sl + 0x53c)) = r3;
0x00013a70 ldr.w r1, [r8, 0x6dc] | r1 = *((r8 + 0x6dc));
0x00013a74 str.w r3, [r6, 0x13c] | __asm ("str.w r3, aav.0x000000ff");
0x00013a78 str.w r3, [fp, 0xfb4] | __asm ("str.w r3, [arg_fb4h]");
0x00013a7c str.w r3, [fp, 0xfb8] | __asm ("str.w r3, [arg_fb8h]");
0x00013a80 str.w r3, [r6, 0x180] | __asm ("str.w r3, aav.0x000000ff");
0x00013a84 str.w r3, [r6, 0x190] | __asm ("str.w r3, aav.0x000000ff");
0x00013a88 strd r3, r3, [r6, 0x19c] | __asm ("strd r3, r3, aav.0x000000ff");
0x00013a8c strd r3, r3, [r6, 0x1b8] | __asm ("strd r3, r3, aav.0x000000ff");
0x00013a90 str.w r3, [r6, 0x1c0] | __asm ("str.w r3, aav.0x000000ff");
0x00013a94 strd r3, r3, [r6, 0x1cc] | __asm ("strd r3, r3, aav.0x000000ff");
0x00013a98 str.w r3, [r6, 0x1d4] | __asm ("str.w r3, aav.0x000000ff");
0x00013a9c strd r3, r3, [r6, 0x1c4] | __asm ("strd r3, r3, aav.0x000000ff");
0x00013aa0 str r2, [r5, 4] | *((r5 + 4)) = r2;
0x00013aa2 strh.w r3, [r8, 0x6ee] | *((r8 + 0x6ee)) = r3;
0x00013aa6 strh.w r3, [r8, 0x6f0] | *((r8 + 0x6f0)) = r3;
0x00013aaa strd r3, r3, [r1] | __asm ("strd r3, r3, [r1]");
0x00013aae mov.w r3, 0x10000 | r3 = 0x10000;
0x00013ab2 str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
0x00013ab4 add.w r3, r8, 0x700 | r3 = r8 + 0x700;
0x00013ab8 str.w sb, [r1, 0xc] | __asm ("str.w sb, [r1, 0xc]");
0x00013abc str r0, [r3] | *(r3) = r0;
0x00013abe ldr.w r3, [r8, 0x2a8] | r3 = *((r8 + 0x2a8));
| if (r3 != 0) {
0x00013ac2 cbz r3, 0x13ac8 |
0x00013ac4 blx 0x5b30 | fcn_00005b30 ();
| }
0x00013ac8 ldr r3, [r7, 0x54] | r3 = *((r7 + 0x54));
| if (r3 != 0) {
0x00013aca cbz r3, 0x13ada |
0x00013acc mov r0, r5 | r0 = r5;
0x00013ace blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x00013ad0 str.w r0, [r6, 0x184] | __asm ("str.w r0, aav.0x000000ff");
0x00013ad4 cmp r0, 0 |
| if (r0 != 0) {
0x00013ad6 bne.w 0x13c56 | goto label_15;
| }
| }
0x00013ada mov r0, r5 | r0 = r5;
0x00013adc blx 0x61b8 | r0 = snprintf_chk ()
0x00013ae0 cmp r0, 0x1f |
0x00013ae2 mov r4, r0 | r4 = r0;
| if (r0 != 0x1f) {
0x00013ae4 bne 0x13af0 | goto label_25;
| }
0x00013ae6 b 0x13dc0 | goto label_26;
| do {
| label_11:
0x00013ae8 mov r0, r5 | r0 = r5;
0x00013aea blx 0x61b8 | r0 = snprintf_chk ()
0x00013aee mov r4, r0 | r4 = r0;
| label_25:
0x00013af0 cmp r4, 0x20 |
0x00013af2 bls 0x13ae8 |
| } while (r4 < 0x20);
0x00013af4 cmp r4, 0x2d |
| if (r4 == 0x2d) {
0x00013af6 beq.w 0x13c5c | goto label_27;
| }
0x00013afa movw r3, 0xfffc | r3 = 0xfffc;
0x00013afe ands r3, r4 | r3 &= r4;
0x00013b00 cmp r3, 0xc |
| if (r3 == 0xc) {
0x00013b02 beq.w 0x13d9c | goto label_28;
| }
| label_8:
0x00013b06 cmp r4, 0xef |
| if (r4 != 0xef) {
0x00013b08 bne 0x13b14 | goto label_12;
| }
0x00013b0a b 0x13e76 | goto label_29;
| do {
| label_13:
0x00013b0c mov r0, r5 | r0 = r5;
0x00013b0e blx 0x61b8 | r0 = snprintf_chk ()
0x00013b12 mov r4, r0 | r4 = r0;
| label_12:
0x00013b14 cmp r4, 0x20 |
0x00013b16 bls 0x13b0c |
| } while (r4 < 0x20);
0x00013b18 adds r1, r4, 1 | r1 = r4 + 1;
| if (r1 == r4) {
0x00013b1a beq.w 0x13ca6 | goto label_3;
| }
| do {
| label_4:
0x00013b1e ldr r3, [r5, 4] | r3 = *((r5 + 4));
| label_9:
0x00013b20 cmp r4, 0x3c |
0x00013b22 str.w r4, [r7, 0xb8] | __asm ("str.w r4, [r7, 0xb8]");
| if (r4 == 0x3c) {
0x00013b26 beq.w 0x13c8e | goto label_30;
| }
| label_0:
0x00013b2a ands r4, r3, 0x580 | r4 = r3 & 0x580;
| if (r4 != r3) {
0x00013b2e bne.w 0x13c8e | goto label_30;
| }
0x00013b32 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00013b34 bic r3, r3, 3 | r3 = BIT_MASK (r3, 3);
0x00013b38 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00013b3a mov r0, r5 | r0 = r5;
0x00013b3c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00013b3e str r2, [sp, 4] | var_4h = r2;
0x00013b40 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00013b42 cmp r0, 0 |
0x00013b44 it ne |
| if (r0 != 0) {
0x00013b46 cmpne r0, 0x3e8 | __asm ("cmpne r0, 0x3e8");
| }
0x00013b4a str.w r0, [r6, 0x184] | __asm ("str.w r0, aav.0x000000ff");
0x00013b4e itet lt |
| if (r0 >= 0) {
0x00013b50 movlt r1, 1 | r1 = 1;
| }
| if (r0 < 0) {
0x00013b52 movge r1, 0 | r1 = 0;
| }
| if (r0 < 0) {
0x00013b54 strhlt r4, [r6, 0x154] | __asm ("strhlt r4, aav.0x000000ff");
| }
| if (r0 >= 0) {
0x00013b58 blt 0x13c56 |
0x00013b5a cmp.w r0, 0x3e8 |
| if (r0 == 0x3e8) {
0x00013b5e beq 0x13c56 | goto label_15;
| }
0x00013b60 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00013b62 ldr r2, [sp, 4] | r2 = var_4h;
0x00013b64 bic r4, r3, 0x400 | r4 = BIT_MASK (r3, 0x400);
0x00013b68 and r3, r3, 3 | r3 &= 3;
0x00013b6c str r2, [r5, 8] | *((r5 + 8)) = r2;
0x00013b6e cmp r3, 3 |
0x00013b70 ldrd r2, r0, [r7, 0xb0] | __asm ("ldrd r2, r0, [r7, 0xb0]");
0x00013b74 str r4, [r5, 4] | *((r5 + 4)) = r4;
0x00013b76 ittt eq |
| if (r3 != 3) {
0x00013b78 streq r0, [sl, 0x538] | *((sl + 0x538)) = r0;
| }
| if (r3 != 3) {
0x00013b7c streq r2, [r7, 0xb4] | *((r7 + 0xb4)) = r2;
| }
| if (r3 == 3) {
0x00013b80 str.w r1, [sl, 0x534] | __asm ("str.w r1, aav.0x000000ff");
| }
| if (r3 == 3) {
0x00013b84 beq.w 0x13ed0 | goto label_31;
| }
0x00013b88 cmp r0, r2 |
| if (r0 < r2) {
0x00013b8a bls.w 0x13ed0 | goto label_31;
| }
| label_17:
0x00013b8e ldrsh.w r3, [r8, 0x6ee] | r3 = *((r8 + 0x6ee));
0x00013b92 cmp r3, 0 |
| if (r3 != 0) {
0x00013b94 beq 0x13c32 |
0x00013b96 cmp r3, 1 |
| if (r3 == 1) {
0x00013b98 beq.w 0x13ef2 | goto label_32;
| }
0x00013b9c ldrd r2, r3, [r7, 0xb0] | __asm ("ldrd r2, r3, [r7, 0xb0]");
0x00013ba0 cmp r2, r3 |
| if (r2 >= r3) {
0x00013ba2 bhs.w 0x13f16 | goto label_33;
| }
| label_19:
0x00013ba6 adds r3, r2, 1 | r3 = r2 + 1;
0x00013ba8 adds r0, r5, r2 | r0 = r5 + r2;
0x00013baa movw r1, 0x30d8 | r1 = 0x30d8;
0x00013bae str.w r3, [r7, 0xb0] | __asm ("str.w r3, [r7, 0xb0]");
0x00013bb2 ldrb r1, [r0, r1] | r1 = *((r0 + r1));
0x00013bb4 cmp r1, 0x1f |
| if (r1 == 0x1f) {
0x00013bb6 beq.w 0x13f38 | goto label_34;
| }
| label_20:
0x00013bba ldr r1, [pc, 0x3d8] |
0x00013bbc str.w r2, [r7, 0xb0] | __asm ("str.w r2, [r7, 0xb0]");
0x00013bc0 movs r2, 0x38 | r2 = 0x38;
0x00013bc2 ldr.w r0, [r8, 0x6dc] | r0 = *((r8 + 0x6dc));
0x00013bc6 add r1, pc | r1 = 0x27b60;
0x00013bc8 blx 0x64c8 | r0 = fcn_000064c8 ();
0x00013bcc cmp r0, 0 |
| if (r0 != 0) {
0x00013bce bne.w 0x13f06 | goto label_23;
| }
0x00013bd2 movs r3, 1 | r3 = 1;
0x00013bd4 strh.w r3, [r8, 0x6ee] | *((r8 + 0x6ee)) = r3;
| label_18:
0x00013bd8 ldr.w r1, [r8, 0x6e4] | r1 = *((r8 + 0x6e4));
| if (r1 != 0) {
0x00013bdc cbz r1, 0x13bf0 |
0x00013bde ldr.w r2, [r8, 0x6e8] | r2 = *((r8 + 0x6e8));
0x00013be2 ldr.w r0, [r8, 0x6dc] | r0 = *((r8 + 0x6dc));
0x00013be6 blx 0x61a0 | r0 = fcn_000061a0 ();
0x00013bea cmp r0, 0 |
| if (r0 != 0) {
0x00013bec bne.w 0x13f06 | goto label_23;
| }
| }
0x00013bf0 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00013bf2 movs r2, 2 | r2 = 2;
0x00013bf4 ldr.w r0, [r8, 0x6f4] | r0 = *((r8 + 0x6f4));
0x00013bf8 strh.w r2, [r8, 0x6ec] | *((r8 + 0x6ec)) = r2;
0x00013bfc orr r3, r3, 0x400 | r3 |= 0x400;
0x00013c00 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00013c02 cmp r0, 0 |
| if (r0 == 0) {
0x00013c04 beq.w 0x13f86 | goto label_35;
| }
| label_24:
0x00013c08 mov.w r2, 0x10000 | r2 = 0x10000;
0x00013c0c mov r1, sb | r1 = sb;
0x00013c0e blx 0x6064 | fcn_00006064 ();
0x00013c12 ldr.w r3, [r7, 0xb0] | r3 = *((r7 + 0xb0));
0x00013c16 ldr.w r2, [r8, 0x6f4] | r2 = *((r8 + 0x6f4));
0x00013c1a ldr.w r1, [r7, 0xb4] | r1 = *((r7 + 0xb4));
0x00013c1e ldr.w r0, [r8, 0x6dc] | r0 = *((r8 + 0x6dc));
0x00013c22 add r2, r3 | r2 += r3;
0x00013c24 str r2, [r0] | *(r0) = r2;
0x00013c26 subs r2, r1, r3 | r2 = r1 - r3;
0x00013c28 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00013c2a str.w r1, [r8, 0x6f8] | __asm ("str.w r1, aav.0x000000ff");
0x00013c2e str.w r3, [r7, 0xb4] | __asm ("str.w r3, [r7, 0xb4]");
| }
0x00013c32 ldr r4, [r7, 0x5c] | r4 = *((r7 + 0x5c));
| if (r4 == 0) {
0x00013c34 cbz r4, 0x13c82 | goto label_36;
| }
0x00013c36 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00013c38 and r3, r3, 3 | r3 &= 3;
0x00013c3c cmp r3, 3 |
| if (r3 == 3) {
0x00013c3e beq 0x13c82 | goto label_36;
| }
0x00013c40 ldrd r1, r2, [r7, 0xb0] | __asm ("ldrd r1, r2, [r7, 0xb0]");
0x00013c44 cmp r2, r1 |
| if (r2 < r1) {
0x00013c46 bls 0x13c82 | goto label_36;
| }
0x00013c48 subs r2, r2, r1 | r2 -= r1;
0x00013c4a mov r0, r5 | r0 = r5;
0x00013c4c add r1, sb | r1 += sb;
0x00013c4e blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
| if (r0 == 0) {
0x00013c50 cbz r0, 0x13c82 | goto label_36;
| }
| label_16:
0x00013c52 str.w r0, [r6, 0x184] | __asm ("str.w r0, aav.0x000000ff");
| }
| label_15:
0x00013c56 add sp, 0xc |
0x00013c58 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x00013c5c ldrd r3, r2, [r7, 0xb0] | __asm ("ldrd r3, r2, [r7, 0xb0]");
0x00013c60 cmp r3, r2 |
| if (r3 >= r2) {
0x00013c62 bhs.w 0x13d7a | goto label_37;
| }
| label_5:
0x00013c66 add r3, r5 | r3 += r5;
0x00013c68 movw r2, 0x30d8 | r2 = 0x30d8;
0x00013c6c ldrb r2, [r3, r2] | r2 = *((r3 + r2));
0x00013c6e cmp r2, 0x2d |
0x00013c70 bne.w 0x13b1e |
| } while (r2 != 0x2d);
0x00013c74 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00013c76 orr r3, r3, 0x100 | r3 |= 0x100;
0x00013c7a str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00013c7c str.w r2, [r7, 0xb8] | __asm ("str.w r2, [r7, 0xb8]");
0x00013c80 b 0x13b2a | goto label_0;
| label_36:
0x00013c82 ldr.w r0, [r6, 0x184] | r0 = *((r6 + 0x184));
0x00013c86 cmp r0, 0 |
| if (r0 != 0) {
0x00013c88 bne.w 0x13ea6 | goto label_38;
| }
0x00013c8c ldr r3, [r5, 4] | r3 = *((r5 + 4));
| label_30:
0x00013c8e lsls r2, r3, 0x17 | r2 = r3 << 0x17;
| if (r2 >= r3) {
0x00013c90 bpl 0x13cb8 | goto label_39;
| }
0x00013c92 movw r4, 0x30d8 | r4 = 0x30d8;
0x00013c96 b 0x13c9c |
| while (r3 != r0) {
0x00013c98 cmp r0, 0x2d |
| if (r0 == 0x2d) {
0x00013c9a beq 0x13cc8 | goto label_40;
| }
| label_6:
0x00013c9c mov r0, r5 | r0 = r5;
0x00013c9e blx 0x61b8 | r0 = snprintf_chk ()
0x00013ca2 adds r3, r0, 1 | r3 = r0 + 1;
0x00013ca4 bne 0x13c98 |
| }
| label_3:
0x00013ca6 mov.w r3, -1 | r3 = -1;
0x00013caa mov r0, r3 | r0 = r3;
0x00013cac str.w r3, [r6, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x00013cb0 add sp, 0xc |
0x00013cb2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x00013cb6 ldr r3, [r5, 4] | r3 = *((r5 + 4));
| label_39:
0x00013cb8 and r3, r3, 0x80 | r3 &= 0x80;
0x00013cbc cmp r3, 0 |
| if (r3 != 0) {
0x00013cbe bne 0x13d2e | goto label_41;
| }
| label_2:
0x00013cc0 movs r0, 0 | r0 = 0;
0x00013cc2 add sp, 0xc |
0x00013cc4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_40:
0x00013cc8 ldrd r3, r2, [r7, 0xb0] | __asm ("ldrd r3, r2, [r7, 0xb0]");
0x00013ccc cmp r3, r2 |
| if (r3 >= r2) {
0x00013cce bhs 0x13d8c | goto label_42;
| }
| label_7:
0x00013cd0 add r3, r5 | r3 += r5;
0x00013cd2 ldrb r3, [r3, r4] | r3 = *((r3 + r4));
0x00013cd4 cmp r3, 0x2d |
0x00013cd6 lsls r1, r4, 3 | r1 = r4 << 3;
0x00013cd8 mov r0, r5 | r0 = r5;
0x00013cda str.w r3, [r7, 0xb8] | __asm ("str.w r3, [r7, 0xb8]");
0x00013cde blx 0xfff37a74 | r0 = void (*0xfff37a74)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00013ce2 cmp r0, 0 |
| if (r0 != 0) {
0x00013ce4 bne.w 0x13f10 | goto label_43;
| }
0x00013ce8 ldr.w r3, [r6, 0x1c8] | r3 = *((r6 + 0x1c8));
| if (r3 != 0) {
0x00013cec cbnz r3, 0x13d06 | goto label_44;
| }
0x00013cee b 0x13d12 | goto label_45;
| do {
0x00013cf0 ldr.w r1, [r6, 0x1c8] | r1 = *((r6 + 0x1c8));
0x00013cf4 blx 0x67f4 | r0 = fcn_000067f4 ();
0x00013cf8 mov r3, r0 | r3 = r0;
0x00013cfa movs r1, 0 | r1 = 0;
0x00013cfc mov r0, r5 | r0 = r5;
| if (r3 == 0) {
0x00013cfe cbz r3, 0x13d12 | goto label_45;
| }
0x00013d00 blx 0x60c8 | r0 = loc_imp_soap_putelement ();
| if (r0 == 0) {
0x00013d04 cbz r0, 0x13d12 | goto label_45;
| }
| label_44:
0x00013d06 ldr.w r3, [r6, 0x1d4] | r3 = *((r6 + 0x1d4));
0x00013d0a mov r0, r5 | r0 = r5;
0x00013d0c ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00013d0e cmp r2, 0 |
0x00013d10 bne 0x13cf0 |
| } while (r2 != 0);
| label_45:
0x00013d12 ldr.w r3, [r6, 0x1d0] | r3 = *((r6 + 0x1d0));
0x00013d16 mov r0, r5 | r0 = r5;
0x00013d18 ldr r2, [pc, 0x27c] |
0x00013d1a ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x00013d1c add r2, pc | r2 = 0x27cb8;
0x00013d1e blx 0x6634 | r0 = fcn_00006634 ();
0x00013d22 cmp r0, 0 |
| if (r0 == 0) {
0x00013d24 beq 0x13cb6 | goto label_1;
| }
0x00013d26 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00013d28 orr r3, r3, 0x80 | r3 |= 0x80;
0x00013d2c str r3, [r5, 4] | *((r5 + 4)) = r3;
| label_41:
0x00013d2e mov r0, r5 | r0 = r5;
0x00013d30 blx 0x6220 | r0 = fcn_00006220 ();
0x00013d34 cmp r0, 0 |
| if (r0 != 0) {
0x00013d36 bne.w 0x13f10 | goto label_43;
| }
0x00013d3a ldrb.w r0, [r6, 0x1a4] | r0 = *((r6 + 0x1a4));
0x00013d3e ldrd r3, r1, [r7, 0xb0] | __asm ("ldrd r3, r1, [r7, 0xb0]");
0x00013d42 lsls r0, r0, 0x1f | r0 <<= 0x1f;
0x00013d44 sub.w r2, r1, r3 | r2 = r1 - r3;
| if (r0 < r0) {
0x00013d48 bpl 0x13d6a |
0x00013d4a ldr.w r0, [r6, 0x198] | r0 = *((r6 + 0x198));
0x00013d4e cmp r0, r2 |
0x00013d50 add r3, r0 | r3 += r0;
0x00013d52 ite ls |
| if (r0 > r2) {
0x00013d54 movls r2, r0 | r2 = r0;
| }
| if (r0 <= r2) {
0x00013d56 subhi r3, r3, r1 | r3 -= r1;
| }
0x00013d58 str.w r0, [r6, 0x19c] | __asm ("str.w r0, aav.0x000000ff");
0x00013d5c itet ls |
| if (r0 > r2) {
0x00013d5e strls r1, [r6, 0x1a0] | *((r6 + 0x1a0)) = r1;
| }
| if (r0 > r2) {
0x00013d62 strls r3, [r6, 0x19c] | *((r6 + 0x19c)) = r3;
| }
| if (r0 > r2) {
0x00013d66 str.w r3, [r7, 0xb4] | __asm ("str.w r3, [r7, 0xb4]");
| goto label_46;
| }
| }
| label_46:
0x00013d6a ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x00013d6c str.w r2, [r7, 0xc4] | __asm ("str.w r2, [r7, 0xc4]");
0x00013d70 cmp r3, 0 |
0x00013d72 it ne |
| if (r3 == 0) {
0x00013d74 cmpne r3, r2 | __asm ("cmpne r3, r2");
| goto label_47;
| }
| if (r3 >= 0) {
| label_47:
0x00013d76 bhs 0x13cc0 | goto label_2;
| }
0x00013d78 b 0x13ca6 | goto label_3;
| label_37:
0x00013d7a mov r0, r5 | r0 = r5;
0x00013d7c blx 0x5ebc | r0 = fcn_00005ebc ();
0x00013d80 cmp r0, 0 |
| if (r0 != 0) {
0x00013d82 bne.w 0x13b1e | goto label_4;
| }
0x00013d86 ldr.w r3, [r7, 0xb0] | r3 = *((r7 + 0xb0));
0x00013d8a b 0x13c66 | goto label_5;
| label_42:
0x00013d8c mov r0, r5 | r0 = r5;
0x00013d8e blx 0x5ebc | r0 = fcn_00005ebc ();
0x00013d92 cmp r0, 0 |
| if (r0 != 0) {
0x00013d94 bne 0x13c9c | goto label_6;
| }
0x00013d96 ldr.w r3, [r7, 0xb0] | r3 = *((r7 + 0xb0));
0x00013d9a b 0x13cd0 | goto label_7;
| label_28:
0x00013d9c ldrd r3, r2, [r7, 0xb0] | __asm ("ldrd r3, r2, [r7, 0xb0]");
0x00013da0 cmp r3, r2 |
| if (r3 >= r2) {
0x00013da2 bhs 0x13e94 | goto label_48;
| }
| label_14:
0x00013da4 add r3, r5 | r3 += r5;
0x00013da6 movw r2, 0x30d8 | r2 = 0x30d8;
0x00013daa ldrb r3, [r3, r2] | r3 = *((r3 + r2));
0x00013dac and r3, r3, 0xf0 | r3 &= 0xf0;
0x00013db0 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x00013db2 bne.w 0x13b06 | goto label_8;
| }
0x00013db6 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00013db8 orr r3, r3, 0x80 | r3 |= 0x80;
0x00013dbc str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00013dbe b 0x13b20 | goto label_9;
| label_26:
0x00013dc0 ldr.w r3, [r7, 0xb0] | r3 = *((r7 + 0xb0));
0x00013dc4 movs r4, 9 | r4 = 9;
0x00013dc6 b 0x13dd4 |
| while (r2 > r3) {
0x00013dc8 subs r4, 1 | r4--;
0x00013dca add.w r3, r3, 1 | r3++;
0x00013dce str.w r3, [r7, 0xb0] | __asm ("str.w r3, [r7, 0xb0]");
| if (r4 == 1) {
0x00013dd2 beq 0x13df8 | goto label_49;
| }
| label_10:
0x00013dd4 ldr.w r2, [r7, 0xb4] | r2 = *((r7 + 0xb4));
0x00013dd8 cmp r2, r3 |
0x00013dda bhi 0x13dc8 |
| }
0x00013ddc mov r0, r5 | r0 = r5;
0x00013dde blx 0x5ebc | r0 = fcn_00005ebc ();
0x00013de2 cmp r0, 0 |
| if (r0 != 0) {
0x00013de4 bne.w 0x13ca6 | goto label_3;
| }
0x00013de8 ldr.w r3, [r7, 0xb0] | r3 = *((r7 + 0xb0));
0x00013dec subs r4, 1 | r4--;
0x00013dee add.w r3, r3, 1 | r3++;
0x00013df2 str.w r3, [r7, 0xb0] | __asm ("str.w r3, [r7, 0xb0]");
| if (r4 != 1) {
0x00013df6 bne 0x13dd4 | goto label_10;
| }
| label_49:
0x00013df8 ldr r2, [pc, 0x1a0] |
0x00013dfa movs r3, 0x38 | r3 = 0x38;
0x00013dfc ldr.w r0, [r8, 0x6dc] | r0 = *((r8 + 0x6dc));
0x00013e00 mvn r1, 0xe | r1 = ~0xe;
0x00013e04 add r2, pc | r2 = 0x27da4;
0x00013e06 blx 0x5db0 | r0 = fcn_00005db0 ();
0x00013e0a cmp r0, 0 |
| if (r0 != 0) {
0x00013e0c bne 0x13f06 | goto label_23;
| }
0x00013e0e ldr.w r1, [r8, 0x6e4] | r1 = *((r8 + 0x6e4));
| if (r1 != 0) {
0x00013e12 cbz r1, 0x13e24 |
0x00013e14 ldr.w r2, [r8, 0x6e8] | r2 = *((r8 + 0x6e8));
0x00013e18 ldr.w r0, [r8, 0x6dc] | r0 = *((r8 + 0x6dc));
0x00013e1c blx 0x61a0 | r0 = fcn_000061a0 ();
0x00013e20 cmp r0, 0 |
| if (r0 != 0) {
0x00013e22 bne 0x13f06 | goto label_23;
| }
| }
0x00013e24 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00013e26 movs r2, 0 | r2 = 0;
0x00013e28 mov r1, r2 | r1 = r2;
0x00013e2a mov r0, r2 | r0 = r2;
0x00013e2c orr r3, r3, 0x400 | r3 |= 0x400;
0x00013e30 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00013e32 mov.w r3, 0x20002 | r3 = 0x20002;
0x00013e36 str.w r3, [r8, 0x6ec] | __asm ("str.w r3, aav.0x000000ff");
0x00013e3a blx 0x5ed4 | fcn_00005ed4 ();
0x00013e3e str.w r0, [r8, 0x6e0] | __asm ("str.w r0, aav.0x000000ff");
0x00013e42 ldr.w r0, [r8, 0x6f4] | r0 = *((r8 + 0x6f4));
0x00013e46 cmp r0, 0 |
| if (r0 == 0) {
0x00013e48 beq 0x13f2a | goto label_50;
| }
| label_21:
0x00013e4a mov.w r2, 0x10000 | r2 = 0x10000;
0x00013e4e mov r1, sb | r1 = sb;
0x00013e50 blx 0x6064 | fcn_00006064 ();
0x00013e54 ldr.w r3, [r7, 0xb0] | r3 = *((r7 + 0xb0));
0x00013e58 ldr.w r2, [r8, 0x6f4] | r2 = *((r8 + 0x6f4));
0x00013e5c ldr.w r1, [r7, 0xb4] | r1 = *((r7 + 0xb4));
0x00013e60 ldr.w r0, [r8, 0x6dc] | r0 = *((r8 + 0x6dc));
0x00013e64 add r2, r3 | r2 += r3;
0x00013e66 str r2, [r0] | *(r0) = r2;
0x00013e68 subs r2, r1, r3 | r2 = r1 - r3;
0x00013e6a str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00013e6c str.w r1, [r8, 0x6f8] | __asm ("str.w r1, aav.0x000000ff");
0x00013e70 str.w r3, [r7, 0xb4] | __asm ("str.w r3, [r7, 0xb4]");
0x00013e74 b 0x13ae8 | goto label_11;
| label_29:
0x00013e76 mov r0, r5 | r0 = r5;
0x00013e78 blx 0x61b8 | r0 = snprintf_chk ()
0x00013e7c cmp r0, 0xbb |
0x00013e7e mov r4, r0 | r4 = r0;
| if (r0 != 0xbb) {
0x00013e80 bne.w 0x13b14 | goto label_12;
| }
0x00013e84 mov r0, r5 | r0 = r5;
0x00013e86 blx 0x61b8 | r0 = snprintf_chk ()
0x00013e8a cmp r0, 0xbf |
0x00013e8c mov r4, r0 | r4 = r0;
| if (r0 != 0xbf) {
0x00013e8e bne.w 0x13b14 | goto label_12;
| }
0x00013e92 b 0x13b0c | goto label_13;
| label_48:
0x00013e94 mov r0, r5 | r0 = r5;
0x00013e96 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00013e9a cmp r0, 0 |
| if (r0 != 0) {
0x00013e9c bne.w 0x13b06 | goto label_8;
| }
0x00013ea0 ldr.w r3, [r7, 0xb0] | r3 = *((r7 + 0xb0));
0x00013ea4 b 0x13da4 | goto label_14;
| label_38:
0x00013ea6 movw r3, 0x3e9 | r3 = 0x3e9;
0x00013eaa cmp r0, r3 |
| if (r0 != r3) {
0x00013eac bne.w 0x13c56 | goto label_15;
| }
0x00013eb0 ldr.w r3, [fp, 0xff8] | r3 = *(arg_ff8h);
0x00013eb4 cmp r3, 0 |
| if (r3 == 0) {
0x00013eb6 beq.w 0x13c56 | goto label_15;
| }
0x00013eba mov r0, r5 | r0 = r5;
0x00013ebc blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
0x00013ebe cmp r0, 0 |
| if (r0 != 0) {
0x00013ec0 bne.w 0x13c52 | goto label_16;
| }
0x00013ec4 mov.w r3, 0x3e8 | r3 = 0x3e8;
0x00013ec8 mov r0, r3 | r0 = r3;
0x00013eca str.w r3, [r6, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x00013ece b 0x13c56 | goto label_15;
| label_31:
0x00013ed0 mov r0, r5 | r0 = r5;
0x00013ed2 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00013ed6 cmp r0, 0 |
| if (r0 == 0) {
0x00013ed8 beq.w 0x13b8e | goto label_17;
| }
0x00013edc ldr.w r0, [r6, 0x180] | r0 = *((r6 + 0x180));
0x00013ee0 cmp r0, 0xc8 |
0x00013ee2 ittt eq |
| if (r0 != 0xc8) {
0x00013ee4 moveq r3, 0xe | r3 = 0xe;
| }
| if (r0 != 0xc8) {
0x00013ee6 moveq r0, r3 | r0 = r3;
| }
| if (r0 == 0xc8) {
0x00013ee8 streq r3, [r6, 0x184] | *((r6 + 0x184)) = r3;
| goto label_51;
| }
| if (r0 != 0xc8) {
| label_51:
0x00013eec bne.w 0x13c52 | goto label_16;
| }
0x00013ef0 b 0x13c56 | goto label_15;
| label_32:
0x00013ef2 ldr r1, [pc, 0xac] |
0x00013ef4 movs r2, 0x38 | r2 = 0x38;
0x00013ef6 ldr.w r0, [r8, 0x6dc] | r0 = *((r8 + 0x6dc));
0x00013efa add r1, pc | r1 = 0x27ea0;
0x00013efc blx 0x64c8 | r0 = fcn_000064c8 ();
0x00013f00 cmp r0, 0 |
| if (r0 == 0) {
0x00013f02 beq.w 0x13bd8 | goto label_18;
| }
| label_23:
0x00013f06 movs r3, 0x1f | r3 = 0x1f;
0x00013f08 mov r0, r3 | r0 = r3;
0x00013f0a str.w r3, [r6, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x00013f0e b 0x13c56 | goto label_15;
| label_43:
0x00013f10 ldr.w r0, [r6, 0x184] | r0 = *((r6 + 0x184));
0x00013f14 b 0x13c56 | goto label_15;
| label_33:
0x00013f16 mov r0, r5 | r0 = r5;
0x00013f18 blx 0x5ebc | fcn_00005ebc ();
0x00013f1c ldr.w r2, [r7, 0xb0] | r2 = *((r7 + 0xb0));
0x00013f20 cmp r0, 0 |
| if (r0 == 0) {
0x00013f22 beq.w 0x13ba6 | goto label_19;
| }
0x00013f26 subs r2, 1 | r2--;
0x00013f28 b 0x13bba | goto label_20;
| label_50:
0x00013f2a mov.w r0, 0x10000 | r0 = 0x10000;
0x00013f2e blx 0x63b0 | gmtime_r ();
0x00013f32 str.w r0, [r8, 0x6f4] | __asm ("str.w r0, aav.0x000000ff");
0x00013f36 b 0x13e4a | goto label_21;
| label_34:
0x00013f38 movs r4, 9 | r4 = 9;
0x00013f3a b 0x13f48 |
| while (r2 > r3) {
| label_22:
0x00013f3c subs r4, 1 | r4--;
0x00013f3e add.w r3, r3, 1 | r3++;
0x00013f42 str.w r3, [r7, 0xb0] | __asm ("str.w r3, [r7, 0xb0]");
| if (r4 == 1) {
0x00013f46 beq 0x13f62 | goto label_52;
| }
0x00013f48 ldr.w r2, [r7, 0xb4] | r2 = *((r7 + 0xb4));
0x00013f4c cmp r2, r3 |
0x00013f4e bhi 0x13f3c |
| }
0x00013f50 mov r0, r5 | r0 = r5;
0x00013f52 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00013f56 cmp r0, 0 |
| if (r0 != 0) {
0x00013f58 bne.w 0x13ca6 | goto label_3;
| }
0x00013f5c ldr.w r3, [r7, 0xb0] | r3 = *((r7 + 0xb0));
0x00013f60 b 0x13f3c | goto label_22;
| label_52:
0x00013f62 ldr r2, [pc, 0x40] |
0x00013f64 movs r3, 0x38 | r3 = 0x38;
0x00013f66 ldr.w r0, [r8, 0x6dc] | r0 = *((r8 + 0x6dc));
0x00013f6a mvn r1, 0xe | r1 = ~0xe;
0x00013f6e add r2, pc | r2 = 0x27f18;
0x00013f70 blx 0x5db0 | r0 = fcn_00005db0 ();
0x00013f74 cmp r0, 0 |
| if (r0 != 0) {
0x00013f76 bne 0x13f06 | goto label_23;
| }
0x00013f78 mov r2, r4 | r2 = r4;
0x00013f7a mov r1, r4 | r1 = r4;
0x00013f7c blx 0x5ed4 | fcn_00005ed4 ();
0x00013f80 str.w r0, [r8, 0x6e0] | __asm ("str.w r0, aav.0x000000ff");
0x00013f84 b 0x13bd8 | goto label_18;
| label_35:
0x00013f86 mov.w r0, 0x10000 | r0 = 0x10000;
0x00013f8a blx 0x63b0 | gmtime_r ();
0x00013f8e str.w r0, [r8, 0x6f4] | __asm ("str.w r0, aav.0x000000ff");
0x00013f92 b 0x13c08 | goto label_24;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x78a8 */
| #include <stdint.h>
|
; (fcn) sym.soap_getchar () | void soap_getchar (int16_t arg1, uint32_t arg3) {
| r0 = arg1;
| r2 = arg3;
0x000078a8 push {r3, r4, r5, lr} |
0x000078aa add.w r5, r0, 0x3000 | r5 = r0 + 0x3000;
0x000078ae ldr.w r3, [r5, 0xb8] | r3 = *((r5 + 0xb8));
| if (r3 != 0) {
0x000078b2 cbnz r3, 0x78dc | goto label_1;
| }
0x000078b4 ldrd r3, r2, [r5, 0xb0] | __asm ("ldrd r3, r2, [r5, 0xb0]");
0x000078b8 mov r4, r0 | r4 = r0;
0x000078ba cmp r3, r2 |
0x000078bc bhs 0x78d0 |
| while (1) {
0x000078be adds r2, r3, 1 | r2 = r3 + 1;
0x000078c0 add r4, r3 | r4 += r3;
0x000078c2 movw r3, 0x30d8 | r3 = 0x30d8;
0x000078c6 str.w r2, [r5, 0xb0] | __asm ("str.w r2, [r5, 0xb0]");
0x000078ca ldrb r3, [r4, r3] | r3 = *((r4 + r3));
| label_0:
0x000078cc mov r0, r3 | r0 = r3;
0x000078ce pop {r3, r4, r5, pc} |
0x000078d0 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 != 0) {
0x000078d4 cbnz r0, 0x78ea | goto label_2;
| }
0x000078d6 ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x000078da b 0x78be |
| }
| label_1:
0x000078dc adds r2, r3, 1 | r2 = r3 + 1;
| if (r2 == r3) {
0x000078de beq 0x78cc | goto label_0;
| }
0x000078e0 movs r2, 0 | r2 = 0;
0x000078e2 mov r0, r3 | r0 = r3;
0x000078e4 str.w r2, [r5, 0xb8] | __asm ("str.w r2, [r5, 0xb8]");
0x000078e8 pop {r3, r4, r5, pc} |
| label_2:
0x000078ea mov.w r3, -1 | r3 = -1;
0x000078ee b 0x78cc | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x83c8 */
| #include <stdint.h>
|
; (fcn) sym.soap_getoffsets () | void soap_getoffsets (uint32_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000083c8 cmp r0, 0 |
0x000083ca it ne |
| if (r0 != 0) {
0x000083cc cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x000083ce push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000083d2 mov ip, r0 |
0x000083d4 mov r8, r3 | r8 = r3;
0x000083d6 ite gt |
| if (r0 <= 0) {
0x000083d8 movgt r4, 1 | r4 = 1;
| }
| if (r0 > 0) {
0x000083da movle r4, 0 | r4 = 0;
| }
| if (r2 == 0) {
0x000083dc cbz r2, 0x842e | goto label_2;
| }
0x000083de cmp r4, 0 |
| if (r4 == 0) {
0x000083e0 beq 0x8474 | goto label_3;
| }
0x000083e2 mov.w sl, 0 | sl = 0;
0x000083e6 subs r5, r1, 4 | r5 = r1 - 4;
0x000083e8 subs r7, r2, 4 | r7 = r2 - 4;
0x000083ea mov r6, sl | r6 = sl;
0x000083ec b 0x8414 |
| while (r3 != 0) {
0x000083ee ldr r3, [r5, 4]! | r3 = *((r5 += 4));
0x000083f2 mul sl, r3, sl | sl = r3 * sl;
0x000083f6 blx 0x6138 | r0 = fcn_00006138 ();
0x000083fa mov r4, r0 | r4 = r0;
0x000083fc movs r1, 0x2c | r1 = 0x2c;
0x000083fe mov r0, sb | r0 = sb;
0x00008400 str r4, [r7, 4]! | *((r7 += 4)) = r4;
0x00008404 blx 0x5b9c | r0 = fcn_00005b9c ();
0x00008408 cmp r0, 0 |
0x0000840a it ne |
| if (r0 != 0) {
0x0000840c cmpne r8, r6 | __asm ("cmpne r8, r6");
| }
0x0000840e add sl, r4 | sl += r4;
0x00008410 mov ip, r0 |
| if (r0 <= 0) {
0x00008412 ble 0x8428 | goto label_1;
| }
0x00008414 ldrb.w r3, [ip] | r3 = *(ip);
0x00008418 add.w sb, ip, 1 | sb = ip + 1;
0x0000841c movs r2, 0xa | r2 = 0xa;
0x0000841e movs r1, 0 | r1 = 0;
0x00008420 mov r0, sb | r0 = sb;
0x00008422 adds r6, 1 | r6++;
0x00008424 cmp r3, 0 |
0x00008426 bne 0x83ee |
| }
| do {
| label_1:
0x00008428 mov r0, sl | r0 = sl;
0x0000842a pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| if (r4 == 0) {
| label_2:
0x0000842e cbz r4, 0x8474 | goto label_3;
| }
0x00008430 mov sl, r2 | sl = r2;
0x00008432 subs r5, r1, 4 | r5 = r1 - 4;
0x00008434 mov r7, r2 | r7 = r2;
0x00008436 b 0x845a | goto label_4;
| label_0:
0x00008438 ldr r6, [r5, 4]! | r6 = *((r5 += 4));
0x0000843c blx 0x6138 | fcn_00006138 ();
0x00008440 movs r1, 0x2c | r1 = 0x2c;
0x00008442 mul r6, r6, sl | r6 *= sl;
0x00008446 mov sl, r0 | sl = r0;
0x00008448 mov r0, sb | r0 = sb;
0x0000844a blx 0x5b9c | r0 = fcn_00005b9c ();
0x0000844e cmp r0, 0 |
0x00008450 it ne |
| if (r0 != 0) {
0x00008452 cmpne r8, r7 | __asm ("cmpne r8, r7");
| }
0x00008454 add sl, r6 | sl += r6;
0x00008456 mov ip, r0 |
0x00008458 ble 0x8428 |
| } while (r0 <= 0);
| label_4:
0x0000845a ldrb.w r3, [ip] | r3 = *(ip);
0x0000845e add.w sb, ip, 1 | sb = ip + 1;
0x00008462 movs r2, 0xa | r2 = 0xa;
0x00008464 movs r1, 0 | r1 = 0;
0x00008466 mov r0, sb | r0 = sb;
0x00008468 adds r7, 1 | r7++;
0x0000846a cmp r3, 0 |
| if (r3 != 0) {
0x0000846c bne 0x8438 | goto label_0;
| }
0x0000846e mov r0, sl | r0 = sl;
0x00008470 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x00008474 mov sl, r4 | sl = r4;
0x00008476 b 0x8428 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x8478 */
| #include <stdint.h>
|
; (fcn) sym.soap_getsize () | void soap_getsize (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00008478 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000847c mov r4, r0 | r4 = r0;
0x0000847e ldr r0, [pc, 0xdc] |
0x00008480 mov r8, r2 | r8 = r2;
0x00008482 movs r3, 0 | r3 = 0;
0x00008484 sub sp, 0xc |
0x00008486 ldr r2, [pc, 0xd8] | r2 = *(0x8562);
0x00008488 add r0, pc | r0 = 0x109ea;
0x0000848a ldr r2, [r0, r2] |
0x0000848c ldr r2, [r2] | r2 = *(0x109ea);
0x0000848e str r2, [sp, 4] | var_4h = r2;
0x00008490 mov.w r2, 0 | r2 = 0;
0x00008494 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x00008498 ldrb r3, [r4] | r3 = *(r4);
0x0000849a cmp r3, 0 |
| if (r3 == 0) {
0x0000849c beq 0x8538 | goto label_2;
| }
0x0000849e cmp r3, 0x5b |
0x000084a0 movw sb, 0x4240 |
0x000084a4 mov r6, r1 | r6 = r1;
0x000084a6 it eq |
| if (r3 != 0x5b) {
0x000084a8 addeq r4, 1 | r4++;
| }
0x000084aa movs r5, 1 | r5 = 1;
0x000084ac mov r7, sp | r7 = sp;
0x000084ae movt sb, 0xf | sb = 0xf4240;
0x000084b2 b 0x84bc |
| if (r6 != 0) {
| while (r0 != 0) {
0x000084b4 cbz r6, 0x84ba |
0x000084b6 ldrb r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x000084b8 cbnz r3, 0x850c | goto label_3;
| }
| }
| label_0:
0x000084ba adds r4, 1 | r4++;
0x000084bc movs r2, 0xa | r2 = 0xa;
0x000084be mov r1, r7 | r1 = r7;
0x000084c0 mov r0, r4 | r0 = r4;
0x000084c2 blx 0x6138 | r0 = fcn_00006138 ();
0x000084c6 mul r5, r0, r5 | r5 = r0 * r5;
0x000084ca mov sl, r0 | sl = r0;
0x000084cc cmp r5, sb |
0x000084ce ite le |
| if (r5 > sb) {
0x000084d0 movle r3, 0 | r3 = 0;
| }
| if (r5 <= sb) {
0x000084d2 movgt r3, 1 | r3 = 1;
| }
0x000084d4 orrs.w r3, r3, r0, lsr 31 | r3 |= (r0 >> 31);
| if (r3 != r3) {
0x000084d8 bne 0x8538 | goto label_2;
| }
0x000084da ldr.w fp, [sp] | fp = *(sp);
0x000084de cmp fp, r4 |
| if (fp == r4) {
0x000084e0 beq 0x8538 | goto label_2;
| }
0x000084e2 movs r1, 0x2c | r1 = 0x2c;
0x000084e4 mov r0, fp | r0 = fp;
0x000084e6 blx 0x5b9c | r0 = fcn_00005b9c ();
0x000084ea mov r4, r0 | r4 = r0;
0x000084ec cmp r0, 0 |
0x000084ee bne 0x84b4 |
| }
0x000084f0 movs r1, 0x20 | r1 = 0x20;
0x000084f2 mov r0, fp | r0 = fp;
0x000084f4 blx 0x5b9c | r0 = fcn_00005b9c ();
0x000084f8 mov r4, r0 | r4 = r0;
| if (r6 != 0) {
0x000084fa cbz r6, 0x8500 |
0x000084fc ldrb r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x000084fe cbnz r3, 0x850c | goto label_3;
| }
| }
0x00008500 cmp r4, 0 |
| if (r4 != 0) {
0x00008502 bne 0x84ba | goto label_0;
| }
| label_1:
0x00008504 ldr.w r0, [r8] | r0 = *(r8);
0x00008508 subs r0, r5, r0 | r0 = r5 - r0;
0x0000850a b 0x853c | goto label_4;
| label_3:
0x0000850c ldr.w r3, [r8] | r3 = *(r8);
0x00008510 movs r2, 0xa | r2 = 0xa;
0x00008512 mov r1, r7 | r1 = r7;
0x00008514 adds r0, r6, 1 | r0 = r6 + 1;
0x00008516 mul r3, sl, r3 | r3 = sl * r3;
0x0000851a str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0000851e blx 0x6138 | fcn_00006138 ();
0x00008522 ldr.w r3, [r8] | r3 = *(r8);
0x00008526 cmp r0, 0 |
0x00008528 add r3, r0 | r3 += r0;
0x0000852a str.w r3, [r8] | __asm ("str.w r3, [r8]");
| if (r0 < 0) {
0x0000852e blt 0x8538 | goto label_2;
| }
0x00008530 ldr r6, [sp] | r6 = *(sp);
0x00008532 cmp r4, 0 |
| if (r4 != 0) {
0x00008534 bne 0x84ba | goto label_0;
| }
0x00008536 b 0x8504 | goto label_1;
| label_2:
0x00008538 mov.w r0, -1 | r0 = -1;
| label_4:
0x0000853c ldr r2, [pc, 0x24] |
0x0000853e ldr r3, [pc, 0x20] | r3 = *(0x8562);
0x00008540 add r2, pc | r2 = 0x10aa8;
0x00008542 ldr r3, [r2, r3] | r3 = *(0x10aa8);
0x00008544 ldr r2, [r3] | r2 = *(0x10aa8);
0x00008546 ldr r3, [sp, 4] | r3 = var_4h;
0x00008548 eors r2, r3 | r2 ^= r3;
0x0000854a mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0000854e bne 0x8556 |
0x00008550 add sp, 0xc |
0x00008552 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00008556 blx 0x63ec | SSL_get_verify_result ();
0x0000855a nop |
0x0000855c mov r4, ip | r4 = ip;
0x0000855e movs r2, r0 | r2 = r0;
0x00008560 lsls r0, r0, 0x14 | r0 <<= 0x14;
0x00008562 movs r0, r0 |
0x00008564 cmp ip, r5 |
0x00008566 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x8568 */
| #include <stdint.h>
|
; (fcn) sym.soap_getsizes () | void soap_getsizes (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00008568 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x0000856c ldrb r3, [r0] | r3 = *(r0);
0x0000856e cmp r3, 0 |
| if (r3 == 0) {
0x00008570 beq 0x860e | goto label_1;
| }
0x00008572 mov r8, r2 | r8 = r2;
0x00008574 mov r6, r1 | r6 = r1;
0x00008576 movw r7, 0x4240 |
0x0000857a add.w r6, r6, r8, lsl 2 | r6 += (r8 << 2);
0x0000857e mov r5, r0 | r5 = r0;
0x00008580 mov.w r8, 1 | r8 = 1;
0x00008584 movt r7, 0xf | r7 = 0xf4240;
0x00008588 blx 0x5fec | r0 = fcn_00005fec ();
0x0000858c mov r4, r0 | r4 = r0;
| label_0:
0x0000858e subs r3, r4, 1 | r3 = r4 - 1;
| if (r4 == 0) {
0x00008590 cbz r4, 0x85e6 | goto label_2;
| }
0x00008592 adds r1, r5, r4 | r1 = r5 + r4;
0x00008594 mov r4, r3 | r4 = r3;
0x00008596 b 0x859c |
| while (r3 == 0) {
0x00008598 subs r4, 1 | r4--;
| if (r4 <= 1) {
0x0000859a blo 0x85e6 | goto label_2;
| }
0x0000859c ldrb r2, [r1, -0x1]! | r2 = *((r1 -= 0x1));
0x000085a0 cmp r2, 0x2c |
0x000085a2 it ne |
| if (r2 != 0x2c) {
0x000085a4 cmpne r2, 0x5b | __asm ("cmpne r2, 0x5b");
| }
0x000085a6 ite eq |
| if (r2 != 0x2c) {
0x000085a8 moveq r3, 1 | r3 = 1;
| }
| if (r2 == 0x2c) {
0x000085aa movne r3, 0 | r3 = 0;
| }
0x000085ac cmp r2, 0x20 |
0x000085ae it eq |
| if (r2 != 0x20) {
0x000085b0 orreq r3, r3, 1 | r3 |= 1;
| }
0x000085b4 cmp r3, 0 |
0x000085b6 beq 0x8598 |
| }
0x000085b8 adds r0, r4, 1 | r0 = r4 + 1;
0x000085ba movs r2, 0xa | r2 = 0xa;
0x000085bc movs r1, 0 | r1 = 0;
0x000085be add r0, r5 | r0 += r5;
0x000085c0 blx 0x6138 | r0 = fcn_00006138 ();
0x000085c4 mul r8, r0, r8 | r8 = r0 * r8;
0x000085c8 str r0, [r6, -0x4]! | *((r6 -= 0x4)) = r0;
0x000085cc cmp r8, r7 |
0x000085ce ite le |
| if (r8 > r7) {
0x000085d0 movle r3, 0 | r3 = 0;
| }
| if (r8 <= r7) {
0x000085d2 movgt r3, 1 | r3 = 1;
| }
0x000085d4 orrs.w r3, r3, r0, lsr 31 | r3 |= (r0 >> 31);
| if (r3 != r3) {
0x000085d8 bne 0x860e | goto label_1;
| }
0x000085da ldrb r3, [r5, r4] | r3 = *((r5 + r4));
0x000085dc cmp r3, 0x5b |
| if (r3 != 0x5b) {
0x000085de bne 0x858e | goto label_0;
| }
| do {
0x000085e0 mov r0, r8 | r0 = r8;
0x000085e2 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x000085e6 movs r2, 0xa | r2 = 0xa;
0x000085e8 movs r1, 0 | r1 = 0;
0x000085ea mov r0, r5 | r0 = r5;
0x000085ec blx 0x6138 | r0 = fcn_00006138 ();
0x000085f0 mul r8, r0, r8 | r8 = r0 * r8;
0x000085f4 movw r3, 0x4240 |
0x000085f8 movt r3, 0xf | r3 = 0xf4240;
0x000085fc str r0, [r6, -0x4] | *((r6 - 0x4)) = r0;
0x00008600 cmp r8, r3 |
0x00008602 ite le |
| if (r8 > r3) {
0x00008604 movle r3, 0 | r3 = 0;
| }
| if (r8 <= r3) {
0x00008606 movgt r3, 1 | r3 = 1;
| }
0x00008608 orrs.w r3, r3, r0, lsr 31 | r3 |= (r0 >> 31);
0x0000860c beq 0x85e0 |
| } while (r3 == r3);
| label_1:
0x0000860e mov.w r8, -1 | r8 = -1;
0x00008612 mov r0, r8 | r0 = r8;
0x00008614 pop.w {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x8618 */
| #include <stdint.h>
|
; (fcn) sym.soap_getposition () | void soap_getposition (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00008618 push.w {r4, r5, r6, r7, r8, lr} |
0x0000861c ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x0000861e cbz r3, 0x8678 | goto label_2;
| }
0x00008620 mov r6, r0 | r6 = r0;
0x00008622 sub.w r8, r1, 4 | r8 = r1 - 4;
0x00008626 movs r7, 0 | r7 = 0;
0x00008628 movs r5, 1 | r5 = 1;
| label_0:
0x0000862a adds r4, r6, r5 | r4 = r6 + r5;
0x0000862c movs r2, 0xa | r2 = 0xa;
0x0000862e movs r1, 0 | r1 = 0;
0x00008630 mov r0, r4 | r0 = r4;
0x00008632 blx 0x6138 | fcn_00006138 ();
0x00008636 str r0, [r8, 4]! | *((r8 += 4)) = r0;
0x0000863a adds r7, 1 | r7++;
0x0000863c ldrb r3, [r6, r5] | r3 = *((r6 + r5));
0x0000863e cmp r3, 0x2c |
0x00008640 it ne |
| if (r3 != 0x2c) {
0x00008642 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r3 == 0x2c) {
0x00008644 beq 0x8670 | goto label_3;
| }
0x00008646 mov r0, r4 | r0 = r4;
0x00008648 b 0x8658 |
| while (r3 != 0x5d) {
0x0000864a ldrb r3, [r0, 1]! | r3 = *((r0 += 1));
0x0000864e adds r5, 1 | r5++;
0x00008650 cmp r3, 0 |
0x00008652 it ne |
| if (r3 != 0) {
0x00008654 cmpne r3, 0x2c | __asm ("cmpne r3, 0x2c");
| }
| if (r3 == 0) {
0x00008656 beq 0x8670 | goto label_3;
| }
0x00008658 cmp r3, 0x5d |
0x0000865a bne 0x864a |
| }
| label_1:
0x0000865c cmp r7, 0x10 |
| if (r7 == 0x10) {
0x0000865e beq 0x866a | goto label_4;
| }
0x00008660 ldrb r3, [r6, r5] | r3 = *((r6 + r5));
0x00008662 cmp r3, 0 |
0x00008664 it ne |
| if (r3 == 0) {
0x00008666 cmpne r3, 0x5d | __asm ("cmpne r3, 0x5d");
| goto label_5;
| }
| if (r3 != 0) {
| label_5:
0x00008668 bne 0x862a | goto label_0;
| }
| do {
| label_4:
0x0000866a mov r0, r7 | r0 = r7;
0x0000866c pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x00008670 cmp r3, 0x2c |
0x00008672 it eq |
| if (r3 != 0x2c) {
0x00008674 addeq r5, 1 | r5++;
| }
0x00008676 b 0x865c | goto label_1;
| label_2:
0x00008678 mov.w r7, -1 | r7 = -1;
0x0000867c b 0x866a |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x8864 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.soap_get () | void soap_get (int16_t arg1) {
| int16_t var_4h;
| int16_t var_5h;
| int16_t var_6h;
| int16_t var_bh;
| int16_t var_44h;
| r0 = arg1;
0x00008864 ldr.w r2, [pc, 0x574] | r2 = *(0x00008ddc);
0x00008868 ldr.w r3, [pc, 0x574] |
0x0000886c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00008870 add.w r4, r0, 0x3000 | r4 = r0 + 0x3000;
0x00008874 add r2, pc | r2 += pc;
0x00008876 ldr.w r6, [r4, 0xb8] | r6 = *((r4 + 0xb8));
0x0000887a sub sp, 0x4c |
0x0000887c mov r5, r0 | r5 = r0;
0x0000887e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00008880 ldr r3, [r3] | r3 = *(0x8de0);
0x00008882 str r3, [sp, 0x44] | var_44h = r3;
0x00008884 mov.w r3, 0 | r3 = 0;
0x00008888 cmp r6, 0 |
| if (r6 == 0) {
0x0000888a beq.w 0x899c | goto label_30;
| }
0x0000888e adds r1, r6, 1 | r1 = r6 + 1;
| if (r1 == r6) {
0x00008890 beq 0x8976 | goto label_7;
| }
0x00008892 movs r3, 0 | r3 = 0;
0x00008894 movw r7, 0x6d78 |
0x00008898 str.w r3, [r4, 0xb8] | __asm ("str.w r3, [r4, 0xb8]");
0x0000889c movw r8, 0x30d8 | r8 = 0x30d8;
0x000088a0 ldrsh.w r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x000088a4 movt r7, 0x206c | r7 = 0x206c6d78;
| if (r3 != 0) {
| label_1:
0x000088a8 cbz r3, 0x8908 |
| label_21:
0x000088aa cmp r6, 0x5d |
| if (r6 != 0x5d) {
0x000088ac bne 0x897a | goto label_3;
| }
0x000088ae ldrd r2, r3, [r4, 0xb0] | __asm ("ldrd r2, r3, [r4, 0xb0]");
0x000088b2 cmp r2, r3 |
| if (r2 >= r3) {
0x000088b4 bhs.w 0x8a66 | goto label_31;
| }
| label_6:
0x000088b8 adds r3, r2, 1 | r3 = r2 + 1;
0x000088ba adds r1, r5, r2 | r1 = r5 + r2;
0x000088bc str.w r3, [r4, 0xb0] | __asm ("str.w r3, [r4, 0xb0]");
0x000088c0 ldrb.w r1, [r1, r8] | r1 = *((r1 + r8));
0x000088c4 cmp r1, 0x5d |
| if (r1 != 0x5d) {
0x000088c6 bne.w 0x8a78 | goto label_32;
| }
0x000088ca ldr.w r2, [r4, 0xb4] | r2 = *((r4 + 0xb4));
0x000088ce cmp r3, r2 |
| if (r3 >= r2) {
0x000088d0 bhs.w 0x8b66 | goto label_33;
| }
| label_10:
0x000088d4 adds r2, r5, r3 | r2 = r5 + r3;
0x000088d6 ldrb.w r2, [r2, r8] | r2 = *((r2 + r8));
0x000088da cmp r2, 0x3e |
| if (r2 != 0x3e) {
0x000088dc bne.w 0x8d44 | goto label_34;
| }
0x000088e0 ldr.w r2, [r4, 0xb4] | r2 = *((r4 + 0xb4));
0x000088e4 movs r1, 0 | r1 = 0;
0x000088e6 strh.w r1, [r4, 0xbc] | *((r4 + 0xbc)) = r1;
0x000088ea cmp r2, r3 |
| if (r2 < r3) {
0x000088ec bls.w 0x8b78 | goto label_35;
| }
| label_11:
0x000088f0 adds r3, 1 | r3++;
0x000088f2 str.w r3, [r4, 0xb0] | __asm ("str.w r3, [r4, 0xb0]");
| label_12:
0x000088f6 cmp r2, r3 |
| if (r2 < r3) {
0x000088f8 bls.w 0x8b8a | goto label_36;
| }
| label_13:
0x000088fc adds r2, r3, 1 | r2 = r3 + 1;
0x000088fe add r3, r5 | r3 += r5;
0x00008900 str.w r2, [r4, 0xb0] | __asm ("str.w r2, [r4, 0xb0]");
0x00008904 ldrb.w r6, [r3, r8] | r6 = *((r3 + r8));
| }
0x00008908 sub.w r3, r6, 0x22 | r3 = r6 - 0x22;
0x0000890c cmp r3, 0x1c |
| if (r3 > 0x1c) {
0x0000890e bhi 0x897a | goto label_3;
| }
| /* switch table (30 cases) at 0x8914 */
0x00008910 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_0:
0x0000894e ldrd r2, r0, [r4, 0xb0] | __asm ("ldrd r2, r0, [r4, 0xb0]");
| do {
0x00008952 adds r3, r2, 1 | r3 = r2 + 1;
0x00008954 adds r1, r5, r2 | r1 = r5 + r2;
0x00008956 str.w r3, [r4, 0xb0] | __asm ("str.w r3, [r4, 0xb0]");
0x0000895a ldrb.w r1, [r1, r8] | r1 = *((r1 + r8));
0x0000895e cmp r1, 0x5b |
| if (r1 == 0x5b) {
0x00008960 beq.w 0x8c7a | goto label_37;
| }
| label_14:
0x00008964 cmp r3, r0 |
0x00008966 it lo |
| if (r3 >= r0) {
0x00008968 movlo r2, r3 | r2 = r3;
| }
0x0000896a blo 0x8952 |
| } while (r3 <= r0);
0x0000896c mov r0, r5 | r0 = r5;
0x0000896e blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008972 cmp r0, 0 |
| if (r0 == 0) {
0x00008974 beq 0x894e | goto label_0;
| }
| do {
| label_7:
0x00008976 mov.w r6, -1 | r6 = -1;
| label_3:
0x0000897a ldr.w r2, [pc, 0x468] | r2 = *(0x00008de4);
0x0000897e ldr.w r3, [pc, 0x460] | r3 = *(0x8de2);
0x00008982 add r2, pc | r2 += pc;
0x00008984 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00008986 ldr r2, [r3] | r2 = *(0x8de2);
0x00008988 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000898a eors r2, r3 | r2 ^= r3;
0x0000898c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00008990 bne.w 0x8dd6 | goto label_38;
| }
0x00008994 mov r0, r6 | r0 = r6;
0x00008996 add sp, 0x4c |
0x00008998 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_30:
0x0000899c ldrd r3, r2, [r4, 0xb0] | __asm ("ldrd r3, r2, [r4, 0xb0]");
0x000089a0 cmp r3, r2 |
| if (r3 < r2) {
0x000089a2 bhs 0x89c4 |
| label_2:
0x000089a4 adds r1, r3, 1 | r1 = r3 + 1;
0x000089a6 movw r2, 0x30d8 | r2 = 0x30d8;
0x000089aa add r3, r5 | r3 += r5;
0x000089ac movw r7, 0x6d78 |
0x000089b0 str.w r1, [r4, 0xb0] | __asm ("str.w r1, [r4, 0xb0]");
0x000089b4 movw r8, 0x30d8 | r8 = 0x30d8;
0x000089b8 ldrb r6, [r3, r2] | r6 = *((r3 + r2));
0x000089ba movt r7, 0x206c | r7 = 0x206c6d78;
0x000089be ldrsh.w r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x000089c2 b 0x88a8 | goto label_1;
| }
0x000089c4 blx 0x5ebc | r0 = fcn_00005ebc ();
0x000089c8 cmp r0, 0 |
0x000089ca bne 0x8976 |
| } while (r0 != 0);
0x000089cc ldr.w r3, [r4, 0xb0] | r3 = *((r4 + 0xb0));
0x000089d0 b 0x89a4 | goto label_2;
0x000089d2 ldr.w r2, [r4, 0xb0] | r2 = *((r4 + 0xb0));
0x000089d6 b 0x89ea |
| while (r3 > r2) {
| label_5:
0x000089d8 adds r2, r3, 1 | r2 = r3 + 1;
0x000089da add r3, r5 | r3 += r5;
0x000089dc str.w r2, [r4, 0xb0] | __asm ("str.w r2, [r4, 0xb0]");
0x000089e0 ldrb.w r3, [r3, r8] | r3 = *((r3 + r8));
0x000089e4 cmp r3, 0x20 |
| if (r3 > 0x20) {
0x000089e6 bhi.w 0x8aec | goto label_39;
| }
0x000089ea ldr.w r3, [r4, 0xb4] | r3 = *((r4 + 0xb4));
0x000089ee cmp r3, r2 |
0x000089f0 it hi |
| if (r3 <= r2) {
0x000089f2 movhi r3, r2 | r3 = r2;
| }
0x000089f4 bhi 0x89d8 |
| }
0x000089f6 mov r0, r5 | r0 = r5;
0x000089f8 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 == 0) {
0x000089fc cbz r0, 0x8a60 | goto label_40;
| }
| label_28:
0x000089fe ldr.w r3, [r4, 0xb0] | r3 = *((r4 + 0xb0));
0x00008a02 mvn r6, 1 | r6 = ~1;
0x00008a06 subs r3, 1 | r3--;
0x00008a08 str.w r3, [r4, 0xb0] | __asm ("str.w r3, [r4, 0xb0]");
0x00008a0c b 0x897a | goto label_3;
0x00008a0e mvn r6, 5 | r6 = ~5;
0x00008a12 b 0x897a | goto label_3;
0x00008a14 add.w sb, sp, 4 | sb += var_4h;
0x00008a18 ldr.w r2, [r4, 0xb0] | r2 = *((r4 + 0xb0));
0x00008a1c mov r6, sb | r6 = sb;
0x00008a1e movw r8, 0x30d8 | r8 = 0x30d8;
0x00008a22 add.w r7, sp, 0xb | r7 += var_bh;
0x00008a26 b 0x8a40 |
| while (r3 > r2) {
| label_4:
0x00008a28 adds r2, r3, 1 | r2 = r3 + 1;
0x00008a2a add r3, r5 | r3 += r5;
0x00008a2c str.w r2, [r4, 0xb0] | __asm ("str.w r2, [r4, 0xb0]");
0x00008a30 ldrb.w r3, [r3, r8] | r3 = *((r3 + r8));
0x00008a34 cmp r3, 0x3b |
| if (r3 == 0x3b) {
0x00008a36 beq 0x8a7e | goto label_41;
| }
0x00008a38 strb r3, [r6], 1 | *(r6) = r3;
| r6++;
0x00008a3c cmp r6, r7 |
| if (r6 == r7) {
0x00008a3e beq 0x8a7e | goto label_41;
| }
0x00008a40 ldr.w r3, [r4, 0xb4] | r3 = *((r4 + 0xb4));
0x00008a44 cmp r3, r2 |
0x00008a46 it hi |
| if (r3 <= r2) {
0x00008a48 movhi r3, r2 | r3 = r2;
| }
0x00008a4a bhi 0x8a28 |
| }
0x00008a4c mov r0, r5 | r0 = r5;
0x00008a4e blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 != 0) {
0x00008a52 cbnz r0, 0x8a7e | goto label_41;
| }
0x00008a54 ldr.w r3, [r4, 0xb0] | r3 = *((r4 + 0xb0));
0x00008a58 b 0x8a28 | goto label_4;
0x00008a5a mvn r6, 4 | r6 = ~4;
0x00008a5e b 0x897a | goto label_3;
| label_40:
0x00008a60 ldr.w r3, [r4, 0xb0] | r3 = *((r4 + 0xb0));
0x00008a64 b 0x89d8 | goto label_5;
| label_31:
0x00008a66 mov r0, r5 | r0 = r5;
0x00008a68 blx 0x5ebc | fcn_00005ebc ();
0x00008a6c ldr.w r2, [r4, 0xb0] | r2 = *((r4 + 0xb0));
0x00008a70 cmp r0, 0 |
| if (r0 == 0) {
0x00008a72 beq.w 0x88b8 | goto label_6;
| }
0x00008a76 subs r2, 1 | r2--;
| label_32:
0x00008a78 str.w r2, [r4, 0xb0] | __asm ("str.w r2, [r4, 0xb0]");
0x00008a7c b 0x897a | goto label_3;
| label_41:
0x00008a7e movs r1, 0 | r1 = 0;
0x00008a80 strb r1, [r6] | *(r6) = r1;
0x00008a82 ldrb.w r3, [sp, 4] | r3 = var_4h;
0x00008a86 cmp r3, 0x23 |
| if (r3 == 0x23) {
0x00008a88 beq.w 0x8c0a | goto label_42;
| }
0x00008a8c ldrh.w r3, [sp, 4] | r3 = var_4h;
0x00008a90 movw r2, 0x746c | r2 = 0x746c;
0x00008a94 cmp r3, r2 |
| if (r3 == r2) {
0x00008a96 beq.w 0x8c44 | goto label_43;
| }
| label_18:
0x00008a9a movw r2, 0x7467 | r2 = 0x7467;
0x00008a9e cmp r3, r2 |
| if (r3 == r2) {
0x00008aa0 beq.w 0x8c68 | goto label_44;
| }
| label_20:
0x00008aa4 ldr r3, [sp, 4] | r3 = var_4h;
0x00008aa6 movw r2, 0x6d61 |
0x00008aaa movt r2, 0x70 | r2 = 0x706d61;
0x00008aae cmp r3, r2 |
0x00008ab0 itt eq |
| if (r3 != r2) {
0x00008ab2 moveq r6, 0x26 | r6 = 0x26;
| }
| if (r3 != r2) {
0x00008ab4 movteq r6, 0x8000 | __asm ("movteq r6, aav.0x000000ff");
| goto label_45;
| }
| if (r3 == r2) {
| label_45:
0x00008ab8 beq.w 0x897a | goto label_3;
| }
0x00008abc movw r2, 0x7571 |
0x00008ac0 movt r2, 0x746f | r2 = 0x746f7571;
0x00008ac4 cmp r3, r2 |
| if (r3 == r2) {
0x00008ac6 beq.w 0x8c32 | goto label_46;
| }
| label_17:
0x00008aca movw r2, 0x7061 |
0x00008ace movt r2, 0x736f | r2 = 0x736f7061;
0x00008ad2 cmp r3, r2 |
| if (r3 == r2) {
0x00008ad4 beq.w 0x8d32 | goto label_47;
| }
| label_23:
0x00008ad8 ldr r0, [pc, 0x30c] |
0x00008ada movs r2, 0x7f | r2 = 0x7f;
0x00008adc mov r1, sb | r1 = sb;
0x00008ade add r0, pc | r0 = 0x118ca;
0x00008ae0 adds r0, 0x70 | r0 += 0x70;
0x00008ae2 blx 0x5bdc | r0 = fcn_00005bdc ();
0x00008ae6 orr r6, r0, 0x80000000 | r6 = r0 | 0x80000000;
0x00008aea b 0x897a | goto label_3;
| label_39:
0x00008aec cmp r3, 0x21 |
0x00008aee it ne |
| if (r3 != 0x21) {
0x00008af0 cmpne r3, 0x3f | __asm ("cmpne r3, 0x3f");
| }
0x00008af2 mov r6, r3 | r6 = r3;
| if (r3 == 0x21) {
0x00008af4 beq 0x8b9c | goto label_48;
| }
0x00008af6 cmp r3, 0x25 |
| if (r3 != 0x25) {
0x00008af8 bne.w 0x8da2 | goto label_49;
| }
0x00008afc ldr.w r0, [r4, 0xb4] | r0 = *((r4 + 0xb4));
0x00008b00 mov r3, r2 | r3 = r2;
| label_15:
0x00008b02 mov.w sb, 1 | sb = 1;
0x00008b06 b 0x8b16 |
| while (r3 <= r0) {
| label_8:
0x00008b08 adds r2, r3, 1 | r2 = r3 + 1;
0x00008b0a adds r1, r5, r3 | r1 = r5 + r3;
0x00008b0c str.w r2, [r4, 0xb0] | __asm ("str.w r2, [r4, 0xb0]");
0x00008b10 mov r3, r2 | r3 = r2;
0x00008b12 ldrb.w r6, [r1, r8] | r6 = *((r1 + r8));
0x00008b16 cmp r6, 0x3c |
0x00008b18 it eq |
| if (r6 != 0x3c) {
0x00008b1a addeq sb, sb, 1 | sb++;
| }
| if (r6 != 0x3c) {
0x00008b1e beq 0x8b24 |
0x00008b20 cmp r6, 0x3e |
| if (r6 == 0x3e) {
0x00008b22 beq 0x8b3a | goto label_50;
| }
| }
| label_9:
0x00008b24 cmp r3, r0 |
0x00008b26 blo 0x8b08 |
| }
0x00008b28 mov r0, r5 | r0 = r5;
0x00008b2a blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008b2e cmp r0, 0 |
| if (r0 != 0) {
0x00008b30 bne.w 0x8976 | goto label_7;
| }
0x00008b34 ldrd r3, r0, [r4, 0xb0] | __asm ("ldrd r3, r0, [r4, 0xb0]");
0x00008b38 b 0x8b08 | goto label_8;
| label_50:
0x00008b3a subs.w sb, sb, 1 | sb--;
| if (sb != sb) {
0x00008b3e bne 0x8b24 | goto label_9;
| }
0x00008b40 cmp r3, r0 |
| if (r3 <= r0) {
0x00008b42 blo 0x8b54 | goto label_51;
| }
0x00008b44 mov r0, r5 | r0 = r5;
0x00008b46 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008b4a cmp r0, 0 |
| if (r0 != 0) {
0x00008b4c bne.w 0x8976 | goto label_7;
| }
0x00008b50 ldr.w r3, [r4, 0xb0] | r3 = *((r4 + 0xb0));
| label_51:
0x00008b54 adds r2, r3, 1 | r2 = r3 + 1;
0x00008b56 add r3, r5 | r3 += r5;
0x00008b58 str.w r2, [r4, 0xb0] | __asm ("str.w r2, [r4, 0xb0]");
0x00008b5c ldrb.w r6, [r3, r8] | r6 = *((r3 + r8));
0x00008b60 ldrsh.w r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x00008b64 b 0x88a8 | goto label_1;
| label_33:
0x00008b66 mov r0, r5 | r0 = r5;
0x00008b68 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008b6c cmp r0, 0 |
| if (r0 != 0) {
0x00008b6e bne.w 0x8d44 | goto label_34;
| }
0x00008b72 ldr.w r3, [r4, 0xb0] | r3 = *((r4 + 0xb0));
0x00008b76 b 0x88d4 | goto label_10;
| label_35:
0x00008b78 mov r0, r5 | r0 = r5;
0x00008b7a blx 0x5ebc | fcn_00005ebc ();
0x00008b7e ldrd r3, r2, [r4, 0xb0] | __asm ("ldrd r3, r2, [r4, 0xb0]");
0x00008b82 cmp r0, 0 |
| if (r0 == 0) {
0x00008b84 beq.w 0x88f0 | goto label_11;
| }
0x00008b88 b 0x88f6 | goto label_12;
| label_36:
0x00008b8a mov r0, r5 | r0 = r5;
0x00008b8c blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008b90 cmp r0, 0 |
| if (r0 != 0) {
0x00008b92 bne.w 0x8976 | goto label_7;
| }
0x00008b96 ldr.w r3, [r4, 0xb0] | r3 = *((r4 + 0xb0));
0x00008b9a b 0x88fc | goto label_13;
| label_48:
0x00008b9c cmp r3, 0x21 |
| if (r3 != 0x21) {
0x00008b9e bne.w 0x8cc8 | goto label_52;
| }
0x00008ba2 ldr.w r0, [r4, 0xb4] | r0 = *((r4 + 0xb4));
0x00008ba6 cmp r2, r0 |
| if (r2 >= r0) {
0x00008ba8 bhs 0x8c56 | goto label_53;
| }
| label_19:
0x00008baa adds r3, r2, 1 | r3 = r2 + 1;
0x00008bac add r2, r5 | r2 += r5;
0x00008bae str.w r3, [r4, 0xb0] | __asm ("str.w r3, [r4, 0xb0]");
0x00008bb2 ldrb.w r6, [r2, r8] | r6 = *((r2 + r8));
0x00008bb6 cmp r6, 0x5b |
| if (r6 == 0x5b) {
0x00008bb8 beq.w 0x8964 | goto label_14;
| }
0x00008bbc cmp r6, 0x2d |
| if (r6 != 0x2d) {
0x00008bbe bne 0x8b02 | goto label_15;
| }
0x00008bc0 cmp r3, r0 |
0x00008bc2 it lo |
| if (r3 >= r0) {
0x00008bc4 movlo r2, r3 | r2 = r3;
| }
| if (r3 >= r0) {
0x00008bc6 bhs.w 0x8d4c | goto label_54;
| }
| label_24:
0x00008bca adds r3, r2, 1 | r3 = r2 + 1;
0x00008bcc add r2, r5 | r2 += r5;
0x00008bce str.w r3, [r4, 0xb0] | __asm ("str.w r3, [r4, 0xb0]");
0x00008bd2 ldrb.w r6, [r2, r8] | r6 = *((r2 + r8));
0x00008bd6 cmp r6, 0x2d |
| if (r6 != 0x2d) {
0x00008bd8 bne 0x8b02 | goto label_15;
| }
| do {
| label_16:
0x00008bda cmp r3, r0 |
| if (r3 >= r0) {
0x00008bdc bhs 0x8c94 | goto label_55;
| }
| label_22:
0x00008bde adds r2, r3, 1 | r2 = r3 + 1;
0x00008be0 add r3, r5 | r3 += r5;
0x00008be2 str.w r2, [r4, 0xb0] | __asm ("str.w r2, [r4, 0xb0]");
0x00008be6 ldrb.w r3, [r3, r8] | r3 = *((r3 + r8));
0x00008bea cmp r3, 0x2d |
0x00008bec it ne |
| if (r3 == 0x2d) {
0x00008bee movne r3, r2 | r3 = r2;
| }
0x00008bf0 bne 0x8bda |
| } while (r3 != 0x2d);
0x00008bf2 cmp r2, r0 |
| if (r2 >= r0) {
0x00008bf4 bhs.w 0x8d8c | goto label_56;
| }
| label_26:
0x00008bf8 adds r3, r2, 1 | r3 = r2 + 1;
0x00008bfa add r2, r5 | r2 += r5;
0x00008bfc str.w r3, [r4, 0xb0] | __asm ("str.w r3, [r4, 0xb0]");
0x00008c00 ldrb.w r2, [r2, r8] | r2 = *((r2 + r8));
0x00008c04 cmp r2, 0x2d |
| if (r2 != 0x2d) {
0x00008c06 bne 0x8bda | goto label_16;
| }
0x00008c08 b 0x8b02 | goto label_15;
| label_42:
0x00008c0a ldrb.w r3, [sp, 5] | r3 = var_5h;
0x00008c0e and r3, r3, 0xdf | r3 &= 0xdf;
0x00008c12 cmp r3, 0x58 |
0x00008c14 ittee eq |
| if (r3 != 0x58) {
0x00008c16 moveq r2, 0x10 | r2 = 0x10;
| }
| if (r3 != 0x58) {
0x00008c18 addeq r0, sp, 6 | r0 += var_6h;
| }
| if (r3 == 0x58) {
0x00008c1c movne r2, 0xa | r2 = 0xa;
| }
| if (r3 != 0x58) {
0x00008c1e add.w r0, sp, 5 | r0 += var_5h;
| }
0x00008c22 blx 0x6138 | r0 = fcn_00006138 ();
0x00008c26 orr r6, r0, 0x80000000 | r6 = r0 | 0x80000000;
0x00008c2a b 0x897a | goto label_3;
0x00008c2c mvn r6, 3 | r6 = ~3;
0x00008c30 b 0x897a | goto label_3;
| label_46:
0x00008c32 ldrb.w r2, [sb, 4] | r2 = *((sb + 4));
0x00008c36 movs r6, 0x22 |
0x00008c38 movt r6, 0x8000 | r6 = 0x-7fffffde;
0x00008c3c cmp r2, 0 |
| if (r2 == 0) {
0x00008c3e beq.w 0x897a | goto label_3;
| }
0x00008c42 b 0x8aca | goto label_17;
| label_43:
0x00008c44 ldrb.w r2, [sb, 2] | r2 = *((sb + 2));
0x00008c48 movs r6, 0x3c |
0x00008c4a movt r6, 0x8000 | r6 = 0x-7fffffc4;
0x00008c4e cmp r2, 0 |
| if (r2 == 0) {
0x00008c50 beq.w 0x897a | goto label_3;
| }
0x00008c54 b 0x8a9a | goto label_18;
| label_53:
0x00008c56 mov r0, r5 | r0 = r5;
0x00008c58 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008c5c cmp r0, 0 |
| if (r0 != 0) {
0x00008c5e bne.w 0x8976 | goto label_7;
| }
0x00008c62 ldrd r2, r0, [r4, 0xb0] | __asm ("ldrd r2, r0, [r4, 0xb0]");
0x00008c66 b 0x8baa | goto label_19;
| label_44:
0x00008c68 ldrb.w r3, [sb, 2] | r3 = *((sb + 2));
0x00008c6c movs r6, 0x3e |
0x00008c6e movt r6, 0x8000 | r6 = 0x-7fffffc2;
0x00008c72 cmp r3, 0 |
| if (r3 == 0) {
0x00008c74 beq.w 0x897a | goto label_3;
| }
0x00008c78 b 0x8aa4 | goto label_20;
| label_37:
0x00008c7a cmp r3, r0 |
0x00008c7c mov.w r1, 1 | r1 = 1;
0x00008c80 strh.w r1, [r4, 0xbc] | *((r4 + 0xbc)) = r1;
| if (r3 >= r0) {
0x00008c84 bhs 0x8ca6 | goto label_57;
| }
0x00008c86 adds r2, 2 | r2 += 2;
0x00008c88 add r3, r5 | r3 += r5;
0x00008c8a str.w r2, [r4, 0xb0] | __asm ("str.w r2, [r4, 0xb0]");
0x00008c8e ldrb.w r6, [r3, r8] | r6 = *((r3 + r8));
0x00008c92 b 0x88aa | goto label_21;
| label_55:
0x00008c94 mov r0, r5 | r0 = r5;
0x00008c96 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008c9a cmp r0, 0 |
| if (r0 != 0) {
0x00008c9c bne.w 0x8976 | goto label_7;
| }
0x00008ca0 ldrd r3, r0, [r4, 0xb0] | __asm ("ldrd r3, r0, [r4, 0xb0]");
0x00008ca4 b 0x8bde | goto label_22;
| label_57:
0x00008ca6 mov r0, r5 | r0 = r5;
0x00008ca8 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008cac cmp r0, 0 |
| if (r0 != 0) {
0x00008cae bne.w 0x8976 | goto label_7;
| }
0x00008cb2 ldr.w r2, [r4, 0xb0] | r2 = *((r4 + 0xb0));
0x00008cb6 ldrsh.w r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x00008cba adds r1, r2, 1 | r1 = r2 + 1;
0x00008cbc add r2, r5 | r2 += r5;
0x00008cbe str.w r1, [r4, 0xb0] | __asm ("str.w r1, [r4, 0xb0]");
0x00008cc2 ldrb.w r6, [r2, r8] | r6 = *((r2 + r8));
0x00008cc6 b 0x88a8 | goto label_1;
| label_52:
0x00008cc8 mov r0, r5 | r0 = r5;
0x00008cca add.w sb, sp, 4 | sb += var_4h;
0x00008cce blx 0x61b8 | r0 = snprintf_chk ()
0x00008cd2 adds r3, r0, 1 | r3 = r0 + 1;
0x00008cd4 mov r6, r0 | r6 = r0;
0x00008cd6 bics r3, r3, 0x40 | __asm ("bics r3, r3, 0x40");
| if (r3 == r0) {
0x00008cda beq 0x8d9e | goto label_58;
| }
0x00008cdc mov.w fp, 0x3f |
0x00008ce0 mov sl, sb | sl = sb;
| do {
0x00008ce2 cmp.w fp, 0 |
| if (fp > 0) {
0x00008ce6 ble 0x8cfa |
0x00008ce8 cmp r6, 0x20 |
0x00008cea mov r3, sl | r3 = sl;
0x00008cec it lo |
| if (r6 >= 0x20) {
0x00008cee movlo r6, 0x20 | r6 = 0x20;
| }
0x00008cf0 add.w fp, fp, -1 |
0x00008cf4 strb r6, [r3], 1 | *(r3) = r6;
| r3++;
0x00008cf8 mov sl, r3 | sl = r3;
| }
0x00008cfa mov r0, r5 | r0 = r5;
0x00008cfc blx 0x61b8 | r0 = snprintf_chk ()
0x00008d00 adds r3, r0, 1 | r3 = r0 + 1;
0x00008d02 mov r6, r0 | r6 = r0;
0x00008d04 bics r3, r3, 0x40 | __asm ("bics r3, r3, 0x40");
0x00008d08 bne 0x8ce2 |
| } while (r3 != r0);
| label_27:
0x00008d0a movs r3, 0 | r3 = 0;
0x00008d0c strb.w r3, [sl] | *(sl) = r3;
0x00008d10 ldr.w r3, [sb] | r3 = *(sb);
0x00008d14 cmp r3, r7 |
| if (r3 == r7) {
0x00008d16 beq 0x8d5e | goto label_59;
| }
| label_25:
0x00008d18 adds r2, r6, 1 | r2 = r6 + 1;
| if (r2 == r6) {
0x00008d1a beq.w 0x897a | goto label_3;
| }
0x00008d1e mov r0, r5 | r0 = r5;
0x00008d20 blx 0x61b8 | r0 = snprintf_chk ()
0x00008d24 adds r3, r0, 1 | r3 = r0 + 1;
0x00008d26 mov r6, r0 | r6 = r0;
| if (r3 == r0) {
0x00008d28 beq.w 0x8976 | goto label_7;
| }
0x00008d2c ldrd r3, r0, [r4, 0xb0] | __asm ("ldrd r3, r0, [r4, 0xb0]");
0x00008d30 b 0x8b02 | goto label_15;
| label_47:
0x00008d32 ldrb.w r3, [sb, 4] | r3 = *((sb + 4));
0x00008d36 movs r6, 0x27 |
0x00008d38 movt r6, 0x8000 | r6 = 0x-7fffffd9;
0x00008d3c cmp r3, 0 |
| if (r3 == 0) {
0x00008d3e beq.w 0x897a | goto label_3;
| }
0x00008d42 b 0x8ad8 | goto label_23;
| label_34:
0x00008d44 movs r3, 0x5d | r3 = 0x5d;
0x00008d46 str.w r3, [r4, 0xb8] | __asm ("str.w r3, [r4, 0xb8]");
0x00008d4a b 0x897a | goto label_3;
| label_54:
0x00008d4c mov r0, r5 | r0 = r5;
0x00008d4e blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008d52 cmp r0, 0 |
| if (r0 != 0) {
0x00008d54 bne.w 0x8976 | goto label_7;
| }
0x00008d58 ldrd r2, r0, [r4, 0xb0] | __asm ("ldrd r2, r0, [r4, 0xb0]");
0x00008d5c b 0x8bca | goto label_24;
| label_59:
0x00008d5e ldr r1, [pc, 0x8c] |
0x00008d60 mov r0, sb | r0 = sb;
0x00008d62 add r1, pc | r1 = 0x11b54;
0x00008d64 blx 0x6264 | r0 = fcn_00006264 ();
0x00008d68 cmp r0, 0 |
| if (r0 == 0) {
0x00008d6a beq 0x8d18 | goto label_25;
| }
0x00008d6c ldrb r3, [r0, 0xa] | r3 = *((r0 + 0xa));
0x00008d6e cmp r3, 0 |
| if (r3 == 0) {
0x00008d70 beq 0x8d18 | goto label_25;
| }
0x00008d72 ldr r1, [pc, 0x7c] |
0x00008d74 add.w sb, r0, 0xb | sb = r0 + 0xb;
0x00008d78 mov r0, sb | r0 = sb;
0x00008d7a add r1, pc | r1 = 0x11b70;
0x00008d7c blx 0x65c0 | r0 = X509_get_ext_d2i ();
| if (r0 != 0) {
0x00008d80 cbnz r0, 0x8db0 | goto label_60;
| }
| label_29:
0x00008d82 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00008d84 orr r3, r3, 0x20 | r3 |= 0x20;
0x00008d88 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00008d8a b 0x8d18 | goto label_25;
| label_56:
0x00008d8c mov r0, r5 | r0 = r5;
0x00008d8e blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008d92 cmp r0, 0 |
| if (r0 != 0) {
0x00008d94 bne.w 0x8976 | goto label_7;
| }
0x00008d98 ldrd r2, r0, [r4, 0xb0] | __asm ("ldrd r2, r0, [r4, 0xb0]");
0x00008d9c b 0x8bf8 | goto label_26;
| label_58:
0x00008d9e mov sl, sb | sl = sb;
0x00008da0 b 0x8d0a | goto label_27;
| label_49:
0x00008da2 cmp r3, 0x2f |
0x00008da4 it eq |
| if (r3 == 0x2f) {
0x00008da6 mvneq r6, 2 | r6 = ~2;
| goto label_61;
| }
| if (r3 != 0x2f) {
| label_61:
0x00008daa bne.w 0x89fe | goto label_28;
| }
0x00008dae b 0x897a | goto label_3;
| label_60:
0x00008db0 ldr r1, [pc, 0x40] |
0x00008db2 mov r0, sb | r0 = sb;
0x00008db4 add r1, pc | r1 = 0x11bac;
0x00008db6 blx 0x65c0 | r0 = X509_get_ext_d2i ();
0x00008dba cmp r0, 0 |
| if (r0 == 0) {
0x00008dbc beq 0x8d82 | goto label_29;
| }
0x00008dbe ldr r1, [pc, 0x38] |
0x00008dc0 mov r0, sb | r0 = sb;
0x00008dc2 add r1, pc | r1 = 0x11bc0;
0x00008dc4 blx 0x65c0 | r0 = X509_get_ext_d2i ();
0x00008dc8 cmp r0, 0 |
| if (r0 != 0) {
0x00008dca bne 0x8d18 | goto label_25;
| }
0x00008dcc ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00008dce bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x00008dd2 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00008dd4 b 0x8d18 | goto label_25;
| label_38:
0x00008dd6 blx 0x63ec | SSL_get_verify_result ();
0x00008dda nop |
0x00008ddc rsbs r0, r7, 0 | r0 = r7 - ;
0x00008dde movs r2, r0 | r2 = r0;
0x00008de0 lsls r0, r0, 0x14 | r0 <<= 0x14;
0x00008de2 movs r0, r0 |
0x00008de4 adcs r2, r5 | __asm ("adcs r2, r5");
0x00008de6 movs r2, r0 | r2 = r0;
0x00008de8 subs r2, 0xe | r2 -= 0xe;
0x00008dea movs r2, r0 | r2 = r0;
0x00008dec lsrs r6, r3, 0xe | r6 = r3 >> 0xe;
0x00008dee movs r1, r0 | r1 = r0;
0x00008df0 lsrs r2, r2, 0xe | r2 >>= 0xe;
0x00008df2 movs r1, r0 | r1 = r0;
0x00008df4 lsrs r4, r4, 0xd | r4 >>= 0xd;
0x00008df6 movs r1, r0 | r1 = r0;
0x00008df8 lsrs r6, r3, 0xd | r6 = r3 >> 0xd;
0x00008dfa movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x8dfc */
| #include <stdint.h>
|
; (fcn) sym.soap_getutf8 () | void soap_getutf8 (int16_t arg1) {
| r0 = arg1;
0x00008dfc invalid |
0x00008e00 add.w r6, r0, 0x3000 | r6 = r0 + 0x3000;
0x00008e04 ldr.w r4, [r6, 0xb8] | r4 = *((r6 + 0xb8));
0x00008e08 cmp r4, 0x7f |
0x00008e0a itt gt |
| if (r4 <= 0x7f) {
0x00008e0c movgt r3, 0 | r3 = 0;
| }
| if (r4 <= 0x7f) {
0x00008e0e strgt r3, [r6, 0xb8] | *((r6 + 0xb8)) = r3;
| }
0x00008e12 ble 0x8e1a |
| while (r0 <= 0x7f) {
| label_0:
0x00008e14 mov r0, r4 | r0 = r4;
0x00008e16 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
0x00008e1a mov r5, r0 | r5 = r0;
0x00008e1c blx 0x62d0 | r0 = fcn_000062d0 ();
0x00008e20 cmp r0, 0x7f |
0x00008e22 mov r4, r0 | r4 = r0;
0x00008e24 ble 0x8e14 |
| }
0x00008e26 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00008e28 lsls r7, r3, 0x1a | r7 = r3 << 0x1a;
| if (r7 < r3) {
0x00008e2a bmi 0x8e14 | goto label_0;
| }
0x00008e2c ldrd r3, r2, [r6, 0xb0] | __asm ("ldrd r3, r2, [r6, 0xb0]");
0x00008e30 cmp r3, r2 |
| if (r3 >= r2) {
0x00008e32 bhs 0x8eee | goto label_10;
| }
| label_1:
0x00008e34 adds r0, r5, r3 | r0 = r5 + r3;
0x00008e36 adds r2, r3, 1 | r2 = r3 + 1;
0x00008e38 movw r1, 0x30d8 | r1 = 0x30d8;
0x00008e3c str.w r2, [r6, 0xb0] | __asm ("str.w r2, [r6, 0xb0]");
0x00008e40 ldrb r1, [r0, r1] | r1 = *((r0 + r1));
0x00008e42 lsls r0, r1, 0x18 | r0 = r1 << 0x18;
| if (r0 >= r1) {
0x00008e44 bpl 0x8efe | goto label_11;
| }
0x00008e46 cmp r4, 0xdf |
0x00008e48 and r7, r1, 0x3f | r7 = r1 & 0x3f;
0x00008e4c ittt le |
| if (r4 > 0xdf) {
0x00008e4e lslle r4, r4, 6 | r4 <<= 6;
| }
| if (r4 > 0xdf) {
0x00008e50 andle r4, r4, 0x7c0 | r4 &= 0x7c0;
| }
| if (r4 > 0xdf) {
0x00008e54 orrs r4, r7 | r4 |= r7;
| goto label_12;
| }
| if (r4 <= r7) {
| label_12:
0x00008e56 ble 0x8e14 | goto label_0;
| }
0x00008e58 ldr.w r3, [r6, 0xb4] | r3 = *((r6 + 0xb4));
0x00008e5c cmp r2, r3 |
| if (r2 >= r3) {
0x00008e5e bhs 0x8f26 | goto label_13;
| }
| label_5:
0x00008e60 adds r3, r2, 1 | r3 = r2 + 1;
0x00008e62 add r2, r5 | r2 += r5;
0x00008e64 str.w r3, [r6, 0xb0] | __asm ("str.w r3, [r6, 0xb0]");
0x00008e68 movw r3, 0x30d8 | r3 = 0x30d8;
0x00008e6c ldrb.w r8, [r2, r3] | r8 = *((r2 + r3));
0x00008e70 and r8, r8, 0x3f | r8 &= 0x3f;
| label_4:
0x00008e74 cmp r4, 0xef |
| if (r4 <= 0xef) {
0x00008e76 ble 0x8f18 | goto label_14;
| }
0x00008e78 ldrd r3, r2, [r6, 0xb0] | __asm ("ldrd r3, r2, [r6, 0xb0]");
0x00008e7c cmp r3, r2 |
| if (r3 >= r2) {
0x00008e7e bhs 0x8f04 | goto label_15;
| }
| label_3:
0x00008e80 adds r2, r3, 1 | r2 = r3 + 1;
0x00008e82 add r3, r5 | r3 += r5;
0x00008e84 str.w r2, [r6, 0xb0] | __asm ("str.w r2, [r6, 0xb0]");
0x00008e88 movw r2, 0x30d8 | r2 = 0x30d8;
0x00008e8c ldrb.w sb, [r3, r2] | sb = *((r3 + r2));
0x00008e90 and sb, sb, 0x3f | sb &= 0x3f;
| label_2:
0x00008e94 cmp r4, 0xf7 |
| if (r4 <= 0xf7) {
0x00008e96 ble 0x8f3a | goto label_16;
| }
0x00008e98 ldrd r3, r2, [r6, 0xb0] | __asm ("ldrd r3, r2, [r6, 0xb0]");
0x00008e9c cmp r3, r2 |
| if (r3 >= r2) {
0x00008e9e bhs 0x8f64 | goto label_17;
| }
| label_7:
0x00008ea0 adds r2, r3, 1 | r2 = r3 + 1;
0x00008ea2 add r3, r5 | r3 += r5;
0x00008ea4 str.w r2, [r6, 0xb0] | __asm ("str.w r2, [r6, 0xb0]");
0x00008ea8 movw r2, 0x30d8 | r2 = 0x30d8;
0x00008eac ldrb r3, [r3, r2] | r3 = *((r3 + r2));
0x00008eae and r3, r3, 0x3f | r3 &= 0x3f;
| label_6:
0x00008eb2 cmp r4, 0xfb |
| if (r4 <= 0xfb) {
0x00008eb4 ble 0x8f4e | goto label_18;
| }
0x00008eb6 lsls r4, r4, 0x1e | r4 <<= 0x1e;
0x00008eb8 ldr.w r2, [r6, 0xb0] | r2 = *((r6 + 0xb0));
0x00008ebc and r4, r4, 0x40000000 | r4 &= 0x40000000;
0x00008ec0 orr.w r4, r4, r7, lsl 24 | r4 |= (r7 << 24);
0x00008ec4 orr.w r4, r4, r8, lsl 18 | r4 |= (r8 << 18);
0x00008ec8 orr.w r4, r4, sb, lsl 12 | r4 |= (sb << 12);
0x00008ecc orr.w r4, r4, r3, lsl 6 | r4 |= (r3 << 6);
0x00008ed0 ldr.w r3, [r6, 0xb4] | r3 = *((r6 + 0xb4));
0x00008ed4 cmp r2, r3 |
| if (r2 >= r3) {
0x00008ed6 bhs 0x8f76 | goto label_19;
| }
| label_9:
0x00008ed8 adds r1, r2, 1 | r1 = r2 + 1;
0x00008eda add r5, r2 | r5 += r2;
0x00008edc movw r3, 0x30d8 | r3 = 0x30d8;
0x00008ee0 str.w r1, [r6, 0xb0] | __asm ("str.w r1, [r6, 0xb0]");
0x00008ee4 ldrb r3, [r5, r3] | r3 = *((r5 + r3));
0x00008ee6 and r3, r3, 0x3f | r3 &= 0x3f;
| label_8:
0x00008eea orrs r4, r3 | r4 |= r3;
0x00008eec b 0x8e14 | goto label_0;
| label_10:
0x00008eee mov r0, r5 | r0 = r5;
0x00008ef0 blx 0x5ebc | fcn_00005ebc ();
0x00008ef4 ldr.w r3, [r6, 0xb0] | r3 = *((r6 + 0xb0));
0x00008ef8 cmp r0, 0 |
| if (r0 == 0) {
0x00008efa beq 0x8e34 | goto label_1;
| }
0x00008efc subs r3, 1 | r3--;
| label_11:
0x00008efe str.w r3, [r6, 0xb0] | __asm ("str.w r3, [r6, 0xb0]");
0x00008f02 b 0x8e14 | goto label_0;
| label_15:
0x00008f04 mov r0, r5 | r0 = r5;
0x00008f06 mov.w sb, 0x3f | sb = 0x3f;
0x00008f0a blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008f0e cmp r0, 0 |
| if (r0 != 0) {
0x00008f10 bne 0x8e94 | goto label_2;
| }
0x00008f12 ldr.w r3, [r6, 0xb0] | r3 = *((r6 + 0xb0));
0x00008f16 b 0x8e80 | goto label_3;
| label_14:
0x00008f18 lsls r4, r4, 0xc | r4 <<= 0xc;
0x00008f1a uxth r4, r4 | r4 = (int16_t) r4;
0x00008f1c orr.w r4, r4, r7, lsl 6 | r4 |= (r7 << 6);
0x00008f20 orr.w r4, r4, r8 | r4 |= r8;
0x00008f24 b 0x8e14 | goto label_0;
| label_13:
0x00008f26 mov r0, r5 | r0 = r5;
0x00008f28 mov.w r8, 0x3f | r8 = 0x3f;
0x00008f2c blx 0x5ebc | r0 = fcn_00005ebc ();
0x00008f30 cmp r0, 0 |
| if (r0 != 0) {
0x00008f32 bne 0x8e74 | goto label_4;
| }
0x00008f34 ldr.w r2, [r6, 0xb0] | r2 = *((r6 + 0xb0));
0x00008f38 b 0x8e60 | goto label_5;
| label_16:
0x00008f3a lsls r4, r4, 0x12 | r4 <<= 0x12;
0x00008f3c and r4, r4, 0x1c0000 | r4 &= 0x1c0000;
0x00008f40 orr.w r4, r4, r7, lsl 12 | r4 |= (r7 << 12);
0x00008f44 orr.w r4, r4, r8, lsl 6 | r4 |= (r8 << 6);
0x00008f48 orr.w r4, r4, sb | r4 |= sb;
0x00008f4c b 0x8e14 | goto label_0;
| label_18:
0x00008f4e lsls r4, r4, 0x18 | r4 <<= 0x18;
0x00008f50 and r4, r4, 0x3000000 | r4 &= 0x3000000;
0x00008f54 orr.w r4, r4, r7, lsl 18 | r4 |= (r7 << 18);
0x00008f58 orr.w r4, r4, r8, lsl 12 | r4 |= (r8 << 12);
0x00008f5c orr.w r4, r4, sb, lsl 6 | r4 |= (sb << 6);
0x00008f60 orrs r4, r3 | r4 |= r3;
0x00008f62 b 0x8e14 | goto label_0;
| label_17:
0x00008f64 mov r0, r5 | r0 = r5;
0x00008f66 blx 0x5ebc | fcn_00005ebc ();
0x00008f6a movs r3, 0x3f | r3 = 0x3f;
0x00008f6c cmp r0, 0 |
| if (r0 != 0) {
0x00008f6e bne 0x8eb2 | goto label_6;
| }
0x00008f70 ldr.w r3, [r6, 0xb0] | r3 = *((r6 + 0xb0));
0x00008f74 b 0x8ea0 | goto label_7;
| label_19:
0x00008f76 mov r0, r5 | r0 = r5;
0x00008f78 blx 0x5ebc | fcn_00005ebc ();
0x00008f7c movs r3, 0x3f | r3 = 0x3f;
0x00008f7e cmp r0, 0 |
| if (r0 != 0) {
0x00008f80 bne 0x8eea | goto label_8;
| }
0x00008f82 ldr.w r2, [r6, 0xb0] | r2 = *((r6 + 0xb0));
0x00008f86 b 0x8ed8 | goto label_9;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x9864 */
| #include <stdint.h>
|
; (fcn) sym.soap_get_header_attribute () | void soap_get_header_attribute (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00009864 push {r3, r4, r5, r6, r7, lr} |
| if (r1 == 0) {
0x00009866 cbz r1, 0x98a4 | goto label_0;
| }
0x00009868 add.w r5, r0, 0x13400 | r5 = r0 + 0x13400;
0x0000986c mov r6, r2 | r6 = r2;
0x0000986e adds r5, 0xd8 | r5 += 0xd8;
0x00009870 mov r2, r1 | r2 = r1;
0x00009872 b 0x9896 |
| while (r3 != 0) {
0x00009874 blx 0x676c | fcn_0000676c ();
0x00009878 mov r1, r6 | r1 = r6;
0x0000987a mov r4, r0 | r4 = r0;
0x0000987c mov r0, r5 | r0 = r5;
0x0000987e blx 0x65c0 | X509_get_ext_d2i ();
0x00009882 mov r2, r4 | r2 = r4;
0x00009884 mov r4, r0 | r4 = r0;
0x00009886 sxth r4, r4 | __asm ("sxth r4, r4");
0x00009888 mov.w r1, 0x400 | r1 = 0x400;
0x0000988c mov r0, r5 | r0 = r5;
0x0000988e blx 0x5af0 | r0 = fcn_00005af0 ();
0x00009892 mov r2, r0 | r2 = r0;
| if (r4 == 0) {
0x00009894 cbz r4, 0x98a6 | goto label_1;
| }
0x00009896 ldrb r3, [r2] | r3 = *(r2);
0x00009898 mov.w r1, 0x400 | r1 = 0x400;
0x0000989c mov r0, r5 | r0 = r5;
0x0000989e mov r7, r5 | r7 = r5;
0x000098a0 cmp r3, 0 |
0x000098a2 bne 0x9874 |
| }
| label_0:
0x000098a4 movs r7, 0 | r7 = 0;
| label_1:
0x000098a6 mov r0, r7 | r0 = r7;
0x000098a8 pop {r3, r4, r5, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x12150 */
| #include <stdint.h>
|
; (fcn) sym.soap_getline () | void soap_getline (int16_t arg_1h, int16_t arg1, int16_t arg2, uint32_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00012150 push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012154 mov fp, r2 |
0x00012156 add.w sb, fp, -1 | sb = fp + -1;
0x0001215a mov sl, r0 | sl = r0;
0x0001215c cmp.w sb, 0 |
0x00012160 mov.w r0, 0 | r0 = 0;
0x00012164 mov r5, r2 | r5 = r2;
0x00012166 mov r4, r1 | r4 = r1;
0x00012168 mov r7, r0 | r7 = r0;
0x0001216a add.w r6, sl, 0x3000 | r6 = sl + 0x3000;
0x0001216e movw r8, 0x30d8 | r8 = 0x30d8;
| if (sb <= 0) {
0x00012172 ble 0x12196 | goto label_3;
| }
| do {
0x00012174 mov r0, sl | r0 = sl;
0x00012176 blx 0x61b8 | r0 = snprintf_chk ()
0x0001217a cmp r0, 0xa |
0x0001217c it ne |
| if (r0 != 0xa) {
0x0001217e cmpne r0, 0xd | __asm ("cmpne r0, 0xd");
| }
| if (r0 == 0xa) {
0x00012180 beq 0x12196 | goto label_3;
| }
0x00012182 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x00012184 beq 0x121f0 | goto label_4;
| }
0x00012186 strb r0, [r4], 1 | *(r4) = r0;
| r4++;
| label_0:
0x0001218a mov fp, sb |
0x0001218c add.w sb, fp, -1 | sb = fp + -1;
0x00012190 cmp.w sb, 0 |
0x00012194 bgt 0x12174 |
| } while (sb > 0);
| label_3:
0x00012196 cmp r0, 0xa |
| if (r0 == 0xa) {
0x00012198 beq 0x121be | goto label_5;
| }
0x0001219a mov r0, sl | r0 = sl;
0x0001219c blx 0x61b8 | r0 = snprintf_chk ()
0x000121a0 cmp r0, 0xa |
| if (r0 == 0xa) {
0x000121a2 beq 0x121be | goto label_5;
| }
0x000121a4 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x000121a6 beq 0x121f0 | goto label_4;
| }
| label_1:
0x000121a8 cmp.w sb, 0 |
| if (sb >= 0) {
0x000121ac bge 0x1218a | goto label_0;
| }
0x000121ae movs r3, 0x16 | r3 = 0x16;
0x000121b0 add.w sl, sl, 0x16000 | sl += 0x16000;
0x000121b4 mov r0, r3 | r0 = r3;
0x000121b6 str.w r3, [sl, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000121ba pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x000121be cmp fp, r5 |
0x000121c0 strb r7, [r4] | *(r4) = r7;
| if (fp == r5) {
0x000121c2 beq 0x121da | goto label_6;
| }
0x000121c4 ldrd r3, r2, [r6, 0xb0] | __asm ("ldrd r3, r2, [r6, 0xb0]");
0x000121c8 cmp r3, r2 |
| if (r3 >= r2) {
0x000121ca bhs 0x121e0 | goto label_7;
| }
| label_2:
0x000121cc add r3, sl | r3 += sl;
0x000121ce ldrb.w r0, [r3, r8] | r0 = *((r3 + r8));
0x000121d2 cmp r0, 0x20 |
0x000121d4 it ne |
| if (r0 == 0x20) {
0x000121d6 cmpne r0, 9 | __asm ("cmpne r0, 9");
| goto label_8;
| }
| if (r0 == 0x20) {
| label_8:
0x000121d8 beq 0x121a8 | goto label_1;
| }
| do {
| label_6:
0x000121da movs r0, 0 | r0 = 0;
0x000121dc pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x000121e0 mov r0, sl | r0 = sl;
0x000121e2 blx 0x5ebc | r0 = fcn_00005ebc ();
0x000121e6 cmp r0, 0 |
0x000121e8 bne 0x121da |
| } while (r0 != 0);
0x000121ea ldr.w r3, [r6, 0xb0] | r3 = *((r6 + 0xb0));
0x000121ee b 0x121cc | goto label_2;
| label_4:
0x000121f0 mov.w r3, -1 | r3 = -1;
0x000121f4 add.w sl, sl, 0x16000 | sl += 0x16000;
0x000121f8 mov r0, r3 | r0 = r3;
0x000121fa str.w r3, [sl, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000121fe pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x125ec */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) sym.soap_getdimehdr () | void soap_getdimehdr (int16_t arg1) {
| int16_t var_0h;
| int16_t var_1h;
| int16_t var_2h;
| int16_t var_4h;
| int16_t var_6h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
0x000125ec ldr r2, [pc, 0x174] |
0x000125ee ldr r3, [pc, 0x178] | r3 = *(0x1276a);
0x000125f0 push.w {r4, r5, r6, r7, r8, lr} |
0x000125f4 sub sp, 0x10 |
0x000125f6 add r2, pc | r2 = 0x24d5e;
0x000125f8 mov r4, r0 | r4 = r0;
0x000125fa ldr r3, [r2, r3] |
0x000125fc ldr r3, [r3] | r3 = *(0x24d5e);
0x000125fe str r3, [sp, 0xc] | var_ch = r3;
0x00012600 mov.w r3, 0 | r3 = 0;
0x00012604 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00012606 lsls r2, r3, 0x18 | r2 = r3 << 0x18;
| if (r2 >= r3) {
0x00012608 bpl.w 0x12716 | goto label_5;
| }
0x0001260c add.w r7, r0, 0x16000 | r7 = r0 + 0x16000;
0x00012610 ldr.w r3, [r7, 0x1a0] | r3 = *((r7 + 0x1a0));
0x00012614 cmp r3, 0 |
| if (r3 != 0) {
0x00012616 bne 0x126d4 | goto label_6;
| }
0x00012618 ldr.w r3, [r7, 0x19c] | r3 = *((r7 + 0x19c));
0x0001261c cmp r3, 0 |
| if (r3 != 0) {
0x0001261e bne 0x126d4 | goto label_6;
| }
0x00012620 mov r5, sp | r5 = sp;
0x00012622 add r6, sp, 0xc | r6 += var_ch;
| do {
0x00012624 mov r0, r4 | r0 = r4;
0x00012626 blx 0x61b8 | r0 = snprintf_chk ()
0x0001262a adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0001262c beq 0x12724 | goto label_7;
| }
0x0001262e strb r0, [r5], 1 | *(r5) = r0;
| r5++;
0x00012632 cmp r5, r6 |
0x00012634 bne 0x12624 |
| } while (r5 != r6);
0x00012636 ldrb.w r3, [sp] | r3 = *(sp);
0x0001263a and r2, r3, 0xf8 | r2 = r3 & 0xf8;
0x0001263e cmp r2, 8 |
0x00012640 ittt ne |
| if (r2 == 8) {
0x00012642 movne r3, 0x22 | r3 = 0x22;
| }
| if (r2 == 8) {
0x00012644 movne r5, r3 | r5 = r3;
| }
| if (r2 == 8) {
0x00012646 strne r3, [r7, 0x184] | *((r7 + 0x184)) = r3;
| }
| if (r2 != 8) {
0x0001264a bne 0x126fa | goto label_0;
| }
0x0001264c ldrb.w r2, [sp, 1] | r2 = var_1h;
0x00012650 and r3, r3, 7 | r3 &= 7;
0x00012654 ldrh.w r1, [sp, 2] | r1 = var_2h;
0x00012658 ldrh.w r6, [sp, 4] | r6 = var_4h;
0x0001265c bic r2, r2, 0xf | r2 = BIT_MASK (r2, 0xf);
0x00012660 ldrh.w r8, [sp, 6] | r8 = var_6h;
0x00012664 orrs r3, r2 | r3 |= r2;
0x00012666 rev16 r1, r1 | __asm ("rev16 r1, r1");
0x00012668 strb.w r3, [r7, 0x1a4] | *((r7 + 0x1a4)) = r3;
0x0001266c uxth r1, r1 | r1 = (int16_t) r1;
0x0001266e ldr r3, [sp, 8] | r3 = var_8h;
0x00012670 rev16 r6, r6 | __asm ("rev16 r6, r6");
0x00012672 rev16.w r8, r8 | __asm ("rev16.w r8, r8");
0x00012676 uxth r6, r6 | r6 = (int16_t) r6;
0x00012678 uxth.w r8, r8 | r8 = (int16_t) r8;
0x0001267c rev r3, r3 | r3 = SWAP32 (r3);
0x0001267e str.w r3, [r7, 0x198] | __asm ("str.w r3, aav.0x000000ff");
0x00012682 cmp r1, 0 |
| if (r1 == 0) {
0x00012684 beq 0x1273e | goto label_8;
| }
0x00012686 mov r0, r4 | r0 = r4;
0x00012688 bl 0xa594 | fcn_0000a594 (r0, r1);
0x0001268c str.w r0, [r7, 0x1b4] | __asm ("str.w r0, aav.0x000000ff");
0x00012690 cmp r0, 0 |
| if (r0 == 0) {
0x00012692 beq 0x12742 | goto label_9;
| }
| label_2:
0x00012694 cmp r6, 0 |
| if (r6 == 0) {
0x00012696 beq 0x1274c | goto label_10;
| }
0x00012698 mov r1, r6 | r1 = r6;
0x0001269a mov r0, r4 | r0 = r4;
0x0001269c bl 0xa594 | fcn_0000a594 (r0, r1);
0x000126a0 str.w r0, [r7, 0x1ac] | __asm ("str.w r0, aav.0x000000ff");
0x000126a4 cmp r0, 0 |
| if (r0 == 0) {
0x000126a6 beq 0x12750 | goto label_11;
| }
0x000126a8 cmp.w r8, 0 |
| if (r8 == 0) {
0x000126ac beq 0x12730 | goto label_4;
| }
| label_3:
0x000126ae mov r1, r8 | r1 = r8;
0x000126b0 mov r0, r4 | r0 = r4;
0x000126b2 bl 0xa594 | fcn_0000a594 (r0, r1);
0x000126b6 str.w r0, [r7, 0x1b0] | __asm ("str.w r0, aav.0x000000ff");
0x000126ba cmp r0, 0 |
| if (r0 == 0) {
0x000126bc beq 0x12734 | goto label_12;
| }
| label_1:
0x000126be ldrb.w r5, [r7, 0x1a4] | r5 = *((r7 + 0x1a4));
0x000126c2 ands r5, r5, 2 | r5 &= 2;
| if (r5 == r5) {
0x000126c6 beq 0x126fa | goto label_0;
| }
0x000126c8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000126ca movs r5, 0 | r5 = 0;
0x000126cc bic r3, r3, 0x80 | r3 = BIT_MASK (r3, 0x80);
0x000126d0 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x000126d2 b 0x126fa | goto label_0;
| label_6:
0x000126d4 ldr.w r5, [r7, 0x198] | r5 = *((r7 + 0x198));
0x000126d8 mov r0, r4 | r0 = r4;
0x000126da blx 0x659c | r0 = fcn_0000659c ();
0x000126de mov r1, r0 | r1 = r0;
0x000126e0 mov r0, r4 | r0 = r4;
0x000126e2 subs r1, r5, r1 | r1 = r5 - r1;
0x000126e4 blx 0x6784 | r0 = fcn_00006784 ();
0x000126e8 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x000126ea cbnz r0, 0x12724 | goto label_7;
| }
0x000126ec mov r0, r4 | r0 = r4;
0x000126ee add.w r4, r4, 0x3000 | r4 += 0x3000;
0x000126f2 blx 0x61b8 | snprintf_chk ()
0x000126f6 str.w r0, [r4, 0xb8] | __asm ("str.w r0, [r4, 0xb8]");
| do {
| label_0:
0x000126fa ldr r2, [pc, 0x70] |
0x000126fc ldr r3, [pc, 0x68] | r3 = *(0x12768);
0x000126fe add r2, pc | r2 = 0x24e70;
0x00012700 ldr r3, [r2, r3] | r3 = *(0x24e70);
0x00012702 ldr r2, [r3] | r2 = *(0x24e70);
0x00012704 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012706 eors r2, r3 | r2 ^= r3;
0x00012708 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001270c bne 0x12760 | goto label_13;
| }
0x0001270e mov r0, r5 | r0 = r5;
0x00012710 add sp, 0x10 |
0x00012712 pop.w {r4, r5, r6, r7, r8, pc} |
| label_5:
0x00012716 movs r3, 0x23 | r3 = 0x23;
0x00012718 add.w r4, r0, 0x16000 | r4 = r0 + 0x16000;
0x0001271c mov r5, r3 | r5 = r3;
0x0001271e str.w r3, [r4, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x00012722 b 0x126fa |
| } while (1);
| label_7:
0x00012724 mov.w r3, -1 | r3 = -1;
0x00012728 mov r5, r3 | r5 = r3;
0x0001272a str.w r3, [r7, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x0001272e b 0x126fa | goto label_0;
| label_4:
0x00012730 str.w r8, [r7, 0x1b0] | __asm ("str.w r8, aav.0x000000ff");
| label_12:
0x00012734 ldr.w r5, [r7, 0x184] | r5 = *((r7 + 0x184));
0x00012738 cmp r5, 0 |
| if (r5 == 0) {
0x0001273a beq 0x126be | goto label_1;
| }
0x0001273c b 0x126fa | goto label_0;
| label_8:
0x0001273e str.w r1, [r7, 0x1b4] | __asm ("str.w r1, aav.0x000000ff");
| label_9:
0x00012742 ldr.w r5, [r7, 0x184] | r5 = *((r7 + 0x184));
0x00012746 cmp r5, 0 |
| if (r5 == 0) {
0x00012748 beq 0x12694 | goto label_2;
| }
0x0001274a b 0x126fa | goto label_0;
| label_10:
0x0001274c str.w r6, [r7, 0x1ac] | __asm ("str.w r6, aav.0x000000ff");
| label_11:
0x00012750 ldr.w r5, [r7, 0x184] | r5 = *((r7 + 0x184));
0x00012754 cmp r5, 0 |
| if (r5 != 0) {
0x00012756 bne 0x126fa | goto label_0;
| }
0x00012758 cmp.w r8, 0 |
| if (r8 != 0) {
0x0001275c bne 0x126ae | goto label_3;
| }
0x0001275e b 0x12730 | goto label_4;
| label_13:
0x00012760 blx 0x63ec | SSL_get_verify_result ();
0x00012764 adr r4, 0x3d8 | r4 = 0x3d8;
0x00012766 movs r1, r0 | r1 = r0;
0x00012768 lsls r0, r0, 0x14 | r0 <<= 0x14;
0x0001276a movs r0, r0 |
0x0001276c adr r3, 0x3b8 | r3 = 0x3b8;
0x0001276e movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x12888 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.soap_getdime () | void soap_getdime (int16_t arg1) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
0x00012888 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0001288c mov r6, r0 | r6 = r0;
0x0001288e sub sp, 0x1c |
0x00012890 add.w r4, r0, 0x16000 | r4 = r0 + 0x16000;
0x00012894 b 0x128b2 |
| while (r1 < r3) {
0x00012896 blx 0x6220 | r0 = fcn_00006220 ();
0x0001289a mov r3, r0 | r3 = r0;
0x0001289c mov r0, r6 | r0 = r6;
0x0001289e cmp r3, 0 |
| if (r3 != 0) {
0x000128a0 bne.w 0x12a56 | goto label_8;
| }
0x000128a4 ldr.w r1, [r4, 0x198] | r1 = *((r4 + 0x198));
0x000128a8 blx 0x6784 | r0 = fcn_00006784 ();
0x000128ac cmp r0, 0 |
| if (r0 != 0) {
0x000128ae bne.w 0x129e8 | goto label_3;
| }
0x000128b2 ldrb.w r3, [r4, 0x1a4] | r3 = *((r4 + 0x1a4));
0x000128b6 mov r0, r6 | r0 = r6;
0x000128b8 lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
0x000128ba bmi 0x12896 |
| }
0x000128bc ldr.w r3, [r4, 0x198] | r3 = *((r4 + 0x198));
0x000128c0 adds r3, 3 | r3 += 3;
0x000128c2 bic r5, r3, 3 | r5 = BIT_MASK (r3, 3);
0x000128c6 blx 0x659c | r0 = fcn_0000659c ();
0x000128ca mov r1, r0 | r1 = r0;
0x000128cc mov r0, r6 | r0 = r6;
0x000128ce subs r1, r5, r1 | r1 = r5 - r1;
0x000128d0 blx 0x6784 | r0 = fcn_00006784 ();
0x000128d4 cmp r0, 0 |
| if (r0 != 0) {
0x000128d6 bne.w 0x129e8 | goto label_3;
| }
0x000128da movw sb, 0x30d8 | sb = 0x30d8;
0x000128de b 0x12942 | goto label_9;
| label_0:
0x000128e0 ldr.w r0, [r4, 0x184] | r0 = *((r4 + 0x184));
0x000128e4 cmp r0, 0 |
| if (r0 != 0) {
0x000128e6 bne.w 0x129f2 | goto label_7;
| }
| do {
0x000128ea ldrb.w r3, [r4, 0x1a4] | r3 = *((r4 + 0x1a4));
0x000128ee lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x000128f0 bmi.w 0x12a60 | goto label_10;
| }
0x000128f4 ldr.w r5, [r4, 0x198] | r5 = *((r4 + 0x198));
0x000128f8 mov r3, r5 | r3 = r5;
| if (r5 != 0) {
0x000128fa cbz r5, 0x1290a |
0x000128fc mov r1, r5 | r1 = r5;
0x000128fe mov r0, r6 | r0 = r6;
0x00012900 bl 0xa594 | fcn_0000a594 (r0, r1);
0x00012904 ldr.w r5, [r4, 0x198] | r5 = *((r4 + 0x198));
0x00012908 mov r3, r0 | r3 = r0;
| }
0x0001290a str.w r3, [r4, 0x1a8] | __asm ("str.w r3, aav.0x000000ff");
| label_2:
0x0001290e add.w r1, r4, 0x1bc | r1 = r4 + 0x1bc;
0x00012912 add.w r2, r4, 0x1c0 | r2 = r4 + 0x1c0;
0x00012916 mov r0, r6 | r0 = r6;
0x00012918 str r5, [sp] | *(sp) = r5;
0x0001291a bl 0xa554 | r0 = fcn_0000a554 (r0, r1, r2, r3);
0x0001291e mov r1, r0 | r1 = r0;
0x00012920 cmp r0, 0 |
| if (r0 == 0) {
0x00012922 beq.w 0x12ac0 | goto label_11;
| }
0x00012926 ldr.w r0, [r4, 0x184] | r0 = *((r4 + 0x184));
0x0001292a ldrd r5, r2, [r4, 0x1ac] | __asm ("ldrd r5, r2, aav.0x000000ff");
0x0001292e ldr.w r3, [r4, 0x1b4] | r3 = *((r4 + 0x1b4));
0x00012932 strd r5, r2, [r1, 0xc] | __asm ("strd r5, r2, [r1, 0xc]");
0x00012936 str r3, [r1, 0x14] | *((r1 + 0x14)) = r3;
0x00012938 cmp r0, 0 |
| if (r0 != 0) {
0x0001293a bne 0x129f2 | goto label_7;
| }
0x0001293c mov r0, r6 | r0 = r6;
0x0001293e bl 0x12810 | fcn_00012810 (r0, r1);
| label_9:
0x00012942 mov r0, r6 | r0 = r6;
0x00012944 blx 0x6220 | r0 = fcn_00006220 ();
0x00012948 cmp r0, 0 |
| if (r0 != 0) {
0x0001294a bne.w 0x12ace | goto label_12;
| }
0x0001294e add.w r5, r6, 0x3000 | r5 = r6 + 0x3000;
0x00012952 ldr r7, [r5, 0x6c] | r7 = *((r5 + 0x6c));
0x00012954 cmp r7, 0 |
0x00012956 beq 0x128ea |
| } while (r7 == 0);
0x00012958 ldr.w r1, [r4, 0x1ac] | r1 = *((r4 + 0x1ac));
0x0001295c mov r0, r6 | r0 = r6;
0x0001295e ldrd r2, r3, [r4, 0x1b0] | __asm ("ldrd r2, r3, aav.0x000000ff");
0x00012962 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00012964 mov r1, r0 | r1 = r0;
0x00012966 str.w r0, [r4, 0x1a8] | __asm ("str.w r0, aav.0x000000ff");
0x0001296a cmp r0, 0 |
| if (r0 == 0) {
0x0001296c beq 0x128e0 | goto label_0;
| }
0x0001296e ldr.w r3, [r4, 0x1ac] | r3 = *((r4 + 0x1ac));
0x00012972 add.w r8, r6, sb | r8 = r6 + sb;
0x00012976 str r3, [sp, 0x10] | var_10h = r3;
0x00012978 ldrd fp, r3, [r4, 0x1b0] | __asm ("ldrd fp, r3, aav.0x000000ff");
0x0001297c str r3, [sp, 0x14] | var_14h = r3;
| label_1:
0x0001297e ldr.w r7, [r4, 0x198] | r7 = *((r4 + 0x198));
0x00012982 str r7, [sp, 0xc] | var_ch = r7;
0x00012984 b 0x1299a |
| while (r3 == 0) {
0x00012986 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012988 subs.w r3, r3, sl | r3 -= sl;
0x0001298c str r3, [sp, 0xc] | var_ch = r3;
| if (r3 == r3) {
0x0001298e beq 0x12a24 | goto label_13;
| }
0x00012990 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 != 0) {
0x00012994 cbnz r0, 0x129f8 | goto label_14;
| }
0x00012996 ldr.w r1, [r4, 0x1a8] | r1 = *((r4 + 0x1a8));
0x0001299a ldrd r2, r3, [r5, 0xb0] | __asm ("ldrd r2, r3, [r5, 0xb0]");
0x0001299e mov r0, r6 | r0 = r6;
0x000129a0 ldr r7, [r5, 0x7c] | r7 = *((r5 + 0x7c));
0x000129a2 sub.w sl, r3, r2 | sl = r3 - r2;
0x000129a6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000129a8 add r2, r8 | r2 += r8;
0x000129aa cmp sl, r3 |
0x000129ac it hs |
| if (sl < r3) {
0x000129ae movhs sl, r3 | sl = r3;
| }
0x000129b0 mov r3, sl | r3 = sl;
0x000129b2 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000129b4 mov r3, r0 | r3 = r0;
0x000129b6 mov r0, r6 | r0 = r6;
0x000129b8 str.w r3, [r4, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000129bc cmp r3, 0 |
0x000129be beq 0x12986 |
| }
| do {
0x000129c0 ldr.w r1, [r4, 0x198] | r1 = *((r4 + 0x198));
0x000129c4 mov r0, r6 | r0 = r6;
0x000129c6 rsbs r1, r1, 0 | r1 -= ;
0x000129c8 and r1, r1, 3 | r1 &= 3;
0x000129cc blx 0x6784 | r0 = fcn_00006784 ();
| if (r0 == 0) {
0x000129d0 cbnz r0, 0x129f8 |
0x000129d2 ldrb.w r3, [r4, 0x1a4] | r3 = *((r4 + 0x1a4));
0x000129d6 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 >= r3) {
0x000129d8 bpl 0x12a00 | goto label_15;
| }
0x000129da mov r0, r6 | r0 = r6;
0x000129dc blx 0x6220 | r0 = fcn_00006220 ();
| if (r0 != 0) {
0x000129e0 cbnz r0, 0x12a00 | goto label_15;
| }
0x000129e2 ldr.w r1, [r4, 0x1a8] | r1 = *((r4 + 0x1a8));
0x000129e6 b 0x1297e | goto label_1;
| label_3:
0x000129e8 mov.w r3, -1 | r3 = -1;
0x000129ec mov r0, r3 | r0 = r3;
0x000129ee str.w r3, [r4, 0x184] | __asm ("str.w r3, aav.0x000000ff");
| label_7:
0x000129f2 add sp, 0x1c |
0x000129f4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
| label_14:
0x000129f8 mov.w r3, -1 | r3 = -1;
0x000129fc str.w r3, [r4, 0x184] | __asm ("str.w r3, aav.0x000000ff");
| label_15:
0x00012a00 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
| if (r3 != 0) {
0x00012a02 cbz r3, 0x12a0c |
0x00012a04 ldr.w r1, [r4, 0x1a8] | r1 = *((r4 + 0x1a8));
0x00012a08 mov r0, r6 | r0 = r6;
0x00012a0a blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
| }
0x00012a0c ldr r3, [sp, 0x10] | r3 = var_10h;
0x00012a0e movs r5, 0 | r5 = 0;
0x00012a10 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00012a12 str.w r5, [r4, 0x198] | __asm ("str.w r5, aav.0x000000ff");
0x00012a16 strd r3, fp, [r4, 0x1ac] | __asm ("strd r3, fp, [r4, aav.0x000001ac]");
0x00012a1a str.w r2, [r4, 0x1b4] | __asm ("str.w r2, aav.0x000000ff");
0x00012a1e ldr.w r3, [r4, 0x1a8] | r3 = *((r4 + 0x1a8));
0x00012a22 b 0x1290e | goto label_2;
| label_13:
0x00012a24 ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x00012a28 add r3, sl | r3 += sl;
0x00012a2a str.w r3, [r5, 0xb0] | __asm ("str.w r3, [r5, 0xb0]");
0x00012a2e b 0x129c0 |
| } while (1);
| label_5:
0x00012a30 ldr.w r1, [r4, 0x198] | r1 = *((r4 + 0x198));
| label_4:
0x00012a34 rsbs r1, r1, 0 | r1 -= ;
0x00012a36 mov r0, r6 | r0 = r6;
0x00012a38 and r1, r1, 3 | r1 &= 3;
0x00012a3c blx 0x6784 | r0 = fcn_00006784 ();
0x00012a40 cmp r0, 0 |
| if (r0 != 0) {
0x00012a42 bne 0x129e8 | goto label_3;
| }
0x00012a44 ldrb.w r3, [r4, 0x1a4] | r3 = *((r4 + 0x1a4));
0x00012a48 ands r3, r3, 1 | r3 &= 1;
| if (r3 == r3) {
0x00012a4c beq 0x12ae0 | goto label_16;
| }
0x00012a4e mov r0, r6 | r0 = r6;
0x00012a50 blx 0x6220 | r0 = fcn_00006220 ();
| if (r0 != 0) {
0x00012a54 cbz r0, 0x12a76 |
| label_8:
0x00012a56 ldr.w r0, [r4, 0x184] | r0 = *((r4 + 0x184));
0x00012a5a add sp, 0x1c |
0x00012a5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x00012a60 ldr.w r3, [r4, 0x1b0] | r3 = *((r4 + 0x1b0));
0x00012a64 mov r0, r6 | r0 = r6;
0x00012a66 ldr.w sl, [r4, 0x1ac] | sl = *((r4 + 0x1ac));
0x00012a6a ldr.w r7, [r4, 0x1b4] | r7 = *((r4 + 0x1b4));
0x00012a6e str r3, [sp, 0xc] | var_ch = r3;
0x00012a70 blx 0x6680 | r0 = X509_free ();
| if (r0 == 0) {
0x00012a74 cbz r0, 0x12aca | goto label_17;
| }
| }
0x00012a76 ldr.w r2, [r4, 0x198] | r2 = *((r4 + 0x198));
0x00012a7a movs r1, 0 | r1 = 0;
0x00012a7c mov r0, r6 | r0 = r6;
0x00012a7e blx 0x5a20 | r0 = loc_imp_soap_serializefault ();
0x00012a82 mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x00012a84 cbz r0, 0x12ac0 | goto label_11;
| }
0x00012a86 ldr.w r1, [r4, 0x198] | r1 = *((r4 + 0x198));
0x00012a8a cmp r1, 0 |
| if (r1 == 0) {
0x00012a8c beq 0x12a34 | goto label_4;
| }
0x00012a8e add.w fp, r0, r1 |
0x00012a92 b 0x12aa8 | goto label_18;
| label_6:
0x00012a94 adds r2, r3, 1 | r2 = r3 + 1;
0x00012a96 add r3, r6 | r3 += r6;
0x00012a98 str.w r2, [r5, 0xb0] | __asm ("str.w r2, [r5, 0xb0]");
0x00012a9c ldrb.w r3, [r3, sb] | r3 = *((r3 + sb));
0x00012aa0 strb r3, [r8], 1 | *(r8) = r3;
| r8++;
0x00012aa4 cmp r8, fp |
| if (r8 == fp) {
0x00012aa6 beq 0x12a30 | goto label_5;
| }
| label_18:
0x00012aa8 ldrd r3, r2, [r5, 0xb0] | __asm ("ldrd r3, r2, [r5, 0xb0]");
0x00012aac cmp r3, r2 |
| if (r3 <= r2) {
0x00012aae blo 0x12a94 | goto label_6;
| }
0x00012ab0 mov r0, r6 | r0 = r6;
0x00012ab2 blx 0x5ebc | r0 = fcn_00005ebc ();
0x00012ab6 cmp r0, 0 |
| if (r0 != 0) {
0x00012ab8 bne 0x129e8 | goto label_3;
| }
0x00012aba ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x00012abe b 0x12a94 | goto label_6;
| label_11:
0x00012ac0 movs r3, 0x14 | r3 = 0x14;
0x00012ac2 mov r0, r3 | r0 = r3;
0x00012ac4 str.w r3, [r4, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x00012ac8 b 0x129f2 | goto label_7;
| label_17:
0x00012aca movs r0, 0x14 | r0 = 0x14;
0x00012acc b 0x129f2 | goto label_7;
| label_12:
0x00012ace ldr.w r0, [r4, 0x184] | r0 = *((r4 + 0x184));
0x00012ad2 cmp r0, 0x23 |
| if (r0 != 0x23) {
0x00012ad4 bne 0x129f2 | goto label_7;
| }
0x00012ad6 movs r3, 0 | r3 = 0;
0x00012ad8 mov r0, r3 | r0 = r3;
0x00012ada str.w r3, [r4, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x00012ade b 0x129f2 | goto label_7;
| label_16:
0x00012ae0 ldr.w ip, [r6, 0x64] | ip = *((r6 + 0x64));
0x00012ae4 mov r2, r3 | r2 = r3;
0x00012ae6 mov r1, r3 | r1 = r3;
0x00012ae8 mov r0, r6 | r0 = r6;
0x00012aea mov fp, r3 |
0x00012aec ldr.w r5, [ip, 8] | r5 = *((ip + 8));
0x00012af0 add.w lr, r5, 1 | lr = r5 + 1;
0x00012af4 str.w lr, [ip, 8] | __asm ("str.w lr, [ip, 8]");
0x00012af8 str.w r5, [r4, 0x198] | __asm ("str.w r5, aav.0x000000ff");
0x00012afc blx 0x63f8 | PEM_read_bio_DHparams ();
0x00012b00 str.w r0, [r4, 0x1a8] | __asm ("str.w r0, aav.0x000000ff");
0x00012b04 cmp r0, 0 |
| if (r0 == 0) {
0x00012b06 beq 0x12a56 | goto label_8;
| }
0x00012b08 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012b0a ldr.w r2, [r4, 0x198] | r2 = *((r4 + 0x198));
0x00012b0e strb.w fp, [r0, r2] | *((r0 + r2)) = fp;
0x00012b12 str.w r3, [r4, 0x1b0] | __asm ("str.w r3, aav.0x000000ff");
0x00012b16 ldr.w r5, [r4, 0x198] | r5 = *((r4 + 0x198));
0x00012b1a ldr.w r3, [r4, 0x1a8] | r3 = *((r4 + 0x1a8));
0x00012b1e str.w sl, [r4, 0x1ac] | __asm ("str.w sl, aav.0x000000ff");
0x00012b22 str.w r7, [r4, 0x1b4] | __asm ("str.w r7, aav.0x000000ff");
0x00012b26 b 0x1290e | 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/libsoap.so @ 0x13240 */
| #include <stdint.h>
|
; (fcn) sym.soap_getmimehdr () | void soap_getmimehdr (int16_t arg_1h, int16_t arg_30h, int16_t arg1) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| int16_t var_14h;
| r0 = arg1;
0x00013240 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00013244 add.w r6, r0, 0x13000 | r6 = r0 + 0x13000;
0x00013248 sub sp, 0x1c |
0x0001324a mov r4, r0 | r4 = r0;
0x0001324c add.w r5, r6, 0xd8 | r5 = r6 + 0xd8;
0x00013250 b 0x13258 |
| while (r0 == 0) {
0x00013252 ldrb.w r3, [r6, 0xd8] | r3 = *((r6 + 0xd8));
| if (r3 != 0) {
0x00013256 cbnz r3, 0x13278 | goto label_4;
| }
0x00013258 mov.w r2, 0x400 | r2 = 0x400;
0x0001325c mov r1, r5 | r1 = r5;
0x0001325e mov r0, r4 | r0 = r4;
0x00013260 blx 0x5df8 | r0 = BIO_new_file ();
0x00013264 cmp r0, 0 |
0x00013266 beq 0x13252 |
| }
0x00013268 add.w r4, r4, 0x16000 | r4 += 0x16000;
0x0001326c ldr.w r7, [r4, 0x184] | r7 = *((r4 + 0x184));
| label_0:
0x00013270 mov r0, r7 | r0 = r7;
0x00013272 add sp, 0x1c |
0x00013274 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00013278 ldrh.w r2, [r6, 0xd8] | r2 = *((r6 + 0xd8));
0x0001327c movw r3, 0x2d2d | r3 = 0x2d2d;
0x00013280 cmp r2, r3 |
0x00013282 it ne |
| if (r2 == r3) {
0x00013284 addne sl, r4, 0x16000 | sl = r4 + 0x16000;
| }
| if (r2 != r3) {
0x00013288 bne 0x132d2 | goto label_5;
| }
0x0001328a mov r0, r5 | r0 = r5;
0x0001328c blx 0x5fec | fcn_00005fec ();
0x00013290 subs r0, 1 | r0--;
0x00013292 ldrb r2, [r5, r0] | r2 = *((r5 + r0));
0x00013294 adds r3, r5, r0 | r3 = r5 + r0;
0x00013296 cmp r2, 0x20 |
| if (r2 > 0x20) {
0x00013298 bhi 0x132a2 | goto label_6;
| }
| do {
0x0001329a ldrb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x0001329e cmp r2, 0x20 |
0x000132a0 bls 0x1329a |
| } while (r2 < 0x20);
| label_6:
0x000132a2 movs r2, 0 | r2 = 0;
0x000132a4 add.w sl, r4, 0x16000 | sl = r4 + 0x16000;
0x000132a8 strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x000132aa add.w r0, r6, 0xda | r0 = r6 + 0xda;
0x000132ae ldr.w r1, [sl, 0x1c4] | r1 = *((sl + 0x1c4));
0x000132b2 cmp r1, 0 |
| if (r1 == 0) {
0x000132b4 beq.w 0x1340e | goto label_7;
| }
0x000132b8 blx 0x67c4 | r0 = fcn_000067c4 ();
0x000132bc cmp r0, 0 |
| if (r0 != 0) {
0x000132be bne.w 0x133f6 | goto label_8;
| }
| label_3:
0x000132c2 mov.w r2, 0x400 | r2 = 0x400;
0x000132c6 mov r1, r5 | r1 = r5;
0x000132c8 mov r0, r4 | r0 = r4;
0x000132ca blx 0x5df8 | r0 = BIO_new_file ();
0x000132ce cmp r0, 0 |
| if (r0 != 0) {
0x000132d0 bne 0x1335c | goto label_9;
| }
| label_5:
0x000132d2 movs r3, 0 | r3 = 0;
0x000132d4 mov r0, r4 | r0 = r4;
0x000132d6 mov r2, r3 | r2 = r3;
0x000132d8 mov r1, r3 | r1 = r3;
0x000132da strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [var_8h]");
0x000132de strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x000132e2 blx 0x5b60 | r0 = fcn_00005b60 ();
0x000132e6 mov r7, r0 | r7 = r0;
0x000132e8 cmp r0, 0 |
| if (r0 != 0) {
0x000132ea bne 0x133c2 | goto label_10;
| }
0x000132ec ldr.w fp, [pc, 0x12c] |
0x000132f0 ldr.w r8, [pc, 0x12c] | r8 = *(0x00013420);
0x000132f4 ldr.w sb, [sl, 0x1d4] | sb = *((sl + 0x1d4));
0x000132f8 add fp, pc | fp = 0x26718;
0x000132fa add.w r3, fp, 0x30 | r3 += arg_30h;
0x000132fe add r8, pc | r8 += pc;
0x00013300 str r3, [sp, 0x14] | var_14h = r3;
0x00013302 b 0x13312 | goto label_2;
| label_1:
0x00013304 mov.w r2, 0x400 | r2 = 0x400;
0x00013308 mov r1, r5 | r1 = r5;
0x0001330a mov r0, r4 | r0 = r4;
0x0001330c blx 0x5df8 | r0 = BIO_new_file ();
| if (r0 != 0) {
0x00013310 cbnz r0, 0x1335c | goto label_9;
| }
| label_2:
0x00013312 ldrb.w r3, [r6, 0xd8] | r3 = *((r6 + 0xd8));
0x00013316 cmp r3, 0 |
| if (r3 == 0) {
0x00013318 beq 0x13270 | goto label_0;
| }
0x0001331a movs r1, 0x3a | r1 = 0x3a;
0x0001331c mov r0, r5 | r0 = r5;
0x0001331e blx 0x5b9c | r0 = fcn_00005b9c ();
0x00013322 mov fp, r0 |
0x00013324 cmp r0, 0 |
| if (r0 == 0) {
0x00013326 beq 0x13304 | goto label_1;
| }
0x00013328 movs r2, 0 | r2 = 0;
0x0001332a strb r2, [r0] | *(r0) = r2;
| do {
0x0001332c ldrb r2, [fp, 1]! | r2 = *(arg_1h);
0x00013330 subs r2, 1 | r2--;
0x00013332 cmp r2, 0x1f |
0x00013334 bls 0x1332c |
| } while (r2 < 0x1f);
0x00013336 mov r1, r8 | r1 = r8;
0x00013338 mov r0, r5 | r0 = r5;
0x0001333a blx 0x65c0 | r0 = X509_get_ext_d2i ();
| if (r0 != 0) {
0x0001333e cbnz r0, 0x13368 | goto label_11;
| }
0x00013340 mov r1, fp | r1 = fp;
0x00013342 mov r0, r4 | r0 = r4;
0x00013344 blx 0x5c8c | fcn_00005c8c ();
0x00013348 mov.w r2, 0x400 | r2 = 0x400;
0x0001334c str.w r0, [sb, 0xc] | __asm ("str.w r0, [sb, 0xc]");
0x00013350 mov r1, r5 | r1 = r5;
0x00013352 mov r0, r4 | r0 = r4;
0x00013354 blx 0x5df8 | r0 = BIO_new_file ();
0x00013358 cmp r0, 0 |
| if (r0 == 0) {
0x0001335a beq 0x13312 | goto label_2;
| }
| label_9:
0x0001335c ldr.w r7, [sl, 0x184] | r7 = *((sl + 0x184));
0x00013360 mov r0, r7 | r0 = r7;
0x00013362 add sp, 0x1c |
0x00013364 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x00013368 ldr r1, [pc, 0xb8] |
0x0001336a mov r0, r5 | r0 = r5;
0x0001336c add r1, pc | r1 = 0x26794;
0x0001336e blx 0x65c0 | r0 = X509_get_ext_d2i ();
| if (r0 == 0) {
0x00013372 cbnz r0, 0x13382 |
0x00013374 mov r1, fp | r1 = fp;
0x00013376 mov r0, r4 | r0 = r4;
0x00013378 blx 0x5c8c | fcn_00005c8c ();
0x0001337c str.w r0, [sb, 0x1c] | __asm ("str.w r0, [sb, 0x1c]");
0x00013380 b 0x13304 | goto label_1;
| }
0x00013382 ldr r1, [pc, 0xa4] |
0x00013384 mov r0, r5 | r0 = r5;
0x00013386 add r1, pc | r1 = 0x267b4;
0x00013388 blx 0x65c0 | r0 = X509_get_ext_d2i ();
| if (r0 != 0) {
0x0001338c cbz r0, 0x133a8 |
0x0001338e ldr r1, [pc, 0x9c] |
0x00013390 mov r0, r5 | r0 = r5;
0x00013392 add r1, pc | r1 = 0x267c4;
0x00013394 blx 0x65c0 | r0 = X509_get_ext_d2i ();
| if (r0 != 0) {
0x00013398 cbnz r0, 0x133cc | goto label_12;
| }
0x0001339a mov r1, fp | r1 = fp;
0x0001339c mov r0, r4 | r0 = r4;
0x0001339e blx 0x5c8c | fcn_00005c8c ();
0x000133a2 str.w r0, [sb, 0x10] | __asm ("str.w r0, [sb, 0x10]");
0x000133a6 b 0x13304 | goto label_1;
| }
0x000133a8 ldr r2, [pc, 0x84] |
0x000133aa mov r1, fp | r1 = fp;
0x000133ac mov r0, r4 | r0 = r4;
0x000133ae add r2, pc | r2 = 0x267e2;
0x000133b0 blx 0x6634 | r0 = fcn_00006634 ();
0x000133b4 mov r1, r0 | r1 = r0;
0x000133b6 mov r0, r4 | r0 = r4;
0x000133b8 blx 0x5c8c | fcn_00005c8c ();
0x000133bc str.w r0, [sb, 0xc] | __asm ("str.w r0, [sb, 0xc]");
0x000133c0 b 0x13304 | goto label_1;
| label_10:
0x000133c2 movs r3, 0x14 | r3 = 0x14;
0x000133c4 mov r7, r3 | r7 = r3;
0x000133c6 str.w r3, [sl, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000133ca b 0x13270 | goto label_0;
| label_12:
0x000133cc ldr r1, [pc, 0x64] |
0x000133ce mov r0, r5 | r0 = r5;
0x000133d0 add r1, pc | r1 = 0x26808;
0x000133d2 blx 0x65c0 | r0 = X509_get_ext_d2i ();
| if (r0 == 0) {
0x000133d6 cbz r0, 0x13400 | goto label_13;
| }
0x000133d8 ldr r1, [pc, 0x5c] |
0x000133da mov r0, r5 | r0 = r5;
0x000133dc add r1, pc | r1 = 0x26818;
0x000133de blx 0x65c0 | r0 = X509_get_ext_d2i ();
0x000133e2 cmp r0, 0 |
| if (r0 != 0) {
0x000133e4 bne 0x13304 | goto label_1;
| }
0x000133e6 mov r2, r0 | r2 = r0;
0x000133e8 mov r1, fp | r1 = fp;
0x000133ea ldr r0, [sp, 0x14] | r0 = var_14h;
0x000133ec blx 0x5bdc | fcn_00005bdc ();
0x000133f0 str.w r0, [sb, 0x18] | __asm ("str.w r0, [sb, 0x18]");
0x000133f4 b 0x13304 | goto label_1;
| label_8:
0x000133f6 movs r3, 0x24 | r3 = 0x24;
0x000133f8 mov r7, r3 | r7 = r3;
0x000133fa str.w r3, [sl, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000133fe b 0x13270 | goto label_0;
| label_13:
0x00013400 mov r1, fp | r1 = fp;
0x00013402 mov r0, r4 | r0 = r4;
0x00013404 blx 0x5c8c | fcn_00005c8c ();
0x00013408 str.w r0, [sb, 0x20] | __asm ("str.w r0, [sb, 0x20]");
0x0001340c b 0x13304 | goto label_1;
| label_7:
0x0001340e mov r1, r0 | r1 = r0;
0x00013410 mov r0, r4 | r0 = r4;
0x00013412 blx 0x5c8c | fcn_00005c8c ();
0x00013416 str.w r0, [sl, 0x1c4] | __asm ("str.w r0, aav.0x000000ff");
0x0001341a b 0x132c2 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x1343c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.soap_get_mime_attachment () | void soap_get_mime_attachment (int16_t arg_0h, uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
0x0001343c ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0001343e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00013442 sub sp, 0x24 |
0x00013444 lsls r2, r3, 0x17 | r2 = r3 << 0x17;
| if (r2 >= r3) {
0x00013446 bpl.w 0x13634 | goto label_10;
| }
0x0001344a add.w r3, r0, 0x16000 | r3 += arg_0hx16000;
0x0001344e mov sl, r0 | sl = r0;
0x00013450 str r3, [sp, 0xc] | var_ch = r3;
0x00013452 ldr.w r3, [r3, 0x1d4] | r3 = *((r3 + 0x1d4));
0x00013456 str r3, [sp, 0x18] | var_18h = r3;
0x00013458 cmp r3, 0 |
| if (r3 == 0) {
0x0001345a beq.w 0x135ae | goto label_14;
| }
0x0001345e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00013460 ldr r6, [sp, 0x18] | r6 = var_18h;
0x00013462 ldr.w r3, [r3, 0x1d0] | r3 = *((r3 + 0x1d0));
0x00013466 cmp r3, r6 |
| if (r3 == r6) {
0x00013468 beq.w 0x135be | goto label_15;
| }
0x0001346c add.w r3, r0, 0x3000 | r3 += arg_0hx3000;
0x00013470 ldr.w r5, [r3, 0x84] | r5 = *((r3 + 0x84));
0x00013474 cmp r5, 0 |
| if (r5 == 0) {
0x00013476 beq.w 0x135be | goto label_15;
| }
0x0001347a ldr r4, [r6, 0x18] | r4 = *((r6 + 0x18));
0x0001347c ldrd r2, r3, [r6, 0xc] | __asm ("ldrd r2, r3, [r6, 0xc]");
0x00013480 str r4, [sp, 4] | var_4h = r4;
0x00013482 ldr r4, [r6, 0x20] | r4 = *((r6 + 0x20));
0x00013484 str r4, [sp] | *(sp) = r4;
0x00013486 blx r5 | r0 = uint32_t (*r5)(uint32_t) (r2);
0x00013488 mov r1, r0 | r1 = r0;
0x0001348a str r0, [r6, 4] | *((r6 + 4)) = r0;
0x0001348c cmp r0, 0 |
| if (arg_0h == ) {
0x0001348e beq.w 0x1362a | goto label_16;
| }
| label_4:
0x00013492 ldr r2, [pc, 0x2d0] |
0x00013494 movs r3, 0 | r3 = 0;
0x00013496 add.w fp, sl, 0x13000 |
0x0001349a mov r5, r3 | r5 = r3;
0x0001349c add.w fp, fp, 0xd8 |
0x000134a0 mov r6, r3 | r6 = r3;
0x000134a2 mov sb, r3 | sb = r3;
0x000134a4 add r2, pc | r2 = 0x26c0e;
0x000134a6 str r3, [sp, 0x10] | var_10h = r3;
0x000134a8 str r2, [sp, 0x1c] | var_1ch = r2;
| label_1:
0x000134aa cmp r1, 0 |
| if (r1 == 0) {
0x000134ac beq 0x1358e | goto label_17;
| }
| label_2:
0x000134ae add.w r4, sl, 0x13400 | r4 = sl + 0x13400;
0x000134b2 adds r4, 0xd8 | r4 += 0xd8;
| label_3:
0x000134b4 mov r0, r5 | r0 = r5;
0x000134b6 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000134b8 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x000134ba movs r7, 0 | r7 = 0;
0x000134bc mov r3, sb | r3 = sb;
0x000134be b 0x134d8 | goto label_0;
0x000134c0 ldrb r1, [r6], 1 | r1 = *(r6);
| r6++;
0x000134c4 adds r7, 1 | r7++;
0x000134c6 cmp.w r7, 0x400 |
0x000134ca add.w r8, r4, 1 | r8 = r4 + 1;
0x000134ce add.w r3, r3, -1 | r3 += -1;
0x000134d2 strb r1, [r4] | *(r4) = r1;
0x000134d4 mov r4, r8 | r4 = r8;
| if (r7 == 0x400) {
0x000134d6 beq 0x13558 | goto label_18;
| }
| label_0:
0x000134d8 lsrs r4, r6, 0x16 | r4 = r6 >> 0x16;
0x000134da subs r1, 0 |
0x000134dc adds r1, 0x2d | r1 += 0x2d;
0x000134de cmp r5, 0 |
0x000134e0 adds r1, 0x33 | r1 += 0x33;
| label_7:
0x000134e2 adds r2, 0x54 | r2 += 0x54;
0x000134e4 subs r2, 0x33 | r2 -= 0x33;
0x000134e6 subs r1, 0x35 | r1 -= 0x35;
0x000134e8 adds r5, 0x3a | r5 += 0x3a;
0x000134ea ldrh r1, [r7, r0] | r1 = *((r7 + r0));
0x000134ec blx 0xfff13cb0 | void (*0xfff13cb0)(uint32_t, uint32_t) (r1, r2);
0x000134f0 ldr r0, [r5] | r0 = *(r5);
0x000134f2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000134f4 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x000134f8 ldr.w r1, [r3, 0x1c4] | r1 = *((r3 + 0x1c4));
| if (r1 != 0) {
0x000134fc cbz r1, 0x1350c |
0x000134fe mov.w r3, 0x400 | r3 = 0x400;
0x00013502 mov.w r2, 0x3fc | r2 = 0x3fc;
0x00013506 mov r0, fp | r0 = fp;
0x00013508 blx 0x5dc8 | fcn_00005dc8 ();
| }
0x0001350c mov sb, fp | sb = fp;
| do {
0x0001350e mov r0, sl | r0 = sl;
0x00013510 blx 0x61b8 | snprintf_chk ()
0x00013514 mov r1, sb | r1 = sb;
0x00013516 ldrb r2, [sb], 1 | r2 = *(sb);
| sb++;
0x0001351a cmp r2, r0 |
0x0001351c beq 0x1350e |
| } while (r2 == r0);
0x0001351e adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00013520 beq 0x13614 | goto label_19;
| }
0x00013522 cmp r2, 0 |
| if (r2 == 0) {
0x00013524 beq.w 0x13640 | goto label_20;
| }
0x00013528 sub.w ip, r0, 0xd |
0x0001352c sub.w r3, r1, fp | r3 = r1 - fp;
0x00013530 clz ip, ip |
0x00013534 strb r0, [r1] | *(r1) = r0;
0x00013536 lsr.w ip, ip, 5 |
0x0001353a adds r3, 1 | r3++;
0x0001353c movs r0, 0xd | r0 = 0xd;
0x0001353e sxth.w r2, ip | __asm ("sxth.w r2, ip");
0x00013542 sub.w r3, r3, ip | r3 -= ip;
0x00013546 mov r1, r0 | r1 = r0;
| label_6:
0x00013548 adds r7, 1 | r7++;
0x0001354a add.w r8, r4, 1 | r8 = r4 + 1;
0x0001354e cmp.w r7, 0x400 |
0x00013552 strb r1, [r4] | *(r4) = r1;
0x00013554 mov r4, r8 | r4 = r8;
| if (r7 != 0x400) {
0x00013556 bne 0x134d8 | goto label_0;
| }
| label_18:
0x00013558 mov sb, r3 | sb = r3;
0x0001355a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0001355c mov r5, r0 | r5 = r0;
0x0001355e str r2, [sp, 0x10] | var_10h = r2;
0x00013560 ldr r1, [r3, 4] | r1 = *((r3 + 4));
| if (r1 == 0) {
0x00013562 cbz r1, 0x1358e | goto label_17;
| }
0x00013564 add.w r3, sl, 0x3000 | r3 = sl + 0x3000;
0x00013568 ldr.w r4, [r3, 0x94] | r4 = *((r3 + 0x94));
0x0001356c cmp r4, 0 |
| if (r4 == 0) {
0x0001356e beq 0x134aa | goto label_1;
| }
0x00013570 add.w r2, sl, 0x13400 | r2 = sl + 0x13400;
0x00013574 mov r3, r7 | r3 = r7;
0x00013576 adds r2, 0xd8 | r2 += 0xd8;
0x00013578 mov r0, sl | r0 = sl;
0x0001357a blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0001357c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0001357e str.w r0, [r2, 0x184] | __asm ("str.w r0, aav.0x000000ff");
0x00013582 cmp r0, 0 |
| if (r0 != 0) {
0x00013584 bne 0x13642 | goto label_21;
| }
0x00013586 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00013588 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0001358a cmp r1, 0 |
| if (r1 != 0) {
0x0001358c bne 0x134ae | goto label_2;
| }
| label_17:
0x0001358e mov.w r2, 0x400 | r2 = 0x400;
0x00013592 movs r1, 0 | r1 = 0;
0x00013594 mov r0, sl | r0 = sl;
0x00013596 blx 0x5a20 | r0 = loc_imp_soap_serializefault ();
0x0001359a mov r4, r0 | r4 = r0;
0x0001359c cmp r0, 0 |
| if (r0 != 0) {
0x0001359e bne 0x134b4 | goto label_3;
| }
| label_5:
0x000135a0 movs r2, 0 | r2 = 0;
0x000135a2 movs r3, 0x14 | r3 = 0x14;
0x000135a4 str r2, [sp, 0x18] | var_18h = r2;
0x000135a6 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000135a8 str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000135ac b 0x13622 | goto label_11;
| label_14:
0x000135ae blx 0x5a74 | r0 = X509_STORE_CTX_set_error ();
0x000135b2 cmp r0, 0 |
| if (r0 != 0) {
0x000135b4 bne 0x13634 | goto label_10;
| }
0x000135b6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000135b8 ldr.w r3, [r3, 0x1d4] | r3 = *((r3 + 0x1d4));
0x000135bc str r3, [sp, 0x18] | var_18h = r3;
| label_15:
0x000135be ldr r3, [sp, 0x18] | r3 = var_18h;
0x000135c0 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000135c2 cmp r1, 0 |
| if (r1 != 0) {
0x000135c4 bne.w 0x13492 | goto label_4;
| }
| label_9:
0x000135c8 mov r0, sl | r0 = sl;
0x000135ca blx 0x6680 | r0 = X509_free ();
0x000135ce cmp r0, 0 |
| if (r0 == 0) {
0x000135d0 beq 0x135a0 | goto label_5;
| }
0x000135d2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000135d4 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000135d6 b 0x13492 | goto label_4;
0x000135d8 add.w sb, sl, 0x3000 | sb = sl + 0x3000;
0x000135dc ldrd ip, r0, [sb, 0xb0] | __asm ("ldrd ip, r0, [sb, 0xb0]");
0x000135e0 cmp ip, r0 |
| if (ip >= r0) {
0x000135e2 bhs 0x135fe | goto label_22;
| }
| label_8:
0x000135e4 add.w r0, ip, 1 | r0 = ip + 1;
0x000135e8 movw r1, 0x30d8 | r1 = 0x30d8;
0x000135ec add ip, sl |
0x000135ee str.w r0, [sb, 0xb0] | __asm ("str.w r0, [sb, 0xb0]");
0x000135f2 ldrb.w r1, [ip, r1] | r1 = *((ip + r1));
0x000135f6 cmp r1, 0xd |
0x000135f8 mov r0, r1 | r0 = r1;
| if (r1 != 0xd) {
0x000135fa bne 0x13548 | goto label_6;
| }
0x000135fc b 0x134e2 | goto label_7;
| label_22:
0x000135fe mov r0, sl | r0 = sl;
0x00013600 strd r3, r2, [sp, 0x10] | __asm ("strd r3, r2, [var_10h]");
0x00013604 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 == 0) {
0x00013608 cbnz r0, 0x13614 |
0x0001360a ldr.w ip, [sb, 0xb0] | ip = *((sb + 0xb0));
0x0001360e ldrd r3, r2, [sp, 0x10] | __asm ("ldrd r3, r2, [var_10h]");
0x00013612 b 0x135e4 | goto label_8;
| }
| label_19:
0x00013614 movs r2, 0 | r2 = 0;
0x00013616 mov.w r3, -1 | r3 = -1;
0x0001361a str r2, [sp, 0x18] | var_18h = r2;
0x0001361c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0001361e str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
| label_11:
0x00013622 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00013624 add sp, 0x24 |
0x00013626 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x0001362a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001362c ldr.w r3, [r3, 0x184] | r3 = *((r3 + 0x184));
0x00013630 cmp r3, 0 |
| if (r3 == 0) {
0x00013632 beq 0x135c8 | goto label_9;
| }
| do {
| label_10:
0x00013634 movs r3, 0 | r3 = 0;
0x00013636 str r3, [sp, 0x18] | var_18h = r3;
0x00013638 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0001363a add sp, 0x24 |
0x0001363c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x00013640 mov r5, r0 | r5 = r0;
| label_21:
0x00013642 movs r3, 0 | r3 = 0;
0x00013644 strb.w r3, [r8] | *(r8) = r3;
0x00013648 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0001364a ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x0001364c cmp r4, 0 |
| if (r4 == 0) {
0x0001364e beq 0x1373a | goto label_23;
| }
0x00013650 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00013652 ldr.w r3, [r1, 0x184] | r3 = *((r1 + 0x184));
| if (r3 == 0) {
0x00013656 cbnz r3, 0x13686 |
0x00013658 add.w r6, sl, 0x3000 | r6 = sl + 0x3000;
0x0001365c ldr.w r8, [r6, 0x94] | r8 = *((r6 + 0x94));
0x00013660 cmp.w r8, 0 |
| if (r8 == 0) {
0x00013664 beq 0x1375a | goto label_24;
| }
0x00013666 add.w r2, sl, 0x13400 | r2 = sl + 0x13400;
0x0001366a mov r3, r7 | r3 = r7;
0x0001366c mov r1, r4 | r1 = r4;
0x0001366e adds r2, 0xd8 | r2 += 0xd8;
0x00013670 lsls r0, r0, 4 | r0 <<= 4;
0x00013672 movs r0, r0 |
0x00013674 ldr.w r3, [r6, 0x8c] | r3 = *((r6 + 0x8c));
0x00013678 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0001367a str.w r0, [r1, 0x184] | __asm ("str.w r0, aav.0x000000ff");
| if (r3 == 0) {
0x0001367e cbz r3, 0x1369e | goto label_25;
| }
0x00013680 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00013682 ldr r4, [r2, 4] | r4 = *((r2 + 4));
0x00013684 b 0x13692 |
| } else {
0x00013686 add.w r3, sl, 0x3000 | r3 = sl + 0x3000;
0x0001368a ldr.w r3, [r3, 0x8c] | r3 = *((r3 + 0x8c));
0x0001368e cmp r3, 0 |
0x00013690 beq 0x13634 |
| } while (r3 == 0);
| }
| label_13:
0x00013692 mov r0, sl | r0 = sl;
0x00013694 mov r1, r4 | r1 = r4;
0x00013696 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
0x00013698 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001369a ldr.w r0, [r3, 0x184] | r0 = *((r3 + 0x184));
| label_25:
0x0001369e cmp r0, 0 |
| if (r0 != 0) {
0x000136a0 bne 0x13634 | goto label_10;
| }
| label_12:
0x000136a2 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000136a4 mov r0, sl | r0 = sl;
0x000136a6 bl 0x12810 | fcn_00012810 (r0, r1);
0x000136aa cmp r5, 0x2d |
| if (r5 == 0x2d) {
0x000136ac beq 0x136fa | goto label_26;
| }
0x000136ae cmp r5, 0xd |
| if (r5 == 0xd) {
0x000136b0 beq 0x136d0 | goto label_27;
| }
0x000136b2 cmp r5, 0x20 |
| if (r5 < 0x20) {
0x000136b4 bls 0x136bc | goto label_28;
| }
0x000136b6 b 0x136e6 | goto label_29;
| do {
0x000136b8 cmp r0, 0x20 |
| if (r0 > 0x20) {
0x000136ba bhi 0x136e6 | goto label_29;
| }
| label_28:
0x000136bc mov r0, sl | r0 = sl;
0x000136be blx 0x61b8 | r0 = snprintf_chk ()
0x000136c2 cmp r0, 0xd |
0x000136c4 it ne |
| if (r0 != 0xd) {
0x000136c6 cmpne r0, -1 | __asm ("cmpne r0, -1");
| }
0x000136ca bne 0x136b8 |
| } while (r0 != 0xd);
0x000136cc cmp r0, 0xd |
| if (r0 != 0xd) {
0x000136ce bne 0x136e6 | goto label_29;
| }
| label_27:
0x000136d0 mov r0, sl | r0 = sl;
0x000136d2 blx 0x61b8 | r0 = snprintf_chk ()
0x000136d6 cmp r0, 0xa |
| if (r0 != 0xa) {
0x000136d8 bne 0x136e6 | goto label_29;
| }
0x000136da mov r0, sl | r0 = sl;
0x000136dc blx 0x5a74 | r0 = X509_STORE_CTX_set_error ();
0x000136e0 cmp r0, 0 |
| if (r0 == 0) {
0x000136e2 beq 0x13622 | goto label_11;
| }
0x000136e4 b 0x13634 | goto label_10;
| do {
| label_29:
0x000136e6 movs r2, 0 | r2 = 0;
0x000136e8 movs r3, 0x24 | r3 = 0x24;
0x000136ea str r2, [sp, 0x18] | var_18h = r2;
0x000136ec ldr r2, [sp, 0xc] | r2 = var_ch;
0x000136ee ldr r0, [sp, 0x18] | r0 = var_18h;
0x000136f0 str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000136f4 add sp, 0x24 |
0x000136f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_26:
0x000136fa mov r0, sl | r0 = sl;
0x000136fc blx 0x61b8 | r0 = snprintf_chk ()
0x00013700 cmp r0, 0x2d |
0x00013702 bne 0x136e6 |
| } while (r0 != 0x2d);
0x00013704 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x00013708 bic r2, r3, 0x100 | r2 = BIT_MASK (r3, 0x100);
0x0001370c lsls r3, r3, 3 | r3 <<= 3;
0x0001370e str.w r2, [sl, 4] | __asm ("str.w r2, [sl, 4]");
| if (r3 >= r3) {
0x00013712 bpl 0x13622 | goto label_11;
| }
0x00013714 mov r0, sl | r0 = sl;
0x00013716 blx 0x6288 | r0 = fcn_00006288 ();
0x0001371a cmp r0, 0 |
| if (r0 == 0) {
0x0001371c beq 0x13622 | goto label_11;
| }
0x0001371e ldr r2, [sp, 0xc] | r2 = var_ch;
0x00013720 mov r0, sl | r0 = sl;
0x00013722 ldrsh.w r3, [r2, 0x154] | r3 = *((r2 + 0x154));
0x00013726 cmp r3, 0 |
0x00013728 itt lt |
| if (r3 >= 0) {
0x0001372a movlt r3, 0 | r3 = 0;
| }
| if (r3 < 0) {
0x0001372c strhlt r3, [r2, 0x154] | __asm ("strhlt r3, aav.0x000000ff");
| }
0x00013730 movs r3, 0 | r3 = 0;
0x00013732 str r3, [sp, 0x18] | var_18h = r3;
0x00013734 blx 0x6054 | fcn_00006054 ();
0x00013738 b 0x13622 | goto label_11;
| label_23:
0x0001373a adds r2, r7, 1 | r2 = r7 + 1;
0x0001373c mov r1, r4 | r1 = r4;
0x0001373e mov r0, sl | r0 = sl;
0x00013740 blx 0x6334 | fcn_00006334 ();
0x00013744 ldr r6, [sp, 0x18] | r6 = var_18h;
0x00013746 subs r0, 1 | r0--;
0x00013748 mov r3, r4 | r3 = r4;
0x0001374a mov r2, r4 | r2 = r4;
0x0001374c mov r1, r4 | r1 = r4;
0x0001374e str r0, [r6, 8] | *((r6 + 8)) = r0;
0x00013750 mov r0, sl | r0 = sl;
0x00013752 blx 0x63f8 | PEM_read_bio_DHparams ();
0x00013756 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00013758 b 0x136a2 | goto label_12;
| label_24:
0x0001375a ldr.w r3, [r6, 0x8c] | r3 = *((r6 + 0x8c));
0x0001375e cmp r3, 0 |
| if (r3 != 0) {
0x00013760 bne 0x13692 | goto label_13;
| }
0x00013762 b 0x136a2 | goto label_12;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x13768 */
| #include <stdint.h>
|
; (fcn) sym.soap_getmime () | void soap_getmime (int16_t arg1) {
| r0 = arg1;
0x00013768 push {r4, lr} |
0x0001376a mov r4, r0 | r4 = r0;
| do {
0x0001376c movs r1, 0 | r1 = 0;
0x0001376e mov r0, r4 | r0 = r4;
0x00013770 blx 0x60c8 | r0 = loc_imp_soap_putelement ();
0x00013774 cmp r0, 0 |
0x00013776 bne 0x1376c |
| } while (r0 != 0);
0x00013778 add.w r4, r4, 0x16000 | r4 += 0x16000;
0x0001377c ldr.w r0, [r4, 0x184] | r0 = *((r4 + 0x184));
0x00013780 pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x141dc */
| #include <stdint.h>
|
; (fcn) sym.soap_get_http_body () | void soap_get_http_body (int16_t arg1) {
| r0 = arg1;
| label_2:
0x00005c88 bx pc | return void (*pc)() ();
0x000141dc ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000141de push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000141e2 mov sl, r0 | sl = r0;
0x000141e4 ands r7, r3, 0x400 | r7 = r3 & 0x400;
| if (r7 != r3) {
0x000141e8 bne 0x1427e | goto label_4;
| }
0x000141ea and r3, r3, 3 | r3 &= 3;
0x000141ee add.w sb, r0, 0x3000 | sb = r0 + 0x3000;
0x000141f2 cmp r3, 3 |
| if (r3 != 3) {
0x000141f4 beq 0x141fe |
0x000141f6 ldr.w r7, [sb, 0xc8] | r7 = *((sb + 0xc8));
0x000141fa cmp r7, 0 |
| if (r7 == 0) {
0x000141fc beq 0x14290 | goto label_5;
| }
| }
| label_3:
0x000141fe movs r3, 0 | r3 = 0;
0x00014200 mov r4, r3 | r4 = r3;
0x00014202 str.w r3, [sb, 0xd4] | __asm ("str.w r3, [sb, 0xd4]");
| do {
| label_0:
0x00014206 movs r2, 0 | r2 = 0;
0x00014208 mov r0, sl | r0 = sl;
0x0001420a mov r1, r2 | r1 = r2;
0x0001420c blx 0x6514 | r0 = fcn_00006514 ();
0x00014210 cmp r0, 0 |
| if (r0 != 0) {
0x00014212 bne 0x14290 | goto label_5;
| }
0x00014214 ldr.w r2, [sb, 0xd4] | r2 = *((sb + 0xd4));
0x00014218 ldr.w r3, [sb, 0xd0] | r3 = *((sb + 0xd0));
0x0001421c ldr.w r6, [sb, 0xcc] | r6 = *((sb + 0xcc));
0x00014220 cmp r3, r2 |
0x00014222 str.w r3, [sb, 0xd4] | __asm ("str.w r3, [sb, 0xd4]");
0x00014226 add.w r5, r6, r2 | r5 = r6 + r2;
0x0001422a beq 0x14206 |
| } while (r3 == r2);
0x0001422c adds r4, 1 | r4++;
| if (r4 == 1) {
0x0001422e beq 0x14286 | goto label_6;
| }
0x00014230 subs.w r8, r7, 0 | r8 = r7 - 0;
0x00014234 it ne |
| if (r8 == r7) {
0x00014236 movne r8, 1 | r8 = 1;
| }
0x0001423a cmp r7, r4 |
0x0001423c ite hs |
| if (r7 < r4) {
0x0001423e movhs r2, 0 | r2 = 0;
| }
| if (r7 >= r4) {
0x00014240 andlo r2, r8, 1 | r2 = r8 & 1;
| }
| if (r2 != 0) {
0x00014244 cbnz r2, 0x1426c | goto label_7;
| }
0x00014246 add r6, r3 | r6 += r3;
0x00014248 b 0x14262 | goto label_8;
| label_1:
0x0001424a strb r0, [r5], 1 | *(r5) = r0;
| r5++;
0x0001424e cmp r5, r6 |
| if (r5 == r6) {
0x00014250 beq 0x14206 | goto label_0;
| }
0x00014252 adds r4, 1 | r4++;
| if (r4 == 1) {
0x00014254 beq 0x14286 | goto label_6;
| }
0x00014256 cmp r7, r4 |
0x00014258 ite hs |
| if (r7 < r4) {
0x0001425a movhs r3, 0 | r3 = 0;
| }
| if (r7 >= r4) {
0x0001425c andlo r3, r8, 1 | r3 = r8 & 1;
| }
| if (r3 != 0) {
0x00014260 cbnz r3, 0x1426c | goto label_7;
| }
| label_8:
0x00014262 mov r0, sl | r0 = sl;
0x00014264 blx 0x61b8 | r0 = snprintf_chk ()
0x00014268 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0001426a bne 0x1424a | goto label_1;
| }
| label_7:
0x0001426c movs r3, 0 | r3 = 0;
0x0001426e mov r0, sl | r0 = sl;
0x00014270 strb r3, [r5] | *(r5) = r3;
0x00014272 ldr.w r1, [sb, 0xcc] | r1 = *((sb + 0xcc));
0x00014276 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001427a b.w 0x5c88 | goto label_2;
| label_4:
0x0001427e movs r7, 0 | r7 = 0;
0x00014280 add.w sb, r0, 0x3000 | sb = r0 + 0x3000;
0x00014284 b 0x141fe | goto label_3;
| label_6:
0x00014286 add.w sl, sl, 0x16000 | sl += 0x16000;
0x0001428a movs r3, 0x14 | r3 = 0x14;
0x0001428c str.w r3, [sl, 0x184] | __asm ("str.w r3, aav.0x000000ff");
| label_5:
0x00014290 movs r0, 0 | r0 = 0;
0x00014292 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x14d24 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.soap_getbase64 () | void soap_getbase64 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x00014d24 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00014d26 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00014d2a sub sp, 0x24 |
0x00014d2c str r1, [sp, 0xc] | var_ch = r1;
0x00014d2e mov r7, r0 | r7 = r0;
0x00014d30 lsls r1, r3, 7 | r1 = r3 << 7;
| if (r1 < r3) {
0x00014d32 bpl 0x14d40 |
0x00014d34 add.w r5, r0, 0x16000 | r5 = r0 + 0x16000;
0x00014d38 ldr.w r4, [r5, 0x190] | r4 = *((r5 + 0x190));
0x00014d3c cmp r4, 0 |
| if (r4 != 0) {
0x00014d3e bne 0x14dfe | goto label_4;
| }
| }
0x00014d40 ldr r3, [pc, 0x1a8] |
0x00014d42 movw sb, 0xaaab |
0x00014d46 add.w r5, r7, 0x3000 | r5 = r7 + 0x3000;
| /* if there is a right shift of 1, then it's a division by 1/3 */
0x00014d4a movt sb, 0xaaaa | sb = 0xaaaaaaab;
0x00014d4e add r3, pc | r3 = 0x29c3e;
0x00014d50 str r3, [sp, 0x10] | var_10h = r3;
0x00014d52 movs r3, 0 | r3 = 0;
0x00014d54 str.w r3, [r5, 0xd4] | __asm ("str.w r3, [r5, 0xd4]");
0x00014d58 b 0x14d80 |
| while (r0 == 0) {
0x00014d5a ldrd sl, fp, [r5, 0xd0] | __asm ("ldrd sl, fp, [r5, 0xd0]");
0x00014d5e ldr.w r1, [r5, 0xcc] | r1 = *((r5 + 0xcc));
0x00014d62 sub.w r4, sl, fp | r4 = sl - fp;
0x00014d66 umull r2, r6, sb, sl | r2:r6 = sb * sl;
0x00014d6a adds.w r8, r1, fp | r8 = r1 + fp;
0x00014d6e bic r2, r6, 1 | r2 = BIT_MASK (r6, 1);
0x00014d72 add.w r2, r2, r6, lsr 1 | r2 += (r6 >> 1);
0x00014d76 str.w r2, [r5, 0xd4] | __asm ("str.w r2, [r5, 0xd4]");
| if (r8 == r1) {
0x00014d7a beq 0x14d8e | goto label_5;
| }
0x00014d7c cmp r4, 2 |
| if (r4 > 2) {
0x00014d7e bhi 0x14d9a | goto label_6;
| }
| label_2:
0x00014d80 movs r2, 2 | r2 = 2;
0x00014d82 movs r1, 0 | r1 = 0;
0x00014d84 mov r0, r7 | r0 = r7;
0x00014d86 blx 0x6514 | r0 = fcn_00006514 ();
0x00014d8a cmp r0, 0 |
0x00014d8c beq 0x14d5a |
| }
| label_5:
0x00014d8e mov.w r8, 0 | r8 = 0;
0x00014d92 mov r0, r8 | r0 = r8;
0x00014d94 add sp, 0x24 |
0x00014d96 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x00014d9a ldr r6, [sp, 0x10] | r6 = var_10h;
0x00014d9c subs r3, r4, 2 | r3 = r4 - 2;
0x00014d9e strd r0, r3, [sp, 0x14] | __asm ("strd r0, r3, [var_14h]");
0x00014da2 str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
| label_1:
0x00014da6 mov.w sb, 0 | sb = 0;
0x00014daa mov r4, sb | r4 = sb;
0x00014dac b 0x14dc4 |
| while (r2 < 0x4f) {
0x00014dae ldrb.w r3, [r1, 0x10c] | r3 = *((r1 + 0x10c));
0x00014db2 add.w sb, sb, 1 | sb++;
0x00014db6 cmp r3, 0x3f |
0x00014db8 add.w r4, r3, r4, lsl 6 | r4 = r3 + (r4 << 6);
| if (r3 > 0x3f) {
0x00014dbc bhi 0x14de8 | goto label_7;
| }
| label_0:
0x00014dbe cmp.w sb, 4 |
| if (sb == 4) {
0x00014dc2 beq 0x14eb6 | goto label_8;
| }
0x00014dc4 mov r0, r7 | r0 = r7;
0x00014dc6 blx 0x62d0 | r0 = fcn_000062d0 ();
0x00014dca sub.w r3, r0, 0x3d | r3 = r0 - 0x3d;
0x00014dce sub.w r2, r0, 0x2b | r2 = r0 - 0x2b;
0x00014dd2 clz r3, r3 | r3 &= r3;
0x00014dd6 adds r1, r6, r2 | r1 = r6 + r2;
0x00014dd8 lsrs r3, r3, 5 | r3 >>= 5;
0x00014dda orrs.w r3, r3, r0, lsr 31 | r3 |= (r0 >> 31);
| if (r3 != r3) {
0x00014dde bne 0x14e2a | goto label_9;
| }
0x00014de0 cmp r2, 0x4f |
0x00014de2 bls 0x14dae |
| }
0x00014de4 cmp r0, 0x20 |
| if (r0 <= 0x20) {
0x00014de6 ble 0x14dbe | goto label_0;
| }
| label_7:
0x00014de8 add.w r7, r7, 0x16000 | r7 += 0x16000;
0x00014dec movs r3, 4 | r3 = 4;
0x00014dee mov.w r8, 0 | r8 = 0;
0x00014df2 str.w r3, [r7, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x00014df6 mov r0, r8 | r0 = r8;
0x00014df8 add sp, 0x24 |
0x00014dfa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00014dfe mov.w r3, -1 | r3 = -1;
0x00014e02 movs r1, 0 | r1 = 0;
0x00014e04 mov r2, r3 | r2 = r3;
0x00014e06 blx 0x5cf8 | fcn_00005cf8 ();
0x00014e0a ldr.w r1, [r5, 0x190] | r1 = *((r5 + 0x190));
0x00014e0e movs r3, 0 | r3 = 0;
0x00014e10 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00014e12 mov r2, r3 | r2 = r3;
0x00014e14 ldr r4, [sp, 0xc] | r4 = var_ch;
0x00014e16 mov r0, r7 | r0 = r7;
0x00014e18 ldr r1, [r1, 0x18] | r1 = *((r1 + 0x18));
0x00014e1a str r4, [sp] | *(sp) = r4;
0x00014e1c blx 0x5e98 | r0 = fcn_00005e98 ();
0x00014e20 mov r8, r0 | r8 = r0;
0x00014e22 mov r0, r8 | r0 = r8;
0x00014e24 add sp, 0x24 |
0x00014e26 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x00014e2a cmp.w sb, 2 |
0x00014e2e mov r3, sl | r3 = sl;
0x00014e30 mov r2, r4 | r2 = r4;
0x00014e32 mov sl, fp | sl = fp;
0x00014e34 mov r4, r0 | r4 = r0;
0x00014e36 mov fp, r3 |
| if (sb == 2) {
0x00014e38 beq 0x14ede | goto label_10;
| }
0x00014e3a cmp.w sb, 3 |
| if (sb == 3) {
0x00014e3e bne 0x14e52 |
0x00014e40 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00014e42 lsrs r1, r2, 0xa | r1 = r2 >> 0xa;
0x00014e44 strb.w r1, [r8] | *(r8) = r1;
0x00014e48 adds r3, 2 | r3 += 2;
0x00014e4a str r3, [sp, 0x14] | var_14h = r3;
0x00014e4c lsrs r3, r2, 2 | r3 = r2 >> 2;
0x00014e4e strb.w r3, [r8, 1] | *((r8 + 1)) = r3;
| }
| label_3:
0x00014e52 ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 != 0) {
0x00014e54 cbz r3, 0x14e66 |
0x00014e56 ldr.w r1, [r5, 0xd0] | r1 = *((r5 + 0xd0));
0x00014e5a ldr r2, [sp, 0x14] | r2 = var_14h;
0x00014e5c add r1, sl | r1 += sl;
0x00014e5e sub.w r1, r1, fp | r1 -= fp;
0x00014e62 add r1, r2 | r1 += r2;
0x00014e64 str r1, [r3] | *(r3) = r1;
| }
0x00014e66 ldr.w r1, [r5, 0xd0] | r1 = *((r5 + 0xd0));
0x00014e6a sub.w r6, sl, fp | r6 = sl - fp;
0x00014e6e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00014e70 mov r0, r7 | r0 = r7;
0x00014e72 add r1, r6 | r1 += r6;
0x00014e74 add r1, r3 | r1 += r3;
0x00014e76 blx 0x6088 | r0 = fcn_00006088 ();
0x00014e7a mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x00014e7c cbz r0, 0x14e90 |
0x00014e7e ldr.w r3, [r5, 0xd0] | r3 = *((r5 + 0xd0));
0x00014e82 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00014e84 ldr.w r1, [r5, 0xcc] | r1 = *((r5 + 0xcc));
0x00014e88 add r3, r6 | r3 += r6;
0x00014e8a add r2, r3 | r2 += r3;
0x00014e8c blx 0x6064 | fcn_00006064 ();
| }
0x00014e90 cmp r4, 0 |
| if (r4 >= 0) {
0x00014e92 bge 0x14e9a | goto label_11;
| }
0x00014e94 b 0x14eaa | goto label_12;
| do {
0x00014e96 cmp r3, 1 |
| if (r3 < 1) {
0x00014e98 bls 0x14ea8 | goto label_13;
| }
| label_11:
0x00014e9a mov r0, r7 | r0 = r7;
0x00014e9c blx 0x62d0 | r0 = fcn_000062d0 ();
0x00014ea0 adds r2, r0, 1 | r2 = r0 + 1;
0x00014ea2 add.w r3, r0, 3 | r3 = r0 + 3;
0x00014ea6 bne 0x14e96 |
| } while (r2 != r0);
| label_13:
0x00014ea8 mov r4, r0 | r4 = r0;
| label_12:
0x00014eaa mov r0, r8 | r0 = r8;
0x00014eac str.w r4, [r5, 0xb8] | __asm ("str.w r4, [r5, 0xb8]");
0x00014eb0 add sp, 0x24 |
0x00014eb2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00014eb6 lsrs r3, r4, 0x10 | r3 = r4 >> 0x10;
0x00014eb8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00014eba strb.w r4, [r8, 2] | *((r8 + 2)) = r4;
0x00014ebe add.w r8, r8, 3 | r8 += 3;
0x00014ec2 strb r3, [r8, -0x3] | *((r8 - 0x3)) = r3;
0x00014ec6 lsrs r3, r4, 8 | r3 = r4 >> 8;
0x00014ec8 adds r2, 3 | r2 += 3;
0x00014eca strb r3, [r8, -0x2] | *((r8 - 0x2)) = r3;
0x00014ece ldr r3, [sp, 0x18] | r3 = var_18h;
0x00014ed0 str r2, [sp, 0x14] | var_14h = r2;
0x00014ed2 cmp r3, r2 |
| if (r3 > r2) {
0x00014ed4 bhi.w 0x14da6 | goto label_1;
| }
0x00014ed8 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x00014edc b 0x14d80 | goto label_2;
| label_10:
0x00014ede lsrs r3, r2, 4 | r3 = r2 >> 4;
0x00014ee0 strb.w r3, [r8] | *(r8) = r3;
0x00014ee4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00014ee6 adds r3, 1 | r3++;
0x00014ee8 str r3, [sp, 0x14] | var_14h = r3;
0x00014eea b 0x14e52 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x155b4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.soap_gethex () | void soap_gethex (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000155b4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000155b6 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000155ba mov r4, r0 | r4 = r0;
0x000155bc sub sp, 0x14 |
0x000155be mov sb, r1 | sb = r1;
0x000155c0 lsls r3, r3, 7 | r3 <<= 7;
| if (r3 < r3) {
0x000155c2 bpl 0x155d2 |
0x000155c4 add.w r6, r0, 0x16000 | r6 = r0 + 0x16000;
0x000155c8 ldr.w r5, [r6, 0x190] | r5 = *((r6 + 0x190));
0x000155cc cmp r5, 0 |
| if (r5 != 0) {
0x000155ce bne.w 0x156ec | goto label_2;
| }
| }
0x000155d2 add.w r8, r4, 0x3000 | r8 = r4 + 0x3000;
0x000155d6 movs r3, 0 | r3 = 0;
0x000155d8 str.w r3, [r8, 0xd4] | __asm ("str.w r3, [r8, 0xd4]");
| do {
| label_0:
0x000155dc movs r2, 0 | r2 = 0;
0x000155de mov r0, r4 | r0 = r4;
0x000155e0 mov r1, r2 | r1 = r2;
0x000155e2 blx 0x6514 | r0 = fcn_00006514 ();
0x000155e6 mov r6, r0 | r6 = r0;
0x000155e8 cmp r0, 0 |
| if (r0 != 0) {
0x000155ea bne.w 0x15718 | goto label_3;
| }
0x000155ee ldr.w r3, [r8, 0xd4] | r3 = *((r8 + 0xd4));
0x000155f2 ldr.w fp, [r8, 0xd0] | fp = *((r8 + 0xd0));
0x000155f6 ldr.w r7, [r8, 0xcc] | r7 = *((r8 + 0xcc));
0x000155fa str r3, [sp, 0xc] | var_ch = r3;
0x000155fc cmp fp, r3 |
0x000155fe str.w fp, [r8, 0xd4] | __asm ("str.w fp, [r8, 0xd4]");
0x00015602 add.w r5, r7, r3 | r5 = r7 + r3;
0x00015606 beq 0x155dc |
| } while (fp == r3);
0x00015608 add r7, fp | r7 += fp;
| do {
0x0001560a mov r0, r4 | r0 = r4;
0x0001560c blx 0x62d0 | r0 = fcn_000062d0 ();
0x00015610 mov r3, r0 | r3 = r0;
0x00015612 mov r0, r4 | r0 = r4;
0x00015614 bic r1, r3, 0x20 | r1 = BIT_MASK (r3, 0x20);
0x00015618 sub.w ip, r3, 0x30 |
0x0001561c subs r1, 0x41 | r1 -= 0x41;
0x0001561e uxtb.w sl, r3 | sl = (int8_t) r3;
0x00015622 cmp.w ip, 9 |
0x00015626 it hi |
| if (ip > 9) {
0x00015628 cmphi r1, 5 | __asm ("cmphi r1, 5");
| }
| if (ip >= 9) {
0x0001562a bls 0x1567a |
0x0001562c str.w r3, [r8, 0xb8] | __asm ("str.w r3, [r8, 0xb8]");
0x00015630 cmp.w sb, 0 |
| if (sb != 0) {
0x00015634 beq 0x15648 |
0x00015636 ldr.w r3, [r8, 0xd0] | r3 = *((r8 + 0xd0));
0x0001563a ldr r2, [sp, 0xc] | r2 = var_ch;
0x0001563c add r3, r2 | r3 += r2;
0x0001563e sub.w r3, r3, fp | r3 -= fp;
0x00015642 add r3, r6 | r3 += r6;
0x00015644 str.w r3, [sb] | __asm ("str.w r3, [sb]");
| }
0x00015648 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001564a mov r0, r4 | r0 = r4;
0x0001564c ldr.w r1, [r8, 0xd0] | r1 = *((r8 + 0xd0));
0x00015650 sub.w sl, r3, fp | sl = r3 - fp;
0x00015654 add r1, sl | r1 += sl;
0x00015656 add r1, r6 | r1 += r6;
0x00015658 blx 0x6088 | r0 = fcn_00006088 ();
0x0001565c mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0001565e cbz r0, 0x156a6 | goto label_1;
| }
0x00015660 ldr.w r3, [r8, 0xd0] | r3 = *((r8 + 0xd0));
0x00015664 ldr.w r1, [r8, 0xcc] | r1 = *((r8 + 0xcc));
0x00015668 add sl, r3 | sl += r3;
0x0001566a add.w r2, sl, r6 | r2 = sl + r6;
0x0001566e blx 0x6064 | fcn_00006064 ();
0x00015672 mov r0, r5 | r0 = r5;
0x00015674 add sp, 0x14 |
0x00015676 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0001567a blx 0x62d0 | r0 = fcn_000062d0 ();
0x0001567e bic r1, r0, 0x20 | r1 = BIT_MASK (r0, 0x20);
0x00015682 sub.w ip, r0, 0x30 |
0x00015686 subs r1, 0x41 | r1 -= 0x41;
0x00015688 uxtb r3, r0 | r3 = (int8_t) r0;
0x0001568a cmp.w ip, 9 |
0x0001568e it hi |
| if (ip > 9) {
0x00015690 cmphi r1, 5 | __asm ("cmphi r1, 5");
| }
0x00015692 ite ls |
| if (ip > 9) {
0x00015694 movls r1, 1 | r1 = 1;
| }
| if (ip <= 9) {
0x00015696 movhi r1, 0 | r1 = 0;
| }
| if (ip >= 9) {
0x00015698 bls 0x156ae |
0x0001569a mov r5, r1 | r5 = r1;
0x0001569c add.w r4, r4, 0x16000 | r4 += 0x16000;
0x000156a0 movs r3, 4 | r3 = 4;
0x000156a2 str.w r3, [r4, 0x184] | __asm ("str.w r3, aav.0x000000ff");
| label_1:
0x000156a6 mov r0, r5 | r0 = r5;
0x000156a8 add sp, 0x14 |
0x000156aa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000156ae and r1, sl, 7 | r1 = sl & 7;
0x000156b2 cmp.w sl, 0x40 |
0x000156b6 add.w r1, r1, 9 | r1 += 9;
0x000156ba lsl.w r1, r1, 4 | r1 <<= 4;
0x000156be it hi |
| if (sl > 0x40) {
0x000156c0 uxtbhi r2, r1 | __asm ("uxtbhi r2, r1");
| }
| if (sl <= 0x40) {
0x000156c2 bhi 0x156cc |
0x000156c4 lsl.w r2, sl, 4 | r2 = sl << 4;
0x000156c8 and r2, r2, 0xf0 | r2 &= 0xf0;
| }
0x000156cc sub.w r1, r3, 0x30 | r1 = r3 - 0x30;
0x000156d0 cmp r3, 0x40 |
0x000156d2 uxtb r1, r1 | r1 = (int8_t) r1;
0x000156d4 and r3, r3, 7 | r3 &= 7;
0x000156d8 it hi |
| if (r3 <= 0x40) {
0x000156da addhi r1, r3, 9 | r1 = r3 + 9;
| }
0x000156de add r2, r1 | r2 += r1;
0x000156e0 adds r6, 1 | r6++;
0x000156e2 strb r2, [r5], 1 | *(r5) = r2;
| r5++;
0x000156e6 cmp r5, r7 |
0x000156e8 bne 0x1560a |
| } while (r5 != r7);
0x000156ea b 0x155dc | goto label_0;
| label_2:
0x000156ec mov.w r3, -1 | r3 = -1;
0x000156f0 movs r1, 0 | r1 = 0;
0x000156f2 mov r2, r3 | r2 = r3;
0x000156f4 blx 0x5cf8 | fcn_00005cf8 ();
0x000156f8 ldr.w r1, [r6, 0x190] | r1 = *((r6 + 0x190));
0x000156fc movs r3, 0 | r3 = 0;
0x000156fe str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
0x00015700 mov r2, r3 | r2 = r3;
0x00015702 mov r0, r4 | r0 = r4;
0x00015704 ldr r1, [r1, 0x18] | r1 = *((r1 + 0x18));
0x00015706 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0001570a blx 0x5d98 | r0 = fcn_00005d98 ();
0x0001570e mov r5, r0 | r5 = r0;
0x00015710 mov r0, r5 | r0 = r5;
0x00015712 add sp, 0x14 |
0x00015714 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00015718 movs r5, 0 | r5 = 0;
0x0001571a b 0x156a6 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x141dc */
| #include <stdint.h>
|
; (fcn) sym.soap_get_http_body () | void soap_get_http_body (int16_t arg1) {
| r0 = arg1;
| label_2:
0x00005c88 bx pc | return void (*pc)() ();
0x000141dc ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000141de push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000141e2 mov sl, r0 | sl = r0;
0x000141e4 ands r7, r3, 0x400 | r7 = r3 & 0x400;
| if (r7 != r3) {
0x000141e8 bne 0x1427e | goto label_4;
| }
0x000141ea and r3, r3, 3 | r3 &= 3;
0x000141ee add.w sb, r0, 0x3000 | sb = r0 + 0x3000;
0x000141f2 cmp r3, 3 |
| if (r3 != 3) {
0x000141f4 beq 0x141fe |
0x000141f6 ldr.w r7, [sb, 0xc8] | r7 = *((sb + 0xc8));
0x000141fa cmp r7, 0 |
| if (r7 == 0) {
0x000141fc beq 0x14290 | goto label_5;
| }
| }
| label_3:
0x000141fe movs r3, 0 | r3 = 0;
0x00014200 mov r4, r3 | r4 = r3;
0x00014202 str.w r3, [sb, 0xd4] | __asm ("str.w r3, [sb, 0xd4]");
| do {
| label_0:
0x00014206 movs r2, 0 | r2 = 0;
0x00014208 mov r0, sl | r0 = sl;
0x0001420a mov r1, r2 | r1 = r2;
0x0001420c blx 0x6514 | r0 = fcn_00006514 ();
0x00014210 cmp r0, 0 |
| if (r0 != 0) {
0x00014212 bne 0x14290 | goto label_5;
| }
0x00014214 ldr.w r2, [sb, 0xd4] | r2 = *((sb + 0xd4));
0x00014218 ldr.w r3, [sb, 0xd0] | r3 = *((sb + 0xd0));
0x0001421c ldr.w r6, [sb, 0xcc] | r6 = *((sb + 0xcc));
0x00014220 cmp r3, r2 |
0x00014222 str.w r3, [sb, 0xd4] | __asm ("str.w r3, [sb, 0xd4]");
0x00014226 add.w r5, r6, r2 | r5 = r6 + r2;
0x0001422a beq 0x14206 |
| } while (r3 == r2);
0x0001422c adds r4, 1 | r4++;
| if (r4 == 1) {
0x0001422e beq 0x14286 | goto label_6;
| }
0x00014230 subs.w r8, r7, 0 | r8 = r7 - 0;
0x00014234 it ne |
| if (r8 == r7) {
0x00014236 movne r8, 1 | r8 = 1;
| }
0x0001423a cmp r7, r4 |
0x0001423c ite hs |
| if (r7 < r4) {
0x0001423e movhs r2, 0 | r2 = 0;
| }
| if (r7 >= r4) {
0x00014240 andlo r2, r8, 1 | r2 = r8 & 1;
| }
| if (r2 != 0) {
0x00014244 cbnz r2, 0x1426c | goto label_7;
| }
0x00014246 add r6, r3 | r6 += r3;
0x00014248 b 0x14262 | goto label_8;
| label_1:
0x0001424a strb r0, [r5], 1 | *(r5) = r0;
| r5++;
0x0001424e cmp r5, r6 |
| if (r5 == r6) {
0x00014250 beq 0x14206 | goto label_0;
| }
0x00014252 adds r4, 1 | r4++;
| if (r4 == 1) {
0x00014254 beq 0x14286 | goto label_6;
| }
0x00014256 cmp r7, r4 |
0x00014258 ite hs |
| if (r7 < r4) {
0x0001425a movhs r3, 0 | r3 = 0;
| }
| if (r7 >= r4) {
0x0001425c andlo r3, r8, 1 | r3 = r8 & 1;
| }
| if (r3 != 0) {
0x00014260 cbnz r3, 0x1426c | goto label_7;
| }
| label_8:
0x00014262 mov r0, sl | r0 = sl;
0x00014264 blx 0x61b8 | r0 = snprintf_chk ()
0x00014268 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0001426a bne 0x1424a | goto label_1;
| }
| label_7:
0x0001426c movs r3, 0 | r3 = 0;
0x0001426e mov r0, sl | r0 = sl;
0x00014270 strb r3, [r5] | *(r5) = r3;
0x00014272 ldr.w r1, [sb, 0xcc] | r1 = *((sb + 0xcc));
0x00014276 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001427a b.w 0x5c88 | goto label_2;
| label_4:
0x0001427e movs r7, 0 | r7 = 0;
0x00014280 add.w sb, r0, 0x3000 | sb = r0 + 0x3000;
0x00014284 b 0x141fe | goto label_3;
| label_6:
0x00014286 add.w sl, sl, 0x16000 | sl += 0x16000;
0x0001428a movs r3, 0x14 | r3 = 0x14;
0x0001428c str.w r3, [sl, 0x184] | __asm ("str.w r3, aav.0x000000ff");
| label_5:
0x00014290 movs r0, 0 | r0 = 0;
0x00014292 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x1343c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.soap_get_mime_attachment () | void soap_get_mime_attachment (int16_t arg_0h, uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
0x0001343c ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0001343e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00013442 sub sp, 0x24 |
0x00013444 lsls r2, r3, 0x17 | r2 = r3 << 0x17;
| if (r2 >= r3) {
0x00013446 bpl.w 0x13634 | goto label_10;
| }
0x0001344a add.w r3, r0, 0x16000 | r3 += arg_0hx16000;
0x0001344e mov sl, r0 | sl = r0;
0x00013450 str r3, [sp, 0xc] | var_ch = r3;
0x00013452 ldr.w r3, [r3, 0x1d4] | r3 = *((r3 + 0x1d4));
0x00013456 str r3, [sp, 0x18] | var_18h = r3;
0x00013458 cmp r3, 0 |
| if (r3 == 0) {
0x0001345a beq.w 0x135ae | goto label_14;
| }
0x0001345e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00013460 ldr r6, [sp, 0x18] | r6 = var_18h;
0x00013462 ldr.w r3, [r3, 0x1d0] | r3 = *((r3 + 0x1d0));
0x00013466 cmp r3, r6 |
| if (r3 == r6) {
0x00013468 beq.w 0x135be | goto label_15;
| }
0x0001346c add.w r3, r0, 0x3000 | r3 += arg_0hx3000;
0x00013470 ldr.w r5, [r3, 0x84] | r5 = *((r3 + 0x84));
0x00013474 cmp r5, 0 |
| if (r5 == 0) {
0x00013476 beq.w 0x135be | goto label_15;
| }
0x0001347a ldr r4, [r6, 0x18] | r4 = *((r6 + 0x18));
0x0001347c ldrd r2, r3, [r6, 0xc] | __asm ("ldrd r2, r3, [r6, 0xc]");
0x00013480 str r4, [sp, 4] | var_4h = r4;
0x00013482 ldr r4, [r6, 0x20] | r4 = *((r6 + 0x20));
0x00013484 str r4, [sp] | *(sp) = r4;
0x00013486 blx r5 | r0 = uint32_t (*r5)(uint32_t) (r2);
0x00013488 mov r1, r0 | r1 = r0;
0x0001348a str r0, [r6, 4] | *((r6 + 4)) = r0;
0x0001348c cmp r0, 0 |
| if (arg_0h == ) {
0x0001348e beq.w 0x1362a | goto label_16;
| }
| label_4:
0x00013492 ldr r2, [pc, 0x2d0] |
0x00013494 movs r3, 0 | r3 = 0;
0x00013496 add.w fp, sl, 0x13000 |
0x0001349a mov r5, r3 | r5 = r3;
0x0001349c add.w fp, fp, 0xd8 |
0x000134a0 mov r6, r3 | r6 = r3;
0x000134a2 mov sb, r3 | sb = r3;
0x000134a4 add r2, pc | r2 = 0x26c0e;
0x000134a6 str r3, [sp, 0x10] | var_10h = r3;
0x000134a8 str r2, [sp, 0x1c] | var_1ch = r2;
| label_1:
0x000134aa cmp r1, 0 |
| if (r1 == 0) {
0x000134ac beq 0x1358e | goto label_17;
| }
| label_2:
0x000134ae add.w r4, sl, 0x13400 | r4 = sl + 0x13400;
0x000134b2 adds r4, 0xd8 | r4 += 0xd8;
| label_3:
0x000134b4 mov r0, r5 | r0 = r5;
0x000134b6 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000134b8 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x000134ba movs r7, 0 | r7 = 0;
0x000134bc mov r3, sb | r3 = sb;
0x000134be b 0x134d8 | goto label_0;
0x000134c0 ldrb r1, [r6], 1 | r1 = *(r6);
| r6++;
0x000134c4 adds r7, 1 | r7++;
0x000134c6 cmp.w r7, 0x400 |
0x000134ca add.w r8, r4, 1 | r8 = r4 + 1;
0x000134ce add.w r3, r3, -1 | r3 += -1;
0x000134d2 strb r1, [r4] | *(r4) = r1;
0x000134d4 mov r4, r8 | r4 = r8;
| if (r7 == 0x400) {
0x000134d6 beq 0x13558 | goto label_18;
| }
| label_0:
0x000134d8 lsrs r4, r6, 0x16 | r4 = r6 >> 0x16;
0x000134da subs r1, 0 |
0x000134dc adds r1, 0x2d | r1 += 0x2d;
0x000134de cmp r5, 0 |
0x000134e0 adds r1, 0x33 | r1 += 0x33;
| label_7:
0x000134e2 adds r2, 0x54 | r2 += 0x54;
0x000134e4 subs r2, 0x33 | r2 -= 0x33;
0x000134e6 subs r1, 0x35 | r1 -= 0x35;
0x000134e8 adds r5, 0x3a | r5 += 0x3a;
0x000134ea ldrh r1, [r7, r0] | r1 = *((r7 + r0));
0x000134ec blx 0xfff13cb0 | void (*0xfff13cb0)(uint32_t, uint32_t) (r1, r2);
0x000134f0 ldr r0, [r5] | r0 = *(r5);
0x000134f2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000134f4 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x000134f8 ldr.w r1, [r3, 0x1c4] | r1 = *((r3 + 0x1c4));
| if (r1 != 0) {
0x000134fc cbz r1, 0x1350c |
0x000134fe mov.w r3, 0x400 | r3 = 0x400;
0x00013502 mov.w r2, 0x3fc | r2 = 0x3fc;
0x00013506 mov r0, fp | r0 = fp;
0x00013508 blx 0x5dc8 | fcn_00005dc8 ();
| }
0x0001350c mov sb, fp | sb = fp;
| do {
0x0001350e mov r0, sl | r0 = sl;
0x00013510 blx 0x61b8 | snprintf_chk ()
0x00013514 mov r1, sb | r1 = sb;
0x00013516 ldrb r2, [sb], 1 | r2 = *(sb);
| sb++;
0x0001351a cmp r2, r0 |
0x0001351c beq 0x1350e |
| } while (r2 == r0);
0x0001351e adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00013520 beq 0x13614 | goto label_19;
| }
0x00013522 cmp r2, 0 |
| if (r2 == 0) {
0x00013524 beq.w 0x13640 | goto label_20;
| }
0x00013528 sub.w ip, r0, 0xd |
0x0001352c sub.w r3, r1, fp | r3 = r1 - fp;
0x00013530 clz ip, ip |
0x00013534 strb r0, [r1] | *(r1) = r0;
0x00013536 lsr.w ip, ip, 5 |
0x0001353a adds r3, 1 | r3++;
0x0001353c movs r0, 0xd | r0 = 0xd;
0x0001353e sxth.w r2, ip | __asm ("sxth.w r2, ip");
0x00013542 sub.w r3, r3, ip | r3 -= ip;
0x00013546 mov r1, r0 | r1 = r0;
| label_6:
0x00013548 adds r7, 1 | r7++;
0x0001354a add.w r8, r4, 1 | r8 = r4 + 1;
0x0001354e cmp.w r7, 0x400 |
0x00013552 strb r1, [r4] | *(r4) = r1;
0x00013554 mov r4, r8 | r4 = r8;
| if (r7 != 0x400) {
0x00013556 bne 0x134d8 | goto label_0;
| }
| label_18:
0x00013558 mov sb, r3 | sb = r3;
0x0001355a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0001355c mov r5, r0 | r5 = r0;
0x0001355e str r2, [sp, 0x10] | var_10h = r2;
0x00013560 ldr r1, [r3, 4] | r1 = *((r3 + 4));
| if (r1 == 0) {
0x00013562 cbz r1, 0x1358e | goto label_17;
| }
0x00013564 add.w r3, sl, 0x3000 | r3 = sl + 0x3000;
0x00013568 ldr.w r4, [r3, 0x94] | r4 = *((r3 + 0x94));
0x0001356c cmp r4, 0 |
| if (r4 == 0) {
0x0001356e beq 0x134aa | goto label_1;
| }
0x00013570 add.w r2, sl, 0x13400 | r2 = sl + 0x13400;
0x00013574 mov r3, r7 | r3 = r7;
0x00013576 adds r2, 0xd8 | r2 += 0xd8;
0x00013578 mov r0, sl | r0 = sl;
0x0001357a blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0001357c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0001357e str.w r0, [r2, 0x184] | __asm ("str.w r0, aav.0x000000ff");
0x00013582 cmp r0, 0 |
| if (r0 != 0) {
0x00013584 bne 0x13642 | goto label_21;
| }
0x00013586 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00013588 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0001358a cmp r1, 0 |
| if (r1 != 0) {
0x0001358c bne 0x134ae | goto label_2;
| }
| label_17:
0x0001358e mov.w r2, 0x400 | r2 = 0x400;
0x00013592 movs r1, 0 | r1 = 0;
0x00013594 mov r0, sl | r0 = sl;
0x00013596 blx 0x5a20 | r0 = loc_imp_soap_serializefault ();
0x0001359a mov r4, r0 | r4 = r0;
0x0001359c cmp r0, 0 |
| if (r0 != 0) {
0x0001359e bne 0x134b4 | goto label_3;
| }
| label_5:
0x000135a0 movs r2, 0 | r2 = 0;
0x000135a2 movs r3, 0x14 | r3 = 0x14;
0x000135a4 str r2, [sp, 0x18] | var_18h = r2;
0x000135a6 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000135a8 str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000135ac b 0x13622 | goto label_11;
| label_14:
0x000135ae blx 0x5a74 | r0 = X509_STORE_CTX_set_error ();
0x000135b2 cmp r0, 0 |
| if (r0 != 0) {
0x000135b4 bne 0x13634 | goto label_10;
| }
0x000135b6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000135b8 ldr.w r3, [r3, 0x1d4] | r3 = *((r3 + 0x1d4));
0x000135bc str r3, [sp, 0x18] | var_18h = r3;
| label_15:
0x000135be ldr r3, [sp, 0x18] | r3 = var_18h;
0x000135c0 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000135c2 cmp r1, 0 |
| if (r1 != 0) {
0x000135c4 bne.w 0x13492 | goto label_4;
| }
| label_9:
0x000135c8 mov r0, sl | r0 = sl;
0x000135ca blx 0x6680 | r0 = X509_free ();
0x000135ce cmp r0, 0 |
| if (r0 == 0) {
0x000135d0 beq 0x135a0 | goto label_5;
| }
0x000135d2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000135d4 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000135d6 b 0x13492 | goto label_4;
0x000135d8 add.w sb, sl, 0x3000 | sb = sl + 0x3000;
0x000135dc ldrd ip, r0, [sb, 0xb0] | __asm ("ldrd ip, r0, [sb, 0xb0]");
0x000135e0 cmp ip, r0 |
| if (ip >= r0) {
0x000135e2 bhs 0x135fe | goto label_22;
| }
| label_8:
0x000135e4 add.w r0, ip, 1 | r0 = ip + 1;
0x000135e8 movw r1, 0x30d8 | r1 = 0x30d8;
0x000135ec add ip, sl |
0x000135ee str.w r0, [sb, 0xb0] | __asm ("str.w r0, [sb, 0xb0]");
0x000135f2 ldrb.w r1, [ip, r1] | r1 = *((ip + r1));
0x000135f6 cmp r1, 0xd |
0x000135f8 mov r0, r1 | r0 = r1;
| if (r1 != 0xd) {
0x000135fa bne 0x13548 | goto label_6;
| }
0x000135fc b 0x134e2 | goto label_7;
| label_22:
0x000135fe mov r0, sl | r0 = sl;
0x00013600 strd r3, r2, [sp, 0x10] | __asm ("strd r3, r2, [var_10h]");
0x00013604 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 == 0) {
0x00013608 cbnz r0, 0x13614 |
0x0001360a ldr.w ip, [sb, 0xb0] | ip = *((sb + 0xb0));
0x0001360e ldrd r3, r2, [sp, 0x10] | __asm ("ldrd r3, r2, [var_10h]");
0x00013612 b 0x135e4 | goto label_8;
| }
| label_19:
0x00013614 movs r2, 0 | r2 = 0;
0x00013616 mov.w r3, -1 | r3 = -1;
0x0001361a str r2, [sp, 0x18] | var_18h = r2;
0x0001361c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0001361e str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
| label_11:
0x00013622 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00013624 add sp, 0x24 |
0x00013626 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x0001362a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001362c ldr.w r3, [r3, 0x184] | r3 = *((r3 + 0x184));
0x00013630 cmp r3, 0 |
| if (r3 == 0) {
0x00013632 beq 0x135c8 | goto label_9;
| }
| do {
| label_10:
0x00013634 movs r3, 0 | r3 = 0;
0x00013636 str r3, [sp, 0x18] | var_18h = r3;
0x00013638 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0001363a add sp, 0x24 |
0x0001363c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x00013640 mov r5, r0 | r5 = r0;
| label_21:
0x00013642 movs r3, 0 | r3 = 0;
0x00013644 strb.w r3, [r8] | *(r8) = r3;
0x00013648 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0001364a ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x0001364c cmp r4, 0 |
| if (r4 == 0) {
0x0001364e beq 0x1373a | goto label_23;
| }
0x00013650 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00013652 ldr.w r3, [r1, 0x184] | r3 = *((r1 + 0x184));
| if (r3 == 0) {
0x00013656 cbnz r3, 0x13686 |
0x00013658 add.w r6, sl, 0x3000 | r6 = sl + 0x3000;
0x0001365c ldr.w r8, [r6, 0x94] | r8 = *((r6 + 0x94));
0x00013660 cmp.w r8, 0 |
| if (r8 == 0) {
0x00013664 beq 0x1375a | goto label_24;
| }
0x00013666 add.w r2, sl, 0x13400 | r2 = sl + 0x13400;
0x0001366a mov r3, r7 | r3 = r7;
0x0001366c mov r1, r4 | r1 = r4;
0x0001366e adds r2, 0xd8 | r2 += 0xd8;
0x00013670 lsls r0, r0, 4 | r0 <<= 4;
0x00013672 movs r0, r0 |
0x00013674 ldr.w r3, [r6, 0x8c] | r3 = *((r6 + 0x8c));
0x00013678 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0001367a str.w r0, [r1, 0x184] | __asm ("str.w r0, aav.0x000000ff");
| if (r3 == 0) {
0x0001367e cbz r3, 0x1369e | goto label_25;
| }
0x00013680 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00013682 ldr r4, [r2, 4] | r4 = *((r2 + 4));
0x00013684 b 0x13692 |
| } else {
0x00013686 add.w r3, sl, 0x3000 | r3 = sl + 0x3000;
0x0001368a ldr.w r3, [r3, 0x8c] | r3 = *((r3 + 0x8c));
0x0001368e cmp r3, 0 |
0x00013690 beq 0x13634 |
| } while (r3 == 0);
| }
| label_13:
0x00013692 mov r0, sl | r0 = sl;
0x00013694 mov r1, r4 | r1 = r4;
0x00013696 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
0x00013698 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001369a ldr.w r0, [r3, 0x184] | r0 = *((r3 + 0x184));
| label_25:
0x0001369e cmp r0, 0 |
| if (r0 != 0) {
0x000136a0 bne 0x13634 | goto label_10;
| }
| label_12:
0x000136a2 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000136a4 mov r0, sl | r0 = sl;
0x000136a6 bl 0x12810 | fcn_00012810 (r0, r1);
0x000136aa cmp r5, 0x2d |
| if (r5 == 0x2d) {
0x000136ac beq 0x136fa | goto label_26;
| }
0x000136ae cmp r5, 0xd |
| if (r5 == 0xd) {
0x000136b0 beq 0x136d0 | goto label_27;
| }
0x000136b2 cmp r5, 0x20 |
| if (r5 < 0x20) {
0x000136b4 bls 0x136bc | goto label_28;
| }
0x000136b6 b 0x136e6 | goto label_29;
| do {
0x000136b8 cmp r0, 0x20 |
| if (r0 > 0x20) {
0x000136ba bhi 0x136e6 | goto label_29;
| }
| label_28:
0x000136bc mov r0, sl | r0 = sl;
0x000136be blx 0x61b8 | r0 = snprintf_chk ()
0x000136c2 cmp r0, 0xd |
0x000136c4 it ne |
| if (r0 != 0xd) {
0x000136c6 cmpne r0, -1 | __asm ("cmpne r0, -1");
| }
0x000136ca bne 0x136b8 |
| } while (r0 != 0xd);
0x000136cc cmp r0, 0xd |
| if (r0 != 0xd) {
0x000136ce bne 0x136e6 | goto label_29;
| }
| label_27:
0x000136d0 mov r0, sl | r0 = sl;
0x000136d2 blx 0x61b8 | r0 = snprintf_chk ()
0x000136d6 cmp r0, 0xa |
| if (r0 != 0xa) {
0x000136d8 bne 0x136e6 | goto label_29;
| }
0x000136da mov r0, sl | r0 = sl;
0x000136dc blx 0x5a74 | r0 = X509_STORE_CTX_set_error ();
0x000136e0 cmp r0, 0 |
| if (r0 == 0) {
0x000136e2 beq 0x13622 | goto label_11;
| }
0x000136e4 b 0x13634 | goto label_10;
| do {
| label_29:
0x000136e6 movs r2, 0 | r2 = 0;
0x000136e8 movs r3, 0x24 | r3 = 0x24;
0x000136ea str r2, [sp, 0x18] | var_18h = r2;
0x000136ec ldr r2, [sp, 0xc] | r2 = var_ch;
0x000136ee ldr r0, [sp, 0x18] | r0 = var_18h;
0x000136f0 str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000136f4 add sp, 0x24 |
0x000136f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_26:
0x000136fa mov r0, sl | r0 = sl;
0x000136fc blx 0x61b8 | r0 = snprintf_chk ()
0x00013700 cmp r0, 0x2d |
0x00013702 bne 0x136e6 |
| } while (r0 != 0x2d);
0x00013704 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x00013708 bic r2, r3, 0x100 | r2 = BIT_MASK (r3, 0x100);
0x0001370c lsls r3, r3, 3 | r3 <<= 3;
0x0001370e str.w r2, [sl, 4] | __asm ("str.w r2, [sl, 4]");
| if (r3 >= r3) {
0x00013712 bpl 0x13622 | goto label_11;
| }
0x00013714 mov r0, sl | r0 = sl;
0x00013716 blx 0x6288 | r0 = fcn_00006288 ();
0x0001371a cmp r0, 0 |
| if (r0 == 0) {
0x0001371c beq 0x13622 | goto label_11;
| }
0x0001371e ldr r2, [sp, 0xc] | r2 = var_ch;
0x00013720 mov r0, sl | r0 = sl;
0x00013722 ldrsh.w r3, [r2, 0x154] | r3 = *((r2 + 0x154));
0x00013726 cmp r3, 0 |
0x00013728 itt lt |
| if (r3 >= 0) {
0x0001372a movlt r3, 0 | r3 = 0;
| }
| if (r3 < 0) {
0x0001372c strhlt r3, [r2, 0x154] | __asm ("strhlt r3, aav.0x000000ff");
| }
0x00013730 movs r3, 0 | r3 = 0;
0x00013732 str r3, [sp, 0x18] | var_18h = r3;
0x00013734 blx 0x6054 | fcn_00006054 ();
0x00013738 b 0x13622 | goto label_11;
| label_23:
0x0001373a adds r2, r7, 1 | r2 = r7 + 1;
0x0001373c mov r1, r4 | r1 = r4;
0x0001373e mov r0, sl | r0 = sl;
0x00013740 blx 0x6334 | fcn_00006334 ();
0x00013744 ldr r6, [sp, 0x18] | r6 = var_18h;
0x00013746 subs r0, 1 | r0--;
0x00013748 mov r3, r4 | r3 = r4;
0x0001374a mov r2, r4 | r2 = r4;
0x0001374c mov r1, r4 | r1 = r4;
0x0001374e str r0, [r6, 8] | *((r6 + 8)) = r0;
0x00013750 mov r0, sl | r0 = sl;
0x00013752 blx 0x63f8 | PEM_read_bio_DHparams ();
0x00013756 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00013758 b 0x136a2 | goto label_12;
| label_24:
0x0001375a ldr.w r3, [r6, 0x8c] | r3 = *((r6 + 0x8c));
0x0001375e cmp r3, 0 |
| if (r3 != 0) {
0x00013760 bne 0x13692 | goto label_13;
| }
0x00013762 b 0x136a2 | goto label_12;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x125ec */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) sym.soap_getdimehdr () | void soap_getdimehdr (int16_t arg1) {
| int16_t var_0h;
| int16_t var_1h;
| int16_t var_2h;
| int16_t var_4h;
| int16_t var_6h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
0x000125ec ldr r2, [pc, 0x174] |
0x000125ee ldr r3, [pc, 0x178] | r3 = *(0x1276a);
0x000125f0 push.w {r4, r5, r6, r7, r8, lr} |
0x000125f4 sub sp, 0x10 |
0x000125f6 add r2, pc | r2 = 0x24d5e;
0x000125f8 mov r4, r0 | r4 = r0;
0x000125fa ldr r3, [r2, r3] |
0x000125fc ldr r3, [r3] | r3 = *(0x24d5e);
0x000125fe str r3, [sp, 0xc] | var_ch = r3;
0x00012600 mov.w r3, 0 | r3 = 0;
0x00012604 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00012606 lsls r2, r3, 0x18 | r2 = r3 << 0x18;
| if (r2 >= r3) {
0x00012608 bpl.w 0x12716 | goto label_5;
| }
0x0001260c add.w r7, r0, 0x16000 | r7 = r0 + 0x16000;
0x00012610 ldr.w r3, [r7, 0x1a0] | r3 = *((r7 + 0x1a0));
0x00012614 cmp r3, 0 |
| if (r3 != 0) {
0x00012616 bne 0x126d4 | goto label_6;
| }
0x00012618 ldr.w r3, [r7, 0x19c] | r3 = *((r7 + 0x19c));
0x0001261c cmp r3, 0 |
| if (r3 != 0) {
0x0001261e bne 0x126d4 | goto label_6;
| }
0x00012620 mov r5, sp | r5 = sp;
0x00012622 add r6, sp, 0xc | r6 += var_ch;
| do {
0x00012624 mov r0, r4 | r0 = r4;
0x00012626 blx 0x61b8 | r0 = snprintf_chk ()
0x0001262a adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0001262c beq 0x12724 | goto label_7;
| }
0x0001262e strb r0, [r5], 1 | *(r5) = r0;
| r5++;
0x00012632 cmp r5, r6 |
0x00012634 bne 0x12624 |
| } while (r5 != r6);
0x00012636 ldrb.w r3, [sp] | r3 = *(sp);
0x0001263a and r2, r3, 0xf8 | r2 = r3 & 0xf8;
0x0001263e cmp r2, 8 |
0x00012640 ittt ne |
| if (r2 == 8) {
0x00012642 movne r3, 0x22 | r3 = 0x22;
| }
| if (r2 == 8) {
0x00012644 movne r5, r3 | r5 = r3;
| }
| if (r2 == 8) {
0x00012646 strne r3, [r7, 0x184] | *((r7 + 0x184)) = r3;
| }
| if (r2 != 8) {
0x0001264a bne 0x126fa | goto label_0;
| }
0x0001264c ldrb.w r2, [sp, 1] | r2 = var_1h;
0x00012650 and r3, r3, 7 | r3 &= 7;
0x00012654 ldrh.w r1, [sp, 2] | r1 = var_2h;
0x00012658 ldrh.w r6, [sp, 4] | r6 = var_4h;
0x0001265c bic r2, r2, 0xf | r2 = BIT_MASK (r2, 0xf);
0x00012660 ldrh.w r8, [sp, 6] | r8 = var_6h;
0x00012664 orrs r3, r2 | r3 |= r2;
0x00012666 rev16 r1, r1 | __asm ("rev16 r1, r1");
0x00012668 strb.w r3, [r7, 0x1a4] | *((r7 + 0x1a4)) = r3;
0x0001266c uxth r1, r1 | r1 = (int16_t) r1;
0x0001266e ldr r3, [sp, 8] | r3 = var_8h;
0x00012670 rev16 r6, r6 | __asm ("rev16 r6, r6");
0x00012672 rev16.w r8, r8 | __asm ("rev16.w r8, r8");
0x00012676 uxth r6, r6 | r6 = (int16_t) r6;
0x00012678 uxth.w r8, r8 | r8 = (int16_t) r8;
0x0001267c rev r3, r3 | r3 = SWAP32 (r3);
0x0001267e str.w r3, [r7, 0x198] | __asm ("str.w r3, aav.0x000000ff");
0x00012682 cmp r1, 0 |
| if (r1 == 0) {
0x00012684 beq 0x1273e | goto label_8;
| }
0x00012686 mov r0, r4 | r0 = r4;
0x00012688 bl 0xa594 | fcn_0000a594 (r0, r1);
0x0001268c str.w r0, [r7, 0x1b4] | __asm ("str.w r0, aav.0x000000ff");
0x00012690 cmp r0, 0 |
| if (r0 == 0) {
0x00012692 beq 0x12742 | goto label_9;
| }
| label_2:
0x00012694 cmp r6, 0 |
| if (r6 == 0) {
0x00012696 beq 0x1274c | goto label_10;
| }
0x00012698 mov r1, r6 | r1 = r6;
0x0001269a mov r0, r4 | r0 = r4;
0x0001269c bl 0xa594 | fcn_0000a594 (r0, r1);
0x000126a0 str.w r0, [r7, 0x1ac] | __asm ("str.w r0, aav.0x000000ff");
0x000126a4 cmp r0, 0 |
| if (r0 == 0) {
0x000126a6 beq 0x12750 | goto label_11;
| }
0x000126a8 cmp.w r8, 0 |
| if (r8 == 0) {
0x000126ac beq 0x12730 | goto label_4;
| }
| label_3:
0x000126ae mov r1, r8 | r1 = r8;
0x000126b0 mov r0, r4 | r0 = r4;
0x000126b2 bl 0xa594 | fcn_0000a594 (r0, r1);
0x000126b6 str.w r0, [r7, 0x1b0] | __asm ("str.w r0, aav.0x000000ff");
0x000126ba cmp r0, 0 |
| if (r0 == 0) {
0x000126bc beq 0x12734 | goto label_12;
| }
| label_1:
0x000126be ldrb.w r5, [r7, 0x1a4] | r5 = *((r7 + 0x1a4));
0x000126c2 ands r5, r5, 2 | r5 &= 2;
| if (r5 == r5) {
0x000126c6 beq 0x126fa | goto label_0;
| }
0x000126c8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000126ca movs r5, 0 | r5 = 0;
0x000126cc bic r3, r3, 0x80 | r3 = BIT_MASK (r3, 0x80);
0x000126d0 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x000126d2 b 0x126fa | goto label_0;
| label_6:
0x000126d4 ldr.w r5, [r7, 0x198] | r5 = *((r7 + 0x198));
0x000126d8 mov r0, r4 | r0 = r4;
0x000126da blx 0x659c | r0 = fcn_0000659c ();
0x000126de mov r1, r0 | r1 = r0;
0x000126e0 mov r0, r4 | r0 = r4;
0x000126e2 subs r1, r5, r1 | r1 = r5 - r1;
0x000126e4 blx 0x6784 | r0 = fcn_00006784 ();
0x000126e8 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x000126ea cbnz r0, 0x12724 | goto label_7;
| }
0x000126ec mov r0, r4 | r0 = r4;
0x000126ee add.w r4, r4, 0x3000 | r4 += 0x3000;
0x000126f2 blx 0x61b8 | snprintf_chk ()
0x000126f6 str.w r0, [r4, 0xb8] | __asm ("str.w r0, [r4, 0xb8]");
| do {
| label_0:
0x000126fa ldr r2, [pc, 0x70] |
0x000126fc ldr r3, [pc, 0x68] | r3 = *(0x12768);
0x000126fe add r2, pc | r2 = 0x24e70;
0x00012700 ldr r3, [r2, r3] | r3 = *(0x24e70);
0x00012702 ldr r2, [r3] | r2 = *(0x24e70);
0x00012704 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012706 eors r2, r3 | r2 ^= r3;
0x00012708 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001270c bne 0x12760 | goto label_13;
| }
0x0001270e mov r0, r5 | r0 = r5;
0x00012710 add sp, 0x10 |
0x00012712 pop.w {r4, r5, r6, r7, r8, pc} |
| label_5:
0x00012716 movs r3, 0x23 | r3 = 0x23;
0x00012718 add.w r4, r0, 0x16000 | r4 = r0 + 0x16000;
0x0001271c mov r5, r3 | r5 = r3;
0x0001271e str.w r3, [r4, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x00012722 b 0x126fa |
| } while (1);
| label_7:
0x00012724 mov.w r3, -1 | r3 = -1;
0x00012728 mov r5, r3 | r5 = r3;
0x0001272a str.w r3, [r7, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x0001272e b 0x126fa | goto label_0;
| label_4:
0x00012730 str.w r8, [r7, 0x1b0] | __asm ("str.w r8, aav.0x000000ff");
| label_12:
0x00012734 ldr.w r5, [r7, 0x184] | r5 = *((r7 + 0x184));
0x00012738 cmp r5, 0 |
| if (r5 == 0) {
0x0001273a beq 0x126be | goto label_1;
| }
0x0001273c b 0x126fa | goto label_0;
| label_8:
0x0001273e str.w r1, [r7, 0x1b4] | __asm ("str.w r1, aav.0x000000ff");
| label_9:
0x00012742 ldr.w r5, [r7, 0x184] | r5 = *((r7 + 0x184));
0x00012746 cmp r5, 0 |
| if (r5 == 0) {
0x00012748 beq 0x12694 | goto label_2;
| }
0x0001274a b 0x126fa | goto label_0;
| label_10:
0x0001274c str.w r6, [r7, 0x1ac] | __asm ("str.w r6, aav.0x000000ff");
| label_11:
0x00012750 ldr.w r5, [r7, 0x184] | r5 = *((r7 + 0x184));
0x00012754 cmp r5, 0 |
| if (r5 != 0) {
0x00012756 bne 0x126fa | goto label_0;
| }
0x00012758 cmp.w r8, 0 |
| if (r8 != 0) {
0x0001275c bne 0x126ae | goto label_3;
| }
0x0001275e b 0x12730 | goto label_4;
| label_13:
0x00012760 blx 0x63ec | SSL_get_verify_result ();
0x00012764 adr r4, 0x3d8 | r4 = 0x3d8;
0x00012766 movs r1, r0 | r1 = r0;
0x00012768 lsls r0, r0, 0x14 | r0 <<= 0x14;
0x0001276a movs r0, r0 |
0x0001276c adr r3, 0x3b8 | r3 = 0x3b8;
0x0001276e movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x12150 */
| #include <stdint.h>
|
; (fcn) sym.soap_getline () | void soap_getline (int16_t arg_1h, int16_t arg1, int16_t arg2, uint32_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00012150 svcmi 0xf8e92d | __asm ("svcmi aav.0x000000ff");
0x00012154 mov fp, r2 |
0x00012156 add.w sb, fp, -1 | sb = fp + -1;
0x0001215a mov sl, r0 | sl = r0;
0x0001215c cmp.w sb, 0 |
0x00012160 mov.w r0, 0 | r0 = 0;
0x00012164 mov r5, r2 | r5 = r2;
0x00012166 mov r4, r1 | r4 = r1;
0x00012168 mov r7, r0 | r7 = r0;
0x0001216a add.w r6, sl, 0x3000 | r6 = sl + 0x3000;
0x0001216e movw r8, 0x30d8 | r8 = 0x30d8;
| if (sb <= 0) {
0x00012172 ble 0x12196 | goto label_3;
| }
| do {
0x00012174 mov r0, sl | r0 = sl;
0x00012176 blx 0x61b8 | r0 = snprintf_chk ()
0x0001217a cmp r0, 0xa |
0x0001217c it ne |
| if (r0 != 0xa) {
0x0001217e cmpne r0, 0xd | __asm ("cmpne r0, 0xd");
| }
| if (r0 == 0xa) {
0x00012180 beq 0x12196 | goto label_3;
| }
0x00012182 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x00012184 beq 0x121f0 | goto label_4;
| }
0x00012186 strb r0, [r4], 1 | *(r4) = r0;
| r4++;
| label_0:
0x0001218a mov fp, sb |
0x0001218c add.w sb, fp, -1 | sb = fp + -1;
0x00012190 cmp.w sb, 0 |
0x00012194 bgt 0x12174 |
| } while (sb > 0);
| label_3:
0x00012196 cmp r0, 0xa |
| if (r0 == 0xa) {
0x00012198 beq 0x121be | goto label_5;
| }
0x0001219a mov r0, sl | r0 = sl;
0x0001219c blx 0x61b8 | r0 = snprintf_chk ()
0x000121a0 cmp r0, 0xa |
| if (r0 == 0xa) {
0x000121a2 beq 0x121be | goto label_5;
| }
0x000121a4 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x000121a6 beq 0x121f0 | goto label_4;
| }
| label_1:
0x000121a8 cmp.w sb, 0 |
| if (sb >= 0) {
0x000121ac bge 0x1218a | goto label_0;
| }
0x000121ae movs r3, 0x16 | r3 = 0x16;
0x000121b0 add.w sl, sl, 0x16000 | sl += 0x16000;
0x000121b4 mov r0, r3 | r0 = r3;
0x000121b6 str.w r3, [sl, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000121ba pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x000121be cmp fp, r5 |
0x000121c0 strb r7, [r4] | *(r4) = r7;
| if (fp == r5) {
0x000121c2 beq 0x121da | goto label_6;
| }
0x000121c4 ldrd r3, r2, [r6, 0xb0] | __asm ("ldrd r3, r2, [r6, 0xb0]");
0x000121c8 cmp r3, r2 |
| if (r3 >= r2) {
0x000121ca bhs 0x121e0 | goto label_7;
| }
| label_2:
0x000121cc add r3, sl | r3 += sl;
0x000121ce ldrb.w r0, [r3, r8] | r0 = *((r3 + r8));
0x000121d2 cmp r0, 0x20 |
0x000121d4 it ne |
| if (r0 == 0x20) {
0x000121d6 cmpne r0, 9 | __asm ("cmpne r0, 9");
| goto label_8;
| }
| if (r0 == 0x20) {
| label_8:
0x000121d8 beq 0x121a8 | goto label_1;
| }
| do {
| label_6:
0x000121da movs r0, 0 | r0 = 0;
0x000121dc pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x000121e0 mov r0, sl | r0 = sl;
0x000121e2 blx 0x5ebc | r0 = fcn_00005ebc ();
0x000121e6 cmp r0, 0 |
0x000121e8 bne 0x121da |
| } while (r0 != 0);
0x000121ea ldr.w r3, [r6, 0xb0] | r3 = *((r6 + 0xb0));
0x000121ee b 0x121cc | goto label_2;
| label_4:
0x000121f0 mov.w r3, -1 | r3 = -1;
0x000121f4 add.w sl, sl, 0x16000 | sl += 0x16000;
0x000121f8 mov r0, r3 | r0 = r3;
0x000121fa str.w r3, [sl, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x000121fe pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0xc264 */
| #include <stdint.h>
|
; (fcn) sym.soap_peek_element () | void soap_peek_element (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
0x0000c264 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000c268 add.w r3, r0, 0x15000 | r3 = r0 + 0x15000;
0x0000c26c sub sp, 0x34 |
0x0000c26e mov r6, r0 | r6 = r0;
0x0000c270 str r3, [sp, 4] | var_4h = r3;
0x0000c272 ldrsh.w r3, [r3, 0x530] | r3 = *((r3 + 0x530));
0x0000c274 adds r5, 0x30 | r5 += 0x30;
| if (r3 != 0) {
0x0000c276 cbz r3, 0xc2a0 |
0x0000c278 add.w r3, r0, 0x13000 | r3 = r0 + 0x13000;
0x0000c27c movs r0, 0 | r0 = 0;
0x0000c27e ldrb.w r3, [r3, 0x8d8] | r3 = *((r3 + 0x8d8));
| if (r3 != 0) {
0x0000c282 cbz r3, 0xc28a |
| label_6:
0x0000c284 add sp, 0x34 |
0x0000c286 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
| label_2:
0x0000c28a add.w r3, r6, 0x16000 | r3 = r6 + 0x16000;
0x0000c28e str r3, [sp, 8] | var_8h = r3;
| label_3:
0x0000c290 ldr r2, [sp, 8] | r2 = var_8h;
0x0000c292 movs r3, 6 | r3 = 6;
0x0000c294 mov r0, r3 | r0 = r3;
0x0000c296 str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x0000c29a add sp, 0x34 |
0x0000c29c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0000c2a0 ldr r1, [sp, 4] | r1 = var_4h;
0x0000c2a2 movs r2, 1 | r2 = 1;
0x0000c2a4 add.w r5, r6, 0x3000 | r5 = r6 + 0x3000;
0x0000c2a8 strh.w r2, [r1, 0x530] | *((r1 + 0x530)) = r2;
0x0000c2ac add.w r2, r0, 0x13000 | r2 = r0 + 0x13000;
0x0000c2b0 strb.w r3, [r2, 0xcd8] | *((r2 + 0xcd8)) = r3;
0x0000c2b4 str r2, [sp, 0x10] | var_10h = r2;
0x0000c2b6 add.w r2, r0, 0x14000 | r2 = r0 + 0x14000;
0x0000c2ba strb.w r3, [r2, 0xd8] | *((r2 + 0xd8)) = r3;
0x0000c2be strb.w r3, [r2, 0x4d8] | *((r2 + 0x4d8)) = r3;
0x0000c2c2 strb.w r3, [r2, 0x8d8] | *((r2 + 0x8d8)) = r3;
0x0000c2c6 strb.w r3, [r2, 0xcd8] | *((r2 + 0xcd8)) = r3;
0x0000c2ca strb.w r3, [r1, 0xd8] | *((r1 + 0xd8)) = r3;
0x0000c2ce str.w r3, [r1, 0x4d8] | __asm ("str.w r3, aav.0x000000ff");
0x0000c2d2 strh.w r3, [r1, 0x528] | *((r1 + 0x528)) = r3;
0x0000c2d6 strh.w r3, [r1, 0x526] | *((r1 + 0x526)) = r3;
0x0000c2da movw r3, 0xffff | r3 = 0xffff;
0x0000c2de strh.w r3, [r1, 0x51c] | *((r1 + 0x51c)) = r3;
0x0000c2e2 str r2, [sp, 0x18] | var_18h = r2;
0x0000c2e4 blx 0x61b8 | r0 = snprintf_chk ()
0x0000c2e8 cmp r0, 0xef |
| if (r0 == 0xef) {
0x0000c2ea beq 0xc392 | goto label_36;
| }
| label_4:
0x0000c2ec str.w r0, [r5, 0xb8] | __asm ("str.w r0, [r5, 0xb8]");
| label_5:
0x0000c2f0 mov r0, r6 | r0 = r6;
0x0000c2f2 blx 0x62d0 | r0 = fcn_000062d0 ();
0x0000c2f6 cmp r0, 0x20 |
0x0000c2f8 mov r4, r0 | r4 = r0;
| if (r0 > 0x20) {
0x0000c2fa bhi 0xc352 | goto label_37;
| }
0x0000c2fc movs r3, 0 | r3 = 0;
0x0000c2fe str.w r3, [r5, 0xd4] | __asm ("str.w r3, [r5, 0xd4]");
| do {
| label_0:
0x0000c302 movs r2, 0 | r2 = 0;
0x0000c304 mov r0, r6 | r0 = r6;
0x0000c306 mov r1, r2 | r1 = r2;
0x0000c308 blx 0x6514 | r0 = fcn_00006514 ();
0x0000c30c cmp r0, 0 |
| if (r0 != 0) {
0x0000c30e bne 0xc3cc | goto label_10;
| }
0x0000c310 ldr.w r3, [r5, 0xd4] | r3 = *((r5 + 0xd4));
0x0000c314 ldr.w r7, [r5, 0xd0] | r7 = *((r5 + 0xd0));
0x0000c318 ldr.w r2, [r5, 0xcc] | r2 = *((r5 + 0xcc));
0x0000c31c str.w r7, [r5, 0xd4] | __asm ("str.w r7, [r5, 0xd4]");
0x0000c320 subs r7, r7, r3 | r7 -= r3;
0x0000c322 add.w r8, r2, r3 | r8 = r2 + r3;
0x0000c326 beq 0xc302 |
| } while (r7 == r7);
0x0000c328 mov sb, r8 | sb = r8;
0x0000c32a b 0xc332 | goto label_38;
| label_1:
0x0000c32c cmn.w r8, r3 |
| if (r8 == r3) {
0x0000c330 beq 0xc302 | goto label_0;
| }
| label_38:
0x0000c332 strb r4, [sb], 1 | *(sb) = r4;
| sb++;
0x0000c336 mov r0, r6 | r0 = r6;
0x0000c338 blx 0x62d0 | r0 = fcn_000062d0 ();
0x0000c33c cmp r0, 0x20 |
0x0000c33e mov r4, r0 | r4 = r0;
0x0000c340 sub.w r3, r7, sb | r3 = r7 - sb;
| if (r0 < 0x20) {
0x0000c344 bls 0xc32c | goto label_1;
| }
0x0000c346 movs r3, 0 | r3 = 0;
0x0000c348 strb.w r3, [sb] | *(sb) = r3;
0x0000c34c ldr.w r7, [r5, 0xcc] | r7 = *((r5 + 0xcc));
0x0000c350 b 0xc354 | goto label_39;
| label_37:
0x0000c352 movs r7, 0 | r7 = 0;
| label_39:
0x0000c354 adds r2, r4, 2 | r2 = r4 + 2;
| if (r2 == r4) {
0x0000c356 beq 0xc3d6 | goto label_40;
| }
0x0000c358 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000c35a movs r3, 0 | r3 = 0;
0x0000c35c strb.w r3, [r2, 0x8d8] | *((r2 + 0x8d8)) = r3;
0x0000c360 adds r3, r4, 1 | r3 = r4 + 1;
| if (r3 == r4) {
0x0000c362 beq.w 0xcafe | goto label_41;
| }
0x0000c366 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0000c368 str.w r4, [r5, 0xb8] | __asm ("str.w r4, [r5, 0xb8]");
0x0000c36c lsls r4, r3, 7 | r4 = r3 << 7;
| if (r4 >= r3) {
0x0000c36e bpl 0xc28a | goto label_2;
| }
0x0000c370 add.w r3, r6, 0x16000 | r3 = r6 + 0x16000;
0x0000c374 ldr.w r4, [r3, 0x190] | r4 = *((r3 + 0x190));
0x0000c378 str r3, [sp, 8] | var_8h = r3;
0x0000c37a cmp r4, 0 |
| if (r4 == 0) {
0x0000c37c beq 0xc290 | goto label_3;
| }
| if (r7 != 0) {
0x0000c37e cbz r7, 0xc388 |
0x0000c380 ldrb r3, [r7] | r3 = *(r7);
0x0000c382 cmp r3, 0 |
| if (r3 != 0) {
0x0000c384 bne.w 0xca18 | goto label_42;
| }
| }
0x0000c388 ldr.w r3, [pc, 0xa10] |
0x0000c38c add r3, pc | r3 = 0x1912c;
0x0000c38e str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0000c390 b 0xc290 | goto label_3;
| label_36:
0x0000c392 ldrd r3, r2, [r5, 0xb0] | __asm ("ldrd r3, r2, [r5, 0xb0]");
0x0000c396 cmp r3, r2 |
| if (r3 >= r2) {
0x0000c398 bhs.w 0xc9b6 | goto label_43;
| }
| label_23:
0x0000c39c adds r2, r3, 1 | r2 = r3 + 1;
0x0000c39e movw r1, 0x30d8 | r1 = 0x30d8;
0x0000c3a2 add r3, r6 | r3 += r6;
0x0000c3a4 str.w r2, [r5, 0xb0] | __asm ("str.w r2, [r5, 0xb0]");
0x0000c3a8 ldrb r0, [r3, r1] | r0 = *((r3 + r1));
0x0000c3aa cmp r0, 0xbb |
| if (r0 != 0xbb) {
0x0000c3ac bne 0xc2ec | goto label_4;
| }
0x0000c3ae ldr.w r3, [r5, 0xb4] | r3 = *((r5 + 0xb4));
0x0000c3b2 cmp r2, r3 |
| if (r2 >= r3) {
0x0000c3b4 bhs.w 0xca50 | goto label_44;
| }
| label_27:
0x0000c3b8 adds r3, r2, 1 | r3 = r2 + 1;
0x0000c3ba add r2, r6 | r2 += r6;
0x0000c3bc str.w r3, [r5, 0xb0] | __asm ("str.w r3, [r5, 0xb0]");
0x0000c3c0 movw r3, 0x30d8 | r3 = 0x30d8;
0x0000c3c4 ldrb r0, [r2, r3] | r0 = *((r2 + r3));
0x0000c3c6 cmp r0, 0xbf |
| if (r0 != 0xbf) {
0x0000c3c8 bne 0xc2ec | goto label_4;
| }
0x0000c3ca b 0xc2f0 | goto label_5;
| label_10:
0x0000c3cc add.w r6, r6, 0x16000 | r6 += 0x16000;
0x0000c3d0 ldr.w r0, [r6, 0x184] | r0 = *((r6 + 0x184));
0x0000c3d4 b 0xc284 | goto label_6;
| label_40:
0x0000c3d6 add.w r3, r6, 0x13800 | r3 = r6 + 0x13800;
0x0000c3da ldr.w r2, [r5, 0xb0] | r2 = *((r5 + 0xb0));
0x0000c3de adds r3, 0xd8 | r3 += 0xd8;
0x0000c3e0 movw r8, 0x30d8 | r8 = 0x30d8;
0x0000c3e4 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000c3e6 b 0xc3f8 |
| while (r1 > r2) {
| label_7:
0x0000c3e8 adds r2, r3, 1 | r2 = r3 + 1;
0x0000c3ea add r3, r6 | r3 += r6;
0x0000c3ec str.w r2, [r5, 0xb0] | __asm ("str.w r2, [r5, 0xb0]");
0x0000c3f0 ldrb.w r4, [r3, r8] | r4 = *((r3 + r8));
0x0000c3f4 cmp r4, 0x20 |
| if (r4 > 0x20) {
0x0000c3f6 bhi 0xc41a | goto label_45;
| }
0x0000c3f8 ldr.w r1, [r5, 0xb4] | r1 = *((r5 + 0xb4));
0x0000c3fc mov r3, r2 | r3 = r2;
0x0000c3fe cmp r1, r2 |
0x0000c400 bhi 0xc3e8 |
| }
0x0000c402 mov r0, r6 | r0 = r6;
0x0000c404 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 == 0) {
0x0000c408 cbnz r0, 0xc410 |
0x0000c40a ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x0000c40e b 0xc3e8 | goto label_7;
| }
0x0000c410 mov.w r4, -1 | r4 = -1;
| do {
0x0000c414 ldr.w r8, [sp, 0x1c] | r8 = var_1ch;
0x0000c418 b 0xc4b4 | goto label_46;
| label_45:
0x0000c41a cmp r4, 0x3e |
0x0000c41c it ne |
| if (r4 != 0x3e) {
0x0000c41e cmpne r4, 0x2f | __asm ("cmpne r4, 0x2f");
| }
0x0000c420 beq 0xc414 |
| } while (r4 == 0x3e);
0x0000c422 ldr.w r8, [sp, 0x1c] | r8 = var_1ch;
0x0000c426 mov.w sb, 0x400 | sb = 0x400;
0x0000c42a movw sl, 0x30d8 | sl = 0x30d8;
| do {
0x0000c42e add.w sb, sb, -1 | sb += -1;
0x0000c432 mov r3, r8 | r3 = r8;
0x0000c434 cmp.w sb, 0 |
0x0000c438 itt gt |
| if (sb <= 0) {
0x0000c43a strbgt r4, [r3], 1 | *(r3) = r4;
| r3++;
| }
| if (sb > 0) {
0x0000c43e mov r8, r3 | r8 = r3;
| }
0x0000c440 ldrd r2, r3, [r5, 0xb0] | __asm ("ldrd r2, r3, [r5, 0xb0]");
0x0000c444 cmp r2, r3 |
| if (r2 >= r3) {
0x0000c446 bhs 0xc4a2 | goto label_47;
| }
| label_9:
0x0000c448 adds r3, r2, 1 | r3 = r2 + 1;
0x0000c44a add r2, r6 | r2 += r6;
0x0000c44c str.w r3, [r5, 0xb0] | __asm ("str.w r3, [r5, 0xb0]");
0x0000c450 ldrb.w r4, [r2, sl] | r4 = *((r2 + sl));
0x0000c454 cmp r4, 0x3e |
0x0000c456 it ne |
| if (r4 != 0x3e) {
0x0000c458 cmpne r4, 0x2f | __asm ("cmpne r4, 0x2f");
| }
0x0000c45a ite ne |
| if (r4 == 0x3e) {
0x0000c45c movne r2, 1 | r2 = 1;
| }
| if (r4 != 0x3e) {
0x0000c45e moveq r2, 0 | r2 = 0;
| }
0x0000c460 cmp r4, 0x20 |
0x0000c462 ite le |
| if (r4 > 0x20) {
0x0000c464 movle r2, 0 | r2 = 0;
| }
| if (r4 <= 0x20) {
0x0000c466 andgt r2, r2, 1 | r2 &= 1;
| }
0x0000c46a cmp r2, 0 |
0x0000c46c bne 0xc42e |
| } while (r2 != 0);
0x0000c46e cmp r4, 0x20 |
0x0000c470 it le |
| if (r4 <= 0x20) {
0x0000c472 movwle sb, 0x30d8 | __asm ("movwle sb, aav.0x000000ff");
| }
| if (r4 <= 0x20) {
0x0000c476 ble 0xc48a | goto label_48;
| }
0x0000c478 b 0xc4b4 | goto label_46;
| do {
| label_8:
0x0000c47a adds r3, r2, 1 | r3 = r2 + 1;
0x0000c47c add r2, r6 | r2 += r6;
0x0000c47e str.w r3, [r5, 0xb0] | __asm ("str.w r3, [r5, 0xb0]");
0x0000c480 adds r0, 0xb0 | r0 += 0xb0;
0x0000c482 ldrb.w r4, [r2, sb] | r4 = *((r2 + sb));
0x0000c486 cmp r4, 0x20 |
| if (r4 > 0x20) {
0x0000c488 bhi 0xc4b4 | goto label_46;
| }
| label_48:
0x0000c48a ldr.w r1, [r5, 0xb4] | r1 = *((r5 + 0xb4));
0x0000c48e mov r2, r3 | r2 = r3;
0x0000c490 cmp r1, r3 |
0x0000c492 bhi 0xc47a |
| } while (r1 > r3);
0x0000c494 mov r0, r6 | r0 = r6;
0x0000c496 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 == 0) {
0x0000c49a cbnz r0, 0xc4b0 |
0x0000c49c ldr.w r2, [r5, 0xb0] | r2 = *((r5 + 0xb0));
0x0000c4a0 b 0xc47a | goto label_8;
| label_47:
0x0000c4a2 mov r0, r6 | r0 = r6;
0x0000c4a4 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 != 0) {
0x0000c4a8 cbnz r0, 0xc4b0 | goto label_49;
| }
0x0000c4aa ldr.w r2, [r5, 0xb0] | r2 = *((r5 + 0xb0));
0x0000c4ae b 0xc448 | goto label_9;
| }
| label_49:
0x0000c4b0 mov.w r4, -1 | r4 = -1;
| label_46:
0x0000c4b4 mov.w sb, 0 | sb = 0;
0x0000c4b8 strb.w sb, [r8] | *(r8) = sb;
0x0000c4bc ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0000c4be ands r3, r3, 0x1000000 | r3 &= 0x1000000;
| if (r3 == r3) {
0x0000c4c2 beq 0xc53c | goto label_50;
| }
0x0000c4c4 movs r1, 0x34 | r1 = 0x34;
0x0000c4c6 mov r0, r6 | r0 = r6;
0x0000c4c8 blx 0x6088 | r0 = fcn_00006088 ();
0x0000c4cc mov r8, r0 | r8 = r0;
0x0000c4ce cmp r0, 0 |
| if (r0 == 0) {
0x0000c4d0 beq.w 0xc3cc | goto label_10;
| }
0x0000c4d4 add.w r3, r6, 0x16000 | r3 = r6 + 0x16000;
0x0000c4d8 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000c4da str.w sb, [r0] | __asm ("str.w sb, [r0]");
0x0000c4de str.w sb, [r0, 0x10] | __asm ("str.w sb, [r0, 0x10]");
0x0000c4e2 mov r0, r6 | r0 = r6;
0x0000c4e4 str r3, [sp, 8] | var_8h = r3;
0x0000c4e6 blx 0x5c8c | fcn_00005c8c ();
0x0000c4ea mov r1, r7 | r1 = r7;
0x0000c4ec ldr r7, [sp, 8] | r7 = var_8h;
0x0000c4ee str.w r0, [r8, 0x14] | __asm ("str.w r0, [r8, 0x14]");
0x0000c4f2 mov r0, r6 | r0 = r6;
0x0000c4f4 ldr.w r3, [r7, 0x190] | r3 = *((r7 + 0x190));
0x0000c4f8 str.w sb, [r8, 0xc] | __asm ("str.w sb, [r8, 0xc]");
0x0000c4fc strd sb, sb, [r8, 0x18] | __asm ("strd sb, sb, [r8, 0x18]");
0x0000c500 strd r3, sb, [r8, 4] | __asm ("strd r3, sb, [r8, 4]");
0x0000c504 strd sb, sb, [r8, 0x20] | __asm ("strd sb, sb, [r8, 0x20]");
0x0000c508 blx 0x5c8c | fcn_00005c8c ();
0x0000c50c ldr.w r2, [r7, 0x190] | r2 = *((r7 + 0x190));
0x0000c510 strd r0, sb, [r8, 0x28] | __asm ("strd r0, sb, [r8, 0x28]");
0x0000c514 str.w r6, [r8, 0x30] | __asm ("str.w r6, [r8, 0x30]");
| if (r2 == 0) {
0x0000c518 cbz r2, 0xc52e | goto label_31;
| }
0x0000c51a ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x0000c51c cmp r3, 0 |
| if (r3 == 0) {
0x0000c51e beq.w 0xcaf8 | goto label_51;
| }
| do {
0x0000c522 mov r2, r3 | r2 = r3;
0x0000c524 ldr r3, [r3] | r3 = *(r3);
0x0000c526 cmp r3, 0 |
0x0000c528 bne 0xc522 |
| } while (r3 != 0);
0x0000c52a str.w r8, [r2] | __asm ("str.w r8, [r2]");
| label_31:
0x0000c52e ldr r3, [sp, 8] | r3 = var_8h;
0x0000c530 str.w r8, [r3, 0x190] | __asm ("str.w r8, aav.0x000000ff");
0x0000c534 add.w r3, r8, 0xc | r3 = r8 + 0xc;
0x0000c538 str r3, [sp] | *(sp) = r3;
0x0000c53a b 0xc544 | goto label_52;
| label_50:
0x0000c53c str r3, [sp] | *(sp) = r3;
0x0000c53e add.w r3, r6, 0x16000 | r3 = r6 + 0x16000;
0x0000c542 str r3, [sp, 8] | var_8h = r3;
| label_52:
0x0000c544 mov r0, r6 | r0 = r6;
0x0000c546 blx 0x679c | fcn_0000679c ();
0x0000c54a ldr r3, [sp, 4] | r3 = var_4h;
0x0000c54c ldr.w r3, [r3, 0x520] | r3 = *((r3 + 0x520));
| if (r3 == 0) {
0x0000c550 cbz r3, 0xc55c | goto label_53;
| }
0x0000c552 movs r2, 0 | r2 = 0;
| do {
0x0000c554 strh r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x0000c556 ldr r3, [r3] | r3 = *(r3);
0x0000c558 cmp r3, 0 |
0x0000c55a bne 0xc554 |
| } while (r3 != 0);
| label_53:
0x0000c55c cmp r4, 0x3e |
0x0000c55e it ne |
| if (r4 != 0x3e) {
0x0000c560 cmpne r4, -1 | __asm ("cmpne r4, -1");
| }
| if (r4 == 0x3e) {
0x0000c564 beq.w 0xca24 | goto label_54;
| }
0x0000c568 cmp r4, 0x2f |
| if (r4 == 0x2f) {
0x0000c56a beq.w 0xc702 | goto label_55;
| }
0x0000c56e ldr.w r3, [pc, 0x830] | r3 = *(0x0000cda0);
0x0000c572 movw sl, 0x30d8 | sl = 0x30d8;
0x0000c576 add r3, pc | r3 += pc;
0x0000c578 str r3, [sp, 0x14] | var_14h = r3;
0x0000c57a add.w r3, r6, 0x13400 | r3 = r6 + 0x13400;
0x0000c57e add.w fp, r3, 0xd8 |
0x0000c582 str r3, [sp, 0x24] | var_24h = r3;
| label_13:
0x0000c584 cmp r4, 0x2f |
0x0000c586 it ne |
| if (r4 != 0x2f) {
0x0000c588 cmpne r4, 0x20 | __asm ("cmpne r4, 0x20");
| }
0x0000c58a sub.w r2, r4, 0x3d | r2 = r4 - 0x3d;
0x0000c58e ite gt |
| if (r4 <= 0x2f) {
0x0000c590 movgt r3, 1 | r3 = 1;
| }
| if (r4 > 0x2f) {
0x0000c592 movle r3, 0 | r3 = 0;
| }
0x0000c594 cmp r2, 1 |
0x0000c596 ite ls |
| if (r2 > 1) {
0x0000c598 movls r3, 0 | r3 = 0;
| }
| if (r2 <= 1) {
0x0000c59a andhi r3, r3, 1 | r3 &= 1;
| }
0x0000c59e cmp r3, 0 |
| if (r3 == 0) {
0x0000c5a0 beq.w 0xc9a4 | goto label_56;
| }
0x0000c5a4 mov sb, fp | sb = fp;
0x0000c5a6 mov.w r7, 0x400 | r7 = 0x400;
0x0000c5aa b 0xc5d6 |
| while (r3 <= r2) {
| label_11:
0x0000c5ac adds r2, r3, 1 | r2 = r3 + 1;
0x0000c5ae add r3, r6 | r3 += r6;
0x0000c5b0 str.w r2, [r5, 0xb0] | __asm ("str.w r2, [r5, 0xb0]");
0x0000c5b4 ldrb.w r4, [r3, sl] | r4 = *((r3 + sl));
0x0000c5b8 cmp r4, 0x2f |
0x0000c5ba it ne |
| if (r4 != 0x2f) {
0x0000c5bc cmpne r4, 0x20 | __asm ("cmpne r4, 0x20");
| }
0x0000c5be sub.w r2, r4, 0x3d | r2 = r4 - 0x3d;
0x0000c5c2 ite gt |
| if (r4 <= 0x2f) {
0x0000c5c4 movgt r3, 1 | r3 = 1;
| }
| if (r4 > 0x2f) {
0x0000c5c6 movle r3, 0 | r3 = 0;
| }
0x0000c5c8 cmp r2, 1 |
0x0000c5ca ite ls |
| if (r2 > 1) {
0x0000c5cc movls r3, 0 | r3 = 0;
| }
| if (r2 <= 1) {
0x0000c5ce andhi r3, r3, 1 | r3 &= 1;
| }
0x0000c5d2 mov r8, r4 | r8 = r4;
| if (r3 == 0) {
0x0000c5d4 cbz r3, 0xc600 | goto label_57;
| }
0x0000c5d6 subs r7, 1 | r7--;
0x0000c5d8 mov r3, sb | r3 = sb;
0x0000c5da cmp r7, 0 |
0x0000c5dc itt gt |
| if (r7 <= 0) {
0x0000c5de strbgt r4, [r3], 1 | *(r3) = r4;
| r3++;
| }
| if (r7 > 0) {
0x0000c5e2 mov sb, r3 | sb = r3;
| }
0x0000c5e4 ldrd r3, r2, [r5, 0xb0] | __asm ("ldrd r3, r2, [r5, 0xb0]");
0x0000c5e8 cmp r3, r2 |
0x0000c5ea blo 0xc5ac |
| }
0x0000c5ec mov r0, r6 | r0 = r6;
0x0000c5ee blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 == 0) {
0x0000c5f2 cbnz r0, 0xc5fa |
0x0000c5f4 ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x0000c5f8 b 0xc5ac | goto label_11;
| }
0x0000c5fa mov.w r4, -1 | r4 = -1;
0x0000c5fe mov r8, r4 | r8 = r4;
| label_57:
0x0000c600 ldr r3, [sp] | r3 = *(sp);
0x0000c602 movs r7, 0 | r7 = 0;
0x0000c604 strb.w r7, [sb] | *(sb) = r7;
| if (r3 != 0) {
0x0000c608 cbz r3, 0xc63e |
0x0000c60a movs r1, 0x18 | r1 = 0x18;
0x0000c60c mov r0, r6 | r0 = r6;
0x0000c60e blx 0x6088 | fcn_00006088 ();
0x0000c612 ldr r3, [sp] | r3 = *(sp);
0x0000c614 str r0, [r3] | *(r3) = r0;
0x0000c616 cmp r0, 0 |
| if (r0 == 0) {
0x0000c618 beq.w 0xc9fa | goto label_58;
| }
0x0000c61c ldr r3, [sp] | r3 = *(sp);
0x0000c61e mov r1, fp | r1 = fp;
0x0000c620 str r7, [r0] | *(r0) = r7;
0x0000c622 mov r0, r6 | r0 = r6;
0x0000c624 ldr.w sb, [r3] | sb = *(r3);
0x0000c628 str.w r7, [sb, 4] | __asm ("str.w r7, [sb, 4]");
0x0000c62c blx 0x5c8c | fcn_00005c8c ();
0x0000c630 ldr r3, [sp] | r3 = *(sp);
0x0000c632 str.w r0, [sb, 8] | __asm ("str.w r0, [sb, 8]");
0x0000c636 ldr r3, [r3] | r3 = *(r3);
0x0000c638 strd r7, r7, [r3, 0xc] | __asm ("strd r7, r7, [r3, 0xc]");
0x0000c63c str r6, [r3, 0x14] | *((r3 + 0x14)) = r6;
| }
0x0000c63e ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000c640 movs r2, 5 | r2 = 5;
0x0000c642 mov r0, fp | r0 = fp;
0x0000c644 blx 0x66f0 | r0 = fcn_000066f0 ();
0x0000c648 cmp r0, 0 |
| if (r0 != 0) {
0x0000c64a bne.w 0xc830 | goto label_59;
| }
0x0000c64e ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000c650 ldrb.w r3, [r3, 0x4dd] | r3 = *((r3 + 0x4dd));
0x0000c654 cmp r3, 0x3a |
| if (r3 == 0x3a) {
0x0000c656 beq.w 0xc836 | goto label_60;
| }
0x0000c65a cmp r3, 0 |
| if (r3 != 0) {
0x0000c65c bne.w 0xc83e | goto label_61;
| }
0x0000c660 ldr.w r3, [pc, 0x740] |
0x0000c664 add r3, pc | r3 = 0x1940c;
0x0000c666 str r3, [sp, 0xc] | var_ch = r3;
| label_16:
0x0000c668 ldr r3, [sp, 4] | r3 = var_4h;
0x0000c66a ldr.w sb, [r3, 0x520] | sb = *((r3 + 0x520));
0x0000c66e cmp.w sb, 0 |
| if (sb == 0) {
0x0000c672 beq.w 0xc9c4 | goto label_62;
| }
0x0000c676 mov r7, sb | r7 = sb;
0x0000c678 b 0xc684 |
| while (r0 != 0) {
0x0000c67a ldr r3, [r7] | r3 = *(r7);
0x0000c67c cmp r3, 0 |
| if (r3 == 0) {
0x0000c67e beq.w 0xc956 | goto label_63;
| }
0x0000c682 mov r7, r3 | r7 = r3;
0x0000c684 add.w r0, r7, 0x16 | r0 = r7 + 0x16;
0x0000c688 mov r1, fp | r1 = fp;
0x0000c68a blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000c68e cmp r0, 0 |
0x0000c690 bne 0xc67a |
| }
| label_22:
0x0000c692 cmp.w r8, 0x20 |
0x0000c696 it ls |
| if (r8 > 0x20) {
0x0000c698 ldrls r2, [r5, 0xb0] | r2 = *((r5 + 0xb0));
| }
| if (r8 < 0x20) {
0x0000c69c bls 0xc6b2 | goto label_64;
| }
0x0000c69e b 0xc842 | goto label_65;
| do {
| label_12:
0x0000c6a0 adds r2, r3, 1 | r2 = r3 + 1;
0x0000c6a2 add r3, r6 | r3 += r6;
0x0000c6a4 str.w r2, [r5, 0xb0] | __asm ("str.w r2, [r5, 0xb0]");
0x0000c6a8 ldrb.w r4, [r3, sl] | r4 = *((r3 + sl));
0x0000c6ac cmp r4, 0x20 |
| if (r4 > 0x20) {
0x0000c6ae bhi.w 0xc842 | goto label_65;
| }
| label_64:
0x0000c6b2 ldr.w r1, [r5, 0xb4] | r1 = *((r5 + 0xb4));
0x0000c6b6 mov r3, r2 | r3 = r2;
0x0000c6b8 cmp r1, r2 |
0x0000c6ba bhi 0xc6a0 |
| } while (r1 > r2);
0x0000c6bc mov r0, r6 | r0 = r6;
0x0000c6be blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 == 0) {
0x0000c6c2 cbnz r0, 0xc6ca |
0x0000c6c4 ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x0000c6c8 b 0xc6a0 | goto label_12;
| }
0x0000c6ca mov.w r4, -1 | r4 = -1;
| label_17:
0x0000c6ce movs r3, 1 | r3 = 1;
0x0000c6d0 strh r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x0000c6d2 ldr r3, [sp] | r3 = *(sp);
| if (r3 != 0) {
0x0000c6d4 cbz r3, 0xc6dc |
| label_21:
0x0000c6d6 ldr r3, [sp] | r3 = *(sp);
0x0000c6d8 ldr r3, [r3] | r3 = *(r3);
0x0000c6da str r3, [sp] | *(sp) = r3;
| }
| label_20:
0x0000c6dc ldr r1, [sp, 0xc] | r1 = var_ch;
| if (r1 != 0) {
0x0000c6de cbz r1, 0xc6f0 |
0x0000c6e0 ldr r2, [r7, 8] | r2 = *((r7 + 8));
| if (r2 == 0) {
0x0000c6e2 cbz r2, 0xc6f0 | goto label_66;
| }
0x0000c6e4 mov r0, r6 | r0 = r6;
0x0000c6e6 blx 0x6578 | r0 = fcn_00006578 ();
0x0000c6ea cmp r0, 0 |
| if (r0 == 0) {
0x0000c6ec beq.w 0xc9fa | goto label_58;
| }
| }
| label_66:
0x0000c6f0 cmp.w r4, -1 |
0x0000c6f4 it ne |
| if (r4 != -1) {
0x0000c6f6 cmpne r4, 0x3e | __asm ("cmpne r4, 0x3e");
| }
| if (r4 == -1) {
0x0000c6f8 beq.w 0xca24 | goto label_54;
| }
0x0000c6fc cmp r4, 0x2f |
| if (r4 != 0x2f) {
0x0000c6fe bne.w 0xc584 | goto label_13;
| }
| label_55:
0x0000c702 ldr r3, [sp] | r3 = *(sp);
0x0000c704 cmp r3, 0 |
| if (r3 == 0) {
0x0000c706 beq.w 0xca84 | goto label_67;
| }
0x0000c70a ldr r7, [sp, 8] | r7 = var_8h;
0x0000c70c mov r0, r6 | r0 = r6;
0x0000c70e ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000c710 ldr.w r4, [r7, 0x190] | r4 = *((r7 + 0x190));
0x0000c714 blx 0x63bc | fcn_000063bc ();
0x0000c718 ldr.w r3, [r7, 0x190] | r3 = *((r7 + 0x190));
0x0000c71c str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0000c71e movs r4, 0x2f | r4 = 0x2f;
0x0000c720 ldr r7, [r3, 0xc] | r7 = *((r3 + 0xc));
0x0000c722 add.w r8, r3, 0xc | r8 = r3 + 0xc;
| if (r7 == 0) {
0x0000c726 cbz r7, 0xc748 | goto label_68;
| }
| label_25:
0x0000c728 mov r3, r8 | r3 = r8;
0x0000c72a mov r8, r4 | r8 = r4;
0x0000c72c mov r4, r3 | r4 = r3;
| do {
0x0000c72e ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x0000c730 mov r0, r6 | r0 = r6;
0x0000c732 blx 0x63bc | fcn_000063bc ();
0x0000c736 ldr r4, [r4] | r4 = *(r4);
0x0000c738 str r0, [r7, 4] | *((r7 + 4)) = r0;
0x0000c73a ldr r7, [r4] | r7 = *(r4);
0x0000c73c cmp r7, 0 |
0x0000c73e bne 0xc72e |
| } while (r7 != 0);
0x0000c740 mov r4, r8 | r4 = r8;
| label_24:
0x0000c742 adds r0, r4, 1 | r0 = r4 + 1;
| if (r0 == r4) {
0x0000c744 beq.w 0xcb04 | goto label_69;
| }
| label_68:
0x0000c748 cmp r4, 0x2f |
0x0000c74a ite ne |
| if (r4 == 0x2f) {
0x0000c74c movne r3, 1 | r3 = 1;
| }
| if (r4 != 0x2f) {
0x0000c74e moveq r3, 0 | r3 = 0;
| }
0x0000c750 strh.w r3, [r5, 0xbe] | *((r5 + 0xbe)) = r3;
| if (r4 == 0x2f) {
0x0000c754 beq.w 0xca8a | goto label_70;
| }
| label_28:
0x0000c758 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0000c75a lsls r1, r3, 7 | r1 = r3 << 7;
| if (r1 < r3) {
0x0000c75c bpl 0xc772 |
0x0000c75e ldrsh.w r3, [r5, 0xbe] | r3 = *((r5 + 0xbe));
| if (r3 != 0) {
0x0000c762 cbnz r3, 0xc772 | goto label_71;
| }
0x0000c764 ldr r2, [sp, 8] | r2 = var_8h;
0x0000c766 ldr.w r3, [r2, 0x190] | r3 = *((r2 + 0x190));
0x0000c76a ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 == 0) {
0x0000c76c cbz r3, 0xc772 | goto label_71;
| }
0x0000c76e str.w r3, [r2, 0x190] | __asm ("str.w r3, aav.0x000000ff");
| }
| label_71:
0x0000c772 ldr r3, [sp, 4] | r3 = var_4h;
0x0000c774 ldr.w r4, [r3, 0x520] | r4 = *((r3 + 0x520));
0x0000c778 cmp r4, 0 |
| if (r4 == 0) {
0x0000c77a beq.w 0xca08 | goto label_72;
| }
0x0000c77e ldr.w sl, [pc, 0x628] |
0x0000c782 mov r8, r3 | r8 = r3;
0x0000c784 ldr.w sb, [pc, 0x624] | sb = *(0x0000cdac);
0x0000c788 ldr.w fp, [pc, 0x624] |
0x0000c78c add sl, pc | sl = 0x1953a;
0x0000c78e str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h]");
0x0000c792 add sb, pc | sb += pc;
0x0000c794 ldr.w sl, [sp, 0x18] | sl = var_18h;
0x0000c798 add fp, pc | fp = 0x1954c;
0x0000c79a b 0xc7de | goto label_73;
| label_15:
0x0000c79c ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0000c79e cmp r3, 0x64 |
| if (r3 != 0x64) {
0x0000c7a0 bne 0xc7f6 | goto label_74;
| }
0x0000c7a2 ldrb r3, [r5, 2] | r3 = *((r5 + 2));
| if (r3 != 0) {
0x0000c7a4 cbnz r3, 0xc7f6 | goto label_74;
| }
0x0000c7a6 ldrsh.w r2, [r6, 2] | r2 = *((r6 + 2));
0x0000c7aa ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0000c7ac cmp r2, 0 |
| if (r2 > 0) {
0x0000c7ae ble 0xc7b4 |
0x0000c7b0 lsls r2, r3, 0xe | r2 = r3 << 0xe;
| if (r2 >= r3) {
0x0000c7b2 bpl 0xc7b8 | goto label_75;
| }
| }
0x0000c7b4 lsls r3, r3, 0xd | r3 <<= 0xd;
| if (r3 >= r3) {
0x0000c7b6 bpl 0xc7d6 | goto label_14;
| }
| label_75:
0x0000c7b8 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000c7ba movs r3, 0x23 | r3 = 0x23;
0x0000c7bc add.w r0, r6, 0x13c00 | r0 = r6 + 0x13c00;
0x0000c7c0 mov r1, r7 | r1 = r7;
0x0000c7c2 adds r0, 0xd9 | r0 += 0xd9;
0x0000c7c4 strb.w r3, [r2, 0xcd8] | *((r2 + 0xcd8)) = r3;
0x0000c7c8 movw r2, 0x3fe | r2 = 0x3fe;
0x0000c7cc blx 0x5b6c | fcn_00005b6c ();
0x0000c7d0 movs r3, 0 | r3 = 0;
0x0000c7d2 strb.w r3, [sl, 0xd7] | *((sl + 0xd7)) = r3;
| do {
| label_14:
0x0000c7d6 ldr r4, [r4] | r4 = *(r4);
0x0000c7d8 cmp r4, 0 |
| if (r4 == 0) {
0x0000c7da beq.w 0xca08 | goto label_72;
| }
| label_73:
0x0000c7de ldrsh.w r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0000c7e2 cmp r3, 0 |
0x0000c7e4 beq 0xc7d6 |
| } while (r3 == 0);
0x0000c7e6 ldr r7, [r4, 8] | r7 = *((r4 + 8));
0x0000c7e8 cmp r7, 0 |
| if (r7 == 0) {
0x0000c7ea beq 0xc7d6 | goto label_14;
| }
0x0000c7ec ldrb r3, [r4, 0x16] | r3 = *((r4 + 0x16));
0x0000c7ee add.w r5, r4, 0x16 | r5 = r4 + 0x16;
0x0000c7f2 cmp r3, 0x69 |
| if (r3 == 0x69) {
0x0000c7f4 beq 0xc79c | goto label_15;
| }
| label_74:
0x0000c7f6 mov r1, sb | r1 = sb;
0x0000c7f8 mov r0, r5 | r0 = r5;
0x0000c7fa blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000c7fe cmp r0, 0 |
| if (r0 != 0) {
0x0000c800 bne.w 0xca60 | goto label_76;
| }
0x0000c804 ldrsh.w r3, [r6, 2] | r3 = *((r6 + 2));
0x0000c808 cmp r3, 1 |
| if (r3 == 1) {
0x0000c80a beq 0xc81a | goto label_77;
| }
0x0000c80c ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0000c80e mov.w r3, 0x280 |
0x0000c812 movt r3, 4 | r3 = 0x40280;
0x0000c816 tst r3, r2 |
| if ((r3 & r2) == 0) {
0x0000c818 beq 0xc7d6 | goto label_14;
| }
| label_77:
0x0000c81a mov r1, r7 | r1 = r7;
0x0000c81c movw r2, 0x3ff | r2 = 0x3ff;
0x0000c820 add.w r0, sl, 0xd8 | r0 = sl + 0xd8;
0x0000c824 blx 0x5b6c | fcn_00005b6c ();
0x0000c828 movs r3, 0 | r3 = 0;
0x0000c82a strb.w r3, [sl, 0x4d7] | *((sl + 0x4d7)) = r3;
0x0000c82e b 0xc7d6 | goto label_14;
| label_59:
0x0000c830 movs r3, 0 | r3 = 0;
0x0000c832 str r3, [sp, 0xc] | var_ch = r3;
0x0000c834 b 0xc668 | goto label_16;
| label_60:
0x0000c836 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000c838 adds r3, 0xde | r3 += 0xde;
0x0000c83a str r3, [sp, 0xc] | var_ch = r3;
0x0000c83c b 0xc668 | goto label_16;
| label_61:
0x0000c83e str r0, [sp, 0xc] | var_ch = r0;
0x0000c840 b 0xc668 | goto label_16;
| label_65:
0x0000c842 cmp r4, 0x3d |
| if (r4 != 0x3d) {
0x0000c844 bne.w 0xc6ce | goto label_17;
| }
| do {
0x0000c848 mov r0, r6 | r0 = r6;
0x0000c84a blx 0x6854 | r0 = fcn_00006854 ();
0x0000c84e cmp r0, 0x20 |
0x0000c850 bls 0xc848 |
| } while (r0 < 0x20);
0x0000c852 adds r3, r0, 6 | r3 = r0 + 6;
0x0000c854 mov r8, r0 | r8 = r0;
0x0000c856 cmp r3, 1 |
0x0000c858 ldrd r1, r2, [r7, 8] | __asm ("ldrd r1, r2, [r7, 8]");
0x0000c85c itt hi |
| if (r3 <= 1) {
0x0000c85e strhi r8, [r5, 0xb8] | *((r5 + 0xb8)) = r8;
| }
| if (r3 > 1) {
0x0000c862 mov.w r8, 0x20 | r8 = 0x20;
| }
0x0000c866 mov r3, r8 | r3 = r8;
0x0000c868 mov r0, r6 | r0 = r6;
0x0000c86a bl 0x8f88 | r0 = fcn_00008f88 (r0, r1, r2, r3);
0x0000c86e cmp r0, 0 |
| if (r0 == 0) {
0x0000c870 beq 0xc906 | goto label_78;
| }
0x0000c872 ldr r2, [sp, 8] | r2 = var_8h;
0x0000c874 ldr.w r0, [r2, 0x184] | r0 = *((r2 + 0x184));
0x0000c878 cmp r0, 0x14 |
| if (r0 != 0x14) {
0x0000c87a bne.w 0xc284 | goto label_6;
| }
0x0000c87e movs r3, 0 | r3 = 0;
0x0000c880 mov r0, r6 | r0 = r6;
0x0000c882 str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x0000c886 ldrd r1, r2, [r7, 8] | __asm ("ldrd r1, r2, [r7, 8]");
0x0000c88a blx 0x683c | r0 = fcn_0000683c ();
0x0000c88e cmp r0, 0 |
| if (r0 != 0) {
0x0000c890 bne.w 0xc9fa | goto label_58;
| }
0x0000c894 ldr r0, [r7, 8] | r0 = *((r7 + 8));
| if (r0 != 0) {
0x0000c896 cbz r0, 0xc89c |
0x0000c898 blx 0x5e50 | fcn_00005e50 ();
| }
0x0000c89c ldr.w sb, [sp, 8] | sb = var_8h;
0x0000c8a0 movs r4, 0 | r4 = 0;
0x0000c8a2 b 0xc8ca | goto label_79;
| label_18:
0x0000c8a4 ldr.w r0, [sb, 0x184] | r0 = *((sb + 0x184));
0x0000c8a8 cmp r0, 0x14 |
| if (r0 != 0x14) {
0x0000c8aa bne.w 0xc284 | goto label_6;
| }
0x0000c8ae ldr.w r3, [r5, 0xd0] | r3 = *((r5 + 0xd0));
0x0000c8b2 movs r2, 0 | r2 = 0;
0x0000c8b4 str.w r4, [sb, 0x184] | __asm ("str.w r4, aav.0x000000ff");
0x0000c8b8 mov r1, r2 | r1 = r2;
0x0000c8ba mov r0, r6 | r0 = r6;
0x0000c8bc str.w r3, [r5, 0xd4] | __asm ("str.w r3, [r5, 0xd4]");
0x0000c8c0 blx 0x6514 | r0 = fcn_00006514 ();
0x0000c8c4 cmp r0, 0 |
| if (r0 != 0) {
0x0000c8c6 bne.w 0xc9fa | goto label_58;
| }
| label_79:
0x0000c8ca ldrd r2, r3, [r5, 0xd0] | __asm ("ldrd r2, r3, [r5, 0xd0]");
0x0000c8ce mov r0, r6 | r0 = r6;
0x0000c8d0 ldr.w r1, [r5, 0xcc] | r1 = *((r5 + 0xcc));
0x0000c8d4 subs r2, r2, r3 | r2 -= r3;
0x0000c8d6 add r1, r3 | r1 += r3;
0x0000c8d8 mov r3, r8 | r3 = r8;
0x0000c8da bl 0x8f88 | r0 = fcn_00008f88 (r0, r1, r2, r3);
0x0000c8de cmp r0, 0 |
| if (r0 != 0) {
0x0000c8e0 bne 0xc8a4 | goto label_18;
| }
0x0000c8e2 ldr.w r3, [r5, 0xd4] | r3 = *((r5 + 0xd4));
0x0000c8e6 cmp r3, 0 |
| if (r3 == 0) {
0x0000c8e8 beq.w 0xcac0 | goto label_80;
| }
0x0000c8ec ldr.w r0, [r5, 0xd0] | r0 = *((r5 + 0xd0));
0x0000c8f0 str r0, [r7, 0xc] | *((r7 + 0xc)) = r0;
| label_30:
0x0000c8f2 blx 0x63b0 | gmtime_r ();
0x0000c8f6 str r0, [r7, 8] | *((r7 + 8)) = r0;
0x0000c8f8 cmp r0, 0 |
| if (r0 == 0) {
0x0000c8fa beq.w 0xcba0 | goto label_81;
| }
0x0000c8fe ldr.w r1, [r5, 0xcc] | r1 = *((r5 + 0xcc));
0x0000c902 blx 0x6144 | fcn_00006144 ();
| label_78:
0x0000c906 ldr.w r2, [r5, 0xb0] | r2 = *((r5 + 0xb0));
0x0000c90a b 0xc91c |
| while (r1 > r2) {
| label_19:
0x0000c90c adds r2, r3, 1 | r2 = r3 + 1;
0x0000c90e add r3, r6 | r3 += r6;
0x0000c910 str.w r2, [r5, 0xb0] | __asm ("str.w r2, [r5, 0xb0]");
0x0000c914 ldrb.w r4, [r3, sl] | r4 = *((r3 + sl));
0x0000c918 cmp r4, 0x20 |
| if (r4 > 0x20) {
0x0000c91a bhi 0xc938 | goto label_82;
| }
0x0000c91c ldr.w r1, [r5, 0xb4] | r1 = *((r5 + 0xb4));
0x0000c920 mov r3, r2 | r3 = r2;
0x0000c922 cmp r1, r2 |
0x0000c924 bhi 0xc90c |
| }
0x0000c926 mov r0, r6 | r0 = r6;
0x0000c928 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 == 0) {
0x0000c92c cbnz r0, 0xc934 |
0x0000c92e ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x0000c932 b 0xc90c | goto label_19;
| }
0x0000c934 mov.w r4, -1 | r4 = -1;
| label_82:
0x0000c938 movs r3, 2 | r3 = 2;
0x0000c93a strh r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x0000c93c ldr r3, [sp] | r3 = *(sp);
0x0000c93e cmp r3, 0 |
| if (r3 == 0) {
0x0000c940 beq.w 0xc6dc | goto label_20;
| }
0x0000c944 ldr.w r8, [r3] | r8 = *(r3);
0x0000c948 mov r0, r6 | r0 = r6;
0x0000c94a ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x0000c94c blx 0x5c8c | fcn_00005c8c ();
0x0000c950 str.w r0, [r8, 0xc] | __asm ("str.w r0, [r8, 0xc]");
0x0000c954 b 0xc6d6 | goto label_21;
| label_63:
0x0000c956 mov r0, fp | r0 = fp;
0x0000c958 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000c95a blx 0x5fec | r0 = fcn_00005fec ();
0x0000c95e mov r2, r0 | r2 = r0;
0x0000c960 adds r0, 0x18 | r0 += 0x18;
0x0000c962 str r2, [sp, 0x28] | var_28h = r2;
0x0000c964 blx 0x63b0 | gmtime_r ();
0x0000c968 ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_2ch]");
0x0000c96c str r0, [sp, 0x20] | var_20h = r0;
0x0000c96e cmp r0, 0 |
| if (r0 == 0) {
0x0000c970 beq.w 0xcba0 | goto label_81;
| }
0x0000c974 str r3, [sp, 0x28] | var_28h = r3;
0x0000c976 adds r2, 1 | r2++;
0x0000c978 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000c97a mov r1, fp | r1 = fp;
0x0000c97c add.w r0, r3, 0x16 | r0 = r3 + 0x16;
0x0000c980 blx 0x6064 | fcn_00006064 ();
0x0000c984 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000c986 movs r1, 0x3a | r1 = 0x3a;
0x0000c988 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000c98a mov r0, fp | r0 = fp;
0x0000c98c strd r3, r3, [r2, 8] | __asm ("strd r3, r3, [r2, 8]");
0x0000c990 blx 0x5b9c | fcn_00005b9c ();
0x0000c994 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000c996 cmp r0, 0 |
| if (r0 == 0) {
0x0000c998 beq 0xca14 | goto label_83;
| }
0x0000c99a ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000c99c str r2, [r7] | *(r7) = r2;
0x0000c99e mov r7, r2 | r7 = r2;
0x0000c9a0 str r3, [r2] | *(r2) = r3;
0x0000c9a2 b 0xc692 | goto label_22;
| label_56:
0x0000c9a4 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000c9a6 movs r2, 5 | r2 = 5;
0x0000c9a8 mov r0, r2 | r0 = r2;
0x0000c9aa strb.w r3, [r1, 0x4d8] | *((r1 + 0x4d8)) = r3;
0x0000c9ae ldr r3, [sp, 8] | r3 = var_8h;
0x0000c9b0 str.w r2, [r3, 0x184] | __asm ("str.w r2, aav.0x000000ff");
0x0000c9b4 b 0xc284 | goto label_6;
| label_43:
0x0000c9b6 mov r0, r6 | r0 = r6;
0x0000c9b8 blx 0x5ebc | r0 = fcn_00005ebc ();
| if (r0 != 0) {
0x0000c9bc cbnz r0, 0xca02 | goto label_26;
| }
0x0000c9be ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x0000c9c2 b 0xc39c | goto label_23;
| label_62:
0x0000c9c4 mov r0, fp | r0 = fp;
0x0000c9c6 blx 0x5fec | r0 = fcn_00005fec ();
0x0000c9ca mov r2, r0 | r2 = r0;
0x0000c9cc adds r0, 0x18 | r0 += 0x18;
0x0000c9ce str r2, [sp, 0x20] | var_20h = r2;
0x0000c9d0 blx 0x63b0 | gmtime_r ();
0x0000c9d4 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000c9d6 mov r7, r0 | r7 = r0;
0x0000c9d8 cmp r0, 0 |
| if (r0 == 0) {
0x0000c9da beq.w 0xcba0 | goto label_81;
| }
0x0000c9de adds r2, 1 | r2++;
0x0000c9e0 mov r1, fp | r1 = fp;
0x0000c9e2 add.w r0, r7, 0x16 | r0 = r7 + 0x16;
0x0000c9e6 blx 0x6064 | fcn_00006064 ();
0x0000c9ea strd sb, sb, [r7, 8] | __asm ("strd sb, sb, [r7, 8]");
| do {
0x0000c9ee ldr r3, [sp, 4] | r3 = var_4h;
0x0000c9f0 str.w sb, [r7] | __asm ("str.w sb, [r7]");
0x0000c9f4 str.w r7, [r3, 0x520] | __asm ("str.w r7, aav.0x000000ff");
0x0000c9f8 b 0xc692 | goto label_22;
| label_58:
0x0000c9fa ldr r3, [sp, 8] | r3 = var_8h;
0x0000c9fc ldr.w r0, [r3, 0x184] | r0 = *((r3 + 0x184));
0x0000ca00 b 0xc284 | goto label_6;
| label_26:
0x0000ca02 mov.w r0, -1 | r0 = -1;
0x0000ca06 b 0xc2ec | goto label_4;
| label_72:
0x0000ca08 ldr r2, [sp, 8] | r2 = var_8h;
0x0000ca0a movs r3, 0 | r3 = 0;
0x0000ca0c mov r0, r3 | r0 = r3;
0x0000ca0e str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x0000ca12 b 0xc284 | goto label_6;
| label_83:
0x0000ca14 ldr r7, [sp, 0x20] | r7 = var_20h;
0x0000ca16 b 0xc9ee |
| } while (1);
| label_42:
0x0000ca18 mov r1, r7 | r1 = r7;
0x0000ca1a mov r0, r6 | r0 = r6;
0x0000ca1c blx 0x5c8c | fcn_00005c8c ();
0x0000ca20 str r0, [r4, 0x2c] | *((r4 + 0x2c)) = r0;
0x0000ca22 b 0xc290 | goto label_3;
| label_54:
0x0000ca24 ldr r3, [sp] | r3 = *(sp);
0x0000ca26 cmp r3, 0 |
| if (r3 == 0) {
0x0000ca28 beq.w 0xc742 | goto label_24;
| }
0x0000ca2c ldr r3, [sp, 8] | r3 = var_8h;
0x0000ca2e mov r0, r6 | r0 = r6;
0x0000ca30 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000ca32 ldr.w r7, [r3, 0x190] | r7 = *((r3 + 0x190));
0x0000ca36 blx 0x63bc | fcn_000063bc ();
0x0000ca3a ldr r3, [sp, 8] | r3 = var_8h;
0x0000ca3c str r0, [r7, 0x10] | *((r7 + 0x10)) = r0;
0x0000ca3e ldr.w r3, [r3, 0x190] | r3 = *((r3 + 0x190));
0x0000ca42 ldr r7, [r3, 0xc] | r7 = *((r3 + 0xc));
0x0000ca44 add.w r8, r3, 0xc | r8 = r3 + 0xc;
0x0000ca48 cmp r7, 0 |
| if (r7 != 0) {
0x0000ca4a bne.w 0xc728 | goto label_25;
| }
0x0000ca4e b 0xc742 | goto label_24;
| label_44:
0x0000ca50 mov r0, r6 | r0 = r6;
0x0000ca52 blx 0x5ebc | r0 = fcn_00005ebc ();
0x0000ca56 cmp r0, 0 |
| if (r0 != 0) {
0x0000ca58 bne 0xca02 | goto label_26;
| }
0x0000ca5a ldr.w r2, [r5, 0xb0] | r2 = *((r5 + 0xb0));
0x0000ca5e b 0xc3b8 | goto label_27;
| label_76:
0x0000ca60 mov r2, fp | r2 = fp;
0x0000ca62 mov r1, r5 | r1 = r5;
0x0000ca64 mov r0, r6 | r0 = r6;
0x0000ca66 blx 0x6004 | r0 = fcn_00006004 ();
0x0000ca6a mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x0000ca6c cbnz r0, 0xcad6 | goto label_84;
| }
0x0000ca6e add.w r0, r6, 0x14400 | r0 = r6 + 0x14400;
0x0000ca72 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0000ca74 adds r0, 0xd8 | r0 += 0xd8;
0x0000ca76 movw r2, 0x3ff | r2 = 0x3ff;
0x0000ca7a blx 0x5b6c | fcn_00005b6c ();
0x0000ca7e strb.w r7, [sl, 0x8d7] | *((sl + 0x8d7)) = r7;
0x0000ca82 b 0xc7d6 | goto label_14;
| label_67:
0x0000ca84 ldr r3, [sp] | r3 = *(sp);
0x0000ca86 strh.w r3, [r5, 0xbe] | *((r5 + 0xbe)) = r3;
| label_70:
0x0000ca8a ldr.w r2, [r5, 0xb0] | r2 = *((r5 + 0xb0));
0x0000ca8e movw r4, 0x30d8 | r4 = 0x30d8;
0x0000ca92 b 0xcaa4 | goto label_85;
| label_29:
0x0000ca94 adds r2, r3, 1 | r2 = r3 + 1;
0x0000ca96 add r3, r6 | r3 += r6;
0x0000ca98 str.w r2, [r5, 0xb0] | __asm ("str.w r2, [r5, 0xb0]");
0x0000ca9c ldrb r3, [r3, r4] | r3 = *((r3 + r4));
0x0000ca9e cmp r3, 0x20 |
| if (r3 > 0x20) {
0x0000caa0 bhi.w 0xc758 | goto label_28;
| }
| label_85:
0x0000caa4 ldr.w r1, [r5, 0xb4] | r1 = *((r5 + 0xb4));
0x0000caa8 mov r3, r2 | r3 = r2;
0x0000caaa cmp r1, r2 |
| if (r1 > r2) {
0x0000caac bhi 0xca94 | goto label_29;
| }
0x0000caae mov r0, r6 | r0 = r6;
0x0000cab0 blx 0x5ebc | r0 = fcn_00005ebc ();
0x0000cab4 cmp r0, 0 |
| if (r0 != 0) {
0x0000cab6 bne.w 0xc758 | goto label_28;
| }
0x0000caba ldr.w r3, [r5, 0xb0] | r3 = *((r5 + 0xb0));
0x0000cabe b 0xca94 | goto label_29;
| label_80:
0x0000cac0 ldr.w r0, [r5, 0xcc] | r0 = *((r5 + 0xcc));
0x0000cac4 blx 0x5fec | fcn_00005fec ();
0x0000cac8 adds r0, 1 | r0++;
0x0000caca cmp r0, 0xff |
0x0000cacc it ls |
| if (r0 > 0xff) {
0x0000cace movls r0, 0x100 | r0 = 0x100;
| }
0x0000cad2 str r0, [r7, 0xc] | *((r7 + 0xc)) = r0;
0x0000cad4 b 0xc8f2 | goto label_30;
| label_84:
0x0000cad6 ldr r2, [sp, 4] | r2 = var_4h;
0x0000cad8 mov r1, r5 | r1 = r5;
0x0000cada mov r0, r6 | r0 = r6;
0x0000cadc blx 0x6004 | r0 = fcn_00006004 ();
0x0000cae0 cmp r0, 0 |
| if (r0 != 0) {
0x0000cae2 bne 0xcb8e | goto label_86;
| }
| label_32:
0x0000cae4 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000cae6 ldrb r3, [r0] | r3 = *(r0);
0x0000cae8 cmp r3, 0x31 |
| if (r3 != 0x31) {
0x0000caea bne 0xcb14 | goto label_87;
| }
0x0000caec ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0000caee cbnz r3, 0xcb14 |
| while (r0 == 0) {
0x0000caf0 movs r3, 1 | r3 = 1;
0x0000caf2 strh.w r3, [r8, 0x528] | *((r8 + 0x528)) = r3;
0x0000caf6 b 0xc7d6 | goto label_14;
| label_51:
0x0000caf8 str.w r8, [r2, 8] | __asm ("str.w r8, [r2, 8]");
0x0000cafc b 0xc52e | goto label_31;
| label_41:
0x0000cafe add.w r3, r6, 0x16000 | r3 = r6 + 0x16000;
0x0000cb02 str r3, [sp, 8] | var_8h = r3;
| label_69:
0x0000cb04 ldr r2, [sp, 8] | r2 = var_8h;
0x0000cb06 mov.w r3, -1 | r3 = -1;
0x0000cb0a mov r0, r3 | r0 = r3;
0x0000cb0c str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x0000cb10 b.w 0xc284 | goto label_6;
| label_87:
0x0000cb14 ldr r1, [pc, 0x29c] |
0x0000cb16 add r1, pc | r1 = 0x198ce;
0x0000cb18 blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cb1c cmp r0, 0 |
0x0000cb1e beq 0xcaf0 |
| }
| label_33:
0x0000cb20 ldrsh.w r7, [r6, 2] | r7 = *((r6 + 2));
0x0000cb24 cmp r7, 1 |
| if (r7 == 1) {
0x0000cb26 beq 0xcbae | goto label_88;
| }
0x0000cb28 cmp r7, 2 |
| if (r7 == 2) {
0x0000cb2a bne 0xcb64 |
0x0000cb2c ldr r1, [pc, 0x288] |
0x0000cb2e mov r0, r5 | r0 = r5;
0x0000cb30 add r1, pc | r1 = 0x198ec;
0x0000cb32 blx 0x67c4 | r0 = fcn_000067c4 ();
| if (r0 != 0) {
0x0000cb36 cbz r0, 0xcb48 |
0x0000cb38 ldr r2, [pc, 0x280] |
0x0000cb3a mov r1, r5 | r1 = r5;
0x0000cb3c mov r0, r6 | r0 = r6;
0x0000cb3e add r2, pc | r2 = 0x198fe;
0x0000cb40 blx 0x6004 | r0 = fcn_00006004 ();
0x0000cb44 cmp r0, 0 |
| if (r0 != 0) {
0x0000cb46 bne 0xcc0e | goto label_89;
| }
| }
0x0000cb48 movs r3, 0x23 | r3 = 0x23;
0x0000cb4a movw r2, 0x3fe | r2 = 0x3fe;
0x0000cb4e strb.w r3, [sl, 0xd8] | *((sl + 0xd8)) = r3;
0x0000cb52 add.w r0, sl, 0xd9 | r0 = sl + 0xd9;
0x0000cb56 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0000cb58 blx 0x5b6c | fcn_00005b6c ();
0x0000cb5c movs r3, 0 | r3 = 0;
0x0000cb5e strb.w r3, [sl, 0x4d7] | *((sl + 0x4d7)) = r3;
0x0000cb62 b 0xc7d6 | goto label_14;
| }
0x0000cb64 ldr r2, [pc, 0x258] |
0x0000cb66 mov r1, r5 | r1 = r5;
0x0000cb68 mov r0, r6 | r0 = r6;
0x0000cb6a add r2, pc | r2 = 0x1992e;
0x0000cb6c blx 0x6004 | r0 = fcn_00006004 ();
0x0000cb70 cmp r0, 0 |
| if (r0 != 0) {
0x0000cb72 bne.w 0xc7d6 | goto label_14;
| }
0x0000cb76 ldr r1, [pc, 0x24c] |
0x0000cb78 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000cb7a add r1, pc | r1 = 0x19944;
0x0000cb7c blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cb80 cmp r0, 0 |
| if (r0 != 0) {
0x0000cb82 bne.w 0xc7d6 | goto label_14;
| }
| label_34:
0x0000cb86 movs r3, 1 | r3 = 1;
0x0000cb88 strh.w r3, [r8, 0x526] | *((r8 + 0x526)) = r3;
0x0000cb8c b 0xc7d6 | goto label_14;
| label_86:
0x0000cb8e ldr r2, [pc, 0x238] |
0x0000cb90 mov r1, r5 | r1 = r5;
0x0000cb92 mov r0, r6 | r0 = r6;
0x0000cb94 add r2, pc | r2 = 0x19962;
0x0000cb96 blx 0x6004 | r0 = fcn_00006004 ();
0x0000cb9a cmp r0, 0 |
| if (r0 == 0) {
0x0000cb9c beq 0xcae4 | goto label_32;
| }
0x0000cb9e b 0xcb20 | goto label_33;
| label_81:
0x0000cba0 ldr r2, [sp, 8] | r2 = var_8h;
0x0000cba2 movs r3, 0x14 | r3 = 0x14;
0x0000cba4 mov r0, r3 | r0 = r3;
0x0000cba6 str.w r3, [r2, 0x184] | __asm ("str.w r3, aav.0x000000ff");
0x0000cbaa b.w 0xc284 | goto label_6;
| label_88:
0x0000cbae ldr r2, [pc, 0x21c] |
0x0000cbb0 mov r1, r5 | r1 = r5;
0x0000cbb2 mov r0, r6 | r0 = r6;
0x0000cbb4 add r2, pc | r2 = 0x19986;
0x0000cbb6 blx 0x6004 | fcn_00006004 ();
0x0000cbba str r0, [sp] | *(sp) = r0;
| if (r0 != 0) {
0x0000cbbc cbnz r0, 0xcbf0 | goto label_90;
| }
0x0000cbbe ldr r7, [r4, 8] | r7 = *((r4 + 8));
0x0000cbc0 movs r1, 0x5b | r1 = 0x5b;
0x0000cbc2 mov r0, r7 | r0 = r7;
0x0000cbc4 blx 0x5ce0 | r0 = fcn_00005ce0 ();
0x0000cbc8 mov r5, r0 | r5 = r0;
0x0000cbca add.w r0, r6, 0x14800 | r0 = r6 + 0x14800;
0x0000cbce adds r0, 0xd8 | r0 += 0xd8;
0x0000cbd0 mov r1, r7 | r1 = r7;
| if (r5 != 0) {
0x0000cbd2 cbz r5, 0xcbdc |
0x0000cbd4 subs r2, r5, r7 | r2 = r5 - r7;
0x0000cbd6 cmp.w r2, 0x400 |
| if (r2 <= 0x400) {
0x0000cbda blo 0xcc2e | goto label_91;
| }
| }
0x0000cbdc movw r2, 0x3ff | r2 = 0x3ff;
0x0000cbe0 blx 0x5b6c | fcn_00005b6c ();
| do {
0x0000cbe4 movs r3, 0 | r3 = 0;
0x0000cbe6 strb.w r3, [r8, 0xd7] | *((r8 + 0xd7)) = r3;
0x0000cbea strb.w r3, [sl, 0xcd7] | *((sl + 0xcd7)) = r3;
0x0000cbee b 0xc7d6 | goto label_14;
| label_90:
0x0000cbf0 ldr r2, [pc, 0x1dc] |
0x0000cbf2 mov r1, r5 | r1 = r5;
0x0000cbf4 mov r0, r6 | r0 = r6;
0x0000cbf6 add r2, pc | r2 = 0x199ca;
0x0000cbf8 blx 0x6004 | r0 = fcn_00006004 ();
| if (r0 != 0) {
0x0000cbfc cbnz r0, 0xcc58 | goto label_92;
| }
0x0000cbfe ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0000cc00 mov.w r2, 0x400 | r2 = 0x400;
0x0000cc04 add.w r0, r8, 0xd8 | r0 = r8 + 0xd8;
0x0000cc08 blx 0x5b6c | fcn_00005b6c ();
0x0000cc0c b 0xc7d6 | goto label_14;
| label_89:
0x0000cc0e ldr r2, [pc, 0x1c4] |
0x0000cc10 mov r1, r5 | r1 = r5;
0x0000cc12 mov r0, r6 | r0 = r6;
0x0000cc14 add r2, pc | r2 = 0x199ee;
0x0000cc16 blx 0x6004 | r0 = fcn_00006004 ();
| if (r0 != 0) {
0x0000cc1a cbnz r0, 0xcc78 | goto label_93;
| }
0x0000cc1c add.w r0, r6, 0x14800 | r0 = r6 + 0x14800;
0x0000cc20 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0000cc22 movw r2, 0x3ff | r2 = 0x3ff;
0x0000cc26 adds r0, 0xd8 | r0 += 0xd8;
0x0000cc28 blx 0x5b6c | fcn_00005b6c ();
0x0000cc2c b 0xc7d6 | goto label_14;
| label_91:
0x0000cc2e mov.w r3, 0x400 | r3 = 0x400;
0x0000cc32 blx 0x5d1c | fcn_00005d1c ();
0x0000cc36 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000cc38 add.w r0, r6, 0x14c00 | r0 = r6 + 0x14c00;
0x0000cc3c ldr r2, [sp] | r2 = *(sp);
0x0000cc3e mov r1, r5 | r1 = r5;
0x0000cc40 adds r0, 0xd8 | r0 += 0xd8;
0x0000cc42 subs r3, r5, r3 | r3 = r5 - r3;
0x0000cc44 add r3, r6 | r3 += r6;
0x0000cc46 add.w r3, r3, 0x14800 | r3 += 0x14800;
0x0000cc4a strb.w r2, [r3, 0xd8] | *((r3 + 0xd8)) = r2;
0x0000cc4e movw r2, 0x3ff | r2 = 0x3ff;
0x0000cc52 blx 0x5b6c | fcn_00005b6c ();
0x0000cc56 b 0xcbe4 |
| } while (1);
| label_92:
0x0000cc58 ldr r2, [pc, 0x17c] |
0x0000cc5a mov r1, r5 | r1 = r5;
0x0000cc5c mov r0, r6 | r0 = r6;
0x0000cc5e add r2, pc | r2 = 0x19a3a;
0x0000cc60 blx 0x6004 | r0 = fcn_00006004 ();
| if (r0 == 0) {
0x0000cc64 cbnz r0, 0xcc9a |
0x0000cc66 add.w r1, r6, 0x15400 | r1 = r6 + 0x15400;
0x0000cc6a ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000cc6c adds r1, 0xdc | r1 += 0xdc;
0x0000cc6e blx 0x5d10 | fcn_00005d10 ();
0x0000cc72 strh.w r0, [r8, 0x4da] | *((r8 + 0x4da)) = r0;
0x0000cc76 b 0xc7d6 | goto label_14;
| label_93:
0x0000cc78 ldr r2, [pc, 0x160] |
0x0000cc7a mov r1, r5 | r1 = r5;
0x0000cc7c mov r0, r6 | r0 = r6;
0x0000cc7e add r2, pc | r2 = 0x19a5e;
0x0000cc80 blx 0x6004 | r0 = fcn_00006004 ();
0x0000cc84 cmp r0, 0 |
| if (r0 != 0) {
0x0000cc86 bne 0xcd38 | goto label_94;
| }
0x0000cc88 add.w r0, r6, 0x14c00 | r0 = r6 + 0x14c00;
0x0000cc8c ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0000cc8e movw r2, 0x3ff | r2 = 0x3ff;
0x0000cc92 adds r0, 0xd8 | r0 += 0xd8;
0x0000cc94 blx 0x5b6c | fcn_00005b6c ();
0x0000cc98 b 0xc7d6 | goto label_14;
| }
0x0000cc9a ldr r2, [pc, 0x144] |
0x0000cc9c mov r1, r5 | r1 = r5;
0x0000cc9e mov r0, r6 | r0 = r6;
0x0000cca0 add r2, pc | r2 = 0x19a86;
0x0000cca2 blx 0x6004 | r0 = fcn_00006004 ();
| if (r0 == 0) {
0x0000cca6 cbnz r0, 0xcccc |
0x0000cca8 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x0000ccaa ldr r1, [pc, 0x138] |
0x0000ccac mov r0, r5 | r0 = r5;
0x0000ccae add r1, pc | r1 = 0x19a98;
0x0000ccb0 blx 0x67c4 | r0 = fcn_000067c4 ();
| if (r0 != 0) {
0x0000ccb4 cbz r0, 0xccc6 |
0x0000ccb6 ldr r1, [pc, 0x130] |
0x0000ccb8 mov r0, r5 | r0 = r5;
0x0000ccba add r1, pc | r1 = 0x19aa8;
0x0000ccbc blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000ccc0 clz r7, r0 | r7 &= r0;
0x0000ccc4 lsrs r7, r7, 5 | r7 >>= 5;
| }
0x0000ccc6 strh.w r7, [r8, 0x51c] | *((r8 + 0x51c)) = r7;
0x0000ccca b 0xc7d6 | goto label_14;
| }
0x0000cccc ldr r2, [pc, 0x11c] |
0x0000ccce mov r1, r5 | r1 = r5;
0x0000ccd0 mov r0, r6 | r0 = r6;
0x0000ccd2 add r2, pc | r2 = 0x19ac2;
0x0000ccd4 blx 0x6004 | r0 = fcn_00006004 ();
| if (r0 != 0) {
0x0000ccd8 cbnz r0, 0xccfc | goto label_95;
| }
0x0000ccda ldr r7, [r4, 8] | r7 = *((r4 + 8));
0x0000ccdc ldr r1, [pc, 0x110] |
0x0000ccde mov r0, r7 | r0 = r7;
0x0000cce0 add r1, pc | r1 = 0x19ad4;
0x0000cce2 blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cce6 cmp r0, 0 |
| if (r0 == 0) {
0x0000cce8 beq.w 0xcb86 | goto label_34;
| }
0x0000ccec ldr r1, [pc, 0x104] |
0x0000ccee mov r0, r7 | r0 = r7;
0x0000ccf0 add r1, pc | r1 = 0x19ae8;
0x0000ccf2 blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000ccf6 cmp r0, 0 |
| if (r0 == 0) {
0x0000ccf8 beq.w 0xcb86 | goto label_34;
| }
| label_95:
0x0000ccfc ldr r2, [pc, 0xf8] |
0x0000ccfe mov r1, r5 | r1 = r5;
0x0000cd00 mov r0, r6 | r0 = r6;
0x0000cd02 add r2, pc | r2 = 0x19afe;
0x0000cd04 blx 0x6004 | r0 = fcn_00006004 ();
0x0000cd08 cmp r0, 0 |
| if (r0 != 0) {
0x0000cd0a bne.w 0xc7d6 | goto label_14;
| }
0x0000cd0e ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0000cd10 ldr r5, [r4, 8] | r5 = *((r4 + 8));
| if (r0 == 0) {
0x0000cd12 cbz r0, 0xcd20 | goto label_96;
| }
0x0000cd14 mov r1, r5 | r1 = r5;
0x0000cd16 blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cd1a cmp r0, 0 |
| if (r0 == 0) {
0x0000cd1c beq.w 0xc7d6 | goto label_14;
| }
| label_96:
0x0000cd20 ldr r1, [pc, 0xd8] |
0x0000cd22 mov r0, r5 | r0 = r5;
0x0000cd24 add r1, pc | r1 = 0x19b24;
0x0000cd26 blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cd2a cmp r0, 0 |
| if (r0 == 0) {
0x0000cd2c beq.w 0xc7d6 | goto label_14;
| }
| label_35:
0x0000cd30 movs r3, 1 | r3 = 1;
0x0000cd32 strh.w r3, [r8, 0x4d8] | *((r8 + 0x4d8)) = r3;
0x0000cd36 b 0xc7d6 | goto label_14;
| label_94:
0x0000cd38 ldr r2, [pc, 0xc4] |
0x0000cd3a mov r1, r5 | r1 = r5;
0x0000cd3c mov r0, r6 | r0 = r6;
0x0000cd3e add r2, pc | r2 = 0x19b42;
0x0000cd40 blx 0x6004 | r0 = fcn_00006004 ();
| if (r0 != 0) {
0x0000cd44 cbnz r0, 0xcd68 | goto label_97;
| }
0x0000cd46 ldr r7, [r4, 8] | r7 = *((r4 + 8));
0x0000cd48 ldr r1, [pc, 0xb8] |
0x0000cd4a mov r0, r7 | r0 = r7;
0x0000cd4c add r1, pc | r1 = 0x19b54;
0x0000cd4e blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cd52 cmp r0, 0 |
| if (r0 == 0) {
0x0000cd54 beq.w 0xcb86 | goto label_34;
| }
0x0000cd58 ldr r1, [pc, 0xac] |
0x0000cd5a mov r0, r7 | r0 = r7;
0x0000cd5c add r1, pc | r1 = 0x19b68;
0x0000cd5e blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cd62 cmp r0, 0 |
| if (r0 == 0) {
0x0000cd64 beq.w 0xcb86 | goto label_34;
| }
| label_97:
0x0000cd68 ldr r2, [pc, 0xa0] |
0x0000cd6a mov r1, r5 | r1 = r5;
0x0000cd6c mov r0, r6 | r0 = r6;
0x0000cd6e add r2, pc | r2 = 0x19b7e;
0x0000cd70 blx 0x6004 | r0 = fcn_00006004 ();
0x0000cd74 cmp r0, 0 |
| if (r0 != 0) {
0x0000cd76 bne.w 0xc7d6 | goto label_14;
| }
0x0000cd7a ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0000cd7c ldr r5, [r4, 8] | r5 = *((r4 + 8));
| if (r0 == 0) {
0x0000cd7e cbz r0, 0xcd8c | goto label_98;
| }
0x0000cd80 mov r1, r5 | r1 = r5;
0x0000cd82 blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cd86 cmp r0, 0 |
| if (r0 == 0) {
0x0000cd88 beq.w 0xc7d6 | goto label_14;
| }
| label_98:
0x0000cd8c ldr r1, [pc, 0x80] |
0x0000cd8e mov r0, r5 | r0 = r5;
0x0000cd90 add r1, pc | r1 = 0x19ba4;
0x0000cd92 blx 0x67c4 | r0 = fcn_000067c4 ();
0x0000cd96 cmp r0, 0 |
| if (r0 != 0) {
0x0000cd98 bne 0xcd30 | goto label_35;
| }
0x0000cd9a b 0xc7d6 | goto label_14;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0xf68c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.soap_string_in () | void soap_string_in (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| size_t nbyte;
| int16_t var_3ch;
| int16_t var_3dh;
| int16_t var_3eh;
| int16_t var_1h;
| int16_t var_44h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000f68c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000f690 sub sp, 0x4c |
0x0000f692 str r2, [sp, 0x2c] | var_2ch = r2;
0x0000f694 mov r8, r0 | r8 = r0;
0x0000f696 add.w r5, r8, 0x15000 | r5 = r8 + 0x15000;
0x0000f69a movs r0, 0 | r0 = 0;
0x0000f69c ldr.w r2, [pc, 0xb84] | r2 = *(0x00010224);
0x0000f6a0 str r3, [sp, 0x14] | var_14h = r3;
0x0000f6a2 ldr.w r3, [pc, 0xb84] |
0x0000f6a6 add r2, pc | r2 += pc;
0x0000f6a8 ldrsh.w r7, [r5, 0x530] | r7 = *((r5 + 0x530));
0x0000f6ac str r1, [sp, 0x1c] | var_1ch = r1;
0x0000f6ae ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000f6b0 ldr r3, [r3] | r3 = *(0x1022a);
0x0000f6b2 str r3, [sp, 0x44] | var_44h = r3;
0x0000f6b4 mov.w r3, 0 | r3 = 0;
0x0000f6b8 str r0, [sp, 0x38] | nbyte = r0;
| if (r7 != 0) {
0x0000f6ba cbz r7, 0xf6ca |
0x0000f6bc add.w r3, r8, 0x13000 | r3 = r8 + 0x13000;
0x0000f6c0 ldrb.w r7, [r3, 0x8d8] | r7 = *((r3 + 0x8d8));
0x0000f6c4 cmp r7, 0 |
| if (r7 != 0) {
0x0000f6c6 bne.w 0xfdfa | goto label_36;
| }
| }
0x0000f6ca add.w r3, r8, 0x3000 | r3 = r8 + 0x3000;
0x0000f6ce str r7, [sp, 0x18] | var_18h = r7;
0x0000f6d0 str r3, [sp, 0x10] | var_10h = r3;
0x0000f6d2 str r7, [sp, 0x20] | var_20h = r7;
| label_25:
0x0000f6d4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000f6d6 cmp r3, 0 |
| if (r3 != 0) {
0x0000f6d8 bne.w 0xfab0 | goto label_37;
| }
0x0000f6dc ldr.w r1, [pc, 0xb4c] | r1 = *(0x0001022c);
0x0000f6e0 mov r6, r3 | r6 = r3;
0x0000f6e2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000f6e4 str r3, [sp, 0xc] | var_ch = r3;
0x0000f6e6 add r1, pc | r1 += pc;
0x0000f6e8 str r1, [sp, 0x30] | var_30h = r1;
0x0000f6ea mov sb, r2 | sb = r2;
0x0000f6ec ldr.w r1, [pc, 0xb40] |
0x0000f6f0 str.w r3, [r2, 0xd4] | __asm ("str.w r3, [r2, 0xd4]");
0x0000f6f4 add r1, pc | r1 = 0x1f928;
0x0000f6f6 str r1, [sp, 0x34] | var_34h = r1;
| do {
| label_1:
0x0000f6f8 movs r2, 0 | r2 = 0;
0x0000f6fa mov r0, r8 | r0 = r8;
0x0000f6fc mov r1, r2 | r1 = r2;
0x0000f6fe blx 0x6514 | r0 = fcn_00006514 ();
0x0000f702 mov sl, r0 | sl = r0;
0x0000f704 cmp r0, 0 |
| if (r0 != 0) {
0x0000f706 bne.w 0xff42 | goto label_38;
| }
0x0000f70a ldr.w r2, [sb, 0xd4] | r2 = *((sb + 0xd4));
0x0000f70e ldr.w r1, [sb, 0xd0] | r1 = *((sb + 0xd0));
0x0000f712 ldr.w r4, [sb, 0xcc] | r4 = *((sb + 0xcc));
0x0000f716 subs.w fp, r1, r2 |
0x0000f71a str.w r1, [sb, 0xd4] | __asm ("str.w r1, [sb, 0xd4]");
0x0000f71e add r4, r2 | r4 += r2;
0x0000f720 beq 0xf6f8 |
| } while (fp == r1);
0x0000f722 mov r3, r8 | r3 = r8;
0x0000f724 mov r8, r7 | r8 = r7;
0x0000f726 mov r7, r3 | r7 = r3;
0x0000f728 b 0xf742 |
| while (r8 > 0) {
0x0000f72a ldr r3, [sp, 0x38] | r3 = nbyte;
0x0000f72c add.w r8, r8, -1 | r8 += -1;
0x0000f730 adds r2, r3, 1 | r2 = r3 + 1;
0x0000f732 str r2, [sp, 0x38] | nbyte = r2;
0x0000f734 ldrb r3, [r3] | r3 = *(r3);
0x0000f736 strb r3, [r4], 1 | *(r4) = r3;
| r4++;
| label_3:
0x0000f73a add.w sl, sl, 1 | sl++;
0x0000f73e cmp fp, sl |
| if (fp == sl) {
0x0000f740 beq 0xf818 | goto label_39;
| }
| label_0:
0x0000f742 cmp.w r8, 0 |
0x0000f746 bgt 0xf72a |
| }
0x0000f748 mov r0, r7 | r0 = r7;
0x0000f74a blx 0x61b8 | r0 = snprintf_chk ()
0x0000f74e adds r1, r0, 1 | r1 = r0 + 1;
0x0000f750 mov r5, r0 | r5 = r0;
| if (r1 == r0) {
0x0000f752 beq.w 0xfdf2 | goto label_31;
| }
0x0000f756 cmp r6, 1 |
0x0000f758 it ne |
| if (r6 != 1) {
0x0000f75a cmpne r0, 0x7f | __asm ("cmpne r0, 0x7f");
| }
| if (r6 <= 1) {
0x0000f75c ble 0xf7a4 | goto label_2;
| }
0x0000f75e ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f760 lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 >= r3) {
0x0000f762 bpl.w 0xf888 | goto label_5;
| }
0x0000f766 subs r6, 1 | r6--;
0x0000f768 cmp r6, 7 |
| if (r6 > 7) {
0x0000f76a bhi.w 0xfa38 | goto label_30;
| }
| /* switch table (9 cases) at 0xf772 */
0x0000f76e tbh [pc, r6, lsl 1] | __asm ("tbh [pc, r6, lsl 1]");
0x0000f782 cmp r5, 0x5d |
| if (r5 == 0x5d) {
0x0000f784 beq 0xf820 | goto label_40;
| }
| label_12:
0x0000f786 add.w sl, sl, 1 | sl++;
0x0000f78a strb r5, [r4], 1 | *(r4) = r5;
| r4++;
0x0000f78e cmp fp, sl |
| if (fp == sl) {
0x0000f790 beq.w 0xf96e | goto label_41;
| }
| label_10:
0x0000f794 mov r0, r7 | r0 = r7;
0x0000f796 movs r6, 1 | r6 = 1;
0x0000f798 blx 0x61b8 | r0 = snprintf_chk ()
0x0000f79c adds r1, r0, 1 | r1 = r0 + 1;
0x0000f79e mov r5, r0 | r5 = r0;
| if (r1 == r0) {
0x0000f7a0 beq.w 0xfdf2 | goto label_31;
| }
| do {
| label_2:
0x0000f7a4 subs r6, 1 | r6--;
0x0000f7a6 cmp r6, 7 |
| if (r6 > 7) {
0x0000f7a8 bhi.w 0x10008 | goto label_42;
| }
0x0000f7ac adr r3, 8 | r3 = 8;
0x0000f7ae ldr.w r6, [r3, r6, lsl 2] | offset_0 = r6 << 2;
| r6 = *((r3 + offset_0));
0x0000f7b2 add r3, r6 | r3 += r6;
| /* switch table (8 cases) at 0xf7b8 */
0x0000f7b4 bx r3 | return uint32_t (*r3)() ();
| label_8:
0x0000f7d8 add.w sl, sl, 1 | sl++;
0x0000f7dc strb r5, [r4], 1 | *(r4) = r5;
| r4++;
0x0000f7e0 cmp fp, sl |
| if (fp == sl) {
0x0000f7e2 beq.w 0xffc8 | goto label_43;
| }
0x0000f7e6 mov r0, r7 | r0 = r7;
0x0000f7e8 blx 0x61b8 | r0 = snprintf_chk ()
0x0000f7ec adds r2, r0, 1 | r2 = r0 + 1;
0x0000f7ee mov r5, r0 | r5 = r0;
| if (r2 == r0) {
0x0000f7f0 beq.w 0xfdf2 | goto label_31;
| }
0x0000f7f4 cmp r0, 0x7f |
0x0000f7f6 mov.w r6, 7 | r6 = 7;
0x0000f7fa ble 0xf7a4 |
| } while (r0 <= 0x7f);
0x0000f7fc ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f7fe lsls r3, r3, 0x1a | r3 <<= 0x1a;
0x0000f800 str r0, [r0] | *(r0) = r0;
0x0000f802 movs r1, r0 | r1 = r0;
0x0000f804 lsrs r1, r0, 8 | r1 = r0 >> 8;
0x0000f806 strb r5, [r4], 1 | *(r4) = r5;
| r4++;
0x0000f80a subs r5, 0x3e | r5 -= 0x3e;
0x0000f80c it ne |
| if (r5 == 0x3e) {
0x0000f80e movne r5, 1 | r5 = 1;
| }
0x0000f810 cmp fp, sl |
0x0000f812 lsl.w r6, r5, 1 | r6 = r5 << 1;
| if (fp != sl) {
0x0000f816 bne 0xf742 | goto label_0;
| }
| label_39:
0x0000f818 mov r3, r7 | r3 = r7;
0x0000f81a mov r7, r8 | r7 = r8;
0x0000f81c mov r8, r3 | r8 = r3;
0x0000f81e b 0xf6f8 | goto label_1;
| label_40:
0x0000f820 add.w sl, sl, 1 | sl++;
0x0000f824 strb r5, [r4], 1 | *(r4) = r5;
| r4++;
0x0000f828 cmp fp, sl |
| if (fp == sl) {
0x0000f82a beq.w 0xffec | goto label_44;
| }
0x0000f82e mov r0, r7 | r0 = r7;
0x0000f830 blx 0x61b8 | r0 = snprintf_chk ()
0x0000f834 adds r2, r0, 1 | r2 = r0 + 1;
0x0000f836 mov r5, r0 | r5 = r0;
| if (r2 == r0) {
0x0000f838 beq.w 0xfdf2 | goto label_31;
| }
0x0000f83c cmp r0, 0x7f |
0x0000f83e mov.w r6, 5 | r6 = 5;
| if (r0 <= 0x7f) {
0x0000f842 ble 0xf7a4 | goto label_2;
| }
0x0000f844 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f846 lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 >= r3) {
0x0000f848 bpl 0xf888 | goto label_5;
| }
0x0000f84a subs.w r6, r5, 0x3e | r6 = r5 - 0x3e;
0x0000f84e strb r5, [r4], 1 | *(r4) = r5;
| r4++;
0x0000f852 it ne |
| if (r6 == r5) {
0x0000f854 movne r6, 1 | r6 = 1;
| }
0x0000f856 b 0xf73a | goto label_3;
| label_4:
0x0000f858 cmp r5, 0x2d |
0x0000f85a add.w sl, sl, 1 | sl++;
0x0000f85e strb r5, [r4], 1 | *(r4) = r5;
| r4++;
| if (r5 == 0x2d) {
0x0000f862 beq.w 0xf978 | goto label_45;
| }
| label_9:
0x0000f866 cmp fp, sl |
| if (fp == sl) {
0x0000f868 beq.w 0xff9a | goto label_46;
| }
0x0000f86c mov r0, r7 | r0 = r7;
0x0000f86e blx 0x61b8 | r0 = snprintf_chk ()
0x0000f872 mov r5, r0 | r5 = r0;
0x0000f874 adds r0, r5, 1 | r0 = r5 + 1;
| if (r0 == r5) {
0x0000f876 beq.w 0xfdf2 | goto label_31;
| }
0x0000f87a cmp r5, 0x7f |
0x0000f87c mov.w r6, 2 | r6 = 2;
| if (r5 <= 0x7f) {
0x0000f880 ble 0xf7a4 | goto label_2;
| }
0x0000f882 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f884 lsls r1, r3, 0x1a | r1 = r3 << 0x1a;
| if (r1 < r3) {
0x0000f886 bmi 0xf858 | goto label_4;
| }
| label_5:
0x0000f888 str.w r5, [sb, 0xb8] | __asm ("str.w r5, [sb, 0xb8]");
0x0000f88c mov r0, r7 | r0 = r7;
0x0000f88e blx 0x6854 | fcn_00006854 ();
0x0000f892 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f894 mov r5, r0 | r5 = r0;
0x0000f896 lsls r3, r3, 0xa | r3 <<= 0xa;
| if (r3 >= r3) {
0x0000f898 bpl 0xf7a4 | goto label_2;
| }
0x0000f89a mov.w r0, 0xf800 | r0 = 0xf800;
0x0000f89e bic r3, r5, 0x80000000 | r3 = BIT_MASK (r5, 0x80000000);
0x0000f8a2 movt r0, 0x7fff | r0 = (r0 & 0xFFFF) | 0x7fff0000;
0x0000f8a6 sbfx r2, r5, 6, 8 | __asm ("sbfx r2, r5, 6, 8");
0x0000f8aa ands r0, r5 | r0 &= r5;
0x0000f8ac cmp r0, 0 |
| if (r0 != 0) {
0x0000f8ae bne.w 0xfa7a | goto label_47;
| }
0x0000f8b2 and r2, r2, 0x1f | r2 &= 0x1f;
0x0000f8b6 add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000f8ba orn r2, r2, 0x3f | r2 |= 0x3f;
| r2 = ~r2;
0x0000f8be strb.w r2, [sp, 0x3c] | var_3ch = r2;
0x0000f8c2 mov r2, r0 | r2 = r0;
| label_13:
0x0000f8c4 and r3, r3, 0x3f | r3 &= 0x3f;
0x0000f8c8 adds r5, r2, 1 | r5 = r2 + 1;
0x0000f8ca orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x0000f8cc lsls r7, r7, 0xd | r7 <<= 0xd;
0x0000f8ce str r5, [sp, 0x38] | nbyte = r5;
0x0000f8d0 strb r3, [r2] | *(r2) = r3;
0x0000f8d2 ldrb.w r2, [sp, 0x3c] | r2 = var_3ch;
0x0000f8d6 ldr r3, [sp, 0x38] | r3 = nbyte;
0x0000f8d8 str r0, [sp, 0x38] | nbyte = r0;
0x0000f8da strb r2, [r4], 1 | *(r4) = r2;
| r4++;
0x0000f8de add r2, sp, 0x3c | r2 += var_3ch;
0x0000f8e0 sub.w r8, r3, r2 | r8 = r3 - r2;
0x0000f8e4 add.w r8, r8, -1 | r8 += -1;
0x0000f8e8 b 0xf73a | goto label_3;
0x0000f8ea cmp r5, 0x3e |
| if (r5 == 0x3e) {
0x0000f8ec beq 0xf9c8 | goto label_48;
| }
| label_7:
0x0000f8ee add.w sl, sl, 1 | sl++;
0x0000f8f2 strb r5, [r4], 1 | *(r4) = r5;
| r4++;
| label_6:
0x0000f8f6 cmp fp, sl |
| if (fp == sl) {
0x0000f8f8 beq.w 0xff8e | goto label_49;
| }
0x0000f8fc mov r0, r7 | r0 = r7;
0x0000f8fe blx 0x61b8 | r0 = snprintf_chk ()
0x0000f902 adds r6, r0, 1 | r6 = r0 + 1;
0x0000f904 mov r5, r0 | r5 = r0;
| if (r6 == r0) {
0x0000f906 beq.w 0xfdf2 | goto label_31;
| }
0x0000f90a cmp r0, 0x7f |
0x0000f90c mov.w r6, 3 | r6 = 3;
| if (r0 <= 0x7f) {
0x0000f910 ble.w 0xf7a4 | goto label_2;
| }
0x0000f914 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f916 lsls r0, r3, 0x1a | r0 = r3 << 0x1a;
| if (r0 >= r3) {
0x0000f918 bpl 0xf888 | goto label_5;
| }
0x0000f91a cmp r5, 0x3f |
0x0000f91c add.w sl, sl, 1 | sl++;
0x0000f920 strb r5, [r4], 1 | *(r4) = r5;
| r4++;
| if (r5 != 0x3f) {
0x0000f924 bne 0xf8f6 | goto label_6;
| }
0x0000f926 cmp fp, sl |
| if (fp == sl) {
0x0000f928 beq.w 0xffe0 | goto label_50;
| }
0x0000f92c mov r0, r7 | r0 = r7;
0x0000f92e blx 0x61b8 | r0 = snprintf_chk ()
0x0000f932 adds r6, r0, 1 | r6 = r0 + 1;
0x0000f934 mov r5, r0 | r5 = r0;
| if (r6 == r0) {
0x0000f936 beq.w 0xfdf2 | goto label_31;
| }
0x0000f93a cmp r0, 0x7f |
0x0000f93c mov.w r6, 8 | r6 = 8;
| if (r0 <= 0x7f) {
0x0000f940 ble.w 0xf7a4 | goto label_2;
| }
0x0000f944 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f946 lsls r0, r3, 0x1a | r0 = r3 << 0x1a;
| if (r0 >= r3) {
0x0000f948 bpl 0xf888 | goto label_5;
| }
0x0000f94a b 0xf8ee | goto label_7;
0x0000f94c cmp r5, 0x2d |
| if (r5 == 0x2d) {
0x0000f94e beq.w 0xf7d8 | goto label_8;
| }
| label_11:
0x0000f952 add.w sl, sl, 1 | sl++;
0x0000f956 strb r5, [r4], 1 | *(r4) = r5;
| r4++;
0x0000f95a b 0xf866 | goto label_9;
0x0000f95c cmp r5, 0x5d |
0x0000f95e add.w sl, sl, 1 | sl++;
0x0000f962 strb r5, [r4], 1 | *(r4) = r5;
| r4++;
| if (r5 == 0x5d) {
0x0000f966 beq 0xf9a0 | goto label_51;
| }
0x0000f968 cmp sl, fp |
| if (sl != fp) {
0x0000f96a bne.w 0xf794 | goto label_10;
| }
| label_41:
0x0000f96e mov r3, r7 | r3 = r7;
0x0000f970 movs r6, 1 | r6 = 1;
0x0000f972 mov r7, r8 | r7 = r8;
0x0000f974 mov r8, r3 | r8 = r3;
0x0000f976 b 0xf6f8 | goto label_1;
| label_45:
0x0000f978 cmp fp, sl |
| if (fp == sl) {
0x0000f97a beq.w 0xffd4 | goto label_52;
| }
0x0000f97e mov r0, r7 | r0 = r7;
0x0000f980 blx 0x61b8 | r0 = snprintf_chk ()
0x0000f984 adds r2, r0, 1 | r2 = r0 + 1;
0x0000f986 mov r5, r0 | r5 = r0;
| if (r2 == r0) {
0x0000f988 beq.w 0xfdf2 | goto label_31;
| }
0x0000f98c cmp r0, 0x7f |
0x0000f98e mov.w r6, 6 | r6 = 6;
| if (r0 <= 0x7f) {
0x0000f992 ble.w 0xf7a4 | goto label_2;
| }
0x0000f996 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f998 lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 >= r3) {
0x0000f99a bpl.w 0xf888 | goto label_5;
| }
0x0000f99e b 0xf952 | goto label_11;
| label_51:
0x0000f9a0 cmp fp, sl |
| if (fp == sl) {
0x0000f9a2 beq.w 0xfff8 | goto label_53;
| }
0x0000f9a6 mov r0, r7 | r0 = r7;
0x0000f9a8 blx 0x61b8 | r0 = snprintf_chk ()
0x0000f9ac mov r5, r0 | r5 = r0;
0x0000f9ae adds r0, r5, 1 | r0 = r5 + 1;
| if (r0 == r5) {
0x0000f9b0 beq.w 0xfdf2 | goto label_31;
| }
0x0000f9b4 cmp r5, 0x7f |
0x0000f9b6 mov.w r6, 4 | r6 = 4;
| if (r5 <= 0x7f) {
0x0000f9ba ble.w 0xf7a4 | goto label_2;
| }
0x0000f9be ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000f9c0 lsls r1, r3, 0x1a | r1 = r3 << 0x1a;
| if (r1 < r3) {
0x0000f9c2 bmi.w 0xf786 | goto label_12;
| }
0x0000f9c6 b 0xf888 | goto label_5;
| label_48:
0x0000f9c8 add.w r3, sl, 1 | r3 = sl + 1;
0x0000f9cc mov r2, r4 | r2 = r4;
0x0000f9ce cmp fp, r3 |
0x0000f9d0 strb r5, [r2], 1 | *(r2) = r5;
| r2++;
0x0000f9d4 str r3, [sp, 0x28] | var_28h = r3;
0x0000f9d6 str r2, [sp, 0x24] | var_24h = r2;
| if (fp == r3) {
0x0000f9d8 beq.w 0xffbc | goto label_54;
| }
0x0000f9dc mov r0, r7 | r0 = r7;
0x0000f9de blx 0x61b8 | r0 = snprintf_chk ()
0x0000f9e2 adds r1, r0, 1 | r1 = r0 + 1;
0x0000f9e4 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0000f9e6 mov r5, r0 | r5 = r0;
| if (r1 == r0) {
0x0000f9e8 beq.w 0xffb2 | goto label_55;
| }
0x0000f9ec cmp r0, 0x7f |
0x0000f9ee ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r0 <= 0x7f) {
0x0000f9f0 ble.w 0xff06 | goto label_56;
| }
0x0000f9f4 ldr r6, [r7, 4] | r6 = *((r7 + 4));
0x0000f9f6 ands r6, r6, 0x20 | r6 &= 0x20;
| if (r6 == r6) {
0x0000f9fa beq.w 0xffac | goto label_57;
| }
0x0000f9fe ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000fa00 adds r4, 2 | r4 += 2;
0x0000fa02 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000fa04 strb r0, [r4, -0x1] | *((r4 - 0x1)) = r0;
0x0000fa08 adds r3, 1 | r3++;
0x0000fa0a cmp r2, r3 |
0x0000fa0c str r3, [sp, 0xc] | var_ch = r3;
| if (r2 <= r3) {
0x0000fa0e blo 0xfa4c | goto label_58;
| }
0x0000fa10 add.w sl, sl, 2 | sl += 2;
0x0000fa14 cmp fp, sl |
| if (fp == sl) {
0x0000fa16 beq.w 0xffbc | goto label_54;
| }
0x0000fa1a mov r0, r7 | r0 = r7;
0x0000fa1c blx 0x61b8 | r0 = snprintf_chk ()
0x0000fa20 adds r2, r0, 1 | r2 = r0 + 1;
0x0000fa22 mov r5, r0 | r5 = r0;
| if (r2 == r0) {
0x0000fa24 beq.w 0xfdf2 | goto label_31;
| }
0x0000fa28 cmp r0, 0x7f |
| if (r0 <= 0x7f) {
0x0000fa2a ble.w 0xffa6 | goto label_59;
| }
0x0000fa2e ldr r6, [r7, 4] | r6 = *((r7 + 4));
0x0000fa30 ands r6, r6, 0x20 | r6 &= 0x20;
| if (r6 == r6) {
0x0000fa34 beq.w 0xf888 | goto label_5;
| }
| label_30:
0x0000fa38 invalid |
0x0000fa3a strb r5, [r4], 1 | *(r4) = r5;
| r4++;
| label_32:
0x0000fa3e ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000fa40 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000fa42 adds r3, 1 | r3++;
0x0000fa44 cmp r2, r3 |
0x0000fa46 str r3, [sp, 0xc] | var_ch = r3;
| if (r2 >= r3) {
0x0000fa48 bhs.w 0xf73a | goto label_3;
| }
| label_58:
0x0000fa4c mov r8, r7 | r8 = r7;
| label_14:
0x0000fa4e movs r0, 0 | r0 = 0;
0x0000fa50 add.w r8, r8, 0x16000 | r8 += 0x16000;
0x0000fa54 movs r3, 0x2d | r3 = 0x2d;
0x0000fa56 str.w r3, [r8, 0x184] | __asm ("str.w r3, aav.0x000000ff");
| label_21:
0x0000fa5a ldr.w r2, [pc, 0x7d8] | r2 = *(0x00010234);
0x0000fa5e ldr.w r3, [pc, 0x7c8] | r3 = *(0x1022a);
0x0000fa62 add r2, pc | r2 += pc;
0x0000fa64 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000fa66 ldr r2, [r3] | r2 = *(0x1022a);
0x0000fa68 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000fa6a eors r2, r3 | r2 ^= r3;
0x0000fa6c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000fa70 bne.w 0x10004 | goto label_60;
| }
0x0000fa74 add sp, 0x4c |
0x0000fa76 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_47:
0x0000fa7a movs r0, 0 | r0 = 0;
0x0000fa7c sbfx ip, r3, 0xc, 8 | __asm ("sbfx ip, r3, 0xc, 8");
0x0000fa80 movt r0, 0x7fff | r0 = (r0 & 0xFFFF) | 0x7fff0000;
0x0000fa84 ands r0, r5 | r0 &= r5;
0x0000fa86 cmp r0, 0 |
| if (r0 != 0) {
0x0000fa88 bne.w 0xfd62 | goto label_61;
| }
0x0000fa8c and r0, ip, 0xf | r0 = ip & 0xf;
0x0000fa90 orn r0, r0, 0x1f | r0 |= 0x1f;
| r0 = ~r0;
0x0000fa94 strb.w r0, [sp, 0x3c] | var_3ch = r0;
0x0000fa98 add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000fa9c mov r5, r0 | r5 = r0;
| label_23:
0x0000fa9e and r2, r2, 0x3f | r2 &= 0x3f;
0x0000faa2 adds r1, r5, 1 | r1 = r5 + 1;
0x0000faa4 orn r2, r2, 0x7f | r2 |= 0x7f;
| r2 = ~r2;
0x0000faa8 str r1, [sp, 0x38] | nbyte = r1;
0x0000faaa strb r2, [r5] | *(r5) = r2;
0x0000faac ldr r2, [sp, 0x38] | r2 = nbyte;
0x0000faae b 0xf8c4 | goto label_13;
| label_37:
0x0000fab0 ldr.w r3, [pc, 0x784] |
0x0000fab4 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000fab6 ldr r5, [sp, 0x20] | r5 = var_20h;
0x0000fab8 add r3, pc | r3 = 0x1fcf4;
0x0000faba ldr.w fp, [sp, 0x14] | fp = var_14h;
0x0000fabe str r3, [sp, 0x24] | var_24h = r3;
0x0000fac0 movs r3, 0 | r3 = 0;
0x0000fac2 mov sb, r3 | sb = r3;
0x0000fac4 str.w r3, [r2, 0xd4] | __asm ("str.w r3, [r2, 0xd4]");
0x0000fac8 movw r3, 0xff79 |
0x0000facc movt r3, 0x7fff | r3 = 0x7fffff79;
0x0000fad0 str r3, [sp, 0xc] | var_ch = r3;
0x0000fad2 mov.w r3, 0xf800 |
0x0000fad6 movt r3, 0x7fff | r3 = 0x7ffff800;
0x0000fada str r3, [sp, 0x28] | var_28h = r3;
0x0000fadc mov r3, sb |
0x0000fade movt r3, 0x7fff | r3 = 0xNaN;
0x0000fae2 str r3, [sp, 0x30] | var_30h = r3;
| do {
| label_15:
0x0000fae4 movs r2, 0 | r2 = 0;
0x0000fae6 mov r0, r8 | r0 = r8;
0x0000fae8 mov r1, r2 | r1 = r2;
0x0000faea blx 0x6514 | r0 = fcn_00006514 ();
0x0000faee mov r6, r0 | r6 = r0;
0x0000faf0 cmp r0, 0 |
| if (r0 != 0) {
0x0000faf2 bne.w 0xff42 | goto label_38;
| }
0x0000faf6 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000faf8 ldr.w r3, [r1, 0xd4] | r3 = *((r1 + 0xd4));
0x0000fafc ldr.w r2, [r1, 0xd0] | r2 = *((r1 + 0xd0));
0x0000fb00 ldr.w r4, [r1, 0xcc] | r4 = *((r1 + 0xcc));
0x0000fb04 subs.w sl, r2, r3 | sl = r2 - r3;
0x0000fb08 str.w r2, [r1, 0xd4] | __asm ("str.w r2, [r1, 0xd4]");
0x0000fb0c add r4, r3 | r4 += r3;
| if (sl != r2) {
0x0000fb0e bne 0xfb52 | goto label_62;
| }
0x0000fb10 b 0xfae4 |
| } while (1);
| label_16:
0x0000fb12 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000fb16 mov r0, r8 | r0 = r8;
0x0000fb18 lsls r3, r3, 0xa | r3 <<= 0xa;
| if (r3 >= r3) {
0x0000fb1a bpl 0xfb66 | goto label_63;
| }
0x0000fb1c blx 0x62d0 | r0 = fcn_000062d0 ();
0x0000fb20 cmp r0, 0 |
| if (r0 < 0) {
0x0000fb22 blt 0xfc1e | goto label_64;
| }
| label_18:
0x0000fb24 cmp r0, 0x2f |
| if (r0 != 0x2f) {
0x0000fb26 bne 0xfba2 | goto label_65;
| }
| if (r5 != 0) {
0x0000fb28 cbz r5, 0xfb3e |
0x0000fb2a mov r0, r8 | r0 = r8;
0x0000fb2c blx 0x62d0 | r0 = fcn_000062d0 ();
0x0000fb30 adds r3, r0, 4 | r3 = r0 + 4;
0x0000fb32 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000fb34 it eq |
| if (r3 != r0) {
0x0000fb36 addeq r5, r5, -1 | r5 += -1;
| }
0x0000fb3a str.w r0, [r3, 0xb8] | __asm ("str.w r0, [r3, 0xb8]");
| }
0x0000fb3e movs r3, 0x2f | r3 = 0x2f;
0x0000fb40 strb r3, [r4], 1 | *(r4) = r3;
| r4++;
| label_19:
0x0000fb44 add.w sb, sb, 1 | sb++;
0x0000fb48 cmp sb, fp |
| if (sb > fp) {
0x0000fb4a bhi 0xfa4e | goto label_14;
| }
| label_17:
0x0000fb4c adds r6, 1 | r6++;
0x0000fb4e cmp sl, r6 |
| if (sl == r6) {
0x0000fb50 beq 0xfae4 | goto label_15;
| }
| label_62:
0x0000fb52 cmp r7, 0 |
| if (r7 <= 0) {
0x0000fb54 ble 0xfb12 | goto label_16;
| }
0x0000fb56 ldr r3, [sp, 0x38] | r3 = nbyte;
0x0000fb58 subs r7, 1 | r7--;
0x0000fb5a adds r2, r3, 1 | r2 = r3 + 1;
0x0000fb5c str r2, [sp, 0x38] | nbyte = r2;
0x0000fb5e ldrb r3, [r3] | r3 = *(r3);
0x0000fb60 strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x0000fb64 b 0xfb4c | goto label_17;
| label_63:
0x0000fb66 blx 0x6854 | r0 = fcn_00006854 ();
0x0000fb6a adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 >= r0) {
0x0000fb6c bge 0xfb24 | goto label_18;
| }
| label_20:
0x0000fb6e adds r2, r0, 6 | r2 = r0 + 6;
| if (r2 >= r0) {
0x0000fb70 bge 0xfbd4 | goto label_66;
| }
0x0000fb72 add.w r3, r0, -0x80000000 | r3 = r0 + -0x80000000;
0x0000fb76 subs r3, 0x22 | r3 -= 0x22;
0x0000fb78 cmp r3, 0x1c |
| if (r3 <= 0x1c) {
0x0000fb7a bhi 0xfba6 |
0x0000fb7c cmp r3, 0x1c |
| if (r3 > 0x1c) {
0x0000fb7e bhi 0xfba6 | goto label_67;
| }
| /* switch table (29 cases) at 0xfb84 */
0x0000fb80 tbb [pc, r3] | __asm ("tbb aav.0x000000ff");
| label_65:
0x0000fba2 adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x0000fba4 beq 0xfc2e | goto label_68;
| }
| }
| label_67:
0x0000fba6 strb r0, [r4], 1 | *(r4) = r0;
| r4++;
0x0000fbaa b 0xfb44 | goto label_19;
0x0000fbac movs r3, 0x3e | r3 = 0x3e;
0x0000fbae strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x0000fbb2 b 0xfb44 | goto label_19;
0x0000fbb4 movs r3, 0x22 | r3 = 0x22;
0x0000fbb6 strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x0000fbba b 0xfb44 | goto label_19;
0x0000fbbc movs r3, 0x26 | r3 = 0x26;
0x0000fbbe strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x0000fbc2 b 0xfb44 | goto label_19;
0x0000fbc4 movs r3, 0x3c | r3 = 0x3c;
0x0000fbc6 strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x0000fbca b 0xfb44 | goto label_19;
| do {
0x0000fbcc movs r3, 0x27 | r3 = 0x27;
0x0000fbce strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x0000fbd2 b 0xfb44 | goto label_19;
| label_66:
0x0000fbd4 adds r3, r0, 5 | r3 = r0 + 5;
0x0000fbd6 cmp r3, 3 |
0x0000fbd8 bhi 0xfbcc |
| } while (r3 > 3);
0x0000fbda adr r2, 8 | r2 = 8;
0x0000fbdc ldr.w r3, [r2, r3, lsl 2] | offset_1 = r3 << 2;
| r3 = *((r2 + offset_1));
0x0000fbe0 add r2, r3 | r2 += r3;
| /* switch table (4 cases) at 0xfbe4 */
0x0000fbe2 bx r2 | return uint32_t (*r2)() ();
| label_64:
0x0000fc1e ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000fc20 add.w r3, r0, -0x80000000 | r3 = r0 + -0x80000000;
0x0000fc24 subs r3, 0x80 | r3 -= 0x80;
0x0000fc26 cmp r3, r2 |
| if (r3 < r2) {
0x0000fc28 bls 0xfc90 | goto label_69;
| }
0x0000fc2a adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0000fc2c bne 0xfb6e | goto label_20;
| }
| label_68:
0x0000fc2e mov r5, r0 | r5 = r0;
| label_24:
0x0000fc30 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000fc32 movs r3, 0 | r3 = 0;
0x0000fc34 mov r0, r8 | r0 = r8;
0x0000fc36 str.w r5, [r2, 0xb8] | __asm ("str.w r5, [r2, 0xb8]");
0x0000fc3a strb r3, [r4] | *(r4) = r3;
0x0000fc3c ldr.w r1, [r2, 0xcc] | r1 = *((r2 + 0xcc));
0x0000fc40 blx 0x5c8c | fcn_00005c8c ();
0x0000fc44 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000fc46 str r0, [sp, 0x38] | nbyte = r0;
0x0000fc48 cmp sb, r3 |
| if (sb < r3) {
0x0000fc4a blt.w 0xfa4e | goto label_14;
| }
0x0000fc4e ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000fc52 lsls r2, r3, 7 | r2 = r3 << 7;
| if (r2 >= r3) {
0x0000fc54 bpl 0xfc6e | goto label_70;
| }
0x0000fc56 add.w r3, r8, 0x16000 | r3 = r8 + 0x16000;
0x0000fc5a ldr.w r3, [r3, 0x190] | r3 = *((r3 + 0x190));
| if (r3 == 0) {
0x0000fc5e cbz r3, 0xfc6e | goto label_70;
| }
0x0000fc60 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000fc62 cmp r2, 3 |
0x0000fc64 it eq |
| if (r2 == 3) {
0x0000fc66 streq r0, [r3, 0x2c] | *((r3 + 0x2c)) = r0;
| goto label_71;
| }
| if (r2 == 3) {
| label_71:
0x0000fc68 beq.w 0xfa5a | goto label_21;
| }
0x0000fc6c str r0, [r3, 0x18] | *((r3 + 0x18)) = r0;
| label_70:
0x0000fc6e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000fc70 cmp r3, 2 |
| if (r3 != 2) {
0x0000fc72 bne.w 0xfa5a | goto label_21;
| }
0x0000fc76 ldr r4, [sp, 0x14] | r4 = var_14h;
0x0000fc78 mov r1, r0 | r1 = r0;
0x0000fc7a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000fc7c add r2, sp, 0x38 | r2 += nbyte;
0x0000fc7e mov r0, r8 | r0 = r8;
0x0000fc80 str r4, [sp] | *(sp) = r4;
0x0000fc82 blx 0x5e40 | r0 = read (r0, r1, r2);
0x0000fc86 cmp r0, 0 |
| if (r0 != 0) {
0x0000fc88 bne.w 0xff42 | goto label_38;
| }
0x0000fc8c ldr r0, [sp, 0x38] | r0 = nbyte;
0x0000fc8e b 0xfa5a | goto label_21;
| label_69:
0x0000fc90 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0000fc92 bic r3, r0, 0x80000000 | r3 = BIT_MASK (r0, 0x80000000);
0x0000fc96 sbfx r2, r0, 6, 8 | __asm ("sbfx r2, r0, 6, 8");
0x0000fc9a tst r0, r1 |
| if ((r0 & r1) != 0) {
0x0000fc9c bne 0xfcd2 | goto label_72;
| }
0x0000fc9e and r2, r2, 0x1f | r2 &= 0x1f;
0x0000fca2 add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000fca6 orn r2, r2, 0x3f | r2 |= 0x3f;
| r2 = ~r2;
0x0000fcaa strb.w r2, [sp, 0x3c] | var_3ch = r2;
0x0000fcae mov r2, r0 | r2 = r0;
| do {
0x0000fcb0 and r3, r3, 0x3f | r3 &= 0x3f;
0x0000fcb4 adds r1, r2, 1 | r1 = r2 + 1;
0x0000fcb6 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x0000fcba str r1, [sp, 0x38] | nbyte = r1;
0x0000fcbc strb r3, [r2] | *(r2) = r3;
0x0000fcbe ldrb.w r3, [sp, 0x3c] | r3 = var_3ch;
0x0000fcc2 ldr r7, [sp, 0x38] | r7 = nbyte;
0x0000fcc4 str r0, [sp, 0x38] | nbyte = r0;
0x0000fcc6 strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x0000fcca add r3, sp, 0x3c | r3 += var_3ch;
0x0000fccc subs r7, r7, r3 | r7 -= r3;
0x0000fcce subs r7, 1 | r7--;
0x0000fcd0 b 0xfb4c | goto label_17;
| label_72:
0x0000fcd2 ldr r7, [sp, 0x30] | r7 = var_30h;
0x0000fcd4 sbfx r1, r3, 0xc, 8 | __asm ("sbfx r1, r3, 0xc, 8");
0x0000fcd8 tst r0, r7 |
| if ((r0 & r7) != 0) {
0x0000fcda bne 0xfd00 | goto label_73;
| }
0x0000fcdc and r1, r1, 0xf | r1 &= 0xf;
0x0000fce0 add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000fce4 orn r1, r1, 0x1f | r1 |= 0x1f;
| r1 = ~r1;
0x0000fce8 strb.w r1, [sp, 0x3c] | var_3ch = r1;
0x0000fcec mov r1, r0 | r1 = r0;
| label_22:
0x0000fcee and r2, r2, 0x3f | r2 &= 0x3f;
0x0000fcf2 adds r7, r1, 1 | r7 = r1 + 1;
0x0000fcf4 orn r2, r2, 0x7f | r2 |= 0x7f;
| r2 = ~r2;
0x0000fcf8 str r7, [sp, 0x38] | nbyte = r7;
0x0000fcfa strb r2, [r1] | *(r1) = r2;
0x0000fcfc ldr r2, [sp, 0x38] | r2 = nbyte;
0x0000fcfe b 0xfcb0 |
| } while (1);
| label_73:
0x0000fd00 mov.w ip, 0 |
0x0000fd04 sbfx r7, r3, 0x12, 8 | __asm ("sbfx r7, r3, 0x12, 8");
0x0000fd08 movt ip, 0x7fe0 |
0x0000fd0c and.w ip, r0, ip |
0x0000fd10 cmp.w ip, 0 |
| if (ip == 0) {
0x0000fd14 beq.w 0xfef2 | goto label_74;
| }
0x0000fd18 tst.w r0, 0x7c000000 |
0x0000fd1c lsr.w ip, r3, 0x18 |
| if ((r0 & 0x7c000000) != 0) {
0x0000fd20 bne.w 0xff22 | goto label_75;
| }
0x0000fd24 and r0, ip, 3 | r0 = ip & 3;
0x0000fd28 orn r0, r0, 7 | r0 |= 7;
| r0 = ~r0;
0x0000fd2c strb.w r0, [sp, 0x3c] | var_3ch = r0;
0x0000fd30 add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000fd34 mov ip, r0 |
| label_28:
0x0000fd36 and r7, r7, 0x3f | r7 &= 0x3f;
0x0000fd3a add.w lr, ip, 1 | lr += var_1h;
0x0000fd3e orn r7, r7, 0x7f | r7 |= 0x7f;
| r7 = ~r7;
0x0000fd42 str.w lr, [sp, 0x38] | __asm ("str.w lr, [nbyte]");
0x0000fd46 strb.w r7, [ip] | *(ip) = r7;
0x0000fd4a ldr r7, [sp, 0x38] | r7 = nbyte;
| label_26:
0x0000fd4c and r1, r1, 0x3f | r1 &= 0x3f;
0x0000fd50 add.w ip, r7, 1 |
0x0000fd54 orn r1, r1, 0x7f | r1 |= 0x7f;
| r1 = ~r1;
0x0000fd58 str.w ip, [sp, 0x38] | __asm ("str.w ip, [nbyte]");
0x0000fd5c strb r1, [r7] | *(r7) = r1;
0x0000fd5e ldr r1, [sp, 0x38] | r1 = nbyte;
0x0000fd60 b 0xfcee | goto label_22;
| label_61:
0x0000fd62 movs r0, 0 | r0 = 0;
0x0000fd64 sbfx lr, r3, 0x12, 8 | __asm ("sbfx lr, r3, 0x12, 8");
0x0000fd68 movt r0, 0x7fe0 | r0 = (r0 & 0xFFFF) | 0x7fe00000;
0x0000fd6c ands r0, r5 | r0 &= r5;
0x0000fd6e cmp r0, 0 |
| if (r0 == 0) {
0x0000fd70 beq.w 0xff0e | goto label_76;
| }
0x0000fd74 tst.w r5, 0x7c000000 |
0x0000fd78 lsr.w r0, r3, 0x18 | r0 = r3 >> 0x18;
| if ((r5 & 0x7c000000) != 0) {
0x0000fd7c bne.w 0xff46 | goto label_77;
| }
0x0000fd80 and r0, r0, 3 | r0 &= 3;
0x0000fd84 orn r0, r0, 7 | r0 |= 7;
| r0 = ~r0;
0x0000fd88 strb.w r0, [sp, 0x3c] | var_3ch = r0;
0x0000fd8c add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000fd90 mov r8, r0 | r8 = r0;
| label_29:
0x0000fd92 and r5, lr, 0x3f | r5 = lr & 0x3f;
0x0000fd96 add.w r1, r8, 1 | r1 += var_1h;
0x0000fd9a orn r5, r5, 0x7f | r5 |= 0x7f;
| r5 = ~r5;
0x0000fd9e str r1, [sp, 0x38] | nbyte = r1;
0x0000fda0 strb.w r5, [r8] | *(r8) = r5;
0x0000fda4 ldr r1, [sp, 0x38] | r1 = nbyte;
| label_27:
0x0000fda6 and r5, ip, 0x3f | r5 = ip & 0x3f;
0x0000fdaa add.w ip, r1, 1 |
0x0000fdae orn r5, r5, 0x7f | r5 |= 0x7f;
| r5 = ~r5;
0x0000fdb2 str.w ip, [sp, 0x38] | __asm ("str.w ip, [nbyte]");
0x0000fdb6 strb r5, [r1] | *(r1) = r5;
0x0000fdb8 ldr r5, [sp, 0x38] | r5 = nbyte;
0x0000fdba b 0xfa9e | goto label_23;
| label_31:
0x0000fdf2 ldr.w sb, [sp, 0xc] | sb = var_ch;
0x0000fdf6 mov r8, r7 | r8 = r7;
0x0000fdf8 b 0xfc30 | goto label_24;
| label_36:
0x0000fdfa strb.w r0, [r3, 0x8d7] | *((r3 + 0x8d7)) = r0;
0x0000fdfe movs r2, 0x3c | r2 = 0x3c;
0x0000fe00 add.w r0, r8, 0x13400 | r0 = r8 + 0x13400;
0x0000fe04 add.w r4, r8, 0x13800 | r4 = r8 + 0x13800;
0x0000fe08 strb.w r2, [r3, 0x4d8] | *((r3 + 0x4d8)) = r2;
0x0000fe0c add.w r7, r0, 0xd8 | r7 = r0 + 0xd8;
0x0000fe10 movw r2, 0x3fe | r2 = 0x3fe;
0x0000fe14 add.w r1, r4, 0xd8 | r1 = r4 + 0xd8;
0x0000fe18 adds r0, 0xd9 | r0 += 0xd9;
0x0000fe1a blx 0x5b6c | fcn_00005b6c ();
0x0000fe1e mov r0, r7 | r0 = r7;
0x0000fe20 blx 0x5fec | fcn_00005fec ();
0x0000fe24 ldr.w sl, [r5, 0x520] | sl = *((r5 + 0x520));
0x0000fe28 adds r3, r7, r0 | r3 = r7 + r0;
0x0000fe2a str r3, [sp, 0x38] | nbyte = r3;
0x0000fe2c cmp.w sl, 0 |
| if (sl == 0) {
0x0000fe30 beq 0xfeaa | goto label_78;
| }
0x0000fe32 adds r4, 0xd6 | r4 += 0xd6;
0x0000fe34 movs r6, 0x20 | r6 = 0x20;
0x0000fe36 mov sb, r4 | sb = r4;
0x0000fe38 mov r4, sl | r4 = sl;
0x0000fe3a str r5, [sp, 0xc] | var_ch = r5;
| do {
0x0000fe3c ldrsh.w r2, [r4, 0x14] | r2 = *((r4 + 0x14));
| if (r2 != 0) {
0x0000fe40 cbz r2, 0xfea2 |
0x0000fe42 cmp sb, r3 |
| if (sb < r3) {
0x0000fe44 bls 0xfea8 | goto label_79;
| }
0x0000fe46 adds r2, r3, 1 | r2 = r3 + 1;
0x0000fe48 add.w r1, r4, 0x16 | r1 = r4 + 0x16;
0x0000fe4c str r2, [sp, 0x38] | nbyte = r2;
0x0000fe4e strb r6, [r3] | *(r3) = r6;
0x0000fe50 ldr r0, [sp, 0x38] | r0 = nbyte;
0x0000fe52 blx 0x6144 | fcn_00006144 ();
0x0000fe56 ldr r5, [sp, 0x38] | r5 = nbyte;
0x0000fe58 mov r0, r5 | r0 = r5;
0x0000fe5a blx 0x5fec | r0 = fcn_00005fec ();
0x0000fe5e adds r3, r5, r0 | r3 = r5 + r0;
0x0000fe60 cmp sb, r3 |
0x0000fe62 str r3, [sp, 0x38] | nbyte = r3;
| if (sb < r3) {
0x0000fe64 bls 0xfea8 | goto label_79;
| }
0x0000fe66 ldr r2, [r4, 8] | r2 = *((r4 + 8));
| if (r2 == 0) {
0x0000fe68 cbz r2, 0xfea2 | goto label_80;
| }
0x0000fe6a adds r3, 1 | r3++;
0x0000fe6c mov.w fp, 0x22 |
0x0000fe70 str r3, [sp, 0x38] | nbyte = r3;
0x0000fe72 mov.w r3, 0x3d | r3 = 0x3d;
0x0000fe76 strb r3, [r5, r0] | *((r5 + r0)) = r3;
0x0000fe78 ldr r3, [sp, 0x38] | r3 = nbyte;
0x0000fe7a adds r2, r3, 1 | r2 = r3 + 1;
0x0000fe7c str r2, [sp, 0x38] | nbyte = r2;
0x0000fe7e strb.w fp, [r3] | *(r3) = fp;
0x0000fe82 ldr r0, [sp, 0x38] | r0 = nbyte;
0x0000fe84 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0000fe86 blx 0x6144 | fcn_00006144 ();
0x0000fe8a ldr.w sl, [sp, 0x38] | sl = nbyte;
0x0000fe8e mov r0, sl | r0 = sl;
0x0000fe90 blx 0x5fec | r0 = fcn_00005fec ();
0x0000fe94 add.w r3, sl, r0 | r3 = sl + r0;
0x0000fe98 adds r3, 1 | r3++;
0x0000fe9a str r3, [sp, 0x38] | nbyte = r3;
0x0000fe9c strb.w fp, [sl, r0] | *((sl + r0)) = fp;
0x0000fea0 ldr r3, [sp, 0x38] | r3 = nbyte;
| }
| label_80:
0x0000fea2 ldr r4, [r4] | r4 = *(r4);
0x0000fea4 cmp r4, 0 |
0x0000fea6 bne 0xfe3c |
| } while (r4 != 0);
| label_79:
0x0000fea8 ldr r5, [sp, 0xc] | r5 = var_ch;
| label_78:
0x0000feaa add.w r2, r8, 0x3000 | r2 = r8 + 0x3000;
0x0000feae str r2, [sp, 0x10] | var_10h = r2;
0x0000feb0 ldrsh.w r2, [r2, 0xbe] | r2 = *((r2 + 0xbe));
| if (r2 == 0) {
0x0000feb4 cbnz r2, 0xfec0 |
0x0000feb6 adds r2, r3, 1 | r2 = r3 + 1;
0x0000feb8 str r2, [sp, 0x38] | nbyte = r2;
0x0000feba movs r2, 0x2f | r2 = 0x2f;
0x0000febc strb r2, [r3] | *(r3) = r2;
0x0000febe ldr r3, [sp, 0x38] | r3 = nbyte;
| }
0x0000fec0 adds r2, r3, 1 | r2 = r3 + 1;
0x0000fec2 movs r4, 0 | r4 = 0;
0x0000fec4 str r2, [sp, 0x38] | nbyte = r2;
0x0000fec6 movs r2, 0x3e | r2 = 0x3e;
0x0000fec8 strb r2, [r3] | *(r3) = r2;
0x0000feca mov r0, r7 | r0 = r7;
0x0000fecc ldr r3, [sp, 0x38] | r3 = nbyte;
0x0000fece strb r4, [r3] | *(r3) = r4;
0x0000fed0 str r7, [sp, 0x38] | nbyte = r7;
0x0000fed2 blx 0x5fec | fcn_00005fec ();
0x0000fed6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000fed8 mov r7, r0 | r7 = r0;
0x0000feda ldrsh.w r3, [r3, 0xbe] | r3 = *((r3 + 0xbe));
0x0000fede strh.w r4, [r5, 0x530] | *((r5 + 0x530)) = r4;
0x0000fee2 subs r3, r3, r4 | r3 -= r4;
0x0000fee4 it ne |
| if (r3 == r3) {
0x0000fee6 movne r3, 1 | r3 = 1;
| }
0x0000fee8 str r3, [sp, 0x20] | var_20h = r3;
0x0000feea movs r3, 1 | r3 = 1;
0x0000feec str r3, [sp, 0x18] | var_18h = r3;
0x0000feee b.w 0xf6d4 | goto label_25;
| label_74:
0x0000fef2 and r0, r7, 7 | r0 = r7 & 7;
0x0000fef6 orn r0, r0, 0xf | r0 |= 0xf;
| r0 = ~r0;
0x0000fefa strb.w r0, [sp, 0x3c] | var_3ch = r0;
0x0000fefe add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000ff00 movs r5, r7 | r5 = r7;
0x0000ff02 mov r7, r0 | r7 = r0;
0x0000ff04 b 0xfd4c | goto label_26;
| label_56:
0x0000ff06 mov r4, r2 | r4 = r2;
0x0000ff08 mov sl, r3 | sl = r3;
0x0000ff0a movs r6, 0 | r6 = 0;
0x0000ff0c b 0xf7a4 | goto label_2;
| label_76:
0x0000ff0e and r0, lr, 7 | r0 = lr & 7;
0x0000ff12 orn r0, r0, 0xf | r0 |= 0xf;
| r0 = ~r0;
0x0000ff16 strb.w r0, [sp, 0x3c] | var_3ch = r0;
0x0000ff1a add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000ff1e mov r1, r0 | r1 = r0;
0x0000ff20 b 0xfda6 | goto label_27;
| label_75:
0x0000ff22 and r0, ip, 0x3f | r0 = ip & 0x3f;
0x0000ff26 add.w ip, sp, 0x3e |
0x0000ff2a orn r0, r0, 0x7f | r0 |= 0x7f;
| r0 = ~r0;
0x0000ff2e strb.w r0, [sp, 0x3d] | var_3dh = r0;
0x0000ff32 asrs r0, r3, 0x1e | r0 = r3 >> 0x1e;
0x0000ff34 orn r0, r0, 3 | r0 |= 3;
| r0 = ~r0;
0x0000ff38 strb.w r0, [sp, 0x3c] | var_3ch = r0;
0x0000ff3c add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000ff40 b 0xfd36 | goto label_28;
| label_38:
0x0000ff42 movs r0, 0 | r0 = 0;
0x0000ff44 b 0xfa5a | goto label_21;
| label_77:
0x0000ff46 and r0, r0, 0x3f | r0 &= 0x3f;
0x0000ff4a add.w r8, sp, 0x3e | r8 += var_3eh;
0x0000ff4e orn r0, r0, 0x7f | r0 |= 0x7f;
| r0 = ~r0;
0x0000ff52 strb.w r0, [sp, 0x3d] | var_3dh = r0;
0x0000ff56 asrs r0, r3, 0x1e | r0 = r3 >> 0x1e;
0x0000ff58 orn r0, r0, 3 | r0 |= 3;
| r0 = ~r0;
0x0000ff5c strb.w r0, [sp, 0x3c] | var_3ch = r0;
0x0000ff60 add.w r0, sp, 0x3d | r0 += var_3dh;
0x0000ff64 b 0xfd92 | goto label_29;
| label_49:
0x0000ff8e mov r3, r7 | r3 = r7;
0x0000ff90 movs r6, 3 | r6 = 3;
0x0000ff92 mov r7, r8 | r7 = r8;
0x0000ff94 mov r8, r3 | r8 = r3;
0x0000ff96 b.w 0xf6f8 | goto label_1;
| label_46:
0x0000ff9a mov r3, r7 | r3 = r7;
0x0000ff9c movs r6, 2 | r6 = 2;
0x0000ff9e mov r7, r8 | r7 = r8;
0x0000ffa0 mov r8, r3 | r8 = r3;
0x0000ffa2 b.w 0xf6f8 | goto label_1;
| label_59:
0x0000ffa6 movs r6, 0 | r6 = 0;
0x0000ffa8 b.w 0xf7a4 | goto label_2;
| label_57:
0x0000ffac mov r4, r2 | r4 = r2;
0x0000ffae mov sl, r3 | sl = r3;
0x0000ffb0 b 0xf888 | goto label_5;
| label_55:
0x0000ffb2 ldr.w sb, [sp, 0xc] | sb = var_ch;
0x0000ffb6 mov r8, r7 | r8 = r7;
0x0000ffb8 mov r4, r2 | r4 = r2;
0x0000ffba b 0xfc30 | goto label_24;
| label_54:
0x0000ffbc mov r3, r7 | r3 = r7;
0x0000ffbe movs r6, 0 | r6 = 0;
0x0000ffc0 mov r7, r8 | r7 = r8;
0x0000ffc2 mov r8, r3 | r8 = r3;
0x0000ffc4 b.w 0xf6f8 | goto label_1;
| label_43:
0x0000ffc8 mov r3, r7 | r3 = r7;
0x0000ffca movs r6, 7 | r6 = 7;
0x0000ffcc mov r7, r8 | r7 = r8;
0x0000ffce mov r8, r3 | r8 = r3;
0x0000ffd0 b.w 0xf6f8 | goto label_1;
| label_52:
0x0000ffd4 mov r3, r7 | r3 = r7;
0x0000ffd6 movs r6, 6 | r6 = 6;
0x0000ffd8 mov r7, r8 | r7 = r8;
0x0000ffda mov r8, r3 | r8 = r3;
0x0000ffdc b.w 0xf6f8 | goto label_1;
| label_50:
0x0000ffe0 mov r3, r7 | r3 = r7;
0x0000ffe2 movs r6, 8 | r6 = 8;
0x0000ffe4 mov r7, r8 | r7 = r8;
0x0000ffe6 mov r8, r3 | r8 = r3;
0x0000ffe8 b.w 0xf6f8 | goto label_1;
| label_44:
0x0000ffec mov r3, r7 | r3 = r7;
0x0000ffee movs r6, 5 | r6 = 5;
0x0000fff0 mov r7, r8 | r7 = r8;
0x0000fff2 mov r8, r3 | r8 = r3;
0x0000fff4 b.w 0xf6f8 | goto label_1;
| label_53:
0x0000fff8 mov r3, r7 | r3 = r7;
0x0000fffa movs r6, 4 | r6 = 4;
0x0000fffc mov r7, r8 | r7 = r8;
0x0000fffe mov r8, r3 | r8 = r3;
0x00010000 b.w 0xf6f8 | goto label_1;
| if (r2 != 0) {
0x00010002 cbnz r2, 0x10064 | void (*0x10064)() ();
| }
| label_60:
0x00010004 blx 0x63ec | SSL_get_verify_result ();
| label_42:
0x00010008 cmp r5, 0x3e |
| if (r5 > 0x3e) {
0x0001000a bgt.w 0xfa38 | goto label_30;
| }
0x0001000e cmp r5, 0x21 |
| if (r5 <= 0x21) {
0x00010010 ble 0x1009c | goto label_81;
| }
0x00010012 sub.w r3, r5, 0x22 | r3 = r5 - 0x22;
0x00010016 cmp r3, 0x1c |
| if (r3 > 0x1c) {
0x00010018 bhi.w 0xfa38 | goto label_30;
| }
0x0001001c adr r2, 8 | r2 = 8;
0x0001001e ldr.w r3, [r2, r3, lsl 2] | offset_2 = r3 << 2;
| r3 = *((r2 + offset_2));
0x00010022 add r2, r3 | r2 += r3;
| /* switch table (29 cases) at 0x10028 */
0x00010024 bx r2 | return uint32_t (*r2)() ();
| label_81:
0x0001009c adds r2, r5, 3 | r2 = r5 + 3;
| if (r2 == r5) {
0x0001009e beq 0x100c6 | goto label_82;
| }
0x000100a0 adds r3, r5, 2 | r3 = r5 + 2;
| if (r3 != r5) {
0x000100a2 bne.w 0xfa38 | goto label_30;
| }
0x000100a6 ldr r6, [sp, 0x18] | r6 = var_18h;
0x000100a8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000100aa cmp r3, 0 |
0x000100ac ite ne |
| if (r3 == 0) {
0x000100ae movne r6, 0 | r6 = 0;
| }
| if (r3 != 0) {
0x000100b0 andeq r6, r6, 1 | r6 &= 1;
| }
0x000100b4 cmp r6, 0 |
| if (r6 != 0) {
0x000100b6 bne.w 0xfdf2 | goto label_31;
| }
0x000100ba adds r3, 1 | r3++;
0x000100bc str r3, [sp, 0x20] | var_20h = r3;
0x000100be movs r3, 0x3c | r3 = 0x3c;
0x000100c0 strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x000100c4 b 0xfa3e | goto label_32;
| label_82:
0x000100c6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000100c8 cmp r3, 0 |
| if (r3 == 0) {
0x000100ca beq.w 0xfdf2 | goto label_31;
| }
0x000100ce subs r3, 1 | r3--;
0x000100d0 movs r2, 0x3c | r2 = 0x3c;
0x000100d2 str r3, [sp, 0x20] | var_20h = r3;
0x000100d4 movs r6, 0 | r6 = 0;
0x000100d6 ldr r3, [pc, 0x164] |
0x000100d8 mov.w r8, 1 | r8 = 1;
0x000100dc strb r2, [r4], 1 | *(r4) = r2;
| r4++;
0x000100e0 add r3, pc | r3 = 0x20322;
0x000100e2 str r3, [sp, 0x38] | nbyte = r3;
0x000100e4 b 0xfa3e | goto label_32;
| do {
| label_33:
0x00014f56 ldr r2, [pc, 0x3fc] |
0x00014f58 ldr r3, [pc, 0x3ec] | r3 = *(0x15348);
0x00014f5a add r2, pc | r2 = 0x2a2b4;
0x00014f5c ldr r3, [r2, r3] | r3 = *(0x2a2b4);
0x00014f5e ldr r2, [r3] | r2 = *(0x2a2b4);
0x00014f60 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00014f62 eors r2, r3 | r2 ^= r3;
0x00014f64 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00014f68 bne.w 0x152b8 | goto label_83;
| }
0x00014f6c mov r0, r5 | r0 = r5;
0x00014f6e add sp, 0x10 |
0x00014f70 pop.w {r4, r5, r6, r7, r8, pc} |
| label_34:
0x0001503a movs r5, 0 | r5 = 0;
0x0001503c b 0x14f56 |
| } while (1);
| label_35:
0x00015170 add.w r4, r4, 0x17000 | r4 += 0x17000;
0x00015174 movs r3, 1 | r3 = 1;
0x00015176 strh.w r3, [r4, 0x6f0] | *((r4 + 0x6f0)) = r3;
0x0001517a b 0x14f56 | goto label_33;
0x0001522c mov r5, r0 | r5 = r0;
0x0001522e cmp r0, 0 |
| if (r0 != 0) {
0x00015230 bne.w 0x1503a | goto label_34;
| }
0x00015234 add.w r4, r4, 0x16000 | r4 += 0x16000;
0x00015238 strh.w r0, [r4, 0x154] | *((r4 + 0x154)) = r0;
0x0001523c b 0x14f56 | goto label_33;
| label_83:
0x000152b8 blx 0x63ec | SSL_get_verify_result ();
0x000152bc ldr r2, [pc, 0x104] |
0x000152be mov r1, r7 | r1 = r7;
0x000152c0 mov r0, r4 | r0 = r4;
0x000152c2 add r2, pc | r2 = 0x2a68a;
0x000152c4 blx 0x6634 | r0 = fcn_00006634 ();
0x000152c8 cmp r0, 0 |
| if (r0 != 0) {
0x000152ca bne.w 0x15170 | goto label_35;
| }
0x000152ce add.w r4, r4, 0x17000 | r4 += 0x17000;
0x000152d2 strh.w r5, [r4, 0x6f0] | *((r4 + 0x6f0)) = r5;
0x000152d6 b 0x14f56 | goto label_33;
| }
[*] Function printf used 40 times libsoap.so