[*] Binary protection state of libsqlite3.so.0.8.6
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function mmap tear down of libsqlite3.so.0.8.6
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x40a70 */
| #include <stdint.h>
|
; (fcn) fcn.00040a70 () | void fcn_00040a70 (int16_t arg_1dh, int16_t arg_28h, int16_t arg_f4h, int16_t arg_100h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_4h;
| int16_t var_40h;
| int16_t var_48h;
| int16_t var_4h_3;
| int16_t var_60h;
| int16_t var_9ch;
| int16_t var_c8h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00040a70 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00040a74 mov r8, r2 | r8 = r2;
0x00040a76 ldr r2, [pc, 0x168] |
0x00040a78 mov r6, r3 | r6 = r3;
0x00040a7a mov r5, r1 | r5 = r1;
0x00040a7c sub sp, 0x10 |
0x00040a7e ldr r3, [pc, 0x164] | r3 = *(0x40be6);
0x00040a80 mov r7, r0 | r7 = r0;
0x00040a82 add r2, pc | r2 = 0x81668;
0x00040a84 ldr r1, [pc, 0x160] |
0x00040a86 mov r0, r5 | r0 = r5;
0x00040a88 ldr r3, [r2, r3] |
0x00040a8a add r1, pc | r1 = 0x81676;
0x00040a8c ldr r3, [r3] | r3 = *(0x81668);
0x00040a8e str r3, [sp, 0xc] | var_ch = r3;
0x00040a90 mov.w r3, 0 | r3 = 0;
0x00040a94 blx 0x831c | r0 = fcn_0000831c ();
| if (r0 != 0) {
0x00040a98 cbnz r0, 0x40ae2 | goto label_22;
| }
0x00040a9a mov r4, r0 | r4 = r0;
0x00040a9c mov r0, r8 | r0 = r8;
0x00040a9e blx 0x8550 | r0 = dlclose ();
0x00040aa2 cmp r0, 1 |
| if (r0 == 1) {
0x00040aa4 beq 0x40aca | goto label_23;
| }
| label_0:
0x00040aa6 movs r4, 0 | r4 = 0;
0x00040aa8 movs r3, 1 | r3 = 1;
0x00040aaa str r3, [r6] | *(r6) = r3;
| do {
| label_1:
0x00040aac ldr r2, [pc, 0x13c] |
0x00040aae ldr r3, [pc, 0x134] | r3 = *(0x40be6);
0x00040ab0 add r2, pc | r2 = 0x816a0;
0x00040ab2 ldr r3, [r2, r3] | r3 = *(0x816a0);
0x00040ab4 ldr r2, [r3] | r2 = *(0x816a0);
0x00040ab6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00040ab8 eors r2, r3 | r2 ^= r3;
0x00040aba mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00040abe bne.w 0x40bda | goto label_24;
| }
0x00040ac2 mov r0, r4 | r0 = r4;
0x00040ac4 add sp, 0x10 |
0x00040ac6 pop.w {r4, r5, r6, r7, r8, pc} |
| label_23:
0x00040aca mov r0, r8 | r0 = r8;
0x00040acc blx 0x7da0 | fcn_00007da0 ();
0x00040ad0 movw r3, 0xffe0 | r3 = 0xffe0;
0x00040ad4 sub.w r2, r0, 0x20 | r2 = r0 - 0x20;
0x00040ad8 cmp r2, r3 |
0x00040ada it ls |
| if (r2 > r3) {
0x00040adc strls r0, [r7, 0x4c] | *((r7 + 0x4c)) = r0;
| }
0x00040ade bls 0x40aac |
| } while (r2 < r3);
0x00040ae0 b 0x40aa6 | goto label_0;
| label_22:
0x00040ae2 ldr r1, [pc, 0x10c] |
0x00040ae4 mov r0, r5 | r0 = r5;
0x00040ae6 add r1, pc | r1 = 0x816dc;
0x00040ae8 blx 0x831c | r0 = fcn_0000831c ();
0x00040aec mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00040aee cbnz r0, 0x40b0a | goto label_25;
| }
0x00040af0 mov r0, r8 | r0 = r8;
0x00040af2 blx 0x8550 | r0 = dlclose ();
0x00040af6 cmp r0, 1 |
| if (r0 != 1) {
| label_2:
0x00040af8 bne 0x40aa6 | goto label_0;
| }
0x00040afa mov r0, r8 | r0 = r8;
0x00040afc blx 0x7da0 | r0 = fcn_00007da0 ();
0x00040b00 cmp r0, 0 |
0x00040b02 it gt |
| if (r0 > 0) {
0x00040b04 strgt r0, [r7, 0x5c] | *((r7 + 0x5c)) = r0;
| goto label_26;
| }
| if (r0 > 0) {
| label_26:
0x00040b06 bgt 0x40aac | goto label_1;
| }
0x00040b08 b 0x40aa6 | goto label_0;
| label_25:
0x00040b0a ldr r1, [pc, 0xe8] |
0x00040b0c mov r0, r5 | r0 = r5;
0x00040b0e add r1, pc | r1 = 0x81708;
0x00040b10 blx 0x831c | r0 = fcn_0000831c ();
0x00040b14 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00040b16 cbz r0, 0x40b40 | goto label_27;
| }
0x00040b18 ldr r1, [pc, 0xdc] |
0x00040b1a mov r0, r5 | r0 = r5;
0x00040b1c add r1, pc | r1 = 0x81718;
0x00040b1e blx 0x831c | r0 = fcn_0000831c ();
0x00040b22 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00040b24 cbnz r0, 0x40b5e | goto label_28;
| }
0x00040b26 mov r0, r8 | r0 = r8;
0x00040b28 blx 0x8550 | r0 = dlclose ();
0x00040b2c cmp r0, 1 |
| if (r0 != 1) {
0x00040b2e bne 0x40aa6 | goto label_0;
| }
0x00040b30 mov r0, r8 | r0 = r8;
0x00040b32 blx 0x7da0 | r0 = fcn_00007da0 ();
0x00040b36 subs r3, r0, 2 | r3 = r0 - 2;
0x00040b38 cmp r3, 0xe |
| if (r3 > 0xe) {
0x00040b3a bhi 0x40aa6 | goto label_0;
| }
0x00040b3c str r0, [r7, 0x58] | *((r7 + 0x58)) = r0;
0x00040b3e b 0x40aac | goto label_1;
| label_27:
0x00040b40 mov r0, r8 | r0 = r8;
0x00040b42 blx 0x8550 | r0 = dlclose ();
0x00040b46 cmp r0, 1 |
| if (r0 != 1) {
0x00040b48 bne 0x40aa6 | goto label_0;
| }
0x00040b4a mov r0, r8 | r0 = r8;
0x00040b4c blx 0x7da0 | r0 = fcn_00007da0 ();
0x00040b50 cmp r0, 0x40 |
| if (r0 > 0x40) {
0x00040b52 bhi 0x40aa6 | goto label_0;
| }
0x00040b54 cmp r0, 1 |
0x00040b56 it eq |
| if (r0 != 1) {
0x00040b58 moveq r0, 4 | r0 = 4;
| }
0x00040b5a str r0, [r7, 0x50] | *((r7 + 0x50)) = r0;
0x00040b5c b 0x40aac | goto label_1;
| label_28:
0x00040b5e ldr r1, [pc, 0x9c] | r1 = *(0x40bfe);
| label_5:
0x00040b60 mov r0, r5 | r0 = r5;
0x00040b62 add r1, pc | r1 += pc;
0x00040b64 blx 0x831c | r0 = fcn_0000831c ();
0x00040b68 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00040b6a cbnz r0, 0x40b96 | goto label_29;
| }
0x00040b6c mov r0, r8 | r0 = r8;
0x00040b6e blx 0x8550 | r0 = dlclose ();
0x00040b72 cmp r0, 1 |
| if (r0 != 1) {
0x00040b74 bne 0x40aa6 | goto label_0;
| }
0x00040b76 mov r0, r8 | r0 = r8;
0x00040b78 blx 0x7da0 | r0 = fcn_00007da0 ();
0x00040b7c cmp r0, 0 |
| if (r0 < 0) {
0x00040b7e blt 0x40aa6 | goto label_0;
| }
0x00040b80 cmp r0, 1 |
0x00040b82 it le |
| if (r0 > 1) {
0x00040b84 movle r0, 0x10 | r0 = 0x10;
| }
| if (r0 > 1) {
0x00040b86 ble 0x40b92 |
0x00040b88 movw r3, 0x7cf | r3 = 0x7cf;
0x00040b8c cmp r0, r3 |
0x00040b8e it ge |
| if (r0 >= r3) {
0x00040b90 movge r0, r3 | r0 = r3;
| goto label_30;
| }
| }
| label_30:
0x00040b92 str r0, [r7, 0x54] | *((r7 + 0x54)) = r0;
0x00040b94 b 0x40aac | goto label_1;
| label_29:
0x00040b96 ldr r1, [pc, 0x68] |
0x00040b98 mov r0, r5 | r0 = r5;
0x00040b9a add r1, pc | r1 = 0x817a0;
0x00040b9c blx 0x831c | r0 = fcn_0000831c ();
0x00040ba0 mov r5, r0 | r5 = r0;
0x00040ba2 cmp r0, 0 |
| if (r0 != 0) {
0x00040ba4 bne.w 0x40aa6 | goto label_0;
| }
0x00040ba8 mov r0, r8 | r0 = r8;
0x00040baa blx 0x8508 | fcn_00008508 ();
0x00040bae add r2, sp, 8 | r2 += var_8h;
| label_3:
0x00040bb0 add r1, sp, 4 | r1 += var_4h_2;
0x00040bb2 invalid |
| label_4:
0x00040bb4 cdp2 p6, 9, c4, c9, c4, 0 | __asm ("cdp2 p6, 9, c4, c9, c4, 0");
| if (r0 != 0) {
0x00040bb8 cbz r0, 0x40bc4 |
0x00040bba cmp r0, 1 |
0x00040bbc itt eq |
| if (r0 != 1) {
0x00040bbe moveq r4, r5 | r4 = r5;
| }
| if (r0 != 1) {
0x00040bc0 streq r0, [r6] | *(r6) = r0;
| }
0x00040bc2 b 0x40aac | goto label_1;
| }
0x00040bc4 ldr r0, [r7, 0x60] | r0 = *((r7 + 0x60));
0x00040bc6 blx 0x84f8 | fcn_000084f8 ();
0x00040bca ldr r0, [r7, 0x64] | r0 = *((r7 + 0x64));
0x00040bcc blx 0x84f8 | fcn_000084f8 ();
0x00040bd0 ldrd r2, r3, [sp, 4] | __asm ("ldrd r2, r3, [var_4h_2]");
0x00040bd4 strd r2, r3, [r7, 0x60] | __asm ("strd r2, r3, [r7, 0x60]");
0x00040bd8 b 0x40aac | goto label_1;
| label_24:
0x00040bda blx 0x7e8c | fcn_00007e8c ();
0x00040bde nop |
| if (r0 >= 1) {
0x00040be0 bhs 0x40c00 | goto label_31;
| }
0x00040be2 movs r0, r1 | r0 = r1;
0x00040be4 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00040be6 movs r0, r0 |
| if (r0 != r0) {
0x00040be8 bne 0x40af8 | goto label_2;
| }
0x00040bea movs r6, r0 | r6 = r0;
| if (r6 != r0) {
0x00040bec bne 0x40bb0 | goto label_3;
| }
0x00040bee movs r0, r1 | r0 = r1;
| if (r0 != r1) {
0x00040bf0 bne 0x40c58 | goto label_32;
| }
0x00040bf2 movs r6, r0 | r6 = r0;
| if (r6 != r0) {
0x00040bf4 bne 0x40c24 | goto label_33;
| }
0x00040bf6 movs r6, r0 | r6 = r0;
| if (r6 != r0) {
0x00040bf8 bne 0x40c24 | goto label_33;
| }
0x00040bfa movs r6, r0 | r6 = r0;
| if (r6 == r0) {
0x00040bfc beq 0x40bb4 | goto label_4;
| }
0x00040bfe movs r6, r0 | r6 = r0;
| if (r6 == r0) {
| label_31:
0x00040c00 beq 0x40b60 | goto label_5;
| }
0x00040c02 movs r6, r0 | r6 = r0;
| label_33:
0x00040c24 cmp r4, r0 |
| if (r4 <= r0) {
0x00040c26 bgt 0x40c38 |
0x00040c28 mov r0, r5 | r0 = r5;
0x00040c2a pop.w {r4, r5, r6, lr} |
0x00040c2e b.w 0x100c4 | void (*0x100c4)() ();
| }
0x00040c38 movs r0, 0 | r0 = 0;
0x00040c3a pop {r4, r5, r6, pc} |
| label_32:
0x00040c58 add r8, r2 | r8 += r2;
0x00040c5a add r5, pc | r5 += pc;
0x00040c5c ldr.w r3, [pc, 0x48c] | r3 = *(0x000410ec);
0x00040c60 ldr r4, [r5, r4] | r4 = *((r5 + r4));
0x00040c62 add r3, pc | r3 += pc;
0x00040c64 ldr.w r3, [r3, 0x130] | r3 = *((r3 + 0x130));
0x00040c68 ldr r4, [r4] | r4 = *(r4);
0x00040c6a str r4, [sp, 0x9c] | var_9ch = r4;
0x00040c6c mov.w r4, 0 | r4 = 0;
0x00040c70 ldr r4, [sp, 0xc8] | r4 = var_c8h;
0x00040c72 str r1, [sp, 0x14] | var_14h = r1;
0x00040c74 str r4, [sp, 0x18] | var_18h = r4;
0x00040c76 mov r4, r2 | r4 = r2;
0x00040c78 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x00040c7a ldr.w r7, [r8, 0x24] | r7 = *((r8 + 0x24));
0x00040c7e cmp.w r0, 0x8000 |
0x00040c82 ite ge |
| if (r0 >= fcn.00008000) {
0x00040c84 asrge r6, r0, 0xf | __asm ("asrge r6, r0, 0xf");
| }
| if (r0 >= fcn.00008000) {
0x00040c86 movlt r6, 1 | r6 = 1;
| }
0x00040c88 cmp r7, 0 |
| if (r7 == 0) {
0x00040c8a beq.w 0x40df4 | goto label_34;
| }
| label_7:
0x00040c8e ldr r5, [r7] | r5 = *(r7);
0x00040c90 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00040c92 blx 0x8254 | fcn_00008254 ();
0x00040c96 ldrb r3, [r5, 0x17] | r3 = *((r5 + 0x17));
0x00040c98 cmp r3, 0 |
| if (r3 != 0) {
0x00040c9a bne.w 0x40e66 | goto label_35;
| }
| label_8:
0x00040c9e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00040ca0 mov r1, r6 | r1 = r6;
0x00040ca2 adds r0, r3, r6 | r0 = r3 + r6;
0x00040ca4 bl 0xab8f8 | r0 = fcn_000ab8f8 (r0, r1);
0x00040ca8 mul r7, r6, r0 | r7 = r6 * r0;
0x00040cac ldrh r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x00040cae cmp r2, r7 |
| if (r2 >= r7) {
0x00040cb0 blt 0x40d04 |
| label_9:
0x00040cb2 movs r0, 1 | r0 = 1;
0x00040cb4 movs r7, 0 | r7 = 0;
| label_13:
0x00040cb6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00040cb8 cmp r3, r2 |
0x00040cba it ge |
| if (r3 < r2) {
0x00040cbc movge r3, 0 | r3 = 0;
| }
| if (r3 < r2) {
0x00040cbe bge 0x40cc8 |
0x00040cc0 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00040cc2 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00040cc4 ldr.w r3, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r3 = *((r3 + offset_0));
| }
0x00040cc8 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00040cca str r3, [r2] | *(r2) = r3;
0x00040ccc ldrb r3, [r5, 0x16] | r3 = *((r5 + 0x16));
0x00040cce cmp r3, 0 |
0x00040cd0 ite eq |
| if (r3 != 0) {
0x00040cd2 moveq r0, 0 | r0 = 0;
| }
| if (r3 == 0) {
0x00040cd4 andne r0, r0, 1 | r0 &= 1;
| }
0x00040cd8 cmp r0, 0 |
0x00040cda it ne |
| if (r0 == 0) {
0x00040cdc movne r7, 8 | r7 = 8;
| }
| label_15:
0x00040cde ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00040ce0 blx 0x81d4 | fcn_000081d4 ();
| label_6:
0x00040ce4 ldr.w r2, [pc, 0x408] | r2 = *(0x000410f0);
0x00040ce8 ldr r3, [pc, 0x3fc] | r3 = *(0x410e8);
0x00040cea add r2, pc | r2 += pc;
0x00040cec ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00040cee ldr r2, [r3] | r2 = *(0x410e8);
0x00040cf0 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x00040cf2 eors r2, r3 | r2 ^= r3;
0x00040cf4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00040cf8 bne.w 0x410de | goto label_36;
| }
0x00040cfc mov r0, r7 | r0 = r7;
0x00040cfe add sp, 0xa4 |
0x00040d00 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00040d04 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00040d06 str r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
0x00040d08 cmp r0, 0 |
| if (r0 < 0) {
0x00040d0a blt.w 0x40e80 | goto label_37;
| }
0x00040d0e ldr r3, [pc, 0x3e4] |
0x00040d10 add r1, sp, 0x30 | r1 = sp + 0x30;
0x00040d12 add r3, pc |
0x00040d14 ldr r3, [r3, 0x40] | r3 = *(0x81e4c);
0x00040d16 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x00040d18 mov r8, r0 | r8 = r0;
0x00040d1a cmp r0, 0 |
| if (r0 != 0) {
0x00040d1c bne.w 0x41004 | goto label_38;
| }
0x00040d20 mul r3, r4, r7 | r3 = r4 * r7;
0x00040d24 ldrd r0, r1, [sp, 0x60] | __asm ("ldrd r0, r1, [var_60h]");
0x00040d28 asrs r2, r3, 0x1f | r2 = r3 >> 0x1f;
0x00040d2a cmp r0, r3 |
0x00040d2c sbcs.w r2, r1, r2 | __asm ("sbcs.w r2, r1, r2");
| if (r0 >= r3) {
0x00040d30 bge.w 0x40e80 | goto label_37;
| }
0x00040d34 cmp.w sb, 0 |
| if (sb == 0) {
0x00040d38 beq.w 0x4106a | goto label_39;
| }
0x00040d3c asrs r2, r1, 0x1f | r2 = r1 >> 0x1f;
0x00040d3e ubfx r2, r2, 0, 0xc | r2 = (r2 >> 0) & ((1 << 0xc) - 1);
0x00040d42 adds r2, r2, r0 | r2 += r0;
0x00040d44 lsr.w r2, r2, 0xc | r2 >>= 0xc;
0x00040d48 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00040d4c orr.w r2, r2, r1, lsl 20 | r2 |= (r1 << 20);
0x00040d50 addw r1, r3, 0xfff | __asm ("addw r1, r3, aav.0x000000ff");
0x00040d54 ands.w r1, r1, r3, asr 32 | r1 &= (r3 >> 32);
0x00040d58 it lo |
| if (r1 >= r1) {
0x00040d5a movlo r1, r3 | r1 = r3;
| }
0x00040d5c asrs r3, r1, 0xc | r3 = r1 >> 0xc;
0x00040d5e cmp r2, r3 |
| if (r2 >= r3) {
0x00040d60 bge.w 0x40e80 | goto label_37;
| }
0x00040d64 add.w sl, r2, 1 | sl = r2 + 1;
0x00040d68 subs r3, r3, r2 | r3 -= r2;
0x00040d6a lsl.w sl, sl, 0xc | sl <<= 0xc;
0x00040d6e asrs r1, r2, 0x1f | r1 = r2 >> 0x1f;
0x00040d70 ldr r0, [pc, 0x384] |
0x00040d72 asr.w fp, sl, 0x1f |
0x00040d76 subs r3, 1 | r3--;
0x00040d78 adds.w sl, sl, -1 | sl += -1;
0x00040d7c strd r6, r4, [sp, 0x20] | __asm ("strd r6, r4, [sp, 0x20]");
0x00040d80 adc fp, fp, -1 | __asm ("adc fp, fp, -1");
0x00040d84 adds r3, r3, r2 | r3 += r2;
0x00040d86 adc r2, r1, 0 | __asm ("adc r2, r1, 0");
0x00040d8a movw ip, 0x1fff | ip = 0x1fff;
0x00040d8e lsls r2, r2, 0xc | r2 <<= 0xc;
0x00040d90 add r0, pc | r0 = 0x81e8c;
0x00040d92 str r7, [sp, 0x1c] | var_1ch = r7;
0x00040d94 mov r4, r0 | r4 = r0;
0x00040d96 orr.w r2, r2, r3, lsr 20 | r2 |= (r3 >> 20);
0x00040d9a lsls r3, r3, 0xc | r3 <<= 0xc;
0x00040d9c adds.w r3, r3, ip | r3 += ip;
0x00040da0 mov r7, r8 | r7 = r8;
0x00040da2 adc sb, r2, 0 | __asm ("adc sb, r2, 0");
0x00040da6 add r2, sp, 0x2c | r2 += var_4h;
0x00040da8 mov r8, r3 | r8 = r3;
0x00040daa mov r6, r2 | r6 = r2;
0x00040dac b 0x40dc0 |
| while (r0 == 1) {
0x00040dae adds.w r2, sl, 0x1000 | r2 = sl + 0x1000;
0x00040db2 adc fp, fp, 0 | __asm ("adc fp, fp, 0");
0x00040db6 mov sl, r2 | sl = r2;
0x00040db8 cmp sb, fp |
0x00040dba it eq |
| if (sb == fp) {
0x00040dbc cmpeq r8, r2 | __asm ("cmpeq r8, r2");
| }
| if (sb == fp) {
0x00040dbe beq 0x40e7a | goto label_40;
| }
0x00040dc0 movs r3, 1 | r3 = 1;
0x00040dc2 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00040dc4 mov r2, sl | r2 = sl;
0x00040dc6 strd r4, r3, [sp] | __asm ("strd r4, r3, [sp]");
0x00040dca str r6, [sp, 8] | var_8h = r6;
0x00040dcc mov r3, fp | r3 = fp;
0x00040dce str r7, [sp, 0x2c] | var_4h = r7;
0x00040dd0 bl 0x104ac | r0 = fcn_000104ac (r0, r1, r2, r3, r4);
0x00040dd4 cmp r0, 1 |
0x00040dd6 beq 0x40dae |
| }
0x00040dd8 ldr r1, [pc, 0x320] |
0x00040dda movw r3, 0x97cc | r3 = 0x97cc;
0x00040dde ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00040de0 movw r0, 0x130a | r0 = 0x130a;
0x00040de4 add r1, pc | r1 = 0x81ee4;
0x00040de6 bl 0x2340c | r0 = fcn_0002340c (r0, r1, r2, r3, r4, r5, r6);
0x00040dea mov r7, r0 | r7 = r0;
0x00040dec clz r0, r0 | r0 &= r0;
0x00040df0 lsrs r0, r0, 5 | r0 >>= 5;
0x00040df2 b 0x4100a | goto label_16;
| label_34:
0x00040df4 movs r0, 0x10 | r0 = 0x10;
0x00040df6 movs r1, 0 | r1 = 0;
0x00040df8 blx 0x7f18 | r0 = fcn_00007f18 ();
0x00040dfc mov r5, r0 | r5 = r0;
0x00040dfe cmp r0, 0 |
| if (r0 == 0) {
0x00040e00 beq.w 0x41046 | goto label_41;
| }
0x00040e04 ldr r3, [pc, 0x2f8] |
0x00040e06 str r7, [r0] | *(r0) = r7;
0x00040e08 str r7, [r0, 4] | *((r0 + 4)) = r7;
0x00040e0a add r3, pc | r3 = 0x81f0e;
0x00040e0c str r7, [r0, 8] | *((r0 + 8)) = r7;
0x00040e0e str r7, [r0, 0xc] | *((r0 + 0xc)) = r7;
0x00040e10 ldr r0, [r3, 0x20] | r0 = *(0x81f2e);
0x00040e12 blx 0x8254 | fcn_00008254 ();
0x00040e16 ldr.w fp, [r8, 8] | fp = *((r8 + 8));
0x00040e1a ldr.w sl, [fp, 0x28] | sl = *(arg_28h);
0x00040e1e cmp.w sl, 0 |
| if (sl == 0) {
0x00040e22 beq 0x40f24 | goto label_42;
| }
| label_12:
0x00040e24 ldr.w r3, [sl, 0x1c] | r3 = *((sl + 0x1c));
0x00040e28 str.w sl, [r5] | __asm ("str.w sl, [r5]");
0x00040e2c adds r3, 1 | r3++;
0x00040e2e str.w r3, [sl, 0x1c] | __asm ("str.w r3, [sl, 0x1c]");
0x00040e32 ldr r3, [pc, 0x2d0] |
0x00040e34 str.w r5, [r8, 0x24] | __asm ("str.w r5, [r8, 0x24]");
0x00040e38 add r3, pc | r3 = 0x81f42;
0x00040e3a ldr r0, [r3, 0x20] | r0 = *(0x81f62);
0x00040e3c blx 0x81d4 | fcn_000081d4 ();
0x00040e40 ldr.w r0, [sl, 4] | r0 = *((sl + 4));
0x00040e44 blx 0x8254 | fcn_00008254 ();
0x00040e48 ldr.w r3, [sl, 0x20] | r3 = *((sl + 0x20));
0x00040e4c ldr.w r0, [sl, 4] | r0 = *((sl + 4));
0x00040e50 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00040e52 str.w r5, [sl, 0x20] | __asm ("str.w r5, [sl, 0x20]");
0x00040e56 blx 0x81d4 | fcn_000081d4 ();
| label_14:
0x00040e5a cmp r7, 0 |
| if (r7 != 0) {
0x00040e5c bne.w 0x40ce4 | goto label_6;
| }
0x00040e60 ldr.w r7, [r8, 0x24] | r7 = *((r8 + 0x24));
0x00040e64 b 0x40c8e | goto label_7;
| label_35:
0x00040e66 mov r0, r8 | r0 = r8;
0x00040e68 mov r1, r5 | r1 = r5;
0x00040e6a bl 0x236e8 | r0 = fcn_000236e8 (r0, r1, r2);
0x00040e6e mov r7, r0 | r7 = r0;
0x00040e70 cmp r0, 0 |
| if (r0 != 0) {
0x00040e72 bne.w 0x40ff8 | goto label_43;
| }
0x00040e76 strb r0, [r5, 0x17] | *((r5 + 0x17)) = r0;
0x00040e78 b 0x40c9e | goto label_8;
| label_40:
0x00040e7a ldrd r7, r6, [sp, 0x1c] | __asm ("ldrd r7, r6, [var_1ch]");
0x00040e7e ldr r4, [sp, 0x24] | r4 = var_24h;
| label_37:
0x00040e80 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x00040e82 lsls r1, r7, 2 | r1 = r7 << 2;
0x00040e84 blx 0x8514 | r0 = fcn_00008514 ();
0x00040e88 cmp r0, 0 |
| if (r0 == 0) {
0x00040e8a beq.w 0x41052 | goto label_44;
| }
0x00040e8e ldrh r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00040e90 str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
0x00040e92 cmp r3, r7 |
0x00040e94 mov r2, r3 | r2 = r3;
| if (r3 >= r7) {
0x00040e96 bge.w 0x40cb2 | goto label_9;
| }
0x00040e9a ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00040e9c mul sb, r6, r4 | sb = r6 * r4;
0x00040ea0 ldr.w sl, [pc, 0x264] | sl = *(0x00041108);
0x00040ea4 cmp r2, 0 |
0x00040ea6 asr.w fp, sb, 0x1f |
0x00040eaa add sl, pc | sl += pc;
| if (r2 < 0) {
0x00040eac blt 0x40f0a | goto label_45;
| }
| label_10:
0x00040eae smull r3, r1, r3, r4 | r3:r1 = r3 * r4;
0x00040eb2 ldrb r0, [r5, 0x16] | r0 = *((r5 + 0x16));
0x00040eb4 ldr.w r8, [sl, 0x10c] | r8 = *((sl + 0x10c));
0x00040eb8 str r2, [sp] | *(sp) = r2;
0x00040eba cmp r0, 0 |
0x00040ebc it eq |
| if (r0 != 0) {
0x00040ebe moveq r2, 3 | r2 = 3;
| }
0x00040ec0 mov.w r0, 0 | r0 = 0;
0x00040ec4 strd r3, r1, [sp, 8] | __asm ("strd r3, r1, [sp, 8]");
0x00040ec8 mov.w r3, 1 | r3 = 1;
0x00040ecc it ne |
| if (r0 == 0) {
0x00040ece movne r2, r3 | r2 = r3;
| }
0x00040ed0 mov r1, sb | r1 = sb;
0x00040ed2 blx r8 | r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00040ed4 cmp.w r0, -1 |
0x00040ed8 mov r8, r0 | r8 = r0;
| if (r0 == -1) {
0x00040eda beq.w 0x4100e | goto label_46;
| }
| label_11:
0x00040ede ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00040ee0 mov r0, r8 | r0 = r8;
0x00040ee2 ldrh r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00040ee4 adds r1, r6, r3 | r1 = r6 + r3;
0x00040ee6 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x00040eea add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
| do {
0x00040eee str r0, [r3], 4 | *(r3) = r0;
| r3 += 4;
0x00040ef2 cmp r2, r3 |
0x00040ef4 add r0, r4 | r0 += r4;
0x00040ef6 bne 0x40eee |
| } while (r2 != r3);
0x00040ef8 uxth r3, r1 | r3 = (int16_t) r1;
0x00040efa cmp r3, r7 |
0x00040efc mov r2, r3 | r2 = r3;
0x00040efe strh r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
| if (r3 >= r7) {
0x00040f00 bge.w 0x40cb2 | goto label_9;
| }
0x00040f04 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00040f06 cmp r2, 0 |
| if (r2 >= 0) {
0x00040f08 bge 0x40eae | goto label_10;
| }
| label_45:
0x00040f0a mov r0, sb | r0 = sb;
0x00040f0c mov r1, fp | r1 = fp;
0x00040f0e blx 0x7f18 | r0 = fcn_00007f18 ();
0x00040f12 mov r8, r0 | r8 = r0;
0x00040f14 cmp r0, 0 |
| if (r0 == 0) {
0x00040f16 beq.w 0x41070 | goto label_47;
| }
0x00040f1a mov r2, sb | r2 = sb;
0x00040f1c movs r1, 0 | r1 = 0;
0x00040f1e blx 0x8264 | fcn_00008264 ();
0x00040f22 b 0x40ede | goto label_11;
| label_42:
0x00040f24 ldr r3, [pc, 0x1e4] |
0x00040f26 add r1, sp, 0x30 | r1 = sp + 0x30;
0x00040f28 ldr.w r2, [r8, 0x20] | r2 = *((r8 + 0x20));
0x00040f2c ldr.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
0x00040f30 add r3, pc |
0x00040f32 ldr r3, [r3, 0x40] | r3 = *(0x82080);
0x00040f34 str r2, [sp, 0x1c] | var_1ch = r2;
0x00040f36 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00040f38 mov r7, r0 | r7 = r0;
0x00040f3a cmp r0, 0 |
| if (r0 != 0) {
0x00040f3c bne 0x4102a | goto label_48;
| }
0x00040f3e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00040f40 blx 0x8160 | r0 = fcn_00008160 ();
0x00040f44 add.w r2, r0, 0x4a | r2 = r0 + 0x4a;
0x00040f48 str r0, [sp, 0x24] | var_24h = r0;
0x00040f4a mov r1, r7 | r1 = r7;
0x00040f4c mov r0, r2 | r0 = r2;
0x00040f4e str r2, [sp, 0x20] | var_20h = r2;
0x00040f50 blx 0x7f18 | fcn_00007f18 ();
0x00040f54 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00040f56 mov sl, r0 | sl = r0;
0x00040f58 cmp r0, 0 |
| if (r0 == 0) {
0x00040f5a beq.w 0x41066 | goto label_49;
| }
0x00040f5e mov r1, r7 | r1 = r7;
0x00040f60 blx 0x8264 | fcn_00008264 ();
0x00040f64 add.w r2, sl, 0x44 | r2 = sl + 0x44;
0x00040f68 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00040f6a mov r1, r2 | r1 = r2;
0x00040f6c ldr r0, [sp, 0x24] | r0 = var_24h;
0x00040f6e str r2, [sp, 0x1c] | var_1ch = r2;
0x00040f70 str.w r2, [sl, 8] | __asm ("str.w r2, [sl, 8]");
0x00040f74 ldr r2, [pc, 0x198] |
0x00040f76 adds r0, 6 | r0 += 6;
0x00040f78 add r2, pc | r2 = 0x8208c;
0x00040f7a blx 0x8154 | fcn_00008154 ();
0x00040f7e ldr r3, [pc, 0x194] |
0x00040f80 mov.w r1, -1 | r1 = -1;
0x00040f84 ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x00040f88 str.w r1, [sl, 0xc] | __asm ("str.w r1, [sl, 0xc]");
0x00040f8c add r3, pc | r3 = 0x820a6;
0x00040f8e str.w sl, [r2, 0x28] | __asm ("str.w sl, [r2, 0x28]");
0x00040f92 str.w r2, [sl] | __asm ("str.w r2, [sl]");
0x00040f96 ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x00040f98 cmp r3, 0 |
| if (r3 != 0) {
0x00040f9a bne 0x41058 | goto label_50;
| }
| label_17:
0x00040f9c ldrb.w r2, [fp, 0x1d] | r2 = *(arg_1dh);
0x00040fa0 cmp r2, 0 |
| if (r2 != 0) {
0x00040fa2 bne.w 0x40e24 | goto label_12;
| }
0x00040fa6 ldr r1, [pc, 0x170] |
0x00040fa8 ldr.w r0, [r8, 0x20] | r0 = *((r8 + 0x20));
0x00040fac add r1, pc | r1 = 0x820ca;
0x00040fae blx 0x7d20 | r0 = fcn_00007d20 ();
0x00040fb2 cmp r0, 0 |
| if (r0 == 0) {
0x00040fb4 beq 0x41074 | goto label_51;
| }
0x00040fb6 ldr.w r7, [sl, 0xc] | r7 = *((sl + 0xc));
| label_19:
0x00040fba cmp r7, 0 |
| if (r7 < 0) {
0x00040fbc blt 0x4108c | goto label_21;
| }
| label_20:
0x00040fbe ldr.w fp, [pc, 0x15c] | fp = *(0x0004111c);
0x00040fc2 ldr r1, [sp, 0x48] | r1 = var_48h;
0x00040fc4 ldr r2, [sp, 0x4c] | r2 = var_4h_3;
0x00040fc6 add fp, pc |
0x00040fc8 ldr.w r3, [fp, 0x100] | r3 = *(arg_100h);
0x00040fcc str r1, [sp, 0x20] | var_20h = r1;
0x00040fce str r2, [sp, 0x1c] | var_1ch = r2;
0x00040fd0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
| if (r0 == 0) {
0x00040fd2 cbnz r0, 0x40fe0 |
0x00040fd4 ldr.w r3, [fp, 0xf4] | r3 = *(arg_f4h);
0x00040fd8 mov r0, r7 | r0 = r7;
0x00040fda ldrd r2, r1, [sp, 0x1c] | __asm ("ldrd r2, r1, [var_1ch]");
0x00040fde blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
| }
0x00040fe0 mov r1, sl | r1 = sl;
0x00040fe2 mov r0, r8 | r0 = r8;
0x00040fe4 bl 0x236e8 | r0 = fcn_000236e8 (r0, r1, r2);
0x00040fe8 cmp r0, 0 |
0x00040fea it ne |
| if (r0 != 0) {
0x00040fec cmpne r0, 0x508 | __asm ("cmpne r0, 0x508");
| }
0x00040ff0 mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x00040ff2 beq.w 0x40e24 | goto label_12;
| }
0x00040ff6 b 0x4102e | goto label_18;
| label_43:
0x00040ff8 ldrh r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00040ffa ldr r2, [sp, 0x14] | r2 = var_14h;
0x00040ffc cmp r2, r3 |
| if (r2 >= r3) {
0x00040ffe bge 0x4104a | goto label_52;
| }
0x00041000 lsls r6, r5, 1 | r6 = r5 << 1;
0x00041002 movs r0, r0 |
| label_38:
0x00041004 movs r0, 0 | r0 = 0;
0x00041006 movw r7, 0x130a | r7 = 0x130a;
| do {
| label_16:
0x0004100a ldrh r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x0004100c b 0x40cb6 | goto label_13;
| label_46:
0x0004100e ldr r1, [pc, 0x110] |
0x00041010 movw r3, 0x97e7 | r3 = 0x97e7;
0x00041014 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00041016 movw r0, 0x150a | r0 = 0x150a;
0x0004101a add r1, pc | r1 = 0x82140;
0x0004101c bl 0x2340c | r0 = fcn_0002340c (r0, r1, r2, r3, r4, r5, r6);
0x00041020 mov r7, r0 | r7 = r0;
0x00041022 clz r0, r0 | r0 &= r0;
0x00041026 lsrs r0, r0, 5 | r0 >>= 5;
0x00041028 b 0x4100a |
| } while (1);
| label_48:
0x0004102a movw r7, 0x70a | r7 = 0x70a;
| label_18:
0x0004102e mov r0, r8 | r0 = r8;
0x00041030 bl 0x23d78 | fcn_00023d78 (r0);
0x00041034 mov r0, r5 | r0 = r5;
0x00041036 blx 0x84f8 | fcn_000084f8 ();
0x0004103a ldr r3, [pc, 0xe8] |
0x0004103c add r3, pc | r3 = 0x82166;
0x0004103e ldr r0, [r3, 0x20] | r0 = *(0x82186);
0x00041040 blx 0x81d4 | fcn_000081d4 ();
0x00041044 b 0x40e5a | goto label_14;
| label_41:
0x00041046 movs r7, 7 | r7 = 7;
0x00041048 b 0x40ce4 | goto label_6;
| label_52:
0x0004104a ldr r2, [sp, 0x18] | r2 = var_18h;
0x0004104c movs r3, 0 | r3 = 0;
0x0004104e str r3, [r2] | *(r2) = r3;
0x00041050 b 0x40cde | goto label_15;
| label_44:
0x00041052 movw r7, 0xc0a | r7 = 0xc0a;
0x00041056 b 0x4100a | goto label_16;
| label_50:
0x00041058 mov r0, r7 | r0 = r7;
0x0004105a blx 0x7e70 | fcn_00007e70 ();
0x0004105e str.w r0, [sl, 4] | __asm ("str.w r0, [sl, 4]");
0x00041062 cmp r0, 0 |
| if (r0 != 0) {
0x00041064 bne 0x40f9c | goto label_17;
| }
| label_49:
0x00041066 movs r7, 7 | r7 = 7;
0x00041068 b 0x4102e | goto label_18;
| label_39:
0x0004106a mov r7, sb | r7 = sb;
0x0004106c movs r0, 1 | r0 = 1;
0x0004106e b 0x4100a | goto label_16;
| label_47:
0x00041070 movs r7, 7 | r7 = 7;
0x00041072 b 0x4100a | goto label_16;
| label_51:
0x00041074 ldr r2, [sp, 0x40] | r2 = var_40h;
0x00041076 movw r1, 0x8042 | r1 = 0x8042;
0x0004107a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0004107c ubfx r2, r2, 0, 9 | r2 = (r2 >> 0) & ((1 << 9) - 1);
0x00041080 bl 0x2332c | r0 = fcn_0002332c (r0, r1, r2, r3, r4, r5, r6);
0x00041084 mov r7, r0 | r7 = r0;
0x00041086 str.w r0, [sl, 0xc] | __asm ("str.w r0, [sl, 0xc]");
0x0004108a b 0x40fba | goto label_19;
| label_21:
0x0004108c ldr r2, [sp, 0x40] | r2 = var_40h;
0x0004108e mov.w r1, 0x8000 | r1 = fcn.00008000;
0x00041092 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00041094 ubfx r2, r2, 0, 9 | r2 = (r2 >> 0) & ((1 << 9) - 1);
0x00041098 bl 0x2332c | r0 = fcn_0002332c (r0, r1, r2, r3, r4, r5, r6);
0x0004109c cmp r0, 0 |
0x0004109e mov r7, r0 | r7 = r0;
0x000410a0 it ge |
| if (r0 < 0) {
0x000410a2 movge r3, 1 | r3 = 1;
| }
0x000410a4 str.w r0, [sl, 0xc] | __asm ("str.w r0, [sl, 0xc]");
0x000410a8 it ge |
| if (r0 >= 0) {
0x000410aa strbge r3, [sl, 0x16] | *((sl + 0x16)) = r3;
| goto label_53;
| }
| if (r0 >= 0) {
| label_53:
0x000410ae bge 0x40fbe | goto label_20;
| }
0x000410b0 blx 0x7f8c | fcn_00007f8c ();
0x000410b4 ldr r2, [pc, 0x70] |
0x000410b6 adds r0, 0x14 | r0 += 0x14;
0x000410b8 ldr r1, [pc, 0x70] |
0x000410ba movw r3, 0x973c | r3 = 0x973c;
0x000410be str r0, [sp] | *(sp) = r0;
0x000410c0 movs r0, 0xe | r0 = 0xe;
0x000410c2 add r2, pc | r2 = 0x821ee;
0x000410c4 add r1, pc | r1 = 0x821f4;
0x000410c6 blx 0x8474 | fcn_00008474 ();
0x000410ca ldr r1, [pc, 0x64] |
0x000410cc movw r3, 0x973c | r3 = 0x973c;
0x000410d0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000410d2 movs r0, 0xe | r0 = 0xe;
0x000410d4 add r1, pc | r1 = 0x8220a;
0x000410d6 bl 0x2340c | r0 = fcn_0002340c (r0, r1, r2, r3, r4, r5, r6);
0x000410da mov r7, r0 | r7 = r0;
0x000410dc b 0x4102e | goto label_18;
| label_36:
0x000410de blx 0x7e8c | fcn_00007e8c ();
0x000410e2 nop |
| if (r0 != 0xe) {
0x000410e4 beq 0x41154 |
0x000410e6 movs r0, r1 | r0 = r1;
0x000410e8 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000410ea movs r0, r0 |
0x000410ec bvc 0x4108c | __asm ("bvc aav.0x000000ff");
| goto label_21;
0x000410ee movs r0, r1 | r0 = r1;
0x000410f0 ldm r7, {r1, r2, r5, r7} | r1 = *(r7);
| r2 = *((r7 + 4));
| r5 = *((r7 + 8));
| r7 = *((r7 + 12));
0x000410f2 movs r0, r1 | r0 = r1;
0x000410f4 bvc 0x41134 | __asm ("bvc fcn.00041134");
0x000410f6 movs r0, r1 | r0 = r1;
0x000410f8 b 0x4148c | goto label_54;
| }
0x00041154 lsrs r2, r0, 0x18 | r2 = r0 >> 0x18;
0x00041156 mov r2, r4 | r2 = r4;
0x00041158 mov r3, r5 | r3 = r5;
0x0004115a mov r1, lr | r1 = lr;
| do {
0x0004115c lsrs r5, r2, 7 | r5 = r2 >> 7;
0x0004115e orn r4, r2, 0x7f | r4 = r2 | 0x7f;
| r4 = ~r4;
0x00041162 uxtb r0, r2 | r0 = (int8_t) r2;
0x00041164 mov ip, r1 |
0x00041166 orr.w r2, r5, r3, lsl 25 | r2 = r5 | (r3 << 25);
0x0004116a lsrs r3, r3, 7 | r3 >>= 7;
0x0004116c strb r4, [r1], 1 | *(r1) = r4;
| r1++;
0x00041170 orrs.w r4, r2, r3 | r4 = r2 | r3;
0x00041174 bne 0x4115c |
| } while (r4 != r2);
0x00041176 and r0, r0, 0x7f | r0 &= 0x7f;
0x0004117a sub.w r1, r1, lr | r1 -= lr;
0x0004117e strb.w r0, [ip] | *(ip) = r0;
0x00041182 movs r0, 0 | r0 = 0;
0x00041184 ldrd r2, r3, [r7] | __asm ("ldrd r2, r3, [r7]");
0x00041188 add r1, r2 | r1 += r2;
0x0004118a str r1, [r7] | *(r7) = r1;
0x0004118c strb r0, [r3, r1] | *((r3 + r1)) = r0;
0x0004118e str r7, [r6] | *(r6) = r7;
0x00041190 pop.w {r4, r5, r6, r7, r8, pc} |
| label_54:
0x0004148c vsub.i64 d2, d11, d0 | __asm ("vsub.i64 d2, d11, d0");
| /* Beware that this jump is a conditional jump.
| * r2dec transformed it as a return, due being the
| * last instruction. Please, check 'pdda' output
| * for more hints. */
0x00041490 bne 0x414f4 | return void (*0x414f4)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x411e4 */
| #include <stdint.h>
|
; (fcn) fcn.000411e4 () | void fcn_000411e4 (int16_t arg_30h, int16_t arg_38h, int16_t arg_40h, int16_t arg1, int16_t arg3, int16_t arg4) {
| int16_t var_bp_0h;
| int16_t var_0h_3;
| int16_t var_4h_3;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_3ch;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r2 = arg3;
| r3 = arg4;
0x000411e4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000411e8 mov r4, r2 | r4 = r2;
0x000411ea ldr r2, [pc, 0x10c] |
0x000411ec mov r6, r3 | r6 = r3;
0x000411ee sub sp, 0xc |
0x000411f0 mov r5, r0 | r5 = r0;
0x000411f2 ldr r3, [pc, 0x108] | r3 = *(0x412fe);
0x000411f4 add r2, pc | r2 = 0x824f2;
0x000411f6 ldr r1, [r0] | r1 = *(r0);
0x000411f8 ldrd r7, fp, [sp, 0x30] | __asm ("ldrd r7, fp, [arg_30h]");
0x000411fc ldr r3, [r2, r3] |
0x000411fe ldrd sb, sl, [sp, 0x38] | __asm ("ldrd sb, sl, [arg_38h]");
0x00041202 ldr.w r8, [sp, 0x40] | r8 = *(arg_40h);
0x00041206 ldr r3, [r3] | r3 = *(0x824f2);
0x00041208 str r3, [sp, 4] | var_4h = r3;
0x0004120a mov.w r3, 0 | r3 = 0;
0x0004120e str r1, [sp] | *(sp) = r1;
0x00041210 cmp r1, 0 |
| if (r1 == 0) {
0x00041212 beq 0x412a6 | goto label_3;
| }
0x00041214 ldrd r2, r3, [r1, 0x10] | __asm ("ldrd r2, r3, [r1, 0x10]");
0x00041218 cmp r3, r6 |
0x0004121a it eq |
| if (r3 == r6) {
0x0004121c cmpeq r2, r4 | __asm ("cmpeq r2, r4");
| }
| if (r3 == r6) {
0x0004121e beq 0x4124a | goto label_4;
| }
0x00041220 ldr r0, [r1] | r0 = *(r1);
0x00041222 subs r2, r4, r2 | r2 = r4 - r2;
0x00041224 sbc.w r3, r6, r3 | __asm ("sbc.w r3, r6, r3");
0x00041228 adds r0, 1 | r0++;
0x0004122a str r0, [r1] | *(r1) = r0;
| do {
0x0004122c mov r0, sp | r0 = sp;
0x0004122e bl 0x41134 | r0 = fcn_00041134 (r0, r1, r2);
| if (r0 == 0) {
0x00041232 cbnz r0, 0x4126e |
0x00041234 ldr r1, [sp] | r1 = *(sp);
0x00041236 vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0004123a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0004123e strd r4, r6, [r1, 0x10] | __asm ("strd r4, r6, [r1, 0x10]");
0x00041242 vstr d17, [r1, 0x18] | __asm ("vstr d17, [r1, 0x18]");
0x00041246 vstr d16, [r1, 0x20] | __asm ("vstr d16, [r1, 0x20]");
| label_4:
0x0004124a cmp r7, 1 |
0x0004124c sbcs r3, fp, 0 | __asm ("sbcs r3, var_bp_0h");
| if (r7 < 1) {
0x00041250 blt 0x41272 | goto label_5;
| }
0x00041252 ldrd r2, r3, [r1, 0x18] | __asm ("ldrd r2, r3, [r1, 0x18]");
0x00041256 cmp r3, fp |
0x00041258 it eq |
| if (r3 == fp) {
0x0004125a cmpeq r2, r7 | __asm ("cmpeq r2, r7");
| }
| if (r3 == fp) {
0x0004125c beq 0x412ac | goto label_6;
| }
0x0004125e mov r6, sp | r6 = sp;
0x00041260 movs r2, 1 | r2 = 1;
0x00041262 mov r0, r6 | r0 = r6;
0x00041264 movs r3, 0 | r3 = 0;
0x00041266 bl 0x41134 | r0 = fcn_00041134 (r0, r1, r2);
0x0004126a cmp r0, 0 |
| if (r0 == 0) {
0x0004126c beq 0x412d2 | goto label_7;
| }
| }
| label_1:
0x0004126e ldr r1, [sp] | r1 = *(sp);
0x00041270 b 0x4127c | goto label_0;
| label_5:
0x00041272 orrs.w r7, r7, fp | r7 |= fp;
0x00041276 it ne |
| if (r7 == r7) {
0x00041278 movne r0, 0 | r0 = 0;
| }
| if (r7 == r7) {
0x0004127a beq 0x412ac | goto label_6;
| }
| label_0:
0x0004127c ldr r3, [r5] | r3 = *(r5);
0x0004127e ldr r2, [pc, 0x80] |
0x00041280 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x00041284 cmp r3, r1 |
0x00041286 ldr r3, [pc, 0x74] | r3 = *(0x412fe);
0x00041288 add r2, pc | r2 = 0x8258e;
0x0004128a itte ne |
| if (r3 == r1) {
0x0004128c strne r1, [r5] | *(r5) = r1;
| }
| if (r3 == r1) {
0x0004128e movne r0, 1 | r0 = 1;
| }
| if (r3 != r1) {
0x00041290 moveq r0, 0 | r0 = 0;
| }
0x00041292 ldr r3, [r2, r3] | r3 = *(0x8258e);
0x00041294 ldr r2, [r3] | r2 = *(0x8258e);
0x00041296 ldr r3, [sp, 4] | r3 = var_4h;
0x00041298 eors r2, r3 | r2 ^= r3;
0x0004129a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004129e bne 0x412f4 | goto label_8;
| }
0x000412a0 add sp, 0xc |
0x000412a2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x000412a6 mov r2, r4 | r2 = r4;
0x000412a8 mov r3, r6 | r3 = r6;
0x000412aa b 0x4122c |
| } while (1);
| label_6:
0x000412ac ldrd r4, r3, [r1, 0x20] | __asm ("ldrd r4, r3, [r1, 0x20]");
0x000412b0 mov r6, sp | r6 = sp;
| label_2:
0x000412b2 adds.w r2, sb, 2 | r2 = sb + 2;
0x000412b6 mov r0, r6 | r0 = r6;
0x000412b8 adc r1, sl, 0 | __asm ("adc r1, sl, 0");
0x000412bc subs r2, r2, r4 | r2 -= r4;
0x000412be sbc.w r3, r1, r3 | __asm ("sbc.w r3, r1, r3");
0x000412c2 bl 0x41134 | fcn_00041134 (r0, r1, r2);
0x000412c6 ldr r1, [sp] | r1 = *(sp);
0x000412c8 cmp r0, 0 |
| if (r0 != 0) {
0x000412ca bne 0x4127c | goto label_0;
| }
0x000412cc strd sb, sl, [r1, 0x20] | __asm ("strd sb, sl, [r1, 0x20]");
0x000412d0 b 0x4127c | goto label_0;
| label_7:
0x000412d2 mov r2, r7 | r2 = r7;
0x000412d4 mov r3, fp | r3 = fp;
0x000412d6 mov r0, r6 | r0 = r6;
0x000412d8 bl 0x41134 | r0 = fcn_00041134 (r0, r1, r2);
0x000412dc cmp r0, 0 |
| if (r0 != 0) {
0x000412de bne 0x4126e | goto label_1;
| }
0x000412e0 ldr r3, [sp] | r3 = *(sp);
0x000412e2 mov r4, r0 | r4 = r0;
0x000412e4 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000412e8 strd r7, fp, [r3, 0x18] | __asm ("strd r7, fp, [r3, 0x18]");
0x000412ec vstr d16, [r3, 0x20] | __asm ("vstr d16, [r3, 0x20]");
0x000412f0 mov r3, r0 | r3 = r0;
0x000412f2 b 0x412b2 | goto label_2;
| label_8:
0x000412f4 blx 0x7e8c | fcn_00007e8c ();
0x000412f8 ldm r2, {r2, r3, r4, r7} | r2 = *(r2);
| r3 = *((r2 + 4));
| r4 = *((r2 + 8));
| r7 = *((r2 + 12));
0x000412fa movs r0, r1 | r0 = r1;
0x000412fc lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000412fe movs r0, r0 |
0x00041300 ldm r2!, {r3} | r3 = *(r2!);
0x00041302 movs r0, r1 | r0 = r1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x413cc */
| #include <stdint.h>
|
; (fcn) fcn.000413cc () | void fcn_000413cc (int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
| int16_t var_0h_3;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_10h_2;
| uint32_t var_14h;
| int16_t var_18h;
| int16_t var_1ch_2;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_0h_2;
| int16_t var_4h_3;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000413cc svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000413d0 mov r5, r0 | r5 = r0;
0x000413d2 ldr r0, [pc, 0x140] |
0x000413d4 mov r6, r3 | r6 = r3;
0x000413d6 sub sp, 0x44 |
0x000413d8 ldr r3, [pc, 0x13c] | r3 = *(0x41518);
0x000413da add r0, pc | r0 = 0x828f4;
0x000413dc ldr r3, [r0, r3] |
0x000413de ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x000413e0 ldr r3, [r3] | r3 = *(0x828f4);
0x000413e2 str r3, [sp, 0x3c] | var_3ch = r3;
0x000413e4 mov.w r3, 0 | r3 = 0;
0x000413e8 movs r3, 0 | r3 = 0;
0x000413ea strd r3, r3, [sp, 0x24] | __asm ("strd r3, r3, [sp, 0x24]");
0x000413ee str r3, [sp, 0x2c] | var_2ch = r3;
0x000413f0 str r3, [sp, 0x34] | var_34h = r3;
0x000413f2 ldr r3, [sp, 0x68] | r3 = var_0h_2;
0x000413f4 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x000413f6 ldr r3, [r0] | r3 = *(0x828f4);
0x000413f8 str r3, [sp, 0x18] | var_18h = r3;
0x000413fa cmp r2, 0 |
| if (r2 == 0) {
0x000413fc beq 0x414ba | goto label_8;
| }
0x000413fe add r3, sp, 0x38 | r3 += var_38h;
0x00041400 str r3, [sp] | *(sp) = r3;
0x00041402 mov.w r3, -1 | r3 = -1;
0x00041406 bl 0xaa78 | r0 = fcn_0000aa78 (r0, r1, r2, r3, r4);
0x0004140a mov r7, r0 | r7 = r0;
0x0004140c str r0, [sp, 0x14] | var_14h = r0;
0x0004140e cmp r0, 0 |
| if (r0 != 0) {
0x00041410 bne 0x414c2 | goto label_3;
| }
0x00041412 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00041414 add.w fp, sp, 0x24 |
0x00041418 ldr.w r8, [sp, 0x38] | r8 = var_38h;
0x0004141c add.w sl, sp, 0x34 | sl += var_34h;
0x00041420 add.w sb, sp, 0x30 | sb += var_30h;
0x00041424 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00041426 str r3, [sp, 8] | var_8h_2 = r3;
0x00041428 add r3, sp, 0x2c | r3 += var_2ch;
0x0004142a str r3, [sp, 0x10] | var_10h_2 = r3;
0x0004142c add r3, sp, 0x28 | r3 += var_28h;
0x0004142e str r3, [sp, 0xc] | var_ch_2 = r3;
| do {
| label_2:
0x00041430 ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x00041432 mov r2, sl | r2 = sl;
0x00041434 ldr r4, [sp, 8] | r4 = *((sp + 8));
0x00041436 mov r1, sb | r1 = sb;
0x00041438 mov r0, r8 | r0 = r8;
0x0004143a str r3, [sp, 4] | *((sp + 4)) = r3;
0x0004143c ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0004143e str r3, [sp] | *(sp) = r3;
0x00041440 mov r3, fp | r3 = fp;
0x00041442 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00041444 cmp r0, 0 |
| if (r0 != 0) {
0x00041446 bne 0x414f4 | goto label_9;
| }
0x00041448 ldr r2, [sp, 0x2c] | r2 = *((sp + 0x2c));
0x0004144a cmp r2, r7 |
0x0004144c it ge |
| if (r2 < r7) {
0x0004144e addge r7, r2, 1 | r7 = r2 + 1;
| }
| if (r2 < r7) {
0x00041450 bge 0x41456 |
0x00041452 cmp r2, 0 |
| if (r2 < 0) {
0x00041454 blt 0x414de | goto label_10;
| }
| }
0x00041456 ldr r3, [sp, 0x30] | r3 = *((sp + 0x30));
0x00041458 cmp r3, 0 |
| if (r3 == 0) {
0x0004145a beq 0x414de | goto label_10;
| }
0x0004145c ldr r1, [sp, 0x34] | r1 = *((sp + 0x34));
0x0004145e cmp r1, 0 |
| if (r1 <= 0) {
0x00041460 ble 0x414de | goto label_10;
| }
0x00041462 strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x00041466 mov r0, r5 | r0 = r5;
0x00041468 ldr.w r3, [r5, 0x104] | r3 = *((r5 + 0x104));
0x0004146c mov r1, r6 | r1 = r6;
0x0004146e adds r3, 4 | r3 += 4;
0x00041470 bl 0x41304 | r0 = fcn_00041304 (r0, r1, r2, r3);
0x00041474 cmp r0, 0 |
| if (r0 != 0) {
0x00041476 bne 0x414f4 | goto label_9;
| }
0x00041478 movs r4, 1 | r4 = 1;
0x0004147a b 0x41492 | goto label_11;
| label_0:
0x0004147c str r2, [sp, 4] | *((sp + 4)) = r2;
0x0004147e adds r3, 4 | r3 += 4;
0x00041480 ldr r2, [sp, 0x30] | r2 = *((sp + 0x30));
0x00041482 mov r1, r6 | r1 = r6;
0x00041484 mov r0, r5 | r0 = r5;
0x00041486 str r2, [sp] | *(sp) = r2;
0x00041488 ldr r2, [sp, 0x2c] | r2 = *((sp + 0x2c));
0x0004148a bl 0x41304 | fcn_00041304 (r0, r1, r2, r3);
0x0004148c invalid |
| label_11:
0x00041492 ldr.w r1, [r5, 0x100] | r1 = *((r5 + 0x100));
0x00041496 cmp r4, r1 |
0x00041498 bge 0x41430 |
| } while (r4 >= r1);
0x0004149a ldr.w r3, [r5, 0x104] | r3 = *((r5 + 0x104));
0x0004149e add.w r2, r4, r4, lsl 1 | r2 = r4 + (r4 << 1);
0x000414a2 ldr r0, [sp, 0x34] | r0 = *((sp + 0x34));
0x000414a4 add.w r3, r3, r2, lsl 3 | r3 += (r2 << 3);
| label_1:
0x000414a8 ldr r2, [r3] | r2 = *(r3);
0x000414aa adds r4, 1 | r4++;
0x000414ac cmp r2, r0 |
| if (r2 <= r0) {
0x000414ae ble 0x4147c | goto label_0;
| }
0x000414b0 cmp r1, r4 |
0x000414b2 add.w r3, r3, 0x18 | r3 += 0x18;
| if (r1 != r4) {
0x000414b6 bne 0x414a8 | goto label_1;
| }
0x000414b8 b 0x41430 | goto label_2;
| label_8:
0x000414ba mov r3, r2 | r3 = r2;
0x000414bc str r2, [sp, 0x14] | var_14h = r2;
0x000414be ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x000414c0 str r3, [r2] | *(r2) = r3;
| do {
| label_3:
0x000414c2 ldr r2, [pc, 0x58] |
0x000414c4 ldr r3, [pc, 0x50] | r3 = *(0x41518);
0x000414c6 add r2, pc | r2 = 0x829e8;
0x000414c8 ldr r3, [r2, r3] | r3 = *(0x829e8);
0x000414ca ldr r2, [r3] | r2 = *(0x829e8);
0x000414cc ldr r3, [sp, 0x3c] | r3 = *((sp + 0x3c));
0x000414ce eors r2, r3 | r2 ^= r3;
0x000414d0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000414d4 bne 0x41510 | goto label_12;
| }
0x000414d6 ldr r0, [sp, 0x14] | r0 = *((sp + 0x14));
0x000414d8 add sp, 0x44 |
0x000414da pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x000414de ldr r3, [sp, 0x18] | r3 = *((sp + 0x18));
0x000414e0 mov r0, r8 | r0 = r8;
0x000414e2 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000414e4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000414e6 ldr r2, [sp, 0x1c] | r2 = *((sp + 0x1c));
0x000414e8 movs r1, 1 | r1 = 1;
0x000414ea str r1, [sp, 0x14] | *((sp + 0x14)) = r1;
0x000414ec ldr r3, [r2] | r3 = *(r2);
0x000414ee add r3, r7 | r3 += r7;
0x000414f0 str r3, [r2] | *(r2) = r3;
0x000414f2 b 0x414c2 |
| } while (1);
| label_9:
0x000414f4 ldr r3, [sp, 0x14] | r3 = *((sp + 0x14));
0x000414f6 cmp r0, 0x65 |
0x000414f8 it ne |
| if (r0 == 0x65) {
0x000414fa movne r3, r0 | r3 = r0;
| }
0x000414fc mov r0, r8 | r0 = r8;
0x000414fe str r3, [sp, 0x14] | *((sp + 0x14)) = r3;
0x00041500 ldr r3, [sp, 0x18] | r3 = *((sp + 0x18));
0x00041502 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00041504 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00041506 ldr r2, [sp, 0x1c] | r2 = *((sp + 0x1c));
0x00041508 ldr r3, [r2] | r3 = *(r2);
0x0004150a add r3, r7 | r3 += r7;
0x0004150c str r3, [r2] | *(r2) = r3;
0x0004150e b 0x414c2 | goto label_3;
| label_12:
0x00041510 blx 0x7e8c | fcn_00007e8c ();
0x00041514 ldm r0!, {r1, r2, r4, r5, r7} | r1 = *(r0!);
| r2 = *((r0! + 4));
| r4 = *((r0! + 8));
| r5 = *((r0! + 12));
| r7 = *((r0! + 16));
0x00041516 movs r0, r1 | r0 = r1;
0x00041518 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0004151a movs r0, r0 |
0x0004151c stm r7!, {r1, r3, r6, r7} | *(r7!) = r1;
| *((r7! + 4)) = r3;
| *((r7! + 8)) = r6;
| *((r7! + 12)) = r7;
0x0004151e movs r0, r1 | r0 = r1;
0x00041520 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00041524 mov r5, r0 | r5 = r0;
0x00041526 mov r8, r2 | r8 = r2;
0x00041528 ldrd r6, r2, [r5, 4] | __asm ("ldrd r6, r2, [r5, 4]");
0x0004152c mov sb, r1 | sb = r1;
0x0004152e sub sp, 0xc |
0x00041530 ldr r0, [r0] | r0 = *(r0);
0x00041532 adds r1, r6, r2 | r1 = r6 + r2;
0x00041534 str r3, [sp, 4] | var_4h_3 = r3;
0x00041536 subs r1, 1 | r1--;
| do {
| label_5:
0x00041538 ldr r4, [r5, 0xc] | r4 = *((r5 + 0xc));
0x0004153a cmp r4, r2 |
| if (r4 >= r2) {
0x0004153c bge 0x41616 | goto label_13;
| }
0x0004153e subs r3, r4, 1 | r3 = r4 - 1;
0x00041540 add r3, r6 | r3 += r6;
0x00041542 ldrb ip, [r3, 1]! | ip = *((r3 += 1));
0x00041546 tst.w ip, 0x80 |
0x0004154a add.w lr, r0, ip | lr = r0 + ip;
| if ((ip & 0x80) != 0) {
0x0004154e bne 0x4156c | goto label_14;
| }
| label_4:
0x00041550 ldrb.w r7, [lr, 4] | r7 = *((lr + 4));
| if (r7 == 0) {
0x00041554 cbz r7, 0x4156c | goto label_14;
| }
0x00041556 adds r4, 1 | r4++;
0x00041558 cmp r4, r2 |
0x0004155a str r4, [r5, 0xc] | *((r5 + 0xc)) = r4;
0x0004155c beq 0x41538 |
| } while (r4 == r2);
0x0004155e ldrb ip, [r3, 1]! | ip = *((r3 += 1));
0x00041562 tst.w ip, 0x80 |
0x00041566 add.w lr, r0, ip | lr = r0 + ip;
| if ((ip & 0x80) == 0) {
0x0004156a beq 0x41550 | goto label_4;
| }
| label_14:
0x0004156c ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0004156e cmp r2, r3 |
0x00041570 itt gt |
| if (r2 <= r3) {
0x00041572 addgt ip, r3, -1 |
| }
| if (r2 > r3) {
0x00041576 add ip, r6 |
| }
| if (r2 > r3) {
0x00041578 ble 0x41590 |
| label_6:
0x0004157a ldrb lr, [ip, 1]! |
0x0004157e tst.w lr, 0x80 |
0x00041582 add.w sl, r0, lr | sl = r0 + lr;
| if ((lr & 0x80) != 0) {
0x00041586 bne 0x4160a | goto label_15;
| }
0x00041588 ldrb.w r7, [sl, 4] | r7 = *((sl + 4));
0x0004158c cmp r7, 0 |
| if (r7 == 0) {
0x0004158e beq 0x4160a | goto label_15;
| }
| }
| label_7:
0x00041590 cmp r3, r4 |
| if (r3 <= r4) {
0x00041592 ble 0x41538 | goto label_5;
| }
0x00041594 sub.w sl, r3, r4 | sl = r3 - r4;
0x00041598 ldrd r0, r3, [r5, 0x14] | __asm ("ldrd r0, r3, [r5, 0x14]");
0x0004159c cmp r3, sl |
| if (r3 < sl) {
0x0004159e bge 0x415b0 |
0x000415a0 add.w r1, sl, 0x14 | r1 = sl + 0x14;
0x000415a4 str r1, [r5, 0x18] | *((r5 + 0x18)) = r1;
0x000415a6 blx 0x8514 | r0 = fcn_00008514 ();
0x000415aa cmp r0, 0 |
| if (r0 == 0) {
0x000415ac beq 0x4161e | goto label_16;
| }
0x000415ae str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
| }
0x000415b0 add.w lr, r6, -1 | lr = r6 + -1;
0x000415b4 subs r1, r4, 1 | r1 = r4 - 1;
0x000415b6 add lr, r4 | lr += r4;
0x000415b8 add r1, r6 | r1 += r6;
0x000415ba add lr, sl | lr += sl;
0x000415bc b 0x415c0 |
| while (r0 != 0xc) {
0x000415be ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x000415c0 ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x000415c4 sub.w r3, r2, 0x41 | r3 = r2 - 0x41;
0x000415c8 add.w fp, r2, 0x20 |
0x000415cc cmp r3, 0x19 |
0x000415ce sub.w ip, r1, r6 |
0x000415d2 it ls |
| if (r3 <= 0x19) {
0x000415d4 uxtbls r2, fp | __asm ("uxtbls r2, fp");
| }
0x000415d8 cmp r1, lr |
0x000415da sub.w ip, ip, r4 |
0x000415de strb.w r2, [r0, ip] | *((r0 + ip)) = r2;
0x000415e0 movs r0, 0xc | r0 = 0xc;
0x000415e2 bne 0x415be |
| }
0x000415e4 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x000415e6 movs r0, 0 | r0 = 0;
0x000415e8 ldr r2, [sp, 0x30] | r2 = *((sp + 0x30));
0x000415ea str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x000415ee ldr r3, [sp, 4] | r3 = var_4h_3;
0x000415f0 str.w sl, [r8] | __asm ("str.w sl, [r8]");
0x000415f4 str r4, [r3] | *(r3) = r4;
0x000415f6 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000415f8 str r3, [r2] | *(r2) = r3;
0x000415fa ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000415fc adds r2, r3, 1 | r2 = r3 + 1;
0x000415fe str r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
0x00041600 ldr r2, [sp, 0x34] | r2 = *((sp + 0x34));
0x00041602 str r3, [r2] | *(r2) = r3;
0x00041604 add sp, 0xc |
0x00041606 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x0004160a cmp ip, r1 |
0x0004160c add.w r3, r3, 1 | r3++;
0x00041610 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
| if (ip != r1) {
0x00041612 bne 0x4157a | goto label_6;
| }
0x00041614 b 0x41590 | goto label_7;
| label_13:
0x00041616 movs r0, 0x65 | r0 = 0x65;
| do {
0x00041618 add sp, 0xc |
0x0004161a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x0004161e movs r0, 7 | r0 = 7;
0x00041620 b 0x41618 |
| } 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/libsqlite3.so.0.8.6 @ 0x430e4 */
| #include <stdint.h>
|
; (fcn) fcn.000430e4 () | void fcn_000430e4 (int16_t arg_108h, int16_t arg_280h, int16_t arg1) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
0x000430e4 ldr r1, [pc, 0x164] |
0x000430e6 movs r2, 0 | r2 = 0;
0x000430e8 ldr r3, [pc, 0x164] | r3 = *(0x43250);
0x000430ea push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000430ee sub sp, 0x14 |
0x000430f0 add r1, pc | r1 = 0x86340;
0x000430f2 ldr r7, [r0, 0x1c] | r7 = *((r0 + 0x1c));
0x000430f4 mov r4, r0 | r4 = r0;
0x000430f6 ldr r3, [r1, r3] |
0x000430f8 ldrd r6, r5, [r0, 4] | __asm ("ldrd r6, r5, [r0, 4]");
0x000430fc ldr r3, [r3] | r3 = *(0x86340);
0x000430fe str r3, [sp, 0xc] | var_ch = r3;
0x00043100 mov.w r3, 0 | r3 = 0;
0x00043104 ldrd r3, r1, [r0, 0x10] | __asm ("ldrd r3, r1, [r0, 0x10]");
0x00043108 strd r2, r2, [sp, 4] | __asm ("strd r2, r2, [var_4h]");
0x0004310c orrs.w r2, r3, r1 | r2 = r3 | r1;
| if (r2 == r3) {
0x00043110 beq 0x43164 | goto label_6;
| }
| if (r7 != 0) {
0x00043112 cbz r7, 0x43140 |
0x00043114 adds r3, 1 | r3++;
0x00043116 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x0004311a cmp r5, r6 |
0x0004311c str r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
0x0004311e str r1, [r0, 0x14] | *((r0 + 0x14)) = r1;
| if (r5 >= r6) {
0x00043120 bge 0x43144 | goto label_7;
| }
0x00043122 ldr r3, [r0] | r3 = *(r0);
| label_0:
0x00043124 ldrb.w sb, [r3, r5] | sb = *((r3 + r5));
0x00043128 adds r0, r3, r5 | r0 = r3 + r5;
0x0004312a mov r8, r3 | r8 = r3;
0x0004312c tst.w sb, 0x80 |
0x00043130 itt eq |
| if ((sb & 0x80) != 0) {
0x00043132 moveq r0, 1 | r0 = 1;
| }
| if ((sb & 0x80) != 0) {
0x00043134 streq sb, [sp, 4] | var_4h = sb;
| }
| if ((sb & 0x80) != 0) {
0x00043138 bne 0x43208 | goto label_8;
| }
| label_3:
0x0004313a add r5, r0 | r5 += r0;
0x0004313c str r5, [r4, 8] | *((r4 + 8)) = r5;
0x0004313e b 0x43174 | goto label_9;
| }
0x00043140 cmp r5, r6 |
| if (r5 < r6) {
0x00043142 blt 0x43202 | goto label_10;
| }
| do {
| label_7:
0x00043144 movs r3, 0 | r3 = 0;
0x00043146 mov r0, r3 | r0 = r3;
0x00043148 str r3, [r4] | *(r4) = r3;
| label_1:
0x0004314a ldr r2, [pc, 0x108] |
0x0004314c ldr r3, [pc, 0x100] | r3 = *(0x43250);
0x0004314e add r2, pc | r2 = 0x863a8;
0x00043150 ldr r3, [r2, r3] | r3 = *(0x863a8);
0x00043152 ldr r2, [r3] | r2 = *(0x863a8);
0x00043154 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00043156 eors r2, r3 | r2 ^= r3;
0x00043158 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004315c bne 0x43246 | goto label_11;
| }
0x0004315e add sp, 0x14 |
0x00043160 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_6:
0x00043164 cmp r5, r6 |
0x00043166 bge 0x43144 |
| } while (r5 >= r6);
0x00043168 ldr.w r8, [r0] | r8 = *(r0);
0x0004316c mov r3, r8 | r3 = r8;
0x0004316e cmp r7, 0 |
| if (r7 != 0) {
0x00043170 bne 0x43124 | goto label_0;
| }
| label_2:
0x00043172 mov sb, r7 | sb = r7;
| label_9:
0x00043174 ldrb.w r3, [r8, r5] | r3 = *((r8 + r5));
0x00043178 add.w r0, r8, r5 | r0 = r8 + r5;
0x0004317c lsls r1, r3, 0x18 | r1 = r3 << 0x18;
0x0004317e itt pl |
| if (r1 < r3) {
0x00043180 movpl r0, 1 | r0 = 1;
| }
| if (r1 < r3) {
0x00043182 strpl r3, [sp, 8] | var_8h = r3;
| }
| if (r1 < r3) {
0x00043184 bmi 0x43214 | goto label_12;
| }
| label_4:
0x00043186 cmp r7, sb |
0x00043188 add.w r3, r0, r5 | r3 = r0 + r5;
0x0004318c str r3, [r4, 8] | *((r4 + 8)) = r3;
| if (r7 < sb) {
0x0004318e blt 0x431fc | goto label_13;
| }
0x00043190 ldr r2, [sp, 8] | r2 = var_8h;
0x00043192 subs r6, r6, r3 | r6 -= r3;
0x00043194 clz r1, r2 | r1 &= r2;
0x00043198 lsrs r1, r1, 5 | r1 >>= 5;
0x0004319a cmp r6, r2 |
0x0004319c it lt |
| if (r6 >= r2) {
0x0004319e orrlt r1, r1, 1 | r1 |= 1;
| }
| if (r1 != 0) {
0x000431a2 cbnz r1, 0x431fc | goto label_13;
| }
0x000431a4 ldr r1, [r4, 0x20] | r1 = *((r4 + 0x20));
0x000431a6 add.w r5, r2, sb | r5 = r2 + sb;
0x000431aa ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x000431ac cmp r5, r1 |
| if (r5 > r1) {
0x000431ae bgt 0x4321c | goto label_14;
| }
| label_5:
0x000431b0 add.w r1, r8, r3 | r1 = r8 + r3;
0x000431b4 add r0, sb | r0 += sb;
0x000431b6 blx 0x7dcc | fcn_00007dcc ();
0x000431ba ldr r5, [sp, 8] | r5 = var_8h;
0x000431bc ldr r3, [sp, 4] | r3 = var_4h;
0x000431be ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000431c0 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x000431c2 add r3, r5 | r3 += r5;
0x000431c4 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x000431c6 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000431c8 add r5, r1 | r5 += r1;
0x000431ca str r5, [r4, 8] | *((r4 + 8)) = r5;
0x000431cc orrs r2, r3 | r2 |= r3;
0x000431ce it ne |
| if (r2 != r3) {
0x000431d0 movne r0, 0 | r0 = 0;
| goto label_15;
| }
| if (r2 != r3) {
| label_15:
0x000431d2 bne 0x4314a | goto label_1;
| }
0x000431d4 ldr r6, [r4] | r6 = *(r4);
0x000431d6 ldrb r3, [r6, r5] | r3 = *((r6 + r5));
0x000431d8 adds r0, r6, r5 | r0 = r6 + r5;
0x000431da lsls r2, r3, 0x18 | r2 = r3 << 0x18;
0x000431dc itt pl |
| if (r2 < r3) {
0x000431de movpl r0, 1 | r0 = 1;
| }
| if (r2 < r3) {
0x000431e0 strpl r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| }
0x000431e2 bmi 0x4323a |
| while (1) {
0x000431e4 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x000431e6 add r5, r0 | r5 += r0;
0x000431e8 str r5, [r4, 8] | *((r4 + 8)) = r5;
0x000431ea subs r2, r2, r5 | r2 -= r5;
0x000431ec cmp r2, r3 |
| if (r2 >= r3) {
0x000431ee blt 0x431fc |
0x000431f0 add r6, r5 | r6 += r5;
0x000431f2 add r5, r3 | r5 += r3;
0x000431f4 movs r0, 0 | r0 = 0;
0x000431f6 str r6, [r4, 0x24] | *((r4 + 0x24)) = r6;
0x000431f8 str r5, [r4, 8] | *((r4 + 8)) = r5;
0x000431fa b 0x4314a | goto label_1;
| }
| label_13:
0x000431fc movw r0, 0x10b | r0 = 0x10b;
0x00043200 b 0x4314a | goto label_1;
| label_10:
0x00043202 ldr.w r8, [r0] | r8 = *(r0);
0x00043206 b 0x43172 | goto label_2;
| label_8:
0x00043208 add r1, sp, 4 | r1 += var_4h;
0x0004320a bl 0xa648 | fcn_0000a648 (r0, r1);
0x0004320e ldr.w sb, [sp, 4] | sb = var_4h;
0x00043212 b 0x4313a | goto label_3;
| label_12:
0x00043214 add r1, sp, 8 | r1 += var_8h;
0x00043216 bl 0xa648 | fcn_0000a648 (r0, r1);
0x0004321a b 0x43186 | goto label_4;
| label_14:
0x0004321c mov r1, r5 | r1 = r5;
0x0004321e blx 0x8514 | r0 = fcn_00008514 ();
| if (r0 != 0) {
0x00043222 cbz r0, 0x43236 |
0x00043224 ldr.w sb, [sp, 4] | sb = var_4h;
0x00043228 ldr.w r8, [r4] | r8 = *(r4);
0x0004322c ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0004322e ldr r2, [sp, 8] | r2 = var_8h;
0x00043230 str r5, [r4, 0x20] | *((r4 + 0x20)) = r5;
0x00043232 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00043234 b 0x431b0 | goto label_5;
| }
0x00043236 movs r0, 7 | r0 = 7;
0x00043238 b 0x4314a | goto label_1;
0x0004323a add.w r1, r4, 0x28 | r1 = r4 + 0x28;
0x0004323e bl 0xa648 | fcn_0000a648 (r0, r1);
0x00043242 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00043244 b 0x431e4 |
| }
| label_11:
0x00043246 blx 0x7e8c | fcn_00007e8c ();
0x0004324a nop |
0x0004324c add r3, sp, 0x280 | r3 += arg_280h;
0x0004324e movs r0, r1 | r0 = r1;
0x00043250 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00043252 movs r0, r0 |
0x00043254 add r3, sp, 0x108 | r3 += arg_108h;
0x00043256 movs r0, r1 | r0 = r1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x434c4 */
| #include <stdint.h>
|
; (fcn) fcn.000434c4 () | void fcn_000434c4 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (? >= ?) {
0x000434c4 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x000434c8 mov r5, r0 | r5 = r0;
0x000434ca mov sb, r1 | sb = r1;
0x000434cc mov r8, r2 | r8 = r2;
0x000434ce mov r7, r3 | r7 = r3;
| do {
0x000434d0 ldrb r6, [r5, 0x14] | r6 = *((r5 + 0x14));
0x000434d2 mov r3, r6 | r3 = r6;
| if (r6 != 0) {
0x000434d4 cbnz r6, 0x43514 | goto label_1;
| }
0x000434d6 ldrd r4, r0, [r5, 4] | __asm ("ldrd r4, r0, [r5, 4]");
0x000434da adds r4, 5 | r4 += 5;
0x000434dc lsl.w sl, r4, 1 | sl = r4 << 1;
0x000434e0 add.w r2, sl, r4 | r2 = sl + r4;
0x000434e4 lsls r2, r2, 3 | r2 <<= 3;
0x000434e6 blx 0x8638 | r0 = fcn_00008638 ();
0x000434ea mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000434ec cbz r0, 0x4351a | goto label_2;
| }
0x000434ee ldr r0, [r5] | r0 = *(r5);
0x000434f0 strd sl, r4, [r5, 4] | __asm ("strd sl, r4, [r5, 4]");
0x000434f4 cmp sl, r0 |
0x000434f6 bls 0x434d0 |
| } while (sl < r0);
0x000434f8 add.w r3, r0, r0, lsl 1 | r3 = r0 + (r0 << 1);
0x000434fc lsls r3, r3, 2 | r3 <<= 2;
0x000434fe strb.w sb, [r4, r3] | *((r4 + r3)) = sb;
0x00043502 add r4, r3 | r4 += r3;
0x00043504 adds r3, r0, 1 | r3 = r0 + 1;
0x00043506 strb r6, [r4, 1] | *((r4 + 1)) = r6;
0x00043508 str.w r8, [r4, 4] | __asm ("str.w r8, [r4, 4]");
0x0004350c str r7, [r4, 8] | *((r4 + 8)) = r7;
0x0004350e str r3, [r5] | *(r5) = r3;
| do {
| label_0:
0x00043510 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_1:
0x00043514 mov.w r0, -1 | r0 = -1;
0x00043518 b 0x43510 |
| } while (1);
| label_2:
0x0004351a movs r3, 1 | r3 = 1;
0x0004351c mov.w r0, -1 | r0 = -1;
0x00043520 strb r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
0x00043522 b 0x43510 | 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/libsqlite3.so.0.8.6 @ 0x43524 */
| #include <stdint.h>
|
; (fcn) fcn.00043524 () | void fcn_00043524 (int16_t arg_0h, int16_t arg_4h, int16_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| uint32_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00043524 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00043528 sub sp, 0x1c |
0x0004352a ldrb r3, [r2] | r3 = *(r2);
0x0004352c mov fp, r2 |
0x0004352e str r0, [sp, 4] | var_4h = r0;
0x00043530 cmp r3, 7 |
0x00043532 str r1, [sp, 0xc] | var_ch = r1;
| if (r3 != 7) {
0x00043534 bne 0x435e4 | goto label_7;
| }
0x00043536 add.w r3, r1, r1, lsl 1 | r3 = r1 + (r1 << 1);
0x0004353a ldr r6, [r0, 8] | r6 = *((r0 + 8));
0x0004353c lsls r2, r3, 2 | r2 = r3 << 2;
0x0004353e ldrb r3, [r6, r2] | r3 = *((r6 + r2));
0x00043540 add r6, r2 | r6 += r2;
0x00043542 str r2, [sp, 0x10] | var_10h = r2;
0x00043544 cmp r3, 7 |
| if (r3 != 7) {
0x00043546 bne.w 0x436f8 | goto label_8;
| }
0x0004354a ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0004354e cmp r3, 1 |
| if (r3 < 1) {
0x00043550 bls 0x435e2 | goto label_9;
| }
0x00043552 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00043554 movs r3, 1 | r3 = 1;
0x00043556 mov sl, r3 | sl = r3;
0x00043558 str r2, [sp, 8] | var_8h = r2;
| label_1:
0x0004355a ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x0004355c add.w r8, sl, sl, lsl 1 | r8 = sl + (sl << 1);
0x00043560 lsl.w r3, r8, 2 | r3 = r8 << 2;
0x00043564 cmp r7, 1 |
0x00043566 str r3, [sp] | *(sp) = r3;
0x00043568 add r3, fp | r3 += fp;
0x0004356a ldrd r5, sb, [r3, 4] | __asm ("ldrd r5, sb, [r3, 4]");
0x0004356e it hi |
| if (r7 <= 1) {
0x00043570 movhi r4, 1 | r4 = 1;
| }
| if (r7 > 1) {
0x00043572 bhi 0x43592 | goto label_10;
| }
0x00043574 b 0x435ec | goto label_11;
| do {
| label_0:
0x00043576 add.w r8, r8, 0xc | r8 += 0xc;
0x0004357a movs r3, 2 | r3 = 2;
0x0004357c ldrb.w r2, [r6, r8] | r2 = *((r6 + r8));
0x00043580 add r8, r6 | r8 += r6;
0x00043582 cmp r2, 5 |
0x00043584 itt hi |
| if (r2 <= 5) {
0x00043586 ldrhi r3, [r8, 4] | r3 = *((r8 + 4));
| }
| if (r2 > 5) {
0x0004358a adds r3, 2 | r3 += 2;
| }
0x0004358c add r4, r3 | r4 += r3;
0x0004358e cmp r4, r7 |
| if (r4 >= r7) {
0x00043590 bhs 0x435ec | goto label_11;
| }
| label_10:
0x00043592 add.w r8, r4, r4, lsl 1 | r8 = r4 + (r4 << 1);
0x00043596 lsl.w r8, r8, 2 | r8 <<= 2;
0x0004359a add.w r2, r6, r8 | r2 = r6 + r8;
0x0004359e ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000435a0 cmp r3, r5 |
0x000435a2 bne 0x43576 |
| } while (r3 != r5);
0x000435a4 ldr r0, [r2, 8] | r0 = *((r2 + 8));
0x000435a6 mov r1, sb | r1 = sb;
0x000435a8 mov r2, r5 | r2 = r5;
0x000435aa blx 0x85d0 | r0 = fcn_000085d0 ();
0x000435ae cmp r0, 0 |
| if (r0 != 0) {
0x000435b0 bne 0x43576 | goto label_0;
| }
0x000435b2 add.w r2, r8, 0xc | r2 = r8 + 0xc;
0x000435b6 ldr r3, [sp] | r3 = *(sp);
0x000435b8 adds r0, r6, r2 | r0 = r6 + r2;
0x000435ba str r2, [sp, 0x14] | var_14h = r2;
0x000435bc ldrb r1, [r0, 1] | r1 = *((r0 + 1));
0x000435be adds r3, 0xc | r3 += 0xc;
0x000435c0 ldrb.w r2, [fp, r3] | r2 = *((fp + r3));
0x000435c4 add.w r8, fp, r3 | r8 = fp + r3;
0x000435c8 tst.w r1, 0x14 |
| if ((r1 & 0x14) != 0) {
0x000435cc bne 0x43636 | goto label_12;
| }
| if (r2 != 0) {
0x000435ce cbnz r2, 0x435fe | goto label_13;
| }
0x000435d0 movs r3, 2 | r3 = 2;
0x000435d2 orr r1, r1, 4 | r1 |= 4;
0x000435d6 strb r1, [r0, 1] | *((r0 + 1)) = r1;
| label_2:
0x000435d8 ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x000435dc add sl, r3 | sl += r3;
0x000435de cmp r2, sl |
| if (r2 > sl) {
0x000435e0 bhi 0x4355a | goto label_1;
| }
| label_9:
0x000435e2 mov fp, r6 |
| label_7:
0x000435e4 mov r0, fp | r0 = fp;
0x000435e6 add sp, 0x1c |
0x000435e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x000435ec ldr r3, [sp] | r3 = *(sp);
0x000435ee adds r3, 0xc | r3 += 0xc;
| do {
0x000435f0 ldrb.w r2, [fp, r3] | r2 = *((fp + r3));
0x000435f4 add.w r8, fp, r3 | r8 = fp + r3;
| if (r2 != 0) {
0x000435f8 cbnz r2, 0x43646 | goto label_14;
| }
| label_3:
0x000435fa movs r3, 2 | r3 = 2;
0x000435fc b 0x435d8 | goto label_2;
| label_13:
0x000435fe str r3, [sp] | *(sp) = r3;
0x00043600 mov r2, r8 | r2 = r8;
0x00043602 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00043604 ldr r0, [sp, 4] | r0 = var_4h;
0x00043606 adds r1, r3, 1 | r1 = r3 + 1;
0x00043608 add r1, r4 | r1 += r4;
0x0004360a bl 0x43524 | fcn_00043524 (r0, r1, r2, r3, r4);
0x0004360e ldr r3, [sp] | r3 = *(sp);
0x00043610 cmp r0, 0 |
| if (r0 == 0) {
0x00043612 beq.w 0x43740 | goto label_15;
| }
0x00043616 ldr r2, [sp, 4] | r2 = var_4h;
0x00043618 ldr r6, [r2, 8] | r6 = *((r2 + 8));
0x0004361a ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004361c add r6, r2 | r6 += r2;
0x0004361e ldr r2, [sp, 0x14] | r2 = var_14h;
0x00043620 add r2, r6 | r2 += r6;
0x00043622 cmp r2, r0 |
0x00043624 itttt ne |
| if (r2 == r0) {
0x00043626 ldrbne r1, [r2, 1] | r1 = *((r2 + 1));
| }
| if (r2 == r0) {
0x00043628 strne r0, [r2, 8] | *((r2 + 8)) = r0;
| }
| if (r2 == r0) {
0x0004362a orrne r1, r1, 0x10 | r1 |= 0x10;
| }
| if (r2 != r0) {
0x0004362e strb r1, [r2, 1] | *((r2 + 1)) = r1;
| }
0x00043630 ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x00043632 ldrb.w r2, [r8] | r2 = *(r8);
| label_12:
0x00043636 cmp r4, r7 |
0x00043638 bhs 0x435f0 |
| } while (r4 >= r7);
| label_4:
0x0004363a cmp r2, 5 |
| if (r2 < 5) {
0x0004363c bls 0x435fa | goto label_3;
| }
0x0004363e ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00043642 adds r3, 2 | r3 += 2;
0x00043644 b 0x435d8 | goto label_2;
| label_14:
0x00043646 ldr r2, [sp, 4] | r2 = var_4h;
0x00043648 ldrd r3, r1, [r2] | __asm ("ldrd r3, r1, [r2]");
0x0004364c cmp r3, r1 |
| if (r3 >= r1) {
0x0004364e bhs 0x4372a | goto label_16;
| }
0x00043650 ldr r7, [sp, 4] | r7 = var_4h;
0x00043652 add.w r0, r3, r3, lsl 1 | r0 = r3 + (r3 << 1);
0x00043656 movs r6, 7 | r6 = 7;
0x00043658 mov r4, r3 | r4 = r3;
0x0004365a adds r3, 1 | r3++;
0x0004365c ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x0004365e strh.w r6, [r2, r0, lsl 2] | offset_0 = r0 << 2;
| *((r2 + offset_0)) = r6;
0x00043662 movs r6, 2 | r6 = 2;
0x00043664 add.w r2, r2, r0, lsl 2 | r2 += (r0 << 2);
0x00043668 movs r0, 0 | r0 = 0;
0x0004366a strd r6, r0, [r2, 4] | __asm ("strd r6, r0, [r2, 4]");
0x0004366e str r3, [r7] | *(r7) = r3;
| label_6:
0x00043670 cmp r3, r1 |
| if (r3 >= r1) {
0x00043672 bhs 0x43716 | goto label_17;
| }
0x00043674 ldr r7, [sp, 4] | r7 = var_4h;
0x00043676 add.w r0, r3, r3, lsl 1 | r0 = r3 + (r3 << 1);
0x0004367a movs r6, 5 | r6 = 5;
0x0004367c adds r3, 1 | r3++;
0x0004367e ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00043680 strh.w r6, [r2, r0, lsl 2] | offset_1 = r0 << 2;
| *((r2 + offset_1)) = r6;
0x00043684 add.w r2, r2, r0, lsl 2 | r2 += (r0 << 2);
0x00043688 strd r5, sb, [r2, 4] | __asm ("strd r5, sb, [r2, 4]");
0x0004368c str r3, [r7] | *(r7) = r3;
| label_5:
0x0004368e cmp r3, r1 |
| if (r3 >= r1) {
0x00043690 bhs 0x43706 | goto label_18;
| }
0x00043692 ldr r5, [sp, 4] | r5 = var_4h;
0x00043694 add.w r1, r3, r3, lsl 1 | r1 = r3 + (r3 << 1);
0x00043698 mov.w r0, 1 | r0 = 1;
0x0004369c ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0004369e strh.w r0, [r2, r1, lsl 2] | offset_2 = r1 << 2;
| *((r2 + offset_2)) = r0;
0x000436a2 movs r0, 0 | r0 = 0;
0x000436a4 add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x000436a8 mov r1, r3 | r1 = r3;
0x000436aa adds r3, 1 | r3++;
0x000436ac strd r0, r0, [r2, 4] | __asm ("strd r0, r0, [r2, 4]");
0x000436b0 str r3, [r5] | *(r5) = r3;
| do {
0x000436b2 ldr r5, [sp, 4] | r5 = var_4h;
0x000436b4 ldrb r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x000436b6 cmp r3, 0 |
| if (r3 != 0) {
0x000436b8 bne 0x43740 | goto label_15;
| }
0x000436ba mov r0, fp | r0 = fp;
0x000436bc add.w r1, r1, r1, lsl 1 | r1 += (r1 << 1);
0x000436c0 bl 0xafe4 | fcn_0000afe4 (r0);
0x000436c4 ldr r6, [r5, 8] | r6 = *((r5 + 8));
0x000436c6 add.w r2, r6, r1, lsl 2 | r2 = r6 + (r1 << 2);
0x000436ca ldr r1, [sp, 8] | r1 = var_8h;
0x000436cc str r4, [sp, 8] | var_8h = r4;
0x000436ce add.w r3, r1, r1, lsl 1 | r3 = r1 + (r1 << 1);
0x000436d2 subs r1, r4, r1 | r1 = r4 - r1;
0x000436d4 add.w r3, r6, r3, lsl 2 | r3 = r6 + (r3 << 2);
0x000436d8 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x000436da ldr r1, [sp, 0x10] | r1 = var_10h;
0x000436dc add r6, r1 | r6 += r1;
0x000436de ldrb r1, [r3, 1] | r1 = *((r3 + 1));
0x000436e0 orr r1, r1, 0x20 | r1 |= 0x20;
0x000436e4 strb r1, [r3, 1] | *((r3 + 1)) = r1;
0x000436e6 ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x000436e8 str.w r8, [r2, 8] | __asm ("str.w r8, [r2, 8]");
0x000436ec orr r3, r3, 0x10 | r3 |= 0x10;
0x000436f0 strb r3, [r2, 1] | *((r2 + 1)) = r3;
0x000436f2 ldrb.w r2, [r8] | r2 = *(r8);
0x000436f6 b 0x4363a | goto label_4;
| label_8:
0x000436f8 mov r0, fp | r0 = fp;
0x000436fa bl 0xafe4 | fcn_0000afe4 (r0);
0x000436fe mov r0, fp | r0 = fp;
0x00043700 add sp, 0x1c |
0x00043702 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x00043706 movs r3, 0 | r3 = 0;
0x00043708 movs r1, 1 | r1 = 1;
0x0004370a ldr r0, [sp, 4] | r0 = var_4h;
0x0004370c mov r2, r3 | r2 = r3;
0x0004370e bl 0x434c4 | r0 = fcn_000434c4 (r0, r1, r2, r3);
0x00043712 mov r1, r0 | r1 = r0;
0x00043714 b 0x436b2 |
| } while (1);
| label_17:
0x00043716 mov r2, r5 | r2 = r5;
0x00043718 ldr r5, [sp, 4] | r5 = var_4h;
0x0004371a mov r3, sb | r3 = sb;
0x0004371c movs r1, 5 | r1 = 5;
0x0004371e mov r0, r5 | r0 = r5;
0x00043720 bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x00043724 ldrd r3, r1, [r5] | __asm ("ldrd r3, r1, [r5]");
0x00043728 b 0x4368e | goto label_5;
| label_16:
0x0004372a ldr r6, [sp, 4] | r6 = var_4h;
0x0004372c movs r3, 0 | r3 = 0;
0x0004372e movs r1, 7 | r1 = 7;
0x00043730 movs r2, 2 | r2 = 2;
0x00043732 mov r0, r6 | r0 = r6;
0x00043734 bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x00043738 ldrd r3, r1, [r6] | __asm ("ldrd r3, r1, [r6]");
0x0004373c mov r4, r0 | r4 = r0;
0x0004373e b 0x43670 | goto label_6;
| label_15:
0x00043740 mov.w fp, 0 |
0x00043744 b 0x435e4 | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x43748 */
| #include <stdint.h>
|
; (fcn) fcn.00043748 () | void fcn_00043748 (int16_t arg_58h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| 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;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00043748 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0004374c mov sl, r2 | sl = r2;
0x0004374e sub sp, 0x34 |
0x00043750 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x00043752 lsls r6, r1, 1 | r6 = r1 << 1;
0x00043754 str r3, [sp, 0x18] | var_18h = r3;
0x00043756 ldrb.w r3, [sl] | r3 = *(sl);
0x0004375a adds r5, r6, r1 | r5 = r6 + r1;
0x0004375c add.w r5, r2, r5, lsl 2 | r5 = r2 + (r5 << 2);
0x00043760 str r0, [sp, 0x14] | var_14h = r0;
0x00043762 str r2, [sp, 0x24] | var_24h = r2;
0x00043764 cmp r3, 0 |
| if (r3 == 0) {
0x00043766 beq.w 0x438a4 | goto label_5;
| }
0x0004376a mov r4, r1 | r4 = r1;
0x0004376c ldr.w r1, [pc, 0x490] | r1 = *(0x00043c00);
0x00043770 mov r8, r2 | r8 = r2;
0x00043772 add r1, pc | r1 += pc;
0x00043774 str r1, [sp, 0x1c] | var_1ch = r1;
0x00043776 ldr.w r1, [pc, 0x48c] | r1 = *(0x00043c04);
0x0004377a add r1, pc | r1 += pc;
0x0004377c str r1, [sp, 0x28] | var_28h = r1;
0x0004377e ldr.w r1, [pc, 0x488] | r1 = *(0x00043c08);
0x00043782 add r1, pc | r1 += pc;
0x00043784 str r1, [sp, 0x2c] | var_2ch = r1;
0x00043786 ldr.w r1, [pc, 0x484] | r1 = *(0x00043c0c);
0x0004378a add r1, pc | r1 += pc;
0x0004378c str r1, [sp, 0x20] | var_20h = r1;
| label_2:
0x0004378e ldrb r2, [r5, 1] | r2 = *((r5 + 1));
0x00043790 str r2, [sp, 4] | var_4h = r2;
0x00043792 ands r2, r2, 8 | r2 &= 8;
| if (r2 != r2) {
0x00043796 bne.w 0x43a4c | goto label_9;
| }
0x0004379a cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0004379c bne.w 0x438b2 | goto label_16;
| }
0x000437a0 ldrb r3, [r5] | r3 = *(r5);
0x000437a2 cmp r3, 7 |
| if (r3 != 7) {
0x000437a4 bne.w 0x43a4c | goto label_9;
| }
0x000437a8 ldrb.w r3, [sl, 1] | r3 = *((sl + 1));
0x000437ac add.w r2, sl, 1 | r2 = sl + 1;
0x000437b0 str r2, [sp, 0x10] | var_10h = r2;
0x000437b2 cmp r3, 0x22 |
| if (r3 == 0x22) {
0x000437b4 beq.w 0x43ace | goto label_17;
| }
0x000437b8 cmp r3, 0x2e |
0x000437ba it ne |
| if (r3 != 0x2e) {
0x000437bc cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x000437be ite ne |
| if (r3 == 0x2e) {
0x000437c0 movne r2, 1 | r2 = 1;
| }
| if (r3 != 0x2e) {
0x000437c2 moveq r2, 0 | r2 = 0;
| }
0x000437c4 cmp r3, 0x5b |
0x000437c6 ite eq |
| if (r3 != 0x5b) {
0x000437c8 moveq r2, 0 | r2 = 0;
| }
| if (r3 == 0x5b) {
0x000437ca andne r2, r2, 1 | r2 &= 1;
| }
0x000437ce cmp r2, 0 |
| if (r2 == 0) {
0x000437d0 beq.w 0x43afe | goto label_18;
| }
0x000437d4 add.w r1, sl, 2 | r1 = sl + 2;
| do {
0x000437d8 sub.w fp, r1, sl |
0x000437dc ldrb r2, [r1], 1 | r2 = *(r1);
| r1++;
0x000437e0 add.w fp, fp, -1 |
0x000437e4 cmp r2, 0 |
0x000437e6 it ne |
| if (r2 != 0) {
0x000437e8 cmpne r2, 0x2e | __asm ("cmpne r2, 0x2e");
| }
0x000437ea ite ne |
| if (r2 == 0) {
0x000437ec movne r3, 1 | r3 = 1;
| }
| if (r2 != 0) {
0x000437ee moveq r3, 0 | r3 = 0;
| }
0x000437f0 cmp r2, 0x5b |
0x000437f2 ite eq |
| if (r2 != 0x5b) {
0x000437f4 moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0x5b) {
0x000437f6 andne r3, r3, 1 | r3 &= 1;
| }
0x000437fa cmp r3, 0 |
0x000437fc bne 0x437d8 |
| } while (r3 != 0);
0x000437fe ldr.w sl, [sp, 0x10] | sl = var_10h;
0x00043802 mov r2, fp | r2 = fp;
| label_8:
0x00043804 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00043806 mov.w sb, 1 | sb = 1;
0x0004380a mov lr, r2 | lr = r2;
0x0004380c adds r1, r2, 2 | r1 = r2 + 2;
0x0004380e str r1, [sp, 4] | var_4h = r1;
| label_0:
0x00043810 cmp sb, r3 |
| if (sb < r3) {
0x00043812 bls 0x43836 | goto label_19;
| }
| do {
0x00043814 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00043816 ands r3, r3, 0x20 | r3 &= 0x20;
| if (r3 == r3) {
0x0004381a beq.w 0x439a2 | goto label_20;
| }
0x0004381e ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00043820 mov.w sb, 1 | sb = 1;
0x00043824 add r4, r3 | r4 += r3;
0x00043826 lsl.w r6, r4, sb | r6 = r4 << sb;
0x0004382a adds r5, r6, r4 | r5 = r6 + r4;
0x0004382c add.w r5, r8, r5, lsl 2 | r5 = r8 + (r5 << 2);
0x00043830 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00043832 cmp sb, r3 |
0x00043834 bhi 0x43814 |
| } while (sb > r3);
| label_19:
0x00043836 add.w r7, sb, sb, lsl 1 | r7 = sb + (sb << 1);
0x0004383a lsls r7, r7, 2 | r7 <<= 2;
0x0004383c adds r1, r5, r7 | r1 = r5 + r7;
0x0004383e ldrb.w ip, [r1, 1] | ip = *((r1 + 1));
0x00043842 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00043844 tst.w ip, 1 |
| if ((ip & 1) == 0) {
0x00043848 beq 0x43866 | goto label_21;
| }
0x0004384a cmp lr, r0 |
| if (lr == r0) {
0x0004384c beq 0x438ac | goto label_22;
| }
| do {
| label_1:
0x0004384e adds r7, 0xc | r7 += 0xc;
0x00043850 add.w sb, sb, 1 | sb++;
0x00043854 ldrb r1, [r5, r7] | r1 = *((r5 + r7));
0x00043856 add r7, r5 | r7 += r5;
0x00043858 cmp r1, 5 |
0x0004385a itet hi |
| if (r1 <= 5) {
0x0004385c ldrhi r1, [r7, 4] | r1 = *((r7 + 4));
| }
| if (r1 > 5) {
0x0004385e movls r1, 1 | r1 = 1;
| }
| if (r1 <= 5) {
0x00043860 addhi r1, 1 | r1++;
| }
0x00043862 add sb, r1 | sb += r1;
0x00043864 b 0x43810 | goto label_0;
| label_21:
0x00043866 ldr r2, [sp, 4] | r2 = var_4h;
0x00043868 cmp r2, r0 |
0x0004386a bne 0x4384e |
| } while (r2 != r0);
0x0004386c ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x0004386e str r3, [sp, 0xc] | var_ch = r3;
0x00043870 adds r0, 1 | r0++;
| label_3:
0x00043872 mov r2, lr | r2 = lr;
0x00043874 mov r1, sl | r1 = sl;
0x00043876 str.w lr, [sp, 8] | __asm ("str.w lr, [var_8h]");
0x0004387a blx 0x85d0 | fcn_000085d0 ();
0x0004387e ldrd lr, r3, [sp, 8] | __asm ("ldrd lr, r3, [var_8h]");
0x00043882 cmp r0, 0 |
| if (r0 != 0) {
0x00043884 bne 0x4384e | goto label_1;
| }
0x00043886 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00043888 add sb, r4 | sb += r4;
0x0004388a add.w r4, sb, 1 | r4 = sb + 1;
0x0004388e add r3, fp | r3 += fp;
0x00043890 mov sl, r3 | sl = r3;
| label_6:
0x00043892 ldrb.w r3, [sl] | r3 = *(sl);
0x00043896 lsls r6, r4, 1 | r6 = r4 << 1;
0x00043898 adds r5, r6, r4 | r5 = r6 + r4;
0x0004389a add.w r5, r8, r5, lsl 2 | r5 = r8 + (r5 << 2);
0x0004389e cmp r3, 0 |
| if (r3 != 0) {
0x000438a0 bne.w 0x4378e | goto label_2;
| }
| label_5:
0x000438a4 mov r0, r5 | r0 = r5;
0x000438a6 add sp, 0x34 |
0x000438a8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x000438ac ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x000438ae str r3, [sp, 0xc] | var_ch = r3;
0x000438b0 b 0x43872 | goto label_3;
| label_16:
0x000438b2 cmp r3, 0x5b |
| if (r3 != 0x5b) {
0x000438b4 bne 0x43998 | goto label_23;
| }
0x000438b6 ldrb.w lr, [sl, 1] |
0x000438ba ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000438bc add r3, lr | r3 += lr;
0x000438be ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x000438c2 ands r3, r3, 4 | r3 &= 4;
| if (r3 == r3) {
0x000438c6 beq.w 0x43b70 | goto label_24;
| }
0x000438ca ldr.w sb, [sp, 0x20] | sb = var_20h;
0x000438ce add.w r7, sl, 1 | r7 = sl + 1;
0x000438d2 mov r3, lr | r3 = lr;
0x000438d4 rsb.w r0, sl, 1 | r0 = 1 - sl;
| do {
0x000438d8 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x000438dc adds r1, r0, r7 | r1 = r0 + r7;
0x000438de add.w r2, r3, r2, lsl 1 | r2 = r3 + (r2 << 1);
0x000438e2 ldrb r3, [r7, 1]! | r3 = *((r7 += 1));
0x000438e6 subs r2, 0x30 | r2 -= 0x30;
0x000438e8 add.w ip, sb, r3 |
0x000438ec ldrb.w ip, [ip, 0x40] | ip = *((ip + 0x40));
0x000438f0 tst.w ip, 4 |
0x000438f4 bne 0x438d8 |
| } while ((ip & 4) != 0);
0x000438f6 cmp r1, 1 |
0x000438f8 ite hi |
| if (r1 <= 1) {
0x000438fa movhi r0, 0 | r0 = 0;
| }
| if (r1 > 1) {
0x000438fc movls r0, 1 | r0 = 1;
| }
0x000438fe cmp r3, 0x5d |
0x00043900 it ne |
| if (r3 == 0x5d) {
0x00043902 orrne r0, r0, 1 | r0 |= 1;
| }
0x00043906 cmp r0, 0 |
| if (r0 == 0) {
0x00043908 beq.w 0x43b08 | goto label_25;
| }
| label_14:
0x0004390c cmp.w lr, 0x23 |
| if (lr != 0x23) {
0x00043910 bne 0x43998 | goto label_23;
| }
0x00043912 ldrb r3, [r5] | r3 = *(r5);
0x00043914 mov ip, r4 |
0x00043916 cmp r3, 6 |
| if (r3 != 6) {
0x00043918 bne.w 0x43a4c | goto label_9;
| }
0x0004391c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0004391e mov r0, r5 | r0 = r5;
0x00043920 ldr r7, [sp, 4] | r7 = var_4h;
0x00043922 mov sb, r3 | sb = r3;
0x00043924 str r3, [sp, 8] | var_8h = r3;
| label_4:
0x00043926 add.w r3, r1, r1, lsl 1 | r3 = r1 + (r1 << 1);
0x0004392a cmp r1, sb |
0x0004392c add.w r3, r0, r3, lsl 2 | r3 = r0 + (r3 << 2);
| if (r1 < sb) {
0x00043930 bls 0x4395a | goto label_26;
| }
| do {
0x00043932 ands r7, r7, 0x20 | r7 &= 0x20;
0x00043936 mov.w r1, 1 | r1 = 1;
| if (r7 == r7) {
0x0004393a beq 0x4397e | goto label_27;
| }
0x0004393c ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0004393e add ip, r3 |
0x00043940 add.w r3, r1, r1, lsl 1 | r3 = r1 + (r1 << 1);
0x00043944 add.w r0, ip, ip, lsl 1 | r0 = ip + (ip << 1);
0x00043948 add.w r0, r8, r0, lsl 2 | r0 = r8 + (r0 << 2);
0x0004394c ldr.w sb, [r0, 4] | sb = *((r0 + 4));
0x00043950 add.w r3, r0, r3, lsl 2 | r3 = r0 + (r3 << 2);
0x00043954 ldrb r7, [r0, 1] | r7 = *((r0 + 1));
0x00043956 cmp r1, sb |
0x00043958 bhi 0x43932 |
| } while (r1 > sb);
| label_26:
0x0004395a ldrb.w fp, [r3, 1] | fp = *((r3 + 1));
0x0004395e mov.w lr, 1 | lr = 1;
0x00043962 tst.w fp, 4 |
0x00043966 ldrb.w fp, [r3] | fp = *(r3);
0x0004396a it eq |
| if ((fp & 4) != 0) {
0x0004396c addeq r2, lr | r2 += lr;
| }
0x0004396e cmp.w fp, 5 |
0x00043972 itt hi |
| if (fp <= 5) {
0x00043974 ldrhi r3, [r3, 4] | r3 = *((r3 + 4));
| }
| if (fp <= 5) {
0x00043976 addhi lr, r3, 1 | lr = r3 + 1;
| }
0x0004397a add r1, lr | r1 += lr;
0x0004397c b 0x43926 | goto label_4;
| label_27:
0x0004397e ldrb.w r3, [sl, 2] | r3 = *((sl + 2));
0x00043982 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00043984 bne 0x43a56 | goto label_28;
| }
0x00043986 ldrb.w r3, [sl, 3] | r3 = *((sl + 3));
0x0004398a ldr r1, [sp, 0x28] | r1 = var_28h;
0x0004398c add r1, r3 | r1 += r3;
0x0004398e ldrb.w r1, [r1, 0x40] | r1 = *((r1 + 0x40));
0x00043992 lsls r1, r1, 0x1d | r1 <<= 0x1d;
| if (r1 < r1) {
0x00043994 bmi.w 0x43b14 | goto label_29;
| }
| do {
| label_23:
0x00043998 ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x0004399a movs r5, 0 | r5 = 0;
0x0004399c str.w sl, [r3] | __asm ("str.w sl, [r3]");
0x000439a0 b 0x438a4 | goto label_5;
| label_20:
0x000439a2 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000439a4 mov sb, fp | sb = fp;
0x000439a6 mov fp, sl |
0x000439a8 mov sl, lr | sl = lr;
0x000439aa cmp r2, 0 |
| if (r2 != 0) {
0x000439ac beq 0x43a4c |
0x000439ae ldr r2, [sp, 0x14] | r2 = var_14h;
0x000439b0 ldrd r7, r1, [r2] | __asm ("ldrd r7, r1, [r2]");
0x000439b4 cmp r7, r1 |
| if (r7 >= r1) {
0x000439b6 bhs.w 0x43b48 | goto label_30;
| }
0x000439ba add.w r2, r7, r7, lsl 1 | r2 = r7 + (r7 << 1);
0x000439be ldr r5, [sp, 0x24] | r5 = var_24h;
0x000439c0 movs r0, 7 | r0 = 7;
0x000439c2 lsls r2, r2, 2 | r2 <<= 2;
0x000439c4 add.w r8, r7, 1 | r8 = r7 + 1;
0x000439c8 cmp r8, r1 |
0x000439ca strh r0, [r5, r2] | *((r5 + r2)) = r0;
0x000439cc add r2, r5 | r2 += r5;
0x000439ce str r3, [r2, 8] | *((r2 + 8)) = r3;
0x000439d0 mov.w r3, 2 | r3 = 2;
0x000439d4 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x000439d6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000439d8 str.w r8, [r3] | __asm ("str.w r8, [r3]");
| if (r8 >= r1) {
0x000439dc bhs.w 0x43b60 | goto label_31;
| }
| label_12:
0x000439e0 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000439e2 add.w r2, r8, r8, lsl 1 | r2 = r8 + (r8 << 1);
0x000439e6 movs r1, 5 | r1 = 5;
0x000439e8 lsls r2, r2, 2 | r2 <<= 2;
0x000439ea ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x000439ec strh r1, [r3, r2] | *((r3 + r2)) = r1;
0x000439ee add r3, r2 | r3 += r2;
0x000439f0 strd sl, fp, [r3, 4] | __asm ("strd sl, fp, [r3, 4]");
0x000439f4 add.w r3, r8, 1 | r3 = r8 + 1;
0x000439f8 str r3, [r0] | *(r0) = r3;
| label_13:
0x000439fa ldr r5, [sp, 0x14] | r5 = var_14h;
0x000439fc ldr r1, [sp, 0x10] | r1 = var_10h;
0x000439fe ldr r2, [sp, 0x18] | r2 = var_18h;
0x00043a00 ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00043a02 mov r0, r5 | r0 = r5;
0x00043a04 add r1, sb | r1 += sb;
0x00043a06 bl 0x43c10 | fcn_00043c10 (r0, r1, r2, r3);
0x00043a0a ldrb r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00043a0c cmp r0, 0 |
0x00043a0e mov r2, r5 | r2 = r5;
0x00043a10 mov r5, r0 | r5 = r0;
0x00043a12 clz r3, r3 | r3 &= r3;
0x00043a16 lsr.w r3, r3, 5 | r3 >>= 5;
0x00043a1a it eq |
| if (r0 != 0) {
0x00043a1c moveq r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x00043a1e cbz r3, 0x43a4c | goto label_9;
| }
0x00043a20 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x00043a22 adds r2, r6, r4 | r2 = r6 + r4;
0x00043a24 add.w r8, r8, r8, lsl 1 | r8 += (r8 << 1);
0x00043a28 subs r7, r7, r4 | r7 -= r4;
0x00043a2a mov r0, r5 | r0 = r5;
0x00043a2c add.w r2, r3, r2, lsl 2 | r2 = r3 + (r2 << 2);
0x00043a30 add.w r3, r3, r8, lsl 2 | r3 += (r8 << 2);
0x00043a34 ldrb r1, [r2, 1] | r1 = *((r2 + 1));
0x00043a36 str r7, [r2, 8] | *((r2 + 8)) = r7;
0x00043a38 orr r1, r1, 0x20 | r1 |= 0x20;
0x00043a3c strb r1, [r2, 1] | *((r2 + 1)) = r1;
0x00043a3e ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x00043a40 orr r2, r2, 1 | r2 |= 1;
0x00043a44 strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x00043a46 add sp, 0x34 |
0x00043a48 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
| label_9:
0x00043a4c movs r5, 0 | r5 = 0;
0x00043a4e mov r0, r5 | r0 = r5;
0x00043a50 add sp, 0x34 |
0x00043a52 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_28:
0x00043a56 movs r1, 2 | r1 = 2;
| label_11:
0x00043a58 cmp r3, 0x5d |
0x00043a5a bne 0x43998 |
| } while (r3 != 0x5d);
| label_10:
0x00043a5c adds r1, 1 | r1++;
0x00043a5e add sl, r1 | sl += r1;
0x00043a60 ldrd r1, r3, [sp, 4] | __asm ("ldrd r1, r3, [var_4h]");
0x00043a64 and r0, r1, 0x20 | r0 = r1 & 0x20;
0x00043a68 movs r1, 1 | r1 = 1;
| do {
| label_7:
0x00043a6a cmp r1, r3 |
0x00043a6c uxtb.w lr, r0 | lr = (int8_t) r0;
| if (r1 <= r3) {
0x00043a70 bhi 0x43a94 |
0x00043a72 add.w r7, r1, r1, lsl 1 | r7 = r1 + (r1 << 1);
0x00043a76 add.w r7, r5, r7, lsl 2 | r7 = r5 + (r7 << 2);
0x00043a7a ldrb.w ip, [r7, 1] | ip = *((r7 + 1));
0x00043a7e and ip, ip, 4 |
| if (r2 != 0) {
0x00043a82 cbnz r2, 0x43ab2 | goto label_32;
| }
0x00043a84 cmp.w ip, 0 |
| if (ip != 0) {
0x00043a88 bne 0x43aba | goto label_33;
| }
0x00043a8a cmp.w lr, 0 |
| if (lr != 0) {
0x00043a8e bne 0x43a9a | goto label_34;
| }
0x00043a90 add r4, r1 | r4 += r1;
0x00043a92 b 0x43892 | goto label_6;
| }
0x00043a94 cmp.w lr, 0 |
| if (lr == 0) {
0x00043a98 beq 0x43b76 | goto label_35;
| }
| label_34:
0x00043a9a ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00043a9c movs r1, 1 | r1 = 1;
0x00043a9e add r4, r3 | r4 += r3;
0x00043aa0 lsls r6, r4, 1 | r6 = r4 << 1;
0x00043aa2 adds r5, r6, r4 | r5 = r6 + r4;
0x00043aa4 add.w r5, r8, r5, lsl 2 | r5 = r8 + (r5 << 2);
0x00043aa8 ldrb r0, [r5, 1] | r0 = *((r5 + 1));
0x00043aaa ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00043aac and r0, r0, 0x20 | r0 &= 0x20;
0x00043ab0 b 0x43a6a |
| } while (1);
| label_32:
0x00043ab2 cmp.w ip, 0 |
| if (ip == 0) {
0x00043ab6 bne 0x43aba |
0x00043ab8 subs r2, 1 | r2--;
| }
| label_33:
0x00043aba ldrb.w ip, [r7] | ip = *(r7);
0x00043abe cmp.w ip, 5 |
0x00043ac2 itet hi |
| if (ip <= 5) {
0x00043ac4 ldrhi r7, [r7, 4] | r7 = *((r7 + 4));
| }
| if (ip > 5) {
0x00043ac6 movls r7, 1 | r7 = 1;
| }
| if (ip <= 5) {
0x00043ac8 addhi r7, 1 | r7++;
| }
0x00043aca add r1, r7 | r1 += r7;
0x00043acc b 0x43a6a | goto label_7;
| label_17:
0x00043ace ldrb.w r3, [sl, 2] | r3 = *((sl + 2));
0x00043ad2 add.w sl, sl, 2 | sl += 2;
0x00043ad6 cmp r3, 0x22 |
0x00043ad8 it ne |
| if (r3 != 0x22) {
0x00043ada cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r3 == 0x22) {
0x00043adc beq 0x43afe | goto label_18;
| }
0x00043ade mov r7, sl | r7 = sl;
0x00043ae0 movs r0, 1 | r0 = 1;
| do {
0x00043ae2 ldrb r3, [r7, 1]! | r3 = *((r7 += 1));
0x00043ae6 mov r2, r0 | r2 = r0;
0x00043ae8 adds r0, 1 | r0++;
0x00043aea cmp r3, 0 |
0x00043aec it ne |
| if (r3 != 0) {
0x00043aee cmpne r3, 0x22 | __asm ("cmpne r3, 0x22");
| }
0x00043af0 bne 0x43ae2 |
| } while (r3 != 0);
| if (r3 == 0) {
0x00043af2 cbz r3, 0x43afe | goto label_18;
| }
0x00043af4 add.w fp, r2, 2 |
0x00043af8 cmp r2, 0 |
| if (r2 != 0) {
0x00043afa bne.w 0x43804 | goto label_8;
| }
| label_18:
0x00043afe ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00043b00 movs r5, 0 | r5 = 0;
0x00043b02 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00043b04 str r2, [r3] | *(r3) = r2;
0x00043b06 b 0x438a4 | goto label_5;
| label_25:
0x00043b08 ldrb r3, [r5] | r3 = *(r5);
0x00043b0a cmp r3, 6 |
| if (r3 != 6) {
0x00043b0c bne 0x43a4c | goto label_9;
| }
0x00043b0e ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00043b10 str r3, [sp, 8] | var_8h = r3;
0x00043b12 b 0x43a5c | goto label_10;
| label_29:
0x00043b14 ldr.w sb, [sp, 0x2c] | sb = var_2ch;
0x00043b18 add.w ip, sl, 3 |
0x00043b1c rsb.w r0, sl, 1 | r0 = 1 - sl;
| do {
0x00043b20 add.w r7, r7, r7, lsl 2 | r7 += (r7 << 2);
0x00043b24 add.w r1, r0, ip | r1 = r0 + ip;
0x00043b28 add.w r7, r3, r7, lsl 1 | r7 = r3 + (r7 << 1);
0x00043b2c ldrb r3, [ip, 1]! | r3 = *((ip += 1));
0x00043b30 subs r7, 0x30 | r7 -= 0x30;
0x00043b32 add.w lr, sb, r3 | lr = sb + r3;
0x00043b36 ldrb.w lr, [lr, 0x40] |
0x00043b3a tst.w lr, 4 |
0x00043b3e bne 0x43b20 |
| } while ((lr & 4) != 0);
0x00043b40 cmp r2, r7 |
| if (r2 <= r7) {
0x00043b42 blo 0x43a4c | goto label_9;
| }
0x00043b44 subs r2, r2, r7 | r2 -= r7;
0x00043b46 b 0x43a58 | goto label_11;
| label_30:
0x00043b48 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00043b4a movs r1, 7 | r1 = 7;
0x00043b4c movs r2, 2 | r2 = 2;
0x00043b4e mov r0, r5 | r0 = r5;
0x00043b50 bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x00043b54 ldrd r8, r1, [r5] | __asm ("ldrd r8, r1, [r5]");
0x00043b58 mov r7, r0 | r7 = r0;
0x00043b5a cmp r8, r1 |
| if (r8 <= r1) {
0x00043b5c blo.w 0x439e0 | goto label_12;
| }
| label_31:
0x00043b60 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00043b62 mov r3, fp | r3 = fp;
0x00043b64 mov r2, sl | r2 = sl;
0x00043b66 movs r1, 5 | r1 = 5;
0x00043b68 bl 0x434c4 | r0 = fcn_000434c4 (r0, r1, r2, r3);
0x00043b6c mov r8, r0 | r8 = r0;
0x00043b6e b 0x439fa | goto label_13;
| label_24:
0x00043b70 mov r2, r3 | r2 = r3;
0x00043b72 movs r1, 1 | r1 = 1;
0x00043b74 b 0x4390c | goto label_14;
| label_35:
0x00043b76 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00043b78 clz r2, r2 | r2 &= r2;
0x00043b7c lsrs r2, r2, 5 | r2 >>= 5;
0x00043b7e mov r3, lr | r3 = lr;
0x00043b80 cmp r1, 0 |
0x00043b82 it eq |
| if (r1 != 0) {
0x00043b84 moveq r2, 0 | r2 = 0;
| }
0x00043b86 cmp r2, 0 |
| if (r2 == 0) {
0x00043b88 beq.w 0x43a4c | goto label_9;
| }
0x00043b8c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00043b8e ldrd r7, r2, [r2] | __asm ("ldrd r7, r2, [r2]");
0x00043b92 cmp r7, r2 |
| if (r7 >= r2) {
0x00043b94 bhs 0x43bf0 | goto label_36;
| }
0x00043b96 add.w r2, r7, r7, lsl 1 | r2 = r7 + (r7 << 1);
0x00043b9a ldr r0, [sp, 0x24] | r0 = var_24h;
0x00043b9c movs r1, 6 | r1 = 6;
0x00043b9e lsls r2, r2, 2 | r2 <<= 2;
0x00043ba0 movs r3, 1 | r3 = 1;
0x00043ba2 strh r1, [r0, r2] | *((r0 + r2)) = r1;
0x00043ba4 add r2, r0 | r2 += r0;
0x00043ba6 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00043ba8 adds r3, r7, r3 | r3 = r7 + r3;
0x00043baa str.w lr, [r2, 8] | __asm ("str.w lr, [r2, 8]");
0x00043bae ldr r2, [sp, 0x14] | r2 = var_14h;
0x00043bb0 str r3, [r2] | *(r2) = r3;
| label_15:
0x00043bb2 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00043bb4 mov r1, sl | r1 = sl;
0x00043bb6 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00043bb8 ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00043bba mov r0, r5 | r0 = r5;
0x00043bbc bl 0x43c10 | fcn_00043c10 (r0, r1, r2, r3);
0x00043bc0 ldrb r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00043bc2 cmp r0, 0 |
0x00043bc4 mov r2, r5 | r2 = r5;
0x00043bc6 mov r5, r0 | r5 = r0;
0x00043bc8 clz r3, r3 | r3 &= r3;
0x00043bcc lsr.w r3, r3, 5 | r3 >>= 5;
0x00043bd0 it eq |
| if (r0 != 0) {
0x00043bd2 moveq r3, 0 | r3 = 0;
| }
0x00043bd4 cmp r3, 0 |
| if (r3 == 0) {
0x00043bd6 beq.w 0x43a4c | goto label_9;
| }
0x00043bda ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x00043bdc add r6, r4 | r6 += r4;
0x00043bde subs r7, r7, r4 | r7 -= r4;
0x00043be0 add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
0x00043be4 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x00043be6 str r7, [r3, 8] | *((r3 + 8)) = r7;
0x00043be8 orr r2, r2, 0x20 | r2 |= 0x20;
0x00043bec strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x00043bee b 0x438a4 | goto label_5;
| label_36:
0x00043bf0 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00043bf2 movs r2, 1 | r2 = 1;
0x00043bf4 movs r1, 6 | r1 = 6;
0x00043bf6 bl 0x434c4 | r0 = fcn_000434c4 (r0, r1, r2, r3);
0x00043bfa mov r7, r0 | r7 = r0;
0x00043bfc b 0x43bb2 | goto label_15;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x43c10 */
| #include <stdint.h>
|
; (fcn) fcn.00043c10 () | void fcn_00043c10 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00043c10 push {r4, r5, r6, r7, lr} |
0x00043c12 mov r7, r3 | r7 = r3;
0x00043c14 movs r3, 1 | r3 = 1;
0x00043c16 mov r6, r2 | r6 = r2;
0x00043c18 sub sp, 0xc |
0x00043c1a mov r4, r0 | r4 = r0;
0x00043c1c str r3, [r2] | *(r2) = r3;
0x00043c1e ldrb r2, [r1] | r2 = *(r1);
| if (r2 == 0) {
0x00043c20 cbz r2, 0x43c7a | goto label_3;
| }
0x00043c22 cmp r2, 0x2e |
0x00043c24 mov r5, r1 | r5 = r1;
| if (r2 == 0x2e) {
0x00043c26 beq 0x43cae | goto label_4;
| }
0x00043c28 cmp r2, 0x5b |
0x00043c2a beq 0x43c32 |
| while (r3 != 0x30) {
| label_0:
0x00043c2c movs r0, 0 | r0 = 0;
0x00043c2e add sp, 0xc |
0x00043c30 pop {r4, r5, r6, r7, pc} |
0x00043c32 ldrb r3, [r1, 1] | r3 = *((r1 + 1));
0x00043c34 cmp r3, 0x30 |
0x00043c36 bne 0x43c2c |
| }
0x00043c38 ldrb r3, [r1, 2] | r3 = *((r1 + 2));
0x00043c3a subs r3, 0x5d | r3 -= 0x5d;
| if (r3 != 0x5d) {
0x00043c3c bne 0x43c2c | goto label_0;
| }
0x00043c3e ldrd r2, r1, [r0] | __asm ("ldrd r2, r1, [r0]");
0x00043c42 cmp r2, r1 |
| if (r2 >= r1) {
0x00043c44 bhs 0x43cd4 | goto label_5;
| }
0x00043c46 add.w r0, r2, r2, lsl 1 | r0 = r2 + (r2 << 1);
0x00043c4a ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00043c4c mov.w ip, 6 |
0x00043c50 lsls r0, r0, 2 | r0 <<= 2;
0x00043c52 adds r2, 1 | r2++;
0x00043c54 strh.w ip, [r1, r0] | *((r1 + r0)) = ip;
0x00043c58 add r1, r0 | r1 += r0;
0x00043c5a strd r3, r3, [r1, 4] | __asm ("strd r3, r3, [r1, 4]");
0x00043c5e str r2, [r4] | *(r4) = r2;
| label_1:
0x00043c60 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00043c62 cmp r3, 0 |
| if (r3 != 0) {
0x00043c64 bne 0x43c2c | goto label_0;
| }
0x00043c66 ldr r1, [r4] | r1 = *(r4);
0x00043c68 mov r3, r6 | r3 = r6;
0x00043c6a mov r2, r5 | r2 = r5;
0x00043c6c mov r0, r4 | r0 = r4;
0x00043c6e str r7, [sp] | *(sp) = r7;
0x00043c70 subs r1, 1 | r1--;
0x00043c72 bl 0x43748 | fcn_00043748 (r0, r1, r2, r3, r4);
0x00043c76 add sp, 0xc |
0x00043c78 pop {r4, r5, r6, r7, pc} |
| label_3:
0x00043c7a ldrd r3, r1, [r0] | __asm ("ldrd r3, r1, [r0]");
0x00043c7e cmp r3, r1 |
| if (r3 >= r1) {
0x00043c80 bhs 0x43cde | goto label_6;
| }
0x00043c82 add.w r0, r3, r3, lsl 1 | r0 = r3 + (r3 << 1);
0x00043c86 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00043c88 adds r3, 1 | r3++;
0x00043c8a lsls r0, r0, 2 | r0 <<= 2;
0x00043c8c strh r2, [r1, r0] | *((r1 + r0)) = r2;
0x00043c8e add r1, r0 | r1 += r0;
0x00043c90 strd r2, r2, [r1, 4] | __asm ("strd r2, r2, [r1, 4]");
0x00043c94 str r3, [r4] | *(r4) = r3;
| label_2:
0x00043c96 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00043c98 cmp r3, 0 |
| if (r3 != 0) {
0x00043c9a bne 0x43c2c | goto label_0;
| }
0x00043c9c ldr r3, [r4] | r3 = *(r4);
0x00043c9e ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00043ca0 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00043ca4 lsls r3, r3, 2 | r3 <<= 2;
0x00043ca6 subs r3, 0xc | r3 -= 0xc;
0x00043ca8 add r0, r3 | r0 += r3;
0x00043caa add sp, 0xc |
0x00043cac pop {r4, r5, r6, r7, pc} |
| label_4:
0x00043cae ldrd r3, r2, [r0] | __asm ("ldrd r3, r2, [r0]");
0x00043cb2 cmp r3, r2 |
| if (r3 < r2) {
0x00043cb4 bhs 0x43ce8 |
0x00043cb6 add.w r1, r3, r3, lsl 1 | r1 = r3 + (r3 << 1);
0x00043cba ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x00043cbc mov.w ip, 7 |
0x00043cc0 lsls r1, r1, 2 | r1 <<= 2;
0x00043cc2 adds r3, 1 | r3++;
0x00043cc4 movs r0, 0 | r0 = 0;
0x00043cc6 strh.w ip, [r2, r1] | *((r2 + r1)) = ip;
0x00043cca add r2, r1 | r2 += r1;
0x00043ccc strd r0, r0, [r2, 4] | __asm ("strd r0, r0, [r2, 4]");
0x00043cd0 str r3, [r4] | *(r4) = r3;
0x00043cd2 b 0x43c60 | goto label_1;
| label_5:
0x00043cd4 mov r2, r3 | r2 = r3;
0x00043cd6 movs r1, 6 | r1 = 6;
0x00043cd8 bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x00043cdc b 0x43c60 | goto label_1;
| label_6:
0x00043cde mov r3, r2 | r3 = r2;
0x00043ce0 mov r1, r2 | r1 = r2;
0x00043ce2 bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x00043ce6 b 0x43c96 | goto label_2;
| }
0x00043ce8 movs r3, 0 | r3 = 0;
0x00043cea movs r1, 7 | r1 = 7;
0x00043cec mov r2, r3 | r2 = r3;
0x00043cee bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x00043cf2 b 0x43c60 | 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/libsqlite3.so.0.8.6 @ 0x43cf4 */
| #include <stdint.h>
|
; (fcn) fcn.00043cf4 () | void fcn_00043cf4 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00043cf4 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00043cf8 mov r6, r0 | r6 = r0;
0x00043cfa ldr r5, [r0, 0xc] | r5 = *((r0 + 0xc));
0x00043cfc mov r7, r1 | r7 = r1;
0x00043cfe ldr.w r3, [pc, 0x528] | r3 = *(0x00044228);
0x00043d02 ldrb r4, [r5, r1] | r4 = *((r5 + r1));
0x00043d04 adds r0, r5, r1 | r0 = r5 + r1;
0x00043d06 add r3, pc | r3 += pc;
0x00043d08 adds r2, r3, r4 | r2 = r3 + r4;
0x00043d0a ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
| if (r2 == 0) {
0x00043d0e cbz r2, 0x43d2a | goto label_16;
| }
0x00043d10 adds r2, r1, 1 | r2 = r1 + 1;
0x00043d12 add.w ip, r5, r2 |
| do {
0x00043d16 mov r0, ip | r0 = ip;
0x00043d18 ldrb r4, [ip], 1 | r4 = *(ip);
| ip++;
0x00043d1c mov r7, r2 | r7 = r2;
0x00043d1e adds r2, 1 | r2++;
0x00043d20 adds r1, r3, r4 | r1 = r3 + r4;
0x00043d22 ldrb.w r1, [r1, 0x4e4] | r1 = *((r1 + 0x4e4));
0x00043d26 cmp r1, 0 |
0x00043d28 bne 0x43d16 |
| } while (r1 != 0);
| label_16:
0x00043d2a cmp r4, 0x7b |
| if (r4 == 0x7b) {
0x00043d2c beq 0x43df2 | goto label_17;
| }
0x00043d2e cmp r4, 0x5b |
| if (r4 == 0x5b) {
0x00043d30 beq.w 0x43fea | goto label_18;
| }
0x00043d34 cmp r4, 0x22 |
| if (r4 != 0x22) {
0x00043d36 beq 0x43d7c |
0x00043d38 cmp r4, 0x6e |
| if (r4 == 0x6e) {
0x00043d3a beq.w 0x4408c | goto label_19;
| }
0x00043d3e cmp r4, 0x74 |
| if (r4 == 0x74) {
0x00043d40 beq.w 0x43f0c | goto label_20;
| }
0x00043d44 cmp r4, 0x66 |
| if (r4 != 0x66) {
0x00043d46 bne.w 0x43f5a | goto label_21;
| }
0x00043d4a ldr.w r1, [pc, 0x4e0] |
0x00043d4e movs r2, 5 | r2 = 5;
0x00043d50 add r1, pc | r1 = 0x87f82;
0x00043d52 blx 0x85d0 | r0 = fcn_000085d0 ();
| if (r0 == 0) {
0x00043d56 cbnz r0, 0x43d70 |
0x00043d58 ldr.w r3, [pc, 0x4d4] |
0x00043d5c adds r7, 5 | r7 += 5;
0x00043d5e ldrb r2, [r5, r7] | r2 = *((r5 + r7));
0x00043d60 add r3, pc | r3 = 0x87f94;
0x00043d62 add r3, r2 | r3 += r2;
0x00043d64 ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00043d68 ands r3, r3, 6 | r3 &= 6;
| if (r3 == r3) {
0x00043d6c beq.w 0x44192 | goto label_22;
| }
| }
| label_2:
0x00043d70 subs r4, 0 |
0x00043d72 it ne |
| if (r4 == 0) {
0x00043d74 movne r4, 1 | r4 = 1;
| }
0x00043d76 rsbs r0, r4, 0 | r0 = r4 - ;
0x00043d78 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x00043d7c adds r2, r7, 1 | r2 = r7 + 1;
0x00043d7e ldrb r3, [r5, r2] | r3 = *((r5 + r2));
0x00043d80 tst.w r3, 0xe0 |
| if ((r3 & 0xe0) == 0) {
0x00043d84 beq 0x43de2 | goto label_1;
| }
0x00043d86 ldr.w ip, [pc, 0x4ac] | ip = *(0x00044234);
0x00043d8a movw r1, 0x1011 |
0x00043d8e movt r1, 5 | r1 = 0x51011;
0x00043d92 mov.w r8, 0 | r8 = 0;
0x00043d96 mov.w lr, 1 | lr = 1;
0x00043d9a add.w sb, r5, 5 | sb = r5 + 5;
0x00043d9e add ip, pc |
0x00043da0 b 0x43db2 |
| while (r3 != 0x5c) {
0x00043da2 cmp r3, 0x22 |
| if (r3 == 0x22) {
0x00043da4 beq.w 0x44136 | goto label_23;
| }
0x00043da8 mov r2, r4 | r2 = r4;
| label_0:
0x00043daa ldrb r3, [r5, r2] | r3 = *((r5 + r2));
0x00043dac tst.w r3, 0xe0 |
| if ((r3 & 0xe0) == 0) {
0x00043db0 beq 0x43de2 | goto label_1;
| }
0x00043db2 cmp r3, 0x5c |
0x00043db4 add.w r4, r2, 1 | r4 = r2 + 1;
0x00043db8 bne 0x43da2 |
| }
0x00043dba ldrb r3, [r5, r4] | r3 = *((r5 + r4));
0x00043dbc add r4, r5 | r4 += r5;
0x00043dbe cmp r3, 0x5c |
0x00043dc0 it ne |
| if (r3 != 0x5c) {
0x00043dc2 cmpne r3, 0x22 | __asm ("cmpne r3, 0x22");
| }
| if (r3 == 0x5c) {
0x00043dc4 beq 0x43dea | goto label_24;
| }
0x00043dc6 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00043dc8 beq 0x43dea | goto label_24;
| }
0x00043dca subs r3, 0x62 | r3 -= 0x62;
0x00043dcc uxtb r3, r3 | r3 = (int8_t) r3;
0x00043dce cmp r3, 0x13 |
| if (r3 > 0x13) {
0x00043dd0 bhi 0x43de2 | goto label_1;
| }
0x00043dd2 lsl.w r8, lr, r3 | r8 = lr << r3;
0x00043dd6 tst.w r8, r1 |
| if ((r8 & r1) != 0) {
0x00043dda bne 0x43dea | goto label_24;
| }
0x00043ddc cmp r3, 0x13 |
| if (r3 == 0x13) {
0x00043dde beq.w 0x440d4 | goto label_25;
| }
| do {
| label_1:
0x00043de2 mov.w r0, -1 | r0 = -1;
| label_3:
0x00043de6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_24:
0x00043dea adds r2, 2 | r2 += 2;
0x00043dec mov.w r8, 2 | r8 = 2;
0x00043df0 b 0x43daa | goto label_0;
| label_17:
0x00043df2 ldrd r3, r2, [r6] | __asm ("ldrd r3, r2, [r6]");
0x00043df6 cmp r3, r2 |
| if (r3 >= r2) {
0x00043df8 bhs.w 0x440f6 | goto label_26;
| }
0x00043dfc add.w r1, r3, r3, lsl 1 | r1 = r3 + (r3 << 1);
0x00043e00 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00043e02 movs r4, 7 | r4 = 7;
0x00043e04 lsls r1, r1, 2 | r1 <<= 2;
0x00043e06 mov r8, r3 | r8 = r3;
0x00043e08 movs r0, 0 | r0 = 0;
0x00043e0a strh r4, [r2, r1] | *((r2 + r1)) = r4;
0x00043e0c adds r3, 1 | r3++;
0x00043e0e add r2, r1 | r2 += r1;
0x00043e10 strd r0, r0, [r2, 4] | __asm ("strd r0, r0, [r2, 4]");
0x00043e14 str r3, [r6] | *(r6) = r3;
| label_10:
0x00043e16 cmp.w r8, 0 |
0x00043e1a blt 0x43de2 |
| } while (r8 < 0);
0x00043e1c ldr.w sl, [pc, 0x418] |
0x00043e20 adds r4, r7, 1 | r4 = r7 + 1;
0x00043e22 ldr.w sb, [pc, 0x418] | sb = *(0x0004423c);
0x00043e26 ldr.w r7, [pc, 0x418] |
0x00043e2a ldrh r2, [r6, 0x16] | r2 = *((r6 + 0x16));
0x00043e2c add sl, pc | sl = 0x88068;
0x00043e2e add sb, pc | sb += pc;
0x00043e30 add r7, pc | r7 = 0x88076;
| label_4:
0x00043e32 ldrb r3, [r5, r4] | r3 = *((r5 + r4));
0x00043e34 add r3, sl | r3 += sl;
0x00043e36 ldrb.w r3, [r3, 0x4e4] | r3 = *((r3 + 0x4e4));
0x00043e3a cmp r3, 0 |
| if (r3 != 0) {
0x00043e3c bne.w 0x43f56 | goto label_27;
| }
0x00043e40 adds r2, 1 | r2++;
0x00043e42 uxth r2, r2 | r2 = (int16_t) r2;
0x00043e44 cmp.w r2, 0x7d0 |
0x00043e48 strh r2, [r6, 0x16] | *((r6 + 0x16)) = r2;
| if (r2 > 0x7d0) {
0x00043e4a bhi 0x43de2 | goto label_1;
| }
0x00043e4c mov r1, r4 | r1 = r4;
0x00043e4e mov r0, r6 | r0 = r6;
0x00043e50 bl 0x43cf4 | r0 = fcn_00043cf4 (r0, r1);
0x00043e54 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x00043e56 blt.w 0x441be | goto label_28;
| }
0x00043e5a ldrb r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x00043e5c cmp r2, 0 |
| if (r2 != 0) {
0x00043e5e bne 0x43de2 | goto label_1;
| }
0x00043e60 ldr r2, [r6] | r2 = *(r6);
0x00043e62 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x00043e64 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00043e68 lsls r2, r2, 2 | r2 <<= 2;
0x00043e6a subs r2, 0xc | r2 -= 0xc;
0x00043e6c ldrb r0, [r1, r2] | r0 = *((r1 + r2));
0x00043e6e add r1, r2 | r1 += r2;
0x00043e70 cmp r0, 5 |
| if (r0 != 5) {
0x00043e72 bne 0x43de2 | goto label_1;
| }
0x00043e74 ldrb r2, [r1, 1] | r2 = *((r1 + 1));
0x00043e76 orr r2, r2, 0x40 | r2 |= 0x40;
0x00043e7a strb r2, [r1, 1] | *((r1 + 1)) = r2;
0x00043e7c mov r1, r3 | r1 = r3;
0x00043e7e ldrb r2, [r5, r3] | r2 = *((r5 + r3));
0x00043e80 add r3, r5 | r3 += r5;
0x00043e82 add.w r0, sl, r2 | r0 = sl + r2;
0x00043e86 ldrb.w r0, [r0, 0x4e4] | r0 = *((r0 + 0x4e4));
| if (r0 == 0) {
0x00043e8a cbz r0, 0x43ea8 | goto label_29;
| }
0x00043e8c ldr.w ip, [pc, 0x3b4] |
0x00043e90 rsb.w r0, r5, 1 | r0 = 1 - r5;
0x00043e94 add ip, pc | ip = 0x880dc;
| do {
0x00043e96 adds r1, r0, r3 | r1 = r0 + r3;
0x00043e98 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x00043e9c add.w r4, ip, r2 | r4 = ip + r2;
0x00043ea0 ldrb.w r4, [r4, 0x4e4] | r4 = *((r4 + 0x4e4));
0x00043ea4 cmp r4, 0 |
0x00043ea6 bne 0x43e96 |
| } while (r4 != 0);
| label_29:
0x00043ea8 cmp r2, 0x3a |
| if (r2 != 0x3a) {
0x00043eaa bne 0x43de2 | goto label_1;
| }
0x00043eac adds r1, 1 | r1++;
0x00043eae mov r0, r6 | r0 = r6;
0x00043eb0 bl 0x43cf4 | fcn_00043cf4 (r0, r1);
0x00043eb4 ldrh r2, [r6, 0x16] | r2 = *((r6 + 0x16));
0x00043eb6 subs r3, r0, 0 | r3 = r0 - 0;
0x00043eb8 add.w r2, r2, -1 | r2 += -1;
0x00043ebc uxth r2, r2 | r2 = (int16_t) r2;
0x00043ebe strh r2, [r6, 0x16] | *((r6 + 0x16)) = r2;
| if (r3 < r0) {
0x00043ec0 blt 0x43de2 | goto label_1;
| }
0x00043ec2 ldrb r1, [r5, r3] | r1 = *((r5 + r3));
0x00043ec4 mov r4, r3 | r4 = r3;
0x00043ec6 add r3, r5 | r3 += r5;
0x00043ec8 adds r0, r7, r1 | r0 = r7 + r1;
0x00043eca ldrb.w r0, [r0, 0x4e4] | r0 = *((r0 + 0x4e4));
| if (r0 == 0) {
0x00043ece cbz r0, 0x43ee8 | goto label_30;
| }
0x00043ed0 rsb.w r0, r5, 1 | r0 = 1 - r5;
| do {
0x00043ed4 adds r4, r0, r3 | r4 = r0 + r3;
0x00043ed6 ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x00043eda add.w ip, sb, r1 |
0x00043ede ldrb.w ip, [ip, 0x4e4] | ip = *((ip + 0x4e4));
0x00043ee2 cmp.w ip, 0 |
0x00043ee6 bne 0x43ed4 |
| } while (ip != 0);
| label_30:
0x00043ee8 cmp r1, 0x2c |
| if (r1 == 0x2c) {
0x00043eea beq 0x43f56 | goto label_27;
| }
0x00043eec cmp r1, 0x7d |
| if (r1 != 0x7d) {
0x00043eee bne.w 0x43de2 | goto label_1;
| }
| label_7:
0x00043ef2 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00043ef4 add.w r1, r8, r8, lsl 1 | r1 = r8 + (r8 << 1);
0x00043ef8 ldr r3, [r6] | r3 = *(r6);
0x00043efa adds r0, r4, 1 | r0 = r4 + 1;
0x00043efc add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x00043f00 subs r3, 1 | r3--;
0x00043f02 sub.w r3, r3, r8 | r3 -= r8;
0x00043f06 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00043f08 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_20:
0x00043f0c ldr r1, [pc, 0x338] |
0x00043f0e movs r2, 4 | r2 = 4;
0x00043f10 add r1, pc | r1 = 0x8815c;
0x00043f12 blx 0x85d0 | r0 = fcn_000085d0 ();
0x00043f16 cmp r0, 0 |
| if (r0 != 0) {
0x00043f18 bne.w 0x43d70 | goto label_2;
| }
0x00043f1c ldr r3, [pc, 0x32c] |
0x00043f1e adds r7, 4 | r7 += 4;
0x00043f20 ldrb r2, [r5, r7] | r2 = *((r5 + r7));
0x00043f22 add r3, pc | r3 = 0x88172;
0x00043f24 add r3, r2 | r3 += r2;
0x00043f26 ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00043f2a ands r3, r3, 6 | r3 &= 6;
| if (r3 != r3) {
0x00043f2e bne.w 0x43d70 | goto label_2;
| }
0x00043f32 ldrd r2, r1, [r6] | __asm ("ldrd r2, r1, [r6]");
0x00043f36 cmp r2, r1 |
| if (r2 >= r1) {
0x00043f38 bhs.w 0x44200 | goto label_31;
| }
0x00043f3c add.w r0, r2, r2, lsl 1 | r0 = r2 + (r2 << 1);
0x00043f40 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x00043f42 adds r2, 1 | r2++;
0x00043f44 lsls r0, r0, 2 | r0 <<= 2;
0x00043f46 movs r4, 1 | r4 = 1;
| label_13:
0x00043f48 strh r4, [r1, r0] | *((r1 + r0)) = r4;
0x00043f4a add r1, r0 | r1 += r0;
0x00043f4c strd r3, r3, [r1, 4] | __asm ("strd r3, r3, [r1, 4]");
0x00043f50 mov r0, r7 | r0 = r7;
0x00043f52 str r2, [r6] | *(r6) = r2;
0x00043f54 b 0x43de6 | goto label_3;
| label_27:
0x00043f56 adds r4, 1 | r4++;
0x00043f58 b 0x43e32 | goto label_4;
| label_21:
0x00043f5a sub.w r3, r4, 0x30 | r3 = r4 - 0x30;
0x00043f5e cmp r4, 0x2d |
0x00043f60 it ne |
| if (r4 != 0x2d) {
0x00043f62 cmpne r3, 9 | __asm ("cmpne r3, 9");
| }
| if (r4 > 0x2d) {
0x00043f64 bhi.w 0x4420e | goto label_32;
| }
0x00043f68 cmp r4, 0x30 |
| if (r4 <= 0x30) {
0x00043f6a bhi 0x43f7c |
0x00043f6c cmp r4, 0x2d |
0x00043f6e ite eq |
| if (r4 != 0x2d) {
0x00043f70 addeq r3, r7, 1 | r3 = r7 + 1;
| }
| if (r4 == 0x2d) {
0x00043f72 movne r3, r7 | r3 = r7;
| }
0x00043f74 ldrb r2, [r5, r3] | r2 = *((r5 + r3));
0x00043f76 cmp r2, 0x30 |
| if (r2 == 0x30) {
0x00043f78 beq.w 0x44184 | goto label_33;
| }
| }
| label_12:
0x00043f7c movs r3, 0 | r3 = 0;
0x00043f7e adds r4, r7, 1 | r4 = r7 + 1;
0x00043f80 mov ip, r3 |
0x00043f82 b 0x43fbe | goto label_34;
| label_5:
0x00043f84 and r2, r2, 0xdf | r2 &= 0xdf;
0x00043f88 cmp r2, 0x45 |
| if (r2 != 0x45) {
0x00043f8a bne.w 0x44106 | goto label_35;
| }
0x00043f8e cmp r1, 0x2f |
0x00043f90 it ls |
| if (r1 > 0x2f) {
0x00043f92 orrls r3, r3, 1 | r3 |= 1;
| }
0x00043f96 cmp r3, 0 |
| if (r3 != 0) {
0x00043f98 bne.w 0x43de2 | goto label_1;
| }
0x00043f9c adds r2, r4, 1 | r2 = r4 + 1;
0x00043f9e ldrb r3, [r5, r2] | r3 = *((r5 + r2));
0x00043fa0 sub.w r1, r3, 0x2b | r1 = r3 - 0x2b;
0x00043fa4 tst.w r1, 0xfd |
0x00043fa8 itt eq |
| if ((r1 & 0xfd) != 0) {
0x00043faa ldrbeq r3, [lr, 2] | r3 = *((lr + 2));
| }
| if ((r1 & 0xfd) == 0) {
0x00043fae mov r4, r2 | r4 = r2;
| }
0x00043fb0 subs r3, 0x30 | r3 -= 0x30;
0x00043fb2 cmp r3, 9 |
| if (r3 > 9) {
0x00043fb4 bhi.w 0x43de2 | goto label_1;
| }
0x00043fb8 movs r3, 1 | r3 = 1;
0x00043fba mov ip, r3 |
| do {
| label_6:
0x00043fbc adds r4, 1 | r4++;
| label_34:
0x00043fbe ldrb r2, [r5, r4] | r2 = *((r5 + r4));
0x00043fc0 sub.w r1, r2, 0x30 | r1 = r2 - 0x30;
0x00043fc4 cmp r1, 9 |
0x00043fc6 bls 0x43fbc |
| } while (r1 < 9);
0x00043fc8 cmp r2, 0x2e |
0x00043fca add.w lr, r5, r4 | lr = r5 + r4;
0x00043fce ldrb r1, [lr, -0x1] | r1 = *((lr - 0x1));
| if (r2 != 0x2e) {
0x00043fd2 bne 0x43f84 | goto label_5;
| }
0x00043fd4 cmp r1, 0x2d |
0x00043fd6 ite ne |
| if (r1 == 0x2d) {
0x00043fd8 movne r2, ip | r2 = ip;
| }
| if (r1 != 0x2d) {
0x00043fda orreq r2, ip, 1 | r2 = ip | 1;
| }
0x00043fde cmp r2, 0 |
| if (r2 != 0) {
0x00043fe0 bne.w 0x43de2 | goto label_1;
| }
0x00043fe4 mov.w ip, 1 |
0x00043fe8 b 0x43fbc | goto label_6;
| label_18:
0x00043fea ldrd r3, r2, [r6] | __asm ("ldrd r3, r2, [r6]");
0x00043fee cmp r3, r2 |
| if (r3 >= r2) {
0x00043ff0 bhs.w 0x44174 | goto label_36;
| }
0x00043ff4 add.w r1, r3, r3, lsl 1 | r1 = r3 + (r3 << 1);
0x00043ff8 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00043ffa movs r4, 6 | r4 = 6;
0x00043ffc lsls r1, r1, 2 | r1 <<= 2;
0x00043ffe mov r8, r3 | r8 = r3;
0x00044000 movs r0, 0 | r0 = 0;
0x00044002 strh r4, [r2, r1] | *((r2 + r1)) = r4;
0x00044004 adds r3, 1 | r3++;
0x00044006 add r2, r1 | r2 += r1;
0x00044008 strd r0, r0, [r2, 4] | __asm ("strd r0, r0, [r2, 4]");
0x0004400c str r3, [r6] | *(r6) = r3;
| label_11:
0x0004400e cmp.w r8, 0 |
| if (r8 < 0) {
0x00044012 blt.w 0x43de2 | goto label_1;
| }
0x00044016 ldr.w sl, [pc, 0x238] | sl = *(0x00044250);
0x0004401a adds r4, r7, 1 | r4 = r7 + 1;
0x0004401c ldr.w sb, [pc, 0x234] |
0x00044020 rsb.w r7, r5, 1 | r7 = 1 - r5;
0x00044024 ldrh r2, [r6, 0x16] | r2 = *((r6 + 0x16));
0x00044026 add sl, pc | sl += pc;
0x00044028 add sb, pc | sb = 0x88280;
| label_8:
0x0004402a ldrb r3, [r5, r4] | r3 = *((r5 + r4));
0x0004402c add r3, sl | r3 += sl;
0x0004402e ldrb.w r3, [r3, 0x4e4] | r3 = *((r3 + 0x4e4));
| if (r3 != 0) {
0x00044032 cbnz r3, 0x44088 | goto label_37;
| }
0x00044034 adds r2, 1 | r2++;
0x00044036 uxth r2, r2 | r2 = (int16_t) r2;
0x00044038 cmp.w r2, 0x7d0 |
0x0004403c strh r2, [r6, 0x16] | *((r6 + 0x16)) = r2;
| if (r2 > 0x7d0) {
0x0004403e bhi.w 0x43de2 | goto label_1;
| }
0x00044042 mov r1, r4 | r1 = r4;
0x00044044 mov r0, r6 | r0 = r6;
0x00044046 bl 0x43cf4 | fcn_00043cf4 (r0, r1);
0x0004404a ldrh r2, [r6, 0x16] | r2 = *((r6 + 0x16));
0x0004404c subs r3, r0, 0 | r3 = r0 - 0;
0x0004404e add.w r2, r2, -1 | r2 += -1;
0x00044052 uxth r2, r2 | r2 = (int16_t) r2;
0x00044054 strh r2, [r6, 0x16] | *((r6 + 0x16)) = r2;
| if (r3 < r0) {
0x00044056 blt.w 0x441a8 | goto label_38;
| }
0x0004405a ldrb r1, [r5, r3] | r1 = *((r5 + r3));
0x0004405c mov r4, r3 | r4 = r3;
0x0004405e add r3, r5 | r3 += r5;
0x00044060 add.w r0, sl, r1 | r0 = sl + r1;
0x00044064 ldrb.w r0, [r0, 0x4e4] | r0 = *((r0 + 0x4e4));
| if (r0 == 0) {
0x00044068 cbz r0, 0x4407c | goto label_39;
| }
| do {
0x0004406a adds r4, r7, r3 | r4 = r7 + r3;
0x0004406c ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x00044070 add.w r0, sb, r1 | r0 = sb + r1;
0x00044074 ldrb.w r0, [r0, 0x4e4] | r0 = *((r0 + 0x4e4));
0x00044078 cmp r0, 0 |
0x0004407a bne 0x4406a |
| } while (r0 != 0);
| label_39:
0x0004407c cmp r1, 0x2c |
| if (r1 == 0x2c) {
0x0004407e beq 0x44088 | goto label_37;
| }
0x00044080 cmp r1, 0x5d |
| if (r1 == 0x5d) {
0x00044082 beq.w 0x43ef2 | goto label_7;
| }
0x00044086 b 0x43de2 | goto label_1;
| label_37:
0x00044088 adds r4, 1 | r4++;
0x0004408a b 0x4402a | goto label_8;
| label_19:
0x0004408c ldr r1, [pc, 0x1c8] |
0x0004408e movs r2, 4 | r2 = 4;
0x00044090 add r1, pc | r1 = 0x882ec;
0x00044092 blx 0x85d0 | r0 = fcn_000085d0 ();
0x00044096 cmp r0, 0 |
| if (r0 != 0) {
0x00044098 bne.w 0x43d70 | goto label_2;
| }
0x0004409c ldr r3, [pc, 0x1bc] |
0x0004409e adds r7, 4 | r7 += 4;
0x000440a0 ldrb r2, [r5, r7] | r2 = *((r5 + r7));
0x000440a2 add r3, pc | r3 = 0x88302;
0x000440a4 add r3, r2 | r3 += r2;
0x000440a6 ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x000440aa ands r3, r3, 6 | r3 &= 6;
| if (r3 != r3) {
0x000440ae bne.w 0x43d70 | goto label_2;
| }
0x000440b2 ldrd r2, r1, [r6] | __asm ("ldrd r2, r1, [r6]");
0x000440b6 cmp r2, r1 |
| if (r2 >= r1) {
0x000440b8 bhs.w 0x441f2 | goto label_40;
| }
0x000440bc add.w r0, r2, r2, lsl 1 | r0 = r2 + (r2 << 1);
0x000440c0 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x000440c2 adds r2, 1 | r2++;
0x000440c4 lsls r0, r0, 2 | r0 <<= 2;
0x000440c6 strh r3, [r1, r0] | *((r1 + r0)) = r3;
0x000440c8 add r1, r0 | r1 += r0;
0x000440ca strd r3, r3, [r1, 4] | __asm ("strd r3, r3, [r1, 4]");
0x000440ce mov r0, r7 | r0 = r7;
0x000440d0 str r2, [r6] | *(r6) = r2;
0x000440d2 b 0x43de6 | goto label_3;
| label_25:
0x000440d4 add.w r8, r2, 2 | r8 = r2 + 2;
0x000440d8 add r2, sb | r2 += sb;
| label_9:
0x000440da ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x000440de add r3, ip | r3 += ip;
0x000440e0 ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x000440e4 lsls r3, r3, 0x1c | r3 <<= 0x1c;
| if (r3 >= r3) {
0x000440e6 bpl.w 0x43de2 | goto label_1;
| }
0x000440ea cmp r2, r4 |
| if (r2 != r4) {
0x000440ec bne 0x440da | goto label_9;
| }
0x000440ee mov r2, r8 | r2 = r8;
0x000440f0 mov.w r8, 2 | r8 = 2;
0x000440f4 b 0x43daa | goto label_0;
| label_26:
0x000440f6 movs r3, 0 | r3 = 0;
0x000440f8 movs r1, 7 | r1 = 7;
0x000440fa mov r2, r3 | r2 = r3;
0x000440fc mov r0, r6 | r0 = r6;
0x000440fe bl 0x434c4 | r0 = fcn_000434c4 (r0, r1, r2, r3);
0x00044102 mov r8, r0 | r8 = r0;
0x00044104 b 0x43e16 | goto label_10;
| label_35:
0x00044106 cmp r1, 0x2f |
| if (r1 < 0x2f) {
0x00044108 bls.w 0x43de2 | goto label_1;
| }
0x0004410c ldrd r3, r5, [r6] | __asm ("ldrd r3, r5, [r6]");
0x00044110 add.w r1, ip, 3 | r1 = ip + 3;
0x00044114 subs r2, r4, r7 | r2 = r4 - r7;
0x00044116 cmp r3, r5 |
| if (r3 >= r5) {
0x00044118 bhs 0x441cc | goto label_41;
| }
0x0004411a add.w r7, r3, r3, lsl 1 | r7 = r3 + (r3 << 1);
0x0004411e ldr r5, [r6, 8] | r5 = *((r6 + 8));
0x00044120 adds r3, 1 | r3++;
0x00044122 lsls r7, r7, 2 | r7 <<= 2;
0x00044124 strb r1, [r5, r7] | *((r5 + r7)) = r1;
0x00044126 adds r1, r5, r7 | r1 = r5 + r7;
0x00044128 strd r2, r0, [r1, 4] | __asm ("strd r2, r0, [r1, 4]");
0x0004412c movs r2, 0 | r2 = 0;
0x0004412e strb r2, [r1, 1] | *((r1 + 1)) = r2;
0x00044130 str r3, [r6] | *(r6) = r3;
| do {
0x00044132 mov r0, r4 | r0 = r4;
0x00044134 b 0x43de6 | goto label_3;
| label_23:
0x00044136 ldrd r3, r1, [r6] | __asm ("ldrd r3, r1, [r6]");
0x0004413a rsb.w r7, r7, 1 | r7 = 1 - r7;
0x0004413e add r2, r7 | r2 += r7;
0x00044140 cmp r3, r1 |
| if (r3 >= r1) {
0x00044142 bhs 0x441d8 | goto label_42;
| }
0x00044144 add.w r5, r3, r3, lsl 1 | r5 = r3 + (r3 << 1);
0x00044148 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x0004414a movs r7, 5 | r7 = 5;
0x0004414c lsls r5, r5, 2 | r5 <<= 2;
0x0004414e adds r3, 1 | r3++;
0x00044150 strh r7, [r1, r5] | *((r1 + r5)) = r7;
0x00044152 add r1, r5 | r1 += r5;
0x00044154 strd r2, r0, [r1, 4] | __asm ("strd r2, r0, [r1, 4]");
0x00044158 str r3, [r6] | *(r6) = r3;
| label_15:
0x0004415a ldrb r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0004415c cmp r3, 0 |
0x0004415e bne 0x44132 |
| } while (r3 != 0);
0x00044160 ldr r3, [r6] | r3 = *(r6);
0x00044162 mov r0, r4 | r0 = r4;
0x00044164 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00044166 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0004416a add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x0004416e strb r8, [r3, -0xb] | *((r3 - 0xb)) = r8;
0x00044172 b 0x43de6 | goto label_3;
| label_36:
0x00044174 movs r3, 0 | r3 = 0;
0x00044176 movs r1, 6 | r1 = 6;
0x00044178 mov r2, r3 | r2 = r3;
0x0004417a mov r0, r6 | r0 = r6;
0x0004417c bl 0x434c4 | r0 = fcn_000434c4 (r0, r1, r2, r3);
0x00044180 mov r8, r0 | r8 = r0;
0x00044182 b 0x4400e | goto label_11;
| label_33:
0x00044184 add r3, r5 | r3 += r5;
0x00044186 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00044188 subs r3, 0x30 | r3 -= 0x30;
0x0004418a cmp r3, 9 |
| if (r3 > 9) {
0x0004418c bhi.w 0x43f7c | goto label_12;
| }
0x00044190 b 0x43de2 | goto label_1;
| label_22:
0x00044192 ldrd r2, r1, [r6] | __asm ("ldrd r2, r1, [r6]");
0x00044196 cmp r2, r1 |
| if (r2 >= r1) {
0x00044198 bhs 0x441e4 | goto label_43;
| }
0x0004419a add.w r0, r2, r2, lsl 1 | r0 = r2 + (r2 << 1);
0x0004419e ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x000441a0 adds r2, 1 | r2++;
0x000441a2 lsls r0, r0, 2 | r0 <<= 2;
0x000441a4 movs r4, 2 | r4 = 2;
0x000441a6 b 0x43f48 | goto label_13;
| label_38:
0x000441a8 adds r3, 3 | r3 += 3;
| if (r3 != 3) {
0x000441aa bne.w 0x43de2 | goto label_1;
| }
| label_14:
0x000441ae ldr r3, [r6] | r3 = *(r6);
0x000441b0 add.w r8, r8, 1 | r8++;
0x000441b4 cmp r3, r8 |
| if (r3 != r8) {
0x000441b6 bne.w 0x43de2 | goto label_1;
| }
0x000441ba adds r0, r4, 1 | r0 = r4 + 1;
0x000441bc b 0x43de6 | goto label_3;
| label_28:
0x000441be ldrh r2, [r6, 0x16] | r2 = *((r6 + 0x16));
0x000441c0 adds r3, 2 | r3 += 2;
0x000441c2 add.w r2, r2, -1 | r2 += -1;
0x000441c6 strh r2, [r6, 0x16] | *((r6 + 0x16)) = r2;
| if (r3 == 2) {
0x000441c8 beq 0x441ae | goto label_14;
| }
0x000441ca b 0x43de2 | goto label_1;
| label_41:
0x000441cc mov r3, r0 | r3 = r0;
0x000441ce mov r0, r6 | r0 = r6;
0x000441d0 bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x000441d4 mov r0, r4 | r0 = r4;
0x000441d6 b 0x43de6 | goto label_3;
| label_42:
0x000441d8 mov r3, r0 | r3 = r0;
0x000441da movs r1, 5 | r1 = 5;
0x000441dc mov r0, r6 | r0 = r6;
0x000441de bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x000441e2 b 0x4415a | goto label_15;
| label_43:
0x000441e4 mov r2, r3 | r2 = r3;
0x000441e6 mov r0, r6 | r0 = r6;
0x000441e8 movs r1, 2 | r1 = 2;
0x000441ea bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x000441ee mov r0, r7 | r0 = r7;
0x000441f0 b 0x43de6 | goto label_3;
| label_40:
0x000441f2 mov r2, r3 | r2 = r3;
0x000441f4 mov r1, r3 | r1 = r3;
0x000441f6 mov r0, r6 | r0 = r6;
0x000441f8 bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x000441fc mov r0, r7 | r0 = r7;
0x000441fe b 0x43de6 | goto label_3;
| label_31:
0x00044200 mov r2, r3 | r2 = r3;
0x00044202 mov r0, r6 | r0 = r6;
0x00044204 movs r1, 1 | r1 = 1;
0x00044206 bl 0x434c4 | fcn_000434c4 (r0, r1, r2, r3);
0x0004420a mov r0, r7 | r0 = r7;
0x0004420c b 0x43de6 | goto label_3;
| label_32:
0x0004420e cmp r4, 0x7d |
0x00044210 it eq |
| if (r4 == 0x7d) {
0x00044212 mvneq r0, 1 | r0 = ~1;
| goto label_44;
| }
| if (r4 == 0x7d) {
| label_44:
0x00044216 beq.w 0x43de6 | goto label_3;
| }
0x0004421a cmp r4, 0x5d |
0x0004421c it eq |
| if (r4 == 0x5d) {
0x0004421e mvneq r0, 2 | r0 = ~2;
| goto label_45;
| }
| if (r4 == 0x5d) {
| label_45:
0x00044222 beq.w 0x43de6 | goto label_3;
| }
0x00044226 b 0x43d70 | 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/libsqlite3.so.0.8.6 @ 0x444c4 */
| #include <stdint.h>
|
; (fcn) fcn.000444c4 () | void fcn_000444c4 (int16_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000444c4 cmp r1, 0 |
| if (r1 == 0) {
0x000444c6 beq.w 0x4468e | goto label_4;
| }
0x000444ca push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000444ce mov sl, r2 | sl = r2;
0x000444d0 ldrd r3, r7, [r0, 0x10] | __asm ("ldrd r3, r7, [r0, 0x10]");
0x000444d4 mov sb, r1 | sb = r1;
0x000444d6 sub sp, 0x14 |
0x000444d8 mov r4, r0 | r4 = r0;
0x000444da ldrd r6, r5, [r0, 8] | __asm ("ldrd r6, r5, [r0, 8]");
0x000444de adds r2, r3, 2 | r2 = r3 + 2;
0x000444e0 adc r1, r7, 0 | __asm ("adc r1, r7, 0");
0x000444e4 adds.w r2, r2, sl | r2 += sl;
0x000444e8 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x000444ec cmp r2, r6 |
0x000444ee sbcs r1, r5 | __asm ("sbcs r1, r5");
| if (r2 >= r6) {
0x000444f0 bhs.w 0x4467c | goto label_5;
| }
| label_3:
0x000444f4 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x000444f6 adds r1, r3, 1 | r1 = r3 + 1;
0x000444f8 str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x000444fa adc r7, r7, 0 | __asm ("adc r7, r7, 0");
0x000444fe movs r1, 0x22 | r1 = 0x22;
0x00044500 str r7, [r4, 0x14] | *((r4 + 0x14)) = r7;
0x00044502 strb r1, [r2, r3] | *((r2 + r3)) = r1;
0x00044504 cmp.w sl, 0 |
| if (sl == 0) {
0x00044508 beq.w 0x44662 | goto label_6;
| }
0x0004450c ldr r3, [pc, 0x180] |
0x0004450e movs r5, 0 | r5 = 0;
0x00044510 add.w r7, sl, 7 | r7 = sl + 7;
0x00044514 add.w sb, sb, -1 | sb += -1;
0x00044518 mov r8, r5 | r8 = r5;
0x0004451a mov.w fp, 0x5c |
0x0004451e add r3, pc | r3 = 0x88bb2;
0x00044520 str r7, [sp, 4] | var_4h = r7;
0x00044522 str r3, [sp, 8] | var_8h = r3;
0x00044524 ldr r3, [pc, 0x16c] |
0x00044526 add r3, pc | r3 = 0x88bbe;
0x00044528 str r3, [sp, 0xc] | var_ch = r3;
0x0004452a b 0x445f0 |
| while (r6 != 0x5c) {
0x0004452c cmp r6, 0x1f |
| if (r6 <= 0x1f) {
0x0004452e bhi 0x445d2 |
0x00044530 ldr r7, [sp, 8] | r7 = var_8h;
0x00044532 add.w ip, r7, r6 |
0x00044536 ldrb.w ip, [ip, 0x5e4] | ip = *((ip + 0x5e4));
0x0004453a cmp.w ip, 0 |
| if (ip != 0) {
0x0004453e bne.w 0x4464e | goto label_7;
| }
0x00044542 ldrd r7, r2, [r4, 8] | __asm ("ldrd r7, r2, [r4, 8]");
0x00044546 adds r1, r3, 7 | r1 = r3 + 7;
0x00044548 adc ip, r0, 0 | __asm ("adc ip, r0, 0");
0x0004454c adds.w r1, r1, sl | r1 += sl;
0x00044550 adc ip, ip, 0 | __asm ("adc ip, ip, 0");
0x00044554 adds r1, r1, r5 | r1 += r5;
0x00044556 adc.w ip, r8, ip | __asm ("adc.w ip, r8, ip");
0x0004455a cmp r7, r1 |
0x0004455c sbcs.w ip, r2, ip | __asm ("sbcs.w ip, r2, ip");
| if (r7 <= r1) {
0x00044560 blo 0x44652 | goto label_8;
| }
| label_2:
0x00044562 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00044564 adds r1, r3, 1 | r1 = r3 + 1;
0x00044566 adc r0, r0, 0 | __asm ("adc r0, r0, 0");
0x0004456a str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x0004456c str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x0004456e mov.w ip, 0x75 |
0x00044572 strb.w fp, [r2, r3] | *((r2 + r3)) = fp;
0x00044576 movs r1, 0x30 | r1 = 0x30;
0x00044578 ldrd r0, r3, [r4, 0x10] | __asm ("ldrd r0, r3, [r4, 0x10]");
0x0004457c adds r2, r0, 1 | r2 = r0 + 1;
0x0004457e adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00044582 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x00044584 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00044586 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00044588 strb.w ip, [r3, r0] | *((r3 + r0)) = ip;
0x0004458c lsrs r0, r6, 4 | r0 = r6 >> 4;
0x0004458e ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00044590 and r6, r6, 0xf | r6 &= 0xf;
0x00044594 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00044596 add r0, r1 | r0 += r1;
0x00044598 ldrb r6, [r3, r6] | r6 = *((r3 + r6));
0x0004459a adds r3, r2, 1 | r3 = r2 + 1;
0x0004459c str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x0004459e ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000445a0 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000445a4 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x000445a6 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000445a8 strb r1, [r3, r2] | *((r3 + r2)) = r1;
0x000445aa ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000445ac adds r3, r2, 1 | r3 = r2 + 1;
0x000445ae str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x000445b0 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000445b2 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000445b6 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x000445b8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000445ba strb r1, [r3, r2] | *((r3 + r2)) = r1;
0x000445bc ldrd r1, r3, [r4, 0x10] | __asm ("ldrd r1, r3, [r4, 0x10]");
0x000445c0 adds r2, r1, 1 | r2 = r1 + 1;
0x000445c2 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000445c6 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x000445c8 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x000445ca ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000445cc strb r0, [r3, r1] | *((r3 + r1)) = r0;
0x000445ce ldrd r2, r1, [r4, 0x10] | __asm ("ldrd r2, r1, [r4, 0x10]");
| }
| label_0:
0x000445d2 ldr r0, [sp, 4] | r0 = var_4h;
0x000445d4 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000445d6 subs r7, r0, 1 | r7 = r0 - 1;
0x000445d8 adds r0, r2, 1 | r0 = r2 + 1;
0x000445da adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x000445de adds r5, 1 | r5++;
0x000445e0 adc r8, r8, 0 | __asm ("adc r8, r8, 0");
0x000445e4 cmp r7, 7 |
0x000445e6 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x000445e8 str r1, [r4, 0x14] | *((r4 + 0x14)) = r1;
0x000445ea str r7, [sp, 4] | var_4h = r7;
0x000445ec strb r6, [r3, r2] | *((r3 + r2)) = r6;
| if (r7 == 7) {
0x000445ee beq 0x44662 | goto label_6;
| }
0x000445f0 ldrb r6, [sb, 1]! | r6 = *((sb += 1));
0x000445f4 ldrd r3, r0, [r4, 0x10] | __asm ("ldrd r3, r0, [r4, 0x10]");
0x000445f8 cmp r6, 0x5c |
0x000445fa it ne |
| if (r6 != 0x5c) {
0x000445fc cmpne r6, 0x22 | __asm ("cmpne r6, 0x22");
| }
0x000445fe mov r2, r3 | r2 = r3;
0x00044600 mov r1, r0 | r1 = r0;
0x00044602 bne 0x4452c |
| }
| label_1:
0x00044604 adds r2, 3 | r2 += 3;
0x00044606 adc lr, r1, 0 | __asm ("adc lr, r1, 0");
0x0004460a adds.w r2, r2, sl | r2 += sl;
0x0004460e adc lr, lr, 0 | __asm ("adc lr, lr, 0");
0x00044612 subs.w ip, r2, r5 |
0x00044616 ldrd r1, r2, [r4, 8] | __asm ("ldrd r1, r2, [r4, 8]");
0x0004461a sbc.w lr, lr, r8 | __asm ("sbc.w lr, lr, r8");
0x0004461e cmp r1, ip |
0x00044620 sbcs.w lr, r2, lr | __asm ("sbcs.w lr, r2, lr");
0x00044624 blo 0x4463c |
| while (1) {
0x00044626 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00044628 adds r1, r3, 1 | r1 = r3 + 1;
0x0004462a adc r0, r0, 0 | __asm ("adc r0, r0, 0");
0x0004462e str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x00044630 str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x00044632 strb.w fp, [r2, r3] | *((r2 + r3)) = fp;
0x00044636 ldrd r2, r1, [r4, 0x10] | __asm ("ldrd r2, r1, [r4, 0x10]");
0x0004463a b 0x445d2 | goto label_0;
0x0004463c ldr r3, [sp, 4] | r3 = var_4h;
0x0004463e mov r0, r4 | r0 = r4;
0x00044640 subs r1, r3, 4 | r1 = r3 - 4;
0x00044642 bl 0x44424 | r0 = fcn_00044424 (r0, r1);
| if (r0 != 0) {
0x00044646 cbnz r0, 0x44676 | goto label_9;
| }
0x00044648 ldrd r3, r0, [r4, 0x10] | __asm ("ldrd r3, r0, [r4, 0x10]");
0x0004464c b 0x44626 |
| }
| label_7:
0x0004464e mov r6, ip | r6 = ip;
0x00044650 b 0x44604 | goto label_1;
| label_8:
0x00044652 ldr r1, [sp, 4] | r1 = var_4h;
0x00044654 mov r0, r4 | r0 = r4;
0x00044656 bl 0x44424 | r0 = fcn_00044424 (r0, r1);
| if (r0 != 0) {
0x0004465a cbnz r0, 0x44676 | goto label_9;
| }
0x0004465c ldrd r3, r0, [r4, 0x10] | __asm ("ldrd r3, r0, [r4, 0x10]");
0x00044660 b 0x44562 | goto label_2;
| label_6:
0x00044662 ldrd r3, r2, [r4, 0x10] | __asm ("ldrd r3, r2, [r4, 0x10]");
0x00044666 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00044668 adds r0, r3, 1 | r0 = r3 + 1;
0x0004466a str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0004466c adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00044670 movs r0, 0x22 | r0 = 0x22;
0x00044672 str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
0x00044674 strb r0, [r1, r3] | *((r1 + r3)) = r0;
| do {
| label_9:
0x00044676 add sp, 0x14 |
0x00044678 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x0004467c add.w r1, sl, 2 | r1 = sl + 2;
0x00044680 bl 0x44424 | r0 = fcn_00044424 (r0, r1);
0x00044684 cmp r0, 0 |
0x00044686 bne 0x44676 |
| } while (r0 != 0);
0x00044688 ldrd r3, r7, [r4, 0x10] | __asm ("ldrd r3, r7, [r4, 0x10]");
0x0004468c b 0x444f4 | goto label_3;
| label_4:
0x0004468e bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x44bfc */
| #include <stdint.h>
|
; (fcn) fcn.00044bfc () | void fcn_00044bfc (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_3;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00044bfc ldr r3, [r0, 0x30] | r3 = *((r0 + 0x30));
0x00044bfe push {r4, r5, r6, r7, lr} |
0x00044c00 mov r7, r0 | r7 = r0;
0x00044c02 sub sp, 0xc |
0x00044c04 mov r4, r2 | r4 = r2;
0x00044c06 mov r6, r1 | r6 = r1;
0x00044c08 ldr.w r5, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r5 = *((r3 + offset_0));
| if (r5 == 0) {
0x00044c0c cbz r5, 0x44c4e | goto label_2;
| }
0x00044c0e mov r2, r5 | r2 = r5;
0x00044c10 bl 0x44bfc | fcn_00044bfc (r0, r1, r2);
| do {
| label_0:
0x00044c14 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x00044c16 add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x00044c1a add.w r4, r4, r4, lsl 1 | r4 += (r4 << 1);
0x00044c1e lsls r5, r5, 2 | r5 <<= 2;
0x00044c20 add.w r2, r3, r4, lsl 2 | r2 = r3 + (r4 << 2);
0x00044c24 adds r1, r3, r5 | r1 = r3 + r5;
0x00044c26 ldrb r3, [r3, r5] | r3 = *((r3 + r5));
0x00044c28 cmp r3, 6 |
| if (r3 == 6) {
0x00044c2a beq 0x44c70 | goto label_3;
| }
0x00044c2c ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x00044c2e mov r1, r6 | r1 = r6;
0x00044c30 lsls r3, r3, 0x19 | r3 <<= 0x19;
0x00044c32 it pl |
| if (r3 < r3) {
0x00044c34 subpl r2, 0xc | r2 -= 0xc;
| }
0x00044c36 ldrd r0, r4, [r2, 4] | __asm ("ldrd r0, r4, [r2, 4]");
0x00044c3a ldr r2, [pc, 0x58] |
0x00044c3c adds r4, 1 | r4++;
0x00044c3e subs r3, r0, 2 | r3 = r0 - 2;
0x00044c40 add r2, pc | r2 = 0x898da;
0x00044c42 adds r0, 1 | r0++;
0x00044c44 str r4, [sp] | *(sp) = r4;
0x00044c46 bl 0x44860 | fcn_00044860 (r0, r1, r2, r3, r4, r5, r6);
0x00044c4a add sp, 0xc |
0x00044c4c pop {r4, r5, r6, r7, pc} |
| label_2:
0x00044c4e ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00044c50 ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x00044c52 ldr r2, [r1, 0x14] | r2 = *((r1 + 0x14));
0x00044c54 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x00044c56 cmp r3, r0 |
0x00044c58 sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
| if (r3 >= r0) {
0x00044c5c bhs 0x44c82 | goto label_4;
| }
| label_1:
0x00044c5e adds r0, r3, 1 | r0 = r3 + 1;
0x00044c60 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00044c62 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00044c66 str r0, [r6, 0x10] | *((r6 + 0x10)) = r0;
0x00044c68 str r2, [r6, 0x14] | *((r6 + 0x14)) = r2;
0x00044c6a movs r2, 0x24 | r2 = 0x24;
0x00044c6c strb r2, [r1, r3] | *((r1 + r3)) = r2;
0x00044c6e b 0x44c14 |
| } while (1);
| label_3:
0x00044c70 ldr r2, [pc, 0x24] |
0x00044c72 movs r0, 0x1e | r0 = 0x1e;
0x00044c74 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00044c76 mov r1, r6 | r1 = r6;
0x00044c78 add r2, pc | r2 = 0x89914;
0x00044c7a add sp, 0xc |
0x00044c7c pop.w {r4, r5, r6, r7, lr} |
0x00044c80 b 0x44860 | void (*0x44860)() ();
| label_4:
0x00044c82 movs r1, 1 | r1 = 1;
0x00044c84 mov r0, r6 | r0 = r6;
0x00044c86 bl 0x44424 | r0 = fcn_00044424 (r0, r1);
0x00044c8a cmp r0, 0 |
| if (r0 != 0) {
0x00044c8c bne 0x44c14 | goto label_0;
| }
0x00044c8e ldrd r3, r2, [r6, 0x10] | __asm ("ldrd r3, r2, [r6, 0x10]");
0x00044c92 b 0x44c5e | 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/libsqlite3.so.0.8.6 @ 0x45b8c */
| #include <stdint.h>
|
; (fcn) fcn.00045b8c () | void fcn_00045b8c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00045b8c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00045b90 mov r6, r2 | r6 = r2;
0x00045b92 ldr.w r2, [pc, 0x464] |
0x00045b96 mov r5, r0 | r5 = r0;
0x00045b98 mov r0, r1 | r0 = r1;
0x00045b9a mov r4, r1 | r4 = r1;
0x00045b9c ldr.w r3, [pc, 0x45c] | r3 = *(0x45ffc);
0x00045ba0 add r2, pc | r2 = 0x8bb9e;
0x00045ba2 vpush {d8} | __asm ("vpush {d8}");
0x00045ba6 sub sp, 0x34 |
0x00045ba8 ldr r3, [r2, r3] |
0x00045baa ldr r3, [r3] | r3 = *(0x8bb9e);
0x00045bac str r3, [sp, 0x2c] | var_2ch = r3;
0x00045bae mov.w r3, 0 | r3 = 0;
0x00045bb2 blx 0x7ff4 | r0 = fcn_00007ff4 ();
0x00045bb6 cmp r0, 4 |
| if (r0 == 4) {
0x00045bb8 beq.w 0x45d2e | goto label_16;
| }
| label_0:
0x00045bbc mov r0, r4 | r0 = r4;
0x00045bbe blx 0x7ff4 | r0 = fcn_00007ff4 ();
0x00045bc2 cmp r0, 3 |
| if (r0 != 3) {
0x00045bc4 bne.w 0x45d00 | goto label_17;
| }
0x00045bc8 mov r0, r4 | r0 = r4;
0x00045bca blx 0x8508 | r0 = fcn_00008508 ();
0x00045bce mov r4, r0 | r4 = r0;
0x00045bd0 cmp r0, 0 |
| if (r0 == 0) {
0x00045bd2 beq.w 0x45e9a | goto label_18;
| }
0x00045bd6 ldr.w r1, [pc, 0x428] | r1 = *(0x00046000);
0x00045bda ldrb r3, [r0] | r3 = *(r0);
0x00045bdc movs r0, 0 | r0 = 0;
0x00045bde strd r4, r0, [sp, 0x18] | __asm ("strd r4, r0, [var_18h]");
0x00045be2 add r1, pc | r1 += pc;
0x00045be4 strd r0, r0, [sp, 0x20] | __asm ("strd r0, r0, [var_20h]");
0x00045be8 adds r2, r1, r3 | r2 = r1 + r3;
0x00045bea str r0, [sp, 0x28] | var_28h = r0;
0x00045bec ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
| if (r2 == 0) {
0x00045bf0 cbz r2, 0x45c02 | goto label_19;
| }
| do {
0x00045bf2 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00045bf6 adds r2, r1, r3 | r2 = r1 + r3;
0x00045bf8 ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
0x00045bfc cmp r2, 0 |
0x00045bfe bne 0x45bf2 |
| } while (r2 != 0);
0x00045c00 str r4, [sp, 0x18] | var_18h = r4;
| label_19:
0x00045c02 cmp r3, 0x5b |
| if (r3 != 0x5b) {
0x00045c04 bne.w 0x45d64 | goto label_20;
| }
0x00045c08 ldr.w sl, [pc, 0x3f8] | sl = case.0x71eec.46;
0x00045c0c adds r4, 1 | r4++;
0x00045c0e ldr r7, [pc, 0x3f8] |
0x00045c10 mov.w sb, 0 | sb = 0;
0x00045c14 ldr r3, [pc, 0x3f4] |
0x00045c16 vmov.i64 d8, 0 | __asm ("vmov.i64 d8, 0");
0x00045c1a add sl, pc | sl += pc;
0x00045c1c add r7, pc | r7 = 0x8bc2a;
0x00045c1e str r6, [sp, 8] | var_8h = r6;
0x00045c20 add r3, pc | r3 = 0x8bc30;
0x00045c22 str r3, [sp, 4] | var_4h = r3;
| label_7:
0x00045c24 ldrb r3, [r4] | r3 = *(r4);
0x00045c26 ldr r2, [sp, 4] | r2 = var_4h;
0x00045c28 str r4, [sp, 0x18] | var_18h = r4;
0x00045c2a add r2, r3 | r2 += r3;
0x00045c2c ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
| if (r2 == 0) {
0x00045c30 cbz r2, 0x45c44 | goto label_21;
| }
| do {
0x00045c32 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00045c36 add.w r2, sl, r3 | r2 = sl + r3;
0x00045c3a ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
0x00045c3e cmp r2, 0 |
0x00045c40 bne 0x45c32 |
| } while (r2 != 0);
0x00045c42 str r4, [sp, 0x18] | var_18h = r4;
| label_21:
0x00045c44 cmp r3, 0x5b |
| if (r3 != 0x5b) {
0x00045c46 bne.w 0x45da8 | goto label_22;
| }
0x00045c4a ldrd r3, r2, [sp, 0x1c] | __asm ("ldrd r3, r2, [var_1ch]");
0x00045c4e adds r4, 1 | r4++;
0x00045c50 str r4, [sp, 0x18] | var_18h = r4;
0x00045c52 cmp r3, r2 |
| if (r3 >= r2) {
0x00045c54 bge.w 0x45ea4 | goto label_23;
| }
| label_6:
0x00045c58 ldr.w r8, [pc, 0x3b4] | r8 = *(0x00046010);
0x00045c5c movs r6, 0 | r6 = 0;
0x00045c5e add r8, pc | r8 += pc;
| label_10:
0x00045c60 cmp r6, 1 |
0x00045c62 itett le |
| if (r6 > 1) {
0x00045c64 ldrle r3, [sp, 0x1c] | r3 = var_1ch;
| }
| if (r6 <= 1) {
0x00045c66 movgt r3, 0 | r3 = 0;
| }
| if (r6 > 1) {
0x00045c68 addle r3, r6, r3, lsl 1 | r3 = r6 + (r3 << 1);
| }
| if (r6 <= 1) {
0x00045c6c add.w r3, sb, r3, lsl 2 | r3 = sb + (r3 << 2);
| }
0x00045c70 str r3, [sp, 0xc] | var_ch = r3;
0x00045c72 ldrb r3, [r4] | r3 = *(r4);
0x00045c74 add.w r2, r8, r3 | r2 = r8 + r3;
0x00045c78 ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
| if (r2 == 0) {
0x00045c7c cbz r2, 0x45c8e | goto label_24;
| }
| do {
0x00045c7e ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00045c82 adds r2, r7, r3 | r2 = r7 + r3;
0x00045c84 ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
0x00045c88 cmp r2, 0 |
0x00045c8a bne 0x45c7e |
| } while (r2 != 0);
0x00045c8c str r4, [sp, 0x18] | var_18h = r4;
| label_24:
0x00045c8e cmp r3, 0x2d |
0x00045c90 itte eq |
| if (r3 != 0x2d) {
0x00045c92 ldrbeq r3, [r4, 1] | r3 = *((r4 + 1));
| }
| if (r3 != 0x2d) {
0x00045c94 moveq r1, 1 | r1 = 1;
| }
| if (r3 == 0x2d) {
0x00045c96 movne r1, 0 | r1 = 0;
| }
0x00045c98 mov r2, r1 | r2 = r1;
0x00045c9a cmp r3, 0x30 |
| if (r3 == 0x30) {
0x00045c9c beq 0x45d78 | goto label_25;
| }
| label_2:
0x00045c9e ldr.w lr, [pc, 0x374] |
0x00045ca2 mov.w ip, 0 |
0x00045ca6 mov fp, ip |
0x00045ca8 add lr, pc | lr = 0x8bcc2;
| do {
0x00045caa ldrb r3, [r4, r2] | r3 = *((r4 + r2));
0x00045cac mov r0, r2 | r0 = r2;
0x00045cae adds r5, r4, r2 | r5 = r4 + r2;
0x00045cb0 add.w r1, lr, r3 | r1 = lr + r3;
0x00045cb4 ldrb.w r1, [r1, 0x40] | r1 = *((r1 + 0x40));
0x00045cb8 lsls r1, r1, 0x1d | r1 <<= 0x1d;
| if (r1 >= r1) {
0x00045cba bmi 0x45cfc |
0x00045cbc cmp r3, 0x2e |
0x00045cbe ldrb r1, [r5, -0x1] | r1 = *((r5 - 0x1));
| if (r3 == 0x2e) {
0x00045cc2 beq.w 0x45e7a | goto label_26;
| }
0x00045cc6 and fp, r3, 0xdf |
0x00045cca cmp.w fp, 0x45 |
| if (fp != 0x45) {
0x00045cce bne.w 0x45f4c | goto label_27;
| }
0x00045cd2 cmp r1, 0x2f |
| if (r1 < 0x2f) {
0x00045cd4 bls 0x45d82 | goto label_4;
| }
0x00045cd6 cmp.w ip, 0 |
| if (ip != 0) {
0x00045cda bne.w 0x45fc8 | goto label_28;
| }
0x00045cde ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00045ce0 sub.w r1, r3, 0x2b | r1 = r3 - 0x2b;
0x00045ce4 tst.w r1, 0xfd |
0x00045ce8 ittt eq |
| if ((r1 & 0xfd) != 0) {
0x00045cea addeq r0, r0, r4 | r0 += r4;
| }
| if ((r1 & 0xfd) != 0) {
0x00045cec addeq r2, 1 | r2++;
| }
| if ((r1 & 0xfd) != 0) {
0x00045cee ldrbeq r3, [r0, 2] | r3 = *((r0 + 2));
| }
0x00045cf0 subs r3, 0x30 | r3 -= 0x30;
0x00045cf2 cmp r3, 9 |
| if (r3 > 9) {
0x00045cf4 bhi 0x45d82 | goto label_4;
| }
0x00045cf6 mov.w ip, 1 |
0x00045cfa mov fp, ip |
| }
| label_5:
0x00045cfc adds r2, 1 | r2++;
0x00045cfe b 0x45caa |
| } while (1);
| label_17:
0x00045d00 cmp r6, 0 |
| if (r6 == 0) {
0x00045d02 beq.w 0x45e96 | goto label_29;
| }
0x00045d06 movs r4, 0 | r4 = 0;
0x00045d08 movs r3, 1 | r3 = 1;
0x00045d0a str r3, [r6] | *(r6) = r3;
| label_1:
0x00045d0c ldr r2, [pc, 0x308] |
0x00045d0e ldr r3, [pc, 0x2ec] | r3 = *(0x45ffe);
0x00045d10 add r2, pc | r2 = 0x8bd2c;
0x00045d12 ldr r3, [r2, r3] | r3 = *(0x8bd2c);
0x00045d14 ldr r2, [r3] | r2 = *(0x8bd2c);
0x00045d16 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00045d18 eors r2, r3 | r2 ^= r3;
0x00045d1a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00045d1e bne.w 0x45ff2 | goto label_30;
| }
0x00045d22 mov r0, r4 | r0 = r4;
0x00045d24 add sp, 0x34 |
0x00045d26 vpop {d8} | __asm ("vpop {d8}");
0x00045d2a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x00045d2e mov r0, r4 | r0 = r4;
0x00045d30 blx 0x8448 | r0 = fcn_00008448 ();
0x00045d34 cmp r0, 0x1b |
0x00045d36 mov r7, r0 | r7 = r0;
| if (r0 < 0x1b) {
0x00045d38 bls.w 0x45bbc | goto label_0;
| }
0x00045d3c mov r0, r4 | r0 = r4;
0x00045d3e blx 0x8544 | r0 = fdatasync ();
0x00045d42 mov r4, r0 | r4 = r0;
0x00045d44 cmp r0, 0 |
| if (r0 == 0) {
0x00045d46 beq.w 0x45f44 | goto label_31;
| }
0x00045d4a ldrb r2, [r4] | r2 = *(r4);
0x00045d4c ldrb r0, [r0, 1] | r0 = *((r0 + 1));
0x00045d4e ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x00045d50 cmp r2, 1 |
0x00045d52 ldrb r1, [r4, 3] | r1 = *((r4 + 3));
| if (r2 < 1) {
0x00045d54 bls.w 0x45ec4 | goto label_32;
| }
| label_8:
0x00045d58 movs r4, 0 | r4 = 0;
| label_9:
0x00045d5a cmp r6, 0 |
| if (r6 == 0) {
0x00045d5c beq 0x45d0c | goto label_1;
| }
| label_15:
0x00045d5e movs r3, 0 | r3 = 0;
0x00045d60 str r3, [r6] | *(r6) = r3;
0x00045d62 b 0x45d0c | goto label_1;
| label_20:
0x00045d64 mov.w sb, 0 | sb = 0;
0x00045d68 mov r5, sb | r5 = sb;
| if (r6 != 0) {
| label_3:
0x00045d6a cbz r6, 0x45d6e |
0x00045d6c str r5, [r6] | *(r6) = r5;
| }
0x00045d6e mov r0, sb | r0 = sb;
0x00045d70 movs r4, 0 | r4 = 0;
0x00045d72 blx 0x84f8 | fcn_000084f8 ();
0x00045d76 b 0x45d0c | goto label_1;
| label_25:
0x00045d78 add r1, r4 | r1 += r4;
0x00045d7a ldrb r3, [r1, 1] | r3 = *((r1 + 1));
0x00045d7c subs r3, 0x30 | r3 -= 0x30;
0x00045d7e cmp r3, 9 |
| if (r3 > 9) {
0x00045d80 bhi 0x45c9e | goto label_2;
| }
| label_4:
0x00045d82 ldr r4, [sp, 0x18] | r4 = var_18h;
| label_11:
0x00045d84 ldr r1, [pc, 0x294] |
0x00045d86 ldrb r3, [r4] | r3 = *(r4);
0x00045d88 add r1, pc | r1 = 0x8bda8;
0x00045d8a adds r2, r1, r3 | r2 = r1 + r3;
0x00045d8c ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
| if (r2 == 0) {
0x00045d90 cbz r2, 0x45da2 | goto label_33;
| }
| do {
0x00045d92 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00045d96 adds r2, r1, r3 | r2 = r1 + r3;
0x00045d98 ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
0x00045d9c cmp r2, 0 |
0x00045d9e bne 0x45d92 |
| } while (r2 != 0);
0x00045da0 str r4, [sp, 0x18] | var_18h = r4;
| label_33:
0x00045da2 cmp r3, 0x2c |
| if (r3 == 0x2c) {
0x00045da4 beq.w 0x45ec0 | goto label_34;
| }
| label_22:
0x00045da8 ldr r6, [sp, 8] | r6 = var_8h;
0x00045daa movs r5, 0 | r5 = 0;
0x00045dac ldr r4, [sp, 0x18] | r4 = var_18h;
| label_14:
0x00045dae ldr r1, [pc, 0x270] |
0x00045db0 ldrb r3, [r4] | r3 = *(r4);
0x00045db2 add r1, pc | r1 = 0x8bdd8;
0x00045db4 adds r2, r1, r3 | r2 = r1 + r3;
0x00045db6 ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
| if (r2 == 0) {
0x00045dba cbz r2, 0x45dca | goto label_35;
| }
| do {
0x00045dbc ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00045dc0 adds r2, r1, r3 | r2 = r1 + r3;
0x00045dc2 ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
0x00045dc6 cmp r2, 0 |
0x00045dc8 bne 0x45dbc |
| } while (r2 != 0);
| label_35:
0x00045dca cmp r3, 0x5d |
| if (r3 != 0x5d) {
0x00045dcc bne 0x45e76 | goto label_36;
| }
0x00045dce ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00045dd0 cmp r0, 3 |
| if (r0 <= 3) {
0x00045dd2 ble 0x45e76 | goto label_36;
| }
0x00045dd4 add.w r8, r0, 0x20000000 | r8 = r0 + 0x20000000;
0x00045dd8 vldr s14, [sb] | __asm ("vldr s14, [sb]");
0x00045ddc add.w r8, r8, -1 | r8 += -1;
0x00045de0 lsl.w r8, r8, 3 | r8 <<= 3;
0x00045de4 add.w r3, sb, r8 | r3 = sb + r8;
0x00045de8 vldr s15, [r3] | __asm ("vldr s15, [r3]");
0x00045dec vcmp.f32 s14, s15 | __asm ("vcmp.f32 s14, s15");
0x00045df0 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 != 3) {
0x00045df4 bne 0x45e76 | goto label_36;
| }
0x00045df6 vldr s15, [r3, 4] | __asm ("vldr s15, [r3, 4]");
0x00045dfa vldr s14, [sb, 4] | __asm ("vldr s14, [sb, 4]");
0x00045dfe vcmp.f32 s14, s15 | __asm ("vcmp.f32 s14, s15");
0x00045e02 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 != 3) {
0x00045e06 bne 0x45e76 | goto label_36;
| }
0x00045e08 ldr r2, [pc, 0x218] |
0x00045e0a adds r4, 1 | r4++;
0x00045e0c ldrb r7, [r4] | r7 = *(r4);
0x00045e0e str r4, [sp, 0x18] | var_18h = r4;
0x00045e10 add r2, pc | r2 = 0x8be38;
0x00045e12 adds r3, r2, r7 | r3 = r2 + r7;
0x00045e14 ldrb.w r3, [r3, 0x4e4] | r3 = *((r3 + 0x4e4));
| if (r3 == 0) {
0x00045e18 cbz r3, 0x45e2a | goto label_37;
| }
| do {
0x00045e1a ldrb r7, [r4, 1]! | r7 = *((r4 += 1));
0x00045e1e adds r3, r2, r7 | r3 = r2 + r7;
0x00045e20 ldrb.w r3, [r3, 0x4e4] | r3 = *((r3 + 0x4e4));
0x00045e24 cmp r3, 0 |
0x00045e26 bne 0x45e1a |
| } while (r3 != 0);
0x00045e28 str r4, [sp, 0x18] | var_18h = r4;
| if (r7 != 0) {
| label_37:
0x00045e2a cbnz r7, 0x45e76 | goto label_36;
| }
0x00045e2c asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00045e2e add.w sl, r0, -1 | sl = r0 + -1;
0x00045e32 str.w sl, [sp, 0x1c] | __asm ("str.w sl, [var_1ch]");
0x00045e36 lsls r1, r1, 3 | r1 <<= 3;
0x00045e38 orr.w r1, r1, r0, lsr 29 | r1 |= (r0 >> 29);
0x00045e3c lsls r0, r0, 3 | r0 <<= 3;
0x00045e3e blx 0x7f18 | r0 = fcn_00007f18 ();
0x00045e42 mov r4, r0 | r4 = r0;
0x00045e44 cmp r0, 0 |
| if (r0 == 0) {
0x00045e46 beq 0x45d6a | goto label_3;
| }
0x00045e48 mov r1, sb | r1 = sb;
0x00045e4a mov r2, r8 | r2 = r8;
0x00045e4c str sl, [r0], 8 | *(r0) = sl;
| r0 += 8;
0x00045e50 blx 0x7dcc | fcn_00007dcc ();
0x00045e54 asr.w r3, sl, 0x10 | r3 = sl >> 0x10;
0x00045e58 mov r0, sb | r0 = sb;
0x00045e5a rev16.w sb, sl | __asm ("rev16.w sb, sl");
0x00045e5e strb r3, [r4, 5] | *((r4 + 5)) = r3;
0x00045e60 movs r3, 1 | r3 = 1;
0x00045e62 strh.w sb, [r4, 6] | *((r4 + 6)) = sb;
0x00045e66 strb r3, [r4, 4] | *((r4 + 4)) = r3;
0x00045e68 blx 0x84f8 | fcn_000084f8 ();
0x00045e6c cmp r6, 0 |
| if (r6 == 0) {
0x00045e6e beq.w 0x45d0c | goto label_1;
| }
0x00045e72 str r7, [r6] | *(r6) = r7;
0x00045e74 b 0x45d0c | goto label_1;
| label_36:
0x00045e76 movs r5, 1 | r5 = 1;
0x00045e78 b 0x45d6a | goto label_3;
| label_26:
0x00045e7a cmp r1, 0x2d |
0x00045e7c ite ne |
| if (r1 == 0x2d) {
0x00045e7e movne r3, fp | r3 = fp;
| }
| if (r1 != 0x2d) {
0x00045e80 orreq r3, fp, 1 | r3 = fp | 1;
| }
0x00045e84 cmp r3, 0 |
| if (r3 != 0) {
0x00045e86 bne.w 0x45d82 | goto label_4;
| }
0x00045e8a mov.w fp, 1 |
0x00045e8e b 0x45cfc | goto label_5;
| label_13:
0x00045e90 cmp r5, 0 |
| if (r5 != 0) {
0x00045e92 bne.w 0x45fda | goto label_38;
| }
| do {
| label_29:
0x00045e96 movs r4, 0 | r4 = 0;
0x00045e98 b 0x45d0c | goto label_1;
| label_18:
0x00045e9a cmp r6, 0 |
0x00045e9c beq 0x45e96 |
| } while (r6 == 0);
0x00045e9e movs r3, 7 | r3 = 7;
0x00045ea0 str r3, [r6] | *(r6) = r3;
0x00045ea2 b 0x45d0c | goto label_1;
| label_23:
0x00045ea4 adds r2, 8 | r2 += 8;
0x00045ea6 movs r3, 0 | r3 = 0;
0x00045ea8 lsls r1, r2, 1 | r1 = r2 << 1;
0x00045eaa mov r0, sb | r0 = sb;
0x00045eac lsls r2, r2, 4 | r2 <<= 4;
0x00045eae str r1, [sp, 0x20] | var_20h = r1;
0x00045eb0 blx 0x8638 | r0 = fcn_00008638 ();
0x00045eb4 cmp r0, 0 |
| if (r0 == 0) {
0x00045eb6 beq.w 0x45fe4 | goto label_39;
| }
0x00045eba mov sb, r0 | sb = r0;
0x00045ebc str r0, [sp, 0x28] | var_28h = r0;
0x00045ebe b 0x45c58 | goto label_6;
| label_34:
0x00045ec0 adds r4, 1 | r4++;
0x00045ec2 b 0x45c24 | goto label_7;
| label_32:
0x00045ec4 lsl.w r8, r3, 8 | r8 = r3 << 8;
0x00045ec8 add.w r8, r8, r0, lsl 16 | r8 += (r0 << 16);
0x00045ecc add r8, r1 | r8 += r1;
0x00045ece lsl.w sb, r8, 3 | sb = r8 << 3;
0x00045ed2 add.w r3, sb, 4 | r3 = sb + 4;
0x00045ed6 cmp r7, r3 |
| if (r7 != r3) {
0x00045ed8 bne.w 0x45d58 | goto label_8;
| }
0x00045edc add.w r0, sb, 0x20 | r0 = sb + 0x20;
0x00045ee0 movs r1, 0 | r1 = 0;
0x00045ee2 blx 0x7f18 | r0 = fcn_00007f18 ();
0x00045ee6 mov sl, r0 | sl = r0;
0x00045ee8 cmp r0, 0 |
| if (r0 == 0) {
0x00045eea beq 0x45fce | goto label_40;
| }
0x00045eec mov r1, r4 | r1 = r4;
0x00045eee mov r2, r7 | r2 = r7;
0x00045ef0 str r8, [r0], 4 | *(r0) = r8;
| r0 += 4;
0x00045ef4 blx 0x7dcc | fcn_00007dcc ();
0x00045ef8 ldrb r3, [r4] | r3 = *(r4);
0x00045efa cmp r3, 1 |
0x00045efc it eq |
| if (r3 == 1) {
0x00045efe moveq r4, sl | r4 = sl;
| goto label_41;
| }
| if (r3 == 1) {
| label_41:
0x00045f00 beq.w 0x45d5a | goto label_9;
| }
0x00045f04 mov r3, sl | r3 = sl;
0x00045f06 add sb, sl | sb += sl;
0x00045f08 cmp.w r8, 0 |
| if (r8 == 0) {
0x00045f0c beq 0x45f34 | goto label_42;
| }
| do {
0x00045f0e ldrb r1, [r3, 8] | r1 = *((r3 + 8));
0x00045f10 adds r3, 8 | r3 += 8;
0x00045f12 ldrb r2, [r3, 3] | r2 = *((r3 + 3));
0x00045f14 strb r1, [r3, 3] | *((r3 + 3)) = r1;
0x00045f16 strb r2, [r3] | *(r3) = r2;
0x00045f18 ldrb r1, [r3, 1] | r1 = *((r3 + 1));
0x00045f1a ldrb r2, [r3, 2] | r2 = *((r3 + 2));
0x00045f1c strb r1, [r3, 2] | *((r3 + 2)) = r1;
0x00045f1e strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x00045f20 ldrb r1, [r3, 4] | r1 = *((r3 + 4));
0x00045f22 ldrb r2, [r3, 7] | r2 = *((r3 + 7));
0x00045f24 strb r1, [r3, 7] | *((r3 + 7)) = r1;
0x00045f26 strb r2, [r3, 4] | *((r3 + 4)) = r2;
0x00045f28 ldrb r1, [r3, 5] | r1 = *((r3 + 5));
0x00045f2a ldrb r2, [r3, 6] | r2 = *((r3 + 6));
0x00045f2c strb r1, [r3, 6] | *((r3 + 6)) = r1;
0x00045f2e strb r2, [r3, 5] | *((r3 + 5)) = r2;
0x00045f30 cmp sb, r3 |
0x00045f32 bne 0x45f0e |
| } while (sb != r3);
| label_42:
0x00045f34 ldrb.w r3, [sl, 4] | r3 = *((sl + 4));
0x00045f38 mov r4, sl | r4 = sl;
0x00045f3a eor r3, r3, 1 | r3 ^= 1;
0x00045f3e strb.w r3, [sl, 4] | *((sl + 4)) = r3;
0x00045f42 b 0x45d5a | goto label_9;
| label_31:
0x00045f44 mov r0, r5 | r0 = r5;
0x00045f46 blx 0x856c | fcn_0000856c ();
0x00045f4a b 0x45d0c | goto label_1;
| label_27:
0x00045f4c cmp r1, 0x2f |
| if (r1 < 0x2f) {
0x00045f4e bls.w 0x45d82 | goto label_4;
| }
0x00045f52 ldr r1, [sp, 0xc] | r1 = var_ch;
| if (r1 != 0) {
0x00045f54 cbz r1, 0x45f76 |
0x00045f56 vstr d8, [sp, 0x10] | __asm ("vstr d8, [sp, 0x10]");
| if (r2 != 0) {
0x00045f5a cbz r2, 0x45f66 |
0x00045f5c mov r0, r4 | r0 = r4;
0x00045f5e movs r3, 1 | r3 = 1;
0x00045f60 add r1, sp, 0x10 | r1 += var_10h;
0x00045f62 bl 0xe94c | fcn_0000e94c (r0, r1, r2, r3);
| }
0x00045f66 vldr d16, [sp, 0x10] | __asm ("vldr d16, [sp, 0x10]");
0x00045f6a ldr r3, [sp, 0xc] | r3 = var_ch;
0x00045f6c vcvt.f32.f64 s15, d16 | __asm ("vcvt.f32.f64 s15, d16");
0x00045f70 vstr s15, [r3] | __asm ("vstr s15, [r3]");
0x00045f74 ldrb r3, [r5] | r3 = *(r5);
| }
| label_12:
0x00045f76 adds r6, 1 | r6++;
0x00045f78 ldr r1, [pc, 0xac] |
0x00045f7a cmp r6, 2 |
0x00045f7c it eq |
| if (r6 != 2) {
0x00045f7e ldreq r2, [sp, 0x1c] | r2 = var_1ch;
| }
0x00045f80 add r1, pc | r1 = 0x8bfac;
0x00045f82 itt eq |
| if (r6 != 2) {
0x00045f84 addeq r2, 1 | r2++;
| }
| if (r6 != 2) {
0x00045f86 streq r2, [sp, 0x1c] | var_1ch = r2;
| }
0x00045f88 adds r2, r1, r3 | r2 = r1 + r3;
0x00045f8a ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
| if (r2 == 0) {
0x00045f8e cbz r2, 0x45f9e | goto label_43;
| }
| do {
0x00045f90 ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
0x00045f94 adds r2, r1, r3 | r2 = r1 + r3;
0x00045f96 ldrb.w r2, [r2, 0x4e4] | r2 = *((r2 + 0x4e4));
0x00045f9a cmp r2, 0 |
0x00045f9c bne 0x45f90 |
| } while (r2 != 0);
| label_43:
0x00045f9e cmp r3, 0x2c |
0x00045fa0 add.w r4, r5, 1 | r4 = r5 + 1;
0x00045fa4 str r4, [sp, 0x18] | var_18h = r4;
| if (r3 == 0x2c) {
0x00045fa6 beq.w 0x45c60 | goto label_10;
| }
0x00045faa sub.w r3, r3, 0x5d | r3 -= 0x5d;
0x00045fae cmp r6, 1 |
0x00045fb0 clz r3, r3 | r3 &= r3;
0x00045fb4 lsr.w r3, r3, 5 | r3 >>= 5;
0x00045fb8 it le |
| if (r6 > 1) {
0x00045fba movle r3, 0 | r3 = 0;
| }
0x00045fbc cmp r3, 0 |
| if (r3 != 0) {
0x00045fbe bne.w 0x45d84 | goto label_11;
| }
0x00045fc2 ldr r6, [sp, 8] | r6 = var_8h;
0x00045fc4 movs r5, 1 | r5 = 1;
0x00045fc6 b 0x45d6a | goto label_3;
| label_28:
0x00045fc8 ldr r5, [sp, 0x18] | r5 = var_18h;
0x00045fca ldrb r3, [r5] | r3 = *(r5);
0x00045fcc b 0x45f76 | goto label_12;
| label_40:
0x00045fce cmp r6, 0 |
| if (r6 == 0) {
0x00045fd0 beq.w 0x45e90 | goto label_13;
| }
0x00045fd4 movs r3, 7 | r3 = 7;
0x00045fd6 str r3, [r6] | *(r6) = r3;
| if (r5 != 0) {
0x00045fd8 cbz r5, 0x45fee |
| label_38:
0x00045fda mov r0, r5 | r0 = r5;
0x00045fdc movs r4, 0 | r4 = 0;
0x00045fde blx 0x856c | fcn_0000856c ();
0x00045fe2 b 0x45d5a | goto label_9;
| label_39:
0x00045fe4 movs r3, 1 | r3 = 1;
0x00045fe6 ldr r6, [sp, 8] | r6 = var_8h;
0x00045fe8 movs r5, 7 | r5 = 7;
0x00045fea str r3, [sp, 0x24] | var_24h = r3;
0x00045fec b 0x45dae | goto label_14;
| }
0x00045fee mov r4, r5 | r4 = r5;
0x00045ff0 b 0x45d5e | goto label_15;
| label_30:
0x00045ff2 blx 0x7e8c | fcn_00007e8c ();
0x00045ff6 nop |
0x00045ff8 strh r0, [r6, 6] | *((r6 + 6)) = r0;
0x00045ffa movs r0, r1 | r0 = r1;
0x00045ffc lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00045ffe movs r0, r0 |
0x00046000 cmp r0, 0x32 |
0x00046002 movs r7, r0 | r7 = r0;
0x00046004 movs r7, 0xfa | r7 = 0xfa;
0x00046006 movs r7, r0 | r7 = r0;
0x00046008 movs r7, 0xf8 | r7 = 0xf8;
0x0004600a movs r7, r0 | r7 = r0;
0x0004600c movs r7, 0xf4 | r7 = 0xf4;
0x0004600e movs r7, r0 | r7 = r0;
0x00046010 movs r7, 0xb6 | r7 = 0xb6;
0x00046012 movs r7, r0 | r7 = r0;
0x00046014 eor r0, r4, 0x860000 | r0 = r4 ^ 0x860000;
0x00046018 ldrb r0, [r0, 0x1e] | r0 = *((r0 + 0x1e));
0x0004601a movs r0, r1 | r0 = r1;
0x0004601c movs r6, 0x8c | r6 = 0x8c;
0x0004601e movs r7, r0 | r7 = r0;
0x00046020 movs r6, 0x62 | r6 = 0x62;
0x00046022 movs r7, r0 | r7 = r0;
0x00046024 movs r6, 4 | r6 = 4;
0x00046026 movs r7, r0 | r7 = r0;
0x00046028 movs r4, 0x94 | r4 = 0x94;
0x0004602a movs r7, r0 | r7 = r0;
0x0004602c push {r4, r5, r6, lr} |
0x0004602e mov r4, r2 | r4 = r2;
0x00046030 ldr r1, [r2] | r1 = *(r2);
0x00046032 mov r6, r0 | r6 = r0;
0x00046034 movs r2, 0 | r2 = 0;
0x00046036 bl 0x45b8c | fcn_00045b8c (r0, r1, r2);
0x0004603a ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0004603c mov r5, r0 | r5 = r0;
0x0004603e movs r2, 0 | r2 = 0;
0x00046040 mov r0, r6 | r0 = r6;
0x00046042 bl 0x45b8c | fcn_00045b8c (r0, r1, r2);
0x00046046 cmp r5, 0 |
0x00046048 it ne |
| if (r5 != 0) {
0x0004604a cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x0004604c mov r4, r0 | r4 = r0;
0x0004604e bne 0x46060 |
| while (1) {
0x00046050 mov r0, r5 | r0 = r5;
0x00046052 blx 0x84f8 | fcn_000084f8 ();
0x00046056 mov r0, r4 | r0 = r4;
0x00046058 pop.w {r4, r5, r6, lr} |
0x0004605c b.w 0x84f4 | void (*0x84f4)() ();
0x00046060 mov r1, r0 | r1 = r0;
0x00046062 mov r0, r5 | r0 = r5;
0x00046064 bl 0x3e684 | r0 = fcn_0003e684 (r0, r1, r2);
0x00046068 cmp r0, 0 |
| if (r0 >= 0) {
0x0004606a blt 0x46094 |
0x0004606c cmp r0, 2 |
0x0004606e itett ne |
| if (r0 == 2) {
0x00046070 subne r0, 4 | r0 -= 4;
| }
| if (r0 != 2) {
0x00046072 moveq r1, 1 | r1 = 1;
| }
| if (r0 != 2) {
0x00046074 clzne r0, r0 | __asm ("clzne r0, r0");
| }
| if (r0 != 2) {
0x00046078 lsrs r0, r0, 5 | r0 >>= 5;
| }
0x0004607a it ne |
| if (r0 == r0) {
0x0004607c lslne r1, r0, 1 | r1 = r0 << 1;
| }
0x0004607e mov r0, r6 | r0 = r6;
0x00046080 blx 0x7f5c | usleep (r0);
0x00046084 mov r0, r5 | r0 = r5;
0x00046086 blx 0x84f8 | fcn_000084f8 ();
0x0004608a mov r0, r4 | r0 = r4;
0x0004608c pop.w {r4, r5, r6, lr} |
0x00046090 b.w 0x84f4 | void (*0x84f4)() ();
| }
0x00046094 mov r0, r6 | r0 = r6;
0x00046096 blx 0x856c | fcn_0000856c ();
0x0004609a b 0x46050 |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x469ac */
| #include <stdint.h>
|
; (fcn) fcn.000469ac () | void fcn_000469ac (int16_t arg1, int16_t arg2, uint32_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r3 = arg4;
0x000469ac push {r3, r4, r5, r6, r7, lr} |
0x000469ae mov r4, r0 | r4 = r0;
0x000469b0 ldrd r2, r3, [r0, 4] | __asm ("ldrd r2, r3, [r0, 4]");
0x000469b4 mov r6, r1 | r6 = r1;
0x000469b6 ldr r5, [r0, 0xc] | r5 = *((r0 + 0xc));
0x000469b8 cmp r2, r3 |
0x000469ba beq 0x469c8 |
| while (1) {
0x000469bc adds r2, r3, 1 | r2 = r3 + 1;
0x000469be movs r0, 0 | r0 = 0;
0x000469c0 str r2, [r4, 8] | *((r4 + 8)) = r2;
0x000469c2 str.w r6, [r5, r3, lsl 2] | __asm ("str.w r6, [r5, r3, lsl 2]");
0x000469c6 pop {r3, r4, r5, r6, r7, pc} |
| if (r2 != 0) {
0x000469c8 cbnz r2, 0x469e4 | goto label_1;
| }
0x000469ca mov.w r2, 0x100 | r2 = 0x100;
0x000469ce movs r7, 0x40 | r7 = 0x40;
| label_0:
0x000469d0 mov r0, r5 | r0 = r5;
0x000469d2 movs r3, 0 | r3 = 0;
0x000469d4 blx 0x8638 | r0 = fcn_00008638 ();
0x000469d8 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000469da cbz r0, 0x469ea | goto label_2;
| }
0x000469dc ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000469de str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x000469e0 str r7, [r4, 4] | *((r4 + 4)) = r7;
0x000469e2 b 0x469bc |
| }
| label_1:
0x000469e4 lsls r7, r2, 1 | r7 = r2 << 1;
0x000469e6 lsls r2, r2, 3 | r2 <<= 3;
0x000469e8 b 0x469d0 | goto label_0;
| label_2:
0x000469ea movs r0, 7 | r0 = 7;
0x000469ec 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/libsqlite3.so.0.8.6 @ 0x46a6c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00046a6c () | void fcn_00046a6c (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00046a6c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00046a70 mov r7, r0 | r7 = r0;
0x00046a72 sub sp, 0x14 |
0x00046a74 mov r0, r1 | r0 = r1;
0x00046a76 mov r4, r1 | r4 = r1;
0x00046a78 mov r8, r2 | r8 = r2;
0x00046a7a blx 0x8160 | r0 = fcn_00008160 ();
0x00046a7e mov r6, r0 | r6 = r0;
0x00046a80 cbnz r0, 0x46a88 |
| while (sb == 0) {
0x00046a82 add sp, 0x14 |
0x00046a84 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00046a88 ldr.w r2, [r7, 0x8c] | r2 = *((r7 + 0x8c));
0x00046a8c movs r3, 0 | r3 = 0;
0x00046a8e add r2, r0 | r2 += r0;
0x00046a90 ldr.w r0, [r7, 0x90] | r0 = *((r7 + 0x90));
0x00046a94 lsls r2, r2, 2 | r2 <<= 2;
0x00046a96 blx 0x8638 | r0 = fcn_00008638 ();
0x00046a9a mov sb, r0 | sb = r0;
0x00046a9c movs r0, 7 | r0 = 7;
0x00046a9e cmp.w sb, 0 |
0x00046aa2 beq 0x46a82 |
| }
0x00046aa4 add r6, r4 | r6 += r4;
0x00046aa6 ldr.w sl, [r7, 0x8c] | sl = *((r7 + 0x8c));
0x00046aaa cmp r4, r6 |
| if (r4 >= r6) {
0x00046aac bhs 0x46b56 | goto label_5;
| }
0x00046aae ldr r3, [pc, 0x134] |
0x00046ab0 movw fp, 0x61f8 |
0x00046ab4 movt fp, 3 | fp = 0x361f8;
0x00046ab8 add r3, pc | r3 = 0x8d6a2;
0x00046aba str r3, [sp, 4] | var_4h = r3;
0x00046abc movw r3, 0x9fdf |
0x00046ac0 movt r3, 0x802 | r3 = 0x8029fdf;
0x00046ac4 strd r3, fp, [sp, 8] | __asm ("strd r3, fp, [var_8h]");
0x00046ac8 mov fp, r7 |
0x00046aca b 0x46ad0 |
| while (r5 < 0x7f) {
| label_0:
0x00046acc cmp r4, r6 |
| if (r4 >= r6) {
0x00046ace bhs 0x46b54 | goto label_6;
| }
| label_1:
0x00046ad0 ldrb r5, [r4], 1 | r5 = *(r4);
| r4++;
0x00046ad4 cmp r5, 0xbf |
| if (r5 > 0xbf) {
0x00046ad6 bhi 0x46b62 | goto label_7;
| }
0x00046ad8 cmp r5, 0x7f |
0x00046ada it ls |
| if (r5 > 0x7f) {
0x00046adc strbls r8, [fp, r5] | *((fp + r5)) = r8;
| }
0x00046ae0 bls 0x46acc |
| }
| label_3:
0x00046ae2 mov r0, r5 | r0 = r5;
0x00046ae4 bl 0xfe5c | fcn_0000fe5c (r0);
| label_2:
0x00046ae8 add r0, fp | r0 += fp;
0x00046aea ldrb.w r2, [r0, 0x94] | r2 = *((r0 + 0x94));
0x00046aee cmp r2, r8 |
| if (r2 == r8) {
0x00046af0 beq 0x46acc | goto label_0;
| }
0x00046af2 sub.w r1, r5, 0x300 | r1 = r5 - 0x300;
0x00046af6 cmp r1, 0x31 |
| if (r1 > 0x31) {
0x00046af8 bhi 0x46b18 | goto label_8;
| }
0x00046afa cmp.w r5, 0x320 |
0x00046afe itete lt |
| if (r5 >= 0x320) {
0x00046b00 movlt r2, 1 | r2 = 1;
| }
| if (r5 < 0x320) {
0x00046b02 movge r2, 1 | r2 = 1;
| }
| if (r5 >= 0x320) {
0x00046b04 ldrlt r3, [sp, 8] | r3 = var_8h;
| }
| if (r5 < 0x320) {
0x00046b06 subge r1, r5, 0x320 | r1 = r5 - 0x320;
| }
0x00046b0a itet ge |
| if (r5 < 0x320) {
0x00046b0c ldrge r3, [sp, 0xc] | r3 = var_ch;
| }
| if (r5 >= 0x320) {
0x00046b0e lsllt r2, r1 | r2 <<= r1;
| }
| if (r5 < 0x320) {
0x00046b10 lslge r2, r1 | r2 <<= r1;
| }
0x00046b12 ands r2, r3 | r2 &= r3;
0x00046b14 cmp r2, 0 |
| if (r2 != 0) {
0x00046b16 bne 0x46acc | goto label_0;
| }
| label_8:
0x00046b18 cmp.w sl, 0 |
| if (sl <= 0) {
0x00046b1c ble 0x46bda | goto label_9;
| }
0x00046b1e mov r2, sb | r2 = sb;
0x00046b20 mov.w ip, 0 |
0x00046b24 b 0x46b2c |
| while (r1 < r5) {
0x00046b26 cmp sl, r3 |
| if (sl == r3) {
0x00046b28 beq 0x46bbe | goto label_10;
| }
0x00046b2a mov ip, r3 |
0x00046b2c mov r7, r2 | r7 = r2;
0x00046b2e ldr r1, [r2], 4 | r1 = *(r2);
| r2 += 4;
0x00046b32 add.w r3, ip, 1 | r3 = ip + 1;
0x00046b36 cmp r1, r5 |
0x00046b38 bls 0x46b26 |
| }
0x00046b3a lsls r0, r3, 2 | r0 = r3 << 2;
0x00046b3c sub.w r2, sl, ip | r2 = sl - ip;
| label_4:
0x00046b40 lsls r2, r2, 2 | r2 <<= 2;
0x00046b42 add r0, sb | r0 += sb;
0x00046b44 mov r1, r7 | r1 = r7;
0x00046b46 blx 0x7d44 | fcn_00007d44 ();
0x00046b4a cmp r4, r6 |
0x00046b4c add.w sl, sl, 1 | sl++;
0x00046b50 str r5, [r7] | *(r7) = r5;
| if (r4 <= r6) {
0x00046b52 blo 0x46ad0 | goto label_1;
| }
| label_6:
0x00046b54 mov r7, fp | r7 = fp;
| label_5:
0x00046b56 movs r0, 0 | r0 = 0;
0x00046b58 strd sl, sb, [r7, 0x8c] | __asm ("strd sl, sb, [r7, 0x8c]");
0x00046b5c add sp, 0x14 |
0x00046b5e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00046b62 ldr r3, [sp, 4] | r3 = var_4h;
0x00046b64 cmp r6, r4 |
0x00046b66 add r5, r3 | r5 += r3;
0x00046b68 ldrb r5, [r5, -0xc0] | r5 = *((r5 - 0xc0));
| if (r6 == r4) {
0x00046b6c beq 0x46bce | goto label_11;
| }
0x00046b6e mov r2, r4 | r2 = r4;
0x00046b70 b 0x46b7c |
| while (r1 == 0x80) {
0x00046b72 cmp r6, r2 |
0x00046b74 add.w r5, r3, r5, lsl 6 | r5 = r3 + (r5 << 6);
0x00046b78 mov r4, r2 | r4 = r2;
| if (r6 == r2) {
0x00046b7a beq 0x46b8e | goto label_12;
| }
0x00046b7c mov r4, r2 | r4 = r2;
0x00046b7e ldrb r3, [r2], 1 | r3 = *(r2);
| r2++;
0x00046b82 and r1, r3, 0xc0 | r1 = r3 & 0xc0;
0x00046b86 and r3, r3, 0x3f | r3 &= 0x3f;
0x00046b8a cmp r1, 0x80 |
0x00046b8c beq 0x46b72 |
| }
| label_12:
0x00046b8e cmp r5, 0x7f |
| if (r5 < 0x7f) {
0x00046b90 bls 0x46bb8 | goto label_13;
| }
0x00046b92 bic r2, r5, 0x7f8 | r2 = BIT_MASK (r5, 0x7f8);
0x00046b96 bic r2, r2, 7 | r2 = BIT_MASK (r2, 7);
0x00046b9a cmp.w r2, 0xd800 |
| if (r2 == fcn.00000004) {
0x00046b9e beq 0x46bb8 | goto label_13;
| }
0x00046ba0 bic r1, r5, 1 | r1 = BIT_MASK (r5, 1);
0x00046ba4 movw r2, 0xfffe | r2 = 0xfffe;
0x00046ba8 cmp r1, r2 |
| if (r1 == r2) {
0x00046baa beq 0x46bb8 | goto label_13;
| }
0x00046bac cmp.w r5, 0x100000 |
0x00046bb0 it hs |
| if (r5 >= 0x100000) {
0x00046bb2 movhs r0, 0 | r0 = 0;
| goto label_14;
| }
| if (r5 >= 0x100000) {
| label_14:
0x00046bb4 bhs 0x46ae8 | goto label_2;
| }
0x00046bb6 b 0x46ae2 | goto label_3;
| label_13:
0x00046bb8 movw r5, 0xfffd | r5 = 0xfffd;
0x00046bbc b 0x46ae2 | goto label_3;
| label_10:
0x00046bbe add.w r0, ip, 2 | r0 = ip + 2;
0x00046bc2 movs r2, 0 | r2 = 0;
0x00046bc4 lsls r0, r0, 2 | r0 <<= 2;
0x00046bc6 subs r1, r0, 4 | r1 = r0 - 4;
0x00046bc8 add.w r7, sb, r1 | r7 = sb + r1;
0x00046bcc b 0x46b40 | goto label_4;
| label_11:
0x00046bce movw r2, 0xfffd | r2 = 0xfffd;
0x00046bd2 cmp r5, 0x7f |
0x00046bd4 it ls |
| if (r5 > 0x7f) {
0x00046bd6 movls r5, r2 | r5 = r2;
| }
0x00046bd8 b 0x46ae2 | goto label_3;
| label_9:
0x00046bda mov r2, sl | r2 = sl;
0x00046bdc mov r7, sb | r7 = sb;
0x00046bde movs r0, 4 | r0 = 4;
0x00046be0 b 0x46b40 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x47184 */
| #include <stdint.h>
|
; (fcn) fcn.00047184 () | void fcn_00047184 (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00047184 ldr r3, [r1, 0x18] | r3 = *((r1 + 0x18));
0x00047186 ldr r2, [r3] | r2 = *(r3);
0x00047188 ldr r3, [r2, 0x30] | r3 = *((r2 + 0x30));
0x0004718a cmp r3, 1 |
| if (r3 == 1) {
0x0004718c beq 0x471a6 | goto label_1;
| }
0x0004718e push {r4, r5, lr} |
0x00047190 mov r4, r0 | r4 = r0;
0x00047192 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00047194 sub sp, 0xc |
| if (r0 == 0) {
0x00047196 cbz r0, 0x471be | goto label_2;
| }
0x00047198 ldr r0, [r0] | r0 = *(r0);
| if (r0 != 0) {
0x0004719a cbnz r0, 0x471ae | goto label_3;
| }
0x0004719c ldr r3, [pc, 0x74] |
0x0004719e add r3, pc | r3 = 0x8e3b6;
0x000471a0 str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
| do {
| label_0:
0x000471a2 add sp, 0xc |
0x000471a4 pop {r4, r5, pc} |
| label_1:
0x000471a6 ldr r3, [pc, 0x70] |
0x000471a8 add r3, pc | r3 = 0x8e3c6;
0x000471aa str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
0x000471ac bx lr | return;
| if (r3 == 0) {
| label_3:
0x000471ae cbz r3, 0x471c8 | goto label_4;
| }
0x000471b0 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x000471b2 cmp r2, 0x64 |
| if (r2 <= 0x64) {
0x000471b4 ble 0x471d2 | goto label_5;
| }
0x000471b6 ldr r3, [pc, 0x64] |
0x000471b8 add r3, pc | r3 = 0x8e3da;
0x000471ba str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
0x000471bc b 0x471a2 |
| } while (1);
| label_2:
0x000471be ldr r3, [pc, 0x60] |
0x000471c0 add r3, pc | r3 = 0x8e3e6;
0x000471c2 str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
0x000471c4 add sp, 0xc |
0x000471c6 pop {r4, r5, pc} |
| label_4:
0x000471c8 ldr r3, [pc, 0x58] |
0x000471ca add r3, pc | r3 = 0x8e3f2;
0x000471cc str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
0x000471ce add sp, 0xc |
0x000471d0 pop {r4, r5, pc} |
| label_5:
0x000471d2 ldr r5, [r1, 0x24] | r5 = *((r1 + 0x24));
0x000471d4 ldr r3, [pc, 0x50] |
0x000471d6 cmp r2, r5 |
0x000471d8 add r3, pc | r3 = 0x8e404;
0x000471da str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
| if (r2 < r5) {
0x000471dc bls 0x471a2 | goto label_0;
| }
0x000471de cmp r5, 0 |
0x000471e0 it eq |
| if (r5 != 0) {
0x000471e2 moveq r5, 0x40 | r5 = 0x40;
| }
0x000471e4 asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x000471e6 cmp r5, r2 |
0x000471e8 sbcs r0, r3, 0 | __asm ("sbcs r0, r3, 0");
| if (r5 >= r2) {
0x000471ec bhs 0x471fa | goto label_6;
| }
| do {
0x000471ee adds r5, r5, r5 | r5 += r5;
0x000471f0 adcs r3, r3 | __asm ("adcs r3, r3");
0x000471f2 cmp r5, r2 |
0x000471f4 sbcs r0, r3, 0 | __asm ("sbcs r0, r3, 0");
0x000471f8 blo 0x471ee |
| } while (r5 <= r2);
| label_6:
0x000471fa ldr r0, [r1, 0x1c] | r0 = *((r1 + 0x1c));
0x000471fc mov r2, r5 | r2 = r5;
0x000471fe str r1, [sp, 4] | var_4h = r1;
0x00047200 blx 0x8638 | fcn_00008638 ();
0x00047204 ldr r1, [sp, 4] | r1 = var_4h;
| if (r0 != 0) {
0x00047206 cbz r0, 0x4720e |
0x00047208 str r5, [r1, 0x24] | *((r1 + 0x24)) = r5;
0x0004720a str r0, [r1, 0x1c] | *((r1 + 0x1c)) = r0;
0x0004720c b 0x471a2 | goto label_0;
| }
0x0004720e movs r3, 7 | r3 = 7;
0x00047210 str r3, [r4] | *(r4) = r3;
0x00047212 b 0x471a2 | 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/libsqlite3.so.0.8.6 @ 0x4722c */
| #include <stdint.h>
|
; (fcn) fcn.0004722c () | void fcn_0004722c (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0004722c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00047230 mov sl, r0 | sl = r0;
0x00047232 ldr r2, [r0] | r2 = *(r0);
0x00047234 mov r4, r1 | r4 = r1;
0x00047236 movs r6, 0 | r6 = 0;
0x00047238 ldr r0, [pc, 0x130] |
0x0004723a ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x0004723c ldr r5, [r1, 0x18] | r5 = *((r1 + 0x18));
0x0004723e ldr r1, [pc, 0x130] | r1 = *(0x47372);
0x00047240 add r0, pc | r0 = 0x8e5b0;
0x00047242 vpush {d8} | __asm ("vpush {d8}");
0x00047246 sub sp, 0x24 |
0x00047248 ldr.w sb, [r2, 0x30] | sb = *((r2 + 0x30));
0x0004724c ldr r1, [r0, r1] |
0x0004724e ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00047250 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x00047254 ldr r1, [r1] | r1 = *(0x8e5b0);
0x00047256 str r1, [sp, 0x1c] | var_1ch = r1;
0x00047258 mov.w r1, 0 | r1 = 0;
0x0004725c ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
0x0004725e ldr r7, [r3] | r7 = *(r3);
0x00047260 add r3, sp, 0xc | r3 += var_ch;
0x00047262 str r3, [sp, 4] | var_4h = r3;
0x00047264 cmp r1, r2 |
0x00047266 vstr d8, [sp, 0x10] | __asm ("vstr d8, [sp, 0x10]");
0x0004726a it ge |
| if (r1 < r2) {
0x0004726c movge r1, r2 | r1 = r2;
| }
0x0004726e cmp.w sb, 1 |
0x00047272 mov r8, r1 | r8 = r1;
| if (sb != 1) {
0x00047274 bne 0x472d2 | goto label_3;
| }
| do {
0x00047276 cmp r5, r8 |
| if (r5 >= r8) {
0x00047278 bge 0x472ec | goto label_4;
| }
0x0004727a ldrb r3, [r7, r5] | r3 = *((r7 + r5));
0x0004727c adds r0, r7, r5 | r0 = r7 + r5;
| if (r3 == 0) {
0x0004727e cbnz r3, 0x47296 |
0x00047280 adds r3, r5, 1 | r3 = r5 + 1;
0x00047282 cmp r3, r8 |
| if (r3 >= r8) {
0x00047284 bge 0x472ec | goto label_4;
| }
0x00047286 ldrb r2, [r7, r3] | r2 = *((r7 + r3));
0x00047288 adds r0, r7, r3 | r0 = r7 + r3;
0x0004728a adds r5, 2 | r5 += 2;
0x0004728c cmp r2, 0 |
| if (r2 != 0) {
0x0004728e bne 0x47362 | goto label_5;
| }
| label_0:
0x00047290 cmp r5, r8 |
| if (r5 >= r8) {
0x00047292 bge 0x472ec | goto label_4;
| }
0x00047294 adds r0, r7, r5 | r0 = r7 + r5;
| }
| label_2:
0x00047296 add r1, sp, 0x10 | r1 += var_10h;
0x00047298 bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x0004729c ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x0004729e add r5, r0 | r5 += r0;
0x000472a0 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000472a2 ldr r2, [r4, 0x54] | r2 = *((r4 + 0x54));
0x000472a4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000472a6 adds r3, r3, r1 | r3 += r1;
0x000472a8 ldr r1, [r4, 0x38] | r1 = *((r4 + 0x38));
0x000472aa adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x000472ae ldr r0, [r4, 0x3c] | r0 = *((r4 + 0x3c));
0x000472b0 cmp r1, r6 |
0x000472b2 strd r3, r2, [r4, 0x50] | __asm ("strd r3, r2, [r4, 0x50]");
| if (r1 <= r6) {
0x000472b6 ble 0x4731c | goto label_6;
| }
| label_1:
0x000472b8 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x000472ba asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x000472bc cmp.w sb, 1 |
0x000472c0 str.w r2, [r0, r6, lsl 2] | __asm ("str.w r2, [r0, r6, lsl 2]");
0x000472c4 add.w r6, r6, 1 | r6++;
0x000472c8 strd r5, r3, [r4, 0x18] | __asm ("strd r5, r3, [r4, 0x18]");
0x000472cc vstr d8, [sp, 0x10] | __asm ("vstr d8, [sp, 0x10]");
0x000472d0 beq 0x47276 |
| } while (sb == 1);
| label_3:
0x000472d2 ldrb r3, [r7, r5] | r3 = *((r7 + r5));
0x000472d4 adds r0, r7, r5 | r0 = r7 + r5;
0x000472d6 lsls r2, r3, 0x18 | r2 = r3 << 0x18;
0x000472d8 str r3, [sp, 0xc] | var_ch = r3;
0x000472da it pl |
| if (r2 < r3) {
0x000472dc movpl r0, 1 | r0 = 1;
| }
0x000472de bmi 0x47332 |
| while (1) {
0x000472e0 add.w r3, r3, r3, lsr 31 | r3 += (r3 >> 31);
0x000472e4 add r0, r5 | r0 += r5;
0x000472e6 add.w r5, r0, r3, asr 1 | r5 = r0 + (r3 >> 1);
0x000472ea b 0x47290 | goto label_0;
| label_4:
0x000472ec ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x000472f0 str r6, [r4, 0x34] | *((r4 + 0x34)) = r6;
| if (r3 != 0) {
0x000472f2 cbnz r3, 0x47344 | goto label_7;
| }
0x000472f4 ldr r2, [pc, 0x7c] |
0x000472f6 ldr r3, [pc, 0x78] | r3 = *(0x47372);
0x000472f8 add r2, pc | r2 = 0x8e670;
0x000472fa ldr r3, [r2, r3] | r3 = *(0x8e670);
0x000472fc ldr r2, [r3] | r2 = *(0x8e670);
0x000472fe ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00047300 eors r2, r3 | r2 ^= r3;
0x00047302 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00047306 bne 0x47366 | goto label_8;
| }
0x00047308 ldr.w r0, [sl] | r0 = *(sl);
0x0004730c mov r1, r4 | r1 = r4;
0x0004730e add sp, 0x24 |
0x00047310 vpop {d8} | __asm ("vpop {d8}");
0x00047314 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00047318 b.w 0x11120 | void (*0x11120)() ();
| label_6:
0x0004731c add.w fp, r1, 8 |
0x00047320 movs r3, 0 | r3 = 0;
0x00047322 lsl.w r2, fp, 2 | r2 = fp << 2;
0x00047326 blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 == 0) {
0x0004732a cbz r0, 0x4733c | goto label_9;
| }
0x0004732c strd fp, r0, [r4, 0x38] | __asm ("strd fp, r0, [r4, 0x38]");
0x00047330 b 0x472b8 | goto label_1;
0x00047332 ldr r1, [sp, 4] | r1 = var_4h;
0x00047334 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00047338 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004733a b 0x472e0 |
| }
| label_9:
0x0004733c movs r3, 7 | r3 = 7;
0x0004733e str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00047342 str r6, [r4, 0x34] | *((r4 + 0x34)) = r6;
| label_7:
0x00047344 ldr r2, [pc, 0x30] |
0x00047346 ldr r3, [pc, 0x28] | r3 = *(0x47372);
0x00047348 add r2, pc | r2 = 0x8e6c4;
0x0004734a ldr r3, [r2, r3] | r3 = *(0x8e6c4);
0x0004734c ldr r2, [r3] | r2 = *(0x8e6c4);
0x0004734e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00047350 eors r2, r3 | r2 ^= r3;
0x00047352 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00047356 bne 0x47366 |
0x00047358 add sp, 0x24 |
0x0004735a vpop {d8} | __asm ("vpop {d8}");
0x0004735e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00047362 mov r5, r3 | r5 = r3;
0x00047364 b 0x47296 | goto label_2;
| }
| label_8:
0x00047366 blx 0x7e8c | fcn_00007e8c ();
0x0004736a nop |
0x0004736c ldr r0, [r2, 0x24] | r0 = *((r2 + 0x24));
0x0004736e movs r0, r1 | r0 = r1;
0x00047370 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00047372 movs r0, r0 |
0x00047374 ldr r0, [r3, 0x18] | r0 = *((r3 + 0x18));
0x00047376 movs r0, r1 | r0 = r1;
0x00047378 ldr r0, [r1, 0x14] | r0 = *((r1 + 0x14));
0x0004737a movs r0, r1 | r0 = r1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x4737c */
| #include <stdint.h>
|
; (fcn) fcn.0004737c () | void fcn_0004737c (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004737c invalid |
0x00047380 ldr r3, [r1] | r3 = *(r1);
0x00047382 mov r6, r0 | r6 = r0;
0x00047384 mov r5, r1 | r5 = r1;
0x00047386 ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x00047388 mov r0, r3 | r0 = r3;
0x0004738a mov r3, r7 | r3 = r7;
0x0004738c adds r2, 1 | r2++;
0x0004738e add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00047392 lsls r4, r2, 2 | r4 = r2 << 2;
0x00047394 add.w r2, r4, 0x28 | r2 = r4 + 0x28;
0x00047398 blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 != 0) {
0x0004739c cbz r0, 0x473b2 |
0x0004739e adds r4, 0xc | r4 += 0xc;
0x000473a0 adds r3, r0, r4 | r3 = r0 + r4;
0x000473a2 str r7, [r0, r4] | *((r0 + r4)) = r7;
0x000473a4 str r7, [r3, 4] | *((r3 + 4)) = r7;
0x000473a6 str r7, [r3, 8] | *((r3 + 8)) = r7;
0x000473a8 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x000473aa adds r3, 1 | r3++;
0x000473ac str r3, [r0, 0x14] | *((r0 + 0x14)) = r3;
0x000473ae str r0, [r5] | *(r5) = r0;
0x000473b0 pop {r3, r4, r5, r6, r7, pc} |
| }
0x000473b2 movs r3, 7 | r3 = 7;
0x000473b4 str r3, [r6] | *(r6) = r3;
0x000473b6 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/libsqlite3.so.0.8.6 @ 0x474c0 */
| #include <stdint.h>
|
; (fcn) fcn.000474c0 () | void fcn_000474c0 (int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, int16_t arg1, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r2 = arg3;
| r3 = arg4;
0x000474c0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000474c4 sub sp, 0x24 |
0x000474c6 ldrd r6, r7, [sp, 0x54] | __asm ("ldrd r6, r7, [arg_54h]");
0x000474ca strd r2, r3, [sp, 4] | __asm ("strd r2, r3, [var_4h]");
0x000474ce ldr r2, [r0] | r2 = *(r0);
0x000474d0 subs r3, r7, 1 | r3 = r7 - 1;
0x000474d2 ldrb.w r5, [sp, 0x50] | r5 = *(arg_50h);
0x000474d6 ldr.w r8, [r0, 0xc] | r8 = *(arg_48hxc);
0x000474da str r0, [sp] | *(sp) = r0;
0x000474dc str r2, [sp, 0xc] | var_ch = r2;
0x000474de str r3, [sp, 0x14] | var_14h = r3;
| if (r3 < r7) {
0x000474e0 bmi.w 0x4787a | goto label_13;
| }
0x000474e4 adds r1, r6, r7 | r1 = r6 + r7;
0x000474e6 movs r2, 0xd | r2 = 0xd;
| do {
0x000474e8 ldrb r3, [r1, -0x1]! | r3 = *((r1 -= 0x1));
0x000474ec cmp r6, r1 |
0x000474ee eor.w r3, r3, r2, lsl 3 | r3 ^= (r2 << 3);
0x000474f2 eor.w r2, r2, r3 | r2 ^= r3;
0x000474f6 bne 0x474e8 |
| } while (r6 != r1);
0x000474f8 lsls r3, r2, 3 | r3 = r2 << 3;
| label_9:
0x000474fa eors r2, r3 | r2 ^= r3;
0x000474fc eor.w r0, r5, r2 | r0 = r5 ^ r2;
0x00047500 mov r1, r8 | r1 = r8;
0x00047502 bl 0xab8dc | fcn_000ab8dc (r0, r1, r2);
0x00047506 ldr r3, [sp] | r3 = *(sp);
0x00047508 lsl.w fp, r1, 2 |
0x0004750c mov sl, r1 | sl = r1;
0x0004750e ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00047510 ldr.w r4, [r3, r1, lsl 2] | offset_0 = r1 << 2;
| r4 = *((r3 + offset_0));
0x00047514 str r3, [sp, 0x10] | var_10h = r3;
| if (r4 != 0) {
0x00047516 cbnz r4, 0x47520 | goto label_14;
| }
0x00047518 b 0x47612 | goto label_15;
| do {
| label_0:
0x0004751a ldr r4, [r4] | r4 = *(r4);
0x0004751c cmp r4, 0 |
| if (r4 == 0) {
0x0004751e beq 0x47612 | goto label_15;
| }
| label_14:
0x00047520 ldrb.w r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00047524 cmp r3, r5 |
0x00047526 bne 0x4751a |
| } while (r3 != r5);
0x00047528 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0004752a cmp r3, r7 |
| if (r3 != r7) {
0x0004752c bne 0x4751a | goto label_0;
| }
0x0004752e add.w r0, r4, 0x29 | r0 = r4 + 0x29;
0x00047532 mov r2, r7 | r2 = r7;
0x00047534 mov r1, r6 | r1 = r6;
0x00047536 blx 0x7e40 | r0 = fcn_00007e40 ();
0x0004753a cmp r0, 0 |
| if (r0 != 0) {
0x0004753c bne 0x4751a | goto label_0;
| }
0x0004753e ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x00047540 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x00047542 subs r2, r5, r1 | r2 = r5 - r1;
0x00047544 cmp r2, 0x15 |
| if (r2 <= 0x15) {
0x00047546 ble.w 0x4774c | goto label_16;
| }
| label_1:
0x0004754a ldrd r6, r7, [r4, 0x20] | __asm ("ldrd r6, r7, [r4, 0x20]");
0x0004754e rsbs r5, r1, 0 | r5 = r1 - ;
0x00047550 ldrd r3, r2, [sp, 4] | __asm ("ldrd r3, r2, [var_4h]");
0x00047554 cmp r7, r2 |
0x00047556 it eq |
| if (r7 == r2) {
0x00047558 cmpeq r6, r3 | __asm ("cmpeq r6, r3");
| }
| if (r7 == r2) {
0x0004755a beq.w 0x476d4 | goto label_17;
| }
0x0004755e subs r6, r3, r6 | r6 = r3 - r6;
0x00047560 mov r1, r4 | r1 = r4;
0x00047562 sbc.w r7, r2, r7 | __asm ("sbc.w r7, r2, r7");
0x00047566 ldr r0, [sp] | r0 = *(sp);
0x00047568 movs r2, 0 | r2 = 0;
0x0004756a bl 0x1ef60 | fcn_0001ef60 (r0, r1, r2);
0x0004756e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00047570 cmp r6, 0x80 |
0x00047572 sbcs r2, r7, 0 | __asm ("sbcs r2, r7, 0");
0x00047576 it lo |
| if (r6 >= 0x80) {
0x00047578 movlo r1, 1 | r1 = 1;
| }
0x0004757a add.w r0, r4, r3 | r0 = r4 + r3;
0x0004757e it lo |
| if (r6 >= 0x80) {
0x00047580 strblo r6, [r4, r3] | *((r4 + r3)) = r6;
| }
| if (r6 > 0x80) {
0x00047582 blo 0x4759a |
0x00047584 cmp.w r6, 0x4000 |
0x00047588 sbcs r3, r7, 0 | __asm ("sbcs r3, r7, 0");
| if (r6 <= 0x4000) {
0x0004758c blo.w 0x47856 | goto label_18;
| }
0x00047590 mov r2, r6 | r2 = r6;
0x00047592 mov r3, r7 | r3 = r7;
0x00047594 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x00047598 mov r1, r0 | r1 = r0;
| }
| label_5:
0x0004759a ldr r3, [sp, 4] | r3 = var_4h;
0x0004759c str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0004759e ldr r3, [sp, 8] | r3 = var_8h;
0x000475a0 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x000475a2 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000475a4 add r1, r3 | r1 += r3;
0x000475a6 ldr r3, [sp] | r3 = *(sp);
0x000475a8 strd r1, r1, [r4, 0xc] | __asm ("strd r1, r1, [r4, 0xc]");
0x000475ac ldr r3, [r3] | r3 = *(r3);
0x000475ae cmp r3, 1 |
| if (r3 == 1) {
0x000475b0 beq.w 0x4777e | goto label_19;
| }
0x000475b4 movs r0, 0 | r0 = 0;
0x000475b6 subs r2, r3, 0 | r2 = r3 - 0;
0x000475b8 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x000475ba it ne |
| if (r2 == r3) {
0x000475bc movne r2, 1 | r2 = 1;
| }
0x000475be ldr r0, [sp, 0x48] | r0 = *(arg_48h);
0x000475c0 adds r1, 1 | r1++;
0x000475c2 rsbs r2, r2, 0 | r2 -= ;
0x000475c4 str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x000475c6 strh r2, [r4, 0x1a] | *((r4 + 0x1a)) = r2;
0x000475c8 cmp r0, 0 |
| if (r0 < 0) {
0x000475ca blt.w 0x47784 | goto label_20;
| }
0x000475ce ldr r0, [sp, 0x48] | r0 = *(arg_48h);
0x000475d0 cmp r0, r2 |
0x000475d2 it ne |
| if (r0 == r2) {
0x000475d4 movne r6, 1 | r6 = 1;
| }
0x000475d6 bne.w 0x476f6 |
| while (1) {
| label_8:
0x000475da ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000475dc adds r0, r4, r1 | r0 = r4 + r1;
0x000475de ldr r2, [sp, 0x4c] | r2 = *(arg_4ch);
0x000475e0 subs r3, r2, r3 | r3 = r2 - r3;
0x000475e2 adds r2, r3, 2 | r2 = r3 + 2;
0x000475e4 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000475e6 cmp r2, 0x80 |
0x000475e8 sbcs r6, r3, 0 | __asm ("sbcs r6, r3, 0");
0x000475ec itt lo |
| if (r2 >= 0x80) {
0x000475ee strblo r2, [r4, r1] | *((r4 + r1)) = r2;
| }
| if (r2 >= 0x80) {
0x000475f0 movlo r1, 1 | r1 = 1;
| }
| if (r2 > 0x80) {
0x000475f2 blo 0x47606 |
0x000475f4 cmp.w r2, 0x4000 |
0x000475f8 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x4000) {
0x000475fc blo.w 0x47888 | goto label_21;
| }
0x00047600 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x00047604 mov r1, r0 | r1 = r0;
| }
| label_10:
0x00047606 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00047608 ldr r2, [sp, 0x4c] | r2 = *(arg_4ch);
0x0004760a add r1, r3 | r1 += r3;
0x0004760c str r2, [r4, 0x1c] | *((r4 + 0x1c)) = r2;
0x0004760e str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x00047610 b 0x47788 | goto label_6;
| label_15:
0x00047612 ldr r3, [sp] | r3 = *(sp);
0x00047614 add.w r2, r7, 0x6a | r2 = r7 + 0x6a;
0x00047618 cmp r2, 0x7f |
0x0004761a it ls |
| if (r2 > 0x7f) {
0x0004761c movls r2, 0x80 | r2 = 0x80;
| }
0x0004761e ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00047620 str r2, [sp, 0x18] | var_18h = r2;
0x00047622 cmp.w r8, r3, lsl 1 |
| if (r8 <= r3) {
0x00047626 ble.w 0x4779c | goto label_22;
| }
| label_4:
0x0004762a ldr.w r8, [sp, 0x18] | r8 = var_18h;
0x0004762e movs r1, 0 | r1 = 0;
0x00047630 mov r0, r8 | r0 = r8;
0x00047632 blx 0x7f18 | r0 = fcn_00007f18 ();
0x00047636 mov r4, r0 | r4 = r0;
0x00047638 cmp r0, 0 |
| if (r0 == 0) {
0x0004763a beq.w 0x47880 | goto label_23;
| }
0x0004763e movs r2, 0x28 | r2 = 0x28;
0x00047640 movs r1, 0 | r1 = 0;
0x00047642 blx 0x8264 | fcn_00008264 ();
0x00047646 mov r2, r7 | r2 = r7;
0x00047648 mov r1, r6 | r1 = r6;
0x0004764a add.w r0, r4, 0x29 | r0 = r4 + 0x29;
0x0004764e str.w r8, [r4, 8] | __asm ("str.w r8, [r4, 8]");
0x00047652 strb.w r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x00047656 blx 0x7dcc | fcn_00007dcc ();
0x0004765a ldr r0, [sp] | r0 = *(sp);
0x0004765c adds r3, r4, r7 | r3 = r4 + r7;
0x0004765e movs r2, 0 | r2 = 0;
0x00047660 str r7, [r4, 0x14] | *((r4 + 0x14)) = r7;
0x00047662 strb.w r2, [r3, 0x29] | *((r3 + 0x29)) = r2;
0x00047666 adds r7, 0x2a | r7 += 0x2a;
0x00047668 ldr r2, [r0, 0x14] | r2 = *((r0 + 0x14));
0x0004766a ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0004766c str r7, [r4, 0x10] | *((r4 + 0x10)) = r7;
0x0004766e ldr.w r1, [r2, sl, lsl 2] | offset_1 = sl << 2;
| r1 = *((r2 + offset_1));
0x00047672 adds r3, 1 | r3++;
0x00047674 str r1, [r4] | *(r4) = r1;
0x00047676 str.w r4, [r2, sl, lsl 2] | __asm ("str.w r4, [r2, sl, lsl 2]");
0x0004767a str r3, [r0, 8] | *((r0 + 8)) = r3;
0x0004767c adds r0, r4, r7 | r0 = r4 + r7;
0x0004767e ldr r3, [sp, 4] | r3 = var_4h;
0x00047680 cmp r3, 0x80 |
0x00047682 ldr r3, [sp, 8] | r3 = var_8h;
0x00047684 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x00047688 ldr r3, [sp, 4] | r3 = var_4h;
0x0004768a itt lo |
| if (r3 >= 0x80) {
0x0004768c movlo r1, 1 | r1 = 1;
| }
| if (r3 >= 0x80) {
0x0004768e strblo r3, [r4, r7] | *((r4 + r7)) = r3;
| }
| if (r3 > 0x80) {
0x00047690 blo 0x476aa |
0x00047692 cmp.w r3, 0x4000 |
0x00047696 ldrd r2, r3, [sp, 4] | __asm ("ldrd r2, r3, [var_4h]");
0x0004769a sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r3 <= 0x4000) {
0x0004769e blo.w 0x478b0 | goto label_24;
| }
0x000476a2 ldr r3, [sp, 8] | r3 = var_8h;
0x000476a4 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x000476a8 mov r1, r0 | r1 = r0;
| }
| label_12:
0x000476aa ldr r3, [sp, 4] | r3 = var_4h;
0x000476ac str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x000476ae ldr r3, [sp, 8] | r3 = var_8h;
0x000476b0 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x000476b2 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000476b4 add r1, r3 | r1 += r3;
0x000476b6 ldr r3, [sp] | r3 = *(sp);
0x000476b8 strd r1, r1, [r4, 0xc] | __asm ("strd r1, r1, [r4, 0xc]");
0x000476bc ldr r3, [r3] | r3 = *(r3);
0x000476be cmp r3, 1 |
| if (r3 != 1) {
0x000476c0 beq 0x476d2 |
0x000476c2 subs r3, 0 |
0x000476c4 add.w r1, r1, 1 | r1++;
0x000476c8 it ne |
| if (r3 == 0) {
0x000476ca movne r3, 1 | r3 = 1;
| }
0x000476cc str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x000476ce rsbs r3, r3, 0 | r3 -= ;
0x000476d0 strh r3, [r4, 0x1a] | *((r4 + 0x1a)) = r3;
| }
0x000476d2 movs r5, 0 | r5 = 0;
| label_17:
0x000476d4 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x000476d6 cmp r3, 0 |
| if (r3 < 0) {
0x000476d8 blt 0x47784 | goto label_20;
| }
0x000476da ldr r3, [sp] | r3 = *(sp);
0x000476dc ldr r3, [r3] | r3 = *(r3);
0x000476de cmp r3, 1 |
| if (r3 == 1) {
0x000476e0 beq.w 0x47868 | goto label_25;
| }
0x000476e4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000476e6 ldr r0, [sp, 0x48] | r0 = *(arg_48h);
0x000476e8 clz r6, r2 | r6 &= r2;
0x000476ec ldrsh.w r2, [r4, 0x1a] | r2 = *((r4 + 0x1a));
0x000476f0 lsrs r6, r6, 5 | r6 >>= 5;
0x000476f2 cmp r2, r0 |
| if (r2 != r0) {
0x000476f4 beq 0x47748 |
0x000476f6 ldr r2, [sp, 0x48] | r2 = *(arg_48h);
0x000476f8 sxth r7, r2 | __asm ("sxth r7, r2");
0x000476fa cmp r3, 0 |
| if (r3 != 0) {
0x000476fc bne.w 0x47872 | goto label_26;
| }
0x00047700 adds r3, r1, 1 | r3 = r1 + 1;
0x00047702 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x00047704 mov.w lr, 1 | lr = 1;
0x00047708 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0004770a strb.w lr, [r4, r1] |
0x0004770e cmp r2, 0x80 |
0x00047710 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x00047712 sbcs ip, r3, 0 | __asm ("sbcs ip, r3, 0");
0x00047716 itt lo |
| if (r2 >= 0x80) {
0x00047718 movlo r3, r2 | r3 = r2;
| }
| if (r2 >= 0x80) {
0x0004771a strblo r3, [r4, r1] | *((r4 + r1)) = r3;
| }
0x0004771c add.w r0, r4, r1 | r0 = r4 + r1;
0x00047720 it lo |
| if (r2 >= 0x80) {
0x00047722 movlo r3, lr | r3 = lr;
| }
| if (r2 > 0x80) {
0x00047724 blo 0x4773c |
0x00047726 ldr r2, [sp, 0x48] | r2 = *(arg_48h);
0x00047728 cmp.w r2, 0x4000 |
0x0004772c sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r2 <= 0x4000) {
0x00047730 blo.w 0x4789a | goto label_27;
| }
0x00047734 ldr r2, [sp, 0x48] | r2 = *(arg_48h);
0x00047736 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x0004773a mov r3, r0 | r3 = r0;
| }
| label_11:
0x0004773c ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x0004773e strh r7, [r4, 0x1a] | *((r4 + 0x1a)) = r7;
0x00047740 add r1, r3 | r1 += r3;
0x00047742 movs r3, 0 | r3 = 0;
0x00047744 str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x00047746 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| }
| if (r6 == 0) {
0x00047748 cbz r6, 0x47788 | goto label_6;
| }
0x0004774a b 0x475da |
| }
| label_16:
0x0004774c lsls r5, r5, 1 | r5 <<= 1;
0x0004774e mov r0, r4 | r0 = r4;
0x00047750 asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x00047752 mov r2, r5 | r2 = r5;
0x00047754 blx 0x8638 | r0 = fcn_00008638 ();
0x00047758 cmp r0, 0 |
| if (r0 == 0) {
0x0004775a beq.w 0x47880 | goto label_23;
| }
0x0004775e ldr r3, [sp] | r3 = *(sp);
0x00047760 str r5, [r0, 8] | *((r0 + 8)) = r5;
0x00047762 ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x00047764 ldr.w r3, [r2, fp] | r3 = *((r2 + fp));
0x00047768 add r2, fp | r2 += fp;
0x0004776a cmp r3, r4 |
| if (r3 == r4) {
0x0004776c beq 0x47776 | goto label_28;
| }
| do {
0x0004776e mov r2, r3 | r2 = r3;
0x00047770 ldr r3, [r3] | r3 = *(r3);
0x00047772 cmp r3, r4 |
0x00047774 bne 0x4776e |
| } while (r3 != r4);
| label_28:
0x00047776 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x00047778 mov r4, r0 | r4 = r0;
0x0004777a str r0, [r2] | *(r2) = r0;
0x0004777c b 0x4754a | goto label_1;
| label_19:
0x0004777e ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00047780 cmp r3, 0 |
| if (r3 >= 0) {
0x00047782 bge 0x47868 | goto label_25;
| }
| label_20:
0x00047784 movs r3, 1 | r3 = 1;
0x00047786 strb r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| label_6:
0x00047788 ldr r3, [sp] | r3 = *(sp);
0x0004778a add r1, r5 | r1 += r5;
0x0004778c movs r0, 0 | r0 = 0;
0x0004778e ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00047790 ldr r3, [r2] | r3 = *(r2);
0x00047792 add r3, r1 | r3 += r1;
0x00047794 str r3, [r2] | *(r2) = r3;
0x00047796 add sp, 0x24 |
0x00047798 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x0004779c lsl.w r4, r8, 3 | r4 = r8 << 3;
0x000477a0 movs r1, 0 | r1 = 0;
0x000477a2 lsl.w r8, r8, 1 | r8 <<= 1;
0x000477a6 mov r0, r4 | r0 = r4;
0x000477a8 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000477ac mov sl, r0 | sl = r0;
0x000477ae cmp r0, 0 |
| if (r0 == 0) {
0x000477b0 beq 0x47880 | goto label_23;
| }
0x000477b2 mov r2, r4 | r2 = r4;
0x000477b4 movs r1, 0 | r1 = 0;
0x000477b6 blx 0x8264 | fcn_00008264 ();
0x000477ba ldr r3, [sp] | r3 = *(sp);
0x000477bc ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000477be cmp r3, 0 |
| if (r3 <= 0) {
0x000477c0 ble 0x4781a | goto label_29;
| }
0x000477c2 ldr r4, [sp, 0x10] | r4 = var_10h;
0x000477c4 str r5, [sp, 0x1c] | var_1ch = r5;
0x000477c6 add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x000477ca mov sb, r3 | sb = r3;
| label_3:
0x000477cc ldr r5, [r4], 4 | r5 = *(r4);
| r4 += 4;
| if (r5 == 0) {
0x000477d0 cbz r5, 0x47814 | goto label_30;
| }
| label_2:
0x000477d2 mov fp, r5 |
0x000477d4 ldr r3, [fp], 0x28 | r3 = *(fp);
| fp += 0x28;
0x000477d8 mov r0, fp | r0 = fp;
0x000477da str r3, [r4, -0x4] | *((r4 - 0x4)) = r3;
0x000477de blx 0x8160 | r0 = fcn_00008160 ();
0x000477e2 cmp r0, 0 |
| if (r0 == 0) {
0x000477e4 beq 0x4786e | goto label_31;
| }
0x000477e6 adds r0, 0x28 | r0 += 0x28;
0x000477e8 adds r2, r5, r0 | r2 = r5 + r0;
0x000477ea movs r0, 0xd | r0 = 0xd;
| do {
0x000477ec ldrb r3, [r2, -0x1]! | r3 = *((r2 -= 0x1));
0x000477f0 cmp fp, r2 |
0x000477f2 eor.w r3, r3, r0, lsl 3 | r3 ^= (r0 << 3);
0x000477f6 eor.w r0, r0, r3 | r0 ^= r3;
0x000477fa bne 0x477ec |
| } while (fp != r2);
| label_7:
0x000477fc mov r1, r8 | r1 = r8;
0x000477fe bl 0xab8dc | fcn_000ab8dc (r0, r1, r2);
0x00047802 ldr.w r3, [sl, r1, lsl 2] | offset_2 = r1 << 2;
| r3 = *((sl + offset_2));
0x00047806 str r3, [r5] | *(r5) = r3;
0x00047808 str.w r5, [sl, r1, lsl 2] | __asm ("str.w r5, [sl, r1, lsl 2]");
0x0004780c ldr r5, [r4, -0x4] | r5 = *((r4 - 0x4));
0x00047810 cmp r5, 0 |
| if (r5 != 0) {
0x00047812 bne 0x477d2 | goto label_2;
| }
| label_30:
0x00047814 cmp sb, r4 |
| if (sb != r4) {
0x00047816 bne 0x477cc | goto label_3;
| }
0x00047818 ldr r5, [sp, 0x1c] | r5 = var_1ch;
| label_29:
0x0004781a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0004781c blx 0x84f8 | fcn_000084f8 ();
0x00047820 ldr r3, [sp] | r3 = *(sp);
0x00047822 str.w sl, [r3, 0x14] | __asm ("str.w sl, [r3, 0x14]");
0x00047826 str.w r8, [r3, 0xc] | __asm ("str.w r8, [r3, 0xc]");
0x0004782a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004782c cmp r3, 0 |
| if (r3 < 0) {
0x0004782e blt 0x478c2 | goto label_32;
| }
0x00047830 adds r1, r6, r7 | r1 = r6 + r7;
0x00047832 movs r2, 0xd | r2 = 0xd;
| do {
0x00047834 ldrb r3, [r1, -0x1]! | r3 = *((r1 -= 0x1));
0x00047838 cmp r6, r1 |
0x0004783a eor.w r3, r3, r2, lsl 3 | r3 ^= (r2 << 3);
0x0004783e eor.w r2, r2, r3 | r2 ^= r3;
0x00047842 bne 0x47834 |
| } while (r6 != r1);
0x00047844 lsls r3, r2, 3 | r3 = r2 << 3;
| do {
0x00047846 eors r2, r3 | r2 ^= r3;
0x00047848 mov r1, r8 | r1 = r8;
0x0004784a eor.w r0, r2, r5 | r0 = r2 ^ r5;
0x0004784e bl 0xab8dc | fcn_000ab8dc (r0, r1, r2);
0x00047852 mov sl, r1 | sl = r1;
0x00047854 b 0x4762a | goto label_4;
| label_18:
0x00047856 lsrs r3, r6, 7 | r3 = r6 >> 7;
0x00047858 and r6, r6, 0x7f | r6 &= 0x7f;
0x0004785c movs r1, 2 | r1 = 2;
0x0004785e strb r6, [r0, 1] | *((r0 + 1)) = r6;
0x00047860 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00047864 strb r3, [r0] | *(r0) = r3;
0x00047866 b 0x4759a | goto label_5;
| label_25:
0x00047868 movs r3, 1 | r3 = 1;
0x0004786a strb r3, [r4, 0x19] | *((r4 + 0x19)) = r3;
0x0004786c b 0x47788 | goto label_6;
| label_31:
0x0004786e movs r0, 0xd | r0 = 0xd;
0x00047870 b 0x477fc | goto label_7;
| label_26:
0x00047872 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00047874 strh r7, [r4, 0x1a] | *((r4 + 0x1a)) = r7;
0x00047876 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
0x00047878 b 0x475da | goto label_8;
| label_13:
0x0004787a movs r3, 0x68 | r3 = 0x68;
0x0004787c movs r2, 0xd | r2 = 0xd;
0x0004787e b 0x474fa | goto label_9;
| label_23:
0x00047880 movs r0, 7 | r0 = 7;
0x00047882 add sp, 0x24 |
0x00047884 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_21:
0x00047888 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x0004788a and r2, r2, 0x7f | r2 &= 0x7f;
0x0004788e movs r1, 2 | r1 = 2;
0x00047890 strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x00047892 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00047896 strb r3, [r0] | *(r0) = r3;
0x00047898 b 0x47606 | goto label_10;
| label_27:
0x0004789a ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x0004789c ldr r2, [sp, 0x48] | r2 = *(arg_48h);
0x0004789e lsrs r3, r3, 7 | r3 >>= 7;
0x000478a0 and r2, r2, 0x7f | r2 &= 0x7f;
0x000478a4 strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x000478a6 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x000478aa strb r3, [r0] | *(r0) = r3;
0x000478ac movs r3, 2 | r3 = 2;
0x000478ae b 0x4773c | goto label_11;
| label_24:
0x000478b0 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x000478b2 movs r1, 2 | r1 = 2;
0x000478b4 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x000478b8 strb r3, [r0] | *(r0) = r3;
0x000478ba and r3, r2, 0x7f | r3 = r2 & 0x7f;
0x000478be strb r3, [r0, 1] | *((r0 + 1)) = r3;
0x000478c0 b 0x476aa | goto label_12;
| label_32:
0x000478c2 movs r3, 0x68 | r3 = 0x68;
0x000478c4 movs r2, 0xd | r2 = 0xd;
0x000478c6 b 0x47846 |
| } 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/libsqlite3.so.0.8.6 @ 0x47dec */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00047dec () | void fcn_00047dec (int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00047dec push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00047df0 adds r5, r2, r3 | r5 = r2 + r3;
0x00047df2 cmp r2, r5 |
0x00047df4 sub sp, 0x14 |
0x00047df6 str r0, [sp, 8] | var_8h = r0;
| if (r2 >= r5) {
0x00047df8 bhs.w 0x48006 | goto label_8;
| }
0x00047dfc ldr.w fp, [pc, 0x218] | fp = *(0x00048018);
0x00047e00 movw sl, 0x61f8 |
0x00047e04 movw r7, 0x9fdf |
0x00047e08 mov r8, r1 | r8 = r1;
0x00047e0a movt sl, 3 | sl = 0x361f8;
0x00047e0e movt r7, 0x802 | r7 = 0x8029fdf;
0x00047e12 add fp, pc |
0x00047e14 movs r6, 0 | r6 = 0;
0x00047e16 mov sb, r2 | sb = r2;
0x00047e18 mov r4, r5 | r4 = r5;
0x00047e1a str r2, [sp, 4] | var_4h = r2;
0x00047e1c b 0x47e2a |
| while (r0 < 0xbf) {
0x00047e1e bl 0xf6d0 | r0 = fcn_0000f6d0 (r0);
0x00047e22 cmp r0, r8 |
| if (r0 != r8) {
0x00047e24 bne 0x47ecc | goto label_9;
| }
| label_0:
0x00047e26 cmp r4, sb |
| if (r4 < sb) {
0x00047e28 bls 0x47eac | goto label_10;
| }
| label_1:
0x00047e2a ldrb r0, [sb], 1 | r0 = *(sb);
| sb++;
0x00047e2e cmp r0, 0xbf |
0x00047e30 bls 0x47e1e |
| }
0x00047e32 cmp r4, sb |
0x00047e34 add r0, fp | r0 += fp;
0x00047e36 ldrb r5, [r0, -0xc0] | r5 = *((r0 - 0xc0));
| if (r4 == sb) {
0x00047e3a beq 0x47eba | goto label_11;
| }
0x00047e3c mov r3, sb | r3 = sb;
0x00047e3e b 0x47e4a |
| while (r0 == 0x80) {
0x00047e40 cmp r4, r3 |
0x00047e42 add.w r5, r1, r5, lsl 6 | r5 = r1 + (r5 << 6);
0x00047e46 mov sb, r3 | sb = r3;
| if (r4 == r3) {
0x00047e48 beq 0x47e5c | goto label_12;
| }
0x00047e4a mov sb, r3 | sb = r3;
0x00047e4c ldrb r1, [r3], 1 | r1 = *(r3);
| r3++;
0x00047e50 and r0, r1, 0xc0 | r0 = r1 & 0xc0;
0x00047e54 and r1, r1, 0x3f | r1 &= 0x3f;
0x00047e58 cmp r0, 0x80 |
0x00047e5a beq 0x47e40 |
| }
| label_12:
0x00047e5c cmp r5, 0x7f |
| if (r5 < 0x7f) {
0x00047e5e bls 0x47ec0 | goto label_13;
| }
0x00047e60 bic r3, r5, 0x7f8 | r3 = BIT_MASK (r5, 0x7f8);
0x00047e64 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00047e68 cmp.w r3, 0xd800 |
| if (r3 == fcn.00000004) {
0x00047e6c beq 0x47ec0 | goto label_13;
| }
0x00047e6e bic r1, r5, 1 | r1 = BIT_MASK (r5, 1);
0x00047e72 movw r3, 0xfffe | r3 = 0xfffe;
0x00047e76 cmp r1, r3 |
| if (r1 == r3) {
0x00047e78 beq 0x47ec0 | goto label_13;
| }
| label_2:
0x00047e7a mov r0, r5 | r0 = r5;
0x00047e7c bl 0xf6d0 | r0 = fcn_0000f6d0 (r0);
0x00047e80 cmp r0, r8 |
| if (r0 == r8) {
0x00047e82 beq 0x47e26 | goto label_0;
| }
0x00047e84 sub.w r1, r5, 0x300 | r1 = r5 - 0x300;
0x00047e88 cmp r1, 0x31 |
| if (r1 > 0x31) {
0x00047e8a bhi 0x47ecc | goto label_9;
| }
0x00047e8c cmp.w r5, 0x320 |
0x00047e90 iteet lt |
| if (r5 >= 0x320) {
0x00047e92 movlt r3, 1 | r3 = 1;
| }
| if (r5 < 0x320) {
0x00047e94 movge r3, 1 | r3 = 1;
| }
| if (r5 < 0x320) {
0x00047e96 subge r5, r5, 0x320 | r5 -= 0x320;
| }
| if (r5 < 0x320) {
0x00047e9a lsls r3, r1 | r3 <<= r1;
| }
0x00047e9c itet ge |
| if (r3 < r1) {
0x00047e9e lslge r3, r5 | r3 <<= r5;
| }
| if (r3 >= r1) {
0x00047ea0 andlt r3, r7 | r3 &= r7;
| }
| if (r3 < r1) {
0x00047ea2 andge r3, r3, sl | r3 &= sl;
| }
| if (r3 == 0) {
0x00047ea6 cbz r3, 0x47ecc | goto label_9;
| }
0x00047ea8 cmp r4, sb |
| if (r4 > sb) {
0x00047eaa bhi 0x47e2a | goto label_1;
| }
| label_10:
0x00047eac mov r5, r4 | r5 = r4;
0x00047eae ldr r4, [sp, 4] | r4 = var_4h;
| if (r6 != 0) {
0x00047eb0 cbnz r6, 0x47ed0 | goto label_14;
| }
| label_7:
0x00047eb2 mov r0, r6 | r0 = r6;
0x00047eb4 add sp, 0x14 |
0x00047eb6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x00047eba cmp r5, 0x7f |
0x00047ebc mov sb, r4 | sb = r4;
| if (r5 > 0x7f) {
0x00047ebe bhi 0x47e7a | goto label_2;
| }
| label_13:
0x00047ec0 movw r0, 0xfffd | r0 = 0xfffd;
0x00047ec4 bl 0xf6d0 | r0 = fcn_0000f6d0 (r0);
0x00047ec8 cmp r8, r0 |
| if (r8 == r0) {
0x00047eca beq 0x47e26 | goto label_0;
| }
| label_9:
0x00047ecc adds r6, 1 | r6++;
0x00047ece b 0x47e26 | goto label_0;
| label_14:
0x00047ed0 ldr r3, [sp, 8] | r3 = var_8h;
0x00047ed2 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00047ed4 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00047ed6 add r2, r6 | r2 += r6;
0x00047ed8 mov r6, r3 | r6 = r3;
0x00047eda lsls r2, r2, 2 | r2 <<= 2;
0x00047edc movs r3, 0 | r3 = 0;
0x00047ede blx 0x8638 | r0 = fcn_00008638 ();
0x00047ee2 mov sl, r0 | sl = r0;
0x00047ee4 cmp r0, 0 |
| if (r0 == 0) {
0x00047ee6 beq.w 0x48014 | goto label_15;
| }
0x00047eea ldr r3, [pc, 0x130] |
0x00047eec movw sb, 0x61f8 |
0x00047ef0 ldr.w fp, [r6, 8] | fp = *((r6 + 8));
0x00047ef4 movt sb, 3 | sb = 0x361f8;
0x00047ef8 add r3, pc | r3 = 0x8ff1a;
0x00047efa str r3, [sp, 4] | var_4h = r3;
0x00047efc movw r3, 0x9fdf |
0x00047f00 movt r3, 0x802 | r3 = 0x8029fdf;
0x00047f04 str r3, [sp, 0xc] | var_ch = r3;
0x00047f06 b 0x47f16 |
| while (r0 < 0xbf) {
0x00047f08 mov r6, r0 | r6 = r0;
0x00047f0a bl 0xf6d0 | r0 = fcn_0000f6d0 (r0);
0x00047f0e cmp r0, r8 |
| if (r0 != r8) {
0x00047f10 bne 0x47fc4 | goto label_16;
| }
| label_3:
0x00047f12 cmp r5, r4 |
| if (r5 < r4) {
0x00047f14 bls 0x47f9c | goto label_17;
| }
| label_4:
0x00047f16 ldrb r0, [r4], 1 | r0 = *(r4);
| r4++;
0x00047f1a cmp r0, 0xbf |
0x00047f1c bls 0x47f08 |
| }
0x00047f1e ldr r3, [sp, 4] | r3 = var_4h;
0x00047f20 cmp r5, r4 |
0x00047f22 add r0, r3 | r0 += r3;
0x00047f24 ldrb r6, [r0, -0xc0] | r6 = *((r0 - 0xc0));
| if (r5 == r4) {
0x00047f28 beq 0x47fac | goto label_18;
| }
0x00047f2a mov r2, r4 | r2 = r4;
0x00047f2c b 0x47f38 |
| while (r1 == 0x80) {
0x00047f2e cmp r5, r2 |
0x00047f30 add.w r6, r3, r6, lsl 6 | r6 = r3 + (r6 << 6);
0x00047f34 mov r4, r2 | r4 = r2;
| if (r5 == r2) {
0x00047f36 beq 0x47f4a | goto label_19;
| }
0x00047f38 mov r4, r2 | r4 = r2;
0x00047f3a ldrb r3, [r2], 1 | r3 = *(r2);
| r2++;
0x00047f3e and r1, r3, 0xc0 | r1 = r3 & 0xc0;
0x00047f42 and r3, r3, 0x3f | r3 &= 0x3f;
0x00047f46 cmp r1, 0x80 |
0x00047f48 beq 0x47f2e |
| }
| label_19:
0x00047f4a cmp r6, 0x7f |
| if (r6 < 0x7f) {
0x00047f4c bls 0x47fb2 | goto label_20;
| }
0x00047f4e bic r2, r6, 0x7f8 | r2 = BIT_MASK (r6, 0x7f8);
0x00047f52 bic r2, r2, 7 | r2 = BIT_MASK (r2, 7);
0x00047f56 cmp.w r2, 0xd800 |
| if (r2 == fcn.00000004) {
0x00047f5a beq 0x47fb2 | goto label_20;
| }
0x00047f5c bic r1, r6, 1 | r1 = BIT_MASK (r6, 1);
0x00047f60 movw r2, 0xfffe | r2 = 0xfffe;
0x00047f64 cmp r1, r2 |
| if (r1 == r2) {
0x00047f66 beq 0x47fb2 | goto label_20;
| }
| label_5:
0x00047f68 mov r0, r6 | r0 = r6;
0x00047f6a bl 0xf6d0 | r0 = fcn_0000f6d0 (r0);
0x00047f6e cmp r0, r8 |
| if (r0 == r8) {
0x00047f70 beq 0x47f12 | goto label_3;
| }
0x00047f72 sub.w r1, r6, 0x300 | r1 = r6 - 0x300;
0x00047f76 cmp r1, 0x31 |
| if (r1 > 0x31) {
0x00047f78 bhi 0x47fc4 | goto label_16;
| }
0x00047f7a cmp.w r6, 0x320 |
0x00047f7e itete lt |
| if (r6 >= 0x320) {
0x00047f80 movlt r2, 1 | r2 = 1;
| }
| if (r6 < 0x320) {
0x00047f82 movge r2, 1 | r2 = 1;
| }
| if (r6 >= 0x320) {
0x00047f84 ldrlt r3, [sp, 0xc] | r3 = var_ch;
| }
| if (r6 < 0x320) {
0x00047f86 subge r1, r6, 0x320 | r1 = r6 - 0x320;
| }
0x00047f8a itete lt |
| if (r6 >= 0x320) {
0x00047f8c lsllt r2, r1 | r2 <<= r1;
| }
| if (r6 < 0x320) {
0x00047f8e lslge r2, r1 | r2 <<= r1;
| }
| if (r6 >= 0x320) {
0x00047f90 andlt r2, r3 | r2 &= r3;
| }
| if (r6 < 0x320) {
0x00047f92 andge r2, r2, sb | r2 &= sb;
| }
| if (r2 == 0) {
0x00047f96 cbz r2, 0x47fc4 | goto label_16;
| }
0x00047f98 cmp r5, r4 |
| if (r5 > r4) {
0x00047f9a bhi 0x47f16 | goto label_4;
| }
| label_17:
0x00047f9c ldr r3, [sp, 8] | r3 = var_8h;
0x00047f9e movs r6, 0 | r6 = 0;
0x00047fa0 mov r0, r6 | r0 = r6;
0x00047fa2 strd fp, sl, [r3, 8] | __asm ("strd fp, sl, [r3, 8]");
0x00047fa6 add sp, 0x14 |
0x00047fa8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x00047fac cmp r6, 0x7f |
0x00047fae mov r4, r5 | r4 = r5;
| if (r6 > 0x7f) {
0x00047fb0 bhi 0x47f68 | goto label_5;
| }
| label_20:
0x00047fb2 movw r0, 0xfffd | r0 = 0xfffd;
0x00047fb6 bl 0xf6d0 | r0 = fcn_0000f6d0 (r0);
0x00047fba cmp r8, r0 |
0x00047fbc it ne |
| if (r8 == r0) {
0x00047fbe movwne r6, 0xfffd | __asm ("movwne r6, aav.0x000000ff");
| goto label_21;
| }
| if (r8 == r0) {
| label_21:
0x00047fc2 beq 0x47f12 | goto label_3;
| }
| label_16:
0x00047fc4 cmp.w fp, 0 |
| if (fp <= 0) {
0x00047fc8 ble 0x48010 | goto label_22;
| }
0x00047fca mov r1, sl | r1 = sl;
0x00047fcc movs r2, 0 | r2 = 0;
0x00047fce b 0x47fd6 |
| while (r3 < r6) {
0x00047fd0 adds r2, 1 | r2++;
0x00047fd2 cmp r2, fp |
| if (r2 == fp) {
0x00047fd4 beq 0x48000 | goto label_23;
| }
0x00047fd6 mov r7, r1 | r7 = r1;
0x00047fd8 ldr r3, [r1], 4 | r3 = *(r1);
| r1 += 4;
0x00047fdc cmp r3, r6 |
0x00047fde blt 0x47fd0 |
| }
0x00047fe0 cmp fp, r2 |
| if (fp <= r2) {
0x00047fe2 ble 0x47ff8 | goto label_6;
| }
0x00047fe4 adds r0, r2, 1 | r0 = r2 + 1;
0x00047fe6 sub.w r2, fp, r2 | r2 = fp - r2;
0x00047fea lsls r0, r0, 2 | r0 <<= 2;
0x00047fec lsls r2, r2, 2 | r2 <<= 2;
0x00047fee subs r1, r0, 4 | r1 = r0 - 4;
0x00047ff0 add r0, sl | r0 += sl;
0x00047ff2 add r1, sl | r1 += sl;
0x00047ff4 blx 0x7d44 | fcn_00007d44 ();
| do {
| label_6:
0x00047ff8 add.w fp, fp, 1 |
0x00047ffc str r6, [r7] | *(r7) = r6;
0x00047ffe b 0x47f12 | goto label_3;
| label_23:
0x00048000 add.w r7, sl, fp, lsl 2 | r7 = sl + (fp << 2);
0x00048004 b 0x47ff8 |
| } while (1);
| label_8:
0x00048006 movs r6, 0 | r6 = 0;
0x00048008 mov r0, r6 | r0 = r6;
0x0004800a add sp, 0x14 |
0x0004800c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x00048010 mov r7, sl | r7 = sl;
0x00048012 b 0x47ff8 | goto label_6;
| label_15:
0x00048014 movs r6, 7 | r6 = 7;
0x00048016 b 0x47eb2 | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x48148 */
| #include <stdint.h>
|
; (fcn) fcn.00048148 () | void fcn_00048148 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00048148 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0004814c lsls r5, r1, 1 | r5 = r1 << 1;
0x0004814e sub sp, 0xc |
0x00048150 adds r3, r5, r1 | r3 = r5 + r1;
0x00048152 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x00048156 str r2, [sp] | *(sp) = r2;
0x00048158 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x0004815a cmp r2, 0 |
| if (r2 == 0) {
0x0004815c beq.w 0x4827c | goto label_1;
| }
0x00048160 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00048164 mov r8, r0 | r8 = r0;
0x00048166 ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x00048168 lsls r2, r2, 2 | r2 <<= 2;
0x0004816a subs r2, 0xc | r2 -= 0xc;
0x0004816c add r2, r0 | r2 += r0;
0x0004816e ldrd r2, r0, [r2, 4] | __asm ("ldrd r2, r0, [r2, 4]");
0x00048172 add.w sl, r0, 1 | sl = r0 + 1;
0x00048176 sub.w sl, sl, r2 | sl -= r2;
0x0004817a subs r2, r1, 1 | r2 = r1 - 1;
| if (r2 >= r1) {
0x0004817c bpl 0x48184 | goto label_3;
| }
0x0004817e b 0x481c4 | goto label_4;
| do {
0x00048180 subs r2, 1 | r2--;
| if (r2 <= 1) {
0x00048182 blo 0x481c4 | goto label_4;
| }
| label_3:
0x00048184 ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
0x00048186 subs r3, 0xc | r3 -= 0xc;
0x00048188 cmp r4, 0 |
0x0004818a beq 0x48180 |
| } while (r4 == 0);
| if (r4 <= 0) {
0x0004818c ble.w 0x482a0 | goto label_5;
| }
0x00048190 ldr r0, [sp] | r0 = *(sp);
0x00048192 add.w r3, r2, r2, lsl 1 | r3 = r2 + (r2 << 1);
0x00048196 add.w r4, r4, r4, lsl 1 | r4 += (r4 << 1);
0x0004819a movs r6, 0 | r6 = 0;
0x0004819c add.w r3, r0, r3, lsl 2 | r3 = r0 + (r3 << 2);
0x000481a0 ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x000481a2 add.w r4, r0, r4, lsl 2 | r4 = r0 + (r4 << 2);
| do {
0x000481a6 ldrd r7, r3, [r0, 4] | __asm ("ldrd r7, r3, [r0, 4]");
0x000481aa adds r0, 0xc | r0 += 0xc;
0x000481ac subs r3, r3, r7 | r3 -= r7;
0x000481ae adds r3, 1 | r3++;
0x000481b0 cmp r6, r3 |
0x000481b2 it lt |
| if (r6 >= r3) {
0x000481b4 movlt r6, r3 | r6 = r3;
| }
0x000481b6 cmp r0, r4 |
0x000481b8 bne 0x481a6 |
| } while (r0 != r4);
| label_2:
0x000481ba cmp sl, r6 |
0x000481bc ittt le |
| if (sl > r6) {
0x000481be movle r1, r2 | r1 = r2;
| }
| if (sl > r6) {
0x000481c0 movle sl, r6 | sl = r6;
| }
| if (sl > r6) {
0x000481c2 lslle r5, r1, 1 | r5 = r1 << 1;
| }
| label_4:
0x000481c4 ldr r2, [sp] | r2 = *(sp);
0x000481c6 add r5, r1 | r5 += r1;
0x000481c8 add.w r5, r2, r5, lsl 2 | r5 = r2 + (r5 << 2);
0x000481cc ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000481ce cmp r3, 0 |
| if (r3 != 0) {
0x000481d0 bne 0x4827c | goto label_1;
| }
0x000481d2 ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x000481d4 adds r3, r1, 1 | r3 = r1 + 1;
0x000481d6 str r3, [sp, 4] | var_4h = r3;
0x000481d8 cmp r3, r2 |
| if (r3 >= r2) {
0x000481da bge 0x4827c | goto label_1;
| }
0x000481dc mov r7, r5 | r7 = r5;
| label_0:
0x000481de ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000481e0 cmp r3, 0 |
| if (r3 != 0) {
0x000481e2 bne 0x4827c | goto label_1;
| }
0x000481e4 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x000481e6 subs.w sb, r3, 1 | sb = r3 - 1;
0x000481ea itt pl |
| if (sb < r3) {
0x000481ec addpl r6, sb, sb, lsl 1 | r6 = sb + (sb << 1);
| }
| if (sb >= r3) {
0x000481f0 lsls r6, r6, 2 | r6 <<= 2;
| }
| if (r6 >= r6) {
0x000481f2 bpl 0x48262 | goto label_6;
| }
0x000481f4 b 0x48292 | goto label_7;
| do {
0x000481f6 ldr r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
0x000481f8 mov r3, fp | r3 = fp;
0x000481fa ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x000481fc add.w sb, sb, -1 | sb += -1;
0x00048200 adds r2, 1 | r2++;
0x00048202 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00048206 lsls r2, r2, 2 | r2 <<= 2;
0x00048208 blx 0x8638 | r0 = fcn_00008638 ();
0x0004820c mov r4, r0 | r4 = r0;
0x0004820e mov r1, r0 | r1 = r0;
0x00048210 cmp r0, 0 |
| if (r0 == 0) {
0x00048212 beq 0x48282 | goto label_8;
| }
0x00048214 ldr r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
0x00048216 adds r0, 0xc | r0 += 0xc;
0x00048218 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x0004821c lsls r2, r2, 2 | r2 <<= 2;
0x0004821e blx 0x7d44 | fcn_00007d44 ();
0x00048222 str.w fp, [r4] | __asm ("str.w fp, [r4]");
0x00048226 str.w fp, [r4, 4] | __asm ("str.w fp, [r4, 4]");
0x0004822a str.w fp, [r4, 8] | __asm ("str.w fp, [r4, 8]");
0x0004822c add sp, 0x20 |
0x0004822e ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00048232 str r4, [r7, 0x20] | *((r7 + 0x20)) = r4;
| if (r3 != 0) {
0x00048234 cbnz r3, 0x4827c | goto label_1;
| }
0x00048236 ldr r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x00048238 cmp.w sb, -1 |
0x0004823c add.w r3, r2, r6 | r3 = r2 + r6;
0x00048240 ldr r1, [r2, r6] | r1 = *((r2 + r6));
0x00048242 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00048244 sub.w r6, r6, 0xc | r6 -= 0xc;
0x00048248 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0004824a str r1, [r4] | *(r4) = r1;
0x0004824c str r2, [r4, 4] | *((r4 + 4)) = r2;
0x0004824e str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00048250 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00048252 add.w r3, r3, 1 | r3++;
0x00048256 str r3, [r7, 0x1c] | *((r7 + 0x1c)) = r3;
0x00048258 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0004825a add.w r3, r3, -1 | r3 += -1;
0x0004825e str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
| if (sb == -1) {
0x00048260 beq 0x4828e | goto label_9;
| }
| label_6:
0x00048262 ldr r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x00048264 add r2, r6 | r2 += r6;
0x00048266 ldrd r2, r3, [r2, 4] | __asm ("ldrd r2, r3, [r2, 4]");
0x0004826a adds r3, 1 | r3++;
0x0004826c subs r3, r3, r2 | r3 -= r2;
0x0004826e cmp sl, r3 |
| if (sl < r3) {
0x00048270 blt 0x4827c | goto label_1;
| }
0x00048272 ldr.w fp, [r8, 0x24] | fp = *((r8 + 0x24));
0x00048276 cmp.w fp, 0 |
0x0004827a beq 0x481f6 |
| } while (fp == 0);
| label_1:
0x0004827c add sp, 0xc |
0x0004827e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00048282 movs r3, 7 | r3 = 7;
0x00048284 str.w r3, [r8, 0x24] | __asm ("str.w r3, [r8, 0x24]");
0x00048288 add sp, 0xc |
0x0004828a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x0004828e ldr r3, [sp] | r3 = *(sp);
0x00048290 ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
| label_7:
0x00048292 ldr r3, [sp, 4] | r3 = var_4h;
0x00048294 adds r5, 0xc | r5 += 0xc;
0x00048296 adds r3, 1 | r3++;
0x00048298 cmp r3, r2 |
0x0004829a str r3, [sp, 4] | var_4h = r3;
| if (r3 < r2) {
0x0004829c blt 0x481de | goto label_0;
| }
0x0004829e b 0x4827c | goto label_1;
| label_5:
0x000482a0 movs r6, 0 | r6 = 0;
0x000482a2 b 0x481ba | 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/libsqlite3.so.0.8.6 @ 0x482e8 */
| #include <stdint.h>
|
; (fcn) fcn.000482e8 () | void fcn_000482e8 (int16_t arg_4h, int16_t arg_b0h, int16_t arg_b8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_20h;
| int32_t var_4h_2;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000482e8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000482ec mov r8, r2 | r8 = r2;
0x000482ee sub sp, 0x8c |
0x000482f0 ldr r2, [pc, 0x214] |
0x000482f2 mov r7, r3 | r7 = r3;
0x000482f4 movs r6, 0 | r6 = 0;
0x000482f6 ldrd fp, r1, [sp, 0xb0] | __asm ("ldrd fp, r1, [arg_b0h]");
0x000482fa mov r5, r0 | r5 = r0;
0x000482fc ldr r3, [pc, 0x20c] | r3 = *(0x4850c);
0x000482fe add r2, pc | r2 = 0x9080a;
0x00048300 mov sb, r6 | sb = r6;
0x00048302 str r1, [sp, 0xc] | var_ch = r1;
0x00048304 ldr r3, [r2, r3] |
0x00048306 movs r2, 4 | r2 = 4;
0x00048308 ldr r3, [r3] | r3 = *(0x9080a);
0x0004830a str r3, [sp, 0x84] | var_84h = r3;
0x0004830c mov.w r3, 0 | r3 = 0;
0x00048310 ldr r3, [sp, 0xb8] | r3 = *(arg_b8h);
0x00048312 str r2, [sp] | *(sp) = r2;
0x00048314 str r3, [sp, 0x10] | var_10h = r3;
0x00048316 add r3, sp, 0x20 | r3 += var_20h;
0x00048318 mov sl, r3 | sl = r3;
0x0004831a str r3, [sp, 8] | var_8h = r3;
0x0004831c b 0x48322 |
| while (r3 != 0) {
| label_0:
0x0004831e ldr r5, [r5, 0xc] | r5 = *((r5 + 0xc));
| if (r5 == 0) {
0x00048320 cbz r5, 0x48382 | goto label_7;
| }
| label_1:
0x00048322 ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x00048324 ldrb r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00048326 cmp r3, 0 |
0x00048328 bne 0x4831e |
| }
0x0004832a ldrd r1, r2, [r4] | __asm ("ldrd r1, r2, [r4]");
0x0004832e cmp r2, r7 |
0x00048330 it eq |
| if (r2 != r7) {
0x00048332 cmpeq r1, r8 | __asm ("cmpeq r1, r8");
| goto label_8;
| }
| if (r2 != r7) {
| label_8:
0x00048334 bne 0x4831e | goto label_0;
| }
0x00048336 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x00048338 cmp r1, 0 |
| if (r1 == 0) {
0x0004833a beq 0x4831e | goto label_0;
| }
0x0004833c ldr r2, [sp] | r2 = *(sp);
0x0004833e cmp r6, r2 |
| if (r6 == r2) {
0x00048340 beq.w 0x48492 | goto label_9;
| }
0x00048344 add.w r2, r6, r6, lsl 1 | r2 = r6 + (r6 << 1);
0x00048348 lsls r2, r2, 3 | r2 <<= 3;
| label_5:
0x0004834a ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0004834c add.w r4, sl, r2 | r4 = sl + r2;
0x00048350 str.w sb, [r4, 8] | __asm ("str.w sb, [r4, 8]");
0x00048354 add.w r3, r4, 0x10 | r3 = r4 + 0x10;
0x00048358 str.w sb, [r4, 0xc] | __asm ("str.w sb, [r4, 0xc]");
0x0004835c str.w sb, [r4, 0x10] | __asm ("str.w sb, [r4, 0x10]");
0x00048360 str.w sb, [r4, 0x14] | __asm ("str.w sb, [r4, 0x14]");
0x00048364 str.w r0, [sl, r2] | __asm ("str.w r0, [sl, r2]");
0x00048368 add.w r2, r4, 8 | r2 = r4 + 8;
0x0004836c str r1, [r4, 4] | *((r4 + 4)) = r1;
0x0004836e bl 0xbc8c | r0 = fcn_0000bc8c (r0, r1, r2, r3);
| if (r0 != 0) {
0x00048372 cbz r0, 0x4837a |
0x00048374 mov.w r3, 1 | r3 = 1;
0x00048378 strb r3, [r4, 0xd] | *((r4 + 0xd)) = r3;
| }
0x0004837a ldr r5, [r5, 0xc] | r5 = *((r5 + 0xc));
0x0004837c adds r6, 1 | r6++;
0x0004837e cmp r5, 0 |
| if (r5 != 0) {
0x00048380 bne 0x48322 | goto label_1;
| }
| label_7:
0x00048382 cmp r6, 1 |
0x00048384 str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h]");
| if (r6 == 1) {
0x00048388 beq.w 0x484ea | goto label_10;
| }
0x0004838c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00048390 mov.w sb, -1 | sb = -1;
0x00048394 mov sl, sb | sl = sb;
0x00048396 str.w r5, [fp, 4] | __asm ("str.w r5, [arg_4h]");
0x0004839a vstr d16, [sp, 0x18] | __asm ("vstr d16, [sp, 0x18]");
0x0004839e cmp r6, 0 |
| if (r6 == 0) {
0x000483a0 beq 0x48444 | goto label_11;
| }
| label_2:
0x000483a2 ldr r3, [sp, 4] | r3 = var_4h;
0x000483a4 mov.w r8, -1 | r8 = -1;
0x000483a8 mvn r7, 0x80000000 | r7 = ~0x80000000;
0x000483ac movs r4, 0 | r4 = 0;
0x000483ae add.w r2, r3, 8 | r2 = r3 + 8;
| do {
0x000483b2 ldrb r3, [r2, 5] | r3 = *((r2 + 5));
| if (r3 == 0) {
0x000483b4 cbnz r3, 0x483ce |
0x000483b6 ldrd r1, r3, [r2, 8] | __asm ("ldrd r1, r3, [r2, 8]");
0x000483ba cmp r3, sl |
0x000483bc it eq |
| if (r3 == sl) {
0x000483be cmpeq r1, sb | __asm ("cmpeq r1, sb");
| }
| if (r3 == sl) {
0x000483c0 beq 0x48472 | goto label_12;
| }
| label_3:
0x000483c2 cmp r1, r8 |
0x000483c4 sbcs.w r0, r3, r7 | __asm ("sbcs.w r0, r3, r7");
0x000483c8 itt lt |
| if (r1 >= r8) {
0x000483ca movlt r8, r1 | r8 = r1;
| }
| if (r1 < r8) {
0x000483cc movlt r7, r3 | r7 = r3;
| goto label_4;
| }
| }
| label_4:
0x000483ce adds r4, 1 | r4++;
0x000483d0 adds r2, 0x18 | r2 += 0x18;
0x000483d2 cmp r6, r4 |
0x000483d4 bne 0x483b2 |
| } while (r6 != r4);
0x000483d6 mvn r3, 0x80000000 | r3 = ~0x80000000;
0x000483da cmp r7, r3 |
0x000483dc it eq |
| if (r7 == r3) {
0x000483de cmpeq r8, -1 | __asm ("cmpeq r8, -1");
| }
0x000483e2 ite eq |
| if (r7 != r3) {
0x000483e4 moveq r3, 1 | r3 = 1;
| }
| if (r7 == r3) {
0x000483e6 movne r3, 0 | r3 = 0;
| }
0x000483e8 cmp r5, 0 |
0x000483ea it ne |
| if (r5 == 0) {
0x000483ec orrne r3, r3, 1 | r3 |= 1;
| }
| if (r3 != 0) {
0x000483f0 cbnz r3, 0x48444 | goto label_11;
| }
0x000483f2 ldrd r2, r4, [fp, 4] | __asm ("ldrd r2, r4, [arg_4h]");
0x000483f6 adds r2, 0xf | r2 += 0xf;
0x000483f8 cmp r2, r4 |
| if (r2 < r4) {
0x000483fa bls 0x4842e | goto label_13;
| }
0x000483fc cmp r4, 0 |
0x000483fe it eq |
| if (r4 != 0) {
0x00048400 moveq r4, 0x40 | r4 = 0x40;
| }
0x00048402 asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x00048404 cmp r4, r2 |
0x00048406 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r4 >= r2) {
0x0004840a bhs 0x48418 | goto label_14;
| }
| do {
0x0004840c adds r4, r4, r4 | r4 += r4;
0x0004840e adcs r3, r3 | __asm ("adcs r3, r3");
0x00048410 cmp r4, r2 |
0x00048412 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x00048416 blo 0x4840c |
| } while (r4 <= r2);
| label_14:
0x00048418 ldr.w r0, [fp] | r0 = *(fp);
0x0004841c mov r2, r4 | r2 = r4;
0x0004841e movs r5, 7 | r5 = 7;
0x00048420 blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 != 0) {
0x00048424 cbz r0, 0x4843c |
0x00048426 str.w r4, [fp, 8] | __asm ("str.w r4, [arg_b8h]");
0x0004842a str.w r0, [fp] | __asm ("str.w r0, [fp]");
| label_13:
0x0004842e movs r5, 0 | r5 = 0;
0x00048430 mov r2, r8 | r2 = r8;
0x00048432 mov r3, r7 | r3 = r7;
0x00048434 add r1, sp, 0x18 | r1 += var_18h;
0x00048436 mov r0, fp | r0 = fp;
0x00048438 bl 0x1d630 | fcn_0001d630 (r0, r1, r2, r3);
| }
0x0004843c mov sb, r8 | sb = r8;
0x0004843e mov sl, r7 | sl = r7;
0x00048440 cmp r6, 0 |
| if (r6 != 0) {
0x00048442 bne 0x483a2 | goto label_2;
| }
| label_11:
0x00048444 cmp r5, 0 |
0x00048446 beq 0x484d0 |
| while (1) {
| label_6:
0x00048448 ldrd r3, r2, [sp, 4] | __asm ("ldrd r3, r2, [var_8h]");
0x0004844c cmp r3, r2 |
| if (r3 != r2) {
0x0004844e beq 0x48456 |
0x00048450 mov r0, r3 | r0 = r3;
0x00048452 blx 0x84f8 | fcn_000084f8 ();
| }
0x00048456 ldr r2, [pc, 0xb8] |
0x00048458 ldr r3, [pc, 0xb0] | r3 = *(0x4850c);
0x0004845a add r2, pc | r2 = 0x90970;
0x0004845c ldr r3, [r2, r3] | r3 = *(0x90970);
0x0004845e ldr r2, [r3] | r2 = *(0x90970);
0x00048460 ldr r3, [sp, 0x84] | r3 = var_84h;
0x00048462 eors r2, r3 | r2 ^= r3;
0x00048464 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00048468 bne 0x48504 | goto label_15;
| }
0x0004846a mov r0, r5 | r0 = r5;
0x0004846c add sp, 0x8c |
0x0004846e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x00048472 ldrd r0, r1, [r2, -0x8] | __asm ("ldrd r0, r1, [r2, -0x8]");
0x00048476 add.w r3, r2, 8 | r3 = r2 + 8;
0x0004847a str r2, [sp] | *(sp) = r2;
0x0004847c bl 0xbc8c | fcn_0000bc8c (r0, r1, r2, r3);
0x00048480 ldr r2, [sp] | r2 = *(sp);
| if (r0 == 0) {
0x00048482 cbnz r0, 0x4848a |
0x00048484 ldrd r1, r3, [r2, 8] | __asm ("ldrd r1, r3, [r2, 8]");
0x00048488 b 0x483c2 | goto label_3;
| }
0x0004848a mov.w r3, 1 | r3 = 1;
0x0004848e strb r3, [r2, 5] | *((r2 + 5)) = r3;
0x00048490 b 0x483ce | goto label_4;
| label_9:
0x00048492 mov r1, r3 | r1 = r3;
0x00048494 lsls r3, r6, 1 | r3 = r6 << 1;
0x00048496 adds r2, r3, r6 | r2 = r3 + r6;
0x00048498 str r3, [sp, 0x14] | var_14h = r3;
0x0004849a lsls r0, r2, 4 | r0 = r2 << 4;
0x0004849c str r2, [sp] | *(sp) = r2;
0x0004849e blx 0x7f18 | fcn_00007f18 ();
0x000484a2 str r0, [sp, 4] | var_4h = r0;
| if (r0 == 0) {
0x000484a4 cbz r0, 0x484fc | goto label_16;
| }
0x000484a6 ldr r2, [sp] | r2 = *(sp);
0x000484a8 mov r1, sl | r1 = sl;
0x000484aa ldr r3, [sp, 0x14] | r3 = var_14h;
0x000484ac lsls r2, r2, 3 | r2 <<= 3;
0x000484ae str r3, [sp] | *(sp) = r3;
0x000484b0 str r2, [sp, 0x14] | var_14h = r2;
0x000484b2 blx 0x7dcc | fcn_00007dcc ();
0x000484b6 ldr r2, [sp, 8] | r2 = var_8h;
0x000484b8 cmp sl, r2 |
0x000484ba ldr r2, [sp, 0x14] | r2 = var_14h;
| if (sl == r2) {
0x000484bc beq 0x484e2 | goto label_17;
| }
0x000484be mov r0, sl | r0 = sl;
0x000484c0 str r2, [sp, 0x14] | var_14h = r2;
0x000484c2 blx 0x84f8 | fcn_000084f8 ();
0x000484c6 ldr.w sl, [sp, 4] | sl = var_4h;
0x000484ca ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x000484cc ldr r2, [sp, 0x14] | r2 = var_14h;
0x000484ce b 0x4834a | goto label_5;
0x000484d0 ldr.w r3, [fp] | r3 = *(fp);
0x000484d4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000484d6 str r3, [r2] | *(r2) = r3;
0x000484d8 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x000484dc ldr r2, [sp, 0x10] | r2 = var_10h;
0x000484de str r3, [r2] | *(r2) = r3;
0x000484e0 b 0x48448 |
| }
| label_17:
0x000484e2 ldr.w sl, [sp, 4] | sl = var_4h;
0x000484e6 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x000484e8 b 0x4834a | goto label_5;
| label_10:
0x000484ea ldr.w r3, [sl] | r3 = *(sl);
0x000484ee ldr r1, [sp, 0xc] | r1 = var_ch;
0x000484f0 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000484f2 str r3, [r1] | *(r1) = r3;
0x000484f4 ldr.w r3, [sl, 4] | r3 = var_4h_2;
0x000484f8 str r3, [r2] | *(r2) = r3;
0x000484fa b 0x48448 | goto label_6;
| label_16:
0x000484fc movs r5, 7 | r5 = 7;
0x000484fe str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h]");
0x00048502 b 0x48448 | goto label_6;
| label_15:
0x00048504 blx 0x7e8c | fcn_00007e8c ();
0x00048508 ldr r2, [r2, r6] | r2 = *((r2 + r6));
0x0004850a movs r0, r1 | r0 = r1;
0x0004850c lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0004850e movs r0, r0 |
0x00048510 ldr r6, [r6, r0] | r6 = *((r6 + r0));
0x00048512 movs r0, r1 | r0 = r1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x48570 */
| #include <stdint.h>
|
; (fcn) fcn.00048570 () | void fcn_00048570 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00048570 lsrsmi lr, sp, 0x12 | __asm ("lsrsmi lr, sp, 0x12");
0x00048574 mov r5, r0 | r5 = r0;
0x00048576 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00048578 sub sp, 0xc |
0x0004857a mov r8, r2 | r8 = r2;
0x0004857c mov r7, r3 | r7 = r3;
0x0004857e ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x00048580 add.w ip, r0, 0xf |
0x00048584 cmp ip, r4 |
| if (ip < r4) {
0x00048586 bls 0x485b6 | goto label_0;
| }
0x00048588 cmp r4, 0 |
0x0004858a it eq |
| if (r4 != 0) {
0x0004858c moveq r4, 0x40 | r4 = 0x40;
| }
0x0004858e asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x00048590 cmp r4, ip |
0x00048592 sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r4 >= ip) {
0x00048596 bhs 0x485a4 | goto label_1;
| }
| do {
0x00048598 adds r4, r4, r4 | r4 += r4;
0x0004859a adcs r3, r3 | __asm ("adcs r3, r3");
0x0004859c cmp r4, ip |
0x0004859e sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
0x000485a2 blo 0x48598 |
| } while (r4 <= ip);
| label_1:
0x000485a4 ldr r0, [r5] | r0 = *(r5);
0x000485a6 mov r2, r4 | r2 = r4;
0x000485a8 str r1, [sp, 4] | var_4h = r1;
0x000485aa blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 == 0) {
0x000485ae cbz r0, 0x485c8 | goto label_2;
| }
0x000485b0 ldr r1, [sp, 4] | r1 = var_4h;
0x000485b2 str r4, [r5, 8] | *((r5 + 8)) = r4;
0x000485b4 str r0, [r5] | *(r5) = r0;
| label_0:
0x000485b6 mov r0, r5 | r0 = r5;
0x000485b8 mov r2, r8 | r2 = r8;
0x000485ba mov r3, r7 | r3 = r7;
0x000485bc bl 0x1d630 | fcn_0001d630 (r0, r1, r2, r3);
0x000485c0 movs r0, 0 | r0 = 0;
| do {
0x000485c2 add sp, 0xc |
0x000485c4 pop.w {r4, r5, r7, r8, pc} |
| label_2:
0x000485c8 movs r0, 7 | r0 = 7;
0x000485ca b 0x485c2 |
| } 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/libsqlite3.so.0.8.6 @ 0x48768 */
| #include <stdint.h>
|
; (fcn) fcn.00048768 () | void fcn_00048768 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00048768 push.w {r4, r5, r6, r7, r8, lr} |
0x0004876c mov r5, r1 | r5 = r1;
0x0004876e ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00048770 mov r6, r2 | r6 = r2;
0x00048772 mov r7, r3 | r7 = r3;
0x00048774 ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x00048776 add.w ip, r1, 9 |
0x0004877a ldr r2, [r5] | r2 = *(r5);
0x0004877c cmp ip, r4 |
| if (ip > r4) {
0x0004877e bhi 0x487c2 | goto label_2;
| }
| label_0:
0x00048780 cmp r6, 0x80 |
0x00048782 add.w r0, r2, r1 | r0 = r2 + r1;
0x00048786 sbcs r3, r7, 0 | __asm ("sbcs r3, r7, 0");
0x0004878a itt lo |
| if (r6 >= 0x80) {
0x0004878c movlo r4, 1 | r4 = 1;
| }
| if (r6 >= 0x80) {
0x0004878e strblo r6, [r2, r1] | *((r2 + r1)) = r6;
| }
| if (r6 <= 0x80) {
0x00048790 blo 0x487a6 | goto label_3;
| }
0x00048792 cmp.w r6, 0x4000 |
0x00048796 sbcs r3, r7, 0 | __asm ("sbcs r3, r7, 0");
| if (r6 <= 0x4000) {
0x0004879a blo 0x487b0 | goto label_4;
| }
0x0004879c mov r2, r6 | r2 = r6;
0x0004879e mov r3, r7 | r3 = r7;
0x000487a0 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x000487a4 mov r4, r0 | r4 = r0;
| do {
| label_3:
0x000487a6 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000487a8 add r3, r4 | r3 += r4;
0x000487aa str r3, [r5, 4] | *((r5 + 4)) = r3;
| label_1:
0x000487ac pop.w {r4, r5, r6, r7, r8, pc} |
| label_4:
0x000487b0 lsrs r3, r6, 7 | r3 = r6 >> 7;
0x000487b2 and r6, r6, 0x7f | r6 &= 0x7f;
0x000487b6 movs r4, 2 | r4 = 2;
0x000487b8 strb r6, [r0, 1] | *((r0 + 1)) = r6;
0x000487ba orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x000487be strb r3, [r0] | *(r0) = r3;
0x000487c0 b 0x487a6 |
| } while (1);
| label_2:
0x000487c2 cmp r4, 0 |
0x000487c4 mov r8, r0 | r8 = r0;
0x000487c6 it eq |
| if (r4 != 0) {
0x000487c8 moveq r4, 0x40 | r4 = 0x40;
| }
0x000487ca asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x000487cc cmp r4, ip |
0x000487ce sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x000487d0 lsls r0, r0, 4 | r0 <<= 4;
| if (r0 >= r0) {
0x000487d2 bhs 0x487e0 | goto label_5;
| }
| do {
0x000487d4 adds r4, r4, r4 | r4 += r4;
0x000487d6 adcs r3, r3 | __asm ("adcs r3, r3");
0x000487d8 cmp r4, ip |
0x000487da sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x000487de blo 0x487d4 |
| } while (r4 <= ip);
| label_5:
0x000487e0 mov r0, r2 | r0 = r2;
0x000487e2 mov r2, r4 | r2 = r4;
0x000487e4 blx 0x8638 | r0 = fcn_00008638 ();
0x000487e8 mov r2, r0 | r2 = r0;
| if (r0 != 0) {
0x000487ea cbz r0, 0x487f4 |
0x000487ec ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x000487ee str r4, [r5, 8] | *((r5 + 8)) = r4;
0x000487f0 str r0, [r5] | *(r5) = r0;
0x000487f2 b 0x48780 | goto label_0;
| }
0x000487f4 movs r3, 7 | r3 = 7;
0x000487f6 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x000487fa b 0x487ac | 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/libsqlite3.so.0.8.6 @ 0x487fc */
| #include <stdint.h>
|
; (fcn) fcn.000487fc () | void fcn_000487fc (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (r2 == 0) {
0x000487fc cbz r2, 0x48856 | goto label_0;
| }
0x000487fe push.w {r4, r5, r6, r7, r8, lr} |
0x00048802 mov r7, r3 | r7 = r3;
0x00048804 ldrd r3, r4, [r1, 4] | __asm ("ldrd r3, r4, [r1, 4]");
0x00048808 mov r8, r0 | r8 = r0;
0x0004880a mov r5, r1 | r5 = r1;
0x0004880c mov r6, r2 | r6 = r2;
0x0004880e ldr r0, [r1] | r0 = *(r1);
0x00048810 add.w ip, r3, r2 |
0x00048814 cmp ip, r4 |
| if (ip < r4) {
0x00048816 bls 0x48842 | goto label_1;
| }
0x00048818 cmp r4, 0 |
0x0004881a it eq |
| if (r4 != 0) {
0x0004881c moveq r4, 0x40 | r4 = 0x40;
| }
0x0004881e asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x00048820 cmp r4, ip |
0x00048822 sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r4 >= ip) {
0x00048826 bhs 0x48834 | goto label_2;
| }
| do {
0x00048828 adds r4, r4, r4 | r4 += r4;
0x0004882a adcs r3, r3 | __asm ("adcs r3, r3");
0x0004882c cmp r4, ip |
0x0004882e sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
0x00048832 blo 0x48828 |
| } while (r4 <= ip);
| label_2:
0x00048834 mov r2, r4 | r2 = r4;
0x00048836 blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 == 0) {
0x0004883a cbz r0, 0x48858 | goto label_3;
| }
0x0004883c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0004883e str r4, [r5, 8] | *((r5 + 8)) = r4;
0x00048840 str r0, [r5] | *(r5) = r0;
| label_1:
0x00048842 add r0, r3 | r0 += r3;
0x00048844 mov r1, r7 | r1 = r7;
0x00048846 mov r2, r6 | r2 = r6;
0x00048848 blx 0x7dcc | fcn_00007dcc ();
0x0004884c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0004884e add r3, r6 | r3 += r6;
0x00048850 str r3, [r5, 4] | *((r5 + 4)) = r3;
| do {
0x00048852 pop.w {r4, r5, r6, r7, r8, pc} |
| label_0:
0x00048856 bx lr | return;
| label_3:
0x00048858 movs r3, 7 | r3 = 7;
0x0004885a str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0004885e b 0x48852 |
| } 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/libsqlite3.so.0.8.6 @ 0x48860 */
| #include <stdint.h>
|
; (fcn) fcn.00048860 () | void fcn_00048860 (int16_t arg_0h, int16_t arg_4h, int16_t arg1) {
| int16_t var_20h;
| int16_t var_24h_2;
| 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_2;
| int16_t var_24h;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x00048860 ldr r1, [pc, 0x9c] |
0x00048862 movs r2, 0 | r2 = 0;
0x00048864 ldr r3, [pc, 0x9c] | r3 = *(0x48904);
0x00048866 push {r4, r5, r6, r7, lr} |
0x00048868 sub sp, 0xc |
0x0004886a add r1, pc | r1 = 0x9116e;
0x0004886c mov r4, r0 | r4 = r0;
0x0004886e ldr r3, [r1, r3] |
0x00048870 ldr r3, [r3] | r3 = *(0x9116e);
0x00048872 str r3, [sp, 4] | var_4h = r3;
0x00048874 mov.w r3, 0 | r3 = 0;
0x00048878 ldr r3, [r0, 0x10] | r3 = *(arg_0hx10);
0x0004887a str r2, [sp] | *(sp) = r2;
0x0004887c ldrb r1, [r3, 0x10] | r1 = *((r3 + 0x10));
| if (r1 == 0) {
0x0004887e cbz r1, 0x4889e | goto label_17;
| }
0x00048880 mov r0, r2 | r0 = r2;
0x00048882 movs r3, 1 | r3 = 1;
0x00048884 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| do {
0x00048886 ldr r2, [pc, 0x80] |
0x00048888 ldr r3, [pc, 0x78] | r3 = *(0x48904);
0x0004888a add r2, pc | r2 = 0x91198;
0x0004888c ldr r3, [r2, r3] | r3 = *(0x91198);
0x0004888e ldr r2, [r3] | r2 = *(0x91198);
0x00048890 ldr r3, [sp, 4] | r3 = var_4h;
0x00048892 eors r2, r3 | r2 ^= r3;
0x00048894 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00048898 bne 0x488fa | goto label_18;
| }
0x0004889a add sp, 0xc |
0x0004889c pop {r4, r5, r6, r7, pc} |
| label_17:
0x0004889e ldr r2, [r3, 0x48] | r2 = *((r3 + 0x48));
0x000488a0 ldrh r2, [r2, 4] | r2 = *((r2 + 4));
0x000488a2 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x000488a6 add.w r2, r3, r2, lsl 5 | r2 = r3 + (r2 << 5);
0x000488aa ldrd r5, r6, [r2, 0x94] | __asm ("ldrd r5, r6, [r2, 0x94]");
0x000488ae subs r6, 1 | r6--;
| if (r5 != 0) {
0x000488b0 cbz r5, 0x488b4 |
0x000488b2 adds r5, 1 | r5++;
| }
0x000488b4 ldr r7, [r4, 0x14] | r7 = *((r4 + 0x14));
0x000488b6 cmp r7, 0 |
| if (r7 >= 0) {
0x000488b8 blt 0x488de |
0x000488ba cmp r7, r6 |
0x000488bc mov r2, r7 | r2 = r7;
0x000488be ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x000488c0 it ge |
| if (r7 < r6) {
0x000488c2 movge r2, r6 | r2 = r6;
| }
0x000488c4 mov r1, r5 | r1 = r5;
0x000488c6 blx 0x7e40 | r0 = fcn_00007e40 ();
0x000488ca cmp r0, 0 |
| if (r0 < 0) {
0x000488cc blt 0x488f4 | goto label_19;
| }
0x000488ce cmp r7, r6 |
0x000488d0 ite ge |
| if (r7 < r6) {
0x000488d2 movge r7, 0 | r7 = 0;
| }
| if (r7 >= r6) {
0x000488d4 movlt r7, 1 | r7 = 1;
| }
0x000488d6 cmp r0, 0 |
0x000488d8 it ne |
| if (r0 == 0) {
0x000488da movne r7, 0 | r7 = 0;
| }
| if (r7 != 0) {
0x000488dc cbnz r7, 0x488f4 | goto label_19;
| }
| }
| label_0:
0x000488de movs r0, 0 | r0 = 0;
0x000488e0 mov r3, r5 | r3 = r5;
0x000488e2 str r0, [r4, 0x34] | *((r4 + 0x34)) = r0;
0x000488e4 mov r2, r6 | r2 = r6;
0x000488e6 mov r0, sp | r0 = sp;
0x000488e8 add.w r1, r4, 0x30 | r1 = r4 + 0x30;
0x000488ec bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x000488f0 ldr r0, [sp] | r0 = *(sp);
0x000488f2 b 0x48886 |
| } while (1);
| label_19:
0x000488f4 movs r3, 1 | r3 = 1;
0x000488f6 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000488f8 b 0x488de | goto label_0;
| label_18:
0x000488fa blx 0x7e8c | fcn_00007e8c ();
0x000488fe nop |
0x00048900 strb r6, [r4, r0] | *((r4 + r0)) = r6;
0x00048902 movs r0, r1 | r0 = r1;
0x00048904 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00048906 movs r0, r0 |
0x00048908 strb r6, [r0, r0] | *((r0 + r0)) = r6;
0x0004890a movs r0, r1 | r0 = r1;
0x0004890c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00048910 sub sp, 0x2c |
0x00048912 ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x00048914 mov fp, r1 |
0x00048916 add r1, sp, 0x18 | r1 += var_18h;
0x00048918 mov sl, r3 | sl = r3;
0x0004891a ldr r4, [pc, 0x238] |
0x0004891c mov r5, r1 | r5 = r1;
0x0004891e str r1, [sp, 8] | var_8h = r1;
0x00048920 movs r3, 0 | r3 = 0;
0x00048922 ldr r1, [pc, 0x234] | r1 = *(0x48b5a);
0x00048924 add r4, pc | r4 = 0x9147e;
0x00048926 ldr r1, [r4, r1] |
0x00048928 ldr r1, [r1] | r1 = *(0x9147e);
0x0004892a str r1, [sp, 0x24] | var_24h = r1;
0x0004892c mov.w r1, 0 | r1 = 0;
0x00048930 ldr.w r1, [sl, 4] | r1 = *((sl + 4));
0x00048934 str r3, [sp, 0x18] | var_18h = r3;
0x00048936 strd r3, r3, [r5, 4] | __asm ("strd r3, r3, [var_20h_2]");
0x0004893a mov r5, r0 | r5 = r0;
0x0004893c adds r2, r2, r1 | r2 += r1;
| if (r2 != r2) {
0x0004893e bne 0x48a0c | goto label_20;
| }
0x00048940 ldr r6, [r0, 0x24] | r6 = *((r0 + 0x24));
0x00048942 cmp r6, 0 |
| if (r6 != 0) {
0x00048944 bne 0x489f0 | goto label_2;
| }
| label_1:
0x00048946 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0004894a cmp r3, 0 |
0x0004894c itt le |
| if (r3 > 0) {
0x0004894e movle sb, r6 | sb = r6;
| }
| if (r3 > 0) {
0x00048950 movle r4, -1 | r4 = -1;
| }
| if (r3 > 0) {
0x00048954 bgt.w 0x48b3a | goto label_21;
| }
| label_12:
0x00048958 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x0004895c cmp r3, 0 |
0x0004895e ittt le |
| if (r3 > 0) {
0x00048960 movle r5, 0 | r5 = 0;
| }
| if (r3 > 0) {
0x00048962 movle r7, -1 | r7 = -1;
| }
| if (r3 <= 0) {
0x00048966 mov r8, r5 | r8 = r5;
| }
| if (r3 > 0) {
0x00048968 bgt.w 0x48b28 | goto label_22;
| }
| label_11:
0x0004896c movs r2, 0 | r2 = 0;
0x0004896e add r3, sp, 0x10 | r3 += var_10h;
0x00048970 mov r0, r2 | r0 = r2;
0x00048972 str r3, [sp, 4] | var_24h_2 = r3;
| label_5:
0x00048974 adds r3, r4, 1 | r3 = r4 + 1;
0x00048976 beq 0x489da |
| while (r7 >= 0) {
0x00048978 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| label_3:
0x0004897a adds r1, r4, 1 | r1 = r4 + 1;
| if (r1 == r4) {
0x0004897c beq 0x48a38 | goto label_23;
| }
0x0004897e cmp r6, r5 |
0x00048980 sbcs.w r1, sb, r8 | __asm ("sbcs.w r1, sb, r8");
0x00048984 ite lt |
| if (r6 >= r5) {
0x00048986 movlt r1, 1 | r1 = 1;
| }
| if (r6 < r5) {
0x00048988 movge r1, 0 | r1 = 0;
| }
0x0004898a orrs.w r1, r1, r7, lsr 31 | r1 |= (r7 >> 31);
| if (r1 == r1) {
0x0004898e beq 0x48a38 | goto label_23;
| }
0x00048990 subs r2, r6, r2 | r2 = r6 - r2;
0x00048992 ldr.w ip, [sp, 0x18] | ip = var_18h;
0x00048996 sbc.w r1, sb, r0 | __asm ("sbc.w r1, sb, r0");
0x0004899a cmp r2, 0x80 |
0x0004899c sbcs lr, r1, 0 | __asm ("sbcs lr, r1, 0");
0x000489a0 add.w r0, ip, r3 | r0 = ip + r3;
0x000489a4 itt lo |
| if (r2 >= 0x80) {
0x000489a6 strblo r2, [ip, r3] | *((ip + r3)) = r2;
| }
| if (r2 < 0x80) {
0x000489aa movs r0, 1 | r0 = 1;
| }
| if (r0 > 1) {
0x000489ac blo 0x489c0 |
0x000489ae cmp.w r2, 0x4000 |
0x000489b2 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
| if (r2 <= 0x4000) {
0x000489b6 blo.w 0x48ae0 | goto label_24;
| }
0x000489ba mov r3, r1 | r3 = r1;
0x000489bc bl 0x8c4c | fcn_00008c4c (r0, r1, r2);
| }
| label_7:
0x000489c0 ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x000489c4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000489c6 cmp r2, r4 |
0x000489c8 add r3, r0 | r3 += r0;
0x000489ca it le |
| if (r2 > r4) {
0x000489cc movle r2, r6 | r2 = r6;
| }
0x000489ce ldr.w r0, [fp] | r0 = *(fp);
0x000489d2 it le |
| if (r2 > r4) {
0x000489d4 movle r0, sb | r0 = sb;
| }
0x000489d6 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r2 > r4) {
0x000489d8 bgt 0x48ac4 | goto label_25;
| }
0x000489da cmp r7, 0 |
0x000489dc mov.w r4, -1 | r4 = -1;
0x000489e0 bge 0x48978 |
| }
| label_4:
0x000489e2 ldr r0, [sp, 8] | r0 = var_8h;
0x000489e4 mov r1, fp | r1 = fp;
0x000489e6 bl 0xb970 | fcn_0000b970 (r0, r1);
0x000489ea ldr r0, [sp, 0x18] | r0 = var_18h;
0x000489ec blx 0x84f8 | fcn_000084f8 ();
| label_2:
0x000489f0 ldr r2, [pc, 0x168] |
0x000489f2 ldr r3, [pc, 0x164] | r3 = *(0x48b5a);
0x000489f4 add r2, pc | r2 = 0x91554;
0x000489f6 ldr r3, [r2, r3] | r3 = *(0x91554);
0x000489f8 ldr r2, [r3] | r2 = *(0x91554);
0x000489fa ldr r3, [sp, 0x24] | r3 = var_24h;
0x000489fc eors r2, r3 | r2 ^= r3;
0x000489fe mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00048a02 bne.w 0x48b4e | goto label_26;
| }
0x00048a06 add sp, 0x2c |
0x00048a08 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x00048a0c cmp r2, 0x40 |
0x00048a0e mov.w r4, 0x40 | r4 = 0x40;
| if (r2 < 0x40) {
0x00048a12 bls 0x48a20 | goto label_27;
| }
| do {
0x00048a14 adds r4, r4, r4 | r4 += r4;
0x00048a16 adcs r3, r3 | __asm ("adcs r3, r3");
0x00048a18 cmp r4, r2 |
0x00048a1a sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x00048a1e blo 0x48a14 |
| } while (r4 <= r2);
| label_27:
0x00048a20 mov r2, r4 | r2 = r4;
0x00048a22 movs r0, 0 | r0 = 0;
0x00048a24 blx 0x8638 | r0 = fcn_00008638 ();
0x00048a28 cmp r0, 0 |
| if (r0 == 0) {
0x00048a2a beq 0x48b22 | goto label_28;
| }
0x00048a2c ldr r6, [r5, 0x24] | r6 = *((r5 + 0x24));
0x00048a2e str r4, [sp, 0x20] | var_20h_2 = r4;
0x00048a30 str r0, [sp, 0x18] | var_18h = r0;
0x00048a32 cmp r6, 0 |
| if (r6 == 0) {
0x00048a34 beq 0x48946 | goto label_1;
| }
0x00048a36 b 0x489f0 | goto label_2;
| label_23:
0x00048a38 subs r2, r5, r2 | r2 = r5 - r2;
0x00048a3a ldr.w ip, [sp, 0x18] | ip = var_18h;
0x00048a3e sbc.w r1, r8, r0 | __asm ("sbc.w r1, r8, r0");
0x00048a42 cmp r2, 0x80 |
0x00048a44 sbcs lr, r1, 0 | __asm ("sbcs lr, r1, 0");
0x00048a48 add.w r0, ip, r3 | r0 = ip + r3;
0x00048a4c itt lo |
| if (r2 >= 0x80) {
0x00048a4e strblo r2, [ip, r3] | *((ip + r3)) = r2;
| }
| if (r2 < 0x80) {
0x00048a52 movs r0, 1 | r0 = 1;
| }
| if (r0 > 1) {
0x00048a54 blo 0x48a66 |
0x00048a56 cmp.w r2, 0x4000 |
0x00048a5a sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
| if (r2 <= 0x4000) {
0x00048a5e blo 0x48ab2 | goto label_29;
| }
0x00048a60 mov r3, r1 | r3 = r1;
0x00048a62 bl 0x8c4c | fcn_00008c4c (r0, r1, r2);
| }
| label_6:
0x00048a66 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00048a68 adds r2, r4, 1 | r2 = r4 + 1;
0x00048a6a add r3, r0 | r3 += r0;
0x00048a6c str r3, [sp, 0x1c] | var_1ch = r3;
| if (r2 != r4) {
0x00048a6e beq 0x48a8a |
0x00048a70 cmp sb, r8 |
0x00048a72 it eq |
| if (sb == r8) {
0x00048a74 cmpeq r6, r5 | __asm ("cmpeq r6, r5");
| }
| if (sb == r8) {
0x00048a76 beq 0x48af2 | goto label_30;
| }
0x00048a78 ldrd r0, r2, [sl] | __asm ("ldrd r0, r2, [sl]");
0x00048a7c cmp r7, r2 |
| if (r7 < r2) {
0x00048a7e blt 0x48a96 | goto label_31;
| }
| label_9:
0x00048a80 mov r2, r5 | r2 = r5;
0x00048a82 mov r0, r8 | r0 = r8;
0x00048a84 mov.w r7, -1 | r7 = -1;
0x00048a88 b 0x4897a | goto label_3;
| }
| label_8:
0x00048a8a ldrd r0, r3, [sl] | __asm ("ldrd r0, r3, [sl]");
0x00048a8e cmp r7, r3 |
| if (r7 >= r3) {
0x00048a90 bge 0x489e2 | goto label_4;
| }
0x00048a92 mov.w r4, -1 | r4 = -1;
| label_31:
0x00048a96 ldr r1, [sp, 4] | r1 = var_24h_2;
| label_10:
0x00048a98 add r0, r7 | r0 += r7;
0x00048a9a bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00048a9e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00048aa0 mov r2, r5 | r2 = r5;
0x00048aa2 add r7, r0 | r7 += r0;
0x00048aa4 mov r0, r8 | r0 = r8;
0x00048aa6 adds r3, r5, r3 | r3 = r5 + r3;
0x00048aa8 mov r5, r3 | r5 = r3;
0x00048aaa ldr r3, [sp, 0x14] | r3 = var_14h;
0x00048aac adc.w r8, r8, r3 | __asm ("adc.w r8, r8, r3");
0x00048ab0 b 0x48974 | goto label_5;
| label_29:
0x00048ab2 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x00048ab4 and r2, r2, 0x7f | r2 &= 0x7f;
0x00048ab8 strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x00048aba orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00048abe strb r3, [r0] | *(r0) = r3;
0x00048ac0 movs r0, 2 | r0 = 2;
0x00048ac2 b 0x48a66 | goto label_6;
| label_25:
0x00048ac4 add r0, r4 | r0 += r4;
0x00048ac6 ldr r1, [sp, 4] | r1 = var_24h_2;
0x00048ac8 bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00048acc ldr r3, [sp, 0x10] | r3 = var_10h;
0x00048ace mov r2, r6 | r2 = r6;
0x00048ad0 add r4, r0 | r4 += r0;
0x00048ad2 mov r0, sb | r0 = sb;
0x00048ad4 adds r3, r6, r3 | r3 = r6 + r3;
0x00048ad6 mov r6, r3 | r6 = r3;
0x00048ad8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00048ada adc.w sb, sb, r3 | __asm ("adc.w sb, sb, r3");
0x00048ade b 0x48974 | goto label_5;
| label_24:
0x00048ae0 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x00048ae2 and r2, r2, 0x7f | r2 &= 0x7f;
0x00048ae6 strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x00048ae8 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00048aec strb r3, [r0] | *(r0) = r3;
0x00048aee movs r0, 2 | r0 = 2;
0x00048af0 b 0x489c0 | goto label_7;
| label_30:
0x00048af2 ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x00048af6 cmp r2, r4 |
| if (r2 <= r4) {
0x00048af8 ble 0x48a8a | goto label_8;
| }
0x00048afa ldr.w r0, [fp] | r0 = *(fp);
0x00048afe ldr r1, [sp, 4] | r1 = var_24h_2;
0x00048b00 str r3, [sp, 0xc] | var_ch = r3;
0x00048b02 add r0, r4 | r0 += r4;
0x00048b04 bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00048b08 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00048b0a add r4, r0 | r4 += r0;
0x00048b0c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00048b0e adds r2, r6, r2 | r2 = r6 + r2;
0x00048b10 mov r6, r2 | r6 = r2;
0x00048b12 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00048b14 adc.w sb, sb, r2 | __asm ("adc.w sb, sb, r2");
0x00048b18 ldrd r0, r2, [sl] | __asm ("ldrd r0, r2, [sl]");
0x00048b1c cmp r7, r2 |
| if (r7 >= r2) {
0x00048b1e bge 0x48a80 | goto label_9;
| }
0x00048b20 b 0x48a98 | goto label_10;
| label_28:
0x00048b22 movs r3, 7 | r3 = 7;
0x00048b24 str r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
0x00048b26 b 0x489f0 | goto label_2;
| label_22:
0x00048b28 ldr.w r0, [sl] | r0 = *(sl);
0x00048b2c add r1, sp, 0x10 | r1 += var_10h;
0x00048b2e bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00048b32 ldrd r5, r8, [sp, 0x10] | __asm ("ldrd r5, r8, [var_10h]");
0x00048b36 mov r7, r0 | r7 = r0;
0x00048b38 b 0x4896c | goto label_11;
| label_21:
0x00048b3a ldr.w r0, [fp] | r0 = *(fp);
0x00048b3e add r1, sp, 0x10 | r1 += var_10h;
0x00048b40 bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00048b44 ldr r6, [sp, 0x10] | r6 = var_10h;
0x00048b46 mov r4, r0 | r4 = r0;
0x00048b48 ldr.w sb, [sp, 0x14] | sb = var_14h;
0x00048b4c b 0x48958 | goto label_12;
| label_26:
0x00048b4e blx 0x7e8c | fcn_00007e8c ();
0x00048b52 nop |
0x00048b54 strh r4, [r5, r5] | *((r5 + r5)) = r4;
0x00048b56 movs r0, r1 | r0 = r1;
0x00048b58 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00048b5a movs r0, r0 |
0x00048b5c strh r4, [r3, r2] | *((r3 + r2)) = r4;
0x00048b5e movs r0, r1 | r0 = r1;
0x00048b60 ldr r1, [r0, 0x24] | r1 = *((r0 + 0x24));
0x00048b62 push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x00048b66 ldr r5, [sp, 0x24] | r5 = var_24h_2;
0x00048b68 cmp r1, 0 |
| if (r1 == 0) {
0x00048b6a bne 0x48c06 |
0x00048b6c mov sb, r3 | sb = r3;
0x00048b6e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00048b70 mov r6, r2 | r6 = r2;
0x00048b72 ldrd r2, r4, [r5, 4] | __asm ("ldrd r2, r4, [r5, 4]");
0x00048b76 mov r7, r0 | r7 = r0;
0x00048b78 ldr r0, [r5] | r0 = *(r5);
0x00048b7a ldr.w r8, [r3, 0xc] | r8 = *((r3 + 0xc));
0x00048b7e add.w r3, r8, 0x1a | r3 = r8 + 0x1a;
0x00048b82 add r3, r2 | r3 += r2;
0x00048b84 cmp r3, r4 |
| if (r3 > r4) {
0x00048b86 bhi 0x48c0a | goto label_32;
| }
| label_13:
0x00048b88 cmp r6, 0x80 |
0x00048b8a add.w r4, r0, r2 | r4 = r0 + r2;
0x00048b8c lsls r2, r0, 0x10 | r2 = r0 << 0x10;
0x00048b8e sbcs r3, sb, 0 | __asm ("sbcs r3, sb, 0");
0x00048b92 itt lo |
| if (r2 >= r0) {
0x00048b94 movlo r1, 1 | r1 = 1;
| }
| if (r2 >= r0) {
0x00048b96 strblo r6, [r0, r2] | *((r0 + r2)) = r6;
| }
| if (r2 > r0) {
0x00048b98 blo 0x48bb0 |
0x00048b9a cmp.w r6, 0x4000 |
0x00048b9e sbcs r3, sb, 0 | __asm ("sbcs r3, sb, 0");
| if (r6 <= 0x4000) {
0x00048ba2 blo 0x48c38 | goto label_33;
| }
0x00048ba4 mov r2, r6 | r2 = r6;
0x00048ba6 mov r3, sb | r3 = sb;
0x00048ba8 mov r0, r4 | r0 = r4;
0x00048baa bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x00048bae mov r1, r0 | r1 = r0;
| }
| label_14:
0x00048bb0 ldrd r4, r3, [r5] | __asm ("ldrd r4, r3, [r5]");
0x00048bb4 lsl.w r2, r8, 1 | r2 = r8 << 1;
0x00048bb8 cmp r2, 0x80 |
0x00048bba add r1, r3 | r1 += r3;
0x00048bbc asr.w r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00048bc0 str r1, [r5, 4] | *((r5 + 4)) = r1;
0x00048bc2 add.w r0, r4, r1 | r0 = r4 + r1;
0x00048bc6 sbcs r6, r3, 0 | __asm ("sbcs r6, r3, 0");
0x00048bca itt lo |
| if (r2 >= 0x80) {
0x00048bcc movlo r3, 1 | r3 = 1;
| }
| if (r2 >= 0x80) {
0x00048bce strblo r2, [r4, r1] | *((r4 + r1)) = r2;
| }
| if (r2 > 0x80) {
0x00048bd0 blo 0x48be2 |
0x00048bd2 cmp.w r2, 0x4000 |
0x00048bd6 sbcs r6, r3, 0 | __asm ("sbcs r6, r3, 0");
| if (r2 <= 0x4000) {
0x00048bda blo 0x48c4a | goto label_34;
| }
0x00048bdc bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x00048be0 mov r3, r0 | r3 = r0;
| }
| label_15:
0x00048be2 ldrd r0, r2, [r5] | __asm ("ldrd r0, r2, [r5]");
0x00048be6 add r3, r2 | r3 += r2;
0x00048be8 mov r2, r8 | r2 = r8;
0x00048bea add r0, r3 | r0 += r3;
0x00048bec str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00048bee ldr r3, [sp, 0x20] | r3 = var_20h;
0x00048bf0 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00048bf2 blx 0x7dcc | fcn_00007dcc ();
0x00048bf6 ldrd r1, r3, [r5] | __asm ("ldrd r1, r3, [r5]");
0x00048bfa movs r2, 0 | r2 = 0;
0x00048bfc add r3, r8 | r3 += r8;
0x00048bfe adds r0, r1, r3 | r0 = r1 + r3;
0x00048c00 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00048c02 str r2, [r1, r3] | *((r1 + r3)) = r2;
0x00048c04 str r2, [r0, 4] | *((r0 + 4)) = r2;
| }
| label_16:
0x00048c06 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_32:
0x00048c0a cmp r4, 0 |
0x00048c0c it eq |
| if (r4 != 0) {
0x00048c0e moveq r4, 0x40 | r4 = 0x40;
| }
0x00048c10 asrs r1, r4, 0x1f | r1 = r4 >> 0x1f;
0x00048c12 cmp r4, r3 |
0x00048c14 sbcs r2, r1, 0 | __asm ("sbcs r2, r1, 0");
| if (r4 >= r3) {
0x00048c18 bhs 0x48c26 | goto label_35;
| }
| do {
0x00048c1a adds r4, r4, r4 | r4 += r4;
0x00048c1c adcs r1, r1 | __asm ("adcs r1, r1");
0x00048c1e cmp r4, r3 |
0x00048c20 sbcs r2, r1, 0 | __asm ("sbcs r2, r1, 0");
0x00048c24 blo 0x48c1a |
| } while (r4 <= r3);
| label_35:
0x00048c26 mov r3, r1 | r3 = r1;
0x00048c28 mov r2, r4 | r2 = r4;
0x00048c2a blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 != 0) {
0x00048c2e cbz r0, 0x48c5c |
0x00048c30 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00048c32 str r4, [r5, 8] | *((r5 + 8)) = r4;
0x00048c34 str r0, [r5] | *(r5) = r0;
0x00048c36 b 0x48b88 | goto label_13;
| label_33:
0x00048c38 lsrs r3, r6, 7 | r3 = r6 >> 7;
0x00048c3a and r6, r6, 0x7f | r6 &= 0x7f;
0x00048c3e movs r1, 2 | r1 = 2;
0x00048c40 strb r6, [r4, 1] | *((r4 + 1)) = r6;
0x00048c42 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00048c46 strb r3, [r4] | *(r4) = r3;
0x00048c48 b 0x48bb0 | goto label_14;
| label_34:
0x00048c4a lsrs r3, r2, 7 | r3 = r2 >> 7;
0x00048c4c and r2, r2, 0x7f | r2 &= 0x7f;
0x00048c50 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00048c54 strb r3, [r4, r1] | *((r4 + r1)) = r3;
0x00048c56 movs r3, 2 | r3 = 2;
0x00048c58 strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x00048c5a b 0x48be2 | goto label_15;
| }
0x00048c5c movs r3, 7 | r3 = 7;
0x00048c5e str r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
0x00048c60 b 0x48c06 | goto label_16;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x493e4 */
| #include <stdint.h>
|
; (fcn) fcn.000493e4 () | void fcn_000493e4 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000493e4 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000493e8 mov r4, r2 | r4 = r2;
0x000493ea mov r8, r0 | r8 = r0;
0x000493ec mov sb, r1 | sb = r1;
0x000493ee mov r2, r3 | r2 = r3;
0x000493f0 mov r1, r4 | r1 = r4;
0x000493f2 adds r0, 8 | r0 += 8;
0x000493f4 bl 0x3d434 | fcn_0003d434 (r0, r1, r2);
0x000493f8 ldr.w r7, [r8, 8] | r7 = *((r8 + 8));
0x000493fc cmp r7, 0 |
| if (r7 != 0) {
0x000493fe bne 0x4949e | goto label_2;
| }
0x00049400 ldrb r3, [r0] | r3 = *(r0);
0x00049402 mov r6, r0 | r6 = r0;
0x00049404 ldr.w r5, [r8] | r5 = *(r8);
0x00049408 cmp r3, 0x27 |
0x0004940a it ne |
| if (r3 != 0x27) {
0x0004940c cmpne r3, 0x5b | __asm ("cmpne r3, 0x5b");
| }
| if (r3 != 0x27) {
0x0004940e beq 0x49418 |
0x00049410 cmp r3, 0x60 |
0x00049412 it ne |
| if (r3 != 0x60) {
0x00049414 cmpne r3, 0x22 | __asm ("cmpne r3, 0x22");
| }
| if (r3 != 0x60) {
0x00049416 bne 0x4941e | goto label_3;
| }
| }
0x00049418 mov r0, r6 | r0 = r6;
0x0004941a bl 0xb750 | fcn_0000b750 (r0);
| label_3:
0x0004941e ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00049420 movs r4, 0 | r4 = 0;
0x00049422 cmp r3, 0 |
| if (r3 > 0) {
0x00049424 bgt 0x4942e | goto label_4;
| }
0x00049426 b 0x49440 | goto label_5;
| do {
0x00049428 adds r4, 1 | r4++;
0x0004942a cmp r4, r3 |
| if (r4 >= r3) {
0x0004942c bge 0x49440 | goto label_5;
| }
| label_4:
0x0004942e ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00049430 mov r1, r6 | r1 = r6;
0x00049432 ldr.w r0, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| r0 = *((r3 + offset_0));
0x00049436 blx 0x831c | fcn_0000831c ();
0x0004943a ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0004943c cmp r0, 0 |
0x0004943e bne 0x49428 |
| } while (r0 != 0);
| label_5:
0x00049440 cmp r4, r3 |
| if (r4 == r3) {
0x00049442 beq 0x4948c | goto label_6;
| }
0x00049444 cmp.w sb, 0 |
| if (sb == 0) {
0x00049448 beq 0x494ac | goto label_7;
| }
0x0004944a ldr.w sl, [sb] | sl = *(sb);
0x0004944e movs r3, 0 | r3 = 0;
0x00049450 mov r0, sb | r0 = sb;
0x00049452 add.w r2, sl, 2 | r2 = sl + 2;
0x00049456 lsls r2, r2, 2 | r2 <<= 2;
0x00049458 blx 0x8638 | r0 = fcn_00008638 ();
0x0004945c mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0004945e cbz r0, 0x494ba | goto label_8;
| }
0x00049460 cmp.w sl, 0 |
0x00049464 add.w r1, r0, 4 | r1 = r0 + 4;
| if (sl <= 0) {
0x00049468 ble 0x4950a | goto label_9;
| }
0x0004946a mov r3, r1 | r3 = r1;
0x0004946c b 0x49476 |
| while (r4 != r2) {
| if (sl < 0) {
0x0004946e blt 0x494d0 | goto label_10;
| }
0x00049470 adds r7, 1 | r7++;
0x00049472 cmp sl, r7 |
| if (sl == r7) {
0x00049474 beq 0x494f6 | goto label_11;
| }
0x00049476 ldr r2, [r3] | r2 = *(r3);
0x00049478 mov r8, r3 | r8 = r3;
0x0004947a adds r3, 4 | r3 += 4;
0x0004947c cmp r4, r2 |
0x0004947e bne 0x4946e |
| }
| label_0:
0x00049480 mov r0, r6 | r0 = r6;
0x00049482 blx 0x84f8 | fcn_000084f8 ();
0x00049486 mov r0, r5 | r0 = r5;
0x00049488 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_6:
0x0004948c ldr r1, [pc, 0x84] |
0x0004948e mov r0, r8 | r0 = r8;
0x00049490 mov r2, r6 | r2 = r6;
0x00049492 add r1, pc | r1 = 0x929aa;
0x00049494 bl 0x49380 | fcn_00049380 (r0);
0x00049498 mov r0, r6 | r0 = r6;
0x0004949a blx 0x84f8 | fcn_000084f8 ();
| label_2:
0x0004949e mov r0, sb | r0 = sb;
0x000494a0 movs r5, 0 | r5 = 0;
0x000494a2 blx 0x84f8 | fcn_000084f8 ();
| do {
0x000494a6 mov r0, r5 | r0 = r5;
0x000494a8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_7:
0x000494ac movs r2, 8 | r2 = 8;
0x000494ae movs r3, 0 | r3 = 0;
0x000494b0 mov r0, sb | r0 = sb;
0x000494b2 blx 0x8638 | r0 = fcn_00008638 ();
0x000494b6 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x000494b8 cbnz r0, 0x49500 | goto label_12;
| }
| label_8:
0x000494ba movs r3, 7 | r3 = 7;
0x000494bc mov r0, r6 | r0 = r6;
0x000494be str.w r3, [r8, 8] | __asm ("str.w r3, [r8, 8]");
0x000494c2 movs r5, 0 | r5 = 0;
0x000494c4 blx 0x84f8 | fcn_000084f8 ();
0x000494c8 mov r0, sb | r0 = sb;
0x000494ca blx 0x84f8 | fcn_000084f8 ();
0x000494ce b 0x494a6 |
| } while (1);
| label_10:
0x000494d0 cmp sl, r7 |
0x000494d2 add.w sb, sl, 1 | sb = sl + 1;
| if (sl <= r7) {
0x000494d6 ble 0x494ec | goto label_1;
| }
0x000494d8 adds r3, r7, 1 | r3 = r7 + 1;
0x000494da sub.w r2, sl, r7 | r2 = sl - r7;
0x000494de lsls r3, r3, 2 | r3 <<= 2;
0x000494e0 lsls r2, r2, 2 | r2 <<= 2;
0x000494e2 subs r7, r3, 4 | r7 = r3 - 4;
0x000494e4 adds r0, r1, r3 | r0 = r1 + r3;
0x000494e6 add r1, r7 | r1 += r7;
0x000494e8 blx 0x7d44 | fcn_00007d44 ();
| do {
| label_1:
0x000494ec str.w r4, [r8] | __asm ("str.w r4, [r8]");
0x000494f0 str.w sb, [r5] | __asm ("str.w sb, [r5]");
0x000494f4 b 0x49480 | goto label_0;
| label_11:
0x000494f6 add.w r8, r1, sl, lsl 2 | r8 = r1 + (sl << 2);
0x000494fa add.w sb, sl, 1 | sb = sl + 1;
0x000494fe b 0x494ec |
| } while (1);
| label_12:
0x00049500 add.w r8, r5, 4 | r8 = r5 + 4;
0x00049504 mov.w sb, 1 | sb = 1;
0x00049508 b 0x494ec | goto label_1;
| label_9:
0x0004950a add.w sb, sl, 1 | sb = sl + 1;
0x0004950e mov r8, r1 | r8 = r1;
0x00049510 b 0x494ec | 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/libsqlite3.so.0.8.6 @ 0x49778 */
| #include <stdint.h>
|
; (fcn) fcn.00049778 () | void fcn_00049778 (int16_t arg_0h, int16_t arg_1h, int16_t arg_4h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ah, int16_t arg_48h, int16_t arg_4b8h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_74h;
| int16_t var_80h;
| int16_t var_f4h;
| int16_t var_104h;
| r0 = arg1;
| r1 = arg2;
0x00049778 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0004977c sub sp, 0x10c |
0x0004977e str r1, [sp, 0xc] | var_ch = r1;
0x00049780 mov r6, r0 | r6 = r0;
0x00049782 ldrb r3, [r1] | r3 = *(r1);
0x00049784 ldr.w r1, [pc, 0xa1c] |
0x00049788 ldr r0, [r0, 0x18] | r0 = *(arg_0hx18);
0x0004978a ldr.w r2, [pc, 0xa1c] | r2 = *(0x4a1aa);
0x0004978e cmp r3, 0x4b |
0x00049790 add r1, pc | r1 = 0x93938;
0x00049792 str r0, [sp, 0x40] | var_40h = r0;
0x00049794 ldr r2, [r1, r2] |
0x00049796 ldr r2, [r2] | r2 = *(0x93938);
0x00049798 str r2, [sp, 0x104] | var_104h = r2;
0x0004979a mov.w r2, 0 | r2 = 0;
0x0004979e ldr r2, [r0] | r2 = *(r0);
0x000497a0 str r2, [sp, 0x20] | var_20h = r2;
| if (r3 > 0x4b) {
0x000497a2 bhi 0x49874 | goto label_109;
| }
0x000497a4 cmp r3, 0x13 |
| if (r3 < 0x13) {
0x000497a6 bls 0x4983e | goto label_0;
| }
0x000497a8 sub.w r2, r3, 0x14 | r2 = r3 - 0x14;
0x000497ac cmp r2, 0x37 |
| if (r2 > 0x37) {
0x000497ae bhi 0x4983e | goto label_0;
| }
| /* switch table (57 cases) at 0x497b4 */
0x000497b0 tbh [pc, r2, lsl 1] | __asm ("tbh [pc, r2, lsl 1]");
0x00049824 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00049826 movw r1, 0x44a6 | r1 = 0x44a6;
0x0004982a ldr r4, [sp, 0xc] | r4 = var_ch;
0x0004982c ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0004982e ldrh r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00049830 ldr r0, [r2, 0x18] | r0 = *((r2 + 0x18));
0x00049832 ldr r2, [r2, 0x30] | r2 = *((r2 + 0x30));
0x00049834 subs r3, 1 | r3--;
0x00049836 strh r1, [r4] | *(r4) = r1;
0x00049838 str r0, [r4, 0x2c] | *((r4 + 0x2c)) = r0;
0x0004983a strh r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0004983c str r2, [r4, 0x1c] | *((r4 + 0x1c)) = r2;
| do {
| label_0:
0x0004983e invalid |
0x00049840 ldr r3, [r2, 0x24] | r3 = *((r2 + 0x24));
0x00049842 cmp r3, 0 |
| if (r3 != 0) {
0x00049844 bne 0x4991c | goto label_6;
| }
0x00049846 ldr r3, [r2] | r3 = *(r2);
0x00049848 ldrb.w r0, [r3, 0x53] | r0 = *((r3 + 0x53));
0x0004984c subs r0, 0 |
0x0004984e it ne |
| if (r0 == 0) {
0x00049850 movne r0, 1 | r0 = 1;
| }
0x00049852 lsls r0, r0, 1 | r0 <<= 1;
| label_1:
0x00049854 ldr.w r2, [pc, 0x954] |
0x00049858 ldr.w r3, [pc, 0x94c] | r3 = *(0x4a1a8);
0x0004985c add r2, pc | r2 = 0x93a0c;
0x0004985e ldr r3, [r2, r3] | r3 = *(0x93a0c);
0x00049860 ldr r2, [r3] | r2 = *(0x93a0c);
0x00049862 ldr r3, [sp, 0x104] | r3 = var_104h;
0x00049864 eors r2, r3 | r2 ^= r3;
0x00049866 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004986a bne.w 0x4b0a6 | goto label_110;
| }
0x0004986e add sp, 0x10c |
0x00049870 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_109:
0x00049874 add.w r2, r3, 0x77 | r2 = r3 + 0x77;
0x00049878 uxtb r2, r2 | r2 = (int8_t) r2;
0x0004987a cmp r2, 0x22 |
0x0004987c bhi 0x4983e |
| } while (r2 > 0x22);
0x0004987e subs r3, 0x89 | r3 -= 0x89;
0x00049880 cmp r3, 0x22 |
| if (r3 > 0x22) {
0x00049882 bhi 0x4983e | goto label_0;
| }
0x00049884 adr r2, 8 | r2 = 8;
0x00049886 ldr.w r3, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r2 + offset_0));
0x0004988a add r2, r3 | r2 += r3;
| /* switch table (35 cases) at 0x49890 */
0x0004988c bx r2 | return uint32_t (*r2)() ();
| label_6:
0x0004991c movs r0, 2 | r0 = 2;
0x0004991e b 0x49854 | goto label_1;
0x00049920 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00049922 ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
| if (r4 != 0) {
0x00049924 cbnz r4, 0x49934 | goto label_111;
| }
0x00049926 b 0x49948 | goto label_10;
| do {
0x00049928 lsls r2, r3, 0xd | r2 = r3 << 0xd;
0x0004992a itet mi |
| if (r2 >= r3) {
0x0004992c ldrmi r3, [r4, 0x14] | r3 = *((r4 + 0x14));
| }
| if (r2 < r3) {
0x0004992e ldrpl r4, [r4, 0xc] | r4 = *((r4 + 0xc));
| }
| if (r2 >= r3) {
0x00049930 ldrmi r4, [r3, 8] | r4 = *((r3 + 8));
| }
| if (r4 == 0) {
0x00049932 cbz r4, 0x49948 | goto label_10;
| }
| label_111:
0x00049934 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00049936 ands r5, r3, 0x41000 | r5 = r3 & 0x41000;
0x0004993a bne 0x49928 |
| } while (r5 != r3);
0x0004993c ldrb r3, [r4] | r3 = *(r4);
0x0004993e cmp r3, 0xa9 |
0x00049940 it ne |
| if (r3 != 0xa9) {
0x00049942 cmpne r3, 0x3b | __asm ("cmpne r3, 0x3b");
| }
| if (r3 == 0xa9) {
0x00049944 beq.w 0x4a028 | goto label_112;
| }
| label_10:
0x00049948 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0004994a ldr r3, [r3] | r3 = *(r3);
0x0004994c ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00049950 cmp r3, 0 |
| if (r3 != 0) {
0x00049952 bne.w 0x4983e | goto label_0;
| }
0x00049956 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00049958 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0004995a ldrb r2, [r3] | r2 = *(r3);
0x0004995c cmp r2, 0xaf |
0x0004995e it eq |
| if (r2 != 0xaf) {
0x00049960 ldrbeq r2, [r3, 2] | r2 = *((r3 + 2));
| }
0x00049962 cmp r2, 0xb0 |
| if (r2 == 0xb0) {
0x00049964 beq.w 0x4a8ee | goto label_113;
| }
0x00049968 cmp r2, 0x89 |
0x0004996a itett eq |
| if (r2 != 0x89) {
0x0004996c ldreq r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r2 == 0x89) {
0x0004996e movne r2, 1 | r2 = 1;
| }
| if (r2 != 0x89) {
0x00049970 ldreq r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
| }
| if (r2 != 0x89) {
0x00049972 ldreq r2, [r3] | r2 = *(r3);
| }
| label_66:
0x00049974 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00049976 ldrb r3, [r3] | r3 = *(r3);
0x00049978 cmp r3, 0x30 |
0x0004997a ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 == 0x30) {
0x0004997c beq.w 0x4a04c | goto label_114;
| }
0x00049980 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00049982 ldrb r1, [r3] | r1 = *(r3);
0x00049984 cmp r1, 0xaf |
| if (r1 == 0xaf) {
0x00049986 beq.w 0x4a07a | goto label_115;
| }
| label_12:
0x0004998a cmp r1, 0xb0 |
| if (r1 == 0xb0) {
0x0004998c beq.w 0x4a8cc | goto label_116;
| }
0x00049990 cmp r1, 0x89 |
0x00049992 itett eq |
| if (r1 != 0x89) {
0x00049994 ldreq r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r1 == 0x89) {
0x00049996 movne r3, 1 | r3 = 1;
| }
| if (r1 != 0x89) {
0x00049998 ldreq r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
| }
| if (r1 != 0x89) {
0x0004999a ldreq r3, [r3] | r3 = *(r3);
| }
| label_64:
0x0004999c cmp r3, r2 |
| if (r3 == r2) {
0x0004999e beq.w 0x4983e | goto label_0;
| }
| label_11:
0x000499a2 ldr.w r1, [pc, 0x80c] |
0x000499a6 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000499a8 add r1, pc | r1 = 0x93b5e;
0x000499aa bl 0x25778 | fcn_00025778 (r0);
0x000499ae b 0x4983e | goto label_0;
0x000499b0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000499b2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000499b4 lsls r1, r3, 0x14 | r1 = r3 << 0x14;
| if (r1 >= r3) {
0x000499b6 bpl.w 0x4983e | goto label_0;
| }
0x000499ba ldr r3, [sp, 0x40] | r3 = var_40h;
0x000499bc ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
0x000499be ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000499c0 tst.w r3, 0x2e |
| if ((r3 & 0x2e) != 0) {
0x000499c4 bne.w 0x4a0cc | goto label_117;
| }
0x000499c8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000499ca ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x000499cc cmp r1, 0 |
| if (r1 == 0) {
0x000499ce beq.w 0x4983e | goto label_0;
| }
| label_13:
0x000499d2 ldr r3, [r6, 8] | r3 = *((r6 + 8));
| if (r3 != 0) {
0x000499d4 cbz r3, 0x499dc |
0x000499d6 mov r0, r6 | r0 = r6;
0x000499d8 bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
| }
| label_14:
0x000499dc ldr r1, [sp, 0x40] | r1 = var_40h;
0x000499de ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x000499e0 cmp r3, r4 |
| if (r3 == r4) {
0x000499e2 beq.w 0x4983e | goto label_0;
| }
0x000499e6 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000499e8 ldr r3, [r1, 0x18] | r3 = *((r1 + 0x18));
0x000499ea ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x000499ec orr r3, r3, 0x40 | r3 |= 0x40;
0x000499f0 orr r2, r2, 0x20 | r2 |= 0x20;
0x000499f4 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x000499f6 str r3, [r1, 0x18] | *((r1 + 0x18)) = r3;
0x000499f8 b 0x4983e | goto label_0;
0x000499fa ldr r3, [sp, 0x40] | r3 = var_40h;
0x000499fc add r4, sp, 0x80 | r4 += var_80h;
0x000499fe mov r1, r4 | r1 = r4;
0x00049a00 movs r2, 0 | r2 = 0;
| do {
0x00049a02 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x00049a04 adds r2, 1 | r2++;
0x00049a06 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00049a08 str r0, [r1, 4]! | *((r1 += 4)) = r0;
0x00049a0c subs r0, r3, 0 | r0 = r3 - 0;
0x00049a0e it ne |
| if (r0 == r3) {
0x00049a10 movne r0, 1 | r0 = 1;
| }
0x00049a12 cmp r2, 7 |
0x00049a14 it gt |
| if (r2 <= 7) {
0x00049a16 movgt r0, 0 | r0 = 0;
| }
0x00049a18 cmp r0, 0 |
0x00049a1a bne 0x49a02 |
| } while (r0 != 0);
0x00049a1c ldr r7, [sp, 0xc] | r7 = var_ch;
0x00049a1e ldr r5, [r7, 0xc] | r5 = *((r7 + 0xc));
| if (r5 != 0) {
0x00049a20 cbz r5, 0x49a2c |
0x00049a22 mov r1, r5 | r1 = r5;
0x00049a24 mov r0, r6 | r0 = r6;
0x00049a26 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x00049a2a ldr r5, [r7, 0xc] | r5 = *((r7 + 0xc));
| }
0x00049a2c mov r0, r5 | r0 = r5;
0x00049a2e bl 0x9c80 | r0 = fcn_00009c80 (r0);
0x00049a32 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x00049a34 cbnz r0, 0x49a42 |
0x00049a36 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00049a38 ldrb.w r2, [r2, 0xc8] | r2 = *((r2 + 0xc8));
0x00049a3c cmp r2, 1 |
| if (r2 < 1) {
0x00049a3e bls.w 0x4a07e | goto label_118;
| }
| }
| label_7:
0x00049a42 movs r0, 1 | r0 = 1;
0x00049a44 b 0x49854 | goto label_1;
0x00049c82 cmp r3, 0x3b |
| if (r3 == 0x3b) {
0x00049c84 beq 0x49d44 | goto label_119;
| }
0x00049c86 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00049c88 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049c8a ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00049c8c ldr r4, [r2, 0xc] | r4 = *((r2 + 0xc));
0x00049c8e tst.w r3, 0x28 |
| if ((r3 & 0x28) != 0) {
0x00049c92 bne.w 0x4a002 | goto label_120;
| }
| label_9:
0x00049c96 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00049c98 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00049c9a ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00049c9c ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x00049c9e ldrb.w r3, [r0, 0xc8] | r3 = *((r0 + 0xc8));
0x00049ca2 str r2, [sp, 0x30] | var_30h = r2;
0x00049ca4 ldr r2, [r0] | r2 = *(r0);
0x00049ca6 str r2, [sp, 0x54] | var_54h = r2;
0x00049ca8 ldrb r2, [r1] | r2 = *(r1);
0x00049caa cmp r2, 0x3b |
| if (r2 == 0x3b) {
0x00049cac beq.w 0x49fe0 | goto label_121;
| }
0x00049cb0 ldrd r4, r1, [r1, 0xc] | __asm ("ldrd r4, r1, [r1, 0xc]");
0x00049cb4 cmp r3, 1 |
0x00049cb6 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00049cb8 str r2, [sp, 0x10] | var_10h = r2;
0x00049cba ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00049cbc str r2, [sp, 0x28] | var_28h = r2;
| if (r3 < 1) {
0x00049cbe bls 0x49cf6 | goto label_122;
| }
0x00049cc0 ldr.w r3, [r0, 0x10c] | r3 = *((r0 + 0x10c));
0x00049cc4 str r3, [sp, 0x3c] | var_3ch = r3;
| if (r3 == 0) {
0x00049cc6 cbz r3, 0x49cf6 | goto label_122;
| }
| label_8:
0x00049cc8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00049cca b 0x49cd4 |
| while (r2 != r1) {
0x00049ccc ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00049cce cmp r3, 0 |
| if (r3 == 0) {
0x00049cd0 beq.w 0x4a920 | goto label_123;
| }
0x00049cd4 ldr r2, [r3] | r2 = *(r3);
0x00049cd6 cmp r2, r1 |
0x00049cd8 bne 0x49ccc |
| }
0x00049cda ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049cdc str r2, [r3] | *(r3) = r2;
0x00049cde ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00049ce0 b 0x49ce6 |
| while (r2 != r4) {
0x00049ce2 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 == 0) {
0x00049ce4 cbz r3, 0x49cf6 | goto label_122;
| }
| label_67:
0x00049ce6 ldr r2, [r3] | r2 = *(r3);
0x00049ce8 cmp r2, r4 |
0x00049cea bne 0x49ce2 |
| }
0x00049cec ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049cee mov r1, r3 | r1 = r3;
0x00049cf0 add.w r3, r2, 0x2c | r3 = r2 + 0x2c;
0x00049cf4 str r3, [r1] | *(r1) = r3;
| label_122:
0x00049cf6 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049cf8 mov.w r3, -1 | r3 = -1;
0x00049cfc str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x00049cfe ldr r3, [sp, 0x30] | r3 = var_30h;
0x00049d00 cmp r3, 0 |
| if (r3 == 0) {
0x00049d02 beq.w 0x4b09c | goto label_124;
| }
0x00049d06 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00049d08 ldr r4, [r3, 0x18] | r4 = *((r3 + 0x18));
0x00049d0a ands r4, r4, 6 | r4 &= 6;
| if (r4 == r4) {
0x00049d0e beq.w 0x4a81e | goto label_125;
| }
0x00049d12 movs r3, 0 | r3 = 0;
0x00049d14 str r3, [sp, 0x50] | var_50h = r3;
0x00049d16 str r3, [sp, 0x3c] | var_3ch = r3;
0x00049d18 str r3, [sp, 0x30] | var_30h = r3;
0x00049d1a b 0x49d60 | goto label_62;
| label_119:
0x00049d44 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00049d46 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049d48 ldr r3, [r3] | r3 = *(r3);
0x00049d4a ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x00049d4c str r3, [sp, 0x54] | var_54h = r3;
0x00049d4e mov.w r3, -1 | r3 = -1;
0x00049d52 str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x00049d54 movs r3, 0 | r3 = 0;
0x00049d56 str r1, [sp, 0x28] | var_28h = r1;
0x00049d58 str r3, [sp, 0x50] | var_50h = r3;
0x00049d5a str r3, [sp, 0x10] | var_10h = r3;
0x00049d5c str r3, [sp, 0x3c] | var_3ch = r3;
0x00049d5e str r3, [sp, 0x30] | var_30h = r3;
| label_62:
0x00049d60 ldr.w sb, [pc, 0x460] |
0x00049d64 movs r3, 0 | r3 = 0;
0x00049d66 ldr.w sl, [pc, 0x460] |
0x00049d6a ldr r2, [sp, 0x40] | r2 = var_40h;
0x00049d6c add sb, pc | sb = 0x93f34;
0x00049d6e str r3, [sp, 0x24] | var_24h = r3;
0x00049d70 add sl, pc | sl = 0x93f3e;
0x00049d72 str r3, [sp, 0x4c] | var_4ch = r3;
0x00049d74 str r2, [sp, 0x38] | var_38h = r2;
0x00049d76 str r3, [sp, 0x1c] | var_1ch = r3;
| label_31:
0x00049d78 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00049d7a ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x00049d7c str r5, [sp, 0x48] | var_48h = r5;
0x00049d7e cmp r5, 0 |
| if (r5 != 0) {
0x00049d80 bne.w 0x4a18c | goto label_126;
| }
0x00049d84 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00049d86 movs r1, 1 | r1 = 1;
0x00049d88 str r3, [sp, 0x2c] | var_2ch = r3;
0x00049d8a ldr r3, [sp, 0x50] | r3 = var_50h;
| label_29:
0x00049d8c cmp r3, 0 |
| if (r3 != 0) {
0x00049d8e bne.w 0x4a100 | goto label_127;
| }
0x00049d92 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00049d94 ldr.w fp, [r2, 0x78] | fp = *((r2 + 0x78));
0x00049d98 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00049d9a ldr.w r8, [r2, 0x18] | r8 = *((r2 + 0x18));
0x00049d9e and r7, r8, 0x200 | r7 = r8 & 0x200;
0x00049da2 cmp.w fp, 0 |
| if (fp == 0) {
0x00049da6 beq.w 0x4a482 | goto label_39;
| }
0x00049daa ldr r1, [sp, 0x20] | r1 = var_20h;
0x00049dac ldrb.w r2, [r1, 0x91] | r2 = *((r1 + 0x91));
0x00049db0 ldrb.w ip, [r1, 0x90] | ip = *((r1 + 0x90));
0x00049db4 cmp r2, 0 |
| if (r2 == 0) {
0x00049db6 beq.w 0x4a57a | goto label_128;
| }
0x00049dba tst.w r8, 0x400 |
| if ((r8 & 0x400) == 0) {
0x00049dbe beq.w 0x4a482 | goto label_39;
| }
0x00049dc2 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00049dc4 cmp r1, 0 |
| if (r1 == 0) {
0x00049dc6 beq.w 0x4a6e4 | goto label_129;
| }
0x00049dca ldr.w r2, [fp] | r2 = *(fp);
0x00049dce add.w lr, r1, -1 | lr = r1 + -1;
0x00049dd2 ldr r5, [pc, 0x3f8] |
0x00049dd4 mov r4, lr | r4 = lr;
0x00049dd6 subs r2, 1 | r2--;
0x00049dd8 add r5, pc | r5 = 0x93faa;
| do {
| label_32:
0x00049dda ldrb r1, [r4, 1]! | r1 = *((r4 += 1));
0x00049dde ldrb r0, [r2, 1]! | r0 = *((r2 += 1));
0x00049de2 cmp r1, r0 |
| if (r1 == r0) {
0x00049de4 beq.w 0x4a528 | goto label_130;
| }
0x00049de8 add r1, r5 | r1 += r5;
0x00049dea add r0, r5 | r0 += r5;
0x00049dec ldrb.w r6, [r1, 0x140] | r6 = *((r1 + 0x140));
0x00049df0 ldrb.w r1, [r0, 0x140] | r1 = *((r0 + 0x140));
0x00049df4 cmp r6, r1 |
0x00049df6 beq 0x49dda |
| } while (r6 == r1);
| label_40:
0x00049df8 cmp r7, 0 |
| if (r7 == 0) {
0x00049dfa beq.w 0x4a7ae | goto label_131;
| }
0x00049dfe ldr r2, [sp, 0x38] | r2 = var_38h;
0x00049e00 mov.w fp, 0 |
0x00049e04 ldr r6, [r2, 8] | r6 = *((r2 + 8));
0x00049e06 cmp r6, 0 |
| if (r6 == 0) {
0x00049e08 beq.w 0x4a7ae | goto label_131;
| }
| label_30:
0x00049e0c ldr r4, [pc, 0x3c0] |
0x00049e0e mov r0, lr | r0 = lr;
0x00049e10 ldr r5, [pc, 0x3c0] |
0x00049e12 movs r2, 0x65 | r2 = 0x65;
0x00049e14 add r4, pc | r4 = 0x93fe8;
0x00049e16 add r5, pc | r5 = 0x93fee;
0x00049e18 b 0x49e2e |
| while (r2 != r1) {
0x00049e1a add r2, r5 | r2 += r5;
0x00049e1c add r1, r5 | r1 += r5;
0x00049e1e ldrb.w r7, [r2, 0x140] | r7 = *((r2 + 0x140));
0x00049e22 ldrb.w r2, [r1, 0x140] | r2 = *((r1 + 0x140));
0x00049e26 cmp r7, r2 |
| if (r7 != r2) {
0x00049e28 bne 0x49e46 | goto label_132;
| }
| label_2:
0x00049e2a ldrb r2, [r4, 1]! | r2 = *((r4 += 1));
0x00049e2e ldrb r1, [r0, 1]! | r1 = *((r0 += 1));
0x00049e32 cmp r2, r1 |
0x00049e34 bne 0x49e1a |
| }
0x00049e36 cmp r2, 0 |
| if (r2 != 0) {
0x00049e38 bne 0x49e2a | goto label_2;
| }
0x00049e3a ldr r2, [r6, 0x20] | r2 = *((r6 + 0x20));
0x00049e3c ldr r1, [sp, 0xc] | r1 = var_ch;
0x00049e3e ldr.w fp, [r2, 0x18] | fp = *((r2 + 0x18));
0x00049e42 movs r2, 2 | r2 = 2;
0x00049e44 str r2, [r1, 0x1c] | *((r1 + 0x1c)) = r2;
| label_132:
0x00049e46 cmp.w fp, 0 |
| if (fp == 0) {
0x00049e4a beq.w 0x4a49a | goto label_47;
| }
| label_33:
0x00049e4e ldr r1, [sp, 0x28] | r1 = var_28h;
0x00049e50 cmp r1, 0 |
| if (r1 == 0) {
0x00049e52 beq.w 0x4a6f4 | goto label_133;
| }
0x00049e56 ldrb r2, [r1] | r2 = *(r1);
0x00049e58 cmp r2, 0 |
| if (r2 == 0) {
0x00049e5a beq.w 0x4a8c6 | goto label_134;
| }
0x00049e5e ldr r0, [pc, 0x378] |
0x00049e60 movs r6, 0 | r6 = 0;
0x00049e62 add r0, pc | r0 = 0x94040;
| do {
0x00049e64 add r2, r0 | r2 += r0;
0x00049e66 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x00049e6a add r6, r2 | r6 += r2;
0x00049e6c ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x00049e70 uxtb r6, r6 | r6 = (int8_t) r6;
0x00049e72 cmp r2, 0 |
0x00049e74 bne 0x49e64 |
| } while (r2 != 0);
| label_55:
0x00049e76 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00049e78 ldrsh.w r5, [fp, 0x2a] | r5 = *(arg_2ah);
0x00049e7c ldr.w r7, [fp, 4] | r7 = *(arg_4h);
0x00049e80 adds r2, 1 | r2++;
0x00049e82 str r2, [sp, 0x1c] | var_1ch = r2;
0x00049e84 cmp r5, 0 |
0x00049e86 ldr.w r2, [fp, 0x48] | r2 = *(arg_48h);
0x00049e8a str r2, [sp, 0x3c] | var_3ch = r2;
| if (r5 <= 0) {
0x00049e8c ble.w 0x4a61e | goto label_135;
| }
0x00049e90 ldr r4, [pc, 0x348] |
0x00049e92 adds r7, 0x14 | r7 += 0x14;
0x00049e94 ldr.w ip, [sp, 0x28] | ip = var_28h;
0x00049e98 add r4, pc | r4 = 0x94078;
0x00049e9a b 0x49ea6 |
| while (r2 != r6) {
| label_3:
0x00049e9c adds r3, 1 | r3++;
0x00049e9e adds r7, 0x14 | r7 += 0x14;
0x00049ea0 cmp r3, r5 |
| if (r3 == r5) {
0x00049ea2 beq.w 0x4a61e | goto label_135;
| }
0x00049ea6 ldrb r2, [r7, -0x5] | r2 = *((r7 - 0x5));
0x00049eaa cmp r2, r6 |
0x00049eac bne 0x49e9c |
| }
0x00049eae ldr r2, [r7, -0x14] | r2 = *((r7 - 0x14));
0x00049eb2 add.w r0, ip, -1 | r0 = ip + -1;
0x00049eb6 add.w lr, r2, -1 | lr = r2 + -1;
| label_5:
0x00049eba ldrb r2, [lr, 1]! | r2 = *((lr += 1));
0x00049ebe ldrb r1, [r0, 1]! | r1 = *((r0 += 1));
0x00049ec2 cmp r2, r1 |
| if (r2 == r1) {
0x00049ec4 beq 0x49ee2 | goto label_136;
| }
| label_4:
0x00049ec6 add r2, r4 | r2 += r4;
0x00049ec8 add r1, r4 | r1 += r4;
0x00049eca ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x00049ece ldrb.w r1, [r1, 0x140] | r1 = *((r1 + 0x140));
0x00049ed2 cmp r2, r1 |
| if (r2 != r1) {
0x00049ed4 bne 0x49e9c | goto label_3;
| }
0x00049ed6 ldrb r2, [lr, 1]! | r2 = *((lr += 1));
0x00049eda ldrb r1, [r0, 1]! | r1 = *((r0 += 1));
0x00049ede cmp r2, r1 |
| if (r2 != r1) {
0x00049ee0 bne 0x49ec6 | goto label_4;
| }
| label_136:
0x00049ee2 cmp r2, 0 |
| if (r2 != 0) {
0x00049ee4 bne 0x49eba | goto label_5;
| }
0x00049ee6 ldrsh.w r2, [fp, 0x28] | r2 = *(arg_28h);
0x00049eea cmp r3, r2 |
| if (r3 == r2) {
0x00049eec beq.w 0x4a926 | goto label_137;
| }
0x00049ef0 cmp r3, r5 |
| if (r3 >= r5) {
0x00049ef2 bge.w 0x4a61e | goto label_135;
| }
0x00049ef6 sxth r1, r3 | __asm ("sxth r1, r3");
| label_48:
0x00049ef8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049efa ldr r4, [r2, 0x1c] | r4 = *((r2 + 0x1c));
0x00049efc cmp r4, 2 |
| if (r4 == 2) {
0x00049efe beq.w 0x4a6cc | goto label_138;
| }
0x00049f02 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049f04 str.w fp, [r2, 0x2c] | __asm ("str.w fp, [r2, 0x2c]");
0x00049f08 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00049f0a ldrb.w r2, [r2, 0x91] | r2 = *((r2 + 0x91));
0x00049f0e cmp r2, 0 |
| if (r2 == 0) {
0x00049f10 beq.w 0x4a690 | goto label_139;
| }
0x00049f14 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00049f16 mla r4, r5, r4, r4 | __asm ("mla r4, r5, r4, r4");
0x00049f1a ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00049f1c add r4, r2 | r4 += r2;
0x00049f1e ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x00049f22 lsls r5, r2, 0x1a | r5 = r2 << 0x1a;
0x00049f24 it pl |
| if (r5 < r2) {
0x00049f26 movpl r3, r1 | r3 = r1;
| }
| if (r5 < r2) {
0x00049f28 bpl 0x49f36 |
0x00049f2a adds r0, r3, 1 | r0 = r3 + 1;
| if (r0 == r3) {
0x00049f2c beq 0x49f36 | goto label_140;
| }
0x00049f2e mov r0, fp | r0 = fp;
0x00049f30 bl 0xf328 | r0 = fcn_0000f328 (r0, r1);
0x00049f34 mov r3, r0 | r3 = r0;
| }
| label_140:
0x00049f36 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049f38 add r3, r4 | r3 += r4;
0x00049f3a movs r4, 0xaf | r4 = 0xaf;
0x00049f3c adds r3, 1 | r3++;
0x00049f3e str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
| label_46:
0x00049f40 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00049f42 mov.w r2, 0x4000 |
0x00049f46 movt r2, 0x80 | r2 = 0x804000;
0x00049f4a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00049f4c tst r3, r2 |
| if ((r3 & r2) != 0) {
0x00049f4e bne.w 0x4a954 | goto label_141;
| }
0x00049f52 movs r3, 1 | r3 = 1;
0x00049f54 str r3, [sp, 0x2c] | var_2ch = r3;
| label_16:
0x00049f56 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00049f58 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
| if (r1 != 0) {
0x00049f5a cbz r1, 0x49f62 |
0x00049f5c ldr r0, [sp, 0x54] | r0 = var_54h;
0x00049f5e bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x00049f62 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049f64 movs r3, 0 | r3 = 0;
0x00049f66 ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
0x00049f68 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
| if (r1 != 0) {
0x00049f6a cbz r1, 0x49f72 |
0x00049f6c ldr r0, [sp, 0x54] | r0 = var_54h;
0x00049f6e bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x00049f72 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049f74 movs r3, 0 | r3 = 0;
0x00049f76 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00049f78 ldr r3, [r2, 4] | r3 = *((r2 + 4));
| label_15:
0x00049f7a ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049f7c orr r3, r3, 0x800000 | r3 |= 0x800000;
0x00049f80 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00049f82 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00049f84 strb r4, [r2] | *(r2) = r4;
0x00049f86 cmp r3, 1 |
| if (r3 != 1) {
0x00049f88 bne.w 0x4991c | goto label_6;
| }
| label_68:
0x00049f8c ldr r3, [sp, 0x20] | r3 = var_20h;
0x00049f8e ldr r3, [r3] | r3 = *(r3);
0x00049f90 ldr.w r2, [r3, 0x150] | r2 = *((r3 + 0x150));
| if (r2 != 0) {
0x00049f94 cbz r2, 0x49fa4 |
0x00049f96 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00049f98 ldrb r4, [r2] | r4 = *(r2);
0x00049f9a cmp r4, 0x4d |
0x00049f9c it ne |
| if (r4 != 0x4d) {
0x00049f9e cmpne r4, 0xa6 | __asm ("cmpne r4, 0xa6");
| }
| if (r4 == 0x4d) {
0x00049fa0 beq.w 0x4ada0 | goto label_142;
| }
| }
| label_74:
0x00049fa4 ldr r2, [sp, 0x40] | r2 = var_40h;
0x00049fa6 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00049fa8 adds r3, 1 | r3++;
0x00049faa str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00049fac mov r3, r2 | r3 = r2;
0x00049fae ldr r2, [sp, 0x38] | r2 = var_38h;
0x00049fb0 cmp r3, r2 |
| if (r3 == r2) {
0x00049fb2 beq.w 0x49a42 | goto label_7;
| }
0x00049fb6 mov r1, r2 | r1 = r2;
| do {
0x00049fb8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00049fba ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00049fbc cmp r1, r3 |
0x00049fbe add.w r2, r2, 1 | r2++;
0x00049fc2 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x00049fc4 bne 0x49fb8 |
| } while (r1 != r3);
0x00049fc6 b 0x49a42 | goto label_7;
| label_121:
0x00049fe0 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00049fe2 cmp r3, 1 |
0x00049fe4 str r2, [sp, 0x28] | var_28h = r2;
| if (r3 < 1) {
0x00049fe6 bls.w 0x4acf0 | goto label_143;
| }
0x00049fea ldr r3, [sp, 0x20] | r3 = var_20h;
0x00049fec ldr.w r3, [r3, 0x10c] | r3 = *((r3 + 0x10c));
0x00049ff0 str r3, [sp, 0x3c] | var_3ch = r3;
0x00049ff2 cmp r3, 0 |
| if (r3 == 0) {
0x00049ff4 beq.w 0x4b11a | goto label_144;
| }
0x00049ff8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00049ffa str r3, [sp, 0x10] | var_10h = r3;
0x00049ffc movs r3, 0 | r3 = 0;
0x00049ffe str r3, [sp, 0x30] | var_30h = r3;
0x0004a000 b 0x49cc8 | goto label_8;
| label_120:
0x0004a002 lsls r7, r3, 0x1a | r7 = r3 << 0x1a;
| if (r7 < r3) {
0x0004a004 bmi.w 0x4ad12 | goto label_145;
| }
0x0004a008 lsls r6, r3, 0x1d | r6 = r3 << 0x1d;
| if (r6 < r3) {
0x0004a00a bmi.w 0x4ad0a | goto label_146;
| }
0x0004a00e lsls r5, r3, 0x1c | r5 = r3 << 0x1c;
| if (r5 >= r3) {
0x0004a010 bpl.w 0x4b06e | goto label_147;
| }
0x0004a014 ldr r3, [pc, 0x1c8] |
0x0004a016 add r3, pc | r3 = 0x941fa;
| label_73:
0x0004a018 ldr r2, [pc, 0x1c8] |
0x0004a01a ldr r1, [pc, 0x1cc] |
0x0004a01c ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004a01e add r2, pc | r2 = 0x94206;
0x0004a020 add r1, pc | r1 = 0x9420e;
0x0004a022 bl 0x25778 | fcn_00025778 (r0);
0x0004a026 b 0x49c96 | goto label_9;
| label_112:
0x0004a028 mov r0, r6 | r0 = r6;
0x0004a02a mov r1, r4 | r1 = r4;
0x0004a02c bl 0x49778 | r0 = fcn_00049778 (r0, r1, r2, r3, r4, r5, r6);
0x0004a030 cmp r0, 2 |
| if (r0 == 2) {
0x0004a032 beq.w 0x4991c | goto label_6;
| }
0x0004a036 ldrb r3, [r4] | r3 = *(r4);
0x0004a038 cmp r3, 0xa9 |
| if (r3 != 0xa9) {
0x0004a03a bne.w 0x49948 | goto label_10;
| }
0x0004a03e ldr r1, [sp, 0xc] | r1 = var_ch;
0x0004a040 movs r2, 0xae | r2 = 0xae;
0x0004a042 mov r0, r5 | r0 = r5;
0x0004a044 ldrb r3, [r1] | r3 = *(r1);
0x0004a046 strb r2, [r1] | *(r1) = r2;
0x0004a048 strb r3, [r1, 2] | *((r1 + 2)) = r3;
0x0004a04a b 0x49854 | goto label_1;
| label_114:
0x0004a04c ldr r0, [r3, 0x14] | r0 = *((r3 + 0x14));
0x0004a04e ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0004a050 ldrb r1, [r3] | r1 = *(r3);
0x0004a052 cmp r1, 0xaf |
0x0004a054 it eq |
| if (r1 != 0xaf) {
0x0004a056 ldrbeq r1, [r3, 2] | r1 = *((r3 + 2));
| }
0x0004a058 cmp r1, 0xb0 |
| if (r1 == 0xb0) {
0x0004a05a beq.w 0x4ab1e | goto label_148;
| }
0x0004a05e cmp r1, 0x89 |
0x0004a060 itett eq |
| if (r1 != 0x89) {
0x0004a062 ldreq r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r1 == 0x89) {
0x0004a064 movne r3, 1 | r3 = 1;
| }
| if (r1 != 0x89) {
0x0004a066 ldreq r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
| }
| if (r1 != 0x89) {
0x0004a068 ldreq r3, [r3] | r3 = *(r3);
| }
| label_71:
0x0004a06a cmp r2, r3 |
| if (r2 != r3) {
0x0004a06c bne.w 0x499a2 | goto label_11;
| }
0x0004a070 ldr r3, [r0, 0x18] | r3 = *((r0 + 0x18));
0x0004a072 ldrb r1, [r3] | r1 = *(r3);
0x0004a074 cmp r1, 0xaf |
| if (r1 != 0xaf) {
0x0004a076 bne.w 0x4998a | goto label_12;
| }
| label_115:
0x0004a07a ldrb r1, [r3, 2] | r1 = *((r3 + 2));
0x0004a07c b 0x4998a | goto label_12;
| label_118:
0x0004a07e ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004a080 ldrb r1, [r2] | r1 = *(r2);
0x0004a082 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0004a084 cmp r1, 0x33 |
| if (r1 == 0x33) {
0x0004a086 beq.w 0x4aa4e | goto label_149;
| }
0x0004a08a ldr r1, [pc, 0x160] |
0x0004a08c orr r2, r2, 0x20000000 | r2 |= 0x20000000;
0x0004a090 add r1, pc | r1 = 0x94282;
| label_69:
0x0004a092 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0004a094 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x0004a096 movs r2, 0xa9 | r2 = 0xa9;
0x0004a098 strb r2, [r0] | *(r0) = r2;
0x0004a09a ldr r2, [sp, 0x40] | r2 = var_40h;
0x0004a09c str r1, [r0, 8] | *((r0 + 8)) = r1;
| do {
0x0004a09e ldr r1, [r4, 4]! | r1 = *((r4 += 4));
0x0004a0a2 adds r3, 1 | r3++;
0x0004a0a4 str r1, [r2, 0x10] | *((r2 + 0x10)) = r1;
0x0004a0a6 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x0004a0a8 subs r1, r2, 0 | r1 = r2 - 0;
0x0004a0aa it ne |
| if (r1 == r2) {
0x0004a0ac movne r1, 1 | r1 = 1;
| }
0x0004a0ae cmp r3, 7 |
0x0004a0b0 it gt |
| if (r3 <= 7) {
0x0004a0b2 movgt r1, 0 | r1 = 0;
| }
0x0004a0b4 cmp r1, 0 |
0x0004a0b6 bne 0x4a09e |
| } while (r1 != 0);
| if (r5 != 0) {
0x0004a0b8 cbz r5, 0x4a0c4 |
0x0004a0ba ldr r3, [sp, 0x20] | r3 = var_20h;
0x0004a0bc mov r1, r5 | r1 = r5;
0x0004a0be ldr r0, [r3] | r0 = *(r3);
0x0004a0c0 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x0004a0c4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004a0c6 movs r3, 0 | r3 = 0;
0x0004a0c8 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x0004a0ca b 0x49a42 | goto label_7;
| label_117:
0x0004a0cc lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 < r3) {
0x0004a0ce bmi.w 0x4ab16 | goto label_150;
| }
0x0004a0d2 lsls r7, r3, 0x1d | r7 = r3 << 0x1d;
| if (r7 < r3) {
0x0004a0d4 bmi.w 0x4b102 | goto label_151;
| }
0x0004a0d8 lsls r5, r3, 0x1c | r5 = r3 << 0x1c;
| if (r5 >= r3) {
0x0004a0da bpl.w 0x4b076 | goto label_152;
| }
0x0004a0de ldr r3, [pc, 0x110] |
0x0004a0e0 add r3, pc | r3 = 0x942d6;
| label_70:
0x0004a0e2 ldr r2, [pc, 0x110] |
0x0004a0e4 ldr r1, [pc, 0x110] |
0x0004a0e6 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004a0e8 add r2, pc | r2 = 0x942e2;
0x0004a0ea add r1, pc | r1 = 0x942e6;
0x0004a0ec bl 0x25778 | fcn_00025778 (r0);
0x0004a0f0 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004a0f2 movs r3, 0x78 | r3 = 0x78;
0x0004a0f4 ldr r1, [r2, 0x14] | r1 = *(0x942f6);
0x0004a0f6 strb r3, [r2] | *(r2) = r3;
0x0004a0f8 cmp r1, 0 |
| if (r1 != 0) {
0x0004a0fa bne.w 0x499d2 | goto label_13;
| }
0x0004a0fe b 0x499dc | goto label_14;
| label_127:
0x0004a100 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0004a102 cmp r3, 1 |
0x0004a104 ite ne |
| if (r3 == 1) {
0x0004a106 movne r1, 0 | r1 = 0;
| }
| if (r3 != 1) {
0x0004a108 andeq r1, r1, 1 | r1 &= 1;
| }
0x0004a10c cmp r1, 0 |
| if (r1 != 0) {
0x0004a10e bne.w 0x4a5ea | goto label_153;
| }
0x0004a112 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0004a114 cmp r3, 0 |
| if (r3 == 0) {
0x0004a116 beq.w 0x4b092 | goto label_154;
| }
0x0004a11a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0004a11c cmp r3, 1 |
| if (r3 != 1) {
0x0004a11e beq 0x4a14c |
0x0004a120 ldr r2, [pc, 0xd8] |
0x0004a122 add r2, pc | r2 = 0x94322;
| label_58:
0x0004a124 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004a126 cmp r3, 0 |
| if (r3 == 0) {
0x0004a128 beq.w 0x4a8d4 | goto label_155;
| }
0x0004a12c ldr r1, [sp, 0x28] | r1 = var_28h;
0x0004a12e ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004a130 str r1, [sp, 4] | var_4h = r1;
0x0004a132 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0004a134 str r1, [sp] | *(sp) = r1;
0x0004a136 ldr r1, [pc, 0xc8] |
0x0004a138 add r1, pc | r1 = 0x9433e;
0x0004a13a bl 0x25778 | fcn_00025778 (r0);
| label_65:
0x0004a13e ldr r2, [sp, 0x20] | r2 = var_20h;
0x0004a140 movs r3, 1 | r3 = 1;
0x0004a142 strb r3, [r2, 0x11] | *((r2 + 0x11)) = r3;
0x0004a144 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0004a146 ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x0004a148 adds r3, 1 | r3++;
0x0004a14a str r3, [r2, 0x14] | *((r2 + 0x14)) = r3;
| }
0x0004a14c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004a14e ldr r4, [sp, 0x24] | r4 = var_24h;
0x0004a150 ldrsh.w r0, [r2, 0x20] | r0 = *((r2 + 0x20));
0x0004a154 cmp r4, 0 |
0x0004a156 mvn.w r3, r0 | r3 = ~r0;
0x0004a15a lsr.w r3, r3, 0x1f | r3 >>= 0x1f;
0x0004a15e it eq |
| if (r4 != 0) {
0x0004a160 moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x0004a162 cbz r3, 0x4a176 |
0x0004a164 ldr r1, [r2, 0x2c] | r1 = *((r2 + 0x2c));
0x0004a166 bl 0x11c68 | fcn_00011c68 (r0, r1, r2);
0x0004a16a ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0004a16c orrs r3, r0 | r3 |= r0;
0x0004a16e str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x0004a170 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x0004a172 orrs r3, r1 | r3 |= r1;
0x0004a174 str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
| }
0x0004a176 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004a178 mov.w r2, 0x4000 |
0x0004a17c movt r2, 0x80 | r2 = 0x804000;
0x0004a180 movs r4, 0xa6 | r4 = 0xa6;
0x0004a182 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0004a184 tst r3, r2 |
| if ((r3 & r2) != 0) {
0x0004a186 bne.w 0x49f7a | goto label_15;
| }
0x0004a18a b 0x49f56 | goto label_16;
| label_126:
0x0004a18c ldr r3, [r5], 8 | r3 = *(r5);
| r5 += 8;
0x0004a190 cmp r3, 0 |
0x0004a192 str r3, [sp, 0x34] | var_34h = r3;
| if (r3 <= 0) {
0x0004a194 ble.w 0x4a686 | goto label_156;
| }
0x0004a198 movs r3, 0 | r3 = 0;
0x0004a19a mov r8, r5 | r8 = r5;
0x0004a19c str r3, [sp, 0x2c] | var_2ch = r3;
0x0004a19e str r3, [sp, 0x18] | var_18h = r3;
0x0004a1a0 b 0x4a216 |
| while (r3 != r2) {
| label_17:
0x0004a204 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0004a206 add.w r8, r8, 0x48 | r8 += 0x48;
0x0004a208 lsrs r0, r1, 1 | r0 = r1 >> 1;
0x0004a20a ldr r2, [sp, 0x34] | r2 = var_34h;
0x0004a20c adds r3, 1 | r3++;
0x0004a20e cmp r3, r2 |
0x0004a210 str r3, [sp, 0x18] | var_18h = r3;
| if (r3 >= r2) {
0x0004a212 bge.w 0x4a44c | goto label_157;
| }
0x0004a216 ldrd r3, r2, [r8, 0x10] | __asm ("ldrd r3, r2, [r8, 0x10]");
0x0004a21a str r3, [sp, 0x14] | var_14h = r3;
| if (r2 != 0) {
0x0004a21c cbz r2, 0x4a226 |
0x0004a21e ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0004a220 lsls r4, r3, 0x14 | r4 = r3 << 0x14;
| if (r4 < r3) {
0x0004a222 bmi.w 0x4a3ae | goto label_158;
| }
| }
0x0004a226 ldr r3, [sp, 0x30] | r3 = var_30h;
| if (r3 == 0) {
0x0004a228 cbz r3, 0x4a234 | goto label_159;
| }
0x0004a22a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004a22c ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0004a22e ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x0004a230 cmp r3, r2 |
0x0004a232 bne 0x4a204 |
| }
| label_159:
0x0004a234 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r3 == 0) {
0x0004a236 cbz r3, 0x4a28c | goto label_34;
| }
| label_26:
0x0004a238 ldr.w r5, [r8, 0xc] | r5 = *((r8 + 0xc));
0x0004a23c mov r1, r5 | r1 = r5;
0x0004a23e cmp r5, 0 |
| if (r5 == 0) {
0x0004a240 beq.w 0x4a446 | goto label_160;
| }
| label_28:
0x0004a244 ldr.w r4, [pc, 0xae0] |
0x0004a248 subs r1, 1 | r1--;
0x0004a24a ldr r3, [sp, 0x10] | r3 = var_10h;
0x0004a24c add r4, pc | r4 = 0x94f78;
0x0004a24e subs r0, r3, 1 | r0 = r3 - 1;
| label_19:
0x0004a250 ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x0004a254 ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x0004a258 cmp r3, r2 |
| if (r3 == r2) {
0x0004a25a beq 0x4a278 | goto label_161;
| }
| label_18:
0x0004a25c add r3, r4 | r3 += r4;
0x0004a25e add r2, r4 | r2 += r4;
0x0004a260 ldrb.w r6, [r3, 0x140] | r6 = *((r3 + 0x140));
0x0004a264 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x0004a268 cmp r6, r3 |
| if (r6 != r3) {
0x0004a26a bne 0x4a204 | goto label_17;
| }
0x0004a26c ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x0004a270 ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x0004a274 cmp r3, r2 |
| if (r3 != r2) {
0x0004a276 bne 0x4a25c | goto label_18;
| }
| label_161:
0x0004a278 cmp r3, 0 |
| if (r3 != 0) {
0x0004a27a bne 0x4a250 | goto label_19;
| }
0x0004a27c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0004a27e ldrb.w r3, [r3, 0xc8] | r3 = *((r3 + 0xc8));
0x0004a282 cmp r5, 0 |
0x0004a284 it ne |
| if (r5 != 0) {
0x0004a286 cmpne r3, 1 | __asm ("cmpne r3, 1");
| }
| if (r5 > 0) {
0x0004a288 bhi.w 0x4a54c | goto label_162;
| }
| label_34:
0x0004a28c ldr r3, [sp, 0x1c] | r3 = var_1ch;
| label_36:
0x0004a28e ldr r2, [sp, 0x24] | r2 = var_24h;
0x0004a290 cmp r3, 0 |
0x0004a292 it eq |
| if (r3 != 0) {
0x0004a294 moveq r2, r8 | r2 = r8;
| }
0x0004a296 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0004a298 str r2, [sp, 0x24] | var_24h = r2;
0x0004a29a ldr r2, [sp, 0x28] | r2 = var_28h;
0x0004a29c adds r3, 1 | r3++;
0x0004a29e str r3, [sp, 0x1c] | var_1ch = r3;
0x0004a2a0 cmp r2, 0 |
| if (r2 == 0) {
0x0004a2a2 beq.w 0x4a576 | goto label_163;
| }
0x0004a2a6 ldrb r3, [r2] | r3 = *(r2);
0x0004a2a8 cmp r3, 0 |
| if (r3 == 0) {
0x0004a2aa beq.w 0x4a61a | goto label_164;
| }
0x0004a2ae ldr.w r1, [pc, 0xa7c] |
0x0004a2b2 movs r4, 0 | r4 = 0;
0x0004a2b4 add r1, pc | r1 = 0x94fe6;
| do {
0x0004a2b6 add r3, r1 | r3 += r1;
0x0004a2b8 ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x0004a2bc add r4, r3 | r4 += r3;
0x0004a2be ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x0004a2c2 uxtb r4, r4 | r4 = (int8_t) r4;
0x0004a2c4 cmp r3, 0 |
0x0004a2c6 bne 0x4a2b6 |
| } while (r3 != 0);
| label_38:
0x0004a2c8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004a2ca ldrsh.w r7, [r3, 0x2a] | r7 = *((r3 + 0x2a));
0x0004a2ce ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x0004a2d0 cmp r7, 0 |
| if (r7 <= 0) {
0x0004a2d2 ble 0x4a204 | goto label_17;
| }
0x0004a2d4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0004a2d6 adds r5, 0x14 | r5 += 0x14;
0x0004a2d8 movs r6, 0 | r6 = 0;
0x0004a2da str.w r8, [sp, 0x44] | __asm ("str.w r8, [var_44h]");
0x0004a2de add.w ip, r3, -1 |
0x0004a2e2 b 0x4a2ec |
| while (r3 != r4) {
| label_20:
0x0004a2e4 adds r6, 1 | r6++;
0x0004a2e6 adds r5, 0x14 | r5 += 0x14;
0x0004a2e8 cmp r6, r7 |
| if (r6 == r7) {
0x0004a2ea beq 0x4a3a8 | goto label_165;
| }
| label_25:
0x0004a2ec ldrb r3, [r5, -0x5] | r3 = *((r5 - 0x5));
0x0004a2f0 cmp r3, r4 |
0x0004a2f2 bne 0x4a2e4 |
| }
0x0004a2f4 ldr r3, [r5, -0x14] | r3 = *((r5 - 0x14));
0x0004a2f8 mov r0, ip | r0 = ip;
0x0004a2fa subs r3, 1 | r3--;
| label_22:
0x0004a2fc ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x0004a300 ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x0004a304 cmp r1, r2 |
| if (r1 == r2) {
0x0004a306 beq 0x4a324 | goto label_166;
| }
| label_21:
0x0004a308 add r1, sb | r1 += sb;
0x0004a30a add r2, sb | r2 += sb;
0x0004a30c ldrb.w r1, [r1, 0x140] | r1 = *((r1 + 0x140));
0x0004a310 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x0004a314 cmp r1, r2 |
| if (r1 != r2) {
0x0004a316 bne 0x4a2e4 | goto label_20;
| }
0x0004a318 ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x0004a31c ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x0004a320 cmp r1, r2 |
| if (r1 != r2) {
0x0004a322 bne 0x4a308 | goto label_21;
| }
| label_166:
0x0004a324 cmp r1, 0 |
| if (r1 != 0) {
0x0004a326 bne 0x4a2fc | goto label_22;
| }
0x0004a328 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0004a32a cmp r3, 1 |
| if (r3 != 1) {
0x0004a32c bne 0x4a37a | goto label_167;
| }
0x0004a32e ldr r2, [sp, 0x44] | r2 = var_44h;
0x0004a330 ldrb.w r3, [r2, 0x24] | r3 = *((r2 + 0x24));
0x0004a334 lsls r0, r3, 0x1d | r0 = r3 << 0x1d;
| if (r0 < r3) {
0x0004a336 bmi 0x4a2e4 | goto label_20;
| }
0x0004a338 ldr r3, [r2, 0x30] | r3 = *((r2 + 0x30));
0x0004a33a cmp r3, 0 |
| if (r3 == 0) {
0x0004a33c beq.w 0x4a572 | goto label_168;
| }
0x0004a340 ldr.w lr, [r3, 4] |
0x0004a344 cmp.w lr, 0 |
| if (lr <= 0) {
0x0004a348 ble 0x4a37a | goto label_167;
| }
0x0004a34a ldr.w r8, [r3] | r8 = *(r3);
| label_23:
0x0004a34e ldr.w r3, [r8, r1, lsl 3] | offset_1 = r1 << 3;
| r3 = *((r8 + offset_1));
0x0004a352 mov r0, ip | r0 = ip;
0x0004a354 add.w fp, r3, -1 |
| do {
| label_24:
0x0004a358 ldrb r3, [fp, 1]! | r3 = *(arg_1h);
0x0004a35c ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x0004a360 cmp r3, r2 |
| if (r3 == r2) {
0x0004a362 beq 0x4a39c | goto label_169;
| }
0x0004a364 add r3, sl | r3 += sl;
0x0004a366 add r2, sl | r2 += sl;
0x0004a368 ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x0004a36c ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x0004a370 cmp r3, r2 |
0x0004a372 beq 0x4a358 |
| } while (r3 == r2);
0x0004a374 adds r1, 1 | r1++;
0x0004a376 cmp r1, lr |
| if (r1 != lr) {
0x0004a378 bne 0x4a34e | goto label_23;
| }
| label_167:
0x0004a37a ldr.w r8, [sp, 0x44] | r8 = var_44h;
| label_37:
0x0004a37e ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004a380 str.w r8, [sp, 0x24] | __asm ("str.w r8, [var_24h]");
0x0004a384 ldrsh.w r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x0004a388 cmp r3, r6 |
0x0004a38a it eq |
| if (r3 != r6) {
0x0004a38c moveq r6, -1 | r6 = -1;
| }
0x0004a390 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004a392 strh r6, [r3, 0x20] | *((r3 + 0x20)) = r6;
0x0004a394 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0004a396 adds r3, 1 | r3++;
0x0004a398 str r3, [sp, 0x2c] | var_2ch = r3;
0x0004a39a b 0x4a204 | goto label_17;
| label_169:
0x0004a39c cmp r3, 0 |
| if (r3 != 0) {
0x0004a39e bne 0x4a358 | goto label_24;
| }
0x0004a3a0 adds r6, 1 | r6++;
0x0004a3a2 adds r5, 0x14 | r5 += 0x14;
0x0004a3a4 cmp r6, r7 |
| if (r6 != r7) {
0x0004a3a6 bne 0x4a2ec | goto label_25;
| }
| label_165:
0x0004a3a8 ldr.w r8, [sp, 0x44] | r8 = var_44h;
0x0004a3ac b 0x4a204 | goto label_17;
| label_158:
0x0004a3ae ldr r7, [r2, 0x1c] | r7 = *((r2 + 0x1c));
0x0004a3b0 ldr r3, [r7] | r3 = *(r7);
0x0004a3b2 cmp r3, 0 |
| if (r3 <= 0) {
0x0004a3b4 ble.w 0x4a646 | goto label_170;
| }
0x0004a3b8 str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h]");
0x0004a3bc mov.w fp, 0 |
0x0004a3c0 str.w sl, [sp, 0x44] | __asm ("str.w sl, [var_44h]");
0x0004a3c4 mov r6, r7 | r6 = r7;
0x0004a3c6 ldr.w sb, [sp, 0x2c] | sb = var_2ch;
0x0004a3ca mov r4, fp | r4 = fp;
0x0004a3cc ldr.w sl, [sp, 0x30] | sl = var_30h;
| do {
0x0004a3d0 add.w r2, r7, r4, lsl 4 | r2 = r7 + (r4 << 4);
0x0004a3d4 ldrb r5, [r2, 0x11] | r5 = *((r2 + 0x11));
0x0004a3d6 and r5, r5, 3 | r5 &= 3;
0x0004a3da cmp r5, 2 |
| if (r5 == 2) {
0x0004a3dc bne 0x4a400 |
0x0004a3de ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0004a3e0 mov r3, sl | r3 = sl;
0x0004a3e2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004a3e4 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0004a3e6 bl 0x1ffd0 | r0 = fcn_0001ffd0 (r0, r1, r2, r3);
| if (r0 == 0) {
0x0004a3ea cbz r0, 0x4a442 | goto label_171;
| }
0x0004a3ec ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004a3ee add.w sb, sb, 1 | sb++;
0x0004a3f2 mov.w fp, 1 |
0x0004a3f6 str r5, [sp, 0x1c] | var_1ch = r5;
0x0004a3f8 str.w r8, [sp, 0x24] | __asm ("str.w r8, [var_24h]");
0x0004a3fc strh r4, [r3, 0x20] | *((r3 + 0x20)) = r4;
0x0004a3fe ldr r3, [r7] | r3 = *(r7);
| }
| label_27:
0x0004a400 adds r4, 1 | r4++;
0x0004a402 adds r6, 0x10 | r6 += 0x10;
0x0004a404 cmp r4, r3 |
0x0004a406 blt 0x4a3d0 |
| } while (r4 < r3);
0x0004a408 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0004a40a mov r3, fp | r3 = fp;
0x0004a40c ldr.w sl, [sp, 0x44] | sl = var_44h;
0x0004a410 str.w sb, [sp, 0x2c] | __asm ("str.w sb, [var_2ch]");
0x0004a414 ldr r2, [r2] | r2 = *(r2);
0x0004a416 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x0004a41a str r2, [sp, 0x34] | var_34h = r2;
| label_49:
0x0004a41c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004a41e cmp r2, 0 |
0x0004a420 it eq |
| if (r2 != 0) {
0x0004a422 orreq r3, r3, 1 | r3 |= 1;
| }
0x0004a426 cmp r3, 0 |
| if (r3 != 0) {
0x0004a428 bne.w 0x4a204 | goto label_17;
| }
0x0004a42c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004a42e cmp r3, 0 |
| if (r3 == 0) {
0x0004a430 beq.w 0x4a238 | goto label_26;
| }
0x0004a434 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004a436 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0004a438 ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x0004a43a cmp r2, r3 |
| if (r2 != r3) {
0x0004a43c bne.w 0x4a204 | goto label_17;
| }
0x0004a440 b 0x4a238 | goto label_26;
| label_171:
0x0004a442 ldr r3, [r7] | r3 = *(r7);
0x0004a444 b 0x4a400 | goto label_27;
| label_160:
0x0004a446 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0004a448 ldr r1, [r3] | r1 = *(r3);
0x0004a44a b 0x4a244 | goto label_28;
| label_157:
0x0004a44c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0004a44e ldr r2, [sp, 0x50] | r2 = var_50h;
0x0004a450 clz r1, r3 | r1 &= r3;
0x0004a454 lsrs r1, r1, 5 | r1 >>= 5;
0x0004a456 orrs r3, r2 | r3 |= r2;
| label_54:
0x0004a458 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0004a45a cmp r0, 0 |
| if (r0 == 0) {
0x0004a45c beq.w 0x49d8c | goto label_29;
| }
0x0004a460 ldr r2, [r0, 0x28] | r2 = *((r0 + 0x28));
0x0004a462 ldr r4, [sp, 0xc] | r4 = var_ch;
0x0004a464 str r2, [r4, 0x1c] | *((r4 + 0x1c)) = r2;
0x0004a466 mov r2, r0 | r2 = r0;
0x0004a468 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x0004a46a str r0, [r4, 0x2c] | *((r4 + 0x2c)) = r0;
0x0004a46c ldrb.w r2, [r2, 0x24] | r2 = *((r2 + 0x24));
0x0004a470 lsls r2, r2, 0x1c | r2 <<= 0x1c;
0x0004a472 ittt mi |
| if (r2 >= r2) {
0x0004a474 ldrmi r2, [r4, 4] | r2 = *((r4 + 4));
| }
| if (r2 >= r2) {
0x0004a476 orrmi r2, r2, 0x100000 | r2 |= 0x100000;
| }
| if (r2 < r2) {
0x0004a47a str r2, [r4, 4] | *((r4 + 4)) = r2;
| }
0x0004a47c ldr r2, [r0, 0x48] | r2 = *((r0 + 0x48));
0x0004a47e str r2, [sp, 0x3c] | var_3ch = r2;
0x0004a480 b 0x49d8c | goto label_29;
| if (r7 != 0) {
| label_39:
0x0004a482 cbz r7, 0x4a49a |
0x0004a484 ldr r2, [sp, 0x10] | r2 = var_10h;
| if (r2 == 0) {
0x0004a486 cbz r2, 0x4a49a | goto label_47;
| }
0x0004a488 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0004a48a ldr r6, [r2, 8] | r6 = *((r2 + 8));
| if (r6 == 0) {
0x0004a48c cbz r6, 0x4a49a | goto label_47;
| }
0x0004a48e ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004a490 mov.w fp, 0 |
0x0004a494 add.w lr, r2, -1 | lr = r2 + -1;
0x0004a498 b 0x49e0c | goto label_30;
| }
| label_47:
0x0004a49a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0004a49c cmp r3, 1 |
| if (r3 == 1) {
0x0004a49e bne 0x4a4b0 |
| label_44:
0x0004a4a0 ldr r3, [sp, 0x24] | r3 = var_24h;
| if (r3 != 0) {
0x0004a4a2 cbz r3, 0x4a4ac |
0x0004a4a4 tst.w r8, 0x28 |
| if ((r8 & 0x28) == 0) {
0x0004a4a8 beq.w 0x4a5f2 | goto label_172;
| }
| }
| label_45:
0x0004a4ac movs r3, 1 | r3 = 1;
0x0004a4ae str r3, [sp, 0x1c] | var_1ch = r3;
| }
| label_80:
0x0004a4b0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0004a4b2 clz r3, r3 | r3 &= r3;
0x0004a4b6 lsrs r3, r3, 5 | r3 >>= 5;
0x0004a4b8 ands.w r8, r3, r8, lsr 7 | r8 = r3 & (r8 >> 7);
| if (r8 != r3) {
0x0004a4bc bne.w 0x4a7de | goto label_173;
| }
| label_56:
0x0004a4c0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0004a4c2 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0004a4c4 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x0004a4c6 adds r1, 1 | r1++;
0x0004a4c8 str r1, [sp, 0x4c] | var_4ch = r1;
0x0004a4ca str r2, [sp, 0x38] | var_38h = r2;
0x0004a4cc cmp r2, 0 |
| if (r2 != 0) {
0x0004a4ce bne.w 0x49d78 | goto label_31;
| }
0x0004a4d2 cmp r3, 0 |
| if (r3 == 0) {
0x0004a4d4 beq.w 0x4a7d2 | goto label_174;
| }
0x0004a4d8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004a4da ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0004a4dc lsls r3, r3, 0x19 | r3 <<= 0x19;
| if (r3 >= r3) {
0x0004a4de bpl.w 0x4a7c6 | goto label_76;
| }
0x0004a4e2 ldr r1, [sp, 0x54] | r1 = var_54h;
0x0004a4e4 ldrb.w r3, [r1, 0xa9] | r3 = *((r1 + 0xa9));
| if (r3 == 0) {
0x0004a4e8 cbnz r3, 0x4a50a |
0x0004a4ea ldr r3, [sp, 0x40] | r3 = var_40h;
0x0004a4ec ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x0004a4ee ldr r3, [r1, 0x20] | r3 = *((r1 + 0x20));
0x0004a4f0 lsls r7, r2, 0xf | r7 = r2 << 0xf;
| if (r7 >= r2) {
0x0004a4f2 bpl.w 0x4ae24 | goto label_175;
| }
0x0004a4f6 movs r2, 1 |
0x0004a4f8 movt r2, 0x1000 | r2 = 0x10000001;
0x0004a4fc ands r2, r3 | r2 &= r3;
0x0004a4fe cmp r2, 1 |
| if (r2 != 1) {
0x0004a500 bne.w 0x4a7c0 | goto label_176;
| }
0x0004a504 lsls r6, r3, 1 | r6 = r3 << 1;
| if (r6 >= r3) {
0x0004a506 bpl.w 0x4a7c0 | goto label_176;
| }
| }
| label_57:
0x0004a50a ldr.w r1, [pc, 0x824] | r1 = *(0x0004ad30);
0x0004a50e movs r0, 0x1c | r0 = 0x1c;
0x0004a510 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0004a512 add r1, pc | r1 += pc;
0x0004a514 blx 0x8474 | fcn_00008474 ();
0x0004a518 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0004a51a movs r2, 0x74 | r2 = 0x74;
0x0004a51c movs r3, 0 | r3 = 0;
0x0004a51e movs r0, 1 | r0 = 1;
0x0004a520 strb r2, [r1] | *(r1) = r2;
0x0004a522 str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
0x0004a524 b.w 0x49854 | goto label_1;
| label_130:
0x0004a528 cmp r1, 0 |
| if (r1 != 0) {
0x0004a52a bne.w 0x49dda | goto label_32;
| }
0x0004a52e ldr r1, [sp, 0xc] | r1 = var_ch;
0x0004a530 subs.w r2, ip, 0x7f | r2 = ip - 0x7f;
0x0004a534 it ne |
| if (r2 == ip) {
0x0004a536 movne r2, 1 | r2 = 1;
| }
0x0004a538 str r2, [r1, 0x1c] | *((r1 + 0x1c)) = r2;
0x0004a53a cmp r7, 0 |
| if (r7 == 0) {
0x0004a53c beq.w 0x49e4e | goto label_33;
| }
| label_43:
0x0004a540 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0004a542 ldr r6, [r2, 8] | r6 = *((r2 + 8));
0x0004a544 cmp r6, 0 |
| if (r6 == 0) {
0x0004a546 beq.w 0x49e4e | goto label_33;
| }
0x0004a54a b 0x49e0c | goto label_30;
| label_162:
0x0004a54c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0004a54e ldr.w r2, [r3, 0x10c] | r2 = *((r3 + 0x10c));
0x0004a552 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004a554 add.w r1, r3, 0x2c | r1 = r3 + 0x2c;
| if (r2 != 0) {
0x0004a558 cbnz r2, 0x4a564 | goto label_177;
| }
0x0004a55a b 0x4a28c | goto label_34;
| label_35:
0x0004a55c ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x0004a55e cmp r2, 0 |
| if (r2 == 0) {
0x0004a560 beq.w 0x4a28c | goto label_34;
| }
| label_177:
0x0004a564 ldr r3, [r2] | r3 = *(r2);
0x0004a566 cmp r1, r3 |
| if (r1 != r3) {
0x0004a568 bne 0x4a55c | goto label_35;
| }
0x0004a56a movs r3, 0 | r3 = 0;
0x0004a56c str r3, [r2] | *(r2) = r3;
0x0004a56e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0004a570 b 0x4a28e | goto label_36;
| label_168:
0x0004a572 mov r8, r2 | r8 = r2;
0x0004a574 b 0x4a37e | goto label_37;
| label_163:
0x0004a576 ldr r4, [sp, 0x28] | r4 = var_28h;
0x0004a578 b 0x4a2c8 | goto label_38;
| label_128:
0x0004a57a ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004a57c subs r6, r2, 0 | r6 = r2 - 0;
0x0004a57e it ne |
| if (r6 == r2) {
0x0004a580 movne r6, 1 | r6 = 1;
| }
0x0004a582 cmp.w ip, 0x7f |
0x0004a586 ite eq |
| if (ip != 0x7f) {
0x0004a588 moveq r2, 0 | r2 = 0;
| }
| if (ip == 0x7f) {
0x0004a58a andne r2, r6, 1 | r2 = r6 & 1;
| }
0x0004a58e cmp r2, 0 |
| if (r2 != 0) {
0x0004a590 bne 0x4a64a | goto label_178;
| }
| label_50:
0x0004a592 cmp.w ip, 0x7e |
0x0004a596 ite eq |
| if (ip != 0x7e) {
0x0004a598 moveq r6, 0 | r6 = 0;
| }
| if (ip == 0x7e) {
0x0004a59a andne r6, r6, 1 | r6 &= 1;
| }
0x0004a59e cmp r6, 0 |
| if (r6 == 0) {
0x0004a5a0 beq.w 0x4a482 | goto label_39;
| }
0x0004a5a4 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004a5a6 ldr.w r5, [pc, 0x78c] |
0x0004a5aa ldr.w r6, [pc, 0x78c] |
0x0004a5ae add.w lr, r2, -1 | lr = r2 + -1;
0x0004a5b2 movs r2, 0x6f | r2 = 0x6f;
0x0004a5b4 add r5, pc | r5 = 0x952ee;
0x0004a5b6 mov r4, lr | r4 = lr;
0x0004a5b8 add r6, pc | r6 = 0x952f6;
0x0004a5ba b 0x4a5d2 | goto label_179;
| label_41:
0x0004a5bc add r2, r6 | r2 += r6;
0x0004a5be add r1, r6 | r1 += r6;
0x0004a5c0 ldrb.w r0, [r2, 0x140] | r0 = *((r2 + 0x140));
0x0004a5c4 ldrb.w r2, [r1, 0x140] | r2 = *((r1 + 0x140));
0x0004a5c8 cmp r0, r2 |
| if (r0 != r2) {
0x0004a5ca bne.w 0x49df8 | goto label_40;
| }
| label_42:
0x0004a5ce ldrb r2, [r5, 1]! | r2 = *((r5 += 1));
| label_179:
0x0004a5d2 ldrb r1, [r4, 1]! | r1 = *((r4 += 1));
0x0004a5d6 mov r0, r2 | r0 = r2;
0x0004a5d8 cmp r2, r1 |
| if (r2 != r1) {
0x0004a5da bne 0x4a5bc | goto label_41;
| }
0x0004a5dc cmp r2, 0 |
| if (r2 != 0) {
0x0004a5de bne 0x4a5ce | goto label_42;
| }
| label_53:
0x0004a5e0 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004a5e2 str r0, [r2, 0x1c] | *((r2 + 0x1c)) = r0;
0x0004a5e4 cmp r7, 0 |
| if (r7 != 0) {
0x0004a5e6 bne 0x4a540 | goto label_43;
| }
0x0004a5e8 b 0x49e4e | goto label_33;
| label_153:
0x0004a5ea ldr r3, [sp, 0x38] | r3 = var_38h;
0x0004a5ec ldr.w r8, [r3, 0x18] | r8 = *((r3 + 0x18));
0x0004a5f0 b 0x4a4a0 | goto label_44;
| label_172:
0x0004a5f2 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0004a5f4 bl 0x1fe40 | r0 = fcn_0001fe40 (r0);
0x0004a5f8 cmp r0, 0 |
| if (r0 == 0) {
0x0004a5fa beq.w 0x4a4ac | goto label_45;
| }
0x0004a5fe ldr r3, [sp, 0x24] | r3 = var_24h;
0x0004a600 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0004a602 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x0004a604 lsls r2, r3, 0x16 | r2 = r3 << 0x16;
| if (r2 < r3) {
0x0004a606 bmi.w 0x4a4ac | goto label_45;
| }
0x0004a60a ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004a60c movw r3, 0xffff | r3 = 0xffff;
0x0004a610 movs r4, 0xa6 | r4 = 0xa6;
0x0004a612 strh r3, [r2, 0x20] | *((r2 + 0x20)) = r3;
0x0004a614 movs r3, 0x44 | r3 = 0x44;
0x0004a616 strb r3, [r2, 1] | *((r2 + 1)) = r3;
0x0004a618 b 0x49f40 | goto label_46;
| label_164:
0x0004a61a mov r4, r3 | r4 = r3;
0x0004a61c b 0x4a2c8 | goto label_38;
| label_135:
0x0004a61e ldr r0, [sp, 0x28] | r0 = var_28h;
0x0004a620 bl 0x1fe40 | r0 = fcn_0001fe40 (r0);
0x0004a624 cmp r0, 0 |
| if (r0 == 0) {
0x0004a626 beq.w 0x4a49a | goto label_47;
| }
0x0004a62a ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x0004a62e mvns r2, r5 | r2 = ~r5;
0x0004a630 lsrs r2, r2, 0x1f | r2 >>= 0x1f;
0x0004a632 eor r3, r3, 0x200 | r3 ^= 0x200;
0x0004a636 ands.w r2, r2, r3, lsr 9 | r2 &= (r3 >> 9);
| if (r2 == r2) {
0x0004a63a beq.w 0x4a49a | goto label_47;
| }
0x0004a63e mov.w r1, -1 | r1 = -1;
0x0004a642 mov r3, r1 | r3 = r1;
0x0004a644 b 0x49ef8 | goto label_48;
| label_170:
0x0004a646 movs r3, 0 | r3 = 0;
0x0004a648 b 0x4a41c | goto label_49;
| label_178:
0x0004a64a ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004a64c ldr.w r4, [pc, 0x6ec] | r4 = *(0x0004ad3c);
0x0004a650 ldr.w r5, [pc, 0x6ec] | r5 = *(0x0004ad40);
0x0004a654 add.w lr, r2, -1 | lr = r2 + -1;
0x0004a658 movs r2, 0x6e | r2 = 0x6e;
0x0004a65a add r4, pc | r4 += pc;
0x0004a65c mov r0, lr | r0 = lr;
0x0004a65e add r5, pc | r5 += pc;
0x0004a660 b 0x4a676 | goto label_180;
| label_51:
0x0004a662 add r2, r5 | r2 += r5;
0x0004a664 add r1, r5 | r1 += r5;
0x0004a666 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x0004a66a ldrb.w r1, [r1, 0x140] | r1 = *((r1 + 0x140));
0x0004a66e cmp r2, r1 |
| if (r2 != r1) {
0x0004a670 bne 0x4a592 | goto label_50;
| }
| label_52:
0x0004a672 ldrb r2, [r4, 1]! | r2 = *((r4 += 1));
| label_180:
0x0004a676 ldrb r1, [r0, 1]! | r1 = *((r0 += 1));
0x0004a67a cmp r2, r1 |
| if (r2 != r1) {
0x0004a67c bne 0x4a662 | goto label_51;
| }
0x0004a67e cmp r2, 0 |
| if (r2 != 0) {
0x0004a680 bne 0x4a672 | goto label_52;
| }
0x0004a682 movs r0, 1 | r0 = 1;
0x0004a684 b 0x4a5e0 | goto label_53;
| label_156:
0x0004a686 movs r2, 0 | r2 = 0;
0x0004a688 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0004a68a movs r1, 1 | r1 = 1;
0x0004a68c str r2, [sp, 0x2c] | var_2ch = r2;
0x0004a68e b 0x4a458 | goto label_54;
| label_139:
0x0004a690 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004a692 strh r1, [r2, 0x20] | *((r2 + 0x20)) = r1;
0x0004a694 adds r1, r3, 1 | r1 = r3 + 1;
0x0004a696 ittt eq |
| if (r1 != r3) {
0x0004a698 moveq r3, 0x44 | r3 = 0x44;
| }
| if (r1 != r3) {
0x0004a69a moveq r4, 0x4d | r4 = 0x4d;
| }
| if (r1 == r3) {
0x0004a69c strbeq r3, [r2, 1] | *((r2 + 1)) = r3;
| goto label_181;
| }
| if (r1 == r3) {
| label_181:
0x0004a69e beq.w 0x49f40 | goto label_46;
| }
0x0004a6a2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0004a6a4 cmp r4, 0 |
| if (r4 != 0) {
0x0004a6a6 bne.w 0x4a930 | goto label_182;
| }
0x0004a6aa cmp r3, 0x1f |
0x0004a6ac ldr.w r1, [r2, 0x88] | r1 = *((r2 + 0x88));
0x0004a6b0 itet le |
| if (r3 > 0x1f) {
0x0004a6b2 movle r2, 1 | r2 = 1;
| }
| if (r3 <= 0x1f) {
0x0004a6b4 movgt r3, -1 | r3 = -1;
| }
| if (r3 <= 0x1f) {
0x0004a6b8 lsl.w r3, r2, r3 | r3 = r2 << r3;
| }
0x0004a6bc ldr r2, [sp, 0x20] | r2 = var_20h;
0x0004a6be mov.w r4, 0x4d | r4 = 0x4d;
0x0004a6c2 it le |
| if (r3 > 0x1f) {
0x0004a6c4 orrle r3, r1 | r3 |= r1;
| }
0x0004a6c6 str.w r3, [r2, 0x88] | __asm ("str.w r3, [r2, 0x88]");
0x0004a6ca b 0x49f40 | goto label_46;
| label_138:
0x0004a6cc ldr r2, [sp, 0x20] | r2 = var_20h;
0x0004a6ce ldrb.w r2, [r2, 0xc8] | r2 = *((r2 + 0xc8));
0x0004a6d2 cmp r2, 1 |
| if (r2 < 1) {
0x0004a6d4 bls.w 0x4a8f6 | goto label_183;
| }
0x0004a6d8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004a6da movs r4, 0xa6 | r4 = 0xa6;
0x0004a6dc strh r1, [r3, 0x20] | *((r3 + 0x20)) = r1;
0x0004a6de str.w fp, [r3, 0x2c] | __asm ("str.w fp, [r3, 0x2c]");
0x0004a6e2 b 0x49f40 | goto label_46;
| label_129:
0x0004a6e4 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0004a6e6 subs.w r2, ip, 0x7f | r2 = ip - 0x7f;
0x0004a6ea it ne |
| if (r2 == ip) {
0x0004a6ec movne r2, 1 | r2 = 1;
| }
0x0004a6ee str r2, [r1, 0x1c] | *((r1 + 0x1c)) = r2;
0x0004a6f0 b.w 0x49e4e | goto label_33;
| label_133:
0x0004a6f4 ldr r6, [sp, 0x28] | r6 = var_28h;
0x0004a6f6 b.w 0x49e76 | goto label_55;
| label_131:
0x0004a7ae ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0004a7b0 cmp r3, 1 |
| if (r3 == 1) {
0x0004a7b2 beq.w 0x4a4a0 | goto label_44;
| }
0x0004a7b6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0004a7b8 clz r3, r3 | r3 &= r3;
0x0004a7bc lsrs r3, r3, 5 | r3 >>= 5;
0x0004a7be b 0x4a4c0 | goto label_56;
| label_176:
0x0004a7c0 lsls r5, r3, 2 | r5 = r3 << 2;
| if (r5 < r3) {
0x0004a7c2 bmi.w 0x4a50a | goto label_57;
| }
| label_76:
0x0004a7c6 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0004a7c8 bl 0x1fc20 | r0 = fcn_0001fc20 (r0);
0x0004a7cc cmp r0, 0 |
| if (r0 != 0) {
0x0004a7ce bne.w 0x49a42 | goto label_7;
| }
| label_174:
0x0004a7d2 ldr.w r2, [pc, 0x57c] | r2 = *(0x0004ad50);
0x0004a7d6 movs r3, 0 | r3 = 0;
0x0004a7d8 str r3, [sp, 0x2c] | var_2ch = r3;
0x0004a7da add r2, pc | r2 += pc;
0x0004a7dc b 0x4a124 | goto label_58;
| label_173:
0x0004a7de ldr r3, [sp, 0x38] | r3 = var_38h;
0x0004a7e0 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x0004a7e2 ldr r2, [r4] | r2 = *(r4);
0x0004a7e4 cmp r2, 0 |
| if (r2 <= 0) {
0x0004a7e6 ble 0x4a81a | goto label_184;
| }
0x0004a7e8 mov r6, r4 | r6 = r4;
0x0004a7ea movs r5, 0 | r5 = 0;
0x0004a7ec b 0x4a7f8 |
| while (r3 != r3) {
| label_59:
0x0004a7ee cmp r7, r2 |
0x0004a7f0 add.w r6, r6, 0x10 | r6 += 0x10;
0x0004a7f4 mov r5, r7 | r5 = r7;
| if (r7 >= r2) {
0x0004a7f6 bge 0x4a81a | goto label_184;
| }
0x0004a7f8 adds r7, r5, 1 | r7 = r5 + 1;
0x0004a7fa ldr.w fp, [r6, 0xc] | fp = *((r6 + 0xc));
0x0004a7fe add.w r3, r4, r7, lsl 4 | r3 = r4 + (r7 << 4);
0x0004a802 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x0004a804 lsls r3, r3, 0x1e | r3 <<= 0x1e;
0x0004a806 bne 0x4a7ee |
| }
0x0004a808 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0004a80a mov r0, fp | r0 = fp;
0x0004a80c blx 0x831c | r0 = fcn_0000831c ();
0x0004a810 cmp r0, 0 |
| if (r0 == 0) {
0x0004a812 beq.w 0x4ab26 | goto label_185;
| }
0x0004a816 ldr r2, [r4] | r2 = *(r4);
0x0004a818 b 0x4a7ee | goto label_59;
| label_184:
0x0004a81a mov r3, r8 | r3 = r8;
0x0004a81c b 0x4a4c0 | goto label_56;
| label_125:
0x0004a81e ldr r3, [sp, 0x54] | r3 = var_54h;
0x0004a820 ldr r7, [r3, 0x14] | r7 = *((r3 + 0x14));
0x0004a822 cmp r7, 0 |
| if (r7 <= 0) {
0x0004a824 ble.w 0x4ae2e | goto label_186;
| }
0x0004a828 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0004a82a ldr.w r0, [pc, 0x528] | r0 = *(0x0004ad54);
0x0004a82e ldr r6, [r3, 0x10] | r6 = *((r3 + 0x10));
0x0004a830 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004a832 add r0, pc | r0 += pc;
0x0004a834 subs r5, r3, 1 | r5 = r3 - 1;
| label_60:
0x0004a836 ldr r1, [r6] | r1 = *(r6);
0x0004a838 mov ip, r5 |
0x0004a83a subs r1, 1 | r1--;
| do {
| label_63:
0x0004a83c ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x0004a840 ldrb r2, [ip, 1]! | r2 = *((ip += 1));
0x0004a844 cmp r3, r2 |
| if (r3 == r2) {
0x0004a846 beq 0x4a8a4 | goto label_187;
| }
0x0004a848 add r3, r0 | r3 += r0;
0x0004a84a add r2, r0 | r2 += r0;
0x0004a84c ldrb.w lr, [r3, 0x140] |
0x0004a850 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x0004a854 cmp lr, r3 |
0x0004a856 beq 0x4a83c |
| } while (lr == r3);
0x0004a858 adds r4, 1 | r4++;
0x0004a85a adds r6, 0x10 | r6 += 0x10;
0x0004a85c cmp r4, r7 |
| if (r4 != r7) {
0x0004a85e bne 0x4a836 | goto label_60;
| }
| label_81:
0x0004a860 ldr.w r0, [pc, 0x4f4] | r0 = *(0x0004ad58);
0x0004a864 movs r3, 0x6d | r3 = 0x6d;
0x0004a866 ldr.w r1, [pc, 0x4f4] |
0x0004a86a add r0, pc | r0 += pc;
0x0004a86c add r1, pc | r1 = 0x955ce;
0x0004a86e b 0x4a886 |
| while (r3 != r2) {
0x0004a870 add r3, r1 | r3 += r1;
0x0004a872 add r2, r1 | r2 += r1;
0x0004a874 ldrb.w r4, [r3, 0x140] | r4 = *((r3 + 0x140));
0x0004a878 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x0004a87c cmp r4, r3 |
| if (r4 != r3) {
0x0004a87e bne.w 0x4af2a | goto label_188;
| }
| label_61:
0x0004a882 ldrb r3, [r0, 1]! | r3 = *((r0 += 1));
0x0004a886 ldrb r2, [r5, 1]! | r2 = *((r5 += 1));
0x0004a88a cmp r3, r2 |
0x0004a88c bne 0x4a870 |
| }
0x0004a88e cmp r3, 0 |
| if (r3 != 0) {
0x0004a890 bne 0x4a882 | goto label_61;
| }
0x0004a892 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0004a894 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0004a896 ldr r2, [r3] | r2 = *(r3);
0x0004a898 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0004a89a str r2, [sp, 0x30] | var_30h = r2;
0x0004a89c str r3, [sp, 0x3c] | var_3ch = r3;
0x0004a89e str r2, [sp, 0x50] | var_50h = r2;
0x0004a8a0 b.w 0x49d60 | goto label_62;
| label_187:
0x0004a8a4 cmp r3, 0 |
| if (r3 != 0) {
0x0004a8a6 bne 0x4a83c | goto label_63;
| }
0x0004a8a8 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0004a8aa str r3, [sp, 0x3c] | var_3ch = r3;
0x0004a8ac ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004a8ae str r3, [sp, 0x50] | var_50h = r3;
0x0004a8b0 b.w 0x49d60 | goto label_62;
| label_134:
0x0004a8c6 mov r6, r2 | r6 = r2;
0x0004a8c8 b.w 0x49e76 | goto label_55;
| label_116:
0x0004a8cc ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0004a8ce ldr r3, [r3] | r3 = *(r3);
0x0004a8d0 b.w 0x4999c | goto label_64;
| label_155:
0x0004a8d4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0004a8d6 cmp r3, 0 |
| if (r3 == 0) {
0x0004a8d8 beq.w 0x4ae3c | goto label_189;
| }
0x0004a8dc ldr r1, [sp, 0x28] | r1 = var_28h;
0x0004a8de ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004a8e0 str r1, [sp] | *(sp) = r1;
0x0004a8e2 ldr.w r1, [pc, 0x47c] | r1 = *(0x0004ad60);
0x0004a8e6 add r1, pc | r1 += pc;
0x0004a8e8 bl 0x25778 | fcn_00025778 (r0);
0x0004a8ec b 0x4a13e | goto label_65;
| label_113:
0x0004a8ee ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0004a8f0 ldr r2, [r3] | r2 = *(r3);
0x0004a8f2 b.w 0x49974 | goto label_66;
| label_183:
0x0004a8f6 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0004a8f8 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x0004a8fa ldr r4, [r2, 0x24] | r4 = *((r2 + 0x24));
0x0004a8fc ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x0004a900 lsls r7, r2, 0x1a | r7 = r2 << 0x1a;
0x0004a902 it pl |
| if (r7 < r2) {
0x0004a904 movpl r3, r1 | r3 = r1;
| }
| if (r7 < r2) {
0x0004a906 bpl 0x4a914 |
0x0004a908 adds r6, r3, 1 | r6 = r3 + 1;
| if (r6 == r3) {
0x0004a90a beq 0x4a914 | goto label_190;
| }
0x0004a90c mov r0, fp | r0 = fp;
0x0004a90e bl 0xf328 | r0 = fcn_0000f328 (r0, r1);
0x0004a912 mov r3, r0 | r3 = r0;
| }
| label_190:
0x0004a914 add r4, r3 | r4 += r3;
0x0004a916 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004a918 str r4, [r3, 0x1c] | *((r3 + 0x1c)) = r4;
0x0004a91a movs r4, 0xaf | r4 = 0xaf;
0x0004a91c b.w 0x49f40 | goto label_46;
| label_123:
0x0004a920 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0004a922 b.w 0x49ce6 | goto label_67;
| label_137:
0x0004a926 mov.w r3, -1 | r3 = -1;
0x0004a92a mov r1, r3 | r1 = r3;
0x0004a92c b.w 0x49ef8 | goto label_48;
| label_182:
0x0004a930 cmp r3, 0x1f |
0x0004a932 ldr.w r1, [r2, 0x8c] | r1 = *((r2 + 0x8c));
0x0004a936 itet le |
| if (r3 > 0x1f) {
0x0004a938 movle r2, 1 | r2 = 1;
| }
| if (r3 <= 0x1f) {
0x0004a93a movgt r3, -1 | r3 = -1;
| }
| if (r3 <= 0x1f) {
0x0004a93e lsl.w r3, r2, r3 | r3 = r2 << r3;
| }
0x0004a942 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0004a944 mov.w r4, 0x4d | r4 = 0x4d;
0x0004a948 it le |
| if (r3 > 0x1f) {
0x0004a94a orrle r3, r1 | r3 |= r1;
| }
0x0004a94c str.w r3, [r2, 0x8c] | __asm ("str.w r3, [r2, 0x8c]");
0x0004a950 b.w 0x49f40 | goto label_46;
| label_141:
0x0004a954 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004a956 orr r3, r3, 0x800000 | r3 |= 0x800000;
0x0004a95a strb r4, [r2] | *(r2) = r4;
0x0004a95c str r3, [r2, 4] | *((r2 + 4)) = r3;
0x0004a95e b.w 0x49f8c | goto label_68;
| label_149:
0x0004aa4e ldr r1, [pc, 0x320] |
0x0004aa50 orr r2, r2, 0x10000000 | r2 |= 0x10000000;
0x0004aa54 add r1, pc | r1 = 0x957ca;
0x0004aa56 b.w 0x4a092 | goto label_69;
| label_150:
0x0004ab16 ldr r3, [pc, 0x270] |
0x0004ab18 add r3, pc | r3 = 0x958a6;
0x0004ab1a b.w 0x4a0e2 | goto label_70;
| label_148:
0x0004ab1e ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0004ab20 ldr r3, [r3] | r3 = *(r3);
0x0004ab22 b.w 0x4a06a | goto label_71;
| label_185:
0x0004ab26 add.w r3, r4, r5, lsl 4 | r3 = r4 + (r5 << 4);
0x0004ab2a mov r2, fp | r2 = fp;
0x0004ab2c ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0004ab2e ldr r3, [sp, 0x38] | r3 = var_38h;
0x0004ab30 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x0004ab32 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0004ab34 lsls r7, r3, 0x1f | r7 = r3 << 0x1f;
| if (r7 >= r3) {
0x0004ab36 bmi 0x4ab3e |
0x0004ab38 lsls r6, r0, 0x1b | r6 = r0 << 0x1b;
| if (r6 < r0) {
0x0004ab3a bmi.w 0x4b10a | goto label_191;
| }
| }
0x0004ab3e lsls r0, r0, 0x10 | r0 <<= 0x10;
| if (r0 < r0) {
0x0004ab40 bpl 0x4ab5c |
0x0004ab42 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0004ab44 eor r3, r3, 0x4000 | r3 ^= 0x4000;
0x0004ab48 ldr r6, [sp, 0x38] | r6 = var_38h;
0x0004ab4a ubfx r3, r3, 0xe, 1 | r3 = (r3 >> 0xe) & ((1 << 1) - 1);
0x0004ab4e cmp r0, r6 |
0x0004ab50 it ne |
| if (r0 == r6) {
0x0004ab52 orrne r3, r3, 1 | r3 |= 1;
| }
0x0004ab56 cmp r3, 0 |
| if (r3 != 0) {
0x0004ab58 bne.w 0x4afa2 | goto label_192;
| }
| }
0x0004ab5c ldrb r3, [r1] | r3 = *(r1);
0x0004ab5e cmp r3, 0xaf |
0x0004ab60 it eq |
| if (r3 != 0xaf) {
0x0004ab62 ldrbeq r3, [r1, 2] | r3 = *((r1 + 2));
| }
0x0004ab64 cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x0004ab66 beq.w 0x4b0fc | goto label_193;
| }
0x0004ab6a cmp r3, 0x89 |
| if (r3 == 0x89) {
0x0004ab6c beq.w 0x4b0e0 | goto label_194;
| }
| label_82:
0x0004ab70 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0004ab72 mov r1, r4 | r1 = r4;
0x0004ab74 ldr r4, [sp, 0x20] | r4 = var_20h;
0x0004ab76 mov r2, r5 | r2 = r5;
0x0004ab78 str r3, [sp] | *(sp) = r3;
0x0004ab7a mov r0, r4 | r0 = r4;
0x0004ab7c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004ab7e bl 0x31790 | fcn_00031790 (r0, r1, r2, r3, r4);
0x0004ab82 ldrb.w r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0004ab86 cmp r3, 1 |
| if (r3 < 1) {
0x0004ab88 bls.w 0x49f8c | goto label_68;
| }
0x0004ab8c ldr.w r3, [r4, 0x10c] | r3 = *((r4 + 0x10c));
| if (r3 != 0) {
0x0004ab90 cbnz r3, 0x4ab9e | goto label_195;
| }
0x0004ab92 b.w 0x49f8c | goto label_68;
| label_72:
0x0004ab96 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0004ab98 cmp r3, 0 |
| if (r3 == 0) {
0x0004ab9a beq.w 0x49f8c | goto label_68;
| }
| label_195:
0x0004ab9e ldr r2, [r3] | r2 = *(r3);
0x0004aba0 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0004aba2 cmp r1, r2 |
| if (r1 != r2) {
0x0004aba4 bne 0x4ab96 | goto label_72;
| }
0x0004aba6 movs r2, 0 | r2 = 0;
0x0004aba8 str r2, [r3] | *(r3) = r2;
0x0004abaa b.w 0x49f8c | goto label_68;
| label_143:
0x0004acf0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004acf2 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0004acf4 str r3, [sp, 0x10] | var_10h = r3;
0x0004acf6 movs r3, 0 | r3 = 0;
0x0004acf8 mov r2, r3 | r2 = r3;
0x0004acfa str r3, [sp, 0x50] | var_50h = r3;
0x0004acfc mov.w r3, -1 | r3 = -1;
0x0004ad00 str r2, [sp, 0x3c] | var_3ch = r2;
0x0004ad02 str r3, [r1, 0x1c] | *((r1 + 0x1c)) = r3;
0x0004ad04 str r2, [sp, 0x30] | var_30h = r2;
0x0004ad06 b.w 0x49d60 | goto label_62;
| label_146:
0x0004ad0a ldr r3, [pc, 0x8c] |
0x0004ad0c add r3, pc | r3 = 0x95aaa;
0x0004ad0e b.w 0x4a018 | goto label_73;
| label_145:
0x0004ad12 ldr r3, [pc, 0x88] |
0x0004ad14 add r3, pc | r3 = 0x95ab6;
0x0004ad16 b.w 0x4a018 | goto label_73;
| label_142:
0x0004ada0 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0004ada2 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0004ada4 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0004ada6 cmp r0, 0 |
| if (r0 == 0) {
0x0004ada8 beq.w 0x49fa4 | goto label_74;
| }
0x0004adac ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x0004adae ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x0004adb0 cmp r0, r3 |
0x0004adb2 mov.w r3, 0 | r3 = 0;
| if (r0 == r3) {
0x0004adb6 beq 0x4adc4 | goto label_196;
| }
| do {
0x0004adb8 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x0004adba adds r2, 0x10 | r2 += 0x10;
0x0004adbc ldr r0, [r2, 0xc] | r0 = *((r2 + 0xc));
0x0004adbe adds r3, 1 | r3++;
0x0004adc0 cmp r0, r5 |
0x0004adc2 bne 0x4adb8 |
| } while (r0 != r5);
| label_196:
0x0004adc4 cmp r4, 0x4d |
| if (r4 == 0x4d) {
0x0004adc6 beq 0x4ae4c | goto label_197;
| }
0x0004adc8 ldr r5, [r1] | r5 = *(r1);
0x0004adca cmp r5, 0 |
| if (r5 <= 0) {
0x0004adcc ble.w 0x49fa4 | goto label_74;
| }
0x0004add0 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004add2 mov r4, r1 | r4 = r1;
0x0004add4 ldr r6, [r2, 0x1c] | r6 = *((r2 + 0x1c));
0x0004add6 movs r2, 0 | r2 = 0;
0x0004add8 b 0x4ade4 | goto label_198;
| label_75:
0x0004adda adds r2, 1 | r2++;
0x0004addc adds r4, 0x48 | r4 += 0x48;
0x0004adde cmp r5, r2 |
| if (r5 == r2) {
0x0004ade0 beq.w 0x49fa4 | goto label_74;
| }
| label_198:
0x0004ade4 ldr r0, [r4, 0x30] | r0 = *((r4 + 0x30));
0x0004ade6 cmp r6, r0 |
| if (r6 != r0) {
0x0004ade8 bne 0x4adda | goto label_75;
| }
0x0004adea add.w r2, r2, r2, lsl 3 | r2 += (r2 << 3);
0x0004adee add.w r1, r1, r2, lsl 3 | r1 += (r2 << 3);
0x0004adf2 ldr r1, [r1, 0x18] | r1 = *((r1 + 0x18));
| label_77:
0x0004adf4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004adf6 ldrsh.w r2, [r2, 0x20] | r2 = *((r2 + 0x20));
0x0004adfa cmp r1, 0 |
| if (r1 == 0) {
0x0004adfc beq.w 0x49fa4 | goto label_74;
| }
0x0004ae00 cmp r2, 0 |
| if (r2 < 0) {
0x0004ae02 blt 0x4ae52 | goto label_199;
| }
| label_78:
0x0004ae04 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x0004ae06 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x0004ae0a ldr.w r2, [r0, r2, lsl 2] | offset_2 = r2 << 2;
| r2 = *((r0 + offset_2));
| label_79:
0x0004ae0e ldr r1, [r1] | r1 = *(r1);
0x0004ae10 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004ae12 bl 0x496c8 | r0 = fcn_000496c8 (r0, r1, r2, r3);
0x0004ae16 cmp r0, 2 |
0x0004ae18 ittt eq |
| if (r0 != 2) {
0x0004ae1a ldreq r2, [sp, 0xc] | r2 = var_ch;
| }
| if (r0 != 2) {
0x0004ae1c moveq r3, 0x78 | r3 = 0x78;
| }
| if (r0 != 2) {
0x0004ae1e strbeq r3, [r2] | *(r2) = r3;
| }
0x0004ae20 b.w 0x49fa4 | goto label_74;
| label_175:
0x0004ae24 lsls r4, r3, 1 | r4 = r3 << 1;
| if (r4 >= r3) {
0x0004ae26 bpl.w 0x4a7c6 | goto label_76;
| }
0x0004ae2a b.w 0x4a50a | goto label_57;
| if (r4 == r3) {
| label_186:
0x0004ae2e beq.w 0x4b0aa | goto label_200;
| }
0x0004ae32 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004ae34 str r4, [sp, 0x3c] | var_3ch = r4;
0x0004ae36 str r3, [sp, 0x50] | var_50h = r3;
0x0004ae38 b.w 0x49d60 | goto label_62;
| label_189:
0x0004ae3c ldr r1, [pc, 0x310] |
0x0004ae3e ldr r3, [sp, 0x28] | r3 = var_28h;
0x0004ae40 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004ae42 add r1, pc | r1 = 0x95f96;
0x0004ae44 bl 0x25778 | fcn_00025778 (r0);
0x0004ae48 b.w 0x4a13e | goto label_65;
| label_197:
0x0004ae4c ldr r2, [sp, 0x20] | r2 = var_20h;
0x0004ae4e ldr r1, [r2, 0x78] | r1 = *((r2 + 0x78));
0x0004ae50 b 0x4adf4 | goto label_77;
| label_199:
0x0004ae52 ldrsh.w r2, [r1, 0x28] | r2 = *((r1 + 0x28));
0x0004ae56 cmp r2, 0 |
| if (r2 >= 0) {
0x0004ae58 bge 0x4ae04 | goto label_78;
| }
0x0004ae5a ldr r2, [pc, 0x2f8] |
0x0004ae5c add r2, pc | r2 = 0x95fb6;
0x0004ae5e b 0x4ae0e | goto label_79;
| label_188:
0x0004af2a ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004af2c str r3, [sp, 0x50] | var_50h = r3;
0x0004af2e movs r3, 0 | r3 = 0;
0x0004af30 str r3, [sp, 0x3c] | var_3ch = r3;
0x0004af32 b.w 0x49d60 | goto label_62;
| label_192:
0x0004afa2 ldr r1, [pc, 0x1c0] |
0x0004afa4 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004afa6 add r1, pc | r1 = 0x96110;
0x0004afa8 bl 0x25778 | fcn_00025778 (r0);
0x0004afac movs r0, 2 | r0 = 2;
0x0004afae b.w 0x49854 | goto label_1;
| label_147:
0x0004b06e ldr r3, [pc, 0x120] |
0x0004b070 add r3, pc | r3 = 0x96206;
0x0004b072 b.w 0x4a018 | goto label_73;
| label_152:
0x0004b076 ldr r3, [pc, 0x11c] |
0x0004b078 add r3, pc | r3 = 0x96212;
0x0004b07a b.w 0x4a0e2 | goto label_70;
| label_154:
0x0004b092 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0004b094 ldr.w r8, [r3, 0x18] | r8 = *((r3 + 0x18));
0x0004b098 b.w 0x4a4b0 | goto label_80;
| label_124:
0x0004b09c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004b09e str r3, [sp, 0x3c] | var_3ch = r3;
0x0004b0a0 str r3, [sp, 0x50] | var_50h = r3;
0x0004b0a2 b.w 0x49d60 | goto label_62;
| label_110:
0x0004b0a6 blx 0x7e8c | fcn_00007e8c ();
| label_200:
0x0004b0aa ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004b0ac subs r5, r3, 1 | r5 = r3 - 1;
0x0004b0ae b.w 0x4a860 | goto label_81;
| label_194:
0x0004b0e0 ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x0004b0e2 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0004b0e4 ldr r3, [r3] | r3 = *(r3);
| label_83:
0x0004b0e6 cmp r3, 1 |
| if (r3 == 1) {
0x0004b0e8 beq.w 0x4ab70 | goto label_82;
| }
0x0004b0ec ldr r1, [pc, 0xac] |
0x0004b0ee ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004b0f0 add r1, pc | r1 = 0x96290;
0x0004b0f2 bl 0x25778 | fcn_00025778 (r0);
0x0004b0f6 movs r0, 2 | r0 = 2;
0x0004b0f8 b.w 0x49854 | goto label_1;
| label_193:
0x0004b0fc ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x0004b0fe ldr r3, [r3] | r3 = *(r3);
0x0004b100 b 0x4b0e6 | goto label_83;
| label_151:
0x0004b102 ldr r3, [pc, 0x9c] |
0x0004b104 add r3, pc | r3 = 0x962aa;
0x0004b106 b.w 0x4a0e2 | goto label_70;
| label_191:
0x0004b10a ldr r1, [pc, 0x98] |
0x0004b10c ldr r0, [sp, 0x20] | r0 = var_20h;
0x0004b10e add r1, pc | r1 = 0x962b8;
0x0004b110 bl 0x25778 | fcn_00025778 (r0);
0x0004b114 movs r0, 2 | r0 = 2;
0x0004b116 b.w 0x49854 | goto label_1;
| label_144:
0x0004b11a ldr r3, [sp, 0x30] | r3 = var_30h;
0x0004b11c ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004b11e str r3, [sp, 0x10] | var_10h = r3;
0x0004b120 mov.w r3, -1 | r3 = -1;
0x0004b124 str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x0004b126 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0004b128 str r3, [sp, 0x30] | var_30h = r3;
0x0004b12a str r3, [sp, 0x50] | var_50h = r3;
0x0004b12c b.w 0x49d60 | goto label_62;
| label_88:
0x0005cd6c ldr r2, [sp, 0x18] | r2 = var_18h;
| do {
0x0005cd6e mov r1, r2 | r1 = r2;
0x0005cd70 ldrb r7, [r2], 1 | r7 = *(r2);
| r2++;
0x0005cd74 sub.w r3, r7, 9 | r3 = r7 - 9;
0x0005cd78 uxtb r3, r3 | r3 = (int8_t) r3;
0x0005cd7a cmp r3, 0x17 |
| if (r3 > 0x17) {
0x0005cd7c bhi 0x5cdbe | goto label_201;
| }
0x0005cd7e ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005cd80 lsr.w r3, r0, r3 | r3 = r0 >> r3;
0x0005cd84 lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
0x0005cd86 bmi 0x5cd6e |
| } while (r0 < r3);
0x0005cd88 str r1, [sp, 0xc] | var_ch = r1;
| label_87:
0x0005cd8a add r3, sp, 0x74 | r3 += var_74h;
0x0005cd8c ldr r1, [sp, 0x48] | r1 = var_48h;
0x0005cd8e mov r0, r3 | r0 = r3;
0x0005cd90 movs r2, 0x80 | r2 = 0x80;
0x0005cd92 blx 0x7dcc | r0 = fcn_00007dcc ();
0x0005cd96 mov r3, r0 | r3 = r0;
| label_98:
0x0005cd98 add.w r2, r7, 0xf8 | r2 = r7 + 0xf8;
0x0005cd9c add.w r7, sp, r2 | r7 = sp + r2;
0x0005cda0 ldrb r7, [r7, -0x84] | r7 = *((r7 - 0x84));
0x0005cda4 cmp r7, 0 |
| if (r7 != 0) {
0x0005cda6 bne.w 0x5d492 | goto label_202;
| }
0x0005cdaa ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005cdac mov sl, r7 | sl = r7;
0x0005cdae ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0005cdb0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0005cdb2 bl 0x49380 | fcn_00049380 (r0);
0x0005cdb6 movs r3, 1 | r3 = 1;
0x0005cdb8 str r7, [sp, 8] | var_8h = r7;
0x0005cdba str r3, [sp, 0x10] | var_10h = r3;
0x0005cdbc b 0x5ce68 | goto label_85;
| label_201:
0x0005cdbe cmp r7, 0x5e |
0x0005cdc0 str r1, [sp, 0xc] | var_ch = r1;
| if (r7 > 0x5e) {
0x0005cdc2 bhi.w 0x5d214 | goto label_203;
| }
0x0005cdc6 cmp r7, 0x21 |
| if (r7 < 0x21) {
0x0005cdc8 bls.w 0x5d22e | goto label_204;
| }
0x0005cdcc sub.w r3, r7, 0x22 | r3 = r7 - 0x22;
0x0005cdd0 cmp r3, 0x3c |
| if (r3 > 0x3c) {
0x0005cdd2 bhi.w 0x5d478 | goto label_205;
| }
0x0005cdd4 strh r1, [r2, 0x1a] | *((r2 + 0x1a)) = r1;
| /* switch table (2 cases) at 0x5cdda */
0x0005cdd6 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_86:
0x0005ce62 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005ce64 adds r3, r2, r3 | r3 = r2 + r3;
0x0005ce66 str r3, [sp, 0x18] | var_18h = r3;
| label_85:
0x0005ce68 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005ce6a ldr.w sb, [pc, 0x80c] | sb = *(0x0005d678);
0x0005ce6e ldr.w r2, [pc, 0x80c] | r2 = *(0x0005d67c);
0x0005ce72 str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
0x0005ce76 ldr.w r3, [fp] | r3 = *(fp);
0x0005ce7a add sb, pc | sb += pc;
0x0005ce7c str.w sl, [sp, 0x1c] | __asm ("str.w sl, [var_1ch]");
0x0005ce80 mov sl, r7 | sl = r7;
0x0005ce82 add r2, pc | r2 += pc;
0x0005ce84 ldrb r4, [r3] | r4 = *(r3);
0x0005ce86 ldr.w r3, [pc, 0x7f8] |
0x0005ce8a str r2, [sp, 0x28] | var_28h = r2;
0x0005ce8c add r3, pc | r3 = 0xba512;
0x0005ce8e mov r8, r3 | r8 = r3;
| do {
0x0005ce90 cmp r4, 0x22 |
| if (r4 <= 0x22) {
0x0005ce92 bhi 0x5ceb0 |
0x0005ce94 add r4, sb | r4 += sb;
0x0005ce96 ldr r2, [sp, 8] | r2 = var_8h;
0x0005ce98 ldrb.w r3, [r4, 0x944] | r3 = *((r4 + 0x944));
0x0005ce9c add r3, r2 | r3 += r2;
0x0005ce9e add r3, sb | r3 += sb;
0x0005cea0 ldrb.w r2, [r3, 0x968] | r2 = *((r3 + 0x968));
0x0005cea4 cmp r2, sl |
0x0005cea6 ite ne |
| if (r2 == sl) {
0x0005cea8 ldrbne r4, [r4, 0x9e4] | r4 = *((r4 + 0x9e4));
| }
| if (r2 != sl) {
0x0005ceac ldrb.w r4, [r3, 0xa08] | r4 = *((r3 + 0xa08));
| goto label_206;
| }
| }
| label_206:
0x0005ceb0 cmp r4, 0x52 |
| if (r4 < 0x52) {
0x0005ceb2 bls.w 0x5d24e | goto label_207;
| }
0x0005ceb6 subs r4, 0x53 | r4 -= 0x53;
0x0005ceb8 ldr.w r6, [fp] | r6 = *(fp);
0x0005cebc add.w r3, r8, r4 | r3 = r8 + r4;
0x0005cec0 ldrsb.w r5, [r3, 0xa74] | r5 = *((r3 + 0xa74));
| if (r5 == 0) {
0x0005cec4 cbnz r5, 0x5ced0 |
0x0005cec6 ldr.w r3, [fp, 0x4b8] | r3 = *(arg_4b8h);
0x0005ceca cmp r3, r6 |
| if (r3 < r6) {
0x0005cecc bls.w 0x5d34a | goto label_208;
| }
| }
0x0005ced0 ldr.w r7, [fp, 4] | r7 = *(arg_4h);
0x0005ced4 cmp r4, 0x1b |
| if (r4 <= 0x1b) {
0x0005ced6 bhi 0x5cf20 |
| /* switch table (29 cases) at 0x5cedc */
0x0005ced8 tbh [pc, r4, lsl 1] | __asm ("tbh [pc, r4, lsl 1]");
0x0005cf14 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0005cf16 mov r0, r7 | r0 = r7;
0x0005cf18 movs r1, 0 | r1 = 0;
0x0005cf1a bl 0x5c6c8 | fcn_0005c6c8 (r0, r1, r2);
0x0005cf1e str r0, [r6, 4] | *((r6 + 4)) = r0;
| }
| label_84:
0x0005cf20 add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x0005cf24 ldr.w r3, [pc, 0x75c] | r3 = *(0x0005d684);
0x0005cf28 ldrb.w r1, [r6, r5, lsl 2] | offset_3 = r5 << 2;
| r1 = *((r6 + offset_3));
0x0005cf2c lsls r5, r5, 2 | r5 <<= 2;
0x0005cf2e add r3, pc | r3 += pc;
0x0005cf30 add r4, r3 | r4 += r3;
0x0005cf32 adds r5, 0xc | r5 += 0xc;
0x0005cf34 ldrb.w r2, [r4, 0xa90] | r2 = *((r4 + 0xa90));
0x0005cf38 add r1, r3 | r1 += r3;
0x0005cf3a ldrsb.w r1, [r1, 0xaac] | r1 = *((r1 + 0xaac));
0x0005cf3e add r3, r2 | r3 += r2;
0x0005cf40 add r3, r1 | r3 += r1;
0x0005cf42 ldrb.w r4, [r3, 0xa08] | r4 = *((r3 + 0xa08));
0x0005cf46 adds r3, r6, r5 | r3 = r6 + r5;
0x0005cf48 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x0005cf4c strb r4, [r6, r5] | *((r6 + r5)) = r4;
0x0005cf4e strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x0005cf50 b 0x5ce90 |
| } while (1);
0x0005cf52 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x0005cf56 str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x0005cf5a b 0x5cf20 | goto label_84;
0x0005cf5c ldrd r2, r3, [r6, 4] | __asm ("ldrd r2, r3, [r6, 4]");
0x0005cf60 mov r0, r7 | r0 = r7;
0x0005cf62 movs r1, 0 | r1 = 0;
0x0005cf64 bl 0x493e4 | fcn_000493e4 (r0, r1, r2, r3);
0x0005cf68 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x0005cf6a b 0x5cf20 | goto label_84;
0x0005cf6c movs r3, 0 | r3 = 0;
0x0005cf6e str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x0005cf70 b 0x5cf20 | goto label_84;
0x0005cf72 ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x0005cf76 mov r0, r7 | r0 = r7;
0x0005cf78 bl 0x403b8 | fcn_000403b8 (r0, r1);
0x0005cf7c str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x0005cf80 b 0x5cf20 | goto label_84;
0x0005cf82 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005cf84 str r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x0005cf86 b 0x5cf20 | goto label_84;
0x0005cf88 movs r1, 0 | r1 = 0;
0x0005cf8a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005cf8c ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x0005cf90 mov r0, r7 | r0 = r7;
0x0005cf92 str r1, [sp] | *(sp) = r1;
0x0005cf94 movs r1, 1 | r1 = 1;
0x0005cf96 bl 0x5c814 | fcn_0005c814 (r0, r1, r2, r3, r4, r5);
0x0005cf9a str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x0005cf9e b 0x5cf20 | goto label_84;
0x0005cfa0 movs r1, 0 | r1 = 0;
0x0005cfa2 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005cfa4 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x0005cfa8 mov r0, r7 | r0 = r7;
0x0005cfaa str r1, [sp] | *(sp) = r1;
0x0005cfac movs r1, 2 | r1 = 2;
0x0005cfae bl 0x5c814 | fcn_0005c814 (r0, r1, r2, r3, r4, r5);
0x0005cfb2 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x0005cfb6 b 0x5cf20 | goto label_84;
0x0005cfb8 ldrd r2, r3, [r6, 4] | __asm ("ldrd r2, r3, [r6, 4]");
0x0005cfbc mov r0, r7 | r0 = r7;
0x0005cfbe ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x0005cfc2 bl 0x493e4 | fcn_000493e4 (r0, r1, r2, r3);
0x0005cfc6 str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x0005cfca b 0x5cf20 | goto label_84;
0x0005cfcc ldrd r2, r3, [r6, 4] | __asm ("ldrd r2, r3, [r6, 4]");
0x0005cfd0 movs r1, 0 | r1 = 0;
0x0005cfd2 mov r0, r7 | r0 = r7;
0x0005cfd4 bl 0x493e4 | r0 = fcn_000493e4 (r0, r1, r2, r3);
0x0005cfd8 mov r1, r0 | r1 = r0;
0x0005cfda mov r0, r7 | r0 = r7;
0x0005cfdc str r1, [r6, -0x8] | *((r6 - 0x8)) = r1;
0x0005cfe0 bl 0x403b8 | fcn_000403b8 (r0, r1);
0x0005cfe4 str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x0005cfe8 b 0x5cf20 | goto label_84;
0x0005cfea ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005cfec movs r1, 9 | r1 = 9;
0x0005cfee mov r0, r7 | r0 = r7;
0x0005cff0 str r3, [sp] | *(sp) = r3;
0x0005cff2 movs r3, 0 | r3 = 0;
0x0005cff4 mov r2, r3 | r2 = r3;
0x0005cff6 bl 0x5c814 | fcn_0005c814 (r0, r1, r2, r3, r4, r5);
0x0005cffa ldr r3, [r7] | r3 = *(r7);
0x0005cffc ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x0005d000 str r0, [sp, 0x2c] | var_2ch = r0;
0x0005d002 ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x0005d004 str r2, [sp, 0x50] | var_50h = r2;
0x0005d006 cmp r3, 1 |
| if (r3 == 1) {
0x0005d008 beq.w 0x5d43e | goto label_209;
| }
0x0005d00c ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0005d00e mov r0, r7 | r0 = r7;
0x0005d010 add r3, sp, 0x50 | r3 += var_50h;
0x0005d012 bl 0x3f204 | fcn_0003f204 (r0, r1, r2, r3);
| label_94:
0x0005d016 ldr r0, [sp, 0x50] | r0 = var_50h;
0x0005d018 blx 0x84f8 | fcn_000084f8 ();
0x0005d01c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005d01e str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x0005d022 b 0x5cf20 | goto label_84;
0x0005d024 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005d026 mov r0, r7 | r0 = r7;
0x0005d028 movs r1, 9 | r1 = 9;
0x0005d02a str r3, [sp] | *(sp) = r3;
0x0005d02c movs r3, 0 | r3 = 0;
0x0005d02e mov r2, r3 | r2 = r3;
0x0005d030 bl 0x5c814 | fcn_0005c814 (r0, r1, r2, r3, r4, r5);
0x0005d034 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x0005d036 b 0x5cf20 | goto label_84;
0x0005d038 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x0005d03a ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x0005d03e ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005d040 cmp r1, 0 |
| if (r1 == 0) {
0x0005d042 beq.w 0x5d3d2 | goto label_210;
| }
| if (r2 != 0) {
0x0005d046 cbz r2, 0x5d052 |
0x0005d048 mov r0, r2 | r0 = r2;
0x0005d04a str r3, [sp, 0x2c] | var_2ch = r3;
0x0005d04c bl 0x5c66c | fcn_0005c66c (r0);
0x0005d050 ldr r3, [sp, 0x2c] | r3 = var_2ch;
| }
| if (r3 != 0) {
0x0005d052 cbz r3, 0x5d05c |
0x0005d054 mov r0, r3 | r0 = r3;
0x0005d056 bl 0x5c66c | fcn_0005c66c (r0);
0x0005d05a movs r3, 0 | r3 = 0;
| }
| label_93:
0x0005d05c str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x0005d060 b 0x5cf20 | goto label_84;
0x0005d062 ldr r3, [r7] | r3 = *(r7);
0x0005d064 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x0005d068 ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x0005d06c ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x0005d06e str r2, [sp, 0x50] | var_50h = r2;
0x0005d070 cmp r3, 1 |
| if (r3 == 1) {
0x0005d072 beq.w 0x5d44c | goto label_211;
| }
0x0005d074 strh r3, [r5, 0xe] | *((r5 + 0xe)) = r3;
0x0005d076 mov r0, r7 | r0 = r7;
0x0005d078 add r3, sp, 0x50 | r3 += var_50h;
0x0005d07a bl 0x3f204 | fcn_0003f204 (r0, r1, r2, r3);
| label_95:
0x0005d07e ldr r0, [sp, 0x50] | r0 = var_50h;
0x0005d080 blx 0x84f8 | fcn_000084f8 ();
0x0005d084 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x0005d088 str r3, [r6, -0x2c] | *((r6 - 0x2c)) = r3;
0x0005d08c b 0x5cf20 | goto label_84;
0x0005d08e movs r1, 0 | r1 = 0;
0x0005d090 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005d092 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x0005d096 mov r0, r7 | r0 = r7;
0x0005d098 str r1, [sp] | *(sp) = r1;
0x0005d09a movs r1, 3 | r1 = 3;
0x0005d09c bl 0x5c814 | fcn_0005c814 (r0, r1, r2, r3, r4, r5);
0x0005d0a0 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x0005d0a4 b 0x5cf20 | goto label_84;
0x0005d0a6 movs r3, 1 | r3 = 1;
0x0005d0a8 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x0005d0aa b 0x5cf20 | goto label_84;
0x0005d0ac ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005d0ae mov r0, r7 | r0 = r7;
0x0005d0b0 sub.w r2, r6, 8 | r2 = r6 - 8;
0x0005d0b4 movs r1, 0 | r1 = 0;
0x0005d0b6 bl 0x5c500 | fcn_0005c500 (r0, r1, r2, r3, r4);
0x0005d0ba str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x0005d0be b 0x5cf20 | goto label_84;
0x0005d0c0 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005d0c2 mov r0, r7 | r0 = r7;
0x0005d0c4 ldr r1, [r6, -0x20] | r1 = *((r6 - 0x20));
0x0005d0c8 sub.w r2, r6, 8 | r2 = r6 - 8;
0x0005d0cc bl 0x5c500 | fcn_0005c500 (r0, r1, r2, r3, r4);
0x0005d0d0 str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x0005d0d4 b 0x5cf20 | goto label_84;
0x0005d0d6 adds r3, r6, 4 | r3 = r6 + 4;
0x0005d0d8 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x0005d0dc stmdb r6, {r0, r1} | __asm ("stmdb r6, {r0, r1}");
0x0005d0e0 b 0x5cf20 | goto label_84;
0x0005d0e2 movs r3, 0 | r3 = 0;
0x0005d0e4 strd r3, r3, [r6, 0x10] | __asm ("strd r3, r3, [r6, 0x10]");
0x0005d0e8 b 0x5cf20 | goto label_84;
0x0005d0ea ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0005d0ec mov r0, r7 | r0 = r7;
0x0005d0ee ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x0005d0f2 bl 0x5c6c8 | fcn_0005c6c8 (r0, r1, r2);
0x0005d0f6 str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x0005d0fa b 0x5cf20 | goto label_84;
0x0005d0fc ldrd r3, r2, [r6, -0x2c] | __asm ("ldrd r3, r2, [r6, -0x2c]");
0x0005d100 cmp r2, 4 |
| if (r2 == 4) {
0x0005d102 bne 0x5d10c |
0x0005d104 ldrb r1, [r3] | r1 = *(r3);
0x0005d106 cmp r1, 0x4e |
| if (r1 == 0x4e) {
0x0005d108 beq.w 0x5d45a | goto label_212;
| }
| }
| label_96:
0x0005d10c ldr.w r1, [pc, 0x578] | r1 = *(0x0005d688);
0x0005d110 mov r0, r7 | r0 = r7;
0x0005d112 add r1, pc | r1 += pc;
0x0005d114 bl 0x49380 | fcn_00049380 (r0);
| label_97:
0x0005d118 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
| if (r3 == 0) {
0x0005d11c cbz r3, 0x5d16e | goto label_92;
| }
0x0005d11e ldr r2, [r6, -0x4] | r2 = *((r6 - 0x4));
0x0005d122 cmp r2, 0 |
0x0005d124 str r2, [sp, 0x2c] | var_2ch = r2;
| if (r2 == 0) {
0x0005d126 beq.w 0x5d3cc | goto label_213;
| }
| if (r2 <= 0) {
0x0005d12a ble.w 0x5d5ec | goto label_214;
| }
0x0005d12e ldr r0, [r6, -0x8] | r0 = *((r6 - 0x8));
0x0005d132 movs r1, 0 | r1 = 0;
0x0005d134 adds r2, r0, r2 | r2 = r0 + r2;
0x0005d136 add.w ip, r0, -1 |
0x0005d13a subs r2, 1 | r2--;
0x0005d13c str r0, [sp, 0x3c] | var_3ch = r0;
0x0005d13e b 0x5d14e |
| while (lr < 9) {
0x0005d140 add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x0005d144 cmp r2, ip |
0x0005d146 add.w r1, r0, r1, lsl 1 | r1 = r0 + (r1 << 1);
| if (r2 == ip) {
0x0005d14a beq.w 0x5d3ce | goto label_104;
| }
0x0005d14e ldrb r0, [ip, 1]! | r0 = *((ip += 1));
0x0005d152 subs r0, 0x30 | r0 -= 0x30;
0x0005d154 uxtb.w lr, r0 | lr = (int8_t) r0;
0x0005d158 cmp.w lr, 9 |
0x0005d15c bls 0x5d140 |
| }
0x0005d15e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005d160 mov r0, r7 | r0 = r7;
0x0005d162 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0005d164 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0005d166 bl 0x49380 | fcn_00049380 (r0);
0x0005d16a ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
| label_92:
0x0005d16e str r3, [r6, -0x2c] | *((r6 - 0x2c)) = r3;
0x0005d172 b 0x5cf20 | goto label_84;
0x0005d174 ldr r2, [r6, 4] | r2 = *((r6 + 4));
| if (r2 != 0) {
0x0005d176 cbz r2, 0x5d180 |
0x0005d178 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
| if (r3 == 0) {
0x0005d17a cbz r3, 0x5d180 | goto label_215;
| }
0x0005d17c movs r3, 1 | r3 = 1;
0x0005d17e strb r3, [r2, 0x15] | *((r2 + 0x15)) = r3;
| }
| label_215:
0x0005d180 mov r0, r7 | r0 = r7;
0x0005d182 movs r1, 0 | r1 = 0;
0x0005d184 bl 0x5c6c8 | fcn_0005c6c8 (r0, r1, r2);
0x0005d188 str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x0005d18c b 0x5cf20 | goto label_84;
0x0005d1ee ldr r3, [sp, 0xc] | r3 = var_ch;
| do {
| label_91:
0x0005d1f0 ldrb r7, [r3, 1] | r7 = *((r3 + 1));
0x0005d1f2 adds r3, 1 | r3++;
0x0005d1f4 cmp r7, 0x22 |
| if (r7 == 0x22) {
0x0005d1f6 beq.w 0x5d384 | goto label_216;
| }
0x0005d1fa cmp r7, 0 |
0x0005d1fc bne 0x5d1f0 |
| } while (r7 != 0);
0x0005d1fe ldr.w r1, [pc, 0x48c] | r1 = *(0x0005d68c);
0x0005d202 mov sl, r7 | sl = r7;
0x0005d204 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0005d206 add r1, pc | r1 += pc;
0x0005d208 bl 0x49380 | fcn_00049380 (r0);
0x0005d20c movs r3, 1 | r3 = 1;
0x0005d20e str r7, [sp, 8] | var_8h = r7;
0x0005d210 str r3, [sp, 0x10] | var_10h = r3;
0x0005d212 b 0x5ce68 | goto label_85;
| label_203:
0x0005d214 cmp r7, 0x7b |
| if (r7 == 0x7b) {
0x0005d216 beq 0x5d23e | goto label_217;
| }
0x0005d218 cmp r7, 0x7d |
| if (r7 != 0x7d) {
0x0005d21a bne.w 0x5d478 | goto label_205;
| }
0x0005d21e mov.w sl, 1 | sl = 1;
0x0005d222 movs r7, 8 | r7 = 8;
0x0005d224 mov r3, sl | r3 = sl;
0x0005d226 str.w sl, [sp, 0x10] | __asm ("str.w sl, [var_10h]");
0x0005d22a str r7, [sp, 8] | var_8h = r7;
0x0005d22c b 0x5ce62 | goto label_86;
| label_204:
0x0005d22e cmp r7, 0 |
| if (r7 != 0) {
0x0005d230 bne.w 0x5cd8a | goto label_87;
| }
0x0005d234 movs r3, 1 | r3 = 1;
0x0005d236 mov sl, r7 | sl = r7;
0x0005d238 str r3, [sp, 0x10] | var_10h = r3;
0x0005d23a str r7, [sp, 8] | var_8h = r7;
0x0005d23c b 0x5ce62 | goto label_86;
| label_217:
0x0005d23e mov.w sl, 1 | sl = 1;
0x0005d242 movs r7, 7 | r7 = 7;
0x0005d244 mov r3, sl | r3 = sl;
0x0005d246 str.w sl, [sp, 0x10] | __asm ("str.w sl, [var_10h]");
0x0005d24a str r7, [sp, 8] | var_8h = r7;
0x0005d24c b 0x5ce62 | goto label_86;
| label_207:
0x0005d24e cmp r4, 0x4f |
0x0005d250 mov r7, sl | r7 = sl;
0x0005d252 ldr.w sl, [sp, 0x1c] | sl = var_1ch;
| if (r4 < 0x4f) {
0x0005d256 bls.w 0x5d39e | goto label_218;
| }
0x0005d25a cmp r4, 0x51 |
| if (r4 == 0x51) {
0x0005d25c beq.w 0x5d432 | goto label_219;
| }
0x0005d260 ldr.w r4, [fp, 4] | r4 = *(arg_4h);
0x0005d264 ldr.w r1, [pc, 0x428] | r1 = *(0x0005d690);
0x0005d268 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005d26a ldr r2, [sp, 0x10] | r2 = var_10h;
0x0005d26c mov r0, r4 | r0 = r4;
0x0005d26e add r1, pc | r1 += pc;
0x0005d270 str r3, [sp, 0x50] | var_50h = r3;
0x0005d272 str r2, [sp, 0x54] | var_54h = r2;
0x0005d274 bl 0x49380 | fcn_00049380 (r0);
0x0005d278 mov r0, r7 | r0 = r7;
0x0005d27a add r1, sp, 0x50 | r1 += var_50h;
0x0005d27c str.w r4, [fp, 4] | __asm ("str.w r4, [arg_4h]");
0x0005d280 bl 0x5c7b8 | fcn_0005c7b8 (r0);
| label_90:
0x0005d284 ldr r2, [sp, 0x60] | r2 = var_60h;
0x0005d286 cmp r2, 0 |
0x0005d288 ite ne |
| if (r2 == 0) {
0x0005d28a movne r3, 0 | r3 = 0;
| }
| if (r2 != 0) {
0x0005d28c andeq r3, sl, 1 | r3 = sl & 1;
| }
0x0005d290 cmp r3, 0 |
| if (r3 != 0) {
0x0005d292 bne.w 0x5cd6c | goto label_88;
| }
0x0005d296 ldr.w r3, [fp] | r3 = *(fp);
0x0005d29a ldr r2, [sp, 0x24] | r2 = var_24h;
0x0005d29c cmp r2, r3 |
0x0005d29e it lo |
| if (r2 >= r3) {
0x0005d2a0 ldrlo r4, [sp, 0x24] | r4 = var_24h;
| }
| if (r2 >= r3) {
0x0005d2a2 bhs 0x5d2bc | goto label_220;
| }
| do {
0x0005d2a4 sub.w r2, r3, 0xc | r2 = r3 - 0xc;
0x0005d2a8 adds r1, r3, 4 | r1 = r3 + 4;
0x0005d2aa str.w r2, [fp] | __asm ("str.w r2, [fp]");
0x0005d2ae ldrb r0, [r3, 1] | r0 = *((r3 + 1));
0x0005d2b0 bl 0x5c7b8 | fcn_0005c7b8 (r0);
0x0005d2b4 ldr.w r3, [fp] | r3 = *(fp);
0x0005d2b8 cmp r4, r3 |
0x0005d2ba blo 0x5d2a4 |
| } while (r4 <= r3);
| label_220:
0x0005d2bc mov r0, fp | r0 = fp;
0x0005d2be blx 0x84f8 | fcn_000084f8 ();
0x0005d2c2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005d2c4 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0005d2c6 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0005d2c8 cmp r3, r2 |
| if (r3 <= r2) {
0x0005d2ca ble 0x5d33a | goto label_221;
| }
0x0005d2cc ldr r0, [sp, 0x6c] | r0 = var_6ch;
0x0005d2ce ldr r3, [sp, 0x60] | r3 = var_60h;
0x0005d2d0 cmp r0, 0 |
| if (r0 == 0) {
0x0005d2d2 beq.w 0x5d504 | goto label_222;
| }
0x0005d2d6 cbz r3, 0x5d306 |
| while (r0 != 0) {
| label_103:
0x0005d2d8 bl 0x5c66c | fcn_0005c66c (r0);
| label_89:
0x0005d2dc ldr r0, [sp, 0x68] | r0 = var_68h;
| label_100:
0x0005d2de blx 0x84f8 | r0 = fcn_000084f8 ();
0x0005d2e2 ldrd r3, r0, [sp, 0x5c] | __asm ("ldrd r3, r0, [var_5ch]");
0x0005d2e6 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0005d2e8 str r3, [r2] | *(r2) = r3;
0x0005d2ea ldr r2, [pc, 0x3a8] |
0x0005d2ec ldr r3, [pc, 0x378] | r3 = *(0x5d668);
0x0005d2ee add r2, pc | r2 = 0xba988;
0x0005d2f0 ldr r3, [r2, r3] | r3 = *(0xba988);
0x0005d2f2 ldr r2, [r3] | r2 = *(0xba988);
0x0005d2f4 ldr r3, [sp, 0xf4] | r3 = var_f4h;
0x0005d2f6 eors r2, r3 | r2 ^= r3;
0x0005d2f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005d2fc bne.w 0x5d660 | goto label_223;
| }
0x0005d300 add sp, 0xfc |
0x0005d302 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0005d306 movs r0, 8 | r0 = 8;
0x0005d308 movs r1, 0 | r1 = 0;
0x0005d30a blx 0x7f18 | r0 = fcn_00007f18 ();
0x0005d30e mov r2, r0 | r2 = r0;
0x0005d310 cmp r0, 0 |
| if (r0 == 0) {
0x0005d312 beq.w 0x5d64a | goto label_224;
| }
0x0005d316 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005d318 movs r1, 1 | r1 = 1;
0x0005d31a str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0005d31c ldr r3, [sp, 0x58] | r3 = var_58h;
0x0005d31e ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x0005d320 str r1, [r0] | *(r0) = r1;
0x0005d322 ldr r1, [sp, 0x6c] | r1 = var_6ch;
0x0005d324 cmp r3, 1 |
0x0005d326 str r0, [sp, 0x50] | var_50h = r0;
| if (r3 == 1) {
0x0005d328 beq.w 0x5d63c | goto label_225;
| }
0x0005d32c ldr r0, [sp, 0x20] | r0 = var_20h;
0x0005d32e add r3, sp, 0x50 | r3 += var_50h;
0x0005d330 bl 0x3f204 | fcn_0003f204 (r0, r1, r2, r3);
| label_108:
0x0005d334 ldr r0, [sp, 0x50] | r0 = var_50h;
0x0005d336 blx 0x84f8 | fcn_000084f8 ();
| label_221:
0x0005d33a ldr r3, [sp, 0x60] | r3 = var_60h;
0x0005d33c cmp r3, 0 |
| if (r3 == 0) {
0x0005d33e beq.w 0x5d50a | goto label_226;
| }
0x0005d342 ldr r0, [sp, 0x6c] | r0 = var_6ch;
0x0005d344 cmp r0, 0 |
0x0005d346 bne 0x5d2d8 |
| }
0x0005d348 b 0x5d2dc | goto label_89;
| label_208:
0x0005d34a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005d34c ldr.w sl, [sp, 0x1c] | sl = var_1ch;
0x0005d350 ldr.w r4, [fp, 4] | r4 = *(arg_4h);
0x0005d354 cmp r3, r6 |
0x0005d356 it lo |
| if (r3 >= r6) {
0x0005d358 ldrlo r5, [sp, 0x24] | r5 = var_24h;
| }
| if (r3 >= r6) {
0x0005d35a bhs 0x5d374 | goto label_227;
| }
| do {
0x0005d35c sub.w r3, r6, 0xc | r3 = r6 - 0xc;
0x0005d360 adds r1, r6, 4 | r1 = r6 + 4;
0x0005d362 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x0005d366 ldrb r0, [r6, 1] | r0 = *((r6 + 1));
0x0005d368 bl 0x5c7b8 | fcn_0005c7b8 (r0);
0x0005d36c ldr.w r6, [fp] | r6 = *(fp);
0x0005d370 cmp r5, r6 |
0x0005d372 blo 0x5d35c |
| } while (r5 <= r6);
| label_227:
0x0005d374 ldr r1, [pc, 0x320] |
0x0005d376 mov r0, r4 | r0 = r4;
0x0005d378 add r1, pc | r1 = 0xbaa14;
0x0005d37a bl 0x49380 | fcn_00049380 (r0);
0x0005d37e str.w r4, [fp, 4] | __asm ("str.w r4, [arg_4h]");
0x0005d382 b 0x5d284 | goto label_90;
| label_216:
0x0005d384 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0005d386 adds r3, 1 | r3++;
0x0005d388 cmp r2, 0x22 |
| if (r2 == 0x22) {
0x0005d38a beq.w 0x5d1f0 | goto label_91;
| }
0x0005d38e ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005d390 movs r7, 9 | r7 = 9;
0x0005d392 mov.w sl, 1 | sl = 1;
0x0005d396 str r7, [sp, 8] | var_8h = r7;
0x0005d398 subs r3, r3, r2 | r3 -= r2;
0x0005d39a str r3, [sp, 0x10] | var_10h = r3;
0x0005d39c b 0x5ce62 | goto label_86;
| label_218:
0x0005d39e ldr.w r3, [fp] | r3 = *(fp);
0x0005d3a2 ldr.w r1, [fp, 0x4b8] | r1 = *(arg_4b8h);
0x0005d3a6 add.w r2, r3, 0xc | r2 = r3 + 0xc;
0x0005d3aa cmp r2, r1 |
0x0005d3ac str.w r2, [fp] | __asm ("str.w r2, [fp]");
| if (r2 > r1) {
0x0005d3b0 bhi.w 0x5d54e | goto label_228;
| }
0x0005d3b4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005d3b6 cmp r4, 0x22 |
0x0005d3b8 it hi |
| if (r4 <= 0x22) {
0x0005d3ba addhi r4, 0x1f | r4 += 0x1f;
| }
0x0005d3bc strb r7, [r3, 0xd] | *((r3 + 0xd)) = r7;
0x0005d3be it hi |
| if (r4 > 0x22) {
0x0005d3c0 uxtbhi r4, r4 | __asm ("uxtbhi r4, r4");
| }
0x0005d3c2 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x0005d3c4 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0005d3c6 strb r4, [r3, 0xc] | *((r3 + 0xc)) = r4;
0x0005d3c8 str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x0005d3ca b 0x5d284 | goto label_90;
| label_213:
0x0005d3cc movs r1, 0xa | r1 = 0xa;
| label_104:
0x0005d3ce str r1, [r3] | *(r3) = r1;
0x0005d3d0 b 0x5d16e | goto label_92;
| label_210:
0x0005d3d2 ldr r1, [r2] | r1 = *(r2);
0x0005d3d4 cmp r1, 2 |
0x0005d3d6 itett eq |
| if (r1 != 2) {
0x0005d3d8 ldreq r1, [r2, 0x1c] | r1 = *((r2 + 0x1c));
| }
| if (r1 == 2) {
0x0005d3da strne r2, [sp, 0x2c] | var_2ch = r2;
| }
| if (r1 != 2) {
0x0005d3dc addeq r1, 7 | r1 += 7;
| }
| if (r1 != 2) {
0x0005d3de ldreq r1, [r2, r1, lsl 2] | offset_4 = r1 << 2;
| r1 = *((r2 + offset_4));
| }
0x0005d3e2 it eq |
| if (r1 != 2) {
0x0005d3e4 streq r1, [sp, 0x2c] | var_2ch = r1;
| }
0x0005d3e6 ldr r1, [r3] | r1 = *(r3);
0x0005d3e8 cmp r1, 0 |
| if (r1 == 0) {
0x0005d3ea beq.w 0x5d53a | goto label_229;
| }
0x0005d3ee ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005d3f0 ldr r1, [r0] | r1 = *(r0);
0x0005d3f2 cmp r1, 0 |
| if (r1 != 0) {
0x0005d3f4 bne.w 0x5d588 | goto label_230;
| }
0x0005d3f8 cmp r2, r0 |
0x0005d3fa ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x0005d3fc ite ne |
| if (r2 == r0) {
0x0005d3fe ldrne r1, [r2, 0x1c] | r1 = *((r2 + 0x1c));
| }
| if (r2 != r0) {
0x0005d400 moveq r2, r3 | r2 = r3;
| }
0x0005d402 str r2, [sp, 0x3c] | var_3ch = r2;
0x0005d404 itt ne |
| if (r2 == r0) {
0x0005d406 addne r1, 7 | r1 += 7;
| }
| if (r2 == r0) {
0x0005d408 strne r3, [r2, r1, lsl 2] | offset_5 = r1 << 2;
| *((r2 + offset_5)) = r3;
| }
0x0005d40c ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x0005d40e ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x0005d410 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x0005d412 subs r1, 1 | r1--;
0x0005d414 subs r1, r1, r2 | r1 -= r2;
0x0005d416 lsls r2, r2, 2 | r2 <<= 2;
0x0005d418 add.w r0, r0, r1, lsl 2 | r0 += (r1 << 2);
0x0005d41c adds r1, r0, 4 | r1 = r0 + 4;
0x0005d41e blx 0x7d44 | fcn_00007d44 ();
0x0005d422 ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x0005d424 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005d426 subs r2, 1 | r2--;
0x0005d428 str r2, [r7, 0xc] | *((r7 + 0xc)) = r2;
0x0005d42a bl 0x5c66c | fcn_0005c66c (r0);
0x0005d42e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005d430 b 0x5d05c | goto label_93;
| label_219:
0x0005d432 ldr.w r3, [fp] | r3 = *(fp);
0x0005d436 subs r3, 0xc | r3 -= 0xc;
0x0005d438 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x0005d43c b 0x5d284 | goto label_90;
| label_209:
0x0005d43e ldr r0, [pc, 0x25c] |
0x0005d440 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x0005d442 add r0, pc | r0 = 0xbaae4;
0x0005d444 blx 0x852c | strncmp (r0, r1, r2);
0x0005d448 str r0, [r7, 4] | *((r7 + 4)) = r0;
0x0005d44a b 0x5d016 | goto label_94;
| label_211:
0x0005d44c ldr r0, [pc, 0x250] |
0x0005d44e str r3, [r7, 8] | *((r7 + 8)) = r3;
0x0005d450 add r0, pc | r0 = 0xbaaf4;
0x0005d452 blx 0x852c | strncmp (r0, r1, r2);
0x0005d456 str r0, [r7, 4] | *((r7 + 4)) = r0;
0x0005d458 b 0x5d07e | goto label_95;
| label_212:
0x0005d45a ldrb r1, [r3, 1] | r1 = *((r3 + 1));
0x0005d45c adds r0, r3, 1 | r0 = r3 + 1;
0x0005d45e cmp r1, 0x45 |
| if (r1 != 0x45) {
0x0005d460 bne.w 0x5d10c | goto label_96;
| }
0x0005d464 ldrb r1, [r0, 1]! | r1 = *((r0 += 1));
0x0005d468 cmp r1, 0x41 |
| if (r1 != 0x41) {
0x0005d46a bne.w 0x5d10c | goto label_96;
| }
0x0005d46e ldrb r1, [r0, 1] | r1 = *((r0 + 1));
0x0005d470 cmp r1, 0x52 |
| if (r1 != 0x52) {
0x0005d472 bne.w 0x5d10c | goto label_96;
| }
0x0005d476 b 0x5d118 | goto label_97;
| label_205:
0x0005d478 ldr r1, [pc, 0x228] |
0x0005d47a add r3, sp, 0x74 | r3 += var_74h;
0x0005d47c mov r0, r3 | r0 = r3;
0x0005d47e movs r2, 0x80 | r2 = 0x80;
0x0005d480 add r1, pc | r1 = 0xbab28;
0x0005d482 addw r1, r1, 0x414 | __asm ("addw r1, r1, aav.0x000000ff");
0x0005d486 blx 0x7dcc | fcn_00007dcc ();
0x0005d48a lsls r1, r7, 0x18 | r1 = r7 << 0x18;
0x0005d48c mov r3, r0 | r3 = r0;
| if (r1 >= r7) {
0x0005d48e bpl.w 0x5cd98 | goto label_98;
| }
| label_202:
0x0005d492 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005d494 ldr.w r8, [sp, 0x40] | r8 = var_40h;
0x0005d498 adds r5, r2, 1 | r5 = r2 + 1;
0x0005d49a mov r7, r5 | r7 = r5;
| do {
| label_99:
0x0005d49c mov r6, r7 | r6 = r7;
0x0005d49e ldrb r4, [r7], 1 | r4 = *(r7);
| r7++;
0x0005d4a2 movs r2, 0x80 | r2 = 0x80;
0x0005d4a4 mov r0, r3 | r0 = r3;
0x0005d4a6 mov r1, r8 | r1 = r8;
0x0005d4a8 blx 0x7dcc | fcn_00007dcc ();
0x0005d4ac lsls r2, r4, 0x18 | r2 = r4 << 0x18;
0x0005d4ae mov r3, r0 | r3 = r0;
0x0005d4b0 bmi 0x5d49c |
| } while (r2 < r4);
0x0005d4b2 add.w r2, r4, 0xf8 | r2 = r4 + 0xf8;
0x0005d4b6 add.w r4, sp, r2 | r4 = sp + r2;
0x0005d4ba ldrb r2, [r4, -0x84] | r2 = *((r4 - 0x84));
0x0005d4be cmp r2, 0 |
| if (r2 != 0) {
0x0005d4c0 bne 0x5d49c | goto label_99;
| }
0x0005d4c2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005d4c4 subs r3, r6, r3 | r3 = r6 - r3;
0x0005d4c6 cmp r3, 2 |
0x0005d4c8 str r3, [sp, 0x10] | var_10h = r3;
| if (r3 == 2) {
0x0005d4ca beq 0x5d5ca | goto label_231;
| }
0x0005d4cc ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005d4ce cmp r3, 3 |
| if (r3 != 3) {
0x0005d4d0 bne 0x5d59c | goto label_232;
| }
0x0005d4d2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005d4d4 ldrb r3, [r3] | r3 = *(r3);
0x0005d4d6 cmp r3, 0x4e |
| if (r3 == 0x4e) {
0x0005d4d8 beq.w 0x5d624 | goto label_233;
| }
| label_107:
0x0005d4dc cmp r3, 0x41 |
0x0005d4de mov.w r2, 9 | r2 = 9;
0x0005d4e2 str r2, [sp, 8] | var_8h = r2;
| if (r3 == 0x41) {
0x0005d4e4 beq.w 0x5d606 | goto label_234;
| }
| label_106:
0x0005d4e8 ldrb.w r7, [sp, 8] | r7 = var_8h;
0x0005d4ec mov.w sl, 1 | sl = 1;
0x0005d4f0 movs r3, 3 | r3 = 3;
0x0005d4f2 b 0x5ce62 | goto label_86;
| label_222:
0x0005d504 cmp r3, 0 |
| if (r3 != 0) {
0x0005d506 bne.w 0x5d2dc | goto label_89;
| }
| label_226:
0x0005d50a movs r0, 0x18 | r0 = 0x18;
0x0005d50c blx 0x85dc | fcn_000085dc ();
0x0005d510 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0005d512 mov r4, r0 | r4 = r0;
0x0005d514 str r0, [r3] | *(r3) = r0;
0x0005d516 cmp r0, 0 |
| if (r0 == 0) {
0x0005d518 beq 0x5d5de | goto label_235;
| }
0x0005d51a ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0005d51c cmp r3, 0 |
| if (r3 == 0) {
0x0005d51e beq 0x5d5a6 | goto label_236;
| }
| label_101:
0x0005d520 str r3, [r4, 8] | *((r4 + 8)) = r3;
| label_102:
0x0005d522 ldrd r1, r2, [sp, 0x64] | __asm ("ldrd r1, r2, [var_64h]");
0x0005d526 movs r3, 0 | r3 = 0;
0x0005d528 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005d52a strd r3, r1, [r4, 0xc] | __asm ("strd r3, r1, [r4, 0xc]");
0x0005d52e strd r3, r0, [r4] | __asm ("strd r3, r0, [r4]");
0x0005d532 mov r0, r3 | r0 = r3;
0x0005d534 str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
0x0005d536 str r3, [sp, 0x68] | var_68h = r3;
0x0005d538 b 0x5d2de | goto label_100;
| label_229:
0x0005d53a mov r0, r3 | r0 = r3;
0x0005d53c str r2, [sp, 0x2c] | var_2ch = r2;
0x0005d53e bl 0x5c66c | fcn_0005c66c (r0);
0x0005d542 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0005d544 mov r3, r2 | r3 = r2;
0x0005d546 ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x0005d548 subs r2, 1 | r2--;
0x0005d54a str r2, [r7, 0xc] | *((r7 + 0xc)) = r2;
0x0005d54c b 0x5d05c | goto label_93;
| label_228:
0x0005d54e ldr r2, [sp, 0x24] | r2 = var_24h;
0x0005d550 ldr.w r4, [fp, 4] | r4 = *(arg_4h);
0x0005d554 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x0005d558 cmp r2, r3 |
0x0005d55a it lo |
| if (r2 >= r3) {
0x0005d55c ldrlo r5, [sp, 0x24] | r5 = var_24h;
| }
| if (r2 >= r3) {
0x0005d55e bhs 0x5d578 | goto label_237;
| }
| do {
0x0005d560 sub.w r2, r3, 0xc | r2 = r3 - 0xc;
0x0005d564 adds r1, r3, 4 | r1 = r3 + 4;
0x0005d566 str.w r2, [fp] | __asm ("str.w r2, [fp]");
0x0005d56a ldrb r0, [r3, 1] | r0 = *((r3 + 1));
0x0005d56c bl 0x5c7b8 | fcn_0005c7b8 (r0);
0x0005d570 ldr.w r3, [fp] | r3 = *(fp);
0x0005d574 cmp r5, r3 |
0x0005d576 blo 0x5d560 |
| } while (r5 <= r3);
| label_237:
0x0005d578 ldr r1, [pc, 0x12c] |
0x0005d57a mov r0, r4 | r0 = r4;
0x0005d57c add r1, pc | r1 = 0xbac28;
0x0005d57e bl 0x49380 | fcn_00049380 (r0);
0x0005d582 str.w r4, [fp, 4] | __asm ("str.w r4, [arg_4h]");
0x0005d586 b 0x5d284 | goto label_90;
| label_230:
0x0005d588 movs r1, 0 | r1 = 0;
0x0005d58a mov r0, r7 | r0 = r7;
0x0005d58c str r1, [sp] | *(sp) = r1;
0x0005d58e movs r1, 2 | r1 = 2;
0x0005d590 bl 0x5c814 | r0 = fcn_0005c814 (r0, r1, r2, r3, r4, r5);
0x0005d594 mov r3, r0 | r3 = r0;
0x0005d596 b 0x5d05c | goto label_93;
| label_232:
0x0005d59c movs r7, 9 | r7 = 9;
0x0005d59e mov.w sl, 1 | sl = 1;
0x0005d5a2 str r7, [sp, 8] | var_8h = r7;
0x0005d5a4 b 0x5ce62 | goto label_86;
| label_236:
0x0005d5a6 ldr r6, [sp, 0x60] | r6 = var_60h;
0x0005d5a8 cmp r6, 0 |
| if (r6 != 0) {
0x0005d5aa bne 0x5d520 | goto label_101;
| }
0x0005d5ac movs r0, 0x28 | r0 = 0x28;
0x0005d5ae movs r1, 0 | r1 = 0;
0x0005d5b0 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0005d5b4 mov r5, r0 | r5 = r0;
0x0005d5b6 cmp r0, 0 |
| if (r0 == 0) {
0x0005d5b8 beq 0x5d658 | goto label_238;
| }
0x0005d5ba mov r1, r6 | r1 = r6;
0x0005d5bc movs r2, 0x28 | r2 = 0x28;
0x0005d5be blx 0x8264 | fcn_00008264 ();
0x0005d5c2 movs r3, 1 | r3 = 1;
0x0005d5c4 str r5, [r4, 8] | *((r4 + 8)) = r5;
0x0005d5c6 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0005d5c8 b 0x5d522 | goto label_102;
| label_231:
0x0005d5ca ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005d5cc ldrb r3, [r3] | r3 = *(r3);
0x0005d5ce cmp r3, 0x4f |
| if (r3 == 0x4f) {
0x0005d5d0 beq 0x5d5f0 | goto label_239;
| }
| label_105:
0x0005d5d2 movs r7, 9 | r7 = 9;
0x0005d5d4 mov.w sl, 1 | sl = 1;
0x0005d5d8 movs r3, 2 | r3 = 2;
0x0005d5da str r7, [sp, 8] | var_8h = r7;
0x0005d5dc b 0x5ce62 | goto label_86;
| label_235:
0x0005d5de ldr r0, [sp, 0x6c] | r0 = var_6ch;
0x0005d5e0 movs r3, 7 | r3 = 7;
0x0005d5e2 str r3, [sp, 0x60] | var_60h = r3;
0x0005d5e4 cmp r0, 0 |
| if (r0 != 0) {
0x0005d5e6 bne.w 0x5d2d8 | goto label_103;
| }
0x0005d5ea b 0x5d2dc | goto label_89;
| label_214:
0x0005d5ec movs r1, 0 | r1 = 0;
0x0005d5ee b 0x5d3ce | goto label_104;
| label_239:
0x0005d5f0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005d5f2 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x0005d5f4 cmp r3, 0x52 |
| if (r3 != 0x52) {
0x0005d5f6 bne 0x5d5d2 | goto label_105;
| }
0x0005d5f8 mov.w sl, 1 | sl = 1;
0x0005d5fc ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005d5fe mov r7, sl | r7 = sl;
0x0005d600 str.w sl, [sp, 8] | __asm ("str.w sl, [var_8h]");
0x0005d604 b 0x5ce62 | goto label_86;
| label_234:
0x0005d606 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005d608 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x0005d60a cmp r3, 0x4e |
| if (r3 != 0x4e) {
0x0005d60c bne.w 0x5d4e8 | goto label_106;
| }
0x0005d610 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0005d612 cmp r3, 0x44 |
| if (r3 != 0x44) {
0x0005d614 bne.w 0x5d4e8 | goto label_106;
| }
0x0005d618 movs r7, 2 | r7 = 2;
0x0005d61a mov.w sl, 1 | sl = 1;
0x0005d61e movs r3, 3 | r3 = 3;
0x0005d620 str r7, [sp, 8] | var_8h = r7;
0x0005d622 b 0x5ce62 | goto label_86;
| label_233:
0x0005d624 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005d626 ldrb r2, [r2, 1] | r2 = *((r2 + 1));
0x0005d628 cmp r2, 0x4f |
| if (r2 != 0x4f) {
0x0005d62a bne.w 0x5d4dc | goto label_107;
| }
0x0005d62e ldrb r2, [r5, 1] | r2 = *((r5 + 1));
0x0005d630 cmp r2, 0x54 |
| if (r2 != 0x54) {
0x0005d632 bne.w 0x5d4dc | goto label_107;
| }
0x0005d636 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005d638 str r3, [sp, 8] | var_8h = r3;
0x0005d63a b 0x5d4e8 | goto label_106;
| label_225:
0x0005d63c ldr r0, [pc, 0x6c] |
0x0005d63e str r3, [sp, 0x60] | var_60h = r3;
0x0005d640 add r0, pc | r0 = 0xbacf0;
0x0005d642 blx 0x852c | strncmp (r0, r1, r2);
0x0005d646 str r0, [sp, 0x5c] | var_5ch = r0;
0x0005d648 b 0x5d334 | goto label_108;
| label_224:
0x0005d64a ldr r0, [sp, 0x6c] | r0 = var_6ch;
0x0005d64c movs r3, 7 | r3 = 7;
0x0005d64e str r3, [sp, 0x60] | var_60h = r3;
0x0005d650 cmp r0, 0 |
| if (r0 != 0) {
0x0005d652 bne.w 0x5d2d8 | goto label_103;
| }
0x0005d656 b 0x5d2dc | goto label_89;
| label_238:
0x0005d658 movs r3, 7 | r3 = 7;
0x0005d65a str r3, [sp, 0x60] | var_60h = r3;
0x0005d65c str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0005d65e b 0x5d522 | goto label_102;
| label_223:
0x0005d660 blx 0x7e8c | fcn_00007e8c ();
0x0005d664 lsrs r4, r4, 0x1e | r4 >>= 0x1e;
0x0005d666 movs r7, r0 | r7 = r0;
0x0005d668 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0005d66a movs r0, r0 |
0x0005d66c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x4b1ac */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0004b1ac () | void fcn_0004b1ac (int16_t arg_48h, int16_t arg_4ch, char * arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| char * s2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| char * var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004b1ac svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0004b1b0 sub sp, 0x24 |
0x0004b1b2 ldr.w r8, [r2] | r8 = *(r2);
0x0004b1b6 mov r5, r1 | r5 = r1;
0x0004b1b8 str r2, [sp, 8] | var_8h = r2;
0x0004b1ba str r0, [sp, 4] | s2 = r0;
0x0004b1bc str r3, [sp, 0xc] | var_ch = r3;
0x0004b1be cmp r1, 0 |
| if (r1 == 0) {
0x0004b1c0 beq.w 0x4b41e | goto label_16;
| }
0x0004b1c4 mov r0, r1 | r0 = r1;
0x0004b1c6 mov.w sl, 0 | sl = 0;
0x0004b1ca blx 0x8160 | r0 = fcn_00008160 ();
0x0004b1ce bic r6, r0, 0xc0000000 | r6 = BIT_MASK (r0, 0xc0000000);
0x0004b1d2 and sb, r8, 0x40 | sb = r8 & 0x40;
0x0004b1d6 add.w fp, r6, 8 |
0x0004b1da mov r7, sl | r7 = sl;
0x0004b1dc mov r4, fp | r4 = fp;
0x0004b1de cmp.w sb, 0 |
| if (sb != 0) {
0x0004b1e2 bne 0x4b23c | goto label_17;
| }
0x0004b1e4 ldr.w r3, [pc, 0x46c] |
0x0004b1e8 add r3, pc | r3 = 0x96840;
0x0004b1ea ldrb r3, [r3, 6] | r3 = *((r3 + 6));
0x0004b1ec cbnz r3, 0x4b23c |
| while (r6 <= 4) {
0x0004b1ee mov r0, fp | r0 = fp;
0x0004b1f0 mov r1, sl | r1 = sl;
0x0004b1f2 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0004b1f6 cmp r0, 0 |
| if (r0 == 0) {
0x0004b1f8 beq.w 0x4b414 | goto label_18;
| }
0x0004b1fc mov r2, r0 | r2 = r0;
0x0004b1fe movs r3, 0 | r3 = 0;
0x0004b200 str r3, [r2], 4 | *(r2) = r3;
| r2 += 4;
0x0004b204 str r2, [sp] | *(sp) = r2;
0x0004b206 cmp r6, 0 |
| if (r6 != 0) {
0x0004b208 bne.w 0x4b3b8 | goto label_19;
| }
| label_3:
0x0004b20c ldr r2, [sp] | r2 = *(sp);
0x0004b20e bic r8, r8, 0x40 | r8 = BIT_MASK (r8, 0x40);
0x0004b212 movs r3, 0 | r3 = 0;
0x0004b214 str r3, [r2, r6] | *((r2 + r6)) = r3;
| label_4:
0x0004b216 ldr r0, [sp, 4] | r0 = s2;
0x0004b218 movs r4, 0 | r4 = 0;
0x0004b21a blx 0x7f3c | fcn_00007f3c ();
0x0004b21e ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004b220 str r0, [r3] | *(r3) = r0;
0x0004b222 cmp r0, 0 |
| if (r0 == 0) {
0x0004b224 beq.w 0x4b55a | goto label_20;
| }
| label_9:
0x0004b228 ldr r3, [sp, 8] | r3 = var_8h;
0x0004b22a mov r0, r4 | r0 = r4;
0x0004b22c ldr r2, [sp] | r2 = *(sp);
0x0004b22e str.w r8, [r3] | __asm ("str.w r8, [r3]");
0x0004b232 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x0004b234 str r2, [r3] | *(r3) = r2;
0x0004b236 add sp, 0x24 |
0x0004b238 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x0004b23c cmp r6, 4 |
0x0004b23e ble 0x4b1ee |
| }
0x0004b240 ldr.w r1, [pc, 0x414] |
0x0004b244 movs r2, 5 | r2 = 5;
0x0004b246 mov r0, r5 | r0 = r5;
0x0004b248 add r1, pc | r1 = 0x968a4;
0x0004b24a blx 0x7e40 | r0 = fcn_00007e40 ();
0x0004b24e mov sb, r0 | sb = r0;
0x0004b250 cmp r0, 0 |
| if (r0 != 0) {
0x0004b252 bne.w 0x4b3a2 | goto label_21;
| }
0x0004b256 subs r1, r5, 1 | r1 = r5 - 1;
0x0004b258 orr r8, r8, 0x40 | r8 |= 0x40;
0x0004b25c add r6, r1 | r6 += r1;
0x0004b25e mov sl, r0 | sl = r0;
| do {
0x0004b260 ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x0004b264 sub.w r3, r3, 0x26 | r3 -= 0x26;
0x0004b268 clz r3, r3 | r3 &= r3;
0x0004b26c lsrs r3, r3, 5 | r3 >>= 5;
0x0004b26e adds r4, r3, r4 | r4 = r3 + r4;
0x0004b270 adc r7, r7, 0 | __asm ("adc r7, r7, 0");
0x0004b274 cmp r6, r1 |
0x0004b276 bne 0x4b260 |
| } while (r6 != r1);
0x0004b278 mov r0, r4 | r0 = r4;
0x0004b27a mov r1, r7 | r1 = r7;
0x0004b27c blx 0x7f18 | r0 = fcn_00007f18 ();
0x0004b280 cmp r0, 0 |
| if (r0 == 0) {
0x0004b282 beq.w 0x4b414 | goto label_18;
| }
0x0004b286 mov r3, r0 | r3 = r0;
0x0004b288 str sl, [r3], 4 | *(r3) = sl;
| r3 += 4;
0x0004b28c str r3, [sp] | *(sp) = r3;
0x0004b28e ldrb r3, [r5, 5] | r3 = *((r5 + 5));
0x0004b290 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0004b292 beq.w 0x4b578 | goto label_22;
| }
0x0004b296 movs r2, 5 | r2 = 5;
0x0004b298 subs r1, r3, 0 | r1 = r3 - 0;
0x0004b29a it ne |
| if (r1 == r3) {
0x0004b29c movne r1, 1 | r1 = 1;
| }
0x0004b29e mov r4, r2 | r4 = r2;
| label_11:
0x0004b2a0 cmp r3, 0x23 |
0x0004b2a2 ite eq |
| if (r3 != 0x23) {
0x0004b2a4 moveq r1, 0 | r1 = 0;
| }
| if (r3 == 0x23) {
0x0004b2a6 andne r1, r1, 1 | r1 &= 1;
| }
0x0004b2aa ldr.w lr, [sp] |
0x0004b2ae cmp r1, 0 |
| if (r1 == 0) {
0x0004b2b0 beq.w 0x4b444 | goto label_14;
| }
| label_10:
0x0004b2b4 ldr.w fp, [pc, 0x3a4] |
0x0004b2b8 rsb.w r1, r5, 2 | r1 = 2 - r5;
0x0004b2bc ldr.w ip, [sp] | ip = *(sp);
0x0004b2c0 movs r0, 0 | r0 = 0;
0x0004b2c2 str r1, [sp, 0x10] | var_10h = r1;
0x0004b2c4 add fp, pc | fp = 0x96924;
0x0004b2c6 b 0x4b2f4 |
| while (r3 != 0x25) {
0x0004b2c8 cmp r0, 1 |
| if (r0 == 1) {
0x0004b2ca beq.w 0x4b3de | goto label_23;
| }
0x0004b2ce cmp r0, 0 |
0x0004b2d0 it eq |
| if (r0 == 0) {
0x0004b2d2 cmpeq r3, 0x3f | __asm ("cmpeq r3, 0x3f");
| }
0x0004b2d4 itt eq |
| if (r0 != 0) {
0x0004b2d6 moveq r0, 1 | r0 = 1;
| }
| if (r0 != 0) {
0x0004b2d8 moveq r3, 0 | r3 = 0;
| }
| if (r0 != 0) {
0x0004b2da bne 0x4b3c8 | goto label_24;
| }
| label_0:
0x0004b2dc mov r2, r1 | r2 = r1;
0x0004b2de add.w sb, sb, 1 | sb++;
0x0004b2e2 mov r4, r1 | r4 = r1;
0x0004b2e4 strb.w r3, [ip, r7] | *((ip + r7)) = r3;
| label_2:
0x0004b2e8 ldrb r3, [r6] | r3 = *(r6);
0x0004b2ea cmp r3, 0x23 |
0x0004b2ec it ne |
| if (r3 != 0x23) {
0x0004b2ee cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r3 == 0x23) {
0x0004b2f0 beq.w 0x4b438 | goto label_25;
| }
0x0004b2f4 cmp r3, 0x25 |
0x0004b2f6 add.w r1, r4, 1 | r1 = r4 + 1;
0x0004b2fa mov r7, sb | r7 = sb;
0x0004b2fc add.w r6, r5, r1 | r6 = r5 + r1;
0x0004b300 bne 0x4b2c8 |
| }
0x0004b302 ldrb.w lr, [r5, r1] |
0x0004b306 add.w sl, fp, lr | sl = fp + lr;
0x0004b30a ldrb.w sl, [sl, 0x40] | sl = *((sl + 0x40));
0x0004b30e tst.w sl, 8 |
| if ((sl & 8) == 0) {
0x0004b312 beq 0x4b3c4 | goto label_26;
| }
0x0004b314 add r2, r5 | r2 += r5;
0x0004b316 ldrb r2, [r2, 2] | r2 = *((r2 + 2));
0x0004b318 add.w sl, fp, r2 | sl = fp + r2;
0x0004b31c ldrb.w sl, [sl, 0x40] | sl = *((sl + 0x40));
0x0004b320 tst.w sl, 8 |
| if ((sl & 8) == 0) {
0x0004b324 beq 0x4b3c4 | goto label_26;
| }
0x0004b326 ubfx r3, lr, 6, 1 | r3 = (lr >> 6) & ((1 << 1) - 1);
0x0004b32a adds r1, r4, 3 | r1 = r4 + 3;
0x0004b32c add.w r3, r3, r3, lsl 3 | r3 += (r3 << 3);
0x0004b330 adds r6, r5, r1 | r6 = r5 + r1;
0x0004b332 add lr, r3 | lr += r3;
0x0004b334 ubfx r3, r2, 6, 1 | r3 = (r2 >> 6) & ((1 << 1) - 1);
0x0004b338 add.w r3, r3, r3, lsl 3 | r3 += (r3 << 3);
0x0004b33c and lr, lr, 0xf | lr &= 0xf;
0x0004b340 add r3, r2 | r3 += r2;
0x0004b342 and r3, r3, 0xf | r3 &= 0xf;
0x0004b346 adds.w r3, r3, lr, lsl 4 | r3 += (lr << 4);
0x0004b34a it ne |
| if (r3 == r3) {
0x0004b34c uxtbne r3, r3 | __asm ("uxtbne r3, r3");
| goto label_27;
| }
| if (r3 != r3) {
| label_27:
0x0004b34e bne 0x4b2dc | goto label_0;
| }
0x0004b350 ldrb r3, [r5, r1] | r3 = *((r5 + r1));
0x0004b352 cmp r3, 0 |
0x0004b354 it ne |
| if (r3 != 0) {
0x0004b356 cmpne r3, 0x23 | __asm ("cmpne r3, 0x23");
| }
| if (r3 == 0) {
0x0004b358 beq 0x4b438 | goto label_25;
| }
0x0004b35a adds r1, r4, 4 | r1 = r4 + 4;
0x0004b35c subs r7, r0, 0 | r7 = r0 - 0;
0x0004b35e add r1, r5 | r1 += r5;
0x0004b360 it ne |
| if (r7 == r0) {
0x0004b362 movne r7, 1 | r7 = 1;
| }
0x0004b364 b 0x4b37c |
| while (r0 != 1) {
0x0004b366 cmp r3, 0x26 |
0x0004b368 it eq |
| if (r3 == 0x26) {
0x0004b36a cmpeq r0, 2 | __asm ("cmpeq r0, 2");
| }
| if (r3 == 0x26) {
0x0004b36c beq.w 0x4b642 | goto label_28;
| }
| label_1:
0x0004b370 ldrb r3, [r1], 1 | r3 = *(r1);
| r1++;
0x0004b374 cmp r3, 0 |
0x0004b376 it ne |
| if (r3 != 0) {
0x0004b378 cmpne r3, 0x23 | __asm ("cmpne r3, 0x23");
| }
| if (r3 == 0) {
0x0004b37a beq 0x4b438 | goto label_25;
| }
0x0004b37c subs r2, r1, r5 | r2 = r1 - r5;
0x0004b37e cmp r3, 0x3f |
0x0004b380 ite eq |
| if (r3 != 0x3f) {
0x0004b382 moveq r6, r7 | r6 = r7;
| }
| if (r3 == 0x3f) {
0x0004b384 orrne r6, r7, 1 | r6 = r7 | 1;
| }
0x0004b388 subs r2, 1 | r2--;
0x0004b38a mov r4, r2 | r4 = r2;
0x0004b38c cmp r6, 0 |
| if (r6 == 0) {
0x0004b38e beq.w 0x4b648 | goto label_29;
| }
0x0004b392 cmp r0, 1 |
0x0004b394 bne 0x4b366 |
| }
0x0004b396 cmp r3, 0x3d |
0x0004b398 it ne |
| if (r3 == 0x3d) {
0x0004b39a cmpne r3, 0x26 | __asm ("cmpne r3, 0x26");
| goto label_30;
| }
| if (r3 != 0x3d) {
| label_30:
0x0004b39c bne 0x4b370 | goto label_1;
| }
| label_12:
0x0004b39e adds r6, r5, r2 | r6 = r5 + r2;
0x0004b3a0 b 0x4b2e8 | goto label_2;
| label_21:
0x0004b3a2 mov r0, fp | r0 = fp;
0x0004b3a4 mov r1, sl | r1 = sl;
0x0004b3a6 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0004b3aa mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x0004b3ac cbz r0, 0x4b414 | goto label_18;
| }
0x0004b3ae mov r2, r7 | r2 = r7;
0x0004b3b0 movs r3, 0 | r3 = 0;
0x0004b3b2 str r3, [r2], 4 | *(r2) = r3;
| r2 += 4;
0x0004b3b6 str r2, [sp] | *(sp) = r2;
| label_19:
0x0004b3b8 ldr r0, [sp] | r0 = *(sp);
0x0004b3ba mov r1, r5 | r1 = r5;
0x0004b3bc mov r2, r6 | r2 = r6;
0x0004b3be blx 0x7dcc | fcn_00007dcc ();
0x0004b3c2 b 0x4b20c | goto label_3;
| label_26:
0x0004b3c4 cmp r0, 1 |
| if (r0 == 1) {
0x0004b3c6 beq 0x4b2dc | goto label_0;
| }
| label_24:
0x0004b3c8 cmp r0, 2 |
0x0004b3ca it eq |
| if (r0 == 2) {
0x0004b3cc cmpeq r3, 0x26 | __asm ("cmpeq r3, 0x26");
| }
0x0004b3ce ite eq |
| if (r0 != 2) {
0x0004b3d0 moveq r2, 1 | r2 = 1;
| }
| if (r0 == 2) {
0x0004b3d2 movne r2, 0 | r2 = 0;
| }
0x0004b3d4 cmp r2, 0 |
0x0004b3d6 itt ne |
| if (r2 == 0) {
0x0004b3d8 movne r0, 1 | r0 = 1;
| }
| if (r2 == 0) {
0x0004b3da movne r3, 0 | r3 = 0;
| }
0x0004b3dc b 0x4b2dc | goto label_0;
| label_23:
0x0004b3de cmp r3, 0x3d |
0x0004b3e0 it ne |
| if (r3 == 0x3d) {
0x0004b3e2 cmpne r3, 0x26 | __asm ("cmpne r3, 0x26");
| goto label_31;
| }
| if (r3 != 0x3d) {
| label_31:
0x0004b3e4 bne.w 0x4b2dc | goto label_0;
| }
0x0004b3e8 add.w lr, ip, sb | lr = ip + sb;
0x0004b3ec ldrb r2, [lr, -0x1] | r2 = *((lr - 0x1));
0x0004b3f0 cmp r2, 0 |
| if (r2 == 0) {
0x0004b3f2 beq.w 0x4b5d2 | goto label_32;
| }
0x0004b3f6 cmp r3, 0x26 |
0x0004b3f8 itt ne |
| if (r3 == 0x26) {
0x0004b3fa movne r0, 2 | r0 = 2;
| }
| if (r3 != 0x26) {
0x0004b3fc movne r3, 0 | r3 = 0;
| goto label_33;
| }
| if (r3 != 0x26) {
| label_33:
0x0004b3fe bne.w 0x4b2dc | goto label_0;
| }
0x0004b402 mov.w r3, 0 | r3 = 0;
0x0004b406 strb.w r3, [ip, sb] | *((ip + sb)) = r3;
0x0004b40a add.w sb, sb, 1 | sb++;
0x0004b40e mov r7, sb | r7 = sb;
0x0004b410 movs r3, 0 | r3 = 0;
0x0004b412 b 0x4b2dc | goto label_0;
| do {
| label_18:
0x0004b414 movs r4, 7 | r4 = 7;
0x0004b416 mov r0, r4 | r0 = r4;
0x0004b418 add sp, 0x24 |
0x0004b41a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x0004b41e movs r0, 8 | r0 = 8;
0x0004b420 movs r1, 0 | r1 = 0;
0x0004b422 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0004b426 mov r7, r0 | r7 = r0;
0x0004b428 cmp r0, 0 |
0x0004b42a beq 0x4b414 |
| } while (r0 == 0);
0x0004b42c mov r3, r7 | r3 = r7;
0x0004b42e mov r6, r5 | r6 = r5;
0x0004b430 str r5, [r3], 4 | *(r3) = r5;
| r3 += 4;
0x0004b434 str r3, [sp] | *(sp) = r3;
0x0004b436 b 0x4b20c | goto label_3;
| label_25:
0x0004b438 ldr r3, [sp] | r3 = *(sp);
0x0004b43a cmp r0, 1 |
0x0004b43c add.w lr, r3, sb | lr = r3 + sb;
| if (r0 == 1) {
0x0004b440 beq.w 0x4b5fa | goto label_34;
| }
| label_14:
0x0004b444 ldr r5, [sp] | r5 = *(sp);
0x0004b446 movs r3, 0 | r3 = 0;
0x0004b448 str.w r3, [lr] | __asm ("str.w r3, [lr]");
0x0004b44c mov r0, r5 | r0 = r5;
0x0004b44e blx 0x8160 | r0 = fcn_00008160 ();
0x0004b452 bic r4, r0, 0xc0000000 | r4 = BIT_MASK (r0, 0xc0000000);
0x0004b456 adds r4, 1 | r4++;
0x0004b458 ldrb r3, [r5, r4] | r3 = *((r5 + r4));
0x0004b45a add r4, r5 | r4 += r5;
0x0004b45c cmp r3, 0 |
| if (r3 == 0) {
0x0004b45e beq.w 0x4b216 | goto label_4;
| }
0x0004b462 ldr r3, [pc, 0x1fc] |
0x0004b464 ldr.w fp, [pc, 0x1fc] | fp = *(0x0004b664);
0x0004b468 add r3, pc |
0x0004b46a add.w r3, r3, 0x7c0 | r3 = 0x9728e;
0x0004b46e add fp, pc |
0x0004b470 str r3, [sp, 0x10] | var_10h = r3;
0x0004b472 ldr r3, [pc, 0x1f4] |
0x0004b474 add r3, pc |
0x0004b476 add.w r3, r3, 0x798 | r3 = 0x9727a;
0x0004b47a str r3, [sp, 0x1c] | var_1ch = r3;
0x0004b47c ldr r3, [pc, 0x1ec] |
0x0004b47e add r3, pc | r3 = 0x96aee;
0x0004b480 str r3, [sp, 0x18] | var_18h = r3;
0x0004b482 b 0x4b49e | goto label_35;
| label_5:
0x0004b484 cmp r7, 5 |
| if (r7 == 5) {
0x0004b486 beq 0x4b4d6 | goto label_36;
| }
0x0004b488 cmp r7, 4 |
| if (r7 == 4) {
0x0004b48a bne 0x4b492 |
0x0004b48c ldrb r3, [r4] | r3 = *(r4);
0x0004b48e cmp r3, 0x6d |
| if (r3 == 0x6d) {
0x0004b490 beq 0x4b534 | goto label_37;
| }
| }
| label_6:
0x0004b492 adds r4, r5, 1 | r4 = r5 + 1;
0x0004b494 ldrb r3, [r6, r4] | r3 = *((r6 + r4));
0x0004b496 add r4, r6 | r4 += r6;
0x0004b498 cmp r3, 0 |
| if (r3 == 0) {
0x0004b49a beq.w 0x4b216 | goto label_4;
| }
| label_35:
0x0004b49e mov r0, r4 | r0 = r4;
0x0004b4a0 blx 0x8160 | r0 = fcn_00008160 ();
0x0004b4a4 bic r7, r0, 0xc0000000 | r7 = BIT_MASK (r0, 0xc0000000);
0x0004b4a8 adds r6, r7, 1 | r6 = r7 + 1;
0x0004b4aa add r6, r4 | r6 += r4;
0x0004b4ac mov r0, r6 | r0 = r6;
0x0004b4ae blx 0x8160 | fcn_00008160 ();
0x0004b4b2 cmp r7, 3 |
0x0004b4b4 bic r5, r0, 0xc0000000 | r5 = BIT_MASK (r0, 0xc0000000);
| if (r7 != 3) {
0x0004b4b8 bne 0x4b484 | goto label_5;
| }
0x0004b4ba ldrb r3, [r4] | r3 = *(r4);
0x0004b4bc cmp r3, 0x76 |
| if (r3 != 0x76) {
0x0004b4be bne 0x4b492 | goto label_6;
| }
0x0004b4c0 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0004b4c2 adds r4, 1 | r4++;
0x0004b4c4 cmp r3, 0x66 |
| if (r3 != 0x66) {
0x0004b4c6 bne 0x4b492 | goto label_6;
| }
0x0004b4c8 ldr r2, [sp, 4] | r2 = s2;
0x0004b4ca ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0004b4cc cmp r3, 0x73 |
0x0004b4ce it eq |
| if (r3 != 0x73) {
0x0004b4d0 moveq r2, r6 | r2 = r6;
| }
0x0004b4d2 str r2, [sp, 4] | s2 = r2;
0x0004b4d4 b 0x4b492 | goto label_6;
| label_36:
0x0004b4d6 mov r2, r7 | r2 = r7;
0x0004b4d8 mov r1, r4 | r1 = r4;
0x0004b4da mov r0, fp | r0 = fp;
0x0004b4dc blx 0x7e40 | r0 = fcn_00007e40 ();
0x0004b4e0 cmp r0, 0 |
| if (r0 != 0) {
0x0004b4e2 bne 0x4b492 | goto label_6;
| }
0x0004b4e4 ldr r4, [sp, 0x10] | r4 = var_10h;
0x0004b4e6 mov.w sl, 0x60000 | sl = 0x60000;
0x0004b4ea mov sb, sl | sb = sl;
0x0004b4ec str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
| label_8:
0x0004b4f0 ldr r7, [r4] | r7 = *(r4);
| if (r7 != 0) {
0x0004b4f2 cbnz r7, 0x4b500 | goto label_38;
| }
0x0004b4f4 b 0x4b60c | goto label_39;
| do {
| label_7:
0x0004b4f6 ldr r7, [r4, 8]! | r7 = *((r4 += 8));
0x0004b4fa cmp r7, 0 |
| if (r7 == 0) {
0x0004b4fc beq.w 0x4b60c | goto label_39;
| }
| label_38:
0x0004b500 mov r0, r7 | r0 = r7;
0x0004b502 blx 0x8160 | r0 = fcn_00008160 ();
0x0004b506 bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
0x0004b50a cmp r5, r0 |
0x0004b50c bne 0x4b4f6 |
| } while (r5 != r0);
0x0004b50e mov r1, r7 | r1 = r7;
0x0004b510 mov r2, r5 | r2 = r5;
0x0004b512 mov r0, r6 | r0 = r6;
0x0004b514 blx 0x7e40 | r0 = fcn_00007e40 ();
0x0004b518 cmp r0, 0 |
| if (r0 != 0) {
0x0004b51a bne 0x4b4f6 | goto label_7;
| }
0x0004b51c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0004b51e cmp r3, 0 |
| if (r3 == 0) {
0x0004b520 beq 0x4b60c | goto label_39;
| }
0x0004b522 bic r2, r3, 0x80 | r2 = BIT_MASK (r3, 0x80);
0x0004b526 cmp r2, sl |
| if (r2 > sl) {
0x0004b528 bgt 0x4b61e | goto label_40;
| }
0x0004b52a bic.w r8, r8, sb | r8 = BIT_MASK (r8, sb);
0x0004b52e orr.w r8, r3, r8 | r8 = r3 | r8;
0x0004b532 b 0x4b492 | goto label_6;
| label_37:
0x0004b534 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0004b536 adds r4, 1 | r4++;
0x0004b538 cmp r3, 0x6f |
| if (r3 != 0x6f) {
0x0004b53a bne 0x4b492 | goto label_6;
| }
0x0004b53c ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x0004b540 cmp r3, 0x64 |
| if (r3 != 0x64) {
0x0004b542 bne 0x4b492 | goto label_6;
| }
0x0004b544 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0004b546 cmp r3, 0x65 |
| if (r3 != 0x65) {
0x0004b548 bne 0x4b492 | goto label_6;
| }
0x0004b54a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0004b54c and sl, r8, 0x87 | sl = r8 & 0x87;
0x0004b550 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x0004b552 mov.w sb, 0x87 | sb = 0x87;
0x0004b556 str r3, [sp, 0x14] | var_14h = r3;
0x0004b558 b 0x4b4f0 | goto label_8;
| label_20:
0x0004b55a ldr r0, [pc, 0x114] |
0x0004b55c movs r4, 1 | r4 = 1;
0x0004b55e ldr r1, [sp, 4] | r1 = s2;
0x0004b560 add r0, pc | r0 = 0x96bd6;
0x0004b562 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x0004b566 mov r3, r0 | r3 = r0;
| label_15:
0x0004b568 ldr r2, [sp, 0x4c] | r2 = *(arg_4ch);
0x0004b56a ldr r0, [sp] | r0 = *(sp);
0x0004b56c str r3, [r2] | *(r2) = r3;
0x0004b56e movs r3, 0 | r3 = 0;
0x0004b570 str r3, [sp] | *(sp) = r3;
0x0004b572 blx 0x7f68 | fcn_00007f68 ();
0x0004b576 b 0x4b228 | goto label_9;
| label_22:
0x0004b578 ldrb r2, [r5, 6] | r2 = *((r5 + 6));
0x0004b57a cmp r2, 0x2f |
0x0004b57c itt ne |
| if (r2 == 0x2f) {
0x0004b57e movne r4, 5 | r4 = 5;
| }
| if (r2 != 0x2f) {
0x0004b580 movne r2, r4 | r2 = r4;
| goto label_41;
| }
| if (r2 != 0x2f) {
| label_41:
0x0004b582 bne.w 0x4b2b4 | goto label_10;
| }
0x0004b586 ldrb r3, [r5, 7] | r3 = *((r5 + 7));
0x0004b588 add.w sl, r5, 7 | sl = r5 + 7;
0x0004b58c subs r1, r3, 0 | r1 = r3 - 0;
0x0004b58e it ne |
| if (r1 == r3) {
0x0004b590 movne r1, 1 | r1 = 1;
| }
0x0004b592 cmp r3, 0x2f |
0x0004b594 ite eq |
| if (r3 != 0x2f) {
0x0004b596 moveq r2, 0 | r2 = 0;
| }
| if (r3 == 0x2f) {
0x0004b598 andne r2, r1, 1 | r2 = r1 & 1;
| }
0x0004b59c cmp r2, 0 |
| if (r2 == 0) {
0x0004b59e beq 0x4b64e | goto label_42;
| }
0x0004b5a0 mov r2, sl | r2 = sl;
0x0004b5a2 movs r4, 7 | r4 = 7;
| do {
0x0004b5a4 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x0004b5a8 mov r6, r4 | r6 = r4;
0x0004b5aa adds r4, 1 | r4++;
0x0004b5ac cmp r3, 0 |
0x0004b5ae it ne |
| if (r3 != 0) {
0x0004b5b0 cmpne r3, 0x2f | __asm ("cmpne r3, 0x2f");
| }
0x0004b5b2 bne 0x4b5a4 |
| } while (r3 != 0);
0x0004b5b4 cmp r4, 0x10 |
| if (r4 != 0x10) {
0x0004b5b6 bne 0x4b630 | goto label_43;
| }
0x0004b5b8 ldr r0, [pc, 0xb8] |
0x0004b5ba movs r2, 9 | r2 = 9;
0x0004b5bc mov r1, sl | r1 = sl;
0x0004b5be add r0, pc | r0 = 0x96c36;
0x0004b5c0 blx 0x7e40 | r0 = fcn_00007e40 ();
| if (r0 != 0) {
0x0004b5c4 cbnz r0, 0x4b630 | goto label_43;
| }
0x0004b5c6 ldrb r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0004b5c8 mov r2, r4 | r2 = r4;
0x0004b5ca subs r1, r3, 0 | r1 = r3 - 0;
0x0004b5cc it ne |
| if (r1 == r3) {
0x0004b5ce movne r1, 1 | r1 = 1;
| }
0x0004b5d0 b 0x4b2a0 | goto label_11;
| label_32:
0x0004b5d2 ldrb r3, [r6] | r3 = *(r6);
0x0004b5d4 cmp r3, 0 |
0x0004b5d6 it ne |
| if (r3 != 0) {
0x0004b5d8 cmpne r3, 0x23 | __asm ("cmpne r3, 0x23");
| }
| if (r3 == 0) {
0x0004b5da beq 0x4b5fa | goto label_34;
| }
0x0004b5dc ldr r6, [sp, 0x10] | r6 = var_10h;
0x0004b5de subs r3, r4, 1 | r3 = r4 - 1;
0x0004b5e0 add r3, r5 | r3 += r5;
| label_13:
0x0004b5e2 adds r2, r6, r3 | r2 = r6 + r3;
0x0004b5e4 ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x0004b5e8 mov r4, r2 | r4 = r2;
0x0004b5ea cmp r1, 0x26 |
| if (r1 == 0x26) {
0x0004b5ec beq.w 0x4b39e | goto label_12;
| }
0x0004b5f0 ldrb r2, [r3, 2] | r2 = *((r3 + 2));
0x0004b5f2 cmp r2, 0 |
0x0004b5f4 it ne |
| if (r2 == 0) {
0x0004b5f6 cmpne r2, 0x23 | __asm ("cmpne r2, 0x23");
| goto label_44;
| }
| if (r2 != 0) {
| label_44:
0x0004b5f8 bne 0x4b5e2 | goto label_13;
| }
| label_34:
0x0004b5fa movs r3, 0 | r3 = 0;
0x0004b5fc add.w sb, sb, 1 | sb++;
0x0004b600 strb.w r3, [lr] | *(lr) = r3;
0x0004b604 ldr r3, [sp] | r3 = *(sp);
0x0004b606 add.w lr, r3, sb | lr = r3 + sb;
0x0004b60a b 0x4b444 | goto label_14;
| label_39:
0x0004b60c ldr r0, [pc, 0x68] |
0x0004b60e mov r2, r6 | r2 = r6;
0x0004b610 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0004b612 movs r4, 1 | r4 = 1;
0x0004b614 add r0, pc | r0 = 0x96c90;
0x0004b616 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x0004b61a mov r3, r0 | r3 = r0;
0x0004b61c b 0x4b568 | goto label_15;
| label_40:
0x0004b61e ldr r0, [pc, 0x5c] |
0x0004b620 mov r2, r6 | r2 = r6;
0x0004b622 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0004b624 movs r4, 3 | r4 = 3;
0x0004b626 add r0, pc | r0 = 0x96ca8;
0x0004b628 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x0004b62c mov r3, r0 | r3 = r0;
0x0004b62e b 0x4b568 | goto label_15;
| label_43:
0x0004b630 ldr r0, [pc, 0x4c] |
0x0004b632 mov r2, sl | r2 = sl;
0x0004b634 subs r1, r6, 6 | r1 = r6 - 6;
0x0004b636 movs r4, 1 | r4 = 1;
0x0004b638 add r0, pc | r0 = 0x96cbc;
0x0004b63a blx 0x852c | r0 = strncmp (r0, r1, r2);
0x0004b63e mov r3, r0 | r3 = r0;
0x0004b640 b 0x4b568 | goto label_15;
| label_28:
0x0004b642 adds r6, r5, r2 | r6 = r5 + r2;
0x0004b644 movs r0, 2 | r0 = 2;
0x0004b646 b 0x4b2e8 | goto label_2;
| label_29:
0x0004b648 mov r0, r6 | r0 = r6;
0x0004b64a adds r6, r5, r2 | r6 = r5 + r2;
0x0004b64c b 0x4b2e8 | goto label_2;
| label_42:
0x0004b64e movs r2, 7 | r2 = 7;
0x0004b650 mov r4, r2 | r4 = r2;
0x0004b652 b 0x4b2a0 | goto label_11;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x4bcec).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x4dd80 */
| #include <stdint.h>
|
; (fcn) fcn.0004dd80 () | void fcn_0004dd80 (int16_t arg1) {
| int16_t var_0h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_14h;
| int16_t var_1h;
| int16_t var_4h_2;
| r0 = arg1;
0x0004dd80 ldr.w ip, [pc, 0x7c] |
0x0004dd84 push {r1, r2, r3} |
0x0004dd86 ldr r2, [pc, 0x7c] | r2 = *(0x4de06);
0x0004dd88 add ip, pc | ip = 0x9bb8c;
0x0004dd8a push {r4, lr} |
0x0004dd8c mov r4, r0 | r4 = r0;
0x0004dd8e sub sp, 0xc |
0x0004dd90 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0004dd92 add r1, sp, 0x14 | r1 += var_14h;
0x0004dd94 ldr.w r2, [ip, r2] |
0x0004dd98 ldr r0, [r1], 4 | r0 = *(r1);
| r1 += 4;
0x0004dd9c ldr r2, [r2] | r2 = *(0x9bb8c);
0x0004dd9e str r2, [sp, 4] | var_4h = r2;
0x0004dda0 mov.w r2, 0 | r2 = 0;
0x0004dda4 str r1, [sp] | *(sp) = r1;
| if (r3 != 0) {
0x0004dda6 cbnz r3, 0x4ddae | goto label_2;
| }
0x0004dda8 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0004ddaa cmp r3, 0x63 |
0x0004ddac ble 0x4ddcc |
| while (1) {
| label_2:
0x0004ddae ldr r2, [pc, 0x58] |
0x0004ddb0 ldr r3, [pc, 0x50] | r3 = *(0x4de04);
0x0004ddb2 add r2, pc | r2 = 0x9bbc0;
0x0004ddb4 ldr r3, [r2, r3] | r3 = *(0x9bbc0);
0x0004ddb6 ldr r2, [r3] | r2 = *(0x9bbc0);
0x0004ddb8 ldr r3, [sp, 4] | r3 = var_4h;
0x0004ddba eors r2, r3 | r2 ^= r3;
0x0004ddbc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004ddc0 bne 0x4ddfc | goto label_3;
| }
0x0004ddc2 add sp, 0xc |
0x0004ddc4 pop.w {r4, lr} |
0x0004ddc8 add sp, 0xc |
0x0004ddca bx lr | return;
0x0004ddcc blx 0x8328 | r0 = fcn_00008328 ();
0x0004ddd0 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x0004ddd2 cbz r0, 0x4ddf0 | goto label_4;
| }
0x0004ddd4 ldr r1, [r4, 0x2c] | r1 = *((r4 + 0x2c));
| if (r1 == 0) {
0x0004ddd6 cbz r1, 0x4ddf6 | goto label_5;
| }
0x0004ddd8 ldr r2, [pc, 0x30] |
0x0004ddda add r2, pc | r2 = 0x9bbea;
| label_1:
0x0004dddc ldr r0, [pc, 0x30] |
0x0004ddde add r0, pc | r0 = 0x9bbf2;
0x0004dde0 blx 0x852c | strncmp (r0, r1, r2);
0x0004dde4 str r0, [r4, 0x2c] | *((r4 + 0x2c)) = r0;
| if (r0 == 0) {
0x0004dde6 cbz r0, 0x4ddf0 | goto label_4;
| }
| label_0:
0x0004dde8 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0004ddea adds r3, 1 | r3++;
0x0004ddec str r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
0x0004ddee b 0x4ddae |
| }
| label_4:
0x0004ddf0 movs r3, 7 | r3 = 7;
0x0004ddf2 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0004ddf4 b 0x4dde8 | goto label_0;
| label_5:
0x0004ddf6 ldr r2, [pc, 0x1c] |
0x0004ddf8 add r2, pc | r2 = 0x9bc12;
0x0004ddfa b 0x4dddc | goto label_1;
| label_3:
0x0004ddfc blx 0x7e8c | fcn_00007e8c ();
0x0004de00 vhadd.u8 d0, d8, d7 | __asm ("vhadd.u8 d0, d8, d7");
0x0004de04 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0004de06 movs r0, r0 |
0x0004de08 cdp2 p0, 0xd, c0, c14, c7, 0 | __asm ("cdp2 p0, 0xd, c0, c14, c7, 0");
0x0004de0c bics r0, sl, 5 | __asm ("bics r0, sl, 5");
0x0004de10 lsrs r2, r1, 1 | r2 = r1 >> 1;
0x0004de12 movs r6, r0 | r6 = r0;
0x0004de14 asrs r0, r4, 5 | r0 = r4 >> 5;
0x0004de16 movs r6, r0 | r6 = r0;
0x0004de18 push.w {r4, r5, r6, r7, r8, lr} |
0x0004de1c mov r5, r2 | r5 = r2;
0x0004de1e sub sp, 8 |
0x0004de20 mov r7, r1 | r7 = r1;
0x0004de22 mov r6, r0 | r6 = r0;
0x0004de24 blx 0x7d08 | r0 = fcn_00007d08 ();
0x0004de28 mov r8, r0 | r8 = r0;
0x0004de2a ldr r0, [r5] | r0 = *(r5);
0x0004de2c blx 0x8584 | fcn_00008584 ();
0x0004de30 mov r3, r1 | r3 = r1;
0x0004de32 ldr.w r1, [r8] | r1 = *(r8);
0x0004de36 mov r2, r0 | r2 = r0;
0x0004de38 ldr r4, [r1, 0x2c] | r4 = *((r1 + 0x2c));
| if (r4 != 0) {
0x0004de3a cbnz r4, 0x4de42 | goto label_6;
| }
0x0004de3c b 0x4de52 | goto label_7;
| do {
0x0004de3e ldr r4, [r4, 4] | r4 = *((r4 + 4));
| if (r4 == 0) {
0x0004de40 cbz r4, 0x4de52 | goto label_7;
| }
| label_6:
0x0004de42 ldrd r1, r0, [r4, 0x10] | __asm ("ldrd r1, r0, [r4, 0x10]");
0x0004de46 cmp r3, r0 |
0x0004de48 it eq |
| if (r3 == r0) {
0x0004de4a cmpeq r2, r1 | __asm ("cmpeq r2, r1");
| }
0x0004de4c bne 0x4de3e |
| } while (r3 != r0);
0x0004de4e ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
| if (r1 == 0) {
0x0004de50 cbnz r1, 0x4de74 |
| label_7:
0x0004de52 ldr r0, [pc, 0x48] |
0x0004de54 add r0, pc | r0 = 0x9bcf6;
0x0004de56 blx 0x852c | strncmp (r0, r1, r2);
0x0004de58 sbc.w r0, sl, pc, lsl 29 | __asm ("sbc.w r0, sl, pc, lsl 29");
0x0004de5c adds r2, 0xff | r2 += 0xff;
0x0004de5e mov r4, r0 | r4 = r0;
0x0004de60 mov r1, r0 | r1 = r0;
0x0004de62 mov r0, r6 | r0 = r6;
0x0004de64 blx 0x7edc | fcn_00007edc ();
0x0004de68 mov r0, r4 | r0 = r4;
0x0004de6a add sp, 8 |
0x0004de6c pop.w {r4, r5, r6, r7, r8, lr} |
0x0004de70 b.w 0x84f4 | void (*0x84f4)() ();
| }
0x0004de74 ldr r0, [pc, 0x28] |
0x0004de76 adds r5, 4 | r5 += 4;
0x0004de78 subs r3, r7, 1 | r3 -= var_1h;
0x0004de7a str.w r8, [r4, 0x60] | __asm ("str.w r8, [r4, 0x60]");
0x0004de7e mov r2, r6 | r2 = r6;
0x0004de80 str r5, [sp] | *(sp) = r5;
0x0004de82 add r0, pc | r0 = 0x9bd26;
0x0004de84 ldr.w r5, [r8, 0xc] | r5 = *((r8 + 0xc));
0x0004de88 mov r1, r4 | r1 = r4;
0x0004de8a addw r0, r0, 0xd14 | __asm ("addw r0, r0, aav.0x000000ff");
0x0004de8e blx r5 | uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0004de90 movs r3, 0 | r3 = 0;
0x0004de92 str r3, [r4, 0x60] | *((r4 + 0x60)) = r3;
0x0004de94 add sp, 8 |
0x0004de96 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/libsqlite3.so.0.8.6 @ 0x4fe34 */
| #include <stdint.h>
|
; (fcn) fcn.0004fe34 () | void fcn_0004fe34 (int16_t arg_4h, int16_t arg_8h, int16_t arg_20h, int16_t arg_2bh, int16_t arg_2ch, int16_t arg_2dh, int16_t arg_2eh, int16_t arg_2fh, int16_t arg_34h, int16_t arg_42h, int16_t arg_44h, int16_t arg_48h, int16_t arg_68h, int16_t arg_118h, int16_t arg_124h, int16_t arg_128h, int16_t arg_12ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_2bh;
| int16_t var_bp_2ch;
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_ech;
| int16_t var_f0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004fe34 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0004fe38 sub sp, 0xf4 |
0x0004fe3a strd r2, r3, [sp, 0xc] | __asm ("strd r2, r3, [var_10h]");
0x0004fe3e mov fp, r0 |
0x0004fe40 movs r4, 8 | r4 = 8;
0x0004fe42 ldr.w r2, [pc, 0x83c] |
0x0004fe46 ldr r0, [sp, 0x118] | r0 = *(arg_118h);
0x0004fe48 ldr.w r3, [pc, 0x838] | r3 = *(0x50684);
0x0004fe4c add r2, pc | r2 = 0xa04d2;
0x0004fe4e strd r1, r0, [sp, 0x14] | __asm ("strd r1, r0, [var_18h]");
0x0004fe52 ldr r3, [r2, r3] |
0x0004fe54 movs r2, 0 | r2 = 0;
0x0004fe56 ldr r3, [r3] | r3 = *(0xa04d2);
0x0004fe58 str r3, [sp, 0xec] | var_ech = r3;
0x0004fe5a mov.w r3, 0 | r3 = 0;
0x0004fe5e str r2, [sp, 0x68] | var_68h = r2;
0x0004fe60 ldr r2, [sp, 0x124] | r2 = *(arg_124h);
0x0004fe62 ldrb.w r3, [fp, 0x2e] | r3 = *(arg_2eh);
0x0004fe66 str r2, [sp, 0x2c] | var_2ch = r2;
0x0004fe68 ldr r2, [sp, 0x128] | r2 = *(arg_128h);
0x0004fe6a str r2, [sp, 0x28] | var_28h = r2;
0x0004fe6c ldr r2, [sp, 0x12c] | r2 = *(arg_12ch);
0x0004fe6e str r2, [sp, 0x20] | var_20h = r2;
0x0004fe70 cmp r3, 0 |
| if (r3 != 0) {
0x0004fe72 bne 0x4fee8 | goto label_36;
| }
0x0004fe74 ldrb.w r3, [fp, 0x2b] | r3 = *(arg_2bh);
0x0004fe78 cmp r3, 0 |
| if (r3 != 0) {
0x0004fe7a bne 0x4ff0a | goto label_37;
| }
0x0004fe7c ldr.w r0, [fp, 4] | r0 = var_74h;
0x0004fe80 movs r2, 1 | r2 = 1;
0x0004fe82 movs r3, 0xa | r3 = 0xa;
0x0004fe84 mov r1, r2 | r1 = r2;
0x0004fe86 ldr r4, [r0] | r4 = *(r0);
0x0004fe88 ldr r4, [r4, 0x38] | r4 = *((r4 + 0x38));
0x0004fe8a blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0004fe8c mov r4, r0 | r4 = r0;
0x0004fe8e cmp r0, 0 |
0x0004fe90 beq 0x4ff0a |
| while (r0 != 0) {
| label_6:
0x0004fe92 movs r3, 1 | r3 = 1;
0x0004fe94 str r3, [sp, 8] | var_8h = r3;
| label_0:
0x0004fe96 ldrb.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
| if (r3 != 0) {
0x0004fe9a cbz r3, 0x4febe |
0x0004fe9c ldrb.w r1, [fp, 0x2b] | r1 = *(arg_2bh);
| if (r1 == 0) {
0x0004fea0 cbnz r1, 0x4feb0 |
0x0004fea2 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x0004fea6 movs r3, 9 | r3 = 9;
0x0004fea8 movs r2, 1 | r2 = 1;
0x0004feaa ldr r5, [r0] | r5 = *(r0);
0x0004feac ldr r5, [r5, 0x38] | r5 = *((r5 + 0x38));
0x0004feae blx r5 | uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
| }
0x0004feb0 movs r3, 0 | r3 = 0;
0x0004feb2 strb.w r3, [fp, 0x2c] | *(arg_2ch) = r3;
0x0004feb4 adds r0, 0x2c | r0 += 0x2c;
0x0004feb6 str.w r3, [fp, 0x68] | __asm ("str.w r3, [arg_68h]");
0x0004feba strb.w r3, [fp, 0x2f] | *(arg_2fh) = r3;
| }
0x0004febe ldrb.w r3, [fp, 0x2d] | r3 = *(arg_2dh);
| if (r3 != 0) {
0x0004fec2 cbz r3, 0x4fee0 |
0x0004fec4 ldrb.w r3, [fp, 0x2b] | r3 = *(arg_2bh);
| if (r3 == 0) {
0x0004fec8 cbnz r3, 0x4feda |
0x0004feca ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x0004fece movs r2, 1 | r2 = 1;
0x0004fed0 mov r1, r2 | r1 = r2;
0x0004fed2 ldr r3, [r0] | r3 = *(r0);
0x0004fed4 ldr r5, [r3, 0x38] | r5 = *((r3 + 0x38));
0x0004fed6 movs r3, 9 | r3 = 9;
0x0004fed8 blx r5 | uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| }
0x0004feda movs r3, 0 | r3 = 0;
0x0004fedc strb.w r3, [fp, 0x2d] | *(arg_2dh) = r3;
| }
0x0004fee0 ldr r3, [sp, 8] | r3 = var_8h;
0x0004fee2 cmp r3, 0 |
0x0004fee4 it eq |
| if (r3 != 0) {
0x0004fee6 moveq r4, 5 | r4 = 5;
| }
| label_36:
0x0004fee8 ldr.w r2, [pc, 0x79c] |
0x0004feec ldr.w r3, [pc, 0x794] | r3 = *(0x50684);
0x0004fef0 add r2, pc | r2 = 0xa057c;
0x0004fef2 ldr r3, [r2, r3] | r3 = *(0xa057c);
0x0004fef4 ldr r2, [r3] | r2 = *(0xa057c);
0x0004fef6 ldr r3, [sp, 0xec] | r3 = var_ech;
0x0004fef8 eors r2, r3 | r2 ^= r3;
0x0004fefa mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004fefe bne.w 0x5043e | goto label_38;
| }
0x0004ff02 mov r0, r4 | r0 = r4;
0x0004ff04 add sp, 0xf4 |
0x0004ff06 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_37:
0x0004ff0a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004ff0c movs r5, 1 | r5 = 1;
0x0004ff0e strb.w r5, [fp, 0x2d] | *(arg_2dh) = r5;
0x0004ff12 cmp r3, 0 |
| if (r3 != 0) {
0x0004ff14 bne 0x4ff86 | goto label_39;
| }
| label_1:
0x0004ff16 str r5, [sp, 8] | var_8h = r5;
| label_7:
0x0004ff18 add r1, sp, 0x68 | r1 += var_68h;
0x0004ff1a mov r0, fp | r0 = fp;
0x0004ff1c bl 0x3d974 | fcn_0003d974 (r0, r1);
0x0004ff20 ldr r5, [sp, 0x68] | r5 = var_68h;
0x0004ff22 mov r4, r0 | r4 = r0;
0x0004ff24 cmp r5, 0 |
| if (r5 != 0) {
0x0004ff26 bne 0x4ffa2 | goto label_40;
| }
0x0004ff28 cmp r0, 0 |
0x0004ff2a bne 0x4fe92 |
| }
| label_2:
0x0004ff2c ldr.w r3, [fp, 0x44] | r3 = *(arg_44h);
0x0004ff30 str r3, [sp, 0x24] | var_24h = r3;
0x0004ff32 cmp r3, 0 |
| if (r3 == 0) {
0x0004ff34 beq.w 0x5003e | goto label_41;
| }
0x0004ff38 ldrh.w r3, [fp, 0x42] | r3 = *(arg_42h);
0x0004ff3c and r2, r3, 0xfe00 | r2 = r3 & 0xfe00;
0x0004ff40 lsls r3, r3, 0x10 | r3 <<= 0x10;
0x0004ff42 and r3, r3, 0x10000 | r3 &= 0x10000;
0x0004ff46 orrs r3, r2 | r3 |= r2;
0x0004ff48 ldr r2, [sp, 0x120] | r2 = *(arg_8h);
0x0004ff4a str r3, [sp, 0x48] | var_48h = r3;
0x0004ff4c cmp r2, r3 |
| if (r2 == r3) {
0x0004ff4e beq 0x4ffc4 | goto label_42;
| }
0x0004ff50 blx 0x7f8c | fcn_00007f8c ();
0x0004ff54 ldr.w r2, [pc, 0x734] | r2 = *(0x0005068c);
0x0004ff58 adds r0, 0x14 | r0 += 0x14;
0x0004ff5a ldr.w r1, [pc, 0x734] | r1 = *(0x00050690);
0x0004ff5e movw r3, 0xfaad | r3 = 0xfaad;
0x0004ff62 str r0, [sp] | *(sp) = r0;
0x0004ff64 movs r4, 0xb | r4 = 0xb;
0x0004ff66 add r2, pc | r2 += pc;
0x0004ff68 movs r0, 0xb | r0 = 0xb;
0x0004ff6a add r1, pc | r1 += pc;
0x0004ff6c blx 0x8474 | fcn_00008474 ();
0x0004ff70 movs r3, 1 | r3 = 1;
0x0004ff72 str r3, [sp, 8] | var_8h = r3;
| label_5:
0x0004ff74 cmp r5, 0 |
| if (r5 == 0) {
0x0004ff76 beq 0x4fe96 | goto label_0;
| }
| label_3:
0x0004ff78 movs r2, 0x30 | r2 = 0x30;
0x0004ff7a movs r1, 0 | r1 = 0;
0x0004ff7c add.w r0, fp, 0x34 | r0 += arg_34h;
0x0004ff80 blx 0x8264 | fcn_00008264 ();
0x0004ff84 b 0x4fe96 | goto label_0;
| label_39:
0x0004ff86 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0004ff88 movs r3, 0 | r3 = 0;
0x0004ff8a ldr r1, [sp, 0x10] | r1 = var_10h;
0x0004ff8c mov r0, fp | r0 = fp;
0x0004ff8e str r5, [sp] | *(sp) = r5;
0x0004ff90 bl 0x13978 | r0 = fcn_00013978 (r0, r1, r2, r3, r4);
0x0004ff94 mov r4, r0 | r4 = r0;
0x0004ff96 cmp r0, 0 |
| if (r0 != 0) {
0x0004ff98 bne.w 0x500cc | goto label_43;
| }
0x0004ff9c strb.w r5, [fp, 0x2c] | var_bp_2ch = r5;
0x0004ffa0 b 0x4ff16 | goto label_1;
| label_40:
0x0004ffa2 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x0004ffa6 ldr r3, [r0] | r3 = *(r0);
0x0004ffa8 ldr r2, [r3] | r2 = *(r3);
0x0004ffaa cmp r2, 2 |
| if (r2 > 2) {
0x0004ffac ble 0x4ffba |
0x0004ffae movs r2, 0 | r2 = 0;
0x0004ffb0 str r2, [sp] | *(sp) = r2;
0x0004ffb2 movs r2, 0 | r2 = 0;
0x0004ffb4 ldr r1, [r3, 0x48] | r1 = *((r3 + 0x48));
0x0004ffb6 movs r3, 0 | r3 = 0;
0x0004ffb8 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
| }
0x0004ffba cmp r4, 0 |
| if (r4 == 0) {
0x0004ffbc beq 0x4ff2c | goto label_2;
| }
0x0004ffbe movs r3, 1 | r3 = 1;
0x0004ffc0 str r3, [sp, 8] | var_8h = r3;
0x0004ffc2 b 0x4ff78 | goto label_3;
| label_42:
0x0004ffc4 ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x0004ffc8 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0004ffca ldr r2, [r3] | r2 = *(r3);
0x0004ffcc ldr r3, [r2, 0x60] | r3 = *((r2 + 0x60));
0x0004ffce str r2, [sp, 0x54] | var_54h = r2;
0x0004ffd0 cmp r1, r3 |
| if (r1 < r3) {
0x0004ffd2 bls.w 0x50438 | goto label_44;
| }
0x0004ffd6 ldr.w r3, [fp, 0x48] | r3 = *(arg_48h);
0x0004ffda add.w r6, r2, 0x68 | r6 = r2 + 0x68;
0x0004ffde mov sb, r1 | sb = r1;
0x0004ffe0 movs r5, 2 | r5 = 2;
0x0004ffe2 movs r4, 0 | r4 = 0;
0x0004ffe4 mov.w r8, 1 | r8 = 1;
0x0004ffe8 str r3, [sp, 0x40] | var_40h = r3;
0x0004ffea ldr r7, [r6] | r7 = *(r6);
0x0004ffec cmp r7, sb |
| if (r7 <= sb) {
0x0004ffee blo 0x4fffe | goto label_45;
| }
| do {
| label_4:
0x0004fff0 cmp r5, 5 |
| if (r5 == 5) {
0x0004fff2 beq 0x50074 | goto label_46;
| }
| label_22:
0x0004fff4 ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x0004fff6 adds r6, 4 | r6 += 4;
0x0004fff8 adds r5, 1 | r5++;
0x0004fffa cmp r7, sb |
0x0004fffc bhs 0x4fff0 |
| } while (r7 >= sb);
| label_45:
0x0004fffe add.w sl, r5, 2 | sl = r5 + 2;
0x00050002 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00050004 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00050006 mov r3, sl | r3 = sl;
0x00050008 mov r0, fp | r0 = fp;
0x0005000a str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0005000e bl 0x13978 | r0 = fcn_00013978 (r0, r1, r2, r3, r4);
0x00050012 mov r4, r0 | r4 = r0;
0x00050014 cmp r0, 0 |
| if (r0 != 0) {
0x00050016 bne 0x500be | goto label_47;
| }
0x00050018 cmp r5, 2 |
| if (r5 == 2) {
0x0005001a beq.w 0x50382 | goto label_48;
| }
0x0005001e mov.w r2, -1 | r2 = -1;
0x00050022 str r2, [r6] | *(r6) = r2;
0x00050024 movs r0, r0 |
0x00050026 movs r0, r0 |
0x00050028 cmp r2, 0 |
| if (r2 != 0) {
0x0005002a bne 0x4fff0 | goto label_4;
| }
| label_21:
0x0005002c ldr.w r0, [fp, 4] | r0 = var_74h;
0x00050030 mov r1, sl | r1 = sl;
0x00050032 movs r3, 9 | r3 = 9;
0x00050034 movs r2, 1 | r2 = 1;
0x00050036 ldr r7, [r0] | r7 = *(r0);
0x00050038 ldr r7, [r7, 0x38] | r7 = *((r7 + 0x38));
0x0005003a blx r7 | uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005003c b 0x4fff0 | goto label_4;
| label_41:
0x0005003e ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x00050042 ldr r3, [r3] | r3 = *(r3);
0x00050044 ldr r2, [r3, 0x60] | r2 = *((r3 + 0x60));
0x00050046 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00050048 cmp r2, 0 |
| if (r2 != 0) {
0x0005004a bne 0x500dc | goto label_49;
| }
0x0005004c str r2, [sp, 0x34] | var_34h = r2;
| label_12:
0x0005004e movs r4, 0 | r4 = 0;
0x00050050 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00050052 blx 0x84f8 | fcn_000084f8 ();
| do {
| label_10:
0x00050056 ldr r2, [sp, 0x28] | r2 = var_28h;
| if (r2 != 0) {
0x00050058 cbz r2, 0x50060 |
0x0005005a ldr.w r3, [fp, 0x44] | r3 = *(arg_44h);
0x0005005e str r3, [r2] | *(r2) = r3;
| }
0x00050060 ldr r3, [sp, 0x20] | r3 = var_20h;
| if (r3 != 0) {
0x00050062 cbz r3, 0x50070 |
0x00050064 ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x00050068 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005006a ldr r3, [r3] | r3 = *(r3);
0x0005006c ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0005006e str r3, [r2] | *(r2) = r3;
| }
| label_9:
0x00050070 ldr r5, [sp, 0x68] | r5 = var_68h;
0x00050072 b 0x4ff74 | goto label_5;
| label_46:
0x00050074 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00050076 str.w sb, [sp, 0x24] | __asm ("str.w sb, [var_24h]");
0x0005007a ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0005007c cmp r3, sb |
0x0005007e itt hs |
| if (r3 < sb) {
0x00050080 movhs r3, 0 | r3 = 0;
| }
| if (r3 < sb) {
0x00050082 strhs r3, [sp, 0x34] | var_34h = r3;
| }
| if (r3 <= sb) {
0x00050084 blo 0x50166 | goto label_50;
| }
| label_30:
0x00050086 cmp r4, 5 |
| if (r4 == 5) {
0x00050088 beq 0x5015e | goto label_16;
| }
0x0005008a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005008c clz r5, r4 | r5 &= r4;
0x00050090 lsrs r5, r5, 5 | r5 >>= 5;
0x00050092 cmp r3, 0 |
0x00050094 ite eq |
| if (r3 != 0) {
0x00050096 moveq r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x00050098 andne r3, r5, 1 | r3 = r5 & 1;
| }
0x0005009c cmp r3, 0 |
| if (r3 == 0) {
0x0005009e beq.w 0x503f2 | goto label_51;
| }
| label_11:
0x000500a2 ldr r3, [sp, 0x54] | r3 = var_54h;
0x000500a4 ldr r2, [r3, 0x60] | r2 = *((r3 + 0x60));
0x000500a6 ldr.w r3, [fp, 0x44] | r3 = *(arg_44h);
0x000500aa cmp r2, r3 |
0x000500ac ittt lo |
| if (r2 >= r3) {
0x000500ae movlo r3, 1 | r3 = 1;
| }
| if (r2 >= r3) {
0x000500b0 movlo r4, 5 | r4 = 5;
| }
| if (r2 >= r3) {
0x000500b2 strlo r3, [sp, 8] | var_8h = r3;
| }
| if (r2 >= r3) {
0x000500b4 bhs 0x500e2 | goto label_52;
| }
| label_8:
0x000500b6 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000500b8 blx 0x84f8 | fcn_000084f8 ();
0x000500bc b 0x50056 |
| } while (1);
| label_47:
0x000500be cmp r0, 5 |
| if (r0 != 5) {
0x000500c0 bne.w 0x503ba | goto label_53;
| }
0x000500c4 movs r3, 0 | r3 = 0;
0x000500c6 mov sb, r7 | sb = r7;
0x000500c8 str r3, [sp, 0x10] | var_10h = r3;
0x000500ca b 0x4fff0 | goto label_4;
| label_43:
0x000500cc cmp r0, 5 |
| if (r0 != 5) {
0x000500ce bne.w 0x4fe92 | goto label_6;
| }
0x000500d2 movs r3, 0 | r3 = 0;
0x000500d4 str r3, [sp, 0x10] | var_10h = r3;
0x000500d6 strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [var_ch]");
0x000500da b 0x4ff18 | goto label_7;
| label_49:
0x000500dc ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x000500de ldr r3, [sp, 0x24] | r3 = var_24h;
0x000500e0 str r3, [sp, 0x34] | var_34h = r3;
| label_52:
0x000500e2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000500e4 cmp r3, 1 |
0x000500e6 it le |
| if (r3 <= 1) {
0x000500e8 movle r4, 0 | r4 = 0;
| goto label_54;
| }
| if (r3 <= 1) {
| label_54:
0x000500ea ble 0x500b6 | goto label_8;
| }
0x000500ec add r1, sp, 0x78 | r1 += var_78h;
0x000500ee movs r0, 4 | r0 = 4;
0x000500f0 blx 0x819c | fcn_0000819c ();
0x000500f4 movs r3, 4 | r3 = 4;
0x000500f6 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000500f8 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000500fa mov r0, fp | r0 = fp;
0x000500fc str r3, [sp] | *(sp) = r3;
0x000500fe bl 0x13978 | r0 = fcn_00013978 (r0, r1, r2, r3, r4);
0x00050102 mov r4, r0 | r4 = r0;
0x00050104 cmp r0, 0 |
| if (r0 == 0) {
0x00050106 beq.w 0x50392 | goto label_55;
| }
0x0005010a sub.w r5, r0, 5 | r5 = r0 - 5;
0x0005010e movs r3, 1 | r3 = 1;
0x00050110 clz r5, r5 | r5 &= r5;
0x00050114 str r3, [sp, 8] | var_8h = r3;
0x00050116 lsrs r5, r5, 5 | r5 >>= 5;
| label_17:
0x00050118 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005011a blx 0x84f8 | fcn_000084f8 ();
0x0005011e cmp r5, 0 |
| if (r5 == 0) {
0x00050120 beq 0x50070 | goto label_9;
| }
0x00050122 b 0x50056 | goto label_10;
| label_27:
0x00050124 ldr r4, [sp, 0x38] | r4 = var_38h;
0x00050126 mov.w r3, -1 | r3 = -1;
0x0005012a ldr r2, [sp, 0x34] | r2 = var_34h;
0x0005012c str r3, [r2] | *(r2) = r3;
| label_34:
0x0005012e ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00050132 ldr r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x00050134 cbz r3, 0x5013e |
0x00050136 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x00050138 movs r2, 0 | r2 = 0;
0x0005013a movs r1, 0x25 | r1 = 0x25;
0x0005013c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
| }
0x0005013e ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x00050142 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00050144 ldr r3, [r3] | r3 = *(r3);
0x00050146 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00050148 cmp r3, r2 |
| if (r3 == r2) {
0x0005014a beq.w 0x50618 | goto label_56;
| }
| label_32:
0x0005014e ldr r3, [sp, 0x54] | r3 = var_54h;
0x00050150 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00050152 str r2, [r3, 0x60] | *((r3 + 0x60)) = r2;
0x00050154 ldrb.w r3, [fp, 0x2b] | r3 = *(arg_2bh);
0x00050158 cmp r3, 0 |
| if (r3 == 0) {
0x0005015a beq.w 0x505f6 | goto label_57;
| }
| label_16:
0x0005015e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00050160 cmp r3, 0 |
| if (r3 != 0) {
0x00050162 bne 0x500a2 | goto label_11;
| }
0x00050164 b 0x5004e | goto label_12;
| label_50:
0x00050166 ldr.w r7, [fp, 0x44] | r7 = *(arg_44h);
0x0005016a movs r1, 0 | r1 = 0;
0x0005016c ldr r3, [sp, 0x54] | r3 = var_54h;
0x0005016e add.w r6, r7, 0xe | r6 = r7 + 0xe;
0x00050172 str r7, [sp, 0x64] | var_64h = r7;
0x00050174 ldr r5, [r3, 0x60] | r5 = *((r3 + 0x60));
0x00050176 add.w r3, r7, 0x21 | r3 = r7 + 0x21;
0x0005017a lsrs r2, r3, 0xc | r2 = r3 >> 0xc;
0x0005017c add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x00050180 adds r4, r2, 1 | r4 = r2 + 1;
0x00050182 str r2, [sp, 0x50] | var_50h = r2;
0x00050184 add.w r6, r6, r3, lsl 1 | r6 += (r3 << 1);
0x00050188 lsls r6, r6, 1 | r6 <<= 1;
0x0005018a mov r0, r6 | r0 = r6;
0x0005018c blx 0x7f18 | fcn_00007f18 ();
0x00050190 str r0, [sp, 0x34] | var_34h = r0;
0x00050192 cmp r0, 0 |
| if (r0 == 0) {
0x00050194 beq.w 0x503b8 | goto label_58;
| }
0x00050198 mov r2, r6 | r2 = r6;
0x0005019a movs r1, 0 | r1 = 0;
0x0005019c blx 0x8264 | fcn_00008264 ();
0x000501a0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000501a2 cmp.w r7, 0x1000 |
0x000501a6 mov r0, r7 | r0 = r7;
0x000501a8 it hs |
| if (r7 < 0x1000) {
0x000501aa movhs r0, 0x1000 | r0 = 0x1000;
| }
0x000501ae lsls r0, r0, 1 | r0 <<= 1;
0x000501b0 movs r1, 0 | r1 = 0;
0x000501b2 str r4, [r3, 4] | *((r3 + 4)) = r4;
0x000501b4 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000501b8 mov sl, r0 | sl = r0;
0x000501ba cmp r0, 0 |
| if (r0 == 0) {
0x000501bc beq.w 0x503c8 | goto label_59;
| }
0x000501c0 adds r5, 0x22 | r5 += 0x22;
0x000501c2 lsrs r3, r5, 0xc | r3 = r5 >> 0xc;
0x000501c4 cmp r3, r4 |
0x000501c6 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 >= r4) {
0x000501c8 bge.w 0x50442 | goto label_60;
| }
0x000501cc ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000501ce ldr r1, [sp, 0x34] | r1 = var_34h;
0x000501d0 str.w fp, [sp, 0x3c] | __asm ("str.w fp, [var_3ch]");
0x000501d4 add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x000501d8 add.w r3, r1, r3, lsl 2 | r3 = r1 + (r3 << 2);
0x000501dc str r3, [sp, 0x4c] | var_4ch = r3;
0x000501de lsls r3, r2, 0xc | r3 = r2 << 0xc;
0x000501e0 subs r3, 0x22 | r3 -= 0x22;
0x000501e2 str r3, [sp, 0x44] | var_44h = r3;
0x000501e4 add r3, sp, 0x7c | r3 += var_7ch;
0x000501e6 str r3, [sp, 0x60] | var_60h = r3;
| label_15:
0x000501e8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000501ea ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000501ec ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000501ee cmp r2, r3 |
| if (r2 >= r3) {
0x000501f0 bge.w 0x50334 | goto label_61;
| }
0x000501f4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000501f6 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000501f8 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x000501fa ldr.w r7, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r7 = *((r3 + offset_0));
0x000501fe str r7, [sp, 0x7c] | var_7ch = r7;
0x00050200 cmp r7, 0 |
| if (r7 == 0) {
0x00050202 beq.w 0x50334 | goto label_61;
| }
| label_20:
0x00050206 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00050208 add.w r2, r7, 0x4000 | r2 = r7 + 0x4000;
0x0005020c str r2, [sp, 0x78] | var_78h = r2;
0x0005020e cmp r3, 0 |
| if (r3 != 0) {
0x00050210 bne.w 0x50370 | goto label_62;
| }
0x00050214 movs r1, 1 | r1 = 1;
0x00050216 adds r7, 0x88 | r7 += 0x88;
0x00050218 str r1, [sp, 0x5c] | var_5ch = r1;
0x0005021a mov r1, r3 | r1 = r3;
0x0005021c str r7, [sp, 0x7c] | var_7ch = r7;
| label_18:
0x0005021e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00050220 ldr r4, [sp, 0x50] | r4 = var_50h;
0x00050222 str r1, [sp, 0x80] | var_80h = r1;
0x00050224 cmp r0, r4 |
0x00050226 iteet eq |
| if (r0 != r4) {
0x00050228 ldreq r2, [sp, 0x64] | r2 = var_64h;
| }
| if (r0 == r4) {
0x0005022a subne r2, r2, r7 | r2 -= r7;
| }
| if (r0 != r4) {
0x0005022c asrne r2, r2, 2 | __asm ("asrne r2, r2, 2");
| }
| if (r0 != r4) {
0x0005022e subeq r2, r2, r1 | r2 -= r1;
| }
0x00050230 ldr r1, [sp, 0x34] | r1 = var_34h;
0x00050232 str r2, [sp, 0x30] | var_30h = r2;
0x00050234 ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x00050236 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x0005023a add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0005023e adds r3, 8 | r3 += 8;
0x00050240 adds r3, r1, r3 | r3 = r1 + r3;
0x00050242 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00050244 str r3, [sp, 0x58] | var_58h = r3;
0x00050246 cmp r1, 0 |
| if (r1 <= 0) {
0x00050248 ble.w 0x503da | goto label_63;
| }
0x0005024c subs r2, r3, 2 | r2 = r3 - 2;
0x0005024e movs r3, 0 | r3 = 0;
| do {
0x00050250 strh r3, [r2, 2]! | *((r2 += 2)) = r3;
0x00050254 adds r3, 1 | r3++;
0x00050256 cmp r3, r1 |
0x00050258 bne 0x50250 |
| } while (r3 != r1);
0x0005025a add r3, sp, 0x84 | r3 += var_84h;
0x0005025c movs r2, 0x68 | r2 = 0x68;
0x0005025e mov r0, r3 | r0 = r3;
0x00050260 movs r1, 0 | r1 = 0;
0x00050262 add.w fp, sp, 0x70 |
0x00050266 str r3, [sp, 0x38] | var_38h = r3;
0x00050268 blx 0x8264 | fcn_00008264 ();
0x0005026c ldr.w sb, [sp, 0x58] | sb = var_58h;
0x00050270 mov r3, fp | r3 = fp;
0x00050272 movs r6, 0 | r6 = 0;
0x00050274 mov fp, r7 |
0x00050276 add.w r8, sp, 0x6c | r8 += var_6ch;
0x0005027a mov r7, sl | r7 = sl;
0x0005027c mov sl, r3 | sl = r3;
| label_13:
0x0005027e movs r3, 1 | r3 = 1;
0x00050280 mov r1, sb | r1 = sb;
0x00050282 ands.w r5, r6, r3 | r5 = r6 & r3;
0x00050286 strd r3, sb, [sp, 0x6c] | __asm ("strd r3, sb, [var_70h]");
| if (r5 == r6) {
0x0005028a beq 0x5037a | goto label_64;
| }
0x0005028c ldr r4, [sp, 0x38] | r4 = var_38h;
0x0005028e movs r5, 0 | r5 = 0;
| do {
0x00050290 strd r8, r7, [sp] | __asm ("strd r8, r7, [sp]");
0x00050294 adds r5, 1 | r5++;
0x00050296 ldrd r2, r1, [r4] | __asm ("ldrd r2, r1, [r4]");
0x0005029a mov r3, sl | r3 = sl;
0x0005029c mov r0, fp | r0 = fp;
0x0005029e adds r4, 8 | r4 += 8;
0x000502a0 bl 0xc7f4 | fcn_0000c7f4 (r0, r1, r2, r3, r4, r5);
0x000502a4 asr.w r2, r6, r5 | r2 = r6 >> r5;
0x000502a8 lsls r1, r2, 0x1f | r1 = r2 << 0x1f;
0x000502aa bmi 0x50290 |
| } while (r1 < r2);
0x000502ac ldrd r4, r1, [sp, 0x6c] | __asm ("ldrd r4, r1, [var_70h]");
| label_19:
0x000502b0 add r3, sp, 0xf0 | r3 += var_f0h;
0x000502b2 adds r6, 1 | r6++;
0x000502b4 add.w r2, r3, r5, lsl 3 | r2 = r3 + (r5 << 3);
0x000502b8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000502ba add.w sb, sb, 2 | sb += 2;
0x000502be strd r4, r1, [r2, -0x6c] | __asm ("strd r4, r1, [var_80h]");
0x000502c2 cmp r6, r3 |
| if (r6 != r3) {
0x000502c4 bne 0x5027e | goto label_13;
| }
0x000502c6 adds r5, 1 | r5++;
0x000502c8 mov sl, r7 | sl = r7;
0x000502ca cmp r5, 0xc |
0x000502cc mov r7, fp | r7 = fp;
0x000502ce mov r0, r4 | r0 = r4;
| if (r5 > 0xc) {
0x000502d0 bhi 0x50308 | goto label_65;
| }
| label_24:
0x000502d2 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000502d4 add.w r8, sp, 0x70 | r8 += var_70h;
0x000502d8 ldr.w sb, [sp, 0x30] | sb = var_30h;
0x000502dc add r6, sp, 0x6c | r6 += var_6ch;
0x000502de add.w r4, r3, r5, lsl 3 | r4 = r3 + (r5 << 3);
0x000502e2 b 0x502ec |
| while (r2 >= r2) {
| label_14:
0x000502e4 adds r5, 1 | r5++;
0x000502e6 adds r4, 8 | r4 += 8;
0x000502e8 cmp r5, 0xd |
| if (r5 == 0xd) {
0x000502ea beq 0x50306 | goto label_66;
| }
0x000502ec asr.w r2, sb, r5 | r2 = sb >> r5;
0x000502f0 lsls r2, r2, 0x1f | r2 <<= 0x1f;
0x000502f2 bpl 0x502e4 |
| }
0x000502f4 strd r6, sl, [sp] | __asm ("strd r6, sl, [sp]");
0x000502f8 mov r3, r8 | r3 = r8;
0x000502fa ldrd r2, r1, [r4] | __asm ("ldrd r2, r1, [r4]");
0x000502fe mov r0, r7 | r0 = r7;
0x00050300 bl 0xc7f4 | fcn_0000c7f4 (r0, r1, r2, r3, r4, r5);
0x00050304 b 0x502e4 | goto label_14;
| label_66:
0x00050306 ldr r0, [sp, 0x6c] | r0 = var_6ch;
| label_65:
0x00050308 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0005030a ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0005030c ldr r1, [sp, 0x50] | r1 = var_50h;
0x0005030e strd r0, r2, [r3, 0x14] | __asm ("strd r0, r2, [r3, 0x14]");
0x00050312 ldr r2, [sp, 0x58] | r2 = var_58h;
0x00050314 strd r2, r7, [r3, 0xc] | __asm ("strd r2, r7, [r3, 0xc]");
0x00050318 adds r3, 0x14 | r3 += 0x14;
0x0005031a ldr r2, [sp, 0x44] | r2 = var_44h;
0x0005031c str r3, [sp, 0x4c] | var_4ch = r3;
0x0005031e add.w r2, r2, 0x1000 | r2 += 0x1000;
0x00050322 str r2, [sp, 0x44] | var_44h = r2;
0x00050324 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00050326 cmp r2, r1 |
0x00050328 add.w r3, r2, 1 | r3 = r2 + 1;
| if (r2 >= r1) {
0x0005032c bge.w 0x50672 | goto label_67;
| }
0x00050330 str r3, [sp, 0x1c] | var_1ch = r3;
0x00050332 b 0x501e8 | goto label_15;
| label_61:
0x00050334 ldr r2, [sp, 0x60] | r2 = var_60h;
0x00050336 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00050338 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0005033a bl 0x1ed74 | r0 = fcn_0001ed74 (r0, r1, r2);
| if (r0 == 0) {
0x0005033e cbz r0, 0x5037e | goto label_68;
| }
0x00050340 mov r4, r0 | r4 = r0;
0x00050342 mov r0, sl | r0 = sl;
0x00050344 ldr.w fp, [sp, 0x3c] | fp = var_3ch;
0x00050348 blx 0x84f8 | fcn_000084f8 ();
0x0005034c ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005034e blx 0x84f8 | fcn_000084f8 ();
0x00050352 movs r3, 0 | r3 = 0;
0x00050354 str r3, [sp, 0x34] | var_34h = r3;
| label_26:
0x00050356 cmp r4, 5 |
| if (r4 == 5) {
0x00050358 beq.w 0x5015e | goto label_16;
| }
| label_23:
0x0005035c ldr r3, [sp, 8] | r3 = var_8h;
0x0005035e cmp r4, 0 |
0x00050360 ite eq |
| if (r4 != 0) {
0x00050362 moveq r5, 1 | r5 = 1;
| }
| if (r4 == 0) {
0x00050364 movne r5, 0 | r5 = 0;
| }
0x00050366 it ne |
| if (r4 == 0) {
0x00050368 orrne r3, r3, 1 | r3 |= 1;
| }
0x0005036c str r3, [sp, 8] | var_8h = r3;
0x0005036e b 0x50118 | goto label_17;
| label_62:
0x00050370 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00050372 adds r0, r1, 1 | r0 = r1 + 1;
0x00050374 lsls r3, r1, 1 | r3 = r1 << 1;
0x00050376 str r0, [sp, 0x5c] | var_5ch = r0;
0x00050378 b 0x5021e | goto label_18;
| label_64:
0x0005037a movs r4, 1 | r4 = 1;
0x0005037c b 0x502b0 | goto label_19;
| label_68:
0x0005037e ldr r7, [sp, 0x7c] | r7 = var_7ch;
0x00050380 b 0x50206 | goto label_20;
| label_48:
0x00050382 str.w sb, [r6] | __asm ("str.w sb, [r6]");
0x00050386 ldrb.w r2, [fp, 0x2b] | r2 = var_2bh;
0x0005038a cmp r2, 0 |
| if (r2 == 0) {
0x0005038c beq.w 0x5002c | goto label_21;
| }
0x00050390 b 0x4fff4 | goto label_22;
| label_55:
0x00050392 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00050394 cmp r3, 3 |
0x00050396 it ne |
| if (r3 == 3) {
0x00050398 movne r5, 1 | r5 = 1;
| }
| if (r3 == 3) {
0x0005039a beq 0x50400 | goto label_69;
| }
| label_25:
0x0005039c ldrb.w r3, [fp, 0x2b] | r3 = *(arg_2bh);
0x000503a0 cmp r3, 0 |
| if (r3 != 0) {
0x000503a2 bne.w 0x50118 | goto label_17;
| }
0x000503a6 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x000503aa movs r2, 4 | r2 = 4;
0x000503ac movs r3, 9 | r3 = 9;
0x000503ae mov r1, r2 | r1 = r2;
0x000503b0 ldr r6, [r0] | r6 = *(r0);
0x000503b2 ldr r6, [r6, 0x38] | r6 = *((r6 + 0x38));
0x000503b4 blx r6 | uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000503b6 b 0x50118 | goto label_17;
| label_58:
0x000503b8 movs r4, 7 | r4 = 7;
| label_53:
0x000503ba movs r3, 1 | r3 = 1;
0x000503bc movs r0, 0 | r0 = 0;
0x000503be str r3, [sp, 8] | var_8h = r3;
0x000503c0 blx 0x84f8 | fcn_000084f8 ();
0x000503c4 ldr r5, [sp, 0x68] | r5 = var_68h;
0x000503c6 b 0x4ff74 | goto label_5;
| label_59:
0x000503c8 blx 0x84f8 | fcn_000084f8 ();
0x000503cc ldr r0, [sp, 0x34] | r0 = var_34h;
0x000503ce movs r4, 7 | r4 = 7;
0x000503d0 blx 0x84f8 | fcn_000084f8 ();
0x000503d4 str.w sl, [sp, 0x34] | __asm ("str.w sl, [var_34h]");
0x000503d8 b 0x5035c | goto label_23;
| label_63:
0x000503da movs r3, 0 | r3 = 0;
0x000503dc movs r2, 0x68 | r2 = 0x68;
0x000503de strd r3, r3, [sp, 0x6c] | __asm ("strd r3, r3, [var_70h]");
0x000503e2 add r3, sp, 0x84 | r3 += var_84h;
0x000503e4 movs r1, 0 | r1 = 0;
0x000503e6 mov r0, r3 | r0 = r3;
0x000503e8 str r3, [sp, 0x38] | var_38h = r3;
0x000503ea movs r5, 1 | r5 = 1;
0x000503ec blx 0x8264 | fcn_00008264 ();
0x000503f0 b 0x502d2 | goto label_24;
| label_51:
0x000503f2 ldr r3, [sp, 8] | r3 = var_8h;
0x000503f4 cmp r4, 0 |
0x000503f6 it ne |
| if (r4 == 0) {
0x000503f8 orrne r3, r3, 1 | r3 |= 1;
| }
0x000503fc str r3, [sp, 8] | var_8h = r3;
0x000503fe b 0x50118 | goto label_17;
| label_69:
0x00050400 ldr r1, [sp, 0x78] | r1 = var_78h;
0x00050402 mov r0, fp | r0 = fp;
0x00050404 bl 0x17490 | fcn_00017490 (r0, r1);
0x00050408 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x0005040c movs r2, 0 | r2 = 0;
0x0005040e ldr r3, [r0] | r3 = *(r0);
0x00050410 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x00050412 movs r3, 0 | r3 = 0;
0x00050414 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00050416 ldr r3, [sp, 8] | r3 = var_8h;
0x00050418 sub.w r5, r0, 5 | r5 = r0 - 5;
0x0005041c clz r5, r5 | r5 &= r5;
0x00050420 cmp r0, 0 |
0x00050422 lsr.w r5, r5, 5 | r5 >>= 5;
0x00050426 mov r4, r0 | r4 = r0;
0x00050428 it ne |
| if (r0 == 0) {
0x0005042a orrne r3, r3, 1 | r3 |= 1;
| }
0x0005042e it eq |
| if (r0 != 0) {
0x00050430 orreq r5, r5, 1 | r5 |= 1;
| }
0x00050434 str r3, [sp, 8] | var_8h = r3;
0x00050436 b 0x5039c | goto label_25;
| label_44:
0x00050438 movs r3, 0 | r3 = 0;
0x0005043a str r3, [sp, 0x34] | var_34h = r3;
0x0005043c b 0x5015e | goto label_16;
| label_38:
0x0005043e blx 0x7e8c | fcn_00007e8c ();
| label_60:
0x00050442 blx 0x84f8 | fcn_000084f8 ();
| label_35:
0x00050446 movs r3, 1 | r3 = 1;
0x00050448 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0005044a str r3, [sp] | *(sp) = r3;
0x0005044c mov r0, fp | r0 = fp;
0x0005044e ldr r1, [sp, 0x10] | r1 = var_10h;
0x00050450 movs r3, 3 | r3 = 3;
0x00050452 bl 0x13978 | r0 = fcn_00013978 (r0, r1, r2, r3, r4);
0x00050456 mov r4, r0 | r4 = r0;
0x00050458 cmp r0, 0 |
| if (r0 != 0) {
0x0005045a bne.w 0x50356 | goto label_26;
| }
0x0005045e ldr r3, [sp, 0x11c] | r3 = *(arg_4h);
0x00050460 ldr r2, [sp, 0x54] | r2 = var_54h;
0x00050462 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00050464 ubfx r3, r3, 2, 2 | r3 = (r3 >> 2) & ((1 << 2) - 1);
0x00050468 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x0005046c ldr.w sl, [r2, 0x60] | sl = *((r2 + 0x60));
0x00050470 str r3, [sp, 0x30] | var_30h = r3;
0x00050472 str.w r1, [r2, 0x80] | __asm ("str.w r1, [r2, 0x80]");
| if (r3 != 0) {
0x00050476 cbz r3, 0x50488 |
0x00050478 ldr r3, [r0] | r3 = *(r0);
0x0005047a ldr r1, [sp, 0x30] | r1 = var_30h;
0x0005047c ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0005047e blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x00050480 mov r4, r0 | r4 = r0;
0x00050482 cmp r0, 0 |
| if (r0 != 0) {
0x00050484 bne.w 0x505dc | goto label_31;
| }
| }
0x00050488 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0005048a ldr r1, [sp, 0x48] | r1 = var_48h;
0x0005048c ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00050490 umull r1, r2, r2, r1 | r1:r2 = r2 * r1;
0x00050494 ldr r3, [r0] | r3 = *(r0);
0x00050496 strd r1, r2, [sp, 0x70] | __asm ("strd r1, r2, [var_70h]");
| if (r3 != 0) {
0x0005049a cbz r3, 0x504aa |
0x0005049c ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x0005049e movs r2, 0 | r2 = 0;
0x000504a0 movs r1, 0x27 | r1 = 0x27;
0x000504a2 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x000504a4 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x000504a8 ldr r3, [r0] | r3 = *(r0);
| }
0x000504aa ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000504ac add r1, sp, 0x78 | r1 += var_78h;
0x000504ae blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000504b0 mov r4, r0 | r4 = r0;
0x000504b2 cmp r0, 0 |
| if (r0 != 0) {
0x000504b4 bne.w 0x505dc | goto label_31;
| }
0x000504b8 ldr r2, [sp, 0x78] | r2 = var_78h;
0x000504ba ldr r5, [sp, 0x70] | r5 = var_70h;
0x000504bc ldr r1, [sp, 0x7c] | r1 = var_7ch;
0x000504be ldr r0, [sp, 0x74] | r0 = var_74h;
0x000504c0 cmp r2, r5 |
0x000504c2 sbcs.w r3, r1, r0 | __asm ("sbcs.w r3, r1, r0");
| if (r2 < r5) {
0x000504c6 bge 0x504f8 |
0x000504c8 ldr.w r3, [fp, 0x44] | r3 = *(arg_44h);
0x000504cc adds.w r2, r2, 0x10000 | r2 += 0x10000;
0x000504d0 ldr r6, [sp, 0x48] | r6 = var_48h;
0x000504d2 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x000504d6 umull r3, r6, r3, r6 | r3:r6 = r3 * r6;
0x000504da adds r3, r3, r2 | r3 += r2;
0x000504dc adc.w r6, r6, r1 | __asm ("adc.w r6, r6, r1");
0x000504e0 cmp r3, r5 |
0x000504e2 sbcs r6, r0 | __asm ("sbcs r6, r0");
| if (r3 < r5) {
0x000504e4 blt.w 0x50654 | goto label_70;
| }
0x000504e8 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x000504ec ldr r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x000504ee cbz r3, 0x504f8 | goto label_71;
| }
0x000504f0 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x000504f2 add r2, sp, 0x70 | r2 += var_70h;
0x000504f4 movs r1, 5 | r1 = 5;
0x000504f6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
| }
| label_71:
0x000504f8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000504fa movs r6, 0 | r6 = 0;
0x000504fc str r4, [sp, 0x38] | var_38h = r4;
0x000504fe ldr r4, [sp, 0x34] | r4 = var_34h;
0x00050500 adds r3, 0x18 | r3 += 0x18;
0x00050502 str r3, [sp, 0x1c] | var_1ch = r3;
| label_29:
0x00050504 ldrd ip, r7, [r4] | __asm ("ldrd ip, r7, [r4]");
0x00050508 subs.w lr, r7, 1 | lr = r7 - 1;
| if (lr < r7) {
0x0005050c bmi.w 0x50124 | goto label_27;
| }
0x00050510 add.w r7, r7, r7, lsl 2 | r7 += (r7 << 2);
0x00050514 mov.w r5, -1 | r5 = -1;
0x00050518 mov r8, r4 | r8 = r4;
0x0005051a add.w r7, r4, r7, lsl 2 | r7 = r4 + (r7 << 2);
| label_28:
0x0005051e ldr r3, [r7, -0xc] | r3 = *((r7 - 0xc));
0x00050522 ldr r4, [r7] | r4 = *(r7);
0x00050524 cmp r3, r4 |
| if (r3 >= r4) {
0x00050526 bge 0x50556 | goto label_72;
| }
0x00050528 ldr r2, [r7, -0x8] | r2 = *((r7 - 0x8));
0x0005052c ldr sb, [r7, -0x4] | sb = *((r7 - 0x4));
0x00050530 add.w r2, r2, r3, lsl 1 | r2 += (r3 << 1);
0x00050534 b 0x50540 |
| while (ip >= r1) {
0x00050536 adds r3, 1 | r3++;
0x00050538 cmp r3, r4 |
0x0005053a str r3, [r7, -0xc] | *((r7 - 0xc)) = r3;
| if (r3 == r4) {
0x0005053e beq 0x50556 | goto label_72;
| }
0x00050540 ldrh r0, [r2], 2 | r0 = *(r2);
| r2 += 2;
0x00050544 ldr.w r1, [sb, r0, lsl 2] | offset_1 = r0 << 2;
| r1 = *((sb + offset_1));
0x00050548 cmp ip, r1 |
0x0005054a bhs 0x50536 |
| }
0x0005054c cmp r1, r5 |
| if (r1 < r5) {
0x0005054e bhs 0x50556 |
0x00050550 ldr r6, [r7, 4] | r6 = *((r7 + 4));
0x00050552 mov r5, r1 | r5 = r1;
0x00050554 add r6, r0 | r6 += r0;
| }
| label_72:
0x00050556 add.w lr, lr, -1 | lr += -1;
0x0005055a subs r7, 0x14 | r7 -= 0x14;
0x0005055c cmp.w lr, -1 |
| if (lr != -1) {
0x00050560 bne 0x5051e | goto label_28;
| }
0x00050562 adds r3, r5, 1 | r3 = r5 + 1;
0x00050564 mov r4, r8 | r4 = r8;
0x00050566 str.w r5, [r8] | __asm ("str.w r5, [r8]");
| if (r3 == r5) {
0x0005056a beq 0x50650 | goto label_73;
| }
0x0005056c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005056e ldr.w r3, [r3, 0x110] | r3 = *((r3 + 0x110));
0x00050572 cmp r3, 0 |
| if (r3 != 0) {
0x00050574 bne 0x50608 | goto label_74;
| }
0x00050576 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00050578 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0005057a cmp r3, r6 |
0x0005057c ite hs |
| if (r3 < r6) {
0x0005057e movhs r3, 0 | r3 = 0;
| }
| if (r3 >= r6) {
0x00050580 movlo r3, 1 | r3 = 1;
| }
0x00050582 cmp sl, r6 |
0x00050584 it hs |
| if (sl < r6) {
0x00050586 orrhs r3, r3, 1 | r3 |= 1;
| }
0x0005058a cmp r2, r5 |
0x0005058c it lo |
| if (r2 >= r5) {
0x0005058e orrlo r3, r3, 1 | r3 |= 1;
| }
0x00050592 cmp r3, 0 |
| if (r3 != 0) {
0x00050594 bne 0x50504 | goto label_29;
| }
0x00050596 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00050598 subs r3, r6, 1 | r3 = r6 - 1;
0x0005059a ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x0005059e ldr r7, [sp, 0x48] | r7 = var_48h;
0x000505a0 ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
0x000505a4 umull r3, r2, r3, r2 | r3:r2 = r3 * r2;
0x000505a8 ldr r1, [r0] | r1 = *(r0);
0x000505aa adds r3, 0x38 | r3 += 0x38;
0x000505ac adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x000505b0 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x000505b4 mov r2, r7 | r2 = r7;
0x000505b6 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x000505b8 mov r1, r8 | r1 = r8;
0x000505ba blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| if (r0 != 0) {
0x000505bc cbnz r0, 0x505da | goto label_75;
| }
0x000505be ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x000505c2 subs r5, 1 | r5--;
0x000505c4 mov r2, r7 | r2 = r7;
0x000505c6 umull r5, r7, r5, r7 | r5:r7 = r5 * r7;
0x000505ca mov r1, r8 | r1 = r8;
0x000505cc ldr r3, [r0] | r3 = *(r0);
0x000505ce strd r5, r7, [sp] | __asm ("strd r5, r7, [sp]");
0x000505d2 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000505d4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000505d6 cmp r0, 0 |
| if (r0 == 0) {
0x000505d8 beq 0x50504 | goto label_29;
| }
| label_75:
0x000505da mov r4, r0 | r4 = r0;
| label_31:
0x000505dc ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x000505e0 ldr r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x000505e2 cbz r3, 0x505ec |
0x000505e4 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x000505e6 movs r2, 0 | r2 = 0;
0x000505e8 movs r1, 0x25 | r1 = 0x25;
0x000505ea blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
| }
| label_33:
0x000505ec ldrb.w r3, [fp, 0x2b] | r3 = *(arg_2bh);
0x000505f0 cmp r3, 0 |
| if (r3 != 0) {
0x000505f2 bne.w 0x50356 | goto label_26;
| }
| label_57:
0x000505f6 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x000505fa movs r3, 9 | r3 = 9;
0x000505fc movs r2, 1 | r2 = 1;
0x000505fe movs r1, 3 | r1 = 3;
0x00050600 ldr r5, [r0] | r5 = *(r0);
0x00050602 ldr r5, [r5, 0x38] | r5 = *((r5 + 0x38));
0x00050604 blx r5 | uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00050606 b 0x50086 | goto label_30;
| label_74:
0x00050608 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005060a ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0005060e cmp r3, 0 |
0x00050610 ite ne |
| if (r3 == 0) {
0x00050612 movne r4, 7 | r4 = 7;
| }
| if (r3 != 0) {
0x00050614 moveq r4, 9 | r4 = 9;
| }
0x00050616 b 0x505dc | goto label_31;
| label_56:
0x00050618 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x0005061c ldr.w r2, [fp, 0x48] | r2 = *(arg_48h);
0x00050620 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00050622 ldr r1, [r0] | r1 = *(r0);
0x00050624 umull r2, r3, r2, r3 | r2:r3 = r2 * r3;
0x00050628 ldr r1, [r1, 0x10] | r1 = *((r1 + 0x10));
0x0005062a blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005062c mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x0005062e cbnz r0, 0x5064c | goto label_76;
| }
0x00050630 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00050632 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00050636 cmp r3, 0 |
| if (r3 == 0) {
0x00050638 beq.w 0x5014e | goto label_32;
| }
0x0005063c mov r1, r3 | r1 = r3;
0x0005063e ldr r3, [r0] | r3 = *(r0);
0x00050640 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00050642 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x00050644 mov r3, r0 | r3 = r0;
0x00050646 cmp r0, 0 |
| if (r0 == 0) {
0x00050648 beq.w 0x5014e | goto label_32;
| }
| label_76:
0x0005064c mov r4, r3 | r4 = r3;
0x0005064e b 0x505ec | goto label_33;
| label_73:
0x00050650 ldr r4, [sp, 0x38] | r4 = var_38h;
0x00050652 b 0x5012e | goto label_34;
| label_70:
0x00050654 blx 0x7f8c | fcn_00007f8c ();
0x00050658 ldr r2, [pc, 0x38] |
0x0005065a adds r0, 0x14 | r0 += 0x14;
0x0005065c ldr r1, [pc, 0x38] |
0x0005065e movw r3, 0xf3a3 | r3 = 0xf3a3;
0x00050662 str r0, [sp] | *(sp) = r0;
0x00050664 movs r0, 0xb | r0 = 0xb;
0x00050666 add r2, pc | r2 = 0xa0cfe;
0x00050668 movs r4, 0xb | r4 = 0xb;
0x0005066a add r1, pc | r1 = 0xa0d06;
0x0005066c blx 0x8474 | fcn_00008474 ();
0x00050670 b 0x505dc | goto label_31;
| label_67:
0x00050672 mov r0, sl | r0 = sl;
0x00050674 ldr.w fp, [sp, 0x3c] | fp = var_3ch;
0x00050678 blx 0x84f8 | fcn_000084f8 ();
0x0005067c b 0x50446 | goto label_35;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x507d8 */
| #include <stdint.h>
|
; (fcn) fcn.000507d8 () | void fcn_000507d8 (int16_t arg_48h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000507d8 ldr.w ip, [r0, 0x14] | ip = *(arg_48hx14);
0x000507dc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000507e0 sub sp, 0x24 |
0x000507e2 mov r6, r1 | r6 = r1;
0x000507e4 ldr r1, [sp, 0x48] | r1 = *(arg_48h);
0x000507e6 cmp.w ip, 0 |
| if (ip <= 0) {
0x000507ea ble.w 0x5095a | goto label_9;
| }
0x000507ee mov fp, r3 |
0x000507f0 sub.w r3, r6, 0xc | r3 = r6 - 0xc;
0x000507f4 mov.w sb, 0 | sb = 0;
0x000507f8 clz r3, r3 | r3 &= r3;
0x000507fc lsrs r3, r3, 5 | r3 >>= 5;
0x000507fe mov r8, r0 | r8 = r0;
0x00050800 mov sl, r2 | sl = r2;
0x00050802 mov r4, sb | r4 = sb;
0x00050804 str r3, [sp, 0x18] | var_18h = r3;
| do {
| label_0:
0x00050806 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00050808 cmp r6, r4 |
0x0005080a it eq |
| if (r6 != r4) {
0x0005080c orreq r0, r0, 1 | r0 |= 1;
| }
0x00050810 adds r4, 1 | r4++;
| if (r0 != 0) {
0x00050812 cbnz r0, 0x5082c | goto label_10;
| }
0x00050814 cmp r4, ip |
0x00050816 blt 0x50806 |
| } while (r4 < ip);
0x00050818 eor r2, sb, 1 | r2 = sb ^ 1;
0x0005081c mov r1, r0 | r1 = r0;
| do {
| label_7:
0x0005081e cmp r2, 0 |
| if (r2 != 0) {
0x00050820 bne 0x508ae | goto label_6;
| }
| label_2:
0x00050822 movs r1, 5 | r1 = 5;
0x00050824 mov r0, r1 | r0 = r1;
0x00050826 add sp, 0x24 |
0x00050828 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x0005082c ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x00050830 add.w r2, r2, r4, lsl 4 | r2 += (r4 << 4);
0x00050834 ldr r5, [r2, -0xc] | r5 = *((r2 - 0xc));
0x00050838 cmp r5, 0 |
| if (r5 == 0) {
0x0005083a beq 0x508a2 | goto label_5;
| }
0x0005083c ldrb r3, [r5, 9] | r3 = *((r5 + 9));
0x0005083e ldr r2, [r5, 4] | r2 = *((r5 + 4));
| if (r3 == 0) {
0x00050840 cbz r3, 0x50892 | goto label_11;
| }
0x00050842 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00050844 ldrb.w ip, [r5, 0xa] | ip = *((r5 + 0xa));
0x00050848 adds r3, r0, 1 | r3 = r0 + 1;
0x0005084a str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x0005084c cmp.w ip, 0 |
| if (ip != 0) {
0x00050850 bne 0x508b6 | goto label_12;
| }
0x00050852 mov r0, r5 | r0 = r5;
0x00050854 str r1, [sp, 0x48] | *(arg_48h) = r1;
0x00050856 str r2, [sp, 0x1c] | var_1ch = r2;
0x00050858 bl 0x12464 | fcn_00012464 (r0);
0x0005085c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0005085e ldr r1, [sp, 0x48] | r1 = *(arg_48h);
0x00050860 ldrb r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x00050862 cmp r3, 0 |
| if (r3 == 0) {
0x00050864 beq 0x50924 | goto label_13;
| }
0x00050866 ldrb r3, [r5, 9] | r3 = *((r5 + 9));
| if (r3 == 0) {
0x00050868 cbz r3, 0x508ac | goto label_14;
| }
0x0005086a ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0005086c subs r0, 1 | r0--;
| label_1:
0x0005086e str r0, [r5, 0xc] | *((r5 + 0xc)) = r0;
| if (r0 != 0) {
0x00050870 cbnz r0, 0x508ac | goto label_14;
| }
0x00050872 mov r0, r5 | r0 = r5;
0x00050874 bl 0x95d0 | fcn_000095d0 (r0);
0x00050878 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x0005087c movs r1, 6 | r1 = 6;
0x0005087e cmp r4, r3 |
| if (r4 < r3) {
0x00050880 blt 0x508ae | goto label_6;
| }
| label_4:
0x00050882 eor sb, sb, 1 | sb ^= 1;
0x00050886 cmp r1, 0 |
0x00050888 ite eq |
| if (r1 != 0) {
0x0005088a moveq r2, sb | r2 = sb;
| }
| if (r1 == 0) {
0x0005088c orrne r2, sb, 1 | r2 = sb | 1;
| }
0x00050890 b 0x5081e |
| } while (1);
| label_11:
0x00050892 ldrb r3, [r2, 0x14] | r3 = *((r2 + 0x14));
| if (r3 == 0) {
0x00050894 cbnz r3, 0x508ac |
0x00050896 ldr r2, [r2] | r2 = *(r2);
0x00050898 ldr.w lr, [r5] |
0x0005089c ldr.w r0, [r2, 0xd8] | r0 = *((r2 + 0xd8));
| if (r0 != 0) {
0x000508a0 cbnz r0, 0x508ce | goto label_3;
| }
| label_5:
0x000508a2 cmp r4, ip |
| if (r4 >= ip) {
0x000508a4 bge 0x5095e | goto label_15;
| }
0x000508a6 movs r1, 0 | r1 = 0;
0x000508a8 mov fp, r1 |
0x000508aa b 0x50806 | goto label_0;
| }
| label_14:
0x000508ac movs r1, 6 | r1 = 6;
| label_6:
0x000508ae mov r0, r1 | r0 = r1;
0x000508b0 add sp, 0x24 |
0x000508b2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x000508b6 ldrb.w ip, [r2, 0x14] | ip = *((r2 + 0x14));
0x000508ba cmp.w ip, 0 |
| if (ip != 0) {
0x000508be bne 0x5086e | goto label_1;
| }
0x000508c0 ldr r2, [r2] | r2 = *(r2);
0x000508c2 ldr.w lr, [r5] |
0x000508c6 ldr.w r0, [r2, 0xd8] | r0 = *((r2 + 0xd8));
0x000508ca cmp r0, 0 |
| if (r0 == 0) {
0x000508cc beq 0x50938 | goto label_16;
| }
| label_3:
0x000508ce mov r3, sl | r3 = sl;
0x000508d0 cmp.w sl, 0 |
| if (sl != 0) {
0x000508d4 beq 0x508da |
0x000508d6 ldr.w r3, [r2, 0xb0] | r3 = *((r2 + 0xb0));
| }
0x000508da strd fp, r1, [sp, 0x10] | __asm ("strd fp, r1, [var_10h]");
0x000508de mov r1, lr | r1 = lr;
0x000508e0 ldr.w r7, [r2, 0xd0] | r7 = *((r2 + 0xd0));
0x000508e4 str r7, [sp, 0xc] | var_ch = r7;
0x000508e6 ldr.w r7, [r2, 0x98] | r7 = *((r2 + 0x98));
0x000508ea str r7, [sp, 8] | var_8h = r7;
0x000508ec ldrb.w ip, [r2, 0xb] | ip = *((r2 + 0xb));
0x000508f0 str.w ip, [sp, 4] | __asm ("str.w ip, [var_4h]");
0x000508f4 ldr.w r2, [r2, 0xb4] | r2 = *((r2 + 0xb4));
0x000508f8 str r2, [sp] | *(sp) = r2;
0x000508fa mov r2, sl | r2 = sl;
0x000508fc bl 0x4fe34 | fcn_0004fe34 (r0, r1, r2, r3, r4, r5, r6);
0x00050900 ldrb r2, [r5, 9] | r2 = *((r5 + 9));
0x00050902 mov r1, r0 | r1 = r0;
| if (r2 != 0) {
0x00050904 cbz r2, 0x5090e |
0x00050906 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00050908 subs r2, 1 | r2--;
0x0005090a str r2, [r5, 0xc] | *((r5 + 0xc)) = r2;
| if (r2 == 0) {
0x0005090c cbz r2, 0x50972 | goto label_17;
| }
| }
| label_8:
0x0005090e cmp r1, 5 |
0x00050910 ldr.w ip, [r8, 0x14] | ip = *((r8 + 0x14));
| if (r1 != 5) {
0x00050914 bne 0x50966 | goto label_18;
| }
0x00050916 cmp ip, r4 |
| if (ip <= r4) {
0x00050918 ble 0x50822 | goto label_2;
| }
0x0005091a movs r1, 0 | r1 = 0;
0x0005091c mov.w sb, 1 | sb = 1;
0x00050920 mov fp, r1 |
0x00050922 b 0x50806 | goto label_0;
| label_13:
0x00050924 ldr r2, [r2] | r2 = *(r2);
0x00050926 ldr.w lr, [r5] |
0x0005092a ldr.w r0, [r2, 0xd8] | r0 = *((r2 + 0xd8));
0x0005092e cmp r0, 0 |
| if (r0 != 0) {
0x00050930 bne 0x508ce | goto label_3;
| }
0x00050932 ldrb r3, [r5, 9] | r3 = *((r5 + 9));
| if (r3 == 0) {
0x00050934 cbz r3, 0x50954 | goto label_19;
| }
0x00050936 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
| label_16:
0x00050938 subs r1, r3, 1 | r1 = r3 - 1;
0x0005093a str r1, [r5, 0xc] | *((r5 + 0xc)) = r1;
0x0005093c str r1, [sp, 0x1c] | var_1ch = r1;
| if (r1 != 0) {
0x0005093e cbnz r1, 0x50954 | goto label_19;
| }
0x00050940 mov r0, r5 | r0 = r5;
0x00050942 bl 0x95d0 | fcn_000095d0 (r0);
0x00050946 ldr.w ip, [r8, 0x14] | ip = *((r8 + 0x14));
0x0005094a ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0005094c cmp r4, ip |
| if (r4 >= ip) {
0x0005094e bge 0x50882 | goto label_4;
| }
0x00050950 mov fp, r1 |
0x00050952 b 0x50806 | goto label_0;
| label_19:
0x00050954 ldr.w ip, [r8, 0x14] | ip = *((r8 + 0x14));
0x00050958 b 0x508a2 | goto label_5;
| label_9:
0x0005095a movs r1, 0 | r1 = 0;
0x0005095c b 0x508ae | goto label_6;
| label_15:
0x0005095e eor r2, sb, 1 | r2 = sb ^ 1;
0x00050962 movs r1, 0 | r1 = 0;
0x00050964 b 0x5081e | goto label_7;
| label_18:
0x00050966 cmp ip, r4 |
| if (ip <= r4) {
0x00050968 ble 0x50882 | goto label_4;
| }
0x0005096a cmp r1, 0 |
| if (r1 != 0) {
0x0005096c bne 0x508ae | goto label_6;
| }
0x0005096e mov fp, r1 |
0x00050970 b 0x50806 | goto label_0;
| label_17:
0x00050972 str r0, [sp, 0x1c] | var_1ch = r0;
0x00050974 mov r0, r5 | r0 = r5;
0x00050976 bl 0x95d0 | fcn_000095d0 (r0);
0x0005097a ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0005097c b 0x5090e | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5109c */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.0005109c () | void fcn_0005109c (int16_t arg1) {
| r0 = arg1;
0x0005109c push.w {r4, r5, r6, r7, r8, lr} |
0x000510a0 mov r4, r0 | r4 = r0;
0x000510a2 ldrd r8, r5, [r0, 0x94] | __asm ("ldrd r8, r5, [r0, 0x94]");
0x000510a6 sub sp, 8 |
0x000510a8 ldr r3, [r0, 0x60] | r3 = *((r0 + 0x60));
0x000510aa cmp r5, r8 |
0x000510ac ldr.w r6, [r0, 0xd0] | r6 = *((r0 + 0xd0));
0x000510b0 it hs |
| if (r5 < r8) {
0x000510b2 movhs r5, r8 | r5 = r8;
| }
0x000510b4 ldr r0, [r0, 0x48] | r0 = *((r0 + 0x48));
0x000510b6 cmp r3, 0 |
0x000510b8 ldr r1, [r4, 0x4c] | r1 = *((r4 + 0x4c));
| if (r3 <= 0) {
0x000510ba ble 0x510d8 | goto label_1;
| }
0x000510bc add.w ip, r3, r3, lsl 1 |
0x000510c0 ldr r3, [r4, 0x5c] | r3 = *((r4 + 0x5c));
0x000510c2 add.w ip, r3, ip, lsl 4 |
| do {
0x000510c6 ldrd r2, r7, [r3, 8] | __asm ("ldrd r2, r7, [r3, 8]");
0x000510ca orrs r7, r2 | r7 |= r2;
0x000510cc it eq |
| if (r7 == r2) {
0x000510ce strdeq r0, r1, [r3, 8] | __asm ("strdeq r0, r1, [r3, 8]");
| }
0x000510d2 adds r3, 0x30 | r3 += 0x30;
0x000510d4 cmp ip, r3 |
0x000510d6 bne 0x510c6 |
| } while (ip != r3);
| label_1:
0x000510d8 orrs.w r3, r0, r1 | r3 = r0 | r1;
| if (r3 != r0) {
0x000510dc beq 0x510fc |
0x000510de subs r0, 1 | r0--;
0x000510e0 mov.w r3, 0 | r3 = 0;
0x000510e4 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x000510e8 mov r2, r8 | r2 = r8;
0x000510ea bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x000510ee adds r0, 1 | r0++;
0x000510f0 adc r3, r1, 0 | __asm ("adc r3, r1, 0");
0x000510f4 umull r0, r1, r0, r8 | r0:r1 = r0 * r8;
0x000510f8 mla r1, r8, r3, r1 | __asm ("mla r1, r8, r3, r1");
| }
0x000510fc ldrb r3, [r4, 7] | r3 = *((r4 + 7));
0x000510fe strd r0, r1, [r4, 0x48] | __asm ("strd r0, r1, [r4, 0x48]");
0x00051102 str r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
0x00051104 str r1, [r4, 0x54] | *((r4 + 0x54)) = r1;
| if (r3 == 0) {
0x00051106 cbnz r3, 0x5111c |
0x00051108 ldrb r3, [r4, 5] | r3 = *((r4 + 5));
0x0005110a cmp r3, 4 |
| if (r3 == 4) {
0x0005110c beq 0x5111c | goto label_2;
| }
0x0005110e ldr r0, [r4, 0x3c] | r0 = *((r4 + 0x3c));
0x00051110 ldr r3, [r0] | r3 = *(r0);
0x00051112 ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x00051114 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00051116 ands r0, r0, 0x200 | r0 &= 0x200;
| if (r0 == r0) {
0x0005111a beq 0x511a0 | goto label_3;
| }
| }
| label_2:
0x0005111c ldr r3, [pc, 0x88] |
0x0005111e add r3, pc | r3 = 0xa22ca;
0x00051120 ldm r3!, {r0, r1} | r0 = *(r3!);
| r1 = *((r3! + 4));
0x00051122 mov.w r3, -1 | r3 = -1;
0x00051126 str r3, [r6, 8] | *((r6 + 8)) = r3;
0x00051128 str r0, [r6] | *(r6) = r0;
0x0005112a str r1, [r6, 4] | *((r6 + 4)) = r1;
| label_0:
0x0005112c add.w r1, r4, 0x30 | r1 = r4 + 0x30;
0x00051130 movs r0, 4 | r0 = 4;
0x00051132 blx 0x819c | fcn_0000819c ();
0x00051136 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x00051138 movs r7, 0 | r7 = 0;
0x0005113a sub.w r2, r5, 0x1c | r2 = r5 - 0x1c;
0x0005113e movs r1, 0 | r1 = 0;
0x00051140 add.w r0, r6, 0x1c | r0 = r6 + 0x1c;
0x00051144 rev r3, r3 | r3 = SWAP32 (r3);
0x00051146 str r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
0x00051148 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0005114a rev r3, r3 | r3 = SWAP32 (r3);
0x0005114c str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x0005114e ldr.w r3, [r4, 0x94] | r3 = *((r4 + 0x94));
0x00051152 rev r3, r3 | r3 = SWAP32 (r3);
0x00051154 str r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
0x00051156 ldr.w r3, [r4, 0x98] | r3 = *((r4 + 0x98));
0x0005115a rev r3, r3 | r3 = SWAP32 (r3);
0x0005115c str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x0005115e blx 0x8264 | fcn_00008264 ();
| do {
0x00051162 ldr.w r3, [r4, 0x94] | r3 = *((r4 + 0x94));
0x00051166 mov r2, r5 | r2 = r5;
0x00051168 mov r1, r6 | r1 = r6;
0x0005116a cmp r3, r7 |
0x0005116c add r7, r5 | r7 += r5;
| if (r3 < r7) {
0x0005116e bls 0x51198 | goto label_4;
| }
0x00051170 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x00051172 vldr d16, [r4, 0x48] | __asm ("vldr d16, [r4, 0x48]");
0x00051176 ldr r3, [r0] | r3 = *(r0);
0x00051178 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0005117c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0005117e blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00051180 ldrd r3, r2, [r4, 0x48] | __asm ("ldrd r3, r2, [r4, 0x48]");
0x00051184 adds r3, r3, r5 | r3 += r5;
0x00051186 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0005118a strd r3, r2, [r4, 0x48] | __asm ("strd r3, r2, [r4, 0x48]");
0x0005118e cmp r0, 0 |
0x00051190 beq 0x51162 |
| } while (r0 == 0);
0x00051192 add sp, 8 |
0x00051194 pop.w {r4, r5, r6, r7, r8, pc} |
| label_4:
0x00051198 movs r0, 0 | r0 = 0;
0x0005119a add sp, 8 |
0x0005119c pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x000511a0 str r0, [r6] | *(r6) = r0;
0x000511a2 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x000511a4 str r0, [r6, 8] | *((r6 + 8)) = r0;
0x000511a6 b 0x5112c | 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/libsqlite3.so.0.8.6 @ 0x516d4 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.000516d4 () | void fcn_000516d4 (int16_t arg_1h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000516d4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000516d8 mov ip, r0 |
0x000516da ldr r5, [pc, 0x190] |
0x000516dc mov r6, r0 | r6 = r0;
0x000516de sub sp, 0x3c |
0x000516e0 ldr r4, [pc, 0x18c] | r4 = *(0x51870);
0x000516e2 add r5, pc | r5 = 0xa2f54;
0x000516e4 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x000516e6 ldr r4, [r5, r4] |
0x000516e8 ldr r4, [r4] | r4 = *(0xa2f54);
0x000516ea str r4, [sp, 0x34] | var_34h = r4;
0x000516ec mov.w r4, 0 | r4 = 0;
0x000516f0 str r2, [sp, 0x28] | var_28h = r2;
0x000516f2 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x000516f4 ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x000516f6 ldr.w r8, [r2, 0x24] | r8 = *((r2 + 0x24));
0x000516fa ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x000516fc ldr.w sl, [r2] | sl = *(r2);
0x00051700 mov r7, r8 | r7 = r8;
0x00051702 ldr r0, [r0, 0x24] | r0 = *((r0 + 0x24));
0x00051704 mov r2, r0 | r2 = r0;
0x00051706 cmp r0, r8 |
0x00051708 umull r5, r4, r1, r2 | r5:r4 = r1 * r2;
0x0005170c str r0, [sp, 0x1c] | var_1ch = r0;
0x0005170e it ge |
| if (r0 < r8) {
0x00051710 movge r0, r8 | r0 = r8;
| }
0x00051712 cmp r8, r2 |
0x00051714 str r0, [sp, 0x24] | var_24h = r0;
0x00051716 asr.w r0, r2, 0x1f | r0 = r2 >> 0x1f;
0x0005171a str r0, [sp, 0x20] | var_20h = r0;
0x0005171c mla r1, r1, r0, r4 | __asm ("mla r1, r1, r0, r4");
0x00051720 str r5, [sp, 8] | var_8h = r5;
0x00051722 str r1, [sp, 0xc] | var_ch = r1;
| if (r8 == r2) {
0x00051724 beq.w 0x51860 | goto label_3;
| }
0x00051728 ldrb.w r2, [sl, 0xc] | r2 = *((sl + 0xc));
0x0005172c subs r2, 0 |
0x0005172e it ne |
| if (r2 == 0) {
0x00051730 movne r2, 1 | r2 = 1;
| }
0x00051732 lsl.w fp, r2, 3 |
0x00051736 eor r2, r2, 1 | r2 ^= 1;
| label_2:
0x0005173a ldr r1, [sp, 8] | r1 = var_8h;
0x0005173c and r2, r2, 1 | r2 &= 1;
0x00051740 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00051742 ldr r5, [sp, 0x20] | r5 = var_20h;
0x00051744 subs r4, r1, r0 | r4 = r1 - r0;
0x00051746 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00051748 sbc.w r6, r0, r5 | __asm ("sbc.w r6, r0, r5");
0x0005174c cmp r4, r1 |
0x0005174e sbcs.w r1, r6, r0 | __asm ("sbcs.w r1, r6, r0");
0x00051752 it ge |
| if (r4 < r1) {
0x00051754 movge r2, 0 | r2 = 0;
| }
0x00051756 str r2, [sp, 0x18] | var_18h = r2;
0x00051758 cmp r2, 0 |
| if (r2 == 0) {
0x0005175a beq 0x51836 | goto label_4;
| }
0x0005175c eor r3, r3, 1 | r3 ^= 1;
0x00051760 asr.w sb, r8, 0x1f | sb = r8 >> 0x1f;
0x00051764 and r3, r3, 1 | r3 &= 1;
0x00051768 str r7, [sp, 4] | var_4h = r7;
0x0005176a str r3, [sp, 0x2c] | var_2ch = r3;
0x0005176c mov fp, r8 |
0x0005176e ldr r3, [pc, 0x104] |
0x00051770 mov r8, ip | r8 = ip;
0x00051772 add r3, pc | r3 = 0xa2fec;
0x00051774 str r3, [sp, 0x10] | var_10h = r3;
0x00051776 b 0x517a8 |
| while (r0 != 0) {
| label_0:
0x00051778 ldr r0, [sp, 0x30] | r0 = var_30h;
| if (r0 != 0) {
0x0005177a cbz r0, 0x51780 |
0x0005177c bl 0x11fa4 | fcn_00011fa4 (r0);
| }
| label_1:
0x00051780 ldr r3, [sp, 4] | r3 = var_4h;
0x00051782 and r5, r5, 1 | r5 &= 1;
0x00051786 adds r4, r4, r3 | r4 += r3;
0x00051788 ldr r3, [sp, 8] | r3 = var_8h;
0x0005178a adc.w r6, sb, r6 | __asm ("adc.w r6, sb, r6");
0x0005178e cmp r4, r3 |
0x00051790 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00051792 sbcs.w r3, r6, r3 | __asm ("sbcs.w r3, r6, r3");
0x00051796 it ge |
| if (r4 < r3) {
0x00051798 movge r5, 0 | r5 = 0;
| }
0x0005179a cmp r5, 0 |
| if (r5 == 0) {
0x0005179c beq 0x51836 | goto label_4;
| }
0x0005179e ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000517a2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000517a4 ldr.w fp, [r3, 0x24] | fp = *((r3 + 0x24));
0x000517a8 ldr r2, [sp, 4] | r2 = var_4h;
0x000517aa movs r5, 0 | r5 = 0;
0x000517ac mov r3, sb | r3 = sb;
0x000517ae mov r0, r4 | r0 = r4;
0x000517b0 mov r1, r6 | r1 = r6;
0x000517b2 str r5, [sp, 0x30] | var_30h = r5;
0x000517b4 bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x000517b8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000517ba mov r1, fp | r1 = fp;
0x000517bc mov fp, r0 |
0x000517be str r2, [sp, 0x14] | var_14h = r2;
0x000517c0 ldr.w r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x000517c4 bl 0xab680 | r0 = fcn_000ab680 (r0, r1, r2);
0x000517c8 cmp fp, r0 |
0x000517ca add.w r1, fp, 1 | r1 += arg_1h;
| if (fp == r0) {
0x000517ce beq 0x51830 | goto label_5;
| }
0x000517d0 ldr.w r7, [sl, 0xcc] | r7 = *((sl + 0xcc));
0x000517d4 mov r3, r5 | r3 = r5;
0x000517d6 add r2, sp, 0x30 | r2 += var_30h;
0x000517d8 mov r0, sl | r0 = sl;
0x000517da blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x000517dc mov fp, r0 |
0x000517de cmp r0, 0 |
0x000517e0 bne 0x51778 |
| }
0x000517e2 ldr r0, [sp, 0x30] | r0 = var_30h;
0x000517e4 bl 0x51680 | r0 = fcn_00051680 (r0);
0x000517e8 mov fp, r0 |
0x000517ea cmp r0, 0 |
| if (r0 != 0) {
0x000517ec bne 0x51778 | goto label_0;
| }
0x000517ee ldr r3, [sp, 0x30] | r3 = var_30h;
0x000517f0 mov r0, r4 | r0 = r4;
0x000517f2 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000517f4 mov r1, r6 | r1 = r6;
0x000517f6 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000517f8 add r2, r3 | r2 += r3;
0x000517fa mov r5, r2 | r5 = r2;
0x000517fc mov r7, r2 | r7 = r2;
0x000517fe ldrd r2, r3, [sp, 0x1c] | __asm ("ldrd r2, r3, [var_1ch]");
0x00051802 bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x00051806 mov r1, r2 | r1 = r2;
0x00051808 ldrd r2, r3, [sp, 0x24] | __asm ("ldrd r2, r3, [var_28h]");
0x0005180c mov r0, r5 | r0 = r5;
0x0005180e add r1, r3 | r1 += r3;
0x00051810 blx 0x7dcc | fcn_00007dcc ();
0x00051814 orrs.w r3, r4, r6 | r3 = r4 | r6;
0x00051818 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005181a ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0005181c strb.w fp, [r3] | *(r3) = fp;
0x00051820 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00051822 and r5, r3, 1 | r5 = r3 & 1;
0x00051826 it ne |
| if (r3 == r4) {
0x00051828 movne r5, 0 | r5 = 0;
| }
| if (r5 == 0) {
0x0005182a cbnz r5, 0x51852 |
0x0005182c ldr r5, [sp, 0x18] | r5 = var_18h;
0x0005182e b 0x51778 | goto label_0;
| label_5:
0x00051830 mov fp, r5 |
0x00051832 ldr r5, [sp, 0x18] | r5 = var_18h;
0x00051834 b 0x51780 | goto label_1;
| label_4:
0x00051836 ldr r2, [pc, 0x40] |
0x00051838 ldr r3, [pc, 0x34] | r3 = *(0x51870);
0x0005183a add r2, pc | r2 = 0xa30b8;
0x0005183c ldr r3, [r2, r3] | r3 = *(0xa30b8);
0x0005183e ldr r2, [r3] | r2 = *(0xa30b8);
0x00051840 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00051842 eors r2, r3 | r2 ^= r3;
0x00051844 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00051848 bne 0x51868 | goto label_6;
| }
0x0005184a mov r0, fp | r0 = fp;
0x0005184c add sp, 0x3c |
0x0005184e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00051852 ldr.w r3, [r8, 0x18] | r3 = *((r8 + 0x18));
0x00051856 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00051858 ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x0005185a rev r3, r3 | r3 = SWAP32 (r3);
0x0005185c str r3, [r7, 0x1c] | *((r7 + 0x1c)) = r3;
0x0005185e b 0x51778 | goto label_0;
| label_3:
0x00051860 movs r2, 1 | r2 = 1;
0x00051862 mov.w fp, 0 |
0x00051866 b 0x5173a | goto label_2;
| label_6:
0x00051868 blx 0x7e8c | fcn_00007e8c ();
0x0005186c stm r5!, {r1, r2, r3, r5, r7} | *(r5!) = r1;
| *((r5! + 4)) = r2;
| *((r5! + 8)) = r3;
| *((r5! + 12)) = r5;
| *((r5! + 16)) = r7;
0x0005186e movs r7, r0 | r7 = r0;
0x00051870 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00051872 movs r0, r0 |
0x00051874 ldm r0!, {r1, r4, r7} | r1 = *(r0!);
| r4 = *((r0! + 4));
| r7 = *((r0! + 8));
0x00051876 movs r7, r0 | r7 = r0;
0x00051878 stm r4!, {r1, r2, r4, r6} | *(r4!) = r1;
| *((r4! + 4)) = r2;
| *((r4! + 8)) = r4;
| *((r4! + 12)) = r6;
0x0005187a movs r7, r0 | r7 = 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/libsqlite3.so.0.8.6 @ 0x518c8 */
| #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) fcn.000518c8 () | void fcn_000518c8 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_14h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int32_t var_58h_2;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000518c8 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000518cc sub sp, 0x94 |
0x000518ce str r1, [sp, 0x44] | var_44h = r1;
0x000518d0 mov r5, r1 | r5 = r1;
0x000518d2 mov sl, r0 | sl = r0;
0x000518d4 mov r0, r2 | r0 = r2;
0x000518d6 ldr.w r1, [pc, 0x6bc] |
0x000518da str r2, [sp, 0x24] | var_24h = r2;
0x000518dc ldr.w r2, [pc, 0x6b8] | r2 = *(0x51f98);
0x000518e0 add r1, pc | r1 = 0xa387a;
0x000518e2 ldr r2, [r1, r2] |
0x000518e4 movs r1, 1 | r1 = 1;
0x000518e6 ldr r2, [r2] | r2 = *(0xa387a);
0x000518e8 str r2, [sp, 0x8c] | var_8ch = r2;
0x000518ea mov.w r2, 0 | r2 = 0;
0x000518ee str r3, [sp, 8] | var_8h = r3;
| if (r3 == 0) {
0x000518f0 cbz r3, 0x51914 | goto label_13;
| }
0x000518f2 cmp r5, 0 |
| if (r5 == 0) {
0x000518f4 beq.w 0x51d0c | goto label_26;
| }
0x000518f8 add r2, sp, 0x44 | r2 += var_44h;
0x000518fa movs r1, 0 | r1 = 0;
| do {
0x000518fc ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000518fe cmp r3, r0 |
0x00051900 it ls |
| if (r3 > r0) {
0x00051902 addls r2, r5, 0x10 | r2 = r5 + 0x10;
| }
0x00051906 ldr r5, [r5, 0x10] | r5 = *((r5 + 0x10));
0x00051908 it ls |
| if (r3 > r0) {
0x0005190a addls r1, 1 | r1++;
| }
0x0005190c str r5, [r2] | *(r2) = r5;
0x0005190e cmp r5, 0 |
0x00051910 bne 0x518fc |
| } while (r5 != 0);
0x00051912 ldr r5, [sp, 0x44] | r5 = var_44h;
| label_13:
0x00051914 ldr.w r3, [sl, 0xc0] | r3 = *((sl + 0xc0));
0x00051918 add r3, r1 | r3 += r1;
0x0005191a str.w r3, [sl, 0xc0] | __asm ("str.w r3, [sl, 0xc0]");
0x0005191e ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00051920 cmp r3, 1 |
| if (r3 == 1) {
0x00051922 beq.w 0x51cc0 | goto label_27;
| }
| label_10:
0x00051926 ldr.w r3, [sl, 0x98] | r3 = *((sl + 0x98));
0x0005192a movs r2, 0x30 | r2 = 0x30;
0x0005192c ldr.w r8, [sl, 0xd8] | r8 = *((sl + 0xd8));
0x00051930 str r3, [sp, 0x14] | var_14h = r3;
0x00051932 ldrb.w r3, [sl, 0xb] | r3 = *((sl + 0xb));
0x00051936 add.w r0, r8, 0x34 | r0 = r8 + 0x34;
0x0005193a str r3, [sp, 0x1c] | var_1ch = r3;
0x0005193c ldr.w r3, [r8, 0x20] | r3 = *((r8 + 0x20));
0x00051940 ldr r4, [r3] | r4 = *(r3);
0x00051942 mov r1, r4 | r1 = r4;
0x00051944 blx 0x7e40 | r0 = fcn_00007e40 ();
0x00051948 cmp r0, 0 |
| if (r0 == 0) {
0x0005194a beq.w 0x51bf6 | goto label_28;
| }
0x0005194e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00051950 adds r3, 1 | r3++;
0x00051952 str r3, [sp, 0x20] | var_20h = r3;
| label_6:
0x00051954 ldrsh.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
| if (r3 != 0) {
0x00051958 cbnz r3, 0x5199c | goto label_29;
| }
0x0005195a ldr r3, [r4, 0x60] | r3 = *((r4 + 0x60));
0x0005195c cmp r3, 0 |
| if (r3 != 0) {
0x0005195e bne.w 0x51cc8 | goto label_30;
| }
0x00051962 ldrb.w r3, [r8, 0x2b] | r3 = *((r8 + 0x2b));
0x00051966 add r6, sp, 0x50 | r6 += var_50h;
| if (r3 == 0) {
| label_11:
0x00051968 cbnz r3, 0x5197a |
0x0005196a ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x0005196e movs r3, 5 | r3 = 5;
0x00051970 movs r2, 1 | r2 = 1;
0x00051972 movs r1, 3 | r1 = 3;
0x00051974 ldr r4, [r0] | r4 = *(r0);
0x00051976 ldr r4, [r4, 0x38] | r4 = *((r4 + 0x38));
0x00051978 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| }
| label_14:
0x0005197a movs r7, 0 | r7 = 0;
0x0005197c movw r3, 0xffff | r3 = 0xffff;
0x00051980 strh.w r3, [r8, 0x28] | *((r8 + 0x28)) = r3;
| do {
0x00051984 adds r7, 1 | r7++;
0x00051986 movs r2, 1 | r2 = 1;
0x00051988 mov r3, r7 | r3 = r7;
0x0005198a mov r1, r6 | r1 = r6;
0x0005198c mov r0, r8 | r0 = r8;
0x0005198e bl 0x3df88 | r0 = fcn_0003df88 (r0, r1, r2, r3, r4);
0x00051992 adds r3, r0, 1 | r3 = r0 + 1;
0x00051994 beq 0x51984 |
| } while (r3 == r0);
0x00051996 mov r4, r0 | r4 = r0;
0x00051998 cmp r0, 0 |
| if (r0 != 0) {
0x0005199a bne 0x51a64 | goto label_1;
| }
| label_29:
0x0005199c ldr.w fp, [r8, 0x44] | fp = *((r8 + 0x44));
0x000519a0 cmp.w fp, 0 |
| if (fp == 0) {
0x000519a4 beq.w 0x51c04 | goto label_31;
| }
| label_8:
0x000519a8 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
| label_9:
0x000519ac ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000519ae mov r6, r5 | r6 = r5;
0x000519b0 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000519b4 str r0, [sp, 0x54] | var_54h = r0;
0x000519b6 add r0, sp, 0x50 | r0 += var_50h;
0x000519b8 str r3, [sp, 0x60] | var_60h = r3;
0x000519ba ldr r3, [sp, 0x14] | r3 = var_14h;
0x000519bc ldr r4, [sp, 0x20] | r4 = var_20h;
0x000519be str r5, [sp, 0x28] | var_28h = r5;
0x000519c0 add.w r2, r3, 0x18 | r2 = r3 + 0x18;
0x000519c4 str r3, [sp, 0x64] | var_64h = r3;
0x000519c6 ldr r3, [sp, 8] | r3 = var_8h;
0x000519c8 asrs r1, r2, 0x1f | r1 = r2 >> 0x1f;
0x000519ca str.w sl, [sp, 0x20] | __asm ("str.w sl, [var_20h]");
0x000519ce mov sl, r0 | sl = r0;
0x000519d0 str.w r8, [sp, 0x50] | __asm ("str.w r8, [var_50h]");
0x000519d4 eor r3, r3, 1 | r3 ^= 1;
0x000519d8 vstr d16, [sp, 0x58] | __asm ("vstr d16, [sp, 0x58]");
0x000519dc and r3, r3, 1 | r3 &= 1;
0x000519e0 str r2, [sp, 0x2c] | var_2ch = r2;
0x000519e2 str r3, [sp, 0x18] | var_18h = r3;
0x000519e4 movs r3, 0 | r3 = 0;
0x000519e6 str r3, [sp, 0x10] | var_10h = r3;
0x000519e8 umull r7, r3, fp, r2 | r7:r3 = fp * r2;
0x000519ec str r1, [sp, 0xc] | var_ch = r1;
0x000519ee mla r3, fp, r1, r3 | __asm ("mla r3, fp, r1, r3");
0x000519f2 adds r7, 0x20 | r7 += 0x20;
0x000519f4 adc sb, r3, 0 | __asm ("adc sb, r3, 0");
0x000519f8 mov r5, sb | r5 = sb;
0x000519fa mov sb, r2 | sb = r2;
| label_0:
0x000519fc ldr r1, [r6, 0x18] | r1 = *((r6 + 0x18));
0x000519fe cmp r4, 0 |
| if (r4 == 0) {
0x00051a00 beq 0x51a86 | goto label_32;
| }
0x00051a02 ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x00051a04 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00051a06 cmp r2, 0 |
0x00051a08 it ne |
| if (r2 == 0) {
0x00051a0a orrne r3, r3, 1 | r3 |= 1;
| }
0x00051a0e cmp r3, 0 |
| if (r3 == 0) {
0x00051a10 beq.w 0x51cb8 | goto label_33;
| }
0x00051a14 movs r3, 0 | r3 = 0;
0x00051a16 add r2, sp, 0x4c | r2 += var_4ch;
0x00051a18 mov r0, r8 | r0 = r8;
0x00051a1a str r3, [sp, 0x4c] | var_4ch = r3;
0x00051a1c bl 0x246c0 | fcn_000246c0 (r0, r1, r2, r3, r4, r5);
0x00051a20 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00051a22 cmp r4, r3 |
| if (r4 > r3) {
0x00051a24 bhi 0x51a86 | goto label_32;
| }
0x00051a26 ldr.w r0, [r8, 0x68] | r0 = *((r8 + 0x68));
0x00051a2a subs r1, r3, 1 | r1 = r3 - 1;
0x00051a2c umull ip, r2, r1, sb | ip:r2 = r1 * sb;
0x00051a30 add.w lr, r0, -1 | lr = r0 + -1;
0x00051a34 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00051a36 adds.w ip, ip, 0x38 |
0x00051a3a mla r2, r1, r0, r2 | __asm ("mla r2, r1, r0, r2");
0x00051a3e ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00051a42 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00051a44 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00051a48 cmp r3, lr |
0x00051a4a it ls |
| if (r3 > lr) {
0x00051a4c strls r3, [r8, 0x68] | *((r8 + 0x68)) = r3;
| }
0x00051a50 ldr r3, [r0] | r3 = *(r0);
0x00051a52 strd ip, r2, [sp] | __asm ("strd ip, r2, [sp]");
0x00051a56 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00051a58 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00051a5a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00051a5c cmp r0, 0 |
| if (r0 == 0) {
0x00051a5e beq.w 0x51bfa | goto label_34;
| }
| do {
| label_20:
0x00051a62 mov r4, r0 | r4 = r0;
| label_1:
0x00051a64 ldr.w r2, [pc, 0x534] |
0x00051a68 ldr.w r3, [pc, 0x52c] | r3 = *(0x51f98);
0x00051a6c add r2, pc | r2 = 0xa3a0c;
0x00051a6e ldr r3, [r2, r3] | r3 = *(0xa3a0c);
0x00051a70 ldr r2, [r3] | r2 = *(0xa3a0c);
0x00051a72 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x00051a74 eors r2, r3 | r2 ^= r3;
0x00051a76 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00051a7a bne.w 0x51f90 | goto label_35;
| }
0x00051a7e mov r0, r4 | r0 = r4;
0x00051a80 add sp, 0x94 |
0x00051a82 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_32:
0x00051a86 ldr r3, [sp, 8] | r3 = var_8h;
0x00051a88 add.w fp, fp, 1 |
0x00051a8c cmp r3, 0 |
| if (r3 != 0) {
0x00051a8e bne.w 0x51bea | goto label_36;
| }
| label_4:
0x00051a92 movs r3, 0 | r3 = 0;
| label_5:
0x00051a94 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x00051a96 mov r0, sl | r0 = sl;
0x00051a98 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00051a9a strd r7, r5, [sp] | __asm ("strd r7, r5, [sp]");
0x00051a9e bl 0x197d0 | r0 = fcn_000197d0 (r0, r1, r2, r3, r4, r5);
0x00051aa2 cmp r0, 0 |
0x00051aa4 bne 0x51a62 |
| } while (r0 != 0);
0x00051aa6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00051aa8 adds.w r7, sb, r7 | r7 = sb + r7;
0x00051aac str r6, [sp, 0x10] | var_10h = r6;
0x00051aae adc.w r5, r3, r5 | __asm ("adc.w r5, r3, r5");
0x00051ab2 ldrh r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00051ab4 orr r3, r3, 0x40 | r3 |= 0x40;
0x00051ab8 strh r3, [r6, 0x1c] | *((r6 + 0x1c)) = r3;
| label_7:
0x00051aba ldr r6, [r6, 0x10] | r6 = *((r6 + 0x10));
0x00051abc cmp r6, 0 |
| if (r6 != 0) {
0x00051abe bne 0x519fc | goto label_0;
| }
0x00051ac0 ldr r3, [sp, 8] | r3 = var_8h;
0x00051ac2 mov sb, r5 | sb = r5;
0x00051ac4 ldr.w sl, [sp, 0x20] | sl = var_20h;
0x00051ac8 ldr r5, [sp, 0x28] | r5 = var_28h;
0x00051aca cmp r3, 0 |
| if (r3 == 0) {
0x00051acc beq.w 0x51d38 | goto label_37;
| }
0x00051ad0 ldr.w r3, [r8, 0x68] | r3 = *((r8 + 0x68));
0x00051ad4 cmp r3, 0 |
| if (r3 != 0) {
0x00051ad6 bne.w 0x51d90 | goto label_38;
| }
| label_19:
0x00051ada ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00051adc ands r3, r3, 3 | r3 &= 3;
0x00051ae0 str r3, [sp, 0x18] | var_18h = r3;
| if (r3 != r3) {
0x00051ae2 bne.w 0x51d42 | goto label_39;
| }
| label_25:
0x00051ae6 mov sb, r3 | sb = r3;
| label_22:
0x00051ae8 ldrb.w r3, [r8, 0x2f] | r3 = *((r8 + 0x2f));
0x00051aec cmp r3, 0 |
| if (r3 == 0) {
0x00051aee beq.w 0x51eae | goto label_40;
| }
0x00051af2 ldrd r2, r3, [r8, 0x10] | __asm ("ldrd r2, r3, [r8, 0x10]");
0x00051af6 cmp r3, 0 |
0x00051af8 it ge |
| if (r3 < 0) {
0x00051afa movge r4, 0 | r4 = 0;
| }
| if (r3 < 0) {
0x00051afc blt.w 0x51f64 | goto label_41;
| }
| label_16:
0x00051b00 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00051b02 add.w r6, sb, fp | r6 = sb + fp;
0x00051b06 ldr r7, [sp, 0xc] | r7 = var_ch;
0x00051b08 umull r1, r0, r6, r1 | r1:r0 = r6 * r1;
0x00051b0c mla r0, r6, r7, r0 | __asm ("mla r0, r6, r7, r0");
0x00051b10 adds.w r7, r1, 0x1f | r7 = r1 + 0x1f;
0x00051b14 adc r6, r0, 0 | __asm ("adc r6, r0, 0");
0x00051b18 cmp r7, r2 |
0x00051b1a sbcs r6, r3 | __asm ("sbcs r6, r3");
| if (r7 >= r2) {
0x00051b1c blt 0x51b26 |
0x00051b1e adds.w r2, r1, 0x20 | r2 = r1 + 0x20;
0x00051b22 adc r3, r0, 0 | __asm ("adc r3, r0, 0");
| }
0x00051b26 mov r0, r8 | r0 = r8;
0x00051b28 bl 0x23240 | fcn_00023240 (r0, r1, r2, r3, r4, r5);
0x00051b2c movs r3, 0 | r3 = 0;
0x00051b2e strb.w r3, [r8, 0x2f] | *((r8 + 0x2f)) = r3;
| label_17:
0x00051b32 ldr.w fp, [r8, 0x44] | fp = *((r8 + 0x44));
0x00051b36 cmp r4, 0 |
| if (r4 != 0) {
0x00051b38 bne 0x51a64 | goto label_1;
| }
| label_21:
0x00051b3a mov r3, sb | r3 = sb;
0x00051b3c cmp r3, 0 |
0x00051b3e ite le |
| if (r3 > 0) {
0x00051b40 movle r7, 0 | r7 = 0;
| }
| if (r3 <= 0) {
0x00051b42 movgt r7, 1 | r7 = 1;
| }
| label_15:
0x00051b44 mov r6, r5 | r6 = r5;
| do {
0x00051b46 ldrh r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00051b48 ands r3, r3, 0x40 | r3 &= 0x40;
0x00051b4c it eq |
| if (r3 != r3) {
0x00051b4e moveq r2, 1 | r2 = 1;
| }
| if (r3 != r3) {
0x00051b50 beq 0x51b68 |
0x00051b52 add.w fp, fp, 1 |
0x00051b56 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x00051b58 mov r1, fp | r1 = fp;
0x00051b5a mov r0, r8 | r0 = r8;
0x00051b5c bl 0x24c70 | r0 = fcn_00024c70 (r0, r1, r2);
0x00051b60 clz r2, r0 | r2 &= r0;
0x00051b64 mov r3, r0 | r3 = r0;
0x00051b66 lsrs r2, r2, 5 | r2 >>= 5;
| }
0x00051b68 ldr r6, [r6, 0x10] | r6 = *((r6 + 0x10));
0x00051b6a cmp r6, 0 |
0x00051b6c ite eq |
| if (r6 != 0) {
0x00051b6e moveq r1, 0 | r1 = 0;
| }
| if (r6 == 0) {
0x00051b70 andne r1, r2, 1 | r1 = r2 & 1;
| }
0x00051b74 cmp r1, 0 |
0x00051b76 bne 0x51b46 |
| } while (r1 != 0);
0x00051b78 tst r7, r2 |
0x00051b7a mov r4, r3 | r4 = r3;
0x00051b7c mov r6, fp | r6 = fp;
| if ((r7 & r2) == 0) {
0x00051b7e beq 0x51ba6 | goto label_42;
| }
0x00051b80 ldr r4, [sp, 0x10] | r4 = var_10h;
0x00051b82 mov r7, sb | r7 = sb;
| do {
0x00051b84 adds r6, 1 | r6++;
0x00051b86 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00051b88 mov r1, r6 | r1 = r6;
0x00051b8a mov r0, r8 | r0 = r8;
0x00051b8c bl 0x24c70 | fcn_00024c70 (r0, r1, r2);
0x00051b90 subs r3, r7, r6 | r3 = r7 - r6;
0x00051b92 clz r2, r0 | r2 &= r0;
0x00051b96 add r3, fp | r3 += fp;
0x00051b98 lsrs r2, r2, 5 | r2 >>= 5;
0x00051b9a cmp r3, 0 |
0x00051b9c it le |
| if (r3 > 0) {
0x00051b9e movle r2, 0 | r2 = 0;
| }
0x00051ba0 cmp r2, 0 |
0x00051ba2 bne 0x51b84 |
| } while (r2 != 0);
0x00051ba4 mov r4, r0 | r4 = r0;
| label_42:
0x00051ba6 cmp r4, 0 |
| if (r4 != 0) {
0x00051ba8 bne.w 0x51a64 | goto label_1;
| }
0x00051bac ldr r2, [sp, 0x14] | r2 = var_14h;
0x00051bae str.w r6, [r8, 0x44] | __asm ("str.w r6, [r8, 0x44]");
0x00051bb2 bic r3, r2, 0xff | r3 = BIT_MASK (r2, 0xff);
0x00051bb6 orr.w r3, r3, r2, asr 16 | r3 |= (r2 >> 16);
0x00051bba strh.w r3, [r8, 0x42] | *((r8 + 0x42)) = r3;
0x00051bbe ldr r3, [sp, 8] | r3 = var_8h;
0x00051bc0 cmp r3, 0 |
| if (r3 != 0) {
0x00051bc2 bne.w 0x51d74 | goto label_43;
| }
| label_18:
0x00051bc6 ldr.w r0, [sl, 0x58] | r0 = *((sl + 0x58));
0x00051bca cmp r0, 0 |
| if (r0 == 0) {
0x00051bcc beq.w 0x51a64 | goto label_1;
| }
| label_3:
0x00051bd0 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00051bd2 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x00051bd4 bl 0x5187c | fcn_0005187c (r0, r1, r2);
| label_2:
0x00051bd8 ldr r5, [r5, 0x10] | r5 = *((r5 + 0x10));
0x00051bda cmp r5, 0 |
| if (r5 == 0) {
0x00051bdc beq.w 0x51a64 | goto label_1;
| }
0x00051be0 ldr.w r0, [sl, 0x58] | r0 = *((sl + 0x58));
0x00051be4 cmp r0, 0 |
| if (r0 == 0) {
0x00051be6 beq 0x51bd8 | goto label_2;
| }
0x00051be8 b 0x51bd0 | goto label_3;
| label_36:
0x00051bea ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00051bec cmp r3, 0 |
| if (r3 != 0) {
0x00051bee bne.w 0x51a92 | goto label_4;
| }
0x00051bf2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00051bf4 b 0x51a94 | goto label_5;
| label_28:
0x00051bf6 str r0, [sp, 0x20] | var_20h = r0;
0x00051bf8 b 0x51954 | goto label_6;
| label_34:
0x00051bfa ldrh r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00051bfc bic r3, r3, 0x40 | r3 = BIT_MASK (r3, 0x40);
0x00051c00 strh r3, [r6, 0x1c] | *((r6 + 0x1c)) = r3;
0x00051c02 b 0x51aba | goto label_7;
| label_31:
0x00051c04 mov.w r2, 0x2d00 | r2 = 0x2d00;
0x00051c08 movw r3, 0x7f37 |
0x00051c0c movt r2, 0x18e2 | r2 = (r2 & 0xFFFF) | 0x18e20000;
0x00051c10 movt r3, 0x8206 | r3 = 0x82067f37;
0x00051c14 str r2, [sp, 0x70] | var_70h = r2;
0x00051c16 add.w r6, r8, 0x54 | r6 = r8 + 0x54;
0x00051c1a ldr r2, [sp, 0x14] | r2 = var_14h;
0x00051c1c str r3, [sp, 0x6c] | var_6ch = r3;
0x00051c1e rev r4, r2 | r2 = SWAP32 (r4);
0x00051c20 str r4, [sp, 0x74] | var_74h = r4;
0x00051c22 ldr.w r2, [r8, 0x70] | r2 = *((r8 + 0x70));
0x00051c26 rev r0, r2 | r2 = SWAP32 (r0);
0x00051c28 str r0, [sp, 0x78] | var_78h = r0;
0x00051c2a cmp r2, 0 |
| if (r2 == 0) {
0x00051c2c beq 0x51cf8 | goto label_44;
| }
0x00051c2e movw r2, 0xac37 |
0x00051c32 movt r2, 0x9ae8 | r2 = 0x9ae8ac37;
| label_12:
0x00051c36 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00051c38 add r3, r2 | r3 += r2;
0x00051c3a add r2, r0 | r2 += r0;
0x00051c3c ldr.w r0, [r8, 0x54] | r0 = *((r8 + 0x54));
0x00051c40 add r3, r4 | r3 += r4;
0x00051c42 add r4, sp, 0x7c | r4 += var_7ch;
0x00051c44 add r2, r3 | r2 += r3;
0x00051c46 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00051c4a stm r4!, {r0, r1} | *(r4!) = r0;
| *((r4! + 4)) = r1;
0x00051c4c add r3, r0 | r3 += r0;
0x00051c4e ldr r1, [sp, 0x80] | r1 = var_80h;
0x00051c50 add r3, r2 | r3 += r2;
0x00051c52 add r2, r1 | r2 += r1;
0x00051c54 rev r1, r3 | r3 = SWAP32 (r1);
0x00051c56 add r2, r3 | r2 += r3;
0x00051c58 str r1, [sp, 0x84] | var_84h = r1;
0x00051c5a rev r1, r2 | r2 = SWAP32 (r1);
0x00051c5c str r1, [sp, 0x88] | var_88h = r1;
0x00051c5e add r1, sp, 0x6c | r1 += var_6ch;
0x00051c60 strd r3, r2, [r8, 0x4c] | __asm ("strd r3, r2, [r8, 0x4c]");
0x00051c64 movs r2, 0x20 | r2 = 0x20;
0x00051c66 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00051c68 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00051c6c str.w r3, [r8, 0x24] | __asm ("str.w r3, [r8, 0x24]");
0x00051c70 movs r3, 0 | r3 = 0;
0x00051c72 strb.w r3, [r8, 0x41] | *((r8 + 0x41)) = r3;
0x00051c76 movs r3, 1 | r3 = 1;
0x00051c78 strb.w r3, [r8, 0x2f] | *((r8 + 0x2f)) = r3;
0x00051c7c ldr r3, [r0] | r3 = *(r0);
0x00051c7e vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00051c82 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00051c84 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00051c86 mov r4, r0 | r4 = r0;
0x00051c88 cmp r0, 0 |
| if (r0 != 0) {
0x00051c8a bne.w 0x51a64 | goto label_1;
| }
0x00051c8e ldrb.w r3, [r8, 0x30] | r3 = *((r8 + 0x30));
0x00051c92 cmp r3, 0 |
| if (r3 == 0) {
0x00051c94 beq.w 0x519a8 | goto label_8;
| }
0x00051c98 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00051c9a ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00051c9e ubfx r1, r3, 2, 2 | r1 = (r3 >> 2) & ((1 << 2) - 1);
0x00051ca2 cmp r1, 0 |
| if (r1 == 0) {
0x00051ca4 beq.w 0x519ac | goto label_9;
| }
0x00051ca8 ldr r3, [r0] | r3 = *(r0);
0x00051caa ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00051cac blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00051cae mov r4, r0 | r4 = r0;
0x00051cb0 cmp r0, 0 |
| if (r0 == 0) {
0x00051cb2 beq.w 0x519a8 | goto label_8;
| }
0x00051cb6 b 0x51a64 | goto label_1;
| label_33:
0x00051cb8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00051cba add.w fp, fp, 1 |
0x00051cbe b 0x51a94 | goto label_5;
| label_27:
0x00051cc0 mov r0, r5 | r0 = r5;
0x00051cc2 bl 0x17088 | fcn_00017088 (r0);
0x00051cc6 b 0x51926 | goto label_10;
| label_30:
0x00051cc8 add r6, sp, 0x50 | r6 += var_50h;
0x00051cca movs r0, 4 | r0 = 4;
0x00051ccc mov r1, r6 | r1 = r6;
0x00051cce blx 0x819c | fcn_0000819c ();
0x00051cd2 ldrb.w r3, [r8, 0x2b] | r3 = *((r8 + 0x2b));
| if (r3 != 0) {
0x00051cd6 cbnz r3, 0x51d10 | goto label_45;
| }
0x00051cd8 ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00051cdc movs r2, 4 | r2 = 4;
0x00051cde movs r3, 0xa | r3 = 0xa;
0x00051ce0 mov r1, r2 | r1 = r2;
0x00051ce2 ldr r4, [r0] | r4 = *(r0);
0x00051ce4 ldr r4, [r4, 0x38] | r4 = *((r4 + 0x38));
0x00051ce6 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00051ce8 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00051cea cbz r0, 0x51d10 | goto label_45;
| }
0x00051cec cmp r0, 5 |
| if (r0 != 5) {
0x00051cee bne.w 0x51a64 | goto label_1;
| }
0x00051cf2 ldrb.w r3, [r8, 0x2b] | r3 = *((r8 + 0x2b));
0x00051cf6 b 0x51968 | goto label_11;
| label_44:
0x00051cf8 movs r0, 8 | r0 = 8;
0x00051cfa mov r1, r6 | r1 = r6;
0x00051cfc blx 0x819c | fcn_0000819c ();
0x00051d00 ldrd r3, r2, [sp, 0x6c] | __asm ("ldrd r3, r2, [var_70h]");
0x00051d04 ldrd r4, r0, [sp, 0x74] | __asm ("ldrd r4, r0, [var_74h]");
0x00051d08 add r2, r3 | r2 += r3;
0x00051d0a b 0x51c36 | goto label_12;
| label_26:
0x00051d0c mov r1, r5 | r1 = r5;
0x00051d0e b 0x51914 | goto label_13;
| label_45:
0x00051d10 ldr r1, [sp, 0x50] | r1 = var_50h;
0x00051d12 mov r0, r8 | r0 = r8;
0x00051d14 bl 0x17490 | fcn_00017490 (r0, r1);
0x00051d18 ldrb.w r3, [r8, 0x2b] | r3 = *((r8 + 0x2b));
0x00051d1c cmp r3, 0 |
| if (r3 != 0) {
0x00051d1e bne.w 0x5197a | goto label_14;
| }
0x00051d22 ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00051d26 movs r2, 4 | r2 = 4;
0x00051d28 movs r3, 9 | r3 = 9;
0x00051d2a mov r1, r2 | r1 = r2;
0x00051d2c ldr r4, [r0] | r4 = *(r0);
0x00051d2e ldr r4, [r4, 0x38] | r4 = *((r4 + 0x38));
0x00051d30 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00051d32 ldrb.w r3, [r8, 0x2b] | r3 = *((r8 + 0x2b));
0x00051d36 b 0x51968 | goto label_11;
| label_37:
0x00051d38 ldr r7, [sp, 8] | r7 = var_8h;
0x00051d3a ldr.w fp, [r8, 0x44] | fp = *((r8 + 0x44));
0x00051d3e mov sb, r7 | sb = r7;
0x00051d40 b 0x51b44 | goto label_15;
| label_39:
0x00051d42 ldrb.w r3, [r8, 0x31] | r3 = *((r8 + 0x31));
0x00051d46 cmp r3, 0 |
| if (r3 != 0) {
0x00051d48 bne.w 0x51ebe | goto label_46;
| }
| label_24:
0x00051d4c ldr r0, [sp, 0x54] | r0 = var_54h;
0x00051d4e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00051d50 ldr r3, [r0] | r3 = *(r0);
0x00051d52 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00051d54 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00051d56 ldrb.w r3, [r8, 0x2f] | r3 = *((r8 + 0x2f));
0x00051d5a mov r4, r0 | r4 = r0;
| if (r3 == 0) {
0x00051d5c cbz r3, 0x51d70 | goto label_47;
| }
0x00051d5e ldrd r2, r3, [r8, 0x10] | __asm ("ldrd r2, r3, [r8, 0x10]");
0x00051d62 cmp r3, 0 |
0x00051d64 itt ge |
| if (r3 < 0) {
0x00051d66 movge r1, 0 | r1 = 0;
| }
| if (r3 >= 0) {
0x00051d68 movge sb, r1 | sb = r1;
| goto label_48;
| }
| if (r3 >= 0) {
| label_48:
0x00051d6a bge.w 0x51b00 | goto label_16;
| }
0x00051d6e movs r3, 0 | r3 = 0;
| label_47:
0x00051d70 mov sb, r3 | sb = r3;
0x00051d72 b 0x51b32 | goto label_17;
| label_43:
0x00051d74 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00051d76 mov r0, r8 | r0 = r8;
0x00051d78 str.w r3, [r8, 0x48] | __asm ("str.w r3, [r8, 0x48]");
0x00051d7c ldr.w r3, [r8, 0x3c] | r3 = *((r8 + 0x3c));
0x00051d80 adds r3, 1 | r3++;
0x00051d82 str.w r3, [r8, 0x3c] | __asm ("str.w r3, [r8, 0x3c]");
0x00051d86 bl 0x139d0 | fcn_000139d0 (r0);
0x00051d8a str.w r6, [r8, 0xc] | __asm ("str.w r6, [r8, 0xc]");
0x00051d8e b 0x51bc6 | goto label_18;
| label_38:
0x00051d90 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00051d94 movs r4, 7 | r4 = 7;
0x00051d96 adds r3, 0x18 | r3 += 0x18;
0x00051d98 mov r0, r3 | r0 = r3;
0x00051d9a str r3, [sp, 0x18] | var_18h = r3;
0x00051d9c blx 0x85dc | fcn_000085dc ();
0x00051da0 str r0, [sp, 0x30] | var_30h = r0;
0x00051da2 cmp r0, 0 |
| if (r0 == 0) {
0x00051da4 beq.w 0x51a64 | goto label_1;
| }
0x00051da8 ldr.w r3, [r8, 0x68] | r3 = *((r8 + 0x68));
0x00051dac cmp r3, 1 |
0x00051dae it eq |
| if (r3 != 1) {
0x00051db0 moveq r3, 0x18 | r3 = 0x18;
| }
| if (r3 != 1) {
0x00051db2 beq 0x51dca |
0x00051db4 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00051db6 subs r3, 2 | r3 -= 2;
0x00051db8 asrs r1, r2, 0x1f | r1 = r2 >> 0x1f;
0x00051dba umull r2, r6, r3, r2 | r2:r6 = r3 * r2;
0x00051dbe mla r6, r3, r1, r6 | __asm ("mla r6, r3, r1, r6");
0x00051dc2 adds.w r3, r2, 0x30 | r3 = r2 + 0x30;
0x00051dc6 adc r6, r6, 0 | __asm ("adc r6, r6, 0");
| }
0x00051dca ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00051dce movs r2, 8 | r2 = 8;
0x00051dd0 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00051dd2 ldr r4, [r0] | r4 = *(r0);
0x00051dd4 strd r3, r6, [sp] | __asm ("strd r3, r6, [sp]");
0x00051dd8 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00051dda blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00051ddc ldr r2, [sp, 0x30] | r2 = var_30h;
0x00051dde mov r4, r0 | r4 = r0;
0x00051de0 ldr.w r1, [r8, 0x68] | r1 = *((r8 + 0x68));
0x00051de4 ldr r3, [r2] | r3 = *(r2);
0x00051de6 rev r3, r3 | r3 = SWAP32 (r3);
0x00051de8 str.w r3, [r8, 0x4c] | __asm ("str.w r3, [r8, 0x4c]");
0x00051dec ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00051dee rev r3, r3 | r3 = SWAP32 (r3);
0x00051df0 str.w r3, [r8, 0x50] | __asm ("str.w r3, [r8, 0x50]");
0x00051df4 movs r3, 0 | r3 = 0;
0x00051df6 cmp fp, r1 |
0x00051df8 it hs |
| if (fp >= r1) {
0x00051dfa cmphs r0, r3 | __asm ("cmphs r0, r3");
| }
0x00051dfc str.w r3, [r8, 0x68] | __asm ("str.w r3, [r8, 0x68]");
| if (fp != r1) {
0x00051e00 bne 0x51ea0 | goto label_49;
| }
0x00051e02 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00051e04 add r4, sp, 0x6c | r4 += var_6ch;
0x00051e06 str.w fp, [sp, 0x20] | __asm ("str.w fp, [var_20h]");
0x00051e0a str.w sl, [sp, 0x38] | __asm ("str.w sl, [var_38h]");
0x00051e0e str r7, [sp, 0x3c] | var_3ch = r7;
0x00051e10 mov r7, r1 | r7 = r1;
0x00051e12 asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x00051e14 str.w sb, [sp, 0x40] | __asm ("str.w sb, [var_40h]");
0x00051e18 mov sb, r0 | sb = r0;
0x00051e1a str r5, [sp, 0x34] | var_34h = r5;
0x00051e1c str r3, [sp, 0x18] | var_18h = r3;
0x00051e1e mov r3, r2 | r3 = r2;
0x00051e20 adds r2, 0x18 | r2 += 0x18;
0x00051e22 mov sl, r3 | sl = r3;
0x00051e24 mov fp, r2 |
0x00051e26 str r4, [sp, 0x28] | var_28h = r4;
| do {
0x00051e28 subs r3, r7, 1 | r3 = r7 - 1;
0x00051e2a ldr r4, [sp, 0x18] | r4 = var_18h;
0x00051e2c umull r6, r5, r3, sb | r6:r5 = r3 * sb;
0x00051e30 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00051e34 mov r2, sb | r2 = sb;
0x00051e36 mov r1, sl | r1 = sl;
0x00051e38 ldr.w ip, [r0] | ip = *(r0);
0x00051e3c mla r5, r3, r4, r5 | __asm ("mla r5, r3, r4, r5");
0x00051e40 adds r6, 0x20 | r6 += 0x20;
0x00051e42 str r6, [sp] | *(sp) = r6;
0x00051e44 adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x00051e48 str r5, [sp, 4] | var_4h = r5;
0x00051e4a ldr.w r3, [ip, 8] | r3 = *((ip + 8));
0x00051e4e blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| if (r0 != 0) {
0x00051e50 cbz r0, 0x51e5c |
0x00051e52 mov r4, r0 | r4 = r0;
0x00051e54 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00051e56 blx 0x84f8 | fcn_000084f8 ();
0x00051e5a b 0x51a64 | goto label_1;
| }
0x00051e5c ldr.w r1, [sl] | r1 = *(sl);
0x00051e60 mov r3, fp | r3 = fp;
0x00051e62 ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x00051e66 mov r0, r8 | r0 = r8;
0x00051e68 ldr r4, [sp, 0x28] | r4 = var_28h;
0x00051e6a adds r7, 1 | r7++;
0x00051e6c rev r1, r1 | r1 = SWAP32 (r1);
0x00051e6e rev r2, r2 | r2 = SWAP32 (r2);
0x00051e70 str r4, [sp] | *(sp) = r4;
0x00051e72 bl 0x19760 | fcn_00019760 (r0, r1, r2, r3, r4);
0x00051e76 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00051e7a movs r2, 0x18 | r2 = 0x18;
0x00051e7c mov r1, r4 | r1 = r4;
0x00051e7e ldr r3, [r0] | r3 = *(r0);
0x00051e80 strd r6, r5, [sp] | __asm ("strd r6, r5, [sp]");
0x00051e84 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00051e86 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00051e88 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00051e8a cmp r3, r7 |
0x00051e8c it hs |
| if (r3 >= r7) {
0x00051e8e cmphs r0, 0 | __asm ("cmphs r0, 0");
| }
0x00051e90 beq 0x51e28 |
| } while (r3 == r7);
0x00051e92 ldr r5, [sp, 0x34] | r5 = var_34h;
0x00051e94 mov fp, r3 |
0x00051e96 ldrd sl, r7, [sp, 0x38] | __asm ("ldrd sl, r7, [var_38h]");
0x00051e9a mov r4, r0 | r4 = r0;
0x00051e9c ldr.w sb, [sp, 0x40] | sb = var_40h;
| label_49:
0x00051ea0 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00051ea2 blx 0x84f8 | fcn_000084f8 ();
0x00051ea6 cmp r4, 0 |
| if (r4 == 0) {
0x00051ea8 beq.w 0x51ada | goto label_19;
| }
0x00051eac b 0x51a64 | goto label_1;
| label_40:
0x00051eae mov r3, sb | r3 = sb;
0x00051eb0 ldr.w fp, [r8, 0x44] | fp = *((r8 + 0x44));
0x00051eb4 cmp r3, 0 |
0x00051eb6 ite le |
| if (r3 > 0) {
0x00051eb8 movle r7, 0 | r7 = 0;
| }
| if (r3 <= 0) {
0x00051eba movgt r7, 1 | r7 = 1;
| }
0x00051ebc b 0x51b44 | goto label_15;
| label_46:
0x00051ebe ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00051ec2 mov.w r6, 0x1000 | r6 = 0x1000;
0x00051ec6 ldr r3, [r0] | r3 = *(r0);
0x00051ec8 ldr r4, [r3, 0x2c] | r4 = *((r3 + 0x2c));
| if (r4 != 0) {
0x00051eca cbz r4, 0x51ee0 |
0x00051ecc blx r4 | r0 = uint32_t (*r4)(uint32_t) (r0);
0x00051ece cmp r0, 0x1f |
0x00051ed0 mov r6, r0 | r6 = r0;
| if (r0 <= 0x1f) {
0x00051ed2 ble 0x51f7a | goto label_50;
| }
0x00051ed4 cmp.w r0, 0x10000 |
0x00051ed8 it ge |
| if (r0 < 0x10000) {
0x00051eda movge r6, 0x10000 | r6 = 0x10000;
| }
0x00051edc adds r6, 0x80 | r6 += 0x80;
0x00051ede asrs r4, r6, 0x1f | r4 = r6 >> 0x1f;
| }
| label_23:
0x00051ee0 adds r3, r7, r6 | r3 = r7 + r6;
0x00051ee2 adc.w r1, sb, r4 | __asm ("adc.w r1, sb, r4");
0x00051ee6 subs r0, r3, 1 | r0 = r3 - 1;
0x00051ee8 mov r2, r6 | r2 = r6;
0x00051eea sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x00051eee mov r3, r4 | r3 = r4;
0x00051ef0 bl 0xac13c | r0 = fcn_000ac13c (r0, r1, r2, r3);
0x00051ef4 mul r4, r0, r4 | r4 = r0 * r4;
0x00051ef8 mla r4, r6, r1, r4 | __asm ("mla r4, r6, r1, r4");
0x00051efc umull r0, r6, r0, r6 | r0:r6 = r0 * r6;
0x00051f00 add r4, r6 | r4 += r6;
0x00051f02 cmp r7, r0 |
0x00051f04 sbcs.w r2, sb, r4 | __asm ("sbcs.w r2, sb, r4");
0x00051f08 strd r0, r4, [sp, 0x58] | __asm ("strd r0, r4, [var_58h]");
| if (r7 >= r0) {
0x00051f0c bge 0x51f82 | goto label_51;
| }
0x00051f0e movs r3, 0 | r3 = 0;
0x00051f10 strd r8, r5, [sp, 0x18] | __asm ("strd r8, r5, [var_1ch]");
0x00051f14 str.w fp, [sp, 0x20] | __asm ("str.w fp, [var_20h]");
0x00051f18 mov r5, sb | r5 = sb;
0x00051f1a str.w sl, [sp, 0x28] | __asm ("str.w sl, [var_28h]");
0x00051f1e add r6, sp, 0x50 | r6 += var_50h;
0x00051f20 ldr.w fp, [sp, 0x24] | fp = var_24h;
0x00051f24 mov sl, r3 | sl = r3;
0x00051f26 ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
0x00051f2a ldr r4, [sp, 0xc] | r4 = var_ch;
0x00051f2c ldr.w sb, [sp, 0x10] | sb = var_10h;
0x00051f30 b 0x51f4a |
| while (r0 == 0) {
0x00051f32 ldrd r2, r3, [sp, 0x58] | __asm ("ldrd r2, r3, [var_58h]");
0x00051f36 adds.w r7, r8, r7 | r7 = r8 + r7;
0x00051f3a adc.w r5, r4, r5 | __asm ("adc.w r5, r4, r5");
0x00051f3e add.w sl, sl, 1 | sl++;
0x00051f42 cmp r7, r2 |
0x00051f44 sbcs.w r3, r5, r3 | __asm ("sbcs.w r3, r5, r3");
| if (r7 >= r2) {
0x00051f48 bge 0x51f6a | goto label_52;
| }
0x00051f4a ldr.w r2, [sb, 0x18] | r2 = *((sb + 0x18));
0x00051f4e mov r3, fp | r3 = fp;
0x00051f50 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x00051f54 mov r0, r6 | r0 = r6;
0x00051f56 strd r7, r5, [sp] | __asm ("strd r7, r5, [sp]");
0x00051f5a bl 0x197d0 | r0 = fcn_000197d0 (r0, r1, r2, r3, r4, r5);
0x00051f5e cmp r0, 0 |
0x00051f60 beq 0x51f32 |
| }
0x00051f62 b 0x51a62 | goto label_20;
| label_41:
0x00051f64 ldr.w fp, [r8, 0x44] | fp = *((r8 + 0x44));
0x00051f68 b 0x51b3a | goto label_21;
| label_52:
0x00051f6a mov sb, sl | sb = sl;
0x00051f6c ldrd r8, r5, [sp, 0x18] | __asm ("ldrd r8, r5, [var_1ch]");
0x00051f70 ldr.w fp, [sp, 0x20] | fp = var_20h;
0x00051f74 ldr.w sl, [sp, 0x28] | sl = var_28h;
0x00051f78 b 0x51ae8 | goto label_22;
| label_50:
0x00051f7a mov.w r6, 0x200 | r6 = 0x200;
0x00051f7e movs r4, 0 | r4 = 0;
0x00051f80 b 0x51ee0 | goto label_23;
| label_51:
0x00051f82 cmp r4, sb |
0x00051f84 it eq |
| if (r4 != sb) {
0x00051f86 cmpeq r0, r7 | __asm ("cmpeq r0, r7");
| goto label_53;
| }
| if (r4 == sb) {
| label_53:
0x00051f88 beq.w 0x51d4c | goto label_24;
| }
0x00051f8c movs r3, 0 | r3 = 0;
0x00051f8e b 0x51ae6 | goto label_25;
| label_35:
0x00051f90 blx 0x7e8c | fcn_00007e8c ();
0x00051f94 stm r3!, {r4, r5, r7} | *(r3!) = r4;
| *((r3! + 4)) = r5;
| *((r3! + 8)) = r7;
0x00051f96 movs r7, r0 | r7 = r0;
0x00051f98 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00051f9a movs r0, r0 |
0x00051f9c stm r2!, {r2, r5} | *(r2!) = r2;
| *((r2! + 4)) = r5;
0x00051f9e movs r7, r0 | r7 = 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/libsqlite3.so.0.8.6 @ 0x51fa0 */
| #include <stdint.h>
|
; (fcn) fcn.00051fa0 () | void fcn_00051fa0 (uint32_t arg1, int16_t arg2) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00051fa0 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x00051fa4 mov r4, r1 | r4 = r1;
0x00051fa6 ldr r1, [pc, 0x14c] |
0x00051fa8 sub sp, 0x1c |
0x00051faa mov r6, r0 | r6 = r0;
0x00051fac ldr r2, [r0, 0x3c] | r2 = *((r0 + 0x3c));
0x00051fae ldr r3, [pc, 0x148] | r3 = *(0x520fa);
0x00051fb0 add r1, pc | r1 = 0xa40aa;
0x00051fb2 ldr r3, [r1, r3] |
0x00051fb4 ldr r1, [r2] | r1 = *(r2);
0x00051fb6 ldr r3, [r3] | r3 = *(0xa40aa);
0x00051fb8 str r3, [sp, 0x14] | var_14h = r3;
0x00051fba mov.w r3, 0 | r3 = 0;
0x00051fbe cmp r1, 0 |
| if (r1 == 0) {
0x00051fc0 beq 0x52072 | goto label_5;
| }
| label_2:
0x00051fc2 ldr r2, [r6, 0x24] | r2 = *((r6 + 0x24));
0x00051fc4 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x00051fc6 cmp r2, r3 |
| if (r2 <= r3) {
0x00051fc8 blo 0x52044 | goto label_6;
| }
0x00051fca mov r8, r4 | r8 = r4;
0x00051fcc cmp r4, 0 |
| if (r4 == 0) {
0x00051fce beq 0x52092 | goto label_7;
| }
0x00051fd0 ldr r7, [r4, 0x18] | r7 = *((r4 + 0x18));
0x00051fd2 b 0x52038 |
| while (r7 < r3) {
0x00051fd4 ldrh r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00051fd6 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x00051fd8 bmi 0x5203c | goto label_8;
| }
0x00051fda ldr.w r2, [r6, 0x98] | r2 = *((r6 + 0x98));
0x00051fde subs r3, r7, 1 | r3 = r7 - 1;
0x00051fe0 cmp r7, 1 |
0x00051fe2 umull r8, r5, r3, r2 | r8:r5 = r3 * r2;
0x00051fe6 asr.w r1, r2, 0x1f | r1 = r2 >> 0x1f;
0x00051fea mla r5, r3, r1, r5 | __asm ("mla r5, r3, r1, r5");
| if (r7 == 1) {
0x00051fee beq 0x520ae | goto label_9;
| }
0x00051ff0 ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x00051ff2 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00051ff4 ldr r3, [r0] | r3 = *(r0);
0x00051ff6 strd r8, r5, [sp] | __asm ("strd r8, r5, [sp]");
0x00051ffa ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00051ffc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00051ffe mov r8, r0 | r8 = r0;
| label_3:
0x00052000 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x00052002 clz r5, r8 | r5 &= r8;
0x00052006 ldr r0, [r6, 0x58] | r0 = *((r6 + 0x58));
0x00052008 lsrs r5, r5, 5 | r5 >>= 5;
0x0005200a cmp r7, r3 |
0x0005200c ldr.w r3, [r6, 0xc0] | r3 = *((r6 + 0xc0));
0x00052010 it hi |
| if (r7 <= r3) {
0x00052012 strhi r7, [r6, 0x20] | *((r6 + 0x20)) = r7;
| }
0x00052014 adds r3, 1 | r3++;
0x00052016 str.w r3, [r6, 0xc0] | __asm ("str.w r3, [r6, 0xc0]");
| if (r0 != 0) {
0x0005201a cbz r0, 0x52024 |
0x0005201c ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0005201e mov r1, r7 | r1 = r7;
0x00052020 bl 0x5187c | fcn_0005187c (r0, r1, r2);
| }
| label_0:
0x00052024 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x00052026 cmp r4, 0 |
0x00052028 ite eq |
| if (r4 != 0) {
0x0005202a moveq r5, 0 | r5 = 0;
| }
| if (r4 == 0) {
0x0005202c andne r5, r5, 1 | r5 &= 1;
| }
0x00052030 cmp r5, 0 |
| if (r5 == 0) {
0x00052032 beq 0x52092 | goto label_7;
| }
0x00052034 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x00052036 ldr r7, [r4, 0x18] | r7 = *((r4 + 0x18));
| label_1:
0x00052038 cmp r7, r3 |
0x0005203a bls 0x51fd4 |
| }
| label_8:
0x0005203c movs r5, 1 | r5 = 1;
0x0005203e mov.w r8, 0 | r8 = 0;
0x00052042 b 0x52024 | goto label_0;
| label_6:
0x00052044 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x00052046 cmp r1, 0 |
| if (r1 == 0) {
0x00052048 beq 0x520e6 | goto label_10;
| }
| label_4:
0x0005204a ldr.w r2, [r6, 0x98] | r2 = *((r6 + 0x98));
0x0005204e asrs r0, r2, 0x1f | r0 = r2 >> 0x1f;
0x00052050 umull r2, r1, r2, r3 | r2:r1 = r2 * r3;
0x00052054 mla r1, r3, r0, r1 | __asm ("mla r1, r3, r0, r1");
0x00052058 ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x0005205a str r2, [sp, 8] | var_8h = r2;
0x0005205c ldr r2, [r0] | r2 = *(r0);
0x0005205e str r1, [sp, 0xc] | var_ch = r1;
| if (r2 != 0) {
0x00052060 cbz r2, 0x5206c |
0x00052062 ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x00052064 movs r1, 5 | r1 = 5;
0x00052066 add r2, sp, 8 | r2 += var_8h;
0x00052068 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0005206a ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
| }
0x0005206c ldr r7, [r4, 0x18] | r7 = *((r4 + 0x18));
0x0005206e str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
0x00052070 b 0x52038 | goto label_1;
| label_5:
0x00052072 ldr r0, [r0] | r0 = *(r0);
0x00052074 movw r3, 0x7f7f |
0x00052078 str r1, [sp] | *(sp) = r1;
0x0005207a movt r3, 0x108 | r3 = 0x1087f7f;
0x0005207e ldr.w r5, [r6, 0x90] | r5 = *((r6 + 0x90));
0x00052082 ands r3, r5 | r3 &= r5;
0x00052084 ldr r5, [r0, 0x18] | r5 = *((r0 + 0x18));
0x00052086 orr r3, r3, 0x1e | r3 |= 0x1e;
0x0005208a blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0005208c mov r8, r0 | r8 = r0;
0x0005208e cmp r0, 0 |
| if (r0 == 0) {
0x00052090 beq 0x51fc2 | goto label_2;
| }
| label_7:
0x00052092 ldr r2, [pc, 0x68] |
0x00052094 ldr r3, [pc, 0x60] | r3 = *(0x520f8);
0x00052096 add r2, pc | r2 = 0xa4198;
0x00052098 ldr r3, [r2, r3] | r3 = *(0xa4198);
0x0005209a ldr r2, [r3] | r2 = *(0xa4198);
0x0005209c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005209e eors r2, r3 | r2 ^= r3;
0x000520a0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000520a4 bne 0x520ee | goto label_11;
| }
0x000520a6 mov r0, r8 | r0 = r8;
0x000520a8 add sp, 0x1c |
0x000520aa pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_9:
0x000520ae mov r0, r4 | r0 = r4;
0x000520b0 bl 0x17088 | fcn_00017088 (r0);
0x000520b4 ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x000520b6 ldr.w sb, [r4, 4] | sb = *((r4 + 4));
0x000520ba ldr.w r2, [r6, 0x98] | r2 = *((r6 + 0x98));
0x000520be ldr r3, [r0] | r3 = *(r0);
0x000520c0 mov r1, sb | r1 = sb;
0x000520c2 strd r8, r5, [sp] | __asm ("strd r8, r5, [sp]");
0x000520c6 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000520c8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000520ca ldr.w r1, [sb, 0x1c] | r1 = *((sb + 0x1c));
0x000520ce mov r8, r0 | r8 = r0;
0x000520d0 ldr.w r2, [sb, 0x20] | r2 = *((sb + 0x20));
0x000520d4 ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x000520d8 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x000520dc str r1, [r6, 0x6c] | *((r6 + 0x6c)) = r1;
0x000520de str r0, [r6, 0x68] | *((r6 + 0x68)) = r0;
0x000520e0 str r2, [r6, 0x70] | *((r6 + 0x70)) = r2;
0x000520e2 str r3, [r6, 0x74] | *((r6 + 0x74)) = r3;
0x000520e4 b 0x52000 | goto label_3;
| label_10:
0x000520e6 ldr r7, [r4, 0x18] | r7 = *((r4 + 0x18));
0x000520e8 cmp r2, r7 |
| if (r2 >= r7) {
0x000520ea bhs 0x52038 | goto label_1;
| }
0x000520ec b 0x5204a | goto label_4;
| label_11:
0x000520ee blx 0x7e8c | fcn_00007e8c ();
0x000520f2 nop |
0x000520f4 pop {r5, r6, r7} |
0x000520f6 movs r7, r0 | r7 = r0;
0x000520f8 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000520fa movs r0, r0 |
| if (r2 != 0) {
0x000520fc cbnz r2, 0x5217e | void (*0x5217e)() ();
| }
0x000520fe movs r7, r0 | r7 = 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/libsqlite3.so.0.8.6 @ 0x52100 */
| #include <stdint.h>
|
; (fcn) fcn.00052100 () | void fcn_00052100 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00052100 push {r4, r5, r6, lr} |
0x00052102 ldr r5, [r0, 0x28] | r5 = *((r0 + 0x28));
0x00052104 cmp r5, 0 |
| if (r5 != 0) {
0x00052106 bne 0x5218c | goto label_3;
| }
0x00052108 ldrb r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x0005210a mov r4, r0 | r4 = r0;
0x0005210c mov r6, r1 | r6 = r1;
| if (r3 == 0) {
0x0005210e cbz r3, 0x52154 | goto label_4;
| }
0x00052110 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 != r3) {
0x00052112 bne 0x52150 | goto label_5;
| }
0x00052114 ldrh r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x00052116 ands r3, r3, 8 | r3 &= 8;
| if (r3 != r3) {
0x0005211a bne 0x52150 | goto label_5;
| }
0x0005211c ldr.w r2, [r0, 0xc4] | r2 = *((r0 + 0xc4));
0x00052120 ldr.w r1, [r0, 0xd8] | r1 = *((r0 + 0xd8));
0x00052124 adds r2, 1 | r2++;
0x00052126 str.w r2, [r0, 0xc4] | __asm ("str.w r2, [r0, 0xc4]");
0x0005212a str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
| if (r1 == 0) {
0x0005212c cbz r1, 0x5216e | goto label_6;
| }
| do {
0x0005212e mov r0, r6 | r0 = r6;
0x00052130 bl 0x186c4 | r0 = fcn_000186c4 (r0);
0x00052134 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00052136 cbz r0, 0x52192 | goto label_7;
| }
| label_0:
0x00052138 uxtb r3, r5 | r3 = (int8_t) r5;
0x0005213a cmp r3, 0xa |
0x0005213c it ne |
| if (r3 != 0xa) {
0x0005213e cmpne r3, 0xd | __asm ("cmpne r3, 0xd");
| }
| if (r3 == 0xa) {
0x00052140 bne 0x52150 |
0x00052142 ldr r3, [pc, 0x7c] |
0x00052144 movs r2, 6 | r2 = 6;
0x00052146 str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x00052148 strb r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0005214a add r3, pc | r3 = 0xa4310;
0x0005214c str.w r3, [r4, 0xcc] | __asm ("str.w r3, [r4, 0xcc]");
| }
| label_5:
0x00052150 mov r0, r5 | r0 = r5;
0x00052152 pop {r4, r5, r6, pc} |
| label_4:
0x00052154 ldr.w r2, [r0, 0xc4] | r2 = *((r0 + 0xc4));
0x00052158 ldr.w r1, [r0, 0xd8] | r1 = *((r0 + 0xd8));
0x0005215c adds r2, 1 | r2++;
0x0005215e str.w r2, [r0, 0xc4] | __asm ("str.w r2, [r0, 0xc4]");
0x00052162 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00052164 cmp r1, 0 |
0x00052166 bne 0x5212e |
| } while (r1 != 0);
0x00052168 ldrh r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x0005216a lsls r3, r3, 0x1c | r3 <<= 0x1c;
| if (r3 < r3) {
0x0005216c bmi 0x521a2 | goto label_8;
| }
| label_6:
0x0005216e ldrb r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00052170 cmp r3, 3 |
| if (r3 == 3) {
0x00052172 beq 0x521a2 | goto label_8;
| }
| label_2:
0x00052174 mov r1, r6 | r1 = r6;
0x00052176 mov r0, r4 | r0 = r4;
0x00052178 bl 0x51fa0 | r0 = fcn_00051fa0 (r0, r1);
0x0005217c mov r5, r0 | r5 = r0;
| label_1:
0x0005217e cmp r5, 0 |
| if (r5 != 0) {
0x00052180 bne 0x52138 | goto label_0;
| }
0x00052182 mov r0, r6 | r0 = r6;
0x00052184 bl 0x15770 | fcn_00015770 (r0);
0x00052188 mov r0, r5 | r0 = r5;
0x0005218a pop {r4, r5, r6, pc} |
| label_3:
0x0005218c movs r5, 0 | r5 = 0;
0x0005218e mov r0, r5 | r0 = r5;
0x00052190 pop {r4, r5, r6, pc} |
| label_7:
0x00052192 mov r3, r0 | r3 = r0;
0x00052194 mov r2, r0 | r2 = r0;
0x00052196 mov r1, r6 | r1 = r6;
0x00052198 mov r0, r4 | r0 = r4;
0x0005219a bl 0x518c8 | r0 = fcn_000518c8 (r0, r1, r2, r3);
0x0005219e mov r5, r0 | r5 = r0;
0x000521a0 b 0x5217e | goto label_1;
| label_8:
0x000521a2 movs r1, 4 | r1 = 4;
0x000521a4 mov r0, r4 | r0 = r4;
0x000521a6 bl 0x14e60 | fcn_00014e60 (r0, r1);
0x000521a8 cdp2 p6, 5, c4, c11, c5, 0 | __asm ("cdp2 p6, 5, c4, c11, c5, 0");
0x000521ac cmp r0, 0 |
| if (r0 != 0) {
0x000521ae bne 0x52138 | goto label_0;
| }
0x000521b0 movs r1, 1 | r1 = 1;
0x000521b2 mov r0, r4 | r0 = r4;
0x000521b4 bl 0x511ac | r0 = fcn_000511ac (r0, r1);
0x000521b8 mov r5, r0 | r5 = r0;
0x000521ba cmp r0, 0 |
| if (r0 == 0) {
0x000521bc beq 0x52174 | goto label_2;
| }
0x000521be b 0x52138 | 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/libsqlite3.so.0.8.6 @ 0x522c0 */
| #include <stdint.h>
|
| #define SWAP64(val) ((uint64_t) (((val & 0x00000000000000ffull) << 56) | \
| ((val & 0x000000000000ff00ull) << 40) | \
| ((val & 0x0000000000ff0000ull) << 24) | \
| ((val & 0x00000000ff000000ull) << 8) | \
| ((val & 0x000000ff00000000ull) >> 8) | \
| ((val & 0x0000ff0000000000ull) >> 24) | \
| ((val & 0x00ff000000000000ull) >> 40) | \
| ((val & 0xff00000000000000ull) >> 56)))
| #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) fcn.000522c0 () | void fcn_000522c0 (int16_t arg_1h, int16_t arg_50h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_1h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000522c0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000522c4 sub sp, 0x2c |
0x000522c6 str r2, [sp, 0xc] | var_ch = r2;
0x000522c8 subs.w r8, r3, 0 | r8 = r3 - 0;
0x000522cc mov r6, r1 | r6 = r1;
0x000522ce add.w sb, sp, 0x20 | sb += var_20h;
0x000522d2 ldr r2, [pc, 0x2c8] |
0x000522d4 mov r4, r0 | r4 = r0;
0x000522d6 ldr r3, [pc, 0x2c8] | r3 = *(0x525a2);
0x000522d8 mov r1, sb | r1 = sb;
0x000522da vldr d16, [r6] | __asm ("vldr d16, [r6]");
0x000522de add r2, pc | r2 = 0xa4880;
0x000522e0 ldr.w sl, [r0, 0xd0] | sl = *((r0 + 0xd0));
0x000522e4 ldr r3, [r2, r3] |
0x000522e6 mov.w r2, 4 | r2 = 4;
0x000522ea ldr r3, [r3] | r3 = *(0xa4880);
0x000522ec str r3, [sp, 0x24] | var_24h = r3;
0x000522ee mov.w r3, 0 | r3 = 0;
0x000522f2 ldrd r3, r7, [r0, 0x40] | __asm ("ldrd r3, r7, [r0, 0x40]");
0x000522f6 it ne |
| if (r8 == r3) {
0x000522f8 movne r7, r3 | r7 = r3;
| }
0x000522fa ldr r3, [r7] | r3 = *(r7);
0x000522fc mov r0, r7 | r0 = r7;
0x000522fe vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00052302 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00052304 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00052306 mov r5, r0 | r5 = r0;
0x00052308 cmp r0, 0 |
| if (r0 != 0) {
0x0005230a bne.w 0x52460 | goto label_0;
| }
0x0005230e ldr r3, [r6] | r3 = *(r6);
0x00052310 mov r0, r7 | r0 = r7;
0x00052312 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00052314 ldr r1, [r7] | r1 = *(r7);
0x00052316 adds r3, 4 | r3 += 4;
0x00052318 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0005231c strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00052320 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00052322 ldr r5, [r1, 8] | r5 = *((r1 + 8));
0x00052324 mov r1, sl | r1 = sl;
0x00052326 ldr.w r2, [r4, 0x98] | r2 = *((r4 + 0x98));
0x0005232a str r3, [sp, 0x10] | var_10h = r3;
0x0005232c blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005232e mov r5, r0 | r5 = r0;
0x00052330 cmp r0, 0 |
| if (r0 != 0) {
0x00052332 bne.w 0x52460 | goto label_0;
| }
0x00052336 ldr.w r1, [r4, 0x98] | r1 = *((r4 + 0x98));
0x0005233a ldrd r0, r2, [r6] | __asm ("ldrd r0, r2, [r6]");
0x0005233e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00052340 add.w ip, r1, 4 |
0x00052344 add.w ip, ip, r8, lsl 2 |
0x00052348 rev.w fp, r3 | r3 = SWAPundefined (fp);
0x0005234c adds.w r0, ip, r0 | r0 = ip + r0;
0x00052350 adc.w r2, r2, ip, asr 31 | __asm ("adc.w r2, r2, ip, asr 31");
0x00052354 str r0, [sp, 0x14] | var_14h = r0;
0x00052356 strd r0, r2, [r6] | __asm ("strd r0, r2, [r6]");
0x0005235a cmp r3, 0 |
| if (r3 == 0) {
0x0005235c beq.w 0x524dc | goto label_26;
| }
0x00052360 ldr r3, [pc, 0x240] |
0x00052362 str r2, [sp, 0x10] | var_10h = r2;
0x00052364 add r3, pc | r3 = 0xa490c;
0x00052366 ldr.w r0, [r3, 0x118] | r0 = *(0xa4a24);
0x0005236a bl 0xab8f8 | fcn_000ab8f8 (r0, r1);
0x0005236e adds r0, 1 | r0++;
0x00052370 cmp r0, fp |
| if (r0 == fp) {
0x00052372 beq.w 0x524dc | goto label_26;
| }
0x00052376 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00052378 cmp r3, fp |
| if (r3 <= fp) {
0x0005237a blo 0x52460 | goto label_0;
| }
0x0005237c ldrd r0, r2, [sp, 0xc] | __asm ("ldrd r0, r2, [var_ch]");
0x00052380 cmp r0, 0 |
| if (r0 == 0) {
0x00052382 beq.w 0x5248e | goto label_27;
| }
0x00052386 mov r1, fp | r1 = fp;
0x00052388 bl 0x9154 | r0 = fcn_00009154 (r0, r1, r2);
0x0005238c cmp r0, 0 |
| if (r0 != 0) {
0x0005238e bne 0x52460 | goto label_0;
| }
0x00052390 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00052392 cmp.w r8, 0 |
| if (r8 != 0) {
0x00052396 bne 0x52494 | goto label_28;
| }
| label_3:
0x00052398 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0005239a mov r1, fp | r1 = fp;
0x0005239c bl 0x17b94 | r0 = fcn_00017b94 (r0, r1, r2);
0x000523a0 cmp r0, 0 |
| if (r0 != 0) {
0x000523a2 bne.w 0x524fc | goto label_29;
| }
| label_2:
0x000523a6 cmp.w fp, 1 |
| if (fp == 1) {
0x000523aa bne 0x523bc |
0x000523ac ldrb.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x000523b0 ldrsh.w r2, [r4, 0x8e] | r2 = *((r4 + 0x8e));
0x000523b4 cmp r2, r3 |
0x000523b6 it ne |
| if (r2 == r3) {
0x000523b8 strhne r3, [r4, 0x8e] | __asm ("strhne r3, [r4, 0x8e]");
| goto label_30;
| }
| }
| label_30:
0x000523bc ldr.w r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
0x000523c0 cmp r3, 0 |
| if (r3 == 0) {
0x000523c2 beq.w 0x5253e | goto label_31;
| }
0x000523c6 ldr r0, [r4, 0x3c] | r0 = *((r4 + 0x3c));
0x000523c8 movs r3, 0 | r3 = 0;
0x000523ca str r3, [sp, 0x1c] | var_1ch = r3;
0x000523cc ldr r7, [r0] | r7 = *(r0);
0x000523ce cmp.w r8, 0 |
| if (r8 != 0) {
0x000523d2 bne 0x5247e | goto label_6;
| }
| label_7:
0x000523d4 movs r3, 0 | r3 = 0;
0x000523d6 movs r2, 1 | r2 = 1;
0x000523d8 cbz r7, 0x52400 |
| while (r7 != 0) {
| label_4:
0x000523da ldrb r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x000523dc subs r1, 1 | r1--;
0x000523de cmp r1, 2 |
0x000523e0 ite ls |
| if (r1 > 2) {
0x000523e2 movls r2, 0 | r2 = 0;
| }
| if (r1 <= 2) {
0x000523e4 andhi r2, r2, 1 | r2 &= 1;
| }
0x000523e8 cmp r2, 0 |
| if (r2 != 0) {
0x000523ea bne.w 0x52500 | goto label_32;
| }
0x000523ee eor r2, r8, 1 | r2 = r8 ^ 1;
0x000523f2 cmp r3, 0 |
0x000523f4 ite ne |
| if (r3 == 0) {
0x000523f6 movne r2, 0 | r2 = 0;
| }
| if (r3 != 0) {
0x000523f8 andeq r2, r2, 1 | r2 &= 1;
| }
0x000523fc cmp r2, 0 |
| if (r2 == 0) {
0x000523fe beq 0x52488 | goto label_5;
| }
0x00052400 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00052402 add r2, sp, 0x1c | r2 += var_1ch;
0x00052404 ldr.w r5, [r4, 0xcc] | r5 = *((r4 + 0xcc));
0x00052408 mov r1, fp | r1 = fp;
0x0005240a mov r0, r4 | r0 = r4;
0x0005240c orr r3, r3, 2 | r3 |= 2;
0x00052410 strb r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00052412 movs r3, 1 | r3 = 1;
0x00052414 blx r5 | uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00052416 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00052418 mov r5, r0 | r5 = r0;
0x0005241a bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0005241e strb r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
| if (r0 == 0) {
0x00052420 cbnz r0, 0x52460 |
0x00052422 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00052424 ldrh r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x00052426 tst.w r2, 0x11 |
| if ((r2 & 0x11) != 0) {
0x0005242a beq 0x5243c |
0x0005242c movw r1, 0xffef | r1 = 0xffef;
0x00052430 ands r1, r2 | r1 &= r2;
0x00052432 lsls r2, r2, 0x1f | r2 <<= 0x1f;
0x00052434 it pl |
| if (r2 >= r2) {
0x00052436 strhpl r1, [r3, 0x1c] | __asm ("strhpl r1, [r3, 0x1c]");
| }
| if (r2 < r2) {
0x00052438 bmi.w 0x5256e | goto label_33;
| }
| }
| label_1:
0x0005243c ldr r6, [r3, 4] | r6 = *((r3 + 4));
0x0005243e mov r1, sl | r1 = sl;
0x00052440 ldr.w r2, [r4, 0x98] | r2 = *((r4 + 0x98));
0x00052444 mov r0, r6 | r0 = r6;
0x00052446 blx 0x7dcc | fcn_00007dcc ();
0x0005244a ldr.w r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0005244e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00052450 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00052452 cmp.w fp, 1 |
| if (fp == 1) {
0x00052456 beq.w 0x52586 | goto label_34;
| }
| label_8:
0x0005245a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0005245c bl 0x11f5c | fcn_00011f5c (r0);
| }
| label_0:
0x00052460 ldr r2, [pc, 0x144] |
0x00052462 ldr r3, [pc, 0x13c] | r3 = *(0x525a2);
0x00052464 add r2, pc | r2 = 0xa4a10;
0x00052466 ldr r3, [r2, r3] | r3 = *(0xa4a10);
0x00052468 ldr r2, [r3] | r2 = *(0xa4a10);
0x0005246a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005246c eors r2, r3 | r2 ^= r3;
0x0005246e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00052472 bne.w 0x52598 | goto label_35;
| }
0x00052476 mov r0, r5 | r0 = r5;
0x00052478 add sp, 0x2c |
0x0005247a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0005247e ldrb r2, [r4, 7] | r2 = *((r4 + 7));
| if (r2 == 0) {
0x00052480 cbz r2, 0x524e0 | goto label_36;
| }
0x00052482 movs r2, 1 | r2 = 1;
0x00052484 cmp r7, 0 |
0x00052486 bne 0x523da |
| }
| label_5:
0x00052488 cmp r3, 0 |
| if (r3 == 0) {
0x0005248a beq 0x52460 | goto label_0;
| }
0x0005248c b 0x5243c | goto label_1;
| label_27:
0x0005248e cmp.w r8, 0 |
| if (r8 == 0) {
0x00052492 beq 0x523a6 | goto label_2;
| }
| label_28:
0x00052494 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00052496 mov r1, sb | r1 = sb;
0x00052498 subs r0, r3, 4 | r0 = r3 - 4;
0x0005249a ldr r3, [r7] | r3 = *(r7);
0x0005249c adc r2, r2, -1 | __asm ("adc r2, r2, -1");
0x000524a0 strd r0, r2, [sp] | __asm ("strd r0, r2, [sp]");
0x000524a4 mov r0, r7 | r0 = r7;
0x000524a6 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000524a8 movs r2, 4 | r2 = 4;
0x000524aa blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| if (r0 != 0) {
0x000524ac cbnz r0, 0x524fc | goto label_29;
| }
0x000524ae ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x000524b0 ldr r0, [sp, 0x20] | r0 = var_20h;
| if (r3 != 0) {
0x000524b2 cbnz r3, 0x524d2 | goto label_37;
| }
0x000524b4 ldr.w r3, [r4, 0x98] | r3 = *((r4 + 0x98));
0x000524b8 ldr r2, [r4, 0x30] | r2 = *((r4 + 0x30));
0x000524ba subs r3, 0xc8 | r3 -= 0xc8;
0x000524bc cmp r3, 0 |
| if (r3 <= 0) {
0x000524be ble 0x524cc | goto label_38;
| }
| do {
0x000524c0 ldrb.w r1, [sl, r3] | r1 = *((sl + r3));
0x000524c4 subs r3, 0xc8 | r3 -= 0xc8;
0x000524c6 cmp r3, 0 |
0x000524c8 add r2, r1 | r2 += r1;
0x000524ca bgt 0x524c0 |
| } while (r3 > 0);
| label_38:
0x000524cc rev r0, r0 | r0 = SWAP32 (r0);
0x000524ce cmp r0, r2 |
| if (r0 != r2) {
0x000524d0 bne 0x524dc | goto label_26;
| }
| label_37:
0x000524d2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000524d4 cmp r3, 0 |
| if (r3 != 0) {
0x000524d6 bne.w 0x52398 | goto label_3;
| }
0x000524da b 0x523a6 | goto label_2;
| label_26:
0x000524dc movs r5, 0x65 | r5 = 0x65;
0x000524de b 0x52460 | goto label_0;
| label_36:
0x000524e0 ldrd r2, r1, [r6] | __asm ("ldrd r2, r1, [r6]");
0x000524e4 ldr r6, [r4, 0x50] | r6 = *((r4 + 0x50));
0x000524e6 cmp r6, r2 |
0x000524e8 ldr r2, [r4, 0x54] | r2 = *((r4 + 0x54));
0x000524ea sbcs.w r1, r2, r1 | __asm ("sbcs.w r1, r2, r1");
0x000524ee ite ge |
| if (r6 < r2) {
0x000524f0 movge r2, 1 | r2 = 1;
| }
| if (r6 >= r2) {
0x000524f2 movlt r2, 0 | r2 = 0;
| }
0x000524f4 cmp r7, 0 |
| if (r7 != 0) {
0x000524f6 bne.w 0x523da | goto label_4;
| }
0x000524fa b 0x52488 | goto label_5;
| label_29:
0x000524fc mov r5, r0 | r5 = r0;
0x000524fe b 0x52460 | goto label_0;
| label_32:
0x00052500 ldr.w r2, [r4, 0x98] | r2 = *((r4 + 0x98));
0x00052504 add.w r5, fp, -1 | r5 = fp + -1;
0x00052508 mov r1, sl | r1 = sl;
0x0005250a umull r3, r6, r5, r2 | r3:r6 = r5 * r2;
0x0005250e asr.w ip, r2, 0x1f |
0x00052512 mla r5, r5, ip, r6 | __asm ("mla r5, r5, ip, r6");
0x00052516 strd r3, r5, [sp] | __asm ("strd r3, r5, [sp]");
0x0005251a ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x0005251c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0005251e ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00052520 mov r5, r0 | r5 = r0;
0x00052522 ldr r0, [r4, 0x58] | r0 = *((r4 + 0x58));
0x00052524 cmp r3, fp |
0x00052526 it lo |
| if (r3 >= fp) {
0x00052528 strlo fp, [r4, 0x20] | *((r4 + 0x20)) = fp;
| }
| if (r0 == 0) {
0x0005252c cbz r0, 0x5257c | goto label_39;
| }
0x0005252e mov r2, sl | r2 = sl;
0x00052530 mov r1, fp | r1 = fp;
0x00052532 bl 0x5187c | fcn_0005187c (r0, r1, r2);
0x00052536 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00052538 cmp r3, 0 |
| if (r3 == 0) {
0x0005253a beq 0x52460 | goto label_0;
| }
0x0005253c b 0x5243c | goto label_1;
| label_31:
0x0005253e mov r1, fp | r1 = fp;
0x00052540 mov r0, r4 | r0 = r4;
0x00052542 bl 0x14258 | r0 = fcn_00014258 (r0, r1);
0x00052546 mov r3, r0 | r3 = r0;
0x00052548 str r0, [sp, 0x1c] | var_1ch = r0;
0x0005254a ldr r0, [r4, 0x3c] | r0 = *((r4 + 0x3c));
0x0005254c ldr r7, [r0] | r7 = *(r0);
0x0005254e cmp.w r8, 0 |
| if (r8 != 0) {
0x00052552 bne 0x5247e | goto label_6;
| }
0x00052554 cmp r3, 0 |
| if (r3 == 0) {
0x00052556 beq.w 0x523d4 | goto label_7;
| }
0x0005255a ldrh r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x0005255c eor r2, r2, 8 | r2 ^= 8;
0x00052560 ubfx r2, r2, 3, 1 | r2 = (r2 >> 3) & ((1 << 1) - 1);
0x00052564 cmp r7, 0 |
| if (r7 != 0) {
0x00052566 bne.w 0x523da | goto label_4;
| }
0x0005256a mov r5, r8 | r5 = r8;
0x0005256c b 0x5243c | goto label_1;
| label_33:
0x0005256e eor r1, r1, 3 | r1 ^= 3;
0x00052572 mov r0, r3 | r0 = r3;
0x00052574 strh r1, [r3, 0x1c] | *((r3 + 0x1c)) = r1;
0x00052576 movs r1, 2 | r1 = 2;
0x00052578 bl 0x91e0 | fcn_000091e0 (r0, r1);
| label_39:
0x0005257c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005257e cmp r3, 0 |
| if (r3 == 0) {
0x00052580 beq.w 0x52460 | goto label_0;
| }
0x00052584 b 0x5243c | goto label_1;
| label_34:
0x00052586 ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x00052588 ldr r1, [r6, 0x1c] | r1 = *((r6 + 0x1c));
0x0005258a ldr r2, [r6, 0x20] | r2 = *((r6 + 0x20));
0x0005258c ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x0005258e str r0, [r4, 0x68] | *((r4 + 0x68)) = r0;
0x00052590 str r1, [r4, 0x6c] | *((r4 + 0x6c)) = r1;
0x00052592 str r2, [r4, 0x70] | *((r4 + 0x70)) = r2;
0x00052594 str r3, [r4, 0x74] | *((r4 + 0x74)) = r3;
0x00052596 b 0x5245a | goto label_8;
| label_35:
0x00052598 blx 0x7e8c | fcn_00007e8c ();
| if (r2 == 0) {
0x0005259c cbnz r2, 0x525cc |
0x0005259e movs r7, r0 | r7 = r0;
0x000525a0 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000525a2 movs r0, r0 |
0x000525a4 pop {r5, r7} |
0x000525a6 movs r7, r0 | r7 = r0;
0x000525a8 invalid |
| }
0x000525cc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000525ce ittt lt |
| if (r7 >= r0) {
0x000525d0 addlt r8, sl, sl, lsl 1 | r8 = sl + (sl << 1);
| }
| if (r7 >= r0) {
0x000525d4 movlt sb, sl | sb = sl;
| }
| if (r7 < r0) {
0x000525d6 lsl.w r8, r8, 4 | r8 <<= 4;
| }
0x000525da ldr r3, [r3] | r3 = *(r3);
0x000525dc str r3, [sp, 0x24] | var_24h = r3;
0x000525de mov.w r3, 0 | r3 = 0;
| if (r7 >= r0) {
0x000525e2 bge 0x52618 | goto label_40;
| }
| label_9:
0x000525e4 ldr r3, [r5, 0x5c] | r3 = *((r5 + 0x5c));
0x000525e6 add r3, r8 | r3 += r8;
0x000525e8 ldr r7, [r3, 0x10] | r7 = *((r3 + 0x10));
| if (r7 == 0) {
0x000525ea cbz r7, 0x5260c | goto label_41;
| }
0x000525ec ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r3 == 0) {
0x000525ee cbz r3, 0x52604 | goto label_42;
| }
0x000525f0 add.w r4, r7, 8 | r4 = r7 + 8;
0x000525f4 add.w r6, r7, 0x1fc | r6 = r7 + 0x1fc;
| do {
0x000525f8 ldr r0, [r4, 4]! | r0 = *((r4 += 4));
0x000525fc bl 0x1cc44 | fcn_0001cc44 (r0, r1, r2, r3);
0x00052600 cmp r4, r6 |
0x00052602 bne 0x525f8 |
| } while (r4 != r6);
| label_42:
0x00052604 mov r0, r7 | r0 = r7;
0x00052606 blx 0x84f8 | fcn_000084f8 ();
0x0005260a ldr r1, [r5, 0x60] | r1 = *((r5 + 0x60));
| label_41:
0x0005260c add.w sb, sb, 1 | sb += var_1h;
0x00052610 add.w r8, r8, 0x30 | r8 += 0x30;
0x00052614 cmp sb, r1 |
| if (sb < r1) {
0x00052616 blt 0x525e4 | goto label_9;
| }
| label_40:
0x00052618 cmp.w fp, 1 |
0x0005261c str.w sl, [r5, 0x60] | __asm ("str.w sl, [r5, 0x60]");
| if (fp == 1) {
0x00052620 beq.w 0x527c6 | goto label_43;
| }
0x00052624 ldr.w r8, [r5, 0xd8] | r8 = *((r5 + 0xd8));
0x00052628 cmp.w r8, 0 |
| if (r8 == 0) {
0x0005262c beq.w 0x527fa | goto label_44;
| }
0x00052630 cmp.w sl, 0 |
| if (sl == 0) {
0x00052634 beq.w 0x528a4 | goto label_45;
| }
0x00052638 add.w r3, sl, sl, lsl 1 | r3 = sl + (sl << 1);
0x0005263c ldr r2, [r5, 0x5c] | r2 = *((r5 + 0x5c));
0x0005263e lsls r3, r3, 4 | r3 <<= 4;
0x00052640 subs r3, 0x30 | r3 -= 0x30;
0x00052642 adds r3, r2, r3 | r3 = r2 + r3;
0x00052644 str r3, [sp, 0xc] | var_ch = r3;
| if (r3 == r2) {
0x00052646 beq.w 0x528a4 | goto label_45;
| }
| label_23:
0x0005264a ldr r6, [sp, 0xc] | r6 = var_ch;
0x0005264c mov.w r0, 0x200 | r0 = 0x200;
0x00052650 movs r1, 0 | r1 = 0;
0x00052652 ldr r4, [r6, 0x14] | r4 = *((r6 + 0x14));
0x00052654 bl 0x1c520 | r0 = fcn_0001c520 (r0);
0x00052658 mov r8, r0 | r8 = r0;
0x0005265a cmp r0, 0 |
| if (r0 == 0) {
0x0005265c beq.w 0x52826 | goto label_46;
| }
0x00052660 str r4, [r0] | *(r0) = r4;
0x00052662 ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00052664 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x00052666 ldrd sl, r7, [r5, 0x48] | __asm ("ldrd sl, r7, [r5, 0x48]");
0x0005266a strb r3, [r5, 0x12] | *((r5 + 0x12)) = r3;
0x0005266c ldr.w r3, [r5, 0xd8] | r3 = *((r5 + 0xd8));
0x00052670 str r2, [r5, 0x18] | *((r5 + 0x18)) = r2;
0x00052672 cmp r3, 0 |
| if (r3 == 0) {
0x00052674 beq.w 0x5282a | goto label_47;
| }
| label_15:
0x00052678 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0005267c movs r2, 0 | r2 = 0;
0x0005267e mov r3, r2 | r3 = r2;
0x00052680 vstr d16, [r5, 0x48] | __asm ("vstr d16, [r5, 0x48]");
| label_18:
0x00052684 add.w fp, r5, 0x48 |
| do {
| label_10:
0x00052688 cmp r2, sl |
0x0005268a sbcs r3, r7 | __asm ("sbcs r3, r7");
| if (r2 >= sl) {
0x0005268c bge.w 0x527f6 | goto label_48;
| }
0x00052690 add r0, sp, 0x18 | r0 += var_18h;
0x00052692 mov r3, r7 | r3 = r7;
0x00052694 str r0, [sp, 4] | var_4h = r0;
0x00052696 add r0, sp, 0x14 | r0 += var_14h;
0x00052698 movs r1, 0 | r1 = 0;
0x0005269a str r0, [sp] | *(sp) = r0;
0x0005269c mov r2, sl | r2 = sl;
0x0005269e mov r0, r5 | r0 = r5;
0x000526a0 str r1, [sp, 0x14] | var_14h = r1;
0x000526a2 bl 0x2079c | fcn_0002079c (r0, r1, r2, r3, r4, r5);
0x000526a6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000526a8 mov r4, r0 | r4 = r0;
| if (r3 == 0) {
0x000526aa cbnz r3, 0x526c6 |
0x000526ac ldr r2, [r5, 0x50] | r2 = *((r5 + 0x50));
0x000526ae ldr.w r3, [r5, 0x94] | r3 = *((r5 + 0x94));
0x000526b2 ldrd r0, r1, [r5, 0x48] | __asm ("ldrd r0, r1, [r5, 0x48]");
0x000526b6 adds r3, r3, r2 | r3 += r2;
0x000526b8 ldr r2, [r5, 0x54] | r2 = *((r5 + 0x54));
0x000526ba adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x000526be cmp r2, r1 |
0x000526c0 it eq |
| if (r2 == r1) {
0x000526c2 cmpeq r3, r0 | __asm ("cmpeq r3, r0");
| }
| if (r2 == r1) {
0x000526c4 beq 0x527ae | goto label_49;
| }
| }
| if (r4 != 0) {
| label_12:
0x000526c6 cbnz r4, 0x526f4 | goto label_14;
| }
0x000526c8 ldr.w sb, [sp, 0x14] | sb = var_14h;
0x000526cc mov r6, r4 | r6 = r4;
| label_11:
0x000526ce cmp r6, sb |
0x000526d0 ldrd r2, r3, [r5, 0x48] | __asm ("ldrd r2, r3, [r5, 0x48]");
0x000526d4 beq 0x52688 |
| } while (r6 == sb);
0x000526d6 cmp r2, sl |
0x000526d8 sbcs.w r1, r3, r7 | __asm ("sbcs.w r1, r3, r7");
| if (r2 >= sl) {
0x000526dc bge 0x52688 | goto label_10;
| }
0x000526de movs r3, 1 | r3 = 1;
0x000526e0 mov r2, r8 | r2 = r8;
0x000526e2 mov r1, fp | r1 = fp;
0x000526e4 mov r0, r5 | r0 = r5;
0x000526e6 str r3, [sp] | *(sp) = r3;
0x000526e8 add r6, r3 | r6 += r3;
0x000526ea bl 0x522c0 | r0 = fcn_000522c0 (r0, r1, r2, r3, r4, r5);
0x000526ee cmp r0, 0 |
| if (r0 == 0) {
0x000526f0 beq 0x526ce | goto label_11;
| }
0x000526f2 mov r4, r0 | r4 = r0;
| label_14:
0x000526f4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000526f6 cmp r3, 0 |
| if (r3 == 0) {
0x000526f8 beq 0x52764 | goto label_17;
| }
0x000526fa ldr r6, [r3, 0x18] | r6 = *((r3 + 0x18));
0x000526fc ldr.w r3, [r5, 0x98] | r3 = *((r5 + 0x98));
0x00052700 ldr.w r0, [r5, 0xd8] | r0 = *((r5 + 0xd8));
0x00052704 adds r3, 4 | r3 += 4;
0x00052706 asrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x00052708 umull r3, r2, r3, r6 | r3:r2 = r3 * r6;
0x0005270c mla r2, r6, r1, r2 | __asm ("mla r2, r6, r1, r2");
0x00052710 strd r3, r2, [sp, 0x18] | __asm ("strd r3, r2, [var_18h]");
0x00052714 cmp r0, 0 |
| if (r0 == 0) {
0x00052716 beq.w 0x5281c | goto label_50;
| }
| label_20:
0x0005271a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005271c ldr r2, [r3, 0x2c] | r2 = *((r3 + 0x2c));
0x0005271e ldr r3, [r0, 0x70] | r3 = *((r0 + 0x70));
0x00052720 cmp r2, r3 |
0x00052722 ittet ne |
| if (r2 == r3) {
0x00052724 ldrne r1, [sp, 0xc] | r1 = var_ch;
| }
| if (r2 == r3) {
0x00052726 movne r3, 0 | r3 = 0;
| }
| if (r2 != r3) {
0x00052728 ldreq r3, [sp, 0xc] | r3 = var_ch;
| }
| if (r2 == r3) {
0x0005272a strne r3, [r1, 0x20] | *((r1 + 0x20)) = r3;
| }
0x0005272c itet ne |
| if (r2 == r3) {
0x0005272e ldrne r2, [r0, 0x70] | r2 = *((r0 + 0x70));
| }
| if (r2 != r3) {
0x00052730 ldreq r3, [r3, 0x20] | r3 = *((r3 + 0x20));
| }
| if (r2 == r3) {
0x00052732 strne r2, [r1, 0x2c] | *((r1 + 0x2c)) = r2;
| }
0x00052734 ldr r2, [r0, 0x44] | r2 = *((r0 + 0x44));
0x00052736 cmp r2, r3 |
| if (r2 > r3) {
0x00052738 bhi.w 0x52890 | goto label_51;
| }
| label_16:
0x0005273c add.w fp, sp, 0x18 |
0x00052740 mov.w sb, 1 | sb = 1;
0x00052744 b 0x5275c |
| while (r3 > r6) {
0x00052746 movs r3, 0 | r3 = 0;
0x00052748 mov r2, r8 | r2 = r8;
0x0005274a mov r1, fp | r1 = fp;
0x0005274c mov r0, r5 | r0 = r5;
0x0005274e str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00052752 adds r6, 1 | r6++;
0x00052754 bl 0x522c0 | r0 = fcn_000522c0 (r0, r1, r2, r3, r4, r5);
0x00052758 cmp r0, 0 |
| if (r0 != 0) {
0x0005275a bne 0x52822 | goto label_52;
| }
0x0005275c ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x0005275e cmp r3, r6 |
0x00052760 bhi 0x52746 |
| }
0x00052762 movs r4, 0 | r4 = 0;
| label_17:
0x00052764 cmp.w r8, 0 |
| if (r8 == 0) {
0x00052768 beq 0x5278a | goto label_53;
| }
0x0005276a ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
| if (r3 == 0) {
0x0005276e cbz r3, 0x52784 | goto label_54;
| }
0x00052770 add.w r6, r8, 8 | r6 = r8 + 8;
0x00052774 add.w sb, r8, 0x1fc | sb = r8 + 0x1fc;
| do {
0x00052778 ldr r0, [r6, 4]! | r0 = *((r6 += 4));
0x0005277c bl 0x1cc44 | fcn_0001cc44 (r0, r1, r2, r3);
0x00052780 cmp sb, r6 |
0x00052782 bne 0x52778 |
| } while (sb != r6);
| label_54:
0x00052784 mov r0, r8 | r0 = r8;
0x00052786 blx 0x84f8 | fcn_000084f8 ();
| if (r4 != 0) {
| label_53:
0x0005278a cbnz r4, 0x52790 | goto label_13;
| }
0x0005278c strd sl, r7, [r5, 0x48] | __asm ("strd sl, r7, [r5, 0x48]");
| do {
| label_13:
0x00052790 ldr r2, [pc, 0x22c] |
0x00052792 ldr r3, [pc, 0x228] | r3 = *(0x529be);
0x00052794 add r2, pc | r2 = 0xa5158;
0x00052796 ldr r3, [r2, r3] | r3 = *(0xa5158);
0x00052798 ldr r2, [r3] | r2 = *(0xa5158);
0x0005279a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005279c eors r2, r3 | r2 ^= r3;
0x0005279e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000527a2 bne.w 0x529b2 | goto label_55;
| }
0x000527a6 mov r0, r4 | r0 = r4;
0x000527a8 add sp, 0x2c |
0x000527aa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_49:
0x000527ae ldr.w r2, [r5, 0x98] | r2 = *((r5 + 0x98));
0x000527b2 subs.w r0, sl, r0 | r0 = sl - r0;
0x000527b6 sbc.w r1, r7, r1 | __asm ("sbc.w r1, r7, r1");
0x000527ba adds r2, 8 | r2 += 8;
0x000527bc asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000527be bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x000527c2 str r0, [sp, 0x14] | var_14h = r0;
0x000527c4 b 0x526c6 | goto label_12;
| label_43:
0x000527c6 ldr r6, [r5, 0x5c] | r6 = *((r5 + 0x5c));
0x000527c8 add.w sl, sl, sl, lsl 1 | sl += (sl << 1);
0x000527cc add.w r6, r6, sl, lsl 4 | r6 += (sl << 4);
0x000527d0 ldr r4, [r6, 0x1c] | r4 = *((r6 + 0x1c));
0x000527d2 cmp r4, 0 |
0x000527d4 beq 0x52790 |
| } while (r4 == 0);
0x000527d6 ldr r0, [r5, 0x44] | r0 = *((r5 + 0x44));
0x000527d8 ldr r4, [r0] | r4 = *(r0);
0x000527da cmp r4, 0 |
| if (r4 == 0) {
0x000527dc beq 0x52790 | goto label_13;
| }
0x000527de ldr r3, [pc, 0x1e4] |
0x000527e0 add r3, pc |
0x000527e2 add.w r3, r3, 0x158 | r3 = 0xa5302;
0x000527e6 cmp r4, r3 |
0x000527e8 it ne |
| if (r4 == r3) {
0x000527ea movne r4, 0 | r4 = 0;
| }
| if (r4 == r3) {
0x000527ec beq.w 0x52982 | goto label_56;
| }
| label_22:
0x000527f0 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x000527f2 str r3, [r5, 0x34] | *((r5 + 0x34)) = r3;
0x000527f4 b 0x52790 | goto label_13;
| label_48:
0x000527f6 movs r4, 0 | r4 = 0;
0x000527f8 b 0x526f4 | goto label_14;
| label_44:
0x000527fa ldr r3, [r5, 0x40] | r3 = *((r5 + 0x40));
0x000527fc ldr r4, [r3] | r4 = *(r3);
0x000527fe cmp r4, 0 |
| if (r4 == 0) {
0x00052800 beq 0x52790 | goto label_13;
| }
0x00052802 cmp.w sl, 0 |
| if (sl != 0) {
0x00052806 bne.w 0x52998 | goto label_57;
| }
| label_24:
0x0005280a ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0005280c ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x0005280e ldrd sl, r7, [r5, 0x48] | __asm ("ldrd sl, r7, [r5, 0x48]");
0x00052812 strb r3, [r5, 0x12] | *((r5 + 0x12)) = r3;
0x00052814 movs r3, 0 | r3 = 0;
0x00052816 str r2, [r5, 0x18] | *((r5 + 0x18)) = r2;
0x00052818 str r3, [sp, 0xc] | var_ch = r3;
0x0005281a b 0x52678 | goto label_15;
| label_50:
0x0005281c cmp r4, 0 |
| if (r4 == 0) {
0x0005281e beq 0x5273c | goto label_16;
| }
0x00052820 b 0x52764 | goto label_17;
| label_52:
0x00052822 mov r4, r0 | r4 = r0;
0x00052824 b 0x52764 | goto label_17;
| label_46:
0x00052826 movs r4, 7 | r4 = 7;
0x00052828 b 0x52790 | goto label_13;
| label_47:
0x0005282a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005282c add.w fp, r5, 0x48 |
0x00052830 ldrd r6, sb, [r3, 8] | __asm ("ldrd r6, sb, [r3, 8]");
0x00052834 orrs.w r3, r6, sb | r3 = r6 | sb;
0x00052838 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005283a itt eq |
| if (r3 != r6) {
0x0005283c moveq r6, sl | r6 = sl;
| }
| if (r3 != r6) {
0x0005283e moveq sb, r7 | sb = r7;
| }
0x00052840 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00052844 strd r2, r3, [r5, 0x48] | __asm ("strd r2, r3, [r5, 0x48]");
0x00052848 b 0x5284e | goto label_58;
| label_19:
0x0005284a ldrd r2, r3, [r5, 0x48] | __asm ("ldrd r2, r3, [r5, 0x48]");
| label_58:
0x0005284e cmp r2, r6 |
0x00052850 sbcs.w r1, r3, sb | __asm ("sbcs.w r1, r3, sb");
| if (r2 >= r6) {
0x00052854 bge.w 0x52684 | goto label_18;
| }
0x00052858 movs r3, 1 | r3 = 1;
0x0005285a mov r2, r8 | r2 = r8;
0x0005285c mov r1, fp | r1 = fp;
0x0005285e mov r0, r5 | r0 = r5;
0x00052860 str r3, [sp] | *(sp) = r3;
0x00052862 bl 0x522c0 | r0 = fcn_000522c0 (r0, r1, r2, r3, r4, r5);
0x00052866 cmp r0, 0 |
| if (r0 == 0) {
0x00052868 beq 0x5284a | goto label_19;
| }
0x0005286a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005286c mov r4, r0 | r4 = r0;
0x0005286e ldr.w r0, [r5, 0xd8] | r0 = *((r5 + 0xd8));
0x00052872 ldr r6, [r3, 0x18] | r6 = *((r3 + 0x18));
0x00052874 ldr.w r3, [r5, 0x98] | r3 = *((r5 + 0x98));
0x00052878 adds r3, 4 | r3 += 4;
0x0005287a asrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x0005287c umull r3, r2, r3, r6 | r3:r2 = r3 * r6;
0x00052880 mla r2, r6, r1, r2 | __asm ("mla r2, r6, r1, r2");
0x00052884 strd r3, r2, [sp, 0x18] | __asm ("strd r3, r2, [var_18h]");
0x00052888 cmp r0, 0 |
| if (r0 != 0) {
0x0005288a bne.w 0x5271a | goto label_20;
| }
0x0005288e b 0x52764 | goto label_17;
| label_51:
0x00052890 ldr r4, [sp, 0xc] | r4 = var_ch;
0x00052892 str r3, [r0, 0x44] | *((r0 + 0x44)) = r3;
0x00052894 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00052896 str r3, [r0, 0x4c] | *((r0 + 0x4c)) = r3;
0x00052898 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0005289a str r3, [r0, 0x50] | *((r0 + 0x50)) = r3;
0x0005289c bl 0x1ee98 | fcn_0001ee98 (r0);
0x000528a0 ldr r6, [r4, 0x18] | r6 = *((r4 + 0x18));
0x000528a2 b 0x5273c | goto label_16;
| label_45:
0x000528a4 ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x000528a6 movs r7, 1 | r7 = 1;
0x000528a8 ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000528aa str r2, [r5, 0x18] | *((r5 + 0x18)) = r2;
0x000528ac strb r3, [r5, 0x12] | *((r5 + 0x12)) = r3;
0x000528ae ldrb.w r4, [r8, 0x2c] | r4 = *((r8 + 0x2c));
| if (r4 != 0) {
0x000528b2 cbnz r4, 0x528f0 | goto label_59;
| }
| label_21:
0x000528b4 ldr.w r3, [r5, 0xd4] | r3 = *((r5 + 0xd4));
0x000528b8 ldr r0, [r3] | r0 = *(r3);
0x000528ba bl 0x134d4 | r0 = fcn_000134d4 (r0);
0x000528be cmp r0, 0 |
0x000528c0 ite eq |
| if (r0 != 0) {
0x000528c2 moveq r7, 0 | r7 = 0;
| }
| if (r0 == 0) {
0x000528c4 andne r7, r7, 1 | r7 &= 1;
| }
0x000528c8 mov r6, r0 | r6 = r0;
0x000528ca cmp r7, 0 |
| if (r7 == 0) {
0x000528cc beq.w 0x52790 | goto label_13;
| }
| do {
0x000528d0 mov r3, r6 | r3 = r6;
0x000528d2 ldr r6, [r6, 0x10] | r6 = *((r6 + 0x10));
0x000528d4 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x000528d6 mov r0, r5 | r0 = r5;
0x000528d8 bl 0x248fc | fcn_000248fc (r0, r1);
0x000528dc subs r3, r6, 0 | r3 = r6 - 0;
0x000528de mov r4, r0 | r4 = r0;
0x000528e0 it ne |
| if (r3 == r6) {
0x000528e2 movne r3, 1 | r3 = 1;
| }
0x000528e4 cmp r0, 0 |
0x000528e6 it ne |
| if (r0 == 0) {
0x000528e8 movne r3, 0 | r3 = 0;
| }
0x000528ea cmp r3, 0 |
0x000528ec bne 0x528d0 |
| } while (r3 != 0);
0x000528ee b 0x52790 | goto label_13;
| label_59:
0x000528f0 ldr.w r3, [r8, 0x20] | r3 = *((r8 + 0x20));
0x000528f4 add.w r2, r8, 0x34 | r2 = r8 + 0x34;
0x000528f8 ldr.w sb, [r8, 0x44] | sb = *((r8 + 0x44));
0x000528fc ldr r3, [r3] | r3 = *(r3);
0x000528fe add.w r1, r3, 0x30 | r1 = r3 + 0x30;
| do {
0x00052902 ldr r7, [r3] | r7 = *(r3);
0x00052904 adds r3, 0x10 | r3 += 0x10;
0x00052906 ldr r6, [r3, -0xc] | r6 = *((r3 - 0xc));
0x0005290a adds r2, 0x10 | r2 += 0x10;
0x0005290c ldr r4, [r3, -0x8] | r4 = *((r3 - 0x8));
0x00052910 ldr r0, [r3, -0x4] | r0 = *((r3 - 0x4));
0x00052914 cmp r3, r1 |
0x00052916 str r7, [r2, -0x10] | *((r2 - 0x10)) = r7;
0x0005291a str r6, [r2, -0xc] | *((r2 - 0xc)) = r6;
0x0005291e str r4, [r2, -0x8] | *((r2 - 0x8)) = r4;
0x00052922 str r0, [r2, -0x4] | *((r2 - 0x4)) = r0;
0x00052926 bne 0x52902 |
| } while (r3 != r1);
0x00052928 ldr.w r6, [r8, 0x44] | r6 = *((r8 + 0x44));
0x0005292c adds r3, r6, 1 | r3 = r6 + 1;
0x0005292e cmp sb, r3 |
| if (sb <= r3) {
0x00052930 blo 0x529ac | goto label_60;
| }
0x00052932 adds r6, 0x22 | r6 += 0x22;
| do {
0x00052934 ldr.w r3, [r8, 0x20] | r3 = *((r8 + 0x20));
0x00052938 lsrs r2, r6, 0xc | r2 = r6 >> 0xc;
0x0005293a mov r0, r5 | r0 = r5;
0x0005293c ittet ne |
| if (r2 == r6) {
0x0005293e ldrne r3, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r3 = *((r3 + offset_0));
| }
| if (r2 != r6) {
0x00052942 ubfxeq r2, r6, 0, 0xc | __asm ("ubfxeq r2, r6, 0, 0xc");
| }
| if (r2 == r6) {
0x00052946 ldr r3, [r3] | r3 = *(r3);
| }
| if (r2 != r6) {
0x00052948 ldr.w r1, [r3, r2, lsl 2] | offset_1 = r2 << 2;
| r1 = *((r3 + offset_1));
| }
0x0005294c it eq |
| if (r2 != r6) {
0x0005294e ldreq r1, [r3, r6, lsl 2] | offset_2 = r6 << 2;
| r1 = *((r3 + offset_2));
| }
0x00052952 bl 0x248fc | r0 = fcn_000248fc (r0, r1);
0x00052956 clz r7, r0 | r7 &= r0;
0x0005295a sub.w r3, r6, 0x20 | r3 = r6 - 0x20;
0x0005295e lsrs r7, r7, 5 | r7 >>= 5;
0x00052960 mov r4, r0 | r4 = r0;
0x00052962 adds r6, 1 | r6++;
0x00052964 cmp r3, sb |
0x00052966 ite hi |
| if (r3 <= sb) {
0x00052968 movhi r2, 0 | r2 = 0;
| }
| if (r3 > sb) {
0x0005296a andls r2, r7, 1 | r2 = r7 & 1;
| }
0x0005296e cmp r2, 0 |
0x00052970 bne 0x52934 |
| } while (r2 != 0);
0x00052972 ldr.w r6, [r8, 0x44] | r6 = *((r8 + 0x44));
| label_25:
0x00052976 cmp sb, r6 |
| if (sb == r6) {
0x00052978 beq 0x528b4 | goto label_21;
| }
0x0005297a mov r0, r8 | r0 = r8;
0x0005297c bl 0x1ee98 | fcn_0001ee98 (r0);
0x00052980 b 0x528b4 | goto label_21;
| label_56:
0x00052982 ldr.w r3, [r5, 0x98] | r3 = *((r5 + 0x98));
0x00052986 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x00052988 adds r3, 4 | r3 += 4;
0x0005298a mul r2, r3, r2 | r2 = r3 * r2;
0x0005298e movs r3, 0 | r3 = 0;
0x00052990 bl 0xf0f4 | r0 = fcn_0000f0f4 (r0, r1, r2);
0x00052994 mov r4, r0 | r4 = r0;
0x00052996 b 0x527f0 | goto label_22;
| label_57:
0x00052998 add.w r3, sl, sl, lsl 1 | r3 = sl + (sl << 1);
0x0005299c ldr r2, [r5, 0x5c] | r2 = *((r5 + 0x5c));
0x0005299e lsls r3, r3, 4 | r3 <<= 4;
0x000529a0 subs r3, 0x30 | r3 -= 0x30;
0x000529a2 adds r3, r2, r3 | r3 = r2 + r3;
0x000529a4 str r3, [sp, 0xc] | var_ch = r3;
| if (r3 != r2) {
0x000529a6 bne.w 0x5264a | goto label_23;
| }
0x000529aa b 0x5280a | goto label_24;
| label_60:
0x000529ac movs r7, 1 | r7 = 1;
0x000529ae movs r4, 0 | r4 = 0;
0x000529b0 b 0x52976 | goto label_25;
| label_55:
0x000529b2 blx 0x7e8c | fcn_00007e8c ();
0x000529b6 nop |
0x000529b8 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x529c8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000529c8 () | void fcn_000529c8 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
0x000529c8 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000529cc movs r2, 0 | r2 = 0;
0x000529ce sub sp, 0x5c |
0x000529d0 movs r4, 1 | r4 = 1;
0x000529d2 mov sl, r1 | sl = r1;
0x000529d4 mov r5, r0 | r5 = r0;
0x000529d6 ldr.w r1, [pc, 0x484] | r1 = *(0x00052e5c);
0x000529da strd r2, r4, [sp, 0x30] | __asm ("strd r2, r4, [var_34h]");
0x000529de ldr.w r2, [pc, 0x480] |
0x000529e2 add r1, pc | r1 += pc;
0x000529e4 ldr.w r3, [r5, 0x98] | r3 = *((r5 + 0x98));
0x000529e8 ldr r0, [r0, 0x40] | r0 = *((r0 + 0x40));
0x000529ea ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x000529ec add r1, sp, 0x40 | r1 += var_40h;
0x000529ee ldr r4, [r5] | r4 = *(r5);
0x000529f0 ldr r2, [r2] | r2 = *(0x52e62);
0x000529f2 str r2, [sp, 0x54] | var_54h = r2;
0x000529f4 mov.w r2, 0 | r2 = 0;
0x000529f8 str r3, [sp, 0x38] | var_38h = r3;
0x000529fa ldr r3, [r0] | r3 = *(r0);
0x000529fc ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000529fe blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00052a00 mov fp, r0 |
0x00052a02 cbz r0, 0x52a30 |
| while (r0 != 0) {
0x00052a04 ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00052a06 strb r3, [r5, 0x12] | *((r5 + 0x12)) = r3;
| label_5:
0x00052a08 mov r0, r5 | r0 = r5;
0x00052a0a bl 0x137bc | fcn_000137bc (r0);
0x00052a0e ldr.w r2, [pc, 0x454] | r2 = *(0x00052e64);
0x00052a12 ldr.w r3, [pc, 0x44c] | r3 = *(0x52e62);
0x00052a16 add r2, pc | r2 += pc;
0x00052a18 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00052a1a ldr r2, [r3] | r2 = *(0x52e62);
0x00052a1c ldr r3, [sp, 0x54] | r3 = var_54h;
0x00052a1e eors r2, r3 | r2 ^= r3;
0x00052a20 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00052a24 bne.w 0x52e56 | goto label_12;
| }
0x00052a28 mov r0, fp | r0 = fp;
0x00052a2a add sp, 0x5c |
0x00052a2c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00052a30 ldr r3, [r5] | r3 = *(r5);
0x00052a32 ldr.w r6, [r5, 0xd0] | r6 = *((r5 + 0xd0));
0x00052a36 ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x00052a38 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00052a3a mov r1, r6 | r1 = r6;
0x00052a3c adds r2, 1 | r2++;
0x00052a3e bl 0x1e744 | r0 = fcn_0001e744 (r0, r1, r2);
0x00052a42 mov fp, r0 |
0x00052a44 cmp r0, 0 |
0x00052a46 bne 0x52a04 |
| }
0x00052a48 ldrb r3, [r6] | r3 = *(r6);
0x00052a4a cmp r3, 0 |
| if (r3 != 0) {
0x00052a4c bne.w 0x52b96 | goto label_13;
| }
| label_4:
0x00052a50 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x00052a54 cmp.w sb, 0 |
| if (sb == 0) {
0x00052a58 beq.w 0x52bf0 | goto label_14;
| }
0x00052a5c and r3, sl, 1 | r3 = sl & 1;
0x00052a60 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00052a64 str r3, [sp, 0x20] | var_20h = r3;
0x00052a66 add r3, sp, 0x30 | r3 += var_30h;
0x00052a68 str r3, [sp, 0x1c] | var_1ch = r3;
0x00052a6a add r3, sp, 0x2c | r3 += var_2ch;
0x00052a6c str r3, [sp, 0x18] | var_18h = r3;
0x00052a6e add.w r8, r5, 0x48 | r8 = r5 + 0x48;
0x00052a72 ldrd r2, r3, [sp, 0x40] | __asm ("ldrd r2, r3, [var_40h]");
0x00052a76 mov r4, sl | r4 = sl;
0x00052a78 movs r6, 1 | r6 = 1;
0x00052a7a mov sb, sl | sb = sl;
0x00052a7c vstr d16, [r8] | __asm ("vstr d16, [r8]");
| label_0:
0x00052a80 mov.w sl, 0 | sl = 0;
| label_1:
0x00052a84 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00052a86 mov r0, r5 | r0 = r5;
0x00052a88 str r1, [sp, 4] | var_4h = r1;
0x00052a8a ldr r1, [sp, 0x18] | r1 = var_18h;
0x00052a8c str r1, [sp] | *(sp) = r1;
0x00052a8e mov r1, sb | r1 = sb;
0x00052a90 bl 0x2079c | r0 = fcn_0002079c (r0, r1, r2, r3, r4, r5);
0x00052a94 mov r7, r0 | r7 = r0;
0x00052a96 cmp r0, 0 |
| if (r0 != 0) {
0x00052a98 bne.w 0x52bb4 | goto label_15;
| }
0x00052a9c ldr.w r3, [r5, 0x94] | r3 = *((r5 + 0x94));
0x00052aa0 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00052aa2 str r3, [sp, 0xc] | var_ch = r3;
0x00052aa4 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00052aa6 bne 0x52ac2 |
0x00052aa8 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00052aaa ldr r2, [sp, 0xc] | r2 = var_ch;
0x00052aac ldr r1, [sp, 0x44] | r1 = var_44h;
0x00052aae subs r0, r3, r2 | r0 = r3 - r2;
0x00052ab0 ldr.w r2, [r5, 0x98] | r2 = *((r5 + 0x98));
0x00052ab4 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x00052ab8 adds r2, 8 | r2 += 8;
0x00052aba asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00052abc bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x00052ac0 str r0, [sp, 0x2c] | var_2ch = r0;
| }
0x00052ac2 ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x00052ac4 orrs.w r0, sb, r0 | r0 = sb | r0;
0x00052ac8 str r3, [sp, 0x10] | var_10h = r3;
0x00052aca ldr r3, [r5, 0x4c] | r3 = *((r5 + 0x4c));
0x00052acc str r3, [sp, 0x14] | var_14h = r3;
| if (r0 == sb) {
0x00052ace beq 0x52b3e | goto label_16;
| }
| label_3:
0x00052ad0 ldrd r3, r2, [sp, 0xc] | __asm ("ldrd r3, r2, [var_ch]");
0x00052ad4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00052ad6 cmp r7, r1 |
0x00052ad8 it eq |
| if (r7 == r1) {
0x00052ada cmpeq r3, r2 | __asm ("cmpeq r3, r2");
| }
| if (r7 == r1) {
0x00052adc beq 0x52b64 | goto label_17;
| }
| label_2:
0x00052ade ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x00052ae0 cmp r7, 0 |
| if (r7 == 0) {
0x00052ae2 beq 0x52bb0 | goto label_18;
| }
| if (r4 == 0) {
0x00052ae4 cbz r4, 0x52b02 | goto label_19;
| }
0x00052ae6 ldr r2, [r5, 0x64] | r2 = *((r5 + 0x64));
0x00052ae8 ldr r3, [r5, 0x58] | r3 = *((r5 + 0x58));
0x00052aea adds r2, 1 | r2++;
0x00052aec str r2, [r5, 0x64] | *((r5 + 0x64)) = r2;
| if (r3 == 0) {
0x00052aee cbz r3, 0x52af8 | goto label_20;
| }
| do {
0x00052af0 str r6, [r3, 0x10] | *((r3 + 0x10)) = r6;
0x00052af2 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x00052af4 cmp r3, 0 |
0x00052af6 bne 0x52af0 |
| } while (r3 != 0);
| label_20:
0x00052af8 ldr.w r0, [r5, 0xd4] | r0 = *((r5 + 0xd4));
0x00052afc movs r1, 0 | r1 = 0;
0x00052afe bl 0x157d4 | fcn_000157d4 (r0, r1);
| label_19:
0x00052b02 add r7, fp | r7 += fp;
0x00052b04 b 0x52b0e |
| while (r0 == 0) {
0x00052b06 add.w fp, fp, 1 |
0x00052b0a cmp fp, r7 |
| if (fp == r7) {
0x00052b0c beq 0x52b34 | goto label_21;
| }
0x00052b0e movs r3, 1 | r3 = 1;
0x00052b10 movs r2, 0 | r2 = 0;
0x00052b12 mov r1, r8 | r1 = r8;
0x00052b14 mov r0, r5 | r0 = r5;
0x00052b16 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00052b1a bl 0x522c0 | r0 = fcn_000522c0 (r0, r1, r2, r3, r4, r5);
0x00052b1e cmp r0, 0 |
0x00052b20 beq 0x52b06 |
| }
0x00052b22 cmp r0, 0x65 |
| if (r0 != 0x65) {
0x00052b24 bne.w 0x52e02 | goto label_22;
| }
0x00052b28 ldrd r2, r3, [sp, 0x40] | __asm ("ldrd r2, r3, [var_40h]");
0x00052b2c movs r4, 0 | r4 = 0;
0x00052b2e strd r2, r3, [r5, 0x48] | __asm ("strd r2, r3, [r5, 0x48]");
0x00052b32 b 0x52a80 | goto label_0;
| label_21:
0x00052b34 mov r4, r0 | r4 = r0;
| label_6:
0x00052b36 ldrd r2, r3, [sp, 0x40] | __asm ("ldrd r2, r3, [var_40h]");
0x00052b3a mov fp, r7 |
0x00052b3c b 0x52a84 | goto label_1;
| label_16:
0x00052b3e ldr r2, [sp, 0xc] | r2 = var_ch;
0x00052b40 ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x00052b42 ldrd r1, r0, [sp, 0x10] | __asm ("ldrd r1, r0, [var_10h]");
0x00052b46 adds r3, r2, r3 | r3 = r2 + r3;
0x00052b48 ldr r2, [r5, 0x54] | r2 = *((r5 + 0x54));
0x00052b4a adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00052b4e cmp r2, r0 |
0x00052b50 it eq |
| if (r2 == r0) {
0x00052b52 cmpeq r3, r1 | __asm ("cmpeq r3, r1");
| }
| if (r2 != r0) {
0x00052b54 beq 0x52b78 |
0x00052b56 ldrd r3, r2, [sp, 0xc] | __asm ("ldrd r3, r2, [var_ch]");
0x00052b5a ldr r1, [sp, 0x14] | r1 = var_14h;
0x00052b5c cmp r7, r1 |
0x00052b5e it eq |
| if (r7 == r1) {
0x00052b60 cmpeq r3, r2 | __asm ("cmpeq r3, r2");
| }
| if (r7 != r1) {
0x00052b62 bne 0x52bb0 | goto label_18;
| }
| label_17:
0x00052b64 ldr r7, [sp, 0x30] | r7 = var_30h;
0x00052b66 mov r0, r5 | r0 = r5;
0x00052b68 mov r1, r7 | r1 = r7;
0x00052b6a bl 0xc074 | r0 = fcn_0000c074 (r0, r1);
0x00052b6e cmp r0, 0 |
| if (r0 != 0) {
0x00052b70 bne.w 0x52e34 | goto label_23;
| }
0x00052b74 str r7, [r5, 0x18] | *((r5 + 0x18)) = r7;
0x00052b76 b 0x52ade | goto label_2;
| }
0x00052b78 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00052b7a ldr.w r2, [r5, 0x98] | r2 = *((r5 + 0x98));
0x00052b7e subs r0, r3, r1 | r0 = r3 - r1;
0x00052b80 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00052b82 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00052b84 add.w r2, r2, 8 | r2 += 8;
0x00052b88 sbc.w r1, r1, r3 | __asm ("sbc.w r1, r1, r3");
0x00052b8c asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00052b8e bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x00052b92 str r0, [sp, 0x2c] | var_2ch = r0;
0x00052b94 b 0x52ad0 | goto label_3;
| label_13:
0x00052b96 mov r1, r6 | r1 = r6;
0x00052b98 mov r0, r4 | r0 = r4;
0x00052b9a ldr r6, [r4, 0x20] | r6 = *((r4 + 0x20));
0x00052b9c add r3, sp, 0x34 | r3 += var_34h;
0x00052b9e mov r2, fp | r2 = fp;
0x00052ba0 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00052ba2 cmp r0, 0 |
| if (r0 == 0) {
0x00052ba4 beq.w 0x52a50 | goto label_4;
| }
0x00052ba8 ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00052baa mov fp, r0 |
0x00052bac strb r3, [r5, 0x12] | *((r5 + 0x12)) = r3;
0x00052bae b 0x52a08 | goto label_5;
| label_18:
0x00052bb0 mov r7, fp | r7 = fp;
0x00052bb2 b 0x52b36 | goto label_6;
| label_15:
0x00052bb4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00052bb6 mov r2, r0 | r2 = r0;
0x00052bb8 cmp.w fp, 0 |
0x00052bbc ite eq |
| if (fp != 0) {
0x00052bbe moveq r3, 0 | r3 = 0;
| }
| if (fp == 0) {
0x00052bc0 andne r3, r3, 1 | r3 &= 1;
| }
0x00052bc4 cmp r0, 0x65 |
0x00052bc6 str r3, [sp, 0xc] | var_ch = r3;
| if (r0 == 0x65) {
0x00052bc8 beq.w 0x52e20 | goto label_24;
| }
| label_9:
0x00052bcc ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00052bce mov sb, fp | sb = fp;
0x00052bd0 mov fp, r2 |
0x00052bd2 strb r3, [r5, 0x12] | *((r5 + 0x12)) = r3;
| label_7:
0x00052bd4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00052bd6 cmp r3, 0 |
| if (r3 == 0) {
0x00052bd8 beq.w 0x52a08 | goto label_5;
| }
0x00052bdc ldr r1, [pc, 0x288] |
0x00052bde mov r2, sb | r2 = sb;
0x00052be0 ldr.w r3, [r5, 0xac] | r3 = *((r5 + 0xac));
0x00052be4 movw r0, 0x21b | r0 = 0x21b;
0x00052be8 add r1, pc | r1 = 0xa5a54;
0x00052bea blx 0x8474 | fcn_00008474 ();
0x00052bee b 0x52a08 | goto label_5;
| label_14:
0x00052bf0 str.w sb, [sp, 0xc] | __asm ("str.w sb, [var_ch]");
| label_10:
0x00052bf4 mov.w r2, -1 | r2 = -1;
0x00052bf8 add r1, sp, 0x38 | r1 += var_38h;
0x00052bfa mov r0, r5 | r0 = r5;
0x00052bfc bl 0x1c864 | fcn_0001c864 (r0, r1, r2);
0x00052c00 ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00052c02 mov fp, r0 |
0x00052c04 strb r3, [r5, 0x12] | *((r5 + 0x12)) = r3;
0x00052c06 cmp r0, 0 |
| if (r0 != 0) {
0x00052c08 bne 0x52bd4 | goto label_7;
| }
0x00052c0a ldr r3, [r5] | r3 = *(r5);
0x00052c0c ldr.w r4, [r5, 0xd0] | r4 = *((r5 + 0xd0));
0x00052c10 ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x00052c12 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00052c14 add.w r8, r4, 4 | r8 = r4 + 4;
0x00052c18 mov r1, r8 | r1 = r8;
0x00052c1a adds r2, 1 | r2++;
0x00052c1c bl 0x1e744 | r0 = fcn_0001e744 (r0, r1, r2);
0x00052c20 mov fp, r0 |
0x00052c22 cmp r0, 0 |
| if (r0 != 0) {
0x00052c24 bne 0x52bd4 | goto label_7;
| }
0x00052c26 ldrb r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00052c28 subs r3, 1 | r3--;
0x00052c2a cmp r3, 2 |
| if (r3 > 2) {
0x00052c2c bhi.w 0x52df0 | goto label_25;
| }
| label_8:
0x00052c30 ldrb r1, [r4, 4] | r1 = *((r4 + 4));
0x00052c32 movs r2, 0 | r2 = 0;
0x00052c34 mov r0, r5 | r0 = r5;
0x00052c36 subs r1, 0 |
0x00052c38 it ne |
| if (r1 == 0) {
0x00052c3a movne r1, 1 | r1 = 1;
| }
0x00052c3c bl 0x20370 | r0 = fcn_00020370 (r0, r1, r2);
0x00052c40 mov fp, r0 |
0x00052c42 cmp r0, 0 |
| if (r0 != 0) {
0x00052c44 bne 0x52bd4 | goto label_7;
| }
0x00052c46 ldrb r3, [r4, 4] | r3 = *((r4 + 4));
0x00052c48 cmp r3, 0 |
| if (r3 == 0) {
0x00052c4a beq 0x52bd4 | goto label_7;
| }
0x00052c4c ldr.w fp, [sp, 0x34] | fp = var_34h;
0x00052c50 cmp.w fp, 0 |
| if (fp == 0) {
0x00052c54 beq 0x52bd4 | goto label_7;
| }
0x00052c56 str r0, [r4] | *(r4) = r0;
0x00052c58 mov sl, r0 | sl = r0;
0x00052c5a ldr r7, [r5] | r7 = *(r5);
0x00052c5c ldr r6, [r7, 4] | r6 = *((r7 + 4));
0x00052c5e lsls r6, r6, 1 | r6 <<= 1;
0x00052c60 asrs r1, r6, 0x1f | r1 = r6 >> 0x1f;
0x00052c62 mov r0, r6 | r0 = r6;
0x00052c64 bl 0x12abc | r0 = fcn_00012abc (r0);
0x00052c68 mov r4, r0 | r4 = r0;
0x00052c6a cmp r0, 0 |
| if (r0 == 0) {
0x00052c6c beq.w 0x52e24 | goto label_26;
| }
0x00052c70 mov r2, r6 | r2 = r6;
0x00052c72 mov r1, sl | r1 = sl;
0x00052c74 blx 0x8264 | fcn_00008264 ();
0x00052c78 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00052c7c movw r3, 0x4001 | r3 = 0x4001;
0x00052c80 ldr r6, [r7, 0x18] | r6 = *((r7 + 0x18));
0x00052c82 mov r2, r4 | r2 = r4;
0x00052c84 mov r1, r8 | r1 = r8;
0x00052c86 mov r0, r7 | r0 = r7;
0x00052c88 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00052c8a mov fp, r0 |
0x00052c8c cmp r0, 0 |
| if (r0 != 0) {
0x00052c8e bne.w 0x52e2e | goto label_27;
| }
0x00052c92 ldr r3, [r4] | r3 = *(r4);
0x00052c94 add r1, sp, 0x48 | r1 += var_48h;
0x00052c96 mov r0, r4 | r0 = r4;
0x00052c98 ldr r6, [r7, 4] | r6 = *((r7 + 4));
0x00052c9a ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00052c9c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00052c9e mov fp, r0 |
0x00052ca0 cmp r0, 0 |
| if (r0 != 0) {
0x00052ca2 bne.w 0x52e2e | goto label_27;
| }
0x00052ca6 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00052ca8 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x00052caa adds r1, r3, 1 | r1 = r3 + 1;
0x00052cac ldr r3, [sp, 0x48] | r3 = var_48h;
0x00052cae str r1, [sp, 0x24] | var_24h = r1;
0x00052cb0 adds r3, 4 | r3 += 4;
0x00052cb2 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00052cb6 adds r3, r3, r1 | r3 += r1;
0x00052cb8 adc.w r1, r2, r1, asr 31 | __asm ("adc.w r1, r2, r1, asr 31");
0x00052cbc adds r0, r3, 2 | r0 = r3 + 2;
0x00052cbe adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00052cc2 bl 0x12abc | r0 = fcn_00012abc (r0);
0x00052cc6 mov r2, r0 | r2 = r0;
0x00052cc8 str r0, [sp, 0x10] | var_10h = r0;
0x00052cca cmp r0, 0 |
| if (r0 == 0) {
0x00052ccc beq.w 0x52e50 | goto label_28;
| }
0x00052cd0 strb.w fp, [r0, 3] | *((r0 + 3)) = fp;
0x00052cd4 strb.w fp, [r0, 2] | *((r0 + 2)) = fp;
0x00052cd8 strb.w fp, [r0, 1] | *((r0 + 1)) = fp;
0x00052cdc mov r0, r4 | r0 = r4;
0x00052cde strb fp, [r2], 4 | *(r2) = fp;
| r2 += 4;
0x00052ce2 mov r1, r2 | r1 = r2;
0x00052ce4 ldr r3, [r4] | r3 = *(r4);
0x00052ce6 ldr.w sl, [sp, 0x48] | sl = var_48h;
0x00052cea vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00052cee str r2, [sp, 0x14] | var_14h = r2;
0x00052cf0 mov r2, sl | r2 = sl;
0x00052cf2 strb.w fp, [sp, 0x18] | var_18h = fp;
0x00052cf6 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00052cfa ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00052cfc blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00052cfe mov fp, r0 |
0x00052d00 cmp r0, 0 |
| if (r0 != 0) {
0x00052d02 bne 0x52dd4 | goto label_11;
| }
0x00052d04 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00052d06 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00052d08 ldrb.w r2, [sp, 0x18] | r2 = var_18h;
0x00052d0c strb r0, [r1, r3] | *((r1 + r3)) = r0;
0x00052d0e ldr r3, [sp, 0x48] | r3 = var_48h;
0x00052d10 add r3, r1 | r3 += r1;
0x00052d12 strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x00052d14 ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h]");
0x00052d18 cmp r2, 1 |
0x00052d1a sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 < 1) {
0x00052d1e blt 0x52db8 | goto label_29;
| }
0x00052d20 mov r2, r1 | r2 = r1;
0x00052d22 add.w sl, sl, 2 | sl += 2;
0x00052d26 add r1, sl | r1 += sl;
0x00052d28 adds r3, r4, r6 | r3 = r4 + r6;
0x00052d2a mov sl, r2 | sl = r2;
0x00052d2c add r2, sp, 0x3c | r2 += var_3ch;
0x00052d2e strd r2, r4, [sp, 0x18] | __asm ("strd r2, r4, [var_18h]");
0x00052d32 mov r4, r3 | r4 = r3;
0x00052d34 str r5, [sp, 0x20] | var_20h = r5;
0x00052d36 mov r5, r1 | r5 = r1;
| do {
0x00052d38 ldr r6, [r7, 0x20] | r6 = *((r7 + 0x20));
0x00052d3a movs r2, 0 | r2 = 0;
0x00052d3c ldr r3, [sp, 0x18] | r3 = var_18h;
0x00052d3e mov r1, sl | r1 = sl;
0x00052d40 mov r0, r7 | r0 = r7;
0x00052d42 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00052d44 mov r6, r0 | r6 = r0;
0x00052d46 cmp r0, 0 |
| if (r0 != 0) {
0x00052d48 bne 0x52e48 | goto label_30;
| }
0x00052d4a ldr r3, [sp, 0x3c] | r3 = var_3ch;
| if (r3 != 0) {
0x00052d4c cbz r3, 0x52d94 |
0x00052d4e str r0, [sp] | *(sp) = r0;
0x00052d50 movw r3, 0x4001 | r3 = 0x4001;
0x00052d54 ldr r6, [r7, 0x18] | r6 = *((r7 + 0x18));
0x00052d56 mov r2, r4 | r2 = r4;
0x00052d58 mov r1, sl | r1 = sl;
0x00052d5a mov r0, r7 | r0 = r7;
0x00052d5c blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00052d5e mov r6, r0 | r6 = r0;
0x00052d60 cmp r0, 0 |
| if (r0 != 0) {
0x00052d62 bne 0x52e48 | goto label_30;
| }
0x00052d64 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00052d66 mov r1, r5 | r1 = r5;
0x00052d68 mov r0, r4 | r0 = r4;
0x00052d6a bl 0x1e744 | fcn_0001e744 (r0, r1, r2);
0x00052d6e ldr r3, [r4] | r3 = *(r4);
0x00052d70 mov r6, r0 | r6 = r0;
| if (r3 != 0) {
0x00052d72 cbz r3, 0x52d7e |
0x00052d74 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00052d76 mov r0, r4 | r0 = r4;
0x00052d78 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00052d7a movs r3, 0 | r3 = 0;
0x00052d7c str r3, [r4] | *(r4) = r3;
| }
0x00052d7e cmp r6, 0 |
| if (r6 != 0) {
0x00052d80 bne 0x52e48 | goto label_30;
| }
0x00052d82 ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x00052d84 cbz r3, 0x52d94 | goto label_31;
| }
0x00052d86 mov r1, r8 | r1 = r8;
0x00052d88 mov r0, r5 | r0 = r5;
0x00052d8a blx 0x7ca0 | r0 = fcn_00007ca0 ();
0x00052d8e mov r6, r0 | r6 = r0;
0x00052d90 cmp r0, 0 |
| if (r0 == 0) {
0x00052d92 beq 0x52e48 | goto label_30;
| }
| }
| label_31:
0x00052d94 mov r0, sl | r0 = sl;
0x00052d96 blx 0x8160 | r0 = fcn_00008160 ();
0x00052d9a bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x00052d9e ldrd r0, r1, [sp, 0x48] | __asm ("ldrd r0, r1, [var_48h]");
0x00052da2 adds r3, 1 | r3++;
0x00052da4 add sl, r3 | sl += r3;
0x00052da6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00052da8 sub.w r2, sl, r3 | r2 = sl - r3;
0x00052dac asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00052dae cmp r2, r0 |
0x00052db0 sbcs r3, r1 | __asm ("sbcs r3, r1");
0x00052db2 blt 0x52d38 |
| } while (r2 < r0);
0x00052db4 ldrd r4, r5, [sp, 0x1c] | __asm ("ldrd r4, r5, [var_20h]");
| label_29:
0x00052db8 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00052dba cbz r3, 0x52dc6 |
0x00052dbc ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00052dbe mov r0, r4 | r0 = r4;
0x00052dc0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00052dc2 movs r3, 0 | r3 = 0;
0x00052dc4 str r3, [r4] | *(r4) = r3;
| }
0x00052dc6 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
| if (r3 != 0) {
0x00052dc8 cbz r3, 0x52dd4 |
0x00052dca mov r1, r8 | r1 = r8;
0x00052dcc mov r0, r7 | r0 = r7;
0x00052dce movs r2, 0 | r2 = 0;
0x00052dd0 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00052dd2 mov fp, r0 |
| }
| label_11:
0x00052dd4 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00052dd6 blx 0x84f8 | fcn_000084f8 ();
0x00052dda ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00052ddc cbz r3, 0x52de8 |
0x00052dde ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00052de0 mov r0, r4 | r0 = r4;
0x00052de2 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00052de4 movs r3, 0 | r3 = 0;
0x00052de6 str r3, [r4] | *(r4) = r3;
| }
0x00052de8 mov r0, r4 | r0 = r4;
0x00052dea blx 0x84f8 | fcn_000084f8 ();
0x00052dee b 0x52bd4 | goto label_7;
| label_25:
0x00052df0 mov r1, r0 | r1 = r0;
0x00052df2 mov r0, r5 | r0 = r5;
0x00052df4 bl 0x14f9c | r0 = fcn_00014f9c (r0, r1);
0x00052df8 mov fp, r0 |
0x00052dfa cmp r0, 0 |
| if (r0 != 0) {
0x00052dfc bne.w 0x52bd4 | goto label_7;
| }
0x00052e00 b 0x52c30 | goto label_8;
| label_22:
0x00052e02 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00052e04 movw r3, 0x20a | r3 = 0x20a;
0x00052e08 cmp.w fp, 0 |
0x00052e0c ite eq |
| if (fp != 0) {
0x00052e0e moveq r2, 0 | r2 = 0;
| }
| if (fp == 0) {
0x00052e10 andne r2, r2, 1 | r2 &= 1;
| }
0x00052e14 cmp r0, r3 |
0x00052e16 str r2, [sp, 0xc] | var_ch = r2;
0x00052e18 it ne |
| if (r0 != r3) {
0x00052e1a movne r2, r0 | r2 = r0;
| goto label_32;
| }
| if (r0 != r3) {
| label_32:
0x00052e1c bne.w 0x52bcc | goto label_9;
| }
| label_24:
0x00052e20 mov sb, fp | sb = fp;
0x00052e22 b 0x52bf4 | goto label_10;
| label_26:
0x00052e24 mov.w fp, 7 |
0x00052e28 blx 0x84f8 | fcn_000084f8 ();
0x00052e2c b 0x52bd4 | goto label_7;
| label_27:
0x00052e2e str.w sl, [sp, 0x10] | __asm ("str.w sl, [var_10h]");
0x00052e32 b 0x52dd4 | goto label_11;
| label_23:
0x00052e34 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00052e36 mov r2, r0 | r2 = r0;
0x00052e38 cmp.w fp, 0 |
0x00052e3c ite eq |
| if (fp != 0) {
0x00052e3e moveq r3, 0 | r3 = 0;
| }
| if (fp == 0) {
0x00052e40 andne r3, r3, 1 | r3 &= 1;
| }
0x00052e44 str r3, [sp, 0xc] | var_ch = r3;
0x00052e46 b 0x52bcc | goto label_9;
| label_30:
0x00052e48 ldrd r4, r5, [sp, 0x1c] | __asm ("ldrd r4, r5, [var_20h]");
0x00052e4c mov fp, r6 |
0x00052e4e b 0x52dd4 | goto label_11;
| label_28:
0x00052e50 mov.w fp, 7 |
0x00052e54 b 0x52dd4 | goto label_11;
| label_12:
0x00052e56 blx 0x7e8c | fcn_00007e8c ();
0x00052e5a nop |
0x00052e5c uxth r6, r5 | r6 = (int16_t) r5;
0x00052e5e movs r7, r0 | r7 = r0;
0x00052e60 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00052e62 movs r0, r0 |
0x00052e64 sxtb r2, r7 | r2 = (int32_t) r7;
0x00052e66 movs r7, r0 | r7 = r0;
0x00052e68 pop {r3} |
0x00052e6a movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x533b4 */
| #include <stdint.h>
|
; (fcn) fcn.000533b4 () | void fcn_000533b4 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| if (? >= ?) {
0x000533b4 ldrblt r4, [r0, 0xb40]! | r4 = *((r0 += 0xb40));
| }
0x000533b8 mov r5, r0 | r5 = r0;
0x000533ba ldr.w r7, [r0, 0xd0] | r7 = *((r0 + 0xd0));
0x000533be sub sp, 0xc |
0x000533c0 add r3, pc | r3 += pc;
0x000533c2 mov r6, r1 | r6 = r1;
0x000533c4 ldr.w r3, [r3, 0x100] | r3 = *((r3 + 0x100));
| if (r3 != 0) {
0x000533c8 cbz r3, 0x533cc |
0x000533ca blx r3 | uint32_t (*r3)() ();
| }
0x000533cc ldr.w r4, [r5, 0x88] | r4 = *((r5 + 0x88));
| if (r4 == 0) {
0x000533d0 cbz r4, 0x533de | goto label_4;
| }
| do {
0x000533d2 mov r0, r4 | r0 = r4;
0x000533d4 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x000533d6 blx 0x84f8 | fcn_000084f8 ();
0x000533da cmp r4, 0 |
0x000533dc bne 0x533d2 |
| } while (r4 != 0);
| label_4:
0x000533de movs r3, 0 | r3 = 0;
0x000533e0 strb r3, [r5, 4] | *((r5 + 4)) = r3;
| if (r6 != 0) {
0x000533e2 cbz r6, 0x533ea |
0x000533e4 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x000533e6 lsls r3, r3, 0x14 | r3 <<= 0x14;
| if (r3 >= r3) {
0x000533e8 bpl 0x53492 | goto label_5;
| }
| }
| label_0:
0x000533ea movs r2, 0 | r2 = 0;
| label_1:
0x000533ec ldr.w r3, [r5, 0x98] | r3 = *((r5 + 0x98));
0x000533f0 mov r1, r6 | r1 = r6;
0x000533f2 str r2, [sp] | *(sp) = r2;
0x000533f4 ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x000533f6 ldr.w r0, [r5, 0xd8] | r0 = *((r5 + 0xd8));
0x000533fa bl 0x5069c | fcn_0005069c (r0, r1, r2, r3, r4);
0x000533fe ldr r2, [r5, 0x64] | r2 = *((r5 + 0x64));
0x00053400 movs r1, 0 | r1 = 0;
0x00053402 ldr r3, [r5, 0x58] | r3 = *((r5 + 0x58));
0x00053404 str.w r1, [r5, 0xd8] | __asm ("str.w r1, [r5, 0xd8]");
0x00053408 adds r2, 1 | r2++;
0x0005340a str r2, [r5, 0x64] | *((r5 + 0x64)) = r2;
| if (r3 == 0) {
0x0005340c cbz r3, 0x53418 | goto label_6;
| }
0x0005340e movs r2, 1 | r2 = 1;
| do {
0x00053410 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x00053412 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x00053414 cmp r3, 0 |
0x00053416 bne 0x53410 |
| } while (r3 != 0);
| label_6:
0x00053418 ldr.w r0, [r5, 0xd4] | r0 = *((r5 + 0xd4));
0x0005341c movs r1, 0 | r1 = 0;
0x0005341e bl 0x157d4 | fcn_000157d4 (r0, r1);
0x00053422 ldrb r3, [r5, 0xf] | r3 = *((r5 + 0xf));
0x00053424 cmp r3, 0 |
| if (r3 != 0) {
0x00053426 bne 0x534a0 | goto label_7;
| }
0x00053428 ldr r3, [r5, 0x40] | r3 = *((r5 + 0x40));
0x0005342a ldr r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x0005342c cbz r3, 0x5343e |
0x0005342e mov r0, r5 | r0 = r5;
0x00053430 bl 0x1489c | r0 = fcn_0001489c (r0);
0x00053434 uxtb r3, r0 | r3 = (int8_t) r0;
0x00053436 cmp r3, 0xa |
0x00053438 it ne |
| if (r3 != 0xa) {
0x0005343a cmpne r3, 0xd | __asm ("cmpne r3, 0xd");
| }
| if (r3 == 0xa) {
0x0005343c beq 0x534a8 | goto label_8;
| }
| }
| label_3:
0x0005343e mov r0, r5 | r0 = r5;
0x00053440 bl 0x52f34 | fcn_00052f34 (r0);
| label_2:
0x00053444 ldr r3, [pc, 0x74] |
0x00053446 add r3, pc |
0x00053448 ldr.w r3, [r3, 0x104] | r3 = *(0xa6a0a);
| if (r3 != 0) {
0x0005344c cbz r3, 0x53450 |
0x0005344e blx r3 | uint32_t (*r3)(uint32_t) (r0);
| }
0x00053450 ldr r4, [r5, 0x40] | r4 = *((r5 + 0x40));
0x00053452 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00053454 cbz r3, 0x53460 |
0x00053456 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00053458 mov r0, r4 | r0 = r4;
0x0005345a blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0005345c movs r3, 0 | r3 = 0;
0x0005345e str r3, [r4] | *(r4) = r3;
| }
0x00053460 ldr r4, [r5, 0x3c] | r4 = *((r5 + 0x3c));
0x00053462 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00053464 cbz r3, 0x53470 |
0x00053466 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00053468 mov r0, r4 | r0 = r4;
0x0005346a blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0005346c movs r3, 0 | r3 = 0;
0x0005346e str r3, [r4] | *(r4) = r3;
| }
0x00053470 mov r0, r7 | r0 = r7;
0x00053472 bl 0xdff4 | fcn_0000dff4 (r0);
0x00053476 ldr r3, [pc, 0x48] |
0x00053478 ldr.w r2, [r5, 0xd4] | r2 = *((r5 + 0xd4));
0x0005347c add r3, pc |
0x0005347e ldr r0, [r2, 0x2c] | r0 = *((r2 + 0x2c));
0x00053480 ldr.w r3, [r3, 0x90] | r3 = *(0xa69d2);
0x00053484 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00053486 mov r0, r5 | r0 = r5;
0x00053488 add sp, 0xc |
0x0005348a pop.w {r4, r5, r6, r7, lr} |
0x0005348e b.w 0x84f4 | void (*0x84f4)() ();
| label_5:
0x00053492 mov r0, r5 | r0 = r5;
0x00053494 bl 0x94ac | r0 = fcn_000094ac (r0);
0x00053498 cmp r0, 0 |
| if (r0 != 0) {
0x0005349a bne 0x533ea | goto label_0;
| }
0x0005349c mov r2, r7 | r2 = r7;
0x0005349e b 0x533ec | goto label_1;
| label_7:
0x000534a0 mov r0, r5 | r0 = r5;
0x000534a2 bl 0x1ce9c | fcn_0001ce9c (r0);
0x000534a6 b 0x53444 | goto label_2;
| label_8:
0x000534a8 ldr r3, [pc, 0x18] |
0x000534aa movs r2, 6 | r2 = 6;
0x000534ac str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x000534ae strb r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
0x000534b0 add r3, pc | r3 = 0xa6978;
0x000534b2 str.w r3, [r5, 0xcc] | __asm ("str.w r3, [r5, 0xcc]");
0x000534b6 b 0x5343e | 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/libsqlite3.so.0.8.6 @ 0x534c8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000534c8 () | void fcn_000534c8 (int16_t arg_1h, int16_t arg_c8h, int16_t arg_cch, int16_t arg_e8h, int16_t arg_158h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_1h;
| int16_t var_0h_2;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h_2;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_48h;
| int16_t var_49h;
| int16_t var_4ch;
| int16_t var_6ch;
| int16_t var_78h;
| int16_t var_9ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000534c8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000534cc mov r8, r2 | r8 = r2;
0x000534ce sub sp, 0xa4 |
0x000534d0 ldr.w r2, [pc, 0x9b8] | r2 = *(0x00053e8c);
0x000534d4 mov sb, r0 | sb = r0;
0x000534d6 mov r6, r1 | r6 = r1;
0x000534d8 str r3, [sp, 0xc] | var_ch = r3;
0x000534da ldr.w r3, [pc, 0x9b4] |
0x000534de add r2, pc | r2 += pc;
0x000534e0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000534e2 ldr r3, [r3] | r3 = *(0x53e92);
0x000534e4 str r3, [sp, 0x9c] | var_9ch = r3;
0x000534e6 mov.w r3, 0 | r3 = 0;
0x000534ea cmp r1, 0 |
| if (r1 == 0) {
0x000534ec beq.w 0x53620 | goto label_24;
| }
0x000534f0 ldrb r4, [r1] | r4 = *(r1);
0x000534f2 mov r0, r6 | r0 = r6;
0x000534f4 ldr.w r1, [pc, 0x99c] |
0x000534f8 clz r5, r4 | r5 &= r4;
0x000534fc add r1, pc | r1 = 0xa7394;
0x000534fe lsrs r5, r5, 5 | r5 >>= 5;
0x00053500 blx 0x7ca0 | r0 = fcn_00007ca0 ();
0x00053504 cmp r0, 0 |
| if (r0 == 0) {
0x00053506 beq.w 0x5362c | goto label_25;
| }
0x0005350a movs r5, 0 | r5 = 0;
0x0005350c cmp r4, 0 |
| if (r4 == 0) {
0x0005350e beq.w 0x53620 | goto label_24;
| }
| label_0:
0x00053512 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x00053514 ands r3, r3, 0x80 | r3 &= 0x80;
| if (r3 != r3) {
0x00053518 bne.w 0x5362c | goto label_25;
| }
0x0005351c ldr r2, [sp, 0xcc] | r2 = *(arg_cch);
0x0005351e ands r2, r2, 0x100 | r2 &= 0x100;
0x00053522 str r2, [sp, 0x10] | var_10h = r2;
| if (r2 == r2) {
0x00053524 beq.w 0x53644 | goto label_26;
| }
0x00053528 cmp r5, 0 |
| if (r5 != 0) {
0x0005352a bne.w 0x539ce | goto label_27;
| }
0x0005352e movs r0, 0x30 | r0 = 0x30;
0x00053530 movs r1, 0 | r1 = 0;
0x00053532 bl 0x1c520 | r0 = fcn_0001c520 (r0);
0x00053536 mov r4, r0 | r4 = r0;
0x00053538 cmp r0, 0 |
| if (r0 == 0) {
0x0005353a beq.w 0x539f2 | goto label_28;
| }
0x0005353e movs r3, 1 | r3 = 1;
0x00053540 strb r5, [r4, 8] | *((r4 + 8)) = r5;
0x00053542 str r5, [sp, 0x10] | var_10h = r5;
0x00053544 str.w r8, [r4] | __asm ("str.w r8, [r4]");
0x00053548 str r4, [r4, 0x20] | *((r4 + 0x20)) = r4;
0x0005354a str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| label_1:
0x0005354c ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x0005354e ands r7, r3, 0x20000 | r7 = r3 & 0x20000;
| if (r7 == r3) {
0x00053552 beq.w 0x53668 | goto label_29;
| }
0x00053556 movs r5, 1 | r5 = 1;
| if (r6 != 0) {
0x00053558 cbz r6, 0x53566 |
0x0005355a mov r0, r6 | r0 = r6;
0x0005355c blx 0x8160 | r0 = fcn_00008160 ();
0x00053560 bic r5, r0, 0xc0000000 | r5 = BIT_MASK (r0, 0xc0000000);
0x00053564 adds r5, 1 | r5++;
| }
0x00053566 ldr.w r7, [sb, 8] | r7 = *((sb + 8));
0x0005356a adds r7, 1 | r7++;
0x0005356c cmp r7, r5 |
0x0005356e mov r0, r7 | r0 = r7;
0x00053570 it lt |
| if (r7 >= r5) {
0x00053572 movlt r0, r5 | r0 = r5;
| }
0x00053574 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00053576 bl 0x12abc | fcn_00012abc (r0);
0x0005357a movs r3, 1 | r3 = 1;
0x0005357c mov sl, r0 | sl = r0;
0x0005357e strb r3, [r4, 9] | *((r4 + 9)) = r3;
0x00053580 cmp r0, 0 |
| if (r0 == 0) {
0x00053582 beq.w 0x53e1a | goto label_30;
| }
0x00053586 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00053588 cmp r3, 0 |
| if (r3 != 0) {
0x0005358a bne.w 0x53a18 | goto label_31;
| }
0x0005358e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00053590 mov r2, r7 | r2 = r7;
0x00053592 mov r1, r6 | r1 = r6;
0x00053594 strb r3, [r0] | *(r0) = r3;
0x00053596 mov r3, r0 | r3 = r0;
0x00053598 ldr.w r5, [sb, 0x24] | r5 = *((sb + 0x24));
0x0005359c mov r0, sb | r0 = sb;
0x0005359e blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000535a0 bics r3, r0, 0x200 | __asm ("bics r3, r0, aav.0x000000ff");
0x000535a4 mov fp, r0 |
| if (r3 != 0) {
0x000535a6 bne.w 0x53c72 | goto label_32;
| }
| label_3:
0x000535aa ldr.w r3, [pc, 0x8ec] | r3 = *(0x00053e98);
0x000535ae add r3, pc | r3 += pc;
0x000535b0 ldrb r7, [r3, 4] | r7 = *((r3 + 4));
0x000535b2 cmp r7, 0 |
| if (r7 == 0) {
0x000535b4 beq.w 0x53d96 | goto label_33;
| }
0x000535b8 ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x000535ba movs r0, 4 | r0 = 4;
0x000535bc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000535be str r0, [sp, 8] | var_8h_2 = r0;
| label_19:
0x000535c0 ldr r0, [sp, 8] | r0 = var_8h_2;
0x000535c2 blx 0x8254 | fcn_00008254 ();
0x000535c6 ldr.w r3, [pc, 0x8d4] | r3 = *(0x00053e9c);
0x000535ca add r3, pc | r3 += pc;
0x000535cc ldrb r2, [r3, 4] | r2 = *((r3 + 4));
0x000535ce cmp r2, 0 |
| if (r2 == 0) {
0x000535d0 beq.w 0x53d92 | goto label_34;
| }
0x000535d4 ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x000535d6 movs r0, 2 | r0 = 2;
0x000535d8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000535da str r0, [sp, 0x14] | var_14h = r0;
| label_18:
0x000535dc ldr r0, [sp, 0x14] | r0 = var_14h;
0x000535de blx 0x8254 | fcn_00008254 ();
0x000535e2 ldr.w r3, [pc, 0x8bc] | r3 = *(0x00053ea0);
0x000535e4 subs r0, 0xbc | r0 -= 0xbc;
0x000535e6 add r3, pc | r3 += pc;
0x000535e8 ldr.w r5, [r3, 0x4ac] | r5 = *((r3 + 0x4ac));
| if (r5 == 0) {
0x000535ec cbz r5, 0x53612 | goto label_35;
| }
0x000535ee ldr r7, [sp, 8] | r7 = var_8h_2;
0x000535f0 mov fp, r6 |
| do {
0x000535f2 ldr r6, [r5] | r6 = *(r5);
0x000535f4 mov r0, sl | r0 = sl;
0x000535f6 ldr.w r1, [r6, 0xa8] | r1 = *((r6 + 0xa8));
0x000535fa blx 0x7ca0 | r0 = fcn_00007ca0 ();
| if (r0 == 0) {
0x000535fe cbnz r0, 0x53608 |
0x00053600 ldr r3, [r6] | r3 = *(r6);
0x00053602 cmp sb, r3 |
| if (sb == r3) {
0x00053604 beq.w 0x53c04 | goto label_36;
| }
| }
0x00053608 ldr r5, [r5, 0x48] | r5 = *((r5 + 0x48));
0x0005360a cmp r5, 0 |
0x0005360c bne 0x535f2 |
| } while (r5 != 0);
0x0005360e mov r6, fp | r6 = fp;
0x00053610 str r7, [sp, 8] | var_8h_2 = r7;
| label_35:
0x00053612 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00053614 blx 0x81d4 | fcn_000081d4 ();
0x00053618 mov r0, sl | r0 = sl;
0x0005361a blx 0x84f8 | fcn_000084f8 ();
0x0005361e b 0x5366a | goto label_2;
| label_24:
0x00053620 ldrb.w r3, [r8, 0x52] | r3 = *((r8 + 0x52));
0x00053624 movs r5, 1 | r5 = 1;
0x00053626 cmp r3, 2 |
| if (r3 != 2) {
0x00053628 bne.w 0x53512 | goto label_0;
| }
| label_25:
0x0005362c ldr r3, [sp, 0xc8] | r3 = *(arg_c8h);
0x0005362e orr r3, r3, 2 | r3 |= 2;
0x00053632 str r3, [sp, 0xc8] | *(arg_c8h) = r3;
0x00053634 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x00053636 tst.w r3, 0x100 |
0x0005363a mov.w r3, 1 | r3 = 1;
0x0005363e str r3, [sp, 0x10] | var_10h = r3;
0x00053640 bne.w 0x539d0 |
| while (1) {
| label_26:
0x00053644 movs r0, 0x30 | r0 = 0x30;
0x00053646 movs r1, 0 | r1 = 0;
0x00053648 bl 0x1c520 | r0 = fcn_0001c520 (r0);
0x0005364c mov r4, r0 | r4 = r0;
0x0005364e cmp r0, 0 |
| if (r0 == 0) {
0x00053650 beq.w 0x539f2 | goto label_28;
| }
0x00053654 movs r7, 0 | r7 = 0;
0x00053656 movs r3, 1 | r3 = 1;
0x00053658 str.w r8, [r0] | __asm ("str.w r8, [r0]");
0x0005365c str r0, [r0, 0x20] | *((r0 + 0x20)) = r0;
0x0005365e strb r7, [r0, 8] | *((r0 + 8)) = r7;
0x00053660 str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
0x00053662 cmp r5, 0 |
| if (r5 == 0) {
0x00053664 beq.w 0x539de | goto label_37;
| }
| label_29:
0x00053668 str r7, [sp, 8] | var_8h_2 = r7;
| label_2:
0x0005366a movs r0, 0x5c | r0 = 0x5c;
0x0005366c movs r1, 0 | r1 = 0;
0x0005366e bl 0x1c520 | r0 = fcn_0001c520 (r0);
0x00053672 mov r5, r0 | r5 = r0;
0x00053674 cmp r0, 0 |
| if (r0 == 0) {
0x00053676 beq.w 0x53a40 | goto label_38;
| }
0x0005367a ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0005367e mov.w r2, 0x1000 | r2 = 0x1000;
0x00053682 str r2, [sp, 0x30] | var_30h = r2;
0x00053684 mov.w sl, 0 | sl = 0;
0x00053688 str.w sl, [r0] | __asm ("str.w sl, [r0]");
0x0005368c cmp r3, 0x40 |
0x0005368e mov r2, r3 | r2 = r3;
0x00053690 it lt |
| if (r3 >= 0x40) {
0x00053692 movlt r2, 0x40 | r2 = 0x40;
| }
0x00053694 adds r2, 7 | r2 += 7;
0x00053696 bic r2, r2, 7 | r2 = BIT_MASK (r2, 7);
0x0005369a str r2, [sp, 0x14] | var_14h = r2;
0x0005369c ldr r2, [sp, 0xc8] | r2 = *(arg_c8h);
0x0005369e ands r2, r2, 2 | r2 &= 2;
| if (r2 == r2) {
0x000536a2 beq.w 0x53a22 | goto label_39;
| }
0x000536a6 cmp r6, 0 |
| if (r6 == 0) {
0x000536a8 beq.w 0x53b24 | goto label_40;
| }
0x000536ac ldrb r2, [r6] | r2 = *(r6);
0x000536ae cmp r2, 0 |
| if (r2 != 0) {
0x000536b0 bne.w 0x53dd0 | goto label_41;
| }
0x000536b4 mov fp, r2 |
0x000536b6 movs r2, 1 | r2 = 1;
0x000536b8 str r2, [sp, 0x24] | var_24h = r2;
0x000536ba mov.w r0, 0x12a | r0 = 0x12a;
0x000536be str r2, [sp, 0x20] | var_20h = r2;
0x000536c0 mov r2, fp | r2 = fp;
0x000536c2 str r6, [sp, 0x1c] | var_1ch = r6;
0x000536c4 str.w fp, [sp, 0x2c] | __asm ("str.w fp, [var_2ch]");
0x000536c8 str.w fp, [sp, 0x18] | __asm ("str.w fp, [var_18h_2]");
| label_4:
0x000536cc str r2, [sp, 0x28] | var_28h = r2;
0x000536ce adds r3, 7 | r3 += 7;
0x000536d0 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000536d2 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000536d6 movs r1, 0 | r1 = 0;
0x000536d8 add r0, r2 | r0 += r2;
0x000536da ldr r2, [sp, 0x14] | r2 = var_14h;
0x000536dc add.w r0, r0, r2, lsl 1 | r0 += (r2 << 1);
0x000536e0 add r0, r3 | r0 += r3;
0x000536e2 bl 0x1c520 | fcn_0001c520 (r0);
0x000536e6 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000536e8 mov sl, r0 | sl = r0;
0x000536ea cmp r0, 0 |
| if (r0 == 0) {
0x000536ec beq.w 0x53da8 | goto label_42;
| }
0x000536f0 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x000536f4 ldr r7, [sp, 0x14] | r7 = var_14h;
0x000536f6 adds r1, r3, 7 | r1 = r3 + 7;
0x000536f8 add.w r3, r0, 0x110 | r3 = r0 + 0x110;
0x000536fc bic r1, r1, 7 | r1 = BIT_MASK (r1, 7);
0x00053700 str r3, [r0, 0x3c] | *((r0 + 0x3c)) = r3;
0x00053702 add r1, r3 | r1 += r3;
0x00053704 adds r0, 0xe0 | r0 += 0xe0;
0x00053706 str r1, [r0, -0x9c] | *((r0 - 0x9c)) = r1;
0x0005370a add r1, r7 | r1 += r7;
0x0005370c adds r3, r1, r7 | r3 = r1 + r7;
0x0005370e str r1, [r0, -0xa0] | *((r0 - 0xa0)) = r1;
0x00053712 adds r3, 8 | r3 += 8;
0x00053714 str.w r0, [sl, 0xd4] | __asm ("str.w r0, [sl, 0xd4]");
0x00053718 str.w sl, [r1, r7] | __asm ("str.w sl, [r1, r7]");
0x0005371c str.w r3, [sl, 0xa8] | __asm ("str.w r3, [sl, 0xa8]");
0x00053720 cmp r2, 0 |
| if (r2 != 0) {
0x00053722 bne.w 0x53d1e | goto label_43;
| }
0x00053724 strh r4, [r7, 0x16] | *((r7 + 0x16)) = r4;
0x00053726 str.w r2, [sl, 0xac] | __asm ("str.w r2, [sl, 0xac]");
0x0005372a str.w r2, [sl, 0xdc] | __asm ("str.w r2, [sl, 0xdc]");
| label_17:
0x0005372e ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x00053730 str.w sb, [sl] | __asm ("str.w sb, [sl]");
0x00053734 str.w r3, [sl, 0x90] | __asm ("str.w r3, [sl, 0x90]");
0x00053738 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005373a cmp r3, 0 |
| if (r3 == 0) {
0x0005373c beq.w 0x53d9a | goto label_44;
| }
0x00053740 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00053742 ldrb r3, [r3] | r3 = *(r3);
0x00053744 cmp r3, 0 |
| if (r3 != 0) {
0x00053746 bne.w 0x53c8a | goto label_45;
| }
0x0005374a ldr r2, [sp, 0xcc] | r2 = *(arg_cch);
0x0005374c str r3, [sp, 0x1c] | var_1ch = r3;
0x0005374e and r2, r2, 1 | r2 &= 1;
0x00053752 mov r7, r2 | r7 = r2;
| label_14:
0x00053754 movs r3, 1 | r3 = 1;
0x00053756 strb.w r3, [sl, 0xd] | *((sl + 0xd)) = r3;
0x0005375a str r3, [sp, 0x14] | var_14h = r3;
0x0005375c movw r3, 0x401 | r3 = 0x401;
0x00053760 strh.w r3, [sl, 0x10] | *((sl + 0x10)) = r3;
| label_13:
0x00053764 mov.w r2, -1 | r2 = -1;
0x00053768 add r1, sp, 0x30 | r1 += var_30h;
0x0005376a mov r0, sl | r0 = sl;
0x0005376c bl 0x1c864 | r0 = fcn_0001c864 (r0, r1, r2);
0x00053770 mov fp, r0 |
0x00053772 cmp r0, 0 |
| if (r0 != 0) {
0x00053774 bne.w 0x53b3c | goto label_12;
| }
0x00053778 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005377a ldr.w sb, [sp, 0x30] | sb = var_30h;
0x0005377e eor r2, r3, 1 | r2 = r3 ^ 1;
0x00053782 str r2, [sp, 0x18] | var_18h_2 = r2;
| if (r3 == 0) {
0x00053784 cbnz r3, 0x5378c |
0x00053786 ldr.w fp, [pc, 0x71c] | fp = *(0x00053ea4);
0x0005378a add fp, pc |
| }
0x0005378c ldr.w r3, [sl, 0xd4] | r3 = *((sl + 0xd4));
0x00053790 movs r2, 0x30 | r2 = 0x30;
0x00053792 movs r1, 0 | r1 = 0;
0x00053794 mov r0, r3 | r0 = r3;
0x00053796 blx 0x8264 | fcn_00008264 ();
0x0005379a ldr r2, [sp, 0x18] | r2 = var_18h_2;
0x0005379c mov r1, sb | r1 = sb;
0x0005379e str.w fp, [r0, 0x24] | __asm ("str.w fp, [r0, 0x24]");
0x000537a2 str.w sl, [r0, 0x28] | __asm ("str.w sl, [r0, 0x28]");
0x000537a6 strb.w r2, [r0, 0x20] | *((r0 + 0x20)) = r2;
0x000537aa movs r2, 1 | r2 = 1;
0x000537ac strd r2, r2, [r0, 0x14] | __asm ("strd r2, r2, [r0, 0x14]");
0x000537b0 movs r2, 0x58 | r2 = 0x58;
0x000537b2 str r2, [r0, 0x1c] | *((r0 + 0x1c)) = r2;
0x000537b4 movs r2, 2 | r2 = 2;
0x000537b6 strb.w r2, [r0, 0x21] | *((r0 + 0x21)) = r2;
0x000537ba movs r2, 0x64 | r2 = 0x64;
0x000537bc str r2, [r0, 0x10] | *((r0 + 0x10)) = r2;
0x000537be bl 0xf048 | r0 = fcn_0000f048 (r0, r1);
0x000537c2 mov sb, r0 | sb = r0;
0x000537c4 cmp r0, 0 |
| if (r0 != 0) {
0x000537c6 bne.w 0x53b3a | goto label_46;
| }
0x000537ca ldr r2, [sp, 0x14] | r2 = var_14h;
0x000537cc ldr r3, [sp, 0x20] | r3 = var_20h;
0x000537ce strb.w r7, [sl, 0xe] | *((sl + 0xe)) = r7;
0x000537d2 strb.w r3, [sl, 0xf] | *((sl + 0xf)) = r3;
0x000537d6 uxtb r3, r2 | r3 = (int8_t) r2;
0x000537d8 strb.w r3, [sl, 0xc] | *((sl + 0xc)) = r3;
0x000537dc strb.w r3, [sl, 4] | *((sl + 4)) = r3;
0x000537e0 strb.w r3, [sl, 0x12] | *((sl + 0x12)) = r3;
0x000537e4 strb.w r3, [sl, 7] | *((sl + 7)) = r3;
0x000537e8 ldr r3, [sp, 0xc8] | r3 = *(arg_c8h);
0x000537ea and fp, r3, 1 |
0x000537ee mvn r3, 0xc0000000 | r3 = ~0xc0000000;
0x000537f2 str.w r3, [sl, 0x9c] | __asm ("str.w r3, [sl, 0x9c]");
0x000537f6 eor r3, fp, 1 | r3 = fp ^ 1;
0x000537fa strb.w r3, [sl, 6] | *((sl + 6)) = r3;
| if (r2 == 0) {
0x000537fe cbnz r2, 0x5380a |
0x00053800 movs r3, 1 |
0x00053802 movt r3, 0xa02 | r3 = 0xa020001;
0x00053806 str.w r3, [sl, 8] | __asm ("str.w r3, [sl, 8]");
| }
0x0005380a vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x0005380e movs r3, 0x58 | r3 = 0x58;
0x00053810 mov r0, sl | r0 = sl;
0x00053812 strh.w r3, [sl, 0x8c] | *((sl + 0x8c)) = r3;
0x00053816 vstr d16, [sl, 0xa0] | __asm ("vstr d16, [sl, 0xa0]");
0x0005381a bl 0x137bc | fcn_000137bc (r0);
0x0005381e cmp.w fp, 0 |
| if (fp == 0) {
0x00053822 beq.w 0x53d0e | goto label_47;
| }
0x00053826 movs r3, 2 | r3 = 2;
0x00053828 strb.w r3, [sl, 5] | *((sl + 5)) = r3;
| label_16:
0x0005382c ldr.w r2, [pc, 0x678] | r2 = *(0x00053ea8);
0x00053830 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x00053834 add r2, pc | r2 += pc;
0x00053836 str.w r2, [sl, 0xc8] | __asm ("str.w r2, [sl, 0xc8]");
0x0005383a cmp r3, 0 |
| if (r3 != 0) {
0x0005383c bne.w 0x53d08 | goto label_48;
| }
0x00053840 ldrb.w r3, [sl, 0x16] | r3 = *((sl + 0x16));
0x00053844 cmp r3, 0 |
| if (r3 == 0) {
0x00053846 beq.w 0x53dbc | goto label_49;
| }
0x0005384a ldr.w r3, [pc, 0x660] | r3 = *(0x00053eac);
0x0005384e add r3, pc | r3 += pc;
| label_15:
0x00053850 str.w r3, [sl, 0xcc] | __asm ("str.w r3, [sl, 0xcc]");
0x00053854 ldr.w r3, [sl, 0x3c] | r3 = *((sl + 0x3c));
0x00053858 ldrd r0, r1, [r8, 0x30] | __asm ("ldrd r0, r1, [r8, 0x30]");
0x0005385c str.w sl, [r5] | __asm ("str.w sl, [r5]");
0x00053860 ldr r3, [r3] | r3 = *(r3);
0x00053862 strd r0, r1, [sl, 0x80] | __asm ("strd r0, r1, [sl, 0x80]");
| if (r3 != 0) {
0x00053866 cbz r3, 0x53878 |
0x00053868 ldr r3, [r3] | r3 = *(r3);
0x0005386a cmp r3, 2 |
| if (r3 <= 2) {
0x0005386c ble 0x53878 | goto label_50;
| }
0x0005386e mov r0, sl | r0 = sl;
0x00053870 bl 0x12668 | fcn_00012668 (r0);
0x00053874 ldr.w sl, [r5] | sl = *(r5);
| }
| label_50:
0x00053878 add r3, sp, 0x38 | r3 += var_38h;
0x0005387a movs r2, 0x64 | r2 = 0x64;
0x0005387c mov r0, r3 | r0 = r3;
0x0005387e movs r1, 0 | r1 = 0;
0x00053880 blx 0x8264 | r0 = fcn_00008264 ();
0x00053884 mov r3, r0 | r3 = r0;
0x00053886 ldr.w r0, [sl, 0x3c] | r0 = *((sl + 0x3c));
0x0005388a ldr r2, [r0] | r2 = *(r0);
| if (r2 != 0) {
0x0005388c cbz r2, 0x538ae |
0x0005388e vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00053892 mov r1, r3 | r1 = r3;
0x00053894 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00053898 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x0005389a movs r2, 0x64 | r2 = 0x64;
0x0005389c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0005389e movw r3, 0x20a | r3 = 0x20a;
0x000538a2 mov fp, r0 |
0x000538a4 cmp r0, r3 |
0x000538a6 it ne |
| if (r0 != r3) {
0x000538a8 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
| if (r0 != r3) {
0x000538aa bne.w 0x53b5c | goto label_20;
| }
| }
0x000538ae ldr r3, [sp, 0xc8] | r3 = *(arg_c8h);
0x000538b0 ldr r0, [r5] | r0 = *(r5);
0x000538b2 str.w r8, [r5, 4] | __asm ("str.w r8, [r5, 4]");
0x000538b6 strb r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x000538b8 ldr.w r3, [pc, 0x5f4] | r3 = *(0x00053eb0);
0x000538bc ldr r1, [r0, 0x3c] | r1 = *((r0 + 0x3c));
0x000538be str.w r5, [r0, 0xb4] | __asm ("str.w r5, [r0, 0xb4]");
0x000538c2 add r3, pc | r3 += pc;
0x000538c4 str.w r3, [r0, 0xb0] | __asm ("str.w r3, [r0, 0xb0]");
0x000538c8 ldr r3, [r1] | r3 = *(r1);
| if (r3 != 0) {
0x000538ca cbz r3, 0x538da |
0x000538cc add.w r2, r0, 0xb0 | r2 = r0 + 0xb0;
0x000538d0 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x000538d2 mov r0, r1 | r0 = r1;
0x000538d4 movs r1, 0xf | r1 = 0xf;
0x000538d6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000538d8 ldr r0, [r5] | r0 = *(r5);
| }
0x000538da movs r3, 0 | r3 = 0;
0x000538dc str r5, [r4, 4] | *((r4 + 4)) = r5;
0x000538de strd r3, r3, [r5, 8] | __asm ("strd r3, r3, [r5, 8]");
0x000538e2 ldrb r3, [r0, 0xe] | r3 = *((r0 + 0xe));
| if (r3 != 0) {
0x000538e4 cbz r3, 0x538ee |
0x000538e6 ldrh r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000538e8 orr r3, r3, 1 | r3 |= 1;
0x000538ec strh r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
| }
0x000538ee ldrb.w r3, [sp, 0x49] | r3 = var_49h;
0x000538f2 ldrb.w r2, [sp, 0x48] | r2 = var_48h;
0x000538f6 lsls r3, r3, 0x10 | r3 <<= 0x10;
0x000538f8 orr.w r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x000538fc sub.w r2, r3, 0x200 | r2 = r3 - 0x200;
0x00053900 str r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
0x00053902 cmp.w r2, 0xfe00 |
| if (r2 > 0xfe00) {
0x00053906 bhi.w 0x53c42 | goto label_51;
| }
0x0005390a subs r2, r3, 1 | r2 = r3 - 1;
0x0005390c tst r2, r3 |
| if ((r2 & r3) != 0) {
0x0005390e bne.w 0x53c42 | goto label_51;
| }
0x00053912 ldrh r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00053914 ldrb.w r6, [sp, 0x4c] | r6 = var_4ch;
0x00053918 orr r3, r3, 2 | r3 |= 2;
0x0005391c strh r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x0005391e mov sb, r6 | sb = r6;
0x00053920 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00053922 subs r3, 0 |
0x00053924 it ne |
| if (r3 == 0) {
0x00053926 movne r3, 1 | r3 = 1;
| }
0x00053928 strb r3, [r5, 0x11] | *((r5 + 0x11)) = r3;
0x0005392a ldr r3, [sp, 0x78] | r3 = var_78h;
0x0005392c subs r3, 0 |
0x0005392e it ne |
| if (r3 == 0) {
0x00053930 movne r3, 1 | r3 = 1;
| }
0x00053932 strb r3, [r5, 0x12] | *((r5 + 0x12)) = r3;
| label_10:
0x00053934 mov r2, sb | r2 = sb;
0x00053936 add.w r1, r5, 0x24 | r1 = r5 + 0x24;
0x0005393a bl 0x1c864 | r0 = fcn_0001c864 (r0, r1, r2);
0x0005393e mov fp, r0 |
0x00053940 cmp r0, 0 |
| if (r0 != 0) {
0x00053942 bne.w 0x53b5c | goto label_20;
| }
0x00053946 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00053948 subs r3, r3, r6 | r3 -= r6;
0x0005394a str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0005394c movs r3, 1 | r3 = 1;
0x0005394e str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x00053950 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 != 0) {
0x00053952 cbz r3, 0x539a6 |
0x00053954 ldr.w sb, [pc, 0x55c] |
0x00053958 add sb, pc | sb = 0xa7810;
0x0005395a ldrb.w r6, [sb, 4] | r6 = *((sb + 4));
| if (r6 != 0) {
0x0005395e cbz r6, 0x53980 |
0x00053960 ldr.w r3, [sb, 0x48] | r3 = *((sb + 0x48));
0x00053964 movs r0, 2 | r0 = 2;
0x00053966 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00053968 ldrb.w r3, [sb, 4] | r3 = *((sb + 4));
0x0005396c mov r6, r0 | r6 = r0;
| if (r3 == 0) {
0x0005396e cbz r3, 0x53980 | goto label_52;
| }
0x00053970 ldr.w r3, [sb, 0x48] | r3 = *((sb + 0x48));
0x00053974 mov r0, fp | r0 = fp;
0x00053976 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00053978 str r0, [r5, 0x3c] | *((r5 + 0x3c)) = r0;
0x0005397a cmp r0, 0 |
| if (r0 == 0) {
0x0005397c beq.w 0x53db6 | goto label_21;
| }
| }
| label_52:
0x00053980 mov r0, r6 | r0 = r6;
0x00053982 blx 0x8254 | fcn_00008254 ();
0x00053986 ldr.w r3, [pc, 0x530] |
0x0005398a mov r0, r6 | r0 = r6;
0x0005398c add r3, pc | r3 = 0xa784a;
0x0005398e ldr.w r2, [r3, 0x4ac] | r2 = *(0xa7cf6);
0x00053992 str.w r5, [r3, 0x4ac] | __asm ("str.w r5, aav.0x000000ff");
0x00053996 str r2, [r5, 0x48] | *((r5 + 0x48)) = r2;
0x00053998 blx 0x81d4 | fcn_000081d4 ();
| label_9:
0x0005399c ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0005399e ldr r6, [r4, 4] | r6 = *((r4 + 4));
0x000539a0 cmp r3, 0 |
| if (r3 != 0) {
0x000539a2 bne.w 0x53b6c | goto label_53;
| }
| }
0x000539a6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000539a8 ldr r6, [r4, 4] | r6 = *((r4 + 4));
0x000539aa str r4, [r3] | *(r3) = r4;
| label_7:
0x000539ac ldr r3, [r6, 0x34] | r3 = *((r6 + 0x34));
0x000539ae cmp r3, 0 |
| if (r3 == 0) {
0x000539b0 beq.w 0x53bf4 | goto label_54;
| }
0x000539b4 ldr r3, [r5] | r3 = *(r5);
0x000539b6 ldr r0, [r3, 0x3c] | r0 = *((r3 + 0x3c));
0x000539b8 ldr r3, [r0] | r3 = *(r0);
0x000539ba mov fp, r3 |
0x000539bc cmp r3, 0 |
| if (r3 == 0) {
0x000539be beq 0x53a56 | goto label_55;
| }
0x000539c0 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x000539c2 adds r2, r5, 4 | r2 = r5 + 4;
0x000539c4 movs r1, 0x1e | r1 = 0x1e;
0x000539c6 mov.w fp, 0 |
0x000539ca blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x000539cc b 0x53a56 | goto label_55;
| label_27:
0x000539ce str r3, [sp, 0x10] | var_10h = r3;
0x000539d0 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x000539d2 bic r3, r3, 0x300 | r3 = BIT_MASK (r3, 0x300);
0x000539d6 orr r3, r3, 0x200 | r3 |= 0x200;
0x000539da str r3, [sp, 0xcc] | *(arg_cch) = r3;
0x000539dc b 0x53644 |
| }
| label_37:
0x000539de ldr r3, [sp, 0x10] | r3 = var_10h;
0x000539e0 cmp r3, 0 |
| if (r3 == 0) {
0x000539e2 beq.w 0x5354c | goto label_1;
| }
0x000539e6 ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x000539e8 lsls r0, r3, 0x19 | r0 = r3 << 0x19;
| if (r0 < r3) {
0x000539ea bmi.w 0x5354c | goto label_1;
| }
0x000539ee str r5, [sp, 8] | var_8h_2 = r5;
0x000539f0 b 0x5366a | goto label_2;
| label_28:
0x000539f2 mov.w fp, 7 |
| do {
| label_5:
0x000539f6 ldr.w r2, [pc, 0x4c4] | r2 = *(0x00053ebc);
0x000539fa ldr.w r3, [pc, 0x494] | r3 = *(0x53e92);
0x000539fe add r2, pc | r2 += pc;
0x00053a00 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00053a02 ldr r2, [r3] | r2 = *(0x53e92);
0x00053a04 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x00053a06 eors r2, r3 | r2 ^= r3;
0x00053a08 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00053a0c bne.w 0x53e86 | goto label_56;
| }
0x00053a10 mov r0, fp | r0 = fp;
0x00053a12 add sp, 0xa4 |
0x00053a14 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_31:
0x00053a18 mov r2, r5 | r2 = r5;
0x00053a1a mov r1, r6 | r1 = r6;
0x00053a1c blx 0x7dcc | fcn_00007dcc ();
0x00053a20 b 0x535aa | goto label_3;
| label_39:
0x00053a22 cmp r6, 0 |
| if (r6 == 0) {
0x00053a24 beq.w 0x53e72 | goto label_57;
| }
0x00053a28 ldrb r1, [r6] | r1 = *(r6);
| if (r1 != 0) {
0x00053a2a cbnz r1, 0x53a62 | goto label_58;
| }
0x00053a2c movs r1, 1 | r1 = 1;
0x00053a2e mov.w r0, 0x12a | r0 = 0x12a;
0x00053a32 mov fp, r2 |
0x00053a34 strd r6, r2, [sp, 0x1c] | __asm ("strd r6, r2, [var_1ch]");
0x00053a38 str r1, [sp, 0x24] | var_24h = r1;
0x00053a3a str r2, [sp, 0x2c] | var_2ch = r2;
0x00053a3c str r2, [sp, 0x18] | var_18h_2 = r2;
0x00053a3e b 0x536cc | goto label_4;
| label_38:
0x00053a40 mov.w fp, 7 |
| label_6:
0x00053a44 mov r0, r5 | r0 = r5;
0x00053a46 blx 0x84f8 | fcn_000084f8 ();
0x00053a4a mov r0, r4 | r0 = r4;
0x00053a4c blx 0x84f8 | fcn_000084f8 ();
0x00053a50 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00053a52 movs r3, 0 | r3 = 0;
0x00053a54 str r3, [r2] | *(r2) = r3;
| label_55:
0x00053a56 ldr r0, [sp, 8] | r0 = var_8h_2;
0x00053a58 cmp r0, 0 |
0x00053a5a beq 0x539f6 |
| } while (r0 == 0);
0x00053a5c blx 0x81d4 | fcn_000081d4 ();
0x00053a60 b 0x539f6 | goto label_5;
| label_58:
0x00053a62 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x00053a66 str r2, [sp, 0x1c] | var_1ch = r2;
0x00053a68 add.w sl, r3, 1 | sl = r3 + 1;
0x00053a6c lsl.w r0, sl, 1 | r0 = sl << 1;
0x00053a70 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00053a72 bl 0x12abc | fcn_00012abc (r0);
0x00053a76 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00053a78 str r0, [sp, 0x18] | var_18h_2 = r0;
0x00053a7a cmp r0, 0 |
| if (r0 == 0) {
0x00053a7c beq.w 0x53db6 | goto label_21;
| }
0x00053a80 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00053a82 mov r1, r6 | r1 = r6;
0x00053a84 mov r0, sb | r0 = sb;
0x00053a86 strb r2, [r3] | *(r3) = r2;
0x00053a88 mov r2, sl | r2 = sl;
0x00053a8a ldr.w r7, [sb, 0x24] | r7 = *((sb + 0x24));
0x00053a8e blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00053a90 mov fp, r0 |
| if (r0 != 0) {
0x00053a92 cbz r0, 0x53aa8 |
0x00053a94 cmp.w r0, 0x200 |
| if (r0 != 0x200) {
0x00053a98 bne 0x53aa8 | goto label_59;
| }
0x00053a9a ldr r2, [sp, 0xcc] | r2 = *(arg_cch);
0x00053a9c movw r3, 0x60e | r3 = 0x60e;
0x00053aa0 ands fp, r2, 0x1000000 |
0x00053aa4 it ne |
| if (fp != r2) {
0x00053aa6 movne fp, r3 | goto label_59;
| }
| }
| label_59:
0x00053aa8 ldr r0, [sp, 0x18] | r0 = var_18h_2;
0x00053aaa blx 0x8160 | fcn_00008160 ();
0x00053aae str r0, [sp, 0x1c] | var_1ch = r0;
0x00053ab0 mov r0, r6 | r0 = r6;
0x00053ab2 blx 0x8160 | r0 = fcn_00008160 ();
0x00053ab6 bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x00053aba adds r3, 1 | r3++;
0x00053abc ldrb r2, [r6, r3] | r2 = *((r6 + r3));
0x00053abe adds r3, r6, r3 | r3 = r6 + r3;
0x00053ac0 str r3, [sp, 0x2c] | var_2ch = r3;
0x00053ac2 cmp r2, 0 |
| if (r2 == 0) {
0x00053ac4 beq.w 0x53e6c | goto label_60;
| }
0x00053ac8 ldr r7, [sp, 8] | r7 = var_8h_2;
0x00053aca mov sl, r3 | sl = r3;
| do {
0x00053acc mov r0, sl | r0 = sl;
0x00053ace blx 0x8160 | fcn_00008160 ();
0x00053ad2 adds r0, 1 | r0++;
0x00053ad4 add sl, r0 | sl += r0;
0x00053ad6 mov r0, sl | r0 = sl;
0x00053ad8 blx 0x8160 | fcn_00008160 ();
0x00053adc adds r0, 1 | r0++;
0x00053ade ldrb.w r3, [sl, r0] | r3 = *((sl + r0));
0x00053ae2 add sl, r0 | sl += r0;
0x00053ae4 cmp r3, 0 |
0x00053ae6 bne 0x53acc |
| } while (r3 != 0);
0x00053ae8 str r7, [sp, 8] | var_8h_2 = r7;
| label_23:
0x00053aea cmp.w fp, 0 |
| if (fp != 0) {
0x00053aee bne.w 0x53dc2 | goto label_61;
| }
0x00053af2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00053af4 ldr.w r1, [sb, 8] | r1 = *((sb + 8));
0x00053af8 bic r2, r3, 0xc0000000 | r2 = BIT_MASK (r3, 0xc0000000);
0x00053afc adds r0, r2, 7 | r0 = r2 + 7;
0x00053afe cmp r0, r1 |
| if (r0 >= r1) {
0x00053b00 bge.w 0x53e46 | goto label_62;
| }
0x00053b04 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00053b06 add.w r0, r2, r2, lsl 1 | r0 = r2 + (r2 << 1);
0x00053b0a add.w r3, sl, 1 | r3 = sl + 1;
0x00053b0e str.w fp, [sp, 0x20] | __asm ("str.w fp, [var_20h]");
0x00053b12 add.w r0, r0, 0x12a | r0 += 0x12a;
0x00053b16 mov fp, r2 |
0x00053b18 subs r3, r3, r1 | r3 -= r1;
0x00053b1a str r6, [sp, 0x1c] | var_1ch = r6;
0x00053b1c str r3, [sp, 0x24] | var_24h = r3;
0x00053b1e ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00053b22 b 0x536cc | goto label_4;
| label_40:
0x00053b24 movs r2, 1 | r2 = 1;
0x00053b26 mov.w r0, 0x12a | r0 = 0x12a;
0x00053b2a str r2, [sp, 0x24] | var_24h = r2;
0x00053b2c mov fp, r6 |
0x00053b2e str r2, [sp, 0x20] | var_20h = r2;
0x00053b30 mov r2, r6 | r2 = r6;
0x00053b32 str r6, [sp, 0x1c] | var_1ch = r6;
0x00053b34 str r6, [sp, 0x2c] | var_2ch = r6;
0x00053b36 str r6, [sp, 0x18] | var_18h_2 = r6;
0x00053b38 b 0x536cc | goto label_4;
| label_46:
0x00053b3a mov fp, r0 |
| label_12:
0x00053b3c ldr.w r6, [sl, 0x3c] | r6 = *((sl + 0x3c));
0x00053b40 ldr r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x00053b42 cbz r3, 0x53b4e |
0x00053b44 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00053b46 mov r0, r6 | r0 = r6;
0x00053b48 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00053b4a movs r3, 0 | r3 = 0;
0x00053b4c str r3, [r6] | *(r6) = r3;
| }
0x00053b4e ldr.w r0, [sl, 0xd0] | r0 = *((sl + 0xd0));
0x00053b52 bl 0xdff4 | fcn_0000dff4 (r0);
0x00053b56 mov r0, sl | r0 = sl;
0x00053b58 blx 0x84f8 | fcn_000084f8 ();
| label_20:
0x00053b5c ldr r0, [r5] | r0 = *(r5);
0x00053b5e cmp r0, 0 |
| if (r0 == 0) {
0x00053b60 beq.w 0x53a44 | goto label_6;
| }
0x00053b64 movs r1, 0 | r1 = 0;
0x00053b66 bl 0x533b4 | fcn_000533b4 (r0, r1);
0x00053b6a b 0x53a44 | goto label_6;
| label_53:
0x00053b6c ldr.w ip, [r8, 0x14] | ip = *((r8 + 0x14));
0x00053b70 cmp.w ip, 0 |
| if (ip <= 0) {
0x00053b74 ble 0x53b90 | goto label_8;
| }
0x00053b76 ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x00053b7a movs r1, 0 | r1 = 0;
0x00053b7c ldr r7, [sp, 8] | r7 = var_8h_2;
| do {
0x00053b7e ldr r3, [r2, 4] | r3 = *((r2 + 4));
| if (r3 != 0) {
0x00053b80 cbz r3, 0x53b86 |
0x00053b82 ldrb r0, [r3, 9] | r0 = *((r3 + 9));
| if (r0 != 0) {
0x00053b84 cbnz r0, 0x53bc0 | goto label_63;
| }
| }
0x00053b86 adds r1, 1 | r1++;
0x00053b88 adds r2, 0x10 | r2 += 0x10;
0x00053b8a cmp r1, ip |
0x00053b8c bne 0x53b7e |
| } while (r1 != ip);
0x00053b8e str r7, [sp, 8] | var_8h_2 = r7;
| label_8:
0x00053b90 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00053b92 str r4, [r3] | *(r3) = r4;
0x00053b94 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00053b96 ldrb r2, [r4, 0xa] | r2 = *((r4 + 0xa));
0x00053b98 adds r1, r3, 1 | r1 = r3 + 1;
0x00053b9a str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
| if (r2 != 0) {
0x00053b9c cbnz r2, 0x53bb0 | goto label_64;
| }
0x00053b9e mov r0, r4 | r0 = r4;
0x00053ba0 bl 0x12464 | fcn_00012464 (r0);
0x00053ba4 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00053ba6 cmp r3, 0 |
| if (r3 == 0) {
0x00053ba8 beq.w 0x539ac | goto label_7;
| }
0x00053bac ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00053bae subs r3, 1 | r3--;
| label_64:
0x00053bb0 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00053bb2 cmp r3, 0 |
| if (r3 != 0) {
0x00053bb4 bne.w 0x539ac | goto label_7;
| }
0x00053bb8 mov r0, r4 | r0 = r4;
0x00053bba bl 0x95d0 | fcn_000095d0 (r0);
0x00053bbe b 0x539ac | goto label_7;
| do {
| label_63:
0x00053bc0 mov r2, r3 | r2 = r3;
0x00053bc2 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00053bc4 cmp r3, 0 |
0x00053bc6 bne 0x53bc0 |
| } while (r3 != 0);
0x00053bc8 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00053bca str r7, [sp, 8] | var_8h_2 = r7;
0x00053bcc cmp r1, r6 |
| if (r1 >= r6) {
0x00053bce bls 0x53bd8 |
0x00053bd0 strd r2, r3, [r4, 0x18] | __asm ("strd r2, r3, [r4, 0x18]");
0x00053bd4 str r4, [r2, 0x1c] | *((r2 + 0x1c)) = r4;
0x00053bd6 b 0x53b90 | goto label_8;
| }
0x00053bd8 ldr r7, [sp, 8] | r7 = var_8h_2;
0x00053bda b 0x53be2 |
| while (r2 != 0) {
0x00053bdc ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00053bde cmp r3, r6 |
| if (r3 >= r6) {
0x00053be0 bhs 0x53c80 | goto label_65;
| }
0x00053be2 mov r1, r2 | r1 = r2;
0x00053be4 ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
0x00053be6 cmp r2, 0 |
0x00053be8 bne 0x53bdc |
| }
0x00053bea str r7, [sp, 8] | var_8h_2 = r7;
0x00053bec strd r2, r1, [r4, 0x18] | __asm ("strd r2, r1, [r4, 0x18]");
| label_11:
0x00053bf0 str r4, [r1, 0x18] | *((r1 + 0x18)) = r4;
0x00053bf2 b 0x53b90 | goto label_8;
| label_54:
0x00053bf4 movw r1, 0xf830 |
0x00053bf8 mov r0, r4 | r0 = r4;
0x00053bfa movt r1, 0xffff | r1 = 0xfffff830;
0x00053bfe bl 0x18650 | fcn_00018650 (r0, r1);
0x00053c00 stc2 p6, c14, [r7, -0x35c]! | __asm ("stc2 p6, c14, aav.0x000000ff!");
| label_36:
0x00053c04 ldr.w r1, [r8, 0x14] | r1 = *((r8 + 0x14));
0x00053c08 str r7, [sp, 8] | var_8h_2 = r7;
0x00053c0a subs r2, r1, 1 | r2 = r1 - 1;
| if (r2 < r1) {
0x00053c0c bmi 0x53c2c | goto label_66;
| }
0x00053c0e ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00053c12 add.w r3, r3, r1, lsl 4 | r3 += (r1 << 4);
| do {
0x00053c16 ldr r1, [r3, -0xc] | r1 = *((r3 - 0xc));
| if (r1 != 0) {
0x00053c1a cbz r1, 0x53c22 |
0x00053c1c ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00053c1e cmp r1, r5 |
| if (r1 == r5) {
0x00053c20 beq 0x53c62 | goto label_67;
| }
| }
0x00053c22 subs r2, 1 | r2--;
0x00053c24 subs r3, 0x10 | r3 -= 0x10;
0x00053c26 adds r1, r2, 1 | r1 = r2 + 1;
0x00053c28 bne 0x53c16 |
| } while (r1 != r2);
0x00053c2a str r7, [sp, 8] | var_8h_2 = r7;
| label_66:
0x00053c2c ldr r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x00053c2e ldr r0, [sp, 0x14] | r0 = var_14h;
0x00053c30 str r5, [r4, 4] | *((r4 + 4)) = r5;
0x00053c32 adds r3, 1 | r3++;
0x00053c34 str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x00053c36 blx 0x81d4 | fcn_000081d4 ();
0x00053c3a mov r0, sl | r0 = sl;
0x00053c3c blx 0x84f8 | fcn_000084f8 ();
0x00053c40 b 0x5399c | goto label_9;
| label_51:
0x00053c42 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00053c44 eor r3, r3, 1 | r3 ^= 1;
0x00053c48 cmp r6, 0 |
0x00053c4a ite eq |
| if (r6 != 0) {
0x00053c4c moveq r3, 0 | r3 = 0;
| }
| if (r6 == 0) {
0x00053c4e andne r3, r3, 1 | r3 &= 1;
| }
0x00053c52 movs r6, 0 | r6 = 0;
0x00053c54 str r6, [r5, 0x24] | *((r5 + 0x24)) = r6;
0x00053c56 cmp r3, 0 |
| if (r3 == 0) {
0x00053c58 beq.w 0x53da4 | goto label_68;
| }
0x00053c5c strb r6, [r5, 0x11] | *((r5 + 0x11)) = r6;
0x00053c5e strb r6, [r5, 0x12] | *((r5 + 0x12)) = r6;
0x00053c60 b 0x53934 | goto label_10;
| label_67:
0x00053c62 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00053c64 mov.w fp, 0x13 |
0x00053c68 blx 0x81d4 | fcn_000081d4 ();
0x00053c6c mov r0, r7 | r0 = r7;
0x00053c6e blx 0x81d4 | fcn_000081d4 ();
| label_32:
0x00053c72 mov r0, sl | r0 = sl;
0x00053c74 blx 0x84f8 | fcn_000084f8 ();
0x00053c78 mov r0, r4 | r0 = r4;
0x00053c7a blx 0x84f8 | fcn_000084f8 ();
0x00053c7e b 0x539f6 | goto label_5;
| label_65:
0x00053c80 strd r2, r1, [r4, 0x18] | __asm ("strd r2, r1, [r4, 0x18]");
0x00053c84 str r7, [sp, 8] | var_8h_2 = r7;
0x00053c86 str r4, [r2, 0x1c] | *((r2 + 0x1c)) = r4;
0x00053c88 b 0x53bf0 | goto label_11;
| label_45:
0x00053c8a ldr r0, [sp, 0xcc] | r0 = *(arg_cch);
0x00053c8c movw r3, 0x7f7f |
0x00053c90 movt r3, 0x108 | r3 = 0x1087f7f;
0x00053c94 ldr.w r2, [sl, 0x3c] | r2 = *((sl + 0x3c));
0x00053c98 ldr.w r1, [sl, 0xa8] | r1 = *((sl + 0xa8));
0x00053c9c ands r3, r0 | r3 &= r0;
0x00053c9e movs r0, 0 | r0 = 0;
0x00053ca0 str r0, [sp, 0x34] | var_34h = r0;
0x00053ca2 add r0, sp, 0x34 | r0 += var_34h;
0x00053ca4 str r0, [sp] | *(sp) = r0;
0x00053ca6 mov r0, sb | r0 = sb;
0x00053ca8 ldr.w fp, [sb, 0x18] | fp = *((sb + 0x18));
0x00053cac blx fp | fp (r0, r1, r2, r3);
0x00053cae ldr.w sb, [sp, 0x34] | sb = var_34h;
0x00053cb2 mov fp, r0 |
0x00053cb4 cmp r0, 0 |
| if (r0 != 0) {
0x00053cb6 bne.w 0x53b3c | goto label_12;
| }
0x00053cba ldr.w r0, [sl, 0x3c] | r0 = *((sl + 0x3c));
0x00053cbe and r7, sb, 1 | r7 = sb & 1;
0x00053cc2 ldr r2, [r0] | r2 = *(r0);
0x00053cc4 ldr r2, [r2, 0x30] | r2 = *((r2 + 0x30));
0x00053cc6 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t) (r0, r2);
0x00053cc8 mov fp, r0 |
0x00053cca cmp r7, 0 |
| if (r7 == 0) {
0x00053ccc beq.w 0x53e26 | goto label_69;
| }
| label_22:
0x00053cd0 ldr r1, [pc, 0x1ec] |
0x00053cd2 ubfx r3, sb, 7, 1 | r3 = (sb >> 7) & ((1 << 1) - 1);
0x00053cd6 movs r2, 0 | r2 = 0;
0x00053cd8 ldr.w r0, [sl, 0xa8] | r0 = *((sl + 0xa8));
0x00053cdc str r3, [sp, 0x1c] | var_1ch = r3;
0x00053cde add r1, pc | r1 = 0xa7ba2;
0x00053ce0 blx 0x7d20 | fcn_00007d20 ();
0x00053ce4 ands r2, fp, 0x2000 | r2 = fp & 0x2000;
0x00053ce8 strb.w r0, [sl, 0xd] | *((sl + 0xd)) = r0;
| if (r2 != fp) {
0x00053cec bne 0x53d02 | goto label_70;
| }
0x00053cee ldr r1, [pc, 0x1d4] |
0x00053cf0 ldr.w r0, [sl, 0xa8] | r0 = *((sl + 0xa8));
0x00053cf4 add r1, pc | r1 = 0xa7bbe;
0x00053cf6 blx 0x7d20 | fcn_00007d20 ();
0x00053cfa str r0, [sp, 0x14] | var_14h = r0;
0x00053cfc cmp r0, 0 |
| if (r0 == 0) {
0x00053cfe beq.w 0x53764 | goto label_13;
| }
| label_70:
0x00053d02 movs r3, 1 | r3 = 1;
0x00053d04 mov r7, r3 | r7 = r3;
0x00053d06 b 0x53754 | goto label_14;
| label_48:
0x00053d08 ldr r3, [pc, 0x1bc] |
0x00053d0a add r3, pc | r3 = 0xa7bd6;
0x00053d0c b 0x53850 | goto label_15;
| label_47:
0x00053d0e ldrd r2, r3, [sp, 0x1c] | __asm ("ldrd r2, r3, [var_1ch]");
0x00053d12 orrs r3, r2 | r3 |= r2;
0x00053d14 itt ne |
| if (r3 == r2) {
0x00053d16 movne r3, 4 | r3 = 4;
| }
| if (r3 == r2) {
0x00053d18 strbne r3, [sl, 5] | *((sl + 5)) = r3;
| }
0x00053d1c b 0x5382c | goto label_16;
| label_43:
0x00053d1e mov r2, fp | r2 = fp;
0x00053d20 mov r0, r3 | r0 = r3;
0x00053d22 ldr r1, [sp, 0x18] | r1 = var_18h_2;
0x00053d24 blx 0x7dcc | fcn_00007dcc ();
0x00053d28 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00053d2a add.w r2, fp, 1 | r2 += arg_1h;
0x00053d2e add r0, r2 | r0 += r2;
0x00053d30 cmp r3, 0 |
| if (r3 == 0) {
0x00053d32 beq 0x53dca | goto label_71;
| }
0x00053d34 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00053d36 mov r1, r3 | r1 = r3;
0x00053d38 adds r3, r0, r2 | r3 = r0 + r2;
0x00053d3a str r3, [sp, 0x14] | var_14h = r3;
0x00053d3c blx 0x7dcc | fcn_00007dcc ();
| do {
0x00053d40 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00053d42 mov r2, fp | r2 = fp;
0x00053d44 ldr r7, [sp, 0x18] | r7 = var_18h_2;
0x00053d46 str.w r3, [sl, 0xac] | __asm ("str.w r3, [sl, 0xac]");
0x00053d4a mov r0, r3 | r0 = r3;
0x00053d4c mov r1, r7 | r1 = r7;
0x00053d4e blx 0x7dcc | fcn_00007dcc ();
0x00053d52 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00053d54 mov r2, fp | r2 = fp;
0x00053d56 ldr.w ip, [pc, 0x174] | ip = *(0x00053ecc);
0x00053d5a add.w lr, r3, fp | lr = r3 + fp;
0x00053d5e add.w r0, lr, 9 | r0 = lr + 9;
0x00053d62 add ip, pc |
0x00053d64 str r0, [sp, 0x14] | var_14h = r0;
0x00053d66 ldm.w ip!, {r0, r1} | r0 = *(ip!);
| r1 = *((ip! + 4));
0x00053d6a str.w r0, [r3, fp] | __asm ("str.w r0, [r3, fp]");
0x00053d6e ldr r0, [sp, 0x14] | r0 = var_14h;
0x00053d70 str.w r1, [lr, 4] | __asm ("str.w r1, [lr, 4]");
0x00053d74 mov r1, r7 | r1 = r7;
0x00053d76 str.w r0, [sl, 0xdc] | __asm ("str.w r0, [sl, 0xdc]");
0x00053d7a blx 0x7dcc | fcn_00007dcc ();
0x00053d7e ldr r2, [pc, 0x150] |
0x00053d80 mov r3, r0 | r3 = r0;
0x00053d82 add r2, pc | r2 = 0xa7c58;
0x00053d84 ldr r0, [r2] | r0 = *(0xa7c58);
0x00053d86 str.w r0, [r3, fp] | __asm ("str.w r0, [r3, fp]");
0x00053d8a mov r0, r7 | r0 = r7;
0x00053d8c blx 0x84f8 | fcn_000084f8 ();
0x00053d90 b 0x5372e | goto label_17;
| label_34:
0x00053d92 str r2, [sp, 0x14] | var_14h = r2;
0x00053d94 b 0x535dc | goto label_18;
| label_33:
0x00053d96 str r7, [sp, 8] | var_8h_2 = r7;
0x00053d98 b 0x535c0 | goto label_19;
| label_44:
0x00053d9a ldr r3, [sp, 0xcc] | r3 = *(arg_cch);
0x00053d9c and r3, r3, 1 | r3 &= 1;
0x00053da0 mov r7, r3 | r7 = r3;
0x00053da2 b 0x53754 | goto label_14;
| label_68:
0x00053da4 mov r6, r3 | r6 = r3;
0x00053da6 b 0x53934 | goto label_10;
| label_42:
0x00053da8 ldr r0, [sp, 0x18] | r0 = var_18h_2;
| if (r0 != 0) {
0x00053daa cbz r0, 0x53db6 |
0x00053dac mov.w fp, 7 |
0x00053db0 blx 0x84f8 | fcn_000084f8 ();
0x00053db4 b 0x53b5c | goto label_20;
| }
| label_21:
0x00053db6 mov.w fp, 7 |
0x00053dba b 0x53b5c | goto label_20;
| label_49:
0x00053dbc ldr r3, [pc, 0x114] |
0x00053dbe add r3, pc | r3 = 0xa7c96;
0x00053dc0 b 0x53850 | goto label_15;
| label_61:
0x00053dc2 ldr r0, [sp, 0x18] | r0 = var_18h_2;
0x00053dc4 blx 0x84f8 | fcn_000084f8 ();
0x00053dc8 b 0x53b5c | goto label_20;
| label_71:
0x00053dca adds r3, r0, 1 | r3 = r0 + 1;
0x00053dcc str r3, [sp, 0x14] | var_14h = r3;
0x00053dce b 0x53d40 |
| } while (1);
| label_41:
0x00053dd0 mov r0, r6 | r0 = r6;
0x00053dd2 blx 0x8160 | r0 = fcn_00008160 ();
0x00053dd6 add.w fp, r0, 1 |
0x00053dda mov r1, sl | r1 = sl;
0x00053ddc mov r0, fp | r0 = fp;
0x00053dde bl 0x12abc | r0 = fcn_00012abc (r0);
0x00053de2 mov r7, r0 | r7 = r0;
0x00053de4 str r0, [sp, 0x18] | var_18h_2 = r0;
0x00053de6 cmp r0, 0 |
| if (r0 == 0) {
0x00053de8 beq 0x53db6 | goto label_21;
| }
0x00053dea mov r2, fp | r2 = fp;
0x00053dec mov r1, r6 | r1 = r6;
0x00053dee str.w sl, [sp, 0x1c] | __asm ("str.w sl, [var_1ch]");
0x00053df2 blx 0x7dcc | fcn_00007dcc ();
0x00053df6 mov r0, r7 | r0 = r7;
0x00053df8 blx 0x8160 | r0 = fcn_00008160 ();
0x00053dfc bic r2, r0, 0xc0000000 | r2 = BIT_MASK (r0, 0xc0000000);
0x00053e00 movs r1, 1 | r1 = 1;
0x00053e02 add.w r0, r2, r2, lsl 1 | r0 = r2 + (r2 << 1);
0x00053e06 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00053e0a mov fp, r2 |
0x00053e0c str r1, [sp, 0x24] | var_24h = r1;
0x00053e0e add.w r0, r0, 0x12a | r0 += 0x12a;
0x00053e12 str r1, [sp, 0x20] | var_20h = r1;
0x00053e14 str.w sl, [sp, 0x2c] | __asm ("str.w sl, [var_2ch]");
0x00053e18 b 0x536cc | goto label_4;
| label_30:
0x00053e1a mov r0, r4 | r0 = r4;
0x00053e1c mov.w fp, 7 |
0x00053e20 blx 0x84f8 | fcn_000084f8 ();
0x00053e24 b 0x539f6 | goto label_5;
| label_69:
0x00053e26 mov r0, sl | r0 = sl;
0x00053e28 bl 0x137bc | fcn_000137bc (r0);
0x00053e2c ldr.w r2, [sl, 0x94] | r2 = *((sl + 0x94));
0x00053e30 cmp.w r2, 0x1000 |
| if (r2 < 0x1000) {
0x00053e34 bls.w 0x53cd0 | goto label_22;
| }
0x00053e38 cmp.w r2, 0x2000 |
0x00053e3c it hi |
| if (r2 <= 0x2000) {
0x00053e3e movhi r2, 0x2000 | r2 = 0x2000;
| }
0x00053e42 str r2, [sp, 0x30] | var_30h = r2;
0x00053e44 b 0x53cd0 | goto label_22;
| label_62:
0x00053e46 blx 0x7f8c | fcn_00007f8c ();
0x00053e4a ldr r2, [pc, 0x8c] |
0x00053e4c adds r0, 0x14 | r0 += 0x14;
0x00053e4e ldr r1, [pc, 0x8c] |
0x00053e50 movw r3, 0xe028 | r3 = 0xe028;
0x00053e54 str r0, [sp] | *(sp) = r0;
0x00053e56 movs r0, 0xe | r0 = 0xe;
0x00053e58 add r2, pc | r2 = 0xa7d36;
0x00053e5a mov.w fp, 0xe |
0x00053e5e add r1, pc | r1 = 0xa7d40;
0x00053e60 blx 0x8474 | fcn_00008474 ();
0x00053e64 ldr r0, [sp, 0x18] | r0 = var_18h_2;
0x00053e66 blx 0x84f8 | fcn_000084f8 ();
0x00053e6a b 0x53b5c | goto label_20;
| label_60:
0x00053e6c ldr.w sl, [sp, 0x2c] | sl = var_2ch;
0x00053e70 b 0x53aea | goto label_23;
| label_57:
0x00053e72 movs r1, 1 | r1 = 1;
0x00053e74 mov.w r0, 0x12a | r0 = 0x12a;
0x00053e78 mov fp, r6 |
0x00053e7a strd r6, r6, [sp, 0x1c] | __asm ("strd r6, r6, [var_1ch]");
0x00053e7e str r6, [sp, 0x2c] | var_2ch = r6;
0x00053e80 str r6, [sp, 0x18] | var_18h_2 = r6;
0x00053e82 str r1, [sp, 0x24] | var_24h = r1;
0x00053e84 b 0x536cc | goto label_4;
| label_56:
0x00053e86 blx 0x7e8c | fcn_00007e8c ();
0x00053e8a nop |
0x00053e8c adr r7, 0x2c8 | r7 = fcn.00000004;
0x00053e8e movs r7, r0 | r7 = r0;
0x00053e90 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00053e92 movs r0, r0 |
| if (r0 != 0) {
0x00053e94 cbz r0, 0x53edc |
0x00053e96 movs r5, r0 | r5 = r0;
0x00053e98 add r2, sp, 0x158 | r2 += arg_158h;
0x00053e9a movs r7, r0 | r7 = r0;
0x00053e9c add r2, sp, 0xe8 | r2 += arg_e8h;
0x00053e9e movs r7, r0 | r7 = r0;
0x00053ea0 stm r6!, {r1, r2, r3, r4, r7} | *(r6!) = r1;
| *((r6! + 4)) = r2;
| *((r6! + 8)) = r3;
| *((r6! + 12)) = r4;
| *((r6! + 16)) = r7;
0x00053ea2 movs r7, r0 | r7 = r0;
0x00053ea4 ldrd pc, pc, [r3, -0x3fc]! | __asm ("ldrd pc, pc, [r3, -0x3fc]!");
| }
0x00053edc ldrh r6, [r3] | r6 = *(r3);
0x00053ede movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x542bc */
| #include <stdint.h>
|
; (fcn) fcn.000542bc () | void fcn_000542bc (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000542bc push.w {r4, r5, r6, r7, r8, lr} |
0x000542c0 mov r4, r0 | r4 = r0;
0x000542c2 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
0x000542c4 mov r6, r1 | r6 = r1;
| if (r3 != 0) {
0x000542c6 cbz r3, 0x542d2 |
0x000542c8 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000542ca ldrb r2, [r0, 0xa] | r2 = *((r0 + 0xa));
0x000542cc adds r3, 1 | r3++;
0x000542ce str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
| if (r2 == 0) {
0x000542d0 cbz r2, 0x54300 | goto label_3;
| }
| }
0x000542d2 ldrb r3, [r4, 8] | r3 = *((r4 + 8));
0x000542d4 cmp r3, 2 |
| if (r3 == 2) {
0x000542d6 beq 0x5430a | goto label_4;
| }
| label_0:
0x000542d8 mov r0, r4 | r0 = r4;
0x000542da bl 0x541e4 | fcn_000541e4 (r0);
0x000542de ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x000542e0 cbnz r3, 0x542ea |
| while (r5 != 0) {
0x000542e2 movs r5, 0 | r5 = 0;
| label_1:
0x000542e4 mov r0, r5 | r0 = r5;
0x000542e6 pop.w {r4, r5, r6, r7, r8, pc} |
0x000542ea ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x000542ec subs r5, 1 | r5--;
0x000542ee str r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x000542f0 cmp r5, 0 |
0x000542f2 bne 0x542e2 |
| }
| label_2:
0x000542f4 mov r0, r4 | r0 = r4;
0x000542f6 bl 0x95d0 | fcn_000095d0 (r0);
0x000542fa mov r0, r5 | r0 = r5;
0x000542fc pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x00054300 bl 0x12464 | fcn_00012464 (r0);
0x00054304 ldrb r3, [r4, 8] | r3 = *((r4 + 8));
0x00054306 cmp r3, 2 |
| if (r3 != 2) {
0x00054308 bne 0x542d8 | goto label_0;
| }
| label_4:
0x0005430a ldr.w r8, [r4, 4] | r8 = *((r4 + 4));
0x0005430e ldr.w r7, [r8] | r7 = *(r8);
0x00054312 ldr r5, [r7, 0x28] | r5 = *((r7 + 0x28));
| if (r5 == 0) {
0x00054314 cbnz r5, 0x54354 |
0x00054316 ldr r3, [r7, 0x64] | r3 = *((r7 + 0x64));
0x00054318 adds r3, 1 | r3++;
0x0005431a str r3, [r7, 0x64] | *((r7 + 0x64)) = r3;
0x0005431c ldrb r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0005431e cmp r3, 2 |
| if (r3 == 2) {
0x00054320 bne 0x54330 |
0x00054322 ldrb r3, [r7, 4] | r3 = *((r7 + 4));
| if (r3 == 0) {
0x00054324 cbz r3, 0x54330 | goto label_5;
| }
0x00054326 ldrb r3, [r7, 5] | r3 = *((r7 + 5));
0x00054328 cmp r3, 1 |
0x0005432a it eq |
| if (r3 != 1) {
0x0005432c strbeq r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
| }
| if (r3 == 1) {
0x0005432e beq 0x54376 | goto label_6;
| }
| }
| label_5:
0x00054330 ldrb r1, [r7, 0x13] | r1 = *((r7 + 0x13));
0x00054332 movs r2, 1 | r2 = 1;
0x00054334 mov r0, r7 | r0 = r7;
0x00054336 bl 0x20370 | r0 = fcn_00020370 (r0, r1, r2);
0x0005433a uxtb r3, r0 | r3 = (int8_t) r0;
0x0005433c mov r5, r0 | r5 = r0;
0x0005433e cmp r3, 0xa |
0x00054340 it ne |
| if (r3 != 0xa) {
0x00054342 cmpne r3, 0xd | __asm ("cmpne r3, 0xd");
| }
| if (r3 != 0xa) {
0x00054344 bne 0x54354 | goto label_7;
| }
0x00054346 ldr r3, [pc, 0x4c] |
0x00054348 str r0, [r7, 0x28] | *((r7 + 0x28)) = r0;
0x0005434a add r3, pc | r3 = 0xa86e4;
0x0005434c str.w r3, [r7, 0xcc] | __asm ("str.w r3, [r7, 0xcc]");
0x00054350 movs r3, 6 | r3 = 6;
0x00054352 strb r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
| }
| label_7:
0x00054354 eor r1, r6, 1 | r1 = r6 ^ 1;
0x00054358 cmp r5, 0 |
0x0005435a ite eq |
| if (r5 != 0) {
0x0005435c moveq r1, 0 | r1 = 0;
| }
| if (r5 == 0) {
0x0005435e andne r1, r1, 1 | r1 &= 1;
| }
| if (r1 == 0) {
0x00054362 cbz r1, 0x54376 | goto label_6;
| }
0x00054364 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00054366 cmp r3, 0 |
| if (r3 == 0) {
0x00054368 beq 0x542e4 | goto label_1;
| }
0x0005436a ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0005436c subs r3, 1 | r3--;
0x0005436e str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00054370 cmp r3, 0 |
| if (r3 != 0) {
0x00054372 bne 0x542e4 | goto label_1;
| }
0x00054374 b 0x542f4 | goto label_2;
| label_6:
0x00054376 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00054378 movs r2, 1 | r2 = 1;
0x0005437a ldr.w r0, [r8, 0x40] | r0 = *((r8 + 0x40));
0x0005437e subs r3, 1 | r3--;
0x00054380 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00054382 strb.w r2, [r8, 0x14] | *((r8 + 0x14)) = r2;
0x00054386 bl 0x1cc44 | fcn_0001cc44 (r0, r1, r2, r3);
0x0005438a movs r3, 0 | r3 = 0;
0x0005438c str.w r3, [r8, 0x40] | __asm ("str.w r3, [r8, 0x40]");
0x00054390 b 0x542d8 | 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/libsqlite3.so.0.8.6 @ 0x54398 */
| #include <stdint.h>
|
; (fcn) fcn.00054398 () | void fcn_00054398 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int32_t var_4h;
| int32_t var_4h_2;
| int32_t var_ch_2;
| int16_t var_2ch;
| r0 = arg1;
0x00054398 ldr r2, [pc, 0x3ac] |
0x0005439a ldr r3, [pc, 0x3b0] | r3 = *(0x5474e);
0x0005439c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000543a0 sub sp, 0x34 |
0x000543a2 add r2, pc | r2 = 0xa8aee;
0x000543a4 mov r6, r0 | r6 = r0;
0x000543a6 ldr r3, [r2, r3] |
0x000543a8 ldr r3, [r3] | r3 = *(0xa8aee);
0x000543aa str r3, [sp, 0x2c] | var_2ch = r3;
0x000543ac mov.w r3, 0 | r3 = 0;
0x000543b0 ldr.w r3, [r0, 0xd8] | r3 = *((r0 + 0xd8));
0x000543b4 cmp r3, 0 |
| if (r3 == 0) {
0x000543b6 beq 0x54440 | goto label_16;
| }
| label_2:
0x000543b8 movs r5, 0 | r5 = 0;
0x000543ba mov r0, r3 | r0 = r3;
0x000543bc str r5, [sp, 0x18] | var_18h = r5;
0x000543be add r7, sp, 0x18 | r7 += var_18h;
0x000543c0 bl 0x15848 | fcn_00015848 (r0);
0x000543c4 ldr.w r8, [r6, 0xd8] | r8 = *((r6 + 0xd8));
| do {
0x000543c8 adds r5, 1 | r5++;
0x000543ca movs r2, 0 | r2 = 0;
0x000543cc mov r3, r5 | r3 = r5;
0x000543ce mov r1, r7 | r1 = r7;
0x000543d0 mov r0, r8 | r0 = r8;
0x000543d2 bl 0x3df88 | r0 = fcn_0003df88 (r0, r1, r2, r3, r4);
0x000543d6 adds r3, r0, 1 | r3 = r0 + 1;
0x000543d8 mov r4, r0 | r4 = r0;
0x000543da beq 0x543c8 |
| } while (r3 == r0);
0x000543dc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000543de orrs r3, r0 | r3 |= r0;
| if (r3 == r0) {
0x000543e0 beq 0x54404 | goto label_0;
| }
0x000543e2 ldr r2, [r6, 0x64] | r2 = *((r6 + 0x64));
0x000543e4 ldr r3, [r6, 0x58] | r3 = *((r6 + 0x58));
0x000543e6 adds r2, 1 | r2++;
0x000543e8 str r2, [r6, 0x64] | *((r6 + 0x64)) = r2;
| if (r3 == 0) {
0x000543ea cbz r3, 0x543f6 | goto label_17;
| }
0x000543ec movs r2, 1 | r2 = 1;
| do {
0x000543ee str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x000543f0 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x000543f2 cmp r3, 0 |
0x000543f4 bne 0x543ee |
| } while (r3 != 0);
| label_17:
0x000543f6 ldr.w r0, [r6, 0xd4] | r0 = *((r6 + 0xd4));
0x000543fa movs r1, 0 | r1 = 0;
0x000543fc bl 0x157d4 | fcn_000157d4 (r0, r1);
0x00054400 ldrb r3, [r6, 0x16] | r3 = *((r6 + 0x16));
| if (r3 != 0) {
0x00054402 cbnz r3, 0x5444e | goto label_18;
| }
| label_0:
0x00054404 ldrb r3, [r6, 0xc] | r3 = *((r6 + 0xc));
| if (r3 == 0) {
0x00054406 cbnz r3, 0x5441a |
0x00054408 ldrb r3, [r6, 0x10] | r3 = *((r6 + 0x10));
| if (r3 != 0) {
0x0005440a cbnz r3, 0x5441a | goto label_19;
| }
| if (r4 != 0) {
0x0005440c cbnz r4, 0x5441c | goto label_1;
| }
0x0005440e add.w r1, r6, 0x18 | r1 = r6 + 0x18;
0x00054412 mov r0, r6 | r0 = r6;
0x00054414 bl 0x9414 | r0 = fcn_00009414 (r0, r1);
0x00054418 mov r4, r0 | r4 = r0;
| }
| if (r4 == 0) {
| label_19:
0x0005441a cbz r4, 0x54444 | goto label_3;
| }
| label_1:
0x0005441c mov r0, r6 | r0 = r6;
0x0005441e bl 0x1ce9c | fcn_0001ce9c (r0);
| do {
0x00054422 ldr r2, [pc, 0x32c] |
0x00054424 ldr r3, [pc, 0x324] | r3 = *(0x5474c);
0x00054426 add r2, pc | r2 = 0xa8b7c;
0x00054428 ldr r3, [r2, r3] | r3 = *(0xa8b7c);
0x0005442a ldr r2, [r3] | r2 = *(0xa8b7c);
0x0005442c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005442e eors r2, r3 | r2 ^= r3;
0x00054430 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00054434 bne.w 0x546ec | goto label_20;
| }
0x00054438 mov r0, r4 | r0 = r4;
0x0005443a add sp, 0x34 |
0x0005443c pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_16:
0x00054440 ldrb r3, [r0, 0x10] | r3 = *((r0 + 0x10));
| if (r3 == 0) {
0x00054442 cbz r3, 0x54460 | goto label_21;
| }
| label_3:
0x00054444 movs r3, 1 | r3 = 1;
0x00054446 movs r4, 0 | r4 = 0;
0x00054448 strb r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x0005444a strb r3, [r6, 0x17] | *((r6 + 0x17)) = r3;
0x0005444c b 0x54422 |
| } while (1);
| label_18:
0x0005444e ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x00054450 movs r2, 0 | r2 = 0;
0x00054452 ldr r3, [r0] | r3 = *(r0);
0x00054454 str r2, [sp] | *(sp) = r2;
0x00054456 movs r2, 0 | r2 = 0;
0x00054458 ldr r1, [r3, 0x48] | r1 = *((r3 + 0x48));
0x0005445a movs r3, 0 | r3 = 0;
0x0005445c blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005445e b 0x54404 | goto label_0;
| label_21:
0x00054460 movs r1, 1 | r1 = 1;
0x00054462 bl 0x14e60 | r0 = fcn_00014e60 (r0, r1);
0x00054466 mov r4, r0 | r4 = r0;
0x00054468 cmp r0, 0 |
| if (r0 != 0) {
0x0005446a bne 0x5441c | goto label_1;
| }
0x0005446c ldrb r3, [r6, 0x11] | r3 = *((r6 + 0x11));
0x0005446e cmp r3, 1 |
| if (r3 < 1) {
0x00054470 bls 0x544ba | goto label_22;
| }
| label_10:
0x00054472 ldrb r3, [r6, 0xe] | r3 = *((r6 + 0xe));
0x00054474 mov.w r4, 0x308 | r4 = 0x308;
0x00054478 cmp r3, 0 |
| if (r3 != 0) {
0x0005447a bne 0x5441c | goto label_1;
| }
0x0005447c movs r1, 4 | r1 = 4;
0x0005447e mov r0, r6 | r0 = r6;
0x00054480 bl 0xf0b0 | r0 = fcn_0000f0b0 (r0, r1);
0x00054484 mov r4, r0 | r4 = r0;
0x00054486 cmp r0, 0 |
| if (r0 != 0) {
0x00054488 bne 0x5441c | goto label_1;
| }
0x0005448a ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005448c ldr r3, [r3] | r3 = *(r3);
0x0005448e cmp r3, 0 |
| if (r3 == 0) {
0x00054490 beq 0x54586 | goto label_23;
| }
| label_6:
0x00054492 mov r0, r6 | r0 = r6;
0x00054494 bl 0x1489c | r0 = fcn_0001489c (r0);
0x00054498 mov r4, r0 | r4 = r0;
0x0005449a cmp r0, 0 |
| if (r0 == 0) {
0x0005449c beq.w 0x54610 | goto label_24;
| }
| label_7:
0x000544a0 uxtb r3, r4 | r3 = (int8_t) r4;
0x000544a2 cmp r3, 0xa |
0x000544a4 it ne |
| if (r3 == 0xa) {
0x000544a6 cmpne r3, 0xd | __asm ("cmpne r3, 0xd");
| goto label_25;
| }
| if (r3 != 0xa) {
| label_25:
0x000544a8 bne 0x5441c | goto label_1;
| }
0x000544aa ldr r3, [pc, 0x2a8] |
0x000544ac movs r2, 6 | r2 = 6;
0x000544ae str r4, [r6, 0x28] | *((r6 + 0x28)) = r4;
0x000544b0 strb r2, [r6, 0x10] | *((r6 + 0x10)) = r2;
0x000544b2 add r3, pc | r3 = 0xa8c0c;
0x000544b4 str.w r3, [r6, 0xcc] | __asm ("str.w r3, [r6, 0xcc]");
0x000544b8 b 0x5441c | goto label_1;
| label_22:
0x000544ba ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x000544bc movs r2, 1 | r2 = 1;
0x000544be ldr.w r8, [r6] | r8 = *(r6);
0x000544c2 str r2, [sp, 0xc] | var_ch = r2;
0x000544c4 ldr r5, [r3] | r5 = *(r3);
0x000544c6 cmp r5, 0 |
| if (r5 == 0) {
0x000544c8 beq 0x54566 | goto label_26;
| }
| label_5:
0x000544ca ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x000544cc movs r3, 0 | r3 = 0;
0x000544ce str r3, [sp, 0x10] | var_10h = r3;
0x000544d0 add r1, sp, 0x10 | r1 += var_10h;
0x000544d2 ldr r3, [r0] | r3 = *(r0);
0x000544d4 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x000544d6 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000544d8 mov r4, r0 | r4 = r0;
0x000544da cmp r0, 0 |
| if (r0 != 0) {
0x000544dc bne 0x5441c | goto label_1;
| }
0x000544de ldr r3, [sp, 0x10] | r3 = var_10h;
0x000544e0 cmp r3, 0 |
| if (r3 == 0) {
0x000544e2 beq.w 0x5462c | goto label_27;
| }
| label_4:
0x000544e6 ldrb r5, [r6, 0xc] | r5 = *((r6 + 0xc));
0x000544e8 cmp r5, 0 |
| if (r5 != 0) {
0x000544ea bne 0x5455a | goto label_28;
| }
0x000544ec ldrb r3, [r6, 0x17] | r3 = *((r6 + 0x17));
| if (r3 == 0) {
0x000544ee cbz r3, 0x5452e | goto label_29;
| }
0x000544f0 ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x000544f2 add r7, sp, 0x1c | r7 += var_1ch;
0x000544f4 vldr d16, [pc, 0x248] | __asm ("vldr d16, aav.0x000000ff");
0x000544f8 movs r2, 0x10 | r2 = 0x10;
0x000544fa mov r1, r7 | r1 = r7;
0x000544fc ldr r3, [r0] | r3 = *(r0);
0x000544fe vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00054502 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00054504 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00054506 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00054508 cbz r0, 0x5451a | goto label_30;
| }
0x0005450a movw r3, 0x20a | r3 = 0x20a;
0x0005450e cmp r0, r3 |
| if (r0 != r3) {
0x00054510 bne 0x5441c | goto label_1;
| }
0x00054512 str r5, [sp, 0x1c] | var_1ch = r5;
0x00054514 strd r5, r5, [r7, 4] | __asm ("strd r5, r5, [var_4h]");
0x00054518 str r5, [r7, 0xc] | var_ch_2 = r5;
| label_30:
0x0005451a movs r2, 0x10 | r2 = 0x10;
0x0005451c mov r1, r7 | r1 = r7;
0x0005451e add.w r0, r6, 0x68 | r0 = r6 + 0x68;
0x00054522 blx 0x7e40 | r0 = fcn_00007e40 ();
0x00054526 cmp r0, 0 |
| if (r0 != 0) {
0x00054528 bne 0x545b2 | goto label_31;
| }
| label_8:
0x0005452a ldrb r3, [r6, 0xc] | r3 = *((r6 + 0xc));
| if (r3 != 0) {
0x0005452c cbnz r3, 0x5455a | goto label_28;
| }
| label_29:
0x0005452e ldr r0, [r6] | r0 = *(r6);
0x00054530 add r3, sp, 0x14 | r3 += var_14h;
0x00054532 ldr.w r1, [r6, 0xdc] | r1 = *((r6 + 0xdc));
0x00054534 asrs r4, r3, 3 | r4 = r3 >> 3;
0x00054536 movs r2, 0 | r2 = 0;
0x00054538 ldr r4, [r0, 0x20] | r4 = *((r0 + 0x20));
0x0005453a blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005453c mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0005453e cbnz r0, 0x5454e |
0x00054540 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00054542 cmp r4, 0 |
| if (r4 != 0) {
0x00054544 bne 0x545e8 | goto label_32;
| }
0x00054546 ldrb r3, [r6, 5] | r3 = *((r6 + 5));
0x00054548 cmp r3, 5 |
0x0005454a it eq |
| if (r3 == 5) {
0x0005454c strbeq r4, [r6, 5] | *((r6 + 5)) = r4;
| goto label_9;
| }
| }
| label_9:
0x0005454e ldr.w r3, [r6, 0xd8] | r3 = *((r6 + 0xd8));
0x00054552 cmp r3, 0 |
| if (r3 != 0) {
0x00054554 bne.w 0x543b8 | goto label_2;
| }
0x00054558 b 0x54404 | goto label_0;
| label_28:
0x0005455a ldr.w r3, [r6, 0xd8] | r3 = *((r6 + 0xd8));
0x0005455e cmp r3, 0 |
| if (r3 != 0) {
0x00054560 bne.w 0x543b8 | goto label_2;
| }
0x00054564 b 0x54444 | goto label_3;
| label_26:
0x00054566 ldr.w r4, [r8, 0x20] | r4 = *((r8 + 0x20));
0x0005456a add r3, sp, 0xc | r3 += var_ch;
0x0005456c ldr.w r1, [r6, 0xac] | r1 = *((r6 + 0xac));
0x00054570 mov r2, r5 | r2 = r5;
0x00054572 mov r0, r8 | r0 = r8;
0x00054574 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00054576 mov r4, r0 | r4 = r0;
0x00054578 cmp r0, 0 |
| if (r0 != 0) {
0x0005457a bne.w 0x5441c | goto label_1;
| }
0x0005457e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00054580 cmp r3, 0 |
| if (r3 == 0) {
0x00054582 beq 0x544e6 | goto label_4;
| }
0x00054584 b 0x544ca | goto label_5;
| label_23:
0x00054586 ldr r5, [r6] | r5 = *(r6);
0x00054588 mov r2, r0 | r2 = r0;
0x0005458a ldr.w r1, [r6, 0xac] | r1 = *((r6 + 0xac));
0x0005458e add r3, sp, 0x14 | r3 += var_14h;
0x00054590 ldr r4, [r5, 0x20] | r4 = *((r5 + 0x20));
0x00054592 mov r0, r5 | r0 = r5;
0x00054594 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00054596 mov r4, r0 | r4 = r0;
0x00054598 cmp r0, 0 |
| if (r0 == 0) {
0x0005459a beq 0x5467a | goto label_33;
| }
0x0005459c ldr r5, [r6, 0x40] | r5 = *((r6 + 0x40));
| label_13:
0x0005459e ldr r3, [r5] | r3 = *(r5);
0x000545a0 cmp r3, 0 |
| if (r3 != 0) {
0x000545a2 bne.w 0x54492 | goto label_6;
| }
0x000545a6 ldrb r3, [r6, 4] | r3 = *((r6 + 4));
0x000545a8 cmp r3, 0 |
| if (r3 == 0) {
0x000545aa beq 0x54690 | goto label_34;
| }
0x000545ac cmp r4, 0 |
| if (r4 == 0) {
0x000545ae beq 0x544e6 | goto label_4;
| }
0x000545b0 b 0x544a0 | goto label_7;
| label_31:
0x000545b2 ldr r2, [r6, 0x64] | r2 = *((r6 + 0x64));
0x000545b4 ldr r3, [r6, 0x58] | r3 = *((r6 + 0x58));
0x000545b6 adds r2, 1 | r2++;
0x000545b8 str r2, [r6, 0x64] | *((r6 + 0x64)) = r2;
| if (r3 == 0) {
0x000545ba cbz r3, 0x545c6 | goto label_35;
| }
0x000545bc movs r2, 1 | r2 = 1;
| do {
0x000545be str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x000545c0 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x000545c2 cmp r3, 0 |
0x000545c4 bne 0x545be |
| } while (r3 != 0);
| label_35:
0x000545c6 ldr.w r0, [r6, 0xd4] | r0 = *((r6 + 0xd4));
0x000545ca movs r1, 0 | r1 = 0;
0x000545cc bl 0x157d4 | fcn_000157d4 (r0, r1);
0x000545d0 ldrb r3, [r6, 0x16] | r3 = *((r6 + 0x16));
0x000545d2 cmp r3, 0 |
| if (r3 == 0) {
0x000545d4 beq 0x5452a | goto label_8;
| }
0x000545d6 ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x000545d8 movs r4, 0 | r4 = 0;
0x000545da movs r2, 0 | r2 = 0;
0x000545dc movs r3, 0 | r3 = 0;
0x000545de ldr r1, [r0] | r1 = *(r0);
0x000545e0 str r4, [sp] | *(sp) = r4;
0x000545e2 ldr r1, [r1, 0x48] | r1 = *((r1 + 0x48));
0x000545e4 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000545e6 b 0x5452a | goto label_8;
| label_32:
0x000545e8 add r1, sp, 0x18 | r1 += var_18h;
0x000545ea mov r0, r6 | r0 = r6;
0x000545ec bl 0x9414 | r0 = fcn_00009414 (r0, r1);
0x000545f0 mov r4, r0 | r4 = r0;
0x000545f2 cmp r0, 0 |
| if (r0 != 0) {
0x000545f4 bne 0x5454e | goto label_9;
| }
0x000545f6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000545f8 cmp r3, 0 |
| if (r3 != 0) {
0x000545fa bne 0x546b6 | goto label_36;
| }
0x000545fc ldr r0, [r6] | r0 = *(r6);
0x000545fe ldr r3, [r0, 0x1c] | r3 = *((r0 + 0x1c));
0x00054600 cmp r3, 0 |
| if (r3 == 0) {
0x00054602 beq 0x5454e | goto label_9;
| }
0x00054604 mov r2, r4 | r2 = r4;
0x00054606 ldr.w r1, [r6, 0xdc] | r1 = *((r6 + 0xdc));
0x0005460a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r2);
0x0005460c mov r4, r0 | r4 = r0;
0x0005460e b 0x5454e | goto label_9;
| label_24:
0x00054610 ldrb r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x00054612 mov r0, r6 | r0 = r6;
0x00054614 clz r1, r1 | r1 &= r1;
0x00054618 lsrs r1, r1, 5 | r1 >>= 5;
0x0005461a bl 0x529c8 | r0 = fcn_000529c8 (r0, r1);
0x0005461e mov r4, r0 | r4 = r0;
0x00054620 movs r3, 0 | r3 = 0;
0x00054622 strb r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00054624 cmp r4, 0 |
| if (r4 == 0) {
0x00054626 beq.w 0x544e6 | goto label_4;
| }
0x0005462a b 0x544a0 | goto label_7;
| label_27:
0x0005462c add r1, sp, 0x14 | r1 += var_14h;
0x0005462e mov r0, r6 | r0 = r6;
0x00054630 bl 0x9414 | r0 = fcn_00009414 (r0, r1);
0x00054634 mov r4, r0 | r4 = r0;
0x00054636 cmp r0, 0 |
| if (r0 != 0) {
0x00054638 bne.w 0x5441c | goto label_1;
| }
0x0005463c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005463e cmp r3, 0 |
| if (r3 != 0) {
0x00054640 bne 0x546f0 | goto label_37;
| }
0x00054642 cmp r5, 0 |
| if (r5 == 0) {
0x00054644 beq.w 0x547a0 | goto label_38;
| }
| label_12:
0x00054648 ldr r0, [r6, 0x40] | r0 = *((r6 + 0x40));
0x0005464a movs r3, 0 | r3 = 0;
0x0005464c strb.w r3, [sp, 0x18] | var_18h = r3;
0x00054650 movs r2, 1 | r2 = 1;
0x00054652 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00054656 add r1, sp, 0x18 | r1 += var_18h;
0x00054658 ldr r3, [r0] | r3 = *(r0);
0x0005465a vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0005465e ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00054660 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00054662 movw r3, 0x20a | r3 = 0x20a;
0x00054666 mov r4, r0 | r4 = r0;
0x00054668 cmp r0, r3 |
| if (r0 != r3) {
0x0005466a bne.w 0x5478e | goto label_39;
| }
0x0005466e ldrb.w r3, [sp, 0x18] | r3 = var_18h;
0x00054672 cmp r3, 0 |
| if (r3 == 0) {
0x00054674 beq.w 0x544e6 | goto label_4;
| }
0x00054678 b 0x54472 | goto label_10;
| label_33:
0x0005467a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005467c ldr r2, [r6, 0x40] | r2 = *((r6 + 0x40));
| if (r3 != 0) {
0x0005467e cbnz r3, 0x546c2 | goto label_40;
| }
0x00054680 ldr r3, [r2] | r3 = *(r2);
0x00054682 cmp r3, 0 |
| if (r3 != 0) {
0x00054684 bne.w 0x54492 | goto label_6;
| }
| label_11:
0x00054688 ldrb r3, [r6, 4] | r3 = *((r6 + 4));
0x0005468a cmp r3, 0 |
| if (r3 != 0) {
0x0005468c bne.w 0x544e6 | goto label_4;
| }
| label_34:
0x00054690 ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x00054692 ldr r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x00054694 cbz r3, 0x546aa |
0x00054696 ldrb r2, [r6, 0xd] | r2 = *((r6 + 0xd));
| if (r2 == 0) {
0x00054698 cbnz r2, 0x546a0 |
0x0005469a ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0005469c movs r1, 1 | r1 = 1;
0x0005469e blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
| }
0x000546a0 ldrb r3, [r6, 0x11] | r3 = *((r6 + 0x11));
0x000546a2 cmp r3, 5 |
0x000546a4 itt ne |
| if (r3 == 5) {
0x000546a6 movne r3, 1 | r3 = 1;
| }
| if (r3 != 5) {
0x000546a8 strbne r3, [r6, 0x11] | *((r6 + 0x11)) = r3;
| goto label_41;
| }
| }
| label_41:
0x000546aa ldrb r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000546ac strb r3, [r6, 0x12] | *((r6 + 0x12)) = r3;
0x000546ae cmp r4, 0 |
| if (r4 == 0) {
0x000546b0 beq.w 0x544e6 | goto label_4;
| }
0x000546b4 b 0x544a0 | goto label_7;
| label_36:
0x000546b6 mov r1, r0 | r1 = r0;
0x000546b8 mov r0, r6 | r0 = r6;
0x000546ba bl 0x1c810 | r0 = fcn_0001c810 (r0, r1);
0x000546be mov r4, r0 | r4 = r0;
0x000546c0 b 0x5454e | goto label_9;
| label_40:
0x000546c2 add r7, sp, 0x18 | r7 += var_18h;
0x000546c4 str r0, [sp, 0x18] | var_18h = r0;
0x000546c6 str r7, [sp] | *(sp) = r7;
0x000546c8 mov r0, r5 | r0 = r5;
0x000546ca ldr r7, [r5, 0x18] | r7 = *((r5 + 0x18));
0x000546cc movw r3, 0x802 | r3 = 0x802;
0x000546d0 ldr.w r1, [r6, 0xac] | r1 = *((r6 + 0xac));
0x000546d4 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000546d6 mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x000546d8 cbnz r0, 0x54736 | goto label_42;
| }
0x000546da ldr r3, [sp, 0x18] | r3 = var_18h;
0x000546dc lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 < r3) {
0x000546de bmi 0x54718 | goto label_43;
| }
0x000546e0 ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x000546e2 ldr r3, [r3] | r3 = *(r3);
0x000546e4 cmp r3, 0 |
| if (r3 != 0) {
0x000546e6 bne.w 0x54492 | goto label_6;
| }
0x000546ea b 0x54688 | goto label_11;
| label_20:
0x000546ec blx 0x7e8c | fcn_00007e8c ();
| label_37:
0x000546f0 cmp r5, 0 |
| if (r5 != 0) {
0x000546f2 bne 0x54648 | goto label_12;
| }
0x000546f4 movw r3, 0x801 | r3 = 0x801;
0x000546f8 add r7, sp, 0x18 | r7 += var_18h;
0x000546fa str r7, [sp] | *(sp) = r7;
0x000546fc mov r0, r8 | r0 = r8;
0x000546fe ldr r2, [r6, 0x40] | r2 = *((r6 + 0x40));
0x00054700 ldr.w sb, [r8, 0x18] | sb = *((r8 + 0x18));
0x00054704 ldr.w r1, [r6, 0xac] | r1 = *((r6 + 0xac));
0x00054708 str r3, [sp, 0x18] | var_18h = r3;
0x0005470a blx sb | r0 = sb (r0, r1, r2, r3);
| if (r0 == 0) {
0x0005470c cbz r0, 0x5475c | goto label_44;
| }
0x0005470e cmp r0, 0xe |
| if (r0 == 0xe) {
0x00054710 beq.w 0x54472 | goto label_10;
| }
0x00054714 mov r4, r0 | r4 = r0;
0x00054716 b 0x5441c | goto label_1;
| label_43:
0x00054718 ldr r2, [pc, 0x3c] |
0x0005471a movw r1, 0xe239 | r1 = 0xe239;
0x0005471e movs r0, 0xe | r0 = 0xe;
0x00054720 add r2, pc | r2 = 0xa8e7c;
0x00054722 bl 0x23164 | fcn_00023164 (r0, r1, r2);
0x00054726 ldr r5, [r6, 0x40] | r5 = *((r6 + 0x40));
0x00054728 mov r7, r0 | r7 = r0;
0x0005472a ldr r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x0005472c cbz r3, 0x54738 |
0x0005472e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00054730 mov r0, r5 | r0 = r5;
0x00054732 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00054734 str r4, [r5] | *(r5) = r4;
| label_42:
0x00054736 ldr r5, [r6, 0x40] | r5 = *((r6 + 0x40));
| }
0x00054738 mov r4, r7 | r4 = r7;
0x0005473a b 0x5459e | goto label_13;
| label_44:
0x0005475c ldr r0, [r6, 0x40] | r0 = *((r6 + 0x40));
0x0005475e mov r1, r7 | r1 = r7;
0x00054760 strb.w r4, [sp, 0x18] | var_18h = r4;
0x00054764 movs r2, 1 | r2 = 1;
0x00054766 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0005476a ldr r3, [r0] | r3 = *(r0);
0x0005476c vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00054770 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00054772 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00054774 movw r3, 0x20a | r3 = 0x20a;
0x00054778 mov r4, r0 | r4 = r0;
0x0005477a cmp r0, r3 |
| if (r0 == r3) {
0x0005477c beq 0x547e6 | goto label_45;
| }
0x0005477e ldr r7, [r6, 0x40] | r7 = *((r6 + 0x40));
0x00054780 ldr r3, [r7] | r3 = *(r7);
| if (r3 != 0) {
0x00054782 cbz r3, 0x5478e |
| label_15:
0x00054784 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00054786 mov r0, r7 | r0 = r7;
0x00054788 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0005478a movs r3, 0 | r3 = 0;
0x0005478c str r3, [r7] | *(r7) = r3;
| }
| label_39:
0x0005478e ldrb.w r3, [sp, 0x18] | r3 = var_18h;
0x00054792 cmp r4, 0 |
| if (r4 != 0) {
0x00054794 bne.w 0x5441c | goto label_1;
| }
0x00054798 cmp r3, 0 |
| if (r3 == 0) {
0x0005479a beq.w 0x544e6 | goto label_4;
| }
0x0005479e b 0x54472 | goto label_10;
| label_38:
0x000547a0 ldr r3, [pc, 0x58] |
0x000547a2 add r3, pc |
0x000547a4 ldr.w r3, [r3, 0x100] | r3 = *(0xa90a2);
| if (r3 != 0) {
0x000547a8 cbz r3, 0x547ac |
0x000547aa blx r3 | uint32_t (*r3)() ();
| }
0x000547ac movs r1, 2 | r1 = 2;
0x000547ae mov r0, r6 | r0 = r6;
0x000547b0 bl 0xf0b0 | r0 = fcn_0000f0b0 (r0, r1);
0x000547b4 mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x000547b6 cbnz r0, 0x547ca |
0x000547b8 ldr.w r3, [r8, 0x1c] | r3 = *((r8 + 0x1c));
| if (r3 != 0) {
0x000547bc cbz r3, 0x547c6 |
0x000547be ldr.w r1, [r6, 0xac] | r1 = *((r6 + 0xac));
0x000547c2 mov r0, r8 | r0 = r8;
0x000547c4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
| }
0x000547c6 ldrb r3, [r6, 4] | r3 = *((r6 + 4));
| if (r3 == 0) {
0x000547c8 cbz r3, 0x547dc | goto label_46;
| }
| }
| label_14:
0x000547ca ldr r3, [pc, 0x34] |
0x000547cc add r3, pc |
0x000547ce ldr.w r3, [r3, 0x104] | r3 = *(0xa90d6);
0x000547d2 cmp r3, 0 |
| if (r3 == 0) {
0x000547d4 beq.w 0x544e6 | goto label_4;
| }
0x000547d8 blx r3 | uint32_t (*r3)() ();
0x000547da b 0x544e6 | goto label_4;
| label_46:
0x000547dc movs r1, 1 | r1 = 1;
0x000547de mov r0, r6 | r0 = r6;
0x000547e0 bl 0x93e4 | fcn_000093e4 (r0, r1);
0x000547e4 b 0x547ca | goto label_14;
| label_45:
0x000547e6 ldr r7, [r6, 0x40] | r7 = *((r6 + 0x40));
0x000547e8 ldr r3, [r7] | r3 = *(r7);
| if (r3 != 0) {
0x000547ea cbz r3, 0x547f0 |
0x000547ec mov r4, r5 | r4 = r5;
0x000547ee b 0x54784 | goto label_15;
| }
0x000547f0 ldrb.w r3, [sp, 0x18] | r3 = var_18h;
0x000547f4 cmp r3, 0 |
| if (r3 == 0) {
0x000547f6 beq.w 0x544e6 | goto label_4;
| }
0x000547fa b 0x54472 | goto label_10;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x54990 */
| #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) fcn.00054990 () | void fcn_00054990 (int16_t arg_4h, int16_t arg_6h, int16_t arg_eh, int16_t arg_10h, int16_t arg_15h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_28h, int16_t arg_60h, int16_t arg_d8h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00054990 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00054994 mov sl, r2 | sl = r2;
0x00054996 ldr.w r2, [pc, 0x6c4] | r2 = *(0x0005505c);
0x0005499a mov r5, r0 | r5 = r0;
0x0005499c mov r7, r1 | r7 = r1;
0x0005499e ldr.w r3, [pc, 0x6c0] |
0x000549a2 add r2, pc | r2 += pc;
0x000549a4 vpush {d8} | __asm ("vpush {d8}");
0x000549a8 sub sp, 0x24 |
0x000549aa ldr r4, [r0, 4] | r4 = *((r0 + 4));
0x000549ac ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000549ae ldr.w fp, [r4] | fp = *(r4);
0x000549b2 ldr r3, [r3] | r3 = *(0x55062);
0x000549b4 str r3, [sp, 0x1c] | var_1ch = r3;
0x000549b6 mov.w r3, 0 | r3 = 0;
0x000549ba ldrb r3, [r0, 9] | r3 = *((r0 + 9));
| if (r3 != 0) {
0x000549bc cbz r3, 0x549cc |
0x000549be ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000549c0 adds r3, 1 | r3++;
0x000549c2 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x000549c4 ldrb r3, [r0, 0xa] | r3 = *((r0 + 0xa));
0x000549c6 cmp r3, 0 |
| if (r3 == 0) {
0x000549c8 beq.w 0x54b20 | goto label_28;
| }
| }
0x000549cc ldrb r3, [r5, 8] | r3 = *((r5 + 8));
0x000549ce cmp r3, 2 |
| if (r3 == 2) {
0x000549d0 beq.w 0x54b2c | goto label_29;
| }
| label_1:
0x000549d4 cmp r3, 1 |
0x000549d6 it eq |
| if (r3 == 1) {
0x000549d8 cmpeq r7, 0 | __asm ("cmpeq r7, 0");
| }
| if (r3 == 1) {
0x000549da beq.w 0x54d44 | goto label_30;
| }
0x000549de ldr r3, [r5] | r3 = *(r5);
0x000549e0 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x000549e2 ldrh r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000549e4 lsls r6, r2, 6 | r6 = r2 << 6;
| if (r6 >= r2) {
0x000549e6 bpl 0x54a1c | goto label_31;
| }
0x000549e8 ldrb.w r2, [fp, 0xe] | r2 = *(arg_eh);
| if (r2 != 0) {
0x000549ec cbnz r2, 0x54a1c | goto label_31;
| }
0x000549ee bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x000549f2 lsls r3, r3, 0x10 | r3 <<= 0x10;
0x000549f4 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x000549f6 strh r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| if (r7 == 0) {
| label_0:
0x000549f8 cbz r7, 0x54a2a | goto label_32;
| }
0x000549fa ldrb r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x000549fc cmp r2, 2 |
| if (r2 == 2) {
0x000549fe beq 0x54a2e | goto label_33;
| }
0x00054a00 lsls r0, r3, 0x18 | r0 = r3 << 0x18;
| if (r0 < r3) {
0x00054a02 bmi 0x54a2e | goto label_33;
| }
0x00054a04 cmp r7, 1 |
| if (r7 <= 1) {
0x00054a06 ble 0x54a3a | goto label_34;
| }
0x00054a08 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
| if (r3 != 0) {
0x00054a0a cbnz r3, 0x54a12 | goto label_35;
| }
0x00054a0c b 0x54a3a | goto label_34;
| do {
0x00054a0e ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 == 0) {
0x00054a10 cbz r3, 0x54a3a | goto label_34;
| }
| label_35:
0x00054a12 ldr r2, [r3] | r2 = *(r3);
0x00054a14 cmp r2, r5 |
0x00054a16 beq 0x54a0e |
| } while (r2 == r5);
0x00054a18 ldr r3, [r2] | r3 = *(r2);
0x00054a1a b 0x54a32 | goto label_36;
| label_31:
0x00054a1c and r2, r3, 1 | r2 = r3 & 1;
0x00054a20 cmp r2, 0 |
| if (r2 == 0) {
0x00054a22 beq 0x549f8 | goto label_0;
| }
0x00054a24 cmp r7, 0 |
| if (r7 != 0) {
0x00054a26 bne.w 0x54c3c | goto label_17;
| }
| label_32:
0x00054a2a lsls r3, r3, 0x18 | r3 <<= 0x18;
| if (r3 < r3) {
0x00054a2c bpl 0x54a3a |
| label_33:
0x00054a2e ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x00054a30 ldr r3, [r3] | r3 = *(r3);
| label_36:
0x00054a32 mov.w r6, 0x106 | r6 = 0x106;
0x00054a36 cmp r3, 0 |
| if (r3 != 0) {
0x00054a38 bne 0x54aea | goto label_2;
| }
| }
| label_34:
0x00054a3a movs r2, 1 | r2 = 1;
0x00054a3c mov r0, r5 | r0 = r5;
0x00054a3e mov r1, r2 | r1 = r2;
0x00054a40 bl 0x95f8 | r0 = fcn_000095f8 (r0, r1, r2);
0x00054a44 mov r6, r0 | r6 = r0;
0x00054a46 cmp r0, 0 |
| if (r0 == 0) {
0x00054a48 bne 0x54aea |
0x00054a4a ldrh r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00054a4c ldr r2, [r4, 0x30] | r2 = *((r4 + 0x30));
0x00054a4e bic r3, r3, 0x10 | r3 = BIT_MASK (r3, 0x10);
0x00054a52 lsls r3, r3, 0x10 | r3 <<= 0x10;
0x00054a54 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x00054a56 strh r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| if (r2 == 0) {
0x00054a58 cbnz r2, 0x54a60 |
0x00054a5a orr r3, r3, 0x10 | r3 |= 0x10;
0x00054a5e strh r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| }
0x00054a60 ldr.w r3, [pc, 0x600] |
0x00054a64 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x00054a68 add r3, pc | r3 = 0xa9ad0;
0x00054a6a addw r3, r3, 0x92c | __asm ("addw r3, r3, aav.0x000000ff");
0x00054a6e str r3, [sp] | *(sp) = r3;
0x00054a70 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
| label_5:
0x00054a72 cmp r3, 0 |
| if (r3 == 0) {
0x00054a74 beq.w 0x54bf6 | goto label_37;
| }
0x00054a78 clz r2, r6 | r2 &= r6;
0x00054a7c cmp r7, 0 |
0x00054a7e lsr.w r2, r2, 5 | r2 >>= 5;
0x00054a82 it eq |
| if (r7 != 0) {
0x00054a84 moveq r2, 0 | r2 = 0;
| }
0x00054a86 cmp r2, 0 |
| if (r2 == 0) {
0x00054a88 beq 0x54b7a | goto label_38;
| }
0x00054a8a ldrh r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00054a8c lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 >= r2) {
0x00054a8e bpl 0x54b46 | goto label_39;
| }
0x00054a90 ldrb r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00054a92 cmp r2, 0 |
| if (r2 != 0) {
0x00054a94 bne.w 0x54c3c | goto label_17;
| }
0x00054a98 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00054a9a str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x00054a9c ldr.w sb, [r0, 0x14] | sb = *((r0 + 0x14));
0x00054aa0 bl 0x11f5c | fcn_00011f5c (r0);
0x00054aa4 ldr.w r3, [sb, 0xd4] | r3 = *((sb + 0xd4));
0x00054aa8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00054aaa cmp r3, 0 |
| if (r3 != 0) {
0x00054aac bne.w 0x54c3c | goto label_17;
| }
0x00054ab0 movs r6, 8 | r6 = 8;
0x00054ab2 mov r8, r6 | r8 = r6;
| label_19:
0x00054ab4 mov r0, sb | r0 = sb;
0x00054ab6 bl 0x52f34 | fcn_00052f34 (r0);
| label_18:
0x00054aba cmp.w r8, 5 |
| if (r8 != 5) {
0x00054abe bne 0x54aea | goto label_2;
| }
| label_24:
0x00054ac0 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
| if (r3 != 0) {
0x00054ac2 cbnz r3, 0x54aea | goto label_2;
| }
| label_4:
0x00054ac4 ldr.w r8, [r4, 4] | r8 = *((r4 + 4));
0x00054ac8 ldr.w r3, [r8, 0x1a4] | r3 = *((r8 + 0x1a4));
| if (r3 == 0) {
0x00054acc cbz r3, 0x54aea | goto label_2;
| }
0x00054ace ldr.w r1, [r8, 0x1ac] | r1 = *((r8 + 0x1ac));
0x00054ad2 cmp r1, 0 |
| if (r1 < 0) {
0x00054ad4 blt 0x54aea | goto label_2;
| }
0x00054ad6 ldr.w r0, [r8, 0x1a8] | r0 = *((r8 + 0x1a8));
0x00054ada blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
0x00054adc cmp r0, 0 |
| if (r0 != 0) {
0x00054ade bne.w 0x54c2e | goto label_40;
| }
0x00054ae2 mov.w r3, -1 | r3 = -1;
0x00054ae6 str.w r3, [r8, 0x1ac] | __asm ("str.w r3, aav.0x000000ff");
| }
| label_2:
0x00054aea ldrb r3, [r5, 9] | r3 = *((r5 + 9));
| if (r3 != 0) {
0x00054aec cbz r3, 0x54afa |
0x00054aee ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00054af0 subs r3, 1 | r3--;
0x00054af2 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x00054af4 cmp r3, 0 |
| if (r3 == 0) {
0x00054af6 beq.w 0x54d34 | goto label_41;
| }
| }
| label_6:
0x00054afa ldr.w r2, [pc, 0x56c] | r2 = *(0x00055068);
0x00054afe ldr.w r3, [pc, 0x560] | r3 = *(0x55062);
0x00054b02 add r2, pc | r2 += pc;
0x00054b04 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00054b06 ldr r2, [r3] | r2 = *(0x55062);
0x00054b08 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00054b0a eors r2, r3 | r2 ^= r3;
0x00054b0c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00054b10 bne.w 0x5502e | goto label_42;
| }
0x00054b14 mov r0, r6 | r0 = r6;
0x00054b16 add sp, 0x24 |
0x00054b18 vpop {d8} | __asm ("vpop {d8}");
0x00054b1c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_28:
0x00054b20 bl 0x12464 | fcn_00012464 (r0);
0x00054b24 ldrb r3, [r5, 8] | r3 = *((r5 + 8));
0x00054b26 cmp r3, 2 |
| if (r3 != 2) {
0x00054b28 bne.w 0x549d4 | goto label_1;
| }
| label_29:
0x00054b2c cmp.w sl, 0 |
0x00054b30 beq 0x54b3e |
| while (sl != 0) {
| label_7:
0x00054b32 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00054b34 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00054b36 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x00054b38 rev r3, r3 | r3 = SWAP32 (r3);
0x00054b3a str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x00054b3e cmp r7, 0 |
| if (r7 != 0) {
0x00054b40 bne 0x54bd6 | goto label_12;
| }
| label_3:
0x00054b42 movs r6, 0 | r6 = 0;
0x00054b44 b 0x54aea | goto label_2;
| label_39:
0x00054b46 ldr.w r6, [fp, 0x28] | r6 = *(arg_28h);
0x00054b4a ldr r3, [r5] | r3 = *(r5);
0x00054b4c ldrb.w r3, [r3, 0x52] | r3 = *((r3 + 0x52));
0x00054b50 cmp r6, 0 |
| if (r6 != 0) {
0x00054b52 bne.w 0x54daa | goto label_13;
| }
0x00054b56 sub.w r3, r3, 2 | r3 -= 2;
0x00054b5a clz r3, r3 | r3 &= r3;
0x00054b5e lsrs r3, r3, 5 | r3 >>= 5;
0x00054b60 strb.w r3, [fp, 0x15] | *(arg_15h) = r3;
0x00054b64 ldrb.w r3, [fp, 0x10] | r3 = *(arg_10h);
0x00054b68 cmp r3, 1 |
| if (r3 == 1) {
0x00054b6a beq.w 0x54cc6 | goto label_43;
| }
| label_14:
0x00054b6e ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
| if (r3 == 0) {
0x00054b70 cbnz r3, 0x54b7e |
0x00054b72 mov r0, r4 | r0 = r4;
0x00054b74 bl 0x548fc | r0 = fcn_000548fc (r0);
0x00054b78 mov r6, r0 | r6 = r0;
| label_38:
0x00054b7a cmp r6, 0 |
| if (r6 != 0) {
0x00054b7c bne 0x54c10 | goto label_9;
| }
| }
0x00054b7e ldrb r3, [r5, 8] | r3 = *((r5 + 8));
| if (r3 == 0) {
0x00054b80 cbnz r3, 0x54b90 |
0x00054b82 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00054b84 adds r3, 1 | r3++;
0x00054b86 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x00054b88 ldrb r3, [r5, 9] | r3 = *((r5 + 9));
0x00054b8a cmp r3, 0 |
| if (r3 != 0) {
0x00054b8c bne.w 0x54dbc | goto label_44;
| }
| }
| label_11:
0x00054b90 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00054b92 cmp r7, 0 |
| if (r7 == 0) {
0x00054b94 beq.w 0x54d3c | goto label_45;
| }
0x00054b98 movs r2, 2 | r2 = 2;
0x00054b9a cmp r3, 1 |
0x00054b9c strb r2, [r5, 8] | *((r5 + 8)) = r2;
0x00054b9e ldrh r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00054ba0 ldr.w r8, [r4, 0xc] | r8 = *((r4 + 0xc));
0x00054ba4 it ls |
| if (r3 > 1) {
0x00054ba6 strbls r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
| }
0x00054ba8 cmp r7, 1 |
0x00054baa bic r3, r3, 0x40 | r3 = BIT_MASK (r3, 0x40);
0x00054bae str r5, [r4, 0x50] | *((r4 + 0x50)) = r5;
0x00054bb0 lsl.w r3, r3, 0x10 | r3 <<= 0x10;
0x00054bb4 ldr r2, [r4, 0x30] | r2 = *((r4 + 0x30));
0x00054bb6 lsr.w r3, r3, 0x10 | r3 >>= 0x10;
0x00054bba it gt |
| if (r7 <= 1) {
0x00054bbc orrgt r3, r3, 0x40 | r3 |= 0x40;
| }
0x00054bc0 strh r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x00054bc2 ldr.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x00054bc6 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00054bc8 rev r3, r3 | r3 = SWAP32 (r3);
0x00054bca cmp r2, r3 |
| if (r2 != r3) {
0x00054bcc bne.w 0x54dda | goto label_46;
| }
0x00054bd0 cmp.w sl, 0 |
0x00054bd4 bne 0x54b32 |
| }
| label_12:
0x00054bd6 ldr r2, [r5] | r2 = *(r5);
0x00054bd8 ldr.w r3, [fp, 0x60] | r3 = *(arg_60h);
0x00054bdc ldr.w r1, [r2, 0x1dc] | r1 = *((r2 + 0x1dc));
0x00054be0 cmp r1, r3 |
| if (r1 <= r3) {
0x00054be2 ble 0x54b42 | goto label_3;
| }
0x00054be4 ldrb.w r3, [fp, 6] | r3 = *(arg_6h);
0x00054be8 cmp r3, 0 |
| if (r3 == 0) {
0x00054bea beq 0x54b42 | goto label_3;
| }
0x00054bec mov r0, fp | r0 = fp;
0x00054bee bl 0x19aa0 | r0 = fcn_00019aa0 (r0, r1);
0x00054bf2 mov r6, r0 | r6 = r0;
0x00054bf4 b 0x54aea | goto label_2;
| label_37:
0x00054bf6 ldr r0, [r4] | r0 = *(r4);
0x00054bf8 bl 0x54398 | r0 = fcn_00054398 (r0);
0x00054bfc mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00054bfe cbnz r0, 0x54c10 |
0x00054c00 mov r3, r0 | r3 = r0;
0x00054c02 add r2, sp, 0x14 | r2 += var_14h;
0x00054c04 movs r1, 1 | r1 = 1;
0x00054c06 mov r0, r4 | r0 = r4;
0x00054c08 bl 0x9710 | r0 = fcn_00009710 (r0, r1, r2);
0x00054c0c mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00054c0e cbz r0, 0x54c40 | goto label_47;
| }
| }
| label_9:
0x00054c10 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00054c12 uxtb.w r8, r6 | r8 = (int8_t) r6;
0x00054c16 cmp r3, 0 |
| if (r3 != 0) {
0x00054c18 bne.w 0x54aea | goto label_2;
| }
0x00054c1c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00054c1e cmp r3, 0 |
| if (r3 != 0) {
0x00054c20 bne.w 0x54ed6 | goto label_48;
| }
0x00054c24 cmp.w r8, 5 |
| if (r8 == 5) {
0x00054c28 beq.w 0x54ac4 | goto label_4;
| }
0x00054c2c b 0x54aea | goto label_2;
| label_40:
0x00054c2e ldr.w r3, [r8, 0x1ac] | r3 = *((r8 + 0x1ac));
0x00054c32 adds r3, 1 | r3++;
0x00054c34 str.w r3, [r8, 0x1ac] | __asm ("str.w r3, aav.0x000000ff");
0x00054c38 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00054c3a b 0x54a72 | goto label_5;
| label_17:
0x00054c3c movs r6, 8 | r6 = 8;
0x00054c3e b 0x54aea | goto label_2;
| label_47:
0x00054c40 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00054c42 ldr r1, [r4] | r1 = *(r4);
0x00054c44 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00054c46 ldr.w r8, [r3, 0x38] | r8 = *((r3 + 0x38));
0x00054c4a mov r0, r1 | r0 = r1;
0x00054c4c str r1, [sp, 8] | var_8h = r1;
0x00054c4e ldr r2, [r2, 0x20] | r2 = *((r2 + 0x20));
0x00054c50 ldr.w r1, [r8, 0x1c] | r1 = *((r8 + 0x1c));
0x00054c54 ldr r0, [r0, 0x18] | r0 = *((r0 + 0x18));
0x00054c56 and r2, r2, 0x2000000 | r2 &= 0x2000000;
0x00054c5a rev.w sb, r1 | r1 = SWAP32 (sb);
0x00054c5e str r0, [sp, 4] | var_4h = r0;
| if (r1 != 0) {
0x00054c60 cbz r1, 0x54c70 |
0x00054c62 ldrb.w r0, [r8, 0x18] | r0 = *((r8 + 0x18));
0x00054c66 ldrb.w r1, [r8, 0x5c] | r1 = *((r8 + 0x5c));
0x00054c6a cmp r0, r1 |
| if (r0 == r1) {
0x00054c6c beq.w 0x54e36 | goto label_49;
| }
| }
| label_15:
0x00054c70 ldr r1, [sp, 4] | r1 = var_4h;
0x00054c72 clz r2, r2 | r2 &= r2;
0x00054c76 lsrs r2, r2, 5 | r2 >>= 5;
0x00054c78 cmp r1, 0 |
0x00054c7a it eq |
| if (r1 != 0) {
0x00054c7c moveq r2, 0 | r2 = 0;
| }
0x00054c7e cmp r2, 0 |
| if (r2 != 0) {
0x00054c80 bne.w 0x54e68 | goto label_50;
| }
0x00054c84 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00054c86 mov sb, r2 | sb = r2;
| label_16:
0x00054c88 sub.w r2, r1, 0xc | r2 = r1 - 0xc;
0x00054c8c subs r1, 0x23 | r1 -= 0x23;
0x00054c8e movw r0, 0x8081 |
0x00054c92 strh r1, [r4, 0x1e] | *((r4 + 0x1e)) = r1;
0x00054c94 lsls r1, r2, 6 | r1 = r2 << 6;
0x00054c96 movt r0, 0x8080 | r0 = 0x80808081;
0x00054c9a lsls r2, r2, 5 | r2 <<= 5;
0x00054c9c str.w sb, [r4, 0x30] | __asm ("str.w sb, [r4, 0x30]");
0x00054ca0 umull ip, r1, r0, r1 | ip:r1 = r0 * r1;
0x00054ca4 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00054ca6 umull r0, r2, r0, r2 | r0:r2 = r0 * r2;
0x00054caa lsrs r1, r1, 7 | r1 >>= 7;
0x00054cac subs r1, 0x17 | r1 -= 0x17;
0x00054cae lsrs r2, r2, 7 | r2 >>= 7;
0x00054cb0 uxth r1, r1 | r1 = (int16_t) r1;
0x00054cb2 subs r2, 0x17 | r2 -= 0x17;
0x00054cb4 cmp r1, 0x7f |
0x00054cb6 uxth r2, r2 | r2 = (int16_t) r2;
0x00054cb8 strh r1, [r4, 0x1a] | *((r4 + 0x1a)) = r1;
0x00054cba it hs |
| if (r1 < 0x7f) {
0x00054cbc movhs r1, 0x7f | r1 = 0x7f;
| }
0x00054cbe strb r1, [r4, 0x15] | *((r4 + 0x15)) = r1;
0x00054cc0 strh r2, [r4, 0x1c] | *((r4 + 0x1c)) = r2;
0x00054cc2 strh r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
0x00054cc4 b 0x54a72 | goto label_5;
| label_43:
0x00054cc6 ldr.w r8, [fp, 0xd8] | r8 = *(arg_d8h);
0x00054cca cmp.w r8, 0 |
| if (r8 == 0) {
0x00054cce beq.w 0x54dfe | goto label_51;
| }
0x00054cd2 ldrb.w r3, [fp, 4] | r3 = *(arg_4h);
0x00054cd6 cmp r3, 0 |
| if (r3 == 0) {
0x00054cd8 beq 0x54d84 | goto label_52;
| }
0x00054cda ldrb.w r3, [r8, 0x2b] | r3 = *((r8 + 0x2b));
0x00054cde cmp r3, 0 |
| if (r3 == 0) {
0x00054ce0 beq 0x54d4e | goto label_53;
| }
0x00054ce2 ldrb.w r3, [r8, 0x2e] | r3 = *((r8 + 0x2e));
0x00054ce6 cmp r3, 0 |
| if (r3 != 0) {
0x00054ce8 bne.w 0x54ec0 | goto label_54;
| }
| label_8:
0x00054cec ldr.w r3, [r8, 0x20] | r3 = *((r8 + 0x20));
0x00054cf0 movs r6, 1 | r6 = 1;
0x00054cf2 strb.w r6, [r8, 0x2c] | *((r8 + 0x2c)) = r6;
0x00054cf6 movs r2, 0x30 | r2 = 0x30;
0x00054cf8 add.w r0, r8, 0x34 | r0 = r8 + 0x34;
0x00054cfc ldr r1, [r3] | r1 = *(r3);
0x00054cfe blx 0x7e40 | r0 = fcn_00007e40 ();
0x00054d02 cmp r0, 0 |
| if (r0 == 0) {
0x00054d04 beq.w 0x54e1e | goto label_20;
| }
0x00054d08 ldrb.w r1, [r8, 0x2b] | r1 = *((r8 + 0x2b));
| if (r1 == 0) {
0x00054d0c cbnz r1, 0x54d1c |
0x00054d0e ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00054d12 mov r2, r6 | r2 = r6;
0x00054d14 movs r3, 9 | r3 = 9;
0x00054d16 ldr r6, [r0] | r6 = *(r0);
0x00054d18 ldr r6, [r6, 0x38] | r6 = *((r6 + 0x38));
0x00054d1a blx r6 | uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
| }
0x00054d1c movs r3, 0 | r3 = 0;
0x00054d1e strb.w r3, [r8, 0x2c] | *((r8 + 0x2c)) = r3;
| label_10:
0x00054d22 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00054d24 cmp r3, 0 |
| if (r3 != 0) {
0x00054d26 bne 0x54db6 | goto label_55;
| }
0x00054d28 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00054d2a cmp r2, 0 |
| if (r2 != 0) {
0x00054d2c bne.w 0x54fc8 | goto label_56;
| }
0x00054d30 movs r6, 5 | r6 = 5;
0x00054d32 b 0x54ac4 | goto label_4;
| label_41:
0x00054d34 mov r0, r5 | r0 = r5;
0x00054d36 bl 0x95d0 | fcn_000095d0 (r0);
0x00054d3a b 0x54afa | goto label_6;
| label_45:
0x00054d3c movs r2, 1 | r2 = 1;
0x00054d3e strb r2, [r5, 8] | *((r5 + 8)) = r2;
0x00054d40 cmp r3, 0 |
| if (r3 == 0) {
0x00054d42 beq 0x54dce | goto label_57;
| }
| label_30:
0x00054d44 cmp.w sl, 0 |
| if (sl != 0) {
0x00054d48 bne.w 0x54b32 | goto label_7;
| }
0x00054d4c b 0x54b42 | goto label_3;
| label_53:
0x00054d4e movs r1, 4 | r1 = 4;
0x00054d50 mov r0, fp | r0 = fp;
0x00054d52 bl 0xf0b0 | r0 = fcn_0000f0b0 (r0, r1);
0x00054d56 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00054d58 cbnz r0, 0x54daa | goto label_13;
| }
0x00054d5a ldr.w r6, [fp, 0xd8] | r6 = *(arg_d8h);
0x00054d5e ldrb.w r3, [r6, 0x2b] | r3 = *((r6 + 0x2b));
0x00054d62 mov r8, r6 | r8 = r6;
| if (r3 == 0) {
0x00054d64 cbnz r3, 0x54d7e |
0x00054d66 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00054d68 movs r2, 1 | r2 = 1;
0x00054d6a ldrsh.w r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x00054d6e ldr r3, [r0] | r3 = *(r0);
0x00054d70 adds r1, 3 | r1 += 3;
0x00054d72 ldr.w r8, [r3, 0x38] | r8 = *((r3 + 0x38));
0x00054d76 movs r3, 5 | r3 = 5;
0x00054d78 blx r8 | uint32_t (*r8)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00054d7a ldr.w r8, [fp, 0xd8] | r8 = *(arg_d8h);
| }
0x00054d7e movs r3, 1 | r3 = 1;
0x00054d80 strb.w r3, [r6, 0x2b] | *((r6 + 0x2b)) = r3;
| label_52:
0x00054d84 ldrb.w r3, [r8, 0x2e] | r3 = *((r8 + 0x2e));
0x00054d88 cmp r3, 0 |
| if (r3 != 0) {
0x00054d8a bne.w 0x54ec0 | goto label_54;
| }
0x00054d8e ldrb.w r1, [r8, 0x2b] | r1 = *((r8 + 0x2b));
0x00054d92 cmp r1, 0 |
| if (r1 != 0) {
0x00054d94 bne 0x54cec | goto label_8;
| }
0x00054d96 ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00054d9a movs r3, 0xa | r3 = 0xa;
0x00054d9c movs r2, 1 | r2 = 1;
0x00054d9e ldr r6, [r0] | r6 = *(r0);
0x00054da0 ldr r6, [r6, 0x38] | r6 = *((r6 + 0x38));
0x00054da2 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00054da4 mov r6, r0 | r6 = r0;
0x00054da6 cmp r0, 0 |
| if (r0 == 0) {
0x00054da8 beq 0x54cec | goto label_8;
| }
| label_13:
0x00054daa movw r3, 0x205 | r3 = 0x205;
0x00054dae cmp r6, r3 |
| if (r6 != r3) {
0x00054db0 bne.w 0x54c10 | goto label_9;
| }
0x00054db4 b 0x54d22 | goto label_10;
| label_55:
0x00054db6 movw r6, 0x205 | r6 = 0x205;
0x00054dba b 0x54aea | goto label_2;
| label_44:
0x00054dbc movs r3, 1 | r3 = 1;
0x00054dbe strb.w r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x00054dc2 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x00054dc4 str r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x00054dc6 add.w r3, r5, 0x20 | r3 = r5 + 0x20;
0x00054dca str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x00054dcc b 0x54b90 | goto label_11;
| label_57:
0x00054dce strb r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
0x00054dd0 cmp.w sl, 0 |
| if (sl != 0) {
0x00054dd4 bne.w 0x54b32 | goto label_7;
| }
0x00054dd8 b 0x54b42 | goto label_3;
| label_46:
0x00054dda ldr.w r0, [r8, 0x48] | r0 = *((r8 + 0x48));
0x00054dde bl 0x51680 | r0 = fcn_00051680 (r0);
0x00054de2 mov r6, r0 | r6 = r0;
0x00054de4 cmp r0, 0 |
| if (r0 != 0) {
0x00054de6 bne.w 0x54aea | goto label_2;
| }
0x00054dea ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x00054dec ldr.w r2, [r8, 0x38] | r2 = *((r8 + 0x38));
0x00054df0 rev r3, r3 | r3 = SWAP32 (r3);
0x00054df2 str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x00054df4 cmp.w sl, 0 |
| if (sl != 0) {
0x00054df8 bne.w 0x54b32 | goto label_7;
| }
0x00054dfc b 0x54bd6 | goto label_12;
| label_51:
0x00054dfe movs r1, 2 | r1 = 2;
0x00054e00 mov r0, fp | r0 = fp;
0x00054e02 bl 0xf0b0 | fcn_0000f0b0 (r0, r1);
0x00054e06 cmp r7, 1 |
0x00054e08 mov r6, r0 | r6 = r0;
0x00054e0a ite le |
| if (r7 > 1) {
0x00054e0c movle r3, 0 | r3 = 0;
| }
| if (r7 <= 1) {
0x00054e0e movgt r3, 1 | r3 = 1;
| }
0x00054e10 cmp r0, 0 |
0x00054e12 it ne |
| if (r0 == 0) {
0x00054e14 movne r3, 0 | r3 = 0;
| }
0x00054e16 cmp r3, 0 |
| if (r3 != 0) {
0x00054e18 bne 0x54ef2 | goto label_58;
| }
0x00054e1a cmp r6, 0 |
| if (r6 != 0) {
0x00054e1c bne 0x54daa | goto label_13;
| }
| label_20:
0x00054e1e ldr.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x00054e22 vstr d8, [fp, 0x48] | __asm ("vstr d8, [fp, 0x48]");
0x00054e26 strd r3, r3, [fp, 0x20] | __asm ("strd r3, r3, [fp, 0x20]");
0x00054e2a str.w r3, [fp, 0x1c] | __asm ("str.w r3, [arg_1ch]");
0x00054e2e movs r3, 2 | r3 = 2;
0x00054e30 strb.w r3, [fp, 0x10] | *(arg_10h) = r3;
0x00054e34 b 0x54b6e | goto label_14;
| label_49:
0x00054e36 ldrb.w r0, [r8, 0x19] | r0 = *((r8 + 0x19));
0x00054e3a ldrb.w r1, [r8, 0x5d] | r1 = *((r8 + 0x5d));
0x00054e3e cmp r0, r1 |
| if (r0 != r1) {
0x00054e40 bne.w 0x54c70 | goto label_15;
| }
0x00054e44 ldrb.w r0, [r8, 0x1a] | r0 = *((r8 + 0x1a));
0x00054e48 ldrb.w r1, [r8, 0x5e] | r1 = *((r8 + 0x5e));
0x00054e4c cmp r0, r1 |
| if (r0 != r1) {
0x00054e4e bne.w 0x54c70 | goto label_15;
| }
0x00054e52 ldrb.w r0, [r8, 0x1b] | r0 = *((r8 + 0x1b));
0x00054e56 ldrb.w r1, [r8, 0x5f] | r1 = *((r8 + 0x5f));
0x00054e5a cmp r0, r1 |
| if (r0 != r1) {
0x00054e5c bne.w 0x54c70 | goto label_15;
| }
| if (r2 != 0) {
0x00054e60 cbz r2, 0x54e6c |
0x00054e62 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00054e64 mov sb, r6 | sb = r6;
0x00054e66 b 0x54c88 | goto label_16;
| label_50:
0x00054e68 ldr.w sb, [sp, 4] | sb = var_4h;
| }
0x00054e6c ldr r1, [sp] | r1 = *(sp);
0x00054e6e movs r2, 0x10 | r2 = 0x10;
0x00054e70 mov r0, r8 | r0 = r8;
0x00054e72 str r3, [sp, 0xc] | var_ch = r3;
0x00054e74 blx 0x7e40 | fcn_00007e40 ();
0x00054e78 ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r0 == 0) {
0x00054e7a cbnz r0, 0x54e9e |
0x00054e7c ldrb.w r2, [r8, 0x12] | r2 = *((r8 + 0x12));
0x00054e80 cmp r2, 2 |
0x00054e82 ittt hi |
| if (r2 > 2) {
0x00054e84 ldrhhi r2, [r4, 0x18] | __asm ("ldrhhi r2, [r4, 0x18]");
| }
| if (r2 <= 2) {
0x00054e86 orrhi r2, r2, 1 | r2 |= 1;
| }
| if (r2 > 2) {
0x00054e8a strh r2, [r4, 0x18] | *((r4 + 0x18)) = r2;
| }
0x00054e8c ldrb.w r2, [r8, 0x13] | r2 = *((r8 + 0x13));
0x00054e90 cmp r2, 2 |
| if (r2 > 2) {
0x00054e92 bhi 0x54e9e | goto label_23;
| }
| if (r2 == 2) {
0x00054e94 beq 0x54f0a | goto label_59;
| }
| label_22:
0x00054e96 ldrb.w r2, [r8, 0x15] | r2 = *((r8 + 0x15));
0x00054e9a cmp r2, 0x40 |
| if (r2 == 0x40) {
0x00054e9c beq 0x54f46 | goto label_60;
| }
| }
| label_23:
0x00054e9e movs r6, 0x1a | r6 = 0x1a;
| label_26:
0x00054ea0 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00054ea2 ldr.w r8, [r0, 0x14] | r8 = *((r0 + 0x14));
0x00054ea6 bl 0x11f5c | fcn_00011f5c (r0);
0x00054eaa ldr.w r3, [r8, 0xd4] | r3 = *((r8 + 0xd4));
0x00054eae ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 == 0) {
0x00054eb0 cbz r3, 0x54f02 | goto label_61;
| }
| label_21:
0x00054eb2 movs r3, 0 | r3 = 0;
0x00054eb4 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| label_25:
0x00054eb6 cmp r6, 0 |
| if (r6 != 0) {
0x00054eb8 bne.w 0x54c10 | goto label_9;
| }
0x00054ebc ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00054ebe b 0x54a72 | goto label_5;
| label_54:
0x00054ec0 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00054ec2 cmp r3, 0 |
| if (r3 != 0) {
0x00054ec4 bne.w 0x54c3c | goto label_17;
| }
0x00054ec8 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00054eca cmp r3, 0 |
| if (r3 == 0) {
0x00054ecc beq.w 0x54c3c | goto label_17;
| }
0x00054ed0 mov.w r8, 8 | r8 = 8;
0x00054ed4 mov r6, r8 | r6 = r8;
| label_48:
0x00054ed6 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00054ed8 movs r3, 0 | r3 = 0;
0x00054eda str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00054edc ldr.w sb, [r0, 0x14] | sb = *((r0 + 0x14));
0x00054ee0 bl 0x11f5c | fcn_00011f5c (r0);
0x00054ee4 ldr.w r3, [sb, 0xd4] | r3 = *((sb + 0xd4));
0x00054ee8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00054eea cmp r3, 0 |
| if (r3 != 0) {
0x00054eec bne.w 0x54aba | goto label_18;
| }
0x00054ef0 b 0x54ab4 | goto label_19;
| label_58:
0x00054ef2 movs r1, 4 | r1 = 4;
0x00054ef4 mov r0, fp | r0 = fp;
0x00054ef6 bl 0x14e60 | r0 = fcn_00014e60 (r0, r1);
0x00054efa mov r6, r0 | r6 = r0;
0x00054efc cmp r6, 0 |
| if (r6 == 0) {
0x00054efe beq 0x54e1e | goto label_20;
| }
0x00054f00 b 0x54daa | goto label_13;
| label_61:
0x00054f02 mov r0, r8 | r0 = r8;
0x00054f04 bl 0x52f34 | fcn_00052f34 (r0);
0x00054f08 b 0x54eb2 | goto label_21;
| label_59:
0x00054f0a ldrh r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00054f0c ands r2, r2, 0x20 | r2 &= 0x20;
| if (r2 != r2) {
0x00054f10 bne 0x54e96 | goto label_22;
| }
0x00054f12 ldr r0, [sp, 8] | r0 = var_8h;
0x00054f14 add r1, sp, 0x18 | r1 += var_18h;
0x00054f16 str r3, [sp, 0xc] | var_ch = r3;
0x00054f18 str r2, [sp, 0x18] | var_18h = r2;
0x00054f1a bl 0x1c810 | fcn_0001c810 (r0, r1);
0x00054f1e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00054f20 cmp r0, 0 |
| if (r0 != 0) {
0x00054f22 bne.w 0x5502a | goto label_62;
| }
0x00054f26 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00054f28 cmp r2, 0 |
| if (r2 != 0) {
0x00054f2a bne 0x54e96 | goto label_22;
| }
0x00054f2c ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00054f2e ldr r6, [r0, 0x14] | r6 = *((r0 + 0x14));
0x00054f30 bl 0x11f5c | fcn_00011f5c (r0);
0x00054f34 ldr.w r3, [r6, 0xd4] | r3 = *((r6 + 0xd4));
0x00054f38 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00054f3a cmp r3, 0 |
| if (r3 == 0) {
0x00054f3c beq.w 0x5504c | goto label_63;
| }
| label_27:
0x00054f40 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00054f42 movs r6, 0 | r6 = 0;
0x00054f44 b 0x54a72 | goto label_5;
| label_60:
0x00054f46 ldrb.w r2, [r8, 0x16] | r2 = *((r8 + 0x16));
0x00054f4a cmp r2, 0x20 |
| if (r2 != 0x20) {
0x00054f4c bne 0x54e9e | goto label_23;
| }
0x00054f4e ldrb.w r2, [r8, 0x17] | r2 = *((r8 + 0x17));
0x00054f52 cmp r2, 0x20 |
| if (r2 != 0x20) {
0x00054f54 bne 0x54e9e | goto label_23;
| }
0x00054f56 ldrb.w r2, [r8, 0x11] | r2 = *((r8 + 0x11));
0x00054f5a ldrb.w r1, [r8, 0x10] | r1 = *((r8 + 0x10));
0x00054f5e lsls r2, r2, 0x10 | r2 <<= 0x10;
0x00054f60 orr.w r2, r2, r1, lsl 8 | r2 |= (r1 << 8);
0x00054f64 subs r1, r2, 1 | r1 = r2 - 1;
0x00054f66 tst r1, r2 |
| if ((r1 & r2) != 0) {
0x00054f68 bne 0x54e9e | goto label_23;
| }
0x00054f6a mvn r1, 0x100 | r1 = ~0x100;
0x00054f6e adds r1, r2, r1 | r1 = r2 + r1;
0x00054f70 cmp.w r1, 0xff00 |
| if (r1 >= 0xff00) {
0x00054f74 bhs 0x54e9e | goto label_23;
| }
0x00054f76 ldrh r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x00054f78 ldr r0, [r4, 0x24] | r0 = *((r4 + 0x24));
0x00054f7a orr r1, r1, 2 | r1 |= 2;
0x00054f7e strh r1, [r4, 0x18] | *((r4 + 0x18)) = r1;
0x00054f80 cmp r2, r0 |
0x00054f82 ldrb.w r1, [r8, 0x14] | r1 = *((r8 + 0x14));
0x00054f86 str r1, [sp, 8] | var_8h = r1;
0x00054f88 sub.w r1, r2, r1 | r1 = r2 - r1;
| if (r2 != r0) {
0x00054f8c bne 0x54fe2 | goto label_64;
| }
0x00054f8e ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00054f90 ldr r0, [r2, 0x20] | r0 = *((r2 + 0x20));
0x00054f92 movs r2, 1 |
0x00054f94 movt r2, 0x1000 | r2 = 0x10000001;
0x00054f98 ands r2, r0 | r2 &= r0;
0x00054f9a ldr r0, [sp, 4] | r0 = var_4h;
0x00054f9c cmp r2, 1 |
0x00054f9e it ne |
| if (r2 != 1) {
0x00054fa0 cmpne r0, sb | __asm ("cmpne r0, sb");
| }
| if (r2 <= 1) {
0x00054fa2 blo 0x55032 | goto label_65;
| }
0x00054fa4 cmp.w r1, 0x1e0 |
| if (r1 <= 0x1e0) {
0x00054fa8 blo.w 0x54e9e | goto label_23;
| }
0x00054fac str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x00054fae ldr.w r2, [r8, 0x34] | r2 = *((r8 + 0x34));
0x00054fb2 subs r2, 0 |
0x00054fb4 it ne |
| if (r2 == 0) {
0x00054fb6 movne r2, 1 | r2 = 1;
| }
0x00054fb8 strb r2, [r4, 0x11] | *((r4 + 0x11)) = r2;
0x00054fba ldr.w r2, [r8, 0x40] | r2 = *((r8 + 0x40));
0x00054fbe subs r2, 0 |
0x00054fc0 it ne |
| if (r2 == 0) {
0x00054fc2 movne r2, 1 | r2 = 1;
| }
0x00054fc4 strb r2, [r4, 0x12] | *((r4 + 0x12)) = r2;
0x00054fc6 b 0x54c88 | goto label_16;
| label_56:
0x00054fc8 ldr r0, [r2, 0x48] | r0 = *((r2 + 0x48));
0x00054fca str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00054fcc ldr.w sb, [r0, 0x14] | sb = *((r0 + 0x14));
0x00054fd0 bl 0x11f5c | fcn_00011f5c (r0);
0x00054fd4 ldr.w r3, [sb, 0xd4] | r3 = *((sb + 0xd4));
0x00054fd8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00054fda cmp r3, 0 |
| if (r3 == 0) {
0x00054fdc beq 0x55054 | goto label_66;
| }
0x00054fde movs r6, 5 | r6 = 5;
0x00054fe0 b 0x54ac0 | goto label_24;
| label_64:
0x00054fe2 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00054fe4 str r1, [sp, 0xc] | var_ch = r1;
0x00054fe6 str r2, [sp, 4] | var_4h = r2;
0x00054fe8 ldr r6, [r0, 0x14] | r6 = *((r0 + 0x14));
0x00054fea bl 0x11f5c | fcn_00011f5c (r0);
0x00054fee ldr r2, [sp, 4] | r2 = var_4h;
0x00054ff0 ldr.w r3, [r6, 0xd4] | r3 = *((r6 + 0xd4));
0x00054ff4 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00054ff6 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00054ff8 cbz r3, 0x5501e |
| while (1) {
0x00054ffa ldr r0, [r4, 0x54] | r0 = *((r4 + 0x54));
0x00054ffc strd r2, r1, [r4, 0x24] | __asm ("strd r2, r1, [r4, 0x24]");
| if (r0 != 0) {
0x00055000 cbz r0, 0x5500e |
0x00055002 subs r0, 4 | r0 -= 4;
0x00055004 str r0, [r4, 0x54] | *((r4 + 0x54)) = r0;
0x00055006 bl 0xdff4 | fcn_0000dff4 (r0);
0x0005500a movs r3, 0 | r3 = 0;
0x0005500c str r3, [r4, 0x54] | *((r4 + 0x54)) = r3;
| }
0x0005500e mov r1, r4 | r1 = r4;
0x00055010 ldr r2, [sp, 8] | r2 = var_8h;
0x00055012 ldr r0, [r1], 0x24 | r0 = *(r1);
| r1 += 0x24;
0x00055016 bl 0x1c864 | r0 = fcn_0001c864 (r0, r1, r2);
0x0005501a mov r6, r0 | r6 = r0;
0x0005501c b 0x54eb6 | goto label_25;
0x0005501e mov r0, r6 | r0 = r6;
0x00055020 bl 0x52f34 | fcn_00052f34 (r0);
0x00055024 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00055026 ldr r2, [sp, 4] | r2 = var_4h;
0x00055028 b 0x54ffa |
| }
| label_62:
0x0005502a mov r6, r0 | r6 = r0;
0x0005502c b 0x54ea0 | goto label_26;
| label_42:
0x0005502e blx 0x7e8c | fcn_00007e8c ();
| label_65:
0x00055032 ldr r2, [pc, 0x38] |
0x00055034 mov.w r1, 0xc40 |
0x00055038 movt r1, 1 | r1 = 0x10c40;
0x0005503c movs r0, 0xb | r0 = 0xb;
0x0005503e str r3, [sp, 4] | var_4h = r3;
0x00055040 add r2, pc | r2 = 0xaa0b2;
0x00055042 bl 0x23164 | fcn_00023164 (r0, r1, r2);
0x00055046 ldr r3, [sp, 4] | r3 = var_4h;
0x00055048 mov r6, r0 | r6 = r0;
0x0005504a b 0x54ea0 | goto label_26;
| label_63:
0x0005504c mov r0, r6 | r0 = r6;
0x0005504e bl 0x52f34 | fcn_00052f34 (r0);
0x00055052 b 0x54f40 | goto label_27;
| label_66:
0x00055054 mov.w r8, 5 | r8 = 5;
0x00055058 mov r6, r8 | r6 = r8;
0x0005505a b 0x54ab4 | goto label_19;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x55070 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00055070 () | void fcn_00055070 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00055070 push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x00055074 mov r4, r0 | r4 = r0;
0x00055076 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
0x00055078 mov r6, r1 | r6 = r1;
0x0005507a mov r7, r2 | r7 = r2;
0x0005507c ldr.w r8, [r0, 4] | r8 = *((r0 + 4));
| if (r3 == 0) {
0x00055080 cbz r3, 0x5508c | goto label_1;
| }
0x00055082 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00055084 adds r3, 1 | r3++;
0x00055086 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00055088 ldrb r3, [r0, 0xa] | r3 = *((r0 + 0xa));
0x0005508a cbz r3, 0x550b0 |
| while (1) {
| label_1:
0x0005508c ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00055090 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00055092 ldr.w sb, [r3, 0x38] | sb = *((r3 + 0x38));
0x00055096 bl 0x51680 | r0 = fcn_00051680 (r0);
0x0005509a mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0005509c cbz r0, 0x550b6 | goto label_2;
| }
| label_0:
0x0005509e ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 != 0) {
0x000550a0 cbz r3, 0x550aa |
0x000550a2 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000550a4 subs r3, 1 | r3--;
0x000550a6 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| if (r3 == 0) {
0x000550a8 cbz r3, 0x550ca | goto label_3;
| }
| }
0x000550aa mov r0, r5 | r0 = r5;
0x000550ac pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
0x000550b0 bl 0x12464 | fcn_00012464 (r0);
0x000550b4 b 0x5508c |
| }
| label_2:
0x000550b6 rev r3, r7 | r7 = SWAP32 (r3);
0x000550b8 add.w r2, r6, 9 | r2 = r6 + 9;
0x000550bc cmp r6, 7 |
0x000550be str.w r3, [sb, r2, lsl 2] | __asm ("str.w r3, [sb, r2, lsl 2]");
0x000550c2 it eq |
| if (r6 != 7) {
0x000550c4 strbeq r7, [r8, 0x12] | *((r8 + 0x12)) = r7;
| }
0x000550c8 b 0x5509e | goto label_0;
| label_3:
0x000550ca mov r0, r4 | r0 = r4;
0x000550cc bl 0x95d0 | fcn_000095d0 (r0);
0x000550d0 mov r0, r5 | r0 = r5;
0x000550d2 pop.w {r3, r4, r5, r6, r7, r8, sb, 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/libsqlite3.so.0.8.6 @ 0x55140 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00055140 () | void fcn_00055140 (int16_t arg_38h, int16_t arg_48h, int16_t arg_60h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00055140 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00055144 sub sp, 0x3c |
0x00055146 ldr.w r6, [pc, 0x638] |
0x0005514a movs r7, 0 | r7 = 0;
0x0005514c ldr.w r5, [pc, 0x634] | r5 = *(0x55784);
0x00055150 add r6, pc | r6 = 0xaa8d6;
0x00055152 ldr.w r8, [r0, 0xc] | r8 = *(arg_60hxc);
0x00055156 ldr.w sb, [r0, 0x30] | sb = *(arg_60hx30);
0x0005515a ldr r5, [r6, r5] |
0x0005515c ldr r5, [r5] | r5 = *(0xaa8d6);
0x0005515e str r5, [sp, 0x34] | var_34h = r5;
0x00055160 mov.w r5, 0 | r5 = 0;
0x00055164 mov r5, r3 | r5 = r3;
0x00055166 ldrb.w r3, [sp, 0x60] | r3 = *(arg_60h);
0x0005516a strd r2, r1, [sp, 0xc] | __asm ("strd r2, r1, [var_ch]");
0x0005516e str r7, [sp, 0x2c] | var_2ch = r7;
0x00055170 str r3, [sp, 8] | var_8h = r3;
0x00055172 ldr.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x00055176 ldr r6, [r3, 0x24] | r6 = *((r3 + 0x24));
0x00055178 rev r6, r6 | r6 = SWAP32 (r6);
0x0005517a cmp r6, sb |
| if (r6 >= sb) {
0x0005517c bhs.w 0x552fc | goto label_13;
| }
0x00055180 mov r4, r0 | r4 = r0;
0x00055182 cmp r6, 0 |
| if (r6 == 0) {
0x00055184 beq 0x5523a | goto label_14;
| }
0x00055186 ldr r3, [sp, 8] | r3 = var_8h;
0x00055188 cmp r3, 1 |
| if (r3 == 1) {
0x0005518a beq.w 0x55324 | goto label_15;
| }
0x0005518e ldr r3, [sp, 8] | r3 = var_8h;
0x00055190 sub.w r7, r3, 2 | r7 = r3 - 2;
0x00055194 clz r7, r7 | r7 &= r7;
0x00055198 lsrs r7, r7, 5 | r7 >>= 5;
| label_2:
0x0005519a ldr.w r0, [r8, 0x48] | r0 = *((r8 + 0x48));
0x0005519e bl 0x51680 | r0 = fcn_00051680 (r0);
0x000551a2 mov r2, r0 | r2 = r0;
0x000551a4 cmp r0, 0 |
| if (r0 != 0) {
0x000551a6 bne 0x55218 | goto label_0;
| }
0x000551a8 ldr.w r2, [r8, 0x38] | r2 = *((r8 + 0x38));
0x000551ac subs r3, r6, 1 | r3 = r6 - 1;
0x000551ae rev r3, r3 | r3 = SWAP32 (r3);
0x000551b0 str.w r8, [sp, 0x18] | __asm ("str.w r8, [var_18h]");
0x000551b4 mov sl, r0 | sl = r0;
0x000551b6 mov fp, r7 |
0x000551b8 mov r8, r0 | r8 = r0;
0x000551ba adds r1, r6, 1 | r1 = r6 + 1;
0x000551bc str r3, [r2, 0x24] | *((r2 + 0x24)) = r3;
0x000551be add r3, sp, 0x2c | r3 += var_2ch;
0x000551c0 str r1, [sp, 0x1c] | var_1ch = r1;
0x000551c2 str r3, [sp, 0x20] | var_20h = r3;
0x000551c4 str r5, [sp, 0x14] | var_14h = r5;
| label_3:
0x000551c6 cmp.w sl, 0 |
| if (sl == 0) {
0x000551ca beq.w 0x552f2 | goto label_16;
| }
0x000551ce ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x000551d2 ldr r5, [r3] | r5 = *(r3);
0x000551d4 rev r5, r5 | r5 = SWAP32 (r5);
| label_1:
0x000551d6 cmp r5, sb |
| if (r5 <= sb) {
0x000551d8 bhi 0x551e2 |
0x000551da ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000551dc cmp r3, r8 |
| if (r3 != r8) {
0x000551de bne.w 0x5534c | goto label_17;
| }
| }
0x000551e2 blx 0x7f8c | fcn_00007f8c ();
0x000551e6 ldr.w r2, [pc, 0x5a0] | r2 = *(0x00055788);
0x000551ea adds r0, 0x14 | r0 += 0x14;
0x000551ec ldr.w r1, [pc, 0x59c] | r1 = *(0x0005578c);
0x000551f0 movw r3, 0x1743 |
0x000551f4 str r0, [sp] | *(sp) = r0;
0x000551f6 movt r3, 1 | r3 = 0x11743;
0x000551fa add r2, pc | r2 += pc;
0x000551fc movs r0, 0xb | r0 = 0xb;
0x000551fe add r1, pc | r1 += pc;
0x00055200 blx 0x8474 | fcn_00008474 ();
0x00055204 movs r2, 0xb | r2 = 0xb;
0x00055206 cmp.w sl, 0 |
| if (sl == 0) {
0x0005520a beq 0x55218 | goto label_0;
| }
| label_4:
0x0005520c ldr.w r0, [sl, 0x48] | r0 = *((sl + 0x48));
0x00055210 str r2, [sp, 8] | var_8h = r2;
0x00055212 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00055216 ldr r2, [sp, 8] | r2 = var_8h;
| do {
| label_0:
0x00055218 ldr.w r1, [pc, 0x574] |
0x0005521c ldr.w r3, [pc, 0x564] | r3 = *(0x55784);
0x00055220 add r1, pc | r1 = 0xaa9b4;
0x00055222 ldr r3, [r1, r3] | r3 = *(0xaa9b4);
0x00055224 ldr r1, [r3] | r1 = *(0xaa9b4);
0x00055226 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00055228 eors r1, r3 | r1 ^= r3;
0x0005522a mov.w r3, 0 | r3 = 0;
| if (r1 != r3) {
0x0005522e bne.w 0x55766 | goto label_18;
| }
0x00055232 mov r0, r2 | r0 = r2;
0x00055234 add sp, 0x3c |
0x00055236 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x0005523a ldr.w r0, [r8, 0x48] | r0 = *((r8 + 0x48));
0x0005523e ldrb r7, [r4, 0x13] | r7 = *((r4 + 0x13));
0x00055240 bl 0x51680 | r0 = fcn_00051680 (r0);
0x00055244 mov r2, r0 | r2 = r0;
0x00055246 cmp r0, 0 |
0x00055248 bne 0x55218 |
| } while (r0 != 0);
0x0005524a ldr.w sb, [r4, 0x30] | sb = *((r4 + 0x30));
0x0005524e clz r7, r7 | r7 &= r7;
0x00055252 ldr.w r3, [pc, 0x540] | r3 = *(0x00055794);
0x00055256 lsrs r7, r7, 5 | r7 >>= 5;
0x00055258 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x0005525a add.w r5, sb, 1 | r5 = sb + 1;
0x0005525e add r3, pc | r3 += pc;
0x00055260 str r5, [r4, 0x30] | *((r4 + 0x30)) = r5;
0x00055262 ldr.w r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x00055266 bl 0xab680 | fcn_000ab680 (r0, r1, r2);
0x0005526a ldrb r3, [r4, 0x11] | r3 = *((r4 + 0x11));
0x0005526c cmp sb, r0 |
0x0005526e it eq |
| if (sb != r0) {
0x00055270 addeq r5, r0, 2 | r5 = r0 + 2;
| }
0x00055272 mov r8, r0 | r8 = r0;
0x00055274 it eq |
| if (sb != r0) {
0x00055276 streq r5, [r4, 0x30] | *((r4 + 0x30)) = r5;
| }
| if (r3 != 0) {
0x00055278 cbz r3, 0x552ae |
0x0005527a cmp r5, 1 |
| if (r5 >= 1) {
0x0005527c bls 0x552a8 |
0x0005527e ldr r6, [r4, 0x28] | r6 = *((r4 + 0x28));
0x00055280 movw r3, 0xcccd |
0x00055284 movt r3, 0xcccc | r3 = 0xcccccccd;
0x00055288 subs r0, r5, 2 | r0 = r5 - 2;
0x0005528a add.w r8, r8, 1 | r8++;
0x0005528e umull r3, r6, r3, r6 | r3:r6 = r3 * r6;
0x00055292 lsrs r6, r6, 2 | r6 >>= 2;
0x00055294 adds r6, 1 | r6++;
0x00055296 mov r1, r6 | r1 = r6;
0x00055298 bl 0xab680 | r0 = fcn_000ab680 (r0, r1, r2);
0x0005529c mul r0, r6, r0 | r0 = r6 * r0;
0x000552a0 adds r6, r0, 2 | r6 = r0 + 2;
0x000552a2 cmp r8, r6 |
0x000552a4 it eq |
| if (r8 == r6) {
0x000552a6 addeq r6, r0, 3 | r6 = r0 + 3;
| goto label_19;
| }
| }
| label_19:
0x000552a8 cmp r6, r5 |
| if (r6 == r5) {
0x000552aa beq.w 0x55682 | goto label_20;
| }
| }
| label_10:
0x000552ae ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000552b0 rev r5, r5 | r5 = SWAP32 (r5);
0x000552b2 mov r0, r4 | r0 = r4;
0x000552b4 mov r3, r7 | r3 = r7;
0x000552b6 ldr r2, [r2, 0x38] | r2 = *((r2 + 0x38));
0x000552b8 str r5, [r2, 0x1c] | *((r2 + 0x1c)) = r5;
0x000552ba ldr r2, [sp, 0xc] | r2 = var_ch;
0x000552bc ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
0x000552be ldr r4, [sp, 0x10] | r4 = var_10h;
0x000552c0 str r1, [r2] | *(r2) = r1;
0x000552c2 mov r2, r4 | r2 = r4;
0x000552c4 bl 0x24d98 | r0 = fcn_00024d98 (r0, r1, r2);
0x000552c8 mov r2, r0 | r2 = r0;
0x000552ca cmp r0, 0 |
| if (r0 != 0) {
0x000552cc bne 0x55218 | goto label_0;
| }
0x000552ce ldr r3, [r4] | r3 = *(r4);
0x000552d0 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x000552d2 bl 0x51680 | r0 = fcn_00051680 (r0);
0x000552d6 mov r2, r0 | r2 = r0;
0x000552d8 cmp r0, 0 |
| if (r0 == 0) {
0x000552da beq 0x55218 | goto label_0;
| }
0x000552dc ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x000552de cbz r3, 0x552ea |
0x000552e0 str r0, [sp, 8] | var_8h = r0;
0x000552e2 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x000552e4 bl 0x11fa4 | fcn_00011fa4 (r0);
0x000552e8 ldr r2, [sp, 8] | r2 = var_8h;
| }
0x000552ea ldr r1, [sp, 0x10] | r1 = var_10h;
0x000552ec movs r3, 0 | r3 = 0;
0x000552ee str r3, [r1] | *(r1) = r3;
0x000552f0 b 0x55218 | goto label_0;
| label_16:
0x000552f2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000552f4 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x000552f6 ldr r5, [r3, 0x20] | r5 = *((r3 + 0x20));
0x000552f8 rev r5, r5 | r5 = SWAP32 (r5);
0x000552fa b 0x551d6 | goto label_1;
| label_13:
0x000552fc blx 0x7f8c | fcn_00007f8c ();
0x00055300 ldr.w r2, [pc, 0x494] | r2 = *(0x00055798);
0x00055304 add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x00055308 ldr.w r1, [pc, 0x490] | r1 = *(0x0005579c);
0x0005530c movw r3, 0x170b |
0x00055310 movt r3, 1 | r3 = 0x1170b;
0x00055314 movs r0, 0xb | r0 = 0xb;
0x00055316 add r2, pc | r2 += pc;
0x00055318 str r4, [sp] | *(sp) = r4;
0x0005531a add r1, pc | r1 += pc;
0x0005531c blx 0x8474 | fcn_00008474 ();
0x00055320 movs r2, 0xb | r2 = 0xb;
0x00055322 b 0x55218 | goto label_0;
| label_15:
0x00055324 cmp r5, sb |
| if (r5 > sb) {
0x00055326 bhi.w 0x5519a | goto label_2;
| }
0x0005532a add r2, sp, 0x30 | r2 += var_30h;
0x0005532c mov r3, r7 | r3 = r7;
0x0005532e mov r1, r5 | r1 = r5;
0x00055330 bl 0x25348 | r0 = fcn_00025348 (r0, r1, r2, r3);
0x00055334 mov r2, r0 | r2 = r0;
0x00055336 cmp r0, 0 |
| if (r0 != 0) {
0x00055338 bne.w 0x55218 | goto label_0;
| }
0x0005533c ldrb.w r7, [sp, 0x30] | r7 = var_30h;
0x00055340 sub.w r7, r7, 2 | r7 -= 2;
0x00055344 clz r7, r7 | r7 &= r7;
0x00055348 lsrs r7, r7, 5 | r7 >>= 5;
0x0005534a b 0x5519a | goto label_2;
| label_17:
0x0005534c ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005534e movs r3, 0 | r3 = 0;
0x00055350 mov r1, r5 | r1 = r5;
0x00055352 mov r0, r4 | r0 = r4;
0x00055354 bl 0x24d98 | r0 = fcn_00024d98 (r0, r1, r2);
0x00055358 cmp r0, 0 |
| if (r0 != 0) {
0x0005535a bne.w 0x5575a | goto label_21;
| }
0x0005535e ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00055360 eor r0, fp, 1 | r0 = fp ^ 1;
0x00055364 ldr r1, [r2, 0x38] | r1 = *((r2 + 0x38));
0x00055366 ldr r6, [r1, 4] | r6 = *((r1 + 4));
0x00055368 cmp r6, 0 |
0x0005536a ite ne |
| if (r6 == 0) {
0x0005536c movne r3, 0 | r3 = 0;
| }
| if (r6 != 0) {
0x0005536e andeq r3, r0, 1 | r3 = r0 & 1;
| }
0x00055372 rev r6, r6 | r6 = SWAP32 (r6);
0x00055374 cmp r3, 0 |
| if (r3 == 0) {
0x00055376 bne 0x55442 |
0x00055378 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0005537a lsrs r3, r3, 2 | r3 >>= 2;
0x0005537c subs r3, 2 | r3 -= 2;
0x0005537e cmp r3, r6 |
| if (r3 <= r6) {
0x00055380 blo.w 0x556de | goto label_22;
| }
0x00055384 cmp.w fp, 0 |
| if (fp != 0) {
0x00055388 beq 0x553ec |
0x0005538a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005538c cmp r5, r3 |
| if (r5 != r3) {
0x0005538e beq 0x553a4 |
0x00055390 ldr r7, [sp, 8] | r7 = var_8h;
0x00055392 ite lo |
| if (r5 >= r3) {
0x00055394 movlo r3, 1 | r3 = 1;
| }
| if (r5 < r3) {
0x00055396 movhs r3, 0 | r3 = 0;
| }
0x00055398 cmp r7, 2 |
0x0005539a ite ne |
| if (r7 == 2) {
0x0005539c movne r3, 0 | r3 = 0;
| }
| if (r7 != 2) {
0x0005539e andeq r3, r3, 1 | r3 &= 1;
| }
| if (r3 == 0) {
0x000553a2 cbz r3, 0x553ec | goto label_23;
| }
| }
0x000553a4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000553a6 mov fp, r2 |
0x000553a8 ldr r0, [r2, 0x48] | r0 = *((r2 + 0x48));
0x000553aa ldr.w r8, [sp, 0x18] | r8 = var_18h;
0x000553ae str r5, [r3] | *(r3) = r5;
0x000553b0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000553b2 str r2, [r3] | *(r3) = r2;
0x000553b4 bl 0x51680 | r0 = fcn_00051680 (r0);
0x000553b8 mov r2, r0 | r2 = r0;
0x000553ba cmp r0, 0 |
| if (r0 != 0) {
0x000553bc bne 0x5545a | goto label_6;
| }
0x000553be cmp r6, 0 |
| if (r6 != 0) {
0x000553c0 bne.w 0x555b4 | goto label_24;
| }
0x000553c4 cmp.w sl, 0 |
| if (sl == 0) {
0x000553c8 beq.w 0x55636 | goto label_25;
| }
0x000553cc ldr.w r0, [sl, 0x48] | r0 = *((sl + 0x48));
0x000553d0 bl 0x51680 | r0 = fcn_00051680 (r0);
0x000553d4 mov r2, r0 | r2 = r0;
0x000553d6 cmp r0, 0 |
| if (r0 != 0) {
0x000553d8 bne 0x5545a | goto label_6;
| }
0x000553da ldr.w r2, [fp, 0x38] | r2 = *(arg_38h);
0x000553de ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x000553e2 ldr r2, [r2] | r2 = *(r2);
0x000553e4 str r2, [r3] | *(r3) = r2;
| label_8:
0x000553e6 movs r3, 0 | r3 = 0;
0x000553e8 str r3, [sp, 0x2c] | var_2ch = r3;
0x000553ea b 0x555a6 | goto label_26;
| }
| label_23:
0x000553ec cmp r6, 0 |
| if (r6 == 0) {
0x000553ee beq 0x55470 | goto label_27;
| }
0x000553f0 ldr r7, [sp, 0x14] | r7 = var_14h;
0x000553f2 cmp r7, 0 |
| if (r7 != 0) {
0x000553f4 bne.w 0x5551c | goto label_28;
| }
0x000553f8 ldr r5, [r1, 8] | r5 = *((r1 + 8));
0x000553fa add.w r3, r1, 8 | r3 = r1 + 8;
0x000553fe mov ip, r7 |
0x00055400 rev r5, r5 | r5 = SWAP32 (r5);
| label_7:
0x00055402 cmp sb, r5 |
0x00055404 it hs |
| if (sb >= r5) {
0x00055406 cmphs r5, 1 | __asm ("cmphs r5, 1");
| }
| if (sb < r5) {
0x00055408 bls.w 0x55708 | goto label_29;
| }
0x0005540c ldr r7, [sp, 0x14] | r7 = var_14h;
0x0005540e cmp r7, r5 |
0x00055410 it eq |
| if (r7 != r5) {
0x00055412 orreq r0, r0, 1 | r0 |= 1;
| }
0x00055416 cmp r0, 0 |
| if (r0 != 0) {
0x00055418 bne 0x55486 | goto label_30;
| }
0x0005541a ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005541c ldr r7, [sp, 8] | r7 = var_8h;
0x0005541e cmp r0, r5 |
0x00055420 ite ls |
| if (r0 > r5) {
0x00055422 movls r0, 0 | r0 = 0;
| }
| if (r0 <= r5) {
0x00055424 movhi r0, 1 | r0 = 1;
| }
0x00055426 cmp r7, 2 |
0x00055428 it ne |
| if (r7 == 2) {
0x0005542a movne r0, 0 | r0 = 0;
| }
| if (r0 != 0) {
0x0005542c cbnz r0, 0x55486 | goto label_30;
| }
0x0005542e cmp.w sl, 0 |
| if (sl != 0) {
0x00055432 bne.w 0x5564c | goto label_31;
| }
| label_5:
0x00055436 add.w r8, r8, 1 | r8++;
0x0005543a mov sl, r2 | sl = r2;
0x0005543c mov.w fp, 1 |
0x00055440 b 0x551c6 | goto label_3;
| }
0x00055442 ldr r0, [r2, 0x48] | r0 = *((r2 + 0x48));
0x00055444 mov fp, r2 |
0x00055446 ldr.w r8, [sp, 0x18] | r8 = var_18h;
0x0005544a str r5, [sp, 8] | var_8h = r5;
0x0005544c bl 0x51680 | fcn_00051680 (r0);
0x00055450 ldr r1, [sp, 8] | r1 = var_8h;
0x00055452 mov r2, r0 | r2 = r0;
0x00055454 cmp r0, 0 |
| if (r0 == 0) {
0x00055456 beq.w 0x5558e | goto label_32;
| }
| label_6:
0x0005545a ldr.w r0, [fp, 0x48] | r0 = *(arg_48h);
0x0005545e str r2, [sp, 8] | var_8h = r2;
0x00055460 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00055464 ldr r2, [sp, 8] | r2 = var_8h;
0x00055466 cmp.w sl, 0 |
| if (sl != 0) {
0x0005546a bne.w 0x5520c | goto label_4;
| }
0x0005546e b 0x55218 | goto label_0;
| label_27:
0x00055470 cmp.w sl, 0 |
| if (sl != 0) {
0x00055474 bne.w 0x5576a | goto label_33;
| }
0x00055478 cmp.w fp, 0 |
| if (fp != 0) {
0x0005547c bne 0x55436 | goto label_5;
| }
| label_12:
0x0005547e mov r7, fp | r7 = fp;
0x00055480 mov fp, r2 |
0x00055482 mov r2, r7 | r2 = r7;
0x00055484 b 0x5550e | goto label_34;
| label_30:
0x00055486 str r3, [sp, 8] | var_8h = r3;
0x00055488 mov fp, r2 |
0x0005548a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005548c mov r8, r1 | r8 = r1;
0x0005548e ldr r0, [r2, 0x48] | r0 = *((r2 + 0x48));
0x00055490 mov r7, ip | r7 = ip;
0x00055492 str r5, [r3] | *(r3) = r5;
0x00055494 bl 0x51680 | r0 = fcn_00051680 (r0);
0x00055498 mov r2, r0 | r2 = r0;
0x0005549a cmp r0, 0 |
| if (r0 != 0) {
0x0005549c bne 0x5545a | goto label_6;
| }
0x0005549e subs r1, r6, 1 | r1 = r6 - 1;
0x000554a0 ldr r3, [sp, 8] | r3 = var_8h;
0x000554a2 cmp r1, r7 |
0x000554a4 rev r1, r1 | r1 = SWAP32 (r1);
0x000554a6 itttt hi |
| if (r1 <= r7) {
0x000554a8 movhi r0, r8 | r0 = r8;
| }
| if (r1 <= r7) {
0x000554aa addhi r6, 1 | r6++;
| }
| if (r1 <= r7) {
0x000554ac ldrhi r0, [r0, r6, lsl 2] | offset_0 = r6 << 2;
| r0 = *((r0 + offset_0));
| }
| if (r1 > r7) {
0x000554b0 str r0, [r3] | *(r3) = r0;
| }
0x000554b2 str.w r1, [r8, 4] | __asm ("str.w r1, [r8, 4]");
0x000554b6 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x000554b8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000554ba ldr r5, [r3] | r5 = *(r3);
0x000554bc cmp r0, 0 |
| if (r0 == 0) {
0x000554be beq.w 0x5565a | goto label_35;
| }
0x000554c2 ldr r3, [r0] | r3 = *(r0);
0x000554c4 cmp r5, r3 |
| if (r5 < r3) {
0x000554c6 bls.w 0x55628 | goto label_36;
| }
| label_9:
0x000554ca mov r0, r4 | r0 = r4;
0x000554cc ldr r4, [sp, 0x10] | r4 = var_10h;
0x000554ce mov r3, r2 | r3 = r2;
0x000554d0 mov r1, r5 | r1 = r5;
0x000554d2 mov r2, r4 | r2 = r4;
0x000554d4 bl 0x24d98 | r0 = fcn_00024d98 (r0, r1, r2);
0x000554d8 mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x000554da cbnz r0, 0x554fc |
0x000554dc ldr r3, [r4] | r3 = *(r4);
0x000554de ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x000554e0 bl 0x51680 | r0 = fcn_00051680 (r0);
0x000554e4 mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x000554e6 cbz r0, 0x554fc | goto label_37;
| }
0x000554e8 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x000554ea cbz r3, 0x554f6 |
0x000554ec str r0, [sp, 8] | var_8h = r0;
0x000554ee ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x000554f0 bl 0x11fa4 | fcn_00011fa4 (r0);
0x000554f4 ldr r2, [sp, 8] | r2 = var_8h;
| }
0x000554f6 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000554f8 movs r3, 0 | r3 = 0;
0x000554fa str r3, [r1] | *(r1) = r3;
| }
| label_37:
0x000554fc cmp.w sl, 0 |
| if (sl != 0) {
0x00055500 beq 0x5550e |
0x00055502 ldr.w r0, [sl, 0x48] | r0 = *((sl + 0x48));
0x00055506 str r2, [sp, 8] | var_8h = r2;
0x00055508 bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005550c ldr r2, [sp, 8] | r2 = var_8h;
| }
| label_34:
0x0005550e ldr.w r0, [fp, 0x48] | r0 = *(arg_48h);
0x00055512 str r2, [sp, 8] | var_8h = r2;
0x00055514 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00055518 ldr r2, [sp, 8] | r2 = var_8h;
0x0005551a b 0x55218 | goto label_0;
| label_28:
0x0005551c ldr r3, [sp, 8] | r3 = var_8h;
0x0005551e cmp r3, 2 |
| if (r3 == 2) {
0x00055520 beq.w 0x5565e | goto label_38;
| }
0x00055524 ldr r5, [r1, 8] | r5 = *((r1 + 8));
0x00055526 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00055528 rev r5, r5 | r5 = SWAP32 (r5);
0x0005552a subs.w fp, r5, r3 |
| if (fp < r5) {
0x0005552e bpl 0x5553c |
0x00055530 cmp.w fp, -0x80000000 |
| if (fp == -0x80000000) {
0x00055534 beq.w 0x55702 | goto label_39;
| }
0x00055538 rsb.w fp, fp, 0 |
| }
| label_11:
0x0005553c cmp r6, 1 |
0x0005553e itt eq |
| if (r6 != 1) {
0x00055540 addeq r3, r1, 8 | r3 = r1 + 8;
| }
| if (r6 != 1) {
0x00055544 mov.w ip, 0 | goto label_40;
| }
| if (r6 == 1) {
| label_40:
0x00055548 beq.w 0x55402 | goto label_7;
| }
0x0005554c ldr r7, [sp, 0x14] | r7 = var_14h;
0x0005554e add.w lr, r1, 0xc | lr = r1 + 0xc;
0x00055552 movs r5, 1 | r5 = 1;
0x00055554 mov.w ip, 0 |
| do {
0x00055558 ldr.w r3, [lr] | r3 = *(lr);
0x0005555c rev r3, r3 | r3 = SWAP32 (r3);
0x0005555e subs r3, r3, r7 | r3 -= r7;
| if (r3 < r3) {
0x00055560 bpl 0x5556a |
0x00055562 cmp.w r3, -0x80000000 |
| if (r3 == -0x80000000) {
0x00055566 beq 0x55572 | goto label_41;
| }
0x00055568 rsbs r3, r3, 0 | r3 -= ;
| }
0x0005556a cmp r3, fp |
0x0005556c itt lt |
| if (r3 >= fp) {
0x0005556e movlt fp, r3 |
| }
| if (r3 >= fp) {
0x00055570 movlt ip, r5 |
| }
| label_41:
0x00055572 adds r5, 1 | r5++;
0x00055574 add.w lr, lr, 4 | lr += 4;
0x00055578 cmp r5, r6 |
0x0005557a bne 0x55558 |
| } while (r5 != r6);
0x0005557c add.w r3, ip, 2 | r3 = ip + 2;
0x00055580 str r7, [sp, 0x14] | var_14h = r7;
0x00055582 ldr.w r5, [r1, r3, lsl 2] | offset_1 = r3 << 2;
| r5 = *((r1 + offset_1));
0x00055586 add.w r3, r1, r3, lsl 2 | r3 = r1 + (r3 << 2);
0x0005558a rev r5, r5 | r5 = SWAP32 (r5);
0x0005558c b 0x55402 | goto label_7;
| label_32:
0x0005558e ldr.w r2, [fp, 0x38] | r2 = *(arg_38h);
0x00055592 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00055594 str r0, [sp, 0x2c] | var_2ch = r0;
0x00055596 str r1, [r3] | *(r3) = r1;
0x00055598 ldr.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x0005559c ldr r2, [r2] | r2 = *(r2);
0x0005559e str r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
0x000555a0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000555a2 str.w fp, [r3] | __asm ("str.w fp, [r3]");
| label_26:
0x000555a6 mov r2, sl | r2 = sl;
0x000555a8 cmp.w sl, 0 |
| if (sl == 0) {
0x000555ac beq.w 0x55218 | goto label_0;
| }
0x000555b0 movs r2, 0 | r2 = 0;
0x000555b2 b 0x5520c | goto label_4;
| label_24:
0x000555b4 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x000555b8 ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x000555ba rev r1, r5 | r5 = SWAP32 (r1);
0x000555bc cmp sb, r1 |
| if (sb <= r1) {
0x000555be blo.w 0x55738 | goto label_42;
| }
0x000555c2 mov r3, r0 | r3 = r0;
0x000555c4 add r2, sp, 0x30 | r2 += var_30h;
0x000555c6 mov r0, r4 | r0 = r4;
0x000555c8 bl 0x24d98 | r0 = fcn_00024d98 (r0, r1, r2);
0x000555cc mov r2, r0 | r2 = r0;
0x000555ce cmp r0, 0 |
| if (r0 != 0) {
0x000555d0 bne.w 0x5545a | goto label_6;
| }
0x000555d4 ldr r4, [sp, 0x30] | r4 = var_30h;
0x000555d6 ldr r0, [r4, 0x48] | r0 = *((r4 + 0x48));
0x000555d8 bl 0x51680 | r0 = fcn_00051680 (r0);
0x000555dc cmp r0, 0 |
| if (r0 != 0) {
0x000555de bne.w 0x5572c | goto label_43;
| }
0x000555e2 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x000555e6 subs r2, r6, 1 | r2 = r6 - 1;
0x000555e8 ldr r1, [r3] | r1 = *(r3);
0x000555ea ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x000555ec str r1, [r3] | *(r3) = r1;
0x000555ee rev r1, r2 | r2 = SWAP32 (r1);
0x000555f0 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x000555f2 lsls r2, r2, 2 | r2 <<= 2;
0x000555f4 str r1, [r3, 4] | *((r3 + 4)) = r1;
0x000555f6 ldr r0, [r4, 0x38] | r0 = *((r4 + 0x38));
0x000555f8 ldr.w r1, [fp, 0x38] | r1 = *(arg_38h);
0x000555fc adds r0, 8 | r0 += 8;
0x000555fe adds r1, 0xc | r1 += 0xc;
0x00055600 blx 0x7dcc | fcn_00007dcc ();
0x00055604 ldr r0, [r4, 0x48] | r0 = *((r4 + 0x48));
0x00055606 bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005560a cmp.w sl, 0 |
| if (sl == 0) {
0x0005560e beq 0x55644 | goto label_44;
| }
0x00055610 ldr.w r0, [sl, 0x48] | r0 = *((sl + 0x48));
0x00055614 bl 0x51680 | r0 = fcn_00051680 (r0);
0x00055618 mov r2, r0 | r2 = r0;
0x0005561a cmp r0, 0 |
| if (r0 != 0) {
0x0005561c bne.w 0x5545a | goto label_6;
| }
0x00055620 ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x00055624 str r5, [r3] | *(r3) = r5;
0x00055626 b 0x553e6 | goto label_8;
| label_36:
0x00055628 mov r1, r5 | r1 = r5;
0x0005562a bl 0x9154 | r0 = fcn_00009154 (r0, r1, r2);
0x0005562e clz r2, r0 | r2 &= r0;
0x00055632 lsrs r2, r2, 5 | r2 >>= 5;
0x00055634 b 0x554ca | goto label_9;
| label_25:
0x00055636 ldr.w r2, [fp, 0x38] | r2 = *(arg_38h);
0x0005563a ldr.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x0005563e ldr r2, [r2] | r2 = *(r2);
0x00055640 str r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
0x00055642 b 0x553e6 | goto label_8;
| label_44:
0x00055644 ldr.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x00055648 str r5, [r3, 0x20] | *((r3 + 0x20)) = r5;
0x0005564a b 0x553e6 | goto label_8;
| label_31:
0x0005564c ldr.w r0, [sl, 0x48] | r0 = *((sl + 0x48));
0x00055650 str r2, [sp, 0x24] | var_24h = r2;
0x00055652 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00055656 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00055658 b 0x55436 | goto label_5;
| label_35:
0x0005565a movs r2, 1 | r2 = 1;
0x0005565c b 0x554ca | goto label_9;
| label_38:
0x0005565e add.w lr, r1, 8 | lr = r1 + 8;
0x00055662 ldr r7, [sp, 0x14] | r7 = var_14h;
0x00055664 mov.w ip, 0 |
0x00055668 mov r3, lr | r3 = lr;
0x0005566a b 0x55676 |
| while (r7 <= r5) {
0x0005566c add.w ip, ip, 1 |
0x00055670 adds r3, 4 | r3 += 4;
0x00055672 cmp ip, r6 |
| if (ip == r6) {
0x00055674 beq 0x556d0 | goto label_45;
| }
0x00055676 ldr r5, [r3] | r5 = *(r3);
0x00055678 rev r5, r5 | r5 = SWAP32 (r5);
0x0005567a cmp r7, r5 |
0x0005567c blo 0x5566c |
| }
0x0005567e str r7, [sp, 0x14] | var_14h = r7;
0x00055680 b 0x55402 | goto label_7;
| label_20:
0x00055682 movs r3, 0 | r3 = 0;
0x00055684 add r2, sp, 0x30 | r2 += var_30h;
0x00055686 str r3, [sp, 0x30] | var_30h = r3;
0x00055688 mov r1, r5 | r1 = r5;
0x0005568a mov r3, r7 | r3 = r7;
0x0005568c mov r0, r4 | r0 = r4;
0x0005568e bl 0x24d98 | r0 = fcn_00024d98 (r0, r1, r2);
0x00055692 mov r2, r0 | r2 = r0;
0x00055694 cmp r0, 0 |
| if (r0 != 0) {
0x00055696 bne.w 0x55218 | goto label_0;
| }
0x0005569a ldr r5, [sp, 0x30] | r5 = var_30h;
0x0005569c ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x0005569e bl 0x51680 | fcn_00051680 (r0);
0x000556a2 str r0, [sp, 8] | var_8h = r0;
0x000556a4 ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x000556a6 bl 0x11fa4 | fcn_00011fa4 (r0);
0x000556aa ldr r2, [sp, 8] | r2 = var_8h;
0x000556ac cmp r2, 0 |
| if (r2 != 0) {
0x000556ae bne.w 0x55218 | goto label_0;
| }
0x000556b2 ldr r6, [r4, 0x30] | r6 = *((r4 + 0x30));
0x000556b4 ldr r3, [pc, 0xe8] |
0x000556b6 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x000556b8 adds r5, r6, 1 | r5 = r6 + 1;
0x000556ba add r3, pc | r3 = 0xaae5e;
0x000556bc str r5, [r4, 0x30] | *((r4 + 0x30)) = r5;
0x000556be ldr.w r0, [r3, 0x118] | r0 = *(0xaaf76);
0x000556c2 bl 0xab680 | r0 = fcn_000ab680 (r0, r1, r2);
0x000556c6 cmp r6, r0 |
0x000556c8 itt eq |
| if (r6 != r0) {
0x000556ca addeq r5, r6, 2 | r5 = r6 + 2;
| }
| if (r6 != r0) {
0x000556cc streq r5, [r4, 0x30] | *((r4 + 0x30)) = r5;
| }
0x000556ce b 0x552ae | goto label_10;
| label_45:
0x000556d0 ldr r5, [r1, 8] | r5 = *((r1 + 8));
0x000556d2 mov r3, lr | r3 = lr;
0x000556d4 mov.w ip, 0 |
0x000556d8 str r7, [sp, 0x14] | var_14h = r7;
0x000556da rev r5, r5 | r5 = SWAP32 (r5);
0x000556dc b 0x55402 | goto label_7;
| label_22:
0x000556de mov fp, r2 |
0x000556e0 blx 0x7f8c | fcn_00007f8c ();
0x000556e4 ldr r2, [pc, 0xbc] |
0x000556e6 adds r0, 0x14 | r0 += 0x14;
0x000556e8 ldr r1, [pc, 0xbc] |
0x000556ea mov.w r3, 0x1760 | r3 = 0x1760;
0x000556ee str r0, [sp] | *(sp) = r0;
0x000556f0 movt r3, 1 | r3 = (r3 & 0xFFFF) | 0x10000;
0x000556f4 add r2, pc | r2 = 0xaae9c;
0x000556f6 movs r0, 0xb | r0 = 0xb;
0x000556f8 add r1, pc | r1 = 0xaaea4;
0x000556fa blx 0x8474 | fcn_00008474 ();
0x000556fe movs r2, 0xb | r2 = 0xb;
0x00055700 b 0x5545a | goto label_6;
| label_39:
0x00055702 mvn fp, 0x80000000 |
0x00055706 b 0x5553c | goto label_11;
| label_29:
0x00055708 mov fp, r2 |
0x0005570a blx 0x7f8c | fcn_00007f8c ();
0x0005570e ldr r2, [pc, 0x9c] |
0x00055710 adds r0, 0x14 | r0 += 0x14;
0x00055712 ldr r1, [pc, 0x9c] |
0x00055714 movw r3, 0x17c3 |
0x00055718 str r0, [sp] | *(sp) = r0;
0x0005571a movt r3, 1 | r3 = 0x117c3;
0x0005571e add r2, pc | r2 = 0xaaed0;
0x00055720 movs r0, 0xb | r0 = 0xb;
0x00055722 add r1, pc | r1 = 0xaaed8;
0x00055724 blx 0x8474 | fcn_00008474 ();
0x00055728 movs r2, 0xb | r2 = 0xb;
0x0005572a b 0x5545a | goto label_6;
| label_43:
0x0005572c str r0, [sp, 8] | var_8h = r0;
0x0005572e ldr r0, [r4, 0x48] | r0 = *((r4 + 0x48));
0x00055730 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00055734 ldr r2, [sp, 8] | r2 = var_8h;
0x00055736 b 0x5545a | goto label_6;
| label_42:
0x00055738 blx 0x7f8c | fcn_00007f8c ();
0x0005573c ldr r2, [pc, 0x74] |
0x0005573e adds r0, 0x14 | r0 += 0x14;
0x00055740 ldr r1, [pc, 0x74] |
0x00055742 movw r3, 0x1782 |
0x00055746 str r0, [sp] | *(sp) = r0;
0x00055748 movt r3, 1 | r3 = 0x11782;
0x0005574c add r2, pc | r2 = 0xaaf04;
0x0005574e movs r0, 0xb | r0 = 0xb;
0x00055750 add r1, pc | r1 = 0xaaf0c;
0x00055752 blx 0x8474 | fcn_00008474 ();
0x00055754 cdp p2, 9, c2, c0, c11, 0 | __asm ("cdp p2, 9, c2, c0, c11, 0");
0x00055758 b 0x5545a | goto label_6;
| label_21:
0x0005575a mov r2, r0 | r2 = r0;
0x0005575c cmp.w sl, 0 |
| if (sl != 0) {
0x00055760 bne.w 0x5520c | goto label_4;
| }
0x00055764 b 0x55218 | goto label_0;
| label_18:
0x00055766 blx 0x7e8c | fcn_00007e8c ();
| label_33:
0x0005576a ldr.w r0, [sl, 0x48] | r0 = *((sl + 0x48));
0x0005576e str r2, [sp, 0x24] | var_24h = r2;
0x00055770 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00055774 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00055776 cmp.w fp, 0 |
| if (fp != 0) {
0x0005577a bne.w 0x55436 | goto label_5;
| }
0x0005577e b 0x5547e | 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/libsqlite3.so.0.8.6 @ 0x56ac4 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
| #define SWAP64(val) ((uint64_t) (((val & 0x00000000000000ffull) << 56) | \
| ((val & 0x000000000000ff00ull) << 40) | \
| ((val & 0x0000000000ff0000ull) << 24) | \
| ((val & 0x00000000ff000000ull) << 8) | \
| ((val & 0x000000ff00000000ull) >> 8) | \
| ((val & 0x0000ff0000000000ull) >> 24) | \
| ((val & 0x00ff000000000000ull) >> 40) | \
| ((val & 0xff00000000000000ull) >> 56)))
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00056ac4 () | void fcn_00056ac4 (int16_t arg_1h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_2h;
| int16_t var_2h_2;
| int16_t var_sp_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch_2;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_a4h;
| int16_t var_ach;
| int16_t var_aeh;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_c8h;
| int16_t var_d8h;
| int16_t var_ech;
| int16_t var_100h;
| int16_t var_114h;
| int16_t var_118h;
| int16_t var_128h;
| int16_t var_12ch;
| int16_t var_13ch;
| int16_t var_140h;
| int16_t var_144h;
| int16_t var_148h;
| int16_t var_14ch;
| int16_t var_164h;
| int16_t var_168h;
| int16_t var_17ch;
| int16_t var_180h;
| int16_t var_184h;
| int16_t var_188h;
| int16_t var_1b0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00056ac4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00056ac8 sub sp, 0x18c |
0x00056aca strd r1, r3, [sp, 0x58] | __asm ("strd r1, r3, [sp, 0x58]");
0x00056ace mov r5, r1 | r5 = r1;
0x00056ad0 mov sl, r0 | sl = r0;
0x00056ad2 add.w fp, sp, 0x80 |
0x00056ad6 ldr.w r1, [pc, 0xb34] |
0x00056ada ldr.w r3, [pc, 0xb34] | r3 = *(0x57612);
0x00056ade ldr r0, [r0, 0x34] | r0 = *(var_0hx34);
0x00056ae0 add r1, pc | r1 = 0xae0f2;
0x00056ae2 ldr r3, [r1, r3] |
0x00056ae4 ldr r3, [r3] | r3 = *(0xae0f2);
0x00056ae6 str r3, [sp, 0x184] | var_184h = r3;
0x00056ae8 mov.w r3, 0 | r3 = 0;
0x00056aec movs r3, 0 | r3 = 0;
0x00056aee strb.w r3, [sp, 0x180] | var_180h = r3;
0x00056af2 str r3, [sp, 0x17c] | var_17ch = r3;
0x00056af4 str r3, [sp, 0x13c] | var_13ch = r3;
0x00056af6 str r3, [sp, 0x144] | var_144h = r3;
0x00056af8 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x00056afc str r0, [sp, 0x40] | var_40h = r0;
0x00056afe str r2, [sp, 0x34] | var_34h = r2;
0x00056b00 cmp r2, 0 |
| if (r2 == 0) {
0x00056b02 beq.w 0x5729c | goto label_51;
| }
0x00056b06 ldrb.w r1, [sl, 0xc] | r1 = *((sl + 0xc));
0x00056b0a ldrh.w r0, [sl, 0x18] | r0 = *((sl + 0x18));
0x00056b0e adds r2, r1, r0 | r2 = r1 + r0;
0x00056b10 cmp r2, 1 |
| if (r2 <= 1) {
0x00056b12 ble.w 0x56ff0 | goto label_52;
| }
0x00056b16 ldr r4, [sp, 0x1b0] | r4 = var_1b0h;
0x00056b18 rsb.w r4, r4, 2 | r4 = 2 - r4;
0x00056b1c str r4, [sp, 0x30] | var_30h = r4;
0x00056b1e cmp r5, 0 |
| if (r5 != 0) {
0x00056b20 bne.w 0x56cae | goto label_53;
| }
0x00056b24 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00056b26 ldr r2, [sp, 0x58] | r2 = var_58h;
0x00056b28 str r2, [sp, 0x24] | var_24h = r2;
| label_0:
0x00056b2a subs r3, r3, r1 | r3 -= r1;
0x00056b2c ldr.w r1, [sl, 0x38] | r1 = *((sl + 0x38));
0x00056b30 cmp r0, r3 |
| if (r0 == r3) {
0x00056b32 beq.w 0x57950 | goto label_54;
| }
0x00056b36 ldr.w r2, [sl, 0x40] | r2 = *((sl + 0x40));
0x00056b3a ldrh.w r2, [r2, r3, lsl 1] | offset_0 = r3 << 1;
| r2 = *((r2 + offset_0));
0x00056b3e ldrh.w r3, [sl, 0x1a] | r3 = *((sl + 0x1a));
0x00056b42 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x00056b44 ands r3, r2 | r3 &= r2;
0x00056b46 adds r3, r1, r3 | r3 = r1 + r3;
0x00056b48 str r3, [sp, 0x4c] | var_4ch = r3;
| label_11:
0x00056b4a ldr r4, [sp, 0x30] | r4 = var_30h;
0x00056b4c add r2, sp, 0x84 | r2 += var_84h;
0x00056b4e ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00056b50 add r0, sp, 0x100 | r0 += var_100h;
0x00056b52 ldr.w sb, [sp, 0x40] | sb = var_40h;
0x00056b56 add r5, sp, 0xb8 | r5 += var_b8h;
0x00056b58 str r2, [sp, 0x18] | var_18h = r2;
0x00056b5a add r2, sp, 0xa4 | r2 += var_a4h;
0x00056b5c ldr r1, [r3] | r1 = *(r3);
0x00056b5e lsls r3, r4, 2 | r3 = r4 << 2;
0x00056b60 str r5, [sp, 0x28] | var_28h = r5;
0x00056b62 adds r7, r2, r3 | r7 = r2 + r3;
0x00056b64 add.w r8, r0, r3 | r8 = r0 + r3;
0x00056b68 add r5, r3 | r5 += r3;
0x00056b6a rev r1, r1 | r1 = SWAP32 (r1);
0x00056b6c str r3, [sp, 0x60] | var_60h = r3;
0x00056b6e str r1, [sp, 0x84] | var_84h = r1;
0x00056b70 str r2, [sp, 0x38] | var_38h = r2;
0x00056b72 str r0, [sp, 0x50] | var_50h = r0;
| label_2:
0x00056b74 movs r3, 0 | r3 = 0;
0x00056b76 mov r2, r5 | r2 = r5;
0x00056b78 str r3, [sp] | *(sp) = r3;
0x00056b7a mov r0, sb | r0 = sb;
0x00056b7c bl 0x25034 | fcn_00025034 (r0, r1, r2, r3, r4);
0x00056b80 lsls r3, r4, 2 | r3 = r4 << 2;
0x00056b82 mov r6, r0 | r6 = r0;
0x00056b84 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x00056b88 str r3, [sp, 0x20] | var_20h = r3;
0x00056b8a cmp r0, 0 |
| if (r0 != 0) {
0x00056b8c bne.w 0x574e4 | goto label_55;
| }
0x00056b90 ldr r0, [r5], -4 | r0 = *(r5);
| r5 += -4;
0x00056b94 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x00056b96 cmp r3, 0 |
| if (r3 < 0) {
0x00056b98 blt.w 0x56cec | goto label_56;
| }
| label_3:
0x00056b9c subs r4, 1 | r4--;
| if (r4 <= 1) {
0x00056b9e blo.w 0x56d32 | goto label_57;
| }
0x00056ba2 ldrb.w r1, [sl, 0xc] | r1 = *((sl + 0xc));
0x00056ba6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00056ba8 ldr.w r2, [sl, 0x4c] | r2 = *((sl + 0x4c));
0x00056bac ldr.w r6, [fp] | r6 = *(fp);
0x00056bb0 adds r3, r4, r3 | r3 = r4 + r3;
| if (r1 != 0) {
0x00056bb2 cbz r1, 0x56bbe |
0x00056bb4 ldrh.w r0, [sl, 0x1c] | r0 = *((sl + 0x1c));
0x00056bb8 cmp r0, r3 |
| if (r0 == r3) {
0x00056bba beq.w 0x56d10 | goto label_58;
| }
| }
0x00056bbe ldr.w r0, [sl, 0x40] | r0 = *((sl + 0x40));
0x00056bc2 subs r1, r3, r1 | r1 = r3 - r1;
0x00056bc4 ldrh.w ip, [sl, 0x1a] | ip = *((sl + 0x1a));
0x00056bc8 str r3, [sp, 0x14] | var_14h = r3;
0x00056bca ldrh.w r1, [r0, r1, lsl 1] | offset_1 = r1 << 1;
| r1 = *((r0 + offset_1));
0x00056bce mov r0, sl | r0 = sl;
0x00056bd0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00056bd2 rev16 r1, r1 | __asm ("rev16 r1, r1");
0x00056bd4 and.w ip, ip, r1 |
0x00056bd8 ldr.w r1, [sl, 0x38] | r1 = *((sl + 0x38));
0x00056bdc ldr.w lr, [r1, ip] |
0x00056be0 add r1, ip | r1 += ip;
0x00056be2 str r1, [r7, -0x4] | *((r7 - 0x4)) = r1;
0x00056be6 str r1, [sp, 0x1c] | var_1ch_2 = r1;
0x00056be8 rev.w lr, lr | lr = SWAPundefined (lr);
0x00056bec str.w lr, [r3] | __asm ("str.w lr, [r3]");
0x00056bf0 blx r2 | r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00056bf2 mov r2, r0 | r2 = r0;
0x00056bf4 str r0, [r8, -0x4] | *((r8 - 0x4)) = r0;
0x00056bf8 ldrh.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x00056bfc ldr r3, [sp, 0x14] | r3 = var_14h;
0x00056bfe and r0, r0, 0xc | r0 &= 0xc;
| if (r0 != 0) {
0x00056c02 cbz r0, 0x56c1a |
0x00056c04 ldr.w r0, [sl, 0x38] | r0 = *((sl + 0x38));
0x00056c08 ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00056c0a sub.w lr, r1, r0 | lr = r1 - r0;
0x00056c0e ldr.w r0, [sb, 0x28] | r0 = *((sb + 0x28));
0x00056c12 add.w ip, r2, lr |
0x00056c16 cmp ip, r0 |
| if (ip <= r0) {
0x00056c18 ble 0x56cc0 | goto label_59;
| }
| }
| if (r6 == 0) {
| label_1:
0x00056c1a cbnz r6, 0x56c38 |
0x00056c1c ldrb.w r1, [sl, 0xc] | r1 = *((sl + 0xc));
0x00056c20 mov r0, sl | r0 = sl;
0x00056c22 subs r1, r3, r1 | r1 = r3 - r1;
0x00056c24 mov r3, fp | r3 = fp;
0x00056c26 bl 0x333e0 | fcn_000333e0 (r0, r1, r2, r3);
0x00056c2a ldr.w r6, [fp] | r6 = *(fp);
| label_5:
0x00056c2e subs r7, 4 | r7 -= 4;
0x00056c30 sub.w r8, r8, 4 | r8 -= 4;
0x00056c34 cmp r6, 0 |
| if (r6 == 0) {
0x00056c36 beq 0x56ce6 | goto label_60;
| }
| }
| label_25:
0x00056c38 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00056c3a movs r3, 0xc | r3 = 0xc;
0x00056c3c ldr r2, [sp, 0x20] | r2 = var_20h;
0x00056c3e ldr r0, [sp, 0x28] | r0 = var_28h;
0x00056c40 adds r1, 1 | r1++;
0x00056c42 str r1, [sp, 0x44] | var_44h = r1;
0x00056c44 movs r1, 0 | r1 = 0;
0x00056c46 blx 0x7df0 | fcn_00007df0 ();
0x00056c4a movs r3, 0 | r3 = 0;
0x00056c4c str r3, [sp, 0x48] | var_48h = r3;
| label_4:
0x00056c4e ldr r0, [sp, 0x144] | r0 = var_144h;
| if (r0 != 0) {
0x00056c50 cbz r0, 0x56c56 |
0x00056c52 blx 0x84f8 | fcn_000084f8 ();
| }
0x00056c56 ldr.w r5, [fp] | r5 = *(fp);
| label_19:
0x00056c5a ldr r6, [sp, 0x28] | r6 = var_28h;
0x00056c5c movs r4, 0 | r4 = 0;
0x00056c5e ldr r7, [sp, 0x44] | r7 = var_44h;
| do {
0x00056c60 ldr r3, [r6], 4 | r3 = *(r6);
| r6 += 4;
| if (r3 != 0) {
0x00056c64 cbz r3, 0x56c6c |
0x00056c66 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00056c68 bl 0x11fa4 | fcn_00011fa4 (r0);
| }
0x00056c6c adds r4, 1 | r4++;
0x00056c6e cmp r4, r7 |
0x00056c70 bne 0x56c60 |
| } while (r4 != r7);
0x00056c72 ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 == 0) {
0x00056c74 cbz r3, 0x56c8c | goto label_17;
| }
0x00056c76 add r4, sp, 0xc4 | r4 += var_c4h;
0x00056c78 add.w r6, r4, r3, lsl 2 | r6 = r4 + (r3 << 2);
| do {
0x00056c7c ldr r3, [r4], 4 | r3 = *(r4);
| r4 += 4;
| if (r3 != 0) {
0x00056c80 cbz r3, 0x56c88 |
0x00056c82 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00056c84 bl 0x11fa4 | fcn_00011fa4 (r0);
| }
0x00056c88 cmp r6, r4 |
0x00056c8a bne 0x56c7c |
| } while (r6 != r4);
| label_17:
0x00056c8c ldr.w r2, [pc, 0x984] |
0x00056c90 ldr.w r3, [pc, 0x97c] | r3 = *(0x57610);
0x00056c94 add r2, pc | r2 = 0xae2ac;
0x00056c96 ldr r3, [r2, r3] | r3 = *(0xae2ac);
0x00056c98 ldr r2, [r3] | r2 = *(0xae2ac);
0x00056c9a ldr r3, [sp, 0x184] | r3 = var_184h;
0x00056c9c eors r2, r3 | r2 ^= r3;
0x00056c9e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00056ca2 bne.w 0x574ec | goto label_61;
| }
0x00056ca6 mov r0, r5 | r0 = r5;
0x00056ca8 add sp, 0x18c |
0x00056caa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_53:
0x00056cae cmp r2, r5 |
| if (r2 == r5) {
0x00056cb0 beq.w 0x57004 | goto label_62;
| }
0x00056cb4 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00056cb6 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00056cb8 subs r3, 1 | r3--;
0x00056cba str r3, [sp, 0x24] | var_24h = r3;
0x00056cbc add r3, r2 | r3 += r2;
0x00056cbe b 0x56b2a | goto label_0;
| label_59:
0x00056cc0 str r3, [sp, 0x2c] | var_2ch = r3;
0x00056cc2 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00056cc4 str r2, [sp, 0x1c] | var_1ch_2 = r2;
0x00056cc6 str r1, [sp, 0x14] | var_14h = r1;
0x00056cc8 add.w r0, lr, r3 | r0 = lr + r3;
0x00056ccc blx 0x7dcc | fcn_00007dcc ();
0x00056cd0 ldr.w r0, [sl, 0x38] | r0 = *((sl + 0x38));
0x00056cd4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00056cd6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00056cd8 ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x00056cda subs r1, r1, r0 | r1 -= r0;
0x00056cdc add r1, r3 | r1 += r3;
0x00056cde ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00056ce0 str r1, [r7, -0x4] | *((r7 - 0x4)) = r1;
0x00056ce4 b 0x56c1a | goto label_1;
| label_60:
0x00056ce6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00056ce8 ldr r1, [r3] | r1 = *(r3);
0x00056cea b 0x56b74 | goto label_2;
| label_56:
0x00056cec bl 0x2ead0 | fcn_0002ead0 (r0);
0x00056cf0 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x00056cf4 cmp r0, 0 |
| if (r0 == 0) {
0x00056cf6 beq.w 0x56b9c | goto label_3;
| }
0x00056cfa ldr r3, [sp, 0x30] | r3 = var_30h;
0x00056cfc mov r1, r6 | r1 = r6;
0x00056cfe ldr r2, [sp, 0x20] | r2 = var_20h;
0x00056d00 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00056d02 adds r3, 1 | r3++;
0x00056d04 str r6, [sp, 0x48] | var_48h = r6;
0x00056d06 str r3, [sp, 0x44] | var_44h = r3;
0x00056d08 movs r3, 0xc | r3 = 0xc;
0x00056d0a blx 0x7df0 | fcn_00007df0 ();
0x00056d0e b 0x56c4e | goto label_4;
| label_58:
0x00056d10 ldr.w r1, [sl, 0x24] | r1 = *((sl + 0x24));
0x00056d14 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00056d16 ldr r3, [r1] | r3 = *(r1);
0x00056d18 str r1, [r7, -0x4] | *((r7 - 0x4)) = r1;
0x00056d1c rev r3, r3 | r3 = SWAP32 (r3);
0x00056d1e str r3, [r0] | *(r0) = r3;
0x00056d20 mov r0, sl | r0 = sl;
0x00056d22 blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00056d24 mov.w r3, 0 | r3 = 0;
0x00056d28 str r0, [r8, -0x4] | *((r8 - 0x4)) = r0;
0x00056d2c strb.w r3, [sl, 0xc] | *((sl + 0xc)) = r3;
0x00056d30 b 0x56c2e | goto label_5;
| label_57:
0x00056d32 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00056d34 movw r1, 0xaaab |
0x00056d38 ldr r2, [sp, 0x30] | r2 = var_30h;
| /* if there is a right shift of 1, then it's a division by 1/3 */
0x00056d3a movt r1, 0xaaaa | r1 = 0xaaaaaaab;
0x00056d3e str r6, [sp, 0x48] | var_48h = r6;
0x00056d40 ldr r0, [r3, 0x24] | r0 = *((r3 + 0x24));
0x00056d42 adds r3, r2, 1 | r3 = r2 + 1;
0x00056d44 str r3, [sp, 0x44] | var_44h = r3;
0x00056d46 sub.w r3, r0, 8 | r3 = r0 - 8;
0x00056d4a umull r1, r3, r1, r3 | r1:r3 = r1 * r3;
0x00056d4e lsrs r3, r3, 2 | r3 >>= 2;
0x00056d50 adds r3, 4 | r3 += 4;
0x00056d52 mla r3, r2, r3, r3 | __asm ("mla r3, r2, r3, r3");
0x00056d56 adds r4, r3, 3 | r4 = r3 + 3;
0x00056d58 bic r4, r4, 3 | r4 = BIT_MASK (r4, 3);
0x00056d5c lsls r5, r4, 1 | r5 = r4 << 1;
0x00056d5e adds r3, r5, r4 | r3 = r5 + r4;
0x00056d60 add.w r0, r0, r3, lsl 1 | r0 += (r3 << 1);
0x00056d64 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00056d66 bl 0x12abc | fcn_00012abc (r0);
0x00056d6a ldr r3, [sp, 0xb8] | r3 = var_b8h;
0x00056d6c str r0, [sp, 0x144] | var_144h = r0;
0x00056d6e str r3, [sp, 0x64] | var_64h = r3;
0x00056d70 cmp r0, 0 |
| if (r0 == 0) {
0x00056d72 beq.w 0x572e4 | goto label_63;
| }
0x00056d76 ldr r1, [sp, 0x64] | r1 = var_64h;
0x00056d78 add.w r0, r0, r4, lsl 2 | r0 += (r4 << 2);
0x00056d7c ldr.w sb, [sp, 0x30] | sb = var_30h;
0x00056d80 adds r3, r0, r5 | r3 = r0 + r5;
0x00056d82 str r0, [sp, 0x148] | var_148h = r0;
0x00056d84 str r3, [sp, 0x2c] | var_2ch = r3;
0x00056d86 mov r6, r1 | r6 = r1;
0x00056d88 ldrb r3, [r1, 8] | r3 = *((r1 + 8));
0x00056d8a str r1, [sp, 0x140] | var_140h = r1;
0x00056d8c ldrb r2, [r1, 3] | r2 = *((r1 + 3));
0x00056d8e str.w sl, [sp, 0x68] | __asm ("str.w sl, [var_68h]");
0x00056d92 mov sl, r1 | sl = r1;
0x00056d94 lsls r3, r3, 2 | r3 <<= 2;
0x00056d96 str.w fp, [sp, 0x3c] | __asm ("str.w fp, [var_3ch]");
0x00056d9a str r2, [sp, 0x14] | var_14h = r2;
0x00056d9c movs r2, 0 | r2 = 0;
0x00056d9e mov r8, r2 | r8 = r2;
0x00056da0 str r3, [sp, 0x54] | var_54h = r3;
0x00056da2 add r3, sp, 0xec | r3 += var_ech;
0x00056da4 str r2, [sp, 0x1c] | var_1ch_2 = r2;
0x00056da6 str r3, [sp, 0x20] | var_20h = r3;
| label_6:
0x00056da8 ldr r4, [r6, 0x38] | r4 = *((r6 + 0x38));
0x00056daa ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x00056dae ldrh r7, [r6, 0x12] | r7 = *((r6 + 0x12));
0x00056db0 ldrb r2, [r4] | r2 = *(r4);
0x00056db2 ldrb r3, [r3] | r3 = *(r3);
0x00056db4 ldrh.w fp, [r6, 0x18] | fp = *((r6 + 0x18));
0x00056db8 add r7, r4 | r7 += r4;
0x00056dba ldrh r5, [r6, 0x1a] | r5 = *((r6 + 0x1a));
0x00056dbc cmp r2, r3 |
| if (r2 != r3) {
0x00056dbe bne.w 0x57248 | goto label_64;
| }
0x00056dc2 ldrb r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00056dc4 movs r1, 0 | r1 = 0;
0x00056dc6 ldr r0, [sp, 0x13c] | r0 = var_13ch;
0x00056dc8 ldr r3, [sp, 0x148] | r3 = var_148h;
0x00056dca add r2, fp | r2 += fp;
0x00056dcc lsls r2, r2, 1 | r2 <<= 1;
0x00056dce add.w r0, r3, r0, lsl 1 | r0 = r3 + (r0 << 1);
0x00056dd0 lsls r0, r0, 1 | r0 <<= 1;
0x00056dd2 blx 0x8264 | fcn_00008264 ();
0x00056dd6 ldrb.w ip, [r6, 0xc] | ip = *((r6 + 0xc));
0x00056dda cmp.w ip, 0 |
| if (ip != 0) {
0x00056dde bne 0x56e4a | goto label_65;
| }
0x00056de0 ldr r2, [sp, 0x13c] | r2 = var_13ch;
| label_7:
0x00056de2 ldrh r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x00056de4 ldrh.w ip, [r6, 0x12] | ip = *((r6 + 0x12));
0x00056de8 add.w ip, ip, r3, lsl 1 |
0x00056dec add ip, r4 |
0x00056dee cmp r7, ip |
| if (r7 >= ip) {
0x00056df0 bhs 0x56e1e | goto label_66;
| }
0x00056df2 ldr r0, [sp, 0x144] | r0 = var_144h;
0x00056df4 mov r1, r7 | r1 = r7;
0x00056df6 add.w r0, r0, r2, lsl 2 | r0 += (r2 << 2);
| do {
0x00056dfa ldrh r3, [r1], 2 | r3 = *(r1);
| r1 += 2;
0x00056dfe rev16 r3, r3 | __asm ("rev16 r3, r3");
0x00056e00 cmp ip, r1 |
0x00056e02 and.w r3, r3, r5 | r3 &= r5;
0x00056e06 add r3, r4 | r3 += r4;
0x00056e08 str r3, [r0], 4 | *(r0) = r3;
| r0 += 4;
0x00056e0c bhi 0x56dfa |
| } while (ip > r1);
0x00056e0e add.w ip, ip, -1 |
0x00056e12 adds r2, 1 | r2++;
0x00056e14 sub.w ip, ip, r7 |
0x00056e18 add.w r2, r2, ip, lsr 1 | r2 += (ip >> 1);
0x00056e1c str r2, [sp, 0x13c] | var_13ch = r2;
| label_66:
0x00056e1e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00056e20 str.w r2, [r3, r8, lsl 2] | __asm ("str.w r2, [r3, r8, lsl 2]");
0x00056e24 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00056e26 clz r4, r3 | r4 &= r3;
0x00056e2a lsrs r4, r4, 5 | r4 >>= 5;
0x00056e2c cmp sb, r8 |
0x00056e2e ite le |
| if (sb > r8) {
0x00056e30 movle r3, 0 | r3 = 0;
| }
| if (sb <= r8) {
0x00056e32 andgt r3, r4, 1 | r3 = r4 & 1;
| }
| if (r3 != 0) {
0x00056e36 cbnz r3, 0x56ea0 | goto label_67;
| }
0x00056e38 cmp sb, r8 |
0x00056e3a add.w r3, r8, 1 | r3 = r8 + 1;
| if (sb == r8) {
0x00056e3e beq 0x56efe | goto label_68;
| }
| label_8:
0x00056e40 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00056e42 mov r8, r3 | r8 = r3;
0x00056e44 ldr.w r6, [r2, r3, lsl 2] | offset_2 = r3 << 2;
| r6 = *((r2 + offset_2));
0x00056e48 b 0x56da8 | goto label_6;
| label_65:
0x00056e4a ldrh.w lr, [r6, 0x1c] |
0x00056e4e cmp fp, lr |
| if (fp <= lr) {
0x00056e50 blo.w 0x572ec | goto label_69;
| }
0x00056e54 ldr.w fp, [sp, 0x144] | fp = var_144h;
0x00056e58 ldr r2, [sp, 0x13c] | r2 = var_13ch;
0x00056e5a cmp.w lr, 0 |
| if (lr == 0) {
0x00056e5e beq 0x56e80 | goto label_70;
| }
0x00056e60 mov r1, r7 | r1 = r7;
0x00056e62 add.w r0, fp, r2, lsl 2 | r0 = fp + (r2 << 2);
0x00056e66 add.w r7, r7, lr, lsl 1 | r7 += (lr << 1);
| do {
0x00056e6a ldrh r3, [r1], 2 | r3 = *(r1);
| r1 += 2;
0x00056e6e rev16 r3, r3 | __asm ("rev16 r3, r3");
0x00056e70 cmp r7, r1 |
0x00056e72 and.w r3, r3, r5 | r3 &= r5;
0x00056e76 add r3, r4 | r3 += r4;
0x00056e78 str r3, [r0], 4 | *(r0) = r3;
| r0 += 4;
0x00056e7c bne 0x56e6a |
| } while (r7 != r1);
0x00056e7e add r2, lr | r2 += lr;
| label_70:
0x00056e80 add.w r3, r6, 0x24 | r3 = r6 + 0x24;
0x00056e84 movs r1, 4 | r1 = 4;
0x00056e86 add.w fp, fp, r2, lsl 2 |
0x00056e8a smlabb r0, r1, ip, r3 | __asm ("smlabb r0, r1, ip, r3");
| do {
0x00056e8e ldr r1, [r3], 4 | r1 = *(r3);
| r3 += 4;
0x00056e92 cmp r0, r3 |
0x00056e94 str r1, [fp], 4 | *(fp) = r1;
| fp += 4;
0x00056e98 bne 0x56e8e |
| } while (r0 != r3);
0x00056e9a add r2, ip | r2 += ip;
0x00056e9c str r2, [sp, 0x13c] | var_13ch = r2;
0x00056e9e b 0x56de2 | goto label_7;
| label_67:
0x00056ea0 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00056ea2 ldr r1, [sp, 0x148] | r1 = var_148h;
0x00056ea4 ldr.w r3, [r3, r8, lsl 2] | offset_3 = r8 << 2;
| r3 = *((r3 + offset_3));
0x00056ea8 strh.w r3, [r1, r2, lsl 1] | offset_4 = r2 << 1;
| *((r1 + offset_4)) = r3;
0x00056eac ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00056eae uxth r2, r3 | r2 = (int16_t) r3;
0x00056eb0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00056eb2 add r3, r1 | r3 += r1;
0x00056eb4 add r1, r2 | r1 += r2;
0x00056eb6 str r1, [sp, 0x1c] | var_1ch_2 = r1;
0x00056eb8 mov r0, r3 | r0 = r3;
0x00056eba ldr r1, [sp, 0x38] | r1 = var_38h;
0x00056ebc ldr.w r1, [r1, r8, lsl 2] | offset_5 = r8 << 2;
| r1 = *((r1 + offset_5));
0x00056ec0 blx 0x7dcc | fcn_00007dcc ();
0x00056ec4 ldr r7, [sp, 0x54] | r7 = var_54h;
0x00056ec6 mov r3, r0 | r3 = r0;
0x00056ec8 ldr r2, [sp, 0x13c] | r2 = var_13ch;
0x00056eca ldrd r1, r0, [sp, 0x144] | __asm ("ldrd r1, r0, [var_144h]");
0x00056ece adds r5, r3, r7 | r5 = r3 + r7;
0x00056ed0 str.w r5, [r1, r2, lsl 2] | __asm ("str.w r5, [r1, r2, lsl 2]");
0x00056ed4 ldrh.w r1, [r0, r2, lsl 1] | offset_6 = r2 << 1;
| r1 = *((r0 + offset_6));
0x00056ed8 subs r1, r1, r7 | r1 -= r7;
0x00056eda uxth r1, r1 | r1 = (int16_t) r1;
0x00056edc strh.w r1, [r0, r2, lsl 1] | offset_7 = r2 << 1;
| *((r0 + offset_7)) = r1;
0x00056ee0 ldrb r0, [r6, 8] | r0 = *((r6 + 8));
0x00056ee2 cmp r0, 0 |
| if (r0 != 0) {
0x00056ee4 bne 0x56fbe | goto label_71;
| }
0x00056ee6 ldr r2, [r6, 0x38] | r2 = *((r6 + 0x38));
0x00056ee8 ldr r1, [sp, 0x54] | r1 = var_54h;
0x00056eea ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00056eec str r2, [r3, r1] | *((r3 + r1)) = r2;
0x00056eee ldr r2, [sp, 0x13c] | r2 = var_13ch;
| label_10:
0x00056ef0 cmp sb, r8 |
0x00056ef2 add.w r2, r2, 1 | r2++;
0x00056ef6 add.w r3, r8, 1 | r3 = r8 + 1;
0x00056efa str r2, [sp, 0x13c] | var_13ch = r2;
| if (sb != r8) {
0x00056efc bne 0x56e40 | goto label_8;
| }
| label_68:
0x00056efe str r4, [sp, 0x7c] | var_7ch = r4;
0x00056f00 ldr r4, [sp, 0x64] | r4 = var_64h;
0x00056f02 ldrd fp, r3, [sp, 0x3c] | __asm ("ldrd fp, r3, [var_3ch]");
0x00056f06 ldr r1, [sp, 0xec] | r1 = var_ech;
0x00056f08 ldr r2, [r4, 0x3c] | r2 = *((r4 + 0x3c));
0x00056f0a ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x00056f0c ldr.w sb, [sp, 0x50] | sb = var_50h;
0x00056f10 mov r8, r1 | r8 = r1;
0x00056f12 str r2, [sp, 0x14c] | var_14ch = r2;
0x00056f14 ldr r2, [sp, 0x54] | r2 = var_54h;
0x00056f16 ldr.w sl, [sp, 0x68] | sl = var_68h;
0x00056f1a str r1, [sp, 0x164] | var_164h = r1;
0x00056f1c subs r2, 0xc | r2 -= 0xc;
0x00056f1e str.w sb, [sp, 0x2c] | __asm ("str.w sb, [var_2ch]");
0x00056f22 adds r3, r2, r3 | r3 = r2 + r3;
0x00056f24 str.w fp, [sp, 0x38] | __asm ("str.w fp, [var_38h]");
0x00056f28 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x00056f2a movs r3, 0 | r3 = 0;
0x00056f2c mov r6, r3 | r6 = r3;
0x00056f2e mov r7, r3 | r7 = r3;
0x00056f30 add r3, sp, 0xd8 | r3 += var_d8h;
0x00056f32 str r3, [sp, 0x68] | var_68h = r3;
| label_9:
0x00056f34 ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 == 0) {
0x00056f36 cbnz r3, 0x56f56 |
0x00056f38 ldr.w r2, [sl, 0x3c] | r2 = *((sl + 0x3c));
0x00056f3c adds r7, 1 | r7++;
0x00056f3e add r3, sp, 0x188 | r3 += var_188h;
0x00056f40 add.w r3, r3, r7, lsl 2 | r3 += (r7 << 2);
0x00056f44 str r2, [r3, -0x3c] | *((r3 - 0x3c)) = r2;
0x00056f48 add r3, sp, 0x188 | r3 += var_188h;
0x00056f4a add.w r3, r3, r7, lsl 2 | r3 += (r7 << 2);
0x00056f4e add.w r2, r8, 1 | r2 = r8 + 1;
0x00056f52 str r2, [r3, -0x24] | *((r3 - 0x24)) = r2;
| }
0x00056f56 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00056f58 add.w fp, r4, 0x24 |
0x00056f5c ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x00056f5e movs r5, 0 | r5 = 0;
0x00056f60 subs r3, r2, r3 | r3 = r2 - r3;
0x00056f62 str r3, [sb], 4 | *(sb) = r3;
| sb += 4;
0x00056f66 ldrb r3, [r4, 0xc] | r3 = *((r4 + 0xc));
| if (r3 == 0) {
0x00056f68 cbz r3, 0x56f88 | goto label_72;
| }
| do {
0x00056f6a ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x00056f6c mov r0, r4 | r0 = r4;
0x00056f6e ldr r1, [fp], 4 | r1 = *(fp);
| fp += 4;
0x00056f72 adds r5, 1 | r5++;
0x00056f74 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00056f76 ldr r3, [sb, -0x4] | r3 = *((sb - 0x4));
0x00056f7a adds r0, 2 | r0 += 2;
0x00056f7c add r3, r0 | r3 += r0;
0x00056f7e str r3, [sb, -0x4] | *((sb - 0x4)) = r3;
0x00056f82 ldrb r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00056f84 cmp r3, r5 |
0x00056f86 bgt 0x56f6a |
| } while (r3 > r5);
| label_72:
0x00056f88 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00056f8a str.w r8, [r3, r6, lsl 2] | __asm ("str.w r8, [r3, r6, lsl 2]");
0x00056f8e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00056f90 cmp r3, r6 |
| if (r3 == r6) {
0x00056f92 beq 0x57010 | goto label_73;
| }
0x00056f94 add r3, sp, 0x188 | r3 += var_188h;
0x00056f96 adds r6, 1 | r6++;
0x00056f98 add.w r1, r3, r7, lsl 2 | r1 = r3 + (r7 << 2);
0x00056f9c ldr r3, [sp, 0x20] | r3 = var_20h;
0x00056f9e ldr.w r8, [r3, r6, lsl 2] | offset_8 = r6 << 2;
| r8 = *((r3 + offset_8));
0x00056fa2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00056fa4 ldr.w r4, [r3, r6, lsl 2] | offset_9 = r6 << 2;
| r4 = *((r3 + offset_9));
0x00056fa8 ldr r3, [r1, -0x24] | r3 = *((r1 - 0x24));
0x00056fac ldr r2, [r4, 0x3c] | r2 = *((r4 + 0x3c));
0x00056fae cmp r8, r3 |
0x00056fb0 it ne |
| if (r8 == r3) {
0x00056fb2 addne r7, 1 | r7++;
| }
0x00056fb4 str r8, [r1, -0x20] | *((r1 - 0x20)) = r8;
0x00056fb8 str r2, [r1, -0x38] | *((r1 - 0x38)) = r2;
0x00056fbc b 0x56f34 | goto label_9;
| label_71:
0x00056fbe cmp r1, 3 |
| if (r1 > 3) {
0x00056fc0 bhi 0x56ef0 | goto label_10;
| }
0x00056fc2 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00056fc4 subs r1, r3, 1 | r1 = r3 - 1;
0x00056fc6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00056fc8 add r1, r3 | r1 += r3;
0x00056fca rsb.w r5, r3, 2 | r5 = 2 - r3;
| do {
0x00056fce mov.w r3, 0 | r3 = 0;
0x00056fd2 adds r6, r5, r1 | r6 = r5 + r1;
0x00056fd4 strb r3, [r1, 1]! | *((r1 += 1)) = r3;
0x00056fd8 ldr r2, [sp, 0x13c] | r2 = var_13ch;
0x00056fda ldr r0, [sp, 0x148] | r0 = var_148h;
0x00056fdc ldrh.w r3, [r0, r2, lsl 1] | offset_10 = r2 << 1;
| r3 = *((r0 + offset_10));
0x00056fe0 adds r3, 1 | r3++;
0x00056fe2 uxth r3, r3 | r3 = (int16_t) r3;
0x00056fe4 cmp r3, 3 |
0x00056fe6 strh.w r3, [r0, r2, lsl 1] | offset_11 = r2 << 1;
| *((r0 + offset_11)) = r3;
0x00056fea bls 0x56fce |
| } while (r3 < 3);
0x00056fec str r6, [sp, 0x1c] | var_1ch_2 = r6;
0x00056fee b 0x56ef0 | goto label_10;
| label_52:
0x00056ff0 ldr.w r1, [sl, 0x38] | r1 = *((sl + 0x38));
0x00056ff4 str r3, [sp, 0x24] | var_24h = r3;
| label_30:
0x00056ff6 ldrb.w r3, [sl, 9] | r3 = *((sl + 9));
0x00056ffa str r2, [sp, 0x30] | var_30h = r2;
0x00056ffc adds r3, 8 | r3 += 8;
0x00056ffe adds r3, r1, r3 | r3 = r1 + r3;
0x00057000 str r3, [sp, 0x4c] | var_4ch = r3;
0x00057002 b 0x56b4a | goto label_11;
| label_62:
0x00057004 ldr r4, [sp, 0x1b0] | r4 = var_1b0h;
0x00057006 subs r3, r5, 2 | r3 = r5 - 2;
0x00057008 add r3, r4 | r3 += r4;
0x0005700a str r3, [sp, 0x24] | var_24h = r3;
0x0005700c mov r3, r5 | r3 = r5;
0x0005700e b 0x56b2a | goto label_0;
| label_73:
0x00057010 ldr.w fp, [sp, 0x38] | fp = var_38h;
0x00057014 movs r2, 1 | r2 = 1;
0x00057016 ldr.w sb, [sp, 0x44] | sb = var_44h;
0x0005701a movs r3, 2 | r3 = 2;
0x0005701c ldr r7, [sp, 0x68] | r7 = var_68h;
0x0005701e ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x00057020 str r2, [sp, 0x2c] | var_2ch = r2;
0x00057022 add r2, sp, 0x13c | r2 += var_13ch;
0x00057024 str.w sl, [sp, 0x78] | __asm ("str.w sl, [var_78h]");
0x00057028 mov sl, sb | sl = sb;
0x0005702a str.w fp, [sp, 0x74] | __asm ("str.w fp, [var_74h]");
0x0005702e mov sb, r2 | sb = r2;
0x00057030 mov fp, r3 |
| label_18:
0x00057032 sub.w r3, fp, 2 | r3 = fp - 2;
0x00057036 ldr r2, [r5], 4 | r2 = *(r5);
| r5 += 4;
0x0005703a strd r3, r3, [sp, 0x6c] | __asm ("strd r3, r3, [sp, 0x6c]");
0x0005703e ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00057040 cmp r2, r3 |
0x00057042 it le |
| if (r2 > r3) {
0x00057044 ldrle r4, [r7] | r4 = *(r7);
| }
| if (r2 <= r3) {
0x00057046 ble 0x570c6 | goto label_74;
| }
0x00057048 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0005704a b 0x5705a |
| while (r2 != 0) {
| label_12:
0x0005704c ldr r3, [r5] | r3 = *(r5);
0x0005704e str r4, [r7] | *(r7) = r4;
0x00057050 add r3, r0 | r3 += r0;
0x00057052 str r3, [r5] | *(r5) = r3;
0x00057054 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00057056 cmp r6, r3 |
| if (r6 <= r3) {
0x00057058 ble 0x570c6 | goto label_74;
| }
0x0005705a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005705c cmp r3, sl |
| if (r3 >= sl) {
0x0005705e blt 0x57072 |
0x00057060 cmp.w fp, 6 |
0x00057064 mov sl, fp | sl = fp;
| if (fp == 6) {
0x00057066 beq.w 0x57272 | goto label_75;
| }
0x0005706a movs r3, 0 | r3 = 0;
0x0005706c str r3, [r5] | *(r5) = r3;
0x0005706e ldr r3, [sp, 0x13c] | r3 = var_13ch;
0x00057070 str r3, [r7, 4] | *((r7 + 4)) = r3;
| }
0x00057072 ldr.w r8, [r7] | r8 = *(r7);
0x00057076 ldr r3, [sp, 0x148] | r3 = var_148h;
0x00057078 add.w r4, r8, -1 | r4 = r8 + -1;
0x0005707c ldrh.w r0, [r3, r4, lsl 1] | offset_12 = r4 << 1;
| r0 = *((r3 + offset_12));
0x00057080 lsls r3, r4, 1 | r3 = r4 << 1;
| if (r0 == 0) {
0x00057082 cbnz r0, 0x57094 |
0x00057084 mov r1, r4 | r1 = r4;
0x00057086 mov r0, sb | r0 = sb;
0x00057088 strd r3, r2, [sp, 0x38] | __asm ("strd r3, r2, [sp, 0x38]");
0x0005708c bl 0x9780 | fcn_00009780 (r0, r1, r2);
0x00057090 ldrd r3, r2, [sp, 0x38] | __asm ("ldrd r3, r2, [var_38h]");
| }
0x00057094 ldr r6, [r5, -0x4] | r6 = *((r5 - 0x4));
0x00057098 adds r0, 2 | r0 += 2;
0x0005709a subs r6, r6, r0 | r6 -= r0;
0x0005709c str r6, [r5, -0x4] | *((r5 - 0x4)) = r6;
0x000570a0 cmp r2, 0 |
0x000570a2 bne 0x5704c |
| }
0x000570a4 ldr r1, [sp, 0x13c] | r1 = var_13ch;
0x000570a6 cmp r8, r1 |
0x000570a8 it ge |
| if (r8 >= r1) {
0x000570aa movge r0, r2 | r0 = r2;
| goto label_76;
| }
| if (r8 >= r1) {
| label_76:
0x000570ac bge 0x5704c | goto label_12;
| }
0x000570ae ldr r1, [sp, 0x148] | r1 = var_148h;
0x000570b0 add r1, r3 | r1 += r3;
0x000570b2 ldrh r0, [r1, 2] | r0 = *((r1 + 2));
| if (r0 == 0) {
0x000570b4 cbnz r0, 0x570c2 |
0x000570b6 mov r1, r8 | r1 = r8;
0x000570b8 mov r0, sb | r0 = sb;
0x000570ba str r2, [sp, 0x38] | var_38h = r2;
0x000570bc bl 0x9780 | fcn_00009780 (r0, r1, r2);
0x000570c0 ldr r2, [sp, 0x38] | r2 = var_38h;
| }
0x000570c2 adds r0, 2 | r0 += 2;
0x000570c4 b 0x5704c | goto label_12;
| label_74:
0x000570c6 ldr r0, [sp, 0x13c] | r0 = var_13ch;
0x000570c8 cmp r0, r4 |
| if (r0 <= r4) {
0x000570ca ble.w 0x5731a | goto label_77;
| }
0x000570ce mov r8, r7 | r8 = r7;
0x000570d0 str.w sl, [sp, 0x38] | __asm ("str.w sl, [var_38h]");
0x000570d4 ldr r6, [sp, 0x1c] | r6 = var_1ch_2;
0x000570d6 mov r1, r0 | r1 = r0;
0x000570d8 ldr r7, [sp, 0x14] | r7 = var_14h;
0x000570da ldr.w sl, [sp, 0x2c] | sl = var_2ch;
0x000570de str.w fp, [sp, 0x3c] | __asm ("str.w fp, [var_3ch]");
| label_13:
0x000570e2 ldr r3, [sp, 0x148] | r3 = var_148h;
0x000570e4 lsl.w fp, r4, 1 |
0x000570e8 ldrh.w r0, [r3, r4, lsl 1] | offset_13 = r4 << 1;
| r0 = *((r3 + offset_13));
| if (r0 == 0) {
0x000570ec cbnz r0, 0x570f8 |
0x000570ee mov r1, r4 | r1 = r4;
0x000570f0 mov r0, sb | r0 = sb;
0x000570f2 bl 0x9780 | fcn_00009780 (r0, r1, r2);
0x000570f6 ldr r1, [sp, 0x13c] | r1 = var_13ch;
| }
0x000570f8 ldr r3, [r5, -0x4] | r3 = *((r5 - 0x4));
0x000570fc adds r0, 2 | r0 += 2;
0x000570fe add r3, r0 | r3 += r0;
0x00057100 cmp r3, r6 |
| if (r3 > r6) {
0x00057102 bgt.w 0x572a0 | goto label_78;
| }
0x00057106 adds r4, 1 | r4++;
0x00057108 str r3, [r5, -0x4] | *((r5 - 0x4)) = r3;
0x0005710c str.w r4, [r8] | __asm ("str.w r4, [r8]");
0x00057110 cmp r7, 0 |
| if (r7 != 0) {
0x00057112 bne 0x571c2 | goto label_79;
| }
0x00057114 cmp r4, r1 |
| if (r4 < r1) {
0x00057116 blt 0x571ae | goto label_80;
| }
0x00057118 ldrd fp, sl, [sp, 0x74] | __asm ("ldrd fp, sl, [var_74h]");
0x0005711c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005711e str r3, [sp, 0x3c] | var_3ch = r3;
| label_14:
0x00057120 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x00057122 ldr r1, [sp, 0x50] | r1 = var_50h;
0x00057124 str.w sl, [sp, 0x70] | __asm ("str.w sl, [var_70h]");
0x00057128 str r2, [sp, 0x2c] | var_2ch = r2;
0x0005712a lsls r3, r2, 2 | r3 = r2 << 2;
0x0005712c str.w fp, [sp, 0x50] | __asm ("str.w fp, [var_50h]");
0x00057130 add r1, r3 | r1 += r3;
0x00057132 subs r3, 4 | r3 -= 4;
0x00057134 str r1, [sp, 0x38] | var_38h = r1;
0x00057136 ldr r1, [sp, 0x68] | r1 = var_68h;
0x00057138 adds r6, r1, r3 | r6 = r1 + r3;
0x0005713a add r3, sp, 0x13c | r3 += var_13ch;
0x0005713c mov sl, r6 | sl = r6;
0x0005713e mov sb, r3 | sb = r3;
| label_16:
0x00057140 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00057142 cmp r3, 0 |
| if (r3 == 0) {
0x00057144 beq.w 0x57326 | goto label_81;
| }
0x00057148 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0005714a ldr.w r4, [sl] | r4 = *(sl);
0x0005714e ldr r0, [sp, 0x148] | r0 = var_148h;
0x00057150 ldrd fp, r5, [r3, -0x4] | __asm ("ldrd fp, r5, [r3, -0x4]");
0x00057154 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00057156 subs r1, r4, r3 | r1 = r4 - r3;
0x00057158 subs r4, 1 | r4--;
0x0005715a ldrh.w r3, [r0, r1, lsl 1] | offset_14 = r1 << 1;
| r3 = *((r0 + offset_14));
0x0005715e lsls r7, r1, 1 | r7 = r1 << 1;
| if (r3 == 0) {
0x00057160 cbnz r3, 0x5716a |
0x00057162 mov r0, sb | r0 = sb;
0x00057164 bl 0x9780 | fcn_00009780 (r0, r1, r2);
0x00057168 ldr r0, [sp, 0x148] | r0 = var_148h;
| }
0x0005716a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005716c ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x0005716e subs.w r8, r3, r2 | r8 = r3 - r2;
0x00057172 it ne |
| if (r8 == r3) {
0x00057174 movne r8, 1 | r8 = 1;
| }
0x00057178 lsl.w r8, r8, 1 | r8 <<= 1;
| do {
0x0005717c ldrh.w r2, [r0, r4, lsl 1] | offset_15 = r4 << 1;
| r2 = *((r0 + offset_15));
0x00057180 lsls r6, r4, 1 | r6 = r4 << 1;
| if (r2 == 0) {
0x00057182 cbnz r2, 0x5718c |
0x00057184 mov r1, r4 | r1 = r4;
0x00057186 mov r0, sb | r0 = sb;
0x00057188 bl 0x9780 | fcn_00009780 (r0, r1, r2);
| }
| if (r5 != 0) {
0x0005718c cbnz r5, 0x571d8 | goto label_82;
| }
0x0005718e ldr r0, [sp, 0x148] | r0 = var_148h;
0x00057190 ldrh r3, [r0, r6] | r3 = *((r0 + r6));
0x00057192 ldrh r2, [r0, r7] | r2 = *((r0 + r7));
| label_15:
0x00057194 adds r3, 2 | r3 += 2;
0x00057196 adds r2, 2 | r2 += 2;
0x00057198 sub.w fp, fp, r3 |
0x0005719c subs r3, r4, 1 | r3 = r4 - 1;
0x0005719e add r5, r2 | r5 += r2;
0x000571a0 sub.w r7, r7, 2 | r7 -= 2;
0x000571a4 str.w r4, [sl] | __asm ("str.w r4, [sl]");
| if (r3 < r4) {
0x000571a8 bmi 0x571fa | goto label_83;
| }
0x000571aa mov r4, r3 | r4 = r3;
0x000571ac b 0x5717c |
| } while (1);
| label_80:
0x000571ae ldr r3, [sp, 0x148] | r3 = var_148h;
0x000571b0 add r3, fp | r3 += fp;
0x000571b2 ldrh r0, [r3, 2] | r0 = *((r3 + 2));
| if (r0 == 0) {
0x000571b4 cbnz r0, 0x571c0 |
0x000571b6 mov r1, r4 | r1 = r4;
0x000571b8 mov r0, sb | r0 = sb;
0x000571ba bl 0x9780 | fcn_00009780 (r0, r1, r2);
0x000571be ldr r1, [sp, 0x13c] | r1 = var_13ch;
| }
0x000571c0 adds r0, 2 | r0 += 2;
| label_79:
0x000571c2 ldr r3, [r5] | r3 = *(r5);
0x000571c4 cmp r4, r1 |
0x000571c6 sub.w r3, r3, r0 | r3 -= r0;
0x000571ca str r3, [r5] | *(r5) = r3;
| if (r4 < r1) {
0x000571cc blt 0x570e2 | goto label_13;
| }
0x000571ce str.w sl, [sp, 0x3c] | __asm ("str.w sl, [var_3ch]");
0x000571d2 ldrd fp, sl, [sp, 0x74] | __asm ("ldrd fp, sl, [var_74h]");
0x000571d6 b 0x57120 | goto label_14;
| label_82:
0x000571d8 ldr r3, [sp, 0x1b0] | r3 = var_1b0h;
| if (r3 != 0) {
0x000571da cbnz r3, 0x571f6 | goto label_84;
| }
0x000571dc ldr r0, [sp, 0x148] | r0 = var_148h;
0x000571de ldrh r3, [r0, r6] | r3 = *((r0 + r6));
0x000571e0 ldrh r2, [r0, r7] | r2 = *((r0 + r7));
0x000571e2 add.w r1, r3, r8 | r1 = r3 + r8;
0x000571e6 add.w ip, r2, r5 |
0x000571ea sub.w r1, fp, r1 | r1 = fp - r1;
0x000571ee add.w ip, ip, 1 |
0x000571f2 cmp ip, r1 |
| if (ip < r1) {
0x000571f4 blt 0x57194 | goto label_15;
| }
| label_84:
0x000571f6 ldr.w r4, [sl] | r4 = *(sl);
| label_83:
0x000571fa ldr r3, [sp, 0x38] | r3 = var_38h;
0x000571fc sub.w sl, sl, 4 | sl -= 4;
0x00057200 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00057202 str r5, [r3] | *(r3) = r5;
0x00057204 str fp, [r3, -0x4]! | *((r3 -= 0x4)) = fp;
0x00057208 subs r2, 1 | r2--;
0x0005720a str r3, [sp, 0x38] | var_38h = r3;
0x0005720c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005720e str r2, [sp, 0x2c] | var_2ch = r2;
0x00057210 cmp r3, 1 |
0x00057212 ite ne |
| if (r3 == 1) {
0x00057214 ldrne r3, [sl] | r3 = *(sl);
| }
| if (r3 == 1) {
0x00057218 movs r3, 0 | r3 = 0;
| }
0x0005721a cmp r3, r4 |
| if (r3 < r4) {
0x0005721c blt 0x57140 | goto label_16;
| }
0x0005721e ldr.w fp, [sp, 0x50] | fp = var_50h;
0x00057222 blx 0x7f8c | fcn_00007f8c ();
0x00057226 ldr r2, [pc, 0x3f0] |
0x00057228 adds r0, 0x14 | r0 += 0x14;
0x0005722a ldr r1, [pc, 0x3f0] |
0x0005722c movw r3, 0x1ed1 |
0x00057230 movt r3, 1 | r3 = 0x11ed1;
0x00057234 str r0, [sp] | *(sp) = r0;
0x00057236 add r2, pc | r2 = 0xae854;
0x00057238 movs r0, 0xb | r0 = 0xb;
0x0005723a add r1, pc | r1 = 0xae85c;
0x0005723c blx 0x8474 | fcn_00008474 ();
0x00057240 movs r3, 0xb | r3 = 0xb;
0x00057242 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x00057246 b 0x56c4e | goto label_4;
| label_64:
0x00057248 ldr.w fp, [sp, 0x3c] | fp = var_3ch;
0x0005724c blx 0x7f8c | fcn_00007f8c ();
0x00057250 ldr r2, [pc, 0x3cc] |
0x00057252 adds r0, 0x14 | r0 += 0x14;
0x00057254 ldr r1, [pc, 0x3cc] |
0x00057256 movw r3, 0x1e09 |
0x0005725a movt r3, 1 | r3 = 0x11e09;
0x0005725e str r0, [sp] | *(sp) = r0;
0x00057260 add r2, pc | r2 = 0xae884;
0x00057262 movs r0, 0xb | r0 = 0xb;
0x00057264 add r1, pc | r1 = "unknown database %s";
0x00057266 blx 0x8474 | fcn_00008474 ();
0x0005726a movs r3, 0xb | r3 = 0xb;
0x0005726c str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x00057270 b 0x56c4e | goto label_4;
| label_75:
0x00057272 ldr.w fp, [sp, 0x74] | fp = var_74h;
0x00057276 blx 0x7f8c | fcn_00007f8c ();
0x0005727a ldr r2, [pc, 0x3ac] |
0x0005727c adds r0, 0x14 | r0 += 0x14;
0x0005727e ldr r1, [pc, 0x3ac] |
0x00057280 movw r3, 0x1e86 |
0x00057284 movt r3, 1 | r3 = 0x11e86;
0x00057288 str r0, [sp] | *(sp) = r0;
0x0005728a add r2, pc | r2 = 0xae8b8;
0x0005728c movs r0, 0xb | r0 = 0xb;
0x0005728e add r1, pc | r1 = 0xae8c0;
0x00057290 blx 0x8474 | fcn_00008474 ();
0x00057294 movs r3, 0xb | r3 = 0xb;
0x00057296 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x0005729a b 0x56c4e | goto label_4;
| label_51:
0x0005729c movs r5, 7 | r5 = 7;
0x0005729e b 0x56c8c | goto label_17;
| label_78:
0x000572a0 cmp r4, r1 |
0x000572a2 ldrd sl, fp, [sp, 0x38] | __asm ("ldrd sl, fp, [var_38h]");
0x000572a6 mov r7, r8 | r7 = r8;
| if (r4 >= r1) {
0x000572a8 bge 0x5731a | goto label_77;
| }
0x000572aa ldr r3, [sp, 0x70] | r3 = var_70h;
| if (r3 == 0) {
0x000572ac cbz r3, 0x57316 | goto label_85;
| }
0x000572ae ldr r2, [r8, -0x4] | r2 = *((r8 - 0x4));
| label_20:
0x000572b2 cmp r4, r2 |
| if (r4 <= r2) {
0x000572b4 ble.w 0x574b0 | goto label_86;
| }
0x000572b8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000572ba add.w r2, fp, -1 | r2 = fp + -1;
0x000572be cmp r2, sl |
0x000572c0 add.w r7, r7, 4 | r7 += 4;
0x000572c4 add.w fp, fp, 1 |
0x000572c8 add.w r3, r3, 1 | r3++;
0x000572cc str r3, [sp, 0x2c] | var_2ch = r3;
| if (r2 < sl) {
0x000572ce blt.w 0x57032 | goto label_18;
| }
0x000572d2 mov sb, sl | sb = sl;
0x000572d4 ldrd fp, sl, [sp, 0x74] | __asm ("ldrd fp, sl, [var_74h]");
0x000572d8 add.w r3, sb, -1 | r3 = sb + -1;
0x000572dc str.w sb, [sp, 0x3c] | __asm ("str.w sb, [var_3ch]");
0x000572e0 str r3, [sp, 0x6c] | var_6ch = r3;
0x000572e2 b 0x57120 | goto label_14;
| label_63:
0x000572e4 movs r5, 7 | r5 = 7;
0x000572e6 str.w r5, [fp] | __asm ("str.w r5, [fp]");
0x000572ea b 0x56c5a | goto label_19;
| label_69:
0x000572ec ldr.w fp, [sp, 0x3c] | fp = var_3ch;
0x000572f0 blx 0x7f8c | fcn_00007f8c ();
0x000572f4 ldr r2, [pc, 0x338] |
0x000572f6 adds r0, 0x14 | r0 += 0x14;
0x000572f8 ldr r1, [pc, 0x338] |
0x000572fa movw r3, 0x1e21 |
0x000572fe movt r3, 1 | r3 = 0x11e21;
0x00057302 str r0, [sp] | *(sp) = r0;
0x00057304 add r2, pc | r2 = "cannot detach database %s";
0x00057306 movs r0, 0xb | r0 = 0xb;
0x00057308 add r1, pc | r1 = 0xae940;
0x0005730a blx 0x8474 | fcn_00008474 ();
0x0005730e movs r3, 0xb | r3 = 0xb;
0x00057310 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x00057314 b 0x56c4e | goto label_4;
| label_85:
0x00057316 ldr r2, [sp, 0x70] | r2 = var_70h;
0x00057318 b 0x572b2 | goto label_20;
| label_77:
0x0005731a mov r3, fp | r3 = fp;
0x0005731c ldrd fp, sl, [sp, 0x74] | __asm ("ldrd fp, sl, [var_74h]");
0x00057320 subs r3, 1 | r3--;
0x00057322 str r3, [sp, 0x3c] | var_3ch = r3;
0x00057324 b 0x57120 | goto label_14;
| label_81:
0x00057326 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00057328 ldr.w sl, [sp, 0x70] | sl = var_70h;
0x0005732c ldr.w fp, [sp, 0x50] | fp = var_50h;
0x00057330 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00057332 str.w sl, [sp, 0x64] | __asm ("str.w sl, [var_64h]");
0x00057336 ldr r7, [sp, 0x28] | r7 = var_28h;
0x00057338 ldrb.w r8, [r3] | r8 = *(r3);
0x0005733c add r3, sp, 0xc4 | r3 += var_c4h;
0x0005733e mov sb, r3 | sb = r3;
0x00057340 str r3, [sp, 0x50] | var_50h = r3;
0x00057342 str r3, [sp, 0x6c] | var_6ch = r3;
0x00057344 add r3, sp, 0x88 | r3 += var_88h;
0x00057346 ldr r6, [sp, 0x2c] | r6 = var_2ch;
0x00057348 ldr.w sl, [sp, 0x40] | sl = var_40h;
0x0005734c str r3, [sp, 0x38] | var_38h = r3;
0x0005734e b 0x573a0 |
| while (r3 == 0) {
0x00057350 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00057352 ldr r3, [r3] | r3 = *(r3);
| label_21:
0x00057354 ldr r4, [sp, 0x38] | r4 = var_38h;
0x00057356 movs r2, 0 | r2 = 0;
0x00057358 str r2, [sp] | *(sp) = r2;
0x0005735a mov r0, sl | r0 = sl;
0x0005735c ldr r2, [sp, 0x18] | r2 = var_18h;
0x0005735e mov r1, r4 | r1 = r4;
0x00057360 bl 0x55140 | fcn_00055140 (r0, r1, r2, r3, r4, r5, r6);
0x00057364 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x00057368 cmp r0, 0 |
| if (r0 != 0) {
0x0005736a bne.w 0x574dc | goto label_87;
| }
0x0005736e ldr r0, [r4] | r0 = *(r4);
0x00057370 mov r1, r8 | r1 = r8;
0x00057372 adds r5, r6, 1 | r5 = r6 + 1;
0x00057374 mov r4, r5 | r4 = r5;
0x00057376 str r0, [sp, 0x2c] | var_2ch = r0;
0x00057378 bl 0x242c0 | fcn_000242c0 (r0, r1);
0x0005737c ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x00057380 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00057382 ldr r2, [sp, 0x13c] | r2 = var_13ch;
0x00057384 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00057386 str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x0005738a str.w r2, [r1, r6, lsl 2] | __asm ("str.w r2, [r1, r6, lsl 2]");
0x0005738e cmp r3, 0 |
| if (r3 != 0) {
0x00057390 bne 0x57412 | goto label_88;
| }
| label_22:
0x00057392 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00057394 add.w sb, sb, 4 | sb += 4;
0x00057398 adds r7, 4 | r7 += 4;
0x0005739a mov r6, r5 | r6 = r5;
0x0005739c cmp r5, r3 |
| if (r5 >= r3) {
0x0005739e bge 0x5742e | goto label_89;
| }
0x000573a0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000573a2 cmp r3, r6 |
| if (r3 > r6) {
0x000573a4 bgt 0x573b0 | goto label_90;
| }
0x000573a6 ldr r3, [sp, 0x1b0] | r3 = var_1b0h;
0x000573a8 cmp r3, 0 |
0x000573aa beq 0x57350 |
| }
0x000573ac movs r3, 1 | r3 = 1;
0x000573ae b 0x57354 | goto label_21;
| label_90:
0x000573b0 movs r3, 0 | r3 = 0;
0x000573b2 ldr r4, [r7] | r4 = *(r7);
0x000573b4 str r3, [r7] | *(r7) = r3;
0x000573b6 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000573b8 ldr r0, [r4, 0x48] | r0 = *((r4 + 0x48));
0x000573ba str.w r4, [sb] | __asm ("str.w r4, [sb]");
0x000573be str r4, [r3] | *(r3) = r4;
0x000573c0 bl 0x51680 | fcn_00051680 (r0);
0x000573c4 ldr r2, [r4, 0x48] | r2 = *((r4 + 0x48));
0x000573c6 adds r4, r6, 1 | r4 = r6 + 1;
0x000573c8 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000573ca mov r5, r4 | r5 = r4;
0x000573cc str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x000573d0 ldrsh.w r1, [r2, 0x1e] | r1 = *((r2 + 0x1e));
0x000573d4 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000573d6 subs r2, r3, r2 | r2 = r3 - r2;
0x000573d8 cmp r2, r6 |
0x000573da ite eq |
| if (r2 != r6) {
0x000573dc moveq r2, 2 | r2 = 2;
| }
| if (r2 == r6) {
0x000573de movne r2, 1 | r2 = 1;
| }
0x000573e0 cmp r2, r1 |
| if (r2 != r1) {
0x000573e2 beq 0x5740c |
0x000573e4 blx 0x7f8c | fcn_00007f8c ();
0x000573e8 ldr r2, [pc, 0x24c] |
0x000573ea adds r0, 0x14 | r0 += 0x14;
0x000573ec ldr r1, [pc, 0x24c] |
0x000573ee movw r3, 0x1ef0 |
0x000573f2 movt r3, 1 | r3 = 0x11ef0;
0x000573f6 str r0, [sp] | *(sp) = r0;
0x000573f8 add r2, pc | r2 = 0xaea34;
0x000573fa movs r0, 0xb | r0 = 0xb;
0x000573fc add r1, pc | r1 = 0xaea3c;
0x000573fe blx 0x8474 | fcn_00008474 ();
0x00057402 movs r3, 0xb | r3 = 0xb;
0x00057404 str.w r3, [fp] | __asm ("str.w r3, [fp]");
| label_23:
0x00057408 str r4, [sp, 0x48] | var_48h = r4;
0x0005740a b 0x56c4e | goto label_4;
| }
0x0005740c cmp r0, 0 |
| if (r0 == 0) {
0x0005740e beq 0x57392 | goto label_22;
| }
0x00057410 b 0x57408 | goto label_23;
| label_88:
0x00057412 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00057414 movs r2, 5 | r2 = 5;
0x00057416 ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x00057418 mov r0, sl | r0 = sl;
0x0005741a str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x0005741e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00057420 bl 0x557bc | fcn_000557bc (r0, r1, r2, r3, r4);
0x00057424 ldr.w r3, [fp] | r3 = *(fp);
0x00057428 cmp r3, 0 |
| if (r3 == 0) {
0x0005742a beq 0x57392 | goto label_22;
| }
0x0005742c b 0x57408 | goto label_23;
| label_89:
0x0005742e ldr r3, [sp, 0xc4] | r3 = var_c4h;
0x00057430 add r2, sp, 0x12c | r2 += var_12ch;
0x00057432 mov r1, r2 | r1 = r2;
0x00057434 ldr.w sl, [sp, 0x64] | sl = var_64h;
0x00057438 mov sb, r1 | sb = r1;
0x0005743a str r2, [sp, 0x20] | var_20h = r2;
0x0005743c mov r1, r3 | r1 = r3;
0x0005743e str r3, [sp, 0x2c] | var_2ch = r3;
0x00057440 ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x00057442 add.w ip, sp, 0xc8 |
0x00057446 add r2, sp, 0x114 | r2 += var_114h;
0x00057448 add.w lr, sp, 0xae | lr += var_aeh;
0x0005744c movs r7, 1 | r7 = 1;
0x0005744e ldrh r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00057450 strh.w r3, [sp, 0xac] | var_ach = r3;
0x00057454 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00057456 str r3, [sp, 0x114] | var_114h = r3;
0x00057458 str r3, [sp, 0x128] | var_128h = r3;
| label_24:
0x0005745a cmp r5, r7 |
| if (r5 == r7) {
0x0005745c beq 0x574f0 | goto label_91;
| }
0x0005745e ldr r1, [ip], 4 | r1 = *(ip);
| ip += 4;
0x00057462 add r0, sp, 0x118 | r0 += var_118h;
0x00057464 mov r4, r3 | r4 = r3;
0x00057466 ldr r6, [r1, 0x48] | r6 = *((r1 + 0x48));
0x00057468 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x0005746a ldrh r6, [r6, 0x1c] | r6 = *((r6 + 0x1c));
0x0005746c str r1, [r2, 4]! | *((r2 += 4)) = r1;
0x00057470 str r1, [sb], 4 | *(sb) = r1;
| sb += 4;
0x00057474 strh r6, [lr], 2 | *(lr) = r6;
| lr += 2;
0x00057478 b 0x57482 |
| while (r1 != r4) {
0x0005747a cmp r2, r0 |
| if (r2 == r0) {
0x0005747c beq 0x574e0 | goto label_92;
| }
0x0005747e ldr r4, [r0], 4 | r4 = *(r0);
| r0 += 4;
0x00057482 cmp r1, r4 |
0x00057484 bne 0x5747a |
| }
0x00057486 blx 0x7f8c | fcn_00007f8c ();
0x0005748a ldr r2, [pc, 0x1b4] |
0x0005748c adds r0, 0x14 | r0 += 0x14;
0x0005748e ldr r1, [pc, 0x1b4] |
0x00057490 movw r3, 0x1f1e |
0x00057494 movt r3, 1 | r3 = 0x11f1e;
0x00057498 str r0, [sp] | *(sp) = r0;
0x0005749a add r2, pc | r2 = 0xaeae0;
0x0005749c movs r0, 0xb | r0 = 0xb;
0x0005749e add r1, pc | r1 = 0xaeae8;
0x000574a0 str r5, [sp, 0x48] | var_48h = r5;
0x000574a2 blx 0x8474 | fcn_00008474 ();
0x000574a6 movs r3, 0xb | r3 = 0xb;
0x000574a8 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x000574ac b.w 0x56c4e | goto label_4;
| label_86:
0x000574b0 ldr.w fp, [sp, 0x74] | fp = var_74h;
0x000574b4 blx 0x7f8c | fcn_00007f8c ();
0x000574b8 ldr r2, [pc, 0x18c] |
0x000574ba adds r0, 0x14 | r0 += 0x14;
0x000574bc ldr r1, [pc, 0x18c] |
0x000574be movw r3, 0x1ea7 |
0x000574c2 movt r3, 1 | r3 = 0x11ea7;
0x000574c6 str r0, [sp] | *(sp) = r0;
0x000574c8 add r2, pc | r2 = 0xaeb14;
0x000574ca movs r0, 0xb | r0 = 0xb;
0x000574cc add r1, pc | r1 = "%.*z:%u";
0x000574ce blx 0x8474 | fcn_00008474 ();
0x000574d2 movs r3, 0xb | r3 = 0xb;
0x000574d4 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x000574d8 b.w 0x56c4e | goto label_4;
| label_87:
0x000574dc mov r4, r6 | r4 = r6;
0x000574de b 0x57408 | goto label_23;
| label_92:
0x000574e0 adds r7, 1 | r7++;
0x000574e2 b 0x5745a | goto label_24;
| label_55:
0x000574e4 adds r3, 4 | r3 += 4;
0x000574e6 str r3, [sp, 0x20] | var_20h = r3;
0x000574e8 b.w 0x56c38 | goto label_25;
| label_61:
0x000574ec blx 0x7e8c | fcn_00007e8c ();
| label_91:
0x000574f0 ldr.w sb, [sp, 0x50] | sb = var_50h;
0x000574f4 movs r6, 0 | r6 = 0;
| label_26:
0x000574f6 cmp r5, 1 |
0x000574f8 ldr r7, [sp, 0x128] | r7 = var_128h;
| if (r5 == 1) {
0x000574fa beq 0x57570 | goto label_93;
| }
0x000574fc ldr r2, [sp, 0x20] | r2 = var_20h;
0x000574fe movs r4, 0 | r4 = 0;
0x00057500 movs r3, 1 | r3 = 1;
| do {
0x00057502 ldr r1, [r2], 4 | r1 = *(r2);
| r2 += 4;
0x00057506 cmp r1, r7 |
0x00057508 it lo |
| if (r1 >= r7) {
0x0005750a movlo r4, r3 | r4 = r3;
| }
0x0005750c add.w r3, r3, 1 | r3++;
0x00057510 it lo |
| if (r1 >= r7) {
0x00057512 movlo r7, r1 | r7 = r1;
| }
0x00057514 cmp r5, r3 |
0x00057516 bne 0x57502 |
| } while (r5 != r3);
0x00057518 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005751a cmp r4, r6 |
0x0005751c mov.w r2, -1 | r2 = -1;
0x00057520 str r7, [r3] | *(r3) = r7;
0x00057522 add r3, sp, 0x188 | r3 += var_188h;
0x00057524 add.w r3, r3, r4, lsl 2 | r3 += (r4 << 2);
0x00057528 str r2, [r3, -0x60] | *((r3 - 0x60)) = r2;
| if (r4 == r6) {
0x0005752c beq 0x57562 | goto label_94;
| }
| if (r4 <= r6) {
0x0005752e ble 0x57548 | goto label_95;
| }
0x00057530 ldr r3, [r3, -0xc4] | r3 = *((r3 - 0xc4));
0x00057534 mov.w r2, 0 | r2 = 0;
0x00057538 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005753a ldr r3, [sp, 0x40] | r3 = var_40h;
0x0005753c ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x0005753e strh r2, [r0, 0x1c] | *((r0 + 0x1c)) = r2;
0x00057540 adds r3, 1 | r3++;
0x00057542 adds r1, r3, r4 | r1 = r3 + r4;
0x00057544 bl 0x9288 | fcn_00009288 (r0, r1);
| do {
| label_95:
0x00057548 add r3, sp, 0x188 | r3 += var_188h;
0x0005754a mov r1, r7 | r1 = r7;
0x0005754c add.w r4, r3, r4, lsl 1 | r4 = r3 + (r4 << 1);
0x00057550 ldrh r3, [r4, -0xdc] | r3 = *((r4 - 0xdc));
0x00057554 ldr.w r4, [sb] | r4 = *(sb);
0x00057558 ldr r0, [r4, 0x48] | r0 = *((r4 + 0x48));
0x0005755a strh r3, [r0, 0x1c] | *((r0 + 0x1c)) = r3;
0x0005755c bl 0x9288 | fcn_00009288 (r0, r1);
0x00057560 str r7, [r4, 4] | *((r4 + 4)) = r7;
| label_94:
0x00057562 adds r3, r6, 1 | r3 = r6 + 1;
0x00057564 add.w sb, sb, 4 | sb += 4;
0x00057568 cmp r5, r3 |
| if (r5 == r3) {
0x0005756a beq 0x57584 | goto label_96;
| }
0x0005756c mov r6, r3 | r6 = r3;
0x0005756e b 0x574f6 | goto label_26;
| label_93:
0x00057570 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00057572 str r7, [r3] | *(r3) = r7;
0x00057574 mov.w r3, -1 | r3 = -1;
0x00057578 str r3, [sp, 0x128] | var_128h = r3;
0x0005757a cmp r6, 0 |
| if (r6 == 0) {
0x0005757c beq.w 0x57956 | goto label_97;
| }
0x00057580 movs r4, 0 | r4 = 0;
0x00057582 b 0x57548 |
| } while (1);
| label_96:
0x00057584 str r3, [sp, 0x18] | var_18h = r3;
0x00057586 add r3, sp, 0x188 | r3 += var_188h;
0x00057588 add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
0x0005758c ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0005758e tst.w r8, 8 |
0x00057592 ldr r3, [r3, -0xc4] | r3 = *((r3 - 0xc4));
0x00057596 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00057598 rev r2, r2 | r2 = SWAP32 (r2);
0x0005759a str r2, [r1] | *(r1) = r2;
| if ((r8 & 8) == 0) {
0x0005759c bne 0x575b8 |
0x0005759e ldr r2, [sp, 0x30] | r2 = var_30h;
0x000575a0 cmp r2, r6 |
| if (r2 == r6) {
0x000575a2 beq 0x575b8 | goto label_32;
| }
| if (r2 >= r6) {
0x000575a4 bge.w 0x5796e | goto label_98;
| }
0x000575a8 add r2, sp, 0xc0 | r2 += var_c0h;
| label_31:
0x000575aa ldr r1, [sp, 0x60] | r1 = var_60h;
0x000575ac ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x000575ae add r2, r1 | r2 += r1;
0x000575b0 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000575b2 ldr r2, [r2, 0x38] | r2 = *((r2 + 0x38));
0x000575b4 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000575b6 str r2, [r3, 8] | *((r3 + 8)) = r2;
| }
| label_32:
0x000575b8 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000575ba ldrb r3, [r3, 0x11] | r3 = *((r3 + 0x11));
0x000575bc cmp r3, 0 |
| if (r3 == 0) {
0x000575be beq.w 0x576de | goto label_99;
| }
0x000575c2 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x000575c4 ldr r0, [sp, 0x13c] | r0 = var_13ch;
0x000575c6 ldrh r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x000575c8 ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000575ca cmp r0, 0 |
0x000575cc add r3, r2 | r3 += r2;
0x000575ce str r3, [sp, 0x20] | var_20h = r3;
| if (r0 <= 0) {
0x000575d0 ble.w 0x576de | goto label_99;
| }
0x000575d4 mov.w r8, 0 | r8 = 0;
0x000575d8 mov r4, r5 | r4 = r5;
0x000575da mov r7, r8 | r7 = r8;
0x000575dc mov sb, r6 | sb = r6;
0x000575de add r3, sp, 0x13c | r3 += var_13ch;
0x000575e0 str.w r8, [sp, 0x30] | __asm ("str.w r8, [var_30h]");
0x000575e4 str.w r8, [sp, 0x3c] | __asm ("str.w r8, [var_3ch]");
0x000575e8 str r3, [sp, 0x4c] | var_4ch = r3;
| label_27:
0x000575ea ldr r3, [sp, 0x144] | r3 = var_144h;
0x000575ec ldr.w r6, [r3, r7, lsl 2] | offset_16 = r7 << 2;
| r6 = *((r3 + offset_16));
0x000575f0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000575f2 cmp r3, r7 |
| if (r3 != r7) {
0x000575f4 bne 0x57680 | goto label_100;
| }
0x000575f6 ldr r1, [sp, 0x50] | r1 = var_50h;
0x000575f8 add.w r2, r8, 1 | r2 = r8 + 1;
0x000575fc lsls r3, r2, 2 | r3 = r2 << 2;
0x000575fe str r0, [sp, 0x58] | var_58h = r0;
0x00057600 add.w ip, r1, r3 |
0x00057604 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00057606 add r3, r1 | r3 += r1;
0x00057608 b 0x57652 |
| while (r0 == r7) {
0x00057650 adds r2, 1 | r2++;
0x00057652 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00057654 mov r8, r2 | r8 = r2;
0x00057656 ldr r0, [sp, 0x7c] | r0 = var_7ch;
0x00057658 add.w ip, ip, 4 |
0x0005765c adds r3, 4 | r3 += 4;
0x0005765e cmp r2, r1 |
0x00057660 ite lt |
| if (r2 >= r1) {
0x00057662 ldrlt r5, [ip, -0x4] | r5 = *((ip - 0x4));
| }
| if (r2 >= r1) {
0x00057666 ldr r5, [r3, -0x4] | r5 = *((r3 - 0x4));
| }
0x0005766a ldrh r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0005766c ldrb.w lr, [r5, 0xc] |
0x00057670 add r1, lr | r1 += lr;
0x00057672 add r1, r0 | r1 += r0;
0x00057674 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00057676 add r0, r1 | r0 += r1;
0x00057678 cmp r0, r7 |
0x0005767a str r0, [sp, 0x20] | var_20h = r0;
0x0005767c beq 0x57650 |
| }
0x0005767e ldr r0, [sp, 0x58] | r0 = var_58h;
| label_100:
0x00057680 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00057682 add.w r3, r3, 0x188 | r3 += 0x188;
0x00057686 add r3, sp, r3 | r3 = sp + r3;
0x00057688 ldr r3, [r3, -0xb0] | r3 = *((r3 - 0xb0));
0x0005768c cmp r3, r7 |
| if (r3 == r7) {
0x0005768e beq.w 0x5798c | goto label_101;
| }
| label_34:
0x00057692 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00057694 cmp r8, r3 |
| if (r8 < r3) {
0x00057696 bge 0x576aa |
0x00057698 add r3, sp, 0x188 | r3 += var_188h;
0x0005769a ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0005769c add.w r3, r3, r8, lsl 2 | r3 += (r8 << 2);
0x000576a0 ldr r3, [r3, -0x74] | r3 = *((r3 - 0x74));
0x000576a4 cmp r2, r3 |
| if (r2 == r3) {
0x000576a6 beq.w 0x57c1a | goto label_102;
| }
| }
| label_49:
0x000576aa ldr r3, [sp, 0x54] | r3 = var_54h;
0x000576ac cmp r3, 0 |
| if (r3 == 0) {
0x000576ae beq.w 0x57978 | goto label_103;
| }
| label_33:
0x000576b2 ldr r3, [sp, 0x148] | r3 = var_148h;
0x000576b4 ldrh.w r0, [r3, r7, lsl 1] | offset_17 = r7 << 1;
| r0 = *((r3 + offset_17));
| if (r0 == 0) {
0x000576b8 cbnz r0, 0x576c2 |
0x000576ba ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x000576bc mov r1, r7 | r1 = r7;
0x000576be bl 0x9780 | fcn_00009780 (r0, r1, r2);
| }
0x000576c2 ldrh r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000576c4 cmp r2, r0 |
| if (r2 <= r0) {
0x000576c6 blo.w 0x57b82 | goto label_104;
| }
| label_41:
0x000576ca ldr.w r3, [fp] | r3 = *(fp);
0x000576ce cmp r3, 0 |
| if (r3 != 0) {
0x000576d0 bne.w 0x579ea | goto label_105;
| }
0x000576d4 ldr r0, [sp, 0x13c] | r0 = var_13ch;
| label_35:
0x000576d6 adds r7, 1 | r7++;
0x000576d8 cmp r0, r7 |
| if (r0 > r7) {
0x000576da bgt 0x575ea | goto label_27;
| }
0x000576dc mov r6, sb | r6 = sb;
| label_99:
0x000576de cmp r6, 0 |
| if (r6 == 0) {
0x000576e0 beq 0x577b2 | goto label_106;
| }
0x000576e2 ldr.w sb, [sp, 0x38] | sb = var_38h;
0x000576e6 mov.w r8, 0 | r8 = 0;
0x000576ea mov r7, r8 | r7 = r8;
| label_28:
0x000576ec ldr r3, [sp, 0x50] | r3 = var_50h;
0x000576ee ldr r2, [sp, 0x148] | r2 = var_148h;
0x000576f0 ldr r4, [sp, 0x34] | r4 = var_34h;
0x000576f2 ldr.w r5, [r3, r7, lsl 2] | offset_18 = r7 << 2;
| r5 = *((r3 + offset_18));
0x000576f6 ldr r3, [sp, 0x68] | r3 = var_68h;
0x000576f8 add r4, r8 | r4 += r8;
0x000576fa ldrb.w lr, [r5, 8] |
0x000576fe ldr.w r3, [r3, r7, lsl 2] | offset_19 = r7 << 2;
| r3 = *((r3 + offset_19));
0x00057702 ldrh.w r0, [r2, r3, lsl 1] | offset_20 = r3 << 1;
| r0 = *((r2 + offset_20));
0x00057706 ldr r2, [sp, 0x144] | r2 = var_144h;
0x00057708 lsl.w ip, r3, 2 |
0x0005770c str r2, [sp, 0x20] | var_20h = r2;
0x0005770e ldr.w r2, [r2, r3, lsl 2] | offset_21 = r3 << 2;
| r2 = *((r2 + offset_21));
0x00057712 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00057714 adds r3, r0, r3 | r3 = r0 + r3;
0x00057716 cmp.w lr, 0 |
| if (lr == 0) {
0x0005771a beq.w 0x57c48 | goto label_107;
| }
0x0005771e ldr r1, [sp, 0x14] | r1 = var_14h;
0x00057720 cmp r1, 0 |
| if (r1 == 0) {
0x00057722 beq.w 0x57c2c | goto label_108;
| }
0x00057726 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00057728 mov r2, sb | r2 = sb;
0x0005772a ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x0005772c mov r0, r5 | r0 = r5;
0x0005772e add r1, ip | r1 += ip;
0x00057730 ldr r1, [r1, -0x4] | r1 = *((r1 - 0x4));
0x00057734 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00057736 ldrd r2, r3, [sb] | __asm ("ldrd r2, r3, [sb]");
0x0005773a cmp r2, 0x80 |
0x0005773c sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x80) {
0x00057740 blo.w 0x57bf6 | goto label_109;
| }
0x00057744 cmp.w r2, 0x4000 |
0x00057748 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x4000) {
0x0005774c blo.w 0x57be4 | goto label_110;
| }
0x00057750 adds r0, r4, 4 | r0 = r4 + 4;
0x00057752 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x00057756 mov r3, r0 | r3 = r0;
| label_48:
0x00057758 mov r2, r4 | r2 = r4;
0x0005775a adds r3, 4 | r3 += 4;
0x0005775c movs r4, 0 | r4 = 0;
| label_50:
0x0005775e ldr r1, [sp, 0x164] | r1 = var_164h;
0x00057760 add r8, r3 | r8 += r3;
0x00057762 cmp r7, r1 |
0x00057764 it lt |
| if (r7 >= r1) {
0x00057766 movlt r1, 0 | r1 = 0;
| }
| if (r7 < r1) {
0x00057768 blt 0x57778 | goto label_111;
| }
0x0005776a add r0, sp, 0x168 | r0 += var_168h;
0x0005776c movs r1, 0 | r1 = 0;
| do {
0x0005776e ldr ip, [r0], 4 | ip = *(r0);
| r0 += 4;
0x00057772 adds r1, 1 | r1++;
0x00057774 cmp ip, r7 |
0x00057776 ble 0x5776e |
| } while (ip <= r7);
| label_111:
0x00057778 add r0, sp, 0x188 | r0 += var_188h;
0x0005777a add.w r1, r0, r1, lsl 2 | r1 = r0 + (r1 << 2);
0x0005777e ldr r1, [r1, -0x3c] | r1 = *((r1 - 0x3c));
0x00057782 cmp r2, r1 |
| if (r2 <= r1) {
0x00057784 bhi 0x5778e |
0x00057786 adds r0, r2, r3 | r0 = r2 + r3;
0x00057788 cmp r1, r0 |
| if (r1 <= r0) {
0x0005778a blo.w 0x57bfc | goto label_112;
| }
| }
0x0005778e str.w fp, [sp, 8] | __asm ("str.w fp, [var_8h]");
0x00057792 mov r0, sl | r0 = sl;
0x00057794 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00057796 strd r4, r1, [sp] | __asm ("strd r4, r1, [sp]");
0x0005779a ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005779c add r1, r7 | r1 += r7;
0x0005779e bl 0x56850 | fcn_00056850 (r0, r1, r2, r3, r4, r5);
0x000577a2 ldr.w r3, [fp] | r3 = *(fp);
0x000577a6 cmp r3, 0 |
| if (r3 != 0) {
0x000577a8 bne.w 0x579ea | goto label_105;
| }
0x000577ac adds r7, 1 | r7++;
0x000577ae cmp r7, r6 |
| if (r7 < r6) {
0x000577b0 blt 0x576ec | goto label_28;
| }
| label_106:
0x000577b2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000577b4 str.w sl, [sp, 0x68] | __asm ("str.w sl, [var_68h]");
0x000577b8 str.w fp, [sp, 0x20] | __asm ("str.w fp, [var_20h]");
0x000577bc rsb.w r2, r3, 1 | r2 = 1 - r3;
0x000577c0 rsb.w r3, r3, 2 | r3 = 2 - r3;
0x000577c4 str r3, [sp, 0x4c] | var_4ch = r3;
0x000577c6 add r3, sp, 0x13c | r3 += var_13ch;
0x000577c8 str r2, [sp, 0x30] | var_30h = r2;
0x000577ca str r3, [sp, 0x14] | var_14h = r3;
| label_36:
0x000577cc ldr r0, [sp, 0x30] | r0 = var_30h;
0x000577ce mov r7, r0 | r7 = r0;
0x000577d0 eor.w r2, r0, r0, asr 31 | r2 = r0 ^ (r0 >> 31);
0x000577d4 sub.w r2, r2, r0, asr 31 | r2 -= (r0 >> 31);
0x000577d8 add.w r3, r2, 0x188 | r3 = r2 + 0x188;
0x000577dc str r2, [sp, 0x24] | var_24h = r2;
0x000577de add.w r1, sp, r3 | r1 = sp + r3;
0x000577e2 ldrb r3, [r1, -0xc] | r3 = *((r1 - 0xc));
0x000577e6 str r1, [sp, 0x64] | var_64h = r1;
0x000577e8 cmp r3, 0 |
| if (r3 != 0) {
0x000577ea bne.w 0x57a5c | goto label_113;
| }
0x000577ee cmp r0, 0 |
| if (r0 < 0) {
0x000577f0 blt.w 0x57bb2 | goto label_114;
| }
| if (r0 == 0) {
0x000577f4 beq.w 0x57b90 | goto label_115;
| }
0x000577f8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000577fa subs r3, 1 | r3--;
| label_43:
0x000577fc ldr r2, [sp, 0x44] | r2 = var_44h;
0x000577fe ldr r1, [sp, 0x24] | r1 = var_24h;
0x00057800 cmp r2, r1 |
0x00057802 itett gt |
| if (r2 <= r1) {
0x00057804 addgt r2, sp, 0x188 | r2 += var_188h;
| }
| if (r2 > r1) {
0x00057806 lslle r3, r3, 2 | r3 <<= 2;
| }
| if (r2 <= r1) {
0x00057808 addgt r2, r2, r3, lsl 2 | r2 += (r3 << 2);
| }
| if (r2 > r1) {
0x0005780c lsls r3, r3, 2 | r3 <<= 2;
| }
0x0005780e it gt |
| if (r3 <= r3) {
0x00057810 ldrgt r1, [sp, 0x7c] | r1 = var_7ch;
| }
0x00057812 add.w r3, r3, 0x188 | r3 += 0x188;
0x00057816 it gt |
| if (r3 <= r3) {
0x00057818 ldrgt r2, [r2, -0x9c] | r2 = *((r2 - 0x9c));
| }
0x0005781c add r3, sp, r3 | r3 = sp + r3;
0x0005781e it le |
| if (r3 > r3) {
0x00057820 ldrle sb, [sp, 0x13c] | sb = var_13ch;
| }
0x00057824 ldr r7, [r3, -0xb0] | r7 = *((r3 - 0xb0));
0x00057828 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0005782a it gt |
| if (r3 <= r3) {
0x0005782c addgt sb, r1, r2 | sb = r1 + r2;
| }
0x00057830 add r2, sp, 0x188 | r2 += var_188h;
0x00057832 add r7, r3 | r7 += r3;
0x00057834 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00057836 cmp sb, r7 |
0x00057838 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x0005783c ldr r4, [r3, -0xc4] | r4 = *((r3 - 0xc4));
0x00057840 ldr r8, [r3, -0xb0] | r8 = *((r3 - 0xb0));
0x00057844 ldr r2, [r4, 0x40] | r2 = *((r4 + 0x40));
0x00057846 ldrh r5, [r4, 0x18] | r5 = *((r4 + 0x18));
0x00057848 sub.w r6, r8, r7 | r6 = r8 - r7;
0x0005784c ldrb r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0005784e ldr.w fp, [r4, 0x38] | fp = *((r4 + 0x38));
0x00057852 add.w sl, r2, r6, lsl 1 | sl = r2 + (r6 << 1);
0x00057856 add.w r2, sb, r5 | r2 = sb + r5;
0x0005785a add r3, r2 | r3 += r2;
0x0005785c str r3, [sp, 0x3c] | var_3ch = r3;
0x0005785e ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00057860 str r3, [sp, 0x34] | var_34h = r3;
| if (sb < r7) {
0x00057862 bge 0x57888 |
0x00057864 mov r1, sb | r1 = sb;
0x00057866 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00057868 sub.w r2, r7, sb | r2 = r7 - sb;
0x0005786c mov r0, r4 | r0 = r4;
0x0005786e bl 0x3332c | r0 = fcn_0003332c (r0, r1, r2, r3);
0x00057872 cmp r5, r0 |
0x00057874 mov r1, r0 | r1 = r0;
| if (r5 < r0) {
0x00057876 blt.w 0x57a72 | goto label_116;
| }
0x0005787a ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x0005787c lsls r2, r5, 1 | r2 = r5 << 1;
0x0005787e subs r5, r5, r1 | r5 -= r1;
0x00057880 add.w r1, r0, r1, lsl 1 | r1 = r0 + (r1 << 1);
0x00057884 blx 0x7d44 | fcn_00007d44 ();
| }
| label_42:
0x00057888 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005788a cmp r3, r8 |
| if (r3 > r8) {
0x0005788c bgt.w 0x57bd2 | goto label_117;
| }
| label_47:
0x00057890 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00057892 adds r3, r2, 5 | r3 = r2 + 5;
0x00057894 adds r2, 6 | r2 += 6;
0x00057896 ldrb.w r1, [fp, r3] | r1 = *((fp + r3));
0x0005789a add r3, fp | r3 += fp;
0x0005789c str r3, [sp, 0x58] | var_58h = r3;
0x0005789e ldrb.w r3, [fp, r2] | r3 = *((fp + r2));
0x000578a2 add r2, fp | r2 += fp;
0x000578a4 str r2, [sp, 0x60] | var_60h = r2;
0x000578a6 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000578a8 orr.w r3, r3, r1, lsl 8 | r3 |= (r1 << 8);
0x000578ac subs r3, 1 | r3--;
0x000578ae uxth r3, r3 | r3 = (int16_t) r3;
0x000578b0 adds r3, 1 | r3++;
0x000578b2 add r3, fp | r3 += fp;
0x000578b4 cmp r3, sl |
0x000578b6 str r3, [r2] | *(r2) = r3;
| if (r3 <= sl) {
0x000578b8 blo.w 0x57bca | goto label_118;
| }
0x000578bc cmp r7, sb |
0x000578be ldr r1, [r4, 0x40] | r1 = *((r4 + 0x40));
| if (r7 < sb) {
0x000578c0 blt.w 0x57b4e | goto label_119;
| }
| label_40:
0x000578c4 ldrb r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000578c6 cmp r0, 0 |
| if (r0 == 0) {
0x000578c8 beq.w 0x579f8 | goto label_120;
| }
0x000578cc add.w r3, r4, 0x1c | r3 = r4 + 0x1c;
0x000578d0 mov r8, r4 | r8 = r4;
0x000578d2 str r3, [sp, 0x50] | var_50h = r3;
0x000578d4 movs r3, 0 | r3 = 0;
0x000578d6 str r3, [sp, 0x3c] | var_3ch = r3;
0x000578d8 str.w fp, [sp, 0x70] | __asm ("str.w fp, [var_70h]");
0x000578dc b 0x5791c | goto label_121;
| label_29:
0x000578de ldr r2, [sp, 0x148] | r2 = var_148h;
0x000578e0 adds r5, 1 | r5++;
0x000578e2 ldrh.w r2, [r2, r4, lsl 1] | offset_22 = r4 << 1;
| r2 = *((r2 + offset_22));
| if (r2 == 0) {
0x000578e6 cbnz r2, 0x578f0 |
0x000578e8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000578ea mov r1, r4 | r1 = r4;
0x000578ec bl 0x9780 | fcn_00009780 (r0, r1, r2);
| }
0x000578f0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000578f2 mov r3, fp | r3 = fp;
0x000578f4 mov r1, sl | r1 = sl;
0x000578f6 mov r0, r8 | r0 = r8;
0x000578f8 str r4, [sp] | *(sp) = r4;
0x000578fa str r2, [sp, 8] | var_8h = r2;
0x000578fc movs r2, 1 | r2 = 1;
0x000578fe str r2, [sp, 4] | var_4h = r2;
0x00057900 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00057902 bl 0x2e980 | r0 = fcn_0002e980 (r0, r1, r2, r3, r4, r5, r6);
0x00057906 cmp r0, 0 |
| if (r0 != 0) {
0x00057908 bne 0x579aa | goto label_122;
| }
0x0005790a ldr.w r1, [r8, 0x40] | r1 = *((r8 + 0x40));
0x0005790e ldrb.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
| do {
0x00057912 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00057914 adds r3, 1 | r3++;
0x00057916 cmp r3, r0 |
0x00057918 str r3, [sp, 0x3c] | var_3ch = r3;
| if (r3 >= r0) {
0x0005791a bge 0x579f2 | goto label_123;
| }
| label_121:
0x0005791c ldr r3, [sp, 0x50] | r3 = var_50h;
0x0005791e ldrh r4, [r3], 2 | r4 = *(r3);
| r3 += 2;
0x00057922 add r4, sb | r4 += sb;
0x00057924 str r3, [sp, 0x50] | var_50h = r3;
0x00057926 subs r2, r4, r7 | r2 = r4 - r7;
0x00057928 mvns r3, r2 | r3 = ~r2;
0x0005792a cmp r2, r6 |
0x0005792c lsr.w r3, r3, 0x1f | r3 >>= 0x1f;
0x00057930 it ge |
| if (r2 < r6) {
0x00057932 movge r3, 0 | r3 = 0;
| }
0x00057934 cmp r3, 0 |
0x00057936 beq 0x57912 |
| } while (r3 == 0);
0x00057938 cmp r2, r5 |
0x0005793a add.w fp, r1, r2, lsl 1 |
| if (r2 >= r5) {
0x0005793e bge 0x578de | goto label_29;
| }
0x00057940 subs r2, r5, r2 | r2 = r5 - r2;
0x00057942 mov r1, fp | r1 = fp;
0x00057944 lsls r2, r2, 1 | r2 <<= 1;
0x00057946 add.w r0, fp, 2 | r0 += var_2h;
0x0005794a blx 0x7d44 | fcn_00007d44 ();
0x0005794e b 0x578de | goto label_29;
| label_54:
0x00057950 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00057952 b.w 0x56ff6 | goto label_30;
| label_97:
0x00057956 ldr r3, [sp, 0xc4] | r3 = var_c4h;
0x00057958 tst.w r8, 8 |
0x0005795c ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0005795e ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00057960 rev r2, r2 | r2 = SWAP32 (r2);
0x00057962 str r2, [r1] | *(r1) = r2;
| if ((r8 & 8) == 0) {
0x00057964 bne 0x57972 |
0x00057966 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00057968 cmp r2, 1 |
| if (r2 == 1) {
0x0005796a beq 0x57972 | goto label_124;
| }
0x0005796c str r5, [sp, 0x18] | var_18h = r5;
| label_98:
0x0005796e add r2, sp, 0xb4 | r2 += var_b4h;
0x00057970 b 0x575aa | goto label_31;
| }
| label_124:
0x00057972 movs r3, 1 | r3 = 1;
0x00057974 str r3, [sp, 0x18] | var_18h = r3;
0x00057976 b 0x575b8 | goto label_32;
| label_103:
0x00057978 ldr r1, [r6] | r1 = *(r6);
0x0005797a movs r2, 5 | r2 = 5;
0x0005797c str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00057980 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00057982 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00057984 rev r1, r1 | r1 = SWAP32 (r1);
0x00057986 bl 0x557bc | fcn_000557bc (r0, r1, r2, r3, r4);
0x0005798a b 0x576b2 | goto label_33;
| label_101:
0x0005798c ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005798e add r3, sp, 0x188 | r3 += var_188h;
0x00057990 adds r2, 1 | r2++;
0x00057992 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x00057996 str r2, [sp, 0x30] | var_30h = r2;
0x00057998 ldr r4, [r3, -0xc4] | r4 = *((r3 - 0xc4));
0x0005799c lsls r3, r2, 2 | r3 = r2 << 2;
0x0005799e str r3, [sp, 0x3c] | var_3ch = r3;
0x000579a0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000579a2 cmp r3, 0 |
| if (r3 != 0) {
0x000579a4 bne.w 0x57692 | goto label_34;
| }
0x000579a8 b 0x576d6 | goto label_35;
| label_122:
0x000579aa mov r4, r8 | r4 = r8;
| label_45:
0x000579ac adds r3, r6, r7 | r3 = r6 + r7;
0x000579ae lsls r5, r7, 1 | r5 = r7 << 1;
0x000579b0 lsl.w sb, r3, 1 | sb = r3 << 1;
| do {
0x000579b4 ldr.w r8, [sp, 0x148] | r8 = var_148h;
0x000579b8 ldrh.w r3, [r8, r5] | r3 = *((r8 + r5));
| if (r3 == 0) {
0x000579bc cbnz r3, 0x579ce |
0x000579be ldrd r0, r3, [sp, 0x140] | __asm ("ldrd r0, r3, [var_140h]");
0x000579c2 ldr.w r1, [r3, r5, lsl 1] | offset_23 = r5 << 1;
| r1 = *((r3 + offset_23));
0x000579c6 ldr r3, [r0, 0x4c] | r3 = *((r0 + 0x4c));
0x000579c8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000579ca strh.w r0, [r8, r5] | *((r8 + r5)) = r0;
| }
0x000579ce adds r5, 2 | r5 += 2;
0x000579d0 cmp sb, r5 |
0x000579d2 bne 0x579b4 |
| } while (sb != r5);
| label_46:
0x000579d4 mov r3, r4 | r3 = r4;
0x000579d6 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000579d8 mov r2, r6 | r2 = r6;
0x000579da mov r1, r7 | r1 = r7;
0x000579dc bl 0x2a128 | fcn_0002a128 (r0, r1, r2, r3);
0x000579e0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000579e2 str r0, [r3] | *(r3) = r0;
| if (r0 == 0) {
0x000579e4 cbz r0, 0x57a40 | goto label_125;
| }
0x000579e6 ldr.w fp, [sp, 0x20] | fp = var_20h;
| do {
| label_105:
0x000579ea ldr r3, [sp, 0x18] | r3 = var_18h;
0x000579ec str r3, [sp, 0x48] | var_48h = r3;
0x000579ee b.w 0x56c4e | goto label_4;
| label_123:
0x000579f2 ldr.w fp, [sp, 0x70] | fp = var_70h;
0x000579f6 mov r4, r8 | r4 = r8;
| label_120:
0x000579f8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000579fa add.w r3, r1, r5, lsl 1 | r3 = r1 + (r5 << 1);
0x000579fe mov r0, r4 | r0 = r4;
0x00057a00 mov r1, sl | r1 = sl;
0x00057a02 str r2, [sp, 8] | var_8h = r2;
0x00057a04 subs r2, r6, r5 | r2 = r6 - r5;
0x00057a06 add r5, r7 | r5 += r7;
0x00057a08 str r2, [sp, 4] | var_4h = r2;
0x00057a0a str r5, [sp] | *(sp) = r5;
0x00057a0c ldr r5, [sp, 0x38] | r5 = var_38h;
0x00057a0e mov r2, r5 | r2 = r5;
0x00057a10 bl 0x2e980 | r0 = fcn_0002e980 (r0, r1, r2, r3, r4, r5, r6);
0x00057a14 cmp r0, 0 |
| if (r0 != 0) {
0x00057a16 bne.w 0x57bca | goto label_118;
| }
0x00057a1a uxth r6, r6 | r6 = (int16_t) r6;
0x00057a1c ldr r3, [sp, 0x34] | r3 = var_34h;
0x00057a1e strb r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00057a20 strh r6, [r4, 0x18] | *((r4 + 0x18)) = r6;
0x00057a22 lsrs r6, r6, 8 | r6 >>= 8;
0x00057a24 add r3, fp | r3 += fp;
0x00057a26 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00057a28 strb r6, [r3, 3] | *((r3 + 3)) = r6;
0x00057a2a ldrh r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00057a2c str r0, [r1] | *(r1) = r0;
0x00057a2e ldr r1, [sp, 0x58] | r1 = var_58h;
0x00057a30 strb r2, [r3, 4] | *((r3 + 4)) = r2;
0x00057a32 ldr r3, [r5] | r3 = *(r5);
0x00057a34 sub.w r3, r3, fp | r3 -= fp;
0x00057a38 asrs r2, r3, 8 | r2 = r3 >> 8;
0x00057a3a strb r2, [r1] | *(r1) = r2;
0x00057a3c ldr r2, [sp, 0x60] | r2 = var_60h;
0x00057a3e strb r3, [r2] | *(r2) = r3;
| label_125:
0x00057a40 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00057a42 mov.w r2, 1 | r2 = 1;
0x00057a46 strb r2, [r3, -0xc] | *((r3 - 0xc)) = r2;
0x00057a4a add r2, sp, 0x188 | r2 += var_188h;
0x00057a4c ldr r3, [sp, 0x24] | r3 = var_24h;
0x00057a4e add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x00057a52 ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x00057a54 ldr r3, [r3, -0x88] | r3 = *((r3 - 0x88));
0x00057a58 subs r3, r2, r3 | r3 = r2 - r3;
0x00057a5a str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
| label_113:
0x00057a5c ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00057a5e ldr r2, [sp, 0x18] | r2 = var_18h;
0x00057a60 cmp r3, r2 |
| if (r3 < r2) {
0x00057a62 bge 0x57aa2 |
| label_44:
0x00057a64 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00057a66 adds r3, 1 | r3++;
0x00057a68 str r3, [sp, 0x30] | var_30h = r3;
0x00057a6a ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00057a6c adds r3, 1 | r3++;
0x00057a6e str r3, [sp, 0x4c] | var_4ch = r3;
0x00057a70 b 0x577cc | goto label_36;
| label_116:
0x00057a72 ldr.w fp, [sp, 0x20] | fp = var_20h;
0x00057a76 blx 0x7f8c | fcn_00007f8c ();
0x00057a7a ldr r3, [sp, 0x18] | r3 = var_18h;
0x00057a7c adds r0, 0x14 | r0 += 0x14;
0x00057a7e ldr r2, [pc, 0x1d0] |
0x00057a80 ldr r1, [pc, 0x1d0] |
0x00057a82 str r3, [sp, 0x48] | var_48h = r3;
0x00057a84 movw r3, 0x1bf1 |
0x00057a88 movt r3, 1 | r3 = 0x11bf1;
0x00057a8c str r0, [sp] | *(sp) = r0;
0x00057a8e add r2, pc | r2 = 0xaf6e4;
0x00057a90 add r1, pc | r1 = 0xaf6e8;
0x00057a92 movs r0, 0xb | r0 = 0xb;
0x00057a94 blx 0x8474 | fcn_00008474 ();
0x00057a98 movs r3, 0xb | r3 = 0xb;
0x00057a9a str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x00057a9e b.w 0x56c4e | goto label_4;
| }
0x00057aa2 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00057aa4 ldr.w sl, [sp, 0x68] | sl = var_68h;
0x00057aa8 ldr.w fp, [sp, 0x20] | fp = var_20h;
| if (r3 != 0) {
0x00057aac cbz r3, 0x57ac0 |
0x00057aae ldrh.w r3, [sl, 0x18] | r3 = *((sl + 0x18));
| if (r3 != 0) {
0x00057ab2 cbnz r3, 0x57ac0 | goto label_126;
| }
0x00057ab4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00057ab6 ldrb.w r2, [sl, 9] | r2 = *((sl + 9));
0x00057aba ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00057abc cmp r2, r3 |
| if (r2 <= r3) {
0x00057abe ble 0x57ade | goto label_127;
| }
| }
| label_126:
0x00057ac0 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00057ac2 ldrb r3, [r3, 0x11] | r3 = *((r3 + 0x11));
| if (r3 != 0) {
0x00057ac4 cbz r3, 0x57aca |
0x00057ac6 ldr r3, [sp, 0x54] | r3 = var_54h;
| if (r3 == 0) {
0x00057ac8 cbz r3, 0x57b14 | goto label_128;
| }
| }
| label_38:
0x00057aca ldr r4, [sp, 0x18] | r4 = var_18h;
0x00057acc ldr r5, [sp, 0x28] | r5 = var_28h;
| label_37:
0x00057ace ldr r3, [sp, 0x44] | r3 = var_44h;
0x00057ad0 cmp r4, r3 |
0x00057ad2 bge 0x579ea |
| } while (r4 >= r3);
0x00057ad4 ldr.w r3, [fp] | r3 = *(fp);
| if (r3 == 0) {
0x00057ad8 cbz r3, 0x57b3c | goto label_129;
| }
| label_39:
0x00057ada adds r4, 1 | r4++;
0x00057adc b 0x57ace | goto label_37;
| label_127:
0x00057ade ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x00057ae0 mov.w r1, -1 | r1 = -1;
0x00057ae4 mov r0, r4 | r0 = r4;
0x00057ae6 bl 0x3505c | fcn_0003505c (r0, r1);
0x00057aea str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x00057aee cmp r0, 0 |
| if (r0 != 0) {
0x00057af0 bne 0x57aca | goto label_38;
| }
0x00057af2 mov r1, sl | r1 = sl;
0x00057af4 mov r2, fp | r2 = fp;
0x00057af6 mov r0, r4 | r0 = r4;
0x00057af8 bl 0x55aa8 | fcn_00055aa8 (r0, r1, r2);
0x00057afc ldr.w r3, [fp] | r3 = *(fp);
0x00057b00 cmp r3, 0 |
| if (r3 != 0) {
0x00057b02 bne 0x57aca | goto label_38;
| }
0x00057b04 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00057b06 mov r1, r4 | r1 = r4;
0x00057b08 ldr r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x00057b0a bl 0x56398 | fcn_00056398 (r0, r1, r2, r3);
0x00057b0e str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x00057b12 b 0x57aca | goto label_38;
| label_128:
0x00057b14 ldr r4, [sp, 0x48] | r4 = var_48h;
0x00057b16 mov r5, fp | r5 = fp;
0x00057b18 ldr r6, [sp, 0x6c] | r6 = var_6ch;
| do {
0x00057b1a ldr r3, [r6], 4 | r3 = *(r6);
| r6 += 4;
0x00057b1e movs r2, 5 | r2 = 5;
0x00057b20 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00057b22 adds r4, 1 | r4++;
0x00057b24 ldr r1, [r3, 0x38] | r1 = *((r3 + 0x38));
0x00057b26 ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x00057b28 str r5, [sp] | *(sp) = r5;
0x00057b2a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00057b2c rev r1, r1 | r1 = SWAP32 (r1);
0x00057b2e bl 0x557bc | fcn_000557bc (r0, r1, r2, r3, r4);
0x00057b32 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00057b34 cmp r4, r3 |
0x00057b36 bne 0x57b1a |
| } while (r4 != r3);
0x00057b38 mov fp, r5 |
0x00057b3a b 0x57aca | goto label_38;
| label_129:
0x00057b3c ldr.w r1, [r5, r4, lsl 2] | offset_24 = r4 << 2;
| r1 = *((r5 + offset_24));
0x00057b40 ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x00057b42 ldr r0, [r1, 0x34] | r0 = *((r1 + 0x34));
0x00057b44 bl 0x56398 | fcn_00056398 (r0, r1, r2, r3);
0x00057b48 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x00057b4c b 0x57ada | goto label_39;
| label_119:
0x00057b4e sub.w r8, sb, r7 | r8 = sb - r7;
0x00057b52 lsls r2, r5, 1 | r2 = r5 << 1;
0x00057b54 cmp r8, r6 |
0x00057b56 str r1, [sp, 0x3c] | var_3ch = r1;
0x00057b58 it ge |
| if (r8 < r6) {
0x00057b5a movge r8, r6 | r8 = r6;
| }
0x00057b5c add.w r0, r1, r8, lsl 1 | r0 = r1 + (r8 << 1);
0x00057b60 blx 0x7d44 | fcn_00007d44 ();
0x00057b64 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00057b66 mov r0, r4 | r0 = r4;
0x00057b68 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00057b6a str r7, [sp] | *(sp) = r7;
0x00057b6c mov r3, r1 | r3 = r1;
0x00057b6e mov r1, sl | r1 = sl;
0x00057b70 strd r8, r2, [sp, 4] | __asm ("strd r8, r2, [sp, 4]");
0x00057b74 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00057b76 bl 0x2e980 | r0 = fcn_0002e980 (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00057b7a cbnz r0, 0x57bca | goto label_118;
| }
0x00057b7c ldr r1, [r4, 0x40] | r1 = *((r4 + 0x40));
0x00057b7e add r5, r8 | r5 += r8;
0x00057b80 b 0x578c4 | goto label_40;
| label_104:
0x00057b82 mov r2, r6 | r2 = r6;
0x00057b84 mov r3, fp | r3 = fp;
0x00057b86 mov r1, r5 | r1 = r5;
0x00057b88 mov r0, r4 | r0 = r4;
0x00057b8a bl 0x55930 | fcn_00055930 (r0, r1, r2, r3);
0x00057b8e b 0x576ca | goto label_41;
| label_115:
0x00057b90 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x00057b92 ldr r6, [sp, 0xd8] | r6 = var_d8h;
0x00057b94 ldr.w sb, [sp, 0x30] | sb = var_30h;
0x00057b98 ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x00057b9a ldrh r5, [r4, 0x18] | r5 = *((r4 + 0x18));
0x00057b9c mov r8, r6 | r8 = r6;
0x00057b9e ldr.w fp, [r4, 0x38] | fp = *((r4 + 0x38));
0x00057ba2 add.w sl, r3, r6, lsl 1 | sl = r3 + (r6 << 1);
0x00057ba6 ldrb r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00057ba8 add r3, r5 | r3 += r5;
0x00057baa str r3, [sp, 0x3c] | var_3ch = r3;
0x00057bac ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00057bae str r3, [sp, 0x34] | var_34h = r3;
0x00057bb0 b 0x57888 | goto label_42;
| label_114:
0x00057bb2 subs r3, r2, 1 | r3 = r2 - 1;
0x00057bb4 add r2, sp, 0x188 | r2 += var_188h;
0x00057bb6 add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x00057bba ldr r1, [r2, -0x9c] | r1 = *((r2 - 0x9c));
0x00057bbe ldr r2, [r2, -0xb0] | r2 = *((r2 - 0xb0));
0x00057bc2 cmp r1, r2 |
| if (r1 >= r2) {
0x00057bc4 bge.w 0x577fc | goto label_43;
| }
0x00057bc8 b 0x57a64 | goto label_44;
| label_118:
0x00057bca cmp r6, 0 |
| if (r6 > 0) {
0x00057bcc bgt.w 0x579ac | goto label_45;
| }
0x00057bd0 b 0x579d4 | goto label_46;
| label_117:
0x00057bd2 sub.w r2, r3, r8 | r2 = r3 - r8;
0x00057bd6 mov r1, r8 | r1 = r8;
0x00057bd8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00057bda mov r0, r4 | r0 = r4;
0x00057bdc bl 0x3332c | r0 = fcn_0003332c (r0, r1, r2, r3);
0x00057be0 subs r5, r5, r0 | r5 -= r0;
0x00057be2 b 0x57890 | goto label_47;
| label_110:
0x00057be4 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x00057be6 and r2, r2, 0x7f | r2 &= 0x7f;
0x00057bea strb r2, [r4, 5] | *((r4 + 5)) = r2;
0x00057bec orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00057bf0 strb r3, [r4, 4] | *((r4 + 4)) = r3;
0x00057bf2 movs r3, 2 | r3 = 2;
0x00057bf4 b 0x57758 | goto label_48;
| label_109:
0x00057bf6 movs r3, 1 | r3 = 1;
0x00057bf8 strb r2, [r4, 4] | *((r4 + 4)) = r2;
0x00057bfa b 0x57758 | goto label_48;
| label_112:
0x00057bfc ldr r2, [pc, 0x58] |
0x00057bfe movw r1, 0x1fbb |
0x00057c02 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00057c04 movt r1, 1 | r1 = 0x11fbb;
0x00057c08 movs r0, 0xb | r0 = 0xb;
0x00057c0a add r2, pc | r2 = 0xaf866;
0x00057c0c str r3, [sp, 0x48] | var_48h = r3;
0x00057c0e bl 0x23164 | fcn_00023164 (r0, r1, r2);
0x00057c12 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x00057c16 b.w 0x56c4e | goto label_4;
| label_102:
0x00057c1a ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x00057c1c cmp r3, r6 |
| if (r3 > r6) {
0x00057c1e bhi.w 0x576aa | goto label_49;
| }
0x00057c22 ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x00057c24 cmp r3, r6 |
| if (r3 > r6) {
0x00057c26 bhi.w 0x576d6 | goto label_35;
| }
0x00057c2a b 0x576aa | goto label_49;
| label_108:
0x00057c2c cmp r0, 4 |
0x00057c2e sub.w r2, r2, 4 | r2 -= 4;
| if (r0 != 4) {
0x00057c32 bne.w 0x5775e | goto label_50;
| }
0x00057c36 ldr.w r3, [sl, 0x4c] | r3 = *((sl + 0x4c));
0x00057c3a mov r1, r2 | r1 = r2;
0x00057c3c mov r0, sl | r0 = sl;
0x00057c3e str r2, [sp, 0x20] | var_20h = r2;
0x00057c40 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00057c42 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00057c44 mov r3, r0 | r3 = r0;
0x00057c46 b 0x5775e | goto label_50;
| label_107:
0x00057c48 ldr r1, [r5, 0x38] | r1 = *((r5 + 0x38));
0x00057c4a ldr r0, [r2] | r0 = *(r2);
0x00057c4c str r0, [r1, 8] | *((r1 + 8)) = r0;
0x00057c4e b 0x5775e | goto label_50;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x58214 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00058214 () | void fcn_00058214 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_1h;
| int16_t var_ch_2;
| int16_t var_24h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00058214 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00058218 sub sp, 0x2c |
0x0005821a str r2, [sp, 0xc] | var_ch = r2;
0x0005821c ldr r2, [pc, 0x3b8] |
0x0005821e ldr r3, [pc, 0x3bc] | r3 = *(0x585de);
0x00058220 ldr r5, [r0, 0x28] | r5 = *(arg_0hx28);
0x00058222 add r2, pc | r2 = 0xb07fe;
0x00058224 ldr r3, [r2, r3] |
0x00058226 ldr r3, [r3] | r3 = *(0xb07fe);
0x00058228 str r3, [sp, 0x24] | var_24h = r3;
0x0005822a mov.w r3, 0 | r3 = 0;
0x0005822e cmp r5, 0 |
| if (r5 != 0) {
0x00058230 bne 0x58302 | goto label_1;
| }
0x00058232 ldr r3, [pc, 0x3ac] |
0x00058234 mov r4, r0 | r4 = r0;
0x00058236 mov r6, r1 | r6 = r1;
0x00058238 add r3, pc |
0x0005823a ldr.w r3, [r3, 0x100] | r3 = *(0xb091e);
| if (r3 != 0) {
0x0005823e cbz r3, 0x5824a |
0x00058240 mov.w r0, 0x190 | r0 = 0x190;
0x00058244 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
0x00058246 cmp r0, 0 |
| if (r0 != 0) {
0x00058248 bne 0x58320 | goto label_8;
| }
| }
0x0005824a ldrb r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0005824c cmp r3, 2 |
| if (r3 < 2) {
0x0005824e bls 0x58302 | goto label_1;
| }
0x00058250 ldrb r3, [r4, 0xc] | r3 = *((r4 + 0xc));
| if (r3 == 0) {
0x00058252 cbz r3, 0x582ac | goto label_9;
| }
0x00058254 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00058256 ldr r3, [r3] | r3 = *(r3);
0x00058258 cmp r3, 0 |
| if (r3 == 0) {
0x0005825a beq 0x58324 | goto label_10;
| }
0x0005825c ldr.w r8, [r4, 0xd4] | r8 = *((r4 + 0xd4));
0x00058260 ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x00058264 cmp r2, 0 |
| if (r2 < 0) {
0x00058266 bge 0x58282 |
0x00058268 mov.w r0, 0xfc00 |
0x0005826c movt r0, 0xffff | r0 = 0x-400;
0x00058270 smull r0, r1, r2, r0 | r0:r1 = r2 * r0;
0x00058274 ldrd r2, r3, [r8, 0x18] | __asm ("ldrd r2, r3, [r8, 0x18]");
0x00058278 add r2, r3 | r2 += r3;
0x0005827a asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0005827c bl 0xac13c | r0 = fcn_000ac13c (r0, r1, r2, r3);
0x00058280 mov r2, r0 | r2 = r0;
| }
0x00058282 ldr.w r3, [r8] | r3 = *(r8);
0x00058286 cmp r3, 0 |
| if (r3 == 0) {
0x00058288 beq 0x58324 | goto label_10;
| }
0x0005828a ldr r7, [sp, 0xc] | r7 = var_ch;
0x0005828c movs r1, 0 | r1 = 0;
| do {
0x0005828e ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x00058290 adds r1, 1 | r1++;
0x00058292 cmp r3, 0 |
0x00058294 bne 0x5828e |
| } while (r3 != 0);
0x00058296 str r7, [sp, 0xc] | var_ch = r7;
0x00058298 cmp r2, 0 |
| if (r2 == 0) {
0x0005829a beq 0x58324 | goto label_10;
| }
0x0005829c movs r0, 0x64 | r0 = 0x64;
0x0005829e asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000582a0 smull r0, r1, r1, r0 | r0:r1 = r1 * r0;
0x000582a4 bl 0xac13c | r0 = fcn_000ac13c (r0, r1, r2, r3);
0x000582a8 cmp r0, 0x18 |
| if (r0 <= 0x18) {
0x000582aa ble 0x58324 | goto label_10;
| }
| label_9:
0x000582ac ldr.w r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
0x000582b0 cmp r3, 0 |
| if (r3 == 0) {
0x000582b2 beq 0x58336 | goto label_11;
| }
0x000582b4 ldr.w r3, [r4, 0xd4] | r3 = *((r4 + 0xd4));
0x000582b8 movs r6, 0 | r6 = 0;
0x000582ba str r6, [sp, 0x18] | var_18h = r6;
0x000582bc ldr r0, [r3] | r0 = *(r3);
0x000582be bl 0x134d4 | r0 = fcn_000134d4 (r0);
0x000582c2 mov r1, r0 | r1 = r0;
0x000582c4 cmp r0, 0 |
| if (r0 == 0) {
0x000582c6 beq.w 0x58556 | goto label_12;
| }
| label_3:
0x000582ca movs r3, 1 | r3 = 1;
0x000582cc ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x000582ce mov r0, r4 | r0 = r4;
0x000582d0 bl 0x518c8 | fcn_000518c8 (r0, r1, r2, r3);
0x000582d4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000582d6 mov r6, r0 | r6 = r0;
| if (r3 != 0) {
0x000582d8 cbz r3, 0x582e0 |
0x000582da mov r0, r3 | r0 = r3;
0x000582dc bl 0x11fa4 | fcn_00011fa4 (r0);
| }
0x000582e0 cmp r6, 0 |
| if (r6 != 0) {
0x000582e2 bne.w 0x5852a | goto label_13;
| }
0x000582e6 ldr.w r6, [r4, 0xd4] | r6 = *((r4 + 0xd4));
0x000582ea ldr r0, [r6] | r0 = *(r6);
| if (r0 == 0) {
0x000582ec cbz r0, 0x582f8 | goto label_0;
| }
| do {
0x000582ee bl 0x15770 | fcn_00015770 (r0);
0x000582f2 ldr r0, [r6] | r0 = *(r6);
0x000582f4 cmp r0, 0 |
0x000582f6 bne 0x582ee |
| } while (r0 != 0);
| label_0:
0x000582f8 ldr.w r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
| if (r3 != 0) {
0x000582fc cbnz r3, 0x58302 | goto label_1;
| }
0x000582fe movs r3, 5 | r3 = 5;
0x00058300 strb r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
| do {
| label_1:
0x00058302 ldr r2, [pc, 0x2e0] |
0x00058304 ldr r3, [pc, 0x2d4] | r3 = *(0x585dc);
0x00058306 add r2, pc | r2 = 0xb08f0;
0x00058308 ldr r3, [r2, r3] | r3 = *(0xb08f0);
0x0005830a ldr r2, [r3] | r2 = *(0xb08f0);
0x0005830c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005830e eors r2, r3 | r2 ^= r3;
0x00058310 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00058314 bne.w 0x585d2 | goto label_14;
| }
0x00058318 mov r0, r5 | r0 = r5;
0x0005831a add sp, 0x2c |
0x0005831c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00058320 movs r5, 0xa | r5 = 0xa;
0x00058322 b 0x58302 |
| } while (1);
| label_10:
0x00058324 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x00058326 cmp r3, 0 |
| if (r3 == 0) {
0x00058328 beq 0x582f8 | goto label_0;
| }
0x0005832a movs r2, 1 | r2 = 1;
| do {
0x0005832c str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x0005832e ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x00058330 cmp r3, 0 |
0x00058332 bne 0x5832c |
| } while (r3 != 0);
0x00058334 b 0x582f8 | goto label_0;
| label_11:
0x00058336 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x00058338 cmp r3, 0 |
| if (r3 == 0) {
0x0005833a beq.w 0x5852e | goto label_15;
| }
| label_2:
0x0005833e cmp r6, 0 |
| if (r6 == 0) {
0x00058340 beq.w 0x584be | goto label_16;
| }
0x00058344 ldrb r3, [r4, 5] | r3 = *((r4 + 5));
0x00058346 cmp r3, 4 |
| if (r3 == 4) {
0x00058348 beq.w 0x584be | goto label_16;
| }
0x0005834c ldr.w fp, [r4, 0x40] | fp = *((r4 + 0x40));
0x00058350 ldr.w r3, [fp] | r3 = *(fp);
0x00058354 cmp r3, 0 |
| if (r3 == 0) {
0x00058356 beq.w 0x584be | goto label_16;
| }
0x0005835a movs r3, 1 | r3 = 1;
0x0005835c strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x0005835e ldrb r3, [r6] | r3 = *(r6);
0x00058360 cmp r3, 0 |
| if (r3 == 0) {
0x00058362 beq.w 0x5859e | goto label_17;
| }
0x00058366 ldr r7, [sp, 0xc] | r7 = var_ch;
0x00058368 mov.w r8, 0 | r8 = 0;
0x0005836c mov r2, r6 | r2 = r6;
0x0005836e mov sb, r8 | sb = r8;
| do {
0x00058370 add sb, r3 | sb += r3;
0x00058372 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00058376 add.w r8, r8, 1 | r8++;
0x0005837a mov sl, r8 | sl = r8;
0x0005837c cmp r3, 0 |
0x0005837e bne 0x58370 |
| } while (r3 != 0);
0x00058380 str r7, [sp, 0xc] | var_ch = r7;
| label_6:
0x00058382 ldrb r2, [r4, 8] | r2 = *((r4 + 8));
0x00058384 ldr r1, [r4, 0x48] | r1 = *((r4 + 0x48));
0x00058386 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x00058388 mov r7, r1 | r7 = r1;
| if (r2 != 0) {
0x0005838a cbz r2, 0x583ba |
0x0005838c orrs.w r2, r1, r3 | r2 = r1 | r3;
| if (r2 != r1) {
0x00058390 beq 0x583b6 |
0x00058392 ldr.w r2, [r4, 0x94] | r2 = *((r4 + 0x94));
0x00058396 subs r0, r1, 1 | r0 = r1 - 1;
0x00058398 sbc r1, r3, 0 | __asm ("sbc r1, r3, 0");
0x0005839c movs r3, 0 | r3 = 0;
0x0005839e str r2, [sp, 0x10] | var_10h = r2;
0x000583a0 bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x000583a4 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000583a6 adds r3, r0, 1 | r3 = r0 + 1;
0x000583a8 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x000583ac umull r0, r3, r3, r2 | r0:r3 = r3 * r2;
0x000583b0 mla r3, r2, r1, r3 | __asm ("mla r3, r2, r1, r3");
0x000583b4 mov r7, r0 | r7 = r0;
| }
0x000583b6 strd r7, r3, [r4, 0x48] | __asm ("strd r7, r3, [r4, 0x48]");
| }
0x000583ba ldr r2, [pc, 0x22c] |
0x000583bc ldr.w r1, [r4, 0x98] | r1 = *((r4 + 0x98));
0x000583c0 str r3, [sp, 0x10] | var_10h = r3;
0x000583c2 add r2, pc | r2 = 0xb09b0;
0x000583c4 ldr.w r0, [r2, 0x118] | r0 = *(0xb0ac8);
0x000583c8 bl 0xab8f8 | r0 = fcn_000ab8f8 (r0, r1);
0x000583cc adds r2, r0, 1 | r2 = r0 + 1;
0x000583ce ldr r3, [sp, 0x10] | r3 = var_10h;
0x000583d0 rev r2, r2 | r2 = SWAP32 (r2);
0x000583d2 mov r0, fp | r0 = fp;
0x000583d4 str r2, [sp, 0x20] | var_20h = r2;
0x000583d6 ldr.w r2, [fp] | r2 = *(fp);
0x000583da str r7, [sp] | *(sp) = r7;
0x000583dc str r3, [sp, 4] | var_4h = r3;
0x000583de ldr.w fp, [r2, 0xc] | fp = "ATTACH %Q AS vacuum_db";
0x000583e2 add r2, sp, 0x20 | r2 += var_20h;
0x000583e4 mov r1, r2 | r1 = r2;
0x000583e6 movs r2, 4 | r2 = 4;
0x000583e8 str r1, [sp, 0x14] | var_14h = r1;
0x000583ea blx fp | r0 = fp (r0, r1, r2, r3);
0x000583ec cmp r0, 0 |
| if (r0 != 0) {
0x000583ee bne.w 0x58576 | goto label_18;
| }
0x000583f2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000583f4 adds r7, 4 | r7 += 4;
0x000583f6 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x000583f8 mov r2, r8 | r2 = r8;
0x000583fa mov r1, r6 | r1 = r6;
0x000583fc adc fp, r3, 0 | __asm ("adc fp, r3, 0");
0x00058400 ldr r3, [r0] | r3 = *(r0);
0x00058402 strd r7, fp, [sp] | __asm ("strd r7, fp, [sp]");
0x00058406 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00058408 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005840a cmp r0, 0 |
| if (r0 != 0) {
0x0005840c bne.w 0x58576 | goto label_18;
| }
0x00058410 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x00058412 rev.w r3, sl | sl = SWAP32 (r3);
0x00058416 str r3, [sp, 0x20] | var_20h = r3;
0x00058418 adds.w sl, r8, r7 | sl = r8 + r7;
0x0005841c ldr r7, [sp, 0x14] | r7 = var_14h;
0x0005841e adc.w fp, fp, r8, asr 31 | __asm ("adc.w fp, fp, r8, asr 31");
0x00058422 ldr r3, [r0] | r3 = *(r0);
0x00058424 movs r2, 4 | r2 = 4;
0x00058426 strd sl, fp, [sp] | __asm ("strd sl, fp, [sp]");
0x0005842a mov r1, r7 | r1 = r7;
0x0005842c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0005842e blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00058430 cmp r0, 0 |
| if (r0 != 0) {
0x00058432 bne.w 0x58576 | goto label_18;
| }
0x00058436 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x00058438 rev.w r3, sb | sb = SWAP32 (r3);
0x0005843c str r3, [sp, 0x20] | var_20h = r3;
0x0005843e adds.w lr, sl, 4 | lr = sl + 4;
0x00058442 adc ip, fp, 0 | __asm ("adc ip, arg_0h");
0x00058446 mov r1, r7 | r1 = r7;
0x00058448 ldr r3, [r0] | r3 = *(r0);
0x0005844a movs r2, 4 | r2 = 4;
0x0005844c strd lr, ip, [sp] | __asm ("strd lr, ip, [sp]");
0x00058450 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00058452 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00058454 cmp r0, 0 |
| if (r0 != 0) {
0x00058456 bne.w 0x58576 | goto label_18;
| }
0x0005845a ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x0005845c adds.w r3, sl, 8 | r3 = sl + 8;
0x00058460 ldr r1, [pc, 0x188] |
0x00058462 adc r2, fp, 0 | __asm ("adc r2, arg_0h");
0x00058466 ldr.w ip, [r0] | ip = *(r0);
0x0005846a add r1, pc |
0x0005846c strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00058470 add.w r1, r1, 0x160 | r1 = 0xb0bba;
0x00058474 movs r2, 8 | r2 = 8;
0x00058476 ldr.w r3, [ip, 0xc] | r3 = *((ip + 0xc));
0x0005847a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005847c cmp r0, 0 |
| if (r0 != 0) {
0x0005847e bne 0x58576 | goto label_18;
| }
0x00058480 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x00058482 add.w r8, r8, 0x14 | r8 += 0x14;
0x00058486 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x00058488 add r1, sp, 0x18 | r1 += var_18h;
0x0005848a adds.w r3, r3, r8 | r3 += r8;
0x0005848e str r3, [r4, 0x48] | *((r4 + 0x48)) = r3;
0x00058490 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x00058492 adc.w r3, r3, r8, asr 31 | __asm ("adc.w r3, r3, r8, asr 31");
0x00058496 str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x00058498 ldr r3, [r0] | r3 = *(r0);
0x0005849a ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0005849c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0005849e cmp r0, 0 |
| if (r0 != 0) {
0x000584a0 bne 0x58576 | goto label_18;
| }
0x000584a2 ldr r2, [r4, 0x48] | r2 = *((r4 + 0x48));
0x000584a4 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000584a6 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x000584a8 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000584aa cmp r2, r0 |
0x000584ac sbcs.w r1, r3, r1 | __asm ("sbcs.w r1, r3, r1");
| if (r2 < r0) {
0x000584b0 bge 0x584be |
0x000584b2 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x000584b4 ldr r1, [r0] | r1 = *(r0);
0x000584b6 ldr r1, [r1, 0x10] | r1 = *((r1 + 0x10));
0x000584b8 blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t) (r0, r1);
0x000584ba cmp r0, 0 |
| if (r0 != 0) {
0x000584bc bne 0x58576 | goto label_18;
| }
| }
| label_16:
0x000584be ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000584c0 cmp r3, 0 |
| if (r3 != 0) {
0x000584c2 bne 0x5854a | goto label_19;
| }
0x000584c4 ldr.w r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
0x000584c8 cmp r3, 0 |
| if (r3 == 0) {
0x000584ca beq 0x5856a | goto label_20;
| }
| label_4:
0x000584cc movs r1, 0 | r1 = 0;
0x000584ce mov r0, r4 | r0 = r4;
0x000584d0 bl 0x511ac | r0 = fcn_000511ac (r0, r1);
0x000584d4 cmp r0, 0 |
| if (r0 != 0) {
0x000584d6 bne 0x58576 | goto label_18;
| }
0x000584d8 ldr.w r3, [r4, 0xd4] | r3 = *((r4 + 0xd4));
0x000584dc ldr r0, [r3] | r0 = *(r3);
0x000584de bl 0x134d4 | r0 = fcn_000134d4 (r0);
0x000584e2 mov r1, r0 | r1 = r0;
0x000584e4 mov r0, r4 | r0 = r4;
0x000584e6 bl 0x51fa0 | r0 = fcn_00051fa0 (r0, r1);
0x000584ea cmp r0, 0 |
| if (r0 != 0) {
0x000584ec bne 0x58576 | goto label_18;
| }
0x000584ee ldr.w r8, [r4, 0xd4] | r8 = *((r4 + 0xd4));
0x000584f2 ldr r7, [sp, 0xc] | r7 = var_ch;
0x000584f4 ldr.w r0, [r8] | r0 = *(r8);
| if (r0 == 0) {
0x000584f8 cbz r0, 0x58508 | goto label_21;
| }
| do {
0x000584fa bl 0x15770 | fcn_00015770 (r0);
0x000584fe ldr.w r0, [r8] | r0 = *(r8);
0x00058502 cmp r0, 0 |
0x00058504 bne 0x584fa |
| } while (r0 != 0);
0x00058506 str r7, [sp, 0xc] | var_ch = r7;
| label_21:
0x00058508 ldr.w r8, [r4, 0x18] | r8 = *((r4 + 0x18));
0x0005850c ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0005850e cmp r8, r3 |
| if (r8 > r3) {
0x00058510 bhi 0x585a6 | goto label_22;
| }
| label_7:
0x00058512 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00058514 cmp r3, 0 |
| if (r3 != 0) {
0x00058516 bne.w 0x582f8 | goto label_0;
| }
0x0005851a mov r1, r6 | r1 = r6;
0x0005851c mov r0, r4 | r0 = r4;
0x0005851e bl 0x14f9c | r0 = fcn_00014f9c (r0, r1);
0x00058522 mov r6, r0 | r6 = r0;
0x00058524 cmp r0, 0 |
| if (r0 == 0) {
0x00058526 beq.w 0x582f8 | goto label_0;
| }
| label_13:
0x0005852a mov r5, r6 | r5 = r6;
0x0005852c b 0x58302 | goto label_1;
| label_15:
0x0005852e ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00058530 cmp r2, 0 |
| if (r2 == 0) {
0x00058532 beq.w 0x5833e | goto label_2;
| }
0x00058536 ldr.w r7, [r4, 0xcc] | r7 = *((r4 + 0xcc));
0x0005853a add r2, sp, 0x18 | r2 += var_18h;
0x0005853c movs r1, 1 | r1 = 1;
0x0005853e mov r0, r4 | r0 = r4;
0x00058540 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00058542 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x00058544 cbz r0, 0x5857a | goto label_23;
| }
| label_5:
0x00058546 ldr r0, [sp, 0x18] | r0 = var_18h;
| if (r0 == 0) {
0x00058548 cbnz r0, 0x5854e |
| label_19:
0x0005854a mov r5, r3 | r5 = r3;
0x0005854c b 0x58302 | goto label_1;
| }
0x0005854e mov r5, r3 | r5 = r3;
0x00058550 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00058554 b 0x58302 | goto label_1;
| label_12:
0x00058556 mov r3, r0 | r3 = r0;
0x00058558 movs r1, 1 | r1 = 1;
0x0005855a ldr.w r7, [r4, 0xcc] | r7 = *((r4 + 0xcc));
0x0005855e add r2, sp, 0x18 | r2 += var_18h;
0x00058560 mov r0, r4 | r0 = r4;
0x00058562 blx r7 | uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00058564 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00058566 str r6, [r1, 0x10] | *((r1 + 0x10)) = r6;
0x00058568 b 0x582ca | goto label_3;
| label_20:
0x0005856a movs r1, 4 | r1 = 4;
0x0005856c mov r0, r4 | r0 = r4;
0x0005856e bl 0x14e60 | r0 = fcn_00014e60 (r0, r1);
0x00058572 cmp r0, 0 |
| if (r0 == 0) {
0x00058574 beq 0x584cc | goto label_4;
| }
| label_18:
0x00058576 mov r5, r0 | r5 = r0;
0x00058578 b 0x58302 | goto label_1;
| label_23:
0x0005857a ldr r0, [sp, 0x18] | r0 = var_18h;
0x0005857c bl 0x51680 | r0 = fcn_00051680 (r0);
0x00058580 mov r3, r0 | r3 = r0;
0x00058582 cmp r0, 0 |
| if (r0 != 0) {
0x00058584 bne 0x58546 | goto label_5;
| }
0x00058586 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00058588 bl 0x17088 | fcn_00017088 (r0);
0x0005858c ldr r0, [sp, 0x18] | r0 = var_18h;
0x0005858e movs r3, 1 | r3 = 1;
0x00058590 strb r3, [r4, 0x12] | *((r4 + 0x12)) = r3;
0x00058592 cmp r0, 0 |
| if (r0 == 0) {
0x00058594 beq.w 0x5833e | goto label_2;
| }
0x00058598 bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005859c b 0x5833e | goto label_2;
| label_17:
0x0005859e mov r8, r3 | r8 = r3;
0x000585a0 mov sl, r3 | sl = r3;
0x000585a2 mov sb, r3 | sb = r3;
0x000585a4 b 0x58382 | goto label_6;
| label_22:
0x000585a6 ldr r3, [pc, 0x48] |
0x000585a8 ldr.w r1, [r4, 0x98] | r1 = *((r4 + 0x98));
0x000585ac add r3, pc | r3 = 0xb0ba2;
0x000585ae ldr.w r0, [r3, 0x118] | r0 = *(0xb0cba);
0x000585b2 bl 0xab8f8 | r0 = fcn_000ab8f8 (r0, r1);
0x000585b6 adds r3, r0, 1 | r3 = r0 + 1;
0x000585b8 mov r0, r4 | r0 = r4;
0x000585ba cmp r3, r8 |
0x000585bc ite ne |
| if (r3 == r8) {
0x000585be movne r1, r8 | r1 = r8;
| }
| if (r3 != r8) {
0x000585c0 subeq r1, r8, 1 | r1 = r8 - 1;
| }
0x000585c4 bl 0xc074 | r0 = fcn_0000c074 (r0, r1);
0x000585c8 mov r3, r0 | r3 = r0;
0x000585ca cmp r0, 0 |
| if (r0 == 0) {
0x000585cc beq 0x58512 | goto label_7;
| }
0x000585ce mov r5, r3 | r5 = r3;
0x000585d0 b 0x58302 | goto label_1;
| label_14:
0x000585d2 blx 0x7e8c | fcn_00007e8c ();
0x000585d6 nop |
0x000585d8 ldrh r6, [r5, r1] | r6 = *((r5 + r1));
0x000585da movs r7, r0 | r7 = r0;
0x000585dc lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000585de movs r0, r0 |
0x000585e0 ldrb r4, [r1, r7] | r4 = *((r1 + r7));
0x000585e2 movs r7, r0 | r7 = r0;
0x000585e4 ldr r2, [r1, r6] | r2 = *((r1 + r6));
0x000585e6 movs r7, r0 | r7 = r0;
0x000585e8 ldrb r2, [r0, r1] | r2 = *((r0 + r1));
0x000585ea movs r7, r0 | r7 = r0;
0x000585ec vaddl.u32 q0, d10, d5 | __asm ("vaddl.u32 q0, d10, d5");
0x000585f0 ldrh r0, [r3, r1] | r0 = *((r3 + r1));
0x000585f2 movs r7, r0 | r7 = 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/libsqlite3.so.0.8.6 @ 0x58a70 */
| #include <stdint.h>
|
; (fcn) fcn.00058a70 () | void fcn_00058a70 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00058a70 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00058a74 mov r5, r0 | r5 = r0;
0x00058a76 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
0x00058a78 mov r4, r1 | r4 = r1;
0x00058a7a mov r8, r2 | r8 = r2;
0x00058a7c ldr r7, [r0, 4] | r7 = *((r0 + 4));
| if (r3 != 0) {
0x00058a7e cbz r3, 0x58a8a |
0x00058a80 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00058a82 adds r3, 1 | r3++;
0x00058a84 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00058a86 ldrb r3, [r0, 0xa] | r3 = *((r0 + 0xa));
| if (r3 == 0) {
0x00058a88 cbz r3, 0x58ac0 | goto label_3;
| }
| }
| label_0:
0x00058a8a ldr r0, [r7, 8] | r0 = *((r7 + 8));
| if (r0 == 0) {
0x00058a8c cbz r0, 0x58a9c | goto label_1;
| }
| if (r4 == 0) {
0x00058a8e cbz r4, 0x58ac6 | goto label_4;
| }
| do {
0x00058a90 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x00058a92 cmp r4, r3 |
| if (r4 == r3) {
0x00058a94 beq 0x58ac6 | goto label_4;
| }
0x00058a96 ldr r0, [r0, 0x18] | r0 = *((r0 + 0x18));
0x00058a98 cmp r0, 0 |
0x00058a9a bne 0x58a90 |
| } while (r0 != 0);
| label_1:
0x00058a9c ldrb r3, [r5, 0xb] | r3 = *((r5 + 0xb));
| if (r3 != 0) {
0x00058a9e cbnz r3, 0x58ad6 | goto label_5;
| }
| label_2:
0x00058aa0 mov r3, r8 | r3 = r8;
0x00058aa2 movs r2, 0 | r2 = 0;
0x00058aa4 mov r1, r4 | r1 = r4;
0x00058aa6 mov r0, r7 | r0 = r7;
0x00058aa8 bl 0x58070 | r0 = fcn_00058070 (r0, r1, r2, r3);
0x00058aac mov r6, r0 | r6 = r0;
| do {
0x00058aae ldrb r3, [r5, 9] | r3 = *((r5 + 9));
| if (r3 != 0) {
0x00058ab0 cbz r3, 0x58aba |
0x00058ab2 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00058ab4 subs r3, 1 | r3--;
0x00058ab6 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
| if (r3 == 0) {
0x00058ab8 cbz r3, 0x58afc | goto label_6;
| }
| }
0x00058aba mov r0, r6 | r0 = r6;
0x00058abc pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x00058ac0 bl 0x12464 | fcn_00012464 (r0);
0x00058ac4 b 0x58a8a | goto label_0;
| label_4:
0x00058ac6 movs r2, 0 | r2 = 0;
0x00058ac8 mov r1, r4 | r1 = r4;
0x00058aca bl 0x589d8 | r0 = fcn_000589d8 (r0, r1, r2);
0x00058ace mov r6, r0 | r6 = r0;
0x00058ad0 cmp r0, 0 |
0x00058ad2 bne 0x58aae |
| } while (r0 != 0);
0x00058ad4 b 0x58a9c | goto label_1;
| label_5:
0x00058ad6 movs r3, 0 | r3 = 0;
0x00058ad8 strb r3, [r5, 0xb] | *((r5 + 0xb)) = r3;
0x00058ada ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00058adc ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00058ade cmp r1, 0 |
| if (r1 == 0) {
0x00058ae0 beq 0x58aa0 | goto label_2;
| }
0x00058ae2 movs r2, 1 | r2 = 1;
| do {
0x00058ae4 ldrb r3, [r1, 1] | r3 = *((r1 + 1));
0x00058ae6 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x00058ae8 bpl 0x58af4 |
0x00058aea strb r2, [r5, 0xb] | *((r5 + 0xb)) = r2;
0x00058aec ldr r3, [r1, 0x40] | r3 = *((r1 + 0x40));
0x00058aee cmp r4, r3 |
0x00058af0 it eq |
| if (r4 == r3) {
0x00058af2 strbeq r2, [r1] | *(r1) = r2;
| goto label_7;
| }
| }
| label_7:
0x00058af4 ldr r1, [r1, 0x18] | r1 = *((r1 + 0x18));
0x00058af6 cmp r1, 0 |
0x00058af8 bne 0x58ae4 |
| } while (r1 != 0);
0x00058afa b 0x58aa0 | goto label_2;
| label_6:
0x00058afc mov r0, r5 | r0 = r5;
0x00058afe bl 0x95d0 | fcn_000095d0 (r0);
0x00058b02 mov r0, r6 | r0 = r6;
0x00058b04 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/libsqlite3.so.0.8.6 @ 0x58b08 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00058b08 () | void fcn_00058b08 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00058b08 push.w {r4, r5, r6, r7, r8, lr} |
0x00058b0c mov r4, r0 | r4 = r0;
0x00058b0e ldrb r3, [r0, 9] | r3 = *((r0 + 9));
0x00058b10 mov r7, r1 | r7 = r1;
0x00058b12 mov r8, r2 | r8 = r2;
0x00058b14 ldr r6, [r0, 4] | r6 = *((r0 + 4));
| if (r3 != 0) {
0x00058b16 cbz r3, 0x58b22 |
0x00058b18 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00058b1a adds r3, 1 | r3++;
0x00058b1c str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00058b1e ldrb r3, [r0, 0xa] | r3 = *((r0 + 0xa));
| if (r3 == 0) {
0x00058b20 cbz r3, 0x58b6a | goto label_4;
| }
| }
0x00058b22 cmp r7, 2 |
| if (r7 == 2) {
0x00058b24 beq 0x58b72 | goto label_5;
| }
| do {
| label_0:
0x00058b26 ldr r0, [r6] | r0 = *(r6);
0x00058b28 ldr r5, [r0, 0x28] | r5 = *((r0 + 0x28));
| if (r5 == 0) {
0x00058b2a cbnz r5, 0x58b58 |
0x00058b2c ldr r3, [r0, 0x60] | r3 = *((r0 + 0x60));
0x00058b2e cmp r8, r3 |
| if (r8 < r3) {
0x00058b30 bge 0x58b3e |
0x00058b32 mov r1, r7 | r1 = r7;
0x00058b34 mov r2, r8 | r2 = r8;
0x00058b36 bl 0x525ac | r0 = fcn_000525ac (r0, r1, r2);
0x00058b3a cmp r0, 0 |
| if (r0 != 0) {
0x00058b3c bne 0x58baa | goto label_6;
| }
| }
0x00058b3e cmp.w r8, 0 |
| if (r8 < 0) {
0x00058b42 blt 0x58b88 | goto label_7;
| }
| label_2:
0x00058b44 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
| if (r3 == 0) {
0x00058b46 cbz r3, 0x58b94 | goto label_8;
| }
| label_3:
0x00058b48 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00058b4a ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00058b4c ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00058b4e rev r2, r3 | r3 = SWAP32 (r2);
| if (r3 == 0) {
0x00058b50 cbnz r3, 0x58b56 |
0x00058b52 ldr r3, [r6] | r3 = *(r6);
0x00058b54 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
| }
0x00058b56 str r2, [r6, 0x30] | *((r6 + 0x30)) = r2;
| }
| label_1:
0x00058b58 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 != 0) {
0x00058b5a cbz r3, 0x58b64 |
0x00058b5c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00058b5e subs r3, 1 | r3--;
0x00058b60 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| if (r3 == 0) {
0x00058b62 cbz r3, 0x58b9e | goto label_9;
| }
| }
0x00058b64 mov r0, r5 | r0 = r5;
0x00058b66 pop.w {r4, r5, r6, r7, r8, pc} |
| label_4:
0x00058b6a bl 0x12464 | fcn_00012464 (r0);
0x00058b6e cmp r7, 2 |
0x00058b70 bne 0x58b26 |
| } while (r7 != 2);
| label_5:
0x00058b72 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00058b74 cmp r0, 0 |
| if (r0 == 0) {
0x00058b76 beq 0x58b26 | goto label_0;
| }
0x00058b78 movs r2, 0 | r2 = 0;
0x00058b7a mov r1, r2 | r1 = r2;
0x00058b7c bl 0x589d8 | r0 = fcn_000589d8 (r0, r1, r2);
0x00058b80 mov r5, r0 | r5 = r0;
0x00058b82 cmp r0, 0 |
| if (r0 != 0) {
0x00058b84 bne 0x58b58 | goto label_1;
| }
0x00058b86 b 0x58b26 | goto label_0;
| label_7:
0x00058b88 ldrh r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x00058b8a lsls r3, r3, 0x1b | r3 <<= 0x1b;
0x00058b8c itt mi |
| if (r3 >= r3) {
0x00058b8e movmi r3, 0 | r3 = 0;
| }
| if (r3 < r3) {
0x00058b90 strmi r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
| goto label_10;
| }
| if (r3 >= r3) {
| label_10:
0x00058b92 bpl 0x58b44 | goto label_2;
| }
| label_8:
0x00058b94 mov r0, r6 | r0 = r6;
0x00058b96 bl 0x548fc | r0 = fcn_000548fc (r0);
0x00058b9a mov r5, r0 | r5 = r0;
0x00058b9c b 0x58b48 | goto label_3;
| label_9:
0x00058b9e mov r0, r4 | r0 = r4;
0x00058ba0 bl 0x95d0 | fcn_000095d0 (r0);
0x00058ba4 mov r0, r5 | r0 = r5;
0x00058ba6 pop.w {r4, r5, r6, r7, r8, pc} |
| label_6:
0x00058baa mov r5, r0 | r5 = r0;
0x00058bac b 0x58b58 | 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/libsqlite3.so.0.8.6 @ 0x58c98 */
| #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) fcn.00058c98 () | void fcn_00058c98 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_13h;
| 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;
| r1 = arg2;
| r2 = arg3;
0x00058c98 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00058c9c mov fp, r2 |
0x00058c9e ldr r2, [pc, 0x2e4] |
0x00058ca0 sub sp, 0x34 |
0x00058ca2 ldr r6, [r0, 4] | r6 = *((r0 + 4));
0x00058ca4 ldr r3, [pc, 0x2e0] | r3 = *(0x58f88);
0x00058ca6 add r2, pc | r2 = 0xb1c30;
0x00058ca8 str r1, [sp, 8] | var_8h = r1;
0x00058caa ldr r3, [r2, r3] |
0x00058cac ldrb r2, [r6, 0x11] | r2 = *((r6 + 0x11));
0x00058cae ldr r3, [r3] | r3 = *(0xb1c30);
0x00058cb0 str r3, [sp, 0x2c] | var_2ch = r3;
0x00058cb2 mov.w r3, 0 | r3 = 0;
0x00058cb6 cmp r2, 0 |
| if (r2 == 0) {
0x00058cb8 beq.w 0x58e14 | goto label_7;
| }
0x00058cbc ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00058cbe mov r8, r0 | r8 = r0;
| if (r3 == 0) {
0x00058cc0 cbz r3, 0x58cd0 | goto label_8;
| }
| do {
0x00058cc2 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x00058cc4 bic r2, r2, 4 | r2 = BIT_MASK (r2, 4);
0x00058cc8 strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x00058cca ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00058ccc cmp r3, 0 |
0x00058cce bne 0x58cc2 |
| } while (r3 != 0);
| label_8:
0x00058cd0 ldrb.w r3, [r8, 9] | r3 = *((r8 + 9));
0x00058cd4 cmp r3, 0 |
| if (r3 == 0) {
0x00058cd6 beq 0x58d5a | goto label_9;
| }
0x00058cd8 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00058cdc ldrb.w r2, [r8, 0xa] | r2 = *((r8 + 0xa));
0x00058ce0 adds r3, 1 | r3++;
0x00058ce2 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x00058ce6 cmp r2, 0 |
| if (r2 != 0) {
0x00058ce8 bne.w 0x58e4e | goto label_10;
| }
0x00058cec mov r0, r8 | r0 = r8;
0x00058cee bl 0x12464 | fcn_00012464 (r0);
0x00058cf2 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00058cf4 ldrb.w r3, [r8, 9] | r3 = *((r8 + 9));
0x00058cf8 ldr r2, [r2, 0x38] | r2 = *((r2 + 0x38));
0x00058cfa ldr r4, [r2, 0x34] | r4 = *((r2 + 0x34));
0x00058cfc rev r4, r4 | r4 = SWAP32 (r4);
0x00058cfe str r4, [sp, 0x18] | var_18h = r4;
| if (r3 == 0) {
0x00058d00 cbz r3, 0x58d62 | goto label_2;
| }
0x00058d02 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00058d06 subs r3, 1 | r3--;
0x00058d08 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
| if (r3 != 0) {
0x00058d0c cbnz r3, 0x58d62 | goto label_2;
| }
| label_3:
0x00058d0e mov r0, r8 | r0 = r8;
0x00058d10 bl 0x95d0 | fcn_000095d0 (r0);
0x00058d14 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x00058d16 cmp r3, r4 |
| if (r3 >= r4) {
0x00058d18 bhs 0x58d68 | goto label_11;
| }
| do {
0x00058d1a blx 0x7f8c | fcn_00007f8c ();
0x00058d1e ldr r2, [pc, 0x26c] |
0x00058d20 add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x00058d24 ldr r1, [pc, 0x268] |
0x00058d26 movw r3, 0x2425 |
0x00058d2a movt r3, 1 | r3 = 0x12425;
0x00058d2e movs r0, 0xb | r0 = 0xb;
0x00058d30 add r2, pc | r2 = 0xb1cc2;
0x00058d32 str r4, [sp] | *(sp) = r4;
0x00058d34 add r1, pc | r1 = 0xb1cc8;
0x00058d36 blx 0x8474 | fcn_00008474 ();
0x00058d3a movs r3, 0xb | r3 = 0xb;
| label_1:
0x00058d3c ldr r1, [pc, 0x254] |
0x00058d3e ldr r2, [pc, 0x248] | r2 = *(0x58f8a);
0x00058d40 add r1, pc | r1 = 0xb1cd8;
0x00058d42 ldr r2, [r1, r2] | r2 = *(0xb1cd8);
0x00058d44 ldr r1, [r2] | r1 = *(0xb1cd8);
0x00058d46 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00058d48 eors r1, r2 | r1 ^= r2;
0x00058d4a mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x00058d4e bne.w 0x58f7e | goto label_12;
| }
0x00058d52 mov r0, r3 | r0 = r3;
0x00058d54 add sp, 0x34 |
0x00058d56 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x00058d5a ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00058d5c ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00058d5e ldr r4, [r3, 0x34] | r4 = *((r3 + 0x34));
0x00058d60 rev r4, r4 | r4 = SWAP32 (r4);
| label_2:
0x00058d62 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x00058d64 cmp r3, r4 |
0x00058d66 blo 0x58d1a |
| } while (r3 <= r4);
| label_11:
0x00058d68 ldr r3, [pc, 0x22c] |
0x00058d6a adds r4, 1 | r4++;
0x00058d6c ldr r1, [r6, 0x24] | r1 = *((r6 + 0x24));
0x00058d6e movw sb, 0xcccd |
0x00058d72 str r4, [sp, 0x18] | var_18h = r4;
0x00058d74 movt sb, 0xcccc | sb = 0xcccccccd;
0x00058d78 add r3, pc | r3 = 0xb1d14;
0x00058d7a movs r7, 0 | r7 = 0;
0x00058d7c ldr.w r0, [r3, 0x118] | r0 = *(0xb1e2c);
0x00058d80 bl 0xab680 | r0 = fcn_000ab680 (r0, r1, r2);
0x00058d84 adds r5, r0, 1 | r5 = r0 + 1;
0x00058d86 b 0x58d8c |
| while (r3 == r4) {
| label_0:
0x00058d88 adds r4, 1 | r4++;
0x00058d8a movs r7, 1 | r7 = 1;
0x00058d8c cmp r4, 1 |
0x00058d8e it ls |
| if (r4 > 1) {
0x00058d90 movls r3, 0 | r3 = 0;
| }
| if (r4 >= 1) {
0x00058d92 bls 0x58db4 |
0x00058d94 ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x00058d96 subs r0, r4, 2 | r0 = r4 - 2;
0x00058d98 umull r3, r1, sb, r1 | r3:r1 = sb * r1;
0x00058d9c lsrs r1, r1, 2 | r1 >>= 2;
0x00058d9e add.w sl, r1, 1 | sl = r1 + 1;
0x00058da2 mov r1, sl | r1 = sl;
0x00058da4 bl 0xab680 | r0 = fcn_000ab680 (r0, r1, r2);
0x00058da8 mul r0, sl, r0 | r0 = sl * r0;
0x00058dac adds r3, r0, 2 | r3 = r0 + 2;
0x00058dae cmp r3, r5 |
0x00058db0 it eq |
| if (r3 == r5) {
0x00058db2 addeq r3, r0, 3 | r3 = r0 + 3;
| goto label_13;
| }
| }
| label_13:
0x00058db4 cmp r3, r4 |
0x00058db6 beq 0x58d88 |
| }
0x00058db8 cmp r5, r4 |
| if (r5 == r4) {
0x00058dba beq 0x58d88 | goto label_0;
| }
| if (r7 != 0) {
0x00058dbc cbz r7, 0x58dc0 |
0x00058dbe str r4, [sp, 0x18] | var_18h = r4;
| }
0x00058dc0 movs r7, 1 | r7 = 1;
0x00058dc2 mov r3, r4 | r3 = r4;
0x00058dc4 add r2, sp, 0x20 | r2 += var_20h;
0x00058dc6 add r1, sp, 0x24 | r1 += var_24h;
0x00058dc8 mov r0, r6 | r0 = r6;
0x00058dca str r7, [sp] | *(sp) = r7;
0x00058dcc bl 0x55140 | r0 = fcn_00055140 (r0, r1, r2, r3, r4, r5, r6);
0x00058dd0 mov r3, r0 | r3 = r0;
0x00058dd2 str r0, [sp, 0x1c] | var_1ch = r0;
0x00058dd4 cmp r0, 0 |
| if (r0 != 0) {
0x00058dd6 bne 0x58d3c | goto label_1;
| }
0x00058dd8 ldrd sb, r5, [sp, 0x20] | __asm ("ldrd sb, r5, [var_20h]");
0x00058ddc cmp sb, r4 |
| if (sb != r4) {
0x00058dde bne 0x58e66 | goto label_14;
| }
0x00058de0 add r1, sp, 0x1c | r1 += var_1ch;
0x00058de2 mov r2, r7 | r2 = r7;
0x00058de4 str r1, [sp] | *(sp) = r1;
0x00058de6 mov r0, r6 | r0 = r6;
0x00058de8 mov r1, r4 | r1 = r4;
0x00058dea str r5, [sp, 0x14] | var_14h = r5;
0x00058dec bl 0x557bc | fcn_000557bc (r0, r1, r2, r3, r4);
0x00058df0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 == 0) {
0x00058df2 cbnz r3, 0x58e04 |
0x00058df4 mov r2, r4 | r2 = r4;
0x00058df6 mov r0, r8 | r0 = r8;
0x00058df8 movs r1, 4 | r1 = 4;
0x00058dfa bl 0x55070 | r0 = fcn_00055070 (r0, r1, r2);
0x00058dfe mov r3, r0 | r3 = r0;
0x00058e00 str r0, [sp, 0x1c] | var_1ch = r0;
| if (r0 == 0) {
0x00058e02 cbz r0, 0x58e2c | goto label_5;
| }
| }
0x00058e04 cmp r5, 0 |
| if (r5 == 0) {
0x00058e06 beq 0x58d3c | goto label_1;
| }
| label_4:
0x00058e08 ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x00058e0a str r3, [sp, 8] | var_8h = r3;
0x00058e0c bl 0x11fa4 | fcn_00011fa4 (r0);
0x00058e10 ldr r3, [sp, 8] | r3 = var_8h;
0x00058e12 b 0x58d3c | goto label_1;
| label_7:
0x00058e14 movs r3, 1 | r3 = 1;
0x00058e16 str r2, [sp] | *(sp) = r2;
0x00058e18 mov r0, r6 | r0 = r6;
0x00058e1a add r2, sp, 0x18 | r2 += var_18h;
0x00058e1c add r1, sp, 0x14 | r1 += var_14h;
0x00058e1e bl 0x55140 | r0 = fcn_00055140 (r0, r1, r2, r3, r4, r5, r6);
0x00058e22 mov r3, r0 | r3 = r0;
0x00058e24 str r0, [sp, 0x1c] | var_1ch = r0;
0x00058e26 cmp r0, 0 |
| if (r0 != 0) {
0x00058e28 bne 0x58d3c | goto label_1;
| }
0x00058e2a ldr r5, [sp, 0x14] | r5 = var_14h;
| label_5:
0x00058e2c tst.w fp, 1 |
0x00058e30 mov r0, r5 | r0 = r5;
0x00058e32 ite ne |
| if ((fp & 1) == 0) {
0x00058e34 movne r1, 0xd | r1 = 0xd;
| }
| if ((fp & 1) != 0) {
0x00058e36 moveq r1, 0xa | r1 = 0xa;
| }
0x00058e38 bl 0x242c0 | fcn_000242c0 (r0, r1);
0x00058e3c ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
| if (r0 != 0) {
0x00058e3e cbz r0, 0x58e44 |
0x00058e40 bl 0x11fa4 | fcn_00011fa4 (r0);
| }
0x00058e44 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00058e46 movs r3, 0 | r3 = 0;
0x00058e48 ldr r1, [sp, 8] | r1 = var_8h;
0x00058e4a str r2, [r1] | *(r1) = r2;
0x00058e4c b 0x58d3c | goto label_1;
| label_10:
0x00058e4e ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00058e50 subs r3, 1 | r3--;
0x00058e52 ldr r2, [r2, 0x38] | r2 = *((r2 + 0x38));
0x00058e54 ldr r4, [r2, 0x34] | r4 = *((r2 + 0x34));
0x00058e56 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x00058e5a rev r4, r4 | r4 = SWAP32 (r4);
0x00058e5c str r4, [sp, 0x18] | var_18h = r4;
0x00058e5e cmp r3, 0 |
| if (r3 != 0) {
0x00058e60 bne.w 0x58d62 | goto label_2;
| }
0x00058e64 b 0x58d0e | goto label_3;
| label_14:
0x00058e66 strb.w r0, [sp, 0x13] | var_13h = r0;
0x00058e6a str r0, [sp, 0x28] | var_28h = r0;
0x00058e6c ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00058e6e cmp r0, 0 |
| if (r0 == 0) {
0x00058e70 beq 0x58f40 | goto label_15;
| }
0x00058e72 mov r2, r3 | r2 = r3;
0x00058e74 mov r1, r3 | r1 = r3;
0x00058e76 bl 0x589d8 | r0 = fcn_000589d8 (r0, r1, r2);
0x00058e7a mov r3, r0 | r3 = r0;
0x00058e7c str r0, [sp, 0x1c] | var_1ch = r0;
| if (r5 != 0) {
0x00058e7e cbz r5, 0x58e8a |
0x00058e80 str r0, [sp, 0xc] | var_ch = r0;
0x00058e82 ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x00058e84 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00058e88 ldr r3, [sp, 0xc] | r3 = var_ch;
| }
0x00058e8a cmp r3, 0 |
| if (r3 != 0) {
0x00058e8c bne.w 0x58d3c | goto label_1;
| }
| label_6:
0x00058e90 add r5, sp, 0x14 | r5 += var_14h;
0x00058e92 movs r3, 0 | r3 = 0;
0x00058e94 mov r2, r5 | r2 = r5;
0x00058e96 mov r1, r4 | r1 = r4;
0x00058e98 mov r0, r6 | r0 = r6;
0x00058e9a bl 0x9710 | r0 = fcn_00009710 (r0, r1, r2);
0x00058e9e mov r3, r0 | r3 = r0;
0x00058ea0 str r0, [sp, 0x1c] | var_1ch = r0;
0x00058ea2 cmp r0, 0 |
| if (r0 != 0) {
0x00058ea4 bne.w 0x58d3c | goto label_1;
| }
0x00058ea8 add r3, sp, 0x28 | r3 += var_28h;
0x00058eaa add.w r2, sp, 0x13 | r2 += var_13h;
0x00058eae mov r1, r4 | r1 = r4;
0x00058eb0 mov r0, r6 | r0 = r6;
0x00058eb2 bl 0x25348 | fcn_00025348 (r0, r1, r2, r3);
0x00058eb6 ldrb.w r2, [sp, 0x13] | r2 = var_13h;
0x00058eba mov r3, r0 | r3 = r0;
0x00058ebc ldr r7, [sp, 0x14] | r7 = var_14h;
0x00058ebe str r0, [sp, 0x1c] | var_1ch = r0;
0x00058ec0 subs r1, r2, 1 | r1 = r2 - 1;
0x00058ec2 cmp r1, 1 |
| if (r1 < 1) {
0x00058ec4 bls 0x58f4c | goto label_16;
| }
0x00058ec6 cmp r0, 0 |
| if (r0 != 0) {
0x00058ec8 bne 0x58f6c | goto label_17;
| }
0x00058eca ldr r3, [sp, 0x28] | r3 = var_28h;
0x00058ecc mov r1, r7 | r1 = r7;
0x00058ece strd sb, r0, [sp] | __asm ("strd sb, r0, [sp]");
0x00058ed2 mov r0, r6 | r0 = r6;
0x00058ed4 bl 0x55b1c | r0 = fcn_00055b1c (r0, r1, r2, r3, r4, r5);
0x00058ed8 mov r3, r0 | r3 = r0;
0x00058eda str r0, [sp, 0x1c] | var_1ch = r0;
| if (r7 != 0) {
0x00058edc cbz r7, 0x58ee8 |
0x00058ede str r0, [sp, 0xc] | var_ch = r0;
0x00058ee0 ldr r0, [r7, 0x48] | r0 = *((r7 + 0x48));
0x00058ee2 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00058ee6 ldr r3, [sp, 0xc] | r3 = var_ch;
| }
0x00058ee8 cmp r3, 0 |
| if (r3 != 0) {
0x00058eea bne.w 0x58d3c | goto label_1;
| }
0x00058eee mov r2, r5 | r2 = r5;
0x00058ef0 mov r1, r4 | r1 = r4;
0x00058ef2 mov r0, r6 | r0 = r6;
0x00058ef4 bl 0x9710 | r0 = fcn_00009710 (r0, r1, r2);
0x00058ef8 mov r3, r0 | r3 = r0;
0x00058efa str r0, [sp, 0x1c] | var_1ch = r0;
0x00058efc cmp r0, 0 |
| if (r0 != 0) {
0x00058efe bne.w 0x58d3c | goto label_1;
| }
0x00058f02 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00058f04 ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x00058f06 bl 0x51680 | r0 = fcn_00051680 (r0);
0x00058f0a mov r3, r0 | r3 = r0;
0x00058f0c str r0, [sp, 0x1c] | var_1ch = r0;
0x00058f0e cmp r0, 0 |
| if (r0 != 0) {
0x00058f10 bne.w 0x58e08 | goto label_4;
| }
0x00058f14 add r2, sp, 0x1c | r2 += var_1ch;
0x00058f16 mov r0, r6 | r0 = r6;
0x00058f18 str r2, [sp] | *(sp) = r2;
0x00058f1a mov r1, r4 | r1 = r4;
0x00058f1c movs r2, 1 | r2 = 1;
0x00058f1e bl 0x557bc | fcn_000557bc (r0, r1, r2, r3, r4);
0x00058f22 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00058f24 cmp r3, 0 |
| if (r3 != 0) {
0x00058f26 bne.w 0x58e08 | goto label_4;
| }
0x00058f2a mov r2, r4 | r2 = r4;
0x00058f2c mov r0, r8 | r0 = r8;
0x00058f2e movs r1, 4 | r1 = 4;
0x00058f30 bl 0x55070 | r0 = fcn_00055070 (r0, r1, r2);
0x00058f34 mov r3, r0 | r3 = r0;
0x00058f36 str r0, [sp, 0x1c] | var_1ch = r0;
0x00058f38 cmp r0, 0 |
| if (r0 == 0) {
0x00058f3a beq.w 0x58e2c | goto label_5;
| }
0x00058f3e b 0x58e08 | goto label_4;
| label_15:
0x00058f40 cmp r5, 0 |
| if (r5 == 0) {
0x00058f42 beq 0x58e90 | goto label_6;
| }
0x00058f44 ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x00058f46 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00058f4a b 0x58e90 | goto label_6;
| label_16:
0x00058f4c blx 0x7f8c | fcn_00007f8c ();
0x00058f50 ldr r2, [pc, 0x48] |
0x00058f52 adds r0, 0x14 | r0 += 0x14;
0x00058f54 ldr r1, [pc, 0x48] |
0x00058f56 movw r3, 0x2455 |
0x00058f5a movt r3, 1 | r3 = 0x12455;
0x00058f5e str r0, [sp] | *(sp) = r0;
0x00058f60 add r2, pc | r2 = 0xb1f00;
0x00058f62 movs r0, 0xb | r0 = 0xb;
0x00058f64 add r1, pc | r1 = 0xb1f08;
0x00058f66 blx 0x8474 | fcn_00008474 ();
0x00058f6a movs r3, 0xb | r3 = 0xb;
| label_17:
0x00058f6c cmp r7, 0 |
| if (r7 == 0) {
0x00058f6e beq.w 0x58d3c | goto label_1;
| }
0x00058f72 ldr r0, [r7, 0x48] | r0 = *((r7 + 0x48));
0x00058f74 str r3, [sp, 8] | var_8h = r3;
0x00058f76 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00058f7a ldr r3, [sp, 8] | r3 = var_8h;
0x00058f7c b 0x58d3c | goto label_1;
| label_12:
0x00058f7e blx 0x7e8c | fcn_00007e8c ();
0x00058f82 nop |
0x00058f84 ldr r7, [pc, 0x3a8] | r7 = *(0x59330);
0x00058f86 movs r7, r0 | r7 = r0;
0x00058f88 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00058f8a movs r0, r0 |
0x00058f8c subs r3, 0x2c | r3 -= 0x2c;
0x00058f8e movs r5, r0 | r5 = r0;
0x00058f90 subs r1, 0x48 | r1 -= 0x48;
0x00058f92 movs r5, r0 | r5 = r0;
0x00058f94 ldr r7, [pc, 0x140] | r7 = *(0x590d8);
0x00058f96 movs r7, r0 | r7 = r0;
0x00058f98 strh r4, [r1, r2] | *((r1 + r2)) = r4;
0x00058f9a movs r7, r0 | r7 = r0;
0x00058f9c subs r0, 0xfc | r0 -= 0xfc;
0x00058f9e movs r5, r0 | r5 = r0;
0x00058fa0 adds r7, 0x18 | r7 += 0x18;
0x00058fa2 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x58fa4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
| #define SWAP64(val) ((uint64_t) (((val & 0x00000000000000ffull) << 56) | \
| ((val & 0x000000000000ff00ull) << 40) | \
| ((val & 0x0000000000ff0000ull) << 24) | \
| ((val & 0x00000000ff000000ull) << 8) | \
| ((val & 0x000000ff00000000ull) >> 8) | \
| ((val & 0x0000ff0000000000ull) >> 24) | \
| ((val & 0x00ff000000000000ull) >> 40) | \
| ((val & 0xff00000000000000ull) >> 56)))
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00058fa4 () | void fcn_00058fa4 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00058fa4 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00058fa8 mov r4, r0 | r4 = r0;
0x00058faa ldrb r3, [r0, 9] | r3 = *((r0 + 9));
0x00058fac sub sp, 0xc |
0x00058fae mov r6, r1 | r6 = r1;
0x00058fb0 ldr r5, [r0, 4] | r5 = *((r0 + 4));
| if (r3 != 0) {
0x00058fb2 cbz r3, 0x58fbe |
0x00058fb4 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00058fb6 adds r3, 1 | r3++;
0x00058fb8 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00058fba ldrb r3, [r0, 0xa] | r3 = *((r0 + 0xa));
| if (r3 == 0) {
0x00058fbc cbz r3, 0x58ff6 | goto label_7;
| }
| }
0x00058fbe ldrb r3, [r5, 0x11] | r3 = *((r5 + 0x11));
0x00058fc0 ldr.w r8, [r5] | r8 = *(r5);
| if (r3 != 0) {
0x00058fc4 cbnz r3, 0x59004 | goto label_8;
| }
| label_0:
0x00058fc6 ldrb r3, [r5, 0x13] | r3 = *((r5 + 0x13));
0x00058fc8 cbnz r3, 0x58fec |
| while (1) {
0x00058fca movs r2, 0 | r2 = 0;
0x00058fcc mov r1, r6 | r1 = r6;
0x00058fce mov r0, r8 | r0 = r8;
0x00058fd0 bl 0x58214 | fcn_00058214 (r0, r1, r2, r3);
0x00058fd4 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00058fd6 mov sb, r0 | sb = r0;
| if (r3 != 0) {
0x00058fd8 cbz r3, 0x58fe4 |
| label_2:
0x00058fda ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00058fdc subs r3, 1 | r3--;
0x00058fde str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00058fe0 cmp r3, 0 |
| if (r3 == 0) {
0x00058fe2 beq 0x590da | goto label_9;
| }
| }
| label_1:
0x00058fe4 mov r0, sb | r0 = sb;
0x00058fe6 add sp, 0xc |
0x00058fe8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00058fec ldr.w sl, [r5, 0x30] | sl = *((r5 + 0x30));
| label_5:
0x00058ff0 str.w sl, [r8, 0x18] | __asm ("str.w sl, [r8, 0x18]");
0x00058ff4 b 0x58fca |
| }
| label_7:
0x00058ff6 bl 0x12464 | fcn_00012464 (r0);
0x00058ffa ldrb r3, [r5, 0x11] | r3 = *((r5 + 0x11));
0x00058ffc ldr.w r8, [r5] | r8 = *(r5);
0x00059000 cmp r3, 0 |
| if (r3 == 0) {
0x00059002 beq 0x58fc6 | goto label_0;
| }
| label_8:
0x00059004 ldr.w sb, [r5, 8] | sb = *((r5 + 8));
0x00059008 mov r3, sb | r3 = sb;
0x0005900a cmp.w sb, 0 |
| if (sb == 0) {
0x0005900e beq 0x5901e | goto label_10;
| }
| do {
0x00059010 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x00059012 bic r2, r2, 4 | r2 = BIT_MASK (r2, 4);
0x00059016 strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x00059018 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0005901a cmp r3, 0 |
0x0005901c bne 0x59010 |
| } while (r3 != 0);
| label_10:
0x0005901e ldrb r3, [r5, 0x12] | r3 = *((r5 + 0x12));
0x00059020 cmp r3, 0 |
| if (r3 != 0) {
0x00059022 bne 0x58fc6 | goto label_0;
| }
0x00059024 ldr r7, [r5, 0x30] | r7 = *((r5 + 0x30));
0x00059026 cmp r7, 1 |
| if (r7 >= 1) {
0x00059028 bls 0x59068 |
0x0005902a ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0005902c movw r2, 0xcccd |
0x00059030 movt r2, 0xcccc | r2 = 0xcccccccd;
0x00059034 subs r0, r7, 2 | r0 = r7 - 2;
0x00059036 umull r2, sl, r2, r3 | r2:sl = r2 * r3;
0x0005903a lsr.w sl, sl, 2 | sl >>= 2;
0x0005903e add.w sl, sl, 1 | sl++;
0x00059042 mov r1, sl | r1 = sl;
0x00059044 bl 0xab680 | fcn_000ab680 (r0, r1, r2);
0x00059048 ldr r3, [pc, 0x150] |
0x0005904a mul sl, sl, r0 | sl *= r0;
0x0005904e ldr r1, [r5, 0x24] | r1 = *((r5 + 0x24));
0x00059050 add r3, pc | r3 = 0xb21f0;
0x00059052 ldr.w r0, [r3, 0x118] | r0 = *(0xb2308);
0x00059056 bl 0xab680 | fcn_000ab680 (r0, r1, r2);
0x0005905a add.w r3, sl, 2 | r3 = sl + 2;
0x0005905e adds r0, 1 | r0++;
0x00059060 cmp r3, r0 |
0x00059062 it eq |
| if (r3 == r0) {
0x00059064 addeq r3, sl, 3 | r3 = sl + 3;
| goto label_11;
| }
| }
| label_11:
0x00059068 cmp r7, r3 |
| if (r7 == r3) {
0x0005906a beq 0x5910c | goto label_12;
| }
0x0005906c ldr r3, [pc, 0x130] |
0x0005906e ldr r1, [r5, 0x24] | r1 = *((r5 + 0x24));
0x00059070 add r3, pc | r3 = 0xb2214;
0x00059072 ldr.w r0, [r3, 0x118] | r0 = "normal";
0x00059076 bl 0xab680 | fcn_000ab680 ("normal", r1, r2);
0x0005907a adds r0, 1 | r0++;
0x0005907c cmp r7, r0 |
| if (r7 == r0) {
0x0005907e beq 0x5910c | goto label_12;
| }
0x00059080 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00059082 mov r1, r7 | r1 = r7;
0x00059084 mov r0, r5 | r0 = r5;
0x00059086 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00059088 ldr.w fp, [r3, 0x24] | fp = *((r3 + 0x24));
0x0005908c rev.w fp, fp | fp = SWAPundefined (fp);
0x00059090 mov r2, fp | r2 = fp;
0x00059092 bl 0x17e0c | r0 = fcn_00017e0c (r0, r1, r2);
0x00059096 cmp r7, r0 |
0x00059098 mov sl, r0 | sl = r0;
| if (r7 <= r0) {
0x0005909a blo 0x5914e | goto label_13;
| }
0x0005909c ite hi |
| if (r7 <= r0) {
0x0005909e movhi r2, 1 | r2 = 1;
| }
| if (r7 > r0) {
0x000590a0 movls r2, 0 | r2 = 0;
| }
0x000590a2 cmp.w sb, 0 |
0x000590a6 ite eq |
| if (sb != 0) {
0x000590a8 moveq r3, 0 | r3 = 0;
| }
| if (sb == 0) {
0x000590aa andne r3, r2, 1 | r3 = r2 & 1;
| }
0x000590ae cmp r3, 0 |
| if (r3 != 0) {
0x000590b0 bne 0x59138 | goto label_14;
| }
0x000590b2 mov sb, r3 | sb = r3;
0x000590b4 movs r3, 1 | r3 = 1;
| if (r2 == 0) {
| do {
| label_3:
0x000590b6 cbz r2, 0x590e8 | goto label_15;
| }
0x000590b8 mov r2, r7 | r2 = r7;
0x000590ba movs r3, 1 | r3 = 1;
0x000590bc mov r1, sl | r1 = sl;
0x000590be mov r0, r5 | r0 = r5;
0x000590c0 bl 0x55f50 | r0 = fcn_00055f50 (r0, r1, r2, r3);
0x000590c4 clz r3, r0 | r3 &= r0;
0x000590c8 subs r7, 1 | r7--;
0x000590ca lsrs r3, r3, 5 | r3 >>= 5;
0x000590cc mov sb, r0 | sb = r0;
0x000590ce cmp sl, r7 |
0x000590d0 ite hs |
| if (sl < r7) {
0x000590d2 movhs r2, 0 | r2 = 0;
| }
| if (sl >= r7) {
0x000590d4 andlo r2, r3, 1 | r2 = r3 & 1;
| }
0x000590d8 b 0x590b6 |
| } while (1);
| label_9:
0x000590da mov r0, r4 | r0 = r4;
0x000590dc bl 0x95d0 | fcn_000095d0 (r0);
0x000590e0 mov r0, sb | r0 = sb;
0x000590e2 add sp, 0xc |
0x000590e4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x000590e8 cmp.w sb, 0x65 |
0x000590ec it eq |
| if (sb != 0x65) {
0x000590ee orreq r3, r3, 1 | r3 |= 1;
| }
0x000590f2 cmp.w fp, 0 |
0x000590f6 ite eq |
| if (fp != 0) {
0x000590f8 moveq r3, 0 | r3 = 0;
| }
| if (fp == 0) {
0x000590fa andne r3, r3, 1 | r3 &= 1;
| }
| if (r3 != 0) {
0x000590fe cbnz r3, 0x59162 | goto label_16;
| }
0x00059100 cmp.w sb, 0 |
| if (sb != 0) {
0x00059104 bne 0x59194 | goto label_17;
| }
0x00059106 ldr.w r8, [r5] | r8 = *(r5);
0x0005910a b 0x58fc6 | goto label_0;
| label_12:
0x0005910c blx 0x7f8c | fcn_00007f8c ();
0x00059110 ldr r2, [pc, 0x90] |
0x00059112 adds r0, 0x14 | r0 += 0x14;
0x00059114 ldr r1, [pc, 0x90] |
0x00059116 movw r3, 0xf2f | r3 = 0xf2f;
0x0005911a add r2, pc | r2 = 0xb22c2;
0x0005911c add r1, pc | r1 = 0xb22c8;
| label_4:
0x0005911e mov.w sb, 0xb | sb = 0xb;
0x00059122 str r0, [sp] | *(sp) = r0;
0x00059124 movt r3, 1 | r3 = (r3 & 0xFFFF) | 0x10000;
0x00059128 movs r0, 0xb | r0 = 0xb;
0x0005912a blx 0x8474 | fcn_00008474 ();
| label_6:
0x0005912e ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00059130 cmp r3, 0 |
| if (r3 == 0) {
0x00059132 beq.w 0x58fe4 | goto label_1;
| }
0x00059136 b 0x58fda | goto label_2;
| label_14:
0x00059138 movs r2, 0 | r2 = 0;
0x0005913a mov r0, sb | r0 = sb;
0x0005913c mov r1, r2 | r1 = r2;
0x0005913e bl 0x589d8 | r0 = fcn_000589d8 (r0, r1, r2);
0x00059142 clz r3, r0 | r3 &= r0;
0x00059146 mov sb, r0 | sb = r0;
0x00059148 lsrs r3, r3, 5 | r3 >>= 5;
0x0005914a mov r2, r3 | r2 = r3;
0x0005914c b 0x590b6 | goto label_3;
| label_13:
0x0005914e blx 0x7f8c | fcn_00007f8c ();
0x00059152 ldr r2, [pc, 0x58] |
0x00059154 adds r0, 0x14 | r0 += 0x14;
0x00059156 ldr r1, [pc, 0x58] |
0x00059158 movw r3, 0xf34 | r3 = 0xf34;
0x0005915c add r2, pc | r2 = 0xb230e;
0x0005915e add r1, pc | r1 = 0xb2314;
0x00059160 b 0x5911e | goto label_4;
| label_16:
0x00059162 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00059164 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00059166 bl 0x51680 | fcn_00051680 (r0);
0x0005916a ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0005916c mov sb, r0 | sb = r0;
0x0005916e ldr r2, [r3, 0x38] | r2 = *((r3 + 0x38));
0x00059170 movs r3, 0 | r3 = 0;
0x00059172 str r3, [r2, 0x20] | *((r2 + 0x20)) = r3;
0x00059174 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00059176 ldr r2, [r2, 0x38] | r2 = *((r2 + 0x38));
0x00059178 str r3, [r2, 0x24] | *((r2 + 0x24)) = r3;
0x0005917a rev.w r2, sl | sl = SWAP32 (r2);
0x0005917e ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00059180 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00059182 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x00059184 movs r3, 1 | r3 = 1;
0x00059186 str.w sl, [r5, 0x30] | __asm ("str.w sl, [r5, 0x30]");
0x0005918a strb r3, [r5, 0x13] | *((r5 + 0x13)) = r3;
| if (r0 == 0) {
0x0005918c cbnz r0, 0x59194 |
0x0005918e ldr.w r8, [r5] | r8 = *(r5);
0x00059192 b 0x58ff0 | goto label_5;
| }
| label_17:
0x00059194 mov r0, r8 | r0 = r8;
0x00059196 bl 0x52e6c | fcn_00052e6c (r0);
0x0005919a b 0x5912e | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x591b4 */
| #include <stdint.h>
|
; (fcn) fcn.000591b4 () | void fcn_000591b4 (int16_t arg1, int16_t arg3) {
| r0 = arg1;
| r2 = arg3;
0x000591b4 push {r3, r4, r5, lr} |
0x000591b6 mov r4, r0 | r4 = r0;
0x000591b8 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
| if (r3 != 0) {
0x000591ba cbz r3, 0x591c6 |
0x000591bc ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000591be ldrb r2, [r0, 0xa] | r2 = *((r0 + 0xa));
0x000591c0 adds r3, 1 | r3++;
0x000591c2 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
| if (r2 == 0) {
0x000591c4 cbz r2, 0x591fa | goto label_2;
| }
| }
0x000591c6 ldrb r5, [r4, 8] | r5 = *((r4 + 8));
0x000591c8 cmp r5, 2 |
| if (r5 == 2) {
0x000591ca beq 0x591e8 | goto label_1;
| }
| if (r5 == 0) {
| label_0:
0x000591cc cbz r5, 0x591d8 | goto label_3;
| }
0x000591ce movs r1, 0 | r1 = 0;
0x000591d0 mov r0, r4 | r0 = r4;
0x000591d2 bl 0x542bc | r0 = fcn_000542bc (r0, r1);
0x000591d6 mov r5, r0 | r5 = r0;
| do {
| label_3:
0x000591d8 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 != 0) {
0x000591da cbz r3, 0x591e4 |
0x000591dc ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000591de subs r3, 1 | r3--;
0x000591e0 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| if (r3 == 0) {
0x000591e2 cbz r3, 0x59206 | goto label_4;
| }
| }
0x000591e4 mov r0, r5 | r0 = r5;
0x000591e6 pop {r3, r4, r5, pc} |
| label_1:
0x000591e8 movs r1, 0 | r1 = 0;
0x000591ea mov r0, r4 | r0 = r4;
0x000591ec bl 0x58fa4 | r0 = fcn_00058fa4 (r0, r1, r2);
0x000591f0 mov r5, r0 | r5 = r0;
0x000591f2 cmp r0, 0 |
0x000591f4 bne 0x591d8 |
| } while (r0 != 0);
0x000591f6 ldrb r5, [r4, 8] | r5 = *((r4 + 8));
0x000591f8 b 0x591cc | goto label_0;
| label_2:
0x000591fa bl 0x12464 | fcn_00012464 (r0);
0x000591fe ldrb r5, [r4, 8] | r5 = *((r4 + 8));
0x00059200 cmp r5, 2 |
| if (r5 != 2) {
0x00059202 bne 0x591cc | goto label_0;
| }
0x00059204 b 0x591e8 | goto label_1;
| label_4:
0x00059206 mov r0, r4 | r0 = r4;
0x00059208 bl 0x95d0 | fcn_000095d0 (r0);
0x0005920c mov r0, r5 | r0 = r5;
0x0005920e pop {r3, r4, r5, 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/libsqlite3.so.0.8.6 @ 0x597c8 */
| #include <stdint.h>
|
; (fcn) fcn.000597c8 () | void fcn_000597c8 (uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000597c8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000597cc mov r8, r0 | r8 = r0;
0x000597ce sub sp, 0xc |
0x000597d0 cmp r0, 0 |
| if (r0 == 0) {
0x000597d2 beq 0x5989c | goto label_6;
| }
0x000597d4 mov r7, r1 | r7 = r1;
0x000597d6 mov r6, r2 | r6 = r2;
0x000597d8 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
0x000597da cmp r3, 0 |
| if (r3 == 0) {
0x000597dc beq 0x59864 | goto label_7;
| }
0x000597de ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000597e0 ldrb r2, [r0, 0xa] | r2 = *((r0 + 0xa));
0x000597e2 adds r1, r3, 1 | r1 = r3 + 1;
0x000597e4 str r1, [r0, 0xc] | *((r0 + 0xc)) = r1;
0x000597e6 cmp r2, 0 |
| if (r2 != 0) {
0x000597e8 bne 0x598a6 | goto label_8;
| }
0x000597ea bl 0x12464 | fcn_00012464 (r0);
0x000597ee ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000597f2 ldr r5, [r3, 8] | r5 = *((r3 + 8));
| if (r5 == 0) {
0x000597f4 cbz r5, 0x59848 | goto label_9;
| }
| label_1:
0x000597f6 mov.w sb, 4 | sb = 4;
0x000597fa mov.w fp, 0xff |
| label_0:
0x000597fe cmp r6, 0 |
| if (r6 == 0) {
0x00059800 beq 0x59870 | goto label_10;
| }
0x00059802 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00059804 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x00059806 bmi 0x59870 | goto label_10;
| }
0x00059808 ldrb r2, [r5] | r2 = *(r5);
0x0005980a ands r4, r2, 0xfd | r4 = r2 & 0xfd;
| if (r4 == r2) {
0x0005980e beq 0x59882 | goto label_11;
| }
| label_3:
0x00059810 ldrsb.w r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x00059814 cmp r3, 0 |
| if (r3 < 0) {
0x00059816 blt 0x59842 | goto label_12;
| }
0x00059818 itt ne |
| if (r3 == 0) {
0x0005981a addne sl, r5, 0x74 | sl = r5 + 0x74;
| }
| if (r3 != 0) {
0x0005981e movs r4, 0 | r4 = 0;
| }
| if (r4 == 0) {
0x00059820 beq 0x59836 | goto label_13;
| }
| do {
0x00059822 ldr r2, [sl, 4]! | r2 = *((sl += 4));
0x00059826 adds r4, 1 | r4++;
0x00059828 ldr r0, [r2, 0x48] | r0 = *((r2 + 0x48));
0x0005982a bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005982e ldrsb.w r2, [r5, 0x44] | r2 = *((r5 + 0x44));
0x00059832 cmp r4, r2 |
0x00059834 blt 0x59822 |
| } while (r4 < r2);
| label_13:
0x00059836 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x00059838 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005983a bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005983e strb.w fp, [r5, 0x44] | *((r5 + 0x44)) = fp;
| label_12:
0x00059842 ldr r5, [r5, 0x18] | r5 = *((r5 + 0x18));
0x00059844 cmp r5, 0 |
| if (r5 != 0) {
0x00059846 bne 0x597fe | goto label_0;
| }
| label_9:
0x00059848 movs r1, 0 | r1 = 0;
| label_4:
0x0005984a ldrb.w r3, [r8, 9] | r3 = *((r8 + 9));
| if (r3 != 0) {
0x0005984e cbz r3, 0x5985c |
0x00059850 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00059854 subs r3, 1 | r3--;
| label_5:
0x00059856 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
| if (r3 == 0) {
0x0005985a cbz r3, 0x598b2 | goto label_14;
| }
| }
| label_2:
0x0005985c mov r0, r1 | r0 = r1;
0x0005985e add sp, 0xc |
0x00059860 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00059864 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00059866 ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x00059868 mov r1, r5 | r1 = r5;
0x0005986a cmp r5, 0 |
| if (r5 != 0) {
0x0005986c bne 0x597f6 | goto label_1;
| }
0x0005986e b 0x5985c | goto label_2;
| label_10:
0x00059870 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x00059872 blx 0x84f8 | fcn_000084f8 ();
0x00059876 movs r3, 0 | r3 = 0;
0x00059878 strb.w sb, [r5] | *(r5) = sb;
0x0005987c str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x0005987e str r7, [r5, 4] | *((r5 + 4)) = r7;
0x00059880 b 0x59810 | goto label_3;
| label_11:
0x00059882 mov r0, r5 | r0 = r5;
0x00059884 bl 0x58954 | r0 = fcn_00058954 (r0);
0x00059888 mov r1, r0 | r1 = r0;
0x0005988a cmp r0, 0 |
| if (r0 == 0) {
0x0005988c beq 0x59810 | goto label_3;
| }
0x0005988e str r0, [sp, 4] | var_4h = r0;
0x00059890 mov r2, r4 | r2 = r4;
0x00059892 mov r0, r8 | r0 = r8;
0x00059894 bl 0x597c8 | fcn_000597c8 (r0, r1, r2);
0x00059898 ldr r1, [sp, 4] | r1 = var_4h;
0x0005989a b 0x5984a | goto label_4;
| label_6:
0x0005989c mov r1, r0 | r1 = r0;
0x0005989e mov r0, r1 | r0 = r1;
0x000598a0 add sp, 0xc |
0x000598a2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x000598a6 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x000598a8 ldr r5, [r2, 8] | r5 = *((r2 + 8));
0x000598aa mov r1, r5 | r1 = r5;
0x000598ac cmp r5, 0 |
| if (r5 != 0) {
0x000598ae bne 0x597f6 | goto label_1;
| }
0x000598b0 b 0x59856 | goto label_5;
| label_14:
0x000598b2 mov r0, r8 | r0 = r8;
0x000598b4 str r1, [sp, 4] | var_4h = r1;
0x000598b6 bl 0x95d0 | fcn_000095d0 (r0);
0x000598ba ldr r1, [sp, 4] | r1 = var_4h;
0x000598bc mov r0, r1 | r0 = r1;
0x000598be add sp, 0xc |
0x000598c0 pop.w {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/libsqlite3.so.0.8.6 @ 0x598c4 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.000598c4 () | void fcn_000598c4 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000598c4 push {r4, r5, r6, r7, lr} |
0x000598c6 mov r6, r2 | r6 = r2;
0x000598c8 ldr r2, [pc, 0xf4] |
0x000598ca sub sp, 0xc |
0x000598cc mov r4, r0 | r4 = r0;
0x000598ce mov r5, r1 | r5 = r1;
0x000598d0 ldr r3, [pc, 0xf0] | r3 = *(0x599c4);
0x000598d2 add r2, pc | r2 = 0xb3296;
0x000598d4 ldr r7, [r0, 4] | r7 = *((r0 + 4));
0x000598d6 ldr r3, [r2, r3] |
0x000598d8 ldr r3, [r3] | r3 = *(0xb3296);
0x000598da str r3, [sp, 4] | var_4h = r3;
0x000598dc mov.w r3, 0 | r3 = 0;
0x000598e0 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
| if (r3 != 0) {
0x000598e2 cbz r3, 0x598ee |
0x000598e4 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000598e6 adds r3, 1 | r3++;
0x000598e8 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x000598ea ldrb r3, [r0, 0xa] | r3 = *((r0 + 0xa));
| if (r3 == 0) {
0x000598ec cbz r3, 0x5992c | goto label_3;
| }
| }
| if (r5 == 0) {
0x000598ee cbz r5, 0x59934 | goto label_4;
| }
| do {
| label_1:
0x000598f0 mov r2, r6 | r2 = r6;
0x000598f2 mov r1, r5 | r1 = r5;
0x000598f4 mov r0, r4 | r0 = r4;
0x000598f6 bl 0x597c8 | fcn_000597c8 (r0, r1, r2);
| label_0:
0x000598fa ldrb r3, [r4, 8] | r3 = *((r4 + 8));
0x000598fc cmp r3, 2 |
| if (r3 == 2) {
0x000598fe beq 0x59950 | goto label_5;
| }
| label_2:
0x00059900 mov r0, r4 | r0 = r4;
0x00059902 bl 0x541e4 | fcn_000541e4 (r0);
0x00059906 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 != 0) {
0x00059908 cbz r3, 0x59914 |
0x0005990a ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0005990c subs r3, 1 | r3--;
0x0005990e str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00059910 cmp r3, 0 |
| if (r3 == 0) {
0x00059912 beq 0x59994 | goto label_6;
| }
| }
0x00059914 ldr r2, [pc, 0xb0] |
0x00059916 ldr r3, [pc, 0xac] | r3 = *(0x599c6);
0x00059918 add r2, pc | r2 = 0xb32e4;
0x0005991a ldr r3, [r2, r3] | r3 = *(0xb32e4);
0x0005991c ldr r2, [r3] | r2 = *(0xb32e4);
0x0005991e ldr r3, [sp, 4] | r3 = var_4h;
0x00059920 eors r2, r3 | r2 ^= r3;
0x00059922 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00059926 bne 0x599bc | goto label_7;
| }
0x00059928 add sp, 0xc |
0x0005992a pop {r4, r5, r6, r7, pc} |
| label_3:
0x0005992c bl 0x12464 | fcn_00012464 (r0);
0x00059930 cmp r5, 0 |
0x00059932 bne 0x598f0 |
| } while (r5 != 0);
| label_4:
0x00059934 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00059936 cmp r0, 0 |
| if (r0 == 0) {
0x00059938 beq 0x598fa | goto label_0;
| }
0x0005993a mov r2, r5 | r2 = r5;
0x0005993c mov r1, r5 | r1 = r5;
0x0005993e mov r6, r5 | r6 = r5;
0x00059940 bl 0x589d8 | r0 = fcn_000589d8 (r0, r1, r2);
0x00059944 mov r5, r0 | r5 = r0;
0x00059946 cmp r0, 0 |
| if (r0 != 0) {
0x00059948 bne 0x598f0 | goto label_1;
| }
0x0005994a ldrb r3, [r4, 8] | r3 = *((r4 + 8));
0x0005994c cmp r3, 2 |
| if (r3 != 2) {
0x0005994e bne 0x59900 | goto label_2;
| }
| label_5:
0x00059950 ldr r0, [r7] | r0 = *(r7);
0x00059952 bl 0x52e6c | fcn_00052e6c (r0);
0x00059956 movs r3, 0 | r3 = 0;
0x00059958 mov r2, sp | r2 = sp;
0x0005995a movs r1, 1 | r1 = 1;
0x0005995c mov r0, r7 | r0 = r7;
0x0005995e bl 0x9710 | r0 = fcn_00009710 (r0, r1, r2);
| if (r0 != 0) {
0x00059962 cbnz r0, 0x59984 | goto label_8;
| }
0x00059964 ldr r3, [sp] | r3 = *(sp);
0x00059966 ldr r2, [r3, 0x38] | r2 = *((r3 + 0x38));
0x00059968 ldr r2, [r2, 0x1c] | r2 = *((r2 + 0x1c));
0x0005996a rev r1, r2 | r2 = SWAP32 (r1);
| if (r2 == 0) {
0x0005996c cbnz r2, 0x59972 |
0x0005996e ldr r2, [r7] | r2 = *(r7);
0x00059970 ldr r1, [r2, 0x18] | r1 = *((r2 + 0x18));
| }
0x00059972 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00059974 str r1, [r7, 0x30] | *((r7 + 0x30)) = r1;
0x00059976 ldr r5, [r0, 0x14] | r5 = *((r0 + 0x14));
0x00059978 bl 0x11f5c | fcn_00011f5c (r0);
0x0005997c ldr.w r3, [r5, 0xd4] | r3 = *((r5 + 0xd4));
0x00059980 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00059982 cbz r3, 0x599b4 |
| while (1) {
| label_8:
0x00059984 movs r3, 1 | r3 = 1;
0x00059986 ldr r0, [r7, 0x40] | r0 = *((r7 + 0x40));
0x00059988 strb r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x0005998a bl 0x1cc44 | fcn_0001cc44 (r0, r1, r2, r3);
0x0005998e movs r3, 0 | r3 = 0;
0x00059990 str r3, [r7, 0x40] | *((r7 + 0x40)) = r3;
0x00059992 b 0x59900 | goto label_2;
| label_6:
0x00059994 ldr r2, [pc, 0x34] |
0x00059996 ldr r3, [pc, 0x2c] | r3 = *(0x599c6);
0x00059998 add r2, pc | r2 = 0xb3368;
0x0005999a ldr r3, [r2, r3] | r3 = *(0xb3368);
0x0005999c ldr r2, [r3] | r2 = *(0xb3368);
0x0005999e ldr r3, [sp, 4] | r3 = var_4h;
0x000599a0 eors r2, r3 | r2 ^= r3;
0x000599a2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000599a6 bne 0x599bc | goto label_7;
| }
0x000599a8 mov r0, r4 | r0 = r4;
0x000599aa add sp, 0xc |
0x000599ac pop.w {r4, r5, r6, r7, lr} |
0x000599b0 b.w 0x95d0 | void (*0x95d0)() ();
0x000599b4 mov r0, r5 | r0 = r5;
0x000599b6 bl 0x52f34 | fcn_00052f34 (r0);
0x000599ba b 0x59984 |
| }
| label_7:
0x000599bc blx 0x7e8c | fcn_00007e8c ();
0x000599c0 bics r6, r7 | __asm ("bics r6, r7");
0x000599c2 movs r7, r0 | r7 = r0;
0x000599c4 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000599c6 movs r0, r0 |
0x000599c8 muls r0, r7, r0 | r0 = r7 * r0;
0x000599ca movs r7, r0 | r7 = r0;
0x000599cc cmn r0, r7 |
0x000599ce movs r7, r0 | r7 = 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/libsqlite3.so.0.8.6 @ 0x59ac0 */
| #include <stdint.h>
|
; (fcn) fcn.00059ac0 () | void fcn_00059ac0 (int16_t arg1) {
| r0 = arg1;
0x00059ac0 invalid |
0x00059ac4 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
0x00059ac6 ldr r5, [r0, 4] | r5 = *((r0 + 4));
| if (r3 == 0) {
0x00059ac8 cbz r3, 0x59ad6 | goto label_5;
| }
0x00059aca ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00059acc ldrb r2, [r0, 0xa] | r2 = *((r0 + 0xa));
0x00059ace adds r3, 1 | r3++;
0x00059ad0 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00059ad2 cmp r2, 0 |
0x00059ad4 beq 0x59b6e |
| while (1) {
| label_5:
0x00059ad6 movs r2, 0 | r2 = 0;
0x00059ad8 mov r0, r4 | r0 = r4;
0x00059ada mov r1, r2 | r1 = r2;
0x00059adc bl 0x598c4 | fcn_000598c4 (r0, r1, r2);
0x00059ae0 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 != 0) {
0x00059ae2 cbz r3, 0x59b26 |
0x00059ae4 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00059ae6 subs r3, 1 | r3--;
0x00059ae8 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00059aea cmp r3, 0 |
| if (r3 == 0) {
0x00059aec beq 0x59b8e | goto label_6;
| }
| label_3:
0x00059aee ldr r3, [pc, 0xb4] |
0x00059af0 add r3, pc | r3 = 0xb369a;
0x00059af2 ldrb r6, [r3, 4] | r6 = *((r3 + 4));
| if (r6 != 0) {
0x00059af4 cbz r6, 0x59afe |
0x00059af6 ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x00059af8 movs r0, 2 | r0 = 2;
0x00059afa blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00059afc mov r6, r0 | r6 = r0;
| }
0x00059afe mov r0, r6 | r0 = r6;
0x00059b00 blx 0x8254 | fcn_00008254 ();
0x00059b04 ldr r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x00059b06 subs r3, 1 | r3--;
0x00059b08 cmp r3, 0 |
0x00059b0a str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
| if (r3 <= 0) {
0x00059b0c ble 0x59b74 | goto label_7;
| }
0x00059b0e mov r0, r6 | r0 = r6;
0x00059b10 blx 0x81d4 | fcn_000081d4 ();
0x00059b14 b 0x59b56 | goto label_8;
| label_1:
0x00059b16 ldr r2, [r5, 0x48] | r2 = *((r5 + 0x48));
0x00059b18 str r2, [r3, 0x48] | *((r3 + 0x48)) = r2;
| label_0:
0x00059b1a ldr r0, [r5, 0x3c] | r0 = *((r5 + 0x3c));
0x00059b1c blx 0x7fa4 | pthread_mutex_trylock ();
0x00059b20 mov r0, r6 | r0 = r6;
0x00059b22 blx 0x81d4 | fcn_000081d4 ();
| }
| label_4:
0x00059b26 ldr r1, [r4] | r1 = *(r4);
0x00059b28 ldr r0, [r5] | r0 = *(r5);
0x00059b2a bl 0x533b4 | fcn_000533b4 (r0, r1);
0x00059b2e ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
| if (r3 != 0) {
0x00059b30 cbz r3, 0x59b38 |
0x00059b32 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
| if (r0 == 0) {
0x00059b34 cbz r0, 0x59b40 | goto label_9;
| }
0x00059b36 blx r3 | uint32_t (*r3)() ();
| }
0x00059b38 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
| if (r0 != 0) {
0x00059b3a cbz r0, 0x59b40 |
0x00059b3c blx 0x84f8 | fcn_000084f8 ();
| }
| label_9:
0x00059b40 ldr r0, [r5, 0x54] | r0 = *((r5 + 0x54));
| if (r0 != 0) {
0x00059b42 cbz r0, 0x59b50 |
0x00059b44 subs r0, 4 | r0 -= 4;
0x00059b46 str r0, [r5, 0x54] | *((r5 + 0x54)) = r0;
0x00059b48 bl 0xdff4 | fcn_0000dff4 (r0);
0x00059b4c movs r3, 0 | r3 = 0;
0x00059b4e str r3, [r5, 0x54] | *((r5 + 0x54)) = r3;
| }
0x00059b50 mov r0, r5 | r0 = r5;
0x00059b52 blx 0x84f8 | fcn_000084f8 ();
| label_8:
0x00059b56 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
| if (r3 != 0) {
0x00059b58 cbz r3, 0x59b5e |
0x00059b5a ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00059b5c str r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
| }
0x00059b5e ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
| if (r2 != 0) {
0x00059b60 cbz r2, 0x59b64 |
0x00059b62 str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
| }
0x00059b64 mov r0, r4 | r0 = r4;
0x00059b66 pop.w {r4, r5, r6, lr} |
0x00059b6a b.w 0x84f4 | void (*0x84f4)() ();
0x00059b6e bl 0x12464 | fcn_00012464 (r0);
0x00059b72 b 0x59ad6 |
| }
| label_7:
0x00059b74 ldr r2, [pc, 0x30] |
0x00059b76 add r2, pc | r2 = 0xb3722;
0x00059b78 ldr.w r3, [r2, 0x4ac] | r3 = *(0xb3bce);
0x00059b7c cmp r5, r3 |
| if (r5 == r3) {
0x00059b7e beq 0x59b9c | goto label_10;
| }
| label_2:
0x00059b80 cmp r3, 0 |
| if (r3 == 0) {
0x00059b82 beq 0x59b1a | goto label_0;
| }
0x00059b84 ldr r2, [r3, 0x48] | r2 = *((r3 + 0x48));
0x00059b86 cmp r5, r2 |
| if (r5 == r2) {
0x00059b88 beq 0x59b16 | goto label_1;
| }
0x00059b8a mov r3, r2 | r3 = r2;
0x00059b8c b 0x59b80 | goto label_2;
| label_6:
0x00059b8e mov r0, r4 | r0 = r4;
0x00059b90 bl 0x95d0 | fcn_000095d0 (r0);
0x00059b94 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00059b96 cmp r3, 0 |
| if (r3 != 0) {
0x00059b98 bne 0x59aee | goto label_3;
| }
0x00059b9a b 0x59b26 | goto label_4;
| label_10:
0x00059b9c ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x00059b9e str.w r3, [r2, 0x4ac] | __asm ("str.w r3, aav.0x000000ff");
0x00059ba2 b 0x59b1a | 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/libsqlite3.so.0.8.6 @ 0x5a918 */
| #include <stdint.h>
|
; (fcn) fcn.0005a918 () | void fcn_0005a918 (int16_t arg_28h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0005a918 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0005a91c sub sp, 0xc |
0x0005a91e cmp r0, 0 |
| if (arg_28h == ) {
0x0005a920 beq 0x5a9dc | goto label_5;
| }
0x0005a922 mov r7, r2 | r7 = r2;
0x0005a924 mov r5, r3 | r5 = r3;
0x0005a926 ldr r6, [r0, 0x14] | r6 = *(arg_28hx14);
0x0005a928 mov r4, r0 | r4 = r0;
0x0005a92a mov r8, r1 | r8 = r1;
0x0005a92c ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0005a92e blx 0x8254 | fcn_00008254 ();
0x0005a932 orrs.w r3, r7, r5 | r3 = r7 | r5;
0x0005a936 ldr.w sb, [r4, 0x10] | sb = *((r4 + 0x10));
0x0005a93a bpl 0x5a962 |
| while (r1 < r0) {
0x0005a93c movs r3, 1 | r3 = 1;
0x0005a93e mov r5, r3 | r5 = r3;
0x0005a940 str r3, [r6, 0x40] | *((r6 + 0x40)) = r3;
| label_0:
0x0005a942 mov r1, r5 | r1 = r5;
0x0005a944 mov r0, r6 | r0 = r6;
0x0005a946 bl 0x1663c | fcn_0001663c (r0, r1);
| label_2:
0x0005a94a mov r1, r5 | r1 = r5;
0x0005a94c mov r0, r6 | r0 = r6;
0x0005a94e bl 0x166c8 | r0 = fcn_000166c8 (r0, r1);
0x0005a952 mov r5, r0 | r5 = r0;
| label_1:
0x0005a954 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0005a956 blx 0x81d4 | fcn_000081d4 ();
0x0005a95a mov r0, r5 | r0 = r5;
0x0005a95c add sp, 0xc |
0x0005a95e pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0005a962 ldr r1, [r4] | r1 = *(r4);
0x0005a964 asrs r3, r7, 0x1f | r3 = r7 >> 0x1f;
0x0005a966 adds r0, r5, r7 | r0 = r5 + r7;
0x0005a968 adc.w r3, r3, r5, asr 31 | __asm ("adc.w r3, r3, r5, asr 31");
0x0005a96c cmp r1, r0 |
0x0005a96e asr.w r2, r1, 0x1f | r2 = r1 >> 0x1f;
0x0005a972 sbcs r2, r3 | __asm ("sbcs r2, r3");
0x0005a974 blt 0x5a93c |
| }
0x0005a976 cmp.w sb, 0 |
| if (sb == 0) {
0x0005a97a beq 0x5a9d4 | goto label_6;
| }
0x0005a97c ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0005a97e ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0005a980 ldrb r2, [r3, 9] | r2 = *((r3 + 9));
| if (r2 != 0) {
0x0005a982 cbz r2, 0x5a990 |
0x0005a984 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0005a986 adds r2, 1 | r2++;
0x0005a988 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x0005a98a ldrb r2, [r3, 0xa] | r2 = *((r3 + 0xa));
0x0005a98c cmp r2, 0 |
| if (r2 == 0) {
0x0005a98e beq 0x5aa06 | goto label_7;
| }
| }
| label_3:
0x0005a990 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0005a992 mov r3, r8 | r3 = r8;
0x0005a994 mov r2, r7 | r2 = r7;
0x0005a996 add r1, r5 | r1 += r5;
0x0005a998 ldr r5, [sp, 0x28] | r5 = *(arg_28h);
0x0005a99a blx r5 | uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0005a99c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0005a99e mov r5, r0 | r5 = r0;
0x0005a9a0 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0005a9a2 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
| if (r3 != 0) {
0x0005a9a4 cbz r3, 0x5a9ae |
0x0005a9a6 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0005a9a8 subs r3, 1 | r3--;
0x0005a9aa str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
| if (r3 == 0) {
0x0005a9ac cbz r3, 0x5aa10 | goto label_8;
| }
| }
| label_4:
0x0005a9ae cmp r5, 4 |
| if (r5 == 4) {
0x0005a9b0 beq 0x5aa16 | goto label_9;
| }
0x0005a9b2 str.w r5, [sb, 0x28] | __asm ("str.w r5, [sb, 0x28]");
0x0005a9b6 str r5, [r6, 0x40] | *((r6 + 0x40)) = r5;
0x0005a9b8 cmp r5, 0 |
| if (r5 != 0) {
0x0005a9ba bne 0x5a942 | goto label_0;
| }
0x0005a9bc ldr.w r3, [r6, 0x10c] | r3 = *((r6 + 0x10c));
| if (r3 != 0) {
0x0005a9c0 cbz r3, 0x5a9ca |
0x0005a9c2 mov r1, r5 | r1 = r5;
0x0005a9c4 mov r0, r6 | r0 = r6;
0x0005a9c6 bl 0x1663c | fcn_0001663c (r0, r1);
| }
0x0005a9ca ldrb.w r3, [r6, 0x53] | r3 = *((r6 + 0x53));
0x0005a9ce cmp r3, 0 |
| if (r3 == 0) {
0x0005a9d0 beq 0x5a954 | goto label_1;
| }
0x0005a9d2 b 0x5a94a | goto label_2;
| label_6:
0x0005a9d4 movs r3, 4 | r3 = 4;
0x0005a9d6 mov r5, r3 | r5 = r3;
0x0005a9d8 str r3, [r6, 0x40] | *((r6 + 0x40)) = r3;
0x0005a9da b 0x5a942 | goto label_0;
| label_5:
0x0005a9dc blx 0x7f8c | fcn_00007f8c ();
0x0005a9e0 ldr r2, [pc, 0x68] |
0x0005a9e2 add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x0005a9e6 ldr r1, [pc, 0x68] |
0x0005a9e8 movw r3, 0x73d6 |
0x0005a9ec movt r3, 1 | r3 = 0x173d6;
0x0005a9f0 movs r0, 0x15 | r0 = 0x15;
0x0005a9f2 add r2, pc | r2 = 0xb5442;
0x0005a9f4 movs r5, 0x15 | r5 = 0x15;
0x0005a9f6 add r1, pc | r1 = 0xb544c;
0x0005a9f8 str r4, [sp] | *(sp) = r4;
0x0005a9fa blx 0x8474 | fcn_00008474 ();
0x0005a9fe mov r0, r5 | r0 = r5;
0x0005aa00 add sp, 0xc |
0x0005aa02 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_7:
0x0005aa06 mov r0, r3 | r0 = r3;
0x0005aa08 bl 0x12464 | fcn_00012464 (r0);
0x0005aa0c ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0005aa0e b 0x5a990 | goto label_3;
| label_8:
0x0005aa10 bl 0x95d0 | fcn_000095d0 (r0);
0x0005aa14 b 0x5a9ae | goto label_4;
| label_9:
0x0005aa16 ldr.w r2, [sb, 0x14] | r2 = *((sb + 0x14));
0x0005aa1a movw r1, 0xda3 |
0x0005aa1e movw r3, 0x2973 |
0x0005aa22 movt r1, 0x2df2 | r1 = 0x2df20da3;
0x0005aa26 movt r3, 0x319c | r3 = 0x319c2973;
0x0005aa2a cmp r2, r3 |
0x0005aa2c it ne |
| if (r2 != r3) {
0x0005aa2e cmpne r2, r1 | __asm ("cmpne r2, r1");
| }
0x0005aa30 beq 0x5aa42 |
| while (1) {
0x0005aa32 mov r0, sb | r0 = sb;
0x0005aa34 bl 0x1a984 | fcn_0001a984 (r0);
0x0005aa38 movs r2, 0 | r2 = 0;
0x0005aa3a movs r3, 4 | r3 = 4;
0x0005aa3c str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0005aa3e str r3, [r6, 0x40] | *((r6 + 0x40)) = r3;
0x0005aa40 b 0x5a942 | goto label_0;
0x0005aa42 mov r0, sb | r0 = sb;
0x0005aa44 bl 0x5a870 | fcn_0005a870 (r0);
0x0005aa48 b 0x5aa32 |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5adcc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0005adcc () | void fcn_0005adcc (uint32_t arg1) {
| r0 = arg1;
0x0005adcc ldr r2, [r0, 0x64] | r2 = *((r0 + 0x64));
0x0005adce movw r3, 0xfc7f |
0x0005add2 movt r3, 0x64cf | r3 = 0x64cffc7f;
0x0005add6 push.w {r4, r5, r6, r7, r8, lr} |
0x0005adda mov r6, r0 | r6 = r0;
0x0005addc cmp r2, r3 |
| if (r2 != r3) {
0x0005adde bne 0x5ade4 | goto label_9;
| }
0x0005ade0 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0005ade2 cbz r3, 0x5adee |
| while (r1 != 0) {
| label_9:
0x0005ade4 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0005ade6 pop.w {r4, r5, r6, r7, r8, lr} |
0x0005adea b.w 0x81d0 | void (*0x81d0)() ();
0x0005adee ldr r0, [r0, 0x14] | r0 = *((r0 + 0x14));
0x0005adf0 cmp r0, 0 |
| if (r0 <= 0) {
0x0005adf2 ble 0x5ae08 | goto label_10;
| }
0x0005adf4 ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
| label_0:
0x0005adf6 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0005adf8 adds r3, 1 | r3++;
0x0005adfa adds r2, 0x10 | r2 += 0x10;
| if (r1 == 0) {
0x0005adfc cbz r1, 0x5ae04 | goto label_11;
| }
0x0005adfe ldr r1, [r1, 0x10] | r1 = *((r1 + 0x10));
0x0005ae00 cmp r1, 0 |
0x0005ae02 bne 0x5ade4 |
| }
| label_11:
0x0005ae04 cmp r3, r0 |
| if (r3 != r0) {
0x0005ae06 bne 0x5adf6 | goto label_0;
| }
| label_10:
0x0005ae08 movs r1, 0 | r1 = 0;
0x0005ae0a mov r0, r6 | r0 = r6;
0x0005ae0c bl 0x599d0 | fcn_000599d0 (r0, r1);
0x0005ae10 ldr.w r1, [r6, 0x1d0] | r1 = *((r6 + 0x1d0));
| if (r1 == 0) {
0x0005ae14 cbz r1, 0x5ae2a | goto label_12;
| }
| do {
0x0005ae16 ldr r3, [r1, 0x18] | r3 = *((r1 + 0x18));
0x0005ae18 mov r0, r6 | r0 = r6;
0x0005ae1a str.w r3, [r6, 0x1d0] | __asm ("str.w r3, aav.0x000000ff");
0x0005ae1e bl 0x159dc | fcn_000159dc (r0, r1);
0x0005ae22 ldr.w r1, [r6, 0x1d0] | r1 = *((r6 + 0x1d0));
0x0005ae26 cmp r1, 0 |
0x0005ae28 bne 0x5ae16 |
| } while (r1 != 0);
| label_12:
0x0005ae2a ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x0005ae2c movs r4, 0 | r4 = 0;
0x0005ae2e ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0005ae30 strd r4, r4, [r6, 0x1dc] | __asm ("strd r4, r4, aav.0x000000ff");
0x0005ae34 cmp r2, r4 |
0x0005ae36 strb.w r4, [r6, 0x59] | *((r6 + 0x59)) = r4;
| if (r2 <= r4) {
0x0005ae3a ble 0x5ae5c | goto label_13;
| }
0x0005ae3c mov r7, r4 | r7 = r4;
| do {
0x0005ae3e add.w r5, r3, r4, lsl 4 | r5 = r3 + (r4 << 4);
0x0005ae42 ldr r0, [r5, 4] | r0 = *((r5 + 4));
| if (r0 != 0) {
0x0005ae44 cbz r0, 0x5ae56 |
0x0005ae46 bl 0x59ac0 | fcn_00059ac0 (r0);
0x0005ae4a cmp r4, 1 |
0x0005ae4c ldrd r3, r2, [r6, 0x10] | __asm ("ldrd r3, r2, [r6, 0x10]");
0x0005ae50 str r7, [r5, 4] | *((r5 + 4)) = r7;
0x0005ae52 it ne |
| if (r4 != 1) {
0x0005ae54 strne r7, [r5, 0xc] | *((r5 + 0xc)) = r7;
| goto label_14;
| }
| }
| label_14:
0x0005ae56 adds r4, 1 | r4++;
0x0005ae58 cmp r4, r2 |
0x0005ae5a blt 0x5ae3e |
| } while (r4 < r2);
| label_13:
0x0005ae5c ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
| if (r0 != 0) {
0x0005ae5e cbz r0, 0x5ae64 |
0x0005ae60 bl 0x1925c | fcn_0001925c (r0);
| }
0x0005ae64 ldr.w r4, [r6, 0x180] | r4 = *((r6 + 0x180));
| if (r4 == 0) {
0x0005ae68 cbz r4, 0x5ae94 | goto label_15;
| }
0x0005ae6a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005ae6c movs r2, 0 | r2 = 0;
0x0005ae6e str.w r2, [r6, 0x180] | __asm ("str.w r2, aav.0x000000ff");
| if (r3 == 0) {
0x0005ae72 cbz r3, 0x5ae88 | goto label_16;
| }
0x0005ae74 movs r1, 1 | r1 = 1;
| do {
0x0005ae76 ldrb.w r2, [r3, 0x96] | r2 = *((r3 + 0x96));
0x0005ae7a bfi r2, r1, 0, 2 | value_0 = BIT_MASK (0, 2);
| value_1 = r1 & value_0;
| value_0 = ~value_0;
| r2 &= value_0;
| r2 |= value_1;
0x0005ae7e strb.w r2, [r3, 0x96] | *((r3 + 0x96)) = r2;
0x0005ae82 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0005ae84 cmp r3, 0 |
0x0005ae86 bne 0x5ae76 |
| } while (r3 != 0);
| do {
| label_16:
0x0005ae88 mov r0, r4 | r0 = r4;
0x0005ae8a ldr r4, [r4, 0x18] | r4 = *((r4 + 0x18));
0x0005ae8c bl 0x1618c | fcn_0001618c (r0);
0x0005ae90 cmp r4, 0 |
0x0005ae92 bne 0x5ae88 |
| } while (r4 != 0);
| label_15:
0x0005ae94 mov r0, r6 | r0 = r6;
0x0005ae96 bl 0x16064 | fcn_00016064 (r0);
0x0005ae9a ldr.w r7, [r6, 0x18c] | r7 = *((r6 + 0x18c));
0x0005ae9e cmp r7, 0 |
| if (r7 == 0) {
0x0005aea0 beq.w 0x5b09e | goto label_17;
| }
| label_1:
0x0005aea4 ldr r5, [r7, 8] | r5 = *((r7 + 8));
| do {
0x0005aea6 ldr r4, [r5, 0x24] | r4 = *((r5 + 0x24));
| if (r4 != 0) {
0x0005aea8 cbz r4, 0x5aec0 |
0x0005aeaa ldr r3, [r4] | r3 = *(r4);
0x0005aeac subs r3, 1 | r3--;
0x0005aeae str r3, [r4] | *(r4) = r3;
| if (r3 != 0) {
0x0005aeb0 cbnz r3, 0x5aec0 | goto label_18;
| }
0x0005aeb2 ldrd r3, r0, [r4, 4] | __asm ("ldrd r3, r0, [r4, 4]");
0x0005aeb6 blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x0005aeb8 mov r1, r4 | r1 = r4;
0x0005aeba mov r0, r6 | r0 = r6;
0x0005aebc bl 0x159dc | fcn_000159dc (r0, r1);
| }
| label_18:
0x0005aec0 ldr r4, [r5, 0xc] | r4 = *((r5 + 0xc));
0x0005aec2 mov r1, r5 | r1 = r5;
0x0005aec4 mov r0, r6 | r0 = r6;
0x0005aec6 bl 0x159dc | fcn_000159dc (r0, r1);
0x0005aeca mov r5, r4 | r5 = r4;
0x0005aecc cmp r4, 0 |
0x0005aece bne 0x5aea6 |
| } while (r4 != 0);
0x0005aed0 ldr r7, [r7] | r7 = *(r7);
0x0005aed2 cmp r7, 0 |
| if (r7 != 0) {
0x0005aed4 bne 0x5aea4 | goto label_1;
| }
0x0005aed6 ldrd r4, r0, [r6, 0x18c] | __asm ("ldrd r4, r0, aav.0x000000ff");
0x0005aeda str.w r7, [r6, 0x18c] | __asm ("str.w r7, aav.0x000000ff");
0x0005aede blx 0x84f8 | fcn_000084f8 ();
0x0005aee2 str.w r7, [r6, 0x190] | __asm ("str.w r7, aav.0x000000ff");
0x0005aee6 str.w r7, [r6, 0x184] | __asm ("str.w r7, aav.0x000000ff");
| if (r4 == 0) {
0x0005aeea cbz r4, 0x5aef8 | goto label_8;
| }
| do {
0x0005aeec mov r0, r4 | r0 = r4;
0x0005aeee ldr r4, [r4] | r4 = *(r4);
0x0005aef0 blx 0x84f8 | fcn_000084f8 ();
0x0005aef4 cmp r4, 0 |
0x0005aef6 bne 0x5aeec |
| } while (r4 != 0);
| label_8:
0x0005aef8 ldr.w r5, [r6, 0x19c] | r5 = *((r6 + 0x19c));
0x0005aefc movs r3, 0 | r3 = 0;
0x0005aefe str.w r3, [r6, 0x188] | __asm ("str.w r3, aav.0x000000ff");
0x0005af02 cmp r5, 0 |
| if (r5 == 0) {
0x0005af04 beq.w 0x5b08c | goto label_19;
| }
| label_2:
0x0005af08 ldr r7, [r5, 8] | r7 = *((r5 + 8));
0x0005af0a mov r4, r7 | r4 = r7;
0x0005af0c add.w r8, r7, 0x3c | r8 = r7 + 0x3c;
| do {
0x0005af10 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
| if (r3 != 0) {
0x0005af12 cbz r3, 0x5af18 |
0x0005af14 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0005af16 blx r3 | uint32_t (*r3)(uint32_t) (r0);
| }
0x0005af18 adds r4, 0x14 | r4 += 0x14;
0x0005af1a cmp r4, r8 |
0x0005af1c bne 0x5af10 |
| } while (r4 != r8);
| if (r7 != 0) {
0x0005af1e cbz r7, 0x5af28 |
0x0005af20 mov r1, r7 | r1 = r7;
0x0005af22 mov r0, r6 | r0 = r6;
0x0005af24 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0005af28 ldr r5, [r5] | r5 = *(r5);
0x0005af2a cmp r5, 0 |
| if (r5 != 0) {
0x0005af2c bne 0x5af08 | goto label_2;
| }
0x0005af2e ldrd r4, r0, [r6, 0x19c] | __asm ("ldrd r4, r0, aav.0x000000ff");
0x0005af32 str.w r5, [r6, 0x19c] | __asm ("str.w r5, aav.0x000000ff");
0x0005af36 blx 0x84f8 | fcn_000084f8 ();
0x0005af3a str.w r5, [r6, 0x1a0] | __asm ("str.w r5, aav.0x000000ff");
0x0005af3e str.w r5, [r6, 0x194] | __asm ("str.w r5, aav.0x000000ff");
| if (r4 == 0) {
0x0005af42 cbz r4, 0x5af50 | goto label_7;
| }
| do {
0x0005af44 mov r0, r4 | r0 = r4;
0x0005af46 ldr r4, [r4] | r4 = *(r4);
0x0005af48 blx 0x84f8 | fcn_000084f8 ();
0x0005af4c cmp r4, 0 |
0x0005af4e bne 0x5af44 |
| } while (r4 != 0);
| label_7:
0x0005af50 ldr.w r5, [r6, 0x170] | r5 = *((r6 + 0x170));
0x0005af54 movs r7, 0 | r7 = 0;
0x0005af56 str.w r7, [r6, 0x198] | __asm ("str.w r7, aav.0x000000ff");
| if (r5 != 0) {
0x0005af5a cbnz r5, 0x5af80 | goto label_20;
| }
0x0005af5c b 0x5b07a | goto label_21;
| label_3:
0x0005af5e bl 0x19014 | fcn_00019014 (r0, r1);
| label_4:
0x0005af62 str r7, [r4, 0x14] | *((r4 + 0x14)) = r7;
| do {
0x0005af64 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0005af66 subs r3, 1 | r3--;
0x0005af68 str r3, [r4, 8] | *((r4 + 8)) = r3;
| if (r3 == 0) {
0x0005af6a cbnz r3, 0x5af7c |
0x0005af6c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
| if (r3 != 0) {
0x0005af6e cbz r3, 0x5af74 |
0x0005af70 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0005af72 blx r3 | uint32_t (*r3)(uint32_t) (r0);
| }
0x0005af74 mov r1, r4 | r1 = r4;
0x0005af76 mov r0, r6 | r0 = r6;
0x0005af78 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0005af7c ldr r5, [r5] | r5 = *(r5);
| if (r5 == 0) {
0x0005af7e cbz r5, 0x5afa8 | goto label_22;
| }
| label_20:
0x0005af80 ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x0005af82 mov r0, r6 | r0 = r6;
0x0005af84 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0005af86 mov r1, r3 | r1 = r3;
0x0005af88 cmp r3, 0 |
0x0005af8a beq 0x5af64 |
| } while (r3 == 0);
0x0005af8c ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
0x0005af8e orr r2, r2, 0x4000 | r2 |= 0x4000;
0x0005af92 str r2, [r3, 0x24] | *((r3 + 0x24)) = r2;
0x0005af94 ldr.w r2, [r6, 0x1f8] | r2 = *((r6 + 0x1f8));
0x0005af98 cmp r2, 0 |
| if (r2 != 0) {
0x0005af9a bne 0x5af5e | goto label_3;
| }
0x0005af9c ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x0005af9e subs r2, 1 | r2--;
0x0005afa0 str r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
0x0005afa2 cmp r2, 0 |
| if (r2 == 0) {
0x0005afa4 beq 0x5af5e | goto label_3;
| }
0x0005afa6 b 0x5af62 | goto label_4;
| label_22:
0x0005afa8 ldrd r4, r0, [r6, 0x170] | __asm ("ldrd r4, r0, aav.0x000000ff");
0x0005afac str.w r5, [r6, 0x170] | __asm ("str.w r5, aav.0x000000ff");
0x0005afb0 blx 0x84f8 | fcn_000084f8 ();
0x0005afb4 str.w r5, [r6, 0x174] | __asm ("str.w r5, aav.0x000000ff");
0x0005afb8 str.w r5, [r6, 0x168] | __asm ("str.w r5, aav.0x000000ff");
| if (r4 == 0) {
0x0005afbc cbz r4, 0x5afca | goto label_6;
| }
| do {
0x0005afbe mov r0, r4 | r0 = r4;
0x0005afc0 ldr r4, [r4] | r4 = *(r4);
0x0005afc2 blx 0x84f8 | fcn_000084f8 ();
0x0005afc6 cmp r4, 0 |
0x0005afc8 bne 0x5afbe |
| } while (r4 != 0);
| label_6:
0x0005afca ldr.w r3, [r6, 0x10c] | r3 = *((r6 + 0x10c));
0x0005afce movs r1, 0 | r1 = 0;
0x0005afd0 str.w r1, [r6, 0x16c] | __asm ("str.w r1, aav.0x000000ff");
0x0005afd4 str r1, [r6, 0x40] | *((r6 + 0x40)) = r1;
| if (r3 != 0) {
0x0005afd6 cbz r3, 0x5affc |
0x0005afd8 mov r0, r6 | r0 = r6;
0x0005afda bl 0x1663c | fcn_0001663c (r0, r1);
0x0005afde ldr.w r4, [r6, 0x10c] | r4 = *((r6 + 0x10c));
| if (r4 == 0) {
0x0005afe2 cbz r4, 0x5affc | goto label_23;
| }
0x0005afe4 ldrh r3, [r4, 8] | r3 = *((r4 + 8));
0x0005afe6 and r3, r3, 0x2400 | r3 &= 0x2400;
0x0005afea cmp r3, 0 |
| if (r3 != 0) {
0x0005afec bne 0x5b068 | goto label_24;
| }
0x0005afee ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0005aff0 cmp r3, 0 |
| if (r3 != 0) {
0x0005aff2 bne 0x5b068 | goto label_24;
| }
| label_5:
0x0005aff4 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x0005aff6 mov r1, r4 | r1 = r4;
0x0005aff8 bl 0x159dc | fcn_000159dc (r0, r1);
| }
| label_23:
0x0005affc ldr.w r3, [r6, 0xc4] | r3 = *((r6 + 0xc4));
0x0005b000 cmp r3, 0 |
0x0005b002 it gt |
| if (r3 <= 0) {
0x0005b004 movgt r4, 0 | r4 = 0;
| }
| if (r3 <= 0) {
0x0005b006 ble 0x5b020 | goto label_25;
| }
| do {
0x0005b008 ldr r0, [r6] | r0 = *(r6);
0x0005b00a ldr.w r2, [r6, 0xc8] | r2 = *((r6 + 0xc8));
0x0005b00e ldr r3, [r0, 0x34] | r3 = *((r0 + 0x34));
0x0005b010 ldr.w r1, [r2, r4, lsl 2] | offset_2 = r4 << 2;
| r1 = *((r2 + offset_2));
0x0005b014 adds r4, 1 | r4++;
0x0005b016 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005b018 ldr.w r3, [r6, 0xc4] | r3 = *((r6 + 0xc4));
0x0005b01c cmp r4, r3 |
0x0005b01e blt 0x5b008 |
| } while (r4 < r3);
| label_25:
0x0005b020 ldr.w r1, [r6, 0xc8] | r1 = *((r6 + 0xc8));
| if (r1 != 0) {
0x0005b024 cbz r1, 0x5b02c |
0x0005b026 mov r0, r6 | r0 = r6;
0x0005b028 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0005b02c ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x0005b02e movw r3, 0x7930 |
0x0005b032 movt r3, 0xb535 | r3 = 0xb5357930;
0x0005b036 str r3, [r6, 0x64] | *((r6 + 0x64)) = r3;
0x0005b038 ldr r1, [r2, 0x1c] | r1 = *((r2 + 0x1c));
| if (r1 != 0) {
0x0005b03a cbz r1, 0x5b042 |
0x0005b03c mov r0, r6 | r0 = r6;
0x0005b03e bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0005b042 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0005b044 blx 0x81d4 | fcn_000081d4 ();
0x0005b048 movw r3, 0x2d33 |
0x0005b04c ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0005b04e movt r3, 0x9f3c | r3 = 0x9f3c2d33;
0x0005b052 str r3, [r6, 0x64] | *((r6 + 0x64)) = r3;
0x0005b054 blx 0x7fa4 | pthread_mutex_trylock ();
0x0005b058 ldrb.w r3, [r6, 0x120] | r3 = *((r6 + 0x120));
0x0005b05c cbnz r3, 0x5b070 |
| while (1) {
0x0005b05e mov r0, r6 | r0 = r6;
0x0005b060 pop.w {r4, r5, r6, r7, r8, lr} |
0x0005b064 b.w 0x84f4 | void (*0x84f4)() ();
| label_24:
0x0005b068 mov r0, r4 | r0 = r4;
0x0005b06a bl 0x15dfc | fcn_00015dfc (r0);
0x0005b06e b 0x5aff4 | goto label_5;
0x0005b070 ldr.w r0, [r6, 0x148] | r0 = *((r6 + 0x148));
0x0005b074 blx 0x84f8 | fcn_000084f8 ();
0x0005b078 b 0x5b05e |
| }
| label_21:
0x0005b07a ldr.w r0, [r6, 0x174] | r0 = *((r6 + 0x174));
0x0005b07e blx 0x84f8 | fcn_000084f8 ();
0x0005b082 str.w r5, [r6, 0x174] | __asm ("str.w r5, aav.0x000000ff");
0x0005b086 str.w r5, [r6, 0x168] | __asm ("str.w r5, aav.0x000000ff");
0x0005b08a b 0x5afca | goto label_6;
| label_19:
0x0005b08c ldr.w r0, [r6, 0x1a0] | r0 = *((r6 + 0x1a0));
0x0005b090 blx 0x84f8 | fcn_000084f8 ();
0x0005b094 str.w r5, [r6, 0x1a0] | __asm ("str.w r5, aav.0x000000ff");
0x0005b098 str.w r5, [r6, 0x194] | __asm ("str.w r5, aav.0x000000ff");
0x0005b09c b 0x5af50 | goto label_7;
| label_17:
0x0005b09e ldr.w r0, [r6, 0x190] | r0 = *((r6 + 0x190));
0x0005b0a2 blx 0x84f8 | fcn_000084f8 ();
0x0005b0a6 str.w r7, [r6, 0x190] | __asm ("str.w r7, aav.0x000000ff");
0x0005b0aa str.w r7, [r6, 0x184] | __asm ("str.w r7, aav.0x000000ff");
0x0005b0ae b 0x5aef8 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5b464 */
| #include <stdint.h>
|
; (fcn) fcn.0005b464 () | void fcn_0005b464 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0005b464 push {r3, r4, r5, lr} |
0x0005b466 mov r5, r1 | r5 = r1;
0x0005b468 ldrd r1, r2, [r0] | __asm ("ldrd r1, r2, [r0]");
0x0005b46c mov r4, r0 | r4 = r0;
0x0005b46e ands r3, r2, 0xf | r3 = r2 & 0xf;
0x0005b472 beq 0x5b480 |
| while (1) {
0x0005b474 adds r3, r2, 1 | r3 = r2 + 1;
0x0005b476 movs r0, 0 | r0 = 0;
0x0005b478 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x0005b47a str.w r5, [r1, r2, lsl 2] | __asm ("str.w r5, [r1, r2, lsl 2]");
0x0005b47e pop {r3, r4, r5, pc} |
0x0005b480 adds r2, 0x10 | r2 += 0x10;
0x0005b482 mov r0, r1 | r0 = r1;
0x0005b484 lsls r2, r2, 2 | r2 <<= 2;
0x0005b486 blx 0x8638 | r0 = fcn_00008638 ();
0x0005b48a mov r1, r0 | r1 = r0;
| if (r0 == 0) {
0x0005b48c cbz r0, 0x5b494 | goto label_0;
| }
0x0005b48e ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0005b490 str r0, [r4] | *(r4) = r0;
0x0005b492 b 0x5b474 |
| }
| label_0:
0x0005b494 mov r0, r5 | r0 = r5;
0x0005b496 bl 0x5b434 | fcn_0005b434 (r0);
0x0005b49a movs r0, 7 | r0 = 7;
0x0005b49c pop {r3, r4, r5, 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/libsqlite3.so.0.8.6 @ 0x5b58c */
| #include <stdint.h>
|
; (fcn) fcn.0005b58c () | void fcn_0005b58c (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0005b58c ldr r2, [pc, 0x244] |
0x0005b58e ldr r3, [pc, 0x248] | r3 = *(0x5b7da);
0x0005b590 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005b594 sub sp, 0x24 |
0x0005b596 add r2, pc | r2 = 0xb6d6e;
0x0005b598 ldr.w r8, [r0] | r8 = *(r0);
0x0005b59c mov sb, r0 | sb = r0;
0x0005b59e ldr r3, [r2, r3] |
0x0005b5a0 ldr.w r7, [r8] | r7 = *(r8);
0x0005b5a4 ldr r3, [r3] | r3 = *(0xb6d6e);
0x0005b5a6 str r3, [sp, 0x1c] | var_1ch = r3;
0x0005b5a8 mov.w r3, 0 | r3 = 0;
| if (r1 != 0) {
0x0005b5ac cbz r1, 0x5b5f2 |
0x0005b5ae subs r3, r7, 3 | r3 = r7 - 3;
0x0005b5b0 mov r5, r1 | r5 = r1;
0x0005b5b2 cmp r3, 1 |
| if (r3 < 1) {
0x0005b5b4 bls 0x5b622 | goto label_10;
| }
0x0005b5b6 cmp r7, 2 |
0x0005b5b8 it ne |
| if (r7 == 2) {
0x0005b5ba movne fp, 0 |
| }
| if (r7 != 2) {
0x0005b5be bne 0x5b600 | goto label_5;
| }
0x0005b5c0 ldrd r2, r4, [r8, 0xc] | __asm ("ldrd r2, r4, [r8, 0xc]");
0x0005b5c4 movs r3, 0 | r3 = 0;
0x0005b5c6 subs r5, r1, 1 | r5 = r1 - 1;
0x0005b5c8 strd r3, r3, [r8, 0xc] | __asm ("strd r3, r3, [r8, 0xc]");
0x0005b5cc mov r1, r5 | r1 = r5;
0x0005b5ce add r0, sp, 0x14 | r0 += var_14h;
0x0005b5d0 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0005b5d2 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0005b5d4 strd r2, r4, [sp, 0x14] | __asm ("strd r2, r4, [var_18h]");
0x0005b5d8 bl 0x5b58c | r0 = fcn_0005b58c (r0, r1);
0x0005b5dc mov fp, r0 |
0x0005b5de cmp r0, 0 |
| if (r0 == 0) {
0x0005b5e0 beq.w 0x5b734 | goto label_11;
| }
| label_4:
0x0005b5e4 mov r0, r4 | r0 = r4;
0x0005b5e6 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x0005b5ea ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005b5ec bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x0005b5f0 b 0x5b5f6 |
| } else {
0x0005b5f2 mov.w fp, 1 |
| }
| label_3:
0x0005b5f6 mov r0, r8 | r0 = r8;
0x0005b5f8 mov.w r8, 0 | r8 = 0;
0x0005b5fc bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
| label_5:
0x0005b600 ldr r2, [pc, 0x1d8] |
0x0005b602 ldr r3, [pc, 0x1d4] | r3 = *(0x5b7da);
0x0005b604 str.w r8, [sb] | __asm ("str.w r8, [sb]");
0x0005b608 add r2, pc | r2 = 0xb6de8;
0x0005b60a ldr r3, [r2, r3] | r3 = *(0xb6de8);
0x0005b60c ldr r2, [r3] | r2 = *(0xb6de8);
0x0005b60e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005b610 eors r2, r3 | r2 ^= r3;
0x0005b612 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005b616 bne.w 0x5b7d0 | goto label_12;
| }
0x0005b61a mov r0, fp | r0 = fp;
0x0005b61c add sp, 0x24 |
0x0005b61e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x0005b622 lsls r3, r1, 2 | r3 = r1 << 2;
0x0005b624 movs r1, 0 | r1 = 0;
0x0005b626 mov r0, r3 | r0 = r3;
0x0005b628 mov r4, r3 | r4 = r3;
0x0005b62a str r3, [sp, 0xc] | var_ch = r3;
0x0005b62c blx 0x7f18 | fcn_00007f18 ();
0x0005b630 str r0, [sp, 4] | var_4h = r0;
0x0005b632 cmp r0, 0 |
| if (r0 == 0) {
0x0005b634 beq.w 0x5b75c | goto label_13;
| }
0x0005b638 movs r1, 0 | r1 = 0;
0x0005b63a mov r2, r4 | r2 = r4;
0x0005b63c blx 0x8264 | fcn_00008264 ();
0x0005b640 ldr.w r3, [r8] | r3 = *(r8);
0x0005b644 mov r1, r8 | r1 = r8;
0x0005b646 str.w r8, [sp, 0x18] | __asm ("str.w r8, [var_18h]");
0x0005b64a cmp r3, r7 |
| if (r3 != r7) {
0x0005b64c bne 0x5b658 | goto label_14;
| }
| do {
0x0005b64e ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x0005b650 ldr r3, [r1] | r3 = *(r1);
0x0005b652 cmp r3, r7 |
0x0005b654 beq 0x5b64e |
| } while (r3 == r7);
0x0005b656 str r1, [sp, 0x18] | var_18h = r1;
| label_14:
0x0005b658 mov fp, r7 |
0x0005b65a ldr r7, [r1, 8] | r7 = *((r1 + 8));
0x0005b65c movs r4, 0 | r4 = 0;
0x0005b65e subs r3, r5, 1 | r3 = r5 - 1;
0x0005b660 add r2, sp, 0x18 | r2 += var_18h;
0x0005b662 mov r6, r4 | r6 = r4;
0x0005b664 str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x0005b668 mov sl, r2 | sl = r2;
0x0005b66a mov sb, r3 | sb = r3;
0x0005b66c str r6, [r1, 8] | *((r1 + 8)) = r6;
0x0005b66e cmp r7, 0 |
| if (r7 == 0) {
0x0005b670 beq 0x5b6ea | goto label_15;
| }
| label_0:
0x0005b672 str r6, [r7, 0xc] | *((r7 + 0xc)) = r6;
| label_1:
0x0005b674 mov r1, sb | r1 = sb;
0x0005b676 mov r0, sl | r0 = sl;
0x0005b678 bl 0x5b58c | r0 = fcn_0005b58c (r0, r1);
0x0005b67c cmp r0, 0 |
| if (r0 != 0) {
0x0005b67e bne 0x5b762 | goto label_16;
| }
0x0005b680 ldr r1, [sp, 0x18] | r1 = var_18h;
| if (r1 == 0) {
0x0005b682 cbz r1, 0x5b6ba | goto label_17;
| }
0x0005b684 cmp r5, 0 |
| if (r5 <= 0) {
0x0005b686 ble.w 0x5b7c0 | goto label_18;
| }
0x0005b68a ldr r3, [sp, 4] | r3 = var_4h;
0x0005b68c mov ip, r0 |
0x0005b68e b 0x5b6ac |
| while (r2 != 0) {
0x0005b690 add.w ip, ip, 1 |
0x0005b694 strd r2, r1, [r4, 0xc] | __asm ("strd r2, r1, [r4, 0xc]");
0x0005b698 cmp r5, ip |
0x0005b69a str r4, [r2, 8] | *((r2 + 8)) = r4;
0x0005b69c str r4, [r1, 8] | *((r1 + 8)) = r4;
0x0005b69e mov r1, r4 | r1 = r4;
0x0005b6a0 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0005b6a2 str r6, [r4, 8] | *((r4 + 8)) = r6;
0x0005b6a4 str r6, [r3, -0x4] | *((r3 - 0x4)) = r6;
| if (r5 == ip) {
0x0005b6a8 beq 0x5b6ee | goto label_19;
| }
0x0005b6aa mov r4, r2 | r4 = r2;
0x0005b6ac mov lr, r3 | lr = r3;
0x0005b6ae ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x0005b6b2 cmp r2, 0 |
0x0005b6b4 bne 0x5b690 |
| }
0x0005b6b6 str.w r1, [lr] | __asm ("str.w r1, [lr]");
| label_17:
0x0005b6ba cmp r7, 0 |
| if (r7 == 0) {
0x0005b6bc beq 0x5b76a | goto label_20;
| }
0x0005b6be ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x0005b6c0 ldr r3, [r2] | r3 = *(r2);
0x0005b6c2 mov r1, r2 | r1 = r2;
0x0005b6c4 str r2, [sp, 0x18] | var_18h = r2;
0x0005b6c6 cmp fp, r3 |
| if (fp != r3) {
0x0005b6c8 bne 0x5b6d4 | goto label_21;
| }
| do {
0x0005b6ca ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x0005b6cc ldr r3, [r1] | r3 = *(r1);
0x0005b6ce cmp r3, fp |
0x0005b6d0 beq 0x5b6ca |
| } while (r3 == fp);
0x0005b6d2 str r1, [sp, 0x18] | var_18h = r1;
| label_21:
0x0005b6d4 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0005b6d6 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0005b6d8 ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r3 == 0) {
0x0005b6da cbz r3, 0x5b728 | goto label_22;
| }
0x0005b6dc str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
| label_2:
0x0005b6de str r4, [r7, 8] | *((r7 + 8)) = r4;
0x0005b6e0 mov r4, r7 | r4 = r7;
0x0005b6e2 ldr r7, [r1, 8] | r7 = *((r1 + 8));
0x0005b6e4 str r6, [r1, 8] | *((r1 + 8)) = r6;
0x0005b6e6 cmp r7, 0 |
| if (r7 != 0) {
0x0005b6e8 bne 0x5b672 | goto label_0;
| }
| label_15:
0x0005b6ea mov r8, r7 | r8 = r7;
0x0005b6ec b 0x5b674 | goto label_1;
| label_19:
0x0005b6ee ldr.w sb, [sp, 8] | sb = var_8h;
0x0005b6f2 str r4, [sp, 0x18] | var_18h = r4;
| label_9:
0x0005b6f4 mov r0, r4 | r0 = r4;
0x0005b6f6 str r2, [sp, 8] | var_8h = r2;
0x0005b6f8 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x0005b6fc ldr r2, [sp, 8] | r2 = var_8h;
0x0005b6fe mov.w fp, 0x12 |
0x0005b702 mov r4, r2 | r4 = r2;
| label_6:
0x0005b704 cmp r5, 0 |
| if (r5 <= 0) {
0x0005b706 ble 0x5b71c | goto label_23;
| }
0x0005b708 ldr r3, [sp, 4] | r3 = var_4h;
0x0005b70a movs r6, 0 | r6 = 0;
0x0005b70c subs r7, r3, 4 | r7 = r3 - 4;
| do {
0x0005b70e ldr r0, [r7, 4]! | r0 = *((r7 += 4));
0x0005b712 adds r6, 1 | r6++;
0x0005b714 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x0005b718 cmp r5, r6 |
0x0005b71a bne 0x5b70e |
| } while (r5 != r6);
| do {
| if (r4 == 0) {
| label_23:
0x0005b71c cbz r4, 0x5b72c | goto label_24;
| }
0x0005b71e mov r0, r4 | r0 = r4;
0x0005b720 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x0005b722 blx 0x84f8 | fcn_000084f8 ();
0x0005b726 b 0x5b71c |
| } while (1);
| label_22:
0x0005b728 mov r8, r2 | r8 = r2;
0x0005b72a b 0x5b6de | goto label_2;
| label_24:
0x0005b72c ldr r0, [sp, 4] | r0 = var_4h;
0x0005b72e blx 0x84f8 | fcn_000084f8 ();
0x0005b732 b 0x5b5f6 | goto label_3;
| label_11:
0x0005b734 mov r1, r5 | r1 = r5;
0x0005b736 add r0, sp, 0x18 | r0 += var_18h;
0x0005b738 bl 0x5b58c | fcn_0005b58c (r0, r1);
0x0005b73c ldr r2, [sp, 0x14] | r2 = var_14h;
0x0005b73e mov fp, r0 |
0x0005b740 ldr r4, [sp, 0x18] | r4 = var_18h;
0x0005b742 cmp r0, 0 |
| if (r0 != 0) {
0x0005b744 bne.w 0x5b5e4 | goto label_4;
| }
0x0005b748 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005b74a str.w r2, [r8, 0xc] | __asm ("str.w r2, [r8, 0xc]");
0x0005b74e str.w r8, [r2, 8] | __asm ("str.w r8, [r2, 8]");
0x0005b752 str.w r3, [r8, 0x10] | __asm ("str.w r3, [r8, 0x10]");
0x0005b756 str.w r8, [r3, 8] | __asm ("str.w r8, [r3, 8]");
0x0005b75a b 0x5b600 | goto label_5;
| label_13:
0x0005b75c mov.w fp, 7 |
0x0005b760 b 0x5b5f6 | goto label_3;
| label_16:
0x0005b762 ldr.w sb, [sp, 8] | sb = var_8h;
0x0005b766 mov fp, r0 |
0x0005b768 b 0x5b704 | goto label_6;
| label_20:
0x0005b76a cmp r5, 0 |
0x0005b76c ldr.w sb, [sp, 8] | sb = var_8h;
0x0005b770 mov sl, r7 | sl = r7;
0x0005b772 mov fp, r0 |
0x0005b774 str r7, [sp, 0x18] | var_18h = r7;
| if (r5 <= 0) {
0x0005b776 ble 0x5b7ca | goto label_25;
| }
0x0005b778 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0005b77a mov r5, sl | r5 = sl;
0x0005b77c ldr r3, [sp, 4] | r3 = var_4h;
0x0005b77e mov r6, sl | r6 = sl;
0x0005b780 mov r2, sl | r2 = sl;
0x0005b782 add r0, r3 | r0 += r3;
0x0005b784 b 0x5b7a0 | goto label_26;
| label_7:
0x0005b786 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0005b788 movs r5, 1 | r5 = 1;
0x0005b78a ldr r1, [r3, -0x4] | r1 = *((r3 - 0x4));
0x0005b78e str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
0x0005b790 str r4, [r1, 8] | *((r1 + 8)) = r4;
0x0005b792 str r4, [r2, 8] | *((r2 + 8)) = r4;
0x0005b794 mov r2, r4 | r2 = r4;
0x0005b796 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0005b798 str r6, [r4, 8] | *((r4 + 8)) = r6;
0x0005b79a mov r4, r1 | r4 = r1;
| do {
| label_8:
0x0005b79c cmp r0, r3 |
| if (r0 == r3) {
0x0005b79e beq 0x5b7b4 | goto label_27;
| }
| label_26:
0x0005b7a0 ldr r1, [r3], 4 | r1 = *(r3);
| r3 += 4;
0x0005b7a4 cmp r1, 0 |
0x0005b7a6 beq 0x5b79c |
| } while (r1 == 0);
0x0005b7a8 cmp r2, 0 |
| if (r2 != 0) {
0x0005b7aa bne 0x5b786 | goto label_7;
| }
0x0005b7ac str r2, [r1, 8] | *((r1 + 8)) = r2;
0x0005b7ae movs r5, 1 | r5 = 1;
0x0005b7b0 mov r2, r1 | r2 = r1;
0x0005b7b2 b 0x5b79c | goto label_8;
| label_27:
0x0005b7b4 mov r8, r2 | r8 = r2;
0x0005b7b6 cbz r5, 0x5b7ca |
| while (1) {
0x0005b7b8 ldr r0, [sp, 4] | r0 = var_4h;
0x0005b7ba blx 0x84f8 | fcn_000084f8 ();
0x0005b7be b 0x5b600 | goto label_5;
| label_18:
0x0005b7c0 mov r2, r4 | r2 = r4;
0x0005b7c2 ldr.w sb, [sp, 8] | sb = var_8h;
0x0005b7c6 mov r4, r1 | r4 = r1;
0x0005b7c8 b 0x5b6f4 | goto label_9;
| label_25:
0x0005b7ca mov.w r8, 0 | r8 = 0;
0x0005b7ce b 0x5b7b8 |
| }
| label_12:
0x0005b7d0 blx 0x7e8c | fcn_00007e8c ();
0x0005b7d4 movs r6, 0xfa | r6 = 0xfa;
0x0005b7d6 movs r7, r0 | r7 = r0;
0x0005b7d8 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0005b7da movs r0, r0 |
0x0005b7dc movs r6, 0x88 | r6 = 0x88;
0x0005b7de movs r7, r0 | r7 = r0;
0x0005b7e0 ldr r3, [r0] | r3 = *(r0);
0x0005b7e2 push {r4, r5, r6, lr} |
0x0005b7e4 mov r5, r0 | r5 = r0;
0x0005b7e6 movs r4, 0 | r4 = 0;
0x0005b7e8 ldr r6, [r3, 0xc] | r6 = *((r3 + 0xc));
0x0005b7ea ldr.w r0, [r6, 0xfc] | r0 = *((r6 + 0xfc));
0x0005b7ee blx 0x8300 | fcn_00008300 ();
0x0005b7f2 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0005b7f4 str.w r4, [r6, 0xfc] | __asm ("str.w r4, [r6, 0xfc]");
0x0005b7f8 cmp r3, r4 |
| if (r3 <= r4) {
0x0005b7fa ble 0x5b80e | goto label_28;
| }
| do {
0x0005b7fc ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0005b7fe ldr.w r0, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| r0 = *((r3 + offset_0));
0x0005b802 adds r4, 1 | r4++;
0x0005b804 bl 0x5b434 | fcn_0005b434 (r0);
0x0005b808 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0005b80a cmp r4, r3 |
0x0005b80c blt 0x5b7fc |
| } while (r4 < r3);
| label_28:
0x0005b80e ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0005b810 movs r4, 0 | r4 = 0;
0x0005b812 blx 0x84f8 | fcn_000084f8 ();
0x0005b816 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x0005b818 blx 0x84f8 | fcn_000084f8 ();
0x0005b81c ldr r0, [r5, 0x3c] | r0 = *((r5 + 0x3c));
0x0005b81e strd r4, r4, [r5, 4] | __asm ("strd r4, r4, [r5, 4]");
0x0005b822 str r4, [r5, 0x14] | *((r5 + 0x14)) = r4;
0x0005b824 blx 0x84f8 | fcn_000084f8 ();
0x0005b828 ldr r0, [r5, 0x4c] | r0 = *((r5 + 0x4c));
0x0005b82a blx 0x84f8 | fcn_000084f8 ();
0x0005b82e ldr r0, [r5, 0x70] | r0 = *((r5 + 0x70));
0x0005b830 blx 0x84f8 | fcn_000084f8 ();
0x0005b834 mov r0, r5 | r0 = r5;
0x0005b836 blx 0x84f8 | fcn_000084f8 ();
0x0005b83a mov r0, r4 | r0 = r4;
0x0005b83c pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5b95c */
| #include <stdint.h>
|
; (fcn) fcn.0005b95c () | void fcn_0005b95c (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_58h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h_2;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0005b95c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0005b960 mov r8, r2 | r8 = r2;
0x0005b962 ldr r2, [pc, 0x188] |
0x0005b964 mov fp, r3 |
0x0005b966 sub sp, 0x34 |
0x0005b968 mov sb, r0 | sb = r0;
0x0005b96a ldr r3, [pc, 0x184] | r3 = *(0x5baf2);
0x0005b96c mov r6, r1 | r6 = r1;
0x0005b96e add r2, pc | r2 = 0xb7460;
0x0005b970 ldr r4, [r1, 0x50] | r4 = *((r1 + 0x50));
0x0005b972 ldr r3, [r2, r3] |
0x0005b974 ldr r3, [r3] | r3 = *(0xb7460);
0x0005b976 str r3, [sp, 0x2c] | var_2ch = r3;
0x0005b978 mov.w r3, 0 | r3 = 0;
0x0005b97c ldrb.w r3, [r0, 0xef] | r3 = *((r0 + 0xef));
0x0005b980 str r4, [sp, 0x1c] | var_1ch = r4;
| if (r3 != 0) {
0x0005b982 cbz r3, 0x5b9ce |
0x0005b984 ldr r3, [r1, 0x38] | r3 = *((r1 + 0x38));
| if (r3 == 0) {
0x0005b986 cbz r3, 0x5b9ce | goto label_5;
| }
0x0005b988 movs r3, 0 | r3 = 0;
0x0005b98a strb.w r3, [sp, 0x20] | var_20h = r3;
0x0005b98e cmp.w r8, 0 |
| if (r8 != 0) {
0x0005b992 beq 0x5b9a0 |
0x0005b994 ldr r3, [r1, 0x54] | r3 = *((r1 + 0x54));
0x0005b996 str.w r4, [r8] | __asm ("str.w r4, [r8]");
0x0005b99a subs r3, 1 | r3--;
0x0005b99c str.w r3, [fp] | __asm ("str.w r3, [fp]");
| }
0x0005b9a0 add.w r1, r6, 0x54 | r1 = r6 + 0x54;
0x0005b9a4 add.w r0, r6, 0x58 | r0 = r6 + 0x58;
0x0005b9a8 add r4, sp, 0x20 | r4 += var_20h;
0x0005b9aa ldr r2, [r6, 0x4c] | r2 = *((r6 + 0x4c));
0x0005b9ac add r3, sp, 0x1c | r3 += var_1ch;
0x0005b9ae strd r1, r4, [sp, 4] | __asm ("strd r1, r4, [var_4h]");
0x0005b9b2 ldr r1, [r6, 0x48] | r1 = *((r6 + 0x48));
0x0005b9b4 str r0, [sp] | *(sp) = r0;
0x0005b9b6 movs r0, 0 | r0 = 0;
0x0005b9b8 bl 0x14fd4 | fcn_00014fd4 (r0, r1, r2, r3, r4, r5, r6);
0x0005b9bc ldrb.w r3, [sp, 0x20] | r3 = var_20h;
0x0005b9c0 cmp r3, 0 |
| if (r3 == 0) {
0x0005b9c2 beq.w 0x5bad8 | goto label_6;
| }
| label_1:
0x0005b9c6 movs r2, 0 | r2 = 0;
| label_4:
0x0005b9c8 movs r3, 0 | r3 = 0;
0x0005b9ca str r2, [r6, 0x50] | *((r6 + 0x50)) = r2;
0x0005b9cc b 0x5ba06 | goto label_3;
| }
| label_5:
0x0005b9ce ldr r3, [r6, 0x48] | r3 = *((r6 + 0x48));
0x0005b9d0 movs r5, 0 | r5 = 0;
0x0005b9d2 ldr r0, [r6, 0x34] | r0 = *((r6 + 0x34));
0x0005b9d4 str r3, [sp, 0x10] | var_10h = r3;
0x0005b9d6 ldr r3, [r6, 0x4c] | r3 = *((r6 + 0x4c));
0x0005b9d8 str r3, [sp, 0x14] | var_14h = r3;
| do {
| label_0:
0x0005b9da ldrb r3, [r4] | r3 = *(r4);
0x0005b9dc orrs r5, r3 | r5 |= r3;
| if (r5 != r3) {
0x0005b9de bne 0x5ba4e | goto label_7;
| }
0x0005b9e0 cmp r0, 0 |
| if (r0 == 0) {
0x0005b9e2 beq 0x5ba58 | goto label_8;
| }
0x0005b9e4 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x0005b9e6 ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x0005b9e8 add r1, r3 | r1 += r3;
0x0005b9ea cmp r1, r4 |
| if (r1 > r4) {
0x0005b9ec bhi 0x5ba58 | goto label_8;
| }
0x0005b9ee ldr r7, [r6, 0x2c] | r7 = *((r6 + 0x2c));
0x0005b9f0 subs r7, r7, r3 | r7 -= r3;
0x0005b9f2 cmp.w r7, 0x1000 |
0x0005b9f6 it ge |
| if (r7 < 0x1000) {
0x0005b9f8 movge r7, 0x1000 | r7 = 0x1000;
| }
0x0005b9fc mov r2, r7 | r2 = r7;
0x0005b9fe blx 0x8294 | r0 = fcn_00008294 ();
0x0005ba02 mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x0005ba04 cbz r0, 0x5ba22 |
| label_3:
0x0005ba06 ldr r1, [pc, 0xec] |
0x0005ba08 ldr r2, [pc, 0xe4] | r2 = *(0x5baf0);
0x0005ba0a add r1, pc | r1 = 0xb7504;
0x0005ba0c ldr r2, [r1, r2] | r2 = *(0xb7504);
0x0005ba0e ldr r1, [r2] | r1 = *(0xb7504);
0x0005ba10 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0005ba12 eors r1, r2 | r1 ^= r2;
0x0005ba14 mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x0005ba18 bne 0x5bae8 | goto label_9;
| }
0x0005ba1a mov r0, r3 | r0 = r3;
0x0005ba1c add sp, 0x34 |
0x0005ba1e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0005ba22 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x0005ba24 add r7, r3 | r7 += r3;
0x0005ba26 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0005ba28 str r7, [r6, 0x30] | *((r6 + 0x30)) = r7;
0x0005ba2a str r5, [r3, r7] | *((r3 + r7)) = r5;
0x0005ba2c add r3, r7 | r3 += r7;
0x0005ba2e str r5, [r3, 4] | *((r3 + 4)) = r5;
0x0005ba30 str r5, [r3, 8] | *((r3 + 8)) = r5;
0x0005ba32 str r5, [r3, 0xc] | *((r3 + 0xc)) = r5;
0x0005ba34 str r5, [r3, 0x10] | *((r3 + 0x10)) = r5;
0x0005ba36 ldrd r3, r2, [r6, 0x2c] | __asm ("ldrd r3, r2, [r6, 0x2c]");
0x0005ba3a ldr r0, [r6, 0x34] | r0 = *((r6 + 0x34));
0x0005ba3c cmp r2, r3 |
0x0005ba3e bne 0x5b9da |
| } while (r2 != r3);
0x0005ba40 blx 0x8300 | fcn_00008300 ();
0x0005ba44 strd r5, r5, [r6, 0x30] | __asm ("strd r5, r5, [r6, 0x30]");
0x0005ba48 ldrb r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x0005ba4a cbz r3, 0x5ba58 |
0x0005ba4c mov r0, r5 | r0 = r5;
| label_7:
0x0005ba4e adds r4, 1 | r4++;
0x0005ba50 and r5, r3, 0x80 | r5 = r3 & 0x80;
0x0005ba54 str r4, [sp, 0x1c] | var_1ch = r4;
0x0005ba56 b 0x5b9da | goto label_0;
| }
| label_8:
0x0005ba58 adds r4, 1 | r4++;
0x0005ba5a str r4, [sp, 0x1c] | var_1ch = r4;
0x0005ba5c cmp.w r8, 0 |
| if (r8 != 0) {
0x0005ba60 beq 0x5ba72 |
0x0005ba62 ldr r3, [r6, 0x50] | r3 = *((r6 + 0x50));
0x0005ba64 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0005ba68 ldr r3, [r6, 0x50] | r3 = *((r6 + 0x50));
0x0005ba6a subs r3, r4, r3 | r3 = r4 - r3;
0x0005ba6c subs r3, 1 | r3--;
0x0005ba6e str.w r3, [fp] | __asm ("str.w r3, [fp]");
| }
0x0005ba72 ldrd r7, r3, [sp, 0x10] | __asm ("ldrd r7, r3, [var_10h]");
0x0005ba76 add r7, r3 | r7 += r3;
0x0005ba78 cmp r4, r7 |
| if (r4 >= r7) {
0x0005ba7a bhs 0x5b9c6 | goto label_1;
| }
0x0005ba7c movs r2, 0 | r2 = 0;
0x0005ba7e b 0x5ba8a | goto label_10;
| label_2:
0x0005ba80 cmp r4, r7 |
0x0005ba82 mov sl, r4 | sl = r4;
0x0005ba84 mov.w r2, 1 | r2 = 1;
| if (r4 == r7) {
0x0005ba88 beq 0x5b9c6 | goto label_1;
| }
| label_10:
0x0005ba8a mov r5, r4 | r5 = r4;
0x0005ba8c ldrb r3, [r4], 1 | r3 = *(r4);
| r4++;
0x0005ba90 cmp r3, 0 |
| if (r3 == 0) {
0x0005ba92 beq 0x5ba80 | goto label_2;
| }
| if (r2 != 0) {
0x0005ba94 cbz r2, 0x5ba9a |
0x0005ba96 str.w sl, [sp, 0x1c] | __asm ("str.w sl, [var_1ch]");
| }
0x0005ba9a cmp r7, r5 |
| if (r7 < r5) {
0x0005ba9c bls 0x5b9c6 | goto label_1;
| }
0x0005ba9e movs r2, 0xa | r2 = 0xa;
0x0005baa0 mov r1, r5 | r1 = r5;
0x0005baa2 mov r0, r6 | r0 = r6;
0x0005baa4 bl 0x5b840 | r0 = fcn_0005b840 (r0, r1, r2);
0x0005baa8 mov r3, r0 | r3 = r0;
0x0005baaa cmp r0, 0 |
| if (r0 != 0) {
0x0005baac bne 0x5ba06 | goto label_3;
| }
0x0005baae add r1, sp, 0x20 | r1 += var_20h;
0x0005bab0 str r0, [sp, 0x10] | var_10h = r0;
0x0005bab2 mov r0, r5 | r0 = r5;
0x0005bab4 bl 0xa5b4 | r0 = fcn_0000a5b4 (r0, r1);
0x0005bab8 add r5, r0 | r5 += r0;
0x0005baba ldr r2, [r6, 0x58] | r2 = *((r6 + 0x58));
0x0005babc str r5, [r6, 0x50] | *((r6 + 0x50)) = r5;
0x0005babe ldrb.w r0, [sb, 0xef] | r0 = *((sb + 0xef));
0x0005bac2 ldr r1, [r6, 0x5c] | r1 = *((r6 + 0x5c));
0x0005bac4 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r0 == 0) {
0x0005bac6 cbz r0, 0x5badc | goto label_11;
| }
0x0005bac8 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0005baca subs r2, r2, r0 | r2 -= r0;
0x0005bacc ldr r0, [sp, 0x24] | r0 = var_24h_2;
0x0005bace sbc.w r1, r1, r0 | __asm ("sbc.w r1, r1, r0");
| do {
0x0005bad2 strd r2, r1, [r6, 0x58] | __asm ("strd r2, r1, [r6, 0x58]");
0x0005bad6 b 0x5ba06 | goto label_3;
| label_6:
0x0005bad8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0005bada b 0x5b9c8 | goto label_4;
| label_11:
0x0005badc ldr r0, [sp, 0x20] | r0 = var_20h;
0x0005bade adds r2, r2, r0 | r2 += r0;
0x0005bae0 ldr r0, [sp, 0x24] | r0 = var_24h_2;
0x0005bae2 adc.w r1, r1, r0 | __asm ("adc.w r1, r1, r0");
0x0005bae6 b 0x5bad2 |
| } while (1);
| label_9:
0x0005bae8 blx 0x7e8c | fcn_00007e8c ();
0x0005baec movs r3, 0x22 | r3 = 0x22;
0x0005baee movs r7, r0 | r7 = r0;
0x0005baf0 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0005baf2 movs r0, r0 |
0x0005baf4 movs r2, 0x86 | r2 = 0x86;
0x0005baf6 movs r7, r0 | r7 = 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/libsqlite3.so.0.8.6 @ 0x5bd04 */
| #include <stdint.h>
|
; (fcn) fcn.0005bd04 () | void fcn_0005bd04 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_3bh;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_60h;
| int32_t var_4h_2;
| int16_t var_0h_2;
| int16_t var_ach;
| int16_t var_b0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0005bd04 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0005bd08 mov sb, r1 | sb = r1;
0x0005bd0a movs r1, 1 | r1 = 1;
0x0005bd0c ldrb.w r8, [r0, 0x34] | r8 = *((r0 + 0x34));
0x0005bd10 mov r4, r2 | r4 = r2;
0x0005bd12 sub sp, 0xb4 |
0x0005bd14 strb.w r1, [sb, 0x21] | *((sb + 0x21)) = r1;
0x0005bd18 mov r5, r0 | r5 = r0;
0x0005bd1a ldr.w r1, [pc, 0x730] | r1 = *(0x0005c44c);
0x0005bd1e ldr.w r2, [pc, 0x730] |
0x0005bd22 ldr.w r3, [sb] | r3 = *(sb);
0x0005bd26 add r1, pc | r1 += pc;
0x0005bd28 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x0005bd2a subs r3, 1 | r3--;
0x0005bd2c ldr r2, [r2] | r2 = *(0x5c452);
0x0005bd2e str r2, [sp, 0xac] | var_ach = r2;
0x0005bd30 mov.w r2, 0 | r2 = 0;
0x0005bd34 cmp r3, 3 |
| if (r3 > 3) {
0x0005bd36 bhi.w 0x5c0b2 | goto label_33;
| }
| /* switch table (4 cases) at 0x5bd3e */
0x0005bd3a tbb [pc, r3] | __asm ("tbb aav.0x000000ff");
0x0005bd42 ldrd r6, r7, [sb, 0xc] | __asm ("ldrd r6, r7, [sb, 0xc]");
0x0005bd46 ldrb.w r3, [r6, 0x22] | r3 = *((r6 + 0x22));
0x0005bd4a cmp r3, 0 |
| if (r3 != 0) {
0x0005bd4c bne.w 0x5bf06 | goto label_34;
| }
0x0005bd50 ldrb.w r3, [r7, 0x22] | r3 = *((r7 + 0x22));
0x0005bd54 cmp r3, 0 |
| if (r3 == 0) {
0x0005bd56 beq.w 0x5bf3c | goto label_35;
| }
0x0005bd5a ldr r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x0005bd5c cbnz r3, 0x5bd66 |
0x0005bd5e mov r2, r4 | r2 = r4;
0x0005bd60 mov r1, r6 | r1 = r6;
0x0005bd62 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
| }
0x0005bd66 ldrd r2, r3, [r6, 0x18] | __asm ("ldrd r2, r3, [r6, 0x18]");
0x0005bd6a strd r2, r3, [sb, 0x18] | __asm ("strd r2, r3, [sb, 0x18]");
0x0005bd6e ldrb.w r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0005bd72 strb.w r3, [sb, 0x20] | *((sb + 0x20)) = r3;
0x0005bd76 b 0x5beb2 | goto label_2;
0x0005bd78 ldrd r6, r7, [sb, 0xc] | __asm ("ldrd r6, r7, [sb, 0xc]");
0x0005bd7c cmp.w r8, 0 |
0x0005bd80 ite ne |
| if (r8 == 0) {
0x0005bd82 movne r8, -1 | r8 = -1;
| }
| if (r8 == 0) {
0x0005bd86 mov.w r8, 1 | r8 = 1;
| }
0x0005bd8a ldrd r0, ip, [r6, 0x18] | __asm ("ldrd r0, ip, [r6, 0x18]");
0x0005bd8e ldrd r3, r2, [r7, 0x18] | __asm ("ldrd r3, r2, [r7, 0x18]");
0x0005bd92 cmp r3, r0 |
0x0005bd94 sbcs.w r1, r2, ip | __asm ("sbcs.w r1, r2, ip");
0x0005bd98 it lt |
| if (r3 >= r0) {
0x0005bd9a movlt r1, r8 | r1 = r8;
| }
| if (r3 >= r0) {
0x0005bd9c blt 0x5bdb0 |
0x0005bd9e cmp ip, r2 |
0x0005bda0 it eq |
| if (ip == r2) {
0x0005bda2 cmpeq r0, r3 | __asm ("cmpeq r0, r3");
| }
0x0005bda4 ite ne |
| if (ip == r2) {
0x0005bda6 movne r1, 1 | r1 = 1;
| }
| if (ip != r2) {
0x0005bda8 moveq r1, 0 | r1 = 0;
| }
0x0005bdaa rsbs r1, r1, 0 | r1 -= ;
0x0005bdac mul r1, r8, r1 | r1 = r8 * r1;
| }
0x0005bdb0 ldrb.w lr, [r7, 0x20] |
0x0005bdb4 cmp.w lr, 0 |
| if (lr != 0) {
0x0005bdb8 bne.w 0x5bed2 | goto label_36;
| }
0x0005bdbc ldrb.w sl, [r6, 0x20] | sl = *((r6 + 0x20));
0x0005bdc0 cmp.w sl, 0 |
| if (sl != 0) {
0x0005bdc4 bne.w 0x5bf2c | goto label_37;
| }
0x0005bdc8 cmp.w r1, -1 |
| if (r1 == -1) {
0x0005bdcc beq.w 0x5c092 | goto label_38;
| }
0x0005bdd0 cmp r1, 1 |
0x0005bdd2 ldr r1, [r4] | r1 = *(r4);
| if (r1 != 1) {
0x0005bdd4 bne.w 0x5c06e | goto label_39;
| }
0x0005bdd8 cmp r1, 0 |
| if (r1 == 0) {
0x0005bdda beq.w 0x5bf34 | goto label_12;
| }
| label_0:
0x0005bdde mov.w lr, 0 | lr = 0;
| label_1:
0x0005bde2 cmp r3, r0 |
0x0005bde4 strb.w lr, [sb, 0x20] |
0x0005bde8 sbcs.w r1, r2, ip | __asm ("sbcs.w r1, r2, ip");
| if (r3 >= r0) {
0x0005bdec blt 0x5be00 |
0x0005bdee cmp ip, r2 |
0x0005bdf0 it eq |
| if (ip == r2) {
0x0005bdf2 cmpeq r0, r3 | __asm ("cmpeq r0, r3");
| }
0x0005bdf4 ite ne |
| if (ip == r2) {
0x0005bdf6 movne r1, 1 | r1 = 1;
| }
| if (ip != r2) {
0x0005bdf8 moveq r1, 0 | r1 = 0;
| }
0x0005bdfa rsbs r1, r1, 0 | r1 -= ;
0x0005bdfc mul r8, r1, r8 | r8 = r1 * r8;
| }
0x0005be00 ldrb.w r1, [r7, 0x20] | r1 = *((r7 + 0x20));
| if (r1 == 0) {
0x0005be04 cbnz r1, 0x5be1a |
0x0005be06 ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x0005be0a cmp r1, 0 |
0x0005be0c it eq |
| if (r1 == 0) {
0x0005be0e cmpeq r8, -1 | __asm ("cmpeq r8, -1");
| }
0x0005be12 it ne |
| if (r1 != 0) {
0x0005be14 strdne r3, r2, [sb, 0x18] | __asm ("strdne r3, r2, [sb, 0x18]");
| }
| if (r1 != 0) {
0x0005be18 bne 0x5beb2 | goto label_2;
| }
| }
0x0005be1a strd r0, ip, [sb, 0x18] | __asm ("strd r0, ip, [sb, 0x18]");
0x0005be1e b 0x5beb2 | goto label_2;
0x0005be20 ldrd r6, r7, [sb, 0xc] | __asm ("ldrd r6, r7, [sb, 0xc]");
0x0005be24 ldrb.w r3, [r7, 0x21] | r3 = *((r7 + 0x21));
0x0005be28 cmp r3, 0 |
| if (r3 == 0) {
0x0005be2a beq 0x5be9a | goto label_40;
| }
| label_10:
0x0005be2c ldr r3, [r4] | r3 = *(r4);
0x0005be2e cmp r3, 0 |
| if (r3 != 0) {
0x0005be30 bne 0x5bea2 | goto label_41;
| }
0x0005be32 mov r1, r6 | r1 = r6;
0x0005be34 mov r2, r4 | r2 = r4;
0x0005be36 mov r0, r5 | r0 = r5;
0x0005be38 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005be3c ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
| if (r1 != 0) {
0x0005be40 cbnz r1, 0x5bea6 | goto label_42;
| }
0x0005be42 ldr r0, [r4] | r0 = *(r4);
0x0005be44 ldrd ip, lr, [r6, 0x18] | __asm ("ldrd ip, lr, [r6, 0x18]");
0x0005be48 mov r2, ip | r2 = ip;
0x0005be4a mov r3, lr | r3 = lr;
| if (r0 != 0) {
0x0005be4c cbnz r0, 0x5beaa | goto label_8;
| }
0x0005be4e mov r2, r4 | r2 = r4;
0x0005be50 mov r4, r8 | r4 = r8;
0x0005be52 mov r8, r2 | r8 = r2;
0x0005be54 ldrb.w r2, [r7, 0x20] | r2 = *((r7 + 0x20));
| if (r2 != 0) {
0x0005be58 cbnz r2, 0x5be92 | goto label_4;
| }
| do {
0x0005be5a ldrd r1, r2, [r7, 0x18] | __asm ("ldrd r1, r2, [r7, 0x18]");
0x0005be5e cmp r4, 0 |
| if (r4 == 0) {
0x0005be60 beq 0x5bf24 | goto label_43;
| }
0x0005be62 cmp r1, ip |
0x0005be64 sbcs.w r0, r2, r3 | __asm ("sbcs.w r0, r2, r3");
| if (r1 < ip) {
0x0005be68 blt 0x5be92 | goto label_4;
| }
0x0005be6a cmp r2, r3 |
0x0005be6c it eq |
| if (r2 == r3) {
0x0005be6e cmpeq r1, ip | __asm ("cmpeq r1, ip");
| }
| if (r2 == r3) {
0x0005be70 beq 0x5be92 | goto label_4;
| }
| label_3:
0x0005be72 mov r2, r8 | r2 = r8;
0x0005be74 mov r1, r7 | r1 = r7;
0x0005be76 mov r0, r5 | r0 = r5;
0x0005be78 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005be7c ldr.w r3, [r8] | r3 = *(r8);
0x0005be80 cmp r3, 0 |
| if (r3 != 0) {
0x0005be82 bne.w 0x5c088 | goto label_44;
| }
0x0005be86 ldrb.w r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x0005be8a ldrd ip, r3, [r6, 0x18] | __asm ("ldrd ip, r3, [r6, 0x18]");
0x0005be8e cmp r2, 0 |
0x0005be90 beq 0x5be5a |
| } while (r2 == 0);
| label_4:
0x0005be92 ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x0005be96 mov r2, ip | r2 = ip;
0x0005be98 b 0x5beaa | goto label_8;
| label_40:
0x0005be9a ldr r3, [r4] | r3 = *(r4);
0x0005be9c cmp r3, 0 |
| if (r3 == 0) {
0x0005be9e beq.w 0x5c058 | goto label_45;
| }
| label_41:
0x0005bea2 ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
| label_42:
0x0005bea6 ldrd r2, r3, [r6, 0x18] | __asm ("ldrd r2, r3, [r6, 0x18]");
| label_8:
0x0005beaa strd r2, r3, [sb, 0x18] | __asm ("strd r2, r3, [sb, 0x18]");
0x0005beae strb.w r1, [sb, 0x20] | *((sb + 0x20)) = r1;
| label_2:
0x0005beb2 ldr.w r2, [pc, 0x5a0] | r2 = *(0x0005c454);
0x0005beb6 ldr.w r3, [pc, 0x598] | r3 = *(0x5c452);
0x0005beba add r2, pc | r2 += pc;
0x0005bebc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0005bebe ldr r2, [r3] | r2 = *(0x5c452);
0x0005bec0 ldr r3, [sp, 0xac] | r3 = var_ach;
0x0005bec2 eors r2, r3 | r2 ^= r3;
0x0005bec4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005bec8 bne.w 0x5c0ae | goto label_46;
| }
0x0005becc add sp, 0xb4 |
0x0005bece pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_36:
0x0005bed2 ldr r1, [r4] | r1 = *(r4);
0x0005bed4 cmp r1, 0 |
| if (r1 != 0) {
0x0005bed6 bne.w 0x5c062 | goto label_47;
| }
| label_14:
0x0005beda mov r2, r4 | r2 = r4;
0x0005bedc mov r0, r5 | r0 = r5;
0x0005bede mov r1, r6 | r1 = r6;
| label_5:
0x0005bee0 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
| label_13:
0x0005bee4 ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x0005bee8 ldrd r0, ip, [r6, 0x18] | __asm ("ldrd r0, ip, [r6, 0x18]");
0x0005beec ldrd r3, r2, [r7, 0x18] | __asm ("ldrd r3, r2, [r7, 0x18]");
0x0005bef0 cmp r1, 0 |
| if (r1 == 0) {
0x0005bef2 beq.w 0x5bdde | goto label_0;
| }
0x0005bef6 ldrb.w r1, [r7, 0x20] | r1 = *((r7 + 0x20));
0x0005befa cmp r1, 0 |
| if (r1 == 0) {
0x0005befc beq.w 0x5bdde | goto label_0;
| }
| label_11:
0x0005bf00 mov.w lr, 1 | lr = 1;
0x0005bf04 b 0x5bde2 | goto label_1;
| label_34:
0x0005bf06 ldr r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x0005bf08 cbnz r3, 0x5bf12 |
0x0005bf0a mov r2, r4 | r2 = r4;
0x0005bf0c mov r1, r7 | r1 = r7;
0x0005bf0e bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
| }
0x0005bf12 ldrd r2, r3, [r7, 0x18] | __asm ("ldrd r2, r3, [r7, 0x18]");
0x0005bf16 strd r2, r3, [sb, 0x18] | __asm ("strd r2, r3, [sb, 0x18]");
0x0005bf1a ldrb.w r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x0005bf1e strb.w r3, [sb, 0x20] | *((sb + 0x20)) = r3;
0x0005bf22 b 0x5beb2 | goto label_2;
| label_43:
0x0005bf24 cmp r1, ip |
0x0005bf26 sbcs r2, r3 | __asm ("sbcs r2, r3");
| if (r1 < ip) {
0x0005bf28 blt 0x5be72 | goto label_3;
| }
0x0005bf2a b 0x5be92 | goto label_4;
| label_37:
0x0005bf2c ldr r1, [r4] | r1 = *(r4);
0x0005bf2e cmp r1, 0 |
| if (r1 != 0) {
0x0005bf30 bne.w 0x5bde2 | goto label_1;
| }
| label_12:
0x0005bf34 mov r2, r4 | r2 = r4;
0x0005bf36 mov r0, r5 | r0 = r5;
0x0005bf38 mov r1, r7 | r1 = r7;
0x0005bf3a b 0x5bee0 | goto label_5;
| label_35:
0x0005bf3c ldr r3, [r4] | r3 = *(r4);
0x0005bf3e cmp r3, 0 |
| if (r3 == 0) {
0x0005bf40 beq 0x5c03c | goto label_48;
| }
| label_9:
0x0005bf42 ldrb.w r3, [r6, 0x20] | r3 = *((r6 + 0x20));
| if (r3 != 0) {
0x0005bf46 cbnz r3, 0x5bfa6 | goto label_49;
| }
0x0005bf48 cmp.w r8, 0 |
0x0005bf4c mov r3, r5 | r3 = r5;
0x0005bf4e ite ne |
| if (r8 == 0) {
0x0005bf50 movne sl, -1 | sl = -1;
| }
| if (r8 == 0) {
0x0005bf54 mov.w sl, 1 | sl = 1;
| }
0x0005bf58 mov r5, r8 | r5 = r8;
0x0005bf5a rsb.w sl, sl, 0 | sl -= ;
0x0005bf5e mov r8, r3 | r8 = r3;
| do {
0x0005bf60 ldrb.w r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x0005bf64 ldrd r1, r3, [r6, 0x18] | __asm ("ldrd r1, r3, [r6, 0x18]");
0x0005bf68 cmp r2, 0 |
| if (r2 != 0) {
0x0005bf6a bne.w 0x5c09c | goto label_50;
| }
0x0005bf6e ldr r2, [r4] | r2 = *(r4);
0x0005bf70 cmp r2, 0 |
| if (r2 != 0) {
0x0005bf72 bne 0x5c036 | goto label_51;
| }
0x0005bf74 ldrd r0, r2, [r7, 0x18] | __asm ("ldrd r0, r2, [r7, 0x18]");
0x0005bf78 cmp r5, 0 |
| if (r5 != 0) {
0x0005bf7a bne 0x5c022 | goto label_52;
| }
0x0005bf7c cmp r0, r1 |
0x0005bf7e sbcs.w ip, r2, r3 | __asm ("sbcs.w ip, r2, r3");
| if (r0 >= r1) {
0x0005bf82 blt 0x5bf92 |
| label_6:
0x0005bf84 cmp r3, r2 |
0x0005bf86 it eq |
| if (r3 == r2) {
0x0005bf88 cmpeq r1, r0 | __asm ("cmpeq r1, r0");
| }
| if (r3 == r2) {
0x0005bf8a beq 0x5c036 | goto label_51;
| }
0x0005bf8c cmp.w sl, -1 |
| if (sl == -1) {
0x0005bf90 beq 0x5c02a | goto label_53;
| }
| }
0x0005bf92 mov r2, r4 | r2 = r4;
0x0005bf94 mov r1, r7 | r1 = r7;
0x0005bf96 mov r0, r8 | r0 = r8;
0x0005bf98 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
| label_7:
0x0005bf9c ldrb.w r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0005bfa0 cmp r3, 0 |
0x0005bfa2 beq 0x5bf60 |
| } while (r3 == 0);
0x0005bfa4 mov r5, r8 | r5 = r8;
| label_49:
0x0005bfa6 ldrd r2, r3, [r6, 0x18] | __asm ("ldrd r2, r3, [r6, 0x18]");
| label_15:
0x0005bfaa strd r2, r3, [sb, 0x18] | __asm ("strd r2, r3, [sb, 0x18]");
0x0005bfae movs r2, 1 | r2 = 1;
0x0005bfb0 ldr.w r3, [sb] | r3 = *(sb);
0x0005bfb4 strb.w r2, [sb, 0x20] | *((sb + 0x20)) = r2;
0x0005bfb8 cmp r3, r2 |
| if (r3 != r2) {
0x0005bfba bne.w 0x5beb2 | goto label_2;
| }
0x0005bfbe ldr.w r8, [r7, 0x14] | r8 = *((r7 + 0x14));
0x0005bfc2 ldr.w r3, [r8] | r3 = *(r8);
| if (r3 != 0) {
0x0005bfc6 cbz r3, 0x5bfe0 |
| label_16:
0x0005bfc8 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x0005bfca cbnz r3, 0x5bfe0 | goto label_54;
| }
0x0005bfcc ldrb.w r1, [r7, 0x20] | r1 = *((r7 + 0x20));
| if (r1 != 0) {
0x0005bfd0 cbnz r1, 0x5bfe0 | goto label_54;
| }
0x0005bfd2 ldrd r0, r2, [r8, 0x1c] | __asm ("ldrd r0, r2, [r8, 0x1c]");
0x0005bfd6 blx 0x8264 | fcn_00008264 ();
0x0005bfda ldr r3, [r4] | r3 = *(r4);
0x0005bfdc cmp r3, 0 |
| if (r3 == 0) {
0x0005bfde beq 0x5c0a2 | goto label_55;
| }
| }
| label_54:
0x0005bfe0 ldr.w r8, [r6, 0x14] | r8 = *((r6 + 0x14));
0x0005bfe4 cmp.w r8, 0 |
| if (r8 == 0) {
0x0005bfe8 beq 0x5c016 | goto label_56;
| }
0x0005bfea ldr.w r3, [r8] | r3 = *(r8);
| if (r3 == 0) {
0x0005bfee cbz r3, 0x5c016 | goto label_56;
| }
0x0005bff0 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x0005bff2 cbnz r3, 0x5c016 | goto label_56;
| }
| do {
0x0005bff4 ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
| if (r1 != 0) {
0x0005bff8 cbnz r1, 0x5c016 | goto label_56;
| }
0x0005bffa ldrd r0, r2, [r8, 0x1c] | __asm ("ldrd r0, r2, [r8, 0x1c]");
0x0005bffe blx 0x8264 | fcn_00008264 ();
0x0005c002 ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x0005c004 cbnz r3, 0x5c016 | goto label_56;
| }
0x0005c006 mov r2, r4 | r2 = r4;
0x0005c008 mov r1, r6 | r1 = r6;
0x0005c00a mov r0, r5 | r0 = r5;
0x0005c00c bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005c010 ldr r3, [r4] | r3 = *(r4);
0x0005c012 cmp r3, 0 |
0x0005c014 beq 0x5bff4 |
| } while (r3 == 0);
| label_56:
0x0005c016 movs r3, 1 | r3 = 1;
0x0005c018 strb.w r3, [r6, 0x20] | *((r6 + 0x20)) = r3;
0x0005c01c strb.w r3, [r7, 0x20] | *((r7 + 0x20)) = r3;
0x0005c020 b 0x5beb2 | goto label_2;
| label_52:
0x0005c022 cmp r0, r1 |
0x0005c024 sbcs.w ip, r2, r3 | __asm ("sbcs.w ip, r2, r3");
| if (r0 >= r1) {
0x0005c028 bge 0x5bf84 | goto label_6;
| }
| label_53:
0x0005c02a mov r2, r4 | r2 = r4;
0x0005c02c mov r1, r6 | r1 = r6;
0x0005c02e mov r0, r8 | r0 = r8;
0x0005c030 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005c034 b 0x5bf9c | goto label_7;
| label_51:
0x0005c036 mov r2, r1 | r2 = r1;
0x0005c038 movs r1, 0 | r1 = 0;
0x0005c03a b 0x5beaa | goto label_8;
| label_48:
0x0005c03c mov r2, r4 | r2 = r4;
0x0005c03e mov r1, r6 | r1 = r6;
0x0005c040 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005c044 ldr r3, [r4] | r3 = *(r4);
0x0005c046 cmp r3, 0 |
| if (r3 != 0) {
0x0005c048 bne.w 0x5bf42 | goto label_9;
| }
0x0005c04c mov r2, r4 | r2 = r4;
0x0005c04e mov r1, r7 | r1 = r7;
0x0005c050 mov r0, r5 | r0 = r5;
0x0005c052 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005c056 b 0x5bf42 | goto label_9;
| label_45:
0x0005c058 mov r2, r4 | r2 = r4;
0x0005c05a mov r1, r7 | r1 = r7;
0x0005c05c bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005c060 b 0x5be2c | goto label_10;
| label_47:
0x0005c062 ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x0005c066 cmp r1, 0 |
| if (r1 != 0) {
0x0005c068 bne.w 0x5bf00 | goto label_11;
| }
0x0005c06c b 0x5bdde | goto label_0;
| label_39:
0x0005c06e cmp r1, 0 |
| if (r1 != 0) {
0x0005c070 bne.w 0x5bdde | goto label_0;
| }
0x0005c074 mov r2, r4 | r2 = r4;
0x0005c076 mov r1, r6 | r1 = r6;
0x0005c078 mov r0, r5 | r0 = r5;
0x0005c07a bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005c07e ldr r3, [r4] | r3 = *(r4);
0x0005c080 cmp r3, 0 |
| if (r3 == 0) {
0x0005c082 beq.w 0x5bf34 | goto label_12;
| }
0x0005c086 b 0x5bee4 | goto label_13;
| label_44:
0x0005c088 ldrd r2, r3, [r6, 0x18] | __asm ("ldrd r2, r3, [r6, 0x18]");
0x0005c08c ldrb.w r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x0005c090 b 0x5beaa | goto label_8;
| label_38:
0x0005c092 ldr r1, [r4] | r1 = *(r4);
0x0005c094 cmp r1, 0 |
| if (r1 == 0) {
0x0005c096 beq.w 0x5beda | goto label_14;
| }
0x0005c09a b 0x5bde2 | goto label_1;
| label_50:
0x0005c09c mov r5, r8 | r5 = r8;
0x0005c09e mov r2, r1 | r2 = r1;
0x0005c0a0 b 0x5bfaa | goto label_15;
| label_55:
0x0005c0a2 mov r2, r4 | r2 = r4;
0x0005c0a4 mov r1, r7 | r1 = r7;
0x0005c0a6 mov r0, r5 | r0 = r5;
0x0005c0a8 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0005c0ac b 0x5bfc8 | goto label_16;
| label_46:
0x0005c0ae blx 0x7e8c | fcn_00007e8c ();
| label_33:
0x0005c0b2 ldr.w r6, [sb, 0x14] | r6 = *((sb + 0x14));
0x0005c0b6 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
| if (r3 != 0) {
0x0005c0b8 cbz r3, 0x5c0c0 |
0x0005c0ba ldr r0, [r6, 0x1c] | r0 = *((r6 + 0x1c));
0x0005c0bc blx 0x84f8 | fcn_000084f8 ();
| }
0x0005c0c0 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0005c0c2 movs r1, 0 | r1 = 0;
0x0005c0c4 ldr r2, [r5] | r2 = *(r5);
0x0005c0c6 strd r1, r1, [r6, 0x1c] | __asm ("strd r1, r1, [r6, 0x1c]");
0x0005c0ca str r1, [r6, 0x18] | *((r6 + 0x18)) = r1;
0x0005c0cc mov r8, r2 | r8 = r2;
0x0005c0ce str r3, [sp, 0x10] | var_10h = r3;
| if (r3 == 0) {
0x0005c0d0 cbnz r3, 0x5c102 |
0x0005c0d2 ldrb.w r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x0005c0d6 add.w r7, sb, 0x20 | r7 = sb + 0x20;
0x0005c0da ldrb.w r0, [r2, 0xef] | r0 = *((r2 + 0xef));
0x0005c0de cmp r3, r0 |
| if (r3 != r0) {
0x0005c0e0 beq 0x5c0ea |
0x0005c0e2 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0005c0e4 cmp r2, 0 |
| if (r2 != 0) {
0x0005c0e6 bne.w 0x5c284 | goto label_57;
| }
| }
0x0005c0ea mov r2, r7 | r2 = r7;
0x0005c0ec mov r0, r8 | r0 = r8;
0x0005c0ee mov r1, r6 | r1 = r6;
0x0005c0f0 bl 0x16f3c | fcn_00016f3c (r0, r1, r2);
| label_18:
0x0005c0f4 ldrd r2, r3, [r6, 0x10] | __asm ("ldrd r2, r3, [r6, 0x10]");
0x0005c0f8 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0005c0fa str r1, [r4] | *(r4) = r1;
0x0005c0fc strd r2, r3, [sb, 0x18] | __asm ("strd r2, r3, [sb, 0x18]");
0x0005c100 b 0x5beb2 | goto label_2;
| }
0x0005c102 ldr r7, [r6, 0x40] | r7 = *((r6 + 0x40));
0x0005c104 strb.w r1, [sp, 0x3b] | var_3bh = r1;
0x0005c108 cmp r7, 1 |
| if (r7 == 1) {
0x0005c10a beq.w 0x5c254 | goto label_58;
| }
0x0005c10e ldrb.w r5, [r5, 0x34] | r5 = *((r5 + 0x34));
0x0005c112 add r0, sp, 0x48 | r0 += var_48h;
0x0005c114 movs r2, 0x60 | r2 = 0x60;
0x0005c116 mov r7, r1 | r7 = r1;
0x0005c118 str r0, [sp, 0x10] | var_10h = r0;
0x0005c11a str r5, [sp, 0x24] | var_24h = r5;
0x0005c11c blx 0x8264 | fcn_00008264 ();
0x0005c120 cmp r5, 0 |
0x0005c122 str.w sb, [sp, 0x14] | __asm ("str.w sb, [var_14h]");
0x0005c126 ite ne |
| if (r5 == 0) {
0x0005c128 movne r3, -1 | r3 = -1;
| }
| if (r5 == 0) {
0x0005c12c movs r3, 1 | r3 = 1;
| }
0x0005c12e mov sb, r8 | sb = r8;
0x0005c130 str r3, [sp, 0x28] | var_28h = r3;
0x0005c132 add.w r3, sp, 0x3b | r3 += var_3bh;
0x0005c136 str r4, [sp, 0x18] | var_18h = r4;
0x0005c138 str r3, [sp, 0x20] | var_20h = r3;
| label_22:
0x0005c13a ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005c13c cmp r7, 0 |
| if (r7 != 0) {
0x0005c13e bne.w 0x5c27a | goto label_59;
| }
0x0005c142 mov r4, r7 | r4 = r7;
0x0005c144 ldr r7, [sp, 0x10] | r7 = var_10h;
0x0005c146 mov sl, r4 | sl = r4;
0x0005c148 mov r5, r4 | r5 = r4;
0x0005c14a mov r8, r4 | r8 = r4;
0x0005c14c mov fp, r4 |
| do {
0x0005c14e cmp r3, sl |
| if (r3 <= sl) {
0x0005c150 ble.w 0x5c32c | goto label_60;
| }
0x0005c154 cmp r5, 0 |
| if (r5 != 0) {
0x0005c156 bne.w 0x5c330 | goto label_61;
| }
0x0005c15a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005c15c mov r1, r6 | r1 = r6;
0x0005c15e mov r2, sl | r2 = sl;
0x0005c160 mov r0, sb | r0 = sb;
0x0005c162 str r3, [sp] | *(sp) = r3;
0x0005c164 mov r3, r7 | r3 = r7;
0x0005c166 bl 0x5bca0 | fcn_0005bca0 (r0, r1, r2, r3, r4);
0x0005c16a ldr r3, [r7] | r3 = *(r7);
0x0005c16c mov r1, r0 | r1 = r0;
| if (r3 == 0) {
0x0005c16e cbnz r3, 0x5c180 |
0x0005c170 ldrd r0, r5, [r7, 8] | __asm ("ldrd r0, r5, [r7, 8]");
0x0005c174 cmp r4, 0 |
| if (r4 != 0) {
0x0005c176 bne.w 0x5c3a0 | goto label_62;
| }
| label_28:
0x0005c17a mov r8, r0 | r8 = r0;
0x0005c17c mov fp, r5 |
0x0005c17e movs r4, 1 | r4 = 1;
| }
| label_29:
0x0005c180 ldrb.w r5, [sp, 0x3b] | r5 = var_3bh;
0x0005c184 add.w sl, sl, 1 | sl++;
0x0005c188 ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005c18a adds r7, 0x18 | r7 += 0x18;
0x0005c18c cmp r1, 0 |
0x0005c18e beq 0x5c14e |
| } while (r1 == 0);
| label_20:
0x0005c190 cmp r3, 0 |
| if (r3 <= 0) {
0x0005c192 ble.w 0x5c2a2 | goto label_63;
| }
| label_23:
0x0005c196 mov.w sl, 0 | sl = 0;
0x0005c19a mov r7, r1 | r7 = r1;
| label_17:
0x0005c19c cmp r7, 0 |
| if (r7 != 0) {
0x0005c19e bne 0x5c23e | goto label_26;
| }
0x0005c1a0 mov r7, r6 | r7 = r6;
| do {
| label_25:
0x0005c1a2 cmp r5, 0 |
| if (r5 != 0) {
0x0005c1a4 bne.w 0x5c358 | goto label_64;
| }
0x0005c1a8 add.w r3, sl, sl, lsl 1 | r3 = sl + (sl << 1);
0x0005c1ac add r2, sp, 0xb0 | r2 += var_b0h;
0x0005c1ae lsl.w r1, sl, 1 | r1 = sl << 1;
0x0005c1b2 add.w r4, r2, r3, lsl 3 | r4 = r2 + (r3 << 3);
0x0005c1b6 lsls r3, r3, 3 | r3 <<= 3;
0x0005c1b8 ldr ip, [r4, -0x68] | ip = var_48h;
0x0005c1bc str r3, [sp, 0x1c] | var_1ch = r3;
0x0005c1be cmp.w ip, 0 |
| if (ip != 0) {
0x0005c1c2 bne.w 0x5c370 | goto label_65;
| }
0x0005c1c6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005c1c8 sub.w r6, r4, 0x60 | r6 -= var_60h;
0x0005c1cc ldr r0, [r4, -0x60] | r0 = var_60h;
0x0005c1d0 ldr r2, [r6, 4] | r2 = var_4h_2;
0x0005c1d2 cmp r3, 0 |
| if (r3 == 0) {
0x0005c1d4 beq.w 0x5c3da | goto label_66;
| }
0x0005c1d8 cmp r8, r0 |
0x0005c1da sbcs.w lr, fp, r2 | __asm ("sbcs.w lr, fp, r2");
| if (r8 < r0) {
0x0005c1de blt.w 0x5c3f2 | goto label_67;
| }
| label_30:
0x0005c1e2 cmp fp, r2 |
0x0005c1e4 it eq |
| if (fp == r2) {
0x0005c1e6 cmpeq r8, r0 | __asm ("cmpeq r8, r0");
| }
| if (fp == r2) {
0x0005c1e8 beq.w 0x5c42a | goto label_68;
| }
0x0005c1ec ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005c1ee cmp r3, 1 |
| if (r3 != 1) {
0x0005c1f0 bne.w 0x5c3e4 | goto label_69;
| }
0x0005c1f4 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005c1f6 add.w r3, r1, sl | r3 = r1 + sl;
0x0005c1fa lsls r4, r3, 3 | r4 = r3 << 3;
0x0005c1fc mov r1, r7 | r1 = r7;
0x0005c1fe mov r0, sb | r0 = sb;
0x0005c200 str r2, [sp] | *(sp) = r2;
0x0005c202 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0005c204 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x0005c208 mov r2, sl | r2 = sl;
0x0005c20a bl 0x5bca0 | fcn_0005bca0 (r0, r1, r2, r3, r4);
0x0005c20e add.w r3, r4, 0xb0 | r3 = r4 + 0xb0;
0x0005c212 add.w r1, sp, r3 | r1 = sp + r3;
0x0005c216 mov r3, r0 | r3 = r0;
0x0005c218 ldrd r2, r1, [r1, -0x60] | __asm ("ldrd r2, r1, [var_60h]");
0x0005c21c cmp r8, r2 |
0x0005c21e sbcs.w r0, fp, r1 | __asm ("sbcs.w r0, fp, r1");
| if (r8 < r2) {
0x0005c222 blt.w 0x5c43c | goto label_70;
| }
0x0005c226 cmp fp, r1 |
0x0005c228 it eq |
| if (fp == r1) {
0x0005c22a cmpeq r8, r2 | __asm ("cmpeq r8, r2");
| }
| if (fp == r1) {
0x0005c22c beq.w 0x5c446 | goto label_71;
| }
| label_32:
0x0005c230 ldrb.w r5, [sp, 0x3b] | r5 = var_3bh;
0x0005c234 cmp r3, 0 |
0x0005c236 beq 0x5c1a2 |
| } while (r3 == 0);
0x0005c238 mov r6, r7 | r6 = r7;
0x0005c23a mov r7, r3 | r7 = r3;
0x0005c23c ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
| label_26:
0x0005c23e add.w sl, sl, 1 | sl++;
0x0005c242 cmp sl, r3 |
| if (sl < r3) {
0x0005c244 blt 0x5c19c | goto label_17;
| }
| if (r5 == 0) {
0x0005c246 cbz r5, 0x5c2a8 | goto label_72;
| }
| label_21:
0x0005c248 ldrd sb, r4, [sp, 0x14] | __asm ("ldrd sb, r4, [var_14h]");
0x0005c24c str r7, [sp, 0x10] | var_10h = r7;
| do {
| label_19:
0x0005c24e strb.w r5, [sb, 0x20] | *((sb + 0x20)) = r5;
0x0005c252 b 0x5c0f4 | goto label_18;
| label_58:
0x0005c254 add.w r3, r6, 0x20 | r3 = r6 + 0x20;
0x0005c258 ldr r1, [r6, 0x5c] | r1 = *((r6 + 0x5c));
0x0005c25a mov r0, r2 | r0 = r2;
0x0005c25c str r3, [sp] | *(sp) = r3;
0x0005c25e add.w r2, r6, 0x10 | r2 = r6 + 0x10;
0x0005c262 add.w r3, r6, 0x1c | r3 = r6 + 0x1c;
0x0005c266 bl 0x5baf8 | fcn_0005baf8 (r0, r1, r2, r3, r4);
0x0005c26a ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x0005c26c str r0, [sp, 0x10] | var_10h = r0;
| if (r3 == 0) {
0x0005c26e cbz r3, 0x5c276 | goto label_73;
| }
| label_24:
0x0005c270 ldrb.w r5, [sp, 0x3b] | r5 = var_3bh;
0x0005c274 b 0x5c24e |
| } while (1);
| label_73:
0x0005c276 mov r5, r7 | r5 = r7;
0x0005c278 b 0x5c24e | goto label_19;
| label_59:
0x0005c27a movs r5, 0 | r5 = 0;
0x0005c27c mov r1, r7 | r1 = r7;
0x0005c27e mov r8, r5 | r8 = r5;
0x0005c280 mov fp, r5 |
0x0005c282 b 0x5c190 | goto label_20;
| label_57:
0x0005c284 mov r3, r6 | r3 = r6;
0x0005c286 add.w r5, r6, 0x10 | r5 = r6 + 0x10;
0x0005c28a ldr r1, [r3], 0x20 | r1 = *(r3);
| r3 += 0x20;
0x0005c28e str r7, [sp, 8] | var_8h = r7;
0x0005c290 strd r5, r3, [sp] | __asm ("strd r5, r3, [sp]");
0x0005c294 add.w r3, r6, 8 | r3 = r6 + 8;
0x0005c298 bl 0x14fd4 | fcn_00014fd4 (r0, r1, r2, r3, r4, r5, r6);
0x0005c29c ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0005c29e str r3, [r6, 0x1c] | *((r6 + 0x1c)) = r3;
0x0005c2a0 b 0x5c0f4 | goto label_18;
| label_63:
0x0005c2a2 mov r7, r1 | r7 = r1;
0x0005c2a4 cmp r5, 0 |
| if (r5 != 0) {
0x0005c2a6 bne 0x5c248 | goto label_21;
| }
| label_72:
0x0005c2a8 subs r3, 1 | r3--;
0x0005c2aa add r2, sp, 0xb0 | r2 += var_b0h;
0x0005c2ac add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0005c2b0 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x0005c2b4 ldr sl, [r3, -0x54] | sl = var_2ch;
0x0005c2b8 add.w r0, sl, 8 | r0 = sl + 8;
0x0005c2bc blx 0x85dc | r0 = fcn_000085dc ();
0x0005c2c0 mov r4, r0 | r4 = r0;
0x0005c2c2 cmp r0, 0 |
| if (r0 == 0) {
0x0005c2c4 beq 0x5c334 | goto label_74;
| }
0x0005c2c6 ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005c2c8 add r2, sp, 0xb0 | r2 += var_b0h;
0x0005c2ca subs r3, 1 | r3--;
0x0005c2cc add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0005c2d0 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x0005c2d4 add.w r2, sl, 1 | r2 = sl + 1;
0x0005c2d8 ldr r1, [r3, -0x58] | r1 = var_28h;
0x0005c2dc blx 0x7dcc | fcn_00007dcc ();
0x0005c2e0 str.w r5, [r4, sl] | __asm ("str.w r5, [r4, sl]");
0x0005c2e4 add sl, r4 | sl += r4;
0x0005c2e6 str.w r5, [sl, 4] | __asm ("str.w r5, [sl, 4]");
0x0005c2ea ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005c2ec str r5, [sp, 0x1c] | var_1ch = r5;
0x0005c2ee subs r1, r3, 1 | r1 = r3 - 1;
0x0005c2f0 cmp r1, 0 |
| if (r1 <= 0) {
0x0005c2f2 ble 0x5c316 | goto label_31;
| }
0x0005c2f4 ldr.w sl, [sp, 0x10] | sl = var_10h;
0x0005c2f8 add r2, sp, 0x44 | r2 += var_44h;
0x0005c2fa str r2, [sp, 0x2c] | var_2ch = r2;
0x0005c2fc add r2, sp, 0x40 | r2 += var_40h;
0x0005c2fe str r2, [sp, 0x30] | var_30h = r2;
0x0005c300 add r2, sp, 0x3c | r2 += var_3ch;
0x0005c302 str r2, [sp, 0x34] | var_34h = r2;
| do {
0x0005c304 ldr.w r2, [sl] | r2 = *(sl);
| if (r2 == 0) {
0x0005c308 cbz r2, 0x5c378 | goto label_75;
| }
| label_27:
0x0005c30a adds r5, 1 | r5++;
0x0005c30c subs r1, r3, 1 | r1 = r3 - 1;
0x0005c30e cmp r1, r5 |
0x0005c310 add.w sl, sl, 0x18 | sl += 0x18;
0x0005c314 bgt 0x5c304 |
| } while (r1 > r5);
| label_31:
0x0005c316 cmp r5, r1 |
| if (r5 == r1) {
0x0005c318 beq 0x5c33e | goto label_76;
| }
0x0005c31a mov r0, r4 | r0 = r4;
0x0005c31c blx 0x84f8 | fcn_000084f8 ();
0x0005c320 ldrb.w r5, [sp, 0x3b] | r5 = var_3bh;
0x0005c324 cmp r5, 0 |
| if (r5 == 0) {
0x0005c326 beq.w 0x5c13a | goto label_22;
| }
0x0005c32a b 0x5c248 | goto label_21;
| label_60:
0x0005c32c movs r1, 0 | r1 = 0;
0x0005c32e b 0x5c190 | goto label_20;
| label_61:
0x0005c330 movs r1, 0 | r1 = 0;
0x0005c332 b 0x5c196 | goto label_23;
| label_74:
0x0005c334 movs r3, 7 | r3 = 7;
0x0005c336 ldrd sb, r4, [sp, 0x14] | __asm ("ldrd sb, r4, [var_14h]");
0x0005c33a str r3, [sp, 0x10] | var_10h = r3;
0x0005c33c b 0x5c0f4 | goto label_18;
| label_76:
0x0005c33e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005c340 mov sl, r4 | sl = r4;
0x0005c342 str r7, [sp, 0x10] | var_10h = r7;
0x0005c344 ldrd sb, r4, [sp, 0x14] | __asm ("ldrd sb, r4, [var_14h]");
0x0005c348 str r3, [r6, 0x20] | *((r6 + 0x20)) = r3;
0x0005c34a movs r3, 1 | r3 = 1;
0x0005c34c strd r8, fp, [r6, 0x10] | __asm ("strd r8, fp, [r6, 0x10]");
0x0005c350 str.w sl, [r6, 0x1c] | __asm ("str.w sl, [r6, 0x1c]");
0x0005c354 str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x0005c356 b 0x5c270 | goto label_24;
| label_64:
0x0005c358 ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x0005c35a add.w sl, sl, 1 | sl++;
0x0005c35e cmp sl, r3 |
| if (sl < r3) {
0x0005c360 blt.w 0x5c1a2 | goto label_25;
| }
0x0005c364 movs r3, 0 | r3 = 0;
0x0005c366 ldrd sb, r4, [sp, 0x14] | __asm ("ldrd sb, r4, [var_14h]");
0x0005c36a mov r6, r7 | r6 = r7;
0x0005c36c str r3, [sp, 0x10] | var_10h = r3;
0x0005c36e b 0x5c24e | goto label_19;
| label_65:
0x0005c370 ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x0005c372 mov r6, r7 | r6 = r7;
0x0005c374 mov r7, r5 | r7 = r5;
0x0005c376 b 0x5c23e | goto label_26;
| label_75:
0x0005c378 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005c37a subs r1, r1, r5 | r1 -= r5;
0x0005c37c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0005c37e strd r4, r4, [sp, 0x40] | __asm ("strd r4, r4, [var_44h]");
0x0005c382 str r3, [sp, 4] | var_4h = r3;
0x0005c384 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005c386 str r3, [sp] | *(sp) = r3;
0x0005c388 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0005c38c str r3, [sp, 0x3c] | var_3ch = r3;
0x0005c38e movs r3, 1 | r3 = 1;
0x0005c390 bl 0x170a8 | r0 = fcn_000170a8 (r0, r1, r2, r3, r4, r5, r6);
| if (r0 == 0) {
0x0005c394 cbz r0, 0x5c3ec | goto label_77;
| }
0x0005c396 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0005c398 subs r3, r3, r4 | r3 -= r4;
0x0005c39a str r3, [sp, 0x1c] | var_1ch = r3;
0x0005c39c ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005c39e b 0x5c30a | goto label_27;
| label_62:
0x0005c3a0 ldr r3, [sp, 0x24] | r3 = var_24h;
| if (r3 == 0) {
0x0005c3a2 cbz r3, 0x5c3c0 | goto label_78;
| }
0x0005c3a4 cmp r0, r8 |
0x0005c3a6 sbcs.w r3, r5, fp | __asm ("sbcs.w r3, r5, fp");
| if (r0 < r8) {
0x0005c3aa blt.w 0x5c17a | goto label_28;
| }
0x0005c3ae cmp fp, r5 |
0x0005c3b0 it eq |
| if (fp == r5) {
0x0005c3b2 cmpeq r8, r0 | __asm ("cmpeq r8, r0");
| }
| if (fp == r5) {
0x0005c3b4 beq 0x5c3d4 | goto label_79;
| }
0x0005c3b6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005c3b8 cmp r3, 1 |
| if (r3 != 1) {
0x0005c3ba bne.w 0x5c180 | goto label_29;
| }
0x0005c3bc add r6, sp, 0x384 | r6 = sp + 0x384;
0x0005c3be b 0x5c17a | goto label_28;
| label_78:
0x0005c3c0 cmp r0, r8 |
0x0005c3c2 sbcs.w r3, r5, fp | __asm ("sbcs.w r3, r5, fp");
| if (r0 < r8) {
0x0005c3c6 blt.w 0x5c180 | goto label_29;
| }
0x0005c3ca cmp fp, r5 |
0x0005c3cc it eq |
| if (fp != r5) {
0x0005c3ce cmpeq r8, r0 | __asm ("cmpeq r8, r0");
| goto label_80;
| }
| if (fp != r5) {
| label_80:
0x0005c3d0 bne.w 0x5c17a | goto label_28;
| }
| label_79:
0x0005c3d4 mov r8, r0 | r8 = r0;
0x0005c3d6 mov fp, r5 |
0x0005c3d8 b 0x5c180 | goto label_29;
| label_66:
0x0005c3da cmp r8, r0 |
0x0005c3dc sbcs.w r3, fp, r2 | __asm ("sbcs.w r3, fp, r2");
| if (r8 >= r0) {
0x0005c3e0 bge.w 0x5c1e2 | goto label_30;
| }
| label_69:
0x0005c3e4 mov r6, r7 | r6 = r7;
0x0005c3e6 mov r7, ip | r7 = ip;
0x0005c3e8 ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005c3ea b 0x5c23e | goto label_26;
| label_77:
0x0005c3ec ldr r1, [r6, 0x40] | r1 = *((r6 + 0x40));
0x0005c3ee subs r1, 1 | r1--;
0x0005c3f0 b 0x5c316 | goto label_31;
| label_67:
0x0005c3f2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005c3f4 mov r1, r7 | r1 = r7;
0x0005c3f6 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0005c3f8 mov r0, sb | r0 = sb;
0x0005c3fa add r2, r3 | r2 += r3;
0x0005c3fc mov r3, r2 | r3 = r2;
0x0005c3fe ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005c400 str r2, [sp] | *(sp) = r2;
0x0005c402 mov r2, sl | r2 = sl;
0x0005c404 bl 0x5bca0 | fcn_0005bca0 (r0, r1, r2, r3, r4);
0x0005c408 ldr r1, [r4, -0x60] | r1 = var_60h;
0x0005c40c mov r3, r0 | r3 = r0;
0x0005c40e ldr r2, [r6, 4] | r2 = var_4h_2;
0x0005c410 cmp r8, r1 |
0x0005c412 sbcs.w r0, fp, r2 | __asm ("sbcs.w r0, fp, r2");
| if (r8 < r1) {
0x0005c416 blt.w 0x5c230 | goto label_32;
| }
0x0005c41a cmp fp, r2 |
0x0005c41c it eq |
| if (fp == r2) {
0x0005c41e cmpeq r8, r1 | __asm ("cmpeq r8, r1");
| }
| if (fp != r2) {
0x0005c420 beq 0x5c436 |
0x0005c422 mov sl, r5 | sl = r5;
0x0005c424 mov r8, r1 | r8 = r1;
0x0005c426 mov fp, r2 |
0x0005c428 b 0x5c230 | goto label_32;
| label_68:
0x0005c42a mov r6, r7 | r6 = r7;
0x0005c42c mov r8, r0 | r8 = r0;
0x0005c42e ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005c430 mov r7, ip | r7 = ip;
0x0005c432 mov fp, r2 |
0x0005c434 b 0x5c23e | goto label_26;
| }
0x0005c436 mov r8, r1 | r8 = r1;
0x0005c438 mov fp, r2 |
0x0005c43a b 0x5c230 | goto label_32;
| label_70:
0x0005c43c mov r8, r2 | r8 = r2;
0x0005c43e mov fp, r1 |
0x0005c440 mov.w sl, 0 | sl = 0;
0x0005c444 b 0x5c230 | goto label_32;
| label_71:
0x0005c446 mov r8, r2 | r8 = r2;
0x0005c448 mov fp, r1 |
0x0005c44a b 0x5c230 | goto label_32;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5c500 */
| #include <stdint.h>
|
; (fcn) fcn.0005c500 () | void fcn_0005c500 (int16_t arg_dch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0005c500 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0005c504 mov r7, r1 | r7 = r1;
0x0005c506 ldr r1, [pc, 0x154] |
0x0005c508 mov r4, r2 | r4 = r2;
0x0005c50a mov r8, r3 | r8 = r3;
0x0005c50c movs r3, 0 | r3 = 0;
0x0005c50e ldr r2, [pc, 0x150] | r2 = *(0x5c662);
0x0005c510 sub sp, 0x18 |
0x0005c512 ldrd sl, r6, [r4] | __asm ("ldrd sl, r6, [r4]");
0x0005c516 add r1, pc | r1 = 0xb8b78;
0x0005c518 ldr.w sb, [r0] | sb = *(r0);
0x0005c51c mov r5, r0 | r5 = r0;
0x0005c51e ldr r2, [r1, r2] |
0x0005c520 cmp r6, r3 |
0x0005c522 ldr r2, [r2] | r2 = *(0xb8b78);
0x0005c524 str r2, [sp, 0x14] | var_14h = r2;
0x0005c526 mov.w r2, 0 | r2 = 0;
0x0005c52a str r7, [sp, 0xc] | var_ch = r7;
0x0005c52c str r3, [sp, 0x10] | var_10h = r3;
| if (r6 < r3) {
0x0005c52e blt 0x5c5e6 | goto label_6;
| }
0x0005c530 adds r0, r6, 1 | r0 = r6 + 1;
0x0005c532 blx 0x85dc | r0 = fcn_000085dc ();
0x0005c536 mov r4, r0 | r4 = r0;
0x0005c538 cmp r0, 0 |
| if (r0 == 0) {
0x0005c53a beq 0x5c5fa | goto label_7;
| }
| label_1:
0x0005c53c mov r2, r6 | r2 = r6;
0x0005c53e mov r1, sl | r1 = sl;
0x0005c540 blx 0x7dcc | fcn_00007dcc ();
0x0005c544 movs r3, 0 | r3 = 0;
0x0005c546 cmp.w r8, 0 |
0x0005c54a strb r3, [r4, r6] | *((r4 + r6)) = r3;
0x0005c54c it ne |
| if (r8 == 0) {
0x0005c54e movne r6, 3 | r6 = 3;
| }
0x0005c550 ldrb r3, [r4] | r3 = *(r4);
0x0005c552 it eq |
| if (r8 != 0) {
0x0005c554 moveq r6, 1 | r6 = 1;
| }
0x0005c556 cmp r3, 0x27 |
0x0005c558 it ne |
| if (r3 != 0x27) {
0x0005c55a cmpne r3, 0x5b | __asm ("cmpne r3, 0x5b");
| }
| if (r3 != 0x27) {
0x0005c55c beq 0x5c566 |
0x0005c55e cmp r3, 0x60 |
0x0005c560 it ne |
| if (r3 != 0x60) {
0x0005c562 cmpne r3, 0x22 | __asm ("cmpne r3, 0x22");
| }
| if (r3 != 0x60) {
0x0005c564 bne 0x5c56c | goto label_8;
| }
| }
0x0005c566 mov r0, r4 | r0 = r4;
0x0005c568 bl 0xb750 | fcn_0000b750 (r0);
| label_8:
0x0005c56c mov r0, r4 | r0 = r4;
0x0005c56e blx 0x8160 | fcn_00008160 ();
0x0005c572 ldrd r1, r3, [sb, 0x38] | __asm ("ldrd r1, r3, [sb, 0x38]");
0x0005c576 mov r2, r6 | r2 = r6;
0x0005c578 str r0, [sp] | *(sp) = r0;
0x0005c57a mov r0, r1 | r0 = r1;
0x0005c57c ldr r1, [pc, 0xe4] |
0x0005c57e add r1, pc | r1 = 0xb8be6;
0x0005c580 str r1, [sp, 4] | var_4h = r1;
0x0005c582 add r1, sp, 0xc | r1 += var_ch;
0x0005c584 ldr r6, [r3, 8] | r6 = *((r3 + 8));
0x0005c586 mov r3, r4 | r3 = r4;
0x0005c588 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005c58a mov r6, r0 | r6 = r0;
0x0005c58c mov r0, r4 | r0 = r4;
0x0005c58e blx 0x84f8 | fcn_000084f8 ();
0x0005c592 cbz r6, 0x5c5bc |
| while (r6 != 0) {
| label_2:
0x0005c594 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0005c596 str r6, [r5, 8] | *((r5 + 8)) = r6;
| if (r0 != 0) {
0x0005c598 cbz r0, 0x5c59e |
0x0005c59a bl 0x5c458 | fcn_0005c458 (r0, r1);
| }
0x0005c59e movs r4, 0 | r4 = 0;
| label_0:
0x0005c5a0 ldr r2, [pc, 0xc4] |
0x0005c5a2 ldr r3, [pc, 0xbc] | r3 = *(0x5c662);
0x0005c5a4 add r2, pc | r2 = 0xb8c10;
0x0005c5a6 ldr r3, [r2, r3] | r3 = *(0xb8c10);
0x0005c5a8 ldr r2, [r3] | r2 = *(0xb8c10);
0x0005c5aa ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005c5ac eors r2, r3 | r2 ^= r3;
0x0005c5ae mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005c5b2 bne 0x5c656 | goto label_9;
| }
0x0005c5b4 mov r0, r4 | r0 = r4;
0x0005c5b6 add sp, 0x18 |
0x0005c5b8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x0005c5bc ldr r6, [sp, 0x10] | r6 = var_10h;
0x0005c5be cmp r6, 0 |
0x0005c5c0 bne 0x5c594 |
| }
| if (r7 == 0) {
0x0005c5c2 cbz r7, 0x5c61e | goto label_10;
| }
| label_4:
0x0005c5c4 ldr r4, [sp, 0xc] | r4 = var_ch;
| if (r4 == 0) {
0x0005c5c6 cbz r4, 0x5c602 | goto label_11;
| }
0x0005c5c8 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
| if (r3 != 0) {
0x0005c5ca cbz r3, 0x5c5d4 |
0x0005c5cc add.w r3, r4, r3, lsl 4 | r3 = r4 + (r3 << 4);
0x0005c5d0 strb.w r8, [r3, 4] | *((r3 + 4)) = r8;
| }
| label_3:
0x0005c5d4 ldrd r3, r2, [r5, 0xc] | __asm ("ldrd r3, r2, [r5, 0xc]");
0x0005c5d8 add.w r3, r3, 0x40000000 | r3 += 0x40000000;
0x0005c5dc subs r3, 1 | r3--;
0x0005c5de str.w r4, [r2, r3, lsl 2] | __asm ("str.w r4, [r2, r3, lsl 2]");
0x0005c5e2 ldr r4, [sp, 0xc] | r4 = var_ch;
0x0005c5e4 b 0x5c5a0 | goto label_0;
| label_6:
0x0005c5e6 mov r0, sl | r0 = sl;
0x0005c5e8 blx 0x8160 | r0 = fcn_00008160 ();
0x0005c5ec mov r6, r0 | r6 = r0;
0x0005c5ee adds r0, r6, 1 | r0 = r6 + 1;
0x0005c5f0 blx 0x85dc | r0 = fcn_000085dc ();
0x0005c5f4 mov r4, r0 | r4 = r0;
0x0005c5f6 cmp r0, 0 |
| if (r0 != 0) {
0x0005c5f8 bne 0x5c53c | goto label_1;
| }
| label_7:
0x0005c5fa movs r6, 7 | r6 = 7;
0x0005c5fc blx 0x84f8 | fcn_000084f8 ();
0x0005c600 b 0x5c594 | goto label_2;
| label_11:
0x0005c602 ldr r6, [r5, 8] | r6 = *((r5 + 8));
| if (r6 != 0) {
0x0005c604 cbnz r6, 0x5c61a | goto label_12;
| }
0x0005c606 movs r0, 0x24 | r0 = 0x24;
0x0005c608 movs r1, 0 | r1 = 0;
0x0005c60a blx 0x7f18 | r0 = fcn_00007f18 ();
0x0005c60e mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0005c610 cbz r0, 0x5c62a | goto label_13;
| }
0x0005c612 movs r2, 0x24 | r2 = 0x24;
0x0005c614 mov r1, r6 | r1 = r6;
0x0005c616 blx 0x8264 | fcn_00008264 ();
| do {
| label_12:
0x0005c61a str r4, [sp, 0xc] | var_ch = r4;
0x0005c61c b 0x5c5d4 | goto label_3;
| label_10:
0x0005c61e ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0005c620 lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 == r3) {
0x0005c622 beq 0x5c630 | goto label_14;
| }
| label_5:
0x0005c624 adds r3, 1 | r3++;
0x0005c626 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x0005c628 b 0x5c5c4 | goto label_4;
| label_13:
0x0005c62a movs r3, 7 | r3 = 7;
0x0005c62c str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0005c62e b 0x5c61a |
| } while (1);
| label_14:
0x0005c630 adds r3, 8 | r3 += 8;
0x0005c632 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x0005c634 lsls r2, r3, 2 | r2 = r3 << 2;
0x0005c636 mov r3, r7 | r3 = r7;
0x0005c638 blx 0x8638 | r0 = fcn_00008638 ();
0x0005c63c mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0005c63e cbz r0, 0x5c646 |
0x0005c640 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0005c642 str r0, [r5, 0x10] | *((r5 + 0x10)) = r0;
0x0005c644 b 0x5c624 | goto label_5;
| }
0x0005c646 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0005c648 movs r3, 7 | r3 = 7;
0x0005c64a str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0005c64c cmp r0, 0 |
| if (r0 == 0) {
0x0005c64e beq 0x5c5a0 | goto label_0;
| }
0x0005c650 bl 0x5c458 | fcn_0005c458 (r0, r1);
0x0005c654 b 0x5c5a0 | goto label_0;
| label_9:
0x0005c656 blx 0x7e8c | fcn_00007e8c ();
0x0005c65a nop |
0x0005c65c asrs r2, r7, 0x1d | r2 = r7 >> 0x1d;
0x0005c65e movs r7, r0 | r7 = r0;
0x0005c660 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0005c662 movs r0, r0 |
0x0005c664 add r6, sp, 0xdc | r6 += arg_dch;
0x0005c666 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5c6c8 */
| #include <stdint.h>
|
; (fcn) fcn.0005c6c8 () | void fcn_0005c6c8 (int16_t arg1, uint32_t arg2, uint32_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0005c6c8 invalid |
0x0005c6cc ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x0005c6ce mov r7, r2 | r7 = r2;
| if (r4 == 0) {
0x0005c6d0 cbnz r4, 0x5c708 |
0x0005c6d2 cmp r2, 0 |
| if (r2 == 0) {
0x0005c6d4 beq 0x5c742 | goto label_4;
| }
0x0005c6d6 mov r6, r0 | r6 = r0;
0x0005c6d8 cmp r1, 0 |
| if (r1 == 0) {
0x0005c6da beq 0x5c746 | goto label_5;
| }
0x0005c6dc ldr r4, [r1, 8] | r4 = *((r1 + 8));
0x0005c6de ands r3, r4, 7 | r3 = r4 & 7;
| if (r3 == r4) {
0x0005c6e2 beq 0x5c75e | goto label_6;
| }
| label_1:
0x0005c6e4 cmp r4, 0 |
| if (r4 <= 0) {
0x0005c6e6 ble 0x5c75a | goto label_7;
| }
0x0005c6e8 ldr r1, [r7, 0x10] | r1 = *((r7 + 0x10));
0x0005c6ea adds r3, r4, 1 | r3 = r4 + 1;
0x0005c6ec add.w r2, r5, r3, lsl 2 | r2 = r5 + (r3 << 2);
0x0005c6f0 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0005c6f2 cmp r1, 0 |
| if (r1 == 0) {
0x0005c6f4 beq 0x5c772 | goto label_8;
| }
0x0005c6f6 ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
0x0005c6f8 cmp r1, 0 |
| if (r1 == 0) {
0x0005c6fa beq 0x5c78a | goto label_9;
| }
| label_0:
0x0005c6fc mov r0, r5 | r0 = r5;
| label_2:
0x0005c6fe add.w r4, r5, r4, lsl 2 | r4 = r5 + (r4 << 2);
0x0005c702 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0005c704 str r7, [r4, 0xc] | *((r4 + 0xc)) = r7;
0x0005c706 pop {r3, r4, r5, r6, r7, pc} |
| }
| if (r1 == 0) {
0x0005c708 cbz r1, 0x5c736 | goto label_10;
| }
| label_3:
0x0005c70a ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0005c70c cmp r3, 0 |
0x0005c70e itt gt |
| if (r3 <= 0) {
0x0005c710 addgt r6, r5, 8 | r6 = r5 + 8;
| }
| if (r3 > 0) {
0x0005c714 movs r4, 0 | r4 = 0;
| }
| if (r4 <= 0) {
0x0005c716 ble 0x5c72a | goto label_11;
| }
| do {
0x0005c718 ldr r0, [r6, 4]! | r0 = *((r6 += 4));
0x0005c71c adds r4, 1 | r4++;
| if (r0 != 0) {
0x0005c71e cbz r0, 0x5c726 |
0x0005c720 bl 0x5c458 | fcn_0005c458 (r0, r1);
0x0005c724 ldr r3, [r5, 8] | r3 = *((r5 + 8));
| }
0x0005c726 cmp r4, r3 |
0x0005c728 blt 0x5c718 |
| } while (r4 < r3);
| label_11:
0x0005c72a ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0005c72c blx 0x84f8 | fcn_000084f8 ();
0x0005c730 mov r0, r5 | r0 = r5;
0x0005c732 blx 0x84f8 | fcn_000084f8 ();
| label_10:
0x0005c736 cbz r7, 0x5c73e |
| while (1) {
0x0005c738 mov r0, r7 | r0 = r7;
0x0005c73a bl 0x5c458 | fcn_0005c458 (r0, r1);
0x0005c73e movs r0, 0 | r0 = 0;
0x0005c740 pop {r3, r4, r5, r6, r7, pc} |
| label_4:
0x0005c742 mov r0, r1 | r0 = r1;
0x0005c744 pop {r3, r4, r5, r6, r7, pc} |
| label_5:
0x0005c746 movs r0, 0x30 | r0 = 0x30;
0x0005c748 movs r1, 0 | r1 = 0;
0x0005c74a blx 0x7f18 | r0 = fcn_00007f18 ();
0x0005c74e mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0005c750 cbz r0, 0x5c7ac |
0x0005c752 movs r2, 0x30 | r2 = 0x30;
0x0005c754 mov r1, r4 | r1 = r4;
0x0005c756 blx 0x8264 | fcn_00008264 ();
| label_7:
0x0005c75a adds r3, r4, 1 | r3 = r4 + 1;
0x0005c75c b 0x5c6fc | goto label_0;
| label_6:
0x0005c75e add.w r2, r4, 0xc | r2 = r4 + 0xc;
0x0005c762 mov r0, r1 | r0 = r1;
0x0005c764 lsls r2, r2, 2 | r2 <<= 2;
0x0005c766 blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 == 0) {
0x0005c76a cbz r0, 0x5c7b2 | goto label_12;
| }
0x0005c76c ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x0005c76e mov r5, r0 | r5 = r0;
0x0005c770 b 0x5c6e4 | goto label_1;
| label_8:
0x0005c772 mov r0, r7 | r0 = r7;
0x0005c774 mov r7, r2 | r7 = r2;
0x0005c776 bl 0x5c458 | fcn_0005c458 (r0, r1);
0x0005c77a ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0005c77c mov r0, r5 | r0 = r5;
0x0005c77e ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0005c780 subs r4, r3, 1 | r4 = r3 - 1;
0x0005c782 subs r2, 1 | r2--;
0x0005c784 str r4, [r5, 8] | *((r5 + 8)) = r4;
0x0005c786 str r2, [r6, 0xc] | *((r6 + 0xc)) = r2;
0x0005c788 b 0x5c6fe | goto label_2;
| label_9:
0x0005c78a mov r0, r2 | r0 = r2;
0x0005c78c bl 0x5c458 | fcn_0005c458 (r0, r1);
0x0005c790 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0005c792 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0005c794 ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0005c796 add.w r1, r2, 0x40000000 | r1 = r2 + 0x40000000;
0x0005c79a subs r2, 1 | r2--;
0x0005c79c subs r1, 2 | r1 -= 2;
0x0005c79e subs r4, r3, 1 | r4 = r3 - 1;
0x0005c7a0 str.w r7, [r0, r1, lsl 2] | __asm ("str.w r7, [r0, r1, lsl 2]");
0x0005c7a4 mov r0, r5 | r0 = r5;
0x0005c7a6 str r2, [r6, 0xc] | *((r6 + 0xc)) = r2;
0x0005c7a8 str r4, [r5, 8] | *((r5 + 8)) = r4;
0x0005c7aa b 0x5c6fe | goto label_2;
| }
0x0005c7ac movs r3, 7 | r3 = 7;
0x0005c7ae str r3, [r6, 8] | *((r6 + 8)) = r3;
0x0005c7b0 b 0x5c738 |
| }
| label_12:
0x0005c7b2 movs r3, 7 | r3 = 7;
0x0005c7b4 str r3, [r6, 8] | *((r6 + 8)) = r3;
0x0005c7b6 b 0x5c70a | 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/libsqlite3.so.0.8.6 @ 0x5c814 */
| #include <stdint.h>
|
; (fcn) fcn.0005c814 () | void fcn_0005c814 (int16_t arg_ch, int16_t arg_48h, int16_t arg1, uint32_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;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0005c814 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005c818 sub sp, 0x24 |
0x0005c81a ldr.w sb, [r0, 8] | sb = *((r0 + 8));
0x0005c81e mov r5, r2 | r5 = r2;
0x0005c820 mov r6, r3 | r6 = r3;
0x0005c822 ldr r4, [sp, 0x48] | r4 = *(arg_48h);
0x0005c824 cmp.w sb, 0 |
| if (sb == 0) {
0x0005c828 bne 0x5c8a4 |
0x0005c82a cmp r1, 9 |
0x0005c82c it eq |
| if (r1 == 9) {
0x0005c82e cmpeq r4, 0 | __asm ("cmpeq r4, 0");
| }
0x0005c830 mov sl, r1 | sl = r1;
| if (r1 == 9) {
0x0005c832 beq 0x5c8ee | goto label_14;
| }
0x0005c834 subs.w r3, r1, 9 | r3 = r1 - 9;
0x0005c838 mov r8, r6 | r8 = r6;
0x0005c83a it ne |
| if (r3 == r1) {
0x0005c83c movne r3, 1 | r3 = 1;
| }
0x0005c83e cmp r2, 0 |
0x0005c840 ite ne |
| if (r2 == 0) {
0x0005c842 movne r2, 0 | r2 = 0;
| }
| if (r2 != 0) {
0x0005c844 andeq r2, r3, 1 | r2 = r3 & 1;
| }
0x0005c848 cmp r2, 0 |
| if (r2 != 0) {
0x0005c84a bne 0x5c8e6 | goto label_1;
| }
0x0005c84c cmp r6, 0 |
0x0005c84e ite ne |
| if (r6 == 0) {
0x0005c850 movne r3, 0 | r3 = 0;
| }
| if (r6 != 0) {
0x0005c852 andeq r3, r3, 1 | r3 &= 1;
| }
0x0005c856 mov r8, r5 | r8 = r5;
0x0005c858 cmp r3, 0 |
| if (r3 != 0) {
0x0005c85a bne 0x5c8e6 | goto label_1;
| }
0x0005c85c cmp r1, 9 |
0x0005c85e mov r7, r0 | r7 = r0;
| if (r1 == 9) {
0x0005c860 beq 0x5c8fa | goto label_15;
| }
0x0005c862 cmp r1, 3 |
| if (r1 == 3) {
0x0005c864 beq 0x5c952 | goto label_16;
| }
0x0005c866 subs r3, r1, 1 | r3 = r1 - 1;
0x0005c868 cmp r3, 1 |
| if (r3 > 1) {
0x0005c86a bhi 0x5c8fe | goto label_3;
| }
0x0005c86c ldr r3, [r5] | r3 = *(r5);
0x0005c86e ldr r2, [r6] | r2 = *(r6);
0x0005c870 cmp r3, r1 |
0x0005c872 itet eq |
| if (r3 != r1) {
0x0005c874 ldreq r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
| }
| if (r3 == r1) {
0x0005c876 movne r3, 2 | r3 = 2;
| }
| if (r3 != r1) {
0x0005c878 addeq r3, 1 | r3++;
| }
0x0005c87a cmp r2, r1 |
| if (r2 == r1) {
0x0005c87c bne 0x5c884 |
0x0005c87e ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x0005c880 subs r2, 1 | r2--;
0x0005c882 add r3, r2 | r3 += r2;
| }
0x0005c884 adds r3, 9 | r3 += 9;
0x0005c886 movs r1, 0 | r1 = 0;
0x0005c888 lsl.w sb, r3, 2 | sb = r3 << 2;
0x0005c88c mov r0, sb | r0 = sb;
0x0005c88e blx 0x7f18 | r0 = fcn_00007f18 ();
0x0005c892 mov r8, r0 | r8 = r0;
0x0005c894 cmp r0, 0 |
| if (r0 != 0) {
0x0005c896 bne.w 0x5cafe | goto label_17;
| }
0x0005c89a cmp.w sb, 0 |
| if (sb == 0) {
0x0005c89e beq 0x5c8a6 | goto label_4;
| }
| label_0:
0x0005c8a0 movs r3, 7 | r3 = 7;
0x0005c8a2 str r3, [r7, 8] | *((r7 + 8)) = r3;
| }
| if (r5 != 0) {
0x0005c8a4 cbz r5, 0x5c8ac |
| label_4:
0x0005c8a6 mov r0, r5 | r0 = r5;
0x0005c8a8 bl 0x5c66c | fcn_0005c66c (r0);
| }
| if (r6 != 0) {
| label_5:
0x0005c8ac cbz r6, 0x5c8b4 |
0x0005c8ae mov r0, r6 | r0 = r6;
0x0005c8b0 bl 0x5c66c | fcn_0005c66c (r0);
| }
| if (r4 == 0) {
0x0005c8b4 cbz r4, 0x5c8ee | goto label_14;
| }
0x0005c8b6 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0005c8b8 cmp r2, 0 |
0x0005c8ba itt gt |
| if (r2 <= 0) {
0x0005c8bc addgt r6, r4, 8 | r6 = r4 + 8;
| }
| if (r2 > 0) {
0x0005c8c0 movs r5, 0 | r5 = 0;
| }
| if (r5 <= 0) {
0x0005c8c2 ble 0x5c8d6 | goto label_18;
| }
| do {
0x0005c8c4 ldr r0, [r6, 4]! | r0 = *((r6 += 4));
0x0005c8c8 adds r5, 1 | r5++;
| if (r0 != 0) {
0x0005c8ca cbz r0, 0x5c8d2 |
0x0005c8cc bl 0x5c458 | fcn_0005c458 (r0, r1);
0x0005c8d0 ldr r2, [r4, 8] | r2 = *((r4 + 8));
| }
0x0005c8d2 cmp r5, r2 |
0x0005c8d4 blt 0x5c8c4 |
| } while (r5 < r2);
| label_18:
0x0005c8d6 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0005c8d8 mov.w r8, 0 | r8 = 0;
0x0005c8dc blx 0x84f8 | fcn_000084f8 ();
0x0005c8e0 mov r0, r4 | r0 = r4;
0x0005c8e2 blx 0x84f8 | fcn_000084f8 ();
| label_1:
0x0005c8e6 mov r0, r8 | r0 = r8;
0x0005c8e8 add sp, 0x24 |
0x0005c8ea pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x0005c8ee mov.w r8, 0 | r8 = 0;
0x0005c8f2 mov r0, r8 | r0 = r8;
0x0005c8f4 add sp, 0x24 |
0x0005c8f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x0005c8fa ldr r3, [r0, 0x18] | r3 = *((r0 + 0x18));
| if (r3 != 0) {
0x0005c8fc cbnz r3, 0x5c95c | goto label_19;
| }
| label_3:
0x0005c8fe mov.w fp, 0x24 |
0x0005c902 movs r0, 0x24 | r0 = 0x24;
0x0005c904 movs r1, 0 | r1 = 0;
| label_2:
0x0005c906 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0005c90a mov r8, r0 | r8 = r0;
0x0005c90c cmp r0, 0 |
| if (r0 == 0) {
0x0005c90e beq 0x5c8a0 | goto label_0;
| }
0x0005c910 mov r2, fp | r2 = fp;
0x0005c912 movs r1, 0 | r1 = 0;
0x0005c914 blx 0x8264 | fcn_00008264 ();
0x0005c918 cmp.w sl, 2 |
0x0005c91c str.w sl, [r8] | __asm ("str.w sl, [r8]");
0x0005c920 str.w r4, [r8, 0x18] | __asm ("str.w r4, [r8, 0x18]");
| if (sl == 2) {
0x0005c924 beq.w 0x5cb16 | goto label_20;
| }
0x0005c928 cmp.w sl, 9 |
| if (sl == 9) {
0x0005c92c beq.w 0x5ca90 | goto label_21;
| }
| label_7:
0x0005c930 cmp.w sl, 1 |
| if (sl == 1) {
0x0005c934 beq.w 0x5caf4 | goto label_22;
| }
0x0005c938 ldr r3, [pc, 0x2a4] |
0x0005c93a add r3, pc | r3 = 0xb951e;
0x0005c93c str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
| label_6:
0x0005c940 mov r1, r5 | r1 = r5;
0x0005c942 mov r0, r8 | r0 = r8;
0x0005c944 bl 0xf7dc | fcn_0000f7dc (r0, r1);
0x0005c948 mov r1, r6 | r1 = r6;
0x0005c94a mov r0, r8 | r0 = r8;
0x0005c94c bl 0xf7dc | fcn_0000f7dc (r0, r1);
0x0005c950 b 0x5c8e6 | goto label_1;
| label_16:
0x0005c952 mov.w fp, 0x2c |
0x0005c956 movs r0, 0x2c | r0 = 0x2c;
0x0005c958 movs r1, 0 | r1 = 0;
0x0005c95a b 0x5c906 | goto label_2;
| label_19:
0x0005c95c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0005c95e ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0005c960 cmp r3, 1 |
0x0005c962 mov fp, r3 |
| if (r3 <= 1) {
0x0005c964 ble 0x5c8fe | goto label_3;
| }
0x0005c966 add.w sl, r3, 0xa | sl = r3 + 0xa;
0x0005c96a lsl.w sl, sl, 2 | sl <<= 2;
0x0005c96e asr.w r1, sl, 0x1f | r1 = sl >> 0x1f;
0x0005c972 mov r0, sl | r0 = sl;
0x0005c974 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0005c978 mov r8, r0 | r8 = r0;
0x0005c97a cmp r0, 0 |
| if (r0 == 0) {
0x0005c97c beq.w 0x5cb58 | goto label_23;
| }
0x0005c980 mov r2, sl | r2 = sl;
0x0005c982 mov r1, sb | r1 = sb;
0x0005c984 blx 0x8264 | fcn_00008264 ();
0x0005c988 movs r3, 2 | r3 = 2;
0x0005c98a str.w fp, [r8, 0x1c] | __asm ("str.w fp, [r8, 0x1c]");
0x0005c98e str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0005c992 mov r2, fp | r2 = fp;
0x0005c994 ldr.w fp, [r7, 8] | fp = *((r7 + 8));
0x0005c998 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x0005c99a ldr r1, [pc, 0x248] |
0x0005c99c strd r8, r5, [sp, 0xc] | __asm ("strd r8, r5, [var_ch]");
0x0005c9a0 mov r5, fp | r5 = fp;
0x0005c9a2 str r6, [sp, 0x14] | var_14h = r6;
0x0005c9a4 mov fp, r4 |
0x0005c9a6 mov r6, r2 | r6 = r2;
0x0005c9a8 subs r3, 1 | r3--;
0x0005c9aa add r1, pc | r1 = 0xb9594;
0x0005c9ac str.w r1, [r8, 0xc] | __asm ("str.w r1, [r8, 0xc]");
0x0005c9b0 str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
| do {
0x0005c9b2 cmp r5, 0 |
| if (r5 != 0) {
0x0005c9b4 bne.w 0x5cb40 | goto label_24;
| }
0x0005c9b8 movs r0, 0x24 | r0 = 0x24;
0x0005c9ba movs r1, 0 | r1 = 0;
0x0005c9bc blx 0x7f18 | r0 = fcn_00007f18 ();
0x0005c9c0 mov r4, r0 | r4 = r0;
0x0005c9c2 cmp r0, 0 |
| if (r0 == 0) {
0x0005c9c4 beq.w 0x5cb2c | goto label_25;
| }
0x0005c9c8 movs r2, 0x24 | r2 = 0x24;
0x0005c9ca mov r1, r5 | r1 = r5;
0x0005c9cc blx 0x8264 | fcn_00008264 ();
0x0005c9d0 ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x0005c9d2 lsls r3, r2, 0x1d | r3 = r2 << 0x1d;
| if (r3 == r2) {
0x0005c9d4 beq.w 0x5cb7a | goto label_26;
| }
0x0005c9d8 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
| label_11:
0x0005c9da movs r3, 1 | r3 = 1;
0x0005c9dc adds r1, r2, 1 | r1 = r2 + 1;
0x0005c9de str r1, [r7, 0xc] | *((r7 + 0xc)) = r1;
0x0005c9e0 str.w r4, [r0, r2, lsl 2] | __asm ("str.w r4, [r0, r2, lsl 2]");
0x0005c9e4 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x0005c9e6 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0005c9e8 str r3, [sp, 0x18] | var_18h = r3;
0x0005c9ea cmp r3, 0 |
| if (r3 != 0) {
0x0005c9ec bne.w 0x5cbd2 | goto label_27;
| }
0x0005c9f0 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x0005c9f4 add.w sl, sb, 1 | sl = sb + 1;
0x0005c9f8 add.w r3, r3, sl, lsl 4 | r3 += (sl << 4);
0x0005c9fc ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0005c9fe mov r0, r1 | r0 = r1;
0x0005ca00 str r1, [sp, 0x1c] | var_1ch = r1;
0x0005ca02 blx 0x8160 | r0 = fcn_00008160 ();
0x0005ca06 mov r8, r0 | r8 = r0;
0x0005ca08 adds r0, 1 | r0++;
0x0005ca0a blx 0x85dc | r0 = fcn_000085dc ();
0x0005ca0e mov r5, r0 | r5 = r0;
0x0005ca10 cmp r0, 0 |
| if (r0 == 0) {
0x0005ca12 beq.w 0x5cbda | goto label_28;
| }
0x0005ca16 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0005ca18 mov r2, r8 | r2 = r8;
0x0005ca1a blx 0x7dcc | fcn_00007dcc ();
0x0005ca1e ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005ca20 strb.w r3, [r5, r8] | *((r5 + r8)) = r3;
| label_13:
0x0005ca24 mov r2, r4 | r2 = r4;
0x0005ca26 movs r1, 0 | r1 = 0;
0x0005ca28 str r5, [r4, 0x18] | *((r4 + 0x18)) = r5;
0x0005ca2a mov r0, r7 | r0 = r7;
0x0005ca2c bl 0x5c6c8 | fcn_0005c6c8 (r0, r1, r2);
0x0005ca30 movs r3, 0 | r3 = 0;
0x0005ca32 str r0, [sp] | *(sp) = r0;
0x0005ca34 mov r2, r3 | r2 = r3;
0x0005ca36 movs r1, 9 | r1 = 9;
0x0005ca38 mov r0, r7 | r0 = r7;
0x0005ca3a bl 0x5c814 | fcn_0005c814 (r0, r1, r2, r3, r4, r5);
0x0005ca3e ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005ca40 ldr r5, [r7, 8] | r5 = *((r7 + 8));
0x0005ca42 adds r3, 0x20 | r3 += 0x20;
0x0005ca44 str.w r0, [r3, sb, lsl 2] | __asm ("str.w r0, [r3, sb, lsl 2]");
| label_9:
0x0005ca48 cmp r6, sl |
0x0005ca4a mov sb, sl | sb = sl;
0x0005ca4c bne 0x5c9b2 |
| } while (r6 != sl);
0x0005ca4e mov r4, fp | r4 = fp;
0x0005ca50 mov fp, r5 |
0x0005ca52 ldr.w r8, [sp, 0xc] | r8 = var_ch;
0x0005ca56 ldr r6, [sp, 0x14] | r6 = var_14h;
0x0005ca58 ldr r5, [sp, 0x10] | r5 = var_10h;
0x0005ca5a cmp.w fp, 0 |
| if (fp != 0) {
0x0005ca5e bne.w 0x5cbc4 | goto label_29;
| }
0x0005ca62 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0005ca64 cmp r2, 0 |
0x0005ca66 it gt |
| if (r2 <= 0) {
0x0005ca68 addgt r5, r4, 8 | r5 = r4 + 8;
| }
| if (r2 <= 0) {
0x0005ca6c ble 0x5ca82 | goto label_30;
| }
| do {
0x0005ca6e ldr r0, [r5, 4]! | r0 = *((r5 += 4));
0x0005ca72 add.w fp, fp, 1 |
| if (r0 != 0) {
0x0005ca76 cbz r0, 0x5ca7e |
0x0005ca78 bl 0x5c458 | fcn_0005c458 (r0, r1);
0x0005ca7c ldr r2, [r4, 8] | r2 = *((r4 + 8));
| }
0x0005ca7e cmp fp, r2 |
0x0005ca80 blt 0x5ca6e |
| } while (fp < r2);
| label_30:
0x0005ca82 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0005ca84 blx 0x84f8 | fcn_000084f8 ();
0x0005ca88 mov r0, r4 | r0 = r4;
0x0005ca8a blx 0x84f8 | fcn_000084f8 ();
0x0005ca8e b 0x5c8e6 | goto label_1;
| label_21:
0x0005ca90 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0005ca92 cmp r0, 1 |
| if (r0 == 1) {
0x0005ca94 beq 0x5cb46 | goto label_31;
| }
0x0005ca96 ldr r3, [pc, 0x150] |
0x0005ca98 cmp r0, 0 |
0x0005ca9a add r3, pc | r3 = 0xb9688;
0x0005ca9c str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
| if (r0 <= 0) {
0x0005caa0 ble 0x5cac4 | goto label_32;
| }
| label_10:
0x0005caa2 mov ip, r0 |
0x0005caa4 add.w r1, r4, 8 | r1 = r4 + 8;
0x0005caa8 mov r0, r8 | r0 = r8;
| do {
0x0005caaa ldr r2, [r1, 4]! | r2 = *((r1 += 4));
0x0005caae add.w sb, sb, 1 | sb++;
0x0005cab2 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x0005cab4 str r0, [r2] | *(r2) = r0;
| if (r3 == 0) {
0x0005cab6 cbnz r3, 0x5cabc |
0x0005cab8 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x0005caba str r3, [r0] | *(r0) = r3;
| }
0x0005cabc cmp sb, ip |
0x0005cabe blt 0x5caaa |
| } while (sb < ip);
0x0005cac0 mov r8, r0 | r8 = r0;
0x0005cac2 mov r0, ip | r0 = ip;
| label_32:
0x0005cac4 ldr r3, [r7] | r3 = *(r7);
0x0005cac6 ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x0005cac8 cmp r3, 0 |
| if (r3 == 0) {
0x0005caca beq.w 0x5c8e6 | goto label_1;
| }
0x0005cace cmp r0, 1 |
0x0005cad0 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
| if (r0 == 1) {
0x0005cad2 beq 0x5cb20 | goto label_33;
| }
0x0005cad4 ldr r1, [pc, 0x114] |
0x0005cad6 add r1, pc | r1 = 0xb96c6;
| label_8:
0x0005cad8 ldr r0, [pc, 0x114] |
0x0005cada movs r3, 1 | r3 = 1;
0x0005cadc str r3, [r7, 8] | *((r7 + 8)) = r3;
0x0005cade add r0, pc | r0 = 0xb96d2;
0x0005cae0 blx 0x852c | strncmp (r0, r1, r2);
0x0005cae4 str r0, [r7, 4] | *((r7 + 4)) = r0;
0x0005cae6 mov r0, r8 | r0 = r8;
0x0005cae8 blx 0x84f8 | fcn_000084f8 ();
0x0005caec cmp r5, 0 |
| if (r5 != 0) {
0x0005caee bne.w 0x5c8a6 | goto label_4;
| }
0x0005caf2 b 0x5c8ac | goto label_5;
| label_22:
0x0005caf4 ldr r3, [pc, 0xfc] |
0x0005caf6 add r3, pc | r3 = 0xb96ee;
0x0005caf8 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x0005cafc b 0x5c940 | goto label_6;
| label_17:
0x0005cafe mov r2, sb | r2 = sb;
0x0005cb00 movs r1, 0 | r1 = 0;
0x0005cb02 blx 0x8264 | fcn_00008264 ();
0x0005cb06 cmp.w sl, 2 |
0x0005cb0a str.w sl, [r8] | __asm ("str.w sl, [r8]");
0x0005cb0e str.w r4, [r8, 0x18] | __asm ("str.w r4, [r8, 0x18]");
| if (sl != 2) {
0x0005cb12 bne.w 0x5c930 | goto label_7;
| }
| label_20:
0x0005cb16 ldr r3, [pc, 0xe0] |
0x0005cb18 add r3, pc | r3 = 0xb9716;
0x0005cb1a str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x0005cb1e b 0x5c940 | goto label_6;
| label_33:
0x0005cb20 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x0005cb22 cmp r2, 1 |
| if (r2 <= 1) {
0x0005cb24 ble 0x5cb68 | goto label_34;
| }
0x0005cb26 ldr r1, [pc, 0xd4] |
0x0005cb28 add r1, pc | r1 = 0xb972a;
0x0005cb2a b 0x5cad8 | goto label_8;
| label_25:
0x0005cb2c add.w r2, sb, 1 | r2 = sb + 1;
0x0005cb30 movs r5, 7 | r5 = 7;
0x0005cb32 cmp r6, r2 |
0x0005cb34 str r5, [r7, 8] | *((r7 + 8)) = r5;
| if (r6 == r2) {
0x0005cb36 beq 0x5cbbc | goto label_35;
| }
0x0005cb38 add.w sb, sb, 2 | sb += 2;
0x0005cb3c cmp r6, sb |
| if (r6 == sb) {
0x0005cb3e beq 0x5cbbc | goto label_35;
| }
| label_24:
0x0005cb40 add.w sl, sb, 1 | sl = sb + 1;
0x0005cb44 b 0x5ca48 | goto label_9;
| label_31:
0x0005cb46 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0005cb48 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x0005cb4a cmp r2, 1 |
| if (r2 == 1) {
0x0005cb4c beq 0x5cba0 | goto label_36;
| }
| label_12:
0x0005cb4e ldr r3, [pc, 0xb0] |
0x0005cb50 add r3, pc | r3 = 0xb9756;
0x0005cb52 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x0005cb56 b 0x5caa2 | goto label_10;
| label_23:
0x0005cb58 cmp.w sl, 0 |
| if (sl > 0) {
0x0005cb5c bgt.w 0x5c8a0 | goto label_0;
| }
0x0005cb60 cmp r5, 0 |
| if (r5 != 0) {
0x0005cb62 bne.w 0x5c8a6 | goto label_4;
| }
0x0005cb66 b 0x5c8ac | goto label_5;
| if (r5 != 0) {
| label_34:
0x0005cb68 bne.w 0x5c8e6 | goto label_1;
| }
0x0005cb6c ldrb r3, [r3, 0x15] | r3 = *((r3 + 0x15));
0x0005cb6e cmp r3, 0 |
| if (r3 == 0) {
0x0005cb70 beq.w 0x5c8e6 | goto label_1;
| }
0x0005cb74 ldr r1, [pc, 0x8c] |
0x0005cb76 add r1, pc | r1 = 0xb977e;
0x0005cb78 b 0x5cad8 | goto label_8;
| label_26:
0x0005cb7a adds r2, 8 | r2 += 8;
0x0005cb7c ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x0005cb7e lsls r2, r2, 2 | r2 <<= 2;
0x0005cb80 mov r3, r5 | r3 = r5;
0x0005cb82 blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 != 0) {
0x0005cb86 cbz r0, 0x5cb8e |
0x0005cb88 ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x0005cb8a str r0, [r7, 0x10] | *((r7 + 0x10)) = r0;
0x0005cb8c b 0x5c9da | goto label_11;
| }
0x0005cb8e movs r3, 7 | r3 = 7;
0x0005cb90 mov r0, r4 | r0 = r4;
0x0005cb92 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x0005cb94 add.w sl, sb, 1 | sl = sb + 1;
0x0005cb98 bl 0x5c458 | fcn_0005c458 (r0, r1);
0x0005cb9c ldr r5, [r7, 8] | r5 = *((r7 + 8));
0x0005cb9e b 0x5ca48 | goto label_9;
| label_36:
0x0005cba0 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x0005cba2 cmp r2, 0 |
| if (r2 != 0) {
0x0005cba4 bne 0x5cb4e | goto label_12;
| }
0x0005cba6 ldrb r3, [r3, 0x15] | r3 = *((r3 + 0x15));
0x0005cba8 cmp r3, 0 |
| if (r3 != 0) {
0x0005cbaa bne 0x5cb4e | goto label_12;
| }
0x0005cbac ldr r3, [pc, 0x58] |
0x0005cbae add r3, pc | r3 = 0xb97ba;
0x0005cbb0 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x0005cbb4 movs r3, 4 | r3 = 4;
0x0005cbb6 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0005cbb8 adds r0, 0 | r0 += 0;
0x0005cbba b 0x5caa2 | goto label_10;
| label_35:
0x0005cbbc ldrd r8, r5, [sp, 0xc] | __asm ("ldrd r8, r5, [var_ch]");
0x0005cbc0 mov r4, fp | r4 = fp;
0x0005cbc2 ldr r6, [sp, 0x14] | r6 = var_14h;
| label_29:
0x0005cbc4 mov r0, r8 | r0 = r8;
0x0005cbc6 bl 0x5c66c | fcn_0005c66c (r0);
0x0005cbca cmp r5, 0 |
| if (r5 != 0) {
0x0005cbcc bne.w 0x5c8a6 | goto label_4;
| }
0x0005cbd0 b 0x5c8ac | goto label_5;
| label_27:
0x0005cbd2 movs r5, 0 | r5 = 0;
0x0005cbd4 add.w sl, sb, 1 | sl = sb + 1;
0x0005cbd8 b 0x5ca24 | goto label_13;
| label_28:
0x0005cbda movs r2, 7 | r2 = 7;
0x0005cbdc str r2, [r7, 8] | *((r7 + 8)) = r2;
0x0005cbde b 0x5ca24 | goto label_13;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5dbc4 */
| #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) fcn.0005dbc4 () | void fcn_0005dbc4 (int16_t arg_bh, int16_t arg_ch, int16_t arg_dh, int16_t arg_70h, int16_t arg_74h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_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;
| int16_t var_38h;
| int32_t var_38h_2;
| int16_t var_44h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0005dbc4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005dbc8 sub sp, 0x4c |
0x0005dbca strd r2, r3, [sp, 0x18] | __asm ("strd r2, r3, [var_18h]");
0x0005dbce mov r7, r0 | r7 = r0;
0x0005dbd0 mov fp, r1 |
0x0005dbd2 ldr r2, [pc, 0x3d4] |
0x0005dbd4 ldr r3, [pc, 0x3d4] | r3 = *(0x5dfac);
0x0005dbd6 add r2, pc | r2 = 0xbbb84;
0x0005dbd8 ldr r3, [r2, r3] |
0x0005dbda ldr r3, [r3] | r3 = *(0xbbb84);
0x0005dbdc str r3, [sp, 0x44] | var_44h = r3;
0x0005dbde mov.w r3, 0 | r3 = 0;
0x0005dbe2 ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x0005dbe4 str r3, [sp, 0x20] | var_20h = r3;
0x0005dbe6 cmp r1, 0 |
| if (r1 == 0) {
0x0005dbe8 beq.w 0x5dd80 | goto label_16;
| }
0x0005dbec ldr r3, [r1] | r3 = *(r1);
0x0005dbee ldrh r2, [r3, 8] | r2 = *((r3 + 8));
0x0005dbf0 cmp r2, 0xd |
0x0005dbf2 bls 0x5dc2e |
| while ((r1 & 0x39) != 0) {
| label_0:
0x0005dbf4 ldr r3, [pc, 0x3b8] |
0x0005dbf6 add r3, pc | r3 = 0xbbbaa;
0x0005dbf8 str r3, [sp, 8] | var_8h = r3;
| label_1:
0x0005dbfa movs r3, 0 | r3 = 0;
0x0005dbfc strb.w r3, [fp, 0xb] | *(arg_bh) = r3;
| label_4:
0x0005dc00 mov r0, r7 | r0 = r7;
0x0005dc02 bl 0x2c634 | fcn_0002c634 (r0);
0x0005dc06 str r0, [sp, 0x10] | var_10h = r0;
| if (r0 == 0) {
0x0005dc08 cbz r0, 0x5dc66 | goto label_17;
| }
0x0005dc0a cmp r0, 0x10 |
| if (r0 == 0x10) {
0x0005dc0c beq.w 0x5deb8 | goto label_18;
| }
| label_3:
0x0005dc10 ldr r2, [pc, 0x3a0] |
0x0005dc12 ldr r3, [pc, 0x398] | r3 = *(0x5dfae);
0x0005dc14 add r2, pc | r2 = 0xbbbcc;
0x0005dc16 ldr r3, [r2, r3] | r3 = *(0xbbbcc);
0x0005dc18 ldr r2, [r3] | r2 = *(0xbbbcc);
0x0005dc1a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0005dc1c eors r2, r3 | r2 ^= r3;
0x0005dc1e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005dc22 bne.w 0x5df8a | goto label_19;
| }
0x0005dc26 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0005dc28 add sp, 0x4c |
0x0005dc2a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0005dc2e ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x0005dc30 ldr.w r1, [fp, 4] | r1 = *(arg_74h);
0x0005dc34 ldrb r2, [r2] | r2 = *(r2);
0x0005dc36 ldrh r1, [r1, 8] | r1 = *((r1 + 8));
0x0005dc38 cmp r2, 0 |
| if (r2 != 0) {
0x0005dc3a bne.w 0x5dde4 | goto label_20;
| }
0x0005dc3e mov.w r0, -1 | r0 = -1;
0x0005dc42 movs r2, 1 | r2 = 1;
| label_5:
0x0005dc44 strb.w r0, [fp, 0xc] | *(arg_ch) = r0;
0x0005dc48 lsls r0, r1, 0x1d | r0 = r1 << 0x1d;
0x0005dc4a strb.w r2, [fp, 0xd] | *(arg_dh) = r2;
| if (r0 < r1) {
0x0005dc4e bmi.w 0x5df12 | goto label_21;
| }
0x0005dc52 tst.w r1, 0x39 |
0x0005dc56 bne 0x5dbf4 |
| }
0x0005dc58 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0005dc5a cmp r3, 0 |
| if (r3 != 0) {
0x0005dc5c bne 0x5dbf4 | goto label_0;
| }
0x0005dc5e ldr r3, [pc, 0x358] |
0x0005dc60 add r3, pc | r3 = 0xbbc1e;
0x0005dc62 str r3, [sp, 8] | var_8h = r3;
0x0005dc64 b 0x5dbfa | goto label_1;
| label_17:
0x0005dc66 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0005dc68 rsb.w r3, r3, 1 | r3 = 1 - r3;
0x0005dc6c str r3, [sp, 0x24] | var_24h = r3;
0x0005dc6e add.w r3, r7, 0x20 | r3 = r7 + 0x20;
0x0005dc72 str r3, [sp, 0xc] | var_ch = r3;
| label_9:
0x0005dc74 ldr r5, [r7, 0x74] | r5 = *((r7 + 0x74));
0x0005dc76 mov.w sb, 0 | sb = 0;
0x0005dc7a ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005dc7c ldrh r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x0005dc7e ldrh r3, [r5, 0x1a] | r3 = *((r5 + 0x1a));
0x0005dc80 ldr r4, [r5, 0x44] | r4 = *((r5 + 0x44));
0x0005dc82 add.w r8, r2, -1 | r8 = r2 + -1;
0x0005dc86 asr.w r6, r8, r1 | r6 = r8 >> r1;
0x0005dc8a ldr r1, [sp, 8] | r1 = var_8h;
0x0005dc8c str r3, [sp, 0x14] | var_14h = r3;
0x0005dc8e ldr r3, [r5, 0x40] | r3 = *((r5 + 0x40));
0x0005dc90 strh.w r6, [r7, 0x46] | *((r7 + 0x46)) = r6;
| if (r1 != 0) {
0x0005dc94 cbnz r1, 0x5dcc4 | goto label_22;
| }
0x0005dc96 b 0x5ddf2 | goto label_23;
| do {
0x0005dc98 adds r1, r3, 1 | r1 = r3 + 1;
0x0005dc9a mov r2, fp | r2 = fp;
0x0005dc9c ldr r3, [sp, 8] | r3 = var_8h;
0x0005dc9e blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0005dca0 mov r4, r0 | r4 = r0;
| label_2:
0x0005dca2 cmp r4, 0 |
0x0005dca4 it lt |
| if (r4 >= 0) {
0x0005dca6 addlt sb, r6, 1 | sb = r6 + 1;
| }
| if (r4 >= 0) {
0x0005dcaa blt 0x5dcb4 |
| if (r4 == 0) {
0x0005dcac beq.w 0x5deee | goto label_24;
| }
0x0005dcb0 add.w r8, r6, -1 | r8 = r6 + -1;
| }
0x0005dcb4 cmp sb, r8 |
| if (sb > r8) {
0x0005dcb6 bgt.w 0x5de8a | goto label_14;
| }
0x0005dcba add.w r6, sb, r8 | r6 = sb + r8;
0x0005dcbe ldrd r3, r4, [r5, 0x40] | __asm ("ldrd r3, r4, [r5, 0x40]");
0x0005dcc2 asrs r6, r6, 1 | r6 >>= 1;
| label_22:
0x0005dcc4 ldrh.w r2, [r3, r6, lsl 1] | offset_0 = r6 << 1;
| r2 = *((r3 + offset_0));
0x0005dcc8 ldrh r3, [r5, 0x1a] | r3 = *((r5 + 0x1a));
0x0005dcca rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0005dccc ands r3, r2 | r3 &= r2;
0x0005dcce ldrb r2, [r5, 0xb] | r2 = *((r5 + 0xb));
0x0005dcd0 ldrb r0, [r4, r3] | r0 = *((r4 + r3));
0x0005dcd2 add r3, r4 | r3 += r4;
0x0005dcd4 cmp r2, r0 |
0x0005dcd6 bhs 0x5dc98 |
| } while (r2 >= r0);
0x0005dcd8 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0005dcda lsls r1, r2, 0x18 | r1 = r2 << 0x18;
| if (r1 >= r2) {
0x0005dcdc bmi 0x5dcf8 |
0x0005dcde lsls r0, r0, 7 | r0 <<= 7;
0x0005dce0 and r0, r0, 0x3f80 | r0 &= 0x3f80;
0x0005dce4 add r0, r2 | r0 += r2;
0x0005dce6 ldrh r2, [r5, 0xe] | r2 = *((r5 + 0xe));
0x0005dce8 cmp r2, r0 |
| if (r2 < r0) {
0x0005dcea blt 0x5dcf8 | goto label_25;
| }
0x0005dcec adds r1, r3, 2 | r1 = r3 + 2;
0x0005dcee mov r2, fp | r2 = fp;
0x0005dcf0 ldr r3, [sp, 8] | r3 = var_8h;
0x0005dcf2 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0005dcf4 mov r4, r0 | r4 = r0;
0x0005dcf6 b 0x5dca2 | goto label_2;
| }
| label_25:
0x0005dcf8 ldrb r1, [r5, 0xa] | r1 = *((r5 + 0xa));
0x0005dcfa mov r0, r5 | r0 = r5;
0x0005dcfc ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005dcfe subs r1, r3, r1 | r1 = r3 - r1;
0x0005dd00 ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x0005dd02 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005dd04 ldr.w sl, [r7, 0x20] | sl = *((r7 + 0x20));
0x0005dd08 cmp.w sl, 1 |
| if (sl <= 1) {
0x0005dd0c ble.w 0x5dec6 | goto label_26;
| }
0x0005dd10 ldr r4, [r7, 0x14] | r4 = *((r7 + 0x14));
0x0005dd12 mov r0, sl | r0 = sl;
0x0005dd14 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0005dd16 bl 0xab680 | fcn_000ab680 (r0, r1, r2);
0x0005dd1a ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0005dd1c cmp r0, r3 |
| if (r0 > r3) {
0x0005dd1e bhi.w 0x5dec6 | goto label_26;
| }
0x0005dd22 add.w r0, sl, 0x12 | r0 = sl + 0x12;
0x0005dd26 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x0005dd28 bl 0x12abc | r0 = fcn_00012abc (r0);
0x0005dd2c mov r4, r0 | r4 = r0;
0x0005dd2e cmp r0, 0 |
| if (r0 == 0) {
0x0005dd30 beq.w 0x5df1a | goto label_27;
| }
0x0005dd34 movs r3, 0 | r3 = 0;
0x0005dd36 movs r1, 0 | r1 = 0;
0x0005dd38 strh.w r6, [r7, 0x46] | *((r7 + 0x46)) = r6;
0x0005dd3c mov r2, sl | r2 = sl;
0x0005dd3e str r3, [sp] | *(sp) = r3;
0x0005dd40 mov r3, r0 | r3 = r0;
0x0005dd42 mov r0, r7 | r0 = r7;
0x0005dd44 bl 0x585f4 | fcn_000585f4 (r0, r1, r2, r3, r4);
0x0005dd48 movs r3, 0 | r3 = 0;
0x0005dd4a add.w r1, r4, sl | r1 = r4 + sl;
0x0005dd4e str.w r3, [r4, sl] | __asm ("str.w r3, [r4, sl]");
0x0005dd52 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x0005dd54 str r3, [r1, 8] | *((r1 + 8)) = r3;
0x0005dd56 str r3, [r1, 0xc] | *((r1 + 0xc)) = r3;
0x0005dd58 strh r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
0x0005dd5a ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x0005dd5c bic r3, r3, 4 | r3 = BIT_MASK (r3, 4);
0x0005dd60 strb r3, [r7, 1] | *((r7 + 1)) = r3;
0x0005dd62 mov r3, r0 | r3 = r0;
0x0005dd64 cmp r0, 0 |
| if (r0 != 0) {
0x0005dd66 bne.w 0x5df20 | goto label_28;
| }
0x0005dd6a mov r1, r4 | r1 = r4;
0x0005dd6c mov r0, sl | r0 = sl;
0x0005dd6e mov r2, fp | r2 = fp;
0x0005dd70 bl 0x353b4 | r0 = fcn_000353b4 (r0, r1, r2, r3);
0x0005dd74 mov r3, r0 | r3 = r0;
0x0005dd76 mov r0, r4 | r0 = r4;
0x0005dd78 mov r4, r3 | r4 = r3;
0x0005dd7a blx 0x84f8 | fcn_000084f8 ();
0x0005dd7e b 0x5dca2 | goto label_2;
| label_16:
0x0005dd80 ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0005dd82 cbnz r3, 0x5ddde | goto label_15;
| }
0x0005dd84 ldrb.w ip, [r0, 1] | ip = *((r0 + 1));
0x0005dd88 tst.w ip, 2 |
| if ((ip & 2) == 0) {
0x0005dd8c beq 0x5ddde | goto label_15;
| }
0x0005dd8e ldrd r4, r5, [r0, 0x20] | __asm ("ldrd r4, r5, [r0, 0x20]");
0x0005dd92 ldrd r6, r2, [sp, 0x18] | __asm ("ldrd r6, r2, [var_18h]");
0x0005dd96 cmp r5, r2 |
0x0005dd98 it eq |
| if (r5 == r2) {
0x0005dd9a cmpeq r4, r6 | __asm ("cmpeq r4, r6");
| }
| if (r5 == r2) {
0x0005dd9c beq.w 0x5df3e | goto label_29;
| }
0x0005dda0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005dda2 cmp r4, r3 |
0x0005dda4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005dda6 sbcs.w r3, r5, r3 | __asm ("sbcs.w r3, r5, r3");
| if (r4 >= r3) {
0x0005ddaa bge 0x5ddde | goto label_15;
| }
0x0005ddac tst.w ip, 8 |
| if ((ip & 8) != 0) {
0x0005ddb0 bne.w 0x5deb8 | goto label_18;
| }
0x0005ddb4 ldrd r3, r2, [sp, 0x18] | __asm ("ldrd r3, r2, [var_18h]");
0x0005ddb8 adds r4, 1 | r4++;
0x0005ddba adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x0005ddbe cmp r5, r2 |
0x0005ddc0 it eq |
| if (r5 == r2) {
0x0005ddc2 cmpeq r4, r3 | __asm ("cmpeq r4, r3");
| }
| if (r5 != r2) {
0x0005ddc4 bne 0x5ddde | goto label_15;
| }
0x0005ddc6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005ddc8 str r1, [r3] | *(r3) = r1;
0x0005ddca bl 0x5e778 | fcn_0005e778 (r0);
0x0005ddce str r0, [sp, 0x10] | var_10h = r0;
0x0005ddd0 cmp r0, 0 |
| if (r0 == 0) {
0x0005ddd2 beq.w 0x5df70 | goto label_30;
| }
0x0005ddd6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005ddd8 cmp r3, 0x65 |
| if (r3 != 0x65) {
0x0005ddda bne.w 0x5dc10 | goto label_3;
| }
| label_15:
0x0005ddde movs r3, 0 | r3 = 0;
0x0005dde0 str r3, [sp, 8] | var_8h = r3;
0x0005dde2 b 0x5dc00 | goto label_4;
| label_20:
0x0005dde4 lsls r4, r2, 0x1e | r4 = r2 << 0x1e;
| if (r4 < r2) {
0x0005dde6 bmi.w 0x5dbf4 | goto label_0;
| }
0x0005ddea movs r0, 1 | r0 = 1;
0x0005ddec mov.w r2, -1 | r2 = -1;
0x0005ddf0 b 0x5dc44 | goto label_5;
| label_23:
0x0005ddf2 ldrb r1, [r5, 3] | r1 = *((r5 + 3));
0x0005ddf4 str r7, [sp, 0x2c] | var_2ch = r7;
0x0005ddf6 mov r7, r8 | r7 = r8;
0x0005ddf8 ldr.w sb, [sp, 8] | sb = var_8h;
0x0005ddfc mov r8, r4 | r8 = r4;
0x0005ddfe ldr.w sl, [sp, 0x18] | sl = var_18h;
0x0005de02 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x0005de04 str r1, [sp, 0x28] | var_28h = r1;
0x0005de06 add r1, sp, 0x38 | r1 += var_38h;
0x0005de08 str.w fp, [sp, 0x30] | __asm ("str.w fp, [var_30h]");
0x0005de0c mov fp, r3 |
0x0005de0e str r2, [sp, 0x34] | var_34h = r2;
| do {
0x0005de10 ldrh.w r0, [fp, r6, lsl 1] | offset_1 = r6 << 1;
| r0 = *((fp + offset_1));
0x0005de14 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005de16 rev16 r0, r0 | __asm ("rev16 r0, r0");
0x0005de18 ands r0, r3 | r0 &= r3;
0x0005de1a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005de1c add r0, r8 | r0 += r8;
| if (r3 != 0) {
0x0005de1e cbnz r3, 0x5de42 | goto label_7;
| }
| label_6:
0x0005de20 bl 0x8cfc | fcn_00008cfc (r0, r1);
0x0005de24 ldrd r0, r3, [sp, 0x38] | __asm ("ldrd r0, r3, [var_38h]");
0x0005de28 cmp r0, sl |
0x0005de2a sbcs.w lr, r3, r4 | __asm ("sbcs.w lr, r3, r4");
| if (r0 >= sl) {
0x0005de2e bge 0x5de76 | goto label_31;
| }
0x0005de30 add.w sb, r6, 1 | sb = r6 + 1;
0x0005de34 cmp r7, sb |
| if (r7 < sb) {
0x0005de36 blt.w 0x5df5c | goto label_32;
| }
| label_8:
0x0005de3a add.w r6, sb, r7 | r6 = sb + r7;
0x0005de3e asrs r6, r6, 1 | r6 >>= 1;
0x0005de40 b 0x5de10 |
| } while (1);
| label_7:
0x0005de42 ldrsb r3, [r0], 1 | r3 = *(r0);
| r0++;
0x0005de46 cmp r3, 0 |
| if (r3 >= 0) {
0x0005de48 bge 0x5de20 | goto label_6;
| }
0x0005de4a ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x0005de4c cmp r3, r0 |
| if (r3 > r0) {
0x0005de4e bhi 0x5de42 | goto label_7;
| }
0x0005de50 blx 0x7f8c | fcn_00007f8c ();
0x0005de54 ldr r2, [pc, 0x164] |
0x0005de56 add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x0005de5a ldr r1, [pc, 0x164] |
0x0005de5c movw r3, 0x1565 |
0x0005de60 movt r3, 1 | r3 = 0x11565;
0x0005de64 movs r0, 0xb | r0 = 0xb;
0x0005de66 add r2, pc | r2 = 0xbbe26;
0x0005de68 str r4, [sp] | *(sp) = r4;
0x0005de6a add r1, pc | r1 = 0xbbe30;
0x0005de6c blx 0x8474 | fcn_00008474 ();
0x0005de70 movs r3, 0xb | r3 = 0xb;
0x0005de72 str r3, [sp, 0x10] | var_10h = r3;
0x0005de74 b 0x5dc10 | goto label_3;
| label_31:
0x0005de76 cmp sl, r0 |
0x0005de78 sbcs.w r2, r4, r3 | __asm ("sbcs.w r2, r4, r3");
| if (sl >= r0) {
0x0005de7c bge 0x5df46 | goto label_33;
| }
0x0005de7e subs r7, r6, 1 | r7 = r6 - 1;
0x0005de80 cmp sb, r7 |
| if (sb <= r7) {
0x0005de82 ble 0x5de3a | goto label_8;
| }
0x0005de84 ldrd r7, fp, [sp, 0x2c] | __asm ("ldrd r7, fp, [var_2ch]");
0x0005de88 movs r4, 1 | r4 = 1;
| label_14:
0x0005de8a ldrb r3, [r5, 8] | r3 = *((r5 + 8));
0x0005de8c cmp r3, 0 |
| if (r3 != 0) {
0x0005de8e bne 0x5df66 | goto label_34;
| }
0x0005de90 ldrh r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x0005de92 uxth.w r3, sb | r3 = (int16_t) sb;
| label_13:
0x0005de96 cmp sb, r2 |
0x0005de98 ldr r1, [r5, 0x38] | r1 = *((r5 + 0x38));
| if (sb < r2) {
0x0005de9a blt 0x5df00 | goto label_35;
| }
0x0005de9c ldrb r2, [r5, 9] | r2 = *((r5 + 9));
0x0005de9e add r2, r1 | r2 += r1;
0x0005dea0 ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x0005dea2 rev r1, r1 | r1 = SWAP32 (r1);
| label_10:
0x0005dea4 mov r0, r7 | r0 = r7;
0x0005dea6 strh.w r3, [r7, 0x46] | *((r7 + 0x46)) = r3;
0x0005deaa bl 0x25164 | r0 = fcn_00025164 (r0, r1);
0x0005deae cmp r0, 0 |
| if (r0 == 0) {
0x0005deb0 beq.w 0x5dc74 | goto label_9;
| }
0x0005deb4 str r0, [sp, 0x10] | var_10h = r0;
0x0005deb6 b 0x5dee8 | goto label_11;
| label_18:
0x0005deb8 movs r2, 0 | r2 = 0;
0x0005deba mov.w r3, -1 | r3 = -1;
0x0005debe str r2, [sp, 0x10] | var_10h = r2;
0x0005dec0 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005dec2 str r3, [r2] | *(r2) = r3;
0x0005dec4 b 0x5dc10 | goto label_3;
| label_26:
0x0005dec6 blx 0x7f8c | fcn_00007f8c ();
0x0005deca ldr r2, [pc, 0xf8] |
0x0005decc adds r0, 0x14 | r0 += 0x14;
0x0005dece ldr r1, [pc, 0xf8] |
0x0005ded0 movw r3, 0x15b0 | r3 = 0x15b0;
0x0005ded4 add r2, pc | r2 = "}jk\xc3\x9e\xc2\xa4\xc3\x9b\xc3\x9e";
0x0005ded6 add r1, pc | r1 = 0xbbea4;
| label_12:
0x0005ded8 movt r3, 1 | r3 = (r3 & 0xFFFF) | 0x10000;
0x0005dedc str r0, [sp] | *(sp) = r0;
0x0005dede movs r0, 0xb | r0 = 0xb;
0x0005dee0 blx 0x8474 | fcn_00008474 ();
0x0005dee4 movs r3, 0xb | r3 = 0xb;
0x0005dee6 str r3, [sp, 0x10] | var_10h = r3;
| do {
| label_11:
0x0005dee8 movs r3, 0 | r3 = 0;
0x0005deea strh r3, [r7, 0x32] | *((r7 + 0x32)) = r3;
0x0005deec b 0x5dc10 | goto label_3;
| label_24:
0x0005deee ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005def0 str r4, [r3] | *(r3) = r4;
0x0005def2 strh.w r6, [r7, 0x46] | *((r7 + 0x46)) = r6;
0x0005def6 ldrb.w r3, [fp, 0xb] | r3 = *(arg_bh);
| if (r3 != 0) {
0x0005defa cbnz r3, 0x5df2a | goto label_36;
| }
0x0005defc str r4, [sp, 0x10] | var_10h = r4;
0x0005defe b 0x5dee8 |
| } while (1);
| label_35:
0x0005df00 ldr r2, [r5, 0x40] | r2 = *((r5 + 0x40));
0x0005df02 ldrh.w r0, [r2, sb, lsl 1] | offset_2 = sb << 1;
| r0 = *((r2 + offset_2));
0x0005df06 ldrh r2, [r5, 0x1a] | r2 = *((r5 + 0x1a));
0x0005df08 rev16 r0, r0 | __asm ("rev16 r0, r0");
0x0005df0a ands r2, r0 | r2 &= r0;
0x0005df0c ldr r1, [r1, r2] | r1 = *((r1 + r2));
0x0005df0e rev r1, r1 | r1 = SWAP32 (r1);
0x0005df10 b 0x5dea4 | goto label_10;
| label_21:
0x0005df12 ldr r3, [pc, 0xb8] |
0x0005df14 add r3, pc | r3 = 0xbbee6;
0x0005df16 str r3, [sp, 8] | var_8h = r3;
0x0005df18 b 0x5dbfa | goto label_1;
| label_27:
0x0005df1a movs r3, 7 | r3 = 7;
0x0005df1c str r3, [sp, 0x10] | var_10h = r3;
0x0005df1e b 0x5dee8 | goto label_11;
| label_28:
0x0005df20 mov r0, r4 | r0 = r4;
0x0005df22 str r3, [sp, 0x10] | var_10h = r3;
0x0005df24 blx 0x84f8 | fcn_000084f8 ();
0x0005df28 b 0x5dee8 | goto label_11;
| label_36:
0x0005df2a blx 0x7f8c | fcn_00007f8c ();
0x0005df2e ldr r2, [pc, 0xa0] |
0x0005df30 adds r0, 0x14 | r0 += 0x14;
0x0005df32 ldr r1, [pc, 0xa0] |
0x0005df34 movw r3, 0x15d0 | r3 = 0x15d0;
0x0005df38 add r2, pc | r2 = 0xbbf0e;
0x0005df3a add r1, pc | r1 = 0xbbf14;
0x0005df3c b 0x5ded8 | goto label_12;
| label_29:
0x0005df3e ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005df40 str r3, [sp, 0x10] | var_10h = r3;
0x0005df42 str r3, [r2] | *(r2) = r3;
0x0005df44 b 0x5dc10 | goto label_3;
| label_33:
0x0005df46 ldrd r7, fp, [sp, 0x2c] | __asm ("ldrd r7, fp, [var_2ch]");
0x0005df4a mov ip, r3 |
0x0005df4c uxth r3, r6 | r3 = (int16_t) r6;
0x0005df4e ldr r2, [sp, 0x34] | r2 = var_34h;
0x0005df50 strh.w r3, [r7, 0x46] | *((r7 + 0x46)) = r3;
0x0005df54 ldrb r1, [r5, 8] | r1 = *((r5 + 8));
| if (r1 != 0) {
0x0005df56 cbnz r1, 0x5df8e | goto label_37;
| }
0x0005df58 mov sb, r6 | sb = r6;
0x0005df5a b 0x5de96 | goto label_13;
| label_32:
0x0005df5c ldrd r7, fp, [sp, 0x2c] | __asm ("ldrd r7, fp, [var_2ch]");
0x0005df60 mov.w r4, -1 | r4 = -1;
0x0005df64 b 0x5de8a | goto label_14;
| label_34:
0x0005df66 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005df68 strh.w r6, [r7, 0x46] | *((r7 + 0x46)) = r6;
0x0005df6c str r4, [r3] | *(r3) = r4;
0x0005df6e b 0x5dee8 | goto label_11;
| label_30:
0x0005df70 mov r0, r7 | r0 = r7;
0x0005df72 bl 0xd60c | fcn_0000d60c (r0);
0x0005df76 ldrd r2, r3, [r7, 0x20] | __asm ("ldrd r2, r3, [r7, 0x20]");
0x0005df7a ldrd r1, r0, [sp, 0x18] | __asm ("ldrd r1, r0, [var_18h]");
0x0005df7e cmp r3, r0 |
0x0005df80 it eq |
| if (r3 != r0) {
0x0005df82 cmpeq r2, r1 | __asm ("cmpeq r2, r1");
| goto label_38;
| }
| if (r3 != r0) {
| label_38:
0x0005df84 bne.w 0x5ddde | goto label_15;
| }
0x0005df88 b 0x5dc10 | goto label_3;
| label_19:
0x0005df8a blx 0x7e8c | fcn_00007e8c ();
| label_37:
0x0005df8e mov r3, ip | r3 = ip;
0x0005df90 movs r2, 0 | r2 = 0;
0x0005df92 str r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
0x0005df94 ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x0005df96 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
0x0005df98 strh r2, [r7, 0x32] | *((r7 + 0x32)) = r2;
0x0005df9a orr r3, r3, 2 | r3 |= 2;
0x0005df9e strb r3, [r7, 1] | *((r7 + 1)) = r3;
0x0005dfa0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005dfa2 str r2, [r3] | *(r3) = r2;
0x0005dfa4 b 0x5dc10 | 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/libsqlite3.so.0.8.6 @ 0x5e250 */
| #include <stdint.h>
|
; (fcn) fcn.0005e250 () | void fcn_0005e250 (int16_t arg_4h, int16_t arg1, int16_t arg2) {
| int16_t var_bh;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_42h;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
0x0005e250 ldr r2, [pc, 0x3f0] |
0x0005e252 ldr r3, [pc, 0x3f4] | r3 = *(0x5e64a);
0x0005e254 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005e258 sub sp, 0x54 |
0x0005e25a add r2, pc | r2 = 0xbc8a2;
0x0005e25c ldr.w fp, [r0, 8] | fp = *((r0 + 8));
0x0005e260 mov r4, r0 | r4 = r0;
0x0005e262 and r7, r1, 2 | r7 = r1 & 2;
0x0005e266 ldr r3, [r2, r3] |
0x0005e268 ldr.w sl, [fp, 4] | sl = *(arg_4h);
0x0005e26c ldr r3, [r3] | r3 = *(0xbc8a2);
0x0005e26e str r3, [sp, 0x4c] | var_4ch = r3;
0x0005e270 mov.w r3, 0 | r3 = 0;
0x0005e274 ldrb r3, [r0] | r3 = *(r0);
0x0005e276 cmp r3, 3 |
| if (r3 == 3) {
0x0005e278 beq.w 0x5e490 | goto label_10;
| }
| label_3:
0x0005e27c ldr r6, [r4, 0x74] | r6 = *((r4 + 0x74));
0x0005e27e ldrsb.w r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005e282 ldrh.w sb, [r4, 0x46] | sb = *((r4 + 0x46));
0x0005e286 str r3, [sp, 0x14] | var_14h = r3;
0x0005e288 ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0005e28a ldrh.w r2, [r3, sb, lsl 1] | offset_0 = sb << 1;
| r2 = *((r3 + offset_0));
0x0005e28e ldrh r3, [r6, 0x1a] | r3 = *((r6 + 0x1a));
0x0005e290 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0005e292 ands r3, r2 | r3 &= r2;
0x0005e294 ldr r2, [r6, 0x38] | r2 = *((r6 + 0x38));
0x0005e296 add.w r8, r2, r3 | r8 = r2 + r3;
0x0005e29a ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0005e29c cmp r3, 0 |
| if (r3 < 0) {
0x0005e29e blt.w 0x5e41a | goto label_11;
| }
| label_0:
0x0005e2a2 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
| if (r7 != 0) {
0x0005e2a4 cbz r7, 0x5e2fa |
| if (r3 != 0) {
0x0005e2a6 cbz r3, 0x5e2dc |
0x0005e2a8 mov r1, r8 | r1 = r8;
0x0005e2aa mov r0, r6 | r0 = r6;
0x0005e2ac bl 0x9668 | fcn_00009668 (r0, r1);
0x0005e2b0 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0005e2b4 movw r2, 0xaaab |
| /* if there is a right shift of 1, then it's a division by 1/3 */
0x0005e2b8 movt r2, 0xaaaa | r2 = 0xaaaaaaab;
0x0005e2bc lsls r3, r3, 1 | r3 <<= 1;
0x0005e2be umull r2, r3, r2, r3 | r2:r3 = r2 * r3;
0x0005e2c2 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x0005e2c4 add r0, r2 | r0 += r2;
0x0005e2c6 adds r0, 1 | r0++;
0x0005e2c8 cmp.w r0, r3, lsr 1 |
| if (r0 >= r3) {
0x0005e2cc bge 0x5e2dc | goto label_12;
| }
0x0005e2ce ldrh r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005e2d0 cmp r3, 1 |
| if (r3 == 1) {
0x0005e2d2 beq 0x5e2dc | goto label_12;
| }
0x0005e2d4 movs r3, 1 | r3 = 1;
0x0005e2d6 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0005e2d8 str r3, [sp, 0x18] | var_18h = r3;
0x0005e2da b 0x5e304 | goto label_6;
| }
| label_12:
0x0005e2dc ldrb.w r3, [r4, 0x45] | r3 = *((r4 + 0x45));
0x0005e2e0 mov r0, r4 | r0 = r4;
0x0005e2e2 cmp r3, 0 |
| if (r3 == 0) {
0x0005e2e4 beq.w 0x5e4c4 | goto label_13;
| }
0x0005e2e8 bl 0xd60c | fcn_0000d60c (r0);
0x0005e2ec movs r3, 0 | r3 = 0;
0x0005e2ee str r3, [sp, 0x2c] | var_2ch = r3;
0x0005e2f0 ldrd r2, r3, [r4, 0x20] | __asm ("ldrd r2, r3, [r4, 0x20]");
0x0005e2f4 strd r2, r3, [r4, 0x38] | __asm ("strd r2, r3, [r4, 0x38]");
0x0005e2f8 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
| }
| label_5:
0x0005e2fa ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0005e2fc cmp r3, 0 |
| if (r3 == 0) {
0x0005e2fe beq 0x5e3ea | goto label_14;
| }
0x0005e300 movs r3, 0 | r3 = 0;
0x0005e302 str r3, [sp, 0x18] | var_18h = r3;
| do {
| label_6:
0x0005e304 lsls r1, r2, 0x1a | r1 = r2 << 0x1a;
| if (r1 < r2) {
0x0005e306 bmi.w 0x5e42a | goto label_15;
| }
0x0005e30a ldr r2, [r4, 0x70] | r2 = *((r4 + 0x70));
0x0005e30c cmp r2, 0 |
| if (r2 == 0) {
0x0005e30e beq.w 0x5e446 | goto label_16;
| }
| label_2:
0x0005e312 ldr r0, [r6, 0x48] | r0 = *((r6 + 0x48));
0x0005e314 bl 0x51680 | r0 = fcn_00051680 (r0);
0x0005e318 mov r5, r0 | r5 = r0;
0x0005e31a str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e31c cmp r0, 0 |
| if (r0 == 0) {
0x0005e31e bne 0x5e3cc |
0x0005e320 ldr r3, [r6, 0x50] | r3 = *((r6 + 0x50));
0x0005e322 add r2, sp, 0x30 | r2 += var_30h;
0x0005e324 mov r1, r8 | r1 = r8;
0x0005e326 mov r0, r6 | r0 = r6;
0x0005e328 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005e32a ldrh.w ip, [sp, 0x40] | ip = var_40h;
0x0005e32c stm r0!, {r6} | *(r0!) = r6;
0x0005e32e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005e330 cmp ip, r3 |
0x0005e332 it eq |
| if (ip != r3) {
0x0005e334 streq r5, [sp, 0x2c] | var_2ch = r5;
| }
| if (ip != r3) {
0x0005e336 bne.w 0x5e4a6 | goto label_17;
| }
| label_4:
0x0005e33a add.w fp, sp, 0x2c |
0x0005e33e ldrh.w r2, [sp, 0x42] | r2 = var_42h;
0x0005e342 mov r3, fp | r3 = fp;
0x0005e344 mov r1, sb | r1 = sb;
0x0005e346 mov r0, r6 | r0 = r6;
0x0005e348 bl 0x333e0 | fcn_000333e0 (r0, r1, r2, r3);
0x0005e34c ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x0005e34e cmp r5, 0 |
| if (r5 != 0) {
0x0005e350 bne 0x5e3cc | goto label_1;
| }
0x0005e352 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
0x0005e354 cmp r3, 0 |
| if (r3 != 0) {
0x0005e356 bne.w 0x5e510 | goto label_18;
| }
0x0005e35a ldr.w r8, [r4, 0x74] | r8 = *((r4 + 0x74));
0x0005e35e ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x0005e362 cmp r3, 0 |
| if (r3 < 0) {
0x0005e364 blt.w 0x5e570 | goto label_19;
| }
| label_8:
0x0005e368 ldrsb.w r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005e36c ldr r2, [sp, 0x14] | r2 = var_14h;
0x0005e36e subs r3, 1 | r3--;
0x0005e370 cmp r3, r2 |
| if (r3 <= r2) {
0x0005e372 ble.w 0x5e568 | goto label_20;
| }
0x0005e376 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005e378 adds r3, 0x1f | r3 += 0x1f;
0x0005e37a ldr.w r3, [r4, r3, lsl 2] | offset_1 = r3 << 2;
| r3 = *((r4 + offset_1));
0x0005e37e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0005e380 str r3, [sp, 0x20] | var_20h = r3;
| label_7:
0x0005e382 ldrh.w r3, [r8, 0x18] | r3 = *((r8 + 0x18));
0x0005e386 ldr.w r2, [r8, 0x40] | r2 = *((r8 + 0x40));
0x0005e38a ldrh.w r1, [r8, 0x1a] | r1 = *((r8 + 0x1a));
0x0005e38e subs r3, 1 | r3--;
0x0005e390 ldrh.w r3, [r2, r3, lsl 1] | offset_2 = r3 << 1;
| r3 = *((r2 + offset_2));
0x0005e394 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0005e396 ands r1, r3 | r1 &= r3;
0x0005e398 ldr.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x0005e39c add r1, r3 | r1 += r3;
0x0005e39e adds r3, 4 | r3 += 4;
0x0005e3a0 cmp r1, r3 |
| if (r1 <= r3) {
0x0005e3a2 blo.w 0x5e582 | goto label_21;
| }
0x0005e3a6 ldr.w r3, [r8, 0x4c] | r3 = *((r8 + 0x4c));
0x0005e3aa mov r0, r8 | r0 = r8;
0x0005e3ac str r1, [sp, 0x1c] | var_1ch = r1;
0x0005e3ae blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0005e3b0 ldr.w r3, [sl, 0x54] | r3 = *((sl + 0x54));
0x0005e3b4 mov sl, r0 | sl = r0;
0x0005e3b6 ldr.w r0, [r8, 0x48] | r0 = *((r8 + 0x48));
0x0005e3ba str r3, [sp, 0x24] | var_24h = r3;
0x0005e3bc bl 0x51680 | fcn_00051680 (r0);
0x0005e3c0 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0005e3c2 mov r5, r0 | r5 = r0;
0x0005e3c4 str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e3c6 cmp r0, 0 |
| if (r0 == 0) {
0x0005e3c8 beq.w 0x5e4d6 | goto label_22;
| }
| }
| label_1:
0x0005e3cc ldr r2, [pc, 0x27c] |
0x0005e3ce ldr r3, [pc, 0x278] | r3 = *(0x5e64a);
0x0005e3d0 add r2, pc | r2 = 0xbca20;
0x0005e3d2 ldr r3, [r2, r3] | r3 = *(0xbca20);
0x0005e3d4 ldr r2, [r3] | r2 = *(0xbca20);
0x0005e3d6 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0005e3d8 eors r2, r3 | r2 ^= r3;
0x0005e3da mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005e3de bne.w 0x5e640 | goto label_23;
| }
0x0005e3e2 mov r0, r5 | r0 = r5;
0x0005e3e4 add sp, 0x54 |
0x0005e3e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x0005e3ea ldrb r1, [r4] | r1 = *(r4);
0x0005e3ec and r2, r2, 0xf1 | r2 &= 0xf1;
0x0005e3f0 strh r3, [r4, 0x32] | *((r4 + 0x32)) = r3;
0x0005e3f2 strb r2, [r4, 1] | *((r4 + 1)) = r2;
0x0005e3f4 cmp r1, 0 |
| if (r1 != 0) {
0x0005e3f6 bne.w 0x5e552 | goto label_24;
| }
0x0005e3fa ldrh.w r1, [r4, 0x46] | r1 = *((r4 + 0x46));
0x0005e3fe cmp r1, 0 |
| if (r1 == 0) {
0x0005e400 beq.w 0x5e552 | goto label_24;
| }
0x0005e404 ldr r0, [r4, 0x74] | r0 = *((r4 + 0x74));
0x0005e406 ldrb r0, [r0, 8] | r0 = *((r0 + 8));
0x0005e408 cmp r0, 0 |
| if (r0 == 0) {
0x0005e40a beq.w 0x5e552 | goto label_24;
| }
0x0005e40e subs r1, 1 | r1--;
0x0005e410 str r3, [sp, 0x2c] | var_2ch = r3;
0x0005e412 strh.w r1, [r4, 0x46] | *((r4 + 0x46)) = r1;
0x0005e416 str r3, [sp, 0x18] | var_18h = r3;
0x0005e418 b 0x5e304 |
| } while (1);
| label_11:
0x0005e41a mov r0, r6 | r0 = r6;
0x0005e41c bl 0x2ead0 | r0 = fcn_0002ead0 (r0);
0x0005e420 cmp r0, 0 |
| if (r0 == 0) {
0x0005e422 beq.w 0x5e2a2 | goto label_0;
| }
0x0005e426 movs r5, 0xb | r5 = 0xb;
0x0005e428 b 0x5e3cc | goto label_1;
| label_15:
0x0005e42a ldr r1, [r4, 0x40] | r1 = *((r4 + 0x40));
0x0005e42c mov r2, r4 | r2 = r4;
0x0005e42e ldr.w r0, [sl, 8] | r0 = *((sl + 8));
0x0005e432 bl 0x58a4c | r0 = fcn_00058a4c (r0, r1, r2);
0x0005e436 mov r5, r0 | r5 = r0;
0x0005e438 str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e43a cmp r0, 0 |
| if (r0 != 0) {
0x0005e43c bne 0x5e3cc | goto label_1;
| }
0x0005e43e ldr r2, [r4, 0x70] | r2 = *((r4 + 0x70));
0x0005e440 cmp r2, 0 |
| if (r2 != 0) {
0x0005e442 bne.w 0x5e312 | goto label_2;
| }
| label_16:
0x0005e446 ldrb.w r3, [fp, 0xb] | r3 = var_bh;
0x0005e44a cmp r3, 0 |
| if (r3 == 0) {
0x0005e44c beq.w 0x5e312 | goto label_2;
| }
0x0005e450 ldr.w r3, [fp, 4] | r3 = var_30h;
0x0005e454 ldr r5, [r4, 0x40] | r5 = *((r4 + 0x40));
0x0005e456 ldrd r0, ip, [r4, 0x20] | __asm ("ldrd r0, ip, [r4, 0x20]");
0x0005e45a strb.w r2, [fp, 0xb] | var_bh = r2;
0x0005e45e ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0005e460 cmp r3, 0 |
| if (r3 == 0) {
0x0005e462 beq.w 0x5e312 | goto label_2;
| }
0x0005e464 add r7, sp, 0x158 | r7 = sp + 0x158;
0x0005e466 movs r1, 1 | r1 = 1;
0x0005e468 mov lr, r0 | lr = r0;
| do {
0x0005e46a ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0005e46c lsls r2, r2, 0x1b | r2 <<= 0x1b;
| if (r2 < r2) {
0x0005e46e bpl 0x5e488 |
0x0005e470 strb.w r1, [fp, 0xb] | var_bh = r1;
0x0005e474 ldr r2, [r3, 0x40] | r2 = *((r3 + 0x40));
0x0005e476 cmp r5, r2 |
| if (r5 != r2) {
0x0005e478 bne 0x5e488 | goto label_25;
| }
0x0005e47a ldrd r0, r2, [r3, 0x20] | __asm ("ldrd r0, r2, [r3, 0x20]");
0x0005e47e cmp ip, r2 |
0x0005e480 it eq |
| if (ip == r2) {
0x0005e482 cmpeq lr, r0 | __asm ("cmpeq lr, r0");
| }
0x0005e484 it eq |
| if (ip == r2) {
0x0005e486 strbeq r1, [r3] | *(r3) = r1;
| goto label_25;
| }
| }
| label_25:
0x0005e488 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0005e48a cmp r3, 0 |
0x0005e48c bne 0x5e46a |
| } while (r3 != 0);
0x0005e48e b 0x5e312 | goto label_2;
| label_10:
0x0005e490 bl 0x5e07c | r0 = fcn_0005e07c (r0);
0x0005e494 mov r5, r0 | r5 = r0;
0x0005e496 str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e498 cmp r0, 0 |
| if (r0 != 0) {
0x0005e49a bne 0x5e3cc | goto label_1;
| }
0x0005e49c ldrb r3, [r4] | r3 = *(r4);
0x0005e49e cmp r3, 0 |
| if (r3 == 0) {
0x0005e4a0 beq.w 0x5e27c | goto label_3;
| }
0x0005e4a4 b 0x5e3cc | goto label_1;
| label_17:
0x0005e4a6 ldrh.w r5, [sp, 0x42] | r5 = var_42h;
0x0005e4aa mov r2, r8 | r2 = r8;
0x0005e4ac ldr r1, [r6, 0x3c] | r1 = *((r6 + 0x3c));
0x0005e4ae ldr r0, [r6, 0x34] | r0 = *((r6 + 0x34));
0x0005e4b0 str r5, [sp, 4] | var_4h = r5;
0x0005e4b2 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x0005e4b6 bl 0x566b8 | r0 = fcn_000566b8 (r0, r1, r2, r3);
0x0005e4ba mov r5, r0 | r5 = r0;
0x0005e4bc str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e4be cmp r0, 0 |
| if (r0 != 0) {
0x0005e4c0 bne 0x5e3cc | goto label_1;
| }
0x0005e4c2 b 0x5e33a | goto label_4;
| label_13:
0x0005e4c4 bl 0x588f4 | r0 = fcn_000588f4 (r0);
0x0005e4c8 mov r5, r0 | r5 = r0;
0x0005e4ca str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e4cc cmp r0, 0 |
| if (r0 != 0) {
0x0005e4ce bne.w 0x5e3cc | goto label_1;
| }
0x0005e4d2 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
0x0005e4d4 b 0x5e2fa | goto label_5;
| label_22:
0x0005e4d6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005e4d8 subs r2, r1, 4 | r2 = r1 - 4;
0x0005e4da mov r0, r6 | r0 = r6;
0x0005e4dc mov r1, sb | r1 = sb;
0x0005e4de str.w fp, [sp, 8] | __asm ("str.w fp, [var_8h]");
0x0005e4e2 str r3, [sp, 4] | var_4h = r3;
0x0005e4e4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005e4e6 str r3, [sp] | *(sp) = r3;
0x0005e4e8 add.w r3, sl, 4 | r3 = sl + 4;
0x0005e4ec bl 0x56850 | fcn_00056850 (r0, r1, r2, r3, r4, r5);
0x0005e4f0 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x0005e4f2 ldrh.w r1, [r8, 0x18] | r1 = *((r8 + 0x18));
0x0005e4f6 subs r1, 1 | r1--;
0x0005e4f8 cmp r5, 0 |
| if (r5 != 0) {
0x0005e4fa bne.w 0x5e3cc | goto label_1;
| }
0x0005e4fe mov r3, fp | r3 = fp;
0x0005e500 mov r2, sl | r2 = sl;
0x0005e502 mov r0, r8 | r0 = r8;
0x0005e504 bl 0x333e0 | fcn_000333e0 (r0, r1, r2, r3);
0x0005e508 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x0005e50a cmp r5, 0 |
| if (r5 != 0) {
0x0005e50c bne.w 0x5e3cc | goto label_1;
| }
| label_18:
0x0005e510 mov r0, r4 | r0 = r4;
0x0005e512 bl 0x57c5c | r0 = fcn_00057c5c (r0);
0x0005e516 mov r5, r0 | r5 = r0;
0x0005e518 str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e51a cmp r0, 0 |
| if (r0 != 0) {
0x0005e51c bne.w 0x5e3cc | goto label_1;
| }
0x0005e520 ldrsb.w r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005e524 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0005e526 cmp r3, r2 |
| if (r3 > r2) {
0x0005e528 bgt 0x5e5a6 | goto label_26;
| }
| label_9:
0x0005e52a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005e52c cmp r3, 0 |
| if (r3 == 0) {
0x0005e52e beq 0x5e5f4 | goto label_27;
| }
0x0005e530 movs r3, 2 | r3 = 2;
0x0005e532 strb r3, [r4] | *(r4) = r3;
0x0005e534 ldrh r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005e536 cmp sb, r3 |
0x0005e538 itett hs |
| if (sb < r3) {
0x0005e53a movhs r2, -1 | r2 = -1;
| }
| if (sb < r3) {
0x0005e53e movhs r3, 1 | r3 = 1;
| }
| if (sb < r3) {
0x0005e540 addhs r3, r3, r2 | r3 += r2;
| }
| if (sb >= r3) {
0x0005e542 ldr r5, [sp, 0x2c] | r5 = var_2ch;
| }
0x0005e544 iteet lo |
| if (sb >= r3) {
0x0005e546 ldrlo r5, [sp, 0x2c] | r5 = var_2ch;
| }
| if (sb < r3) {
0x0005e548 strhs r2, [r4, 4] | *((r4 + 4)) = r2;
| }
| if (sb >= r3) {
0x0005e54a strhhs r3, [r4, 0x46] | __asm ("strhhs r3, [r4, 0x46]");
| }
| if (sb < r3) {
0x0005e54e str r3, [r4, 4] | *((r4 + 4)) = r3;
| }
0x0005e550 b 0x5e3cc | goto label_1;
| label_24:
0x0005e552 mov r0, r4 | r0 = r4;
0x0005e554 bl 0x5e158 | r0 = fcn_0005e158 (r0);
0x0005e558 mov r5, r0 | r5 = r0;
0x0005e55a str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e55c cmp r0, 0 |
| if (r0 != 0) {
0x0005e55e bne.w 0x5e3cc | goto label_1;
| }
0x0005e562 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0005e564 str r0, [sp, 0x18] | var_18h = r0;
0x0005e566 b 0x5e304 | goto label_6;
| label_20:
0x0005e568 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0005e56a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0005e56c str r3, [sp, 0x20] | var_20h = r3;
0x0005e56e b 0x5e382 | goto label_7;
| label_19:
0x0005e570 mov r0, r8 | r0 = r8;
0x0005e572 bl 0x2ead0 | r0 = fcn_0002ead0 (r0);
0x0005e576 mov r5, r0 | r5 = r0;
0x0005e578 str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e57a cmp r0, 0 |
| if (r0 == 0) {
0x0005e57c beq.w 0x5e368 | goto label_8;
| }
0x0005e580 b 0x5e3cc | goto label_1;
| label_21:
0x0005e582 blx 0x7f8c | fcn_00007f8c ();
0x0005e586 ldr r2, [pc, 0xc8] |
0x0005e588 add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x0005e58c ldr r1, [pc, 0xc4] |
0x0005e58e movw r3, 0x23b9 |
0x0005e592 movt r3, 1 | r3 = 0x123b9;
0x0005e596 movs r0, 0xb | r0 = 0xb;
0x0005e598 add r2, pc | r2 = 0xbcbee;
0x0005e59a str r4, [sp] | *(sp) = r4;
0x0005e59c add r1, pc | r1 = 0xbcbf4;
0x0005e59e movs r5, 0xb | r5 = 0xb;
0x0005e5a0 blx 0x8474 | fcn_00008474 ();
0x0005e5a4 b 0x5e3cc | goto label_1;
| label_26:
0x0005e5a6 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0005e5a8 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005e5aa bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005e5ae ldrb.w r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005e5b2 ldr r5, [sp, 0x14] | r5 = var_14h;
0x0005e5b4 subs r3, 1 | r3--;
0x0005e5b6 sxtb r3, r3 | r3 = (int32_t) r3;
0x0005e5b8 strb.w r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x0005e5bc b 0x5e5d2 |
| while (r5 < r3) {
0x0005e5be subs r3, 1 | r3--;
0x0005e5c0 sxtb r3, r3 | r3 = (int32_t) r3;
0x0005e5c2 strb.w r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
| if (r1 != 0) {
0x0005e5c6 cbz r1, 0x5e5da |
0x0005e5c8 ldr r0, [r1, 0x48] | r0 = *((r1 + 0x48));
0x0005e5ca bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005e5ce ldrsb.w r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005e5d2 add.w r2, r3, 0x1e | r2 = r3 + 0x1e;
0x0005e5d6 add.w r2, r4, r2, lsl 2 | r2 = r4 + (r2 << 2);
| }
0x0005e5da cmp r5, r3 |
0x0005e5dc ldr r1, [r2], -4 | r1 = *(r2);
| r2 += -4;
0x0005e5e0 blt 0x5e5be |
| }
0x0005e5e2 mov r0, r4 | r0 = r4;
0x0005e5e4 str r1, [r4, 0x74] | *((r4 + 0x74)) = r1;
0x0005e5e6 bl 0x57c5c | r0 = fcn_00057c5c (r0);
0x0005e5ea mov r5, r0 | r5 = r0;
0x0005e5ec str r0, [sp, 0x2c] | var_2ch = r0;
0x0005e5ee cmp r0, 0 |
| if (r0 == 0) {
0x0005e5f0 beq 0x5e52a | goto label_9;
| }
0x0005e5f2 b 0x5e3cc | goto label_1;
| label_27:
0x0005e5f4 mov r0, r4 | r0 = r4;
0x0005e5f6 bl 0x2c634 | r0 = fcn_0002c634 (r0);
0x0005e5fa mov r5, r0 | r5 = r0;
0x0005e5fc str r0, [sp, 0x2c] | var_2ch = r0;
| if (r7 == 0) {
0x0005e5fe cbz r7, 0x5e638 | goto label_28;
| }
0x0005e600 ldrsb.w r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005e604 cmp r3, 0 |
| if (r3 < 0) {
0x0005e606 blt 0x5e634 | goto label_29;
| }
0x0005e608 itt ne |
| if (r3 == 0) {
0x0005e60a ldrne r6, [sp, 0x18] | r6 = var_18h;
| }
| if (r3 == 0) {
0x0005e60c addne r7, r4, 0x74 | r7 = r4 + 0x74;
| }
| if (r3 == 0) {
0x0005e610 beq 0x5e626 | goto label_30;
| }
| do {
0x0005e612 ldr r3, [r7, 4]! | r3 = *((r7 += 4));
0x0005e616 adds r6, 1 | r6++;
0x0005e618 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005e61a bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005e61e ldrsb.w r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005e622 cmp r6, r3 |
0x0005e624 blt 0x5e612 |
| } while (r6 < r3);
| label_30:
0x0005e626 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0005e628 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005e62a bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005e62e movs r3, 0xff | r3 = 0xff;
0x0005e630 strb.w r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
| label_29:
0x0005e634 movs r3, 3 | r3 = 3;
0x0005e636 strb r3, [r4] | *(r4) = r3;
| label_28:
0x0005e638 cmp r5, 0x10 |
0x0005e63a it eq |
| if (r5 != 0x10) {
0x0005e63c moveq r5, 0 | r5 = 0;
| }
0x0005e63e b 0x5e3cc | goto label_1;
| label_23:
0x0005e640 blx 0x7e8c | fcn_00007e8c ();
0x0005e644 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5e848 */
| #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) fcn.0005e848 () | void fcn_0005e848 (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_62h;
| int16_t var_64h;
| int16_t var_66h;
| int16_t var_68h;
| int16_t var_6ah;
| int32_t var_74h;
| int32_t var_74h_2;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0005e848 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0005e84c mov r6, r3 | r6 = r3;
0x0005e84e ldr.w r4, [pc, 0x7c8] |
0x0005e852 mov r5, r0 | r5 = r0;
0x0005e854 sub sp, 0x8c |
0x0005e856 ldr.w r3, [pc, 0x7c4] | r3 = *(0x5f01e);
0x0005e85a ldrb r0, [r0] | r0 = *(r0);
0x0005e85c add r4, pc | r4 = 0xbd87a;
0x0005e85e ldr r3, [r4, r3] |
0x0005e860 cmp r0, 4 |
0x0005e862 it eq |
| if (r0 != 4) {
0x0005e864 ldreq r4, [r5, 4] | r4 = *((r5 + 4));
| }
0x0005e866 ldr r3, [r3] | r3 = *(0xbd87a);
0x0005e868 str r3, [sp, 0x84] | var_84h = r3;
0x0005e86a mov.w r3, 0 | r3 = 0;
0x0005e86e str r6, [sp, 0x4c] | var_4ch = r6;
0x0005e870 str r1, [sp, 0x20] | var_20h = r1;
0x0005e872 str r2, [sp, 0x18] | var_18h = r2;
| if (r0 == 4) {
0x0005e874 beq 0x5e916 | goto label_1;
| }
0x0005e876 ldr r7, [r5, 8] | r7 = *((r5 + 8));
0x0005e878 ldrb r0, [r5, 1] | r0 = *((r5 + 1));
0x0005e87a ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0005e87c lsls r4, r0, 0x1a | r4 = r0 << 0x1a;
0x0005e87e str r3, [sp, 0x1c] | var_1ch = r3;
| if (r4 < r0) {
0x0005e880 bmi.w 0x5e9c0 | goto label_24;
| }
0x0005e884 ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x0005e886 cmp r3, 0 |
| if (r3 == 0) {
0x0005e888 beq.w 0x5e9ea | goto label_25;
| }
0x0005e88c cmp r6, 0 |
| if (r6 == 0) {
0x0005e88e beq 0x5e93e | goto label_26;
| }
| label_0:
0x0005e890 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x0005e892 str r3, [sp, 0x14] | var_14h = r3;
0x0005e894 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0005e896 cmp r3, 0 |
| if (r3 < 0) {
0x0005e898 blt.w 0x5ea24 | goto label_27;
| }
| label_4:
0x0005e89c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005e89e ldr r3, [r3, 0x54] | r3 = *((r3 + 0x54));
0x0005e8a0 str r3, [sp, 0x30] | var_30h = r3;
0x0005e8a2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005e8a4 lsls r3, r3, 0x18 | r3 <<= 0x18;
| if (r3 >= r3) {
0x0005e8a6 bpl.w 0x5eba4 | goto label_28;
| }
0x0005e8aa ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x0005e8ac ldr r2, [r6, 0x58] | r2 = *((r6 + 0x58));
0x0005e8ae ldrb r3, [r6, 0x11] | r3 = *((r6 + 0x11));
0x0005e8b0 cmp r2, 4 |
0x0005e8b2 mov r4, r2 | r4 = r2;
0x0005e8b4 it lt |
| if (r2 >= 4) {
0x0005e8b6 movlt r4, 4 | r4 = 4;
| }
0x0005e8b8 movs r2, 0 | r2 = 0;
0x0005e8ba str r4, [sp, 0x34] | var_34h = r4;
0x0005e8bc str r2, [sp, 0x48] | var_48h = r2;
| if (r3 != 0) {
0x0005e8be cbz r3, 0x5e8e2 |
0x0005e8c0 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005e8c2 ldrh r3, [r0, 0xe] | r3 = *((r0 + 0xe));
0x0005e8c4 cmp r3, r4 |
| if (r3 >= r4) {
0x0005e8c6 bge 0x5e8e2 | goto label_12;
| }
0x0005e8c8 ldr.w r8, [sp, 0x30] | r8 = var_30h;
0x0005e8cc add r2, sp, 0x58 | r2 += var_58h;
0x0005e8ce ldr r3, [r0, 0x50] | r3 = *((r0 + 0x50));
0x0005e8d0 mov r7, r0 | r7 = r0;
0x0005e8d2 mov r1, r8 | r1 = r8;
0x0005e8d4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0005e8d6 ldrh.w r3, [sp, 0x68] | r3 = var_68h;
0x0005e8da ldr r2, [sp, 0x64] | r2 = var_64h;
0x0005e8dc cmp r2, r3 |
| if (r2 != r3) {
0x0005e8de bne.w 0x5ee98 | goto label_29;
| }
| }
| label_12:
0x0005e8e2 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0005e8e4 ldrh.w r6, [r5, 0x46] | r6 = *((r5 + 0x46));
0x0005e8e8 cmp r3, 0 |
| if (r3 == 0) {
0x0005e8ea beq.w 0x5ebfa | goto label_30;
| }
| if (r3 < 0) {
0x0005e8ee blt.w 0x5eab6 | goto label_31;
| }
| label_5:
0x0005e8f2 add r7, sp, 0x48 | r7 += var_48h;
| label_7:
0x0005e8f4 ldr r4, [sp, 0x14] | r4 = var_14h;
0x0005e8f6 mov r1, r6 | r1 = r6;
0x0005e8f8 movs r6, 0 | r6 = 0;
0x0005e8fa ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x0005e8fe str r7, [sp, 8] | var_8h = r7;
0x0005e900 mov r0, r4 | r0 = r4;
0x0005e902 strd r6, r6, [sp] | __asm ("strd r6, r6, [sp]");
0x0005e906 bl 0x56850 | fcn_00056850 (r0, r1, r2, r3, r4, r5);
0x0005e90a strh r6, [r5, 0x32] | *((r5 + 0x32)) = r6;
0x0005e90c ldrb r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0005e90e cmp r3, 0 |
| if (r3 != 0) {
0x0005e910 bne.w 0x5ead2 | goto label_32;
| }
0x0005e914 ldr r4, [sp, 0x48] | r4 = var_48h;
| do {
| label_1:
0x0005e916 ldr.w r2, [pc, 0x708] | r2 = *(0x0005f020);
0x0005e91a ldr.w r3, [pc, 0x700] | r3 = *(0x5f01e);
0x0005e91e add r2, pc | r2 += pc;
0x0005e920 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0005e922 ldr r2, [r3] | r2 = *(0x5f01e);
0x0005e924 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0005e926 eors r2, r3 | r2 ^= r3;
0x0005e928 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005e92c bne.w 0x5f010 | goto label_33;
| }
0x0005e930 mov r0, r4 | r0 = r4;
0x0005e932 add sp, 0x8c |
0x0005e934 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0005e938 ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x0005e93a cmp r3, 0 |
| if (r3 == 0) {
0x0005e93c beq 0x5e9e8 | goto label_34;
| }
| label_26:
0x0005e93e ldr r2, [sp, 0x18] | r2 = var_18h;
0x0005e940 ands r2, r2, 2 | r2 &= 2;
| if (r2 != r2) {
0x0005e944 bne 0x5e98e | goto label_35;
| }
0x0005e946 ldr r4, [sp, 0x20] | r4 = var_20h;
0x0005e948 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0005e94a ldrh r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x0005e94c subs r0, 0 |
0x0005e94e it ne |
| if (r0 == 0) {
0x0005e950 movne r0, 1 | r0 = 1;
| }
0x0005e952 str r0, [sp] | *(sp) = r0;
0x0005e954 cmp r1, 0 |
| if (r1 == 0) {
0x0005e956 beq.w 0x5ee5e | goto label_36;
| }
0x0005e95a str r3, [sp, 0x58] | var_58h = r3;
0x0005e95c add r3, sp, 0x4c | r3 += var_4ch;
0x0005e95e str r3, [sp, 4] | var_4h = r3;
0x0005e960 mov r0, r5 | r0 = r5;
0x0005e962 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0005e964 strh.w r1, [sp, 0x60] | var_60h = r1;
0x0005e968 add r1, sp, 0x58 | r1 += var_58h;
0x0005e96a strh.w r2, [sp, 0x62] | var_62h = r2;
0x0005e96e strh.w r2, [sp, 0x64] | var_64h = r2;
0x0005e972 strb.w r2, [sp, 0x66] | var_66h = r2;
0x0005e976 movs r2, 0 | r2 = 0;
0x0005e978 str r3, [sp, 0x5c] | var_5ch = r3;
0x0005e97a movs r3, 0 | r3 = 0;
0x0005e97c bl 0x5dbc4 | r0 = fcn_0005dbc4 (r0, r1, r2, r3, r4, r5, r6);
0x0005e980 mov r4, r0 | r4 = r0;
0x0005e982 str r0, [sp, 0x48] | var_48h = r0;
| label_13:
0x0005e984 cmp r4, 0 |
0x0005e986 bne 0x5e916 |
| } while (r4 != 0);
0x0005e988 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0005e98a cmp r3, 0 |
| if (r3 != 0) {
0x0005e98c bne 0x5e890 | goto label_0;
| }
| label_35:
0x0005e98e mov r0, r5 | r0 = r5;
0x0005e990 bl 0xd60c | fcn_0000d60c (r0);
0x0005e994 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005e996 ldrd r0, r1, [r5, 0x20] | __asm ("ldrd r0, r1, [r5, 0x20]");
0x0005e99a ldrd r3, r2, [r2, 8] | __asm ("ldrd r3, r2, [r2, 8]");
0x0005e99e cmp r1, r2 |
0x0005e9a0 it eq |
| if (r1 != r2) {
0x0005e9a2 cmpeq r0, r3 | __asm ("cmpeq r0, r3");
| goto label_37;
| }
| if (r1 != r2) {
| label_37:
0x0005e9a4 bne.w 0x5e890 | goto label_0;
| }
0x0005e9a8 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005e9aa movs r4, 0 | r4 = 0;
0x0005e9ac add r1, sp, 0x58 | r1 += var_58h;
0x0005e9ae mov r0, r5 | r0 = r5;
0x0005e9b0 strd r3, r4, [sp, 0x74] | __asm ("strd r3, r4, [var_74h]");
0x0005e9b4 ldr r2, [r2] | r2 = *(r2);
0x0005e9b6 str r2, [sp, 0x68] | var_68h = r2;
0x0005e9b8 bl 0x56228 | r0 = fcn_00056228 (r0, r1, r2);
0x0005e9bc mov r4, r0 | r4 = r0;
0x0005e9be b 0x5e916 | goto label_1;
| label_24:
0x0005e9c0 ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x0005e9c2 mov r2, r5 | r2 = r5;
0x0005e9c4 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0005e9c6 bl 0x58a4c | r0 = fcn_00058a4c (r0, r1, r2);
0x0005e9ca mov r4, r0 | r4 = r0;
0x0005e9cc str r0, [sp, 0x48] | var_48h = r0;
0x0005e9ce cmp r0, 0 |
| if (r0 != 0) {
0x0005e9d0 bne 0x5e916 | goto label_1;
| }
0x0005e9d2 cmp r6, 0 |
| if (r6 == 0) {
0x0005e9d4 beq 0x5e938 | goto label_2;
| }
0x0005e9d6 ldrsb.w r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x0005e9da cmp r3, 0 |
| if (r3 < 0) {
0x0005e9dc blt.w 0x5ef5e | goto label_38;
| }
0x0005e9e0 ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x0005e9e2 cmp r3, 0 |
| if (r3 != 0) {
0x0005e9e4 bne.w 0x5e890 | goto label_0;
| }
| label_34:
0x0005e9e8 ldrb r0, [r5, 1] | r0 = *((r5 + 1));
| label_25:
0x0005e9ea ldrb r3, [r7, 0xb] | r3 = *((r7 + 0xb));
0x0005e9ec cmp r3, 0 |
| if (r3 != 0) {
0x0005e9ee bne.w 0x5eb5c | goto label_39;
| }
| label_6:
0x0005e9f2 lsls r1, r0, 0x1e | r1 = r0 << 0x1e;
| if (r1 < r0) {
0x0005e9f4 bmi 0x5ea52 | goto label_40;
| }
| label_3:
0x0005e9f6 cmp r6, 0 |
| if (r6 != 0) {
0x0005e9f8 bne.w 0x5e890 | goto label_0;
| }
0x0005e9fc add r3, sp, 0x4c | r3 += var_4ch;
0x0005e9fe mov r1, r6 | r1 = r6;
0x0005ea00 str r3, [sp, 4] | var_4h = r3;
0x0005ea02 mov r0, r5 | r0 = r5;
0x0005ea04 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005ea06 subs r3, 0 |
0x0005ea08 it ne |
| if (r3 == 0) {
0x0005ea0a movne r3, 1 | r3 = 1;
| }
0x0005ea0c str r3, [sp] | *(sp) = r3;
0x0005ea0e ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005ea10 ldrd r2, r3, [r3, 8] | __asm ("ldrd r2, r3, [r3, 8]");
0x0005ea14 bl 0x5dbc4 | r0 = fcn_0005dbc4 (r0, r1, r2, r3, r4, r5, r6);
0x0005ea18 mov r4, r0 | r4 = r0;
0x0005ea1a str r0, [sp, 0x48] | var_48h = r0;
0x0005ea1c cmp r0, 0 |
| if (r0 == 0) {
0x0005ea1e beq.w 0x5e890 | goto label_0;
| }
0x0005ea20 add r7, sp, 0xdc | r7 = sp + 0xdc;
0x0005ea22 b 0x5e916 | goto label_1;
| label_27:
0x0005ea24 ldrb r3, [r5] | r3 = *(r5);
0x0005ea26 cmp r3, 1 |
| if (r3 < 1) {
0x0005ea28 bls 0x5eaa4 | goto label_41;
| }
0x0005ea2a blx 0x7f8c | fcn_00007f8c ();
0x0005ea2e ldr.w r2, [pc, 0x5f4] | r2 = *(0x0005f024);
0x0005ea32 add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x0005ea36 ldr.w r1, [pc, 0x5f0] |
0x0005ea3a movw r3, 0x2247 | r3 = 0x2247;
0x0005ea3e add r2, pc | r2 += pc;
0x0005ea40 add r1, pc | r1 = 0xbda6e;
| label_20:
0x0005ea42 str r4, [sp] | *(sp) = r4;
0x0005ea44 movt r3, 1 | r3 = (r3 & 0xFFFF) | 0x10000;
0x0005ea48 movs r0, 0xb | r0 = 0xb;
0x0005ea4a movs r4, 0xb | r4 = 0xb;
0x0005ea4c blx 0x8474 | fcn_00008474 ();
0x0005ea50 b 0x5e916 | goto label_1;
| label_40:
0x0005ea52 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005ea54 ldrd r0, r2, [r3, 8] | __asm ("ldrd r0, r2, [r3, 8]");
0x0005ea58 ldrd r1, r3, [r5, 0x20] | __asm ("ldrd r1, r3, [r5, 0x20]");
0x0005ea5c cmp r2, r3 |
0x0005ea5e it eq |
| if (r2 != r3) {
0x0005ea60 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| goto label_42;
| }
| if (r2 != r3) {
| label_42:
0x0005ea62 bne 0x5e9f6 | goto label_3;
| }
0x0005ea64 ldrh r3, [r5, 0x32] | r3 = *((r5 + 0x32));
0x0005ea66 cmp r3, 0 |
| if (r3 == 0) {
0x0005ea68 beq.w 0x5e890 | goto label_0;
| }
0x0005ea6c ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005ea6e ldrd r3, r2, [r2, 0x1c] | __asm ("ldrd r3, r2, [r2, 0x1c]");
0x0005ea72 add r3, r2 | r3 += r2;
0x0005ea74 ldr r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x0005ea76 cmp r2, r3 |
| if (r2 != r3) {
0x0005ea78 bne.w 0x5e890 | goto label_0;
| }
0x0005ea7c ldr.w r2, [pc, 0x5ac] |
0x0005ea80 ldr.w r3, [pc, 0x598] | r3 = *(0x5f01c);
0x0005ea84 add r2, pc | r2 = 0xbdab4;
0x0005ea86 ldr r3, [r2, r3] | r3 = *(0xbdab4);
0x0005ea88 ldr r2, [r3] | r2 = *(0xbdab4);
0x0005ea8a ldr r3, [sp, 0x84] | r3 = var_84h;
0x0005ea8c eors r2, r3 | r2 ^= r3;
0x0005ea8e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005ea92 bne.w 0x5f010 | goto label_33;
| }
0x0005ea96 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0005ea98 mov r0, r5 | r0 = r5;
0x0005ea9a add sp, 0x8c |
0x0005ea9c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005eaa0 b.w 0x56228 | void (*0x56228)() ();
| label_41:
0x0005eaa4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005eaa6 bl 0x2ead0 | r0 = fcn_0002ead0 (r0);
0x0005eaaa mov r4, r0 | r4 = r0;
0x0005eaac str r0, [sp, 0x48] | var_48h = r0;
0x0005eaae cmp r0, 0 |
| if (r0 == 0) {
0x0005eab0 beq.w 0x5e89c | goto label_4;
| }
0x0005eab4 b 0x5e916 | goto label_1;
| label_31:
0x0005eab6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005eab8 ldrh r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0005eaba cmp r3, 0 |
| if (r3 == 0) {
0x0005eabc beq.w 0x5e8f2 | goto label_5;
| }
0x0005eac0 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0005eac2 adds r6, 1 | r6++;
0x0005eac4 uxth r6, r6 | r6 = (int16_t) r6;
0x0005eac6 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0005eaca strh.w r6, [r5, 0x46] | *((r5 + 0x46)) = r6;
0x0005eace strb r3, [r5, 1] | *((r5 + 1)) = r3;
0x0005ead0 b 0x5e8f2 | goto label_5;
| label_32:
0x0005ead2 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0005ead4 mov r0, r5 | r0 = r5;
0x0005ead6 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0005eada strb r3, [r5, 1] | *((r5 + 1)) = r3;
0x0005eadc bl 0x57c5c | fcn_00057c5c (r0);
0x0005eae0 ldr r2, [r5, 0x74] | r2 = *((r5 + 0x74));
0x0005eae2 movs r1, 1 | r1 = 1;
0x0005eae4 clz r3, r0 | r3 &= r0;
0x0005eae8 mov r4, r0 | r4 = r0;
0x0005eaea lsrs r3, r3, 5 | r3 >>= 5;
0x0005eaec str r0, [sp, 0x48] | var_48h = r0;
0x0005eaee strb r6, [r2, 0xc] | *((r2 + 0xc)) = r6;
0x0005eaf0 strb r1, [r5] | *(r5) = r1;
0x0005eaf2 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0005eaf4 ands.w r3, r3, r1, lsr 1 | r3 &= (r1 >> 1);
| if (r3 == r3) {
0x0005eaf8 beq.w 0x5e916 | goto label_1;
| }
0x0005eafc ldrsb.w r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x0005eb00 cmp r3, 0 |
| if (r3 < 0) {
0x0005eb02 blt 0x5eb2c | goto label_43;
| }
| if (r3 == 0) {
0x0005eb04 beq 0x5eb20 | goto label_44;
| }
0x0005eb06 add.w r4, r5, 0x74 | r4 = r5 + 0x74;
| do {
0x0005eb0a ldr r3, [r4, 4]! | r3 = *((r4 += 4));
0x0005eb0e adds r6, 1 | r6++;
0x0005eb10 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005eb12 bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005eb16 ldrsb.w r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x0005eb1a cmp r6, r3 |
0x0005eb1c blt 0x5eb0a |
| } while (r6 < r3);
0x0005eb1e ldr r2, [r5, 0x74] | r2 = *((r5 + 0x74));
| label_44:
0x0005eb20 ldr r0, [r2, 0x48] | r0 = *((r2 + 0x48));
0x0005eb22 bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005eb26 movs r3, 0xff | r3 = 0xff;
0x0005eb28 strb.w r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
| label_43:
0x0005eb2c ldr r4, [r5, 0x70] | r4 = *((r5 + 0x70));
| if (r4 != 0) {
0x0005eb2e cbz r4, 0x5eb4c |
0x0005eb30 ldr r4, [sp, 0x20] | r4 = var_20h;
0x0005eb32 ldrd r0, r1, [r4, 8] | __asm ("ldrd r0, r1, [r4, 8]");
0x0005eb36 bl 0x12abc | fcn_00012abc (r0);
0x0005eb3a str r0, [r5, 0x10] | *((r5 + 0x10)) = r0;
0x0005eb3c cmp r0, 0 |
| if (r0 == 0) {
0x0005eb3e beq.w 0x5efea | goto label_45;
| }
0x0005eb42 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0005eb44 ldr r1, [r4] | r1 = *(r4);
0x0005eb46 movs r4, 0 | r4 = 0;
0x0005eb48 blx 0x7dcc | fcn_00007dcc ();
| }
| label_22:
0x0005eb4c movs r3, 3 | r3 = 3;
0x0005eb4e strb r3, [r5] | *(r5) = r3;
0x0005eb50 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005eb52 ldrd r2, r3, [r3, 8] | __asm ("ldrd r2, r3, [r3, 8]");
0x0005eb56 strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
0x0005eb5a b 0x5e916 | goto label_1;
| label_39:
0x0005eb5c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0005eb5e movs r2, 0 | r2 = 0;
0x0005eb60 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0005eb62 ldr r4, [r5, 0x40] | r4 = *((r5 + 0x40));
0x0005eb64 ldrd ip, lr, [r1, 8] | __asm ("ldrd ip, lr, [r1, 8]");
0x0005eb68 strb r2, [r7, 0xb] | *((r7 + 0xb)) = r2;
0x0005eb6a ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0005eb6c cmp r3, 0 |
| if (r3 == 0) {
0x0005eb6e beq.w 0x5e9f2 | goto label_6;
| }
0x0005eb72 mov.w r8, 1 | r8 = 1;
0x0005eb76 mov sb, r0 | sb = r0;
0x0005eb78 mov r1, ip | r1 = ip;
| do {
0x0005eb7a ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0005eb7c lsls r2, r2, 0x1b | r2 <<= 0x1b;
| if (r2 < r2) {
0x0005eb7e bpl 0x5eb9a |
0x0005eb80 strb.w r8, [r7, 0xb] | *((r7 + 0xb)) = r8;
0x0005eb84 ldr r2, [r3, 0x40] | r2 = *((r3 + 0x40));
0x0005eb86 cmp r4, r2 |
| if (r4 != r2) {
0x0005eb88 bne 0x5eb9a | goto label_46;
| }
0x0005eb8a ldrd r0, r2, [r3, 0x20] | __asm ("ldrd r0, r2, [r3, 0x20]");
0x0005eb8e cmp lr, r2 |
0x0005eb90 it eq |
| if (lr == r2) {
0x0005eb92 cmpeq r1, r0 | __asm ("cmpeq r1, r0");
| }
0x0005eb94 it eq |
| if (lr == r2) {
0x0005eb96 strbeq r8, [r3] | *(r3) = r8;
| goto label_46;
| }
| }
| label_46:
0x0005eb9a ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0005eb9c cmp r3, 0 |
0x0005eb9e bne 0x5eb7a |
| } while (r3 != 0);
0x0005eba0 mov r0, sb | r0 = sb;
0x0005eba2 b 0x5e9f2 | goto label_6;
| label_28:
0x0005eba4 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0005eba6 ldrb r3, [r2, 2] | r3 = *((r2 + 2));
0x0005eba8 ldrb.w sl, [r2, 0xa] | sl = *((r2 + 0xa));
0x0005ebac ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005ebae add.w r0, r2, sl | r0 = r2 + sl;
0x0005ebb2 cmp r3, 0 |
| if (r3 == 0) {
0x0005ebb4 beq 0x5ec6a | goto label_47;
| }
0x0005ebb6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005ebb8 ldrd r7, r6, [r3, 0x1c] | __asm ("ldrd r7, r6, [r3, 0x1c]");
0x0005ebbc ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0005ebbe add r6, r7 | r6 += r7;
0x0005ebc0 cmp r6, 0x7f |
0x0005ebc2 str r3, [sp, 0x10] | var_10h = r3;
| if (r6 > 0x7f) {
0x0005ebc4 bhi.w 0x5ef40 | goto label_48;
| }
0x0005ebc8 movs r3, 1 | r3 = 1;
0x0005ebca strb.w r6, [r2, sl] | *((r2 + sl)) = r6;
| label_18:
0x0005ebce add sl, r3 | sl += r3;
0x0005ebd0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005ebd2 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0005ebd4 ldrd r2, r3, [r3, 8] | __asm ("ldrd r2, r3, [r3, 8]");
0x0005ebd8 add.w r0, r1, sl | r0 = r1 + sl;
0x0005ebdc cmp r2, 0x80 |
0x0005ebde sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x80) {
0x0005ebe2 blo.w 0x5ef34 | goto label_49;
| }
0x0005ebe6 cmp.w r2, 0x4000 |
0x0005ebea sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x4000) {
0x0005ebee blo.w 0x5eeee | goto label_50;
| }
0x0005ebf2 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x0005ebf6 add sl, r0 | sl += r0;
0x0005ebf8 b 0x5ec84 | goto label_17;
| label_30:
0x0005ebfa ldr r7, [sp, 0x14] | r7 = var_14h;
0x0005ebfc ldr r0, [r7, 0x48] | r0 = *((r7 + 0x48));
0x0005ebfe bl 0x51680 | r0 = fcn_00051680 (r0);
0x0005ec02 mov r4, r0 | r4 = r0;
0x0005ec04 str r0, [sp, 0x48] | var_48h = r0;
0x0005ec06 cmp r0, 0 |
| if (r0 != 0) {
0x0005ec08 bne.w 0x5e916 | goto label_1;
| }
0x0005ec0c ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x0005ec0e ldrb r1, [r7, 8] | r1 = *((r7 + 8));
0x0005ec10 ldrh.w r2, [r3, r6, lsl 1] | offset_0 = r6 << 1;
| r2 = *((r3 + offset_0));
0x0005ec14 ldrh r3, [r7, 0x1a] | r3 = *((r7 + 0x1a));
0x0005ec16 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0005ec18 ands r3, r2 | r3 &= r2;
0x0005ec1a ldr r2, [r7, 0x38] | r2 = *((r7 + 0x38));
0x0005ec1c adds r7, r2, r3 | r7 = r2 + r3;
0x0005ec1e cmp r1, 0 |
| if (r1 == 0) {
0x0005ec20 beq.w 0x5ef56 | goto label_51;
| }
| label_19:
0x0005ec24 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005ec26 add r2, sp, 0x58 | r2 += var_58h;
0x0005ec28 mov r1, r7 | r1 = r7;
0x0005ec2a ldr r3, [r0, 0x50] | r3 = *((r0 + 0x50));
0x0005ec2c mov r8, r0 | r8 = r0;
0x0005ec2e blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005ec30 ldrh.w r2, [sp, 0x68] | r2 = var_68h;
0x0005ec34 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0005ec36 cmp r2, r3 |
| if (r2 != r3) {
0x0005ec38 bne.w 0x5eeba | goto label_52;
| }
0x0005ec3c ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0005ec3e movs r0, 0 | r0 = 0;
0x0005ec40 ldrh.w r2, [sp, 0x6a] | r2 = var_6ah;
0x0005ec44 str r0, [sp, 0x48] | var_48h = r0;
0x0005ec46 bic r3, r3, 4 | r3 = BIT_MASK (r3, 4);
0x0005ec4a strb r3, [r5, 1] | *((r5 + 1)) = r3;
0x0005ec4c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005ec4e cmp r3, r2 |
| if (r3 == r2) {
0x0005ec50 beq.w 0x5ef7e | goto label_53;
| }
| label_16:
0x0005ec54 add r7, sp, 0x48 | r7 += var_48h;
0x0005ec56 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005ec58 mov r3, r7 | r3 = r7;
0x0005ec5a mov r1, r6 | r1 = r6;
0x0005ec5c bl 0x333e0 | fcn_000333e0 (r0, r1, r2, r3);
0x0005ec60 ldr r4, [sp, 0x48] | r4 = var_48h;
0x0005ec62 cmp r4, 0 |
| if (r4 == 0) {
0x0005ec64 beq.w 0x5e8f4 | goto label_7;
| }
0x0005ec68 b 0x5e916 | goto label_1;
| label_47:
0x0005ec6a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005ec6c ldr r6, [r3, 8] | r6 = *((r3 + 8));
0x0005ec6e ldr r3, [r3] | r3 = *(r3);
0x0005ec70 cmp r6, 0x7f |
0x0005ec72 str r3, [sp, 0x10] | var_10h = r3;
| if (r6 > 0x7f) {
0x0005ec74 bhi.w 0x5ee76 | goto label_54;
| }
| label_14:
0x0005ec78 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005ec7a strb.w r6, [r3, sl] | *((r3 + sl)) = r6;
0x0005ec7e movs r3, 1 | r3 = 1;
| label_15:
0x0005ec80 add sl, r3 | sl += r3;
0x0005ec82 mov r7, r6 | r7 = r6;
| label_17:
0x0005ec84 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005ec86 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005ec88 ldrh r3, [r3, 0xe] | r3 = *((r3 + 0xe));
0x0005ec8a add.w sb, r2, sl | sb = r2 + sl;
0x0005ec8e cmp r3, r6 |
| if (r3 >= r6) {
0x0005ec90 bge.w 0x5ef0c | goto label_55;
| }
0x0005ec94 str r3, [sp, 0x24] | var_24h = r3;
0x0005ec96 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005ec98 ldr.w r8, [r3, 0x34] | r8 = *((r3 + 0x34));
0x0005ec9c ldrh.w fp, [r3, 0x10] | fp = *((r3 + 0x10));
0x0005eca0 movw r3, 0xcccd |
0x0005eca4 movt r3, 0xcccc | r3 = 0xcccccccd;
0x0005eca8 str r3, [sp, 0x40] | var_40h = r3;
0x0005ecaa ldr.w r1, [r8, 0x28] | r1 = *((r8 + 0x28));
0x0005ecae sub.w r0, r6, fp | r0 = r6 - fp;
0x0005ecb2 ldr r3, [pc, 0x37c] |
0x0005ecb4 subs r1, 4 | r1 -= 4;
0x0005ecb6 add r3, pc | r3 = 0xbdcec;
0x0005ecb8 str r3, [sp, 0x3c] | var_3ch = r3;
0x0005ecba bl 0xab8dc | fcn_000ab8dc (r0, r1, r2);
0x0005ecbe ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005ecc0 add.w r4, r1, fp | r4 = r1 + fp;
0x0005ecc4 str r5, [sp, 0x44] | var_44h = r5;
0x0005ecc6 cmp r3, r4 |
0x0005ecc8 it lt |
| if (r3 >= r4) {
0x0005ecca movlt r4, fp | r4 = fp;
| }
0x0005eccc movs r3, 0 | r3 = 0;
0x0005ecce add sl, r4 | sl += r4;
0x0005ecd0 str r3, [sp, 0x54] | var_54h = r3;
0x0005ecd2 str r3, [sp, 0x24] | var_24h = r3;
0x0005ecd4 add.w r3, sl, 4 | r3 = sl + 4;
0x0005ecd8 str r3, [sp, 0x34] | var_34h = r3;
0x0005ecda ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005ecdc add r3, sl | r3 += sl;
0x0005ecde str r3, [sp, 0x2c] | var_2ch = r3;
0x0005ece0 mov r3, sb | r3 = sb;
| label_9:
0x0005ece2 cmp r4, r6 |
0x0005ece4 mov sl, r4 | sl = r4;
0x0005ece6 it ge |
| if (r4 < r6) {
0x0005ece8 movge sl, r6 | sl = r6;
| }
0x0005ecea cmp sl, r7 |
| if (sl <= r7) {
0x0005ecec ble 0x5ed8a | goto label_56;
| }
| do {
0x0005ecee cmp r7, 0 |
| if (r7 <= 0) {
0x0005ecf0 ble 0x5ed9c | goto label_57;
| }
0x0005ecf2 mov r0, r3 | r0 = r3;
0x0005ecf4 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0005ecf6 mov r2, r7 | r2 = r7;
0x0005ecf8 mov sl, r7 | sl = r7;
0x0005ecfa blx 0x7dcc | r0 = fcn_00007dcc ();
0x0005ecfe mov r3, r0 | r3 = r0;
| label_8:
0x0005ed00 sub.w r6, r6, sl | r6 -= sl;
0x0005ed04 cmp r6, 0 |
| if (r6 <= 0) {
0x0005ed06 ble.w 0x5ee4a | goto label_58;
| }
0x0005ed0a ldr r2, [sp, 0x10] | r2 = var_10h;
0x0005ed0c subs.w r4, r4, sl | r4 -= sl;
0x0005ed10 sub.w r7, r7, sl | r7 -= sl;
0x0005ed14 add r2, sl | r2 += sl;
0x0005ed16 str r2, [sp, 0x10] | var_10h = r2;
| if (r4 != r4) {
0x0005ed18 bne 0x5ed98 | goto label_59;
| }
0x0005ed1a str r4, [sp, 0x58] | var_58h = r4;
0x0005ed1c ldr r2, [sp, 0x54] | r2 = var_54h;
0x0005ed1e ldrb.w r3, [r8, 0x11] | r3 = *((r8 + 0x11));
0x0005ed22 str r2, [sp, 0x28] | var_28h = r2;
0x0005ed24 ldr r4, [sp, 0x28] | r4 = var_28h;
0x0005ed26 cmp r3, 0 |
| if (r3 != 0) {
0x0005ed28 bne 0x5edaa | goto label_60;
| }
| label_10:
0x0005ed2a movs r2, 0 | r2 = 0;
0x0005ed2c mov r3, r4 | r3 = r4;
0x0005ed2e str r2, [sp] | *(sp) = r2;
0x0005ed30 add r1, sp, 0x58 | r1 += var_58h;
0x0005ed32 add r2, sp, 0x54 | r2 += var_54h;
0x0005ed34 mov r0, r8 | r0 = r8;
0x0005ed36 bl 0x55140 | fcn_00055140 (r0, r1, r2, r3, r4, r5, r6);
0x0005ed3a ldrb.w r3, [r8, 0x11] | r3 = *((r8 + 0x11));
0x0005ed3e str r0, [sp, 0x50] | var_50h = r0;
0x0005ed40 subs r3, 0 |
0x0005ed42 it ne |
| if (r3 == 0) {
0x0005ed44 movne r3, 1 | r3 = 1;
| }
0x0005ed46 cmp r0, 0 |
0x0005ed48 it ne |
| if (r0 == 0) {
0x0005ed4a movne r3, 0 | r3 = 0;
| }
0x0005ed4c cmp r3, 0 |
| if (r3 != 0) {
0x0005ed4e bne 0x5ee10 | goto label_61;
| }
0x0005ed50 cmp r0, 0 |
| if (r0 != 0) {
0x0005ed52 bne.w 0x5f014 | goto label_62;
| }
0x0005ed56 ldr r4, [sp, 0x54] | r4 = var_54h;
| label_11:
0x0005ed58 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005ed5a rev r4, r4 | r4 = SWAP32 (r4);
0x0005ed5c str r4, [r3] | *(r3) = r4;
0x0005ed5e ldr r3, [sp, 0x24] | r3 = var_24h;
| if (r3 != 0) {
0x0005ed60 cbz r3, 0x5ed68 |
0x0005ed62 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005ed64 bl 0x11fa4 | fcn_00011fa4 (r0);
| }
0x0005ed68 ldr r2, [sp, 0x58] | r2 = var_58h;
0x0005ed6a movs r3, 0 | r3 = 0;
0x0005ed6c ldr r1, [r2, 0x38] | r1 = *((r2 + 0x38));
0x0005ed6e str r2, [sp, 0x24] | var_24h = r2;
0x0005ed70 str r3, [r1] | *(r1) = r3;
0x0005ed72 ldr.w r4, [r8, 0x28] | r4 = *((r8 + 0x28));
0x0005ed76 ldr r3, [r2, 0x38] | r3 = *((r2 + 0x38));
0x0005ed78 str r1, [sp, 0x2c] | var_2ch = r1;
0x0005ed7a subs r4, 4 | r4 -= 4;
0x0005ed7c cmp r4, r6 |
0x0005ed7e mov sl, r4 | sl = r4;
0x0005ed80 it ge |
| if (r4 < r6) {
0x0005ed82 movge sl, r6 | sl = r6;
| }
0x0005ed84 adds r3, 4 | r3 += 4;
0x0005ed86 cmp sl, r7 |
0x0005ed88 bgt 0x5ecee |
| } while (sl > r7);
| label_56:
0x0005ed8a mov r0, r3 | r0 = r3;
0x0005ed8c ldr r1, [sp, 0x10] | r1 = var_10h;
0x0005ed8e mov r2, sl | r2 = sl;
0x0005ed90 blx 0x7dcc | r0 = fcn_00007dcc ();
0x0005ed94 mov r3, r0 | r3 = r0;
0x0005ed96 b 0x5ed00 | goto label_8;
| label_59:
0x0005ed98 add r3, sl | r3 += sl;
0x0005ed9a b 0x5ece2 | goto label_9;
| label_57:
0x0005ed9c mov r0, r3 | r0 = r3;
0x0005ed9e mov r2, sl | r2 = sl;
0x0005eda0 movs r1, 0 | r1 = 0;
0x0005eda2 blx 0x8264 | r0 = fcn_00008264 ();
0x0005eda6 mov r3, r0 | r3 = r0;
0x0005eda8 b 0x5ed00 | goto label_8;
| label_60:
0x0005edaa ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005edac ldr.w sb, [r8, 0x24] | sb = *((r8 + 0x24));
0x0005edb0 ldr r4, [sp, 0x40] | r4 = var_40h;
0x0005edb2 ldr.w sl, [r3, 0x118] | sl = *((r3 + 0x118));
0x0005edb6 str r6, [sp, 0x38] | var_38h = r6;
0x0005edb8 mov r6, r2 | r6 = r2;
| do {
0x0005edba add.w fp, r6, 1 |
0x0005edbe cmp.w fp, 1 |
0x0005edc2 it ls |
| if (fp > 1) {
0x0005edc4 movls r2, 0 | r2 = 0;
| }
| if (fp >= 1) {
0x0005edc6 bls 0x5edf2 |
0x0005edc8 ldr.w r5, [r8, 0x28] | r5 = *((r8 + 0x28));
0x0005edcc subs r0, r6, 1 | r0 = r6 - 1;
0x0005edce umull r2, r5, r4, r5 | r2:r5 = r4 * r5;
0x0005edd2 lsrs r5, r5, 2 | r5 >>= 2;
0x0005edd4 adds r5, 1 | r5++;
0x0005edd6 mov r1, r5 | r1 = r5;
0x0005edd8 bl 0xab680 | r0 = fcn_000ab680 (r0, r1, r2);
0x0005eddc mul r5, r0, r5 | r5 = r0 * r5;
0x0005ede0 mov r1, sb | r1 = sb;
0x0005ede2 mov r0, sl | r0 = sl;
0x0005ede4 bl 0xab680 | fcn_000ab680 (r0, r1, r2);
0x0005ede8 adds r2, r5, 2 | r2 = r5 + 2;
0x0005edea adds r0, 1 | r0++;
0x0005edec cmp r2, r0 |
0x0005edee it eq |
| if (r2 == r0) {
0x0005edf0 addeq r2, r5, 3 | r2 = r5 + 3;
| goto label_63;
| }
| }
| label_63:
0x0005edf2 cmp fp, r2 |
| if (fp != r2) {
0x0005edf4 beq 0x5ee02 |
0x0005edf6 mov r1, sb | r1 = sb;
0x0005edf8 mov r0, sl | r0 = sl;
0x0005edfa bl 0xab680 | r0 = fcn_000ab680 (r0, r1, r2);
0x0005edfe cmp r6, r0 |
| if (r6 != r0) {
0x0005ee00 bne 0x5ee06 | goto label_64;
| }
| }
0x0005ee02 mov r6, fp | r6 = fp;
0x0005ee04 b 0x5edba |
| } while (1);
| label_64:
0x0005ee06 ldr r6, [sp, 0x38] | r6 = var_38h;
0x0005ee08 mov r4, fp | r4 = fp;
0x0005ee0a str.w fp, [sp, 0x54] | __asm ("str.w fp, [var_54h]");
0x0005ee0e b 0x5ed2a | goto label_10;
| label_61:
0x0005ee10 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005ee12 add r2, sp, 0x50 | r2 += var_50h;
0x0005ee14 ldr r4, [sp, 0x54] | r4 = var_54h;
0x0005ee16 mov r0, r8 | r0 = r8;
0x0005ee18 str r2, [sp] | *(sp) = r2;
0x0005ee1a cmp r3, 0 |
0x0005ee1c ite ne |
| if (r3 == 0) {
0x0005ee1e movne r2, 4 | r2 = 4;
| }
| if (r3 != 0) {
0x0005ee20 moveq r2, 3 | r2 = 3;
| }
0x0005ee22 mov r1, r4 | r1 = r4;
0x0005ee24 bl 0x557bc | fcn_000557bc (r0, r1, r2, r3, r4);
0x0005ee28 ldr r0, [sp, 0x50] | r0 = var_50h;
0x0005ee2a cmp r0, 0 |
| if (r0 == 0) {
0x0005ee2c beq 0x5ed58 | goto label_11;
| }
0x0005ee2e ldr r3, [sp, 0x58] | r3 = var_58h;
0x0005ee30 mov r4, r0 | r4 = r0;
| if (r3 != 0) {
0x0005ee32 cbz r3, 0x5ee3a |
0x0005ee34 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005ee36 bl 0x11fa4 | fcn_00011fa4 (r0);
| }
| label_23:
0x0005ee3a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005ee3c cmp r3, 0 |
| if (r3 == 0) {
0x0005ee3e beq.w 0x5e916 | goto label_1;
| }
0x0005ee42 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005ee44 bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005ee48 b 0x5e916 | goto label_1;
| label_58:
0x0005ee4a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005ee4c ldr r5, [sp, 0x44] | r5 = var_44h;
0x0005ee4e cmp r3, 0 |
| if (r3 == 0) {
0x0005ee50 beq 0x5ef06 | goto label_65;
| }
0x0005ee52 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x0005ee54 bl 0x11fa4 | fcn_00011fa4 (r0);
0x0005ee58 movs r3, 0 | r3 = 0;
0x0005ee5a str r3, [sp, 0x48] | var_48h = r3;
0x0005ee5c b 0x5e8e2 | goto label_12;
| label_36:
0x0005ee5e ldr r1, [sp, 0x20] | r1 = var_20h;
0x0005ee60 add r3, sp, 0x4c | r3 += var_4ch;
0x0005ee62 str r3, [sp, 4] | var_4h = r3;
0x0005ee64 mov r0, r5 | r0 = r5;
0x0005ee66 ldrd r2, r3, [r1, 8] | __asm ("ldrd r2, r3, [r1, 8]");
0x0005ee6a ldr r1, [r1] | r1 = *(r1);
0x0005ee6c bl 0x5dfd8 | r0 = fcn_0005dfd8 (r0, r1, r2, r3, r4, r5);
0x0005ee70 mov r4, r0 | r4 = r0;
0x0005ee72 str r0, [sp, 0x48] | var_48h = r0;
0x0005ee74 b 0x5e984 | goto label_13;
| label_54:
0x0005ee76 asrs r3, r6, 0x1f | r3 = r6 >> 0x1f;
0x0005ee78 cmp r6, 0x80 |
0x0005ee7a sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r6 <= 0x80) {
0x0005ee7e blo.w 0x5ec78 | goto label_14;
| }
0x0005ee82 cmp.w r6, 0x4000 |
0x0005ee86 sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r6 <= 0x4000) {
0x0005ee8a blo.w 0x5efbe | goto label_66;
| }
0x0005ee8e mov r2, r6 | r2 = r6;
0x0005ee90 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x0005ee94 uxtb r3, r0 | r3 = (int8_t) r0;
0x0005ee96 b 0x5ec80 | goto label_15;
| label_29:
0x0005ee98 mov r3, r8 | r3 = r8;
0x0005ee9a movs r2, 3 | r2 = 3;
0x0005ee9c add r3, r4 | r3 += r4;
0x0005ee9e mov r0, r6 | r0 = r6;
0x0005eea0 ldr r1, [r3, -0x4] | r1 = *((r3 - 0x4));
0x0005eea4 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0005eea6 add r7, sp, 0x48 | r7 += var_48h;
0x0005eea8 str r7, [sp] | *(sp) = r7;
0x0005eeaa rev r1, r1 | r1 = SWAP32 (r1);
0x0005eeac bl 0x557bc | fcn_000557bc (r0, r1, r2, r3, r4);
0x0005eeb0 ldr r4, [sp, 0x48] | r4 = var_48h;
0x0005eeb2 cmp r4, 0 |
| if (r4 != 0) {
0x0005eeb4 bne.w 0x5e916 | goto label_1;
| }
0x0005eeb8 b 0x5e8e2 | goto label_12;
| label_52:
0x0005eeba ldr.w r1, [r8, 0x3c] | r1 = *((r8 + 0x3c));
0x0005eebe ldr.w r0, [r8, 0x34] | r0 = *((r8 + 0x34));
0x0005eec2 str r2, [sp] | *(sp) = r2;
0x0005eec4 ldrh.w r2, [sp, 0x6a] | r2 = var_6ah;
0x0005eec8 str r2, [sp, 4] | var_4h = r2;
0x0005eeca mov r2, r7 | r2 = r7;
0x0005eecc bl 0x566b8 | fcn_000566b8 (r0, r1, r2, r3);
0x0005eed0 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0005eed2 ldrh.w r2, [sp, 0x6a] | r2 = var_6ah;
0x0005eed6 str r0, [sp, 0x48] | var_48h = r0;
0x0005eed8 bic r3, r3, 4 | r3 = BIT_MASK (r3, 4);
0x0005eedc strb r3, [r5, 1] | *((r5 + 1)) = r3;
0x0005eede ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005eee0 cmp r2, r3 |
| if (r2 == r3) {
0x0005eee2 beq 0x5ef74 | goto label_67;
| }
| label_21:
0x0005eee4 mov r4, r0 | r4 = r0;
0x0005eee6 cmp r0, 0 |
| if (r0 != 0) {
0x0005eee8 bne.w 0x5e916 | goto label_1;
| }
0x0005eeec b 0x5ec54 | goto label_16;
| label_50:
0x0005eeee lsrs r3, r2, 7 | r3 = r2 >> 7;
0x0005eef0 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0005eef2 and r2, r2, 0x7f | r2 &= 0x7f;
0x0005eef6 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x0005eefa strb.w r3, [r1, sl] | *((r1 + sl)) = r3;
0x0005eefe strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x0005ef00 movs r0, 2 | r0 = 2;
0x0005ef02 add sl, r0 | sl += r0;
0x0005ef04 b 0x5ec84 | goto label_17;
| label_65:
0x0005ef06 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005ef08 str r3, [sp, 0x48] | var_48h = r3;
0x0005ef0a b 0x5e8e2 | goto label_12;
| label_55:
0x0005ef0c add.w r3, sl, r6 | r3 = sl + r6;
0x0005ef10 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0005ef12 cmp r3, 4 |
0x0005ef14 mov r2, r7 | r2 = r7;
0x0005ef16 it lt |
| if (r3 >= 4) {
0x0005ef18 movlt r3, 4 | r3 = 4;
| }
0x0005ef1a mov r0, sb | r0 = sb;
0x0005ef1c str r3, [sp, 0x34] | var_34h = r3;
0x0005ef1e blx 0x7dcc | fcn_00007dcc ();
0x0005ef22 subs r2, r6, r7 | r2 = r6 - r7;
0x0005ef24 add.w r0, sb, r7 | r0 = sb + r7;
0x0005ef28 movs r1, 0 | r1 = 0;
0x0005ef2a blx 0x8264 | fcn_00008264 ();
0x0005ef2e movs r3, 0 | r3 = 0;
0x0005ef30 str r3, [sp, 0x48] | var_48h = r3;
0x0005ef32 b 0x5e8e2 | goto label_12;
| label_49:
0x0005ef34 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005ef36 movs r0, 1 | r0 = 1;
0x0005ef38 strb.w r2, [r3, sl] | *((r3 + sl)) = r2;
0x0005ef3c add sl, r0 | sl += r0;
0x0005ef3e b 0x5ec84 | goto label_17;
| label_48:
0x0005ef40 asrs r3, r6, 0x1f | r3 = r6 >> 0x1f;
0x0005ef42 cmp.w r6, 0x4000 |
0x0005ef46 sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r6 <= 0x4000) {
0x0005ef4a blo 0x5efd4 | goto label_68;
| }
0x0005ef4c mov r2, r6 | r2 = r6;
0x0005ef4e bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x0005ef52 uxtb r3, r0 | r3 = (int8_t) r0;
0x0005ef54 b 0x5ebce | goto label_18;
| label_51:
0x0005ef56 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0005ef58 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005ef5a str r3, [r2] | *(r2) = r3;
0x0005ef5c b 0x5ec24 | goto label_19;
| label_38:
0x0005ef5e blx 0x7f8c | fcn_00007f8c ();
0x0005ef62 ldr r2, [pc, 0xd0] |
0x0005ef64 add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x0005ef68 ldr r1, [pc, 0xcc] |
0x0005ef6a movw r3, 0x21e2 | r3 = 0x21e2;
0x0005ef6e add r2, pc | r2 = 0xbdfa8;
0x0005ef70 add r1, pc | r1 = 0xbdfac;
0x0005ef72 b 0x5ea42 | goto label_20;
| label_67:
0x0005ef74 ldrh.w r1, [sp, 0x68] | r1 = var_68h;
0x0005ef78 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0005ef7a cmp r1, r3 |
| if (r1 != r3) {
0x0005ef7c bne 0x5eee4 | goto label_21;
| }
| label_53:
0x0005ef7e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005ef80 ldrb r3, [r3, 0x11] | r3 = *((r3 + 0x11));
| if (r3 == 0) {
0x0005ef82 cbz r3, 0x5ef8e | goto label_69;
| }
0x0005ef84 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005ef86 ldr r1, [sp, 0x34] | r1 = var_34h;
0x0005ef88 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0005ef8a cmp r3, r1 |
| if (r3 <= r1) {
0x0005ef8c ble 0x5eee4 | goto label_21;
| }
| label_69:
0x0005ef8e ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005ef90 ldrb r2, [r3, 9] | r2 = *((r3 + 9));
0x0005ef92 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x0005ef94 adds r2, 0xa | r2 += 0xa;
0x0005ef96 add r3, r2 | r3 += r2;
0x0005ef98 cmp r7, r3 |
| if (r7 > r3) {
0x0005ef9a blo 0x5effa |
0x0005ef9c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005ef9e ldr r2, [r3, 0x3c] | r2 = *((r3 + 0x3c));
0x0005efa0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005efa2 adds r3, r7, r3 | r3 = r7 + r3;
0x0005efa4 cmp r2, r3 |
| if (r2 < r3) {
0x0005efa6 bhs 0x5efee |
0x0005efa8 blx 0x7f8c | fcn_00007f8c ();
0x0005efac ldr r2, [pc, 0x8c] |
0x0005efae add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x0005efb2 ldr r1, [pc, 0x8c] |
0x0005efb4 movw r3, 0x2286 | r3 = 0x2286;
0x0005efb8 add r2, pc | r2 = 0xbdff8;
0x0005efba add r1, pc | r1 = 0xbe000;
0x0005efbc b 0x5ea42 | goto label_20;
| label_66:
0x0005efbe ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005efc0 lsrs r3, r6, 7 | r3 = r6 >> 7;
0x0005efc2 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x0005efc6 strb.w r3, [r2, sl] | *((r2 + sl)) = r3;
0x0005efca and r3, r6, 0x7f | r3 = r6 & 0x7f;
0x0005efce strb r3, [r0, 1] | *((r0 + 1)) = r3;
0x0005efd0 movs r3, 2 | r3 = 2;
0x0005efd2 b 0x5ec80 | goto label_15;
| label_68:
0x0005efd4 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005efd6 lsrs r3, r6, 7 | r3 = r6 >> 7;
0x0005efd8 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x0005efdc strb.w r3, [r2, sl] | *((r2 + sl)) = r3;
0x0005efe0 and r3, r6, 0x7f | r3 = r6 & 0x7f;
0x0005efe4 strb r3, [r0, 1] | *((r0 + 1)) = r3;
0x0005efe6 movs r3, 2 | r3 = 2;
0x0005efe8 b 0x5ebce | goto label_18;
| label_45:
0x0005efea movs r4, 7 | r4 = 7;
0x0005efec b 0x5eb4c | goto label_22;
| }
0x0005efee ldrd r1, r2, [sp, 0x30] | __asm ("ldrd r1, r2, [var_30h]");
0x0005eff2 mov r0, r7 | r0 = r7;
0x0005eff4 blx 0x7dcc | fcn_00007dcc ();
0x0005eff8 b 0x5e916 | goto label_1;
| }
0x0005effa blx 0x7f8c | fcn_00007f8c ();
0x0005effe ldr r2, [pc, 0x44] |
0x0005f000 add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x0005f004 ldr r1, [pc, 0x40] |
0x0005f006 movw r3, 0x2283 | r3 = 0x2283;
0x0005f00a add r2, pc | r2 = 0xbe054;
0x0005f00c add r1, pc | r1 = 0xbe058;
0x0005f00e b 0x5ea42 | goto label_20;
| label_33:
0x0005f010 blx 0x7e8c | r0 = fcn_00007e8c ();
| label_62:
0x0005f014 mov r4, r0 | r4 = r0;
0x0005f016 b 0x5ee3a | goto label_23;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5f1a0 */
| #include <stdint.h>
|
; (fcn) fcn.0005f1a0 () | void fcn_0005f1a0 (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;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0005f1a0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005f1a4 sub sp, 0x54 |
0x0005f1a6 str r2, [sp, 0x2c] | var_2ch = r2;
0x0005f1a8 mov r5, r2 | r5 = r2;
0x0005f1aa mov r4, r3 | r4 = r3;
0x0005f1ac mov r7, r0 | r7 = r0;
0x0005f1ae ldr r2, [pc, 0x358] |
0x0005f1b0 str r3, [sp, 0x30] | var_30h = r3;
0x0005f1b2 ldr r3, [pc, 0x358] | r3 = *(0x5f50e);
0x0005f1b4 add r2, pc | r2 = 0xbe6c2;
0x0005f1b6 ldr r3, [r2, r3] |
0x0005f1b8 ldr r3, [r3] | r3 = *(0xbe6c2);
0x0005f1ba str r3, [sp, 0x4c] | var_4ch = r3;
0x0005f1bc mov.w r3, 0 | r3 = 0;
0x0005f1c0 movs r3, 0 | r3 = 0;
0x0005f1c2 strd r3, r3, [sp, 0x40] | __asm ("strd r3, r3, [var_44h]");
0x0005f1c6 str r3, [sp, 0x3c] | var_3ch = r3;
0x0005f1c8 str r3, [sp, 0x48] | var_48h = r3;
0x0005f1ca str r1, [sp, 0x1c] | var_1ch = r1;
0x0005f1cc cmp r1, 0 |
| if (r1 == 0) {
0x0005f1ce beq.w 0x5f488 | goto label_18;
| }
0x0005f1d2 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0005f1d4 ldr r4, [r2] | r4 = *(r2);
0x0005f1d6 add.w r5, r4, r4, lsl 2 | r5 = r4 + (r4 << 2);
0x0005f1da lsls r5, r5, 2 | r5 <<= 2;
0x0005f1dc cmp r0, 0 |
| if (r0 == 0) {
0x0005f1de beq.w 0x5f36e | goto label_19;
| }
0x0005f1e2 mov r2, r5 | r2 = r5;
0x0005f1e4 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0005f1e8 str r0, [sp, 0x28] | var_28h = r0;
| label_4:
0x0005f1ea ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r3 != 0) {
0x0005f1ec cbz r3, 0x5f1f8 |
0x0005f1ee mov r2, r5 | r2 = r5;
0x0005f1f0 movs r1, 0 | r1 = 0;
0x0005f1f2 mov r0, r3 | r0 = r3;
0x0005f1f4 blx 0x8264 | fcn_00008264 ();
| }
0x0005f1f8 movw r3, 0x7fff | r3 = 0x7fff;
0x0005f1fc ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0005f1fe cmp r3, r4 |
0x0005f200 it ge |
| if (r3 < r4) {
0x0005f202 movge r3, r4 | r3 = r4;
| }
0x0005f204 cmp r4, 0 |
0x0005f206 strh r3, [r2] | *(r2) = r3;
0x0005f208 str r3, [sp, 0x20] | var_20h = r3;
0x0005f20a ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005f20c ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005f20e str r3, [r2] | *(r2) = r3;
| if (r4 <= 0) {
0x0005f210 ble.w 0x5f4fc | goto label_20;
| }
0x0005f214 ldr r2, [pc, 0x2f8] |
0x0005f216 ldr r6, [pc, 0x2fc] |
0x0005f218 ldr.w r8, [pc, 0x2fc] |
0x0005f21c add r2, pc | r2 = 0xbe730;
0x0005f21e str r2, [sp, 0x24] | var_24h = r2;
0x0005f220 add r6, pc | r6 = 0xbe73a;
0x0005f222 ldr r2, [pc, 0x2f8] |
0x0005f224 add r8, pc | r8 = 0xbe740;
0x0005f226 add r2, pc | r2 = 0xbe748;
0x0005f228 str r2, [sp, 0x34] | var_34h = r2;
0x0005f22a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0005f22c strd r3, r2, [sp, 0x10] | __asm ("strd r3, r2, [var_14h]");
0x0005f230 movs r3, 1 | r3 = 1;
0x0005f232 str r3, [sp, 0xc] | var_ch = r3;
| label_1:
0x0005f234 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005f236 ldrb.w r4, [r7, 0x53] | r4 = *((r7 + 0x53));
0x0005f23a subs r3, 1 | r3--;
0x0005f23c str r3, [sp, 0x18] | var_18h = r3;
0x0005f23e cmp r4, 0 |
| if (r4 != 0) {
0x0005f240 bne 0x5f318 | goto label_17;
| }
0x0005f242 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005f244 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x0005f246 cmp r1, 0 |
| if (r1 == 0) {
0x0005f248 beq.w 0x5f426 | goto label_21;
| }
0x0005f24c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005f24e ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005f250 add.w r3, r3, r2, lsl 4 | r3 += (r2 << 4);
0x0005f254 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x0005f256 lsls r0, r3, 0x1e | r0 = r3 << 0x1e;
| if (r0 != r3) {
0x0005f258 bne.w 0x5f426 | goto label_21;
| }
| label_10:
0x0005f25c ldrb r0, [r1] | r0 = *(r1);
| label_14:
0x0005f25e ldr.w ip, [pc, 0x2c0] |
0x0005f262 mov r3, r0 | r3 = r0;
0x0005f264 mov r5, r1 | r5 = r1;
0x0005f266 movs r2, 0x74 | r2 = 0x74;
0x0005f268 add ip, pc | ip = 0xbe78e;
0x0005f26a b 0x5f286 |
| while (r3 != r2) {
0x0005f26c add r3, r6 | r3 += r6;
0x0005f26e add r2, r6 | r2 += r6;
0x0005f270 ldrb.w lr, [r3, 0x140] |
0x0005f274 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x0005f278 cmp lr, r3 |
| if (lr != r3) {
0x0005f27a bne.w 0x5f3ec | goto label_22;
| }
| label_0:
0x0005f27e ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
0x0005f282 ldrb r2, [ip, 1]! | r2 = *((ip += 1));
0x0005f286 cmp r3, r2 |
0x0005f288 bne 0x5f26c |
| }
0x0005f28a cmp r3, 0 |
| if (r3 != 0) {
0x0005f28c bne 0x5f27e | goto label_0;
| }
| label_8:
0x0005f28e ldr r5, [sp, 0xc] | r5 = var_ch;
0x0005f290 mov r0, r7 | r0 = r7;
0x0005f292 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005f294 mov r2, r5 | r2 = r5;
0x0005f296 bl 0x2677c | r0 = fcn_0002677c (r0);
0x0005f29a mov fp, r0 |
0x0005f29c str r5, [sp, 0x18] | var_18h = r5;
| label_9:
0x0005f29e movs r2, 0 | r2 = 0;
0x0005f2a0 str r2, [sp, 0x38] | var_38h = r2;
0x0005f2a2 cmp.w fp, 0 |
| if (fp == 0) {
0x0005f2a6 beq 0x5f2f6 | goto label_3;
| }
0x0005f2a8 ldr r5, [pc, 0x278] |
0x0005f2aa add.w sb, sp, 0x3c | sb += var_3ch;
0x0005f2ae ldr.w sl, [pc, 0x278] | sl = *(0x0005f528);
0x0005f2b2 add r5, pc | r5 = 0xbe7da;
0x0005f2b4 mov r3, r5 | r3 = r5;
0x0005f2b6 add sl, pc | sl += pc;
0x0005f2b8 mov r5, fp | r5 = fp;
0x0005f2ba mov fp, r3 |
| do {
| label_2:
0x0005f2bc movs r2, 0 | r2 = 0;
0x0005f2be mov r1, r5 | r1 = r5;
0x0005f2c0 mov r0, sb | r0 = sb;
0x0005f2c2 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x0005f2c6 ldr r3, [r0, 8] | r3 = var_44h;
0x0005f2c8 cmp r3, 0 |
| if (r3 == 0) {
0x0005f2ca beq 0x5f3ac | goto label_23;
| }
0x0005f2cc mov r0, r5 | r0 = r5;
0x0005f2ce blx 0x8160 | r0 = fcn_00008160 ();
0x0005f2d2 bics r2, r0, 0xc0000000 | __asm ("bics r2, r0, aav.0x000000ff");
| if (r3 != 0) {
0x0005f2d6 bne 0x5f37a | goto label_24;
| }
| label_5:
0x0005f2d8 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0005f2da mov r3, r5 | r3 = r5;
0x0005f2dc mov r0, r7 | r0 = r7;
0x0005f2de adds r1, 1 | r1++;
0x0005f2e0 str r1, [sp] | *(sp) = r1;
0x0005f2e2 str r1, [sp, 0x38] | var_38h = r1;
0x0005f2e4 mov r1, sl | r1 = sl;
0x0005f2e6 bl 0x2677c | fcn_0002677c (r0);
0x0005f2ea ldr r3, [sp, 0x38] | r3 = var_38h;
0x0005f2ec mov r5, r0 | r5 = r0;
0x0005f2ee cmp r3, 3 |
| if (r3 > 3) {
0x0005f2f0 bhi 0x5f360 | goto label_25;
| }
0x0005f2f2 cmp r5, 0 |
0x0005f2f4 bne 0x5f2bc |
| } while (r5 != 0);
| label_3:
0x0005f2f6 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0005f2f8 movs r3, 0 | r3 = 0;
0x0005f2fa str r3, [r2] | *(r2) = r3;
0x0005f2fc strb r3, [r2, 0xf] | *((r2 + 0xf)) = r3;
| label_6:
0x0005f2fe ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005f300 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0005f302 adds r3, 0x14 | r3 += 0x14;
0x0005f304 str r3, [sp, 0x10] | var_10h = r3;
0x0005f306 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005f308 adds r3, 1 | r3++;
0x0005f30a str r3, [sp, 0xc] | var_ch = r3;
0x0005f30c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005f30e adds r3, 0x10 | r3 += 0x10;
0x0005f310 str r3, [sp, 0x14] | var_14h = r3;
0x0005f312 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005f314 cmp r3, r2 |
| if (r3 > r2) {
0x0005f316 bgt 0x5f234 | goto label_1;
| }
| label_17:
0x0005f318 ldr r4, [sp, 0x44] | r4 = var_44h;
0x0005f31a movs r5, 0 | r5 = 0;
0x0005f31c ldr r0, [sp, 0x48] | r0 = var_48h;
0x0005f31e str r5, [sp, 0x44] | var_44h = r5;
0x0005f320 blx 0x84f8 | fcn_000084f8 ();
0x0005f324 str r5, [sp, 0x48] | var_48h = r5;
0x0005f326 str r5, [sp, 0x3c] | var_3ch = r5;
| if (r4 == 0) {
0x0005f328 cbz r4, 0x5f336 | goto label_26;
| }
| do {
0x0005f32a mov r0, r4 | r0 = r4;
0x0005f32c ldr r4, [r4] | r4 = *(r4);
0x0005f32e blx 0x84f8 | fcn_000084f8 ();
0x0005f332 cmp r4, 0 |
0x0005f334 bne 0x5f32a |
| } while (r4 != 0);
| label_26:
0x0005f336 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x0005f33a movs r4, 0 | r4 = 0;
0x0005f33c str r4, [sp, 0x40] | var_40h = r4;
0x0005f33e cmp r3, 0 |
| if (r3 != 0) {
0x0005f340 bne.w 0x5f4c8 | goto label_27;
| }
| label_12:
0x0005f344 ldr r2, [pc, 0x1e4] |
0x0005f346 ldr r3, [pc, 0x1c4] | r3 = *(0x5f50e);
0x0005f348 add r2, pc | r2 = 0xbe878;
0x0005f34a ldr r3, [r2, r3] | r3 = *(0xbe878);
0x0005f34c ldr r2, [r3] | r2 = *(0xbe878);
0x0005f34e ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0005f350 eors r2, r3 | r2 ^= r3;
0x0005f352 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005f356 bne.w 0x5f4f8 | goto label_28;
| }
0x0005f35a add sp, 0x54 |
0x0005f35c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_25:
0x0005f360 add r1, sp, 0x38 | r1 += var_38h;
0x0005f362 movs r0, 4 | r0 = 4;
0x0005f364 blx 0x819c | fcn_0000819c ();
0x0005f368 cmp r5, 0 |
| if (r5 != 0) {
0x0005f36a bne 0x5f2bc | goto label_2;
| }
0x0005f36c b 0x5f2f6 | goto label_3;
| label_19:
0x0005f36e mov r0, r5 | r0 = r5;
0x0005f370 mov r1, r7 | r1 = r7;
0x0005f372 bl 0x12abc | fcn_00012abc (r0);
0x0005f376 str r0, [sp, 0x28] | var_28h = r0;
0x0005f378 b 0x5f1ea | goto label_4;
| label_24:
0x0005f37a subs r3, r2, 1 | r3 = r2 - 1;
0x0005f37c it ne |
| if (r3 == r2) {
0x0005f37e addne r0, r5, r2 | r0 = r5 + r2;
| }
| if (r3 != r2) {
0x0005f380 bne 0x5f388 | goto label_29;
| }
0x0005f382 b 0x5f3a2 | goto label_30;
| do {
0x0005f384 subs r3, 1 | r3--;
| if (r3 == 1) {
0x0005f386 beq 0x5f3a2 | goto label_30;
| }
| label_29:
0x0005f388 ldrb r1, [r0, -0x1]! | r1 = *((r0 -= 0x1));
0x0005f38c add.w ip, fp, r1 |
0x0005f390 ldrb.w ip, [ip, 0x40] | ip = *((ip + 0x40));
0x0005f394 tst.w ip, 4 |
0x0005f398 bne 0x5f384 |
| } while ((ip & 4) != 0);
0x0005f39a cmp r1, 0x3a |
0x0005f39c it eq |
| if (r1 != 0x3a) {
0x0005f39e moveq r2, r3 | r2 = r3;
| }
0x0005f3a0 b 0x5f2d8 | goto label_5;
| label_30:
0x0005f3a2 ldrb r1, [r5] | r1 = *(r5);
0x0005f3a4 cmp r1, 0x3a |
0x0005f3a6 it eq |
| if (r1 != 0x3a) {
0x0005f3a8 moveq r2, r3 | r2 = r3;
| }
0x0005f3aa b 0x5f2d8 | goto label_5;
| label_23:
0x0005f3ac ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005f3ae mov fp, r5 |
0x0005f3b0 str r5, [r3] | *(r3) = r5;
0x0005f3b2 ldrb r2, [r5] | r2 = *(r5);
0x0005f3b4 cmp r2, 0 |
| if (r2 == 0) {
0x0005f3b6 beq 0x5f4b2 | goto label_31;
| }
0x0005f3b8 ldr r0, [pc, 0x174] |
0x0005f3ba mov r1, fp | r1 = fp;
0x0005f3bc add r0, pc | r0 = 0xbe8f0;
| do {
0x0005f3be add r2, r0 | r2 += r0;
0x0005f3c0 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x0005f3c4 ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x0005f3c8 add r4, r3 | r4 += r3;
0x0005f3ca uxtb r4, r4 | r4 = (int8_t) r4;
0x0005f3cc cmp r2, 0 |
0x0005f3ce bne 0x5f3be |
| } while (r2 != 0);
| label_13:
0x0005f3d0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005f3d2 mov r1, fp | r1 = fp;
0x0005f3d4 mov r0, sb | r0 = sb;
0x0005f3d6 strb r4, [r3, 0xf] | *((r3 + 0xf)) = r4;
0x0005f3d8 mov r2, r3 | r2 = r3;
0x0005f3da mov r4, r3 | r4 = r3;
0x0005f3dc bl 0x169a8 | r0 = fcn_000169a8 (r0, r1, r2, r3, r4);
0x0005f3e0 cmp r4, r0 |
| if (r4 != r0) {
0x0005f3e2 bne 0x5f2fe | goto label_6;
| }
0x0005f3e4 mov r0, r7 | r0 = r7;
0x0005f3e6 bl 0x101ec | fcn_000101ec (r0);
0x0005f3ea b 0x5f2fe | goto label_6;
| label_22:
0x0005f3ec ldr r5, [pc, 0x144] |
0x0005f3ee mov r2, r1 | r2 = r1;
0x0005f3f0 movs r3, 0x66 | r3 = 0x66;
0x0005f3f2 add r5, pc | r5 = 0xbe92a;
0x0005f3f4 b 0x5f40e |
| while (r0 != r3) {
0x0005f3f6 add r0, r8 | r0 += r8;
0x0005f3f8 add r3, r8 | r3 += r8;
0x0005f3fa ldrb.w r0, [r0, 0x140] | r0 = *((r0 + 0x140));
0x0005f3fc lsls r0, r0, 5 | r0 <<= 5;
0x0005f3fe ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x0005f402 cmp r0, r3 |
| if (r0 != r3) {
0x0005f404 bne 0x5f418 | goto label_32;
| }
| label_7:
0x0005f406 ldrb r0, [r2, 1]! | r0 = *((r2 += 1));
0x0005f40a ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
0x0005f40e cmp r0, r3 |
0x0005f410 bne 0x5f3f6 |
| }
0x0005f412 cmp r0, 0 |
| if (r0 != 0) {
0x0005f414 bne 0x5f406 | goto label_7;
| }
0x0005f416 b 0x5f28e | goto label_8;
| label_32:
0x0005f418 mov r0, r7 | r0 = r7;
0x0005f41a bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x0005f41e ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005f420 mov fp, r0 |
0x0005f422 str r3, [sp, 0x18] | var_18h = r3;
0x0005f424 b 0x5f29e | goto label_9;
| label_21:
0x0005f426 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005f428 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| if (r3 != 0) {
0x0005f42a cbnz r3, 0x5f43c | goto label_33;
| }
0x0005f42c b 0x5f502 | goto label_34;
| do {
0x0005f42e lsls r2, r2, 0xd | r2 <<= 0xd;
0x0005f430 itet mi |
| if (r2 >= r2) {
0x0005f432 ldrmi r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r2 < r2) {
0x0005f434 ldrpl r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| }
| if (r2 >= r2) {
0x0005f436 ldrmi r3, [r3, 8] | r3 = *((r3 + 8));
| }
0x0005f438 cmp r3, 0 |
| if (r3 == 0) {
0x0005f43a beq 0x5f502 | goto label_34;
| }
| label_33:
0x0005f43c ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0005f43e tst.w r2, 0x41000 |
0x0005f442 bne 0x5f42e |
| } while ((r2 & 0x41000) != 0);
0x0005f444 ldrb r2, [r3] | r2 = *(r3);
0x0005f446 cmp r2, 0x8c |
| if (r2 != 0x8c) {
0x0005f448 bne 0x5f456 | goto label_35;
| }
| do {
0x0005f44a ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0005f44c cmp r3, 0 |
| if (r3 == 0) {
0x0005f44e beq 0x5f502 | goto label_34;
| }
0x0005f450 ldrb r2, [r3] | r2 = *(r3);
0x0005f452 cmp r2, 0x8c |
0x0005f454 beq 0x5f44a |
| } while (r2 == 0x8c);
| label_35:
0x0005f456 cmp r2, 0xa6 |
| if (r2 == 0xa6) {
0x0005f458 beq 0x5f468 | goto label_36;
| }
0x0005f45a cmp r2, 0x3b |
0x0005f45c it eq |
| if (r2 != 0x3b) {
0x0005f45e ldreq r1, [r3, 8] | r1 = *((r3 + 8));
| }
| label_11:
0x0005f460 cmp r1, 0 |
| if (r1 == 0) {
0x0005f462 beq.w 0x5f28e | goto label_8;
| }
0x0005f466 b 0x5f25c | goto label_10;
| label_36:
0x0005f468 ldr r2, [r3, 0x2c] | r2 = *((r3 + 0x2c));
0x0005f46a cmp r2, 0 |
| if (r2 == 0) {
0x0005f46c beq 0x5f460 | goto label_11;
| }
0x0005f46e ldrsh.w r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0005f472 cmp r3, 0 |
| if (r3 < 0) {
0x0005f474 blt 0x5f4b6 | goto label_37;
| }
| label_15:
0x0005f476 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0005f478 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0005f47c ldr.w r1, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| r1 = *((r2 + offset_0));
0x0005f480 cmp r1, 0 |
| if (r1 == 0) {
0x0005f482 beq.w 0x5f28e | goto label_8;
| }
0x0005f486 b 0x5f25c | goto label_10;
| label_18:
0x0005f488 mov r3, r4 | r3 = r4;
0x0005f48a strh r1, [r5] | *(r5) = r1;
0x0005f48c mov r0, r1 | r0 = r1;
0x0005f48e str r1, [r3] | *(r3) = r1;
0x0005f490 mov r4, r1 | r4 = r1;
0x0005f492 blx 0x84f8 | fcn_000084f8 ();
0x0005f496 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x0005f49a str r4, [sp, 0x48] | var_48h = r4;
0x0005f49c strd r4, r4, [sp, 0x3c] | __asm ("strd r4, r4, [var_3ch]");
0x0005f4a0 cmp r3, 0 |
| if (r3 == 0) {
0x0005f4a2 beq.w 0x5f344 | goto label_12;
| }
| label_16:
0x0005f4a6 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005f4a8 movs r3, 0 | r3 = 0;
0x0005f4aa str r3, [r2] | *(r2) = r3;
0x0005f4ac ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0005f4ae strh r3, [r2] | *(r2) = r3;
0x0005f4b0 b 0x5f344 | goto label_12;
| label_31:
0x0005f4b2 mov r4, r2 | r4 = r2;
0x0005f4b4 b 0x5f3d0 | goto label_13;
| label_37:
0x0005f4b6 ldrsh.w r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x0005f4ba cmp r3, 0 |
0x0005f4bc itt lt |
| if (r3 >= 0) {
0x0005f4be ldrlt r1, [sp, 0x34] | r1 = var_34h;
| }
| if (r3 < 0) {
0x0005f4c0 movlt r0, 0x72 | r0 = 0x72;
| goto label_38;
| }
| if (r3 < 0) {
| label_38:
0x0005f4c2 blt.w 0x5f25e | goto label_14;
| }
0x0005f4c6 b 0x5f476 | goto label_15;
| label_27:
0x0005f4c8 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 == 0) {
0x0005f4ca cbz r3, 0x5f4f0 | goto label_39;
| }
0x0005f4cc ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005f4ce ldr r5, [sp, 0x28] | r5 = var_28h;
0x0005f4d0 add.w fp, r3, r3, lsl 2 |
| do {
0x0005f4d4 ldr.w r1, [r5, r4, lsl 2] | offset_1 = r4 << 2;
| r1 = *((r5 + offset_1));
| if (r1 != 0) {
0x0005f4d8 cbz r1, 0x5f4e0 |
0x0005f4da mov r0, r7 | r0 = r7;
0x0005f4dc bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0005f4e0 adds r4, 5 | r4 += 5;
0x0005f4e2 cmp fp, r4 |
0x0005f4e4 bne 0x5f4d4 |
| } while (fp != r4);
| do {
0x0005f4e6 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0005f4e8 mov r0, r7 | r0 = r7;
0x0005f4ea bl 0x159dc | fcn_000159dc (r0, r1);
0x0005f4ee b 0x5f4a6 | goto label_16;
| label_39:
0x0005f4f0 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005f4f2 cmp r3, 0 |
0x0005f4f4 bne 0x5f4e6 |
| } while (r3 != 0);
0x0005f4f6 b 0x5f4a6 | goto label_16;
| label_28:
0x0005f4f8 blx 0x7e8c | fcn_00007e8c ();
| label_20:
0x0005f4fc movs r3, 0 | r3 = 0;
0x0005f4fe str r3, [sp, 0x18] | var_18h = r3;
0x0005f500 b 0x5f318 | goto label_17;
| label_34:
0x0005f502 movs r3, 0 | r3 = 0;
0x0005f504 ldrb r3, [r3] | r3 = *(r3);
0x0005f506 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x5f5e0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0005f5e0 () | void fcn_0005f5e0 (int16_t arg_0h, int16_t arg_8h, int16_t arg_13h, int16_t arg_17h, int16_t arg_1ch, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_38h, int16_t arg_64h, int16_t arg_74h, int16_t arg_c7h, int16_t arg_d0h, int16_t arg_d4h, int16_t arg_f0h, int16_t arg_108h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_10h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_ch_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_84h;
| int16_t var_85h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c0h;
| int16_t var_c4h;
| int32_t var_c4h_2;
| int16_t var_cch;
| int16_t var_d0h;
| int16_t var_d4h;
| int16_t var_d8h;
| int32_t var_dch;
| int16_t var_e0h;
| int16_t var_e4h;
| int16_t var_e8h;
| int16_t var_ech;
| int16_t var_f4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0005f5e0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005f5e4 mov fp, r0 |
0x0005f5e6 vpush {d8} | __asm ("vpush {d8}");
0x0005f5ea sub sp, 0xfc |
0x0005f5ec mov r7, r1 | r7 = r1;
0x0005f5ee str r2, [sp, 0x18] | var_18h = r2;
0x0005f5f0 ldr.w r2, [pc, 0xa84] |
0x0005f5f4 ldr.w r3, [pc, 0xa84] | r3 = *(0x6007c);
0x0005f5f8 ldr.w sl, [r0, 8] | sl = *((r0 + 8));
0x0005f5fc add r2, pc | r2 = 0xbf678;
0x0005f5fe ldr.w sb, [r0] | sb = *(r0);
0x0005f602 ldr r3, [r2, r3] |
0x0005f604 ldr r3, [r3] | r3 = *(0xbf678);
0x0005f606 str r3, [sp, 0xf4] | var_f4h = r3;
0x0005f608 mov.w r3, 0 | r3 = 0;
0x0005f60c cmp.w sl, 0 |
0x0005f610 beq 0x5f648 |
| while (1) {
| if (r7 != 0) {
0x0005f612 cbz r7, 0x5f620 |
0x0005f614 ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
| if (r3 != 0) {
0x0005f618 cbnz r3, 0x5f620 | goto label_0;
| }
0x0005f61a ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
| if (r3 == 0) {
0x0005f61e cbz r3, 0x5f65a | goto label_113;
| }
| }
| label_0:
0x0005f620 movs r4, 1 | r4 = 1;
| label_2:
0x0005f622 ldr.w r2, [pc, 0xa5c] | r2 = *(0x00060080);
0x0005f626 ldr.w r3, [pc, 0xa54] | r3 = *(0x6007e);
0x0005f62a add r2, pc | r2 += pc;
0x0005f62c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0005f62e ldr r2, [r3] | r2 = *(0x6007e);
0x0005f630 ldr r3, [sp, 0xf4] | r3 = var_f4h;
0x0005f632 eors r2, r3 | r2 ^= r3;
0x0005f634 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0005f638 bne.w 0x61462 | goto label_114;
| }
0x0005f63c mov r0, r4 | r0 = r4;
0x0005f63e add sp, 0xfc |
0x0005f640 vpop {d8} | __asm ("vpop {d8}");
0x0005f644 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0005f648 ldr r3, [r0, 0x74] | r3 = *(arg_0hx74);
0x0005f64a cmp r3, 0 |
| if (r3 == 0) {
0x0005f64c beq.w 0x5f846 | goto label_115;
| }
| label_3:
0x0005f650 mov r0, fp | r0 = fp;
0x0005f652 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0005f656 mov sl, r0 | sl = r0;
0x0005f658 b 0x5f612 |
| }
| label_113:
0x0005f65a mov r2, r3 | r2 = r3;
0x0005f65c movs r1, 0x15 | r1 = 0x15;
0x0005f65e mov r0, fp | r0 = fp;
0x0005f660 str r3, [sp] | *(sp) = r3;
0x0005f662 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0005f666 cmp r0, 0 |
| if (r0 != 0) {
0x0005f668 bne 0x5f620 | goto label_0;
| }
0x0005f66a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005f66c ldrb r3, [r3] | r3 = *(r3);
0x0005f66e cmp r3, 6 |
| if (r3 <= 6) {
0x0005f670 bhi 0x5f6b2 |
0x0005f672 ldr r4, [r7, 0x30] | r4 = *((r7 + 0x30));
| if (r4 != 0) {
0x0005f674 cbz r4, 0x5f6a6 |
0x0005f676 ldr.w r0, [fp] | r0 = *(fp);
0x0005f67a cmp r0, 0 |
| if (r0 == 0) {
0x0005f67c beq.w 0x5fb6e | goto label_116;
| }
0x0005f680 movs r2, 0xc | r2 = 0xc;
0x0005f682 movs r3, 0 | r3 = 0;
0x0005f684 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
| label_12:
0x0005f688 cmp r0, 0 |
| if (r0 == 0) {
0x0005f68a beq.w 0x604ae | goto label_117;
| }
0x0005f68e ldr.w r3, [fp, 0x108] | r3 = *(arg_108h);
0x0005f692 str r3, [r0] | *(r0) = r3;
0x0005f694 ldr.w r3, [pc, 0x9ec] | r3 = *(0x00060084);
0x0005f698 str.w r0, [fp, 0x108] | __asm ("str.w r0, [arg_108h]");
0x0005f69c str r4, [r0, 4] | *((r0 + 4)) = r4;
0x0005f69e add r3, pc | r3 += pc;
0x0005f6a0 str r3, [r0, 8] | *((r0 + 8)) = r3;
| label_20:
0x0005f6a2 movs r3, 0 | r3 = 0;
0x0005f6a4 str r3, [r7, 0x30] | *((r7 + 0x30)) = r3;
| }
0x0005f6a6 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0005f6a8 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x0005f6ac orr r3, r3, 0x400000 | r3 |= 0x400000;
0x0005f6b0 str r3, [r7, 4] | *((r7 + 4)) = r3;
| }
0x0005f6b2 movs r2, 0 | r2 = 0;
0x0005f6b4 mov r1, r7 | r1 = r7;
0x0005f6b6 mov r0, fp | r0 = fp;
0x0005f6b8 bl 0x32c7c | fcn_00032c7c (r0, r1, r2, r3);
0x0005f6bc ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x0005f6c0 str r3, [sp, 0x20] | var_20h = r3;
0x0005f6c2 cmp r3, 0 |
| if (r3 != 0) {
0x0005f6c4 bne.w 0x5f854 | goto label_118;
| }
0x0005f6c8 ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x0005f6cc str r3, [sp, 0x24] | var_24h = r3;
0x0005f6ce cmp r3, 0 |
| if (r3 != 0) {
0x0005f6d0 bne.w 0x5fb66 | goto label_102;
| }
0x0005f6d4 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0005f6d6 lsls r4, r3, 8 | r4 = r3 << 8;
| if (r4 >= r3) {
0x0005f6d8 bpl 0x5f712 | goto label_119;
| }
0x0005f6da ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x0005f6dc ldr r3, [r0] | r3 = *(r0);
0x0005f6de mov r5, r0 | r5 = r0;
0x0005f6e0 cmp r3, 1 |
| if (r3 <= 1) {
0x0005f6e2 ble 0x5f712 | goto label_119;
| }
0x0005f6e4 movs r4, 1 | r4 = 1;
0x0005f6e6 b 0x5f6f0 |
| while (r1 != r2) {
| label_1:
0x0005f6e8 ldr r3, [r0] | r3 = *(r0);
0x0005f6ea adds r4, 1 | r4++;
0x0005f6ec cmp r3, r4 |
| if (r3 <= r4) {
0x0005f6ee ble 0x5f712 | goto label_119;
| }
0x0005f6f0 add.w r3, r4, r4, lsl 3 | r3 = r4 + (r4 << 3);
0x0005f6f4 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0005f6f6 add.w r3, r0, r3, lsl 3 | r3 = r0 + (r3 << 3);
0x0005f6fa ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x0005f6fc cmp r1, r2 |
0x0005f6fe bne 0x5f6e8 |
| }
0x0005f700 ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x0005f702 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x0005f704 blx 0x831c | r0 = fcn_0000831c ();
0x0005f708 cmp r0, 0 |
| if (r0 == 0) {
0x0005f70a beq.w 0x605aa | goto label_120;
| }
0x0005f70e ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x0005f710 b 0x5f6e8 | goto label_1;
| label_119:
0x0005f712 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005f714 ldrb r3, [r3] | r3 = *(r3);
0x0005f716 cmp r3, 9 |
| if (r3 == 9) {
0x0005f718 beq.w 0x5fdfe | goto label_121;
| }
| label_15:
0x0005f71c ldr r6, [r7, 0x44] | r6 = *((r7 + 0x44));
0x0005f71e ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0005f720 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r6 != 0) {
0x0005f722 cbz r6, 0x5f72c |
0x0005f724 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x0005f726 cmp r3, 0 |
| if (r3 == 0) {
0x0005f728 beq.w 0x5fb78 | goto label_122;
| }
| }
| label_13:
0x0005f72c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005f72e movs r2, 0x24 | r2 = 0x24;
0x0005f730 movs r1, 0 | r1 = 0;
0x0005f732 add r0, sp, 0xd0 | r0 += var_d0h;
0x0005f734 ldr r5, [r7, 0x20] | r5 = *((r7 + 0x20));
0x0005f736 and r3, r3, 8 | r3 &= 8;
0x0005f73a str r3, [sp, 0x34] | var_34h = r3;
0x0005f73c blx 0x8264 | fcn_00008264 ();
0x0005f740 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x0005f742 mov r2, r3 | r2 = r3;
0x0005f744 str r3, [sp, 0x2c] | var_2ch = r3;
0x0005f746 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0005f748 str r3, [sp, 0xcc] | var_cch = r3;
0x0005f74a cmp r2, 0 |
| if (r2 != 0) {
0x0005f74c bne 0x5f806 | goto label_123;
| }
0x0005f74e ldr.w r3, [pc, 0x938] | r3 = *(0x00060088);
0x0005f752 ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
0x0005f756 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x0005f75a add r3, pc | r3 += pc;
0x0005f75c str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
0x0005f760 str r3, [sp, 0x38] | var_38h = r3;
0x0005f762 str.w sl, [sp, 0x30] | __asm ("str.w sl, [var_30h]");
| do {
0x0005f766 ldr r3, [r5] | r3 = *(r5);
0x0005f768 cmp r3, r8 |
| if (r3 <= r8) {
0x0005f76a ble.w 0x5fe08 | goto label_124;
| }
0x0005f76e lsl.w sb, r8, 3 | sb = r8 << 3;
0x0005f772 add.w r4, sb, r8 | r4 = sb + r8;
0x0005f776 add.w r4, r5, r4, lsl 3 | r4 = r5 + (r4 << 3);
0x0005f77a ldrb.w r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0005f77e ldrd sl, r6, [r4, 0x18] | __asm ("ldrd sl, r6, [r4, 0x18]");
0x0005f782 lsls r3, r3, 0x1c | r3 <<= 0x1c;
| if (r3 < r3) {
0x0005f784 bmi.w 0x5f89c | goto label_125;
| }
| label_4:
0x0005f788 cmp r6, 0 |
| if (r6 == 0) {
0x0005f78a beq.w 0x5f8ca | goto label_126;
| }
0x0005f78e ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x0005f790 ldrsh.w r2, [sl, 0x2a] | r2 = *((sl + 0x2a));
0x0005f794 ldr r1, [r3] | r1 = *(r3);
0x0005f796 cmp r2, r1 |
| if (r2 != r1) {
0x0005f798 bne.w 0x60214 | goto label_127;
| }
0x0005f79c ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0005f79e lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
| if (r1 < r3) {
0x0005f7a0 bmi.w 0x5f8ca | goto label_126;
| }
0x0005f7a4 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x0005f7a6 subs r3, 0 |
0x0005f7a8 it ne |
| if (r3 == 0) {
0x0005f7aa movne r3, 1 | r3 = 1;
| }
0x0005f7ac cmp.w r8, 0 |
0x0005f7b0 it ne |
| if (r8 == 0) {
0x0005f7b2 movne r3, 0 | r3 = 0;
| }
0x0005f7b4 cmp r3, 0 |
| if (r3 != 0) {
0x0005f7b6 bne.w 0x5f8d0 | goto label_128;
| }
| label_6:
0x0005f7ba ldr.w sl, [fp] | sl = *(fp);
0x0005f7be ldr.w r6, [fp, 0xf0] | r6 = *(arg_f0h);
0x0005f7c2 ldr r5, [r7, 0x20] | r5 = *((r7 + 0x20));
0x0005f7c4 ldr.w r3, [sl, 0x4c] | r3 = *((sl + 0x4c));
0x0005f7c8 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 >= r3) {
0x0005f7ca bmi 0x5f7e4 |
0x0005f7cc add sb, r8 | sb += r8;
0x0005f7ce ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x0005f7d0 add.w sb, r5, sb, lsl 3 | sb = r5 + (sb << 3);
0x0005f7d4 ldr.w r2, [sb, 0x30] | r2 = *((sb + 0x30));
0x0005f7d8 ldr.w r4, [sb, 0x1c] | r4 = *((sb + 0x1c));
0x0005f7dc str r2, [sp, 0x28] | var_28h = r2;
0x0005f7de cmp r3, 0 |
| if (r3 == 0) {
0x0005f7e0 beq.w 0x5f8f0 | goto label_129;
| }
| }
| label_7:
0x0005f7e4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005f7e6 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0005f7ea cmp r3, 0 |
| if (r3 != 0) {
0x0005f7ec bne.w 0x5fb60 | goto label_130;
| }
0x0005f7f0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0005f7f2 add.w r8, r8, 1 | r8++;
0x0005f7f6 ldrb r3, [r3] | r3 = *(r3);
0x0005f7f8 cmp r3, 8 |
| if (r3 >= 8) {
0x0005f7fa bls 0x5f800 |
0x0005f7fc ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0005f7fe str r3, [sp, 0xcc] | var_cch = r3;
| }
| label_5:
0x0005f800 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x0005f802 cmp r3, 0 |
0x0005f804 beq 0x5f766 |
| } while (r3 == 0);
| label_123:
0x0005f806 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0005f808 mov r1, r7 | r1 = r7;
0x0005f80a mov r0, fp | r0 = fp;
0x0005f80c bl 0x6f2f8 | fcn_0006f2f8 (r0, r1, r2, r3, r4, r5, r6);
0x0005f810 ldr r3, [r7, 0x38] | r3 = *((r7 + 0x38));
0x0005f812 mov r4, r0 | r4 = r0;
0x0005f814 cmp r3, 0 |
| if (r3 != 0) {
0x0005f816 bne.w 0x5f622 | goto label_2;
| }
0x0005f81a ldr.w r3, [fp, 0xd4] | r3 = *(arg_d4h);
0x0005f81e ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x0005f822 cmp r3, 0 |
| if (r3 == 0) {
0x0005f824 beq 0x5f88c | goto label_131;
| }
0x0005f826 ldr r1, [r2] | r1 = *(r2);
0x0005f828 it lt |
| if (r3 >= 0) {
0x0005f82a ldrlt r3, [r2, 0x6c] | r3 = *((r2 + 0x6c));
| }
0x0005f82c ldrb.w r1, [r1, 0x53] | r1 = *((r1 + 0x53));
0x0005f830 it lt |
| if (r3 >= 0) {
0x0005f832 addlt r3, r3, -1 | r3 += -1;
| }
0x0005f836 cmp r1, 0 |
| if (r1 != 0) {
0x0005f838 bne.w 0x6106e | goto label_132;
| }
0x0005f83c ldr r2, [r2, 0x68] | r2 = *((r2 + 0x68));
0x0005f83e movs r1, 0x14 | r1 = 0x14;
0x0005f840 mla r3, r1, r3, r2 | __asm ("mla r3, r1, r3, r2");
0x0005f844 b 0x5f88a | goto label_64;
| label_115:
0x0005f846 ldr.w r3, [sb, 0x4c] | r3 = *((sb + 0x4c));
0x0005f84a lsls r5, r3, 0x1c | r5 = r3 << 0x1c;
0x0005f84c itt pl |
| if (r5 < r3) {
0x0005f84e movpl r3, 1 | r3 = 1;
| }
| if (r5 < r3) {
0x0005f850 strbpl r3, [r0, 0x17] | *(arg_0hx17) = r3;
| }
0x0005f852 b 0x5f650 | goto label_3;
| label_118:
0x0005f854 ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x0005f858 movs r4, 1 | r4 = 1;
0x0005f85a ldr r2, [sp, 0x20] | r2 = var_20h;
0x0005f85c add r3, r2 | r3 += r2;
0x0005f85e str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
| label_11:
0x0005f862 ldr.w r3, [fp, 0xd4] | r3 = *(arg_d4h);
0x0005f866 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x0005f86a cmp r3, 0 |
| if (r3 == 0) {
0x0005f86c beq 0x5f88c | goto label_131;
| }
0x0005f86e ldr r1, [r2] | r1 = *(r2);
0x0005f870 it lt |
| if (r3 >= 0) {
0x0005f872 ldrlt r3, [r2, 0x6c] | r3 = *((r2 + 0x6c));
| }
0x0005f874 ldrb.w r1, [r1, 0x53] | r1 = *((r1 + 0x53));
0x0005f878 it lt |
| if (r3 >= 0) {
0x0005f87a addlt r3, r3, -1 | r3 += -1;
| }
| if (r1 != 0) {
0x0005f87e cbnz r1, 0x5f892 | goto label_133;
| }
0x0005f880 ldr r2, [r2, 0x68] | r2 = *((r2 + 0x68));
0x0005f882 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0005f886 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| do {
| label_64:
0x0005f88a ldr r3, [r3, 8] | r3 = *((r3 + 8));
| label_131:
0x0005f88c str.w r3, [fp, 0xd4] | __asm ("str.w r3, [arg_d4h]");
0x0005f890 b 0x5f622 | goto label_2;
| label_133:
0x0005f892 ldr.w r3, [pc, 0x7f8] | r3 = *(0x0006008c);
0x0005f896 add r3, pc | r3 += pc;
0x0005f898 adds r3, 4 | r3 += 4;
0x0005f89a b 0x5f88a |
| } while (1);
| label_125:
0x0005f89c ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
0x0005f89e ldr r0, [r7, 0x24] | r0 = *((r7 + 0x24));
0x0005f8a0 bl 0x30354 | r0 = fcn_00030354 (r0, r1);
0x0005f8a4 cmp r0, 0 |
| if (r0 == 0) {
0x0005f8a6 beq.w 0x5f788 | goto label_4;
| }
0x0005f8aa ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005f8ac ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0005f8ae lsls r0, r3, 0x12 | r0 = r3 << 0x12;
| if (r0 < r3) {
0x0005f8b0 bmi.w 0x5f788 | goto label_4;
| }
0x0005f8b4 ldrb.w r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0005f8b8 ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
0x0005f8ba ldr r0, [r7, 0x24] | r0 = *((r7 + 0x24));
0x0005f8bc bic r3, r3, 0x28 | r3 = BIT_MASK (r3, 0x28);
0x0005f8c0 strb.w r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0005f8c4 bl 0x9f7c | fcn_00009f7c (r0, r1);
0x0005f8c8 b 0x5f788 | goto label_4;
| label_126:
0x0005f8ca add.w r8, r8, 1 | r8++;
0x0005f8ce b 0x5f800 | goto label_5;
| label_128:
0x0005f8d0 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0005f8d2 lsls r2, r3, 0xd | r2 = r3 << 0xd;
| if (r2 >= r3) {
0x0005f8d4 bpl.w 0x5f7ba | goto label_6;
| }
0x0005f8d8 ldr r3, [r5] | r3 = *(r5);
0x0005f8da cmp r3, 1 |
| if (r3 == 1) {
0x0005f8dc beq 0x5f8ea | goto label_134;
| }
0x0005f8de ldrb.w r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x0005f8e2 tst.w r3, 0xa |
| if ((r3 & 0xa) == 0) {
0x0005f8e6 beq.w 0x5f7ba | goto label_6;
| }
| label_134:
0x0005f8ea mov.w r8, 1 | r8 = 1;
0x0005f8ee b 0x5f800 | goto label_5;
| label_129:
0x0005f8f0 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005f8f2 cmp r3, 0 |
| if (r3 != 0) {
0x0005f8f4 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f8f8 ldr r0, [r4, 0x3c] | r0 = *((r4 + 0x3c));
0x0005f8fa ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0005f8fc cmp r0, 0 |
| if (r0 == 0) {
0x0005f8fe beq.w 0x605c0 | goto label_135;
| }
0x0005f902 ldr r2, [r7, 0x3c] | r2 = *((r7 + 0x3c));
0x0005f904 cmp r2, 0 |
| if (r2 != 0) {
0x0005f906 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f90a ldr r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x0005f90c cmp r2, 0 |
| if (r2 != 0) {
0x0005f90e bne.w 0x5f7e4 | goto label_7;
| }
0x0005f912 ldr.w ip, [r7, 4] | ip = *((r7 + 4));
0x0005f916 tst.w ip, 0x100 |
| if ((ip & 0x100) != 0) {
0x0005f91a bne.w 0x5f7e4 | goto label_7;
| }
| label_23:
0x0005f91e ldr r2, [r3] | r2 = *(r3);
0x0005f920 cmp r2, 0 |
| if (r2 == 0) {
0x0005f922 beq.w 0x5f7e4 | goto label_7;
| }
0x0005f926 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0005f928 tst.w r1, 1 |
| if ((r1 & 1) != 0) {
0x0005f92c bne.w 0x5f7e4 | goto label_7;
| }
0x0005f930 cmp r0, 0 |
| if (r0 == 0) {
0x0005f932 beq.w 0x60f68 | goto label_136;
| }
0x0005f936 ldr r0, [r5] | r0 = *(r5);
0x0005f938 cmp r0, 1 |
| if (r0 > 1) {
0x0005f93a bgt.w 0x5f7e4 | goto label_7;
| }
0x0005f93e ldr r0, [sp, 0x34] | r0 = var_34h;
0x0005f940 cmp r0, 0 |
| if (r0 != 0) {
0x0005f942 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f946 ldr.w lr, [r7, 0x30] |
0x0005f94a cmp.w lr, 0 |
| if (lr == 0) {
0x0005f94e beq 0x5f958 | goto label_137;
| }
0x0005f950 ldr r0, [r4, 0x30] | r0 = *((r4 + 0x30));
0x0005f952 cmp r0, 0 |
| if (r0 != 0) {
0x0005f954 bne.w 0x5f7e4 | goto label_7;
| }
| label_137:
0x0005f958 ldr r0, [r7, 0x24] | r0 = *((r7 + 0x24));
0x0005f95a cmp r0, 0 |
| if (r0 != 0) {
0x0005f95c bne.w 0x5f7e4 | goto label_7;
| }
0x0005f960 tst.w ip, 1 |
| if ((ip & 1) != 0) {
0x0005f964 bne.w 0x5f7e4 | goto label_7;
| }
| label_52:
0x0005f968 lsls r0, r1, 0x12 | r0 = r1 << 0x12;
| if (r0 < r1) {
0x0005f96a bmi.w 0x5f7e4 | goto label_7;
| }
0x0005f96e movs r1, 0x48 | r1 = 0x48;
0x0005f970 mla r1, r1, r8, r5 | __asm ("mla r1, r1, r8, r5");
0x0005f974 ldrb.w r1, [r1, 0x2c] | r1 = *((r1 + 0x2c));
0x0005f978 ands r1, r1, 0x20 | r1 &= 0x20;
| if (r1 == r1) {
0x0005f97c beq.w 0x61802 | goto label_138;
| }
0x0005f980 cmp r2, 1 |
| if (r2 > 1) {
0x0005f982 bgt.w 0x5f7e4 | goto label_7;
| }
0x0005f986 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0005f988 cmp r2, 0 |
| if (r2 != 0) {
0x0005f98a bne.w 0x5f7e4 | goto label_7;
| }
0x0005f98e ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0005f990 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x0005f992 cmp r3, 0 |
| if (r3 != 0) {
0x0005f994 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f998 tst.w ip, 1 |
| if ((ip & 1) != 0) {
0x0005f99c bne.w 0x5f7e4 | goto label_7;
| }
0x0005f9a0 movs r3, 1 | r3 = 1;
0x0005f9a2 str r3, [sp, 0x40] | var_40h = r3;
| label_89:
0x0005f9a4 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0005f9a6 str r3, [sp, 0x3c] | var_3ch = r3;
0x0005f9a8 cmp r3, 0 |
| if (r3 == 0) {
0x0005f9aa beq 0x5fa5a | goto label_139;
| }
0x0005f9ac ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0005f9ae cmp r3, 0 |
| if (r3 != 0) {
0x0005f9b0 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f9b4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0005f9b6 cmp r3, 0 |
| if (r3 != 0) {
0x0005f9b8 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f9bc tst.w ip, 1 |
| if ((ip & 1) != 0) {
0x0005f9c0 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f9c4 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0005f9c6 cmp r3, 0 |
| if (r3 != 0) {
0x0005f9c8 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f9cc mov r3, r4 | r3 = r4;
0x0005f9ce mov r0, lr | r0 = lr;
0x0005f9d0 b 0x5f9d4 | goto label_140;
| label_8:
0x0005f9d2 mov r3, r2 | r3 = r2;
| label_140:
0x0005f9d4 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0005f9d6 tst.w r2, 9 |
| if ((r2 & 9) != 0) {
0x0005f9da bne.w 0x5f7e4 | goto label_7;
| }
0x0005f9de ldr r2, [r3, 0x34] | r2 = *((r3 + 0x34));
| if (r2 == 0) {
0x0005f9e0 cbz r2, 0x5f9ea | goto label_141;
| }
0x0005f9e2 ldrb r1, [r3] | r1 = *(r3);
0x0005f9e4 cmp r1, 0x86 |
| if (r1 != 0x86) {
0x0005f9e6 bne.w 0x5f7e4 | goto label_7;
| }
| label_141:
0x0005f9ea ldr r1, [r3, 0x20] | r1 = *((r3 + 0x20));
0x0005f9ec ldr r1, [r1] | r1 = *(r1);
0x0005f9ee cmp r1, 0 |
| if (r1 <= 0) {
0x0005f9f0 ble.w 0x5f7e4 | goto label_7;
| }
0x0005f9f4 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0005f9f6 cmp r3, 0 |
| if (r3 != 0) {
0x0005f9f8 bne.w 0x5f7e4 | goto label_7;
| }
0x0005f9fc cmp r2, 0 |
| if (r2 != 0) {
0x0005f9fe bne 0x5f9d2 | goto label_8;
| }
0x0005fa00 mov lr, r0 | lr = r0;
0x0005fa02 str r2, [sp, 0x3c] | var_3ch = r2;
| if (r0 == 0) {
0x0005fa04 cbz r0, 0x5fa20 | goto label_142;
| }
0x0005fa06 mov r2, r0 | r2 = r0;
0x0005fa08 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0005fa0a ldr r1, [r2], 0x14 | r1 = *(r2);
| r2 += 0x14;
0x0005fa0e b 0x5fa1c | goto label_143;
| label_9:
0x0005fa10 lsls r0, r3, 4 | r0 = r3 << 4;
0x0005fa12 ldrh r0, [r2, r0] | r0 = *((r2 + r0));
0x0005fa14 cmp r0, 0 |
| if (r0 == 0) {
0x0005fa16 beq.w 0x5f7e4 | goto label_7;
| }
0x0005fa1a adds r3, 1 | r3++;
| label_143:
0x0005fa1c cmp r3, r1 |
| if (r3 < r1) {
0x0005fa1e blt 0x5fa10 | goto label_9;
| }
| label_142:
0x0005fa20 ands r1, ip, 0x2000 | r1 = ip & 0x2000;
| if (r1 != ip) {
0x0005fa24 bne.w 0x5f7e4 | goto label_7;
| }
0x0005fa28 ldr r3, [r5] | r3 = *(r5);
0x0005fa2a cmp r3, 1 |
| if (r3 <= 1) {
0x0005fa2c ble 0x5fa5a | goto label_139;
| }
0x0005fa2e ldr.w r3, [fp, 0x64] | r3 = *(arg_64h);
0x0005fa32 cmp.w r3, 0x1f4 |
| if (r3 > 0x1f4) {
0x0005fa36 bgt.w 0x5f7e4 | goto label_7;
| }
0x0005fa3a ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x0005fa3e mov r0, sl | r0 = sl;
0x0005fa40 str r1, [sp, 0x44] | var_44h = r1;
0x0005fa42 lsl.w sb, r3, 2 | sb = r3 << 2;
0x0005fa46 mov r3, r1 | r3 = r1;
0x0005fa48 mov r2, sb | r2 = sb;
0x0005fa4a bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0005fa4e str r0, [sp, 0x3c] | var_3ch = r0;
| if (r0 != 0) {
0x0005fa50 cbz r0, 0x5fa5a |
0x0005fa52 ldr r1, [sp, 0x44] | r1 = var_44h;
0x0005fa54 mov r2, sb | r2 = sb;
0x0005fa56 blx 0x8264 | fcn_00008264 ();
| }
| label_139:
0x0005fa5a movs r3, 0x48 | r3 = 0x48;
0x0005fa5c movs r1, 0x15 | r1 = 0x15;
0x0005fa5e mla sb, r3, r8, r5 | __asm ("mla sb, r3, r8, r5");
0x0005fa62 movs r3, 0 | r3 = 0;
0x0005fa64 mov r2, r3 | r2 = r3;
0x0005fa66 mov r0, fp | r0 = fp;
0x0005fa68 ldr.w ip, [sb, 0x10] | ip = *((sb + 0x10));
0x0005fa6c str r3, [sp] | *(sp) = r3;
0x0005fa6e str.w ip, [fp, 0xf0] | __asm ("str.w ip, [arg_f0h]");
0x0005fa72 bl 0x25800 | fcn_00025800 (r0);
0x0005fa76 ldr.w r1, [sb, 0xc] | r1 = *((sb + 0xc));
0x0005fa7a ldr.w r3, [sb, 0x1c] | r3 = *((sb + 0x1c));
0x0005fa7e str.w r6, [fp, 0xf0] | __asm ("str.w r6, [arg_f0h]");
0x0005fa82 str r3, [sp, 0x44] | var_44h = r3;
| if (r1 != 0) {
0x0005fa84 cbz r1, 0x5fa8c |
0x0005fa86 mov r0, sl | r0 = sl;
0x0005fa88 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0005fa8c movs r3, 0x48 | r3 = 0x48;
0x0005fa8e mla r3, r3, r8, r5 | __asm ("mla r3, r3, r8, r5");
0x0005fa92 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
| if (r1 != 0) {
0x0005fa94 cbz r1, 0x5fa9c |
0x0005fa96 mov r0, sl | r0 = sl;
0x0005fa98 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0005fa9c movs r3, 0x48 | r3 = 0x48;
0x0005fa9e mla r3, r3, r8, r5 | __asm ("mla r3, r3, r8, r5");
0x0005faa2 ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
| if (r1 != 0) {
0x0005faa4 cbz r1, 0x5faac |
0x0005faa6 mov r0, sl | r0 = sl;
0x0005faa8 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0005faac ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0005faae str r5, [sp, 0x50] | var_50h = r5;
0x0005fab0 str r3, [sp, 0x48] | var_48h = r3;
0x0005fab2 movs r3, 0x48 | r3 = 0x48;
0x0005fab4 mla r6, r3, r8, r5 | __asm ("mla r6, r3, r8, r5");
0x0005fab8 movs r3, 0 | r3 = 0;
0x0005faba mov sb, r6 | sb = r6;
0x0005fabc strd r3, r3, [r6, 0xc] | __asm ("strd r3, r3, [r6, 0xc]");
0x0005fac0 str r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
0x0005fac2 str r3, [r6, 0x1c] | *((r6 + 0x1c)) = r3;
0x0005fac4 b 0x5fad8 | goto label_144;
| label_10:
0x0005fac6 str r5, [r4, 0x34] | *((r4 + 0x34)) = r5;
| if (r5 != 0) {
0x0005fac8 cbz r5, 0x5facc |
0x0005faca str r4, [r5, 0x38] | *((r5 + 0x38)) = r4;
| }
0x0005facc mov r5, r4 | r5 = r4;
0x0005face str r7, [r4, 0x38] | *((r4 + 0x38)) = r7;
| do {
0x0005fad0 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0005fad2 str r5, [r7, 0x34] | *((r7 + 0x34)) = r5;
0x0005fad4 ldr r3, [r3, 0x34] | r3 = *((r3 + 0x34));
0x0005fad6 str r3, [sp, 0x48] | var_48h = r3;
| label_144:
0x0005fad8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0005fada cmp r3, 0 |
| if (r3 == 0) {
0x0005fadc beq.w 0x61a38 | goto label_145;
| }
0x0005fae0 ldr.w r3, [sb, 0x18] | r3 = *((sb + 0x18));
0x0005fae4 movs r2, 0 | r2 = 0;
0x0005fae6 ldr r4, [r7, 0x3c] | r4 = *((r7 + 0x3c));
0x0005fae8 mov r1, r7 | r1 = r7;
0x0005faea ldr r6, [r7, 0x30] | r6 = *((r7 + 0x30));
0x0005faec mov r0, sl | r0 = sl;
0x0005faee ldr r5, [r7, 0x34] | r5 = *((r7 + 0x34));
0x0005faf0 str.w r2, [sb, 0x18] | __asm ("str.w r2, [sb, 0x18]");
0x0005faf4 strd r2, r2, [r7, 0x30] | __asm ("strd r2, r2, [r7, 0x30]");
0x0005faf8 str r2, [r7, 0x3c] | *((r7 + 0x3c)) = r2;
0x0005fafa str r3, [sp, 0x4c] | var_4ch = r3;
0x0005fafc bl 0x3103c | fcn_0003103c (r0, r1, r2);
0x0005fb00 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0005fb02 movs r2, 0x86 | r2 = 0x86;
0x0005fb04 str r4, [r7, 0x3c] | *((r7 + 0x3c)) = r4;
0x0005fb06 mov r4, r0 | r4 = r0;
0x0005fb08 str r6, [r7, 0x30] | *((r7 + 0x30)) = r6;
0x0005fb0a strb r2, [r7] | *(r7) = r2;
0x0005fb0c str.w r3, [sb, 0x18] | __asm ("str.w r3, [sb, 0x18]");
0x0005fb10 cmp r0, 0 |
0x0005fb12 beq 0x5fad0 |
| } while (r0 == 0);
0x0005fb14 ldr.w r2, [fp, 0x64] | r2 = *(arg_64h);
0x0005fb18 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005fb1a adds r2, 1 | r2++;
0x0005fb1c str.w r2, [fp, 0x64] | __asm ("str.w r2, [arg_64h]");
0x0005fb20 str r2, [r0, 0x10] | *((r0 + 0x10)) = r2;
0x0005fb22 cmp r3, 0 |
| if (r3 == 0) {
0x0005fb24 beq 0x5fac6 | goto label_10;
| }
0x0005fb26 ldrb.w r6, [sl, 0x53] | r6 = *((sl + 0x53));
0x0005fb2a cmp r6, 0 |
| if (r6 != 0) {
0x0005fb2c bne 0x5fac6 | goto label_10;
| }
0x0005fb2e ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x0005fb30 mov r1, r3 | r1 = r3;
0x0005fb32 mov r0, fp | r0 = fp;
0x0005fb34 mov r3, r8 | r3 = r8;
0x0005fb36 bl 0x9ff0 | fcn_00009ff0 (r0, r1, r2, r3);
0x0005fb3a ldr.w r2, [pc, 0x554] | r2 = *(0x00060090);
0x0005fb3e add r0, sp, 0xac | r0 += var_ach;
0x0005fb40 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005fb42 mov r1, r4 | r1 = r4;
0x0005fb44 str r6, [sp, 0xac] | var_ach = r6;
0x0005fb46 add r2, pc | r2 += pc;
0x0005fb48 strd r6, r6, [sp, 0xb8] | __asm ("strd r6, r6, [var_b8h]");
0x0005fb4c str r2, [sp, 0xb0] | var_b0h = r2;
0x0005fb4e ldr.w r2, [pc, 0x544] | r2 = *(0x00060094);
0x0005fb52 str r6, [sp, 0xc0] | var_c0h = r6;
0x0005fb54 str r3, [sp, 0xc4] | var_c4h = r3;
0x0005fb56 add r2, pc | r2 += pc;
0x0005fb58 str r2, [sp, 0xb4] | var_b4h = r2;
0x0005fb5a bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
0x0005fb5e b 0x5fac6 | goto label_10;
| label_130:
0x0005fb60 ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x0005fb64 add r3, r2 | r3 += r2;
| label_102:
0x0005fb66 movs r4, 1 | r4 = 1;
0x0005fb68 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
0x0005fb6c b 0x5f862 | goto label_11;
| label_116:
0x0005fb6e movs r1, 0 | r1 = 0;
0x0005fb70 movs r0, 0xc | r0 = 0xc;
0x0005fb72 bl 0x12abc | fcn_00012abc (r0);
0x0005fb76 b 0x5f688 | goto label_12;
| label_122:
0x0005fb78 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005fb7a lsls r0, r3, 0xb | r0 = r3 << 0xb;
| if (r0 < r3) {
0x0005fb7c bmi.w 0x5f72c | goto label_13;
| }
0x0005fb80 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x0005fb84 str r3, [sp, 0x48] | var_48h = r3;
0x0005fb86 cmp r3, 0 |
| if (r3 == 0) {
0x0005fb88 beq.w 0x609ee | goto label_146;
| }
| label_28:
0x0005fb8c ldr r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x0005fb8e ldr.w r3, [fp] | r3 = *(fp);
0x0005fb92 str r2, [sp, 0x2c] | var_2ch = r2;
0x0005fb94 ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x0005fb96 str r3, [sp, 0x34] | var_34h = r3;
0x0005fb98 str r2, [sp, 0x50] | var_50h = r2;
0x0005fb9a ldr r2, [r7, 0x28] | r2 = *((r7 + 0x28));
0x0005fb9c str r2, [sp, 0x54] | var_54h = r2;
0x0005fb9e ldr r2, [r7, 0x2c] | r2 = *((r7 + 0x2c));
0x0005fba0 str r2, [sp, 0x58] | var_58h = r2;
0x0005fba2 cmp r3, 0 |
| if (r3 == 0) {
0x0005fba4 beq.w 0x609ca | goto label_147;
| }
0x0005fba8 mov r0, r3 | r0 = r3;
0x0005fbaa movs r2, 0x4c | r2 = 0x4c;
0x0005fbac movs r3, 0 | r3 = 0;
0x0005fbae bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0005fbb2 str r0, [sp, 0x28] | var_28h = r0;
0x0005fbb4 cmp r0, 0 |
| if (r0 == 0) {
0x0005fbb6 beq.w 0x60ef4 | goto label_148;
| }
| label_27:
0x0005fbba movs r2, 0x4c | r2 = 0x4c;
0x0005fbbc movs r1, 0 | r1 = 0;
0x0005fbbe ldr r0, [sp, 0x28] | r0 = var_28h;
0x0005fbc0 blx 0x8264 | fcn_00008264 ();
0x0005fbc4 ldr.w r3, [pc, 0x4d0] | r3 = *(0x00060098);
0x0005fbc8 mov r1, r7 | r1 = r7;
0x0005fbca str.w fp, [sp, 0xac] | __asm ("str.w fp, [var_ach]");
0x0005fbce add r3, pc | r3 += pc;
0x0005fbd0 str r3, [sp, 0xb0] | var_b0h = r3;
0x0005fbd2 ldr.w r3, [pc, 0x4c8] | r3 = *(0x0006009c);
0x0005fbd6 add r3, pc | r3 += pc;
0x0005fbd8 str r3, [sp, 0xb4] | var_b4h = r3;
0x0005fbda add r3, sp, 0xac | r3 += var_ach;
0x0005fbdc mov r0, r3 | r0 = r3;
0x0005fbde str r3, [sp, 0x5c] | var_5ch = r3;
0x0005fbe0 movs r3, 0 | r3 = 0;
0x0005fbe2 strd r3, r3, [sp, 0xb8] | __asm ("strd r3, r3, [var_b8h]");
0x0005fbe6 strd r3, r3, [sp, 0xc0] | __asm ("strd r3, r3, [var_c4h]");
0x0005fbea bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
0x0005fbee ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0005fbf0 ands r2, r3, 8 | r2 = r3 & 8;
| if (r2 == r3) {
0x0005fbf4 beq.w 0x60b2c | goto label_149;
| }
| label_35:
0x0005fbf8 bic r3, r3, 8 | r3 = BIT_MASK (r3, 8);
0x0005fbfc movs r1, 0 | r1 = 0;
0x0005fbfe orr r3, r3, 0x100000 | r3 |= 0x100000;
0x0005fc02 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0005fc04 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x0005fc06 mov r0, fp | r0 = fp;
0x0005fc08 movs r3, 1 | r3 = 1;
0x0005fc0a strd r1, r1, [r7, 0x20] | __asm ("strd r1, r1, [r7, 0x20]");
0x0005fc0e strd r1, r1, [r7, 0x28] | __asm ("strd r1, r1, [r7, 0x28]");
0x0005fc12 bl 0x31a08 | case_0x2ce04_20 (r0, r1, r2, r3);
0x0005fc16 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0005fc18 mov r1, r0 | r1 = r0;
0x0005fc1a movs r3, 1 | r3 = 1;
0x0005fc1c mov r0, fp | r0 = fp;
0x0005fc1e bl 0x31a08 | case_0x2ce04_20 (r0, r1, r2, r3);
0x0005fc22 str r0, [sp, 0x4c] | var_4ch = r0;
| if (r0 != 0) {
0x0005fc24 cbz r0, 0x5fc34 |
0x0005fc26 ldr r1, [r7, 0x30] | r1 = *((r7 + 0x30));
| if (r1 == 0) {
0x0005fc28 cbz r1, 0x5fc34 | goto label_50;
| }
0x0005fc2a ldr r3, [r1] | r3 = *(r1);
0x0005fc2c ldr r4, [r0] | r4 = *(r0);
0x0005fc2e cmp r3, r4 |
| if (r3 <= r4) {
0x0005fc30 ble.w 0x60f18 | goto label_150;
| }
| }
| label_50:
0x0005fc34 ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x0005fc38 add r2, sp, 0x90 | r2 += var_90h;
0x0005fc3a ldr r1, [r7, 0x1c] | r1 = *((r7 + 0x1c));
0x0005fc3c str r2, [sp, 0x30] | var_30h = r2;
0x0005fc3e str r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x0005fc40 adds r3, 4 | r3 += 4;
0x0005fc42 str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x0005fc46 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005fc48 str r2, [sp, 0xe4] | var_e4h = r2;
0x0005fc4a add r2, sp, 0xd8 | r2 += var_d8h;
0x0005fc4c str r6, [sp, 0x90] | var_90h = r6;
0x0005fc4e str r3, [sp, 0x94] | var_94h = r3;
0x0005fc50 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005fc52 str.w fp, [sp, 0xcc] | __asm ("str.w fp, [var_cch]");
0x0005fc56 str r2, [sp, 0x44] | var_44h = r2;
0x0005fc58 str r3, [sp, 0x9c] | var_9ch = r3;
0x0005fc5a ldr.w r3, [pc, 0x444] | r3 = *(0x000600a0);
0x0005fc5e add r3, pc | r3 += pc;
0x0005fc60 str r3, [sp, 0xd0] | var_d0h = r3;
0x0005fc62 ldr.w r3, [pc, 0x440] | r3 = *(0x000600a4);
0x0005fc66 add r3, pc | r3 += pc;
0x0005fc68 str r3, [sp, 0xd4] | var_d4h = r3;
0x0005fc6a movs r3, 0 | r3 = 0;
0x0005fc6c str r3, [sp, 0xd8] | var_d8h = r3;
0x0005fc6e str r3, [sp, 0xa0] | var_a0h = r3;
0x0005fc70 str r3, [sp, 0x98] | var_98h = r3;
0x0005fc72 strd r3, r3, [sp, 0xdc] | __asm ("strd r3, r3, [var_e0h]");
| if (r1 == 0) {
0x0005fc76 cbz r1, 0x5fca0 | goto label_85;
| }
0x0005fc78 ldr r4, [r1] | r4 = *(r1);
0x0005fc7a cmp r4, r3 |
| if (r4 <= r3) {
0x0005fc7c ble.w 0x6172e | goto label_151;
| }
0x0005fc80 add.w r5, r1, 0x18 | r5 = r1 + 0x18;
0x0005fc84 add.w r8, sp, 0xcc | r8 += var_cch;
| do {
0x0005fc88 ldr r1, [r5, -0x10] | r1 = *((r5 - 0x10));
| if (r1 != 0) {
0x0005fc8c cbz r1, 0x5fc96 |
0x0005fc8e mov r0, r8 | r0 = r8;
0x0005fc90 bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
| if (r0 != 0) {
0x0005fc94 cbnz r0, 0x5fc9e | goto label_152;
| }
| }
0x0005fc96 subs r4, 1 | r4--;
0x0005fc98 add.w r5, r5, 0x10 | r5 += 0x10;
0x0005fc9c bne 0x5fc88 |
| } while (r4 != 1);
| label_152:
0x0005fc9e ldr r1, [sp, 0x98] | r1 = var_98h;
| label_85:
0x0005fca0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0005fca2 ldr r5, [r7, 0x30] | r5 = *((r7 + 0x30));
0x0005fca4 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0005fca6 str r3, [sp, 0x94] | var_94h = r3;
0x0005fca8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005fcaa str.w fp, [sp, 0xcc] | __asm ("str.w fp, [var_cch]");
0x0005fcae str r1, [sp, 0x98] | var_98h = r1;
0x0005fcb0 str r3, [sp, 0x9c] | var_9ch = r3;
0x0005fcb2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0005fcb4 str r6, [sp, 0x90] | var_90h = r6;
0x0005fcb6 str r3, [sp, 0xe4] | var_e4h = r3;
0x0005fcb8 ldr r3, [pc, 0x3ec] |
0x0005fcba add r3, pc | r3 = 0xbfd66;
0x0005fcbc str r3, [sp, 0xd0] | var_d0h = r3;
0x0005fcbe ldr r3, [pc, 0x3ec] |
0x0005fcc0 add r3, pc | r3 = 0xbfd72;
0x0005fcc2 str r3, [sp, 0xd4] | var_d4h = r3;
0x0005fcc4 movs r3, 0 | r3 = 0;
0x0005fcc6 str r3, [sp, 0xd8] | var_d8h = r3;
0x0005fcc8 str r3, [sp, 0xa0] | var_a0h = r3;
0x0005fcca strd r3, r3, [r2, 4] | __asm ("strd r3, r3, [r2, 4]");
| if (r5 == 0) {
0x0005fcce cbz r5, 0x5fcf4 | goto label_153;
| }
0x0005fcd0 ldr r4, [r5] | r4 = *(r5);
0x0005fcd2 cmp r4, r3 |
| if (r4 <= r3) {
0x0005fcd4 ble 0x5fcf4 | goto label_153;
| }
0x0005fcd6 adds r5, 0x18 | r5 += 0x18;
0x0005fcd8 add.w r8, sp, 0xcc | r8 += var_cch;
| do {
0x0005fcdc ldr r1, [r5, -0x10] | r1 = *((r5 - 0x10));
| if (r1 != 0) {
0x0005fce0 cbz r1, 0x5fcea |
0x0005fce2 mov r0, r8 | r0 = r8;
0x0005fce4 bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
| if (r0 != 0) {
0x0005fce8 cbnz r0, 0x5fcf2 | goto label_154;
| }
| }
0x0005fcea subs r4, 1 | r4--;
0x0005fcec add.w r5, r5, 0x10 | r5 += 0x10;
0x0005fcf0 bne 0x5fcdc |
| } while (r4 != 1);
| label_154:
0x0005fcf2 ldr r1, [sp, 0x98] | r1 = var_98h;
| label_153:
0x0005fcf4 mov r3, r1 | r3 = r1;
| if (r1 != 0) {
0x0005fcf6 cbz r1, 0x5fcfa |
0x0005fcf8 ldr r3, [r1] | r3 = *(r1);
| }
0x0005fcfa ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0005fcfc mov r0, fp | r0 = fp;
0x0005fcfe str r3, [r6, 0x4c] | *((r6 + 0x4c)) = r3;
0x0005fd00 movs r3, 0 | r3 = 0;
0x0005fd02 bl 0x31a08 | case_0x2ce04_20 (r0, r1, r2, r3);
0x0005fd06 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0005fd08 mov r1, r0 | r1 = r0;
0x0005fd0a movs r3, 0 | r3 = 0;
0x0005fd0c mov r0, fp | r0 = fp;
0x0005fd0e bl 0x31a08 | case_0x2ce04_20 (r0, r1, r2, r3);
0x0005fd12 ldr r3, [pc, 0x39c] |
0x0005fd14 mov r4, r6 | r4 = r6;
0x0005fd16 strd sb, sl, [sp, 0x60] | __asm ("strd sb, sl, [var_60h]");
0x0005fd1a mov r5, r0 | r5 = r0;
0x0005fd1c ldr.w r8, [sp, 0x48] | r8 = var_48h;
0x0005fd20 add r3, pc | r3 = 0xbfdd6;
0x0005fd22 str r6, [sp, 0x40] | var_40h = r6;
0x0005fd24 str r3, [sp, 0x38] | var_38h = r3;
0x0005fd26 mov r6, fp | r6 = fp;
0x0005fd28 ldr r3, [pc, 0x388] |
0x0005fd2a ldr.w sl, [sp, 0x34] | sl = var_34h;
0x0005fd2e ldr.w sb, [sp, 0x44] | sb = var_44h;
0x0005fd32 add r3, pc | r3 = 0xbfdea;
0x0005fd34 str r7, [sp, 0x48] | var_48h = r7;
0x0005fd36 str r3, [sp, 0x3c] | var_3ch = r3;
0x0005fd38 b 0x5fd94 |
| while (r2 >= r2) {
0x0005fd3a mov r2, r5 | r2 = r5;
| if (r5 != 0) {
0x0005fd3c cbz r5, 0x5fd40 |
0x0005fd3e ldr r2, [r5] | r2 = *(r5);
| }
0x0005fd40 mov r1, r5 | r1 = r5;
0x0005fd42 str r2, [r4, 0x50] | *((r4 + 0x50)) = r2;
0x0005fd44 mov r0, r6 | r0 = r6;
0x0005fd46 mov r2, r3 | r2 = r3;
0x0005fd48 movs r3, 0 | r3 = 0;
0x0005fd4a bl 0x31a08 | r0 = case_0x2ce04_20 (r0, r1, r2, r3);
0x0005fd4e mov r5, r0 | r5 = r0;
| label_14:
0x0005fd50 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
| if (r1 != 0) {
0x0005fd52 cbz r1, 0x5fd6a |
0x0005fd54 movs r3, 0 | r3 = 0;
0x0005fd56 mov r0, sl | r0 = sl;
0x0005fd58 mov r2, r3 | r2 = r3;
0x0005fd5a bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x0005fd5e mov r1, r5 | r1 = r5;
0x0005fd60 mov r2, r0 | r2 = r0;
0x0005fd62 mov r0, r6 | r0 = r6;
0x0005fd64 bl 0x1c2ac | r0 = fcn_0001c2ac (r0, r1, r2);
0x0005fd68 mov r5, r0 | r5 = r0;
| }
0x0005fd6a ldr.w ip, [r6, 0x2c] | ip = *((r6 + 0x2c));
0x0005fd6e movs r2, 0 | r2 = 0;
0x0005fd70 movs r1, 0x48 | r1 = 0x48;
0x0005fd72 mov r0, r8 | r0 = r8;
0x0005fd74 add.w r3, ip, 1 | r3 = ip + 1;
0x0005fd78 add.w ip, ip, 2 |
0x0005fd7c str r3, [r4, 0x34] | *((r4 + 0x34)) = r3;
0x0005fd7e str.w ip, [r6, 0x2c] | __asm ("str.w ip, [r6, 0x2c]");
0x0005fd82 str.w ip, [r4, 0x38] | __asm ("str.w ip, [r4, 0x38]");
0x0005fd86 str r2, [sp] | *(sp) = r2;
0x0005fd88 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0005fd8c ldr r4, [r4, 0x24] | r4 = *((r4 + 0x24));
0x0005fd8e cmp r4, 0 |
| if (r4 == 0) {
0x0005fd90 beq.w 0x604cc | goto label_155;
| }
0x0005fd94 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0005fd96 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0005fd98 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x0005fd9a lsls r2, r2, 0xb | r2 <<= 0xb;
0x0005fd9c ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0005fd9e bpl 0x5fd3a |
| }
0x0005fda0 movs r2, 0 | r2 = 0;
0x0005fda2 str r5, [sp, 0x98] | var_98h = r5;
0x0005fda4 strd r2, r2, [sb] | __asm ("strd r2, r2, [sb]");
0x0005fda8 str.w r2, [sb, 8] | __asm ("str.w r2, [sb, 8]");
0x0005fdac str r2, [sp, 0xa0] | var_a0h = r2;
0x0005fdae ldr r2, [sp, 0x40] | r2 = var_40h;
0x0005fdb0 str r6, [sp, 0xcc] | var_cch = r6;
0x0005fdb2 str r2, [sp, 0x90] | var_90h = r2;
0x0005fdb4 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0005fdb6 str r2, [sp, 0x94] | var_94h = r2;
0x0005fdb8 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0005fdba str r2, [sp, 0x9c] | var_9ch = r2;
0x0005fdbc ldr r2, [sp, 0x38] | r2 = var_38h;
0x0005fdbe str r2, [sp, 0xd0] | var_d0h = r2;
0x0005fdc0 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0005fdc2 str r2, [sp, 0xd4] | var_d4h = r2;
0x0005fdc4 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005fdc6 str r2, [sp, 0xe4] | var_e4h = r2;
| if (r3 == 0) {
0x0005fdc8 cbz r3, 0x5fdee | goto label_156;
| }
0x0005fdca ldr r7, [r3] | r7 = *(r3);
0x0005fdcc cmp r7, 0 |
| if (r7 <= 0) {
0x0005fdce ble 0x5fdee | goto label_156;
| }
0x0005fdd0 add.w fp, r3, 0x18 |
0x0005fdd4 add r5, sp, 0xcc | r5 += var_cch;
| do {
0x0005fdd6 ldr r1, [fp, -0x10] | r1 = var_10h;
| if (r1 != 0) {
0x0005fdda cbz r1, 0x5fde4 |
0x0005fddc mov r0, r5 | r0 = r5;
0x0005fdde bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
| if (r0 != 0) {
0x0005fde2 cbnz r0, 0x5fdec | goto label_157;
| }
| }
0x0005fde4 subs r7, 1 | r7--;
0x0005fde6 add.w fp, fp, 0x10 |
0x0005fdea bne 0x5fdd6 |
| } while (r7 != 1);
| label_157:
0x0005fdec ldr r5, [sp, 0x98] | r5 = var_98h;
| label_156:
0x0005fdee mov r3, r5 | r3 = r5;
| if (r5 != 0) {
0x0005fdf0 cbz r5, 0x5fdf4 |
0x0005fdf2 ldr r3, [r5] | r3 = *(r5);
| }
0x0005fdf4 str r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
0x0005fdf6 movs r3, 1 | r3 = 1;
0x0005fdf8 strb.w r3, [r4, 0x60] | *((r4 + 0x60)) = r3;
0x0005fdfc b 0x5fd50 | goto label_14;
| label_121:
0x0005fdfe mov r1, r7 | r1 = r7;
0x0005fe00 mov r0, fp | r0 = fp;
0x0005fe02 bl 0x29530 | fcn_00029530 (r0, r1, r2);
0x0005fe06 b 0x5f71c | goto label_15;
| label_124:
0x0005fe08 ldr r1, [r7, 0x24] | r1 = *((r7 + 0x24));
0x0005fe0a ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x0005fe0e ldr.w sl, [sp, 0x30] | sl = var_30h;
| if (r1 != 0) {
0x0005fe12 cbz r1, 0x5fe1c |
0x0005fe14 ldrb r2, [r1] | r2 = *(r1);
0x0005fe16 cmp r2, 0x2c |
| if (r2 == 0x2c) {
0x0005fe18 beq.w 0x60a0a | goto label_158;
| }
| }
| label_29:
0x0005fe1c cmp r3, 0 |
| if (r3 <= 0) {
0x0005fe1e ble.w 0x60244 | goto label_159;
| }
0x0005fe22 ldr r3, [pc, 0x294] |
0x0005fe24 movs r6, 0 | r6 = 0;
0x0005fe26 str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
0x0005fe2a mov sb, r7 | sb = r7;
0x0005fe2c add r3, pc | r3 = 0xbfeea;
0x0005fe2e adds r3, 4 | r3 += 4;
0x0005fe30 str r3, [sp, 0x48] | var_48h = r3;
0x0005fe32 ldr r3, [pc, 0x288] |
0x0005fe34 add r3, pc | r3 = 0xbfef6;
0x0005fe36 adds r3, 4 | r3 += 4;
0x0005fe38 str r3, [sp, 0x4c] | var_4ch = r3;
0x0005fe3a ldr r3, [pc, 0x284] |
0x0005fe3c add r3, pc | r3 = 0xbff02;
0x0005fe3e str r3, [sp, 0x3c] | var_3ch = r3;
0x0005fe40 ldr r3, [pc, 0x280] |
0x0005fe42 add r3, pc | r3 = 0xbff0a;
0x0005fe44 str r3, [sp, 0x44] | var_44h = r3;
0x0005fe46 add.w r3, r5, 8 | r3 = r5 + 8;
0x0005fe4a mov r4, r3 | r4 = r3;
0x0005fe4c str r3, [sp, 0x38] | var_38h = r3;
0x0005fe4e b 0x5ff4c | goto label_160;
| label_16:
0x0005fe50 ldr r3, [r5] | r3 = *(r5);
0x0005fe52 cmp r3, 1 |
| if (r3 != 1) {
0x0005fe54 beq 0x5fe62 |
0x0005fe56 ldrb.w r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x0005fe5a tst.w r3, 0xa |
| if ((r3 & 0xa) == 0) {
0x0005fe5e beq.w 0x5ffd0 | goto label_161;
| }
| }
0x0005fe62 ldrsb.w r3, [r5, 0x2d] | r3 = *((r5 + 0x2d));
0x0005fe66 cmp r3, 0 |
| if (r3 < 0) {
0x0005fe68 bge 0x5fe74 |
0x0005fe6a ldr r3, [r5, 0x4c] | r3 = *((r5 + 0x4c));
0x0005fe6c ldrb r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x0005fe6e cmp r3, 0 |
| if (r3 == 0) {
0x0005fe70 beq.w 0x5ffe0 | goto label_162;
| }
| }
0x0005fe74 ldr.w r8, [sl, 0x6c] | r8 = *((sl + 0x6c));
0x0005fe78 movs r1, 0xd | r1 = 0xd;
0x0005fe7a ldr.w r2, [fp, 0x2c] | r2 = *(arg_2ch);
0x0005fe7e mov r0, sl | r0 = sl;
0x0005fe80 add.w r3, r8, 1 | r3 = r8 + 1;
0x0005fe84 adds r2, 1 | r2++;
0x0005fe86 str r3, [sp, 0x40] | var_40h = r3;
0x0005fe88 str.w r2, [fp, 0x2c] | __asm ("str.w r2, [arg_2ch]");
0x0005fe8c str r2, [r5, 0x24] | *((r5 + 0x24)) = r2;
0x0005fe8e str r3, [sp] | *(sp) = r3;
0x0005fe90 movs r3, 0 | r3 = 0;
0x0005fe92 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0005fe96 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0005fe98 movs r1, 0xd | r1 = 0xd;
0x0005fe9a ldr r2, [pc, 0x22c] |
0x0005fe9c mov r0, fp | r0 = fp;
0x0005fe9e str r3, [r5, 0x20] | *((r5 + 0x20)) = r3;
0x0005fea0 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0005fea2 add r2, pc | r2 = 0xbff70;
0x0005fea4 strb.w r1, [sp, 0xac] | var_ach = r1;
0x0005fea8 movs r1, 1 | r1 = 1;
0x0005feaa str r3, [sp, 0xb0] | var_b0h = r3;
0x0005feac movs r3, 0 | r3 = 0;
0x0005feae str r3, [sp, 0xb4] | var_b4h = r3;
0x0005feb0 str r3, [sp, 0xc0] | var_c0h = r3;
0x0005feb2 strd r3, r3, [sp, 0xb8] | __asm ("strd r3, r3, [var_b8h]");
0x0005feb6 mov r3, r4 | r3 = r4;
0x0005feb8 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0005febc ldr r2, [sp, 0x30] | r2 = var_30h;
0x0005febe mov r1, r7 | r1 = r7;
0x0005fec0 mov r0, fp | r0 = fp;
0x0005fec2 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0005fec6 ldrb.w r3, [r5, 0x2d] | r3 = *((r5 + 0x2d));
0x0005feca mov r0, sl | r0 = sl;
0x0005fecc ldrh r1, [r7, 2] | r1 = *((r7 + 2));
0x0005fece ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x0005fed0 orr r3, r3, 0x10 | r3 |= 0x10;
0x0005fed4 strh r1, [r2, 0x2e] | *((r2 + 0x2e)) = r1;
0x0005fed6 strb.w r3, [r5, 0x2d] | *((r5 + 0x2d)) = r3;
0x0005feda ldr r3, [sp, 0xb8] | r3 = var_b8h;
0x0005fedc ldr r1, [r5, 0x24] | r1 = *((r5 + 0x24));
0x0005fede str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0005fee0 bl 0x2b650 | fcn_0002b650 (r0, r1, r2);
0x0005fee4 ldr.w r3, [sl] | r3 = *(sl);
0x0005fee8 cmp.w r8, 0 |
0x0005feec ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0005fef0 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0005fef4 it lt |
| if (r8 >= 0) {
0x0005fef6 addlt r8, r2, -1 | r8 = r2 + -1;
| }
0x0005fefa cmp r3, 0 |
| if (r3 != 0) {
0x0005fefc bne.w 0x605c8 | goto label_163;
| }
0x0005ff00 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0005ff04 add.w r8, r8, r8, lsl 2 | r8 += (r8 << 2);
0x0005ff08 add.w r3, r3, r8, lsl 2 | r3 += (r8 << 2);
| label_24:
0x0005ff0c str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0005ff0e movs r3, 0 | r3 = 0;
0x0005ff10 strb.w r3, [fp, 0x13] | *(arg_13h) = r3;
0x0005ff14 str.w r3, [fp, 0x1c] | __asm ("str.w r3, [arg_1ch]");
| label_18:
0x0005ff18 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005ff1a ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0005ff1e cmp r3, 0 |
| if (r3 != 0) {
0x0005ff20 bne.w 0x605e0 | goto label_164;
| }
0x0005ff24 add r1, sp, 0x90 | r1 += var_90h;
0x0005ff26 mov r0, sb | r0 = sb;
0x0005ff28 str r3, [sp, 0x90] | var_90h = r3;
0x0005ff2a bl 0x13638 | fcn_00013638 (r0, r1);
0x0005ff2e ldr r3, [sp, 0x28] | r3 = var_28h;
0x0005ff30 ldr r2, [sp, 0x90] | r2 = var_90h;
0x0005ff32 str.w r3, [fp, 0xf0] | __asm ("str.w r3, [arg_f0h]");
0x0005ff36 ldr.w r3, [fp, 0xd0] | r3 = *(arg_d0h);
0x0005ff3a subs r3, r3, r2 | r3 -= r2;
0x0005ff3c str.w r3, [fp, 0xd0] | __asm ("str.w r3, [arg_d0h]");
| do {
0x0005ff40 ldr r3, [r5] | r3 = *(r5);
0x0005ff42 adds r6, 1 | r6++;
0x0005ff44 adds r4, 0x48 | r4 += 0x48;
0x0005ff46 cmp r3, r6 |
| if (r3 <= r6) {
0x0005ff48 ble.w 0x6023e | goto label_165;
| }
| label_160:
0x0005ff4c ldrd r3, r2, [r4, 0x38] | __asm ("ldrd r3, r2, [r4, 0x38]");
0x0005ff50 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x0005ff52 bne 0x5ff66 |
0x0005ff54 ldr r2, [r4, 8] | r2 = *((r4 + 8));
| if (r2 == 0) {
0x0005ff56 cbz r2, 0x5ff66 | goto label_166;
| }
0x0005ff58 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0005ff5a movs r1, 0x14 | r1 = 0x14;
0x0005ff5c mov r0, fp | r0 = fp;
0x0005ff5e str r3, [sp] | *(sp) = r3;
0x0005ff60 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0005ff62 bl 0x25800 | fcn_00025800 (r0);
| }
| label_166:
0x0005ff66 ldr r7, [r4, 0x14] | r7 = *((r4 + 0x14));
0x0005ff68 cmp r7, 0 |
0x0005ff6a beq 0x5ff40 |
| } while (r7 == 0);
0x0005ff6c add r3, sp, 0xac | r3 += var_ach;
0x0005ff6e mov r0, sb | r0 = sb;
0x0005ff70 mov r1, r3 | r1 = r3;
0x0005ff72 str r3, [sp, 0x30] | var_30h = r3;
0x0005ff74 movs r3, 0 | r3 = 0;
0x0005ff76 str r3, [sp, 0xac] | var_ach = r3;
0x0005ff78 bl 0x13638 | fcn_00013638 (r0, r1);
0x0005ff7c ldr.w r3, [fp, 0xd0] | r3 = *(arg_d0h);
0x0005ff80 ldr r2, [sp, 0xac] | r2 = var_ach;
0x0005ff82 add r3, r2 | r3 += r2;
0x0005ff84 str.w r3, [fp, 0xd0] | __asm ("str.w r3, [arg_d0h]");
0x0005ff88 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0005ff8a ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0005ff8c lsls r1, r3, 0x13 | r1 = r3 << 0x13;
| if (r1 >= r3) {
0x0005ff8e bmi 0x5ffbe |
0x0005ff90 add.w r3, r6, r6, lsl 3 | r3 = r6 + (r6 << 3);
0x0005ff94 add.w r3, r5, r3, lsl 3 | r3 = r5 + (r3 << 3);
0x0005ff98 ldrsb.w r3, [r3, 0x2d] | r3 = *((r3 + 0x2d));
0x0005ff9c cmp r3, 0 |
| if (r3 < 0) {
0x0005ff9e bge 0x5ffa6 |
0x0005ffa0 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0005ffa2 ldrb r3, [r3, 0x12] | r3 = *((r3 + 0x12));
| if (r3 == 0) {
0x0005ffa4 cbz r3, 0x5ffbe | goto label_167;
| }
| }
0x0005ffa6 ldrb.w r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x0005ffaa mov r1, r7 | r1 = r7;
0x0005ffac ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0005ffae mov r0, fp | r0 = fp;
0x0005ffb0 ubfx r2, r2, 5, 1 | r2 = (r2 >> 5) & ((1 << 1) - 1);
0x0005ffb4 str r2, [sp] | *(sp) = r2;
0x0005ffb6 ldr.w r2, [sb, 0x24] | r2 = *((sb + 0x24));
0x0005ffba bl 0x323c4 | fcn_000323c4 (r0, r1, r2, r3, r4);
| }
| label_167:
0x0005ffbe ldr.w r2, [fp, 0xf0] | r2 = *(arg_f0h);
0x0005ffc2 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0005ffc4 str r2, [sp, 0x28] | var_28h = r2;
0x0005ffc6 str.w r3, [fp, 0xf0] | __asm ("str.w r3, [arg_f0h]");
0x0005ffca cmp r6, 0 |
| if (r6 == 0) {
0x0005ffcc beq.w 0x5fe50 | goto label_16;
| }
| label_161:
0x0005ffd0 add.w r3, r6, r6, lsl 3 | r3 = r6 + (r6 << 3);
0x0005ffd4 add.w r3, r5, r3, lsl 3 | r3 = r5 + (r3 << 3);
0x0005ffd8 ldrsb.w r3, [r3, 0x2d] | r3 = *((r3 + 0x2d));
0x0005ffdc cmp r3, 0 |
| if (r3 < 0) {
0x0005ffde bge 0x5ffee |
| label_162:
0x0005ffe0 ldr.w r8, [r4, 0x44] | r8 = *((r4 + 0x44));
0x0005ffe4 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0005ffe8 cmp r3, 0 |
| if (r3 > 0) {
0x0005ffea bgt.w 0x601e6 | goto label_168;
| }
| }
0x0005ffee ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0005fff0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0005fff2 lsls r2, r3, 7 | r2 = r3 << 7;
| if (r2 < r3) {
0x0005fff4 bmi 0x600cc | goto label_169;
| }
0x0005fff6 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0005fff8 cmp r3, r4 |
0x0005fffa mov r8, r3 | r8 = r3;
| if (r3 <= r4) {
0x0005fffc blo 0x60008 | goto label_170;
| }
0x0005fffe b 0x600cc | goto label_169;
| do {
| label_17:
0x00060000 add.w r8, r8, 0x48 | r8 += 0x48;
0x00060004 cmp r8, r4 |
| if (r8 >= r4) {
0x00060006 bhs 0x600cc | goto label_169;
| }
| label_170:
0x00060008 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x0006000c cmp r3, 0 |
0x0006000e beq 0x60000 |
| } while (r3 == 0);
0x00060010 ldrb.w r3, [r8, 0x25] | r3 = *((r8 + 0x25));
0x00060014 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x00060016 bmi 0x60000 | goto label_17;
| }
0x00060018 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x0006001c cmp r0, 0 |
| if (r0 == 0) {
0x0006001e beq 0x60000 | goto label_17;
| }
0x00060020 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00060024 ldr r2, [r3, 0x48] | r2 = *((r3 + 0x48));
0x00060026 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00060028 ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x0006002a cmp r2, r3 |
| if (r2 != r3) {
0x0006002c bne 0x60000 | goto label_17;
| }
0x0006002e ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00060030 blx 0x831c | r0 = fcn_0000831c ();
0x00060034 cmp r0, 0 |
| if (r0 != 0) {
0x00060036 bne 0x60000 | goto label_17;
| }
0x00060038 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x0006003c ldr r2, [r3, 0x48] | r2 = *((r3 + 0x48));
0x0006003e ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00060042 cmp r2, 0 |
| if (r2 == 0) {
0x00060044 beq.w 0x605d2 | goto label_171;
| }
| label_25:
0x00060048 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0006004a ands r1, r1, 0x1000000 | r1 &= 0x1000000;
| if (r1 != r1) {
0x0006004e bne 0x60000 | goto label_17;
| }
0x00060050 ldr.w r3, [r8, 0x18] | r3 = *((r8 + 0x18));
0x00060054 cmp r3, 0 |
| if (r3 != 0) {
0x00060056 bne.w 0x604bc | goto label_172;
| }
| label_21:
0x0006005a movs r1, 0 | r1 = 0;
0x0006005c ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x00060060 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00060062 mov r0, sl | r0 = sl;
0x00060064 str r1, [sp] | *(sp) = r1;
0x00060066 movs r1, 0x64 | r1 = 0x64;
0x00060068 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006006c ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00060070 ldrsh.w r3, [r3, 2] | r3 = *((r3 + 2));
0x00060074 strh r3, [r7, 2] | *((r7 + 2)) = r3;
0x00060076 b 0x5ff18 | goto label_18;
| label_169:
0x000600cc ldrd r8, r2, [sl, 0x6c] | __asm ("ldrd r8, r2, [sl, 0x6c]");
0x000600d0 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x000600d4 cmp r8, r2 |
0x000600d6 add.w r3, r3, 1 | r3++;
0x000600d8 lsls r1, r0, 0xc | r1 = r0 << 0xc;
0x000600da str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x000600de str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| if (r1 >= r0) {
0x000600e0 bge.w 0x60fd0 | goto label_173;
| }
0x000600e4 ldr.w lr, [sl, 0x68] |
0x000600e8 add.w r1, r8, r8, lsl 2 | r1 = r8 + (r8 << 2);
0x000600ec movs r0, 0 | r0 = 0;
0x000600ee add.w ip, r8, 1 |
0x000600f2 str.w ip, [sl, 0x6c] | __asm ("str.w ip, [sl, 0x6c]");
0x000600f6 add.w r2, lr, r1, lsl 2 | r2 = lr + (r1 << 2);
0x000600fa strd r3, r0, [r2, 8] | __asm ("strd r3, r0, [r2, 8]");
0x000600fe movs r3, 0x45 | r3 = 0x45;
0x00060100 str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x00060102 str.w r3, [lr, r1, lsl 2] | __asm ("str.w r3, [lr, r1, lsl 2]");
0x00060106 str r0, [r2, 4] | *((r2 + 4)) = r0;
| label_58:
0x00060108 lsls r3, r6, 3 | r3 = r6 << 3;
0x0006010a str.w ip, [r4, 0x18] | __asm ("str.w ip, [r4, 0x18]");
0x0006010e str r3, [sp, 0x40] | var_40h = r3;
0x00060110 add r3, r6 | r3 += r6;
0x00060112 add.w r3, r5, r3, lsl 3 | r3 = r5 + (r3 << 3);
0x00060116 ldrb.w r3, [r3, 0x2d] | r3 = *((r3 + 0x2d));
0x0006011a ands r3, r3, 8 | r3 &= 8;
| if (r3 == r3) {
0x0006011e beq.w 0x60e42 | goto label_174;
| }
0x00060122 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00060124 movs r2, 0xc | r2 = 0xc;
0x00060126 movs r1, 1 | r1 = 1;
0x00060128 mov r0, fp | r0 = fp;
0x0006012a strb.w r2, [sp, 0xac] | var_ach = r2;
0x0006012e str r3, [sp, 0xb0] | var_b0h = r3;
0x00060130 movs r3, 0 | r3 = 0;
0x00060132 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00060134 str r3, [sp, 0xb4] | var_b4h = r3;
0x00060136 str r3, [sp, 0xc0] | var_c0h = r3;
0x00060138 strd r3, r3, [sp, 0xb8] | __asm ("strd r3, r3, [var_b8h]");
0x0006013c mov r3, r4 | r3 = r4;
0x0006013e bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00060142 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00060144 mov r1, r7 | r1 = r7;
0x00060146 mov r0, fp | r0 = fp;
0x00060148 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006014c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0006014e ldrh r2, [r7, 2] | r2 = *((r7 + 2));
0x00060150 strh r2, [r3, 0x2e] | *((r3 + 0x2e)) = r2;
0x00060152 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
| label_44:
0x00060156 ldr.w r2, [sl, 0x70] | r2 = *((sl + 0x70));
0x0006015a ldr.w ip, [r4, 0x1c] | ip = *((r4 + 0x1c));
0x0006015e cmp r2, r3 |
| if (r2 <= r3) {
0x00060160 ble.w 0x61010 | goto label_175;
| }
0x00060164 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x00060168 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0006016c adds r0, r3, 1 | r0 = r3 + 1;
0x0006016e str.w r0, [sl, 0x6c] | __asm ("str.w r0, [sl, 0x6c]");
0x00060172 mov.w lr, 0 | lr = 0;
0x00060176 add.w r0, r2, r1, lsl 2 | r0 = r2 + (r1 << 2);
0x0006017a strd ip, lr, [r0, 4] | __asm ("strd ip, lr, [r0, 4]");
0x0006017e strd lr, lr, [r0, 0xc] | __asm ("strd lr, lr, [r0, 0xc]");
0x00060182 movs r0, 0x41 | r0 = 0x41;
0x00060184 str.w r0, [r2, r1, lsl 2] | __asm ("str.w r0, [r2, r1, lsl 2]");
| label_60:
0x00060188 cmp.w r8, 0 |
0x0006018c itt lt |
| if (r8 >= 0) {
0x0006018e ldrlt r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
| }
| if (r8 < 0) {
0x00060192 add.w r8, r2, -1 | r8 = r2 + -1;
| }
0x00060196 ldr.w r2, [sl] | r2 = *(sl);
0x0006019a ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0006019e cmp r2, 0 |
| if (r2 != 0) {
0x000601a0 bne.w 0x60b26 | goto label_176;
| }
0x000601a4 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x000601a8 add.w r1, r8, r8, lsl 2 | r1 = r8 + (r8 << 2);
0x000601ac add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
| label_34:
0x000601b0 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x000601b2 movs r2, 0 | r2 = 0;
0x000601b4 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000601b6 strb.w r2, [fp, 0x13] | *(arg_13h) = r2;
0x000601ba str.w r2, [fp, 0x1c] | __asm ("str.w r2, [arg_1ch]");
0x000601be add r3, r6 | r3 += r6;
0x000601c0 add.w r3, r5, r3, lsl 3 | r3 = r5 + (r3 << 3);
0x000601c4 ldrb.w r3, [r3, 0x2d] | r3 = *((r3 + 0x2d));
0x000601c8 and r3, r3, 0x88 | r3 &= 0x88;
0x000601cc cmp r3, 0x80 |
| if (r3 != 0x80) {
0x000601ce bne.w 0x5ff18 | goto label_18;
| }
0x000601d2 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x000601d4 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x000601d6 ldrh r1, [r7, 2] | r1 = *((r7 + 2));
0x000601d8 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x000601da ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x000601dc str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000601de ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x000601e0 strh r1, [r3, 0x10] | *((r3 + 0x10)) = r1;
0x000601e2 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x000601e4 b 0x5ff18 | goto label_18;
| label_168:
0x000601e6 movs r1, 0 | r1 = 0;
0x000601e8 ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x000601ec mov r0, sl | r0 = sl;
0x000601ee str r1, [sp] | *(sp) = r1;
0x000601f0 movs r1, 0xc | r1 = 0xc;
0x000601f2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000601f6 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x000601f8 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x000601fc cmp r2, r3 |
| if (r2 != r3) {
0x000601fe beq 0x6020c |
0x00060200 movs r1, 0 | r1 = 0;
0x00060202 mov r0, sl | r0 = sl;
0x00060204 str r1, [sp] | *(sp) = r1;
0x00060206 movs r1, 0x64 | r1 = 0x64;
0x00060208 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0006020c ldrh.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00060210 strh r3, [r7, 2] | *((r7 + 2)) = r3;
0x00060212 b 0x5ff18 | goto label_18;
| label_127:
0x00060214 ldr.w r3, [sl] | r3 = *(sl);
0x00060218 mov r0, fp | r0 = fp;
0x0006021a str r1, [sp] | *(sp) = r1;
0x0006021c ldr.w r1, [pc, 0xb7c] |
0x00060220 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x00060224 add r1, pc | r1 = 0xc0fc4;
0x00060226 bl 0x25778 | fcn_00025778 (r0);
| label_22:
0x0006022a ldrb.w r2, [sb, 0x53] | r2 = *((sb + 0x53));
0x0006022e movs r4, 1 | r4 = 1;
0x00060230 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00060234 add r3, r2 | r3 += r2;
0x00060236 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
0x0006023a b.w 0x5f862 | goto label_11;
| label_165:
0x0006023e mov r7, sb | r7 = sb;
0x00060240 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
| label_159:
0x00060244 ldr r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
0x00060246 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00060248 str r2, [sp, 0x38] | var_38h = r2;
0x0006024a ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x0006024c str r2, [sp, 0x40] | var_40h = r2;
0x0006024e ldr r2, [r7, 0x28] | r2 = *((r7 + 0x28));
0x00060250 str r2, [sp, 0x28] | var_28h = r2;
0x00060252 ldr r2, [r7, 0x2c] | r2 = *((r7 + 0x2c));
0x00060254 str r2, [sp, 0x44] | var_44h = r2;
0x00060256 and r2, r3, 1 | r2 = r3 & 1;
0x0006025a and r3, r3, 9 | r3 &= 9;
0x0006025e str r2, [sp, 0x3c] | var_3ch = r2;
0x00060260 cmp r3, 1 |
0x00060262 strb.w r2, [sp, 0x84] | var_84h = r2;
| if (r3 == 1) {
0x00060266 beq.w 0x60df4 | goto label_177;
| }
| label_41:
0x0006026a ldr r1, [sp, 0xcc] | r1 = var_cch;
0x0006026c mov.w r0, -1 | r0 = -1;
| if (r1 != 0) {
0x00060270 cbz r1, 0x602a8 |
0x00060272 ldr r4, [sp, 0x38] | r4 = var_38h;
0x00060274 movs r2, 0 | r2 = 0;
0x00060276 mov r0, fp | r0 = fp;
0x00060278 ldr r3, [r4] | r3 = *(r4);
0x0006027a bl 0x2dc24 | fcn_0002dc24 (r0, r1, r2, r3);
0x0006027e ldr r3, [sp, 0xcc] | r3 = var_cch;
0x00060280 ldr.w r2, [fp, 0x28] | r2 = *(arg_28h);
0x00060284 ldr r1, [r4] | r1 = *(r4);
0x00060286 ldr r3, [r3] | r3 = *(r3);
0x00060288 str r0, [sp, 4] | var_4h = r0;
0x0006028a mov r0, sl | r0 = sl;
0x0006028c str r2, [sp, 0xd4] | var_d4h = r2;
0x0006028e adds r3, 1 | r3++;
0x00060290 add r3, r1 | r3 += r1;
0x00060292 adds r1, r2, 1 | r1 = r2 + 1;
0x00060294 str.w r1, [fp, 0x28] | __asm ("str.w r1, [arg_28h]");
0x00060298 mvn r1, 8 | r1 = ~8;
0x0006029c str r1, [sp, 8] | var_8h = r1;
0x0006029e movs r1, 0 | r1 = 0;
0x000602a0 str r1, [sp] | *(sp) = r1;
0x000602a2 movs r1, 0x70 | r1 = 0x70;
0x000602a4 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
| }
0x000602a8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000602aa str r0, [sp, 0xe0] | var_e0h = r0;
0x000602ac ldrb r3, [r3] | r3 = *(r3);
0x000602ae cmp r3, 0xc |
| if (r3 == 0xc) {
0x000602b0 beq.w 0x60d82 | goto label_178;
| }
| label_40:
0x000602b4 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x000602b8 mov r1, r7 | r1 = r7;
0x000602ba mov r0, fp | r0 = fp;
0x000602bc mov r2, r3 | r2 = r3;
0x000602be str r3, [sp, 0x48] | var_48h = r3;
0x000602c0 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000602c2 subs r2, 1 | r2--;
0x000602c4 str.w r2, [fp, 0x38] | __asm ("str.w r2, [arg_38h]");
0x000602c8 lsls r4, r3, 0x11 | r4 = r3 << 0x11;
0x000602ca itt pl |
| if (r4 < r3) {
0x000602cc movpl r3, 0x140 | r3 = 0x140;
| }
| if (r4 >= r3) {
0x000602d0 strh r3, [r7, 2] | *((r7 + 2)) = r3;
| }
0x000602d2 bl 0x67420 | fcn_00067420 (r0, r1, r2, r3);
0x000602d6 ldr r3, [r7, 8] | r3 = *((r7 + 8));
| if (r3 == 0) {
0x000602d8 cbnz r3, 0x602e2 |
0x000602da ldr r2, [sp, 0xe0] | r2 = var_e0h;
0x000602dc cmp r2, 0 |
| if (r2 >= 0) {
0x000602de bge.w 0x60d56 | goto label_179;
| }
| }
| label_39:
0x000602e2 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000602e4 lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
| if (r0 < r3) {
0x000602e6 bmi.w 0x60ad4 | goto label_180;
| }
| label_33:
0x000602ea ldr r3, [sp, 0x24] | r3 = var_24h;
0x000602ec ldr r2, [sp, 0x34] | r2 = var_34h;
0x000602ee strb.w r3, [sp, 0x85] | var_85h = r3;
0x000602f2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000602f4 orrs.w r8, r3, r2 | r8 = r3 | r2;
| if (r8 != r3) {
0x000602f8 bne.w 0x60618 | goto label_181;
| }
0x000602fc ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000602fe ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00060300 and r3, r3, 0x4000 | r3 &= 0x4000;
0x00060304 orr.w r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x00060308 str r3, [sp, 0x24] | var_24h = r3;
0x0006030a ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x0006030c str r3, [sp, 0x20] | var_20h = r3;
0x0006030e cmp r3, 0 |
| if (r3 == 0) {
0x00060310 beq.w 0x60814 | goto label_74;
| }
0x00060314 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x00060316 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00060318 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0006031a ldr r4, [r3] | r4 = *(r3);
0x0006031c ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00060320 str r3, [sp, 0x1c] | var_1ch = r3;
0x00060322 cmp r3, 0 |
| if (r3 == 0) {
0x00060324 beq.w 0x60fba | goto label_182;
| }
| label_57:
0x00060328 ldr r6, [sp, 0x20] | r6 = var_20h;
0x0006032a mov r3, r4 | r3 = r4;
0x0006032c movs r4, 0 | r4 = 0;
0x0006032e movs r1, 0x70 | r1 = 0x70;
0x00060330 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00060332 ldr r2, [r6, 0x30] | r2 = *((r6 + 0x30));
0x00060334 str r4, [sp] | *(sp) = r4;
0x00060336 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006033a ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x0006033c movs r1, 0x64 | r1 = 0x64;
0x0006033e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00060340 str r4, [sp] | *(sp) = r4;
0x00060342 adds r2, r3, 1 | r2 = r3 + 1;
0x00060344 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060348 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x0006034a movs r1, 0x64 | r1 = 0x64;
0x0006034c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006034e str r4, [sp] | *(sp) = r4;
0x00060350 adds r2, r3, 2 | r2 = r3 + 2;
0x00060352 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060356 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x00060358 movs r1, 0x64 | r1 = 0x64;
0x0006035a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006035c str r4, [sp] | *(sp) = r4;
0x0006035e adds r2, r3, 3 | r2 = r3 + 3;
0x00060360 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060364 ldr r3, [r6, 8] | r3 = *((r6 + 8));
| if (r3 != 0) {
0x00060366 cbz r3, 0x6038c |
0x00060368 mov r2, r4 | r2 = r4;
0x0006036a ldr.w r4, [fp, 0x2c] | r4 = *(arg_2ch);
0x0006036e ldr.w ip, [r3] | ip = *(r3);
0x00060372 movs r1, 0x48 | r1 = 0x48;
0x00060374 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00060376 adds r3, r4, 1 | r3 = r4 + 1;
0x00060378 add r4, ip | r4 += ip;
0x0006037a add ip, r3 |
0x0006037c str r3, [r6, 0x44] | *((r6 + 0x44)) = r3;
0x0006037e str.w r4, [fp, 0x2c] | __asm ("str.w r4, [arg_2ch]");
0x00060382 add.w r4, ip, -1 | r4 = ip + -1;
0x00060386 str r4, [sp] | *(sp) = r4;
0x00060388 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0006038c ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00060390 movs r4, 0 | r4 = 0;
0x00060392 ldr r6, [sp, 0x20] | r6 = var_20h;
0x00060394 movs r2, 1 | r2 = 1;
0x00060396 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00060398 movs r1, 0x45 | r1 = 0x45;
0x0006039a adds r3, 1 | r3++;
0x0006039c str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x000603a0 str r3, [r6, 0x54] | *((r6 + 0x54)) = r3;
0x000603a2 str r4, [sp] | *(sp) = r4;
0x000603a4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000603a8 ldrb r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x000603aa cmp r3, 0 |
| if (r3 != 0) {
0x000603ac bne.w 0x61466 | goto label_183;
| }
0x000603b0 ldr.w r3, [pc, 0x9ec] | r3 = *(0x00060da0);
0x000603b4 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000603b6 strd sb, sl, [sp, 0x30] | __asm ("strd sb, sl, [var_34h]");
0x000603ba add r3, pc | r3 += pc;
0x000603bc ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x000603be add.w r2, r3, 0xac0 | r2 = r3 + 0xac0;
0x000603c2 addw r1, r3, 0xacc | __asm ("addw r1, r3, aav.0x000000ff");
0x000603c6 strd r5, r8, [sp, 0x28] | __asm ("strd r5, r8, [var_2ch]");
0x000603ca mov r4, r0 | r4 = r0;
0x000603cc str r7, [sp, 0x1c] | var_1ch = r7;
0x000603ce mov sl, r0 | sl = r0;
0x000603d0 mov sb, r3 | sb = r3;
0x000603d2 mov r7, r2 | r7 = r2;
0x000603d4 mov r8, r1 | r8 = r1;
0x000603d6 b 0x60468 |
| while (r2 < r2) {
0x000603d8 ldrb r2, [r4, 0x11] | r2 = *((r4 + 0x11));
0x000603da cmp r2, 0x5a |
| if (r2 == 0x5a) {
0x000603dc beq 0x60470 | goto label_184;
| }
0x000603de ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x000603e0 mov r0, fp | r0 = fp;
0x000603e2 ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x000603e4 movs r3, 0 | r3 = 0;
0x000603e6 mov r2, r3 | r2 = r3;
0x000603e8 bl 0x2dc24 | fcn_0002dc24 (r0, r1, r2, r3);
0x000603ec ldrd r2, r3, [fp, 0x28] | __asm ("ldrd r2, r3, [arg_28h]");
0x000603f0 mov r5, r0 | r5 = r0;
0x000603f2 adds r1, r2, 1 | r1 = r2 + 1;
0x000603f4 str.w r1, [fp, 0x28] | __asm ("str.w r1, [arg_28h]");
0x000603f8 adds r1, r3, 1 | r1 = r3 + 1;
0x000603fa adds r3, 3 | r3 += 3;
0x000603fc str r2, [r4, 0x3c] | *((r4 + 0x3c)) = r2;
0x000603fe str r1, [r4, 0x40] | *((r4 + 0x40)) = r1;
0x00060400 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x00060404 cmp r0, 0 |
| if (r0 == 0) {
0x00060406 beq.w 0x60f80 | goto label_185;
| }
0x0006040a ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0006040c movs r1, 0x70 | r1 = 0x70;
0x0006040e ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x00060410 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00060412 cmp r3, 0x69 |
0x00060414 itt eq |
| if (r3 != 0x69) {
0x00060416 ldreq r3, [r0, 0x10] | r3 = *((r0 + 0x10));
| }
| if (r3 != 0x69) {
0x00060418 moveq r2, 1 | r2 = 1;
| }
0x0006041a mov r0, r6 | r0 = r6;
0x0006041c it eq |
| if (r3 != 0x69) {
0x0006041e strbeq r2, [r3] | *(r3) = r2;
| }
0x00060420 mov.w r3, 0 | r3 = 0;
0x00060424 it eq |
| if (r3 != 0x69) {
0x00060426 ldreq r2, [r4, 0x3c] | r2 = *((r4 + 0x3c));
| }
0x00060428 str r3, [sp] | *(sp) = r3;
0x0006042a movs r3, 2 | r3 = 2;
0x0006042c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060430 ldr r3, [r6] | r3 = *(r6);
0x00060432 ldrb.w r2, [r3, 0x53] | r2 = *((r3 + 0x53));
0x00060436 cmp r2, 0 |
| if (r2 != 0) {
0x00060438 bne.w 0x6107a | goto label_186;
| }
| label_53:
0x0006043c ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x0006043e ldr r2, [r6, 0x68] | r2 = *((r6 + 0x68));
0x00060440 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00060444 lsls r3, r3, 2 | r3 <<= 2;
0x00060446 subs r3, 0x14 | r3 -= 0x14;
0x00060448 add r3, r2 | r3 += r2;
0x0006044a movs r2, 0xf7 | r2 = 0xf7;
0x0006044c str r5, [r3, 0x10] | *((r3 + 0x10)) = r5;
0x0006044e strb r2, [r3, 1] | *((r3 + 1)) = r2;
| label_54:
0x00060450 ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x00060452 movs r2, 0 | r2 = 0;
0x00060454 movs r1, 0x45 | r1 = 0x45;
0x00060456 mov r0, r6 | r0 = r6;
0x00060458 str r2, [sp] | *(sp) = r2;
0x0006045a adds r3, 1 | r3++;
0x0006045c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_19:
0x00060460 ldr r4, [r4, 0x24] | r4 = *((r4 + 0x24));
0x00060462 cmp r4, 0 |
| if (r4 == 0) {
0x00060464 beq.w 0x6080a | goto label_187;
| }
0x00060468 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0006046a ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0006046c lsls r2, r2, 0x13 | r2 <<= 0x13;
0x0006046e bmi 0x603d8 |
| }
| label_184:
0x00060470 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x00060472 cmp r3, r8 |
0x00060474 it ne |
| if (r3 != r8) {
0x00060476 cmpne r3, r7 | __asm ("cmpne r3, r7");
| }
0x00060478 ite eq |
| if (r3 != r8) {
0x0006047a moveq r1, 1 | r1 = 1;
| }
| if (r3 == r8) {
0x0006047c movne r1, 0 | r1 = 0;
| }
| if (r3 == r8) {
0x0006047e beq.w 0x605f0 | goto label_188;
| }
0x00060482 addw r2, sb, 0xad8 | __asm ("addw r2, sb, aav.0x000000ff");
0x00060486 add.w r0, sb, 0xae0 | r0 = sb + 0xae0;
0x0006048a cmp r3, r0 |
0x0006048c it ne |
| if (r3 == r0) {
0x0006048e cmpne r3, r2 | __asm ("cmpne r3, r2");
| goto label_189;
| }
| if (r3 != r0) {
| label_189:
0x00060490 bne 0x60460 | goto label_19;
| }
0x00060492 ldr.w r2, [fp, 0x28] | r2 = *(arg_28h);
0x00060496 ldr.w r3, [sl, 0x30] | r3 = *((sl + 0x30));
0x00060498 adds r0, 0x30 | r0 += 0x30;
0x0006049a adds r0, r2, 1 | r0 = r2 + 1;
0x0006049c str.w r0, [fp, 0x28] | __asm ("str.w r0, [arg_28h]");
0x000604a0 mov r0, r6 | r0 = r6;
0x000604a2 str r2, [r4, 0x3c] | *((r4 + 0x3c)) = r2;
0x000604a4 str r1, [sp] | *(sp) = r1;
0x000604a6 movs r1, 0x64 | r1 = 0x64;
0x000604a8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000604ac b 0x60460 | goto label_19;
| label_117:
0x000604ae ldr.w r0, [fp] | r0 = *(fp);
0x000604b2 mov r1, r4 | r1 = r4;
0x000604b4 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x000604b8 b.w 0x5f6a2 | goto label_20;
| label_172:
0x000604bc ldr.w r2, [r8, 0x1c] | r2 = *((r8 + 0x1c));
0x000604c0 mov r0, sl | r0 = sl;
0x000604c2 str r1, [sp] | *(sp) = r1;
0x000604c4 movs r1, 0xc | r1 = 0xc;
0x000604c6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000604ca b 0x6005a | goto label_21;
| label_155:
0x000604cc ldrd sb, sl, [sp, 0x60] | __asm ("ldrd sb, sl, [var_60h]");
0x000604d0 mov fp, r6 |
0x000604d2 ldr r7, [sp, 0x48] | r7 = var_48h;
0x000604d4 cmp r5, 0 |
| if (r5 == 0) {
0x000604d6 beq.w 0x60f3a | goto label_190;
| }
| label_51:
0x000604da ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000604dc movs r4, 0 | r4 = 0;
0x000604de mov r1, r5 | r1 = r5;
0x000604e0 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000604e2 mov r0, fp | r0 = fp;
0x000604e4 strd r4, r4, [sp, 0xc] | __asm ("strd r4, r4, [var_ch]");
0x000604e8 str r3, [sp, 8] | var_8h = r3;
0x000604ea ldr r3, [sp, 0x58] | r3 = var_58h;
0x000604ec str r3, [sp, 4] | var_4h = r3;
0x000604ee ldr r3, [sp, 0x54] | r3 = var_54h;
0x000604f0 str r3, [sp] | *(sp) = r3;
0x000604f2 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000604f4 bl 0x2acc4 | fcn_0002acc4 (r0, r1, r2, r3, r4, r5, r6);
0x000604f8 mov r1, r4 | r1 = r4;
0x000604fa mov r5, r0 | r5 = r0;
0x000604fc mov r3, r4 | r3 = r4;
0x000604fe mov r2, r4 | r2 = r4;
0x00060500 mov r0, fp | r0 = fp;
0x00060502 bl 0x25c84 | r0 = fcn_00025c84 (r0, r1, r2, r3);
0x00060506 mov r1, r0 | r1 = r0;
0x00060508 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
0x0006050a cmp r0, 0 |
| if (r0 == 0) {
0x0006050c beq.w 0x60a7e | goto label_191;
| }
0x00060510 str r5, [r0, 0x1c] | *((r0 + 0x1c)) = r5;
0x00060512 mov r0, fp | r0 = fp;
0x00060514 bl 0x9e38 | fcn_00009e38 (r0, r1);
0x00060518 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0006051a movs r2, 0x40 | r2 = 0x40;
0x0006051c mov r1, r5 | r1 = r5;
0x0006051e mov r0, fp | r0 = fp;
0x00060520 orr r3, r3, 0x40 | r3 |= 0x40;
0x00060524 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00060526 bl 0x5f538 | fcn_0005f538 (r0, r1, r2);
0x0006052a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006052c mov r6, r0 | r6 = r0;
0x0006052e and r2, r3, 8 | r2 = r3 & 8;
0x00060532 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00060534 orrs r3, r2 | r3 |= r2;
0x00060536 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00060538 cmp r0, 0 |
| if (r0 == 0) {
0x0006053a beq.w 0x60e2e | goto label_192;
| }
0x0006053e ldr.w r8, [sp, 0x28] | r8 = var_28h;
0x00060542 mov r1, r0 | r1 = r0;
0x00060544 movs r2, 0x4c | r2 = 0x4c;
0x00060546 mov r0, r8 | r0 = r8;
0x00060548 blx 0x7dcc | fcn_00007dcc ();
0x0006054c ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00060550 mov r1, r5 | r1 = r5;
0x00060552 orr r3, r3, 0x4000 | r3 |= 0x4000;
0x00060556 str.w r3, [r8, 0x24] | __asm ("str.w r3, [r8, 0x24]");
0x0006055a ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x0006055c str.w r8, [r3, 0x18] | __asm ("str.w r8, [r3, 0x18]");
0x00060560 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00060562 str r4, [sp, 0xac] | var_ach = r4;
0x00060564 mov r0, r3 | r0 = r3;
0x00060566 strd r4, r4, [r3, 4] | __asm ("strd r4, r4, [r3, 4]");
0x0006056a strd r4, r4, [r3, 0xc] | __asm ("strd r4, r4, [r3, 0xc]");
0x0006056e strd r4, r4, [r3, 0x14] | __asm ("strd r4, r4, [r3, 0x14]");
0x00060572 ldr.w r3, [pc, 0x830] | r3 = *(0x00060da4);
0x00060576 add r3, pc | r3 += pc;
0x00060578 str r3, [sp, 0xb0] | var_b0h = r3;
0x0006057a ldr.w r3, [pc, 0x82c] | r3 = *(0x00060da8);
0x0006057e add r3, pc | r3 += pc;
0x00060580 str r3, [sp, 0xb4] | var_b4h = r3;
0x00060582 ldr.w r3, [pc, 0x828] | r3 = *(0x00060dac);
0x00060586 add r3, pc | r3 += pc;
0x00060588 str r3, [sp, 0xb8] | var_b8h = r3;
0x0006058a bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
0x0006058e ldr r3, [sp, 0x34] | r3 = var_34h;
0x00060590 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00060594 cmp r3, 0 |
| if (r3 != 0) {
0x00060596 bne.w 0x60aa6 | goto label_193;
| }
0x0006059a ldr r0, [sp, 0x34] | r0 = var_34h;
0x0006059c mov r1, r6 | r1 = r6;
0x0006059e bl 0x159dc | fcn_000159dc (r0, r1);
0x000605a2 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000605a4 str r3, [sp, 0x1c] | var_1ch = r3;
0x000605a6 b.w 0x5f72c | goto label_13;
| label_120:
0x000605aa ldr r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x000605ac cmp r2, 0 |
| if (r2 == 0) {
0x000605ae beq.w 0x60d50 | goto label_194;
| }
| label_38:
0x000605b2 ldr.w r1, [pc, 0x7fc] |
0x000605b6 mov r0, fp | r0 = fp;
0x000605b8 add r1, pc | r1 = 0xc136e;
0x000605ba bl 0x25778 | fcn_00025778 (r0);
0x000605be b 0x6022a | goto label_22;
| label_135:
0x000605c0 ldr.w ip, [r7, 4] | ip = *((r7 + 4));
0x000605c4 b.w 0x5f91e | goto label_23;
| label_163:
0x000605c8 ldr.w r3, [pc, 0x7e8] |
0x000605cc add r3, pc | r3 = 0xc1384;
0x000605ce adds r3, 4 | r3 += 4;
0x000605d0 b 0x5ff0c | goto label_24;
| label_171:
0x000605d2 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x000605d4 ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
0x000605d6 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x000605d8 cmp r1, r2 |
| if (r1 == r2) {
0x000605da beq.w 0x60048 | goto label_25;
| }
0x000605de b 0x60000 | goto label_17;
| label_164:
0x000605e0 ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x000605e4 movs r4, 1 | r4 = 1;
0x000605e6 add r2, r3 | r2 += r3;
0x000605e8 str.w r2, [fp, 0x24] | __asm ("str.w r2, [arg_24h]");
0x000605ec b.w 0x5f862 | goto label_11;
| label_188:
0x000605f0 ldrd r2, r1, [fp, 0x28] | __asm ("ldrd r2, r1, [arg_28h]");
0x000605f4 ldr.w r3, [sl, 0x30] | r3 = *((sl + 0x30));
0x000605f8 adds r0, r1, 1 | r0 = r1 + 1;
0x000605fa adds r1, 2 | r1 += 2;
0x000605fc str r0, [r4, 0x40] | *((r4 + 0x40)) = r0;
0x000605fe adds r0, r2, 1 | r0 = r2 + 1;
0x00060600 str.w r0, [fp, 0x28] | __asm ("str.w r0, [arg_28h]");
0x00060604 mov r0, r6 | r0 = r6;
0x00060606 str r2, [r4, 0x3c] | *((r4 + 0x3c)) = r2;
0x00060608 str.w r1, [fp, 0x2c] | __asm ("str.w r1, [arg_2ch]");
0x0006060c movs r1, 0 | r1 = 0;
0x0006060e str r1, [sp] | *(sp) = r1;
0x00060610 movs r1, 0x64 | r1 = 0x64;
0x00060612 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060616 b 0x60460 | goto label_19;
| label_181:
0x00060618 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0006061a cmp r3, 0 |
| if (r3 == 0) {
0x0006061c beq.w 0x60f0e | goto label_195;
| }
0x00060620 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00060622 ldr r2, [r3], 8 | r2 = *(r3);
| r3 += 8;
0x00060626 cmp r2, 0 |
| if (r2 <= 0) {
0x00060628 ble 0x60636 | goto label_196;
| }
0x0006062a movs r1, 0 | r1 = 0;
| do {
0x0006062c subs r2, 1 | r2--;
0x0006062e strh r1, [r3, 0xe] | *((r3 + 0xe)) = r1;
0x00060630 add.w r3, r3, 0x10 | r3 += 0x10;
0x00060634 bne 0x6062c |
| } while (r2 != 1);
| label_196:
0x00060636 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00060638 ldr r0, [r3], 8 | r0 = *(r3);
| r3 += 8;
0x0006063c cmp r0, 0 |
0x0006063e itt gt |
| if (r0 <= 0) {
0x00060640 movgt r2, r0 | r2 = r0;
| }
| if (r0 <= 0) {
0x00060642 movgt r1, 0 | r1 = 0;
| }
| if (r0 <= 0) {
0x00060644 ble 0x60650 | goto label_197;
| }
| do {
0x00060646 subs r2, 1 | r2--;
0x00060648 strh r1, [r3, 0xe] | *((r3 + 0xe)) = r1;
0x0006064a add.w r3, r3, 0x10 | r3 += 0x10;
0x0006064e bne 0x60646 |
| } while (r2 != 1);
| label_197:
0x00060650 ldrsh.w r3, [r7, 2] | r3 = *((r7 + 2));
0x00060654 ldr r1, [sp, 0xcc] | r1 = var_cch;
0x00060656 cmp r3, 0x42 |
0x00060658 itt gt |
| if (r3 <= 0x42) {
0x0006065a movgt r3, 0x42 | r3 = 0x42;
| }
| if (r3 > 0x42) {
0x0006065c strhgt r3, [r7, 2] | __asm ("strhgt r3, [r7, 2]");
| }
0x0006065e cmp r1, 0 |
| if (r1 == 0) {
0x00060660 beq.w 0x61050 | goto label_198;
| }
0x00060664 ldr r3, [r1] | r3 = *(r1);
0x00060666 cmp r3, r0 |
0x00060668 itt ne |
| if (r3 == r0) {
0x0006066a movne r3, 0 | r3 = 0;
| }
| if (r3 == r0) {
0x0006066c strne r3, [sp, 0x24] | var_24h = r3;
| }
| if (r3 == r0) {
0x0006066e beq.w 0x610b2 | goto label_199;
| }
| label_49:
0x00060672 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x00060676 mov r0, sb | r0 = sb;
0x00060678 movs r2, 0x34 | r2 = 0x34;
0x0006067a str r3, [sp, 0x58] | var_58h = r3;
0x0006067c subs r3, 1 | r3--;
0x0006067e str r3, [sp, 0x4c] | var_4ch = r3;
0x00060680 str.w r3, [fp, 0x38] | __asm ("str.w r3, [arg_38h]");
0x00060684 movs r3, 0 | r3 = 0;
0x00060686 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0006068a str r0, [sp, 0x1c] | var_1ch = r0;
| if (r0 != 0) {
0x0006068c cbz r0, 0x606c4 |
0x0006068e movs r2, 0x34 | r2 = 0x34;
0x00060690 movs r1, 0 | r1 = 0;
0x00060692 blx 0x8264 | fcn_00008264 ();
0x00060696 ldr.w r0, [fp] | r0 = *(fp);
0x0006069a cmp r0, 0 |
| if (r0 == 0) {
0x0006069c beq.w 0x60fae | goto label_200;
| }
0x000606a0 movs r2, 0xc | r2 = 0xc;
0x000606a2 movs r3, 0 | r3 = 0;
0x000606a4 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
| label_56:
0x000606a8 cmp r0, 0 |
| if (r0 == 0) {
0x000606aa beq.w 0x6163a | goto label_201;
| }
0x000606ae ldr.w r2, [fp, 0x108] | r2 = *(arg_108h);
0x000606b2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000606b4 str r2, [r0] | *(r0) = r2;
0x000606b6 ldr.w r2, [pc, 0x700] | r2 = *(0x00060db8);
0x000606ba str.w r0, [fp, 0x108] | __asm ("str.w r0, [arg_108h]");
0x000606be str r3, [r0, 4] | *((r0 + 4)) = r3;
0x000606c0 add r2, pc | r2 += pc;
0x000606c2 str r2, [r0, 8] | *((r0 + 8)) = r2;
| }
| label_76:
0x000606c4 ldrb.w r4, [sb, 0x53] | r4 = *((sb + 0x53));
0x000606c8 str r4, [sp, 0x34] | var_34h = r4;
0x000606ca cmp r4, 0 |
| if (r4 != 0) {
0x000606cc bne.w 0x60d2e | goto label_202;
| }
0x000606d0 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x000606d4 add r0, sp, 0xac | r0 += var_ach;
0x000606d6 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000606d8 mov r6, r0 | r6 = r0;
0x000606da ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x000606dc adds r3, 1 | r3++;
0x000606de str r0, [sp, 0x5c] | var_5ch = r0;
0x000606e0 str r2, [r1, 0x30] | *((r1 + 0x30)) = r2;
0x000606e2 mov r2, r1 | r2 = r1;
0x000606e4 str r1, [sp, 0xb4] | var_b4h = r1;
0x000606e6 str r4, [sp, 0xb8] | var_b8h = r4;
0x000606e8 strd fp, r5, [sp, 0xac] | __asm ("strd fp, r5, [var_ach]");
0x000606ec strd r4, r4, [sp, 0xbc] | __asm ("strd r4, r4, [var_c0h]");
0x000606f0 strd r4, r4, [sp, 0xc4] | __asm ("strd r4, r4, [var_c4h]");
0x000606f4 str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
0x000606f6 ldr r1, [sp, 0x28] | r1 = var_28h;
0x000606f8 cmp r1, 0 |
| if (r1 == 0) {
0x000606fa beq.w 0x610e4 | goto label_203;
| }
0x000606fe ldr r3, [r1] | r3 = *(r1);
0x00060700 str r1, [r2, 0x18] | *((r2 + 0x18)) = r1;
0x00060702 ldr r1, [sp, 0x38] | r1 = var_38h;
0x00060704 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x00060706 bl 0x307e4 | fcn_000307e4 (r0, r1, r2);
0x0006070a ldr r1, [sp, 0xcc] | r1 = var_cch;
0x0006070c mov r0, r6 | r0 = r6;
0x0006070e bl 0x307e4 | fcn_000307e4 (r0, r1, r2);
0x00060712 ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 != 0) {
0x00060714 cbz r3, 0x60768 |
0x00060716 ldr.w r3, [pc, 0x6a4] | r3 = *(0x00060dbc);
0x0006071a ldr r1, [r7, 0x2c] | r1 = *((r7 + 0x2c));
0x0006071c str r4, [sp, 0x98] | var_98h = r4;
0x0006071e add r3, pc | r3 += pc;
0x00060720 str.w fp, [sp, 0x90] | __asm ("str.w fp, [var_90h]");
0x00060724 str r3, [sp, 0x94] | var_94h = r3;
0x00060726 add r3, sp, 0x90 | r3 += var_90h;
0x00060728 str r7, [sp, 0xa8] | var_a8h = r7;
0x0006072a strd r4, r4, [sp, 0x9c] | __asm ("strd r4, r4, [var_a0h]");
0x0006072e str r4, [sp, 0xa4] | var_a4h = r4;
0x00060730 str r3, [sp, 0x30] | var_30h = r3;
| if (r1 != 0) {
0x00060732 cbz r1, 0x6073a |
0x00060734 mov r0, r3 | r0 = r3;
0x00060736 bl 0x301c4 | fcn_000301c4 (r0, r1);
| }
0x0006073a ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0006073c str r3, [sp, 0x40] | var_40h = r3;
| label_69:
0x0006073e ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00060740 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00060742 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00060744 str r3, [sp, 0xa8] | var_a8h = r3;
0x00060746 ldr.w r3, [pc, 0x678] | r3 = *(0x00060dc0);
0x0006074a add r3, pc | r3 += pc;
0x0006074c str r3, [sp, 0x94] | var_94h = r3;
0x0006074e ldr.w r3, [pc, 0x674] | r3 = *(0x00060dc4);
0x00060752 add r3, pc | r3 += pc;
0x00060754 str r3, [sp, 0x98] | var_98h = r3;
0x00060756 ldr.w r3, [pc, 0x670] | r3 = *(0x00060dc8);
0x0006075a add r3, pc | r3 += pc;
0x0006075c str r3, [sp, 0x9c] | var_9ch = r3;
0x0006075e movs r3, 0 | r3 = 0;
0x00060760 str r3, [sp, 0xa0] | var_a0h = r3;
0x00060762 str r3, [sp, 0x90] | var_90h = r3;
0x00060764 bl 0x301c4 | fcn_000301c4 (r0, r1);
| }
| label_68:
0x00060768 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0006076a mov.w r8, 0 | r8 = 0;
0x0006076e ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x00060770 ldr r2, [r1, 0x20] | r2 = *((r1 + 0x20));
0x00060772 str r2, [r1, 0x24] | *((r1 + 0x24)) = r2;
0x00060774 ldr r2, [r1, 0x2c] | r2 = *((r1 + 0x2c));
0x00060776 cmp r3, 0 |
| if (r3 == 0) {
0x00060778 beq.w 0x6110e | goto label_204;
| }
| label_70:
0x0006077c cmp r2, 0 |
| if (r2 <= 0) {
0x0006077e ble.w 0x60b6e | goto label_205;
| }
| label_87:
0x00060782 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00060784 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
| label_86:
0x00060786 ldr.w r1, [pc, 0x644] | r1 = *(0x00060dcc);
0x0006078a movs r6, 0 | r6 = 0;
0x0006078c ldr r3, [sp, 0xc4] | r3 = var_c4h;
0x0006078e mov r0, r2 | r0 = r2;
0x00060790 strd r5, r8, [sp, 0x60] | __asm ("strd r5, r8, [var_60h]");
0x00060794 mov r8, r6 | r8 = r6;
0x00060796 add r1, pc | r1 += pc;
0x00060798 str r7, [sp, 0x68] | var_68h = r7;
0x0006079a str r1, [sp, 0x30] | var_30h = r1;
0x0006079c mov r7, r6 | r7 = r6;
0x0006079e ldr.w r1, [pc, 0x630] | r1 = *(0x00060dd0);
0x000607a2 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x000607a4 ldr r6, [sp, 0x5c] | r6 = var_5ch;
0x000607a6 add r1, pc | r1 += pc;
0x000607a8 str r1, [sp, 0x50] | var_50h = r1;
0x000607aa ldr.w r1, [pc, 0x628] | r1 = *(0x00060dd4);
0x000607ae add r1, pc | r1 += pc;
0x000607b0 str r1, [sp, 0x54] | var_54h = r1;
0x000607b2 mov r1, r3 | r1 = r3;
0x000607b4 b 0x607ce |
| while (r3 >= r1) {
| label_26:
0x000607b6 ldr r0, [r5, 0x2c] | r0 = *((r5 + 0x2c));
0x000607b8 adds r7, 1 | r7++;
0x000607ba ldr r1, [sp, 0xc4] | r1 = var_c4h;
0x000607bc add.w r8, r8, 0x14 | r8 += 0x14;
0x000607c0 cmp r0, r7 |
0x000607c2 bic r1, r1, 0x20000 | r1 = BIT_MASK (r1, 0x20000);
0x000607c6 str r1, [sp, 0xc4] | var_c4h = r1;
| if (r0 <= r7) {
0x000607c8 ble.w 0x60b66 | goto label_206;
| }
0x000607cc ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x000607ce ldr.w r4, [r0, r8] | r4 = *((r0 + r8));
0x000607d2 orr r1, r1, 0x20000 | r1 |= 0x20000;
0x000607d6 str r1, [sp, 0xc4] | var_c4h = r1;
0x000607d8 mov r0, r6 | r0 = r6;
0x000607da ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x000607dc bl 0x307e4 | fcn_000307e4 (r0, r1, r2);
0x000607e0 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000607e2 lsls r3, r1, 7 | r3 = r1 << 7;
0x000607e4 bpl 0x607b6 |
| }
0x000607e6 ldr r1, [r4, 0x2c] | r1 = *((r4 + 0x2c));
0x000607e8 movs r0, 0 | r0 = 0;
0x000607ea ldr r3, [sp, 0x30] | r3 = var_30h;
0x000607ec ldr r1, [r1, 0x28] | r1 = *((r1 + 0x28));
0x000607ee str r3, [sp, 0x94] | var_94h = r3;
0x000607f0 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000607f2 str r6, [sp, 0xa8] | var_a8h = r6;
0x000607f4 str r0, [sp, 0xa0] | var_a0h = r0;
0x000607f6 str r3, [sp, 0x98] | var_98h = r3;
0x000607f8 ldr r3, [sp, 0x54] | r3 = var_54h;
0x000607fa str r0, [sp, 0x90] | var_90h = r0;
0x000607fc str r3, [sp, 0x9c] | var_9ch = r3;
0x000607fe cmp r1, 0 |
| if (r1 == 0) {
0x00060800 beq 0x607b6 | goto label_26;
| }
0x00060802 add r0, sp, 0x90 | r0 += var_90h;
0x00060804 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x00060808 b 0x607b6 | goto label_26;
| label_187:
0x0006080a ldrd r5, r8, [sp, 0x28] | __asm ("ldrd r5, r8, [var_2ch]");
0x0006080e ldrd sb, sl, [sp, 0x30] | __asm ("ldrd sb, sl, [var_34h]");
0x00060812 ldr r7, [sp, 0x1c] | r7 = var_1ch;
| label_74:
0x00060814 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00060816 mov r1, r5 | r1 = r5;
0x00060818 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0006081a mov r0, fp | r0 = fp;
0x0006081c str r3, [sp, 4] | var_4h = r3;
0x0006081e ldrsh.w r3, [r7, 2] | r3 = *((r7 + 2));
0x00060822 str r3, [sp, 8] | var_8h = r3;
0x00060824 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00060826 str r3, [sp] | *(sp) = r3;
0x00060828 ldr r3, [sp, 0xcc] | r3 = var_cch;
0x0006082a bl 0x6b788 | r0 = fcn_0006b788 (r0, r1, r2, r3, r4, r5, r6);
0x0006082e mov r4, r0 | r4 = r0;
0x00060830 cmp r0, 0 |
| if (r0 == 0) {
0x00060832 beq.w 0x6022a | goto label_22;
| }
0x00060836 ldrsh.w r3, [r0, 0x32] | r3 = *((r0 + 0x32));
0x0006083a ldrsh.w r2, [r7, 2] | r2 = *((r7 + 2));
0x0006083e cmp r2, r3 |
0x00060840 it gt |
| if (r2 > r3) {
0x00060842 strhgt r3, [r7, 2] | __asm ("strhgt r3, [r7, 2]");
| }
0x00060844 ldr r3, [sp, 0x3c] | r3 = var_3ch;
| if (r3 != 0) {
0x00060846 cbz r3, 0x60852 |
0x00060848 ldrb.w r3, [r0, 0x2f] | r3 = *((r0 + 0x2f));
| if (r3 == 0) {
0x0006084c cbz r3, 0x60852 | goto label_207;
| }
0x0006084e strb.w r3, [sp, 0x85] | var_85h = r3;
| }
| label_207:
0x00060852 ldr r2, [sp, 0xcc] | r2 = var_cch;
0x00060854 cmp r2, 0 |
| if (r2 == 0) {
0x00060856 beq.w 0x60d40 | goto label_208;
| }
0x0006085a ldrb.w r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0006085e ldrsb.w r1, [r4, 0x2d] | r1 = *((r4 + 0x2d));
0x00060862 lsls r5, r3, 0x1d | r5 = r3 << 0x1d;
0x00060864 str r1, [sp, 0xd0] | var_d0h = r1;
0x00060866 ittet mi |
| if (r5 >= r3) {
0x00060868 movmi r0, 0x58 | r0 = 0x58;
| }
| if (r5 >= r3) {
0x0006086a ldrbmi r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
| }
| if (r5 >= r3) {
0x0006086e ldrmi r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
| }
| if (r5 < r3) {
0x00060870 add.w r3, r3, -1 | r3 += -1;
| }
0x00060874 itt mi |
| if (r5 < r3) {
0x00060876 mlami r3, r0, r3, r4 | __asm ("mlami r3, r0, r3, r4");
| }
| if (r5 < r3) {
0x0006087a ldr.w r3, [r3, 0x300] | r3 = *((r3 + 0x300));
| }
0x0006087e str r3, [sp, 0xe8] | var_e8h = r3;
0x00060880 ldr r3, [r2] | r3 = *(r2);
0x00060882 cmp r3, r1 |
0x00060884 itt eq |
| if (r3 != r1) {
0x00060886 moveq r3, 0 | r3 = 0;
| }
| if (r3 != r1) {
0x00060888 streq r3, [sp, 0xcc] | var_cch = r3;
| }
| if (r3 == r1) {
0x0006088a beq.w 0x60d40 | goto label_208;
| }
| label_37:
0x0006088e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00060890 cmp r3, 0 |
| if (r3 == 0) {
0x00060892 beq.w 0x60fe6 | goto label_209;
| }
0x00060896 ldr.w r5, [fp, 0x38] | r5 = *(arg_38h);
0x0006089a mov r2, r4 | r2 = r4;
0x0006089c ldr.w r6, [fp, 0x2c] | r6 = *(arg_2ch);
0x000608a0 mov r1, r7 | r1 = r7;
0x000608a2 mov r0, fp | r0 = fp;
0x000608a4 subs r4, r5, 3 | r4 = r5 - 3;
0x000608a6 subs r3, r5, 1 | r3 = r5 - 1;
0x000608a8 adds r6, 1 | r6++;
0x000608aa str.w r4, [fp, 0x38] | __asm ("str.w r4, [arg_38h]");
0x000608ae str.w r6, [fp, 0x2c] | __asm ("str.w r6, [arg_2ch]");
0x000608b2 str r3, [sp] | *(sp) = r3;
0x000608b4 mov r3, r6 | r3 = r6;
0x000608b6 bl 0x69e30 | fcn_00069e30 (r0, r1, r2, r3);
0x000608ba movs r2, 0 | r2 = 0;
0x000608bc mov r3, r4 | r3 = r4;
0x000608be str r2, [sp] | *(sp) = r2;
0x000608c0 movs r1, 0xb | r1 = 0xb;
0x000608c2 mov r0, sl | r0 = sl;
0x000608c4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000608c8 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x000608cc subs r3, r5, 2 | r3 = r5 - 2;
0x000608ce str r3, [sp, 0x1c] | var_1ch = r3;
0x000608d0 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x000608d4 cmn r2, r3 |
| if (r2 < r3) {
0x000608d6 bmi.w 0x610a8 | goto label_210;
| }
0x000608da ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x000608dc lsls r3, r5, 2 | r3 = r5 << 2;
0x000608de ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x000608e2 rsbs r3, r3, 0 | r3 -= ;
0x000608e4 str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_67:
0x000608e6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000608e8 mov.w r2, -1 | r2 = -1;
0x000608ec ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x000608ee mov r1, r7 | r1 = r7;
0x000608f0 mov r0, fp | r0 = fp;
0x000608f2 str r4, [sp, 0xc] | var_ch = r4;
0x000608f4 str r3, [sp, 4] | var_4h = r3;
0x000608f6 add r3, sp, 0x84 | r3 += var_84h;
0x000608f8 str r3, [sp] | *(sp) = r3;
0x000608fa movs r3, 0 | r3 = 0;
0x000608fc str r3, [sp, 0xe8] | var_e8h = r3;
0x000608fe add r3, sp, 0xcc | r3 += var_cch;
0x00060900 str r5, [sp, 8] | var_8h = r5;
0x00060902 bl 0x69308 | fcn_00069308 (r0, r1, r2, r3, r4, r5, r6);
0x00060906 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0006090a mvns r2, r5 | r2 = ~r5;
0x0006090c ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x00060910 cmn r1, r3 |
| if (r1 < r3) {
0x00060912 bmi.w 0x610a0 | goto label_211;
| }
0x00060916 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x00060918 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0006091c str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
| label_66:
0x00060920 movs r3, 0 | r3 = 0;
0x00060922 mov r2, r6 | r2 = r6;
0x00060924 movs r1, 0x41 | r1 = 0x41;
0x00060926 str r3, [sp] | *(sp) = r3;
0x00060928 mov r0, sl | r0 = sl;
0x0006092a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006092e ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x00060932 mvns r2, r4 | r2 = ~r4;
0x00060934 ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x00060938 cmn r1, r3 |
| if (r1 < r3) {
0x0006093a bmi.w 0x61048 | goto label_212;
| }
0x0006093e ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x00060940 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x00060944 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
| label_59:
0x00060948 ldrb.w r3, [sp, 0x85] | r3 = var_85h;
0x0006094c cmp r3, 3 |
| if (r3 == 3) {
0x0006094e beq.w 0x6102e | goto label_213;
| }
| label_62:
0x00060952 ldr r3, [sp, 0xcc] | r3 = var_cch;
| if (r3 != 0) {
0x00060954 cbz r3, 0x60984 |
0x00060956 ldr r3, [sp, 0xd0] | r3 = var_d0h;
0x00060958 cmp r3, 0 |
| if (r3 <= 0) {
0x0006095a ble.w 0x60eec | goto label_214;
| }
0x0006095e ldr.w r3, [pc, 0x478] | r3 = *(0x00060dd8);
0x00060962 add r3, pc | r3 += pc;
| label_46:
0x00060964 ldr.w r2, [pc, 0x474] |
0x00060968 movs r1, 0 | r1 = 0;
0x0006096a mov r0, fp | r0 = fp;
0x0006096c add r2, pc | r2 = 0xc174c;
0x0006096e bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00060972 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00060974 mov r1, r7 | r1 = r7;
0x00060976 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00060978 mov r0, fp | r0 = fp;
0x0006097a ldr r3, [r3] | r3 = *(r3);
0x0006097c str r2, [sp] | *(sp) = r2;
0x0006097e add r2, sp, 0xcc | r2 += var_cch;
0x00060980 bl 0x34080 | fcn_00034080 (r0, r1, r2, r3, r4, r5, r6);
| }
0x00060984 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x00060988 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0006098c cmn r2, r3 |
| if (r2 < r3) {
0x0006098e bmi.w 0x60f02 | goto label_215;
| }
0x00060992 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00060994 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x00060998 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0006099a lsls r3, r3, 2 | r3 <<= 2;
0x0006099c rsbs r3, r3, 0 | r3 -= ;
0x0006099e str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_48:
0x000609a0 ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x000609a4 ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x000609a8 cmp r2, 0 |
0x000609aa ite le |
| if (r2 > 0) {
0x000609ac movle r4, 0 | r4 = 0;
| }
| if (r2 <= 0) {
0x000609ae movgt r4, 1 | r4 = 1;
| }
| label_63:
0x000609b0 add r3, r2 | r3 += r2;
0x000609b2 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
0x000609b6 cmp.w r8, 0 |
| if (r8 == 0) {
0x000609ba beq.w 0x5f862 | goto label_11;
| }
0x000609be mov r1, r8 | r1 = r8;
0x000609c0 mov r0, sb | r0 = sb;
0x000609c2 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x000609c6 b.w 0x5f862 | goto label_11;
| label_147:
0x000609ca movs r0, 0x4c | r0 = 0x4c;
0x000609cc movs r1, 0 | r1 = 0;
0x000609ce bl 0x12abc | fcn_00012abc (r0);
0x000609d2 str r0, [sp, 0x28] | var_28h = r0;
0x000609d4 cmp r0, 0 |
| if (r0 != 0) {
0x000609d6 bne.w 0x5fbba | goto label_27;
| }
| label_32:
0x000609da ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
| label_31:
0x000609de ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x000609e2 movs r4, 1 | r4 = 1;
0x000609e4 add r3, r2 | r3 += r2;
0x000609e6 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
0x000609ea b.w 0x5f862 | goto label_11;
| label_146:
0x000609ee ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x000609f2 cmp r3, 0 |
| if (r3 == 0) {
0x000609f4 beq.w 0x60f9c | goto label_216;
| }
| label_55:
0x000609f8 mov r0, fp | r0 = fp;
0x000609fa bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x000609fe ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00060a00 ldr r6, [r7, 0x44] | r6 = *((r7 + 0x44));
0x00060a02 str r0, [sp, 0x48] | var_48h = r0;
0x00060a04 str r3, [sp, 0x1c] | var_1ch = r3;
0x00060a06 b.w 0x5fb8c | goto label_28;
| label_158:
0x00060a0a ldr.w r6, [sb, 0x4c] | r6 = *((sb + 0x4c));
0x00060a0e ands r6, r6, 0x8000 | r6 &= fcn.00008000;
| if (r6 != r6) {
0x00060a12 bne.w 0x5fe1c | goto label_29;
| }
0x00060a16 ldr.w r3, [fp] | r3 = *(fp);
0x00060a1a ldr r4, [pc, 0x3c4] |
0x00060a1c ldr.w r8, [pc, 0x3c4] | r8 = *(0x00060de4);
0x00060a20 adds r3, 0x53 | r3 += 0x53;
0x00060a22 str r5, [sp, 0x1c] | var_1ch = r5;
0x00060a24 add r4, pc | r4 = 0xc180a;
0x00060a26 str r3, [sp, 0x94] | var_94h = r3;
0x00060a28 add r3, sp, 0x90 | r3 += var_90h;
0x00060a2a mov r5, r4 | r5 = r4;
0x00060a2c add r8, pc | r8 += pc;
0x00060a2e mov r4, r3 | r4 = r3;
0x00060a30 str.w fp, [sp, 0x90] | __asm ("str.w fp, [var_90h]");
0x00060a34 b 0x60a40 |
| while (r2 == 0) {
| label_30:
0x00060a36 ldr r2, [sp, 0x9c] | r2 = var_9ch;
0x00060a38 cmp r2, 0 |
| if (r2 == 0) {
0x00060a3a beq.w 0x60f60 | goto label_217;
| }
0x00060a3e ldr r1, [r7, 0x24] | r1 = *((r7 + 0x24));
0x00060a40 mov r0, r4 | r0 = r4;
0x00060a42 strd r6, r6, [sp, 0x98] | __asm ("strd r6, r6, [var_98h]");
0x00060a46 strd r6, r6, [sp, 0xa0] | __asm ("strd r6, r6, [var_a0h]");
0x00060a4a bl 0x30a44 | fcn_00030a44 (r0, r1, r2);
0x00060a4e ldr r2, [sp, 0x98] | r2 = var_98h;
0x00060a50 cmp r2, 0 |
0x00060a52 beq 0x60a36 |
| }
0x00060a54 ldr r1, [r7, 0x24] | r1 = *((r7 + 0x24));
0x00060a56 add r0, sp, 0xac | r0 += var_ach;
0x00060a58 str r6, [sp, 0xb8] | var_b8h = r6;
0x00060a5a strd fp, r5, [sp, 0xac] | __asm ("strd fp, r5, [var_ach]");
0x00060a5e str.w r8, [sp, 0xb4] | __asm ("str.w r8, [var_b4h]");
0x00060a62 str r4, [sp, 0xc4] | var_c4h = r4;
0x00060a64 strd r6, r6, [sp, 0xbc] | __asm ("strd r6, r6, [var_c0h]");
| if (r1 != 0) {
0x00060a68 cbz r1, 0x60a6e |
0x00060a6a bl 0x301c4 | fcn_000301c4 (r0, r1);
| }
0x00060a6e ldr r1, [sp, 0xa4] | r1 = var_a4h;
0x00060a70 ldr r2, [sp, 0x90] | r2 = var_90h;
0x00060a72 ldr r0, [r2] | r0 = *(r2);
0x00060a74 cmp r1, 0 |
| if (r1 == 0) {
0x00060a76 beq 0x60a36 | goto label_30;
| }
0x00060a78 bl 0x159dc | fcn_000159dc (r0, r1);
0x00060a7c b 0x60a36 | goto label_30;
| label_191:
0x00060a7e cmp r5, 0 |
| if (r5 == 0) {
0x00060a80 beq.w 0x60ede | goto label_218;
| }
0x00060a84 ldr r4, [sp, 0x34] | r4 = var_34h;
0x00060a86 mov r1, r5 | r1 = r5;
0x00060a88 movs r2, 1 | r2 = 1;
0x00060a8a mov r0, r4 | r0 = r4;
0x00060a8c bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x00060a90 ldrb.w r3, [r4, 0x53] | r3 = *((r4 + 0x53));
0x00060a94 mov r0, r4 | r0 = r4;
| if (r3 == 0) {
0x00060a96 cbnz r3, 0x60aa8 |
| label_45:
0x00060a98 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00060a9a bl 0x159dc | fcn_000159dc (r0, r1);
0x00060a9e ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00060aa0 str r3, [sp, 0x1c] | var_1ch = r3;
0x00060aa2 b.w 0x5f72c | goto label_13;
| label_193:
0x00060aa6 str r6, [sp, 0x28] | var_28h = r6;
| }
| label_42:
0x00060aa8 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00060aaa ldr r0, [sp, 0x34] | r0 = var_34h;
0x00060aac bl 0x159dc | fcn_000159dc (r0, r1);
| label_43:
0x00060ab0 ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x00060ab4 cmp r2, 0 |
| if (r2 != 0) {
0x00060ab6 bne 0x609de | goto label_31;
| }
0x00060ab8 ldr.w r3, [fp] | r3 = *(fp);
0x00060abc cmp r3, 0 |
| if (r3 == 0) {
0x00060abe beq 0x609de | goto label_31;
| }
0x00060ac0 ldr.w r3, [r3, 0xf4] | r3 = *((r3 + 0xf4));
0x00060ac4 cmp r3, 0 |
| if (r3 == 0) {
0x00060ac6 beq 0x609de | goto label_31;
| }
| label_47:
0x00060ac8 ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
0x00060aca movs r1, 7 | r1 = 7;
0x00060acc str r1, [r3, 0xc] | *((r3 + 0xc)) = r1;
0x00060ace adds r2, 1 | r2++;
0x00060ad0 str r2, [r3, 0x24] | *((r3 + 0x24)) = r2;
0x00060ad2 b 0x609da | goto label_32;
| label_180:
0x00060ad4 ldr.w r4, [fp, 0x28] | r4 = *(arg_28h);
0x00060ad8 movs r3, 0 | r3 = 0;
0x00060ada ldr r1, [r7, 0x1c] | r1 = *((r7 + 0x1c));
0x00060adc mov r0, fp | r0 = fp;
0x00060ade adds r2, r4, 1 | r2 = r4 + 1;
0x00060ae0 str r4, [sp, 0x88] | var_88h = r4;
0x00060ae2 str.w r2, [fp, 0x28] | __asm ("str.w r2, [arg_28h]");
0x00060ae6 mov r2, r3 | r2 = r3;
0x00060ae8 bl 0x2dc24 | fcn_0002dc24 (r0, r1, r2, r3);
0x00060aec movs r3, 0 | r3 = 0;
0x00060aee mvn r1, 8 | r1 = ~8;
0x00060af2 str r0, [sp, 4] | var_4h = r0;
0x00060af4 mov r2, r4 | r2 = r4;
0x00060af6 str r3, [sp] | *(sp) = r3;
0x00060af8 mov r0, sl | r0 = sl;
0x00060afa str r1, [sp, 8] | var_8h = r1;
0x00060afc movs r1, 0x70 | r1 = 0x70;
0x00060afe bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00060b02 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x00060b06 str r0, [sp, 0x8c] | var_8ch = r0;
0x00060b08 cmp r3, 0 |
| if (r3 > 0) {
0x00060b0a ble 0x60b1e |
0x00060b0c ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x00060b10 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00060b14 add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x00060b18 movs r3, 8 | r3 = 8;
0x00060b1a strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
0x00060b1e movs r3, 3 | r3 = 3;
0x00060b20 str r3, [sp, 0x24] | var_24h = r3;
0x00060b22 b.w 0x602ea | goto label_33;
| label_176:
0x00060b26 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00060b28 b.w 0x601b0 | goto label_34;
| label_149:
0x00060b2c str r2, [sp, 0xb4] | var_b4h = r2;
0x00060b2e ldr r4, [r7, 0x30] | r4 = *((r7 + 0x30));
0x00060b30 ldr r2, [pc, 0x2b4] |
0x00060b32 add r2, pc | r2 = 0xc191e;
0x00060b34 str r2, [sp, 0xb0] | var_b0h = r2;
0x00060b36 cmp r4, 0 |
| if (r4 == 0) {
0x00060b38 beq.w 0x5fbf8 | goto label_35;
| }
0x00060b3c ldr r5, [r4] | r5 = *(r4);
0x00060b3e cmp r5, 0 |
| if (r5 <= 0) {
0x00060b40 ble.w 0x5fbf8 | goto label_35;
| }
0x00060b44 ldr.w r8, [sp, 0x5c] | r8 = var_5ch;
0x00060b48 adds r4, 0x18 | r4 += 0x18;
| do {
0x00060b4a ldr r1, [r4, -0x10] | r1 = *((r4 - 0x10));
| if (r1 != 0) {
0x00060b4e cbz r1, 0x60b58 |
0x00060b50 mov r0, r8 | r0 = r8;
0x00060b52 bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
| if (r0 != 0) {
0x00060b56 cbnz r0, 0x60b60 | goto label_219;
| }
| }
0x00060b58 subs r5, 1 | r5--;
0x00060b5a add.w r4, r4, 0x10 | r4 += 0x10;
0x00060b5e bne 0x60b4a |
| } while (r5 != 1);
| label_219:
0x00060b60 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00060b62 b.w 0x5fbf8 | goto label_35;
| label_206:
0x00060b66 ldrd r5, r8, [sp, 0x60] | __asm ("ldrd r5, r8, [var_60h]");
0x00060b6a mov r2, r0 | r2 = r0;
0x00060b6c ldr r7, [sp, 0x68] | r7 = var_68h;
| label_205:
0x00060b6e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00060b70 ldr.w r0, [fp, 0x2c] | r0 = *(arg_2ch);
0x00060b74 str r0, [r3, 0x14] | *((r3 + 0x14)) = r0;
0x00060b76 ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x00060b7a cmp r3, 0 |
| if (r3 != 0) {
0x00060b7c bne.w 0x61066 | goto label_220;
| }
0x00060b80 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00060b82 cmp r1, 0 |
| if (r1 == 0) {
0x00060b84 beq.w 0x614b6 | goto label_221;
| }
0x00060b88 cmp r2, 1 |
| if (r2 == 1) {
0x00060b8a beq.w 0x61648 | goto label_222;
| }
| label_77:
0x00060b8e str r3, [sp, 0x30] | var_30h = r3;
| label_78:
0x00060b90 ldr.w r6, [fp, 0x28] | r6 = *(arg_28h);
0x00060b94 movs r2, 0 | r2 = 0;
0x00060b96 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x00060b98 mov r0, fp | r0 = fp;
0x00060b9a ldr r1, [sp, 0x28] | r1 = var_28h;
0x00060b9c add.w ip, r6, 1 |
0x00060ba0 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00060ba2 str.w ip, [fp, 0x28] | __asm ("str.w ip, [arg_28h]");
0x00060ba6 str r6, [r4, 4] | *((r4 + 4)) = r6;
0x00060ba8 bl 0x2dc24 | fcn_0002dc24 (r0, r1, r2, r3);
0x00060bac movs r3, 0 | r3 = 0;
0x00060bae movs r1, 0x72 | r1 = 0x72;
0x00060bb0 strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x00060bb4 mvn r3, 8 | r3 = ~8;
0x00060bb8 str r3, [sp, 8] | var_8h = r3;
0x00060bba str r0, [sp, 0x6c] | var_6ch = r0;
0x00060bbc mov r0, sl | r0 = sl;
0x00060bbe ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00060bc0 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00060bc2 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00060bc6 ldr r4, [sp, 0x28] | r4 = var_28h;
0x00060bc8 movs r2, 0 | r2 = 0;
0x00060bca ldr.w r6, [fp, 0x2c] | r6 = *(arg_2ch);
0x00060bcc str r4, [r5] | *(r5) = r4;
0x00060bce str r0, [sp, 0x78] | var_78h = r0;
0x00060bd0 ldr r3, [r4] | r3 = *(r4);
0x00060bd2 adds r0, r6, 4 | r0 = r6 + 4;
0x00060bd4 str r2, [sp] | *(sp) = r2;
0x00060bd6 str r0, [sp, 0x54] | var_54h = r0;
0x00060bd8 adds r4, r6, 2 | r4 = r6 + 2;
0x00060bda ldr.w r1, [fp, 0x38] | r1 = *(arg_38h);
0x00060bde add r0, r3 | r0 += r3;
0x00060be0 add r3, r0 | r3 += r0;
0x00060be2 str r4, [sp, 0x68] | var_68h = r4;
0x00060be4 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x00060be8 adds r3, r0, 1 | r3 = r0 + 1;
0x00060bea str r3, [sp, 0x5c] | var_5ch = r3;
0x00060bec subs r3, r1, 2 | r3 = r1 - 2;
0x00060bee subs r1, 1 | r1--;
0x00060bf0 str.w r3, [fp, 0x38] | __asm ("str.w r3, [arg_38h]");
0x00060bf4 strd r3, r1, [sp, 0x60] | __asm ("strd r3, r1, [var_60h]");
0x00060bf8 mov r3, r4 | r3 = r4;
0x00060bfa adds r4, r6, 5 | r4 = r6 + 5;
0x00060bfc movs r1, 0x45 | r1 = 0x45;
0x00060bfe str r4, [sp, 0x70] | var_70h = r4;
0x00060c00 mov r0, sl | r0 = sl;
0x00060c02 adds r4, r6, 1 | r4 = r6 + 1;
0x00060c04 adds r6, 3 | r6 += 3;
0x00060c06 str r4, [sp, 0x50] | var_50h = r4;
0x00060c08 str r6, [sp, 0x34] | var_34h = r6;
0x00060c0a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060c0e ldr r4, [sp, 0x28] | r4 = var_28h;
0x00060c10 movs r2, 0 | r2 = 0;
0x00060c12 ldr r1, [sp, 0x70] | r1 = var_70h;
0x00060c14 mov r0, sl | r0 = sl;
0x00060c16 ldr r3, [r4] | r3 = *(r4);
0x00060c18 add r3, r1 | r3 += r1;
0x00060c1a subs r3, 1 | r3--;
0x00060c1c str r3, [sp] | *(sp) = r3;
0x00060c1e mov r3, r1 | r3 = r1;
0x00060c20 movs r1, 0x48 | r1 = 0x48;
0x00060c22 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060c26 movs r1, 0 | r1 = 0;
0x00060c28 ldr r3, [sp, 0x60] | r3 = var_60h;
0x00060c2a ldr r2, [sp, 0x54] | r2 = var_54h;
0x00060c2c mov r0, sl | r0 = sl;
0x00060c2e str r1, [sp] | *(sp) = r1;
0x00060c30 movs r1, 0xc | r1 = 0xc;
0x00060c32 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060c36 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00060c38 mov r1, r5 | r1 = r5;
0x00060c3a ldr r0, [sp, 0x30] | r0 = var_30h;
0x00060c3c ldr r2, [sp, 0x40] | r2 = var_40h;
0x00060c3e cmp r3, 0 |
0x00060c40 mov.w r3, 0 | r3 = 0;
0x00060c44 str r3, [sp, 8] | var_8h = r3;
0x00060c46 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00060c48 str r3, [sp] | *(sp) = r3;
0x00060c4a ite ne |
| if (r3 == 0) {
0x00060c4c movne r3, 0x240 | r3 = 0x240;
| }
| if (r3 == 0) {
0x00060c50 movs r3, 0x40 | r3 = 0x40;
| }
0x00060c52 orrs r0, r3 | r0 |= r3;
0x00060c54 mov r3, r4 | r3 = r4;
0x00060c56 str r0, [sp, 4] | var_4h = r0;
0x00060c58 mov r0, fp | r0 = fp;
0x00060c5a bl 0x6b788 | fcn_0006b788 (r0, r1, r2, r3, r4, r5, r6);
0x00060c5e str r0, [sp, 0x40] | var_40h = r0;
0x00060c60 cmp r0, 0 |
| if (r0 == 0) {
0x00060c62 beq.w 0x61056 | goto label_223;
| }
0x00060c66 ldr r1, [sp, 0x40] | r1 = var_40h;
0x00060c68 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00060c6a ldrsb.w r2, [r1, 0x2d] | r2 = *((r1 + 0x2d));
0x00060c6e ldr r3, [r3] | r3 = *(r3);
0x00060c70 ldrb.w r1, [r1, 0x2f] | r1 = *((r1 + 0x2f));
0x00060c74 cmp r3, r2 |
0x00060c76 str r1, [sp, 0x74] | var_74h = r1;
| if (r3 == r2) {
0x00060c78 beq.w 0x616da | goto label_224;
| }
0x00060c7c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00060c7e cmp r3, 0 |
| if (r3 == 0) {
0x00060c80 beq.w 0x616d2 | goto label_225;
| }
0x00060c84 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00060c86 lsls r6, r3, 0x1f | r6 = r3 << 0x1f;
| if (r6 < r3) {
0x00060c88 bmi.w 0x6180e | goto label_226;
| }
0x00060c8c ldr r3, [pc, 0x15c] |
0x00060c8e add r3, pc | r3 = 0xc1a7e;
| label_81:
0x00060c90 ldr r2, [pc, 0x15c] |
0x00060c92 movs r1, 0 | r1 = 0;
0x00060c94 mov r0, fp | r0 = fp;
0x00060c96 add r2, pc | r2 = 0xc1a8a;
0x00060c98 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00060c9c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00060c9e ldr r1, [sp, 0x28] | r1 = var_28h;
0x00060ca0 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x00060ca2 ldr r6, [r1] | r6 = *(r1);
0x00060ca4 cmp r2, 0 |
0x00060ca6 str r6, [sp, 0x3c] | var_3ch = r6;
| if (r2 <= 0) {
0x00060ca8 ble.w 0x61808 | goto label_227;
| }
0x00060cac ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00060cae movs r1, 0x14 | r1 = 0x14;
0x00060cb0 mla r2, r1, r2, r3 | __asm ("mla r2, r1, r2, r3");
| do {
0x00060cb4 ldrsh.w r1, [r3, 0x12] | r1 = *((r3 + 0x12));
0x00060cb8 adds r3, 0x14 | r3 += 0x14;
0x00060cba cmp r1, r6 |
0x00060cbc it ge |
| if (r1 < r6) {
0x00060cbe addge r6, 1 | r6++;
| }
0x00060cc0 cmp r2, r3 |
0x00060cc2 bne 0x60cb4 |
| } while (r2 != r3);
| label_90:
0x00060cc4 movs r4, 0 | r4 = 0;
0x00060cc6 mov r1, r6 | r1 = r6;
0x00060cc8 mov r0, fp | r0 = fp;
0x00060cca bl 0xf298 | fcn_0000f298 (r0, r1);
0x00060cce ldr r1, [sp, 0x28] | r1 = var_28h;
0x00060cd0 mov r2, r0 | r2 = r0;
0x00060cd2 mov r3, r4 | r3 = r4;
0x00060cd4 str r0, [sp, 0x30] | var_30h = r0;
0x00060cd6 str r4, [sp] | *(sp) = r4;
0x00060cd8 mov r0, fp | r0 = fp;
0x00060cda bl 0x67dc0 | fcn_00067dc0 (r0, r1, r2, r3, r4);
0x00060cde ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00060ce0 ldr r1, [r3, 0x20] | r1 = *((r3 + 0x20));
0x00060ce2 cmp r1, r4 |
| if (r1 <= r4) {
0x00060ce4 ble.w 0x61126 | goto label_228;
| }
0x00060ce8 mov r0, sl | r0 = sl;
0x00060cea str r6, [sp, 0x7c] | var_7ch = r6;
0x00060cec mov r5, r4 | r5 = r4;
0x00060cee ldr r6, [sp, 0x3c] | r6 = var_3ch;
0x00060cf0 mov sl, r7 | sl = r7;
0x00060cf2 b 0x60cfe |
| while (ip < r6) {
| label_36:
0x00060cf4 adds r4, 1 | r4++;
0x00060cf6 adds r5, 0x14 | r5 += 0x14;
0x00060cf8 cmp r1, r4 |
| if (r1 <= r4) {
0x00060cfa ble.w 0x61120 | goto label_229;
| }
0x00060cfe ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00060d00 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00060d02 adds r2, r3, r5 | r2 = r3 + r5;
0x00060d04 ldrsh.w ip, [r2, 0x12] | ip = *((r2 + 0x12));
0x00060d08 cmp ip, r6 |
0x00060d0a blt 0x60cf4 |
| }
0x00060d0c ldr r7, [sp, 0x30] | r7 = var_30h;
0x00060d0e ldr r1, [r3, r5] | r1 = *((r3 + r5));
0x00060d10 ldrsh.w r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00060d14 add.w ip, r7, r6 |
0x00060d18 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00060d1a str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00060d1e adds r6, 1 | r6++;
0x00060d20 str r0, [sp, 0x3c] | var_3ch = r0;
0x00060d22 bl 0x66f40 | fcn_00066f40 (r0, r1, r2, r3, r4);
0x00060d26 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00060d28 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00060d2a ldr r1, [r3, 0x20] | r1 = *((r3 + 0x20));
0x00060d2c b 0x60cf4 | goto label_36;
| label_202:
0x00060d2e ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00060d32 movs r4, 1 | r4 = 1;
0x00060d34 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00060d36 add r3, r2 | r3 += r2;
0x00060d38 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
0x00060d3c b.w 0x5f862 | goto label_11;
| label_208:
0x00060d40 ldr r1, [sp, 0xe0] | r1 = var_e0h;
0x00060d42 cmp r1, 0 |
| if (r1 < 0) {
0x00060d44 blt.w 0x6088e | goto label_37;
| }
0x00060d48 mov r0, sl | r0 = sl;
0x00060d4a bl 0x1aa40 | fcn_0001aa40 (r0, r1);
0x00060d4e b 0x6088e | goto label_37;
| label_194:
0x00060d50 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00060d52 ldr r2, [r3] | r2 = *(r3);
0x00060d54 b 0x605b2 | goto label_38;
| label_179:
0x00060d56 ldr.w r3, [sl] | r3 = *(sl);
0x00060d5a ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00060d5e cmp r3, 0 |
| if (r3 != 0) {
0x00060d60 bne.w 0x61024 | goto label_230;
| }
0x00060d64 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x00060d68 movs r1, 0x14 | r1 = 0x14;
0x00060d6a mla r3, r1, r2, r3 | __asm ("mla r3, r1, r2, r3");
| label_61:
0x00060d6e movs r2, 0x72 | r2 = 0x72;
0x00060d70 strb r2, [r3] | *(r3) = r2;
0x00060d72 ldrb.w r3, [sp, 0xec] | r3 = var_ech;
0x00060d76 orr r3, r3, 1 | r3 |= 1;
0x00060d7a strb.w r3, [sp, 0xec] | var_ech = r3;
0x00060d7e b.w 0x602e2 | goto label_39;
| label_178:
0x00060d82 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00060d84 movs r2, 0 | r2 = 0;
0x00060d86 movs r1, 0x70 | r1 = 0x70;
0x00060d88 mov r0, sl | r0 = sl;
0x00060d8a ldr r3, [r3] | r3 = *(r3);
0x00060d8c str r2, [sp] | *(sp) = r2;
0x00060d8e ldr r2, [sp, 0x18] | r2 = var_18h;
0x00060d90 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00060d92 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060d96 b.w 0x602b4 | goto label_40;
| label_177:
0x00060df4 ldr r0, [sp, 0xcc] | r0 = var_cch;
0x00060df6 mov.w r2, -1 | r2 = -1;
0x00060dfa ldr r1, [sp, 0x38] | r1 = var_38h;
0x00060dfc bl 0x36d2c | r0 = fcn_00036d2c (r0, r1, r2);
0x00060e00 cmp r0, 0 |
| if (r0 != 0) {
0x00060e02 bne.w 0x6026a | goto label_41;
| }
0x00060e04 add r2, sp, 0xc8 | r2 = sp + 0xc8;
0x00060e06 ldr r2, [r7, 0x44] | r2 = *((r7 + 0x44));
0x00060e08 cmp r2, 0 |
| if (r2 != 0) {
0x00060e0a bne.w 0x6026a | goto label_41;
| }
0x00060e0e ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00060e10 mov r0, sb | r0 = sb;
0x00060e12 ldr r1, [sp, 0x38] | r1 = var_38h;
0x00060e14 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00060e18 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x00060e1a bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x00060e1e ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00060e20 str r0, [sp, 0x28] | var_28h = r0;
0x00060e22 str r0, [r7, 0x28] | *((r7 + 0x28)) = r0;
0x00060e24 orr r3, r3, 8 | r3 |= 8;
0x00060e28 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x00060e2a b.w 0x6026a | goto label_41;
| label_192:
0x00060e2e ldr r0, [sp, 0x34] | r0 = var_34h;
0x00060e30 ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x00060e34 cmp r3, 0 |
| if (r3 != 0) {
0x00060e36 bne.w 0x60aa8 | goto label_42;
| }
0x00060e3a ldr r1, [sp, 0x28] | r1 = var_28h;
0x00060e3c bl 0x159dc | fcn_000159dc (r0, r1);
0x00060e40 b 0x60ab0 | goto label_43;
| label_174:
0x00060e42 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x00060e46 mov r1, r2 | r1 = r2;
0x00060e48 str r2, [sp, 0x50] | var_50h = r2;
0x00060e4a ldr.w r2, [sl, 0x70] | r2 = *((sl + 0x70));
0x00060e4e cmp r1, r2 |
| if (r1 >= r2) {
0x00060e50 bge.w 0x616c0 | goto label_231;
| }
0x00060e54 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00060e56 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x00060e5a add.w r1, r0, r0, lsl 2 | r1 = r0 + (r0 << 2);
0x00060e5e adds r0, 1 | r0++;
0x00060e60 str.w r0, [sl, 0x6c] | __asm ("str.w r0, [sl, 0x6c]");
0x00060e64 movs r0, 0x11 | r0 = 0x11;
0x00060e66 str.w r0, [r2, r1, lsl 2] | __asm ("str.w r0, [r2, r1, lsl 2]");
0x00060e6a add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x00060e6e strd r3, r3, [r2, 4] | __asm ("strd r3, r3, [r2, 4]");
0x00060e72 strd r3, r3, [r2, 0xc] | __asm ("strd r3, r3, [r2, 0xc]");
| label_80:
0x00060e76 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00060e78 movs r1, 0xc | r1 = 0xc;
0x00060e7a ldr.w r2, [pc, 0xb80] | r2 = *(0x000619fc);
0x00060e7e mov r0, fp | r0 = fp;
0x00060e80 strb.w r1, [sp, 0xac] | var_ach = r1;
0x00060e84 movs r1, 1 | r1 = 1;
0x00060e86 str r3, [sp, 0xb0] | var_b0h = r3;
0x00060e88 movs r3, 0 | r3 = 0;
0x00060e8a add r2, pc | r2 += pc;
0x00060e8c str r3, [sp, 0xb4] | var_b4h = r3;
0x00060e8e str r3, [sp, 0xc0] | var_c0h = r3;
0x00060e90 strd r3, r3, [sp, 0xb8] | __asm ("strd r3, r3, [var_b8h]");
0x00060e94 mov r3, r4 | r3 = r4;
0x00060e96 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00060e9a ldr r2, [sp, 0x30] | r2 = var_30h;
0x00060e9c mov r1, r7 | r1 = r7;
0x00060e9e mov r0, fp | r0 = fp;
0x00060ea0 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x00060ea4 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00060ea6 ldrh r2, [r7, 2] | r2 = *((r7 + 2));
0x00060ea8 strh r2, [r3, 0x2e] | *((r3 + 0x2e)) = r2;
0x00060eaa ldr r3, [sp, 0x50] | r3 = var_50h;
0x00060eac cmp r3, 0 |
0x00060eae ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
| if (r3 == 0) {
0x00060eb2 beq.w 0x60156 | goto label_44;
| }
0x00060eb6 itt lt |
| if (r3 >= 0) {
0x00060eb8 addlt r2, r3, -1 | r2 = r3 + -1;
| }
| if (r3 < 0) {
0x00060ebc str r2, [sp, 0x50] | var_50h = r2;
| }
0x00060ebe ldr.w r2, [sl] | r2 = *(sl);
0x00060ec2 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x00060ec6 cmp r2, 0 |
| if (r2 != 0) {
0x00060ec8 bne.w 0x6109c | goto label_232;
| }
0x00060ecc ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x00060ed0 movs r1, 0x14 | r1 = 0x14;
0x00060ed2 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00060ed4 mla r2, r1, r0, r2 | __asm ("mla r2, r1, r0, r2");
| label_65:
0x00060ed8 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x00060eda b.w 0x60156 | goto label_44;
| label_218:
0x00060ede ldr r0, [sp, 0x34] | r0 = var_34h;
0x00060ee0 ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x00060ee4 cmp r3, 0 |
| if (r3 != 0) {
0x00060ee6 bne.w 0x60aa8 | goto label_42;
| }
0x00060eea b 0x60a98 | goto label_45;
| label_214:
0x00060eec ldr.w r3, [pc, 0xb10] |
0x00060ef0 add r3, pc | r3 = 0xc28f4;
0x00060ef2 b 0x60964 | goto label_46;
| label_148:
0x00060ef4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00060ef6 ldr.w r3, [r3, 0xf4] | r3 = *((r3 + 0xf4));
0x00060efa cmp r3, 0 |
| if (r3 != 0) {
0x00060efc bne.w 0x60ac8 | goto label_47;
| }
0x00060f00 b 0x609da | goto label_32;
| label_215:
0x00060f02 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00060f04 mov r1, sl | r1 = sl;
0x00060f06 rsbs r2, r3, 0 | r2 = r3 - ;
0x00060f08 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x00060f0c b 0x609a0 | goto label_48;
| label_195:
0x00060f0e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00060f10 strh r3, [r7, 2] | *((r7 + 2)) = r3;
0x00060f12 str r3, [sp, 0x24] | var_24h = r3;
0x00060f14 b.w 0x60672 | goto label_49;
| label_150:
0x00060f18 mov.w r2, -1 | r2 = -1;
0x00060f1c str r3, [r0] | *(r0) = r3;
0x00060f1e bl 0x36d2c | r0 = fcn_00036d2c (r0, r1, r2);
| if (r0 == 0) {
0x00060f22 cbnz r0, 0x60f32 |
0x00060f24 ldr r1, [r7, 0x30] | r1 = *((r7 + 0x30));
| if (r1 != 0) {
0x00060f26 cbz r1, 0x60f2e |
0x00060f28 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00060f2a bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x00060f2e movs r3, 0 | r3 = 0;
0x00060f30 str r3, [r7, 0x30] | *((r7 + 0x30)) = r3;
| }
0x00060f32 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00060f34 str r4, [r3] | *(r3) = r4;
0x00060f36 b.w 0x5fc34 | goto label_50;
| label_190:
0x00060f3a ldr.w r2, [pc, 0xac8] |
0x00060f3e movs r1, 1 | r1 = 1;
0x00060f40 mov r3, r5 | r3 = r5;
0x00060f42 str r1, [sp, 0xd0] | var_d0h = r1;
0x00060f44 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00060f46 movs r1, 0x9a | r1 = 0x9a;
0x00060f48 add r2, pc | r2 = 0xc2952;
0x00060f4a str r2, [sp, 0xcc] | var_cch = r2;
0x00060f4c add r2, sp, 0xcc | r2 += var_cch;
0x00060f4e bl 0x1afec | r0 = fcn_0001afec (r0, r1, r2, r3);
0x00060f52 mov r1, r0 | r1 = r0;
0x00060f54 ldr r0, [r6] | r0 = *(r6);
0x00060f56 bl 0x1afb0 | r0 = fcn_0001afb0 (r0, r1);
0x00060f5a mov r5, r0 | r5 = r0;
0x00060f5c b.w 0x604da | goto label_51;
| label_217:
0x00060f60 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x00060f62 ldr r3, [r5] | r3 = *(r5);
0x00060f64 b.w 0x5fe1c | goto label_29;
| label_136:
0x00060f68 ldr.w lr, [r7, 0x30] |
0x00060f6c cmp.w lr, 0 |
| if (lr == 0) {
0x00060f70 beq.w 0x616a8 | goto label_233;
| }
0x00060f74 ldr r0, [r4, 0x30] | r0 = *((r4 + 0x30));
0x00060f76 cmp r0, 0 |
| if (r0 != 0) {
0x00060f78 bne.w 0x5f7e4 | goto label_7;
| }
0x00060f7c b.w 0x5f968 | goto label_52;
| label_185:
0x00060f80 movs r3, 2 | r3 = 2;
0x00060f82 str r0, [sp] | *(sp) = r0;
0x00060f84 movs r1, 0x70 | r1 = 0x70;
0x00060f86 mov r0, r6 | r0 = r6;
0x00060f88 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00060f8c ldr r3, [r6] | r3 = *(r6);
0x00060f8e ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00060f92 cmp r3, 0 |
| if (r3 == 0) {
0x00060f94 beq.w 0x6043c | goto label_53;
| }
0x00060f98 b.w 0x60450 | goto label_54;
| label_216:
0x00060f9c ldr.w r3, [fp] | r3 = *(fp);
0x00060fa0 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00060fa2 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x00060fa4 itt pl |
| if (r1 < r3) {
0x00060fa6 movpl r3, 1 | r3 = 1;
| }
| if (r1 < r3) {
0x00060fa8 strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x00060fac b 0x609f8 | goto label_55;
| label_200:
0x00060fae movs r1, 0 | r1 = 0;
0x00060fb0 movs r0, 0xc | r0 = 0xc;
0x00060fb2 bl 0x12abc | fcn_00012abc (r0);
0x00060fb6 b.w 0x606a8 | goto label_56;
| label_182:
0x00060fba ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x00060fbe cmp r3, 0 |
| if (r3 == 0) {
0x00060fc0 beq.w 0x61696 | goto label_234;
| }
| label_79:
0x00060fc4 mov r0, fp | r0 = fp;
0x00060fc6 bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x00060fca str r0, [sp, 0x1c] | var_1ch = r0;
0x00060fcc b.w 0x60328 | goto label_57;
| label_173:
0x00060fd0 movs r2, 0 | r2 = 0;
0x00060fd2 movs r1, 0x45 | r1 = 0x45;
0x00060fd4 mov r0, sl | r0 = sl;
0x00060fd6 str r2, [sp] | *(sp) = r2;
0x00060fd8 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00060fdc mov r8, r0 | r8 = r0;
0x00060fde add.w ip, r0, 1 |
0x00060fe0 lsrs r1, r0, 0x10 | r1 = r0 >> 0x10;
0x00060fe2 b.w 0x60108 | goto label_58;
| label_209:
0x00060fe6 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00060fe8 mov r0, fp | r0 = fp;
0x00060fea mov.w r2, -1 | r2 = -1;
0x00060fee mov r1, r7 | r1 = r7;
0x00060ff0 ldr.w r8, [sp, 0x20] | r8 = var_20h;
0x00060ff4 str r3, [sp, 0xc] | var_ch = r3;
0x00060ff6 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00060ff8 str r3, [sp, 8] | var_8h = r3;
0x00060ffa ldr r3, [sp, 0x18] | r3 = var_18h;
0x00060ffc str r3, [sp, 4] | var_4h = r3;
0x00060ffe add r3, sp, 0x84 | r3 += var_84h;
0x00061000 str r3, [sp] | *(sp) = r3;
0x00061002 add r3, sp, 0xcc | r3 += var_cch;
0x00061004 bl 0x69308 | fcn_00069308 (r0, r1, r2, r3, r4, r5, r6);
0x00061008 mov r0, r4 | r0 = r4;
0x0006100a bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0006100e b 0x60948 | goto label_59;
| label_175:
0x00061010 movs r3, 0 | r3 = 0;
0x00061012 mov r2, ip | r2 = ip;
0x00061014 str r3, [sp] | *(sp) = r3;
0x00061016 movs r1, 0x41 | r1 = 0x41;
0x00061018 mov r0, sl | r0 = sl;
0x0006101a bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006101e mov r3, r0 | r3 = r0;
0x00061020 b.w 0x60188 | goto label_60;
| label_230:
0x00061024 ldr.w r3, [pc, 0x9e0] |
0x00061028 add r3, pc | r3 = 0xc2a34;
0x0006102a adds r3, 4 | r3 += 4;
0x0006102c b 0x60d6e | goto label_61;
| label_213:
0x0006102e ldr.w r3, [pc, 0x9dc] | r3 = *(0x00061a0c);
0x00061032 movs r1, 0 | r1 = 0;
0x00061034 ldr.w r2, [pc, 0x9d8] |
0x00061038 mov r0, fp | r0 = fp;
0x0006103a add r3, pc | r3 += pc;
0x0006103c add r2, pc | r2 = 0xc2a50;
0x0006103e bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00061042 b 0x60952 | goto label_62;
| label_72:
0x00061044 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00061046 rsbs r2, r3, 0 | r2 = r3 - ;
| label_212:
0x00061048 mov r1, sl | r1 = sl;
0x0006104a bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0006104e b 0x60948 | goto label_59;
| label_198:
0x00061050 str r1, [sp, 0x24] | var_24h = r1;
0x00061052 b.w 0x60672 | goto label_49;
| label_223:
0x00061056 ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x00061058 cbz r3, 0x61062 |
0x0006105a ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0006105c mov r0, sb | r0 = sb;
0x0006105e bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
| label_95:
0x00061062 ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
| label_220:
0x00061066 ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x0006106a movs r4, 1 | r4 = 1;
0x0006106c b 0x609b0 | goto label_63;
| label_132:
0x0006106e ldr.w r3, [pc, 0x9a4] | r3 = *(0x00061a14);
0x00061072 add r3, pc | r3 += pc;
0x00061074 adds r3, 4 | r3 += 4;
0x00061076 b.w 0x5f88a | goto label_64;
| label_186:
0x0006107a ldr.w r3, [r3, 0x1f8] | r3 = *((r3 + 0x1f8));
0x0006107e cmp r3, 0 |
| if (r3 != 0) {
0x00061080 bne.w 0x60450 | goto label_54;
| }
0x00061084 ldr r3, [r5] | r3 = *(r5);
0x00061086 subs r3, 1 | r3--;
0x00061088 str r3, [r5] | *(r5) = r3;
0x0006108a cmp r3, 0 |
| if (r3 != 0) {
0x0006108c bne.w 0x60450 | goto label_54;
| }
0x00061090 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00061092 mov r1, r5 | r1 = r5;
0x00061094 bl 0x159dc | fcn_000159dc (r0, r1);
0x00061098 b.w 0x60450 | goto label_54;
| label_232:
0x0006109c ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0006109e b 0x60ed8 | goto label_65;
| label_211:
0x000610a0 mov r1, sl | r1 = sl;
0x000610a2 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000610a6 b 0x60920 | goto label_66;
| label_210:
0x000610a8 rsbs r2, r5, 0 | r2 = r5 - ;
0x000610aa mov r1, sl | r1 = sl;
0x000610ac bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000610b0 b 0x608e6 | goto label_67;
| label_199:
0x000610b2 cmp r0, 0 |
| if (r0 <= 0) {
0x000610b4 ble 0x610ce | goto label_235;
| }
0x000610b6 ldr r6, [sp, 0x28] | r6 = var_28h;
0x000610b8 movs r4, 0 | r4 = 0;
0x000610ba movs r3, 0x10 | r3 = 0x10;
| do {
0x000610bc ldrb r2, [r1, r3] | r2 = *((r1 + r3));
0x000610be adds r4, 1 | r4++;
0x000610c0 cmp r0, r4 |
0x000610c2 and r2, r2, 1 | r2 &= 1;
0x000610c6 strb r2, [r6, r3] | *((r6 + r3)) = r2;
0x000610c8 add.w r3, r3, 0x10 | r3 += 0x10;
0x000610cc bne 0x610bc |
| } while (r0 != r4);
| label_235:
0x000610ce ldr r0, [sp, 0x28] | r0 = var_28h;
0x000610d0 mov.w r2, -1 | r2 = -1;
0x000610d4 bl 0x36d2c | r0 = fcn_00036d2c (r0, r1, r2);
0x000610d8 clz r3, r0 | r3 &= r0;
0x000610dc lsrs r3, r3, 5 | r3 >>= 5;
0x000610de str r3, [sp, 0x24] | var_24h = r3;
0x000610e0 b.w 0x60672 | goto label_49;
| label_203:
0x000610e4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000610e6 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000610e8 ldr r4, [sp, 0x5c] | r4 = var_5ch;
0x000610ea ldr r1, [sp, 0x38] | r1 = var_38h;
0x000610ec str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x000610ee str r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
0x000610f0 mov r0, r4 | r0 = r4;
0x000610f2 bl 0x307e4 | fcn_000307e4 (r0, r1, r2);
0x000610f6 ldr r1, [sp, 0xcc] | r1 = var_cch;
0x000610f8 mov r0, r4 | r0 = r4;
0x000610fa bl 0x307e4 | fcn_000307e4 (r0, r1, r2);
0x000610fe ldr r3, [sp, 0x44] | r3 = var_44h;
0x00061100 cmp r3, 0 |
| if (r3 == 0) {
0x00061102 beq.w 0x60768 | goto label_68;
| }
0x00061106 add r3, sp, 0x90 | r3 += var_90h;
0x00061108 str r3, [sp, 0x30] | var_30h = r3;
0x0006110a b.w 0x6073e | goto label_69;
| label_204:
0x0006110e ldr.w r8, [r7, 0x2c] | r8 = *((r7 + 0x2c));
0x00061112 cmp.w r8, 0 |
| if (r8 == 0) {
0x00061116 beq.w 0x61734 | goto label_236;
| }
0x0006111a mov r8, r3 | r8 = r3;
0x0006111c b.w 0x6077c | goto label_70;
| label_229:
0x00061120 ldr r6, [sp, 0x7c] | r6 = var_7ch;
0x00061122 mov r7, sl | r7 = sl;
0x00061124 mov sl, r0 | sl = r0;
| label_228:
0x00061126 ldrb.w r3, [fp, 0x13] | r3 = *(arg_13h);
0x0006112a cmp r3, 0 |
| if (r3 == 0) {
0x0006112c beq.w 0x61716 | goto label_237;
| }
0x00061130 subs r3, 1 | r3--;
0x00061132 uxtb r3, r3 | r3 = (int8_t) r3;
0x00061134 strb.w r3, [fp, 0x13] | *(arg_13h) = r3;
0x00061138 add.w r3, fp, r3, lsl 2 | r3 = fp + (r3 << 2);
0x0006113c ldr.w r4, [r3, 0x94] | r4 = *((r3 + 0x94));
| label_83:
0x00061140 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00061142 mov r3, r6 | r3 = r6;
0x00061144 movs r1, 0x5d | r1 = 0x5d;
0x00061146 mov r0, sl | r0 = sl;
0x00061148 str r4, [sp] | *(sp) = r4;
0x0006114a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006114e ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00061150 movs r3, 0 | r3 = 0;
0x00061152 str r3, [sp] | *(sp) = r3;
0x00061154 movs r1, 0x87 | r1 = 0x87;
0x00061156 mov r3, r4 | r3 = r4;
0x00061158 mov r0, sl | r0 = sl;
0x0006115a ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0006115c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| if (r4 != 0) {
0x00061160 cbz r4, 0x6116a |
0x00061162 mov r1, r4 | r1 = r4;
0x00061164 mov r0, fp | r0 = fp;
0x00061166 bl 0xf284 | fcn_0000f284 (r0, r1);
| }
0x0006116a ldr r1, [sp, 0x30] | r1 = var_30h;
0x0006116c mov r2, r6 | r2 = r6;
0x0006116e mov r0, fp | r0 = fp;
0x00061170 bl 0x18120 | fcn_00018120 (r0, r1, r2);
0x00061174 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00061176 bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0006117a ldr.w r5, [fp, 0x28] | r5 = *(arg_28h);
0x0006117e adds r3, r5, 1 | r3 = r5 + 1;
0x00061180 str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x00061184 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00061186 str r5, [r3, 8] | *((r3 + 8)) = r5;
0x00061188 ldrb.w r3, [fp, 0x13] | r3 = *(arg_13h);
0x0006118c cmp r3, 0 |
| if (r3 == 0) {
0x0006118e beq.w 0x61722 | goto label_238;
| }
0x00061192 subs r3, 1 | r3--;
0x00061194 uxtb r3, r3 | r3 = (int8_t) r3;
0x00061196 strb.w r3, [fp, 0x13] | *(arg_13h) = r3;
0x0006119a add.w r3, fp, r3, lsl 2 | r3 = fp + (r3 << 2);
0x0006119e ldr.w r4, [r3, 0x94] | r4 = *((r3 + 0x94));
| label_84:
0x000611a2 mov r3, r4 | r3 = r4;
0x000611a4 mov r2, r5 | r2 = r5;
0x000611a6 movs r1, 0x75 | r1 = 0x75;
0x000611a8 str r6, [sp] | *(sp) = r6;
0x000611aa mov r0, sl | r0 = sl;
0x000611ac bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000611b0 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x000611b2 movs r3, 0 | r3 = 0;
0x000611b4 str r3, [sp] | *(sp) = r3;
0x000611b6 movs r1, 0x23 | r1 = 0x23;
0x000611b8 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000611ba mov r0, sl | r0 = sl;
0x000611bc ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x000611be bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000611c2 movs r3, 1 | r3 = 1;
0x000611c4 strb r3, [r6, 1] | *((r6 + 1)) = r3;
0x000611c6 ldr r3, [sp, 0x24] | r3 = var_24h;
| if (r3 != 0) {
0x000611c8 cbz r3, 0x611d6 |
0x000611ca ldr.w r3, [sb, 0x4c] | r3 = *((sb + 0x4c));
0x000611ce ands r3, r3, 4 | r3 &= 4;
| if (r3 == r3) {
0x000611d2 beq.w 0x619ec | goto label_239;
| }
| }
| label_100:
0x000611d6 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x000611da movs r1, 0x81 | r1 = 0x81;
0x000611dc ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000611de mov r0, sl | r0 = sl;
0x000611e0 str r5, [sp] | *(sp) = r5;
0x000611e2 str r3, [sp, 0x30] | var_30h = r3;
0x000611e4 mov r3, r4 | r3 = r4;
0x000611e6 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000611e8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000611ec ldr r3, [sp, 0x28] | r3 = var_28h;
0x000611ee movs r2, 1 | r2 = 1;
0x000611f0 str r2, [sp, 0x24] | var_24h = r2;
0x000611f2 ldr r3, [r3] | r3 = *(r3);
| label_82:
0x000611f4 cmp r3, 0 |
| if (r3 <= 0) {
0x000611f6 ble 0x61282 | goto label_240;
| }
0x000611f8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000611fa str.w r8, [sp, 0x3c] | __asm ("str.w r8, [var_3ch]");
0x000611fe ldr r4, [sp, 0x5c] | r4 = var_5ch;
0x00061200 ldr.w r8, [sp, 0x20] | r8 = var_20h;
0x00061204 mov r6, r3 | r6 = r3;
0x00061206 str r7, [sp, 0x20] | var_20h = r7;
0x00061208 mov r7, r3 | r7 = r3;
0x0006120a str.w sb, [sp, 0x7c] | __asm ("str.w sb, [var_7ch]");
0x0006120e b 0x6122c |
| while (r3 != 0) {
0x00061210 mov r3, r8 | r3 = r8;
0x00061212 mov r2, r5 | r2 = r5;
0x00061214 movs r1, 0x5b | r1 = 0x5b;
0x00061216 mov r0, sl | r0 = sl;
0x00061218 str r4, [sp] | *(sp) = r4;
0x0006121a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_71:
0x0006121e ldr r3, [r7] | r3 = *(r7);
0x00061220 add.w r8, r8, 1 | r8++;
0x00061224 adds r4, 1 | r4++;
0x00061226 adds r6, 0x10 | r6 += 0x10;
0x00061228 cmp r3, r8 |
| if (r3 <= r8) {
0x0006122a ble 0x61278 | goto label_241;
| }
0x0006122c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006122e cmp r3, 0 |
0x00061230 bne 0x61210 |
| }
0x00061232 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00061234 mov.w r2, 1 | r2 = 1;
0x00061238 strb r2, [r3] | *(r3) = r2;
0x0006123a ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x0006123e ldr.w sb, [r6, 8] | sb = *((r6 + 8));
0x00061242 cmp r3, 0 |
| if (r3 == 0) {
0x00061244 beq 0x6121e | goto label_71;
| }
0x00061246 mov r2, r4 | r2 = r4;
0x00061248 mov r1, sb | r1 = sb;
0x0006124a mov r0, fp | r0 = fp;
0x0006124c bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x00061250 cmp r0, r4 |
0x00061252 mov r2, r0 | r2 = r0;
| if (r0 == r4) {
0x00061254 beq 0x6121e | goto label_71;
| }
0x00061256 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0006125a tst.w r3, 0x200000 |
0x0006125e mov.w r3, 0 | r3 = 0;
0x00061262 str r3, [sp] | *(sp) = r3;
0x00061264 it ne |
| if ((r3 & 0x200000) == 0) {
0x00061266 movne r1, 0x4d | r1 = 0x4d;
| }
0x00061268 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x0006126c mov r3, r4 | r3 = r4;
0x0006126e it eq |
| if ((r3 & 0x200000) != 0) {
0x00061270 moveq r1, 0x4e | r1 = 0x4e;
| }
0x00061272 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061276 b 0x6121e | goto label_71;
| label_241:
0x00061278 ldr.w r8, [sp, 0x3c] | r8 = var_3ch;
0x0006127c ldr.w sb, [sp, 0x7c] | sb = var_7ch;
0x00061280 ldr r7, [sp, 0x20] | r7 = var_20h;
| label_240:
0x00061282 ldr r1, [sp, 0x6c] | r1 = var_6ch;
| if (r1 != 0) {
0x00061284 cbz r1, 0x6128c |
0x00061286 ldr r2, [r1] | r2 = *(r1);
0x00061288 adds r2, 1 | r2++;
0x0006128a str r2, [r1] | *(r1) = r2;
| }
0x0006128c ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x0006128e movs r1, 0x57 | r1 = 0x57;
0x00061290 ldr r6, [sp, 0x70] | r6 = var_70h;
0x00061292 mov r0, sl | r0 = sl;
0x00061294 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00061298 mvn r3, 8 | r3 = ~8;
0x0006129c mov r2, r6 | r2 = r6;
0x0006129e str r3, [sp, 8] | var_8h = r3;
0x000612a0 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000612a2 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000612a4 invalid |
0x000612a8 eors r4, r5 | r4 ^= r5;
0x000612aa movs r3, 0 | r3 = 0;
0x000612ac movs r1, 0x10 | r1 = 0x10;
0x000612ae mov r0, sl | r0 = sl;
0x000612b0 mov r5, r3 | r5 = r3;
0x000612b2 adds r2, r4, 1 | r2 = r4 + 1;
0x000612b4 str r2, [sp] | *(sp) = r2;
0x000612b6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000612ba ldr r1, [sp, 0x28] | r1 = var_28h;
0x000612bc ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x000612be ldr r3, [r1] | r3 = *(r1);
0x000612c0 movs r1, 0x4c | r1 = 0x4c;
0x000612c2 str r3, [sp] | *(sp) = r3;
0x000612c4 mov r3, r6 | r3 = r6;
0x000612c6 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x000612ca bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000612ce ldr r3, [sp, 0x64] | r3 = var_64h;
0x000612d0 movs r1, 0xc | r1 = 0xc;
0x000612d2 ldr r2, [sp, 0x34] | r2 = var_34h;
0x000612d4 mov r0, sl | r0 = sl;
0x000612d6 str r5, [sp] | *(sp) = r5;
0x000612d8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000612dc ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000612de movs r1, 0x30 | r1 = 0x30;
0x000612e0 ldr r2, [sp, 0x68] | r2 = var_68h;
0x000612e2 mov r0, sl | r0 = sl;
0x000612e4 str r5, [sp] | *(sp) = r5;
0x000612e6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000612ea ldr r3, [sp, 0x60] | r3 = var_60h;
0x000612ec movs r1, 0xc | r1 = 0xc;
0x000612ee ldr r2, [sp, 0x54] | r2 = var_54h;
0x000612f0 mov r0, sl | r0 = sl;
0x000612f2 str r5, [sp] | *(sp) = r5;
0x000612f4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000612f8 mov r1, r4 | r1 = r4;
0x000612fa ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x000612fe mov r0, sl | r0 = sl;
0x00061300 bl 0x9894 | fcn_00009894 (r0, r1, r2);
0x00061304 ldr r4, [sp, 0x50] | r4 = var_50h;
0x00061306 mov r0, fp | r0 = fp;
0x00061308 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x0006130a ldr r3, [sp, 0x74] | r3 = var_74h;
0x0006130c mov r1, r4 | r1 = r4;
0x0006130e mov r2, r6 | r2 = r6;
0x00061310 bl 0x6abe4 | fcn_0006abe4 (r0, r1, r2, r3);
0x00061314 mov r3, r4 | r3 = r4;
0x00061316 movs r2, 1 | r2 = 1;
0x00061318 movs r1, 0x45 | r1 = 0x45;
0x0006131a mov r0, sl | r0 = sl;
0x0006131c str r5, [sp] | *(sp) = r5;
0x0006131e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061322 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00061324 cmp r3, 0 |
| if (r3 == 0) {
0x00061326 beq.w 0x61452 | goto label_242;
| }
0x0006132a str r5, [sp] | *(sp) = r5;
0x0006132c movs r1, 3 | r1 = 3;
0x0006132e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00061330 mov r0, sl | r0 = sl;
0x00061332 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00061334 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_73:
0x00061338 ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x0006133a cbz r3, 0x61344 |
0x0006133c mov r1, r3 | r1 = r3;
0x0006133e mov r0, sb | r0 = sb;
0x00061340 bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x00061344 ldr r5, [sp, 0x34] | r5 = var_34h;
0x00061346 movs r4, 0 | r4 = 0;
0x00061348 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0006134a movs r1, 0xc | r1 = 0xc;
0x0006134c mov r0, sl | r0 = sl;
0x0006134e str r4, [sp] | *(sp) = r4;
0x00061350 mov r2, r5 | r2 = r5;
0x00061352 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061354 stc2l p9, c9, [r3, -0x4c]! | __asm ("stc2l p9, c9, [r3, -0x4c]!");
0x00061358 mov r0, sl | r0 = sl;
0x0006135a bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0006135e ldr.w r6, [sl, 0x6c] | r6 = *((sl + 0x6c));
0x00061362 movs r2, 1 | r2 = 1;
0x00061364 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00061366 movs r1, 0x45 | r1 = 0x45;
0x00061368 mov r0, sl | r0 = sl;
0x0006136a str r4, [sp] | *(sp) = r4;
0x0006136c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061370 mov r2, r5 | r2 = r5;
0x00061372 mov r3, r4 | r3 = r4;
0x00061374 movs r1, 0x41 | r1 = 0x41;
0x00061376 mov r0, sl | r0 = sl;
0x00061378 str r4, [sp] | *(sp) = r4;
0x0006137a str r5, [sp, 0x34] | var_34h = r5;
0x0006137c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061380 ldr r1, [sp, 0x64] | r1 = var_64h;
0x00061382 mov r0, sl | r0 = sl;
0x00061384 bl 0x1c138 | fcn_0001c138 (r0, r1);
0x00061388 ldr.w r5, [sl, 0x6c] | r5 = *((sl + 0x6c));
0x0006138c movs r1, 0x30 | r1 = 0x30;
0x0006138e ldr r2, [sp, 0x50] | r2 = var_50h;
0x00061390 mov r0, sl | r0 = sl;
0x00061392 str r4, [sp] | *(sp) = r4;
0x00061394 adds r3, r5, 2 | r3 = r5 + 2;
0x00061396 adds r5, 1 | r5++;
0x00061398 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006139c ldr r2, [sp, 0x34] | r2 = var_34h;
0x0006139e mov r3, r4 | r3 = r4;
0x000613a0 movs r1, 0x41 | r1 = 0x41;
0x000613a2 mov r0, sl | r0 = sl;
0x000613a4 str r4, [sp] | *(sp) = r4;
0x000613a6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000613aa ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000613ac ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x000613b0 bl 0x2b090 | fcn_0002b090 (r0, r1, r2);
0x000613b4 mov r2, r5 | r2 = r5;
0x000613b6 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000613b8 movs r3, 0x10 | r3 = 0x10;
0x000613ba mov r0, fp | r0 = fp;
0x000613bc bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x000613c0 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000613c2 add r3, sp, 0x84 | r3 += var_84h;
0x000613c4 mov.w r2, -1 | r2 = -1;
0x000613c8 mov r1, r7 | r1 = r7;
0x000613ca strd r5, r6, [sp, 8] | __asm ("strd r5, r6, [var_8h]");
0x000613ce str r0, [sp, 4] | var_4h = r0;
0x000613d0 mov r0, fp | r0 = fp;
0x000613d2 str r3, [sp] | *(sp) = r3;
0x000613d4 add r3, sp, 0xcc | r3 += var_cch;
0x000613d6 bl 0x69308 | fcn_00069308 (r0, r1, r2, r3, r4, r5, r6);
0x000613da ldr r2, [sp, 0x34] | r2 = var_34h;
0x000613dc mov r3, r4 | r3 = r4;
0x000613de movs r1, 0x41 | r1 = 0x41;
0x000613e0 mov r0, sl | r0 = sl;
0x000613e2 str r4, [sp] | *(sp) = r4;
0x000613e4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000613e8 ldr r1, [sp, 0x60] | r1 = var_60h;
0x000613ea mov r0, sl | r0 = sl;
0x000613ec bl 0x1c138 | fcn_0001c138 (r0, r1);
0x000613f0 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x000613f2 mov r0, fp | r0 = fp;
0x000613f4 mov r1, r5 | r1 = r5;
0x000613f6 bl 0x300c4 | fcn_000300c4 (r0, r1);
0x000613fa ldr r3, [sp, 0x50] | r3 = var_50h;
0x000613fc mov r2, r4 | r2 = r4;
0x000613fe movs r1, 0x45 | r1 = 0x45;
0x00061400 mov r0, sl | r0 = sl;
0x00061402 str r4, [sp] | *(sp) = r4;
0x00061404 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061408 mov r3, r4 | r3 = r4;
0x0006140a movs r1, 0x41 | r1 = 0x41;
0x0006140c ldr r2, [sp, 0x54] | r2 = var_54h;
0x0006140e mov r0, sl | r0 = sl;
0x00061410 str r4, [sp] | *(sp) = r4;
0x00061412 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061416 ldr r1, [sp, 0x74] | r1 = var_74h;
0x00061418 subs r3, r1, 1 | r3 = r1 - 1;
0x0006141a cmp r3, 1 |
| if (r3 <= 1) {
0x0006141c bhi 0x6142c |
0x0006141e ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x00061420 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x00061424 ldrd r2, r3, [r2, 0xc] | __asm ("ldrd r2, r3, [r2, 0xc]");
0x00061428 bl 0x1c5c4 | fcn_0001c5c4 (r0, r1, r2, r3, r4, r5);
| }
| label_75:
0x0006142c ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x00061430 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x00061434 cmn r2, r3 |
| if (r2 < r3) {
0x00061436 bmi.w 0x61044 | goto label_72;
| }
0x0006143a ldr r1, [sp, 0x58] | r1 = var_58h;
0x0006143c mvn r3, 3 | r3 = ~3;
0x00061440 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x00061442 mul r1, r3, r1 | r1 = r3 * r1;
0x00061446 mov r3, r1 | r3 = r1;
0x00061448 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0006144c str r1, [r2, r3] | *((r2 + r3)) = r1;
0x0006144e b.w 0x60948 | goto label_59;
| label_242:
0x00061452 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00061454 bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x00061458 ldr r1, [sp, 0x78] | r1 = var_78h;
0x0006145a mov r0, sl | r0 = sl;
0x0006145c bl 0x1aa40 | fcn_0001aa40 (r0, r1);
0x00061460 b 0x61338 | goto label_73;
| label_114:
0x00061462 blx 0x7e8c | fcn_00007e8c ();
| label_183:
0x00061466 ldrd ip, lr, [fp, 0x28] | __asm ("ldrd ip, lr, [arg_28h]");
0x0006146a movs r2, 1 | r2 = 1;
0x0006146c ldr r6, [sp, 0x20] | r6 = var_20h;
0x0006146e movs r1, 0x45 | r1 = 0x45;
0x00061470 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00061472 add.w r3, lr, r2 | r3 = lr + r2;
0x00061476 add.w lr, lr, 2 | lr += 2;
0x0006147a str r3, [r6, 0x58] | *((r6 + 0x58)) = r3;
0x0006147c str.w lr, [fp, 0x2c] | __asm ("str.w lr, [arg_2ch]");
0x00061480 str.w lr, [r6, 0x5c] | __asm ("str.w lr, [r6, 0x5c]");
0x00061484 add.w lr, ip, r2 | lr = ip + r2;
0x00061488 str.w lr, [fp, 0x28] | __asm ("str.w lr, [arg_28h]");
0x0006148c str.w ip, [r6, 0x3c] | __asm ("str.w ip, [r6, 0x3c]");
0x00061490 str r4, [sp] | *(sp) = r4;
0x00061492 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061496 mov r2, r4 | r2 = r4;
0x00061498 str r4, [sp] | *(sp) = r4;
0x0006149a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006149c movs r1, 0x45 | r1 = 0x45;
0x0006149e ldr r3, [r6, 0x5c] | r3 = *((r6 + 0x5c));
0x000614a0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000614a4 str r4, [sp] | *(sp) = r4;
0x000614a6 movs r1, 0x64 | r1 = 0x64;
0x000614a8 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000614aa ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x000614ac ldr r2, [r6, 0x3c] | r2 = *((r6 + 0x3c));
0x000614ae bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000614b2 b.w 0x60814 | goto label_74;
| label_221:
0x000614b6 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x000614b8 cmp r3, 0 |
| if (r3 != 0) {
0x000614ba bne.w 0x61890 | goto label_243;
| }
0x000614be ldr r4, [r7, 0x1c] | r4 = *((r7 + 0x1c));
0x000614c0 ldr r3, [r4] | r3 = *(r4);
0x000614c2 cmp r3, 1 |
| if (r3 != 1) {
0x000614c4 bne.w 0x61890 | goto label_243;
| }
0x000614c8 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x000614ca ldr r1, [r3] | r1 = *(r3);
0x000614cc cmp r1, 1 |
| if (r1 != 1) {
0x000614ce bne.w 0x61890 | goto label_243;
| }
0x000614d2 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x000614d4 str r1, [sp, 0x20] | var_20h = r1;
0x000614d6 cmp r1, 0 |
| if (r1 != 0) {
0x000614d8 bne.w 0x61890 | goto label_243;
| }
0x000614dc ldr r6, [r3, 0x18] | r6 = *((r3 + 0x18));
0x000614de ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000614e0 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
0x000614e2 cmp r1, 0 |
| if (r1 != 0) {
0x000614e4 bne.w 0x61890 | goto label_243;
| }
0x000614e8 ldrb r1, [r3] | r1 = *(r3);
0x000614ea cmp r1, 0xa7 |
| if (r1 != 0xa7) {
0x000614ec bne.w 0x61890 | goto label_243;
| }
0x000614f0 cmp r2, 0 |
| if (r2 == 0) {
0x000614f2 beq.w 0x61890 | goto label_243;
| }
0x000614f6 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000614f8 ldr r1, [r1, 0x28] | r1 = *((r1 + 0x28));
0x000614fa ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000614fc ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000614fe lsls r4, r1, 0x17 | r4 = r1 << 0x17;
| if (r4 >= r1) {
0x00061500 bpl.w 0x61890 | goto label_243;
| }
0x00061504 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00061506 movs r3, 2 |
0x00061508 movt r3, 0x100 | r3 = 0x1000002;
0x0006150c tst r3, r1 |
| if ((r3 & r1) != 0) {
0x0006150e bne.w 0x61890 | goto label_243;
| }
0x00061512 ldr r1, [r6, 0x48] | r1 = *((r6 + 0x48));
0x00061514 ldr.w r0, [fp] | r0 = *(fp);
0x00061518 cmp r1, 0 |
| if (r1 == 0) {
0x0006151a beq.w 0x61c96 | goto label_244;
| }
0x0006151e bl 0xf364 | r0 = fcn_0000f364 (r0, r1);
0x00061522 mov r4, r0 | r4 = r0;
| label_109:
0x00061524 ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x00061528 mov r1, r4 | r1 = r4;
0x0006152a ldr.w r0, [fp, 0x74] | r0 = *(arg_74h);
0x0006152e ldr r5, [r6, 0x1c] | r5 = *((r6 + 0x1c));
0x00061530 str r3, [sp, 0x24] | var_24h = r3;
0x00061532 adds r3, 1 | r3++;
0x00061534 cmp r0, 0 |
0x00061536 it eq |
| if (r0 != 0) {
0x00061538 moveq r0, fp | r0 = fp;
| }
0x0006153a str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x0006153e bl 0x540f0 | fcn_000540f0 (r0, r1);
0x00061542 ldr r3, [r6] | r3 = *(r6);
0x00061544 mov r0, fp | r0 = fp;
0x00061546 mov r1, r4 | r1 = r4;
0x00061548 str r3, [sp] | *(sp) = r3;
0x0006154a movs r3, 0 | r3 = 0;
0x0006154c ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x0006154e bl 0x1b6bc | fcn_0001b6bc (r0, r1, r2, r3);
0x00061552 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00061554 lsls r0, r3, 0x18 | r0 = r3 << 0x18;
| if (r0 >= r3) {
0x00061556 bpl.w 0x61872 | goto label_245;
| }
0x0006155a ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0006155c mov r3, r2 | r3 = r2;
0x0006155e mov r1, r2 | r1 = r2;
| if (r2 != 0) {
0x00061560 cbnz r2, 0x6156c | goto label_246;
| }
0x00061562 b 0x61816 | goto label_93;
| do {
0x00061564 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x00061566 cmp r1, 0 |
| if (r1 == 0) {
0x00061568 beq.w 0x6193e | goto label_247;
| }
| label_246:
0x0006156c ldrb.w r0, [r1, 0x37] | r0 = *((r1 + 0x37));
0x00061570 and r0, r0, 3 | r0 &= 3;
0x00061574 cmp r0, 2 |
0x00061576 bne 0x61564 |
| } while (r0 != 2);
0x00061578 ldr r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x0006157a str r1, [sp, 0x20] | var_20h = r1;
0x0006157c ldrb.w r2, [r2, 0x2d] | r2 = *((r2 + 0x2d));
0x00061580 lsls r0, r2, 0x1f | r0 = r2 << 0x1f;
| if (r0 < r2) {
0x00061582 bmi 0x615b0 | goto label_248;
| }
0x00061584 mov r2, r1 | r2 = r1;
| do {
| label_94:
0x00061586 ldrb.w r1, [r3, 0x37] | r1 = *((r3 + 0x37));
0x0006158a lsls r1, r1, 0x1d | r1 <<= 0x1d;
| if (r1 >= r1) {
0x0006158c bmi 0x615a2 |
0x0006158e ldrsh.w r1, [r3, 0x30] | r1 = *((r3 + 0x30));
0x00061592 ldrsh.w r0, [r6, 0x30] | r0 = *((r6 + 0x30));
0x00061596 cmp r0, r1 |
| if (r0 <= r1) {
0x00061598 ble 0x615a2 | goto label_92;
| }
0x0006159a ldr r0, [r3, 0x24] | r0 = *((r3 + 0x24));
0x0006159c cmp r0, 0 |
| if (r0 == 0) {
0x0006159e beq.w 0x61860 | goto label_249;
| }
| }
| label_92:
0x000615a2 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000615a4 cmp r3, 0 |
0x000615a6 bne 0x61586 |
| } while (r3 != 0);
0x000615a8 str r2, [sp, 0x20] | var_20h = r2;
0x000615aa cmp r2, 0 |
| if (r2 == 0) {
0x000615ac beq.w 0x61816 | goto label_93;
| }
| label_248:
0x000615b0 ldr r1, [sp, 0x20] | r1 = var_20h;
0x000615b2 mov r0, fp | r0 = fp;
0x000615b4 ldr r5, [r1, 0x2c] | r5 = *((r1 + 0x2c));
0x000615b6 bl 0x2d384 | fcn_0002d384 (r0, r1);
0x000615ba movs r2, 1 | r2 = 1;
0x000615bc str r4, [sp] | *(sp) = r4;
0x000615be mov r4, r0 | r4 = r0;
0x000615c0 str r2, [sp, 4] | var_4h = r2;
0x000615c2 mov r3, r5 | r3 = r5;
0x000615c4 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000615c6 movs r1, 0x62 | r1 = 0x62;
0x000615c8 mov r0, sl | r0 = sl;
0x000615ca bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
| if (r4 != 0) {
0x000615ce cbz r4, 0x615e0 |
0x000615d0 mov r2, r4 | r2 = r4;
0x000615d2 mvn r3, 8 | r3 = ~8;
0x000615d6 mov.w r1, -1 | r1 = -1;
0x000615da mov r0, sl | r0 = sl;
0x000615dc bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
| }
0x000615e0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000615e2 movs r4, 0 | r4 = 0;
0x000615e4 ldr r5, [sp, 0x24] | r5 = var_24h;
0x000615e6 movs r1, 0x5e | r1 = 0x5e;
0x000615e8 mov r0, sl | r0 = sl;
0x000615ea ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x000615ec mov r2, r5 | r2 = r5;
0x000615ee str r4, [sp] | *(sp) = r4;
0x000615f0 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000615f2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000615f6 mov r3, r4 | r3 = r4;
0x000615f8 mov r2, r5 | r2 = r5;
0x000615fa movs r1, 0x76 | r1 = 0x76;
0x000615fc mov r0, sl | r0 = sl;
0x000615fe str r4, [sp] | *(sp) = r4;
0x00061600 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061604 ldrb.w r3, [fp, 0xc7] | r3 = *(arg_c7h);
0x00061608 cmp r3, 2 |
| if (r3 == 2) {
0x0006160a beq.w 0x617d2 | goto label_250;
| }
| label_88:
0x0006160e ldr r5, [sp, 0x4c] | r5 = var_4ch;
0x00061610 movs r4, 0 | r4 = 0;
0x00061612 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00061614 mov r0, fp | r0 = fp;
0x00061616 movs r3, 0x10 | r3 = 0x10;
0x00061618 str r4, [sp, 0xcc] | var_cch = r4;
0x0006161a mov r2, r5 | r2 = r5;
0x0006161c bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x00061620 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00061622 mov.w r2, -1 | r2 = -1;
0x00061626 mov r1, r7 | r1 = r7;
0x00061628 mov r0, fp | r0 = fp;
0x0006162a strd r5, r5, [sp, 8] | __asm ("strd r5, r5, [var_8h]");
0x0006162e strd r4, r3, [sp] | __asm ("strd r4, r3, [sp]");
0x00061632 mov r3, r4 | r3 = r4;
0x00061634 bl 0x69308 | fcn_00069308 (r0, r1, r2, r3, r4, r5, r6);
0x00061638 b 0x6142c | goto label_75;
| label_201:
0x0006163a ldr.w r0, [fp] | r0 = *(fp);
0x0006163e ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00061640 bl 0x1611c | fcn_0001611c (r0, r1);
0x00061644 b.w 0x606c4 | goto label_76;
| label_222:
0x00061648 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006164a ldr r2, [r2, 0x28] | r2 = *((r2 + 0x28));
0x0006164c ldr r1, [r2, 0xc] | r1 = *((r2 + 0xc));
0x0006164e cmp r1, 0 |
| if (r1 < 0) {
0x00061650 blt.w 0x60b8e | goto label_77;
| }
0x00061654 ldr r2, [r2] | r2 = *(r2);
0x00061656 ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x00061658 str r2, [sp, 0x2c] | var_2ch = r2;
0x0006165a cmp r2, 0 |
| if (r2 == 0) {
0x0006165c beq.w 0x617cc | goto label_251;
| }
0x00061660 ldr r4, [r2, 8] | r4 = *((r2 + 8));
| if (r4 != 0) {
0x00061662 cbz r4, 0x61670 |
0x00061664 mov r1, r4 | r1 = r4;
0x00061666 mov r2, r3 | r2 = r3;
0x00061668 mov r0, sb | r0 = sb;
0x0006166a bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x0006166e mov r4, r0 | r4 = r0;
| }
0x00061670 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00061672 movs r2, 0 | r2 = 0;
0x00061674 mov r0, sb | r0 = sb;
0x00061676 bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x0006167a mov r2, r4 | r2 = r4;
0x0006167c mov r1, r0 | r1 = r0;
0x0006167e mov r0, fp | r0 = fp;
0x00061680 bl 0x1c2ac | r0 = fcn_0001c2ac (r0, r1, r2);
0x00061684 subs r3, r0, 0 | r3 = r0 - 0;
0x00061686 str r3, [sp, 0x2c] | var_2ch = r3;
0x00061688 ite ne |
| if (r3 == r0) {
0x0006168a movne r3, 0x500 | r3 = 0x500;
| }
| if (r3 == r0) {
0x0006168e movs r3, 0 | r3 = 0;
| }
0x00061690 str r3, [sp, 0x30] | var_30h = r3;
0x00061692 b.w 0x60b90 | goto label_78;
| label_234:
0x00061696 ldr.w r3, [fp] | r3 = *(fp);
0x0006169a ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0006169c lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x0006169e itt pl |
| if (r1 < r3) {
0x000616a0 movpl r3, 1 | r3 = 1;
| }
| if (r1 < r3) {
0x000616a2 strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x000616a6 b 0x60fc4 | goto label_79;
| label_233:
0x000616a8 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000616aa cmp r0, 0 |
| if (r0 == 0) {
0x000616ac beq.w 0x5f968 | goto label_52;
| }
0x000616b0 ldr.w lr, [r4, 0x30] |
0x000616b4 cmp.w lr, 0 |
| if (lr != 0) {
0x000616b8 bne.w 0x5f7e4 | goto label_7;
| }
0x000616bc b.w 0x5f968 | goto label_52;
| label_231:
0x000616c0 mov r2, r3 | r2 = r3;
0x000616c2 movs r1, 0x11 | r1 = 0x11;
0x000616c4 mov r0, sl | r0 = sl;
0x000616c6 str r3, [sp] | *(sp) = r3;
0x000616c8 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000616cc str r0, [sp, 0x50] | var_50h = r0;
0x000616ce b.w 0x60e76 | goto label_80;
| label_225:
0x000616d2 ldr r3, [pc, 0x344] |
0x000616d4 add r3, pc | r3 = 0xc30f2;
0x000616d6 b.w 0x60c90 | goto label_81;
| label_224:
0x000616da ldr r2, [sp, 0x24] | r2 = var_24h;
0x000616dc cmp r2, 0 |
| if (r2 == 0) {
0x000616de beq.w 0x61886 | goto label_252;
| }
0x000616e2 ldr.w r2, [sb, 0x4c] | r2 = *((sb + 0x4c));
0x000616e6 ands r2, r2, 4 | r2 &= 4;
| if (r2 != r2) {
0x000616ea bne.w 0x61cb6 | goto label_253;
| }
0x000616ee ldr r1, [sp, 0x40] | r1 = var_40h;
0x000616f0 ldrb.w r1, [r1, 0x30] | r1 = *((r1 + 0x30));
0x000616f4 lsls r5, r1, 0x1c | r5 = r1 << 0x1c;
0x000616f6 ubfx r0, r1, 3, 1 | r0 = (r1 >> 3) & ((1 << 1) - 1);
| if (r5 >= r1) {
0x000616fa bpl 0x617c0 | goto label_254;
| }
0x000616fc ldr r1, [sp, 0xe0] | r1 = var_e0h;
0x000616fe mov r0, sl | r0 = sl;
0x00061700 mov r5, r2 | r5 = r2;
0x00061702 str r2, [sp, 0xcc] | var_cch = r2;
0x00061704 str r2, [sp, 0x24] | var_24h = r2;
0x00061706 bl 0x1aa40 | fcn_0001aa40 (r0, r1);
0x0006170a ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0006170e str r3, [sp, 0x30] | var_30h = r3;
0x00061710 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00061712 ldr r3, [r3] | r3 = *(r3);
0x00061714 b 0x611f4 | goto label_82;
| label_237:
0x00061716 ldr.w r4, [fp, 0x2c] | r4 = *(arg_2ch);
0x0006171a adds r4, 1 | r4++;
0x0006171c str.w r4, [fp, 0x2c] | __asm ("str.w r4, [arg_2ch]");
0x00061720 b 0x61140 | goto label_83;
| label_238:
0x00061722 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00061726 adds r4, r3, 1 | r4 = r3 + 1;
0x00061728 str.w r4, [fp, 0x2c] | __asm ("str.w r4, [arg_2ch]");
0x0006172c b 0x611a2 | goto label_84;
| label_151:
0x0006172e mov r1, r3 | r1 = r3;
0x00061730 b.w 0x5fca0 | goto label_85;
| label_236:
0x00061734 cmp r2, 1 |
| if (r2 != 1) {
0x00061736 bne.w 0x6077c | goto label_70;
| }
0x0006173a ldr r2, [r1, 0x28] | r2 = *((r1 + 0x28));
0x0006173c ldr r1, [r2] | r1 = *(r2);
0x0006173e ldr r6, [r1, 0x14] | r6 = *((r1 + 0x14));
0x00061740 cmp r6, 0 |
| if (r6 == 0) {
0x00061742 beq.w 0x60786 | goto label_86;
| }
0x00061746 ldr r3, [r6] | r3 = *(r6);
0x00061748 cmp r3, 1 |
0x0006174a str r3, [sp, 0x30] | var_30h = r3;
| if (r3 != 1) {
0x0006174c bne.w 0x60786 | goto label_86;
| }
0x00061750 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00061752 lsls r4, r3, 7 | r4 = r3 << 7;
| if (r4 < r3) {
0x00061754 bmi.w 0x60786 | goto label_86;
| }
0x00061758 ldr.w r3, [sb, 0x4c] | r3 = *((sb + 0x4c));
0x0006175c lsls r0, r3, 0xf | r0 = r3 << 0xf;
| if (r0 < r3) {
0x0006175e bmi.w 0x60786 | goto label_86;
| }
0x00061762 ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x00061764 ldr r4, [pc, 0x2b4] |
0x00061766 ldr r1, [pc, 0x2b8] |
0x00061768 add.w ip, r0, -1 |
0x0006176c add r4, pc | r4 = 0xc318c;
0x0006176e add r1, pc | r1 = 0xc3194;
| do {
| label_110:
0x00061770 ldrb r3, [ip, 1]! | r3 = *((ip += 1));
0x00061774 ldrb r2, [r4], 1 | r2 = *(r4);
| r4++;
0x00061778 cmp r3, r2 |
| if (r3 == r2) {
0x0006177a beq.w 0x61ca0 | goto label_255;
| }
0x0006177e add r3, r1 | r3 += r1;
0x00061780 add r2, r1 | r2 += r1;
0x00061782 ldrb.w lr, [r3, 0x140] |
0x00061786 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x0006178a cmp lr, r3 |
0x0006178c beq 0x61770 |
| } while (lr == r3);
0x0006178e ldr r1, [pc, 0x294] |
0x00061790 add r1, pc | r1 = 0xc31ba;
0x00061792 bl 0x8940 | r0 = fcn_00008940 (r0);
0x00061796 cmp r0, 0 |
| if (r0 != 0) {
0x00061798 bne.w 0x60782 | goto label_87;
| }
0x0006179c movs r4, 1 | r4 = 1;
0x0006179e movs r3, 2 | r3 = 2;
0x000617a0 str r3, [sp, 0x30] | var_30h = r3;
| label_111:
0x000617a2 mov r1, r6 | r1 = r6;
0x000617a4 movs r2, 0 | r2 = 0;
0x000617a6 mov r0, sb | r0 = sb;
0x000617a8 bl 0x314cc | r0 = fcn_000314cc (r0, r1, r2);
0x000617ac mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x000617ae cbz r0, 0x617b2 |
0x000617b0 strb r4, [r0, 0x10] | *((r0 + 0x10)) = r4;
| }
0x000617b2 ldrb.w r3, [sp, 0x30] | r3 = var_30h;
0x000617b6 str r3, [sp, 0x34] | var_34h = r3;
0x000617b8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000617ba ldr r2, [r3, 0x2c] | r2 = *((r3 + 0x2c));
0x000617bc b.w 0x6077c | goto label_70;
| label_254:
0x000617c0 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x000617c4 mov r5, r0 | r5 = r0;
0x000617c6 str r0, [sp, 0x24] | var_24h = r0;
0x000617c8 str r2, [sp, 0x30] | var_30h = r2;
0x000617ca b 0x611f4 | goto label_82;
| label_251:
0x000617cc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000617ce b.w 0x60b8e | goto label_77;
| label_250:
0x000617d2 ldr r2, [r6, 0x24] | r2 = *((r6 + 0x24));
0x000617d4 ldr r3, [r6] | r3 = *(r6);
0x000617d6 lsls r2, r2, 0x18 | r2 <<= 0x18;
| if (r2 < r2) {
0x000617d8 bpl 0x617e8 |
0x000617da ldr r2, [sp, 0x20] | r2 = var_20h;
0x000617dc ldrb.w r2, [r2, 0x37] | r2 = *((r2 + 0x37));
0x000617e0 and r2, r2, 3 | r2 &= 3;
0x000617e4 cmp r2, 2 |
| if (r2 == 2) {
0x000617e6 beq 0x61858 | goto label_256;
| }
| }
0x000617e8 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000617ea ldr r1, [r2] | r1 = *(r2);
0x000617ec ldr r2, [pc, 0x238] |
0x000617ee add r2, pc | r2 = 0xc321a;
| label_91:
0x000617f0 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x000617f4 mov r0, fp | r0 = fp;
0x000617f6 ldr r2, [pc, 0x234] |
0x000617f8 movs r1, 0 | r1 = 0;
0x000617fa add r2, pc | r2 = 0xc322c;
0x000617fc bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00061800 b 0x6160e | goto label_88;
| label_138:
0x00061802 str r1, [sp, 0x40] | var_40h = r1;
0x00061804 b.w 0x5f9a4 | goto label_89;
| label_227:
0x00061808 ldr r6, [sp, 0x3c] | r6 = var_3ch;
0x0006180a b.w 0x60cc4 | goto label_90;
| label_226:
0x0006180e ldr r3, [pc, 0x220] |
0x00061810 add r3, pc | r3 = 0xc3246;
0x00061812 b.w 0x60c90 | goto label_81;
| label_93:
0x00061816 mov r3, r5 | r3 = r5;
0x00061818 ldr r5, [sp, 0x24] | r5 = var_24h;
0x0006181a movs r2, 1 | r2 = 1;
0x0006181c movs r1, 0x62 | r1 = 0x62;
0x0006181e str r4, [sp] | *(sp) = r4;
0x00061820 mov r0, sl | r0 = sl;
0x00061822 str r2, [sp, 4] | var_4h = r2;
0x00061824 mov r2, r5 | r2 = r5;
0x00061826 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0006182a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006182c movs r4, 0 | r4 = 0;
0x0006182e mov r2, r5 | r2 = r5;
0x00061830 movs r1, 0x5e | r1 = 0x5e;
0x00061832 mov r0, sl | r0 = sl;
0x00061834 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x00061836 str r4, [sp] | *(sp) = r4;
0x00061838 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0006183a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006183e mov r3, r4 | r3 = r4;
0x00061840 mov r2, r5 | r2 = r5;
0x00061842 movs r1, 0x76 | r1 = 0x76;
0x00061844 mov r0, sl | r0 = sl;
0x00061846 str r4, [sp] | *(sp) = r4;
0x00061848 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006184c ldrb.w r3, [fp, 0xc7] | r3 = *(arg_c7h);
0x00061850 cmp r3, 2 |
| if (r3 != 2) {
0x00061852 bne.w 0x6160e | goto label_88;
| }
0x00061856 ldr r3, [r6] | r3 = *(r6);
| label_256:
0x00061858 ldr r2, [pc, 0x1d8] |
0x0006185a add r2, pc | r2 = 0xc3292;
0x0006185c mov r1, r2 | r1 = r2;
0x0006185e b 0x617f0 | goto label_91;
| label_249:
0x00061860 cmp r2, 0 |
| if (r2 == 0) {
0x00061862 beq.w 0x61cf2 | goto label_257;
| }
0x00061866 ldrsh.w r0, [r2, 0x30] | r0 = *((r2 + 0x30));
0x0006186a cmp r0, r1 |
0x0006186c it gt |
| if (r0 <= r1) {
0x0006186e movgt r2, r3 | r2 = r3;
| }
0x00061870 b 0x615a2 | goto label_92;
| label_245:
0x00061872 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x00061874 ldrb.w r3, [r3, 0x2d] | r3 = *((r3 + 0x2d));
0x00061878 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 < r3) {
0x0006187a bmi 0x61816 | goto label_93;
| }
0x0006187c ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0006187e cmp r3, 0 |
| if (r3 == 0) {
0x00061880 beq 0x61816 | goto label_93;
| }
0x00061882 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00061884 b 0x61586 | goto label_94;
| label_252:
0x00061886 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0006188a ldr r5, [sp, 0x24] | r5 = var_24h;
0x0006188c str r2, [sp, 0x30] | var_30h = r2;
0x0006188e b 0x611f4 | goto label_82;
| label_243:
0x00061890 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00061892 ldr r4, [r3, 0x24] | r4 = *((r3 + 0x24));
| if (r4 == 0) {
0x00061894 cbz r4, 0x618cc | goto label_258;
| }
0x00061896 ldr.w ip, [sp, 0x1c] | ip = var_1ch;
0x0006189a movs r1, 0 | r1 = 0;
0x0006189c movs r6, 0x14 | r6 = 0x14;
0x0006189e b 0x618c0 |
| while (r1 < r2) {
0x000618a0 mul r3, r6, r1 | r3 = r6 * r1;
0x000618a4 ldr.w lr, [ip, 0x28] |
0x000618a8 ldr.w r4, [lr, r3] | r4 = *((lr + r3));
0x000618ac add r3, lr | r3 += lr;
0x000618ae ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000618b0 ands r4, r4, 0x1000000 | r4 &= 0x1000000;
| if (r4 == r4) {
0x000618b4 bne 0x618be |
0x000618b6 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000618b8 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000618ba lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 < r3) {
0x000618bc bmi 0x618d0 | goto label_96;
| }
| }
0x000618be adds r1, 1 | r1++;
0x000618c0 cmp r1, r2 |
0x000618c2 blt 0x618a0 |
| }
| if (r1 == r2) {
0x000618c4 beq 0x6196e | goto label_259;
| }
0x000618c6 movs r4, 0 | r4 = 0;
0x000618c8 mov r6, r4 | r6 = r4;
0x000618ca b 0x618d2 | goto label_97;
| label_258:
0x000618cc cmp r2, 1 |
| if (r2 == 1) {
0x000618ce beq 0x61952 | goto label_260;
| }
| label_96:
0x000618d0 mov r6, r4 | r6 = r4;
| label_97:
0x000618d2 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000618d4 mov r0, fp | r0 = fp;
0x000618d6 bl 0x300c4 | fcn_000300c4 (r0, r1);
0x000618da ldr r3, [sp, 0x28] | r3 = var_28h;
0x000618dc mov r1, r5 | r1 = r5;
0x000618de ldr r2, [sp, 0x40] | r2 = var_40h;
0x000618e0 mov r0, fp | r0 = fp;
0x000618e2 str r3, [sp] | *(sp) = r3;
0x000618e4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000618e6 orrs r3, r6 | r3 |= r6;
0x000618e8 str r3, [sp, 4] | var_4h = r3;
0x000618ea movs r3, 0 | r3 = 0;
0x000618ec str r3, [sp, 8] | var_8h = r3;
0x000618ee mov r3, r8 | r3 = r8;
0x000618f0 bl 0x6b788 | r0 = fcn_0006b788 (r0, r1, r2, r3, r4, r5, r6);
0x000618f4 mov r5, r0 | r5 = r0;
0x000618f6 cmp r0, 0 |
| if (r0 == 0) {
0x000618f8 beq.w 0x61062 | goto label_95;
| }
0x000618fc ldrb.w r6, [r0, 0x2f] | r6 = *((r0 + 0x2f));
0x00061900 mov r1, r4 | r1 = r4;
0x00061902 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00061904 mov r0, fp | r0 = fp;
0x00061906 mov r3, r6 | r3 = r6;
0x00061908 bl 0x6abe4 | fcn_0006abe4 (r0, r1, r2, r3);
0x0006190c subs r3, r6, 1 | r3 = r6 - 1;
0x0006190e cmp r3, 1 |
| if (r3 <= 1) {
0x00061910 bhi 0x61924 |
0x00061912 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00061914 mov r1, r6 | r1 = r6;
0x00061916 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x0006191a ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x0006191c ldrd r2, r3, [r2, 0xc] | __asm ("ldrd r2, r3, [r2, 0xc]");
0x00061920 bl 0x1c5c4 | fcn_0001c5c4 (r0, r1, r2, r3, r4, r5);
| }
0x00061924 cmp r4, 0 |
| if (r4 != 0) {
0x00061926 bne 0x619c6 | goto label_261;
| }
| label_99:
0x00061928 ldr r3, [sp, 0x34] | r3 = var_34h;
| if (r3 != 0) {
0x0006192a cbnz r3, 0x61986 | goto label_262;
| }
| label_98:
0x0006192c mov r0, r5 | r0 = r5;
0x0006192e bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x00061932 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00061934 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x00061938 bl 0x2b090 | fcn_0002b090 (r0, r1, r2);
0x0006193c b 0x6160e | goto label_88;
| label_247:
0x0006193e ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x00061940 str r1, [sp, 0x20] | var_20h = r1;
0x00061942 ldrb.w r3, [r3, 0x2d] | r3 = *((r3 + 0x2d));
0x00061946 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x00061948 bmi.w 0x61816 | goto label_93;
| }
0x0006194c mov r3, r2 | r3 = r2;
0x0006194e ldr r2, [sp, 0x20] | r2 = var_20h;
0x00061950 b 0x61586 | goto label_94;
| label_260:
0x00061952 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00061954 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x00061956 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00061958 cmp r2, 0 |
| if (r2 < 0) {
0x0006195a blt 0x618d0 | goto label_96;
| }
0x0006195c ldr r3, [r3] | r3 = *(r3);
0x0006195e ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00061960 cmp r3, 0 |
0x00061962 str r3, [sp, 0x28] | var_28h = r3;
0x00061964 ite ne |
| if (r3 == 0) {
0x00061966 movne r6, 0x500 | r6 = 0x500;
| }
| if (r3 == 0) {
0x0006196a movs r6, 0 | r6 = 0;
| }
0x0006196c b 0x618d2 | goto label_97;
| label_259:
0x0006196e adds r4, r0, 1 | r4 = r0 + 1;
0x00061970 movs r2, 0 | r2 = 0;
0x00061972 str.w r4, [fp, 0x2c] | __asm ("str.w r4, [arg_2ch]");
0x00061976 mov r3, r4 | r3 = r4;
0x00061978 movs r1, 0x45 | r1 = 0x45;
0x0006197a mov r0, sl | r0 = sl;
0x0006197c str r2, [sp] | *(sp) = r2;
0x0006197e mov r6, r2 | r6 = r2;
0x00061980 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00061984 b 0x618d2 | goto label_97;
| label_262:
0x00061986 ldrb.w r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x0006198a lsls r4, r3, 0x1d | r4 = r3 << 0x1d;
| if (r4 >= r3) {
0x0006198c bpl 0x6192c | goto label_98;
| }
0x0006198e ldrsb.w r3, [r5, 0x2d] | r3 = *((r5 + 0x2d));
0x00061992 cmp r3, 0 |
| if (r3 == 0) {
0x00061994 beq 0x6192c | goto label_98;
| }
0x00061996 ldrb.w r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0006199a add.w r4, r5, 0x338 | r4 = r5 + 0x338;
0x0006199e movs r1, 0x58 | r1 = 0x58;
0x000619a0 subs r3, 1 | r3--;
0x000619a2 b 0x619b2 |
| while (r6 != r3) {
0x000619a4 mul r2, r1, r3 | r2 = r1 * r3;
0x000619a8 ldr r0, [r4, r2] | r0 = *((r4 + r2));
0x000619aa ldr r0, [r0, 0x24] | r0 = *((r0 + 0x24));
0x000619ac lsls r0, r0, 0x1d | r0 <<= 0x1d;
| if (r0 < r0) {
0x000619ae bmi 0x619d8 | goto label_263;
| }
0x000619b0 subs r3, 1 | r3--;
0x000619b2 adds r6, r3, 1 | r6 = r3 + 1;
0x000619b4 bne 0x619a4 |
| }
0x000619b6 movs r2, 0 | r2 = 0;
0x000619b8 movs r1, 0xb | r1 = 0xb;
0x000619ba str r2, [sp] | *(sp) = r2;
0x000619bc mov r0, sl | r0 = sl;
0x000619be ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x000619c0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000619c4 b 0x6192c | goto label_98;
| label_261:
0x000619c6 movs r2, 0 | r2 = 0;
0x000619c8 mov r3, r4 | r3 = r4;
0x000619ca str r2, [sp] | *(sp) = r2;
0x000619cc movs r1, 0x45 | r1 = 0x45;
0x000619ce movs r2, 1 | r2 = 1;
0x000619d0 mov r0, sl | r0 = sl;
0x000619d2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000619d6 b 0x61928 | goto label_99;
| label_263:
0x000619d8 adds r3, r5, r2 | r3 = r5 + r2;
0x000619da movs r2, 0 | r2 = 0;
0x000619dc str r2, [sp] | *(sp) = r2;
0x000619de movs r1, 0xb | r1 = 0xb;
0x000619e0 ldr.w r3, [r3, 0x300] | r3 = *((r3 + 0x300));
0x000619e4 mov r0, sl | r0 = sl;
0x000619e6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000619ea b 0x6192c | goto label_98;
| label_239:
0x000619ec ldr r1, [sp, 0xe0] | r1 = var_e0h;
0x000619ee mov r0, sl | r0 = sl;
0x000619f0 str r3, [sp, 0xcc] | var_cch = r3;
0x000619f2 bl 0x1aa40 | fcn_0001aa40 (r0, r1);
0x000619f6 b.w 0x611d6 | goto label_100;
| label_145:
0x00061a38 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00061a3a ldr r5, [sp, 0x50] | r5 = var_50h;
| if (r3 != 0) {
0x00061a3c cbz r3, 0x61a46 |
0x00061a3e mov r1, r3 | r1 = r3;
0x00061a40 mov r0, sl | r0 = sl;
0x00061a42 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00061a46 ldrb.w r3, [sl, 0x53] | r3 = *((sl + 0x53));
0x00061a4a cmp r3, 0 |
| if (r3 != 0) {
0x00061a4c bne.w 0x61c5a | goto label_264;
| }
0x00061a50 movs r3, 0x48 | r3 = 0x48;
0x00061a52 mla r3, r3, r8, r5 | __asm ("mla r3, r3, r8, r5");
0x00061a56 ldr r6, [r3, 0x18] | r6 = *((r3 + 0x18));
| if (r6 != 0) {
0x00061a58 cbz r6, 0x61a70 |
0x00061a5a ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x00061a5c cmp r3, 1 |
| if (r3 == 1) {
0x00061a5e beq.w 0x61cc6 | goto label_265;
| }
0x00061a62 subs r3, 1 | r3--;
0x00061a64 str r3, [r6, 0x20] | *((r6 + 0x20)) = r3;
| label_112:
0x00061a66 movs r3, 0x48 | r3 = 0x48;
0x00061a68 movs r2, 0 | r2 = 0;
0x00061a6a mla r3, r3, r8, r5 | __asm ("mla r3, r3, r8, r5");
0x00061a6e str r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
| }
0x00061a70 ldr r2, [pc, 0x298] |
0x00061a72 movs r3, 0x48 | r3 = 0x48;
0x00061a74 mul r3, r3, r8 | r3 *= r8;
0x00061a78 ldr r6, [sp, 0x44] | r6 = var_44h;
0x00061a7a mov r4, r7 | r4 = r7;
0x00061a7c str r7, [sp, 0x54] | var_54h = r7;
0x00061a7e add r2, pc | r2 = 0xc378e;
0x00061a80 str r5, [sp, 0x6c] | var_6ch = r5;
0x00061a82 str r2, [sp, 0x64] | var_64h = r2;
0x00061a84 mov.w r2, -1 | r2 = -1;
0x00061a88 str r2, [sp, 0x4c] | var_4ch = r2;
0x00061a8a add r2, sp, 0xac | r2 += var_ach;
0x00061a8c mov r7, r2 | r7 = r2;
0x00061a8e str r3, [sp, 0x5c] | var_5ch = r3;
0x00061a90 adds r3, 8 | r3 += 8;
0x00061a92 str r2, [sp, 0x68] | var_68h = r2;
0x00061a94 str r3, [sp, 0x60] | var_60h = r3;
0x00061a96 str.w r8, [sp, 0x50] | __asm ("str.w r8, [var_50h]");
0x00061a9a str.w sl, [sp, 0x3c] | __asm ("str.w sl, [var_3ch]");
| label_101:
0x00061a9e ldr r3, [sp, 0x54] | r3 = var_54h;
0x00061aa0 ldr.w r8, [r6, 0x20] | r8 = *((r6 + 0x20));
0x00061aa4 ldr r5, [r4, 0x20] | r5 = *((r4 + 0x20));
0x00061aa6 cmp r3, r4 |
0x00061aa8 ittte eq |
| if (r3 != r4) {
0x00061aaa ldreq r2, [sp, 0x6c] | r2 = var_6ch;
| }
| if (r3 != r4) {
0x00061aac moveq r3, 0x48 | r3 = 0x48;
| }
| if (r3 != r4) {
0x00061aae ldreq r1, [sp, 0x50] | r1 = var_50h;
| }
| if (r3 == r4) {
0x00061ab0 movne r3, 0 | r3 = 0;
| }
0x00061ab2 ldr.w sb, [r8] | sb = *(r8);
0x00061ab6 itt eq |
| if (r3 == r4) {
0x00061ab8 mlaeq r3, r3, r1, r2 | __asm ("mlaeq r3, r3, r1, r2");
| }
| if (r3 == r4) {
0x00061abc ldrb.w r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
| }
0x00061ac0 cmp.w sb, 1 |
0x00061ac4 str r3, [sp, 0x58] | var_58h = r3;
| if (sb > 1) {
0x00061ac6 bgt.w 0x61c40 | goto label_266;
| }
| if (sb != 1) {
0x00061aca bne 0x61b22 | goto label_267;
| }
| label_105:
0x00061acc ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00061ace add.w r8, r8, 8 | r8 += 8;
0x00061ad2 add.w sl, r5, r3 | sl = r5 + r3;
0x00061ad6 movs r3, 0 | r3 = 0;
0x00061ad8 str r3, [sp, 0x48] | var_48h = r3;
0x00061ada mov r3, r7 | r3 = r7;
0x00061adc mov r7, r6 | r7 = r6;
0x00061ade mov r6, r4 | r6 = r4;
0x00061ae0 mov r4, sl | r4 = sl;
0x00061ae2 mov sl, r3 | sl = r3;
| do {
0x00061ae4 ldr r1, [r4, 0x38] | r1 = *((r4 + 0x38));
| if (r1 != 0) {
0x00061ae6 cbz r1, 0x61aee |
0x00061ae8 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00061aea bl 0x17b14 | fcn_00017b14 (r0, r1, r2);
| }
0x00061aee ldr r3, [sp, 0x48] | r3 = var_48h;
0x00061af0 mov r1, r8 | r1 = r8;
0x00061af2 movs r2, 0x48 | r2 = 0x48;
0x00061af4 add.w r0, r4, 8 | r0 = r4 + 8;
0x00061af8 adds r4, 0x48 | r4 += 0x48;
0x00061afa adds r3, 1 | r3++;
0x00061afc str r3, [sp, 0x48] | var_48h = r3;
0x00061afe blx 0x7dcc | fcn_00007dcc ();
0x00061b02 ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x00061b06 mov r0, r8 | r0 = r8;
0x00061b08 movs r2, 0x48 | r2 = 0x48;
0x00061b0a movs r1, 0 | r1 = 0;
0x00061b0c add.w r8, r8, 0x48 | r8 += 0x48;
0x00061b10 str r3, [sp, 0x4c] | var_4ch = r3;
0x00061b12 blx 0x8264 | fcn_00008264 ();
0x00061b16 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00061b18 cmp sb, r3 |
0x00061b1a bgt 0x61ae4 |
| } while (sb > r3);
0x00061b1c mov r4, r6 | r4 = r6;
0x00061b1e mov r6, r7 | r6 = r7;
0x00061b20 mov r7, sl | r7 = sl;
| label_267:
0x00061b22 ldr r2, [sp, 0x50] | r2 = var_50h;
0x00061b24 movs r3, 0x48 | r3 = 0x48;
0x00061b26 mla r3, r3, r2, r5 | __asm ("mla r3, r3, r2, r5");
0x00061b2a ldr r2, [sp, 0x58] | r2 = var_58h;
0x00061b2c strb.w r2, [r3, 0x2c] | *((r3 + 0x2c)) = r2;
0x00061b30 ldr r2, [r6, 0x30] | r2 = *((r6 + 0x30));
| if (r2 != 0) {
0x00061b32 cbz r2, 0x61b3e |
0x00061b34 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00061b36 ands r3, r3, 0x400000 | r3 &= 0x400000;
| if (r3 == r3) {
0x00061b3a beq.w 0x61c74 | goto label_268;
| }
| }
| label_108:
0x00061b3e movs r3, 0 | r3 = 0;
0x00061b40 ldr r2, [r6, 0x24] | r2 = *((r6 + 0x24));
0x00061b42 str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
0x00061b44 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00061b46 cmp r3, 0 |
| if (r3 != 0) {
0x00061b48 bne.w 0x61c66 | goto label_269;
| }
| if (r2 != 0) {
| label_107:
0x00061b4c cbz r2, 0x61b5e |
0x00061b4e ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00061b50 cmp r3, 0 |
| if (r3 == 0) {
0x00061b52 beq 0x61c3c | goto label_270;
| }
0x00061b54 movs r1, 0x2c | r1 = 0x2c;
0x00061b56 mov r0, fp | r0 = fp;
0x00061b58 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00061b5c str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
| }
| label_104:
0x00061b5e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00061b60 ldrb.w r2, [r3, 0x53] | r2 = *((r3 + 0x53));
0x00061b64 cmp r2, 0 |
| if (r2 == 0) {
0x00061b66 beq 0x61c1e | goto label_271;
| }
| label_103:
0x00061b68 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00061b6a and r2, r3, 0x100 | r2 = r3 & 0x100;
0x00061b6e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00061b70 orrs r3, r2 | r3 |= r2;
0x00061b72 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x00061b74 ldr r3, [r6, 0x3c] | r3 = *((r6 + 0x3c));
| if (r3 != 0) {
0x00061b76 cbz r3, 0x61b7e |
0x00061b78 str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x00061b7a movs r3, 0 | r3 = 0;
0x00061b7c str r3, [r6, 0x3c] | *((r6 + 0x3c)) = r3;
| }
0x00061b7e cmp.w sb, 0 |
| if (sb <= 0) {
0x00061b82 ble 0x61bbe | goto label_272;
| }
0x00061b84 ldr r3, [sp, 0x60] | r3 = var_60h;
0x00061b86 add r5, r3 | r5 += r3;
0x00061b88 movs r3, 0 | r3 = 0;
0x00061b8a mov r8, r3 | r8 = r3;
| do {
0x00061b8c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
| if (r3 != 0) {
0x00061b8e cbz r3, 0x61bb4 |
0x00061b90 movs r3, 0 | r3 = 0;
0x00061b92 mov r1, r4 | r1 = r4;
0x00061b94 strd r3, r3, [r7] | __asm ("strd r3, r3, [r7]");
0x00061b98 mov r0, r7 | r0 = r7;
0x00061b9a strd r3, r3, [r7, 8] | __asm ("strd r3, r3, [var_b4h]");
0x00061b9e strd r3, r3, [r7, 0x10] | __asm ("strd r3, r3, [var_c0h]");
0x00061ba2 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00061ba4 str r5, [sp, 0xc4] | var_c4h = r5;
0x00061ba6 str r3, [sp, 0xb0] | var_b0h = r3;
0x00061ba8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00061baa str r3, [sp, 0xb4] | var_b4h = r3;
0x00061bac vstr d8, [r5, 0x38] | __asm ("vstr d8, [r5, 0x38]");
0x00061bb0 bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
| }
0x00061bb4 add.w r8, r8, 1 | r8++;
0x00061bb8 adds r5, 0x48 | r5 += 0x48;
0x00061bba cmp sb, r8 |
0x00061bbc bne 0x61b8c |
| } while (sb != r8);
| label_272:
0x00061bbe ldr r4, [r4, 0x34] | r4 = *((r4 + 0x34));
0x00061bc0 ldr r6, [r6, 0x34] | r6 = *((r6 + 0x34));
0x00061bc2 cmp r4, 0 |
| if (r4 != 0) {
0x00061bc4 bne.w 0x61a9e | goto label_101;
| }
| do {
0x00061bc8 ldr r3, [pc, 0x144] |
0x00061bca ldr.w sl, [sp, 0x3c] | sl = var_3ch;
0x00061bce ldr r7, [sp, 0x54] | r7 = var_54h;
0x00061bd0 add r3, pc | r3 = 0xc38e4;
0x00061bd2 str.w fp, [sp, 0xac] | __asm ("str.w fp, [var_ach]");
0x00061bd6 str r3, [sp, 0xb0] | var_b0h = r3;
0x00061bd8 ldr r3, [pc, 0x138] |
0x00061bda add r3, pc | r3 = 0xc38f2;
0x00061bdc str r3, [sp, 0xb4] | var_b4h = r3;
0x00061bde movs r3, 0 | r3 = 0;
0x00061be0 strd r3, r3, [sp, 0xb8] | __asm ("strd r3, r3, [var_b8h]");
0x00061be4 strd r3, r3, [sp, 0xc0] | __asm ("strd r3, r3, [var_c4h]");
0x00061be8 ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 != 0) {
0x00061bea cbz r3, 0x61c00 |
0x00061bec ldr r4, [sp, 0x44] | r4 = var_44h;
0x00061bee ldr r0, [sp, 0x68] | r0 = var_68h;
0x00061bf0 mov r1, r4 | r1 = r4;
0x00061bf2 bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
0x00061bf6 mov r1, r4 | r1 = r4;
0x00061bf8 mov r0, sl | r0 = sl;
0x00061bfa movs r2, 1 | r2 = 1;
0x00061bfc bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
| }
| label_106:
0x00061c00 ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
| if (r2 == 0) {
0x00061c04 cbnz r2, 0x61c10 |
0x00061c06 ldr r5, [r7, 0x20] | r5 = *((r7 + 0x20));
0x00061c08 mov.w r8, -1 | r8 = -1;
0x00061c0c b.w 0x5f7e4 | goto label_7;
| }
0x00061c10 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x00061c14 ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x00061c18 add r3, r2 | r3 += r2;
0x00061c1a b.w 0x5fb66 | goto label_102;
| label_271:
0x00061c1e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00061c20 mov r1, r4 | r1 = r4;
0x00061c22 mov r0, r7 | r0 = r7;
0x00061c24 str.w fp, [sp, 0xac] | __asm ("str.w fp, [var_ach]");
0x00061c28 str r3, [sp, 0xb0] | var_b0h = r3;
0x00061c2a ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00061c2c str r3, [sp, 0xb4] | var_b4h = r3;
0x00061c2e ldr r3, [sp, 0x40] | r3 = var_40h;
0x00061c30 str r3, [sp, 0xb8] | var_b8h = r3;
0x00061c32 ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00061c34 str r3, [sp, 0xbc] | var_bch = r3;
0x00061c36 bl 0x31ecc | fcn_00031ecc (r0, r1, r2);
0x00061c3a b 0x61b68 | goto label_103;
| label_270:
0x00061c3c str r2, [r4, 0x24] | *((r4 + 0x24)) = r2;
0x00061c3e b 0x61b5e | goto label_104;
| label_266:
0x00061c40 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00061c42 mov r1, r5 | r1 = r5;
0x00061c44 add.w r2, sb, -1 | r2 = sb + -1;
0x00061c48 mov r0, fp | r0 = fp;
0x00061c4a adds r3, 1 | r3++;
0x00061c4c bl 0x25b3c | r0 = fcn_00025b3c (r0, r1, r2, r3);
0x00061c50 mov r5, r0 | r5 = r0;
0x00061c52 cmp r0, 0 |
0x00061c54 beq 0x61bc8 |
| } while (r0 == 0);
0x00061c56 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00061c58 b 0x61acc | goto label_105;
| label_264:
0x00061c5a movs r3, 0x48 | r3 = 0x48;
0x00061c5c ldr r2, [sp, 0x44] | r2 = var_44h;
0x00061c5e mla r3, r3, r8, r5 | __asm ("mla r3, r3, r8, r5");
0x00061c62 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x00061c64 b 0x61c00 | goto label_106;
| label_269:
0x00061c66 mov r0, r2 | r0 = r2;
0x00061c68 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x00061c6a str r2, [sp, 0x48] | var_48h = r2;
0x00061c6c bl 0x9f28 | fcn_00009f28 (r0, r1);
0x00061c70 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00061c72 b 0x61b4c | goto label_107;
| label_268:
0x00061c74 mov r1, r2 | r1 = r2;
0x00061c76 ldr r0, [r1], 0x14 | r0 = *(r1);
| r1 += 0x14;
0x00061c7a b 0x61c8a |
| while (r3 < r0) {
0x00061c7c lsl.w ip, r3, 4 |
0x00061c80 adds r3, 1 | r3++;
0x00061c82 mov.w lr, 0 | lr = 0;
0x00061c86 strh.w lr, [r1, ip] |
0x00061c8a cmp r3, r0 |
0x00061c8c blt 0x61c7c |
| }
0x00061c8e movs r3, 0 | r3 = 0;
0x00061c90 str r2, [r4, 0x30] | *((r4 + 0x30)) = r2;
0x00061c92 str r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x00061c94 b 0x61b3e | goto label_108;
| label_244:
0x00061c96 mov.w r4, 0x8000 |
0x00061c9a movt r4, 0xffff | r4 = 0xNaN;
0x00061c9e b 0x61524 | goto label_109;
| label_255:
0x00061ca0 cmp r3, 0 |
| if (r3 != 0) {
0x00061ca2 bne.w 0x61770 | goto label_110;
| }
0x00061ca6 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00061ca8 bl 0x9c80 | r0 = fcn_00009c80 (r0);
0x00061cac subs r4, r0, 0 | r4 = r0 - 0;
0x00061cae it ne |
| if (r4 == r0) {
0x00061cb0 movne r4, 1 | r4 = 1;
| }
0x00061cb2 lsls r4, r4, 1 | r4 <<= 1;
0x00061cb4 b 0x617a2 | goto label_111;
| label_253:
0x00061cb6 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x00061cba movs r4, 0 | r4 = 0;
0x00061cbc mov r5, r4 | r5 = r4;
0x00061cbe str r4, [sp, 0x24] | var_24h = r4;
0x00061cc0 str r2, [sp, 0x30] | var_30h = r2;
0x00061cc2 b.w 0x611f4 | goto label_82;
| label_265:
0x00061cc6 ldr.w r4, [fp, 0x74] | r4 = *(arg_74h);
0x00061cca cmp r4, 0 |
0x00061ccc it eq |
| if (r4 != 0) {
0x00061cce moveq r4, fp | r4 = fp;
| }
0x00061cd0 ldr r0, [r4] | r0 = *(r4);
| if (r0 == 0) {
0x00061cd2 cbz r0, 0x61cf6 | goto label_273;
| }
0x00061cd4 movs r2, 0xc | r2 = 0xc;
0x00061cd6 movs r3, 0 | r3 = 0;
0x00061cd8 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
| if (r0 == 0) {
| do {
0x00061cdc cbz r0, 0x61d00 | goto label_274;
| }
0x00061cde ldr.w r2, [r4, 0x108] | r2 = *((r4 + 0x108));
0x00061ce2 str r2, [r0] | *(r0) = r2;
0x00061ce4 ldr r2, [pc, 0x30] |
0x00061ce6 str.w r0, [r4, 0x108] | __asm ("str.w r0, aav.0x000000ff");
0x00061cea str r6, [r0, 4] | *((r0 + 4)) = r6;
0x00061cec add r2, pc | r2 = 0xc3a08;
0x00061cee str r2, [r0, 8] | *((r0 + 8)) = r2;
0x00061cf0 b 0x61a66 | goto label_112;
| label_257:
0x00061cf2 mov r2, r3 | r2 = r3;
0x00061cf4 b 0x615a2 | goto label_92;
| label_273:
0x00061cf6 movs r1, 0 | r1 = 0;
0x00061cf8 movs r0, 0xc | r0 = 0xc;
0x00061cfa bl 0x12abc | fcn_00012abc (r0);
0x00061cfe b 0x61cdc |
| } while (1);
| label_274:
0x00061d00 ldr r0, [r4] | r0 = *(r4);
0x00061d02 mov r1, r6 | r1 = r6;
0x00061d04 bl 0x19150 | fcn_00019150 (r0, r1);
0x00061d08 b 0x61a66 | goto label_112;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x61d1c).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x62000 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00062000 () | void fcn_00062000 (int16_t arg_1h, int16_t arg_98h, int16_t arg_9ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_bp_10h;
| 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;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int32_t var_40h_2;
| int16_t var_4fh;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int32_t var_5ch;
| int32_t var_5ch_2;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00062000 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00062004 sub sp, 0x74 |
0x00062006 strd r2, r3, [sp, 0x1c] | __asm ("strd r2, r3, [var_1ch]");
0x0006200a mov r8, r0 | r8 = r0;
0x0006200c ldr.w r2, [pc, 0xb20] | r2 = *(0x00062b30);
0x00062010 ldr r0, [sp, 0x98] | r0 = *(arg_98h);
0x00062012 ldr.w r3, [pc, 0xb20] |
0x00062016 add r2, pc | r2 += pc;
0x00062018 str r1, [sp, 0xc] | var_ch = r1;
0x0006201a str r0, [sp, 0x18] | var_18h = r0;
0x0006201c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006201e ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x00062022 ldr r1, [sp, 0x9c] | r1 = *(arg_9ch);
0x00062024 ldr r3, [r3] | r3 = *(0x62b36);
0x00062026 str r3, [sp, 0x6c] | var_6ch = r3;
0x00062028 mov.w r3, 0 | r3 = 0;
0x0006202c ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x00062030 str r2, [sp, 0x28] | var_28h = r2;
0x00062032 str r1, [sp, 0x24] | var_24h = r1;
0x00062034 str r3, [sp, 0x14] | var_14h = r3;
0x00062036 adds r3, 1 | r3++;
0x00062038 str.w r3, [r8, 0x28] | __asm ("str.w r3, [r8, 0x28]");
0x0006203c cmp r2, 0 |
| if (r2 == 0) {
0x0006203e beq.w 0x622fc | goto label_58;
| }
| label_3:
0x00062042 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00062044 and r3, r3, 4 | r3 &= 4;
0x00062048 str r3, [sp, 0x30] | var_30h = r3;
0x0006204a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006204c cmp r3, 0 |
| if (r3 == 0) {
0x0006204e beq.w 0x62310 | goto label_59;
| }
0x00062052 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062054 ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x00062056 lsls r6, r5, 0x14 | r6 = r5 << 0x14;
| if (r6 >= r5) {
0x00062058 bpl.w 0x6229e | goto label_60;
| }
0x0006205c ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0006205e ldr r6, [r3, 0x1c] | r6 = *((r3 + 0x1c));
0x00062060 ldr r4, [r6] | r4 = *(r6);
0x00062062 cmp r4, 0 |
| if (r4 <= 0) {
0x00062064 ble.w 0x6261c | goto label_61;
| }
0x00062068 movs r7, 0 | r7 = 0;
0x0006206a b 0x62076 |
| while (r0 == 0) {
0x0006206c adds r7, 1 | r7++;
0x0006206e adds r6, 0x10 | r6 += 0x10;
0x00062070 cmp r7, r4 |
| if (r7 == r4) {
0x00062072 beq.w 0x62334 | goto label_62;
| }
0x00062076 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00062078 bl 0x9c80 | r0 = fcn_00009c80 (r0);
0x0006207c cmp r0, 0 |
0x0006207e beq 0x6206c |
| }
| label_19:
0x00062080 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00062084 cmp r3, 0 |
| if (r3 != 0) {
0x00062086 bne.w 0x622a6 | goto label_4;
| }
| label_5:
0x0006208a lsls r0, r5, 0x1a | r0 = r5 << 0x1a;
| if (r0 < r5) {
0x0006208c bmi 0x620e0 | goto label_0;
| }
0x0006208e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062090 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00062092 ldr r2, [r3, 0x34] | r2 = *((r3 + 0x34));
| if (r2 != 0) {
0x00062094 cbnz r2, 0x620e0 | goto label_0;
| }
0x00062096 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00062098 tst.w r2, 9 |
| if ((r2 & 9) != 0) {
0x0006209c bne 0x620e0 | goto label_0;
| }
0x0006209e ldr r2, [r3, 0x3c] | r2 = *((r3 + 0x3c));
| if (r2 != 0) {
0x000620a0 cbnz r2, 0x620e0 | goto label_0;
| }
0x000620a2 ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
| if (r2 != 0) {
0x000620a4 cbnz r2, 0x620e0 | goto label_0;
| }
0x000620a6 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x000620a8 ldr r1, [r2] | r1 = *(r2);
0x000620aa cmp r1, 1 |
| if (r1 != 1) {
0x000620ac bne 0x620e0 | goto label_0;
| }
0x000620ae ldr r1, [r2, 0x1c] | r1 = *((r2 + 0x1c));
| if (r1 != 0) {
0x000620b0 cbnz r1, 0x620e0 | goto label_0;
| }
0x000620b2 ldr.w sl, [r2, 0x18] | sl = *((r2 + 0x18));
0x000620b6 ldr.w r2, [sl, 0x38] | r2 = *((sl + 0x38));
| if (r2 != 0) {
0x000620ba cbnz r2, 0x620e0 | goto label_0;
| }
0x000620bc ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x000620be ldr r6, [r1] | r6 = *(r1);
0x000620c0 str r1, [sp, 0x38] | var_38h = r1;
0x000620c2 cmp r6, 0 |
| if (r6 <= 0) {
0x000620c4 ble.w 0x6266a | goto label_63;
| }
0x000620c8 mov r3, r2 | r3 = r2;
0x000620ca mov r2, r1 | r2 = r1;
0x000620cc b 0x620d8 |
| while (r1 == 0xa6) {
0x000620ce adds r3, 1 | r3++;
0x000620d0 adds r2, 0x10 | r2 += 0x10;
0x000620d2 cmp r6, r3 |
| if (r6 == r3) {
0x000620d4 beq.w 0x6266a | goto label_63;
| }
0x000620d8 ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x000620da ldrb r1, [r1] | r1 = *(r1);
0x000620dc cmp r1, 0xa6 |
0x000620de beq 0x620ce |
| }
| do {
| label_0:
0x000620e0 ldr.w r3, [r8, 0x84] | r3 = *((r8 + 0x84));
0x000620e4 str r3, [sp, 0x2c] | var_2ch = r3;
0x000620e6 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000620e8 cmp r3, 0 |
| if (r3 != 0) {
0x000620ea bne.w 0x6232a | goto label_64;
| }
| label_56:
0x000620ee ldr r2, [sp, 0x20] | r2 = var_20h;
0x000620f0 cmp r2, 0 |
| if (r2 == 0) {
0x000620f2 beq.w 0x62aaa | goto label_65;
| }
0x000620f6 ldr.w r3, [r8, 0x2c] | r3 = *((r8 + 0x2c));
0x000620fa adds r3, 1 | r3++;
0x000620fc str.w r3, [r8, 0x2c] | __asm ("str.w r3, [r8, 0x2c]");
0x00062100 str r3, [sp, 0x10] | var_10h = r3;
0x00062102 str r3, [r2] | *(r2) = r3;
| label_7:
0x00062104 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062106 ldr.w r4, [r8, 8] | r4 = *((r8 + 8));
0x0006210a ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0006210c ldrd sb, r1, [r4, 0x6c] | __asm ("ldrd sb, r1, [r4, 0x6c]");
0x00062110 ands r2, r0, 0x20 | r2 = r0 & 0x20;
| if (r2 != r0) {
0x00062114 bne.w 0x62548 | goto label_66;
| }
0x00062118 ldr.w r3, [r8, 0x34] | r3 = *((r8 + 0x34));
0x0006211c cmp r3, 0 |
| if (r3 != 0) {
0x0006211e bne.w 0x62538 | goto label_67;
| }
0x00062120 strh r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
0x00062122 ands r2, r0, 0x2000000 | r2 = r0 & 0x2000000;
| if (r2 != r0) {
0x00062126 bne.w 0x62ab2 | goto label_68;
| }
0x0006212a ldr.w r3, [r8, 0x2c] | r3 = *((r8 + 0x2c));
0x0006212e cmp sb, r1 |
0x00062130 ldr r5, [sp, 0xc] | r5 = var_ch;
0x00062132 orr r0, r0, 0x2000000 | r0 |= 0x2000000;
0x00062136 add.w r3, r3, 1 | r3++;
0x0006213a str r0, [r5, 4] | *((r5 + 4)) = r0;
0x0006213c str.w r3, [r8, 0x2c] | __asm ("str.w r3, [r8, 0x2c]");
0x00062140 str r3, [r5, 0x30] | *((r5 + 0x30)) = r3;
| if (sb >= r1) {
0x00062142 bge.w 0x62c7c | goto label_69;
| }
0x00062146 add.w r6, sb, sb, lsl 2 | r6 = sb + (sb << 2);
0x0006214a ldr r7, [r4, 0x68] | r7 = *((r4 + 0x68));
0x0006214c add.w r0, sb, 1 | r0 = sb + 1;
0x00062150 lsls r6, r6, 2 | r6 <<= 2;
0x00062152 mov sl, r0 | sl = r0;
0x00062154 mov.w ip, 0x45 |
0x00062158 str r0, [r4, 0x6c] | *((r4 + 0x6c)) = r0;
0x0006215a adds r5, r7, r6 | r5 = r7 + r6;
0x0006215c strd r3, r2, [r5, 8] | __asm ("strd r3, r2, [r5, 8]");
0x00062160 str r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
0x00062162 str.w ip, [r7, r6] | __asm ("str.w ip, [r7, r6]");
0x00062166 str r2, [r5, 4] | *((r5 + 4)) = r2;
| label_49:
0x00062168 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006216a cmp sl, r1 |
0x0006216c str r0, [r3, 0x2c] | *((r3 + 0x2c)) = r0;
| if (sl >= r1) {
0x0006216e bge.w 0x62c64 | goto label_70;
| }
0x00062172 add.w r0, sl, sl, lsl 2 | r0 = sl + (sl << 2);
0x00062176 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00062178 add.w sb, sl, 1 | sb = sl + 1;
0x0006217c lsls r0, r0, 2 | r0 <<= 2;
0x0006217e movs r5, 0x11 | r5 = 0x11;
0x00062180 str.w sb, [r4, 0x6c] | __asm ("str.w sb, [r4, 0x6c]");
0x00062184 movs r2, 0 | r2 = 0;
0x00062186 str r5, [r3, r0] | *((r3 + r0)) = r5;
0x00062188 add r3, r0 | r3 += r0;
0x0006218a strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x0006218e strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_13:
0x00062192 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062194 ldr r5, [r3, 0xc] | r5 = *((r3 + 0xc));
0x00062196 ldrb r3, [r5] | r3 = *(r5);
0x00062198 cmp r3, 0xaf |
0x0006219a it eq |
| if (r3 != 0xaf) {
0x0006219c ldrbeq r3, [r5, 2] | r3 = *((r5 + 2));
| }
0x0006219e cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x000621a0 beq.w 0x62616 | goto label_71;
| }
0x000621a4 cmp r3, 0x89 |
0x000621a6 itett eq |
| if (r3 != 0x89) {
0x000621a8 ldreq r3, [r5, 0x14] | r3 = *((r5 + 0x14));
| }
| if (r3 == 0x89) {
0x000621aa movne r6, 1 | r6 = 1;
| }
| if (r3 != 0x89) {
0x000621ac ldreq r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
| }
| if (r3 != 0x89) {
0x000621ae ldreq r6, [r3] | r6 = *(r3);
| }
| label_18:
0x000621b0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000621b2 cmp sb, r1 |
0x000621b4 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000621b6 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
| if (sb >= r1) {
0x000621b8 bge.w 0x62622 | goto label_72;
| }
0x000621bc add.w r3, sb, sb, lsl 2 | r3 = sb + (sb << 2);
0x000621c0 ldr r1, [r4, 0x68] | r1 = *((r4 + 0x68));
0x000621c2 ldr r7, [sp, 0x14] | r7 = var_14h;
0x000621c4 add.w r2, sb, 1 | r2 = sb + 1;
0x000621c8 lsls r3, r3, 2 | r3 <<= 2;
0x000621ca str r2, [r4, 0x6c] | *((r4 + 0x6c)) = r2;
0x000621cc movs r0, 0 | r0 = 0;
0x000621ce adds r2, r1, r3 | r2 = r1 + r3;
0x000621d0 mov.w ip, 0x70 |
0x000621d4 strd r7, r6, [r2, 4] | __asm ("strd r7, r6, [r2, 4]");
0x000621d8 strd r0, r0, [r2, 0xc] | __asm ("strd r0, r0, [r2, 0xc]");
0x000621dc str.w ip, [r1, r3] | __asm ("str.w ip, [r1, r3]");
| label_20:
0x000621e0 movs r2, 1 | r2 = 1;
0x000621e2 ldr.w r0, [r8] | r0 = *(r8);
0x000621e6 mov r1, r6 | r1 = r6;
0x000621e8 bl 0x1b6dc | fcn_0001b6dc (r0, r1, r2);
0x000621ec ldr r2, [sp, 0xc] | r2 = var_ch;
0x000621ee str r0, [sp, 0x1c] | var_1ch = r0;
0x000621f0 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000621f2 lsls r3, r3, 0x14 | r3 <<= 0x14;
| if (r3 >= r3) {
0x000621f4 bpl.w 0x62340 | goto label_73;
| }
0x000621f8 ldr r7, [r2, 0x14] | r7 = *((r2 + 0x14));
0x000621fa ldr.w fp, [r7, 0x1c] | fp = *((r7 + 0x1c));
0x000621fe cmp.w sl, 0 |
| if (sl != 0) {
0x00062202 bne.w 0x6260e | goto label_74;
| }
0x00062206 ldr.w r3, [pc, 0x930] | r3 = *(0x00062b38);
0x0006220a add r3, pc | r3 += pc;
| label_17:
0x0006220c ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x0006220e movs r1, 1 | r1 = 1;
0x00062210 mov r0, r8 | r0 = r8;
0x00062212 str r2, [sp] | *(sp) = r2;
0x00062214 ldr.w r2, [pc, 0x924] |
0x00062218 add r2, pc | r2 = 0xc4d58;
0x0006221a bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0006221e ldr.w r3, [fp] | r3 = *(fp);
0x00062222 cmp r3, r6 |
| if (r3 == r6) {
0x00062224 beq.w 0x62b6c | goto label_75;
| }
| label_8:
0x00062228 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x0006222a cbz r3, 0x6223a |
0x0006222c mov r2, r3 | r2 = r3;
0x0006222e mov r1, sb | r1 = sb;
0x00062230 mvn r3, 8 | r3 = ~8;
0x00062234 mov r0, r4 | r0 = r4;
0x00062236 bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
| }
0x0006223a cmp.w sl, 0 |
| if (sl != 0) {
0x0006223e bne.w 0x6254e | goto label_76;
| }
| label_15:
0x00062242 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00062244 cmp r3, 0 |
| if (r3 != 0) {
0x00062246 bne.w 0x6253c | goto label_77;
| }
| label_14:
0x0006224a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0006224c movs r5, 2 | r5 = 2;
0x0006224e str.w r3, [r8, 0x84] | __asm ("str.w r3, [r8, 0x84]");
0x00062252 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x00062254 cbz r3, 0x62276 |
0x00062256 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062258 movs r5, 2 | r5 = 2;
0x0006225a ldr r4, [r3, 0xc] | r4 = *((r3 + 0xc));
| label_1:
0x0006225c ldrb r3, [r4] | r3 = *(r4);
0x0006225e cmp r3, 0xaf |
0x00062260 it eq |
| if (r3 != 0xaf) {
0x00062262 ldrbeq r3, [r4, 2] | r3 = *((r4 + 2));
| }
0x00062264 cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x00062266 beq.w 0x62608 | goto label_78;
| }
0x0006226a cmp r3, 0x89 |
| if (r3 == 0x89) {
0x0006226c beq.w 0x625ac | goto label_79;
| }
0x00062270 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00062272 movs r3, 0 | r3 = 0;
0x00062274 str r3, [r2] | *(r2) = r3;
| }
| label_2:
0x00062276 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00062278 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006227a str r2, [r3] | *(r3) = r2;
0x0006227c ldr.w r2, [pc, 0x8c0] |
0x00062280 ldr.w r3, [pc, 0x8b0] | r3 = *(0x62b34);
0x00062284 add r2, pc | r2 = 0xc4dc8;
0x00062286 ldr r3, [r2, r3] | r3 = *(0xc4dc8);
0x00062288 ldr r2, [r3] | r2 = *(0xc4dc8);
0x0006228a ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0006228c eors r2, r3 | r2 ^= r3;
0x0006228e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00062292 bne.w 0x62d32 | goto label_80;
| }
0x00062296 mov r0, r5 | r0 = r5;
0x00062298 add sp, 0x74 |
0x0006229a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_60:
0x0006229e ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x000622a2 cmp r3, 0 |
| if (r3 == 0) {
0x000622a4 beq 0x62322 | goto label_81;
| }
| label_4:
0x000622a6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000622a8 cmp r3, 3 |
0x000622aa bne.w 0x620e0 |
| } while (r3 != 3);
0x000622ae ldr r3, [sp, 0xc] | r3 = var_ch;
0x000622b0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000622b2 lsls r1, r3, 0x14 | r1 = r3 << 0x14;
| if (r1 < r3) {
0x000622b4 bmi.w 0x62d28 | goto label_82;
| }
| label_6:
0x000622b8 ldr.w r3, [pc, 0x888] | r3 = *(0x00062b44);
0x000622bc add r0, sp, 0x50 | r0 += var_50h;
0x000622be ldr r5, [sp, 0xc] | r5 = var_ch;
0x000622c0 add r3, pc | r3 += pc;
0x000622c2 str r3, [sp, 0x54] | var_54h = r3;
0x000622c4 mov r1, r5 | r1 = r5;
0x000622c6 ldr.w r3, [pc, 0x880] | r3 = *(0x00062b48);
0x000622ca ldr r4, [r5, 0xc] | r4 = *((r5 + 0xc));
0x000622cc add r3, pc | r3 += pc;
0x000622ce str r3, [sp, 0x58] | var_58h = r3;
0x000622d0 movs r3, 0 | r3 = 0;
0x000622d2 str r3, [sp, 0x68] | var_68h = r3;
0x000622d4 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x000622d6 movs r3, 1 | r3 = 1;
0x000622d8 strh.w r3, [sp, 0x64] | var_64h = r3;
0x000622dc bl 0x301c4 | fcn_000301c4 (r0, r1);
0x000622e0 ldrh.w r3, [sp, 0x64] | r3 = var_64h;
0x000622e4 str r4, [r5, 0xc] | *((r5 + 0xc)) = r4;
| if (r3 == 0) {
0x000622e6 cbz r3, 0x622f2 | goto label_83;
| }
0x000622e8 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x000622ea ldr r3, [r3] | r3 = *(r3);
0x000622ec cmp r3, 2 |
| if (r3 > 2) {
0x000622ee bgt.w 0x620e0 | goto label_0;
| }
| label_83:
0x000622f2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000622f4 movs r5, 5 | r5 = 5;
0x000622f6 cmp r3, 0 |
| if (r3 != 0) {
0x000622f8 bne 0x6225c | goto label_1;
| }
0x000622fa b 0x62276 | goto label_2;
| label_58:
0x000622fc ldr.w r3, [r8, 0x74] | r3 = *((r8 + 0x74));
0x00062300 cmp r3, 0 |
| if (r3 == 0) {
0x00062302 beq.w 0x62502 | goto label_84;
| }
| label_10:
0x00062306 mov r0, r8 | r0 = r8;
0x00062308 bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x0006230c str r0, [sp, 0x28] | var_28h = r0;
0x0006230e b 0x62042 | goto label_3;
| label_59:
0x00062310 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00062314 cmp r3, 0 |
| if (r3 != 0) {
0x00062316 bne 0x622a6 | goto label_4;
| }
0x00062318 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006231a ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x0006231c lsls r4, r5, 0x14 | r4 = r5 << 0x14;
| if (r4 < r5) {
0x0006231e bmi.w 0x6208a | goto label_5;
| }
| label_81:
0x00062322 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00062324 cmp r3, 3 |
| if (r3 == 3) {
0x00062326 beq 0x622b8 | goto label_6;
| }
0x00062328 b 0x620e0 | goto label_0;
| label_64:
0x0006232a movs r3, 0 | r3 = 0;
0x0006232c str.w r3, [r8, 0x84] | __asm ("str.w r3, [r8, 0x84]");
0x00062330 str r3, [sp, 0x10] | var_10h = r3;
0x00062332 b 0x62104 | goto label_7;
| label_62:
0x00062334 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00062338 str r0, [sp, 0x20] | var_20h = r0;
0x0006233a cmp r3, 0 |
| if (r3 != 0) {
0x0006233c bne 0x622a6 | goto label_4;
| }
0x0006233e b 0x6208a | goto label_5;
| label_73:
0x00062340 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062342 ldr r6, [r3, 0x14] | r6 = *((r3 + 0x14));
0x00062344 cmp r6, 0 |
| if (r6 == 0) {
0x00062346 beq.w 0x62228 | goto label_8;
| }
0x0006234a mov r0, r5 | r0 = r5;
0x0006234c bl 0xc640 | r0 = fcn_0000c640 (r0);
0x00062350 cmp r0, 0x40 |
0x00062352 itt ls |
| if (r0 > 0x40) {
0x00062354 movls r3, 0x41 | r3 = 0x41;
| }
| if (r0 > 0x40) {
0x00062356 strbls r3, [sp, 0x4f] | var_4fh = r3;
| }
| if (r0 >= 0x40) {
0x0006235a bls 0x6236a |
0x0006235c cmp r0, 0x45 |
0x0006235e itet eq |
| if (r0 != 0x45) {
0x00062360 moveq r3, 0x43 | r3 = 0x43;
| }
| if (r0 == 0x45) {
0x00062362 strbne r0, [sp, 0x4f] | var_4fh = r0;
| }
| if (r0 != 0x45) {
0x00062366 strb.w r3, [sp, 0x4f] | var_4fh = r3;
| goto label_85;
| }
| }
| label_85:
0x0006236a ldr r5, [sp, 0x1c] | r5 = var_1ch;
| if (r5 != 0) {
0x0006236c cbz r5, 0x6237a |
0x0006236e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062370 mov r0, r8 | r0 = r8;
0x00062372 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x00062374 bl 0x2d47c | fcn_0002d47c (r0, r1);
0x00062378 str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
| }
0x0006237a ldrb.w r3, [r8, 0x13] | r3 = *((r8 + 0x13));
0x0006237e cmp r3, 0 |
| if (r3 == 0) {
0x00062380 beq.w 0x62c38 | goto label_86;
| }
0x00062384 subs r2, r3, 1 | r2 = r3 - 1;
0x00062386 uxtb r2, r2 | r2 = (int8_t) r2;
0x00062388 add.w r1, r8, r2, lsl 2 | r1 = r8 + (r2 << 2);
0x0006238c strb.w r2, [r8, 0x13] | *((r8 + 0x13)) = r2;
0x00062390 ldr.w r5, [r1, 0x94] | r5 = *((r1 + 0x94));
0x00062394 cmp r2, 0 |
| if (r2 == 0) {
0x00062396 beq.w 0x62d36 | goto label_87;
| }
0x0006239a subs r3, 2 | r3 -= 2;
0x0006239c uxtb r3, r3 | r3 = (int8_t) r3;
0x0006239e strb.w r3, [r8, 0x13] | *((r8 + 0x13)) = r3;
0x000623a2 add.w r3, r8, r3, lsl 2 | r3 = r8 + (r3 << 2);
0x000623a6 ldr.w r3, [r3, 0x94] | r3 = *((r3 + 0x94));
0x000623aa str r3, [sp, 0x34] | var_34h = r3;
| label_45:
0x000623ac ldr r3, [r6] | r3 = *(r6);
0x000623ae cmp r3, 0 |
| if (r3 <= 0) {
0x000623b0 ble.w 0x625ce | goto label_88;
| }
0x000623b4 ldr.w r2, [pc, 0x794] | r2 = *(0x00062b4c);
0x000623b8 add.w fp, r6, 0x18 |
0x000623bc str.w sb, [sp, 0x38] | __asm ("str.w sb, [var_38h]");
0x000623c0 mov r6, r3 | r6 = r3;
0x000623c2 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x000623c6 add r2, pc | r2 += pc;
0x000623c8 str r2, [sp, 0x20] | var_20h = r2;
0x000623ca ldr.w r2, [pc, 0x784] | r2 = *(0x00062b50);
0x000623ce add r2, pc | r2 += pc;
0x000623d0 str r2, [sp, 0x30] | var_30h = r2;
0x000623d2 b 0x624b0 |
| while (sl == 0) {
| label_9:
0x000623d4 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
| if (r3 != 0) {
0x000623d8 cbz r3, 0x62408 |
0x000623da mov r2, r5 | r2 = r5;
0x000623dc mov r1, r7 | r1 = r7;
0x000623de mov r0, r8 | r0 = r8;
0x000623e0 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x000623e4 cmp r0, r5 |
0x000623e6 mov r2, r0 | r2 = r0;
| if (r0 == r5) {
0x000623e8 beq 0x62408 | goto label_89;
| }
0x000623ea ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000623ec tst.w r3, 0x200000 |
0x000623f0 mov.w r3, 0 | r3 = 0;
0x000623f4 str r3, [sp] | *(sp) = r3;
0x000623f6 it ne |
| if ((r3 & 0x200000) == 0) {
0x000623f8 movne r1, 0x4d | r1 = 0x4d;
| }
0x000623fa ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x000623fe mov r3, r5 | r3 = r5;
0x00062400 it eq |
| if ((r3 & 0x200000) != 0) {
0x00062402 moveq r1, 0x4e | r1 = 0x4e;
| }
0x00062404 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
| label_89:
0x00062408 ldrd r1, r3, [r4, 0x6c] | __asm ("ldrd r1, r3, [r4, 0x6c]");
0x0006240c cmp r1, r3 |
| if (r1 >= r3) {
0x0006240e bge.w 0x62524 | goto label_90;
| }
0x00062412 ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x00062414 add.w r3, r1, r1, lsl 2 | r3 = r1 + (r1 << 2);
0x00062418 adds r0, r1, 1 | r0 = r1 + 1;
0x0006241a movs r7, 0 | r7 = 0;
0x0006241c str r0, [r4, 0x6c] | *((r4 + 0x6c)) = r0;
0x0006241e movs r0, 0x5d | r0 = 0x5d;
0x00062420 add.w ip, r2, r3, lsl 2 |
0x00062424 str.w r7, [ip, 0x10] | __asm ("str.w r7, [ip, 0x10]");
0x00062428 movs r7, 1 | r7 = 1;
0x0006242a str.w r5, [ip, 4] | __asm ("str.w r5, [ip, 4]");
0x0006242e strd r7, sb, [ip, 8] | __asm ("strd r7, sb, [ip, 8]");
0x00062432 str.w r0, [r2, r3, lsl 2] | __asm ("str.w r0, [r2, r3, lsl 2]");
| label_12:
0x00062436 ldr r3, [r4] | r3 = *(r4);
0x00062438 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 == 0) {
0x0006243c cbnz r3, 0x62460 |
0x0006243e cmp r1, 0 |
0x00062440 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00062442 it lt |
| if (r1 >= 0) {
0x00062444 ldrlt r1, [r4, 0x6c] | r1 = *((r4 + 0x6c));
| }
0x00062446 add.w r2, sp, 0x4f | r2 += var_4fh;
0x0006244a mov r0, r4 | r0 = r4;
0x0006244c it lt |
| if (r1 >= 0) {
0x0006244e addlt r1, r1, -1 | r1 += -1;
| }
0x00062452 add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x00062454 lsls r1, r0, 6 | r1 = r0 << 6;
0x00062456 add.w r1, r3, r1, lsl 2 | r1 = r3 + (r1 << 2);
0x0006245a movs r3, 1 | r3 = 1;
0x0006245c bl 0x1bdb4 | fcn_0001bdb4 (r0, r1, r2, r3);
| }
0x00062460 ldrd r0, r3, [r4, 0x6c] | __asm ("ldrd r0, r3, [r4, 0x6c]");
0x00062464 cmp r0, r3 |
| if (r0 >= r3) {
0x00062466 bge 0x62514 | goto label_91;
| }
0x00062468 ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x0006246a add.w r3, r0, r0, lsl 2 | r3 = r0 + (r0 << 2);
0x0006246e adds r1, r0, 1 | r1 = r0 + 1;
0x00062470 movs r7, 0 | r7 = 0;
0x00062472 str r1, [r4, 0x6c] | *((r4 + 0x6c)) = r1;
0x00062474 movs r1, 0x86 | r1 = 0x86;
0x00062476 add.w ip, r2, r3, lsl 2 |
0x00062478 lsrs r3, r0, 0x12 | r3 = r0 >> 0x12;
0x0006247a str.w r7, [ip, 0x10] | __asm ("str.w r7, [ip, 0x10]");
0x0006247e ldr r7, [sp, 0x14] | r7 = var_14h;
0x00062480 str.w r5, [ip, 0xc] | __asm ("str.w r5, [ip, 0xc]");
0x00062484 strd r7, sb, [ip, 4] | __asm ("strd r7, sb, [ip, 4]");
0x00062488 str.w r1, [r2, r3, lsl 2] | __asm ("str.w r1, [r2, r3, lsl 2]");
| label_11:
0x0006248c ldr r3, [r4] | r3 = *(r4);
0x0006248e ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 == 0) {
0x00062492 cbnz r3, 0x624a6 |
0x00062494 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00062496 add.w r0, r0, r0, lsl 2 | r0 += (r0 << 2);
0x0006249a movs r2, 1 | r2 = 1;
0x0006249c add.w r3, r3, r0, lsl 2 | r3 += (r0 << 2);
0x000624a0 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x000624a2 movs r2, 0xfd | r2 = 0xfd;
0x000624a4 strb r2, [r3, 1] | *((r3 + 1)) = r2;
| }
0x000624a6 subs r6, 1 | r6--;
0x000624a8 add.w fp, fp, 0x10 |
| if (r6 == 1) {
0x000624ac beq.w 0x625ca | goto label_92;
| }
0x000624b0 ldr r7, [fp, -0x10] | r7 = var_bp_10h;
0x000624b4 cmp.w sl, 0 |
0x000624b8 beq 0x623d4 |
| }
0x000624ba mov.w r3, 1 | r3 = 1;
0x000624be strh.w r3, [sp, 0x64] | var_64h = r3;
0x000624c2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000624c4 str r3, [sp, 0x54] | var_54h = r3;
0x000624c6 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000624c8 str r3, [sp, 0x58] | var_58h = r3;
0x000624ca movs r3, 0 | r3 = 0;
0x000624cc str r3, [sp, 0x68] | var_68h = r3;
0x000624ce cmp r7, 0 |
| if (r7 == 0) {
0x000624d0 beq 0x623d4 | goto label_9;
| }
0x000624d2 mov r1, r7 | r1 = r7;
0x000624d4 add r0, sp, 0x50 | r0 += var_50h;
0x000624d6 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x000624da ldrh.w r3, [sp, 0x64] | r3 = var_64h;
0x000624de cmp r3, 0 |
| if (r3 != 0) {
0x000624e0 bne.w 0x623d4 | goto label_9;
| }
0x000624e4 ldr r0, [r4] | r0 = *(r4);
0x000624e6 ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x000624ea str r3, [sp, 0x3c] | var_3ch = r3;
0x000624ec cmp r3, 0 |
| if (r3 == 0) {
0x000624ee beq.w 0x6263e | goto label_93;
| }
| label_22:
0x000624f2 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000624f4 mov.w sl, 0 | sl = 0;
0x000624f8 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000624fa bic r3, r3, 0x2000000 | r3 = BIT_MASK (r3, 0x2000000);
0x000624fe str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00062500 b 0x623d4 | goto label_9;
| label_84:
0x00062502 ldr.w r3, [r8] | r3 = *(r8);
0x00062506 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00062508 lsls r7, r3, 0x1c | r7 = r3 << 0x1c;
0x0006250a itt pl |
| if (r7 < r3) {
0x0006250c movpl r3, 1 | r3 = 1;
| }
| if (r7 < r3) {
0x0006250e strbpl r3, [r8, 0x17] | *((r8 + 0x17)) = r3;
| }
0x00062512 b 0x62306 | goto label_10;
| label_91:
0x00062514 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00062516 mov r3, sb | r3 = sb;
0x00062518 movs r1, 0x86 | r1 = 0x86;
0x0006251a mov r0, r4 | r0 = r4;
0x0006251c str r5, [sp] | *(sp) = r5;
0x0006251e bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00062522 b 0x6248c | goto label_11;
| label_90:
0x00062524 movs r1, 0x5d | r1 = 0x5d;
0x00062526 movs r3, 1 | r3 = 1;
0x00062528 mov r2, r5 | r2 = r5;
0x0006252a mov r0, r4 | r0 = r4;
0x0006252c str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00062530 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00062534 mov r1, r0 | r1 = r0;
0x00062536 b 0x62436 | goto label_12;
| label_67:
0x00062538 mov sl, r2 | sl = r2;
0x0006253a b 0x62192 | goto label_13;
| label_77:
0x0006253c ldr r0, [sp, 0x28] | r0 = var_28h;
0x0006253e mov r2, r3 | r2 = r3;
0x00062540 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00062542 bl 0x2b8d0 | fcn_0002b8d0 (r0, r1, r2);
0x00062546 b 0x6224a | goto label_14;
| label_66:
0x00062548 mov.w sl, 0 | sl = 0;
0x0006254c b 0x62192 | goto label_13;
| label_76:
0x0006254e ldr r3, [r4] | r3 = *(r4);
0x00062550 ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x00062552 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00062556 it lt |
| if (r3 >= 1) {
0x00062558 addlt sl, r2, -1 | sl = r2 + -1;
| }
0x0006255c cmp r3, 0 |
| if (r3 != 0) {
0x0006255e bne 0x62634 | goto label_94;
| }
0x00062560 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00062562 add.w sl, sl, sl, lsl 2 | sl += (sl << 2);
0x00062566 add.w r3, r3, sl, lsl 2 | r3 += (sl << 2);
| label_21:
0x0006256a ldr r5, [sp, 0xc] | r5 = var_ch;
0x0006256c movs r1, 0x41 | r1 = 0x41;
0x0006256e str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00062570 movs r3, 0 | r3 = 0;
0x00062572 str r3, [sp] | *(sp) = r3;
0x00062574 mov r0, r4 | r0 = r4;
0x00062576 ldr r2, [r5, 0x30] | r2 = *((r5 + 0x30));
0x00062578 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006257c ldr r3, [r4] | r3 = *(r4);
0x0006257e ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x00062580 ldrb.w r1, [r3, 0x53] | r1 = *((r3 + 0x53));
0x00062584 ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x00062586 subs r2, 1 | r2--;
0x00062588 subs r3, 1 | r3--;
0x0006258a it mi |
| if (r3 >= 1) {
0x0006258c movmi r3, r2 | r3 = r2;
| }
0x0006258e cmp r1, 0 |
| if (r1 != 0) {
0x00062590 bne.w 0x62aa2 | goto label_95;
| }
0x00062594 ldr r1, [r4, 0x68] | r1 = *((r4 + 0x68));
0x00062596 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006259a add.w r3, r1, r3, lsl 2 | r3 = r1 + (r3 << 2);
| label_40:
0x0006259e str r2, [r3, 4] | *((r3 + 4)) = r2;
0x000625a0 movs r3, 0 | r3 = 0;
0x000625a2 strb.w r3, [r8, 0x13] | *((r8 + 0x13)) = r3;
0x000625a6 str.w r3, [r8, 0x1c] | __asm ("str.w r3, [r8, 0x1c]");
0x000625aa b 0x62242 | goto label_15;
| label_79:
0x000625ac ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000625ae ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x000625b0 ldr r1, [r3] | r1 = *(r3);
| label_16:
0x000625b2 cmp r1, 0 |
| if (r1 <= 0) {
0x000625b4 ble.w 0x62276 | goto label_2;
| }
0x000625b8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000625ba subs r2, r3, 4 | r2 = r3 - 4;
0x000625bc movs r3, 0 | r3 = 0;
| do {
0x000625be str r3, [r2, 4]! | *((r2 += 4)) = r3;
0x000625c2 adds r3, 1 | r3++;
0x000625c4 cmp r3, r1 |
0x000625c6 bne 0x625be |
| } while (r3 != r1);
0x000625c8 b 0x62276 | goto label_2;
| label_92:
0x000625ca ldr.w sb, [sp, 0x38] | sb = var_38h;
| if (r5 == 0) {
| label_88:
0x000625ce cbz r5, 0x625e8 | goto label_96;
| }
0x000625d0 ldrb.w r3, [r8, 0x13] | r3 = *((r8 + 0x13));
0x000625d4 cmp r3, 7 |
| if (r3 > 7) {
0x000625d6 bhi.w 0x62228 | goto label_8;
| }
0x000625da add.w r2, r8, r3, lsl 2 | r2 = r8 + (r3 << 2);
0x000625de adds r3, 1 | r3++;
0x000625e0 strb.w r3, [r8, 0x13] | *((r8 + 0x13)) = r3;
0x000625e4 str.w r5, [r2, 0x94] | __asm ("str.w r5, [r2, 0x94]");
| label_96:
0x000625e8 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000625ea cmp r1, 0 |
| if (r1 == 0) {
0x000625ec beq.w 0x62228 | goto label_8;
| }
0x000625f0 ldrb.w r3, [r8, 0x13] | r3 = *((r8 + 0x13));
0x000625f4 cmp r3, 7 |
0x000625f6 itttt ls |
| if (r3 > 7) {
0x000625f8 addls r2, r8, r3, lsl 2 | r2 = r8 + (r3 << 2);
| }
| if (r3 > 7) {
0x000625fc addls r3, 1 | r3++;
| }
| if (r3 > 7) {
0x000625fe strbls r3, [r8, 0x13] | *((r8 + 0x13)) = r3;
| }
| if (r3 <= 7) {
0x00062602 str.w r1, [r2, 0x94] | __asm ("str.w r1, [r2, 0x94]");
| }
0x00062606 b 0x62228 | goto label_8;
| label_78:
0x00062608 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0006260a ldr r1, [r3] | r1 = *(r3);
0x0006260c b 0x625b2 | goto label_16;
| label_74:
0x0006260e ldr.w r3, [pc, 0x544] | r3 = *(0x00062b54);
0x00062612 add r3, pc | r3 += pc;
0x00062614 b 0x6220c | goto label_17;
| label_71:
0x00062616 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00062618 ldr r6, [r3] | r6 = *(r3);
0x0006261a b 0x621b0 | goto label_18;
| label_61:
0x0006261c it eq |
| if (r3 != 7) {
0x0006261e streq r4, [sp, 0x20] | var_20h = r4;
| }
0x00062620 b 0x62080 | goto label_19;
| label_72:
0x00062622 movs r3, 0 | r3 = 0;
0x00062624 movs r1, 0x70 | r1 = 0x70;
0x00062626 str r3, [sp] | *(sp) = r3;
0x00062628 mov r0, r4 | r0 = r4;
0x0006262a mov r3, r6 | r3 = r6;
0x0006262c bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00062630 mov sb, r0 | sb = r0;
0x00062632 b 0x621e0 | goto label_20;
| label_94:
0x00062634 ldr.w r3, [pc, 0x520] |
0x00062638 add r3, pc | r3 = 0xc5194;
0x0006263a adds r3, 4 | r3 += 4;
0x0006263c b 0x6256a | goto label_21;
| label_93:
0x0006263e ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x00062640 add.w r3, sl, sl, lsl 2 | r3 = sl + (sl << 2);
0x00062644 strd r3, r2, [sp, 0x40] | __asm ("strd r3, r2, [var_40h]");
0x00062648 add.w sl, r2, r3, lsl 2 | sl = r2 + (r3 << 2);
0x0006264c ldr.w r2, [sl, 0x10] | r2 = *((sl + 0x10));
0x00062650 ldrsb.w r1, [sl, 1] | r1 = *((sl + 1));
0x00062654 bl 0x1a7f4 | fcn_0001a7f4 (r0);
0x00062658 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006265a movs r2, 0xb1 | r2 = 0xb1;
0x0006265c str.w r3, [sl, 0x10] | __asm ("str.w r3, [sl, 0x10]");
0x00062660 ldrd r3, r1, [sp, 0x40] | __asm ("ldrd r3, r1, [var_40h]");
0x00062664 strh.w r2, [r1, r3, lsl 2] | offset_0 = r3 << 2;
| *((r1 + offset_0)) = r2;
0x00062668 b 0x624f2 | goto label_22;
| label_63:
0x0006266a ldr.w r1, [sl, 0x48] | r1 = *((sl + 0x48));
0x0006266e ldr.w r4, [r8] | r4 = *(r8);
0x00062672 cmp r1, 0 |
| if (r1 == 0) {
0x00062674 beq.w 0x62d18 | goto label_97;
| }
0x00062678 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0006267a ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0006267c cmp r1, r2 |
| if (r1 == r2) {
0x0006267e beq.w 0x62b20 | goto label_98;
| }
0x00062682 movs r2, 0 | r2 = 0;
| do {
0x00062684 ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x00062686 adds r3, 0x10 | r3 += 0x10;
0x00062688 adds r2, 1 | r2++;
0x0006268a cmp r1, r0 |
0x0006268c bne 0x62684 |
| } while (r1 != r0);
0x0006268e movs r3, 1 | r3 = 1;
0x00062690 str r2, [sp, 0x34] | var_34h = r2;
0x00062692 lsls r3, r2 | r3 <<= r2;
| label_41:
0x00062694 ldr.w r0, [r8, 0x74] | r0 = *((r8 + 0x74));
0x00062698 cmp r0, 0 |
0x0006269a it eq |
| if (r0 != 0) {
0x0006269c moveq r0, r8 | r0 = r8;
| }
0x0006269e ldr r2, [r0, 0x54] | r2 = *((r0 + 0x54));
0x000626a0 tst r2, r3 |
| if ((r2 & r3) != 0) {
0x000626a2 bne.w 0x629f8 | goto label_99;
| }
0x000626a6 orrs r2, r3 | r2 |= r3;
0x000626a8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000626aa str r2, [r0, 0x54] | *((r0 + 0x54)) = r2;
0x000626ac cmp r3, 1 |
| if (r3 == 1) {
0x000626ae beq.w 0x62b28 | goto label_100;
| }
0x000626b2 ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x000626b6 ldr.w r1, [sl] | r1 = *(sl);
| label_37:
0x000626ba ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000626bc ldr r0, [sp, 0x34] | r0 = var_34h;
0x000626be add.w r3, r3, r0, lsl 4 | r3 += (r0 << 4);
0x000626c2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000626c4 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 != 0) {
0x000626c6 cbz r3, 0x626d4 |
0x000626c8 str r1, [sp] | *(sp) = r1;
0x000626ca movs r3, 0 | r3 = 0;
0x000626cc mov r1, r0 | r1 = r0;
0x000626ce mov r0, r8 | r0 = r8;
0x000626d0 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
| }
| label_38:
0x000626d4 cmp r6, 1 |
| if (r6 == 1) {
0x000626d6 beq.w 0x62a0a | goto label_101;
| }
0x000626da cmp r6, 0 |
| if (r6 <= 0) {
0x000626dc ble 0x627d4 | goto label_102;
| }
0x000626de ldr r3, [sp, 0x38] | r3 = var_38h;
0x000626e0 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000626e2 ldrsh.w r2, [r3, 0x20] | r2 = *((r3 + 0x20));
| label_39:
0x000626e6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000626e8 movs r4, 0 | r4 = 0;
0x000626ea ldr r7, [r3, 0xc] | r7 = *((r3 + 0xc));
0x000626ec ldr r3, [sp, 0x38] | r3 = var_38h;
0x000626ee ldrb.w fp, [r7] | fp = *(r7);
0x000626f2 add.w r5, r3, 0x18 | r5 = r3 + 0x18;
| do {
0x000626f6 cmp.w fp, 0xaf |
0x000626fa ite eq |
| if (fp != 0xaf) {
0x000626fc ldrbeq r3, [r7, 2] | r3 = *((r7 + 2));
| }
| if (fp == 0xaf) {
0x000626fe movne r3, fp | r3 = fp;
| }
0x00062700 cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x00062702 beq 0x627c8 | goto label_103;
| }
0x00062704 cmp r3, 0x89 |
| if (r3 == 0x89) {
0x00062706 beq 0x6276c | goto label_104;
| }
| label_23:
0x00062708 cmp r2, 0 |
0x0006270a mov r0, r7 | r0 = r7;
| if (r2 < 0) {
0x0006270c blt 0x62790 | goto label_105;
| }
| label_24:
0x0006270e ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x00062712 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x00062716 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0006271a ldrb.w sb, [r3, 0xd] | sb = *((r3 + 0xd));
0x0006271e bl 0xc640 | r0 = fcn_0000c640 (r0);
0x00062722 cmp r0, 0x40 |
0x00062724 it hi |
| if (r0 > 0x40) {
0x00062726 cmphi sb, 0x40 | __asm ("cmphi sb, 0x40");
| }
| if (r0 < 0x40) {
0x0006272a bls 0x627ba | goto label_106;
| }
0x0006272c cmp.w sb, 0x42 |
0x00062730 ite ls |
| if (sb > 0x42) {
0x00062732 movls sb, 0 | sb = 0;
| }
| if (sb > 0x42) {
0x00062736 mov.w sb, 1 | sb = 1;
| }
0x0006273a cmp r0, 0x42 |
0x0006273c ite ls |
| if (r0 > 0x42) {
0x0006273e movls r3, sb | r3 = sb;
| }
| if (r0 <= 0x42) {
0x00062740 orrhi r3, sb, 1 | r3 = sb | 1;
| }
0x00062744 cmp r3, 0 |
| if (r3 != 0) {
0x00062746 bne 0x627b6 | goto label_107;
| }
| label_25:
0x00062748 movs r3, 1 | r3 = 1;
0x0006274a mov sb, r3 | sb = r3;
| label_26:
0x0006274c adds r4, 1 | r4++;
0x0006274e adds r5, 0x10 | r5 += 0x10;
0x00062750 cmp r4, r6 |
0x00062752 ite ge |
| if (r4 < r6) {
0x00062754 movge sb, 0 | sb = 0;
| }
| if (r4 < r6) {
0x00062758 and sb, sb, 1 | sb &= 1;
| }
0x0006275c cmp.w sb, 0 |
| if (sb == 0) {
0x00062760 beq 0x627ce | goto label_108;
| }
0x00062762 ldr r3, [r5, -0x10] | r3 = *((r5 - 0x10));
0x00062766 ldrsh.w r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x0006276a b 0x626f6 |
| } while (1);
| label_104:
0x0006276c ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x0006276e ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00062770 ldr r3, [r3] | r3 = *(r3);
| label_29:
0x00062772 cmp r3, 1 |
| if (r3 <= 1) {
0x00062774 ble 0x62708 | goto label_23;
| }
0x00062776 ldrb r1, [r7, 2] | r1 = *((r7 + 2));
0x00062778 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x0006277a cmp.w fp, 0x89 |
0x0006277e it ne |
| if (fp != 0x89) {
0x00062780 cmpne r1, 0x89 | __asm ("cmpne r1, 0x89");
| }
0x00062782 it eq |
| if (fp != 0x89) {
0x00062784 ldreq r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
| }
0x00062786 cmp r2, 0 |
0x00062788 add.w r3, r3, r4, lsl 4 | r3 += (r4 << 4);
0x0006278c ldr r0, [r3, 8] | r0 = *((r3 + 8));
| if (r2 >= 0) {
0x0006278e bge 0x6270e | goto label_24;
| }
| label_105:
0x00062790 bl 0xc640 | r0 = fcn_0000c640 (r0);
0x00062794 cmp r0, 0x40 |
0x00062796 it ls |
| if (r0 <= 0x40) {
0x00062798 movls sb, 0x44 | sb = 0x44;
| goto label_109;
| }
| if (r0 > 0x40) {
| label_109:
0x0006279c bhi 0x62748 | goto label_25;
| }
| label_28:
0x0006279e orr r3, sb, 0x40 | r3 = sb | 0x40;
| label_27:
0x000627a2 subs r3, 0x41 | r3 -= 0x41;
0x000627a4 cmp r3, 1 |
| if (r3 < 1) {
0x000627a6 bls 0x62748 | goto label_25;
| }
0x000627a8 cmp.w sb, 0x42 |
0x000627ac ite ls |
| if (sb > 0x42) {
0x000627ae movls sb, 0 | sb = 0;
| }
| if (sb > 0x42) {
0x000627b2 mov.w sb, 1 | sb = 1;
| }
| label_107:
0x000627b6 mov r3, sb | r3 = sb;
0x000627b8 b 0x6274c | goto label_26;
| label_106:
0x000627ba cmp r0, 0x40 |
0x000627bc itt hi |
| if (r0 <= 0x40) {
0x000627be orrhi r3, r0, 0x40 | r3 = r0 | 0x40;
| }
| if (r0 <= 0x40) {
0x000627c2 uxtb r3, r3 | r3 = (int8_t) r3;
| goto label_110;
| }
| if (r0 > 0x40) {
| label_110:
0x000627c4 bhi 0x627a2 | goto label_27;
| }
0x000627c6 b 0x6279e | goto label_28;
| label_103:
0x000627c8 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000627ca ldr r3, [r3] | r3 = *(r3);
0x000627cc b 0x62772 | goto label_29;
| label_108:
0x000627ce cmp r3, 0 |
| if (r3 == 0) {
0x000627d0 beq.w 0x622a6 | goto label_4;
| }
| label_102:
0x000627d4 ldr.w r7, [sl, 8] | r7 = *((sl + 8));
0x000627d8 cmp r7, 0 |
| if (r7 == 0) {
0x000627da beq.w 0x622a6 | goto label_4;
| }
0x000627de movs r3, 1 | r3 = 1;
0x000627e0 sub.w r2, r6, 0x20 | r2 = r6 - 0x20;
0x000627e4 rsb.w r1, r6, 0x20 | r1 = 0x20 - r6;
0x000627e8 lsl.w r2, r3, r2 | r2 = r3 << r2;
0x000627ec lsr.w r1, r3, r1 | r1 = r3 >> r1;
0x000627f0 lsls r3, r6 | r3 <<= r6;
0x000627f2 ldr r4, [pc, 0x368] |
0x000627f4 subs r3, 1 | r3--;
0x000627f6 orr.w r2, r2, r1 | r2 |= r1;
0x000627fa str r3, [sp, 0x3c] | var_3ch = r3;
0x000627fc adc r3, r2, -1 | __asm ("adc r3, r2, -1");
0x00062800 add r4, pc | r4 = 0xc5362;
0x00062802 str r3, [sp, 0x40] | var_40h = r3;
0x00062804 str.w r8, [sp, 0x2c] | __asm ("str.w r8, [var_2ch]");
0x00062808 b 0x62812 |
| while (r3 < r6) {
| label_30:
0x0006280a ldr r7, [r7, 0x14] | r7 = *((r7 + 0x14));
0x0006280c cmp r7, 0 |
| if (r7 == 0) {
0x0006280e beq.w 0x62a9c | goto label_111;
| }
0x00062812 ldrh r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x00062814 cmp r3, r6 |
0x00062816 blt 0x6280a |
| }
0x00062818 ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x0006281a cmp r3, 0x3e |
0x0006281c it ls |
| if (r3 > 0x3e) {
0x0006281e cmpls r2, 0 | __asm ("cmpls r2, 0");
| goto label_112;
| }
| if (r3 != 0x3e) {
| label_112:
0x00062820 bne 0x6280a | goto label_30;
| }
0x00062822 ldr r2, [sp, 0x30] | r2 = var_30h;
| if (r2 == 0) {
0x00062824 cbz r2, 0x62838 | goto label_113;
| }
0x00062826 ldrh r2, [r7, 0x32] | r2 = *((r7 + 0x32));
0x00062828 cmp r2, r6 |
| if (r2 > r6) {
0x0006282a bgt 0x6280a | goto label_30;
| }
0x0006282c cmp r3, r6 |
| if (r3 <= r6) {
0x0006282e ble 0x62838 | goto label_113;
| }
0x00062830 ldrb.w r3, [r7, 0x36] | r3 = *((r7 + 0x36));
0x00062834 cmp r3, 0 |
| if (r3 == 0) {
0x00062836 beq 0x6280a | goto label_30;
| }
| label_113:
0x00062838 cmp r6, 0 |
0x0006283a itt le |
| if (r6 > 0) {
0x0006283c movle r8, 0 | r8 = 0;
| }
| if (r6 <= 0) {
0x00062840 mov sb, r8 | sb = r8;
| }
| if (r6 <= 0) {
0x00062842 ble 0x628c0 | goto label_33;
| }
0x00062844 movs r5, 0 | r5 = 0;
0x00062846 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00062848 mov r8, r5 | r8 = r5;
0x0006284a mov sb, r5 | sb = r5;
0x0006284c str r3, [sp, 0x10] | var_10h = r3;
| label_34:
0x0006284e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062850 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x00062852 ldrb r3, [r1] | r3 = *(r1);
0x00062854 cmp r3, 0xaf |
0x00062856 ite eq |
| if (r3 != 0xaf) {
0x00062858 ldrbeq r2, [r1, 2] | r2 = *((r1 + 2));
| }
| if (r3 == 0xaf) {
0x0006285a movne r2, r3 | r2 = r3;
| }
0x0006285c cmp r2, 0xb0 |
| if (r2 == 0xb0) {
0x0006285e beq.w 0x629f2 | goto label_114;
| }
0x00062862 cmp r2, 0x89 |
| if (r2 == 0x89) {
0x00062864 beq.w 0x629c8 | goto label_115;
| }
| label_35:
0x00062868 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006286a ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0006286c ldr.w sl, [r3, 8] | sl = *((r3 + 8));
0x00062870 mov r2, sl | r2 = sl;
0x00062872 bl 0x2d56c | fcn_0002d56c (r0, r1, r2);
0x00062876 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00062878 movs r1, 0 | r1 = 0;
0x0006287a ldrsh.w lr, [sl, 0x20] |
0x0006287e sub.w ip, r3, 2 |
| label_31:
0x00062882 ldrsh r3, [ip, 2]! | r3 = *((ip += 2));
0x00062886 cmp r3, lr |
| if (r3 != lr) {
0x00062888 bne 0x628ba | goto label_116;
| }
0x0006288a cmp r0, 0 |
| if (r0 == 0) {
0x0006288c beq 0x6297e | goto label_117;
| }
0x0006288e ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x00062890 ldr.w r3, [r3, r1, lsl 2] | offset_1 = r1 << 2;
| r3 = *((r3 + offset_1));
0x00062894 add.w sl, r3, -1 | sl = r3 + -1;
0x00062898 ldr r3, [r0] | r3 = *(r0);
0x0006289a add.w fp, r3, -1 |
| do {
| label_32:
0x0006289e ldrb r3, [fp, 1]! | r3 = *(arg_1h);
0x000628a2 ldrb r2, [sl, 1]! | r2 = *((sl += 1));
0x000628a6 cmp r3, r2 |
| if (r3 == r2) {
0x000628a8 beq 0x6297a | goto label_118;
| }
0x000628aa add r3, r4 | r3 += r4;
0x000628ac add r2, r4 | r2 += r4;
0x000628ae ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x000628b2 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x000628b6 cmp r3, r2 |
0x000628b8 beq 0x6289e |
| } while (r3 == r2);
| label_116:
0x000628ba adds r1, 1 | r1++;
0x000628bc cmp r1, r6 |
| if (r1 != r6) {
0x000628be bne 0x62882 | goto label_31;
| }
| label_33:
0x000628c0 ldrd r3, r2, [sp, 0x3c] | __asm ("ldrd r3, r2, [var_3ch]");
0x000628c4 cmp r2, sb |
0x000628c6 it eq |
| if (r2 != sb) {
0x000628c8 cmpeq r3, r8 | __asm ("cmpeq r3, r8");
| goto label_119;
| }
| if (r2 != sb) {
| label_119:
0x000628ca bne 0x6280a | goto label_30;
| }
0x000628cc ldrd r3, r8, [sp, 0x28] | __asm ("ldrd r3, r8, [var_28h]");
0x000628d0 ldrd r4, r3, [r3, 0x6c] | __asm ("ldrd r4, r3, [r3, 0x6c]");
0x000628d4 cmp r4, r3 |
| if (r4 >= r3) {
0x000628d6 bge.w 0x62cfc | goto label_120;
| }
0x000628da ldr r5, [sp, 0x28] | r5 = var_28h;
0x000628dc add.w r1, r4, r4, lsl 2 | r1 = r4 + (r4 << 2);
0x000628e0 adds r0, r4, 1 | r0 = r4 + 1;
0x000628e2 lsls r1, r1, 2 | r1 <<= 2;
0x000628e4 movs r2, 0 | r2 = 0;
0x000628e6 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x000628e8 str r0, [r5, 0x6c] | *((r5 + 0x6c)) = r0;
0x000628ea movs r0, 0x11 | r0 = 0x11;
0x000628ec str r0, [r3, r1] | *((r3 + r1)) = r0;
0x000628ee add r3, r1 | r3 += r1;
0x000628f0 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x000628f4 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_54:
0x000628f8 ldr r2, [pc, 0x264] |
0x000628fa movs r1, 0 | r1 = 0;
0x000628fc ldr r3, [r7] | r3 = *(r7);
0x000628fe mov r0, r8 | r0 = r8;
0x00062900 add r2, pc | r2 = 0xc5464;
0x00062902 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00062906 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00062908 movs r1, 0x62 | r1 = 0x62;
0x0006290a ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x0006290c ldr r0, [sp, 0x28] | r0 = var_28h;
0x0006290e str r2, [sp] | *(sp) = r2;
0x00062910 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00062912 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00062916 mov r1, r7 | r1 = r7;
0x00062918 mov r0, r8 | r0 = r8;
0x0006291a bl 0x2d434 | fcn_0002d434 (r0, r1);
0x0006291e ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00062920 ldrb r5, [r3] | r5 = *(r3);
0x00062922 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00062924 adds r5, 3 | r5 += 3;
| if (r3 != 0) {
0x00062926 cbz r3, 0x6293c |
0x00062928 ldr.w r2, [r8, 0x2c] | r2 = *((r8 + 0x2c));
0x0006292c cmp r6, 1 |
0x0006292e add.w r2, r2, 1 | r2++;
0x00062932 str.w r2, [r8, 0x2c] | __asm ("str.w r2, [r8, 0x2c]");
0x00062936 str r2, [r3] | *(r3) = r2;
| if (r6 == 1) {
0x00062938 beq.w 0x62d0e | goto label_121;
| }
| }
| label_55:
0x0006293c ldr r3, [sp, 0x28] | r3 = var_28h;
0x0006293e cmp r4, 0 |
0x00062940 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00062942 ldr r2, [r3, 0x6c] | r2 = *((r3 + 0x6c));
0x00062944 ldr r3, [r1] | r3 = *(r1);
0x00062946 it lt |
| if (r4 >= 0) {
0x00062948 addlt r4, r2, -1 | r4 = r2 + -1;
| }
0x0006294c ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00062950 cmp r3, 0 |
| if (r3 != 0) {
0x00062952 bne.w 0x62c54 | goto label_122;
| }
0x00062956 ldr r3, [r1, 0x68] | r3 = *((r1 + 0x68));
0x00062958 add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x0006295c add.w r3, r3, r4, lsl 2 | r3 += (r4 << 2);
| label_47:
0x00062960 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00062962 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00062964 cmp r3, 0 |
0x00062966 it ne |
| if (r3 == 0) {
0x00062968 cmpne r5, 3 | __asm ("cmpne r5, 3");
| goto label_123;
| }
| if (r3 == 0) {
| label_123:
0x0006296a beq.w 0x62276 | goto label_2;
| }
0x0006296e cmp r5, 4 |
| if (r5 == 4) {
0x00062970 beq.w 0x62276 | goto label_2;
| }
0x00062974 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062976 ldr r4, [r3, 0xc] | r4 = *((r3 + 0xc));
0x00062978 b 0x6225c | goto label_1;
| label_118:
0x0006297a cmp r3, 0 |
| if (r3 != 0) {
0x0006297c bne 0x6289e | goto label_32;
| }
| label_117:
0x0006297e cmp r6, r1 |
| if (r6 == r1) {
0x00062980 beq 0x628c0 | goto label_33;
| }
0x00062982 movs r0, 1 | r0 = 1;
0x00062984 sub.w r2, r1, 0x20 | r2 = r1 - 0x20;
0x00062988 rsb.w r3, r1, 0x20 | r3 = 0x20 - r1;
0x0006298c lsl.w r2, r0, r2 | r2 = r0 << r2;
0x00062990 lsr.w r3, r0, r3 | r3 = r0 >> r3;
0x00062994 lsls r0, r1 | r0 <<= r1;
0x00062996 orrs r2, r3 | r2 |= r3;
0x00062998 and.w r3, r0, r8 | r3 = r0 & r8;
0x0006299c and.w ip, r2, sb |
0x000629a0 orrs.w r3, r3, ip | r3 |= ip;
| if (r3 != r3) {
0x000629a4 bne 0x628c0 | goto label_33;
| }
0x000629a6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000629a8 orr.w r8, r0, r8 | r8 = r0 | r8;
0x000629ac orr.w sb, r2, sb | sb = r2 | sb;
| if (r3 != 0) {
0x000629b0 cbz r3, 0x629b6 |
0x000629b2 str.w r1, [r3, r5, lsl 2] | __asm ("str.w r1, [r3, r5, lsl 2]");
| }
0x000629b6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000629b8 adds r5, 1 | r5++;
0x000629ba cmp r5, r6 |
0x000629bc add.w r3, r3, 0x10 | r3 += 0x10;
0x000629c0 str r3, [sp, 0x10] | var_10h = r3;
| if (r5 != r6) {
0x000629c2 bne.w 0x6284e | goto label_34;
| }
0x000629c6 b 0x628c0 | goto label_33;
| label_115:
0x000629c8 ldr r2, [r1, 0x14] | r2 = *((r1 + 0x14));
0x000629ca ldr r2, [r2, 0x1c] | r2 = *((r2 + 0x1c));
0x000629cc ldr r2, [r2] | r2 = *(r2);
| label_36:
0x000629ce cmp r2, 1 |
| if (r2 <= 1) {
0x000629d0 ble.w 0x62868 | goto label_35;
| }
0x000629d4 ldrb r0, [r1, 2] | r0 = *((r1 + 2));
0x000629d6 ldr r2, [r1, 0x14] | r2 = *((r1 + 0x14));
0x000629d8 cmp r3, 0x89 |
0x000629da it ne |
| if (r3 != 0x89) {
0x000629dc cmpne r0, 0x89 | __asm ("cmpne r0, 0x89");
| }
0x000629de iteet eq |
| if (r3 != 0x89) {
0x000629e0 ldreq r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
| }
| if (r3 == 0x89) {
0x000629e2 addne r2, r2, r5, lsl 4 | r2 += (r5 << 4);
| }
| if (r3 != 0x89) {
0x000629e6 ldreq r1, [r2, 8] | r1 = *((r2 + 8));
| }
| if (r3 == 0x89) {
0x000629e8 add.w r3, r3, r5, lsl 4 | r3 += (r5 << 4);
| }
0x000629ec it eq |
| if (r3 != 0x89) {
0x000629ee ldreq r1, [r3, 8] | r1 = *((r3 + 8));
| }
0x000629f0 b 0x62868 | goto label_35;
| label_114:
0x000629f2 ldr r2, [r1, 0x14] | r2 = *((r1 + 0x14));
0x000629f4 ldr r2, [r2] | r2 = *(r2);
0x000629f6 b 0x629ce | goto label_36;
| label_99:
0x000629f8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000629fa ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x000629fe ldr.w r1, [sl] | r1 = *(sl);
0x00062a02 cmp r3, 1 |
| if (r3 != 1) {
0x00062a04 bne.w 0x626ba | goto label_37;
| }
0x00062a08 b 0x626d4 | goto label_38;
| label_101:
0x00062a0a ldr r3, [sp, 0x38] | r3 = var_38h;
0x00062a0c ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00062a0e ldrsh.w r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x00062a12 cmp r2, 0 |
| if (r2 >= 0) {
0x00062a14 bge.w 0x626e6 | goto label_39;
| }
0x00062a18 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00062a1a ldrd r4, r3, [r3, 0x6c] | __asm ("ldrd r4, r3, [r3, 0x6c]");
0x00062a1e cmp r4, r3 |
| if (r4 >= r3) {
0x00062a20 bge.w 0x62cb6 | goto label_124;
| }
0x00062a24 ldr r5, [sp, 0x28] | r5 = var_28h;
0x00062a26 add.w r1, r4, r4, lsl 2 | r1 = r4 + (r4 << 2);
0x00062a2a adds r0, r4, 1 | r0 = r4 + 1;
0x00062a2c lsls r1, r1, 2 | r1 <<= 2;
0x00062a2e movs r2, 0 | r2 = 0;
0x00062a30 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x00062a32 str r0, [r5, 0x6c] | *((r5 + 0x6c)) = r0;
0x00062a34 movs r0, 0x11 | r0 = 0x11;
0x00062a36 str r0, [r3, r1] | *((r3 + r1)) = r0;
0x00062a38 add r3, r1 | r3 += r1;
0x00062a3a strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x00062a3e strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_52:
0x00062a42 movs r3, 0x62 | r3 = 0x62;
0x00062a44 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00062a46 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00062a48 mov r0, r8 | r0 = r8;
0x00062a4a str r3, [sp] | *(sp) = r3;
0x00062a4c mov r3, sl | r3 = sl;
0x00062a4e bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x00062a52 ldr r2, [pc, 0x110] |
0x00062a54 movs r1, 0 | r1 = 0;
0x00062a56 ldr.w r3, [sl] | r3 = *(sl);
0x00062a5a mov r0, r8 | r0 = r8;
0x00062a5c add r2, pc | r2 = 0xc55c6;
0x00062a5e bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00062a62 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00062a64 cmp r4, 0 |
0x00062a66 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00062a68 ldr r2, [r3, 0x6c] | r2 = *((r3 + 0x6c));
0x00062a6a ldr r3, [r1] | r3 = *(r1);
0x00062a6c it lt |
| if (r4 >= 0) {
0x00062a6e addlt r4, r2, -1 | r4 = r2 + -1;
| }
0x00062a72 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00062a76 cmp r3, 0 |
| if (r3 != 0) {
0x00062a78 bne.w 0x62c5c | goto label_125;
| }
0x00062a7c ldr r3, [r1, 0x68] | r3 = *((r1 + 0x68));
0x00062a7e add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x00062a82 add.w r3, r3, r4, lsl 2 | r3 += (r4 << 2);
| label_48:
0x00062a86 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00062a88 movs r5, 1 | r5 = 1;
0x00062a8a ldr r3, [sp, 0x18] | r3 = var_18h;
0x00062a8c cmp r3, 0 |
| if (r3 == 0) {
0x00062a8e beq.w 0x62276 | goto label_2;
| }
0x00062a92 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062a94 movs r5, 1 | r5 = 1;
0x00062a96 ldr r4, [r3, 0xc] | r4 = *((r3 + 0xc));
0x00062a98 b.w 0x6225c | goto label_1;
| label_111:
0x00062a9c ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
0x00062aa0 b 0x622a6 | goto label_4;
| label_95:
0x00062aa2 ldr r3, [pc, 0xc4] |
0x00062aa4 add r3, pc | r3 = 0xc5612;
0x00062aa6 adds r3, 4 | r3 += 4;
0x00062aa8 b 0x6259e | goto label_40;
| label_65:
0x00062aaa ldr r3, [sp, 0x20] | r3 = var_20h;
0x00062aac str r3, [sp, 0x10] | var_10h = r3;
0x00062aae b.w 0x62104 | goto label_7;
| label_68:
0x00062ab2 cmp sb, r1 |
| if (sb >= r1) {
0x00062ab4 bge.w 0x62cc8 | goto label_126;
| }
0x00062ab8 add.w r1, sb, sb, lsl 2 | r1 = sb + (sb << 2);
0x00062abc ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x00062abe add.w r5, sb, 1 | r5 = sb + 1;
0x00062ac2 lsls r1, r1, 2 | r1 <<= 2;
0x00062ac4 str r5, [r4, 0x6c] | *((r4 + 0x6c)) = r5;
0x00062ac6 movs r5, 0x11 | r5 = 0x11;
0x00062ac8 str r5, [r2, r1] | *((r2 + r1)) = r5;
0x00062aca add r2, r1 | r2 += r1;
0x00062acc strd r3, r3, [r2, 4] | __asm ("strd r3, r3, [r2, 4]");
0x00062ad0 strd r3, r3, [r2, 0xc] | __asm ("strd r3, r3, [r2, 0xc]");
| label_53:
0x00062ad4 lsls r2, r0, 0x14 | r2 = r0 << 0x14;
| if (r2 < r0) {
0x00062ad6 bmi.w 0x62c90 | goto label_127;
| }
| label_50:
0x00062ada ldr r6, [sp, 0xc] | r6 = var_ch;
0x00062adc movs r5, 0 | r5 = 0;
0x00062ade str r5, [sp] | *(sp) = r5;
0x00062ae0 movs r1, 0xc | r1 = 0xc;
0x00062ae2 mov r0, r4 | r0 = r4;
0x00062ae4 ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
0x00062ae6 ldr r2, [r6, 0x30] | r2 = *((r6 + 0x30));
0x00062ae8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00062aec ldr r2, [sp, 0x14] | r2 = var_14h;
0x00062aee movs r1, 0x64 | r1 = 0x64;
0x00062af0 str r5, [sp] | *(sp) = r5;
0x00062af2 mov r0, r4 | r0 = r4;
0x00062af4 ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00062af6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00062afa ldr r3, [r4] | r3 = *(r4);
0x00062afc cmp sb, r5 |
0x00062afe ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x00062b00 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00062b04 it lt |
| if (sb >= r5) {
0x00062b06 addlt sb, r2, -1 | sb = r2 + -1;
| }
0x00062b0a cmp r3, 0 |
| if (r3 != 0) {
0x00062b0c bne.w 0x62c4c | goto label_128;
| }
0x00062b10 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00062b12 add.w r1, sb, sb, lsl 2 | r1 = sb + (sb << 2);
0x00062b16 add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
| label_46:
0x00062b1a str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00062b1c b.w 0x62242 | goto label_15;
| label_98:
0x00062b20 movs r3, 0 | r3 = 0;
0x00062b22 str r3, [sp, 0x34] | var_34h = r3;
0x00062b24 movs r3, 1 | r3 = 1;
0x00062b26 b 0x62694 | goto label_41;
| label_100:
0x00062b28 bl 0x53ee0 | fcn_00053ee0 (r0, r1, r2, r3);
0x00062b2c b 0x626d4 | goto label_38;
| label_75:
0x00062b6c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00062b6e movs r2, 0 | r2 = 0;
0x00062b70 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00062b72 ldr.w r0, [r8] | r0 = *(r8);
0x00062b76 str r3, [sp, 0x54] | var_54h = r3;
0x00062b78 movs r3, 0xb | r3 = 0xb;
0x00062b7a strb.w r3, [sp, 0x50] | var_50h = r3;
0x00062b7e str r2, [sp, 0x58] | var_58h = r2;
0x00062b80 str r2, [sp, 0x64] | var_64h = r2;
0x00062b82 strd r2, r2, [sp, 0x5c] | __asm ("strd r2, r2, [var_5ch]");
0x00062b86 bl 0x1bbb0 | fcn_0001bbb0 (r0, r1);
0x00062b8a movs r2, 0 | r2 = 0;
0x00062b8c str r0, [sp, 0x64] | var_64h = r0;
0x00062b8e mov r1, r7 | r1 = r7;
0x00062b90 str r2, [r7, 8] | *((r7 + 8)) = r2;
0x00062b92 ldr.w r0, [r8] | r0 = *(r8);
0x00062b96 bl 0x3103c | r0 = fcn_0003103c (r0, r1, r2);
0x00062b9a mov r7, r0 | r7 = r0;
0x00062b9c ldr.w r0, [r8] | r0 = *(r8);
0x00062ba0 ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x00062ba4 cmp r3, 0 |
| if (r3 == 0) {
0x00062ba6 beq 0x62ca4 | goto label_129;
| }
0x00062ba8 movs r3, 1 | r3 = 1;
0x00062baa str r3, [sp, 0x20] | var_20h = r3;
| if (r7 != 0) {
| label_51:
0x00062bac cbz r7, 0x62bba |
0x00062bae mov r1, r7 | r1 = r7;
0x00062bb0 movs r2, 1 | r2 = 1;
0x00062bb2 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x00062bb6 ldr.w r0, [r8] | r0 = *(r8);
| }
0x00062bba ldr r1, [sp, 0x64] | r1 = var_64h;
| if (r1 != 0) {
0x00062bbc cbz r1, 0x62bc2 |
0x00062bbe bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00062bc2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00062bc4 cmp r3, 0 |
| if (r3 != 0) {
0x00062bc6 bne.w 0x62cdc | goto label_130;
| }
0x00062bca cmp r6, 0 |
| if (r6 <= 0) {
0x00062bcc ble.w 0x62228 | goto label_8;
| }
0x00062bd0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00062bd2 mov r7, fp | r7 = fp;
0x00062bd4 str r4, [sp, 0x30] | var_30h = r4;
0x00062bd6 ldr r4, [sp, 0x20] | r4 = var_20h;
0x00062bd8 add.w fp, r3, 0x10 |
| do {
0x00062bdc ldrb r2, [r5] | r2 = *(r5);
0x00062bde cmp r2, 0xaf |
0x00062be0 ite eq |
| if (r2 != 0xaf) {
0x00062be2 ldrbeq r1, [r5, 2] | r1 = *((r5 + 2));
| }
| if (r2 == 0xaf) {
0x00062be4 movne r1, r2 | r1 = r2;
| }
0x00062be6 cmp r1, 0xb0 |
| if (r1 == 0xb0) {
0x00062be8 beq 0x62c32 | goto label_131;
| }
0x00062bea cmp r1, 0x89 |
| if (r1 == 0x89) {
0x00062bec beq 0x62c0a | goto label_132;
| }
| label_42:
0x00062bee mov r1, r5 | r1 = r5;
| label_43:
0x00062bf0 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00062bf2 adds r4, 1 | r4++;
0x00062bf4 mov r0, r8 | r0 = r8;
0x00062bf6 adds r7, 0x10 | r7 += 0x10;
0x00062bf8 bl 0x2d56c | fcn_0002d56c (r0, r1, r2);
0x00062bfc cmp r4, r6 |
0x00062bfe str r0, [fp, 4]! | *(arg_9ch) = r0;
0x00062c02 bne 0x62bdc |
| } while (r4 != r6);
0x00062c04 ldr r4, [sp, 0x30] | r4 = var_30h;
0x00062c06 b.w 0x62228 | goto label_8;
| label_132:
0x00062c0a ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x00062c0c ldr r1, [r1, 0x1c] | r1 = *((r1 + 0x1c));
0x00062c0e ldr r1, [r1] | r1 = *(r1);
| label_44:
0x00062c10 cmp r1, 1 |
| if (r1 <= 1) {
0x00062c12 ble 0x62bee | goto label_42;
| }
0x00062c14 ldrb r0, [r5, 2] | r0 = *((r5 + 2));
0x00062c16 ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x00062c18 cmp r2, 0x89 |
0x00062c1a it ne |
| if (r2 != 0x89) {
0x00062c1c cmpne r0, 0x89 | __asm ("cmpne r0, 0x89");
| }
0x00062c1e iteet eq |
| if (r2 != 0x89) {
0x00062c20 ldreq r2, [r1, 0x1c] | r2 = *((r1 + 0x1c));
| }
| if (r2 == 0x89) {
0x00062c22 addne r1, r1, r4, lsl 4 | r1 += (r4 << 4);
| }
| if (r2 != 0x89) {
0x00062c26 ldreq r1, [r1, 8] | r1 = *((r1 + 8));
| }
| if (r2 == 0x89) {
0x00062c28 add.w r2, r2, r4, lsl 4 | r2 += (r4 << 4);
| }
0x00062c2c it eq |
| if (r2 != 0x89) {
0x00062c2e ldreq r1, [r2, 8] | r1 = *((r2 + 8));
| }
0x00062c30 b 0x62bf0 | goto label_43;
| label_131:
0x00062c32 ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x00062c34 ldr r1, [r1] | r1 = *(r1);
0x00062c36 b 0x62c10 | goto label_44;
| label_86:
0x00062c38 ldr.w r5, [r8, 0x2c] | r5 = *((r8 + 0x2c));
0x00062c3c adds r5, 1 | r5++;
0x00062c3e mov r3, r5 | r3 = r5;
| label_57:
0x00062c40 adds r3, 1 | r3++;
0x00062c42 str r3, [sp, 0x34] | var_34h = r3;
0x00062c44 str.w r3, [r8, 0x2c] | __asm ("str.w r3, [r8, 0x2c]");
0x00062c48 b.w 0x623ac | goto label_45;
| label_128:
0x00062c4c ldr r3, [pc, 0xec] |
0x00062c4e add r3, pc | r3 = 0xc598e;
0x00062c50 adds r3, 4 | r3 += 4;
0x00062c52 b 0x62b1a | goto label_46;
| label_122:
0x00062c54 ldr r3, [pc, 0xe8] |
0x00062c56 add r3, pc | r3 = 0xc599a;
0x00062c58 adds r3, 4 | r3 += 4;
0x00062c5a b 0x62960 | goto label_47;
| label_125:
0x00062c5c ldr r3, [pc, 0xe4] |
0x00062c5e add r3, pc | r3 = 0xc59a6;
0x00062c60 adds r3, 4 | r3 += 4;
0x00062c62 b 0x62a86 | goto label_48;
| label_70:
0x00062c64 movs r3, 0 | r3 = 0;
0x00062c66 movs r1, 0x11 | r1 = 0x11;
0x00062c68 mov r2, r3 | r2 = r3;
0x00062c6a mov r0, r4 | r0 = r4;
0x00062c6c str r3, [sp] | *(sp) = r3;
0x00062c6e bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00062c72 ldrd sb, r1, [r4, 0x6c] | __asm ("ldrd sb, r1, [r4, 0x6c]");
0x00062c76 mov sl, r0 | sl = r0;
0x00062c78 b.w 0x62192 | goto label_13;
| label_69:
0x00062c7c movs r1, 0x45 | r1 = 0x45;
0x00062c7e mov r0, r4 | r0 = r4;
0x00062c80 str r2, [sp] | *(sp) = r2;
0x00062c82 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00062c86 ldrd sl, r1, [r4, 0x6c] | __asm ("ldrd sl, r1, [r4, 0x6c]");
0x00062c8a adds r0, 1 | r0++;
0x00062c8c b.w 0x62168 | goto label_49;
| label_127:
0x00062c90 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062c92 movs r1, 0 | r1 = 0;
0x00062c94 ldr r2, [pc, 0xb0] |
0x00062c96 mov r0, r8 | r0 = r8;
0x00062c98 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00062c9a add r2, pc | r2 = 0xc59e6;
0x00062c9c ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00062c9e bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00062ca2 b 0x62ada | goto label_50;
| label_129:
0x00062ca4 add r2, sp, 0x50 | r2 += var_50h;
0x00062ca6 mov r1, r7 | r1 = r7;
0x00062ca8 mov r0, r8 | r0 = r8;
0x00062caa bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x00062cae str r0, [sp, 0x20] | var_20h = r0;
0x00062cb0 ldr.w r0, [r8] | r0 = *(r8);
0x00062cb4 b 0x62bac | goto label_51;
| label_124:
0x00062cb6 movs r3, 0 | r3 = 0;
0x00062cb8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00062cba mov r2, r3 | r2 = r3;
0x00062cbc movs r1, 0x11 | r1 = 0x11;
0x00062cbe str r3, [sp] | *(sp) = r3;
0x00062cc0 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00062cc4 mov r4, r0 | r4 = r0;
0x00062cc6 b 0x62a42 | goto label_52;
| label_126:
0x00062cc8 mov r2, r3 | r2 = r3;
0x00062cca str r3, [sp] | *(sp) = r3;
0x00062ccc movs r1, 0x11 | r1 = 0x11;
0x00062cce mov r0, r4 | r0 = r4;
0x00062cd0 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00062cd4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00062cd6 mov sb, r0 | sb = r0;
0x00062cd8 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00062cda b 0x62ad4 | goto label_53;
| label_130:
0x00062cdc ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00062cde cmp r2, 0 |
| if (r2 == 0) {
0x00062ce0 beq.w 0x62242 | goto label_15;
| }
0x00062ce4 ldr r3, [r2] | r3 = *(r2);
0x00062ce6 subs r3, 1 | r3--;
0x00062ce8 str r3, [r2] | *(r2) = r3;
0x00062cea cmp r3, 0 |
| if (r3 != 0) {
0x00062cec bne.w 0x62242 | goto label_15;
| }
0x00062cf0 ldr r0, [r2, 0xc] | r0 = *((r2 + 0xc));
0x00062cf2 mov r1, r2 | r1 = r2;
0x00062cf4 bl 0x159dc | fcn_000159dc (r0, r1);
0x00062cf8 b.w 0x62242 | goto label_15;
| label_120:
0x00062cfc movs r3, 0 | r3 = 0;
0x00062cfe ldr r0, [sp, 0x28] | r0 = var_28h;
0x00062d00 mov r2, r3 | r2 = r3;
0x00062d02 movs r1, 0x11 | r1 = 0x11;
0x00062d04 str r3, [sp] | *(sp) = r3;
0x00062d06 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00062d0a mov r4, r0 | r4 = r0;
0x00062d0c b 0x628f8 | goto label_54;
| label_121:
0x00062d0e ldr r1, [sp, 0x14] | r1 = var_14h;
0x00062d10 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00062d12 bl 0x2b8d0 | fcn_0002b8d0 (r0, r1, r2);
0x00062d16 b 0x6293c | goto label_55;
| label_97:
0x00062d18 mov.w r2, 0x8000 | r2 = fcn.00008000;
0x00062d1c movs r3, 1 | r3 = 1;
0x00062d1e movt r2, 0xffff | r2 = (r2 & 0xFFFF) | 0xffff0000;
0x00062d22 lsls r3, r2 | r3 <<= r2;
0x00062d24 str r2, [sp, 0x34] | var_34h = r2;
0x00062d26 b 0x62694 | goto label_41;
| label_82:
0x00062d28 ldr.w r3, [r8, 0x84] | r3 = *((r8 + 0x84));
0x00062d2c str r3, [sp, 0x2c] | var_2ch = r3;
0x00062d2e b.w 0x620ee | goto label_56;
| label_80:
0x00062d32 blx 0x7e8c | fcn_00007e8c ();
| label_87:
0x00062d36 ldr.w r3, [r8, 0x2c] | r3 = *((r8 + 0x2c));
0x00062d3a b 0x62c40 | goto label_57;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x62d4c */
| #include <stdint.h>
|
; (fcn) fcn.00062d4c () | void fcn_00062d4c (int16_t arg_b8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_24h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00062d4c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00062d50 sub sp, 0x5c |
0x00062d52 str r2, [sp, 0x18] | var_18h = r2;
0x00062d54 mov r4, r0 | r4 = r0;
0x00062d56 mov r6, r1 | r6 = r1;
0x00062d58 ldr.w r2, [pc, 0x6f4] | r2 = *(0x00063450);
0x00062d5c str r3, [sp, 0x20] | var_20h = r3;
0x00062d5e ldr.w r3, [pc, 0x6f4] |
0x00062d62 add r2, pc | r2 += pc;
0x00062d64 ldrb.w r8, [r0, 0x17] | r8 = *((r0 + 0x17));
0x00062d68 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00062d6a ldr r3, [r3] | r3 = *(0x63456);
0x00062d6c str r3, [sp, 0x54] | var_54h = r3;
0x00062d6e mov.w r3, 0 | r3 = 0;
0x00062d72 movs r3, 0 | r3 = 0;
0x00062d74 str r3, [sp, 0x44] | var_44h = r3;
0x00062d76 str r3, [sp, 0x4c] | var_4ch = r3;
0x00062d78 ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x00062d7a str r3, [sp, 0x24] | var_24h = r3;
0x00062d7c bl 0x2645c | r0 = fcn_0002645c (r0, r1);
| if (r0 != 0) {
0x00062d80 cbz r0, 0x62da2 |
| label_1:
0x00062d82 ldr.w r2, [pc, 0x6d4] | r2 = *(0x00063458);
0x00062d86 ldr.w r3, [pc, 0x6cc] | r3 = *(0x63456);
0x00062d8a add r2, pc | r2 += pc;
0x00062d8c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00062d8e ldr r2, [r3] | r2 = *(0x63456);
0x00062d90 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00062d92 eors r2, r3 | r2 ^= r3;
0x00062d94 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00062d98 bne.w 0x6344a | goto label_33;
| }
0x00062d9c add sp, 0x5c |
0x00062d9e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00062da2 mov sl, r0 | sl = r0;
0x00062da4 mov r1, r6 | r1 = r6;
0x00062da6 ldr r0, [r4] | r0 = *(r4);
0x00062da8 bl 0x1bbb0 | fcn_0001bbb0 (r0, r1);
0x00062dac ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00062dae str r0, [sp, 0x28] | var_28h = r0;
0x00062db0 ldrb r3, [r2] | r3 = *(r2);
0x00062db2 cmp r3, 0xaf |
0x00062db4 it eq |
| if (r3 != 0xaf) {
0x00062db6 ldrbeq r3, [r2, 2] | r3 = *((r2 + 2));
| }
0x00062db8 cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x00062dba beq.w 0x630f6 | goto label_34;
| }
0x00062dbc strh r4, [r3, 0xc] | *((r3 + 0xc)) = r4;
0x00062dbe cmp r3, 0x89 |
0x00062dc0 ittt ne |
| if (r3 == 0x89) {
0x00062dc2 movne r2, 6 | r2 = 6;
| }
| if (r3 == 0x89) {
0x00062dc4 movne r5, 1 | r5 = 1;
| }
| if (r3 == 0x89) {
0x00062dc6 movne r7, r2 | r7 = r2;
| }
| if (r3 == 0x89) {
0x00062dc8 bne 0x62dd8 |
0x00062dca ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x00062dcc ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00062dce ldr r5, [r3] | r5 = *(r3);
0x00062dd0 add.w r7, r5, r5, lsl 2 | r7 = r5 + (r5 << 2);
0x00062dd4 adds r7, 1 | r7++;
0x00062dd6 mov r2, r7 | r2 = r7;
| }
| label_8:
0x00062dd8 ldr r1, [r4] | r1 = *(r4);
0x00062dda cmp r1, 0 |
| if (r1 == 0) {
0x00062ddc beq.w 0x630b6 | goto label_35;
| }
0x00062de0 mov r0, r1 | r0 = r1;
0x00062de2 movs r3, 0 | r3 = 0;
0x00062de4 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x00062de8 str r0, [sp, 0x14] | var_14h = r0;
| label_4:
0x00062dea ldr r3, [sp, 0x14] | r3 = var_14h;
0x00062dec cmp r3, 0 |
| if (r3 == 0) {
0x00062dee beq.w 0x630a8 | goto label_36;
| }
0x00062df2 mov r2, r7 | r2 = r7;
0x00062df4 mov r0, r3 | r0 = r3;
0x00062df6 movs r1, 0 | r1 = 0;
0x00062df8 blx 0x8264 | fcn_00008264 ();
0x00062dfc ldr r3, [r4] | r3 = *(r4);
0x00062dfe ldrb.w r2, [r3, 0x53] | r2 = *((r3 + 0x53));
0x00062e02 cmp r2, 0 |
| if (r2 != 0) {
0x00062e04 bne.w 0x6308c | goto label_37;
| }
| label_2:
0x00062e08 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00062e0a mov r1, r6 | r1 = r6;
0x00062e0c ldr r2, [sp, 0x20] | r2 = var_20h;
0x00062e0e mov.w sb, 0 | sb = 0;
0x00062e12 ldr r7, [r4, 8] | r7 = *((r4 + 8));
0x00062e14 mov r0, r4 | r0 = r4;
0x00062e16 cmp r3, r2 |
0x00062e18 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00062e1a ite eq |
| if (r3 != r2) {
0x00062e1c moveq r3, 0 | r3 = 0;
| }
| if (r3 == r2) {
0x00062e1e addne r3, sp, 0x44 | r3 += var_44h;
| }
0x00062e20 str r2, [sp] | *(sp) = r2;
0x00062e22 add r2, sp, 0x4c | r2 += var_4ch;
0x00062e24 str r2, [sp, 4] | var_4h = r2;
0x00062e26 movs r2, 3 | r2 = 3;
0x00062e28 bl 0x62000 | fcn_00062000 (r0, r1, r2, r3, r4, r5, r6);
0x00062e2c ldr r1, [sp, 0x24] | r1 = var_24h;
0x00062e2e add r2, sp, 0x48 | r2 += var_48h;
0x00062e30 str r0, [sp, 0x30] | var_30h = r0;
0x00062e32 mov r0, r4 | r0 = r4;
0x00062e34 strb.w sb, [r4, 0x17] | *((r4 + 0x17)) = sb;
0x00062e38 bl 0x69b84 | fcn_00069b84 (r0, r1, r2, r3, r4);
0x00062e3c cmp r5, sb |
0x00062e3e strb.w r8, [r4, 0x17] | *((r4 + 0x17)) = r8;
0x00062e42 str r0, [sp, 0x2c] | var_2ch = r0;
| if (r5 <= sb) {
0x00062e44 ble.w 0x633cc | goto label_38;
| }
0x00062e48 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00062e4a mov r3, sb | r3 = sb;
0x00062e4c sub.w sb, r2, 4 | sb = r2 - 4;
0x00062e50 mov r2, sb | r2 = sb;
0x00062e52 b 0x62e5c |
| while (r1 == r3) {
0x00062e54 adds r3, 1 | r3++;
0x00062e56 cmp r3, r5 |
| if (r3 == r5) {
0x00062e58 beq.w 0x630f0 | goto label_25;
| }
0x00062e5c ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x00062e60 cmp r1, r3 |
0x00062e62 beq 0x62e54 |
| }
0x00062e64 mov r1, r5 | r1 = r5;
0x00062e66 mov r0, r4 | r0 = r4;
0x00062e68 bl 0xf298 | fcn_0000f298 (r0, r1);
0x00062e6c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00062e6e str.w sl, [sp, 0x34] | __asm ("str.w sl, [var_34h]");
0x00062e72 mov sl, r0 | sl = r0;
0x00062e74 str r0, [sp, 0x1c] | var_1ch = r0;
0x00062e76 mov r8, r3 | r8 = r3;
0x00062e78 add.w fp, r5, r3 |
| do {
0x00062e7c ldr r3, [sb, 4]! | r3 = *((sb += 4));
0x00062e80 movs r2, 0 | r2 = 0;
0x00062e82 str r2, [sp] | *(sp) = r2;
0x00062e84 movs r1, 0x4d | r1 = 0x4d;
0x00062e86 mov r2, r8 | r2 = r8;
0x00062e88 mov r0, r7 | r0 = r7;
0x00062e8a add r3, sl | r3 += sl;
0x00062e8c add.w r8, r8, 1 | r8++;
0x00062e90 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00062e94 cmp fp, r8 |
0x00062e96 bne 0x62e7c |
| } while (fp != r8);
0x00062e98 ldr.w sl, [sp, 0x34] | sl = var_34h;
| label_7:
0x00062e9c ldr r3, [sp, 0x30] | r3 = var_30h;
0x00062e9e cmp r3, 5 |
| if (r3 == 5) {
0x00062ea0 beq.w 0x631a6 | goto label_39;
| }
0x00062ea4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00062ea6 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00062ea8 ldr.w sb, [r4, 0x24] | sb = *((r4 + 0x24));
0x00062eac cmp r3, r2 |
0x00062eae itett ne |
| if (r3 == r2) {
0x00062eb0 ldrne r3, [r4, 0x38] | r3 = *((r4 + 0x38));
| }
| if (r3 != r2) {
0x00062eb2 ldreq r3, [sp, 0x18] | r3 = var_18h;
| }
| if (r3 == r2) {
0x00062eb4 addne r3, r3, -1 | r3 += -1;
| }
| if (r3 != r2) {
0x00062eb8 mov sl, r3 | sl = r3;
| }
0x00062eba it ne |
| if (r3 == r2) {
0x00062ebc strne r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
| }
0x00062ebe cmp.w sb, 0 |
| if (sb != 0) {
0x00062ec2 bne.w 0x6307a | goto label_21;
| }
0x00062ec6 cmp r5, 0 |
0x00062ec8 ittt gt |
| if (r5 <= 0) {
0x00062eca movgt r8, sb | r8 = sb;
| }
| if (r5 <= 0) {
0x00062ecc movgt fp, r3 |
| }
| if (r5 <= 0) {
0x00062ece strgt sb, [sp, 0x34] | var_34h = sb;
| }
| if (r5 > 0) {
0x00062ed2 bgt 0x62ede | goto label_40;
| }
0x00062ed4 b 0x62f24 | goto label_41;
| do {
| label_0:
0x00062ed6 add.w r8, r8, 1 | r8++;
0x00062eda cmp r8, r5 |
| if (r8 == r5) {
0x00062edc beq 0x62f20 | goto label_42;
| }
| label_40:
0x00062ede ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00062ee0 ldrb r3, [r0] | r3 = *(r0);
0x00062ee2 cmp r3, 0xaf |
0x00062ee4 ite eq |
| if (r3 != 0xaf) {
0x00062ee6 ldrbeq r2, [r0, 2] | r2 = *((r0 + 2));
| }
| if (r3 == 0xaf) {
0x00062ee8 movne r2, r3 | r2 = r3;
| }
0x00062eea cmp r2, 0xb0 |
| if (r2 == 0xb0) {
0x00062eec beq.w 0x630ea | goto label_43;
| }
0x00062ef0 cmp r2, 0x89 |
| if (r2 == 0x89) {
0x00062ef2 beq.w 0x630c0 | goto label_44;
| }
| label_5:
0x00062ef6 ldr r3, [r4] | r3 = *(r4);
0x00062ef8 ldrb.w sb, [r3, 0x53] | sb = *((r3 + 0x53));
0x00062efc cmp.w sb, 0 |
| if (sb != 0) {
0x00062f00 bne.w 0x63088 | goto label_10;
| }
0x00062f04 bl 0x9c80 | r0 = fcn_00009c80 (r0);
0x00062f08 cmp r0, 0 |
0x00062f0a beq 0x62ed6 |
| } while (r0 == 0);
0x00062f0c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00062f0e mov r3, fp | r3 = fp;
0x00062f10 movs r1, 0x32 | r1 = 0x32;
0x00062f12 mov r0, r7 | r0 = r7;
0x00062f14 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00062f18 add r2, r8 | r2 += r8;
0x00062f1a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00062f1e b 0x62ed6 | goto label_0;
| label_42:
0x00062f20 ldr.w sb, [sp, 0x34] | sb = var_34h;
| label_41:
0x00062f24 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00062f26 ldr.w fp, [sp, 0x4c] | fp = var_4ch;
0x00062f2a cmp r3, 1 |
| if (r3 == 1) {
0x00062f2c beq.w 0x6336a | goto label_45;
| }
0x00062f30 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00062f32 movs r6, 0 | r6 = 0;
0x00062f34 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00062f36 movs r1, 0x5c | r1 = 0x5c;
0x00062f38 mov r0, r7 | r0 = r7;
0x00062f3a str r5, [sp, 8] | var_8h = r5;
0x00062f3c str r3, [sp, 4] | var_4h = r3;
0x00062f3e mov r3, r5 | r3 = r5;
0x00062f40 str r6, [sp] | *(sp) = r6;
0x00062f42 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00062f46 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00062f48 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00062f4a cmp r3, r2 |
| if (r3 == r2) {
0x00062f4c beq.w 0x633f0 | goto label_46;
| }
0x00062f50 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00062f52 mov r3, r6 | r3 = r6;
0x00062f54 movs r1, 0x1e | r1 = 0x1e;
0x00062f56 mov r0, r7 | r0 = r7;
0x00062f58 str r5, [sp, 4] | var_4h = r5;
0x00062f5a str r2, [sp] | *(sp) = r2;
0x00062f5c mov r2, fp | r2 = fp;
0x00062f5e bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00062f62 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00062f64 str r0, [sp, 0x30] | var_30h = r0;
0x00062f66 cmp r2, 0 |
| if (r2 != 0) {
0x00062f68 bne.w 0x63166 | goto label_47;
| }
| label_15:
0x00062f6c cmp.w sl, 0 |
| if (sl != 0) {
0x00062f70 bne.w 0x633b4 | goto label_48;
| }
| label_24:
0x00062f74 ldr r3, [r7, 0x6c] | r3 = *((r7 + 0x6c));
0x00062f76 mov r2, r3 | r2 = r3;
0x00062f78 str r3, [sp, 0x34] | var_34h = r3;
0x00062f7a ldr r3, [r7, 0x70] | r3 = *((r7 + 0x70));
0x00062f7c cmp r2, r3 |
| if (r2 >= r3) {
0x00062f7e bge.w 0x633dc | goto label_49;
| }
0x00062f82 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00062f84 movs r0, 0 | r0 = 0;
0x00062f86 ldr r1, [r7, 0x68] | r1 = *((r7 + 0x68));
0x00062f88 mov.w ip, 0x25 |
0x00062f8c ldr r6, [sp, 0x18] | r6 = var_18h;
0x00062f8e add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x00062f92 adds r2, 1 | r2++;
0x00062f94 str r2, [r7, 0x6c] | *((r7 + 0x6c)) = r2;
0x00062f96 lsls r3, r3, 2 | r3 <<= 2;
0x00062f98 adds r2, r1, r3 | r2 = r1 + r3;
0x00062f9a str.w fp, [r2, 4] | __asm ("str.w fp, [r2, 4]");
0x00062f9e strd r6, r0, [r2, 8] | __asm ("strd r6, r0, [r2, 8]");
0x00062fa2 str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x00062fa4 str.w ip, [r1, r3] | __asm ("str.w ip, [r1, r3]");
| label_26:
0x00062fa8 cmp r5, 1 |
| if (r5 <= 1) {
0x00062faa ble.w 0x6314c | goto label_50;
| }
0x00062fae ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00062fb0 add.w sl, r3, -1 | sl = r3 + -1;
0x00062fb4 str.w sl, [r4, 0x38] | __asm ("str.w sl, [r4, 0x38]");
| label_13:
0x00062fb8 ldr.w r8, [sp, 0x24] | r8 = var_24h;
0x00062fbc str r5, [sp, 0x24] | var_24h = r5;
| do {
0x00062fbe ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x00062fc0 cmp r3, 0 |
| if (r3 == 0) {
0x00062fc2 beq.w 0x6318e | goto label_51;
| }
0x00062fc6 subs r3, 1 | r3--;
0x00062fc8 uxtb r3, r3 | r3 = (int8_t) r3;
0x00062fca strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x00062fcc add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x00062fd0 ldr.w r5, [r3, 0x94] | r5 = *((r3 + 0x94));
| label_16:
0x00062fd4 ldrb.w r3, [r8] | r3 = *(r8);
0x00062fd8 cmp r3, 0xaf |
0x00062fda ite eq |
| if (r3 != 0xaf) {
0x00062fdc ldrbeq r2, [r8, 2] | r2 = *((r8 + 2));
| }
| if (r3 != 0xaf) {
0x00062fe0 mov r2, r3 | r2 = r3;
| }
0x00062fe2 cmp r2, 0xb0 |
| if (r2 == 0xb0) {
0x00062fe4 beq.w 0x63196 | goto label_52;
| }
0x00062fe8 cmp r2, 0x89 |
| if (r2 == 0x89) {
0x00062fea beq.w 0x6311c | goto label_53;
| }
0x00062fec strh r7, [r2, 4] | *((r2 + 4)) = r7;
| label_11:
0x00062fee mov r1, r8 | r1 = r8;
| label_12:
0x00062ff0 mov r0, r4 | r0 = r4;
0x00062ff2 bl 0x2d47c | fcn_0002d47c (r0, r1);
0x00062ff6 mov r3, sb | r3 = sb;
0x00062ff8 mov r6, r0 | r6 = r0;
0x00062ffa mov r2, fp | r2 = fp;
0x00062ffc movs r1, 0x5b | r1 = 0x5b;
0x00062ffe mov r0, r7 | r0 = r7;
0x00063000 str r5, [sp] | *(sp) = r5;
0x00063002 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00063006 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00063008 mvn r3, 1 | r3 = ~1;
0x0006300c str r3, [sp, 8] | var_8h = r3;
0x0006300e movs r1, 0x34 | r1 = 0x34;
0x00063010 mov r3, sl | r3 = sl;
0x00063012 mov r0, r7 | r0 = r7;
0x00063014 add r2, sb | r2 += sb;
0x00063016 str r6, [sp, 4] | var_4h = r6;
0x00063018 str r5, [sp] | *(sp) = r5;
0x0006301a bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
| if (r5 != 0) {
0x0006301e cbz r5, 0x63032 |
0x00063020 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x00063022 cmp r3, 7 |
0x00063024 itttt ls |
| if (r3 > 7) {
0x00063026 addls r2, r4, r3, lsl 2 | r2 = r4 + (r3 << 2);
| }
| if (r3 > 7) {
0x0006302a addls r3, 1 | r3++;
| }
| if (r3 > 7) {
0x0006302c strbls r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
| }
| if (r3 <= 7) {
0x0006302e str.w r5, [r2, 0x94] | __asm ("str.w r5, [r2, 0x94]");
| }
0x00063030 str r4, [r2, r2] | *((r2 + r2)) = r4;
| }
0x00063032 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00063034 add.w sb, sb, 1 | sb++;
0x00063038 cmp sb, r3 |
0x0006303a blt 0x62fbe |
| } while (sb < r3);
0x0006303c movs r2, 0 | r2 = 0;
0x0006303e mov r5, r3 | r5 = r3;
0x00063040 movs r1, 0xb | r1 = 0xb;
0x00063042 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00063044 mov r0, r7 | r0 = r7;
0x00063046 str r2, [sp] | *(sp) = r2;
0x00063048 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006304c cmp r5, 1 |
| if (r5 > 1) {
0x0006304e bgt.w 0x63332 | goto label_54;
| }
| label_14:
0x00063052 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00063054 ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x00063056 cmp r3, 0 |
0x00063058 itt lt |
| if (r3 >= 0) {
0x0006305a addlt r3, r2, -1 | r3 = r2 + -1;
| }
| if (r3 < 0) {
0x0006305e str r3, [sp, 0x30] | var_30h = r3;
| }
0x00063060 ldr r3, [r7] | r3 = *(r7);
0x00063062 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00063066 cmp r3, 0 |
| if (r3 != 0) {
0x00063068 bne.w 0x6319e | goto label_55;
| }
0x0006306c ldr r1, [sp, 0x30] | r1 = var_30h;
0x0006306e ldr r3, [r7, 0x68] | r3 = *((r7 + 0x68));
0x00063070 add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x00063074 add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
| label_18:
0x00063078 str r2, [r3, 8] | *((r3 + 8)) = r2;
| label_21:
0x0006307a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006307c ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0006307e cmp r3, r2 |
0x00063080 it ne |
| if (r3 != r2) {
0x00063082 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r3 != r2) {
0x00063084 bne 0x63104 | goto label_56;
| }
| label_9:
0x00063086 ldr r3, [r4] | r3 = *(r4);
| label_10:
0x00063088 ldr r2, [sp, 0x14] | r2 = var_14h;
| if (r2 != 0) {
0x0006308a cbz r2, 0x63096 |
| label_37:
0x0006308c mov r0, r3 | r0 = r3;
0x0006308e ldr r1, [sp, 0x14] | r1 = var_14h;
0x00063090 bl 0x159dc | fcn_000159dc (r0, r1);
0x00063094 ldr r3, [r4] | r3 = *(r4);
| }
| label_3:
0x00063096 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00063098 cmp r2, 0 |
| if (r2 == 0) {
0x0006309a beq.w 0x62d82 | goto label_1;
| }
0x0006309e mov r1, r2 | r1 = r2;
0x000630a0 mov r0, r3 | r0 = r3;
0x000630a2 bl 0x159dc | fcn_000159dc (r0, r1);
0x000630a6 b 0x62d82 | goto label_1;
| label_36:
0x000630a8 ldr r3, [r4] | r3 = *(r4);
0x000630aa ldrb.w r2, [r3, 0x53] | r2 = *((r3 + 0x53));
0x000630ae cmp r2, 0 |
| if (r2 == 0) {
0x000630b0 beq.w 0x62e08 | goto label_2;
| }
0x000630b4 b 0x63096 | goto label_3;
| label_35:
0x000630b6 mov r0, r2 | r0 = r2;
0x000630b8 bl 0x12abc | fcn_00012abc (r0);
0x000630bc str r0, [sp, 0x14] | var_14h = r0;
0x000630be b 0x62dea | goto label_4;
| label_44:
0x000630c0 ldr r2, [r0, 0x14] | r2 = *((r0 + 0x14));
0x000630c2 ldr r2, [r2, 0x1c] | r2 = *((r2 + 0x1c));
0x000630c4 ldr r2, [r2] | r2 = *(r2);
| label_6:
0x000630c6 cmp r2, 1 |
| if (r2 <= 1) {
0x000630c8 ble.w 0x62ef6 | goto label_5;
| }
0x000630cc ldrb r1, [r0, 2] | r1 = *((r0 + 2));
0x000630ce ldr r2, [r0, 0x14] | r2 = *((r0 + 0x14));
0x000630d0 cmp r3, 0x89 |
0x000630d2 it ne |
| if (r3 != 0x89) {
0x000630d4 cmpne r1, 0x89 | __asm ("cmpne r1, 0x89");
| }
0x000630d6 iteet eq |
| if (r3 != 0x89) {
0x000630d8 ldreq r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
| }
| if (r3 == 0x89) {
0x000630da addne r2, r2, r8, lsl 4 | r2 += (r8 << 4);
| }
| if (r3 != 0x89) {
0x000630de ldreq r0, [r2, 8] | r0 = *((r2 + 8));
| }
| if (r3 == 0x89) {
0x000630e0 add.w r3, r3, r8, lsl 4 | r3 += (r8 << 4);
| }
0x000630e4 it eq |
| if (r3 != 0x89) {
0x000630e6 ldreq r0, [r3, 8] | r0 = *((r3 + 8));
| }
0x000630e8 b 0x62ef6 | goto label_5;
| label_43:
0x000630ea ldr r2, [r0, 0x14] | r2 = *((r0 + 0x14));
0x000630ec ldr r2, [r2] | r2 = *(r2);
0x000630ee b 0x630c6 | goto label_6;
| label_25:
0x000630f0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000630f2 str r3, [sp, 0x1c] | var_1ch = r3;
0x000630f4 b 0x62e9c | goto label_7;
| label_34:
0x000630f6 ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x000630f8 ldr r5, [r3] | r5 = *(r3);
0x000630fa add.w r7, r5, r5, lsl 2 | r7 = r5 + (r5 << 2);
0x000630fe adds r7, 1 | r7++;
0x00063100 mov r2, r7 | r2 = r7;
0x00063102 b 0x62dd8 | goto label_8;
| label_56:
0x00063104 ldrb r2, [r4, 0x13] | r2 = *((r4 + 0x13));
0x00063106 cmp r2, 7 |
| if (r2 > 7) {
0x00063108 bhi 0x63086 | goto label_9;
| }
0x0006310a add.w r1, r4, r2, lsl 2 | r1 = r4 + (r2 << 2);
0x0006310e adds r2, 1 | r2++;
0x00063110 strb r2, [r4, 0x13] | *((r4 + 0x13)) = r2;
0x00063112 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00063114 ldr r3, [r4] | r3 = *(r4);
0x00063116 str.w r2, [r1, 0x94] | __asm ("str.w r2, [r1, 0x94]");
0x0006311a b 0x63088 | goto label_10;
| label_53:
0x0006311c ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x00063120 ldr r2, [r2, 0x1c] | r2 = *((r2 + 0x1c));
0x00063122 ldr r2, [r2] | r2 = *(r2);
| label_17:
0x00063124 cmp r2, 1 |
| if (r2 <= 1) {
0x00063126 ble.w 0x62fee | goto label_11;
| }
0x0006312a ldrb.w r1, [r8, 2] | r1 = *((r8 + 2));
0x0006312e ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x00063132 cmp r3, 0x89 |
0x00063134 it ne |
| if (r3 != 0x89) {
0x00063136 cmpne r1, 0x89 | __asm ("cmpne r1, 0x89");
| }
0x00063138 iteet eq |
| if (r3 != 0x89) {
0x0006313a ldreq r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
| }
| if (r3 == 0x89) {
0x0006313c addne r2, r2, sb, lsl 4 | r2 += (sb << 4);
| }
| if (r3 != 0x89) {
0x00063140 ldreq r1, [r2, 8] | r1 = *((r2 + 8));
| }
| if (r3 == 0x89) {
0x00063142 add.w r3, r3, sb, lsl 4 | r3 += (sb << 4);
| }
0x00063144 asrs r1, r1, 0xc | r1 >>= 0xc;
0x00063146 it eq |
| if (r3 != 0x89) {
0x00063148 ldreq r1, [r3, 8] | r1 = *((r3 + 8));
| }
0x0006314a b 0x62ff0 | goto label_12;
| label_50:
0x0006314c it eq |
| if (r3 == 0x89) {
0x0006314e ldreq sl, [sp, 0x18] | sl = var_18h;
| goto label_57;
| }
| if (r3 == 0x89) {
| label_57:
0x00063152 beq.w 0x62fb8 | goto label_13;
| }
0x00063156 movs r2, 0 | r2 = 0;
0x00063158 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006315a movs r1, 0xb | r1 = 0xb;
0x0006315c mov r0, r7 | r0 = r7;
0x0006315e str r2, [sp] | *(sp) = r2;
0x00063160 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00063164 b 0x63052 | goto label_14;
| label_47:
0x00063166 cmp r5, 1 |
| if (r5 != 1) {
0x00063168 bne.w 0x62f6c | goto label_15;
| }
| label_23:
0x0006316c movs r3, 0 | r3 = 0;
0x0006316e movs r1, 0x33 | r1 = 0x33;
0x00063170 str r3, [sp] | *(sp) = r3;
0x00063172 mov r0, r7 | r0 = r7;
0x00063174 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00063176 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_22:
0x0006317a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006317c ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006317e cmp r3, r2 |
| if (r3 != r2) {
0x00063180 bne.w 0x62f6c | goto label_15;
| }
0x00063184 mov r1, r3 | r1 = r3;
0x00063186 mov r0, r7 | r0 = r7;
0x00063188 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0006318c b 0x62f6c | goto label_15;
| label_51:
0x0006318e ldr r5, [r4, 0x2c] | r5 = *((r4 + 0x2c));
0x00063190 adds r5, 1 | r5++;
0x00063192 str r5, [r4, 0x2c] | *((r4 + 0x2c)) = r5;
0x00063194 b 0x62fd4 | goto label_16;
| label_52:
0x00063196 ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x0006319a ldr r2, [r2] | r2 = *(r2);
0x0006319c b 0x63124 | goto label_17;
| label_55:
0x0006319e ldr r3, [pc, 0x2bc] |
0x000631a0 add r3, pc | r3 = 0xc6602;
0x000631a2 adds r3, 4 | r3 += 4;
0x000631a4 b 0x63078 | goto label_18;
| label_39:
0x000631a6 ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x000631a8 mov r0, r4 | r0 = r4;
0x000631aa ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x000631ac bl 0x2d47c | fcn_0002d47c (r0, r1);
0x000631b0 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x000631b2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000631b4 str r0, [sp, 0x30] | var_30h = r0;
0x000631b6 add.w fp, r3, -1 |
0x000631ba str r3, [sp, 0x3c] | var_3ch = r3;
0x000631bc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000631be str.w fp, [r4, 0x38] | __asm ("str.w fp, [r4, 0x38]");
0x000631c2 cmp r3, r2 |
| if (r3 == r2) {
0x000631c4 beq.w 0x63402 | goto label_58;
| }
0x000631c8 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x000631ca cmp r3, 0 |
| if (r3 == 0) {
0x000631cc beq.w 0x63424 | goto label_59;
| }
0x000631d0 subs r3, 1 | r3--;
0x000631d2 uxtb r3, r3 | r3 = (int8_t) r3;
0x000631d4 strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x000631d6 add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x000631da ldr.w sb, [r3, 0x94] | sb = *((r3 + 0x94));
| label_31:
0x000631de ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000631e0 movs r1, 0x66 | r1 = 0x66;
0x000631e2 mov r0, r7 | r0 = r7;
0x000631e4 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000631e8 mov r2, r3 | r2 = r3;
0x000631ea bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000631ee ldr r3, [r6] | r3 = *(r6);
0x000631f0 cmp r3, 0 |
| if (r3 <= 0) {
0x000631f2 ble 0x632de | goto label_60;
| }
| label_27:
0x000631f4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000631f6 mov r5, r6 | r5 = r6;
0x000631f8 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000631fa add.w r8, sp, 0x50 | r8 += var_50h;
0x000631fe str.w sb, [sp, 0x24] | __asm ("str.w sb, [var_24h]");
0x00063202 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x00063206 subs r3, r3, r2 | r3 -= r2;
0x00063208 it ne |
| if (r3 == r3) {
0x0006320a movne r3, 1 | r3 = 1;
| }
0x0006320c str r3, [sp, 0x34] | var_34h = r3;
0x0006320e b 0x6327a |
| while (r2 == 0) {
| label_19:
0x00063210 ldr r2, [sp, 0x50] | r2 = var_50h;
| if (r2 != 0) {
0x00063212 cbz r2, 0x63226 |
0x00063214 ldrb r1, [r4, 0x13] | r1 = *((r4 + 0x13));
0x00063216 cmp r1, 7 |
0x00063218 itttt ls |
| if (r1 > 7) {
0x0006321a addls r0, r4, r1, lsl 2 | r0 = r4 + (r1 << 2);
| }
| if (r1 > 7) {
0x0006321e addls r1, 1 | r1++;
| }
| if (r1 > 7) {
0x00063220 strbls r1, [r4, 0x13] | *((r4 + 0x13)) = r1;
| }
| if (r1 > 7) {
0x00063222 str.w r2, [r0, 0x94] | __asm ("str.w r2, [r0, 0x94]");
| goto label_61;
| }
| }
| label_61:
0x00063226 ldr r2, [r6] | r2 = *(r6);
0x00063228 ldr r1, [sp, 0x34] | r1 = var_34h;
0x0006322a subs r2, 1 | r2--;
0x0006322c cmp r2, sl |
0x0006322e it gt |
| if (r2 <= sl) {
0x00063230 orrgt r1, r1, 1 | r1 |= 1;
| }
0x00063234 mvn r2, 1 | r2 = ~1;
0x00063238 str r2, [sp, 8] | var_8h = r2;
0x0006323a ldr r2, [sp, 0x30] | r2 = var_30h;
0x0006323c strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00063240 cmp r1, 0 |
| if (r1 == 0) {
0x00063242 beq 0x632aa | goto label_62;
| }
0x00063244 cmp sb, r3 |
0x00063246 ite ne |
| if (sb == r3) {
0x00063248 movne r1, 0x35 | r1 = 0x35;
| }
| if (sb != r3) {
0x0006324a moveq r1, 0x33 | r1 = 0x33;
| }
0x0006324c mov r2, sb | r2 = sb;
0x0006324e mov r3, fp | r3 = fp;
0x00063250 mov r0, r7 | r0 = r7;
0x00063252 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00063256 ldr r3, [r7, 0x6c] | r3 = *((r7 + 0x6c));
0x00063258 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0006325a cmp r3, 0 |
0x0006325c ldrb r1, [r2] | r1 = *(r2);
| if (r3 > 0) {
0x0006325e ble 0x6326e |
0x00063260 ldr r2, [r7, 0x68] | r2 = *((r7 + 0x68));
0x00063262 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00063266 add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0006326a strh r1, [r2, -0x12] | *((r2 - 0x12)) = r1;
| }
| label_20:
0x0006326e ldr r3, [r6] | r3 = *(r6);
0x00063270 add.w sl, sl, 1 | sl++;
0x00063274 adds r5, 0x10 | r5 += 0x10;
0x00063276 cmp r3, sl |
| if (r3 <= sl) {
0x00063278 ble 0x632da | goto label_63;
| }
0x0006327a mov r2, r8 | r2 = r8;
0x0006327c ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0006327e mov r0, r4 | r0 = r4;
0x00063280 bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x00063284 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00063286 mov r3, r0 | r3 = r0;
0x00063288 cmp r2, 0 |
0x0006328a beq 0x63210 |
| }
0x0006328c str r0, [sp, 0x38] | var_38h = r0;
0x0006328e ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00063290 bl 0x9c80 | fcn_00009c80 (r0);
0x00063294 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00063296 cmp r0, 0 |
| if (r0 == 0) {
0x00063298 beq 0x63210 | goto label_19;
| }
0x0006329a ldr r2, [sp, 0x24] | r2 = var_24h;
0x0006329c movs r1, 0x66 | r1 = 0x66;
0x0006329e mov r0, r7 | r0 = r7;
0x000632a0 str r2, [sp] | *(sp) = r2;
0x000632a2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000632a6 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000632a8 b 0x63210 | goto label_19;
| label_62:
0x000632aa cmp sb, r3 |
0x000632ac ite ne |
| if (sb == r3) {
0x000632ae movne r1, 0x34 | r1 = 0x34;
| }
| if (sb != r3) {
0x000632b0 moveq r1, 0x32 | r1 = 0x32;
| }
0x000632b2 mov r2, sb | r2 = sb;
0x000632b4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000632b6 mov r0, r7 | r0 = r7;
0x000632b8 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000632bc ldr r3, [r7, 0x6c] | r3 = *((r7 + 0x6c));
0x000632be ldr r2, [sp, 0x28] | r2 = var_28h;
0x000632c0 cmp r3, 0 |
0x000632c2 ldrb r2, [r2] | r2 = *(r2);
| if (r3 <= 0) {
0x000632c4 ble 0x6326e | goto label_20;
| }
0x000632c6 ldr r1, [r7, 0x68] | r1 = *((r7 + 0x68));
0x000632c8 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000632cc orr r2, r2, 0x10 | r2 |= 0x10;
0x000632d0 add.w r1, r1, r3, lsl 2 | r1 += (r3 << 2);
0x000632d4 strh r2, [r1, -0x12] | *((r1 - 0x12)) = r2;
0x000632d8 b 0x6326e | goto label_20;
| label_63:
0x000632da ldr.w sb, [sp, 0x24] | sb = var_24h;
| label_60:
0x000632de cmp.w sb, 0 |
| if (sb != 0) {
0x000632e2 beq 0x632fc |
0x000632e4 movs r2, 0 | r2 = 0;
0x000632e6 movs r1, 0x32 | r1 = 0x32;
0x000632e8 str r2, [sp] | *(sp) = r2;
0x000632ea mov r0, r7 | r0 = r7;
0x000632ec ldr r3, [sp, 0x20] | r3 = var_20h;
0x000632ee mov r2, sb | r2 = sb;
0x000632f0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000632f4 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000632f6 mov r0, r7 | r0 = r7;
0x000632f8 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
| }
| label_28:
0x000632fc ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x000632fe ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x00063302 cmn r2, r3 |
| if (r2 < r3) {
0x00063304 bmi.w 0x63410 | goto label_64;
| }
0x00063308 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006330a ldr r1, [r7, 0x6c] | r1 = *((r7 + 0x6c));
0x0006330c ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0006330e lsls r3, r3, 2 | r3 <<= 2;
0x00063310 rsbs r3, r3, 0 | r3 -= ;
0x00063312 str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_29:
0x00063314 cmp.w sb, 0 |
| if (sb == 0) {
0x00063318 beq.w 0x6307a | goto label_21;
| }
0x0006331c ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0006331e cmp r3, 7 |
| if (r3 > 7) {
0x00063320 bhi.w 0x6307a | goto label_21;
| }
0x00063324 add.w r2, r4, r3, lsl 2 | r2 = r4 + (r3 << 2);
0x00063328 adds r3, 1 | r3++;
0x0006332a strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x0006332c str.w sb, [r2, 0x94] | __asm ("str.w sb, [r2, 0x94]");
0x00063330 b 0x6307a | goto label_21;
| label_54:
0x00063332 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x00063334 mvn.w r2, sl | r2 = ~sl;
0x00063338 ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x0006333c cmn r1, r3 |
| if (r1 < r3) {
0x0006333e bmi 0x6341c | goto label_65;
| }
0x00063340 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x00063342 ldr r1, [r7, 0x6c] | r1 = *((r7 + 0x6c));
0x00063344 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
| label_30:
0x00063348 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0006334a movs r5, 0 | r5 = 0;
0x0006334c mov r2, fp | r2 = fp;
0x0006334e movs r1, 5 | r1 = 5;
0x00063350 mov r0, r7 | r0 = r7;
0x00063352 str r5, [sp] | *(sp) = r5;
0x00063354 adds r3, 1 | r3++;
0x00063356 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006335a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006335c mov r2, r5 | r2 = r5;
0x0006335e movs r1, 0xb | r1 = 0xb;
0x00063360 mov r0, r7 | r0 = r7;
0x00063362 str r5, [sp] | *(sp) = r5;
0x00063364 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00063368 b 0x63052 | goto label_14;
| label_45:
0x0006336a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006336c mov r2, fp | r2 = fp;
0x0006336e movs r1, 0x1f | r1 = 0x1f;
0x00063370 mov r0, r7 | r0 = r7;
0x00063372 str r3, [sp] | *(sp) = r3;
0x00063374 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00063376 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006337a ldr r3, [r7, 0x6c] | r3 = *((r7 + 0x6c));
0x0006337c mov r2, r3 | r2 = r3;
0x0006337e str r3, [sp, 0x30] | var_30h = r3;
0x00063380 ldr r3, [r7, 0x70] | r3 = *((r7 + 0x70));
0x00063382 cmp r2, r3 |
| if (r2 >= r3) {
0x00063384 bge 0x63438 | goto label_66;
| }
0x00063386 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00063388 movs r2, 0 | r2 = 0;
0x0006338a ldr r3, [r7, 0x68] | r3 = *((r7 + 0x68));
0x0006338c add.w r1, r0, r0, lsl 2 | r1 = r0 + (r0 << 2);
0x00063390 adds r0, 1 | r0++;
0x00063392 str r0, [r7, 0x6c] | *((r7 + 0x6c)) = r0;
0x00063394 movs r0, 0xb | r0 = 0xb;
0x00063396 lsls r1, r1, 2 | r1 <<= 2;
0x00063398 str r0, [r3, r1] | *((r3 + r1)) = r0;
0x0006339a add r3, r1 | r3 += r1;
0x0006339c strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x000633a0 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_32:
0x000633a4 ldr r2, [sp, 0x44] | r2 = var_44h;
0x000633a6 cmp r2, 0 |
| if (r2 == 0) {
0x000633a8 beq.w 0x6317a | goto label_22;
| }
0x000633ac cmp r5, 1 |
| if (r5 != 1) {
0x000633ae bne.w 0x6317a | goto label_22;
| }
0x000633b2 b 0x6316c | goto label_23;
| label_48:
0x000633b4 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x000633b6 mvn.w r2, sl | r2 = ~sl;
0x000633ba ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x000633be cmn r1, r3 |
| if (r1 < r3) {
0x000633c0 bmi 0x63430 | goto label_67;
| }
0x000633c2 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x000633c4 ldr r1, [r7, 0x6c] | r1 = *((r7 + 0x6c));
0x000633c6 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
0x000633ca b 0x62f74 | goto label_24;
| if (r1 == r3) {
| label_38:
0x000633cc beq.w 0x630f0 | goto label_25;
| }
0x000633d0 mov r1, r5 | r1 = r5;
0x000633d2 mov r0, r4 | r0 = r4;
0x000633d4 bl 0xf298 | fcn_0000f298 (r0, r1);
0x000633d8 str r0, [sp, 0x1c] | var_1ch = r0;
0x000633da b 0x62e9c | goto label_7;
| label_49:
0x000633dc movs r3, 0 | r3 = 0;
0x000633de mov r2, fp | r2 = fp;
0x000633e0 str r3, [sp] | *(sp) = r3;
0x000633e2 movs r1, 0x25 | r1 = 0x25;
0x000633e4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000633e6 mov r0, r7 | r0 = r7;
0x000633e8 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000633ec str r0, [sp, 0x34] | var_34h = r0;
0x000633ee b 0x62fa8 | goto label_26;
| label_46:
0x000633f0 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000633f2 mov r2, fp | r2 = fp;
0x000633f4 mov r0, r7 | r0 = r7;
0x000633f6 str r5, [sp, 4] | var_4h = r5;
0x000633f8 str r1, [sp] | *(sp) = r1;
0x000633fa movs r1, 0x1d | r1 = 0x1d;
0x000633fc bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00063400 b 0x6307a | goto label_21;
| label_58:
0x00063402 ldr r3, [r6] | r3 = *(r6);
0x00063404 mov.w sb, 0 | sb = 0;
0x00063408 cmp r3, 0 |
| if (r3 > 0) {
0x0006340a bgt.w 0x631f4 | goto label_27;
| }
0x0006340e b 0x632fc | goto label_28;
| label_64:
0x00063410 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00063412 mov r1, r7 | r1 = r7;
0x00063414 rsbs r2, r3, 0 | r2 = r3 - ;
0x00063416 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0006341a b 0x63314 | goto label_29;
| label_65:
0x0006341c mov r1, r7 | r1 = r7;
0x0006341e bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x00063422 b 0x63348 | goto label_30;
| label_59:
0x00063424 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00063426 add.w sb, r3, 1 | sb = r3 + 1;
0x0006342a str.w sb, [r4, 0x2c] | __asm ("str.w sb, [r4, 0x2c]");
0x0006342e b 0x631de | goto label_31;
| label_67:
0x00063430 mov r1, r7 | r1 = r7;
0x00063432 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x00063436 b 0x62f74 | goto label_24;
| label_66:
0x00063438 movs r3, 0 | r3 = 0;
0x0006343a movs r1, 0xb | r1 = 0xb;
0x0006343c mov r2, r3 | r2 = r3;
0x0006343e mov r0, r7 | r0 = r7;
0x00063440 str r3, [sp] | *(sp) = r3;
0x00063442 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00063446 str r0, [sp, 0x30] | var_30h = r0;
0x00063448 b 0x633a4 | goto label_32;
| label_33:
0x0006344a blx 0x7e8c | fcn_00007e8c ();
0x0006344e nop |
0x00063450 add r7, sp, 0xb8 | r7 += arg_b8h;
0x00063452 movs r6, r0 | r6 = r0;
0x00063454 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00063456 movs r0, r0 |
0x00063458 add r7, sp, 0x18 | r7 += var_18h;
0x0006345a movs r6, r0 | r6 = r0;
0x0006345c ldm r2, {r2, r5, r6, r7} | r2 = *(r2);
| r5 = *((r2 + 4));
| r6 = *((r2 + 8));
| r7 = *((r2 + 12));
0x0006345e movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x63460 */
| #include <stdint.h>
|
; (fcn) fcn.00063460 () | void fcn_00063460 (int16_t arg_70h, int16_t arg_98h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_24h_2;
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_8h;
| int32_t var_8h_2;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00063460 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x00063464 mov r4, r0 | r4 = r0;
0x00063466 ldr r5, [pc, 0x2c4] |
0x00063468 mov r7, r3 | r7 = r3;
0x0006346a movs r3, 0 | r3 = 0;
0x0006346c sub sp, 0x2c |
0x0006346e ldr.w sb, [r0, 8] | sb = *((r0 + 8));
0x00063472 ldr r0, [pc, 0x2bc] | r0 = *(0x63732);
0x00063474 add r5, pc | r5 = 0xc6ba6;
0x00063476 cmp sb, r3 |
0x00063478 it ne |
| if (sb != r3) {
0x0006347a cmpne r1, r3 | __asm ("cmpne r1, r3");
| }
0x0006347c ldr r0, [r5, r0] |
0x0006347e ldr r0, [r0] | r0 = *(0xc6ba6);
0x00063480 str r0, [sp, 0x24] | var_24h = r0;
0x00063482 mov.w r0, 0 | r0 = 0;
0x00063486 strd r3, r3, [sp, 0x1c] | __asm ("strd r3, r3, [var_1ch]");
| if (sb == r3) {
0x0006348a beq 0x63568 | goto label_10;
| }
0x0006348c ldrb r6, [r1] | r6 = *(r1);
0x0006348e mov r8, r2 | r8 = r2;
0x00063490 mov r5, r1 | r5 = r1;
0x00063492 cmp r6, 0x39 |
| if (r6 > 0x39) {
0x00063494 bhi 0x63584 | goto label_11;
| }
0x00063496 cmp r6, 0x12 |
| if (r6 < 0x12) {
0x00063498 bls 0x634fe | goto label_12;
| }
0x0006349a sub.w r3, r6, 0x13 | r3 = r6 - 0x13;
0x0006349e cmp r3, 0x26 |
| if (r3 > 0x26) {
0x000634a0 bhi 0x634fe | goto label_12;
| }
| /* switch table (40 cases) at 0x634a6 */
0x000634a2 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_2:
0x000634f4 ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x000634f6 ldr r3, [r3, 0x1c] | r3 = *((r3 + 28));
0x000634f8 ldr r3, [r3] | r3 = *(r3);
| label_4:
0x000634fa cmp r3, 1 |
| if (r3 <= 1) {
0x000634fc ble 0x635e2 | goto label_13;
| }
| do {
| label_12:
0x000634fe ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00063500 movs r3, 1 |
0x00063502 movt r3, 0x1000 | r3 = 0x10000001;
0x00063506 ands r3, r2 | r3 &= r2;
0x00063508 cmp.w r3, 0x10000000 |
| if (r3 == 0x10000000) {
0x0006350c beq.w 0x636c8 | goto label_14;
| }
0x00063510 movs r3, 1 |
0x00063512 movt r3, 0x2000 | r3 = 0x20000001;
0x00063516 ands r2, r3 | r2 &= r3;
0x00063518 cmp.w r2, 0x20000000 |
| if (r2 != 0x20000000) {
0x0006351c beq 0x63568 |
0x0006351e mov r1, r5 | r1 = r5;
0x00063520 add r2, sp, 0x1c | r2 += var_1ch;
0x00063522 mov r0, r4 | r0 = r4;
0x00063524 bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x00063528 subs r7, 0 |
0x0006352a mov r2, r0 | r2 = r0;
0x0006352c it ne |
| if (r7 == 0) {
0x0006352e movne r7, 1 | r7 = 1;
| }
0x00063530 mov r3, r8 | r3 = r8;
0x00063532 mov r0, sb | r0 = sb;
0x00063534 movs r1, 0x12 | r1 = 0x12;
0x00063536 str r7, [sp] | *(sp) = r7;
0x00063538 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_1:
0x0006353c ldrd r3, r1, [sp, 0x1c] | __asm ("ldrd r3, r1, [var_1ch]");
| if (r3 != 0) {
0x00063540 cbz r3, 0x63554 |
0x00063542 ldrb r2, [r4, 0x13] | r2 = *((r4 + 0x13));
0x00063544 cmp r2, 7 |
| if (r2 > 7) {
0x00063546 bhi 0x63568 | goto label_10;
| }
0x00063548 adds r0, r2, 1 | r0 = r2 + 1;
0x0006354a add.w r2, r4, r2, lsl 2 | r2 = r4 + (r2 << 2);
0x0006354e strb r0, [r4, 0x13] | *((r4 + 0x13)) = r0;
0x00063550 str.w r3, [r2, 0x94] | __asm ("str.w r3, [r2, 0x94]");
| }
| if (r1 == 0) {
0x00063554 cbz r1, 0x63568 | goto label_10;
| }
0x00063556 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x00063558 cmp r3, 7 |
| if (r3 > 7) {
0x0006355a bhi 0x63568 | goto label_10;
| }
0x0006355c add.w r2, r4, r3, lsl 2 | r2 = r4 + (r3 << 2);
0x00063560 adds r3, 1 | r3++;
0x00063562 strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x00063564 str.w r1, [r2, 0x94] | __asm ("str.w r1, [r2, 0x94]");
| }
| label_10:
0x00063568 ldr r2, [pc, 0x1c8] |
0x0006356a ldr r3, [pc, 0x1c4] | r3 = *(0x63732);
0x0006356c add r2, pc | r2 = 0xc6ca4;
0x0006356e ldr r3, [r2, r3] | r3 = *(0xc6ca4);
0x00063570 ldr r2, [r3] | r2 = *(0xc6ca4);
0x00063572 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00063574 eors r2, r3 | r2 ^= r3;
0x00063576 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006357a bne.w 0x63728 | goto label_15;
| }
0x0006357e add sp, 0x2c |
0x00063580 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_11:
0x00063584 cmp r6, 0xaa |
| if (r6 == 0xaa) {
0x00063586 beq 0x635cc | goto label_16;
| }
0x00063588 cmp r6, 0xae |
0x0006358a bne 0x634fe |
| } while (r6 != 0xae);
0x0006358c ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0006358e ldrb r1, [r1, 2] | r1 = *((r1 + 2));
| if (r3 != 0) {
0x00063590 cbnz r3, 0x6359e | goto label_17;
| }
| do {
0x00063592 movs r3, 0 | r3 = 0;
0x00063594 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00063596 udf 0xff | __asm ("udf 0xff");
| label_0:
0x00063598 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0006359a cmp r3, 0 |
0x0006359c beq 0x63592 |
| } while (r3 == 0);
| label_17:
0x0006359e ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x000635a0 lsls r0, r2, 0x13 | r0 = r2 << 0x13;
| if (r0 < r2) {
0x000635a2 bmi 0x63598 | goto label_0;
| }
0x000635a4 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000635a6 sub.w r2, r1, 0xaa | r2 = r1 - 0xaa;
0x000635aa clz r2, r2 | r2 &= r2;
0x000635ae ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x000635b0 lsrs r2, r2, 5 | r2 >>= 5;
0x000635b2 ldrb r0, [r3, 4] | r0 = *((r3 + 4));
0x000635b4 lsls r3, r2, 4 | r3 = r2 << 4;
0x000635b6 clz r0, r0 | r0 &= r0;
0x000635ba lsrs r0, r0, 5 | r0 >>= 5;
0x000635bc cmp r0, r2 |
0x000635be mov r2, r8 | r2 = r8;
0x000635c0 mov r0, r4 | r0 = r4;
| if (r0 == r2) {
0x000635c2 beq.w 0x636d8 | goto label_18;
| }
0x000635c6 bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x000635ca b 0x6353c | goto label_1;
| label_16:
0x000635cc movs r6, 0x34 | r6 = 0x34;
0x000635ce movs r7, 0x80 | r7 = 0x80;
| label_3:
0x000635d0 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x000635d2 ldrb r3, [r1] | r3 = *(r1);
0x000635d4 cmp r3, 0xaf |
0x000635d6 it eq |
| if (r3 != 0xaf) {
0x000635d8 ldrbeq r3, [r1, 2] | r3 = *((r1 + 2));
| }
0x000635da cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x000635dc beq 0x636d2 | goto label_19;
| }
0x000635de cmp r3, 0x89 |
| if (r3 == 0x89) {
0x000635e0 beq 0x634f4 | goto label_2;
| }
| label_13:
0x000635e2 add r2, sp, 0x1c | r2 += var_1ch;
0x000635e4 mov r0, r4 | r0 = r4;
0x000635e6 bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x000635ea ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x000635ec mov sb, r0 | sb = r0;
0x000635ee add r2, sp, 0x20 | r2 += var_20h;
0x000635f0 mov r0, r4 | r0 = r4;
0x000635f2 bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x000635f6 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000635f8 cmp r3, 0 |
| if (r3 != 0) {
0x000635fa bne 0x6353c | goto label_1;
| }
0x000635fc strd r8, r7, [sp, 8] | __asm ("strd r8, r7, [var_8h]");
0x00063600 mov r3, r6 | r3 = r6;
0x00063602 str r0, [sp, 4] | var_4h = r0;
0x00063604 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x00063606 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006360a ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0006360c ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x0006360e ubfx r0, r0, 9, 1 | r0 = (r0 >> 9) & ((1 << 1) - 1);
0x00063612 str r0, [sp, 0x10] | var_10h = r0;
0x00063614 mov r0, r4 | r0 = r4;
0x00063616 bl 0x2d700 | fcn_0002d700 (r0, r1, r2, r3, r4, r5, r6);
0x0006361a b 0x6353c | goto label_1;
0x0006361c add r2, sp, 0x1c | r2 += var_1ch;
0x0006361e ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x00063620 mov r0, r4 | r0 = r4;
0x00063622 movs r5, 0 | r5 = 0;
0x00063624 bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x00063628 mov r3, r8 | r3 = r8;
0x0006362a mov r2, r0 | r2 = r0;
0x0006362c mov r1, r6 | r1 = r6;
0x0006362e mov r0, sb | r0 = sb;
0x00063630 str r5, [sp] | *(sp) = r5;
0x00063632 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00063636 b 0x6353c | goto label_1;
0x00063638 mov r0, r1 | r0 = r1;
0x0006363a bl 0x13b9c | r0 = fcn_00013b9c (r0);
0x0006363e cmp r5, r0 |
0x00063640 mov r1, r0 | r1 = r0;
| if (r5 != r0) {
0x00063642 beq 0x636aa |
0x00063644 mov r3, r7 | r3 = r7;
0x00063646 mov r2, r8 | r2 = r8;
0x00063648 mov r0, r4 | r0 = r4;
0x0006364a bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x0006364e b 0x6353c | goto label_1;
0x00063650 ldr r3, [pc, 0xe4] |
0x00063652 mov r2, r8 | r2 = r8;
0x00063654 mov r0, r4 | r0 = r4;
0x00063656 str r7, [sp] | *(sp) = r7;
0x00063658 add r3, pc | r3 = 0xc6d94;
0x0006365a bl 0x69cc0 | fcn_00069cc0 (r0, r1, r2, r3, r4);
0x0006365e b 0x6353c | goto label_1;
0x00063660 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x00063662 mov r3, r7 | r3 = r7;
0x00063664 mov r2, r8 | r2 = r8;
0x00063666 mov r0, r4 | r0 = r4;
0x00063668 bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x0006366c b 0x6353c | goto label_1;
0x0006366e ldr r5, [r4, 0x38] | r5 = *((r4 + 0x38));
0x00063670 mov r0, r4 | r0 = r4;
0x00063672 subs r2, r5, 1 | r2 = r5 - 1;
0x00063674 cmp r7, 0 |
0x00063676 ite ne |
| if (r7 == 0) {
0x00063678 movne r3, r8 | r3 = r8;
| }
| if (r7 != 0) {
0x0006367a moveq r3, r2 | r3 = r2;
| }
0x0006367c str r2, [r4, 0x38] | *((r4 + 0x38)) = r2;
0x0006367e bl 0x62d4c | fcn_00062d4c (r0, r1, r2, r3, r4);
0x00063682 mov r0, sb | r0 = sb;
0x00063684 mov r1, r8 | r1 = r8;
0x00063686 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x00063688 invalid |
0x0006368c movs r4, r1 | r4 = r1;
0x0006368e ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x00063690 adds r2, 0xe | r2 += 0xe;
0x00063692 cmn r2, r3 |
| if (r2 < r3) {
0x00063694 bmi 0x636de | goto label_20;
| }
0x00063696 ldr.w r2, [sb, 0x6c] | r2 = *((sb + 0x6c));
0x0006369a lsls r5, r5, 2 | r5 <<= 2;
0x0006369c ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0006369e rsbs r5, r5, 0 | r5 -= ;
0x000636a0 str r2, [r3, r5] | *((r3 + r5)) = r2;
0x000636a2 b 0x6353c | goto label_1;
0x000636a4 movs r6, 0x35 | r6 = 0x35;
0x000636a6 movs r7, 0x80 | r7 = 0x80;
0x000636a8 b 0x635d0 | goto label_3;
| }
0x000636aa cmp r6, 0x2c |
0x000636ac ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
| if (r6 != 0x2c) {
0x000636ae beq 0x636e8 |
0x000636b0 mov r0, r4 | r0 = r4;
0x000636b2 mov r3, r7 | r3 = r7;
0x000636b4 mov r2, r8 | r2 = r8;
0x000636b6 bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x000636ba ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x000636bc mov r3, r7 | r3 = r7;
0x000636be mov r2, r8 | r2 = r8;
0x000636c0 mov r0, r4 | r0 = r4;
0x000636c2 bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x000636c6 b 0x6353c | goto label_1;
| label_14:
0x000636c8 mov r1, r8 | r1 = r8;
0x000636ca mov r0, sb | r0 = sb;
0x000636cc bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x000636d0 b 0x6353c | goto label_1;
| label_19:
0x000636d2 ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x000636d4 ldr r3, [r3] | r3 = *(r3);
0x000636d6 b 0x634fa | goto label_4;
| label_18:
0x000636d8 bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x000636dc b 0x6353c | goto label_1;
| label_20:
0x000636de rsbs r2, r5, 0 | r2 = r5 - ;
0x000636e0 mov r1, sb | r1 = sb;
0x000636e2 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000636e6 b 0x6353c | goto label_1;
| }
0x000636e8 ldr r6, [r4, 0x38] | r6 = *((r4 + 0x38));
0x000636ea mov r0, r4 | r0 = r4;
0x000636ec eor r3, r7, 0x10 | r3 = r7 ^ 0x10;
0x000636f0 subs r2, r6, 1 | r2 = r6 - 1;
0x000636f2 str r2, [r4, 0x38] | *((r4 + 0x38)) = r2;
0x000636f4 bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x000636f8 mov r3, r7 | r3 = r7;
0x000636fa mov r2, r8 | r2 = r8;
0x000636fc mov r0, r4 | r0 = r4;
0x000636fe ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x00063700 bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x00063704 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x00063708 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0006370c cmn r2, r3 |
| if (r2 >= r3) {
0x0006370e bmi 0x6371e |
0x00063710 ldr.w r1, [sb, 0x6c] | r1 = *((sb + 0x6c));
0x00063714 lsls r3, r6, 2 | r3 = r6 << 2;
0x00063716 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x00063718 rsbs r3, r3, 0 | r3 -= ;
0x0006371a str r1, [r2, r3] | *((r2 + r3)) = r1;
0x0006371c b 0x6353c | goto label_1;
| }
0x0006371e rsbs r2, r6, 0 | r2 = r6 - ;
0x00063720 mov r1, sb | r1 = sb;
0x00063722 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x00063726 b 0x6353c | goto label_1;
| label_15:
0x00063728 blx 0x7e8c | fcn_00007e8c ();
0x0006372c add r0, sp, 0x70 | r0 += arg_70h;
0x0006372e movs r6, r0 | r6 = r0;
0x00063730 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00063732 movs r0, r0 |
0x00063734 adr r7, 0x90 | r7 = 0x90;
0x00063736 movs r6, r0 | r6 = r0;
0x00063738 mcr2 p15, 0, pc, c5, c15, 7 | __asm ("mcr2 p15, 0, pc, c5, c15, 7");
| label_6:
0x0006fcbe asrs r1, r2, 0x1f | r1 = r2 >> 0x1f;
0x0006fcc0 cmp r2, 7 |
0x0006fcc2 mov r3, r2 | r3 = r2;
0x0006fcc4 mov r0, r1 | r0 = r1;
| if (r2 > 7) {
0x0006fcc6 bgt.w 0x70a34 | goto label_21;
| }
0x0006fcca cmp r2, 1 |
0x0006fccc it eq |
| if (r2 != 1) {
0x0006fcce moveq r3, 0 | r3 = 0;
| }
| if (r2 == 1) {
0x0006fcd0 beq 0x6fd00 | goto label_22;
| }
0x0006fcd2 movs r1, 0x1e | r1 = 0x1e;
| do {
0x0006fcd4 adds r3, r3, r3 | r3 += r3;
0x0006fcd6 sub.w ip, r1, 0xa |
0x0006fcda adcs r0, r0 | __asm ("adcs r0, r0");
0x0006fcdc cmp r3, 8 |
0x0006fcde mov r2, r1 | r2 = r1;
0x0006fce0 uxth.w r1, ip | r1 = (int16_t) ip;
0x0006fce4 sbcs ip, r0, 0 | __asm ("sbcs ip, r0, 0");
0x0006fce8 blo 0x6fcd4 |
| } while (r3 <= 8);
| label_9:
0x0006fcea ldr r1, [pc, 0x74] |
0x0006fcec and r3, r3, 7 | r3 &= 7;
0x0006fcf0 subs r2, 0xa | r2 -= 0xa;
0x0006fcf2 add r1, pc | r1 = 0xdfa58;
0x0006fcf4 add.w r3, r1, r3, lsl 1 | r3 = r1 + (r3 << 1);
0x0006fcf8 ldrh.w r3, [r3, 0x78] | r3 = *((r3 + 0x78));
0x0006fcfc add r3, r2 | r3 += r2;
0x0006fcfe sxth r3, r3 | __asm ("sxth r3, r3");
| label_22:
0x0006fd00 cmp r3, r8 |
0x0006fd02 it lt |
| if (r3 < r8) {
0x0006fd04 strhlt r3, [r4, 2] | __asm ("strhlt r3, [r4, 2]");
| }
| label_5:
0x0006fd06 cmp r6, 0 |
| if (r6 == 0) {
0x0006fd08 beq.w 0x6f5ba | void (*0x6f5ba)() ();
| }
0x0006fd0c ldr r3, [r5] | r3 = *(r5);
0x0006fd0e ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006fd10 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006fd14 it lt |
| if (r6 >= 0) {
0x0006fd16 addlt r6, r2, -1 | r6 = r2 + -1;
| }
0x0006fd1a cmp r3, 0 |
| if (r3 != 0) {
0x0006fd1c bne.w 0x70886 | goto label_23;
| }
0x0006fd20 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006fd22 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x0006fd26 add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
| label_7:
0x0006fd2a str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006fd2c b 0x6f5ba | void (*0x6f5ba)() ();
0x0007073c ldr r0, [r5, 0x68] | r0 = *((r5 + 0x68));
0x0007073e adds r1, r6, 1 | r1 = r6 + 1;
0x00070740 lsls r2, r2, 2 | r2 <<= 2;
0x00070742 str r1, [r5, 0x6c] | *((r5 + 0x6c)) = r1;
0x00070744 mov.w ip, 0x14 |
0x00070748 adds r1, r0, r2 | r1 = r0 + r2;
0x0007074a strd sb, r7, [r1, 4] | __asm ("strd sb, r7, [r1, 4]");
0x0007074e strd r7, r7, [r1, 0xc] | __asm ("strd r7, r7, [r1, 0xc]");
0x00070752 str.w ip, [r0, r2] | __asm ("str.w ip, [r0, r2]");
0x00070756 cmp r3, 0 |
| if (r3 != 0) {
0x00070758 bne.w 0x708ee | goto label_24;
| }
| label_8:
0x0007075c ldr r2, [pc, 0x2c8] |
0x0007075e movs r1, 1 | r1 = 1;
0x00070760 mov r0, fp | r0 = fp;
0x00070762 add r2, pc | r2 = 0xe118e;
0x00070764 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x00070768 mov r2, sl | r2 = sl;
0x0007076a mov r1, r4 | r1 = r4;
0x0007076c mov r0, fp | r0 = fp;
0x0007076e bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x00070772 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x00070774 mov r7, r0 | r7 = r0;
0x00070776 ldrsh.w r1, [r8, 2] | r1 = *((r8 + 2));
0x0007077a ldrsh.w r0, [r4, 2] | r0 = *((r4 + 2));
0x0007077e str.w r8, [r4, 0x34] | __asm ("str.w r8, [r4, 0x34]");
0x00070782 str r3, [sp, 0x18] | var_18h = r3;
0x00070784 bl 0xef34 | fcn_0000ef34 (r0, r1);
0x00070788 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x0007078a mov r8, r0 | r8 = r0;
0x0007078c strh r0, [r4, 2] | *((r4 + 2)) = r0;
0x0007078e cmp r3, 0 |
| if (r3 == 0) {
0x00070790 beq.w 0x6fd06 | goto label_5;
| }
0x00070794 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00070796 add r1, sp, 0x98 | r1 += arg_98h;
0x00070798 bl 0x9c04 | r0 = fcn_00009c04 (r0, r1);
0x0007079c cmp r0, 0 |
| if (r0 == 0) {
0x0007079e beq.w 0x6fd06 | goto label_5;
| }
0x000707a2 ldr r2, [sp, 0x98] | r2 = *(arg_98h);
0x000707a4 cmp r2, 0 |
| if (r2 <= 0) {
0x000707a6 ble.w 0x6fd06 | goto label_5;
| }
0x000707aa b.w 0x6fcbe | goto label_6;
| label_23:
0x00070886 ldr r3, [pc, 0x1a8] |
0x00070888 add r3, pc | r3 = 0xe12be;
0x0007088a adds r3, 4 | r3 += 4;
0x0007088c b.w 0x6fd2a | goto label_7;
| label_24:
0x000708ee ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000708f0 movs r1, 0x9c | r1 = 0x9c;
0x000708f2 str r3, [sp] | *(sp) = r3;
0x000708f4 mov r0, r5 | r0 = r5;
0x000708f6 adds r3, 1 | r3++;
0x000708f8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000708fc b 0x7075c | goto label_8;
| label_21:
0x00070a34 clz r3, r1 | r3 &= r1;
| if (r1 == 0) {
0x00070a38 cbnz r1, 0x70a40 |
0x00070a3a clz r3, r2 | r3 &= r2;
0x00070a3e adds r3, 0x20 | r3 += 0x20;
| }
0x00070a40 rsb.w r3, r3, 0x3c | r3 = 0x3c - r3;
0x00070a44 lsr.w r0, r2, r3 | r0 = r2 >> r3;
0x00070a48 add.w r2, r3, r3, lsl 2 | r2 = r3 + (r3 << 2);
0x00070a4c rsb.w ip, r3, 0x20 |
0x00070a50 lsls r2, r2, 1 | r2 <<= 1;
0x00070a52 lsl.w ip, r1, ip |
0x00070a56 subs r3, 0x20 | r3 -= 0x20;
0x00070a58 lsr.w r3, r1, r3 | r3 = r1 >> r3;
0x00070a5c adds r2, 0x28 | r2 += 0x28;
0x00070a5e orr.w r0, r0, ip | r0 |= ip;
0x00070a62 uxth r2, r2 | r2 = (int16_t) r2;
0x00070a64 orrs r3, r0 | r3 |= r0;
0x00070a66 b.w 0x6fcea | 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/libsqlite3.so.0.8.6 @ 0x6373c */
| #include <stdint.h>
|
; (fcn) fcn.0006373c () | void fcn_0006373c (int16_t arg_13h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_64h;
| int16_t var_ach;
| int16_t var_0h_3;
| int16_t var_4h_2;
| int16_t var_8h_3;
| int16_t var_ch_3;
| int16_t var_10h_2;
| int16_t var_1ch_2;
| int16_t var_20h_2;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006373c push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00063740 mov r4, r0 | r4 = r0;
0x00063742 ldr r5, [pc, 0x2ac] |
0x00063744 mov r7, r3 | r7 = r3;
0x00063746 movs r3, 0 | r3 = 0;
0x00063748 sub sp, 0x28 |
0x0006374a ldr.w sb, [r0, 8] | sb = *((r0 + 8));
0x0006374e ldr r0, [pc, 0x2a4] | r0 = *(0x639f6);
0x00063750 add r5, pc | r5 = 0xc7146;
0x00063752 cmp sb, r3 |
0x00063754 it ne |
| if (sb != r3) {
0x00063756 cmpne r1, r3 | __asm ("cmpne r1, r3");
| }
0x00063758 ldr r0, [r5, r0] |
0x0006375a ldr r0, [r0] | r0 = *(0xc7146);
0x0006375c str r0, [sp, 0x24] | var_24h = r0;
0x0006375e mov.w r0, 0 | r0 = 0;
0x00063762 strd r3, r3, [sp, 0x1c] | __asm ("strd r3, r3, [var_1ch_2]");
| if (sb == r3) {
0x00063766 beq 0x63848 | goto label_7;
| }
0x00063768 ldrb r6, [r1] | r6 = *(r1);
0x0006376a mov r8, r2 | r8 = r2;
0x0006376c mov r5, r1 | r5 = r1;
0x0006376e cmp r6, 0x39 |
0x00063770 eor sl, r6, 1 | sl = r6 ^ 1;
| if (r6 > 0x39) {
0x00063774 bhi 0x63864 | goto label_8;
| }
0x00063776 cmp r6, 0x12 |
| if (r6 < 0x12) {
0x00063778 bls 0x637de | goto label_9;
| }
0x0006377a sub.w r3, r6, 0x13 | r3 = r6 - 0x13;
0x0006377e cmp r3, 0x26 |
| if (r3 > 0x26) {
0x00063780 bhi 0x637de | goto label_9;
| }
| /* switch table (40 cases) at 0x63786 */
0x00063782 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_2:
0x000637d4 ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x000637d6 ldr r3, [r3, 0x1c] | r3 = *((r3 + 28));
0x000637d8 ldr r3, [r3] | r3 = *(r3);
| label_4:
0x000637da cmp r3, 1 |
| if (r3 <= 1) {
0x000637dc ble 0x638c6 | goto label_10;
| }
| do {
| label_9:
0x000637de ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x000637e0 movs r3, 1 | r3 = 1;
0x000637e2 movt r0, 0x2000 | r0 = (r0 & 0xFFFF) | 0x20000000;
0x000637e6 movs r0, r0 |
0x000637e8 cmp.w r3, 0x20000000 |
| if (r3 == 0x20000000) {
0x000637ec beq.w 0x639b2 | goto label_11;
| }
0x000637f0 movs r3, 1 |
0x000637f2 movt r3, 0x1000 | r3 = 0x10000001;
0x000637f6 ands r2, r3 | r2 &= r3;
0x000637f8 cmp.w r2, 0x10000000 |
| if (r2 != 0x10000000) {
0x000637fc beq 0x63848 |
0x000637fe mov r1, r5 | r1 = r5;
0x00063800 add r2, sp, 0x1c | r2 += var_1ch_2;
0x00063802 mov r0, r4 | r0 = r4;
0x00063804 bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x00063808 subs r7, 0 |
0x0006380a mov r2, r0 | r2 = r0;
0x0006380c it ne |
| if (r7 == 0) {
0x0006380e movne r7, 1 | r7 = 1;
| }
0x00063810 mov r3, r8 | r3 = r8;
0x00063812 mov r0, sb | r0 = sb;
0x00063814 movs r1, 0x14 | r1 = 0x14;
0x00063816 str r7, [sp] | *(sp) = r7;
0x00063818 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_1:
0x0006381c ldrd r3, r1, [sp, 0x1c] | __asm ("ldrd r3, r1, [var_1ch_2]");
| if (r3 != 0) {
0x00063820 cbz r3, 0x63834 |
0x00063822 ldrb r2, [r4, 0x13] | r2 = *((r4 + 0x13));
0x00063824 cmp r2, 7 |
| if (r2 > 7) {
0x00063826 bhi 0x63848 | goto label_7;
| }
0x00063828 adds r0, r2, 1 | r0 = r2 + 1;
0x0006382a add.w r2, r4, r2, lsl 2 | r2 = r4 + (r2 << 2);
0x0006382e strb r0, [r4, 0x13] | *((r4 + 0x13)) = r0;
0x00063830 str.w r3, [r2, 0x94] | __asm ("str.w r3, [r2, 0x94]");
| }
| if (r1 == 0) {
0x00063834 cbz r1, 0x63848 | goto label_7;
| }
0x00063836 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x00063838 cmp r3, 7 |
| if (r3 > 7) {
0x0006383a bhi 0x63848 | goto label_7;
| }
0x0006383c add.w r2, r4, r3, lsl 2 | r2 = r4 + (r3 << 2);
0x00063840 adds r3, 1 | r3++;
0x00063842 strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x00063844 str.w r1, [r2, 0x94] | __asm ("str.w r1, [r2, 0x94]");
| }
| label_7:
0x00063848 ldr r2, [pc, 0x1ac] |
0x0006384a ldr r3, [pc, 0x1a8] | r3 = *(0x639f6);
0x0006384c add r2, pc | r2 = 0xc7248;
0x0006384e ldr r3, [r2, r3] | r3 = *(0xc7248);
0x00063850 ldr r2, [r3] | r2 = *(0xc7248);
0x00063852 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00063854 eors r2, r3 | r2 ^= r3;
0x00063856 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006385a bne.w 0x639ea | goto label_12;
| }
0x0006385e add sp, 0x28 |
0x00063860 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_8:
0x00063864 cmp r6, 0xaa |
| if (r6 == 0xaa) {
0x00063866 beq 0x638ae | goto label_13;
| }
0x00063868 cmp r6, 0xae |
0x0006386a bne 0x637de |
| } while (r6 != 0xae);
0x0006386c ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0006386e ldrb r1, [r1, 2] | r1 = *((r1 + 2));
| if (r3 != 0) {
0x00063870 cbnz r3, 0x6387e | goto label_14;
| }
| do {
0x00063872 movs r3, 0 | r3 = 0;
0x00063874 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00063876 udf 0xff | __asm ("udf 0xff");
| label_0:
0x00063878 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0006387a cmp r3, 0 |
0x0006387c beq 0x63872 |
| } while (r3 == 0);
| label_14:
0x0006387e ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00063880 lsls r2, r2, 0x13 | r2 <<= 0x13;
| if (r2 < r2) {
0x00063882 bmi 0x63878 | goto label_0;
| }
0x00063884 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00063886 cmp r1, 0xaa |
0x00063888 iteet eq |
| if (r1 != 0xaa) {
0x0006388a moveq r0, 1 | r0 = 1;
| }
| if (r1 == 0xaa) {
0x0006388c movne r0, 0 | r0 = 0;
| }
| if (r1 == 0xaa) {
0x0006388e movne r3, 1 | r3 = 1;
| }
| if (r1 != 0xaa) {
0x00063890 moveq r3, 0 | r3 = 0;
| }
0x00063892 ldrb r2, [r2, 4] | r2 = *((r2 + 4));
0x00063894 lsls r3, r3, 4 | r3 <<= 4;
0x00063896 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x00063898 clz r2, r2 | r2 &= r2;
0x0006389c lsrs r2, r2, 5 | r2 >>= 5;
0x0006389e cmp r0, r2 |
0x000638a0 mov r2, r8 | r2 = r8;
0x000638a2 mov r0, r4 | r0 = r4;
| if (r0 == r2) {
0x000638a4 beq.w 0x639c2 | goto label_15;
| }
0x000638a8 bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x000638ac b 0x6381c | goto label_1;
| label_13:
0x000638ae mov.w sl, 0x35 | sl = 0x35;
0x000638b2 movs r7, 0x80 | r7 = 0x80;
| label_3:
0x000638b4 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x000638b6 ldrb r3, [r1] | r3 = *(r1);
0x000638b8 cmp r3, 0xaf |
0x000638ba it eq |
| if (r3 != 0xaf) {
0x000638bc ldrbeq r3, [r1, 2] | r3 = *((r1 + 2));
| }
0x000638be cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x000638c0 beq 0x639bc | goto label_16;
| }
0x000638c2 cmp r3, 0x89 |
| if (r3 == 0x89) {
0x000638c4 beq 0x637d4 | goto label_2;
| }
| label_10:
0x000638c6 add r2, sp, 0x1c | r2 += var_1ch_2;
0x000638c8 mov r0, r4 | r0 = r4;
0x000638ca bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x000638ce ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x000638d0 mov r6, r0 | r6 = r0;
0x000638d2 add r2, sp, 0x20 | r2 += var_20h_2;
0x000638d4 mov r0, r4 | r0 = r4;
0x000638d6 bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x000638da ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000638dc cmp r3, 0 |
| if (r3 != 0) {
0x000638de bne 0x6381c | goto label_1;
| }
0x000638e0 strd r8, r7, [sp, 8] | __asm ("strd r8, r7, [var_ch_3]");
0x000638e4 mov r3, sl | r3 = sl;
0x000638e6 str r0, [sp, 4] | var_4h_2 = r0;
0x000638e8 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x000638ea str r6, [sp] | *(sp) = r6;
0x000638ec ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000638ee ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x000638f0 ubfx r0, r0, 9, 1 | r0 = (r0 >> 9) & ((1 << 1) - 1);
0x000638f4 str r0, [sp, 0x10] | var_10h_2 = r0;
0x000638f6 mov r0, r4 | r0 = r4;
0x000638f8 bl 0x2d700 | fcn_0002d700 (r0, r1, r2, r3, r4, r5, r6);
0x000638fc b 0x6381c | goto label_1;
0x000638fe add r2, sp, 0x1c | r2 += var_1ch_2;
0x00063900 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x00063902 mov r0, r4 | r0 = r4;
0x00063904 movs r5, 0 | r5 = 0;
0x00063906 bl 0x67c4c | fcn_00067c4c (r0, r1, r2);
0x0006390a mov r3, r8 | r3 = r8;
0x0006390c mov r2, r0 | r2 = r0;
0x0006390e mov r1, sl | r1 = sl;
0x00063910 mov r0, sb | r0 = sb;
0x00063912 str r5, [sp] | *(sp) = r5;
0x00063914 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00063918 b 0x6381c | goto label_1;
0x0006391a mov r0, r1 | r0 = r1;
0x0006391c bl 0x13b9c | r0 = fcn_00013b9c (r0);
0x00063920 cmp r5, r0 |
0x00063922 mov r1, r0 | r1 = r0;
| if (r5 == r0) {
0x00063924 beq 0x6398e | goto label_17;
| }
0x00063926 mov r3, r7 | r3 = r7;
0x00063928 mov r2, r8 | r2 = r8;
0x0006392a mov r0, r4 | r0 = r4;
0x0006392c bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x00063930 b 0x6381c | goto label_1;
0x00063932 ldr r3, [pc, 0xc8] |
0x00063934 mov r2, r8 | r2 = r8;
0x00063936 mov r0, r4 | r0 = r4;
0x00063938 str r7, [sp] | *(sp) = r7;
0x0006393a add r3, pc | r3 = 0xc733c;
0x0006393c bl 0x69cc0 | fcn_00069cc0 (r0, r1, r2, r3, r4);
0x00063940 b 0x6381c | goto label_1;
0x00063942 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x00063944 mov r3, r7 | r3 = r7;
0x00063946 mov r2, r8 | r2 = r8;
0x00063948 mov r0, r4 | r0 = r4;
0x0006394a bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x0006394e b 0x6381c | goto label_1;
| if (r7 != 0) {
0x00063950 cbnz r7, 0x6397a | goto label_18;
| }
0x00063952 ldr r6, [r4, 0x38] | r6 = *((r4 + 0x38));
0x00063954 mov r2, r8 | r2 = r8;
0x00063956 mov r0, r4 | r0 = r4;
0x00063958 subs r3, r6, 1 | r3 = r6 - 1;
0x0006395a str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x0006395c bl 0x62d4c | fcn_00062d4c (r0, r1, r2, r3, r4);
| do {
0x00063960 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x00063964 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x00063968 cmn r2, r3 |
| if (r2 < r3) {
0x0006396a bmi 0x639c8 | goto label_19;
| }
0x0006396c ldr.w r2, [sb, 0x6c] | r2 = *((sb + 0x6c));
0x00063970 lsls r6, r6, 2 | r6 <<= 2;
0x00063972 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x00063974 rsbs r6, r6, 0 | r6 -= ;
0x00063976 str r2, [r3, r6] | *((r3 + r6)) = r2;
0x00063978 b 0x6381c | goto label_1;
| label_18:
0x0006397a mov r3, r8 | r3 = r8;
0x0006397c mov r2, r8 | r2 = r8;
0x0006397e mov r0, r4 | r0 = r4;
0x00063980 bl 0x62d4c | fcn_00062d4c (r0, r1, r2, r3, r4);
0x00063984 b 0x6381c | goto label_1;
0x00063986 mov.w sl, 0x34 | sl = 0x34;
0x0006398a movs r7, 0x80 | r7 = 0x80;
0x0006398c b 0x638b4 | goto label_3;
| label_17:
0x0006398e cmp r6, 0x2c |
0x00063990 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
| if (r6 == 0x2c) {
0x00063992 beq 0x639d2 | goto label_20;
| }
0x00063994 ldr r6, [r4, 0x38] | r6 = *((r4 + 0x38));
0x00063996 mov r0, r4 | r0 = r4;
0x00063998 eor r3, r7, 0x10 | r3 = r7 ^ 0x10;
0x0006399c subs r2, r6, 1 | r2 = r6 - 1;
0x0006399e str r2, [r4, 0x38] | *((r4 + 0x38)) = r2;
0x000639a0 bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x000639a4 ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x000639a6 mov r3, r7 | r3 = r7;
0x000639a8 mov r2, r8 | r2 = r8;
0x000639aa mov r0, r4 | r0 = r4;
0x000639ac bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x000639b0 b 0x63960 |
| } while (1);
| label_11:
0x000639b2 mov r1, r8 | r1 = r8;
0x000639b4 mov r0, sb | r0 = sb;
0x000639b6 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x000639ba b 0x6381c | goto label_1;
| label_16:
0x000639bc ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x000639be ldr r3, [r3] | r3 = *(r3);
0x000639c0 b 0x637da | goto label_4;
| label_15:
0x000639c2 bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x000639c6 b 0x6381c | goto label_1;
| label_19:
0x000639c8 rsbs r2, r6, 0 | r2 = r6 - ;
0x000639ca mov r1, sb | r1 = sb;
0x000639cc bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000639d0 b 0x6381c | goto label_1;
| label_20:
0x000639d2 mov r0, r4 | r0 = r4;
0x000639d4 mov r3, r7 | r3 = r7;
0x000639d6 mov r2, r8 | r2 = r8;
0x000639d8 bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x000639dc ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x000639de mov r3, r7 | r3 = r7;
0x000639e0 mov r2, r8 | r2 = r8;
0x000639e2 mov r0, r4 | r0 = r4;
0x000639e4 bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x000639e8 b 0x6381c | goto label_1;
| label_12:
0x000639ea blx 0x7e8c | fcn_00007e8c ();
0x000639ee nop |
0x000639f0 adr r5, 0x100 | r5 = 0x100;
0x000639f2 movs r6, r0 | r6 = r0;
0x000639f4 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000639f6 movs r0, r0 |
0x000639f8 adr r4, 0x110 | r4 = 0x110;
0x000639fa movs r6, r0 | r6 = r0;
0x000639fc ldc2l p15, c15, [pc, 0x3fc]! | __asm ("ldc2l p15, c15, aav.0x000000ff!");
| label_6:
0x0006f50c movs r3, 0 | r3 = 0;
0x0006f50e adds r2, r6, 1 | r2 = r6 + 1;
0x0006f510 str r3, [sp, 4] | var_4h_2 = r3;
0x0006f512 movs r1, 0x1d | r1 = 0x1d;
0x0006f514 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x0006f516 mov r0, r5 | r0 = r5;
0x0006f518 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006f51c bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0006f520 cmp.w r8, 0 |
| if (r8 != 0) {
0x0006f524 beq 0x6f53c |
0x0006f526 ldrb.w r3, [fp, 0x13] | r3 = *(arg_13h);
0x0006f52a cmp r3, 7 |
0x0006f52c itttt ls |
| if (r3 > 7) {
0x0006f52e addls r2, fp, r3, lsl 2 | r2 = fp + (r3 << 2);
| }
| if (r3 > 7) {
0x0006f532 addls r3, 1 | r3++;
| }
| if (r3 > 7) {
0x0006f534 strbls r3, [fp, 0x13] | *(arg_13h) = r3;
| }
| if (r3 > 7) {
0x0006f538 str.w r8, [r2, 0x94] | __asm ("str.w r8, [r2, 0x94]");
| goto label_21;
| }
| }
| label_21:
0x0006f53c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006f53e mov r2, r6 | r2 = r6;
0x0006f540 mov r1, r4 | r1 = r4;
0x0006f542 mov r0, fp | r0 = fp;
0x0006f544 str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h_2]");
0x0006f548 str r3, [sp, 0xc] | var_ch_3 = r3;
0x0006f54a ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x0006f54c str r3, [sp, 8] | var_8h_3 = r3;
0x0006f54e movs r3, 0 | r3 = 0;
0x0006f550 str r3, [sp] | *(sp) = r3;
0x0006f552 bl 0x69308 | fcn_00069308 (r0, r1, r2, r3, r4, r5, r6);
0x0006f556 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x0006f558 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006f55a mvns r2, r3 | r2 = ~r3;
0x0006f55c ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x0006f560 cmn r1, r3 |
| if (r1 < r3) {
0x0006f562 bmi.w 0x70930 | goto label_22;
| }
0x0006f566 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0006f568 ldr r1, [r5, 0x6c] | r1 = *((r5 + 0x6c));
0x0006f56a str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
| label_5:
0x0006f56e movs r2, 0 | r2 = 0;
0x0006f570 mov r3, sb | r3 = sb;
0x0006f572 str r2, [sp] | *(sp) = r2;
0x0006f574 movs r1, 5 | r1 = 5;
0x0006f576 mov r2, r6 | r2 = r6;
0x0006f578 mov r0, r5 | r0 = r5;
0x0006f57a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006f57e ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006f580 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0006f584 cmn r2, r3 |
| if (r2 < r3) {
0x0006f586 bmi.w 0x70922 | goto label_23;
| }
0x0006f58a ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x0006f58c ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0006f58e ldr r1, [r5, 0x6c] | r1 = *((r5 + 0x6c));
0x0006f590 lsls r3, r3, 2 | r3 <<= 2;
0x0006f592 rsbs r3, r3, 0 | r3 -= ;
0x0006f594 str r1, [r2, r3] | *((r2 + r3)) = r1;
| do {
0x0006f596 mov.w r8, 0 | r8 = 0;
0x0006f59a adds r2, r6, 1 | r2 = r6 + 1;
0x0006f59c mov r3, r8 | r3 = r8;
0x0006f59e movs r1, 0x76 | r1 = 0x76;
0x0006f5a0 mov r0, r5 | r0 = r5;
0x0006f5a2 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006f5a6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006f5aa mov r2, r6 | r2 = r6;
0x0006f5ac mov r3, r8 | r3 = r8;
0x0006f5ae movs r1, 0x76 | r1 = 0x76;
0x0006f5b0 mov r0, r5 | r0 = r5;
0x0006f5b2 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006f5b6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_23:
0x00070922 ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x00070924 mov r1, r5 | r1 = r5;
0x00070926 rsbs r2, r3, 0 | r2 = r3 - ;
0x00070928 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0007092c b.w 0x6f596 |
| } while (1);
| label_22:
0x00070930 mov r1, r5 | r1 = r5;
0x00070932 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x00070936 b.w 0x6f56e | goto label_5;
| do {
0x00070998 mov r0, r5 | r0 = r5;
0x0007099a bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0007099e mov sb, r0 | sb = r0;
0x000709a0 b.w 0x6f50c | goto label_6;
0x00070a1c stm.w sl!, {r0, r1} | *(sl!) = r0;
| *((sl! + 4)) = r1;
0x00070a20 b 0x70998 |
| } 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/libsqlite3.so.0.8.6 @ 0x63c50 */
| #include <stdint.h>
|
; (fcn) fcn.00063c50 () | void fcn_00063c50 (int16_t arg_64h, uint32_t arg2) {
| r1 = arg2;
0x00063c50 ldrd r3, r1, [sp, 0x64] | __asm ("ldrd r3, r1, [arg_64h]");
| if (r3 == 0) {
0x00063c54 cbz r3, 0x63c68 | goto label_0;
| }
0x00063c56 ldrb r2, [r4, 0x13] | r2 = *((r4 + 0x13));
0x00063c58 cmp r2, 7 |
| if (r2 > 7) {
0x00063c5a bhi 0x63b9c | void (*0x63b9c)() ();
| }
0x00063c5c add.w r0, r4, r2, lsl 2 | r0 = r4 + (r2 << 2);
0x00063c60 adds r2, 1 | r2++;
0x00063c62 strb r2, [r4, 0x13] | *((r4 + 0x13)) = r2;
0x00063c64 str.w r3, [r0, 0x94] | __asm ("str.w r3, [r0, 0x94]");
| label_0:
0x00063c68 cmp r1, 0 |
| if (r1 == 0) {
0x00063c6a beq 0x63b9c | void (*0x63b9c)() ();
| }
0x00063c6c ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x00063c6e cmp r3, 7 |
| if (r3 > 7) {
0x00063c70 bhi 0x63b9c | void (*0x63b9c)() ();
| }
0x00063c72 adds r2, r3, 1 | r2 = r3 + 1;
0x00063c74 add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x00063c78 strb r2, [r4, 0x13] | *((r4 + 0x13)) = r2;
0x00063c7a str.w r1, [r3, 0x94] | __asm ("str.w r1, [r3, 0x94]");
0x00063c7e b 0x63b9c | return void (*0x63b9c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x64ec4 */
| #include <stdint.h>
|
; (fcn) fcn.00064ec4 () | void fcn_00064ec4 (int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_53h, int16_t arg_60h, int16_t arg_64h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_34h_2;
| int16_t var_84h;
| 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_2;
| int16_t var_1ch_2;
| int16_t var_20h;
| int32_t var_20h_2;
| int16_t var_28h_2;
| int16_t var_2ch_2;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00064ec4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00064ec8 sub sp, 0x3c |
0x00064eca ldr.w r4, [pc, 0x4ec] |
0x00064ece mov ip, r1 |
0x00064ed0 mov r5, r3 | r5 = r3;
0x00064ed2 mov r6, r2 | r6 = r2;
0x00064ed4 strd r1, r0, [sp, 8] | __asm ("strd r1, r0, [var_8h]");
0x00064ed8 ldr.w r1, [pc, 0x4e0] | r1 = *(0x653bc);
0x00064edc add r4, pc | r4 = 0xca29a;
0x00064ede ldr.w sb, [r0, 8] | sb = *((r0 + 8));
0x00064ee2 ldr r1, [r4, r1] |
0x00064ee4 ldr.w r4, [ip] | r4 = *(ip);
0x00064ee8 ldr r1, [r1] | r1 = *(0xca29a);
0x00064eea str r1, [sp, 0x34] | var_34h = r1;
0x00064eec mov.w r1, 0 | r1 = 0;
0x00064ef0 ldrb r3, [r4] | r3 = *(r4);
0x00064ef2 sub.w r2, r3, 0x2d | r2 = r3 - 0x2d;
0x00064ef6 tst.w r2, 0xf7 |
| if ((r2 & 0xf7) == 0) {
0x00064efa beq.w 0x65122 | goto label_15;
| }
0x00064efe cmp r3, 0x32 |
| if (r3 == 0x32) {
0x00064f00 beq.w 0x6521c | goto label_16;
| }
0x00064f04 ldr r7, [r6, 0x48] | r7 = *((r6 + 0x48));
0x00064f06 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x00064f08 lsls r3, r3, 0x15 | r3 <<= 0x15;
| if (r3 >= r3) {
0x00064f0a bpl.w 0x65104 | goto label_17;
| }
| label_1:
0x00064f0e cmp r5, 0 |
| if (r5 <= 0) {
0x00064f10 ble 0x64f2c | goto label_18;
| }
0x00064f12 ldr r1, [r7, 0x30] | r1 = *((r7 + 0x30));
0x00064f14 movs r3, 0 | r3 = 0;
0x00064f16 subs r1, 4 | r1 -= 4;
| do {
0x00064f18 ldr r2, [r1, 4]! | r2 = *((r1 += 4));
| if (r2 != 0) {
0x00064f1c cbz r2, 0x64f26 |
0x00064f1e ldr r2, [r2] | r2 = *(r2);
0x00064f20 cmp r2, r4 |
| if (r2 == r4) {
0x00064f22 beq.w 0x65162 | goto label_19;
| }
| }
0x00064f26 adds r3, 1 | r3++;
0x00064f28 cmp r5, r3 |
0x00064f2a bne 0x64f18 |
| } while (r5 != r3);
| label_18:
0x00064f2c ldrh r1, [r7, 0x28] | r1 = *((r7 + 0x28));
0x00064f2e cmp r5, r1 |
| if (r5 >= r1) {
0x00064f30 bge.w 0x6536a | goto label_20;
| }
0x00064f34 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x00064f36 mov.w r8, 0 | r8 = 0;
0x00064f3a add.w r1, r3, r1, lsl 2 | r1 = r3 + (r1 << 2);
0x00064f3e add.w r3, r3, r5, lsl 2 | r3 += (r5 << 2);
| do {
0x00064f42 ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x00064f46 ldr r2, [r2] | r2 = *(r2);
0x00064f48 cmp r2, r4 |
0x00064f4a it eq |
| if (r2 != r4) {
0x00064f4c addeq r8, r8, 1 | r8++;
| }
0x00064f50 cmp r1, r3 |
0x00064f52 bne 0x64f42 |
| } while (r1 != r3);
| label_11:
0x00064f54 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00064f56 mov.w sl, 0 | sl = 0;
0x00064f5a str.w sl, [sp, 0x30] | __asm ("str.w sl, [var_30h]");
0x00064f5e lsls r0, r3, 0x14 | r0 = r3 << 0x14;
| if (r0 < r3) {
0x00064f60 bpl 0x64f6e |
0x00064f62 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00064f64 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00064f66 ldr r3, [r3] | r3 = *(r3);
0x00064f68 cmp r3, 1 |
| if (r3 != 1) {
0x00064f6a bne.w 0x6517e | goto label_21;
| }
| }
0x00064f6e movs r3, 0 | r3 = 0;
0x00064f70 add r2, sp, 0x30 | r2 += var_30h;
0x00064f72 str r3, [sp] | *(sp) = r3;
0x00064f74 mov r1, r4 | r1 = r4;
0x00064f76 str r2, [sp, 4] | var_4h = r2;
0x00064f78 movs r2, 4 | r2 = 4;
0x00064f7a ldr r0, [sp, 0xc] | r0 = var_ch;
0x00064f7c str r3, [sp, 0x10] | var_10h = r3;
0x00064f7e bl 0x62000 | fcn_00062000 (r0, r1, r2, r3, r4, r5, r6);
0x00064f82 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00064f84 str r0, [sp, 0x18] | var_18h_2 = r0;
0x00064f86 str r3, [sp, 0x14] | var_14h = r3;
| label_9:
0x00064f88 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00064f8a cmp r3, 4 |
| if (r3 == 4) {
0x00064f8c beq.w 0x6516e | goto label_22;
| }
| label_8:
0x00064f90 ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x00064f92 cmp r3, 0 |
0x00064f94 ite eq |
| if (r3 != 0) {
0x00064f96 moveq r1, 0x25 | r1 = 0x25;
| }
| if (r3 == 0) {
0x00064f98 movne r1, 0x21 | r1 = 0x21;
| }
| label_2:
0x00064f9a movs r3, 0 | r3 = 0;
0x00064f9c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00064f9e str r3, [sp] | *(sp) = r3;
0x00064fa0 mov r0, sb | r0 = sb;
0x00064fa2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00064fa6 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x00064fa8 ldr.w sl, [r6, 0x40] | sl = *((r6 + 0x40));
0x00064fac orr r2, r3, 0x800 | r2 = r3 | 0x800;
0x00064fb0 str r2, [r7, 0x24] | *((r7 + 0x24)) = r2;
0x00064fb2 cmp.w sl, 0 |
| if (sl == 0) {
0x00064fb6 bne 0x64fc2 |
0x00064fb8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00064fba ldr r2, [r1, 0x38] | r2 = *((r1 + 0x38));
0x00064fbc subs r2, 1 | r2--;
0x00064fbe str r2, [r1, 0x38] | *((r1 + 0x38)) = r2;
0x00064fc0 str r2, [r6, 0x10] | *((r6 + 0x10)) = r2;
| }
0x00064fc2 cmp r5, 0 |
| if (r5 > 0) {
0x00064fc4 ble 0x64fd0 |
0x00064fc6 lsls r1, r3, 0xb | r1 = r3 << 0xb;
0x00064fc8 itt pl |
| if (r1 < r3) {
0x00064fca orrpl r3, r3, 0x40800 | r3 |= 0x40800;
| }
| if (r1 < r3) {
0x00064fce str r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
| goto label_23;
| }
| }
| label_23:
0x00064fd0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00064fd2 add.w r2, sl, r8 | r2 = sl + r8;
0x00064fd6 ldr.w fp, [r6, 0x44] | fp = *((r6 + 0x44));
0x00064fda str r2, [r6, 0x40] | *((r6 + 0x40)) = r2;
0x00064fdc add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x00064fe0 ldr.w r8, [r3] | r8 = *(r3);
0x00064fe4 movs r3, 0 | r3 = 0;
0x00064fe6 lsls r2, r2, 2 | r2 <<= 2;
0x00064fe8 mov r1, fp | r1 = fp;
0x00064fea mov r0, r8 | r0 = r8;
0x00064fec bl 0x1b3a0 | r0 = fcn_0001b3a0 (r0, r1, r2);
0x00064ff0 cmp r0, 0 |
| if (r0 == 0) {
0x00064ff2 beq.w 0x65262 | goto label_24;
| }
0x00064ff6 ldrh r1, [r7, 0x28] | r1 = *((r7 + 0x28));
0x00064ff8 add.w sl, sl, sl, lsl 2 | sl += (sl << 2);
0x00064ffc str r0, [r6, 0x44] | *((r6 + 0x44)) = r0;
0x00064ffe add.w fp, r0, sl, lsl 2 |
0x00065002 cmp r1, r5 |
| if (r1 <= r5) {
0x00065004 ble 0x650e0 | goto label_25;
| }
0x00065006 ldr r2, [sp, 0x64] | r2 = *(arg_64h);
0x00065008 movs r3, 0 | r3 = 0;
0x0006500a mov r8, r5 | r8 = r5;
0x0006500c mov sl, r5 | sl = r5;
0x0006500e subs r2, r2, r5 | r2 -= r5;
0x00065010 strd r2, r6, [sp, 0x1c] | __asm ("strd r2, r6, [var_20h]");
0x00065014 mov r6, r3 | r6 = r3;
0x00065016 b 0x65020 |
| while (r3 != r4) {
0x00065018 add.w r8, r8, 1 | r8++;
0x0006501c cmp r1, r8 |
| if (r1 <= r8) {
0x0006501e ble 0x650dc | goto label_26;
| }
| label_0:
0x00065020 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x00065022 ldr.w r3, [r3, r8, lsl 2] | offset_0 = r8 << 2;
| r3 = *((r3 + offset_0));
0x00065026 ldr r3, [r3] | r3 = *(r3);
0x00065028 cmp r3, r4 |
0x0006502a bne 0x65018 |
| }
0x0006502c ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x0006502e ldrd r0, r2, [sb, 0x6c] | __asm ("ldrd r0, r2, [sb, 0x6c]");
0x00065032 add.w r5, r3, r8 | r5 = r3 + r8;
0x00065036 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00065038 cmp r3, 1 |
| if (r3 == 1) {
0x0006503a beq.w 0x65232 | goto label_27;
| }
0x0006503e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00065040 cmp r3, 0 |
| if (r3 == 0) {
0x00065042 beq.w 0x6522e | goto label_28;
| }
0x00065046 ldr.w r3, [r3, r6, lsl 2] | offset_1 = r6 << 2;
| r3 = *((r3 + offset_1));
0x0006504a adds r6, 1 | r6++;
| label_5:
0x0006504c cmp r2, r0 |
| if (r2 <= r0) {
0x0006504e ble.w 0x65278 | goto label_29;
| }
0x00065052 ldr.w r1, [sb, 0x68] | r1 = *((sb + 0x68));
0x00065056 add.w r2, r0, r0, lsl 2 | r2 = r0 + (r0 << 2);
0x0006505a add.w ip, r0, 1 |
0x0006505e str.w ip, [sb, 0x6c] | __asm ("str.w ip, [sb, 0x6c]");
0x00065062 mov.w ip, 0x5b |
0x00065066 add.w lr, r1, r2, lsl 2 | lr = r1 + (r2 << 2);
0x0006506a str.w r3, [lr, 8] | __asm ("str.w r3, [lr, 8]");
0x0006506e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00065070 str.w r5, [lr, 0xc] | __asm ("str.w r5, [lr, 0xc]");
0x00065074 str.w r3, [lr, 4] | __asm ("str.w r3, [lr, 4]");
0x00065078 movs r3, 0 | r3 = 0;
0x0006507a str.w r3, [lr, 0x10] | __asm ("str.w r3, [lr, 0x10]");
0x0006507e str.w ip, [r1, r2, lsl 2] | __asm ("str.w ip, [r1, r2, lsl 2]");
| label_6:
0x00065082 movs r3, 0 | r3 = 0;
0x00065084 str.w r0, [fp, 4] | __asm ("str.w r0, [arg_64h]");
0x00065088 mov r2, r5 | r2 = r5;
0x0006508a str r3, [sp] | *(sp) = r3;
0x0006508c movs r1, 0x32 | r1 = 0x32;
0x0006508e mov r0, sb | r0 = sb;
0x00065090 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00065094 cmp r8, sl |
0x00065096 itt ne |
| if (r8 == sl) {
0x00065098 movne r3, 0xb1 | r3 = 0xb1;
| }
| if (r8 == sl) {
0x0006509a strbne r3, [fp, 0x10] | *(arg_10h) = r3;
| }
| if (r8 == sl) {
0x0006509e bne 0x650ce |
0x000650a0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000650a2 cmp.w r8, 0 |
0x000650a6 it gt |
| if (r8 <= 0) {
0x000650a8 strgt r8, [fp, 0xc] | *(arg_ch) = r8;
| }
0x000650ac str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x000650b0 ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x000650b2 rsb.w r3, r3, 5 | r3 = 5 - r3;
0x000650b6 strb.w r3, [fp, 0x10] | *(arg_10h) = r3;
0x000650ba itete le |
| if (r8 > 0) {
0x000650bc movle r3, 0 | r3 = 0;
| }
| if (r8 <= 0) {
0x000650be ldrgt r3, [sp, 0x64] | r3 = *(arg_64h);
| }
| if (r8 > 0) {
0x000650c0 strle r3, [fp, 0xc] | *(arg_ch) = r3;
| }
| if (r8 > 0) {
0x000650c4 sub.w r3, r3, r8 | r3 -= r8;
| }
0x000650c8 it gt |
| if (r8 > 0) {
0x000650ca strgt r3, [fp, 8] | *(arg_8h) = r3;
| goto label_30;
| }
| }
| label_30:
0x000650ce ldrh r1, [r7, 0x28] | r1 = *((r7 + 0x28));
0x000650d0 add.w r8, r8, 1 | r8++;
0x000650d4 add.w fp, fp, 0x14 |
0x000650d8 cmp r1, r8 |
| if (r1 > r8) {
0x000650da bgt 0x65020 | goto label_0;
| }
| label_26:
0x000650dc ldr r6, [sp, 0x20] | r6 = var_20h;
0x000650de mov r5, sl | r5 = sl;
| label_25:
0x000650e0 cmp r5, 0 |
| if (r5 > 0) {
0x000650e2 ble 0x650f4 |
0x000650e4 ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x000650e6 mov.w r3, 0x400 |
0x000650ea movt r3, 0x10 | r3 = 0x100400;
0x000650ee ands r3, r2 | r3 &= r2;
| if (r3 == r2) {
0x000650f0 beq.w 0x652a0 | goto label_31;
| }
| }
| label_7:
0x000650f4 ldr r1, [sp, 0x10] | r1 = var_10h;
| if (r1 != 0) {
0x000650f6 cbz r1, 0x65100 |
0x000650f8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000650fa ldr r0, [r3] | r0 = *(r3);
0x000650fc bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00065100 ldr r4, [sp, 0x64] | r4 = *(arg_64h);
0x00065102 b 0x6512c | goto label_4;
| label_17:
0x00065104 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x00065106 cmp r3, 0 |
| if (r3 == 0) {
0x00065108 beq.w 0x64f0e | goto label_1;
| }
0x0006510c ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0006510e ldrb r3, [r3, r5] | r3 = *((r3 + r5));
0x00065110 cmp r3, 0 |
| if (r3 == 0) {
0x00065112 beq.w 0x64f0e | goto label_1;
| }
0x00065116 ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x00065118 clz r3, r3 | r3 &= r3;
0x0006511c lsrs r3, r3, 5 | r3 >>= 5;
0x0006511e str r3, [sp, 0x60] | *(arg_60h) = r3;
0x00065120 b 0x64f0e | goto label_1;
| label_15:
0x00065122 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x00065124 ldr r2, [sp, 0x64] | r2 = *(arg_64h);
0x00065126 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0006512a mov r4, r0 | r4 = r0;
| label_4:
0x0006512c ldr r3, [r6, 0x48] | r3 = *((r6 + 0x48));
0x0006512e ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x00065130 lsls r2, r3, 0xa | r2 = r3 << 0xa;
| if (r2 < r3) {
0x00065132 bpl 0x6513c |
0x00065134 ldr r3, [sp, 8] | r3 = var_8h;
0x00065136 ldrh r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00065138 lsls r3, r3, 0x14 | r3 <<= 0x14;
| if (r3 < r3) {
0x0006513a bmi 0x65144 | goto label_32;
| }
| }
0x0006513c ldr r1, [sp, 8] | r1 = var_8h;
0x0006513e mov r0, r6 | r0 = r6;
0x00065140 bl 0xa0c4 | fcn_0000a0c4 (r0, r1);
| do {
| label_32:
0x00065144 ldr r2, [pc, 0x278] |
0x00065146 ldr r3, [pc, 0x274] | r3 = *(0x653be);
0x00065148 add r2, pc | r2 = 0xca50c;
0x0006514a ldr r3, [r2, r3] | r3 = *(0xca50c);
0x0006514c ldr r2, [r3] | r2 = *(0xca50c);
0x0006514e ldr r3, [sp, 0x34] | r3 = var_34h;
0x00065150 eors r2, r3 | r2 ^= r3;
0x00065152 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00065156 bne.w 0x653b2 | goto label_33;
| }
0x0006515a mov r0, r4 | r0 = r4;
0x0006515c add sp, 0x3c |
0x0006515e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_19:
0x00065162 ldr r1, [sp, 8] | r1 = var_8h;
0x00065164 mov r0, r6 | r0 = r6;
0x00065166 ldr r4, [sp, 0x64] | r4 = *(arg_64h);
0x00065168 bl 0xa0c4 | fcn_0000a0c4 (r0, r1);
0x0006516c b 0x65144 |
| } while (1);
| label_22:
0x0006516e ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x00065170 cmp r3, 0 |
| if (r3 != 0) {
0x00065172 bne.w 0x65286 | goto label_34;
| }
0x00065176 movs r3, 1 | r3 = 1;
0x00065178 movs r1, 0x21 | r1 = 0x21;
0x0006517a str r3, [sp, 0x60] | *(arg_60h) = r3;
0x0006517c b 0x64f9a | goto label_2;
| label_21:
0x0006517e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00065180 mov r2, sl | r2 = sl;
0x00065182 mov r1, r4 | r1 = r4;
0x00065184 ldr r3, [r3] | r3 = *(r3);
0x00065186 mov r0, r3 | r0 = r3;
0x00065188 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x0006518a mov fp, r0 |
0x0006518c mov r3, sl | r3 = sl;
0x0006518e bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x00065192 ldrb.w r3, [fp, 0x53] | r3 = *(arg_53h);
0x00065196 str r0, [sp, 0x10] | var_10h = r0;
0x00065198 cmp r3, 0 |
| if (r3 != 0) {
0x0006519a bne 0x6528e | goto label_35;
| }
0x0006519c ldr r2, [r0, 0x14] | r2 = *((r0 + 0x14));
0x0006519e ldrh r1, [r7, 0x28] | r1 = *((r7 + 0x28));
0x000651a0 ldr r2, [r2, 0x1c] | r2 = *((r2 + 0x1c));
0x000651a2 cmp r5, r1 |
0x000651a4 str r2, [sp, 0x14] | var_14h = r2;
0x000651a6 ldr r2, [r0, 0xc] | r2 = *((r0 + 0xc));
0x000651a8 ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x000651aa str r2, [sp, 0x18] | var_18h_2 = r2;
| if (r5 >= r1) {
0x000651ac bge 0x652ae | goto label_36;
| }
0x000651ae mov sl, r5 | sl = r5;
0x000651b0 strd r8, sb, [sp, 0x20] | __asm ("strd r8, sb, [var_20h]");
0x000651b4 str r6, [sp, 0x28] | var_28h_2 = r6;
0x000651b6 mov r6, r3 | r6 = r3;
0x000651b8 str r5, [sp, 0x2c] | var_2ch_2 = r5;
0x000651ba mov r5, r3 | r5 = r3;
0x000651bc ldr.w r8, [sp, 0xc] | r8 = var_ch;
0x000651c0 b 0x651cc |
| while (r4 != r2) {
| label_3:
0x000651c2 add.w sl, sl, 1 | sl++;
0x000651c6 cmp sl, r1 |
| if (sl >= r1) {
0x000651c8 bge.w 0x6535c | goto label_37;
| }
0x000651cc ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x000651ce ldr.w r3, [r3, sl, lsl 2] | offset_2 = sl << 2;
| r3 = *((r3 + offset_2));
0x000651d2 ldr r2, [r3] | r2 = *(r3);
0x000651d4 cmp r4, r2 |
0x000651d6 bne 0x651c2 |
| }
0x000651d8 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x000651da add.w fp, r3, -1 |
0x000651de ldr r3, [sp, 0x14] | r3 = var_14h;
0x000651e0 lsl.w fp, fp, 4 |
0x000651e4 add.w sb, r3, fp | sb = r3 + fp;
0x000651e8 ldr.w r2, [sb, 8] | r2 = *((sb + 8));
0x000651ec cmp r2, 0 |
| if (r2 == 0) {
0x000651ee beq 0x651c2 | goto label_3;
| }
0x000651f0 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x000651f2 mov r1, r5 | r1 = r5;
0x000651f4 mov r0, r8 | r0 = r8;
0x000651f6 add fp, r3 |
0x000651f8 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x000651fc movs r3, 0 | r3 = 0;
0x000651fe mov r1, r6 | r1 = r6;
0x00065200 str.w r3, [sb, 8] | __asm ("str.w r3, [sb, 8]");
0x00065204 mov r5, r0 | r5 = r0;
0x00065206 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x0006520a mov r0, r8 | r0 = r8;
0x0006520c bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00065210 movs r3, 0 | r3 = 0;
0x00065212 ldrh r1, [r7, 0x28] | r1 = *((r7 + 0x28));
0x00065214 mov r6, r0 | r6 = r0;
0x00065216 str.w r3, [fp, 8] | __asm ("str.w r3, [arg_8h]");
0x0006521a b 0x651c2 | goto label_3;
| label_16:
0x0006521c movs r2, 0 | r2 = 0;
0x0006521e ldr r3, [sp, 0x64] | r3 = *(arg_64h);
0x00065220 mov r0, sb | r0 = sb;
0x00065222 movs r1, 0x48 | r1 = 0x48;
0x00065224 str r2, [sp] | *(sp) = r2;
0x00065226 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006522a ldr r4, [sp, 0x64] | r4 = *(arg_64h);
0x0006522c b 0x6512c | goto label_4;
| label_28:
0x0006522e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00065230 b 0x6504c | goto label_5;
| label_27:
0x00065232 cmp r2, r0 |
| if (r2 <= r0) {
0x00065234 ble.w 0x65370 | goto label_38;
| }
0x00065238 ldr.w r1, [sb, 0x68] | r1 = *((sb + 0x68));
0x0006523c add.w r3, r0, r0, lsl 2 | r3 = r0 + (r0 << 2);
0x00065240 adds r2, r0, 1 | r2 = r0 + 1;
0x00065242 str.w r2, [sb, 0x6c] | __asm ("str.w r2, [sb, 0x6c]");
0x00065246 mov lr, r3 | lr = r3;
0x00065248 mov.w ip, 0x83 |
0x0006524c add.w r2, r1, r3, lsl 2 | r2 = r1 + (r3 << 2);
0x00065250 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00065252 strd r3, r5, [r2, 4] | __asm ("strd r3, r5, [r2, 4]");
0x00065256 movs r3, 0 | r3 = 0;
0x00065258 strd r3, r3, [r2, 0xc] | __asm ("strd r3, r3, [r2, 0xc]");
0x0006525c str.w ip, [r1, lr, lsl 2] | __asm ("str.w ip, [r1, lr, lsl 2]");
0x00065260 b 0x65082 | goto label_6;
| label_24:
0x00065262 cmp.w fp, 0 |
| if (fp != 0) {
0x00065266 beq 0x65270 |
0x00065268 mov r1, fp | r1 = fp;
0x0006526a mov r0, r8 | r0 = r8;
0x0006526c bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00065270 movs r3, 0 | r3 = 0;
0x00065272 strd r3, r3, [r6, 0x40] | __asm ("strd r3, r3, [r6, 0x40]");
0x00065276 b 0x650f4 | goto label_7;
| label_29:
0x00065278 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006527a movs r1, 0x5b | r1 = 0x5b;
0x0006527c mov r0, sb | r0 = sb;
0x0006527e str r5, [sp] | *(sp) = r5;
0x00065280 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00065284 b 0x65082 | goto label_6;
| label_34:
0x00065286 movs r3, 0 | r3 = 0;
0x00065288 movs r1, 0x25 | r1 = 0x25;
0x0006528a str r3, [sp, 0x60] | *(arg_60h) = r3;
0x0006528c b 0x64f9a | goto label_2;
| label_35:
0x0006528e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00065290 cmp r3, 0 |
| if (r3 != 0) {
0x00065292 bne 0x65350 | goto label_39;
| }
| label_12:
0x00065294 ldr r2, [sp, 8] | r2 = var_8h;
0x00065296 str r3, [sp, 0x14] | var_14h = r3;
0x00065298 movs r3, 5 | r3 = 5;
0x0006529a str r3, [sp, 0x18] | var_18h_2 = r3;
0x0006529c ldr r4, [r2] | r4 = *(r2);
0x0006529e b 0x64f90 | goto label_8;
| label_31:
0x000652a0 str r5, [sp] | *(sp) = r5;
0x000652a2 mov r0, sb | r0 = sb;
0x000652a4 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x000652a6 movs r1, 0x79 | r1 = 0x79;
0x000652a8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000652ac b 0x650f4 | goto label_7;
| label_36:
0x000652ae mov r4, r3 | r4 = r3;
0x000652b0 mov sl, r3 | sl = r3;
| label_10:
0x000652b2 ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 != 0) {
0x000652b4 cbz r3, 0x652be |
0x000652b6 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x000652b8 mov r1, r3 | r1 = r3;
0x000652ba bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x000652be ldr r3, [sp, 0x18] | r3 = var_18h_2;
| if (r3 != 0) {
0x000652c0 cbz r3, 0x652ca |
0x000652c2 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x000652c4 mov r1, r3 | r1 = r3;
0x000652c6 bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x000652ca ldr r3, [sp, 0x10] | r3 = var_10h;
0x000652cc ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x000652ce str r4, [r1, 0x14] | *((r1 + 0x14)) = r4;
0x000652d0 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000652d2 str.w sl, [r3, 0x1c] | __asm ("str.w sl, [r3, 0x1c]");
| if (r4 != 0) {
0x000652d6 cbz r4, 0x652de |
0x000652d8 ldr r2, [r4] | r2 = *(r4);
0x000652da cmp r2, 1 |
| if (r2 == 1) {
0x000652dc beq 0x6539c | goto label_40;
| }
| }
| label_14:
0x000652de ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
| if (r3 == 0) {
0x000652e0 cbz r3, 0x652f8 | goto label_41;
| }
0x000652e2 ldr r1, [r3] | r1 = *(r3);
0x000652e4 cmp r1, 0 |
| if (r1 <= 0) {
0x000652e6 ble 0x652f8 | goto label_41;
| }
0x000652e8 movs r2, 0 | r2 = 0;
0x000652ea mov r0, r2 | r0 = r2;
| do {
0x000652ec adds r2, 1 | r2++;
0x000652ee strh r0, [r3, 0x14] | *((r3 + 0x14)) = r0;
0x000652f0 cmp r2, r1 |
0x000652f2 add.w r3, r3, 0x10 | r3 += 0x10;
0x000652f6 bne 0x652ec |
| } while (r2 != r1);
| label_41:
0x000652f8 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x000652fa ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000652fe cmp r3, 0 |
| if (r3 != 0) {
0x00065300 bne 0x65382 | goto label_42;
| }
0x00065302 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00065304 lsl.w sl, r8, 2 | sl = r8 << 2;
0x00065308 ldr r0, [r2] | r0 = *(r2);
0x0006530a cmp r0, 0 |
| if (r0 == 0) {
0x0006530c beq 0x65390 | goto label_43;
| }
0x0006530e mov r2, sl | r2 = sl;
0x00065310 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00065314 mov r4, r0 | r4 = r0;
| if (r4 != 0) {
| label_13:
0x00065316 cbz r4, 0x65322 |
0x00065318 mov r2, sl | r2 = sl;
0x0006531a movs r1, 0 | r1 = 0;
0x0006531c mov r0, r4 | r0 = r4;
0x0006531e blx 0x8264 | fcn_00008264 ();
| }
0x00065322 add r3, sp, 0x30 | r3 += var_30h;
0x00065324 movs r2, 4 | r2 = 4;
0x00065326 str r3, [sp, 4] | var_4h = r3;
0x00065328 movs r3, 0 | r3 = 0;
0x0006532a ldrd r0, r1, [sp, 0xc] | __asm ("ldrd r0, r1, [var_ch]");
0x0006532e str r4, [sp] | *(sp) = r4;
0x00065330 bl 0x62000 | fcn_00062000 (r0, r1, r2, r3, r4, r5, r6);
0x00065334 ldr r3, [sp, 8] | r3 = var_8h;
0x00065336 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00065338 str r0, [sp, 0x18] | var_18h_2 = r0;
0x0006533a ldr r3, [r3] | r3 = *(r3);
0x0006533c str r2, [sp, 0x14] | var_14h = r2;
0x0006533e str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
| do {
0x00065340 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00065342 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x00065344 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x00065348 ldr r3, [sp, 8] | r3 = var_8h;
0x0006534a str r4, [sp, 0x10] | var_10h = r4;
0x0006534c ldr r4, [r3] | r4 = *(r3);
0x0006534e b 0x64f88 | goto label_9;
| label_39:
0x00065350 movs r3, 5 | r3 = 5;
0x00065352 mov r4, sl | r4 = sl;
0x00065354 str.w sl, [sp, 0x14] | __asm ("str.w sl, [var_14h]");
0x00065358 str r3, [sp, 0x18] | var_18h_2 = r3;
0x0006535a b 0x65340 |
| } while (1);
| label_37:
0x0006535c mov sl, r5 | sl = r5;
0x0006535e mov r4, r6 | r4 = r6;
0x00065360 ldrd r8, sb, [sp, 0x20] | __asm ("ldrd r8, sb, [var_20h]");
0x00065364 ldrd r6, r5, [sp, 0x28] | __asm ("ldrd r6, r5, [var_28h_2]");
0x00065368 b 0x652b2 | goto label_10;
| label_20:
0x0006536a mov.w r8, 0 | r8 = 0;
0x0006536e b 0x64f54 | goto label_11;
| label_38:
0x00065370 movs r3, 0 | r3 = 0;
0x00065372 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00065374 str r3, [sp] | *(sp) = r3;
0x00065376 movs r1, 0x83 | r1 = 0x83;
0x00065378 mov r3, r5 | r3 = r5;
0x0006537a mov r0, sb | r0 = sb;
0x0006537c bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00065380 b 0x65082 | goto label_6;
| label_42:
0x00065382 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00065384 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x00065386 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x0006538a movs r3, 0 | r3 = 0;
0x0006538c str r3, [sp, 0x10] | var_10h = r3;
0x0006538e b 0x65294 | goto label_12;
| label_43:
0x00065390 mov r1, r0 | r1 = r0;
0x00065392 mov r0, sl | r0 = sl;
0x00065394 bl 0x12abc | r0 = fcn_00012abc (r0);
0x00065398 mov r4, r0 | r4 = r0;
0x0006539a b 0x65316 | goto label_13;
| label_40:
0x0006539c movs r3, 0 | r3 = 0;
0x0006539e mov r2, r4 | r2 = r4;
0x000653a0 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x000653a2 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x000653a4 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x000653a6 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000653aa ldr r3, [sp, 0x10] | r3 = var_10h;
0x000653ac str r4, [r3, 0xc] | *((r3 + 0xc)) = r4;
0x000653ae ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000653b0 b 0x652de | goto label_14;
| label_33:
0x000653b2 blx 0x7e8c | fcn_00007e8c ();
0x000653b6 nop |
0x000653b8 ldrh r4, [r6, 0x2c] | r4 = *((r6 + 0x2c));
0x000653ba movs r6, r0 | r6 = r0;
0x000653bc lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000653be movs r0, r0 |
0x000653c0 ldrh r0, [r1, 0x1a] | r0 = *((r1 + 0x1a));
0x000653c2 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x653c4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000653c4 () | void fcn_000653c4 (int16_t arg_0h, int16_t arg_4h, int16_t arg_9h, int16_t arg_ch, int16_t arg_10h, int16_t arg_14h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_81h;
| int16_t var_82h;
| int16_t var_83h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000653c4 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000653c8 sub sp, 0x8c |
0x000653ca str r2, [sp, 0x2c] | var_2ch = r2;
0x000653cc mov sl, r1 | sl = r1;
0x000653ce ldr r5, [r1] | r5 = *(r1);
0x000653d0 mov r1, r2 | r1 = r2;
0x000653d2 ldr.w r2, [pc, 0xbc0] |
0x000653d6 ldr.w r3, [pc, 0xbc0] | r3 = *(0x65f9a);
0x000653da str r0, [sp, 0x28] | var_28h = r0;
0x000653dc add r2, pc | r2 = 0xcb376;
0x000653de ldr r3, [r2, r3] |
0x000653e0 ldr r3, [r3] | r3 = *(0xcb376);
0x000653e2 str r3, [sp, 0x84] | var_84h = r3;
0x000653e4 mov.w r3, 0 | r3 = 0;
0x000653e8 ldr r3, [r5] | r3 = *(r5);
0x000653ea str r3, [sp, 0x1c] | var_1ch = r3;
0x000653ec ldr r3, [r3] | r3 = *(r3);
0x000653ee str r3, [sp, 0x34] | var_34h = r3;
0x000653f0 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000653f4 str r3, [sp, 0x18] | var_18h = r3;
0x000653f6 cmp r3, 0 |
| if (r3 != 0) {
0x000653f8 bne 0x6546c | goto label_0;
| }
0x000653fa add.w r3, r1, r1, lsl 1 | r3 = r1 + (r1 << 1);
0x000653fe ldr.w r6, [sl, 0x14] | r6 = *((sl + 0x14));
0x00065402 add.w fp, r5, 0x1e8 |
0x00065406 lsls r3, r3, 4 | r3 <<= 4;
0x00065408 ldr r7, [r6, r3] | r7 = *((r6 + r3));
0x0006540a add r6, r3 | r6 += r3;
0x0006540c str r3, [sp, 0x14] | var_14h = r3;
0x0006540e ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x00065410 cmp r1, 0 |
| if (r1 == 0) {
0x00065412 beq 0x6548c | goto label_84;
| }
0x00065414 mov r0, fp | r0 = fp;
0x00065416 bl 0x29998 | fcn_00029998 (r0, r1);
0x0006541a ldrb.w sb, [r7] | sb = *(r7);
0x0006541e strd r0, r1, [sp, 0x38] | __asm ("strd r0, r1, [var_38h]");
0x00065422 cmp.w sb, 0x31 |
| if (sb == 0x31) {
0x00065426 beq 0x6549c | goto label_85;
| }
| do {
0x00065428 cmp.w sb, 0x32 |
0x0006542c ldr r4, [r7, 4] | r4 = *((r7 + 4));
| if (sb == 0x32) {
0x0006542e beq 0x65504 | goto label_86;
| }
0x00065430 ldr r1, [r7, 0x10] | r1 = *((r7 + 0x10));
0x00065432 cmp r1, 0 |
| if (r1 == 0) {
0x00065434 beq 0x65504 | goto label_86;
| }
0x00065436 mov r0, fp | r0 = fp;
0x00065438 bl 0x29998 | r0 = fcn_00029998 (r0, r1);
0x0006543c mov r8, r0 | r8 = r0;
0x0006543e str r1, [sp, 0x30] | var_30h = r1;
0x00065440 b 0x6550c | goto label_21;
| label_1:
0x00065442 ldrb r3, [r7] | r3 = *(r7);
0x00065444 cmp r3, 0x30 |
| if (r3 != 0x30) {
0x00065446 bne.w 0x656e2 | goto label_87;
| }
0x0006544a ldrb.w r3, [sl, 8] | r3 = *((sl + 8));
0x0006544e cmp r3, 0x2c |
| if (r3 == 0x2c) {
0x00065450 beq.w 0x65ee0 | goto label_88;
| }
| label_2:
0x00065454 ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x00065458 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006545a add r3, r2 | r3 += r2;
| label_26:
0x0006545c ldrd r1, r2, [r3, 0x20] | __asm ("ldrd r1, r2, [r3, 0x20]");
0x00065460 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00065462 orrs r1, r0 | r1 |= r0;
0x00065464 ldr r0, [sp, 0x44] | r0 = var_44h;
0x00065466 orrs r2, r0 | r2 |= r0;
0x00065468 strd r1, r2, [r3, 0x20] | __asm ("strd r1, r2, [r3, 0x20]");
| label_0:
0x0006546c ldr.w r2, [pc, 0xb2c] |
0x00065470 ldr.w r3, [pc, 0xb24] | r3 = *(0x65f98);
0x00065474 add r2, pc | r2 = 0xcb414;
0x00065476 ldr r3, [r2, r3] | r3 = *(0xcb414);
0x00065478 ldr r2, [r3] | r2 = *(0xcb414);
0x0006547a ldr r3, [sp, 0x84] | r3 = var_84h;
0x0006547c eors r2, r3 | r2 ^= r3;
0x0006547e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00065482 bne.w 0x66c36 | goto label_89;
| }
0x00065486 add sp, 0x8c |
0x00065488 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_84:
0x0006548c ldrb.w sb, [r7] | sb = *(r7);
0x00065490 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00065492 cmp.w sb, 0x31 |
0x00065496 strd r3, r3, [sp, 0x38] | __asm ("strd r3, r3, [var_38h]");
0x0006549a bne 0x65428 |
| } while (sb != 0x31);
| label_85:
0x0006549c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006549e mov r1, r7 | r1 = r7;
0x000654a0 bl 0x2645c | r0 = fcn_0002645c (r0, r1);
0x000654a4 mov r2, r0 | r2 = r0;
0x000654a6 cmp r0, 0 |
| if (r0 != 0) {
0x000654a8 bne 0x6546c | goto label_0;
| }
0x000654aa ldr r4, [r7, 4] | r4 = *((r7 + 4));
0x000654ac ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x000654ae ands r8, r4, 0x800 | r8 = r4 & 0x800;
| if (r8 != r4) {
0x000654b2 bne.w 0x65f72 | goto label_90;
| }
| if (r1 == 0) {
0x000654b6 cbz r1, 0x65504 | goto label_86;
| }
0x000654b8 ldr r0, [r1] | r0 = *(r1);
0x000654ba cmp r0, 0 |
| if (r0 <= 0) {
0x000654bc ble 0x65508 | goto label_91;
| }
0x000654be strd sb, r6, [sp, 0x20] | __asm ("strd sb, r6, [var_20h]");
0x000654c2 mov r8, r2 | r8 = r2;
0x000654c4 str r5, [sp, 0x30] | var_30h = r5;
0x000654c6 mov r6, r2 | r6 = r2;
0x000654c8 str r7, [sp, 0x40] | var_40h = r7;
0x000654ca mov sb, r1 | sb = r1;
0x000654cc mov r7, fp | r7 = fp;
0x000654ce mov r5, r0 | r5 = r0;
0x000654d0 mov fp, sl |
0x000654d2 mov sl, r4 | sl = r4;
0x000654d4 mov r4, r2 | r4 = r2;
| do {
0x000654d6 ldr.w r1, [sb, 8] | r1 = *((sb + 8));
| if (r1 != 0) {
0x000654da cbz r1, 0x654e8 |
0x000654dc mov r0, r7 | r0 = r7;
0x000654de bl 0x29998 | r0 = fcn_00029998 (r0, r1);
0x000654e2 orr.w r8, r0, r8 | r8 = r0 | r8;
0x000654e6 orrs r4, r1 | r4 |= r1;
| }
0x000654e8 adds r6, 1 | r6++;
0x000654ea add.w sb, sb, 0x10 | sb += 0x10;
0x000654ee cmp r6, r5 |
0x000654f0 bne 0x654d6 |
| } while (r6 != r5);
0x000654f2 ldr r5, [sp, 0x30] | r5 = var_30h;
0x000654f4 ldrd sb, r6, [sp, 0x20] | __asm ("ldrd sb, r6, [var_20h]");
0x000654f8 str r4, [sp, 0x30] | var_30h = r4;
0x000654fa mov r4, sl | r4 = sl;
0x000654fc mov sl, fp | sl = fp;
0x000654fe mov fp, r7 |
0x00065500 ldr r7, [sp, 0x40] | r7 = var_40h;
0x00065502 b 0x6550c | goto label_21;
| label_86:
0x00065504 mov.w r8, 0 | r8 = 0;
| label_91:
0x00065508 str.w r8, [sp, 0x30] | __asm ("str.w r8, [var_30h]");
| label_21:
0x0006550c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006550e movs r2, 0 | r2 = 0;
0x00065510 str.w r8, [r6, 0x20] | __asm ("str.w r8, [r6, 0x20]");
0x00065514 mov r1, r7 | r1 = r7;
0x00065516 mov r0, fp | r0 = fp;
0x00065518 str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
0x0006551a str.w r2, [r5, 0x1e8] | __asm ("str.w r2, aav.0x000000ff");
0x0006551e bl 0x29998 | fcn_00029998 (r0, r1);
0x00065522 ldr.w r2, [r5, 0x1e8] | r2 = *((r5 + 0x1e8));
0x00065526 strd r0, r1, [sp, 0x20] | __asm ("strd r0, r1, [var_20h]");
| if (r2 != 0) {
0x0006552a cbz r2, 0x65534 |
0x0006552c ldrh r2, [r6, 0xa] | r2 = *((r6 + 0xa));
0x0006552e orr r2, r2, 0x1000 | r2 |= 0x1000;
0x00065532 strh r2, [r6, 0xa] | *((r6 + 0xa)) = r2;
| }
0x00065534 ands r4, r4, 1 | r4 &= 1;
| if (r4 == r4) {
0x00065538 beq.w 0x656dc | goto label_92;
| }
0x0006553c ldr.w r1, [r5, 0x1ec] | r1 = *((r5 + 0x1ec));
0x00065540 ldr r0, [r7, 0x24] | r0 = *((r7 + 0x24));
0x00065542 cmp r1, 0 |
| if (r1 <= 0) {
0x00065544 ble.w 0x65b1a | goto label_93;
| }
0x00065548 add.w r5, r5, 0x1ec | r5 += 0x1ec;
0x0006554c movs r2, 0 | r2 = 0;
0x0006554e b 0x65558 |
| while (r0 != r3) {
0x00065550 adds r2, 1 | r2++;
0x00065552 cmp r2, r1 |
| if (r2 == r1) {
0x00065554 beq.w 0x65b1a | goto label_93;
| }
0x00065558 ldr r3, [r5, 4]! | r3 = *((r5 += 4));
0x0006555c cmp r0, r3 |
0x0006555e bne 0x65550 |
| }
0x00065560 movs r5, 1 | r5 = 1;
0x00065562 sub.w r0, r2, 0x20 | r0 = r2 - 0x20;
0x00065566 lsl.w r1, r5, r2 | r1 = r5 << r2;
0x0006556a rsb.w r2, r2, 0x20 | r2 = 0x20 - r2;
0x0006556e lsl.w r0, r5, r0 | r0 = r5 << r0;
0x00065572 lsr.w r2, r5, r2 | r2 = r5 >> r2;
0x00065576 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00065578 orrs r2, r0 | r2 |= r0;
0x0006557a ldr r0, [sp, 0x20] | r0 = var_20h;
0x0006557c orrs r3, r2 | r3 |= r2;
0x0006557e orrs r0, r1 | r0 |= r1;
0x00065580 str r3, [sp, 0x24] | var_24h = r3;
0x00065582 str r0, [sp, 0x20] | var_20h = r0;
0x00065584 lsrs r0, r5 | r0 >>= r5;
0x00065586 lsr.w r5, r3, r5 | r5 = r3 >> r5;
0x0006558a orr.w r0, r0, r3, lsl 31 | r0 |= (r3 << 31);
0x0006558e subs r3, r1, 1 | r3 = r1 - 1;
0x00065590 str r3, [sp, 0x40] | var_40h = r3;
0x00065592 adc r3, r2, -1 | __asm ("adc r3, r2, -1");
0x00065596 cmp r0, r1 |
0x00065598 str r3, [sp, 0x44] | var_44h = r3;
0x0006559a sbcs.w r2, r5, r2 | __asm ("sbcs.w r2, r5, r2");
| if (r0 >= r1) {
0x0006559e bhs.w 0x65b1a | goto label_93;
| }
| label_3:
0x000655a2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000655a4 sub.w r1, sb, 0x2d | r1 = sb - 0x2d;
0x000655a8 uxtb r1, r1 | r1 = (int8_t) r1;
0x000655aa mov.w r2, -1 | r2 = -1;
0x000655ae strd r2, r2, [r6, 0x10] | __asm ("strd r2, r2, [r6, 0x10]");
0x000655b2 movs r2, 0 | r2 = 0;
0x000655b4 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x000655b6 cmp r1, 0xc |
0x000655b8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000655ba strh r2, [r6, 0xc] | *((r6 + 0xc)) = r2;
0x000655bc str r3, [r6, 0x2c] | *((r6 + 0x2c)) = r3;
| if (r1 > 0xc) {
0x000655be bhi.w 0x65442 | goto label_1;
| }
0x000655c2 movw r2, 0x1f31 | r2 = 0x1f31;
0x000655c6 lsrs r2, r1 | r2 >>= r1;
0x000655c8 lsls r3, r2, 0x1f | r3 = r2 << 0x1f;
| if (r3 >= r2) {
0x000655ca bpl.w 0x65442 | goto label_1;
| }
0x000655ce ldr r4, [r7, 0xc] | r4 = *((r7 + 0xc));
| if (r4 != 0) {
0x000655d0 cbnz r4, 0x655d8 | goto label_94;
| }
0x000655d2 b 0x655de | goto label_95;
| do {
0x000655d4 ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
| if (r4 == 0) {
0x000655d6 cbz r4, 0x655de | goto label_95;
| }
| label_94:
0x000655d8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000655da lsls r5, r3, 0x13 | r5 = r3 << 0x13;
0x000655dc bmi 0x655d4 |
| } while (r5 < r3);
| label_95:
0x000655de ldr r5, [r7, 0x10] | r5 = *((r7 + 0x10));
| if (r5 != 0) {
0x000655e0 cbnz r5, 0x655e8 | goto label_96;
| }
0x000655e2 b 0x655ee | goto label_97;
| do {
0x000655e4 ldr r5, [r5, 0xc] | r5 = *((r5 + 0xc));
| if (r5 == 0) {
0x000655e6 cbz r5, 0x655ee | goto label_97;
| }
| label_96:
0x000655e8 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000655ea lsls r0, r3, 0x13 | r0 = r3 << 0x13;
0x000655ec bmi 0x655e4 |
| } while (r0 < r3);
| label_97:
0x000655ee ldr r3, [sp, 0x38] | r3 = var_38h;
0x000655f0 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000655f2 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000655f4 and.w r8, r3, r8 | r8 = r3 & r8;
0x000655f8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000655fa ands r3, r2 | r3 &= r2;
0x000655fc orrs.w r8, r8, r3 | r8 |= r3;
0x00065600 add.w r8, sp, 0x78 | r8 += var_78h;
0x00065604 ite eq |
| if (r8 == r8) {
0x00065606 movweq r3, 0x1fff | __asm ("movweq r3, aav.0x000000ff");
| }
| if (r8 != r8) {
0x0006560a mov.w r3, 0x800 | r3 = 0x800;
| }
0x0006560e str r3, [sp, 0x30] | var_30h = r3;
0x00065610 ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00065612 cmp r3, 0 |
0x00065614 ittt gt |
| if (r3 <= 0) {
0x00065616 ldrgt r2, [r4, 0x14] | r2 = *((r4 + 0x14));
| }
| if (r3 <= 0) {
0x00065618 addgt r3, r2, r3, lsl 4 | r3 = r2 + (r3 << 4);
| }
| if (r3 > 0) {
0x0006561c ldr r4, [r3, -0x8] | r4 = *((r3 - 0x8));
| }
0x00065620 ldrd r2, r3, [sp, 0x38] | __asm ("ldrd r2, r3, [var_38h]");
0x00065624 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00065628 strd r4, sb, [sp, 4] | __asm ("strd r4, sb, [var_4h]");
0x0006562c bl 0x36070 | r0 = fcn_00036070 (r0, r1, r2, r3, r4, r5);
| if (r0 != 0) {
0x00065630 cbz r0, 0x6566a |
0x00065632 ldr r3, [sp, 0x78] | r3 = var_78h;
0x00065634 cmp.w sb, 0x31 |
0x00065638 str r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
0x0006563a ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0006563c str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x0006563e it eq |
| if (sb != 0x31) {
0x00065640 moveq r3, 1 | r3 = 1;
| }
| if (sb != 0x31) {
0x00065642 beq 0x65664 |
0x00065644 cmp.w sb, 0x32 |
0x00065648 it eq |
| if (sb != 0x32) {
0x0006564a moveq r3, 0x100 | r3 = 0x100;
| }
| if (sb == 0x32) {
0x0006564e beq 0x65664 | goto label_98;
| }
0x00065650 cmp.w sb, 0x2d |
0x00065654 ittte ne |
| if (sb == 0x2d) {
0x00065656 movne r3, 2 | r3 = 2;
| }
| if (sb == 0x2d) {
0x00065658 subne r2, sb, 0x35 | r2 = sb - 0x35;
| }
| if (sb != 0x2d) {
0x0006565c lsleq r3, r2 | r3 <<= r2;
| }
| if (sb == 0x2d) {
0x0006565e movs r3, 0x80 | r3 = 0x80;
| }
0x00065660 it ne |
| if (r3 == 0x80) {
0x00065662 uxthne r3, r3 | __asm ("uxthne r3, r3");
| goto label_98;
| }
| }
| label_98:
0x00065664 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00065666 ands r3, r2 | r3 &= r2;
0x00065668 strh r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
| }
0x0006566a cmp.w sb, 0x2d |
| if (sb == 0x2d) {
0x0006566e beq.w 0x65812 | goto label_99;
| }
| if (r5 != 0) {
0x00065672 cbz r5, 0x6568c |
0x00065674 ldrd r2, r3, [r6, 0x20] | __asm ("ldrd r2, r3, [r6, 0x20]");
0x00065678 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0006567a str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006567e strd r5, sb, [sp, 4] | __asm ("strd r5, sb, [var_4h]");
0x00065682 bl 0x36070 | r0 = fcn_00036070 (r0, r1, r2, r3, r4, r5);
0x00065686 cmp r0, 0 |
| if (r0 != 0) {
0x00065688 bne.w 0x65838 | goto label_100;
| }
| }
| label_7:
0x0006568c cmp.w sb, 0x32 |
| if (sb == 0x32) {
0x00065690 beq.w 0x65e2c | goto label_101;
| }
| label_6:
0x00065694 ldrb r3, [r7] | r3 = *(r7);
0x00065696 ldrb.w r2, [sl, 8] | r2 = *((sl + 8));
| label_11:
0x0006569a sub.w r1, r3, 0x2d | r1 = r3 - 0x2d;
0x0006569e and r1, r1, 0xf7 | r1 &= 0xf7;
| if (r1 == 0) {
| label_14:
0x000656a2 cbnz r1, 0x656c2 |
0x000656a4 ldr.w r8, [r7, 0xc] | r8 = *((r7 + 0xc));
0x000656a8 ldrb.w r0, [r8] | r0 = *(r8);
0x000656ac mov r1, r8 | r1 = r8;
0x000656ae cmp r0, 0xaf |
0x000656b0 it eq |
| if (r0 != 0xaf) {
0x000656b2 ldrbeq r0, [r8, 2] | r0 = *((r8 + 2));
| }
0x000656b6 cmp r0, 0xb0 |
| if (r0 == 0xb0) {
0x000656b8 beq.w 0x65b46 | goto label_102;
| }
0x000656bc cmp r0, 0x89 |
| if (r0 == 0x89) {
0x000656be beq.w 0x65912 | goto label_103;
| }
| }
| label_9:
0x000656c2 cmp r3, 0x31 |
| if (r3 != 0x31) {
0x000656c4 bne.w 0x65890 | goto label_104;
| }
0x000656c8 ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x000656ca cmp r3, 0 |
| if (r3 != 0) {
0x000656cc bne.w 0x65454 | goto label_2;
| }
0x000656d0 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x000656d2 ldrb r3, [r1] | r3 = *(r1);
0x000656d4 cmp r3, 0xb0 |
| if (r3 != 0xb0) {
0x000656d6 bne.w 0x65454 | goto label_2;
| }
0x000656da b 0x65972 | goto label_105;
| label_92:
0x000656dc strd r4, r4, [sp, 0x40] | __asm ("strd r4, r4, [var_40h]");
0x000656e0 b 0x655a2 | goto label_3;
| label_87:
0x000656e2 cmp r3, 0x2b |
| if (r3 == 0x2b) {
0x000656e4 beq.w 0x65c48 | goto label_106;
| }
0x000656e8 cmp r3, 0x33 |
| if (r3 != 0x33) {
0x000656ea bne.w 0x659f2 | goto label_107;
| }
0x000656ee ldr.w r8, [r7, 0xc] | r8 = *((r7 + 0xc));
0x000656f2 ldrb.w r2, [r8] | r2 = *(r8);
0x000656f6 cmp r2, 0xa6 |
| if (r2 == 0xa6) {
0x000656f8 beq.w 0x65b5c | goto label_108;
| }
| label_15:
0x000656fc ldrb.w r2, [sl, 8] | r2 = *((sl + 8));
0x00065700 cmp r2, 0x2c |
| if (r2 != 0x2c) {
0x00065702 bne.w 0x65454 | goto label_2;
| }
0x00065706 movs r1, 0 | r1 = 0;
| label_23:
0x00065708 ldrb.w r2, [r8] | r2 = *(r8);
0x0006570c mov r4, r8 | r4 = r8;
0x0006570e ldr r5, [r7, 0x10] | r5 = *((r7 + 0x10));
0x00065710 cmp r2, 0xa6 |
0x00065712 it ne |
| if (r2 == 0xa6) {
0x00065714 movne r2, 0 | r2 = 0;
| }
| if (r2 == 0xa6) {
0x00065716 beq.w 0x65c16 | goto label_109;
| }
| if (r5 != 0) {
| label_16:
0x0006571a cbz r5, 0x65724 |
0x0006571c ldrb r0, [r5] | r0 = *(r5);
0x0006571e cmp r0, 0xa6 |
| if (r0 == 0xa6) {
0x00065720 beq.w 0x662f6 | goto label_110;
| }
| }
| label_31:
0x00065724 cmp r3, 0x34 |
0x00065726 add.w r6, r2, -1 | r6 = r2 + -1;
| if (r3 == 0x34) {
0x0006572a beq.w 0x65c2a | goto label_111;
| }
| label_32:
0x0006572e cmp r1, 0 |
| if (r1 != 0) {
0x00065730 bne.w 0x6613a | goto label_112;
| }
0x00065734 cmp r3, 0x33 |
0x00065736 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00065738 it eq |
| if (r3 != 0x33) {
0x0006573a moveq r3, 0x46 | r3 = 0x46;
| }
0x0006573c str r3, [sp, 0x18] | var_18h = r3;
| label_17:
0x0006573e mov sb, r7 | sb = r7;
0x00065740 cmp r2, 0 |
| if (r2 == 0) {
0x00065742 beq.w 0x65454 | goto label_2;
| }
| if (r5 == 0) {
| label_8:
0x00065746 cbz r5, 0x65784 | goto label_113;
| }
| label_4:
0x00065748 mov r1, r5 | r1 = r5;
0x0006574a mov r0, fp | r0 = fp;
0x0006574c bl 0x29998 | r0 = fcn_00029998 (r0, r1);
0x00065750 mov r7, r0 | r7 = r0;
0x00065752 mov r8, r1 | r8 = r1;
0x00065754 cmp r4, 0 |
| if (r4 == 0) {
0x00065756 beq.w 0x65c30 | goto label_114;
| }
0x0006575a mov r1, r4 | r1 = r4;
0x0006575c mov r0, fp | r0 = fp;
0x0006575e bl 0x29998 | fcn_00029998 (r0, r1);
0x00065762 ands r0, r7 | r0 &= r7;
0x00065764 and.w r1, r8, r1 | r1 = r8 & r1;
0x00065768 orrs r0, r1 | r0 |= r1;
| if (r0 == r1) {
0x0006576a beq.w 0x65c30 | goto label_114;
| }
| label_5:
0x0006576e cmp r6, 1 |
0x00065770 mov r2, r4 | r2 = r4;
0x00065772 add.w r3, r6, -1 | r3 = r6 + -1;
0x00065776 mov r4, r5 | r4 = r5;
| if (r6 != 1) {
0x00065778 bne.w 0x65454 | goto label_2;
| }
0x0006577c mov r5, r2 | r5 = r2;
0x0006577e mov r6, r3 | r6 = r3;
0x00065780 cmp r5, 0 |
| if (r5 != 0) {
0x00065782 bne 0x65748 | goto label_4;
| }
| label_113:
0x00065784 cmp r4, 0 |
| if (r4 == 0) {
0x00065786 beq.w 0x65c40 | goto label_115;
| }
0x0006578a mov r1, r4 | r1 = r4;
0x0006578c mov r0, fp | r0 = fp;
0x0006578e bl 0x29998 | fcn_00029998 (r0, r1);
0x00065792 mov r7, r5 | r7 = r5;
0x00065794 mov r3, r5 | r3 = r5;
0x00065796 mov r8, r5 | r8 = r5;
| label_18:
0x00065798 movs r1, 0x2e | r1 = 0x2e;
0x0006579a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006579c movs r2, 0 | r2 = 0;
0x0006579e bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x000657a2 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x000657a6 mov r1, r0 | r1 = r0;
0x000657a8 cmp r0, 0 |
0x000657aa ite eq |
| if (r0 != 0) {
0x000657ac moveq r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x000657ae andne r3, r3, 1 | r3 &= 1;
| }
| if (r3 != 0) {
0x000657b2 cbz r3, 0x657c2 |
0x000657b4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000657b6 orr r3, r3, 1 | r3 |= 1;
0x000657ba str r3, [r0, 4] | *((r0 + 4)) = r3;
0x000657bc ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x000657c0 str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
| }
0x000657c2 movs r2, 3 | r2 = 3;
0x000657c4 mov r0, sl | r0 = sl;
0x000657c6 bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x000657ca ldr.w r2, [sl, 0x14] | r2 = *((sl + 0x14));
0x000657ce add.w r0, r0, r0, lsl 1 | r0 += (r0 << 1);
0x000657d2 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000657d4 add.w r3, r2, r0, lsl 4 | r3 = r2 + (r0 << 4);
0x000657d8 add r2, r1 | r2 += r1;
0x000657da ldr r1, [r4, 0x1c] | r1 = *((r4 + 0x1c));
0x000657dc strd r7, r8, [r3, 0x20] | __asm ("strd r7, r8, [r3, 0x20]");
0x000657e0 str r1, [r3, 0x14] | *((r3 + 0x14)) = r1;
0x000657e2 ldrsh.w r1, [r4, 0x20] | r1 = *((r4 + 0x20));
0x000657e6 str r1, [r3, 0x18] | *((r3 + 0x18)) = r1;
0x000657e8 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000657ea strb r1, [r3, 0xf] | *((r3 + 0xf)) = r1;
0x000657ec ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000657ee str r1, [r3, 0x10] | *((r3 + 0x10)) = r1;
0x000657f0 ldrsh.w r1, [r2, 8] | r1 = *((r2 + 8));
0x000657f4 strh r1, [r3, 8] | *((r3 + 8)) = r1;
0x000657f6 movs r1, 0x40 | r1 = 0x40;
0x000657f8 strh r1, [r3, 0xc] | *((r3 + 0xc)) = r1;
0x000657fa ldrh r1, [r2, 0xa] | r1 = *((r2 + 0xa));
0x000657fc orr r1, r1, 8 | r1 |= 8;
0x00065800 strh r1, [r2, 0xa] | *((r2 + 0xa)) = r1;
0x00065802 ldrb r1, [r2, 0xe] | r1 = *((r2 + 0xe));
0x00065804 adds r1, 1 | r1++;
0x00065806 strb r1, [r2, 0xe] | *((r2 + 0xe)) = r1;
0x00065808 ldrd r0, r1, [r2, 0x28] | __asm ("ldrd r0, r1, [r2, 0x28]");
0x0006580c strd r0, r1, [r3, 0x28] | __asm ("strd r0, r1, [r3, 0x28]");
0x00065810 b 0x6576e | goto label_5;
| label_99:
0x00065812 ldrh r3, [r6, 0xa] | r3 = *((r6 + 0xa));
0x00065814 orr r3, r3, 0x800 | r3 |= 0x800;
0x00065818 strh r3, [r6, 0xa] | *((r6 + 0xa)) = r3;
0x0006581a cmp r5, 0 |
| if (r5 == 0) {
0x0006581c beq.w 0x65694 | goto label_6;
| }
0x00065820 ldrd r2, r3, [r6, 0x20] | __asm ("ldrd r2, r3, [r6, 0x20]");
0x00065824 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00065826 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006582a strd r5, sb, [sp, 4] | __asm ("strd r5, sb, [var_4h]");
0x0006582e bl 0x36070 | r0 = fcn_00036070 (r0, r1, r2, r3, r4, r5);
0x00065832 cmp r0, 0 |
| if (r0 == 0) {
0x00065834 beq.w 0x65694 | goto label_6;
| }
| label_100:
0x00065838 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0006583a ands r3, r3, 8 | r3 &= 8;
| if (r3 != r3) {
0x0006583e bne.w 0x6568c | goto label_7;
| }
0x00065842 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x00065844 cmp r2, 0 |
| if (r2 < 0) {
0x00065846 blt.w 0x6600c | goto label_116;
| }
0x0006584a ldr r4, [sp, 0x34] | r4 = var_34h;
0x0006584c mov r2, r3 | r2 = r3;
0x0006584e mov r1, r7 | r1 = r7;
0x00065850 mov r0, r4 | r0 = r4;
0x00065852 bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x00065856 ldrb.w r3, [r4, 0x53] | r3 = *((r4 + 0x53));
0x0006585a mov r5, r0 | r5 = r0;
0x0006585c cmp r3, 0 |
| if (r3 == 0) {
0x0006585e beq.w 0x66142 | goto label_117;
| }
0x00065862 cmp r0, 0 |
| if (r0 == 0) {
0x00065864 beq.w 0x6546c | goto label_0;
| }
0x00065868 ldr.w r2, [pc, 0x734] |
0x0006586c ldr.w r3, [pc, 0x728] | r3 = *(0x65f98);
0x00065870 add r2, pc | r2 = 0xcb814;
0x00065872 ldr r3, [r2, r3] | r3 = *(0xcb814);
0x00065874 ldr r2, [r3] | r2 = *(0xcb814);
0x00065876 ldr r3, [sp, 0x84] | r3 = var_84h;
0x00065878 eors r2, r3 | r2 ^= r3;
0x0006587a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006587e bne.w 0x66c36 | goto label_89;
| }
0x00065882 mov r1, r0 | r1 = r0;
0x00065884 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00065886 add sp, 0x8c |
0x00065888 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006588c b.w 0x18bd0 | void (*0x18bd0)() ();
| label_104:
0x00065890 cmp r2, 0x2c |
| if (r2 != 0x2c) {
0x00065892 bne.w 0x65454 | goto label_2;
| }
0x00065896 cmp r3, 0xab |
| if (r3 != 0xab) {
0x00065898 bne.w 0x65fbe | goto label_118;
| }
0x0006589c ldr r5, [r7, 0x14] | r5 = *((r7 + 0x14));
0x0006589e cmp r5, 0 |
| if (r5 == 0) {
0x000658a0 beq.w 0x65454 | goto label_2;
| }
0x000658a4 ldr r3, [r5] | r3 = *(r5);
0x000658a6 cmp r3, 2 |
| if (r3 != 2) {
0x000658a8 bne.w 0x65454 | goto label_2;
| }
0x000658ac ldr r4, [r5, 0x18] | r4 = *((r5 + 0x18));
0x000658ae ldrb r3, [r4] | r3 = *(r4);
0x000658b0 cmp r3, 0xa6 |
| if (r3 == 0xa6) {
0x000658b2 beq.w 0x6631c | goto label_119;
| }
| label_33:
0x000658b6 ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x000658b8 ldrb r3, [r4] | r3 = *(r4);
0x000658ba cmp r3, 0xa6 |
| if (r3 != 0xa6) {
0x000658bc bne.w 0x65454 | goto label_2;
| }
0x000658c0 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x000658c2 cmp r3, 0 |
| if (r3 == 0) {
0x000658c4 beq.w 0x65454 | goto label_2;
| }
0x000658c8 ldr r2, [r3, 0x38] | r2 = *((r3 + 0x38));
0x000658ca cmp r2, 0 |
| if (r2 == 0) {
0x000658cc beq.w 0x65454 | goto label_2;
| }
0x000658d0 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x000658d2 ldr r1, [sp, 0x34] | r1 = var_34h;
| if (r3 != 0) {
0x000658d4 cbnz r3, 0x658e2 | goto label_120;
| }
0x000658d6 b.w 0x66d70 | goto label_121;
| do {
0x000658da ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000658dc cmp r3, 0 |
| if (r3 == 0) {
0x000658de beq.w 0x66d70 | goto label_121;
| }
| label_120:
0x000658e2 ldr r2, [r3] | r2 = *(r3);
0x000658e4 cmp r1, r2 |
0x000658e6 bne 0x658da |
| } while (r1 != r2);
0x000658e8 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x000658ea ldr r3, [r0] | r3 = *(r0);
0x000658ec ldr r6, [r3, 0x48] | r6 = *((r3 + 0x48));
0x000658ee cmp r6, 0 |
| if (r6 == 0) {
0x000658f0 beq.w 0x65454 | goto label_2;
| }
0x000658f4 add r3, sp, 0x70 | r3 += var_70h;
0x000658f6 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x000658f8 movs r1, 2 | r1 = 2;
0x000658fa str r3, [sp] | *(sp) = r3;
0x000658fc add r3, sp, 0x6c | r3 += var_6ch;
0x000658fe blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x00065900 cmp r0, 0x95 |
| if (r0 <= 0x95) {
0x00065902 ble.w 0x65454 | goto label_2;
| }
0x00065906 uxtb r3, r0 | r3 = (int8_t) r0;
0x00065908 ldr r5, [r5, 0x18] | r5 = *((r5 + 0x18));
0x0006590a movs r6, 0 | r6 = 0;
0x0006590c mov sb, r7 | sb = r7;
0x0006590e str r3, [sp, 0x18] | var_18h = r3;
0x00065910 b 0x65746 | goto label_8;
| label_103:
0x00065912 ldr.w r0, [r8, 0x14] | r0 = *((r8 + 0x14));
0x00065916 ldr r0, [r0, 0x1c] | r0 = *((r0 + 0x1c));
0x00065918 ldr r4, [r0] | r4 = *(r0);
| label_13:
0x0006591a cmp r4, 1 |
| if (r4 <= 1) {
0x0006591c ble.w 0x656c2 | goto label_9;
| }
0x00065920 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x00065922 ldrb r5, [r0] | r5 = *(r0);
0x00065924 cmp r5, 0xaf |
0x00065926 it eq |
| if (r5 != 0xaf) {
0x00065928 ldrbeq r5, [r0, 2] | r5 = *((r0 + 2));
| }
0x0006592a cmp r5, 0xb0 |
| if (r5 == 0xb0) {
0x0006592c beq.w 0x65eda | goto label_122;
| }
0x00065930 cmp r5, 0x89 |
| if (r5 != 0x89) {
0x00065932 bne.w 0x656c2 | goto label_9;
| }
0x00065936 ldr r5, [r0, 0x14] | r5 = *((r0 + 0x14));
0x00065938 ldr r5, [r5, 0x1c] | r5 = *((r5 + 0x1c));
0x0006593a ldr r5, [r5] | r5 = *(r5);
| label_20:
0x0006593c cmp r4, r5 |
| if (r4 != r5) {
0x0006593e bne.w 0x656c2 | goto label_9;
| }
0x00065942 ldr.w r5, [r8, 4] | r5 = *((r8 + 4));
0x00065946 lsls r5, r5, 0x14 | r5 <<= 0x14;
| if (r5 >= r5) {
0x00065948 bpl 0x65952 | goto label_123;
| }
0x0006594a ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x0006594c lsls r0, r0, 0x14 | r0 <<= 0x14;
| if (r0 < r0) {
0x0006594e bmi.w 0x656c2 | goto label_9;
| }
| label_123:
0x00065952 cmp r2, 0x2c |
| if (r2 == 0x2c) {
0x00065954 beq.w 0x660ca | goto label_124;
| }
0x00065958 cmp r3, 0x31 |
| if (r3 != 0x31) {
0x0006595a bne.w 0x65454 | goto label_2;
| }
0x0006595e ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00065960 cmp r3, 0 |
| if (r3 != 0) {
0x00065962 bne.w 0x65454 | goto label_2;
| }
0x00065966 ldrb.w r3, [r8] | r3 = *(r8);
0x0006596a mov r1, r8 | r1 = r8;
0x0006596c cmp r3, 0xb0 |
| if (r3 != 0xb0) {
0x0006596e bne.w 0x65454 | goto label_2;
| }
| label_105:
0x00065972 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00065974 ldr r0, [r3, 0x34] | r0 = *((r3 + 0x34));
0x00065976 cmp r0, 0 |
| if (r0 != 0) {
0x00065978 bne.w 0x65454 | goto label_2;
| }
0x0006597c ldr r4, [r3, 0x44] | r4 = *((r3 + 0x44));
0x0006597e cmp r4, 0 |
| if (r4 != 0) {
0x00065980 bne.w 0x65454 | goto label_2;
| }
0x00065984 cmp r2, 0x2c |
| if (r2 != 0x2c) {
0x00065986 bne.w 0x65454 | goto label_2;
| }
0x0006598a movs r3, 0xb0 | r3 = 0xb0;
| label_10:
0x0006598c cmp r3, 0xb0 |
0x0006598e itt eq |
| if (r3 != 0xb0) {
0x00065990 ldreq r3, [r1, 0x14] | r3 = *((r1 + 0x14));
| }
| if (r3 != 0xb0) {
0x00065992 ldreq r3, [r3] | r3 = *(r3);
| }
| if (r3 != 0xb0) {
0x00065994 beq 0x659a2 |
0x00065996 cmp r3, 0x89 |
0x00065998 itett eq |
| if (r3 != 0x89) {
0x0006599a ldreq r3, [r1, 0x14] | r3 = *((r1 + 0x14));
| }
| if (r3 == 0x89) {
0x0006599c movne r3, 1 | r3 = 1;
| }
| if (r3 != 0x89) {
0x0006599e ldreq r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
| }
| if (r3 == 0x89) {
0x000659a0 ldreq r3, [r3] | r3 = *(r3);
| goto label_125;
| }
| }
| label_125:
0x000659a2 cmp r4, r3 |
| if (r4 >= r3) {
0x000659a4 bge.w 0x65454 | goto label_2;
| }
0x000659a8 movs r2, 2 | r2 = 2;
0x000659aa mov r1, r7 | r1 = r7;
0x000659ac mov r0, sl | r0 = sl;
0x000659ae adds r4, 1 | r4++;
0x000659b0 bl 0x20170 | r0 = fcn_00020170 (r0, r1, r2, r3);
0x000659b4 add.w r5, r0, r0, lsl 1 | r5 = r0 + (r0 << 1);
0x000659b8 ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x000659bc mov r2, r0 | r2 = r0;
0x000659be ldr r0, [sp, 0x28] | r0 = var_28h;
0x000659c0 lsls r5, r5, 4 | r5 <<= 4;
0x000659c2 mov r1, sl | r1 = sl;
0x000659c4 add r3, r5 | r3 += r5;
0x000659c6 str r4, [r3, 0x1c] | *((r3 + 0x1c)) = r4;
0x000659c8 bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x000659cc ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x000659d0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000659d2 add r5, r3 | r5 += r3;
0x000659d4 add r3, r2 | r3 += r2;
0x000659d6 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000659d8 str r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
0x000659da ldrsh.w r2, [r3, 8] | r2 = *((r3 + 8));
0x000659de strh r2, [r5, 8] | *((r5 + 8)) = r2;
0x000659e0 ldrb r2, [r3, 0xe] | r2 = *((r3 + 0xe));
0x000659e2 adds r2, 1 | r2++;
0x000659e4 strb r2, [r3, 0xe] | *((r3 + 0xe)) = r2;
0x000659e6 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x000659e8 ldrb r3, [r1] | r3 = *(r1);
0x000659ea cmp r3, 0xaf |
| if (r3 != 0xaf) {
0x000659ec bne 0x6598c | goto label_10;
| }
0x000659ee ldrb r3, [r1, 2] | r3 = *((r1 + 2));
0x000659f0 b 0x6598c | goto label_10;
| label_107:
0x000659f2 cmp r3, 0xab |
| if (r3 != 0xab) {
0x000659f4 bne.w 0x65b4e | goto label_126;
| }
0x000659f8 ldrb.w r2, [sl, 8] | r2 = *((sl + 8));
0x000659fc cmp r2, 0x2c |
| if (r2 != 0x2c) {
0x000659fe bne.w 0x65454 | goto label_2;
| }
0x00065a02 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00065a04 ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x00065a06 ldr r0, [r0] | r0 = *(r0);
0x00065a08 str r0, [sp, 0x3c] | var_3ch = r0;
0x00065a0a cmp r1, 0 |
| if (r1 == 0) {
0x00065a0c beq.w 0x6569a | goto label_11;
| }
0x00065a10 ldr r5, [r1] | r5 = *(r1);
0x00065a12 movs r4, 0 | r4 = 0;
0x00065a14 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00065a16 movs r3, 1 | r3 = 1;
0x00065a18 str r4, [sp] | *(sp) = r4;
0x00065a1a mov r2, r5 | r2 = r5;
0x00065a1c bl 0x2a3a0 | r0 = fcn_0002a3a0 (r0, r1, r2, r3, r4, r5);
0x00065a20 cmp r0, 0 |
| if (r0 == 0) {
0x00065a22 beq.w 0x65694 | goto label_6;
| }
0x00065a26 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00065a28 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
0x00065a2a str r3, [sp, 0x54] | var_54h = r3;
| if (r1 >= r3) {
0x00065a2c bpl.w 0x65694 | goto label_6;
| }
0x00065a30 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x00065a32 cmp r5, 2 |
0x00065a34 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00065a36 ldrh r1, [r2] | r1 = *(r2);
0x00065a38 ldrb r2, [r2, 2] | r2 = *((r2 + 2));
0x00065a3a strh.w r1, [sp, 0x80] | var_80h = r1;
0x00065a3e strb.w r2, [sp, 0x82] | var_82h = r2;
| if (r5 <= 2) {
0x00065a42 ble.w 0x66b66 | goto label_127;
| }
0x00065a46 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x00065a48 ldrb r1, [r2] | r1 = *(r2);
0x00065a4a cmp r1, 0x74 |
| if (r1 != 0x74) {
0x00065a4c bne.w 0x65694 | goto label_6;
| }
0x00065a50 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00065a52 ldrb r1, [r2] | r1 = *(r2);
0x00065a54 str r1, [sp, 0x24] | var_24h = r1;
0x00065a56 cmp r1, 0 |
| if (r1 == 0) {
0x00065a58 beq.w 0x65694 | goto label_6;
| }
0x00065a5c ldrb r2, [r2, 1] | r2 = *((r2 + 1));
0x00065a5e cmp r2, 0 |
| if (r2 != 0) {
0x00065a60 bne.w 0x65694 | goto label_6;
| }
0x00065a64 ldrb.w r2, [sp, 0x80] | r2 = var_80h;
0x00065a68 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00065a6a cmp r2, r1 |
| if (r2 == r1) {
0x00065a6c beq.w 0x65694 | goto label_6;
| }
0x00065a70 ldrb.w r2, [sp, 0x81] | r2 = var_81h;
0x00065a74 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00065a76 cmp r2, r1 |
| if (r2 == r1) {
0x00065a78 beq.w 0x65694 | goto label_6;
| }
| label_61:
0x00065a7c ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x00065a7e ldr r2, [sp, 0x24] | r2 = var_24h;
0x00065a80 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00065a82 strb.w r2, [sp, 0x83] | var_83h = r2;
0x00065a86 str r3, [sp, 0x48] | var_48h = r3;
| if (r4 != 0) {
0x00065a88 cbnz r4, 0x65a96 | goto label_128;
| }
0x00065a8a b.w 0x66d6a | goto label_129;
| do {
0x00065a8e ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
0x00065a90 cmp r4, 0 |
| if (r4 == 0) {
0x00065a92 beq.w 0x66d6a | goto label_129;
| }
| label_128:
0x00065a96 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00065a98 ands r3, r3, 0x1000 | r3 &= 0x1000;
0x00065a9c bne 0x65a8e |
| } while (r3 != r3);
0x00065a9e mov r5, r3 | r5 = r3;
0x00065aa0 ldrb r3, [r4] | r3 = *(r4);
0x00065aa2 cmp r3, 0x9b |
0x00065aa4 str r3, [sp, 0x4c] | var_4ch = r3;
| if (r3 == 0x9b) {
0x00065aa6 beq.w 0x668d6 | goto label_130;
| }
0x00065aaa ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00065aac cmp r3, 0x74 |
| if (r3 != 0x74) {
0x00065aae bne.w 0x65694 | goto label_6;
| }
0x00065ab2 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00065ab4 cmp r0, 0 |
| if (r0 == 0) {
0x00065ab6 beq.w 0x65694 | goto label_6;
| }
0x00065aba ldrb.w sb, [r0] | sb = *(r0);
0x00065abe cmp.w sb, 0 |
| if (sb == 0) {
0x00065ac2 beq.w 0x65694 | goto label_6;
| }
0x00065ac6 str r5, [sp, 0x20] | var_20h = r5;
| label_55:
0x00065ac8 str r4, [sp, 0x30] | var_30h = r4;
0x00065aca mov r3, sb | r3 = sb;
0x00065acc ldrb.w r1, [sp, 0x80] | r1 = var_80h;
0x00065ad0 mov.w r8, 0 | r8 = 0;
0x00065ad4 ldrb.w lr, [sp, 0x81] | lr = var_81h;
0x00065ad8 ldrb.w ip, [sp, 0x82] | ip = var_82h;
0x00065adc ldr r4, [sp, 0x24] | r4 = var_24h;
0x00065ade b 0x65aec |
| while (r4 != r3) {
| label_12:
0x00065ae0 ldrb.w r3, [r0, r8] | r3 = *((r0 + r8));
0x00065ae4 mov r5, r8 | r5 = r8;
0x00065ae6 cmp r3, 0 |
| if (r3 == 0) {
0x00065ae8 beq.w 0x66d12 | goto label_131;
| }
0x00065aec cmp r1, r3 |
| if (r1 == r3) {
0x00065aee beq.w 0x66b5a | goto label_132;
| }
0x00065af2 cmp lr, r3 |
| if (lr == r3) {
0x00065af4 beq.w 0x66b5a | goto label_132;
| }
0x00065af8 cmp ip, r3 |
| if (ip == r3) {
0x00065afa beq.w 0x66b5a | goto label_132;
| }
0x00065afe cmp r4, r3 |
0x00065b00 add.w r2, r8, 1 | r2 = r8 + 1;
0x00065b04 it ne |
| if (r4 == r3) {
0x00065b06 movne r8, r2 | r8 = r2;
| }
0x00065b08 bne 0x65ae0 |
| }
0x00065b0a ldrb r3, [r0, r2] | r3 = *((r0 + r2));
0x00065b0c mov r5, r2 | r5 = r2;
0x00065b0e cmp r3, 0 |
| if (r3 == 0) {
0x00065b10 beq.w 0x66808 | goto label_133;
| }
0x00065b14 add.w r8, r8, 2 | r8 += 2;
0x00065b18 b 0x65ae0 | goto label_12;
| label_93:
0x00065b1a ldr.w r2, [pc, 0x488] | r2 = *(0x00065fa4);
0x00065b1e ldr.w r3, [pc, 0x478] | r3 = *(0x65f9a);
0x00065b22 add r2, pc | r2 += pc;
0x00065b24 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00065b26 ldr r2, [r3] | r2 = *(0x65f9a);
0x00065b28 ldr r3, [sp, 0x84] | r3 = var_84h;
0x00065b2a eors r2, r3 | r2 ^= r3;
0x00065b2c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00065b30 bne.w 0x66c36 | goto label_89;
| }
0x00065b34 ldr.w r1, [pc, 0x470] | r1 = *(0x00065fa8);
0x00065b38 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00065b3a add r1, pc | r1 += pc;
0x00065b3c add sp, 0x8c |
0x00065b3e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00065b42 b.w 0x25778 | void (*0x25778)() ();
| label_102:
0x00065b46 ldr.w r0, [r8, 0x14] | r0 = *((r8 + 0x14));
0x00065b4a ldr r4, [r0] | r4 = *(r0);
0x00065b4c b 0x6591a | goto label_13;
| label_126:
0x00065b4e sub.w r1, r3, 0x2d | r1 = r3 - 0x2d;
0x00065b52 ldrb.w r2, [sl, 8] | r2 = *((sl + 8));
0x00065b56 and r1, r1, 0xf7 | r1 &= 0xf7;
0x00065b5a b 0x656a2 | goto label_14;
| label_108:
0x00065b5c ldrh.w r2, [r8, 0x20] | r2 = *((r8 + 0x20));
0x00065b60 eor r4, r4, 1 | r4 ^= 1;
0x00065b64 mvns r2, r2 | r2 = ~r2;
0x00065b66 ands.w r4, r4, r2, lsr 15 | r4 &= (r2 >> 15);
| if (r4 == r4) {
0x00065b6a beq.w 0x656fc | goto label_15;
| }
0x00065b6e ldr r5, [sp, 0x34] | r5 = var_34h;
0x00065b70 movs r3, 0 | r3 = 0;
0x00065b72 mov r2, r3 | r2 = r3;
0x00065b74 mov r1, r8 | r1 = r8;
0x00065b76 mov r0, r5 | r0 = r5;
0x00065b78 bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x00065b7c movs r2, 0x34 | r2 = 0x34;
0x00065b7e mov r4, r0 | r4 = r0;
0x00065b80 movs r3, 0 | r3 = 0;
0x00065b82 mov r0, r5 | r0 = r5;
0x00065b84 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00065b88 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00065b8a cbz r0, 0x65ba2 |
0x00065b8c movs r2, 0x34 | r2 = 0x34;
0x00065b8e movs r1, 0 | r1 = 0;
0x00065b90 blx 0x8264 | fcn_00008264 ();
0x00065b94 movs r3, 0x78 | r3 = 0x78;
0x00065b96 strb r3, [r5] | *(r5) = r3;
0x00065b98 movw r3, 0xffff | r3 = 0xffff;
0x00065b9c strh r3, [r5, 0x22] | *((r5 + 0x22)) = r3;
0x00065b9e movs r3, 1 | r3 = 1;
0x00065ba0 str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
| }
0x00065ba2 mov r2, r4 | r2 = r4;
0x00065ba4 movs r1, 0x36 | r1 = 0x36;
0x00065ba6 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00065ba8 mov r3, r5 | r3 = r5;
0x00065baa bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00065bae movs r2, 0x83 | r2 = 0x83;
0x00065bb0 mov r1, r0 | r1 = r0;
0x00065bb2 mov r0, sl | r0 = sl;
0x00065bb4 bl 0x20170 | r0 = fcn_00020170 (r0, r1, r2, r3);
0x00065bb8 cmp r0, 0 |
| if (r0 == 0) {
0x00065bba beq.w 0x65694 | goto label_6;
| }
0x00065bbe ldr.w r6, [sl, 0x14] | r6 = *((sl + 0x14));
0x00065bc2 add.w r3, r0, r0, lsl 1 | r3 = r0 + (r0 << 1);
0x00065bc6 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00065bc8 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00065bcc add.w r3, r6, r3, lsl 4 | r3 = r6 + (r3 << 4);
0x00065bd0 add r6, r2 | r6 += r2;
0x00065bd2 ldr.w r2, [r8, 0x1c] | r2 = *((r8 + 0x1c));
0x00065bd6 vstr d16, [r3, 0x20] | __asm ("vstr d16, [r3, 0x20]");
0x00065bda ldrd r0, r1, [r6, 0x28] | __asm ("ldrd r0, r1, [r6, 0x28]");
0x00065bde str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x00065be0 ldrsh.w r2, [r8, 0x20] | r2 = *((r8 + 0x20));
0x00065be4 str r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
0x00065be6 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00065be8 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x00065bea ldrsh.w r2, [r6, 8] | r2 = *((r6 + 8));
0x00065bee strh r2, [r3, 8] | *((r3 + 8)) = r2;
0x00065bf0 movs r2, 4 | r2 = 4;
0x00065bf2 strh r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00065bf4 ldrh r2, [r6, 0xa] | r2 = *((r6 + 0xa));
0x00065bf6 orr r2, r2, 8 | r2 |= 8;
0x00065bfa strh r2, [r6, 0xa] | *((r6 + 0xa)) = r2;
0x00065bfc ldrb r2, [r6, 0xe] | r2 = *((r6 + 0xe));
0x00065bfe adds r2, 1 | r2++;
0x00065c00 strb r2, [r6, 0xe] | *((r6 + 0xe)) = r2;
0x00065c02 strd r0, r1, [r3, 0x28] | __asm ("strd r0, r1, [r3, 0x28]");
0x00065c06 ldrb r3, [r7] | r3 = *(r7);
0x00065c08 ldrb.w r2, [sl, 8] | r2 = *((sl + 8));
0x00065c0c sub.w r1, r3, 0x2d | r1 = r3 - 0x2d;
0x00065c10 and r1, r1, 0xf7 | r1 &= 0xf7;
0x00065c14 b 0x656a2 | goto label_14;
| label_109:
0x00065c16 ldr.w r2, [r8, 0x2c] | r2 = *((r8 + 0x2c));
0x00065c1a cmp r2, 0 |
| if (r2 == 0) {
0x00065c1c beq.w 0x6571a | goto label_16;
| }
0x00065c20 ldr r2, [r2, 0x38] | r2 = *((r2 + 0x38));
0x00065c22 subs r2, 0 |
0x00065c24 it ne |
| if (r2 == 0) {
0x00065c26 movne r2, 1 | r2 = 1;
| }
0x00065c28 b 0x6571a | goto label_16;
| label_111:
0x00065c2a movs r3, 0x44 | r3 = 0x44;
0x00065c2c str r3, [sp, 0x18] | var_18h = r3;
0x00065c2e b 0x6573e | goto label_17;
| label_114:
0x00065c30 movs r3, 0 | r3 = 0;
0x00065c32 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00065c34 mov r2, r3 | r2 = r3;
0x00065c36 mov r1, r5 | r1 = r5;
0x00065c38 bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x00065c3c mov r3, r0 | r3 = r0;
0x00065c3e b 0x65798 | goto label_18;
| label_115:
0x00065c40 mov r3, r4 | r3 = r4;
0x00065c42 mov r7, r4 | r7 = r4;
0x00065c44 mov r8, r4 | r8 = r4;
0x00065c46 b 0x65798 | goto label_18;
| label_106:
0x00065c48 ldr.w r3, [sl] | r3 = *(sl);
0x00065c4c ldr r1, [sp, 0x14] | r1 = var_14h;
0x00065c4e mov r2, r3 | r2 = r3;
0x00065c50 str r3, [sp, 0x3c] | var_3ch = r3;
0x00065c52 ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x00065c56 ldr r2, [r2] | r2 = *(r2);
0x00065c58 ldr r0, [r3, r1] | r0 = *((r3 + r1));
0x00065c5a add r3, r1 | r3 += r1;
0x00065c5c str r2, [sp, 0x50] | var_50h = r2;
0x00065c5e str r3, [sp, 0x38] | var_38h = r3;
0x00065c60 str r0, [sp, 0x4c] | var_4ch = r0;
0x00065c62 ldr r0, [r2] | r0 = *(r2);
0x00065c64 str r0, [sp, 0x30] | var_30h = r0;
0x00065c66 cmp r0, 0 |
| if (r0 == 0) {
0x00065c68 beq.w 0x65fb0 | goto label_134;
| }
0x00065c6c mov.w r2, 0x1a0 | r2 = 0x1a0;
0x00065c70 movs r3, 0 | r3 = 0;
0x00065c72 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00065c76 mov sb, r0 | sb = r0;
| label_22:
0x00065c78 cmp.w sb, 0 |
| if (sb == 0) {
0x00065c7c beq.w 0x66004 | goto label_135;
| }
0x00065c80 mov.w r2, 0x1a0 | r2 = 0x1a0;
0x00065c84 movs r1, 0 | r1 = 0;
0x00065c86 mov r0, sb | r0 = sb;
0x00065c88 blx 0x8264 | fcn_00008264 ();
0x00065c8c ldr r2, [sp, 0x38] | r2 = var_38h;
0x00065c8e movs r1, 0 | r1 = 0;
0x00065c90 ldrh r3, [r2, 0xa] | r3 = *((r2 + 0xa));
0x00065c92 str.w sb, [r2, 0x18] | __asm ("str.w sb, [r2, 0x18]");
0x00065c96 orr r3, r3, 0x10 | r3 |= 0x10;
0x00065c9a strh r3, [r2, 0xa] | *((r2 + 0xa)) = r3;
0x00065c9c add.w r3, sb, 0x18 | r3 = sb + 0x18;
0x00065ca0 mov.w r2, 0x180 | r2 = 0x180;
0x00065ca4 mov r0, r3 | r0 = r3;
0x00065ca6 blx 0x8264 | fcn_00008264 ();
0x00065caa ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00065cac movs r2, 0x2b | r2 = 0x2b;
0x00065cae str.w r0, [sb, 0x14] | __asm ("str.w r0, [sb, 0x14]");
0x00065cb2 mov r0, sb | r0 = sb;
0x00065cb4 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x00065cb6 str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x00065cba movs r3, 0 | r3 = 0;
0x00065cbc strb.w r3, [sb, 9] | *((sb + 9)) = r3;
0x00065cc0 str.w r3, [sb, 4] | __asm ("str.w r3, [sb, 4]");
0x00065cc4 str.w r3, [sb, 0xc] | __asm ("str.w r3, [sb, 0xc]");
0x00065cc8 movs r3, 8 | r3 = 8;
0x00065cca str.w r3, [sb, 0x10] | __asm ("str.w r3, [sb, 0x10]");
0x00065cce bl 0x2032c | fcn_0002032c (r0, r1, r2);
0x00065cd2 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x00065cd6 subs r5, r3, 1 | r5 = r3 - 1;
0x00065cd8 cmp r5, 0 |
0x00065cda mov r6, r5 | r6 = r5;
| if (r5 < 0) {
0x00065cdc blt.w 0x66630 | goto label_136;
| }
0x00065ce0 ldr r4, [sp, 0x28] | r4 = var_28h;
| do {
0x00065ce2 mov r2, r6 | r2 = r6;
0x00065ce4 mov r1, sb | r1 = sb;
0x00065ce6 subs r6, 1 | r6--;
0x00065ce8 mov r0, r4 | r0 = r4;
0x00065cea bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x00065cee adds r2, r6, 1 | r2 = r6 + 1;
0x00065cf0 bne 0x65ce2 |
| } while (r2 != r6);
0x00065cf2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00065cf4 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00065cf8 cmp r3, 0 |
| if (r3 != 0) {
0x00065cfa bne.w 0x65e14 | goto label_25;
| }
0x00065cfe ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x00065d02 ldr.w r4, [sb, 0x14] | r4 = *((sb + 0x14));
0x00065d06 subs r1, r3, 1 | r1 = r3 - 1;
0x00065d08 cmp r1, 0 |
0x00065d0a mov r5, r1 | r5 = r1;
| if (r1 < 0) {
0x00065d0c blt.w 0x6663c | goto label_137;
| }
0x00065d10 mov r3, r6 | r3 = r6;
0x00065d12 strd fp, r7, [sp, 0x58] | __asm ("strd fp, r7, [var_58h]");
0x00065d16 str r6, [sp, 0x24] | var_24h = r6;
0x00065d18 adds r4, 0x30 | r4 += 0x30;
0x00065d1a str r6, [sp, 0x20] | var_20h = r6;
0x00065d1c mov fp, r3 |
0x00065d1e str.w sl, [sp, 0x48] | __asm ("str.w sl, [var_48h]");
0x00065d22 mov r6, r1 | r6 = r1;
0x00065d24 ldr r7, [sp, 0x28] | r7 = var_28h;
0x00065d26 mov sl, r3 | sl = r3;
0x00065d28 str.w sb, [sp, 0x54] | __asm ("str.w sb, [var_54h]");
0x00065d2c b 0x65d50 |
| while (r8 != 0) {
0x00065d2e ldrh r8, [r4, -0x26] | r8 = *((r4 - 0x26));
0x00065d32 ands r3, r8, 8 | r3 = r8 & 8;
| if (r3 == r8) {
0x00065d36 beq.w 0x65e58 | goto label_138;
| }
0x00065d3a ldr r3, [sp, 0x20] | r3 = var_20h;
0x00065d3c and r5, r5, 1 | r5 &= 1;
0x00065d40 orrs.w r3, sl, r3 | r3 = sl | r3;
0x00065d44 it eq |
| if (r3 != sl) {
0x00065d46 moveq r5, 0 | r5 = 0;
| }
| label_19:
0x00065d48 adds r4, 0x30 | r4 += 0x30;
0x00065d4a cmp r5, 0 |
| if (r5 == 0) {
0x00065d4c beq.w 0x66c4c | goto label_139;
| }
0x00065d50 ldrh r0, [r4, -0x24] | r0 = *((r4 - 0x24));
0x00065d54 subs r6, 1 | r6--;
0x00065d56 mvns r5, r6 | r5 = ~r6;
0x00065d58 lsrs r5, r5, 0x1f | r5 >>= 0x1f;
0x00065d5a ubfx r8, r0, 0, 9 | r8 = (r0 >> 0) & ((1 << 9) - 1);
0x00065d5e cmp.w r8, 0 |
0x00065d62 bne 0x65d2e |
| }
0x00065d64 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00065d66 mov.w r2, 0x198 | r2 = 0x198;
0x00065d6a movs r3, 0 | r3 = 0;
0x00065d6c bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00065d70 mov fp, r0 |
0x00065d72 cmp r0, 0 |
| if (r0 == 0) {
0x00065d74 beq.w 0x65f80 | goto label_140;
| }
0x00065d78 ldrh r3, [r4, -0x26] | r3 = *((r4 - 0x26));
0x00065d7c mov.w r2, 0x400 | r2 = 0x400;
0x00065d80 mov r1, r8 | r1 = r8;
0x00065d82 str r0, [r4, -0x18] | *((r4 - 0x18)) = r0;
0x00065d86 strh r2, [r4, -0x24] | *((r4 - 0x24)) = r2;
0x00065d8a mov.w r2, 0x180 | r2 = 0x180;
0x00065d8e orr r3, r3, 0x20 | r3 |= 0x20;
0x00065d92 strh r3, [r4, -0x26] | *((r4 - 0x26)) = r3;
0x00065d96 add.w r3, r0, 0x18 | r3 = r0 + 0x18;
0x00065d9a mov r0, r3 | r0 = r3;
0x00065d9c blx 0x8264 | fcn_00008264 ();
0x00065da0 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00065da2 movs r3, 8 | r3 = 8;
0x00065da4 ldr r2, [r2] | r2 = *(r2);
0x00065da6 strb.w r8, [fp, 9] | *(arg_9h) = r8;
0x00065daa str.w r0, [fp, 0x14] | __asm ("str.w r0, [arg_14h]");
0x00065dae mov r0, fp | r0 = fp;
0x00065db0 str.w r2, [fp] | __asm ("str.w r2, [fp]");
0x00065db4 movs r2, 0x2c | r2 = 0x2c;
0x00065db6 str.w r8, [fp, 4] | __asm ("str.w r8, [arg_4h]");
0x00065dba str.w r8, [fp, 0xc] | __asm ("str.w r8, [arg_ch]");
0x00065dbe str.w r3, [fp, 0x10] | __asm ("str.w r3, [arg_10h]");
0x00065dc2 ldr r1, [r4, -0x30] | r1 = *((r4 - 0x30));
0x00065dc6 bl 0x2032c | fcn_0002032c (r0, r1, r2);
0x00065dca ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x00065dce subs.w r8, r3, 1 | r8 = r3 - 1;
0x00065dd0 lsrs r1, r0, 0x20 | r1 = r0 >> 0x20;
| if (r1 < r0) {
0x00065dd2 bmi 0x65de8 | goto label_141;
| }
| do {
0x00065dd4 mov r2, r8 | r2 = r8;
0x00065dd6 mov r1, fp | r1 = fp;
0x00065dd8 add.w r8, r8, -1 | r8 += -1;
0x00065ddc mov r0, r7 | r0 = r7;
0x00065dde bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x00065de2 cmp.w r8, -1 |
0x00065de6 bne 0x65dd4 |
| } while (r8 != -1);
| label_141:
0x00065de8 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00065dea ldr r3, [sp, 0x30] | r3 = var_30h;
0x00065dec str.w r2, [fp, 4] | __asm ("str.w r2, [arg_4h]");
0x00065df0 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00065df4 cmp r3, 0 |
| if (r3 == 0) {
0x00065df6 beq.w 0x6623e | goto label_142;
| }
0x00065dfa ldrd fp, r7, [sp, 0x58] | __asm ("ldrd fp, r7, [var_58h]");
0x00065dfe mov sl, r2 | sl = r2;
0x00065e00 ldr.w sb, [sp, 0x54] | sb = var_54h;
| label_62:
0x00065e04 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00065e06 mov.w r3, 0x200 | r3 = 0x200;
0x00065e0a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00065e0e vstr d16, [sb, 0x198] | __asm ("vstr d16, aav.0x000000ff");
0x00065e12 strh r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
| label_25:
0x00065e14 ldrb r3, [r7] | r3 = *(r7);
0x00065e16 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00065e18 ldr.w r6, [sl, 0x14] | r6 = *((sl + 0x14));
0x00065e1c sub.w r1, r3, 0x2d | r1 = r3 - 0x2d;
0x00065e20 and r1, r1, 0xf7 | r1 &= 0xf7;
0x00065e24 add r6, r2 | r6 += r2;
0x00065e26 ldrb.w r2, [sl, 8] | r2 = *((sl + 8));
0x00065e2a b 0x656a2 | goto label_14;
| label_101:
0x00065e2c mov r0, r4 | r0 = r4;
0x00065e2e bl 0x9c80 | r0 = fcn_00009c80 (r0);
0x00065e32 cmp r0, 0 |
| if (r0 != 0) {
0x00065e34 bne.w 0x65694 | goto label_6;
| }
0x00065e38 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00065e3a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00065e3e orr r3, r3, 0x20000000 | r3 |= 0x20000000;
0x00065e42 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x00065e44 ldr r3, [pc, 0x164] |
0x00065e46 add r3, pc | r3 = 0xcbdf6;
0x00065e48 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x00065e4a movs r3, 0xa9 | r3 = 0xa9;
0x00065e4c strb r3, [r7] | *(r7) = r3;
0x00065e4e strh r0, [r6, 0xc] | *((r6 + 0xc)) = r0;
0x00065e50 vstr d16, [r6, 0x28] | __asm ("vstr d16, [r6, 0x28]");
0x00065e54 b.w 0x65454 | goto label_2;
| label_138:
0x00065e58 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00065e5a and r8, r8, 2 | r8 &= 2;
0x00065e5e ldr sb, [r4, -0x1c] | sb = *((r4 - 0x1c));
0x00065e62 ldr.w ip, [r2, 0x1ec] | ip = *((r2 + 0x1ec));
0x00065e66 cmp.w ip, 0 |
| if (ip <= 0) {
0x00065e6a ble.w 0x66ace | goto label_143;
| }
0x00065e6e add.w lr, r2, 0x1ec | lr = r2 + 0x1ec;
0x00065e72 mov r2, lr | r2 = lr;
0x00065e74 b 0x65e7e |
| while (sb != r1) {
0x00065e76 adds r3, 1 | r3++;
0x00065e78 cmp r3, ip |
| if (r3 == ip) {
0x00065e7a beq.w 0x65fe4 | goto label_144;
| }
0x00065e7e ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x00065e82 cmp sb, r1 |
0x00065e84 bne 0x65e76 |
| }
0x00065e86 mov.w sb, 1 | sb = 1;
0x00065e8a sub.w r1, r3, 0x20 | r1 = r3 - 0x20;
0x00065e8e rsb.w r2, r3, 0x20 | r2 = 0x20 - r3;
0x00065e92 lsl.w r1, sb, r1 | r1 = sb << r1;
0x00065e96 lsr.w r2, sb, r2 | r2 = sb >> r2;
0x00065e9a lsl.w r3, sb, r3 | r3 = sb << r3;
0x00065e9c ssat r3, 0x12, r3, lsl 0x10 | __asm ("ssat r3, 0x12, r3, lsl 0x10");
0x00065ea0 cmp.w r8, 0 |
| if (r8 != 0) {
0x00065ea4 bne.w 0x665c4 | goto label_145;
| }
| label_41:
0x00065ea8 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00065eaa and.w sl, sl, r3 | sl &= r3;
0x00065eae and r5, r5, 1 | r5 &= 1;
0x00065eb2 ands r2, r1 | r2 &= r1;
0x00065eb4 str r2, [sp, 0x20] | var_20h = r2;
0x00065eb6 orrs.w r2, sl, r2 | r2 = sl | r2;
0x00065eba it eq |
| if (r2 != sl) {
0x00065ebc moveq r5, 0 | r5 = 0;
| }
0x00065ebe ands r0, r0, 2 | r0 &= 2;
0x00065ec0 movs r2, r0 | r2 = r0;
0x00065ec2 itt eq |
| if (r2 != r0) {
0x00065ec4 moveq fp, r0 |
| }
| if (r2 == r0) {
0x00065ec6 streq fp, [sp, 0x24] | var_24h = fp;
| goto label_146;
| }
| if (r2 == r0) {
| label_146:
0x00065eca beq.w 0x65d48 | goto label_19;
| }
| label_24:
0x00065ece and.w fp, fp, r3 |
0x00065ed2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00065ed4 ands r3, r1 | r3 &= r1;
0x00065ed6 str r3, [sp, 0x24] | var_24h = r3;
0x00065ed8 b 0x65d48 | goto label_19;
| label_122:
0x00065eda ldr r5, [r0, 0x14] | r5 = *((r0 + 0x14));
0x00065edc ldr r5, [r5] | r5 = *(r5);
0x00065ede b 0x6593c | goto label_20;
| label_88:
0x00065ee0 ldr r4, [r7, 0x14] | r4 = *((r7 + 0x14));
0x00065ee2 movs r5, 0x39 | r5 = 0x39;
0x00065ee4 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x00065ee8 add.w r8, r4, 0x20 | r8 = r4 + 0x20;
| do {
0x00065eec ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
| if (r6 != 0) {
0x00065eee cbz r6, 0x65efe |
0x00065ef0 movs r3, 0 | r3 = 0;
0x00065ef2 mov r1, r6 | r1 = r6;
0x00065ef4 mov r2, r3 | r2 = r3;
0x00065ef6 mov r0, sb | r0 = sb;
0x00065ef8 bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x00065efc mov r6, r0 | r6 = r0;
| }
0x00065efe ldr r3, [r4, 8] | r3 = *((r4 + 8));
| if (r3 != 0) {
0x00065f00 cbz r3, 0x65f10 |
0x00065f02 mov r1, r3 | r1 = r3;
0x00065f04 movs r3, 0 | r3 = 0;
0x00065f06 mov r2, r3 | r2 = r3;
0x00065f08 mov r0, sb | r0 = sb;
0x00065f0a bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x00065f0e mov r3, r0 | r3 = r0;
| }
0x00065f10 mov r1, r5 | r1 = r5;
0x00065f12 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00065f14 mov r2, r6 | r2 = r6;
0x00065f16 bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x00065f1a mov r1, r0 | r1 = r0;
| if (r0 != 0) {
0x00065f1c cbz r0, 0x65f2e |
0x00065f1e ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00065f20 and r2, r3, 1 | r2 = r3 & 1;
0x00065f24 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00065f26 orrs r3, r2 | r3 |= r2;
0x00065f28 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00065f2a ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x00065f2c str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
| }
0x00065f2e movs r2, 3 | r2 = 3;
0x00065f30 mov r0, sl | r0 = sl;
0x00065f32 bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x00065f36 mov r1, sl | r1 = sl;
0x00065f38 mov r5, r0 | r5 = r0;
0x00065f3a mov r2, r0 | r2 = r0;
0x00065f3c ldr r0, [sp, 0x28] | r0 = var_28h;
0x00065f3e bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x00065f42 ldr.w r6, [sl, 0x14] | r6 = *((sl + 0x14));
0x00065f46 add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x00065f4a ldr r3, [sp, 0x14] | r3 = var_14h;
0x00065f4c adds r4, 0x10 | r4 += 0x10;
0x00065f4e cmp r8, r4 |
0x00065f50 add.w r5, r6, r5, lsl 4 | r5 = r6 + (r5 << 4);
0x00065f54 add r6, r3 | r6 += r3;
0x00065f56 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00065f58 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x00065f5a ldrsh.w r3, [r6, 8] | r3 = *((r6 + 8));
0x00065f5e strh r3, [r5, 8] | *((r5 + 8)) = r3;
0x00065f60 mov.w r5, 0x37 | r5 = 0x37;
0x00065f64 ldrb r3, [r6, 0xe] | r3 = *((r6 + 0xe));
0x00065f66 add.w r3, r3, 1 | r3++;
0x00065f6a strb r3, [r6, 0xe] | *((r6 + 0xe)) = r3;
0x00065f6c bne 0x65eec |
| } while (r8 != r4);
0x00065f6e b.w 0x65694 | goto label_6;
| label_90:
0x00065f72 mov r0, fp | r0 = fp;
0x00065f74 bl 0x29b70 | r0 = fcn_00029b70 (r0, r1, r2);
0x00065f78 mov r8, r0 | r8 = r0;
0x00065f7a str r1, [sp, 0x30] | var_30h = r1;
0x00065f7c b.w 0x6550c | goto label_21;
| label_140:
0x00065f80 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00065f82 and r5, r5, 1 | r5 &= 1;
0x00065f86 str r0, [sp, 0x24] | var_24h = r0;
0x00065f88 orrs.w r3, sl, r3 | r3 = sl | r3;
0x00065f8c it eq |
| if (r3 != sl) {
0x00065f8e moveq r5, 0 | r5 = 0;
| }
0x00065f90 b 0x65d48 | goto label_19;
| label_134:
0x00065fb0 mov.w r0, 0x1a0 | r0 = 0x1a0;
0x00065fb4 movs r1, 0 | r1 = 0;
0x00065fb6 bl 0x12abc | r0 = fcn_00012abc (r0);
0x00065fba mov sb, r0 | sb = r0;
0x00065fbc b 0x65c78 | goto label_22;
| label_118:
0x00065fbe sub.w r1, r3, 0xaa | r1 = r3 - 0xaa;
0x00065fc2 sub.w r0, r3, 0x33 | r0 = r3 - 0x33;
0x00065fc6 clz r1, r1 | r1 &= r1;
0x00065fca lsrs r1, r1, 5 | r1 >>= 5;
0x00065fcc cmp r0, 1 |
0x00065fce ite hi |
| if (r0 <= 1) {
0x00065fd0 movhi r2, r1 | r2 = r1;
| }
| if (r0 > 1) {
0x00065fd2 orrls r2, r1, 1 | r2 = r1 | 1;
| }
0x00065fd6 cmp r2, 0 |
| if (r2 == 0) {
0x00065fd8 beq.w 0x65454 | goto label_2;
| }
0x00065fdc ldr.w r8, [r7, 0xc] | r8 = *((r7 + 0xc));
0x00065fe0 b.w 0x65708 | goto label_23;
| label_144:
0x00065fe4 cmp.w r8, 0 |
| if (r8 != 0) {
0x00065fe8 bne.w 0x66616 | goto label_147;
| }
| label_57:
0x00065fec ands r0, r0, 2 | r0 &= 2;
| if (r0 == r0) {
0x00065ff0 beq.w 0x6639e | goto label_148;
| }
0x00065ff4 mov.w sl, 0 | sl = 0;
0x00065ff8 mov r5, sl | r5 = sl;
0x00065ffa mov r3, sl | r3 = sl;
0x00065ffc mov r1, sl | r1 = sl;
0x00065ffe str.w sl, [sp, 0x20] | __asm ("str.w sl, [var_20h]");
0x00066002 b 0x65ece | goto label_24;
| label_135:
0x00066004 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00066006 str.w sb, [r3, 0x18] | __asm ("str.w sb, [r3, 0x18]");
0x0006600a b 0x65e14 | goto label_25;
| label_116:
0x0006600c mov sb, r3 | sb = r3;
0x0006600e mov r5, r7 | r5 = r7;
0x00066010 mov r8, r6 | r8 = r6;
| label_27:
0x00066012 ldrd r1, r2, [r5, 0xc] | __asm ("ldrd r1, r2, [r5, 0xc]");
0x00066016 ldrb r3, [r1] | r3 = *(r1);
0x00066018 cmp r3, 0xb0 |
| if (r3 != 0xb0) {
0x0006601a beq 0x6603c |
0x0006601c ldrb r3, [r2] | r3 = *(r2);
0x0006601e cmp r3, 0xb0 |
| if (r3 == 0xb0) {
0x00066020 beq 0x6603c | goto label_149;
| }
0x00066022 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00066024 bl 0x2d56c | fcn_0002d56c (r0, r1, r2);
0x00066028 ldrd r2, r1, [r5, 0xc] | __asm ("ldrd r2, r1, [r5, 0xc]");
0x0006602c mov r4, r0 | r4 = r0;
0x0006602e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00066030 bl 0x2d56c | r0 = fcn_0002d56c (r0, r1, r2);
0x00066034 cmp r4, r0 |
0x00066036 ldrd r1, r2, [r5, 0xc] | __asm ("ldrd r1, r2, [r5, 0xc]");
0x00066038 asrs r3, r0, 8 | r3 = r0 >> 8;
| if (r4 == r0) {
0x0006603a beq 0x66044 | goto label_150;
| }
| }
| label_149:
0x0006603c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0006603e eor r3, r3, 0x200 | r3 ^= 0x200;
0x00066042 str r3, [r5, 4] | *((r5 + 4)) = r3;
| label_150:
0x00066044 ldrb r3, [r5] | r3 = *(r5);
0x00066046 strd r2, r1, [r5, 0xc] | __asm ("strd r2, r1, [r5, 0xc]");
0x0006604a cmp r3, 0x35 |
| if (r3 >= 0x35) {
0x0006604c bls 0x6605a |
0x0006604e subs r3, 0x36 | r3 -= 0x36;
0x00066050 eor r3, r3, 2 | r3 ^= 2;
0x00066054 adds r3, 0x36 | r3 += 0x36;
0x00066056 uxtb r3, r3 | r3 = (int8_t) r3;
0x00066058 strb r3, [r5] | *(r5) = r3;
| }
0x0006605a ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006605c cmp r3, 0x31 |
0x0006605e ldr r1, [sp, 0x40] | r1 = var_40h;
0x00066060 it eq |
| if (r3 != 0x31) {
0x00066062 moveq r3, 1 | r3 = 1;
| }
0x00066064 str.w r2, [r8, 0x28] | __asm ("str.w r2, [r8, 0x28]");
0x00066068 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0006606a str.w r2, [r8, 0x2c] | __asm ("str.w r2, [r8, 0x2c]");
0x0006606e ldr r2, [sp, 0x38] | r2 = var_38h;
0x00066070 orr.w r2, r2, r1 | r2 |= r1;
0x00066074 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00066076 str.w r2, [r8, 0x20] | __asm ("str.w r2, [r8, 0x20]");
0x0006607a ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0006607c orr.w r2, r2, r1 | r2 |= r1;
0x00066080 str.w r2, [r8, 0x24] | __asm ("str.w r2, [r8, 0x24]");
0x00066084 ldr r2, [sp, 0x78] | r2 = var_78h;
0x00066086 str.w r2, [r8, 0x14] | __asm ("str.w r2, [r8, 0x14]");
0x0006608a ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0006608c str.w r2, [r8, 0x18] | __asm ("str.w r2, [r8, 0x18]");
| if (r3 != 0x31) {
0x00066090 beq 0x660ae |
0x00066092 cmp r3, 0x32 |
0x00066094 it eq |
| if (r3 != 0x32) {
0x00066096 moveq r3, 0x100 | r3 = 0x100;
| }
| if (r3 == 0x32) {
0x0006609a beq 0x660ae | goto label_151;
| }
0x0006609c cmp r3, 0x2d |
0x0006609e ittte ne |
| if (r3 == 0x2d) {
0x000660a0 subne r3, 0x35 | r3 -= 0x35;
| }
| if (r3 == 0x2d) {
0x000660a2 movne r2, 2 | r2 = 2;
| }
| if (r3 == 0x2d) {
0x000660a4 lslne r3, r2, r3 | r3 = r2 << r3;
| }
| if (r3 == 0x2d) {
0x000660a8 movs r3, 0x80 | r3 = 0x80;
| }
0x000660aa it ne |
| if (r3 == 0x80) {
0x000660ac uxthne r3, r3 | __asm ("uxthne r3, r3");
| goto label_151;
| }
| }
| label_151:
0x000660ae ldr r2, [sp, 0x30] | r2 = var_30h;
0x000660b0 add r3, sb | r3 += sb;
0x000660b2 ands r2, r3 | r2 &= r3;
0x000660b4 strh.w r2, [r8, 0xc] | *((r8 + 0xc)) = r2;
0x000660b8 ldrb r3, [r7] | r3 = *(r7);
0x000660ba ldrb.w r2, [sl, 8] | r2 = *((sl + 8));
0x000660be sub.w r1, r3, 0x2d | r1 = r3 - 0x2d;
0x000660c2 and r1, r1, 0xf7 | r1 &= 0xf7;
0x000660c6 b.w 0x656a2 | goto label_14;
| label_124:
0x000660ca ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x000660cc movs r5, 0 | r5 = 0;
0x000660ce ldr.w r8, [sp, 0x28] | r8 = var_28h;
| do {
0x000660d2 mov r2, r5 | r2 = r5;
0x000660d4 mov r0, r6 | r0 = r6;
0x000660d6 bl 0x31fdc | fcn_00031fdc (r0, r1, r2);
0x000660d8 vbic.i16 d6, 0x99 | __asm ("vbic.i16 d6, 0x99");
0x000660dc mov sb, r0 | sb = r0;
0x000660de mov r2, r5 | r2 = r5;
0x000660e0 mov r0, r6 | r0 = r6;
0x000660e2 bl 0x31fdc | fcn_00031fdc (r0, r1, r2);
0x000660e6 ldrb r1, [r7] | r1 = *(r7);
0x000660e8 mov r3, r0 | r3 = r0;
0x000660ea mov r2, sb | r2 = sb;
0x000660ec mov r0, r6 | r0 = r6;
0x000660ee bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x000660f2 mov r1, r0 | r1 = r0;
| if (r0 != 0) {
0x000660f4 cbz r0, 0x66106 |
0x000660f6 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000660f8 and r2, r3, 1 | r2 = r3 & 1;
0x000660fc ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000660fe orrs r3, r2 | r3 |= r2;
0x00066100 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00066102 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x00066104 str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
| }
0x00066106 movs r2, 1 | r2 = 1;
0x00066108 mov r0, sl | r0 = sl;
0x0006610a bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x0006610e adds r5, 1 | r5++;
0x00066110 mov r2, r0 | r2 = r0;
0x00066112 mov r1, sl | r1 = sl;
0x00066114 mov r0, r8 | r0 = r8;
0x00066116 bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x0006611a cmp r5, r4 |
| if (r5 == r4) {
0x0006611c beq 0x66122 | goto label_152;
| }
0x0006611e ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x00066120 b 0x660d2 |
| } while (1);
| label_152:
0x00066122 ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x00066126 movs r1, 0 | r1 = 0;
0x00066128 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006612a add r3, r2 | r3 += r2;
0x0006612c ldrh r2, [r3, 0xa] | r2 = *((r3 + 0xa));
0x0006612e strh r1, [r3, 0xc] | *((r3 + 0xc)) = r1;
0x00066130 orr r2, r2, 6 | r2 |= 6;
0x00066134 strh r2, [r3, 0xa] | *((r3 + 0xa)) = r2;
0x00066136 b.w 0x6545c | goto label_26;
| label_112:
0x0006613a movs r3, 0x45 | r3 = 0x45;
0x0006613c str r3, [sp, 0x18] | var_18h = r3;
0x0006613e b.w 0x6573e | goto label_17;
| label_117:
0x00066142 mov r1, r0 | r1 = r0;
0x00066144 movs r2, 3 | r2 = 3;
0x00066146 mov r0, sl | r0 = sl;
0x00066148 bl 0x20170 | r0 = fcn_00020170 (r0, r1, r2, r3);
0x0006614c cmp r0, 0 |
| if (r0 == 0) {
0x0006614e beq.w 0x6546c | goto label_0;
| }
0x00066152 ldr.w r6, [sl, 0x14] | r6 = *((sl + 0x14));
0x00066156 add.w r0, r0, r0, lsl 1 | r0 += (r0 << 1);
0x0006615a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006615c cmp.w sb, 0x2d |
0x00066160 add.w r8, r6, r0, lsl 4 | r8 = r6 + (r0 << 4);
0x00066164 add r6, r3 | r6 += r3;
0x00066166 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00066168 str.w r3, [r8, 0x10] | __asm ("str.w r3, [r8, 0x10]");
0x0006616c ldrsh.w r3, [r6, 8] | r3 = *((r6 + 8));
0x00066170 strh.w r3, [r8, 8] | *((r8 + 8)) = r3;
0x00066174 ldrb r3, [r6, 0xe] | r3 = *((r6 + 0xe));
0x00066176 add.w r3, r3, 1 | r3++;
0x0006617a strb r3, [r6, 0xe] | *((r6 + 0xe)) = r3;
0x0006617c ittt eq |
| if (sb == 0x2d) {
0x0006617e ldrheq r3, [r8, 0xa] | __asm ("ldrheq r3, [r8, 0xa]");
| }
| if (sb != 0x2d) {
0x00066182 orreq r3, r3, 0x800 | r3 |= 0x800;
| }
| if (sb == 0x2d) {
0x00066186 strh.w r3, [r8, 0xa] | *((r8 + 0xa)) = r3;
| }
0x0006618a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006618c ldrh r2, [r6, 0xa] | r2 = *((r6 + 0xa));
0x0006618e ldr r3, [r3] | r3 = *(r3);
0x00066190 orr r2, r2, 8 | r2 |= 8;
0x00066194 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00066196 strh r2, [r6, 0xa] | *((r6 + 0xa)) = r2;
0x00066198 ands r2, r3, 0x80 | r2 = r3 & 0x80;
| if (r2 != r3) {
0x0006619c bne.w 0x665be | goto label_153;
| }
0x000661a0 ldrb r3, [r5] | r3 = *(r5);
0x000661a2 subs r3, 0x2d | r3 -= 0x2d;
0x000661a4 ands r3, r3, 0xf7 | r3 &= 0xf7;
| if (r3 != r3) {
0x000661a8 bne.w 0x665be | goto label_153;
| }
0x000661ac ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x000661ae tst.w r1, 1 |
0x000661b2 str r1, [sp, 0x4c] | var_4ch = r1;
| if ((r1 & 1) != 0) {
0x000661b4 bne.w 0x665be | goto label_153;
| }
0x000661b8 ldr.w sb, [r5, 0xc] | sb = *((r5 + 0xc));
0x000661bc mov r0, sb | r0 = sb;
0x000661be bl 0xc640 | fcn_0000c640 (r0);
0x000661c2 ldr r4, [r5, 0x10] | r4 = *((r5 + 0x10));
0x000661c4 str r0, [sp, 0x48] | var_48h = r0;
0x000661c6 mov r0, r4 | r0 = r4;
0x000661c8 bl 0xc640 | fcn_0000c640 (r0);
0x000661cc ldr r3, [sp, 0x48] | r3 = var_48h;
0x000661ce mov r2, r0 | r2 = r0;
0x000661d0 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x000661d2 cmp r3, r0 |
| if (r3 != r0) {
0x000661d4 beq 0x661e2 |
0x000661d6 cmp r3, 0x42 |
| if (r3 < 0x42) {
0x000661d8 bls.w 0x665be | goto label_153;
| }
0x000661dc cmp r0, 0x42 |
| if (r0 < 0x42) {
0x000661de bls.w 0x665be | goto label_153;
| }
| }
0x000661e2 lsls r1, r1, 0x16 | r1 <<= 0x16;
0x000661e4 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000661e6 ittee mi |
| if (r1 >= r1) {
0x000661e8 movmi r2, sb | r2 = sb;
| }
| if (r1 >= r1) {
0x000661ea movmi r1, r4 | r1 = r4;
| }
| if (r1 < r1) {
0x000661ec movpl r1, sb | r1 = sb;
| }
| if (r1 < r1) {
0x000661ee movpl r2, r4 | r2 = r4;
| }
0x000661f0 bl 0x2d56c | fcn_0002d56c (r0, r1, r2);
0x000661f4 ldrd r1, sb, [r5, 0xc] | __asm ("ldrd r1, sb, [r5, 0xc]");
| if (r0 != 0) {
0x000661f8 cbz r0, 0x66230 |
0x000661fa ldr.w r3, [pc, 0xb7c] | r3 = *(0x00066d78);
0x000661fe ldr r2, [r0, 0xc] | r2 = *((r0 + 0xc));
0x00066200 add r3, pc | r3 += pc;
0x00066202 cmp r2, r3 |
| if (r2 == r3) {
0x00066204 beq 0x66230 | goto label_154;
| }
0x00066206 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00066208 bl 0x2d47c | r0 = fcn_0002d47c (r0, r1);
0x0006620c mov r4, r0 | r4 = r0;
0x0006620e cmp r0, 0 |
| if (r0 == 0) {
0x00066210 beq.w 0x66d22 | goto label_155;
| }
| label_78:
0x00066214 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00066216 mov r1, sb | r1 = sb;
0x00066218 bl 0x2d47c | r0 = fcn_0002d47c (r0, r1);
0x0006621c cmp r0, 0 |
| if (r0 == 0) {
0x0006621e beq.w 0x66d18 | goto label_156;
| }
| label_77:
0x00066222 ldr r1, [r0] | r1 = *(r0);
0x00066224 ldr r0, [r4] | r0 = *(r4);
0x00066226 bl 0x8940 | r0 = fcn_00008940 (r0);
0x0006622a cmp r0, 0 |
| if (r0 != 0) {
0x0006622c bne.w 0x665be | goto label_153;
| }
| }
| label_154:
0x00066230 ldrh r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00066232 mov.w sb, 0x800 | sb = 0x800;
0x00066236 orr r3, r3, 0x800 | r3 |= 0x800;
0x0006623a strh r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
0x0006623c b 0x66012 | goto label_27;
| label_142:
0x0006623e ldr.w r8, [fp, 0xc] | r8 = *(arg_ch);
0x00066242 ldr.w r0, [fp, 0x14] | r0 = *(arg_14h);
0x00066246 cmp.w r8, 0 |
| if (r8 <= 0) {
0x0006624a ble.w 0x66ba2 | goto label_157;
| }
0x0006624e ldr.w lr, [sp, 0x3c] | lr = var_3ch;
0x00066252 mov ip, r3 |
0x00066254 adds r0, 0x30 | r0 += 0x30;
0x00066256 movw sb, 0x1f31 | sb = 0x1f31;
0x0006625a str r3, [sp, 0x24] | var_24h = r3;
0x0006625c str r3, [sp, 0x60] | var_60h = r3;
0x0006625e str r6, [sp, 0x64] | var_64h = r6;
| label_28:
0x00066260 ldr r3, [r0, -0x30] | r3 = *((r0 - 0x30));
0x00066264 ldrb r3, [r3] | r3 = *(r3);
0x00066266 subs r3, 0x2d | r3 -= 0x2d;
0x00066268 uxtb r3, r3 | r3 = (int8_t) r3;
0x0006626a cmp r3, 0xc |
| if (r3 > 0xc) {
0x0006626c bhi 0x662ec | goto label_158;
| }
0x0006626e lsr.w r3, sb, r3 | r3 = sb >> r3;
0x00066272 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 >= r3) {
0x00066274 bpl 0x662ec | goto label_158;
| }
| label_30:
0x00066276 ldr.w r6, [lr, 0x1ec] | r6 = *((lr + 0x1ec));
0x0006627a ldr fp, [r0, -0x1c] | fp = *((r0 - 0x1c));
0x0006627e cmp r6, 0 |
| if (r6 <= 0) {
0x00066280 ble 0x662bc | goto label_29;
| }
0x00066282 add.w r2, lr, 0x1ec | r2 = lr + 0x1ec;
0x00066286 movs r3, 0 | r3 = 0;
0x00066288 b 0x66290 |
| while (fp != r1) {
0x0006628a adds r3, 1 | r3++;
0x0006628c cmp r6, r3 |
| if (r6 == r3) {
0x0006628e beq 0x662bc | goto label_29;
| }
0x00066290 ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x00066294 cmp fp, r1 |
0x00066296 bne 0x6628a |
| }
0x00066298 movs r6, 1 | r6 = 1;
0x0006629a sub.w r2, r3, 0x20 | r2 = r3 - 0x20;
0x0006629e rsb.w r1, r3, 0x20 | r1 = 0x20 - r3;
0x000662a2 lsl.w r2, r6, r2 | r2 = r6 << r2;
0x000662a6 lsr.w r1, r6, r1 | r1 = r6 >> r1;
0x000662aa lsl.w r3, r6, r3 | r3 = r6 << r3;
0x000662ae orrs r2, r1 | r2 |= r1;
0x000662b0 ldr r1, [sp, 0x60] | r1 = var_60h;
0x000662b2 orrs r1, r2 | r1 |= r2;
0x000662b4 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000662b6 str r1, [sp, 0x60] | var_60h = r1;
0x000662b8 orrs r2, r3 | r2 |= r3;
0x000662ba str r2, [sp, 0x24] | var_24h = r2;
| label_29:
0x000662bc add.w ip, ip, 1 |
0x000662c0 adds r0, 0x30 | r0 += 0x30;
0x000662c2 cmp ip, r8 |
| if (ip != r8) {
0x000662c4 bne 0x66260 | goto label_28;
| }
0x000662c6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000662c8 mov.w fp, 0 |
0x000662cc ldr r2, [sp, 0x60] | r2 = var_60h;
0x000662ce and r5, r5, 1 | r5 &= 1;
0x000662d2 ldr r6, [sp, 0x64] | r6 = var_64h;
0x000662d4 and.w sl, sl, r3 | sl &= r3;
0x000662d8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000662da str.w fp, [sp, 0x24] | __asm ("str.w fp, [var_24h]");
0x000662de ands r3, r2 | r3 &= r2;
0x000662e0 str r3, [sp, 0x20] | var_20h = r3;
0x000662e2 orrs.w r3, sl, r3 | r3 = sl | r3;
0x000662e6 it eq |
| if (r3 != sl) {
0x000662e8 moveq r5, 0 | r5 = 0;
| }
0x000662ea b 0x65d48 | goto label_19;
| label_158:
0x000662ec ldrh r3, [r0, -0x24] | r3 = *((r0 - 0x24));
0x000662f0 cmp r3, 0x40 |
| if (r3 != 0x40) {
0x000662f2 bne 0x662bc | goto label_29;
| }
0x000662f4 b 0x66276 | goto label_30;
| label_110:
0x000662f6 ldr r0, [r5, 0x2c] | r0 = *((r5 + 0x2c));
0x000662f8 cmp r0, 0 |
| if (r0 == 0) {
0x000662fa beq.w 0x65724 | goto label_31;
| }
0x000662fe ldr r0, [r0, 0x38] | r0 = *((r0 + 0x38));
0x00066300 cmp r0, 0 |
| if (r0 == 0) {
0x00066302 beq.w 0x65724 | goto label_31;
| }
0x00066306 cmp r3, 0x34 |
0x00066308 add.w r0, r2, 1 | r0 = r2 + 1;
| if (r3 == 0x34) {
0x0006630c beq.w 0x66b92 | goto label_159;
| }
0x00066310 mov r6, r2 | r6 = r2;
0x00066312 mov r4, r5 | r4 = r5;
0x00066314 mov r2, r0 | r2 = r0;
0x00066316 mov r5, r8 | r5 = r8;
0x00066318 b.w 0x6572e | goto label_32;
| label_119:
0x0006631c ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0006631e cmp r3, 0 |
| if (r3 == 0) {
0x00066320 beq.w 0x658b6 | goto label_33;
| }
0x00066324 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00066326 cmp r3, 0 |
| if (r3 == 0) {
0x00066328 beq.w 0x658b6 | goto label_33;
| }
0x0006632c ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0006632e mov.w ip, 0 |
0x00066332 ldr.w r1, [pc, 0xa48] | r1 = *(0x00066d7c);
0x00066336 ldr.w r0, [pc, 0xa48] |
0x0006633a add.w lr, r3, -1 | lr = r3 + -1;
0x0006633e ldr.w r3, [pc, 0xa44] | r3 = *(0x00066d84);
0x00066342 add r1, pc | r1 += pc;
0x00066344 add r0, pc | r0 = 0xcd0ca;
0x00066346 add r3, pc | r3 += pc;
0x00066348 addw r8, r3, 0xd64 | __asm ("addw r8, r3, aav.0x000000ff");
0x0006634c movs r3, 0x6d | r3 = 0x6d;
| label_35:
0x0006634e mov r2, lr | r2 = lr;
0x00066350 b 0x66366 |
| while (r6 != r3) {
0x00066352 add r6, r0 | r6 += r0;
0x00066354 add r3, r0 | r3 += r0;
0x00066356 ldrb.w r6, [r6, 0x140] | r6 = *((r6 + 0x140));
0x0006635a ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x0006635e cmp r6, r3 |
| if (r6 != r3) {
0x00066360 bne 0x6638a | goto label_160;
| }
| label_34:
0x00066362 ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x00066366 ldrb r6, [r2, 1]! | r6 = *((r2 += 1));
0x0006636a cmp r6, r3 |
0x0006636c bne 0x66352 |
| }
0x0006636e cmp r3, 0 |
| if (r3 != 0) {
0x00066370 bne 0x66362 | goto label_34;
| }
0x00066372 ldr.w r3, [pc, 0xa14] | r3 = *(0x00066d88);
0x00066376 mov sb, r7 | sb = r7;
0x00066378 ldr r5, [r5, 8] | r5 = *((r5 + 8));
0x0006637a add r3, pc | r3 += pc;
0x0006637c add.w r3, r3, ip, lsl 3 | r3 += (ip << 3);
0x00066380 ldrb.w r3, [r3, 0xd68] | r3 = *((r3 + 0xd68));
0x00066384 str r3, [sp, 0x18] | var_18h = r3;
0x00066386 b.w 0x65746 | goto label_8;
| label_160:
0x0006638a add.w ip, ip, 1 |
0x0006638e cmp.w ip, 4 |
| if (ip == 4) {
0x00066392 beq.w 0x658b6 | goto label_33;
| }
0x00066396 ldr.w r1, [r8, ip, lsl 3] | offset_0 = ip << 3;
| r1 = *((r8 + offset_0));
0x0006639a ldrb r3, [r1] | r3 = *(r1);
0x0006639c b 0x6634e | goto label_35;
| label_148:
0x0006639e ldrd fp, r7, [sp, 0x58] | __asm ("ldrd fp, r7, [var_58h]");
0x000663a2 ldr.w sb, [sp, 0x54] | sb = var_54h;
0x000663a6 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000663aa ldr.w sl, [sp, 0x48] | sl = var_48h;
0x000663ae str r0, [sp, 0x24] | var_24h = r0;
0x000663b0 str r0, [sp, 0x48] | var_48h = r0;
0x000663b2 vstr d16, [sb, 0x198] | __asm ("vstr d16, aav.0x000000ff");
| label_72:
0x000663b6 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000663b8 mov.w r3, 0x200 | r3 = 0x200;
0x000663bc strh r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
| label_48:
0x000663be ldr r3, [sp, 0x48] | r3 = var_48h;
0x000663c0 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000663c2 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x000663c4 beq.w 0x65e14 | goto label_25;
| }
0x000663c8 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x000663cc subs r5, r3, 1 | r5 = r3 - 1;
| label_43:
0x000663ce str.w sl, [sp, 0x58] | __asm ("str.w sl, [var_58h]");
0x000663d2 movs r3, 2 | r3 = 2;
0x000663d4 ldr.w sl, [sp, 0x3c] | sl = var_3ch;
0x000663d8 mov.w r1, -1 | r1 = -1;
0x000663dc mov r8, r3 | r8 = r3;
0x000663de str.w fp, [sp, 0x38] | __asm ("str.w fp, [var_38h]");
0x000663e2 str r7, [sp, 0x54] | var_54h = r7;
| label_36:
0x000663e4 cmp r5, 0 |
0x000663e6 ldr.w r2, [sb, 0x14] | r2 = *((sb + 0x14));
| if (r5 < 0) {
0x000663ea blt 0x66494 | goto label_161;
| }
| label_37:
0x000663ec ldr r6, [r2, 0x14] | r6 = *((r2 + 0x14));
0x000663ee ldrh r3, [r2, 0xa] | r3 = *((r2 + 0xa));
0x000663f0 cmp r6, r1 |
0x000663f2 bic r3, r3, 0x40 | r3 = BIT_MASK (r3, 0x40);
0x000663f6 strh r3, [r2, 0xa] | *((r2 + 0xa)) = r3;
| if (r6 == r1) {
0x000663f8 beq 0x6648c | goto label_162;
| }
0x000663fa ldr.w r7, [sl, 0x1ec] | r7 = *((sl + 0x1ec));
0x000663fe cmp r7, 0 |
| if (r7 <= 0) {
0x00066400 ble 0x6648c | goto label_162;
| }
0x00066402 add.w r0, sl, 0x1ec | r0 = sl + 0x1ec;
0x00066406 movs r3, 0 | r3 = 0;
0x00066408 b 0x66410 |
| while (r6 != r4) {
0x0006640a adds r3, 1 | r3++;
0x0006640c cmp r3, r7 |
| if (r3 == r7) {
0x0006640e beq 0x6648c | goto label_162;
| }
0x00066410 ldr r4, [r0, 4]! | r4 = *((r0 += 4));
0x00066414 cmp r6, r4 |
0x00066416 bne 0x6640a |
| }
0x00066418 movs r7, 1 | r7 = 1;
0x0006641a sub.w r0, r3, 0x20 | r0 = r3 - 0x20;
0x0006641e rsb.w r4, r3, 0x20 | r4 = 0x20 - r3;
0x00066422 lsl.w r0, r7, r0 | r0 = r7 << r0;
0x00066426 lsr.w r4, r7, r4 | r4 = r7 >> r4;
0x0006642a lsl.w r3, r7, r3 | r3 = r7 << r3;
0x0006642e orrs r0, r4 | r0 |= r4;
0x00066430 ldr r4, [sp, 0x24] | r4 = var_24h;
0x00066432 ands r0, r4 | r0 &= r4;
0x00066434 ldr r4, [sp, 0x48] | r4 = var_48h;
0x00066436 ands r3, r4 | r3 &= r4;
0x00066438 orrs r3, r0 | r3 |= r0;
| if (r3 == r0) {
0x0006643a beq 0x6648c | goto label_162;
| }
0x0006643c mov r4, r2 | r4 = r2;
0x0006643e ldr r7, [r2, 0x18] | r7 = *((r2 + 0x18));
0x00066440 ldr r3, [r4], 0x30 | r3 = *(r4);
| r4 += 0x30;
0x00066444 ldr.w fp, [r3, 0xc] | fp = *((r3 + 0xc));
0x00066448 mov r3, r6 | r3 = r6;
0x0006644a cmp r6, r3 |
| if (r6 == r3) {
0x0006644c beq 0x66470 | goto label_163;
| }
| do {
0x0006644e ldrh r3, [r4, -0x26] | r3 = *((r4 - 0x26));
0x00066452 bic r3, r3, 0x40 | r3 = BIT_MASK (r3, 0x40);
0x00066456 lsls r3, r3, 0x10 | r3 <<= 0x10;
0x00066458 lsrs r3, r3, 0x10 | r3 >>= 0x10;
| label_39:
0x0006645a subs r5, 1 | r5--;
0x0006645c strh r3, [r4, -0x26] | *((r4 - 0x26)) = r3;
0x00066460 adds r3, r5, 1 | r3 = r5 + 1;
0x00066462 add.w r4, r4, 0x30 | r4 += 0x30;
| if (r3 == r5) {
0x00066466 beq 0x664f6 | goto label_164;
| }
0x00066468 ldr r3, [r4, -0x1c] | r3 = *((r4 - 0x1c));
0x0006646c cmp r6, r3 |
0x0006646e bne 0x6644e |
| } while (r6 != r3);
| label_163:
0x00066470 ldr r3, [r4, -0x18] | r3 = *((r4 - 0x18));
0x00066474 cmp r7, r3 |
| if (r7 == r3) {
0x00066476 beq 0x6649e | goto label_165;
| }
| label_38:
0x00066478 cmp.w r8, 1 |
| if (r8 == 1) {
0x0006647c beq 0x66494 | goto label_161;
| }
0x0006647e ldr.w r5, [sb, 0xc] | r5 = *((sb + 0xc));
0x00066482 mov r1, r6 | r1 = r6;
0x00066484 mov.w r8, 1 | r8 = 1;
0x00066488 subs r5, 1 | r5--;
0x0006648a b 0x663e4 | goto label_36;
| label_162:
0x0006648c subs r5, 1 | r5--;
0x0006648e adds r2, 0x30 | r2 += 0x30;
0x00066490 adds r0, r5, 1 | r0 = r5 + 1;
| if (r0 != r5) {
0x00066492 bne 0x663ec | goto label_37;
| }
| label_161:
0x00066494 ldr.w fp, [sp, 0x38] | fp = var_38h;
0x00066498 ldrd r7, sl, [sp, 0x54] | __asm ("ldrd r7, sl, [var_58h]");
0x0006649c b 0x65e14 | goto label_25;
| label_165:
0x0006649e adds r1, r7, 2 | r1 = r7 + 2;
0x000664a0 ldr r2, [r4, -0x30] | r2 = *((r4 - 0x30));
| if (r1 == r7) {
0x000664a4 beq 0x664ce | goto label_166;
| }
| label_40:
0x000664a6 ldr r0, [r2, 0x10] | r0 = *((r2 + 0x10));
0x000664a8 str r2, [sp, 0x20] | var_20h = r2;
0x000664aa bl 0xc640 | fcn_0000c640 (r0);
0x000664ae ldr r2, [sp, 0x20] | r2 = var_20h;
0x000664b0 mov r3, r0 | r3 = r0;
0x000664b2 str r3, [sp, 0x20] | var_20h = r3;
0x000664b4 ldr r0, [r2, 0xc] | r0 = *((r2 + 0xc));
0x000664b6 bl 0xc640 | fcn_0000c640 (r0);
0x000664ba ldr r3, [sp, 0x20] | r3 = var_20h;
0x000664bc cmp r3, 0 |
0x000664be it ne |
| if (r3 == 0) {
0x000664c0 cmpne r0, r3 | __asm ("cmpne r0, r3");
| goto label_167;
| }
| if (r3 != 0) {
| label_167:
0x000664c2 bne 0x66478 | goto label_38;
| }
0x000664c4 ldrh r3, [r4, -0x26] | r3 = *((r4 - 0x26));
0x000664c8 orr r3, r3, 0x40 | r3 |= 0x40;
0x000664cc b 0x6645a | goto label_39;
| label_166:
0x000664ce ldr r1, [r2, 0xc] | r1 = *((r2 + 0xc));
0x000664d0 cmp.w fp, 0 |
0x000664d4 it ne |
| if (fp != 0) {
0x000664d6 cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
| if (fp == 0) {
0x000664d8 beq 0x664f0 | goto label_168;
| }
0x000664da ldr r0, [sp, 0x50] | r0 = var_50h;
0x000664dc mov.w r3, -1 | r3 = -1;
0x000664e0 mov r2, fp | r2 = fp;
0x000664e2 bl 0x35ca8 | r0 = fcn_00035ca8 (r0, r1, r2, r3);
0x000664e6 cmp r0, 0 |
| if (r0 != 0) {
0x000664e8 bne 0x66478 | goto label_38;
| }
0x000664ea ldr r2, [r4, -0x30] | r2 = *((r4 - 0x30));
0x000664ee b 0x664a6 | goto label_40;
| label_168:
0x000664f0 cmp fp, r1 |
| if (fp != r1) {
0x000664f2 bne 0x66478 | goto label_38;
| }
0x000664f4 b 0x664a6 | goto label_40;
| label_164:
0x000664f6 ldr.w r5, [sb, 0xc] | r5 = *((sb + 0xc));
0x000664fa ldr.w fp, [sp, 0x38] | fp = var_38h;
0x000664fe ldrd r7, sl, [sp, 0x54] | __asm ("ldrd r7, sl, [var_58h]");
0x00066502 subs r5, 1 | r5--;
0x00066504 ldr.w r4, [sb, 0x14] | r4 = *((sb + 0x14));
| if (r5 < 1) {
0x00066508 bmi.w 0x66bb2 | goto label_169;
| }
0x0006650c ldr.w r8, [sp, 0x3c] | r8 = var_3ch;
0x00066510 movs r2, 0 | r2 = 0;
0x00066512 ldr.w sb, [sp, 0x30] | sb = var_30h;
0x00066516 adds r4, 0x30 | r4 += 0x30;
0x00066518 mov r6, r2 | r6 = r2;
| do {
0x0006651a ldrh r3, [r4, -0x26] | r3 = *((r4 - 0x26));
0x0006651e lsls r3, r3, 0x19 | r3 <<= 0x19;
| if (r3 < r3) {
0x00066520 bpl 0x6654a |
0x00066522 ldr r3, [r4, -0x30] | r3 = *((r4 - 0x30));
0x00066526 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
| if (r2 != 0) {
0x00066528 cbz r2, 0x66538 |
0x0006652a movs r3, 0 | r3 = 0;
0x0006652c mov r1, r2 | r1 = r2;
0x0006652e mov r0, sb | r0 = sb;
0x00066530 mov r2, r3 | r2 = r3;
0x00066532 bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x00066536 mov r2, r0 | r2 = r0;
| }
0x00066538 mov r1, r6 | r1 = r6;
0x0006653a ldr.w r0, [r8] | r0 = *(r8);
0x0006653e bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00066542 ldr r3, [r4, -0x30] | r3 = *((r4 - 0x30));
0x00066546 mov r6, r0 | r6 = r0;
0x00066548 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
| }
0x0006654a subs r5, 1 | r5--;
0x0006654c adds r4, 0x30 | r4 += 0x30;
0x0006654e adds r0, r5, 1 | r0 = r5 + 1;
0x00066550 bne 0x6651a |
| } while (r0 != r5);
| if (r2 != 0) {
0x00066552 cbz r2, 0x66562 |
0x00066554 movs r3, 0 | r3 = 0;
0x00066556 mov r1, r2 | r1 = r2;
0x00066558 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006655a mov r2, r3 | r2 = r3;
0x0006655c bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x00066560 mov r2, r0 | r2 = r0;
| }
0x00066562 movs r1, 0x31 | r1 = 0x31;
0x00066564 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00066566 movs r3, 0 | r3 = 0;
0x00066568 bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x0006656c mov r1, r0 | r1 = r0;
0x0006656e cmp r0, 0 |
| if (r0 == 0) {
0x00066570 beq.w 0x667f6 | goto label_170;
| }
| label_63:
0x00066574 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00066576 mov r0, sl | r0 = sl;
0x00066578 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0006657a ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x0006657c str r6, [r1, 0x14] | *((r1 + 0x14)) = r6;
0x0006657e and r2, r2, 1 | r2 &= 1;
0x00066582 str r3, [r1, 0x24] | *((r1 + 0x24)) = r3;
0x00066584 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00066586 orrs r3, r2 | r3 |= r2;
0x00066588 movs r2, 3 | r2 = 3;
0x0006658a str r3, [r1, 4] | *((r1 + 4)) = r3;
0x0006658c bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x00066590 mov r1, sl | r1 = sl;
0x00066592 mov r2, r0 | r2 = r0;
0x00066594 mov r4, r0 | r4 = r0;
0x00066596 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00066598 bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x0006659c ldr.w r2, [sl, 0x14] | r2 = *((sl + 0x14));
0x000665a0 add.w r4, r4, r4, lsl 1 | r4 += (r4 << 1);
0x000665a4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000665a6 add.w r3, r2, r4, lsl 4 | r3 = r2 + (r4 << 4);
0x000665aa add r2, r1 | r2 += r1;
0x000665ac ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000665ae str r1, [r3, 0x10] | *((r3 + 0x10)) = r1;
0x000665b0 ldrsh.w r1, [r2, 8] | r1 = *((r2 + 8));
0x000665b4 strh r1, [r3, 8] | *((r3 + 8)) = r1;
0x000665b6 ldrb r3, [r2, 0xe] | r3 = *((r2 + 0xe));
0x000665b8 adds r3, 1 | r3++;
0x000665ba strb r3, [r2, 0xe] | *((r2 + 0xe)) = r3;
0x000665bc b 0x65e14 | goto label_25;
| label_153:
0x000665be mov.w sb, 0 | sb = 0;
0x000665c2 b 0x66012 | goto label_27;
| label_145:
0x000665c4 ldr r2, [sp, 0x54] | r2 = var_54h;
0x000665c6 ldr r8, [r4, -0x20] | r8 = *((r4 - 0x20));
0x000665ca ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x000665cc add.w r8, r8, r8, lsl 1 | r8 += (r8 << 1);
0x000665d0 add.w r2, r2, r8, lsl 4 | r2 += (r8 << 4);
0x000665d4 ldr.w sb, [r2, 0x14] | sb = *((r2 + 0x14));
| label_42:
0x000665d8 movs r2, 0 | r2 = 0;
0x000665da mov r8, r3 | r8 = r3;
0x000665dc b 0x665e4 |
| while (r3 != sb) {
0x000665de adds r2, 1 | r2++;
0x000665e0 cmp r2, ip |
| if (r2 == ip) {
0x000665e2 beq 0x66612 | goto label_171;
| }
0x000665e4 ldr r3, [lr, 4]! | r3 = *((lr += 4));
0x000665e8 cmp r3, sb |
0x000665ea bne 0x665de |
| }
0x000665ec mov r3, r8 | r3 = r8;
0x000665ee sub.w ip, r2, 0x20 |
0x000665f2 mov.w r8, 1 | r8 = 1;
0x000665f6 rsb.w lr, r2, 0x20 | lr = 0x20 - r2;
0x000665fa lsl.w ip, r8, ip |
0x000665fe lsr.w lr, r8, lr | lr = r8 >> lr;
0x00066602 lsl.w r2, r8, r2 | r2 = r8 << r2;
0x00066606 orr.w ip, ip, lr |
0x0006660a orr.w r1, ip, r1 | r1 = ip | r1;
0x0006660e orrs r3, r2 | r3 |= r2;
0x00066610 b 0x65ea8 | goto label_41;
| label_171:
0x00066612 mov r3, r8 | r3 = r8;
0x00066614 b 0x65ea8 | goto label_41;
| label_147:
0x00066616 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00066618 ldr r2, [r4, -0x20] | r2 = *((r4 - 0x20));
0x0006661c ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0006661e add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00066622 add.w r3, r3, r2, lsl 4 | r3 += (r2 << 4);
0x00066626 ldr.w sb, [r3, 0x14] | sb = *((r3 + 0x14));
0x0006662a movs r3, 0 | r3 = 0;
0x0006662c mov r1, r3 | r1 = r3;
0x0006662e b 0x665d8 | goto label_42;
| label_136:
0x00066630 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00066632 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x00066636 cmp r2, 0 |
| if (r2 != 0) {
0x00066638 bne.w 0x65e14 | goto label_25;
| }
| label_137:
0x0006663c ldr r1, [sp, 0x38] | r1 = var_38h;
0x0006663e mov.w r2, 0x200 | r2 = 0x200;
0x00066642 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00066646 cmp r3, 2 |
0x00066648 mov.w r3, -1 | r3 = -1;
0x0006664c str r3, [sp, 0x48] | var_48h = r3;
0x0006664e vstr d16, [sb, 0x198] | __asm ("vstr d16, aav.0x000000ff");
0x00066652 strh r2, [r1, 0xc] | *((r1 + 0xc)) = r2;
0x00066654 mov.w r2, 1 | r2 = 1;
0x00066658 strb.w r2, [sl, 9] | *((sl + 9)) = r2;
0x0006665c str r3, [sp, 0x24] | var_24h = r3;
| if (r3 != 2) {
0x0006665e bne.w 0x663ce | goto label_43;
| }
| label_73:
0x00066662 ldr.w ip, [sb, 0x14] | ip = *((sb + 0x14));
0x00066666 movs r3, 0 | r3 = 0;
0x00066668 mov r8, r3 | r8 = r3;
0x0006666a str.w fp, [sp, 0x38] | __asm ("str.w fp, [var_38h]");
0x0006666e str r7, [sp, 0x54] | var_54h = r7;
0x00066670 str.w sb, [sp, 0x20] | __asm ("str.w sb, [var_20h]");
| label_46:
0x00066674 ldrh.w r2, [ip, 0xc] | r2 = *((ip + 0xc));
0x00066678 add.w sb, r3, 1 | sb = r3 + 1;
0x0006667c cmp.w r2, 0x400 |
| if (r2 == 0x400) {
0x00066680 beq.w 0x667b4 | goto label_172;
| }
0x00066684 cmp r3, 0 |
| if (r3 != 0) {
0x00066686 bne.w 0x667c8 | goto label_173;
| }
0x0006668a mov r6, ip | r6 = ip;
| label_47:
0x0006668c ldrh.w r3, [ip, 0x3c] | r3 = *((ip + 0x3c));
0x00066690 movs r4, 0 | r4 = 0;
0x00066692 cmp.w r3, 0x400 |
| if (r3 == 0x400) {
0x00066696 beq 0x66792 | goto label_174;
| }
| label_44:
0x00066698 cmp r4, 0 |
| if (r4 != 0) {
0x0006669a bne.w 0x667ac | goto label_175;
| }
0x0006669e add.w r5, ip, 0x30 | r5 = ip + 0x30;
0x000666a2 mov r1, r3 | r1 = r3;
| label_45:
0x000666a4 ldrh r2, [r6, 0xa] | r2 = *((r6 + 0xa));
0x000666a6 ldrh r0, [r5, 0xa] | r0 = *((r5 + 0xa));
0x000666a8 orrs r2, r0 | r2 |= r0;
0x000666aa lsls r7, r2, 0x18 | r7 = r2 << 0x18;
| if (r7 < r2) {
0x000666ac bmi 0x66788 | goto label_49;
| }
0x000666ae ldrh r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000666b0 tst.w r2, 0x3e |
| if ((r2 & 0x3e) == 0) {
0x000666b4 beq 0x66788 | goto label_49;
| }
0x000666b6 tst.w r1, 0x3e |
| if ((r1 & 0x3e) == 0) {
0x000666ba beq 0x66788 | goto label_49;
| }
0x000666bc orrs r1, r2 | r1 |= r2;
0x000666be uxth r7, r1 | r7 = (int16_t) r1;
0x000666c0 and r1, r1, 0x1a | r1 &= 0x1a;
0x000666c4 cmp r7, r1 |
| if (r7 != r1) {
0x000666c6 beq 0x666ce |
0x000666c8 bics r2, r7, 0x26 | __asm ("bics r2, r7, 0x26");
| if (r7 != r1) {
0x000666cc bne 0x66788 | goto label_49;
| }
| }
0x000666ce ldr.w lr, [r6] |
0x000666d2 ldr.w fp, [r5] | fp = *(r5);
0x000666d6 ldr.w r1, [lr, 0xc] | r1 = *((lr + 0xc));
0x000666da ldr.w r2, [fp, 0xc] | r2 = *(arg_ch);
0x000666de cmp r2, 0 |
0x000666e0 it ne |
| if (r2 != 0) {
0x000666e2 cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
0x000666e4 ite eq |
| if (r2 != 0) {
0x000666e6 moveq r0, 1 | r0 = 1;
| }
| if (r2 == 0) {
0x000666e8 movne r0, 0 | r0 = 0;
| }
| if (r2 == 0) {
0x000666ea beq 0x667d4 | goto label_176;
| }
0x000666ec mov.w r3, -1 | r3 = -1;
0x000666f0 bl 0x35ca8 | r0 = fcn_00035ca8 (r0, r1, r2, r3);
0x000666f4 cmp r0, 0 |
| if (r0 != 0) {
0x000666f6 bne 0x6677e | goto label_51;
| }
0x000666f8 ldr.w fp, [r5] | fp = *(r5);
0x000666fc ldr.w lr, [r6] |
| label_50:
0x00066700 ldr.w r2, [fp, 0x10] | r2 = *(arg_10h);
0x00066704 ldr.w r1, [lr, 0x10] | r1 = *((lr + 0x10));
0x00066708 cmp r2, 0 |
0x0006670a it ne |
| if (r2 != 0) {
0x0006670c cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
0x0006670e ite eq |
| if (r2 != 0) {
0x00066710 moveq r0, 1 | r0 = 1;
| }
| if (r2 == 0) {
0x00066712 movne r0, 0 | r0 = 0;
| }
| if (r2 == 0) {
0x00066714 beq 0x667da | goto label_177;
| }
0x00066716 mov.w r3, -1 | r3 = -1;
0x0006671a bl 0x35ca8 | r0 = fcn_00035ca8 (r0, r1, r2, r3);
| if (r0 != 0) {
0x0006671e cbnz r0, 0x6677e | goto label_51;
| }
0x00066720 subs r3, r7, 1 | r3 = r7 - 1;
0x00066722 ldr.w lr, [r6] |
0x00066726 tst r3, r7 |
| if ((r3 & r7) != 0) {
0x00066728 beq 0x66736 |
0x0006672a tst.w r7, 0x18 |
0x0006672e it ne |
| if ((r7 & 0x18) == 0) {
0x00066730 movne r7, 8 | r7 = 8;
| }
| if ((r7 & 0x18) != 0) {
0x00066732 bne 0x66736 | goto label_178;
| }
| label_53:
0x00066734 movs r7, 0x20 | r7 = 0x20;
| }
| label_178:
0x00066736 cmp.w lr, 0 |
| if (lr == 0) {
0x0006673a beq 0x6677e | goto label_51;
| }
0x0006673c ldr.w r3, [sl] | r3 = *(sl);
| label_54:
0x00066740 ldr r3, [r3] | r3 = *(r3);
0x00066742 ldr r0, [r3] | r0 = *(r3);
| label_52:
0x00066744 movs r3, 0 | r3 = 0;
0x00066746 mov r1, lr | r1 = lr;
0x00066748 mov r2, r3 | r2 = r3;
0x0006674a bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x0006674e mov r1, r0 | r1 = r0;
| if (r0 == 0) {
0x00066750 cbz r0, 0x6677e | goto label_51;
| }
0x00066752 cmp r7, 2 |
0x00066754 mov.w r2, 0x35 | r2 = 0x35;
| if (r7 == 2) {
0x00066758 beq 0x6676a | goto label_179;
| }
| do {
0x0006675a sub.w r3, r2, 0x34 | r3 = r2 - 0x34;
0x0006675e movs r0, 2 | r0 = 2;
0x00066760 lsl.w r3, r0, r3 | r3 = r0 << r3;
0x00066764 adds r2, 1 | r2++;
0x00066766 cmp r3, r7 |
0x00066768 bne 0x6675a |
| } while (r3 != r7);
| label_179:
0x0006676a strb r2, [r1] | *(r1) = r2;
0x0006676c mov r0, sl | r0 = sl;
0x0006676e movs r2, 3 | r2 = 3;
0x00066770 bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x00066774 mov r1, sl | r1 = sl;
0x00066776 mov r2, r0 | r2 = r0;
0x00066778 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0006677a bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
| label_51:
0x0006677e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00066780 ldr.w ip, [r3, 0x14] | ip = *((r3 + 0x14));
0x00066784 ldrh.w r3, [ip, 0x3c] | r3 = *((ip + 0x3c));
| label_49:
0x00066788 cmp.w r3, 0x400 |
0x0006678c add.w r4, r4, 1 | r4++;
| if (r3 != 0x400) {
0x00066790 bne 0x66698 | goto label_44;
| }
| label_174:
0x00066792 ldr.w r2, [ip, 0x48] | r2 = *((ip + 0x48));
0x00066796 ldr r1, [r2, 0xc] | r1 = *((r2 + 0xc));
0x00066798 cmp r1, r4 |
| if (r1 > r4) {
0x0006679a ble 0x667ac |
0x0006679c ldr r5, [r2, 0x14] | r5 = *((r2 + 0x14));
0x0006679e add.w r2, r4, r4, lsl 1 | r2 = r4 + (r4 << 1);
0x000667a2 adds.w r5, r5, r2, lsl 4 | r5 += (r2 << 4);
| if (r5 == r5) {
0x000667a6 beq 0x667ac | goto label_175;
| }
0x000667a8 ldrh r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x000667aa b 0x666a4 | goto label_45;
| }
| label_175:
0x000667ac add.w r8, r8, 0x30 | r8 += 0x30;
0x000667b0 mov r3, sb | r3 = sb;
0x000667b2 b 0x66674 | goto label_46;
| label_172:
0x000667b4 ldr.w r2, [ip, 0x18] | r2 = *((ip + 0x18));
0x000667b8 ldr r1, [r2, 0xc] | r1 = *((r2 + 0xc));
0x000667ba cmp r1, r3 |
| if (r1 <= r3) {
0x000667bc ble 0x667c8 | goto label_173;
| }
0x000667be ldr r6, [r2, 0x14] | r6 = *((r2 + 0x14));
0x000667c0 adds.w r6, r6, r8 | r6 += r8;
| if (r6 != r6) {
0x000667c4 bne.w 0x6668c | goto label_47;
| }
| label_173:
0x000667c8 ldr.w fp, [sp, 0x38] | fp = var_38h;
0x000667cc ldr r7, [sp, 0x54] | r7 = var_54h;
0x000667ce ldr.w sb, [sp, 0x20] | sb = var_20h;
0x000667d2 b 0x663be | goto label_48;
| label_176:
0x000667d4 cmp r1, r2 |
| if (r1 != r2) {
0x000667d6 bne 0x66788 | goto label_49;
| }
0x000667d8 b 0x66700 | goto label_50;
| label_177:
0x000667da cmp r1, r2 |
| if (r1 != r2) {
0x000667dc bne 0x6677e | goto label_51;
| }
0x000667de ldr.w r3, [sl] | r3 = *(sl);
0x000667e2 subs r2, r7, 1 | r2 = r7 - 1;
0x000667e4 tst r2, r7 |
0x000667e6 ldr r1, [r3] | r1 = *(r3);
0x000667e8 ldr r0, [r1] | r0 = *(r1);
| if ((r2 & r7) == 0) {
0x000667ea beq 0x66744 | goto label_52;
| }
0x000667ec tst.w r7, 0x18 |
| if ((r7 & 0x18) == 0) {
0x000667f0 beq 0x66734 | goto label_53;
| }
0x000667f2 movs r7, 8 | r7 = 8;
0x000667f4 b 0x66740 | goto label_54;
| label_170:
0x000667f6 cmp r6, 0 |
| if (r6 == 0) {
0x000667f8 beq.w 0x65e14 | goto label_25;
| }
0x000667fc ldr r0, [sp, 0x30] | r0 = var_30h;
0x000667fe mov r1, r6 | r1 = r6;
0x00066800 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x00066804 b.w 0x65e14 | goto label_25;
| label_133:
0x00066808 ldr r4, [sp, 0x30] | r4 = var_30h;
| label_76:
0x0006680a mov r8, r2 | r8 = r2;
0x0006680c movs r3, 0 | r3 = 0;
| label_60:
0x0006680e add.w lr, r0, r5 | lr = r0 + r5;
0x00066812 ldrb ip, [lr, -0x1] | ip = *((lr - 0x1));
0x00066816 cmp.w ip, 0xff |
| if (ip == 0xff) {
0x0006681a beq.w 0x66932 | goto label_59;
| }
0x0006681e cmp.w r8, 1 |
| if (r8 == 1) {
0x00066822 beq.w 0x66bca | goto label_180;
| }
| label_64:
0x00066826 cmp r1, r3 |
0x00066828 ite eq |
| if (r1 != r3) {
0x0006682a ldrbeq r3, [lr, 1] | r3 = *((lr + 1));
| }
| if (r1 != r3) {
0x0006682e movs r3, 0 | r3 = 0;
| }
0x00066830 str r0, [sp, 0x70] | var_70h = r0;
0x00066832 itt eq |
| if (r3 == 0) {
0x00066834 clzeq r3, r3 | __asm ("clzeq r3, r3");
| }
| if (r3 == 0) {
0x00066838 lsrs r3, r3, 5 | r3 >>= 5;
| }
0x0006683a str r3, [sp, 0x38] | var_38h = r3;
0x0006683c blx 0x8160 | fcn_00008160 ();
0x00066840 add r3, sp, 0x70 | r3 += var_70h;
0x00066842 bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
0x00066846 mov r2, r3 | r2 = r3;
0x00066848 str r0, [sp, 0x74] | var_74h = r0;
0x0006684a str r3, [sp, 0x50] | var_50h = r3;
0x0006684c movs r1, 0x74 | r1 = 0x74;
0x0006684e ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00066850 movs r3, 0 | r3 = 0;
0x00066852 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x00066856 str r0, [sp, 0x30] | var_30h = r0;
0x00066858 cmp r0, 0 |
| if (r0 == 0) {
0x0006685a beq.w 0x66c10 | goto label_80;
| }
0x0006685e ldr.w sb, [r0, 8] | sb = *((r0 + 8));
0x00066862 movs r3, 0 | r3 = 0;
0x00066864 mov r1, sb | r1 = sb;
0x00066866 rsb.w r0, sb, 1 | r0 = 1 - sb;
0x0006686a strb.w r3, [sb, r5] | *((sb + r5)) = r3;
| do {
0x0006686e ldrb.w r2, [sb, r3] | r2 = *((sb + r3));
0x00066872 ldr r5, [sp, 0x24] | r5 = var_24h;
0x00066874 cmp r2, r5 |
0x00066876 mov r5, r1 | r5 = r1;
0x00066878 itt eq |
| if (r2 != r5) {
0x0006687a addeq r3, 1 | r3++;
| }
| if (r2 != r5) {
0x0006687c ldrbeq r2, [sb, r3] | r2 = *((sb + r3));
| }
0x00066880 adds r3, 1 | r3++;
0x00066882 cmp r3, r8 |
0x00066884 strb r2, [r1] | *(r1) = r2;
0x00066886 add.w r2, r0, r1 | r2 = r0 + r1;
0x0006688a add.w r1, r1, 1 | r1++;
0x0006688e blt 0x6686e |
| } while (r3 < r8);
0x00066890 movs r3, 0 | r3 = 0;
0x00066892 str r5, [sp, 0x24] | var_24h = r5;
0x00066894 strb.w r3, [sb, r2] | *((sb + r2)) = r3;
0x00066898 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0006689a ldrb r3, [r3] | r3 = *(r3);
0x0006689c cmp r3, 0xa6 |
| if (r3 == 0xa6) {
0x0006689e beq.w 0x66d2c | goto label_181;
| }
| label_79:
0x000668a2 vmov.i64 d16, 0 | __asm ("vmov.i64 d16, 0");
0x000668a6 movs r3, 1 | r3 = 1;
0x000668a8 ldr r1, [sp, 0x50] | r1 = var_50h;
0x000668aa mov r0, sb | r0 = sb;
0x000668ac str r2, [sp, 0x48] | var_48h = r2;
0x000668ae vstr d16, [sp, 0x70] | __asm ("vstr d16, [sp, 0x70]");
0x000668b2 bl 0xe94c | r0 = fcn_0000e94c (r0, r1, r2, r3);
0x000668b6 cmp r0, 0 |
| if (r0 <= 0) {
0x000668b8 ble.w 0x66bd4 | goto label_182;
| }
| label_65:
0x000668bc ldr r1, [sp, 0x30] | r1 = var_30h;
0x000668be ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000668c0 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000668c4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000668c6 cmp r3, 0 |
| if (r3 == 0) {
0x000668c8 beq.w 0x65694 | goto label_6;
| }
0x000668cc ldr r0, [sp, 0x20] | r0 = var_20h;
0x000668ce bl 0x1a728 | fcn_0001a728 (r0);
0x000668d2 b.w 0x65694 | goto label_6;
| label_130:
0x000668d6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000668d8 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x000668da lsls r2, r3, 8 | r2 = r3 << 8;
| if (r2 < r3) {
0x000668dc bmi.w 0x65694 | goto label_6;
| }
0x000668e0 ldrsh.w r8, [r4, 0x20] | r8 = *((r4 + 0x20));
0x000668e4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000668e6 mov r1, r8 | r1 = r8;
0x000668e8 ldr.w r0, [r3, 0xdc] | r0 = *((r3 + 0xdc));
0x000668ec bl 0x1ed1c | fcn_0001ed1c (r0, r1);
0x000668f0 str r0, [sp, 0x20] | var_20h = r0;
| if (r0 != 0) {
0x000668f2 cbz r0, 0x668fe |
0x000668f4 blx 0x7ff4 | r0 = fcn_00007ff4 ();
0x000668f8 cmp r0, 3 |
| if (r0 == 3) {
0x000668fa beq.w 0x66d0a | goto label_183;
| }
| }
0x000668fe movs r0, 0 | r0 = 0;
| label_75:
0x00066900 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00066902 cmp.w r8, 0x1f |
0x00066906 ittt le |
| if (r8 > 0x1f) {
0x00066908 movle r2, 1 | r2 = 1;
| }
| if (r8 > 0x1f) {
0x0006690a addle r8, r8, -1 | r8 += -1;
| }
| if (r8 <= 0x1f) {
0x0006690e lsl.w r2, r2, r8 | r2 <<= r8;
| }
0x00066912 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00066914 ldr.w r3, [r1, 0xd0] | r3 = *((r1 + 0xd0));
0x00066918 ite gt |
| if (r8 <= 0x1f) {
0x0006691a orrgt r3, r3, 0x80000000 | r3 |= 0x80000000;
| }
| if (r8 <= 0x1f) {
0x0006691e orrs r3, r2 | r3 |= r2;
| }
0x00066920 str.w r3, [r1, 0xd0] | __asm ("str.w r3, [r1, 0xd0]");
| if (r0 == 0) {
0x00066924 cbz r0, 0x66932 | goto label_59;
| }
0x00066926 ldrb.w sb, [r0] | sb = *(r0);
0x0006692a cmp.w sb, 0 |
| if (sb != 0) {
0x0006692e bne.w 0x65ac8 | goto label_55;
| }
| label_59:
0x00066932 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00066934 cmp r3, 0 |
| if (r3 == 0) {
0x00066936 beq.w 0x65694 | goto label_6;
| }
0x0006693a movs r4, 0 | r4 = 0;
0x0006693c str r4, [sp, 0x38] | var_38h = r4;
0x0006693e str r4, [sp, 0x30] | var_30h = r4;
| label_67:
0x00066940 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00066942 ldrh r3, [r2, 8] | r3 = *((r2 + 8));
0x00066944 and r3, r3, 0x2400 | r3 &= 0x2400;
| if (r3 == 0) {
0x00066948 cbnz r3, 0x6694e |
0x0006694a ldr r3, [r2, 0x18] | r3 = *((r2 + 0x18));
| if (r3 == 0) {
0x0006694c cbz r3, 0x66954 | goto label_184;
| }
| }
0x0006694e ldr r0, [sp, 0x20] | r0 = var_20h;
0x00066950 bl 0x15dfc | fcn_00015dfc (r0);
| label_184:
0x00066954 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00066956 ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x00066958 mov r1, r3 | r1 = r3;
0x0006695a bl 0x159dc | fcn_000159dc (r0, r1);
0x0006695e cmp r4, 0 |
| if (r4 == 0) {
0x00066960 beq.w 0x65694 | goto label_6;
| }
| label_66:
0x00066964 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00066966 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00066968 ldr r5, [r3, 0x18] | r5 = *((r3 + 0x18));
0x0006696a cmp r1, 0 |
| if (r1 == 0) {
0x0006696c beq.w 0x66c22 | goto label_185;
| }
0x00066970 movs r3, 0 | r3 = 0;
0x00066972 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00066974 mov r2, r3 | r2 = r3;
0x00066976 bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x0006697a mov r8, r0 | r8 = r0;
| label_68:
0x0006697c ldr r3, [sp, 0x54] | r3 = var_54h;
0x0006697e lsls r3, r3, 0x1c | r3 <<= 0x1c;
| if (r3 < r3) {
0x00066980 bmi.w 0x66aba | goto label_186;
| }
0x00066984 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00066986 ldr r3, [r3] | r3 = *(r3);
0x00066988 ldrb.w r2, [r3, 0x53] | r2 = *((r3 + 0x53));
| if (r2 != 0) {
0x0006698c cbnz r2, 0x669cc | goto label_187;
| }
0x0006698e ldr r0, [sp, 0x30] | r0 = var_30h;
0x00066990 ldrh r3, [r6, 0xa] | r3 = *((r6 + 0xa));
0x00066992 ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x00066994 orr r3, r3, 0x400 | r3 |= 0x400;
0x00066998 strh r3, [r6, 0xa] | *((r6 + 0xa)) = r3;
0x0006699a ldrb r6, [r1] | r6 = *(r1);
| if (r6 == 0) {
0x0006699c cbz r6, 0x669cc | goto label_187;
| }
0x0006699e ldr r4, [pc, 0x3ec] |
0x000669a0 add r4, pc | r4 = 0xcd732;
| do {
0x000669a2 add.w ip, r4, r6 |
0x000669a6 ldrb.w r3, [ip, 0x40] | r3 = *((ip + 0x40));
0x000669aa ldrb.w ip, [ip, 0x140] | ip = *((ip + 0x140));
0x000669ae and r3, r3, 0x20 | r3 &= 0x20;
0x000669b2 bic.w r3, r6, r3 | r3 = BIT_MASK (r6, r3);
0x000669b6 strb r3, [r1] | *(r1) = r3;
0x000669b8 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x000669bc strb.w ip, [r3, r2] | *((r3 + r2)) = ip;
0x000669c0 adds r2, 1 | r2++;
0x000669c2 ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x000669c4 ldrb r6, [r1, r2] | r6 = *((r1 + r2));
0x000669c6 add r1, r2 | r1 += r2;
0x000669c8 cmp r6, 0 |
0x000669ca bne 0x669a2 |
| } while (r6 != 0);
| label_187:
0x000669cc ldr r3, [sp, 0x34] | r3 = var_34h;
0x000669ce ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000669d2 cmp r3, 0 |
| if (r3 == 0) {
0x000669d4 beq.w 0x66b24 | goto label_188;
| }
0x000669d8 ldr r6, [pc, 0x3b4] |
0x000669da add r6, pc | r6 = 0xcd76e;
| label_56:
0x000669dc cmp r5, 0 |
| if (r5 == 0) {
0x000669de beq 0x66adc | goto label_189;
| }
0x000669e0 movs r3, 0 | r3 = 0;
0x000669e2 mov r1, r5 | r1 = r5;
0x000669e4 mov r2, r3 | r2 = r3;
0x000669e6 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000669e8 bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x000669ec ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x000669ee mov r1, r0 | r1 = r0;
0x000669f0 mov r2, r6 | r2 = r6;
0x000669f2 mov r0, r4 | r0 = r4;
0x000669f4 bl 0x1b130 | fcn_0001b130 (r0, r1, r2);
0x000669f8 movs r1, 0x39 | r1 = 0x39;
0x000669fa mov r2, r0 | r2 = r0;
0x000669fc ldr r3, [sp, 0x30] | r3 = var_30h;
0x000669fe mov r0, r4 | r0 = r4;
0x00066a00 bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x00066a04 mov r1, r0 | r1 = r0;
| if (r0 != 0) {
0x00066a06 cbz r0, 0x66a18 |
0x00066a08 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00066a0a and r2, r3, 1 | r2 = r3 & 1;
0x00066a0e ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00066a10 orrs r3, r2 | r3 |= r2;
0x00066a12 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00066a14 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x00066a16 str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
| }
0x00066a18 movw r2, 0x103 | r2 = 0x103;
0x00066a1c mov r0, sl | r0 = sl;
0x00066a1e bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x00066a22 mov r1, sl | r1 = sl;
0x00066a24 mov r2, r0 | r2 = r0;
0x00066a26 mov r4, r0 | r4 = r0;
0x00066a28 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00066a2a bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x00066a2e movs r3, 0 | r3 = 0;
0x00066a30 mov r1, r5 | r1 = r5;
0x00066a32 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00066a34 mov r2, r3 | r2 = r3;
0x00066a36 bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x00066a3a mov r5, r0 | r5 = r0;
| label_58:
0x00066a3c mov r1, r5 | r1 = r5;
0x00066a3e ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x00066a40 mov r2, r6 | r2 = r6;
0x00066a42 mov r0, r5 | r0 = r5;
0x00066a44 bl 0x1b130 | fcn_0001b130 (r0, r1, r2);
0x00066a48 movs r1, 0x38 | r1 = 0x38;
0x00066a4a mov r2, r0 | r2 = r0;
0x00066a4c mov r3, r8 | r3 = r8;
0x00066a4e mov r0, r5 | r0 = r5;
0x00066a50 bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x00066a54 mov r1, r0 | r1 = r0;
| if (r0 != 0) {
0x00066a56 cbz r0, 0x66a68 |
0x00066a58 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00066a5a and r2, r3, 1 | r2 = r3 & 1;
0x00066a5e ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00066a60 orrs r3, r2 | r3 |= r2;
0x00066a62 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00066a64 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x00066a66 str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
| }
0x00066a68 movw r2, 0x103 | r2 = 0x103;
0x00066a6c mov r0, sl | r0 = sl;
0x00066a6e bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x00066a72 mov r1, sl | r1 = sl;
0x00066a74 mov r2, r0 | r2 = r0;
0x00066a76 mov r5, r0 | r5 = r0;
0x00066a78 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00066a7a bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x00066a7e ldr r2, [sp, 0x14] | r2 = var_14h;
0x00066a80 ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x00066a84 adds r6, r3, r2 | r6 = r3 + r2;
0x00066a86 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00066a88 cmp r2, 0 |
| if (r2 == 0) {
0x00066a8a beq.w 0x65694 | goto label_6;
| }
0x00066a8e add.w r2, r4, r4, lsl 1 | r2 = r4 + (r4 << 1);
0x00066a92 ldrsh.w r1, [r6, 8] | r1 = *((r6 + 8));
0x00066a96 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00066a98 add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x00066a9c add.w r2, r3, r2, lsl 4 | r2 = r3 + (r2 << 4);
0x00066aa0 add.w r3, r3, r5, lsl 4 | r3 += (r5 << 4);
0x00066aa4 strh r1, [r2, 8] | *((r2 + 8)) = r1;
0x00066aa6 str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x00066aa8 ldrb r2, [r6, 0xe] | r2 = *((r6 + 0xe));
0x00066aaa ldrsh.w r1, [r6, 8] | r1 = *((r6 + 8));
0x00066aae str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x00066ab0 adds r2, 2 | r2 += 2;
0x00066ab2 strh r1, [r3, 8] | *((r3 + 8)) = r1;
0x00066ab4 strb r2, [r6, 0xe] | *((r6 + 0xe)) = r2;
0x00066ab6 b.w 0x65694 | goto label_6;
| label_186:
0x00066aba ldr r3, [sp, 0x34] | r3 = var_34h;
0x00066abc ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00066ac0 cmp r3, 0 |
| if (r3 == 0) {
0x00066ac2 beq 0x66b6c | goto label_190;
| }
0x00066ac4 ldr r3, [pc, 0x2cc] |
0x00066ac6 add r3, pc | r3 = 0xcd85e;
0x00066ac8 add.w r6, r3, 0x358 | r6 = r3 + 0x358;
0x00066acc b 0x669dc | goto label_56;
| label_143:
0x00066ace cmp.w r8, 0 |
| if (r8 == 0) {
0x00066ad2 beq.w 0x65fec | goto label_57;
| }
0x00066ad6 mov r1, r3 | r1 = r3;
0x00066ad8 b.w 0x65ea8 | goto label_41;
| label_189:
0x00066adc ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x00066ade mov r1, r5 | r1 = r5;
0x00066ae0 mov r2, r6 | r2 = r6;
0x00066ae2 mov r0, r4 | r0 = r4;
0x00066ae4 bl 0x1b130 | fcn_0001b130 (r0, r1, r2);
0x00066ae8 movs r1, 0x39 | r1 = 0x39;
0x00066aea mov r2, r0 | r2 = r0;
0x00066aec ldr r3, [sp, 0x30] | r3 = var_30h;
0x00066aee mov r0, r4 | r0 = r4;
0x00066af0 bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x00066af4 mov r1, r0 | r1 = r0;
0x00066af6 cmp r0, 0 |
| if (r0 == 0) {
0x00066af8 beq.w 0x66c48 | goto label_191;
| }
0x00066afc ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00066afe and r2, r3, 1 | r2 = r3 & 1;
0x00066b02 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00066b04 orrs r3, r2 | r3 |= r2;
0x00066b06 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00066b08 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x00066b0a str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
| label_71:
0x00066b0c movw r2, 0x103 | r2 = 0x103;
0x00066b10 mov r0, sl | r0 = sl;
0x00066b12 bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x00066b16 mov r1, sl | r1 = sl;
0x00066b18 mov r4, r0 | r4 = r0;
0x00066b1a mov r2, r0 | r2 = r0;
0x00066b1c ldr r0, [sp, 0x28] | r0 = var_28h;
0x00066b1e bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x00066b22 b 0x66a3c | goto label_58;
| label_188:
0x00066b24 ldr.w r4, [r8, 8] | r4 = *((r8 + 8));
0x00066b28 cmp r4, 0 |
| if (r4 == 0) {
0x00066b2a beq 0x66c28 | goto label_192;
| }
0x00066b2c mov r0, r4 | r0 = r4;
0x00066b2e blx 0x8160 | r0 = fcn_00008160 ();
0x00066b32 bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x00066b36 subs r3, 1 | r3--;
0x00066b38 ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x00066b3a add r3, r4 | r3 += r4;
| label_69:
0x00066b3c ldr r1, [sp, 0x38] | r1 = var_38h;
0x00066b3e cmp r2, 0x40 |
0x00066b40 it eq |
| if (r2 != 0x40) {
0x00066b42 moveq r1, 0 | r1 = 0;
| }
0x00066b44 ldr r6, [pc, 0x250] |
0x00066b46 str r1, [sp, 0x38] | var_38h = r1;
0x00066b48 ldr r1, [pc, 0x250] |
0x00066b4a add r6, pc | r6 = 0xcd8e6;
0x00066b4c add r1, pc | r1 = 0xcd8ec;
0x00066b4e add r2, r1 | r2 += r1;
0x00066b50 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x00066b54 adds r2, 1 | r2++;
0x00066b56 strb r2, [r3] | *(r3) = r2;
0x00066b58 b 0x669dc | goto label_56;
| label_132:
0x00066b5a ldr r4, [sp, 0x30] | r4 = var_30h;
0x00066b5c cmp.w r8, 0 |
| if (r8 == 0) {
0x00066b60 beq.w 0x66932 | goto label_59;
| }
0x00066b64 b 0x6680e | goto label_60;
| label_127:
0x00066b66 str r4, [sp, 0x24] | var_24h = r4;
0x00066b68 b.w 0x65a7c | goto label_61;
| label_190:
0x00066b6c ldr.w r4, [r8, 8] | r4 = *((r8 + 8));
0x00066b70 cmp r4, 0 |
| if (r4 == 0) {
0x00066b72 beq 0x66c3a | goto label_193;
| }
0x00066b74 mov r0, r4 | r0 = r4;
0x00066b76 blx 0x8160 | r0 = fcn_00008160 ();
0x00066b7a bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x00066b7e subs r3, 1 | r3--;
0x00066b80 ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x00066b82 add r3, r4 | r3 += r4;
| label_70:
0x00066b84 adds r2, 1 | r2++;
0x00066b86 strb r2, [r3] | *(r3) = r2;
0x00066b88 ldr r3, [pc, 0x214] |
0x00066b8a add r3, pc | r3 = 0xcd92e;
0x00066b8c add.w r6, r3, 0x358 | r6 = r3 + 0x358;
0x00066b90 b 0x669dc | goto label_56;
| label_159:
0x00066b92 movs r3, 0x44 | r3 = 0x44;
0x00066b94 mov r4, r5 | r4 = r5;
0x00066b96 mov r6, r2 | r6 = r2;
0x00066b98 mov r5, r8 | r5 = r8;
0x00066b9a mov sb, r7 | sb = r7;
0x00066b9c str r3, [sp, 0x18] | var_18h = r3;
0x00066b9e b.w 0x65746 | goto label_8;
| label_157:
0x00066ba2 ldrd fp, r7, [sp, 0x58] | __asm ("ldrd fp, r7, [var_58h]");
0x00066ba6 ldr.w sb, [sp, 0x54] | sb = var_54h;
0x00066baa ldr.w sl, [sp, 0x48] | sl = var_48h;
0x00066bae b.w 0x65e04 | goto label_62;
| label_169:
0x00066bb2 movs r3, 0 | r3 = 0;
0x00066bb4 movs r1, 0x31 | r1 = 0x31;
0x00066bb6 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00066bb8 mov r2, r3 | r2 = r3;
0x00066bba bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x00066bbe mov r1, r0 | r1 = r0;
0x00066bc0 cmp r0, 0 |
| if (r0 == 0) {
0x00066bc2 beq.w 0x65e14 | goto label_25;
| }
0x00066bc6 movs r6, 0 | r6 = 0;
0x00066bc8 b 0x66574 | goto label_63;
| label_180:
0x00066bca ldr r2, [sp, 0x24] | r2 = var_24h;
0x00066bcc cmp sb, r2 |
| if (sb != r2) {
0x00066bce bne.w 0x66826 | goto label_64;
| }
0x00066bd2 b 0x66932 | goto label_59;
| label_182:
0x00066bd4 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00066bd6 cmp r2, 1 |
| if (r2 != 1) {
0x00066bd8 bne.w 0x66d4a | goto label_194;
| }
0x00066bdc ldrb.w r5, [sb] | r5 = *(sb);
0x00066be0 cmp r5, 0x2d |
| if (r5 == 0x2d) {
0x00066be2 beq.w 0x668bc | goto label_65;
| }
0x00066be6 adds r3, r5, 1 | r3 = r5 + 1;
0x00066be8 str.w sb, [sp, 0x24] | __asm ("str.w sb, [var_24h]");
0x00066bec strb.w r3, [sb] | *(sb) = r3;
| label_81:
0x00066bf0 mov r0, sb | r0 = sb;
0x00066bf2 movs r3, 1 | r3 = 1;
0x00066bf4 ldr r1, [sp, 0x50] | r1 = var_50h;
0x00066bf6 mov.w r8, 0 | r8 = 0;
0x00066bfa mov.w sb, 0 | sb = 0;
0x00066bfe strd r8, sb, [sp, 0x70] | __asm ("strd r8, sb, [var_70h]");
0x00066c02 bl 0xe94c | fcn_0000e94c (r0, r1, r2, r3);
0x00066c06 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00066c08 cmp r0, 0 |
0x00066c0a strb r5, [r3] | *(r3) = r5;
| if (r0 > 0) {
0x00066c0c bgt.w 0x668bc | goto label_65;
| }
| label_80:
0x00066c10 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00066c12 cmp r3, 0x9b |
| if (r3 == 0x9b) {
0x00066c14 beq 0x66c8a | goto label_195;
| }
| label_74:
0x00066c16 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00066c18 cmp r3, 0 |
| if (r3 == 0) {
0x00066c1a beq.w 0x66964 | goto label_66;
| }
0x00066c1c add r6, sp, 0x28c | r6 = sp + 0x28c;
0x00066c1e movs r4, 1 | r4 = 1;
0x00066c20 b 0x66940 | goto label_67;
| label_185:
0x00066c22 ldr.w r8, [sp, 0x30] | r8 = var_30h;
0x00066c26 b 0x6697c | goto label_68;
| label_192:
0x00066c28 mvn r3, 0xff | r3 = ~0xff;
0x00066c2c ldrb.w r2, [r3, 0xff] | r2 = *((r3 + 0xff));
0x00066c30 mov.w r3, -1 | r3 = -1;
0x00066c34 b 0x66b3c | goto label_69;
| label_89:
0x00066c36 blx 0x7e8c | fcn_00007e8c ();
| label_193:
0x00066c3a mvn r3, 0xff | r3 = ~0xff;
0x00066c3e ldrb.w r2, [r3, 0xff] | r2 = *((r3 + 0xff));
0x00066c42 mov.w r3, -1 | r3 = -1;
0x00066c46 b 0x66b84 | goto label_70;
| label_191:
0x00066c48 mov r1, r5 | r1 = r5;
0x00066c4a b 0x66b0c | goto label_71;
| label_139:
0x00066c4c ldr.w sb, [sp, 0x54] | sb = var_54h;
0x00066c50 mov r3, sl | r3 = sl;
0x00066c52 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00066c54 ldr.w sl, [sp, 0x48] | sl = var_48h;
0x00066c58 str.w r3, [sb, 0x198] | __asm ("str.w r3, aav.0x000000ff");
0x00066c5c orrs r3, r2 | r3 |= r2;
0x00066c5e str.w fp, [sp, 0x48] | __asm ("str.w fp, [var_48h]");
0x00066c62 ldr r7, [sp, 0x5c] | r7 = var_5ch;
0x00066c64 ldr.w fp, [sp, 0x58] | fp = var_58h;
0x00066c68 str.w r2, [sb, 0x19c] | __asm ("str.w r2, aav.0x000000ff");
| if (r3 == r2) {
0x00066c6c beq.w 0x663b6 | goto label_72;
| }
0x00066c70 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00066c72 mov.w r3, 0x200 | r3 = 0x200;
0x00066c76 strh r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x00066c78 movs r3, 1 | r3 = 1;
0x00066c7a strb.w r3, [sl, 9] | *((sl + 9)) = r3;
0x00066c7e ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x00066c80 adds r0, 0xc | r0 += 0xc;
0x00066c82 cmp r3, 2 |
| if (r3 != 2) {
0x00066c84 bne.w 0x663be | goto label_48;
| }
0x00066c88 b 0x66662 | goto label_73;
| label_195:
0x00066c8a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00066c8c ldrsh.w r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x00066c90 ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x00066c92 cmp r2, 0x1f |
0x00066c94 itt le |
| if (r2 > 0x1f) {
0x00066c96 addle r2, r2, -1 | r2 += -1;
| }
| if (r2 <= 0x1f) {
0x00066c9a movs r1, 1 | r1 = 1;
| }
0x00066c9c ldr.w r3, [r5, 0xd0] | r3 = *((r5 + 0xd0));
0x00066ca0 itet le |
| if (r1 > 1) {
0x00066ca2 lslle r2, r1, r2 | r2 = r1 << r2;
| }
| if (r1 > 1) {
0x00066ca6 orrle r3, r3, 0x80000000 | r3 |= 0x80000000;
| }
| if (r1 <= 1) {
0x00066caa orrs r3, r2 | r3 |= r2;
| }
0x00066cac str.w r3, [r5, 0xd0] | __asm ("str.w r3, [r5, 0xd0]");
0x00066cb0 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00066cb2 cmp r3, 0 |
| if (r3 == 0) {
0x00066cb4 beq 0x66c16 | goto label_74;
| }
0x00066cb6 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00066cb8 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00066cba cmp r3, 0 |
| if (r3 == 0) {
0x00066cbc beq 0x66c16 | goto label_74;
| }
0x00066cbe ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00066cc0 ldrb r3, [r3, 0x13] | r3 = *((r3 + 0x13));
0x00066cc2 cmp r3, 0 |
| if (r3 == 0) {
0x00066cc4 beq 0x66d5c | goto label_196;
| }
0x00066cc6 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00066cc8 subs r3, 1 | r3--;
0x00066cca uxtb r3, r3 | r3 = (int8_t) r3;
0x00066ccc strb r3, [r2, 0x13] | *((r2 + 0x13)) = r3;
0x00066cce add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x00066cd2 ldr.w r8, [r3, 0x94] | r8 = *((r3 + 0x94));
| label_83:
0x00066cd6 mov r2, r8 | r2 = r8;
0x00066cd8 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00066cda mov r1, r4 | r1 = r4;
0x00066cdc bl 0x63a00 | fcn_00063a00 (r0, r1);
0x00066ce0 ldr r3, [r5] | r3 = *(r5);
0x00066ce2 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x00066ce4 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00066ce8 cmp r3, 0 |
| if (r3 != 0) {
0x00066cea bne 0x66d54 | goto label_197;
| }
0x00066cec ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x00066cee subs r2, 1 | r2--;
0x00066cf0 movs r1, 0x14 | r1 = 0x14;
0x00066cf2 mla r3, r1, r2, r3 | __asm ("mla r3, r1, r2, r3");
| label_82:
0x00066cf6 movs r2, 0 | r2 = 0;
0x00066cf8 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00066cfa cmp.w r8, 0 |
| if (r8 == 0) {
0x00066cfe beq 0x66c16 | goto label_74;
| }
0x00066d00 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00066d02 mov r1, r8 | r1 = r8;
0x00066d04 bl 0xf284 | fcn_0000f284 (r0, r1);
0x00066d08 b 0x66c16 | goto label_74;
| label_183:
0x00066d0a ldr r0, [sp, 0x20] | r0 = var_20h;
0x00066d0c blx 0x8508 | fcn_00008508 ();
0x00066d10 b 0x66900 | goto label_75;
| label_131:
0x00066d12 ldr r4, [sp, 0x30] | r4 = var_30h;
0x00066d14 mov r2, r8 | r2 = r8;
0x00066d16 b 0x6680a | goto label_76;
| label_156:
0x00066d18 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00066d1a ldr r3, [r3] | r3 = *(r3);
0x00066d1c ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00066d1e b.w 0x66222 | goto label_77;
| label_155:
0x00066d22 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00066d24 ldr r3, [r3] | r3 = *(r3);
0x00066d26 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x00066d28 b.w 0x66214 | goto label_78;
| label_181:
0x00066d2c ldr r0, [sp, 0x48] | r0 = var_48h;
0x00066d2e str r2, [sp, 0x58] | var_58h = r2;
0x00066d30 bl 0xc640 | r0 = fcn_0000c640 (r0);
0x00066d34 cmp r0, 0x42 |
0x00066d36 ldr r2, [sp, 0x58] | r2 = var_58h;
| if (r0 != 0x42) {
0x00066d38 bne.w 0x668a2 | goto label_79;
| }
0x00066d3c ldr r3, [sp, 0x48] | r3 = var_48h;
0x00066d3e ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x00066d40 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00066d42 cmp r3, 0 |
| if (r3 != 0) {
0x00066d44 bne.w 0x668a2 | goto label_79;
| }
0x00066d48 b 0x66c10 | goto label_80;
| label_194:
0x00066d4a ldr r1, [sp, 0x24] | r1 = var_24h;
0x00066d4c ldrb r5, [r1] | r5 = *(r1);
0x00066d4e adds r3, r5, 1 | r3 = r5 + 1;
0x00066d50 strb r3, [r1] | *(r1) = r3;
0x00066d52 b 0x66bf0 | goto label_81;
| label_197:
0x00066d54 ldr r3, [pc, 0x4c] |
0x00066d56 add r3, pc | r3 = 0xcdafe;
0x00066d58 adds r3, 4 | r3 += 4;
0x00066d5a b 0x66cf6 | goto label_82;
| label_196:
0x00066d5c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00066d5e ldr r3, [r2, 0x2c] | r3 = *((r2 + 0x2c));
0x00066d60 add.w r8, r3, 1 | r8 = r3 + 1;
0x00066d64 str.w r8, [r2, 0x2c] | __asm ("str.w r8, [r2, 0x2c]");
0x00066d68 b 0x66cd6 | goto label_83;
| label_129:
0x00066d6a movs r3, 0 | r3 = 0;
0x00066d6c ldrb r3, [r3] | r3 = *(r3);
0x00066d6e udf 0xff | __asm ("udf 0xff");
| label_121:
0x00066d70 movs r3, 0 | r3 = 0;
0x00066d72 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00066d74 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x66e28 */
| #include <stdint.h>
|
; (fcn) fcn.00066e28 () | void fcn_00066e28 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00066e28 ldr r3, [r0, 0x34] | r3 = *((r0 + 0x34));
0x00066e2a push.w {r4, r5, r6, r7, r8, lr} |
0x00066e2e mov r6, r1 | r6 = r1;
0x00066e30 ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x00066e32 sub sp, 8 |
0x00066e34 cmp r3, 0 |
0x00066e36 mov r7, r2 | r7 = r2;
| if (r3 > 0) {
0x00066e38 bgt 0x66e4c | goto label_4;
| }
0x00066e3a ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00066e3c bl 0x66da8 | fcn_00066da8 (r0, r1, r2);
0x00066e40 ldrb r3, [r6, 0xd] | r3 = *((r6 + 0xd));
0x00066e42 cmp r3, 0x41 |
| if (r3 > 0x41) {
0x00066e44 bhi 0x66eb6 | goto label_5;
| }
| do {
0x00066e46 add sp, 8 |
0x00066e48 pop.w {r4, r5, r6, r7, r8, pc} |
| label_4:
0x00066e4c subs r2, r3, 1 | r2 = r3 - 1;
0x00066e4e ldrd r8, r3, [r4, 0x6c] | __asm ("ldrd r8, r3, [r4, 0x6c]");
0x00066e52 mov r5, r0 | r5 = r0;
0x00066e54 cmp r8, r3 |
| if (r8 >= r3) {
0x00066e56 bge 0x66f1a | goto label_6;
| }
0x00066e58 add.w r3, r8, r8, lsl 2 | r3 = r8 + (r8 << 2);
0x00066e5c ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00066e5e add.w r1, r8, 1 | r1 = r8 + 1;
0x00066e62 lsls r3, r3, 2 | r3 <<= 2;
0x00066e64 str r1, [r4, 0x6c] | *((r4 + 0x6c)) = r1;
0x00066e66 mov.w ip, 0 |
0x00066e6a adds r1, r0, r3 | r1 = r0 + r3;
0x00066e6c mov.w lr, 0x15 | lr = 0x15;
0x00066e70 strd r2, ip, [r1, 4] | __asm ("strd r2, ip, [r1, 4]");
0x00066e74 strd r7, ip, [r1, 0xc] | __asm ("strd r7, ip, [r1, 0xc]");
0x00066e78 str.w lr, [r0, r3] | __asm ("str.w lr, [r0, r3]");
| label_2:
0x00066e7c ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00066e7e mov r0, r5 | r0 = r5;
0x00066e80 mov r2, r7 | r2 = r7;
0x00066e82 bl 0x66da8 | fcn_00066da8 (r0, r1, r2);
0x00066e86 ldrb r3, [r6, 0xd] | r3 = *((r6 + 0xd));
0x00066e88 cmp r3, 0x41 |
| if (r3 > 0x41) {
0x00066e8a bhi 0x66eba | goto label_7;
| }
| label_0:
0x00066e8c cmp.w r8, 0 |
0x00066e90 beq 0x66e46 |
| } while (r8 == 0);
0x00066e92 ldr r3, [r4] | r3 = *(r4);
0x00066e94 ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x00066e96 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00066e9a it lt |
| if (r8 >= 0) {
0x00066e9c addlt r8, r2, -1 | r8 = r2 + -1;
| }
0x00066ea0 cmp r3, 0 |
| if (r3 != 0) {
0x00066ea2 bne 0x66f12 | goto label_8;
| }
0x00066ea4 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00066ea6 add.w r8, r8, r8, lsl 2 | r8 += (r8 << 2);
0x00066eaa add.w r3, r3, r8, lsl 2 | r3 += (r8 << 2);
| label_1:
0x00066eae str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00066eb0 add sp, 8 |
0x00066eb2 pop.w {r4, r5, r6, r7, r8, pc} |
| label_5:
0x00066eb6 mov.w r8, 0 | r8 = 0;
| label_7:
0x00066eba ldrd r0, r3, [r4, 0x6c] | __asm ("ldrd r0, r3, [r4, 0x6c]");
0x00066ebe cmp r0, r3 |
| if (r0 >= r3) {
0x00066ec0 bge 0x66f2a | goto label_9;
| }
0x00066ec2 add.w r3, r0, r0, lsl 2 | r3 = r0 + (r0 << 2);
0x00066ec6 ldr r1, [r4, 0x68] | r1 = *((r4 + 0x68));
0x00066ec8 adds r2, r0, 1 | r2 = r0 + 1;
0x00066eca lsls r3, r3, 2 | r3 <<= 2;
0x00066ecc str r2, [r4, 0x6c] | *((r4 + 0x6c)) = r2;
0x00066ece movs r5, 0 | r5 = 0;
0x00066ed0 adds r2, r1, r3 | r2 = r1 + r3;
0x00066ed2 mov.w ip, 1 |
0x00066ed6 strd r7, ip, [r2, 4] | __asm ("strd r7, ip, [r2, 4]");
0x00066eda strd r5, r5, [r2, 0xc] | __asm ("strd r5, r5, [r2, 0xc]");
0x00066ede movs r2, 0x5c | r2 = 0x5c;
0x00066ee0 str r2, [r1, r3] | *((r1 + r3)) = r2;
| label_3:
0x00066ee2 ldr r3, [r4] | r3 = *(r4);
0x00066ee4 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00066ee8 cmp r3, 0 |
| if (r3 != 0) {
0x00066eea bne 0x66e8c | goto label_0;
| }
0x00066eec cmp r0, 0 |
0x00066eee ldr r1, [r4, 0x68] | r1 = *((r4 + 0x68));
0x00066ef0 it lt |
| if (r0 >= 0) {
0x00066ef2 ldrlt r0, [r4, 0x6c] | r0 = *((r4 + 0x6c));
| }
0x00066ef4 add.w r2, r6, 0xd | r2 = r6 + 0xd;
0x00066ef8 mov.w r3, 1 | r3 = 1;
0x00066efc it lt |
| if (r0 >= 0) {
0x00066efe addlt r0, r0, -1 | r0 += -1;
| }
0x00066f02 add.w r0, r0, r0, lsl 2 | r0 += (r0 << 2);
0x00066f06 add.w r1, r1, r0, lsl 2 | r1 += (r0 << 2);
0x00066f0a mov r0, r4 | r0 = r4;
0x00066f0c bl 0x1bdb4 | fcn_0001bdb4 (r0, r1, r2, r3);
0x00066f10 b 0x66e8c | goto label_0;
| label_8:
0x00066f12 ldr r3, [pc, 0x28] |
0x00066f14 add r3, pc | r3 = 0xcde56;
0x00066f16 adds r3, 4 | r3 += 4;
0x00066f18 b 0x66eae | goto label_1;
| label_6:
0x00066f1a movs r3, 0 | r3 = 0;
0x00066f1c movs r1, 0x15 | r1 = 0x15;
0x00066f1e mov r0, r4 | r0 = r4;
0x00066f20 str r7, [sp] | *(sp) = r7;
0x00066f22 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00066f26 mov r8, r0 | r8 = r0;
0x00066f28 b 0x66e7c | goto label_2;
| label_9:
0x00066f2a movs r3, 0 | r3 = 0;
0x00066f2c mov r2, r7 | r2 = r7;
0x00066f2e str r3, [sp] | *(sp) = r3;
0x00066f30 movs r1, 0x5c | r1 = 0x5c;
0x00066f32 movs r3, 1 | r3 = 1;
0x00066f34 mov r0, r4 | r0 = r4;
0x00066f36 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00066f3a b 0x66ee2 | 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/libsqlite3.so.0.8.6 @ 0x67188 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00067188 () | void fcn_00067188 (int16_t arg_8h, int16_t arg_34h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00067188 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006718c mov fp, r0 |
0x0006718e ldr r4, [pc, 0x1a4] |
0x00067190 sub sp, 0x2c |
0x00067192 mov sb, r2 | sb = r2;
0x00067194 mov r2, r1 | r2 = r1;
0x00067196 ldr r0, [pc, 0x1a0] | r0 = *(0x6733a);
0x00067198 add r4, pc | r4 = 0xce4d2;
0x0006719a str r1, [sp, 4] | var_4h = r1;
0x0006719c mov r1, sb | r1 = sb;
0x0006719e ldr r0, [r4, r0] |
0x000671a0 ldr r0, [r0] | r0 = *(0xce4d2);
0x000671a2 str r0, [sp, 0x24] | var_24h = r0;
0x000671a4 mov.w r0, 0 | r0 = 0;
0x000671a8 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x000671ac bl 0x2f4b4 | fcn_0002f4b4 (r0, r1, r2);
0x000671b0 ldr.w r2, [sb, 0x24] | r2 = *((sb + 0x24));
0x000671b4 lsls r1, r2, 0x19 | r1 = r2 << 0x19;
| if (r1 < r2) {
0x000671b6 bpl 0x671de |
0x000671b8 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x000671bc ldr r0, [r2] | r0 = *(r2);
0x000671be ldr r1, [r2, 0x6c] | r1 = *((r2 + 0x6c));
0x000671c0 ldrb.w r0, [r0, 0x53] | r0 = *((r0 + 0x53));
0x000671c4 cmp r0, 0 |
| if (r0 != 0) {
0x000671c6 bne.w 0x672ee | goto label_4;
| }
0x000671ca ldr r2, [r2, 0x68] | r2 = *((r2 + 0x68));
0x000671cc subs r1, 1 | r1--;
0x000671ce add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x000671d2 add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x000671d6 ldrb r1, [r2] | r1 = *(r2);
0x000671d8 cmp r1, 0x5c |
| if (r1 == 0x5c) {
0x000671da beq.w 0x672fc | goto label_5;
| }
| }
| label_3:
0x000671de ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x000671e2 cmp r2, 0 |
| if (r2 <= 0) {
0x000671e4 ble 0x67206 | goto label_6;
| }
0x000671e6 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x000671ea movs r4, 0x14 | r4 = 0x14;
0x000671ec smlabb r4, r2, r4, r1 | __asm ("smlabb r4, r2, r4, r1");
| do {
0x000671f0 ldrh r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x000671f2 adds r1, 0x14 | r1 += 0x14;
0x000671f4 tst.w r3, 0x60 |
0x000671f8 itt ne |
| if ((r3 & 0x60) == 0) {
0x000671fa orrne r3, r3, 0x80 | r3 |= 0x80;
| }
| if ((r3 & 0x60) != 0) {
0x000671fe strh r3, [r1, -0x4] | *((r1 - 0x4)) = r3;
| }
0x00067202 cmp r4, r1 |
0x00067204 bne 0x671f0 |
| } while (r4 != r1);
| label_6:
0x00067206 ldr r1, [pc, 0x134] |
0x00067208 mov sl, sb | sl = sb;
0x0006720a ldr r3, [sp, 4] | r3 = var_4h;
0x0006720c mov.w r8, 0 | r8 = 0;
0x00067210 str.w sb, [sp, 0x20] | __asm ("str.w sb, [var_20h]");
0x00067214 add r1, pc | r1 = 0xce556;
0x00067216 strd r8, r8, [sp, 0x10] | __asm ("strd r8, r8, [var_10h]");
0x0006721a str r1, [sp, 0xc] | var_ch = r1;
0x0006721c rsbs r1, r3, 0 | r1 = r3 - ;
0x0006721e str.w r1, [fp, 0x34] | __asm ("str.w r1, [arg_34h]");
| label_2:
0x00067222 cmp r2, 0 |
| if (r2 <= 0) {
0x00067224 ble 0x672ce | goto label_7;
| }
0x00067226 movs r5, 0 | r5 = 0;
0x00067228 add.w sb, sp, 8 | sb += var_8h;
0x0006722c mov r7, r5 | r7 = r5;
0x0006722e mov r6, r5 | r6 = r5;
0x00067230 str r5, [sp] | *(sp) = r5;
0x00067232 b 0x6725a | goto label_1;
| label_0:
0x00067234 mov r0, sb | r0 = sb;
0x00067236 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x00067238 invalid |
0x0006723c movs r0, 0x1c | r0 = 0x1c;
0x0006723e ldrh r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00067240 lsls r2, r2, 0x18 | r2 <<= 0x18;
0x00067242 bic r3, r3, 0x100 | r3 = BIT_MASK (r3, 0x100);
0x00067246 it mi |
| if (r2 >= r2) {
0x00067248 strmi r4, [sp] | *(sp) = r4;
| }
0x0006724a strh r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
| if (r2 >= r2) {
0x0006724c bpl 0x6727c | goto label_8;
| }
| do {
0x0006724e ldrsh.w r2, [sl, 0x2a] | r2 = *((sl + 0x2a));
0x00067252 adds r6, 1 | r6++;
0x00067254 adds r5, 0x14 | r5 += 0x14;
0x00067256 cmp r2, r6 |
| if (r2 <= r6) {
0x00067258 ble 0x672b0 | goto label_9;
| }
| label_1:
0x0006725a ldr.w r4, [sl, 4] | r4 = *((sl + 4));
0x0006725e add r4, r5 | r4 += r5;
0x00067260 ldrh r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00067262 lsls r1, r3, 0x18 | r1 = r3 << 0x18;
0x00067264 bpl 0x6724e |
| } while (r1 >= r3);
0x00067266 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00067268 orr r2, r3, 0x100 | r2 = r3 | 0x100;
0x0006726c strh r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0006726e strh.w r8, [sp, 0x1c] | var_1ch = r8;
0x00067272 cmp r1, 0 |
| if (r1 != 0) {
0x00067274 bne 0x67234 | goto label_0;
| }
0x00067276 bic r3, r3, 0x100 | r3 = BIT_MASK (r3, 0x100);
0x0006727a strh r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
| label_8:
0x0006727c ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x00067280 sxth r1, r6 | __asm ("sxth r1, r6");
0x00067282 lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 < r3) {
0x00067284 bpl 0x6728e |
0x00067286 mov r0, sl | r0 = sl;
0x00067288 bl 0xf328 | r0 = fcn_0000f328 (r0, r1);
0x0006728c mov r1, r0 | r1 = r0;
| }
0x0006728e ldr r3, [sp, 4] | r3 = var_4h;
0x00067290 mov r0, fp | r0 = fp;
0x00067292 adds r6, 1 | r6++;
0x00067294 movs r7, 1 | r7 = 1;
0x00067296 adds r5, 0x14 | r5 += 0x14;
0x00067298 adds r2, r1, r3 | r2 = r1 + r3;
0x0006729a mov r1, r4 | r1 = r4;
0x0006729c bl 0x66e28 | fcn_00066e28 (r0, r1, r2);
0x000672a0 ldrsh.w r2, [sl, 0x2a] | r2 = *((sl + 0x2a));
0x000672a4 ldrh r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000672a6 cmp r2, r6 |
0x000672a8 bic r3, r3, 0x80 | r3 = BIT_MASK (r3, 0x80);
0x000672ac strh r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
| if (r2 > r6) {
0x000672ae bgt 0x6725a | goto label_1;
| }
| label_9:
0x000672b0 ldr r3, [sp] | r3 = *(sp);
0x000672b2 cmp r3, 0 |
0x000672b4 ite eq |
| if (r3 != 0) {
0x000672b6 moveq r7, 0 | r7 = 0;
| }
| if (r3 == 0) {
0x000672b8 andne r7, r7, 1 | r7 &= 1;
| }
0x000672bc cmp r7, 0 |
| if (r7 != 0) {
0x000672be bne 0x67222 | goto label_2;
| }
| if (r3 != 0) {
0x000672c0 cbz r3, 0x672ce |
0x000672c2 ldr r1, [pc, 0x7c] |
0x000672c4 mov r0, fp | r0 = fp;
0x000672c6 ldr r2, [r3] | r2 = *(r3);
0x000672c8 add r1, pc | r1 = 0xce60e;
0x000672ca bl 0x25778 | fcn_00025778 (r0);
| }
| label_7:
0x000672ce movs r3, 0 | r3 = 0;
0x000672d0 ldr r2, [pc, 0x70] |
0x000672d2 str.w r3, [fp, 0x34] | __asm ("str.w r3, [arg_34h]");
0x000672d6 ldr r3, [pc, 0x60] | r3 = *(0x6733a);
0x000672d8 add r2, pc | r2 = 0xce620;
0x000672da ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000672dc ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000672de ldr r3, [sp, 0x24] | r3 = var_24h;
0x000672e0 eors r2, r3 | r2 ^= r3;
0x000672e2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000672e6 bne 0x6732e | goto label_10;
| }
0x000672e8 add sp, 0x2c |
0x000672ea pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x000672ee ldr r2, [pc, 0x58] |
0x000672f0 add r2, pc | r2 = 0xce63e;
0x000672f2 ldrb r1, [r2, 4] | r1 = *((r2 + 4));
0x000672f4 adds r2, 4 | r2 += 4;
0x000672f6 cmp r1, 0x5c |
| if (r1 != 0x5c) {
0x000672f8 bne.w 0x671de | goto label_3;
| }
| label_5:
0x000672fc ldr r4, [r2, 0x10] | r4 = *((r2 + 0x10));
0x000672fe ldrb r2, [r4] | r2 = *(r4);
0x00067300 cmp r2, 0 |
| if (r2 == 0) {
0x00067302 beq.w 0x671de | goto label_3;
| }
0x00067306 movs r0, 0 | r0 = 0;
0x00067308 mov r5, r4 | r5 = r4;
0x0006730a mov r1, r0 | r1 = r0;
0x0006730c movs r6, 0x40 | r6 = 0x40;
| do {
0x0006730e ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00067312 add r3, r0 | r3 += r0;
0x00067314 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00067316 lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 >= r3) {
0x00067318 bmi 0x67322 |
0x0006731a adds r1, 1 | r1++;
0x0006731c lsls r7, r3, 0x19 | r7 = r3 << 0x19;
0x0006731e it mi |
| if (r7 < r3) {
0x00067320 strbmi r6, [r5] | *(r5) = r6;
| goto label_11;
| }
| }
| label_11:
0x00067322 ldrb r3, [r4, r1] | r3 = *((r4 + r1));
0x00067324 adds r5, r4, r1 | r5 = r4 + r1;
0x00067326 adds r0, 0x14 | r0 += 0x14;
0x00067328 cmp r3, 0 |
0x0006732a bne 0x6730e |
| } while (r3 != 0);
0x0006732c b 0x671de | goto label_3;
| label_10:
0x0006732e blx 0x7e8c | fcn_00007e8c ();
0x00067332 nop |
0x00067334 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00067336 movs r6, r0 | r6 = r0;
0x00067338 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0006733a movs r0, r0 |
0x0006733c adr r1, 0x14 | r1 = 0x14;
0x0006733e vtbl.8 d23, {d10, d11, d12}, d0 | __asm ("vtbl.8 d23, {d10, d11, d12}, d0");
0x00067342 movs r4, r0 | r4 = r0;
0x00067344 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00067346 movs r6, r0 | r6 = r0;
0x00067348 ldrh r4, [r2, 0xc] | r4 = *((r2 + 0xc));
0x0006734a movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x67420 */
| #include <stdint.h>
|
; (fcn) fcn.00067420 () | void fcn_00067420 (int16_t arg_4h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_8h_2;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00067420 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00067424 mov r7, r2 | r7 = r2;
0x00067426 ldr r2, [pc, 0x1f0] |
0x00067428 sub sp, 0x14 |
0x0006742a ldr r3, [pc, 0x1f0] | r3 = *(0x6761e);
0x0006742c add r2, pc | r2 = 0xcea4a;
0x0006742e ldr r6, [r1, 8] | r6 = *((r1 + 8));
0x00067430 ldr r3, [r2, r3] |
0x00067432 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00067434 str r3, [sp, 0xc] | var_ch = r3;
0x00067436 mov.w r3, 0 | r3 = 0;
0x0006743a cmp r6, 0 |
| if (r6 != 0) {
0x0006743c bne 0x67524 | goto label_3;
| }
0x0006743e ldr.w sb, [r1, 0x3c] | sb = *((r1 + 0x3c));
0x00067442 mov r5, r1 | r5 = r1;
0x00067444 cmp.w sb, 0 |
| if (sb == 0) {
0x00067448 beq 0x67524 | goto label_3;
| }
0x0006744a ldr r6, [r0, 0x2c] | r6 = *((r0 + 0x2c));
0x0006744c mov r4, r0 | r4 = r0;
0x0006744e ldr.w r8, [r0, 8] | r8 = *((r0 + 8));
0x00067452 adds r6, 1 | r6++;
0x00067454 str r6, [r0, 0x2c] | *((r0 + 0x2c)) = r6;
0x00067456 str r6, [r1, 8] | *((r1 + 8)) = r6;
0x00067458 cmp.w r8, 0 |
0x0006745c beq 0x6753e |
| while (1) {
0x0006745e ldr.w fp, [sb, 0xc] | fp = *((sb + 0xc));
0x00067462 add r1, sp, 8 | r1 += var_8h_2;
0x00067464 mov r0, fp | r0 = fp;
0x00067466 bl 0x9c04 | r0 = fcn_00009c04 (r0, r1);
0x0006746a mov sl, r0 | sl = r0;
0x0006746c cmp r0, 0 |
| if (r0 != 0) {
0x0006746e bne 0x6755a | goto label_4;
| }
0x00067470 ldr r3, [r4, 8] | r3 = *((r4 + 8));
| if (r3 != 0) {
0x00067472 cbz r3, 0x6749e |
0x00067474 mov r2, r6 | r2 = r6;
0x00067476 mov r1, fp | r1 = fp;
0x00067478 mov r0, r4 | r0 = r4;
0x0006747a bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0006747e cmp r6, r0 |
0x00067480 mov r2, r0 | r2 = r0;
| if (r6 == r0) {
0x00067482 beq 0x6749e | goto label_5;
| }
0x00067484 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00067488 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0006748c ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0006748e tst.w r3, 0x200000 |
0x00067492 mov r3, r6 | r3 = r6;
0x00067494 ite ne |
| if ((r3 & 0x200000) == 0) {
0x00067496 movne r1, 0x4d | r1 = 0x4d;
| }
| if ((r3 & 0x200000) != 0) {
0x00067498 moveq r1, 0x4e | r1 = 0x4e;
| }
0x0006749a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
| label_5:
0x0006749e mov.w sl, 0 | sl = 0;
0x000674a2 mov r2, r6 | r2 = r6;
0x000674a4 mov r3, sl | r3 = sl;
0x000674a6 movs r1, 0xf | r1 = 0xf;
0x000674a8 mov r0, r8 | r0 = r8;
0x000674aa str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x000674ae bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000674b2 mov r3, r7 | r3 = r7;
0x000674b4 mov r2, r6 | r2 = r6;
0x000674b6 movs r1, 0x14 | r1 = 0x14;
0x000674b8 mov r0, r8 | r0 = r8;
0x000674ba str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x000674be bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_1:
0x000674c2 ldr.w sb, [sb, 0x10] | sb = *((sb + 0x10));
0x000674c6 cmp.w sb, 0 |
| if (sb != 0) {
0x000674ca beq 0x67524 |
0x000674cc ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x000674ce ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000674d0 adds r7, r3, 1 | r7 = r3 + 1;
0x000674d2 str r7, [r5, 0xc] | *((r5 + 0xc)) = r7;
0x000674d4 adds r5, r3, 2 | r5 = r3 + 2;
0x000674d6 str r5, [r4, 0x2c] | *((r4 + 0x2c)) = r5;
| if (r2 != 0) {
0x000674d8 cbz r2, 0x67508 |
0x000674da mov r2, r7 | r2 = r7;
0x000674dc mov r1, sb | r1 = sb;
0x000674de mov r0, r4 | r0 = r4;
0x000674e0 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x000674e4 cmp r7, r0 |
0x000674e6 mov r2, r0 | r2 = r0;
| if (r7 == r0) {
0x000674e8 beq 0x67508 | goto label_6;
| }
0x000674ea ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x000674ee ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000674f0 tst.w r3, 0x200000 |
0x000674f4 mov.w r3, 0 | r3 = 0;
0x000674f8 str r3, [sp] | *(sp) = r3;
0x000674fa it ne |
| if ((r3 & 0x200000) == 0) {
0x000674fc movne r1, 0x4d | r1 = 0x4d;
| }
0x000674fe mov r3, r7 | r3 = r7;
0x00067500 it eq |
| if ((r3 & 0x200000) != 0) {
0x00067502 moveq r1, 0x4e | r1 = 0x4e;
| }
0x00067504 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
| label_6:
0x00067508 movs r3, 0 | r3 = 0;
0x0006750a mov r2, r7 | r2 = r7;
0x0006750c movs r1, 0xf | r1 = 0xf;
0x0006750e str r3, [sp] | *(sp) = r3;
0x00067510 mov r0, r8 | r0 = r8;
0x00067512 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00067516 mov r3, r5 | r3 = r5;
0x00067518 mov r2, r6 | r2 = r6;
0x0006751a movs r1, 0x9c | r1 = 0x9c;
0x0006751c mov r0, r8 | r0 = r8;
0x0006751e str r7, [sp] | *(sp) = r7;
0x00067520 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
| label_3:
0x00067524 ldr r2, [pc, 0xf8] |
0x00067526 ldr r3, [pc, 0xf4] | r3 = *(0x6761e);
0x00067528 add r2, pc | r2 = 0xceb4c;
0x0006752a ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0006752c ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0006752e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00067530 eors r2, r3 | r2 ^= r3;
0x00067532 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00067536 bne 0x67612 | goto label_7;
| }
0x00067538 add sp, 0x14 |
0x0006753a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006753e ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
| if (r3 == 0) {
0x00067540 cbz r3, 0x6754c | goto label_8;
| }
| label_0:
0x00067542 mov r0, r4 | r0 = r4;
0x00067544 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00067548 mov r8, r0 | r8 = r0;
0x0006754a b 0x6745e |
| }
| label_8:
0x0006754c ldr r3, [r0] | r3 = *(r0);
0x0006754e ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00067550 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x00067552 itt pl |
| if (r3 < r3) {
0x00067554 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x00067556 strbpl r3, [r0, 0x17] | *((r0 + 0x17)) = r3;
| }
0x00067558 b 0x67542 | goto label_0;
| label_4:
0x0006755a ldr.w fp, [sp, 8] | fp = var_8h_2;
0x0006755e mov.w sl, 0 | sl = 0;
0x00067562 mov r3, r6 | r3 = r6;
0x00067564 movs r1, 0x45 | r1 = 0x45;
0x00067566 mov r0, r8 | r0 = r8;
0x00067568 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0006756c mov r2, fp | r2 = fp;
0x0006756e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00067572 cmp fp, sl |
| if (fp == sl) {
0x00067574 beq 0x675d4 | goto label_9;
| }
| if (fp < sl) {
0x00067576 blt 0x674c2 | goto label_1;
| }
0x00067578 mov r3, fp | r3 = fp;
0x0006757a asr.w r7, fp, 0x1f | r7 = fp >> 0x1f;
0x0006757e cmp r3, 7 |
0x00067580 ldrsh.w r1, [r5, 2] | r1 = *((r5 + 2));
0x00067584 mov ip, r7 |
| if (r3 > 7) {
0x00067586 bgt 0x675de | goto label_10;
| }
0x00067588 cmp r3, 1 |
| if (r3 == 1) {
0x0006758a beq 0x675c0 | goto label_11;
| }
0x0006758c movs r0, 0x1e | r0 = 0x1e;
| do {
0x0006758e adds r3, r3, r3 | r3 += r3;
0x00067590 sub.w r7, r0, 0xa | r7 = r0 - 0xa;
0x00067594 adc.w r2, ip, ip | __asm ("adc.w r2, ip, ip");
0x00067598 cmp r3, 8 |
0x0006759a mov ip, r2 |
0x0006759c mov r2, r0 | r2 = r0;
0x0006759e uxth r0, r7 | r0 = (int16_t) r7;
0x000675a0 sbcs r7, ip, 0 | __asm ("sbcs r7, ip, 0");
0x000675a4 blo 0x6758e |
| } while (r3 <= 8);
| label_2:
0x000675a6 sub.w sl, r2, 0xa | sl = r2 - 0xa;
0x000675aa ldr r2, [pc, 0x78] |
0x000675ac and r3, r3, 7 | r3 &= 7;
0x000675b0 add r2, pc | r2 = 0xcebda;
0x000675b2 add.w r3, r2, r3, lsl 1 | r3 = r2 + (r3 << 1);
0x000675b6 ldrh.w r3, [r3, 0x78] | r3 = *((r3 + 0x78));
0x000675ba add sl, r3 | sl += r3;
0x000675bc sxth.w sl, sl | __asm ("sxth.w sl, sl");
| label_11:
0x000675c0 cmp r1, sl |
| if (r1 <= sl) {
0x000675c2 ble.w 0x674c2 | goto label_1;
| }
0x000675c6 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000675c8 strh.w sl, [r5, 2] | *((r5 + 2)) = sl;
0x000675cc orr r3, r3, 0x4000 | r3 |= 0x4000;
0x000675d0 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x000675d2 b 0x674c2 | goto label_1;
| label_9:
0x000675d4 mov r1, r7 | r1 = r7;
0x000675d6 mov r0, r8 | r0 = r8;
0x000675d8 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x000675dc b 0x674c2 | goto label_1;
| label_10:
0x000675de clz r0, r7 | r0 &= r7;
| if (r7 == 0) {
0x000675e2 cbnz r7, 0x675ea |
0x000675e4 clz r0, fp | r0 &= fp;
0x000675e8 adds r0, 0x20 | r0 += 0x20;
| }
0x000675ea rsb.w r0, r0, 0x3c | r0 = 0x3c - r0;
0x000675ee add.w r2, r0, r0, lsl 2 | r2 = r0 + (r0 << 2);
0x000675f2 rsb.w ip, r0, 0x20 |
0x000675f6 lsr.w r3, fp, r0 | r3 = fp >> r0;
0x000675fa lsl.w ip, r7, ip |
0x000675fe lsls r2, r2, 1 | r2 <<= 1;
0x00067600 subs r0, 0x20 | r0 -= 0x20;
0x00067602 lsr.w r0, r7, r0 | r0 = r7 >> r0;
0x00067606 adds r2, 0x28 | r2 += 0x28;
0x00067608 orr.w r3, r3, ip | r3 |= ip;
0x0006760c uxth r2, r2 | r2 = (int16_t) r2;
0x0006760e orrs r3, r0 | r3 |= r0;
0x00067610 b 0x675a6 | goto label_2;
| label_7:
0x00067612 blx 0x7e8c | fcn_00007e8c ();
0x00067616 nop |
0x00067618 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0006761a movs r6, r0 | r6 = r0;
0x0006761c lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0006761e movs r0, r0 |
0x00067620 str r0, [r5, 0x74] | *((r5 + 0x74)) = r0;
0x00067622 movs r6, r0 | r6 = r0;
0x00067624 lsrs r4, r4, 0x19 | r4 >>= 0x19;
0x00067626 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x67628 */
| #include <stdint.h>
|
; (fcn) fcn.00067628 () | void fcn_00067628 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_68h;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_14h_2;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| if (? >= ?) {
0x00067628 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x0006762c mov r5, r2 | r5 = r2;
0x0006762e ldr r2, [pc, 0x16c] |
0x00067630 sub sp, 0x88 |
0x00067632 mov r4, r0 | r4 = r0;
0x00067634 ldr r3, [pc, 0x168] | r3 = *(0x677a0);
0x00067636 add r2, pc | r2 = 0xcedd8;
0x00067638 ldr r6, [r0, 8] | r6 = *((r0 + 8));
0x0006763a str r1, [sp, 0xc] | var_ch_2 = r1;
0x0006763c ldr r3, [r2, r3] |
0x0006763e ldr r3, [r3] | r3 = *(0xcedd8);
0x00067640 str r3, [sp, 0x84] | var_84h = r3;
0x00067642 mov.w r3, 0 | r3 = 0;
0x00067646 cmp r6, 0 |
| if (r6 == 0) {
0x00067648 beq 0x67730 | goto label_7;
| }
| label_3:
0x0006764a ldr.w r8, [r4, 0x24] | r8 = *((r4 + 0x24));
0x0006764e cmp.w r8, 0 |
| if (r8 == 0) {
0x00067652 bne 0x67674 |
0x00067654 ldr r2, [sp, 0xc] | r2 = var_ch_2;
| if (r2 == 0) {
0x00067656 cbz r2, 0x67694 | goto label_8;
| }
0x00067658 add r3, sp, 0xc | r3 += var_ch_2;
0x0006765a mov r1, r2 | r1 = r2;
0x0006765c mov r0, r4 | r0 = r4;
0x0006765e bl 0x25870 | r0 = fcn_00025870 (r0, r1, r2, r3);
0x00067662 subs r3, r0, 1 | r3 = r0 - 1;
0x00067664 mov r7, r0 | r7 = r0;
0x00067666 it ne |
| if (r3 == r0) {
0x00067668 movne r3, 1 | r3 = 1;
| }
0x0006766a cmp r0, 0 |
0x0006766c it lt |
| if (r0 >= 0) {
0x0006766e movlt r3, 0 | r3 = 0;
| }
0x00067670 cmp r3, 0 |
| if (r3 != 0) {
0x00067672 bne 0x67746 | goto label_9;
| }
| }
| label_0:
0x00067674 cmp r5, 0 |
0x00067676 bne 0x676ea |
| while (1) {
| label_1:
0x00067678 ldr r2, [pc, 0x128] |
0x0006767a ldr r3, [pc, 0x124] | r3 = *(0x677a2);
0x0006767c add r2, pc | r2 = 0xcee24;
0x0006767e ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00067680 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00067682 ldr r3, [sp, 0x84] | r3 = var_84h;
0x00067684 eors r2, r3 | r2 ^= r3;
0x00067686 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006768a bne.w 0x67798 | goto label_10;
| }
0x0006768e add sp, 0x88 |
0x00067690 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_8:
0x00067694 mov r7, r8 | r7 = r8;
0x00067696 mov.w sb, 1 | sb = 1;
| if (r5 == 0) {
| label_4:
0x0006769a cbz r5, 0x676f4 | goto label_11;
| }
0x0006769c add r3, sp, 0x30 | r3 += var_30h;
0x0006769e movs r1, 0 | r1 = 0;
0x000676a0 movs r2, 0x50 | r2 = 0x50;
0x000676a2 mov r0, r3 | r0 = r3;
0x000676a4 strd r1, r1, [sp, 0x18] | __asm ("strd r1, r1, [sp, 0x18]");
0x000676a8 strd r1, r1, [sp, 0x20] | __asm ("strd r1, r1, [sp, 0x20]");
0x000676ac str r1, [sp, 0x2c] | var_2ch = r1;
0x000676ae blx 0x8264 | fcn_00008264 ();
0x000676b2 mov.w r3, 0x10000 | r3 = 0x10000;
0x000676b6 str r0, [sp, 0x14] | var_14h_2 = r0;
0x000676b8 mov r1, r5 | r1 = r5;
0x000676ba add r0, sp, 0x10 | r0 += var_10h_2;
0x000676bc str r4, [sp, 0x10] | var_10h_2 = r4;
0x000676be str r3, [sp, 0x28] | var_28h = r3;
0x000676c0 bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x000676c4 mov sl, r0 | sl = r0;
0x000676c6 cmp r0, 0 |
| if (r0 == 0) {
0x000676c8 beq 0x67750 | goto label_12;
| }
| label_5:
0x000676ca movs r2, 0 | r2 = 0;
0x000676cc mov r3, r8 | r3 = r8;
0x000676ce str r2, [sp] | *(sp) = r2;
0x000676d0 movs r1, 8 | r1 = 8;
0x000676d2 mov r2, r7 | r2 = r7;
0x000676d4 mov r0, r6 | r0 = r6;
0x000676d6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000676da ldr.w r3, [r6, 0x98] | r3 = *((r6 + 0x98));
0x000676de cmp r7, 1 |
0x000676e0 orr.w r3, r3, sb | r3 |= sb;
0x000676e4 str.w r3, [r6, 0x98] | __asm ("str.w r3, [r6, 0x98]");
| if (r7 != 1) {
0x000676e8 bne 0x6770e | goto label_13;
| }
| label_2:
0x000676ea ldr r0, [r4] | r0 = *(r4);
0x000676ec mov r1, r5 | r1 = r5;
0x000676ee bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000676f2 b 0x67678 |
| }
| label_11:
0x000676f4 mov r3, r5 | r3 = r5;
0x000676f6 mov r2, r7 | r2 = r7;
0x000676f8 movs r1, 8 | r1 = 8;
0x000676fa mov r0, r6 | r0 = r6;
0x000676fc str r5, [sp] | *(sp) = r5;
0x000676fe bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00067702 ldr.w r3, [r6, 0x98] | r3 = *((r6 + 0x98));
0x00067706 orr.w r3, r3, sb | r3 |= sb;
0x0006770a str.w r3, [r6, 0x98] | __asm ("str.w r3, [r6, 0x98]");
| label_13:
0x0006770e ldr r3, [r6] | r3 = *(r6);
0x00067710 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00067712 add.w r3, r3, r7, lsl 4 | r3 += (r7 << 4);
0x00067716 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00067718 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
0x0006771a cmp r3, 0 |
| if (r3 == 0) {
0x0006771c beq 0x67674 | goto label_0;
| }
0x0006771e ldr.w r3, [r6, 0x9c] | r3 = *((r6 + 0x9c));
0x00067722 orr.w r3, r3, sb | r3 |= sb;
0x00067726 str.w r3, [r6, 0x9c] | __asm ("str.w r3, [r6, 0x9c]");
0x0006772a cmp r5, 0 |
| if (r5 == 0) {
0x0006772c beq 0x67678 | goto label_1;
| }
0x0006772e b 0x676ea | goto label_2;
| label_7:
0x00067730 ldr r3, [r0, 0x74] | r3 = *(var_68hx74);
| if (r3 == 0) {
0x00067732 cbz r3, 0x6778a | goto label_14;
| }
| label_6:
0x00067734 mov r0, r4 | r0 = r4;
0x00067736 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0006773a mov r6, r0 | r6 = r0;
0x0006773c cmp r0, 0 |
| if (r0 != 0) {
0x0006773e bne 0x6764a | goto label_3;
| }
0x00067740 cmp r5, 0 |
| if (r5 == 0) {
0x00067742 beq 0x67678 | goto label_1;
| }
0x00067744 b 0x676ea | goto label_2;
| label_9:
0x00067746 mov.w sb, 1 | sb = 1;
0x0006774a lsl.w sb, sb, r0 | sb <<= r0;
0x0006774e b 0x6769a | goto label_4;
| label_12:
0x00067750 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00067752 add.w r8, r3, 1 | r8 = r3 + 1;
0x00067756 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00067758 str.w r8, [r4, 0x2c] | __asm ("str.w r8, [r4, 0x2c]");
0x0006775c cmp r3, 0 |
| if (r3 == 0) {
0x0006775e beq 0x676ca | goto label_5;
| }
0x00067760 mov r2, r8 | r2 = r8;
0x00067762 mov r1, r5 | r1 = r5;
0x00067764 mov r0, r4 | r0 = r4;
0x00067766 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0006776a cmp r8, r0 |
| if (r8 == r0) {
0x0006776c beq 0x676ca | goto label_5;
| }
0x0006776e str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00067772 mov r2, r0 | r2 = r0;
0x00067774 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00067776 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00067778 tst.w r3, 0x200000 |
0x0006777c mov r3, r8 | r3 = r8;
0x0006777e ite ne |
| if ((r3 & 0x200000) == 0) {
0x00067780 movne r1, 0x4d | r1 = 0x4d;
| }
| if ((r3 & 0x200000) != 0) {
0x00067782 moveq r1, 0x4e | r1 = 0x4e;
| }
0x00067784 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00067788 b 0x676ca | goto label_5;
| label_14:
0x0006778a ldr r3, [r0] | r3 = *(r0);
0x0006778c ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0006778e lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x00067790 itt pl |
| if (r3 < r3) {
0x00067792 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x00067794 strbpl r3, [r0, 0x17] | *(var_68hx17) = r3;
| }
0x00067796 b 0x67734 | goto label_6;
| label_10:
0x00067798 blx 0x7e8c | fcn_00007e8c ();
0x0006779c str r2, [r3, 0x64] | *((r3 + 0x64)) = r2;
0x0006779e movs r6, r0 | r6 = r0;
0x000677a0 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000677a2 movs r0, r0 |
0x000677a4 str r4, [r2, 0x60] | *((r2 + 0x60)) = r4;
0x000677a6 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x677a8 */
| #include <stdint.h>
|
; (fcn) fcn.000677a8 () | void fcn_000677a8 (int16_t arg_1h, int16_t arg_2h, int16_t arg_3h, int16_t arg_4h, int16_t arg_8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_3ch;
| int16_t var_68h;
| int16_t var_6ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000677a8 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000677ac mov r8, r2 | r8 = r2;
0x000677ae ldr r2, [pc, 0x23c] |
0x000677b0 mov fp, r3 |
0x000677b2 sub sp, 0x44 |
0x000677b4 ldr r3, [pc, 0x238] | r3 = *(0x679f0);
0x000677b6 add r2, pc | r2 = 0xcf1a8;
0x000677b8 ldr r5, [sp, 0x68] | r5 = var_68h;
0x000677ba ldrd r6, sb, [sp, 0x6c] | __asm ("ldrd r6, sb, [var_6ch]");
0x000677be ldr r3, [r2, r3] |
0x000677c0 ldr r2, [r0, 0x24] | r2 = *(var_0hx24);
0x000677c2 ldr.w sl, [r0] | sl = *(r0);
0x000677c6 ldr r3, [r3] | r3 = *(0xcf1a8);
0x000677c8 str r3, [sp, 0x3c] | var_3ch = r3;
0x000677ca mov.w r3, 0 | r3 = 0;
| if (r2 == 0) {
0x000677ce cbz r2, 0x67806 | goto label_7;
| }
| if (r5 != 0) {
| label_3:
0x000677d0 cbnz r5, 0x67838 | goto label_2;
| }
| label_4:
0x000677d2 cbz r6, 0x677dc |
| while (r6 != 0) {
| label_1:
0x000677d4 mov r1, r6 | r1 = r6;
0x000677d6 mov r0, sl | r0 = sl;
0x000677d8 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| label_0:
0x000677dc cmp.w sb, 0 |
| if (sb != 0) {
0x000677e0 beq 0x677ea |
0x000677e2 mov r1, sb | r1 = sb;
0x000677e4 mov r0, sl | r0 = sl;
0x000677e6 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x000677ea ldr r2, [pc, 0x208] |
0x000677ec ldr r3, [pc, 0x200] | r3 = *(0x679f0);
0x000677ee add r2, pc | r2 = 0xcf1e8;
0x000677f0 ldr r3, [r2, r3] | r3 = *(0xcf1e8);
0x000677f2 ldr r2, [r3] | r2 = *(0xcf1e8);
0x000677f4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000677f6 eors r2, r3 | r2 ^= r3;
0x000677f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000677fc bne.w 0x679e6 | goto label_8;
| }
0x00067800 add sp, 0x44 |
0x00067802 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00067804 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_7:
0x00067806 mov r4, r0 | r4 = r0;
0x00067808 mov r7, r1 | r7 = r1;
0x0006780a add r3, sp, 0x1c | r3 += var_1ch;
0x0006780c strd r0, r2, [sp, 0x1c] | __asm ("strd r0, r2, [sp, 0x1c]");
0x00067810 strd r2, r2, [sp, 0x24] | __asm ("strd r2, r2, [sp, 0x24]");
0x00067814 strd r2, r2, [sp, 0x2c] | __asm ("strd r2, r2, [sp, 0x2c]");
0x00067818 strd r2, r2, [sp, 0x34] | __asm ("strd r2, r2, [sp, 0x34]");
| if (r5 == 0) {
0x0006781c cbz r5, 0x67846 | goto label_9;
| }
0x0006781e ldrb r2, [r5] | r2 = *(r5);
0x00067820 cmp r2, 0x3b |
0x00067822 itt eq |
| if (r2 != 0x3b) {
0x00067824 moveq r2, 0x74 | r2 = 0x74;
| }
| if (r2 != 0x3b) {
0x00067826 strbeq r2, [r5] | *(r5) = r2;
| }
| if (r2 == 0x3b) {
0x00067828 beq 0x67846 | goto label_9;
| }
0x0006782a mov r0, r3 | r0 = r3;
0x0006782c mov r1, r5 | r1 = r5;
0x0006782e str r3, [sp, 0x10] | var_10h = r3;
0x00067830 bl 0x3040c | fcn_0003040c (r0, r1, r2);
0x00067834 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r0 == 0) {
0x00067836 cbz r0, 0x67846 | goto label_9;
| }
| label_2:
0x00067838 mov r1, r5 | r1 = r5;
0x0006783a mov r0, sl | r0 = sl;
0x0006783c bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x00067840 cmp r6, 0 |
0x00067842 bne 0x677d4 |
| }
0x00067844 b 0x677dc | goto label_0;
| if (r6 == 0) {
| label_9:
0x00067846 cbz r6, 0x67868 | goto label_10;
| }
0x00067848 ldrb r2, [r6] | r2 = *(r6);
0x0006784a cmp r2, 0x3b |
0x0006784c itt eq |
| if (r2 != 0x3b) {
0x0006784e moveq r2, 0x74 | r2 = 0x74;
| }
| if (r2 != 0x3b) {
0x00067850 strbeq r2, [r6] | *(r6) = r2;
| }
| if (r2 == 0x3b) {
0x00067852 beq 0x67868 | goto label_10;
| }
0x00067854 mov r0, r3 | r0 = r3;
0x00067856 mov r1, r6 | r1 = r6;
0x00067858 str r3, [sp, 0x10] | var_10h = r3;
0x0006785a bl 0x3040c | fcn_0003040c (r0, r1, r2);
0x0006785e ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r0 == 0) {
0x00067860 cbz r0, 0x67868 | goto label_10;
| }
0x00067862 cmp r5, 0 |
| if (r5 == 0) {
0x00067864 beq 0x677d4 | goto label_1;
| }
0x00067866 b 0x67838 | goto label_2;
| label_10:
0x00067868 cmp.w sb, 0 |
| if (sb != 0) {
0x0006786c beq 0x67880 |
0x0006786e ldrb.w r2, [sb] | r2 = *(sb);
0x00067872 cmp r2, 0x3b |
0x00067874 itt eq |
| if (r2 != 0x3b) {
0x00067876 moveq r3, 0x74 | r3 = 0x74;
| }
| if (r2 != 0x3b) {
0x00067878 strbeq r3, [sb] | *(sb) = r3;
| }
| if (r2 != 0x3b) {
0x0006787c bne.w 0x679b2 | goto label_11;
| }
| }
| label_5:
0x00067880 cmp.w fp, 0 |
| if (fp == 0) {
0x00067884 beq 0x678a6 | goto label_12;
| }
0x00067886 ldrb.w r3, [fp] | r3 = *(fp);
0x0006788a mov r1, r7 | r1 = r7;
0x0006788c mov r0, r4 | r0 = r4;
0x0006788e cmp r3, 0x74 |
0x00067890 mov.w r3, 0 | r3 = 0;
0x00067894 ite eq |
| if (r3 != 0x74) {
0x00067896 ldreq r2, [fp, 8] | r2 = *(arg_8h);
| }
| if (r3 != 0x74) {
0x0006789a movs r2, 0 | r2 = 0;
| }
0x0006789c str r3, [sp] | *(sp) = r3;
0x0006789e bl 0x25800 | r0 = fcn_00025800 (r0);
0x000678a2 cmp r0, 0 |
| if (r0 != 0) {
0x000678a4 bne 0x677d0 | goto label_3;
| }
| label_12:
0x000678a6 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000678a8 str r3, [sp, 0x10] | var_10h = r3;
0x000678aa cmp r3, 0 |
| if (r3 == 0) {
0x000678ac beq.w 0x679c8 | goto label_13;
| }
0x000678b0 ldr r2, [sp, 0x10] | r2 = var_10h;
| label_6:
0x000678b2 ldrd r3, fp, [r4, 0x1c] | __asm ("ldrd r3, fp, [r4, 0x1c]");
0x000678b6 cmp r3, 3 |
0x000678b8 iteee le |
| if (r3 > 3) {
0x000678ba ldrle r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
| }
| if (r3 <= 3) {
0x000678bc subgt r3, 4 | r3 -= 4;
| }
| if (r3 <= 3) {
0x000678be strgt r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| }
| if (r3 <= 3) {
0x000678c0 addgt r3, fp, 4 | r3 += arg_4h;
| }
0x000678c4 iteee gt |
| if (r3 <= 3) {
0x000678c6 strgt r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
| }
| if (r3 > 3) {
0x000678c8 addle fp, r3, 1 |
| }
| if (r3 > 3) {
0x000678cc addle r3, 4 | r3 += 4;
| }
| if (r3 <= 3) {
0x000678ce str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
| }
0x000678d0 cmp r2, 0 |
| if (r2 != 0) {
0x000678d2 beq 0x67970 |
0x000678d4 mov r2, fp | r2 = fp;
0x000678d6 mov r1, r5 | r1 = r5;
0x000678d8 mov r0, r4 | r0 = r4;
0x000678da bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x000678de cmp fp, r0 |
0x000678e0 mov r2, r0 | r2 = r0;
| if (fp != r0) {
0x000678e2 beq 0x67900 |
0x000678e4 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000678e6 tst.w r3, 0x200000 |
0x000678ea mov.w r3, 0 | r3 = 0;
0x000678ee str r3, [sp] | *(sp) = r3;
0x000678f0 it ne |
| if ((r3 & 0x200000) == 0) {
0x000678f2 movne r1, 0x4d | r1 = 0x4d;
| }
0x000678f4 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000678f6 mov r3, fp | r3 = fp;
0x000678f8 it eq |
| if ((r3 & 0x200000) != 0) {
0x000678fa moveq r1, 0x4e | r1 = 0x4e;
| }
0x000678fc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x00067900 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00067902 add.w r3, fp, 1 | r3 += arg_1h;
0x00067906 cmp r2, 0 |
| if (r2 == 0) {
0x00067908 beq 0x67970 | goto label_14;
| }
0x0006790a mov r2, r3 | r2 = r3;
0x0006790c mov r1, r6 | r1 = r6;
0x0006790e mov r0, r4 | r0 = r4;
0x00067910 str r3, [sp, 0x14] | var_14h = r3;
0x00067912 bl 0x63a00 | fcn_00063a00 (r0, r1);
0x00067916 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00067918 mov r2, r0 | r2 = r0;
0x0006791a cmp r3, r0 |
| if (r3 != r0) {
0x0006791c beq 0x67938 |
0x0006791e ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00067920 tst.w r1, 0x200000 |
0x00067924 mov.w r1, 0 | r1 = 0;
0x00067928 str r1, [sp] | *(sp) = r1;
0x0006792a it ne |
| if ((r1 & 0x200000) == 0) {
0x0006792c movne r1, 0x4d | r1 = 0x4d;
| }
0x0006792e ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00067930 it eq |
| if ((r1 & 0x200000) != 0) {
0x00067932 moveq r1, 0x4e | r1 = 0x4e;
| }
0x00067934 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x00067938 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0006793a add.w r3, fp, 2 | r3 += arg_2h;
0x0006793c lsls r2, r0, 0xc | r2 = r0 << 0xc;
| if (r2 == 0) {
0x0006793e cbz r2, 0x67970 | goto label_14;
| }
0x00067940 mov r2, r3 | r2 = r3;
0x00067942 mov r1, sb | r1 = sb;
0x00067944 mov r0, r4 | r0 = r4;
0x00067946 str r3, [sp, 0x14] | var_14h = r3;
0x00067948 bl 0x63a00 | fcn_00063a00 (r0, r1);
0x0006794c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006794e mov r2, r0 | r2 = r0;
0x00067950 cmp r3, r0 |
| if (r3 == r0) {
0x00067952 beq 0x67970 | goto label_14;
| }
0x00067954 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x00067958 tst.w r1, 0x200000 |
0x0006795c mov.w r1, 0 | r1 = 0;
0x00067960 str r1, [sp] | *(sp) = r1;
0x00067962 it ne |
| if ((r1 & 0x200000) == 0) {
0x00067964 movne r1, 0x4d | r1 = 0x4d;
| }
0x00067966 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00067968 it eq |
| if ((r1 & 0x200000) != 0) {
0x0006796a moveq r1, 0x4e | r1 = 0x4e;
| }
0x0006796c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
| label_14:
0x00067970 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00067972 cmp r3, 0 |
| if (r3 == 0) {
0x00067974 beq.w 0x677d0 | goto label_3;
| }
0x00067978 str.w r8, [sp, 4] | __asm ("str.w r8, [arg_4h]");
0x0006797c add.w r3, fp, 3 | r3 += arg_3h;
0x00067980 ldrsb.w r2, [r8] | r2 = *(r8);
0x00067984 mov r0, r4 | r0 = r4;
0x00067986 movs r4, 0 | r4 = 0;
0x00067988 mov r1, r4 | r1 = r4;
0x0006798a str r4, [sp, 8] | *(arg_8h) = r4;
0x0006798c str r2, [sp] | *(sp) = r2;
0x0006798e subs r2, r3, r2 | r2 = r3 - r2;
0x00067990 bl 0x2bfcc | fcn_0002bfcc (r0, r1, r2, r3, r4, r5, r6);
0x00067994 sub.w r2, r7, 0x18 | r2 = r7 - 0x18;
0x00067998 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006799a clz r2, r2 | r2 &= r2;
0x0006799e mov r3, r4 | r3 = r4;
0x000679a0 lsrs r2, r2, 5 | r2 >>= 5;
0x000679a2 movs r1, 0xa2 | r1 = 0xa2;
0x000679a4 str r4, [sp] | *(sp) = r4;
0x000679a6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000679aa cmp r5, 0 |
| if (r5 == 0) {
0x000679ac beq.w 0x677d2 | goto label_4;
| }
0x000679b0 b 0x67838 | goto label_2;
| label_11:
0x000679b2 mov r0, r3 | r0 = r3;
0x000679b4 mov r1, sb | r1 = sb;
0x000679b6 bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x000679ba cmp r0, 0 |
| if (r0 == 0) {
0x000679bc beq.w 0x67880 | goto label_5;
| }
0x000679c0 cmp r5, 0 |
| if (r5 == 0) {
0x000679c2 beq.w 0x677d2 | goto label_4;
| }
0x000679c6 b 0x67838 | goto label_2;
| label_13:
0x000679c8 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x000679ca cbz r3, 0x679d8 |
| while (1) {
0x000679cc mov r0, r4 | r0 = r4;
0x000679ce bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x000679d2 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000679d4 str r0, [sp, 0x10] | var_10h = r0;
0x000679d6 b 0x678b2 | goto label_6;
0x000679d8 ldr r3, [r4] | r3 = *(r4);
0x000679da ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000679dc lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x000679de itt pl |
| if (r3 < r3) {
0x000679e0 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x000679e2 strbpl r3, [r4, 0x17] | *((r4 + 0x17)) = r3;
| }
0x000679e4 b 0x679cc |
| }
| label_8:
0x000679e6 blx 0x7e8c | fcn_00007e8c ();
0x000679ea nop |
0x000679ec str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x000679ee movs r6, r0 | r6 = r0;
0x000679f0 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000679f2 movs r0, r0 |
0x000679f4 str r2, [r4, 0x48] | *((r4 + 0x48)) = r2;
0x000679f6 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x679f8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000679f8 () | void fcn_000679f8 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| if (? >= ?) {
0x000679f8 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x000679fc lsr.w sl, r2, 0x1f | sl = r2 >> 0x1f;
0x00067a00 ldr.w sb, [r0, 0x44] | sb = *((r0 + 0x44));
0x00067a04 sub sp, 8 |
0x00067a06 mov r8, r0 | r8 = r0;
0x00067a08 mov r7, r2 | r7 = r2;
0x00067a0a mov r6, r1 | r6 = r1;
0x00067a0c subs.w r3, sb, 0 | r3 = sb - 0;
0x00067a10 it ne |
| if (r3 == sb) {
0x00067a12 movne r3, 1 | r3 = 1;
| }
0x00067a14 ands.w r3, r3, r2, lsr 31 | r3 &= (r2 >> 31);
| if (r3 == r3) {
0x00067a18 beq 0x67a24 | goto label_5;
| }
0x00067a1a mov r4, sb | r4 = sb;
0x00067a1c ldr r5, [r4], 8 | r5 = *(r4);
| r4 += 8;
0x00067a20 cmp r5, 0 |
| if (r5 > 0) {
0x00067a22 bgt 0x67aac | goto label_6;
| }
| do {
| label_5:
0x00067a24 ldr.w r0, [r8] | r0 = *(r8);
0x00067a28 cmp r6, 0 |
| if (r6 == 0) {
0x00067a2a beq 0x67ac2 | goto label_7;
| }
0x00067a2c movs r3, 0 | r3 = 0;
0x00067a2e mov r1, r6 | r1 = r6;
0x00067a30 mov r2, r3 | r2 = r3;
0x00067a32 bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x00067a36 mov r4, r0 | r4 = r0;
0x00067a38 cmp r0, 0 |
| if (r0 == 0) {
0x00067a3a beq 0x67ac2 | goto label_7;
| }
0x00067a3c ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00067a3e lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 < r3) {
0x00067a40 bmi 0x67ac6 | goto label_8;
| }
| label_2:
0x00067a42 mov r2, r4 | r2 = r4;
0x00067a44 mov r1, sb | r1 = sb;
0x00067a46 mov r0, r8 | r0 = r8;
0x00067a48 mov r5, r7 | r5 = r7;
0x00067a4a bl 0x1c2ac | r0 = fcn_0001c2ac (r0, r1, r2);
| if (r0 != 0) {
0x00067a4e cbz r0, 0x67a7c |
0x00067a50 ldr r3, [r0] | r3 = *(r0);
0x00067a52 cmp r7, 0 |
0x00067a54 it lt |
| if (r7 >= 0) {
0x00067a56 ldrlt r7, [r8, 0x2c] | r7 = *((r8 + 0x2c));
| }
0x00067a5a add.w r2, r3, -1 | r2 = r3 + -1;
0x00067a5e add.w r3, r0, r3, lsl 4 | r3 = r0 + (r3 << 4);
0x00067a62 it lt |
| if (r7 >= 0) {
0x00067a64 addlt r7, 1 | r7++;
| }
0x00067a66 mov r5, r7 | r5 = r7;
0x00067a68 ldrb r1, [r3, 1] | r1 = *((r3 + 1));
0x00067a6a bfi r1, sl, 3, 1 | value_0 = BIT_MASK (3, 1);
| value_1 = sl & value_0;
| value_0 = ~value_0;
| r1 &= value_0;
| r1 |= value_1;
0x00067a6e strb r1, [r3, 1] | *((r3 + 1)) = r1;
0x00067a70 add.w r3, r0, r2, lsl 4 | r3 = r0 + (r2 << 4);
0x00067a74 it lt |
| if (r7 >= 0) {
0x00067a76 strlt r7, [r8, 0x2c] | *((r8 + 0x2c)) = r7;
| }
0x00067a7a str r7, [r3, 0x14] | *((r3 + 0x14)) = r7;
| }
0x00067a7c str.w r0, [r8, 0x44] | __asm ("str.w r0, [r8, 0x44]");
0x00067a80 mov r0, r5 | r0 = r5;
0x00067a82 add sp, 8 |
0x00067a84 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_1:
0x00067a88 ldr r1, [r4] | r1 = *(r4);
0x00067a8a mov.w r3, -1 | r3 = -1;
0x00067a8e mov r2, r6 | r2 = r6;
0x00067a90 cmp r6, 0 |
0x00067a92 it ne |
| if (r6 != 0) {
0x00067a94 cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
0x00067a96 ite eq |
| if (r6 != 0) {
0x00067a98 moveq r0, 1 | r0 = 1;
| }
| if (r6 == 0) {
0x00067a9a movne r0, 0 | r0 = 0;
| }
| if (r6 == 0) {
0x00067a9c beq 0x67ab4 | goto label_9;
| }
0x00067a9e bl 0x35ca8 | r0 = fcn_00035ca8 (r0, r1, r2, r3);
| if (r0 == 0) {
0x00067aa2 cbz r0, 0x67ab8 | goto label_10;
| }
| label_0:
0x00067aa4 subs r5, 1 | r5--;
0x00067aa6 add.w r4, r4, 0x10 | r4 += 0x10;
0x00067aaa beq 0x67a24 |
| } while (r5 == 1);
| label_6:
0x00067aac ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00067aae lsls r2, r3, 0x1c | r2 = r3 << 0x1c;
| if (r2 >= r3) {
0x00067ab0 bpl 0x67aa4 | goto label_0;
| }
0x00067ab2 b 0x67a88 | goto label_1;
| label_9:
0x00067ab4 cmp r1, r6 |
| if (r1 != r6) {
0x00067ab6 bne 0x67aa4 | goto label_0;
| }
| label_10:
0x00067ab8 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00067aba mov r0, r5 | r0 = r5;
0x00067abc add sp, 8 |
0x00067abe pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_7:
0x00067ac2 movs r4, 0 | r4 = 0;
0x00067ac4 b 0x67a42 | goto label_2;
| label_8:
0x00067ac6 ldr.w sb, [r8, 8] | sb = *((r8 + 8));
0x00067aca ldrd r6, r3, [sb, 0x6c] | __asm ("ldrd r6, r3, [sb, 0x6c]");
0x00067ace cmp r6, r3 |
| if (r6 >= r3) {
0x00067ad0 bge 0x67b92 | goto label_11;
| }
0x00067ad2 add.w r1, r6, r6, lsl 2 | r1 = r6 + (r6 << 2);
0x00067ad6 ldr.w r3, [sb, 0x68] | r3 = *((sb + 0x68));
0x00067ada adds r0, r6, 1 | r0 = r6 + 1;
0x00067adc lsls r1, r1, 2 | r1 <<= 2;
0x00067ade str.w r0, [sb, 0x6c] | __asm ("str.w r0, [sb, 0x6c]");
0x00067ae2 movs r0, 0x11 | r0 = 0x11;
0x00067ae4 str r0, [r3, r1] | *((r3 + r1)) = r0;
0x00067ae6 movs r2, 0 | r2 = 0;
0x00067ae8 add r3, r1 | r3 += r1;
0x00067aea strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x00067aee strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_4:
0x00067af2 ldr.w r0, [r8] | r0 = *(r8);
0x00067af6 movs r3, 0 | r3 = 0;
0x00067af8 strb.w r3, [r8, 0x17] | *((r8 + 0x17)) = r3;
0x00067afc ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x00067b00 cmp r3, 0 |
| if (r3 != 0) {
0x00067b02 bne 0x67b86 | goto label_12;
| }
0x00067b04 cmp r7, 0 |
0x00067b06 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x00067b0a ittt lt |
| if (r7 >= 0) {
0x00067b0c ldrlt r7, [r8, 0x2c] | r7 = *((r8 + 0x2c));
| }
| if (r7 >= 0) {
0x00067b10 addlt r7, 1 | r7++;
| }
| if (r7 < 0) {
0x00067b12 str.w r7, [r8, 0x2c] | __asm ("str.w r7, [r8, 0x2c]");
| }
| if (r3 == 0) {
0x00067b16 cbz r3, 0x67b86 | goto label_12;
| }
0x00067b18 mov r2, r7 | r2 = r7;
0x00067b1a mov r1, r4 | r1 = r4;
0x00067b1c mov r0, r8 | r0 = r8;
0x00067b1e bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x00067b22 cmp r7, r0 |
0x00067b24 mov r5, r0 | r5 = r0;
| if (r7 != r0) {
0x00067b26 beq 0x67b4a |
0x00067b28 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00067b2a mov r2, r0 | r2 = r0;
0x00067b2c mov r5, r7 | r5 = r7;
0x00067b2e tst.w r3, 0x200000 |
0x00067b32 mov.w r3, 0 | r3 = 0;
0x00067b36 str r3, [sp] | *(sp) = r3;
0x00067b38 it ne |
| if ((r3 & 0x200000) == 0) {
0x00067b3a movne r1, 0x4d | r1 = 0x4d;
| }
0x00067b3c ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00067b40 mov r3, r7 | r3 = r7;
0x00067b42 it eq |
| if ((r3 & 0x200000) != 0) {
0x00067b44 moveq r1, 0x4e | r1 = 0x4e;
| }
0x00067b46 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x00067b4a ldr.w r0, [r8] | r0 = *(r8);
| do {
0x00067b4e movs r3, 1 | r3 = 1;
0x00067b50 mov r1, r4 | r1 = r4;
0x00067b52 strb.w r3, [r8, 0x17] | *((r8 + 0x17)) = r3;
0x00067b56 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x00067b5a ldr.w r3, [sb] | r3 = *(sb);
0x00067b5e cmp r6, 0 |
0x00067b60 ldr.w r2, [sb, 0x6c] | r2 = *((sb + 0x6c));
0x00067b64 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00067b68 it lt |
| if (r6 >= 0) {
0x00067b6a addlt r6, r2, -1 | r6 = r2 + -1;
| }
| if (r3 != 0) {
0x00067b6e cbnz r3, 0x67b8a | goto label_13;
| }
0x00067b70 ldr.w r3, [sb, 0x68] | r3 = *((sb + 0x68));
0x00067b74 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x00067b78 add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
| label_3:
0x00067b7c mov r0, r5 | r0 = r5;
0x00067b7e str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00067b80 add sp, 8 |
0x00067b82 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_12:
0x00067b86 mov r5, r7 | r5 = r7;
0x00067b88 b 0x67b4e |
| } while (1);
| label_13:
0x00067b8a ldr r3, [pc, 0x18] |
0x00067b8c add r3, pc | r3 = 0xcf736;
0x00067b8e adds r3, 4 | r3 += 4;
0x00067b90 b 0x67b7c | goto label_3;
| label_11:
0x00067b92 movs r3, 0 | r3 = 0;
0x00067b94 movs r1, 0x11 | r1 = 0x11;
0x00067b96 mov r2, r3 | r2 = r3;
0x00067b98 mov r0, sb | r0 = sb;
0x00067b9a str r3, [sp] | *(sp) = r3;
0x00067b9c bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00067ba0 mov r6, r0 | r6 = r0;
0x00067ba2 b 0x67af2 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x67c4c */
| #include <stdint.h>
|
; (fcn) fcn.00067c4c () | void fcn_00067c4c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00067c4c push {r4, r5, r6, lr} |
0x00067c4e mov r6, r2 | r6 = r2;
0x00067c50 ldr r2, [pc, 0xdc] |
0x00067c52 sub sp, 0x28 |
0x00067c54 mov r5, r0 | r5 = r0;
0x00067c56 ldr r3, [pc, 0xdc] | r3 = *(0x67d36);
0x00067c58 add r2, pc | r2 = 0xcf98c;
0x00067c5a ldr r3, [r2, r3] |
0x00067c5c ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00067c5e str r3, [sp, 0x24] | var_24h = r3;
0x00067c60 mov.w r3, 0 | r3 = 0;
| if (r1 != 0) {
0x00067c64 cbnz r1, 0x67c74 | goto label_2;
| }
0x00067c66 b 0x67c86 | goto label_1;
| do {
0x00067c68 lsls r3, r3, 0xd | r3 <<= 0xd;
0x00067c6a itet mi |
| if (r3 >= r3) {
0x00067c6c ldrmi r3, [r1, 0x14] | r3 = *((r1 + 0x14));
| }
| if (r3 < r3) {
0x00067c6e ldrpl r1, [r1, 0xc] | r1 = *((r1 + 0xc));
| }
| if (r3 >= r3) {
0x00067c70 ldrmi r1, [r3, 8] | r1 = *((r3 + 8));
| }
| if (r1 == 0) {
0x00067c72 cbz r1, 0x67c86 | goto label_1;
| }
| label_2:
0x00067c74 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00067c76 ands r4, r3, 0x41000 | r4 = r3 & 0x41000;
0x00067c7a bne 0x67c68 |
| } while (r4 != r3);
0x00067c7c ldrb r3, [r5, 0x17] | r3 = *((r5 + 0x17));
| if (r3 != 0) {
0x00067c7e cbz r3, 0x67c86 |
0x00067c80 ldrb r3, [r1] | r3 = *(r1);
0x00067c82 cmp r3, 0xaf |
| if (r3 != 0xaf) {
0x00067c84 bne 0x67ce2 | goto label_3;
| }
| }
| label_1:
0x00067c86 ldrb r3, [r5, 0x13] | r3 = *((r5 + 0x13));
| if (r3 == 0) {
0x00067c88 cbz r3, 0x67cda | goto label_4;
| }
0x00067c8a subs r3, 1 | r3--;
0x00067c8c uxtb r3, r3 | r3 = (int8_t) r3;
0x00067c8e add.w r2, r5, r3, lsl 2 | r2 = r5 + (r3 << 2);
0x00067c92 strb r3, [r5, 0x13] | *((r5 + 0x13)) = r3;
0x00067c94 ldr.w r4, [r2, 0x94] | r4 = *((r2 + 0x94));
| label_0:
0x00067c98 mov r2, r4 | r2 = r4;
0x00067c9a mov r0, r5 | r0 = r5;
0x00067c9c bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x00067ca0 cmp r0, r4 |
0x00067ca2 it eq |
| if (r0 != r4) {
0x00067ca4 streq r4, [r6] | *(r6) = r4;
| }
| if (r0 == r4) {
0x00067ca6 beq 0x67cae | goto label_5;
| }
0x00067ca8 cbnz r4, 0x67cc6 |
| while (1) {
0x00067caa movs r3, 0 | r3 = 0;
0x00067cac str r3, [r6] | *(r6) = r3;
| label_5:
0x00067cae ldr r2, [pc, 0x88] |
0x00067cb0 ldr r3, [pc, 0x80] | r3 = *(0x67d34);
0x00067cb2 add r2, pc | r2 = 0xcf9f0;
0x00067cb4 ldr r3, [r2, r3] | r3 = *(0xcf9f0);
0x00067cb6 ldr r2, [r3] | r2 = *(0xcf9f0);
0x00067cb8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00067cba eors r2, r3 | r2 ^= r3;
0x00067cbc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00067cc0 bne 0x67d2c | goto label_6;
| }
0x00067cc2 add sp, 0x28 |
0x00067cc4 pop {r4, r5, r6, pc} |
0x00067cc6 ldrb r3, [r5, 0x13] | r3 = *((r5 + 0x13));
0x00067cc8 cmp r3, 7 |
0x00067cca itttt ls |
| if (r3 > 7) {
0x00067ccc addls r2, r5, r3, lsl 2 | r2 = r5 + (r3 << 2);
| }
| if (r3 > 7) {
0x00067cd0 addls r3, 1 | r3++;
| }
| if (r3 > 7) {
0x00067cd2 strbls r3, [r5, 0x13] | *((r5 + 0x13)) = r3;
| }
| if (r3 <= 7) {
0x00067cd4 str.w r4, [r2, 0x94] | __asm ("str.w r4, [r2, 0x94]");
| }
0x00067cd8 b 0x67caa |
| }
| label_4:
0x00067cda ldr r4, [r5, 0x2c] | r4 = *((r5 + 0x2c));
0x00067cdc adds r4, 1 | r4++;
0x00067cde str r4, [r5, 0x2c] | *((r5 + 0x2c)) = r4;
0x00067ce0 b 0x67c98 | goto label_0;
| label_3:
0x00067ce2 movs r3, 2 | r3 = 2;
0x00067ce4 add r0, sp, 8 | r0 += var_8h;
0x00067ce6 strh.w r3, [sp, 0x1c] | var_1ch = r3;
0x00067cea ldr r3, [pc, 0x50] |
0x00067cec str r1, [sp, 4] | var_4h = r1;
0x00067cee str r4, [sp, 0x20] | var_20h = r4;
0x00067cf0 add r3, pc | r3 = 0xcfa32;
0x00067cf2 str r3, [sp, 0xc] | var_ch = r3;
0x00067cf4 ldr r3, [pc, 0x48] |
0x00067cf6 add r3, pc | r3 = 0xcfa3a;
0x00067cf8 str r3, [sp, 0x10] | var_10h = r3;
0x00067cfa bl 0x301c4 | fcn_000301c4 (r0, r1);
0x00067cfe ldrh.w r3, [sp, 0x1c] | r3 = var_1ch;
0x00067d02 ldr r1, [sp, 4] | r1 = var_4h;
0x00067d04 cmp r3, 0 |
| if (r3 == 0) {
0x00067d06 beq 0x67c86 | goto label_1;
| }
0x00067d08 ldr r2, [pc, 0x38] |
0x00067d0a ldr r3, [pc, 0x28] | r3 = *(0x67d36);
0x00067d0c str r4, [r6] | *(r6) = r4;
0x00067d0e add r2, pc | r2 = 0xcfa56;
0x00067d10 ldr r3, [r2, r3] | r3 = *(0xcfa56);
0x00067d12 ldr r2, [r3] | r2 = *(0xcfa56);
0x00067d14 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00067d16 eors r2, r3 | r2 ^= r3;
0x00067d18 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00067d1c bne 0x67d2c |
0x00067d1e mov.w r2, -1 | r2 = -1;
0x00067d22 mov r0, r5 | r0 = r5;
0x00067d24 add sp, 0x28 |
0x00067d26 pop.w {r4, r5, r6, lr} |
0x00067d2a b 0x679f8 | void (*0x679f8)() ();
| }
| label_6:
0x00067d2c blx 0x7e8c | fcn_00007e8c ();
0x00067d30 str r0, [r7] | *(r7) = r0;
0x00067d32 movs r6, r0 | r6 = r0;
0x00067d34 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00067d36 movs r0, r0 |
0x00067d38 ldrsh r6, [r3, r7] | r6 = *((r3 + r7));
0x00067d3a movs r6, r0 | r6 = r0;
0x00067d3c ldrb r5, [r0, 0x1f] | r5 = *((r0 + 0x1f));
0x00067d3e invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x67dc0 */
| #include <stdint.h>
|
; (fcn) fcn.00067dc0 () | void fcn_00067dc0 (int16_t arg_68h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_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_34h;
| int16_t var_38h;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00067dc0 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00067dc4 sub sp, 0x44 |
0x00067dc6 str r2, [sp, 0xc] | var_ch = r2;
0x00067dc8 mov sb, r0 | sb = r0;
0x00067dca ldr r2, [pc, 0x160] |
0x00067dcc str r3, [sp, 0x1c] | var_1ch = r3;
0x00067dce ldr r3, [pc, 0x160] | r3 = *(0x67f32);
0x00067dd0 add r2, pc | r2 = 0xcfd02;
0x00067dd2 ldrb.w r6, [sp, 0x68] | r6 = *(arg_68h);
0x00067dd6 ldr.w sl, [r0, 8] | sl = *((r0 + 8));
0x00067dda ldr r3, [r2, r3] |
0x00067ddc and r8, r6, 1 | r8 = r6 & 1;
0x00067de0 ldr r7, [r1] | r7 = *(r1);
0x00067de2 rsb.w r8, r8, 0x4e | r8 = 0x4e - r8;
0x00067de6 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00067de8 str r3, [sp, 0x3c] | var_3ch = r3;
0x00067dea mov.w r3, 0 | r3 = 0;
0x00067dee ldrb r3, [r0, 0x17] | r3 = *((r0 + 0x17));
0x00067df0 uxtb.w r8, r8 | r8 = (int8_t) r8;
| if (r3 == 0) {
0x00067df4 cbnz r3, 0x67dfa |
0x00067df6 and r6, r6, 0xfd | r6 &= 0xfd;
| }
0x00067dfa cmp r7, 0 |
| if (r7 <= 0) {
0x00067dfc ble 0x67ebc | goto label_3;
| }
0x00067dfe ldr r3, [pc, 0x134] |
0x00067e00 add.w r4, r1, 0x18 | r4 = r1 + 0x18;
0x00067e04 movs r5, 0 | r5 = 0;
0x00067e06 add r3, pc | r3 = 0xcfd40;
0x00067e08 adds r3, 4 | r3 += 4;
0x00067e0a str r3, [sp, 0x18] | var_18h = r3;
0x00067e0c ldr r3, [pc, 0x128] |
0x00067e0e add r3, pc | r3 = 0xcfd4a;
0x00067e10 str r3, [sp, 0x14] | var_14h = r3;
0x00067e12 and r3, r6, 4 | r3 = r6 & 4;
0x00067e16 str r3, [sp, 8] | var_8h = r3;
0x00067e18 b 0x67e34 |
| while (r3 != 0) {
0x00067e1a ldrh r2, [r4, -0x4] | r2 = *((r4 - 0x4));
| if (r2 == 0) {
0x00067e1e cbz r2, 0x67e3e | goto label_4;
| }
0x00067e20 ands r3, r6, 8 | r3 = r6 & 8;
0x00067e24 it ne |
| if (r3 == r6) {
0x00067e26 addne r7, r7, -1 | r7 += -1;
| }
| if (r3 == r6) {
0x00067e2a beq 0x67f0e | goto label_5;
| }
| label_0:
0x00067e2c cmp r7, r5 |
0x00067e2e add.w r4, r4, 0x10 | r4 += 0x10;
| if (r7 <= r5) {
0x00067e32 ble 0x67ebc | goto label_3;
| }
| label_1:
0x00067e34 ldr r3, [sp, 8] | r3 = var_8h;
0x00067e36 ldr r1, [r4, -0x10] | r1 = *((r4 - 0x10));
0x00067e3a cmp r3, 0 |
0x00067e3c bne 0x67e1a |
| }
| label_4:
0x00067e3e lsls r3, r6, 0x1e | r3 = r6 << 0x1e;
| if (r3 < r6) {
0x00067e40 bpl 0x67e6a |
0x00067e42 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00067e44 str r3, [sp, 0x24] | var_24h = r3;
0x00067e46 ldr r3, [pc, 0xf4] |
0x00067e48 add r3, pc | r3 = 0xcfd8a;
0x00067e4a str r3, [sp, 0x28] | var_28h = r3;
0x00067e4c movs r3, 2 | r3 = 2;
0x00067e4e strh.w r3, [sp, 0x34] | var_34h = r3;
0x00067e52 movs r3, 0 | r3 = 0;
0x00067e54 str r3, [sp, 0x38] | var_38h = r3;
0x00067e56 cmp r1, 0 |
| if (r1 == 0) {
0x00067e58 beq 0x67ed6 | goto label_6;
| }
0x00067e5a add r0, sp, 0x20 | r0 += var_20h;
0x00067e5c str r1, [sp, 0x10] | var_10h = r1;
0x00067e5e bl 0x301c4 | fcn_000301c4 (r0, r1);
0x00067e62 ldrh.w r3, [sp, 0x34] | r3 = var_34h;
0x00067e66 ldr r1, [sp, 0x10] | r1 = var_10h;
| if (r3 != 0) {
0x00067e68 cbnz r3, 0x67ed6 | goto label_6;
| }
| }
0x00067e6a ldr r3, [sp, 0xc] | r3 = var_ch;
0x00067e6c mov r0, sb | r0 = sb;
0x00067e6e add.w fp, r3, r5 |
0x00067e72 adds r5, 1 | r5++;
0x00067e74 mov r2, fp | r2 = fp;
0x00067e76 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x00067e7a cmp fp, r0 |
0x00067e7c mov r2, r0 | r2 = r0;
| if (fp == r0) {
0x00067e7e beq 0x67e2c | goto label_0;
| }
0x00067e80 cmp.w r8, 0x4d |
| if (r8 == 0x4d) {
0x00067e84 bne 0x67ea8 |
0x00067e86 ldr.w r1, [sl] | r1 = *(sl);
0x00067e8a ldrb.w r0, [r1, 0x53] | r0 = *((r1 + 0x53));
0x00067e8e ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
| if (r0 != 0) {
0x00067e92 cbnz r0, 0x67ee4 | goto label_7;
| }
0x00067e94 ldr.w r0, [sl, 0x68] | r0 = *((sl + 0x68));
0x00067e98 subs r1, 1 | r1--;
0x00067e9a add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x00067e9e add.w r1, r0, r1, lsl 2 | r1 = r0 + (r1 << 2);
0x00067ea2 ldrb r0, [r1] | r0 = *(r1);
0x00067ea4 cmp r0, 0x4d |
| if (r0 == 0x4d) {
0x00067ea6 beq 0x67eec | goto label_8;
| }
| }
| label_2:
0x00067ea8 movs r1, 0 | r1 = 0;
0x00067eaa mov r3, fp | r3 = fp;
0x00067eac str r1, [sp] | *(sp) = r1;
0x00067eae mov r0, sl | r0 = sl;
0x00067eb0 mov r1, r8 | r1 = r8;
0x00067eb2 adds r4, 0x10 | r4 += 0x10;
0x00067eb4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00067eb8 cmp r7, r5 |
| if (r7 > r5) {
0x00067eba bgt 0x67e34 | goto label_1;
| }
| label_3:
0x00067ebc ldr r2, [pc, 0x80] |
0x00067ebe ldr r3, [pc, 0x70] | r3 = *(0x67f32);
0x00067ec0 add r2, pc | r2 = 0xcfe04;
0x00067ec2 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00067ec4 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00067ec6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00067ec8 eors r2, r3 | r2 ^= r3;
0x00067eca mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00067ece bne 0x67f26 | goto label_9;
| }
0x00067ed0 add sp, 0x44 |
0x00067ed2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x00067ed6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00067ed8 mov r0, sb | r0 = sb;
0x00067eda adds r2, r3, r5 | r2 = r3 + r5;
0x00067edc adds r5, 1 | r5++;
0x00067ede bl 0x679f8 | fcn_000679f8 (r0, r1, r2);
0x00067ee2 b 0x67e2c | goto label_0;
| label_7:
0x00067ee4 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00067ee6 ldrb r0, [r1] | r0 = *(r1);
0x00067ee8 cmp r0, 0x4d |
| if (r0 != 0x4d) {
0x00067eea bne 0x67ea8 | goto label_2;
| }
| label_8:
0x00067eec ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x00067eee ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00067ef0 add r0, r3 | r0 += r3;
0x00067ef2 adds r0, 1 | r0++;
0x00067ef4 cmp r2, r0 |
| if (r2 != r0) {
0x00067ef6 bne 0x67ea8 | goto label_2;
| }
0x00067ef8 ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x00067efa add r0, r3 | r0 += r3;
0x00067efc adds r0, 1 | r0++;
0x00067efe cmp fp, r0 |
| if (fp != r0) {
0x00067f00 bne 0x67ea8 | goto label_2;
| }
0x00067f02 ldrh r0, [r1, 2] | r0 = *((r1 + 2));
0x00067f04 cmp r0, 0 |
| if (r0 != 0) {
0x00067f06 bne 0x67ea8 | goto label_2;
| }
0x00067f08 adds r3, 1 | r3++;
0x00067f0a str r3, [r1, 0xc] | *((r1 + 0xc)) = r3;
0x00067f0c b 0x67e2c | goto label_0;
| label_5:
0x00067f0e str r3, [sp] | *(sp) = r3;
0x00067f10 mov r1, r8 | r1 = r8;
0x00067f12 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00067f14 mov r0, sl | r0 = sl;
0x00067f16 add r2, r3 | r2 += r3;
0x00067f18 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00067f1a subs r2, 1 | r2--;
0x00067f1c add r3, r5 | r3 += r5;
0x00067f1e adds r5, 1 | r5++;
0x00067f20 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00067f24 b 0x67e2c | goto label_0;
| label_9:
0x00067f26 blx 0x7e8c | fcn_00007e8c ();
0x00067f2a nop |
0x00067f2c ldrsh r0, [r0, r3] | r0 = *((r0 + r3));
0x00067f2e movs r6, r0 | r6 = r0;
0x00067f30 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00067f32 movs r0, r0 |
0x00067f34 ldrb r6, [r7, 0x19] | r6 = *((r7 + 0x19));
0x00067f36 movs r6, r0 | r6 = r0;
0x00067f38 ldrb r7, [r4, 0x1a] | r7 = *((r4 + 0x1a));
0x00067f3a invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x67f44 */
| #include <stdint.h>
|
; (fcn) fcn.00067f44 () | void fcn_00067f44 (int16_t arg_1h, int16_t arg_50h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int32_t var_20h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00067f44 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00067f48 sub sp, 0x2c |
0x00067f4a ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x00067f4c mov r7, r2 | r7 = r2;
0x00067f4e ldr.w fp, [sp, 0x50] | fp = *(arg_50h);
0x00067f52 str r0, [sp, 0x10] | var_10h = r0;
0x00067f54 str r1, [sp, 0xc] | var_ch = r1;
0x00067f56 str r3, [sp, 0x14] | var_14h = r3;
0x00067f58 cmp r4, 0 |
| if (r4 == 0) {
0x00067f5a beq.w 0x68348 | goto label_19;
| }
| label_12:
0x00067f5e ldr r5, [sp, 0xc] | r5 = var_ch;
0x00067f60 cmp r5, 0 |
| if (r5 == 0) {
0x00067f62 beq.w 0x681a8 | goto label_20;
| }
0x00067f66 ldr.w r3, [pc, 0x464] |
0x00067f6a mov r8, r7 | r8 = r7;
0x00067f6c add r3, pc | r3 = 0xd033e;
0x00067f6e addw r3, r3, 0xacc | __asm ("addw r3, r3, aav.0x000000ff");
0x00067f72 str r3, [sp, 8] | var_8h = r3;
0x00067f74 ldr.w r3, [pc, 0x458] |
0x00067f78 add r3, pc | r3 = 0xd034c;
0x00067f7a adds r3, 4 | r3 += 4;
0x00067f7c str r3, [sp, 0x1c] | var_1ch = r3;
| label_3:
0x00067f7e ldrb.w r6, [r5, 0x60] | r6 = *((r5 + 0x60));
0x00067f82 movs r7, 0 | r7 = 0;
0x00067f84 ldr.w sl, [r5, 0x2c] | sl = *((r5 + 0x2c));
0x00067f88 cmp r6, 0 |
| if (r6 != 0) {
0x00067f8a bne 0x67ffe | goto label_21;
| }
0x00067f8c ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x00067f8e ldr r7, [r3, 0x14] | r7 = *((r3 + 0x14));
| if (r7 == 0) {
0x00067f90 cbz r7, 0x67ffe | goto label_21;
| }
0x00067f92 ldr r7, [r7] | r7 = *(r7);
0x00067f94 cmp r7, 0 |
| if (r7 <= 0) {
0x00067f96 ble 0x67ffe | goto label_21;
| }
0x00067f98 mov sb, r6 | sb = r6;
0x00067f9a b 0x67fd0 |
| while (r6 != 1) {
| label_0:
0x00067f9c ldrd r2, r1, [r4, 0x6c] | __asm ("ldrd r2, r1, [r4, 0x6c]");
0x00067fa0 add r3, r6 | r3 += r6;
0x00067fa2 cmp r2, r1 |
0x00067fa4 add.w r1, r2, 1 | r1 = r2 + 1;
0x00067fa8 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
| if (r2 >= r1) {
0x00067fac bge 0x6809c | goto label_22;
| }
0x00067fae ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00067fb0 mov.w lr, 0x5b | lr = 0x5b;
0x00067fb4 str r1, [r4, 0x6c] | *((r4 + 0x6c)) = r1;
0x00067fb6 add.w r1, r0, r2, lsl 2 | r1 = r0 + (r2 << 2);
0x00067fba strd r3, ip, [r1, 8] | __asm ("strd r3, ip, [r1, 8]");
0x00067fbe str.w r8, [r1, 4] | __asm ("str.w r8, [r1, 4]");
0x00067fc2 str.w sb, [r1, 0x10] | __asm ("str.w sb, [r1, 0x10]");
0x00067fc6 str.w lr, [r0, r2, lsl 2] | __asm ("str.w lr, [r0, r2, lsl 2]");
| label_2:
0x00067fca adds r6, 1 | r6++;
0x00067fcc cmp r7, r6 |
| if (r7 == r6) {
0x00067fce beq 0x67ffe | goto label_21;
| }
| label_1:
0x00067fd0 cmp r6, 1 |
0x00067fd2 ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x00067fd4 add.w ip, r6, fp |
0x00067fd8 bne 0x67f9c |
| }
0x00067fda ldr.w r2, [sl, 0x20] | r2 = *((sl + 0x20));
0x00067fde ldr r1, [sp, 8] | r1 = var_8h;
0x00067fe0 cmp r2, r1 |
| if (r2 != r1) {
0x00067fe2 bne 0x67f9c | goto label_0;
| }
0x00067fe4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00067fe6 add.w r1, fp, 1 | r1 += arg_1h;
0x00067fea adds r3, 1 | r3++;
0x00067fec mov r0, r4 | r0 = r4;
0x00067fee adds r6, 1 | r6++;
0x00067ff0 ldr r2, [r2, 0x30] | r2 = *((r2 + 0x30));
0x00067ff2 str r1, [sp] | *(sp) = r1;
0x00067ff4 movs r1, 0x5b | r1 = 0x5b;
0x00067ff6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00067ffa cmp r7, r6 |
| if (r7 != r6) {
0x00067ffc bne 0x67fd0 | goto label_1;
| }
| label_21:
0x00067ffe ldr r3, [sp, 0xc] | r3 = var_ch;
0x00068000 ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
0x00068002 cmp r3, 0 |
| if (r3 == 0) {
0x00068004 bne 0x680ac |
0x00068006 ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x0006800a lsls r1, r2, 0x13 | r1 = r2 << 0x13;
| if (r1 >= r2) {
0x0006800c bpl 0x680ac | goto label_23;
| }
0x0006800e ldrb r2, [r5, 0x11] | r2 = *((r5 + 0x11));
0x00068010 cmp r2, 0x5a |
| if (r2 == 0x5a) {
0x00068012 beq 0x680ac | goto label_23;
| }
0x00068014 ldrd r6, r2, [r4, 0x6c] | __asm ("ldrd r6, r2, [r4, 0x6c]");
0x00068018 cmp r6, r2 |
| if (r6 >= r2) {
0x0006801a bge.w 0x683ac | goto label_24;
| }
0x0006801e ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00068020 add.w r2, r6, r6, lsl 2 | r2 = r6 + (r6 << 2);
0x00068024 adds r1, r6, 1 | r1 = r6 + 1;
0x00068026 str r1, [r4, 0x6c] | *((r4 + 0x6c)) = r1;
0x00068028 movs r7, 0x32 | r7 = 0x32;
0x0006802a add.w r1, r0, r2, lsl 2 | r1 = r0 + (r2 << 2);
0x0006802e strd fp, r3, [r1, 4] | __asm ("strd fp, r3, [r1, 4]");
0x00068032 strd r3, r3, [r1, 0xc] | __asm ("strd r3, r3, [r1, 0xc]");
0x00068036 str.w r7, [r0, r2, lsl 2] | __asm ("str.w r7, [r0, r2, lsl 2]");
| label_17:
0x0006803a ldr r7, [sp, 0x14] | r7 = var_14h;
0x0006803c cmp r7, 0 |
| if (r7 == 0) {
0x0006803e beq.w 0x682e8 | goto label_25;
| }
0x00068042 movs r3, 1 | r3 = 1;
0x00068044 ldr r2, [r5, 0x3c] | r2 = *((r5 + 0x3c));
0x00068046 movs r1, 0x18 | r1 = 0x18;
0x00068048 str r3, [sp, 4] | var_4h = r3;
0x0006804a mov r0, r4 | r0 = r4;
0x0006804c movs r3, 0 | r3 = 0;
0x0006804e str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00068052 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00068056 movs r3, 0 | r3 = 0;
0x00068058 ldr r2, [r5, 0x3c] | r2 = *((r5 + 0x3c));
0x0006805a movs r1, 0x7e | r1 = 0x7e;
0x0006805c str r3, [sp] | *(sp) = r3;
0x0006805e mov r0, r4 | r0 = r4;
0x00068060 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00068064 ldr r2, [r4] | r2 = *(r4);
0x00068066 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x00068068 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0006806c subs r1, r3, 2 | r1 = r3 - 2;
0x0006806e it mi |
| if (r1 >= r3) {
0x00068070 addmi r1, r3, -1 | r1 = r3 + -1;
| }
0x00068074 cmp r2, 0 |
| if (r2 != 0) {
0x00068076 bne.w 0x68384 | goto label_26;
| }
0x0006807a add.w r0, r1, r1, lsl 2 | r0 = r1 + (r1 << 2);
0x0006807e ldr r1, [r4, 0x68] | r1 = *((r4 + 0x68));
0x00068080 add.w r1, r1, r0, lsl 2 | r1 += (r0 << 2);
| label_16:
0x00068084 str r3, [r1, 8] | *((r1 + 8)) = r3;
| label_10:
0x00068086 cmp r6, 0 |
0x00068088 it lt |
| if (r6 >= 0) {
0x0006808a addlt r6, r3, -1 | r6 = r3 + -1;
| }
0x0006808e cmp r2, 0 |
| if (r2 == 0) {
0x00068090 beq.w 0x68254 | goto label_27;
| }
0x00068094 ldr r2, [pc, 0x33c] |
0x00068096 add r2, pc | r2 = 0xd046e;
0x00068098 adds r2, 4 | r2 += 4;
0x0006809a b 0x681da | goto label_28;
| label_22:
0x0006809c mov r2, r8 | r2 = r8;
0x0006809e movs r1, 0x5b | r1 = 0x5b;
0x000680a0 mov r0, r4 | r0 = r4;
0x000680a2 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x000680a6 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000680aa b 0x67fca | goto label_2;
| }
| label_23:
0x000680ac ldr r6, [r5, 0x40] | r6 = *((r5 + 0x40));
0x000680ae cmp r6, 0 |
| if (r6 != 0) {
0x000680b0 bne 0x681ae | goto label_29;
| }
0x000680b2 ldr r3, [pc, 0x324] |
0x000680b4 ldr.w r2, [sl, 0x10] | r2 = *((sl + 0x10));
0x000680b8 add r3, pc | r3 = 0xd0496;
0x000680ba cmp r2, r3 |
| if (r2 != r3) {
0x000680bc beq 0x681a0 |
0x000680be ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x000680c0 cmp r3, 0 |
| if (r3 != 0) {
0x000680c2 beq 0x6813a |
0x000680c4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000680c6 ldrb r3, [r3, 0x13] | r3 = *((r3 + 0x13));
0x000680c8 cmp r3, 0 |
| if (r3 == 0) {
0x000680ca beq.w 0x68260 | goto label_30;
| }
0x000680ce ldr r2, [sp, 0x10] | r2 = var_10h;
0x000680d0 subs r3, 1 | r3--;
0x000680d2 uxtb r3, r3 | r3 = (int8_t) r3;
0x000680d4 strb r3, [r2, 0x13] | *((r2 + 0x13)) = r3;
0x000680d6 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x000680da ldr.w sb, [r3, 0x94] | sb = *((r3 + 0x94));
| label_8:
0x000680de ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x000680e0 mov r2, r8 | r2 = r8;
0x000680e2 movs r1, 0x5b | r1 = 0x5b;
0x000680e4 mov r0, r4 | r0 = r4;
0x000680e6 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000680ea add r3, r7 | r3 += r7;
0x000680ec bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000680f0 ldrd r6, r3, [r4, 0x6c] | __asm ("ldrd r6, r3, [r4, 0x6c]");
0x000680f4 cmp r6, r3 |
| if (r6 >= r3) {
0x000680f6 bge.w 0x68334 | goto label_31;
| }
0x000680f8 strh r5, [r3, 8] | *((r3 + 8)) = r5;
0x000680fa ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x000680fc add.w r3, r6, r6, lsl 2 | r3 = r6 + (r6 << 2);
0x00068100 adds r0, r6, 1 | r0 = r6 + 1;
0x00068102 str r0, [r4, 0x6c] | *((r4 + 0x6c)) = r0;
0x00068104 movs r1, 0 | r1 = 0;
0x00068106 mov.w ip, 1 |
0x0006810a movs r0, 0x14 | r0 = 0x14;
0x0006810c add.w lr, r2, r3, lsl 2 | lr = r2 + (r3 << 2);
0x00068110 str.w ip, [lr, 0xc] | __asm ("str.w ip, [lr, 0xc]");
0x00068114 strd sb, r1, [lr, 4] | __asm ("strd sb, r1, [lr, 4]");
0x00068118 str.w r1, [lr, 0x10] | __asm ("str.w r1, [lr, 0x10]");
0x0006811c str.w r0, [r2, r3, lsl 2] | __asm ("str.w r0, [r2, r3, lsl 2]");
| label_11:
0x00068120 cmp.w sb, 0 |
| if (sb == 0) {
0x00068124 beq 0x6813a | goto label_32;
| }
0x00068126 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00068128 ldrb r3, [r1, 0x13] | r3 = *((r1 + 0x13));
0x0006812a cmp r3, 7 |
0x0006812c itttt ls |
| if (r3 > 7) {
0x0006812e addls r2, r1, r3, lsl 2 | r2 = r1 + (r3 << 2);
| }
| if (r3 > 7) {
0x00068132 addls r3, 1 | r3++;
| }
| if (r3 > 7) {
0x00068134 strbls r3, [r1, 0x13] | *((r1 + 0x13)) = r3;
| }
| if (r3 > 7) {
0x00068136 str.w sb, [r2, 0x94] | __asm ("str.w sb, [r2, 0x94]");
| goto label_32;
| }
| }
| label_32:
0x0006813a ldrb.w r3, [r5, 0x60] | r3 = *((r5 + 0x60));
0x0006813e cmp r3, 0 |
| if (r3 != 0) {
0x00068140 bne.w 0x6826e | goto label_33;
| }
0x00068144 str.w fp, [sp, 0x18] | __asm ("str.w fp, [var_18h]");
| label_9:
0x00068148 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x0006814c lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 < r3) {
0x0006814e bmi 0x68204 | goto label_34;
| }
| label_7:
0x00068150 ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00068152 mov r0, r4 | r0 = r4;
0x00068154 str r3, [sp] | *(sp) = r3;
0x00068156 ldrd r2, r3, [sp, 0x14] | __asm ("ldrd r2, r3, [var_14h]");
0x0006815a rsb.w r1, r2, 0x9e | r1 = 0x9e - r2;
0x0006815e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00068162 ldr r0, [r4] | r0 = *(r4);
0x00068164 ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x00068168 cmp r3, 0 |
| if (r3 != 0) {
0x0006816a bne 0x681f6 | goto label_35;
| }
0x0006816c ldrd r1, r3, [r4, 0x68] | __asm ("ldrd r1, r3, [r4, 0x68]");
0x00068170 movs r0, 0xf8 | r0 = 0xf8;
0x00068172 add.w r2, r3, r3, lsl 2 | r2 = r3 + (r3 << 2);
0x00068176 lsls r2, r2, 2 | r2 <<= 2;
0x00068178 subs r2, 0x14 | r2 -= 0x14;
0x0006817a add r1, r2 | r1 += r2;
0x0006817c strb r0, [r1, 1] | *((r1 + 1)) = r0;
0x0006817e str.w sl, [r1, 0x10] | __asm ("str.w sl, [r1, 0x10]");
| label_6:
0x00068182 cmp r3, 0 |
| if (r3 > 0) {
0x00068184 ble 0x68196 |
0x00068186 ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x00068188 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0006818c add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x00068190 uxtb r1, r7 | r1 = (int8_t) r7;
0x00068192 strh r1, [r2, -0x12] | *((r2 - 0x12)) = r1;
| }
0x00068196 ldrb.w r2, [r5, 0x60] | r2 = *((r5 + 0x60));
| if (r2 != 0) {
0x0006819a cbnz r2, 0x681de | goto label_36;
| }
| label_5:
0x0006819c cmp r6, 0 |
| if (r6 != 0) {
0x0006819e bne 0x681c4 | goto label_37;
| }
| }
| label_4:
0x000681a0 ldr r5, [r5, 0x24] | r5 = *((r5 + 0x24));
0x000681a2 cmp r5, 0 |
| if (r5 != 0) {
0x000681a4 bne.w 0x67f7e | goto label_3;
| }
| label_20:
0x000681a8 add sp, 0x2c |
0x000681aa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_29:
0x000681ae ldr r3, [sp, 0x14] | r3 = var_14h;
0x000681b0 adds r2, r6, 1 | r2 = r6 + 1;
0x000681b2 movs r1, 0x53 | r1 = 0x53;
0x000681b4 mov r0, r4 | r0 = r4;
0x000681b6 subs r2, r2, r3 | r2 -= r3;
0x000681b8 movs r3, 0 | r3 = 0;
0x000681ba str r3, [sp] | *(sp) = r3;
0x000681bc movs r3, 1 | r3 = 1;
0x000681be bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000681c2 b 0x681a0 | goto label_4;
| label_37:
0x000681c4 ldr r2, [r4] | r2 = *(r4);
0x000681c6 it lt |
| if (r3 >= 1) {
0x000681c8 addlt r6, r3, -1 | r6 = r3 + -1;
| }
0x000681cc ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x000681d0 cmp r2, 0 |
| if (r2 == 0) {
0x000681d2 beq 0x68254 | goto label_27;
| }
0x000681d4 ldr r2, [pc, 0x204] |
0x000681d6 add r2, pc | r2 = 0xd05b6;
0x000681d8 adds r2, 4 | r2 += 4;
| do {
| label_28:
0x000681da str r3, [r2, 8] | *((r2 + 8)) = r3;
0x000681dc b 0x681a0 | goto label_4;
| label_36:
0x000681de cmp r7, 1 |
| if (r7 == 1) {
0x000681e0 beq.w 0x6838c | goto label_38;
| }
0x000681e4 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000681e6 ldr r2, [r1, 0x1c] | r2 = *((r1 + 0x1c));
0x000681e8 cmp r7, r2 |
0x000681ea itttt gt |
| if (r7 <= r2) {
0x000681ec movgt r2, r1 | r2 = r1;
| }
| if (r7 <= r2) {
0x000681ee ldrgt r1, [sp, 0x18] | r1 = var_18h;
| }
| if (r7 <= r2) {
0x000681f0 strgt r7, [r2, 0x1c] | *((r2 + 0x1c)) = r7;
| }
| if (r7 <= r2) {
0x000681f2 strgt r1, [r2, 0x20] | *((r2 + 0x20)) = r1;
| }
0x000681f4 b 0x6819c | goto label_5;
| label_35:
0x000681f6 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x000681fa lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x000681fc bmi.w 0x68358 | goto label_39;
| }
| label_13:
0x00068200 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x00068202 b 0x68182 | goto label_6;
| label_34:
0x00068204 ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x00068206 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00068208 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0006820a ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0006820c bl 0x2d47c | r0 = fcn_0002d47c (r0, r1);
0x00068210 mov sb, r0 | sb = r0;
0x00068212 cmp r0, 0 |
| if (r0 == 0) {
0x00068214 beq.w 0x68360 | goto label_40;
| }
0x00068218 ldrd r1, r3, [r4, 0x6c] | __asm ("ldrd r1, r3, [r4, 0x6c]");
0x0006821c cmp r1, r3 |
| if (r1 >= r3) {
0x0006821e bge.w 0x68372 | goto label_41;
| }
| label_14:
0x00068222 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x00068224 add.w r0, r1, r1, lsl 2 | r0 = r1 + (r1 << 2);
0x00068228 add.w ip, r1, 1 |
0x0006822c str.w ip, [r4, 0x6c] | __asm ("str.w ip, [r4, 0x6c]");
0x00068230 mov.w ip, 0x52 |
0x00068234 str.w ip, [r3, r0, lsl 2] | __asm ("str.w ip, [r3, r0, lsl 2]");
0x00068238 movs r2, 0 | r2 = 0;
0x0006823a add.w r3, r3, r0, lsl 2 | r3 += (r0 << 2);
0x0006823e strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x00068242 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_15:
0x00068246 mov r2, sb | r2 = sb;
0x00068248 mvn r3, 1 | r3 = ~1;
0x0006824c mov r0, r4 | r0 = r4;
0x0006824e bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x00068252 b 0x68150 | goto label_7;
| label_27:
0x00068254 ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x00068256 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x0006825a add.w r2, r2, r6, lsl 2 | r2 += (r6 << 2);
0x0006825e b 0x681da |
| } while (1);
| label_30:
0x00068260 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00068262 ldr r3, [r2, 0x2c] | r3 = *((r2 + 0x2c));
0x00068264 add.w sb, r3, 1 | sb = r3 + 1;
0x00068268 str.w sb, [r2, 0x2c] | __asm ("str.w sb, [r2, 0x2c]");
0x0006826c b 0x680de | goto label_8;
| label_33:
0x0006826e ldr r3, [r5, 0x48] | r3 = *((r5 + 0x48));
0x00068270 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00068272 ldr.w sb, [r4, 0x6c] | sb = *((r4 + 0x6c));
0x00068276 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00068278 ldr r7, [r3] | r7 = *(r3);
0x0006827a str r3, [sp, 0x20] | var_20h = r3;
0x0006827c mov r1, r7 | r1 = r7;
0x0006827e bl 0xf298 | fcn_0000f298 (r0, r1);
0x00068282 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00068284 mov r2, r0 | r2 = r0;
0x00068286 str r0, [sp, 0x18] | var_18h = r0;
0x00068288 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006828a mov r1, r3 | r1 = r3;
0x0006828c movs r3, 0 | r3 = 0;
0x0006828e str r3, [sp] | *(sp) = r3;
0x00068290 bl 0x67dc0 | fcn_00067dc0 (r0, r1, r2, r3, r4);
0x00068294 ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x00068296 cmp sb, r2 |
| if (sb >= r2) {
0x00068298 bge.w 0x68148 | goto label_9;
| }
0x0006829c ldr r3, [r4] | r3 = *(r4);
0x0006829e add.w ip, r2, -1 |
0x000682a2 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000682a4 strd r7, r6, [sp, 0x20] | __asm ("strd r7, r6, [var_20h]");
0x000682a8 ldrb.w r0, [r3, 0x53] | r0 = *((r3 + 0x53));
| do {
0x000682ac cmp.w sb, 0 |
0x000682b0 mov r3, r1 | r3 = r1;
0x000682b2 ite ge |
| if (sb < 0) {
0x000682b4 movge lr, sb | lr = sb;
| }
| if (sb >= 0) {
0x000682b6 movlt lr, ip | lr = ip;
| }
| if (r0 == 0) {
0x000682b8 cbnz r0, 0x682c4 |
0x000682ba ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x000682bc add.w lr, lr, lr, lsl 2 | lr += (lr << 2);
0x000682c0 add.w r3, r3, lr, lsl 2 | r3 += (lr << 2);
| }
0x000682c4 ldrb.w lr, [r3] |
0x000682c8 add.w sb, sb, 1 | sb++;
0x000682cc cmp.w lr, 0x5b |
| if (lr == 0x5b) {
0x000682d0 bne 0x682de |
0x000682d2 ldr r6, [r3, 4] | r6 = *((r3 + 4));
0x000682d4 ldr r7, [r5, 0x30] | r7 = *((r5 + 0x30));
0x000682d6 cmp r6, r7 |
0x000682d8 it eq |
| if (r6 == r7) {
0x000682da streq r8, [r3, 4] | *((r3 + 4)) = r8;
| goto label_42;
| }
| }
| label_42:
0x000682de cmp r2, sb |
0x000682e0 bne 0x682ac |
| } while (r2 != sb);
0x000682e2 ldrd r7, r6, [sp, 0x20] | __asm ("ldrd r7, r6, [var_20h]");
0x000682e6 b 0x68148 | goto label_9;
| label_25:
0x000682e8 ldr r2, [r5, 0x40] | r2 = *((r5 + 0x40));
0x000682ea movs r3, 1 | r3 = 1;
0x000682ec movs r1, 0x53 | r1 = 0x53;
0x000682ee str r7, [sp] | *(sp) = r7;
0x000682f0 mov r0, r4 | r0 = r4;
0x000682f2 adds r2, 1 | r2++;
0x000682f4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000682f8 ldr r3, [r5, 0x40] | r3 = *((r5 + 0x40));
0x000682fa mov r2, fp | r2 = fp;
0x000682fc movs r1, 0x4e | r1 = 0x4e;
0x000682fe str r7, [sp] | *(sp) = r7;
0x00068300 mov r0, r4 | r0 = r4;
0x00068302 str r7, [sp, 0x14] | var_14h = r7;
0x00068304 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00068308 ldr r2, [r5, 0x40] | r2 = *((r5 + 0x40));
0x0006830a movs r3, 2 | r3 = 2;
0x0006830c movs r1, 0x5d | r1 = 0x5d;
0x0006830e mov r0, r4 | r0 = r4;
0x00068310 adds r7, r2, r3 | r7 = r2 + r3;
0x00068312 str r7, [sp] | *(sp) = r7;
0x00068314 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00068318 ldr r3, [r5, 0x40] | r3 = *((r5 + 0x40));
0x0006831a movs r1, 0x86 | r1 = 0x86;
0x0006831c ldr r7, [sp, 0x14] | r7 = var_14h;
0x0006831e mov r0, r4 | r0 = r4;
0x00068320 ldr r2, [r5, 0x3c] | r2 = *((r5 + 0x3c));
0x00068322 adds r3, 2 | r3 += 2;
0x00068324 str r7, [sp] | *(sp) = r7;
0x00068326 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006832a ldr r3, [r4] | r3 = *(r4);
0x0006832c ldrb.w r2, [r3, 0x53] | r2 = *((r3 + 0x53));
0x00068330 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x00068332 b 0x68086 | goto label_10;
| label_31:
0x00068334 movs r3, 1 | r3 = 1;
0x00068336 mov r2, sb | r2 = sb;
0x00068338 str r3, [sp] | *(sp) = r3;
0x0006833a movs r1, 0x14 | r1 = 0x14;
0x0006833c movs r3, 0 | r3 = 0;
0x0006833e mov r0, r4 | r0 = r4;
0x00068340 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00068344 mov r6, r0 | r6 = r0;
0x00068346 b 0x68120 | goto label_11;
| label_19:
0x00068348 ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
0x0006834a cmp r3, 0 |
| if (r3 == 0) {
0x0006834c beq 0x683bc | goto label_43;
| }
| label_18:
0x0006834e ldr r0, [sp, 0x10] | r0 = var_10h;
0x00068350 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00068354 mov r4, r0 | r4 = r0;
0x00068356 b 0x67f5e | goto label_12;
| label_39:
0x00068358 mov r1, sl | r1 = sl;
0x0006835a bl 0x159dc | fcn_000159dc (r0, r1);
0x0006835e b 0x68200 | goto label_13;
| label_40:
0x00068360 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00068362 ldr r3, [r3] | r3 = *(r3);
0x00068364 ldr.w sb, [r3, 8] | sb = *((r3 + 8));
0x00068368 ldrd r1, r3, [r4, 0x6c] | __asm ("ldrd r1, r3, [r4, 0x6c]");
0x0006836c cmp r1, r3 |
| if (r1 < r3) {
0x0006836e blt.w 0x68222 | goto label_14;
| }
| label_41:
0x00068372 movs r3, 0 | r3 = 0;
0x00068374 movs r1, 0x52 | r1 = 0x52;
0x00068376 mov r2, r3 | r2 = r3;
0x00068378 mov r0, r4 | r0 = r4;
0x0006837a str r3, [sp] | *(sp) = r3;
0x0006837c bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00068380 mov r1, r0 | r1 = r0;
0x00068382 b 0x68246 | goto label_15;
| label_26:
0x00068384 ldr r1, [pc, 0x58] |
0x00068386 add r1, pc | r1 = 0xd076a;
0x00068388 adds r1, 4 | r1 += 4;
0x0006838a b 0x68084 | goto label_16;
| label_38:
0x0006838c ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006838e cmp r0, 0 |
| if (r0 == 0) {
0x00068390 beq.w 0x6819c | goto label_5;
| }
0x00068394 ldr r7, [sp, 0x10] | r7 = var_10h;
0x00068396 ldrb r2, [r7, 0x13] | r2 = *((r7 + 0x13));
0x00068398 cmp r2, 7 |
| if (r2 > 7) {
0x0006839a bhi.w 0x6819c | goto label_5;
| }
0x0006839e add.w r1, r7, r2, lsl 2 | r1 = r7 + (r2 << 2);
0x000683a2 adds r2, 1 | r2++;
0x000683a4 strb r2, [r7, 0x13] | *((r7 + 0x13)) = r2;
0x000683a6 str.w r0, [r1, 0x94] | __asm ("str.w r0, [r1, 0x94]");
0x000683aa b 0x6819c | goto label_5;
| label_24:
0x000683ac mov r2, fp | r2 = fp;
0x000683ae movs r1, 0x32 | r1 = 0x32;
0x000683b0 mov r0, r4 | r0 = r4;
0x000683b2 str r3, [sp] | *(sp) = r3;
0x000683b4 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x000683b8 mov r6, r0 | r6 = r0;
0x000683ba b 0x6803a | goto label_17;
| label_43:
0x000683bc ldr r3, [r0] | r3 = *(r0);
0x000683be mov r2, r0 | r2 = r0;
0x000683c0 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000683c2 lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
0x000683c4 itt pl |
| if (r0 < r3) {
0x000683c6 movpl r3, 1 | r3 = 1;
| }
| if (r0 < r3) {
0x000683c8 strbpl r3, [r2, 0x17] | *((r2 + 0x17)) = r3;
| }
0x000683ca b 0x6834e | goto label_18;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x68ef4 */
| #include <stdint.h>
|
; (fcn) fcn.00068ef4 () | void fcn_00068ef4 (int16_t arg_1h, int16_t arg_6h, int16_t arg_10h, int16_t arg_50h, int16_t arg_54h, int16_t arg_58h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00068ef4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00068ef8 mov r5, r1 | r5 = r1;
0x00068efa ldr r1, [r1] | r1 = *(r1);
0x00068efc sub sp, 0x2c |
0x00068efe mov r4, r0 | r4 = r0;
0x00068f00 mov sl, r3 | sl = r3;
0x00068f02 ldrb.w r7, [r5, 0x20] | r7 = *((r5 + 0x20));
0x00068f06 str r2, [sp, 0x14] | var_14h = r2;
0x00068f08 ldr r2, [r1] | r2 = *(r1);
0x00068f0a ldr r6, [r0, 8] | r6 = *((r0 + 8));
0x00068f0c and r7, r7, 1 | r7 &= 1;
0x00068f10 ldr r0, [sp, 0x54] | r0 = *(arg_54h);
0x00068f12 eor fp, r7, 1 |
0x00068f16 str r2, [sp, 0x18] | var_18h = r2;
0x00068f18 add r2, fp | r2 += fp;
0x00068f1a ldr.w r8, [sp, 0x58] | r8 = *(arg_58h);
0x00068f1e add r2, r0 | r2 += r0;
0x00068f20 ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x00068f22 str r2, [sp, 0x10] | var_10h = r2;
0x00068f24 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00068f26 sub.w sb, sl, r8 | sb = sl - r8;
0x00068f2a str r2, [sp, 0xc] | var_ch = r2;
0x00068f2c cmp.w r8, 0 |
| if (r8 == 0) {
0x00068f30 bne 0x68f3e |
0x00068f32 ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x00068f34 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00068f36 add.w sb, r2, 1 | sb = r2 + 1;
0x00068f3a add r2, r0 | r2 += r0;
0x00068f3c str r2, [r4, 0x2c] | *((r4 + 0x2c)) = r2;
| }
0x00068f3e ldr r2, [sp, 0x14] | r2 = var_14h;
0x00068f40 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00068f42 cmp r2, 0 |
| if (r2 == 0) {
0x00068f44 beq.w 0x69092 | goto label_13;
| }
0x00068f48 adds r2, 1 | r2++;
0x00068f4a str r2, [sp, 8] | var_8h = r2;
| label_0:
0x00068f4c ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x00068f4e cmp r3, 0 |
0x00068f50 mov r0, r4 | r0 = r4;
0x00068f52 add.w r2, r2, -1 | r2 += -1;
0x00068f56 str r2, [r4, 0x38] | *((r4 + 0x38)) = r2;
0x00068f58 str r2, [r5, 0x18] | *((r5 + 0x18)) = r2;
0x00068f5a ite ne |
| if (r3 == 0) {
0x00068f5c movne r2, 5 | r2 = 5;
| }
| if (r3 != 0) {
0x00068f5e moveq r2, 1 | r2 = 1;
| }
0x00068f60 str r2, [sp] | *(sp) = r2;
0x00068f62 mov r2, sb | r2 = sb;
0x00068f64 bl 0x67dc0 | fcn_00067dc0 (r0, r1, r2, r3, r4);
0x00068f68 cmp r7, 0 |
| if (r7 == 0) {
0x00068f6a beq.w 0x69130 | goto label_14;
| }
| label_2:
0x00068f6e ldr r2, [sp, 0x54] | r2 = *(arg_54h);
0x00068f70 clz r3, r8 | r3 &= r8;
0x00068f74 lsrs r3, r3, 5 | r3 >>= 5;
0x00068f76 cmp r2, 0 |
0x00068f78 it le |
| if (r2 > 0) {
0x00068f7a movle r3, 0 | r3 = 0;
| }
0x00068f7c cmp r3, 0 |
| if (r3 != 0) {
0x00068f7e bne.w 0x6911a | goto label_15;
| }
| label_1:
0x00068f82 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00068f84 cmp r3, 0 |
| if (r3 > 0) {
0x00068f86 bgt.w 0x6909a | goto label_16;
| }
0x00068f8a ldr r3, [sp, 8] | r3 = var_8h;
0x00068f8c cmp r3, 0 |
| if (r3 == 0) {
0x00068f8e beq 0x6904c | goto label_17;
| }
0x00068f90 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00068f92 mov.w r8, 0 | r8 = 0;
0x00068f96 ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x00068f98 add.w r7, sb, r2 | r7 = sb + r2;
| label_5:
0x00068f9c ldr.w fp, [r5, 8] | fp = *((r5 + 8));
0x00068fa0 mov.w sl, 0 | sl = 0;
0x00068fa4 ldr r2, [sp, 8] | r2 = var_8h;
0x00068fa6 adds r3, 4 | r3 += 4;
0x00068fa8 movs r1, 0x31 | r1 = 0x31;
0x00068faa mov r0, r6 | r0 = r6;
0x00068fac str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00068fb0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00068fb4 mov r3, sl | r3 = sl;
0x00068fb6 mov r2, fp | r2 = fp;
0x00068fb8 movs r1, 0x21 | r1 = 0x21;
0x00068fba mov r0, r6 | r0 = r6;
0x00068fbc str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00068fc0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00068fc4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00068fc6 movs r1, 0x26 | r1 = 0x26;
0x00068fc8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00068fca mov r0, r6 | r0 = r6;
0x00068fcc subs r3, r3, r2 | r3 -= r2;
0x00068fce mov r2, fp | r2 = fp;
0x00068fd0 strd r7, r3, [sp] | __asm ("strd r7, r3, [sp]");
0x00068fd4 mov r3, sl | r3 = sl;
0x00068fd6 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00068fda mov r2, fp | r2 = fp;
0x00068fdc str r0, [sp, 8] | var_8h = r0;
0x00068fde mov r3, sl | r3 = sl;
0x00068fe0 movs r1, 0x7e | r1 = 0x7e;
0x00068fe2 mov r0, r6 | r0 = r6;
0x00068fe4 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00068fe8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_4:
0x00068fec cmp.w r8, 0 |
0x00068ff0 beq 0x69052 |
| while (1) {
0x00068ff2 ldrd r2, r3, [sp, 0xc] | __asm ("ldrd r2, r3, [var_10h]");
0x00068ff6 mov r0, r6 | r0 = r6;
0x00068ff8 subs r3, r3, r2 | r3 -= r2;
0x00068ffa strd r7, r3, [sp] | __asm ("strd r7, r3, [sp]");
0x00068ffe mov r3, r8 | r3 = r8;
0x00069000 ldrb.w r1, [r5, 0x20] | r1 = *((r5 + 0x20));
0x00069004 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00069006 and r1, r1, 1 | r1 &= 1;
0x0006900a subs r1, 0x7a | r1 -= 0x7a;
0x0006900c uxtb r1, r1 | r1 = (int8_t) r1;
0x0006900e bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00069012 ldr r3, [sp, 8] | r3 = var_8h;
| if (r3 != 0) {
0x00069014 cbz r3, 0x69046 |
0x00069016 ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x00069018 cmp r2, 0 |
| if (r2 == 0) {
0x0006901a beq.w 0x692a2 | goto label_18;
| }
| label_7:
0x0006901e ldr r3, [sp, 8] | r3 = var_8h;
0x00069020 cmp r3, 0 |
0x00069022 ittt lt |
| if (r3 >= 0) {
0x00069024 ldrlt r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
| }
| if (r3 >= 0) {
0x00069026 addlt r3, r3, -1 | r3 += -1;
| }
| if (r3 < 0) {
0x0006902a str r3, [sp, 8] | var_8h = r3;
| }
0x0006902c ldr r3, [r6] | r3 = *(r6);
0x0006902e ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00069032 cmp r3, 0 |
| if (r3 != 0) {
0x00069034 bne.w 0x6929a | goto label_19;
| }
0x00069038 ldr r1, [sp, 8] | r1 = var_8h;
0x0006903a ldr r3, [r6, 0x68] | r3 = *((r6 + 0x68));
0x0006903c add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x00069040 add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
| label_6:
0x00069044 str r2, [r3, 8] | *((r3 + 8)) = r2;
| }
| label_3:
0x00069046 add sp, 0x2c |
0x00069048 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x0006904c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0006904e add.w r7, sb, r3 | r7 = sb + r3;
0x00069052 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00069054 ldr.w sl, [r5, 4] | sl = *((r5 + 4));
0x00069058 ldr.w fp, [r4, 8] | fp = *((r4 + 8));
0x0006905c add.w r8, r3, 1 | r8 = r3 + 1;
0x00069060 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00069062 str.w r8, [r4, 0x2c] | __asm ("str.w r8, [r4, 0x2c]");
| if (r3 != 0) {
0x00069066 cbz r3, 0x6907a |
0x00069068 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006906a mov r0, r4 | r0 = r4;
0x0006906c ldr r1, [r2, 0x1c] | r1 = *((r2 + 0x1c));
0x0006906e ldr r2, [r3] | r2 = *(r3);
0x00069070 ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x00069072 str r3, [sp] | *(sp) = r3;
0x00069074 movs r3, 0 | r3 = 0;
0x00069076 bl 0x67dc0 | fcn_00067dc0 (r0, r1, r2, r3, r4);
| }
0x0006907a ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006907c add.w r2, sb, sl | r2 = sb + sl;
0x00069080 mov r0, fp | r0 = fp;
0x00069082 movs r1, 0x5d | r1 = 0x5d;
0x00069084 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00069088 sub.w r3, r3, sl | r3 -= sl;
0x0006908c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00069090 b 0x68ff2 |
| }
| label_13:
0x00069092 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00069094 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00069096 str r2, [sp, 8] | var_8h = r2;
0x00069098 b 0x68f4c | goto label_0;
| label_16:
0x0006909a ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0006909c ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0006909e ldr.w sl, [r5, 4] | sl = *((r5 + 4));
0x000690a2 add.w r8, r3, 1 | r8 = r3 + 1;
0x000690a6 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000690a8 str r2, [sp, 0x1c] | var_1ch = r2;
0x000690aa str.w r8, [r4, 0x2c] | __asm ("str.w r8, [r4, 0x2c]");
| if (r3 != 0) {
0x000690ae cbz r3, 0x690c2 |
0x000690b0 ldr r2, [r3] | r2 = *(r3);
0x000690b2 mov r0, r4 | r0 = r4;
0x000690b4 ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x000690b6 str r3, [sp] | *(sp) = r3;
0x000690b8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000690ba ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x000690bc movs r3, 0 | r3 = 0;
0x000690be bl 0x67dc0 | fcn_00067dc0 (r0, r1, r2, r3, r4);
| }
0x000690c2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000690c4 add.w r2, sb, sl | r2 = sb + sl;
0x000690c8 movs r1, 0x5d | r1 = 0x5d;
0x000690ca ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000690cc str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000690d0 sub.w r3, r3, sl | r3 -= sl;
0x000690d4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000690d8 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x000690da ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x000690dc adds r1, r3, 1 | r1 = r3 + 1;
0x000690de add r3, r2 | r3 += r2;
0x000690e0 str r2, [sp, 0x24] | var_24h = r2;
0x000690e2 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x000690e4 str r1, [sp, 0x1c] | var_1ch = r1;
0x000690e6 ldrd sl, r3, [r6, 0x6c] | __asm ("ldrd sl, r3, [r6, 0x6c]");
| if (r7 == 0) {
0x000690ea cbnz r7, 0x69142 |
0x000690ec ldr r2, [sp, 0x18] | r2 = var_18h;
0x000690ee cmp sl, r3 |
0x000690f0 add r2, sb | r2 += sb;
| if (sl >= r3) {
0x000690f2 bge.w 0x692d0 | goto label_20;
| }
0x000690f6 add.w r3, sl, sl, lsl 2 | r3 = sl + (sl << 2);
0x000690fa ldr r0, [r6, 0x68] | r0 = *((r6 + 0x68));
0x000690fc add.w r1, sl, 1 | r1 = sl + 1;
0x00069100 lsls r3, r3, 2 | r3 <<= 2;
0x00069102 str r1, [r6, 0x6c] | *((r6 + 0x6c)) = r1;
0x00069104 mov.w ip, 0x14 |
0x00069108 adds r1, r0, r3 | r1 = r0 + r3;
0x0006910a strd r2, r7, [r1, 4] | __asm ("strd r2, r7, [r1, 4]");
0x0006910e strd r7, r7, [r1, 0xc] | __asm ("strd r7, r7, [r1, 0xc]");
0x00069112 str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
0x00069116 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00069118 b 0x6916c | goto label_12;
| label_15:
0x0006911a ldr r3, [sp, 0x54] | r3 = *(arg_54h);
0x0006911c mov r2, sl | r2 = sl;
0x0006911e movs r1, 0x4c | r1 = 0x4c;
0x00069120 str r3, [sp] | *(sp) = r3;
0x00069122 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00069124 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00069126 add r3, sb | r3 += sb;
0x00069128 add r3, fp | r3 += fp;
0x0006912a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006912e b 0x68f82 | goto label_1;
| label_14:
0x00069130 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00069132 movs r1, 0x7a | r1 = 0x7a;
0x00069134 str r7, [sp] | *(sp) = r7;
0x00069136 mov r0, r6 | r0 = r6;
0x00069138 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0006913a add r3, sb | r3 += sb;
0x0006913c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00069140 b 0x68f6e | goto label_2;
| }
0x00069142 cmp sl, r3 |
0x00069144 ldr.w ip, [r5, 8] | ip = *((r5 + 8));
| if (sl >= r3) {
0x00069148 bge.w 0x692e2 | goto label_21;
| }
0x0006914c add.w r1, sl, sl, lsl 2 | r1 = sl + (sl << 2);
0x00069150 ldr r2, [r6, 0x68] | r2 = *((r6 + 0x68));
0x00069152 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00069154 add.w r0, sl, 1 | r0 = sl + 1;
0x00069158 lsls r1, r1, 2 | r1 <<= 2;
0x0006915a str r0, [r6, 0x6c] | *((r6 + 0x6c)) = r0;
0x0006915c movs r7, 0 | r7 = 0;
0x0006915e adds r0, r2, r1 | r0 = r2 + r1;
0x00069160 strd ip, r7, [r0, 4] | __asm ("strd ip, r7, [r0, 4]");
0x00069164 strd r7, r7, [r0, 0xc] | __asm ("strd r7, r7, [r0, 0xc]");
0x00069168 movs r0, 0x73 | r0 = 0x73;
0x0006916a str r0, [r2, r1] | *((r2 + r1)) = r0;
| label_12:
0x0006916c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006916e movs r1, 0x57 | r1 = 0x57;
0x00069170 str r3, [sp] | *(sp) = r3;
0x00069172 mov r0, r6 | r0 = r6;
0x00069174 mov r3, sb | r3 = sb;
0x00069176 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006917a ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0006917c ldr r2, [r6] | r2 = *(r6);
0x0006917e cmp r3, 0 |
0x00069180 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x00069184 itt lt |
| if (r3 >= 0) {
0x00069186 ldrlt r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
| }
| if (r3 >= 0) {
0x00069188 addlt r3, r3, -1 | r3 += -1;
| }
0x0006918c cmp r2, 0 |
| if (r2 != 0) {
0x0006918e bne.w 0x692a6 | goto label_22;
| }
0x00069192 ldr r2, [r6, 0x68] | r2 = *((r6 + 0x68));
0x00069194 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00069198 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x0006919c str r3, [sp, 0x20] | var_20h = r3;
| label_8:
0x0006919e ldr r3, [r4] | r3 = *(r4);
0x000691a0 ldrb.w r7, [r3, 0x53] | r7 = *((r3 + 0x53));
0x000691a4 cmp r7, 0 |
| if (r7 != 0) {
0x000691a6 bne.w 0x69046 | goto label_3;
| }
0x000691aa ldr r2, [sp, 0x24] | r2 = var_24h;
0x000691ac mov r1, r7 | r1 = r7;
0x000691ae ldr r3, [sp, 0x18] | r3 = var_18h;
0x000691b0 subs r3, r3, r2 | r3 -= r2;
0x000691b2 ldr r2, [sp, 0x54] | r2 = *(arg_54h);
0x000691b4 add r3, fp | r3 += fp;
0x000691b6 add r3, r2 | r3 += r2;
0x000691b8 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000691ba ldr.w fp, [r2, 0x10] | fp = *((r2 + 0x10));
0x000691be str r3, [r2, 8] | *((r2 + 8)) = r3;
0x000691c0 ldr.w r0, [fp, 0x10] | r0 = *(arg_10h);
0x000691c4 ldrh.w r2, [fp, 6] | r2 = *(arg_6h);
0x000691c8 blx 0x8264 | fcn_00008264 ();
0x000691cc mov r2, fp | r2 = fp;
0x000691ce mvn r3, 8 | r3 = ~8;
0x000691d2 mov.w r1, -1 | r1 = -1;
0x000691d6 mov r0, r6 | r0 = r6;
0x000691d8 bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x000691dc ldrh.w r2, [fp, 6] | r2 = *(arg_6h);
0x000691e0 mov r0, r4 | r0 = r4;
0x000691e2 ldrh.w r3, [fp, 8] | r3 = *(arg_58h);
0x000691e6 ldr r1, [r5] | r1 = *(r5);
0x000691e8 subs r3, r3, r2 | r3 -= r2;
0x000691ea ldr r2, [sp, 0xc] | r2 = var_ch;
0x000691ec subs r3, 1 | r3--;
0x000691ee bl 0x2dc24 | fcn_0002dc24 (r0, r1, r2, r3);
0x000691f2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000691f4 mov r3, r7 | r3 = r7;
0x000691f6 ldr.w fp, [r6, 0x6c] | fp = *((r6 + 0x6c));
0x000691fa movs r1, 0x10 | r1 = 0x10;
0x000691fc str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x000691fe mov r0, r6 | r0 = r6;
0x00069200 add.w r2, fp, 1 | r2 += arg_1h;
0x00069204 str r2, [sp] | *(sp) = r2;
0x00069206 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006920a str r7, [sp] | *(sp) = r7;
0x0006920c movs r1, 0xc | r1 = 0xc;
0x0006920e ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00069210 mov r0, r6 | r0 = r6;
0x00069212 ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x00069214 subs r3, 1 | r3--;
0x00069216 adds r2, 1 | r2++;
0x00069218 str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x0006921a str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x0006921c str r2, [r4, 0x2c] | *((r4 + 0x2c)) = r2;
0x0006921e str r2, [r5, 0xc] | *((r5 + 0xc)) = r2;
0x00069220 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00069224 mov r3, r7 | r3 = r7;
0x00069226 str r7, [sp] | *(sp) = r7;
0x00069228 movs r1, 0x8e | r1 = 0x8e;
0x0006922a ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0006922c mov r0, r6 | r0 = r6;
0x0006922e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00069232 ldr r3, [sp, 8] | r3 = var_8h;
0x00069234 cmp r3, 0 |
| if (r3 != 0) {
0x00069236 bne 0x692c0 | goto label_23;
| }
| label_11:
0x00069238 ldr r3, [r6] | r3 = *(r6);
0x0006923a cmp.w sl, 0 |
0x0006923e ldr r1, [r6, 0x6c] | r1 = *((r6 + 0x6c));
0x00069240 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00069244 it lt |
| if (sl >= 0) {
0x00069246 addlt sl, r1, -1 | sl = r1 + -1;
| }
0x0006924a cmp r3, 0 |
| if (r3 != 0) {
0x0006924c bne 0x692b8 | goto label_24;
| }
0x0006924e ldr r2, [r6, 0x68] | r2 = *((r6 + 0x68));
0x00069250 add.w r3, sl, sl, lsl 2 | r3 = sl + (sl << 2);
0x00069254 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_10:
0x00069258 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x0006925a str r1, [r3, 8] | *((r3 + 8)) = r1;
0x0006925c movs r1, 0x4c | r1 = 0x4c;
0x0006925e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00069260 str r2, [sp] | *(sp) = r2;
0x00069262 mov r2, sb | r2 = sb;
0x00069264 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00069266 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006926a ldr r2, [r6] | r2 = *(r6);
0x0006926c cmp.w fp, 0 |
0x00069270 ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x00069272 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x00069276 it lt |
| if (fp >= 0) {
0x00069278 addlt fp, r3, -1 |
| }
| if (r2 != 0) {
0x0006927c cbnz r2, 0x692b0 | goto label_25;
| }
0x0006927e ldr r2, [r6, 0x68] | r2 = *((r6 + 0x68));
0x00069280 add.w sl, fp, fp, lsl 2 | sl = fp + (fp << 2);
0x00069284 add.w r2, r2, sl, lsl 2 | r2 += (sl << 2);
| label_9:
0x00069288 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0006928a ldr r2, [sp, 0xc] | r2 = var_ch;
0x0006928c add.w r7, sb, r2 | r7 = sb + r2;
0x00069290 ldr r2, [sp, 8] | r2 = var_8h;
0x00069292 cmp r2, 0 |
| if (r2 == 0) {
0x00069294 beq.w 0x68fec | goto label_4;
| }
0x00069298 b 0x68f9c | goto label_5;
| label_19:
0x0006929a ldr r3, [pc, 0x5c] |
0x0006929c add r3, pc | r3 = 0xd259a;
0x0006929e adds r3, 4 | r3 += 4;
0x000692a0 b 0x69044 | goto label_6;
| label_18:
0x000692a2 ldr r2, [r6, 0x6c] | r2 = *((r6 + 0x6c));
0x000692a4 b 0x6901e | goto label_7;
| label_22:
0x000692a6 ldr r3, [pc, 0x54] |
0x000692a8 add r3, pc | r3 = 0xd25aa;
0x000692aa adds r3, 4 | r3 += 4;
0x000692ac str r3, [sp, 0x20] | var_20h = r3;
0x000692ae b 0x6919e | goto label_8;
| label_25:
0x000692b0 ldr r2, [pc, 0x4c] |
0x000692b2 add r2, pc | r2 = 0xd25b6;
0x000692b4 adds r2, 4 | r2 += 4;
0x000692b6 b 0x69288 | goto label_9;
| label_24:
0x000692b8 ldr r3, [pc, 0x48] |
0x000692ba add r3, pc | r3 = 0xd25c2;
0x000692bc adds r3, 4 | r3 += 4;
0x000692be b 0x69258 | goto label_10;
| label_23:
0x000692c0 str r7, [sp] | *(sp) = r7;
0x000692c2 movs r1, 0x14 | r1 = 0x14;
0x000692c4 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000692c6 mov r0, r6 | r0 = r6;
0x000692c8 ldr r2, [sp, 8] | r2 = var_8h;
0x000692ca bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000692ce b 0x69238 | goto label_11;
| label_20:
0x000692d0 mov r3, r7 | r3 = r7;
0x000692d2 movs r1, 0x14 | r1 = 0x14;
0x000692d4 mov r0, r6 | r0 = r6;
0x000692d6 str r7, [sp] | *(sp) = r7;
0x000692d8 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000692dc ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000692de mov sl, r0 | sl = r0;
0x000692e0 b 0x6916c | goto label_12;
| label_21:
0x000692e2 movs r3, 0 | r3 = 0;
0x000692e4 mov r2, ip | r2 = ip;
0x000692e6 str r3, [sp] | *(sp) = r3;
0x000692e8 movs r1, 0x73 | r1 = 0x73;
0x000692ea mov r0, r6 | r0 = r6;
0x000692ec bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000692f0 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000692f2 mov sl, r0 | sl = r0;
0x000692f4 b 0x6916c | goto label_12;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x69308).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x69cc0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00069cc0 () | void fcn_00069cc0 (int16_t arg_d8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_b8h;
| int16_t var_4h_2;
| int16_t var_ch;
| int32_t var_1ch;
| int32_t var_1ch_2;
| int16_t var_44h;
| int16_t var_50h;
| int16_t var_54h_2;
| int16_t var_78h;
| int32_t var_84h;
| int16_t var_88h_2;
| int16_t var_ach;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00069cc0 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00069cc4 sub sp, 0xb4 |
0x00069cc6 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00069cca movs r5, 0 | r5 = 0;
0x00069ccc add.w sl, sp, 0x44 | sl += var_44h;
0x00069cd0 mov r6, r0 | r6 = r0;
0x00069cd2 ldr r2, [pc, 0x150] |
0x00069cd4 mov r7, r1 | r7 = r1;
0x00069cd6 ldr r3, [pc, 0x150] | r3 = *(0x69e2a);
0x00069cd8 mov r1, r5 | r1 = r5;
0x00069cda mov r0, sl | r0 = sl;
0x00069cdc add.w sb, sp, 0x78 | sb += var_78h;
0x00069ce0 add r2, pc | r2 = 0xd3b0a;
0x00069ce2 ldr.w r8, [r6] | r8 = *(r6);
0x00069ce6 ldr r3, [r2, r3] |
0x00069ce8 movs r2, 0x34 | r2 = 0x34;
0x00069cea add.w fp, sp, 0x10 |
0x00069cee ldr r3, [r3] | r3 = *(0xd3b0a);
0x00069cf0 str r3, [sp, 0xac] | var_ach = r3;
0x00069cf2 mov.w r3, 0 | r3 = 0;
0x00069cf6 str r5, [sp, 0xc] | var_ch = r5;
0x00069cf8 blx 0x8264 | fcn_00008264 ();
0x00069cfc movs r2, 0x34 | r2 = 0x34;
0x00069cfe mov r1, r5 | r1 = r5;
0x00069d00 mov r0, sb | r0 = sb;
0x00069d02 blx 0x8264 | fcn_00008264 ();
0x00069d06 movs r2, 0x34 | r2 = 0x34;
0x00069d08 mov r1, r5 | r1 = r5;
0x00069d0a mov r0, fp | r0 = fp;
0x00069d0c blx 0x8264 | fcn_00008264 ();
0x00069d10 ldr r4, [r7, 0xc] | r4 = *((r7 + 0xc));
0x00069d12 cmp r4, 0 |
| if (r4 == 0) {
0x00069d14 beq 0x69dce | goto label_5;
| }
0x00069d16 mov r1, r4 | r1 = r4;
0x00069d18 mov r3, r5 | r3 = r5;
0x00069d1a mov r2, r5 | r2 = r5;
0x00069d1c mov r0, r8 | r0 = r8;
0x00069d1e bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x00069d22 ldrb.w r3, [r8, 0x53] | r3 = *((r8 + 0x53));
0x00069d26 mov r4, r0 | r4 = r0;
| if (r3 != 0) {
0x00069d28 cbz r3, 0x69d4e |
| if (r4 != 0) {
| label_0:
0x00069d2a cbz r4, 0x69d34 |
| label_3:
0x00069d2c mov r1, r4 | r1 = r4;
0x00069d2e mov r0, r8 | r0 = r8;
0x00069d30 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
| label_1:
0x00069d34 ldr r2, [pc, 0xf4] |
0x00069d36 ldr r3, [pc, 0xf0] | r3 = *(0x69e2a);
0x00069d38 add r2, pc | r2 = 0xd3b68;
0x00069d3a ldr r3, [r2, r3] | r3 = *(0xd3b68);
0x00069d3c ldr r2, [r3] | r2 = *(0xd3b68);
0x00069d3e ldr r3, [sp, 0xac] | r3 = var_ach;
0x00069d40 eors r2, r3 | r2 ^= r3;
0x00069d42 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00069d46 bne 0x69e1e | goto label_6;
| }
0x00069d48 add sp, 0xb4 |
0x00069d4a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00069d4e ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00069d50 movs r2, 0x2c | r2 = 0x2c;
0x00069d52 strb.w r2, [sp, 0x10] | var_0h = r2;
0x00069d56 movs r2, 0x39 | r2 = 0x39;
0x00069d58 strb.w r2, [sp, 0x44] | var_44h = r2;
0x00069d5c mov r1, r0 | r1 = r0;
0x00069d5e ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00069d60 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00069d62 str r0, [sp, 0x50] | var_50h = r0;
0x00069d64 str r2, [sp, 0x54] | var_54h_2 = r2;
0x00069d66 add r2, sp, 0xc | r2 += var_ch;
0x00069d68 strd r0, r3, [sp, 0x84] | __asm ("strd r0, r3, [var_88h_2]");
0x00069d6c movs r3, 0x37 | r3 = 0x37;
0x00069d6e mov r0, r6 | r0 = r6;
0x00069d70 strb.w r3, [sp, 0x78] | var_78h = r3;
0x00069d74 strd sl, sb, [sp, 0x1c] | __asm ("strd sl, sb, [var_1ch]");
0x00069d78 bl 0x69b84 | fcn_00069b84 (r0, r1, r2, r3, r4);
0x00069d7c mov r3, r4 | r3 = r4;
| if (r4 != 0) {
0x00069d7e cbnz r4, 0x69d8e | goto label_7;
| }
0x00069d80 b 0x69da6 | goto label_2;
| do {
0x00069d82 lsls r2, r2, 0xd | r2 <<= 0xd;
0x00069d84 itet mi |
| if (r2 >= r2) {
0x00069d86 ldrmi r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r2 < r2) {
0x00069d88 ldrpl r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| }
| if (r2 >= r2) {
0x00069d8a ldrmi r3, [r3, 8] | r3 = *((r3 + 8));
| }
| if (r3 == 0) {
0x00069d8c cbz r3, 0x69da6 | goto label_2;
| }
| label_7:
0x00069d8e ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00069d90 tst.w r2, 0x41000 |
0x00069d94 bne 0x69d82 |
| } while ((r2 & 0x41000) != 0);
0x00069d96 bic r2, r2, 0x1000 | r2 = BIT_MASK (r2, 0x1000);
0x00069d9a str r0, [r3, 0x1c] | *((r3 + 0x1c)) = r0;
0x00069d9c str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00069d9e ldrb r2, [r3] | r2 = *(r3);
0x00069da0 strb r2, [r3, 2] | *((r3 + 2)) = r2;
0x00069da2 movs r2, 0xaf | r2 = 0xaf;
0x00069da4 strb r2, [r3] | *(r3) = r2;
| label_2:
0x00069da6 ldr r5, [sp] | r5 = *(sp);
0x00069da8 mov r1, fp | r1 = fp;
0x00069daa ldr r2, [sp, 4] | r2 = var_4h_2;
| if (r5 == 0) {
0x00069dac cbz r5, 0x69e02 | goto label_8;
| }
0x00069dae ldr r3, [sp, 0xd8] | r3 = *(arg_d8h);
0x00069db0 mov r0, r6 | r0 = r6;
0x00069db2 blx r5 | uint32_t (*r5)(uint32_t, uint32_t) (r0, r3);
0x00069db4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00069db6 cmp r3, 0 |
| if (r3 == 0) {
0x00069db8 beq 0x69d2a | goto label_0;
| }
0x00069dba ldrb r2, [r6, 0x13] | r2 = *((r6 + 0x13));
0x00069dbc cmp r2, 7 |
| if (r2 > 7) {
0x00069dbe bhi 0x69d2a | goto label_0;
| }
| label_4:
0x00069dc0 add.w r1, r6, r2, lsl 2 | r1 = r6 + (r2 << 2);
0x00069dc4 adds r2, 1 | r2++;
0x00069dc6 strb r2, [r6, 0x13] | *((r6 + 0x13)) = r2;
0x00069dc8 str.w r3, [r1, 0x94] | __asm ("str.w r3, [r1, 0x94]");
0x00069dcc b 0x69d2a | goto label_0;
| label_5:
0x00069dce ldrb.w r3, [r8, 0x53] | r3 = *((r8 + 0x53));
0x00069dd2 cmp r3, 0 |
| if (r3 != 0) {
0x00069dd4 bne 0x69d34 | goto label_1;
| }
0x00069dd6 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00069dd8 movs r2, 0x2c | r2 = 0x2c;
0x00069dda strb.w r2, [sp, 0x10] | var_0h = r2;
0x00069dde movs r2, 0x39 | r2 = 0x39;
0x00069de0 strb.w r2, [sp, 0x44] | var_44h = r2;
0x00069de4 movs r2, 0x37 | r2 = 0x37;
0x00069de6 strb.w r2, [sp, 0x78] | var_78h = r2;
0x00069dea mov r1, r4 | r1 = r4;
0x00069dec ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00069dee mov r0, r6 | r0 = r6;
0x00069df0 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00069df2 strd sl, sb, [sp, 0x1c] | __asm ("strd sl, sb, [var_1ch]");
0x00069df6 str r2, [sp, 0x54] | var_54h_2 = r2;
0x00069df8 add r2, sp, 0xc | r2 += var_ch;
0x00069dfa str r3, [sp, 0x88] | var_88h_2 = r3;
0x00069dfc bl 0x69b84 | fcn_00069b84 (r0, r1, r2, r3, r4);
0x00069e00 b 0x69da6 | goto label_2;
| label_8:
0x00069e02 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00069e04 mov r0, r6 | r0 = r6;
0x00069e06 orr r3, r3, 1 | r3 |= 1;
0x00069e0a str r3, [r4, 4] | *((r4 + 4)) = r3;
0x00069e0c bl 0x63a00 | fcn_00063a00 (r0, r1);
0x00069e10 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00069e12 cmp r3, 0 |
| if (r3 == 0) {
0x00069e14 beq 0x69d2c | goto label_3;
| }
0x00069e16 ldrb r2, [r6, 0x13] | r2 = *((r6 + 0x13));
0x00069e18 cmp r2, 7 |
| if (r2 > 7) {
0x00069e1a bhi 0x69d2c | goto label_3;
| }
0x00069e1c b 0x69dc0 | goto label_4;
| label_6:
0x00069e1e blx 0x7e8c | fcn_00007e8c ();
0x00069e22 nop |
0x00069e24 subs r7, 0xb0 | r7 -= 0xb0;
0x00069e26 movs r6, r0 | r6 = r0;
0x00069e28 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00069e2a movs r0, r0 |
0x00069e2c subs r7, 0x58 | r7 -= 0x58;
0x00069e2e movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x69e30 */
| #include <stdint.h>
|
; (fcn) fcn.00069e30 () | void fcn_00069e30 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_bp_8h;
| int16_t var_17h;
| int16_t var_2ch;
| int16_t var_38h;
| int16_t var_bp_74h;
| int16_t var_sp_0h;
| int16_t var_8h;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_sp_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_sp_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_4ch;
| int16_t var_5ch;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h_2;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_b8h;
| int16_t var_4h;
| int16_t var_14h_2;
| int16_t var_44h_2;
| int16_t var_48h;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00069e30 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00069e34 sub sp, 0x94 |
0x00069e36 str r2, [sp, 0x40] | var_40h = r2;
0x00069e38 mov r4, r3 | r4 = r3;
0x00069e3a mov fp, r0 |
0x00069e3c mov r7, r1 | r7 = r1;
0x00069e3e ldr.w r2, [pc, 0xba8] | r2 = *(0x0006a9e8);
0x00069e42 ldr.w r3, [pc, 0xba8] |
0x00069e46 ldr.w sl, [r1, 0x44] | sl = *((r1 + 0x44));
0x00069e4a add r2, pc | r2 += pc;
0x00069e4c ldr r5, [r0, 8] | r5 = *((r0 + 8));
0x00069e4e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00069e50 ldr r6, [sp, 0xb8] | r6 = var_b8h;
0x00069e52 ldr r3, [r3] | r3 = *(0x6a9ee);
0x00069e54 str r3, [sp, 0x8c] | var_8ch = r3;
0x00069e56 mov.w r3, 0 | r3 = 0;
0x00069e5a ldr.w r3, [sl, 0xc] | r3 = *((sl + 0xc));
0x00069e5e str r3, [sp, 0x18] | var_18h = r3;
0x00069e60 cmp r5, 0 |
| if (r5 == 0) {
0x00069e62 beq.w 0x6a59e | goto label_42;
| }
| label_9:
0x00069e66 ldr.w r2, [fp, 0x38] | r2 = var_38h;
0x00069e6a movs r1, 0 | r1 = 0;
0x00069e6c ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x00069e6e add r0, sp, 0x68 | r0 += var_68h;
0x00069e70 str r2, [sp, 0x1c] | var_1ch = r2;
0x00069e72 movs r2, 0x24 | r2 = 0x24;
0x00069e74 ldr r7, [r3, 0x18] | r7 = *((r3 + 0x18));
0x00069e76 ldr.w sb, [r3, 0x30] | sb = *((r3 + 0x30));
0x00069e7a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00069e7c ldrsh.w r7, [r7, 0x2a] | r7 = *((r7 + 0x2a));
0x00069e80 subs r3, 1 | r3--;
0x00069e82 str.w r3, [fp, 0x38] | __asm ("str.w r3, [var_38h]");
0x00069e86 str r3, [sp, 0x30] | var_30h = r3;
0x00069e88 blx 0x8264 | fcn_00008264 ();
0x00069e8c ldr.w r1, [sl, 0x30] | r1 = *((sl + 0x30));
0x00069e90 ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x00069e94 strd r6, r4, [sp, 0x60] | __asm ("strd r6, r4, [sp, 0x60]");
0x00069e98 adds r2, r1, 2 | r2 = r1 + 2;
0x00069e9a str r1, [sp, 0x34] | var_34h = r1;
0x00069e9c str r2, [sp, 0x74] | var_bp_74h = r2;
0x00069e9e cmp r3, 0x56 |
0x00069ea0 mov r2, r1 | r2 = r1;
0x00069ea2 str r1, [sp, 0x7c] | var_7ch = r1;
0x00069ea4 add.w r2, r2, 1 | r2++;
0x00069ea8 add.w r1, r1, 3 | r1 += 3;
0x00069eac ldrb.w r4, [sl, 0x10] | r4 = *((sl + 0x10));
0x00069eb0 strd fp, sl, [sp, 0x54] | __asm ("strd fp, sl, [sp, 0x54]");
0x00069eb4 str r5, [sp, 0x5c] | var_5ch = r5;
0x00069eb6 str r1, [sp, 0x38] | var_38h = r1;
0x00069eb8 str r1, [sp, 0x84] | var_84h = r1;
0x00069eba str r2, [sp, 0x20] | var_20h = r2;
| if (r3 == 0x56) {
0x00069ebc beq.w 0x6a652 | goto label_43;
| }
0x00069ec0 cmp r3, 0x5a |
| if (r3 == 0x5a) {
0x00069ec2 beq.w 0x6a5e2 | goto label_44;
| }
0x00069ec6 ldrb.w r1, [sl, 0x12] | r1 = *((sl + 0x12));
0x00069eca movs r2, 2 | r2 = 2;
0x00069ecc str r2, [sp, 0x6c] | var_6ch = r2;
| label_25:
0x00069ece ldr.w r6, [fp, 0x2c] | r6 = var_2ch;
0x00069ed2 subs r3, 0x56 | r3 -= 0x56;
0x00069ed4 tst.w r3, 0xfd |
0x00069ed8 add.w r2, r6, r7 | r2 = r6 + r7;
0x00069edc add.w r6, r6, 1 | r6++;
0x00069ee0 add.w r8, r2, 2 | r8 = r2 + 2;
0x00069ee4 add.w r0, r2, 1 | r0 = r2 + 1;
0x00069ee8 str.w r8, [fp, 0x2c] | __asm ("str.w r8, [var_2ch]");
0x00069eec str.w r8, [sp, 0x70] | __asm ("str.w r8, [var_70h]");
0x00069ef0 str r0, [sp, 0x10] | var_10h = r0;
| if ((r3 & 0xfd) != 0) {
0x00069ef2 bne.w 0x6aafa | goto label_45;
| }
| label_16:
0x00069ef6 adds r3, r2, 3 | r3 = r2 + 3;
0x00069ef8 str r3, [sp, 8] | var_bp_8h = r3;
0x00069efa str.w r3, [fp, 0x2c] | __asm ("str.w r3, [var_2ch]");
| label_15:
0x00069efe subs r1, 0x56 | r1 -= 0x56;
0x00069f00 tst.w r1, 0xfd |
0x00069f04 iteet eq |
| if ((r1 & 0xfd) != 0) {
0x00069f06 ldreq r3, [fp, 0x2c] | r3 = var_2ch;
| }
| if ((r1 & 0xfd) == 0) {
0x00069f0a movne r3, 0 | r3 = 0;
| }
| if ((r1 & 0xfd) != 0) {
0x00069f0c streq r3, [sp, 0xc] | var_ch_2 = r3;
| }
| if ((r1 & 0xfd) == 0) {
0x00069f0e adds r3, 1 | r3++;
| }
0x00069f10 itt eq |
| if (r3 != 1) {
0x00069f12 streq r3, [sp, 0xc] | var_ch_2 = r3;
| }
| if (r3 != 1) {
0x00069f14 streq r3, [fp, 0x2c] | var_2ch = r3;
| }
0x00069f18 cmp r4, 0x4c |
| if (r4 == 0x4c) {
0x00069f1a beq.w 0x6a5ce | goto label_46;
| }
0x00069f1e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00069f20 cmp r3, 0 |
| if (r3 == 0) {
0x00069f22 beq.w 0x6a8ec | goto label_47;
| }
0x00069f26 ldr r3, [r3] | r3 = *(r3);
| label_27:
0x00069f28 ldr.w r1, [sl, 0x4c] | r1 = *((sl + 0x4c));
0x00069f2c ldr.w r2, [sl, 8] | r2 = *((sl + 8));
0x00069f30 adds r1, r6, r1 | r1 = r6 + r1;
0x00069f32 str r1, [sp, 0x3c] | var_3ch = r1;
| if (r2 != 0) {
0x00069f34 cbz r2, 0x69f3c |
0x00069f36 ldr r2, [r2] | r2 = *(r2);
0x00069f38 add r1, r2 | r1 += r2;
0x00069f3a str r1, [sp, 0x3c] | var_3ch = r1;
| }
0x00069f3c ldr.w r1, [fp, 0x2c] | r1 = var_2ch;
0x00069f40 adds r2, r1, r3 | r2 = r1 + r3;
0x00069f42 adds r1, 1 | r1++;
0x00069f44 str r1, [sp, 0x28] | var_28h = r1;
0x00069f46 add.w r1, r2, r3 | r1 = r2 + r3;
0x00069f4a add.w r2, r2, 1 | r2++;
0x00069f4e str r2, [sp, 0x78] | var_78h_2 = r2;
0x00069f50 add.w r2, r1, r3 | r2 = r1 + r3;
0x00069f54 add r3, r2 | r3 += r2;
0x00069f56 add.w r2, r2, 1 | r2++;
0x00069f5a str r2, [sp, 0x88] | var_88h = r2;
0x00069f5c add.w r1, r1, 1 | r1++;
0x00069f60 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00069f62 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [var_2ch]");
0x00069f66 ite ne |
| if (r1 == 1) {
0x00069f68 movne r3, 1 | r3 = 1;
| }
| if (r1 != 1) {
0x00069f6a moveq r3, 0 | r3 = 0;
| }
0x00069f6c str r1, [sp, 0x80] | var_80h = r1;
0x00069f6e cmp r2, 0 |
0x00069f70 ite eq |
| if (r2 != 0) {
0x00069f72 moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0) {
0x00069f74 andne r3, r3, 1 | r3 &= 1;
| }
0x00069f78 str r3, [sp, 0x4c] | var_4ch = r3;
| label_12:
0x00069f7a cmp r7, 0 |
0x00069f7c it gt |
| if (r7 <= 0) {
0x00069f7e movgt r4, 0 | r4 = 0;
| }
| if (r7 <= 0) {
0x00069f80 ble 0x69f98 | goto label_48;
| }
| do {
0x00069f82 adds r3, r6, r4 | r3 = r6 + r4;
0x00069f84 mov r2, sb | r2 = sb;
0x00069f86 str r3, [sp] | *(sp) = r3;
0x00069f88 movs r1, 0x5b | r1 = 0x5b;
0x00069f8a mov r3, r4 | r3 = r4;
0x00069f8c mov r0, r5 | r0 = r5;
0x00069f8e adds r4, 1 | r4++;
0x00069f90 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00069f94 cmp r7, r4 |
0x00069f96 bne 0x69f82 |
| } while (r7 != r4);
| label_48:
0x00069f98 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00069f9a movs r1, 0x5d | r1 = 0x5d;
0x00069f9c mov r3, r7 | r3 = r7;
0x00069f9e mov r0, r5 | r0 = r5;
0x00069fa0 str r2, [sp] | *(sp) = r2;
0x00069fa2 mov r2, r6 | r2 = r6;
0x00069fa4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00069fa8 ldr.w r1, [sl, 8] | r1 = *((sl + 8));
0x00069fac cmp r1, 0 |
| if (r1 == 0) {
0x00069fae beq.w 0x6a542 | goto label_49;
| }
0x00069fb2 ldr.w r3, [sl, 0x4c] | r3 = *((sl + 0x4c));
0x00069fb6 mov r0, fp | r0 = fp;
0x00069fb8 ldr r4, [r1] | r4 = *(r1);
0x00069fba add r6, r3 | r6 += r3;
0x00069fbc movs r3, 0 | r3 = 0;
0x00069fbe mov r2, r3 | r2 = r3;
| label_5:
0x0006a074 ldr r6, [sp, 0x20] | r6 = *((sp + 0x20));
0x0006a076 movs r4, 0 | r4 = 0;
0x0006a078 mov r3, r8 | r3 = r8;
0x0006a07a movs r1, 0x7b | r1 = 0x7b;
0x0006a07c mov r0, r5 | r0 = r5;
0x0006a07e str r4, [sp] | *(sp) = r4;
0x0006a080 mov r2, r6 | r2 = r6;
0x0006a082 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a086 ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006a088 mov r2, r6 | r2 = r6;
0x0006a08a movs r1, 0x7c | r1 = 0x7c;
0x0006a08c mov r0, r5 | r0 = r5;
0x0006a08e str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006a092 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a096 ldr r3, [r5, 0x6c] | r3 = *((r5 + 0x6c));
0x0006a098 ldr.w r2, [sl, 0x54] | r2 = *((sl + 0x54));
0x0006a09c mov r1, r3 | r1 = r3;
0x0006a09e str r3, [sp, 0x10] | *((sp + 0x10)) = r3;
0x0006a0a0 ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x0006a0a2 cmp r1, r3 |
| if (r1 >= r3) {
0x0006a0a4 bge.w 0x6a882 | goto label_50;
| }
0x0006a0a8 ldr r1, [sp, 0x10] | r1 = *((sp + 0x10));
0x0006a0aa movs r6, 0x34 | r6 = 0x34;
0x0006a0ac ldr r0, [r5, 0x68] | r0 = *((r5 + 0x68));
0x0006a0ae add.w r3, r1, r1, lsl 2 | r3 = r1 + (r1 << 2);
0x0006a0b2 adds r1, 1 | r1++;
0x0006a0b4 str r1, [r5, 0x6c] | *((r5 + 0x6c)) = r1;
0x0006a0b6 lsls r3, r3, 2 | r3 <<= 2;
0x0006a0b8 adds r1, r0, r3 | r1 = r0 + r3;
0x0006a0ba str r2, [r1, 4] | *((r1 + 4)) = r2;
0x0006a0bc strd r4, r8, [r1, 8] | __asm ("strd r4, r8, [r1, 8]");
0x0006a0c0 str r4, [r1, 0x10] | *((r1 + 0x10)) = r4;
0x0006a0c2 str r6, [r0, r3] | *((r0 + r3)) = r6;
| label_24:
0x0006a0c4 ldr.w r7, [fp, 8] | r7 = var_bp_8h;
0x0006a0c8 cmp r7, 0 |
| if (r7 == 0) {
0x0006a0ca beq.w 0x6a5b0 | goto label_51;
| }
| label_10:
0x0006a0ce ldr.w r3, [pc, 0x920] | r3 = *(0x0006a9f0);
0x0006a0d2 movs r6, 0 | r6 = 0;
0x0006a0d4 str r5, [sp, 0x44] | var_44h_2 = r5;
0x0006a0d6 mov r4, sl | r4 = sl;
0x0006a0d8 str.w fp, [sp, 0x48] | __asm ("str.w fp, [var_48h]");
0x0006a0dc mov sb, r6 | sb = r6;
0x0006a0de add r3, pc | r3 += pc;
0x0006a0e0 mov r8, r7 | r8 = r7;
0x0006a0e2 add.w r2, r3, 0xac0 | r2 = r3 + 0xac0;
0x0006a0e6 mov r5, r3 | r5 = r3;
0x0006a0e8 mov fp, r2 |
| do {
0x0006a0ea ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0006a0ec movs r2, 0 | r2 = 0;
0x0006a0ee ldr r7, [r4, 0x2c] | r7 = *((r4 + 0x2c));
0x0006a0f0 movs r1, 0x48 | r1 = 0x48;
0x0006a0f2 mov r0, r8 | r0 = r8;
0x0006a0f4 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006a0f8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a0fc ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x0006a0fe ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| if (r3 != 0) {
0x0006a100 cbz r3, 0x6a104 |
0x0006a102 ldr r3, [r3] | r3 = *(r3);
| }
0x0006a104 ldr.w r2, [sl, 0x58] | r2 = *((sl + 0x58));
0x0006a108 cmp r6, r3 |
0x0006a10a it lt |
| if (r6 >= r3) {
0x0006a10c movlt r6, r3 | r6 = r3;
| }
| if (r2 == 0) {
0x0006a10e cbnz r2, 0x6a14a |
0x0006a110 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x0006a112 addw r1, r5, 0xacc | __asm ("addw r1, r5, aav.0x000000ff");
0x0006a116 cmp r3, r1 |
0x0006a118 it ne |
| if (r3 != r1) {
0x0006a11a cmpne r3, fp | __asm ("cmpne r3, fp");
| }
| if (r3 == r1) {
0x0006a11c bne 0x6a13c |
0x0006a11e ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x0006a120 movs r1, 0x45 | r1 = 0x45;
0x0006a122 str r2, [sp] | *(sp) = r2;
0x0006a124 mov r0, r8 | r0 = r8;
0x0006a126 str r2, [sp, 0x14] | var_14h_2 = r2;
0x0006a128 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a12c ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x0006a12e movs r1, 0x45 | r1 = 0x45;
0x0006a130 ldr r2, [sp, 0x14] | r2 = var_14h_2;
0x0006a132 mov r0, r8 | r0 = r8;
0x0006a134 adds r3, 1 | r3++;
0x0006a136 str r2, [sp] | *(sp) = r2;
0x0006a138 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0006a13c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0006a13e lsls r3, r3, 0x13 | r3 <<= 0x13;
| if (r3 >= r3) {
0x0006a140 bpl 0x6a14a | goto label_0;
| }
0x0006a142 ldr r2, [r4, 0x3c] | r2 = *((r4 + 0x3c));
0x0006a144 cmp r2, 0 |
| if (r2 != 0) {
0x0006a146 bne.w 0x6a4a0 | goto label_52;
| }
| }
| label_0:
0x0006a14a ldr r4, [r4, 0x24] | r4 = *((r4 + 0x24));
0x0006a14c cmp r4, 0 |
0x0006a14e bne 0x6a0ea |
| } while (r4 != 0);
0x0006a150 ldrd r5, fp, [sp, 0x44] | __asm ("ldrd r5, fp, [var_44h_2]");
0x0006a154 ldr r7, [sp, 8] | r7 = *((sp + 8));
0x0006a156 ldr.w r3, [fp, 0x2c] | r3 = var_2ch;
0x0006a15a mov r2, r7 | r2 = r7;
0x0006a15c add r6, r3 | r6 += r3;
0x0006a15e adds r3, 1 | r3++;
0x0006a160 str.w r6, [fp, 0x2c] | __asm ("str.w r6, [var_2ch]");
0x0006a164 str r3, [sp, 0x68] | *((sp + 0x68)) = r3;
| if (r7 != 0) {
0x0006a166 cbz r7, 0x6a1ae |
0x0006a168 ldr.w r3, [fp, 8] | r3 = var_bp_8h;
0x0006a16c ldr.w r6, [sl, 0x18] | r6 = *((sl + 0x18));
| if (r3 != 0) {
0x0006a170 cbz r3, 0x6a19a |
0x0006a172 mov r1, r6 | r1 = r6;
0x0006a174 mov r0, fp | r0 = fp;
0x0006a176 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0006a17a cmp r7, r0 |
0x0006a17c mov r2, r0 | r2 = r0;
0x0006a17e mov r1, r7 | r1 = r7;
| if (r7 == r0) {
0x0006a180 beq 0x6a19a | goto label_53;
| }
0x0006a182 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0006a184 str r4, [sp] | *(sp) = r4;
0x0006a186 ldr.w r0, [fp, 8] | r0 = var_bp_8h;
0x0006a18a tst.w r3, 0x200000 |
0x0006a18e mov r3, r7 | r3 = r7;
0x0006a190 ite ne |
| if ((r3 & 0x200000) == 0) {
0x0006a192 movne r1, 0x4d | r1 = 0x4d;
| }
| if ((r3 & 0x200000) != 0) {
0x0006a194 moveq r1, 0x4e | r1 = 0x4e;
| }
0x0006a196 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
| label_53:
0x0006a19a ldrb.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0006a19e mov r0, fp | r0 = fp;
0x0006a1a0 ldr r1, [sp, 8] | r1 = *((sp + 8));
0x0006a1a2 cmp r3, 0x59 |
0x0006a1a4 ite eq |
| if (r3 != 0x59) {
0x0006a1a6 moveq r2, 3 | r2 = 3;
| }
| if (r3 == 0x59) {
0x0006a1a8 movne r2, 0 | r2 = 0;
| }
0x0006a1aa bl 0x2e0bc | fcn_0002e0bc (r0, r1, r2);
| }
0x0006a1ae ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x0006a1b0 mov r2, r6 | r2 = r6;
| if (r6 != 0) {
0x0006a1b2 cbz r6, 0x6a200 |
0x0006a1b4 ldr.w r3, [fp, 8] | r3 = var_bp_8h;
0x0006a1b8 ldr.w r4, [sl, 0x1c] | r4 = *((sl + 0x1c));
| if (r3 != 0) {
0x0006a1bc cbz r3, 0x6a1ec |
0x0006a1be mov r1, r4 | r1 = r4;
0x0006a1c0 mov r0, fp | r0 = fp;
0x0006a1c2 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0006a1c6 cmp r6, r0 |
0x0006a1c8 mov r2, r0 | r2 = r0;
0x0006a1ca mov r1, r6 | r1 = r6;
| if (r6 == r0) {
0x0006a1cc beq 0x6a1ec | goto label_54;
| }
0x0006a1ce ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0006a1d0 tst.w r3, 0x200000 |
0x0006a1d4 mov.w r3, 0 | r3 = 0;
0x0006a1d8 str r3, [sp] | *(sp) = r3;
0x0006a1da it ne |
| if ((r3 & 0x200000) == 0) {
0x0006a1dc movne r1, 0x4d | r1 = 0x4d;
| }
0x0006a1de ldr.w r0, [fp, 8] | r0 = var_bp_8h;
0x0006a1e2 mov r3, r6 | r3 = r6;
0x0006a1e4 it eq |
| if ((r3 & 0x200000) != 0) {
0x0006a1e6 moveq r1, 0x4e | r1 = 0x4e;
| }
0x0006a1e8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
| label_54:
0x0006a1ec ldrb.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0006a1f0 mov r0, fp | r0 = fp;
0x0006a1f2 ldr r1, [sp, 0xc] | r1 = *((sp + 0xc));
0x0006a1f4 cmp r3, 0x59 |
0x0006a1f6 ite eq |
| if (r3 != 0x59) {
0x0006a1f8 moveq r2, 4 | r2 = 4;
| }
| if (r3 == 0x59) {
0x0006a1fa movne r2, 1 | r2 = 1;
| }
0x0006a1fc bl 0x2e0bc | fcn_0002e0bc (r0, r1, r2);
| }
0x0006a200 ldrb.w r2, [sl, 0x10] | r2 = *((sl + 0x10));
0x0006a204 ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x0006a208 cmp r2, 0x59 |
| if (r2 == 0x59) {
0x0006a20a beq.w 0x6a5d8 | goto label_55;
| }
0x0006a20e ldrb.w r2, [sl, 0x12] | r2 = *((sl + 0x12));
0x0006a212 add r4, sp, 0x54 | r4 += var_54h;
0x0006a214 ldr r1, [sp, 8] | r1 = *((sp + 8));
0x0006a216 subs r2, r2, r3 | r2 -= r3;
0x0006a218 clz r2, r2 | r2 &= r2;
0x0006a21c cmp r1, 0 |
0x0006a21e lsr.w r2, r2, 5 | r2 >>= 5;
0x0006a222 it eq |
| if (r1 != 0) {
0x0006a224 moveq r2, 0 | r2 = 0;
| }
0x0006a226 cmp r2, 0 |
| if (r2 != 0) {
0x0006a228 bne.w 0x6aa1c | goto label_56;
| }
| label_34:
0x0006a22c cmp r3, 0x56 |
| if (r3 == 0x56) {
0x0006a22e beq.w 0x6a520 | goto label_57;
| }
| label_13:
0x0006a232 cmp r3, 0x5a |
| if (r3 != 0x5a) {
0x0006a234 bne.w 0x6a530 | goto label_14;
| }
| label_4:
0x0006a238 movs r6, 0 | r6 = 0;
0x0006a23a ldr r2, [sp, 0x34] | r2 = *((sp + 0x34));
0x0006a23c movs r1, r0 | r1 = r0;
0x0006a23e movs r0, r0 |
0x0006a240 mov r0, r5 | r0 = r5;
0x0006a242 str r6, [sp] | *(sp) = r6;
0x0006a244 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a248 movs r3, 1 | r3 = 1;
0x0006a24a ldr r2, [sp, 0x38] | r2 = *((sp + 0x38));
0x0006a24c movs r1, 0x25 | r1 = 0x25;
0x0006a24e mov r0, r5 | r0 = r5;
0x0006a250 str r6, [sp] | *(sp) = r6;
0x0006a252 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a256 ldr r3, [sp, 0x4c] | r3 = *((sp + 0x4c));
0x0006a258 cmp r3, 0 |
| if (r3 != 0) {
0x0006a25a bne.w 0x6a672 | goto label_58;
| }
| label_17:
0x0006a25e movs r2, 0 | r2 = 0;
0x0006a260 ldr r3, [sp, 0x30] | r3 = *((sp + 0x30));
0x0006a262 str r2, [sp] | *(sp) = r2;
0x0006a264 movs r1, 0xb | r1 = 0xb;
0x0006a266 mov r0, r5 | r0 = r5;
0x0006a268 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a26c ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006a26e ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006a270 cmp r3, 0 |
0x0006a272 itt lt |
| if (r3 >= 0) {
0x0006a274 addlt r3, r2, -1 | r3 = r2 + -1;
| }
| if (r3 < 0) {
0x0006a278 str r3, [sp, 0x10] | *((sp + 0x10)) = r3;
| }
0x0006a27a ldr r3, [r5] | r3 = *(r5);
0x0006a27c ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006a280 cmp r3, 0 |
| if (r3 != 0) {
0x0006a282 bne.w 0x6a4c2 | goto label_59;
| }
0x0006a286 ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x0006a288 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0006a28c ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006a28e add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
0x0006a292 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006a294 ldr r3, [sp, 0x28] | r3 = *((sp + 0x28));
0x0006a296 cmp r3, 0 |
| if (r3 != 0) {
0x0006a298 bne.w 0x6a4d4 | goto label_60;
| }
| do {
0x0006a29c ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x0006a2a0 cmp r3, 0x56 |
| if (r3 == 0x56) {
0x0006a2a2 beq.w 0x6a4ee | goto label_61;
| }
| label_1:
0x0006a2a6 ldrb.w r3, [sl, 0x12] | r3 = *((sl + 0x12));
0x0006a2aa cmp r3, 0x58 |
| if (r3 == 0x58) {
0x0006a2ac beq.w 0x6a816 | goto label_62;
| }
0x0006a2b0 movs r3, 0 | r3 = 0;
0x0006a2b2 movs r1, 3 | r1 = 3;
0x0006a2b4 mov r2, r3 | r2 = r3;
0x0006a2b6 mov r0, r4 | r0 = r4;
0x0006a2b8 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a2bc ldrb.w r3, [sl, 0x12] | r3 = *((sl + 0x12));
0x0006a2c0 cmp r3, 0x5a |
| if (r3 == 0x5a) {
0x0006a2c2 beq.w 0x6a722 | goto label_63;
| }
0x0006a2c6 ldrb.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0006a2ca cmp r3, 0x59 |
| if (r3 == 0x59) {
0x0006a2cc beq.w 0x6a980 | goto label_64;
| }
0x0006a2d0 ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0006a2d2 cmp r3, 0 |
| if (r3 != 0) {
0x0006a2d4 bne.w 0x6a6c0 | goto label_65;
| }
| label_33:
0x0006a2d8 ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x0006a2da movs r1, 1 | r1 = 1;
0x0006a2dc mov r3, r6 | r3 = r6;
0x0006a2de mov r2, r6 | r2 = r6;
| label_2:
0x0006a2e0 mov r0, r4 | r0 = r4;
0x0006a2e2 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a2e6 ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006a2e8 movs r3, 0 | r3 = 0;
0x0006a2ea movs r1, 2 | r1 = 2;
0x0006a2ec mov r0, r4 | r0 = r4;
0x0006a2ee bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a2f2 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
| label_21:
0x0006a2f4 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0006a2f8 cmn r2, r3 |
| if (r2 < r3) {
0x0006a2fa bmi.w 0x6a72e | goto label_66;
| }
| label_18:
0x0006a2fe ldr r3, [sp, 0x1c] | r3 = *((sp + 0x1c));
0x0006a300 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0006a302 ldr r1, [r5, 0x6c] | r1 = *((r5 + 0x6c));
0x0006a304 lsls r3, r3, 2 | r3 <<= 2;
0x0006a306 rsbs r3, r3, 0 | r3 -= ;
0x0006a308 str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_19:
0x0006a30a ldr r0, [sp, 0x40] | r0 = *((sp + 0x40));
0x0006a30c bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0006a310 ldr.w r7, [sl, 8] | r7 = *((sl + 8));
0x0006a314 cmp r7, 0 |
| if (r7 == 0) {
0x0006a316 beq.w 0x6a548 | goto label_67;
| }
0x0006a31a ldrd r7, r2, [r5, 0x6c] | __asm ("ldrd r7, r2, [r5, 0x6c]");
0x0006a31e cmp r7, r2 |
| if (r7 >= r2) {
0x0006a320 bge.w 0x6aad0 | goto label_68;
| }
0x0006a324 add.w r1, r7, r7, lsl 2 | r1 = r7 + (r7 << 2);
0x0006a328 ldr.w ip, [r5, 0x68] | ip = *((r5 + 0x68));
0x0006a32c movs r0, 0 | r0 = 0;
0x0006a32e lsl.w r8, r1, 2 | r8 = r1 << 2;
0x0006a332 ldr r1, [sp, 0x24] | r1 = *((sp + 0x24));
0x0006a334 adds r6, r7, 1 | r6 = r7 + 1;
0x0006a336 add.w r3, ip, r8 | r3 = ip + r8;
0x0006a33a mov.w lr, 0x45 | lr = 0x45;
0x0006a33e str r6, [r5, 0x6c] | *((r5 + 0x6c)) = r6;
0x0006a340 strd r1, r0, [r3, 8] | __asm ("strd r1, r0, [r3, 8]");
0x0006a344 str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x0006a346 str.w lr, [ip, r8] | __asm ("str.w lr, [ip, r8]");
0x0006a34a str r0, [r3, 4] | *((r3 + 4)) = r0;
| label_35:
0x0006a34c ldr r3, [sp, 0x2c] | r3 = *((sp + 0x2c));
0x0006a34e cmp r3, 0 |
0x0006a350 itt lt |
| if (r3 >= 0) {
0x0006a352 addlt r3, r6, -1 | r3 = r6 + -1;
| }
| if (r3 < 0) {
0x0006a356 str r3, [sp, 0x2c] | *((sp + 0x2c)) = r3;
| }
0x0006a358 ldr r3, [r5] | r3 = *(r5);
0x0006a35a ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006a35e cmp r3, 0 |
| if (r3 != 0) {
0x0006a360 bne.w 0x6a854 | goto label_69;
| }
0x0006a364 ldr r3, [sp, 0x2c] | r3 = *((sp + 0x2c));
0x0006a366 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0006a36a ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006a36c add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
| label_22:
0x0006a370 cmp r6, r2 |
0x0006a372 str r6, [r3, 8] | *((r3 + 8)) = r6;
0x0006a374 mov.w r3, 0 | r3 = 0;
0x0006a378 str r3, [sp, 0x70] | *((sp + 0x70)) = r3;
| if (r6 >= r2) {
0x0006a37a bge.w 0x6a556 | goto label_70;
| }
| label_6:
0x0006a37e add.w r2, r6, r6, lsl 2 | r2 = r6 + (r6 << 2);
0x0006a382 ldr r0, [r5, 0x68] | r0 = *((r5 + 0x68));
0x0006a384 adds r1, r6, 1 | r1 = r6 + 1;
0x0006a386 lsl.w lr, r2, 2 | lr = r2 << 2;
0x0006a38a ldr r2, [sp, 0x20] | r2 = *((sp + 0x20));
0x0006a38c str r1, [r5, 0x6c] | *((r5 + 0x6c)) = r1;
0x0006a38e mov.w ip, 0x25 |
0x0006a392 add.w r1, r0, lr | r1 = r0 + lr;
0x0006a396 strd r2, r3, [r1, 4] | __asm ("strd r2, r3, [r1, 4]");
0x0006a39a strd r3, r3, [r1, 0xc] | __asm ("strd r3, r3, [r1, 0xc]");
0x0006a39e str.w ip, [r0, lr] | __asm ("str.w ip, [r0, lr]");
0x0006a3a2 ldrb.w r3, [sl, 0x12] | r3 = *((sl + 0x12));
0x0006a3a6 cmp r3, 0x58 |
| if (r3 == 0x58) {
0x0006a3a8 beq.w 0x6a56e | goto label_71;
| }
| label_7:
0x0006a3ac ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x0006a3b0 movs r1, 3 | r1 = 3;
0x0006a3b2 mov r0, r4 | r0 = r4;
0x0006a3b4 cmp r3, 0x56 |
0x0006a3b6 mov.w r3, 0 | r3 = 0;
0x0006a3ba mov r2, r3 | r2 = r3;
| if (r3 == 0x56) {
0x0006a3bc beq.w 0x6a756 | goto label_72;
| }
0x0006a3c0 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a3c4 movs r3, 1 | r3 = 1;
0x0006a3c6 movs r2, 0 | r2 = 0;
0x0006a3c8 mov r1, r3 | r1 = r3;
0x0006a3ca mov r0, r4 | r0 = r4;
0x0006a3cc ldr.w r8, [r5, 0x6c] | r8 = *((r5 + 0x6c));
0x0006a3d0 bl 0x68a98 | r0 = fcn_00068a98 (r0, r1, r2, r3);
0x0006a3d4 mov r3, r0 | r3 = r0;
0x0006a3d6 ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006a3d8 mov r0, r4 | r0 = r4;
0x0006a3da movs r1, 2 | r1 = 2;
0x0006a3dc mov r4, r3 | r4 = r3;
0x0006a3de movs r3, 0 | r3 = 0;
0x0006a3e0 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a3e4 movs r2, 0 | r2 = 0;
0x0006a3e6 mov r3, r8 | r3 = r8;
0x0006a3e8 str r2, [sp] | *(sp) = r2;
0x0006a3ea movs r1, 0xb | r1 = 0xb;
0x0006a3ec mov r0, r5 | r0 = r5;
0x0006a3ee bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a3f2 ldr r3, [r5] | r3 = *(r5);
0x0006a3f4 cmp r4, 0 |
0x0006a3f6 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006a3f8 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006a3fc it lt |
| if (r4 >= 0) {
0x0006a3fe addlt r4, r2, -1 | r4 = r2 + -1;
| }
0x0006a402 cmp r3, 0 |
| if (r3 != 0) {
0x0006a404 bne.w 0x6a85c | goto label_73;
| }
0x0006a408 ldr r1, [r5, 0x68] | r1 = *((r5 + 0x68));
0x0006a40a add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x0006a40e add.w r1, r1, r4, lsl 2 | r1 += (r4 << 2);
| label_20:
0x0006a412 str r2, [r1, 8] | *((r1 + 8)) = r2;
| label_8:
0x0006a414 cmp r6, 0 |
0x0006a416 it lt |
| if (r6 >= 0) {
0x0006a418 addlt r6, r2, -1 | r6 = r2 + -1;
| }
0x0006a41c cmp r3, 0 |
| if (r3 != 0) {
0x0006a41e bne 0x6a516 | goto label_74;
| }
0x0006a420 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006a422 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x0006a426 add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
| label_3:
0x0006a42a movs r4, 0 | r4 = 0;
0x0006a42c str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006a42e movs r1, 0x8e | r1 = 0x8e;
0x0006a430 mov r3, r4 | r3 = r4;
0x0006a432 ldr r2, [sp, 0x7c] | r2 = *((sp + 0x7c));
0x0006a434 mov r0, r5 | r0 = r5;
0x0006a436 str r4, [sp] | *(sp) = r4;
0x0006a438 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a43c ldr.w r3, [sl, 8] | r3 = *((sl + 8));
0x0006a440 cmp r3, 0 |
| if (r3 == 0) {
0x0006a442 beq.w 0x6a73a | goto label_75;
| }
0x0006a444 strh r2, [r7, 0xa] | *((r7 + 0xa)) = r2;
0x0006a446 ldr.w r3, [sl, 0x58] | r3 = *((sl + 0x58));
0x0006a44a cmp r3, 0 |
| if (r3 != 0) {
0x0006a44c bne.w 0x6a864 | goto label_76;
| }
| label_23:
0x0006a450 ldr r3, [r5] | r3 = *(r5);
0x0006a452 cmp r7, 0 |
0x0006a454 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006a456 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006a45a it lt |
| if (r7 >= 0) {
0x0006a45c addlt r7, r2, -1 | r7 = r2 + -1;
| }
0x0006a460 cmp r3, 0 |
| if (r3 != 0) {
0x0006a462 bne.w 0x6a5c4 | goto label_77;
| }
0x0006a466 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006a468 add.w r7, r7, r7, lsl 2 | r7 += (r7 << 2);
0x0006a46c add.w r3, r3, r7, lsl 2 | r3 += (r7 << 2);
| label_11:
0x0006a470 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0006a472 ldr.w r2, [pc, 0x580] | r2 = *(0x0006a9f4);
0x0006a476 ldr.w r3, [pc, 0x574] | r3 = *(0x6a9ee);
0x0006a47a add r2, pc | r2 += pc;
0x0006a47c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006a47e ldr r2, [r3] | r2 = *(0x6a9ee);
0x0006a480 ldr r3, [sp, 0x8c] | r3 = *((sp + 0x8c));
0x0006a482 eors r2, r3 | r2 ^= r3;
0x0006a484 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006a488 bne.w 0x6abd6 | goto label_78;
| }
0x0006a48c movs r3, 0 | r3 = 0;
0x0006a48e ldr r2, [sp, 0x24] | r2 = *((sp + 0x24));
0x0006a490 movs r1, 0x41 | r1 = 0x41;
0x0006a492 mov r0, r5 | r0 = r5;
0x0006a494 str r3, [sp, 0xb8] | *((sp + 0xb8)) = r3;
0x0006a496 add sp, 0x94 |
0x0006a498 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006a49c b.w 0x2ae1c | void (*0x2ae1c)() ();
| label_52:
0x0006a4a0 movs r3, 0 | r3 = 0;
0x0006a4a2 movs r1, 0x8e | r1 = 0x8e;
0x0006a4a4 mov r0, r8 | r0 = r8;
0x0006a4a6 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006a4aa bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a4ae ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x0006a4b0 movs r2, 0 | r2 = 0;
0x0006a4b2 movs r1, 0x45 | r1 = 0x45;
0x0006a4b4 mov r0, r8 | r0 = r8;
0x0006a4b6 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006a4ba adds r3, 1 | r3++;
0x0006a4bc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a4c0 b 0x6a14a | goto label_0;
| label_59:
0x0006a4c2 ldr.w r3, [pc, 0x534] | r3 = *(0x0006a9f8);
0x0006a4c6 add r3, pc | r3 += pc;
0x0006a4c8 adds r3, 4 | r3 += 4;
0x0006a4ca str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006a4cc ldr r3, [sp, 0x28] | r3 = *((sp + 0x28));
0x0006a4ce cmp r3, 0 |
0x0006a4d0 beq.w 0x6a29c |
| } while (r3 == 0);
| label_60:
0x0006a4d4 ldr r3, [sp, 0x30] | r3 = *((sp + 0x30));
0x0006a4d6 mov r0, fp | r0 = fp;
0x0006a4d8 ldr r2, [sp, 0x3c] | r2 = *((sp + 0x3c));
0x0006a4da ldr r1, [sp, 0x18] | r1 = *((sp + 0x18));
0x0006a4dc str r3, [sp] | *(sp) = r3;
0x0006a4de ldr r3, [sp, 0x28] | r3 = *((sp + 0x28));
0x0006a4e0 bl 0x2dc88 | fcn_0002dc88 (r0, r1, r2, r3, r4);
0x0006a4e4 ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x0006a4e8 cmp r3, 0x56 |
| if (r3 != 0x56) {
0x0006a4ea bne.w 0x6a2a6 | goto label_1;
| }
| label_61:
0x0006a4ee movs r3, 0 | r3 = 0;
0x0006a4f0 movs r1, 3 | r1 = 3;
0x0006a4f2 mov r2, r3 | r2 = r3;
0x0006a4f4 mov r0, r4 | r0 = r4;
0x0006a4f6 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a4fa ldrb.w r3, [sl, 0x12] | r3 = *((sl + 0x12));
0x0006a4fe cmp r3, 0x5a |
| if (r3 == 0x5a) {
0x0006a500 beq.w 0x6a722 | goto label_63;
| }
0x0006a504 ldrb.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0006a508 cmp r3, 0x59 |
| if (r3 == 0x59) {
0x0006a50a beq.w 0x6ab46 | goto label_79;
| }
0x0006a50e ldr r2, [sp, 0xc] | r2 = *((sp + 0xc));
0x0006a510 movs r3, 0 | r3 = 0;
0x0006a512 movs r1, 1 | r1 = 1;
0x0006a514 b 0x6a2e0 | goto label_2;
| label_74:
0x0006a516 ldr.w r3, [pc, 0x4e4] | r3 = *(0x0006a9fc);
0x0006a51a add r3, pc | r3 += pc;
0x0006a51c adds r3, 4 | r3 += 4;
0x0006a51e b 0x6a42a | goto label_3;
| label_57:
0x0006a520 ldrb.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0006a524 ldr r2, [sp, 0xc] | r2 = *((sp + 0xc));
0x0006a526 cmp r3, 0x59 |
0x0006a528 it ne |
| if (r3 != 0x59) {
0x0006a52a cmpne r2, 0 | __asm ("cmpne r2, 0");
| }
| if (r3 != 0x59) {
0x0006a52c bne.w 0x6a8d8 | goto label_80;
| }
| label_14:
0x0006a530 movs r3, 0 | r3 = 0;
0x0006a532 ldr r2, [sp, 0x74] | r2 = *((sp + 0x74));
0x0006a534 str r3, [sp] | *(sp) = r3;
0x0006a536 movs r1, 0x25 | r1 = 0x25;
0x0006a538 movs r3, 1 | r3 = 1;
0x0006a53a mov r0, r5 | r0 = r5;
0x0006a53c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a540 b 0x6a238 | goto label_4;
| label_49:
0x0006a542 str r1, [sp, 0x24] | var_24h = r1;
0x0006a544 str r1, [sp, 0x2c] | var_2ch = r1;
0x0006a546 b 0x6a074 | goto label_5;
| label_67:
0x0006a548 ldrd r6, r2, [r5, 0x6c] | __asm ("ldrd r6, r2, [r5, 0x6c]");
0x0006a54c movs r3, 0 | r3 = 0;
0x0006a54e str r3, [sp, 0x70] | *((sp + 0x70)) = r3;
0x0006a550 cmp r6, r2 |
| if (r6 < r2) {
0x0006a552 blt.w 0x6a37e | goto label_6;
| }
| label_70:
0x0006a556 str r3, [sp] | *(sp) = r3;
0x0006a558 movs r1, 0x25 | r1 = 0x25;
0x0006a55a ldr r2, [sp, 0x20] | r2 = *((sp + 0x20));
0x0006a55c mov r0, r5 | r0 = r5;
0x0006a55e bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006a562 ldrb.w r3, [sl, 0x12] | r3 = *((sl + 0x12));
0x0006a566 mov r6, r0 | r6 = r0;
0x0006a568 cmp r3, 0x58 |
| if (r3 != 0x58) {
0x0006a56a bne.w 0x6a3ac | goto label_7;
| }
| label_71:
0x0006a56e ldrh.w r8, [sl, 0x10] | r8 = *((sl + 0x10));
0x0006a572 movs r3, 0 | r3 = 0;
0x0006a574 ldr r2, [sp, 0xc] | r2 = *((sp + 0xc));
0x0006a576 movs r1, 3 | r1 = 3;
0x0006a578 mov r0, r4 | r0 = r4;
0x0006a57a bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a57e movw r3, 0x5859 | r3 = 0x5859;
0x0006a582 cmp r8, r3 |
| if (r8 == r3) {
0x0006a584 beq.w 0x6ab2c | goto label_81;
| }
| label_36:
0x0006a588 movs r3, 0 | r3 = 0;
0x0006a58a mov r0, r4 | r0 = r4;
0x0006a58c mov r2, r3 | r2 = r3;
0x0006a58e movs r1, 1 | r1 = 1;
0x0006a590 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a594 ldr r3, [r5] | r3 = *(r5);
0x0006a596 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006a598 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006a59c b 0x6a414 | goto label_8;
| label_42:
0x0006a59e ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
0x0006a5a0 cmp r3, 0 |
| if (r3 == 0) {
0x0006a5a2 beq.w 0x6a960 | goto label_82;
| }
| label_31:
0x0006a5a6 mov r0, fp | r0 = fp;
0x0006a5a8 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0006a5ac mov r5, r0 | r5 = r0;
0x0006a5ae b 0x69e66 | goto label_9;
| label_51:
0x0006a5b0 ldr.w r3, [fp, 0x74] | r3 = var_bp_74h;
0x0006a5b4 cmp r3, 0 |
| if (r3 == 0) {
0x0006a5b6 beq.w 0x6a94e | goto label_83;
| }
| label_30:
0x0006a5ba mov r0, fp | r0 = fp;
0x0006a5bc bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0006a5c0 mov r7, r0 | r7 = r0;
0x0006a5c2 b 0x6a0ce | goto label_10;
| label_77:
0x0006a5c4 ldr.w r3, [pc, 0x438] |
0x0006a5c8 add r3, pc | r3 = 0xd4fcc;
0x0006a5ca adds r3, 4 | r3 += 4;
0x0006a5cc b 0x6a470 | goto label_11;
| label_46:
0x0006a5ce movs r3, 0 | r3 = 0;
0x0006a5d0 str r3, [sp, 0x4c] | var_4ch = r3;
0x0006a5d2 str r3, [sp, 0x28] | var_28h = r3;
0x0006a5d4 str r3, [sp, 0x3c] | var_3ch = r3;
0x0006a5d6 b 0x69f7a | goto label_12;
| label_55:
0x0006a5d8 cmp r3, 0x56 |
0x0006a5da add r4, sp, 0x54 | r4 += var_54h;
| if (r3 != 0x56) {
0x0006a5dc bne.w 0x6a232 | goto label_13;
| }
0x0006a5e0 b 0x6a530 | goto label_14;
| label_44:
0x0006a5e2 ldr.w r3, [sl, 0x58] | r3 = *((sl + 0x58));
0x0006a5e6 ldrb.w r1, [sl, 0x12] | r1 = *((sl + 0x12));
| if (r3 != 0) {
0x0006a5ea cbnz r3, 0x6a634 | goto label_28;
| }
0x0006a5ec ldr.w r0, [pc, 0x414] | r0 = *(0x0006aa04);
0x0006a5f0 mov r2, sl | r2 = sl;
0x0006a5f2 add r0, pc | r0 += pc;
0x0006a5f4 addw lr, r0, 0xacc | __asm ("addw lr, r0, aav.0x000000ff");
0x0006a5f8 add.w ip, r0, 0xac0 |
0x0006a5fc addw r6, r0, 0xad8 | __asm ("addw r6, r0, aav.0x000000ff");
0x0006a600 add.w r0, r0, 0xae0 | r0 += 0xae0;
0x0006a604 b 0x6a60e |
| while (r3 == 0) {
0x0006a606 ldr r2, [r2, 0x24] | r2 = *((r2 + 0x24));
0x0006a608 cmp r2, 0 |
| if (r2 == 0) {
0x0006a60a beq.w 0x6a926 | goto label_84;
| }
0x0006a60e ldr r3, [r2, 0x2c] | r3 = *((r2 + 0x2c));
0x0006a610 ldr.w r8, [r3, 0x20] | r8 = *((r3 + 0x20));
0x0006a614 cmp r8, ip |
0x0006a616 it ne |
| if (r8 != ip) {
0x0006a618 cmpne r8, lr | __asm ("cmpne r8, lr");
| }
0x0006a61a ite eq |
| if (r8 != ip) {
0x0006a61c moveq r3, 1 | r3 = 1;
| }
| if (r8 == ip) {
0x0006a61e movne r3, 0 | r3 = 0;
| }
0x0006a620 cmp r8, r6 |
0x0006a622 it eq |
| if (r8 != r6) {
0x0006a624 orreq r3, r3, 1 | r3 |= 1;
| }
0x0006a628 cmp r8, r0 |
0x0006a62a it eq |
| if (r8 != r0) {
0x0006a62c orreq r3, r3, 1 | r3 |= 1;
| }
0x0006a630 cmp r3, 0 |
0x0006a632 beq 0x6a606 |
| }
| label_28:
0x0006a634 ldr.w r6, [fp, 0x2c] | r6 = var_2ch;
0x0006a638 movs r3, 0 | r3 = 0;
0x0006a63a str r3, [sp, 8] | var_bp_8h = r3;
0x0006a63c adds r3, r7, r6 | r3 = r7 + r6;
0x0006a63e adds r6, 1 | r6++;
0x0006a640 add.w r8, r3, 2 | r8 = r3 + 2;
0x0006a644 adds r3, 1 | r3++;
0x0006a646 str r3, [sp, 0x10] | var_10h = r3;
0x0006a648 str.w r8, [fp, 0x2c] | __asm ("str.w r8, [var_2ch]");
0x0006a64c str.w r8, [sp, 0x70] | __asm ("str.w r8, [var_70h]");
0x0006a650 b 0x69efe | goto label_15;
| label_43:
0x0006a652 cmp r4, 0x59 |
| if (r4 != 0x59) {
0x0006a654 bne.w 0x6a894 | goto label_85;
| }
0x0006a658 ldr.w r6, [fp, 0x2c] | r6 = var_2ch;
0x0006a65c ldrb.w r1, [sl, 0x12] | r1 = *((sl + 0x12));
0x0006a660 adds r2, r7, r6 | r2 = r7 + r6;
0x0006a662 adds r6, 1 | r6++;
0x0006a664 add.w r8, r2, 2 | r8 = r2 + 2;
0x0006a668 adds r3, r2, 1 | r3 = r2 + 1;
0x0006a66a str.w r8, [sp, 0x70] | __asm ("str.w r8, [var_70h]");
0x0006a66e str r3, [sp, 0x10] | var_10h = r3;
0x0006a670 b 0x69ef6 | goto label_16;
| label_58:
0x0006a672 ldr r6, [sp, 0x18] | r6 = *((sp + 0x18));
0x0006a674 movs r1, 0x4d | r1 = 0x4d;
0x0006a676 ldr r7, [sp, 0x28] | r7 = *((sp + 0x28));
0x0006a678 mov r0, r5 | r0 = r5;
0x0006a67a ldr r2, [sp, 0x3c] | r2 = *((sp + 0x3c));
0x0006a67c ldr r3, [r6] | r3 = *(r6);
0x0006a67e subs r3, 1 | r3--;
0x0006a680 str r3, [sp] | *(sp) = r3;
0x0006a682 mov r3, r7 | r3 = r7;
0x0006a684 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a688 ldr r3, [r6] | r3 = *(r6);
0x0006a68a mov r2, r7 | r2 = r7;
0x0006a68c movs r1, 0x4d | r1 = 0x4d;
0x0006a68e mov r0, r5 | r0 = r5;
0x0006a690 subs r3, 1 | r3--;
0x0006a692 str r3, [sp] | *(sp) = r3;
0x0006a694 ldr r3, [sp, 0x78] | r3 = *((sp + 0x78));
0x0006a696 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a69a ldr r3, [r6] | r3 = *(r6);
0x0006a69c mov r2, r7 | r2 = r7;
0x0006a69e movs r1, 0x4d | r1 = 0x4d;
0x0006a6a0 mov r0, r5 | r0 = r5;
0x0006a6a2 subs r3, 1 | r3--;
0x0006a6a4 str r3, [sp] | *(sp) = r3;
0x0006a6a6 ldr r3, [sp, 0x80] | r3 = *((sp + 0x80));
0x0006a6a8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a6ac ldr r3, [r6] | r3 = *(r6);
0x0006a6ae mov r2, r7 | r2 = r7;
0x0006a6b0 movs r1, 0x4d | r1 = 0x4d;
0x0006a6b2 mov r0, r5 | r0 = r5;
0x0006a6b4 subs r3, 1 | r3--;
0x0006a6b6 str r3, [sp] | *(sp) = r3;
0x0006a6b8 ldr r3, [sp, 0x88] | r3 = *((sp + 0x88));
0x0006a6ba bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a6be b 0x6a25e | goto label_17;
| label_65:
0x0006a6c0 ldrd r6, r3, [r5, 0x6c] | __asm ("ldrd r6, r3, [r5, 0x6c]");
0x0006a6c4 cmp r6, r3 |
| if (r6 >= r3) {
0x0006a6c6 bge.w 0x6abb6 | goto label_86;
| }
0x0006a6ca add.w r3, r6, r6, lsl 2 | r3 = r6 + (r6 << 2);
0x0006a6ce ldr r1, [r5, 0x68] | r1 = *((r5 + 0x68));
0x0006a6d0 adds r2, r6, 1 | r2 = r6 + 1;
0x0006a6d2 lsls r3, r3, 2 | r3 <<= 2;
0x0006a6d4 str r2, [r5, 0x6c] | *((r5 + 0x6c)) = r2;
0x0006a6d6 movs r7, 1 | r7 = 1;
0x0006a6d8 adds r2, r1, r3 | r2 = r1 + r3;
0x0006a6da movs r0, 0 | r0 = 0;
0x0006a6dc str r7, [r2, 0xc] | *((r2 + 0xc)) = r7;
0x0006a6de ldr r7, [sp, 0xc] | r7 = *((sp + 0xc));
0x0006a6e0 str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x0006a6e2 strd r7, r0, [r2, 4] | __asm ("strd r7, r0, [r2, 4]");
0x0006a6e6 movs r2, 0x30 | r2 = 0x30;
0x0006a6e8 str r2, [r1, r3] | *((r1 + r3)) = r2;
| label_41:
0x0006a6ea movs r3, 0 | r3 = 0;
0x0006a6ec movs r1, 1 | r1 = 1;
0x0006a6ee mov r2, r3 | r2 = r3;
0x0006a6f0 mov r0, r4 | r0 = r4;
0x0006a6f2 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a6f6 ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006a6f8 movs r3, 0 | r3 = 0;
0x0006a6fa movs r1, 2 | r1 = 2;
0x0006a6fc mov r0, r4 | r0 = r4;
0x0006a6fe bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a702 cmp r6, 0 |
0x0006a704 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
| if (r6 < 0) {
0x0006a706 blt.w 0x6ab42 | goto label_87;
| }
| label_38:
0x0006a70a ldr r3, [r5] | r3 = *(r5);
0x0006a70c ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006a710 cmp r3, 0 |
| if (r3 != 0) {
0x0006a712 bne.w 0x6ab3a | goto label_88;
| }
0x0006a716 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006a718 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x0006a71c add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
| label_37:
0x0006a720 str r2, [r3, 8] | *((r3 + 8)) = r2;
| label_63:
0x0006a722 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006a724 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0006a728 cmn r2, r3 |
| if (r2 >= r3) {
0x0006a72a bpl.w 0x6a2fe | goto label_18;
| }
| label_66:
0x0006a72e ldr r3, [sp, 0x1c] | r3 = *((sp + 0x1c));
0x0006a730 mov r1, r5 | r1 = r5;
0x0006a732 rsbs r2, r3, 0 | r2 = r3 - ;
0x0006a734 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0006a738 b 0x6a30a | goto label_19;
| label_75:
0x0006a73a ldr r2, [pc, 0x2cc] |
0x0006a73c ldr r3, [pc, 0x2ac] | r3 = *(0x6a9ec);
0x0006a73e add r2, pc | r2 = 0xd514c;
0x0006a740 ldr r3, [r2, r3] | r3 = *(0xd514c);
0x0006a742 ldr r2, [r3] | r2 = *(0xd514c);
0x0006a744 ldr r3, [sp, 0x8c] | r3 = *((sp + 0x8c));
0x0006a746 eors r2, r3 | r2 ^= r3;
0x0006a748 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006a74c bne.w 0x6abd6 | goto label_78;
| }
0x0006a750 add sp, 0x94 |
0x0006a752 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_72:
0x0006a756 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a75a ldrb.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0006a75e cmp r3, 0x59 |
| if (r3 == 0x59) {
0x0006a760 beq.w 0x6ab0a | goto label_89;
| }
0x0006a764 ldrb.w r3, [sl, 0x12] | r3 = *((sl + 0x12));
0x0006a768 cmp r3, 0x5a |
| if (r3 == 0x5a) {
0x0006a76a beq.w 0x6a8b6 | goto label_90;
| }
0x0006a76e movs r3, 1 | r3 = 1;
0x0006a770 ldr r2, [sp, 0xc] | r2 = *((sp + 0xc));
0x0006a772 mov r1, r3 | r1 = r3;
0x0006a774 mov r0, r4 | r0 = r4;
0x0006a776 ldr.w sb, [r5, 0x6c] | sb = *((r5 + 0x6c));
0x0006a77a bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a77e ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006a780 mov r8, r0 | r8 = r0;
0x0006a782 movs r3, 1 | r3 = 1;
0x0006a784 movs r1, 2 | r1 = 2;
0x0006a786 mov r0, r4 | r0 = r4;
0x0006a788 bl 0x68a98 | r0 = fcn_00068a98 (r0, r1, r2, r3);
0x0006a78c mov fp, r0 |
| label_26:
0x0006a78e movs r2, 0 | r2 = 0;
0x0006a790 mov r3, sb | r3 = sb;
0x0006a792 movs r1, 0xb | r1 = 0xb;
0x0006a794 mov r0, r5 | r0 = r5;
0x0006a796 str r2, [sp] | *(sp) = r2;
0x0006a798 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a79c ldr r3, [r5] | r3 = *(r5);
0x0006a79e cmp.w fp, 0 |
0x0006a7a2 ldr.w sb, [r5, 0x6c] | sb = *((r5 + 0x6c));
0x0006a7a6 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006a7aa it lt |
| if (fp >= 0) {
0x0006a7ac addlt fp, sb, -1 |
| }
0x0006a7b0 cmp r3, 0 |
| if (r3 != 0) {
0x0006a7b2 bne.w 0x6a978 | goto label_91;
| }
0x0006a7b6 ldr r2, [r5, 0x68] | r2 = *((r5 + 0x68));
0x0006a7b8 add.w r3, fp, fp, lsl 2 | r3 = fp + (fp << 2);
0x0006a7bc add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_32:
0x0006a7c0 str.w sb, [r3, 8] | __asm ("str.w sb, [r3, 8]");
0x0006a7c4 movs r3, 1 | r3 = 1;
0x0006a7c6 mov r1, r3 | r1 = r3;
0x0006a7c8 mov r0, r4 | r0 = r4;
0x0006a7ca movs r2, 0 | r2 = 0;
0x0006a7cc bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a7d0 movs r2, 0 | r2 = 0;
0x0006a7d2 mov r3, sb | r3 = sb;
0x0006a7d4 str r2, [sp] | *(sp) = r2;
0x0006a7d6 mov r4, r0 | r4 = r0;
0x0006a7d8 movs r1, 0xb | r1 = 0xb;
0x0006a7da mov r0, r5 | r0 = r5;
0x0006a7dc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a7e0 ldr r3, [r5] | r3 = *(r5);
0x0006a7e2 cmp.w r8, 0 |
0x0006a7e6 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006a7e8 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006a7ec it lt |
| if (r8 >= 0) {
0x0006a7ee addlt r8, r2, -1 | r8 = r2 + -1;
| }
0x0006a7f2 cmp r3, 0 |
| if (r3 != 0) {
0x0006a7f4 bne.w 0x6a96e | goto label_92;
| }
0x0006a7f8 ldr r0, [r5, 0x68] | r0 = *((r5 + 0x68));
0x0006a7fa cmp r4, 0 |
0x0006a7fc add.w r8, r8, r8, lsl 2 | r8 += (r8 << 2);
0x0006a800 it lt |
| if (r4 >= 0) {
0x0006a802 addlt r4, r2, -1 | r4 = r2 + -1;
| }
0x0006a806 add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x0006a80a add.w r1, r0, r8, lsl 2 | r1 = r0 + (r8 << 2);
0x0006a80e str r2, [r1, 8] | *((r1 + 8)) = r2;
0x0006a810 add.w r1, r0, r4, lsl 2 | r1 = r0 + (r4 << 2);
0x0006a814 b 0x6a412 | goto label_20;
| label_62:
0x0006a816 ldrh.w r6, [sl, 0x10] | r6 = *((sl + 0x10));
0x0006a81a movs r3, 0 | r3 = 0;
0x0006a81c ldr r2, [sp, 0xc] | r2 = *((sp + 0xc));
0x0006a81e movs r1, 3 | r1 = 3;
0x0006a820 mov r0, r4 | r0 = r4;
0x0006a822 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a826 movw r3, 0x5859 | r3 = 0x5859;
0x0006a82a cmp r6, r3 |
0x0006a82c mov.w r3, 0 | r3 = 0;
0x0006a830 itt ne |
| if (r6 == r3) {
0x0006a832 movne r1, 1 | r1 = 1;
| }
| if (r6 != r3) {
0x0006a834 movne r2, r3 | r2 = r3;
| goto label_93;
| }
| if (r6 != r3) {
| label_93:
0x0006a836 bne.w 0x6a2e0 | goto label_2;
| }
0x0006a83a ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006a83c movs r1, 2 | r1 = 2;
0x0006a83e mov r0, r4 | r0 = r4;
0x0006a840 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a844 movs r3, 0 | r3 = 0;
0x0006a846 movs r1, 1 | r1 = 1;
0x0006a848 mov r2, r3 | r2 = r3;
0x0006a84a mov r0, r4 | r0 = r4;
0x0006a84c bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a850 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006a852 b 0x6a2f4 | goto label_21;
| label_69:
0x0006a854 ldr r3, [pc, 0x1b4] |
0x0006a856 add r3, pc | r3 = 0xd5266;
0x0006a858 adds r3, 4 | r3 += 4;
0x0006a85a b 0x6a370 | goto label_22;
| label_73:
0x0006a85c ldr r1, [pc, 0x1b0] |
0x0006a85e add r1, pc | r1 = 0xd5272;
0x0006a860 adds r1, 4 | r1 += 4;
0x0006a862 b 0x6a412 | goto label_20;
| label_76:
0x0006a864 movs r2, 1 | r2 = 1;
0x0006a866 movs r1, 0x45 | r1 = 0x45;
0x0006a868 mov r0, r5 | r0 = r5;
0x0006a86a str r4, [sp] | *(sp) = r4;
0x0006a86c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a870 ldr.w r3, [sl, 0x5c] | r3 = *((sl + 0x5c));
0x0006a874 mov r2, r4 | r2 = r4;
0x0006a876 movs r1, 0x45 | r1 = 0x45;
0x0006a878 mov r0, r5 | r0 = r5;
0x0006a87a str r4, [sp] | *(sp) = r4;
0x0006a87c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a880 b 0x6a450 | goto label_23;
| label_50:
0x0006a882 mov r3, r4 | r3 = r4;
0x0006a884 movs r1, 0x34 | r1 = 0x34;
0x0006a886 mov r0, r5 | r0 = r5;
0x0006a888 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006a88c bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006a890 str r0, [sp, 0x10] | *((sp + 0x10)) = r0;
0x0006a892 b 0x6a0c4 | goto label_24;
| label_85:
0x0006a894 ldr.w r1, [sl, 0x18] | r1 = *((sl + 0x18));
0x0006a898 ldr.w r0, [fp] | r0 = *(fp);
0x0006a89c bl 0x2d120 | r0 = fcn_0002d120 (r0, r1);
| if (r0 != 0) {
0x0006a8a0 cbz r0, 0x6a8a6 |
0x0006a8a2 movs r3, 1 | r3 = 1;
0x0006a8a4 str r3, [sp, 0x6c] | var_6ch = r3;
| }
| label_29:
0x0006a8a6 ldrb.w r4, [sl, 0x10] | r4 = *((sl + 0x10));
0x0006a8aa ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x0006a8ae ldrb.w r1, [sl, 0x12] | r1 = *((sl + 0x12));
0x0006a8b2 b.w 0x69ece | goto label_25;
| label_90:
0x0006a8b6 movs r3, 1 | r3 = 1;
0x0006a8b8 ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006a8ba mov r1, r3 | r1 = r3;
0x0006a8bc mov r0, r4 | r0 = r4;
0x0006a8be ldr.w sb, [r5, 0x6c] | sb = *((r5 + 0x6c));
0x0006a8c0 str r0, [sp, 0x1b0] | *((sp + 0x1b0)) = r0;
0x0006a8c2 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a8c6 movs r3, 1 | r3 = 1;
0x0006a8c8 mov r8, r0 | r8 = r0;
0x0006a8ca movs r2, 0 | r2 = 0;
0x0006a8cc movs r1, 2 | r1 = 2;
0x0006a8ce mov r0, r4 | r0 = r4;
0x0006a8d0 bl 0x68a98 | r0 = fcn_00068a98 (r0, r1, r2, r3);
0x0006a8d4 mov fp, r0 |
0x0006a8d6 b 0x6a78e | goto label_26;
| label_80:
0x0006a8d8 ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006a8da movs r1, 0x6b | r1 = 0x6b;
0x0006a8dc ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0006a8de mov r0, r5 | r0 = r5;
0x0006a8e0 str r2, [sp] | *(sp) = r2;
0x0006a8e2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a8e6 ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x0006a8ea b 0x6a232 | goto label_13;
| label_47:
0x0006a8ec ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006a8ee b.w 0x69f28 | goto label_27;
| label_84:
0x0006a926 cmp r1, 0x58 |
0x0006a928 itt ne |
| if (r1 == 0x58) {
0x0006a92a movne r3, 1 | r3 = 1;
| }
| if (r1 != 0x58) {
0x0006a92c strne r3, [sp, 0x6c] | var_6ch = r3;
| goto label_94;
| }
| if (r1 != 0x58) {
| label_94:
0x0006a92e bne.w 0x6a634 | goto label_28;
| }
0x0006a932 cmp r4, 0x59 |
| if (r4 == 0x59) {
0x0006a934 beq.w 0x6a634 | goto label_28;
| }
0x0006a938 ldr.w r1, [sl, 0x1c] | r1 = *((sl + 0x1c));
0x0006a93c ldr.w r0, [fp] | r0 = *(fp);
0x0006a940 bl 0x2d120 | r0 = fcn_0002d120 (r0, r1);
0x0006a944 cmp r0, 0 |
| if (r0 == 0) {
0x0006a946 beq 0x6a8a6 | goto label_29;
| }
0x0006a948 movs r3, 3 | r3 = 3;
0x0006a94a str r3, [sp, 0x6c] | var_6ch = r3;
0x0006a94c b 0x6a8a6 | goto label_29;
| label_83:
0x0006a94e ldr.w r3, [fp] | r3 = *(fp);
0x0006a952 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0006a954 lsls r2, r3, 0x1c | r2 = r3 << 0x1c;
0x0006a956 itt pl |
| if (r2 < r3) {
0x0006a958 movpl r3, 1 | r3 = 1;
| }
| if (r2 < r3) {
0x0006a95a strbpl r3, [fp, 0x17] | var_17h = r3;
| }
0x0006a95e b 0x6a5ba | goto label_30;
| label_82:
0x0006a960 ldr r3, [r0] | r3 = *(r0);
0x0006a962 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0006a964 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x0006a966 itt pl |
| if (r1 < r3) {
0x0006a968 movpl r3, 1 | r3 = 1;
| }
| if (r1 < r3) {
0x0006a96a strbpl r3, [r0, 0x17] | *((r0 + 0x17)) = r3;
| }
0x0006a96c b 0x6a5a6 | goto label_31;
| label_92:
0x0006a96e ldr r1, [pc, 0xa4] |
0x0006a970 add r1, pc | r1 = 0xd538a;
0x0006a972 str r2, [r1, 0xc] | *((r1 + 0xc)) = r2;
0x0006a974 adds r1, 4 | r1 += 4;
0x0006a976 b 0x6a412 | goto label_20;
| label_91:
0x0006a978 ldr r3, [pc, 0x9c] |
0x0006a97a add r3, pc | r3 = 0xd5396;
0x0006a97c adds r3, 4 | r3 += 4;
0x0006a97e b 0x6a7c0 | goto label_32;
| label_64:
0x0006a980 ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0006a982 ldr r7, [r5, 0x6c] | r7 = *((r5 + 0x6c));
0x0006a984 cmp r3, 0 |
| if (r3 == 0) {
0x0006a986 beq.w 0x6a2d8 | goto label_33;
| }
0x0006a98a ldr.w r6, [fp, 0x38] | r6 = var_38h;
0x0006a98e movs r1, 0x39 | r1 = 0x39;
0x0006a990 ldr r3, [sp, 0x84] | r3 = *((sp + 0x84));
0x0006a992 mov r0, r4 | r0 = r4;
0x0006a994 ldr r2, [sp, 0x7c] | r2 = *((sp + 0x7c));
0x0006a996 str r3, [sp] | *(sp) = r3;
0x0006a998 subs r3, r6, 1 | r3 = r6 - 1;
0x0006a99a str.w r3, [fp, 0x38] | __asm ("str.w r3, [var_38h]");
0x0006a99e str r3, [sp, 4] | var_4h = r3;
0x0006a9a0 ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0006a9a2 bl 0x337dc | fcn_000337dc (r0, r1, r2, r3, r4, r5);
0x0006a9a6 movs r3, 0 | r3 = 0;
0x0006a9a8 movs r1, 1 | r1 = 1;
0x0006a9aa mov r2, r3 | r2 = r3;
0x0006a9ac mov r0, r4 | r0 = r4;
0x0006a9ae bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a9b2 ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006a9b4 movs r3, 0 | r3 = 0;
0x0006a9b6 movs r1, 2 | r1 = 2;
0x0006a9b8 mov r0, r4 | r0 = r4;
0x0006a9ba bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006a9be movs r2, 0 | r2 = 0;
0x0006a9c0 mov r3, r7 | r3 = r7;
0x0006a9c2 movs r1, 0xb | r1 = 0xb;
0x0006a9c4 str r2, [sp] | *(sp) = r2;
0x0006a9c6 mov r0, r5 | r0 = r5;
0x0006a9c8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006a9cc ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006a9ce rsbs r2, r6, 0 | r2 = r6 - ;
0x0006a9d0 ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x0006a9d4 cmn r1, r3 |
| if (r1 < r3) {
0x0006a9d6 bmi.w 0x6abca | goto label_95;
| }
| label_39:
0x0006a9da ldr r1, [r5, 0x6c] | r1 = *((r5 + 0x6c));
0x0006a9dc lsls r3, r6, 2 | r3 = r6 << 2;
0x0006a9de ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0006a9e0 rsbs r3, r3, 0 | r3 -= ;
0x0006a9e2 str r1, [r2, r3] | *((r2 + r3)) = r1;
0x0006a9e4 b 0x6a2f4 | goto label_21;
| label_56:
0x0006aa1c cmp r3, 0x56 |
0x0006aa1e ldrd r7, r3, [r5, 0x6c] | __asm ("ldrd r7, r3, [r5, 0x6c]");
0x0006aa22 ite ne |
| if (r3 == 0x56) {
0x0006aa24 movne r1, 0x37 | r1 = 0x37;
| }
| if (r3 != 0x56) {
0x0006aa26 moveq r1, 0x39 | r1 = 0x39;
| }
0x0006aa28 cmp r7, r3 |
| if (r7 >= r3) {
0x0006aa2a bge.w 0x6aba4 | goto label_96;
| }
0x0006aa2e add.w r0, r7, r7, lsl 2 | r0 = r7 + (r7 << 2);
0x0006aa32 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006aa34 adds r4, r7, 1 | r4 = r7 + 1;
0x0006aa36 lsls r0, r0, 2 | r0 <<= 2;
0x0006aa38 str r4, [r5, 0x6c] | *((r5 + 0x6c)) = r4;
0x0006aa3a movs r2, 0 | r2 = 0;
0x0006aa3c strb r1, [r3, r0] | *((r3 + r0)) = r1;
0x0006aa3e add r3, r0 | r3 += r0;
0x0006aa40 ldr r1, [sp, 8] | r1 = *((sp + 8));
0x0006aa42 strh r2, [r3, 2] | *((r3 + 2)) = r2;
0x0006aa44 strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x0006aa46 strd r1, r2, [r3, 4] | __asm ("strd r1, r2, [r3, 4]");
0x0006aa4a ldr r1, [sp, 0xc] | r1 = *((sp + 0xc));
0x0006aa4c strd r1, r2, [r3, 0xc] | __asm ("strd r1, r2, [r3, 0xc]");
| label_40:
0x0006aa50 movs r6, 0 | r6 = 0;
0x0006aa52 mov r1, sl | r1 = sl;
0x0006aa54 mov r2, r6 | r2 = r6;
0x0006aa56 mov r0, fp | r0 = fp;
0x0006aa58 bl 0x2af30 | fcn_0002af30 (r0, r1, r2);
0x0006aa5c add r4, sp, 0x54 | r4 += var_54h;
0x0006aa5e ldr r2, [sp, 0x34] | r2 = *((sp + 0x34));
0x0006aa60 movs r3, 1 | r3 = 1;
0x0006aa62 movs r1, 0x25 | r1 = 0x25;
0x0006aa64 mov r0, r5 | r0 = r5;
0x0006aa66 str r6, [sp] | *(sp) = r6;
0x0006aa68 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006aa6c mov r0, r4 | r0 = r4;
0x0006aa6e bl 0x683e4 | fcn_000683e4 (r0, r1, r2, r3, r4);
0x0006aa72 ldr r3, [sp, 0x7c] | r3 = *((sp + 0x7c));
0x0006aa74 movs r1, 0x8e | r1 = 0x8e;
0x0006aa76 mov r0, r5 | r0 = r5;
0x0006aa78 str r6, [sp] | *(sp) = r6;
0x0006aa7a mov r2, r3 | r2 = r3;
0x0006aa7c str r3, [sp, 0x34] | *((sp + 0x34)) = r3;
0x0006aa7e mov r3, r6 | r3 = r6;
0x0006aa80 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006aa84 ldr r3, [sp, 0x30] | r3 = *((sp + 0x30));
0x0006aa86 mov r2, r6 | r2 = r6;
0x0006aa88 movs r1, 0xb | r1 = 0xb;
0x0006aa8a mov r0, r5 | r0 = r5;
0x0006aa8c str r6, [sp] | *(sp) = r6;
0x0006aa8e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006aa92 ldr r3, [r5] | r3 = *(r5);
0x0006aa94 cmp r7, r6 |
0x0006aa96 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006aa98 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006aa9c it lt |
| if (r7 >= r6) {
0x0006aa9e addlt r7, r2, -1 | r7 = r2 + -1;
| }
| if (r3 != 0) {
0x0006aaa2 cbnz r3, 0x6ab02 | goto label_97;
| }
0x0006aaa4 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006aaa6 add.w r7, r7, r7, lsl 2 | r7 += (r7 << 2);
0x0006aaaa add.w r3, r3, r7, lsl 2 | r3 += (r7 << 2);
| do {
0x0006aaae str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006aab0 ldr r3, [sp, 0x84] | r3 = *((sp + 0x84));
0x0006aab2 str r3, [sp, 0x38] | *((sp + 0x38)) = r3;
0x0006aab4 ldrb.w r3, [sl, 0x11] | r3 = *((sl + 0x11));
0x0006aab8 b.w 0x6a22c | goto label_34;
| label_68:
0x0006aad0 movs r2, 0 | r2 = 0;
0x0006aad2 ldr r3, [sp, 0x24] | r3 = *((sp + 0x24));
0x0006aad4 str r2, [sp] | *(sp) = r2;
0x0006aad6 movs r1, 0x45 | r1 = 0x45;
0x0006aad8 mov r0, r5 | r0 = r5;
0x0006aada bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006aade ldrd r6, r2, [r5, 0x6c] | __asm ("ldrd r6, r2, [r5, 0x6c]");
0x0006aae2 mov r7, r0 | r7 = r0;
0x0006aae4 b 0x6a34c | goto label_35;
| label_45:
0x0006aafa movs r3, 0 | r3 = 0;
0x0006aafc str r3, [sp, 8] | var_bp_8h = r3;
0x0006aafe b.w 0x69efe | goto label_15;
| label_97:
0x0006ab02 ldr r3, [pc, 0xd8] |
0x0006ab04 add r3, pc | r3 = 0xd56e6;
0x0006ab06 adds r3, 4 | r3 += 4;
0x0006ab08 b 0x6aaae |
| } while (1);
| label_89:
0x0006ab0a ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006ab0c movs r3, 1 | r3 = 1;
0x0006ab0e movs r1, 2 | r1 = 2;
0x0006ab10 mov r0, r4 | r0 = r4;
0x0006ab12 ldr.w sb, [r5, 0x6c] | sb = *((r5 + 0x6c));
0x0006ab16 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006ab1a movs r3, 1 | r3 = 1;
0x0006ab1c mov fp, r0 |
0x0006ab1e movs r2, 0 | r2 = 0;
0x0006ab20 mov r1, r3 | r1 = r3;
0x0006ab22 mov r0, r4 | r0 = r4;
0x0006ab24 bl 0x68a98 | r0 = fcn_00068a98 (r0, r1, r2, r3);
0x0006ab28 mov r8, r0 | r8 = r0;
0x0006ab2a b 0x6a78e | goto label_26;
| label_81:
0x0006ab2c ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006ab2e movs r3, 0 | r3 = 0;
0x0006ab30 movs r1, 2 | r1 = 2;
0x0006ab32 mov r0, r4 | r0 = r4;
0x0006ab34 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006ab38 b 0x6a588 | goto label_36;
| label_88:
0x0006ab3a ldr r3, [pc, 0xa4] |
0x0006ab3c add r3, pc | r3 = 0xd5722;
0x0006ab3e adds r3, 4 | r3 += 4;
0x0006ab40 b 0x6a720 | goto label_37;
| label_87:
0x0006ab42 subs r6, r2, 1 | r6 = r2 - 1;
0x0006ab44 b 0x6a70a | goto label_38;
| label_79:
0x0006ab46 ldr.w r6, [fp, 0x38] | r6 = var_38h;
0x0006ab4a movs r1, 0x39 | r1 = 0x39;
0x0006ab4c ldr r3, [sp, 0x84] | r3 = *((sp + 0x84));
0x0006ab4e mov r0, r4 | r0 = r4;
0x0006ab50 ldr r7, [r5, 0x6c] | r7 = *((r5 + 0x6c));
0x0006ab52 ldr r2, [sp, 0x7c] | r2 = *((sp + 0x7c));
0x0006ab54 str r3, [sp] | *(sp) = r3;
0x0006ab56 subs r3, r6, 1 | r3 = r6 - 1;
0x0006ab58 str.w r3, [fp, 0x38] | __asm ("str.w r3, [var_38h]");
0x0006ab5c str r3, [sp, 4] | var_4h = r3;
0x0006ab5e ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0006ab60 bl 0x337dc | fcn_000337dc (r0, r1, r2, r3, r4, r5);
0x0006ab64 ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006ab66 movs r3, 0 | r3 = 0;
0x0006ab68 movs r1, 2 | r1 = 2;
0x0006ab6a mov r0, r4 | r0 = r4;
0x0006ab6c bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006ab70 movs r3, 0 | r3 = 0;
0x0006ab72 movs r1, 1 | r1 = 1;
0x0006ab74 mov r2, r3 | r2 = r3;
0x0006ab76 mov r0, r4 | r0 = r4;
0x0006ab78 bl 0x68a98 | fcn_00068a98 (r0, r1, r2, r3);
0x0006ab7c movs r2, 0 | r2 = 0;
0x0006ab7e mov r3, r7 | r3 = r7;
0x0006ab80 str r2, [sp] | *(sp) = r2;
0x0006ab82 movs r1, 0xb | r1 = 0xb;
0x0006ab84 mov r0, r5 | r0 = r5;
0x0006ab86 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006ab8a ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006ab8c ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0006ab90 cmn r2, r3 |
| if (r2 >= r3) {
0x0006ab92 bpl.w 0x6a9da | goto label_39;
| }
0x0006ab96 rsbs r2, r6, 0 | r2 = r6 - ;
0x0006ab98 mov r1, r5 | r1 = r5;
0x0006ab9a bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0006ab9e ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006aba0 b.w 0x6a2f4 | goto label_21;
| label_96:
0x0006aba4 ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0006aba6 mov r0, r5 | r0 = r5;
0x0006aba8 ldr r2, [sp, 8] | r2 = *((sp + 8));
0x0006abaa str r3, [sp] | *(sp) = r3;
0x0006abac movs r3, 0 | r3 = 0;
0x0006abae bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006abb2 mov r7, r0 | r7 = r0;
0x0006abb4 b 0x6aa50 | goto label_40;
| label_86:
0x0006abb6 movs r3, 1 | r3 = 1;
0x0006abb8 ldr r2, [sp, 0xc] | r2 = *((sp + 0xc));
0x0006abba str r3, [sp] | *(sp) = r3;
0x0006abbc movs r1, 0x30 | r1 = 0x30;
0x0006abbe movs r3, 0 | r3 = 0;
0x0006abc0 mov r0, r5 | r0 = r5;
0x0006abc2 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006abc6 mov r6, r0 | r6 = r0;
0x0006abc8 b 0x6a6ea | goto label_41;
| label_95:
0x0006abca mov r1, r5 | r1 = r5;
0x0006abcc bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0006abd0 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006abd2 b.w 0x6a2f4 | goto label_21;
| label_78:
0x0006abd6 blx 0x7e8c | fcn_00007e8c ();
0x0006abda nop |
0x0006abdc str r0, [r0, r6] | *((r0 + r6)) = r0;
0x0006abde movs r6, r0 | r6 = r0;
0x0006abe0 str r0, [r1, r5] | *((r1 + r5)) = r0;
0x0006abe2 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x6abe4 */
| #include <stdint.h>
|
; (fcn) fcn.0006abe4 () | void fcn_0006abe4 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_8h_2;
| int16_t var_ch_3;
| int16_t var_10h_2;
| int16_t var_14h;
| int16_t var_18h_2;
| int16_t var_1ch_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006abe4 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006abe8 sub sp, 0x24 |
0x0006abea strd r3, r1, [sp, 0x18] | __asm ("strd r3, r1, [sp, 0x18]");
0x0006abee mov sl, r2 | sl = r2;
0x0006abf0 mov r6, r0 | r6 = r0;
0x0006abf2 ldr r3, [r2, 0x2c] | r3 = *((r2 + 0x2c));
0x0006abf4 movs r2, 1 | r2 = 1;
0x0006abf6 ldr.w sb, [r0, 8] | sb = *((r0 + 8));
0x0006abfa ldr.w r7, [sl, 0x28] | r7 = *((sl + 0x28));
0x0006abfe cmp r3, 0 |
0x0006ac00 strb.w r2, [sl] | *(sl) = r2;
| if (r3 <= 0) {
0x0006ac04 ble.w 0x6ae9c | goto label_12;
| }
0x0006ac08 adds r7, 0x14 | r7 += 0x14;
0x0006ac0a movs r3, 0 | r3 = 0;
0x0006ac0c str r3, [sp, 0x14] | var_14h = r3;
0x0006ac0e strd r3, sl, [sp, 8] | __asm ("strd r3, sl, [sp, 8]");
| do {
0x0006ac12 ldr r3, [r7, -0x14] | r3 = *((r7 - 0x14));
0x0006ac16 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x0006ac18 ldr r5, [r3, 0x14] | r5 = *((r3 + 0x14));
0x0006ac1a ands r4, r4, 0x1000000 | r4 &= 0x1000000;
| if (r4 != r4) {
0x0006ac1e beq 0x6ac52 |
0x0006ac20 ldr r2, [sp, 0xc] | r2 = var_ch_3;
0x0006ac22 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x0006ac24 ldr r2, [r2, 0x24] | r2 = *((r2 + 0x24));
0x0006ac26 ldr r4, [r3, 0x28] | r4 = *((r3 + 0x28));
| if (r2 != 0) {
0x0006ac28 cbz r2, 0x6ac40 |
0x0006ac2a ldr r3, [r7, -0x10] | r3 = *((r7 - 0x10));
0x0006ac2e ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0006ac30 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x0006ac32 subs r3, 0 |
0x0006ac34 it ne |
| if (r3 == 0) {
0x0006ac36 movne r3, 1 | r3 = 1;
| }
0x0006ac38 ands.w r3, r3, r2, lsr 5 | r3 &= (r2 >> 5);
| if (r3 != r3) {
0x0006ac3c bne.w 0x6ae7e | goto label_13;
| }
| }
| label_6:
0x0006ac40 ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x0006ac42 mov r1, r4 | r1 = r4;
0x0006ac44 mov r0, r6 | r0 = r6;
0x0006ac46 subs r4, r3, 1 | r4 = r3 - 1;
0x0006ac48 movs r3, 0x10 | r3 = 0x10;
0x0006ac4a mov r2, r4 | r2 = r4;
0x0006ac4c str r4, [r6, 0x38] | *((r6 + 0x38)) = r4;
0x0006ac4e bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
| }
0x0006ac52 cmp r5, 0 |
| if (r5 == 0) {
0x0006ac54 beq.w 0x6ad94 | goto label_14;
| }
0x0006ac58 ldr.w r8, [r5] | r8 = *(r5);
0x0006ac5c mov r0, r6 | r0 = r6;
0x0006ac5e mov r1, r8 | r1 = r8;
0x0006ac60 bl 0xf298 | fcn_0000f298 (r0, r1);
0x0006ac64 movs r3, 1 | r3 = 1;
0x0006ac66 mov r2, r0 | r2 = r0;
0x0006ac68 str r3, [sp] | *(sp) = r3;
0x0006ac6a mov fp, r0 |
0x0006ac6c movs r3, 0 | r3 = 0;
0x0006ac6e mov r1, r5 | r1 = r5;
0x0006ac70 mov r0, r6 | r0 = r6;
0x0006ac72 bl 0x67dc0 | fcn_00067dc0 (r0, r1, r2, r3, r4);
0x0006ac76 ldr r2, [r7, -0x8] | r2 = *((r7 - 0x8));
0x0006ac7a cmp r2, 0 |
| if (r2 >= 0) {
0x0006ac7c blt 0x6ac98 |
| if (r4 == 0) {
0x0006ac7e cbnz r4, 0x6ac86 |
0x0006ac80 ldr r4, [r6, 0x38] | r4 = *((r6 + 0x38));
0x0006ac82 subs r4, 1 | r4--;
0x0006ac84 str r4, [r6, 0x38] | *((r6 + 0x38)) = r4;
| }
0x0006ac86 ldr r1, [sp, 0x18] | r1 = var_18h_2;
0x0006ac88 mov r3, r4 | r3 = r4;
0x0006ac8a mov r0, r6 | r0 = r6;
0x0006ac8c strd r5, fp, [sp] | __asm ("strd r5, fp, [sp]");
0x0006ac90 bl 0x2dad4 | fcn_0002dad4 (r0, r1, r2, r3, r4, r5);
0x0006ac94 str r0, [r7, -0x8] | *((r7 - 0x8)) = r0;
| }
0x0006ac98 ldr r3, [r7, -0x10] | r3 = *((r7 - 0x10));
0x0006ac9c uxtb.w r2, r8 | r2 = (int8_t) r8;
0x0006aca0 str r2, [sp, 0x10] | var_10h_2 = r2;
0x0006aca2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0006aca4 lsls r1, r3, 0x1a | r1 = r3 << 0x1a;
| if (r1 < r3) {
0x0006aca6 bmi.w 0x6ae1e | goto label_15;
| }
| label_0:
0x0006acaa ldr r3, [r7, -0xc] | r3 = *((r7 - 0xc));
0x0006acae movs r1, 0x9e | r1 = 0x9e;
0x0006acb0 movs r2, 0 | r2 = 0;
0x0006acb2 mov r0, sb | r0 = sb;
0x0006acb4 str r3, [sp] | *(sp) = r3;
0x0006acb6 mov r3, fp | r3 = fp;
0x0006acb8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006acbc ldr.w r0, [sb] | r0 = *(sb);
0x0006acc0 ldr r1, [r7, -0x10] | r1 = *((r7 - 0x10));
0x0006acc4 ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x0006acc8 cmp r3, 0 |
| if (r3 != 0) {
0x0006acca bne.w 0x6adfc | goto label_16;
| }
0x0006acce ldrd r0, r3, [sb, 0x68] | __asm ("ldrd r0, r3, [sb, 0x68]");
0x0006acd2 movs r5, 0xf8 | r5 = 0xf8;
0x0006acd4 add.w r2, r3, r3, lsl 2 | r2 = r3 + (r3 << 2);
0x0006acd8 lsls r2, r2, 2 | r2 <<= 2;
0x0006acda subs r2, 0x14 | r2 -= 0x14;
0x0006acdc add r0, r2 | r0 += r2;
0x0006acde strb r5, [r0, 1] | *((r0 + 1)) = r5;
0x0006ace0 str r1, [r0, 0x10] | *((r0 + 0x10)) = r1;
| label_1:
0x0006ace2 cmp r3, 0 |
| if (r3 > 0) {
0x0006ace4 ble 0x6acf8 |
0x0006ace6 ldr.w r2, [sb, 0x68] | r2 = *((sb + 0x68));
0x0006acea add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0006acee add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x0006acf2 ldr r1, [sp, 0x10] | r1 = var_10h_2;
0x0006acf4 strh r1, [r2, -0x12] | *((r2 - 0x12)) = r1;
| }
0x0006acf8 cmp.w r8, 1 |
| if (r8 == 1) {
0x0006acfc beq.w 0x6ae52 | goto label_17;
| }
0x0006ad00 ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x0006ad02 cmp r2, r8 |
0x0006ad04 it lt |
| if (r2 < r8) {
0x0006ad06 strdlt r8, fp, [r6, 0x1c] | __asm ("strdlt r8, fp, [r6, 0x1c]");
| }
| label_4:
0x0006ad0a cmp r4, 0 |
| if (r4 != 0) {
0x0006ad0c bne 0x6ae08 | goto label_18;
| }
0x0006ad0e ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x0006ad10 adds r7, 0x14 | r7 += 0x14;
0x0006ad12 ldr r2, [sp, 8] | r2 = var_8h_2;
0x0006ad14 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x0006ad16 adds r2, 1 | r2++;
0x0006ad18 str r2, [sp, 8] | var_8h_2 = r2;
0x0006ad1a cmp r3, r2 |
0x0006ad1c bgt.w 0x6ac12 |
| } while (r3 > r2);
| label_11:
0x0006ad2c ldr.w r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
0x0006ad30 mov r2, r3 | r2 = r3;
0x0006ad32 str r3, [sp, 8] | var_8h_2 = r3;
0x0006ad34 ldr.w r3, [sb, 0x70] | r3 = *((sb + 0x70));
0x0006ad38 cmp r2, r3 |
| if (r2 >= r3) {
0x0006ad3a bge.w 0x6af4a | goto label_19;
| }
0x0006ad3e ldr r2, [sp, 8] | r2 = var_8h_2;
0x0006ad40 movs r1, 0 | r1 = 0;
0x0006ad42 ldr.w r0, [sb, 0x68] | r0 = *((sb + 0x68));
0x0006ad46 movs r4, 0x12 | r4 = 0x12;
0x0006ad48 ldr r5, [sp, 0x14] | r5 = var_14h;
0x0006ad4a add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x0006ad4e adds r2, 1 | r2++;
0x0006ad50 str.w r2, [sb, 0x6c] | __asm ("str.w r2, [sb, 0x6c]");
0x0006ad54 lsls r3, r3, 2 | r3 <<= 2;
0x0006ad56 adds r2, r0, r3 | r2 = r0 + r3;
0x0006ad58 strd r5, r1, [r2, 4] | __asm ("strd r5, r1, [r2, 4]");
0x0006ad5c strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x0006ad60 str r4, [r0, r3] | *((r0 + r3)) = r4;
| label_10:
0x0006ad62 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x0006ad66 ldr.w r4, [sl, 0x1c] | r4 = *((sl + 0x1c));
0x0006ad6a cmp r3, 0 |
| if (r3 > 0) {
0x0006ad6c bgt.w 0x6aec8 | goto label_20;
| }
| label_8:
0x0006ad70 movs r3, 0 | r3 = 0;
0x0006ad72 strb.w r3, [sl] | *(sl) = r3;
0x0006ad76 ldr r3, [sp, 8] | r3 = var_8h_2;
| if (r3 != 0) {
0x0006ad78 cbz r3, 0x6ad8e |
0x0006ad7a ldr.w r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
0x0006ad7e ldr r1, [sp, 8] | r1 = var_8h_2;
0x0006ad80 subs r2, r3, 1 | r2 = r3 - 1;
0x0006ad82 cmp r1, r2 |
0x0006ad84 it eq |
| if (r1 != r2) {
0x0006ad86 streq r1, [sb, 0x6c] | *((sb + 0x6c)) = r1;
| }
| if (r1 != r2) {
0x0006ad8a bne.w 0x6af20 | goto label_21;
| }
| }
| label_7:
0x0006ad8e add sp, 0x24 |
0x0006ad90 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x0006ad94 ldr r3, [r7, -0x10] | r3 = *((r7 - 0x10));
0x0006ad98 mov r8, r5 | r8 = r5;
0x0006ad9a mov fp, r5 |
0x0006ad9c str r5, [sp, 0x10] | var_10h_2 = r5;
0x0006ad9e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0006ada0 lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 >= r3) {
0x0006ada2 bpl 0x6acaa | goto label_0;
| }
| label_2:
0x0006ada4 ldr r3, [r6] | r3 = *(r6);
0x0006ada6 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0006ada8 mov sl, r3 | sl = r3;
| label_3:
0x0006adaa ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 == 0) {
0x0006adac cbnz r3, 0x6adbe |
0x0006adae ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x0006adb0 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x0006adb2 str r3, [sp, 0x14] | var_14h = r3;
| if (r3 == 0) {
0x0006adb4 cbz r3, 0x6adbe | goto label_22;
| }
0x0006adb6 ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
0x0006adb8 adds r3, 1 | r3++;
0x0006adba str r3, [sp, 0x14] | var_14h = r3;
0x0006adbc str r3, [r6, 0x2c] | *((r6 + 0x2c)) = r3;
| }
| label_22:
0x0006adbe ldrd r1, r3, [sb, 0x6c] | __asm ("ldrd r1, r3, [sb, 0x6c]");
0x0006adc2 cmp r1, r3 |
| if (r1 >= r3) {
0x0006adc4 bge.w 0x6af0e | goto label_23;
| }
0x0006adc8 ldr.w r0, [sb, 0x68] | r0 = *((sb + 0x68));
0x0006adcc add.w r3, r1, r1, lsl 2 | r3 = r1 + (r1 << 2);
0x0006add0 ldr r5, [sp, 0x14] | r5 = var_14h;
0x0006add2 adds r2, r1, 1 | r2 = r1 + 1;
0x0006add4 str.w r2, [sb, 0x6c] | __asm ("str.w r2, [sb, 0x6c]");
0x0006add8 mov.w ip, 0x52 |
0x0006addc add.w r2, r0, r3, lsl 2 | r2 = r0 + (r3 << 2);
0x0006ade0 str r5, [r2, 4] | *((r2 + 4)) = r5;
0x0006ade2 movs r5, 0 | r5 = 0;
0x0006ade4 strd r5, r5, [r2, 8] | __asm ("strd r5, r5, [r2, 8]");
0x0006ade8 str r5, [r2, 0x10] | *((r2 + 0x10)) = r5;
0x0006adea str.w ip, [r0, r3, lsl 2] | __asm ("str.w ip, [r0, r3, lsl 2]");
| label_9:
0x0006adee mov r2, sl | r2 = sl;
0x0006adf0 mvn r3, 1 | r3 = ~1;
0x0006adf4 mov r0, sb | r0 = sb;
0x0006adf6 bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x0006adfa b 0x6acaa | goto label_0;
| label_16:
0x0006adfc ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0006adfe lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
| if (r2 < r3) {
0x0006ae00 bmi 0x6ae70 | goto label_24;
| }
| label_5:
0x0006ae02 ldr.w r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
0x0006ae06 b 0x6ace2 | goto label_1;
| label_18:
0x0006ae08 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x0006ae0c mvns r2, r4 | r2 = ~r4;
0x0006ae0e ldrd r1, r5, [r0, 0x38] | __asm ("ldrd r1, r5, [r0, 0x38]");
0x0006ae12 cmn r5, r1 |
| if (r5 < r1) {
0x0006ae14 bmi 0x6ae76 | void (*0x6ae76)() ();
| }
| label_15:
0x0006ae1e cmp.w r8, 0 |
| if (r8 <= 0) {
0x0006ae22 ble 0x6ada4 | goto label_2;
| }
0x0006ae24 add.w sl, r5, 0x18 | sl = r5 + 0x18;
0x0006ae28 movs r5, 0 | r5 = 0;
| do {
0x0006ae2a ldr r1, [sl, -0x10] | r1 = *((sl - 0x10));
0x0006ae2e mov r0, r6 | r0 = r6;
0x0006ae30 bl 0x2d47c | fcn_0002d47c (r0, r1);
0x0006ae34 adds r5, 1 | r5++;
0x0006ae36 clz r3, r0 | r3 &= r0;
0x0006ae3a lsrs r3, r3, 5 | r3 >>= 5;
0x0006ae3c cmp r8, r5 |
0x0006ae3e it le |
| if (r8 > r5) {
0x0006ae40 movle r3, 0 | r3 = 0;
| }
0x0006ae42 add.w sl, sl, 0x10 | sl += 0x10;
0x0006ae46 cmp r3, 0 |
0x0006ae48 bne 0x6ae2a |
| } while (r3 != 0);
0x0006ae4a mov sl, r0 | sl = r0;
0x0006ae4c cmp r0, 0 |
| if (r0 != 0) {
0x0006ae4e bne 0x6adaa | goto label_3;
| }
0x0006ae50 b 0x6ada4 | goto label_2;
| label_17:
0x0006ae52 cmp.w fp, 0 |
| if (fp == 0) {
0x0006ae56 beq.w 0x6ad0a | goto label_4;
| }
0x0006ae5a ldrb r2, [r6, 0x13] | r2 = *((r6 + 0x13));
0x0006ae5c cmp r2, 7 |
| if (r2 > 7) {
0x0006ae5e bhi.w 0x6ad0a | goto label_4;
| }
0x0006ae62 add.w r1, r6, r2, lsl 2 | r1 = r6 + (r2 << 2);
0x0006ae66 adds r2, 1 | r2++;
0x0006ae68 strb r2, [r6, 0x13] | *((r6 + 0x13)) = r2;
0x0006ae6a str.w fp, [r1, 0x94] | __asm ("str.w fp, [r1, 0x94]");
0x0006ae6e b 0x6ad0a | goto label_4;
| label_24:
0x0006ae70 bl 0x159dc | fcn_000159dc (r0, r1);
0x0006ae74 b 0x6ae02 | goto label_5;
| label_13:
0x0006ae7e ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 == 0) {
0x0006ae80 cbnz r3, 0x6ae8a |
0x0006ae82 ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
0x0006ae84 adds r3, 1 | r3++;
0x0006ae86 str r3, [sp, 0x14] | var_14h = r3;
0x0006ae88 str r3, [r6, 0x2c] | *((r6 + 0x2c)) = r3;
| }
0x0006ae8a movs r3, 0 | r3 = 0;
0x0006ae8c ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x0006ae8e str r3, [sp] | *(sp) = r3;
0x0006ae90 movs r1, 0x4d | r1 = 0x4d;
0x0006ae92 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006ae94 mov r0, sb | r0 = sb;
0x0006ae96 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006ae9a b 0x6ac40 | goto label_6;
| label_12:
0x0006ae9c ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x0006aea0 ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x0006aea2 cmp r2, 0 |
0x0006aea4 it ne |
| if (r2 != 0) {
0x0006aea6 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x0006aea8 ite ne |
| if (r2 == 0) {
0x0006aeaa movne r8, 1 | r8 = 1;
| }
| if (r2 == 0) {
0x0006aeae mov.w r8, 0 | r8 = 0;
| }
| if (r2 != 0) {
0x0006aeb2 bne 0x6af64 | goto label_25;
| }
0x0006aeb4 cmp r3, 0 |
0x0006aeb6 ldr.w r4, [sl, 0x1c] | r4 = *((sl + 0x1c));
0x0006aeba it le |
| if (r3 <= 0) {
0x0006aebc strble r8, [sl] | *(sl) = r8;
| goto label_26;
| }
| if (r3 <= 0) {
| label_26:
0x0006aec0 ble.w 0x6ad8e | goto label_7;
| }
0x0006aec4 str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h_2]");
| label_20:
0x0006aec8 movs r5, 0 | r5 = 0;
0x0006aeca mov ip, r3 |
0x0006aecc mov r8, r5 | r8 = r5;
| do {
0x0006aece ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0006aed0 mov r0, r6 | r0 = r6;
0x0006aed2 ldr.w fp, [r4, 0xc] | fp = *((r4 + 0xc));
0x0006aed6 ldr r7, [r4, 4] | r7 = *((r4 + 4));
0x0006aed8 mov r2, fp | r2 = fp;
0x0006aeda mov r1, r7 | r1 = r7;
| if (r3 != 0) {
0x0006aedc cbz r3, 0x6af04 |
0x0006aede bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0006aee2 cmp fp, r0 |
0x0006aee4 mov r3, fp | r3 = fp;
0x0006aee6 mov r2, r0 | r2 = r0;
| if (fp != r0) {
0x0006aee8 beq 0x6af00 |
0x0006aeea ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x0006aeec str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006aef0 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x0006aef2 tst.w r1, 0x200000 |
0x0006aef6 ite ne |
| if ((r1 & 0x200000) == 0) {
0x0006aef8 movne r1, 0x4d | r1 = 0x4d;
| }
| if ((r1 & 0x200000) != 0) {
0x0006aefa moveq r1, 0x4e | r1 = 0x4e;
| }
0x0006aefc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0006af00 ldr.w ip, [sl, 0x24] | ip = *((sl + 0x24));
| }
0x0006af04 adds r5, 1 | r5++;
0x0006af06 adds r4, 0x14 | r4 += 0x14;
0x0006af08 cmp ip, r5 |
0x0006af0a bgt 0x6aece |
| } while (ip > r5);
0x0006af0c b 0x6ad70 | goto label_8;
| label_23:
0x0006af0e movs r3, 0 | r3 = 0;
0x0006af10 movs r1, 0x52 | r1 = 0x52;
0x0006af12 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006af14 mov r0, sb | r0 = sb;
0x0006af16 str r3, [sp] | *(sp) = r3;
0x0006af18 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006af1c mov r1, r0 | r1 = r0;
0x0006af1e b 0x6adee | goto label_9;
| label_21:
0x0006af20 ldr r4, [sp, 8] | r4 = var_8h_2;
0x0006af22 ldr.w r1, [sb] | r1 = *(sb);
0x0006af26 mov r0, r4 | r0 = r4;
0x0006af28 bics.w r0, r0, r4, asr 32 | __asm ("bics.w r0, r0, r4, asr 32");
0x0006af2c it hs |
| if (r1 < 0x52) {
0x0006af2e movhs r0, r2 | r0 = r2;
| }
0x0006af30 ldrb.w r2, [r1, 0x53] | r2 = *((r1 + 0x53));
| if (r2 != 0) {
0x0006af34 cbnz r2, 0x6af5c | goto label_27;
| }
0x0006af36 ldr.w r2, [sb, 0x68] | r2 = *((sb + 0x68));
0x0006af3a add.w r8, r0, r0, lsl 2 | r8 = r0 + (r0 << 2);
0x0006af3e add.w r2, r2, r8, lsl 2 | r2 += (r8 << 2);
| do {
0x0006af42 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0006af44 add sp, 0x24 |
0x0006af46 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_19:
0x0006af4a movs r3, 0 | r3 = 0;
0x0006af4c ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006af4e movs r1, 0x12 | r1 = 0x12;
0x0006af50 mov r0, sb | r0 = sb;
0x0006af52 str r3, [sp] | *(sp) = r3;
0x0006af54 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006af58 str r0, [sp, 8] | var_8h_2 = r0;
0x0006af5a b 0x6ad62 | goto label_10;
| label_27:
0x0006af5c ldr r2, [pc, 0xc] |
0x0006af5e add r2, pc | r2 = 0xd5ece;
0x0006af60 adds r2, 4 | r2 += 4;
0x0006af62 b 0x6af42 |
| } while (1);
| label_25:
0x0006af64 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x0006af66 str r3, [sp, 0x14] | var_14h = r3;
0x0006af68 b 0x6ad2c | goto label_11;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x6b164 */
| #include <stdint.h>
|
; (fcn) fcn.0006b164 () | void fcn_0006b164 (int16_t arg_1h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_2;
| 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;
| r1 = arg2;
| r2 = arg3;
0x0006b164 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006b168 sub sp, 0x34 |
0x0006b16a str r2, [sp, 0x18] | var_18h = r2;
0x0006b16c mov r6, r1 | r6 = r1;
0x0006b16e mov r4, r0 | r4 = r0;
0x0006b170 ldr.w r2, [pc, 0x4a8] | r2 = *(0x0006b61c);
0x0006b174 ldr.w r3, [pc, 0x4a8] |
0x0006b178 ldr r7, [r0, 0x28] | r7 = *((r0 + 0x28));
0x0006b17a add r2, pc | r2 += pc;
0x0006b17c ldr.w sl, [r1, 0xc] | sl = *(arg_1hxc);
0x0006b180 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006b182 ldr r2, [r0] | r2 = *(r0);
0x0006b184 ldr r3, [r3] | r3 = *(0x6b620);
0x0006b186 str r3, [sp, 0x2c] | var_2ch = r3;
0x0006b188 mov.w r3, 0 | r3 = 0;
0x0006b18c ldr r3, [r1, 0x18] | r3 = *(arg_1hx18);
0x0006b18e ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
0x0006b190 adds r2, r7, 2 | r2 = r7 + 2;
0x0006b192 str r2, [r0, 0x28] | *((r0 + 0x28)) = r2;
0x0006b194 ldr r2, [r6] | r2 = *(r6);
0x0006b196 cmp r3, 0 |
| if (r3 == 0) {
0x0006b198 beq.w 0x6b5ea | goto label_16;
| }
0x0006b19c ldr r5, [r1, 0xc] | r5 = *((r1 + 0xc));
0x0006b19e cmp r3, r5 |
| if (r3 == r5) {
0x0006b1a0 beq.w 0x6b578 | goto label_17;
| }
0x0006b1a4 adds r1, 0x10 | r1 += 0x10;
0x0006b1a6 mov.w r8, 0 | r8 = 0;
| do {
0x0006b1aa ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x0006b1ac add.w r8, r8, 1 | r8++;
0x0006b1b0 mov ip, r1 |
0x0006b1b2 lsl.w r5, r8, 4 | r5 = r8 << 4;
0x0006b1b6 adds r1, 0x10 | r1 += 0x10;
0x0006b1b8 cmp r3, r0 |
0x0006b1ba bne 0x6b1aa |
| } while (r3 != r0);
0x0006b1bc ldr.w r3, [ip] | r3 = *(ip);
0x0006b1c0 movs r1, 0x1b | r1 = 0x1b;
0x0006b1c2 mov r0, r4 | r0 = r4;
0x0006b1c4 str r3, [sp] | *(sp) = r3;
0x0006b1c6 movs r3, 0 | r3 = 0;
0x0006b1c8 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0006b1cc cbz r0, 0x6b1ee |
| while (1) {
| label_1:
0x0006b1ce ldr.w r2, [pc, 0x454] | r2 = *(0x0006b624);
0x0006b1d2 ldr.w r3, [pc, 0x44c] | r3 = *(0x6b622);
0x0006b1d6 add r2, pc | r2 += pc;
0x0006b1d8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0006b1da ldr r2, [r3] | r2 = *(0x6b622);
0x0006b1dc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0006b1de eors r2, r3 | r2 ^= r3;
0x0006b1e0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006b1e4 bne.w 0x6b616 | goto label_18;
| }
0x0006b1e8 add sp, 0x34 |
0x0006b1ea pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006b1ee cmp.w r8, 1 |
| if (r8 != 1) {
0x0006b1f2 beq 0x6b20c |
0x0006b1f4 ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x0006b1f8 ldr.w r1, [sl] | r1 = *(sl);
| label_11:
0x0006b1fc ldr r3, [r4] | r3 = *(r4);
0x0006b1fe ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0006b200 add r3, r5 | r3 += r5;
0x0006b202 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0006b204 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
0x0006b206 cmp r3, 0 |
| if (r3 != 0) {
0x0006b208 bne.w 0x6b4b8 | goto label_19;
| }
| }
| label_5:
0x0006b20c ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x0006b20e cmp r5, 0 |
| if (r5 == 0) {
0x0006b210 beq.w 0x6b458 | goto label_20;
| }
| label_0:
0x0006b214 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006b216 mov r1, r6 | r1 = r6;
0x0006b218 mov r0, r4 | r0 = r4;
0x0006b21a cmp r3, 0 |
0x0006b21c ite lt |
| if (r3 >= 0) {
0x0006b21e ldrlt r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
| }
| if (r3 < 0) {
0x0006b220 ldrge r3, [sp, 0x18] | r3 = var_18h;
| }
0x0006b222 str r3, [sp, 0x24] | var_24h = r3;
0x0006b224 bl 0x2d384 | fcn_0002d384 (r0, r1);
0x0006b228 ldr.w sb, [r4, 0x28] | sb = *((r4 + 0x28));
0x0006b22c ldrh r2, [r6, 0x32] | r2 = *((r6 + 0x32));
0x0006b22e str r0, [sp, 0x1c] | var_1ch = r0;
0x0006b230 add.w r3, sb, 1 | r3 = sb + 1;
0x0006b234 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| if (r0 != 0) {
0x0006b236 cbz r0, 0x6b23e |
0x0006b238 ldr r3, [r0] | r3 = *(r0);
0x0006b23a adds r3, 1 | r3++;
0x0006b23c str r3, [r0] | *(r0) = r3;
| }
0x0006b23e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006b240 movs r1, 0x72 | r1 = 0x72;
0x0006b242 str r2, [sp] | *(sp) = r2;
0x0006b244 mov r0, r5 | r0 = r5;
0x0006b246 mov r2, sb | r2 = sb;
0x0006b248 str r3, [sp, 4] | var_4h = r3;
0x0006b24a mvn r3, 8 | r3 = ~8;
0x0006b24e str r3, [sp, 8] | var_8h = r3;
0x0006b250 movs r3, 0 | r3 = 0;
0x0006b252 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0006b256 movs r2, 0x62 | r2 = 0x62;
0x0006b258 mov r3, sl | r3 = sl;
0x0006b25a str r2, [sp] | *(sp) = r2;
0x0006b25c mov r1, r7 | r1 = r7;
0x0006b25e mov r2, r8 | r2 = r8;
0x0006b260 mov r0, r4 | r0 = r4;
0x0006b262 bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x0006b266 ldrd fp, r3, [r5, 0x6c] | __asm ("ldrd fp, r3, [r5, 0x6c]");
0x0006b26a cmp fp, r3 |
| if (fp >= r3) {
0x0006b26c bge.w 0x6b598 | goto label_21;
| }
0x0006b270 add.w r3, fp, fp, lsl 2 | r3 = fp + (fp << 2);
0x0006b274 ldr r0, [r5, 0x68] | r0 = *((r5 + 0x68));
0x0006b276 add.w r2, fp, 1 | r2 += arg_1h;
0x0006b27a lsls r3, r3, 2 | r3 <<= 2;
0x0006b27c str r2, [r5, 0x6c] | *((r5 + 0x6c)) = r2;
0x0006b27e movs r1, 0 | r1 = 0;
0x0006b280 str r2, [sp, 0x20] | var_20h = r2;
0x0006b282 mov.w ip, 0x25 |
0x0006b286 adds r2, r0, r3 | r2 = r0 + r3;
0x0006b288 strd r7, r1, [r2, 4] | __asm ("strd r7, r1, [r2, 4]");
0x0006b28c strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x0006b290 str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
| label_12:
0x0006b294 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0006b296 cmp r3, 0 |
| if (r3 == 0) {
0x0006b298 beq.w 0x6b4d4 | goto label_22;
| }
0x0006b29c subs r3, 1 | r3--;
0x0006b29e uxtb r3, r3 | r3 = (int8_t) r3;
0x0006b2a0 strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x0006b2a2 add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x0006b2a6 ldr.w r3, [r3, 0x94] | r3 = *((r3 + 0x94));
0x0006b2aa str r3, [sp, 0x14] | var_14h = r3;
| label_7:
0x0006b2ac ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0006b2ae movs r2, 1 | r2 = 1;
0x0006b2b0 mov.w sl, 0 | sl = 0;
0x0006b2b4 mov r1, r6 | r1 = r6;
0x0006b2b6 mov r0, r4 | r0 = r4;
0x0006b2b8 cmp r3, 0 |
0x0006b2ba it eq |
| if (r3 != 0) {
0x0006b2bc moveq r3, r4 | r3 = r4;
| }
0x0006b2be strb r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x0006b2c0 add r3, sp, 0x28 | r3 += var_28h;
0x0006b2c2 mov r2, r7 | r2 = r7;
0x0006b2c4 str r3, [sp, 4] | var_4h = r3;
0x0006b2c6 strd sl, sl, [sp, 8] | __asm ("strd sl, sl, [var_8h]");
0x0006b2ca ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006b2cc str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0006b2d0 bl 0x6afc4 | fcn_0006afc4 (r0, r1, r2, r3, r4, r5, r6);
0x0006b2d4 mov r2, sb | r2 = sb;
0x0006b2d6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006b2d8 movs r1, 0x87 | r1 = 0x87;
0x0006b2da mov r0, r5 | r0 = r5;
0x0006b2dc str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0006b2e0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b2e4 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0006b2e6 cmp r2, 0 |
| if (r2 != 0) {
0x0006b2e8 bne.w 0x6b4de | goto label_23;
| }
| label_8:
0x0006b2ec movs r2, 0 | r2 = 0;
0x0006b2ee ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006b2f0 str r2, [sp] | *(sp) = r2;
0x0006b2f2 movs r1, 5 | r1 = 5;
0x0006b2f4 mov r2, r7 | r2 = r7;
0x0006b2f6 mov r0, r5 | r0 = r5;
0x0006b2f8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b2fc ldr r3, [r5] | r3 = *(r5);
0x0006b2fe cmp.w fp, 0 |
0x0006b302 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006b304 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006b308 it lt |
| if (fp >= 0) {
0x0006b30a addlt fp, r2, -1 |
| }
0x0006b30e cmp r3, 0 |
| if (r3 != 0) {
0x0006b310 bne.w 0x6b46c | goto label_24;
| }
0x0006b314 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006b316 add.w fp, fp, fp, lsl 2 |
0x0006b31a add.w sl, r7, 1 | sl = r7 + 1;
0x0006b31e add.w r3, r3, fp, lsl 2 | r3 += (fp << 2);
0x0006b322 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006b324 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006b326 cmp r3, 0 |
| if (r3 < 0) {
0x0006b328 blt.w 0x6b480 | goto label_25;
| }
| label_2:
0x0006b32c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006b32e mvn r2, 8 | r2 = ~8;
0x0006b332 str r2, [sp, 8] | var_8h = r2;
0x0006b334 movs r1, 0x63 | r1 = 0x63;
0x0006b336 mov r2, sl | r2 = sl;
0x0006b338 mov r0, r5 | r0 = r5;
0x0006b33a strd r8, r3, [sp] | __asm ("strd r8, r3, [sp]");
0x0006b33e ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006b340 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0006b344 movs r2, 0x11 | r2 = 0x11;
| label_3:
0x0006b346 ldr.w r8, [r5, 0x6c] | r8 = *((r5 + 0x6c));
0x0006b34a cmp.w r8, 0 |
0x0006b34e itttt gt |
| if (r8 <= 0) {
0x0006b350 ldrgt r3, [r5, 0x68] | r3 = *((r5 + 0x68));
| }
| if (r8 <= 0) {
0x0006b352 addgt r1, r8, r8, lsl 2 | r1 = r8 + (r8 << 2);
| }
| if (r8 <= 0) {
0x0006b354 lslgt r0, r1, 6 | r0 = r1 << 6;
| }
| if (r8 <= 0) {
0x0006b356 addgt r3, r3, r1, lsl 2 | r3 += (r1 << 2);
| }
0x0006b35a strh r2, [r3, -0x12] | *((r3 - 0x12)) = r2;
0x0006b35e ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x0006b360 cmp r8, r3 |
| if (r8 >= r3) {
0x0006b362 bge.w 0x6b5ae | goto label_26;
| }
0x0006b366 add.w r3, r8, r8, lsl 2 | r3 = r8 + (r8 << 2);
0x0006b36a ldr r0, [r5, 0x68] | r0 = *((r5 + 0x68));
0x0006b36c movs r1, 0 | r1 = 0;
0x0006b36e lsls r3, r3, 2 | r3 <<= 2;
0x0006b370 add.w fp, r8, 1 |
0x0006b374 mov.w ip, 0x23 |
0x0006b378 str.w fp, [r5, 0x6c] | __asm ("str.w fp, [r5, 0x6c]");
0x0006b37c adds r2, r0, r3 | r2 = r0 + r3;
0x0006b37e strd sb, r1, [r2, 4] | __asm ("strd sb, r1, [r2, 4]");
0x0006b382 strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x0006b386 str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
| label_13:
0x0006b38a ldrb.w r3, [r6, 0x36] | r3 = *((r6 + 0x36));
0x0006b38e cmp r3, 0 |
| if (r3 != 0) {
0x0006b390 bne.w 0x6b506 | goto label_27;
| }
0x0006b394 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0006b396 movs r2, 1 | r2 = 1;
0x0006b398 cmp r3, 0 |
0x0006b39a it eq |
| if (r3 != 0) {
0x0006b39c moveq r3, r4 | r3 = r4;
| }
0x0006b39e strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
| label_10:
0x0006b3a0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006b3a2 mov r2, sb | r2 = sb;
0x0006b3a4 movs r1, 0x81 | r1 = 0x81;
0x0006b3a6 mov r0, r5 | r0 = r5;
0x0006b3a8 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0006b3ac bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b3b0 ldrb.w r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x0006b3b4 ands r3, r3, 2 | r3 &= 2;
| if (r3 == r3) {
0x0006b3b8 beq.w 0x6b4f8 | goto label_28;
| }
| label_9:
0x0006b3bc movs r3, 0 | r3 = 0;
0x0006b3be mov r2, sl | r2 = sl;
0x0006b3c0 str r3, [sp] | *(sp) = r3;
0x0006b3c2 movs r1, 0x86 | r1 = 0x86;
0x0006b3c4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006b3c6 mov r0, r5 | r0 = r5;
0x0006b3c8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b3cc ldr r3, [r5, 0x6c] | r3 = *((r5 + 0x6c));
0x0006b3ce cmp r3, 0 |
| if (r3 > 0) {
0x0006b3d0 ble 0x6b3e2 |
0x0006b3d2 ldr r2, [r5, 0x68] | r2 = *((r5 + 0x68));
0x0006b3d4 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006b3d8 add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0006b3dc movs r3, 0x10 | r3 = 0x10;
0x0006b3de strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
0x0006b3e2 ldr r1, [sp, 0x14] | r1 = var_14h;
| if (r1 != 0) {
0x0006b3e4 cbz r1, 0x6b3f8 |
0x0006b3e6 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0006b3e8 cmp r3, 7 |
0x0006b3ea itttt ls |
| if (r3 > 7) {
0x0006b3ec addls r2, r4, r3, lsl 2 | r2 = r4 + (r3 << 2);
| }
| if (r3 > 7) {
0x0006b3f0 addls r3, 1 | r3++;
| }
| if (r3 > 7) {
0x0006b3f2 strbls r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
| }
| if (r3 > 7) {
0x0006b3f4 str.w r1, [r2, 0x94] | __asm ("str.w r1, [r2, 0x94]");
| goto label_29;
| }
| }
| label_29:
0x0006b3f8 movs r2, 0 | r2 = 0;
0x0006b3fa mov r3, fp | r3 = fp;
0x0006b3fc str r2, [sp] | *(sp) = r2;
0x0006b3fe movs r1, 3 | r1 = 3;
0x0006b400 mov r2, sb | r2 = sb;
0x0006b402 mov r0, r5 | r0 = r5;
0x0006b404 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b408 ldr r3, [r5] | r3 = *(r5);
0x0006b40a cmp.w r8, 0 |
0x0006b40e ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006b410 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006b414 it lt |
| if (r8 >= 0) {
0x0006b416 addlt r8, r2, -1 | r8 = r2 + -1;
| }
0x0006b41a cmp r3, 0 |
| if (r3 != 0) {
0x0006b41c bne 0x6b4b0 | goto label_30;
| }
0x0006b41e ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006b420 add.w r8, r8, r8, lsl 2 | r8 += (r8 << 2);
0x0006b424 add.w r3, r3, r8, lsl 2 | r3 += (r8 << 2);
| label_4:
0x0006b428 movs r4, 0 | r4 = 0;
0x0006b42a str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006b42c movs r1, 0x76 | r1 = 0x76;
0x0006b42e mov r2, r7 | r2 = r7;
0x0006b430 mov r3, r4 | r3 = r4;
0x0006b432 mov r0, r5 | r0 = r5;
0x0006b434 str r4, [sp] | *(sp) = r4;
0x0006b436 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b43a mov r3, r4 | r3 = r4;
0x0006b43c mov r2, sl | r2 = sl;
0x0006b43e movs r1, 0x76 | r1 = 0x76;
0x0006b440 mov r0, r5 | r0 = r5;
0x0006b442 str r4, [sp] | *(sp) = r4;
0x0006b444 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b448 mov r3, r4 | r3 = r4;
0x0006b44a mov r2, sb | r2 = sb;
0x0006b44c movs r1, 0x76 | r1 = 0x76;
0x0006b44e mov r0, r5 | r0 = r5;
0x0006b450 str r4, [sp] | *(sp) = r4;
0x0006b452 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b456 b 0x6b1ce |
| }
| label_20:
0x0006b458 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
| if (r3 == 0) {
0x0006b45a cbz r3, 0x6b4c6 | goto label_31;
| }
| label_6:
0x0006b45c mov r0, r4 | r0 = r4;
0x0006b45e bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0006b462 mov r5, r0 | r5 = r0;
0x0006b464 cmp r0, 0 |
| if (r0 != 0) {
0x0006b466 bne.w 0x6b214 | goto label_0;
| }
0x0006b46a b 0x6b1ce | goto label_1;
| label_24:
0x0006b46c ldr r3, [pc, 0x1b8] |
0x0006b46e add.w sl, r7, 1 | sl = r7 + 1;
0x0006b472 add r3, pc | r3 = 0xd6a9e;
0x0006b474 adds r3, 4 | r3 += 4;
0x0006b476 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006b478 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006b47a cmp r3, 0 |
| if (r3 >= 0) {
0x0006b47c bge.w 0x6b32c | goto label_2;
| }
| label_25:
0x0006b480 ldr.w fp, [sp, 0x24] | fp = var_24h;
0x0006b484 movs r3, 0 | r3 = 0;
0x0006b486 movs r1, 0x8d | r1 = 0x8d;
0x0006b488 str r3, [sp] | *(sp) = r3;
0x0006b48a mov r0, r5 | r0 = r5;
0x0006b48c mov r3, r8 | r3 = r8;
0x0006b48e mov r2, fp | r2 = fp;
0x0006b490 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b494 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0006b496 mvn r2, 8 | r2 = ~8;
0x0006b49a str r2, [sp, 8] | var_8h = r2;
0x0006b49c mov r3, fp | r3 = fp;
0x0006b49e mov r2, sl | r2 = sl;
0x0006b4a0 mov r0, r5 | r0 = r5;
0x0006b4a2 strd r8, r1, [sp] | __asm ("strd r8, r1, [sp]");
0x0006b4a6 movs r1, 0x63 | r1 = 0x63;
0x0006b4a8 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0006b4ac movs r2, 1 | r2 = 1;
0x0006b4ae b 0x6b346 | goto label_3;
| label_30:
0x0006b4b0 ldr r3, [pc, 0x178] |
0x0006b4b2 add r3, pc | r3 = 0xd6ae2;
0x0006b4b4 adds r3, 4 | r3 += 4;
0x0006b4b6 b 0x6b428 | goto label_4;
| label_19:
0x0006b4b8 str r1, [sp] | *(sp) = r1;
0x0006b4ba movs r3, 1 | r3 = 1;
0x0006b4bc mov r1, r8 | r1 = r8;
0x0006b4be mov r0, r4 | r0 = r4;
0x0006b4c0 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
0x0006b4c4 b 0x6b20c | goto label_5;
| label_31:
0x0006b4c6 ldr r3, [r4] | r3 = *(r4);
0x0006b4c8 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0006b4ca lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x0006b4cc itt pl |
| if (r3 < r3) {
0x0006b4ce movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x0006b4d0 strbpl r3, [r4, 0x17] | *((r4 + 0x17)) = r3;
| }
0x0006b4d2 b 0x6b45c | goto label_6;
| label_22:
0x0006b4d4 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0006b4d6 adds r3, 1 | r3++;
0x0006b4d8 str r3, [sp, 0x14] | var_14h = r3;
0x0006b4da str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0006b4dc b 0x6b2ac | goto label_7;
| label_23:
0x0006b4de ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0006b4e0 mvn.w ip, r2 |
0x0006b4e4 ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x0006b4e6 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0006b4ea cmn r2, r3 |
| if (r2 < r3) {
0x0006b4ec bmi 0x6b5cc | goto label_32;
| }
0x0006b4ee ldr r1, [r1, 0x6c] | r1 = *((r1 + 0x6c));
0x0006b4f0 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0006b4f2 str.w r1, [r3, ip, lsl 2] | __asm ("str.w r1, [r3, ip, lsl 2]");
0x0006b4f6 b 0x6b2ec | goto label_8;
| label_28:
0x0006b4f8 mov r2, sl | r2 = sl;
0x0006b4fa movs r1, 0x85 | r1 = 0x85;
0x0006b4fc mov r0, r5 | r0 = r5;
0x0006b4fe str r3, [sp] | *(sp) = r3;
0x0006b500 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006b504 b 0x6b3bc | goto label_9;
| label_27:
0x0006b506 ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x0006b508 cmp fp, r3 |
| if (fp >= r3) {
0x0006b50a bge 0x6b5d4 | goto label_33;
| }
0x0006b50c add.w r1, fp, fp, lsl 2 | r1 = fp + (fp << 2);
0x0006b510 ldr.w ip, [r5, 0x68] | ip = *((r5 + 0x68));
0x0006b514 add.w r2, fp, 1 | r2 += arg_1h;
0x0006b518 lsls r1, r1, 2 | r1 <<= 2;
0x0006b51a mov.w lr, 0xb | lr = 0xb;
0x0006b51e str r2, [r5, 0x6c] | *((r5 + 0x6c)) = r2;
0x0006b520 movs r0, 0 | r0 = 0;
0x0006b522 str.w lr, [ip, r1] | __asm ("str.w lr, [ip, r1]");
0x0006b526 mov r3, fp | r3 = fp;
0x0006b528 mov fp, r2 |
0x0006b52a add.w r2, ip, r1 | r2 = ip + r1;
0x0006b52e movs r1, 1 | r1 = 1;
0x0006b530 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x0006b532 strd r0, r0, [r2, 0xc] | __asm ("strd r0, r0, [r2, 0xc]");
0x0006b536 str r1, [r2, 8] | *((r2 + 8)) = r1;
| label_15:
0x0006b538 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006b53a movs r1, 0x80 | r1 = 0x80;
0x0006b53c mov r0, r5 | r0 = r5;
0x0006b53e str r3, [sp, 0x18] | var_18h = r3;
0x0006b540 str r2, [sp] | *(sp) = r2;
0x0006b542 ldrh r2, [r6, 0x32] | r2 = *((r6 + 0x32));
0x0006b544 str r2, [sp, 4] | var_4h = r2;
0x0006b546 mov r2, sb | r2 = sb;
0x0006b548 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0006b54c mov r2, r6 | r2 = r6;
0x0006b54e movs r1, 2 | r1 = 2;
0x0006b550 mov r0, r4 | r0 = r4;
0x0006b552 bl 0x2ba20 | fcn_0002ba20 (r0, r1, r2);
0x0006b556 ldr r2, [r5] | r2 = *(r5);
0x0006b558 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006b55a ldr r1, [r5, 0x6c] | r1 = *((r5 + 0x6c));
0x0006b55c ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0006b560 cmp r3, 0 |
0x0006b562 it lt |
| if (r3 >= 0) {
0x0006b564 addlt r3, r1, -1 | r3 = r1 + -1;
| }
| if (r2 != 0) {
0x0006b568 cbnz r2, 0x6b5c4 | goto label_34;
| }
0x0006b56a ldr r2, [r5, 0x68] | r2 = *((r5 + 0x68));
0x0006b56c add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006b570 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_14:
0x0006b574 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x0006b576 b 0x6b3a0 | goto label_10;
| label_17:
0x0006b578 ldr r3, [r1] | r3 = *(r1);
0x0006b57a movs r1, 0x1b | r1 = 0x1b;
0x0006b57c str r3, [sp] | *(sp) = r3;
0x0006b57e movs r3, 0 | r3 = 0;
0x0006b580 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0006b584 mov r8, r0 | r8 = r0;
0x0006b586 cmp r0, 0 |
| if (r0 != 0) {
0x0006b588 bne.w 0x6b1ce | goto label_1;
| }
0x0006b58c ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x0006b590 mov r5, r8 | r5 = r8;
0x0006b592 ldr.w r1, [sl] | r1 = *(sl);
0x0006b596 b 0x6b1fc | goto label_11;
| label_21:
0x0006b598 movs r3, 0 | r3 = 0;
0x0006b59a mov r2, r7 | r2 = r7;
0x0006b59c str r3, [sp] | *(sp) = r3;
0x0006b59e movs r1, 0x25 | r1 = 0x25;
0x0006b5a0 mov r0, r5 | r0 = r5;
0x0006b5a2 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006b5a6 adds r3, r0, 1 | r3 = r0 + 1;
0x0006b5a8 mov fp, r0 |
0x0006b5aa str r3, [sp, 0x20] | var_20h = r3;
0x0006b5ac b 0x6b294 | goto label_12;
| label_26:
0x0006b5ae movs r3, 0 | r3 = 0;
0x0006b5b0 mov r2, sb | r2 = sb;
0x0006b5b2 movs r1, 0x23 | r1 = 0x23;
0x0006b5b4 mov r0, r5 | r0 = r5;
0x0006b5b6 str r3, [sp] | *(sp) = r3;
0x0006b5b8 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006b5bc ldr.w fp, [r5, 0x6c] | fp = *((r5 + 0x6c));
0x0006b5c0 mov r8, r0 | r8 = r0;
0x0006b5c2 b 0x6b38a | goto label_13;
| label_34:
0x0006b5c4 ldr r3, [pc, 0x68] |
0x0006b5c6 add r3, pc | r3 = 0xd6bfa;
0x0006b5c8 adds r3, 4 | r3 += 4;
0x0006b5ca b 0x6b574 | goto label_14;
| label_32:
0x0006b5cc mov r2, ip | r2 = ip;
0x0006b5ce bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0006b5d2 b 0x6b2ec | goto label_8;
| label_33:
0x0006b5d4 movs r2, 0 | r2 = 0;
0x0006b5d6 movs r3, 1 | r3 = 1;
0x0006b5d8 movs r1, 0xb | r1 = 0xb;
0x0006b5da mov r0, r5 | r0 = r5;
0x0006b5dc str r2, [sp] | *(sp) = r2;
0x0006b5de bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006b5e2 ldr.w fp, [r5, 0x6c] | fp = *((r5 + 0x6c));
0x0006b5e6 mov r3, r0 | r3 = r0;
0x0006b5e8 b 0x6b538 | goto label_15;
| label_16:
0x0006b5ea sub.w r1, r1, 0x80000 | r1 -= 0x80000;
0x0006b5ee ldr r1, [r1] | r1 = *(r1);
0x0006b5f0 str r1, [sp] | *(sp) = r1;
0x0006b5f2 movs r1, 0x1b | r1 = 0x1b;
0x0006b5f4 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0006b5f8 cmp r0, 0 |
| if (r0 != 0) {
0x0006b5fa bne.w 0x6b1ce | goto label_1;
| }
0x0006b5fe mov.w r8, 0x8000 | r8 = fcn.00008000;
0x0006b602 movs r5, 0 | r5 = 0;
0x0006b604 ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x0006b608 movt r8, 0xffff | r8 = (r8 & 0xFFFF) | 0xffff0000;
0x0006b60c ldr.w r1, [sl] | r1 = *(sl);
0x0006b610 movt r5, 0xfff8 | r5 = (r5 & 0xFFFF) | 0xfff80000;
0x0006b614 b 0x6b1fc | goto label_11;
| label_18:
0x0006b616 blx 0x7e8c | fcn_00007e8c ();
0x0006b61a nop |
0x0006b61c cmp r3, 0x16 |
0x0006b61e movs r6, r0 | r6 = r0;
0x0006b620 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0006b622 movs r0, r0 |
0x0006b624 cmp r2, 0xba |
0x0006b626 movs r6, r0 | r6 = r0;
0x0006b628 ldr r0, [pc, 0x48] | r0 = *(0x6b674);
0x0006b62a movs r6, r0 | r6 = r0;
0x0006b62c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x6b788 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006b788 () | void fcn_0006b788 (int16_t arg_0h, int16_t arg_4h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_2dh, int16_t arg_2fh, int16_t arg_30h, int16_t arg_32h, int16_t arg_50h, int16_t arg_1ech, int16_t arg_2f4h, int16_t arg_338h, int16_t arg_f0h, int16_t arg_f4h, int16_t arg_f8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int32_t var_94h;
| int32_t var_94h_2;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int32_t var_a8h_2;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006b788 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0006b78c mov sl, r0 | sl = r0;
0x0006b78e vpush {d8} | __asm ("vpush {d8}");
0x0006b792 sub sp, 0xc4 |
0x0006b794 mov r5, r2 | r5 = r2;
0x0006b796 str r1, [sp, 0x14] | var_14h = r1;
0x0006b798 ldr r1, [pc, 0x3f4] |
0x0006b79a ldr r0, [sp, 0xf0] | r0 = *(arg_f0h);
0x0006b79c ldr r2, [pc, 0x3f4] | r2 = *(0x6bb94);
0x0006b79e add r1, pc | r1 = 0xd7332;
0x0006b7a0 str r0, [sp, 0x30] | var_30h = r0;
0x0006b7a2 ldr r2, [r1, r2] |
0x0006b7a4 ldr r2, [r2] | r2 = *(0xd7332);
0x0006b7a6 str r2, [sp, 0xbc] | var_bch = r2;
0x0006b7a8 mov.w r2, 0 | r2 = 0;
0x0006b7ac movs r2, 0 | r2 = 0;
0x0006b7ae strd r2, r2, [sp, 0x84] | __asm ("strd r2, r2, [var_84h]");
0x0006b7b2 strd r2, r2, [sp, 0x8c] | __asm ("strd r2, r2, [var_8ch]");
0x0006b7b6 strd r2, r2, [sp, 0x94] | __asm ("strd r2, r2, [var_94h]");
0x0006b7ba str r2, [sp, 0x9c] | var_9ch = r2;
0x0006b7bc add r2, sp, 0x84 | r2 += var_84h;
0x0006b7be str r2, [sp, 0x28] | var_28h = r2;
0x0006b7c0 ldrh.w r2, [sp, 0xf4] | r2 = *(arg_f4h);
0x0006b7c4 str r3, [sp, 0x20] | var_20h = r3;
0x0006b7c6 str r2, [sp, 0x44] | var_44h = r2;
0x0006b7c8 ldr.w r2, [sl, 8] | r2 = *((sl + 8));
0x0006b7cc str r2, [sp, 0x58] | var_58h = r2;
0x0006b7ce ldr.w r2, [sl] | r2 = *(sl);
0x0006b7d2 str r2, [sp, 0x38] | var_38h = r2;
| if (r3 != 0) {
0x0006b7d4 cbz r3, 0x6b7e4 |
0x0006b7d6 mov r2, r3 | r2 = r3;
0x0006b7d8 ldr r3, [r3] | r3 = *(r3);
0x0006b7da cmp r3, 0x40 |
0x0006b7dc ite lt |
| if (r3 >= 0x40) {
0x0006b7de movlt r3, r2 | r3 = r2;
| }
| if (r3 < 0x40) {
0x0006b7e0 movge r3, 0 | r3 = 0;
| }
0x0006b7e2 str r3, [sp, 0x20] | var_20h = r3;
| }
0x0006b7e4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006b7e6 str r3, [sp, 0x8c] | var_8ch = r3;
0x0006b7e8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006b7ea ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0006b7ec lsls r4, r3, 0x1b | r4 = r3 << 0x1b;
| if (r4 < r3) {
0x0006b7ee bpl 0x6b7fc |
0x0006b7f0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0006b7f2 bic r3, r3, 0x100 | r3 = BIT_MASK (r3, 0x100);
0x0006b7f6 lsls r3, r3, 0x10 | r3 <<= 0x10;
0x0006b7f8 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0006b7fa str r3, [sp, 0x44] | var_44h = r3;
| }
0x0006b7fc ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006b7fe ldr r3, [r3] | r3 = *(r3);
0x0006b800 cmp r3, 0x40 |
0x0006b802 str r3, [sp, 0x3c] | var_3ch = r3;
| if (r3 > 0x40) {
0x0006b804 bgt.w 0x6cc6a | goto label_82;
| }
0x0006b808 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0006b80a ands r3, r3, 0x20 | r3 &= 0x20;
0x0006b80e str r3, [sp, 0x48] | var_48h = r3;
| if (r3 == r3) {
0x0006b810 beq.w 0x6b9b2 | goto label_83;
| }
0x0006b814 mov.w r2, 0x390 | r2 = 0x390;
0x0006b818 mov.w r4, 0x348 | r4 = 0x348;
0x0006b81c movs r3, 1 | r3 = 1;
0x0006b81e str r3, [sp, 0x3c] | var_3ch = r3;
| label_3:
0x0006b820 ldr r6, [sp, 0x38] | r6 = var_38h;
0x0006b822 movs r3, 0 | r3 = 0;
0x0006b824 mov r0, r6 | r0 = r6;
0x0006b826 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0006b82a ldrb.w r6, [r6, 0x53] | r6 = *((r6 + 0x53));
0x0006b82e str r0, [sp, 0x10] | var_10h = r0;
0x0006b830 cmp r6, 0 |
| if (r6 != 0) {
0x0006b832 bne.w 0x6c59a | goto label_84;
| }
0x0006b836 ldr r7, [sp, 0x10] | r7 = var_10h;
0x0006b838 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006b83a ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006b83c ldr r1, [sp, 0x30] | r1 = var_30h;
0x0006b83e add.w r0, r7, 0x2d | r0 = r7 + 0x2d;
0x0006b842 strb.w r3, [r7, 0x2c] | *((r7 + 0x2c)) = r3;
0x0006b846 add r4, r7 | r4 += r7;
0x0006b848 ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x0006b84c add.w fp, r7, 0x50 |
0x0006b850 str r2, [r7, 4] | *((r7 + 4)) = r2;
0x0006b852 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006b854 str r1, [r7, 0xc] | *((r7 + 0xc)) = r1;
0x0006b856 subs r3, 1 | r3--;
0x0006b858 ldr.w r1, [sl, 0x84] | r1 = *((sl + 0x84));
0x0006b85c str r2, [r7, 8] | *((r7 + 8)) = r2;
0x0006b85e mov.w r2, -1 | r2 = -1;
0x0006b860 adds r2, 0xff | r2 += 0xff;
0x0006b862 str r5, [r7, 0x10] | *((r7 + 0x10)) = r5;
0x0006b864 strd r2, r2, [r7, 0x14] | __asm ("strd r2, r2, [r7, 0x14]");
0x0006b868 movs r2, 0x23 | r2 = 0x23;
0x0006b86a str.w sl, [r7] | __asm ("str.w sl, [r7]");
0x0006b86e str.w r3, [sl, 0x38] | __asm ("str.w r3, [sl, 0x38]");
0x0006b872 str r1, [r7, 0x24] | *((r7 + 0x24)) = r1;
0x0006b874 ldr r1, [sp, 0x44] | r1 = var_44h;
0x0006b876 strd r3, r3, [r7, 0x1c] | __asm ("strd r3, r3, [r7, 0x1c]");
0x0006b87a strh r1, [r7, 0x28] | *((r7 + 0x28)) = r1;
0x0006b87c ldr r1, [sp, 0xf8] | r1 = *(arg_f8h);
0x0006b87e strh r1, [r7, 0x2a] | *((r7 + 0x2a)) = r1;
0x0006b880 mov r1, r6 | r1 = r6;
0x0006b882 blx 0x8264 | fcn_00008264 ();
0x0006b886 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006b888 movs r2, 0x58 | r2 = 0x58;
0x0006b88a add.w r1, r7, 0x2f0 | r1 = r7 + 0x2f0;
0x0006b88e mov r0, r1 | r0 = r1;
0x0006b890 str r1, [sp, 0x5c] | var_5ch = r1;
0x0006b892 mov r1, r6 | r1 = r6;
0x0006b894 mov r8, r0 | r8 = r0;
0x0006b896 mul r2, r3, r2 | r2 = r3 * r2;
0x0006b898 addw r2, r2, 0x348 | __asm ("addw r2, r2, aav.0x000000ff");
0x0006b89c blx 0x8264 | fcn_00008264 ();
0x0006b8a0 add.w r3, r4, 0x38 | r3 = r4 + 0x38;
0x0006b8a4 strh r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x0006b8a6 str r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
0x0006b8a8 movs r3, 3 | r3 = 3;
0x0006b8aa strh r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0006b8ac movs r3, 8 | r3 = 8;
0x0006b8ae str r6, [r4, 0x24] | *((r4 + 0x24)) = r6;
0x0006b8b0 mov r1, r5 | r1 = r5;
0x0006b8b2 str r3, [r7, 0x60] | *((r7 + 0x60)) = r3;
0x0006b8b4 add.w r3, r7, 0x68 | r3 = r7 + 0x68;
0x0006b8b8 str r3, [r7, 0x64] | *((r7 + 0x64)) = r3;
0x0006b8ba movs r2, 0x2c | r2 = 0x2c;
0x0006b8bc mov r0, fp | r0 = fp;
0x0006b8be str.w r6, [r7, 0x1ec] | __asm ("str.w r6, aav.0x000000ff");
0x0006b8c2 str r7, [r7, 0x50] | *((r7 + 0x50)) = r7;
0x0006b8c4 mov r5, r8 | r5 = r8;
0x0006b8c6 strb.w r6, [r7, 0x59] | *((r7 + 0x59)) = r6;
0x0006b8ca str r6, [r7, 0x54] | *((r7 + 0x54)) = r6;
0x0006b8cc str r6, [r7, 0x5c] | *((r7 + 0x5c)) = r6;
0x0006b8ce str r7, [sp, 0x84] | var_84h = r7;
0x0006b8d0 str r4, [sp, 0x90] | var_90h = r4;
0x0006b8d2 str.w fp, [sp, 0x88] | __asm ("str.w fp, [var_88h]");
0x0006b8d6 str.w r8, [sp, 0x54] | __asm ("str.w r8, [var_54h]");
0x0006b8da bl 0x2032c | fcn_0002032c (r0, r1, r2);
0x0006b8de ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006b8e0 cmp r3, 0 |
| if (r3 != 0) {
0x0006b8e2 bne.w 0x6c476 | goto label_85;
| }
0x0006b8e6 ldr r2, [sp, 0x20] | r2 = var_20h;
| if (r2 != 0) {
0x0006b8e8 cbz r2, 0x6b8f0 |
0x0006b8ea ldr r3, [r2] | r3 = *(r2);
0x0006b8ec strb.w r3, [r7, 0x2d] | *((r7 + 0x2d)) = r3;
| }
0x0006b8f0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0006b8f2 movs r1, 0 | r1 = 0;
0x0006b8f4 lsls r0, r3, 0x17 | r0 = r3 << 0x17;
0x0006b8f6 mov r0, sl | r0 = sl;
0x0006b8f8 ittt mi |
| if (r0 >= r3) {
0x0006b8fa ldrmi r2, [sp, 0x10] | r2 = var_10h;
| }
| if (r0 >= r3) {
0x0006b8fc movmi r3, 1 | r3 = 1;
| }
| if (r0 >= r3) {
0x0006b8fe strbmi r3, [r2, 0x2f] | *((r2 + 0x2f)) = r3;
| }
0x0006b902 ldr r2, [pc, 0x294] |
0x0006b904 add r2, pc | r2 = 0xd74a2;
0x0006b906 bl 0x2e274 | fcn_0002e274 (r0, r1);
| label_21:
0x0006b90a ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006b90c ldr r4, [r3, 0x5c] | r4 = *((r3 + 0x5c));
0x0006b90e subs r4, 1 | r4--;
0x0006b910 it pl |
| if (r4 < 1) {
0x0006b912 ldrpl r5, [sp, 0x14] | r5 = var_14h;
| }
| if (r4 < 1) {
0x0006b914 bmi 0x6b926 | goto label_86;
| }
| do {
0x0006b916 mov r2, r4 | r2 = r4;
0x0006b918 mov r1, fp | r1 = fp;
0x0006b91a subs r4, 1 | r4--;
0x0006b91c mov r0, r5 | r0 = r5;
0x0006b91e bl 0x653c4 | fcn_000653c4 (r0, r1, r2, r3, r4, r5, r6);
0x0006b922 adds r7, r4, 1 | r7 = r4 + 1;
0x0006b924 bne 0x6b916 |
| } while (r7 != r4);
| label_86:
0x0006b926 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006b928 ldrb.w r5, [r3, 0x53] | r5 = *((r3 + 0x53));
0x0006b92c cmp r5, 0 |
| if (r5 != 0) {
0x0006b92e bne.w 0x6bb04 | goto label_5;
| }
0x0006b932 ldr r2, [sp, 0x88] | r2 = var_88h;
0x0006b934 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x0006b936 cmp r3, 0 |
| if (r3 <= 0) {
0x0006b938 ble 0x6b9c6 | goto label_87;
| }
0x0006b93a ldr r7, [pc, 0x260] |
0x0006b93c mov r6, r5 | r6 = r5;
0x0006b93e ldr.w r8, [pc, 0x260] | r8 = *(0x0006bba0);
0x0006b942 add r7, pc | r7 = 0xd74e4;
0x0006b944 mov sb, r7 | sb = r7;
0x0006b946 add r8, pc | r8 += pc;
0x0006b948 ldr r7, [sp, 0x3c] | r7 = var_3ch;
0x0006b94a b 0x6b982 | goto label_88;
| label_1:
0x0006b94c str r3, [sp, 0xb4] | var_b4h = r3;
0x0006b94e add r0, sp, 0xa0 | r0 += var_a0h;
0x0006b950 strd r3, sb, [sp, 0xa0] | __asm ("strd r3, sb, [var_a0h]");
0x0006b954 strd r8, r3, [sp, 0xa8] | __asm ("strd r8, r3, [var_a8h]");
0x0006b958 str r3, [sp, 0xb0] | var_b0h = r3;
0x0006b95a str r3, [sp, 0xb8] | var_b8h = r3;
0x0006b95c movs r3, 1 | r3 = 1;
0x0006b95e strh.w r3, [sp, 0xb4] | var_b4h = r3;
0x0006b962 cmp r1, 0 |
| if (r1 == 0) {
0x0006b964 beq.w 0x6c470 | goto label_89;
| }
0x0006b968 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x0006b96c ldrh.w r3, [sp, 0xb4] | r3 = var_b4h;
0x0006b970 cmp r3, 0 |
| if (r3 != 0) {
0x0006b972 bne.w 0x6c470 | goto label_89;
| }
| label_2:
0x0006b976 ldr r2, [sp, 0x88] | r2 = var_88h;
| do {
| label_0:
0x0006b978 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x0006b97a adds r6, 1 | r6++;
0x0006b97c adds r5, 0x30 | r5 += 0x30;
0x0006b97e cmp r3, r6 |
| if (r3 <= r6) {
0x0006b980 ble 0x6b9c6 | goto label_87;
| }
| label_88:
0x0006b982 ldr r4, [r2, 0x14] | r4 = *((r2 + 0x14));
0x0006b984 add r4, r5 | r4 += r5;
0x0006b986 ldrh r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0006b988 ands r3, r3, 2 | r3 &= 2;
0x0006b98c bne 0x6b978 |
| } while (r3 != r3);
0x0006b98e ldrd r1, r0, [r4, 0x28] | __asm ("ldrd r1, r0, [r4, 0x28]");
0x0006b992 orrs r1, r0 | r1 |= r0;
| if (r1 != r0) {
0x0006b994 bne 0x6b978 | goto label_0;
| }
0x0006b996 ldr r1, [r4] | r1 = *(r4);
0x0006b998 cmp r7, 0 |
| if (r7 != 0) {
0x0006b99a bne 0x6b94c | goto label_1;
| }
| label_18:
0x0006b99c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006b99e mov r0, sl | r0 = sl;
0x0006b9a0 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x0006b9a2 movs r3, 0x10 | r3 = 0x10;
0x0006b9a4 bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x0006b9a8 ldrh r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0006b9aa orr r3, r3, 4 | r3 |= 4;
0x0006b9ae strh r3, [r4, 0xa] | *((r4 + 0xa)) = r3;
0x0006b9b0 b 0x6b976 | goto label_2;
| label_83:
0x0006b9b2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006b9b4 subs r2, r3, 1 | r2 = r3 - 1;
0x0006b9b6 movs r3, 0x58 | r3 = 0x58;
0x0006b9b8 mul r2, r3, r2 | r2 = r3 * r2;
0x0006b9bc add.w r4, r2, 0x348 | r4 = r2 + 0x348;
0x0006b9c0 add.w r2, r2, 0x390 | r2 += 0x390;
0x0006b9c4 b 0x6b820 | goto label_3;
| label_87:
0x0006b9c6 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0006b9c8 ands r3, r3, 0x100 | r3 &= 0x100;
0x0006b9cc str r3, [sp, 0x50] | var_50h = r3;
| if (r3 != r3) {
0x0006b9ce bne.w 0x6c8e0 | goto label_90;
| }
| label_45:
0x0006b9d2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006b9d4 ldr.w fp, [sp, 0x84] | fp = var_84h;
0x0006b9d8 ldr r6, [sp, 0x90] | r6 = var_90h;
0x0006b9da cmp r3, 1 |
0x0006b9dc ldr.w r7, [fp, 4] | r7 = *(arg_4h);
| if (r3 == 1) {
0x0006b9e0 beq.w 0x6c84c | goto label_91;
| }
| label_40:
0x0006b9e4 ldrb.w sb, [fp, 0x2c] | sb = *(arg_2ch);
0x0006b9e8 movs r3, 0x48 | r3 = 0x48;
0x0006b9ea add.w r2, r7, 8 | r2 = r7 + 8;
0x0006b9ee movs r4, 0 | r4 = 0;
0x0006b9f0 movs r5, 3 | r5 = 3;
0x0006b9f2 mla sb, r3, sb, r7 | __asm ("mla sb, r3, sb, r7");
0x0006b9f6 ldr.w r3, [fp] | r3 = *(fp);
0x0006b9fa ldr r3, [r3] | r3 = *(r3);
0x0006b9fc add.w sb, sb, 8 | sb += 8;
0x0006ba00 strh r4, [r6, 0x28] | *((r6 + 0x28)) = r4;
0x0006ba02 cmp sb, r2 |
0x0006ba04 str r4, [r6, 0x24] | *((r6 + 0x24)) = r4;
0x0006ba06 str r3, [sp, 0x34] | var_34h = r3;
0x0006ba08 add.w r3, r6, 0x38 | r3 = r6 + 0x38;
0x0006ba0c str r3, [sp, 0x40] | var_40h = r3;
0x0006ba0e str r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x0006ba10 movw r3, 0x4e20 | r3 = 0x4e20;
0x0006ba14 strh r5, [r6, 0x2c] | *((r6 + 0x2c)) = r5;
0x0006ba16 str r3, [sp, 0x9c] | var_9ch = r3;
| if (sb < r2) {
0x0006ba18 bls.w 0x6cda8 | goto label_92;
| }
0x0006ba1c ldr r1, [pc, 0x184] |
0x0006ba1e add.w r8, r7, 0x50 | r8 = r7 + 0x50;
0x0006ba22 str r4, [sp, 0x1c] | var_1ch = r4;
0x0006ba24 str r4, [sp, 0x20] | var_20h = r4;
0x0006ba26 add r1, pc | r1 = 0xd75ce;
0x0006ba28 str r4, [sp, 0x18] | var_18h = r4;
0x0006ba2a str r1, [sp, 0x2c] | var_2ch = r1;
0x0006ba2c str.w sl, [sp, 0x4c] | __asm ("str.w sl, [var_4ch]");
| label_10:
0x0006ba30 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006ba32 add.w r3, r3, 0x3e8 | r3 += 0x3e8;
0x0006ba36 strb r2, [r6, 0x10] | *((r6 + 0x10)) = r2;
0x0006ba38 str r3, [sp, 0x9c] | var_9ch = r3;
0x0006ba3a ldr.w r3, [fp, 0x1ec] | r3 = *(arg_1ech);
0x0006ba3e ldr r4, [r8, -0x20] | r4 = *((r8 - 0x20));
0x0006ba42 cmp r3, 0 |
| if (r3 <= 0) {
0x0006ba44 ble.w 0x6c3b2 | goto label_93;
| }
0x0006ba48 add.w r1, fp, 0x1ec | r1 += arg_1ech;
0x0006ba4c movs r2, 0 | r2 = 0;
0x0006ba4e b 0x6ba58 |
| while (r4 != r0) {
0x0006ba50 adds r2, 1 | r2++;
0x0006ba52 cmp r3, r2 |
| if (r3 == r2) {
0x0006ba54 beq.w 0x6c3b2 | goto label_93;
| }
0x0006ba58 ldr r0, [r1, 4]! | r0 = *((r1 += 4));
0x0006ba5c cmp r4, r0 |
0x0006ba5e bne 0x6ba50 |
| }
0x0006ba60 movs r1, 1 | r1 = 1;
0x0006ba62 sub.w r0, r2, 0x20 | r0 = r2 - 0x20;
0x0006ba66 rsb.w r4, r2, 0x20 | r4 = 0x20 - r2;
0x0006ba6a lsl.w r0, r1, r0 | r0 = r1 << r0;
0x0006ba6e lsr.w r4, r1, r4 | r4 = r1 >> r4;
0x0006ba72 lsl.w r2, r1, r2 | r2 = r1 << r2;
0x0006ba76 orrs r0, r4 | r0 |= r4;
| label_11:
0x0006ba78 strd r2, r0, [r6, 8] | __asm ("strd r2, r0, [r6, 8]");
0x0006ba7c ldrb r7, [r8, -0x24] | r7 = *((r8 - 0x24));
0x0006ba80 ands r7, r7, 0xa | r7 &= 0xa;
0x0006ba84 itet ne |
| if (r7 != r7) {
0x0006ba86 ldrdne r7, r2, [sp, 0x1c] | __asm ("ldrdne r7, r2, [var_20h]");
| }
| if (r7 == r7) {
0x0006ba8a strne r7, [sp, 0x24] | var_24h = r7;
| }
| if (r7 != r7) {
0x0006ba8c str r2, [sp, 0x24] | var_24h = r2;
| }
0x0006ba8e ldr r2, [r8, -0x38] | r2 = *((r8 - 0x38));
0x0006ba92 ldr r5, [r2, 0x38] | r5 = *((r2 + 0x38));
0x0006ba94 cmp r5, 0 |
| if (r5 != 0) {
0x0006ba96 bne.w 0x6c3ba | goto label_94;
| }
0x0006ba9a mov sl, r5 | sl = r5;
0x0006ba9c ldrd r3, r0, [sp, 0x24] | __asm ("ldrd r3, r0, [var_28h]");
0x0006baa0 mov r2, r7 | r2 = r7;
0x0006baa2 bl 0x38c44 | r0 = fcn_00038c44 (r0, r1, r2, r3, r4, r5, r6);
| label_13:
0x0006baa6 cmp r0, 0 |
| if (r0 != 0) {
0x0006baa8 bne.w 0x6c37c | goto label_95;
| }
0x0006baac ldr r3, [sp, 0x88] | r3 = var_88h;
0x0006baae ldrb r3, [r3, 9] | r3 = *((r3 + 9));
0x0006bab0 cmp r3, 0 |
| if (r3 != 0) {
0x0006bab2 bne.w 0x6c44a | goto label_96;
| }
0x0006bab6 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0006bab8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006baba orrs r2, r3 | r2 |= r3;
0x0006babc ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0006babe str r2, [sp, 0x1c] | var_1ch = r2;
0x0006bac0 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006bac2 orrs r2, r3 | r2 |= r3;
0x0006bac4 str r2, [sp, 0x20] | var_20h = r2;
| label_16:
0x0006bac6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0006bac8 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006bacc cmp r3, 0 |
| if (r3 == 0) {
0x0006bace beq.w 0x6c39a | goto label_97;
| }
| label_9:
0x0006bad2 ldr r1, [r6, 0x30] | r1 = *((r6 + 0x30));
0x0006bad4 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0006bad6 ldr.w sl, [sp, 0x4c] | sl = var_4ch;
0x0006bada cmp r1, r3 |
0x0006badc it ne |
| if (r1 == r3) {
0x0006bade movne r4, 0 | r4 = 0;
| }
| if (r1 == r3) {
0x0006bae0 beq 0x6bbac | goto label_98;
| }
| label_75:
0x0006bae2 ldr r5, [sp, 0x34] | r5 = var_34h;
0x0006bae4 mov r0, r5 | r0 = r5;
0x0006bae6 bl 0x159dc | fcn_000159dc (r0, r1);
0x0006baea mov r1, r6 | r1 = r6;
0x0006baec mov r0, r5 | r0 = r5;
0x0006baee bl 0x16140 | fcn_00016140 (r0, r1);
0x0006baf2 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0006baf4 str r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x0006baf6 movs r3, 0 | r3 = 0;
0x0006baf8 strh r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0006bafa str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
0x0006bafc movs r3, 3 | r3 = 3;
0x0006bafe strh r3, [r6, 0x2c] | *((r6 + 0x2c)) = r3;
0x0006bb00 cmp r4, 0 |
| if (r4 == 0) {
0x0006bb02 beq 0x6bbc2 | goto label_68;
| }
| label_5:
0x0006bb04 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006bb06 ldr.w r8, [sp, 0x10] | r8 = var_10h;
0x0006bb0a ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
| if (r1 == 0) {
0x0006bb0c cbz r1, 0x6bb5a | goto label_99;
| }
| label_4:
0x0006bb0e ldrd r0, r2, [r1] | __asm ("ldrd r0, r2, [r1]");
0x0006bb12 add.w r3, r1, 8 | r3 = r1 + 8;
0x0006bb16 add.w r7, r1, 0x38 | r7 = r1 + 0x38;
0x0006bb1a str.w r0, [r8, 0x40] | __asm ("str.w r0, [r8, 0x40]");
| do {
0x0006bb1e ldr r6, [r3] | r6 = *(r3);
0x0006bb20 adds r3, 0x10 | r3 += 0x10;
0x0006bb22 ldr r5, [r3, -0xc] | r5 = *((r3 - 0xc));
0x0006bb26 adds r2, 0x10 | r2 += 0x10;
0x0006bb28 ldr r4, [r3, -0x8] | r4 = *((r3 - 0x8));
0x0006bb2c ldr r0, [r3, -0x4] | r0 = *((r3 - 0x4));
0x0006bb30 cmp r3, r7 |
0x0006bb32 str r6, [r2, -0x10] | *((r2 - 0x10)) = r6;
0x0006bb36 str r5, [r2, -0xc] | *((r2 - 0xc)) = r5;
0x0006bb3a str r4, [r2, -0x8] | *((r2 - 0x8)) = r4;
0x0006bb3e str r0, [r2, -0x4] | *((r2 - 0x4)) = r0;
0x0006bb42 bne 0x6bb1e |
| } while (r3 != r7);
0x0006bb44 ldr r3, [r3] | r3 = *(r3);
0x0006bb46 str r3, [r2] | *(r2) = r3;
0x0006bb48 ldr.w r3, [r8] | r3 = *(r8);
0x0006bb4c ldr r0, [r3] | r0 = *(r3);
0x0006bb4e bl 0x159dc | fcn_000159dc (r0, r1);
0x0006bb52 ldr.w r1, [r8, 0x40] | r1 = *((r8 + 0x40));
0x0006bb56 cmp r1, 0 |
| if (r1 != 0) {
0x0006bb58 bne 0x6bb0e | goto label_4;
| }
| label_99:
0x0006bb5a ldr r1, [sp, 0x10] | r1 = var_10h;
0x0006bb5c movs r2, 0 | r2 = 0;
0x0006bb5e ldr r0, [sp, 0x38] | r0 = var_38h;
0x0006bb60 str r2, [sp, 0x10] | var_10h = r2;
0x0006bb62 ldr r3, [r1, 0x24] | r3 = *((r1 + 0x24));
0x0006bb64 str.w r3, [sl, 0x84] | __asm ("str.w r3, [sl, 0x84]");
0x0006bb68 bl 0x18f44 | fcn_00018f44 (r0, r1);
| label_8:
0x0006bb6c ldr r2, [pc, 0x38] |
0x0006bb6e ldr r3, [pc, 0x24] | r3 = *(0x6bb96);
0x0006bb70 add r2, pc | r2 = 0xd771c;
0x0006bb72 ldr r3, [r2, r3] | r3 = *(0xd771c);
0x0006bb74 ldr r2, [r3] | r2 = *(0xd771c);
0x0006bb76 ldr r3, [sp, 0xbc] | r3 = var_bch;
0x0006bb78 eors r2, r3 | r2 ^= r3;
0x0006bb7a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006bb7e bne.w 0x6ce7c | goto label_100;
| }
0x0006bb82 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006bb84 add sp, 0xc4 |
0x0006bb86 vpop {d8} | __asm ("vpop {d8}");
0x0006bb8a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_98:
0x0006bbac ldr r0, [sp, 0x34] | r0 = var_34h;
0x0006bbae mov r1, r6 | r1 = r6;
0x0006bbb0 bl 0x16140 | fcn_00016140 (r0, r1);
0x0006bbb4 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0006bbb6 str r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x0006bbb8 movs r3, 0 | r3 = 0;
0x0006bbba strh r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0006bbbc str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
0x0006bbbe movs r3, 3 | r3 = 3;
0x0006bbc0 strh r3, [r6, 0x2c] | *((r6 + 0x2c)) = r3;
| label_68:
0x0006bbc2 ldr r4, [sp, 0x10] | r4 = var_10h;
0x0006bbc4 movs r1, 0 | r1 = 0;
0x0006bbc6 mov r0, r4 | r0 = r4;
0x0006bbc8 bl 0x37ce4 | fcn_00037ce4 (r0, r1);
0x0006bbcc ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006bbce ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006bbd2 cmp r3, 0 |
| if (r3 != 0) {
0x0006bbd4 bne 0x6bb04 | goto label_5;
| }
0x0006bbd6 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0006bbd8 cmp r3, 0 |
| if (r3 == 0) {
0x0006bbda beq.w 0x6c5c4 | goto label_101;
| }
0x0006bbde ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006bbe0 ldrh r1, [r0, 0x32] | r1 = *((r0 + 0x32));
0x0006bbe2 adds r1, 1 | r1++;
0x0006bbe4 sxth r1, r1 | __asm ("sxth r1, r1");
0x0006bbe6 bl 0x37ce4 | fcn_00037ce4 (r0, r1);
0x0006bbea ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006bbec ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006bbf0 cmp r3, 0 |
| if (r3 != 0) {
0x0006bbf2 bne 0x6bb04 | goto label_5;
| }
| label_41:
0x0006bbf4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006bbf6 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0006bbf8 cmp r3, 0 |
| if (r3 == 0) {
0x0006bbfa beq.w 0x6c5c4 | goto label_101;
| }
| label_24:
0x0006bbfe ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x0006bc02 cmp r3, 0 |
| if (r3 != 0) {
0x0006bc04 bne.w 0x6bb04 | goto label_5;
| }
0x0006bc08 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006bc0a ldrb.w fp, [r3, 0x53] | fp = *((r3 + 0x53));
0x0006bc0e cmp.w fp, 0 |
| if (fp != 0) {
0x0006bc12 bne.w 0x6bb04 | goto label_5;
| }
0x0006bc16 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006bc18 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0006bc1a ldrb.w r2, [r2, 0x2c] | r2 = *((r2 + 0x2c));
0x0006bc1e cmp r1, 0 |
0x0006bc20 it ne |
| if (r1 != 0) {
0x0006bc22 cmpne r2, 1 | __asm ("cmpne r2, 1");
| }
0x0006bc24 str r2, [sp, 0x18] | var_18h = r2;
| if (r1 > 0) {
0x0006bc26 bhi.w 0x6cac8 | goto label_102;
| }
| label_56:
0x0006bc2a mov.w r3, -1 | r3 = -1;
0x0006bc2e str r3, [sp, 0x1c] | var_1ch = r3;
0x0006bc30 str r3, [sp, 0x40] | var_40h = r3;
| label_57:
0x0006bc32 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006bc34 ldr r2, [r0] | r2 = *(r0);
0x0006bc36 ldrsh.w r1, [r0, 0x32] | r1 = *((r0 + 0x32));
0x0006bc3a ldr.w r3, [r2, 0x84] | r3 = *((r2 + 0x84));
0x0006bc3e add r3, r1 | r3 += r1;
0x0006bc40 str.w r3, [r2, 0x84] | __asm ("str.w r3, [r2, 0x84]");
0x0006bc44 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0006bc46 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
| if (r1 < r3) {
0x0006bc48 bpl 0x6bc6a |
0x0006bc4a ldr.w r0, [r0, 0x338] | r0 = *((r0 + 0x338));
0x0006bc4e ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x0006bc50 lsls r2, r3, 0x13 | r2 = r3 << 0x13;
| if (r2 >= r3) {
0x0006bc52 bpl.w 0x6cd1a | goto label_103;
| }
0x0006bc56 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006bc58 movs r1, 1 | r1 = 1;
0x0006bc5a ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
| label_66:
0x0006bc5c ldr r4, [sp, 0x10] | r4 = var_10h;
0x0006bc5e strb.w r1, [r4, 0x2e] | *((r4 + 0x2e)) = r1;
0x0006bc62 ldr r2, [r2, 0x24] | r2 = *((r2 + 0x24));
0x0006bc64 lsls r4, r2, 0x18 | r4 = r2 << 0x18;
| if (r4 >= r2) {
0x0006bc66 bpl.w 0x6cd66 | goto label_104;
| }
| }
| label_65:
0x0006bc6a ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0006bc6c cmp r2, 0 |
| if (r2 <= 0) {
0x0006bc6e ble.w 0x6cd90 | goto label_105;
| }
0x0006bc72 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0006bc74 movs r3, 0x58 | r3 = 0x58;
0x0006bc76 ldr r5, [sp, 0x54] | r5 = var_54h;
0x0006bc78 mla r3, r3, r2, r1 | __asm ("mla r3, r3, r2, r1");
0x0006bc7c add.w sb, r3, 0x2f0 | sb = r3 + 0x2f0;
0x0006bc80 movw r3, 0x8002 |
0x0006bc84 movt r3, 0x18 | r3 = 0x188002;
0x0006bc88 strd r3, fp, [sp, 0x20] | __asm ("strd r3, fp, [var_20h]");
| label_6:
0x0006bc8c ldrb.w r7, [r5, 0x34] | r7 = *((r5 + 0x34));
0x0006bc90 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006bc92 lsl.w fp, r7, 3 |
0x0006bc96 add.w r3, fp, r7 | r3 = fp + r7;
0x0006bc9a add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x0006bc9e ldr r6, [r3, 0x18] | r6 = *((r3 + 0x18));
0x0006bca0 ldr r1, [r6, 0x48] | r1 = *((r6 + 0x48));
0x0006bca2 cmp r1, 0 |
| if (r1 == 0) {
0x0006bca4 beq.w 0x6cdbe | goto label_106;
| }
0x0006bca8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006bcaa movs r4, 0 | r4 = 0;
0x0006bcac ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0006bcae ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0006bcb0 cmp r1, r2 |
| if (r1 == r2) {
0x0006bcb2 beq 0x6bcbe | goto label_69;
| }
| do {
0x0006bcb4 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x0006bcb6 adds r3, 0x10 | r3 += 0x10;
0x0006bcb8 adds r4, 1 | r4++;
0x0006bcba cmp r1, r2 |
0x0006bcbc bne 0x6bcb4 |
| } while (r1 != r2);
| label_69:
0x0006bcbe ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x0006bcc0 ldr.w r8, [r5, 0x48] | r8 = *((r5 + 0x48));
0x0006bcc4 lsls r2, r3, 0x11 | r2 = r3 << 0x11;
0x0006bcc6 ldr.w r1, [r8, 0x24] | r1 = *((r8 + 0x24));
| if (r2 >= r3) {
0x0006bcca bmi 0x6bcd4 |
0x0006bccc ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0006bcce cmp r2, 0 |
| if (r2 == 0) {
0x0006bcd0 beq.w 0x6c752 | goto label_107;
| }
| }
| label_36:
0x0006bcd4 lsls r0, r1, 0x16 | r0 = r1 << 0x16;
| if (r0 < r1) {
0x0006bcd6 bpl 0x6bd5c |
0x0006bcd8 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
| label_73:
0x0006bcda lsls r1, r3, 0x18 | r1 = r3 << 0x18;
0x0006bcdc ldr.w r6, [r8, 0x20] | r6 = *((r8 + 0x20));
| if (r1 < r3) {
0x0006bce0 bpl 0x6bd04 |
0x0006bce2 ldrb.w r3, [r6, 0x37] | r3 = *((r6 + 0x37));
0x0006bce6 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0006bce8 and r3, r3, 3 | r3 &= 3;
0x0006bcec sub.w r3, r3, 2 | r3 -= 2;
0x0006bcf0 cmp r2, 0 |
0x0006bcf2 clz r3, r3 | r3 &= r3;
0x0006bcf6 lsr.w r3, r3, 5 | r3 >>= 5;
0x0006bcfa it eq |
| if (r2 != 0) {
0x0006bcfc moveq r3, 0 | r3 = 0;
| }
0x0006bcfe cmp r3, 0 |
| if (r3 != 0) {
0x0006bd00 bne.w 0x6ccc0 | goto label_108;
| }
| }
0x0006bd04 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006bd06 ldrb.w r3, [r3, 0x2e] | r3 = *((r3 + 0x2e));
0x0006bd0a cmp r3, 0 |
| if (r3 != 0) {
0x0006bd0c bne.w 0x6c7fe | goto label_109;
| }
0x0006bd10 ldr r2, [sp, 0xf8] | r2 = *(arg_f8h);
0x0006bd12 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0006bd14 cmp r3, 0 |
0x0006bd16 it ne |
| if (r3 != 0) {
0x0006bd18 cmpne r2, 0 | __asm ("cmpne r2, 0");
| }
0x0006bd1a ittee eq |
| if (r3 != 0) {
0x0006bd1c ldreq r2, [sl, 0x28] | r2 = *((sl + 0x28));
| }
| if (r3 == 0) {
0x0006bd20 movne r1, 0x62 | r1 = 0x62;
| }
| if (r3 == 0) {
0x0006bd22 ldrne r2, [sp, 0xf8] | r2 = *(arg_f8h);
| }
| if (r3 != 0) {
0x0006bd24 movs r1, 0x61 | r1 = 0x61;
| }
0x0006bd26 itt eq |
| if (r1 != 0x61) {
0x0006bd28 addeq r3, r2, 1 | r3 = r2 + 1;
| }
| if (r1 != 0x61) {
0x0006bd2a streq r3, [sl, 0x28] | *((sl + 0x28)) = r3;
| }
| label_37:
0x0006bd2e ldr r7, [sp, 0x58] | r7 = var_58h;
0x0006bd30 str r2, [r5, 8] | *((r5 + 8)) = r2;
0x0006bd32 ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
0x0006bd34 mov r0, r7 | r0 = r7;
0x0006bd36 str r4, [sp] | *(sp) = r4;
0x0006bd38 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006bd3c mov r1, r6 | r1 = r6;
0x0006bd3e mov r0, sl | r0 = sl;
0x0006bd40 bl 0x2d434 | fcn_0002d434 (r0, r1);
0x0006bd44 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0006bd48 lsls r2, r3, 0x1c | r2 = r3 << 0x1c;
| if (r2 == r3) {
0x0006bd4a beq 0x6bd5c | goto label_63;
| }
0x0006bd4c ldr r1, [sp, 0x20] | r1 = var_20h;
0x0006bd4e tst r3, r1 |
| if ((r3 & r1) != 0) {
0x0006bd50 bne 0x6bd5c | goto label_63;
| }
0x0006bd52 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006bd54 ldrh r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x0006bd56 lsls r6, r3, 0x1f | r6 = r3 << 0x1f;
| if (r6 >= r3) {
0x0006bd58 bpl.w 0x6cd3e | goto label_110;
| }
| }
| label_63:
0x0006bd5c cmp r4, 0 |
| if (r4 >= 0) {
0x0006bd5e blt 0x6bd82 |
| label_74:
0x0006bd60 ldr.w r0, [sl, 0x74] | r0 = *((sl + 0x74));
0x0006bd64 movs r3, 1 | r3 = 1;
0x0006bd66 lsl.w r2, r3, r4 | r2 = r3 << r4;
0x0006bd6a cmp r0, 0 |
0x0006bd6c it eq |
| if (r0 != 0) {
0x0006bd6e moveq r0, sl | r0 = sl;
| }
0x0006bd70 ldr r3, [r0, 0x54] | r3 = *((r0 + 0x54));
0x0006bd72 tst r3, r2 |
| if ((r3 & r2) != 0) {
0x0006bd74 bne 0x6bd82 | goto label_53;
| }
0x0006bd76 cmp r4, 1 |
0x0006bd78 orr.w r3, r3, r2 | r3 |= r2;
0x0006bd7c str r3, [r0, 0x54] | *((r0 + 0x54)) = r3;
| if (r4 == 1) {
0x0006bd7e beq.w 0x6caaa | goto label_111;
| }
| }
| label_53:
0x0006bd82 adds r5, 0x58 | r5 += 0x58;
0x0006bd84 cmp r5, sb |
| if (r5 != sb) {
0x0006bd86 bne 0x6bc8c | goto label_6;
| }
0x0006bd88 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0006bd8a ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006bd8c ldr r3, [r3, 0x6c] | r3 = *((r3 + 0x6c));
0x0006bd8e str r3, [r2, 0x34] | *((r2 + 0x34)) = r3;
0x0006bd90 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006bd92 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006bd96 cmp r3, 0 |
| if (r3 != 0) {
0x0006bd98 bne.w 0x6bb04 | goto label_5;
| }
0x0006bd9c str r3, [sp, 0x54] | var_54h = r3;
0x0006bd9e ldr.w r3, [pc, 0xb64] |
0x0006bda2 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0006bda4 str.w sl, [sp, 0x18] | __asm ("str.w sl, [var_18h]");
0x0006bda8 add r3, pc |
0x0006bdaa add.w r3, r3, 0x358 |
0x0006bdae str r2, [sp, 0x20] | var_20h = r2;
0x0006bdb0 str r3, [sp, 0x78] | var_78h = r3;
0x0006bdb2 ldr.w r3, [pc, 0xb54] | r3 = *(0x0006c908);
0x0006bdb6 add r3, pc |
0x0006bdb8 add.w r3, r3, 0x358 | r3 = 0x144b1c;
0x0006bdbc str r3, [sp, 0x7c] | var_7ch = r3;
| label_7:
0x0006bdbe ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006bdc0 ldr r5, [r3, 0x48] | r5 = *((r3 + 0x48));
0x0006bdc2 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0006bdc4 lsls r4, r3, 0x11 | r4 = r3 << 0x11;
| if (r4 >= r3) {
0x0006bdc6 bpl.w 0x6c310 | goto label_112;
| }
0x0006bdca ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006bdcc ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006bdce ldrb.w r1, [r3, 0x34] | r1 = *((r3 + 0x34));
0x0006bdd0 asrs r4, r6, 0x20 | r4 = r6 >> 0x20;
0x0006bdd2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006bdd4 str r1, [sp, 0x50] | var_50h = r1;
0x0006bdd6 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0006bdd8 movs r3, 0x48 | r3 = 0x48;
0x0006bdda mla r3, r3, r1, r0 | __asm ("mla r3, r3, r1, r0");
0x0006bdde ldr r1, [r2, 0x6c] | r1 = *((r2 + 0x6c));
0x0006bde0 str r2, [sp, 0x30] | var_30h = r2;
0x0006bde2 adds r3, 8 | r3 += 8;
0x0006bde4 str r3, [sp, 0x24] | var_24h = r3;
0x0006bde6 ldr r3, [r2, 0x70] | r3 = *((r2 + 0x70));
0x0006bde8 str r1, [sp, 0x5c] | var_5ch = r1;
0x0006bdea cmp r1, r3 |
| if (r1 >= r3) {
0x0006bdec bge.w 0x6c82c | goto label_113;
| }
0x0006bdf0 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0006bdf2 movs r1, 0 | r1 = 0;
0x0006bdf4 ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x0006bdf6 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x0006bdf8 add.w r2, r0, r0, lsl 2 | r2 = r0 + (r0 << 2);
0x0006bdfc adds r0, 1 | r0++;
0x0006bdfe str r0, [r4, 0x6c] | *((r4 + 0x6c)) = r0;
0x0006be00 movs r0, 0x11 | r0 = 0x11;
0x0006be02 str.w r0, [r3, r2, lsl 2] | __asm ("str.w r0, [r3, r2, lsl 2]");
0x0006be06 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0006be0a strd r1, r1, [r3, 4] | __asm ("strd r1, r1, [r3, 4]");
0x0006be0e strd r1, r1, [r3, 0xc] | __asm ("strd r1, r1, [r3, 0xc]");
| label_38:
0x0006be12 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0006be14 mov.w r8, 0 | r8 = 0;
0x0006be18 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006be1a ldr r4, [r3, 0x64] | r4 = *((r3 + 0x64));
0x0006be1c ldr r6, [r3, 0x5c] | r6 = *((r3 + 0x5c));
0x0006be1e lsls r3, r2, 3 | r3 = r2 << 3;
0x0006be20 adds r7, r3, r2 | r7 = r3 + r2;
0x0006be22 str r3, [sp, 0x60] | var_60h = r3;
0x0006be24 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006be26 add.w r6, r6, r6, lsl 1 | r6 += (r6 << 1);
0x0006be2a add.w r6, r4, r6, lsl 4 | r6 = r4 + (r6 << 4);
0x0006be2e add.w r7, r3, r7, lsl 3 | r7 = r3 + (r7 << 3);
0x0006be32 cmp r4, r6 |
0x0006be34 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x0006be36 str r3, [sp, 0x4c] | var_4ch = r3;
| if (r4 >= r6) {
0x0006be38 bhs.w 0x6cd0a | goto label_114;
| }
0x0006be3c ldr.w sl, [sp, 0x40] | sl = var_40h;
0x0006be40 mov fp, r8 |
0x0006be42 strd r8, r8, [sp, 0x28] | __asm ("strd r8, r8, [var_28h]");
0x0006be46 str.w r8, [sp, 0x48] | __asm ("str.w r8, [var_48h]");
0x0006be48 strh r0, [r1, 2] | *((r1 + 2)) = r0;
0x0006be4a str.w r8, [sp, 0x34] | __asm ("str.w r8, [var_34h]");
| do {
0x0006be4e ldrd r3, r2, [r5] | __asm ("ldrd r3, r2, [r5]");
0x0006be52 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x0006be54 bne 0x6be6c |
0x0006be56 ldrh r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0006be58 lsls r0, r3, 0x1e | r0 = r3 << 0x1e;
| if (r0 < r3) {
0x0006be5a bmi 0x6be6c | goto label_27;
| }
0x0006be5c ldr.w sb, [r4] | sb = *(r4);
0x0006be60 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0006be64 ands r8, r3, 1 | r8 = r3 & 1;
| if (r8 == r3) {
0x0006be68 beq.w 0x6c5fe | goto label_115;
| }
| }
| label_27:
0x0006be6c ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0006be6e ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0006be70 cmp r2, r3 |
| if (r2 == r3) {
0x0006be72 bne 0x6bf08 |
0x0006be74 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006be76 mov r3, sl | r3 = sl;
0x0006be78 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0006be7a mov r0, r4 | r0 = r4;
0x0006be7c bl 0x1a3ec | r0 = fcn_0001a3ec (r0, r1);
0x0006be80 cmp r0, 0 |
| if (r0 == 0) {
0x0006be82 beq 0x6bf08 | goto label_25;
| }
0x0006be84 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0006be86 cmp r3, 0x3f |
0x0006be88 itt gt |
| if (r3 <= 0x3f) {
0x0006be8a movgt r8, 0 | r8 = 0;
| }
| if (r3 > 0x3f) {
0x0006be8e mov.w sb, -0x80000000 | sb = -0x80000000;
| }
| if (r3 <= 0x3f) {
0x0006be92 bgt 0x6beb0 |
0x0006be94 mov.w r8, 1 | r8 = 1;
0x0006be98 sub.w sb, r3, 0x20 | sb = r3 - 0x20;
0x0006be9c rsb.w r2, r3, 0x20 | r2 = 0x20 - r3;
0x0006bea0 lsl.w sb, r8, sb | sb = r8 << sb;
0x0006bea4 lsr.w r2, r8, r2 | r2 = r8 >> r2;
0x0006bea8 lsl.w r8, r8, r3 | r8 <<= r3;
0x0006beac orr.w sb, sb, r2 | sb |= r2;
| }
0x0006beb0 cmp.w fp, 0 |
| if (fp == 0) {
0x0006beb4 beq.w 0x6c5e2 | goto label_116;
| }
| label_26:
0x0006beb8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0006beba ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0006bebc and.w r3, r8, r3 | r3 = r8 & r3;
0x0006bec0 and.w r2, sb, r2 | r2 = sb & r2;
0x0006bec4 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x0006bec6 bne.w 0x6c5dc | goto label_117;
| }
0x0006bec8 strh r1, [r1, 0x1c] | *((r1 + 0x1c)) = r1;
0x0006beca ldr r2, [sp, 0x34] | r2 = var_34h;
0x0006becc ldrh r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0006bece add.w fp, r2, 1 |
0x0006bed2 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006bed4 cmp fp, r3 |
0x0006bed6 ldr r0, [r2] | r0 = *(r2);
| if (fp > r3) {
0x0006bed8 ble 0x6bee8 |
0x0006beda mov r2, fp | r2 = fp;
0x0006bedc mov r1, r5 | r1 = r5;
0x0006bede bl 0x1ad6c | r0 = fcn_0001ad6c (r0, r1);
0x0006bee2 cmp r0, 0 |
| if (r0 != 0) {
0x0006bee4 bne.w 0x6c2f6 | goto label_118;
| }
| }
0x0006bee8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0006beea ldr r2, [sp, 0x34] | r2 = var_34h;
0x0006beec str.w fp, [sp, 0x34] | __asm ("str.w fp, [var_34h]");
0x0006bef0 mov.w fp, 1 |
0x0006bef4 orr.w r3, r8, r3 | r3 = r8 | r3;
0x0006bef8 str r3, [sp, 0x28] | var_28h = r3;
0x0006befa ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0006befc orr.w r3, sb, r3 | r3 = sb | r3;
0x0006bf00 str r3, [sp, 0x2c] | var_2ch = r3;
0x0006bf02 ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x0006bf04 str.w r4, [r3, r2, lsl 2] | __asm ("str.w r4, [r3, r2, lsl 2]");
| }
| label_25:
0x0006bf08 adds r4, 0x30 | r4 += 0x30;
0x0006bf0a cmp r6, r4 |
0x0006bf0c bhi 0x6be4e |
| } while (r6 > r4);
0x0006bf0e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0006bf10 ldr.w r8, [sp, 0x34] | r8 = var_34h;
0x0006bf14 mvns r4, r3 | r4 = ~r3;
0x0006bf16 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0006bf18 orr r4, r4, 0x80000000 | r4 |= 0x80000000;
0x0006bf1c mvns r2, r3 | r2 = ~r3;
0x0006bf1e uxth.w r3, r8 | r3 = (int16_t) r8;
| label_64:
0x0006bf22 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0006bf24 strh r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0006bf26 strh r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x0006bf28 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0006bf2a add r3, r1 | r3 += r1;
0x0006bf2c ldr r1, [sp, 0x14] | r1 = var_14h;
0x0006bf2e add.w r3, r1, r3, lsl 3 | r3 = r1 + (r3 << 3);
0x0006bf32 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0006bf34 ldr r0, [r3, 0x44] | r0 = *((r3 + 0x44));
0x0006bf36 ldrsh.w r7, [r1, 0x2a] | r7 = *((r1 + 0x2a));
0x0006bf3a movw r1, 0x4241 | r1 = 0x4241;
0x0006bf3e str r1, [r5, 0x24] | *((r5 + 0x24)) = r1;
0x0006bf40 ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x0006bf42 ands r4, r0 | r4 &= r0;
0x0006bf44 cmp r7, 0x3f |
0x0006bf46 mov r3, r7 | r3 = r7;
0x0006bf48 it ge |
| if (r7 < 0x3f) {
0x0006bf4a movge r3, 0x3f | r3 = 0x3f;
| }
0x0006bf4c cmp r7, 0 |
0x0006bf4e and.w sb, r1, r2 | sb = r1 & r2;
0x0006bf52 mov sl, r3 | sl = r3;
0x0006bf54 str r7, [sp, 0x34] | var_34h = r7;
| if (r7 <= 0) {
0x0006bf56 ble 0x6bf80 | goto label_119;
| }
0x0006bf58 movs r3, 0 | r3 = 0;
| do {
0x0006bf5a rsb.w r1, r3, 0x20 | r1 = 0x20 - r3;
0x0006bf5e lsr.w r2, sb, r3 | r2 = sb >> r3;
0x0006bf62 lsl.w r1, r4, r1 | r1 = r4 << r1;
0x0006bf66 orrs r2, r1 | r2 |= r1;
0x0006bf68 sub.w r1, r3, 0x20 | r1 = r3 - 0x20;
0x0006bf6c lsr.w r1, r4, r1 | r1 = r4 >> r1;
0x0006bf70 adds r3, 1 | r3++;
0x0006bf72 orrs r2, r1 | r2 |= r1;
0x0006bf74 lsls r1, r2, 0x1f | r1 = r2 << 0x1f;
0x0006bf76 it mi |
| if (r1 >= r2) {
0x0006bf78 addmi r8, r8, 1 | r8++;
| }
0x0006bf7c cmp sl, r3 |
0x0006bf7e bne 0x6bf5a |
| } while (sl != r3);
| label_119:
0x0006bf80 cmp r0, 0 |
0x0006bf82 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006bf84 it lt |
| if (r0 >= 0) {
0x0006bf86 ldrlt r3, [sp, 0x34] | r3 = var_34h;
| }
0x0006bf88 ldr r0, [r2] | r0 = *(r2);
0x0006bf8a mov.w r2, 0 | r2 = 0;
0x0006bf8e itt lt |
| if (r0 >= 0) {
0x0006bf90 sublt r3, 0x3f | r3 -= 0x3f;
| }
| if (r0 >= 0) {
0x0006bf92 addlt r8, r3 | r8 += r3;
| }
0x0006bf94 add.w r3, r8, 1 | r3 = r8 + 1;
0x0006bf98 sxth r1, r3 | __asm ("sxth r1, r3");
0x0006bf9a str r3, [sp, 0x64] | var_64h = r3;
0x0006bf9c add r3, sp, 0xa0 | r3 += var_a0h;
0x0006bf9e bl 0x1c418 | fcn_0001c418 (r0, r1, r2, r3);
0x0006bfa2 str r0, [sp, 0x28] | var_28h = r0;
0x0006bfa4 cmp r0, 0 |
| if (r0 == 0) {
0x0006bfa6 beq.w 0x6c2f6 | goto label_118;
| }
0x0006bfaa ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0006bfac str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0006bfae str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x0006bfb0 ldr.w r3, [pc, 0x958] |
0x0006bfb4 add r3, pc | r3 = 0xd88c4;
0x0006bfb6 str r3, [r0] | *(r0) = r3;
0x0006bfb8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006bfba ldr r7, [r3, 0x64] | r7 = *(0xd8928);
0x0006bfbc cmp r6, r7 |
| if (r6 < r7) {
0x0006bfbe bls.w 0x6cabc | goto label_120;
| }
0x0006bfc2 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0006bfc4 mov.w r8, 0 | r8 = 0;
0x0006bfc8 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0006bfca str.w sl, [sp, 0x6c] | __asm ("str.w sl, [var_6ch]");
0x0006bfce str.w sb, [sp, 0x70] | __asm ("str.w sb, [var_70h]");
0x0006bfd2 add.w fp, r3, r2 |
0x0006bfd6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006bfd8 ldr.w sl, [sp, 0x40] | sl = var_40h;
0x0006bfdc ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x0006bfe0 str r5, [sp, 0x68] | var_68h = r5;
0x0006bfe2 add.w fp, r3, fp, lsl 3 |
0x0006bfe6 ldr r5, [sp, 0x24] | r5 = var_24h;
0x0006bfe8 str.w r8, [sp, 0x2c] | __asm ("str.w r8, [var_2ch]");
0x0006bfec str r4, [sp, 0x74] | var_74h = r4;
0x0006bfee str.w r8, [sp, 0x24] | __asm ("str.w r8, [var_24h]");
| do {
0x0006bff2 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0006bff4 ldr.w r3, [fp, 0x30] | r3 = *(arg_30h);
0x0006bff8 cmp r2, r3 |
| if (r2 == r3) {
0x0006bffa bne 0x6c040 |
0x0006bffc mov r2, sb | r2 = sb;
0x0006bffe mov r3, sl | r3 = sl;
0x0006c000 mov r1, r5 | r1 = r5;
0x0006c002 mov r0, r7 | r0 = r7;
0x0006c004 bl 0x1a3ec | r0 = fcn_0001a3ec (r0, r1);
| if (r0 == 0) {
0x0006c008 cbz r0, 0x6c040 | goto label_28;
| }
0x0006c00a ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x0006c00c cmp r0, 0x3f |
0x0006c00e itt gt |
| if (r0 <= 0x3f) {
0x0006c010 movgt r1, 0 | r1 = 0;
| }
| if (r0 <= 0x3f) {
0x0006c012 movgt r2, -0x80000000 | r2 = -0x80000000;
| }
| if (r0 <= 0x3f) {
0x0006c016 bgt 0x6c02e |
0x0006c018 movs r1, 1 | r1 = 1;
0x0006c01a sub.w r2, r0, 0x20 | r2 = r0 - 0x20;
0x0006c01e rsb.w r3, r0, 0x20 | r3 = 0x20 - r0;
0x0006c022 lsl.w r2, r1, r2 | r2 = r1 << r2;
0x0006c026 lsr.w r3, r1, r3 | r3 = r1 >> r3;
0x0006c02a lsls r1, r0 | r1 <<= r0;
0x0006c02c orrs r2, r3 | r2 |= r3;
| }
0x0006c02e ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006c030 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x0006c032 ands r3, r1 | r3 &= r1;
0x0006c034 and.w ip, r2, r4 |
0x0006c038 orrs.w r3, r3, ip | r3 |= ip;
| if (r3 == r3) {
0x0006c03c beq.w 0x6c642 | goto label_121;
| }
| }
| label_28:
0x0006c040 adds r7, 0x30 | r7 += 0x30;
0x0006c042 cmp r6, r7 |
0x0006c044 bhi 0x6bff2 |
| } while (r6 > r7);
0x0006c046 ldrd r5, sl, [sp, 0x68] | __asm ("ldrd r5, sl, [var_6ch]");
0x0006c04a lsl.w r7, r8, 1 | r7 = r8 << 1;
0x0006c04e ldrd sb, r4, [sp, 0x70] | __asm ("ldrd sb, r4, [var_70h]");
0x0006c052 lsl.w r6, r8, 2 | r6 = r8 << 2;
| label_55:
0x0006c056 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0006c058 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0006c05a ldr r1, [r3, 0x20] | r1 = *((r3 + 0x20));
0x0006c05c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0006c05e cmp r3, 0 |
| if (r3 <= 0) {
0x0006c060 ble 0x6c0a0 | goto label_122;
| }
0x0006c062 ldr r7, [sp, 0x78] | r7 = var_78h;
0x0006c064 movs r3, 0 | r3 = 0;
| do {
0x0006c066 rsb.w r6, r3, 0x20 | r6 = 0x20 - r3;
0x0006c06a lsr.w r2, sb, r3 | r2 = sb >> r3;
0x0006c06e lsl.w r6, r4, r6 | r6 = r4 << r6;
0x0006c072 orrs r2, r6 | r2 |= r6;
0x0006c074 sub.w r6, r3, 0x20 | r6 = r3 - 0x20;
0x0006c078 lsr.w r6, r4, r6 | r6 = r4 >> r6;
0x0006c07c orrs r2, r6 | r2 |= r6;
0x0006c07e lsls r6, r2, 0x1f | r6 = r2 << 0x1f;
0x0006c080 it mi |
| if (r6 < r2) {
0x0006c082 strhmi r3, [r0, r8, lsl 1] | __asm ("strhmi r3, [r0, r8, lsl 1]");
| }
0x0006c086 add.w r3, r3, 1 | r3++;
0x0006c08a itt mi |
| if (r6 >= r2) {
0x0006c08c strmi r7, [r1, r8, lsl 2] | offset_0 = r8 << 2;
| *((r1 + offset_0)) = r7;
| }
| if (r6 < r2) {
0x0006c090 add.w r8, r8, 1 | r8++;
| }
0x0006c094 cmp sl, r3 |
0x0006c096 bne 0x6c066 |
| } while (sl != r3);
0x0006c098 lsl.w r7, r8, 1 | r7 = r8 << 1;
0x0006c09c lsl.w r6, r8, 2 | r6 = r8 << 2;
| label_122:
0x0006c0a0 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0006c0a2 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0006c0a4 add r3, r2 | r3 += r2;
0x0006c0a6 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006c0a8 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x0006c0ac ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0006c0ae cmp r3, 0 |
| if (r3 < 0) {
0x0006c0b0 blt.w 0x6c70c | goto label_123;
| }
| label_35:
0x0006c0b4 ldr.w r4, [pc, 0x858] |
0x0006c0b8 movw lr, 0xffff | lr = 0xffff;
0x0006c0bc ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006c0be ldr r3, [sp, 0x64] | r3 = var_64h;
0x0006c0c0 add r4, pc |
0x0006c0c2 ldr r2, [r2, 0x28] | r2 = *((r2 + 0x28));
0x0006c0c4 add.w r4, r4, 0x358 | r4 = 0xd8d2c;
0x0006c0c8 strh.w lr, [r0, r7] |
0x0006c0cc str r4, [r1, r6] | *((r1 + r6)) = r4;
0x0006c0ce movs r4, 0 | r4 = 0;
0x0006c0d0 ldr r6, [sp, 0x18] | r6 = var_18h;
0x0006c0d2 add.w ip, r2, 1 |
0x0006c0d6 ldr r7, [sp, 0x20] | r7 = var_20h;
0x0006c0d8 movs r1, 0x65 | r1 = 0x65;
0x0006c0da ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006c0dc str.w ip, [r6, 0x28] | __asm ("str.w ip, [r6, 0x28]");
0x0006c0e0 str r2, [r7, 8] | *((r7 + 8)) = r2;
0x0006c0e2 str r4, [sp] | *(sp) = r4;
0x0006c0e4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006c0e8 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0006c0ea mov r0, r6 | r0 = r6;
0x0006c0ec bl 0x2d434 | fcn_0002d434 (r0, r1);
0x0006c0f0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006c0f2 ldrb.w sl, [r7, 0x34] | sl = *((r7 + 0x34));
0x0006c0f6 ldr r3, [r3, 0x50] | r3 = *((r3 + 0x50));
0x0006c0f8 lsl.w fp, sl, 3 |
0x0006c0fc ldr.w sb, [r3, 4] | sb = *((r3 + 4));
0x0006c100 add.w r2, fp, sl | r2 = fp + sl;
0x0006c104 add.w r2, sb, r2, lsl 3 | r2 = sb + (r2 << 3);
0x0006c108 ldrb.w r3, [r2, 0x2d] | r3 = *((r2 + 0x2d));
0x0006c10c ands r3, r3, 0x10 | r3 &= 0x10;
| if (r3 == r3) {
0x0006c110 beq.w 0x6c684 | goto label_124;
| }
0x0006c114 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006c116 ldr r6, [r2, 0x24] | r6 = *((r2 + 0x24));
0x0006c118 ldr r2, [r3, 0x6c] | r2 = *((r3 + 0x6c));
0x0006c11a ldr r3, [r3, 0x70] | r3 = *((r3 + 0x70));
0x0006c11c str r2, [sp, 0x24] | var_24h = r2;
0x0006c11e cmp r2, r3 |
| if (r2 >= r3) {
0x0006c120 bge.w 0x6cca4 | goto label_125;
| }
0x0006c124 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006c126 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0006c128 ldr r3, [r0, 0x68] | r3 = *((r0 + 0x68));
0x0006c12a add.w r2, r1, r1, lsl 2 | r2 = r1 + (r1 << 2);
0x0006c12e adds r1, 1 | r1++;
0x0006c130 str r1, [r0, 0x6c] | *((r0 + 0x6c)) = r1;
0x0006c132 movs r1, 0x45 | r1 = 0x45;
0x0006c134 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
0x0006c138 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0006c13c strd r4, r4, [r3, 4] | __asm ("strd r4, r4, [r3, 4]");
0x0006c140 strd r4, r4, [r3, 0xc] | __asm ("strd r4, r4, [r3, 0xc]");
| label_61:
0x0006c144 add.w r3, fp, sl | r3 = fp + sl;
0x0006c148 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0006c14a add.w r3, sb, r3, lsl 3 | r3 = sb + (r3 << 3);
0x0006c14e mov r2, r6 | r2 = r6;
0x0006c150 movs r1, 0xd | r1 = 0xd;
0x0006c152 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0006c154 mov r0, r4 | r0 = r4;
0x0006c156 str r3, [sp] | *(sp) = r3;
0x0006c158 movs r3, 0 | r3 = 0;
0x0006c15a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006c15e ldrd r4, r3, [r4, 0x6c] | __asm ("ldrd r4, r3, [r4, 0x6c]");
0x0006c162 cmp r4, r3 |
| if (r4 >= r3) {
0x0006c164 bge.w 0x6cc90 | goto label_126;
| }
0x0006c168 ldr r7, [sp, 0x30] | r7 = var_30h;
0x0006c16a add.w r3, r4, r4, lsl 2 | r3 = r4 + (r4 << 2);
0x0006c16e adds r2, r4, 1 | r2 = r4 + 1;
0x0006c170 movs r1, 0 | r1 = 0;
0x0006c172 ldr r0, [r7, 0x68] | r0 = *((r7 + 0x68));
0x0006c174 str r2, [r7, 0x6c] | *((r7 + 0x6c)) = r2;
0x0006c176 movs r7, 0xe | r7 = 0xe;
0x0006c178 add.w r2, r0, r3, lsl 2 | r2 = r0 + (r3 << 2);
0x0006c17c strd r6, r1, [r2, 4] | __asm ("strd r6, r1, [r2, 4]");
0x0006c180 strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x0006c184 str.w r7, [r0, r3, lsl 2] | __asm ("str.w r7, [r0, r3, lsl 2]");
| label_60:
0x0006c188 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0006c18a cmp r1, 0 |
| if (r1 == 0) {
0x0006c18c beq.w 0x6c6bc | goto label_127;
| }
| label_29:
0x0006c190 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006c192 ldr r3, [r0, 0x38] | r3 = *((r0 + 0x38));
0x0006c194 subs r7, r3, 1 | r7 = r3 - 1;
0x0006c196 movs r3, 0x10 | r3 = 0x10;
0x0006c198 mov r2, r7 | r2 = r7;
0x0006c19a str r7, [r0, 0x38] | *((r0 + 0x38)) = r7;
0x0006c19c bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x0006c1a0 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0006c1a2 orr r3, r3, 0x20000 | r3 |= 0x20000;
0x0006c1a6 str r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
0x0006c1a8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006c1aa ldrb r3, [r3, 0x13] | r3 = *((r3 + 0x13));
0x0006c1ac cmp r3, 0 |
| if (r3 == 0) {
0x0006c1ae beq.w 0x6c6c8 | goto label_128;
| }
| label_30:
0x0006c1b2 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006c1b4 subs r3, 1 | r3--;
0x0006c1b6 uxtb r3, r3 | r3 = (int8_t) r3;
0x0006c1b8 strb r3, [r2, 0x13] | *((r2 + 0x13)) = r3;
0x0006c1ba add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x0006c1be ldr.w r6, [r3, 0x94] | r6 = *((r3 + 0x94));
| label_31:
0x0006c1c2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006c1c4 movs r5, 0 | r5 = 0;
0x0006c1c6 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0006c1c8 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006c1ca ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0006c1cc mov r3, r6 | r3 = r6;
0x0006c1ce strd r5, r5, [sp, 8] | __asm ("strd r5, r5, [var_8h]");
0x0006c1d2 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x0006c1d6 bl 0x6afc4 | fcn_0006afc4 (r0, r1, r2, r3, r4, r5, r6);
0x0006c1da ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006c1dc movs r1, 0x86 | r1 = 0x86;
0x0006c1de str r0, [sp, 0x28] | var_28h = r0;
0x0006c1e0 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0006c1e2 mov r3, r6 | r3 = r6;
0x0006c1e4 str r5, [sp] | *(sp) = r5;
0x0006c1e6 ldr r5, [sp, 0x30] | r5 = var_30h;
0x0006c1e8 mov r0, r5 | r0 = r5;
0x0006c1ea bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006c1ee ldr r3, [r5, 0x6c] | r3 = *((r5 + 0x6c));
0x0006c1f0 cmp r3, 0 |
| if (r3 > 0) {
0x0006c1f2 ble 0x6c204 |
0x0006c1f4 ldr r2, [r5, 0x68] | r2 = *((r5 + 0x68));
0x0006c1f6 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0006c1fa add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x0006c1fe movs r1, 0x10 | r1 = 0x10;
0x0006c200 strh r1, [r2, -0x12] | *((r2 - 0x12)) = r1;
| }
0x0006c204 ldr r2, [sp, 0x48] | r2 = var_48h;
| if (r2 != 0) {
0x0006c206 cbz r2, 0x6c21e |
0x0006c208 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0006c20a mvns r2, r7 | r2 = ~r7;
0x0006c20c ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x0006c20e ldrd r1, r5, [r0, 0x38] | __asm ("ldrd r1, r5, [r0, 0x38]");
0x0006c212 cmn r5, r1 |
| if (r5 < r1) {
0x0006c214 bmi.w 0x6cab2 | goto label_129;
| }
0x0006c218 ldr r1, [r0, 0x40] | r1 = *((r0 + 0x40));
0x0006c21a str.w r3, [r1, r2, lsl 2] | __asm ("str.w r3, [r1, r2, lsl 2]");
| }
| label_54:
0x0006c21e add.w r3, fp, sl | r3 = fp + sl;
0x0006c222 add.w r3, sb, r3, lsl 3 | r3 = sb + (r3 << 3);
0x0006c226 ldrb.w r1, [r3, 0x2d] | r1 = *((r3 + 0x2d));
0x0006c22a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006c22c ands r1, r1, 0x10 | r1 &= 0x10;
0x0006c230 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r1 == r1) {
0x0006c232 beq.w 0x6c6da | goto label_130;
| }
0x0006c236 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0006c238 ldr r5, [sp, 0x30] | r5 = var_30h;
0x0006c23a ldr r0, [sp, 0x28] | r0 = var_28h;
0x0006c23c cmp r2, 0 |
0x0006c23e it lt |
| if (r2 >= 0) {
0x0006c240 ldrlt r2, [sp, 0x30] | r2 = var_30h;
| }
0x0006c242 add r0, r8 | r0 += r8;
0x0006c244 ittt lt |
| if (r2 >= 0) {
0x0006c246 ldrlt r2, [r2, 0x6c] | r2 = *((r2 + 0x6c));
| }
| if (r2 >= 0) {
0x0006c248 addlt r2, r2, -1 | r2 += -1;
| }
| if (r2 < 0) {
0x0006c24c str r2, [sp, 0x24] | var_24h = r2;
| }
0x0006c24e ldr r2, [r5] | r2 = *(r5);
0x0006c250 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0006c254 cmp r2, 0 |
| if (r2 != 0) {
0x0006c256 bne.w 0x6c844 | goto label_131;
| }
0x0006c25a ldr r2, [sp, 0x24] | r2 = var_24h;
0x0006c25c add.w r1, r2, r2, lsl 2 | r1 = r2 + (r2 << 2);
0x0006c260 ldr r2, [r5, 0x68] | r2 = *((r5 + 0x68));
0x0006c262 add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
| label_39:
0x0006c266 str r0, [r2, 8] | *((r2 + 8)) = r0;
0x0006c268 add fp, sl |
0x0006c26a ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006c26c add.w r5, sb, fp, lsl 3 | r5 = sb + (fp << 3);
0x0006c270 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006c272 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x0006c274 str r2, [sp, 4] | var_4h = r2;
0x0006c276 ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0006c278 str r2, [sp] | *(sp) = r2;
0x0006c27a mov r2, r4 | r2 = r4;
0x0006c27c ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x0006c27e ldr r0, [r0] | r0 = *(r0);
0x0006c280 bl 0x11b14 | fcn_00011b14 (r0, r1, r2, r3, r4, r5);
0x0006c284 ldr r7, [sp, 0x30] | r7 = var_30h;
0x0006c286 mov r1, r4 | r1 = r4;
0x0006c288 mov r0, r7 | r0 = r7;
0x0006c28a bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0006c28e ldrb.w r3, [r5, 0x2d] | r3 = *((r5 + 0x2d));
0x0006c292 ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0006c294 bfc r3, 4, 1 | value_1 = BIT_MASK (1, );
| value_1 = ~value_1;
| r3 &= value_1;
0x0006c298 strb.w r3, [r5, 0x2d] | *((r5 + 0x2d)) = r3;
| label_33:
0x0006c29c ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006c29e cmp r4, 0 |
0x0006c2a0 it lt |
| if (r4 >= 0) {
0x0006c2a2 addlt r4, r2, -1 | r4 = r2 + -1;
| }
0x0006c2a6 ldr r3, [r0] | r3 = *(r0);
0x0006c2a8 ldrb.w r1, [r3, 0x53] | r1 = *((r3 + 0x53));
0x0006c2ac cmp r1, 0 |
| if (r1 != 0) {
0x0006c2ae bne.w 0x6c6d2 | goto label_132;
| }
0x0006c2b2 ldr r3, [r0, 0x68] | r3 = *((r0 + 0x68));
0x0006c2b4 add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x0006c2b8 add.w r3, r3, r4, lsl 2 | r3 += (r4 << 2);
| label_32:
0x0006c2bc str r2, [r3, 8] | *((r3 + 8)) = r2;
| if (r6 != 0) {
0x0006c2be cbz r6, 0x6c2d4 |
0x0006c2c0 ldr r4, [sp, 0x18] | r4 = var_18h;
0x0006c2c2 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0006c2c4 cmp r3, 7 |
0x0006c2c6 itttt ls |
| if (r3 > 7) {
0x0006c2c8 addls r0, r4, r3, lsl 2 | r0 = r4 + (r3 << 2);
| }
| if (r3 > 7) {
0x0006c2cc addls r3, 1 | r3++;
| }
| if (r3 > 7) {
0x0006c2ce strbls r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
| }
| if (r3 > 7) {
0x0006c2d0 str.w r6, [r0, 0x94] | __asm ("str.w r6, [r0, 0x94]");
| goto label_133;
| }
| }
| label_133:
0x0006c2d4 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0006c2d6 cmp r3, 0 |
0x0006c2d8 itt lt |
| if (r3 >= 0) {
0x0006c2da addlt r3, r2, -1 | r3 = r2 + -1;
| }
| if (r3 < 0) {
0x0006c2de str r3, [sp, 0x5c] | var_5ch = r3;
| }
0x0006c2e0 cmp r1, 0 |
| if (r1 != 0) {
0x0006c2e2 bne.w 0x6c704 | goto label_134;
| }
0x0006c2e6 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006c2e8 ldr r1, [r3, 0x68] | r1 = *((r3 + 0x68));
0x0006c2ea ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0006c2ec add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006c2f0 add.w r3, r1, r3, lsl 2 | r3 = r1 + (r3 << 2);
| label_34:
0x0006c2f4 str r2, [r3, 8] | *((r3 + 8)) = r2;
| label_118:
0x0006c2f6 ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x0006c2f8 cbz r3, 0x6c304 |
0x0006c2fa mov r1, r3 | r1 = r3;
0x0006c2fc ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006c2fe ldr r0, [r3] | r0 = *(r3);
0x0006c300 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x0006c304 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006c306 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006c30a cmp r3, 0 |
| if (r3 != 0) {
0x0006c30c bne.w 0x6cd02 | goto label_135;
| }
| label_112:
0x0006c310 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006c312 ldr r3, [r2, 0x74] | r3 = *((r2 + 0x74));
0x0006c314 cmp r3, 0 |
0x0006c316 it eq |
| if (r3 != 0) {
0x0006c318 moveq r3, r2 | r3 = r2;
| }
0x0006c31a ldrb.w r3, [r3, 0xc7] | r3 = *((r3 + 0xc7));
0x0006c31e cmp r3, 2 |
| if (r3 == 2) {
0x0006c320 bne 0x6c336 |
0x0006c322 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006c324 ldr r1, [sp, 0x44] | r1 = var_44h;
0x0006c326 ldr r3, [r2, 0x48] | r3 = *((r2 + 0x48));
0x0006c328 ldrb.w r2, [r2, 0x34] | r2 = *((r2 + 0x34));
0x0006c32c str r1, [sp] | *(sp) = r1;
0x0006c32e ldrd r1, r0, [sp, 0x14] | __asm ("ldrd r1, r0, [var_14h]");
0x0006c332 bl 0x2fd50 | fcn_0002fd50 (r0, r1, r2, r3, r4);
| }
0x0006c336 ldr r1, [sp, 0x58] | r1 = var_58h;
0x0006c338 ldr r4, [sp, 0x20] | r4 = var_20h;
0x0006c33a ldr r5, [sp, 0x54] | r5 = var_54h;
0x0006c33c ldr r3, [r1, 0x6c] | r3 = *((r1 + 0x6c));
0x0006c33e ldr r6, [sp, 0x10] | r6 = var_10h;
0x0006c340 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006c342 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0006c344 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006c346 mov r2, r6 | r2 = r6;
0x0006c348 str r4, [sp] | *(sp) = r4;
0x0006c34a str r3, [sp, 8] | var_8h = r3;
0x0006c34c ldr r3, [sp, 0x40] | r3 = var_40h;
0x0006c34e str r3, [sp, 0xc] | var_ch = r3;
0x0006c350 mov r3, r5 | r3 = r5;
0x0006c352 adds r5, 1 | r5++;
0x0006c354 str r5, [sp, 0x54] | var_54h = r5;
0x0006c356 bl 0x6cf48 | fcn_0006cf48 (r0, r1, r2, r3, r4, r5, r6);
0x0006c35a ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0006c35c str r0, [sp, 0x1c] | var_1ch = r0;
0x0006c35e str r1, [sp, 0x40] | var_40h = r1;
0x0006c360 str r3, [r6, 0x1c] | *((r6 + 0x1c)) = r3;
0x0006c362 add.w r3, r4, 0x58 | r3 = r4 + 0x58;
0x0006c366 str r3, [sp, 0x20] | var_20h = r3;
0x0006c368 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006c36a cmp r3, r5 |
| if (r3 != r5) {
0x0006c36c bne.w 0x6bdbe | goto label_7;
| }
0x0006c370 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0006c372 ldr r3, [r3, 0x6c] | r3 = *((r3 + 0x6c));
| label_67:
0x0006c374 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006c376 str r3, [r2, 0x38] | *((r2 + 0x38)) = r3;
0x0006c378 b.w 0x6bb6c | goto label_8;
| label_95:
0x0006c37c ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0006c37e ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006c380 orrs r2, r3 | r2 |= r3;
0x0006c382 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0006c384 str r2, [sp, 0x1c] | var_1ch = r2;
0x0006c386 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006c388 orrs r2, r3 | r2 |= r3;
0x0006c38a str r2, [sp, 0x20] | var_20h = r2;
| label_17:
0x0006c38c cmp r0, 0x65 |
| if (r0 != 0x65) {
0x0006c38e bne.w 0x6ce80 | goto label_136;
| }
0x0006c392 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0006c394 movs r0, 0x1c | r0 = 0x1c;
0x0006c396 blx 0x8474 | fcn_00008474 ();
| label_97:
0x0006c39a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006c39c cmp sb, r8 |
0x0006c39e add.w r3, r3, 1 | r3++;
0x0006c3a2 str r3, [sp, 0x18] | var_18h = r3;
| if (sb < r8) {
0x0006c3a4 bls.w 0x6bad2 | goto label_9;
| }
0x0006c3a8 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0006c3aa add.w r8, r8, 0x48 | r8 += 0x48;
0x0006c3ae b.w 0x6ba30 | goto label_10;
| label_93:
0x0006c3b2 movs r2, 0 | r2 = 0;
0x0006c3b4 mov r0, r2 | r0 = r2;
0x0006c3b6 b.w 0x6ba78 | goto label_11;
| label_94:
0x0006c3ba cmp sb, r8 |
0x0006c3bc mov.w r5, 0 | r5 = 0;
| if (sb < r8) {
0x0006c3c0 bls.w 0x6c5b0 | goto label_137;
| }
0x0006c3c4 mov ip, r8 |
0x0006c3c6 mov sl, r5 | sl = r5;
0x0006c3c8 mov.w lr, 1 | lr = 1;
| label_12:
0x0006c3cc orrs.w r2, r5, sl | r2 = r5 | sl;
| if (r2 == r5) {
0x0006c3d0 beq 0x6c426 | goto label_15;
| }
| label_14:
0x0006c3d2 cmp r3, 0 |
0x0006c3d4 ldr.w r4, [ip, 0x28] | r4 = *((ip + 0x28));
| if (r3 <= 0) {
0x0006c3d8 ble 0x6c40c | goto label_138;
| }
0x0006c3da add.w r1, fp, 0x1ec | r1 += arg_1ech;
0x0006c3de movs r2, 0 | r2 = 0;
0x0006c3e0 b 0x6c3e8 |
| while (r4 != r0) {
0x0006c3e2 adds r2, 1 | r2++;
0x0006c3e4 cmp r3, r2 |
| if (r3 == r2) {
0x0006c3e6 beq 0x6c40c | goto label_138;
| }
0x0006c3e8 ldr r0, [r1, 4]! | r0 = *((r1 += 4));
0x0006c3ec cmp r4, r0 |
0x0006c3ee bne 0x6c3e2 |
| }
0x0006c3f0 sub.w r1, r2, 0x20 | r1 = r2 - 0x20;
0x0006c3f4 rsb.w r0, r2, 0x20 | r0 = 0x20 - r2;
0x0006c3f8 lsl.w r1, lr, r1 | r1 = lr << r1;
0x0006c3fc lsr.w r0, lr, r0 | r0 = lr >> r0;
0x0006c400 lsl.w r2, lr, r2 | r2 = lr << r2;
0x0006c404 orrs r1, r0 | r1 |= r0;
0x0006c406 orr.w sl, r1, sl | sl = r1 | sl;
0x0006c40a orrs r5, r2 | r5 |= r2;
| label_138:
0x0006c40c add.w ip, ip, 0x48 |
0x0006c410 cmp sb, ip |
| if (sb > ip) {
0x0006c412 bhi 0x6c3cc | goto label_12;
| }
0x0006c414 ldrd r3, r0, [sp, 0x24] | __asm ("ldrd r3, r0, [var_28h]");
0x0006c418 mov r2, r7 | r2 = r7;
0x0006c41a strd r5, sl, [sp] | __asm ("strd r5, sl, [sp]");
0x0006c41e bl 0x34af0 | fcn_00034af0 (r0, r1, r2, r3, r4);
0x0006c422 b.w 0x6baa6 | goto label_13;
| label_15:
0x0006c426 ldrb.w r2, [ip, 0x24] | r2 = *((ip + 0x24));
0x0006c42a tst.w r2, 0xa |
| if ((r2 & 0xa) != 0) {
0x0006c42e bne 0x6c3d2 | goto label_14;
| }
0x0006c430 add.w ip, ip, 0x48 |
0x0006c434 cmp sb, ip |
| if (sb > ip) {
0x0006c436 bhi 0x6c426 | goto label_15;
| }
0x0006c438 ldrd r3, r0, [sp, 0x24] | __asm ("ldrd r3, r0, [var_28h]");
0x0006c43c mov r2, r7 | r2 = r7;
0x0006c43e strd r5, sl, [sp] | __asm ("strd r5, sl, [sp]");
0x0006c442 bl 0x34af0 | fcn_00034af0 (r0, r1, r2, r3, r4);
0x0006c446 b.w 0x6baa6 | goto label_13;
| label_96:
0x0006c44a ldrd r3, r0, [sp, 0x24] | __asm ("ldrd r3, r0, [var_28h]");
0x0006c44e mov r2, r7 | r2 = r7;
0x0006c450 strd r5, sl, [sp] | __asm ("strd r5, sl, [sp]");
0x0006c454 bl 0x39310 | fcn_00039310 (r0, r1, r2, r3, r4, r5, r6);
0x0006c458 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0006c45a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006c45c orrs r2, r3 | r2 |= r3;
0x0006c45e ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0006c460 str r2, [sp, 0x1c] | var_1ch = r2;
0x0006c462 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006c464 orrs r2, r3 | r2 |= r3;
0x0006c466 str r2, [sp, 0x20] | var_20h = r2;
0x0006c468 cmp r0, 0 |
| if (r0 == 0) {
0x0006c46a beq.w 0x6bac6 | goto label_16;
| }
0x0006c46e b 0x6c38c | goto label_17;
| label_89:
0x0006c470 ldr r1, [r4] | r1 = *(r4);
0x0006c472 b.w 0x6b99c | goto label_18;
| label_85:
0x0006c476 ldr.w r3, [pc, 0x49c] | r3 = *(0x0006c914);
0x0006c47a ldr r7, [sp, 0x14] | r7 = var_14h;
0x0006c47c str r6, [sp, 0x1c] | var_1ch = r6;
0x0006c47e add r3, pc | r3 += pc;
0x0006c480 str.w fp, [sp, 0x18] | __asm ("str.w fp, [var_18h]");
0x0006c484 str r3, [sp, 0x24] | var_24h = r3;
| label_20:
0x0006c486 ldr r4, [sp, 0x10] | r4 = var_10h;
0x0006c488 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006c48a ldr r1, [sp, 0x14] | r1 = var_14h;
0x0006c48c ldr.w r3, [r4, 0x1ec] | r3 = *((r4 + 0x1ec));
0x0006c490 add.w r2, r2, r2, lsl 3 | r2 += (r2 << 3);
0x0006c494 adds r0, r3, 1 | r0 = r3 + 1;
0x0006c496 add.w r2, r1, r2, lsl 3 | r2 = r1 + (r2 << 3);
0x0006c49a ldr r1, [r7, 0x30] | r1 = *((r7 + 0x30));
0x0006c49c add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x0006c4a0 str.w r0, [r4, 0x1ec] | __asm ("str.w r0, aav.0x000000ff");
0x0006c4a4 str.w r1, [r3, 0x1f0] | __asm ("str.w r1, aav.0x000000ff");
0x0006c4a8 ldrb.w r3, [r2, 0x2d] | r3 = *((r2 + 0x2d));
0x0006c4ac lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
| if (r1 >= r3) {
0x0006c4ae bpl 0x6c56c | goto label_23;
| }
0x0006c4b0 ldr.w fp, [r7, 0x48] | fp = *((r7 + 0x48));
0x0006c4b4 ldr r6, [r7, 0x18] | r6 = *((r7 + 0x18));
0x0006c4b6 cmp.w fp, 0 |
| if (fp == 0) {
0x0006c4ba beq 0x6c56c | goto label_23;
| }
0x0006c4bc ldr.w r3, [fp] | r3 = *(fp);
0x0006c4c0 cmp r3, 0 |
| if (r3 <= 0) {
0x0006c4c2 ble 0x6c56c | goto label_23;
| }
0x0006c4c4 movs r4, 0 | r4 = 0;
0x0006c4c6 mov sb, fp | sb = fp;
0x0006c4c8 mov r8, r4 | r8 = r4;
| label_19:
0x0006c4ca ldrsh.w r1, [r6, 0x2a] | r1 = *((r6 + 0x2a));
0x0006c4ce cmp r4, r1 |
| if (r4 >= r1) {
0x0006c4d0 bge 0x6c58c | goto label_139;
| }
0x0006c4d2 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0006c4d4 add.w r2, r4, r4, lsl 2 | r2 = r4 + (r4 << 2);
0x0006c4d8 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0006c4dc b 0x6c4e6 |
| while (r2 >= r2) {
0x0006c4de adds r4, 1 | r4++;
0x0006c4e0 adds r3, 0x14 | r3 += 0x14;
0x0006c4e2 cmp r4, r1 |
| if (r4 == r1) {
0x0006c4e4 beq 0x6c58c | goto label_139;
| }
0x0006c4e6 ldrh r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x0006c4e8 lsls r2, r2, 0x1e | r2 <<= 0x1e;
0x0006c4ea bpl 0x6c4de |
| }
0x0006c4ec ldr.w r0, [sl] | r0 = *(sl);
0x0006c4f0 movs r2, 0x34 | r2 = 0x34;
0x0006c4f2 movs r3, 0 | r3 = 0;
0x0006c4f4 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x0006c4f8 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0006c4fa cbz r0, 0x6c56c | goto label_23;
| }
0x0006c4fc movs r2, 0x34 | r2 = 0x34;
0x0006c4fe movs r1, 0 | r1 = 0;
0x0006c500 blx 0x8264 | fcn_00008264 ();
0x0006c504 movs r3, 0xa6 | r3 = 0xa6;
0x0006c506 strb r3, [r5] | *(r5) = r3;
0x0006c508 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0006c50a ldr.w r2, [sb, 8] | r2 = *((sb + 8));
0x0006c50e strh r4, [r5, 0x20] | *((r5 + 0x20)) = r4;
0x0006c510 adds r4, 1 | r4++;
0x0006c512 str r3, [r5, 0x1c] | *((r5 + 0x1c)) = r3;
0x0006c514 movw r3, 0xffff | r3 = 0xffff;
0x0006c518 strh r3, [r5, 0x22] | *((r5 + 0x22)) = r3;
0x0006c51a movs r3, 1 | r3 = 1;
0x0006c51c str r6, [r5, 0x2c] | *((r5 + 0x2c)) = r6;
0x0006c51e str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
| if (r2 != 0) {
0x0006c520 cbz r2, 0x6c532 |
0x0006c522 movs r3, 0 | r3 = 0;
0x0006c524 mov r1, r2 | r1 = r2;
0x0006c526 ldr.w r0, [sl] | r0 = *(sl);
0x0006c52a mov r2, r3 | r2 = r3;
0x0006c52c bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x0006c530 mov r2, r0 | r2 = r0;
| }
0x0006c532 movs r1, 0xad | r1 = 0xad;
0x0006c534 movs r3, 0 | r3 = 0;
0x0006c536 mov r0, sl | r0 = sl;
0x0006c538 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0006c53c mov r2, r5 | r2 = r5;
0x0006c53e mov r3, r0 | r3 = r0;
0x0006c540 movs r1, 0x35 | r1 = 0x35;
0x0006c542 mov r0, sl | r0 = sl;
0x0006c544 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0006c548 ldrb.w r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x0006c54c mov r5, r0 | r5 = r0;
0x0006c54e lsls r3, r3, 0x1c | r3 <<= 0x1c;
| if (r3 < r3) {
0x0006c550 bmi 0x6c584 | goto label_140;
| }
| label_22:
0x0006c552 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006c554 mov r1, r5 | r1 = r5;
0x0006c556 movs r2, 1 | r2 = 1;
0x0006c558 add.w r8, r8, 1 | r8++;
0x0006c55c bl 0x20170 | fcn_00020170 (r0, r1, r2, r3);
0x0006c560 ldr.w r3, [fp] | r3 = *(fp);
0x0006c564 add.w sb, sb, 0x10 | sb += 0x10;
0x0006c568 cmp r8, r3 |
| if (r8 < r3) {
0x0006c56a blt 0x6c4ca | goto label_19;
| }
| label_23:
0x0006c56c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006c56e adds r7, 0x48 | r7 += 0x48;
0x0006c570 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006c572 ldr r3, [r3] | r3 = *(r3);
0x0006c574 adds r2, 1 | r2++;
0x0006c576 str r2, [sp, 0x1c] | var_1ch = r2;
0x0006c578 cmp r3, r2 |
| if (r3 > r2) {
0x0006c57a bgt 0x6c486 | goto label_20;
| }
0x0006c57c ldr.w fp, [sp, 0x18] | fp = var_18h;
0x0006c580 b.w 0x6b90a | goto label_21;
| label_140:
0x0006c584 ldr r1, [r7, 0x30] | r1 = *((r7 + 0x30));
0x0006c586 bl 0x9f28 | fcn_00009f28 (r0, r1);
0x0006c58a b 0x6c552 | goto label_22;
| label_139:
0x0006c58c ldr r2, [r6] | r2 = *(r6);
0x0006c58e mov r3, r8 | r3 = r8;
0x0006c590 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0006c592 mov r0, sl | r0 = sl;
0x0006c594 bl 0x25778 | fcn_00025778 (r0);
0x0006c598 b 0x6c56c | goto label_23;
| label_84:
0x0006c59a cmp r0, 0 |
| if (r0 == 0) {
0x0006c59c beq.w 0x6bb6c | goto label_8;
| }
0x0006c5a0 mov r1, r0 | r1 = r0;
0x0006c5a2 movs r3, 0 | r3 = 0;
0x0006c5a4 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0006c5a6 str r3, [sp, 0x10] | var_10h = r3;
0x0006c5a8 bl 0x159dc | fcn_000159dc (r0, r1);
0x0006c5ac b.w 0x6bb6c | goto label_8;
| label_137:
0x0006c5b0 mov sl, r5 | sl = r5;
0x0006c5b2 ldrd r3, r0, [sp, 0x24] | __asm ("ldrd r3, r0, [var_28h]");
0x0006c5b6 mov r2, r7 | r2 = r7;
0x0006c5b8 strd r5, sl, [sp] | __asm ("strd r5, sl, [sp]");
0x0006c5bc bl 0x34af0 | fcn_00034af0 (r0, r1, r2, r3, r4);
0x0006c5c0 b.w 0x6baa6 | goto label_13;
| label_101:
0x0006c5c4 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0006c5c6 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0006c5c8 lsls r7, r3, 0x13 | r7 = r3 << 0x13;
| if (r7 >= r3) {
0x0006c5ca bpl.w 0x6bbfe | goto label_24;
| }
0x0006c5ce ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006c5d0 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x0006c5d4 vstr d16, [r3, 0x48] | __asm ("vstr d16, [r3, 0x48]");
0x0006c5d8 b.w 0x6bbfe | goto label_24;
| label_117:
0x0006c5dc mov.w fp, 1 |
0x0006c5e0 b 0x6bf08 | goto label_25;
| label_116:
0x0006c5e2 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0006c5e4 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006c5e8 mov.w r0, 0x11c | r0 = 0x11c;
0x0006c5ec ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x0006c5ee ldr.w r3, [r2, r3, lsl 2] | offset_2 = r3 << 2;
| r3 = *((r2 + offset_2));
0x0006c5f2 ldr r2, [r1] | r2 = *(r1);
0x0006c5f4 ldr r1, [pc, 0x320] |
0x0006c5f6 add r1, pc | r1 = 0xd8f12;
0x0006c5f8 blx 0x8474 | fcn_00008474 ();
0x0006c5fc b 0x6beb8 | goto label_26;
| label_115:
0x0006c5fe ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0006c600 mov r1, sb | r1 = sb;
0x0006c602 add r0, sp, 0xa0 | r0 += var_a0h;
0x0006c604 str r3, [sp, 0xb8] | var_b8h = r3;
0x0006c606 ldr r3, [pc, 0x314] |
0x0006c608 add r3, pc | r3 = 0xd8f2a;
0x0006c60a str r3, [sp, 0xa4] | var_a4h = r3;
0x0006c60c ldr r3, [pc, 0x310] |
0x0006c60e add r3, pc | r3 = 0xd8f32;
0x0006c610 str r3, [sp, 0xa8] | var_a8h = r3;
0x0006c612 movs r3, 3 | r3 = 3;
0x0006c614 strh.w r3, [sp, 0xb4] | var_b4h = r3;
0x0006c618 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x0006c61c ldrh.w r3, [sp, 0xb4] | r3 = var_b4h;
0x0006c620 cmp r3, 0 |
| if (r3 == 0) {
0x0006c622 beq.w 0x6be6c | goto label_27;
| }
0x0006c626 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006c628 mov r1, sb | r1 = sb;
0x0006c62a mov r3, r8 | r3 = r8;
0x0006c62c mov r2, r8 | r2 = r8;
0x0006c62e ldr r0, [r0] | r0 = *(r0);
0x0006c630 bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x0006c634 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0006c636 mov r2, r0 | r2 = r0;
0x0006c638 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006c63a bl 0x2659c | fcn_0002659c (r0, r1, r2);
0x0006c63e str r0, [sp, 0x48] | var_48h = r0;
0x0006c640 b 0x6be6c | goto label_27;
| label_121:
0x0006c642 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006c644 orrs r3, r1 | r3 |= r1;
0x0006c646 str r3, [sp, 0x24] | var_24h = r3;
0x0006c648 mov r3, r4 | r3 = r4;
0x0006c64a orrs r3, r2 | r3 |= r2;
0x0006c64c ldr r2, [sp, 0x28] | r2 = var_28h;
0x0006c64e str r3, [sp, 0x2c] | var_2ch = r3;
0x0006c650 ldr r3, [r7] | r3 = *(r7);
0x0006c652 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0006c654 strh.w r0, [r2, r8, lsl 1] | offset_3 = r8 << 1;
| *((r2 + offset_3)) = r0;
0x0006c658 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0006c65a ldrd r1, r3, [r3, 0xc] | __asm ("ldrd r1, r3, [r3, 0xc]");
0x0006c65e ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006c660 lsls r2, r2, 0x16 | r2 <<= 0x16;
0x0006c662 itet mi |
| if (r2 >= r2) {
0x0006c664 movmi r2, r1 | r2 = r1;
| }
| if (r2 < r2) {
0x0006c666 movpl r2, r3 | r2 = r3;
| }
| if (r2 >= r2) {
0x0006c668 movmi r1, r3 | r1 = r3;
| }
0x0006c66a bl 0x2d56c | r0 = fcn_0002d56c (r0, r1, r2);
0x0006c66e cmp r0, 0 |
| if (r0 == 0) {
0x0006c670 beq.w 0x6ca88 | goto label_141;
| }
0x0006c674 ldr r2, [r0] | r2 = *(r0);
| label_52:
0x0006c676 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0006c678 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0006c67a str.w r2, [r3, r8, lsl 2] | __asm ("str.w r2, [r3, r8, lsl 2]");
0x0006c67e add.w r8, r8, 1 | r8++;
0x0006c682 b 0x6c040 | goto label_28;
| label_124:
0x0006c684 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0006c686 ldrd r4, r1, [r2, 0x6c] | __asm ("ldrd r4, r1, [r2, 0x6c]");
0x0006c68a ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006c68c cmp r4, r1 |
0x0006c68e ldr r2, [r2, 4] | r2 = *((r2 + 4));
| if (r4 >= r1) {
0x0006c690 bge.w 0x6cc7e | goto label_142;
| }
0x0006c694 ldr r7, [sp, 0x30] | r7 = var_30h;
0x0006c696 add.w r1, r4, r4, lsl 2 | r1 = r4 + (r4 << 2);
0x0006c69a adds r6, r4, 1 | r6 = r4 + 1;
0x0006c69c str r3, [sp, 0x24] | var_24h = r3;
0x0006c69e ldr r0, [r7, 0x68] | r0 = *((r7 + 0x68));
0x0006c6a0 str r6, [r7, 0x6c] | *((r7 + 0x6c)) = r6;
0x0006c6a2 movs r6, 0x25 | r6 = 0x25;
0x0006c6a4 add.w r7, r0, r1, lsl 2 | r7 = r0 + (r1 << 2);
0x0006c6a8 strd r2, r3, [r7, 4] | __asm ("strd r2, r3, [r7, 4]");
0x0006c6ac strd r3, r3, [r7, 0xc] | __asm ("strd r3, r3, [r7, 0xc]");
0x0006c6b0 str.w r6, [r0, r1, lsl 2] | __asm ("str.w r6, [r0, r1, lsl 2]");
0x0006c6b4 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0006c6b6 cmp r1, 0 |
| if (r1 != 0) {
0x0006c6b8 bne.w 0x6c190 | goto label_29;
| }
| label_127:
0x0006c6bc ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006c6be ldr r7, [sp, 0x48] | r7 = var_48h;
0x0006c6c0 ldrb r3, [r3, 0x13] | r3 = *((r3 + 0x13));
0x0006c6c2 cmp r3, 0 |
| if (r3 != 0) {
0x0006c6c4 bne.w 0x6c1b2 | goto label_30;
| }
| label_128:
0x0006c6c8 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006c6ca ldr r3, [r2, 0x2c] | r3 = *((r2 + 0x2c));
0x0006c6cc adds r6, r3, 1 | r6 = r3 + 1;
0x0006c6ce str r6, [r2, 0x2c] | *((r2 + 0x2c)) = r6;
0x0006c6d0 b 0x6c1c2 | goto label_31;
| label_132:
0x0006c6d2 ldr r3, [pc, 0x250] |
0x0006c6d4 add r3, pc | r3 = 0xd8ffe;
0x0006c6d6 adds r3, 4 | r3 += 4;
0x0006c6d8 b 0x6c2bc | goto label_32;
| label_130:
0x0006c6da ldr r5, [sp, 0x30] | r5 = var_30h;
0x0006c6dc mov r2, r3 | r2 = r3;
0x0006c6de str r1, [sp] | *(sp) = r1;
0x0006c6e0 adds r3, r4, 1 | r3 = r4 + 1;
0x0006c6e2 movs r1, 5 | r1 = 5;
0x0006c6e4 mov r0, r5 | r0 = r5;
0x0006c6e6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006c6ea ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x0006c6ec cmp r2, 0 |
| if (r2 <= 0) {
0x0006c6ee ble.w 0x6c29c | goto label_33;
| }
0x0006c6f2 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x0006c6f4 add.w r1, r2, r2, lsl 2 | r1 = r2 + (r2 << 2);
0x0006c6f8 add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
0x0006c6fc movs r1, 3 | r1 = 3;
0x0006c6fe strh r1, [r3, -0x12] | *((r3 - 0x12)) = r1;
0x0006c702 b 0x6c29c | goto label_33;
| label_134:
0x0006c704 ldr r3, [pc, 0x220] |
0x0006c706 add r3, pc | r3 = 0xd9032;
0x0006c708 adds r3, 4 | r3 += 4;
0x0006c70a b 0x6c2f4 | goto label_34;
| label_123:
0x0006c70c ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0006c70e ldrsh.w r3, [r3, 0x2a] | r3 = *((r3 + 0x2a));
0x0006c712 cmp r3, 0x3f |
| if (r3 <= 0x3f) {
0x0006c714 ble.w 0x6c0b4 | goto label_35;
| }
0x0006c718 ldr r7, [pc, 0x210] |
0x0006c71a add.w r4, r0, r8, lsl 1 | r4 = r0 + (r8 << 1);
0x0006c71e ldr.w lr, [sp, 0x4c] | lr = var_4ch;
0x0006c722 add.w r2, r1, r8, lsl 2 | r2 = r1 + (r8 << 2);
0x0006c726 sub.w ip, r8, 0x3e |
0x0006c72a add r7, pc |
0x0006c72c movs r3, 0x3f | r3 = 0x3f;
0x0006c72e add.w r7, r7, 0x358 | r7 = 0xd93b2;
| do {
0x0006c732 strh r3, [r4], 2 | *(r4) = r3;
| r4 += 2;
0x0006c736 add.w r8, ip, r3 | r8 = ip + r3;
0x0006c73a ldrsh.w r6, [lr, 0x2a] | r6 = *((lr + 0x2a));
0x0006c73e adds r3, 1 | r3++;
0x0006c740 str r7, [r2], 4 | *(r2) = r7;
| r2 += 4;
0x0006c744 cmp r3, r6 |
0x0006c746 blt 0x6c732 |
| } while (r3 < r6);
0x0006c748 lsl.w r7, r8, 1 | r7 = r8 << 1;
0x0006c74c lsl.w r6, r8, 2 | r6 = r8 << 2;
0x0006c750 b 0x6c0b4 | goto label_35;
| label_107:
0x0006c752 lsls r0, r1, 0x15 | r0 = r1 << 0x15;
| if (r0 < r1) {
0x0006c754 bmi.w 0x6ccc8 | goto label_143;
| }
0x0006c758 ldr r2, [r6, 0x38] | r2 = *((r6 + 0x38));
0x0006c75a str r2, [sp, 0x18] | var_18h = r2;
0x0006c75c cmp r2, 0 |
| if (r2 != 0) {
0x0006c75e bne.w 0x6bcd4 | goto label_36;
| }
0x0006c762 lsls r2, r1, 0x19 | r2 = r1 << 0x19;
| if (r2 < r1) {
0x0006c764 bmi 0x6c7cc | goto label_144;
| }
0x0006c766 ldr r2, [sp, 0x48] | r2 = var_48h;
| if (r2 != 0) {
0x0006c768 cbnz r2, 0x6c7cc | goto label_144;
| }
0x0006c76a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006c76c add.w r3, fp, r7 | r3 = fp + r7;
0x0006c770 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0006c772 ldrb.w r2, [r0, 0x2e] | r2 = *((r0 + 0x2e));
0x0006c776 add.w r3, r1, r3, lsl 3 | r3 = r1 + (r3 << 3);
0x0006c77a ldr r1, [r3, 0x30] | r1 = *((r3 + 0x30));
0x0006c77c movs r3, 0x62 | r3 = 0x62;
| if (r2 != 0) {
0x0006c77e cbz r2, 0x6c784 |
0x0006c780 movs r3, 0x63 | r3 = 0x63;
0x0006c782 str r1, [r0, 0x14] | *((r0 + 0x14)) = r1;
| }
0x0006c784 str r3, [sp] | *(sp) = r3;
0x0006c786 mov r2, r4 | r2 = r4;
0x0006c788 mov r3, r6 | r3 = r6;
0x0006c78a mov r0, sl | r0 = sl;
0x0006c78c bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x0006c790 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006c792 ldrb.w r3, [r3, 0x2e] | r3 = *((r3 + 0x2e));
| if (r3 == 0) {
0x0006c796 cbnz r3, 0x6c7aa |
0x0006c798 ldrsh.w r3, [r6, 0x2a] | r3 = *((r6 + 0x2a));
0x0006c79c cmp r3, 0x3f |
| if (r3 > 0x3f) {
0x0006c79e bgt 0x6c7aa | goto label_80;
| }
0x0006c7a0 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x0006c7a2 tst.w r3, 0xe0 |
| if ((r3 & 0xe0) == 0) {
0x0006c7a6 beq.w 0x6cefe | goto label_145;
| }
| }
| label_80:
0x0006c7aa ldr r2, [sp, 0x58] | r2 = var_58h;
0x0006c7ac ldr.w r1, [r8, 0x24] | r1 = *((r8 + 0x24));
0x0006c7b0 ldr r3, [r2, 0x6c] | r3 = *((r2 + 0x6c));
0x0006c7b2 cmp r3, 0 |
| if (r3 <= 0) {
0x0006c7b4 ble.w 0x6bcd4 | goto label_36;
| }
0x0006c7b8 ldr r2, [r2, 0x68] | r2 = *((r2 + 0x68));
0x0006c7ba add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006c7be add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0006c7c2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006c7c4 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
0x0006c7c8 b.w 0x6bcd4 | goto label_36;
| label_144:
0x0006c7cc cmp r4, 1 |
0x0006c7ce ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x0006c7d0 ldr r0, [r6] | r0 = *(r6);
| if (r4 == 1) {
0x0006c7d2 beq.w 0x6ce72 | goto label_146;
| }
0x0006c7d6 ldr.w r3, [sl] | r3 = *(sl);
0x0006c7da ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0006c7dc add.w r3, r3, r4, lsl 4 | r3 += (r4 << 4);
0x0006c7e0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0006c7e2 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
0x0006c7e4 cmp r3, 0 |
| if (r3 == 0) {
0x0006c7e6 beq.w 0x6bcd4 | goto label_36;
| }
0x0006c7ea mov r1, r4 | r1 = r4;
0x0006c7ec str r0, [sp] | *(sp) = r0;
0x0006c7ee movs r3, 0 | r3 = 0;
0x0006c7f0 mov r0, sl | r0 = sl;
0x0006c7f2 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
0x0006c7f6 ldr.w r1, [r8, 0x24] | r1 = *((r8 + 0x24));
0x0006c7fa b.w 0x6bcd4 | goto label_36;
| label_109:
0x0006c7fe ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006c800 add.w r3, fp, r7 | r3 = fp + r7;
0x0006c804 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x0006c808 ldr r2, [sp, 0xf8] | r2 = *(arg_f8h);
0x0006c80a ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0006c80c ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0006c80e cmp r3, 0 |
0x0006c810 it ne |
| if (r3 != 0) {
0x0006c812 cmpne r6, r3 | __asm ("cmpne r6, r3");
| }
| if (r3 == 0) {
0x0006c814 beq 0x6c822 | goto label_147;
| }
| do {
0x0006c816 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0006c818 adds r2, 1 | r2++;
0x0006c81a cmp r3, 0 |
0x0006c81c it ne |
| if (r3 != 0) {
0x0006c81e cmpne r6, r3 | __asm ("cmpne r6, r3");
| }
0x0006c820 bne 0x6c816 |
| } while (r3 != 0);
| label_147:
0x0006c822 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006c824 movs r1, 0x63 | r1 = 0x63;
0x0006c826 str r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
0x0006c828 b.w 0x6bd2e | goto label_37;
| label_113:
0x0006c82c movs r3, 0 | r3 = 0;
0x0006c82e ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006c830 mov r2, r3 | r2 = r3;
0x0006c832 str r3, [sp] | *(sp) = r3;
0x0006c834 movs r1, 0x11 | r1 = 0x11;
0x0006c836 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006c83a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006c83c str r0, [sp, 0x5c] | var_5ch = r0;
0x0006c83e ldr r5, [r3, 0x48] | r5 = *((r3 + 0x48));
0x0006c840 b.w 0x6be12 | goto label_38;
| label_131:
0x0006c844 ldr r2, [pc, 0xe8] |
0x0006c846 add r2, pc | r2 = 0xd917a;
0x0006c848 adds r2, 4 | r2 += 4;
0x0006c84a b 0x6c266 | goto label_39;
| label_91:
0x0006c84c ldrh.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x0006c850 lsls r1, r3, 0x1a | r1 = r3 << 0x1a;
| if (r1 < r3) {
0x0006c852 bmi.w 0x6b9e4 | goto label_40;
| }
0x0006c856 ldr r4, [r7, 0x18] | r4 = *((r7 + 0x18));
0x0006c858 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0006c85a cmp r3, 0 |
| if (r3 != 0) {
0x0006c85c bne.w 0x6b9e4 | goto label_40;
| }
0x0006c860 ldrb.w r3, [r7, 0x2d] | r3 = *((r7 + 0x2d));
0x0006c864 ands r3, r3, 2 | r3 &= 2;
| if (r3 != r3) {
0x0006c868 bne.w 0x6b9e4 | goto label_40;
| }
0x0006c86c ldr r5, [r7, 0x30] | r5 = *((r7 + 0x30));
0x0006c86e add.w r8, fp, 0x50 | r8 += arg_50h;
0x0006c872 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x0006c876 mov.w r2, -1 | r2 = -1;
0x0006c87a str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
0x0006c87c mov r0, r8 | r0 = r8;
0x0006c87e strh r3, [r6, 0x2a] | *((r6 + 0x2a)) = r3;
0x0006c880 mov r1, r5 | r1 = r5;
0x0006c882 str r3, [sp, 0xc] | var_ch = r3;
0x0006c884 movs r3, 0x82 | r3 = 0x82;
0x0006c886 vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x0006c88a str r3, [sp, 8] | var_8h = r3;
0x0006c88c bl 0x37414 | r0 = fcn_00037414 (r0, r1, r2, r3, r4, r5);
0x0006c890 cmp r0, 0 |
| if (r0 == 0) {
0x0006c892 beq.w 0x6cdd2 | goto label_148;
| }
0x0006c896 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006c898 movw r1, 0x1101 | r1 = 0x1101;
0x0006c89c ldr r2, [r6, 0x30] | r2 = *((r6 + 0x30));
0x0006c89e str r1, [r6, 0x24] | *((r6 + 0x24)) = r1;
0x0006c8a0 str r0, [r2] | *(r2) = r0;
0x0006c8a2 strh r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0006c8a4 strh r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x0006c8a6 movs r3, 0x21 | r3 = 0x21;
0x0006c8a8 strh r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
| label_72:
0x0006c8aa ldr.w r3, [fp, 8] | r3 = *(arg_f0h);
0x0006c8ae movs r2, 1 | r2 = 1;
0x0006c8b0 movs r0, 1 | r0 = 1;
0x0006c8b2 movs r1, 0 | r1 = 0;
0x0006c8b4 strh r2, [r6, 0x16] | *((r6 + 0x16)) = r2;
0x0006c8b6 str.w r6, [fp, 0x338] | __asm ("str.w r6, [arg_338h]");
0x0006c8ba strd r0, r1, [r6, 8] | __asm ("strd r0, r1, [r6, 8]");
0x0006c8be str.w r5, [fp, 0x2f4] | __asm ("str.w r5, [arg_2f4h]");
0x0006c8c2 strh.w r2, [fp, 0x32] | *(arg_32h) = r2;
| if (r3 != 0) {
0x0006c8c6 cbz r3, 0x6c8ce |
0x0006c8c8 ldr r3, [r3] | r3 = *(r3);
0x0006c8ca strb.w r3, [fp, 0x2d] | *(arg_2dh) = r3;
| }
0x0006c8ce ldrh.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x0006c8d2 lsls r3, r3, 0x17 | r3 <<= 0x17;
0x0006c8d4 itt mi |
| if (r3 >= r3) {
0x0006c8d6 movmi r3, 1 | r3 = 1;
| }
| if (r3 >= r3) {
0x0006c8d8 strbmi r3, [fp, 0x2f] | *(arg_2fh) = r3;
| }
0x0006c8dc b.w 0x6bbf4 | goto label_41;
| label_90:
0x0006c8e0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006c8e2 ldr r3, [r3] | r3 = *(r3);
0x0006c8e4 cmp r3, 1 |
| if (r3 != 1) {
0x0006c8e6 bne.w 0x6ca90 | goto label_149;
| }
0x0006c8ea ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006c8ec ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006c8ee ldr r4, [r0] | r4 = *(r0);
0x0006c8f0 ldr.w sb, [r3, 0x30] | sb = *((r3 + 0x30));
0x0006c8f4 ldr r5, [r3, 0x18] | r5 = *((r3 + 0x18));
0x0006c8f6 cmp r4, 0 |
| if (r4 <= 0) {
0x0006c8f8 ble 0x6c962 | goto label_150;
| }
0x0006c8fa movs r2, 0 | r2 = 0;
| label_42:
0x0006c8fc ldr r3, [r0, 8] | r3 = *((r0 + 8));
| if (r3 != 0) {
0x0006c8fe cbnz r3, 0x6c940 | goto label_151;
| }
0x0006c900 b 0x6c95a | goto label_50;
| do {
0x0006c934 lsls r6, r1, 0xd | r6 = r1 << 0xd;
0x0006c936 itet mi |
| if (r6 >= r1) {
0x0006c938 ldrmi r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r6 < r1) {
0x0006c93a ldrpl r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| }
| if (r6 >= r1) {
0x0006c93c ldrmi r3, [r3, 8] | r3 = *((r3 + 8));
| }
| if (r3 == 0) {
0x0006c93e cbz r3, 0x6c95a | goto label_50;
| }
| label_151:
0x0006c940 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0006c942 tst.w r1, 0x41000 |
0x0006c946 bne 0x6c934 |
| } while ((r1 & 0x41000) != 0);
0x0006c948 ldrb r1, [r3] | r1 = *(r3);
0x0006c94a adds r1, 0x5a | r1 += 0x5a;
0x0006c94c tst.w r1, 0xfd |
| if ((r1 & 0xfd) == 0) {
0x0006c950 bne 0x6c95a |
0x0006c952 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x0006c954 cmp sb, r1 |
| if (sb == r1) {
0x0006c956 beq.w 0x6ca7c | goto label_152;
| }
| }
| label_50:
0x0006c95a adds r2, 1 | r2++;
0x0006c95c adds r0, 0x10 | r0 += 0x10;
0x0006c95e cmp r2, r4 |
| if (r2 != r4) {
0x0006c960 bne 0x6c8fc | goto label_42;
| }
| label_150:
0x0006c962 ldr r6, [r5, 8] | r6 = *((r5 + 8));
0x0006c964 cmp r6, 0 |
| if (r6 == 0) {
0x0006c966 beq.w 0x6ca90 | goto label_149;
| }
0x0006c96a ldr.w r3, [pc, 0x5d4] | r3 = *(0x0006cf40);
0x0006c96e str.w sl, [sp, 0x18] | __asm ("str.w sl, [var_18h]");
0x0006c972 add r3, pc | r3 += pc;
0x0006c974 mov r8, r3 | r8 = r3;
0x0006c976 b 0x6c980 |
| while (r3 == 0) {
| label_43:
0x0006c978 ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x0006c97a cmp r6, 0 |
| if (r6 == 0) {
0x0006c97c beq.w 0x6ca8c | goto label_153;
| }
0x0006c980 ldrb.w r3, [r6, 0x36] | r3 = *((r6 + 0x36));
0x0006c984 cmp r3, 0 |
0x0006c986 beq 0x6c978 |
| }
0x0006c988 ldr r7, [r6, 0x24] | r7 = *((r6 + 0x24));
0x0006c98a cmp r7, 0 |
| if (r7 != 0) {
0x0006c98c bne 0x6c978 | goto label_43;
| }
0x0006c98e ldrh r3, [r6, 0x32] | r3 = *((r6 + 0x32));
| if (r3 != 0) {
0x0006c990 cbnz r3, 0x6c99c | goto label_154;
| }
0x0006c992 b 0x6ca14 | goto label_155;
| do {
| label_49:
0x0006c994 ldrh r3, [r6, 0x32] | r3 = *((r6 + 0x32));
0x0006c996 adds r7, 1 | r7++;
0x0006c998 cmp r7, r3 |
| if (r7 >= r3) {
0x0006c99a bge 0x6ca10 | goto label_156;
| }
| label_154:
0x0006c99c vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x0006c9a0 movs r3, 2 | r3 = 2;
0x0006c9a2 mov r2, r7 | r2 = r7;
0x0006c9a4 mov r1, sb | r1 = sb;
0x0006c9a6 mov r0, fp | r0 = fp;
0x0006c9a8 str r6, [sp, 0xc] | var_ch = r6;
0x0006c9aa vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0006c9ae str r3, [sp, 8] | var_8h = r3;
0x0006c9b0 bl 0x37414 | r0 = fcn_00037414 (r0, r1, r2, r3, r4, r5);
0x0006c9b4 cmp r0, 0 |
0x0006c9b6 bne 0x6c994 |
| } while (r0 != 0);
0x0006c9b8 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0006c9ba ldr.w r2, [r3, r7, lsl 2] | offset_4 = r7 << 2;
| r2 = *((r3 + offset_4));
0x0006c9be ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006c9c0 ldr.w ip, [r3] | ip = *(r3);
0x0006c9c4 cmp.w ip, 0 |
| if (ip <= 0) {
0x0006c9c8 ble 0x6ca0e | goto label_48;
| }
0x0006c9ca ldr r5, [sp, 0x30] | r5 = var_30h;
0x0006c9cc lsl.w sl, r7, 1 | sl = r7 << 1;
0x0006c9d0 mov r4, r0 | r4 = r0;
| label_44:
0x0006c9d2 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0006c9d4 mov r3, r1 | r3 = r1;
| if (r1 != 0) {
0x0006c9d6 cbnz r1, 0x6c9e6 | goto label_157;
| }
0x0006c9d8 b 0x6ca06 | goto label_46;
| do {
0x0006c9da lsls r0, r0, 0xd | r0 <<= 0xd;
0x0006c9dc itet mi |
| if (r0 >= r0) {
0x0006c9de ldrmi r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r0 < r0) {
0x0006c9e0 ldrpl r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| }
| if (r0 >= r0) {
0x0006c9e2 ldrmi r3, [r3, 8] | r3 = *((r3 + 8));
| }
| if (r3 == 0) {
0x0006c9e4 cbz r3, 0x6ca06 | goto label_46;
| }
| label_157:
0x0006c9e6 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0006c9e8 tst.w r0, 0x41000 |
0x0006c9ec bne 0x6c9da |
| } while ((r0 & 0x41000) != 0);
0x0006c9ee ldrb r0, [r3] | r0 = *(r3);
0x0006c9f0 adds r0, 0x5a | r0 += 0x5a;
0x0006c9f2 tst.w r0, 0xfd |
| if ((r0 & 0xfd) == 0) {
0x0006c9f6 bne 0x6ca06 |
0x0006c9f8 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0006c9fa ldrsh.w lr, [r3, 0x20] |
0x0006c9fe ldrsh.w r0, [r0, sl] | r0 = *((r0 + sl));
0x0006ca02 cmp lr, r0 |
| if (lr == r0) {
0x0006ca04 beq 0x6ca24 | goto label_158;
| }
| }
| label_46:
0x0006ca06 adds r4, 1 | r4++;
0x0006ca08 adds r5, 0x10 | r5 += 0x10;
0x0006ca0a cmp r4, ip |
| if (r4 < ip) {
0x0006ca0c blt 0x6c9d2 | goto label_44;
| }
| label_48:
0x0006ca0e ldrh r3, [r6, 0x32] | r3 = *((r6 + 0x32));
| label_156:
0x0006ca10 cmp r3, r7 |
| if (r3 != r7) {
0x0006ca12 bne 0x6c978 | goto label_43;
| }
| label_155:
0x0006ca14 ldr.w sl, [sp, 0x18] | sl = var_18h;
| label_51:
0x0006ca18 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006ca1a movs r3, 1 | r3 = 1;
0x0006ca1c strb.w r3, [r2, 0x2f] | *((r2 + 0x2f)) = r3;
0x0006ca20 b.w 0x6b9d2 | goto label_45;
| label_158:
0x0006ca24 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0006ca26 cmp sb, r3 |
| if (sb != r3) {
0x0006ca28 bne 0x6ca06 | goto label_46;
| }
0x0006ca2a ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006ca2c str r2, [sp, 0x1c] | var_1ch = r2;
0x0006ca2e bl 0x2d47c | fcn_0002d47c (r0, r1);
0x0006ca32 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006ca34 cmp r0, 0 |
| if (r0 == 0) {
0x0006ca36 beq.w 0x6ccb8 | goto label_159;
| }
| label_62:
0x0006ca3a ldr r0, [r0] | r0 = *(r0);
0x0006ca3c add.w ip, r2, -1 |
0x0006ca40 subs r0, 1 | r0--;
| do {
| label_47:
0x0006ca42 ldrb r3, [r0, 1]! | r3 = *((r0 += 1));
0x0006ca46 ldrb r1, [ip, 1]! | r1 = *((ip += 1));
0x0006ca4a cmp r3, r1 |
| if (r3 == r1) {
0x0006ca4c beq 0x6ca66 | goto label_160;
| }
0x0006ca4e add r3, r8 | r3 += r8;
0x0006ca50 add r1, r8 | r1 += r8;
0x0006ca52 ldrb.w lr, [r3, 0x140] |
0x0006ca56 ldrb.w r3, [r1, 0x140] | r3 = *((r1 + 0x140));
0x0006ca5a cmp lr, r3 |
0x0006ca5c beq 0x6ca42 |
| } while (lr == r3);
0x0006ca5e ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006ca60 ldr.w ip, [r3] | ip = *(r3);
0x0006ca64 b 0x6ca06 | goto label_46;
| label_160:
0x0006ca66 cmp r3, 0 |
| if (r3 != 0) {
0x0006ca68 bne 0x6ca42 | goto label_47;
| }
0x0006ca6a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0006ca6c ldrsh.w r3, [r3, sl] | r3 = *((r3 + sl));
0x0006ca70 cmp r3, 0 |
| if (r3 >= 0) {
0x0006ca72 bge.w 0x6cd7a | goto label_161;
| }
0x0006ca76 adds r3, 1 | r3++;
| if (r3 != 1) {
0x0006ca78 bne 0x6ca0e | goto label_48;
| }
0x0006ca7a b 0x6c994 | goto label_49;
| label_152:
0x0006ca7c ldrsh.w r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0006ca80 cmp r3, 0 |
| if (r3 >= 0) {
0x0006ca82 bge.w 0x6c95a | goto label_50;
| }
0x0006ca86 b 0x6ca18 | goto label_51;
| label_141:
0x0006ca88 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0006ca8a b 0x6c676 | goto label_52;
| label_153:
0x0006ca8c ldr.w sl, [sp, 0x18] | sl = var_18h;
| label_149:
0x0006ca90 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006ca92 cmp r3, 0 |
| if (r3 != 0) {
0x0006ca94 bne.w 0x6b9d2 | goto label_45;
| }
0x0006ca98 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006ca9a ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006ca9c str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0006ca9e ldrh r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x0006caa0 orr r3, r3, 0x80 | r3 |= 0x80;
0x0006caa4 strh r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x0006caa6 b.w 0x6b9d2 | goto label_45;
| label_111:
0x0006caaa bl 0x53ee0 | fcn_00053ee0 (r0, r1, r2, r3);
0x0006caae b.w 0x6bd82 | goto label_53;
| label_129:
0x0006cab2 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0006cab4 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0006cab8 b.w 0x6c21e | goto label_54;
| label_120:
0x0006cabc mov.w r8, 0 | r8 = 0;
0x0006cac0 mov r6, r8 | r6 = r8;
0x0006cac2 mov r7, r8 | r7 = r8;
0x0006cac4 b.w 0x6c056 | goto label_55;
| label_102:
0x0006cac8 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0006caca lsls r6, r2, 0x15 | r6 = r2 << 0x15;
| if (r6 < r2) {
0x0006cacc bmi.w 0x6bc2a | goto label_56;
| }
0x0006cad0 ldr r2, [r3, 0x4c] | r2 = *((r3 + 0x4c));
0x0006cad2 lsls r5, r2, 0x17 | r5 = r2 << 0x17;
| if (r5 < r2) {
0x0006cad4 bmi.w 0x6bc2a | goto label_56;
| }
0x0006cad8 ldr r6, [r1] | r6 = *(r1);
0x0006cada mov r4, r1 | r4 = r1;
0x0006cadc ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006cade cmp r6, 0 |
0x0006cae0 add.w r7, r3, 0x1e8 | r7 = r3 + 0x1e8;
| if (r6 <= 0) {
0x0006cae4 ble.w 0x6cec4 | goto label_162;
| }
0x0006cae8 mov r5, fp | r5 = fp;
0x0006caea mov sb, fp | sb = fp;
0x0006caec mov r8, fp | r8 = fp;
| do {
0x0006caee ldr r1, [r4, 8] | r1 = *((r4 + 8));
| if (r1 != 0) {
0x0006caf0 cbz r1, 0x6cb00 |
0x0006caf2 mov r0, r7 | r0 = r7;
0x0006caf4 bl 0x29998 | r0 = fcn_00029998 (r0, r1);
0x0006caf8 orr.w sb, r0, sb | sb = r0 | sb;
0x0006cafc orr.w r8, r1, r8 | r8 = r1 | r8;
| }
0x0006cb00 adds r5, 1 | r5++;
0x0006cb02 adds r4, 0x10 | r4 += 0x10;
0x0006cb04 cmp r6, r5 |
0x0006cb06 bne 0x6caee |
| } while (r6 != r5);
| label_76:
0x0006cb08 ldr r3, [sp, 0x8c] | r3 = var_8ch;
| if (r3 == 0) {
0x0006cb0a cbz r3, 0x6cb4e | goto label_163;
| }
0x0006cb0c ldr r2, [r3] | r2 = *(r3);
0x0006cb0e cmp r2, 0 |
| if (r2 <= 0) {
0x0006cb10 ble.w 0x6cf38 | goto label_164;
| }
0x0006cb14 movs r5, 0 | r5 = 0;
0x0006cb16 str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
0x0006cb1a str.w r8, [sp, 0x20] | __asm ("str.w r8, [var_20h]");
0x0006cb1e mov r6, r5 | r6 = r5;
0x0006cb20 mov r8, r7 | r8 = r7;
0x0006cb22 mov sb, r2 | sb = r2;
0x0006cb24 mov r7, r5 | r7 = r5;
0x0006cb26 mov r4, r3 | r4 = r3;
| do {
0x0006cb28 ldr r1, [r4, 8] | r1 = *((r4 + 8));
| if (r1 != 0) {
0x0006cb2a cbz r1, 0x6cb36 |
0x0006cb2c mov r0, r8 | r0 = r8;
0x0006cb2e bl 0x29998 | r0 = fcn_00029998 (r0, r1);
0x0006cb32 orrs r6, r0 | r6 |= r0;
0x0006cb34 orrs r7, r1 | r7 |= r1;
| }
0x0006cb36 adds r5, 1 | r5++;
0x0006cb38 adds r4, 0x10 | r4 += 0x10;
0x0006cb3a cmp r5, sb |
0x0006cb3c bne 0x6cb28 |
| } while (r5 != sb);
0x0006cb3e ldrd sb, r8, [sp, 0x1c] | __asm ("ldrd sb, r8, [var_20h]");
0x0006cb42 mov r4, r6 | r4 = r6;
0x0006cb44 mov r6, r7 | r6 = r7;
| label_81:
0x0006cb46 orr.w sb, r4, sb | sb = r4 | sb;
0x0006cb4a orr.w r8, r6, r8 | r8 = r6 | r8;
| label_163:
0x0006cb4e ldr r1, [sp, 0x18] | r1 = var_18h;
0x0006cb50 movs r0, 0x58 | r0 = 0x58;
0x0006cb52 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006cb54 mov.w r3, -1 | r3 = -1;
0x0006cb58 str r3, [sp, 0x1c] | var_1ch = r3;
0x0006cb5a str r3, [sp, 0x40] | var_40h = r3;
0x0006cb5c mla r2, r0, r1, r2 | __asm ("mla r2, r0, r1, r2");
0x0006cb60 add r1, r3 | r1 += r3;
0x0006cb62 str r1, [sp, 0x18] | var_18h = r1;
0x0006cb64 add.w ip, r2, 0x2f0 |
0x0006cb68 mov r1, ip | r1 = ip;
0x0006cb6a b 0x6cb7c | goto label_165;
| label_58:
0x0006cb6c sub.w r3, r1, 0x58 | r3 = r1 - 0x58;
| label_59:
0x0006cb70 mov r1, r3 | r1 = r3;
0x0006cb72 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006cb74 subs r3, 1 | r3--;
0x0006cb76 str r3, [sp, 0x18] | var_18h = r3;
| if (r3 == 1) {
0x0006cb78 beq.w 0x6bc32 | goto label_57;
| }
| label_165:
0x0006cb7c ldr r2, [r1, -0x10] | r2 = *((r1 - 0x10));
0x0006cb80 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006cb82 ldrb r6, [r2, 0x10] | r6 = *((r2 + 0x10));
0x0006cb84 ldr r7, [r3, 4] | r7 = *((r3 + 4));
0x0006cb86 lsls r0, r6, 3 | r0 = r6 << 3;
0x0006cb88 adds r3, r0, r6 | r3 = r0 + r6;
0x0006cb8a add.w r3, r7, r3, lsl 3 | r3 = r7 + (r3 << 3);
0x0006cb8e ldrb.w r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x0006cb92 lsls r4, r3, 0x1c | r4 = r3 << 0x1c;
| if (r4 >= r3) {
0x0006cb94 bpl 0x6cb6c | goto label_58;
| }
0x0006cb96 ldr r3, [sp, 0x50] | r3 = var_50h;
| if (r3 != 0) {
0x0006cb98 cbnz r3, 0x6cba0 | goto label_166;
| }
0x0006cb9a ldr r3, [r2, 0x24] | r3 = *((r2 + 0x24));
0x0006cb9c lsls r3, r3, 0x13 | r3 <<= 0x13;
| if (r3 >= r3) {
0x0006cb9e bpl 0x6cb6c | goto label_58;
| }
| label_166:
0x0006cba0 ldrd r5, r4, [r2, 8] | __asm ("ldrd r5, r4, [r2, 8]");
0x0006cba4 and.w r2, r5, sb | r2 = r5 & sb;
0x0006cba8 and.w r3, r4, r8 | r3 = r4 & r8;
0x0006cbac orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x0006cbae bne 0x6cb6c | goto label_58;
| }
0x0006cbb0 ldr r2, [sp, 0x88] | r2 = var_88h;
0x0006cbb2 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x0006cbb4 ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x0006cbb6 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0006cbba add.w r3, r2, r3, lsl 4 | r3 = r2 + (r3 << 4);
0x0006cbbe cmp r2, r3 |
| if (r2 >= r3) {
0x0006cbc0 bhs.w 0x6ceca | goto label_167;
| }
0x0006cbc4 add r0, r6 | r0 += r6;
0x0006cbc6 mov r6, r2 | r6 = r2;
0x0006cbc8 add.w r7, r7, r0, lsl 3 | r7 += (r0 << 3);
0x0006cbcc mov lr, r7 | lr = r7;
| do {
0x0006cbce ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0006cbd0 ldr r7, [r6, 0x2c] | r7 = *((r6 + 0x2c));
0x0006cbd2 ands r0, r5 | r0 &= r5;
0x0006cbd4 and.w ip, r4, r7 |
0x0006cbd8 orrs.w r0, r0, ip | r0 |= ip;
| if (r0 != r0) {
0x0006cbdc beq 0x6cbf4 |
0x0006cbde ldr r0, [r6] | r0 = *(r6);
0x0006cbe0 ldr r7, [r0, 4] | r7 = *((r0 + 4));
0x0006cbe2 lsls r7, r7, 0x1f | r7 <<= 0x1f;
| if (r7 >= r7) {
0x0006cbe4 bpl.w 0x6cdca | goto label_168;
| }
0x0006cbe8 ldr r0, [r0, 0x24] | r0 = *((r0 + 0x24));
0x0006cbea ldr.w r7, [lr, 0x30] | r7 = *((lr + 0x30));
0x0006cbee cmp r0, r7 |
| if (r0 != r7) {
0x0006cbf0 bne.w 0x6cdca | goto label_168;
| }
| }
0x0006cbf4 adds r6, 0x30 | r6 += 0x30;
0x0006cbf6 cmp r3, r6 |
0x0006cbf8 bhi 0x6cbce |
| } while (r3 > r6);
| label_70:
0x0006cbfa ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006cbfc bic.w r0, r0, r5 | r0 = BIT_MASK (r0, r5);
0x0006cc00 str r0, [sp, 0x1c] | var_1ch = r0;
0x0006cc02 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0006cc04 bic.w r0, r0, r4 | r0 = BIT_MASK (r0, r4);
0x0006cc08 str r0, [sp, 0x40] | var_40h = r0;
| do {
0x0006cc0a ldr r0, [r2, 0x28] | r0 = *((r2 + 0x28));
0x0006cc0c adds r2, 0x30 | r2 += 0x30;
0x0006cc0e ldr r6, [r2, -0x4] | r6 = *((r2 - 0x4));
0x0006cc12 ands r0, r5 | r0 &= r5;
0x0006cc14 ands r6, r4 | r6 &= r4;
0x0006cc16 orrs r0, r6 | r0 |= r6;
0x0006cc18 ittt ne |
| if (r0 != r6) {
0x0006cc1a ldrhne r0, [r2, -0x26] | __asm ("ldrhne r0, [r2, -0x26]");
| }
| if (r0 == r6) {
0x0006cc1e orrne r0, r0, 4 | r0 |= 4;
| }
| if (r0 != r6) {
0x0006cc22 strh r0, [r2, -0x26] | *((r2 - 0x26)) = r0;
| }
0x0006cc26 cmp r3, r2 |
0x0006cc28 bhi 0x6cc0a |
| } while (r3 > r2);
| label_77:
0x0006cc2a ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006cc2c ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006cc2e ldrb.w r2, [r3, 0x2c] | r2 = *((r3 + 0x2c));
0x0006cc32 subs r3, r2, 1 | r3 = r2 - 1;
0x0006cc34 cmp r3, r0 |
0x0006cc36 it eq |
| if (r3 != r0) {
0x0006cc38 subeq r3, r1, 0x58 | r3 = r1 - 0x58;
| }
| if (r3 != r0) {
0x0006cc3c beq 0x6cc5a |
0x0006cc3e ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006cc40 subs r3, r3, r2 | r3 -= r2;
0x0006cc42 movs r2, 0x58 | r2 = 0x58;
0x0006cc44 mul r2, r2, r3 | r2 *= r3;
0x0006cc48 sub.w r3, r1, 0x58 | r3 = r1 - 0x58;
0x0006cc4c mov r0, r3 | r0 = r3;
0x0006cc4e blx 0x7d44 | fcn_00007d44 ();
0x0006cc52 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006cc54 mov r3, r0 | r3 = r0;
0x0006cc56 ldrb.w r2, [r2, 0x2c] | r2 = *((r2 + 0x2c));
| }
0x0006cc5a ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0006cc5c subs r2, 1 | r2--;
0x0006cc5e subs r1, 1 | r1--;
0x0006cc60 str r1, [sp, 0x3c] | var_3ch = r1;
0x0006cc62 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0006cc64 strb.w r2, [r1, 0x2c] | *((r1 + 0x2c)) = r2;
0x0006cc68 b 0x6cb70 | goto label_59;
| label_82:
0x0006cc6a ldr r1, [pc, 0x2d8] |
0x0006cc6c movs r3, 0 | r3 = 0;
0x0006cc6e movs r2, 0x40 | r2 = 0x40;
0x0006cc70 mov r0, sl | r0 = sl;
0x0006cc72 str r3, [sp, 0x10] | var_10h = r3;
0x0006cc74 add r1, pc | r1 = 0xd9bbe;
0x0006cc76 bl 0x25778 | fcn_00025778 (r0);
0x0006cc7a b.w 0x6bb6c | goto label_8;
| label_142:
0x0006cc7e ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006cc80 movs r1, 0x25 | r1 = 0x25;
0x0006cc82 str r3, [sp] | *(sp) = r3;
0x0006cc84 str r3, [sp, 0x24] | var_24h = r3;
0x0006cc86 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006cc8a mov r4, r0 | r4 = r0;
0x0006cc8c b.w 0x6c188 | goto label_60;
| label_126:
0x0006cc90 movs r3, 0 | r3 = 0;
0x0006cc92 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006cc94 mov r2, r6 | r2 = r6;
0x0006cc96 movs r1, 0xe | r1 = 0xe;
0x0006cc98 str r3, [sp] | *(sp) = r3;
0x0006cc9a bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006cc9e mov r4, r0 | r4 = r0;
0x0006cca0 b.w 0x6c188 | goto label_60;
| label_125:
0x0006cca4 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0006cca6 mov r3, r4 | r3 = r4;
0x0006cca8 mov r2, r4 | r2 = r4;
0x0006ccaa movs r1, 0x45 | r1 = 0x45;
0x0006ccac str r4, [sp] | *(sp) = r4;
0x0006ccae bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006ccb2 str r0, [sp, 0x24] | var_24h = r0;
0x0006ccb4 b.w 0x6c144 | goto label_61;
| label_159:
0x0006ccb8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006ccba ldr r3, [r3] | r3 = *(r3);
0x0006ccbc ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0006ccbe b 0x6ca3a | goto label_62;
| label_108:
0x0006ccc0 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0006ccc2 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0006ccc4 b.w 0x6bd5c | goto label_63;
| label_143:
0x0006ccc8 ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x0006ccca ldr r1, [sp, 0x38] | r1 = var_38h;
| if (r3 != 0) {
0x0006cccc cbnz r3, 0x6ccd4 | goto label_169;
| }
0x0006ccce b 0x6ccda | goto label_170;
| do {
0x0006ccd0 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
| if (r3 == 0) {
0x0006ccd2 cbz r3, 0x6ccda | goto label_170;
| }
| label_169:
0x0006ccd4 ldr r2, [r3] | r2 = *(r3);
0x0006ccd6 cmp r1, r2 |
0x0006ccd8 bne 0x6ccd0 |
| } while (r1 != r2);
| label_170:
0x0006ccda ldr r1, [sp, 0x14] | r1 = var_14h;
0x0006ccdc add.w r2, fp, r7 | r2 = fp + r7;
0x0006cce0 ldr r0, [sp, 0x58] | r0 = var_58h;
0x0006cce2 add.w r2, r1, r2, lsl 3 | r2 = r1 + (r2 << 3);
0x0006cce6 mvn r1, 0xb | r1 = ~0xb;
0x0006ccea ldr r2, [r2, 0x30] | r2 = *((r2 + 0x30));
0x0006ccec str r3, [sp, 4] | var_4h = r3;
0x0006ccee movs r3, 0 | r3 = 0;
0x0006ccf0 str r1, [sp, 8] | var_8h = r1;
0x0006ccf2 movs r1, 0xa9 | r1 = 0xa9;
0x0006ccf4 str r3, [sp] | *(sp) = r3;
0x0006ccf6 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0006ccfa ldr.w r1, [r8, 0x24] | r1 = *((r8 + 0x24));
0x0006ccfe b.w 0x6bcd4 | goto label_36;
| label_135:
0x0006cd02 ldr.w sl, [sp, 0x18] | sl = var_18h;
0x0006cd06 b.w 0x6bb04 | goto label_5;
| label_114:
0x0006cd0a mov.w r2, -1 | r2 = -1;
0x0006cd0e mov r3, r8 | r3 = r8;
0x0006cd10 mov r4, r2 | r4 = r2;
0x0006cd12 str.w r8, [sp, 0x48] | __asm ("str.w r8, [var_48h]");
0x0006cd16 b.w 0x6bf22 | goto label_64;
| label_103:
0x0006cd1a ldr r4, [sp, 0x44] | r4 = var_44h;
0x0006cd1c lsls r7, r4, 0x1c | r7 = r4 << 0x1c;
| if (r7 >= r4) {
0x0006cd1e bpl.w 0x6bc6a | goto label_65;
| }
0x0006cd22 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006cd24 ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
0x0006cd26 ldr r1, [r2, 0x38] | r1 = *((r2 + 0x38));
0x0006cd28 cmp r1, 0 |
| if (r1 != 0) {
0x0006cd2a bne.w 0x6bc6a | goto label_65;
| }
0x0006cd2e lsls r6, r3, 0x12 | r6 = r3 << 0x12;
| if (r6 >= r3) {
0x0006cd30 bpl 0x6cd38 | goto label_171;
| }
0x0006cd32 lsls r5, r4, 0x1b | r5 = r4 << 0x1b;
| if (r5 >= r4) {
0x0006cd34 bpl.w 0x6bc6a | goto label_65;
| }
| label_171:
0x0006cd38 movs r1, 2 | r1 = 2;
0x0006cd3a b.w 0x6bc5c | goto label_66;
| label_110:
0x0006cd3e ldrb.w r3, [r2, 0x2f] | r3 = *((r2 + 0x2f));
0x0006cd42 cmp r3, 2 |
| if (r3 == 2) {
0x0006cd44 beq.w 0x6bd5c | goto label_63;
| }
0x0006cd48 ldr r3, [r7, 0x6c] | r3 = *((r7 + 0x6c));
0x0006cd4a cmp r3, 0 |
| if (r3 <= 0) {
0x0006cd4c ble.w 0x6bd5c | goto label_63;
| }
0x0006cd50 ldr r2, [r7, 0x68] | r2 = *((r7 + 0x68));
0x0006cd52 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006cd56 add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0006cd5a mov.w r3, 2 | r3 = 2;
0x0006cd5e strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
0x0006cd62 b.w 0x6bd5c | goto label_63;
| label_104:
0x0006cd66 lsls r1, r3, 0x19 | r1 = r3 << 0x19;
0x0006cd68 itttt mi |
| if (r1 < r3) {
0x0006cd6a bicmi r3, r3, 0x40 | __asm ("bicmi r3, r3, 0x40");
| }
| if (r1 >= r3) {
0x0006cd6e strmi r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
| }
| if (r1 >= r3) {
0x0006cd70 ldrmi r3, [sp, 0x44] | r3 = var_44h;
| }
| if (r1 < r3) {
0x0006cd72 and fp, r3, 8 |
| }
0x0006cd76 b.w 0x6bc6a | goto label_65;
| label_161:
0x0006cd7a ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0006cd7c add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006cd80 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0006cd82 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x0006cd86 ldrb r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0006cd88 cmp r3, 0 |
| if (r3 != 0) {
0x0006cd8a bne.w 0x6c994 | goto label_49;
| }
0x0006cd8e b 0x6ca0e | goto label_48;
| label_105:
0x0006cd90 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0006cd92 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0006cd94 ldr r3, [r3, 0x6c] | r3 = *((r3 + 0x6c));
0x0006cd96 str r3, [r2, 0x34] | *((r2 + 0x34)) = r3;
0x0006cd98 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0006cd9a ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0006cd9e cmp r2, 0 |
| if (r2 != 0) {
0x0006cda0 bne.w 0x6bb04 | goto label_5;
| }
0x0006cda4 b.w 0x6c374 | goto label_67;
| label_92:
0x0006cda8 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0006cdaa mov r1, r6 | r1 = r6;
0x0006cdac bl 0x16140 | fcn_00016140 (r0, r1);
0x0006cdb0 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0006cdb2 strh r5, [r6, 0x2c] | *((r6 + 0x2c)) = r5;
0x0006cdb4 strh r4, [r6, 0x28] | *((r6 + 0x28)) = r4;
0x0006cdb6 str r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x0006cdb8 str r4, [r6, 0x24] | *((r6 + 0x24)) = r4;
0x0006cdba b.w 0x6bbc2 | goto label_68;
| label_106:
0x0006cdbe mov.w r4, 0x8000 |
0x0006cdc2 movt r4, 0xffff | r4 = 0xNaN;
0x0006cdc6 b.w 0x6bcbe | goto label_69;
| label_168:
0x0006cdca cmp r3, r6 |
| if (r3 > r6) {
0x0006cdcc bhi.w 0x6cb6c | goto label_58;
| }
0x0006cdd0 b 0x6cbfa | goto label_70;
| label_148:
0x0006cdd2 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x0006cdd4 cmp r4, 0 |
| if (r4 == 0) {
0x0006cdd6 beq.w 0x6cee2 | goto label_172;
| }
0x0006cdda mov r1, r5 | r1 = r5;
0x0006cddc b 0x6cde6 |
| while (r3 == 0) {
| label_71:
0x0006cdde ldr r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x0006cde0 cmp r4, 0 |
| if (r4 == 0) {
0x0006cde2 beq.w 0x6cef8 | goto label_173;
| }
0x0006cde6 ldrb.w r3, [r4, 0x36] | r3 = *((r4 + 0x36));
0x0006cdea cmp r3, 0 |
0x0006cdec beq 0x6cdde |
| }
0x0006cdee ldr r0, [r4, 0x24] | r0 = *((r4 + 0x24));
0x0006cdf0 cmp r0, 0 |
| if (r0 != 0) {
0x0006cdf2 bne 0x6cdde | goto label_71;
| }
0x0006cdf4 ldrh r2, [r4, 0x32] | r2 = *((r4 + 0x32));
0x0006cdf6 cmp r2, 3 |
| if (r2 > 3) {
0x0006cdf8 bhi 0x6cdde | goto label_71;
| }
0x0006cdfa ldrb.w r3, [r4, 0x37] | r3 = *((r4 + 0x37));
0x0006cdfe tst.w r3, 8 |
0x0006ce02 ite ne |
| if ((r3 & 8) == 0) {
0x0006ce04 movne r5, 0x82 | r5 = 0x82;
| }
| if ((r3 & 8) != 0) {
0x0006ce06 moveq r5, 2 | r5 = 2;
| }
0x0006ce08 cmp r2, 0 |
| if (r2 == 0) {
0x0006ce0a beq 0x6cedc | goto label_174;
| }
0x0006ce0c mov sb, r0 | sb = r0;
0x0006ce0e b 0x6ce20 |
| while (r0 != 0) {
0x0006ce10 ldr r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x0006ce12 str.w r0, [r3, sb, lsl 2] | __asm ("str.w r0, [r3, sb, lsl 2]");
0x0006ce16 add.w sb, sb, 1 | sb++;
0x0006ce1a ldrh r3, [r4, 0x32] | r3 = *((r4 + 0x32));
0x0006ce1c cmp sb, r3 |
| if (sb >= r3) {
0x0006ce1e bge 0x6ce3a | goto label_175;
| }
0x0006ce20 mov r2, sb | r2 = sb;
0x0006ce22 mov r0, r8 | r0 = r8;
0x0006ce24 strd r5, r4, [sp, 8] | __asm ("strd r5, r4, [var_8h]");
0x0006ce28 vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x0006ce2c str r1, [sp, 0x18] | var_18h = r1;
0x0006ce2e bl 0x37414 | fcn_00037414 (r0, r1, r2, r3, r4, r5);
0x0006ce32 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0006ce34 cmp r0, 0 |
0x0006ce36 bne 0x6ce10 |
| }
0x0006ce38 ldrh r3, [r4, 0x32] | r3 = *((r4 + 0x32));
| label_175:
0x0006ce3a cmp r3, sb |
| if (r3 != sb) {
0x0006ce3c bne 0x6cdde | goto label_71;
| }
0x0006ce3e ldrb.w r3, [r4, 0x37] | r3 = *((r4 + 0x37));
0x0006ce42 mov r5, r1 | r5 = r1;
| label_78:
0x0006ce44 movw r2, 0x1201 | r2 = 0x1201;
0x0006ce48 str r2, [r6, 0x24] | *((r6 + 0x24)) = r2;
0x0006ce4a lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 < r3) {
0x0006ce4c bmi 0x6ceaa | goto label_176;
| }
0x0006ce4e ldrd r1, r2, [r7, 0x40] | __asm ("ldrd r1, r2, [r7, 0x40]");
0x0006ce52 ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x0006ce54 ands r1, r3 | r1 &= r3;
0x0006ce56 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0006ce58 ands r2, r3 | r2 &= r3;
0x0006ce5a orrs r2, r1 | r2 |= r1;
| if (r2 == r1) {
0x0006ce5c beq 0x6ceaa | goto label_176;
| }
0x0006ce5e uxth.w sb, sb | sb = (int16_t) sb;
0x0006ce62 movs r3, 0x27 | r3 = 0x27;
0x0006ce64 str r4, [r6, 0x20] | *((r6 + 0x20)) = r4;
0x0006ce66 strh.w sb, [r6, 0x28] | *((r6 + 0x28)) = sb;
0x0006ce6a strh.w sb, [r6, 0x18] | *((r6 + 0x18)) = sb;
0x0006ce6e strh r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
0x0006ce70 b 0x6c8aa | goto label_72;
| label_146:
0x0006ce72 lsls r2, r1, 0x16 | r2 = r1 << 0x16;
| if (r2 < r1) {
0x0006ce74 bmi.w 0x6bcda | goto label_73;
| }
0x0006ce78 b.w 0x6bd60 | goto label_74;
| label_100:
0x0006ce7c blx 0x7e8c | fcn_00007e8c ();
| label_136:
0x0006ce80 ldr r1, [r6, 0x30] | r1 = *((r6 + 0x30));
0x0006ce82 mov r4, r0 | r4 = r0;
0x0006ce84 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0006ce86 ldr.w sl, [sp, 0x4c] | sl = var_4ch;
0x0006ce8a cmp r3, r1 |
| if (r3 != r1) {
0x0006ce8c bne.w 0x6bae2 | goto label_75;
| }
0x0006ce90 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0006ce92 mov r1, r6 | r1 = r6;
0x0006ce94 bl 0x16140 | fcn_00016140 (r0, r1);
0x0006ce98 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0006ce9a str r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x0006ce9c movs r3, 0 | r3 = 0;
0x0006ce9e strh r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0006cea0 str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
0x0006cea2 movs r3, 3 | r3 = 3;
0x0006cea4 strh r3, [r6, 0x2c] | *((r6 + 0x2c)) = r3;
0x0006cea6 b.w 0x6bb04 | goto label_5;
| label_176:
0x0006ceaa uxth.w sb, sb | sb = (int16_t) sb;
0x0006ceae movw r3, 0x1241 | r3 = 0x1241;
0x0006ceb2 str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
0x0006ceb4 movs r3, 0x27 | r3 = 0x27;
0x0006ceb6 str r4, [r6, 0x20] | *((r6 + 0x20)) = r4;
0x0006ceb8 strh.w sb, [r6, 0x28] | *((r6 + 0x28)) = sb;
0x0006cebc strh.w sb, [r6, 0x18] | *((r6 + 0x18)) = sb;
0x0006cec0 strh r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
0x0006cec2 b 0x6c8aa | goto label_72;
| label_162:
0x0006cec4 mov sb, fp | sb = fp;
0x0006cec6 mov r8, fp | r8 = fp;
0x0006cec8 b 0x6cb08 | goto label_76;
| label_167:
0x0006ceca ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006cecc bic.w r3, r3, r5 | r3 = BIT_MASK (r3, r5);
0x0006ced0 str r3, [sp, 0x1c] | var_1ch = r3;
0x0006ced2 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0006ced4 bic.w r3, r3, r4 | r3 = BIT_MASK (r3, r4);
0x0006ced8 str r3, [sp, 0x40] | var_40h = r3;
0x0006ceda b 0x6cc2a | goto label_77;
| label_174:
0x0006cedc mov r5, r1 | r5 = r1;
0x0006cede mov sb, r2 | sb = r2;
0x0006cee0 b 0x6ce44 | goto label_78;
| label_172:
0x0006cee2 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
| label_79:
0x0006cee4 cmp r3, 0 |
| if (r3 != 0) {
0x0006cee6 bne.w 0x6c8aa | goto label_72;
| }
0x0006ceea ldr.w fp, [sp, 0x84] | fp = var_84h;
0x0006ceee ldr r6, [sp, 0x90] | r6 = var_90h;
0x0006cef0 ldr.w r7, [fp, 4] | r7 = *(arg_4h);
0x0006cef4 b.w 0x6b9e4 | goto label_40;
| label_173:
0x0006cef8 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x0006cefa mov r5, r1 | r5 = r1;
0x0006cefc b 0x6cee4 | goto label_79;
| label_145:
0x0006cefe ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006cf00 add.w r2, fp, r7 | r2 = fp + r7;
0x0006cf04 add.w r2, r3, r2, lsl 3 | r2 = r3 + (r2 << 3);
0x0006cf08 ldrd r3, r2, [r2, 0x40] | __asm ("ldrd r3, r2, [r2, 0x40]");
0x0006cf0c orrs.w r1, r3, r2 | r1 = r3 | r2;
| if (r1 == r3) {
0x0006cf10 beq 0x6cf26 | goto label_177;
| }
0x0006cf12 ldr r1, [sp, 0x18] | r1 = var_18h;
| do {
0x0006cf14 lsrs r3, r3, 1 | r3 >>= 1;
0x0006cf16 adds r1, 1 | r1++;
0x0006cf18 orr.w r3, r3, r2, lsl 31 | r3 |= (r2 << 31);
0x0006cf1c lsrs r2, r2, 1 | r2 >>= 1;
0x0006cf1e orrs.w r0, r3, r2 | r0 = r3 | r2;
0x0006cf22 bne 0x6cf14 |
| } while (r0 != r3);
0x0006cf24 str r1, [sp, 0x18] | var_18h = r1;
| label_177:
0x0006cf26 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006cf28 mvn r3, 2 | r3 = ~2;
0x0006cf2c ldr r0, [sp, 0x58] | r0 = var_58h;
0x0006cf2e mov.w r1, -1 | r1 = -1;
0x0006cf32 bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x0006cf36 b 0x6c7aa | goto label_80;
| label_164:
0x0006cf38 movs r4, 0 | r4 = 0;
0x0006cf3a mov r6, r4 | r6 = r4;
0x0006cf3c b 0x6cb46 | goto label_81;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x6cf48).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x6eebc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0006eebc () | void fcn_0006eebc (int16_t arg_78h, int16_t arg_7ch, int16_t arg_80h, int16_t arg_84h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int32_t var_34h;
| int32_t var_34h_2;
| int32_t var_3ch;
| int32_t var_3ch_2;
| int32_t var_44h;
| int32_t var_44h_2;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0006eebc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0006eec0 mov sl, r2 | sl = r2;
0x0006eec2 ldr r2, [pc, 0x300] |
0x0006eec4 mov sb, r3 | sb = r3;
0x0006eec6 sub sp, 0x54 |
0x0006eec8 mov r6, r0 | r6 = r0;
0x0006eeca ldr r3, [pc, 0x2fc] | r3 = *(0x6f1ca);
0x0006eecc add r2, pc | r2 = 0xde096;
0x0006eece str r1, [sp, 0x20] | var_20h = r1;
0x0006eed0 ldr.w r8, [sp, 0x78] | r8 = *(arg_78h);
0x0006eed4 ldr r3, [r2, r3] |
0x0006eed6 ldr r2, [sp, 0x7c] | r2 = *(arg_7ch);
0x0006eed8 ldr r3, [r3] | r3 = *(0xde096);
0x0006eeda str r3, [sp, 0x4c] | var_4ch = r3;
0x0006eedc mov.w r3, 0 | r3 = 0;
0x0006eee0 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0006eee2 str r2, [sp, 0x14] | var_14h = r2;
0x0006eee4 ldr r2, [r0] | r2 = *(r0);
0x0006eee6 str r3, [sp, 0x18] | var_18h = r3;
0x0006eee8 str r2, [sp, 0x10] | var_10h = r2;
0x0006eeea cmp r3, 0 |
| if (r3 == 0) {
0x0006eeec beq.w 0x6f01a | goto label_9;
| }
0x0006eef0 ldr r3, [sp, 0x84] | r3 = *(arg_84h);
0x0006eef2 adds r3, 1 | r3++;
| if (r3 == 1) {
0x0006eef4 beq.w 0x6f032 | goto label_10;
| }
| label_2:
0x0006eef8 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x0006eefc cmp r3, 0 |
0x0006eefe mov.w r3, 0 | r3 = 0;
0x0006ef02 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 <= 0) {
0x0006ef04 ble 0x6ef88 | goto label_11;
| }
| label_3:
0x0006ef06 movs r4, 0 | r4 = 0;
0x0006ef08 add.w fp, sp, 0x2c |
0x0006ef0c mov r5, r4 | r5 = r4;
0x0006ef0e b 0x6ef5e |
| while (r3 != 0) {
0x0006ef10 ldrsh.w r3, [r3, r5, lsl 2] | offset_0 = r5 << 2;
| r3 = *((r3 + offset_0));
| label_0:
0x0006ef14 ldr.w r2, [r8] | r2 = *(r8);
0x0006ef18 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006ef1c ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0006ef1e ldr.w r0, [r2, r3, lsl 2] | offset_1 = r3 << 2;
| r0 = *((r2 + offset_1));
0x0006ef22 str r0, [sp, 0x2c] | var_2ch = r0;
| if (r0 != 0) {
0x0006ef24 cbz r0, 0x6ef2e |
0x0006ef26 blx 0x8160 | r0 = fcn_00008160 ();
0x0006ef2a bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
| }
0x0006ef2e movs r1, 0x3b | r1 = 0x3b;
0x0006ef30 movs r3, 0 | r3 = 0;
0x0006ef32 mov r2, fp | r2 = fp;
0x0006ef34 str r0, [sp, 0x30] | var_30h = r0;
0x0006ef36 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006ef38 adds r5, 1 | r5++;
0x0006ef3a bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x0006ef3e mov r2, r7 | r2 = r7;
0x0006ef40 mov r3, r0 | r3 = r0;
0x0006ef42 movs r1, 0x35 | r1 = 0x35;
0x0006ef44 mov r0, r6 | r0 = r6;
0x0006ef46 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0006ef4a mov r1, r4 | r1 = r4;
0x0006ef4c mov r2, r0 | r2 = r0;
0x0006ef4e mov r0, r6 | r0 = r6;
0x0006ef50 bl 0x2659c | fcn_0002659c (r0, r1, r2);
0x0006ef54 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x0006ef58 mov r4, r0 | r4 = r0;
0x0006ef5a cmp r3, r5 |
| if (r3 <= r5) {
0x0006ef5c ble 0x6ef8e | goto label_12;
| }
0x0006ef5e mov.w r3, -1 | r3 = -1;
0x0006ef62 cmp.w sb, 0 |
| if (sb != 0) {
0x0006ef66 beq 0x6ef70 |
0x0006ef68 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0006ef6c ldrsh.w r3, [r3, r5, lsl 1] | offset_2 = r5 << 1;
| r3 = *((r3 + offset_2));
| }
0x0006ef70 ldr r2, [sp, 0x80] | r2 = *(arg_80h);
0x0006ef72 mov r1, sl | r1 = sl;
0x0006ef74 mov r0, r6 | r0 = r6;
0x0006ef76 bl 0x1b1a0 | fcn_0001b1a0 (r0, r1, r2, r3);
0x0006ef7a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006ef7c mov r7, r0 | r7 = r0;
0x0006ef7e cmp r3, 0 |
0x0006ef80 bne 0x6ef10 |
| }
0x0006ef82 ldrsh.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0006ef86 b 0x6ef14 | goto label_0;
| label_11:
0x0006ef88 add.w fp, sp, 0x2c |
0x0006ef8c mov r4, r3 | r4 = r3;
| label_12:
0x0006ef8e ldr.w r3, [r8] | r3 = *(r8);
0x0006ef92 ldr r2, [sp, 0x84] | r2 = *(arg_84h);
0x0006ef94 cmp r3, sl |
0x0006ef96 it eq |
| if (r3 == sl) {
0x0006ef98 cmpeq r2, 1 | __asm ("cmpeq r2, 1");
| }
| if (r3 == sl) {
0x0006ef9a beq.w 0x6f0b0 | goto label_13;
| }
| label_4:
0x0006ef9e ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006efa0 mov r0, fp | r0 = fp;
0x0006efa2 mov r1, r4 | r1 = r4;
0x0006efa4 strd r6, r3, [sp, 0x2c] | __asm ("strd r6, r3, [var_2ch]");
0x0006efa8 movs r3, 0 | r3 = 0;
0x0006efaa strd r3, r3, [sp, 0x34] | __asm ("strd r3, r3, [var_34h]");
0x0006efae strd r3, r3, [sp, 0x3c] | __asm ("strd r3, r3, [var_3ch]");
0x0006efb2 strd r3, r3, [sp, 0x44] | __asm ("strd r3, r3, [var_44h]");
0x0006efb6 bl 0x3040c | fcn_0003040c (r0, r1, r2);
0x0006efba ldr r5, [r6, 0x24] | r5 = *((r6 + 0x24));
0x0006efbc cbz r5, 0x6efea |
| if (r4 != 0) {
| while (r5 == 0) {
| label_1:
0x0006efbe cbz r4, 0x6efc8 |
0x0006efc0 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006efc2 mov r1, r4 | r1 = r4;
0x0006efc4 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x0006efc8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006efca cmp r3, 0 |
| if (r3 != 0) {
0x0006efcc bne 0x6f078 | goto label_14;
| }
| label_5:
0x0006efce ldr r2, [pc, 0x1fc] |
0x0006efd0 ldr r3, [pc, 0x1f4] | r3 = *(0x6f1c8);
0x0006efd2 add r2, pc | r2 = 0xde1a4;
0x0006efd4 ldr r3, [r2, r3] | r3 = *(0xde1a4);
0x0006efd6 ldr r2, [r3] | r2 = *(0xde1a4);
0x0006efd8 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0006efda eors r2, r3 | r2 ^= r3;
0x0006efdc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006efe0 bne.w 0x6f1c0 | goto label_15;
| }
0x0006efe4 add sp, 0x54 |
0x0006efe6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0006efea mov r3, r5 | r3 = r5;
0x0006efec ldr r1, [sp, 0x20] | r1 = var_20h;
0x0006efee mov r2, r4 | r2 = r4;
0x0006eff0 strd r5, r5, [sp, 4] | __asm ("strd r5, r5, [var_4h]");
0x0006eff4 str r5, [sp] | *(sp) = r5;
0x0006eff6 mov r0, r6 | r0 = r6;
0x0006eff8 bl 0x6b788 | fcn_0006b788 (r0, r1, r2, r3, r4, r5, r6);
0x0006effc str r5, [sp] | *(sp) = r5;
0x0006effe mov r5, r0 | r5 = r0;
0x0006f000 ldrb.w r2, [r8, 0x18] | r2 = *((r8 + 0x18));
0x0006f004 movs r1, 0x9a | r1 = 0x9a;
0x0006f006 ldr r3, [sp, 0x84] | r3 = *(arg_84h);
0x0006f008 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006f00a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006f00e cmp r5, 0 |
0x0006f010 beq 0x6efbe |
| }
0x0006f012 mov r0, r5 | r0 = r5;
0x0006f014 bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0006f018 b 0x6efbe | goto label_1;
| label_9:
0x0006f01a ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
0x0006f01c cmp r3, 0 |
| if (r3 == 0) {
0x0006f01e beq.w 0x6f150 | goto label_16;
| }
| label_6:
0x0006f022 mov r0, r6 | r0 = r6;
0x0006f024 bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x0006f028 ldr r3, [sp, 0x84] | r3 = *(arg_84h);
0x0006f02a str r0, [sp, 0x18] | var_18h = r0;
0x0006f02c adds r3, 1 | r3++;
| if (r3 != 1) {
0x0006f02e bne.w 0x6eef8 | goto label_2;
| }
| label_10:
0x0006f032 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006f034 ldrb.w r2, [r8, 0x18] | r2 = *((r8 + 0x18));
0x0006f038 ldr r1, [r3, 0x6c] | r1 = *((r3 + 0x6c));
0x0006f03a ldr r3, [r3, 0x70] | r3 = *((r3 + 0x70));
0x0006f03c str r1, [sp, 0x1c] | var_1ch = r1;
0x0006f03e cmp r1, r3 |
| if (r1 >= r3) {
0x0006f040 bge.w 0x6f1b0 | goto label_17;
| }
0x0006f044 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0006f046 movs r0, 0 | r0 = 0;
0x0006f048 ldr r5, [sp, 0x18] | r5 = var_18h;
0x0006f04a add.w r3, r1, r1, lsl 2 | r3 = r1 + (r1 << 2);
0x0006f04e ldr r4, [r5, 0x68] | r4 = *((r5 + 0x68));
0x0006f050 adds r1, 1 | r1++;
0x0006f052 lsls r3, r3, 2 | r3 <<= 2;
0x0006f054 str r1, [r5, 0x6c] | *((r5 + 0x6c)) = r1;
0x0006f056 movs r5, 0x2f | r5 = 0x2f;
0x0006f058 adds r1, r4, r3 | r1 = r4 + r3;
0x0006f05a strd r2, r0, [r1, 4] | __asm ("strd r2, r0, [r1, 4]");
0x0006f05e strd r0, r0, [r1, 0xc] | __asm ("strd r0, r0, [r1, 0xc]");
0x0006f062 str r5, [r4, r3] | *((r4 + r3)) = r5;
| label_8:
0x0006f064 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x0006f068 cmp r3, 0 |
0x0006f06a itt le |
| if (r3 > 0) {
0x0006f06c movle r4, 0 | r4 = 0;
| }
| if (r3 <= 0) {
0x0006f06e addle fp, sp, 0x2c | goto label_18;
| }
| if (r3 > 0) {
| label_18:
0x0006f072 bgt.w 0x6ef06 | goto label_3;
| }
0x0006f076 b 0x6ef9e | goto label_4;
| label_14:
0x0006f078 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0006f07a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006f07c ldr r3, [r1, 0x6c] | r3 = *((r1 + 0x6c));
0x0006f07e subs r2, r3, 1 | r2 = r3 - 1;
0x0006f080 cmp r0, r2 |
0x0006f082 itt eq |
| if (r0 != r2) {
0x0006f084 moveq r3, r1 | r3 = r1;
| }
| if (r0 == r2) {
0x0006f086 streq r0, [r3, 0x6c] | *((r3 + 0x6c)) = r0;
| goto label_19;
| }
| if (r0 == r2) {
| label_19:
0x0006f088 beq 0x6efce | goto label_5;
| }
0x0006f08a ldr r5, [sp, 0x18] | r5 = var_18h;
0x0006f08c ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x0006f08e ldr r1, [r5] | r1 = *(r5);
0x0006f090 mov r0, r4 | r0 = r4;
0x0006f092 bics.w r0, r0, r4, asr 32 | __asm ("bics.w r0, r0, r4, asr 32");
0x0006f096 it hs |
| if (r0 < r2) {
0x0006f098 movhs r0, r2 | r0 = r2;
| }
0x0006f09a ldrb.w r2, [r1, 0x53] | r2 = *((r1 + 0x53));
0x0006f09e cmp r2, 0 |
| if (r2 != 0) {
0x0006f0a0 bne 0x6f15c | goto label_20;
| }
0x0006f0a2 ldr r2, [r5, 0x68] | r2 = *((r5 + 0x68));
0x0006f0a4 add.w r1, r0, r0, lsl 2 | r1 = r0 + (r0 << 2);
0x0006f0a8 add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
| label_7:
0x0006f0ac str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0006f0ae b 0x6efce | goto label_5;
| label_13:
0x0006f0b0 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x0006f0b4 ands r3, r3, 0x80 | r3 &= 0x80;
| if (r3 == r3) {
0x0006f0b8 beq 0x6f164 | goto label_21;
| }
0x0006f0ba ldrh.w r3, [sb, 0x32] | r3 = *((sb + 0x32));
| if (r3 == 0) {
0x0006f0be cbz r3, 0x6f136 | goto label_22;
| }
0x0006f0c0 str.w r8, [sp, 0x24] | __asm ("str.w r8, [var_24h]");
0x0006f0c4 movs r3, 0 | r3 = 0;
0x0006f0c6 ldr.w r8, [sp, 0x80] | r8 = *(arg_80h);
0x0006f0ca mov r7, r3 | r7 = r3;
0x0006f0cc str r4, [sp, 0x14] | var_14h = r4;
0x0006f0ce mov r4, r3 | r4 = r3;
| do {
0x0006f0d0 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0006f0d4 mov r2, r8 | r2 = r8;
0x0006f0d6 mov r1, sl | r1 = sl;
0x0006f0d8 mov r0, r6 | r0 = r6;
0x0006f0da ldrsh.w r5, [r3, r7, lsl 1] | offset_3 = r7 << 1;
| r5 = *((r3 + offset_3));
0x0006f0de mov r3, r5 | r3 = r5;
0x0006f0e0 bl 0x1b1a0 | fcn_0001b1a0 (r0, r1, r2, r3);
0x0006f0e4 ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x0006f0e8 add.w r3, r5, r5, lsl 2 | r3 = r5 + (r5 << 2);
0x0006f0ec mov r5, r0 | r5 = r0;
0x0006f0ee ldr.w r0, [r2, r3, lsl 2] | offset_4 = r3 << 2;
| r0 = *((r2 + offset_4));
0x0006f0f2 str r0, [sp, 0x2c] | var_2ch = r0;
| if (r0 != 0) {
0x0006f0f4 cbz r0, 0x6f0fe |
0x0006f0f6 blx 0x8160 | r0 = fcn_00008160 ();
0x0006f0fa bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
| }
0x0006f0fe movs r1, 0x3b | r1 = 0x3b;
0x0006f100 movs r3, 0 | r3 = 0;
0x0006f102 mov r2, fp | r2 = fp;
0x0006f104 str r0, [sp, 0x30] | var_30h = r0;
0x0006f106 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006f108 adds r7, 1 | r7++;
0x0006f10a bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x0006f10e mov r2, r5 | r2 = r5;
0x0006f110 mov r3, r0 | r3 = r0;
0x0006f112 movs r1, 0x2d | r1 = 0x2d;
0x0006f114 mov r0, r6 | r0 = r6;
0x0006f116 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0006f11a mov r1, r4 | r1 = r4;
0x0006f11c mov r2, r0 | r2 = r0;
0x0006f11e mov r0, r6 | r0 = r6;
0x0006f120 bl 0x2659c | fcn_0002659c (r0, r1, r2);
0x0006f124 ldrh.w r3, [sb, 0x32] | r3 = *((sb + 0x32));
0x0006f128 mov r4, r0 | r4 = r0;
0x0006f12a cmp r3, r7 |
0x0006f12c bgt 0x6f0d0 |
| } while (r3 > r7);
0x0006f12e ldr r4, [sp, 0x14] | r4 = var_14h;
0x0006f130 mov r3, r0 | r3 = r0;
0x0006f132 ldr.w r8, [sp, 0x24] | r8 = var_24h;
| label_22:
0x0006f136 mov r2, r3 | r2 = r3;
0x0006f138 movs r1, 0x13 | r1 = 0x13;
0x0006f13a movs r3, 0 | r3 = 0;
0x0006f13c mov r0, r6 | r0 = r6;
0x0006f13e bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x0006f142 mov r2, r0 | r2 = r0;
| do {
0x0006f144 mov r1, r4 | r1 = r4;
0x0006f146 mov r0, r6 | r0 = r6;
0x0006f148 bl 0x2659c | r0 = fcn_0002659c (r0, r1, r2);
0x0006f14c mov r4, r0 | r4 = r0;
0x0006f14e b 0x6ef9e | goto label_4;
| label_16:
0x0006f150 ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
0x0006f152 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x0006f154 itt pl |
| if (r3 < r3) {
0x0006f156 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x0006f158 strbpl r3, [r0, 0x17] | *((r0 + 0x17)) = r3;
| }
0x0006f15a b 0x6f022 | goto label_6;
| label_20:
0x0006f15c ldr r2, [pc, 0x70] |
0x0006f15e add r2, pc | r2 = 0xde332;
0x0006f160 adds r2, 4 | r2 += 4;
0x0006f162 b 0x6f0ac | goto label_7;
| label_21:
0x0006f164 ldr r0, [r6] | r0 = *(r6);
0x0006f166 mov r2, fp | r2 = fp;
0x0006f168 movs r1, 0xaf | r1 = 0xaf;
0x0006f16a strd r3, r3, [sp, 0x2c] | __asm ("strd r3, r3, [var_2ch]");
0x0006f16e bl 0x1afec | r0 = fcn_0001afec (r0, r1, r2, r3);
0x0006f172 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0006f174 cbz r0, 0x6f17e |
0x0006f176 ldr r3, [sp, 0x80] | r3 = *(arg_80h);
0x0006f178 str r3, [r0, 0x1c] | *((r0 + 0x1c)) = r3;
0x0006f17a movs r3, 0x44 | r3 = 0x44;
0x0006f17c strb r3, [r0, 1] | *((r0 + 1)) = r3;
| }
0x0006f17e ldr r7, [sp, 0x20] | r7 = var_20h;
0x0006f180 movs r3, 0 | r3 = 0;
0x0006f182 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0006f184 mov r2, fp | r2 = fp;
0x0006f186 movs r1, 0xa6 | r1 = 0xa6;
0x0006f188 strd r3, r3, [sp, 0x2c] | __asm ("strd r3, r3, [var_2ch]");
0x0006f18c ldr r7, [r7, 0x30] | r7 = *((r7 + 0x30));
0x0006f18e bl 0x1afec | r0 = fcn_0001afec (r0, r1, r2, r3);
0x0006f192 mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x0006f194 cbz r0, 0x6f1a2 |
0x0006f196 movw r2, 0xffff | r2 = 0xffff;
0x0006f19a str.w sl, [r0, 0x2c] | __asm ("str.w sl, [r0, 0x2c]");
0x0006f19e str r7, [r0, 0x1c] | *((r0 + 0x1c)) = r7;
0x0006f1a0 strh r2, [r0, 0x20] | *((r0 + 0x20)) = r2;
| }
0x0006f1a2 mov r2, r5 | r2 = r5;
0x0006f1a4 movs r1, 0x34 | r1 = 0x34;
0x0006f1a6 mov r0, r6 | r0 = r6;
0x0006f1a8 bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x0006f1ac mov r2, r0 | r2 = r0;
0x0006f1ae b 0x6f144 |
| } while (1);
| label_17:
0x0006f1b0 movs r3, 0 | r3 = 0;
0x0006f1b2 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0006f1b4 movs r1, 0x2f | r1 = 0x2f;
0x0006f1b6 str r3, [sp] | *(sp) = r3;
0x0006f1b8 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0006f1bc str r0, [sp, 0x1c] | var_1ch = r0;
0x0006f1be b 0x6f064 | goto label_8;
| label_15:
0x0006f1c0 blx 0x7e8c | fcn_00007e8c ();
0x0006f1c4 stcl p0, c0, [r4, 0x14] | __asm ("stcl p0, c0, [r4, 0x14]");
0x0006f1c8 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0006f1ca movs r0, r0 |
0x0006f1cc ldc p0, c0, [lr], 0x14 | __asm ("ldc p0, c0, [lr], 0x14");
0x0006f1d0 lsrs r6, r4, 0xc | r6 = r4 >> 0xc;
0x0006f1d2 movs r6, r0 | r6 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x6f2f8 */
| #include <stdint.h>
|
; (fcn) fcn.0006f2f8 () | void fcn_0006f2f8 (int16_t arg_0h, int16_t arg_8h, int16_t arg_13h, int16_t arg_17h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_38h, int16_t arg_74h, int16_t arg_d4h, int16_t arg1, int16_t arg2, int16_t arg3) {
| 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;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_6ch;
| int32_t var_6ch_2;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int32_t var_88h_2;
| int16_t var_90h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int32_t var_a4h_2;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0006f2f8 push {r0, r1, fp, sp, lr} |
0x0006f2fc ldr r7, [pc, 0x3c0] | r7 = *(0x6f6c0);
0x0006f2fe sub sp, 0xbc |
0x0006f300 str r2, [sp, 0x10] | var_10h = r2;
0x0006f302 mov r7, r2 | r7 = r2;
0x0006f304 mov fp, r0 |
0x0006f306 mov r4, r1 | r4 = r1;
0x0006f308 ldr.w r2, [pc, 0xa24] |
0x0006f30c add.w sl, sp, 0x60 | sl += var_60h;
0x0006f310 str r3, [sp, 0x14] | var_14h = r3;
0x0006f312 mov r6, sl | r6 = sl;
0x0006f314 ldr.w r3, [pc, 0xa1c] | r3 = *(0x6fd34);
0x0006f318 add r2, pc | r2 = 0xdf04c;
0x0006f31a ldr.w r8, [r1, 0x34] | r8 = *((r1 + 0x34));
0x0006f31e ldr r5, [r0, 8] | r5 = *((r0 + 8));
0x0006f320 ldr r3, [r2, r3] |
0x0006f322 ldr r3, [r3] | r3 = *(0xdf04c);
0x0006f324 str r3, [sp, 0xb4] | var_b4h = r3;
0x0006f326 mov.w r3, 0 | r3 = 0;
0x0006f32a ldm r7!, {r0, r1, r2, r3} | r0 = *(r7!);
| r1 = *((r7! + 4));
| r2 = *((r7! + 8));
| r3 = *((r7! + 12));
0x0006f32c stm r6!, {r0, r1, r2, r3} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r3;
0x0006f32e ldm.w r7, {r0, r1, r2} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
0x0006f332 stm.w r6, {r0, r1, r2} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
0x0006f336 cmp r5, 0 |
| if (r5 == 0) {
0x0006f338 beq.w 0x6f76a | goto label_57;
| }
0x0006f33c ldrb.w r3, [sp, 0x60] | r3 = var_60h;
0x0006f340 cmp r3, 0xc |
| if (r3 == 0xc) {
0x0006f342 beq.w 0x6f786 | goto label_58;
| }
| label_2:
0x0006f346 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0006f348 lsls r3, r0, 0x15 | r3 = r0 << 0x15;
| if (r3 < r0) {
0x0006f34a bmi.w 0x6f7a6 | goto label_59;
| }
| label_3:
0x0006f34e lsls r7, r0, 0x12 | r7 = r0 << 0x12;
| if (r7 >= r0) {
0x0006f350 bpl 0x6f364 | goto label_60;
| }
0x0006f352 mov r3, r4 | r3 = r4;
0x0006f354 b 0x6f35e |
| while (r3 != 0) {
0x0006f356 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0006f358 lsls r6, r2, 0x12 | r6 = r2 << 0x12;
| if (r6 >= r2) {
0x0006f35a bpl.w 0x6f846 | goto label_61;
| }
0x0006f35e ldr r3, [r3, 0x34] | r3 = *((r3 + 0x34));
0x0006f360 cmp r3, 0 |
0x0006f362 bne 0x6f356 |
| }
| label_60:
0x0006f364 ldr r7, [r4, 0x30] | r7 = *((r4 + 0x30));
0x0006f366 cmp r7, 0 |
| if (r7 != 0) {
0x0006f368 bne.w 0x6f5ea | goto label_62;
| }
0x0006f36c ldr.w r3, [r8, 0x34] | r3 = *((r8 + 0x34));
0x0006f370 cmp r3, 0 |
| if (r3 == 0) {
0x0006f372 beq.w 0x703ee | goto label_63;
| }
| label_20:
0x0006f376 ldrb r3, [r4] | r3 = *(r4);
0x0006f378 cmp r3, 0x86 |
| if (r3 == 0x86) {
0x0006f37a beq.w 0x6fc2e | goto label_64;
| }
0x0006f37e and r3, r3, 0xfd | r3 &= 0xfd;
0x0006f382 cmp r3, 0x85 |
| if (r3 == 0x85) {
0x0006f384 beq.w 0x6facc | goto label_65;
| }
0x0006f388 ldrd r3, r2, [r5, 0x6c] | __asm ("ldrd r3, r2, [r5, 0x6c]");
0x0006f38c ldr.w r6, [fp, 0x28] | r6 = *(arg_28h);
0x0006f390 cmp r3, r2 |
0x0006f392 add.w r1, r6, 2 | r1 = r6 + 2;
0x0006f396 str.w r1, [fp, 0x28] | __asm ("str.w r1, [arg_28h]");
| if (r3 >= r2) {
0x0006f39a bge.w 0x704d6 | goto label_66;
| }
0x0006f39e add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0006f3a2 ldr r7, [r5, 0x68] | r7 = *((r5 + 0x68));
0x0006f3a4 adds r2, r3, 1 | r2 = r3 + 1;
0x0006f3a6 lsls r1, r1, 2 | r1 <<= 2;
0x0006f3a8 str r2, [r5, 0x6c] | *((r5 + 0x6c)) = r2;
0x0006f3aa movs r0, 0 | r0 = 0;
0x0006f3ac adds r2, r7, r1 | r2 = r7 + r1;
0x0006f3ae mov.w ip, 0x70 |
0x0006f3b2 strd r6, r0, [r2, 4] | __asm ("strd r6, r0, [r2, 4]");
0x0006f3b6 strd r0, r0, [r2, 0xc] | __asm ("strd r0, r0, [r2, 0xc]");
0x0006f3ba str.w ip, [r7, r1] | __asm ("str.w ip, [r7, r1]");
| label_29:
0x0006f3be str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x0006f3c0 mov r3, r4 | r3 = r4;
| do {
0x0006f3c2 mov r2, r3 | r2 = r3;
0x0006f3c4 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x0006f3c6 cmp r3, 0 |
0x0006f3c8 bne 0x6f3c2 |
| } while (r3 != 0);
0x0006f3ca ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0006f3cc mov r0, fp | r0 = fp;
0x0006f3ce str r3, [sp, 0x18] | var_18h = r3;
0x0006f3d0 orr r1, r1, 0x20 | r1 |= 0x20;
0x0006f3d4 str r1, [r2, 4] | *((r2 + 4)) = r1;
0x0006f3d6 movs r2, 1 | r2 = 1;
0x0006f3d8 strd r6, r3, [sp, 0x9c] | __asm ("strd r6, r3, [var_a0h]");
0x0006f3dc mov r1, r8 | r1 = r8;
0x0006f3de str r3, [sp, 0xac] | var_ach = r3;
0x0006f3e0 strd r3, r3, [sp, 0xa4] | __asm ("strd r3, r3, [var_a4h]");
0x0006f3e4 add r3, sp, 0x98 | r3 += var_98h;
0x0006f3e6 strb.w r2, [sp, 0x98] | var_98h = r2;
0x0006f3ea mov r2, r3 | r2 = r3;
0x0006f3ec str r3, [sp, 0x38] | var_38h = r3;
0x0006f3ee bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006f3f2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006f3f4 mov r7, r0 | r7 = r0;
0x0006f3f6 cmp r0, 0 |
| if (r0 != 0) {
0x0006f3f8 bne.w 0x6fab0 | goto label_12;
| }
0x0006f3fc ldrd r1, r2, [r5, 0x6c] | __asm ("ldrd r1, r2, [r5, 0x6c]");
0x0006f400 adds r0, r6, 1 | r0 = r6 + 1;
0x0006f402 str r0, [sp, 0x18] | var_18h = r0;
0x0006f404 cmp r1, r2 |
| if (r1 >= r2) {
0x0006f406 bge.w 0x70890 | goto label_67;
| }
0x0006f40a add.w r0, r1, r1, lsl 2 | r0 = r1 + (r1 << 2);
0x0006f40e ldr r7, [r5, 0x68] | r7 = *((r5 + 0x68));
0x0006f410 adds r2, r1, 1 | r2 = r1 + 1;
0x0006f412 lsl.w lr, r0, 2 | lr = r0 << 2;
0x0006f416 str r2, [r5, 0x6c] | *((r5 + 0x6c)) = r2;
0x0006f418 mov.w ip, 0x70 |
0x0006f41c add.w r2, r7, lr | r2 = r7 + lr;
0x0006f420 adds r0, r6, 1 | r0 = r6 + 1;
0x0006f422 strd r0, r3, [r2, 4] | __asm ("strd r0, r3, [r2, 4]");
0x0006f426 strd r3, r3, [r2, 0xc] | __asm ("strd r3, r3, [r2, 0xc]");
0x0006f42a str.w ip, [r7, lr] | __asm ("str.w ip, [r7, lr]");
| label_46:
0x0006f42e adds r3, r6, 1 | r3 = r6 + 1;
0x0006f430 movs r2, 0 | r2 = 0;
0x0006f432 str r3, [sp, 0x9c] | var_9ch = r3;
0x0006f434 ldrb r3, [r4] | r3 = *(r4);
0x0006f436 ldr.w sb, [r4, 0x3c] | sb = *((r4 + 0x3c));
0x0006f43a str r1, [r4, 0x18] | *((r4 + 0x18)) = r1;
0x0006f43c cmp r3, 0x87 |
0x0006f43e str r2, [r4, 0x34] | *((r4 + 0x34)) = r2;
0x0006f440 str r2, [r4, 0x3c] | *((r4 + 0x3c)) = r2;
| if (r3 == 0x87) {
0x0006f442 beq.w 0x7051c | goto label_68;
| }
0x0006f446 cmp r3, 0x88 |
| if (r3 == 0x88) {
0x0006f448 beq.w 0x70508 | goto label_69;
| }
0x0006f44c cmp r3, 0x86 |
| if (r3 == 0x86) {
0x0006f44e beq.w 0x704fe | goto label_70;
| }
0x0006f452 ldr.w r3, [pc, 0x8e4] | r3 = *(0x0006fd38);
0x0006f456 add r3, pc | r3 += pc;
| label_31:
0x0006f458 ldr.w r2, [pc, 0x8e0] |
0x0006f45c movs r1, 1 | r1 = 1;
0x0006f45e mov r0, fp | r0 = fp;
0x0006f460 add r2, pc | r2 = 0xdf1a0;
0x0006f462 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0006f466 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0006f468 mov r1, r4 | r1 = r4;
0x0006f46a mov r0, fp | r0 = fp;
0x0006f46c bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006f470 ldr r1, [r4, 0x34] | r1 = *((r4 + 0x34));
0x0006f472 mov r7, r0 | r7 = r0;
0x0006f474 ldrsh.w r3, [r8, 2] | r3 = *((r8 + 2));
0x0006f478 ldrsh.w r2, [r4, 2] | r2 = *((r4 + 2));
0x0006f47c str r1, [sp, 0x18] | var_18h = r1;
0x0006f47e ldr r1, [r4, 0x3c] | r1 = *((r4 + 0x3c));
0x0006f480 cmp r2, r3 |
0x0006f482 str.w r8, [r4, 0x34] | __asm ("str.w r8, [r4, 0x34]");
0x0006f484 strh r4, [r6] | *(r6) = r4;
0x0006f486 it gt |
| if (r2 > r3) {
0x0006f488 strhgt r3, [r4, 2] | __asm ("strhgt r3, [r4, 2]");
| }
| if (r1 != 0) {
0x0006f48a cbz r1, 0x6f492 |
0x0006f48c ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006f48e bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x0006f492 str.w sb, [r4, 0x3c] | __asm ("str.w sb, [r4, 0x3c]");
0x0006f496 cmp r7, 0 |
| if (r7 != 0) {
0x0006f498 bne.w 0x6f5ba | void (*0x6f5ba)() ();
| }
0x0006f49c ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0006f4a0 mov r1, r4 | r1 = r4;
0x0006f4a2 mov r0, fp | r0 = fp;
0x0006f4a4 subs r2, r3, 1 | r2 = r3 - 1;
0x0006f4a6 str r3, [sp, 0x20] | var_20h = r3;
0x0006f4a8 subs r3, 2 | r3 -= 2;
0x0006f4aa mov r8, r2 | r8 = r2;
0x0006f4ac str.w r3, [fp, 0x38] | __asm ("str.w r3, [arg_38h]");
0x0006f4b0 str r2, [sp, 0x24] | var_24h = r2;
0x0006f4b2 str r3, [sp, 0x1c] | var_1ch = r3;
0x0006f4b4 bl 0x67420 | fcn_00067420 (r0, r1, r2, r3);
0x0006f4b8 mov r3, r8 | r3 = r8;
0x0006f4ba mov r2, r6 | r2 = r6;
0x0006f4bc movs r1, 0x25 | r1 = 0x25;
0x0006f4be mov r0, r5 | r0 = r5;
0x0006f4c0 str r7, [sp] | *(sp) = r7;
0x0006f4c2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006f4c6 ldrb.w r3, [fp, 0x13] | r3 = *(arg_13h);
0x0006f4ca cmp r3, 0 |
| if (r3 == 0) {
0x0006f4cc beq.w 0x708fe | goto label_71;
| }
0x0006f4d0 subs r3, 1 | r3--;
0x0006f4d2 uxtb r3, r3 | r3 = (int8_t) r3;
0x0006f4d4 strb.w r3, [fp, 0x13] | *(arg_13h) = r3;
0x0006f4d8 add.w r3, fp, r3, lsl 2 | r3 = fp + (r3 << 2);
0x0006f4dc ldr.w r8, [r3, 0x94] | r8 = *((r3 + 0x94));
| label_49:
0x0006f4e0 ldrd sb, r3, [r5, 0x6c] | __asm ("ldrd sb, r3, [r5, 0x6c]");
0x0006f4e4 cmp sb, r3 |
| if (sb >= r3) {
0x0006f4e6 bge.w 0x7098e | goto label_72;
| }
0x0006f4ea add.w r3, sb, sb, lsl 2 | r3 = sb + (sb << 2);
0x0006f4ee ldr r1, [r5, 0x68] | r1 = *((r5 + 0x68));
0x0006f4f0 add.w r2, sb, 1 | r2 = sb + 1;
0x0006f4f4 lsls r3, r3, 2 | r3 <<= 2;
0x0006f4f6 str r2, [r5, 0x6c] | *((r5 + 0x6c)) = r2;
0x0006f4f8 movs r0, 0 | r0 = 0;
0x0006f4fa adds r2, r1, r3 | r2 = r1 + r3;
0x0006f4fc mov.w ip, 0x82 |
0x0006f500 strd r6, r8, [r2, 4] | __asm ("strd r6, r8, [r2, 4]");
0x0006f504 strd r0, r0, [r2, 0xc] | __asm ("strd r0, r0, [r2, 0xc]");
0x0006f508 str.w ip, [r1, r3] | __asm ("str.w ip, [r1, r3]");
| label_62:
0x0006f5ea ldr r2, [r4, 0x34] | r2 = *((r4 + 0x34));
0x0006f5ec ldr.w r3, [fp] | r3 = *(fp);
0x0006f5f0 ldr.w r6, [fp, 8] | r6 = *(arg_8h);
0x0006f5f4 str r2, [sp, 0x14] | var_14h = r2;
0x0006f5f6 str r3, [sp, 0x1c] | var_1ch = r3;
0x0006f5f8 ldr r2, [r7] | r2 = *(r7);
0x0006f5fa ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0006f5fe str r2, [sp, 0x24] | var_24h = r2;
0x0006f600 subs r2, r3, 2 | r2 = r3 - 2;
0x0006f602 str r3, [sp, 0x4c] | var_4ch = r3;
0x0006f604 str r2, [sp, 0x34] | var_34h = r2;
0x0006f606 subs r3, 1 | r3--;
0x0006f608 str.w r2, [fp, 0x38] | __asm ("str.w r2, [arg_38h]");
0x0006f60c ldrb r2, [r4] | r2 = *(r4);
0x0006f60e str r3, [sp, 0x30] | var_30h = r3;
0x0006f610 cmp r2, 0x86 |
0x0006f612 str r2, [sp, 0x18] | var_18h = r2;
| if (r2 == 0x86) {
0x0006f614 beq.w 0x6fa14 | goto label_73;
| }
0x0006f618 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006f61a ldrb.w r0, [r3, 0x53] | r0 = *((r3 + 0x53));
0x0006f61e cmp r0, 0 |
| if (r0 != 0) {
0x0006f620 bne.w 0x6fa14 | goto label_73;
| }
0x0006f624 ldr.w sl, [sp, 0x1c] | sl = var_1ch;
0x0006f628 add r3, sp, 0x98 | r3 += var_98h;
0x0006f62a ldr r5, [sp, 0x24] | r5 = var_24h;
0x0006f62c mov.w r8, 1 | r8 = 1;
0x0006f630 str r6, [sp, 0x20] | var_20h = r6;
0x0006f632 mov sb, r0 | sb = r0;
0x0006f634 mov r6, r3 | r6 = r3;
0x0006f636 str r3, [sp, 0x38] | var_38h = r3;
| label_0:
0x0006f638 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0006f63a ldr r3, [r3] | r3 = *(r3);
0x0006f63c cmp r3, r8 |
| if (r3 < r8) {
0x0006f63e blt 0x6f666 | goto label_9;
| }
0x0006f640 cmp r5, 0 |
0x0006f642 add.w r3, r7, 8 | r3 = r7 + 8;
| if (r5 <= 0) {
0x0006f646 ble.w 0x6fa1a | goto label_74;
| }
0x0006f64a movs r2, 0 | r2 = 0;
0x0006f64c b 0x6f658 |
| while (r1 != r8) {
0x0006f64e adds r2, 1 | r2++;
0x0006f650 adds r3, 0x10 | r3 += 0x10;
0x0006f652 cmp r2, r5 |
| if (r2 == r5) {
0x0006f654 beq.w 0x6fa1e | goto label_75;
| }
0x0006f658 ldrh r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x0006f65a cmp r1, r8 |
0x0006f65c bne 0x6f64e |
| }
| label_8:
0x0006f65e add.w r8, r8, 1 | r8++;
0x0006f662 cmp r0, 0 |
| if (r0 == 0) {
0x0006f664 beq 0x6f638 | goto label_0;
| }
| label_9:
0x0006f666 ldr r6, [sp, 0x20] | r6 = var_20h;
0x0006f668 str r5, [sp, 0x24] | var_24h = r5;
| label_7:
0x0006f66a ldr r5, [sp, 0x24] | r5 = var_24h;
0x0006f66c movs r3, 0 | r3 = 0;
0x0006f66e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006f670 add.w r8, r5, 1 | r8 = r5 + 1;
0x0006f674 lsl.w r8, r8, 2 | r8 <<= 2;
0x0006f678 mov r2, r8 | r2 = r8;
0x0006f67a bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0006f67e str r0, [sp, 0x40] | var_40h = r0;
0x0006f680 cmp r0, 0 |
| if (r0 == 0) {
0x0006f682 beq.w 0x7040e | goto label_76;
| }
0x0006f686 cmp r5, 0 |
0x0006f688 add.w r1, r7, 8 | r1 = r7 + 8;
0x0006f68c str r5, [r0] | *(r0) = r5;
| if (r5 <= 0) {
0x0006f68e ble 0x6f6aa | goto label_77;
| }
0x0006f690 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0006f692 sub.w r0, r8, 4 | r0 = r8 - 4;
0x0006f696 ldr r5, [sp, 0x24] | r5 = var_24h;
0x0006f698 add r0, r2 | r0 += r2;
| do {
0x0006f69a ldrh r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x0006f69c adds r1, 0x10 | r1 += 0x10;
0x0006f69e subs r3, 1 | r3--;
0x0006f6a0 str r3, [r2, 4]! | *((r2 += 4)) = r3;
0x0006f6a4 cmp r0, r2 |
0x0006f6a6 bne 0x6f69a |
| } while (r0 != r2);
0x0006f6a8 str r5, [sp, 0x24] | var_24h = r5;
| label_77:
0x0006f6aa mov r1, r4 | r1 = r4;
0x0006f6ac mov r0, fp | r0 = fp;
0x0006f6ae bl 0x2de00 | fcn_0002de00 (r0, r1, r2);
0x0006f6b2 str r0, [sp, 0x50] | var_50h = r0;
| label_21:
0x0006f6b4 ldr.w r0, [fp] | r0 = *(fp);
0x0006f6b8 mov r1, r7 | r1 = r7;
0x0006f6ba movs r2, 0 | r2 = 0;
0x0006f6bc str r7, [r4, 0x30] | *((r4 + 0x30)) = r7;
0x0006f6be bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x0006f6c2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006f6c4 str r0, [r3, 0x30] | *((r3 + 0x30)) = r0;
0x0006f6c6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006f6c8 cmp r3, 0x86 |
| if (r3 == 0x86) {
0x0006f6ca beq.w 0x6fd64 | goto label_78;
| }
0x0006f6ce ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0006f6d0 movs r7, 0 | r7 = 0;
0x0006f6d2 ldr.w r1, [fp, 0x2c] | r1 = *(arg_2ch);
0x0006f6d6 mov r2, r7 | r2 = r7;
0x0006f6d8 mov r0, r6 | r0 = r6;
0x0006f6da ldr.w sb, [r3] | sb = *(r3);
0x0006f6de str r7, [sp] | *(sp) = r7;
0x0006f6e0 add.w r3, sb, 1 | r3 = sb + 1;
0x0006f6e4 add r3, r1 | r3 += r1;
0x0006f6e6 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x0006f6ea adds r3, r1, 1 | r3 = r1 + 1;
0x0006f6ec movs r1, 0x45 | r1 = 0x45;
0x0006f6ee str r3, [sp, 0x48] | var_48h = r3;
0x0006f6f0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006f6f4 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006f6f6 movs r2, 1 | r2 = 1;
0x0006f6f8 mov r1, sb | r1 = sb;
0x0006f6fa bl 0x1b6dc | r0 = fcn_0001b6dc (r0, r1, r2);
0x0006f6fe mov sl, r0 | sl = r0;
0x0006f700 cmp r0, 0 |
| if (r0 == 0) {
0x0006f702 beq.w 0x7023c | goto label_79;
| }
0x0006f706 cmp sb, r7 |
| if (sb <= r7) {
0x0006f708 ble.w 0x7023c | goto label_79;
| }
0x0006f70c str r6, [sp, 0x20] | var_20h = r6;
0x0006f70e add.w r8, r0, 0x10 | r8 = r0 + 0x10;
0x0006f712 mov r6, r7 | r6 = r7;
0x0006f714 b 0x6f74a |
| while (r7 != 0) {
0x0006f716 ldr r5, [r7, 0x34] | r5 = *((r7 + 0x34));
0x0006f718 cmp r5, 0 |
| if (r5 == 0) {
0x0006f71a beq.w 0x6fa84 | goto label_80;
| }
0x0006f71e ldr r1, [r5, 0x34] | r1 = *((r5 + 0x34));
0x0006f720 cmp r1, 0 |
| if (r1 == 0) {
0x0006f722 beq.w 0x6fa6a | goto label_81;
| }
0x0006f726 mov r2, r6 | r2 = r6;
0x0006f728 mov r0, fp | r0 = fp;
0x0006f72a bl 0x2dd64 | r0 = fcn_0002dd64 (r0, r1, r2);
0x0006f72e cmp r0, 0 |
| if (r0 == 0) {
0x0006f730 beq.w 0x6fa6a | goto label_81;
| }
| label_1:
0x0006f734 ldr.w r1, [sl, 0x10] | r1 = *((sl + 0x10));
0x0006f738 mov.w r3, 0 | r3 = 0;
0x0006f73c str r0, [r8, 4]! | *((r8 += 4)) = r0;
0x0006f740 strb r3, [r1, r6] | *((r1 + r6)) = r3;
0x0006f742 adds r6, 1 | r6++;
0x0006f744 cmp sb, r6 |
| if (sb == r6) {
0x0006f746 beq.w 0x7023a | goto label_82;
| }
0x0006f74a ldr r7, [r4, 0x34] | r7 = *((r4 + 0x34));
0x0006f74c cmp r7, 0 |
0x0006f74e bne 0x6f716 |
| }
| label_10:
0x0006f750 ldr r1, [r4, 0x1c] | r1 = *((r4 + 0x1c));
0x0006f752 ldr r0, [r1] | r0 = *(r1);
0x0006f754 cmp r0, r6 |
0x0006f756 it le |
| if (r0 <= r6) {
0x0006f758 movle r0, 0 | r0 = 0;
| goto label_83;
| }
| if (r0 <= r6) {
| label_83:
0x0006f75a ble 0x6f734 | goto label_1;
| }
0x0006f75c add.w r1, r1, r6, lsl 4 | r1 += (r6 << 4);
0x0006f760 mov r0, fp | r0 = fp;
0x0006f762 ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x0006f764 bl 0x2d47c | fcn_0002d47c (r0, r1);
0x0006f768 b 0x6f734 | goto label_1;
| label_57:
0x0006f76a ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x0006f76e cmp r3, 0 |
| if (r3 == 0) {
0x0006f770 beq.w 0x6fabc | goto label_84;
| }
| label_11:
0x0006f774 mov r0, fp | r0 = fp;
0x0006f776 bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x0006f77a ldrb.w r3, [sp, 0x60] | r3 = var_60h;
0x0006f77e mov r5, r0 | r5 = r0;
0x0006f780 cmp r3, 0xc |
| if (r3 != 0xc) {
0x0006f782 bne.w 0x6f346 | goto label_2;
| }
| label_58:
0x0006f786 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0006f788 movs r2, 0 | r2 = 0;
0x0006f78a movs r1, 0x70 | r1 = 0x70;
0x0006f78c mov r0, r5 | r0 = r5;
0x0006f78e ldr r3, [r3] | r3 = *(r3);
0x0006f790 str r2, [sp] | *(sp) = r2;
0x0006f792 ldr r2, [sp, 0x64] | r2 = var_64h;
0x0006f794 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006f798 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0006f79a movs r3, 0xe | r3 = 0xe;
0x0006f79c strb.w r3, [sp, 0x60] | var_60h = r3;
0x0006f7a0 lsls r3, r0, 0x15 | r3 = r0 << 0x15;
| if (r3 >= r0) {
0x0006f7a2 bpl.w 0x6f34e | goto label_3;
| }
| label_59:
0x0006f7a6 ldr.w sb, [r4, 0x3c] | sb = *((r4 + 0x3c));
0x0006f7aa ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0006f7ac clz r1, sb | r1 &= sb;
0x0006f7b0 lsrs r1, r1, 5 | r1 >>= 5;
0x0006f7b2 cmp r3, 0 |
| if (r3 != 0) {
0x0006f7b4 bne.w 0x6f34e | goto label_3;
| }
0x0006f7b8 mov r3, r4 | r3 = r4;
0x0006f7ba movs r7, 1 | r7 = 1;
0x0006f7bc b 0x6f7c8 | goto label_85;
| label_4:
0x0006f7be ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x0006f7c0 add r7, r1 | r7 += r1;
0x0006f7c2 cmp r2, 0 |
| if (r2 != 0) {
0x0006f7c4 bne.w 0x6f34e | goto label_3;
| }
| label_85:
0x0006f7c8 mov r6, r3 | r6 = r3;
0x0006f7ca ldr r3, [r3, 0x34] | r3 = *((r3 + 0x34));
0x0006f7cc cmp r3, 0 |
| if (r3 != 0) {
0x0006f7ce bne 0x6f7be | goto label_4;
| }
0x0006f7d0 cmp r7, 1 |
| if (r7 == 1) {
0x0006f7d2 beq.w 0x704a8 | goto label_86;
| }
0x0006f7d6 ldr.w r3, [pc, 0x568] | r3 = *(0x0006fd40);
0x0006f7da add r3, pc | r3 += pc;
| label_26:
0x0006f7dc ldr.w r2, [pc, 0x564] | r2 = fcn.0003f638;
0x0006f7e0 movs r5, 0 | r5 = 0;
0x0006f7e2 str r3, [sp] | *(sp) = r3;
0x0006f7e4 mov r8, r7 | r8 = r7;
0x0006f7e6 mov r3, r7 | r3 = r7;
0x0006f7e8 movs r4, 1 | r4 = 1;
0x0006f7ea mov r7, sb | r7 = sb;
0x0006f7ec add r2, pc | r2 += pc;
0x0006f7ee mov r1, r5 | r1 = r5;
0x0006f7f0 mov r0, fp | r0 = fp;
0x0006f7f2 bl 0x2e274 | fcn_0002e274 (r0, r1);
| do {
0x0006f7f6 movs r3, 0 | r3 = 0;
0x0006f7f8 mov.w r2, -1 | r2 = -1;
0x0006f7fc mov r1, r6 | r1 = r6;
0x0006f7fe mov r0, fp | r0 = fp;
0x0006f800 strd r4, r4, [sp, 8] | __asm ("strd r4, r4, [var_8h]");
0x0006f804 strd r5, sl, [sp] | __asm ("strd r5, sl, [sp]");
0x0006f808 bl 0x69308 | fcn_00069308 (r0, r1, r2, r3, r4, r5, r6);
| if (r7 != 0) {
0x0006f80c cbnz r7, 0x6f818 | goto label_5;
| }
0x0006f80e strh.w r8, [r6, 2] | *((r6 + 2)) = r8;
0x0006f812 ldr r6, [r6, 0x38] | r6 = *((r6 + 0x38));
0x0006f814 cmp r6, 0 |
0x0006f816 bne 0x6f7f6 |
| } while (r6 != 0);
| do {
| label_5:
0x0006f818 ldrd r2, r3, [sp, 0x6c] | __asm ("ldrd r2, r3, [var_6ch]");
0x0006f81c movs r7, 0 | r7 = 0;
0x0006f81e ldr r1, [sp, 0x10] | r1 = var_10h;
0x0006f820 strd r2, r3, [r1, 0xc] | __asm ("strd r2, r3, [r1, 0xc]");
| label_61:
0x0006f846 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0006f848 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0006f84a ldr r7, [r4, 0x20] | r7 = *((r4 + 0x20));
0x0006f84c ldr.w sb, [fp, 8] | sb = *(arg_8h);
0x0006f850 ldr.w r8, [r2] | r8 = *(r2);
0x0006f854 cmp r3, 0 |
| if (r3 == 0) {
0x0006f856 beq 0x6f8e8 | goto label_87;
| }
0x0006f858 ldr.w r1, [pc, 0x4f0] | r1 = *(0x0006fd4c);
0x0006f85c mov r0, fp | r0 = fp;
0x0006f85e add r1, pc | r1 += pc;
0x0006f860 bl 0x25778 | fcn_00025778 (r0);
| label_6:
0x0006f864 ldr.w r7, [fp, 0x24] | r7 = *(arg_24h);
0x0006f868 cmp r7, 0 |
0x0006f86a bne 0x6f818 |
| } while (r7 != 0);
0x0006f86c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0006f86e lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 >= r3) {
0x0006f870 bpl 0x6f818 | goto label_5;
| }
0x0006f872 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0006f874 movs r2, 1 | r2 = 1;
0x0006f876 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006f878 ldr.w sb, [r3] | sb = *(r3);
0x0006f87c mov r1, sb | r1 = sb;
0x0006f87e bl 0x1b6dc | r0 = fcn_0001b6dc (r0, r1, r2);
0x0006f882 mov r8, r0 | r8 = r0;
0x0006f884 cmp r0, 0 |
| if (r0 == 0) {
0x0006f886 beq.w 0x70ab8 | goto label_88;
| }
0x0006f88a str r7, [sp, 0x18] | var_18h = r7;
| label_87:
0x0006f8e8 mov r2, r3 | r2 = r3;
0x0006f8ea movs r1, 0x21 | r1 = 0x21;
0x0006f8ec mov r0, fp | r0 = fp;
0x0006f8ee str r3, [sp] | *(sp) = r3;
0x0006f8f0 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0006f8f4 mov r6, r0 | r6 = r0;
0x0006f8f6 cmp r0, 0 |
| if (r0 != 0) {
0x0006f8f8 bne 0x6f864 | goto label_6;
| }
0x0006f8fa ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0006f8fe mov r0, fp | r0 = fp;
0x0006f900 mov r1, r4 | r1 = r4;
0x0006f902 mov r2, r3 | r2 = r3;
0x0006f904 str r3, [sp, 0x2c] | var_2ch = r3;
0x0006f906 subs r2, 1 | r2--;
0x0006f908 mov.w r3, 0x140 | r3 = 0x140;
0x0006f90c str.w r2, [fp, 0x38] | __asm ("str.w r2, [arg_38h]");
0x0006f910 strh r3, [r4, 2] | *((r4 + 2)) = r3;
0x0006f912 str r2, [sp, 0x28] | var_28h = r2;
0x0006f914 bl 0x67420 | fcn_00067420 (r0, r1, r2, r3);
0x0006f918 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x0006f91a ldr r0, [r7] | r0 = *(r7);
0x0006f91c str r6, [r4, 0x3c] | *((r4 + 0x3c)) = r6;
0x0006f91e str r3, [sp, 0x30] | var_30h = r3;
0x0006f920 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0006f922 cmp r0, 0 |
0x0006f924 str r6, [r4, 8] | *((r4 + 8)) = r6;
0x0006f926 str r3, [sp, 0x34] | var_34h = r3;
0x0006f928 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0006f92a str r6, [r4, 0xc] | *((r4 + 0xc)) = r6;
0x0006f92c str r3, [sp, 0x3c] | var_3ch = r3;
0x0006f92e ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0006f930 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r0 <= 0) {
0x0006f932 ble.w 0x70526 | goto label_89;
| }
0x0006f936 mov r3, r6 | r3 = r6;
0x0006f938 b 0x6f942 |
| while (r2 == 0) {
0x0006f93a adds r3, 1 | r3++;
0x0006f93c cmp r3, r0 |
| if (r3 == r0) {
0x0006f93e beq.w 0x707b6 | goto label_90;
| }
0x0006f942 add.w r1, r3, r3, lsl 3 | r1 = r3 + (r3 << 3);
0x0006f946 add.w r1, r7, r1, lsl 3 | r1 = r7 + (r1 << 3);
0x0006f94a ldrb.w r2, [r1, 0x2d] | r2 = *((r1 + 0x2d));
0x0006f94e ubfx r2, r2, 5, 1 | r2 = (r2 >> 5) & ((1 << 1) - 1);
0x0006f952 cmp r2, 0 |
0x0006f954 beq 0x6f93a |
| }
0x0006f956 ldr r3, [r1, 0x30] | r3 = *((r1 + 0x30));
0x0006f958 str r3, [sp, 0x20] | var_20h = r3;
| label_32:
0x0006f95a ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x0006f95e ldr.w r2, [fp, 0x28] | r2 = *(arg_28h);
0x0006f962 adds r3, 1 | r3++;
0x0006f964 str r3, [sp, 0x24] | var_24h = r3;
0x0006f966 adds r3, r2, 1 | r3 = r2 + 1;
0x0006f968 str r2, [sp, 0x18] | var_18h = r2;
0x0006f96a str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x0006f96e ldrb r2, [r4] | r2 = *(r4);
0x0006f970 cmp r2, 0x85 |
| if (r2 == 0x85) {
0x0006f972 beq.w 0x707fe | goto label_91;
| }
0x0006f976 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006f978 cmp r3, 0 |
| if (r3 == 0) {
0x0006f97a beq.w 0x708b4 | goto label_92;
| }
0x0006f97e ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006f980 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0006f982 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0006f986 str r3, [sp, 0x9c] | var_9ch = r3;
0x0006f988 movs r3, 0 | r3 = 0;
0x0006f98a str r3, [sp, 0xa0] | var_a0h = r3;
0x0006f98c str r3, [sp, 0xac] | var_ach = r3;
0x0006f98e strd r3, r3, [sp, 0xa4] | __asm ("strd r3, r3, [var_a4h]");
0x0006f992 movs r3, 7 | r3 = 7;
0x0006f994 str.w r2, [fp, 0x2c] | __asm ("str.w r2, [arg_2ch]");
| label_43:
0x0006f998 movs r1, 0x75 | r1 = 0x75;
0x0006f99a strb.w r3, [sp, 0x98] | var_98h = r3;
0x0006f99e mov r0, sb | r0 = sb;
0x0006f9a0 mov r3, r2 | r3 = r2;
0x0006f9a2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006f9a4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006f9a8 mov r1, r4 | r1 = r4;
0x0006f9aa mov r0, fp | r0 = fp;
0x0006f9ac bl 0x2de00 | fcn_0002de00 (r0, r1, r2);
0x0006f9b0 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x0006f9b2 mvn r2, 8 | r2 = ~8;
0x0006f9b6 movs r1, 0x70 | r1 = 0x70;
0x0006f9b8 ldr r3, [r7] | r3 = *(r7);
0x0006f9ba str r2, [sp, 8] | var_8h = r2;
0x0006f9bc movs r2, 0 | r2 = 0;
0x0006f9be str r0, [sp, 4] | var_4h = r0;
0x0006f9c0 mov r0, sb | r0 = sb;
0x0006f9c2 str r2, [sp] | *(sp) = r2;
0x0006f9c4 adds r3, 2 | r3 += 2;
0x0006f9c6 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006f9c8 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0006f9cc str r7, [sp, 0xb0] | var_b0h = r7;
| label_50:
0x0006f9ce cmp r6, 0 |
| if (r6 != 0) {
0x0006f9d0 bne.w 0x7082e | goto label_93;
| }
| label_48:
0x0006f9d4 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| label_44:
0x0006f9d6 movs r2, 0 | r2 = 0;
0x0006f9d8 mov r6, r4 | r6 = r4;
0x0006f9da str r2, [r4, 0x30] | *((r4 + 0x30)) = r2;
0x0006f9dc movs r2, 0x86 | r2 = 0x86;
0x0006f9de b 0x6f9f0 |
| while (r1 >= r3) {
0x0006f9e0 ldr r7, [r6, 0x34] | r7 = *((r6 + 0x34));
0x0006f9e2 strb r2, [r6] | *(r6) = r2;
0x0006f9e4 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0006f9e6 ands r1, r3, 0x2000 | r1 = r3 & 0x2000;
| if (r1 == r3) {
0x0006f9ea beq.w 0x705e8 | goto label_94;
| }
0x0006f9ee mov r6, r7 | r6 = r7;
0x0006f9f0 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x0006f9f2 bpl 0x6f9e0 |
| }
0x0006f9f4 ldr r1, [pc, 0x358] |
0x0006f9f6 mov r0, fp | r0 = fp;
0x0006f9f8 add r1, pc | r1 = 0xdf74c;
0x0006f9fa bl 0x25778 | fcn_00025778 (r0);
| label_39:
0x0006f9fe ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
| if (r1 != 0) {
0x0006fa00 cbz r1, 0x6fa0a |
0x0006fa02 ldr.w r0, [fp] | r0 = *(fp);
0x0006fa06 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x0006fa08 invalid |
| }
0x0006fa0a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006fa0c str r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
0x0006fa0e ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006fa10 str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x0006fa12 b 0x6f864 | goto label_6;
| label_73:
0x0006fa14 add r3, sp, 0x98 | r3 += var_98h;
0x0006fa16 str r3, [sp, 0x38] | var_38h = r3;
0x0006fa18 b 0x6f66a | goto label_7;
| if (r1 != 0) {
| label_74:
0x0006fa1a bne.w 0x6f65e | goto label_8;
| }
| label_75:
0x0006fa1e mov r2, r6 | r2 = r6;
0x0006fa20 movs r3, 0 | r3 = 0;
0x0006fa22 movs r1, 0x9a | r1 = 0x9a;
0x0006fa24 mov r0, sl | r0 = sl;
0x0006fa26 strd sb, sb, [sp, 0x98] | __asm ("strd sb, sb, [var_98h]");
0x0006fa2a bl 0x1afec | r0 = fcn_0001afec (r0, r1, r2, r3);
0x0006fa2e mov r2, r0 | r2 = r0;
0x0006fa30 cmp r0, 0 |
| if (r0 == 0) {
0x0006fa32 beq.w 0x7086a | goto label_95;
| }
0x0006fa36 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0006fa38 mov r1, r7 | r1 = r7;
0x0006fa3a str.w r8, [r0, 8] | __asm ("str.w r8, [r0, 8]");
0x0006fa3e orr r3, r3, 0x400 | r3 |= 0x400;
0x0006fa42 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0006fa44 mov r0, fp | r0 = fp;
0x0006fa46 bl 0x1c2ac | r0 = fcn_0001c2ac (r0, r1, r2);
0x0006fa4a mov r7, r0 | r7 = r0;
0x0006fa4c str r0, [r4, 0x30] | *((r4 + 0x30)) = r0;
| if (r0 != 0) {
0x0006fa4e cbz r0, 0x6fa5a |
0x0006fa50 adds r5, 1 | r5++;
0x0006fa52 add.w r3, r0, r5, lsl 4 | r3 = r0 + (r5 << 4);
0x0006fa56 strh.w r8, [r3, 4] | *((r3 + 4)) = r8;
| }
0x0006fa5a ldrb.w r0, [sl, 0x53] | r0 = *((sl + 0x53));
0x0006fa5e add.w r8, r8, 1 | r8++;
0x0006fa62 cmp r0, 0 |
| if (r0 == 0) {
0x0006fa64 beq.w 0x6f638 | goto label_0;
| }
0x0006fa68 b 0x6f666 | goto label_9;
| label_81:
0x0006fa6a ldr r1, [r5, 0x1c] | r1 = *((r5 + 0x1c));
0x0006fa6c ldr r0, [r1] | r0 = *(r1);
0x0006fa6e cmp r0, r6 |
| if (r0 <= r6) {
0x0006fa70 ble 0x6fa84 | goto label_80;
| }
0x0006fa72 add.w r1, r1, r6, lsl 4 | r1 += (r6 << 4);
0x0006fa76 mov r0, fp | r0 = fp;
0x0006fa78 ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x0006fa7a bl 0x2d47c | r0 = fcn_0002d47c (r0, r1);
0x0006fa7e cmp r0, 0 |
| if (r0 != 0) {
0x0006fa80 bne.w 0x6f734 | goto label_1;
| }
| label_80:
0x0006fa84 ldr r1, [r7, 0x1c] | r1 = *((r7 + 0x1c));
0x0006fa86 ldr r0, [r1] | r0 = *(r1);
0x0006fa88 cmp r0, r6 |
| if (r0 <= r6) {
0x0006fa8a ble.w 0x6f750 | goto label_10;
| }
0x0006fa8e add.w r1, r1, r6, lsl 4 | r1 += (r6 << 4);
0x0006fa92 mov r0, fp | r0 = fp;
0x0006fa94 ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x0006fa96 bl 0x2d47c | r0 = fcn_0002d47c (r0, r1);
0x0006fa9a cmp r0, 0 |
| if (r0 != 0) {
0x0006fa9c bne.w 0x6f734 | goto label_1;
| }
0x0006faa0 b 0x6f750 | goto label_10;
| do {
| label_12:
0x0006fab0 ldrd r2, r3, [sp, 0x6c] | __asm ("ldrd r2, r3, [var_6ch]");
0x0006fab4 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0006fab6 strd r2, r3, [r1, 0xc] | __asm ("strd r2, r3, [r1, 0xc]");
0x0006faba b 0x6f824 | void (*0x6f824)() ();
| label_84:
0x0006fabc ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006fabe ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0006fac0 lsls r2, r3, 0x1c | r2 = r3 << 0x1c;
0x0006fac2 itt pl |
| if (r2 < r3) {
0x0006fac4 movpl r3, 1 | r3 = 1;
| }
| if (r2 < r3) {
0x0006fac6 strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x0006faca b 0x6f774 | goto label_11;
| label_65:
0x0006facc ldrb.w r3, [sp, 0x60] | r3 = var_60h;
0x0006fad0 cmp r3, 1 |
| if (r3 != 1) {
0x0006fad2 bne.w 0x70416 | goto label_96;
| }
0x0006fad6 ldr r6, [sp, 0x64] | r6 = var_64h;
| label_22:
0x0006fad8 movs r3, 0 | r3 = 0;
0x0006fada add r2, sp, 0x98 | r2 += var_98h;
0x0006fadc mov.w sb, 1 | sb = 1;
0x0006fae0 mov r1, r8 | r1 = r8;
0x0006fae2 mov r0, fp | r0 = fp;
0x0006fae4 str r6, [sp, 0x9c] | var_9ch = r6;
0x0006fae6 str r2, [sp, 0x38] | var_38h = r2;
0x0006fae8 str r3, [sp, 0xa0] | var_a0h = r3;
0x0006faea str r3, [sp, 0xac] | var_ach = r3;
0x0006faec strd r3, r3, [sp, 0xa4] | __asm ("strd r3, r3, [var_a4h]");
0x0006faf0 strb.w sb, [sp, 0x98] | var_98h = sb;
0x0006faf4 bl 0x5f5e0 | r0 = fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006faf8 mov r7, r0 | r7 = r0;
0x0006fafa cmp r0, 0 |
0x0006fafc bne 0x6fab0 |
| } while (r0 != 0);
0x0006fafe ldrb r3, [r4] | r3 = *(r4);
0x0006fb00 ldr r2, [r4, 0x3c] | r2 = *((r4 + 0x3c));
0x0006fb02 cmp r3, 0x87 |
0x0006fb04 str r2, [sp, 0x1c] | var_1ch = r2;
| if (r3 == 0x87) {
0x0006fb06 beq.w 0x70724 | goto label_97;
| }
0x0006fb0a cmp r3, 0x88 |
0x0006fb0c mov r2, sb | r2 = sb;
| if (r3 == 0x88) {
0x0006fb0e beq.w 0x704ea | goto label_98;
| }
| if (r3 > 0x88) {
0x0006fb12 bhi.w 0x70512 | goto label_99;
| }
0x0006fb16 cmp r3, 0x86 |
| if (r3 != 0x86) {
0x0006fb18 bne.w 0x704f4 | goto label_100;
| }
0x0006fb1c ldr r3, [pc, 0x234] |
0x0006fb1e add r3, pc | r3 = 0xdf876;
| label_30:
0x0006fb20 strb.w r2, [sp, 0x98] | var_98h = r2;
0x0006fb24 movs r7, 0 | r7 = 0;
0x0006fb26 ldr r2, [pc, 0x230] |
0x0006fb28 movs r1, 1 | r1 = 1;
0x0006fb2a mov r0, fp | r0 = fp;
0x0006fb2c str r7, [r4, 0x34] | *((r4 + 0x34)) = r7;
0x0006fb2e str r7, [r4, 0x3c] | *((r4 + 0x3c)) = r7;
0x0006fb30 add r2, pc | r2 = 0xdf88e;
0x0006fb32 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0006fb36 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0006fb38 mov r1, r4 | r1 = r4;
0x0006fb3a mov r0, fp | r0 = fp;
0x0006fb3c bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006fb40 ldrb r3, [r4] | r3 = *(r4);
0x0006fb42 ldr r2, [r4, 0x34] | r2 = *((r4 + 0x34));
0x0006fb44 str r7, [r4, 0x30] | *((r4 + 0x30)) = r7;
0x0006fb46 mov r7, r0 | r7 = r0;
0x0006fb48 cmp r3, 0x85 |
0x0006fb4a str.w r8, [r4, 0x34] | __asm ("str.w r8, [r4, 0x34]");
0x0006fb4e str r2, [sp, 0x18] | var_18h = r2;
| if (r3 == 0x85) {
0x0006fb50 bne 0x6fb60 |
0x0006fb52 ldrsh.w r1, [r8, 2] | r1 = *((r8 + 2));
0x0006fb56 ldrsh.w r0, [r4, 2] | r0 = *((r4 + 2));
0x0006fb5a bl 0xef34 | fcn_0000ef34 (r0, r1);
0x0006fb5e strh r0, [r4, 2] | *((r4 + 2)) = r0;
| }
0x0006fb60 ldr r1, [r4, 0x3c] | r1 = *((r4 + 0x3c));
| if (r1 != 0) {
0x0006fb62 cbz r1, 0x6fb6a |
0x0006fb64 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006fb66 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x0006fb6a ldrb.w r2, [sp, 0x60] | r2 = var_60h;
0x0006fb6e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0006fb70 cmp r2, 1 |
0x0006fb72 str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x0006fb74 mov.w r3, 0 | r3 = 0;
0x0006fb78 strd r3, r3, [r4, 8] | __asm ("strd r3, r3, [r4, 8]");
| if (r2 == 1) {
0x0006fb7c beq.w 0x6f5ba | void (*0x6f5ba)() ();
| }
0x0006fb80 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0006fb82 ldrb.w sb, [r3, 0x53] | sb = *((r3 + 0x53));
0x0006fb86 cmp.w sb, 0 |
| if (sb != 0) {
0x0006fb8a bne.w 0x6f5ba | void (*0x6f5ba)() ();
| }
0x0006fb8e ldr.w r8, [fp, 0x38] | r8 = *(arg_38h);
0x0006fb92 mov r1, r4 | r1 = r4;
0x0006fb94 mov r0, fp | r0 = fp;
0x0006fb96 add.w r3, r8, -1 | r3 = r8 + -1;
0x0006fb9a sub.w r2, r8, 2 | r2 = r8 - 2;
0x0006fb9e str r2, [sp, 0x1c] | var_1ch = r2;
0x0006fba0 str.w r2, [fp, 0x38] | __asm ("str.w r2, [arg_38h]");
0x0006fba4 mov r2, r3 | r2 = r3;
0x0006fba6 str r3, [sp, 0x20] | var_20h = r3;
0x0006fba8 bl 0x67420 | fcn_00067420 (r0, r1, r2, r3);
0x0006fbac ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006fbae mov r2, r6 | r2 = r6;
0x0006fbb0 movs r1, 0x25 | r1 = 0x25;
0x0006fbb2 mov r0, r5 | r0 = r5;
0x0006fbb4 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006fbb8 str r3, [sp, 0x24] | var_24h = r3;
0x0006fbba bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006fbbe ldr r3, [r5, 0x6c] | r3 = *((r5 + 0x6c));
0x0006fbc0 mov r1, r4 | r1 = r4;
0x0006fbc2 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006fbc4 mov r0, fp | r0 = fp;
0x0006fbc6 str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h]");
0x0006fbca str r3, [sp, 0x20] | var_20h = r3;
0x0006fbcc ldr r3, [sp, 0x24] | r3 = var_24h;
0x0006fbce str r2, [sp, 8] | var_8h = r2;
0x0006fbd0 mov r2, r6 | r2 = r6;
0x0006fbd2 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006fbd6 str r3, [sp, 0xc] | var_ch = r3;
0x0006fbd8 mov r3, sb | r3 = sb;
0x0006fbda bl 0x69308 | fcn_00069308 (r0, r1, r2, r3, r4, r5, r6);
0x0006fbde ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006fbe0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0006fbe2 ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x0006fbe6 mvns r2, r2 | r2 = ~r2;
0x0006fbe8 cmn r1, r3 |
| if (r1 < r3) {
0x0006fbea bmi.w 0x70aae | goto label_101;
| }
0x0006fbee ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0006fbf0 ldr r1, [r5, 0x6c] | r1 = *((r5 + 0x6c));
0x0006fbf2 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
| label_56:
0x0006fbf6 movs r2, 0 | r2 = 0;
0x0006fbf8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0006fbfa str r2, [sp] | *(sp) = r2;
0x0006fbfc movs r1, 5 | r1 = 5;
0x0006fbfe mov r2, r6 | r2 = r6;
0x0006fc00 mov r0, r5 | r0 = r5;
0x0006fc02 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006fc06 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0006fc08 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0006fc0c cmn r2, r3 |
| if (r2 < r3) {
0x0006fc0e bmi.w 0x70aa0 | goto label_102;
| }
0x0006fc12 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0006fc14 lsl.w r3, r8, 2 | r3 = r8 << 2;
0x0006fc18 ldr r1, [r5, 0x6c] | r1 = *((r5 + 0x6c));
0x0006fc1a rsbs r3, r3, 0 | r3 -= ;
0x0006fc1c str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_55:
0x0006fc1e movs r3, 0 | r3 = 0;
0x0006fc20 mov r2, r6 | r2 = r6;
0x0006fc22 movs r1, 0x76 | r1 = 0x76;
0x0006fc24 mov r0, r5 | r0 = r5;
0x0006fc26 str r3, [sp] | *(sp) = r3;
0x0006fc28 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006fc2c b 0x6f5ba | void (*0x6f5ba)() ();
| label_64:
0x0006fc2e ldrd r1, r2, [r4, 8] | __asm ("ldrd r1, r2, [r4, 8]");
0x0006fc32 movs r6, 0 | r6 = 0;
0x0006fc34 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x0006fc36 mov r0, fp | r0 = fp;
0x0006fc38 str r6, [sp, 0x98] | var_98h = r6;
0x0006fc3a strd r1, r2, [r8, 8] | __asm ("strd r1, r2, [r8, 8]");
0x0006fc3e mov r2, sl | r2 = sl;
0x0006fc40 mov r1, r8 | r1 = r8;
0x0006fc42 str.w r3, [r8, 0x3c] | __asm ("str.w r3, [r8, 0x3c]");
0x0006fc46 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006fc4a str.w r6, [r8, 0x3c] | __asm ("str.w r6, [r8, 0x3c]");
0x0006fc4e mov r7, r0 | r7 = r0;
0x0006fc50 cmp r0, 0 |
| if (r0 != 0) {
0x0006fc52 bne.w 0x6fab0 | goto label_12;
| }
0x0006fc56 ldr.w sb, [r8, 8] | sb = *((r8 + 8));
0x0006fc5a ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x0006fc5e str r0, [r4, 0x34] | *((r4 + 0x34)) = r0;
0x0006fc60 str.w sb, [r4, 8] | __asm ("str.w sb, [r4, 8]");
0x0006fc64 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x0006fc66 cmp.w sb, 0 |
| if (sb != 0) {
0x0006fc6a bne.w 0x7072e | goto label_103;
| }
0x0006fc6e ldr r2, [pc, 0xec] |
0x0006fc70 movs r1, 1 | r1 = 1;
0x0006fc72 mov r0, fp | r0 = fp;
0x0006fc74 add r2, pc | r2 = 0xdf9d6;
0x0006fc76 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0006fc7a mov r2, sl | r2 = sl;
0x0006fc7c mov r1, r4 | r1 = r4;
0x0006fc7e mov r0, fp | r0 = fp;
0x0006fc80 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006fc84 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0006fc86 mov r7, r0 | r7 = r0;
0x0006fc88 ldrsh.w r1, [r8, 2] | r1 = *((r8 + 2));
0x0006fc8c ldrsh.w r0, [r4, 2] | r0 = *((r4 + 2));
0x0006fc90 str.w r8, [r4, 0x34] | __asm ("str.w r8, [r4, 0x34]");
0x0006fc94 str r3, [sp, 0x18] | var_18h = r3;
0x0006fc96 bl 0xef34 | fcn_0000ef34 (r0, r1);
0x0006fc9a ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x0006fc9c mov r8, r0 | r8 = r0;
0x0006fc9e strh r0, [r4, 2] | *((r4 + 2)) = r0;
0x0006fca0 cmp r3, 0 |
| if (r3 == 0) {
0x0006fca2 beq.w 0x6f5ba | void (*0x6f5ba)() ();
| }
0x0006fca6 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x0006fca8 add r1, sp, 0x98 | r1 += var_98h;
0x0006fcaa bl 0x9c04 | r0 = fcn_00009c04 (r0, r1);
0x0006fcae cmp r0, 0 |
| if (r0 == 0) {
0x0006fcb0 beq.w 0x6f5ba | void (*0x6f5ba)() ();
| }
0x0006fcb4 ldr r2, [sp, 0x98] | r2 = var_98h;
0x0006fcb6 cmp r2, 0 |
| if (r2 <= 0) {
0x0006fcb8 ble.w 0x6f5ba | void (*0x6f5ba)() ();
| }
0x0006fcbc mov r6, sb | r6 = sb;
| label_78:
0x0006fd64 ldr r5, [sp, 0x14] | r5 = var_14h;
0x0006fd66 movs r7, 0 | r7 = 0;
0x0006fd68 ldr.w r3, [pc, 0xc54] |
0x0006fd6c mov r1, r4 | r1 = r4;
0x0006fd6e str r7, [r4, 0x34] | *((r4 + 0x34)) = r7;
0x0006fd70 mov r0, fp | r0 = fp;
0x0006fd72 ldr r2, [r4, 0x30] | r2 = *((r4 + 0x30));
0x0006fd74 add r3, pc | r3 = 0xe0738;
0x0006fd76 str r7, [r5, 0x38] | *((r5 + 0x38)) = r7;
0x0006fd78 bl 0x318f8 | fcn_000318f8 (r0, r1, r2, r3);
0x0006fd7c ldr.w sl, [r5, 0x34] | sl = *((r5 + 0x34));
0x0006fd80 cmp.w sl, 0 |
| if (sl == 0) {
0x0006fd84 beq.w 0x705d0 | goto label_104;
| }
0x0006fd88 mov sl, r7 | sl = r7;
0x0006fd8a str r7, [sp, 0x48] | var_48h = r7;
| label_38:
0x0006fd8c ldr r2, [sp, 0x30] | r2 = var_30h;
0x0006fd8e mov r1, r4 | r1 = r4;
0x0006fd90 mov r0, fp | r0 = fp;
0x0006fd92 bl 0x67420 | fcn_00067420 (r0, r1, r2, r3);
0x0006fd96 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006fd98 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0006fd9a sub.w r3, r3, 0x86 | r3 -= 0x86;
0x0006fd9e clz r3, r3 | r3 &= r3;
0x0006fda2 lsrs r3, r3, 5 | r3 >>= 5;
0x0006fda4 str r3, [sp, 0x44] | var_44h = r3;
0x0006fda6 cmp r2, 0 |
0x0006fda8 ite eq |
| if (r2 != 0) {
0x0006fdaa moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0) {
0x0006fdac andne r3, r3, 1 | r3 &= 1;
| }
0x0006fdb0 cmp r3, 0 |
| if (r3 != 0) {
0x0006fdb2 bne.w 0x70598 | goto label_105;
| }
0x0006fdb6 mov r8, r3 | r8 = r3;
0x0006fdb8 str r3, [sp, 0x54] | var_54h = r3;
| label_15:
0x0006fdba ldr r1, [r4, 0x3c] | r1 = *((r4 + 0x3c));
| if (r1 != 0) {
0x0006fdbc cbz r1, 0x6fdc4 |
0x0006fdbe ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0006fdc0 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x0006fdc4 ldr.w r2, [fp, 0x2c] | r2 = *(arg_2ch);
0x0006fdc8 movs r3, 0 | r3 = 0;
0x0006fdca str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x0006fdcc movs r1, 0xd | r1 = 0xd;
0x0006fdce str r3, [sp, 0x84] | var_84h = r3;
0x0006fdd0 str r3, [sp, 0x90] | var_90h = r3;
0x0006fdd2 strd r3, r3, [sp, 0x88] | __asm ("strd r3, r3, [var_88h]");
0x0006fdd6 str r3, [sp, 0xa0] | var_a0h = r3;
0x0006fdd8 str r3, [sp, 0xac] | var_ach = r3;
0x0006fdda strd r3, r3, [sp, 0xa4] | __asm ("strd r3, r3, [var_a4h]");
0x0006fdde adds r3, r2, 4 | r3 = r2 + 4;
0x0006fde0 str r3, [sp, 0x5c] | var_5ch = r3;
0x0006fde2 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x0006fde6 ldrb r3, [r4] | r3 = *(r4);
0x0006fde8 strb.w r1, [sp, 0x7c] | var_7ch = r1;
0x0006fdec strb.w r1, [sp, 0x98] | var_98h = r1;
0x0006fdf0 adds r1, r2, 1 | r1 = r2 + 1;
0x0006fdf2 cmp r3, 0x87 |
0x0006fdf4 str r1, [sp, 0x20] | var_20h = r1;
0x0006fdf6 str r1, [sp, 0x80] | var_80h = r1;
0x0006fdf8 add.w r1, r2, 2 | r1 = r2 + 2;
0x0006fdfc add.w r2, r2, 3 | r2 += 3;
0x0006fe00 str r1, [sp, 0x28] | var_28h = r1;
0x0006fe02 str r1, [sp, 0x9c] | var_9ch = r1;
0x0006fe04 str r2, [sp, 0x3c] | var_3ch = r2;
| if (r3 == 0x87) {
0x0006fe06 beq.w 0x704b2 | goto label_106;
| }
0x0006fe0a cmp r3, 0x88 |
| if (r3 == 0x88) {
0x0006fe0c beq.w 0x703e6 | goto label_107;
| }
0x0006fe10 cmp r3, 0x86 |
| if (r3 == 0x86) {
0x0006fe12 beq.w 0x703de | goto label_108;
| }
0x0006fe16 ldr.w r3, [pc, 0xbac] | r3 = *(0x000709c4);
0x0006fe1a add r3, pc | r3 += pc;
| label_19:
0x0006fe1c ldr.w r2, [pc, 0xba8] |
0x0006fe20 movs r1, 1 | r1 = 1;
0x0006fe22 mov r0, fp | r0 = fp;
0x0006fe24 add r2, pc | r2 = 0xe07f0;
0x0006fe26 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0006fe2a ldrd r7, r3, [r6, 0x6c] | __asm ("ldrd r7, r3, [r6, 0x6c]");
0x0006fe2e cmp r7, r3 |
0x0006fe30 add.w r1, r7, 1 | r1 = r7 + 1;
| if (r7 >= r3) {
0x0006fe34 bge.w 0x70582 | goto label_109;
| }
0x0006fe38 add.w r3, r7, r7, lsl 2 | r3 = r7 + (r7 << 2);
0x0006fe3c ldr r0, [r6, 0x68] | r0 = *((r6 + 0x68));
0x0006fe3e str r1, [r6, 0x6c] | *((r6 + 0x6c)) = r1;
0x0006fe40 mov.w ip, 0 |
0x0006fe44 lsls r3, r3, 2 | r3 <<= 2;
0x0006fe46 mov.w lr, 0xd | lr = 0xd;
0x0006fe4a adds r2, r0, r3 | r2 = r0 + r3;
0x0006fe4c str r1, [r2, 0xc] | *((r2 + 0xc)) = r1;
0x0006fe4e ldr r1, [sp, 0x20] | r1 = var_20h;
0x0006fe50 str.w ip, [r2, 0x10] | __asm ("str.w ip, [r2, 0x10]");
0x0006fe54 strd r1, ip, [r2, 4] | __asm ("strd r1, ip, [r2, 4]");
0x0006fe58 str.w lr, [r0, r3] | __asm ("str.w lr, [r0, r3]");
| label_37:
0x0006fe5c ldr r5, [sp, 0x14] | r5 = var_14h;
0x0006fe5e movs r1, 1 | r1 = 1;
0x0006fe60 ldr.w r2, [pc, 0xb68] | r2 = *(0x000709cc);
0x0006fe64 mov r0, fp | r0 = fp;
0x0006fe66 mov.w sb, 0 | sb = 0;
0x0006fe6a str.w r8, [r5, 8] | __asm ("str.w r8, [r5, 8]");
0x0006fe6c strh r0, [r1] | *(r1) = r0;
0x0006fe6e add.w r8, sp, 0x7c | r8 += var_7ch;
0x0006fe72 add r2, pc | r2 += pc;
0x0006fe74 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0006fe78 mov r2, r8 | r2 = r8;
0x0006fe7a mov r1, r5 | r1 = r5;
0x0006fe7c mov r0, fp | r0 = fp;
0x0006fe7e bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006fe82 mov r3, sb | r3 = sb;
0x0006fe84 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006fe86 movs r1, 0x42 | r1 = 0x42;
0x0006fe88 mov r0, r6 | r0 = r6;
0x0006fe8a str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006fe8e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006fe92 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0006fe94 cmp r7, sb |
0x0006fe96 strb.w sb, [r3, 0x13] | *((r3 + 0x13)) = sb;
0x0006fe9a str.w sb, [r3, 0x1c] | __asm ("str.w sb, [r3, 0x1c]");
0x0006fe9e ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x0006fea0 it lt |
| if (r7 >= sb) {
0x0006fea2 addlt r7, r3, -1 | r7 = r3 + -1;
| }
0x0006fea6 str r3, [sp, 0x2c] | var_2ch = r3;
0x0006fea8 ldr r3, [r6] | r3 = *(r6);
0x0006feaa ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0006feae cmp r3, 0 |
| if (r3 != 0) {
0x0006feb0 bne.w 0x701ec | goto label_110;
| }
0x0006feb4 ldr r3, [r6, 0x68] | r3 = *((r6 + 0x68));
0x0006feb6 add.w r7, r7, r7, lsl 2 | r7 += (r7 << 2);
0x0006feba add.w r3, r3, r7, lsl 2 | r3 += (r7 << 2);
| label_13:
0x0006febe ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0006fec0 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0006fec2 adds r1, r2, 1 | r1 = r2 + 1;
0x0006fec4 ldr r3, [r6, 0x70] | r3 = *((r6 + 0x70));
0x0006fec6 cmp r2, r3 |
| if (r2 >= r3) {
0x0006fec8 bge.w 0x70532 | goto label_111;
| }
0x0006fecc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0006fece movs r7, 0 | r7 = 0;
0x0006fed0 ldr r0, [r6, 0x68] | r0 = *((r6 + 0x68));
0x0006fed2 mov.w ip, 0xd |
0x0006fed6 str r1, [r6, 0x6c] | *((r6 + 0x6c)) = r1;
0x0006fed8 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0006fedc lsls r3, r3, 2 | r3 <<= 2;
0x0006fede adds r2, r0, r3 | r2 = r0 + r3;
0x0006fee0 str r1, [r2, 0xc] | *((r2 + 0xc)) = r1;
0x0006fee2 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0006fee4 str r7, [r2, 0x10] | *((r2 + 0x10)) = r7;
0x0006fee6 strd r1, r7, [r2, 4] | __asm ("strd r1, r7, [r2, 4]");
0x0006feea str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
| label_33:
0x0006feee ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0006fef0 movs r7, 0 | r7 = 0;
0x0006fef2 ldr.w r2, [pc, 0xadc] | r2 = *(0x000709d0);
0x0006fef6 movs r1, 1 | r1 = 1;
0x0006fef8 ldr.w sb, [r4, 0xc] | sb = *((r4 + 0xc));
0x0006fefc mov r0, fp | r0 = fp;
0x0006fefe str r3, [sp, 0x58] | var_58h = r3;
0x0006ff00 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0006ff02 add r2, pc | r2 += pc;
0x0006ff04 str r7, [r4, 0xc] | *((r4 + 0xc)) = r7;
0x0006ff06 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0006ff08 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0006ff0c ldr r2, [sp, 0x38] | r2 = var_38h;
0x0006ff0e mov r1, r4 | r1 = r4;
0x0006ff10 mov r0, fp | r0 = fp;
0x0006ff12 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0006ff16 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0006ff18 movs r1, 0x42 | r1 = 0x42;
0x0006ff1a ldr r2, [sp, 0x28] | r2 = var_28h;
0x0006ff1c mov r0, r6 | r0 = r6;
0x0006ff1e strd r3, sb, [r4, 8] | __asm ("strd r3, sb, [r4, 8]");
0x0006ff20 subs r1, 2 | r1 -= 2;
0x0006ff22 mov r3, r7 | r3 = r7;
0x0006ff24 str r7, [sp] | *(sp) = r7;
0x0006ff26 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006ff2a ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0006ff2c mov r2, r8 | r2 = r8;
0x0006ff2e mov r1, r4 | r1 = r4;
0x0006ff30 mov r0, fp | r0 = fp;
0x0006ff32 strb r7, [r3, 0x13] | *((r3 + 0x13)) = r7;
0x0006ff34 str r7, [r3, 0x1c] | *((r3 + 0x1c)) = r7;
0x0006ff36 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006ff38 strd sl, r3, [sp, 8] | __asm ("strd sl, r3, [var_8h]");
0x0006ff3c ldr r3, [sp, 0x48] | r3 = var_48h;
0x0006ff3e str r3, [sp, 4] | var_4h = r3;
0x0006ff40 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0006ff42 str r3, [sp] | *(sp) = r3;
0x0006ff44 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0006ff46 bl 0x334bc | fcn_000334bc (r0, r1, r2, r3, r4, r5, r6);
0x0006ff4a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006ff4c mov sb, r0 | sb = r0;
0x0006ff4e subs r3, 0x85 | r3 -= 0x85;
0x0006ff50 cmp r3, 1 |
0x0006ff52 str r3, [sp, 0x54] | var_54h = r3;
| if (r3 < 1) {
0x0006ff54 bls.w 0x70294 | goto label_112;
| }
0x0006ff58 cmp.w sl, 0 |
| if (sl == 0) {
0x0006ff5c beq.w 0x7052c | goto label_113;
| }
0x0006ff60 ldr.w r3, [sl] | r3 = *(sl);
0x0006ff64 subs r3, 1 | r3--;
0x0006ff66 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x0006ff6a cmp r3, 0 |
| if (r3 == 0) {
0x0006ff6c beq.w 0x70594 | goto label_114;
| }
0x0006ff70 str r7, [sp, 0x48] | var_48h = r7;
| label_28:
0x0006ff72 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0006ff74 subs r3, 0x87 | r3 -= 0x87;
0x0006ff76 cmp r3, 1 |
| if (r3 > 1) {
0x0006ff78 bhi.w 0x702b8 | goto label_27;
| }
0x0006ff7c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0006ff7e mov sl, r3 | sl = r3;
0x0006ff80 str r3, [sp, 0x38] | var_38h = r3;
| label_16:
0x0006ff82 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0006ff84 ldrd r8, r3, [r6, 0x6c] | __asm ("ldrd r8, r3, [r6, 0x6c]");
0x0006ff88 cmp r2, 0x88 |
0x0006ff8a mov r7, r8 | r7 = r8;
| if (r2 != 0x88) {
0x0006ff8c bne.w 0x701f6 | goto label_115;
| }
0x0006ff90 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0006ff92 ldrsh.w r1, [r4, 2] | r1 = *((r4 + 2));
0x0006ff96 ldrsh.w r2, [r2, 2] | r2 = *((r2 + 2));
0x0006ff9a cmp r1, r2 |
0x0006ff9c itt gt |
| if (r1 <= r2) {
0x0006ff9e movgt r8, sl | r8 = sl;
| }
| if (r1 > r2) {
0x0006ffa0 strhgt r2, [r4, 2] | __asm ("strhgt r2, [r4, 2]");
| }
| if (r1 <= r2) {
0x0006ffa2 bgt 0x6ffa6 |
0x0006ffa4 mov r8, sl | r8 = sl;
| }
| label_14:
0x0006ffa6 cmp r7, r3 |
| if (r7 >= r3) {
0x0006ffa8 bge.w 0x70544 | goto label_116;
| }
0x0006ffac add.w r3, r7, r7, lsl 2 | r3 = r7 + (r7 << 2);
0x0006ffb0 ldr r1, [r6, 0x68] | r1 = *((r6 + 0x68));
0x0006ffb2 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x0006ffb4 adds r2, r7, 1 | r2 = r7 + 1;
0x0006ffb6 lsls r3, r3, 2 | r3 <<= 2;
0x0006ffb8 str r2, [r6, 0x6c] | *((r6 + 0x6c)) = r2;
0x0006ffba movs r0, 0 | r0 = 0;
0x0006ffbc adds r2, r1, r3 | r2 = r1 + r3;
0x0006ffbe mov.w ip, 0xc |
0x0006ffc2 strd r5, sb, [r2, 4] | __asm ("strd r5, sb, [r2, 4]");
0x0006ffc6 strd r0, r0, [r2, 0xc] | __asm ("strd r0, r0, [r2, 0xc]");
0x0006ffca str.w ip, [r1, r3] | __asm ("str.w ip, [r1, r3]");
| label_34:
0x0006ffce mov.w sb, 0 | sb = 0;
0x0006ffd2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0006ffd4 mov r3, sl | r3 = sl;
0x0006ffd6 movs r1, 0xe | r1 = 0xe;
0x0006ffd8 mov r0, r6 | r0 = r6;
0x0006ffda str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0006ffde bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0006ffe2 ldrd r3, r2, [r6, 0x6c] | __asm ("ldrd r3, r2, [r6, 0x6c]");
0x0006ffe6 cmp r3, r2 |
| if (r3 >= r2) {
0x0006ffe8 bge.w 0x7056c | goto label_117;
| }
0x0006ffec add.w r2, r3, r3, lsl 2 | r2 = r3 + (r3 << 2);
0x0006fff0 ldr r1, [r6, 0x68] | r1 = *((r6 + 0x68));
0x0006fff2 ldr r5, [sp, 0x34] | r5 = var_34h;
0x0006fff4 adds r3, 1 | r3++;
0x0006fff6 lsls r2, r2, 2 | r2 <<= 2;
0x0006fff8 str r3, [r6, 0x6c] | *((r6 + 0x6c)) = r3;
0x0006fffa movs r0, 0xb | r0 = 0xb;
0x0006fffc str r3, [sp, 0x10] | var_10h = r3;
0x0006fffe adds r3, r1, r2 | r3 = r1 + r2;
0x00070000 strd r5, sb, [r3, 8] | __asm ("strd r5, sb, [r3, 8]");
0x00070004 str.w sb, [r3, 0x10] | __asm ("str.w sb, [r3, 0x10]");
0x00070008 str r0, [r1, r2] | *((r1 + r2)) = r0;
0x0007000a str.w sb, [r3, 4] | __asm ("str.w sb, [r3, 4]");
| label_36:
0x0007000e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00070010 cmp r3, 0 |
| if (r3 != 0) {
0x00070012 bne.w 0x7039a | goto label_118;
| }
0x00070014 strh r2, [r0, 0xe] | *((r0 + 0xe)) = r2;
0x00070016 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00070018 cmp r3, 0x88 |
0x0007001a it eq |
| if (r3 != 0x88) {
0x0007001c addeq sl, r7, 1 | sl = r7 + 1;
| }
| if (r3 != 0x88) {
0x00070020 beq 0x70064 |
0x00070022 ldr r3, [r6, 0x70] | r3 = *((r6 + 0x70));
0x00070024 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00070026 cmp r2, r3 |
| if (r2 >= r3) {
0x00070028 bge.w 0x70870 | goto label_119;
| }
0x0007002c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0007002e mov.w ip, 0xe |
0x00070032 ldr r0, [r6, 0x68] | r0 = *((r6 + 0x68));
0x00070034 ldr r5, [sp, 0x20] | r5 = var_20h;
0x00070036 mov r1, r2 | r1 = r2;
0x00070038 add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x0007003c adds r2, 1 | r2++;
0x0007003e str r2, [r6, 0x6c] | *((r6 + 0x6c)) = r2;
0x00070040 lsls r3, r3, 2 | r3 <<= 2;
0x00070042 adds r2, r0, r3 | r2 = r0 + r3;
0x00070044 str r5, [r2, 4] | *((r2 + 4)) = r5;
0x00070046 ldr r5, [sp, 0x44] | r5 = var_44h;
0x00070048 str.w sl, [r2, 8] | __asm ("str.w sl, [r2, 8]");
0x0007004c strd r5, r5, [r2, 0xc] | __asm ("strd r5, r5, [r2, 0xc]");
0x00070050 str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
| label_45:
0x00070054 mov sl, r7 | sl = r7;
0x00070056 mov r0, r6 | r0 = r6;
0x00070058 mov r7, r1 | r7 = r1;
0x0007005a ldr r1, [sp, 0x34] | r1 = var_34h;
0x0007005c bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x00070060 ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x00070062 str r3, [sp, 0x10] | var_10h = r3;
| }
| label_17:
0x00070064 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00070066 cmp r3, 1 |
| if (r3 < 1) {
0x00070068 bls.w 0x70482 | goto label_120;
| }
| label_23:
0x0007006c mov.w sb, 0 | sb = 0;
0x00070070 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00070072 mov r3, r8 | r3 = r8;
0x00070074 movs r1, 0xe | r1 = 0xe;
0x00070076 mov r0, r6 | r0 = r6;
0x00070078 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0007007c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00070080 ldrd r3, r2, [r6, 0x6c] | __asm ("ldrd r3, r2, [r6, 0x6c]");
0x00070084 cmp r3, r2 |
| if (r3 >= r2) {
0x00070086 bge.w 0x70558 | goto label_121;
| }
0x0007008a add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0007008e ldr r0, [r6, 0x68] | r0 = *((r6 + 0x68));
0x00070090 ldr r5, [sp, 0x34] | r5 = var_34h;
0x00070092 adds r3, 1 | r3++;
0x00070094 lsls r1, r1, 2 | r1 <<= 2;
0x00070096 mov.w ip, 0xb |
0x0007009a str r3, [r6, 0x6c] | *((r6 + 0x6c)) = r3;
0x0007009c adds r2, r0, r1 | r2 = r0 + r1;
0x0007009e strd r5, sb, [r2, 8] | __asm ("strd r5, sb, [r2, 8]");
0x000700a2 str.w sb, [r2, 0x10] | __asm ("str.w sb, [r2, 0x10]");
0x000700a6 str.w ip, [r0, r1] | __asm ("str.w ip, [r0, r1]");
0x000700aa str.w sb, [r2, 4] | __asm ("str.w sb, [r2, 4]");
| label_35:
0x000700ae ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000700b0 cmp r2, 0 |
0x000700b2 itt lt |
| if (r2 >= 0) {
0x000700b4 addlt r2, r3, -1 | r2 = r3 + -1;
| }
| if (r2 < 0) {
0x000700b8 str r2, [sp, 0x2c] | var_2ch = r2;
| }
0x000700ba ldr r2, [r6] | r2 = *(r6);
0x000700bc ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x000700c0 cmp r2, 0 |
| if (r2 != 0) {
0x000700c2 bne.w 0x701e2 | goto label_122;
| }
0x000700c6 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000700c8 add.w r1, r2, r2, lsl 2 | r1 = r2 + (r2 << 2);
0x000700cc ldr r2, [r6, 0x68] | r2 = *((r6 + 0x68));
0x000700ce add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
| do {
0x000700d2 mov.w sb, 0 | sb = 0;
0x000700d6 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x000700d8 movs r1, 0xe | r1 = 0xe;
0x000700da ldr r3, [sp, 0x38] | r3 = var_38h;
0x000700dc ldr r2, [sp, 0x20] | r2 = var_20h;
0x000700de mov r0, r6 | r0 = r6;
0x000700e0 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000700e4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000700e8 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000700ea mov r3, r8 | r3 = r8;
0x000700ec movs r1, 0xe | r1 = 0xe;
0x000700ee mov r0, r6 | r0 = r6;
0x000700f0 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000700f4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000700f8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000700fa ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x000700fc mvns r2, r3 | r2 = ~r3;
0x000700fe ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x00070102 cmn r1, r3 |
| if (r1 < r3) {
0x00070104 bmi.w 0x704a0 | goto label_123;
| }
0x00070108 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0007010a ldr r1, [r6, 0x6c] | r1 = *((r6 + 0x6c));
0x0007010c str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
| label_25:
0x00070110 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00070112 mvn r2, 0xe | r2 = ~0xe;
0x00070116 movs r1, 0x56 | r1 = 0x56;
0x00070118 str r2, [sp, 8] | var_8h = r2;
0x0007011a mov r0, r6 | r0 = r6;
0x0007011c str r3, [sp, 4] | var_4h = r3;
0x0007011e movs r3, 0 | r3 = 0;
0x00070120 mov r2, r3 | r2 = r3;
0x00070122 str r3, [sp] | *(sp) = r3;
0x00070124 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00070128 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0007012a movs r1, 0x57 | r1 = 0x57;
0x0007012c ldr r2, [sp, 0x88] | r2 = var_88h;
0x0007012e mov r0, r6 | r0 = r6;
0x00070130 str r3, [sp, 4] | var_4h = r3;
0x00070132 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00070134 str r3, [sp] | *(sp) = r3;
0x00070136 mvn r3, 8 | r3 = ~8;
0x0007013a str r3, [sp, 8] | var_8h = r3;
0x0007013c ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0007013e bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00070142 ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x00070144 cmp r3, 0 |
| if (r3 > 0) {
0x00070146 ble 0x70158 |
0x00070148 ldr r2, [r6, 0x68] | r2 = *((r6 + 0x68));
0x0007014a add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0007014e add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x00070152 movs r3, 1 | r3 = 1;
0x00070154 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
0x00070158 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0007015a mov r2, sl | r2 = sl;
0x0007015c movs r1, 0x10 | r1 = 0x10;
0x0007015e mov r0, r6 | r0 = r6;
0x00070160 str r3, [sp] | *(sp) = r3;
0x00070162 mov r3, r7 | r3 = r7;
0x00070164 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00070168 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0007016a ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0007016e cmn r2, r3 |
| if (r2 < r3) {
0x00070170 bmi.w 0x70494 | goto label_124;
| }
0x00070174 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00070176 ldr r1, [r6, 0x6c] | r1 = *((r6 + 0x6c));
0x00070178 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0007017a lsls r3, r3, 2 | r3 <<= 2;
0x0007017c rsbs r3, r3, 0 | r3 -= ;
0x0007017e str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_24:
0x00070180 ldr r1, [r4, 0x34] | r1 = *((r4 + 0x34));
| if (r1 != 0) {
0x00070182 cbz r1, 0x7018c |
0x00070184 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00070186 movs r2, 1 | r2 = 1;
0x00070188 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
| }
0x0007018c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007018e ldr r1, [r3, 0x30] | r1 = *((r3 + 0x30));
0x00070190 str r3, [r4, 0x34] | *((r4 + 0x34)) = r3;
0x00070192 str r4, [r3, 0x38] | *((r3 + 0x38)) = r4;
| if (r1 != 0) {
0x00070194 cbz r1, 0x7019c |
0x00070196 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00070198 bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x0007019c ldr.w r3, [fp, 0xd4] | r3 = *(arg_d4h);
0x000701a0 movs r2, 0 | r2 = 0;
0x000701a2 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000701a4 cmp r3, 0 |
0x000701a6 str r2, [r1, 0x30] | *((r1 + 0x30)) = r2;
0x000701a8 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
| if (r3 != 0) {
0x000701ac beq 0x701d0 |
0x000701ae ldr r1, [r2] | r1 = *(r2);
0x000701b0 it lt |
| if (r3 >= 0) {
0x000701b2 ldrlt r3, [r2, 0x6c] | r3 = *((r2 + 0x6c));
| }
0x000701b4 ldrb.w r1, [r1, 0x53] | r1 = *((r1 + 0x53));
0x000701b8 it lt |
| if (r3 >= 0) {
0x000701ba addlt r3, r3, -1 | r3 += -1;
| }
0x000701be cmp r1, 0 |
| if (r1 != 0) {
0x000701c0 bne.w 0x7039e | goto label_125;
| }
0x000701c4 ldr r2, [r2, 0x68] | r2 = *((r2 + 0x68));
0x000701c6 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000701ca add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_18:
0x000701ce ldr r3, [r3, 8] | r3 = *((r3 + 8));
| }
0x000701d0 ldr.w r7, [fp, 0x24] | r7 = *(arg_24h);
0x000701d4 str.w r3, [fp, 0xd4] | __asm ("str.w r3, [arg_d4h]");
0x000701d8 subs r7, 0 |
0x000701da it ne |
| if (r7 == 0) {
0x000701dc movne r7, 1 | r7 = 1;
| }
0x000701de b.w 0x6f824 | void (*0x6f824)() ();
| label_122:
0x000701e2 ldr.w r2, [pc, 0x7f0] | r2 = *(0x000709d4);
0x000701e6 add r2, pc | r2 += pc;
0x000701e8 adds r2, 4 | r2 += 4;
0x000701ea b 0x700d2 |
| } while (1);
| label_110:
0x000701ec ldr.w r3, [pc, 0x7e8] |
0x000701f0 add r3, pc | r3 = 0xe0bcc;
0x000701f2 adds r3, 4 | r3 += 4;
0x000701f4 b 0x6febe | goto label_13;
| label_115:
0x000701f6 cmp r3, r8 |
| if (r3 <= r8) {
0x000701f8 ble.w 0x707bc | goto label_126;
| }
0x000701fc add.w r3, r8, r8, lsl 2 | r3 = r8 + (r8 << 2);
0x00070200 ldr r1, [r6, 0x68] | r1 = *((r6 + 0x68));
0x00070202 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x00070204 add.w r2, r8, 1 | r2 = r8 + 1;
0x00070208 lsls r3, r3, 2 | r3 <<= 2;
0x0007020a str r2, [r6, 0x6c] | *((r6 + 0x6c)) = r2;
0x0007020c movs r0, 0 | r0 = 0;
0x0007020e adds r2, r1, r3 | r2 = r1 + r3;
0x00070210 movs r7, 0xc | r7 = 0xc;
0x00070212 strd r5, sb, [r2, 4] | __asm ("strd r5, sb, [r2, 4]");
0x00070216 strd r0, r0, [r2, 0xc] | __asm ("strd r0, r0, [r2, 0xc]");
0x0007021a str r7, [r1, r3] | *((r1 + r3)) = r7;
| label_40:
0x0007021c movs r2, 0 | r2 = 0;
0x0007021e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00070220 movs r1, 0xe | r1 = 0xe;
0x00070222 str r2, [sp] | *(sp) = r2;
0x00070224 mov r0, r6 | r0 = r6;
0x00070226 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00070228 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007022c mov r1, r8 | r1 = r8;
0x0007022e mov r0, r6 | r0 = r6;
0x00070230 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x00070234 ldrd r7, r3, [r6, 0x6c] | __asm ("ldrd r7, r3, [r6, 0x6c]");
0x00070238 b 0x6ffa6 | goto label_14;
| label_82:
0x0007023a ldr r6, [sp, 0x20] | r6 = var_20h;
| label_79:
0x0007023c ldr r5, [sp, 0x14] | r5 = var_14h;
0x0007023e movs r7, 0 | r7 = 0;
0x00070240 ldr.w r3, [pc, 0x798] |
0x00070244 mov r1, r4 | r1 = r4;
0x00070246 str r7, [r4, 0x34] | *((r4 + 0x34)) = r7;
0x00070248 mov r0, fp | r0 = fp;
0x0007024a ldr r2, [r4, 0x30] | r2 = *((r4 + 0x30));
0x0007024c add r3, pc | r3 = 0xe0c2c;
0x0007024e str r7, [r5, 0x38] | *((r5 + 0x38)) = r7;
0x00070250 bl 0x318f8 | fcn_000318f8 (r0, r1, r2, r3);
0x00070254 ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00070256 cmp r3, 0 |
| if (r3 == 0) {
0x00070258 beq.w 0x705d4 | goto label_127;
| }
0x0007025c ldr r2, [sp, 0x30] | r2 = var_30h;
0x0007025e mov r1, r4 | r1 = r4;
0x00070260 mov r0, fp | r0 = fp;
0x00070262 str r7, [sp, 0x44] | var_44h = r7;
0x00070264 mov r8, r7 | r8 = r7;
0x00070266 bl 0x67420 | fcn_00067420 (r0, r1, r2, r3);
0x0007026a str r7, [sp, 0x54] | var_54h = r7;
0x0007026c b 0x6fdba | goto label_15;
| label_112:
0x00070294 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00070296 mov r0, fp | r0 = fp;
0x00070298 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0007029a ldr r2, [sp, 0x38] | r2 = var_38h;
0x0007029c strd sl, r1, [sp, 8] | __asm ("strd sl, r1, [var_8h]");
0x000702a0 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x000702a2 str r3, [sp, 4] | var_4h = r3;
0x000702a4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000702a6 str r1, [sp] | *(sp) = r1;
0x000702a8 mov r1, r4 | r1 = r4;
0x000702aa bl 0x334bc | fcn_000334bc (r0, r1, r2, r3, r4, r5, r6);
0x000702ae str r0, [sp, 0x48] | var_48h = r0;
0x000702b0 cmp.w sl, 0 |
| if (sl != 0) {
0x000702b4 bne.w 0x704ba | goto label_128;
| }
| label_27:
0x000702b8 ldrd sl, r1, [r6, 0x6c] | __asm ("ldrd sl, r1, [r6, 0x6c]");
0x000702bc cmp sl, r1 |
| if (sl >= r1) {
0x000702be bge.w 0x707e4 | goto label_129;
| }
0x000702c2 add.w r3, sl, sl, lsl 2 | r3 = sl + (sl << 2);
0x000702c6 ldr r0, [r6, 0x68] | r0 = *((r6 + 0x68));
0x000702c8 ldr r5, [sp, 0x5c] | r5 = var_5ch;
0x000702ca add.w r2, sl, 1 | r2 = sl + 1;
0x000702ce lsls r3, r3, 2 | r3 <<= 2;
0x000702d0 str r2, [r6, 0x6c] | *((r6 + 0x6c)) = r2;
0x000702d2 str r2, [sp, 0x38] | var_38h = r2;
0x000702d4 movs r7, 0 | r7 = 0;
0x000702d6 adds r2, r0, r3 | r2 = r0 + r3;
0x000702d8 mov.w ip, 0xc |
0x000702dc str r5, [r2, 4] | *((r2 + 4)) = r5;
0x000702de ldr r5, [sp, 0x48] | r5 = var_48h;
0x000702e0 str r7, [r2, 0x10] | *((r2 + 0x10)) = r7;
0x000702e2 strd r5, r7, [r2, 8] | __asm ("strd r5, r7, [r2, 8]");
0x000702e6 str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
| label_42:
0x000702ea ldr r3, [sp, 0x38] | r3 = var_38h;
0x000702ec cmp r1, r3 |
| if (r1 <= r3) {
0x000702ee ble.w 0x707d0 | goto label_130;
| }
0x000702f2 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000702f4 movs r0, 0 | r0 = 0;
0x000702f6 ldr r1, [r6, 0x68] | r1 = *((r6 + 0x68));
0x000702f8 movs r7, 0xe | r7 = 0xe;
0x000702fa ldr r5, [sp, 0x28] | r5 = var_28h;
0x000702fc add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x00070300 adds r2, 1 | r2++;
0x00070302 str r2, [r6, 0x6c] | *((r6 + 0x6c)) = r2;
0x00070304 lsls r3, r3, 2 | r3 <<= 2;
0x00070306 adds r2, r1, r3 | r2 = r1 + r3;
0x00070308 str r5, [r2, 4] | *((r2 + 4)) = r5;
0x0007030a ldr r5, [sp, 0x30] | r5 = var_30h;
0x0007030c str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x0007030e strd r5, r0, [r2, 8] | __asm ("strd r5, r0, [r2, 8]");
0x00070312 str r7, [r1, r3] | *((r1 + r3)) = r7;
| label_41:
0x00070314 mov r1, sl | r1 = sl;
0x00070316 mov r0, r6 | r0 = r6;
0x00070318 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0007031c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0007031e ldrsh.w r0, [r4, 2] | r0 = *((r4 + 2));
0x00070322 ldrsh.w r1, [r3, 2] | r1 = *((r3 + 2));
0x00070326 bl 0xef34 | fcn_0000ef34 (r0, r1);
0x0007032a strh r0, [r4, 2] | *((r4 + 2)) = r0;
0x0007032c b 0x6ff82 | goto label_16;
| label_118:
0x0007039a mov sl, r7 | sl = r7;
0x0007039c b 0x70064 | goto label_17;
| label_125:
0x0007039e ldr.w r3, [pc, 0x644] | r3 = *(0x000709e4);
0x000703a2 add r3, pc | r3 += pc;
0x000703a4 adds r3, 4 | r3 += 4;
0x000703a6 b 0x701ce | goto label_18;
| label_108:
0x000703de ldr.w r3, [pc, 0x608] | r3 = *(0x000709e8);
0x000703e2 add r3, pc | r3 += pc;
0x000703e4 b 0x6fe1c | goto label_19;
| label_107:
0x000703e6 ldr.w r3, [pc, 0x604] | r3 = *(0x000709ec);
0x000703ea add r3, pc | r3 += pc;
0x000703ec b 0x6fe1c | goto label_19;
| label_63:
0x000703ee ldr.w r2, [pc, 0x600] | r2 = *(0x000709f0);
0x000703f2 mov r0, fp | r0 = fp;
0x000703f4 movs r1, 1 | r1 = 1;
0x000703f6 add r2, pc | r2 += pc;
0x000703f8 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x000703fc ldr.w r2, [pc, 0x5f4] |
0x00070400 movs r1, 1 | r1 = 1;
0x00070402 mov r0, fp | r0 = fp;
0x00070404 add r2, pc | r2 = 0xe0dfc;
0x00070406 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x0007040a b.w 0x6f376 | goto label_20;
| label_76:
0x0007040e ldr r3, [sp, 0x40] | r3 = var_40h;
0x00070410 str r3, [sp, 0x50] | var_50h = r3;
0x00070412 b.w 0x6f6b4 | goto label_21;
| label_96:
0x00070416 ldrd r2, r3, [r5, 0x6c] | __asm ("ldrd r2, r3, [r5, 0x6c]");
0x0007041a ldr.w r6, [fp, 0x28] | r6 = *(arg_28h);
0x0007041e cmp r2, r3 |
0x00070420 add.w r1, r6, 1 | r1 = r6 + 1;
0x00070424 str.w r1, [fp, 0x28] | __asm ("str.w r1, [arg_28h]");
| if (r2 >= r3) {
0x00070428 bge.w 0x708a2 | goto label_131;
| }
0x0007042c add.w r1, r2, r2, lsl 2 | r1 = r2 + (r2 << 2);
0x00070430 ldr r7, [r5, 0x68] | r7 = *((r5 + 0x68));
0x00070432 adds r3, r2, 1 | r3 = r2 + 1;
0x00070434 lsls r1, r1, 2 | r1 <<= 2;
0x00070436 str r3, [r5, 0x6c] | *((r5 + 0x6c)) = r3;
0x00070438 movs r0, 0 | r0 = 0;
0x0007043a adds r3, r7, r1 | r3 = r7 + r1;
0x0007043c mov.w ip, 0x70 |
0x00070440 strd r6, r0, [r3, 4] | __asm ("strd r6, r0, [r3, 4]");
0x00070444 strd r0, r0, [r3, 0xc] | __asm ("strd r0, r0, [r3, 0xc]");
0x00070448 str.w ip, [r7, r1] | __asm ("str.w ip, [r7, r1]");
| label_47:
0x0007044c mov r3, r4 | r3 = r4;
0x0007044e str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
| do {
0x00070450 mov r2, r3 | r2 = r3;
0x00070452 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00070454 cmp r3, 0 |
0x00070456 bne 0x70450 |
| } while (r3 != 0);
0x00070458 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0007045a orr r3, r3, 0x20 | r3 |= 0x20;
0x0007045e str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00070460 b.w 0x6fad8 | goto label_22;
| label_120:
0x00070482 movs r1, 0 | r1 = 0;
0x00070484 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00070486 str r1, [sp] | *(sp) = r1;
0x00070488 mov r0, r6 | r0 = r6;
0x0007048a ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0007048c movs r1, 0xc | r1 = 0xc;
0x0007048e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00070492 b 0x7006c | goto label_23;
| label_124:
0x00070494 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00070496 mov r1, r6 | r1 = r6;
0x00070498 rsbs r2, r3, 0 | r2 = r3 - ;
0x0007049a bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0007049e b 0x70180 | goto label_24;
| label_123:
0x000704a0 mov r1, r6 | r1 = r6;
0x000704a2 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000704a6 b 0x70110 | goto label_25;
| label_86:
0x000704a8 ldr.w r3, [pc, 0x54c] |
0x000704ac add r3, pc | r3 = 0xe0ea8;
0x000704ae b.w 0x6f7dc | goto label_26;
| label_106:
0x000704b2 ldr.w r3, [pc, 0x548] | r3 = *(0x000709fc);
0x000704b6 add r3, pc | r3 += pc;
0x000704b8 b 0x6fe1c | goto label_19;
| label_128:
0x000704ba ldr.w r3, [sl] | r3 = *(sl);
0x000704be subs r3, 1 | r3--;
0x000704c0 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x000704c4 cmp r3, 0 |
| if (r3 != 0) {
0x000704c6 bne.w 0x702b8 | goto label_27;
| }
| do {
0x000704ca ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x000704ce mov r1, sl | r1 = sl;
0x000704d0 bl 0x159dc | fcn_000159dc (r0, r1);
0x000704d4 b 0x6ff72 | goto label_28;
| label_66:
0x000704d6 movs r3, 0 | r3 = 0;
0x000704d8 mov r2, r6 | r2 = r6;
0x000704da str r3, [sp] | *(sp) = r3;
0x000704dc movs r1, 0x70 | r1 = 0x70;
0x000704de mov r0, r5 | r0 = r5;
0x000704e0 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x000704e4 mov r3, r0 | r3 = r0;
0x000704e6 b.w 0x6f3be | goto label_29;
| label_98:
0x000704ea ldr.w r3, [pc, 0x514] | r3 = *(0x00070a00);
0x000704ee add r3, pc | r3 += pc;
0x000704f0 b.w 0x6fb20 | goto label_30;
| label_100:
0x000704f4 ldr.w r3, [pc, 0x50c] |
0x000704f8 add r3, pc | r3 = 0xe0f00;
0x000704fa b.w 0x6fb20 | goto label_30;
| label_70:
0x000704fe ldr.w r3, [pc, 0x508] | r3 = *(0x00070a08);
0x00070502 add r3, pc | r3 += pc;
0x00070504 b.w 0x6f458 | goto label_31;
| label_69:
0x00070508 ldr.w r3, [pc, 0x500] |
0x0007050c add r3, pc | r3 = 0xe0f1c;
0x0007050e b.w 0x6f458 | goto label_31;
| label_99:
0x00070512 ldr.w r3, [pc, 0x4fc] | r3 = *(0x00070a10);
0x00070516 add r3, pc | r3 += pc;
0x00070518 b.w 0x6fb20 | goto label_30;
| label_68:
0x0007051c ldr.w r3, [pc, 0x4f4] |
0x00070520 add r3, pc | r3 = 0xe0f38;
0x00070522 b.w 0x6f458 | goto label_31;
| label_89:
0x00070526 str r6, [sp, 0x20] | var_20h = r6;
0x00070528 b.w 0x6f95a | goto label_32;
| label_113:
0x0007052c str.w sl, [sp, 0x48] | __asm ("str.w sl, [var_48h]");
0x00070530 b 0x6ff72 | goto label_28;
| label_111:
0x00070532 str r1, [sp] | *(sp) = r1;
0x00070534 movs r3, 0 | r3 = 0;
0x00070536 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00070538 movs r1, 0xd | r1 = 0xd;
0x0007053a mov r0, r6 | r0 = r6;
0x0007053c bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00070540 str r0, [sp, 0x2c] | var_2ch = r0;
0x00070542 b 0x6feee | goto label_33;
| label_116:
0x00070544 movs r1, 0 | r1 = 0;
0x00070546 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00070548 str r1, [sp] | *(sp) = r1;
0x0007054a mov r3, sb | r3 = sb;
0x0007054c movs r1, 0xc | r1 = 0xc;
0x0007054e mov r0, r6 | r0 = r6;
0x00070550 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00070554 mov r7, r0 | r7 = r0;
0x00070556 b 0x6ffce | goto label_34;
| label_121:
0x00070558 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0007055a mov r2, sb | r2 = sb;
0x0007055c movs r1, 0xb | r1 = 0xb;
0x0007055e mov r0, r6 | r0 = r6;
0x00070560 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00070564 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00070568 ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x0007056a b 0x700ae | goto label_35;
| label_117:
0x0007056c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0007056e mov r2, sb | r2 = sb;
0x00070570 movs r1, 0xb | r1 = 0xb;
0x00070572 mov r0, r6 | r0 = r6;
0x00070574 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00070578 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0007057c ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x0007057e str r3, [sp, 0x10] | var_10h = r3;
0x00070580 b 0x7000e | goto label_36;
| label_109:
0x00070582 str r1, [sp] | *(sp) = r1;
0x00070584 movs r3, 0 | r3 = 0;
0x00070586 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00070588 movs r1, 0xd | r1 = 0xd;
0x0007058a mov r0, r6 | r0 = r6;
0x0007058c bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00070590 mov r7, r0 | r7 = r0;
0x00070592 b 0x6fe5c | goto label_37;
| label_114:
0x00070594 str r3, [sp, 0x48] | var_48h = r3;
0x00070596 b 0x704ca |
| } while (1);
| label_105:
0x00070598 ldr.w r0, [fp, 0x2c] | r0 = *(arg_2ch);
0x0007059c ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x0007059e adds r5, r0, 2 | r5 = r0 + 2;
0x000705a0 add.w r8, r0, 1 | r8 = r0 + 1;
0x000705a4 str r5, [sp, 0x54] | var_54h = r5;
0x000705a6 str.w r5, [fp, 0x2c] | __asm ("str.w r5, [arg_2ch]");
| if (r1 != 0) {
0x000705aa cbz r1, 0x705ae |
0x000705ac adds r2, r1, 1 | r2 = r1 + 1;
| }
0x000705ae movs r7, 0 | r7 = 0;
0x000705b0 str r3, [sp, 0x44] | var_44h = r3;
0x000705b2 movs r1, 0x4d | r1 = 0x4d;
0x000705b4 mov r3, r8 | r3 = r8;
0x000705b6 mov r0, r6 | r0 = r6;
0x000705b8 str r7, [sp] | *(sp) = r7;
0x000705ba bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000705be ldr r3, [sp, 0x54] | r3 = var_54h;
0x000705c0 mov r2, r8 | r2 = r8;
0x000705c2 movs r1, 0x4d | r1 = 0x4d;
0x000705c4 mov r0, r6 | r0 = r6;
0x000705c6 str r7, [sp] | *(sp) = r7;
0x000705c8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000705cc b.w 0x6fdba | goto label_15;
| label_104:
0x000705d0 str.w sl, [sp, 0x48] | __asm ("str.w sl, [var_48h]");
| label_127:
0x000705d4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000705d6 mov r0, fp | r0 = fp;
0x000705d8 ldr.w r3, [pc, 0x43c] | r3 = *(0x00070a18);
0x000705dc ldr r2, [r1, 0x30] | r2 = *((r1 + 0x30));
0x000705de add r3, pc | r3 += pc;
0x000705e0 bl 0x318f8 | fcn_000318f8 (r0, r1, r2, r3);
0x000705e4 b.w 0x6fd8c | goto label_38;
| label_94:
0x000705e8 ldr.w r2, [pc, 0x430] | r2 = *(0x00070a1c);
0x000705ec mov r0, fp | r0 = fp;
0x000705ee str r1, [r7, 0x38] | *((r7 + 0x38)) = r1;
0x000705f0 movs r1, 1 | r1 = 1;
0x000705f2 add r2, pc | r2 += pc;
0x000705f4 bl 0x2e274 | fcn_0002e274 (r0, r1);
0x000705f8 add r3, sp, 0x98 | r3 += var_98h;
0x000705fa mov r1, r7 | r1 = r7;
0x000705fc mov r2, r3 | r2 = r3;
0x000705fe mov r0, fp | r0 = fp;
0x00070600 str r3, [sp, 0x38] | var_38h = r3;
0x00070602 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x00070606 str r4, [r7, 0x38] | *((r7 + 0x38)) = r4;
0x00070608 mov r3, r0 | r3 = r0;
0x0007060a cmp r0, 0 |
| if (r0 != 0) {
0x0007060c bne.w 0x6f9fe | goto label_39;
| }
0x00070610 ldrd r8, r2, [sb, 0x6c] | __asm ("ldrd r8, r2, [sb, 0x6c]");
0x00070614 cmp r8, r2 |
| if (r8 >= r2) {
0x00070616 bge.w 0x70a8e | goto label_132;
| }
0x0007061a add.w r2, r8, r8, lsl 2 | r2 = r8 + (r8 << 2);
0x0007061e ldr.w r0, [sb, 0x68] | r0 = *((sb + 0x68));
0x00070622 add.w r1, r8, 1 | r1 = r8 + 1;
0x00070626 lsl.w lr, r2, 2 | lr = r2 << 2;
0x0007062a ldr r2, [sp, 0x18] | r2 = var_18h;
0x0007062c str.w r1, [sb, 0x6c] | __asm ("str.w r1, [sb, 0x6c]");
0x00070630 mov.w ip, 0x25 |
0x00070634 add.w r1, r0, lr | r1 = r0 + lr;
0x00070638 str r2, [r1, 4] | *((r1 + 4)) = r2;
0x0007063a ldr r2, [sp, 0x28] | r2 = var_28h;
0x0007063c str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
0x0007063e strd r2, r3, [r1, 8] | __asm ("strd r2, r3, [r1, 8]");
0x00070642 str.w ip, [r0, lr] | __asm ("str.w ip, [r0, lr]");
| label_54:
0x00070646 movs r3, 0 | r3 = 0;
0x00070648 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0007064a str r3, [sp] | *(sp) = r3;
0x0007064c movs r1, 0x84 | r1 = 0x84;
0x0007064e mov r0, sb | r0 = sb;
0x00070650 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00070654 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00070656 cmp r3, 0 |
| if (r3 == 0) {
0x00070658 beq.w 0x70a7c | goto label_133;
| }
0x0007065c ldr r3, [r3] | r3 = *(r3);
0x0007065e movs r1, 0x5b | r1 = 0x5b;
0x00070660 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00070662 mov r0, sb | r0 = sb;
0x00070664 adds r3, 1 | r3++;
0x00070666 str r2, [sp] | *(sp) = r2;
0x00070668 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0007066a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_53:
0x0007066e movs r3, 0 | r3 = 0;
0x00070670 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00070672 str r3, [sp] | *(sp) = r3;
0x00070674 movs r1, 0x7e | r1 = 0x7e;
0x00070676 mov r0, sb | r0 = sb;
0x00070678 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007067c ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0007067e ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x00070682 cmp r2, 0 |
0x00070684 str r3, [sp, 0x18] | var_18h = r3;
0x00070686 add.w r3, r3, -1 | r3 += -1;
0x0007068a str.w r3, [fp, 0x38] | __asm ("str.w r3, [arg_38h]");
| if (r2 > 0) {
0x0007068e ble 0x706a0 |
0x00070690 movs r1, 1 | r1 = 1;
0x00070692 mov r0, sb | r0 = sb;
0x00070694 str r1, [sp] | *(sp) = r1;
0x00070696 movs r1, 0x30 | r1 = 0x30;
0x00070698 str r3, [sp, 0x24] | var_24h = r3;
0x0007069a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007069e ldr r3, [sp, 0x24] | r3 = var_24h;
| }
0x000706a0 strd sl, r3, [sp, 4] | __asm ("strd sl, r3, [var_4h]");
0x000706a4 mov.w sl, 0 | sl = 0;
0x000706a8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000706aa mov r1, r4 | r1 = r4;
0x000706ac ldr r2, [sp, 0x20] | r2 = var_20h;
0x000706ae mov r0, fp | r0 = fp;
0x000706b0 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x000706b4 str r3, [sp, 0xc] | var_ch = r3;
0x000706b6 mov r3, sl | r3 = sl;
0x000706b8 bl 0x69308 | fcn_00069308 (r0, r1, r2, r3, r4, r5, r6);
0x000706bc ldr r3, [sp, 0x34] | r3 = var_34h;
0x000706be cmp r3, 0 |
0x000706c0 bne.w 0x7093a |
| while (1) {
0x000706c4 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x000706c8 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x000706cc cmn r2, r3 |
| if (r2 < r3) {
0x000706ce bmi.w 0x709b2 | goto label_134;
| }
0x000706d2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000706d4 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x000706d6 ldr.w r1, [sb, 0x6c] | r1 = *((sb + 0x6c));
0x000706da lsls r3, r3, 2 | r3 <<= 2;
0x000706dc rsbs r3, r3, 0 | r3 -= ;
0x000706de str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_51:
0x000706e0 ldr r2, [pc, 0x33c] |
0x000706e2 movs r3, 0 | r3 = 0;
0x000706e4 str r3, [r6, 0x34] | *((r6 + 0x34)) = r3;
0x000706e6 movs r1, 1 | r1 = 1;
0x000706e8 mov r0, fp | r0 = fp;
0x000706ea add r2, pc | r2 = 0xe110e;
0x000706ec bl 0x2e274 | fcn_0002e274 (r0, r1);
0x000706f0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000706f2 mov r1, r4 | r1 = r4;
0x000706f4 mov r0, fp | r0 = fp;
0x000706f6 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x000706fa mov r0, sb | r0 = sb;
0x000706fc mov r1, r8 | r1 = r8;
0x000706fe str r7, [r6, 0x34] | *((r6 + 0x34)) = r7;
0x00070700 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x00070704 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x00070708 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0007070c cmn r2, r3 |
| if (r2 < r3) {
0x0007070e bmi.w 0x709a4 | goto label_135;
| }
0x00070712 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00070714 ldr.w r1, [sb, 0x6c] | r1 = *((sb + 0x6c));
0x00070718 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0007071a lsls r3, r3, 2 | r3 <<= 2;
0x0007071c rsbs r3, r3, 0 | r3 -= ;
0x0007071e str r1, [r2, r3] | *((r2 + r3)) = r1;
0x00070720 b.w 0x6f9fe | goto label_39;
| label_97:
0x00070724 ldr r3, [pc, 0x2fc] |
0x00070726 movs r2, 2 | r2 = 2;
0x00070728 add r3, pc | r3 = 0xe1150;
0x0007072a b.w 0x6fb20 | goto label_30;
| label_103:
0x0007072e ldrd r6, r2, [r5, 0x6c] | __asm ("ldrd r6, r2, [r5, 0x6c]");
0x00070732 cmp r6, r2 |
| if (r6 < r2) {
0x00070734 bge.w 0x7090e |
0x00070738 add.w r2, r6, r6, lsl 2 | r2 = r6 + (r6 << 2);
| label_90:
0x000707b6 str r2, [sp, 0x20] | var_20h = r2;
0x000707b8 b.w 0x6f95a | goto label_32;
| label_126:
0x000707bc movs r3, 0 | r3 = 0;
0x000707be ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000707c0 str r3, [sp] | *(sp) = r3;
0x000707c2 movs r1, 0xc | r1 = 0xc;
0x000707c4 mov r3, sb | r3 = sb;
0x000707c6 mov r0, r6 | r0 = r6;
0x000707c8 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x000707cc mov r8, r0 | r8 = r0;
0x000707ce b 0x7021c | goto label_40;
| label_130:
0x000707d0 movs r3, 0 | r3 = 0;
0x000707d2 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000707d4 str r3, [sp] | *(sp) = r3;
0x000707d6 movs r1, 0xe | r1 = 0xe;
0x000707d8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000707da mov r0, r6 | r0 = r6;
0x000707dc bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000707e0 str r0, [sp, 0x38] | var_38h = r0;
0x000707e2 b 0x70314 | goto label_41;
| label_129:
0x000707e4 movs r3, 0 | r3 = 0;
0x000707e6 movs r1, 0xc | r1 = 0xc;
0x000707e8 str r3, [sp] | *(sp) = r3;
0x000707ea mov r0, r6 | r0 = r6;
0x000707ec ldr r3, [sp, 0x48] | r3 = var_48h;
0x000707ee ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x000707f0 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000707f4 ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x000707f6 mov sl, r0 | sl = r0;
0x000707f8 ldr r1, [r6, 0x70] | r1 = *((r6 + 0x70));
0x000707fa str r3, [sp, 0x38] | var_38h = r3;
0x000707fc b 0x702ea | goto label_42;
| label_91:
0x000707fe ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00070800 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00070802 adds r2, 2 | r2 += 2;
0x00070804 cmp r1, 0 |
| if (r1 == 0) {
0x00070806 beq.w 0x7094c | goto label_136;
| }
0x0007080a str.w r2, [fp, 0x28] | __asm ("str.w r2, [arg_28h]");
0x0007080e mov r6, r3 | r6 = r3;
0x00070810 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00070812 movs r3, 0 | r3 = 0;
0x00070814 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00070816 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0007081a str r3, [sp, 0xa0] | var_a0h = r3;
0x0007081c str r3, [sp, 0xac] | var_ach = r3;
0x0007081e strd r3, r3, [sp, 0xa4] | __asm ("strd r3, r3, [var_a4h]");
0x00070822 movs r3, 6 | r3 = 6;
0x00070824 str.w r2, [fp, 0x2c] | __asm ("str.w r2, [arg_2ch]");
0x00070828 str r1, [sp, 0x9c] | var_9ch = r1;
0x0007082a b.w 0x6f998 | goto label_43;
| label_93:
0x0007082e ldrd r3, r2, [sb, 0x6c] | __asm ("ldrd r3, r2, [sb, 0x6c]");
0x00070832 cmp r3, r2 |
| if (r3 >= r2) {
0x00070834 bge.w 0x70a6a | goto label_137;
| }
0x00070838 add.w r2, r3, r3, lsl 2 | r2 = r3 + (r3 << 2);
0x0007083c ldr.w r7, [sb, 0x68] | r7 = *((sb + 0x68));
0x00070840 adds r1, r3, 1 | r1 = r3 + 1;
0x00070842 lsls r2, r2, 2 | r2 <<= 2;
0x00070844 str.w r1, [sb, 0x6c] | __asm ("str.w r1, [sb, 0x6c]");
0x00070848 movs r0, 0 | r0 = 0;
0x0007084a adds r1, r7, r2 | r1 = r7 + r2;
0x0007084c mov.w ip, 0x70 |
0x00070850 strd r6, r0, [r1, 4] | __asm ("strd r6, r0, [r1, 4]");
0x00070854 strd r0, r0, [r1, 0xc] | __asm ("strd r0, r0, [r1, 0xc]");
0x00070858 str.w ip, [r7, r2] | __asm ("str.w ip, [r7, r2]");
| label_52:
0x0007085c str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x0007085e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00070860 orr r3, r3, 0x20 | r3 |= 0x20;
0x00070864 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x00070866 b.w 0x6f9d6 | goto label_44;
| label_95:
0x0007086a movs r7, 7 | r7 = 7;
0x0007086c b.w 0x6f824 | void (*0x6f824)() ();
| label_119:
0x00070870 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00070872 movs r1, 0xe | r1 = 0xe;
0x00070874 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00070876 mov r0, r6 | r0 = r6;
0x00070878 str r3, [sp] | *(sp) = r3;
0x0007087a mov r3, sl | r3 = sl;
0x0007087c bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00070880 mov r1, r0 | r1 = r0;
0x00070882 b.w 0x70054 | goto label_45;
| label_67:
0x00070890 mov r2, r0 | r2 = r0;
0x00070892 movs r1, 0x70 | r1 = 0x70;
0x00070894 mov r0, r5 | r0 = r5;
0x00070896 str r3, [sp] | *(sp) = r3;
0x00070898 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0007089c mov r1, r0 | r1 = r0;
0x0007089e b.w 0x6f42e | goto label_46;
| label_131:
0x000708a2 movs r3, 0 | r3 = 0;
0x000708a4 mov r2, r6 | r2 = r6;
0x000708a6 movs r1, 0x70 | r1 = 0x70;
0x000708a8 mov r0, r5 | r0 = r5;
0x000708aa str r3, [sp] | *(sp) = r3;
0x000708ac bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x000708b0 mov r2, r0 | r2 = r0;
0x000708b2 b 0x7044c | goto label_47;
| label_92:
0x000708b4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000708b6 movs r0, 8 | r0 = 8;
0x000708b8 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x000708ba movs r1, 0x75 | r1 = 0x75;
0x000708bc ldr r7, [sp, 0x18] | r7 = var_18h;
0x000708be str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x000708c2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000708c4 strb.w r0, [sp, 0x98] | var_98h = r0;
0x000708c8 mov r0, sb | r0 = sb;
0x000708ca str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000708ce str r7, [sp, 0x9c] | var_9ch = r7;
0x000708d0 str r6, [sp, 0xa0] | var_a0h = r6;
0x000708d2 str r6, [sp, 0xac] | var_ach = r6;
0x000708d4 strd r6, r6, [sp, 0xa4] | __asm ("strd r6, r6, [var_a4h]");
0x000708d8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000708dc mov r3, r8 | r3 = r8;
0x000708de mov r2, r7 | r2 = r7;
0x000708e0 movs r1, 0x70 | r1 = 0x70;
0x000708e2 mov r0, sb | r0 = sb;
0x000708e4 str r6, [sp] | *(sp) = r6;
0x000708e6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000708ea b.w 0x6f9d4 | goto label_48;
| label_71:
0x000708fe ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00070902 add.w r8, r3, 1 | r8 = r3 + 1;
0x00070906 str.w r8, [fp, 0x2c] | __asm ("str.w r8, [arg_2ch]");
0x0007090a b.w 0x6f4e0 | goto label_49;
| }
0x0007090e mov r3, r0 | r3 = r0;
0x00070910 str r0, [sp] | *(sp) = r0;
0x00070912 mov r2, sb | r2 = sb;
0x00070914 movs r1, 0x14 | r1 = 0x14;
0x00070916 mov r0, r5 | r0 = r5;
0x00070918 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0007091c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0007091e mov r6, r0 | r6 = r0;
0x00070920 b 0x70756 | void (*0x70756)() ();
0x0007093a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007093c movs r1, 0x3b | r1 = 0x3b;
0x0007093e ldr r2, [sp, 0x34] | r2 = var_34h;
0x00070940 mov r0, sb | r0 = sb;
0x00070942 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00070946 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007094a b 0x706c4 |
| }
| label_136:
0x0007094c ldr r1, [sp, 0x24] | r1 = var_24h;
0x0007094e movs r0, 5 | r0 = 5;
0x00070950 str.w r2, [fp, 0x28] | __asm ("str.w r2, [arg_28h]");
0x00070954 mov r6, r3 | r6 = r3;
0x00070956 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00070958 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x0007095a mov r3, r1 | r3 = r1;
0x0007095c str.w r1, [fp, 0x2c] | __asm ("str.w r1, [arg_2ch]");
0x00070960 movs r1, 0x75 | r1 = 0x75;
0x00070962 str r2, [sp, 0x9c] | var_9ch = r2;
0x00070964 strb.w r0, [sp, 0x98] | var_98h = r0;
0x00070968 mov r0, sb | r0 = sb;
0x0007096a ldr r2, [sp, 0x20] | r2 = var_20h;
0x0007096c str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00070970 str r7, [sp, 0xa0] | var_a0h = r7;
0x00070972 str r7, [sp, 0xac] | var_ach = r7;
0x00070974 strd r7, r7, [sp, 0xa4] | __asm ("strd r7, r7, [var_a4h]");
0x00070978 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007097c ldr r2, [sp, 0x18] | r2 = var_18h;
0x0007097e mov r3, r8 | r3 = r8;
0x00070980 movs r1, 0x70 | r1 = 0x70;
0x00070982 mov r0, sb | r0 = sb;
0x00070984 str r7, [sp] | *(sp) = r7;
0x00070986 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007098a b.w 0x6f9ce | goto label_50;
| label_72:
0x0007098e movs r3, 0 | r3 = 0;
0x00070990 mov r2, r6 | r2 = r6;
0x00070992 str r3, [sp] | *(sp) = r3;
0x00070994 movs r1, 0x82 | r1 = 0x82;
0x00070996 mov r3, r8 | r3 = r8;
| label_135:
0x000709a4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000709a6 mov r1, sb | r1 = sb;
0x000709a8 rsbs r2, r3, 0 | r2 = r3 - ;
0x000709aa bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000709ae b.w 0x6f9fe | goto label_39;
| label_134:
0x000709b2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000709b4 mov r1, sb | r1 = sb;
0x000709b6 rsbs r2, r3, 0 | r2 = r3 - ;
0x000709b8 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000709bc b 0x706e0 | goto label_51;
| label_137:
0x00070a6a movs r3, 0 | r3 = 0;
0x00070a6c mov r2, r6 | r2 = r6;
0x00070a6e str r3, [sp] | *(sp) = r3;
0x00070a70 movs r1, 0x70 | r1 = 0x70;
0x00070a72 mov r0, sb | r0 = sb;
0x00070a74 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00070a78 mov r3, r0 | r3 = r0;
0x00070a7a b 0x7085c | goto label_52;
| label_133:
0x00070a7c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00070a7e movs r1, 0x82 | r1 = 0x82;
0x00070a80 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00070a82 mov r0, sb | r0 = sb;
0x00070a84 str r2, [sp] | *(sp) = r2;
0x00070a86 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00070a88 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00070a8c b 0x7066e | goto label_53;
| label_132:
0x00070a8e str r0, [sp] | *(sp) = r0;
0x00070a90 movs r1, 0x25 | r1 = 0x25;
0x00070a92 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00070a94 mov r0, sb | r0 = sb;
0x00070a96 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00070a98 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00070a9c mov r8, r0 | r8 = r0;
0x00070a9e b 0x70646 | goto label_54;
| label_102:
0x00070aa0 rsb.w r2, r8, 0 | r2 = r8 - ;
0x00070aa4 mov r1, r5 | r1 = r5;
0x00070aa6 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x00070aaa b.w 0x6fc1e | goto label_55;
| label_101:
0x00070aae mov r1, r5 | r1 = r5;
0x00070ab0 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x00070ab4 b.w 0x6fbf6 | goto label_56;
| label_88:
0x00070ab8 ldrd r2, r3, [sp, 0x6c] | __asm ("ldrd r2, r3, [var_6ch]");
0x00070abc movs r7, 7 | r7 = 7;
0x00070abe ldr r1, [sp, 0x10] | r1 = var_10h;
0x00070ac0 strd r2, r3, [r1, 0xc] | __asm ("strd r2, r3, [r1, 0xc]");
0x00070ac4 b.w 0x6f824 | return void (*0x6f824)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x6f5ba */
| #include <stdint.h>
|
; (fcn) fcn.0006f5ba () | void fcn_0006f5ba (int16_t arg_8h, int16_t arg_24h, int16_t arg_d4h, int16_t arg_70h, int16_t arg_b4h) {
| int16_t var_10h_2;
| int16_t var_14h;
| int16_t var_18h_2;
| int16_t var_1ch_2;
0x0006f5ba ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0006f5bc cmp r3, 0 |
| if (r3 == 0) {
0x0006f5be beq.w 0x703a8 | goto label_7;
| }
| label_5:
0x0006f5c2 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x0006f5c6 cmp r3, 0 |
| if (r3 == 0) {
0x0006f5c8 beq.w 0x7026e | goto label_8;
| }
| label_1:
0x0006f5cc ldr r3, [sp, 0x6c] | r3 = *(arg_24h);
0x0006f5ce ldr r2, [sp, 0x10] | r2 = var_10h_2;
0x0006f5d0 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x0006f5d2 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0006f5d4 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x0006f5d6 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x0006f5d8 cmp r3, 0 |
| if (r3 != 0) {
0x0006f5da beq.w 0x6f824 |
0x0006f5de ldr r0, [sp, 0x14] | r0 = var_14h;
0x0006f5e0 movs r2, 1 | r2 = 1;
0x0006f5e2 mov r1, r3 | r1 = r3;
0x0006f5e4 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x0006f5e8 b 0x6f824 |
| }
0x0006f824 ldr.w r2, [pc, 0x520] |
0x0006f828 ldr.w r3, [pc, 0x508] | r3 = *(0x6fd34);
0x0006f82c add r2, pc | r2 = 0xdf578;
0x0006f82e ldr r3, [r2, r3] | r3 = *(0xdf578);
0x0006f830 ldr r2, [r3] | r2 = *(0xdf578);
0x0006f832 ldr r3, [sp, 0xb4] | r3 = *(arg_b4h);
0x0006f834 eors r2, r3 | r2 ^= r3;
0x0006f836 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0006f83a bne.w 0x70ac8 | goto label_9;
| }
0x0006f83e mov r0, r7 | r0 = r7;
0x0006f840 add sp, 0xbc |
0x0006f842 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0006f88c cmp.w sb, 0 |
0x0006f890 add.w sl, r8, 0x14 | sl = r8 + 0x14;
| if (sb <= 0) {
0x0006f894 ble.w 0x70332 | goto label_10;
| }
0x0006f898 str r5, [sp, 0x1c] | var_1ch_2 = r5;
0x0006f89a movs r6, 0 | r6 = 0;
0x0006f89c mov r5, r4 | r5 = r4;
0x0006f89e ldr r4, [sp, 0x14] | r4 = var_14h;
0x0006f8a0 b 0x6f8bc |
| while (r1 != 0) {
0x0006f8a2 mov r2, r6 | r2 = r6;
0x0006f8a4 mov r0, fp | r0 = fp;
0x0006f8a6 bl 0x2dd64 | r0 = fcn_0002dd64 (r0, r1, r2);
| if (r0 == 0) {
0x0006f8aa cbz r0, 0x6f8c2 | goto label_11;
| }
0x0006f8ac str.w r0, [sl] | __asm ("str.w r0, [sl]");
| label_0:
0x0006f8b0 adds r6, 1 | r6++;
0x0006f8b2 add.w sl, sl, 4 | sl += 4;
0x0006f8b6 cmp r6, sb |
| if (r6 == sb) {
0x0006f8b8 beq.w 0x7032e | goto label_12;
| }
0x0006f8bc ldr r1, [r5, 0x34] | r1 = *((r5 + 0x34));
0x0006f8be cmp r1, 0 |
0x0006f8c0 bne 0x6f8a2 |
| }
| label_11:
0x0006f8c2 ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x0006f8c4 ldr r1, [r2] | r1 = *(r2);
0x0006f8c6 cmp r1, r6 |
| if (r1 <= r6) {
0x0006f8c8 ble.w 0x6faa2 | goto label_13;
| }
0x0006f8cc add.w r2, r2, r6, lsl 4 | r2 += (r6 << 4);
0x0006f8d0 mov r0, fp | r0 = fp;
0x0006f8d2 ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x0006f8d4 bl 0x2d47c | fcn_0002d47c (r0, r1);
0x0006f8d8 str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x0006f8dc cmp r0, 0 |
| if (r0 != 0) {
0x0006f8de bne 0x6f8b0 | goto label_0;
| }
0x0006f8e0 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0006f8e2 str.w r2, [sl] | __asm ("str.w r2, [sl]");
0x0006f8e6 b 0x6f8b0 | goto label_0;
| label_13:
0x0006faa2 movs r3, 0 | r3 = 0;
0x0006faa4 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x0006faa8 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0006faaa str.w r2, [sl] | __asm ("str.w r2, [sl]");
0x0006faae b 0x6f8b0 | goto label_0;
| label_8:
0x0007026e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00070270 lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 >= r3) {
0x00070272 bpl.w 0x6f5cc | goto label_1;
| }
0x00070276 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00070278 movs r2, 1 | r2 = 1;
0x0007027a ldr r0, [sp, 0x14] | r0 = var_14h;
0x0007027c ldr.w sb, [r3] | sb = *(r3);
0x00070280 mov r1, sb | r1 = sb;
0x00070282 bl 0x1b6dc | r0 = fcn_0001b6dc (r0, r1, r2);
0x00070286 mov r8, r0 | r8 = r0;
0x00070288 cmp r0, 0 |
| if (r0 != 0) {
0x0007028a bne.w 0x6f88c | goto label_2;
| }
0x0007028e movs r7, 7 | r7 = 7;
0x00070290 b.w 0x6f5cc | goto label_1;
| label_12:
0x0007032e mov r4, r5 | r4 = r5;
0x00070330 ldr r5, [sp, 0x1c] | r5 = var_1ch_2;
| label_10:
0x00070332 ldr.w fp, [pc, 0x6ac] |
0x00070336 mov r3, sb | r3 = sb;
0x00070338 mov sb, r5 | sb = r5;
0x0007033a mov r5, r3 | r5 = r3;
0x0007033c add fp, pc | fp = 0xe0d22;
0x0007033e add.w fp, fp, 4 |
0x00070342 b 0x7037a | goto label_14;
| label_3:
0x00070344 ldr.w r3, [sb, 0x68] | r3 = *((sb + 0x68));
0x00070348 add.w r2, r1, r1, lsl 2 | r2 = r1 + (r1 << 2);
0x0007034c add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
| label_4:
0x00070350 str r5, [r3, 8] | *((r3 + 8)) = r5;
0x00070352 mov r2, r8 | r2 = r8;
0x00070354 ldr.w r3, [r8] | r3 = *(r8);
0x00070358 mov r0, sb | r0 = sb;
0x0007035a adds r3, 1 | r3++;
0x0007035c str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x00070360 mvn r3, 8 | r3 = ~8;
0x00070364 bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x00070368 cmp r6, sl |
0x0007036a mov.w r3, -1 | r3 = -1;
0x0007036e str r3, [r6, -0x4] | *((r6 - 0x4)) = r3;
0x00070372 bne 0x70382 |
| while (r1 < 0) {
0x00070374 ldr r4, [r4, 0x34] | r4 = *((r4 + 0x34));
0x00070376 cmp r4, 0 |
| if (r4 == 0) {
0x00070378 beq 0x70464 | goto label_15;
| }
| label_14:
0x0007037a add.w r6, r4, 0x14 | r6 = r4 + 0x14;
0x0007037e add.w sl, r4, 0x1c | sl = r4 + 0x1c;
0x00070382 ldr r1, [r6], 4 | r1 = *(r6);
| r6 += 4;
0x00070386 cmp r1, 0 |
0x00070388 blt 0x70374 |
| }
0x0007038a ldr.w r3, [sb] | r3 = *(sb);
0x0007038e ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00070392 cmp r3, 0 |
| if (r3 == 0) {
0x00070394 beq 0x70344 | goto label_3;
| }
0x00070396 mov r3, fp | r3 = fp;
0x00070398 b 0x70350 | goto label_4;
| label_7:
0x000703a8 ldr.w r3, [fp, 0xd4] | r3 = *(arg_d4h);
0x000703ac ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x000703b0 cmp r3, 0 |
| if (r3 != 0) {
0x000703b2 beq 0x703d6 |
0x000703b4 ldr r1, [r2] | r1 = *(r2);
0x000703b6 it lt |
| if (r3 >= 0) {
0x000703b8 ldrlt r3, [r2, 0x6c] | r3 = *((r2 + 0x6c));
| }
0x000703ba ldrb.w r1, [r1, 0x53] | r1 = *((r1 + 0x53));
0x000703be it lt |
| if (r3 >= 0) {
0x000703c0 addlt r3, r3, -1 | r3 += -1;
| }
0x000703c4 cmp r1, 0 |
| if (r1 != 0) {
0x000703c6 bne.w 0x707ae | goto label_16;
| }
0x000703ca ldr r2, [r2, 0x68] | r2 = *((r2 + 0x68));
0x000703cc add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000703d0 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_6:
0x000703d4 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| }
0x000703d6 str.w r3, [fp, 0xd4] | __asm ("str.w r3, [arg_d4h]");
0x000703da b.w 0x6f5c2 | goto label_5;
| label_15:
0x00070464 ldr.w r3, [r8] | r3 = *(r8);
0x00070468 subs r3, 1 | r3--;
0x0007046a str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0007046e cmp r3, 0 |
| if (r3 != 0) {
0x00070470 bne.w 0x6f5cc | goto label_1;
| }
0x00070474 ldr.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
0x00070478 mov r1, r8 | r1 = r8;
0x0007047a bl 0x159dc | fcn_000159dc (r0, r1);
0x0007047e b.w 0x6f5cc | goto label_1;
| label_16:
0x000707ae ldr r3, [pc, 0x27c] |
0x000707b0 add r3, pc | r3 = 0xe11e2;
0x000707b2 adds r3, 4 | r3 += 4;
0x000707b4 b 0x703d4 | goto label_6;
| label_9:
0x00070ac8 blx 0x7e8c | fcn_00007e8c ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x710ec */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000710ec () | void fcn_000710ec (int16_t arg_24h, int16_t arg_98h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int32_t var_5ch_2;
| int16_t var_64h;
| int16_t var_6ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000710ec svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000710f0 sub sp, 0x74 |
0x000710f2 ldr.w r4, [pc, 0xbc4] | r4 = *(0x00071cb8);
0x000710f6 mov r5, r2 | r5 = r2;
0x000710f8 str r2, [sp, 0x34] | var_34h = r2;
0x000710fa ldr.w r2, [pc, 0xbc0] |
0x000710fe add r4, pc | r4 += pc;
0x00071100 str r0, [sp, 0x24] | var_24h = r0;
0x00071102 ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x00071104 ldr r4, [r0] | r4 = *(r0);
0x00071106 ldr r2, [r2] | r2 = *(0x71cbe);
0x00071108 str r2, [sp, 0x6c] | var_6ch = r2;
0x0007110a mov.w r2, 0 | r2 = 0;
0x0007110e str r3, [sp, 0x28] | var_28h = r3;
0x00071110 ldr r3, [sp, 0x98] | r3 = *(arg_98h);
0x00071112 str r1, [sp, 0x30] | var_30h = r1;
0x00071114 str r4, [sp, 0x20] | var_20h = r4;
0x00071116 mov r2, r3 | r2 = r3;
0x00071118 str r3, [sp, 0x2c] | var_2ch = r3;
0x0007111a orrs.w r3, r5, r2 | r3 = r5 | r2;
| if (r3 == r5) {
0x0007111e beq.w 0x71366 | goto label_5;
| }
0x00071122 ldr.w r4, [r0, 0xe4] | r4 = *((r0 + 0xe4));
0x00071126 cmp r4, 0 |
| if (r4 == 0) {
0x00071128 beq.w 0x71366 | goto label_5;
| }
0x0007112c cmp r2, 0 |
| if (r2 == 0) {
0x0007112e beq.w 0x713a8 | goto label_47;
| }
0x00071132 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00071134 ldrb.w r3, [r3, 0xa9] | r3 = *((r3 + 0xa9));
0x00071138 cmp r3, 0 |
| if (r3 != 0) {
0x0007113a bne.w 0x71586 | goto label_48;
| }
| label_2:
0x0007113e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00071140 lsls r6, r3, 0x18 | r6 = r3 << 0x18;
| if (r6 < r3) {
0x00071142 bmi.w 0x713de | goto label_49;
| }
| label_3:
0x00071146 ldr r1, [r4, 0x48] | r1 = *((r4 + 0x48));
0x00071148 cmp r1, 0 |
| if (r1 == 0) {
0x0007114a beq.w 0x71d82 | goto label_50;
| }
0x0007114e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00071150 movs r7, 0 | r7 = 0;
0x00071152 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00071154 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00071156 cmp r1, r2 |
| if (r1 == r2) {
0x00071158 beq 0x71164 | goto label_41;
| }
| do {
0x0007115a ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x0007115c adds r7, 1 | r7++;
0x0007115e adds r3, 0x10 | r3 += 0x10;
0x00071160 cmp r1, r2 |
0x00071162 bne 0x7115a |
| } while (r1 != r2);
| label_41:
0x00071164 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
| if (r3 != 0) {
0x00071166 cbz r3, 0x7118a |
0x00071168 ldr r5, [sp, 0x24] | r5 = var_24h;
0x0007116a movs r2, 4 | r2 = 4;
0x0007116c str r3, [sp] | *(sp) = r3;
0x0007116e mov r1, r4 | r1 = r4;
0x00071170 movs r3, 0 | r3 = 0;
0x00071172 mov r0, r5 | r0 = r5;
0x00071174 bl 0x3060c | fcn_0003060c (r0, r1, r2, r3, r4, r5);
0x00071178 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| if (r3 == 0) {
0x0007117a cbz r3, 0x7118a | goto label_51;
| }
0x0007117c ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
| if (r1 != 0) {
0x0007117e cbz r1, 0x71186 |
0x00071180 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00071182 bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x00071186 movs r3, 0 | r3 = 0;
0x00071188 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| }
| label_51:
0x0007118a ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0007118c ldrsh.w r1, [r4, 0x2a] | r1 = *((r4 + 0x2a));
0x00071190 tst.w r3, 0x60 |
| if ((r3 & 0x60) == 0) {
0x00071194 beq 0x71236 | goto label_52;
| }
0x00071196 cmp r1, 0 |
| if (r1 <= 0) {
0x00071198 ble.w 0x718ce | goto label_53;
| }
0x0007119c movs r6, 0 | r6 = 0;
0x0007119e str r7, [sp, 0x38] | var_38h = r7;
0x000711a0 mov sb, r6 | sb = r6;
0x000711a2 ldrd r7, fp, [sp, 0x20] | __asm ("ldrd r7, fp, [var_24h]");
0x000711a6 mov r8, r6 | r8 = r6;
0x000711a8 mov r5, r6 | r5 = r6;
0x000711aa b 0x711bc |
| while (r2 == 0) {
0x000711ac add.w r8, r8, 1 | r8++;
0x000711b0 add.w sb, sb, 1 | sb++;
0x000711b4 cmp r1, r8 |
0x000711b6 add.w r6, r6, 0x14 | r6 += 0x14;
| if (r1 <= r8) {
0x000711ba ble 0x7122c | goto label_54;
| }
| label_0:
0x000711bc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000711be add r3, r6 | r3 += r6;
0x000711c0 ldrh r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x000711c2 and r2, r2, 0x60 | r2 &= 0x60;
0x000711c6 cmp r2, 0 |
0x000711c8 beq 0x711ac |
| }
0x000711ca ldr.w sl, [r3, 4] | sl = *((r3 + 4));
0x000711ce movs r2, 8 | r2 = 8;
0x000711d0 mov r1, r4 | r1 = r4;
0x000711d2 mov r0, fp | r0 = fp;
0x000711d4 str r5, [sp] | *(sp) = r5;
0x000711d6 mov r3, sl | r3 = sl;
0x000711d8 bl 0x3060c | r0 = fcn_0003060c (r0, r1, r2, r3, r4, r5);
| if (r0 != 0) {
0x000711dc cbz r0, 0x7121e |
0x000711de cmp.w sl, 0 |
| if (sl != 0) {
0x000711e2 beq 0x711ec |
0x000711e4 mov r1, sl | r1 = sl;
0x000711e6 mov r0, r7 | r0 = r7;
0x000711e8 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x000711ec ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000711ee mov r0, r7 | r0 = r7;
0x000711f0 movs r2, 0x34 | r2 = 0x34;
0x000711f2 add.w sl, r3, r6 | sl = r3 + r6;
0x000711f6 movs r3, 0 | r3 = 0;
0x000711f8 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x000711fc mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x000711fe cbz r0, 0x7121a |
0x00071200 movs r2, 0x34 | r2 = 0x34;
0x00071202 movs r1, 0 | r1 = 0;
0x00071204 str r0, [sp, 0x3c] | var_3ch = r0;
0x00071206 blx 0x8264 | fcn_00008264 ();
0x0007120a ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0007120c movs r2, 0x78 | r2 = 0x78;
0x0007120e strb r2, [r3] | *(r3) = r2;
0x00071210 movw r2, 0xffff | r2 = 0xffff;
0x00071214 strh r2, [r3, 0x22] | *((r3 + 0x22)) = r2;
0x00071216 movs r2, 1 | r2 = 1;
0x00071218 str r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
| }
0x0007121a str.w r3, [sl, 4] | __asm ("str.w r3, [sl, 4]");
| }
0x0007121e ldrsh.w r1, [r4, 0x2a] | r1 = *((r4 + 0x2a));
0x00071222 add.w r8, r8, 1 | r8++;
0x00071226 adds r6, 0x14 | r6 += 0x14;
0x00071228 cmp r1, r8 |
| if (r1 > r8) {
0x0007122a bgt 0x711bc | goto label_0;
| }
| label_54:
0x0007122c ldr r7, [sp, 0x38] | r7 = var_38h;
0x0007122e cmp.w sb, 0 |
| if (sb == 0) {
0x00071232 beq.w 0x718ce | goto label_53;
| }
| label_52:
0x00071236 cmp r1, 0 |
0x00071238 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0007123a ldrsh.w r6, [r4, 0x28] | r6 = *((r4 + 0x28));
| if (r1 <= 0) {
0x0007123e ble.w 0x71bca | goto label_55;
| }
0x00071242 add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x00071246 movs r3, 0 | r3 = 0;
0x00071248 add.w r1, r2, r1, lsl 2 | r1 = r2 + (r1 << 2);
| do {
0x0007124c ldrb r0, [r2, 0xe] | r0 = *((r2 + 0xe));
0x0007124e adds r2, 0x14 | r2 += 0x14;
0x00071250 cmp r2, r1 |
0x00071252 add r3, r0 | r3 += r0;
0x00071254 bne 0x7124c |
| } while (r2 != r1);
0x00071256 cmp r6, 0 |
0x00071258 mov.w r2, 0 | r2 = 0;
0x0007125c it lt |
| if (r6 >= 0) {
0x0007125e addlt r3, 1 | r3++;
| }
0x00071260 lsls r3, r3, 2 | r3 <<= 2;
0x00071262 cmp r3, 8 |
0x00071264 sbcs r1, r2, 0 | __asm ("sbcs r1, r2, 0");
| if (r3 <= 8) {
0x00071268 blo.w 0x71386 | goto label_56;
| }
0x0007126c clz r1, r3 | r1 &= r3;
0x00071270 rsb.w r1, r1, 0x1c | r1 = 0x1c - r1;
0x00071274 add.w r0, r1, r1, lsl 2 | r0 = r1 + (r1 << 2);
0x00071278 rsb.w r6, r1, 0x20 | r6 = 0x20 - r1;
0x0007127c lsrs r3, r1 | r3 >>= r1;
0x0007127e lsl.w r6, r2, r6 | r6 = r2 << r6;
0x00071282 lsls r0, r0, 1 | r0 <<= 1;
0x00071284 subs r1, 0x20 | r1 -= 0x20;
0x00071286 lsr.w r1, r2, r1 | r1 = r2 >> r1;
0x0007128a adds r0, 0x28 | r0 += 0x28;
0x0007128c orrs r3, r6 | r3 |= r6;
0x0007128e uxth r0, r0 | r0 = (int16_t) r0;
0x00071290 orrs r3, r1 | r3 |= r1;
| label_1:
0x00071292 ldr.w r1, [pc, 0xa2c] | r1 = *(0x00071cc0);
0x00071296 and r3, r3, 7 | r3 &= 7;
0x0007129a sub.w r2, r0, 0xa | r2 = r0 - 0xa;
0x0007129e add r1, pc | r1 += pc;
0x000712a0 add.w r3, r1, r3, lsl 1 | r3 = r1 + (r3 << 1);
0x000712a4 ldrh.w r3, [r3, 0x78] | r3 = *((r3 + 0x78));
0x000712a8 add r3, r2 | r3 += r2;
0x000712aa sxth r3, r3 | __asm ("sxth r3, r3");
| label_22:
0x000712ac ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000712ae strh r3, [r4, 0x30] | *((r4 + 0x30)) = r3;
| if (r0 == 0) {
0x000712b0 cbz r0, 0x712bc | goto label_57;
| }
| do {
0x000712b2 bl 0x18438 | fcn_00018438 (r0);
0x000712b6 ldr r0, [r0, 0x14] | r0 = *((r0 + 0x14));
0x000712b8 cmp r0, 0 |
0x000712ba bne 0x712b2 |
| } while (r0 != 0);
| label_57:
0x000712bc ldr r3, [sp, 0x20] | r3 = var_20h;
0x000712be ldrb.w r3, [r3, 0xa9] | r3 = *((r3 + 0xa9));
0x000712c2 cmp r3, 0 |
| if (r3 != 0) {
0x000712c4 bne.w 0x7152a | goto label_58;
| }
0x000712c8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000712ca ldr.w sl, [r3, 8] | sl = *((r3 + 8));
0x000712ce cmp.w sl, 0 |
| if (sl == 0) {
0x000712d2 beq.w 0x715b0 | goto label_59;
| }
| label_6:
0x000712d6 movs r3, 0 | r3 = 0;
0x000712d8 movs r1, 0x76 | r1 = 0x76;
0x000712da mov r2, r3 | r2 = r3;
0x000712dc str r3, [sp] | *(sp) = r3;
0x000712de mov r0, sl | r0 = sl;
0x000712e0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000712e4 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000712e6 cmp r3, 0 |
| if (r3 == 0) {
0x000712e8 beq.w 0x71c00 | goto label_60;
| }
0x000712ec ldr.w r2, [pc, 0x9d4] |
0x000712f0 ldr.w r3, [pc, 0x9d4] | r3 = *(0x00071cc8);
0x000712f4 add r2, pc | r2 = 0xe2fbc;
0x000712f6 add r3, pc | r3 += pc;
0x000712f8 str r3, [sp, 0x3c] | var_3ch = r3;
| label_27:
0x000712fa ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000712fc cmp r3, 0 |
| if (r3 == 0) {
0x000712fe beq.w 0x71c3c | goto label_61;
| }
0x00071302 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00071304 movs r2, 1 | r2 = 1;
0x00071306 mov r0, sl | r0 = sl;
0x00071308 ldr.w sb, [r1, 0x2c] | sb = *((r1 + 0x2c));
0x0007130c ldr r3, [r1, 0x74] | r3 = *((r1 + 0x74));
0x0007130e add.w r5, sb, 3 | r5 = sb + 3;
0x00071312 add.w r8, sb, 1 | r8 = sb + 1;
0x00071316 cmp r3, 0 |
0x00071318 it eq |
| if (r3 != 0) {
0x0007131a moveq r3, r1 | r3 = r1;
| }
0x0007131c str r5, [r1, 0x2c] | *((r1 + 0x2c)) = r5;
0x0007131e strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
0x00071320 str r7, [sp] | *(sp) = r7;
0x00071322 ldr r3, [r1, 0x5c] | r3 = *((r1 + 0x5c));
0x00071324 movs r1, 0x63 | r1 = 0x63;
0x00071326 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007132a ldr.w r6, [sl, 0x6c] | r6 = *((sl + 0x6c));
0x0007132e cmp r6, 0 |
| if (r6 > 0) {
0x00071330 ble 0x71344 |
0x00071332 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x00071336 add.w r2, r6, r6, lsl 2 | r2 = r6 + (r6 << 2);
0x0007133a add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0007133e movs r2, 0x10 | r2 = 0x10;
0x00071340 strh r2, [r3, -0x12] | *((r3 - 0x12)) = r2;
| }
0x00071344 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00071346 movs r3, 2 | r3 = 2;
0x00071348 mov r2, r8 | r2 = r8;
0x0007134a movs r1, 0xd | r1 = 0xd;
0x0007134c str r3, [r0, 0x28] | *((r0 + 0x28)) = r3;
0x0007134e adds r3, r6, 1 | r3 = r6 + 1;
0x00071350 str r3, [sp] | *(sp) = r3;
0x00071352 mov r0, sl | r0 = sl;
0x00071354 movs r3, 0 | r3 = 0;
0x00071356 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007135a ldr r0, [sp, 0x24] | r0 = var_24h;
0x0007135c ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x0007135e str r3, [sp, 0x28] | var_28h = r3;
0x00071360 cmp r3, 0 |
| if (r3 == 0) {
0x00071362 beq.w 0x715fc | goto label_62;
| }
| label_5:
0x00071366 ldr.w r2, [pc, 0x964] | r2 = *(0x00071ccc);
0x0007136a ldr.w r3, [pc, 0x950] | r3 = *(0x71cbe);
0x0007136e add r2, pc | r2 += pc;
0x00071370 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00071372 ldr r2, [r3] | r2 = *(0x71cbe);
0x00071374 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00071376 eors r2, r3 | r2 ^= r3;
0x00071378 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007137c bne.w 0x71de6 | goto label_63;
| }
0x00071380 add sp, 0x74 |
0x00071382 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_56:
0x00071386 cmp r3, 2 |
0x00071388 sbcs r1, r2, 0 | __asm ("sbcs r1, r2, 0");
| if (r3 <= 2) {
0x0007138c blo.w 0x71aea | goto label_25;
| }
0x00071390 movs r6, 0x1e | r6 = 0x1e;
| do {
0x00071392 adds r3, r3, r3 | r3 += r3;
0x00071394 sub.w r1, r6, 0xa | r1 = r6 - 0xa;
0x00071398 adcs r2, r2 | __asm ("adcs r2, r2");
0x0007139a cmp r3, 8 |
0x0007139c mov r0, r6 | r0 = r6;
0x0007139e uxth r6, r1 | r6 = (int16_t) r1;
0x000713a0 sbcs r1, r2, 0 | __asm ("sbcs r1, r2, 0");
0x000713a4 blo 0x71392 |
| } while (r3 <= 8);
0x000713a6 b 0x71292 | goto label_1;
| label_47:
0x000713a8 ldr r1, [r4] | r1 = *(r4);
0x000713aa ldr r0, [sp, 0x20] | r0 = var_20h;
0x000713ac bl 0x3b944 | r0 = fcn_0003b944 (r0, r1);
0x000713b0 cmp r0, 0 |
| if (r0 != 0) {
0x000713b2 bne.w 0x715f2 | goto label_64;
| }
| label_8:
0x000713b6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000713b8 ldrb.w r3, [r3, 0xa9] | r3 = *((r3 + 0xa9));
0x000713bc cmp r3, 0 |
| if (r3 == 0) {
0x000713be beq.w 0x7113e | goto label_2;
| }
0x000713c2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000713c4 ldr.w r3, [r3, 0xa4] | r3 = *((r3 + 0xa4));
0x000713c8 cmp r3, 1 |
0x000713ca str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x000713cc ittt eq |
| if (r3 != 1) {
0x000713ce ldreq r3, [r4, 0x24] | r3 = *((r4 + 0x24));
| }
| if (r3 != 1) {
0x000713d0 orreq r3, r3, 1 | r3 |= 1;
| }
| if (r3 == 1) {
0x000713d4 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| }
0x000713d6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000713d8 lsls r6, r3, 0x18 | r6 = r3 << 0x18;
| if (r6 >= r3) {
0x000713da bpl.w 0x71146 | goto label_3;
| }
| label_49:
0x000713de ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x000713e0 ands r3, r2, 8 | r3 = r2 & 8;
0x000713e4 str r3, [sp, 0x3c] | var_3ch = r3;
| if (r3 != r2) {
0x000713e6 bne.w 0x71bae | goto label_65;
| }
0x000713ea lsls r5, r2, 0x1d | r5 = r2 << 0x1d;
| if (r5 >= r2) {
0x000713ec bpl.w 0x71ac2 | goto label_66;
| }
0x000713f0 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000713f2 orr r3, r2, 0x280 | r3 = r2 | 0x280;
0x000713f6 ldr r0, [r1] | r0 = *(r1);
0x000713f8 ldr.w sb, [r1, 8] | sb = *((r1 + 8));
0x000713fc str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x000713fe ldrb.w r1, [r0, 0xaa] | r1 = *((r0 + 0xaa));
0x00071402 str r0, [sp, 0x38] | var_38h = r0;
0x00071404 ands r1, r1, 2 | r1 &= 2;
| if (r1 == r1) {
0x00071408 beq.w 0x715c8 | goto label_67;
| }
| label_7:
0x0007140c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007140e ldr.w r3, [r3, 0x80] | r3 = *((r3 + 0x80));
0x00071412 cmp r3, 0 |
| if (r3 != 0) {
0x00071414 bne.w 0x71bd6 | goto label_68;
| }
| label_26:
0x00071418 ldrsh.w r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0007141c cmp r3, 0 |
| if (r3 >= 0) {
0x0007141e bge.w 0x71af0 | goto label_69;
| }
0x00071422 ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x00071424 mov r7, r6 | r7 = r6;
| if (r6 != 0) {
0x00071426 cbnz r6, 0x71434 | goto label_70;
| }
0x00071428 b.w 0x71dea | goto label_71;
| do {
0x0007142c ldr r7, [r7, 0x14] | r7 = *((r7 + 0x14));
0x0007142e cmp r7, 0 |
| if (r7 == 0) {
0x00071430 beq.w 0x71dea | goto label_71;
| }
| label_70:
0x00071434 ldrb.w r3, [r7, 0x37] | r3 = *((r7 + 0x37));
0x00071438 and r3, r3, 3 | r3 &= 3;
0x0007143c cmp r3, 2 |
0x0007143e bne 0x7142c |
| } while (r3 != 2);
0x00071440 ldrh r3, [r7, 0x32] | r3 = *((r7 + 0x32));
0x00071442 cmp r3, 1 |
| if (r3 < 1) {
0x00071444 bls.w 0x71d8e | goto label_72;
| }
0x00071448 movs r6, 1 | r6 = 1;
0x0007144a mov r8, r6 | r8 = r6;
0x0007144c b 0x7145e |
| while (r0 != 0) {
0x0007144e ldrh r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x00071450 subs r3, 1 | r3--;
0x00071452 strh r3, [r7, 0x34] | *((r7 + 0x34)) = r3;
| label_4:
0x00071454 ldrh r3, [r7, 0x32] | r3 = *((r7 + 0x32));
0x00071456 adds r6, 1 | r6++;
0x00071458 cmp r6, r3 |
| if (r6 >= r3) {
0x0007145a bge.w 0x718f0 | goto label_73;
| }
0x0007145e mov r3, r6 | r3 = r6;
0x00071460 mov r2, r7 | r2 = r7;
0x00071462 mov r1, r8 | r1 = r8;
0x00071464 mov r0, r7 | r0 = r7;
0x00071466 bl 0x17d8c | r0 = fcn_00017d8c (r0, r1, r2, r3, r4);
0x0007146a cmp r0, 0 |
0x0007146c bne 0x7144e |
| }
0x0007146e ldrd r2, r0, [r7, 0x1c] | __asm ("ldrd r2, r0, [r7, 0x1c]");
0x00071472 ldr.w r1, [r0, r6, lsl 2] | offset_0 = r6 << 2;
| r1 = *((r0 + offset_0));
0x00071476 str.w r1, [r0, r8, lsl 2] | __asm ("str.w r1, [r0, r8, lsl 2]");
0x0007147a ldrb r1, [r2, r6] | r1 = *((r2 + r6));
0x0007147c strb.w r1, [r2, r8] | *((r2 + r8)) = r1;
0x00071480 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x00071482 ldrsh.w r1, [r2, r6, lsl 1] | offset_1 = r6 << 1;
| r1 = *((r2 + offset_1));
0x00071486 strh.w r1, [r2, r8, lsl 1] | offset_2 = r8 << 1;
| *((r2 + offset_2)) = r1;
0x0007148a add.w r8, r8, 1 | r8++;
0x0007148e b 0x71454 | goto label_4;
| label_11:
0x00071490 ldr.w sl, [sp, 0x44] | sl = var_44h;
0x00071494 ldr r7, [sp, 0x4c] | r7 = var_4ch;
| label_10:
0x00071496 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00071498 add.w r1, r8, r6 | r1 = r8 + r6;
0x0007149c ldr r3, [sp, 0x40] | r3 = var_40h;
0x0007149e subs r0, r2, r6 | r0 = r2 - r6;
0x000714a0 ldr.w r2, [pc, 0x82c] |
0x000714a4 add r2, pc | r2 = 0xe3178;
0x000714a6 blx 0x8154 | fcn_00008154 ();
| label_28:
0x000714aa ldr r5, [sp, 0x20] | r5 = var_20h;
0x000714ac lsls r6, r7, 4 | r6 = r7 << 4;
0x000714ae ldr r1, [r4] | r1 = *(r4);
0x000714b0 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000714b2 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x000714b4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000714b6 ldr r2, [r2, r6] | r2 = *((r2 + r6));
0x000714b8 str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch]");
0x000714bc strd r1, r1, [sp] | __asm ("strd r1, r1, [sp]");
0x000714c0 ldr r1, [r0, 0x58] | r1 = *((r0 + 0x58));
0x000714c2 str r1, [sp, 0x10] | var_10h = r1;
0x000714c4 ldr r1, [r0, 0x5c] | r1 = *((r0 + 0x5c));
0x000714c6 str r1, [sp, 8] | var_8h = r1;
0x000714c8 ldr.w r1, [pc, 0x808] |
0x000714cc add r1, pc | r1 = 0xe31a4;
0x000714ce bl 0x77c00 | fcn_00077c00 (r0);
0x000714d2 cmp.w r8, 0 |
| if (r8 != 0) {
0x000714d6 beq 0x714e0 |
0x000714d8 mov r1, r8 | r1 = r8;
0x000714da mov r0, r5 | r0 = r5;
0x000714dc bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x000714e0 ldr r5, [sp, 0x24] | r5 = var_24h;
0x000714e2 mov r2, r7 | r2 = r7;
0x000714e4 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x000714e6 ldr r0, [r5] | r0 = *(r5);
0x000714e8 bl 0x2b6f8 | fcn_0002b6f8 (r0, r1, r2);
0x000714ec ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000714ee lsls r3, r3, 0x1c | r3 <<= 0x1c;
| if (r3 < r3) {
0x000714f0 bpl 0x71508 |
0x000714f2 ldrb.w r3, [r5, 0xc8] | r3 = *((r5 + 0xc8));
| if (r3 != 0) {
0x000714f6 cbnz r3, 0x71508 | goto label_46;
| }
0x000714f8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000714fa ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000714fc adds r2, r3, r6 | r2 = r3 + r6;
0x000714fe ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00071500 ldr r2, [r2, 0x48] | r2 = *((r2 + 0x48));
0x00071502 cmp r2, 0 |
| if (r2 == 0) {
0x00071504 beq.w 0x71dd6 | goto label_74;
| }
| }
| label_46:
0x00071508 ldr r5, [sp, 0x20] | r5 = var_20h;
0x0007150a ldr.w r1, [pc, 0x7cc] | r1 = *(0x00071cd8);
0x0007150e ldr r2, [r4] | r2 = *(r4);
0x00071510 mov r0, r5 | r0 = r5;
0x00071512 add r1, pc | r1 += pc;
0x00071514 bl 0x2677c | fcn_0002677c (r0);
0x00071518 movs r3, 0 | r3 = 0;
0x0007151a mov r2, r0 | r2 = r0;
0x0007151c mov r1, r7 | r1 = r7;
0x0007151e mov r0, sl | r0 = sl;
0x00071520 bl 0x2bbb8 | fcn_0002bbb8 (r0, r1, r2, r3);
0x00071524 ldrb.w r3, [r5, 0xa9] | r3 = *((r5 + 0xa9));
| if (r3 != 0) {
0x00071528 cbz r3, 0x7155e |
| label_58:
0x0007152a ldr r0, [r4, 0x48] | r0 = *((r4 + 0x48));
0x0007152c mov r2, r4 | r2 = r4;
0x0007152e ldr r1, [r4] | r1 = *(r4);
0x00071530 adds r0, 8 | r0 += 8;
0x00071532 bl 0x169a8 | r0 = fcn_000169a8 (r0, r1, r2, r3, r4);
0x00071536 cmp r0, 0 |
| if (r0 != 0) {
0x00071538 bne.w 0x71c1a | goto label_75;
| }
0x0007153c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007153e ldr r2, [sp, 0x20] | r2 = var_20h;
0x00071540 ldr.w r1, [pc, 0x798] |
0x00071544 str.w r0, [r3, 0xe4] | __asm ("str.w r0, [r3, 0xe4]");
0x00071548 ldr r3, [r2, 0x18] | r3 = *((r2 + 0x18));
0x0007154a ldr r0, [r4] | r0 = *(r4);
0x0007154c add r1, pc | r1 = 0xe322c;
0x0007154e orr r3, r3, 1 | r3 |= 1;
0x00071552 str r3, [r2, 0x18] | *((r2 + 0x18)) = r3;
0x00071554 blx 0x7ca0 | r0 = fcn_00007ca0 ();
0x00071558 cmp r0, 0 |
| if (r0 == 0) {
0x0007155a beq.w 0x718c8 | goto label_76;
| }
| }
| label_15:
0x0007155e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00071560 cmp r3, 0 |
| if (r3 != 0) {
0x00071562 bne.w 0x71366 | goto label_5;
| }
0x00071566 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00071568 cmp r3, 0 |
| if (r3 != 0) {
0x0007156a bne.w 0x71366 | goto label_5;
| }
0x0007156e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00071570 ldr r3, [r3] | r3 = *(r3);
0x00071572 cmp r3, 0 |
| if (r3 == 0) {
0x00071574 beq.w 0x71d6c | goto label_77;
| }
| label_38:
0x00071578 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0007157a ldr.w r2, [r2, 0xb4] | r2 = *((r2 + 0xb4));
0x0007157e subs r3, r3, r2 | r3 -= r2;
0x00071580 adds r3, 0xd | r3 += 0xd;
0x00071582 str r3, [r4, 0x34] | *((r4 + 0x34)) = r3;
0x00071584 b 0x71366 | goto label_5;
| label_48:
0x00071586 ldr.w r2, [pc, 0x758] | r2 = *(0x00071ce0);
0x0007158a ldr.w r3, [pc, 0x730] | r3 = *(0x71cbe);
0x0007158e add r2, pc | r2 += pc;
0x00071590 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00071592 ldr r2, [r3] | r2 = *(0x71cbe);
0x00071594 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00071596 eors r2, r3 | r2 ^= r3;
0x00071598 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007159c bne.w 0x71de6 | goto label_63;
| }
0x000715a0 ldr.w r1, [pc, 0x740] |
0x000715a4 add r1, pc | r1 = 0xe328c;
| label_16:
0x000715a6 add sp, 0x74 |
0x000715a8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000715ac b.w 0x25778 | void (*0x25778)() ();
| label_59:
0x000715b0 ldr r3, [r3, 0x74] | r3 = *((r3 + 0x74));
0x000715b2 cmp r3, 0 |
| if (r3 == 0) {
0x000715b4 beq.w 0x718b8 | goto label_78;
| }
| label_14:
0x000715b8 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000715ba bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x000715be mov sl, r0 | sl = r0;
0x000715c0 cmp r0, 0 |
| if (r0 == 0) {
0x000715c2 beq.w 0x71366 | goto label_5;
| }
0x000715c6 b 0x712d6 | goto label_6;
| label_67:
0x000715c8 ldrsh.w r6, [r4, 0x2a] | r6 = *((r4 + 0x2a));
0x000715cc cmp r6, 0 |
| if (r6 <= 0) {
0x000715ce ble 0x715ea | goto label_79;
| }
0x000715d0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000715d2 movs r0, 0x14 | r0 = 0x14;
0x000715d4 movs r7, 2 | r7 = 2;
0x000715d6 smlabb r6, r6, r0, r3 | __asm ("smlabb r6, r6, r0, r3");
| do {
0x000715da ldrh r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x000715dc adds r3, 0x14 | r3 += 0x14;
0x000715de lsls r0, r0, 0x1f | r0 <<= 0x1f;
0x000715e0 it mi |
| if (r0 >= r0) {
0x000715e2 strbmi r7, [r3, -0x8] | *((r3 - 0x8)) = r7;
| }
0x000715e6 cmp r6, r3 |
0x000715e8 bne 0x715da |
| } while (r6 != r3);
| label_79:
0x000715ea orr r2, r2, 0xa80 | r2 |= 0xa80;
0x000715ee str r2, [r4, 0x24] | *((r4 + 0x24)) = r2;
0x000715f0 b 0x7140c | goto label_7;
| label_64:
0x000715f2 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000715f4 orr r3, r3, 0x1000 | r3 |= 0x1000;
0x000715f8 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x000715fa b 0x713b6 | goto label_8;
| label_62:
0x000715fc ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000715fe movs r2, 0x41 | r2 = 0x41;
0x00071600 bl 0x5f538 | r0 = fcn_0005f538 (r0, r1, r2);
0x00071604 mov r1, r0 | r1 = r0;
0x00071606 cmp r0, 0 |
| if (r0 == 0) {
0x00071608 beq.w 0x71366 | goto label_5;
| }
0x0007160c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0007160e ldrsh.w r2, [r1, 0x2a] | r2 = *((r1 + 0x2a));
0x00071612 ldr.w r0, [r3, 0x1f8] | r0 = *((r3 + 0x1f8));
0x00071616 strh r2, [r4, 0x2c] | *((r4 + 0x2c)) = r2;
0x00071618 strh r2, [r4, 0x2a] | *((r4 + 0x2a)) = r2;
0x0007161a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007161c ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x0007161e str r2, [r4, 4] | *((r4 + 4)) = r2;
0x00071620 strh r3, [r1, 0x2a] | *((r1 + 0x2a)) = r3;
0x00071622 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x00071624 cmp r0, 0 |
| if (r0 == 0) {
0x00071626 beq.w 0x71d3e | goto label_80;
| }
| label_32:
0x0007162a ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007162c bl 0x19014 | fcn_00019014 (r0, r1);
| label_33:
0x00071630 ldr.w fp, [sp, 0x24] | fp = var_24h;
0x00071634 movs r3, 0 | r3 = 0;
0x00071636 add r2, sp, 0x50 | r2 += var_50h;
0x00071638 str r3, [sp, 0x58] | var_58h = r3;
0x0007163a str r3, [sp, 0x64] | var_64h = r3;
0x0007163c strd r3, r3, [sp, 0x5c] | __asm ("strd r3, r3, [var_5ch]");
0x00071640 mov r0, fp | r0 = fp;
0x00071642 movs r3, 0xd | r3 = 0xd;
0x00071644 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00071646 strb.w r3, [sp, 0x50] | var_50h = r3;
0x0007164a str.w r8, [sp, 0x54] | __asm ("str.w r8, [var_54h]");
0x0007164e str r2, [sp, 0x44] | var_44h = r2;
0x00071650 bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x00071654 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00071658 cmp r3, 0 |
| if (r3 != 0) {
0x0007165a bne.w 0x71366 | goto label_5;
| }
0x0007165e mov r2, r8 | r2 = r8;
0x00071660 str r3, [sp] | *(sp) = r3;
0x00071662 movs r1, 0x42 | r1 = 0x42;
0x00071664 mov r0, sl | r0 = sl;
0x00071666 str r3, [sp, 0x28] | var_28h = r3;
0x00071668 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007166c ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007166e cmp r6, 0 |
0x00071670 ldr.w r2, [sl, 0xc] | r2 = *((sl + 0xc));
0x00071674 strb r3, [r2, 0x13] | *((r2 + 0x13)) = r3;
0x00071676 str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x00071678 ldr.w r3, [sl] | r3 = *(sl);
0x0007167c ldr.w r8, [sl, 0x6c] | r8 = *((sl + 0x6c));
0x00071680 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00071684 it lt |
| if (r6 >= 0) {
0x00071686 addlt r6, r8, -1 | r6 = r8 + -1;
| }
0x0007168a cmp r3, 0 |
| if (r3 != 0) {
0x0007168c bne.w 0x71d64 | goto label_81;
| }
0x00071690 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x00071694 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x00071698 add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
| label_37:
0x0007169c str.w r8, [r3, 8] | __asm ("str.w r8, [r3, 8]");
0x000716a0 ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x000716a4 ldr r2, [sp, 0x54] | r2 = var_54h;
0x000716a6 cmp r8, r3 |
| if (r8 >= r3) {
0x000716a8 bge.w 0x71db8 | goto label_82;
| }
0x000716ac add.w r3, r8, r8, lsl 2 | r3 = r8 + (r8 << 2);
0x000716b0 ldr.w r6, [sl, 0x68] | r6 = *((sl + 0x68));
0x000716b4 add.w r1, r8, 1 | r1 = r8 + 1;
0x000716b8 lsls r3, r3, 2 | r3 <<= 2;
0x000716ba str.w r1, [sl, 0x6c] | __asm ("str.w r1, [sl, 0x6c]");
0x000716be movs r0, 0 | r0 = 0;
0x000716c0 adds r1, r6, r3 | r1 = r6 + r3;
0x000716c2 mov.w ip, 0xe |
0x000716c6 strd r2, r0, [r1, 4] | __asm ("strd r2, r0, [r1, 4]");
0x000716ca strd r0, r0, [r1, 0xc] | __asm ("strd r0, r0, [r1, 0xc]");
0x000716ce str.w ip, [r6, r3] | __asm ("str.w ip, [r6, r3]");
| label_44:
0x000716d2 add.w r6, sb, 2 | r6 = sb + 2;
0x000716d6 ldrd r2, r3, [sp, 0x5c] | __asm ("ldrd r2, r3, [var_5ch]");
0x000716da movs r1, 0x5d | r1 = 0x5d;
0x000716dc mov r0, sl | r0 = sl;
0x000716de str r6, [sp] | *(sp) = r6;
0x000716e0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000716e4 movs r2, 0 | r2 = 0;
0x000716e6 mov r1, r4 | r1 = r4;
0x000716e8 mov r0, sl | r0 = sl;
0x000716ea bl 0x2f4b4 | fcn_0002f4b4 (r0, r1, r2);
0x000716ec cdp2 p3, 0xe, c2, c3, c0, 0 | __asm ("cdp2 p3, 0xe, c2, c3, c0, 0");
0x000716f0 movs r2, 1 | r2 = 1;
0x000716f2 movs r1, 0x7b | r1 = 0x7b;
0x000716f4 str r3, [sp] | *(sp) = r3;
0x000716f6 mov r0, sl | r0 = sl;
0x000716f8 mov r3, r5 | r3 = r5;
0x000716fa bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000716fe mov r3, r6 | r3 = r6;
0x00071700 movs r2, 1 | r2 = 1;
0x00071702 movs r1, 0x7c | r1 = 0x7c;
0x00071704 mov r0, sl | r0 = sl;
0x00071706 str r5, [sp] | *(sp) = r5;
0x00071708 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007170c mov r1, r8 | r1 = r8;
0x0007170e mov r0, sl | r0 = sl;
0x00071710 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x00071714 ldr.w r3, [sl] | r3 = *(sl);
0x00071718 cmp.w r8, 0 |
0x0007171c ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x00071720 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00071724 it lt |
| if (r8 >= 0) {
0x00071726 addlt r8, r2, -1 | r8 = r2 + -1;
| }
0x0007172a cmp r3, 0 |
| if (r3 != 0) {
0x0007172c bne.w 0x71d5c | goto label_83;
| }
0x00071730 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x00071734 add.w r8, r8, r8, lsl 2 | r8 += (r8 << 2);
0x00071738 add.w r3, r3, r8, lsl 2 | r3 += (r8 << 2);
| label_36:
0x0007173c movs r6, 0 | r6 = 0;
0x0007173e str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00071740 movs r1, 0x76 | r1 = 0x76;
0x00071742 mov r3, r6 | r3 = r6;
0x00071744 movs r2, 1 | r2 = 1;
0x00071746 mov r0, sl | r0 = sl;
0x00071748 str r6, [sp] | *(sp) = r6;
0x0007174a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007174e ldrsh.w r8, [r4, 0x2a] | r8 = *((r4 + 0x2a));
0x00071752 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00071754 cmp r8, r6 |
| if (r8 <= r6) {
0x00071756 ble.w 0x71d98 | goto label_84;
| }
0x0007175a add.w ip, r3, 0x14 |
0x0007175e mov.w lr, 0x14 | lr = 0x14;
0x00071762 smlabb lr, r8, lr, ip | __asm ("smlabb lr, r8, lr, ip");
0x00071766 mov r3, r6 | r3 = r6;
| label_9:
0x00071768 ldr r0, [ip, -0x14] | r0 = *((ip - 0x14));
0x0007176c ldrb r2, [r0] | r2 = *(r0);
0x0007176e cmp r2, 0 |
| if (r2 == 0) {
0x00071770 beq.w 0x71c6e | goto label_85;
| }
0x00071774 movs r5, 0 | r5 = 0;
| do {
0x00071776 cmp r2, 0x22 |
0x00071778 ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x0007177c ite eq |
| if (r2 != 0x22) {
0x0007177e addeq r1, r5, 1 | r1 = r5 + 1;
| }
| if (r2 == 0x22) {
0x00071780 movne r1, r5 | r1 = r5;
| }
0x00071782 adds r5, r1, 1 | r5 = r1 + 1;
0x00071784 cmp r2, 0 |
0x00071786 bne 0x71776 |
| } while (r2 != 0);
0x00071788 adds r1, 8 | r1 += 8;
| label_29:
0x0007178a add.w ip, ip, 0x14 |
0x0007178e add r3, r1 | r3 += r1;
0x00071790 cmp ip, lr |
| if (ip != lr) {
0x00071792 bne 0x71768 | goto label_9;
| }
0x00071794 ldr r0, [r4] | r0 = *(r4);
0x00071796 ldrb r2, [r0] | r2 = *(r0);
0x00071798 cmp r2, 0 |
| if (r2 == 0) {
0x0007179a beq.w 0x71dc8 | goto label_86;
| }
| label_43:
0x0007179e movs r6, 0 | r6 = 0;
| do {
0x000717a0 cmp r2, 0x22 |
0x000717a2 ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x000717a6 ite eq |
| if (r2 != 0x22) {
0x000717a8 addeq r1, r6, 1 | r1 = r6 + 1;
| }
| if (r2 == 0x22) {
0x000717aa movne r1, r6 | r1 = r6;
| }
0x000717ac adds r6, r1, 1 | r6 = r1 + 1;
0x000717ae cmp r2, 0 |
0x000717b0 bne 0x717a0 |
| } while (r2 != 0);
0x000717b2 adds r1, 3 | r1 += 3;
| label_45:
0x000717b4 adds r2, r3, r1 | r2 = r3 + r1;
0x000717b6 cmp r2, 0x31 |
| if (r2 <= 0x31) {
0x000717b8 ble.w 0x71ca4 | goto label_87;
| }
0x000717bc ldr.w r3, [pc, 0x528] |
0x000717c0 add r3, pc | r3 = 0xe34ac;
0x000717c2 str r3, [sp, 0x40] | var_40h = r3;
0x000717c4 ldr.w r3, [pc, 0x524] |
0x000717c8 add r3, pc | r3 = 0xe34b8;
0x000717ca str r3, [sp, 0x38] | var_38h = r3;
0x000717cc ldr.w r3, [pc, 0x520] |
0x000717d0 add r3, pc | r3 = 0xe34c4;
| label_31:
0x000717d2 movs r1, 6 | r1 = 6;
0x000717d4 str r3, [sp, 0x48] | var_48h = r3;
0x000717d6 mla r2, r8, r1, r2 | __asm ("mla r2, r8, r1, r2");
0x000717da add.w r3, r2, 0x23 | r3 = r2 + 0x23;
0x000717de asrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x000717e0 mov r0, r3 | r0 = r3;
0x000717e2 str r3, [sp, 0x28] | var_28h = r3;
0x000717e4 bl 0x12abc | fcn_00012abc (r0);
0x000717e8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000717ea mov r8, r0 | r8 = r0;
0x000717ec cmp r0, 0 |
| if (r0 == 0) {
0x000717ee beq.w 0x71dcc | goto label_88;
| }
0x000717f2 ldr.w r2, [pc, 0x500] |
0x000717f6 mov r1, r0 | r1 = r0;
0x000717f8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000717fa str r3, [sp, 0x48] | var_48h = r3;
0x000717fc add r2, pc | r2 = 0xe34f6;
0x000717fe blx 0x8154 | fcn_00008154 ();
0x00071802 mov r0, r8 | r0 = r8;
0x00071804 blx 0x8160 | fcn_00008160 ();
0x00071808 ldr.w fp, [sp, 0x44] | fp = var_44h;
0x0007180c bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
0x00071810 ldr r2, [r4] | r2 = *(r4);
0x00071812 str r0, [sp, 0x50] | var_50h = r0;
0x00071814 mov r0, r8 | r0 = r8;
0x00071816 mov r1, fp | r1 = fp;
0x00071818 bl 0x10dec | fcn_00010dec (r0, r1, r2);
0x0007181c ldr r2, [sp, 0x50] | r2 = var_50h;
0x0007181e movs r1, 0x28 | r1 = 0x28;
0x00071820 adds r6, r2, 1 | r6 = r2 + 1;
0x00071822 str r6, [sp, 0x50] | var_50h = r6;
0x00071824 strb.w r1, [r8, r2] | *((r8 + r2)) = r1;
0x00071828 ldrsh.w r2, [r4, 0x2a] | r2 = *((r4 + 0x2a));
0x0007182c ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0007182e cmp r2, 0 |
| if (r2 <= 0) {
0x00071830 ble.w 0x71496 | goto label_10;
| }
0x00071834 ldr.w r0, [pc, 0x4c0] |
0x00071838 add.w sb, r1, 0x14 | sb = r1 + 0x14;
0x0007183c ldr r3, [sp, 0x48] | r3 = var_48h;
0x0007183e movs r5, 0 | r5 = 0;
0x00071840 str.w sl, [sp, 0x44] | __asm ("str.w sl, [var_44h]");
0x00071844 add r0, pc | r0 = 0xe3540;
0x00071846 str r7, [sp, 0x4c] | var_4ch = r7;
0x00071848 mov r2, r3 | r2 = r3;
0x0007184a mov sl, r0 | sl = r0;
0x0007184c b 0x7187a | goto label_89;
| label_12:
0x0007184e mov r0, r6 | r0 = r6;
0x00071850 blx 0x8160 | r0 = fcn_00008160 ();
0x00071854 bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x00071858 mov r2, r3 | r2 = r3;
| label_13:
0x0007185a ldr r0, [sp, 0x50] | r0 = var_50h;
0x0007185c mov r1, r6 | r1 = r6;
0x0007185e adds r5, 1 | r5++;
0x00071860 add.w sb, sb, 0x14 | sb += 0x14;
0x00071864 adds r6, r0, r3 | r6 = r0 + r3;
0x00071866 add r0, r8 | r0 += r8;
0x00071868 blx 0x7dcc | fcn_00007dcc ();
0x0007186c ldrsh.w r2, [r4, 0x2a] | r2 = *((r4 + 0x2a));
0x00071870 str r6, [sp, 0x50] | var_50h = r6;
0x00071872 cmp r5, r2 |
| if (r5 >= r2) {
0x00071874 bge.w 0x71490 | goto label_11;
| }
0x00071878 ldr r2, [sp, 0x38] | r2 = var_38h;
| label_89:
0x0007187a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0007187c add.w r7, r8, r6 | r7 = r8 + r6;
0x00071880 mov r1, r7 | r1 = r7;
0x00071882 subs r0, r3, r6 | r0 = r3 - r6;
0x00071884 blx 0x8154 | fcn_00008154 ();
0x00071888 mov r0, r7 | r0 = r7;
0x0007188a blx 0x8160 | r0 = fcn_00008160 ();
0x0007188e bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
0x00071892 ldr r2, [sb, -0x14] | r2 = *((sb - 0x14));
0x00071896 add r0, r6 | r0 += r6;
0x00071898 mov r1, fp | r1 = fp;
0x0007189a str r0, [sp, 0x50] | var_50h = r0;
0x0007189c mov r0, r8 | r0 = r8;
0x0007189e bl 0x10dec | fcn_00010dec (r0, r1, r2);
0x000718a2 ldrb r3, [sb, -0x7] | r3 = *((sb - 0x7));
0x000718a6 add.w r3, sl, r3, lsl 2 | r3 = sl + (r3 << 2);
0x000718aa ldr.w r6, [r3, 0xc80] | r6 = *((r3 + 0xc80));
0x000718ae cmp r6, 0 |
| if (r6 != 0) {
0x000718b0 bne 0x7184e | goto label_12;
| }
0x000718b2 mov r3, r6 | r3 = r6;
0x000718b4 mov r2, r6 | r2 = r6;
0x000718b6 b 0x7185a | goto label_13;
| label_78:
0x000718b8 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000718ba ldr r3, [r2] | r3 = *(r2);
0x000718bc ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000718be lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x000718c0 itt pl |
| if (r1 < r3) {
0x000718c2 movpl r3, 1 | r3 = 1;
| }
| if (r1 < r3) {
0x000718c4 strbpl r3, [r2, 0x17] | *((r2 + 0x17)) = r3;
| }
0x000718c6 b 0x715b8 | goto label_14;
| label_76:
0x000718c8 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x000718ca str r4, [r3, 0x48] | *((r3 + 0x48)) = r4;
0x000718cc b 0x7155e | goto label_15;
| label_53:
0x000718ce ldr.w r2, [pc, 0x42c] |
0x000718d2 ldr r3, [pc, 0x3e8] | r3 = *(0x71cbe);
0x000718d4 add r2, pc | r2 = 0xe35d6;
0x000718d6 ldr r3, [r2, r3] | r3 = *(0xe35d6);
0x000718d8 ldr r2, [r3] | r2 = *(0xe35d6);
0x000718da ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000718dc eors r2, r3 | r2 ^= r3;
0x000718de mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000718e2 bne.w 0x71de6 | goto label_63;
| }
0x000718e6 ldr.w r1, [pc, 0x418] | r1 = *(0x00071d00);
0x000718ea add r1, pc | r1 += pc;
| label_24:
0x000718ec ldr r0, [sp, 0x24] | r0 = var_24h;
0x000718ee b 0x715a6 | goto label_16;
| label_73:
0x000718f0 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000718f2 ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x000718f4 ldrb.w r1, [r3, 0xaa] | r1 = *((r3 + 0xaa));
0x000718f8 uxth.w r3, r8 | r3 = (int16_t) r8;
0x000718fc mov r8, r3 | r8 = r3;
0x000718fe str r3, [sp, 0x40] | var_40h = r3;
0x00071900 and r1, r1, 2 | r1 &= 2;
| label_42:
0x00071904 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00071906 strh r3, [r7, 0x32] | *((r7 + 0x32)) = r3;
| label_23:
0x00071908 ldrb.w r3, [r7, 0x37] | r3 = *((r7 + 0x37));
0x0007190c orr r3, r3, 0x20 | r3 |= 0x20;
0x00071910 strb.w r3, [r7, 0x37] | *((r7 + 0x37)) = r3;
| if (r1 == 0) {
0x00071914 cbnz r1, 0x71920 |
0x00071916 uxtb r3, r3 | r3 = (int8_t) r3;
0x00071918 orr r3, r3, 8 | r3 |= 8;
0x0007191c strb.w r3, [r7, 0x37] | *((r7 + 0x37)) = r3;
| }
0x00071920 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00071922 strh r3, [r7, 0x34] | *((r7 + 0x34)) = r3;
0x00071924 cmp.w sb, 0 |
| if (sb != 0) {
0x00071928 beq 0x71932 |
0x0007192a ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x0007192c cmp r3, 0 |
| if (r3 != 0) {
0x0007192e bne.w 0x71c72 | goto label_90;
| }
| }
| label_30:
0x00071932 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00071934 str r3, [r7, 0x2c] | *((r7 + 0x2c)) = r3;
0x00071936 cmp r6, 0 |
| if (r6 == 0) {
0x00071938 beq.w 0x71d72 | goto label_91;
| }
0x0007193c ldr.w sb, [sp, 0x38] | sb = var_38h;
0x00071940 str r4, [sp, 0x44] | var_44h = r4;
0x00071942 mov r4, r8 | r4 = r8;
| label_17:
0x00071944 ldrb.w r3, [r6, 0x37] | r3 = *((r6 + 0x37));
0x00071948 and r3, r3, 3 | r3 &= 3;
0x0007194c cmp r3, 2 |
| if (r3 == 2) {
0x0007194e beq 0x719e8 | goto label_20;
| }
0x00071950 ldrh.w sl, [r6, 0x32] | sl = *((r6 + 0x32));
0x00071954 cmp r4, 0 |
| if (r4 == 0) {
0x00071956 beq.w 0x71aa8 | goto label_92;
| }
0x0007195a mov.w fp, 0 |
0x0007195e mov r8, sl | r8 = sl;
0x00071960 mov r5, fp | r5 = fp;
| do {
0x00071962 mov r3, r5 | r3 = r5;
0x00071964 mov r2, r7 | r2 = r7;
0x00071966 mov r1, sl | r1 = sl;
0x00071968 mov r0, r6 | r0 = r6;
0x0007196a bl 0x17d8c | r0 = fcn_00017d8c (r0, r1, r2, r3, r4);
| if (r0 == 0) {
0x0007196e cbnz r0, 0x71974 |
0x00071970 add.w fp, fp, 1 |
| }
0x00071974 adds r5, 1 | r5++;
0x00071976 cmp r5, r4 |
0x00071978 bne 0x71962 |
| } while (r5 != r4);
0x0007197a cmp.w fp, 0 |
| if (fp == 0) {
0x0007197e beq.w 0x71aa8 | goto label_92;
| }
0x00071982 ldrh r3, [r6, 0x34] | r3 = *((r6 + 0x34));
0x00071984 add.w r2, sl, fp | r2 = sl + fp;
0x00071988 cmp r2, r3 |
| if (r2 > r3) {
0x0007198a ble 0x719a0 |
0x0007198c mov r1, r6 | r1 = r6;
0x0007198e mov r0, sb | r0 = sb;
0x00071990 bl 0x1c9ac | r0 = fcn_0001c9ac (r0, r1, r2);
0x00071994 cmp r0, 0 |
| if (r0 != 0) {
0x00071996 bne.w 0x71d38 | goto label_93;
| }
0x0007199a ldrh.w sl, [r6, 0x32] | sl = *((r6 + 0x32));
0x0007199e mov r8, sl | r8 = sl;
| }
0x000719a0 movs r5, 0 | r5 = 0;
0x000719a2 mov r1, sl | r1 = sl;
0x000719a4 b 0x719a8 |
| while (r5 != r4) {
0x000719a6 ldrh r1, [r6, 0x32] | r1 = *((r6 + 0x32));
0x000719a8 mov r3, r5 | r3 = r5;
0x000719aa mov r2, r7 | r2 = r7;
0x000719ac mov r0, r6 | r0 = r6;
0x000719ae bl 0x17d8c | r0 = fcn_00017d8c (r0, r1, r2, r3, r4);
| if (r0 == 0) {
0x000719b2 cbnz r0, 0x719e2 |
0x000719b4 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000719b6 ldrsh.w r1, [r3, r5, lsl 1] | offset_3 = r5 << 1;
| r1 = *((r3 + offset_3));
0x000719ba ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x000719bc ldr.w r2, [r3, r5, lsl 2] | offset_4 = r5 << 2;
| r2 = *((r3 + offset_4));
0x000719c0 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000719c2 strh.w r1, [r3, r8, lsl 1] | offset_5 = r8 << 1;
| *((r3 + offset_5)) = r1;
0x000719c6 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x000719c8 str.w r2, [r3, r8, lsl 2] | __asm ("str.w r2, [r3, r8, lsl 2]");
0x000719cc ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x000719ce ldrb r3, [r3, r5] | r3 = *((r3 + r5));
| if (r3 != 0) {
0x000719d0 cbz r3, 0x719de |
0x000719d2 ldrb.w r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x000719d6 orr r3, r3, 2 | r3 |= 2;
0x000719da strb.w r3, [r6, 0x38] | *((r6 + 0x38)) = r3;
| }
0x000719de add.w r8, r8, 1 | r8++;
| }
0x000719e2 adds r5, 1 | r5++;
0x000719e4 cmp r5, r4 |
0x000719e6 bne 0x719a6 |
| }
| label_20:
0x000719e8 ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x000719ea cmp r6, 0 |
| if (r6 != 0) {
0x000719ec bne 0x71944 | goto label_17;
| }
0x000719ee mov r8, r4 | r8 = r4;
0x000719f0 ldr r4, [sp, 0x44] | r4 = var_44h;
0x000719f2 ldrh r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x000719f4 ldrsh.w r1, [r4, 0x2a] | r1 = *((r4 + 0x2a));
0x000719f8 mov sl, r3 | sl = r3;
0x000719fa cmp r1, 0 |
| if (r1 <= 0) {
0x000719fc ble 0x71aae | goto label_94;
| }
| label_39:
0x000719fe ldr.w ip, [r7, 4] | ip = *((r7 + 4));
0x00071a02 lsl.w r0, r8, 1 | r0 = r8 << 1;
0x00071a06 mov.w lr, 0 | lr = 0;
0x00071a0a mov sb, lr | sb = lr;
0x00071a0c mov r2, lr | r2 = lr;
0x00071a0e add.w r6, ip, r0 | r6 = ip + r0;
| label_18:
0x00071a12 mov r3, ip | r3 = ip;
0x00071a14 b 0x71a1e |
| while (r3 != r6) {
0x00071a16 ldrsh r5, [r3], 2 | r5 = *(r3);
| r3 += 2;
0x00071a1a cmp r5, r2 |
| if (r5 == r2) {
0x00071a1c beq 0x71a30 | goto label_95;
| }
0x00071a1e cmp r3, r6 |
0x00071a20 bne 0x71a16 |
| }
0x00071a22 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00071a24 add r3, lr | r3 += lr;
0x00071a26 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00071a28 lsls r5, r3, 0x1a | r5 = r3 << 0x1a;
0x00071a2a it pl |
| if (r5 < r3) {
0x00071a2c addpl sb, sb, 1 | sb++;
| }
| label_95:
0x00071a30 adds r2, 1 | r2++;
0x00071a32 add.w lr, lr, 0x14 | lr += 0x14;
0x00071a36 cmp r1, r2 |
| if (r1 != r2) {
0x00071a38 bne 0x71a12 | goto label_18;
| }
0x00071a3a add.w r2, sb, r8 | r2 = sb + r8;
0x00071a3e cmp r2, sl |
| if (r2 <= sl) {
0x00071a40 ble 0x71a62 | goto label_96;
| }
| label_21:
0x00071a42 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00071a44 mov r1, r7 | r1 = r7;
0x00071a46 bl 0x1c9ac | r0 = fcn_0001c9ac (r0, r1, r2);
0x00071a4a cmp r0, 0 |
| if (r0 != 0) {
0x00071a4c bne.w 0x71146 | goto label_3;
| }
0x00071a50 ldrsh.w r1, [r4, 0x2a] | r1 = *((r4 + 0x2a));
0x00071a54 cmp r1, 0 |
0x00071a56 itt gt |
| if (r1 <= 0) {
0x00071a58 ldrgt ip, [r7, 4] | ip = *((r7 + 4));
| }
| if (r1 > 0) {
0x00071a5c lsl.w r0, r8, 1 | r0 = r8 << 1;
| }
| if (r1 <= 0) {
0x00071a60 ble 0x71ab8 | goto label_40;
| }
| label_96:
0x00071a62 ldr r3, [pc, 0x2a0] |
0x00071a64 movs r6, 0 | r6 = 0;
0x00071a66 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x00071a68 add r3, pc | r3 = 0xe3772;
0x00071a6a add.w lr, r3, 0x358 | lr = r3 + 0x358;
| label_19:
0x00071a6e add r0, ip | r0 += ip;
0x00071a70 mov r3, ip | r3 = ip;
0x00071a72 b 0x71a7c |
| while (r3 != r0) {
0x00071a74 ldrsh r2, [r3], 2 | r2 = *(r3);
| r3 += 2;
0x00071a78 cmp r2, r6 |
| if (r2 == r6) {
0x00071a7a beq 0x71a9a | goto label_97;
| }
0x00071a7c cmp r3, r0 |
0x00071a7e bne 0x71a74 |
| }
0x00071a80 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00071a82 add r2, r5 | r2 += r5;
0x00071a84 ldrh r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x00071a86 lsls r2, r2, 0x1a | r2 <<= 0x1a;
| if (r2 >= r2) {
0x00071a88 bmi 0x71a9a |
0x00071a8a strh r6, [r3] | *(r3) = r6;
0x00071a8c ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x00071a8e ldrsh.w r1, [r4, 0x2a] | r1 = *((r4 + 0x2a));
0x00071a92 str.w lr, [r3, r8, lsl 2] | __asm ("str.w lr, [r3, r8, lsl 2]");
0x00071a96 add.w r8, r8, 1 | r8++;
| }
| label_97:
0x00071a9a adds r6, 1 | r6++;
0x00071a9c adds r5, 0x14 | r5 += 0x14;
0x00071a9e cmp r6, r1 |
| if (r6 >= r1) {
0x00071aa0 bge 0x71ab8 | goto label_40;
| }
0x00071aa2 lsl.w r0, r8, 1 | r0 = r8 << 1;
0x00071aa6 b 0x71a6e | goto label_19;
| label_92:
0x00071aa8 strh.w sl, [r6, 0x34] | *((r6 + 0x34)) = sl;
0x00071aac b 0x719e8 | goto label_20;
| label_94:
0x00071aae ldr r2, [sp, 0x40] | r2 = var_40h;
0x00071ab0 cmp r2, r3 |
0x00071ab2 it hi |
| if (r2 > r3) {
0x00071ab4 movhi r2, r8 | r2 = r8;
| goto label_98;
| }
| if (r2 > r3) {
| label_98:
0x00071ab6 bhi 0x71a42 | goto label_21;
| }
| label_40:
0x00071ab8 mov r0, r7 | r0 = r7;
0x00071aba bl 0x9db0 | fcn_00009db0 (r0);
0x00071abe b.w 0x71146 | goto label_3;
| label_66:
0x00071ac2 ldr r2, [pc, 0x244] |
0x00071ac4 ldr r3, [pc, 0x1f4] | r3 = *(0x71cbc);
0x00071ac6 add r2, pc | r2 = 0xe37d4;
0x00071ac8 ldr r3, [r2, r3] | r3 = *(0xe37d4);
0x00071aca ldr r2, [r3] | r2 = *(0xe37d4);
0x00071acc ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00071ace eors r2, r3 | r2 ^= r3;
0x00071ad0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00071ad4 bne.w 0x71de6 | goto label_63;
| }
0x00071ad8 ldr r1, [pc, 0x230] |
0x00071ada ldr r2, [r4] | r2 = *(r4);
0x00071adc ldr r0, [sp, 0x24] | r0 = var_24h;
0x00071ade add r1, pc | r1 = 0xe37ee;
0x00071ae0 add sp, 0x74 |
0x00071ae2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00071ae6 b.w 0x25778 | void (*0x25778)() ();
| label_25:
0x00071aea movs r3, 0 | r3 = 0;
0x00071aec b.w 0x712ac | goto label_22;
| label_69:
0x00071af0 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00071af2 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00071af6 ldr.w r0, [r2, r3, lsl 2] | offset_6 = r3 << 2;
| r0 = *((r2 + offset_6));
0x00071afa str r0, [sp, 0x50] | var_50h = r0;
| if (r0 != 0) {
0x00071afc cbz r0, 0x71b06 |
0x00071afe blx 0x8160 | r0 = fcn_00008160 ();
0x00071b02 bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
| }
0x00071b06 movs r3, 0 | r3 = 0;
0x00071b08 movs r1, 0x3b | r1 = 0x3b;
0x00071b0a str r0, [sp, 0x54] | var_54h = r0;
0x00071b0c add r2, sp, 0x50 | r2 += var_50h;
0x00071b0e ldr r0, [sp, 0x38] | r0 = var_38h;
0x00071b10 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x00071b14 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00071b16 mov r1, r0 | r1 = r0;
0x00071b18 ldr r0, [r3] | r0 = *(r3);
0x00071b1a bl 0x1afb0 | r0 = fcn_0001afb0 (r0, r1);
0x00071b1e cmp r0, 0 |
| if (r0 == 0) {
0x00071b20 beq 0x71c0e | goto label_99;
| }
0x00071b22 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00071b24 ldrb.w r3, [r2, 0xc8] | r3 = *((r2 + 0xc8));
0x00071b28 cmp r3, 1 |
| if (r3 < 1) {
0x00071b2a bls 0x71b46 | goto label_100;
| }
0x00071b2c ldr.w r3, [r2, 0x10c] | r3 = *((r2 + 0x10c));
0x00071b30 add.w r1, r4, 0x28 | r1 = r4 + 0x28;
| if (r3 != 0) {
0x00071b34 cbnz r3, 0x71b3c | goto label_101;
| }
0x00071b36 b 0x71b46 | goto label_100;
| do {
0x00071b38 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 == 0) {
0x00071b3a cbz r3, 0x71b46 | goto label_100;
| }
| label_101:
0x00071b3c ldr r2, [r3] | r2 = *(r3);
0x00071b3e cmp r1, r2 |
0x00071b40 bne 0x71b38 |
| } while (r1 != r2);
0x00071b42 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x00071b44 str r2, [r3] | *(r3) = r2;
| label_100:
0x00071b46 ldr r5, [sp, 0x24] | r5 = var_24h;
0x00071b48 movw r2, 0xffff | r2 = 0xffff;
0x00071b4c ldrb.w r3, [r5, 0xc6] | r3 = *((r5 + 0xc6));
0x00071b50 strb r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
0x00071b52 movs r3, 0 | r3 = 0;
0x00071b54 strh r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x00071b56 movs r2, 2 | r2 = 2;
0x00071b58 strd r3, r3, [sp, 0x10] | __asm ("strd r3, r3, [var_10h]");
0x00071b5c mov r1, r3 | r1 = r3;
0x00071b5e strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [var_ch]");
0x00071b62 str r2, [sp, 0x18] | var_18h = r2;
0x00071b64 ldrb.w r2, [r4, 0x32] | r2 = *((r4 + 0x32));
0x00071b68 strd r0, r2, [sp] | __asm ("strd r0, r2, [sp]");
0x00071b6c mov r2, r3 | r2 = r3;
0x00071b6e mov r0, r5 | r0 = r5;
0x00071b70 bl 0xa6b64 | fcn_000a6b64 (r0, r1, r2, r3, r4, r5, r6);
0x00071b74 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00071b76 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00071b7a cmp r3, 0 |
| if (r3 != 0) {
0x00071b7c bne 0x71c0e | goto label_99;
| }
0x00071b7e ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00071b80 cmp r3, 0 |
| if (r3 != 0) {
0x00071b82 bne 0x71c0e | goto label_99;
| }
0x00071b84 ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x00071b86 mov r7, r6 | r7 = r6;
| if (r6 != 0) {
0x00071b88 cbnz r6, 0x71b90 | goto label_102;
| }
0x00071b8a b 0x71b9c | goto label_103;
| do {
0x00071b8c ldr r7, [r7, 0x14] | r7 = *((r7 + 0x14));
| if (r7 == 0) {
0x00071b8e cbz r7, 0x71b9c | goto label_103;
| }
| label_102:
0x00071b90 ldrb.w r3, [r7, 0x37] | r3 = *((r7 + 0x37));
0x00071b94 and r3, r3, 3 | r3 &= 3;
0x00071b98 cmp r3, 2 |
0x00071b9a bne 0x71b8c |
| } while (r3 != 2);
| label_103:
0x00071b9c ldr r3, [sp, 0x38] | r3 = var_38h;
0x00071b9e ldrb.w r1, [r3, 0xaa] | r1 = *((r3 + 0xaa));
0x00071ba2 ldrh r3, [r7, 0x32] | r3 = *((r7 + 0x32));
0x00071ba4 and r1, r1, 2 | r1 &= 2;
0x00071ba8 mov r8, r3 | r8 = r3;
0x00071baa str r3, [sp, 0x40] | var_40h = r3;
0x00071bac b 0x71908 | goto label_23;
| label_65:
0x00071bae ldr r2, [pc, 0x160] |
0x00071bb0 ldr r3, [pc, 0x108] | r3 = *(0x71cbc);
0x00071bb2 add r2, pc | r2 = 0xe38c8;
0x00071bb4 ldr r3, [r2, r3] | r3 = *(0xe38c8);
0x00071bb6 ldr r2, [r3] | r2 = *(0xe38c8);
0x00071bb8 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00071bba eors r2, r3 | r2 ^= r3;
0x00071bbc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00071bc0 bne.w 0x71de6 | goto label_63;
| }
0x00071bc4 ldr r1, [pc, 0x14c] |
0x00071bc6 add r1, pc | r1 = 0xe38de;
0x00071bc8 b 0x718ec | goto label_24;
| label_55:
0x00071bca cmp r6, 0 |
| if (r6 >= 0) {
0x00071bcc bge 0x71aea | goto label_25;
| }
0x00071bce movs r0, 0x1e | r0 = 0x1e;
0x00071bd0 movs r3, 8 | r3 = 8;
0x00071bd2 b.w 0x71292 | goto label_1;
| label_68:
0x00071bd6 ldr.w r2, [sb] | r2 = *(sb);
0x00071bda it lt |
| if (r3 >= 8) {
0x00071bdc ldrlt r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
| }
0x00071be0 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x00071be4 it lt |
| if (r3 >= 8) {
0x00071be6 addlt r3, r3, -1 | r3 += -1;
| }
0x00071bea cmp r2, 0 |
| if (r2 != 0) {
0x00071bec bne 0x71c9c | goto label_104;
| }
0x00071bee ldr.w r2, [sb, 0x68] | r2 = *((sb + 0x68));
0x00071bf2 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00071bf6 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| do {
0x00071bfa movs r2, 2 | r2 = 2;
0x00071bfc str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00071bfe b 0x71418 | goto label_26;
| label_60:
0x00071c00 ldr r3, [pc, 0x114] |
0x00071c02 ldr r2, [pc, 0x118] |
0x00071c04 add r3, pc | r3 = 0xe3920;
0x00071c06 add r2, pc | r2 = 0xe3928;
0x00071c08 str r3, [sp, 0x3c] | var_3ch = r3;
0x00071c0a b.w 0x712fa | goto label_27;
| label_99:
0x00071c0e ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00071c10 bic r3, r3, 0x80 | r3 = BIT_MASK (r3, 0x80);
0x00071c14 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00071c16 b.w 0x71146 | goto label_3;
| label_75:
0x00071c1a ldr r2, [pc, 0x104] |
0x00071c1c ldr r3, [pc, 0x9c] | r3 = *(0x71cbc);
0x00071c1e add r2, pc | r2 = 0xe3944;
0x00071c20 ldr r3, [r2, r3] | r3 = *(0xe3944);
0x00071c22 ldr r2, [r3] | r2 = *(0xe3944);
0x00071c24 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00071c26 eors r2, r3 | r2 ^= r3;
0x00071c28 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00071c2c bne.w 0x71de6 | goto label_63;
| }
0x00071c30 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00071c32 add sp, 0x74 |
0x00071c34 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00071c38 b.w 0x101ec | void (*0x101ec)() ();
| label_61:
0x00071c3c ldr r3, [sp, 0x28] | r3 = var_28h;
0x00071c3e cmp r3, 0 |
| if (r3 != 0) {
0x00071c40 bne.w 0x71d4c | goto label_105;
| }
0x00071c44 ldr r0, [sp, 0x34] | r0 = var_34h;
| label_34:
0x00071c46 ldr r3, [r0] | r3 = *(r0);
0x00071c48 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00071c4a ldrb r6, [r3] | r6 = *(r3);
0x00071c4c ldr.w r1, [r1, 0xb4] | r1 = *((r1 + 0xb4));
0x00071c50 cmp r6, 0x3b |
0x00071c52 it ne |
| if (r6 == 0x3b) {
0x00071c54 ldrne r0, [r0, 4] | r0 = *((r0 + 4));
| }
0x00071c56 sub.w r3, r3, r1 | r3 -= r1;
0x00071c5a str r1, [sp] | *(sp) = r1;
0x00071c5c ldr r1, [pc, 0xc4] |
0x00071c5e it ne |
| if (r6 == 0x3b) {
0x00071c60 addne r3, r3, r0 | r3 += r0;
| }
0x00071c62 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00071c64 add r1, pc | r1 = 0xe398c;
0x00071c66 bl 0x2677c | r0 = fcn_0002677c (r0);
0x00071c6a mov r8, r0 | r8 = r0;
0x00071c6c b 0x714aa | goto label_28;
| label_85:
0x00071c6e movs r1, 7 | r1 = 7;
0x00071c70 b 0x7178a | goto label_29;
| label_90:
0x00071c72 ldr.w r2, [sb] | r2 = *(sb);
0x00071c76 it lt |
| if (r1 >= 7) {
0x00071c78 ldrlt r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
| }
0x00071c7c ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x00071c80 it lt |
| if (r1 >= 7) {
0x00071c82 addlt r3, r3, -1 | r3 += -1;
| }
0x00071c86 cmp r2, 0 |
| if (r2 != 0) {
0x00071c88 bne 0x71d54 | goto label_106;
| }
0x00071c8a ldr.w r2, [sb, 0x68] | r2 = *((sb + 0x68));
0x00071c8e add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00071c92 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_35:
0x00071c96 movs r2, 0xb | r2 = 0xb;
0x00071c98 strb r2, [r3] | *(r3) = r2;
0x00071c9a b 0x71932 | goto label_30;
| label_104:
0x00071c9c ldr r3, [pc, 0x88] |
0x00071c9e add r3, pc | r3 = 0xe39ca;
0x00071ca0 adds r3, 4 | r3 += 4;
0x00071ca2 b 0x71bfa |
| } while (1);
| label_87:
0x00071ca4 ldr r3, [pc, 0x84] |
0x00071ca6 add r3, pc | r3 = 0xe39d6;
0x00071ca8 str r3, [sp, 0x40] | var_40h = r3;
0x00071caa ldr r3, [pc, 0x84] |
0x00071cac add r3, pc | r3 = 0xe39e2;
0x00071cae str r3, [sp, 0x38] | var_38h = r3;
0x00071cb0 ldr r3, [pc, 0x80] |
0x00071cb2 add r3, pc | r3 = 0xe39ea;
0x00071cb4 b 0x717d2 | goto label_31;
| label_93:
0x00071d38 ldr r4, [sp, 0x44] | r4 = var_44h;
0x00071d3a b.w 0x71146 | goto label_3;
| label_80:
0x00071d3e ldr r3, [r1, 0x20] | r3 = *((r1 + 0x20));
0x00071d40 subs r3, 1 | r3--;
0x00071d42 str r3, [r1, 0x20] | *((r1 + 0x20)) = r3;
0x00071d44 cmp r3, 0 |
| if (r3 == 0) {
0x00071d46 beq.w 0x7162a | goto label_32;
| }
0x00071d4a b 0x71630 | goto label_33;
| label_105:
0x00071d4c ldr r3, [sp, 0x24] | r3 = var_24h;
0x00071d4e add.w r0, r3, 0xbc | r0 = r3 + 0xbc;
0x00071d52 b 0x71c46 | goto label_34;
| label_106:
0x00071d54 ldr r3, [pc, 0x98] |
0x00071d56 add r3, pc | r3 = 0xe3b4a;
0x00071d58 adds r3, 4 | r3 += 4;
0x00071d5a b 0x71c96 | goto label_35;
| label_83:
0x00071d5c ldr r3, [pc, 0x94] |
0x00071d5e add r3, pc | r3 = 0xe3b56;
0x00071d60 adds r3, 4 | r3 += 4;
0x00071d62 b 0x7173c | goto label_36;
| label_81:
0x00071d64 ldr r3, [pc, 0x90] |
0x00071d66 add r3, pc | r3 = 0xe3b62;
0x00071d68 adds r3, 4 | r3 += 4;
0x00071d6a b 0x7169c | goto label_37;
| label_77:
0x00071d6c ldr r3, [sp, 0x34] | r3 = var_34h;
0x00071d6e ldr r3, [r3] | r3 = *(r3);
0x00071d70 b 0x71578 | goto label_38;
| label_91:
0x00071d72 ldrsh.w r1, [r4, 0x2a] | r1 = *((r4 + 0x2a));
0x00071d76 cmp r1, 0 |
0x00071d78 it gt |
| if (r1 > 0) {
0x00071d7a movgt sl, r8 | sl = r8;
| goto label_107;
| }
| if (r1 > 0) {
| label_107:
0x00071d7c bgt.w 0x719fe | goto label_39;
| }
0x00071d80 b 0x71ab8 | goto label_40;
| label_50:
0x00071d82 mov.w r7, 0x8000 |
0x00071d86 movt r7, 0xffff | r7 = 0xNaN;
0x00071d8a b.w 0x71164 | goto label_41;
| label_72:
0x00071d8e mov.w r8, 1 | r8 = 1;
0x00071d92 str.w r8, [sp, 0x40] | __asm ("str.w r8, [var_40h]");
0x00071d96 b 0x71904 | goto label_42;
| label_84:
0x00071d98 ldr r0, [r4] | r0 = *(r4);
0x00071d9a mov r3, r6 | r3 = r6;
0x00071d9c ldrb r2, [r0] | r2 = *(r0);
0x00071d9e cmp r2, 0 |
| if (r2 != 0) {
0x00071da0 bne.w 0x7179e | goto label_43;
| }
0x00071da4 ldr r3, [pc, 0x54] |
0x00071da6 movs r2, 2 | r2 = 2;
0x00071da8 add r3, pc | r3 = 0xe3ba8;
0x00071daa str r3, [sp, 0x40] | var_40h = r3;
0x00071dac ldr r3, [pc, 0x50] |
0x00071dae add r3, pc | r3 = 0xe3bb2;
0x00071db0 str r3, [sp, 0x38] | var_38h = r3;
0x00071db2 ldr r3, [pc, 0x50] |
0x00071db4 add r3, pc | r3 = 0xe3bbe;
0x00071db6 b 0x717d2 | goto label_31;
| label_82:
0x00071db8 movs r3, 0 | r3 = 0;
0x00071dba movs r1, 0xe | r1 = 0xe;
0x00071dbc mov r0, sl | r0 = sl;
0x00071dbe str r3, [sp] | *(sp) = r3;
0x00071dc0 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00071dc4 mov r8, r0 | r8 = r0;
0x00071dc6 b 0x716d2 | goto label_44;
| label_86:
0x00071dc8 movs r1, 2 | r1 = 2;
0x00071dca b 0x717b4 | goto label_45;
| label_88:
0x00071dcc ldr r0, [sp, 0x20] | r0 = var_20h;
0x00071dce bl 0x101ec | fcn_000101ec (r0);
0x00071dd2 b.w 0x714aa | goto label_28;
| label_74:
0x00071dd6 ldr r1, [pc, 0x30] |
0x00071dd8 ldr r2, [r3, r6] | r2 = *((r3 + r6));
0x00071dda ldr r0, [sp, 0x24] | r0 = var_24h;
0x00071ddc add r1, pc | r1 = 0xe3bea;
0x00071dde bl 0x77c00 | fcn_00077c00 (r0);
0x00071de2 b.w 0x71508 | goto label_46;
| label_63:
0x00071de6 blx 0x7e8c | fcn_00007e8c ();
| label_71:
0x00071dea movs r3, 0 | r3 = 0;
0x00071dec ldrh r3, [r3, 0x32] | r3 = *((r3 + 0x32));
0x00071dee udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x72a46 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00072a46 () | void fcn_00072a46 (int16_t arg_10h, int16_t arg_11h, int16_t arg_12h, int16_t arg_16h, int16_t arg_17h, int16_t arg_18h, int16_t arg_28h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_74h, int16_t arg_80h, int16_t arg_91h, int16_t arg_b8h, int16_t arg_bch, int16_t arg_c0h, int16_t arg_c4h, int16_t arg_c7h, int16_t arg_c8h, int16_t arg_cch, int16_t arg_d8h, int16_t arg_e4h, int16_t arg_e8h, int16_t arg_ech, int16_t arg_f4h, int16_t arg_f8h, int16_t arg_104h, int16_t arg_108h, int16_t arg_10ch, int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, int16_t arg_ch, int16_t arg_14h, int16_t arg_20h, int16_t arg_24h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_48h, int16_t arg_58h, int16_t arg_60h, int16_t arg_70h, int16_t arg_78h, int16_t arg_7ch, int16_t arg_84h, int16_t arg_88h, int16_t arg_8ch, int16_t arg_90h, int16_t arg_94h, int16_t arg_98h, int16_t arg_9ch, int16_t arg_a0h, int16_t arg_a4h, int16_t arg_a8h, int16_t arg_b0h, int16_t arg_d0h, int16_t arg_fch, int16_t arg1) {
| r0 = arg1;
0x00071e50 addsmi r2, ip, 0xe4000000 | __asm ("addsmi r2, ip, aav.0x000000ff");
| if (? <= ?) {
0x00071e54 bhi 0x71eb6 |
0x00071e56 ldr.w r2, [pc, 0xa5c] | r2 = *(0x000728b4);
0x00071e5a lsls r4, r4, 1 | r4 <<= 1;
0x00071e5c ldr.w r1, [pc, 0xa58] | r1 = *(0x000728b8);
0x00071e60 mov r3, sb | r3 = sb;
0x00071e62 ldr.w r5, [pc, 0xa58] |
0x00071e66 add r2, pc | r2 += pc;
0x00071e68 add r2, r4 | r2 += r4;
0x00071e6a add r1, pc | r1 += pc;
0x00071e6c ldrh.w r2, [r2, 0xb00] | r2 = *((r2 + 0xb00));
0x00071e70 add r5, pc | r5 = 0xe4732;
0x00071e72 adds r0, r2, r3 | r0 = r2 + r3;
0x00071e74 ldrh.w r6, [r1, r0, lsl 1] | offset_0 = r0 << 1;
| r6 = *((r1 + offset_0));
0x00071e78 cmp r6, r3 |
| if (r6 == r3) {
0x00071e7a beq.w 0x72408 | goto label_145;
| }
| label_2:
0x00071e7e add.w r0, r5, r3, lsl 1 | r0 = r5 + (r3 << 1);
0x00071e82 ldrh.w r0, [r0, 0xf58] | r0 = *((r0 + 0xf58));
0x00071e86 cmp r0, 0 |
| if (r0 != 0) {
0x00071e88 bne.w 0x723fa | goto label_146;
| }
0x00071e8c adds r2, 0x65 | r2 += 0x65;
0x00071e8e cmp r3, 0 |
0x00071e90 ldrh.w r1, [r1, r2, lsl 1] | offset_1 = r2 << 1;
| r1 = *((r1 + offset_1));
0x00071e94 sub.w r1, r1, 0x65 | r1 -= 0x65;
0x00071e98 clz r1, r1 | r1 &= r1;
0x00071e9c lsr.w r1, r1, 5 | r1 >>= 5;
0x00071ea0 it eq |
| if (r3 != 0) {
0x00071ea2 moveq r1, 0 | r1 = 0;
| }
0x00071ea4 cmp r1, 0 |
| if (r1 != 0) {
0x00071ea6 bne.w 0x72466 | goto label_147;
| }
0x00071eaa ldr.w r3, [pc, 0xa14] | r3 = *(0x000728c0);
0x00071eae add r3, pc | r3 += pc;
0x00071eb0 add r3, r4 | r3 += r4;
0x00071eb2 ldrh.w r4, [r3, 0xe4c] | r4 = *((r3 + 0xe4c));
| }
| label_4:
0x00071eb6 movw r3, 0x4c9 | r3 = 0x4c9;
0x00071eba cmp r4, r3 |
| if (r4 < r3) {
0x00071ebc bls.w 0x72420 | goto label_148;
| }
| label_3:
0x00071ec0 ldr.w r3, [pc, 0xa00] |
0x00071ec4 subw r4, r4, 0x4ca | __asm ("subw r4, r4, aav.0x000000ff");
0x00071ec8 ldr.w r6, [sl] | r6 = *(sl);
0x00071ecc add r3, pc | r3 = 0xe4794;
0x00071ece add r3, r4 | r3 += r4;
0x00071ed0 ldrsb.w r5, [r3, 0x1c8] | r5 = *((r3 + 0x1c8));
| if (r5 == 0) {
0x00071ed4 cbnz r5, 0x71ee0 |
0x00071ed6 ldr.w r3, [sl, 0x4b8] | r3 = *((sl + 0x4b8));
0x00071eda cmp r3, r6 |
| if (r3 < r6) {
0x00071edc bls.w 0x724aa | goto label_149;
| }
| }
0x00071ee0 ldrd r3, r2, [sp, 0x60] | __asm ("ldrd r3, r2, [arg_60h]");
0x00071ee4 cmp.w r4, 0x150 |
| if (r4 > 0x150) {
0x00071ee8 bhi.w 0x723bc | goto label_6;
| }
| /* switch table (338 cases) at 0x71ef0 */
0x00071eec tbh [pc, r4, lsl 1] | __asm ("tbh [pc, r4, lsl 1]");
0x00072192 ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x00072196 movs r3, 0 | r3 = 0;
0x00072198 ldr.w r0, [fp, 0x24] | r0 = *(arg_24h);
0x0007219c str r2, [sp, 0x48] | *(arg_48h) = r2;
0x0007219e ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x000721a0 str r0, [sp, 0x40] | *(arg_40h) = r0;
0x000721a2 str r2, [sp, 0x50] | *(arg_50h) = r2;
0x000721a4 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x000721a6 str r2, [sp, 0x54] | *(arg_54h) = r2;
0x000721a8 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x000721ac str r2, [sp, 0x2c] | *(arg_2ch) = r2;
0x000721ae ldr.w r2, [fp, 0xec] | r2 = *(arg_ech);
0x000721b2 str.w r3, [fp, 0xec] | __asm ("str.w r3, [arg_ech]");
0x000721b6 ldr.w r3, [fp] | r3 = *(fp);
0x000721ba str r2, [sp, 0x38] | *(arg_38h) = r2;
0x000721bc str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x000721be cmp r0, 0 |
| if (r0 != 0) {
0x000721c0 bne.w 0x75328 | goto label_150;
| }
0x000721c4 cmp r2, 0 |
| if (r2 == 0) {
0x000721c6 beq.w 0x723b4 | goto label_15;
| }
0x000721ca ldr r1, [r2, 0x14] | r1 = *((r2 + 0x14));
0x000721cc ldr r2, [r2] | r2 = *(r2);
0x000721ce ldr r7, [r3, 0x10] | r7 = *((r3 + 0x10));
0x000721d0 str r2, [sp, 0x44] | *(arg_44h) = r2;
0x000721d2 cmp r1, 0 |
| if (r1 == 0) {
0x000721d4 beq.w 0x76874 | goto label_151;
| }
0x000721d8 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x000721da cmp r1, r3 |
| if (r1 == r3) {
0x000721dc beq.w 0x76094 | goto label_152;
| }
0x000721e0 add.w r2, r7, 0x10 | r2 = r7 + 0x10;
| do {
0x000721e4 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x000721e6 adds r0, 1 | r0++;
0x000721e8 mov r7, r2 | r7 = r2;
0x000721ea lsl.w ip, r0, 4 |
0x000721ee adds r2, 0x10 | r2 += 0x10;
0x000721f0 cmp r1, r3 |
0x000721f2 bne 0x721e4 |
| } while (r1 != r3);
0x000721f4 sub.w r8, r0, 1 | r8 = r0 - 1;
0x000721f8 str r0, [sp, 0x40] | *(arg_40h) = r0;
0x000721fa clz r8, r8 | r8 &= r8;
0x000721fe str.w ip, [sp, 0x4c] | __asm ("str.w ip, [arg_4ch]");
0x00072202 lsr.w r8, r8, 5 | r8 >>= 5;
| label_81:
0x00072206 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00072208 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x0007220a str r2, [r1, 0x1c] | *((r1 + 0x1c)) = r2;
| if (r2 == 0) {
0x0007220c cbz r2, 0x7221a | goto label_153;
| }
0x0007220e ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00072210 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
| do {
0x00072212 str r1, [r2, 4] | *((r2 + 4)) = r1;
0x00072214 ldr r2, [r2, 0x28] | r2 = *((r2 + 0x28));
0x00072216 cmp r2, 0 |
0x00072218 bne 0x72212 |
| } while (r2 != 0);
| label_153:
0x0007221a ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x0007221c str r2, [sp, 0x70] | *(arg_70h) = r2;
0x0007221e cmp r2, 0 |
| if (r2 == 0) {
0x00072220 beq.w 0x75fc2 | goto label_154;
| }
0x00072224 ldr r0, [sp, 0x44] | r0 = *(arg_44h);
0x00072226 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00072228 blx 0x8160 | fcn_00008160 ();
0x0007222c ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x0007222e bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
| label_74:
0x00072232 ldr r2, [r7] | r2 = *(r7);
0x00072234 str r3, [sp, 0x98] | *(arg_98h) = r3;
0x00072236 ldr.w r3, [pc, 0x690] |
0x0007223a str r0, [sp, 0x74] | *(arg_74h) = r0;
0x0007223c strb.w r8, [sp, 0x9c] | *(arg_9ch) = r8;
0x00072240 add r3, pc |
0x00072242 str r2, [sp, 0xa0] | *(arg_a0h) = r2;
0x00072244 str r3, [sp, 0xa4] | *(arg_a4h) = r3;
0x00072246 ldr.w r3, [pc, 0x684] | r3 = *(0x000728cc);
0x0007224a strd fp, fp, [sp, 0x78] | __asm ("strd fp, fp, [arg_0hx78]");
0x0007224e add r3, pc |
0x00072250 str r3, [sp, 0x80] | *(arg_80h) = r3;
0x00072252 ldr.w r3, [pc, 0x67c] | r3 = *(0x000728d0);
0x00072256 add r3, pc |
0x00072258 str r3, [sp, 0x84] | *(arg_84h) = r3;
0x0007225a ldr.w r3, [pc, 0x678] | r3 = *(0x000728d4);
0x0007225e add r3, pc | r3 = 0x23b21c;
0x00072260 str r3, [sp, 0x88] | *(arg_88h) = r3;
0x00072262 movs r3, 0 | r3 = 0;
0x00072264 str r3, [sp, 0x8c] | *(arg_8ch) = r3;
0x00072266 strh.w r3, [sp, 0x90] | *(arg_90h) = r3;
0x0007226a add r3, sp, 0x70 | r3 += arg_70h;
0x0007226c str r3, [sp, 0xa8] | *(arg_a8h) = r3;
0x0007226e add r3, sp, 0x78 | r3 += arg_78h;
0x00072270 str r3, [sp, 0x94] | *(arg_94h) = r3;
0x00072272 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00072274 cmp r3, 0 |
| if (r3 == 0) {
0x00072276 beq.w 0x72382 | goto label_155;
| }
0x0007227a add r7, sp, 0x7c | r7 += arg_7ch;
0x0007227c mov r8, r4 | r8 = r4;
0x0007227e strd r5, r6, [sp, 0x30] | __asm ("strd r5, r6, [sp, 0x30]");
| label_1:
0x00072282 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00072284 ldr r1, [r3, 8] | r1 = *((r3 + 8));
| if (r1 != 0) {
0x00072286 cbz r1, 0x72298 |
0x00072288 ldr r3, [sp, 0x84] | r3 = *(arg_84h);
| if (r3 == 0) {
0x0007228a cbz r3, 0x72298 | goto label_156;
| }
0x0007228c mov r0, r7 | r0 = r7;
0x0007228e bl 0x30ca4 | r0 = fcn_00030ca4 (r0, r1, r2, r3, r4);
0x00072292 cmp r0, 0 |
| if (r0 != 0) {
0x00072294 bne.w 0x751e8 | goto label_157;
| }
| }
| label_156:
0x00072298 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x0007229a ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
| if (r1 != 0) {
0x0007229c cbz r1, 0x722aa |
0x0007229e mov r0, r7 | r0 = r7;
0x000722a0 bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
0x000722a4 cmp r0, 0 |
| if (r0 != 0) {
0x000722a6 bne.w 0x751e8 | goto label_157;
| }
0x000722a8 strh r7, [r3, 0x3c] | *((r3 + 0x3c)) = r7;
| }
0x000722aa ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000722ac ldr r4, [r3, 0x18] | r4 = *((r3 + 0x18));
| if (r4 == 0) {
0x000722ae cbz r4, 0x722d2 | goto label_158;
| }
0x000722b0 ldr r5, [r4] | r5 = *(r4);
0x000722b2 cmp r5, 0 |
| if (r5 <= 0) {
0x000722b4 ble 0x722d2 | goto label_158;
| }
0x000722b6 adds r4, 0x18 | r4 += 0x18;
| do {
0x000722b8 ldr r1, [r4, -0x10] | r1 = *((r4 - 0x10));
| if (r1 != 0) {
0x000722bc cbz r1, 0x722ca |
0x000722be mov r0, r7 | r0 = r7;
0x000722c0 bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
0x000722c4 cmp r0, 0 |
| if (r0 != 0) {
0x000722c6 bne.w 0x751e8 | goto label_157;
| }
| }
0x000722ca subs r5, 1 | r5--;
0x000722cc add.w r4, r4, 0x10 | r4 += 0x10;
0x000722d0 bne 0x722b8 |
| } while (r5 != 1);
| label_158:
0x000722d2 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000722d4 ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
| if (r4 != 0) {
0x000722d6 cbz r4, 0x722f8 |
0x000722d8 add r3, sp, 0xb0 | r3 += arg_b0h;
0x000722da movs r2, 0x4c | r2 = 0x4c;
0x000722dc movs r1, 0 | r1 = 0;
0x000722de mov r0, r3 | r0 = r3;
0x000722e0 blx 0x8264 | fcn_00008264 ();
0x000722e4 ldr r2, [sp, 0x84] | r2 = *(arg_84h);
0x000722e6 str r4, [sp, 0xd0] | *(arg_d0h) = r4;
| if (r2 == 0) {
0x000722e8 cbz r2, 0x722f8 | goto label_159;
| }
0x000722ea mov r1, r0 | r1 = r0;
0x000722ec mov r0, r7 | r0 = r7;
0x000722ee bl 0x30ca4 | r0 = fcn_00030ca4 (r0, r1, r2, r3, r4);
0x000722f2 cmp r0, 0 |
| if (r0 != 0) {
0x000722f4 bne.w 0x751e8 | goto label_157;
| }
| }
| label_159:
0x000722f8 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000722fa ldr r4, [r3, 0x20] | r4 = *((r3 + 0x20));
0x000722fc cmp r4, 0 |
| if (r4 == 0) {
0x000722fe beq 0x72372 | goto label_160;
| }
| label_0:
0x00072300 ldr r5, [r4] | r5 = *(r4);
| if (r5 == 0) {
0x00072302 cbz r5, 0x72326 | goto label_161;
| }
0x00072304 ldr r6, [r5] | r6 = *(r5);
0x00072306 cmp r6, 0 |
| if (r6 <= 0) {
0x00072308 ble 0x72326 | goto label_161;
| }
0x0007230a adds r5, 0x18 | r5 += 0x18;
| do {
0x0007230c ldr r1, [r5, -0x10] | r1 = *((r5 - 0x10));
| if (r1 != 0) {
0x00072310 cbz r1, 0x7231e |
0x00072312 mov r0, r7 | r0 = r7;
0x00072314 bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
0x00072318 cmp r0, 0 |
| if (r0 != 0) {
0x0007231a bne.w 0x751e8 | goto label_157;
| }
| }
0x0007231e subs r6, 1 | r6--;
0x00072320 add.w r5, r5, 0x10 | r5 += 0x10;
0x00072324 bne 0x7230c |
| } while (r6 != 1);
| label_161:
0x00072326 ldr r1, [r4, 4] | r1 = *((r4 + 4));
| if (r1 != 0) {
0x00072328 cbz r1, 0x72336 |
0x0007232a mov r0, r7 | r0 = r7;
0x0007232c bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
0x00072330 cmp r0, 0 |
| if (r0 != 0) {
0x00072332 bne.w 0x751e8 | goto label_157;
| }
| }
0x00072336 ldr r5, [r4, 8] | r5 = *((r4 + 8));
| if (r5 == 0) {
0x00072338 cbz r5, 0x7235c | goto label_162;
| }
0x0007233a ldr r6, [r5] | r6 = *(r5);
0x0007233c cmp r6, 0 |
| if (r6 <= 0) {
0x0007233e ble 0x7235c | goto label_162;
| }
0x00072340 adds r5, 0x18 | r5 += 0x18;
| do {
0x00072342 ldr r1, [r5, -0x10] | r1 = *((r5 - 0x10));
| if (r1 != 0) {
0x00072346 cbz r1, 0x72354 |
0x00072348 mov r0, r7 | r0 = r7;
0x0007234a bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
0x0007234e cmp r0, 0 |
| if (r0 != 0) {
0x00072350 bne.w 0x751e8 | goto label_157;
| }
| }
0x00072354 subs r6, 1 | r6--;
0x00072356 add.w r5, r5, 0x10 | r5 += 0x10;
0x0007235a bne 0x72342 |
| } while (r6 != 1);
| label_162:
0x0007235c ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
| if (r1 != 0) {
0x0007235e cbz r1, 0x7236c |
0x00072360 mov r0, r7 | r0 = r7;
0x00072362 bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
0x00072366 cmp r0, 0 |
| if (r0 != 0) {
0x00072368 bne.w 0x751e8 | goto label_157;
| }
| }
0x0007236c ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x0007236e cmp r4, 0 |
| if (r4 != 0) {
0x00072370 bne 0x72300 | goto label_0;
| }
| label_160:
0x00072372 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00072374 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x00072376 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00072378 cmp r3, 0 |
| if (r3 != 0) {
0x0007237a bne 0x72282 | goto label_1;
| }
0x0007237c ldrd r5, r6, [sp, 0x30] | __asm ("ldrd r5, r6, [arg_30h]");
0x00072380 mov r4, r8 | r4 = r8;
| label_155:
0x00072382 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00072384 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
| if (r1 != 0) {
0x00072386 cbz r1, 0x72394 |
0x00072388 add r0, sp, 0x7c | r0 += arg_7ch;
0x0007238a bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
0x0007238e cmp r0, 0 |
| if (r0 != 0) {
0x00072390 bne.w 0x7608c | goto label_163;
| }
| }
0x00072394 ldrb.w r2, [fp, 0xc8] | r2 = *(arg_c8h);
0x00072398 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007239a cmp r2, 1 |
0x0007239c ldrb.w r3, [r3, 0xa9] | r3 = *((r3 + 0xa9));
| if (r2 < 1) {
0x000723a0 bls.w 0x75eb8 | goto label_164;
| }
0x000723a4 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x000723a6 str.w r2, [fp, 0xec] | __asm ("str.w r2, [arg_ech]");
0x000723aa cmp r3, 0 |
| if (r3 != 0) {
0x000723ac bne.w 0x7601c | goto label_165;
| }
| label_98:
0x000723b0 movs r3, 0 | r3 = 0;
0x000723b2 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
| label_15:
0x000723b4 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x000723b6 ldr r0, [sp, 0x3c] | r0 = *(arg_3ch);
0x000723b8 bl 0x191b8 | fcn_000191b8 (r0, r1, r2);
| label_6:
0x000723bc add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x000723c0 ldr.w r3, [pc, 0x514] | r3 = *(0x000728d8);
0x000723c4 ldr.w r2, [pc, 0x514] |
0x000723c8 ldrh.w r1, [r6, r5, lsl 2] | offset_2 = r5 << 2;
| r1 = *((r6 + offset_2));
0x000723cc lsls r5, r5, 2 | r5 <<= 2;
0x000723ce add r3, pc | r3 += pc;
0x000723d0 add.w r4, r3, r4, lsl 1 | r4 = r3 + (r4 << 1);
0x000723d4 add r2, pc | r2 = 0xe4cb4;
0x000723d6 adds r5, 0xc | r5 += 0xc;
0x000723d8 add.w r3, r3, r1, lsl 1 | r3 += (r1 << 1);
0x000723dc ldrh.w r7, [r4, 0x388] | r7 = *((r4 + 0x388));
0x000723e0 adds r0, r6, r5 | r0 = r6 + r5;
0x000723e2 ldrsh.w r1, [r3, 0x6a4] | r1 = *((r3 + 0x6a4));
0x000723e6 str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x000723ea add r1, r7 | r1 += r7;
0x000723ec add.w r3, r2, r1, lsl 1 | r3 = r2 + (r1 << 1);
0x000723f0 ldrh.w r4, [r3, 0xf74] | r4 = *((r3 + 0xf74));
0x000723f4 strh r4, [r6, r5] | *((r6 + r5)) = r4;
0x000723f6 strh r7, [r0, 2] | *((r0 + 2)) = r7;
0x000723f8 b 0x71e4e | void (*0x71e4e)() ();
| label_146:
0x000723fa mov r3, r0 | r3 = r0;
0x000723fc adds r0, r2, r3 | r0 = r2 + r3;
0x000723fe ldrh.w r6, [r1, r0, lsl 1] | offset_3 = r0 << 1;
| r6 = *((r1 + offset_3));
0x00072402 cmp r6, r3 |
| if (r6 != r3) {
0x00072404 bne.w 0x71e7e | goto label_2;
| }
| label_145:
0x00072408 ldr.w r3, [pc, 0x4d4] |
0x0007240c add r3, pc | r3 = 0xe4cf0;
0x0007240e add.w r3, r3, r0, lsl 1 | r3 += (r0 << 1);
0x00072412 ldrh.w r4, [r3, 0xf74] | r4 = *((r3 + 0xf74));
0x00072416 movw r3, 0x4c9 | r3 = 0x4c9;
0x0007241a cmp r4, r3 |
| if (r4 > r3) {
0x0007241c bhi.w 0x71ec0 | goto label_3;
| }
| label_148:
0x00072420 movw r3, 0x4c6 | r3 = 0x4c6;
0x00072424 cmp r4, r3 |
| if (r4 >= r3) {
0x00072426 bls 0x72476 |
0x00072428 cmp.w r4, 0x4c8 |
| if (r4 == 0x4c8) {
0x0007242c beq 0x72512 | goto label_166;
| }
0x0007242e ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x00072430 add r5, sp, 0x70 | r5 += arg_70h;
0x00072432 add r2, sp, 0x78 | r2 += arg_78h;
0x00072434 ldr.w r4, [sl, 4] | r4 = *((sl + 4));
0x00072438 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x0007243c stm.w r5, {r0, r1} | *(r5) = r0;
| *((r5 + 4)) = r1;
0x00072440 stm.w r2, {r0, r1} | *(r2) = r0;
| *((r2 + 4)) = r1;
0x00072444 ldrb r3, [r0] | r3 = *(r0);
0x00072446 cmp r3, 0 |
| if (r3 != 0) {
0x00072448 bne 0x72506 | goto label_167;
| }
0x0007244a ldr.w r1, [pc, 0x498] |
0x0007244e mov r0, r4 | r0 = r4;
0x00072450 add r1, pc | r1 = 0xe4d3a;
0x00072452 bl 0x25778 | fcn_00025778 (r0);
| label_5:
0x00072456 mov r2, r5 | r2 = r5;
0x00072458 mov r1, sb | r1 = sb;
0x0007245a mov r0, r4 | r0 = r4;
0x0007245c str.w r4, [sl, 4] | __asm ("str.w r4, [sl, 4]");
0x00072460 bl 0x1945c | fcn_0001945c (r0, r1, r2);
0x00072464 b 0x724e8 | goto label_7;
| label_147:
0x00072466 ldr.w r3, [pc, 0x480] | r3 = *(0x000728e8);
0x0007246a add r3, pc | r3 += pc;
0x0007246c add.w r3, r3, r2, lsl 1 | r3 += (r2 << 1);
0x00072470 ldrh.w r4, [r3, 0xf74] | r4 = *((r3 + 0xf74));
0x00072474 b 0x71eb6 | goto label_4;
| }
0x00072476 ldr.w r2, [sl] | r2 = *(sl);
0x0007247a ldr.w r1, [sl, 0x4b8] | r1 = *((sl + 0x4b8));
0x0007247e ldrd r5, r0, [sp, 0x60] | __asm ("ldrd r5, r0, [arg_60h]");
0x00072482 add.w r3, r2, 0xc | r3 = r2 + 0xc;
0x00072486 cmp r3, r1 |
0x00072488 str.w r3, [sl] | __asm ("str.w r3, [sl]");
| if (r3 > r1) {
0x0007248c bhi.w 0x726dc | goto label_168;
| }
0x00072490 movw r3, 0x239 | r3 = 0x239;
0x00072494 strh.w sb, [r2, 0xe] | *((r2 + 0xe)) = sb;
0x00072498 cmp r4, r3 |
0x0007249a strd r5, r0, [r2, 0x10] | __asm ("strd r5, r0, [r2, 0x10]");
0x0007249e itt hi |
| if (r4 > r3) {
0x000724a0 addwhi r4, r4, 0x191 | __asm ("addwhi r4, r4, aav.0x000000ff");
| }
| if (r4 > r3) {
0x000724a4 uxth r4, r4 | r4 = (int16_t) r4;
| }
0x000724a6 strh r4, [r2, 0xc] | *((r2 + 0xc)) = r4;
0x000724a8 b 0x724e8 | goto label_7;
| label_149:
0x000724aa add.w r4, sl, 8 | r4 = sl + 8;
0x000724ae ldr.w r5, [sl, 4] | r5 = *((sl + 4));
0x000724b2 cmp r4, r6 |
| if (r4 >= r6) {
0x000724b4 bhs 0x724d8 | goto label_169;
| }
0x000724b6 mov r0, r5 | r0 = r5;
0x000724b8 mov r2, r6 | r2 = r6;
0x000724ba b 0x724c0 |
| while (r2 > r4) {
0x000724bc ldr.w r0, [sl, 4] | r0 = *((sl + 4));
0x000724c0 sub.w r3, r2, 0xc | r3 = r2 - 0xc;
0x000724c4 ldrh r1, [r2, 2] | r1 = *((r2 + 2));
0x000724c6 adds r2, 4 | r2 += 4;
0x000724c8 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x000724cc bl 0x1945c | fcn_0001945c (r0, r1, r2);
0x000724d0 ldr.w r2, [sl] | r2 = *(sl);
0x000724d4 cmp r2, r4 |
0x000724d6 bhi 0x724bc |
| }
| label_169:
0x000724d8 ldr.w r1, [pc, 0x410] | r1 = *(0x000728ec);
0x000724dc mov r0, r5 | r0 = r5;
0x000724de add r1, pc | r1 += pc;
0x000724e0 bl 0x25778 | fcn_00025778 (r0);
0x000724e4 str.w r5, [sl, 4] | __asm ("str.w r5, [sl, 4]");
| do {
| label_7:
0x000724e8 ldr.w r2, [pc, 0x404] | r2 = *(0x000728f0);
0x000724ec ldr r3, [pc, 0x3b8] | r3 = *(0x728a8);
0x000724ee add r2, pc | r2 += pc;
0x000724f0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000724f2 ldr r2, [r3] | r2 = *(0x728a8);
0x000724f4 ldr r3, [sp, 0xfc] | r3 = *(arg_fch);
0x000724f6 eors r2, r3 | r2 ^= r3;
0x000724f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000724fc bne.w 0x76838 | goto label_170;
| }
0x00072500 add sp, 0x104 |
0x00072502 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_167:
0x00072506 ldr r1, [pc, 0x3ec] |
0x00072508 mov r0, r4 | r0 = r4;
0x0007250a add r1, pc | r1 = 0xe4e04;
0x0007250c bl 0x25778 | fcn_00025778 (r0);
0x00072510 b 0x72456 | goto label_5;
| label_166:
0x00072512 ldr.w r3, [sl] | r3 = *(sl);
0x00072516 subs r3, 0xc | r3 -= 0xc;
0x00072518 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x0007251c b 0x724e8 |
| } while (1);
0x0007251e movs r3, 0 | r3 = 0;
0x00072520 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00072522 b 0x723bc | goto label_6;
0x00072524 movs r3, 0 | r3 = 0;
0x00072526 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00072528 b 0x723bc | goto label_6;
0x0007252a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007252c mov r0, fp | r0 = fp;
0x0007252e ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00072532 ldrh r1, [r6, -0xa] | r1 = *((r6 - 0xa));
0x00072536 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007253a str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x0007253e b 0x723bc | goto label_6;
0x00072540 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072542 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072546 b 0x723bc | goto label_6;
0x00072548 movs r3, 0 | r3 = 0;
0x0007254a str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x0007254c b 0x723bc | goto label_6;
0x0007254e movs r3, 1 | r3 = 1;
0x00072550 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072554 b 0x723bc | goto label_6;
0x00072556 ldrh r3, [r6, 2] | r3 = *((r6 + 2));
0x00072558 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x0007255a b 0x723bc | goto label_6;
0x0007255c adds r3, r6, 4 | r3 = r6 + 4;
0x0007255e ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00072562 stmdb r6, {r0, r1} | __asm ("stmdb r6, {r0, r1}");
0x00072566 b 0x723bc | goto label_6;
0x00072568 movs r3, 0 | r3 = 0;
0x0007256a strd r3, r3, [r6, 0x10] | __asm ("strd r3, r3, [r6, 0x10]");
0x0007256e b 0x723bc | goto label_6;
0x00072570 ldr.w r2, [fp, 0xf4] | r2 = *(arg_f4h);
0x00072574 ldrd r3, r1, [r6, 4] | __asm ("ldrd r3, r1, [r6, 4]");
0x00072578 cmp r2, 0 |
| if (r2 == 0) {
0x0007257a beq.w 0x756c8 | goto label_171;
| }
0x0007257e add r3, r1 | r3 += r1;
0x00072580 subs r3, r3, r2 | r3 -= r2;
0x00072582 str.w r3, [fp, 0xf8] | __asm ("str.w r3, [arg_f8h]");
0x00072586 b 0x723bc | goto label_6;
0x00072588 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007258a str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x0007258e b 0x723bc | goto label_6;
0x00072590 ldrh r3, [r6, -0xa] | r3 = *((r6 - 0xa));
0x00072594 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072598 movs r3, 0 | r3 = 0;
0x0007259a str r3, [r6, -0x4] | *((r6 - 0x4)) = r3;
0x0007259e b 0x723bc | goto label_6;
0x000725a0 adds r2, r6, 4 | r2 = r6 + 4;
0x000725a2 add.w r3, fp, 0x48 | r3 += arg_48h;
0x000725a6 ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x000725aa stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x000725ae b 0x723bc | goto label_6;
0x000725b0 movs r3, 2 | r3 = 2;
0x000725b2 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x000725b4 b 0x723bc | goto label_6;
0x000725b6 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x000725ba str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x000725be b 0x723bc | goto label_6;
0x000725c0 movs r3, 0xb | r3 = 0xb;
0x000725c2 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x000725c4 b 0x723bc | goto label_6;
0x000725c6 ldrh r7, [r6, -0xa] | r7 = *((r6 - 0xa));
0x000725ca cmp r7, 0xc |
| if (r7 == 0xc) {
0x000725cc beq.w 0x75536 | goto label_172;
| }
0x000725d0 ldr r2, [pc, 0x324] |
0x000725d2 add r2, pc | r2 = 0xe4ece;
| label_32:
0x000725d4 movs r3, 0 | r3 = 0;
0x000725d6 movs r1, 0x16 | r1 = 0x16;
0x000725d8 mov r0, fp | r0 = fp;
0x000725da str r3, [sp] | *(sp) = r3;
0x000725dc bl 0x25800 | r0 = fcn_00025800 (r0);
0x000725e0 cmp r0, 0 |
| if (r0 != 0) {
0x000725e2 bne.w 0x723bc | goto label_6;
| }
0x000725e6 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x000725ea cmp r0, 0 |
| if (r0 == 0) {
0x000725ec beq.w 0x75708 | goto label_173;
| }
| label_44:
0x000725f0 sub.w r3, r7, 0xc | r3 = r7 - 0xc;
0x000725f4 movs r2, 0 | r2 = 0;
0x000725f6 str r2, [sp] | *(sp) = r2;
0x000725f8 clz r3, r3 | r3 &= r3;
0x000725fc movs r2, 1 | r2 = 1;
0x000725fe lsrs r3, r3, 5 | r3 >>= 5;
0x00072600 mov r1, r2 | r1 = r2;
0x00072602 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00072604 invalid |
0x00072608 movs r3, 0 | r3 = 0;
0x0007260a str r3, [r6, 4] | *((r6 + 4)) = r3;
0x0007260c b 0x723bc | goto label_6;
0x0007260e ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072610 movs r3, 0 | r3 = 0;
0x00072612 ldrh r1, [r6, -0xa] | r1 = *((r6 - 0xa));
0x00072616 mov r0, fp | r0 = fp;
0x00072618 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007261c str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x00072620 b 0x723bc | goto label_6;
0x00072622 mov.w r3, -1 | r3 = -1;
0x00072626 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00072628 b 0x723bc | goto label_6;
0x0007262a ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x0007262c cmp r7, 0 |
| if (r7 == 0) {
0x0007262e beq.w 0x723bc | goto label_6;
| }
0x00072632 ldr.w r0, [fp] | r0 = *(fp);
0x00072636 cmp r0, 0 |
| if (r0 == 0) {
0x00072638 beq.w 0x753e2 | goto label_174;
| }
0x0007263c movs r2, 0xc | r2 = 0xc;
0x0007263e movs r3, 0 | r3 = 0;
0x00072640 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
| label_28:
0x00072644 cmp r0, 0 |
| if (r0 == 0) {
0x00072646 beq.w 0x75c86 | goto label_175;
| }
0x0007264a ldr.w r1, [fp, 0x108] | r1 = *(arg_108h);
0x0007264e ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x00072652 str r1, [r0] | *(r0) = r1;
0x00072654 ldr r1, [pc, 0x2a4] |
0x00072656 str.w r0, [fp, 0x108] | __asm ("str.w r0, [arg_108h]");
0x0007265a str r7, [r0, 4] | *((r0 + 4)) = r7;
0x0007265c add r1, pc | r1 = 0xe4f5c;
0x0007265e str r1, [r0, 8] | *((r0 + 8)) = r1;
0x00072660 cmp r2, 0 |
| if (r2 != 0) {
0x00072662 bne.w 0x723bc | goto label_6;
| }
0x00072666 ldr.w r3, [fp, 0x104] | r3 = *(arg_104h);
0x0007266a str r3, [r7, 8] | *((r7 + 8)) = r3;
0x0007266c str.w r7, [fp, 0x104] | __asm ("str.w r7, [arg_104h]");
0x00072670 b 0x723bc | goto label_6;
0x00072672 ldrh r3, [r6, -0xa] | r3 = *((r6 - 0xa));
0x00072676 strb r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x0007267a b 0x723bc | goto label_6;
0x0007267c ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007267e str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072682 b 0x723bc | goto label_6;
0x00072684 ldrh r3, [r6, 2] | r3 = *((r6 + 2));
0x00072686 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00072688 b 0x723bc | goto label_6;
0x0007268a movs r3, 5 | r3 = 5;
0x0007268c str r3, [r6, 4] | *((r6 + 4)) = r3;
0x0007268e b 0x723bc | goto label_6;
0x00072690 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072692 str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x00072696 b 0x723bc | goto label_6;
0x00072698 movs r3, 0 | r3 = 0;
0x0007269a str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x0007269c b 0x723bc | goto label_6;
0x0007269e movs r3, 0 | r3 = 0;
0x000726a0 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x000726a2 b 0x723bc | goto label_6;
0x000726a4 movs r3, 0 | r3 = 0;
0x000726a6 strd r3, r3, [r6, 0x10] | __asm ("strd r3, r3, [r6, 0x10]");
0x000726aa b 0x723bc | goto label_6;
0x000726ac movs r3, 0 | r3 = 0;
0x000726ae str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x000726b0 b 0x723bc | goto label_6;
0x000726b2 ldrh r3, [r6, 2] | r3 = *((r6 + 2));
0x000726b4 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x000726b6 movs r3, 0 | r3 = 0;
0x000726b8 str r3, [r6, 8] | *((r6 + 8)) = r3;
0x000726ba b 0x723bc | goto label_6;
0x000726bc adds r3, r6, 4 | r3 = r6 + 4;
0x000726be ldrh r1, [r6, 2] | r1 = *((r6 + 2));
0x000726c0 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x000726c2 mov r0, fp | r0 = fp;
0x000726c4 bl 0x1bffc | fcn_0001bffc (r0, r1, r2);
0x000726c8 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x000726ca b 0x723bc | goto label_6;
0x000726cc adds r3, r6, 4 | r3 = r6 + 4;
0x000726ce movs r1, 0x3b | r1 = 0x3b;
0x000726d0 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x000726d2 mov r0, fp | r0 = fp;
0x000726d4 bl 0x1bffc | fcn_0001bffc (r0, r1, r2);
0x000726d8 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x000726da b 0x723bc | goto label_6;
| label_168:
0x000726dc add.w r4, sl, 8 | r4 = sl + 8;
0x000726e0 ldr.w r5, [sl, 4] | r5 = *((sl + 4));
0x000726e4 cmp r2, r4 |
0x000726e6 str.w r2, [sl] | __asm ("str.w r2, [sl]");
| if (r2 < r4) {
0x000726ea bls 0x7270c | goto label_176;
| }
0x000726ec mov r0, r5 | r0 = r5;
0x000726ee b 0x726f4 |
| while (r2 > r4) {
0x000726f0 ldr.w r0, [sl, 4] | r0 = *((sl + 4));
0x000726f4 sub.w r3, r2, 0xc | r3 = r2 - 0xc;
0x000726f8 ldrh r1, [r2, 2] | r1 = *((r2 + 2));
0x000726fa str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x000726fe adds r2, 4 | r2 += 4;
0x00072700 bl 0x1945c | fcn_0001945c (r0, r1, r2);
0x00072704 ldr.w r2, [sl] | r2 = *(sl);
0x00072708 cmp r2, r4 |
0x0007270a bhi 0x726f0 |
| }
| label_176:
0x0007270c ldr r1, [pc, 0x1f0] |
0x0007270e mov r0, r5 | r0 = r5;
0x00072710 add r1, pc | r1 = 0xe5014;
0x00072712 bl 0x25778 | fcn_00025778 (r0);
0x00072716 str.w r5, [sl, 4] | __asm ("str.w r5, [sl, 4]");
0x0007271a b 0x724e8 | goto label_7;
0x0007271c ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007271e ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00072722 cmp r3, 0 |
| if (r3 == 0) {
0x00072724 beq.w 0x756f4 | goto label_177;
| }
0x00072728 str r1, [r3, 0x28] | *((r3 + 0x28)) = r1;
| label_43:
0x0007272a str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x0007272e b 0x723bc | goto label_6;
0x00072730 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072732 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072736 b 0x723bc | goto label_6;
0x00072738 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x0007273c sub.w r1, r6, 8 | r1 = r6 - 8;
0x00072740 ldr r3, [r6, -0x2c] | r3 = *((r6 - 0x2c));
0x00072744 mov r0, fp | r0 = fp;
0x00072746 str r2, [sp, 8] | *(arg_8h) = r2;
0x00072748 movs r2, 0 | r2 = 0;
0x0007274a strd r2, r2, [sp] | __asm ("strd r2, r2, [sp]");
0x0007274e adds r2, r6, 4 | r2 = r6 + 4;
0x00072750 bl 0x88f94 | fcn_00088f94 (r0, r1, r2, r3, r4, r5, r6);
0x00072754 b 0x723bc | goto label_6;
0x00072756 adds r2, r6, 4 | r2 = r6 + 4;
0x00072758 movs r1, 2 | r1 = 2;
0x0007275a mov r0, fp | r0 = fp;
0x0007275c bl 0x2e410 | fcn_0002e410 (r0, r1, r2);
0x00072760 b 0x723bc | goto label_6;
0x00072762 ldr.w r0, [fp] | r0 = *(fp);
0x00072766 cmp r0, 0 |
| if (r0 == 0) {
0x00072768 beq.w 0x75334 | goto label_178;
| }
0x0007276c movs r2, 0x64 | r2 = 0x64;
0x0007276e movs r3, 0 | r3 = 0;
0x00072770 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00072774 mov r7, r0 | r7 = r0;
| label_23:
0x00072776 cmp r7, 0 |
| if (r7 == 0) {
0x00072778 beq.w 0x75690 | goto label_179;
| }
0x0007277c movs r2, 0x64 | r2 = 0x64;
0x0007277e movs r1, 0 | r1 = 0;
0x00072780 mov r0, r7 | r0 = r7;
0x00072782 blx 0x8264 | fcn_00008264 ();
0x00072786 movs r3, 0xa5 | r3 = 0xa5;
0x00072788 strb r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
0x0007278a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007278c str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
| label_40:
0x0007278e str r7, [r6, 4] | *((r6 + 4)) = r7;
0x00072790 b 0x723bc | goto label_6;
0x00072792 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00072794 ldr.w r0, [fp] | r0 = *(fp);
0x00072798 bl 0x1afb0 | fcn_0001afb0 (r0, r1);
0x0007279c str r0, [r6, 4] | *((r6 + 4)) = r0;
0x0007279e b 0x723bc | goto label_6;
0x000727a0 movs r3, 9 | r3 = 9;
0x000727a2 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x000727a6 b 0x723bc | goto label_6;
0x000727a8 movs r3, 8 | r3 = 8;
0x000727aa str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x000727ae b 0x723bc | goto label_6;
0x000727b0 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000727b2 lsls r3, r3, 8 | r3 <<= 8;
0x000727b4 str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x000727b8 mov.w r3, 0xff00 | r3 = 0xff00;
0x000727bc str r3, [r6, -0x10] | *((r6 - 0x10)) = r3;
0x000727c0 b 0x723bc | goto label_6;
0x000727c2 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000727c4 str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x000727c8 movs r3, 0xff | r3 = 0xff;
0x000727ca str r3, [r6, -0x10] | *((r6 - 0x10)) = r3;
0x000727ce b 0x723bc | goto label_6;
0x000727d0 movs r3, 0 | r3 = 0;
0x000727d2 strd r3, r3, [r6, -0x14] | __asm ("strd r3, r3, [r6, -0x14]");
0x000727d6 b 0x723bc | goto label_6;
0x000727d8 movs r3, 0 | r3 = 0;
0x000727da strd r3, r3, [r6, -0x8] | __asm ("strd r3, r3, [r6, -0x8]");
0x000727de b 0x723bc | goto label_6;
0x000727e0 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x000727e4 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x000727e6 bic.w r3, r3, r2 | r3 = BIT_MASK (r3, r2);
0x000727ea ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x000727ec orrs r3, r2 | r3 |= r2;
0x000727ee str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x000727f2 b 0x723bc | goto label_6;
0x000727f4 movs r3, 0 | r3 = 0;
0x000727f6 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x000727f8 b 0x723bc | goto label_6;
0x000727fa movs r3, 1 | r3 = 1;
0x000727fc str r3, [r6, 4] | *((r6 + 4)) = r3;
0x000727fe b 0x723bc | goto label_6;
0x00072800 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00072804 adds r2, r6, 4 | r2 = r6 + 4;
0x00072806 mov r0, fp | r0 = fp;
0x00072808 bl 0x259b8 | fcn_000259b8 (r0, r1, r2);
0x0007280c b 0x723bc | goto label_6;
0x0007280e ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00072812 movs r2, 0 | r2 = 0;
0x00072814 mov r0, fp | r0 = fp;
0x00072816 bl 0x259b8 | fcn_000259b8 (r0, r1, r2);
0x0007281a b 0x723bc | goto label_6;
0x0007281c ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007281e str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x00072822 b 0x723bc | goto label_6;
0x00072824 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00072828 mov r0, fp | r0 = fp;
0x0007282a ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x0007282e ldr r1, [r6, -0x44] | r1 = *((r6 - 0x44));
0x00072832 str r2, [sp] | *(sp) = r2;
0x00072834 sub.w r2, r6, 0x20 | r2 = r6 - 0x20;
0x00072838 bl 0x2c1ac | fcn_0002c1ac (r0, r1, r2, r3, r4, r5);
0x0007283c ldr.w r3, [fp, 0xe4] | r3 = *(arg_e4h);
0x00072840 cmp r3, 0 |
| if (r3 == 0) {
0x00072842 beq.w 0x723bc | goto label_6;
| }
0x00072846 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00072848 cmp r3, 0 |
| if (r3 == 0) {
0x0007284a beq.w 0x723bc | goto label_6;
| }
0x0007284e ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072850 strb r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
0x00072852 b 0x723bc | goto label_6;
0x00072854 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00072858 mov r0, fp | r0 = fp;
0x0007285a ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x0007285e ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00072862 bl 0x1c2e8 | fcn_0001c2e8 (r0, r1, r2, r3);
0x00072866 b 0x723bc | goto label_6;
0x00072868 movs r3, 0 | r3 = 0;
0x0007286a movs r2, 1 | r2 = 1;
0x0007286c strd r3, r3, [sp, 0x10] | __asm ("strd r3, r3, [sp, 0x10]");
0x00072870 mov r1, r3 | r1 = r3;
0x00072872 strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [sp, 8]");
0x00072876 mov r0, fp | r0 = fp;
0x00072878 str r2, [sp, 0x18] | *(arg_18h) = r2;
0x0007287a ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0007287c str r2, [sp, 4] | *(arg_4h) = r2;
0x0007287e ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00072882 str r2, [sp] | *(sp) = r2;
0x00072884 mov r2, r3 | r2 = r3;
0x00072886 bl 0xa6b64 | fcn_000a6b64 (r0, r1, r2, r3, r4, r5, r6);
0x0007288a b 0x723bc | goto label_6;
0x0007288c movs r0, 0 | r0 = 0;
0x0007288e ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00072892 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072894 ldr r1, [r6, -0x20] | r1 = *((r6 - 0x20));
0x00072898 str r0, [sp] | *(sp) = r0;
0x0007289a mov r0, fp | r0 = fp;
0x0007289c bl 0xa78c0 | fcn_000a78c0 (r0, r1, r2, r3, r4, r5);
0x000728a0 b 0x723bc | goto label_6;
0x00072904 movs r3, 0 | r3 = 0;
0x00072906 str.w r3, [fp, 0x4c] | __asm ("str.w r3, [arg_4ch]");
0x0007290a b 0x723bc | goto label_6;
0x0007290c movs r3, 0 | r3 = 0;
0x0007290e str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072910 subs r4, 8 | r4 -= 8;
0x00072912 b 0x723bc | goto label_6;
0x00072914 ldrd r3, r2, [r6, 4] | __asm ("ldrd r3, r2, [r6, 4]");
0x00072918 add r3, r2 | r3 += r2;
0x0007291a ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x0007291e subs r3, r3, r2 | r3 -= r2;
0x00072920 str r3, [r6, -0x1c] | *((r6 - 0x1c)) = r3;
0x00072924 b 0x723bc | goto label_6;
0x00072926 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x0007292a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007292c subs r3, r3, r2 | r3 -= r2;
0x0007292e ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00072930 add r3, r2 | r3 += r2;
0x00072932 str r3, [r6, -0x4] | *((r6 - 0x4)) = r3;
0x00072936 b 0x723bc | goto label_6;
0x00072938 ldrd r3, r2, [r6, 4] | __asm ("ldrd r3, r2, [r6, 4]");
0x0007293c add r3, r2 | r3 += r2;
0x0007293e ldr r2, [r6, -0x38] | r2 = *((r6 - 0x38));
0x00072942 subs r3, r3, r2 | r3 -= r2;
0x00072944 str r3, [r6, -0x34] | *((r6 - 0x34)) = r3;
0x00072948 b 0x723bc | goto label_6;
0x0007294a ldr.w r3, [fp, 0xe4] | r3 = *(arg_e4h);
0x0007294e str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00072950 cmp r3, 0 |
| if (r3 == 0) {
0x00072952 beq.w 0x723bc | goto label_6;
| }
0x00072956 ldr.w r1, [fp] | r1 = *(fp);
0x0007295a ldrsh.w r2, [r3, 0x2a] | r2 = *((r3 + 0x2a));
0x0007295e ldr r3, [r1, 0x78] | r3 = *((r1 + 0x78));
0x00072960 str r1, [sp, 0x34] | *(arg_34h) = r1;
0x00072962 cmp r2, r3 |
| if (r2 >= r3) {
0x00072964 bge.w 0x75722 | goto label_180;
| }
0x00072968 ldr r3, [r6, -0x4] | r3 = *((r6 - 0x4));
0x0007296c ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0007296e ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00072970 add r2, r3 | r2 += r3;
0x00072972 movs r3, 0 | r3 = 0;
0x00072974 adds r2, 2 | r2 += 2;
0x00072976 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0007297a str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x0007297c cmp r0, 0 |
| if (r0 == 0) {
0x0007297e beq.w 0x723bc | goto label_6;
| }
0x00072982 ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00072986 cmp r3, 3 |
0x00072988 it ne |
| if (r3 != 3) {
0x0007298a cmpne r3, 1 | __asm ("cmpne r3, 1");
| }
| if (r3 > 3) {
0x0007298c bhi.w 0x75f6a | goto label_181;
| }
| label_70:
0x00072990 ldr.w r8, [sp, 0x2c] | r8 = *(arg_2ch);
0x00072994 movs r7, 0 | r7 = 0;
0x00072996 ldrd r1, r2, [r6, -0x8] | __asm ("ldrd r1, r2, [r6, -0x8]");
0x0007299a mov r0, r8 | r0 = r8;
0x0007299c blx 0x7dcc | fcn_00007dcc ();
0x000729a0 ldr r3, [r6, -0x4] | r3 = *((r6 - 0x4));
0x000729a4 mov r0, r8 | r0 = r8;
0x000729a6 strb.w r7, [r8, r3] | *((r8 + r3)) = r7;
0x000729aa bl 0x88f0 | fcn_000088f0 (r0);
0x000729ae ldrb.w r3, [r8] | r3 = *(r8);
0x000729b2 mov r2, r8 | r2 = r8;
0x000729b4 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x000729b6 cmp r3, 0 |
| if (r3 == 0) {
0x000729b8 beq.w 0x760d6 | goto label_182;
| }
0x000729bc ldr.w r1, [pc, 0xd10] |
0x000729c0 add r1, pc | r1 = 0xe6094;
| do {
0x000729c2 add r3, r1 | r3 += r1;
0x000729c4 ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x000729c8 add r7, r3 | r7 += r3;
0x000729ca ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x000729ce uxtb r7, r7 | r7 = (int8_t) r7;
0x000729d0 cmp r3, 0 |
0x000729d2 bne 0x729c2 |
| } while (r3 != 0);
| label_82:
0x000729d4 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000729d6 ldrsh.w r3, [r2, 0x2a] | r3 = *((r2 + 0x2a));
0x000729da ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000729dc cmp r3, 0 |
0x000729de str r3, [sp, 0x40] | *(arg_40h) = r3;
0x000729e0 str r2, [sp, 0x3c] | *(arg_3ch) = r2;
| if (r3 <= 0) {
0x000729e2 ble.w 0x75448 | goto label_183;
| }
0x000729e6 ldr.w r0, [pc, 0xcec] |
0x000729ea add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x000729ee strd r4, r5, [sp, 0x44] | __asm ("strd r4, r5, [sp, 0x44]");
0x000729f2 mov.w ip, 0 |
0x000729f6 add.w lr, r2, 0xf | lr = r2 + 0xf;
0x000729fa mov r4, r1 | r4 = r1;
0x000729fc add r0, pc | r0 = 0xe60d6;
0x000729fe mov r5, r2 | r5 = r2;
0x00072a00 b 0x72a0c |
| while (r3 != r7) {
0x00072a02 add.w ip, ip, 5 |
0x00072a06 cmp ip, r4 |
| if (ip == r4) {
0x00072a08 beq.w 0x75444 | goto label_184;
| }
0x00072a0c ldrb.w r3, [lr, ip, lsl 2] | offset_4 = ip << 2;
| r3 = *((lr + offset_4));
0x00072a10 cmp r3, r7 |
0x00072a12 bne 0x72a02 |
| }
0x00072a14 ldr.w r1, [r5, ip, lsl 2] | offset_5 = ip << 2;
| r1 = *((r5 + offset_5));
0x00072a18 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00072a1a ldr.w r8, [sp, 0x2c] | r8 = *(arg_2ch);
0x00072a1e subs r1, 1 | r1--;
0x00072a20 b 0x72a36 | void (*0x72a36)() ();
0x00072a46 ldr.w r1, [pc, 0xc90] |
0x00072a4a ldrd r4, r5, [sp, 0x44] | __asm ("ldrd r4, r5, [arg_44h]");
0x00072a4e mov r2, r7 | r2 = r7;
0x00072a50 add r1, pc | r1 = 0xe612e;
0x00072a52 bl 0x25778 | fcn_00025778 (r0);
0x00072a56 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00072a58 mov r1, r7 | r1 = r7;
0x00072a5a bl 0x159dc | fcn_000159dc (r0, r1);
0x00072a5c invalid |
0x00072a60 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00072a62 cmp r2, 5 |
| if (r2 == 5) {
0x00072a64 beq.w 0x75540 | goto label_185;
| }
| label_33:
0x00072a68 ldr.w r1, [pc, 0xc70] | r1 = *(0x000736dc);
0x00072a6c movs r3, 0 | r3 = 0;
0x00072a6e str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072a72 mov r0, fp | r0 = fp;
0x00072a74 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072a76 add r1, pc | r1 += pc;
0x00072a78 bl 0x25778 | fcn_00025778 (r0);
0x00072a7c b 0x723bc | goto label_6;
0x00072a7e ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072a80 mov r0, fp | r0 = fp;
0x00072a82 str r3, [sp] | *(sp) = r3;
0x00072a84 movs r3, 0 | r3 = 0;
0x00072a86 mov r1, r3 | r1 = r3;
0x00072a88 mov r2, r3 | r2 = r3;
0x00072a8a bl 0x710ec | fcn_000710ec (r0, r1, r2, r3, r4, r5);
0x00072a8e ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00072a90 cmp r1, 0 |
| if (r1 == 0) {
0x00072a92 beq.w 0x723bc | goto label_6;
| }
0x00072a96 ldr.w r0, [fp] | r0 = *(fp);
0x00072a9a movs r2, 1 | r2 = 1;
0x00072a9c bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x00072aa0 b 0x723bc | goto label_6;
0x00072aa2 movs r2, 0 | r2 = 0;
0x00072aa4 ldrb r3, [r6, 4] | r3 = *((r6 + 4));
0x00072aa6 sub.w r1, r6, 0x14 | r1 = r6 - 0x14;
0x00072aaa str r2, [sp] | *(sp) = r2;
0x00072aac mov r0, fp | r0 = fp;
0x00072aae sub.w r2, r6, 8 | r2 = r6 - 8;
0x00072ab2 bl 0x710ec | fcn_000710ec (r0, r1, r2, r3, r4, r5);
0x00072ab6 b 0x723bc | goto label_6;
0x00072ab8 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072aba mov r0, fp | r0 = fp;
0x00072abc ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00072ac0 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00072ac4 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00072ac8 b 0x723bc | goto label_6;
0x00072aca ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00072ace ldr.w r0, [fp] | r0 = *(fp);
0x00072ad2 bl 0x1afb0 | fcn_0001afb0 (r0, r1);
0x00072ad6 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072ad8 mov r1, r0 | r1 = r0;
0x00072ada str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00072ade mov r0, fp | r0 = fp;
0x00072ae0 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00072ae4 str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00072ae8 b 0x723bc | goto label_6;
0x00072aea ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00072aee mov r0, fp | r0 = fp;
0x00072af0 ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x00072af4 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00072af8 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072afa mov r1, r0 | r1 = r0;
0x00072afc str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00072b00 mov r0, fp | r0 = fp;
0x00072b02 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00072b06 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00072b0a b 0x723bc | goto label_6;
0x00072b0c ldrd r2, r3, [r6, -0x8] | __asm ("ldrd r2, r3, [r6, -0x8]");
0x00072b10 mov r0, fp | r0 = fp;
0x00072b12 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00072b14 add r3, r2 | r3 += r2;
0x00072b16 bl 0x321e4 | fcn_000321e4 (r0, r1, r2, r3, r4, r5);
0x00072b1a b 0x723bc | goto label_6;
0x00072b1c ldrh r3, [r6, -0xa] | r3 = *((r6 - 0xa));
0x00072b20 mov r0, fp | r0 = fp;
0x00072b22 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072b24 cmp r3, 0x6a |
0x00072b26 mov.w r3, 0 | r3 = 0;
0x00072b2a ite eq |
| if (r3 != 0x6a) {
0x00072b2c moveq r1, 0xad | r1 = 0xad;
| }
| if (r3 == 0x6a) {
0x00072b2e movne r1, 0xac | r1 = 0xac;
| }
0x00072b30 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00072b34 str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x00072b38 b 0x723bc | goto label_6;
0x00072b3a ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00072b3e mov r0, fp | r0 = fp;
0x00072b40 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072b42 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00072b46 str r1, [sp] | *(sp) = r1;
0x00072b48 movs r1, 0 | r1 = 0;
0x00072b4a bl 0xa78c0 | fcn_000a78c0 (r0, r1, r2, r3, r4, r5);
0x00072b4e b 0x723bc | goto label_6;
0x00072b50 ldr.w r3, [fp, 0xe4] | r3 = *(arg_e4h);
0x00072b54 cmp r3, 0 |
| if (r3 == 0) {
0x00072b56 beq.w 0x723bc | goto label_6;
| }
0x00072b5a ldrsh.w r2, [r3, 0x2a] | r2 = *((r3 + 0x2a));
0x00072b5e cmp r2, 0 |
| if (r2 <= 0) {
0x00072b60 ble.w 0x723bc | goto label_6;
| }
0x00072b64 mvn r1, 0x13 | r1 = ~0x13;
0x00072b68 movs r0, 0x14 | r0 = 0x14;
0x00072b6a smlabb r0, r2, r0, r1 | __asm ("smlabb r0, r2, r0, r1");
0x00072b6e ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00072b70 add r1, r0 | r1 += r0;
0x00072b72 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00072b74 strb r0, [r1, 0xc] | *((r1 + 0xc)) = r0;
0x00072b76 ldrh r0, [r1, 0x10] | r0 = *((r1 + 0x10));
0x00072b78 ldr r1, [r3, 0x24] | r1 = *((r3 + 0x24));
0x00072b7a orr r1, r1, 0x800 | r1 |= 0x800;
0x00072b7e str r1, [r3, 0x24] | *((r3 + 0x24)) = r1;
0x00072b80 lsls r1, r0, 0x1c | r1 = r0 << 0x1c;
| if (r1 >= r0) {
0x00072b82 bpl.w 0x723bc | goto label_6;
| }
0x00072b86 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00072b88 cmp r3, 0 |
| if (r3 == 0) {
0x00072b8a beq.w 0x723bc | goto label_6;
| }
0x00072b8e subs r2, 1 | r2--;
0x00072b90 sxth r2, r2 | __asm ("sxth r2, r2");
| do {
0x00072b92 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00072b94 ldrsh.w r1, [r1] | r1 = *(r1);
0x00072b98 cmp r1, r2 |
0x00072b9a ittt eq |
| if (r1 != r2) {
0x00072b9c ldrbeq r1, [r3, 0x37] | r1 = *((r3 + 0x37));
| }
| if (r1 != r2) {
0x00072ba0 orreq r1, r1, 8 | r1 |= 8;
| }
| if (r1 == r2) {
0x00072ba4 strb.w r1, [r3, 0x37] | *((r3 + 0x37)) = r1;
| }
0x00072ba8 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00072baa cmp r3, 0 |
0x00072bac bne 0x72b92 |
| } while (r3 != 0);
0x00072bae b 0x723bc | goto label_6;
0x00072bb0 movs r3, 4 | r3 = 4;
0x00072bb2 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00072bb4 b 0x723bc | goto label_6;
0x00072bb6 movs r3, 0 | r3 = 0;
0x00072bb8 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072bbc b.w 0x723bc | goto label_6;
0x00072bc0 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072bc2 movs r3, 0 | r3 = 0;
0x00072bc4 movs r1, 0x93 | r1 = 0x93;
0x00072bc6 mov r0, fp | r0 = fp;
0x00072bc8 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00072bcc str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x00072bd0 b.w 0x723bc | goto label_6;
0x00072bd4 movs r3, 1 | r3 = 1;
0x00072bd6 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072bda b.w 0x723bc | goto label_6;
0x00072bde movs r3, 1 | r3 = 1;
0x00072be0 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00072be2 b.w 0x723bc | goto label_6;
0x00072be6 movs r3, 0 | r3 = 0;
0x00072be8 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00072bea b.w 0x723bc | goto label_6;
0x00072bee ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00072bf2 ldr.w r0, [fp] | r0 = *(fp);
0x00072bf6 bl 0x1afb0 | fcn_0001afb0 (r0, r1);
0x00072bfa str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00072bfe cmp r0, 0 |
| if (r0 == 0) {
0x00072c00 beq.w 0x723bc | goto label_6;
| }
0x00072c04 ldr r7, [r6, -0x8] | r7 = *((r6 - 0x8));
0x00072c08 ldr r2, [r0] | r2 = *(r0);
0x00072c0a ldr.w ip, [r6, 4] | ip = *((r6 + 4));
0x00072c0e adds r3, r7, 1 | r3 = r7 + 1;
0x00072c10 ite eq |
| if (r3 != r7) {
0x00072c12 moveq r3, 0 | r3 = 0;
| }
| if (r3 != r7) {
0x00072c14 uxtbne r3, r7 | __asm ("uxtbne r3, r7");
| }
0x00072c16 add.w r1, r2, -1 | r1 = r2 + -1;
0x00072c1a lsl.w r2, r2, 4 | r2 <<= 4;
0x00072c1e it eq |
| if (r3 != r7) {
0x00072c20 moveq r7, r3 | r7 = r3;
| }
0x00072c22 cmp.w ip, -1 |
0x00072c26 strb r3, [r0, r2] | *((r0 + r2)) = r3;
| if (ip == -1) {
0x00072c28 beq.w 0x723bc | goto label_6;
| }
0x00072c2c adds r1, 1 | r1++;
0x00072c2e cmp ip, r7 |
0x00072c30 add.w r1, r0, r1, lsl 4 | r1 = r0 + (r1 << 4);
0x00072c34 ldrb.w lr, [r1, 1] |
0x00072c38 orr lr, lr, 0x20 | lr |= 0x20;
0x00072c3c strb.w lr, [r1, 1] |
| if (ip == r7) {
0x00072c40 beq.w 0x723bc | goto label_6;
| }
0x00072c44 orr r3, r3, 2 | r3 |= 2;
0x00072c48 strb r3, [r0, r2] | *((r0 + r2)) = r3;
0x00072c4a b.w 0x723bc | goto label_6;
0x00072c4e ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00072c52 mov r0, fp | r0 = fp;
0x00072c54 ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x00072c58 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00072c5c str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00072c60 cmp r0, 0 |
| if (r0 == 0) {
0x00072c62 beq.w 0x723bc | goto label_6;
| }
0x00072c66 ldr r7, [r6, -0x8] | r7 = *((r6 - 0x8));
0x00072c6a ldr r2, [r0] | r2 = *(r0);
0x00072c6c ldr.w ip, [r6, 4] | ip = *((r6 + 4));
0x00072c70 adds r3, r7, 1 | r3 = r7 + 1;
0x00072c72 ite eq |
| if (r3 != r7) {
0x00072c74 moveq r3, 0 | r3 = 0;
| }
| if (r3 != r7) {
0x00072c76 uxtbne r3, r7 | __asm ("uxtbne r3, r7");
| }
0x00072c78 add.w r1, r2, -1 | r1 = r2 + -1;
0x00072c7c lsl.w r2, r2, 4 | r2 <<= 4;
0x00072c80 it eq |
| if (r3 != r7) {
0x00072c82 moveq r7, r3 | r7 = r3;
| }
0x00072c84 cmp.w ip, -1 |
0x00072c88 strb r3, [r0, r2] | *((r0 + r2)) = r3;
| if (ip == -1) {
0x00072c8a beq.w 0x723bc | goto label_6;
| }
0x00072c8e adds r1, 1 | r1++;
0x00072c90 cmp ip, r7 |
0x00072c92 add.w r1, r0, r1, lsl 4 | r1 = r0 + (r1 << 4);
0x00072c94 asrs r1, r0, 4 | r1 = r0 >> 4;
0x00072c96 ldrb.w lr, [r1, 1] |
0x00072c9a orr lr, lr, 0x20 | lr |= 0x20;
0x00072c9e strb.w lr, [r1, 1] |
| if (ip == r7) {
0x00072ca2 beq.w 0x723bc | goto label_6;
| }
0x00072ca6 orr r3, r3, 2 | r3 |= 2;
0x00072caa strb r3, [r0, r2] | *((r0 + r2)) = r3;
0x00072cac b.w 0x723bc | goto label_6;
0x00072cb0 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072cb2 mov r0, fp | r0 = fp;
0x00072cb4 ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x00072cb8 ldr r1, [r6, -0x44] | r1 = *((r6 - 0x44));
0x00072cbc bl 0x32034 | fcn_00032034 (r0, r1, r2, r3, r4);
0x00072cc0 str r0, [r6, -0x44] | *((r6 - 0x44)) = r0;
0x00072cc4 b.w 0x723bc | goto label_6;
0x00072cc8 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072cca mov r0, fp | r0 = fp;
0x00072ccc ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x00072cd0 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00072cd4 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00072cd8 cmp r0, 0 |
| if (r0 == 0) {
0x00072cda beq.w 0x723bc | goto label_6;
| }
0x00072cde mov r1, r0 | r1 = r0;
0x00072ce0 movs r3, 1 | r3 = 1;
0x00072ce2 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00072ce6 mov r0, fp | r0 = fp;
0x00072ce8 bl 0x1bf88 | fcn_0001bf88 (r0, r1, r2, r3, r4);
0x00072cec b.w 0x723bc | goto label_6;
0x00072cf0 ldr r1, [r6, -0x38] | r1 = *((r6 - 0x38));
0x00072cf4 sub.w r2, r6, 0x2c | r2 = r6 - 0x2c;
0x00072cf8 mov r0, fp | r0 = fp;
0x00072cfa bl 0x1bcf4 | fcn_0001bcf4 (r0, r1, r2);
0x00072cfe ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
| if (r3 != 0) {
0x00072d02 cbz r3, 0x72d12 |
0x00072d04 ldr.w r2, [fp] | r2 = *(fp);
0x00072d08 ldr r3, [r3] | r3 = *(r3);
0x00072d0a ldr r2, [r2, 0x78] | r2 = *((r2 + 0x78));
0x00072d0c cmp r2, r3 |
| if (r2 < r3) {
0x00072d0e blt.w 0x75906 | goto label_186;
| }
| }
| label_53:
0x00072d12 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00072d16 ldr r1, [r6, -0x38] | r1 = *((r6 - 0x38));
| if (r2 != 0) {
0x00072d1a cbz r2, 0x72d24 |
0x00072d1c mov r0, fp | r0 = fp;
0x00072d1e bl 0x25c44 | r0 = fcn_00025c44 (r0, r1, r2);
0x00072d22 mov r1, r0 | r1 = r0;
| }
0x00072d24 movs r0, 0 | r0 = 0;
0x00072d26 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072d28 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00072d2c str r1, [r6, -0x38] | *((r6 - 0x38)) = r1;
0x00072d30 str r0, [sp, 4] | *(arg_4h) = r0;
0x00072d32 ldr r0, [r6, -0x44] | r0 = *((r6 - 0x44));
0x00072d36 str r0, [sp] | *(sp) = r0;
0x00072d38 mov r0, fp | r0 = fp;
0x00072d3a bl 0x8a004 | fcn_0008a004 (r0, r1, r2, r3, r4, r5, r6);
0x00072d3e b.w 0x723bc | goto label_6;
0x00072d42 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00072d44 mov r0, fp | r0 = fp;
0x00072d46 bl 0x26118 | fcn_00026118 (r0, r1);
0x00072d48 invalid |
0x00072d4c subs r4, 0x14 | r4 -= 0x14;
0x00072d4e str r3, [r6, -0x20] | *((r6 - 0x20)) = r3;
0x00072d52 b.w 0x723bc | goto label_6;
0x00072d56 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00072d58 mov r0, fp | r0 = fp;
0x00072d5a bl 0x26118 | fcn_00026118 (r0, r1);
0x00072d5e movs r3, 0 | r3 = 0;
0x00072d60 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00072d64 b.w 0x723bc | goto label_6;
0x00072d68 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00072d6c sub.w r2, r6, 8 | r2 = r6 - 8;
0x00072d70 mov r0, fp | r0 = fp;
0x00072d72 bl 0x1bcf4 | fcn_0001bcf4 (r0, r1, r2);
0x00072d76 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072d78 mov r0, fp | r0 = fp;
0x00072d7a ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00072d7e bl 0x8f8ac | fcn_0008f8ac (r0, r1, r2, r3);
0x00072d82 b.w 0x723bc | goto label_6;
0x00072d86 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00072d8a movs r1, 0x93 | r1 = 0x93;
0x00072d8c ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00072d8e mov r0, fp | r0 = fp;
0x00072d90 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00072d94 str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00072d98 b.w 0x723bc | goto label_6;
0x00072d9c ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00072d9e movs r1, 0x93 | r1 = 0x93;
0x00072da0 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00072da4 mov r0, fp | r0 = fp;
0x00072da6 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00072daa str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00072dae b.w 0x723bc | goto label_6;
0x00072db2 ldrsh.w r1, [fp, 0xc4] | r1 = *(arg_c4h);
0x00072db6 movs r2, 0 | r2 = 0;
0x00072db8 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00072dbc ldr.w r7, [fp] | r7 = *(fp);
0x00072dc0 cmp r1, r2 |
0x00072dc2 ldr.w r8, [r6, 4] | r8 = *((r6 + 4));
0x00072dc6 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00072dc8 ldr r0, [r6, -0x38] | r0 = *((r6 - 0x38));
0x00072dcc ldr r3, [r6, -0x50] | r3 = *((r6 - 0x50));
0x00072dd0 str r2, [sp, 0x6c] | *(arg_6ch) = r2;
0x00072dd2 str r7, [sp, 0x2c] | *(arg_2ch) = r7;
| if (r1 > r2) {
0x00072dd4 bgt.w 0x753a2 | goto label_187;
| }
0x00072dd8 strd r2, r0, [sp, 4] | __asm ("strd r2, r0, [sp, 4]");
0x00072ddc movs r0, 1 | r0 = 1;
0x00072dde sub.w r1, r6, 0x2c | r1 = r6 - 0x2c;
0x00072de2 sub.w r2, r6, 0x20 | r2 = r6 - 0x20;
0x00072de6 str r0, [sp] | *(sp) = r0;
0x00072de8 mov r0, fp | r0 = fp;
0x00072dea strd r1, r2, [sp, 0x34] | __asm ("strd r1, r2, [sp, 0x34]");
0x00072dee bl 0x88f94 | fcn_00088f94 (r0, r1, r2, r3, r4, r5, r6);
0x00072df2 ldr.w r3, [fp, 0xe4] | r3 = *(arg_e4h);
0x00072df6 mov r0, r3 | r0 = r3;
0x00072df8 cmp r3, 0 |
| if (r3 == 0) {
0x00072dfa beq.w 0x72f4c | goto label_24;
| }
0x00072dfe ldr.w r7, [fp, 0x24] | r7 = *(arg_24h);
0x00072e02 cmp r7, 0 |
| if (r7 != 0) {
0x00072e04 bne.w 0x72f4c | goto label_24;
| }
0x00072e08 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x00072e0a ldrd r1, r2, [sp, 0x34] | __asm ("ldrd r1, r2, [arg_34h]");
0x00072e0e str r0, [sp, 0x34] | *(arg_34h) = r0;
0x00072e10 orr r3, r3, 0x200 | r3 |= 0x200;
0x00072e14 str r3, [r0, 0x24] | *((r0 + 0x24)) = r3;
0x00072e16 add r3, sp, 0x6c | r3 += arg_6ch;
0x00072e18 mov r0, fp | r0 = fp;
0x00072e1a bl 0x25870 | fcn_00025870 (r0, r1, r2, r3);
0x00072e1e ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00072e20 ldr r1, [r0, 0x48] | r1 = *((r0 + 0x48));
0x00072e22 cmp r1, 0 |
| if (r1 == 0) {
0x00072e24 beq.w 0x7671a | goto label_188;
| }
0x00072e28 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00072e2a ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x00072e2c ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00072e2e cmp r1, r3 |
| if (r1 == r3) {
0x00072e30 beq.w 0x7664e | goto label_189;
| }
0x00072e34 subs r0, 4 | r0 -= 4;
0x00072e36 movs r2, 0x10 | r2 = 0x10;
0x00072e38 mov ip, r4 |
| do {
0x00072e3a mov r3, r2 | r3 = r2;
0x00072e3c adds r2, 0x10 | r2 += 0x10;
0x00072e3e ldr r4, [r0, r2] | r4 = *((r0 + r2));
0x00072e40 adds r7, 1 | r7++;
0x00072e42 cmp r1, r4 |
0x00072e44 bne 0x72e3a |
| } while (r1 != r4);
0x00072e46 mov r4, ip | r4 = ip;
| label_107:
0x00072e48 ldr.w r2, [fp] | r2 = *(fp);
0x00072e4c sub.w r7, r7, 1 | r7--;
0x00072e50 ldr.w r1, [pc, 0x88c] |
0x00072e54 clz r7, r7 | r7 &= r7;
0x00072e58 ldr.w lr, [pc, 0x888] |
0x00072e5c lsrs r7, r7, 5 | r7 >>= 5;
0x00072e5e ldr r0, [r2, 0x10] | r0 = *((r2 + 0x10));
0x00072e60 add r1, pc | r1 = 0xe6544;
0x00072e62 ldr.w r2, [pc, 0x884] | r2 = *(0x000736e8);
0x00072e66 add lr, pc | lr += pc;
0x00072e68 str.w fp, [sp, 0x78] | __asm ("str.w fp, [arg_78h]");
0x00072e6c add.w ip, r0, r3 |
0x00072e70 ldr r3, [r0, r3] | r3 = *((r0 + r3));
0x00072e72 add r2, pc | r2 += pc;
0x00072e74 str r3, [sp, 0xa0] | *(arg_a0h) = r3;
0x00072e76 ldr.w r3, [ip, 0xc] | r3 = *((ip + 0xc));
0x00072e7a str r1, [sp, 0xa4] | *(arg_a4h) = r1;
0x00072e7c ldr r1, [sp, 0x6c] | r1 = *(arg_6ch);
0x00072e7e str r3, [sp, 0x98] | *(arg_98h) = r3;
0x00072e80 ldr.w r3, [pc, 0x868] | r3 = *(0x000736ec);
0x00072e84 str r1, [sp, 0xa8] | *(arg_a8h) = r1;
0x00072e86 strb.w r7, [sp, 0x9c] | *(arg_9ch) = r7;
0x00072e8a add r3, pc | r3 += pc;
0x00072e8c str r2, [sp, 0x80] | *(arg_80h) = r2;
0x00072e8e str r3, [sp, 0x88] | *(arg_88h) = r3;
0x00072e90 movs r3, 0 | r3 = 0;
0x00072e92 str r3, [sp, 0x8c] | *(arg_8ch) = r3;
0x00072e94 strh.w r3, [sp, 0x90] | *(arg_90h) = r3;
0x00072e98 add r3, sp, 0x78 | r3 += arg_78h;
0x00072e9a str.w lr, [sp, 0x84] | __asm ("str.w lr, [arg_84h]");
0x00072e9e str.w fp, [sp, 0x7c] | __asm ("str.w fp, [arg_7ch]");
0x00072ea2 str r3, [sp, 0x94] | *(arg_94h) = r3;
0x00072ea4 cmp.w r8, 0 |
| if (r8 != 0) {
0x00072ea8 beq 0x72eb6 |
0x00072eaa mov r1, r8 | r1 = r8;
0x00072eac add r0, sp, 0x7c | r0 += arg_7ch;
0x00072eae bl 0x30ca4 | r0 = fcn_00030ca4 (r0, r1, r2, r3, r4);
0x00072eb2 cmp r0, 0 |
| if (r0 != 0) {
0x00072eb4 bne 0x72f52 | goto label_93;
| }
| }
0x00072eb6 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00072eba orr r3, r3, 0x200000 | r3 |= 0x200000;
0x00072ebe str.w r3, [r8, 4] | __asm ("str.w r3, [r8, 4]");
0x00072ec2 ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00072ec6 cmp r3, 1 |
| if (r3 < 1) {
0x00072ec8 bls.w 0x764e6 | goto label_190;
| }
0x00072ecc ldr r7, [sp, 0x34] | r7 = *(arg_34h);
0x00072ece movs r2, 1 | r2 = 1;
0x00072ed0 str.w r8, [r7, 0xc] | __asm ("str.w r8, [r7, 0xc]");
0x00072ed4 ldrd r8, r1, [sp, 0x2c] | __asm ("ldrd r8, r1, [arg_2ch]");
0x00072ed8 mov r0, r8 | r0 = r8;
0x00072eda bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x00072ede str r0, [r7, 0x18] | *((r7 + 0x18)) = r0;
0x00072ee0 ldrb.w r3, [r8, 0x53] | r3 = *((r8 + 0x53));
0x00072ee4 mov r8, r3 | r8 = r3;
0x00072ee6 cmp r3, 0 |
| if (r3 != 0) {
0x00072ee8 bne 0x72f5c | goto label_191;
| }
| label_92:
0x00072eea add.w r3, fp, 0xbc | r3 += arg_bch;
0x00072eee add r2, sp, 0x70 | r2 += arg_70h;
0x00072ef0 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00072ef4 stm.w r2, {r0, r1} | *(r2) = r0;
| *((r2 + 4)) = r1;
0x00072ef8 mov r3, r0 | r3 = r0;
0x00072efa ldrb r1, [r0] | r1 = *(r0);
0x00072efc ldr ip, [r6, -0x5c] | ip = *((r6 - 0x5c));
0x00072f00 ldr.w r0, [pc, 0x7ec] | r0 = *(0x000736f0);
0x00072f04 cmp r1, 0x3b |
0x00072f06 it ne |
| if (r1 == 0x3b) {
0x00072f08 ldrne r1, [sp, 0x74] | r1 = *(arg_74h);
| }
0x00072f0a add r0, pc | r0 += pc;
0x00072f0c it ne |
| if (r1 == 0x3b) {
0x00072f0e addne r3, r3, r1 | r3 += r1;
| }
0x00072f10 sub.w r1, r3, ip | r1 = r3 - ip;
0x00072f14 subs r7, r1, 1 | r7 = r1 - 1;
0x00072f16 ldrb.w r3, [ip, r7] | r3 = *((ip + r7));
0x00072f1a add r7, ip | r7 += ip;
0x00072f1c add r3, r0 | r3 += r0;
0x00072f1e ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00072f22 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 >= r3) {
0x00072f24 bpl 0x72f3a | goto label_192;
| }
0x00072f26 subs r1, 2 | r1 -= 2;
0x00072f28 add r1, ip | r1 += ip;
| do {
0x00072f2a mov r7, r1 | r7 = r1;
0x00072f2c subs r1, 1 | r1--;
0x00072f2e ldrb r3, [r7] | r3 = *(r7);
0x00072f30 add r3, r0 | r3 += r0;
0x00072f32 ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00072f36 lsls r3, r3, 0x1f | r3 <<= 0x1f;
0x00072f38 bmi 0x72f2a |
| } while (r3 < r3);
| label_192:
0x00072f3a movs r3, 0 | r3 = 0;
0x00072f3c movs r1, 1 | r1 = 1;
0x00072f3e str r1, [sp, 0x74] | *(arg_74h) = r1;
0x00072f40 mov r0, fp | r0 = fp;
0x00072f42 mov r1, r3 | r1 = r3;
0x00072f44 str r3, [sp] | *(sp) = r3;
0x00072f46 str r7, [sp, 0x70] | *(arg_70h) = r7;
0x00072f48 bl 0x710ec | fcn_000710ec (r0, r1, r2, r3, r4, r5);
| label_24:
0x00072f4c cmp.w r8, 0 |
| if (r8 != 0) {
0x00072f50 beq 0x72f5c |
| label_93:
0x00072f52 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00072f54 mov r1, r8 | r1 = r8;
0x00072f56 movs r2, 1 | r2 = 1;
0x00072f58 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
| }
| label_191:
0x00072f5c ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00072f60 cmp r3, 1 |
0x00072f62 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
| if (r3 < 1) {
0x00072f64 bls.w 0x753d8 | goto label_193;
| }
0x00072f68 cmp r3, 0 |
| if (r3 == 0) {
0x00072f6a beq.w 0x723bc | goto label_6;
| }
0x00072f6e mov r1, r3 | r1 = r3;
0x00072f70 mov r0, fp | r0 = fp;
0x00072f72 bl 0x30bd8 | fcn_00030bd8 (r0, r1, r2, r3);
| label_27:
0x00072f76 ldrd r0, r1, [sp, 0x2c] | __asm ("ldrd r0, r1, [arg_2ch]");
0x00072f7a bl 0x18c5c | fcn_00018c5c (r0, r1);
0x00072f7e b.w 0x723bc | goto label_6;
0x00072f82 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00072f86 movs r2, 0 | r2 = 0;
0x00072f88 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00072f8a mov r0, fp | r0 = fp;
0x00072f8c bl 0xa6484 | fcn_000a6484 (r0, r1, r2, r3, r4, r5, r6);
0x00072f90 b.w 0x723bc | goto label_6;
0x00072f94 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00072f98 str r3, [r6, -0x20] | *((r6 - 0x20)) = r3;
0x00072f9c b.w 0x723bc | goto label_6;
0x00072fa0 movs r2, 0 | r2 = 0;
0x00072fa2 movs r3, 1 | r3 = 1;
0x00072fa4 strd r2, r3, [r6, -0x8] | __asm ("strd r2, r3, [r6, -0x8]");
0x00072fa8 b.w 0x723bc | goto label_6;
0x00072fac ldrb.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x00072fb0 movs r2, 0 | r2 = 0;
0x00072fb2 adds r3, 1 | r3++;
0x00072fb4 strb.w r3, [fp, 0x18] | *(arg_18h) = r3;
0x00072fb8 ldr.w r3, [fp] | r3 = *(fp);
0x00072fbc strh.w r2, [r3, 0x11c] | *((r3 + 0x11c)) = r2;
0x00072fc0 ldr.w r2, [r3, 0x118] | r2 = *((r3 + 0x118));
0x00072fc4 adds r2, 1 | r2++;
0x00072fc6 str.w r2, [r3, 0x118] | __asm ("str.w r2, aav.0x000000ff");
0x00072fca b.w 0x723bc | goto label_6;
0x00072fce sub.w r3, r6, 8 | r3 = r6 - 8;
0x00072fd2 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00072fd6 sub.w r1, r6, 0x20 | r1 = r6 - 0x20;
0x00072fda mov r0, fp | r0 = fp;
0x00072fdc bl 0x25ed8 | fcn_00025ed8 (r0, r1, r2, r3);
0x00072fe0 str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00072fe4 b.w 0x723bc | goto label_6;
0x00072fe8 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00072fec str r3, [r6, -0x2c] | *((r6 - 0x2c)) = r3;
0x00072ff0 b.w 0x723bc | goto label_6;
0x00072ff4 ldr.w r0, [fp] | r0 = *(fp);
0x00072ff8 cmp r0, 0 |
| if (r0 == 0) {
0x00072ffa beq.w 0x752f6 | goto label_194;
| }
0x00072ffe movs r2, 0x64 | r2 = 0x64;
0x00073000 movs r3, 0 | r3 = 0;
0x00073002 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00073006 mov r7, r0 | r7 = r0;
| label_19:
0x00073008 cmp r7, 0 |
| if (r7 == 0) {
0x0007300a beq.w 0x75304 | goto label_195;
| }
0x0007300e movs r1, 0 | r1 = 0;
0x00073010 movs r2, 0x64 | r2 = 0x64;
0x00073012 mov r0, r7 | r0 = r7;
0x00073014 blx 0x8264 | fcn_00008264 ();
0x00073018 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0007301a str r7, [r6, -0x8] | *((r6 - 0x8)) = r7;
0x0007301e mov r3, r1 | r3 = r1;
| if (r1 != 0) {
0x00073020 cbz r1, 0x73052 |
0x00073022 ldr.w r8, [r6, 8] | r8 = *((r6 + 8));
0x00073026 movs r3, 0 | r3 = 0;
0x00073028 ldr.w r0, [fp] | r0 = *(fp);
0x0007302c str r1, [sp, 0x30] | *(arg_30h) = r1;
0x0007302e adds.w r2, r8, 1 | r2 = r8 + 1;
0x00073032 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00073036 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x0007303a mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x0007303c cbz r0, 0x73052 | goto label_196;
| }
0x0007303e mov r2, r8 | r2 = r8;
0x00073040 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00073042 str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x00073044 blx 0x7dcc | fcn_00007dcc ();
0x00073048 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x0007304a mov.w r2, 0 | r2 = 0;
0x0007304e strb.w r2, [r3, r8] | *((r3 + r8)) = r2;
| }
| label_196:
0x00073052 str r3, [r7] | *(r7) = r3;
0x00073054 b.w 0x723bc | goto label_6;
0x00073058 movs r3, 0 | r3 = 0;
0x0007305a sub.w r2, r6, 8 | r2 = r6 - 8;
0x0007305e sub.w r1, r6, 0x14 | r1 = r6 - 0x14;
0x00073062 mov r0, fp | r0 = fp;
0x00073064 bl 0x25ed8 | fcn_00025ed8 (r0, r1, r2, r3);
0x00073068 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x0007306c b.w 0x723bc | goto label_6;
0x00073070 movs r3, 0 | r3 = 0;
0x00073072 sub.w r1, r6, 8 | r1 = r6 - 8;
0x00073076 mov r2, r3 | r2 = r3;
0x00073078 mov r0, fp | r0 = fp;
0x0007307a bl 0x25ed8 | fcn_00025ed8 (r0, r1, r2, r3);
0x0007307e str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x00073082 b.w 0x723bc | goto label_6;
0x00073086 movs r3, 1 | r3 = 1;
0x00073088 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x0007308a b.w 0x723bc | goto label_6;
0x0007308e movs r3, 0 | r3 = 0;
0x00073090 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00073094 mov r1, r3 | r1 = r3;
0x00073096 mov r0, fp | r0 = fp;
0x00073098 bl 0x25c84 | r0 = fcn_00025c84 (r0, r1, r2, r3);
0x0007309c mov r7, r0 | r7 = r0;
0x0007309e str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x000730a2 cmp r0, 0 |
| if (r0 == 0) {
0x000730a4 beq.w 0x723bc | goto label_6;
| }
0x000730a8 ldr.w r0, [fp] | r0 = *(fp);
0x000730ac adds r1, r6, 4 | r1 = r6 + 4;
0x000730ae bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x000730b2 str r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
0x000730b4 b.w 0x723bc | goto label_6;
0x000730b8 sub.w r3, r6, 0x14 | r3 = r6 - 0x14;
0x000730bc sub.w r2, r6, 0x2c | r2 = r6 - 0x2c;
0x000730c0 movs r1, 0 | r1 = 0;
0x000730c2 mov r0, fp | r0 = fp;
0x000730c4 bl 0x25c84 | r0 = fcn_00025c84 (r0, r1, r2, r3);
0x000730c8 mov r7, r0 | r7 = r0;
0x000730ca str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x000730ce cmp r0, 0 |
| if (r0 == 0) {
0x000730d0 beq.w 0x723bc | goto label_6;
| }
0x000730d4 ldr.w r0, [fp] | r0 = *(fp);
0x000730d8 adds r1, r6, 4 | r1 = r6 + 4;
0x000730da bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x000730de str r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
0x000730e0 b.w 0x723bc | goto label_6;
0x000730e4 adds r3, r6, 4 | r3 = r6 + 4;
0x000730e6 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x000730ea movs r1, 0 | r1 = 0;
0x000730ec mov r0, fp | r0 = fp;
0x000730ee bl 0x25c84 | fcn_00025c84 (r0, r1, r2, r3);
0x000730f2 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x000730f6 b.w 0x723bc | goto label_6;
0x000730fa movs r3, 0 | r3 = 0;
0x000730fc adds r2, r6, 4 | r2 = r6 + 4;
0x000730fe mov r1, r3 | r1 = r3;
0x00073100 mov r0, fp | r0 = fp;
0x00073102 bl 0x25c84 | fcn_00025c84 (r0, r1, r2, r3);
0x00073106 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00073108 b.w 0x723bc | goto label_6;
0x0007310c add.w r8, r6, 4 | r8 = r6 + 4;
0x00073110 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00073114 mov r3, r8 | r3 = r8;
0x00073116 movs r1, 0 | r1 = 0;
0x00073118 mov r0, fp | r0 = fp;
0x0007311a bl 0x25c84 | fcn_00025c84 (r0, r1, r2, r3);
0x0007311e ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00073122 mov r7, r0 | r7 = r0;
0x00073124 cmp r0, 0 |
0x00073126 it ne |
| if (r0 != 0) {
0x00073128 cmpne r3, 1 | __asm ("cmpne r3, 1");
| }
| if (r0 > 0) {
0x0007312a bhi.w 0x753c4 | goto label_197;
| }
| label_26:
0x0007312e str r7, [r6, -0x14] | *((r6 - 0x14)) = r7;
0x00073132 b.w 0x723bc | goto label_6;
0x00073136 ldr.w r3, [fp] | r3 = *(fp);
0x0007313a ldrb.w r3, [r3, 0xa9] | r3 = *((r3 + 0xa9));
0x0007313e clz r3, r3 | r3 &= r3;
0x00073142 lsrs r3, r3, 5 | r3 >>= 5;
0x00073144 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00073146 b.w 0x723bc | goto label_6;
0x0007314a ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0007314c ldr r3, [r6, -0x38] | r3 = *((r6 - 0x38));
0x00073150 ldr r2, [r6, -0x44] | r2 = *((r6 - 0x44));
0x00073154 ldr r1, [r6, -0x50] | r1 = *((r6 - 0x50));
0x00073158 str r0, [sp, 0x10] | *(arg_10h) = r0;
0x0007315a ldr r0, [r6, -0x5c] | r0 = *((r6 - 0x5c));
0x0007315e str r0, [sp, 0xc] | *(arg_ch) = r0;
0x00073160 ldr r0, [r6, -0x8] | r0 = *((r6 - 0x8));
0x00073164 str r0, [sp, 8] | *(arg_8h) = r0;
0x00073166 ldr r0, [r6, -0x20] | r0 = *((r6 - 0x20));
0x0007316a str r0, [sp, 4] | *(arg_4h) = r0;
0x0007316c ldr r0, [r6, -0x2c] | r0 = *((r6 - 0x2c));
0x00073170 str r0, [sp] | *(sp) = r0;
0x00073172 mov r0, fp | r0 = fp;
0x00073174 bl 0x2acc4 | fcn_0002acc4 (r0, r1, r2, r3, r4, r5, r6);
0x00073178 str r0, [r6, -0x68] | *((r6 - 0x68)) = r0;
0x0007317c cmp r0, 0 |
| if (r0 == 0) {
0x0007317e beq.w 0x7575a | goto label_198;
| }
0x00073182 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00073186 str r3, [r0, 0x48] | *((r0 + 0x48)) = r3;
0x00073188 b.w 0x723bc | goto label_6;
0x0007318c ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0007318e ldr r3, [r6, -0x2c] | r3 = *((r6 - 0x2c));
0x00073192 ldr r2, [r6, -0x38] | r2 = *((r6 - 0x38));
0x00073196 ldr r1, [r6, -0x44] | r1 = *((r6 - 0x44));
0x0007319a str r0, [sp, 0x10] | *(arg_10h) = r0;
0x0007319c ldr r0, [r6, -0x50] | r0 = *((r6 - 0x50));
0x000731a0 str r0, [sp, 0xc] | *(arg_ch) = r0;
0x000731a2 ldr r0, [r6, -0x8] | r0 = *((r6 - 0x8));
0x000731a6 str r0, [sp, 8] | *(arg_8h) = r0;
0x000731a8 ldr r0, [r6, -0x14] | r0 = *((r6 - 0x14));
0x000731ac str r0, [sp, 4] | *(arg_4h) = r0;
0x000731ae ldr r0, [r6, -0x20] | r0 = *((r6 - 0x20));
0x000731b2 str r0, [sp] | *(sp) = r0;
0x000731b4 mov r0, fp | r0 = fp;
0x000731b6 bl 0x2acc4 | fcn_0002acc4 (r0, r1, r2, r3, r4, r5, r6);
0x000731ba str r0, [r6, -0x5c] | *((r6 - 0x5c)) = r0;
0x000731be b.w 0x723bc | goto label_6;
0x000731c2 movs r3, 0 | r3 = 0;
0x000731c4 movs r1, 0xb3 | r1 = 0xb3;
0x000731c6 mov r2, r3 | r2 = r3;
0x000731c8 mov r0, fp | r0 = fp;
0x000731ca bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x000731ce movs r1, 0x3b | r1 = 0x3b;
0x000731d0 mov r7, r0 | r7 = r0;
0x000731d2 movs r3, 1 | r3 = 1;
0x000731d4 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x000731d8 ldr.w r0, [fp] | r0 = *(fp);
0x000731dc bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x000731e0 mov r3, r7 | r3 = r7;
0x000731e2 mov r2, r0 | r2 = r0;
0x000731e4 movs r1, 0x8c | r1 = 0x8c;
0x000731e6 mov r0, fp | r0 = fp;
0x000731e8 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x000731ec ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x000731f0 mov r2, r0 | r2 = r0;
0x000731f2 mov r0, fp | r0 = fp;
0x000731f4 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x000731f8 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x000731fc b.w 0x723bc | goto label_6;
0x00073200 movs r3, 0 | r3 = 0;
0x00073202 ldr.w r0, [fp] | r0 = *(fp);
0x00073206 movs r1, 0xb3 | r1 = 0xb3;
0x00073208 add r2, sp, 0x78 | r2 += arg_78h;
0x0007320a strd r3, r3, [sp, 0x78] | __asm ("strd r3, r3, [sp, 0x78]");
0x0007320e bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x00073212 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00073216 mov r2, r0 | r2 = r0;
0x00073218 mov r0, fp | r0 = fp;
0x0007321a bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x0007321e str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00073222 b.w 0x723bc | goto label_6;
0x00073226 ldr r1, [r6, -0x44] | r1 = *((r6 - 0x44));
0x0007322a ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x0007322e cmp r1, 0 |
| if (r1 == 0) {
0x00073230 beq.w 0x75736 | goto label_199;
| }
| label_45:
0x00073234 ldr r3, [r2] | r3 = *(r2);
0x00073236 sub.w r7, r6, 0x14 | r7 = r6 - 0x14;
0x0007323a cmp r3, 1 |
| if (r3 != 1) {
0x0007323c bne.w 0x75342 | goto label_200;
| }
0x00073240 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00073242 mov r0, fp | r0 = fp;
0x00073244 str r3, [sp, 0xc] | *(arg_ch) = r3;
0x00073246 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x0007324a str r7, [sp] | *(sp) = r7;
0x0007324c movs r7, 0 | r7 = 0;
0x0007324e mov r2, r7 | r2 = r7;
0x00073250 str r7, [sp, 4] | *(arg_4h) = r7;
0x00073252 str r3, [sp, 8] | *(arg_8h) = r3;
0x00073254 mov r3, r7 | r3 = r7;
0x00073256 bl 0x25dd8 | r0 = fcn_00025dd8 (r0, r1, r2, r3, r4, r5, r6);
0x0007325a mov r2, r0 | r2 = r0;
0x0007325c str r0, [r6, -0x44] | *((r6 - 0x44)) = r0;
0x00073260 cmp r0, 0 |
| if (r0 == 0) {
0x00073262 beq.w 0x75fc8 | goto label_201;
| }
0x00073266 ldr.w ip, [r0] | ip = *(r0);
0x0007326a ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x0007326e add.w r0, ip, -1 | r0 = ip + -1;
0x00073272 add.w r0, r0, r0, lsl 3 | r0 += (r0 << 3);
0x00073276 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00073278 add.w r0, r2, r0, lsl 3 | r0 = r2 + (r0 << 3);
0x0007327c str r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
0x0007327e ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x00073280 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00073282 ldr r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x00073284 str r3, [r0, 0x1c] | *((r0 + 0x1c)) = r3;
0x00073286 ldrb.w r3, [r1, 0x2d] | r3 = *((r1 + 0x2d));
0x0007328a lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 < r3) {
0x0007328c bpl 0x732b2 |
0x0007328e ldr r3, [r1, 0x48] | r3 = *((r1 + 0x48));
0x00073290 add.w ip, ip, ip, lsl 3 |
0x00073294 str.w r3, [r2, ip, lsl 3] | __asm ("str.w r3, [r2, ip, lsl 3]");
0x00073298 ldrb.w r3, [r1, 0x2d] | r3 = *((r1 + 0x2d));
0x0007329c str r7, [r1, 0x48] | *((r1 + 0x48)) = r7;
0x0007329e bfi r3, r7, 2, 1 | value_6 = BIT_MASK (2, 1);
| value_7 = r7 & value_6;
| value_6 = ~value_6;
| r3 &= value_6;
| r3 |= value_7;
0x000732a2 strb.w r3, [r1, 0x2d] | *((r1 + 0x2d)) = r3;
0x000732a6 ldrb.w r3, [r0, 0x2d] | r3 = *((r0 + 0x2d));
0x000732aa orr r3, r3, 4 | r3 |= 4;
0x000732ae strb.w r3, [r0, 0x2d] | *((r0 + 0x2d)) = r3;
| }
0x000732b2 movs r3, 0 | r3 = 0;
0x000732b4 strd r3, r3, [r1, 0xc] | __asm ("strd r3, r3, [r1, 0xc]");
0x000732b8 str r3, [r1, 0x1c] | *((r1 + 0x1c)) = r3;
| label_75:
0x000732ba ldr.w r0, [fp] | r0 = *(fp);
0x000732be bl 0x18a68 | fcn_00018a68 (r0, r1);
0x000732c2 b.w 0x723bc | goto label_6;
0x000732c6 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000732c8 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x000732cc ldr r1, [r6, -0x44] | r1 = *((r6 - 0x44));
0x000732d0 mov r0, fp | r0 = fp;
0x000732d2 str r3, [sp, 0xc] | *(arg_ch) = r3;
0x000732d4 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x000732d8 str r3, [sp, 8] | *(arg_8h) = r3;
0x000732da ldr r3, [r6, -0x2c] | r3 = *((r6 - 0x2c));
0x000732de str r2, [sp] | *(sp) = r2;
0x000732e0 str r3, [sp, 4] | *(arg_4h) = r3;
0x000732e2 movs r3, 0 | r3 = 0;
0x000732e4 mov r2, r3 | r2 = r3;
0x000732e6 bl 0x25dd8 | fcn_00025dd8 (r0, r1, r2, r3, r4, r5, r6);
0x000732ea str r0, [r6, -0x44] | *((r6 - 0x44)) = r0;
0x000732ee b.w 0x723bc | goto label_6;
0x000732f2 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000732f4 sub.w r2, r6, 0x50 | r2 = r6 - 0x50;
0x000732f8 ldr r1, [r6, -0x5c] | r1 = *((r6 - 0x5c));
0x000732fc mov r0, fp | r0 = fp;
0x000732fe str r3, [sp, 0xc] | *(arg_ch) = r3;
0x00073300 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00073304 str r3, [sp, 8] | *(arg_8h) = r3;
0x00073306 movs r3, 0 | r3 = 0;
0x00073308 str r3, [sp, 4] | *(arg_4h) = r3;
0x0007330a sub.w r3, r6, 0x14 | r3 = r6 - 0x14;
0x0007330e str r3, [sp] | *(sp) = r3;
0x00073310 sub.w r3, r6, 0x44 | r3 = r6 - 0x44;
0x00073314 bl 0x25dd8 | fcn_00025dd8 (r0, r1, r2, r3, r4, r5, r6);
0x00073318 ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x0007331c str r0, [r6, -0x5c] | *((r6 - 0x5c)) = r0;
0x00073320 cmp r0, 0 |
| if (r0 == 0) {
0x00073322 beq.w 0x75676 | goto label_202;
| }
0x00073326 ldr r3, [r0] | r3 = *(r0);
0x00073328 subs r2, r3, 1 | r2 = r3 - 1;
0x0007332a add.w r2, r2, r2, lsl 3 | r2 += (r2 << 3);
0x0007332e add.w r3, r3, r3, lsl 3 | r3 += (r3 << 3);
0x00073332 str.w r1, [r0, r3, lsl 3] | __asm ("str.w r1, [r0, r3, lsl 3]");
0x00073336 add.w r0, r0, r2, lsl 3 | r0 += (r2 << 3);
0x0007333a ldrb.w r3, [r0, 0x2d] | r3 = *((r0 + 0x2d));
0x0007333e orr r3, r3, 4 | r3 |= 4;
0x00073342 strb.w r3, [r0, 0x2d] | *((r0 + 0x2d)) = r3;
0x00073346 b.w 0x723bc | goto label_6;
0x0007334a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007334c sub.w r2, r6, 0x38 | r2 = r6 - 0x38;
0x00073350 ldr r1, [r6, -0x44] | r1 = *((r6 - 0x44));
0x00073354 mov r0, fp | r0 = fp;
0x00073356 str r3, [sp, 0xc] | *(arg_ch) = r3;
0x00073358 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x0007335c str r3, [sp, 8] | *(arg_8h) = r3;
0x0007335e movs r3, 0 | r3 = 0;
0x00073360 str r3, [sp, 4] | *(arg_4h) = r3;
0x00073362 sub.w r3, r6, 0x20 | r3 = r6 - 0x20;
0x00073366 str r3, [sp] | *(sp) = r3;
0x00073368 sub.w r3, r6, 0x2c | r3 = r6 - 0x2c;
0x0007336c bl 0x25dd8 | fcn_00025dd8 (r0, r1, r2, r3, r4, r5, r6);
0x00073370 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00073374 mov r1, r0 | r1 = r0;
0x00073376 str r0, [r6, -0x44] | *((r6 - 0x44)) = r0;
0x0007337a mov r0, fp | r0 = fp;
0x0007337c bl 0x1bcf4 | fcn_0001bcf4 (r0, r1, r2);
0x00073380 b.w 0x723bc | goto label_6;
0x00073384 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00073388 cmp r3, 0 |
| if (r3 == 0) {
0x0007338a beq.w 0x723bc | goto label_6;
| }
0x0007338e ldr r2, [r3] | r2 = *(r3);
0x00073390 cmp r2, 0 |
| if (r2 <= 0) {
0x00073392 ble.w 0x723bc | goto label_6;
| }
0x00073396 subs r2, 1 | r2--;
0x00073398 add.w r2, r2, r2, lsl 3 | r2 += (r2 << 3);
0x0007339c add.w r3, r3, r2, lsl 3 | r3 += (r2 << 3);
0x000733a0 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x000733a2 strb.w r2, [r3, 0x2c] | *((r3 + 0x2c)) = r2;
0x000733a6 b.w 0x723bc | goto label_6;
0x000733aa ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x000733ac str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x000733b0 cmp r0, 0 |
| if (r0 == 0) {
0x000733b2 beq.w 0x723bc | goto label_6;
| }
0x000733b6 ldr r3, [r0] | r3 = *(r0);
0x000733b8 subs r2, r3, 1 | r2 = r3 - 1;
0x000733ba cmp r2, 0 |
0x000733bc itt gt |
| if (r2 <= 0) {
0x000733be addgt r3, r3, r3, lsl 3 | r3 += (r3 << 3);
| }
| if (r2 > 0) {
0x000733c2 add.w r3, r0, r3, lsl 3 | r3 = r0 + (r3 << 3);
| }
| if (r2 <= 0) {
0x000733c6 ble 0x733d8 | goto label_203;
| }
| do {
0x000733c8 ldrb r1, [r3, -0x64] | r1 = *((r3 - 0x64));
0x000733cc subs r2, 1 | r2--;
0x000733ce sub.w r3, r3, 0x48 | r3 -= 0x48;
0x000733d2 strb.w r1, [r3, 0x2c] | *((r3 + 0x2c)) = r1;
0x000733d6 bne 0x733c8 |
| } while (r2 != 1);
| label_203:
0x000733d8 movs r3, 0 | r3 = 0;
0x000733da strb.w r3, [r0, 0x2c] | *((r0 + 0x2c)) = r3;
0x000733de b.w 0x723bc | goto label_6;
0x000733e2 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x000733e6 str r3, [r6, -0x20] | *((r6 - 0x20)) = r3;
0x000733ea b.w 0x723bc | goto label_6;
0x000733ee ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x000733f2 mov r0, fp | r0 = fp;
0x000733f4 ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x000733f8 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x000733fc ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x000733fe mov r7, r0 | r7 = r0;
0x00073400 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
| if (r3 == 0) {
0x00073404 cbz r3, 0x7341c | goto label_204;
| }
0x00073406 cmp r0, 0 |
| if (r0 == 0) {
0x00073408 beq.w 0x723bc | goto label_6;
| }
0x0007340c mov r1, r0 | r1 = r0;
0x0007340e movs r3, 1 | r3 = 1;
0x00073410 adds r2, r6, 4 | r2 = r6 + 4;
0x00073412 mov r0, fp | r0 = fp;
0x00073414 bl 0x1bf88 | fcn_0001bf88 (r0, r1, r2, r3, r4);
0x00073418 ldr r7, [r6, -0x2c] | r7 = *((r6 - 0x2c));
| label_204:
0x0007341c cmp r7, 0 |
| if (r7 == 0) {
0x0007341e beq.w 0x723bc | goto label_6;
| }
0x00073422 ldr r3, [r7] | r3 = *(r7);
0x00073424 add.w r8, r3, -1 | r8 = r3 + -1;
0x00073428 add.w r8, r7, r8, lsl 4 | r8 = r7 + (r8 << 4);
0x0007342c ldr.w r2, [r8, 0xc] | r2 = *((r8 + 0xc));
0x00073430 cmp r2, 0 |
| if (r2 != 0) {
0x00073432 bne.w 0x723bc | goto label_6;
| }
0x00073436 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x0007343a ldr r1, [r6, -0x20] | r1 = *((r6 - 0x20));
0x0007343e ldr.w r0, [fp] | r0 = *(fp);
0x00073442 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00073444 bl 0x1bd4c | fcn_0001bd4c (r0, r1, r2);
0x00073448 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x0007344a movs r2, 1 | r2 = 1;
0x0007344c str.w r0, [r8, 0xc] | __asm ("str.w r0, [r8, 0xc]");
0x00073450 add.w r7, r7, r3, lsl 4 | r7 += (r3 << 4);
0x00073454 ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x00073456 bfi r3, r2, 0, 2 | value_8 = BIT_MASK (0, 2);
| value_9 = r2 & value_8;
| value_8 = ~value_8;
| r3 &= value_8;
| r3 |= value_9;
0x0007345a strb r3, [r7, 1] | *((r7 + 1)) = r3;
0x0007345c b.w 0x723bc | goto label_6;
0x00073460 movs r3, 0 | r3 = 0;
0x00073462 str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x00073466 b.w 0x723bc | goto label_6;
0x0007346a movs r3, 7 | r3 = 7;
0x0007346c str r3, [r6, 4] | *((r6 + 4)) = r3;
0x0007346e b.w 0x723bc | goto label_6;
0x00073472 movs r3, 0xa | r3 = 0xa;
0x00073474 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00073476 b.w 0x723bc | goto label_6;
0x0007347a movs r3, 0 | r3 = 0;
0x0007347c str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00073480 b.w 0x723bc | goto label_6;
0x00073484 movs r3, 9 | r3 = 9;
0x00073486 add r2, sp, 0x78 | r2 += arg_78h;
0x00073488 strb.w r3, [sp, 0x78] | *(arg_78h) = r3;
0x0007348c mov r0, fp | r0 = fp;
0x0007348e movs r3, 0 | r3 = 0;
0x00073490 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00073492 strd r3, r3, [sp, 0x7c] | __asm ("strd r3, r3, [sp, 0x7c]");
0x00073496 strd r3, r3, [sp, 0x84] | __asm ("strd r3, r3, [sp, 0x84]");
0x0007349a strd r3, r3, [sp, 0x8c] | __asm ("strd r3, r3, [sp, 0x8c]");
0x0007349e bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x000734a2 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000734a4 cmp r1, 0 |
| if (r1 == 0) {
0x000734a6 beq.w 0x723bc | goto label_6;
| }
0x000734aa ldr.w r0, [fp] | r0 = *(fp);
0x000734ae movs r2, 1 | r2 = 1;
0x000734b0 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x000734b4 b.w 0x723bc | goto label_6;
0x000734b8 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x000734bc movs r2, 1 | r2 = 1;
0x000734be ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000734c0 mov r0, fp | r0 = fp;
0x000734c2 bl 0xa6484 | fcn_000a6484 (r0, r1, r2, r3, r4, r5, r6);
0x000734c6 b.w 0x723bc | goto label_6;
0x000734ca movs r3, 0 | r3 = 0;
0x000734cc add.w r8, r6, 4 | r8 = r6 + 4;
0x000734d0 mov r1, r3 | r1 = r3;
0x000734d2 mov r2, r8 | r2 = r8;
0x000734d4 mov r0, fp | r0 = fp;
0x000734d6 bl 0x25c84 | fcn_00025c84 (r0, r1, r2, r3);
0x000734da ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x000734de mov r7, r0 | r7 = r0;
0x000734e0 cmp r0, 0 |
0x000734e2 it ne |
| if (r0 != 0) {
0x000734e4 cmpne r3, 1 | __asm ("cmpne r3, 1");
| }
| if (r0 > 0) {
0x000734e6 bhi.w 0x753b0 | goto label_205;
| }
| label_25:
0x000734ea str r7, [r6, 4] | *((r6 + 4)) = r7;
0x000734ec b.w 0x723bc | goto label_6;
0x000734f0 movs r3, 0x86 | r3 = 0x86;
0x000734f2 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x000734f6 b.w 0x723bc | goto label_6;
0x000734fa movs r3, 2 | r3 = 2;
0x000734fc str r3, [r6, 4] | *((r6 + 4)) = r3;
0x000734fe b.w 0x723bc | goto label_6;
0x00073502 movs r3, 1 | r3 = 1;
0x00073504 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00073506 b.w 0x723bc | goto label_6;
0x0007350a ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x0007350c ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00073510 cmp r7, 0 |
| if (r7 == 0) {
0x00073512 beq.w 0x756b6 | goto label_206;
| }
0x00073516 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x00073518 str r1, [r7, 0x40] | *((r7 + 0x40)) = r1;
| if (r3 != 0) {
0x0007351a cbz r3, 0x73524 |
0x0007351c mov r1, r7 | r1 = r7;
0x0007351e mov r0, fp | r0 = fp;
0x00073520 bl 0x25d24 | fcn_00025d24 (r0, r1);
| }
| label_42:
0x00073524 str r7, [r6, -0x20] | *((r6 - 0x20)) = r7;
0x00073528 b.w 0x723bc | goto label_6;
0x0007352c ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x0007352e ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00073532 cmp r7, 0 |
| if (r7 == 0) {
0x00073534 beq.w 0x756a4 | goto label_207;
| }
0x00073538 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x0007353a str r1, [r7, 0x40] | *((r7 + 0x40)) = r1;
| if (r3 != 0) {
0x0007353c cbz r3, 0x73546 |
0x0007353e mov r1, r7 | r1 = r7;
0x00073540 mov r0, fp | r0 = fp;
0x00073542 bl 0x25d24 | fcn_00025d24 (r0, r1);
| }
| label_41:
0x00073546 str r7, [r6, -0x14] | *((r6 - 0x14)) = r7;
0x0007354a b.w 0x723bc | goto label_6;
0x0007354e movs r3, 1 | r3 = 1;
0x00073550 str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x00073554 b.w 0x723bc | goto label_6;
0x00073558 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0007355a ldr r7, [r6, -0x14] | r7 = *((r6 - 0x14));
0x0007355e cmp r1, 0 |
| if (r1 == 0) {
0x00073560 beq.w 0x75418 | goto label_208;
| }
0x00073564 ldr r3, [r1, 0x34] | r3 = *((r1 + 0x34));
| if (r3 != 0) {
0x00073566 cbz r3, 0x735b0 |
0x00073568 mov.w r8, 0 | r8 = 0;
0x0007356c mov r0, fp | r0 = fp;
0x0007356e str r1, [sp, 0x2c] | *(arg_2ch) = r1;
0x00073570 str.w r8, [sp, 0x7c] | __asm ("str.w r8, [arg_7ch]");
0x00073574 bl 0x25d24 | fcn_00025d24 (r0, r1);
0x00073578 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x0007357a add r3, sp, 0x78 | r3 += arg_78h;
0x0007357c mov r2, r8 | r2 = r8;
0x0007357e str r3, [sp] | *(sp) = r3;
0x00073580 mov r0, fp | r0 = fp;
0x00073582 mov r3, r8 | r3 = r8;
0x00073584 str r1, [sp, 4] | *(arg_4h) = r1;
0x00073586 mov r1, r8 | r1 = r8;
0x00073588 strd r8, r8, [sp, 8] | __asm ("strd r8, r8, [sp, 8]");
0x0007358c bl 0x25dd8 | fcn_00025dd8 (r0, r1, r2, r3, r4, r5, r6);
0x00073590 mov r1, r8 | r1 = r8;
0x00073592 mov r2, r0 | r2 = r0;
0x00073594 mov r3, r8 | r3 = r8;
0x00073596 mov r0, fp | r0 = fp;
0x00073598 strd r8, r8, [sp, 0xc] | __asm ("strd r8, r8, [sp, 0xc]");
0x0007359c strd r8, r8, [sp, 4] | __asm ("strd r8, r8, [sp, 4]");
0x000735a0 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000735a4 bl 0x2acc4 | r0 = fcn_0002acc4 (r0, r1, r2, r3, r4, r5, r6);
0x000735a8 mov r1, r0 | r1 = r0;
0x000735aa cmp r0, 0 |
| if (r0 == 0) {
0x000735ac beq.w 0x75418 | goto label_208;
| }
| }
0x000735b0 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x000735b4 str r7, [r1, 0x34] | *((r1 + 0x34)) = r7;
0x000735b6 strb r2, [r1] | *(r1) = r2;
| if (r7 != 0) {
0x000735b8 cbz r7, 0x735c2 |
0x000735ba ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000735bc bic r3, r3, 0x400 | r3 = BIT_MASK (r3, 0x400);
0x000735c0 str r3, [r7, 4] | *((r7 + 4)) = r3;
| }
0x000735c2 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000735c4 cmp r2, 0x86 |
0x000735c6 bic r3, r3, 0x400 | r3 = BIT_MASK (r3, 0x400);
0x000735ca str r3, [r1, 4] | *((r1 + 4)) = r3;
| if (r2 != 0x86) {
0x000735cc beq 0x735d4 |
0x000735ce movs r3, 1 | r3 = 1;
0x000735d0 strb.w r3, [fp, 0x16] | *(arg_16h) = r3;
| }
| label_29:
0x000735d4 str r1, [r6, -0x14] | *((r6 - 0x14)) = r1;
0x000735d8 b.w 0x723bc | goto label_6;
0x000735dc ldr r7, [r6, 4] | r7 = *((r6 + 4));
| if (r7 != 0) {
0x000735de cbz r7, 0x735ec |
0x000735e0 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
| if (r3 == 0) {
0x000735e2 cbz r3, 0x735ec | goto label_209;
| }
0x000735e4 mov r1, r7 | r1 = r7;
0x000735e6 mov r0, fp | r0 = fp;
0x000735e8 bl 0x25d24 | fcn_00025d24 (r0, r1);
| }
| label_209:
0x000735ec str r7, [r6, 4] | *((r6 + 4)) = r7;
0x000735ee b.w 0x723bc | goto label_6;
0x000735f2 ldr r7, [r6, -0x2c] | r7 = *((r6 - 0x2c));
0x000735f6 movs r3, 0 | r3 = 0;
0x000735f8 mov.w r2, 0x600 | r2 = 0x600;
0x000735fc ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00073600 mov r0, fp | r0 = fp;
0x00073602 str r2, [sp, 0xc] | *(arg_ch) = r2;
0x00073604 str r3, [sp, 0x10] | *(arg_10h) = r3;
0x00073606 mov r2, r3 | r2 = r3;
0x00073608 strd r3, r3, [sp, 4] | __asm ("strd r3, r3, [sp, 4]");
0x0007360c str r3, [sp] | *(sp) = r3;
0x0007360e bl 0x2acc4 | fcn_0002acc4 (r0, r1, r2, r3, r4, r5, r6);
| if (r7 != 0) {
0x00073612 cbz r7, 0x7361c |
0x00073614 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00073616 bic r3, r3, 0x400 | r3 = BIT_MASK (r3, 0x400);
0x0007361a str r3, [r7, 4] | *((r7 + 4)) = r3;
| }
0x0007361c cmp r0, 0 |
| if (r0 == 0) {
0x0007361e beq.w 0x75688 | goto label_210;
| }
0x00073622 movs r3, 0x86 | r3 = 0x86;
0x00073624 str r7, [r0, 0x34] | *((r0 + 0x34)) = r7;
0x00073626 strb r3, [r0] | *(r0) = r3;
0x00073628 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x0007362c b.w 0x723bc | goto label_6;
0x00073630 movs r3, 0 | r3 = 0;
0x00073632 mov.w r2, 0x200 | r2 = 0x200;
0x00073636 ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x0007363a mov r0, fp | r0 = fp;
0x0007363c str r2, [sp, 0xc] | *(arg_ch) = r2;
0x0007363e mov r2, r3 | r2 = r3;
0x00073640 str r3, [sp, 0x10] | *(arg_10h) = r3;
0x00073642 strd r3, r3, [sp, 4] | __asm ("strd r3, r3, [sp, 4]");
0x00073646 str r3, [sp] | *(sp) = r3;
0x00073648 bl 0x2acc4 | fcn_0002acc4 (r0, r1, r2, r3, r4, r5, r6);
0x0007364c str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00073650 b.w 0x723bc | goto label_6;
0x00073654 adds r2, r6, 4 | r2 = r6 + 4;
0x00073656 movs r1, 1 | r1 = 1;
0x00073658 mov r0, fp | r0 = fp;
0x0007365a bl 0x2e410 | fcn_0002e410 (r0, r1, r2);
0x0007365e b.w 0x723bc | goto label_6;
0x00073662 adds r2, r6, 4 | r2 = r6 + 4;
0x00073664 movs r1, 0 | r1 = 0;
0x00073666 mov r0, fp | r0 = fp;
0x00073668 bl 0x2e410 | fcn_0002e410 (r0, r1, r2);
0x0007366c b.w 0x723bc | goto label_6;
0x00073670 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00073674 str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x00073678 b.w 0x723bc | goto label_6;
0x0007367c movs r3, 0 | r3 = 0;
0x0007367e str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00073680 b.w 0x723bc | goto label_6;
0x00073684 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00073686 movs r1, 0xaa | r1 = 0xaa;
0x00073688 ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x0007368c mov r0, fp | r0 = fp;
0x0007368e bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073692 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00073694 mov r7, r0 | r7 = r0;
0x00073696 str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x0007369a cmp r0, 0 |
0x0007369c it ne |
| if (r0 == 0) {
0x0007369e cmpne r3, 0 | __asm ("cmpne r3, 0");
| goto label_211;
| }
| if (r0 == 0) {
| label_211:
0x000736a0 beq.w 0x723bc | goto label_6;
| }
0x000736a4 ldrb r3, [r3] | r3 = *(r3);
0x000736a6 cmp r3, 0x78 |
| if (r3 != 0x78) {
0x000736a8 bne.w 0x723bc | goto label_6;
| }
0x000736ac ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x000736b0 cmp r3, 1 |
| if (r3 > 1) {
0x000736b2 bhi.w 0x723bc | goto label_6;
| }
0x000736b6 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x000736b8 movs r3, 0x33 | r3 = 0x33;
0x000736ba ldr.w r0, [fp] | r0 = *(fp);
0x000736be strb r3, [r7] | *(r7) = r3;
| if (r1 != 0) {
0x000736c0 cbz r1, 0x736c6 |
0x000736c2 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x000736c6 movs r3, 0 | r3 = 0;
0x000736c8 str r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
0x000736ca b.w 0x723bc | goto label_6;
0x000736f4 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000736f6 movs r1, 0x2d | r1 = 0x2d;
0x000736f8 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x000736fc mov r0, fp | r0 = fp;
0x000736fe bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073702 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00073704 mov r7, r0 | r7 = r0;
0x00073706 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x0007370a cmp r0, 0 |
0x0007370c it ne |
| if (r0 == 0) {
0x0007370e cmpne r3, 0 | __asm ("cmpne r3, 0");
| goto label_212;
| }
| if (r0 == 0) {
| label_212:
0x00073710 beq.w 0x723bc | goto label_6;
| }
0x00073714 ldrb r3, [r3] | r3 = *(r3);
0x00073716 cmp r3, 0x78 |
| if (r3 != 0x78) {
0x00073718 bne.w 0x723bc | goto label_6;
| }
0x0007371c ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00073720 cmp r3, 1 |
| if (r3 > 1) {
0x00073722 bhi.w 0x723bc | goto label_6;
| }
0x00073726 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x00073728 movs r3, 0x32 | r3 = 0x32;
0x0007372a ldr.w r0, [fp] | r0 = *(fp);
0x0007372e strb r3, [r7] | *(r7) = r3;
| if (r1 != 0) {
0x00073730 cbz r1, 0x73736 |
0x00073732 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x00073736 movs r3, 0 | r3 = 0;
0x00073738 str r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
0x0007373a b.w 0x723bc | goto label_6;
0x0007373e ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00073742 movs r3, 0 | r3 = 0;
0x00073744 movs r1, 0x33 | r1 = 0x33;
0x00073746 mov r0, fp | r0 = fp;
0x00073748 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007374c str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00073750 b.w 0x723bc | goto label_6;
0x00073754 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00073758 movs r3, 0 | r3 = 0;
0x0007375a ldrh r1, [r6, 2] | r1 = *((r6 + 2));
0x0007375c mov r0, fp | r0 = fp;
0x0007375e bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073762 str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x00073766 b.w 0x723bc | goto label_6;
0x0007376a ldr r7, [r6, -0x1c] | r7 = *((r6 - 0x1c));
0x0007376e ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00073772 ldr.w r0, [fp] | r0 = *(fp);
0x00073776 bic r3, r7, 0x80000000 | r3 = BIT_MASK (r7, 0x80000000);
0x0007377a str r3, [r6, -0x1c] | *((r6 - 0x1c)) = r3;
0x0007377e bl 0x1afb0 | fcn_0001afb0 (r0, r1);
0x00073782 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00073786 mov r1, r0 | r1 = r0;
0x00073788 mov r0, fp | r0 = fp;
0x0007378a bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x0007378e ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00073790 mov r1, r0 | r1 = r0;
0x00073792 mov r0, fp | r0 = fp;
0x00073794 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00073798 movs r3, 0 | r3 = 0;
0x0007379a mov r1, r0 | r1 = r0;
0x0007379c sub.w r2, r6, 0x20 | r2 = r6 - 0x20;
0x000737a0 mov r0, fp | r0 = fp;
0x000737a2 bl 0x2622c | fcn_0002622c (r0, r1, r2, r3);
0x000737a6 cmp r7, 0 |
0x000737a8 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
| if (r7 < 0) {
0x000737ac blt.w 0x7518e | goto label_213;
| }
| label_10:
0x000737b0 cmp r0, 0 |
| if (r0 == 0) {
0x000737b2 beq.w 0x723bc | goto label_6;
| }
0x000737b6 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000737b8 orr r3, r3, 0x80 | r3 |= 0x80;
0x000737bc str r3, [r0, 4] | *((r0 + 4)) = r3;
0x000737be b.w 0x723bc | goto label_6;
0x000737c0 pop {r0, r2, r3, r4, r5, r6, r7, pc} |
0x000737c2 ldr r7, [r6, -0x4] | r7 = *((r6 - 0x4));
0x000737c6 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000737c8 ldr.w r0, [fp] | r0 = *(fp);
0x000737cc bic r3, r7, 0x80000000 | r3 = BIT_MASK (r7, 0x80000000);
0x000737d0 str r3, [r6, -0x4] | *((r6 - 0x4)) = r3;
0x000737d4 bl 0x1afb0 | fcn_0001afb0 (r0, r1);
0x000737d8 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x000737dc mov r1, r0 | r1 = r0;
0x000737de mov r0, fp | r0 = fp;
0x000737e0 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x000737e4 movs r3, 0 | r3 = 0;
0x000737e6 mov r1, r0 | r1 = r0;
0x000737e8 sub.w r2, r6, 8 | r2 = r6 - 8;
0x000737ec mov r0, fp | r0 = fp;
0x000737ee bl 0x2622c | fcn_0002622c (r0, r1, r2, r3);
0x000737f2 cmp r7, 0 |
0x000737f4 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
| if (r7 < 0) {
0x000737f8 blt.w 0x751a2 | goto label_214;
| }
| label_11:
0x000737fc cmp r0, 0 |
| if (r0 == 0) {
0x000737fe beq.w 0x723bc | goto label_6;
| }
0x00073802 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00073804 orr r3, r3, 0x80 | r3 |= 0x80;
0x00073808 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0007380a b.w 0x723bc | goto label_6;
0x0007380c pop {r0, r1, r2, r4, r6, r7, pc} |
0x0007380e movs r3, 0 | r3 = 0;
0x00073810 movs r1, 0x89 | r1 = 0x89;
0x00073812 mov r2, r3 | r2 = r3;
0x00073814 mov r0, fp | r0 = fp;
0x00073816 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007381a ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x0007381e mov r1, r0 | r1 = r0;
0x00073820 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00073824 mov r0, fp | r0 = fp;
0x00073826 bl 0x266c8 | fcn_000266c8 (r0, r1, r2);
0x0007382a b.w 0x723bc | goto label_6;
0x0007382e ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00073832 cmp r1, 0 |
| if (r1 == 0) {
0x00073834 beq.w 0x75998 | goto label_215;
| }
0x00073838 ldr r2, [r1] | r2 = *(r1);
0x0007383a cmp r2, 1 |
| if (r2 == 1) {
0x0007383c beq.w 0x757ba | goto label_216;
| }
| label_47:
0x00073840 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00073844 movs r3, 0 | r3 = 0;
0x00073846 movs r1, 0x31 | r1 = 0x31;
0x00073848 mov r0, fp | r0 = fp;
0x0007384a bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x0007384e mov r7, r0 | r7 = r0;
0x00073850 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073854 cmp r0, 0 |
| if (r0 == 0) {
0x00073856 beq.w 0x758f0 | goto label_217;
| }
0x0007385a ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x0007385e ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00073862 str r2, [r0, 0x14] | *((r0 + 0x14)) = r2;
| if (r3 == 0) {
0x00073864 cbnz r3, 0x73878 |
0x00073866 bl 0x136e8 | fcn_000136e8 (r0);
0x0007386a ldr.w r2, [fp] | r2 = *(fp);
0x0007386e ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00073870 ldr r2, [r2, 0x7c] | r2 = *((r2 + 0x7c));
0x00073872 cmp r3, r2 |
| if (r3 > r2) {
0x00073874 bgt.w 0x75fde | goto label_218;
| }
| }
| label_52:
0x00073878 ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x0007387c cmp r3, 0 |
| if (r3 == 0) {
0x0007387e beq.w 0x723bc | goto label_6;
| }
0x00073882 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00073886 movs r3, 0 | r3 = 0;
0x00073888 movs r1, 0x13 | r1 = 0x13;
0x0007388a mov r0, fp | r0 = fp;
0x0007388c bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073890 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073894 b.w 0x723bc | goto label_6;
0x00073898 movs r3, 0 | r3 = 0;
0x0007389a sub.w r7, r6, 0x2c | r7 = r6 - 0x2c;
0x0007389e mov r1, r3 | r1 = r3;
0x000738a0 mov r2, r7 | r2 = r7;
0x000738a2 mov r0, fp | r0 = fp;
0x000738a4 bl 0x25c84 | fcn_00025c84 (r0, r1, r2, r3);
0x000738a8 movs r2, 0 | r2 = 0;
0x000738aa mov r3, r0 | r3 = r0;
0x000738ac str r2, [sp, 0x18] | *(arg_18h) = r2;
0x000738ae mov r0, fp | r0 = fp;
0x000738b0 ldr r1, [r6, -0x5c] | r1 = *((r6 - 0x5c));
0x000738b4 strd r2, r1, [sp, 0x10] | __asm ("strd r2, r1, [sp, 0x10]");
0x000738b8 sub.w r1, r6, 0x50 | r1 = r6 - 0x50;
0x000738bc ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x000738be str r2, [sp, 0xc] | *(arg_ch) = r2;
0x000738c0 sub.w r2, r6, 0x80 | r2 = r6 - 0x80;
0x000738c4 str r2, [sp, 8] | *(arg_8h) = r2;
0x000738c6 ldr r2, [r6, -0x74] | r2 = *((r6 - 0x74));
0x000738ca str r2, [sp, 4] | *(arg_4h) = r2;
0x000738cc ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x000738d0 str r2, [sp] | *(sp) = r2;
0x000738d2 sub.w r2, r6, 0x44 | r2 = r6 - 0x44;
0x000738d6 bl 0xa6b64 | fcn_000a6b64 (r0, r1, r2, r3, r4, r5, r6);
0x000738da ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x000738de cmp r3, 1 |
| if (r3 < 1) {
0x000738e0 bls.w 0x723bc | goto label_6;
| }
0x000738e4 ldr.w r2, [fp, 0xe8] | r2 = *(arg_e8h);
0x000738e8 cmp r2, 0 |
| if (r2 == 0) {
0x000738ea beq.w 0x723bc | goto label_6;
| }
0x000738ee cmp r3, 3 |
| if (r3 == 3) {
0x000738f0 beq.w 0x723bc | goto label_6;
| }
0x000738f4 ldr r1, [r2] | r1 = *(r2);
0x000738f6 mov r0, fp | r0 = fp;
0x000738f8 mov r2, r7 | r2 = r7;
0x000738fa bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
0x000738fe b.w 0x723bc | goto label_6;
0x00073902 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00073906 ldr.w r0, [fp] | r0 = *(fp);
0x0007390a bl 0x1afb0 | fcn_0001afb0 (r0, r1);
0x0007390e ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00073910 mov r1, r0 | r1 = r0;
0x00073912 mov r0, fp | r0 = fp;
0x00073914 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00073918 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x0007391c mov r7, r0 | r7 = r0;
0x0007391e movs r3, 0 | r3 = 0;
0x00073920 movs r1, 0x30 | r1 = 0x30;
0x00073922 mov r0, fp | r0 = fp;
0x00073924 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073928 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x0007392c cmp r0, 0 |
| if (r0 == 0) {
0x0007392e beq.w 0x7583e | goto label_219;
| }
0x00073932 str r7, [r0, 0x14] | *((r0 + 0x14)) = r7;
| label_48:
0x00073934 ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x00073938 cmp r3, 0 |
| if (r3 == 0) {
0x0007393a beq.w 0x723bc | goto label_6;
| }
0x0007393e ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00073942 movs r3, 0 | r3 = 0;
0x00073944 movs r1, 0x13 | r1 = 0x13;
0x00073946 mov r0, fp | r0 = fp;
0x00073948 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007394c str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073950 b.w 0x723bc | goto label_6;
0x00073954 ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x00073958 movs r3, 0 | r3 = 0;
0x0007395a movs r1, 0x9c | r1 = 0x9c;
0x0007395c mov r0, fp | r0 = fp;
0x0007395e bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x00073962 mov r7, r0 | r7 = r0;
0x00073964 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073968 cmp r0, 0 |
| if (r0 == 0) {
0x0007396a beq.w 0x75796 | goto label_220;
| }
0x0007396e ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00073972 cmp r2, 0 |
| if (r2 == 0) {
0x00073974 beq.w 0x75634 | goto label_221;
| }
0x00073978 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x0007397c mov r0, fp | r0 = fp;
0x0007397e bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00073982 ldr r7, [r6, -0x2c] | r7 = *((r6 - 0x2c));
| label_36:
0x00073986 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x0007398a str r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
0x0007398c cmp r3, 0 |
| if (r3 != 0) {
0x0007398e bne.w 0x723bc | goto label_6;
| }
0x00073992 mov r0, r7 | r0 = r7;
0x00073994 bl 0x136e8 | fcn_000136e8 (r0);
0x00073998 ldr.w r2, [fp] | r2 = *(fp);
0x0007399c ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x0007399e ldr r2, [r2, 0x7c] | r2 = *((r2 + 0x7c));
0x000739a0 cmp r3, r2 |
| if (r3 <= r2) {
0x000739a2 ble.w 0x723bc | goto label_6;
| }
0x000739a6 ldr.w r1, [pc, 0xcc8] |
0x000739aa mov r0, fp | r0 = fp;
0x000739ac add r1, pc | r1 = 0xe8022;
0x000739ae bl 0x25778 | fcn_00025778 (r0);
0x000739b2 b.w 0x723bc | goto label_6;
0x000739b6 movs r3, 0 | r3 = 0;
0x000739b8 movs r1, 0x14 | r1 = 0x14;
0x000739ba mov r2, r3 | r2 = r3;
0x000739bc mov r0, fp | r0 = fp;
0x000739be bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x000739c2 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x000739c6 mov r1, r0 | r1 = r0;
0x000739c8 str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x000739cc mov r0, fp | r0 = fp;
0x000739ce bl 0x266c8 | fcn_000266c8 (r0, r1, r2);
0x000739d2 b.w 0x723bc | goto label_6;
0x000739d6 sub.w r3, r6, 8 | r3 = r6 - 8;
0x000739da sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x000739de movs r1, 0 | r1 = 0;
0x000739e0 mov r0, fp | r0 = fp;
0x000739e2 bl 0x25c84 | fcn_00025c84 (r0, r1, r2, r3);
0x000739e6 movs r3, 0 | r3 = 0;
0x000739e8 mov r2, r0 | r2 = r0;
0x000739ea mov r1, r3 | r1 = r3;
0x000739ec mov r8, r0 | r8 = r0;
0x000739ee strd r3, r3, [sp, 0xc] | __asm ("strd r3, r3, [sp, 0xc]");
0x000739f2 mov r0, fp | r0 = fp;
0x000739f4 strd r3, r3, [sp, 4] | __asm ("strd r3, r3, [sp, 4]");
0x000739f8 str r3, [sp] | *(sp) = r3;
0x000739fa bl 0x2acc4 | fcn_0002acc4 (r0, r1, r2, r3, r4, r5, r6);
0x000739fe ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00073a00 mov r7, r0 | r7 = r0;
| if (r1 != 0) {
0x00073a02 cbz r1, 0x73a32 |
0x00073a04 cmp r0, 0 |
0x00073a06 it ne |
| if (r0 != 0) {
0x00073a08 cmpne r8, 0 | __asm ("cmpne r8, 0");
| }
| if (r0 == 0) {
0x00073a0c beq.w 0x7591c | goto label_222;
| }
0x00073a10 ldr.w r3, [r8] | r3 = *(r8);
0x00073a14 subs r2, r3, 1 | r2 = r3 - 1;
0x00073a16 add.w r2, r2, r2, lsl 3 | r2 += (r2 << 3);
0x00073a1a add.w r3, r3, r3, lsl 3 | r3 += (r3 << 3);
0x00073a1e str.w r1, [r8, r3, lsl 3] | __asm ("str.w r1, [r8, r3, lsl 3]");
0x00073a22 add.w r8, r8, r2, lsl 3 | r8 += (r2 << 3);
0x00073a26 ldrb.w r3, [r8, 0x2d] | r3 = *((r8 + 0x2d));
0x00073a2a orr r3, r3, 4 | r3 |= 4;
0x00073a2e strb.w r3, [r8, 0x2d] | *((r8 + 0x2d)) = r3;
| }
| label_54:
0x00073a32 movs r3, 0 | r3 = 0;
0x00073a34 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00073a38 movs r1, 0x31 | r1 = 0x31;
0x00073a3a mov r0, fp | r0 = fp;
0x00073a3c bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073a40 mov r2, r7 | r2 = r7;
0x00073a42 mov r1, r0 | r1 = r0;
0x00073a44 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073a48 mov r0, fp | r0 = fp;
0x00073a4a bl 0x266c8 | fcn_000266c8 (r0, r1, r2);
0x00073a4e ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x00073a52 cmp r3, 0 |
| if (r3 == 0) {
0x00073a54 beq.w 0x723bc | goto label_6;
| }
0x00073a58 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00073a5c movs r3, 0 | r3 = 0;
0x00073a5e movs r1, 0x13 | r1 = 0x13;
0x00073a60 mov r0, fp | r0 = fp;
0x00073a62 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073a66 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073a6a b.w 0x723bc | goto label_6;
0x00073a6e movs r3, 0 | r3 = 0;
0x00073a70 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00073a74 movs r1, 0x31 | r1 = 0x31;
0x00073a76 mov r0, fp | r0 = fp;
0x00073a78 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073a7c ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00073a80 mov r1, r0 | r1 = r0;
0x00073a82 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073a86 mov r0, fp | r0 = fp;
0x00073a88 bl 0x266c8 | fcn_000266c8 (r0, r1, r2);
0x00073a8c ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x00073a90 cmp r3, 0 |
| if (r3 == 0) {
0x00073a92 beq.w 0x723bc | goto label_6;
| }
0x00073a96 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00073a9a movs r3, 0 | r3 = 0;
0x00073a9c movs r1, 0x13 | r1 = 0x13;
0x00073a9e mov r0, fp | r0 = fp;
0x00073aa0 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00073aa4 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073aa8 b.w 0x723bc | goto label_6;
0x00073aac ldr.w r1, [fp, 0xf4] | r1 = *(arg_f4h);
0x00073ab0 str r1, [sp, 0x2c] | *(arg_2ch) = r1;
| if (r1 != 0) {
0x00073ab2 cbz r1, 0x73af2 |
0x00073ab4 ldr.w r8, [fp, 0xe4] | r8 = *(arg_e4h);
0x00073ab8 cmp.w r8, 0 |
| if (r8 == 0) {
0x00073abc beq 0x73af2 | goto label_223;
| }
0x00073abe ldr.w r7, [fp, 0xf8] | r7 = *(arg_f8h);
0x00073ac2 ldr.w r0, [fp] | r0 = *(fp);
0x00073ac6 adds r2, r7, 1 | r2 = r7 + 1;
0x00073ac8 asr.w r3, r7, 0x1f | r3 = r7 >> 0x1f;
0x00073acc adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00073ad0 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00073ad4 mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x00073ad6 cbz r0, 0x73ae8 |
0x00073ad8 mov r2, r7 | r2 = r7;
0x00073ada ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00073adc str r0, [sp, 0x30] | *(arg_30h) = r0;
0x00073ade blx 0x7dcc | fcn_00007dcc ();
0x00073ae2 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00073ae4 movs r2, 0 | r2 = 0;
0x00073ae6 strb r2, [r3, r7] | *((r3 + r7)) = r2;
| }
0x00073ae8 mov r2, r3 | r2 = r3;
0x00073aea mov r1, r8 | r1 = r8;
0x00073aec mov r0, fp | r0 = fp;
0x00073aee bl 0x258e4 | fcn_000258e4 (r0, r1, r2);
| }
| label_223:
0x00073af2 movs r3, 0 | r3 = 0;
0x00073af4 strd r3, r3, [fp, 0xf4] | __asm ("strd r3, r3, [fp, 0xf4]");
0x00073af8 b.w 0x723bc | goto label_6;
0x00073afc ldr r3, [r6, -0x2c] | r3 = *((r6 - 0x2c));
0x00073b00 movs r7, 0 | r7 = 0;
0x00073b02 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00073b06 sub.w r1, r6, 0x20 | r1 = r6 - 0x20;
0x00073b0a mov r0, fp | r0 = fp;
0x00073b0c str r3, [sp, 8] | *(arg_8h) = r3;
0x00073b0e movs r3, 1 | r3 = 1;
0x00073b10 strd r7, r3, [sp] | __asm ("strd r7, r3, [sp]");
0x00073b14 mov r3, r7 | r3 = r7;
0x00073b16 bl 0x88f94 | fcn_00088f94 (r0, r1, r2, r3, r4, r5, r6);
0x00073b1a ldr.w r8, [fp, 0xe4] | r8 = *(arg_e4h);
0x00073b1e cmp.w r8, 0 |
| if (r8 == 0) {
0x00073b22 beq.w 0x723bc | goto label_6;
| }
0x00073b26 ldr.w r3, [fp] | r3 = *(fp);
0x00073b2a adds r1, r6, 4 | r1 = r6 + 4;
0x00073b2c mov r0, r3 | r0 = r3;
0x00073b2e str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00073b30 bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x00073b34 mov r1, r8 | r1 = r8;
0x00073b36 mov r2, r0 | r2 = r0;
0x00073b38 mov r0, fp | r0 = fp;
0x00073b3a bl 0x258e4 | fcn_000258e4 (r0, r1, r2);
0x00073b3e mov r2, r7 | r2 = r7;
0x00073b40 mov r1, r8 | r1 = r8;
0x00073b42 mov r0, fp | r0 = fp;
0x00073b44 bl 0x258e4 | fcn_000258e4 (r0, r1, r2);
0x00073b48 ldr.w r1, [r8] | r1 = *(r8);
0x00073b4c ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00073b4e bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x00073b52 mov r1, r8 | r1 = r8;
0x00073b54 mov r2, r0 | r2 = r0;
0x00073b56 mov r0, fp | r0 = fp;
0x00073b58 bl 0x258e4 | fcn_000258e4 (r0, r1, r2);
0x00073b5c ldrd r3, r2, [r6, 4] | __asm ("ldrd r3, r2, [r6, 4]");
0x00073b60 ldr.w r0, [r8, 0x3c] | r0 = *((r8 + 0x3c));
0x00073b64 add r3, r2 | r3 += r2;
0x00073b66 ldr.w r2, [fp, 0xb4] | r2 = *((fp + 0xb4));
0x00073b6a subs r3, r3, r2 | r3 -= r2;
0x00073b6c str.w r3, [fp, 0xb8] | __asm ("str.w r3, [arg_b8h]");
0x00073b70 cmp r0, 0 |
| if (r0 == 0) {
0x00073b72 beq.w 0x723bc | goto label_6;
| }
0x00073b76 ldr.w r1, [r8, 0x48] | r1 = *((r8 + 0x48));
0x00073b7a cmp r1, 0 |
| if (r1 == 0) {
0x00073b7c beq.w 0x76aee | goto label_224;
| }
0x00073b80 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00073b82 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00073b84 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00073b86 cmp r1, r3 |
| if (r1 == r3) {
0x00073b88 beq 0x73b9c | goto label_132;
| }
0x00073b8a sub.w ip, r2, 4 |
0x00073b8e movs r3, 0x10 | r3 = 0x10;
| do {
0x00073b90 mov r7, r3 | r7 = r3;
0x00073b92 adds r3, 0x10 | r3 += 0x10;
0x00073b94 ldr.w r2, [ip, r3] | r2 = *((ip + r3));
0x00073b98 cmp r1, r2 |
0x00073b9a bne 0x73b90 |
| } while (r1 != r2);
| label_132:
0x00073b9c ldr.w r1, [fp] | r1 = *(fp);
0x00073ba0 ldr r3, [r0] | r3 = *(r0);
0x00073ba2 mov r0, fp | r0 = fp;
0x00073ba4 ldr.w r2, [r8] | r2 = *(r8);
0x00073ba8 ldr r1, [r1, 0x10] | r1 = *((r1 + 0x10));
0x00073baa ldr r1, [r1, r7] | r1 = *((r1 + r7));
0x00073bac str r1, [sp] | *(sp) = r1;
0x00073bae movs r1, 0x1d | r1 = 0x1d;
0x00073bb0 bl 0x25800 | fcn_00025800 (r0);
0x00073bb4 b.w 0x723bc | goto label_6;
0x00073bb8 adds r1, r6, 4 | r1 = r6 + 4;
0x00073bba mov r0, fp | r0 = fp;
0x00073bbc bl 0x786c4 | fcn_000786c4 (r0, r1);
0x00073bc0 b.w 0x723bc | goto label_6;
0x00073bc4 movs r1, 0 | r1 = 0;
0x00073bc6 mov r0, fp | r0 = fp;
0x00073bc8 bl 0x786c4 | fcn_000786c4 (r0, r1);
0x00073bcc b.w 0x723bc | goto label_6;
0x00073bd0 ldr.w r3, [fp] | r3 = *(fp);
0x00073bd4 ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x00073bd8 ldrb.w r1, [r3, 0x53] | r1 = *((r3 + 0x53));
0x00073bdc str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00073bde str r2, [sp, 0x48] | *(arg_48h) = r2;
| if (r1 == 0) {
0x00073be0 cbnz r1, 0x73c2e |
0x00073be2 adds r2, 8 | r2 += 8;
0x00073be4 mov r0, fp | r0 = fp;
0x00073be6 bl 0x89708 | r0 = fcn_00089708 (r0, r1, r2);
0x00073bea mov r7, r0 | r7 = r0;
0x00073bec str r0, [sp, 0x2c] | *(arg_2ch) = r0;
| if (r0 == 0) {
0x00073bee cbz r0, 0x73c2e | goto label_88;
| }
0x00073bf0 mov r1, r0 | r1 = r0;
0x00073bf2 mov r0, fp | r0 = fp;
0x00073bf4 bl 0x26344 | r0 = fcn_00026344 (r0, r1);
| if (r0 != 0) {
0x00073bf8 cbnz r0, 0x73c2e | goto label_88;
| }
0x00073bfa ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x00073bfc ldr r3, [r7, 0x38] | r3 = *((r7 + 0x38));
0x00073bfe str r2, [sp, 0x38] | *(arg_38h) = r2;
0x00073c00 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x00073c02 cmp r2, 0 |
| if (r2 == 0) {
0x00073c04 beq.w 0x76258 | goto label_225;
| }
0x00073c08 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00073c0a cmp r3, 0 |
| if (r3 == 0) {
0x00073c0c beq.w 0x76248 | goto label_226;
| }
0x00073c10 ldr.w r3, [pc, 0xa60] |
0x00073c14 add r3, pc | r3 = 0xe828c;
| label_86:
0x00073c16 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00073c18 mov r0, fp | r0 = fp;
0x00073c1a ldr.w r1, [pc, 0xa5c] |
0x00073c1e ldr r2, [r2] | r2 = *(r2);
0x00073c20 add r1, pc | r1 = 0xe829e;
0x00073c22 str r2, [sp] | *(sp) = r2;
0x00073c24 ldr.w r2, [pc, 0xa54] |
0x00073c28 add r2, pc | r2 = 0xe82a8;
0x00073c2a bl 0x25778 | fcn_00025778 (r0);
| }
| label_88:
0x00073c2e ldr r1, [sp, 0x48] | r1 = *(arg_48h);
0x00073c30 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x00073c32 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00073c36 b.w 0x723bc | goto label_6;
0x00073c3a ldr.w r3, [fp, 0xbc] | r3 = *(arg_bch);
0x00073c3e sub.w r1, r6, 8 | r1 = r6 - 8;
0x00073c42 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00073c46 mov r0, fp | r0 = fp;
0x00073c48 subs r3, r3, r2 | r3 -= r2;
0x00073c4a ldr.w r2, [fp, 0xc0] | r2 = *(arg_c0h);
0x00073c4e add r3, r2 | r3 += r2;
0x00073c50 str r3, [r6, -0x4] | *((r6 - 0x4)) = r3;
0x00073c54 bl 0x782dc | fcn_000782dc (r0, r1, r2, r3, r4);
0x00073c58 b.w 0x723bc | goto label_6;
0x00073c5c movs r3, 0 | r3 = 0;
0x00073c5e sub.w r2, r6, 0x20 | r2 = r6 - 0x20;
0x00073c62 str r3, [sp] | *(sp) = r3;
0x00073c64 sub.w r1, r6, 0x2c | r1 = r6 - 0x2c;
0x00073c68 sub.w r3, r6, 8 | r3 = r6 - 8;
0x00073c6c mov r0, fp | r0 = fp;
0x00073c6e bl 0xa3c8c | fcn_000a3c8c (r0, r1, r2, r3, r4, r5, r6);
0x00073c72 b.w 0x723bc | goto label_6;
0x00073c76 movs r3, 0 | r3 = 0;
0x00073c78 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00073c7c str r3, [sp] | *(sp) = r3;
0x00073c7e sub.w r1, r6, 0x20 | r1 = r6 - 0x20;
0x00073c82 adds r3, r6, 4 | r3 = r6 + 4;
0x00073c84 mov r0, fp | r0 = fp;
0x00073c86 bl 0xa3c8c | fcn_000a3c8c (r0, r1, r2, r3, r4, r5, r6);
0x00073c8a b.w 0x723bc | goto label_6;
0x00073c8e movs r3, 0 | r3 = 0;
0x00073c90 adds r2, r6, 4 | r2 = r6 + 4;
0x00073c92 sub.w r1, r6, 8 | r1 = r6 - 8;
0x00073c96 mov r0, fp | r0 = fp;
0x00073c98 str r3, [sp] | *(sp) = r3;
0x00073c9a bl 0xa3c8c | fcn_000a3c8c (r0, r1, r2, r3, r4, r5, r6);
0x00073c9e b.w 0x723bc | goto label_6;
0x00073ca2 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00073ca4 sub.w r1, r6, 8 | r1 = r6 - 8;
0x00073ca8 mov r0, fp | r0 = fp;
0x00073caa bl 0x67628 | fcn_00067628 (r0, r1, r2);
0x00073cae b.w 0x723bc | goto label_6;
0x00073cb2 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00073cb4 movs r1, 0 | r1 = 0;
0x00073cb6 mov r0, fp | r0 = fp;
0x00073cb8 bl 0x67628 | fcn_00067628 (r0, r1, r2);
0x00073cbc b.w 0x723bc | goto label_6;
0x00073cc0 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00073cc2 ldr.w r8, [fp] | r8 = *(fp);
0x00073cc6 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00073cca str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00073ccc ldrb.w r3, [r8, 0x53] | r3 = *((r8 + 0x53));
0x00073cd0 str r2, [sp, 0x34] | *(arg_34h) = r2;
0x00073cd2 cmp r3, 0 |
| if (r3 != 0) {
0x00073cd4 bne.w 0x73de4 | goto label_84;
| }
0x00073cd8 mov r0, fp | r0 = fp;
0x00073cda bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x00073cde mov r7, r0 | r7 = r0;
0x00073ce0 cmp r0, 0 |
| if (r0 != 0) {
0x00073ce2 bne 0x73de4 | goto label_84;
| }
0x00073ce4 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00073ce6 mov r0, r8 | r0 = r8;
0x00073ce8 ldrd r2, r1, [r3, 0xc] | __asm ("ldrd r2, r1, [r3, 0xc]");
0x00073cec str r2, [sp, 0x38] | *(arg_38h) = r2;
0x00073cee bl 0x1aa6c | fcn_0001aa6c (r0, r1, r2);
0x00073cf2 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x00073cf4 str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x00073cf6 cmp r0, 0 |
| if (r0 == 0) {
0x00073cf8 beq.w 0x76592 | goto label_227;
| }
0x00073cfc ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00073cfe ldrb.w r3, [r3, 0x37] | r3 = *((r3 + 0x37));
0x00073d02 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 != r3) {
0x00073d04 bne.w 0x764d4 | goto label_228;
| }
0x00073d08 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00073d0a ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x00073d0c ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00073d10 cmp r1, 0 |
| if (r1 == 0) {
0x00073d12 beq.w 0x76852 | goto label_229;
| }
0x00073d16 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00073d18 cmp r1, r2 |
| if (r1 == r2) {
0x00073d1a beq.w 0x7666e | goto label_230;
| }
0x00073d1e adds r3, 0x10 | r3 += 0x10;
| do {
0x00073d20 mov r0, r3 | r0 = r3;
0x00073d22 adds r7, 1 | r7++;
0x00073d24 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00073d26 adds r3, 0x10 | r3 += 0x10;
0x00073d28 lsl.w ip, r7, 4 |
0x00073d2c cmp r1, r2 |
0x00073d2e bne 0x73d20 |
| } while (r1 != r2);
0x00073d30 ldr r3, [r0] | r3 = *(r0);
0x00073d32 cmp r7, 1 |
0x00073d34 str.w ip, [sp, 0x3c] | __asm ("str.w ip, [arg_3ch]");
0x00073d38 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x00073d3a ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00073d3c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00073d3e str r3, [sp, 0x38] | *(arg_38h) = r3;
| if (r7 == 1) {
0x00073d40 beq.w 0x760dc | goto label_231;
| }
| label_109:
0x00073d44 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00073d46 movs r1, 9 | r1 = 9;
0x00073d48 ldr.w r2, [pc, 0x934] | r2 = *(0x00074680);
0x00073d4c mov r0, fp | r0 = fp;
0x00073d4e str r3, [sp] | *(sp) = r3;
0x00073d50 movs r3, 0 | r3 = 0;
0x00073d52 add r2, pc | r2 += pc;
0x00073d54 bl 0x25800 | fcn_00025800 (r0);
0x00073d58 movs r1, 0xa | r1 = 0xa;
0x00073d5a cmp r0, 0 |
| if (r0 == 0) {
0x00073d5c bne 0x73de4 |
| label_83:
0x00073d5e ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00073d60 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00073d62 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00073d64 ldr r3, [r3] | r3 = *(r3);
0x00073d66 ldr r2, [r2] | r2 = *(r2);
0x00073d68 str r0, [sp] | *(sp) = r0;
0x00073d6a mov r0, fp | r0 = fp;
0x00073d6c bl 0x25800 | r0 = fcn_00025800 (r0);
0x00073d70 cmp r0, 0 |
| if (r0 != 0) {
0x00073d72 bne 0x73de4 | goto label_84;
| }
0x00073d74 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00073d78 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x00073d7a cmp r3, 0 |
| if (r3 == 0) {
0x00073d7c beq.w 0x76654 | goto label_232;
| }
| label_108:
0x00073d80 mov r2, r7 | r2 = r7;
0x00073d82 movs r1, 1 | r1 = 1;
0x00073d84 mov r0, fp | r0 = fp;
0x00073d86 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x00073d8a ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00073d8e mov r0, fp | r0 = fp;
0x00073d90 ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x00073d92 ldr.w r1, [pc, 0x8f0] | r1 = *(0x00074684);
0x00073d96 ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x00073d98 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00073d9a add r1, pc | r1 += pc;
0x00073d9c ldr r3, [r3] | r3 = *(r3);
0x00073d9e bl 0x77c00 | fcn_00077c00 (r0);
0x00073da2 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00073da4 mov r1, r7 | r1 = r7;
0x00073da6 ldr.w r2, [pc, 0x8e0] | r2 = *(0x00074688);
0x00073daa mov r0, fp | r0 = fp;
0x00073dac ldr r3, [r3] | r3 = *(r3);
0x00073dae add r2, pc | r2 += pc;
0x00073db0 bl 0x77cc4 | fcn_00077cc4 (r0, r1, r2, r3);
0x00073db4 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
0x00073db8 mov r2, r7 | r2 = r7;
0x00073dba ldr.w r0, [fp] | r0 = *(fp);
0x00073dbe bl 0x2b6f8 | fcn_0002b6f8 (r0, r1, r2);
0x00073dc2 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00073dc4 mov r2, r7 | r2 = r7;
0x00073dc6 mov r0, fp | r0 = fp;
0x00073dc8 ldr r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x00073dca bl 0x77f00 | fcn_00077f00 (r0, r1, r2);
0x00073dce ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00073dd0 movs r3, 0 | r3 = 0;
0x00073dd2 str r3, [sp, 8] | *(arg_8h) = r3;
0x00073dd4 mov r2, r7 | r2 = r7;
0x00073dd6 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00073dd8 ldr r1, [r1] | r1 = *(r1);
0x00073dda strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x00073dde movs r1, 0x94 | r1 = 0x94;
0x00073de0 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
| }
| label_84:
0x00073de4 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00073de6 mov r0, r8 | r0 = r8;
0x00073de8 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00073dec b.w 0x723bc | goto label_6;
0x00073df0 ldr r3, [r6, -0x38] | r3 = *((r6 - 0x38));
0x00073df4 movs r1, 0 | r1 = 0;
0x00073df6 mov r0, fp | r0 = fp;
0x00073df8 ldr.w r7, [fp] | r7 = *(fp);
0x00073dfc add.w r2, r3, 8 | r2 = r3 + 8;
0x00073e00 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00073e02 bl 0x89708 | fcn_00089708 (r0, r1, r2);
0x00073e06 str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x00073e08 cmp r0, 0 |
| if (r0 == 0) {
0x00073e0a beq.w 0x75558 | goto label_233;
| }
0x00073e0e ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00073e10 mov r0, fp | r0 = fp;
0x00073e12 bl 0x26344 | r0 = fcn_00026344 (r0, r1);
0x00073e16 cmp r0, 0 |
| if (r0 == 0) {
0x00073e18 beq.w 0x754f6 | goto label_234;
| }
0x00073e1c ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00073e1e mov r0, r7 | r0 = r7;
0x00073e20 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00073e24 b.w 0x723bc | goto label_6;
0x00073e28 ldrb.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x00073e2c ldr.w r7, [fp] | r7 = *(fp);
0x00073e30 adds r3, 1 | r3++;
0x00073e32 strb.w r3, [fp, 0x18] | *(arg_18h) = r3;
0x00073e36 movs r3, 0 | r3 = 0;
0x00073e38 strh.w r3, [r7, 0x11c] | *((r7 + 0x11c)) = r3;
0x00073e3c ldr.w r3, [r7, 0x118] | r3 = *((r7 + 0x118));
0x00073e40 ldrb.w r1, [r7, 0x53] | r1 = *((r7 + 0x53));
0x00073e44 adds r3, 1 | r3++;
0x00073e46 str.w r3, [r7, 0x118] | __asm ("str.w r3, aav.0x000000ff");
0x00073e4a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00073e4c str r3, [sp, 0x30] | *(arg_30h) = r3;
| if (r1 == 0) {
0x00073e4e cbnz r1, 0x73e7c |
0x00073e50 add.w r2, r3, 8 | r2 = r3 + 8;
0x00073e54 mov r0, fp | r0 = fp;
0x00073e56 bl 0x89708 | fcn_00089708 (r0, r1, r2);
0x00073e5a str r0, [sp, 0x2c] | *(arg_2ch) = r0;
| if (r0 == 0) {
0x00073e5c cbz r0, 0x73e7c | goto label_64;
| }
0x00073e5e ldr r3, [r0, 0x38] | r3 = *((r0 + 0x38));
0x00073e60 cmp r3, 0 |
| if (r3 != 0) {
0x00073e62 bne.w 0x75fd0 | goto label_235;
| }
0x00073e66 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00073e68 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00073e6a cmp r3, 0 |
| if (r3 == 0) {
0x00073e6c beq.w 0x75aac | goto label_236;
| }
0x00073e70 ldr.w r1, [pc, 0x818] | r1 = *(0x0007468c);
0x00073e74 mov r0, fp | r0 = fp;
0x00073e76 add r1, pc | r1 += pc;
0x00073e78 bl 0x25778 | fcn_00025778 (r0);
| }
| label_64:
0x00073e7c ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00073e7e mov r0, r7 | r0 = r7;
0x00073e80 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00073e84 b.w 0x723bc | goto label_6;
0x00073e88 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00073e8a movs r1, 0 | r1 = 0;
0x00073e8c ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00073e90 mov r0, fp | r0 = fp;
0x00073e92 str r2, [sp] | *(sp) = r2;
0x00073e94 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00073e98 bl 0x262b8 | fcn_000262b8 (r0, r1, r2, r3, r4);
0x00073e9c str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00073ea0 b.w 0x723bc | goto label_6;
0x00073ea4 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00073ea6 mov r0, fp | r0 = fp;
0x00073ea8 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00073eac ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x00073eb0 str r2, [sp] | *(sp) = r2;
0x00073eb2 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00073eb6 bl 0x262b8 | fcn_000262b8 (r0, r1, r2, r3, r4);
0x00073eba str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073ebe b.w 0x723bc | goto label_6;
0x00073ec2 movs r3, 0x41 | r3 = 0x41;
0x00073ec4 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00073ec8 b.w 0x723bc | goto label_6;
0x00073ecc ldrh r3, [r6, 2] | r3 = *((r6 + 2));
0x00073ece str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00073ed0 b.w 0x723bc | goto label_6;
0x00073ed4 adds r2, r6, 4 | r2 = r6 + 4;
0x00073ed6 movs r1, 0 | r1 = 0;
0x00073ed8 mov r0, fp | r0 = fp;
0x00073eda bl 0x1ff00 | fcn_0001ff00 (r0, r1, r2);
0x00073ede str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00073ee0 b.w 0x723bc | goto label_6;
0x00073ee4 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00073ee8 adds r2, r6, 4 | r2 = r6 + 4;
0x00073eea mov r0, fp | r0 = fp;
0x00073eec bl 0x1ff00 | fcn_0001ff00 (r0, r1, r2);
0x00073ef0 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00073ef4 b.w 0x723bc | goto label_6;
0x00073ef8 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00073efc str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x00073f00 b.w 0x723bc | goto label_6;
0x00073f04 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00073f06 mov r0, fp | r0 = fp;
0x00073f08 bl 0x26118 | fcn_00026118 (r0, r1);
0x00073f0c b.w 0x723bc | goto label_6;
0x00073f10 movs r2, 0 | r2 = 0;
0x00073f12 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00073f16 ldr.w r0, [fp] | r0 = *(fp);
0x00073f1a str r2, [sp, 4] | *(arg_4h) = r2;
0x00073f1c ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00073f20 str r1, [sp] | *(sp) = r1;
0x00073f22 mov r1, r2 | r1 = r2;
0x00073f24 bl 0x1c490 | fcn_0001c490 (r0, r1, r2, r3, r4, r5);
0x00073f28 str r0, [r6, -0x50] | *((r6 - 0x50)) = r0;
0x00073f2c b.w 0x723bc | goto label_6;
0x00073f30 movs r3, 0 | r3 = 0;
0x00073f32 ldr.w r0, [fp] | r0 = *(fp);
0x00073f36 mov r2, r3 | r2 = r3;
0x00073f38 mov r1, r3 | r1 = r3;
0x00073f3a strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x00073f3e bl 0x1c490 | fcn_0001c490 (r0, r1, r2, r3, r4, r5);
0x00073f42 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073f46 b.w 0x723bc | goto label_6;
0x00073f4a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00073f4c ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x00073f50 ldr r1, [r6, -0x38] | r1 = *((r6 - 0x38));
0x00073f54 ldr.w r0, [fp] | r0 = *(fp);
0x00073f58 str r3, [sp, 4] | *(arg_4h) = r3;
0x00073f5a movs r3, 0 | r3 = 0;
0x00073f5c str r3, [sp] | *(sp) = r3;
0x00073f5e bl 0x1c490 | fcn_0001c490 (r0, r1, r2, r3, r4, r5);
0x00073f62 str r0, [r6, -0x5c] | *((r6 - 0x5c)) = r0;
0x00073f66 b.w 0x723bc | goto label_6;
0x00073f6a ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x00073f6c ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00073f70 ldr r2, [r6, -0x44] | r2 = *((r6 - 0x44));
0x00073f74 ldr r1, [r6, -0x5c] | r1 = *((r6 - 0x5c));
0x00073f78 ldr.w r0, [fp] | r0 = *(fp);
0x00073f7c str r7, [sp, 4] | *(arg_4h) = r7;
0x00073f7e ldr r7, [r6, -0x8] | r7 = *((r6 - 0x8));
0x00073f82 str r7, [sp] | *(sp) = r7;
0x00073f84 bl 0x1c490 | fcn_0001c490 (r0, r1, r2, r3, r4, r5);
0x00073f88 str r0, [r6, -0x80] | *((r6 - 0x80)) = r0;
0x00073f8c b.w 0x723bc | goto label_6;
0x00073f90 movs r3, 0 | r3 = 0;
0x00073f92 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00073f94 mov r0, fp | r0 = fp;
0x00073f96 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00073f9a bl 0x26118 | fcn_00026118 (r0, r1);
0x00073f9e b.w 0x723bc | goto label_6;
0x00073fa2 movs r3, 0 | r3 = 0;
0x00073fa4 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00073fa6 b.w 0x723bc | goto label_6;
0x00073faa movs r2, 0 | r2 = 0;
0x00073fac ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x00073fb0 ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x00073fb4 str r2, [sp, 4] | *(arg_4h) = r2;
0x00073fb6 ldr r0, [r6, -0x44] | r0 = *((r6 - 0x44));
0x00073fba str r0, [sp] | *(sp) = r0;
0x00073fbc mov r0, fp | r0 = fp;
0x00073fbe bl 0x8df38 | fcn_0008df38 (r0, r1, r2, r3, r4, r5, r6);
0x00073fc2 b.w 0x723bc | goto label_6;
0x00073fc6 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00073fc8 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00073fcc ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00073fd0 ldr r1, [r6, -0x20] | r1 = *((r6 - 0x20));
0x00073fd4 str r0, [sp, 4] | *(arg_4h) = r0;
0x00073fd6 ldr r0, [r6, -0x38] | r0 = *((r6 - 0x38));
0x00073fda str r0, [sp] | *(sp) = r0;
0x00073fdc mov r0, fp | r0 = fp;
0x00073fde bl 0x8df38 | fcn_0008df38 (r0, r1, r2, r3, r4, r5, r6);
0x00073fe2 b.w 0x723bc | goto label_6;
0x00073fe6 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00073fe8 movs r1, 0 | r1 = 0;
0x00073fea ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x00073fee mov r0, fp | r0 = fp;
0x00073ff0 bl 0x32034 | fcn_00032034 (r0, r1, r2, r3, r4);
0x00073ff4 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00073ff8 b.w 0x723bc | goto label_6;
0x00073ffc ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00073ffe ldr.w r0, [fp] | r0 = *(fp);
0x00074002 bl 0x1afb0 | r0 = fcn_0001afb0 (r0, r1);
0x00074006 mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x00074008 cbz r0, 0x74018 |
0x0007400a mov r1, r0 | r1 = r0;
0x0007400c movs r3, 1 | r3 = 1;
0x0007400e sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00074012 mov r0, fp | r0 = fp;
0x00074014 bl 0x1bf88 | fcn_0001bf88 (r0, r1, r2, r3, r4);
| }
0x00074018 str r7, [r6, -0x14] | *((r6 - 0x14)) = r7;
0x0007401c b.w 0x723bc | goto label_6;
0x00074020 movs r3, 0x21 | r3 = 0x21;
0x00074022 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00074024 b.w 0x723bc | goto label_6;
0x00074028 ldr.w r0, [fp] | r0 = *(fp);
0x0007402c movs r3, 1 | r3 = 1;
0x0007402e adds r2, r6, 4 | r2 = r6 + 4;
0x00074030 movs r1, 0x9a | r1 = 0x9a;
0x00074032 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x00074036 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00074038 b.w 0x723bc | goto label_6;
0x0007403c movs r3, 1 | r3 = 1;
0x0007403e sub.w r2, r6, 0x2c | r2 = r6 - 0x2c;
0x00074042 movs r1, 0x3b | r1 = 0x3b;
0x00074044 ldr.w r0, [fp] | r0 = *(fp);
0x00074048 sub.w r8, r6, 0x14 | r8 = r6 - 0x14;
0x0007404c bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x00074050 movs r3, 1 | r3 = 1;
0x00074052 mov r2, r8 | r2 = r8;
0x00074054 movs r1, 0x3b | r1 = 0x3b;
0x00074056 str r0, [sp, 0x30] | *(arg_30h) = r0;
0x00074058 ldr.w r0, [fp] | r0 = *(fp);
0x0007405c bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x00074060 adds r3, r6, 4 | r3 = r6 + 4;
0x00074062 movs r1, 0x3b | r1 = 0x3b;
0x00074064 mov r2, r3 | r2 = r3;
0x00074066 str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x00074068 movs r3, 1 | r3 = 1;
0x0007406a ldr.w r0, [fp] | r0 = *(fp);
0x0007406e str r2, [sp, 0x38] | *(arg_38h) = r2;
0x00074070 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x00074074 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00074076 mov r3, r0 | r3 = r0;
0x00074078 mov r7, r0 | r7 = r0;
0x0007407a movs r1, 0x8c | r1 = 0x8c;
0x0007407c mov r0, fp | r0 = fp;
0x0007407e bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00074082 ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00074086 str r0, [sp, 0x34] | *(arg_34h) = r0;
0x00074088 cmp r3, 1 |
| if (r3 >= 1) {
0x0007408a bls 0x740ac |
0x0007408c cmp r3, 3 |
| if (r3 == 3) {
0x0007408e beq 0x740ac | goto label_237;
| }
0x00074090 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x00074092 mov r1, r7 | r1 = r7;
0x00074094 mov r0, fp | r0 = fp;
0x00074096 bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
0x0007409a ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x0007409e cmp r3, 3 |
| if (r3 == 3) {
0x000740a0 beq 0x740ac | goto label_237;
| }
0x000740a2 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x000740a4 mov r2, r8 | r2 = r8;
0x000740a6 mov r0, fp | r0 = fp;
0x000740a8 bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
| }
| label_237:
0x000740ac ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [arg_30h]");
0x000740b0 movs r1, 0x8c | r1 = 0x8c;
0x000740b2 mov r0, fp | r0 = fp;
0x000740b4 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x000740b8 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x000740bc b.w 0x723bc | goto label_6;
0x000740c0 sub.w r8, r6, 0x14 | r8 = r6 - 0x14;
0x000740c4 movs r3, 1 | r3 = 1;
0x000740c6 mov r2, r8 | r2 = r8;
0x000740c8 movs r1, 0x3b | r1 = 0x3b;
0x000740ca ldr.w r0, [fp] | r0 = *(fp);
0x000740ce bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x000740d2 adds r2, r6, 4 | r2 = r6 + 4;
0x000740d4 movs r3, 1 | r3 = 1;
0x000740d6 mov r7, r0 | r7 = r0;
0x000740d8 movs r1, 0x3b | r1 = 0x3b;
0x000740da ldr.w r0, [fp] | r0 = *(fp);
0x000740de str r2, [sp, 0x30] | *(arg_30h) = r2;
0x000740e0 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x000740e4 ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x000740e8 str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x000740ea cmp r3, 1 |
| if (r3 >= 1) {
0x000740ec bls 0x7410e |
0x000740ee cmp r3, 3 |
| if (r3 == 3) {
0x000740f0 beq 0x7410e | goto label_238;
| }
0x000740f2 mov r1, r0 | r1 = r0;
0x000740f4 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000740f6 mov r0, fp | r0 = fp;
0x000740f8 bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
0x000740fc ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00074100 cmp r3, 3 |
| if (r3 == 3) {
0x00074102 beq 0x7410e | goto label_238;
| }
0x00074104 mov r2, r8 | r2 = r8;
0x00074106 mov r1, r7 | r1 = r7;
0x00074108 mov r0, fp | r0 = fp;
0x0007410a bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
| }
| label_238:
0x0007410e ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00074110 mov r2, r7 | r2 = r7;
0x00074112 movs r1, 0x8c | r1 = 0x8c;
0x00074114 mov r0, fp | r0 = fp;
0x00074116 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007411a str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x0007411e b.w 0x723bc | goto label_6;
0x00074122 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00074126 sub.w r2, r6, 0x2c | r2 = r6 - 0x2c;
0x0007412a ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x0007412e mov r0, fp | r0 = fp;
0x00074130 bl 0x2622c | fcn_0002622c (r0, r1, r2, r3);
0x00074134 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00074138 b.w 0x723bc | goto label_6;
0x0007413c movs r3, 1 | r3 = 1;
0x0007413e movs r1, 0x24 | r1 = 0x24;
0x00074140 ldr.w r0, [fp] | r0 = *(fp);
0x00074144 sub.w r2, r6, 8 | r2 = r6 - 8;
0x00074148 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x0007414c ldr.w r3, [fp] | r3 = *(fp);
0x00074150 ldr r1, [r6, -0x20] | r1 = *((r6 - 0x20));
0x00074154 str r0, [r6, -0x38] | *((r6 - 0x38)) = r0;
0x00074158 cmp r0, 0 |
| if (r0 == 0) {
0x0007415a beq.w 0x756d0 | goto label_239;
| }
| if (r1 != 0) {
0x0007415e cbz r1, 0x74174 |
0x00074160 str r1, [r0, 0xc] | *((r0 + 0xc)) = r1;
0x00074162 mov.w r3, 0x104 | r3 = 0x104;
0x00074166 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00074168 movt r3, 0x20 | r3 = (r3 & 0xFFFF) | 0x200000;
0x0007416c ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x0007416e ands r3, r1 | r3 &= r1;
0x00074170 orrs r2, r3 | r2 |= r3;
0x00074172 str r2, [r0, 4] | *((r0 + 4)) = r2;
| }
0x00074174 bl 0x136e8 | fcn_000136e8 (r0);
0x00074178 b.w 0x723bc | goto label_6;
0x0007417c ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0007417e ldr r7, [r6, -0x14] | r7 = *((r6 - 0x14));
0x00074182 cmp r3, 0 |
| if (r3 != 0) {
0x00074184 bne.w 0x75610 | goto label_240;
| }
| label_35:
0x00074188 str r7, [r6, -0x14] | *((r6 - 0x14)) = r7;
0x0007418c b.w 0x723bc | goto label_6;
0x00074190 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00074192 ldrb r2, [r3] | r2 = *(r3);
0x00074194 cmp r2, 0x23 |
| if (r2 != 0x23) {
0x00074196 bne.w 0x7520a | goto label_241;
| }
0x0007419a ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0007419c ldr.w r3, [pc, 0x4f0] |
0x000741a0 add r3, pc | r3 = 0xe8834;
0x000741a2 add r3, r2 | r3 += r2;
0x000741a4 ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x000741a8 lsls r7, r3, 0x1d | r7 = r3 << 0x1d;
| if (r7 >= r3) {
0x000741aa bpl.w 0x7520a | goto label_241;
| }
0x000741ae adds r2, r6, 4 | r2 = r6 + 4;
0x000741b0 add r3, sp, 0x78 | r3 += arg_78h;
0x000741b2 ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x000741b6 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x000741ba ldrb.w r7, [fp, 0x12] | r7 = *(arg_12h);
0x000741be cmp r7, 0 |
| if (r7 != 0) {
0x000741c0 bne.w 0x75e94 | goto label_242;
| }
0x000741c4 ldr.w r1, [pc, 0x4cc] |
0x000741c8 mov r2, r3 | r2 = r3;
0x000741ca mov r0, fp | r0 = fp;
0x000741cc add r1, pc | r1 = 0xe8864;
0x000741ce bl 0x25778 | fcn_00025778 (r0);
0x000741d2 str r7, [r6, 4] | *((r6 + 4)) = r7;
0x000741d4 b.w 0x723bc | goto label_6;
0x000741d8 adds r2, r6, 4 | r2 = r6 + 4;
0x000741da sub.w r3, r6, 0x14 | r3 = r6 - 0x14;
0x000741de ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x000741e2 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x000741e6 b.w 0x723bc | goto label_6;
0x000741ea adds r3, r6, 4 | r3 = r6 + 4;
0x000741ec ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x000741f0 orr r3, r1, 0x80000000 | r3 = r1 | 0x80000000;
0x000741f4 stmdb r6, {r0, r1} | __asm ("stmdb r6, {r0, r1}");
0x000741f8 str r3, [r6, -0x4] | *((r6 - 0x4)) = r3;
0x000741fc b.w 0x723bc | goto label_6;
0x00074200 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00074204 sub.w r2, r6, 0x38 | r2 = r6 - 0x38;
0x00074208 ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x0007420c mov r0, fp | r0 = fp;
0x0007420e bl 0x2622c | fcn_0002622c (r0, r1, r2, r3);
0x00074212 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00074214 mov r7, r0 | r7 = r0;
0x00074216 cmp r0, 0 |
| if (r0 == 0) {
0x00074218 beq.w 0x75956 | goto label_243;
| }
0x0007421c ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0007421e str r1, [r0, 0x2c] | *((r0 + 0x2c)) = r1;
0x00074220 orr r2, r3, 0x1000000 | r2 = r3 | 0x1000000;
0x00074224 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00074226 str r0, [r1, 0x48] | *((r1 + 0x48)) = r0;
0x00074228 lsls r0, r3, 0x1e | r0 = r3 << 0x1e;
| if (r0 < r3) {
0x0007422a bpl 0x7423e |
0x0007422c ldrb r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0007422e cmp r3, 0xa5 |
| if (r3 == 0xa5) {
0x00074230 beq 0x7423e | goto label_57;
| }
0x00074232 ldr.w r1, [pc, 0x464] |
0x00074236 mov r0, fp | r0 = fp;
0x00074238 add r1, pc | r1 = 0xe88d6;
0x0007423a bl 0x25778 | fcn_00025778 (r0);
| }
| label_57:
0x0007423e str r7, [r6, -0x38] | *((r6 - 0x38)) = r7;
0x00074242 b.w 0x723bc | goto label_6;
0x00074246 movs r3, 0 | r3 = 0;
0x00074248 sub.w r2, r6, 0x20 | r2 = r6 - 0x20;
0x0007424c mov r1, r3 | r1 = r3;
0x0007424e mov r0, fp | r0 = fp;
0x00074250 bl 0x2622c | fcn_0002622c (r0, r1, r2, r3);
0x00074254 str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00074258 b.w 0x723bc | goto label_6;
0x0007425c ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0007425e mov r0, fp | r0 = fp;
0x00074260 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00074264 bl 0x29fc8 | fcn_00029fc8 (r0, r1, r2, r3);
0x00074268 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x0007426c b.w 0x723bc | goto label_6;
0x00074270 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00074272 movs r1, 0 | r1 = 0;
0x00074274 mov r0, fp | r0 = fp;
0x00074276 bl 0x29fc8 | fcn_00029fc8 (r0, r1, r2, r3);
0x0007427a str r0, [r6, 4] | *((r6 + 4)) = r0;
0x0007427c b.w 0x723bc | goto label_6;
0x00074280 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00074284 ldr.w r7, [fp] | r7 = *(fp);
0x00074288 ldr r8, [r6, -0x2c] | r8 = *((r6 - 0x2c));
0x0007428c str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x0007428e ldrb r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x00074292 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00074294 cmp r7, 0 |
| if (r7 == 0) {
0x00074296 beq.w 0x7531a | goto label_244;
| }
0x0007429a movs r3, 0 | r3 = 0;
0x0007429c mov r0, r7 | r0 = r7;
0x0007429e movs r2, 0x18 | r2 = 0x18;
0x000742a0 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x000742a4 mov r3, r0 | r3 = r0;
| if (r3 != 0) {
| label_21:
0x000742a6 cbz r3, 0x742b6 |
0x000742a8 movs r2, 0 | r2 = 0;
0x000742aa str r2, [r3] | *(r3) = r2;
0x000742ac str r2, [r3, 4] | *((r3 + 4)) = r2;
0x000742ae str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000742b0 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x000742b2 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x000742b4 str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
| }
0x000742b6 ldrb.w r2, [r7, 0x53] | r2 = *((r7 + 0x53));
0x000742ba cmp r2, 0 |
| if (r2 == 0) {
0x000742bc beq.w 0x7563c | goto label_245;
| }
0x000742c0 cmp.w r8, 0 |
| if (r8 != 0) {
0x000742c4 beq 0x742d2 |
0x000742c6 mov r1, r8 | r1 = r8;
0x000742c8 mov r0, r7 | r0 = r7;
0x000742ca str r3, [sp, 0x30] | *(arg_30h) = r3;
0x000742cc bl 0x18c5c | fcn_00018c5c (r0, r1);
0x000742d0 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
| }
0x000742d2 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
| if (r1 != 0) {
0x000742d4 cbz r1, 0x742e2 |
0x000742d6 mov r0, r7 | r0 = r7;
0x000742d8 movs r2, 1 | r2 = 1;
0x000742da str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000742dc bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x000742e0 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
| }
| label_37:
0x000742e2 str r3, [r6, -0x38] | *((r6 - 0x38)) = r3;
0x000742e6 b.w 0x723bc | goto label_6;
0x000742ea movs r3, 2 | r3 = 2;
0x000742ec strb r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x000742f0 b.w 0x723bc | goto label_6;
0x000742f4 ldr r2, [r6, -0x38] | r2 = *((r6 - 0x38));
0x000742f8 ldr r3, [r6, -0x74] | r3 = *((r6 - 0x74));
0x000742fc ldr.w r7, [fp] | r7 = *(fp);
0x00074300 str r2, [sp, 0x38] | *(arg_38h) = r2;
0x00074302 ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00074306 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
0x00074308 str r2, [sp, 0x50] | *(arg_50h) = r2;
0x0007430a ldr r2, [r6, -0x28] | r2 = *((r6 - 0x28));
0x0007430e str r2, [sp, 0x34] | *(arg_34h) = r2;
0x00074310 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00074314 str r2, [sp, 0x2c] | *(arg_2ch) = r2;
0x00074316 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00074318 str r2, [sp, 0x30] | *(arg_30h) = r2;
0x0007431a ldr r2, [r6, -0x5c] | r2 = *((r6 - 0x5c));
0x0007431e str r2, [sp, 0x54] | *(arg_54h) = r2;
0x00074320 sub.w r2, r6, 0x50 | r2 = r6 - 0x50;
0x00074324 str r2, [sp, 0x48] | *(arg_48h) = r2;
0x00074326 cmp r3, 0 |
| if (r3 == 0) {
0x00074328 beq.w 0x7565c | goto label_246;
| }
0x0007432c ldr r3, [r6, -0x40] | r3 = *((r6 - 0x40));
0x00074330 cmp r3, 0 |
| if (r3 != 0) {
0x00074332 bne.w 0x75a52 | goto label_247;
| }
0x00074336 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00074338 str r3, [sp, 0x70] | *(arg_70h) = r3;
0x0007433a movs r3, 1 | r3 = 1;
0x0007433c str r3, [sp, 0x3c] | *(arg_3ch) = r3;
| label_38:
0x0007433e ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00074340 cmp r3, 0 |
| if (r3 != 0) {
0x00074342 beq.w 0x744b2 |
0x00074346 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x0007434a cmp r3, 0 |
| if (r3 != 0) {
0x0007434c bne.w 0x744b2 | goto label_39;
| }
0x00074350 ldrb.w r3, [r7, 0xa9] | r3 = *((r7 + 0xa9));
0x00074354 ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x00074356 cmp r3, 0 |
0x00074358 it ne |
| if (r3 != 0) {
0x0007435a cmpne r2, 1 | __asm ("cmpne r2, 1");
| }
| if (r3 != 0) {
0x0007435c bne.w 0x75a8e | goto label_248;
| }
| label_62:
0x00074360 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00074362 mov r0, fp | r0 = fp;
0x00074364 bl 0x89738 | fcn_00089738 (r0, r1);
0x00074368 ldrb.w r2, [r7, 0xa9] | r2 = *((r7 + 0xa9));
| if (r2 == 0) {
0x0007436c cbnz r2, 0x74392 |
0x0007436e ldr r2, [r6, -0x40] | r2 = *((r6 - 0x40));
0x00074372 cmp r0, 0 |
0x00074374 clz r2, r2 | r2 &= r2;
0x00074378 lsr.w r2, r2, 5 | r2 >>= 5;
0x0007437c it eq |
| if (r0 != 0) {
0x0007437e moveq r2, 0 | r2 = 0;
| }
| if (r2 == 0) {
0x00074380 cbz r2, 0x74392 | goto label_249;
| }
0x00074382 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00074384 ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
0x00074386 ldr r2, [r0, 0x48] | r2 = *((r0 + 0x48));
0x00074388 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0007438a cmp r2, r3 |
0x0007438c it eq |
| if (r2 != r3) {
0x0007438e moveq r1, 1 | r1 = 1;
| }
0x00074390 str r1, [sp, 0x3c] | *(arg_3ch) = r1;
| }
| label_249:
0x00074392 ldrb.w r1, [r7, 0x53] | r1 = *((r7 + 0x53));
0x00074396 cmp r1, 0 |
| if (r1 != 0) {
0x00074398 bne.w 0x744b2 | goto label_39;
| }
0x0007439c ldr.w r3, [fp] | r3 = *(fp);
0x000743a0 ldr r2, [pc, 0x2f8] |
0x000743a2 ldr.w r8, [pc, 0x2fc] |
0x000743a6 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x000743a8 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x000743aa add r2, pc | r2 = 0xe8a4a;
0x000743ac ldr.w lr, [pc, 0x2f4] |
0x000743b0 add r8, pc | r8 = 0xe8a56;
0x000743b2 str.w fp, [sp, 0x78] | __asm ("str.w fp, [arg_78h]");
0x000743b6 lsls r3, r3, 4 | r3 <<= 4;
0x000743b8 add lr, pc | lr += pc;
0x000743ba add.w ip, r0, r3 |
0x000743be str r3, [sp, 0x58] | *(arg_58h) = r3;
0x000743c0 ldr r0, [r0, r3] | r0 = *((r0 + r3));
0x000743c2 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x000743c4 str r0, [sp, 0xa0] | *(arg_a0h) = r0;
0x000743c6 ldr.w r0, [ip, 0xc] | r0 = *((ip + 0xc));
0x000743ca str r3, [sp, 0xa8] | *(arg_a8h) = r3;
0x000743cc ldr r3, [pc, 0x2d8] |
0x000743ce str r2, [sp, 0x80] | *(arg_80h) = r2;
0x000743d0 movs r2, 0x4c | r2 = 0x4c;
0x000743d2 str r0, [sp, 0x98] | *(arg_98h) = r0;
0x000743d4 add r3, pc | r3 = 0xe8a80;
0x000743d6 str r1, [sp, 0x8c] | *(arg_8ch) = r1;
0x000743d8 str r3, [sp, 0x88] | *(arg_88h) = r3;
0x000743da ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x000743dc strh.w r1, [sp, 0x90] | *(arg_90h) = r1;
0x000743e0 str.w lr, [sp, 0x84] | __asm ("str.w lr, [arg_84h]");
0x000743e4 sub.w r3, r3, 1 | r3--;
0x000743e8 str.w r8, [sp, 0xa4] | __asm ("str.w r8, [arg_a4h]");
0x000743ec clz r3, r3 | r3 &= r3;
0x000743f0 str.w fp, [sp, 0x7c] | __asm ("str.w fp, [arg_7ch]");
0x000743f4 lsrs r3, r3, 5 | r3 >>= 5;
0x000743f6 strb.w r3, [sp, 0x9c] | *(arg_9ch) = r3;
0x000743fa add r3, sp, 0x78 | r3 += arg_78h;
0x000743fc str r3, [sp, 0x94] | *(arg_94h) = r3;
0x000743fe add r3, sp, 0xb0 | r3 += arg_b0h;
0x00074400 mov r0, r3 | r0 = r3;
0x00074402 blx 0x8264 | fcn_00008264 ();
0x00074406 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00074408 mov r1, r0 | r1 = r0;
0x0007440a add r0, sp, 0x7c | r0 += arg_7ch;
0x0007440c str r3, [sp, 0xd0] | *(arg_d0h) = r3;
0x0007440e bl 0x30ca4 | r0 = fcn_00030ca4 (r0, r1, r2, r3, r4);
0x00074412 cmp r0, 0 |
| if (r0 != 0) {
0x00074414 bne 0x744b2 | goto label_39;
| }
0x00074416 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00074418 mov r0, fp | r0 = fp;
0x0007441a bl 0x89738 | fcn_00089738 (r0, r1);
0x0007441e str r0, [sp, 0x40] | *(arg_40h) = r0;
0x00074420 cmp r0, 0 |
| if (r0 == 0) {
0x00074422 beq.w 0x7667e | goto label_250;
| }
0x00074426 ldr r3, [r0, 0x38] | r3 = *((r0 + 0x38));
0x00074428 cmp r3, 0 |
| if (r3 != 0) {
0x0007442a bne.w 0x766f8 | goto label_251;
| }
0x0007442e ldr r1, [sp, 0x70] | r1 = *(arg_70h);
0x00074430 mov r0, r7 | r0 = r7;
0x00074432 bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x00074436 mov r1, r0 | r1 = r0;
0x00074438 cmp r0, 0 |
| if (r0 == 0) {
0x0007443a beq 0x744b2 | goto label_39;
| }
0x0007443c ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0007443e mov r2, r8 | r2 = r8;
0x00074440 str r0, [sp, 0x44] | *(arg_44h) = r0;
0x00074442 mov r0, fp | r0 = fp;
0x00074444 ldr r3, [r3] | r3 = *(r3);
0x00074446 bl 0x3b980 | r0 = fcn_0003b980 (r0, r1, r2, r3);
0x0007444a mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x0007444c cbnz r0, 0x744aa |
0x0007444e ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00074452 cmp r3, 1 |
| if (r3 < 1) {
0x00074454 bls.w 0x76a6c | goto label_252;
| }
| label_130:
0x00074458 ldr r1, [pc, 0x250] |
0x0007445a movs r2, 7 | r2 = 7;
0x0007445c ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0007445e add r1, pc | r1 = 0xe8b0e;
0x00074460 ldr r0, [r3] | r0 = *(r3);
0x00074462 blx 0x85a8 | r0 = fcn_000085a8 ();
0x00074466 cmp r0, 0 |
| if (r0 == 0) {
0x00074468 beq.w 0x76a5e | goto label_253;
| }
0x0007446c ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0007446e ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00074470 cmp r3, 0 |
| if (r3 == 0) {
0x00074472 beq.w 0x7693a | goto label_254;
| }
0x00074476 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00074478 cmp r3, 0x41 |
| if (r3 == 0x41) {
0x0007447a beq.w 0x76894 | goto label_255;
| }
0x0007447e cmp r3, 0x21 |
| if (r3 == 0x21) {
0x00074480 beq.w 0x76710 | goto label_256;
| }
0x00074484 ldr r2, [pc, 0x228] |
0x00074486 add r2, pc | r2 = 0xe8b3a;
| label_113:
0x00074488 ldr r1, [pc, 0x228] |
0x0007448a mov r0, fp | r0 = fp;
0x0007448c ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x0007448e add r1, pc | r1 = 0xe8b46;
0x00074490 adds r3, 8 | r3 += 8;
0x00074492 bl 0x25778 | fcn_00025778 (r0);
| label_125:
0x00074496 ldrb.w r3, [r7, 0xa8] | r3 = *((r7 + 0xa8));
0x0007449a cmp r3, 1 |
| if (r3 != 1) {
0x0007449c bne 0x744aa | goto label_121;
| }
0x0007449e ldrb.w r3, [r7, 0xaa] | r3 = *((r7 + 0xaa));
0x000744a2 orr r3, r3, 1 | r3 |= 1;
0x000744a6 strb.w r3, [r7, 0xaa] | *((r7 + 0xaa)) = r3;
| }
| label_121:
0x000744aa ldr r1, [sp, 0x44] | r1 = *(arg_44h);
0x000744ac mov r0, r7 | r0 = r7;
0x000744ae bl 0x159dc | fcn_000159dc (r0, r1);
| }
| label_39:
0x000744b2 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x000744b4 mov r0, r7 | r0 = r7;
0x000744b6 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x000744ba ldr r3, [sp, 0x34] | r3 = *(arg_34h);
| if (r3 != 0) {
0x000744bc cbz r3, 0x744c6 |
0x000744be mov r1, r3 | r1 = r3;
0x000744c0 mov r0, r7 | r0 = r7;
0x000744c2 bl 0x17b14 | fcn_00017b14 (r0, r1, r2);
| }
0x000744c6 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
| if (r3 != 0) {
0x000744c8 cbz r3, 0x744ee |
0x000744ca movs r3, 1 | r3 = 1;
0x000744cc mov.w r8, 0 | r8 = 0;
| label_129:
0x000744d0 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x000744d2 mov r0, r7 | r0 = r7;
0x000744d4 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000744d6 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000744da ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
| label_122:
0x000744dc ldr.w r2, [fp, 0xec] | r2 = *(arg_ech);
0x000744e0 cmp r2, 0 |
0x000744e2 it ne |
| if (r2 == 0) {
0x000744e4 orrne r3, r3, 1 | r3 |= 1;
| }
0x000744e8 cmp r3, 0 |
| if (r3 == 0) {
0x000744ea beq.w 0x75a62 | goto label_257;
| }
| }
| label_60:
0x000744ee ldr r3, [r6, -0x40] | r3 = *((r6 - 0x40));
0x000744f2 cmp r3, 0 |
| if (r3 != 0) {
0x000744f4 bne.w 0x75292 | goto label_258;
| }
0x000744f8 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x000744fa ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x000744fe sub.w r3, r6, 0x74 | r3 = r6 - 0x74;
0x00074502 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00074506 b.w 0x723bc | goto label_6;
0x0007450a movs r3, 1 | r3 = 1;
0x0007450c sub.w r2, r6, 0x20 | r2 = r6 - 0x20;
0x00074510 str r3, [sp] | *(sp) = r3;
0x00074512 sub.w r1, r6, 0x2c | r1 = r6 - 0x2c;
0x00074514 lsls r4, r5, 4 | r4 = r5 << 4;
0x00074516 sub.w r3, r6, 8 | r3 = r6 - 8;
0x0007451a mov r0, fp | r0 = fp;
0x0007451c bl 0xa3c8c | fcn_000a3c8c (r0, r1, r2, r3, r4, r5, r6);
0x00074520 b.w 0x723bc | goto label_6;
0x00074524 movs r3, 0 | r3 = 0;
0x00074526 strb r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x0007452a b.w 0x723bc | goto label_6;
0x0007452e movs r3, 1 | r3 = 1;
0x00074530 strb r3, [r6, 4] | *((r6 + 4)) = r3;
0x00074532 b.w 0x723bc | goto label_6;
0x00074536 ldr r1, [pc, 0x180] |
0x00074538 mov r0, fp | r0 = fp;
0x0007453a add r1, pc | r1 = 0xe8bf8;
0x0007453c bl 0x25778 | fcn_00025778 (r0);
0x00074540 b.w 0x723bc | goto label_6;
0x00074544 ldr r1, [pc, 0x174] |
0x00074546 mov r0, fp | r0 = fp;
0x00074548 add r1, pc | r1 = 0xe8c08;
0x0007454a bl 0x25778 | fcn_00025778 (r0);
0x0007454e b.w 0x723bc | goto label_6;
0x00074552 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00074554 mov r0, fp | r0 = fp;
0x00074556 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x0007455a bl 0x2659c | fcn_0002659c (r0, r1, r2);
0x0007455e str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00074562 b.w 0x723bc | goto label_6;
0x00074566 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x0007456a mov r0, fp | r0 = fp;
0x0007456c ldr r1, [r6, -0x20] | r1 = *((r6 - 0x20));
0x00074570 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x00074574 movs r3, 0 | r3 = 0;
0x00074576 mov r7, r0 | r7 = r0;
0x00074578 mov r2, r3 | r2 = r3;
0x0007457a movs r1, 0xb0 | r1 = 0xb0;
0x0007457c mov r0, fp | r0 = fp;
0x0007457e bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00074580 vtbx.8 d15, {d11}, d6 | __asm ("vtbx.8 d15, {d11}, d6");
0x00074584 lsrs r4, r5, 0x10 | r4 = r5 >> 0x10;
0x00074586 cmp r0, 0 |
| if (r0 == 0) {
0x00074588 beq.w 0x756e0 | goto label_259;
| }
0x0007458c ldr r3, [r7] | r3 = *(r7);
0x0007458e str r7, [r0, 0x14] | *((r0 + 0x14)) = r7;
0x00074590 cmp r3, 0 |
| if (r3 == 0) {
0x00074592 beq.w 0x723bc | goto label_6;
| }
0x00074596 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00074598 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x0007459a ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0007459c mov.w r3, 0x104 |
0x000745a0 movt r3, 0x20 | r3 = 0x200104;
0x000745a4 ands r3, r1 | r3 &= r1;
0x000745a6 orrs r2, r3 | r2 |= r3;
0x000745a8 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x000745aa b.w 0x723bc | goto label_6;
0x000745ae movs r3, 0 | r3 = 0;
0x000745b0 adds r2, r6, 4 | r2 = r6 + 4;
0x000745b2 mov r1, r3 | r1 = r3;
0x000745b4 mov r0, fp | r0 = fp;
0x000745b6 bl 0x2622c | fcn_0002622c (r0, r1, r2, r3);
0x000745ba str r0, [r6, 4] | *((r6 + 4)) = r0;
0x000745bc b.w 0x723bc | goto label_6;
0x000745c0 movs r3, 0 | r3 = 0;
0x000745c2 sub.w r2, r6, 0x2c | r2 = r6 - 0x2c;
0x000745c6 mov r1, r3 | r1 = r3;
0x000745c8 mov r0, fp | r0 = fp;
0x000745ca bl 0x2622c | fcn_0002622c (r0, r1, r2, r3);
0x000745ce ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000745d0 mov r7, r0 | r7 = r0;
0x000745d2 cmp r0, 0 |
| if (r0 == 0) {
0x000745d4 beq.w 0x7594a | goto label_260;
| }
0x000745d8 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000745da str r1, [r0, 0x2c] | *((r0 + 0x2c)) = r1;
0x000745dc orr r2, r3, 0x1000000 | r2 = r3 | 0x1000000;
0x000745e0 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x000745e2 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
0x000745e4 str r0, [r1, 0x48] | *((r1 + 0x48)) = r0;
| if (r2 < r3) {
0x000745e6 bpl 0x745f8 |
0x000745e8 ldrb r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x000745ea cmp r3, 0xa5 |
| if (r3 == 0xa5) {
0x000745ec beq 0x745f8 | goto label_56;
| }
0x000745ee ldr r1, [pc, 0xd0] |
0x000745f0 mov r0, fp | r0 = fp;
0x000745f2 add r1, pc | r1 = 0xe8cb8;
0x000745f4 bl 0x25778 | fcn_00025778 (r0);
| }
| label_56:
0x000745f8 str r7, [r6, -0x2c] | *((r6 - 0x2c)) = r7;
0x000745fc b.w 0x723bc | goto label_6;
0x00074600 ldr r1, [r6, -0x20] | r1 = *((r6 - 0x20));
0x00074604 ldr r0, [r6, -0x14] | r0 = *((r6 - 0x14));
0x00074608 ldr r7, [r6, -0x44] | r7 = *((r6 - 0x44));
0x0007460c ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0007460e str r1, [sp, 0x30] | *(arg_30h) = r1;
0x00074610 ldr.w r1, [fp] | r1 = *(fp);
0x00074614 ldr r3, [r6, -0x50] | r3 = *((r6 - 0x50));
0x00074618 str r0, [sp, 0x34] | *(arg_34h) = r0;
0x0007461a mov r0, fp | r0 = fp;
0x0007461c str r7, [sp, 0x38] | *(arg_38h) = r7;
0x0007461e str r1, [sp, 0x2c] | *(arg_2ch) = r1;
0x00074620 movs r1, 0x7e | r1 = 0x7e;
0x00074622 ldr r7, [r6, -0x8] | r7 = *((r6 - 0x8));
0x00074626 str r2, [sp] | *(sp) = r2;
0x00074628 sub.w r2, r6, 0x2c | r2 = r6 - 0x2c;
0x0007462c bl 0x1ca30 | r0 = fcn_0001ca30 (r0, r1, r2, r3, r4);
0x00074630 mov r8, r0 | r8 = r0;
0x00074632 cmp r0, 0 |
| if (r0 == 0) {
0x00074634 beq.w 0x75852 | goto label_261;
| }
0x00074638 ldrb.w r2, [fp, 0xc8] | r2 = *(arg_c8h);
0x0007463c ldrb.w r3, [sp, 0x38] | r3 = *(arg_38h);
0x00074640 cmp r2, 1 |
| if (r2 < 1) {
0x00074642 bls.w 0x75962 | goto label_262;
| }
0x00074646 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00074648 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x0007464a strb.w r3, [r8, 1] | *((r8 + 1)) = r3;
0x0007464e str.w r0, [r8, 8] | __asm ("str.w r0, [r8, 8]");
0x00074652 str.w r1, [r8, 0x1c] | __asm ("str.w r1, [r8, 0x1c]");
0x00074656 str.w r7, [r8, 0x20] | __asm ("str.w r7, [r8, 0x20]");
| if (r7 != 0) {
0x0007465a cbz r7, 0x74666 |
0x0007465c ldr r1, [r7] | r1 = *(r7);
| if (r1 == 0) {
0x0007465e cbz r1, 0x74666 | goto label_49;
| }
0x00074660 mov r0, fp | r0 = fp;
0x00074662 bl 0x25aa4 | fcn_00025aa4 (r0, r1);
| }
| label_49:
0x00074666 str r8, [r6, -0x50] | *((r6 - 0x50)) = r8;
0x0007466a b.w 0x723bc | goto label_6;
0x000746c4 ldr r7, [r6, -0x8] | r7 = *((r6 - 0x8));
0x000746c8 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x000746cc ldr r0, [r6, -0x20] | r0 = *((r6 - 0x20));
0x000746d0 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x000746d2 str r7, [sp, 0x30] | *(arg_30h) = r7;
0x000746d4 ldr r7, [r6, -0x50] | r7 = *((r6 - 0x50));
0x000746d8 ldr r3, [r6, -0x5c] | r3 = *((r6 - 0x5c));
0x000746dc ldr.w r8, [fp] | r8 = *(fp);
0x000746e0 str r1, [sp, 0x2c] | *(arg_2ch) = r1;
0x000746e2 movs r1, 0x80 | r1 = 0x80;
0x000746e4 str r0, [sp, 0x34] | *(arg_34h) = r0;
0x000746e6 mov r0, fp | r0 = fp;
0x000746e8 str r2, [sp] | *(sp) = r2;
0x000746ea sub.w r2, r6, 0x44 | r2 = r6 - 0x44;
0x000746ee str r7, [sp, 0x38] | *(arg_38h) = r7;
0x000746f0 bl 0x1ca30 | r0 = fcn_0001ca30 (r0, r1, r2, r3, r4);
0x000746f4 mov r7, r0 | r7 = r0;
0x000746f6 cmp r0, 0 |
| if (r0 == 0) {
0x000746f8 beq.w 0x752d6 | goto label_263;
| }
0x000746fc ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00074700 ldrb.w r2, [sp, 0x38] | r2 = *(arg_38h);
0x00074704 cmp r3, 1 |
0x00074706 str r2, [sp, 0x38] | *(arg_38h) = r2;
| if (r3 < 1) {
0x00074708 bls.w 0x752a6 | goto label_264;
| }
0x0007470c ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x0007470e ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00074710 str r1, [r0, 0x10] | *((r0 + 0x10)) = r1;
0x00074712 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00074714 str r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x00074716 movs r3, 0 | r3 = 0;
0x00074718 strb r2, [r7, 1] | *((r7 + 1)) = r2;
0x0007471a str r0, [r7, 0x18] | *((r7 + 0x18)) = r0;
0x0007471c str r3, [sp, 0x2c] | *(arg_2ch) = r3;
| label_18:
0x0007471e ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00074720 mov r0, r8 | r0 = r8;
0x00074722 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00074726 str r7, [r6, -0x5c] | *((r6 - 0x5c)) = r7;
0x0007472a b.w 0x723bc | goto label_6;
0x0007472e ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00074732 str r3, [r6, -0x4] | *((r6 - 0x4)) = r3;
0x00074736 ldrh r3, [r6, 2] | r3 = *((r6 + 2));
0x00074738 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x0007473c b.w 0x723bc | goto label_6;
0x00074740 ldrh r3, [r6, 2] | r3 = *((r6 + 2));
0x00074742 strb r3, [r6, 4] | *((r6 + 4)) = r3;
0x00074744 b.w 0x723bc | goto label_6;
0x00074748 adds r2, r6, 4 | r2 = r6 + 4;
0x0007474a sub.w r3, r6, 0x14 | r3 = r6 - 0x14;
0x0007474e ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x00074752 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00074756 mov r0, fp | r0 = fp;
0x00074758 ldr.w r1, [pc, 0xc94] |
0x0007475c add r1, pc | r1 = 0xe9b50;
0x0007475e bl 0x25778 | fcn_00025778 (r0);
0x00074762 b.w 0x723bc | goto label_6;
0x00074766 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x0007476a str r3, [r3, 0x2c] | *((r3 + 0x2c)) = r3;
0x0007476c b.w 0x723bc | goto label_6;
0x00074770 ldr r1, [r6, -0x20] | r1 = *((r6 - 0x20));
0x00074774 adds r2, r6, 4 | r2 = r6 + 4;
0x00074776 mov r0, fp | r0 = fp;
0x00074778 bl 0x8979c | fcn_0008979c (r0, r1, r2);
0x0007477c b.w 0x723bc | goto label_6;
0x00074780 adds r2, r6, 4 | r2 = r6 + 4;
0x00074782 sub.w r1, r6, 8 | r1 = r6 - 8;
0x00074786 mov r0, fp | r0 = fp;
0x00074788 bl 0xa7b80 | fcn_000a7b80 (r0, r1, r2, r3, r4);
0x0007478c b.w 0x723bc | goto label_6;
0x00074790 movs r2, 0 | r2 = 0;
0x00074792 mov r0, fp | r0 = fp;
0x00074794 mov r1, r2 | r1 = r2;
0x00074796 bl 0xa7b80 | fcn_000a7b80 (r0, r1, r2, r3, r4);
0x0007479a b.w 0x723bc | goto label_6;
0x0007479e mov r0, fp | r0 = fp;
0x000747a0 ldr.w r7, [fp] | r7 = *(fp);
0x000747a4 bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x000747a8 cmp r0, 0 |
| if (r0 != 0) {
0x000747aa bne.w 0x723bc | goto label_6;
| }
0x000747ae ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000747b0 sub.w r8, r6, 8 | r8 = r6 - 8;
0x000747b4 cmp r3, 0 |
| if (r3 == 0) {
0x000747b6 beq.w 0x758b0 | goto label_265;
| }
| label_72:
0x000747ba add r3, sp, 0x78 | r3 += arg_78h;
0x000747bc mov r1, r8 | r1 = r8;
0x000747be adds r2, r6, 4 | r2 = r6 + 4;
0x000747c0 mov r0, fp | r0 = fp;
0x000747c2 bl 0x25870 | r0 = fcn_00025870 (r0, r1, r2, r3);
0x000747c6 subs r3, r0, 0 | r3 = r0 - 0;
0x000747c8 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
| if (r3 < r0) {
0x000747ca blt.w 0x723bc | goto label_6;
| }
0x000747ce ldr r1, [sp, 0x78] | r1 = *(arg_78h);
0x000747d0 mov r0, r7 | r0 = r7;
0x000747d2 bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x000747d6 mov r8, r0 | r8 = r0;
0x000747d8 cmp r0, 0 |
| if (r0 == 0) {
0x000747da beq.w 0x723bc | goto label_6;
| }
0x000747de ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000747e0 mov r1, r0 | r1 = r0;
0x000747e2 ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x000747e4 mov r0, r7 | r0 = r7;
0x000747e6 lsls r3, r3, 4 | r3 <<= 4;
0x000747e8 ldr r2, [r2, r3] | r2 = *((r2 + r3));
0x000747ea str r2, [sp, 0x30] | *(arg_30h) = r2;
0x000747ec bl 0x3b634 | fcn_0003b634 (r0, r1, r2, r3);
0x000747f0 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000747f2 cmp r0, 0 |
| if (r0 == 0) {
0x000747f4 beq.w 0x7609e | goto label_266;
| }
0x000747f8 ldr r2, [r0, 0x38] | r2 = *((r0 + 0x38));
| if (r2 == 0) {
0x000747fa cbnz r2, 0x74804 |
0x000747fc mov r1, r0 | r1 = r0;
0x000747fe mov r0, fp | r0 = fp;
0x00074800 bl 0x6b634 | fcn_0006b634 (r0, r1, r2, r3);
| }
0x00074804 mov r1, r8 | r1 = r8;
0x00074806 mov r0, r7 | r0 = r7;
0x00074808 bl 0x159dc | fcn_000159dc (r0, r1);
0x0007480c b.w 0x723bc | goto label_6;
0x00074810 mov r0, fp | r0 = fp;
0x00074812 bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x00074816 mov r1, r0 | r1 = r0;
0x00074818 cmp r0, 0 |
| if (r0 != 0) {
0x0007481a bne.w 0x723bc | goto label_6;
| }
0x0007481e mov r0, fp | r0 = fp;
0x00074820 bl 0x6b744 | fcn_0006b744 (r0, r1, r2);
0x00074824 b.w 0x723bc | goto label_6;
0x00074828 ldr.w r2, [pc, 0xbc8] |
0x0007482c movs r1, 0 | r1 = 0;
0x0007482e ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00074830 mov r0, fp | r0 = fp;
0x00074832 strd r1, r1, [sp] | __asm ("strd r1, r1, [sp]");
0x00074836 movs r1, 0x19 | r1 = 0x19;
0x00074838 add r2, pc |
0x0007483a add.w r2, r2, 0xdc0 | r2 = 0xea9f0;
0x0007483e str r3, [sp, 8] | *(arg_8h) = r3;
0x00074840 bl 0x677a8 | fcn_000677a8 (r0, r1, r2, r3, r4, r5, r6);
0x00074844 b.w 0x723bc | goto label_6;
0x00074848 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0007484a mov r0, fp | r0 = fp;
0x0007484c ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x00074850 str r2, [sp, 8] | *(arg_8h) = r2;
0x00074852 ldr.w r2, [pc, 0xba4] | r2 = *(0x000753f8);
0x00074856 ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x0007485a add r2, pc | r2 += pc;
0x0007485c strd r3, r1, [sp] | __asm ("strd r3, r1, [sp]");
0x00074860 addw r2, r2, 0xd98 | __asm ("addw r2, r2, aav.0x000000ff");
0x00074864 movs r1, 0x18 | r1 = 0x18;
0x00074866 bl 0x677a8 | fcn_000677a8 (r0, r1, r2, r3, r4, r5, r6);
0x0007486a b.w 0x723bc | goto label_6;
0x0007486e ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00074870 ldr.w r8, [fp] | r8 = *(fp);
0x00074874 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00074878 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x0007487a ldrb.w r3, [r8, 0x53] | r3 = *((r8 + 0x53));
0x0007487e str r2, [sp, 0x30] | *(arg_30h) = r2;
0x00074880 cmp r3, 0 |
| if (r3 != 0) {
0x00074882 bne 0x74940 | goto label_14;
| }
0x00074884 mov r0, fp | r0 = fp;
0x00074886 bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x0007488a mov r7, r0 | r7 = r0;
0x0007488c cmp r0, 0 |
| if (r0 != 0) {
0x0007488e bne 0x74940 | goto label_14;
| }
0x00074890 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00074892 ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x00074896 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x00074898 cmp r2, 0 |
0x0007489a ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x0007489c mov r3, r2 | r3 = r2;
0x0007489e str r1, [sp, 0x4c] | *(arg_4ch) = r1;
| if (r2 <= 0) {
0x000748a0 ble 0x74920 | goto label_267;
| }
0x000748a2 ldr.w r2, [pc, 0xb58] |
0x000748a6 strd r4, r5, [sp, 0x34] | __asm ("strd r4, r5, [sp, 0x34]");
0x000748aa ldr r4, [sp, 0x28] | r4 = *(arg_28h);
0x000748ac add r2, pc | r2 = 0xe9cae;
0x000748ae strd fp, r6, [sp, 0x3c] | __asm ("strd fp, r6, [sp, 0x3c]");
0x000748b2 str.w sb, [sp, 0x44] | __asm ("str.w sb, [arg_44h]");
0x000748b6 mov r6, r1 | r6 = r1;
0x000748b8 str.w sl, [sp, 0x48] | __asm ("str.w sl, [arg_48h]");
0x000748bc mov sb, r3 | sb = r3;
0x000748be mov sl, r0 | sl = r0;
0x000748c0 mov r5, r2 | r5 = r2;
| label_8:
0x000748c2 cmp r7, 1 |
0x000748c4 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x000748c8 ite le |
| if (r7 > 1) {
0x000748ca eorle fp, r7, 1 |
| }
| if (r7 > 1) {
0x000748ce mov fp, r7 |
| }
0x000748d0 lsl.w lr, fp, 4 | lr = fp << 4;
0x000748d4 cmp r6, 0 |
| if (r6 == 0) {
0x000748d6 beq.w 0x75206 | goto label_268;
| }
0x000748da ldr.w r1, [r3, lr] | r1 = *((r3 + lr));
0x000748de add.w ip, r6, -1 |
0x000748e2 mov r0, ip | r0 = ip;
0x000748e4 add lr, r3 | lr += r3;
0x000748e6 subs r1, 1 | r1--;
| do {
| label_12:
0x000748e8 ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x000748ec ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x000748f0 cmp r3, r2 |
| if (r3 == r2) {
0x000748f2 beq.w 0x751b6 | goto label_269;
| }
0x000748f6 add r3, r4 | r3 += r4;
0x000748f8 add r2, r4 | r2 += r4;
0x000748fa ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x000748fe ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x00074902 cmp r3, r2 |
0x00074904 beq 0x748e8 |
| } while (r3 == r2);
0x00074906 cmp.w fp, 0 |
| if (fp == 0) {
0x0007490a beq.w 0x754c8 | goto label_270;
| }
| label_13:
0x0007490e adds r7, 1 | r7++;
0x00074910 cmp sb, r7 |
| if (sb != r7) {
0x00074912 bne 0x748c2 | goto label_8;
| }
0x00074914 ldrd r4, r5, [sp, 0x34] | __asm ("ldrd r4, r5, [arg_34h]");
0x00074918 ldrd fp, r6, [sp, 0x3c] | __asm ("ldrd fp, r6, [arg_3ch]");
0x0007491c ldrd sb, sl, [sp, 0x44] | __asm ("ldrd sb, sl, [arg_44h]");
| label_267:
0x00074920 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00074922 cmp r3, 0 |
| if (r3 != 0) {
0x00074924 bne.w 0x76080 | goto label_271;
| }
0x00074928 ldr.w r1, [pc, 0xad4] |
0x0007492c mov r0, fp | r0 = fp;
0x0007492e ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00074930 add r1, pc | r1 = 0xe9d34;
0x00074932 add.w r2, r3, 8 | r2 = r3 + 8;
0x00074936 bl 0x25778 | fcn_00025778 (r0);
| label_80:
0x0007493a movs r3, 1 | r3 = 1;
0x0007493c strb.w r3, [fp, 0x11] | *(arg_11h) = r3;
| label_14:
0x00074940 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00074942 mov r0, r8 | r0 = r8;
0x00074944 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00074948 b.w 0x723bc | goto label_6;
0x0007494c movs r3, 3 | r3 = 3;
0x0007494e str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00074950 b.w 0x723bc | goto label_6;
0x00074954 movs r3, 1 | r3 = 1;
0x00074956 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00074958 b.w 0x723bc | goto label_6;
0x0007495c ldr.w r0, [fp] | r0 = *(fp);
0x00074960 movs r3, 1 | r3 = 1;
0x00074962 sub.w r2, r6, 8 | r2 = r6 - 8;
0x00074966 movs r1, 0x47 | r1 = 0x47;
0x00074968 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x0007496c str r0, [r6, -0x38] | *((r6 - 0x38)) = r0;
0x00074970 cmp r0, 0 |
| if (r0 == 0) {
0x00074972 beq.w 0x723bc | goto label_6;
| }
0x00074976 ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x0007497a strb r3, [r0, 1] | *((r0 + 1)) = r3;
0x0007497c b.w 0x723bc | goto label_6;
0x00074980 movs r3, 0 | r3 = 0;
0x00074982 movs r1, 0x47 | r1 = 0x47;
0x00074984 mov r2, r3 | r2 = r3;
0x00074986 mov r0, fp | r0 = fp;
0x00074988 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007498c str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00074990 cmp r0, 0 |
| if (r0 == 0) {
0x00074992 beq.w 0x723bc | goto label_6;
| }
0x00074996 movs r3, 4 | r3 = 4;
0x00074998 strb r3, [r0, 1] | *((r0 + 1)) = r3;
0x0007499a b.w 0x723bc | goto label_6;
0x0007499e ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x000749a2 ldr.w r7, [fp] | r7 = *(fp);
0x000749a6 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000749a8 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x000749ac str r3, [sp, 0x30] | *(arg_30h) = r3;
0x000749ae ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000749b0 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x000749b2 cmp r7, 0 |
| if (r7 == 0) {
0x000749b4 beq.w 0x7530c | goto label_272;
| }
0x000749b8 mov r0, r7 | r0 = r7;
0x000749ba movs r2, 0x30 | r2 = 0x30;
0x000749bc movs r3, 0 | r3 = 0;
0x000749be bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x000749c2 mov r8, r0 | r8 = r0;
| label_20:
0x000749c4 cmp.w r8, 0 |
| if (r8 == 0) {
0x000749c8 beq.w 0x75a78 | goto label_273;
| }
0x000749cc movs r2, 0x30 | r2 = 0x30;
0x000749ce movs r1, 0 | r1 = 0;
0x000749d0 mov r0, r8 | r0 = r8;
0x000749d2 blx 0x8264 | fcn_00008264 ();
0x000749d6 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000749d8 mov r0, r7 | r0 = r7;
0x000749da movw r7, 0xb89 | r7 = 0xb89;
0x000749de ldrd r1, r2, [sp, 0x30] | __asm ("ldrd r1, r2, [arg_30h]");
0x000749e2 strh.w r7, [r8] | *(r8) = r7;
0x000749e6 str.w r3, [r8, 8] | __asm ("str.w r3, [r8, 8]");
0x000749ea bl 0x1bd4c | r0 = fcn_0001bd4c (r0, r1, r2);
| if (r0 == 0) {
0x000749ee cbz r0, 0x74a16 | goto label_274;
| }
0x000749f0 ldrb r2, [r0] | r2 = *(r0);
| if (r2 == 0) {
0x000749f2 cbz r2, 0x74a16 | goto label_274;
| }
0x000749f4 ldr.w r7, [pc, 0xa0c] | r7 = *(0x00075404);
0x000749f8 mov r1, r0 | r1 = r0;
0x000749fa mov.w ip, 0x20 |
0x000749fe add r7, pc | r7 += pc;
| do {
0x00074a00 add r2, r7 | r2 += r7;
0x00074a02 ldrb.w r3, [r2, 0x40] | r3 = *((r2 + 0x40));
0x00074a06 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
0x00074a08 it mi |
| if (r2 >= r3) {
0x00074a0a strbmi ip, [r1] | *(r1) = ip;
| }
0x00074a0e ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x00074a12 cmp r2, 0 |
0x00074a14 bne 0x74a00 |
| } while (r2 != 0);
| label_274:
0x00074a16 str.w r0, [r8, 0x24] | __asm ("str.w r0, [r8, 0x24]");
| label_61:
0x00074a1a str r8, [r6, -0x14] | *((r6 - 0x14)) = r8;
0x00074a1e b.w 0x723bc | goto label_6;
0x00074a22 ldr.w r1, [fp] | r1 = *(fp);
0x00074a26 mov r0, fp | r0 = fp;
0x00074a28 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00074a2a ldr r3, [r6, -0x38] | r3 = *((r6 - 0x38));
0x00074a2e ldr r8, [r6, -0x8] | r8 = *((r6 - 0x8));
0x00074a32 str r1, [sp, 0x2c] | *(arg_2ch) = r1;
0x00074a34 movs r1, 0x7f | r1 = 0x7f;
0x00074a36 str r2, [sp] | *(sp) = r2;
0x00074a38 sub.w r2, r6, 0x20 | r2 = r6 - 0x20;
0x00074a3c bl 0x1ca30 | r0 = fcn_0001ca30 (r0, r1, r2, r3, r4);
0x00074a40 mov r7, r0 | r7 = r0;
0x00074a42 cmp r0, 0 |
| if (r0 == 0) {
0x00074a44 beq.w 0x7527e | goto label_275;
| }
0x00074a48 ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00074a4c cmp r3, 1 |
| if (r3 < 1) {
0x00074a4e bls.w 0x75264 | goto label_276;
| }
0x00074a52 movs r3, 0xb | r3 = 0xb;
0x00074a54 str.w r8, [r0, 0x14] | __asm ("str.w r8, [r0, 0x14]");
0x00074a58 strb r3, [r0, 1] | *((r0 + 1)) = r3;
| label_17:
0x00074a5a str r7, [r6, -0x38] | *((r6 - 0x38)) = r7;
0x00074a5e b.w 0x723bc | goto label_6;
0x00074a62 ldr r3, [r6, -0x14] | r3 = *((r6 - 0x14));
0x00074a66 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00074a6a ldr r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x00074a6c str r2, [r1, 0x28] | *((r1 + 0x28)) = r2;
0x00074a6e str r2, [r3, 0x2c] | *((r3 + 0x2c)) = r2;
0x00074a70 b.w 0x723bc | goto label_6;
0x00074a74 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00074a76 str r3, [r6, -0x10] | *((r6 - 0x10)) = r3;
0x00074a7a movs r3, 0x80 | r3 = 0x80;
0x00074a7c str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x00074a80 b.w 0x723bc | goto label_6;
0x00074a84 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00074a88 mov r0, fp | r0 = fp;
0x00074a8a ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00074a8c bl 0x315e8 | fcn_000315e8 (r0, r1, r2);
0x00074a90 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00074a92 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00074a96 str r2, [r3, 0x24] | *((r3 + 0x24)) = r2;
0x00074a98 str r3, [r6, -0x14] | *((r6 - 0x14)) = r3;
0x00074a9c b.w 0x723bc | goto label_6;
0x00074aa0 ldrb r0, [r6, 4] | r0 = *((r6 + 4));
0x00074aa2 ldrd r2, r3, [r6, -0x20] | __asm ("ldrd r2, r3, [r6, -0x20]");
0x00074aa6 ldr r1, [r6, -0x38] | r1 = *((r6 - 0x38));
0x00074aaa str r0, [sp, 8] | *(arg_8h) = r0;
0x00074aac ldr r0, [r6, -0x4] | r0 = *((r6 - 0x4));
0x00074ab0 str r0, [sp, 4] | *(arg_4h) = r0;
0x00074ab2 ldr r0, [r6, -0x8] | r0 = *((r6 - 0x8));
0x00074ab6 str r0, [sp] | *(sp) = r0;
0x00074ab8 mov r0, fp | r0 = fp;
0x00074aba bl 0x30950 | fcn_00030950 (r0, r1, r2, r3, r4, r5, r6);
0x00074abe str r0, [r6, -0x38] | *((r6 - 0x38)) = r0;
0x00074ac2 b.w 0x723bc | goto label_6;
0x00074ac6 ldrb r0, [r6, 4] | r0 = *((r6 + 4));
0x00074ac8 movs r7, 0 | r7 = 0;
0x00074aca ldrd r2, r3, [r6, -0x8] | __asm ("ldrd r2, r3, [r6, -0x8]");
0x00074ace ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00074ad2 str r0, [sp, 8] | *(arg_8h) = r0;
0x00074ad4 movs r0, 0x55 | r0 = 0x55;
0x00074ad6 strd r0, r7, [sp] | __asm ("strd r0, r7, [sp]");
0x00074ada mov r0, fp | r0 = fp;
0x00074adc bl 0x30950 | fcn_00030950 (r0, r1, r2, r3, r4, r5, r6);
0x00074ae0 str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x00074ae4 b.w 0x723bc | goto label_6;
0x00074ae8 strd r3, r2, [r6, 0x10] | __asm ("strd r3, r2, [r6, 0x10]");
0x00074aec b.w 0x723bc | goto label_6;
0x00074af0 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00074af2 b.w 0x723bc | goto label_6;
0x00074af6 adds r3, r6, 4 | r3 = r6 + 4;
0x00074af8 movs r1, 0x74 | r1 = 0x74;
0x00074afa ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x00074afc mov r0, fp | r0 = fp;
0x00074afe bl 0x1bffc | r0 = fcn_0001bffc (r0, r1, r2);
0x00074b02 mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x00074b04 cbz r0, 0x74b0a |
0x00074b06 bl 0x1fc20 | fcn_0001fc20 (r0);
| }
0x00074b0a ldrd r2, r3, [r6, 4] | __asm ("ldrd r2, r3, [r6, 4]");
0x00074b0e mov r1, r7 | r1 = r7;
0x00074b10 mov r0, fp | r0 = fp;
0x00074b12 add r3, r2 | r3 += r2;
0x00074b14 bl 0x321e4 | fcn_000321e4 (r0, r1, r2, r3, r4, r5);
0x00074b18 b.w 0x723bc | goto label_6;
0x00074b1c ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00074b1e movs r3, 0 | r3 = 0;
0x00074b20 movs r1, 0xac | r1 = 0xac;
0x00074b22 mov r0, fp | r0 = fp;
0x00074b24 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00074b28 ldrd r2, r3, [r6, -0x8] | __asm ("ldrd r2, r3, [r6, -0x8]");
0x00074b2c mov r1, r0 | r1 = r0;
0x00074b2e mov r0, fp | r0 = fp;
0x00074b30 add r3, r2 | r3 += r2;
0x00074b32 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00074b36 bl 0x321e4 | fcn_000321e4 (r0, r1, r2, r3, r4, r5);
0x00074b3a b.w 0x723bc | goto label_6;
0x00074b3e ldrd r2, r3, [r6, -0x8] | __asm ("ldrd r2, r3, [r6, -0x8]");
0x00074b42 mov r0, fp | r0 = fp;
0x00074b44 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00074b46 add r3, r2 | r3 += r2;
0x00074b48 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00074b4c bl 0x321e4 | fcn_000321e4 (r0, r1, r2, r3, r4, r5);
0x00074b50 b.w 0x723bc | goto label_6;
0x00074b54 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00074b58 mov r0, fp | r0 = fp;
0x00074b5a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00074b5c ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00074b60 adds r2, 1 | r2++;
0x00074b62 bl 0x321e4 | fcn_000321e4 (r0, r1, r2, r3, r4, r5);
0x00074b66 b.w 0x723bc | goto label_6;
0x00074b6a movs r3, 7 | r3 = 7;
0x00074b6c str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00074b6e b.w 0x723bc | goto label_6;
0x00074b72 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x00074b76 movs r3, 0 | r3 = 0;
0x00074b78 ldr.w r8, [fp] | r8 = *(fp);
0x00074b7c movs r1, 0x16 | r1 = 0x16;
0x00074b7e mov r0, fp | r0 = fp;
0x00074b80 str r3, [sp] | *(sp) = r3;
0x00074b82 str r2, [sp, 0x2c] | *(arg_2ch) = r2;
0x00074b84 ldr.w r2, [pc, 0x880] |
0x00074b88 add r2, pc | r2 = 0xe9f94;
0x00074b8a bl 0x25800 | r0 = fcn_00025800 (r0);
0x00074b8e cmp r0, 0 |
| if (r0 != 0) {
0x00074b90 bne.w 0x723bc | goto label_6;
| }
0x00074b94 ldr.w r7, [fp, 8] | r7 = *(arg_8h);
0x00074b98 cmp r7, 0 |
| if (r7 == 0) {
0x00074b9a beq.w 0x7577a | goto label_277;
| }
| label_46:
0x00074b9e ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00074ba0 cmp r3, 7 |
| if (r3 == 7) {
0x00074ba2 beq 0x74c22 | goto label_278;
| }
0x00074ba4 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00074ba8 cmp r3, 0 |
| if (r3 <= 0) {
0x00074baa ble 0x74c22 | goto label_278;
| }
0x00074bac strd r4, r5, [sp, 0x30] | __asm ("strd r4, r5, [sp, 0x30]");
0x00074bb0 movs r2, 0 | r2 = 0;
0x00074bb2 ldr r5, [sp, 0x2c] | r5 = *(arg_2ch);
0x00074bb4 str r6, [sp, 0x38] | *(arg_38h) = r6;
0x00074bb6 mov r6, r2 | r6 = r2;
| do {
0x00074bb8 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00074bbc lsls r4, r6, 4 | r4 = r6 << 4;
0x00074bbe add r3, r4 | r3 += r4;
0x00074bc0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 != 0) {
0x00074bc2 cbz r3, 0x74bd0 |
0x00074bc4 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00074bc6 ldrh r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00074bc8 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
0x00074bca it mi |
| if (r2 >= r3) {
0x00074bcc movmi r3, 0 | r3 = 0;
| }
| if (r2 < r3) {
0x00074bce bmi 0x74bd8 | goto label_279;
| }
| }
0x00074bd0 cmp r5, 9 |
0x00074bd2 ite eq |
| if (r5 != 9) {
0x00074bd4 moveq r3, 2 | r3 = 2;
| }
| if (r5 == 9) {
0x00074bd6 movne r3, 1 | r3 = 1;
| }
| label_279:
0x00074bd8 movs r2, 0 | r2 = 0;
0x00074bda movs r1, 2 | r1 = 2;
0x00074bdc str r2, [sp] | *(sp) = r2;
0x00074bde mov r0, r7 | r0 = r7;
0x00074be0 mov r2, r6 | r2 = r6;
0x00074be2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00074be6 ldr.w r3, [r7, 0x98] | r3 = *((r7 + 0x98));
0x00074bea movs r2, 1 | r2 = 1;
0x00074bec lsl.w r1, r2, r6 | r1 = r2 << r6;
0x00074bf0 cmp r6, r2 |
0x00074bf2 orr.w r3, r3, r1 | r3 |= r1;
0x00074bf6 str.w r3, [r7, 0x98] | __asm ("str.w r3, [r7, 0x98]");
| if (r6 != r2) {
0x00074bfa beq 0x74c12 |
0x00074bfc ldr r3, [r7] | r3 = *(r7);
0x00074bfe ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00074c00 add r3, r4 | r3 += r4;
0x00074c02 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00074c04 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x00074c06 cbz r3, 0x74c12 | goto label_280;
| }
0x00074c08 ldr.w r3, [r7, 0x9c] | r3 = *((r7 + 0x9c));
0x00074c0c orrs r3, r1 | r3 |= r1;
0x00074c0e str.w r3, [r7, 0x9c] | __asm ("str.w r3, [r7, 0x9c]");
| }
| label_280:
0x00074c12 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00074c16 adds r6, 1 | r6++;
0x00074c18 cmp r6, r3 |
0x00074c1a blt 0x74bb8 |
| } while (r6 < r3);
0x00074c1c ldrd r4, r5, [sp, 0x30] | __asm ("ldrd r4, r5, [arg_30h]");
0x00074c20 ldr r6, [sp, 0x38] | r6 = *(arg_38h);
| label_278:
0x00074c22 ldrd r2, r3, [r7, 0x6c] | __asm ("ldrd r2, r3, [r7, 0x6c]");
0x00074c26 cmp r2, r3 |
| if (r2 >= r3) {
0x00074c28 bge.w 0x75e82 | goto label_281;
| }
0x00074c2c ldr r3, [r7, 0x68] | r3 = *((r7 + 0x68));
0x00074c2e add.w r1, r2, r2, lsl 2 | r1 = r2 + (r2 << 2);
0x00074c32 movs r0, 1 | r0 = 1;
0x00074c34 adds r2, 1 | r2++;
0x00074c36 str r2, [r7, 0x6c] | *((r7 + 0x6c)) = r2;
0x00074c38 movs r2, 0 | r2 = 0;
0x00074c3a str.w r0, [r3, r1, lsl 2] | __asm ("str.w r0, [r3, r1, lsl 2]");
0x00074c3e add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
0x00074c42 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x00074c46 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
0x00074c4a b.w 0x723bc | goto label_6;
0x00074c4e ldr.w r3, [fp, 0xe4] | r3 = *(arg_e4h);
0x00074c52 cmp r3, 0 |
| if (r3 == 0) {
0x00074c54 beq.w 0x723bc | goto label_6;
| }
0x00074c58 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00074c5a cmp r3, 0 |
| if (r3 == 0) {
0x00074c5c beq.w 0x723bc | goto label_6;
| }
0x00074c60 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00074c62 strb r2, [r3, 0x18] | *((r3 + 0x18)) = r2;
0x00074c64 b.w 0x723bc | goto label_6;
0x00074c68 ldr.w r7, [fp, 0xe4] | r7 = *(arg_e4h);
0x00074c6c cmp r7, 0 |
| if (r7 == 0) {
0x00074c6e beq.w 0x723bc | goto label_6;
| }
0x00074c72 ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00074c76 cmp r3, 1 |
| if (r3 > 1) {
0x00074c78 bhi.w 0x723bc | goto label_6;
| }
0x00074c7c ldr.w r3, [fp] | r3 = *(fp);
0x00074c80 adds r1, r6, 4 | r1 = r6 + 4;
0x00074c82 ldrsh.w r8, [r7, 0x2a] | r8 = *((r7 + 0x2a));
0x00074c86 mov r0, r3 | r0 = r3;
0x00074c88 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00074c8a bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x00074c8e cmp r0, 0 |
| if (r0 == 0) {
0x00074c90 beq.w 0x723bc | goto label_6;
| }
0x00074c94 mov r1, r0 | r1 = r0;
0x00074c96 str r0, [sp, 0x30] | *(arg_30h) = r0;
0x00074c98 mov r0, fp | r0 = fp;
0x00074c9a bl 0x2d348 | fcn_0002d348 (r0, r1);
0x00074c9e ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00074ca0 cmp r0, 0 |
| if (r0 == 0) {
0x00074ca2 beq.w 0x764b8 | goto label_282;
| }
0x00074ca6 add.w r8, r8, -1 | r8 += -1;
0x00074caa ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00074cac add.w r3, r8, r8, lsl 2 | r3 = r8 + (r8 << 2);
0x00074cb0 lsls r3, r3, 2 | r3 <<= 2;
0x00074cb2 add r0, r3 | r0 += r3;
0x00074cb4 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x00074cb6 ldr r1, [r0, 8] | r1 = *((r0 + 8));
| if (r1 != 0) {
0x00074cb8 cbz r1, 0x74cc8 |
0x00074cba ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00074cbc bl 0x159dc | fcn_000159dc (r0, r1);
0x00074cc0 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00074cc2 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00074cc4 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00074cc6 add r0, r3 | r0 += r3;
| }
0x00074cc8 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00074cca str r2, [r0, 8] | *((r0 + 8)) = r2;
0x00074ccc cmp r3, 0 |
| if (r3 == 0) {
0x00074cce beq.w 0x723bc | goto label_6;
| }
| do {
0x00074cd2 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00074cd4 ldrsh.w r2, [r2] | r2 = *(r2);
0x00074cd8 cmp r8, r2 |
0x00074cda it eq |
| if (r8 != r2) {
0x00074cdc ldreq r2, [r3, 0x20] | r2 = *((r3 + 0x20));
| }
0x00074cde ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00074ce0 itt eq |
| if (r8 != r2) {
0x00074ce2 ldreq r1, [r0, 8] | r1 = *((r0 + 8));
| }
| if (r8 != r2) {
0x00074ce4 streq r1, [r2] | *(r2) = r1;
| }
0x00074ce6 cmp r3, 0 |
0x00074ce8 bne 0x74cd2 |
| } while (r3 != 0);
0x00074cea b.w 0x723bc | goto label_6;
0x00074cee ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00074cf0 mov r0, fp | r0 = fp;
0x00074cf2 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00074cf6 ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00074cfa bl 0x1c2e8 | fcn_0001c2e8 (r0, r1, r2, r3);
0x00074cfe b.w 0x723bc | goto label_6;
0x00074d02 movs r3, 0 | r3 = 0;
0x00074d04 movs r2, 1 | r2 = 1;
0x00074d06 strd r3, r3, [sp, 0x10] | __asm ("strd r3, r3, [sp, 0x10]");
0x00074d0a mov r1, r3 | r1 = r3;
0x00074d0c strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [sp, 8]");
0x00074d10 mov r0, fp | r0 = fp;
0x00074d12 str r2, [sp, 0x18] | *(arg_18h) = r2;
0x00074d14 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00074d16 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00074d1a mov r2, r3 | r2 = r3;
0x00074d1c bl 0xa6b64 | fcn_000a6b64 (r0, r1, r2, r3, r4, r5, r6);
0x00074d20 b.w 0x723bc | goto label_6;
0x00074d24 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00074d26 movs r1, 0 | r1 = 0;
0x00074d28 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00074d2c mov r0, fp | r0 = fp;
0x00074d2e str r2, [sp] | *(sp) = r2;
0x00074d30 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x00074d34 bl 0x2c1ac | fcn_0002c1ac (r0, r1, r2, r3, r4, r5);
0x00074d38 b.w 0x723bc | goto label_6;
0x00074d3c movs r3, 1 | r3 = 1;
0x00074d3e strb.w r3, [fp, 0xc7] | *(arg_c7h) = r3;
0x00074d42 b.w 0x723bc | goto label_6;
0x00074d46 movs r3, 0 | r3 = 0;
0x00074d48 movs r2, 0x55 | r2 = 0x55;
0x00074d4a str r2, [sp] | *(sp) = r2;
0x00074d4c mov r1, r3 | r1 = r3;
0x00074d4e movs r2, 0x5a | r2 = 0x5a;
0x00074d50 mov r0, fp | r0 = fp;
0x00074d52 strd r3, r3, [sp, 4] | __asm ("strd r3, r3, [sp, 4]");
0x00074d56 bl 0x30950 | fcn_00030950 (r0, r1, r2, r3, r4, r5, r6);
0x00074d5a str r0, [r6, 0x10] | *((r6 + 0x10)) = r0;
0x00074d5c b.w 0x723bc | goto label_6;
0x00074d60 movs r3, 0 | r3 = 0;
0x00074d62 sub.w r2, r6, 8 | r2 = r6 - 8;
0x00074d66 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00074d68 mov r0, fp | r0 = fp;
0x00074d6a str r2, [sp] | *(sp) = r2;
0x00074d6c mov r2, r3 | r2 = r3;
0x00074d6e bl 0x1beb0 | fcn_0001beb0 (r0, r1, r2, r3, r4);
0x00074d72 str r0, [r6, -0x8] | *((r6 - 0x8)) = r0;
0x00074d76 b.w 0x723bc | goto label_6;
0x00074d7a sub.w r2, r6, 0x2c | r2 = r6 - 0x2c;
0x00074d7e ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00074d82 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00074d84 mov r0, fp | r0 = fp;
0x00074d86 str r2, [sp] | *(sp) = r2;
0x00074d88 movs r2, 0 | r2 = 0;
0x00074d8a bl 0x1beb0 | fcn_0001beb0 (r0, r1, r2, r3, r4);
0x00074d8e str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00074d92 b.w 0x723bc | goto label_6;
0x00074d96 ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x00074d98 ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x00074d9c cmp r7, 0 |
| if (r7 == 0) {
0x00074d9e beq.w 0x7587e | goto label_283;
| }
0x00074da2 movs r3, 0 | r3 = 0;
0x00074da4 str r1, [r7, 0xc] | *((r7 + 0xc)) = r1;
0x00074da6 str r3, [r7, 8] | *((r7 + 8)) = r3;
| label_50:
0x00074da8 str r7, [r6, -0x20] | *((r6 - 0x20)) = r7;
0x00074dac b.w 0x723bc | goto label_6;
0x00074db0 sub.w r0, r6, 0x38 | r0 = r6 - 0x38;
0x00074db4 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00074db8 ldr r2, [r6, -0x14] | r2 = *((r6 - 0x14));
0x00074dbc ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00074dbe str r0, [sp] | *(sp) = r0;
0x00074dc0 mov r0, fp | r0 = fp;
0x00074dc2 bl 0x1beb0 | fcn_0001beb0 (r0, r1, r2, r3, r4);
0x00074dc6 str r0, [r6, -0x38] | *((r6 - 0x38)) = r0;
0x00074dca b.w 0x723bc | goto label_6;
0x00074dce ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x00074dd0 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x00074dd4 ldr r8, [r6, -0x8] | r8 = *((r6 - 0x8));
0x00074dd8 cmp r7, 0 |
| if (r7 == 0) {
0x00074dda beq.w 0x75890 | goto label_284;
| }
0x00074dde strd r1, r8, [r7, 8] | __asm ("strd r1, r8, [r7, 8]");
| label_51:
0x00074de2 str r7, [r6, -0x2c] | *((r6 - 0x2c)) = r7;
0x00074de6 b.w 0x723bc | goto label_6;
0x00074dea ldr r7, [r6, -0x8] | r7 = *((r6 - 0x8));
| if (r7 != 0) {
0x00074dee cbz r7, 0x74e34 |
0x00074df0 ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x00074df4 cmp r1, 0 |
| if (r1 == 0) {
0x00074df6 beq.w 0x75aa4 | goto label_285;
| }
0x00074dfa ldr r3, [r6, -0x28] | r3 = *((r6 - 0x28));
0x00074dfe ldr.w r0, [fp] | r0 = *(fp);
0x00074e02 str r1, [sp, 0x30] | *(arg_30h) = r1;
0x00074e04 adds r2, r3, 1 | r2 = r3 + 1;
0x00074e06 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00074e08 mov.w r3, 0 | r3 = 0;
0x00074e0c adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00074e10 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x00074e14 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00074e16 mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x00074e18 cbz r0, 0x74e2a |
0x00074e1a ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00074e1c blx 0x7dcc | fcn_00007dcc ();
0x00074e20 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00074e22 mov.w r2, 0 | r2 = 0;
0x00074e26 strb.w r2, [r8, r3] | *((r8 + r3)) = r2;
| }
0x00074e2a ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
| label_63:
0x00074e2e str.w r8, [r7] | __asm ("str.w r8, [r7]");
0x00074e32 mov r7, r3 | r7 = r3;
| }
0x00074e34 str r7, [r6, -0x2c] | *((r6 - 0x2c)) = r7;
0x00074e38 b.w 0x723bc | goto label_6;
0x00074e3c ldrb r3, [r6, 4] | r3 = *((r6 + 4));
0x00074e3e strb r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00074e42 b.w 0x723bc | goto label_6;
0x00074e46 movs r3, 0 | r3 = 0;
0x00074e48 strb r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00074e4a b.w 0x723bc | goto label_6;
0x00074e4e ldrb.w r3, [fp, 0x12] | r3 = *(arg_12h);
0x00074e52 cmp r3, 0 |
| if (r3 != 0) {
0x00074e54 bne.w 0x723bc | goto label_6;
| }
0x00074e58 ldr.w r3, [fp] | r3 = *(fp);
0x00074e5c str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00074e5e ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00074e62 cmp r3, 0 |
| if (r3 != 0) {
0x00074e64 bne.w 0x75430 | goto label_286;
| }
0x00074e68 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00074e6c str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00074e6e cmp r3, 0 |
| if (r3 != 0) {
0x00074e70 bne.w 0x75430 | goto label_286;
| }
0x00074e74 ldr.w r8, [fp, 8] | r8 = *(arg_8h);
0x00074e78 cmp.w r8, 0 |
| if (r8 == 0) {
0x00074e7c beq.w 0x75ff2 | goto label_287;
| }
| label_55:
0x00074e80 ldrb.w r3, [fp, 0x91] | r3 = *(arg_91h);
0x00074e84 ldr.w r7, [r8, 0x6c] | r7 = *((r8 + 0x6c));
0x00074e88 cmp r3, 0 |
| if (r3 != 0) {
0x00074e8a bne.w 0x76188 | goto label_288;
| }
| label_85:
0x00074e8e ldr.w r3, [r8, 0x70] | r3 = *((r8 + 0x70));
0x00074e92 cmp r3, r7 |
| if (r3 <= r7) {
0x00074e94 ble.w 0x7660a | goto label_289;
| }
0x00074e98 ldr.w r3, [r8, 0x68] | r3 = *((r8 + 0x68));
0x00074e9c add.w r1, r7, r7, lsl 2 | r1 = r7 + (r7 << 2);
0x00074ea0 movs r0, 0x44 | r0 = 0x44;
0x00074ea2 adds r7, 1 | r7++;
0x00074ea4 movs r2, 0 | r2 = 0;
0x00074ea6 str.w r7, [r8, 0x6c] | __asm ("str.w r7, [r8, 0x6c]");
0x00074eaa str.w r0, [r3, r1, lsl 2] | __asm ("str.w r0, [r3, r1, lsl 2]");
0x00074eae add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
0x00074eb2 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x00074eb6 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_102:
0x00074eba ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00074ebc ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00074ec0 cmp r3, 0 |
| if (r3 != 0) {
0x00074ec2 bne.w 0x75940 | goto label_90;
| }
0x00074ec6 ldr.w r1, [fp, 0x54] | r1 = *(arg_54h);
| if (r1 == 0) {
0x00074eca cbnz r1, 0x74ed6 |
0x00074ecc ldr.w r3, [fp, 0x44] | r3 = *(arg_44h);
0x00074ed0 cmp r3, 0 |
| if (r3 == 0) {
0x00074ed2 beq.w 0x764aa | goto label_290;
| }
| }
0x00074ed6 ldr.w r3, [r8] | r3 = *(r8);
0x00074eda ldr.w r2, [r8, 0x6c] | r2 = *((r8 + 0x6c));
0x00074ede ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00074ee2 cmp r3, 0 |
| if (r3 != 0) {
0x00074ee4 bne.w 0x76510 | goto label_291;
| }
0x00074ee8 ldr.w r3, [r8, 0x68] | r3 = *((r8 + 0x68));
| label_94:
0x00074eec ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00074eee str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00074ef0 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x00074ef2 cmp r3, 0 |
| if (r3 <= 0) {
0x00074ef4 ble 0x74f94 | goto label_292;
| }
0x00074ef6 movs r7, 0 | r7 = 0;
0x00074ef8 mov r2, r7 | r2 = r7;
0x00074efa mov r7, r6 | r7 = r6;
0x00074efc mov r6, r5 | r6 = r5;
0x00074efe mov r5, r4 | r5 = r4;
0x00074f00 mov r4, r0 | r4 = r0;
0x00074f02 b 0x74f08 |
| while (r2 < r3) {
0x00074f04 ldr.w r1, [fp, 0x54] | r1 = *(arg_54h);
0x00074f08 movs r0, 1 | r0 = 1;
0x00074f0a lsls r0, r2 | r0 <<= r2;
0x00074f0c tst r0, r1 |
| if ((r0 & r1) != 0) {
0x00074f0e beq 0x74f88 |
0x00074f10 ldr.w r3, [r8, 0x98] | r3 = *((r8 + 0x98));
0x00074f14 cmp r2, 1 |
0x00074f16 lsl.w r1, r2, 4 | r1 = r2 << 4;
0x00074f1a orr.w r3, r3, r0 | r3 |= r0;
0x00074f1e str.w r3, [r8, 0x98] | __asm ("str.w r3, [r8, 0x98]");
| if (r2 != 1) {
0x00074f22 beq 0x74f3c |
0x00074f24 ldr.w r3, [r8] | r3 = *(r8);
0x00074f28 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00074f2a add r3, r1 | r3 += r1;
0x00074f2c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00074f2e ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x00074f30 cbz r3, 0x74f3c | goto label_293;
| }
0x00074f32 ldr.w r3, [r8, 0x9c] | r3 = *((r8 + 0x9c));
0x00074f36 orrs r3, r0 | r3 |= r0;
0x00074f38 str.w r3, [r8, 0x9c] | __asm ("str.w r3, [r8, 0x9c]");
| }
| label_293:
0x00074f3c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00074f3e str r2, [sp, 0x30] | *(arg_30h) = r2;
0x00074f40 add r3, r1 | r3 += r1;
0x00074f42 ldr.w r1, [fp, 0x50] | r1 = *(arg_50h);
0x00074f46 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00074f48 tst r0, r1 |
0x00074f4a mov r0, r8 | r0 = r8;
0x00074f4c ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00074f4e str r1, [sp, 4] | *(arg_4h) = r1;
0x00074f50 mov.w r1, 2 | r1 = 2;
0x00074f54 ldr r3, [r3] | r3 = *(r3);
0x00074f56 str r3, [sp] | *(sp) = r3;
0x00074f58 ite ne |
| if ((r0 & r1) == 0) {
0x00074f5a movne r3, 1 | r3 = 1;
| }
| if ((r0 & r1) != 0) {
0x00074f5c moveq r3, 0 | r3 = 0;
| }
0x00074f5e bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00074f62 ldrb.w r3, [r4, 0xa9] | r3 = *((r4 + 0xa9));
0x00074f66 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
| if (r3 == 0) {
0x00074f68 cbnz r3, 0x74f86 |
0x00074f6a ldr.w r3, [r8, 0x6c] | r3 = *((r8 + 0x6c));
0x00074f6e cmp r3, 0 |
0x00074f70 itttt gt |
| if (r3 <= 0) {
0x00074f72 ldrgt r1, [r8, 0x68] | r1 = *((r8 + 0x68));
| }
| if (r3 <= 0) {
0x00074f76 addgt r3, r3, r3, lsl 2 | r3 += (r3 << 2);
| }
| if (r3 > 0) {
0x00074f7a add.w r1, r1, r3, lsl 2 | r1 += (r3 << 2);
| }
| if (r3 > 0) {
0x00074f7e movs r3, 1 | r3 = 1;
| }
0x00074f80 it gt |
| if (r3 <= 1) {
0x00074f82 strhgt r3, [r1, -0x12] | __asm ("strhgt r3, [r1, -0x12]");
| goto label_294;
| }
| }
| label_294:
0x00074f86 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
| }
0x00074f88 adds r2, 1 | r2++;
0x00074f8a cmp r2, r3 |
0x00074f8c blt 0x74f04 |
| }
0x00074f8e mov r4, r5 | r4 = r5;
0x00074f90 mov r5, r6 | r5 = r6;
0x00074f92 mov r6, r7 | r6 = r7;
| label_292:
0x00074f94 ldr.w r3, [fp, 0xcc] | r3 = *(arg_cch);
0x00074f98 cmp r3, 0 |
| if (r3 <= 0) {
0x00074f9a ble 0x74fdc | goto label_295;
| }
0x00074f9c str r4, [sp, 0x30] | *(arg_30h) = r4;
0x00074f9e movs r7, 0 | r7 = 0;
0x00074fa0 ldr r4, [sp, 0x2c] | r4 = *(arg_2ch);
| label_9:
0x00074fa2 ldr.w r3, [fp, 0xfc] | r3 = *(arg_fch);
0x00074fa6 ldr.w r3, [r3, r7, lsl 2] | offset_10 = r7 << 2;
| r3 = *((r3 + offset_10));
0x00074faa ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
| if (r3 != 0) {
0x00074fac cbnz r3, 0x74fb4 | goto label_296;
| }
0x00074fae b 0x74fba | goto label_297;
| do {
0x00074fb0 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
| if (r3 == 0) {
0x00074fb2 cbz r3, 0x74fba | goto label_297;
| }
| label_296:
0x00074fb4 ldr r2, [r3] | r2 = *(r3);
0x00074fb6 cmp r4, r2 |
0x00074fb8 bne 0x74fb0 |
| } while (r4 != r2);
| label_297:
0x00074fba str r3, [sp, 4] | *(arg_4h) = r3;
0x00074fbc mvn r3, 0xb | r3 = ~0xb;
0x00074fc0 str r3, [sp, 8] | *(arg_8h) = r3;
0x00074fc2 movs r3, 0 | r3 = 0;
0x00074fc4 mov r2, r3 | r2 = r3;
0x00074fc6 str r3, [sp] | *(sp) = r3;
0x00074fc8 movs r1, 0xa6 | r1 = 0xa6;
0x00074fca mov r0, r8 | r0 = r8;
0x00074fcc bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00074fd0 ldr.w r3, [fp, 0xcc] | r3 = *(arg_cch);
0x00074fd4 adds r7, 1 | r7++;
0x00074fd6 cmp r7, r3 |
| if (r7 < r3) {
0x00074fd8 blt 0x74fa2 | goto label_9;
| }
0x00074fda ldr r4, [sp, 0x30] | r4 = *(arg_30h);
| label_295:
0x00074fdc ldr.w r2, [fp, 0x68] | r2 = *(arg_68h);
0x00074fe0 movs r7, 0 | r7 = 0;
0x00074fe2 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00074fe6 str.w r7, [fp, 0xcc] | __asm ("str.w r7, [arg_cch]");
0x00074fea cmp r2, r7 |
0x00074fec str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00074fee it gt |
| if (r2 <= r7) {
0x00074ff0 strgt r4, [sp, 0x34] | *(arg_34h) = r4;
| }
| if (r2 <= r7) {
0x00074ff2 ble 0x75032 | goto label_298;
| }
| do {
0x00074ff4 ldr.w r2, [fp, 0x6c] | r2 = *(arg_6ch);
0x00074ff8 lsls r3, r7, 4 | r3 = r7 << 4;
0x00074ffa mov.w r4, -1 | r4 = -1;
0x00074ffe ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x00075000 movs r1, 0xa5 | r1 = 0xa5;
0x00075002 adds r7, 1 | r7++;
0x00075004 add.w ip, r2, r3 |
0x00075008 ldr r2, [r2, r3] | r2 = *((r2 + r3));
0x0007500a ldr.w r3, [ip, 4] | r3 = *((ip + 4));
0x0007500e str r4, [sp, 8] | *(arg_8h) = r4;
0x00075010 ldr.w r4, [ip, 0xc] | r4 = *((ip + 0xc));
0x00075014 str r4, [sp, 4] | *(arg_4h) = r4;
0x00075016 ldrb.w ip, [ip, 8] | ip = *((ip + 8));
0x0007501a str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x0007501e bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00075022 ldr.w r3, [fp, 0x68] | r3 = *(arg_68h);
0x00075026 cmp r7, r3 |
0x00075028 blt 0x74ff4 |
| } while (r7 < r3);
0x0007502a ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x0007502c ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00075030 str r3, [sp, 0x30] | *(arg_30h) = r3;
| label_298:
0x00075032 ldr.w r7, [fp, 0x70] | r7 = *(arg_70h);
0x00075036 ldr.w r3, [fp] | r3 = *(fp);
0x0007503a str r3, [sp, 0x34] | *(arg_34h) = r3;
0x0007503c cmp r7, 0 |
| if (r7 == 0) {
0x0007503e beq 0x750c6 | goto label_299;
| }
0x00075040 ldr r3, [pc, 0x3c8] |
0x00075042 strd r5, r6, [sp, 0x44] | __asm ("strd r5, r6, [sp, 0x44]");
0x00075046 ldr r5, [sp, 0x30] | r5 = *(arg_30h);
0x00075048 add r3, pc |
0x0007504a add.w r3, r3, 0x358 | r3 = 0xea7b0;
0x0007504e strd r3, r4, [sp, 0x3c] | __asm ("strd r3, r4, [sp, 0x3c]");
0x00075052 b 0x75088 |
| while (r0 != 0) {
0x00075054 ldr.w r2, [fp, 0x28] | r2 = *(arg_28h);
0x00075058 adds r3, r4, 2 | r3 = r4 + 2;
0x0007505a str r4, [r0, 8] | *((r0 + 8)) = r4;
0x0007505c str r4, [r0, 0x34] | *((r0 + 0x34)) = r4;
0x0007505e str r4, [r0, 0x48] | *((r0 + 0x48)) = r4;
0x00075060 str r4, [r0, 0x70] | *((r0 + 0x70)) = r4;
0x00075062 str r4, [r0, 0x7c] | *((r0 + 0x7c)) = r4;
0x00075064 str.w r4, [r0, 0x90] | __asm ("str.w r4, [r0, 0x90]");
0x00075068 str.w r4, [r0, 0xd0] | __asm ("str.w r4, [r0, 0xd0]");
0x0007506c adds r4, 1 | r4++;
0x0007506e str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00075070 str.w r3, [r0, 0x94] | __asm ("str.w r3, [r0, 0x94]");
0x00075074 movs r3, 0x10 | r3 = 0x10;
0x00075076 str r6, [r0, 0x40] | *((r0 + 0x40)) = r6;
0x00075078 str r4, [r0, 0x58] | *((r0 + 0x58)) = r4;
0x0007507a strh r3, [r0, 0x3e] | *((r0 + 0x3e)) = r3;
| if (r2 == 0) {
0x0007507c cbnz r2, 0x75084 |
0x0007507e movs r3, 1 | r3 = 1;
0x00075080 str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
| }
0x00075084 ldr r7, [r7] | r7 = *(r7);
| if (r7 == 0) {
0x00075086 cbz r7, 0x750c0 | goto label_300;
| }
0x00075088 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x0007508a movs r1, 0x62 | r1 = 0x62;
0x0007508c ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x0007508e mov r0, fp | r0 = fp;
0x00075090 ldr r4, [r7, 0xc] | r4 = *((r7 + 0xc));
0x00075092 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00075094 subs r6, r4, 1 | r6 = r4 - 1;
0x00075096 add.w r3, r3, r2, lsl 4 | r3 += (r2 << 4);
0x0007509a ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0007509c ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x0007509e str r1, [sp] | *(sp) = r1;
0x000750a0 movs r1, 0 | r1 = 0;
0x000750a2 bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x000750a6 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000750a8 mov r1, r6 | r1 = r6;
0x000750aa mov r0, r5 | r0 = r5;
0x000750ac ldr r2, [r3] | r2 = *(r3);
0x000750ae bl 0x2b744 | fcn_0002b744 (r0, r1, r2);
0x000750b2 ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x000750b4 movs r1, 0xc | r1 = 0xc;
0x000750b6 mov r0, r5 | r0 = r5;
0x000750b8 bl 0x1b57c | r0 = fcn_0001b57c (r0, r1, r2);
0x000750bc cmp r0, 0 |
0x000750be bne 0x75054 |
| }
| label_300:
0x000750c0 ldrd r4, r5, [sp, 0x40] | __asm ("ldrd r4, r5, [arg_40h]");
0x000750c4 ldr r6, [sp, 0x48] | r6 = *(arg_48h);
| label_299:
0x000750c6 ldr.w r7, [fp, 0x44] | r7 = *(arg_44h);
0x000750ca cmp r7, 0 |
| if (r7 == 0) {
0x000750cc beq 0x75132 | goto label_301;
| }
0x000750ce mov.w r3, 0 | r3 = 0;
0x000750d2 strb.w r3, [fp, 0x17] | *(arg_17h) = r3;
0x000750d6 ldr r2, [r7] | r2 = *(r7);
0x000750d8 cmp r2, 0 |
| if (r2 <= 0) {
0x000750da ble 0x75132 | goto label_301;
| }
0x000750dc str r7, [sp, 0x30] | *(arg_30h) = r7;
| do {
0x000750de ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x000750e0 ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x000750e2 cmp r3, 0 |
| if (r3 > 0) {
0x000750e4 ble 0x75120 |
0x000750e6 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x000750ea ldr r1, [r1, 8] | r1 = *((r1 + 8));
| if (r0 == 0) {
0x000750ec cbz r0, 0x75120 | goto label_302;
| }
0x000750ee mov r2, r3 | r2 = r3;
0x000750f0 mov r0, fp | r0 = fp;
0x000750f2 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x000750f4 str r1, [sp, 0x34] | *(arg_34h) = r1;
0x000750f6 bl 0x63a00 | fcn_00063a00 (r0, r1);
0x000750fa ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x000750fc mov r2, r0 | r2 = r0;
0x000750fe ldr r1, [sp, 0x34] | r1 = *(arg_34h);
0x00075100 cmp r3, r0 |
| if (r3 != r0) {
0x00075102 beq 0x7511e |
0x00075104 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00075106 ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x0007510a tst.w r1, 0x200000 |
0x0007510e mov.w r1, 0 | r1 = 0;
0x00075112 str r1, [sp] | *(sp) = r1;
0x00075114 ite ne |
| if ((r1 & 0x200000) == 0) {
0x00075116 movne r1, 0x4d | r1 = 0x4d;
| }
| if ((r1 & 0x200000) != 0) {
0x00075118 moveq r1, 0x4e | r1 = 0x4e;
| }
0x0007511a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0007511e ldr r2, [r7] | r2 = *(r7);
| }
| label_302:
0x00075120 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00075122 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00075124 adds r3, 1 | r3++;
0x00075126 cmp r3, r2 |
0x00075128 add.w r1, r1, 0x10 | r1 += 0x10;
0x0007512c str r3, [sp, 0x38] | *(arg_38h) = r3;
0x0007512e str r1, [sp, 0x30] | *(arg_30h) = r1;
0x00075130 blt 0x750de |
| } while (r3 < r2);
| label_301:
0x00075132 ldrb.w r3, [fp, 0x91] | r3 = *(arg_91h);
0x00075136 cmp r3, 0 |
| if (r3 != 0) {
0x00075138 bne.w 0x76622 | goto label_303;
| }
| label_104:
0x0007513c movs r1, 1 | r1 = 1;
0x0007513e mov r0, r8 | r0 = r8;
0x00075140 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x00075144 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00075148 cmp r3, 0 |
| if (r3 != 0) {
0x0007514a bne.w 0x75940 | goto label_90;
| }
0x0007514e ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075150 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00075154 cmp r3, 0 |
| if (r3 != 0) {
0x00075156 bne.w 0x75940 | goto label_90;
| }
| label_91:
0x0007515a mov r0, r8 | r0 = r8;
0x0007515c mov r1, fp | r1 = fp;
0x0007515e bl 0x290a0 | fcn_000290a0 (r0, r1);
0x00075162 movs r3, 0x65 | r3 = 0x65;
0x00075164 str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
0x00075168 b.w 0x723bc | goto label_6;
0x0007516c movs r3, 2 | r3 = 2;
0x0007516e strb.w r3, [fp, 0xc7] | *(arg_c7h) = r3;
0x00075172 b.w 0x723bc | goto label_6;
0x00075176 movs r3, 1 | r3 = 1;
0x00075178 sub.w r2, r6, 0x14 | r2 = r6 - 0x14;
0x0007517c str r3, [sp] | *(sp) = r3;
0x0007517e sub.w r1, r6, 0x20 | r1 = r6 - 0x20;
0x00075182 adds r3, r6, 4 | r3 = r6 + 4;
0x00075184 mov r0, fp | r0 = fp;
0x00075186 bl 0xa3c8c | fcn_000a3c8c (r0, r1, r2, r3, r4, r5, r6);
0x0007518a b.w 0x723bc | goto label_6;
| label_213:
0x0007518e mov r2, r0 | r2 = r0;
0x00075190 movs r3, 0 | r3 = 0;
0x00075192 movs r1, 0x13 | r1 = 0x13;
0x00075194 mov r0, fp | r0 = fp;
0x00075196 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007519a str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x0007519e b.w 0x737b0 | goto label_10;
| label_214:
0x000751a2 mov r2, r0 | r2 = r0;
0x000751a4 movs r3, 0 | r3 = 0;
0x000751a6 movs r1, 0x13 | r1 = 0x13;
0x000751a8 mov r0, fp | r0 = fp;
0x000751aa bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x000751ae str r0, [r6, -0x14] | *((r6 - 0x14)) = r0;
0x000751b2 b.w 0x737fc | goto label_11;
| label_269:
0x000751b6 cmp r3, 0 |
| if (r3 != 0) {
0x000751b8 bne.w 0x748e8 | goto label_12;
| }
| label_16:
0x000751bc ldr.w r0, [lr, 0xc] | r0 = *((lr + 0xc));
0x000751c0 mov r1, sl | r1 = sl;
0x000751c2 movs r2, 0 | r2 = 0;
0x000751c4 adds r0, 0x28 | r0 += 0x28;
0x000751c6 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x000751ca ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x000751cc cmp r1, 0 |
| if (r1 == 0) {
0x000751ce beq.w 0x7490e | goto label_13;
| }
0x000751d2 ldrd fp, r6, [sp, 0x3c] | __asm ("ldrd fp, r6, [arg_3ch]");
0x000751d6 ldrd r4, r5, [sp, 0x34] | __asm ("ldrd r4, r5, [arg_34h]");
0x000751da ldrd sb, sl, [sp, 0x44] | __asm ("ldrd sb, sl, [arg_44h]");
0x000751de mov r0, fp | r0 = fp;
0x000751e0 bl 0x77d58 | fcn_00077d58 (r0, r1);
0x000751e4 b.w 0x74940 | goto label_14;
| label_157:
0x000751e8 ldrd r5, r6, [sp, 0x30] | __asm ("ldrd r5, r6, [arg_30h]");
0x000751ec mov r4, r8 | r4 = r8;
0x000751ee movs r3, 0 | r3 = 0;
0x000751f0 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
| label_22:
0x000751f2 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x000751f4 ldrb r3, [r1, 0xa] | r3 = *((r1 + 0xa));
0x000751f6 cmp r3, 0 |
| if (r3 != 0) {
0x000751f8 bne.w 0x723b4 | goto label_15;
| }
0x000751fc ldr r0, [sp, 0x3c] | r0 = *(arg_3ch);
0x000751fe bl 0x1921c | fcn_0001921c (r0, r1);
0x00075202 b.w 0x723b4 | goto label_15;
| label_268:
0x00075206 add lr, r3 | lr += r3;
0x00075208 b 0x751bc | goto label_16;
| label_241:
0x0007520a ldr r7, [r6, 8] | r7 = *((r6 + 8));
0x0007520c adds r3, r6, 4 | r3 = r6 + 4;
0x0007520e ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x00075210 movs r1, 0x9b | r1 = 0x9b;
0x00075212 mov r0, fp | r0 = fp;
0x00075214 str r7, [sp, 0x2c] | *(arg_2ch) = r7;
0x00075216 bl 0x1bffc | fcn_0001bffc (r0, r1, r2);
0x0007521a str r0, [sp, 0x3c] | *(arg_3ch) = r0;
0x0007521c str r0, [r6, 4] | *((r6 + 4)) = r0;
0x0007521e cmp r0, 0 |
| if (r0 == 0) {
0x00075220 beq.w 0x723bc | goto label_6;
| }
0x00075224 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00075226 ldr.w r2, [fp] | r2 = *(fp);
0x0007522a str r3, [sp, 0x38] | *(arg_38h) = r3;
0x0007522c ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x0007522e str r2, [sp, 0x34] | *(arg_34h) = r2;
0x00075230 cmp r3, 0 |
| if (r3 != 0) {
0x00075232 bne.w 0x75564 | goto label_304;
| }
0x00075236 ldrh.w r7, [fp, 0xc4] | r7 = *(arg_c4h);
0x0007523a adds r7, 1 | r7++;
0x0007523c sxth r3, r7 | __asm ("sxth r3, r7");
0x0007523e str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00075240 strh.w r3, [fp, 0xc4] | *(arg_c4h) = r3;
| label_34:
0x00075244 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00075246 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00075248 strh r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
0x0007524a ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x0007524c ldr.w r3, [r3, 0x94] | r3 = *((r3 + 0x94));
0x00075250 cmp r3, r2 |
| if (r3 >= r2) {
0x00075252 bge.w 0x723bc | goto label_6;
| }
0x00075256 ldr r1, [pc, 0x1b8] |
0x00075258 mov r0, fp | r0 = fp;
0x0007525a add r1, pc | r1 = 0xea670;
0x0007525c bl 0x25778 | fcn_00025778 (r0);
0x00075260 b.w 0x723bc | goto label_6;
| label_276:
0x00075264 mov r0, r8 | r0 = r8;
0x00075266 cmp.w r8, 0 |
| if (r8 != 0) {
0x0007526a beq 0x75278 |
0x0007526c ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x0007526e movs r3, 0 | r3 = 0;
0x00075270 movs r2, 1 | r2 = 1;
0x00075272 mov r1, r8 | r1 = r8;
0x00075274 bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
| }
0x00075278 movs r3, 0xb | r3 = 0xb;
0x0007527a str r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
0x0007527c strb r3, [r7, 1] | *((r7 + 1)) = r3;
| label_275:
0x0007527e cmp.w r8, 0 |
| if (r8 == 0) {
0x00075282 beq.w 0x74a5a | goto label_17;
| }
0x00075286 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00075288 mov r1, r8 | r1 = r8;
0x0007528a bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x0007528c stc2 p7, c15, [r1], 0x3fc | __asm ("stc2 p7, c15, [r1], aav.0x000000ff");
| if (r4 != 0) {
0x00075290 cbnz r4, 0x7530c | goto label_272;
| }
| label_258:
0x00075292 sub.w r2, r6, 0x44 | r2 = r6 - 0x44;
0x00075296 sub.w r3, r6, 0x74 | r3 = r6 - 0x74;
0x0007529a ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x0007529e stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x000752a2 b.w 0x723bc | goto label_6;
| label_264:
0x000752a6 ldr r1, [sp, 0x34] | r1 = *(arg_34h);
0x000752a8 movs r2, 1 | r2 = 1;
0x000752aa mov r0, r8 | r0 = r8;
0x000752ac bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x000752b0 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x000752b2 str r0, [r7, 0x18] | *((r7 + 0x18)) = r0;
0x000752b4 cmp r1, 0 |
| if (r1 == 0) {
0x000752b6 beq.w 0x76252 | goto label_305;
| }
0x000752ba movs r3, 0 | r3 = 0;
0x000752bc movs r2, 1 | r2 = 1;
0x000752be mov r0, r8 | r0 = r8;
0x000752c0 bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
| label_87:
0x000752c4 str r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
0x000752c6 movs r2, 1 | r2 = 1;
0x000752c8 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x000752ca mov r0, r8 | r0 = r8;
0x000752cc bl 0x32550 | fcn_00032550 (r0, r1, r2, r3);
0x000752d0 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x000752d2 str r0, [r7, 0x10] | *((r7 + 0x10)) = r0;
0x000752d4 strb r3, [r7, 1] | *((r7 + 1)) = r3;
| label_263:
0x000752d6 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
| if (r3 != 0) {
0x000752d8 cbz r3, 0x752e2 |
0x000752da mov r1, r3 | r1 = r3;
0x000752dc mov r0, r8 | r0 = r8;
0x000752de bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x000752e2 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000752e4 cmp r3, 0 |
| if (r3 == 0) {
0x000752e6 beq.w 0x7471e | goto label_18;
| }
0x000752ea mov r1, r3 | r1 = r3;
0x000752ec mov r0, r8 | r0 = r8;
0x000752ee bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000752f2 b.w 0x7471e | goto label_18;
| label_194:
0x000752f6 movs r0, 0x64 | r0 = 0x64;
0x000752f8 movs r1, 0 | r1 = 0;
0x000752fa bl 0x12abc | r0 = fcn_00012abc (r0);
0x000752fe mov r7, r0 | r7 = r0;
0x00075300 b.w 0x73008 | goto label_19;
| label_195:
0x00075304 str r7, [r6, -0x8] | *((r6 - 0x8)) = r7;
0x00075308 b.w 0x723bc | goto label_6;
| label_272:
0x0007530c movs r0, 0x30 | r0 = 0x30;
0x0007530e movs r1, 0 | r1 = 0;
0x00075310 bl 0x12abc | r0 = fcn_00012abc (r0);
0x00075314 mov r8, r0 | r8 = r0;
0x00075316 b.w 0x749c4 | goto label_20;
| label_244:
0x0007531a movs r0, 0x18 | r0 = 0x18;
0x0007531c movs r1, 0 | r1 = 0;
0x0007531e bl 0x12abc | r0 = fcn_00012abc (r0);
0x00075322 mov r3, r0 | r3 = r0;
0x00075324 b.w 0x742a6 | goto label_21;
| label_150:
0x00075328 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x0007532a cmp r3, 0 |
| if (r3 != 0) {
0x0007532c bne.w 0x751f2 | goto label_22;
| }
0x00075330 b.w 0x723b4 | goto label_15;
| label_178:
0x00075334 movs r0, 0x64 | r0 = 0x64;
0x00075336 movs r1, 0 | r1 = 0;
0x00075338 bl 0x12abc | r0 = fcn_00012abc (r0);
0x0007533c mov r7, r0 | r7 = r0;
0x0007533e b.w 0x72776 | goto label_23;
| label_200:
0x00075342 subs r1, r3, 1 | r1 = r3 - 1;
0x00075344 cmp r1, 0 |
0x00075346 itt gt |
| if (r1 <= 0) {
0x00075348 addgt r3, r3, r3, lsl 3 | r3 += (r3 << 3);
| }
| if (r1 > 0) {
0x0007534c add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
| }
| if (r1 <= 0) {
0x00075350 ble 0x75362 | goto label_306;
| }
| do {
0x00075352 ldrb r0, [r3, -0x64] | r0 = *((r3 - 0x64));
0x00075356 subs r1, 1 | r1--;
0x00075358 sub.w r3, r3, 0x48 | r3 -= 0x48;
0x0007535c strb.w r0, [r3, 0x2c] | *((r3 + 0x2c)) = r0;
0x00075360 bne 0x75352 |
| } while (r1 != 1);
| label_306:
0x00075362 movs r3, 0 | r3 = 0;
0x00075364 mov.w r1, 0x800 | r1 = 0x800;
0x00075368 strb.w r3, [r2, 0x2c] | *((r2 + 0x2c)) = r3;
0x0007536c mov r0, fp | r0 = fp;
0x0007536e str r3, [sp, 0x10] | *(arg_10h) = r3;
0x00075370 strd r3, r3, [sp, 4] | __asm ("strd r3, r3, [sp, 4]");
0x00075374 str r3, [sp] | *(sp) = r3;
0x00075376 str r1, [sp, 0xc] | *(arg_ch) = r1;
0x00075378 mov r1, r3 | r1 = r3;
0x0007537a bl 0x2acc4 | fcn_0002acc4 (r0, r1, r2, r3, r4, r5, r6);
0x0007537e ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00075380 movs r3, 0 | r3 = 0;
0x00075382 ldr r1, [r6, -0x44] | r1 = *((r6 - 0x44));
0x00075386 str r2, [sp, 0xc] | *(arg_ch) = r2;
0x00075388 ldr r2, [r6, -0x8] | r2 = *((r6 - 0x8));
0x0007538c strd r7, r0, [sp] | __asm ("strd r7, r0, [sp]");
0x00075390 mov r0, fp | r0 = fp;
0x00075392 str r2, [sp, 8] | *(arg_8h) = r2;
0x00075394 mov r2, r3 | r2 = r3;
0x00075396 bl 0x25dd8 | fcn_00025dd8 (r0, r1, r2, r3, r4, r5, r6);
0x0007539a str r0, [r6, -0x44] | *((r6 - 0x44)) = r0;
0x0007539e b.w 0x723bc | goto label_6;
| label_187:
0x000753a2 ldr r1, [pc, 0x70] |
0x000753a4 mov r0, fp | r0 = fp;
0x000753a6 add r1, pc | r1 = 0xea7c0;
0x000753a8 bl 0x25778 | fcn_00025778 (r0);
0x000753ac b.w 0x72f4c | goto label_24;
| label_205:
0x000753b0 cmp r3, 3 |
| if (r3 == 3) {
0x000753b2 beq.w 0x734ea | goto label_25;
| }
0x000753b6 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x000753b8 mov r2, r8 | r2 = r8;
0x000753ba mov r0, fp | r0 = fp;
0x000753bc bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
0x000753c0 b.w 0x734ea | goto label_25;
| label_197:
0x000753c4 cmp r3, 3 |
| if (r3 == 3) {
0x000753c6 beq.w 0x7312e | goto label_26;
| }
0x000753ca ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x000753cc mov r2, r8 | r2 = r8;
0x000753ce mov r0, fp | r0 = fp;
0x000753d0 bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
0x000753d4 b.w 0x7312e | goto label_26;
| label_193:
0x000753d8 cmp r3, 0 |
| if (r3 != 0) {
0x000753da bne.w 0x72f76 | goto label_27;
| }
0x000753de b.w 0x723bc | goto label_6;
| label_174:
0x000753e2 movs r1, 0 | r1 = 0;
0x000753e4 movs r0, 0xc | r0 = 0xc;
0x000753e6 bl 0x12abc | fcn_00012abc (r0);
0x000753ea b.w 0x72644 | goto label_28;
| label_208:
0x00075418 mov r1, r7 | r1 = r7;
0x0007541a cmp r7, 0 |
| if (r7 == 0) {
0x0007541c beq.w 0x735d4 | goto label_29;
| }
0x00075420 ldr.w r0, [fp] | r0 = *(fp);
0x00075424 movs r2, 1 | r2 = 1;
0x00075426 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x0007542a movs r1, 0 | r1 = 0;
0x0007542c b.w 0x735d4 | goto label_29;
| label_286:
0x00075430 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x00075434 cmp r3, 0 |
| if (r3 != 0) {
0x00075436 bne.w 0x723bc | goto label_6;
| }
0x0007543a movs r3, 1 | r3 = 1;
0x0007543c str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
0x00075440 b.w 0x723bc | goto label_6;
| label_184:
0x00075444 ldrd r4, r5, [sp, 0x44] | __asm ("ldrd r4, r5, [arg_44h]");
| label_183:
0x00075448 ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x0007544a ands r3, r2, 7 | r3 = r2 & 7;
| if (r3 == r2) {
0x0007544e bne 0x75474 |
0x00075450 adds r2, 8 | r2 += 8;
0x00075452 ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
0x00075454 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x00075458 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x0007545a lsls r2, r2, 2 | r2 <<= 2;
0x0007545c bl 0x1b3a0 | fcn_0001b3a0 (r0, r1, r2);
0x00075460 str r0, [sp, 0x3c] | *(arg_3ch) = r0;
0x00075462 cmp r0, 0 |
| if (r0 == 0) {
0x00075464 beq.w 0x765fe | goto label_307;
| }
0x00075468 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x0007546a ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x0007546c str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0007546e ldrsh.w r3, [r3, 0x2a] | r3 = *((r3 + 0x2a));
0x00075472 str r3, [sp, 0x40] | *(arg_40h) = r3;
| }
0x00075474 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00075476 movs r2, 0 | r2 = 0;
0x00075478 ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
0x0007547a add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0007547e add.w r8, r1, r3, lsl 2 | r8 = r1 + (r3 << 2);
0x00075482 str.w r2, [r8, 0xc] | __asm ("str.w r2, [r8, 0xc]");
0x00075486 str.w r2, [r8, 4] | __asm ("str.w r2, [r8, 4]");
0x0007548a str.w r2, [r8, 8] | __asm ("str.w r2, [r8, 8]");
0x0007548e str.w r2, [r8, 0x10] | __asm ("str.w r2, [r8, 0x10]");
0x00075492 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00075494 str.w r2, [r1, r3, lsl 2] | __asm ("str.w r2, [r1, r3, lsl 2]");
0x00075498 strb.w r7, [r8, 0xf] | *((r8 + 0xf)) = r7;
0x0007549c ldr r7, [r6, 8] | r7 = *((r6 + 8));
0x0007549e cmp r7, 0 |
| if (r7 != 0) {
0x000754a0 bne.w 0x75c94 | goto label_308;
| }
0x000754a4 movs r3, 0x41 | r3 = 0x41;
0x000754a6 strb.w r3, [r8, 0xd] | *((r8 + 0xd)) = r3;
0x000754aa movs r3, 1 | r3 = 1;
0x000754ac strb.w r3, [r8, 0xe] | *((r8 + 0xe)) = r3;
| label_67:
0x000754b0 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000754b2 ldrh r3, [r2, 0x2a] | r3 = *((r2 + 0x2a));
0x000754b4 adds r3, 1 | r3++;
0x000754b6 strh r3, [r2, 0x2a] | *((r2 + 0x2a)) = r3;
0x000754b8 ldrh r3, [r2, 0x2c] | r3 = *((r2 + 0x2c));
0x000754ba adds r3, 1 | r3++;
0x000754bc strh r3, [r2, 0x2c] | *((r2 + 0x2c)) = r3;
0x000754be movs r3, 0 | r3 = 0;
0x000754c0 str.w r3, [fp, 0x4c] | __asm ("str.w r3, [arg_4ch]");
0x000754c4 b.w 0x723bc | goto label_6;
| label_270:
0x000754c8 ldr.w r1, [pc, 0xc30] | r1 = *(0x000760fc);
0x000754cc movs r3, 0x6d | r3 = 0x6d;
0x000754ce add r1, pc | r1 += pc;
0x000754d0 b 0x754e8 | goto label_309;
| label_30:
0x000754d2 add r3, r5 | r3 += r5;
0x000754d4 add r2, r5 | r2 += r5;
0x000754d6 ldrb.w r0, [r3, 0x140] | r0 = *((r3 + 0x140));
0x000754da ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x000754de cmp r0, r3 |
| if (r0 != r3) {
0x000754e0 bne.w 0x7490e | goto label_13;
| }
| label_31:
0x000754e4 ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
| label_309:
0x000754e8 ldrb r2, [ip, 1]! | r2 = *((ip += 1));
0x000754ec cmp r3, r2 |
| if (r3 != r2) {
0x000754ee bne 0x754d2 | goto label_30;
| }
0x000754f0 cmp r3, 0 |
| if (r3 != 0) {
0x000754f2 bne 0x754e4 | goto label_31;
| }
0x000754f4 b 0x751bc | goto label_16;
| label_234:
0x000754f6 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x000754f8 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x000754fa ldr.w r8, [r2, 0x38] | r8 = *((r2 + 0x38));
0x000754fe cmp r3, 0 |
| if (r3 == 0) {
0x00075500 beq.w 0x75c2e | goto label_310;
| }
0x00075504 cmp.w r8, 0 |
| if (r8 == 0) {
0x00075508 beq.w 0x75c26 | goto label_311;
| }
0x0007550c ldr.w r3, [pc, 0xbf0] |
0x00075510 add r3, pc | r3 = 0xeb614;
| label_66:
0x00075512 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00075514 mov r0, fp | r0 = fp;
0x00075516 ldr.w r1, [pc, 0xbec] |
0x0007551a ldr r2, [r2] | r2 = *(r2);
0x0007551c add r1, pc | r1 = 0xeb626;
0x0007551e str r2, [sp] | *(sp) = r2;
0x00075520 ldr.w r2, [pc, 0xbe4] |
0x00075524 add r2, pc | r2 = 0xeb630;
0x00075526 bl 0x25778 | fcn_00025778 (r0);
0x0007552a ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x0007552c mov r0, r7 | r0 = r7;
0x0007552e bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00075532 b.w 0x723bc | goto label_6;
| label_172:
0x00075536 ldr.w r2, [pc, 0xbd4] | r2 = *(0x0007610c);
0x0007553a add r2, pc | r2 += pc;
0x0007553c b.w 0x725d4 | goto label_32;
| label_185:
0x00075540 ldr.w r1, [pc, 0xbcc] | r1 = *(0x00076110);
0x00075544 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00075546 add r1, pc | r1 += pc;
0x00075548 blx 0x85a8 | r0 = fcn_000085a8 ();
0x0007554c cmp r0, 0 |
| if (r0 == 0) {
0x0007554e beq.w 0x75a1e | goto label_312;
| }
0x00075552 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00075554 b.w 0x72a68 | goto label_33;
| label_233:
0x00075558 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x0007555a mov r0, r7 | r0 = r7;
0x0007555c bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00075560 b.w 0x723bc | goto label_6;
| label_304:
0x00075564 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x00075566 ldrb r2, [r2] | r2 = *(r2);
0x00075568 cmp r2, 0x3f |
| if (r2 != 0x3f) {
0x0007556a bne.w 0x75a2a | goto label_313;
| }
0x0007556e ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00075570 ldr.w r7, [r2, 0x94] | r7 = *((r2 + 0x94));
0x00075574 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00075576 cmp r2, 2 |
| if (r2 != 2) {
0x00075578 bne.w 0x75f7a | goto label_314;
| }
0x0007557c subs r3, 0x30 | r3 -= 0x30;
0x0007557e asrs r2, r3, 0x1f | r2 = r3 >> 0x1f;
0x00075580 strd r3, r2, [sp, 0x78] | __asm ("strd r3, r2, [sp, 0x78]");
| label_71:
0x00075584 cmp r3, 1 |
0x00075586 sbcs r1, r2, 0 | __asm ("sbcs r1, r2, 0");
| if (r3 < 1) {
0x0007558a blt.w 0x75f94 | goto label_315;
| }
0x0007558e asrs r1, r7, 0x1f | r1 = r7 >> 0x1f;
0x00075590 cmp r7, r3 |
0x00075592 sbcs r1, r2 | __asm ("sbcs r1, r2");
| if (r7 < r3) {
0x00075594 blt.w 0x75f94 | goto label_315;
| }
0x00075598 sxth r2, r3 | __asm ("sxth r2, r3");
0x0007559a ldrsh.w r3, [fp, 0xc4] | r3 = *(arg_c4h);
0x0007559e ldr.w r8, [fp, 0xd8] | r8 = *(arg_d8h);
0x000755a2 str r2, [sp, 0x30] | *(arg_30h) = r2;
0x000755a4 cmp r3, r2 |
0x000755a6 it lt |
| if (r3 < r2) {
0x000755a8 strhlt r2, [fp, 0xc4] | __asm ("strhlt r2, [arg_c4h]");
| }
| if (r3 >= r2) {
0x000755ac bge.w 0x7651c | goto label_316;
| }
| label_59:
0x000755b0 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x000755b2 adds r3, r2, 3 | r3 = r2 + 3;
0x000755b4 ands.w r3, r3, r2, asr 32 | r3 &= (r2 >> 32);
0x000755b8 it lo |
| if (r3 >= r3) {
0x000755ba movlo r3, r2 | r3 = r2;
| }
0x000755bc asrs r3, r3, 2 | r3 >>= 2;
0x000755be adds r1, r3, 3 | r1 = r3 + 3;
0x000755c0 mov r0, r1 | r0 = r1;
0x000755c2 str r1, [sp, 0x40] | *(arg_40h) = r1;
0x000755c4 cmp.w r8, 0 |
| if (r8 == 0) {
0x000755c8 beq.w 0x76548 | goto label_317;
| }
0x000755cc ldrd r2, r3, [r8] | __asm ("ldrd r2, r3, [r8]");
0x000755d0 add.w lr, r1, r3 | lr = r1 + r3;
0x000755d4 cmp lr, r2 |
| if (lr > r2) {
0x000755d6 bgt.w 0x7604c | goto label_318;
| }
0x000755da mov r7, r8 | r7 = r8;
| label_79:
0x000755dc ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000755de ldr r0, [sp, 0x40] | r0 = *(arg_40h);
0x000755e0 ldr.w r8, [sp, 0x2c] | r8 = *(arg_2ch);
0x000755e4 str.w r2, [r7, r3, lsl 2] | __asm ("str.w r2, [r7, r3, lsl 2]");
0x000755e8 lsls r3, r3, 2 | r3 <<= 2;
0x000755ea ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x000755ec add.w ip, r3, 8 |
0x000755f0 add r3, r7 | r3 += r7;
0x000755f2 str r0, [r3, 4] | *((r3 + 4)) = r0;
0x000755f4 add.w r3, r7, ip | r3 = r7 + ip;
0x000755f8 mov r2, r8 | r2 = r8;
0x000755fa mov r0, r3 | r0 = r3;
0x000755fc str.w lr, [r7, 4] | __asm ("str.w lr, [r7, 4]");
0x00075600 blx 0x7dcc | fcn_00007dcc ();
0x00075604 movs r2, 0 | r2 = 0;
0x00075606 strb.w r2, [r0, r8] | *((r0 + r8)) = r2;
| label_96:
0x0007560a str.w r7, [fp, 0xd8] | __asm ("str.w r7, [arg_d8h]");
0x0007560e b 0x75244 | goto label_34;
| label_240:
0x00075610 ldr.w r0, [fp] | r0 = *(fp);
0x00075614 movs r3, 1 | r3 = 1;
0x00075616 adds r2, r6, 4 | r2 = r6 + 4;
0x00075618 movs r1, 0x70 | r1 = 0x70;
0x0007561a bl 0x1afec | r0 = fcn_0001afec (r0, r1, r2, r3);
0x0007561e cmp r0, 0 |
| if (r0 == 0) {
0x00075620 beq.w 0x74188 | goto label_35;
| }
0x00075624 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x00075626 str r7, [r0, 0xc] | *((r0 + 0xc)) = r7;
0x00075628 mov r7, r0 | r7 = r0;
0x0007562a orr r2, r2, 0x1100 | r2 |= 0x1100;
0x0007562e str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00075630 b.w 0x74188 | goto label_35;
| label_221:
0x00075634 ldr r0, [r6, -0x14] | r0 = *((r6 - 0x14));
0x00075638 b.w 0x73986 | goto label_36;
| label_245:
0x0007563c ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x0007563e sub.w r1, r6, 0x38 | r1 = r6 - 0x38;
0x00075642 ldr.w r0, [fp] | r0 = *(fp);
0x00075646 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00075648 strd r8, r2, [r3, 4] | __asm ("strd r8, r2, [r3, 4]");
0x0007564c bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x00075650 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075652 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00075654 str r0, [r3] | *(r3) = r0;
0x00075656 strb r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x00075658 b.w 0x742e2 | goto label_37;
| label_246:
0x0007565c add r3, sp, 0x70 | r3 += arg_70h;
0x0007565e ldr r1, [sp, 0x48] | r1 = *(arg_48h);
0x00075660 sub.w r2, r6, 0x44 | r2 = r6 - 0x44;
0x00075664 mov r0, fp | r0 = fp;
0x00075666 bl 0x25870 | r0 = fcn_00025870 (r0, r1, r2, r3);
0x0007566a subs r3, r0, 0 | r3 = r0 - 0;
0x0007566c str r3, [sp, 0x3c] | *(arg_3ch) = r3;
| if (r3 >= r0) {
0x0007566e bge.w 0x7433e | goto label_38;
| }
0x00075672 b.w 0x744b2 | goto label_39;
| label_202:
0x00075676 cmp r1, 0 |
| if (r1 == 0) {
0x00075678 beq.w 0x723bc | goto label_6;
| }
0x0007567c ldr.w r0, [fp] | r0 = *(fp);
0x00075680 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x00075684 b.w 0x723bc | goto label_6;
| label_210:
0x00075688 str r7, [r6, -0x2c] | *((r6 - 0x2c)) = r7;
0x0007568c b.w 0x723bc | goto label_6;
| label_179:
0x00075690 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00075692 cmp r1, 0 |
| if (r1 == 0) {
0x00075694 beq.w 0x7278e | goto label_40;
| }
0x00075698 ldr.w r0, [fp] | r0 = *(fp);
0x0007569c bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000756a0 b.w 0x7278e | goto label_40;
| label_207:
0x000756a4 ldr.w r0, [fp] | r0 = *(fp);
0x000756a8 cmp r1, 0 |
| if (r1 == 0) {
0x000756aa beq.w 0x73546 | goto label_41;
| }
0x000756ae bl 0x19168 | fcn_00019168 (r0, r1);
0x000756b2 b.w 0x73546 | goto label_41;
| label_206:
0x000756b6 ldr.w r0, [fp] | r0 = *(fp);
0x000756ba cmp r1, 0 |
| if (r1 == 0) {
0x000756bc beq.w 0x73524 | goto label_42;
| }
0x000756c0 bl 0x19168 | fcn_00019168 (r0, r1);
0x000756c4 b.w 0x73524 | goto label_42;
| label_171:
0x000756c8 strd r3, r1, [fp, 0xf4] | __asm ("strd r3, r1, [fp, 0xf4]");
0x000756cc b.w 0x723bc | goto label_6;
| label_239:
0x000756d0 cmp r1, 0 |
| if (r1 == 0) {
0x000756d2 beq.w 0x723bc | goto label_6;
| }
0x000756d6 mov r0, r3 | r0 = r3;
0x000756d8 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000756dc b.w 0x723bc | goto label_6;
| label_259:
0x000756e0 cmp r7, 0 |
| if (r7 == 0) {
0x000756e2 beq.w 0x723bc | goto label_6;
| }
0x000756e6 ldr.w r0, [fp] | r0 = *(fp);
0x000756ea mov r1, r7 | r1 = r7;
0x000756ec bl 0x18c5c | fcn_00018c5c (r0, r1);
0x000756f0 b.w 0x723bc | goto label_6;
| label_177:
0x000756f4 cmp r1, 0 |
| if (r1 == 0) {
0x000756f6 beq.w 0x7272a | goto label_43;
| }
0x000756fa ldr.w r0, [fp] | r0 = *(fp);
0x000756fe bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x00075702 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00075704 b.w 0x7272a | goto label_43;
| label_173:
0x00075708 ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x0007570c cmp r3, 0 |
| if (r3 == 0) {
0x0007570e beq.w 0x76008 | goto label_319;
| }
| label_78:
0x00075712 mov r0, fp | r0 = fp;
0x00075714 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00075718 cmp r0, 0 |
| if (r0 == 0) {
0x0007571a beq.w 0x723bc | goto label_6;
| }
0x0007571e b.w 0x725f0 | goto label_44;
| label_180:
0x00075722 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00075724 mov r0, fp | r0 = fp;
0x00075726 ldr.w r1, [pc, 0x9ec] |
0x0007572a ldr r2, [r3] | r2 = *(r3);
0x0007572c add r1, pc | r1 = 0xeb846;
0x0007572e bl 0x25778 | fcn_00025778 (r0);
0x00075732 b.w 0x723bc | goto label_6;
| label_199:
0x00075736 ldr r3, [r6, -0x10] | r3 = *((r6 - 0x10));
0x0007573a cmp r3, 0 |
| if (r3 != 0) {
0x0007573c bne.w 0x73234 | goto label_45;
| }
0x00075740 ldr r3, [r6, -0x8] | r3 = *((r6 - 0x8));
0x00075744 cmp r3, 0 |
| if (r3 != 0) {
0x00075746 bne.w 0x73234 | goto label_45;
| }
0x0007574a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0007574c cmp r3, 0 |
| if (r3 != 0) {
0x0007574e bne.w 0x73234 | goto label_45;
| }
0x00075752 str r2, [r6, -0x44] | *((r6 - 0x44)) = r2;
0x00075756 b.w 0x723bc | goto label_6;
| label_198:
0x0007575a ldr r7, [r6, -0x14] | r7 = *((r6 - 0x14));
0x0007575e ldr.w r8, [fp] | r8 = *(fp);
0x00075762 cmp r7, 0 |
| if (r7 == 0) {
0x00075764 beq.w 0x723bc | goto label_6;
| }
| do {
0x00075768 mov r1, r7 | r1 = r7;
0x0007576a ldr r7, [r7, 0x24] | r7 = *((r7 + 0x24));
0x0007576c mov r0, r8 | r0 = r8;
0x0007576e bl 0x18d78 | fcn_00018d78 (r0, r1);
0x00075772 cmp r7, 0 |
0x00075774 bne 0x75768 |
| } while (r7 != 0);
0x00075776 b.w 0x723bc | goto label_6;
| label_277:
0x0007577a ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x0007577e cmp r3, 0 |
| if (r3 == 0) {
0x00075780 beq.w 0x75fae | goto label_320;
| }
| label_73:
0x00075784 mov r0, fp | r0 = fp;
0x00075786 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0007578a mov r7, r0 | r7 = r0;
0x0007578c cmp r0, 0 |
| if (r0 != 0) {
0x0007578e bne.w 0x74b9e | goto label_46;
| }
0x00075792 b.w 0x723bc | goto label_6;
| label_220:
0x00075796 ldr r1, [r6, -0x14] | r1 = *((r6 - 0x14));
0x0007579a ldr.w r0, [fp] | r0 = *(fp);
| if (r1 != 0) {
0x0007579e cbz r1, 0x757a8 |
0x000757a0 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x000757a4 ldr.w r0, [fp] | r0 = *(fp);
| }
0x000757a8 ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x000757ac cmp r1, 0 |
| if (r1 == 0) {
0x000757ae beq.w 0x723bc | goto label_6;
| }
0x000757b2 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000757b6 b.w 0x723bc | goto label_6;
| label_216:
0x000757ba ldr.w r8, [r1, 8] | r8 = *((r1 + 8));
0x000757be strh.w r2, [sp, 0x8c] | *(arg_8ch) = r2;
0x000757c2 ldr.w r2, [pc, 0x954] | r2 = *(0x00076118);
0x000757c6 add r2, pc | r2 += pc;
0x000757c8 str r2, [sp, 0x7c] | *(arg_7ch) = r2;
0x000757ca ldr.w r2, [pc, 0x950] | r2 = *(0x0007611c);
0x000757ce add r2, pc | r2 += pc;
0x000757d0 str r2, [sp, 0x80] | *(arg_80h) = r2;
0x000757d2 movs r2, 0 | r2 = 0;
0x000757d4 str r2, [sp, 0x90] | *(arg_90h) = r2;
0x000757d6 cmp.w r8, 0 |
| if (r8 == 0) {
0x000757da beq 0x757f6 | goto label_321;
| }
0x000757dc mov r1, r8 | r1 = r8;
0x000757de add r0, sp, 0x78 | r0 += arg_78h;
0x000757e0 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x000757e4 ldrh.w r3, [sp, 0x8c] | r3 = *(arg_8ch);
0x000757e8 cmp r3, 0 |
| if (r3 == 0) {
0x000757ea beq.w 0x73840 | goto label_47;
| }
0x000757ee ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x000757f2 ldr.w r8, [r1, 8] | r8 = *((r1 + 8));
| label_321:
0x000757f6 movs r7, 0 | r7 = 0;
0x000757f8 ldr.w r0, [fp] | r0 = *(fp);
0x000757fc str r7, [r1, 8] | *((r1 + 8)) = r7;
0x000757fe bl 0x18c5c | fcn_00018c5c (r0, r1);
0x00075802 mov r3, r7 | r3 = r7;
0x00075804 mov r2, r8 | r2 = r8;
0x00075806 movs r1, 0xad | r1 = 0xad;
0x00075808 mov r0, fp | r0 = fp;
0x0007580a bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007580e ldr r2, [r6, -0x2c] | r2 = *((r6 - 0x2c));
0x00075812 mov r3, r0 | r3 = r0;
0x00075814 movs r1, 0x35 | r1 = 0x35;
0x00075816 mov r0, fp | r0 = fp;
0x00075818 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0007581c ldr r3, [r6, -0x20] | r3 = *((r6 - 0x20));
0x00075820 mov r2, r0 | r2 = r0;
0x00075822 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00075826 cmp r3, 0 |
| if (r3 == 0) {
0x00075828 beq.w 0x723bc | goto label_6;
| }
0x0007582c mov r3, r7 | r3 = r7;
0x0007582e movs r1, 0x13 | r1 = 0x13;
0x00075830 mov r0, fp | r0 = fp;
0x00075832 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x00075836 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x0007583a b.w 0x723bc | goto label_6;
| label_219:
0x0007583e cmp r7, 0 |
| if (r7 == 0) {
0x00075840 beq.w 0x73934 | goto label_48;
| }
0x00075844 ldr.w r0, [fp] | r0 = *(fp);
0x00075848 mov r1, r7 | r1 = r7;
0x0007584a bl 0x18c5c | fcn_00018c5c (r0, r1);
0x0007584e b.w 0x73934 | goto label_48;
| label_261:
0x00075852 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
| if (r3 != 0) {
0x00075854 cbz r3, 0x7585e |
0x00075856 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00075858 mov r1, r3 | r1 = r3;
0x0007585a bl 0x17b14 | fcn_00017b14 (r0, r1, r2);
| }
| if (r7 != 0) {
0x0007585e cbz r7, 0x75868 |
0x00075860 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00075862 mov r1, r7 | r1 = r7;
0x00075864 bl 0x18de4 | fcn_00018de4 (r0, r1);
| }
| label_58:
0x00075868 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x0007586a cmp r3, 0 |
| if (r3 == 0) {
0x0007586c beq.w 0x74666 | goto label_49;
| }
0x00075870 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00075872 mov r1, r3 | r1 = r3;
0x00075874 movs r2, 1 | r2 = 1;
0x00075876 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x0007587a b.w 0x74666 | goto label_49;
| label_283:
0x0007587e cmp r1, 0 |
| if (r1 == 0) {
0x00075880 beq.w 0x74da8 | goto label_50;
| }
0x00075884 ldr.w r0, [fp] | r0 = *(fp);
0x00075888 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x0007588c b.w 0x74da8 | goto label_50;
| label_284:
0x00075890 ldr.w r0, [fp] | r0 = *(fp);
| if (r1 != 0) {
0x00075894 cbz r1, 0x7589e |
0x00075896 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x0007589a ldr.w r0, [fp] | r0 = *(fp);
| }
0x0007589e cmp.w r8, 0 |
| if (r8 == 0) {
0x000758a2 beq.w 0x74de2 | goto label_51;
| }
0x000758a6 mov r1, r8 | r1 = r8;
0x000758a8 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x000758ac b.w 0x74de2 | goto label_51;
| label_265:
0x000758b0 ldr.w r0, [fp] | r0 = *(fp);
0x000758b4 mov r1, r8 | r1 = r8;
0x000758b6 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000758b8 bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x000758bc mov r2, r0 | r2 = r0;
0x000758be cmp r0, 0 |
| if (r0 == 0) {
0x000758c0 beq.w 0x723bc | goto label_6;
| }
0x000758c4 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000758c6 ldrb.w r1, [r7, 0x50] | r1 = *((r7 + 0x50));
0x000758ca str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x000758cc mov r0, r7 | r0 = r7;
0x000758ce bl 0x1f120 | fcn_0001f120 (r0, r1, r2, r3);
0x000758d2 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x000758d4 mov r1, r2 | r1 = r2;
0x000758d6 cmp r0, 0 |
| if (r0 == 0) {
0x000758d8 beq.w 0x75fa4 | goto label_322;
| }
0x000758dc mov r0, fp | r0 = fp;
0x000758de bl 0x6b744 | fcn_0006b744 (r0, r1, r2);
0x000758e2 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x000758e4 mov r0, r7 | r0 = r7;
0x000758e6 mov r1, r2 | r1 = r2;
0x000758e8 bl 0x159dc | fcn_000159dc (r0, r1);
0x000758ec b.w 0x723bc | goto label_6;
| label_217:
0x000758f0 ldr r1, [r6, -0x8] | r1 = *((r6 - 0x8));
0x000758f4 ldr.w r0, [fp] | r0 = *(fp);
0x000758f8 cmp r1, 0 |
| if (r1 == 0) {
0x000758fa beq.w 0x73878 | goto label_52;
| }
0x000758fe bl 0x18c5c | fcn_00018c5c (r0, r1);
0x00075902 b.w 0x73878 | goto label_52;
| label_186:
0x00075906 ldr.w r2, [pc, 0x818] |
0x0007590a mov r0, fp | r0 = fp;
0x0007590c ldr.w r1, [pc, 0x814] | r1 = *(0x00076124);
0x00075910 add r2, pc | r2 = 0xeba36;
0x00075912 add r1, pc | r1 += pc;
0x00075914 bl 0x25778 | fcn_00025778 (r0);
0x00075918 b.w 0x72d12 | goto label_53;
| label_222:
0x0007591c ldr.w r0, [fp] | r0 = *(fp);
0x00075920 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x00075924 b.w 0x73a32 | goto label_54;
| label_77:
0x00075928 ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x0007592c cmp r3, 0 |
| if (r3 == 0) {
0x0007592e beq.w 0x76752 | goto label_323;
| }
| label_116:
0x00075932 mov r0, fp | r0 = fp;
0x00075934 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00075938 mov r8, r0 | r8 = r0;
0x0007593a cmp r0, 0 |
| if (r0 != 0) {
0x0007593c bne.w 0x74e80 | goto label_55;
| }
| label_90:
0x00075940 movs r3, 1 | r3 = 1;
0x00075942 str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
0x00075946 b.w 0x723bc | goto label_6;
| label_260:
0x0007594a ldr.w r0, [fp] | r0 = *(fp);
0x0007594e bl 0x18d78 | fcn_00018d78 (r0, r1);
0x00075952 b.w 0x745f8 | goto label_56;
| label_243:
0x00075956 ldr.w r0, [fp] | r0 = *(fp);
0x0007595a bl 0x18d78 | fcn_00018d78 (r0, r1);
0x0007595e b.w 0x7423e | goto label_57;
| label_262:
0x00075962 ldr r1, [sp, 0x34] | r1 = *(arg_34h);
0x00075964 movs r2, 1 | r2 = 1;
0x00075966 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00075968 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x0007596a bl 0x3103c | fcn_0003103c (r0, r1, r2);
0x0007596e ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00075970 str.w r0, [r8, 8] | __asm ("str.w r0, [r8, 8]");
0x00075974 str.w r7, [r8, 0x20] | __asm ("str.w r7, [r8, 0x20]");
0x00075978 str.w r3, [r8, 0x1c] | __asm ("str.w r3, [r8, 0x1c]");
0x0007597c ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x0007597e strb.w r3, [r8, 1] | *((r8 + 1)) = r3;
0x00075982 cmp r7, 0 |
| if (r7 == 0) {
0x00075984 beq.w 0x75868 | goto label_58;
| }
0x00075988 ldr r1, [r7] | r1 = *(r7);
0x0007598a cmp r1, 0 |
| if (r1 == 0) {
0x0007598c beq.w 0x75868 | goto label_58;
| }
0x00075990 mov r0, fp | r0 = fp;
0x00075992 bl 0x25aa4 | fcn_00025aa4 (r0, r1);
0x00075996 b 0x75868 | goto label_58;
| label_215:
0x00075998 ldr r8, [r6, -0x2c] | r8 = *((r6 - 0x2c));
0x0007599c add r3, sp, 0x78 | r3 += arg_78h;
0x0007599e cmp.w r8, 0 |
| if (r8 != 0) {
0x000759a2 beq 0x759f2 |
0x000759a4 ldrb.w r7, [fp, 0xc8] | r7 = *(arg_c8h);
0x000759a8 cmp r7, 1 |
0x000759aa it ls |
| if (r7 > 1) {
0x000759ac addls r3, sp, 0x78 | r3 += arg_78h;
| }
| if (r7 >= 1) {
0x000759ae bls 0x759e4 |
0x000759b0 ldr.w r3, [pc, 0x774] | r3 = *(0x00076128);
0x000759b4 movs r2, 3 | r2 = 3;
0x000759b6 str r1, [sp, 0x84] | *(arg_84h) = r1;
0x000759b8 strd r1, r1, [sp, 0x88] | __asm ("strd r1, r1, [sp, 0x88]");
0x000759bc add r3, pc | r3 += pc;
0x000759be str r1, [sp, 0x90] | *(arg_90h) = r1;
0x000759c0 str r3, [sp, 0x7c] | *(arg_7ch) = r3;
0x000759c2 mov r1, r8 | r1 = r8;
0x000759c4 ldr.w r3, [pc, 0x764] | r3 = *(0x0007612c);
0x000759c8 str.w fp, [sp, 0x78] | __asm ("str.w fp, [arg_78h]");
0x000759cc add r3, pc | r3 += pc;
0x000759ce str r3, [sp, 0x80] | *(arg_80h) = r3;
0x000759d0 add r3, sp, 0x78 | r3 += arg_78h;
0x000759d2 mov r0, r3 | r0 = r3;
0x000759d4 strb.w r2, [fp, 0xc8] | *(arg_c8h) = r2;
0x000759d8 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000759da bl 0x301c4 | fcn_000301c4 (r0, r1);
0x000759de ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000759e0 strb.w r7, [fp, 0xc8] | *(arg_c8h) = r7;
| }
0x000759e4 ldr.w r0, [fp] | r0 = *(fp);
0x000759e8 mov r1, r8 | r1 = r8;
0x000759ea str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000759ec bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x000759f0 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
| }
0x000759f2 ldr r2, [r6, -0x20] | r2 = *((r6 - 0x20));
0x000759f6 ldr.w r0, [fp] | r0 = *(fp);
0x000759fa cmp r2, 0 |
| if (r2 != 0) {
0x000759fc bne.w 0x75fec | goto label_324;
| }
0x00075a00 ldr.w r2, [pc, 0x72c] |
0x00075a04 add r2, pc | r2 = 0xebb38;
| label_76:
0x00075a06 str r2, [sp, 0x78] | *(arg_78h) = r2;
0x00075a08 mov r2, r3 | r2 = r3;
0x00075a0a movs r3, 1 | r3 = 1;
0x00075a0c movs r1, 0x9a | r1 = 0x9a;
0x00075a0e str r3, [sp, 0x7c] | *(arg_7ch) = r3;
0x00075a10 movs r3, 0 | r3 = 0;
0x00075a12 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x00075a16 str r0, [r6, -0x2c] | *((r6 - 0x2c)) = r0;
0x00075a1a b.w 0x723bc | goto label_6;
| label_312:
0x00075a1e mov.w r3, 0x280 | r3 = 0x280;
0x00075a22 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x00075a26 b.w 0x723bc | goto label_6;
| label_313:
0x00075a2a ldr.w r8, [fp, 0xd8] | r8 = *(arg_d8h);
0x00075a2e ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00075a30 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x00075a32 mov r0, r8 | r0 = r8;
0x00075a34 bl 0xd6bc | r0 = fcn_0000d6bc (r0, r1, r2);
0x00075a38 sxth r3, r0 | __asm ("sxth r3, r0");
0x00075a3a str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00075a3c cmp r3, 0 |
| if (r3 != 0) {
0x00075a3e bne.w 0x75244 | goto label_34;
| }
0x00075a42 ldrh.w r7, [fp, 0xc4] | r7 = *(arg_c4h);
0x00075a46 adds r7, 1 | r7++;
0x00075a48 sxth r3, r7 | __asm ("sxth r3, r7");
0x00075a4a str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00075a4c strh.w r3, [fp, 0xc4] | *(arg_c4h) = r3;
0x00075a50 b 0x755b0 | goto label_59;
| label_247:
0x00075a52 ldr.w r1, [pc, 0x6e0] |
0x00075a56 mov r0, fp | r0 = fp;
0x00075a58 add r1, pc | r1 = 0xebb92;
0x00075a5a bl 0x25778 | fcn_00025778 (r0);
0x00075a5e b.w 0x744b2 | goto label_39;
| label_257:
0x00075a62 ldrb.w r3, [r8, 0xa] | r3 = *((r8 + 0xa));
0x00075a66 cmp r3, 0 |
| if (r3 != 0) {
0x00075a68 bne.w 0x744ee | goto label_60;
| }
0x00075a6c mov r1, r8 | r1 = r8;
0x00075a6e mov r0, r7 | r0 = r7;
0x00075a70 bl 0x1921c | fcn_0001921c (r0, r1);
0x00075a74 b.w 0x744ee | goto label_60;
| label_273:
0x00075a78 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075a7a cmp r3, 0 |
| if (r3 == 0) {
0x00075a7c beq.w 0x74a1a | goto label_61;
| }
0x00075a80 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00075a82 mov r0, r7 | r0 = r7;
0x00075a84 movs r2, 1 | r2 = 1;
0x00075a86 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x00075a8a b.w 0x74a1a | goto label_61;
| label_248:
0x00075a8e ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075a90 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
| if (r1 != 0) {
0x00075a92 cbz r1, 0x75a9a |
0x00075a94 mov r0, r7 | r0 = r7;
0x00075a96 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00075a9a ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00075a9c movs r3, 0 | r3 = 0;
0x00075a9e str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x00075aa0 b.w 0x74360 | goto label_62;
| label_285:
0x00075aa4 mov r8, r1 | r8 = r1;
0x00075aa6 mov r3, r7 | r3 = r7;
0x00075aa8 b.w 0x74e2e | goto label_63;
| label_236:
0x00075aac ldr.w r8, [sp, 0x2c] | r8 = *(arg_2ch);
0x00075ab0 mov r0, fp | r0 = fp;
0x00075ab2 mov r1, r8 | r1 = r8;
0x00075ab4 bl 0x26344 | fcn_00026344 (r0, r1);
0x00075ab8 str r0, [sp, 0x34] | *(arg_34h) = r0;
0x00075aba cmp r0, 0 |
| if (r0 != 0) {
0x00075abc bne.w 0x73e7c | goto label_64;
| }
0x00075ac0 ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x00075ac4 movs r2, 1 | r2 = 1;
0x00075ac6 cmp r3, 0 |
0x00075ac8 it eq |
| if (r3 != 0) {
0x00075aca moveq r3, fp | r3 = fp;
| }
0x00075acc strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
0x00075ace ldr.w r2, [r8, 0x48] | r2 = *((r8 + 0x48));
0x00075ad2 cmp r2, 0 |
| if (r2 == 0) {
0x00075ad4 beq.w 0x76b0a | goto label_325;
| }
0x00075ad8 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00075ada ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x00075adc cmp r1, r2 |
| if (r1 == r2) {
0x00075ade beq.w 0x76ae6 | goto label_326;
| }
0x00075ae2 mov r1, r0 | r1 = r0;
| do {
0x00075ae4 ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x00075ae6 adds r3, 0x10 | r3 += 0x10;
0x00075ae8 adds r1, 1 | r1++;
0x00075aea cmp r2, r0 |
0x00075aec bne 0x75ae4 |
| } while (r2 != r0);
0x00075aee str r1, [sp, 0x38] | *(arg_38h) = r1;
| label_131:
0x00075af0 mov r0, r7 | r0 = r7;
0x00075af2 movs r2, 0x4c | r2 = 0x4c;
0x00075af4 movs r3, 0 | r3 = 0;
0x00075af6 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00075afa mov r8, r0 | r8 = r0;
0x00075afc cmp r0, 0 |
| if (r0 == 0) {
0x00075afe beq.w 0x73e7c | goto label_64;
| }
0x00075b02 movs r2, 0x4c | r2 = 0x4c;
0x00075b04 movs r1, 0 | r1 = 0;
0x00075b06 blx 0x8264 | fcn_00008264 ();
0x00075b0a ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075b0c mov r0, r7 | r0 = r7;
0x00075b0e str.w r8, [fp, 0xe4] | __asm ("str.w r8, [arg_e4h]");
0x00075b12 ldrsh.w r2, [r3, 0x2a] | r2 = *((r3 + 0x2a));
0x00075b16 adds r3, r2, 6 | r3 = r2 + 6;
0x00075b18 strh.w r2, [r8, 0x2a] | *((r8 + 0x2a)) = r2;
0x00075b1c subs r2, 1 | r2--;
0x00075b1e it pl |
| if (r2 < 1) {
0x00075b20 movpl r3, r2 | r3 = r2;
| }
0x00075b22 movs r2, 1 | r2 = 1;
0x00075b24 asrs r3, r3, 3 | r3 >>= 3;
0x00075b26 str.w r2, [r8, 0x20] | __asm ("str.w r2, [r8, 0x20]");
0x00075b2a adds r3, 1 | r3++;
0x00075b2c lsls r2, r3, 5 | r2 = r3 << 5;
0x00075b2e add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x00075b32 movs r3, 0 | r3 = 0;
0x00075b34 lsls r2, r2, 2 | r2 <<= 2;
0x00075b36 str r2, [sp, 0x40] | *(arg_40h) = r2;
0x00075b38 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00075b3c mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x00075b3e cbz r0, 0x75b4c |
0x00075b40 ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x00075b42 movs r1, 0 | r1 = 0;
0x00075b44 str r0, [sp, 0x3c] | *(arg_3ch) = r0;
0x00075b46 blx 0x8264 | fcn_00008264 ();
0x00075b4a ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
| }
0x00075b4c str.w r3, [r8, 4] | __asm ("str.w r3, [r8, 4]");
0x00075b50 mov r0, r7 | r0 = r7;
0x00075b52 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075b54 ldr.w r1, [pc, 0x5e0] | r1 = *(0x00076138);
0x00075b58 ldr r2, [r3] | r2 = *(r3);
0x00075b5a add r1, pc | r1 += pc;
0x00075b5c bl 0x2677c | r0 = fcn_0002677c (r0);
0x00075b60 mov r3, r0 | r3 = r0;
0x00075b62 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x00075b66 ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00075b6a cmp r0, 0 |
0x00075b6c it ne |
| if (r0 != 0) {
0x00075b6e cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x00075b70 ite eq |
| if (r0 != 0) {
0x00075b72 moveq r3, 1 | r3 = 1;
| }
| if (r0 == 0) {
0x00075b74 movne r3, 0 | r3 = 0;
| }
0x00075b76 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
| if (r0 == 0) {
0x00075b78 beq.w 0x73e7c | goto label_64;
| }
0x00075b7c ldrsh.w r2, [r8, 0x2a] | r2 = *((r8 + 0x2a));
0x00075b80 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075b82 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x00075b86 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00075b88 lsls r2, r2, 2 | r2 <<= 2;
0x00075b8a blx 0x7dcc | fcn_00007dcc ();
0x00075b8e ldrsh.w r2, [r8, 0x2a] | r2 = *((r8 + 0x2a));
0x00075b92 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00075b94 cmp r2, 0 |
| if (r2 <= 0) {
0x00075b96 ble 0x75c06 | goto label_327;
| }
0x00075b98 ldr.w r2, [pc, 0x5a0] |
0x00075b9c str.w sb, [sp, 0x3c] | __asm ("str.w sb, [arg_3ch]");
0x00075ba0 mov sb, r5 | sb = r5;
0x00075ba2 str.w sl, [sp, 0x40] | __asm ("str.w sl, [arg_40h]");
0x00075ba6 mov sl, r6 | sl = r6;
0x00075ba8 add r2, pc | r2 = 0xebce8;
0x00075baa mov r6, r4 | r6 = r4;
0x00075bac mov r5, r2 | r5 = r2;
| label_65:
0x00075bae ldr.w r4, [r8, 4] | r4 = *((r8 + 4));
0x00075bb2 mov r0, r7 | r0 = r7;
0x00075bb4 str r3, [sp, 0x44] | *(arg_44h) = r3;
0x00075bb6 ldr r1, [r4, r3] | r1 = *((r4 + r3));
0x00075bb8 bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x00075bbc ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00075bbe mov r2, r0 | r2 = r0;
0x00075bc0 mov r1, r0 | r1 = r0;
0x00075bc2 str r0, [r4, r3] | *((r4 + r3)) = r0;
0x00075bc4 add r4, r3 | r4 += r3;
| if (r0 == 0) {
0x00075bc6 cbz r0, 0x75be4 | goto label_103;
| }
0x00075bc8 ldrb r0, [r0] | r0 = *(r0);
0x00075bca cmp r0, 0 |
| if (r0 == 0) {
0x00075bcc beq.w 0x7661c | goto label_328;
| }
0x00075bd0 movs r1, 0 | r1 = 0;
| do {
0x00075bd2 add r0, r5 | r0 += r5;
0x00075bd4 ldrb.w r0, [r0, 0x140] | r0 = *((r0 + 0x140));
0x00075bd8 add r1, r0 | r1 += r0;
0x00075bda ldrb r0, [r2, 1]! | r0 = *((r2 += 1));
0x00075bde uxtb r1, r1 | r1 = (int8_t) r1;
0x00075be0 cmp r0, 0 |
0x00075be2 bne 0x75bd2 |
| } while (r0 != 0);
| label_103:
0x00075be4 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00075be6 adds r3, 0x14 | r3 += 0x14;
0x00075be8 strb r1, [r4, 0xf] | *((r4 + 0xf)) = r1;
0x00075bea movs r1, 0 | r1 = 0;
0x00075bec strd r1, r1, [r4, 4] | __asm ("strd r1, r1, [r4, 4]");
0x00075bf0 ldrsh.w r1, [r8, 0x2a] | r1 = *((r8 + 0x2a));
0x00075bf4 adds r2, 1 | r2++;
0x00075bf6 str r2, [sp, 0x34] | *(arg_34h) = r2;
0x00075bf8 cmp r2, r1 |
| if (r2 < r1) {
0x00075bfa blt 0x75bae | goto label_65;
| }
0x00075bfc mov r4, r6 | r4 = r6;
0x00075bfe mov r5, sb | r5 = sb;
0x00075c00 mov r6, sl | r6 = sl;
0x00075c02 ldrd sb, sl, [sp, 0x3c] | __asm ("ldrd sb, sl, [arg_3ch]");
| label_327:
0x00075c06 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075c08 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x00075c0a ldr r2, [r3, 0x34] | r2 = *((r3 + 0x34));
0x00075c0c ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00075c0e add.w r3, r3, r1, lsl 4 | r3 += (r1 << 4);
0x00075c12 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00075c14 str.w r2, [r8, 0x34] | __asm ("str.w r2, [r8, 0x34]");
0x00075c18 str.w r3, [r8, 0x48] | __asm ("str.w r3, [r8, 0x48]");
0x00075c1c movs r3, 1 | r3 = 1;
0x00075c1e str.w r3, [r8, 0x20] | __asm ("str.w r3, [r8, 0x20]");
0x00075c22 b.w 0x73e7c | goto label_64;
| label_311:
0x00075c26 ldr.w r3, [pc, 0x518] | r3 = *(0x00076140);
0x00075c2a add r3, pc | r3 += pc;
0x00075c2c b 0x75512 | goto label_66;
| label_310:
0x00075c2e cmp.w r8, 0 |
| if (r8 != 0) {
0x00075c32 beq 0x75c3c |
0x00075c34 ldr.w r3, [pc, 0x50c] |
0x00075c38 add r3, pc | r3 = 0xebd80;
0x00075c3a b 0x75512 | goto label_66;
| }
0x00075c3c ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075c3e ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x00075c40 ldr r0, [r3, 0x48] | r0 = *((r3 + 0x48));
0x00075c42 cmp r0, 0 |
| if (r0 == 0) {
0x00075c44 beq.w 0x7683c | goto label_329;
| }
0x00075c48 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00075c4a cmp r3, r0 |
| if (r3 == r0) {
0x00075c4c beq 0x75c60 | goto label_120;
| }
0x00075c4e add.w r3, r2, 0x10 | r3 = r2 + 0x10;
| do {
0x00075c52 mov r2, r3 | r2 = r3;
0x00075c54 add.w r8, r8, 1 | r8++;
0x00075c58 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x00075c5a adds r3, 0x10 | r3 += 0x10;
0x00075c5c cmp r0, r1 |
0x00075c5e bne 0x75c52 |
| } while (r0 != r1);
| label_120:
0x00075c60 ldr r1, [r2] | r1 = *(r2);
0x00075c62 movs r2, 0 | r2 = 0;
0x00075c64 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075c66 mov r0, fp | r0 = fp;
0x00075c68 str r1, [sp, 0x34] | *(arg_34h) = r1;
0x00075c6a ldr r3, [r3] | r3 = *(r3);
0x00075c6c str r2, [sp] | *(sp) = r2;
0x00075c6e mov r2, r1 | r2 = r1;
0x00075c70 movs r1, 0x1a | r1 = 0x1a;
0x00075c72 bl 0x25800 | fcn_00025800 (r0);
0x00075c76 str r0, [sp, 0x3c] | *(arg_3ch) = r0;
| if (r0 != 0) {
0x00075c78 cbz r0, 0x75cd6 |
0x00075c7a ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00075c7c mov r0, r7 | r0 = r7;
0x00075c7e bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00075c82 b.w 0x723bc | goto label_6;
| label_175:
0x00075c86 ldr.w r0, [fp] | r0 = *(fp);
0x00075c8a mov r1, r7 | r1 = r7;
0x00075c8c bl 0x19168 | fcn_00019168 (r0, r1);
0x00075c90 b.w 0x723bc | goto label_6;
| label_308:
0x00075c94 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00075c96 blx 0x8160 | fcn_00008160 ();
0x00075c9a ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00075c9c bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x00075ca0 adds r3, 1 | r3++;
0x00075ca2 mov r2, r7 | r2 = r7;
0x00075ca4 add r1, r3 | r1 += r3;
0x00075ca6 mov r3, r1 | r3 = r1;
0x00075ca8 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00075caa mov r0, r3 | r0 = r3;
0x00075cac blx 0x7dcc | fcn_00007dcc ();
0x00075cb0 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00075cb2 mov.w r1, 0 | r1 = 0;
0x00075cb6 strb r1, [r0, r2] | *((r0 + r2)) = r1;
0x00075cb8 bl 0x88f0 | fcn_000088f0 (r0);
0x00075cbc mov r1, r8 | r1 = r8;
0x00075cbe bl 0xc474 | fcn_0000c474 (r0, r1);
0x00075cc2 ldrh.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00075cc6 strb.w r0, [r8, 0xd] | *((r8 + 0xd)) = r0;
0x00075cca orr r3, r3, 4 | r3 |= 4;
0x00075cce strh.w r3, [r8, 0x10] | *((r8 + 0x10)) = r3;
0x00075cd2 b.w 0x754b0 | goto label_67;
| }
0x00075cd6 sub.w r1, r6, 0x14 | r1 = r6 - 0x14;
0x00075cda mov r0, r7 | r0 = r7;
0x00075cdc bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x00075ce0 str r0, [sp, 0x38] | *(arg_38h) = r0;
0x00075ce2 cmp r0, 0 |
| if (r0 == 0) {
0x00075ce4 beq.w 0x76642 | goto label_330;
| }
0x00075ce8 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075cea ldrsh.w r3, [r3, 0x2a] | r3 = *((r3 + 0x2a));
0x00075cee cmp r3, 0 |
0x00075cf0 str r3, [sp, 0x40] | *(arg_40h) = r3;
| if (r3 <= 0) {
0x00075cf2 ble.w 0x7663a | goto label_331;
| }
0x00075cf6 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075cf8 ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x00075cfa ldr r0, [sp, 0x24] | r0 = *(arg_24h);
0x00075cfc ldr.w lr, [r3, 4] |
0x00075d00 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00075d02 mov ip, r2 |
0x00075d04 strd r4, r5, [sp, 0x44] | __asm ("strd r4, r5, [sp, 0x44]");
0x00075d08 mov r5, r2 | r5 = r2;
0x00075d0a subs r3, 1 | r3--;
0x00075d0c str r3, [sp, 0x3c] | *(arg_3ch) = r3;
| label_68:
0x00075d0e ldr.w r3, [lr, ip, lsl 2] | offset_11 = ip << 2;
| r3 = *((lr + offset_11));
0x00075d12 ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
0x00075d14 subs r4, r3, 1 | r4 = r3 - 1;
| do {
| label_69:
0x00075d16 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00075d1a ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x00075d1e cmp r3, r2 |
| if (r3 == r2) {
0x00075d20 beq 0x75d66 | goto label_332;
| }
0x00075d22 add r3, r0 | r3 += r0;
0x00075d24 add r2, r0 | r2 += r0;
0x00075d26 ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x00075d2a ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x00075d2e cmp r3, r2 |
0x00075d30 beq 0x75d16 |
| } while (r3 == r2);
0x00075d32 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00075d34 adds r5, 1 | r5++;
0x00075d36 add.w ip, ip, 5 |
0x00075d3a cmp r3, r5 |
| if (r3 != r5) {
0x00075d3c bne 0x75d0e | goto label_68;
| }
0x00075d3e ldrd r4, r5, [sp, 0x44] | __asm ("ldrd r4, r5, [arg_44h]");
| label_106:
0x00075d42 ldr.w r8, [sp, 0x38] | r8 = *(arg_38h);
0x00075d46 mov r0, fp | r0 = fp;
0x00075d48 ldr r1, [pc, 0x3fc] |
0x00075d4a mov r2, r8 | r2 = r8;
0x00075d4c add r1, pc | r1 = 0xebe98;
0x00075d4e bl 0x25778 | fcn_00025778 (r0);
0x00075d52 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00075d54 mov r0, r7 | r0 = r7;
0x00075d56 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00075d5a mov r1, r8 | r1 = r8;
0x00075d5c mov r0, r7 | r0 = r7;
0x00075d5e bl 0x159dc | fcn_000159dc (r0, r1);
0x00075d62 b.w 0x723bc | goto label_6;
| label_332:
0x00075d66 cmp r3, 0 |
| if (r3 != 0) {
0x00075d68 bne 0x75d16 | goto label_69;
| }
0x00075d6a str r5, [sp, 0x3c] | *(arg_3ch) = r5;
0x00075d6c ldr r4, [sp, 0x44] | r4 = *(arg_44h);
0x00075d6e ldr r5, [sp, 0x48] | r5 = *(arg_48h);
| label_105:
0x00075d70 sub.w r3, r8, 1 | r3 = r8 - 1;
0x00075d74 ldr r2, [pc, 0x3d4] |
0x00075d76 clz r3, r3 | r3 &= r3;
0x00075d7a mov r0, fp | r0 = fp;
0x00075d7c lsrs r3, r3, 5 | r3 >>= 5;
0x00075d7e add r2, pc | r2 = 0xebece;
0x00075d80 mov r1, r3 | r1 = r3;
0x00075d82 str r3, [sp, 0x40] | *(arg_40h) = r3;
0x00075d84 movs r3, 1 | r3 = 1;
0x00075d86 str r2, [sp, 0x44] | *(arg_44h) = r2;
0x00075d88 strb.w r3, [fp, 0x10] | *(arg_10h) = r3;
0x00075d8c movs r3, 0 | r3 = 0;
0x00075d8e strd r1, r2, [sp] | __asm ("strd r1, r2, [sp]");
0x00075d92 str r3, [sp, 8] | *(arg_8h) = r3;
0x00075d94 ldr r1, [pc, 0x3b8] |
0x00075d96 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00075d98 add r1, pc | r1 = 0xebeec;
0x00075d9a mov r2, r3 | r2 = r3;
0x00075d9c bl 0x77c00 | fcn_00077c00 (r0);
0x00075da0 cmp.w r8, 1 |
| if (r8 != 1) {
0x00075da4 bne.w 0x766c4 | goto label_333;
| }
0x00075da8 ldr r1, [pc, 0x3a8] |
0x00075daa mov r0, fp | r0 = fp;
0x00075dac ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00075dae add r1, pc | r1 = 0xebf06;
0x00075db0 mov r2, r3 | r2 = r3;
0x00075db2 bl 0x77c00 | fcn_00077c00 (r0);
| label_111:
0x00075db6 ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x00075dba mov.w r2, 1 | r2 = 1;
0x00075dbe adds r1, r6, 4 | r1 = r6 + 4;
0x00075dc0 mov r0, r7 | r0 = r7;
0x00075dc2 cmp r3, 0 |
0x00075dc4 it eq |
| if (r3 != 0) {
0x00075dc6 moveq r3, fp | r3 = fp;
| }
0x00075dc8 strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
0x00075dca bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x00075dcc invalid |
0x00075dd0 cmp r0, 0 |
| if (r0 == 0) {
0x00075dd2 beq.w 0x766b0 | goto label_334;
| }
0x00075dd6 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00075dd8 ldr r0, [sp, 0x40] | r0 = *(arg_40h);
0x00075dda str r1, [sp, 0x44] | *(arg_44h) = r1;
0x00075ddc ldrb r2, [r3] | r2 = *(r3);
0x00075dde ldr r3, [pc, 0x378] |
0x00075de0 add r3, pc |
0x00075de2 add r3, r2 | r3 += r2;
0x00075de4 ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00075de8 and r3, r3, 0x80 | r3 &= 0x80;
0x00075dec mov r2, r3 | r2 = r3;
0x00075dee ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075df0 str r2, [sp, 0x48] | *(arg_48h) = r2;
0x00075df2 ldr r3, [r3] |
0x00075df4 str r0, [sp, 0x10] | *(arg_10h) = r0;
0x00075df6 str r1, [sp, 8] | *(arg_8h) = r1;
0x00075df8 ldr r0, [sp, 0x3c] | r0 = *(arg_3ch);
0x00075dfa str r3, [sp, 0x14] | *(arg_14h) = r3;
0x00075dfc str r3, [sp] | *(sp) = r3;
0x00075dfe ldr r1, [pc, 0x35c] |
0x00075e00 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00075e02 str r2, [sp, 0xc] | *(arg_ch) = r2;
0x00075e04 add r1, pc | r1 = 0xebf66;
0x00075e06 str r0, [sp, 4] | *(arg_4h) = r0;
0x00075e08 mov r2, r3 | r2 = r3;
0x00075e0a mov r0, fp | r0 = fp;
0x00075e0c bl 0x77c00 | fcn_00077c00 (r0);
0x00075e10 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075e12 mov r0, fp | r0 = fp;
0x00075e14 ldr r1, [sp, 0x44] | r1 = *(arg_44h);
0x00075e16 ldr r2, [sp, 0x48] | r2 = *(arg_48h);
0x00075e18 ldr r3, [r3] | r3 = *(0xebf3e);
0x00075e1a str r1, [sp, 4] | *(arg_4h) = r1;
0x00075e1c ldr r1, [pc, 0x340] |
0x00075e1e str r2, [sp, 8] | *(arg_8h) = r2;
0x00075e20 ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x00075e22 add r1, pc | r1 = 0xebf86;
0x00075e24 str r1, [sp, 0x2c] | *(arg_2ch) = r1;
0x00075e26 ldr r1, [pc, 0x33c] |
0x00075e28 str r2, [sp] | *(sp) = r2;
0x00075e2a ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00075e2c add r1, pc | r1 = 0xebf96;
0x00075e2e bl 0x77c00 | fcn_00077c00 (r0);
0x00075e32 movs r2, 1 | r2 = 1;
0x00075e34 mov r1, r8 | r1 = r8;
0x00075e36 mov r0, fp | r0 = fp;
0x00075e38 bl 0x2bc6c | fcn_0002bc6c (r0, r1, r2);
0x00075e3c ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00075e3e mov.w r2, 1 | r2 = 1;
0x00075e42 ldr r0, [sp, 0x40] | r0 = *(arg_40h);
0x00075e44 strb.w r2, [fp, 0x10] | *(arg_10h) = r2;
0x00075e48 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00075e4a str r1, [sp, 4] | *(arg_4h) = r1;
0x00075e4c ldr r1, [pc, 0x318] |
0x00075e4e str r0, [sp] | *(sp) = r0;
0x00075e50 movs r0, 1 | r0 = 1;
0x00075e52 str r0, [sp, 8] | *(arg_8h) = r0;
0x00075e54 mov r2, r3 | r2 = r3;
0x00075e56 add r1, pc | r1 = 0xebfc2;
0x00075e58 mov r0, fp | r0 = fp;
0x00075e5a bl 0x77c00 | fcn_00077c00 (r0);
0x00075e5e cmp.w r8, 1 |
| if (r8 != 1) {
0x00075e62 bne.w 0x76698 | goto label_335;
| }
| label_110:
0x00075e66 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00075e68 mov r0, r7 | r0 = r7;
0x00075e6a bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00075e6e ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x00075e70 mov r0, r7 | r0 = r7;
0x00075e72 bl 0x159dc | fcn_000159dc (r0, r1);
0x00075e76 ldr r1, [sp, 0x44] | r1 = *(arg_44h);
0x00075e78 mov r0, r7 | r0 = r7;
0x00075e7a bl 0x159dc | fcn_000159dc (r0, r1);
0x00075e7e b.w 0x723bc | goto label_6;
| label_281:
0x00075e82 movs r3, 0 | r3 = 0;
0x00075e84 mov r0, r7 | r0 = r7;
0x00075e86 mov r2, r3 | r2 = r3;
0x00075e88 movs r1, 1 | r1 = 1;
0x00075e8a str r3, [sp] | *(sp) = r3;
0x00075e8c bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00075e90 b.w 0x723bc | goto label_6;
| label_242:
0x00075e94 movs r3, 0 | r3 = 0;
0x00075e96 movs r1, 0xaf | r1 = 0xaf;
0x00075e98 mov r2, r3 | r2 = r3;
0x00075e9a mov r0, fp | r0 = fp;
0x00075e9c bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x00075ea0 mov r1, r0 | r1 = r0;
0x00075ea2 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00075ea4 cmp r0, 0 |
| if (r0 == 0) {
0x00075ea6 beq.w 0x723bc | goto label_6;
| }
0x00075eaa ldr r0, [sp, 0x78] | r0 = *(arg_78h);
0x00075eac adds r1, 0x1c | r1 += 0x1c;
0x00075eae adds r0, 1 | r0++;
0x00075eb0 bl 0xc338 | fcn_0000c338 (r0, r1);
0x00075eb4 b.w 0x723bc | goto label_6;
| label_164:
0x00075eb8 cmp r3, 0 |
| if (r3 != 0) {
0x00075eba bne.w 0x76020 | goto label_336;
| }
0x00075ebe ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00075ec2 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00075ec4 cmp r3, 0 |
| if (r3 == 0) {
0x00075ec6 beq.w 0x765b2 | goto label_337;
| }
| label_99:
0x00075eca ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x00075ecc movs r1, 0 | r1 = 0;
0x00075ece mov r0, fp | r0 = fp;
0x00075ed0 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x00075ed4 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00075ed6 cmp r3, 0 |
| if (r3 == 0) {
0x00075ed8 beq.w 0x765dc | goto label_338;
| }
0x00075edc ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x00075ede movs r0, 0 | r0 = 0;
0x00075ee0 subs r3, r2, r3 | r3 = r2 - r3;
0x00075ee2 ldr r2, [sp, 0x54] | r2 = *(arg_54h);
0x00075ee4 add r2, r3 | r2 += r3;
0x00075ee6 mov r8, r2 | r8 = r2;
0x00075ee8 adds r2, 1 | r2++;
0x00075eea adc r3, r0, 0 | __asm ("adc r3, r0, 0");
0x00075eee ldr r0, [sp, 0x3c] | r0 = *(arg_3ch);
0x00075ef0 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00075ef4 mov r7, r0 | r7 = r0;
0x00075ef6 cmp r0, 0 |
| if (r0 == 0) {
0x00075ef8 beq.w 0x765dc | goto label_338;
| }
0x00075efc ldr r1, [sp, 0x48] | r1 = *(arg_48h);
0x00075efe mov r2, r8 | r2 = r8;
0x00075f00 blx 0x7dcc | fcn_00007dcc ();
0x00075f04 mov.w r2, 0 | r2 = 0;
0x00075f08 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00075f0a strb.w r2, [r7, r8] | *((r7 + r8)) = r2;
0x00075f0e mov r0, fp | r0 = fp;
0x00075f10 ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x00075f12 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00075f14 str r7, [sp, 4] | *(arg_4h) = r7;
0x00075f16 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00075f18 ldr r1, [pc, 0x250] |
0x00075f1a str r2, [sp] | *(sp) = r2;
0x00075f1c ldr r2, [sp, 0x4c] | r2 = *(arg_4ch);
0x00075f1e add r1, pc | r1 = 0xec08e;
0x00075f20 ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x00075f22 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00075f24 bl 0x77c00 | fcn_00077c00 (r0);
0x00075f28 ldr r0, [sp, 0x3c] | r0 = *(arg_3ch);
0x00075f2a mov r1, r7 | r1 = r7;
0x00075f2c bl 0x159dc | fcn_000159dc (r0, r1);
| label_101:
0x00075f30 ldr.w r8, [sp, 0x40] | r8 = *(arg_40h);
0x00075f34 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
0x00075f38 ldr.w r0, [fp] | r0 = *(fp);
0x00075f3c mov r2, r8 | r2 = r8;
0x00075f3e bl 0x2b6f8 | fcn_0002b6f8 (r0, r1, r2);
0x00075f42 ldr r7, [sp, 0x3c] | r7 = *(arg_3ch);
0x00075f44 ldr r1, [pc, 0x228] |
0x00075f46 ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x00075f48 mov r0, r7 | r0 = r7;
0x00075f4a add r1, pc | r1 = 0xec0be;
0x00075f4c bl 0x2677c | fcn_0002677c (r0);
0x00075f50 movs r3, 0 | r3 = 0;
0x00075f52 mov r2, r0 | r2 = r0;
0x00075f54 mov r1, r8 | r1 = r8;
0x00075f56 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00075f58 bl 0x2bbb8 | fcn_0002bbb8 (r0, r1, r2, r3);
0x00075f5c ldrb.w r3, [r7, 0xa9] | r3 = *((r7 + 0xa9));
0x00075f60 cmp r3, 0 |
| if (r3 != 0) {
0x00075f62 bne 0x76020 | goto label_336;
| }
0x00075f64 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00075f66 b.w 0x751f2 | goto label_22;
| label_181:
0x00075f6a mov r1, r0 | r1 = r0;
0x00075f6c sub.w r2, r6, 8 | r2 = r6 - 8;
0x00075f70 mov r0, fp | r0 = fp;
0x00075f72 bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
0x00075f76 b.w 0x72990 | goto label_70;
| label_314:
0x00075f7a ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00075f7c movs r3, 1 | r3 = 1;
0x00075f7e ldr r0, [sp, 0x38] | r0 = *(arg_38h);
0x00075f80 add r1, sp, 0x78 | r1 += arg_78h;
0x00075f82 subs r2, 1 | r2--;
0x00075f84 add r0, r3 | r0 += r3;
0x00075f86 bl 0x8978 | fcn_00008978 (r0, r1, r2, r3);
0x00075f8a ldrd r3, r2, [sp, 0x78] | __asm ("ldrd r3, r2, [arg_78h]");
0x00075f8e cmp r0, 0 |
| if (r0 == 0) {
0x00075f90 beq.w 0x75584 | goto label_71;
| }
| label_315:
0x00075f94 ldr r1, [pc, 0x1dc] |
0x00075f96 mov r2, r7 | r2 = r7;
0x00075f98 mov r0, fp | r0 = fp;
0x00075f9a add r1, pc | r1 = 0xec112;
0x00075f9c bl 0x25778 | fcn_00025778 (r0);
0x00075fa0 b.w 0x723bc | goto label_6;
| label_322:
0x00075fa4 mov r0, r7 | r0 = r7;
0x00075fa6 bl 0x159dc | fcn_000159dc (r0, r1);
0x00075faa b.w 0x747ba | goto label_72;
| label_320:
0x00075fae ldr.w r3, [fp] | r3 = *(fp);
0x00075fb2 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00075fb4 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x00075fb6 itt pl |
| if (r1 < r3) {
0x00075fb8 movpl r3, 1 | r3 = 1;
| }
| if (r1 < r3) {
0x00075fba strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x00075fbe b.w 0x75784 | goto label_73;
| label_154:
0x00075fc2 ldr r0, [sp, 0x44] | r0 = *(arg_44h);
0x00075fc4 b.w 0x72232 | goto label_74;
| label_201:
0x00075fc8 ldr r1, [r6, -0x2c] | r1 = *((r6 - 0x2c));
0x00075fcc b.w 0x732ba | goto label_75;
| label_235:
0x00075fd0 ldr r1, [pc, 0x1a4] |
0x00075fd2 mov r0, fp | r0 = fp;
0x00075fd4 add r1, pc | r1 = 0xec150;
0x00075fd6 bl 0x25778 | fcn_00025778 (r0);
0x00075fda b.w 0x73e7c | goto label_64;
| label_218:
0x00075fde ldr r1, [pc, 0x19c] |
0x00075fe0 mov r0, fp | r0 = fp;
0x00075fe2 add r1, pc | r1 = 0xec164;
0x00075fe4 bl 0x25778 | fcn_00025778 (r0);
0x00075fe8 b.w 0x73878 | goto label_52;
| label_324:
0x00075fec ldr r2, [pc, 0x190] |
0x00075fee add r2, pc | r2 = 0xec172;
0x00075ff0 b 0x75a06 | goto label_76;
| label_287:
0x00075ff2 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00075ff4 ldrb.w r3, [r3, 0xa9] | r3 = *((r3 + 0xa9));
0x00075ff8 cmp r3, 0 |
| if (r3 == 0) {
0x00075ffa beq.w 0x75928 | goto label_77;
| }
0x00075ffe movs r3, 0x65 | r3 = 0x65;
0x00076000 str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
0x00076004 b.w 0x723bc | goto label_6;
| label_319:
0x00076008 ldr.w r3, [fp] | r3 = *(fp);
0x0007600c ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0007600e lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
0x00076010 itt pl |
| if (r0 < r3) {
0x00076012 movpl r3, 1 | r3 = 1;
| }
| if (r0 < r3) {
0x00076014 strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x00076018 b.w 0x75712 | goto label_78;
| label_165:
0x0007601c movs r3, 0 | r3 = 0;
0x0007601e str r3, [sp, 0x38] | *(arg_38h) = r3;
| label_336:
0x00076020 ldr r7, [sp, 0x3c] | r7 = *(arg_3ch);
0x00076022 ldr r2, [sp, 0x4c] | r2 = *(arg_4ch);
0x00076024 ldr r1, [sp, 0x44] | r1 = *(arg_44h);
0x00076026 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00076028 add r3, r2 | r3 += r2;
0x0007602a ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x0007602c ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x0007602e adds r0, 0x28 | r0 += 0x28;
0x00076030 bl 0x169a8 | fcn_000169a8 (r0, r1, r2, r3, r4);
0x00076034 str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x00076036 cmp r0, 0 |
| if (r0 == 0) {
0x00076038 beq.w 0x7656e | goto label_339;
| }
0x0007603c str r0, [sp, 0x38] | *(arg_38h) = r0;
0x0007603e mov r0, r7 | r0 = r7;
0x00076040 bl 0x101ec | fcn_000101ec (r0);
0x00076044 movs r3, 0 | r3 = 0;
0x00076046 str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00076048 b.w 0x751f2 | goto label_22;
| label_318:
0x0007604c asrs r3, r1, 0x1f | r3 = r1 >> 0x1f;
0x0007604e movs r1, 2 | r1 = 2;
0x00076050 smlal r0, r3, r2, r1 | __asm ("smlal r0, r3, r2, r1");
0x00076054 lsls r3, r1 | r3 <<= r1;
0x00076056 lsl.w r2, r0, r1 | r2 = r0 << r1;
0x0007605a str r0, [sp, 0x44] | *(arg_44h) = r0;
0x0007605c orr.w r3, r3, r0, lsr 30 | r3 |= (r0 >> 30);
0x00076060 mov r1, r8 | r1 = r8;
0x00076062 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00076064 bl 0x1b3a0 | r0 = fcn_0001b3a0 (r0, r1, r2);
0x00076068 mov r7, r0 | r7 = r0;
0x0007606a cmp r0, 0 |
| if (r0 == 0) {
0x0007606c beq.w 0x7684c | goto label_340;
| }
| label_97:
0x00076070 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00076072 ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x00076074 str r3, [r7] | *(r7) = r3;
0x00076076 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00076078 add.w lr, r2, r3 | lr = r2 + r3;
0x0007607c b.w 0x755dc | goto label_79;
| label_271:
0x00076080 ldr r1, [sp, 0x4c] | r1 = *(arg_4ch);
0x00076082 mov r0, fp | r0 = fp;
0x00076084 bl 0x54114 | fcn_00054114 (r0, r1);
0x00076088 b.w 0x7493a | goto label_80;
| label_163:
0x0007608c movs r3, 0 | r3 = 0;
0x0007608e str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00076090 b.w 0x751f2 | goto label_22;
| label_152:
0x00076094 ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x00076096 mov r8, r2 | r8 = r2;
0x00076098 str r2, [sp, 0x4c] | *(arg_4ch) = r2;
0x0007609a b.w 0x72206 | goto label_81;
| label_266:
0x0007609e mov r1, r8 | r1 = r8;
0x000760a0 str r0, [sp, 0x34] | *(arg_34h) = r0;
0x000760a2 mov r0, r7 | r0 = r7;
0x000760a4 bl 0x1aa6c | fcn_0001aa6c (r0, r1, r2);
0x000760a8 mov r1, r8 | r1 = r8;
0x000760aa str r0, [sp, 0x30] | *(arg_30h) = r0;
0x000760ac mov r0, r7 | r0 = r7;
0x000760ae bl 0x159dc | fcn_000159dc (r0, r1);
0x000760b2 ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x000760b4 cmp r7, 0 |
| if (r7 == 0) {
0x000760b6 beq.w 0x764c4 | goto label_341;
| }
0x000760ba ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x000760bc mov r0, fp | r0 = fp;
0x000760be ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x000760c0 mov r1, r3 | r1 = r3;
0x000760c2 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x000760c6 mov r1, r7 | r1 = r7;
0x000760c8 mov.w r2, -1 | r2 = -1;
0x000760cc mov r0, fp | r0 = fp;
0x000760ce bl 0x6b164 | fcn_0006b164 (r0, r1, r2, r3);
0x000760d2 b.w 0x723bc | goto label_6;
| label_182:
0x000760d6 ldr r7, [sp, 0x38] | r7 = *(arg_38h);
0x000760d8 b.w 0x729d4 | goto label_82;
| label_231:
0x000760dc ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x000760de movs r1, 9 | r1 = 9;
0x000760e0 ldr r2, [pc, 0xa0] |
0x000760e2 mov r0, fp | r0 = fp;
0x000760e4 str r3, [sp] | *(sp) = r3;
0x000760e6 movs r3, 0 | r3 = 0;
0x000760e8 add r2, pc | r2 = 0xec270;
0x000760ea bl 0x25800 | fcn_00025800 (r0);
0x000760ee movs r1, 0xc | r1 = 0xc;
0x000760f0 cmp r0, 0 |
| if (r0 == 0) {
0x000760f2 beq.w 0x73d5e | goto label_83;
| }
0x000760f6 b.w 0x73de4 | goto label_84;
| label_288:
0x00076188 ldr.w r3, [fp, 0x80] | r3 = *(arg_80h);
0x0007618c mov r2, r3 | r2 = r3;
0x0007618e str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00076190 ldr.w r3, [r8, 0x70] | r3 = *((r8 + 0x70));
0x00076194 ldr r2, [r2, 0x5c] | r2 = *((r2 + 0x5c));
0x00076196 cmp r7, r3 |
| if (r7 >= r3) {
0x00076198 bge.w 0x7673e | goto label_342;
| }
0x0007619c ldr.w r0, [r8, 0x68] | r0 = *((r8 + 0x68));
0x000761a0 add.w lr, r7, r7, lsl 2 | lr = r7 + (r7 << 2);
0x000761a4 adds r3, r7, 1 | r3 = r7 + 1;
0x000761a6 str.w r3, [r8, 0x6c] | __asm ("str.w r3, [r8, 0x6c]");
0x000761aa movs r1, 0 | r1 = 0;
0x000761ac str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x000761ae mov r3, lr | r3 = lr;
0x000761b0 add.w lr, r0, lr, lsl 2 | lr = r0 + (lr << 2);
0x000761b4 mov.w ip, 0x25 |
0x000761b8 strd r2, r1, [lr, 4] | __asm ("strd r2, r1, [lr, 4]");
0x000761bc strd r1, r1, [lr, 0xc] | __asm ("strd r1, r1, [lr, 0xc]");
0x000761c0 str.w ip, [r0, r3, lsl 2] | __asm ("str.w ip, [r0, r3, lsl 2]");
| label_115:
0x000761c4 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000761c6 ldrd r3, r2, [r2, 0x60] | __asm ("ldrd r3, r2, [r2, 0x60]");
0x000761ca cmp r3, 0 |
0x000761cc str r2, [sp, 0x34] | *(arg_34h) = r2;
0x000761ce mov.w r3, 0 | r3 = 0;
0x000761d0 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 <= r0) {
0x000761d2 ble 0x761fa | goto label_343;
| }
0x000761d4 str r4, [sp, 0x40] | *(arg_40h) = r4;
0x000761d6 mov r4, r3 | r4 = r3;
| do {
0x000761d8 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000761da mov r0, r8 | r0 = r8;
0x000761dc ldr r1, [sp, 0x34] | r1 = *(arg_34h);
0x000761de ldr r2, [r3, 0x5c] | r2 = *((r3 + 0x5c));
0x000761e0 adds r3, r4, r1 | r3 = r4 + r1;
0x000761e2 movs r1, 0x5b | r1 = 0x5b;
0x000761e4 str r3, [sp] | *(sp) = r3;
0x000761e6 mov r3, r4 | r3 = r4;
0x000761e8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000761ec ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000761ee adds r4, 1 | r4++;
0x000761f0 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x000761f2 cmp r4, r3 |
0x000761f4 blt 0x761d8 |
| } while (r4 < r3);
0x000761f6 mov r3, r4 | r3 = r4;
0x000761f8 ldr r4, [sp, 0x40] | r4 = *(arg_40h);
| label_343:
0x000761fa movs r1, 0 | r1 = 0;
0x000761fc ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000761fe str r1, [sp] | *(sp) = r1;
0x00076200 mov r0, r8 | r0 = r8;
0x00076202 movs r1, 0x51 | r1 = 0x51;
0x00076204 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00076208 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x0007620a movs r1, 5 | r1 = 5;
0x0007620c mov r0, r8 | r0 = r8;
0x0007620e ldr r2, [r3, 0x5c] | r2 = *((r3 + 0x5c));
0x00076210 movs r3, 0 | r3 = 0;
0x00076212 str r3, [sp] | *(sp) = r3;
0x00076214 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00076216 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007621a ldr.w r3, [r8] | r3 = *(r8);
0x0007621e cmp r7, 0 |
0x00076220 ldr.w r2, [r8, 0x6c] | r2 = *((r8 + 0x6c));
0x00076224 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00076228 it lt |
| if (r7 >= 0) {
0x0007622a addlt r7, r2, -1 | r7 = r2 + -1;
| }
0x0007622e cmp r3, 0 |
| if (r3 != 0) {
0x00076230 bne.w 0x764a0 | goto label_344;
| }
0x00076234 ldr.w r3, [r8, 0x68] | r3 = *((r8 + 0x68));
0x00076238 add.w r7, r7, r7, lsl 2 | r7 += (r7 << 2);
0x0007623c add.w r3, r3, r7, lsl 2 | r3 += (r7 << 2);
| label_89:
0x00076240 mov r7, r2 | r7 = r2;
0x00076242 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00076244 b.w 0x74e8e | goto label_85;
| label_226:
0x00076248 ldr.w r3, [pc, 0xafc] |
0x0007624c add r3, pc | r3 = 0xecf98;
0x0007624e b.w 0x73c16 | goto label_86;
| label_305:
0x00076252 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x00076254 b.w 0x752c4 | goto label_87;
| if (r3 != 0) {
| label_225:
0x00076258 cbz r3, 0x76264 |
0x0007625a ldr.w r3, [pc, 0xaf0] | r3 = *(0x00076d4c);
0x0007625e add r3, pc | r3 += pc;
0x00076260 b.w 0x73c16 | goto label_86;
| }
0x00076264 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x00076266 adds r1, r6, 4 | r1 = r6 + 4;
0x00076268 bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x0007626c mov r2, r0 | r2 = r0;
0x0007626e str r0, [sp, 0x50] | *(arg_50h) = r0;
0x00076270 cmp r0, 0 |
| if (r0 == 0) {
0x00076272 beq.w 0x73c2e | goto label_88;
| }
0x00076276 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076278 ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x0007627a ldrsh.w r7, [r3, 0x2a] | r7 = *((r3 + 0x2a));
0x0007627e mov r0, r5 | r0 = r5;
0x00076280 mov r1, r7 | r1 = r7;
0x00076282 bl 0x17cf4 | r0 = fcn_00017cf4 (r0, r1, r2);
0x00076286 subs r3, r0, 0 | r3 = r0 - 0;
0x00076288 str r3, [sp, 0x44] | *(arg_44h) = r3;
| if (r3 < r0) {
0x0007628a blt.w 0x76828 | goto label_345;
| }
0x0007628e ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00076290 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00076294 lsls r3, r3, 2 | r3 <<= 2;
0x00076296 add r5, r3 | r5 += r3;
0x00076298 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x0007629a ldrh r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0007629c tst.w r3, 9 |
| if ((r3 & 9) != 0) {
0x000762a0 bne.w 0x76476 | goto label_346;
| }
0x000762a4 cmp r7, 1 |
| if (r7 <= 1) {
0x000762a6 ble.w 0x76b6e | goto label_347;
| }
0x000762aa ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000762ac ldr r2, [r3, 0x48] | r2 = *((r3 + 0x48));
0x000762ae ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000762b0 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000762b2 cmp r2, 0 |
| if (r2 == 0) {
0x000762b4 beq.w 0x76b18 | goto label_348;
| }
0x000762b8 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x000762ba cmp r2, r1 |
| if (r2 == r1) {
0x000762bc beq.w 0x7676c | goto label_349;
| }
0x000762c0 adds r3, 0x10 | r3 += 0x10;
0x000762c2 mov.w r8, 0 | r8 = 0;
| do {
0x000762c6 mov r1, r3 | r1 = r3;
0x000762c8 add.w r8, r8, 1 | r8++;
0x000762cc ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x000762ce adds r3, 0x10 | r3 += 0x10;
0x000762d0 cmp r2, r0 |
0x000762d2 bne 0x762c6 |
| } while (r2 != r0);
0x000762d4 ldr.w r3, [pc, 0xa78] |
0x000762d8 add.w r7, r8, -1 | r7 = r8 + -1;
0x000762dc ldr.w r0, [pc, 0xa74] | r0 = *(0x00076d54);
0x000762e0 movs r2, 1 | r2 = 1;
0x000762e2 ldr r5, [r1] | r5 = *(r1);
0x000762e4 rsbs r1, r7, 0 | r1 = r7 - ;
0x000762e6 adcs r1, r7 | __asm ("adcs r1, r7");
0x000762e8 add r3, pc | r3 = 0xed03c;
0x000762ea strb.w r2, [fp, 0x10] | *(arg_10h) = r2;
0x000762ee add r0, pc | r0 += pc;
0x000762f0 strd r1, r3, [sp] | __asm ("strd r1, r3, [sp]");
0x000762f4 movs r3, 0 | r3 = 0;
0x000762f6 mov r7, r1 | r7 = r1;
0x000762f8 str r0, [sp, 0x40] | *(arg_40h) = r0;
0x000762fa mov r1, r0 | r1 = r0;
0x000762fc str r3, [sp, 8] | *(arg_8h) = r3;
0x000762fe mov r2, r5 | r2 = r5;
0x00076300 mov r3, r5 | r3 = r5;
0x00076302 mov r0, fp | r0 = fp;
0x00076304 str r7, [sp, 0x34] | *(arg_34h) = r7;
0x00076306 bl 0x77c00 | fcn_00077c00 (r0);
0x0007630a cmp.w r8, 1 |
| if (r8 != 1) {
0x0007630e bne.w 0x76794 | goto label_134;
| }
0x00076312 ldr.w r1, [pc, 0xa44] |
0x00076316 mov r3, r5 | r3 = r5;
0x00076318 mov r2, r5 | r2 = r5;
0x0007631a mov r0, fp | r0 = fp;
0x0007631c add r1, pc |
0x0007631e bl 0x77c00 | fcn_00077c00 (r0);
0x00076322 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076324 mov r2, r5 | r2 = r5;
0x00076326 ldr.w r1, [pc, 0xa34] | r1 = *(0x00076d5c);
0x0007632a mov r0, fp | r0 = fp;
0x0007632c ldr r3, [r3] | r3 = *(r3);
0x0007632e add r1, pc | r1 = 0x1633ac;
0x00076330 str r3, [sp, 4] | *(arg_4h) = r3;
0x00076332 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00076334 str r3, [sp] | *(sp) = r3;
0x00076336 mov r3, r8 | r3 = r8;
0x00076338 bl 0x77c00 | fcn_00077c00 (r0);
0x0007633c mov r1, r8 | r1 = r8;
0x0007633e mov r0, fp | r0 = fp;
0x00076340 movs r2, 2 | r2 = 2;
0x00076342 bl 0x2bc6c | fcn_0002bc6c (r0, r1, r2);
0x00076346 ldr.w r3, [pc, 0xa18] |
0x0007634a mov r2, r5 | r2 = r5;
0x0007634c strb.w r8, [fp, 0x10] | *(arg_10h) = r8;
0x00076350 mov r0, fp | r0 = fp;
0x00076352 ldr r1, [sp, 0x40] | r1 = *(arg_40h);
0x00076354 add r3, pc | r3 = 0xed0ba;
0x00076356 str r7, [sp] | *(sp) = r7;
0x00076358 str r3, [sp, 4] | *(arg_4h) = r3;
0x0007635a mov r3, r5 | r3 = r5;
0x0007635c str.w r8, [sp, 8] | __asm ("str.w r8, [arg_8h]");
0x00076360 bl 0x77c00 | fcn_00077c00 (r0);
| label_118:
0x00076364 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00076368 cmp r3, 0 |
| if (r3 != 0) {
0x0007636a bne.w 0x76490 | goto label_119;
| }
0x0007636e ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076370 ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x00076372 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00076374 add r3, r2 | r3 += r2;
0x00076376 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00076378 lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 < r3) {
0x0007637a bmi.w 0x76490 | goto label_119;
| }
0x0007637e ldr.w r5, [fp, 8] | r5 = *(arg_8h);
0x00076382 cmp r5, 0 |
| if (r5 == 0) {
0x00076384 beq.w 0x76b5a | goto label_350;
| }
| label_136:
0x00076388 mov r2, r8 | r2 = r8;
0x0007638a ldr.w r8, [fp, 0x28] | r8 = *(arg_28h);
0x0007638e movs r1, 0x63 | r1 = 0x63;
0x00076390 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076392 mov r0, fp | r0 = fp;
0x00076394 add.w r7, r8, 1 | r7 = r8 + 1;
0x00076398 str.w r7, [fp, 0x28] | __asm ("str.w r7, [arg_28h]");
0x0007639c str r1, [sp] | *(sp) = r1;
0x0007639e mov r1, r8 | r1 = r8;
0x000763a0 bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x000763a4 ldr r3, [r5, 0x6c] | r3 = *((r5 + 0x6c));
0x000763a6 mov r2, r3 | r2 = r3;
0x000763a8 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
0x000763aa ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x000763ac cmp r2, r3 |
| if (r2 >= r3) {
0x000763ae bge.w 0x76b48 | goto label_351;
| }
0x000763b2 ldr r2, [sp, 0x4c] | r2 = *(arg_4ch);
0x000763b4 movs r3, 0x14 | r3 = 0x14;
0x000763b6 ldr r0, [r5, 0x68] | r0 = *((r5 + 0x68));
0x000763b8 movs r1, 0 | r1 = 0;
0x000763ba movs r7, 0x25 | r7 = 0x25;
0x000763bc mul r3, r2, r3 | r3 = r2 * r3;
0x000763c0 adds r2, 1 | r2++;
0x000763c2 str r2, [r5, 0x6c] | *((r5 + 0x6c)) = r2;
0x000763c4 adds r2, r0, r3 | r2 = r0 + r3;
0x000763c6 strd r8, r1, [r2, 4] | __asm ("strd r8, r1, [r2, 4]");
0x000763ca strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x000763ce str r7, [r0, r3] | *((r0 + r3)) = r7;
| label_135:
0x000763d0 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x000763d2 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x000763d6 ldr r7, [r2, 0x24] | r7 = *((r2 + 0x24));
0x000763d8 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x000763da adds r3, 1 | r3++;
0x000763dc str r3, [sp, 0x54] | *(arg_54h) = r3;
0x000763de ands r7, r7, 0x80 | r7 &= 0x80;
0x000763e2 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
| if (r7 == r7) {
0x000763e6 beq.w 0x76b7c | goto label_352;
| }
0x000763ea ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000763ec ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000763ee str r3, [sp, 0x38] | *(arg_38h) = r3;
0x000763f0 cmp r3, 0 |
| if (r3 == 0) {
0x000763f2 beq.w 0x76d42 | goto label_353;
| }
0x000763f6 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x000763f8 b 0x76402 |
| while (r2 != 2) {
0x000763fa ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000763fc cmp r3, 0 |
| if (r3 == 0) {
0x000763fe beq.w 0x76d42 | goto label_353;
| }
0x00076402 ldrb.w r2, [r3, 0x37] | r2 = *((r3 + 0x37));
0x00076406 and r2, r2, 3 | r2 &= 3;
0x0007640a cmp r2, 2 |
0x0007640c bne 0x763fa |
| }
0x0007640e mov r2, r3 | r2 = r3;
0x00076410 ldr r1, [sp, 0x54] | r1 = *(arg_54h);
0x00076412 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00076414 ldrh r3, [r3, 0x34] | r3 = *((r3 + 0x34));
0x00076416 add r3, r1 | r3 += r1;
0x00076418 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x0007641c ldrh r3, [r2, 0x32] | r3 = *((r2 + 0x32));
0x0007641e cmp r3, 0 |
| if (r3 == 0) {
0x00076420 beq.w 0x76cfe | goto label_354;
| }
0x00076424 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076426 movs r7, 0 | r7 = 0;
0x00076428 adds r3, 2 | r3 += 2;
0x0007642a str r3, [sp, 0x34] | *(arg_34h) = r3;
| do {
0x0007642c ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x0007642e mov r2, r8 | r2 = r8;
0x00076430 movs r1, 0x5b | r1 = 0x5b;
0x00076432 mov r0, r5 | r0 = r5;
0x00076434 add r3, r7 | r3 += r7;
0x00076436 str r3, [sp] | *(sp) = r3;
0x00076438 mov r3, r7 | r3 = r7;
0x0007643a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007643e ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00076440 adds r7, 1 | r7++;
0x00076442 ldrh r3, [r3, 0x32] | r3 = *((r3 + 0x32));
0x00076444 cmp r7, r3 |
0x00076446 blt 0x7642c |
| } while (r7 < r3);
0x00076448 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
| label_143:
0x0007644a ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x0007644e adds r3, 1 | r3++;
0x00076450 str r3, [sp, 0x40] | *(arg_40h) = r3;
0x00076452 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x00076456 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076458 ldrsh.w r0, [r3, 0x2a] | r0 = *((r3 + 0x2a));
0x0007645c cmp r0, 0 |
| if (r0 > 0) {
0x0007645e bgt.w 0x76baa | goto label_355;
| }
0x00076462 ldrd r3, r2, [sp, 0x3c] | __asm ("ldrd r3, r2, [arg_3ch]");
0x00076466 movs r1, 0x5d | r1 = 0x5d;
0x00076468 mov r0, r5 | r0 = r5;
0x0007646a str r2, [sp] | *(sp) = r2;
0x0007646c ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x0007646e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00076472 b.w 0x76cbe | goto label_356;
| label_346:
0x00076476 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x00076478 bmi.w 0x76764 | goto label_357;
| }
0x0007647c ldr.w r2, [pc, 0x8e4] |
0x00076480 add r2, pc | r2 = 0xed1e8;
| label_117:
0x00076482 ldr.w r1, [pc, 0x8e4] | r1 = *(0x00076d68);
0x00076486 mov r0, fp | r0 = fp;
0x00076488 ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x0007648a add r1, pc | r1 += pc;
0x0007648c bl 0x25778 | fcn_00025778 (r0);
| label_119:
0x00076490 ldr r1, [sp, 0x50] | r1 = *(arg_50h);
0x00076492 mvn r5, 5 | r5 = ~5;
0x00076496 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x00076498 bl 0x159dc | fcn_000159dc (r0, r1);
0x0007649c b.w 0x73c2e | goto label_88;
| label_344:
0x000764a0 ldr.w r3, [pc, 0x8c8] |
0x000764a4 add r3, pc | r3 = 0xed214;
0x000764a6 adds r3, 4 | r3 += 4;
0x000764a8 b 0x76240 | goto label_89;
| label_290:
0x000764aa ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x000764ae cmp r3, 0 |
| if (r3 != 0) {
0x000764b0 bne.w 0x75940 | goto label_90;
| }
0x000764b4 b.w 0x7515a | goto label_91;
| label_282:
0x000764b8 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x000764ba mov r1, r2 | r1 = r2;
0x000764bc bl 0x159dc | fcn_000159dc (r0, r1);
0x000764c0 b.w 0x723bc | goto label_6;
| label_341:
0x000764c4 ldr.w r1, [pc, 0x8a8] | r1 = *(0x00076d70);
0x000764c8 mov r0, fp | r0 = fp;
0x000764ca add r1, pc | r1 += pc;
0x000764cc bl 0x25778 | fcn_00025778 (r0);
0x000764d0 b.w 0x723bc | goto label_6;
| label_228:
0x000764d4 ldr.w r1, [pc, 0x89c] |
0x000764d8 mov r2, r7 | r2 = r7;
0x000764da mov r0, fp | r0 = fp;
0x000764dc add r1, pc | r1 = 0xed254;
0x000764de bl 0x25778 | fcn_00025778 (r0);
0x000764e2 b.w 0x73de4 | goto label_84;
| label_190:
0x000764e6 movs r2, 1 | r2 = 1;
0x000764e8 mov r1, r8 | r1 = r8;
0x000764ea ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x000764ec bl 0x3103c | fcn_0003103c (r0, r1, r2);
0x000764f0 ldr r7, [sp, 0x34] | r7 = *(arg_34h);
0x000764f2 movs r2, 1 | r2 = 1;
0x000764f4 str r0, [r7, 0xc] | *((r7 + 0xc)) = r0;
0x000764f6 ldrd r0, r1, [sp, 0x2c] | __asm ("ldrd r0, r1, [arg_2ch]");
0x000764fa bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x000764fe ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076500 str r0, [r7, 0x18] | *((r7 + 0x18)) = r0;
0x00076502 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00076506 cmp r3, 0 |
| if (r3 == 0) {
0x00076508 beq.w 0x72eea | goto label_92;
| }
0x0007650c b.w 0x72f52 | goto label_93;
| label_291:
0x00076510 ldr.w r3, [pc, 0x864] |
0x00076514 add r3, pc | r3 = 0xed290;
0x00076516 adds r3, 4 | r3 += 4;
0x00076518 b.w 0x74eec | goto label_94;
| label_316:
0x0007651c cmp.w r8, 0 |
| if (r8 == 0) {
0x00076520 beq.w 0x755b0 | goto label_59;
| }
0x00076524 ldr.w r1, [r8, 4] | r1 = *((r8 + 4));
0x00076528 movs r3, 2 | r3 = 2;
0x0007652a b 0x76538 | goto label_358;
| label_95:
0x0007652c add r2, r8 | r2 += r8;
0x0007652e ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00076530 add r3, r2 | r3 += r2;
0x00076532 cmp r1, r3 |
| if (r1 <= r3) {
0x00076534 ble.w 0x755b0 | goto label_59;
| }
| label_358:
0x00076538 ldr.w r0, [r8, r3, lsl 2] | offset_12 = r3 << 2;
| r0 = *((r8 + offset_12));
0x0007653c lsls r2, r3, 2 | r2 = r3 << 2;
0x0007653e ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x00076540 cmp r0, r7 |
| if (r0 != r7) {
0x00076542 bne 0x7652c | goto label_95;
| }
0x00076544 b.w 0x75244 | goto label_34;
| label_317:
0x00076548 add.w r2, r3, 0xd | r2 = r3 + 0xd;
0x0007654c ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x0007654e asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00076550 str r2, [sp, 0x44] | *(arg_44h) = r2;
0x00076552 mov r1, r8 | r1 = r8;
0x00076554 lsls r3, r3, 2 | r3 <<= 2;
0x00076556 orr.w r3, r3, r2, lsr 30 | r3 |= (r2 >> 30);
0x0007655a lsls r2, r2, 2 | r2 <<= 2;
0x0007655c bl 0x1b3a0 | r0 = fcn_0001b3a0 (r0, r1, r2);
0x00076560 mov r7, r0 | r7 = r0;
0x00076562 cmp r0, 0 |
| if (r0 == 0) {
0x00076564 beq.w 0x7560a | goto label_96;
| }
0x00076568 movs r3, 2 | r3 = 2;
0x0007656a str r3, [r7, 4] | *((r7 + 4)) = r3;
0x0007656c b 0x76070 | goto label_97;
| label_339:
0x0007656e ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x00076570 ldrd r0, r3, [r2, 0x14] | __asm ("ldrd r0, r3, [r2, 0x14]");
0x00076574 cmp r0, r3 |
| if (r0 != r3) {
0x00076576 bne.w 0x723b0 | goto label_98;
| }
0x0007657a mov r7, r2 | r7 = r2;
0x0007657c ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0007657e adds r0, 8 | r0 += 8;
0x00076580 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00076582 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x00076586 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00076588 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x0007658a str r2, [r7, 0x20] | *((r7 + 0x20)) = r2;
0x0007658c str r7, [r3, 0x44] | *((r3 + 0x44)) = r7;
0x0007658e b.w 0x723b4 | goto label_15;
| label_227:
0x00076592 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
| if (r3 != 0) {
0x00076594 cbnz r3, 0x765cc | goto label_359;
| }
0x00076596 ldr.w r1, [pc, 0x7e4] | r1 = *(0x00076d7c);
0x0007659a mov r0, fp | r0 = fp;
0x0007659c ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x0007659e add r1, pc | r1 += pc;
0x000765a0 add.w r2, r3, 8 | r2 = r3 + 8;
0x000765a4 bl 0x25778 | fcn_00025778 (r0);
| label_100:
0x000765a8 movs r3, 1 | r3 = 1;
0x000765aa strb.w r3, [fp, 0x11] | *(arg_11h) = r3;
0x000765ae b.w 0x73de4 | goto label_84;
| label_337:
0x000765b2 ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x000765b6 cmp r3, 0 |
| if (r3 == 0) {
0x000765b8 beq.w 0x76af8 | goto label_360;
| }
| label_133:
0x000765bc mov r0, fp | r0 = fp;
0x000765be bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x000765c2 str r0, [sp, 0x2c] | *(arg_2ch) = r0;
0x000765c4 cmp r0, 0 |
| if (r0 == 0) {
0x000765c6 beq.w 0x751f2 | goto label_22;
| }
0x000765ca b 0x75eca | goto label_99;
| label_359:
0x000765cc mov r0, fp | r0 = fp;
0x000765ce mov r1, r2 | r1 = r2;
0x000765d0 bl 0x54114 | fcn_00054114 (r0, r1);
0x000765d4 mov r0, fp | r0 = fp;
0x000765d6 bl 0x2aec8 | fcn_0002aec8 (r0, r1);
0x000765da b 0x765a8 | goto label_100;
| label_338:
0x000765dc ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x000765de movs r2, 0 | r2 = 0;
0x000765e0 ldr.w r1, [pc, 0x79c] | r1 = *(0x00076d80);
0x000765e4 mov r0, fp | r0 = fp;
0x000765e6 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000765e8 str r2, [sp, 4] | *(arg_4h) = r2;
0x000765ea add r1, pc | r1 += pc;
0x000765ec ldr r2, [sp, 0x38] | r2 = *(arg_38h);
0x000765ee ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000765f0 str r2, [sp] | *(sp) = r2;
0x000765f2 ldr r2, [sp, 0x4c] | r2 = *(arg_4ch);
0x000765f4 ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x000765f6 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x000765f8 bl 0x77c00 | fcn_00077c00 (r0);
0x000765fc b 0x75f30 | goto label_101;
| label_307:
0x000765fe ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00076600 ldr r0, [sp, 0x34] | r0 = *(arg_34h);
0x00076602 bl 0x159dc | fcn_000159dc (r0, r1);
0x00076606 b.w 0x723bc | goto label_6;
| label_289:
0x0007660a movs r3, 0 | r3 = 0;
0x0007660c movs r1, 0x44 | r1 = 0x44;
0x0007660e mov r2, r3 | r2 = r3;
0x00076610 mov r0, r8 | r0 = r8;
0x00076612 str r3, [sp] | *(sp) = r3;
0x00076614 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00076618 b.w 0x74eba | goto label_102;
| label_328:
0x0007661c mov r1, r0 | r1 = r0;
0x0007661e b.w 0x75be4 | goto label_103;
| label_303:
0x00076622 ldr.w r2, [fp, 0x80] | r2 = *(arg_80h);
0x00076626 movs r3, 0 | r3 = 0;
0x00076628 str r3, [sp] | *(sp) = r3;
0x0007662a movs r1, 0x70 | r1 = 0x70;
0x0007662c mov r0, r8 | r0 = r8;
0x0007662e ldrd r2, r3, [r2, 0x5c] | __asm ("ldrd r2, r3, [r2, 0x5c]");
0x00076632 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00076636 b.w 0x7513c | goto label_104;
| if (r1 != 0x70) {
| label_331:
0x0007663a bne.w 0x75d70 | goto label_105;
| }
0x0007663e b.w 0x75d42 | goto label_106;
| label_330:
0x00076642 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00076644 mov r0, r7 | r0 = r7;
0x00076646 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x0007664a b.w 0x723bc | goto label_6;
| label_189:
0x0007664e mov r3, r7 | r3 = r7;
0x00076650 b.w 0x72e48 | goto label_107;
| label_232:
0x00076654 ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x00076658 cmp r3, 0 |
| if (r3 == 0) {
0x0007665a beq 0x7672c | goto label_361;
| }
| label_114:
0x0007665c mov r0, fp | r0 = fp;
0x0007665e bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x00076662 str r0, [sp, 0x34] | *(arg_34h) = r0;
0x00076664 cmp r0, 0 |
| if (r0 == 0) {
0x00076666 beq.w 0x73de4 | goto label_84;
| }
0x0007666a b.w 0x73d80 | goto label_108;
| label_230:
0x0007666e ldr r3, [r3] | r3 = *(r3);
0x00076670 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x00076672 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076674 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00076676 strd r3, r7, [sp, 0x38] | __asm ("strd r3, r7, [sp, 0x38]");
0x0007667a b.w 0x73d44 | goto label_109;
| label_250:
0x0007667e ldrb.w r3, [r7, 0xa8] | r3 = *((r7 + 0xa8));
0x00076682 cmp r3, 1 |
| if (r3 != 1) {
0x00076684 bne.w 0x744b2 | goto label_39;
| }
| label_112:
0x00076688 ldrb.w r3, [r7, 0xaa] | r3 = *((r7 + 0xaa));
0x0007668c orr r3, r3, 1 | r3 |= 1;
0x00076690 strb.w r3, [r7, 0xaa] | *((r7 + 0xaa)) = r3;
0x00076694 b.w 0x744b2 | goto label_39;
| label_335:
0x00076698 ldr.w r1, [pc, 0x6e8] | r1 = *(0x00076d84);
0x0007669c movs r3, 1 | r3 = 1;
0x0007669e str r3, [sp] | *(sp) = r3;
0x000766a0 mov r0, fp | r0 = fp;
0x000766a2 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000766a4 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000766a6 add r1, pc | r1 += pc;
0x000766a8 bl 0x77c00 | fcn_00077c00 (r0);
0x000766ac b.w 0x75e66 | goto label_110;
| label_334:
0x000766b0 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x000766b2 mov r0, r7 | r0 = r7;
0x000766b4 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x000766b8 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x000766ba mov r0, r7 | r0 = r7;
0x000766bc bl 0x159dc | fcn_000159dc (r0, r1);
0x000766c0 b.w 0x723bc | goto label_6;
| label_333:
0x000766c4 ldr.w r1, [pc, 0x6c0] |
0x000766c8 movs r3, 0 | r3 = 0;
0x000766ca ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x000766cc mov r0, fp | r0 = fp;
0x000766ce str r3, [sp] | *(sp) = r3;
0x000766d0 add r1, pc |
0x000766d2 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x000766d4 bl 0x77c00 | fcn_00077c00 (r0);
0x000766d8 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x000766da mov r0, fp | r0 = fp;
0x000766dc ldr.w r1, [pc, 0x6ac] | r1 = *(0x00076d8c);
0x000766e0 mov r2, r3 | r2 = r3;
0x000766e2 add r1, pc |
0x000766e4 bl 0x77c00 | fcn_00077c00 (r0);
0x000766e8 ldr.w r1, [pc, 0x6a4] | r1 = *(0x00076d90);
0x000766ec mov r0, fp | r0 = fp;
0x000766ee add r1, pc | r1 = 0x1da234;
0x000766f0 bl 0x77c00 | fcn_00077c00 (r0);
0x000766f4 b.w 0x75db6 | goto label_111;
| label_251:
0x000766f8 ldr.w r1, [pc, 0x698] | r1 = *(0x00076d94);
0x000766fc mov r0, fp | r0 = fp;
0x000766fe add r1, pc | r1 += pc;
0x00076700 bl 0x25778 | fcn_00025778 (r0);
0x00076704 ldrb.w r3, [r7, 0xa8] | r3 = *((r7 + 0xa8));
0x00076708 cmp r3, 1 |
| if (r3 != 1) {
0x0007670a bne.w 0x744b2 | goto label_39;
| }
0x0007670e b 0x76688 | goto label_112;
| label_256:
0x00076710 ldr.w r2, [pc, 0x684] |
0x00076714 add r2, pc | r2 = 0xed4b0;
0x00076716 b.w 0x74488 | goto label_113;
| label_188:
0x0007671a movs r3, 0 | r3 = 0;
0x0007671c mov.w r7, 0x8000 | r7 = fcn.00008000;
0x00076720 movt r3, 0xfff8 | r3 = (r3 & 0xFFFF) | 0xfff80000;
0x00076724 movt r7, 0xffff | r7 = (r7 & 0xFFFF) | 0xffff0000;
0x00076728 b.w 0x72e48 | goto label_107;
| label_361:
0x0007672c ldr.w r3, [fp] | r3 = *(fp);
0x00076730 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00076732 lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
0x00076734 itt pl |
| if (r0 < r3) {
0x00076736 movpl r3, 1 | r3 = 1;
| }
| if (r0 < r3) {
0x00076738 strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x0007673c b 0x7665c | goto label_114;
| label_342:
0x0007673e movs r3, 0 | r3 = 0;
0x00076740 movs r1, 0x25 | r1 = 0x25;
0x00076742 str r3, [sp] | *(sp) = r3;
0x00076744 mov r0, r8 | r0 = r8;
0x00076746 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0007674a adds r3, r0, 1 | r3 = r0 + 1;
0x0007674c mov r7, r0 | r7 = r0;
0x0007674e str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x00076750 b 0x761c4 | goto label_115;
| label_323:
0x00076752 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076754 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00076756 lsls r7, r3, 0x1c | r7 = r3 << 0x1c;
0x00076758 itt pl |
| if (r7 < r3) {
0x0007675a movpl r3, 1 | r3 = 1;
| }
| if (r7 < r3) {
0x0007675c strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x00076760 b.w 0x75932 | goto label_116;
| label_357:
0x00076764 ldr.w r2, [pc, 0x634] |
0x00076768 add r2, pc | r2 = 0xed508;
0x0007676a b 0x76482 | goto label_117;
| label_349:
0x0007676c movs r1, 1 | r1 = 1;
0x0007676e ldr.w r2, [pc, 0x630] |
0x00076772 ldr r5, [r3] | r5 = *(r3);
0x00076774 movs r3, 0 | r3 = 0;
0x00076776 strb.w r1, [fp, 0x10] | *(arg_10h) = r1;
0x0007677a mov r8, r3 | r8 = r3;
0x0007677c ldr.w r1, [pc, 0x624] |
0x00076780 add r2, pc | r2 = 0xed526;
0x00076782 strd r2, r3, [sp, 4] | __asm ("strd r2, r3, [sp, 4]");
0x00076786 mov r0, fp | r0 = fp;
0x00076788 str r3, [sp] | *(sp) = r3;
0x0007678a mov r2, r5 | r2 = r5;
0x0007678c add r1, pc | r1 = 0xed534;
0x0007678e mov r3, r5 | r3 = r5;
0x00076790 bl 0x77c00 | fcn_00077c00 (r0);
| label_134:
0x00076794 movs r3, 0 | r3 = 0;
0x00076796 ldr.w r1, [pc, 0x610] |
0x0007679a str r3, [sp] | *(sp) = r3;
0x0007679c mov r0, fp | r0 = fp;
0x0007679e ldr.w r3, [pc, 0x60c] |
0x000767a2 mov r2, r5 | r2 = r5;
0x000767a4 add r1, pc |
0x000767a6 ldr.w r7, [pc, 0x608] |
0x000767aa str r1, [sp, 0x40] | *(arg_40h) = r1;
0x000767ac add r3, pc | r3 = 0xed55e;
0x000767ae bl 0x77c00 | fcn_00077c00 (r0);
0x000767b2 ldr.w r1, [pc, 0x600] | r1 = *(0x00076db4);
0x000767b6 mov r3, r5 | r3 = r5;
0x000767b8 mov r2, r5 | r2 = r5;
0x000767ba mov r0, fp | r0 = fp;
0x000767bc add r7, pc | r7 = 0xed572;
0x000767be add r1, pc |
0x000767c0 bl 0x77c00 | fcn_00077c00 (r0);
0x000767c4 ldr.w r1, [pc, 0x5f0] | r1 = *(0x00076db8);
0x000767c8 mov r0, fp | r0 = fp;
0x000767ca add r1, pc | r1 = 0x1da4e2;
0x000767cc bl 0x77c00 | fcn_00077c00 (r0);
0x000767d0 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000767d2 mov r2, r5 | r2 = r5;
0x000767d4 ldr.w r1, [pc, 0x5e4] |
0x000767d8 mov r0, fp | r0 = fp;
0x000767da ldr r3, [r3] | r3 = *(r3);
0x000767dc add r1, pc | r1 = 0xed59c;
0x000767de str r3, [sp, 4] | *(arg_4h) = r3;
0x000767e0 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x000767e2 str r3, [sp] | *(sp) = r3;
0x000767e4 mov r3, r8 | r3 = r8;
0x000767e6 bl 0x77c00 | fcn_00077c00 (r0);
0x000767ea mov r1, r8 | r1 = r8;
0x000767ec mov r0, fp | r0 = fp;
0x000767ee movs r2, 2 | r2 = 2;
0x000767f0 bl 0x2bc6c | fcn_0002bc6c (r0, r1, r2);
0x000767f4 mov.w r3, 1 | r3 = 1;
0x000767f8 ldr.w r1, [pc, 0x5c4] | r1 = *(0x00076dc0);
0x000767fc strb.w r3, [fp, 0x10] | *(arg_10h) = r3;
0x00076800 mov r2, r5 | r2 = r5;
0x00076802 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076804 mov r0, fp | r0 = fp;
0x00076806 add r1, pc | r1 += pc;
0x00076808 str r3, [sp] | *(sp) = r3;
0x0007680a movs r3, 1 | r3 = 1;
0x0007680c strd r7, r3, [sp, 4] | __asm ("strd r7, r3, [sp, 4]");
0x00076810 mov r3, r5 | r3 = r5;
0x00076812 bl 0x77c00 | fcn_00077c00 (r0);
0x00076816 movs r3, 1 | r3 = 1;
0x00076818 ldr r1, [sp, 0x40] | r1 = *(arg_40h);
0x0007681a str r3, [sp] | *(sp) = r3;
0x0007681c mov r2, r5 | r2 = r5;
0x0007681e mov r3, r7 | r3 = r7;
0x00076820 mov r0, fp | r0 = fp;
0x00076822 bl 0x77c00 | fcn_00077c00 (r0);
0x00076826 b 0x76364 | goto label_118;
| label_345:
0x00076828 ldr.w r1, [pc, 0x598] |
0x0007682c mov r0, fp | r0 = fp;
0x0007682e ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x00076830 add r1, pc | r1 = 0xed5f8;
0x00076832 bl 0x25778 | fcn_00025778 (r0);
0x00076836 b 0x76490 | goto label_119;
| label_170:
0x00076838 blx 0x7e8c | fcn_00007e8c ();
| label_329:
0x0007683c mov.w r8, 0x8000 | r8 = fcn.00008000;
0x00076840 sub.w r2, r2, 0x80000 | r2 -= 0x80000;
0x00076844 movt r8, 0xffff | r8 = (r8 & 0xFFFF) | 0xffff0000;
0x00076848 b.w 0x75c60 | goto label_120;
| label_340:
0x0007684c mov r7, r8 | r7 = r8;
0x0007684e b.w 0x7560a | goto label_96;
| label_229:
0x00076852 sub.w r3, r3, 0x80000 | r3 -= 0x80000;
0x00076856 mov.w r7, 0x8000 | r7 = fcn.00008000;
0x0007685a ldr r3, [r3] | r3 = *(r3);
0x0007685c movt r7, 0xffff | r7 = (r7 & 0xFFFF) | 0xffff0000;
0x00076860 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x00076862 movs r3, 0 |
0x00076864 movt r3, 0xfff8 | r3 = 0x-80000;
0x00076868 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x0007686a ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x0007686c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0007686e str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00076870 b.w 0x73d44 | goto label_109;
| label_151:
0x00076874 movs r3, 0 | r3 = 0;
0x00076876 sub.w r7, r7, 0x80000 | r7 -= 0x80000;
0x0007687a movt r3, 0xfff8 | r3 = (r3 & 0xFFFF) | 0xfff80000;
0x0007687e ldr.w r8, [sp, 0x40] | r8 = *(arg_40h);
0x00076882 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
0x00076884 mov.w r3, 0x8000 |
0x00076888 movt r3, 0xffff | r3 = 0xNaN;
0x0007688c str r3, [sp, 0x40] | *(arg_40h) = r3;
0x0007688e ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00076890 b.w 0x72206 | goto label_81;
| label_255:
0x00076894 ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00076898 cmp r3, 1 |
| if (r3 < 1) {
0x0007689a bls 0x76948 | goto label_362;
| }
| label_124:
0x0007689c movs r3, 0x21 | r3 = 0x21;
0x0007689e str r3, [sp, 0x38] | *(arg_38h) = r3;
| label_123:
0x000768a0 mov r0, r7 | r0 = r7;
0x000768a2 movs r2, 0x24 | r2 = 0x24;
0x000768a4 movs r3, 0 | r3 = 0;
0x000768a6 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x000768aa mov r8, r0 | r8 = r0;
0x000768ac cmp r0, 0 |
| if (r0 == 0) {
0x000768ae beq.w 0x744aa | goto label_121;
| }
0x000768b2 movs r2, 0x20 | r2 = 0x20;
0x000768b4 movs r1, 0 | r1 = 0;
0x000768b6 add.w r0, r8, 4 | r0 = r8 + 4;
0x000768ba blx 0x8264 | fcn_00008264 ();
0x000768be ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x000768c0 mov r0, r7 | r0 = r7;
0x000768c2 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x000768c6 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000768c8 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x000768ca bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x000768ce ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x000768d0 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000768d2 ldr r2, [sp, 0x58] | r2 = *(arg_58h);
0x000768d4 cmp r1, 0x21 |
0x000768d6 ldr r1, [sp, 0x40] | r1 = *(arg_40h);
0x000768d8 add r3, r2 | r3 += r2;
0x000768da ldr r1, [r1, 0x48] | r1 = *((r1 + 0x48));
0x000768dc ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000768de str.w r0, [r8, 4] | __asm ("str.w r0, [r8, 4]");
0x000768e2 str.w r1, [r8, 0x18] | __asm ("str.w r1, [r8, 0x18]");
0x000768e6 ldr r1, [sp, 0x50] | r1 = *(arg_50h);
0x000768e8 str.w r3, [r8, 0x14] | __asm ("str.w r3, [r8, 0x14]");
0x000768ec ite eq |
| if (r1 != 0x21) {
0x000768ee moveq r3, 1 | r3 = 1;
| }
| if (r1 == 0x21) {
0x000768f0 movne r3, 2 | r3 = 2;
| }
0x000768f2 strb.w r1, [r8, 8] | *((r8 + 8)) = r1;
0x000768f6 strb.w r3, [r8, 9] | *((r8 + 9)) = r3;
0x000768fa ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x000768fe cmp r3, 1 |
| if (r3 < 1) {
0x00076900 bls.w 0x76a32 | goto label_363;
| }
0x00076904 ldr.w r3, [fp, 0x10c] | r3 = *(arg_10ch);
0x00076908 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x0007690a ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
| if (r3 != 0) {
0x0007690c cbnz r3, 0x76914 | goto label_364;
| }
0x0007690e b 0x7691c | goto label_365;
| do {
0x00076910 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 == 0) {
0x00076912 cbz r3, 0x7691c | goto label_365;
| }
| label_364:
0x00076914 ldr r2, [r3] | r2 = *(r3);
0x00076916 cmp r1, r2 |
0x00076918 bne 0x76910 |
| } while (r1 != r2);
0x0007691a str r0, [r3] | *(r3) = r0;
| label_365:
0x0007691c ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x0007691e mov r0, r7 | r0 = r7;
0x00076920 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00076922 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x00076926 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076928 str.w r3, [r8, 0x10] | __asm ("str.w r3, [r8, 0x10]");
0x0007692c str.w r8, [fp, 0xec] | __asm ("str.w r8, [arg_ech]");
0x00076930 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00076934 movs r3, 0 | r3 = 0;
0x00076936 b.w 0x744dc | goto label_122;
| label_254:
0x0007693a ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x0007693c cmp r3, 0x41 |
| if (r3 == 0x41) {
0x0007693e beq 0x769b6 | goto label_366;
| }
0x00076940 ldrb.w r3, [fp, 0xc8] | r3 = *(arg_c8h);
0x00076944 cmp r3, 1 |
| if (r3 > 1) {
0x00076946 bhi 0x768a0 | goto label_123;
| }
| label_362:
0x00076948 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0007694a ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x0007694c ldr r1, [r3, 0x48] | r1 = *((r3 + 0x48));
0x0007694e cmp r1, 0 |
| if (r1 == 0) {
0x00076950 beq 0x769cc | goto label_367;
| }
0x00076952 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00076954 cmp r1, r3 |
| if (r1 == r3) {
0x00076956 beq 0x769d4 | goto label_368;
| }
0x00076958 mov r3, r2 | r3 = r2;
| do {
0x0007695a ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x0007695c adds r3, 0x10 | r3 += 0x10;
0x0007695e add.w r8, r8, 1 | r8++;
0x00076962 cmp r1, r0 |
0x00076964 bne 0x7695a |
| } while (r1 != r0);
0x00076966 lsl.w r3, r8, 4 | r3 = r8 << 4;
0x0007696a ldr r1, [sp, 0x4c] | r1 = *(arg_4ch);
0x0007696c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0007696e str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x00076970 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00076972 ldr r3, [r3] | r3 = *(r3);
0x00076974 cmp r1, 0 |
| if (r1 == 0) {
0x00076976 beq 0x76a16 | goto label_369;
| }
0x00076978 ldr r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x0007697a movs r1, 5 | r1 = 5;
0x0007697c mov r0, fp | r0 = fp;
0x0007697e str r2, [sp] | *(sp) = r2;
0x00076980 ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x00076982 bl 0x25800 | r0 = fcn_00025800 (r0);
0x00076986 cmp r0, 0 |
| if (r0 != 0) {
0x00076988 bne.w 0x744aa | goto label_121;
| }
0x0007698c cmp.w r8, 1 |
| if (r8 != 1) {
0x00076990 bne 0x769fa | goto label_370;
| }
| label_128:
0x00076992 ldr.w r2, [pc, 0x434] | r2 = *(0x00076dc8);
0x00076996 add r2, pc | r2 += pc;
| label_126:
0x00076998 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0007699a movs r1, 0x12 | r1 = 0x12;
0x0007699c mov r0, fp | r0 = fp;
0x0007699e str r3, [sp] | *(sp) = r3;
0x000769a0 movs r3, 0 | r3 = 0;
0x000769a2 bl 0x25800 | r0 = fcn_00025800 (r0);
0x000769a6 cmp r0, 0 |
| if (r0 != 0) {
0x000769a8 bne.w 0x744aa | goto label_121;
| }
0x000769ac ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x000769ae cmp r3, 0x41 |
| if (r3 != 0x41) {
0x000769b0 bne.w 0x768a0 | goto label_123;
| }
0x000769b4 b 0x7689c | goto label_124;
| label_366:
0x000769b6 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000769b8 mov r0, fp | r0 = fp;
0x000769ba ldr.w r1, [pc, 0x410] | r1 = *(0x00076dcc);
0x000769be add.w r2, r3, 8 | r2 = r3 + 8;
0x000769c2 add r1, pc | r1 += pc;
0x000769c4 bl 0x25778 | fcn_00025778 (r0);
0x000769c8 b.w 0x74496 | goto label_125;
| label_367:
0x000769cc mov.w r8, 0x8000 |
0x000769d0 movt r8, 0xffff | r8 = 0xNaN;
| label_368:
0x000769d4 lsl.w r8, r8, 4 | r8 <<= 4;
0x000769d8 ldr r1, [sp, 0x4c] | r1 = *(arg_4ch);
0x000769da ldr.w r3, [r2, r8] | r3 = *((r2 + r8));
0x000769de str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x000769e0 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x000769e2 ldr r3, [r3] | r3 = *(r3);
| if (r1 == 0) {
0x000769e4 cbz r1, 0x76a00 | goto label_127;
| }
0x000769e6 ldr r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x000769e8 movs r1, 5 | r1 = 5;
0x000769ea mov r0, fp | r0 = fp;
0x000769ec str r2, [sp] | *(sp) = r2;
0x000769ee ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x000769f0 bl 0x25800 | r0 = fcn_00025800 (r0);
0x000769f4 cmp r0, 0 |
| if (r0 != 0) {
0x000769f6 bne.w 0x744aa | goto label_121;
| }
| do {
| label_370:
0x000769fa ldr r2, [pc, 0x3d4] |
0x000769fc add r2, pc | r2 = 0xed7d2;
0x000769fe b 0x76998 | goto label_126;
| label_127:
0x00076a00 ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x00076a02 movs r1, 7 | r1 = 7;
0x00076a04 mov r0, fp | r0 = fp;
0x00076a06 str r2, [sp] | *(sp) = r2;
0x00076a08 ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x00076a0a bl 0x25800 | r0 = fcn_00025800 (r0);
0x00076a0e cmp r0, 0 |
0x00076a10 beq 0x769fa |
| } while (r0 == 0);
0x00076a12 b.w 0x744aa | goto label_121;
| label_369:
0x00076a16 cmp.w r8, 1 |
| if (r8 != 1) {
0x00076a1a bne 0x76a00 | goto label_127;
| }
0x00076a1c ldr r2, [sp, 0x3c] | r2 = *(arg_3ch);
0x00076a1e movs r1, 5 | r1 = 5;
0x00076a20 mov r0, fp | r0 = fp;
0x00076a22 str r2, [sp] | *(sp) = r2;
0x00076a24 ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x00076a26 bl 0x25800 | r0 = fcn_00025800 (r0);
0x00076a2a cmp r0, 0 |
| if (r0 == 0) {
0x00076a2c beq 0x76992 | goto label_128;
| }
0x00076a2e b.w 0x744aa | goto label_121;
| label_363:
0x00076a32 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00076a34 cmp r1, 0 |
| if (r1 == 0) {
0x00076a36 beq 0x76ab6 | goto label_371;
| }
0x00076a38 movs r3, 0 | r3 = 0;
0x00076a3a movs r2, 1 | r2 = 1;
0x00076a3c mov r0, r7 | r0 = r7;
0x00076a3e bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x00076a42 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076a44 str.w r0, [r8, 0xc] | __asm ("str.w r0, [r8, 0xc]");
0x00076a48 mov r0, r7 | r0 = r7;
0x00076a4a ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00076a4c str.w r3, [r8, 0x10] | __asm ("str.w r3, [r8, 0x10]");
0x00076a50 str.w r8, [fp, 0xec] | __asm ("str.w r8, [arg_ech]");
0x00076a54 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00076a58 movs r3, 0 | r3 = 0;
0x00076a5a b.w 0x744d0 | goto label_129;
| label_253:
0x00076a5e ldr r1, [pc, 0x374] |
0x00076a60 mov r0, fp | r0 = fp;
0x00076a62 add r1, pc | r1 = 0xed83c;
0x00076a64 bl 0x25778 | fcn_00025778 (r0);
0x00076a68 b.w 0x744aa | goto label_121;
| label_252:
0x00076a6c ldr r2, [sp, 0x58] | r2 = *(arg_58h);
0x00076a6e ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00076a70 ldr r1, [sp, 0x44] | r1 = *(arg_44h);
0x00076a72 add r3, r2 | r3 += r2;
0x00076a74 mov r2, r8 | r2 = r8;
0x00076a76 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00076a78 adds r0, 0x28 | r0 += 0x28;
0x00076a7a bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x00076a7e ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00076a80 cmp r3, 0 |
| if (r3 == 0) {
0x00076a82 beq.w 0x74458 | goto label_130;
| }
0x00076a86 ldr r3, [sp, 0x54] | r3 = *(arg_54h);
| if (r3 == 0) {
0x00076a88 cbz r3, 0x76ad6 | goto label_372;
| }
0x00076a8a ldr.w r0, [fp, 0x74] | r0 = *(arg_74h);
0x00076a8e movs r2, 1 | r2 = 1;
0x00076a90 ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
0x00076a92 cmp r0, 0 |
0x00076a94 it eq |
| if (r0 != 0) {
0x00076a96 moveq r0, fp | r0 = fp;
| }
0x00076a98 ldr r3, [r0, 0x54] | r3 = *((r0 + 0x54));
0x00076a9a lsls r2, r1 | r2 <<= r1;
0x00076a9c tst r3, r2 |
| if ((r3 & r2) != 0) {
0x00076a9e bne.w 0x744aa | goto label_121;
| }
0x00076aa2 cmp r1, 1 |
0x00076aa4 orr.w r3, r3, r2 | r3 |= r2;
0x00076aa8 str r3, [r0, 0x54] | *((r0 + 0x54)) = r3;
| if (r1 != 1) {
0x00076aaa bne.w 0x744aa | goto label_121;
| }
0x00076aae bl 0x53ee0 | fcn_00053ee0 (r0, r1, r2, r3);
0x00076ab2 b.w 0x744aa | goto label_121;
| label_371:
0x00076ab6 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076ab8 mov r0, r7 | r0 = r7;
0x00076aba ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00076abc str.w r3, [r8, 0x10] | __asm ("str.w r3, [r8, 0x10]");
0x00076ac0 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00076ac2 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x00076ac4 adds r0, 0xc | r0 += 0xc;
0x00076ac6 str.w r8, [fp, 0xec] | __asm ("str.w r8, [arg_ech]");
0x00076aca str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x00076acc bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00076ad0 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076ad2 b.w 0x744dc | goto label_122;
| label_372:
0x00076ad6 ldr r1, [pc, 0x300] |
0x00076ad8 mov r0, fp | r0 = fp;
0x00076ada ldr r2, [sp, 0x70] | r2 = *(arg_70h);
0x00076adc add r1, pc | r1 = 0xed8ba;
0x00076ade bl 0x25778 | fcn_00025778 (r0);
0x00076ae2 b.w 0x744aa | goto label_121;
| label_326:
0x00076ae6 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076ae8 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00076aea b.w 0x75af0 | goto label_131;
| label_224:
0x00076aee movs r7, 0 |
0x00076af0 movt r7, 0xfff8 | r7 = 0x-80000;
0x00076af4 b.w 0x73b9c | goto label_132;
| label_360:
0x00076af8 ldr.w r3, [fp] | r3 = *(fp);
0x00076afc ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00076afe lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x00076b00 itt pl |
| if (r1 < r3) {
0x00076b02 movpl r3, 1 | r3 = 1;
| }
| if (r1 < r3) {
0x00076b04 strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x00076b08 b 0x765bc | goto label_133;
| label_325:
0x00076b0a mov.w r3, 0x8000 |
0x00076b0e movt r3, 0xffff | r3 = 0xNaN;
0x00076b12 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00076b14 b.w 0x75af0 | goto label_131;
| label_348:
0x00076b18 sub.w r3, r3, 0x80000 | r3 -= 0x80000;
0x00076b1c movs r1, 1 | r1 = 1;
0x00076b1e ldr r5, [r3] | r5 = *(r3);
0x00076b20 movs r2, 0 | r2 = 0;
0x00076b22 ldr r3, [pc, 0x2b8] |
0x00076b24 mov r0, fp | r0 = fp;
0x00076b26 strb.w r1, [fp, 0x10] | *(arg_10h) = r1;
0x00076b2a mov.w r8, 0x8000 | r8 = fcn.00008000;
0x00076b2e ldr r1, [pc, 0x2b0] |
0x00076b30 movt r8, 0xffff | r8 = (r8 & 0xFFFF) | 0xffff0000;
0x00076b34 add r3, pc | r3 = 0xed916;
0x00076b36 str r2, [sp] | *(sp) = r2;
0x00076b38 strd r3, r2, [sp, 4] | __asm ("strd r3, r2, [sp, 4]");
0x00076b3c mov r3, r5 | r3 = r5;
0x00076b3e add r1, pc | r1 = 0xed924;
0x00076b40 mov r2, r5 | r2 = r5;
0x00076b42 bl 0x77c00 | fcn_00077c00 (r0);
0x00076b46 b 0x76794 | goto label_134;
| label_351:
0x00076b48 movs r3, 0 | r3 = 0;
0x00076b4a mov r2, r8 | r2 = r8;
0x00076b4c movs r1, 0x25 | r1 = 0x25;
0x00076b4e mov r0, r5 | r0 = r5;
0x00076b50 str r3, [sp] | *(sp) = r3;
0x00076b52 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00076b56 str r0, [sp, 0x4c] | *(arg_4ch) = r0;
0x00076b58 b 0x763d0 | goto label_135;
| label_350:
0x00076b5a ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x00076b5e cmp r3, 0 |
| if (r3 == 0) {
0x00076b60 beq.w 0x76cde | goto label_373;
| }
| label_141:
0x00076b64 mov r0, fp | r0 = fp;
0x00076b66 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00076b6a mov r5, r0 | r5 = r0;
0x00076b6c b 0x76388 | goto label_136;
| label_347:
0x00076b6e ldr r1, [pc, 0x274] |
0x00076b70 mov r0, fp | r0 = fp;
0x00076b72 ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x00076b74 add r1, pc | r1 = 0xed95e;
0x00076b76 bl 0x25778 | fcn_00025778 (r0);
0x00076b7a b 0x76490 | goto label_119;
| label_352:
0x00076b7c mov r2, r8 | r2 = r8;
0x00076b7e movs r1, 0x83 | r1 = 0x83;
0x00076b80 mov r0, r5 | r0 = r5;
0x00076b82 str r7, [sp] | *(sp) = r7;
0x00076b84 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00076b88 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00076b8a ldrsh.w r0, [r3, 0x2a] | r0 = *((r3 + 0x2a));
0x00076b8e ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00076b92 cmp r0, 0 |
0x00076b94 add r3, r0 | r3 += r0;
0x00076b96 add.w r3, r3, 1 | r3++;
0x00076b9a str r3, [sp, 0x40] | *(arg_40h) = r3;
0x00076b9c str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
| if (r0 <= 0) {
0x00076ba0 ble 0x76c34 | goto label_374;
| }
0x00076ba2 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076ba4 str r7, [sp, 0x3c] | *(arg_3ch) = r7;
0x00076ba6 adds r3, 2 | r3 += 2;
0x00076ba8 str r3, [sp, 0x34] | *(arg_34h) = r3;
| label_355:
0x00076baa strd r4, r6, [sp, 0x58] | __asm ("strd r4, r6, [sp, 0x58]");
0x00076bae movs r7, 0 | r7 = 0;
0x00076bb0 ldr r6, [sp, 0x2c] | r6 = *(arg_2ch);
0x00076bb2 str.w sb, [sp, 0x2c] | __asm ("str.w sb, [arg_2ch]");
0x00076bb6 ldr.w sb, [sp, 0x38] | sb = *(arg_38h);
0x00076bba b 0x76bea | goto label_375;
| label_138:
0x00076bbc ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00076bbe ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00076bc0 add r3, r2 | r3 += r2;
| label_144:
0x00076bc2 ldrsh.w r2, [r6, 0x28] | r2 = *((r6 + 0x28));
0x00076bc6 cmp r2, r7 |
| if (r2 == r7) {
0x00076bc8 beq.w 0x76cf0 | goto label_376;
| }
0x00076bcc str r3, [sp] | *(sp) = r3;
0x00076bce mov r2, r8 | r2 = r8;
0x00076bd0 mov r3, r7 | r3 = r7;
0x00076bd2 mov r1, r6 | r1 = r6;
0x00076bd4 mov r0, r5 | r0 = r5;
0x00076bd6 bl 0x66f40 | fcn_00066f40 (r0, r1, r2, r3, r4);
| label_142:
0x00076bda ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00076bdc ldrsh.w r0, [r6, 0x2a] | r0 = *((r6 + 0x2a));
0x00076be0 adds r3, 1 | r3++;
0x00076be2 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
| do {
| label_137:
0x00076be4 adds r7, 1 | r7++;
0x00076be6 cmp r7, r0 |
| if (r7 >= r0) {
0x00076be8 bge 0x76ca0 | goto label_377;
| }
| label_375:
0x00076bea ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x00076bec cmp r3, r7 |
0x00076bee beq 0x76be4 |
| } while (r3 == r7);
0x00076bf0 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00076bf2 add.w r2, r7, r7, lsl 2 | r2 = r7 + (r7 << 2);
0x00076bf6 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x00076bfa ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00076bfc ands r2, r3, 0x20 | r2 = r3 & 0x20;
| if (r2 != r3) {
0x00076c00 bne 0x76be4 | goto label_137;
| }
0x00076c02 cmp.w sb, 0 |
| if (sb == 0) {
0x00076c06 beq 0x76bbc | goto label_138;
| }
0x00076c08 ldrh.w r4, [sb, 0x34] | r4 = *((sb + 0x34));
0x00076c0c cmp r4, 0 |
| if (r4 == 0) {
0x00076c0e beq 0x76be4 | goto label_137;
| }
0x00076c10 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x00076c14 sxth.w ip, r7 | __asm ("sxth.w ip, r7");
0x00076c18 subs r1, 2 | r1 -= 2;
0x00076c1a mov r3, r1 | r3 = r1;
0x00076c1c b 0x76c24 |
| while (lr != ip) {
0x00076c1e adds r2, 1 | r2++;
0x00076c20 cmp r2, r4 |
| if (r2 == r4) {
0x00076c22 beq 0x76d0a | goto label_378;
| }
0x00076c24 ldrsh lr, [r3, 2]! |
0x00076c28 cmp lr, ip |
0x00076c2a bne 0x76c1e |
| }
0x00076c2c ldrsh.w ip, [sp, 0x44] | ip = *(arg_44h);
0x00076c30 sxth r2, r2 | __asm ("sxth r2, r2");
0x00076c32 b 0x76d12 | goto label_379;
| label_374:
0x00076c34 ldr r1, [sp, 0x40] | r1 = *(arg_40h);
0x00076c36 mov r3, r7 | r3 = r7;
0x00076c38 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00076c3a mov r0, r5 | r0 = r5;
0x00076c3c str r1, [sp] | *(sp) = r1;
0x00076c3e movs r1, 0x5d | r1 = 0x5d;
0x00076c40 adds r2, 2 | r2 += 2;
0x00076c42 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| do {
0x00076c46 ldr r3, [sp, 0x54] | r3 = *(arg_54h);
0x00076c48 mov r2, r8 | r2 = r8;
0x00076c4a movs r1, 0x7c | r1 = 0x7c;
0x00076c4c mov r0, r5 | r0 = r5;
0x00076c4e str r3, [sp] | *(sp) = r3;
0x00076c50 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00076c52 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_139:
0x00076c56 ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x00076c58 cmp r2, 0 |
| if (r2 > 0) {
0x00076c5a ble 0x76c6a |
0x00076c5c ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x00076c5e movs r1, 0x14 | r1 = 0x14;
0x00076c60 mla r3, r1, r2, r3 | __asm ("mla r3, r1, r2, r3");
0x00076c64 movs r2, 2 | r2 = 2;
0x00076c66 strh r2, [r3, -0x12] | *((r3 - 0x12)) = r2;
| }
0x00076c6a ldr r7, [sp, 0x4c] | r7 = *(arg_4ch);
0x00076c6c movs r3, 0 | r3 = 0;
0x00076c6e mov r2, r8 | r2 = r8;
0x00076c70 str r3, [sp] | *(sp) = r3;
0x00076c72 movs r1, 5 | r1 = 5;
0x00076c74 mov r0, r5 | r0 = r5;
0x00076c76 adds r3, r7, 1 | r3 = r7 + 1;
0x00076c78 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00076c7c ldr r2, [r5, 0x6c] | r2 = *((r5 + 0x6c));
0x00076c7e cmp r7, 0 |
0x00076c80 itt lt |
| if (r7 >= 0) {
0x00076c82 addlt r3, r2, -1 | r3 = r2 + -1;
| }
| if (r7 < 0) {
0x00076c86 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
| }
0x00076c88 ldr r3, [r5] | r3 = *(r5);
0x00076c8a ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 != 0) {
0x00076c8e cbnz r3, 0x76cd6 | goto label_380;
| }
0x00076c90 ldr r3, [r5, 0x68] | r3 = *((r5 + 0x68));
0x00076c92 movs r1, 0x14 | r1 = 0x14;
0x00076c94 ldr r0, [sp, 0x4c] | r0 = *(arg_4ch);
0x00076c96 mla r3, r1, r0, r3 | __asm ("mla r3, r1, r0, r3");
| label_140:
0x00076c9a str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00076c9c b.w 0x76490 | goto label_119;
| label_377:
0x00076ca0 ldrd r3, r2, [sp, 0x3c] | __asm ("ldrd r3, r2, [arg_3ch]");
0x00076ca4 movs r1, 0x5d | r1 = 0x5d;
0x00076ca6 mov r0, r5 | r0 = r5;
0x00076ca8 ldrd r4, r6, [sp, 0x58] | __asm ("ldrd r4, r6, [arg_58h]");
0x00076cac ldr.w sb, [sp, 0x2c] | sb = *(arg_2ch);
0x00076cb0 str r2, [sp] | *(sp) = r2;
0x00076cb2 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00076cb4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00076cb8 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00076cba cmp r3, 0 |
0x00076cbc beq 0x76c46 |
| } while (r3 == 0);
| label_356:
0x00076cbe ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00076cc0 movs r1, 0x86 | r1 = 0x86;
0x00076cc2 ldr r2, [sp, 0x34] | r2 = *(arg_34h);
0x00076cc4 mov r0, r5 | r0 = r5;
0x00076cc6 ldrh r3, [r3, 0x32] | r3 = *((r3 + 0x32));
0x00076cc8 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00076ccc mov r2, r8 | r2 = r8;
0x00076cce ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00076cd0 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00076cd4 b 0x76c56 | goto label_139;
| label_380:
0x00076cd6 ldr r3, [pc, 0x110] |
0x00076cd8 add r3, pc | r3 = 0xedac6;
0x00076cda adds r3, 4 | r3 += 4;
0x00076cdc b 0x76c9a | goto label_140;
| label_373:
0x00076cde ldr.w r3, [fp] | r3 = *(fp);
0x00076ce2 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00076ce4 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x00076ce6 itt pl |
| if (r3 < r3) {
0x00076ce8 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x00076cea strbpl r3, [fp, 0x17] | *(arg_17h) = r3;
| }
0x00076cee b 0x76b64 | goto label_141;
| label_376:
0x00076cf0 movs r2, 0 | r2 = 0;
0x00076cf2 movs r1, 0x48 | r1 = 0x48;
0x00076cf4 mov r0, r5 | r0 = r5;
0x00076cf6 str r2, [sp] | *(sp) = r2;
0x00076cf8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00076cfc b 0x76bda | goto label_142;
| label_354:
0x00076cfe str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x00076d00 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076d02 adds r3, 2 | r3 += 2;
0x00076d04 str r3, [sp, 0x34] | *(arg_34h) = r3;
0x00076d06 b.w 0x7644a | goto label_143;
| label_378:
0x00076d0a ldrsh.w ip, [sp, 0x44] | ip = *(arg_44h);
0x00076d0e mov.w r2, -1 | r2 = -1;
| label_379:
0x00076d12 movs r3, 0 | r3 = 0;
0x00076d14 b 0x76d1c |
| while (lr != ip) {
0x00076d16 adds r3, 1 | r3++;
0x00076d18 cmp r3, r4 |
| if (r3 == r4) {
0x00076d1a beq 0x76d28 | goto label_381;
| }
0x00076d1c ldrsh lr, [r1, 2]! |
0x00076d20 cmp lr, ip |
0x00076d22 bne 0x76d16 |
| }
0x00076d24 sxth r1, r3 | __asm ("sxth r1, r3");
0x00076d26 b 0x76d2c | goto label_382;
| label_381:
0x00076d28 mov.w r1, -1 | r1 = -1;
| label_382:
0x00076d2c ldrh.w r3, [sb, 0x32] | r3 = *((sb + 0x32));
0x00076d30 cmp r3, r2 |
| if (r3 > r2) {
0x00076d32 bgt.w 0x76be4 | goto label_137;
| }
0x00076d36 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00076d38 adds r3, r2, r3 | r3 = r2 + r3;
0x00076d3a cmp r1, r2 |
0x00076d3c it lt |
| if (r1 >= r2) {
0x00076d3e sublt r3, 1 | r3--;
| }
0x00076d40 b 0x76bc2 | goto label_144;
| label_353:
0x00076d42 movs r3, 0 | r3 = 0;
0x00076d44 ldrh r3, [r3, 0x34] | r3 = *((r3 + 0x34));
0x00076d46 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x76dec */
| #include <stdint.h>
|
; (fcn) fcn.00076dec () | void fcn_00076dec (int16_t arg_4h, int16_t arg_6h, int16_t arg_53h, int16_t arg_74h, int16_t arg_b0h, int16_t arg_f4h, int16_t arg_110h, int16_t arg_1f8h, int16_t arg_1e0h, int16_t arg_4c4h, int16_t arg_4d4h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4c4h;
| int32_t var_4b8h;
| int32_t var_4d4h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch_3;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_20h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00076dec push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00076df0 subw sp, sp, 0x4dc | __asm ("subw sp, sp, aav.0x000000ff");
0x00076df4 str r2, [sp, 8] | var_8h = r2;
0x00076df6 mov r6, r0 | r6 = r0;
0x00076df8 mov r5, r1 | r5 = r1;
0x00076dfa ldr r2, [pc, 0x310] |
0x00076dfc ldr r3, [pc, 0x310] | r3 = *(0x77110);
0x00076dfe ldr.w fp, [r0] | fp = *(r0);
0x00076e00 add sp, 0 |
0x00076e02 add r2, pc | r2 = 0xedf14;
0x00076e04 ldr r3, [r2, r3] |
0x00076e06 ldr.w r8, [fp, 0x74] | r8 = *(arg_74h);
0x00076e0a ldr r3, [r3] | r3 = *(0xedf14);
0x00076e0c str.w r3, [sp, 0x4d4] | __asm ("str.w r3, [arg_4d4h]");
0x00076e10 mov.w r3, 0 | r3 = 0;
0x00076e14 ldr.w r3, [fp, 0xb0] | r3 = *(arg_b0h);
0x00076e18 cmp r3, 0 |
| if (r3 == 0) {
0x00076e1a beq.w 0x77086 | goto label_12;
| }
| label_7:
0x00076e1e ldr.w r3, [fp, 0xf4] | r3 = *(arg_f4h);
0x00076e22 add r7, sp, 0x10 | r7 += var_10h;
0x00076e24 str.w r5, [r6, 0xe0] | __asm ("str.w r5, [r6, 0xe0]");
0x00076e28 mov.w sl, -1 | sl = -1;
0x00076e2c str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00076e30 mov r1, r7 | r1 = r7;
0x00076e32 str r3, [r6, 0x7c] | *((r6 + 0x7c)) = r3;
0x00076e34 movs r3, 0 | r3 = 0;
0x00076e36 str r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
0x00076e38 add.w sb, sp, 0x18 | sb += var_18h;
0x00076e3c str.w r3, [sb, 8] | __asm ("str.w r3, [sb, 8]");
0x00076e40 add r3, sp, 0x20 | r3 += var_20h;
0x00076e42 str r3, [sp, 4] | var_4h = r3;
0x00076e44 str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x00076e48 addw r3, sp, 0x4c4 | __asm ("addw r3, arg_4c4h");
0x00076e4c str.w r3, [sb, 0x4b8] | __asm ("str.w r3, [var_4b8h]");
0x00076e50 add.w r3, r6, 0xbc | r3 = r6 + 0xbc;
0x00076e54 str.w r6, [fp, 0xf4] | __asm ("str.w r6, [arg_f4h]");
0x00076e58 mov fp, r5 |
0x00076e5a mov r0, fp | r0 = fp;
0x00076e5c mov r5, sl | r5 = sl;
0x00076e5e str.w r6, [sb, 4] | __asm ("str.w r6, [sb, 4]");
0x00076e62 mov sl, r3 | sl = r3;
0x00076e64 bl 0x10750 | r0 = fcn_00010750 (r0, r1, r2, r3, r4, r5, r6);
0x00076e68 subs.w r8, r8, r0 | r8 -= r0;
0x00076e6c mov r4, r0 | r4 = r0;
| if (r8 < r8) {
0x00076e6e bmi 0x76ed2 | goto label_13;
| }
| do {
0x00076e70 ldr r1, [r7] | r1 = *(r7);
0x00076e72 cmp r1, 0xa2 |
| if (r1 <= 0xa2) {
0x00076e74 ble 0x76ede | goto label_14;
| }
0x00076e76 ldr r3, [sp] | r3 = *(sp);
0x00076e78 ldr.w r2, [r3, 0x110] | r2 = *((r3 + 0x110));
0x00076e7c cmp r2, 0 |
| if (r2 != 0) {
0x00076e7e bne.w 0x77098 | goto label_15;
| }
0x00076e82 cmp r1, 0xb6 |
0x00076e84 it eq |
| if (r1 != 0xb6) {
0x00076e86 addeq r4, fp | r4 += fp;
| }
| if (r1 != 0xb6) {
0x00076e88 beq 0x76ec0 |
0x00076e8a ldrb.w r0, [fp] | r0 = *(fp);
| if (r0 != 0) {
0x00076e8e cbnz r0, 0x76ee6 | goto label_16;
| }
0x00076e90 cmp r5, 1 |
0x00076e92 ittt eq |
| if (r5 != 1) {
0x00076e94 moveq r4, fp | r4 = fp;
| }
| if (r5 != 1) {
0x00076e96 moveq r1, r2 | r1 = r2;
| }
| if (r5 != 1) {
0x00076e98 streq r2, [r7] | *(r7) = r2;
| }
| if (r5 != 1) {
0x00076e9a beq 0x76eaa |
0x00076e9c cmp r5, 0 |
| if (r5 == 0) {
0x00076e9e beq.w 0x770a2 | goto label_17;
| }
0x00076ea2 movs r3, 1 | r3 = 1;
0x00076ea4 mov r4, fp | r4 = fp;
0x00076ea6 mov r1, r3 | r1 = r3;
0x00076ea8 str r3, [r7] | *(r7) = r3;
| }
| label_0:
0x00076eaa strd fp, r2, [r6, 0xbc] | __asm ("strd fp, r2, [r6, 0xbc]");
0x00076eae mov r0, sb | r0 = sb;
0x00076eb0 ldm.w sl, {r2, r3} | r2 = *(sl);
| r3 = *((sl + 4));
0x00076eb4 bl 0x71e0c | fcn_00071e0c (r0, r1, r2, r3);
0x00076eb8 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00076eba ldr r5, [r7] | r5 = *(r7);
0x00076ebc cmp r3, 0 |
| if (r3 != 0) {
0x00076ebe bne 0x76f50 | goto label_18;
| }
| }
0x00076ec0 mov fp, r4 |
0x00076ec2 mov r1, r7 | r1 = r7;
0x00076ec4 mov r0, fp | r0 = fp;
0x00076ec6 bl 0x10750 | r0 = fcn_00010750 (r0, r1, r2, r3, r4, r5, r6);
0x00076eca subs.w r8, r8, r0 | r8 -= r0;
0x00076ece mov r4, r0 | r4 = r0;
0x00076ed0 bpl 0x76e70 |
| } while (r8 >= r8);
| label_13:
0x00076ed2 movs r3, 0x12 | r3 = 0x12;
0x00076ed4 mov r5, fp | r5 = fp;
0x00076ed6 str r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
0x00076ed8 ldr.w fp, [sp] | fp = *(sp);
0x00076edc b 0x76f56 | goto label_10;
| label_14:
0x00076ede mov r2, r0 | r2 = r0;
0x00076ee0 add.w r4, fp, r0 | r4 = fp + r0;
0x00076ee4 b 0x76eaa | goto label_0;
| label_16:
0x00076ee6 cmp r1, 0xa3 |
| if (r1 == 0xa3) {
0x00076ee8 beq 0x76f0c | goto label_19;
| }
0x00076eea cmp r1, 0xa4 |
| if (r1 == 0xa4) {
0x00076eec beq 0x76f32 | goto label_20;
| }
0x00076eee cmp r1, 0xa5 |
| if (r1 != 0xa5) {
0x00076ef0 bne.w 0x770aa | goto label_21;
| }
0x00076ef4 cmp r5, 0x17 |
0x00076ef6 add r0, sp, 0x14 | r0 += var_14h;
0x00076ef8 add.w r2, fp, 6 | r2 += arg_6h;
0x00076efc str r2, [r0] | *(r0) = r2;
| if (r5 == 0x17) {
0x00076efe beq.w 0x77076 | goto label_22;
| }
| do {
| label_1:
0x00076f02 movs r1, 0x3b | r1 = 0x3b;
| label_2:
0x00076f04 mov r2, r4 | r2 = r4;
0x00076f06 str r1, [r7] | *(r7) = r1;
0x00076f08 add r4, fp | r4 += fp;
0x00076f0a b 0x76eaa | goto label_0;
| label_19:
0x00076f0c add r5, sp, 0x14 | r5 += var_14h;
0x00076f0e add.w r2, fp, 6 | r2 += arg_6h;
0x00076f12 mov r0, r5 | r0 = r5;
0x00076f14 str r2, [r5] | *(r5) = r2;
0x00076f16 str r1, [sp, 0xc] | var_ch_3 = r1;
0x00076f18 bl 0x10d5c | r0 = fcn_00010d5c (r0);
0x00076f1c cmp r0, 0x3b |
0x00076f1e ldr r1, [sp, 0xc] | r1 = var_ch_3;
0x00076f20 bne 0x76f02 |
| } while (r0 != 0x3b);
0x00076f22 mov r0, r5 | r0 = r5;
0x00076f24 str r1, [sp, 0xc] | var_ch_3 = r1;
0x00076f26 bl 0x10d5c | r0 = fcn_00010d5c (r0);
0x00076f2a cmp r0, 0x18 |
0x00076f2c ldr r1, [sp, 0xc] | r1 = var_ch_3;
| if (r0 != 0x18) {
0x00076f2e bne 0x76f02 | goto label_1;
| }
0x00076f30 b 0x76f04 | goto label_2;
| label_20:
0x00076f32 cmp r5, 0x17 |
0x00076f34 add r0, sp, 0x14 | r0 += var_14h;
0x00076f36 add.w r2, fp, 4 | r2 += arg_4h;
0x00076f3a str r2, [r0] | *(r0) = r2;
| if (r5 != 0x17) {
0x00076f3c bne 0x76f02 | goto label_1;
| }
0x00076f3e str r1, [sp, 0xc] | var_ch_3 = r1;
0x00076f40 bl 0x10d5c | r0 = fcn_00010d5c (r0);
0x00076f44 cmp r0, 0x3b |
0x00076f46 it ne |
| if (r0 != 0x3b) {
0x00076f48 cmpne r0, 0x16 | __asm ("cmpne r0, 0x16");
| }
0x00076f4a ldr r1, [sp, 0xc] | r1 = var_ch_3;
| if (r0 != 0x3b) {
0x00076f4c bne 0x76f02 | goto label_1;
| }
0x00076f4e b 0x76f04 | goto label_2;
| label_18:
0x00076f50 ldr.w fp, [sp] | fp = *(sp);
0x00076f54 mov r5, r4 | r5 = r4;
| label_10:
0x00076f56 ldr.w r2, [sb] | r2 = *(sb);
0x00076f5a ldr r3, [sp, 4] | r3 = var_4h;
0x00076f5c cmp r2, r3 |
0x00076f5e it hi |
| if (r2 <= r3) {
0x00076f60 ldrhi r4, [sp, 4] | r4 = var_4h;
| }
| if (r2 < r3) {
0x00076f62 bls 0x76f80 | goto label_23;
| }
| do {
0x00076f64 ldrh r1, [r2, 2] | r1 = *((r2 + 2));
0x00076f66 sub.w r3, r2, 0xc | r3 = r2 - 0xc;
0x00076f6a ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x00076f6e adds r2, 4 | r2 += 4;
0x00076f70 str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x00076f74 bl 0x1945c | fcn_0001945c (r0, r1, r2);
0x00076f78 ldr.w r2, [sb] | r2 = *(sb);
0x00076f7c cmp r2, r4 |
0x00076f7e bhi 0x76f64 |
| } while (r2 > r4);
| label_23:
0x00076f80 ldrb.w r3, [fp, 0x53] | r3 = *(arg_53h);
0x00076f84 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00076f86 cmp r3, 0 |
| if (r3 == 0) {
0x00076f88 beq 0x77062 | goto label_24;
| }
0x00076f8a movs r0, 7 | r0 = 7;
0x00076f8c str r0, [r6, 0xc] | *((r6 + 0xc)) = r0;
0x00076f8e cmp r2, 0 |
| if (r2 == 0) {
0x00076f90 beq.w 0x770e2 | goto label_25;
| }
| label_6:
0x00076f94 ldr r3, [sp, 8] | r3 = var_8h;
0x00076f96 movs r4, 1 | r4 = 1;
0x00076f98 ldr r1, [pc, 0x178] |
0x00076f9a str r2, [r3] | *(r3) = r2;
0x00076f9c add r1, pc | r1 = 0xee0b4;
0x00076f9e ldr.w r3, [r6, 0xe0] | r3 = *((r6 + 0xe0));
0x00076fa2 blx 0x8474 | fcn_00008474 ();
0x00076fa6 movs r3, 0 | r3 = 0;
0x00076fa8 str r3, [r6, 4] | *((r6 + 4)) = r3;
| label_5:
0x00076faa ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00076fac str.w r5, [r6, 0xe0] | __asm ("str.w r5, [r6, 0xe0]");
0x00076fb0 ldrb r5, [r6, 0x12] | r5 = *((r6 + 0x12));
| if (r0 == 0) {
0x00076fb2 cbz r0, 0x7700e | goto label_26;
| }
0x00076fb4 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00076fb6 cmp r3, 0 |
| if (r3 <= 0) {
0x00076fb8 ble 0x7700e | goto label_26;
| }
0x00076fba cbz r5, 0x77006 |
| while (r5 != 0) {
0x00076fbc ldr.w r0, [r6, 0xfc] | r0 = *((r6 + 0xfc));
0x00076fc0 blx 0x84f8 | fcn_000084f8 ();
0x00076fc4 ldrb.w r3, [r6, 0xc8] | r3 = *((r6 + 0xc8));
| if (r3 == 0) {
0x00076fc8 cbz r3, 0x77032 | goto label_27;
| }
| label_3:
0x00076fca cmp r3, 1 |
| if (r3 < 1) {
0x00076fcc bls 0x7704c | goto label_9;
| }
| label_4:
0x00076fce ldr.w r1, [r6, 0xd8] | r1 = *((r6 + 0xd8));
| if (r1 != 0) {
0x00076fd2 cbz r1, 0x76fda |
0x00076fd4 mov r0, fp | r0 = fp;
0x00076fd6 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00076fda ldr r2, [r6, 0x7c] | r2 = *((r6 + 0x7c));
0x00076fdc movs r3, 0 | r3 = 0;
0x00076fde str.w r2, [fp, 0xf4] | __asm ("str.w r2, [arg_f4h]");
0x00076fe2 ldr r2, [pc, 0x134] |
0x00076fe4 str r3, [r6, 0x7c] | *((r6 + 0x7c)) = r3;
0x00076fe6 ldr r3, [pc, 0x128] | r3 = *(0x77112);
0x00076fe8 add r2, pc | r2 = 0xee106;
0x00076fea ldr r3, [r2, r3] | r3 = *(0xee106);
0x00076fec ldr r2, [r3] | r2 = *(0xee106);
0x00076fee ldr.w r3, [sp, 0x4d4] | r3 = *(arg_4d4h);
0x00076ff2 eors r2, r3 | r2 ^= r3;
0x00076ff4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00076ff8 bne.w 0x77106 | goto label_28;
| }
0x00076ffc mov r0, r4 | r0 = r4;
0x00076ffe addw sp, sp, 0x4dc | __asm ("addw sp, var_0h");
0x00077002 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00077006 bl 0x1a984 | fcn_0001a984 (r0);
0x0007700a str r5, [r6, 8] | *((r6 + 8)) = r5;
0x0007700c ldrb r5, [r6, 0x12] | r5 = *((r6 + 0x12));
| label_26:
0x0007700e cmp r5, 0 |
0x00077010 bne 0x76fbc |
| }
0x00077012 ldr r1, [r6, 0x6c] | r1 = *((r6 + 0x6c));
| if (r1 != 0) {
0x00077014 cbz r1, 0x7701c |
0x00077016 mov r0, fp | r0 = fp;
0x00077018 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0007701c movs r3, 0 | r3 = 0;
0x0007701e ldr.w r0, [r6, 0xfc] | r0 = *((r6 + 0xfc));
0x00077022 strd r3, r3, [r6, 0x68] | __asm ("strd r3, r3, [r6, 0x68]");
0x00077026 blx 0x84f8 | fcn_000084f8 ();
0x0007702a ldrb.w r3, [r6, 0xc8] | r3 = *((r6 + 0xc8));
0x0007702e cmp r3, 0 |
| if (r3 != 0) {
0x00077030 bne 0x76fca | goto label_3;
| }
| label_27:
0x00077032 ldr.w r1, [r6, 0xe4] | r1 = *((r6 + 0xe4));
| if (r1 == 0) {
0x00077036 cbz r1, 0x7704c | goto label_9;
| }
0x00077038 ldr.w r3, [fp, 0x1f8] | r3 = *(arg_1f8h);
| if (r3 == 0) {
0x0007703c cbz r3, 0x7708c | goto label_29;
| }
| label_8:
0x0007703e mov r0, fp | r0 = fp;
0x00077040 bl 0x19014 | fcn_00019014 (r0, r1);
0x00077044 ldrb.w r3, [r6, 0xc8] | r3 = *((r6 + 0xc8));
0x00077048 cmp r3, 1 |
| if (r3 > 1) {
0x0007704a bhi 0x76fce | goto label_4;
| }
| label_9:
0x0007704c ldr.w r1, [r6, 0xec] | r1 = *((r6 + 0xec));
0x00077050 cmp r1, 0 |
| if (r1 == 0) {
0x00077052 beq 0x76fce | goto label_4;
| }
0x00077054 ldrb r3, [r1, 0xa] | r3 = *((r1 + 0xa));
0x00077056 cmp r3, 0 |
| if (r3 != 0) {
0x00077058 bne 0x76fce | goto label_4;
| }
0x0007705a mov r0, fp | r0 = fp;
0x0007705c bl 0x1921c | fcn_0001921c (r0, r1);
0x00077060 b 0x76fce | goto label_4;
| label_24:
0x00077062 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00077064 cmp r0, 0 |
0x00077066 it ne |
| if (r0 != 0) {
0x00077068 cmpne r0, 0x65 | __asm ("cmpne r0, 0x65");
| }
| if (r0 != 0) {
0x0007706a bne 0x770c0 | goto label_30;
| }
| label_11:
0x0007706c mov r4, r2 | r4 = r2;
0x0007706e cmp r2, 0 |
| if (r2 == 0) {
0x00077070 beq 0x76faa | goto label_5;
| }
0x00077072 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00077074 b 0x76f94 | goto label_6;
| label_22:
0x00077076 str r1, [sp, 0xc] | var_ch_3 = r1;
0x00077078 bl 0x10d5c | r0 = fcn_00010d5c (r0);
0x0007707c cmp r0, 0x16 |
0x0007707e ldr r1, [sp, 0xc] | r1 = var_ch_3;
| if (r0 != 0x16) {
0x00077080 bne.w 0x76f02 | goto label_1;
| }
0x00077084 b 0x76f04 | goto label_2;
| label_12:
0x00077086 str.w r3, [fp, 0x110] | __asm ("str.w r3, [arg_110h]");
0x0007708a b 0x76e1e | goto label_7;
| label_29:
0x0007708c ldr r3, [r1, 0x20] | r3 = *((r1 + 0x20));
0x0007708e subs r3, 1 | r3--;
0x00077090 str r3, [r1, 0x20] | *((r1 + 0x20)) = r3;
0x00077092 cmp r3, 0 |
| if (r3 == 0) {
0x00077094 beq 0x7703e | goto label_8;
| }
0x00077096 b 0x7704c | goto label_9;
| label_15:
0x00077098 mov r5, fp | r5 = fp;
0x0007709a mov fp, r3 |
0x0007709c movs r3, 9 | r3 = 9;
0x0007709e str r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
0x000770a0 b 0x76f56 | goto label_10;
| label_17:
0x000770a2 mov r5, fp | r5 = fp;
0x000770a4 ldr.w fp, [sp] | fp = *(sp);
0x000770a8 b 0x76f56 | goto label_10;
| label_21:
0x000770aa ldr r1, [pc, 0x70] |
0x000770ac mov r5, fp | r5 = fp;
0x000770ae mov r2, r4 | r2 = r4;
0x000770b0 mov r3, r5 | r3 = r5;
0x000770b2 mov r0, r6 | r0 = r6;
0x000770b4 ldr.w fp, [sp] | fp = *(sp);
0x000770b8 add r1, pc | r1 = 0xee1da;
0x000770ba bl 0x25778 | fcn_00025778 (r0);
0x000770be b 0x76f56 | goto label_10;
| label_30:
0x000770c0 cmp r2, 0 |
| if (r2 != 0) {
0x000770c2 bne.w 0x76f94 | goto label_6;
| }
0x000770c6 ldr r2, [pc, 0x58] |
0x000770c8 cmp.w r0, 0x204 |
0x000770cc add r2, pc | r2 = 0xee1f2;
| if (r0 == fcn.00000004) {
0x000770ce beq 0x770f0 | goto label_31;
| }
0x000770d0 ldr r2, [pc, 0x50] |
0x000770d2 cmp r0, 0x64 |
0x000770d4 add r2, pc | r2 = 0xee1fc;
| if (r0 == 0x64) {
0x000770d6 beq 0x770f0 | goto label_31;
| }
0x000770d8 uxtb r0, r0 | r0 = (int8_t) r0;
0x000770da ldr r2, [pc, 0x4c] |
0x000770dc cmp r0, 0x1c |
0x000770de add r2, pc | r2 = 0xee20c;
| if (r0 > 0x1c) {
0x000770e0 bgt 0x770f0 | goto label_31;
| }
| label_25:
0x000770e2 ldr r3, [pc, 0x48] |
0x000770e4 add r3, pc | r3 = 0xee216;
0x000770e6 add.w r3, r3, r0, lsl 2 | r3 += (r0 << 2);
0x000770ea ldr.w r2, [r3, 0x1a4] | r2 = *((r3 + 0x1a4));
0x000770ee cbz r2, 0x77100 |
| while (1) {
| label_31:
0x000770f0 ldr r1, [pc, 0x3c] |
0x000770f2 mov r0, fp | r0 = fp;
0x000770f4 add r1, pc | r1 = 0xee228;
0x000770f6 bl 0x2677c | r0 = fcn_0002677c (r0);
0x000770fa mov r2, r0 | r2 = r0;
0x000770fc str r0, [r6, 4] | *((r6 + 4)) = r0;
0x000770fe b 0x7706c | goto label_11;
0x00077100 ldr r2, [pc, 0x30] |
0x00077102 add r2, pc | r2 = 0xee23a;
0x00077104 b 0x770f0 |
| }
| label_28:
0x00077106 blx 0x7e8c | fcn_00007e8c ();
0x0007710a nop |
0x0007710c ldr r6, [r1, 0x68] | r6 = *((r1 + 0x68));
0x0007710e movs r5, r0 | r5 = r0;
0x00077110 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00077112 movs r0, r0 |
0x00077114 ldrh r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x00077116 movs r3, r0 | r3 = r0;
0x00077118 ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x0007711a movs r5, r0 | r5 = r0;
0x0007711c ldrh r0, [r4, 0x12] | r0 = *((r4 + 0x12));
0x0007711e movs r3, r0 | r3 = r0;
0x00077120 strb r4, [r1, r1] | *((r1 + r1)) = r4;
0x00077122 movs r3, r0 | r3 = r0;
0x00077124 strb r4, [r3, r1] | *((r3 + r1)) = r4;
0x00077126 movs r3, r0 | r3 = r0;
0x00077128 strb r2, [r0, r2] | *((r0 + r2)) = r2;
0x0007712a movs r3, r0 | r3 = r0;
0x0007712c strb r0, [r3, r2] | *((r3 + r2)) = r0;
0x0007712e movs r5, r0 | r5 = r0;
0x00077130 str r0, [sp, 0x1e0] | *(arg_1e0h) = r0;
0x00077132 movs r3, r0 | r3 = r0;
0x00077134 strb r6, [r3, r1] | *((r3 + r1)) = r6;
0x00077136 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x77138 */
| #include <stdint.h>
|
; (fcn) fcn.00077138 () | void fcn_00077138 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_3;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_0h;
| int16_t var_0h_2;
| int16_t var_ch_2;
| int16_t var_11ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00077138 ssub16mi fp, r5, r0 | __asm ("ssub16mi fp, r5, r0");
0x0007713c ldr r2, [pc, 0xb8] |
0x0007713e mov r6, r3 | r6 = r3;
0x00077140 sub sp, 0x10 |
0x00077142 mov r4, r0 | r4 = r0;
0x00077144 ldr r3, [pc, 0xb4] | r3 = *(0x771fc);
0x00077146 movs r0, 1 | r0 = 1;
0x00077148 add r2, pc | r2 = 0xee344;
0x0007714a ldr r3, [r2, r3] |
0x0007714c ldr r3, [r3] | r3 = *(0xee344);
0x0007714e str r3, [sp, 0xc] | var_ch = r3;
0x00077150 mov.w r3, 0 | r3 = 0;
0x00077154 movs r3, 0 | r3 = 0;
0x00077156 str r3, [sp, 8] | var_8h_2 = r3;
0x00077158 ldr r3, [sp, 0x20] | r3 = var_0h;
0x0007715a cmp r3, 0 |
0x0007715c beq 0x771e8 |
| while (1) {
0x0007715e mov.w r2, 0x110 | r2 = 0x110;
0x00077162 strb.w r0, [r5, 0xa8] | *((r5 + 0xa8)) = r0;
0x00077166 movs r1, 0 | r1 = 0;
0x00077168 mov r0, r4 | r0 = r4;
0x0007716a blx 0x8264 | fcn_00008264 ();
0x0007716e movs r2, 2 | r2 = 2;
0x00077170 movs r3, 1 | r3 = 1;
0x00077172 strb.w r2, [r4, 0xc8] | *((r4 + 0xc8)) = r2;
0x00077176 str r5, [r4] | *(r4) = r5;
0x00077178 str.w r3, [r4, 0x84] | __asm ("str.w r3, [r4, 0x84]");
| if (r6 != 0) {
0x0007717c cbz r6, 0x771c8 |
0x0007717e add r2, sp, 8 | r2 += var_8h_2;
0x00077180 mov r1, r6 | r1 = r6;
0x00077182 mov r0, r4 | r0 = r4;
0x00077184 bl 0x76dec | fcn_00076dec (r0, r1, r2, r3, r4, r5, r6);
0x00077188 ldr r3, [sp, 8] | r3 = var_8h_2;
0x0007718a str r3, [r4, 4] | *((r4 + 4)) = r3;
0x0007718c ldrb.w r3, [r5, 0x53] | r3 = *((r5 + 0x53));
| if (r3 == 0) {
0x00077190 cbnz r3, 0x771c8 |
| if (r0 != 0) {
0x00077192 cbnz r0, 0x771ca | goto label_2;
| }
0x00077194 ldr.w r3, [r4, 0xe4] | r3 = *((r4 + 0xe4));
| if (r3 != 0) {
0x00077198 cbnz r3, 0x771ca | goto label_2;
| }
0x0007719a ldr.w r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
| if (r3 != 0) {
0x0007719e cbnz r3, 0x771ca | goto label_2;
| }
0x000771a0 ldr.w r3, [r4, 0xec] | r3 = *((r4 + 0xec));
| if (r3 != 0) {
0x000771a4 cbnz r3, 0x771ca | goto label_2;
| }
0x000771a6 blx 0x7f8c | fcn_00007f8c ();
0x000771aa ldr r2, [pc, 0x54] |
0x000771ac adds r0, 0x14 | r0 += 0x14;
0x000771ae ldr r1, [pc, 0x54] |
0x000771b0 movw r3, 0xa7f2 |
0x000771b4 str r0, [sp] | *(sp) = r0;
0x000771b6 movt r3, 1 | r3 = 0x1a7f2;
0x000771ba movs r0, 0xb | r0 = 0xb;
0x000771bc add r2, pc | r2 = 0xee3c2;
0x000771be add r1, pc | r1 = 0xee3c8;
0x000771c0 blx 0x8474 | fcn_00008474 ();
0x000771c4 movs r0, 0xb | r0 = 0xb;
0x000771c6 b 0x771ca |
| }
| } else {
0x000771c8 movs r0, 7 | r0 = 7;
| }
| label_2:
0x000771ca movs r3, 0 | r3 = 0;
0x000771cc ldr r2, [pc, 0x38] |
0x000771ce strb.w r3, [r5, 0xa8] | *((r5 + 0xa8)) = r3;
0x000771d2 ldr r3, [pc, 0x28] | r3 = *(0x771fe);
0x000771d4 add r2, pc | r2 = 0xee3e0;
0x000771d6 ldr r3, [r2, r3] | r3 = *(0xee3e0);
0x000771d8 ldr r2, [r3] | r2 = *(0xee3e0);
0x000771da ldr r3, [sp, 0xc] | r3 = var_ch;
0x000771dc eors r2, r3 | r2 ^= r3;
0x000771de mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000771e2 bne 0x771f2 | goto label_3;
| }
0x000771e4 add sp, 0x10 |
0x000771e6 pop {r4, r5, r6, pc} |
0x000771e8 mov r0, r5 | r0 = r5;
0x000771ea bl 0x19fe4 | r0 = fcn_00019fe4 (r0, r1);
0x000771ee uxtb r0, r0 | r0 = (int8_t) r0;
0x000771f0 b 0x7715e |
| }
| label_3:
0x000771f2 blx 0x7e8c | fcn_00007e8c ();
0x000771f6 nop |
0x000771f8 ldr r0, [r1, 0x34] | r0 = *((r1 + 0x34));
0x000771fa movs r5, r0 | r5 = r0;
0x000771fc lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000771fe movs r0, r0 |
0x00077200 ldrsb r0, [r4, r2] | r0 = *((r4 + r2));
0x00077202 movs r3, r0 | r3 = r0;
0x00077204 strb r6, [r7, r2] | *((r7 + r2)) = r6;
0x00077206 movs r3, r0 | r3 = r0;
0x00077208 ldr r4, [r7, 0x28] | r4 = *((r7 + 0x28));
0x0007720a movs r5, r0 | r5 = r0;
0x0007720c push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00077210 mov r6, r2 | r6 = r2;
0x00077212 ldr r2, [pc, 0x178] |
0x00077214 sub sp, 0x120 |
0x00077216 mov r7, r0 | r7 = r0;
0x00077218 add.w sb, sp, 0xc | sb += var_ch_2;
0x0007721c ldr r3, [pc, 0x170] | r3 = *(0x77390);
0x0007721e add r2, pc | r2 = 0xee5b0;
0x00077220 ldr r3, [r2, r3] |
0x00077222 ldr r3, [r3] | r3 = *(0xee5b0);
0x00077224 str r3, [sp, 0x11c] | var_11ch = r3;
0x00077226 mov.w r3, 0 | r3 = 0;
0x0007722a blx 0x82a0 | r0 = fcn_000082a0 ();
0x0007722e mov r4, r0 | r4 = r0;
0x00077230 ldr r0, [r6] | r0 = *(r6);
0x00077232 blx 0x7da0 | r0 = fcn_00007da0 ();
0x00077236 mov r5, r0 | r5 = r0;
0x00077238 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0007723a blx 0x8508 | r0 = fcn_00008508 ();
0x0007723e mov r3, r0 | r3 = r0;
0x00077240 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00077242 mov r6, r3 | r6 = r3;
0x00077244 blx 0x7da0 | fcn_00007da0 ();
0x00077248 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0007724a lsls r3, r5, 4 | r3 = r5 << 4;
0x0007724c sub.w r5, r5, 1 | r5--;
0x00077250 ldr.w sl, [r4, 0x150] | sl = *((r4 + 0x150));
0x00077254 clz r5, r5 | r5 &= r5;
0x00077258 mov r8, r0 | r8 = r0;
0x0007725a lsrs r5, r5, 5 | r5 >>= 5;
0x0007725c ldr r1, [r2, r3] | r1 = *(0xee5b0);
0x0007725e movs r3, 0 | r3 = 0;
0x00077260 str.w r3, [r4, 0x150] | __asm ("str.w r3, aav.0x000000ff");
0x00077264 mov r2, r4 | r2 = r4;
0x00077266 mov r3, r6 | r3 = r6;
0x00077268 mov r0, sb | r0 = sb;
0x0007726a str r5, [sp] | *(sp) = r5;
0x0007726c bl 0x77138 | r0 = fcn_00077138 (r0, r1, r2, r3);
0x00077270 cmp r0, 0 |
| if (r0 != 0) {
0x00077272 bne 0x77354 | goto label_4;
| }
0x00077274 ldr.w r5, [sb, 0xe4] | r5 = *((sb + 0xe4));
0x00077278 cmp r5, 0 |
| if (r5 == 0) {
0x0007727a beq 0x77308 | goto label_5;
| }
0x0007727c ldrsh.w r0, [r5, 0x2a] | r0 = *((r5 + 0x2a));
0x00077280 cmp r0, 1 |
| if (r0 == 1) {
0x00077282 beq 0x77308 | goto label_5;
| }
0x00077284 cmp r0, r8 |
| if (r0 <= r8) {
0x00077286 ble 0x77308 | goto label_5;
| }
0x00077288 add.w ip, r8, r8, lsl 2 |
0x0007728c ldr.w lr, [r5, 4] |
0x00077290 lsl.w ip, ip, 2 |
0x00077294 ldr.w r2, [lr, ip] | r2 = *((lr + ip));
0x00077298 cmp r2, 0 |
| if (r2 == 0) {
0x0007729a beq 0x7737e | goto label_6;
| }
0x0007729c ldr.w r1, [sb, 0x10c] | r1 = *((sb + 0x10c));
| if (r1 != 0) {
0x000772a0 cbnz r1, 0x772a8 | goto label_7;
| }
0x000772a2 b 0x772ae | goto label_1;
| do {
0x000772a4 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
| if (r1 == 0) {
0x000772a6 cbz r1, 0x772ae | goto label_1;
| }
| label_7:
0x000772a8 ldr r3, [r1] | r3 = *(r1);
0x000772aa cmp r2, r3 |
0x000772ac bne 0x772a4 |
| } while (r2 != r3);
| label_1:
0x000772ae subs r0, 1 | r0--;
0x000772b0 cmp r0, r8 |
| if (r0 <= r8) {
0x000772b2 ble 0x7735e | goto label_8;
| }
0x000772b4 add lr, ip | lr += ip;
0x000772b6 ldr.w r0, [lr, 0x14] | r0 = *((lr + 0x14));
0x000772ba cmp r0, 0 |
| if (r0 == 0) {
0x000772bc beq 0x77386 | goto label_9;
| }
0x000772be ldr.w r3, [sb, 0x10c] | r3 = *((sb + 0x10c));
| if (r3 != 0) {
0x000772c2 cbnz r3, 0x772cc | goto label_10;
| }
0x000772c4 b 0x77386 | goto label_9;
| do {
0x000772c6 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000772c8 cmp r3, 0 |
| if (r3 == 0) {
0x000772ca beq 0x77386 | goto label_9;
| }
| label_10:
0x000772cc ldr r2, [r3] | r2 = *(r3);
0x000772ce cmp r0, r2 |
0x000772d0 bne 0x772c6 |
| } while (r0 != r2);
0x000772d2 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000772d4 ldr r2, [r1, 4] | r2 = *((r1 + 4));
| label_0:
0x000772d6 ldr r1, [pc, 0xbc] |
0x000772d8 subs r2, r2, r6 | r2 -= r6;
0x000772da mov r3, r6 | r3 = r6;
0x000772dc str r0, [sp] | *(sp) = r0;
0x000772de mov r0, r4 | r0 = r4;
0x000772e0 add r1, pc | r1 = 0xee67a;
0x000772e2 bl 0x2677c | fcn_0002677c (r0);
0x000772e6 mov.w r3, -1 | r3 = -1;
0x000772ea mov r5, r0 | r5 = r0;
0x000772ec mov r1, r5 | r1 = r5;
0x000772ee mov r2, r3 | r2 = r3;
0x000772f0 mov r0, r7 | r0 = r7;
0x000772f2 blx 0x7db0 | fcn_00007db0 ();
0x000772f6 mov r0, r5 | r0 = r5;
0x000772f8 blx 0x84f8 | fcn_000084f8 ();
0x000772fc mov r0, sb | r0 = sb;
0x000772fe bl 0x5ab04 | fcn_0005ab04 (r0);
0x00077302 str.w sl, [r4, 0x150] | __asm ("str.w sl, aav.0x000000ff");
0x00077306 b 0x7733a | goto label_11;
| label_5:
0x00077308 blx 0x7f8c | fcn_00007f8c ();
0x0007730c ldr r2, [pc, 0x88] |
0x0007730e adds r0, 0x14 | r0 += 0x14;
0x00077310 ldr r1, [pc, 0x88] |
0x00077312 movw r3, 0xab6a |
0x00077314 adds r3, 0x6a | r3 += 0x6a;
0x00077316 str r0, [sp] | *(sp) = r0;
0x00077318 movt r3, 1 | r3 = 0x1ab6a;
0x0007731c movs r0, 0xb | r0 = 0xb;
0x0007731e add r2, pc | r2 = 0xee6ba;
0x00077320 add r1, pc | r1 = 0xee6c0;
0x00077322 movs r5, 0xb | r5 = 0xb;
0x00077324 blx 0x8474 | fcn_00008474 ();
0x00077328 mov r0, sb | r0 = sb;
0x0007732a bl 0x5ab04 | fcn_0005ab04 (r0);
| do {
0x0007732e mov r1, r5 | r1 = r5;
0x00077330 mov r0, r7 | r0 = r7;
0x00077332 str.w sl, [r4, 0x150] | __asm ("str.w sl, aav.0x000000ff");
0x00077336 blx 0x8310 | fcn_00008310 ();
| label_11:
0x0007733a ldr r2, [pc, 0x64] |
0x0007733c ldr r3, [pc, 0x50] | r3 = *(0x77390);
0x0007733e add r2, pc | r2 = 0xee6e4;
0x00077340 ldr r3, [r2, r3] | r3 = *(0xee6e4);
0x00077342 ldr r2, [r3] | r2 = *(0xee6e4);
0x00077344 ldr r3, [sp, 0x11c] | r3 = var_11ch;
0x00077346 eors r2, r3 | r2 ^= r3;
0x00077348 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007734c bne 0x77382 | goto label_12;
| }
0x0007734e add sp, 0x120 |
0x00077350 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_4:
0x00077354 mov r5, r0 | r5 = r0;
0x00077356 mov r0, sb | r0 = sb;
0x00077358 bl 0x5ab04 | fcn_0005ab04 (r0);
0x0007735c b 0x7732e |
| } while (1);
| label_8:
0x0007735e ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x00077360 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
0x00077362 ldrb r3, [r2] | r3 = *(r2);
0x00077364 add r0, r6 | r0 += r6;
0x00077366 cmp r3, 0 |
0x00077368 it ne |
| if (r3 == 0) {
0x0007736a cmpne r3, 0x2c | __asm ("cmpne r3, 0x2c");
| goto label_13;
| }
| if (r3 == 0) {
| label_13:
0x0007736c beq 0x772d6 | goto label_0;
| }
| do {
0x0007736e subs r2, 1 | r2--;
0x00077370 str r2, [r1, 4] | *((r1 + 4)) = r2;
0x00077372 ldrb r3, [r2] | r3 = *(r2);
0x00077374 cmp r3, 0 |
0x00077376 it ne |
| if (r3 != 0) {
0x00077378 cmpne r3, 0x2c | __asm ("cmpne r3, 0x2c");
| }
0x0007737a bne 0x7736e |
| } while (r3 != 0);
0x0007737c b 0x772d6 | goto label_0;
| label_6:
0x0007737e mov r1, r2 | r1 = r2;
0x00077380 b 0x772ae | goto label_1;
| label_12:
0x00077382 blx 0x7e8c | fcn_00007e8c ();
| label_9:
0x00077386 movs r3, 0 | r3 = 0;
0x00077388 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0007738a udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x77c00 */
| #include <stdint.h>
|
; (fcn) fcn.00077c00 () | void fcn_00077c00 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_5ch;
| int16_t var_7ch;
| int16_t var_80h;
| r0 = arg1;
0x00077c00 movwhs fp, 0x40e | __asm ("movwhs fp, aav.0x000000ff");
0x00077c04 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00077c08 mov r4, r0 | r4 = r0;
0x00077c0a sub sp, 0x60 |
0x00077c0c ldr r6, [r0, 0x24] | r6 = *((r0 + 0x24));
0x00077c0e ldr r7, [r0] | r7 = *(r0);
0x00077c10 ldr r0, [pc, 0xa4] |
0x00077c12 ldr r2, [pc, 0xa8] | r2 = *(0x77cbe);
0x00077c14 ldr r1, [sp, 0x7c] | r1 = var_7ch;
0x00077c16 add r0, pc | r0 = 0xef8d2;
0x00077c18 ldr r2, [r0, r2] |
0x00077c1a ldr r2, [r2] | r2 = *(0xef8d2);
0x00077c1c str r2, [sp, 0x5c] | var_5ch = r2;
0x00077c1e mov.w r2, 0 | r2 = 0;
0x00077c22 str r3, [sp, 4] | var_4h = r3;
0x00077c24 cbz r6, 0x77c44 |
| while (1) {
| label_0:
0x00077c26 ldr r2, [pc, 0x98] |
0x00077c28 ldr r3, [pc, 0x90] | r3 = *(0x77cbc);
0x00077c2a add r2, pc | r2 = 0xef8f0;
0x00077c2c ldr r3, [r2, r3] | r3 = *(0xef8f0);
0x00077c2e ldr r2, [r3] | r2 = *(0xef8f0);
0x00077c30 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00077c32 eors r2, r3 | r2 ^= r3;
0x00077c34 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00077c38 bne 0x77cb4 | goto label_1;
| }
0x00077c3a add sp, 0x60 |
0x00077c3c pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00077c40 add sp, 0xc |
0x00077c42 bx lr | return;
0x00077c44 add r2, sp, 0x80 | r2 += var_80h;
0x00077c46 mov r0, r7 | r0 = r7;
0x00077c48 str r2, [sp] | *(sp) = r2;
0x00077c4a bl 0x256e4 | r0 = fcn_000256e4 (r0);
0x00077c4e mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00077c50 cbz r0, 0x77ca2 | goto label_2;
| }
0x00077c52 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x00077c54 add.w r8, r4, 0xbc | r8 = r4 + 0xbc;
0x00077c58 add.w sb, sp, 8 | sb += var_8h;
0x00077c5c movs r2, 0x54 | r2 = 0x54;
0x00077c5e mov r1, r8 | r1 = r8;
0x00077c60 mov r0, sb | r0 = sb;
0x00077c62 adds r3, 1 | r3++;
0x00077c64 strb r3, [r4, 0x12] | *((r4 + 0x12)) = r3;
0x00077c66 blx 0x7dcc | fcn_00007dcc ();
0x00077c6a mov r1, r6 | r1 = r6;
0x00077c6c movs r2, 0x54 | r2 = 0x54;
0x00077c6e mov r0, r8 | r0 = r8;
0x00077c70 blx 0x8264 | fcn_00008264 ();
0x00077c74 mov r1, r5 | r1 = r5;
0x00077c76 add r2, sp, 4 | r2 += var_4h;
0x00077c78 mov r0, r4 | r0 = r4;
0x00077c7a bl 0x76dec | fcn_00076dec (r0, r1, r2, r3, r4, r5, r6);
0x00077c7e ldr r1, [sp, 4] | r1 = var_4h;
| if (r1 != 0) {
0x00077c80 cbz r1, 0x77c88 |
0x00077c82 mov r0, r7 | r0 = r7;
0x00077c84 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00077c88 mov r1, r5 | r1 = r5;
0x00077c8a mov r0, r7 | r0 = r7;
0x00077c8c bl 0x159dc | fcn_000159dc (r0, r1);
0x00077c90 movs r2, 0x54 | r2 = 0x54;
0x00077c92 mov r1, sb | r1 = sb;
0x00077c94 mov r0, r8 | r0 = r8;
0x00077c96 blx 0x7dcc | fcn_00007dcc ();
0x00077c9a ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x00077c9c subs r3, 1 | r3--;
0x00077c9e strb r3, [r4, 0x12] | *((r4 + 0x12)) = r3;
0x00077ca0 b 0x77c26 |
| }
| label_2:
0x00077ca2 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
| if (r3 == 0) {
0x00077ca6 cbnz r3, 0x77cac |
0x00077ca8 movs r3, 0x12 | r3 = 0x12;
0x00077caa str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| }
0x00077cac ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00077cae adds r3, 1 | r3++;
0x00077cb0 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00077cb2 b 0x77c26 | goto label_0;
| label_1:
0x00077cb4 blx 0x7e8c | fcn_00007e8c ();
0x00077cb8 str r2, [r7, 4] | *((r7 + 4)) = r2;
0x00077cba movs r5, r0 | r5 = r0;
0x00077cbc lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00077cbe movs r0, r0 |
0x00077cc0 str r6, [r4, 4] | *((r4 + 4)) = r6;
0x00077cc2 movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x77d58 */
| #include <stdint.h>
|
; (fcn) fcn.00077d58 () | void fcn_00077d58 (int16_t arg1, int16_t arg2) {
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
0x00077d58 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, aav.0x000000ff");
0x00077d5c mov r7, r0 | r7 = r0;
0x00077d5e ldrd r5, r0, [r1, 0x14] | __asm ("ldrd r5, r0, [r1, 0x14]");
0x00077d62 mov r6, r1 | r6 = r1;
0x00077d64 sub sp, 0xc |
0x00077d66 ldr.w r8, [r7] | r8 = *(r7);
0x00077d6a ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00077d6c adds r0, 8 | r0 += 8;
0x00077d6e cmp r5, 0 |
| if (r5 == 0) {
0x00077d70 beq.w 0x77eba | goto label_4;
| }
0x00077d74 ldr.w r4, [r8, 0x10] | r4 = *((r8 + 0x10));
0x00077d78 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00077d7a cmp r5, r3 |
| if (r5 == r3) {
0x00077d7c beq.w 0x77e8e | goto label_5;
| }
0x00077d80 add.w r3, r4, 0x10 | r3 = r4 + 0x10;
0x00077d84 movs r4, 0 | r4 = 0;
| do {
0x00077d86 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00077d88 mov sb, r3 | sb = r3;
0x00077d8a adds r4, 1 | r4++;
0x00077d8c adds r3, 0x10 | r3 += 0x10;
0x00077d8e cmp r5, r2 |
0x00077d90 bne 0x77d86 |
| } while (r5 != r2);
0x00077d92 movs r2, 0 | r2 = 0;
0x00077d94 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x00077d98 ldr r3, [r0, 8] | r3 = *((r0 + 8));
| if (r3 != 0) {
0x00077d9a cbz r3, 0x77dce |
0x00077d9c strh r1, [r0] | *(r0) = r1;
0x00077d9e ldr.w r5, [sb] | r5 = *(sb);
| if (r3 == 0) {
0x00077da2 beq 0x77e76 | goto label_6;
| }
0x00077da4 ldr.w sb, [pc, 0x144] | sb = *(0x00077eec);
0x00077da8 movs r1, 0x10 | r1 = 0x10;
0x00077daa add sb, pc | sb += pc;
| label_0:
0x00077dac ldr r3, [r3] | r3 = *(r3);
0x00077dae mov r0, r7 | r0 = r7;
0x00077db0 str r5, [sp] | *(sp) = r5;
0x00077db2 ldr r2, [r6] | r2 = *(r6);
0x00077db4 bl 0x25800 | r0 = fcn_00025800 (r0);
0x00077db8 cmp r0, 0 |
| if (r0 != 0) {
0x00077dba bne 0x77e70 | goto label_7;
| }
0x00077dbc mov r3, r0 | r3 = r0;
0x00077dbe mov r2, sb | r2 = sb;
0x00077dc0 movs r1, 9 | r1 = 9;
0x00077dc2 mov r0, r7 | r0 = r7;
0x00077dc4 str r5, [sp] | *(sp) = r5;
0x00077dc6 bl 0x25800 | r0 = fcn_00025800 (r0);
0x00077dca cmp r0, 0 |
| if (r0 != 0) {
0x00077dcc bne 0x77e70 | goto label_7;
| }
| }
| label_3:
0x00077dce ldr r5, [r7, 8] | r5 = *((r7 + 8));
0x00077dd0 cmp r5, 0 |
0x00077dd2 beq 0x77e60 |
| while (r0 != 0) {
0x00077dd4 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00077dd8 lsl.w r8, r4, 4 | r8 = r4 << 4;
0x00077ddc ldr r1, [pc, 0x110] |
0x00077dde mov r0, r7 | r0 = r7;
0x00077de0 ldr.w r2, [r3, r8] | r2 = *((r3 + r8));
0x00077de4 add r1, pc | r1 = 0xefcd8;
0x00077de6 ldr r3, [r6] | r3 = *(r6);
0x00077de8 bl 0x77c00 | fcn_00077c00 (r0);
0x00077dec ldr r3, [r7] | r3 = *(r7);
0x00077dee mov r2, r4 | r2 = r4;
0x00077df0 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x00077df2 movs r1, 0x60 | r1 = 0x60;
0x00077df4 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00077df6 add r3, r8 | r3 += r8;
0x00077df8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00077dfa ldr r3, [r3] | r3 = *(r3);
0x00077dfc adds r3, 1 | r3++;
0x00077dfe str r3, [sp] | *(sp) = r3;
0x00077e00 movs r3, 1 | r3 = 1;
0x00077e02 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00077e06 ldrd r0, r3, [r5, 0x6c] | __asm ("ldrd r0, r3, [r5, 0x6c]");
0x00077e0a ldr r6, [r6] | r6 = *(r6);
0x00077e0c cmp r0, r3 |
| if (r0 >= r3) {
0x00077e0e bge 0x77ea6 | goto label_8;
| }
0x00077e10 adds r3, r0, 1 | r3 = r0 + 1;
0x00077e12 ldr r7, [r5, 0x68] | r7 = *((r5 + 0x68));
0x00077e14 str r3, [r5, 0x6c] | *((r5 + 0x6c)) = r3;
0x00077e16 add.w r3, r0, r0, lsl 2 | r3 = r0 + (r0 << 2);
0x00077e1a movs r1, 0 | r1 = 0;
0x00077e1c lsls r3, r3, 2 | r3 <<= 2;
0x00077e1e mov.w ip, 0x95 |
0x00077e22 adds r2, r7, r3 | r2 = r7 + r3;
0x00077e24 strd r4, r1, [r2, 4] | __asm ("strd r4, r1, [r2, 4]");
0x00077e28 strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x00077e2c str.w ip, [r7, r3] | __asm ("str.w ip, [r7, r3]");
| label_2:
0x00077e30 ldr r3, [r5] | r3 = *(r5);
0x00077e32 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 != 0) {
0x00077e36 cbnz r3, 0x77e70 | goto label_7;
| }
0x00077e38 cmp r0, 0 |
0x00077e3a ldr r4, [r5, 0x68] | r4 = *((r5 + 0x68));
0x00077e3c it lt |
| if (r0 >= 0) {
0x00077e3e ldrlt r0, [r5, 0x6c] | r0 = *((r5 + 0x6c));
| }
0x00077e40 mov.w r3, 0 | r3 = 0;
0x00077e44 mov r2, r6 | r2 = r6;
0x00077e46 it lt |
| if (r0 >= 0) {
0x00077e48 addlt r0, r0, -1 | r0 += -1;
| }
0x00077e4c add.w r1, r0, r0, lsl 2 | r1 = r0 + (r0 << 2);
0x00077e50 mov r0, r5 | r0 = r5;
0x00077e52 add.w r1, r4, r1, lsl 2 | r1 = r4 + (r1 << 2);
0x00077e56 add sp, 0xc |
0x00077e58 pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00077e5c b.w 0x1bdb4 | void (*0x1bdb4)() ();
0x00077e60 ldr r3, [r7, 0x74] | r3 = *((r7 + 0x74));
| if (r3 == 0) {
0x00077e62 cbz r3, 0x77e80 | goto label_9;
| }
| label_1:
0x00077e64 mov r0, r7 | r0 = r7;
0x00077e66 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00077e6a mov r5, r0 | r5 = r0;
0x00077e6c cmp r0, 0 |
0x00077e6e bne 0x77dd4 |
| }
| label_7:
0x00077e70 add sp, 0xc |
0x00077e72 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_6:
0x00077e76 ldr.w sb, [pc, 0x7c] |
0x00077e7a movs r1, 0xe | r1 = 0xe;
0x00077e7c add sb, pc | sb = 0xefd76;
0x00077e7e b 0x77dac | goto label_0;
| label_9:
0x00077e80 ldr r3, [r7] | r3 = *(r7);
0x00077e82 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00077e84 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x00077e86 itt pl |
| if (r3 < r3) {
0x00077e88 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x00077e8a strbpl r3, [r7, 0x17] | *((r7 + 0x17)) = r3;
| }
0x00077e8c b 0x77e64 | goto label_1;
| label_5:
0x00077e8e movs r2, 0 | r2 = 0;
0x00077e90 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x00077e94 ldr r3, [r0, 8] | r3 = *((r0 + 8));
| if (r3 != 0) {
0x00077e96 cbz r3, 0x77eb6 |
0x00077e98 ldr.w sb, [pc, 0x5c] | sb = *(0x00077ef8);
0x00077e9c movs r1, 0x10 | r1 = 0x10;
0x00077e9e ldr r5, [r4] | r5 = *(r4);
0x00077ea0 movs r4, 0 | r4 = 0;
0x00077ea2 add sb, pc | sb += pc;
0x00077ea4 b 0x77dac | goto label_0;
| label_8:
0x00077ea6 movs r3, 0 | r3 = 0;
0x00077ea8 mov r2, r4 | r2 = r4;
0x00077eaa movs r1, 0x95 | r1 = 0x95;
0x00077eac mov r0, r5 | r0 = r5;
0x00077eae str r3, [sp] | *(sp) = r3;
0x00077eb0 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00077eb4 b 0x77e30 | goto label_2;
| }
0x00077eb6 mov r4, r3 | r4 = r3;
0x00077eb8 b 0x77dce | goto label_3;
| label_4:
0x00077eba mov r2, r5 | r2 = r5;
0x00077ebc mov.w r4, 0x8000 | r4 = fcn.00008000;
0x00077ec0 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x00077ec4 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00077ec6 movt r4, 0xffff | r4 = (r4 & 0xFFFF) | 0xffff0000;
0x00077eca cmp r3, 0 |
| if (r3 == 0) {
0x00077ecc beq.w 0x77dce | goto label_3;
| }
0x00077ed0 ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x00077ed4 mov.w r4, 0x8000 | r4 = fcn.00008000;
0x00077ed8 ldr.w sb, [pc, 0x20] |
0x00077edc movt r4, 0xffff | r4 = (r4 & 0xFFFF) | 0xffff0000;
0x00077ee0 movs r1, 0x10 | r1 = 0x10;
0x00077ee2 sub.w r2, r2, 0x80000 | r2 -= 0x80000;
0x00077ee6 ldr r5, [r2] | r5 = *(r2);
0x00077ee8 add sb, pc | sb = 0xefde8;
0x00077eea b 0x77dac | 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/libsqlite3.so.0.8.6 @ 0x77f00 */
| #include <stdint.h>
|
; (fcn) fcn.00077f00 () | void fcn_00077f00 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00077f00 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00077f02 push {r4, r5, r6, r7, lr} |
0x00077f04 mov r4, r0 | r4 = r0;
0x00077f06 sub sp, 0x14 |
0x00077f08 mov r7, r1 | r7 = r1;
0x00077f0a mov r6, r2 | r6 = r2;
0x00077f0c cmp r3, 0 |
| if (r3 == 0) {
0x00077f0e beq 0x77f72 | goto label_2;
| }
0x00077f10 ldrb r5, [r4, 0x13] | r5 = *((r4 + 0x13));
0x00077f12 cmp r5, 0 |
| if (r5 == 0) {
0x00077f14 beq 0x77f84 | goto label_3;
| }
| do {
0x00077f16 subs r5, 1 | r5--;
0x00077f18 cmp r7, 1 |
0x00077f1a uxtb r5, r5 | r5 = (int8_t) r5;
0x00077f1c strb r5, [r4, 0x13] | *((r4 + 0x13)) = r5;
0x00077f1e add.w r5, r4, r5, lsl 2 | r5 = r4 + (r5 << 2);
0x00077f22 ldr.w r5, [r5, 0x94] | r5 = *((r5 + 0x94));
| if (r7 <= 1) {
0x00077f26 ble 0x77f90 | goto label_4;
| }
| label_0:
0x00077f28 mov r0, r3 | r0 = r3;
0x00077f2a mov r2, r7 | r2 = r7;
0x00077f2c mov r3, r5 | r3 = r5;
0x00077f2e movs r1, 0x8c | r1 = 0x8c;
0x00077f30 str r6, [sp] | *(sp) = r6;
0x00077f32 lsls r6, r6, 4 | r6 <<= 4;
0x00077f34 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00077f38 ldr r2, [r4, 0x74] | r2 = *((r4 + 0x74));
0x00077f3a movs r1, 1 | r1 = 1;
0x00077f3c mov r3, r7 | r3 = r7;
0x00077f3e mov r0, r4 | r0 = r4;
0x00077f40 cmp r2, 0 |
0x00077f42 it eq |
| if (r2 != 0) {
0x00077f44 moveq r2, r4 | r2 = r4;
| }
0x00077f46 strb r1, [r2, 0x15] | *((r2 + 0x15)) = r1;
0x00077f48 ldr r2, [r4] | r2 = *(r4);
0x00077f4a ldr r1, [pc, 0x64] |
0x00077f4c ldr r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x00077f4e add r1, pc | r1 = 0xeff04;
0x00077f50 ldr r2, [r2, r6] | r2 = *((r2 + r6));
0x00077f52 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x00077f56 bl 0x77c00 | fcn_00077c00 (r0);
| if (r5 != 0) {
0x00077f5a cbz r5, 0x77f6e |
0x00077f5c ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x00077f5e cmp r3, 7 |
0x00077f60 itttt ls |
| if (r3 > 7) {
0x00077f62 addls r2, r4, r3, lsl 2 | r2 = r4 + (r3 << 2);
| }
| if (r3 > 7) {
0x00077f66 addls r3, 1 | r3++;
| }
| if (r3 > 7) {
0x00077f68 strbls r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
| }
| if (r3 > 7) {
0x00077f6a str.w r5, [r2, 0x94] | __asm ("str.w r5, [r2, 0x94]");
| goto label_5;
| }
| }
| label_5:
0x00077f6e add sp, 0x14 |
0x00077f70 pop {r4, r5, r6, r7, pc} |
| label_2:
0x00077f72 ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
| if (r3 == 0) {
0x00077f74 cbz r3, 0x77fa0 | goto label_6;
| }
| label_1:
0x00077f76 mov r0, r4 | r0 = r4;
0x00077f78 bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x00077f7c ldrb r5, [r4, 0x13] | r5 = *((r4 + 0x13));
0x00077f7e mov r3, r0 | r3 = r0;
0x00077f80 cmp r5, 0 |
0x00077f82 bne 0x77f16 |
| } while (r5 != 0);
| label_3:
0x00077f84 ldr r5, [r4, 0x2c] | r5 = *((r4 + 0x2c));
0x00077f86 cmp r7, 1 |
0x00077f88 add.w r5, r5, 1 | r5++;
0x00077f8c str r5, [r4, 0x2c] | *((r4 + 0x2c)) = r5;
| if (r7 > 1) {
0x00077f8e bgt 0x77f28 | goto label_0;
| }
| label_4:
0x00077f90 ldr r1, [pc, 0x20] |
0x00077f92 mov r0, r4 | r0 = r4;
0x00077f94 str r3, [sp, 0xc] | var_ch = r3;
0x00077f96 add r1, pc | r1 = 0xeff4e;
0x00077f98 bl 0x25778 | fcn_00025778 (r0);
0x00077f9c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00077f9e b 0x77f28 | goto label_0;
| label_6:
0x00077fa0 ldr r3, [r0] | r3 = *(r0);
0x00077fa2 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00077fa4 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x00077fa6 itt pl |
| if (r3 < r3) {
0x00077fa8 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x00077faa strbpl r3, [r0, 0x17] | *((r0 + 0x17)) = r3;
| }
0x00077fac b 0x77f76 | 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/libsqlite3.so.0.8.6 @ 0x77fb8 */
| #include <stdint.h>
|
; (fcn) fcn.00077fb8 () | void fcn_00077fb8 (int16_t arg_10h, int16_t arg_4ch, int16_t arg_68h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_38h;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00077fb8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00077fbc mov r6, r2 | r6 = r2;
0x00077fbe sub sp, 0x44 |
0x00077fc0 ldr r2, [pc, 0x1ac] |
0x00077fc2 mov r8, r0 | r8 = r0;
0x00077fc4 mov r5, r1 | r5 = r1;
0x00077fc6 str r3, [sp, 0x1c] | var_1ch = r3;
0x00077fc8 ldr r0, [sp, 0x68] | r0 = *(arg_68h);
0x00077fca add r2, pc | r2 = 0xf013e;
0x00077fcc ldr r3, [pc, 0x1a4] | r3 = *(0x78174);
0x00077fce ldr.w r4, [r8, 8] | r4 = *((r8 + 8));
0x00077fd2 str r0, [sp, 0x14] | var_14h = r0;
0x00077fd4 ldr r3, [r2, r3] |
0x00077fd6 ldr.w fp, [r8] | fp = *(r8);
0x00077fda ldr r3, [r3] | r3 = *(0xf013e);
0x00077fdc str r3, [sp, 0x3c] | var_3ch = r3;
0x00077fde mov.w r3, 0 | r3 = 0;
0x00077fe2 cmp r4, 0 |
| if (r4 == 0) {
0x00077fe4 beq.w 0x78138 | goto label_5;
| }
| label_2:
0x00077fe8 ldr r2, [pc, 0x18c] |
0x00077fea movs r7, 0 | r7 = 0;
0x00077fec ldr.w r3, [fp, 0x10] | r3 = *(arg_10h);
0x00077ff0 ldr.w sb, [pc, 0x188] | sb = *(0x0007817c);
0x00077ff4 add r2, pc | r2 = 0xf0170;
0x00077ff6 str r6, [sp, 0x24] | var_24h = r6;
0x00077ff8 addw r2, r2, 0xde8 | __asm ("addw r2, r2, aav.0x000000ff");
0x00077ffc ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x00077ffe str r2, [sp, 0x10] | var_10h = r2;
0x00078000 lsls r2, r5, 4 | r2 = r5 << 4;
0x00078002 add sb, pc | sb += pc;
0x00078004 add.w sl, r3, r2 | sl = r3 + r2;
0x00078008 ldr r3, [pc, 0x174] |
0x0007800a str r2, [sp, 0x18] | var_18h = r2;
0x0007800c add r3, pc | r3 = 0xf0190;
0x0007800e str r3, [sp, 0x20] | var_20h = r3;
0x00078010 add r3, sp, 0x38 | r3 += var_38h;
0x00078012 str r3, [sp, 0xc] | var_ch = r3;
0x00078014 mov r3, sb | r3 = sb;
0x00078016 mov sb, r4 | sb = r4;
0x00078018 mov r4, r3 | r4 = r3;
| do {
0x0007801a ldr r1, [sp, 0xc] | r1 = var_ch;
0x0007801c movs r3, 0 | r3 = 0;
0x0007801e ldr.w r2, [sl] | r2 = *(sl);
0x00078022 mov r0, fp | r0 = fp;
0x00078024 strb r3, [r1, r7] | *((r1 + r7)) = r3;
0x00078026 mov r1, r4 | r1 = r4;
0x00078028 bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
| if (r0 == 0) {
0x0007802c cbz r0, 0x78082 | goto label_6;
| }
0x0007802e ldr r2, [r0, 0x1c] | r2 = *((r0 + 0x1c));
0x00078030 cmp r5, 1 |
0x00078032 add r3, sp, 0x2c | r3 += var_2ch;
0x00078034 str.w r2, [r3, r7, lsl 2] | __asm ("str.w r2, [r3, r7, lsl 2]");
| if (r5 != 1) {
0x00078038 beq 0x7805a |
0x0007803a ldr.w r3, [r8] | r3 = *(r8);
0x0007803e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00078040 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00078042 add r3, r1 | r3 += r1;
0x00078044 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00078046 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x00078048 cbz r3, 0x7805a | goto label_7;
| }
0x0007804a movs r3, 1 | r3 = 1;
0x0007804c mov r1, r5 | r1 = r5;
0x0007804e mov r0, r8 | r0 = r8;
0x00078050 str r4, [sp] | *(sp) = r4;
0x00078052 str r2, [sp, 0x1c] | var_1ch = r2;
0x00078054 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
0x00078058 ldr r2, [sp, 0x1c] | r2 = var_1ch;
| }
| label_7:
0x0007805a cmp r6, 0 |
| if (r6 == 0) {
0x0007805c beq 0x7814e | goto label_8;
| }
0x0007805e ldr r1, [sp, 0x14] | r1 = var_14h;
0x00078060 mov r3, r4 | r3 = r4;
0x00078062 ldr.w r2, [sl] | r2 = *(sl);
0x00078066 mov r0, r8 | r0 = r8;
0x00078068 str r6, [sp, 4] | var_4h = r6;
0x0007806a str r1, [sp] | *(sp) = r1;
0x0007806c ldr r1, [sp, 0x20] | r1 = var_20h;
0x0007806e bl 0x77c00 | fcn_00077c00 (r0);
| label_0:
0x00078072 cmp r7, 2 |
| if (r7 == 2) {
0x00078074 beq 0x780aa | goto label_9;
| }
| label_1:
0x00078076 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00078078 add.w r3, r3, r7, lsl 3 | r3 += (r7 << 3);
0x0007807c adds r7, 1 | r7++;
0x0007807e ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x00078080 b 0x7801a |
| } while (1);
| label_6:
0x00078082 cmp r7, 0 |
| if (r7 != 0) {
0x00078084 bne 0x78072 | goto label_0;
| }
0x00078086 ldr r1, [pc, 0xfc] |
0x00078088 mov r3, r4 | r3 = r4;
0x0007808a ldr.w r2, [sl] | r2 = *(sl);
0x0007808e mov r0, r8 | r0 = r8;
0x00078090 add r1, pc | r1 = 0xf021a;
0x00078092 str r1, [sp] | *(sp) = r1;
0x00078094 ldr r1, [pc, 0xf0] |
0x00078096 add r1, pc | r1 = 0xf0222;
0x00078098 bl 0x77c00 | fcn_00077c00 (r0);
0x0007809c ldr.w r3, [r8, 0x5c] | r3 = *((r8 + 0x5c));
0x000780a0 str r3, [sp, 0x2c] | var_2ch = r3;
0x000780a2 movs r3, 0x10 | r3 = 0x10;
0x000780a4 strb.w r3, [sp, 0x38] | var_38h = r3;
0x000780a8 b 0x78076 | goto label_1;
| label_9:
0x000780aa ldrd r0, r3, [sb, 0x6c] | __asm ("ldrd r0, r3, [sb, 0x6c]");
0x000780ae mov r4, sb | r4 = sb;
0x000780b0 ldr r6, [sp, 0x24] | r6 = var_24h;
0x000780b2 ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
0x000780b6 cmp r0, r3 |
| if (r0 >= r3) {
0x000780b8 bge 0x78126 | goto label_10;
| }
0x000780ba add.w r2, r0, r0, lsl 2 | r2 = r0 + (r0 << 2);
0x000780be ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x000780c0 adds r1, r0, 1 | r1 = r0 + 1;
0x000780c2 lsls r2, r2, 2 | r2 <<= 2;
0x000780c4 mov.w lr, 0 | lr = 0;
0x000780c8 mov.w ip, 0x63 |
0x000780cc str r1, [r4, 0x6c] | *((r4 + 0x6c)) = r1;
0x000780ce adds r7, r3, r2 | r7 = r3 + r2;
0x000780d0 strd r6, r8, [r7, 4] | __asm ("strd r6, r8, [r7, 4]");
0x000780d4 strd r5, lr, [r7, 0xc] | __asm ("strd r5, lr, [r7, 0xc]");
0x000780d8 str.w ip, [r3, r2] | __asm ("str.w ip, [r3, r2]");
| do {
0x000780dc ldr r3, [r4] | r3 = *(r4);
0x000780de ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 == 0) {
0x000780e2 cbnz r3, 0x780f6 |
0x000780e4 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x000780e6 add.w r0, r0, r0, lsl 2 | r0 += (r0 << 2);
0x000780ea movs r5, 0xfd | r5 = 0xfd;
0x000780ec movs r2, 3 | r2 = 3;
0x000780ee add.w r0, r3, r0, lsl 2 | r0 = r3 + (r0 << 2);
0x000780f2 strb r5, [r0, 1] | *((r0 + 1)) = r5;
0x000780f4 str r2, [r0, 0x10] | *((r0 + 0x10)) = r2;
| }
0x000780f6 cmp r1, 0 |
| if (r1 > 0) {
0x000780f8 ble 0x7810c |
0x000780fa ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x000780fc add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x00078100 ldrb.w r2, [sp, 0x38] | r2 = var_38h;
0x00078104 add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
0x00078108 strh r2, [r3, -0x12] | *((r3 - 0x12)) = r2;
| }
| label_3:
0x0007810c ldr r2, [pc, 0x7c] |
0x0007810e ldr r3, [pc, 0x64] | r3 = *(0x78176);
0x00078110 add r2, pc | r2 = 0xf02a0;
0x00078112 ldr r3, [r2, r3] | r3 = *(0xf02a0);
0x00078114 ldr r2, [r3] | r2 = *(0xf02a0);
0x00078116 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00078118 eors r2, r3 | r2 ^= r3;
0x0007811a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007811e bne 0x7816c | goto label_11;
| }
0x00078120 add sp, 0x44 |
0x00078122 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x00078126 movs r1, 0x63 | r1 = 0x63;
0x00078128 mov r3, r8 | r3 = r8;
0x0007812a mov r2, r6 | r2 = r6;
0x0007812c mov r0, r4 | r0 = r4;
0x0007812e str r5, [sp] | *(sp) = r5;
0x00078130 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00078134 ldr r1, [r4, 0x6c] | r1 = *((r4 + 0x6c));
0x00078136 b 0x780dc |
| } while (1);
| label_5:
0x00078138 ldr.w r3, [r8, 0x74] | r3 = *((r8 + 0x74));
| if (r3 == 0) {
0x0007813c cbz r3, 0x7815c | goto label_12;
| }
| label_4:
0x0007813e mov r0, r8 | r0 = r8;
0x00078140 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00078144 mov r4, r0 | r4 = r0;
0x00078146 cmp r0, 0 |
| if (r0 != 0) {
0x00078148 bne.w 0x77fe8 | goto label_2;
| }
0x0007814c b 0x7810c | goto label_3;
| label_8:
0x0007814e mov r3, r5 | r3 = r5;
0x00078150 movs r1, 0x8d | r1 = 0x8d;
0x00078152 mov r0, sb | r0 = sb;
0x00078154 str r6, [sp] | *(sp) = r6;
0x00078156 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007815a b 0x78072 | goto label_0;
| label_12:
0x0007815c ldr.w r3, [fp, 0x4c] | r3 = *(arg_4ch);
0x00078160 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x00078162 itt pl |
| if (r3 < r3) {
0x00078164 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x00078166 strbpl r3, [r8, 0x17] | *((r8 + 0x17)) = r3;
| }
0x0007816a b 0x7813e | goto label_4;
| label_11:
0x0007816c blx 0x7e8c | fcn_00007e8c ();
0x00078170 ldrb r6, [r0, r3] | r6 = *((r0 + r3));
0x00078172 movs r5, r0 | r5 = r0;
0x00078174 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00078176 movs r0, r0 |
0x00078178 cmp r8, r1 |
0x0007817a movs r5, r0 | r5 = r0;
0x0007817c strh r2, [r0, 0x34] | *((r0 + 0x34)) = r2;
0x0007817e movs r3, r0 | r3 = r0;
0x00078180 ldrb r4, [r3, 0x13] | r4 = *((r3 + 0x13));
0x00078182 movs r3, r0 | r3 = r0;
0x00078184 ldrb r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x00078186 movs r3, r0 | r3 = r0;
0x00078188 ldrb r6, [r0, 0x14] | r6 = *((r0 + 0x14));
0x0007818a movs r3, r0 | r3 = r0;
0x0007818c ldrh r0, [r0, r6] | r0 = *((r0 + r6));
0x0007818e movs r5, r0 | r5 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x782dc */
| #include <stdint.h>
|
; (fcn) fcn.000782dc () | void fcn_000782dc (int16_t arg_0h, int16_t arg_1h, int16_t arg_ch, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x000782dc blmi 0xffa8ae80 | __asm ("blmi 0xffa8ae80");
0x000782e0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000782e4 sub sp, 0x2c |
0x000782e6 add r2, pc | r2 += pc;
0x000782e8 ldr r4, [r0, 0x24] | r4 = *(arg_0hx24);
0x000782ea str r1, [sp, 0x10] | var_10h = r1;
0x000782ec ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000782ee ldr r7, [r0] | r7 = *(r0);
0x000782f0 ldr r3, [r3] | r3 = *(r3);
0x000782f2 str r3, [sp, 0x24] | var_24h = r3;
0x000782f4 mov.w r3, 0 | r3 = 0;
0x000782f8 cmp r4, 0 |
| if (r4 != 0) {
0x000782fa bne.w 0x78538 | goto label_10;
| }
0x000782fe ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x00078302 cmp r3, 0 |
| if (r3 != 0) {
0x00078304 bne.w 0x78538 | goto label_10;
| }
0x00078308 ldr.w r8, [r0, 0xe4] | r8 = *(arg_0hxe4);
0x0007830c mov r5, r0 | r5 = r0;
0x0007830e ldr r1, [r7, 0x10] | r1 = *((r7 + 0x10));
0x00078310 ldr.w r0, [r8, 0x48] | r0 = *((r8 + 0x48));
0x00078314 cmp r0, 0 |
| if (r0 == 0) {
0x00078316 beq.w 0x78664 | goto label_11;
| }
0x0007831a ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x0007831c cmp r0, r3 |
| if (r0 == r3) {
0x0007831e beq.w 0x7860c | goto label_12;
| }
0x00078322 add.w r3, r1, 0x10 | r3 = r1 + 0x10;
| do {
0x00078326 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00078328 adds r4, 1 | r4++;
0x0007832a mov r1, r3 | r1 = r3;
0x0007832c lsls r6, r4, 4 | r6 = r4 << 4;
0x0007832e adds r3, 0x10 | r3 += 0x10;
0x00078330 cmp r0, r2 |
0x00078332 bne 0x78326 |
| } while (r0 != r2);
| label_7:
0x00078334 ldr.w r2, [r8] | r2 = *(r8);
0x00078338 ldrh.w r3, [r8, 0x2a] | r3 = *((r8 + 0x2a));
0x0007833c ldr.w sb, [r1] | sb = *(r1);
0x00078340 movs r1, 0x14 | r1 = 0x14;
0x00078342 add.w r0, r2, 0x10 | r0 = r2 + 0x10;
0x00078346 mvn r2, 0x13 | r2 = ~0x13;
0x0007834a str r0, [sp, 0x14] | var_14h = r0;
0x0007834c smlabb r3, r3, r1, r2 | __asm ("smlabb r3, r3, r1, r2");
0x00078350 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x00078354 mov r1, r0 | r1 = r0;
0x00078356 mov r0, r7 | r0 = r7;
0x00078358 add.w sl, r2, r3 | sl = r2 + r3;
0x0007835c mov r2, sb | r2 = sb;
0x0007835e ldr.w fp, [sl, 4] | fp = *((sl + 4));
0x00078362 bl 0x3b634 | fcn_0003b634 (r0, r1, r2, r3);
0x00078366 movs r2, 0 | r2 = 0;
0x00078368 ldr r3, [r0] | r3 = *(r0);
0x0007836a movs r1, 0x1a | r1 = 0x1a;
0x0007836c str r2, [sp] | *(sp) = r2;
0x0007836e mov r0, r5 | r0 = r5;
0x00078370 mov r2, sb | r2 = sb;
0x00078372 bl 0x25800 | r0 = fcn_00025800 (r0);
0x00078376 cmp r0, 0 |
| if (r0 != 0) {
0x00078378 bne.w 0x78538 | goto label_10;
| }
0x0007837c ldrh.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x00078380 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 < r3) {
0x00078382 bmi.w 0x785aa | goto label_13;
| }
0x00078386 ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x0007838a cmp r2, 0 |
| if (r2 != 0) {
0x0007838c bne.w 0x78554 | goto label_14;
| }
0x00078390 tst.w r3, 0x60 |
| if ((r3 & 0x60) != 0) {
0x00078394 bne.w 0x7857a | goto label_15;
| }
0x00078398 cmp.w fp, 0 |
| if (fp != 0) {
0x0007839c beq 0x783ac |
0x0007839e ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x000783a2 ldrb r3, [r3] | r3 = *(r3);
0x000783a4 cmp r3, 0x78 |
0x000783a6 it eq |
| if (r3 == 0x78) {
0x000783a8 moveq fp, 0 | goto label_16;
| }
| }
| label_16:
0x000783ac ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x000783ae lsls r0, r3, 0x11 | r0 = r3 << 0x11;
| if (r0 < r3) {
0x000783b0 bmi.w 0x785d8 | goto label_17;
| }
| label_4:
0x000783b4 ldrb.w r3, [sl, 0xc] | r3 = *((sl + 0xc));
0x000783b8 cmp r3, 0 |
| if (r3 == 0) {
0x000783ba beq.w 0x7861c | goto label_18;
| }
0x000783be cmp.w fp, 0 |
| if (fp == 0) {
0x000783c2 beq.w 0x78630 | goto label_19;
| }
| label_5:
0x000783c6 add r3, sp, 0x20 | r3 += var_20h;
0x000783c8 mov r1, fp | r1 = fp;
0x000783ca str r3, [sp] | *(sp) = r3;
0x000783cc movs r3, 0 | r3 = 0;
0x000783ce str r3, [sp, 0x20] | var_20h = r3;
0x000783d0 movs r2, 1 | r2 = 1;
0x000783d2 movs r3, 0x41 | r3 = 0x41;
0x000783d4 mov r0, r7 | r0 = r7;
0x000783d6 bl 0x2cd80 | r0 = fcn_0002cd80 (r0, r1, r2, r3, r4);
0x000783da cmp r0, 0 |
| if (r0 != 0) {
0x000783dc bne.w 0x78538 | goto label_10;
| }
0x000783e0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000783e2 cmp r0, 0 |
| if (r0 == 0) {
0x000783e4 beq.w 0x78646 | goto label_20;
| }
| label_9:
0x000783e8 bl 0x1a728 | fcn_0001a728 (r0);
| label_0:
0x000783ec ldr r3, [sp, 0x10] | r3 = var_10h;
0x000783ee ldrd r1, r2, [r3] | __asm ("ldrd r1, r2, [r3]");
0x000783f2 str r1, [sp, 0x1c] | var_1ch = r1;
0x000783f4 cmp r1, 0 |
| if (r1 == 0) {
0x000783f6 beq 0x78482 | goto label_21;
| }
0x000783f8 str r2, [sp, 0x18] | var_18h = r2;
0x000783fa mov.w sl, 0 | sl = 0;
0x000783fe adds r2, 1 | r2++;
0x00078400 mov r0, r7 | r0 = r7;
0x00078402 adc r3, sl, 0 | __asm ("adc r3, sl, 0");
0x00078406 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x0007840a mov fp, r0 |
0x0007840c cmp r0, 0 |
| if (r0 == 0) {
0x0007840e beq 0x78482 | goto label_21;
| }
0x00078410 ldrd r2, r1, [sp, 0x18] | __asm ("ldrd r2, r1, [var_1ch]");
0x00078414 blx 0x7dcc | fcn_00007dcc ();
0x00078418 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0007841a ldr r3, [sp, 0x10] | r3 = var_10h;
0x0007841c strb.w sl, [fp, r2] | *((fp + r2)) = sl;
0x00078420 ldr r2, [r7, 0x18] | r2 = *((r7 + 0x18));
0x00078422 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00078424 str r2, [sp, 0x10] | var_10h = r2;
0x00078426 subs r2, r3, 1 | r2 = r3 - 1;
0x00078428 add r2, fp | r2 += fp;
0x0007842a cmp fp, r2 |
0x0007842c it hs |
| if (fp < r2) {
0x0007842e ldrhs r2, [sp, 0x10] | r2 = var_10h;
| }
| if (fp >= r2) {
0x00078430 bhs 0x78458 | goto label_22;
| }
0x00078432 ldr r0, [pc, 0x250] |
0x00078434 add r3, fp | r3 += fp;
0x00078436 add.w r1, fp, 1 | r1 += arg_1h;
0x0007843a add r0, pc | r0 = 0xf0ac4;
| do {
0x0007843c ldrb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x00078440 cmp r2, 0x3b |
| if (r2 != 0x3b) {
0x00078442 beq 0x7844e |
0x00078444 add r2, r0 | r2 += r0;
0x00078446 ldrb.w r2, [r2, 0x40] | r2 = *((r2 + 0x40));
0x0007844a lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 >= r2) {
0x0007844c bpl 0x78456 | goto label_23;
| }
| }
0x0007844e cmp r1, r3 |
0x00078450 strb.w sl, [r3] | *(r3) = sl;
0x00078454 bne 0x7843c |
| } while (r1 != r3);
| label_23:
0x00078456 ldr r2, [r7, 0x18] | r2 = *((r7 + 0x18));
| label_22:
0x00078458 orr r2, r2, 2 | r2 |= 2;
0x0007845c ldr.w r3, [r8, 0x34] | r3 = *((r8 + 0x34));
0x00078460 ldr r1, [pc, 0x224] |
0x00078462 mov r0, r5 | r0 = r5;
0x00078464 str r2, [r7, 0x18] | *((r7 + 0x18)) = r2;
0x00078466 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00078468 strd fp, r3, [sp] | __asm ("strd fp, r3, [sp]");
0x0007846c add r1, pc | r1 = 0xf0af8;
0x0007846e str r2, [sp, 8] | var_8h = r2;
0x00078470 mov r2, sb | r2 = sb;
0x00078472 bl 0x77c00 | fcn_00077c00 (r0);
0x00078476 mov r1, fp | r1 = fp;
0x00078478 mov r0, r7 | r0 = r7;
0x0007847a bl 0x159dc | fcn_000159dc (r0, r1);
0x0007847e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00078480 str r3, [r7, 0x18] | *((r7 + 0x18)) = r3;
| label_21:
0x00078482 ldr r7, [r5, 8] | r7 = *((r5 + 8));
0x00078484 cmp r7, 0 |
| if (r7 == 0) {
0x00078486 beq.w 0x78596 | goto label_24;
| }
| label_2:
0x0007848a ldrb r3, [r5, 0x13] | r3 = *((r5 + 0x13));
0x0007848c cmp r3, 0 |
| if (r3 == 0) {
0x0007848e beq.w 0x78610 | goto label_25;
| }
0x00078492 subs r3, 1 | r3--;
0x00078494 uxtb r3, r3 | r3 = (int8_t) r3;
0x00078496 strb r3, [r5, 0x13] | *((r5 + 0x13)) = r3;
0x00078498 add.w r3, r5, r3, lsl 2 | r3 = r5 + (r3 << 2);
0x0007849c ldr.w r8, [r3, 0x94] | r8 = *((r3 + 0x94));
| label_8:
0x000784a0 movs r3, 2 | r3 = 2;
0x000784a2 mov r2, r4 | r2 = r4;
0x000784a4 str r3, [sp] | *(sp) = r3;
0x000784a6 movs r1, 0x5f | r1 = 0x5f;
0x000784a8 mov r3, r8 | r3 = r8;
0x000784aa mov r0, r7 | r0 = r7;
0x000784ac bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000784b0 ldr.w r2, [r7, 0x98] | r2 = *((r7 + 0x98));
0x000784b4 movs r3, 1 | r3 = 1;
0x000784b6 lsls r3, r4 | r3 <<= r4;
0x000784b8 cmp r4, 1 |
0x000784ba orr.w r2, r2, r3 | r2 |= r3;
0x000784be str.w r2, [r7, 0x98] | __asm ("str.w r2, [r7, 0x98]");
| if (r4 != 1) {
0x000784c2 beq 0x784da |
0x000784c4 ldr r2, [r7] | r2 = *(r7);
0x000784c6 ldr r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x000784c8 add r2, r6 | r2 += r6;
0x000784ca ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000784cc ldrb r2, [r2, 9] | r2 = *((r2 + 9));
| if (r2 == 0) {
0x000784ce cbz r2, 0x784da | goto label_26;
| }
0x000784d0 ldr.w r2, [r7, 0x9c] | r2 = *((r7 + 0x9c));
0x000784d4 orrs r2, r3 | r2 |= r3;
0x000784d6 str.w r2, [r7, 0x9c] | __asm ("str.w r2, [r7, 0x9c]");
| }
| label_26:
0x000784da movs r6, 0 | r6 = 0;
0x000784dc mvn r3, 1 | r3 = ~1;
0x000784e0 mov r2, r8 | r2 = r8;
0x000784e2 movs r1, 0x53 | r1 = 0x53;
0x000784e4 mov r0, r7 | r0 = r7;
0x000784e6 str r6, [sp] | *(sp) = r6;
0x000784e8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000784ec ldr r3, [r7, 0x6c] | r3 = *((r7 + 0x6c));
0x000784ee mov r2, r8 | r2 = r8;
0x000784f0 movs r1, 0x30 | r1 = 0x30;
0x000784f2 mov r0, r7 | r0 = r7;
0x000784f4 str r6, [sp] | *(sp) = r6;
0x000784f6 adds r3, 2 | r3 += 2;
0x000784f8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000784fc movs r3, 3 | r3 = 3;
0x000784fe mov r0, r7 | r0 = r7;
0x00078500 str r3, [sp] | *(sp) = r3;
0x00078502 mov r2, r4 | r2 = r4;
0x00078504 movs r3, 2 | r3 = 2;
0x00078506 movs r1, 0x60 | r1 = 0x60;
0x00078508 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0007850c cmp.w r8, 0 |
| if (r8 != 0) {
0x00078510 bne 0x785c4 | goto label_27;
| }
| label_1:
0x00078512 ldr r2, [pc, 0x178] |
0x00078514 ldr r3, [pc, 0x168] | r3 = *(0x78680);
0x00078516 add r2, pc | r2 = 0xf0ba8;
0x00078518 ldr r3, [r2, r3] | r3 = *(0xf0ba8);
0x0007851a ldr r2, [r3] | r2 = *(0xf0ba8);
0x0007851c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0007851e eors r2, r3 | r2 ^= r3;
0x00078520 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00078524 bne.w 0x78678 | goto label_28;
| }
0x00078528 movs r2, 1 | r2 = 1;
0x0007852a mov r1, r4 | r1 = r4;
0x0007852c mov r0, r5 | r0 = r5;
0x0007852e add sp, 0x2c |
0x00078530 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00078534 b.w 0x2bc6c | void (*0x2bc6c)() ();
| label_10:
0x00078538 ldr r2, [pc, 0x154] |
0x0007853a ldr r3, [pc, 0x144] | r3 = *(0x78682);
0x0007853c add r2, pc | r2 = 0xf0bd0;
0x0007853e ldr r3, [r2, r3] | r3 = *(0xf0bd0);
0x00078540 ldr r2, [r3] | r2 = *(0xf0bd0);
0x00078542 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00078544 eors r2, r3 | r2 ^= r3;
0x00078546 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0007854a bne.w 0x78678 | goto label_28;
| }
0x0007854e add sp, 0x2c |
0x00078550 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x00078554 ldr r2, [pc, 0x13c] |
0x00078556 ldr r3, [pc, 0x128] | r3 = *(0x78682);
0x00078558 add r2, pc | r2 = 0xf0bf0;
0x0007855a ldr r3, [r2, r3] | r3 = *(0xf0bf0);
0x0007855c ldr r2, [r3] | r2 = *(0xf0bf0);
0x0007855e ldr r3, [sp, 0x24] | r3 = var_24h;
0x00078560 eors r2, r3 | r2 ^= r3;
0x00078562 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00078566 bne.w 0x78678 | goto label_28;
| }
0x0007856a ldr r1, [pc, 0x12c] |
0x0007856c add r1, pc | r1 = 0xf0c0a;
| label_3:
0x0007856e mov r0, r5 | r0 = r5;
0x00078570 add sp, 0x2c |
0x00078572 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00078576 b.w 0x25778 | void (*0x25778)() ();
| label_15:
0x0007857a lsls r1, r3, 0x19 | r1 = r3 << 0x19;
| if (r1 >= r3) {
0x0007857c bpl.w 0x783ec | goto label_0;
| }
0x00078580 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00078582 mov r0, r5 | r0 = r5;
0x00078584 ldr r2, [pc, 0x114] |
0x00078586 ldr r1, [pc, 0x118] |
0x00078588 str r3, [sp] | *(sp) = r3;
0x0007858a mov r3, sb | r3 = sb;
0x0007858c add r2, pc | r2 = 0xf0c2c;
0x0007858e add r1, pc | r1 = 0xf0c34;
0x00078590 bl 0x77c00 | fcn_00077c00 (r0);
0x00078594 b 0x783ec | goto label_0;
| label_24:
0x00078596 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x00078598 cmp r3, 0 |
| if (r3 == 0) {
0x0007859a beq 0x785fe | goto label_29;
| }
| label_6:
0x0007859c mov r0, r5 | r0 = r5;
0x0007859e bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x000785a2 mov r7, r0 | r7 = r0;
0x000785a4 cmp r0, 0 |
| if (r0 == 0) {
0x000785a6 beq 0x78512 | goto label_1;
| }
0x000785a8 b 0x7848a | goto label_2;
| label_13:
0x000785aa ldr r2, [pc, 0xf8] |
0x000785ac ldr r3, [pc, 0xd0] | r3 = *(0x78680);
0x000785ae add r2, pc | r2 = 0xf0c58;
0x000785b0 ldr r3, [r2, r3] | r3 = *(0xf0c58);
0x000785b2 ldr r2, [r3] | r2 = *(0xf0c58);
0x000785b4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000785b6 eors r2, r3 | r2 ^= r3;
0x000785b8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000785bc bne 0x78678 | goto label_28;
| }
0x000785be ldr r1, [pc, 0xe8] |
0x000785c0 add r1, pc | r1 = 0xf0c6e;
0x000785c2 b 0x7856e | goto label_3;
| label_27:
0x000785c4 ldrb r3, [r5, 0x13] | r3 = *((r5 + 0x13));
0x000785c6 cmp r3, 7 |
0x000785c8 itttt ls |
| if (r3 > 7) {
0x000785ca addls r2, r3, 1 | r2 = r3 + 1;
| }
| if (r3 > 7) {
0x000785cc addls r3, r5, r3, lsl 2 | r3 = r5 + (r3 << 2);
| }
| if (r3 > 7) {
0x000785d0 strbls r2, [r5, 0x13] | *((r5 + 0x13)) = r2;
| }
| if (r3 <= 7) {
0x000785d2 str.w r8, [r3, 0x94] | __asm ("str.w r8, [r3, 0x94]");
| }
0x000785d6 b 0x78512 | goto label_1;
| label_17:
0x000785d8 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x000785dc cmp r3, 0 |
| if (r3 == 0) {
0x000785de beq.w 0x783b4 | goto label_4;
| }
0x000785e2 cmp.w fp, 0 |
| if (fp == 0) {
0x000785e6 beq 0x78626 | goto label_30;
| }
0x000785e8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000785ea mov r0, r5 | r0 = r5;
0x000785ec ldr r2, [pc, 0xbc] |
0x000785ee ldr r1, [pc, 0xc0] |
0x000785f0 str r3, [sp] | *(sp) = r3;
0x000785f2 mov r3, sb | r3 = sb;
0x000785f4 add r2, pc | r2 = 0xf0ca4;
0x000785f6 add r1, pc | r1 = 0xf0cac;
0x000785f8 bl 0x77c00 | fcn_00077c00 (r0);
0x000785fc b 0x783c6 | goto label_5;
| label_29:
0x000785fe ldr r3, [r5] | r3 = *(r5);
0x00078600 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00078602 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x00078604 itt pl |
| if (r3 < r3) {
0x00078606 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x00078608 strbpl r3, [r5, 0x17] | *((r5 + 0x17)) = r3;
| }
0x0007860a b 0x7859c | goto label_6;
| label_12:
0x0007860c mov r6, r4 | r6 = r4;
0x0007860e b 0x78334 | goto label_7;
| label_25:
0x00078610 ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x00078612 add.w r8, r3, 1 | r8 = r3 + 1;
0x00078616 str.w r8, [r5, 0x2c] | __asm ("str.w r8, [r5, 0x2c]");
0x0007861a b 0x784a0 | goto label_8;
| label_18:
0x0007861c cmp.w fp, 0 |
| if (fp == 0) {
0x00078620 beq.w 0x783ec | goto label_0;
| }
0x00078624 b 0x783c6 | goto label_5;
| label_30:
0x00078626 ldrb.w r3, [sl, 0xc] | r3 = *((sl + 0xc));
0x0007862a cmp r3, 0 |
| if (r3 == 0) {
0x0007862c beq.w 0x783ec | goto label_0;
| }
| label_19:
0x00078630 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00078632 mov r0, r5 | r0 = r5;
0x00078634 ldr r2, [pc, 0x7c] |
0x00078636 ldr r1, [pc, 0x80] |
0x00078638 str r3, [sp] | *(sp) = r3;
0x0007863a mov r3, sb | r3 = sb;
0x0007863c add r2, pc | r2 = 0xf0cf4;
0x0007863e add r1, pc | r1 = 0xf0cfc;
0x00078640 bl 0x77c00 | fcn_00077c00 (r0);
0x00078644 b 0x783ec | goto label_0;
| label_20:
0x00078646 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00078648 mov r0, r5 | r0 = r5;
0x0007864a ldr r2, [pc, 0x70] |
0x0007864c ldr r1, [pc, 0x70] |
0x0007864e str r3, [sp] | *(sp) = r3;
0x00078650 mov r3, sb | r3 = sb;
0x00078652 add r2, pc | r2 = 0xf0d14;
0x00078654 add r1, pc | r1 = 0xf0d18;
0x00078656 bl 0x77c00 | fcn_00077c00 (r0);
0x0007865a ldr r0, [sp, 0x20] | r0 = var_20h;
0x0007865c cmp r0, 0 |
| if (r0 == 0) {
0x0007865e beq.w 0x783ec | goto label_0;
| }
0x00078662 b 0x783e8 | goto label_9;
| label_11:
0x00078664 movs r6, 0 | r6 = 0;
0x00078666 mov.w r4, 0x8000 | r4 = fcn.00008000;
0x0007866a sub.w r1, r1, 0x80000 | r1 -= 0x80000;
0x0007866e movt r6, 0xfff8 | r6 = (r6 & 0xFFFF) | 0xfff80000;
0x00078672 movt r4, 0xffff | r4 = (r4 & 0xFFFF) | 0xffff0000;
0x00078676 b 0x78334 | goto label_7;
| label_28:
0x00078678 blx 0x7e8c | fcn_00007e8c ();
0x0007867c ldr r2, [r5, r6] | r2 = *((r5 + r6));
0x0007867e movs r5, r0 | r5 = r0;
0x00078680 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00078682 movs r0, r0 |
0x00078684 ldm r4, {r1, r4, r5, r6, r7} | r1 = *(r4);
| r4 = *((r4 + 4));
| r5 = *((r4 + 8));
| r6 = *((r4 + 12));
| r7 = *((r4 + 16));
0x00078686 movs r3, r0 | r3 = r0;
0x00078688 ldrb r0, [r0, 0xa] | r0 = *((r0 + 0xa));
0x0007868a movs r3, r0 | r3 = r0;
0x0007868c ldrsb r2, [r7, r5] | r2 = *((r7 + r5));
0x0007868e movs r5, r0 | r5 = r0;
0x00078690 ldrsb r4, [r2, r5] | r4 = *((r2 + r5));
0x00078692 movs r5, r0 | r5 = r0;
0x00078694 ldrsb r0, [r7, r4] | r0 = *((r7 + r4));
0x00078696 movs r5, r0 | r5 = r0;
0x00078698 ldrb r4, [r7, 1] | r4 = *((r7 + 1));
0x0007869a movs r3, r0 | r3 = r0;
0x0007869c ldrb r4, [r0, 5] | r4 = *((r0 + 5));
0x0007869e movs r3, r0 | r3 = r0;
0x000786a0 ldrb r2, [r6, 2] | r2 = *((r6 + 2));
0x000786a2 movs r3, r0 | r3 = r0;
0x000786a4 ldrsb r2, [r4, r3] | r2 = *((r4 + r3));
0x000786a6 movs r5, r0 | r5 = r0;
0x000786a8 ldrb r0, [r1] | r0 = *(r1);
0x000786aa movs r3, r0 | r3 = r0;
0x000786ac ldrb r0, [r2] | r0 = *(r2);
0x000786ae movs r3, r0 | r3 = r0;
0x000786b0 ldrb r2, [r1, 1] | r2 = *((r1 + 1));
0x000786b2 movs r3, r0 | r3 = r0;
0x000786b4 ldrb r4, [r5] | r4 = *(r5);
0x000786b6 movs r3, r0 | r3 = r0;
0x000786b8 ldrb r2, [r0] | r2 = *(r0);
0x000786ba movs r3, r0 | r3 = r0;
0x000786bc ldrb r6, [r1, 1] | r6 = *((r1 + 1));
0x000786be movs r3, r0 | r3 = r0;
0x000786c0 strb r4, [r5, 0x1f] | *((r5 + 0x1f)) = r4;
0x000786c2 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x786c4 */
| #include <stdint.h>
|
; (fcn) fcn.000786c4 () | void fcn_000786c4 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| r0 = arg1;
| r1 = arg2;
| if (? >= ?) {
0x000786c4 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x000786c8 sub sp, 0x10 |
0x000786ca ldr.w r6, [r0, 0xe4] | r6 = *((r0 + 0xe4));
0x000786ce ldr.w r8, [r0] | r8 = *(r0);
0x000786d2 cmp r6, 0 |
| if (r6 == 0) {
0x000786d4 beq.w 0x7882e | goto label_3;
| }
0x000786d8 ldr.w sb, [r0, 0xf4] | sb = *((r0 + 0xf4));
0x000786dc mov r4, r0 | r4 = r0;
0x000786de mov r5, r1 | r5 = r1;
0x000786e0 cmp.w sb, 0 |
| if (sb != 0) {
0x000786e4 beq 0x78716 |
0x000786e6 ldr.w r7, [r0, 0xf8] | r7 = *((r0 + 0xf8));
0x000786ea mov r0, r8 | r0 = r8;
0x000786ec adds r2, r7, 1 | r2 = r7 + 1;
0x000786ee asr.w r3, r7, 0x1f | r3 = r7 >> 0x1f;
0x000786f2 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000786f6 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x000786fa mov sl, r0 | sl = r0;
| if (r0 != 0) {
0x000786fc cbz r0, 0x7870c |
0x000786fe mov r1, sb | r1 = sb;
0x00078700 mov r2, r7 | r2 = r7;
0x00078702 blx 0x7dcc | fcn_00007dcc ();
0x00078706 movs r3, 0 | r3 = 0;
0x00078708 strb.w r3, [sl, r7] | *((sl + r7)) = r3;
| }
0x0007870c mov r2, sl | r2 = sl;
0x0007870e mov r1, r6 | r1 = r6;
0x00078710 mov r0, r4 | r0 = r4;
0x00078712 bl 0x258e4 | fcn_000258e4 (r0, r1, r2);
| }
0x00078716 movs r3, 0 | r3 = 0;
0x00078718 str.w r3, [r4, 0xf4] | __asm ("str.w r3, [r4, 0xf4]");
0x0007871c ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x0007871e cmp r3, 0 |
| if (r3 <= 0) {
0x00078720 ble.w 0x7882e | goto label_3;
| }
0x00078724 ldrb.w r3, [r8, 0xa9] | r3 = *((r8 + 0xa9));
0x00078728 cmp r3, 0 |
| if (r3 != 0) {
0x0007872a bne.w 0x78834 | goto label_4;
| }
0x0007872e ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x00078730 movs r2, 1 | r2 = 1;
0x00078732 cmp r3, 0 |
0x00078734 it eq |
| if (r3 != 0) {
0x00078736 moveq r3, r4 | r3 = r4;
| }
0x00078738 strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
| if (r5 != 0) {
0x0007873a cbz r5, 0x7874c |
0x0007873c ldrd r3, r2, [r5] | __asm ("ldrd r3, r2, [r5]");
0x00078740 ldr.w r1, [r4, 0xb4] | r1 = *((r4 + 0xb4));
0x00078744 subs r3, r3, r1 | r3 -= r1;
0x00078746 add r3, r2 | r3 += r2;
0x00078748 str.w r3, [r4, 0xb8] | __asm ("str.w r3, [r4, 0xb8]");
| }
0x0007874c ldr r1, [pc, 0x150] |
0x0007874e add.w r2, r4, 0xb4 | r2 = r4 + 0xb4;
0x00078752 mov r0, r8 | r0 = r8;
0x00078754 add r1, pc | r1 = 0xf0ff8;
0x00078756 bl 0x2677c | r0 = fcn_0002677c (r0);
0x0007875a mov sb, r0 | sb = r0;
0x0007875c ldr r0, [r6, 0x48] | r0 = *((r6 + 0x48));
0x0007875e ldr.w r1, [r8, 0x10] | r1 = *((r8 + 0x10));
0x00078762 cmp r0, 0 |
| if (r0 == 0) {
0x00078764 beq.w 0x7888c | goto label_5;
| }
0x00078768 ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x0007876a cmp r0, r3 |
| if (r0 == r3) {
0x0007876c beq.w 0x78886 | goto label_6;
| }
0x00078770 add.w r2, r1, 0x10 | r2 = r1 + 0x10;
0x00078774 movs r5, 0 | r5 = 0;
| do {
0x00078776 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00078778 adds r5, 1 | r5++;
0x0007877a mov r1, r2 | r1 = r2;
0x0007877c lsls r7, r5, 4 | r7 = r5 << 4;
0x0007877e adds r2, 0x10 | r2 += 0x10;
0x00078780 cmp r0, r3 |
0x00078782 bne 0x78776 |
| } while (r0 != r3);
| label_2:
0x00078784 ldr r3, [r6] | r3 = *(r6);
0x00078786 mov r0, r4 | r0 = r4;
0x00078788 ldr r2, [r1] | r2 = *(r1);
0x0007878a strd r3, sb, [sp] | __asm ("strd r3, sb, [sp]");
0x0007878e ldr r1, [r4, 0x58] | r1 = *((r4 + 0x58));
0x00078790 str r1, [sp, 8] | var_8h = r1;
0x00078792 ldr r1, [pc, 0x110] |
0x00078794 add r1, pc | r1 = 0xf103e;
0x00078796 bl 0x77c00 | fcn_00077c00 (r0);
0x0007879a ldr.w sl, [r4, 8] | sl = *((r4 + 8));
0x0007879e mov r0, sl | r0 = sl;
0x000787a0 cmp.w sl, 0 |
0x000787a4 beq 0x7884c |
| while (1) {
0x000787a6 ldr r3, [r4] | r3 = *(r4);
0x000787a8 mov r2, r5 | r2 = r5;
0x000787aa movs r1, 0x60 | r1 = 0x60;
0x000787ac ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000787ae add r3, r7 | r3 += r7;
0x000787b0 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000787b2 ldr r3, [r3] | r3 = *(r3);
0x000787b4 adds r3, 1 | r3++;
0x000787b6 str r3, [sp] | *(sp) = r3;
0x000787b8 movs r3, 1 | r3 = 1;
0x000787ba bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000787be ldrd r3, r2, [sl, 0x6c] | __asm ("ldrd r3, r2, [sl, 0x6c]");
0x000787c2 cmp r3, r2 |
| if (r3 >= r2) {
0x000787c4 bge 0x7885c | goto label_7;
| }
0x000787c6 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x000787ca adds r3, 1 | r3++;
0x000787cc str.w r3, [sl, 0x6c] | __asm ("str.w r3, [sl, 0x6c]");
0x000787d0 movs r0, 0xa2 | r0 = 0xa2;
0x000787d2 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x000787d6 lsls r1, r1, 2 | r1 <<= 2;
0x000787d8 movs r2, 0 | r2 = 0;
0x000787da str r0, [r3, r1] | *((r3 + r1)) = r0;
0x000787dc add r3, r1 | r3 += r1;
0x000787de strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x000787e2 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_0:
0x000787e6 ldr r1, [pc, 0xc0] |
0x000787e8 mov r3, sb | r3 = sb;
0x000787ea ldr r2, [r6] | r2 = *(r6);
0x000787ec mov r0, r8 | r0 = r8;
0x000787ee add r1, pc | r1 = 0xf109c;
0x000787f0 bl 0x2677c | fcn_0002677c (r0);
0x000787f4 movs r3, 0 | r3 = 0;
0x000787f6 mov r2, r0 | r2 = r0;
0x000787f8 mov r1, r5 | r1 = r5;
0x000787fa mov r0, sl | r0 = sl;
0x000787fc bl 0x2bbb8 | fcn_0002bbb8 (r0, r1, r2, r3);
0x00078800 cmp.w sb, 0 |
| if (sb != 0) {
0x00078804 beq 0x7880e |
0x00078806 mov r1, sb | r1 = sb;
0x00078808 mov r0, r8 | r0 = r8;
0x0007880a bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0007880e ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00078810 mov r0, sl | r0 = sl;
0x00078812 ldr r2, [r6] | r2 = *(r6);
0x00078814 adds r6, r3, 1 | r6 = r3 + 1;
0x00078816 mov r1, r6 | r1 = r6;
0x00078818 str r6, [r4, 0x2c] | *((r4 + 0x2c)) = r6;
0x0007881a movs r4, 0 | r4 = 0;
0x0007881c bl 0x2b744 | fcn_0002b744 (r0, r1, r2);
0x00078820 mov r3, r6 | r3 = r6;
0x00078822 mov r2, r5 | r2 = r5;
0x00078824 movs r1, 0xa7 | r1 = 0xa7;
0x00078826 mov r0, sl | r0 = sl;
0x00078828 str r4, [sp] | *(sp) = r4;
0x0007882a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_3:
0x0007882e add sp, 0x10 |
0x00078830 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_4:
0x00078834 ldr r0, [r6, 0x48] | r0 = *((r6 + 0x48));
0x00078836 mov r2, r6 | r2 = r6;
0x00078838 ldr r1, [r6] | r1 = *(r6);
0x0007883a adds r0, 8 | r0 += 8;
0x0007883c bl 0x169a8 | r0 = fcn_000169a8 (r0, r1, r2, r3, r4);
| if (r0 != 0) {
0x00078840 cbnz r0, 0x7886c | goto label_8;
| }
0x00078842 str.w r0, [r4, 0xe4] | __asm ("str.w r0, [r4, 0xe4]");
0x00078846 add sp, 0x10 |
0x00078848 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x0007884c ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
| if (r3 == 0) {
0x0007884e cbz r3, 0x78878 | goto label_9;
| }
| label_1:
0x00078850 mov r0, r4 | r0 = r4;
0x00078852 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00078856 mov sl, r0 | sl = r0;
0x00078858 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0007885a b 0x787a6 |
| }
| label_7:
0x0007885c movs r3, 0 | r3 = 0;
0x0007885e movs r1, 0xa2 | r1 = 0xa2;
0x00078860 mov r2, r3 | r2 = r3;
0x00078862 mov r0, sl | r0 = sl;
0x00078864 str r3, [sp] | *(sp) = r3;
0x00078866 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0007886a b 0x787e6 | goto label_0;
| label_8:
0x0007886c mov r0, r8 | r0 = r8;
0x0007886e add sp, 0x10 |
0x00078870 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00078874 b.w 0x101ec | void (*0x101ec)() ();
| label_9:
0x00078878 ldr r3, [r4] | r3 = *(r4);
0x0007887a ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0007887c lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x0007887e itt pl |
| if (r3 < r3) {
0x00078880 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x00078882 strbpl r3, [r4, 0x17] | *((r4 + 0x17)) = r3;
| }
0x00078884 b 0x78850 | goto label_1;
| label_6:
0x00078886 movs r7, 0 | r7 = 0;
0x00078888 mov r5, r7 | r5 = r7;
0x0007888a b 0x78784 | goto label_2;
| label_5:
0x0007888c movs r7, 0 | r7 = 0;
0x0007888e mov.w r5, 0x8000 | r5 = fcn.00008000;
0x00078892 sub.w r1, r1, 0x80000 | r1 -= 0x80000;
0x00078896 movt r7, 0xfff8 | r7 = (r7 & 0xFFFF) | 0xfff80000;
0x0007889a movt r5, 0xffff | r5 = (r5 & 0xFFFF) | 0xffff0000;
0x0007889e b 0x78784 | 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/libsqlite3.so.0.8.6 @ 0x788ac */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.000788ac () | void fcn_000788ac (int16_t arg_150h, int16_t arg_154h, int16_t arg_158h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int32_t var_8h_2;
| int32_t var_ch_2;
| int8_t var_11h;
| int8_t var_13h;
| int8_t var_18h;
| int8_t var_19h;
| int8_t var_1bh;
| int16_t var_d0h;
| int32_t var_dch;
| int32_t var_e0h;
| int32_t var_100h;
| int16_t var_124h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000788ac push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000788b0 mov sb, r2 | sb = r2;
0x000788b2 ldr r2, [pc, 0x3b8] |
0x000788b4 mov sl, r3 | sl = r3;
0x000788b6 sub sp, 0x12c |
0x000788b8 movs r5, 0 | r5 = 0;
0x000788ba ldr r3, [pc, 0x3b4] | r3 = *(0x78c72);
0x000788bc add r7, sp, 0x14 | r7 += var_14h;
0x000788be add r2, pc | r2 = 0xf1530;
0x000788c0 str r1, [sp] | *(sp) = r1;
0x000788c2 mov r6, r0 | r6 = r0;
0x000788c4 mov r1, r5 | r1 = r5;
0x000788c6 ldr r3, [r2, r3] |
0x000788c8 mov r0, r7 | r0 = r7;
0x000788ca movs r2, 0x94 | r2 = 0x94;
0x000788cc ldr r4, [sp, 0x150] | r4 = *(arg_150h);
0x000788ce ldr r3, [r3] | r3 = *(0xf1530);
0x000788d0 str r3, [sp, 0x124] | var_124h = r3;
0x000788d2 mov.w r3, 0 | r3 = 0;
0x000788d6 add r3, sp, 0x10 | r3 += var_10h;
0x000788d8 str r3, [sp, 4] | var_4h = r3;
0x000788da ldr r3, [sp, 0x154] | r3 = *(arg_154h);
0x000788dc str r5, [sp, 0x10] | var_10h = r5;
0x000788de str r3, [sp, 0xc] | var_ch = r3;
0x000788e0 ldr r3, [sp, 0x158] | r3 = *(arg_158h);
0x000788e2 str r3, [sp, 8] | var_8h = r3;
0x000788e4 blx 0x8264 | fcn_00008264 ();
0x000788e8 movs r2, 0x54 | r2 = 0x54;
0x000788ea mov r1, r5 | r1 = r5;
0x000788ec add r0, sp, 0xd0 | r0 += var_d0h;
0x000788ee blx 0x8264 | fcn_00008264 ();
0x000788f2 tst.w sl, 1 |
0x000788f6 str.w r4, [r7, 0xdc] | __asm ("str.w r4, [var_dch]");
| if ((sl & 1) != 0) {
0x000788fa beq 0x7890e |
0x000788fc ldr.w r3, [r6, 0x118] | r3 = *((r6 + 0x118));
0x00078900 strh.w r5, [r6, 0x11c] | *((r6 + 0x11c)) = r5;
0x00078904 adds r3, 1 | r3++;
0x00078906 str.w r3, [r6, 0x118] | __asm ("str.w r3, aav.0x000000ff");
0x0007890a movs r3, 1 | r3 = 1;
0x0007890c strb r3, [r7, 0x18] | var_18h = r3;
| }
0x0007890e ldrb.w r5, [r6, 0x5b] | r5 = *((r6 + 0x5b));
0x00078912 ubfx r3, sl, 2, 1 | r3 = (sl >> 2) & ((1 << 1) - 1);
0x00078916 strb r3, [r7, 0x19] | var_19h = r3;
| if (r5 != 0) {
0x00078918 cbnz r5, 0x78968 | goto label_12;
| }
0x0007891a ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x0007891c cmp r1, 0 |
| if (r1 <= 0) {
0x0007891e ble 0x78968 | goto label_12;
| }
| do {
0x00078920 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00078922 lsl.w fp, r5, 4 |
0x00078926 add r3, fp | r3 += fp;
0x00078928 ldr r4, [r3, 4] | r4 = *((r3 + 4));
| if (r4 != 0) {
0x0007892a cbz r4, 0x78962 |
0x0007892c ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 != 0) {
0x0007892e cbz r3, 0x78940 |
0x00078930 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00078932 adds r3, 1 | r3++;
0x00078934 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00078936 ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
| if (r3 != 0) {
0x00078938 cbnz r3, 0x78940 | goto label_13;
| }
0x0007893a mov r0, r4 | r0 = r4;
0x0007893c bl 0x12464 | fcn_00012464 (r0);
| }
| label_13:
0x00078940 movs r2, 1 | r2 = 1;
0x00078942 mov r0, r4 | r0 = r4;
0x00078944 mov r1, r2 | r1 = r2;
0x00078946 bl 0x95f8 | fcn_000095f8 (r0, r1, r2);
0x0007894a ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0007894c mov r8, r0 | r8 = r0;
| if (r3 != 0) {
0x0007894e cbz r3, 0x7895a |
0x00078950 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00078952 subs r3, 1 | r3--;
0x00078954 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00078956 cmp r3, 0 |
| if (r3 == 0) {
0x00078958 beq 0x789d0 | goto label_14;
| }
| }
0x0007895a cmp.w r8, 0 |
| if (r8 != 0) {
0x0007895e bne 0x789dc | goto label_15;
| }
| label_0:
0x00078960 ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
| }
0x00078962 adds r5, 1 | r5++;
0x00078964 cmp r1, r5 |
0x00078966 bgt 0x78920 |
| } while (r1 > r5);
| label_12:
0x00078968 mov r0, r6 | r0 = r6;
0x0007896a bl 0x162b4 | fcn_000162b4 (r0);
0x0007896e cmp.w sb, 0 |
0x00078972 str r6, [r7] | *(r7) = r6;
| if (sb < 0) {
0x00078974 blt 0x78a1e | goto label_16;
| }
| if (sb != 0) {
0x00078976 bne 0x78a12 | goto label_17;
| }
| label_1:
0x00078978 ldr r3, [r6, 0x74] | r3 = *((r6 + 0x74));
0x0007897a cmp sb, r3 |
| if (sb > r3) {
0x0007897c bgt.w 0x78b50 | goto label_18;
| }
0x00078980 ldr r5, [sp] | r5 = *(sp);
0x00078982 cmp r5, 0 |
| if (r5 == 0) {
0x00078984 beq.w 0x78b46 | goto label_19;
| }
0x00078988 asr.w r3, sb, 0x1f | r3 = sb >> 0x1f;
0x0007898c adds.w r2, sb, 1 | r2 = sb + 1;
0x00078990 mov r0, r6 | r0 = r6;
0x00078992 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00078996 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x0007899a mov r4, r0 | r4 = r0;
0x0007899c cmp r0, 0 |
| if (r0 == 0) {
0x0007899e beq.w 0x78b46 | goto label_19;
| }
0x000789a2 mov r2, sb | r2 = sb;
0x000789a4 mov r1, r5 | r1 = r5;
0x000789a6 blx 0x7dcc | fcn_00007dcc ();
0x000789aa movs r3, 0 | r3 = 0;
0x000789ac mov r1, r4 | r1 = r4;
0x000789ae strb.w r3, [r4, sb] | *((r4 + sb)) = r3;
0x000789b2 mov r0, r7 | r0 = r7;
0x000789b4 ldr r2, [sp, 4] | r2 = var_4h;
0x000789b6 bl 0x76dec | fcn_00076dec (r0, r1, r2, r3, r4, r5, r6);
0x000789ba ldr.w r3, [r7, 0xe0] | r3 = var_e0h;
0x000789be mov r1, r4 | r1 = r4;
0x000789c0 mov r0, r6 | r0 = r6;
0x000789c2 subs r3, r3, r4 | r3 -= r4;
0x000789c4 add r3, r5 | r3 += r5;
0x000789c6 str.w r3, [r7, 0xe0] | __asm ("str.w r3, [var_e0h]");
0x000789ca bl 0x159dc | fcn_000159dc (r0, r1);
0x000789ce b 0x78a28 | goto label_5;
| label_14:
0x000789d0 mov r0, r4 | r0 = r4;
0x000789d2 bl 0x95d0 | fcn_000095d0 (r0);
0x000789d6 cmp.w r8, 0 |
| if (r8 == 0) {
0x000789da beq 0x78960 | goto label_0;
| }
| label_15:
0x000789dc ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x000789de mov r0, r6 | r0 = r6;
0x000789e0 mov r1, r8 | r1 = r8;
0x000789e2 ldr.w r3, [r2, fp] | r3 = *((r2 + fp));
0x000789e6 ldr r2, [pc, 0x28c] |
0x000789e8 add r2, pc | r2 = 0xf1662;
0x000789ea bl 0x27824 | fcn_00027824 (r0, r1);
| label_2:
0x000789ee mov r0, r7 | r0 = r7;
0x000789f0 bl 0x18c9c | fcn_00018c9c (r0);
0x000789f4 ldr r2, [pc, 0x280] |
0x000789f6 ldr r3, [pc, 0x278] | r3 = *(0x78c72);
0x000789f8 add r2, pc | r2 = 0xf1674;
0x000789fa ldr r3, [r2, r3] | r3 = *(0xf1674);
0x000789fc ldr r2, [r3] | r2 = *(0xf1674);
0x000789fe ldr r3, [sp, 0x124] | r3 = var_124h;
0x00078a00 eors r2, r3 | r2 ^= r3;
0x00078a02 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00078a06 bne.w 0x78c66 | goto label_20;
| }
0x00078a0a mov r0, r8 | r0 = r8;
0x00078a0c add sp, 0x12c |
0x00078a0e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x00078a12 ldr r3, [sp] | r3 = *(sp);
0x00078a14 add r3, sb | r3 += sb;
0x00078a16 ldrb r3, [r3, -0x1] | r3 = *((r3 - 0x1));
0x00078a1a cmp r3, 0 |
| if (r3 != 0) {
0x00078a1c bne 0x78978 | goto label_1;
| }
| label_16:
0x00078a1e ldrd r1, r2, [sp] | __asm ("ldrd r1, r2, [sp]");
0x00078a22 mov r0, r7 | r0 = r7;
0x00078a24 bl 0x76dec | fcn_00076dec (r0, r1, r2, r3, r4, r5, r6);
| label_5:
0x00078a28 ldr r2, [sp, 8] | r2 = var_8h;
| if (r2 != 0) {
0x00078a2a cbz r2, 0x78a32 |
0x00078a2c ldr.w r3, [r7, 0xe0] | r3 = var_e0h;
0x00078a30 str r3, [r2] | *(r2) = r3;
| }
0x00078a32 ldrb.w r3, [r6, 0xa9] | r3 = *((r6 + 0xa9));
0x00078a36 cmp r3, 0 |
| if (r3 == 0) {
0x00078a38 beq 0x78ae8 | goto label_21;
| }
| label_4:
0x00078a3a ldrb.w r5, [r6, 0x53] | r5 = *((r6 + 0x53));
0x00078a3e cmp r5, 0 |
| if (r5 == 0) {
0x00078a40 beq 0x78ab0 | goto label_22;
| }
0x00078a42 movs r2, 7 | r2 = 7;
0x00078a44 movs r3, 0 | r3 = 0;
0x00078a46 str r2, [r7, 0xc] | var_ch_2 = r2;
0x00078a48 strb r3, [r7, 0x11] | var_11h = r3;
| label_7:
0x00078a4a ldr r4, [r7, 8] | r4 = var_8h_2;
| if (r4 != 0) {
0x00078a4c cbz r4, 0x78a70 |
0x00078a4e ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00078a50 movw r1, 0xda3 |
0x00078a54 movw r3, 0x2973 |
0x00078a58 movt r1, 0x2df2 | r1 = 0x2df20da3;
0x00078a5c movt r3, 0x319c | r3 = 0x319c2973;
0x00078a60 cmp r2, r3 |
0x00078a62 it ne |
| if (r2 != r3) {
0x00078a64 cmpne r2, r1 | __asm ("cmpne r2, r1");
| }
| if (r2 == r3) {
0x00078a66 beq.w 0x78b72 | goto label_23;
| }
| label_6:
0x00078a6a mov r0, r4 | r0 = r4;
0x00078a6c bl 0x1a984 | fcn_0001a984 (r0);
| }
0x00078a70 ldr r3, [sp, 4] | r3 = var_4h;
0x00078a72 ldr.w r8, [r7, 0xc] | r8 = var_ch_2;
0x00078a76 ldr r4, [r3] | r4 = *(r3);
0x00078a78 cmp r4, 0 |
| if (r4 == 0) {
0x00078a7a beq 0x78b30 | goto label_24;
| }
0x00078a7c ldr r2, [pc, 0x1fc] |
0x00078a7e mov r1, r8 | r1 = r8;
0x00078a80 mov r0, r6 | r0 = r6;
0x00078a82 mov r3, r4 | r3 = r4;
0x00078a84 add r2, pc | r2 = 0xf1704;
0x00078a86 bl 0x27824 | fcn_00027824 (r0, r1);
0x00078a8a mov r1, r4 | r1 = r4;
0x00078a8c mov r0, r6 | r0 = r6;
0x00078a8e bl 0x159dc | fcn_000159dc (r0, r1);
| label_3:
0x00078a92 ldr.w r1, [r7, 0x100] | r1 = var_100h;
0x00078a96 cmp r1, 0 |
| if (r1 == 0) {
0x00078a98 beq 0x789ee | goto label_2;
| }
| do {
0x00078a9a ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00078a9c mov r0, r6 | r0 = r6;
0x00078a9e str.w r3, [r7, 0x100] | __asm ("str.w r3, [var_100h]");
0x00078aa2 bl 0x159dc | fcn_000159dc (r0, r1);
0x00078aa6 ldr.w r1, [r7, 0x100] | r1 = var_100h;
0x00078aaa cmp r1, 0 |
0x00078aac bne 0x78a9a |
| } while (r1 != 0);
0x00078aae b 0x789ee | goto label_2;
| label_22:
0x00078ab0 ldr r3, [r7, 0xc] | r3 = var_ch_2;
0x00078ab2 cmp r3, 0 |
0x00078ab4 it ne |
| if (r3 != 0) {
0x00078ab6 cmpne r3, 0x65 | __asm ("cmpne r3, 0x65");
| }
0x00078ab8 ite ne |
| if (r3 == 0) {
0x00078aba movne r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
0x00078abc moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x00078abe bne 0x78b80 | goto label_25;
| }
0x00078ac0 ldr.w r0, [r6, 0x10c] | r0 = *((r6 + 0x10c));
0x00078ac4 ldr r2, [r7, 8] | r2 = var_8h_2;
0x00078ac6 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00078ac8 str r2, [r1] | *(r1) = r2;
0x00078aca str r3, [r6, 0x40] | *((r6 + 0x40)) = r3;
0x00078acc cmp r0, 0 |
| if (r0 == 0) {
0x00078ace beq 0x78b40 | goto label_26;
| }
0x00078ad0 ldrh.w r8, [r0, 8] | r8 = *((r0 + 8));
0x00078ad4 ands r8, r8, 0x2400 | r8 &= 0x2400;
0x00078ad8 itt eq |
| if (r8 != r8) {
0x00078ada moveq r3, 1 | r3 = 1;
| }
| if (r8 != r8) {
0x00078adc strheq r3, [r0, 8] | __asm ("strheq r3, [r0, 8]");
| goto label_27;
| }
| if (r8 == r8) {
| label_27:
0x00078ade beq 0x78a92 | goto label_3;
| }
0x00078ae0 mov r8, r3 | r8 = r3;
0x00078ae2 bl 0x15b10 | fcn_00015b10 (r0);
0x00078ae6 b 0x78a92 | goto label_3;
| label_21:
0x00078ae8 ldr r4, [r7, 8] | r4 = var_8h_2;
0x00078aea uxtb.w r2, sl | r2 = (int8_t) sl;
0x00078aee cmp r4, 0 |
| if (r4 == 0) {
0x00078af0 beq 0x78a3a | goto label_4;
| }
0x00078af2 tst.w sl, 0x80 |
0x00078af6 ldr.w r5, [r7, 0xe0] | r5 = var_e0h;
0x00078afa it eq |
| if ((sl & 0x80) != 0) {
0x00078afc streq r3, [r4, 0xd0] | *((r4 + 0xd0)) = r3;
| }
0x00078b00 ldr r3, [sp] | r3 = *(sp);
0x00078b02 strb.w r2, [r4, 0x94] | *((r4 + 0x94)) = r2;
| if (r3 == 0) {
0x00078b06 cbz r3, 0x78b7a | goto label_28;
| }
0x00078b08 subs r5, r5, r3 | r5 -= r3;
0x00078b0a ldr r0, [r4] | r0 = *(r4);
0x00078b0c asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x00078b0e adds r2, r5, 1 | r2 = r5 + 1;
0x00078b10 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00078b14 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00078b18 mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x00078b1a cbz r0, 0x78b2a | goto label_29;
| }
0x00078b1c ldr r1, [sp] | r1 = *(sp);
0x00078b1e mov r2, r5 | r2 = r5;
0x00078b20 blx 0x7dcc | fcn_00007dcc ();
0x00078b24 movs r3, 0 | r3 = 0;
0x00078b26 strb.w r3, [r8, r5] | *((r8 + r5)) = r3;
| do {
| label_29:
0x00078b2a str.w r8, [r4, 0xbc] | __asm ("str.w r8, [r4, 0xbc]");
0x00078b2e b 0x78a3a | goto label_4;
| label_24:
0x00078b30 str.w r8, [r6, 0x40] | __asm ("str.w r8, [r6, 0x40]");
0x00078b34 cmp.w r8, 0 |
| if (r8 == 0) {
0x00078b38 bne 0x78b68 |
0x00078b3a ldr.w r3, [r6, 0x10c] | r3 = *((r6 + 0x10c));
| if (r3 != 0) {
0x00078b3e cbnz r3, 0x78b68 | goto label_30;
| }
| label_26:
0x00078b40 mov.w r8, 0 | r8 = 0;
0x00078b44 b 0x78a92 | goto label_3;
| label_19:
0x00078b46 ldr r3, [sp] | r3 = *(sp);
0x00078b48 add r3, sb | r3 += sb;
0x00078b4a str.w r3, [r7, 0xe0] | __asm ("str.w r3, [var_e0h]");
0x00078b4e b 0x78a28 | goto label_5;
| label_18:
0x00078b50 ldr r2, [pc, 0x12c] |
0x00078b52 movs r1, 0x12 | r1 = 0x12;
0x00078b54 mov r0, r6 | r0 = r6;
0x00078b56 add r2, pc | r2 = 0xf17da;
0x00078b58 bl 0x27824 | fcn_00027824 (r0, r1);
0x00078b5c movs r1, 0x12 | r1 = 0x12;
0x00078b5e mov r0, r6 | r0 = r6;
0x00078b60 bl 0x166c8 | r0 = fcn_000166c8 (r0, r1);
0x00078b64 mov r8, r0 | r8 = r0;
0x00078b66 b 0x789ee | goto label_2;
| }
| label_30:
0x00078b68 mov r1, r8 | r1 = r8;
0x00078b6a mov r0, r6 | r0 = r6;
0x00078b6c bl 0x1663c | fcn_0001663c (r0, r1);
0x00078b70 b 0x78a92 | goto label_3;
| label_23:
0x00078b72 mov r0, r4 | r0 = r4;
0x00078b74 bl 0x5a870 | fcn_0005a870 (r0);
0x00078b78 b 0x78a6a | goto label_6;
| label_28:
0x00078b7a ldr.w r8, [sp] | r8 = *(sp);
0x00078b7e b 0x78b2a |
| } while (1);
| label_25:
0x00078b80 ldrb r3, [r7, 0x11] | r3 = var_11h;
0x00078b82 cmp r3, 0 |
| if (r3 == 0) {
0x00078b84 beq.w 0x78a4a | goto label_7;
| }
0x00078b88 ldr.w r8, [r7] | r8 = *(r7);
0x00078b8c ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x00078b90 cmp r2, 0 |
| if (r2 <= 0) {
0x00078b92 ble.w 0x78a4a | goto label_7;
| }
0x00078b96 movw sb, 0xc0a | sb = 0xc0a;
0x00078b9a str r6, [sp] | *(sp) = r6;
| do {
0x00078b9c ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00078ba0 lsl.w sl, r5, 4 | sl = r5 << 4;
0x00078ba4 add r3, sl | r3 += sl;
0x00078ba6 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00078ba8 cmp r4, 0 |
| if (r4 != 0) {
0x00078baa beq 0x78c1c |
0x00078bac ldrb r2, [r4, 8] | r2 = *((r4 + 8));
0x00078bae cmp r2, 0 |
| if (r2 != 0) {
0x00078bb0 bne 0x78c32 | goto label_31;
| }
0x00078bb2 mov r1, r2 | r1 = r2;
0x00078bb4 mov r0, r4 | r0 = r4;
0x00078bb6 bl 0x54990 | r0 = fcn_00054990 (r0, r1, r2, r3, r4, r5, r6);
0x00078bba cmp r0, sb |
0x00078bbc it ne |
| if (r0 != sb) {
0x00078bbe cmpne r0, 7 | __asm ("cmpne r0, 7");
| }
0x00078bc0 mov r6, r0 | r6 = r0;
| if (r0 == sb) {
0x00078bc2 beq 0x78c26 | goto label_32;
| }
| if (r6 != 0) {
| label_8:
0x00078bc4 cbnz r6, 0x78c22 | goto label_33;
| }
0x00078bc6 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00078bc8 mov.w fp, 1 |
0x00078bcc ldr r6, [r4, 4] | r6 = *((r4 + 4));
0x00078bce cmp r3, 0 |
| if (r3 == 0) {
0x00078bd0 beq 0x78c3e | goto label_34;
| }
| label_9:
0x00078bd2 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00078bd4 ldrb r1, [r4, 0xa] | r1 = *((r4 + 0xa));
0x00078bd6 adds r0, r3, 1 | r0 = r3 + 1;
0x00078bd8 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00078bda cmp r1, 0 |
| if (r1 != 0) {
0x00078bdc bne 0x78c48 | goto label_35;
| }
0x00078bde mov r0, r4 | r0 = r4;
0x00078be0 bl 0x12464 | fcn_00012464 (r0);
0x00078be4 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00078be6 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00078be8 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x00078bea ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00078bec rev r6, r2 | r2 = SWAP32 (r6);
| if (r3 != 0) {
0x00078bee cbz r3, 0x78bf8 |
0x00078bf0 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00078bf2 subs r3, 1 | r3--;
0x00078bf4 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| if (r3 == 0) {
0x00078bf6 cbz r3, 0x78c56 | goto label_36;
| }
| }
| label_10:
0x00078bf8 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00078bfc add r3, sl | r3 += sl;
0x00078bfe ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00078c00 ldr r3, [r3] | r3 = *(r3);
0x00078c02 cmp r3, r6 |
| if (r3 != r6) {
0x00078c04 beq 0x78c12 |
0x00078c06 mov r1, r5 | r1 = r5;
0x00078c08 mov r0, r8 | r0 = r8;
0x00078c0a bl 0x19400 | fcn_00019400 (r0, r1);
0x00078c0e movs r3, 0x11 | r3 = 0x11;
0x00078c10 str r3, [r7, 0xc] | var_ch_2 = r3;
| }
0x00078c12 cmp.w fp, 0 |
| if (fp != 0) {
0x00078c16 bne 0x78c5e | goto label_37;
| }
| label_11:
0x00078c18 ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
| }
0x00078c1c adds r5, 1 | r5++;
0x00078c1e cmp r5, r2 |
0x00078c20 blt 0x78b9c |
| } while (r5 < r2);
| label_33:
0x00078c22 ldr r6, [sp] | r6 = *(sp);
0x00078c24 b 0x78a4a | goto label_7;
| label_32:
0x00078c26 mov r0, r8 | r0 = r8;
0x00078c28 bl 0x101ec | fcn_000101ec (r0);
0x00078c2c movs r3, 7 | r3 = 7;
0x00078c2e str r3, [r7, 0xc] | var_ch_2 = r3;
0x00078c30 b 0x78bc4 | goto label_8;
| label_31:
0x00078c32 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x00078c34 mov.w fp, 0 |
0x00078c38 ldr r6, [r4, 4] | r6 = *((r4 + 4));
0x00078c3a cmp r3, 0 |
| if (r3 != 0) {
0x00078c3c bne 0x78bd2 | goto label_9;
| }
| label_34:
0x00078c3e ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00078c40 ldr r3, [r3, 0x38] | r3 = *((r3 + 0x38));
0x00078c42 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x00078c44 rev r6, r2 | r2 = SWAP32 (r6);
0x00078c46 b 0x78bf8 | goto label_10;
| label_35:
0x00078c48 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00078c4a ldr r2, [r2, 0x38] | r2 = *((r2 + 0x38));
0x00078c4c ldr r2, [r2, 0x28] | r2 = *((r2 + 0x28));
0x00078c4e str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00078c50 rev r6, r2 | r2 = SWAP32 (r6);
0x00078c52 cmp r3, 0 |
| if (r3 != 0) {
0x00078c54 bne 0x78bf8 | goto label_10;
| }
| label_36:
0x00078c56 mov r0, r4 | r0 = r4;
0x00078c58 bl 0x95d0 | fcn_000095d0 (r0);
0x00078c5c b 0x78bf8 | goto label_10;
| label_37:
0x00078c5e mov r0, r4 | r0 = r4;
0x00078c60 bl 0x591b4 | fcn_000591b4 (r0, r1);
0x00078c64 b 0x78c18 | goto label_11;
| label_20:
0x00078c66 blx 0x7e8c | fcn_00007e8c ();
0x00078c6a nop |
0x00078c6c strh r2, [r2, r7] | *((r2 + r7)) = r2;
0x00078c6e movs r5, r0 | r5 = r0;
0x00078c70 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00078c72 movs r0, r0 |
0x00078c74 strb r0, [r5, 0x18] | var_18h = r0;
0x00078c76 movs r3, r0 | r3 = r0;
0x00078c78 strh r0, [r3, r2] | *((r3 + r2)) = r0;
0x00078c7a movs r5, r0 | r5 = r0;
0x00078c7c strb r0, [r5, 0x1b] | var_1bh = r0;
0x00078c7e movs r3, r0 | r3 = r0;
0x00078c80 strb r2, [r3, 0x13] | var_13h = r2;
0x00078c82 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x79680 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00079680 () | void fcn_00079680 (int16_t arg1, uint32_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r2 = arg3;
0x00079680 blmi 0x1dcbc58 | __asm ("blmi 0x1dcbc58");
0x00079684 push.w {r4, r5, r6, r7, r8, lr} |
0x00079688 sub sp, 0x18 |
0x0007968a add r1, pc | r1 += pc;
0x0007968c ldr r6, [r0] | r6 = *(r0);
0x0007968e ldr r3, [r1, r3] | r3 = *((r1 + r3));
0x00079690 ldr r7, [r0, 8] | r7 = *((r0 + 8));
0x00079692 ldr r3, [r3] | r3 = *(r3);
0x00079694 str r3, [sp, 0x14] | var_14h = r3;
0x00079696 mov.w r3, 0 | r3 = 0;
0x0007969a ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0007969c orr r3, r3, 0x40 | r3 |= 0x40;
0x000796a0 str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x000796a2 cmp r2, 0 |
| if (r2 == 0) {
0x000796a4 beq.w 0x797e6 | goto label_4;
| }
0x000796a8 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x000796aa mov r4, r0 | r4 = r0;
0x000796ac mov r5, r2 | r5 = r2;
0x000796ae adds r3, 1 | r3++;
0x000796b0 str r3, [r0, 0x14] | *((r0 + 0x14)) = r3;
0x000796b2 ldrb.w r3, [r6, 0x53] | r3 = *((r6 + 0x53));
0x000796b6 cmp r3, 0 |
| if (r3 != 0) {
0x000796b8 bne.w 0x797fa | goto label_7;
| }
0x000796bc ldr.w r8, [r2, 0xc] | r8 = *((r2 + 0xc));
0x000796c0 cmp.w r8, 0 |
| if (r8 == 0) {
0x000796c4 beq 0x796e0 | goto label_8;
| }
0x000796c6 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
| if (r3 == 0) {
0x000796c8 cbz r3, 0x79708 | goto label_9;
| }
0x000796ca ldr r2, [pc, 0x190] |
0x000796cc ldrb r0, [r3] | r0 = *(r3);
0x000796ce add r2, pc | r2 = 0xf2f30;
0x000796d0 adds r1, r2, r0 | r1 = r2 + r0;
0x000796d2 ldrb.w r1, [r1, 0x140] | r1 = *((r1 + 0x140));
0x000796d6 cmp r1, 0x63 |
| if (r1 == 0x63) {
0x000796d8 beq 0x79752 | goto label_10;
| }
| label_1:
0x000796da ldr r1, [r5, 4] | r1 = *((r5 + 4));
| if (r1 == 0) {
0x000796dc cbz r1, 0x796e0 | goto label_8;
| }
| if (r0 == 0) {
0x000796de cbz r0, 0x7970e | goto label_11;
| }
| do {
| label_8:
0x000796e0 mov r0, r4 | r0 = r4;
0x000796e2 movs r2, 0 | r2 = 0;
0x000796e4 mov r1, r5 | r1 = r5;
0x000796e6 bl 0x2e334 | fcn_0002e334 (r0, r1, r2);
0x000796ea movs r0, 0 | r0 = 0;
| label_0:
0x000796ec ldr r2, [pc, 0x170] |
0x000796ee ldr r3, [pc, 0x168] | r3 = *(0x7985a);
0x000796f0 add r2, pc | r2 = 0xf2f54;
0x000796f2 ldr r3, [r2, r3] | r3 = *(0xf2f54);
0x000796f4 ldr r2, [r3] | r2 = *(0xf2f54);
0x000796f6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000796f8 eors r2, r3 | r2 ^= r3;
0x000796fa mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000796fe bne.w 0x7984e | goto label_12;
| }
0x00079702 add sp, 0x18 |
0x00079704 pop.w {r4, r5, r6, r7, r8, pc} |
| label_9:
0x00079708 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0007970a cmp r1, 0 |
0x0007970c beq 0x796e0 |
| } while (r1 == 0);
| label_11:
0x0007970e ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00079710 lsls r7, r7, 4 | r7 <<= 4;
0x00079712 mov r0, r6 | r0 = r6;
0x00079714 ldr r2, [r3, r7] | r2 = *((r3 + r7));
0x00079716 bl 0x1aa6c | r0 = fcn_0001aa6c (r0, r1, r2);
0x0007971a mov r6, r0 | r6 = r0;
0x0007971c cmp r0, 0 |
| if (r0 == 0) {
0x0007971e beq 0x797ea | goto label_13;
| }
0x00079720 add.w r1, r0, 0x2c | r1 = r0 + 0x2c;
0x00079724 mov r0, r8 | r0 = r8;
0x00079726 bl 0x8bc0 | r0 = fcn_00008bc0 (r0, r1);
| if (r0 != 0) {
0x0007972a cbz r0, 0x79738 |
0x0007972c ldr r1, [r6, 0x2c] | r1 = *((r6 + 0x2c));
0x0007972e cmp r1, 1 |
| if (r1 < 1) {
0x00079730 bls 0x79738 | goto label_2;
| }
0x00079732 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00079734 cmp r1, r3 |
| if (r1 < r3) {
0x00079736 bls 0x79806 | goto label_14;
| }
| }
| label_2:
0x00079738 ldr r3, [pc, 0x128] |
0x0007973a add r3, pc | r3 = 0xf2fa2;
0x0007973c ldrb r3, [r3, 9] | r3 = *((r3 + 9));
0x0007973e cmp r3, 0 |
| if (r3 == 0) {
0x00079740 beq 0x797e6 | goto label_4;
| }
0x00079742 ldr r2, [pc, 0x124] |
0x00079744 mov r0, r4 | r0 = r4;
0x00079746 mov r1, r5 | r1 = r5;
0x00079748 add r2, pc | r2 = 0xf2fb6;
0x0007974a bl 0x2e334 | fcn_0002e334 (r0, r1, r2);
0x0007974e movs r0, 0 | r0 = 0;
0x00079750 b 0x796ec | goto label_0;
| label_10:
0x00079752 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00079754 add r2, r3 | r2 += r3;
0x00079756 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x0007975a cmp r3, 0x72 |
| if (r3 != 0x72) {
0x0007975c bne 0x796da | goto label_1;
| }
0x0007975e mov r0, r8 | r0 = r8;
0x00079760 add.w r1, r6, 0xa4 | r1 = r6 + 0xa4;
0x00079764 ldrb.w r8, [r6, 0xa8] | r8 = *((r6 + 0xa8));
0x00079768 strb.w r7, [r6, 0xa8] | *((r6 + 0xa8)) = r7;
0x0007976c bl 0x8bc0 | r0 = fcn_00008bc0 (r0, r1);
0x00079770 cmp r0, 0 |
| if (r0 == 0) {
0x00079772 beq 0x7982e | goto label_15;
| }
0x00079774 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00079776 ldr.w r2, [r6, 0xa4] | r2 = *((r6 + 0xa4));
0x0007977a cmp r3, 0 |
0x0007977c it ne |
| if (r3 != 0) {
0x0007977e cmpne r2, r3 | __asm ("cmpne r2, r3");
| }
| if (r3 > 0) {
0x00079780 bhi 0x7982e | goto label_15;
| }
| label_5:
0x00079782 ldrb.w r3, [r6, 0xaa] | r3 = *((r6 + 0xaa));
0x00079786 add r2, sp, 0x10 | r2 += var_10h;
0x00079788 str.w r5, [r6, 0xac] | __asm ("str.w r5, [r6, 0xac]");
0x0007978c mov r0, r6 | r0 = r6;
0x0007978e bfc r3, 0, 1 | value_0 = BIT_MASK (1, );
| value_0 = ~value_0;
| r3 &= value_0;
0x00079792 strb.w r3, [r6, 0xaa] | *((r6 + 0xaa)) = r3;
0x00079796 movs r3, 0 | r3 = 0;
0x00079798 str r3, [sp, 8] | var_8h = r3;
0x0007979a str r3, [sp] | *(sp) = r3;
0x0007979c str r2, [sp, 4] | var_4h = r2;
0x0007979e mov.w r2, -1 | r2 = -1;
0x000797a2 ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x000797a4 str r3, [sp, 0x10] | var_10h = r3;
0x000797a6 bl 0x788ac | fcn_000788ac (r0, r1, r2, r3, r4, r5, r6);
0x000797aa ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x000797ac strb.w r8, [r6, 0xa8] | *((r6 + 0xa8)) = r8;
| if (r3 != 0) {
0x000797b0 cbz r3, 0x797e0 |
0x000797b2 ldrb.w r2, [r6, 0xaa] | r2 = *((r6 + 0xaa));
0x000797b6 lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 < r2) {
0x000797b8 bmi 0x797e0 | goto label_6;
| }
0x000797ba ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000797bc cmp r2, r3 |
0x000797be it lt |
| if (r2 >= r3) {
0x000797c0 strlt r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| }
0x000797c2 cmp r3, 7 |
| if (r3 == 7) {
0x000797c4 beq 0x79846 | goto label_16;
| }
0x000797c6 cmp r3, 9 |
| if (r3 == 9) {
0x000797c8 beq 0x797e0 | goto label_6;
| }
0x000797ca uxtb r3, r3 | r3 = (int8_t) r3;
0x000797cc cmp r3, 6 |
| if (r3 == 6) {
0x000797ce beq 0x797e0 | goto label_6;
| }
0x000797d0 mov r0, r6 | r0 = r6;
0x000797d2 blx 0x805c | fcn_0000805c ();
0x000797d6 mov r1, r5 | r1 = r5;
0x000797d8 mov r2, r0 | r2 = r0;
0x000797da mov r0, r4 | r0 = r4;
0x000797dc bl 0x2e334 | fcn_0002e334 (r0, r1, r2);
| }
| label_6:
0x000797e0 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000797e2 blx 0x8484 | fcn_00008484 ();
| do {
| label_4:
0x000797e6 movs r0, 0 | r0 = 0;
0x000797e8 b 0x796ec | goto label_0;
| label_13:
0x000797ea ldr r2, [pc, 0x80] |
0x000797ec mov r0, r4 | r0 = r4;
0x000797ee mov r1, r5 | r1 = r5;
0x000797f0 add r2, pc | r2 = 0xf3062;
0x000797f2 bl 0x2e334 | fcn_0002e334 (r0, r1, r2);
0x000797f6 mov r0, r6 | r0 = r6;
0x000797f8 b 0x796ec | goto label_0;
| label_7:
0x000797fa movs r2, 0 | r2 = 0;
0x000797fc mov r1, r5 | r1 = r5;
0x000797fe bl 0x2e334 | fcn_0002e334 (r0, r1, r2);
0x00079802 movs r0, 1 | r0 = 1;
0x00079804 b 0x796ec | goto label_0;
| label_14:
0x00079806 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00079808 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0007980a cmp r3, 0 |
0x0007980c beq 0x797e6 |
| } while (r3 == 0);
| label_3:
0x0007980e ldr r2, [r3, 0x2c] | r2 = *((r3 + 0x2c));
0x00079810 cmp r6, r3 |
0x00079812 sub.w r2, r2, r1 | r2 -= r1;
0x00079816 clz r2, r2 | r2 &= r2;
0x0007981a lsr.w r2, r2, 5 | r2 >>= 5;
0x0007981e it eq |
| if (r6 != r3) {
0x00079820 moveq r2, 0 | r2 = 0;
| }
0x00079822 cmp r2, 0 |
| if (r2 != 0) {
0x00079824 bne 0x79738 | goto label_2;
| }
0x00079826 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00079828 cmp r3, 0 |
| if (r3 != 0) {
0x0007982a bne 0x7980e | goto label_3;
| }
0x0007982c b 0x797e6 | goto label_4;
| label_15:
0x0007982e ldr r3, [pc, 0x40] |
0x00079830 add r3, pc | r3 = 0xf30a6;
0x00079832 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
0x00079834 cmp r3, 0 |
| if (r3 == 0) {
0x00079836 beq 0x79782 | goto label_5;
| }
0x00079838 ldr r2, [pc, 0x38] |
0x0007983a mov r1, r5 | r1 = r5;
0x0007983c mov r0, r4 | r0 = r4;
0x0007983e add r2, pc | r2 = 0xf30b6;
0x00079840 bl 0x2e334 | fcn_0002e334 (r0, r1, r2);
0x00079844 b 0x79782 | goto label_5;
| label_16:
0x00079846 mov r0, r6 | r0 = r6;
0x00079848 bl 0x101ec | fcn_000101ec (r0);
0x0007984c b 0x797e0 | goto label_6;
| label_12:
0x0007984e blx 0x7e8c | fcn_00007e8c ();
0x00079852 nop |
0x00079854 mov r6, r0 | r6 = r0;
0x00079856 movs r5, r0 | r5 = r0;
0x00079858 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0007985a movs r0, r0 |
0x0007985c rev16 r6, r3 | __asm ("rev16 r6, r3");
0x0007985e movs r3, r0 | r3 = r0;
0x00079860 cmp r8, r4 |
0x00079862 movs r5, r0 | r5 = r0;
0x00079864 ldr r0, [pc, 0x328] | r0 = *(0x79b90);
0x00079866 movs r5, r0 | r5 = r0;
0x00079868 ldr r4, [r4, 0x24] | r4 = *((r4 + 0x24));
0x0007986a movs r3, r0 | r3 = r0;
0x0007986c ldr r0, [r2, 0x1c] | r0 = *((r2 + 0x1c));
0x0007986e movs r3, r0 | r3 = r0;
0x00079870 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x79878 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00079878 () | void fcn_00079878 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int32_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_48h;
| int16_t var_4ch;
| int32_t var_50h;
| int32_t var_50h_2;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00079878 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0007987c mov r4, r0 | r4 = r0;
0x0007987e ldr r6, [r0, 0x18] | r6 = *((r0 + 0x18));
0x00079880 mov r5, r1 | r5 = r1;
0x00079882 sub sp, 0x6c |
0x00079884 ldr r0, [pc, 0x39c] |
0x00079886 ldr r1, [pc, 0x3a0] | r1 = *(0x79c2a);
0x00079888 orn r6, r6, 0x40 | r6 |= 0x40;
| r6 = ~r6;
0x0007988c add r0, pc | r0 = 0xf34b4;
0x0007988e ldr r1, [r0, r1] |
0x00079890 ldr r1, [r1] | r1 = *(0xf34b4);
0x00079892 str r1, [sp, 0x64] | var_64h = r1;
0x00079894 mov.w r1, 0 | r1 = 0;
0x00079898 str r2, [sp, 8] | var_8h = r2;
0x0007989a ldr r2, [pc, 0x390] |
0x0007989c add r2, pc | r2 = 0xf34ce;
0x0007989e str r2, [sp, 0x4c] | var_4ch = r2;
0x000798a0 movs r2, 1 | r2 = 1;
0x000798a2 cmp r5, r2 |
0x000798a4 strb.w r2, [r4, 0xa9] | *((r4 + 0xa9)) = r2;
| if (r5 == r2) {
0x000798a8 beq.w 0x79a1e | goto label_18;
| }
0x000798ac ldr.w sb, [pc, 0x380] |
0x000798b0 add sb, pc | sb = 0xf34e4;
| label_0:
0x000798b2 str r3, [sp, 0x2c] | var_2ch = r3;
0x000798b4 add.w sl, sp, 0x1c | sl += var_1ch;
0x000798b8 ldr r3, [sp, 8] | r3 = var_8h;
0x000798ba add r2, sp, 0x4c | r2 += var_4ch;
0x000798bc movs r1, 5 | r1 = 5;
0x000798be mov r0, sl | r0 = sl;
0x000798c0 strd sb, sb, [sp, 0x50] | __asm ("strd sb, sb, [var_50h]");
0x000798c4 str r3, [sp, 0x20] | var_20h = r3;
0x000798c6 ldr r3, [pc, 0x36c] |
0x000798c8 str r4, [sp, 0x1c] | var_1ch = r4;
0x000798ca str r5, [sp, 0x24] | var_24h = r5;
0x000798cc add r3, pc | r3 = 0xf3506;
0x000798ce str r3, [sp, 0x58] | var_58h = r3;
0x000798d0 ldr r3, [pc, 0x364] |
0x000798d2 add r3, pc | r3 = 0xf350e;
0x000798d4 str r3, [sp, 0x5c] | var_5ch = r3;
0x000798d6 movs r3, 0 | r3 = 0;
0x000798d8 str r3, [sp, 0x60] | var_60h = r3;
0x000798da str r3, [sp, 0x28] | var_28h = r3;
0x000798dc strd r3, r3, [sp, 0x30] | __asm ("strd r3, r3, [var_34h]");
0x000798e0 bl 0x79680 | fcn_00079680 (r0, r1);
0x000798e4 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000798e6 ldr r7, [sp, 0x28] | r7 = var_28h;
0x000798e8 ands r3, r6 | r3 &= r6;
0x000798ea str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x000798ec cmp r7, 0 |
| if (r7 != 0) {
0x000798ee bne 0x799e4 | goto label_1;
| }
0x000798f0 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000798f2 lsls r2, r5, 4 | r2 = r5 << 4;
0x000798f4 str r2, [sp, 0xc] | var_ch = r2;
0x000798f6 adds r6, r3, r2 | r6 = r3 + r2;
0x000798f8 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x000798fa cmp r0, 0 |
| if (r0 == 0) {
0x000798fc beq.w 0x79bd6 | goto label_19;
| }
0x00079900 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
| if (r3 != 0) {
0x00079902 cbz r3, 0x79912 |
0x00079904 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00079906 adds r3, 1 | r3++;
0x00079908 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x0007990a ldrb r3, [r0, 0xa] | r3 = *((r0 + 0xa));
0x0007990c cmp r3, 0 |
| if (r3 == 0) {
0x0007990e beq.w 0x79b20 | goto label_20;
| }
| }
| label_5:
0x00079912 ldrb r3, [r0, 8] | r3 = *((r0 + 8));
0x00079914 cmp r3, 0 |
| if (r3 != 0) {
0x00079916 bne.w 0x79b1a | goto label_21;
| }
| label_4:
0x0007991a movs r2, 0 | r2 = 0;
0x0007991c mov r1, r2 | r1 = r2;
0x0007991e bl 0x54990 | r0 = fcn_00054990 (r0, r1, r2, r3, r4, r5, r6);
0x00079922 mov fp, r0 |
0x00079924 cmp r0, 0 |
| if (r0 != 0) {
0x00079926 bne 0x7998a | goto label_22;
| }
0x00079928 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0007992a movs r3, 1 | r3 = 1;
0x0007992c str r3, [sp, 0x10] | var_10h = r3;
| label_3:
0x0007992e add r3, sp, 0x38 | r3 += var_38h;
0x00079930 mov.w r8, 0 | r8 = 0;
0x00079934 mov fp, r3 |
0x00079936 str r3, [sp, 0x14] | var_14h = r3;
| do {
0x00079938 add.w r8, r8, 1 | r8++;
0x0007993c mov r2, fp | r2 = fp;
0x0007993e mov r1, r8 | r1 = r8;
0x00079940 add.w fp, fp, 4 |
0x00079944 bl 0x185fc | fcn_000185fc (r0, r1, r2);
0x00079948 cmp.w r8, 5 |
| if (r8 == 5) {
0x0007994c beq 0x79952 | goto label_23;
| }
0x0007994e ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00079950 b 0x79938 |
| } while (1);
| label_23:
0x00079952 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00079954 movs r2, 0 | r2 = 0;
0x00079956 lsls r0, r3, 6 | r0 = r3 << 6;
| if (r0 < r3) {
0x00079958 bmi 0x79a26 | goto label_24;
| }
0x0007995a ldr r2, [sp, 0x48] | r2 = var_48h;
0x0007995c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0007995e ldr r1, [sp, 0x38] | r1 = var_38h;
0x00079960 str r1, [r3] | *(r3) = r1;
0x00079962 cmp r2, 0 |
| if (r2 == 0) {
0x00079964 beq 0x79a36 | goto label_25;
| }
0x00079966 cmp r5, 0 |
| if (r5 == 0) {
0x00079968 beq.w 0x79b64 | goto label_26;
| }
| label_10:
0x0007996c ldrb.w r1, [r4, 0x50] | r1 = *((r4 + 0x50));
0x00079970 and r2, r2, 3 | r2 &= 3;
0x00079974 cmp r2, r1 |
| if (r2 == r1) {
0x00079976 beq 0x79a3a | goto label_11;
| }
0x00079978 ldr r3, [sp, 8] | r3 = var_8h;
0x0007997a ldr r1, [r3] | r1 = *(r3);
| if (r1 != 0) {
0x0007997c cbz r1, 0x79984 |
0x0007997e mov r0, r4 | r0 = r4;
0x00079980 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00079984 ldr r1, [pc, 0x2b4] |
0x00079986 add r1, pc | r1 = 0xf35c6;
0x00079988 b 0x79bb2 | goto label_27;
| label_22:
0x0007998a cmp r0, 0x65 |
| if (r0 == 0x65) {
0x0007998c beq.w 0x79c06 | goto label_28;
| }
0x00079990 cmp.w r0, 0x204 |
| if (r0 == fcn.00000004) {
0x00079994 beq.w 0x79bfa | goto label_29;
| }
0x00079998 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0007999a beq.w 0x79c00 | goto label_30;
| }
0x0007999e uxtb r3, r0 | r3 = (int8_t) r0;
0x000799a0 cmp r3, 0x1c |
| if (r3 > 0x1c) {
0x000799a2 bgt.w 0x79c12 | goto label_31;
| }
0x000799a6 ldr r2, [pc, 0x298] |
0x000799a8 add r2, pc | r2 = 0xf35ee;
0x000799aa add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x000799ae ldr.w r7, [r3, 0x1a4] | r7 = *((r3 + 0x1a4));
0x000799b2 cmp r7, 0 |
| if (r7 == 0) {
0x000799b4 beq.w 0x79c18 | goto label_32;
| }
| label_17:
0x000799b8 ldr r3, [sp, 8] | r3 = var_8h;
0x000799ba ldr r1, [r3] | r1 = *(r3);
| if (r1 != 0) {
0x000799bc cbz r1, 0x799c4 |
0x000799be mov r0, r4 | r0 = r4;
0x000799c0 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x000799c4 mov r1, r7 | r1 = r7;
0x000799c6 mov r0, r4 | r0 = r4;
0x000799c8 bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x000799cc ldr r3, [sp, 8] | r3 = var_8h;
0x000799ce str r0, [r3] | *(r3) = r0;
0x000799d0 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x000799d2 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
| if (r3 != 0) {
0x000799d4 cbz r3, 0x799e2 |
0x000799d6 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000799d8 subs r3, 1 | r3--;
0x000799da str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x000799dc cmp r3, 0 |
| if (r3 == 0) {
0x000799de beq.w 0x79bc0 | goto label_33;
| }
| }
0x000799e2 mov r7, fp | r7 = fp;
| label_1:
0x000799e4 movw r3, 0xc0a | r3 = 0xc0a;
0x000799e8 cmp r7, r3 |
0x000799ea it ne |
| if (r7 != r3) {
0x000799ec cmpne r7, 7 | __asm ("cmpne r7, 7");
| }
| if (r7 == r3) {
0x000799ee beq.w 0x79bce | goto label_34;
| }
| label_14:
0x000799f2 mov r1, r5 | r1 = r5;
0x000799f4 mov r0, r4 | r0 = r4;
0x000799f6 bl 0x19400 | fcn_00019400 (r0, r1);
| do {
| label_13:
0x000799fa movs r3, 0 | r3 = 0;
0x000799fc ldr r2, [pc, 0x244] |
0x000799fe strb.w r3, [r4, 0xa9] | *((r4 + 0xa9)) = r3;
0x00079a02 ldr r3, [pc, 0x224] | r3 = *(0x79c2a);
0x00079a04 add r2, pc | r2 = 0xf364c;
0x00079a06 ldr r3, [r2, r3] | r3 = *(0xf364c);
0x00079a08 ldr r2, [r3] | r2 = *(0xf364c);
0x00079a0a ldr r3, [sp, 0x64] | r3 = var_64h;
0x00079a0c eors r2, r3 | r2 ^= r3;
0x00079a0e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00079a12 bne.w 0x79c1e | goto label_35;
| }
0x00079a16 mov r0, r7 | r0 = r7;
0x00079a18 add sp, 0x6c |
0x00079a1a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x00079a1e ldr.w sb, [pc, 0x228] | sb = *(0x00079c48);
0x00079a22 add sb, pc | sb += pc;
0x00079a24 b 0x798b2 | goto label_0;
| label_24:
0x00079a26 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00079a28 str r2, [sp, 0x38] | var_38h = r2;
0x00079a2a strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x00079a2e strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
0x00079a32 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00079a34 str r2, [r3] | *(r3) = r2;
| label_25:
0x00079a36 ldrb.w r1, [r4, 0x50] | r1 = *((r4 + 0x50));
| label_11:
0x00079a3a ldr r2, [r3, 0x50] | r2 = *((r3 + 0x50));
0x00079a3c strb.w r1, [r3, 0x4d] | *((r3 + 0x4d)) = r1;
| if (r2 == 0) {
0x00079a40 cbnz r2, 0x79a5e |
0x00079a42 ldr r1, [sp, 0x40] | r1 = var_40h;
0x00079a44 cmp r1, 0 |
| if (r1 >= 0) {
0x00079a46 bge.w 0x79b94 | goto label_36;
| }
0x00079a4a cmp.w r1, -0x80000000 |
| if (r1 == -0x80000000) {
0x00079a4e beq.w 0x79c0c | goto label_37;
| }
0x00079a52 rsbs r1, r1, 0 | r1 -= ;
| label_12:
0x00079a54 str r1, [r3, 0x50] | *((r3 + 0x50)) = r1;
0x00079a56 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00079a58 bl 0x18650 | fcn_00018650 (r0, r1);
0x00079a5c ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
| }
0x00079a5e ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00079a60 ands r1, r2, 0xff | r1 = r2 & 0xff;
| if (r1 == r2) {
0x00079a64 beq 0x79b12 | goto label_38;
| }
0x00079a66 cmp r1, 4 |
0x00079a68 strb.w r1, [r3, 0x4c] | *((r3 + 0x4c)) = r1;
| if (r1 > 4) {
0x00079a6c bhi.w 0x79ba2 | goto label_39;
| }
| label_2:
0x00079a70 clz r3, r5 | r3 &= r5;
0x00079a74 cmp r2, 3 |
0x00079a76 lsr.w r3, r3, 5 | r3 >>= 5;
0x00079a7a it le |
| if (r2 > 3) {
0x00079a7c movle r3, 0 | r3 = 0;
| }
0x00079a7e cmp r3, 0 |
| if (r3 != 0) {
0x00079a80 bne.w 0x79bf0 | goto label_40;
| }
| label_16:
0x00079a84 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00079a86 mov r3, sb | r3 = sb;
0x00079a88 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00079a8a mov r0, r4 | r0 = r4;
0x00079a8c ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00079a8e ldr r2, [r2, 0x30] | r2 = *((r2 + 0x30));
0x00079a90 str r2, [sp, 0x34] | var_34h = r2;
0x00079a92 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00079a94 ldr r2, [r2, r1] | r2 = *((r2 + r1));
0x00079a96 ldr r1, [pc, 0x1b4] |
0x00079a98 add r1, pc | r1 = 0xf36ea;
0x00079a9a bl 0x2677c | fcn_0002677c (r0);
0x00079a9e movs r2, 0 | r2 = 0;
0x00079aa0 mov r3, sl | r3 = sl;
0x00079aa2 str r2, [sp] | *(sp) = r2;
0x00079aa4 mov r1, r0 | r1 = r0;
0x00079aa6 ldr.w sl, [r4, 0x150] | sl = *((r4 + 0x150));
0x00079aaa mov r8, r0 | r8 = r0;
0x00079aac str.w r2, [r4, 0x150] | __asm ("str.w r2, aav.0x000000ff");
0x00079ab0 mov r0, r4 | r0 = r4;
0x00079ab2 ldr r2, [pc, 0x19c] |
0x00079ab4 add r2, pc | r2 = 0xf370a;
0x00079ab6 blx 0x7d84 | fcn_00007d84 ();
0x00079aba str.w sl, [r4, 0x150] | __asm ("str.w sl, aav.0x000000ff");
0x00079abe mov sb, r0 | sb = r0;
0x00079ac0 cmp r0, 0 |
| if (r0 == 0) {
0x00079ac2 beq 0x79b2e | goto label_41;
| }
0x00079ac4 cmp.w r8, 0 |
| if (r8 != 0) {
0x00079ac8 beq 0x79ad8 |
| label_6:
0x00079aca mov r1, r8 | r1 = r8;
0x00079acc mov r0, r4 | r0 = r4;
0x00079ace bl 0x159dc | fcn_000159dc (r0, r1);
0x00079ad2 cmp.w sb, 0 |
| if (sb == 0) {
0x00079ad6 beq 0x79b3e | goto label_42;
| }
| }
| label_7:
0x00079ad8 ldrb.w r3, [r4, 0x53] | r3 = *((r4 + 0x53));
0x00079adc cmp r3, 0 |
| if (r3 == 0) {
0x00079ade beq.w 0x79be6 | goto label_43;
| }
| label_8:
0x00079ae2 mov r0, r4 | r0 = r4;
0x00079ae4 movs r7, 7 | r7 = 7;
0x00079ae6 bl 0x1935c | fcn_0001935c (r0);
0x00079aea ldr r6, [r4, 0x10] | r6 = *((r4 + 0x10));
0x00079aec ldr r3, [sp, 0xc] | r3 = var_ch;
0x00079aee add r6, r3 | r6 += r3;
| label_9:
0x00079af0 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r3 != 0) {
0x00079af2 cbz r3, 0x79afa |
0x00079af4 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00079af6 bl 0x591b4 | fcn_000591b4 (r0, r1);
| }
0x00079afa ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00079afc ldrb r3, [r0, 9] | r3 = *((r0 + 9));
| if (r3 != 0) {
0x00079afe cbz r3, 0x79b0a |
0x00079b00 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00079b02 subs r3, 1 | r3--;
0x00079b04 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00079b06 cmp r3, 0 |
| if (r3 == 0) {
0x00079b08 beq 0x79bc2 | goto label_44;
| }
| }
0x00079b0a cmp r7, 0 |
0x00079b0c beq.w 0x799fa |
| } while (r7 == 0);
0x00079b10 b 0x799e4 | goto label_1;
| label_38:
0x00079b12 movs r1, 1 | r1 = 1;
0x00079b14 strb.w r1, [r3, 0x4c] | *((r3 + 0x4c)) = r1;
0x00079b18 b 0x79a70 | goto label_2;
| label_21:
0x00079b1a movs r3, 0 | r3 = 0;
0x00079b1c str r3, [sp, 0x10] | var_10h = r3;
0x00079b1e b 0x7992e | goto label_3;
| label_20:
0x00079b20 bl 0x12464 | fcn_00012464 (r0);
0x00079b24 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00079b26 cmp r0, 0 |
| if (r0 == 0) {
0x00079b28 beq.w 0x7991a | goto label_4;
| }
0x00079b2c b 0x79912 | goto label_5;
| label_41:
0x00079b2e ldr.w sb, [sp, 0x28] | sb = var_28h;
0x00079b32 cmp.w r8, 0 |
| if (r8 != 0) {
0x00079b36 bne 0x79aca | goto label_6;
| }
0x00079b38 cmp.w sb, 0 |
| if (sb != 0) {
0x00079b3c bne 0x79ad8 | goto label_7;
| }
| label_42:
0x00079b3e mov r1, r5 | r1 = r5;
0x00079b40 mov r0, r4 | r0 = r4;
0x00079b42 bl 0x830c0 | fcn_000830c0 (r0, r1, r2);
0x00079b46 ldrb.w r3, [r4, 0x53] | r3 = *((r4 + 0x53));
0x00079b4a cmp r3, 0 |
| if (r3 != 0) {
0x00079b4c bne 0x79ae2 | goto label_8;
| }
| label_15:
0x00079b4e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00079b50 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00079b52 add r3, r2 | r3 += r2;
0x00079b54 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00079b56 ldrh.w r3, [r2, 0x4e] | r3 = *((r2 + 0x4e));
0x00079b5a orr r3, r3, 1 | r3 |= 1;
0x00079b5e strh.w r3, [r2, 0x4e] | *((r2 + 0x4e)) = r3;
0x00079b62 b 0x79af0 | goto label_9;
| label_26:
0x00079b64 ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x00079b66 lsls r1, r1, 0x19 | r1 <<= 0x19;
| if (r1 < r1) {
0x00079b68 bmi.w 0x7996c | goto label_10;
| }
0x00079b6c and r1, r2, 3 | r1 = r2 & 3;
0x00079b70 ldr r2, [pc, 0xe0] |
0x00079b72 cmp r1, 1 |
0x00079b74 mov r3, r5 | r3 = r5;
0x00079b76 it lo |
| if (r1 >= 1) {
0x00079b78 movlo r1, 1 | r1 = 1;
| }
0x00079b7a mov r0, r4 | r0 = r4;
0x00079b7c add r2, pc |
0x00079b7e strb.w r1, [r4, 0x50] | *((r4 + 0x50)) = r1;
0x00079b82 add.w r2, r2, 0x358 | r2 = 0xf3b2c;
0x00079b86 bl 0x1f120 | fcn_0001f120 (r0, r1, r2, r3);
0x00079b8a ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00079b8c ldrb.w r1, [r4, 0x50] | r1 = *((r4 + 0x50));
0x00079b90 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00079b92 b 0x79a3a | goto label_11;
| if (r1 != 1) {
| label_36:
0x00079b94 bne.w 0x79a54 | goto label_12;
| }
0x00079b98 movw r1, 0xf830 |
0x00079b9c movt r1, 0xffff | r1 = 0xfffff830;
0x00079ba0 b 0x79a54 | goto label_12;
| label_39:
0x00079ba2 ldr r3, [sp, 8] | r3 = var_8h;
0x00079ba4 ldr r1, [r3] | r1 = *(r3);
| if (r1 != 0) {
0x00079ba6 cbz r1, 0x79bae |
0x00079ba8 mov r0, r4 | r0 = r4;
0x00079baa bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00079bae ldr r1, [pc, 0xa8] |
0x00079bb0 add r1, pc | r1 = 0xf380e;
| label_27:
0x00079bb2 mov r0, r4 | r0 = r4;
0x00079bb4 movs r7, 1 | r7 = 1;
0x00079bb6 bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x00079bba ldr r3, [sp, 8] | r3 = var_8h;
0x00079bbc str r0, [r3] | *(r3) = r0;
0x00079bbe b 0x79af0 | goto label_9;
| label_33:
0x00079bc0 mov r7, fp | r7 = fp;
| label_44:
0x00079bc2 bl 0x95d0 | fcn_000095d0 (r0);
0x00079bc6 cmp r7, 0 |
| if (r7 == 0) {
0x00079bc8 beq.w 0x799fa | goto label_13;
| }
0x00079bcc b 0x799e4 | goto label_1;
| label_34:
0x00079bce mov r0, r4 | r0 = r4;
0x00079bd0 bl 0x101ec | fcn_000101ec (r0);
0x00079bd4 b 0x799f2 | goto label_14;
| label_19:
0x00079bd6 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x00079bd8 ldrh.w r3, [r2, 0x4e] | r3 = *((r2 + 0x4e));
0x00079bdc orr r3, r3, 1 | r3 |= 1;
0x00079be0 strh.w r3, [r2, 0x4e] | *((r2 + 0x4e)) = r3;
0x00079be4 b 0x799fa | goto label_13;
| label_43:
0x00079be6 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00079be8 lsls r3, r3, 4 | r3 <<= 4;
| if (r3 < r3) {
0x00079bea bmi 0x79b4e | goto label_15;
| }
0x00079bec mov r7, sb | r7 = sb;
0x00079bee b 0x79af0 | goto label_9;
| label_40:
0x00079bf0 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00079bf2 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x00079bf6 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x00079bf8 b 0x79a84 | goto label_16;
| label_29:
0x00079bfa ldr r7, [pc, 0x60] |
0x00079bfc add r7, pc | r7 = 0xf385e;
0x00079bfe b 0x799b8 | goto label_17;
| label_30:
0x00079c00 ldr r7, [pc, 0x5c] |
0x00079c02 add r7, pc | r7 = 0xf3866;
0x00079c04 b 0x799b8 | goto label_17;
| label_28:
0x00079c06 ldr r7, [pc, 0x5c] |
0x00079c08 add r7, pc | r7 = 0xf3872;
0x00079c0a b 0x799b8 | goto label_17;
| label_37:
0x00079c0c mvn r1, 0x80000000 | r1 = ~0x80000000;
0x00079c10 b 0x79a54 | goto label_12;
| label_31:
0x00079c12 ldr r7, [pc, 0x54] |
0x00079c14 add r7, pc | r7 = 0xf3882;
0x00079c16 b 0x799b8 | goto label_17;
| label_32:
0x00079c18 ldr r7, [pc, 0x50] |
0x00079c1a add r7, pc | r7 = 0xf388a;
0x00079c1c b 0x799b8 | goto label_17;
| label_35:
0x00079c1e blx 0x7e8c | fcn_00007e8c ();
0x00079c22 nop |
0x00079c24 add r4, r0 | r4 += r0;
0x00079c26 movs r5, r0 | r5 = r0;
0x00079c28 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00079c2a movs r0, r0 |
0x00079c2c subs r2, 0x18 | r2 -= 0x18;
0x00079c2e movs r3, r0 | r3 = r0;
0x00079c30 tst r4, r3 |
0x00079c32 movs r3, r0 | r3 = r0;
0x00079c34 cmn r0, r4 |
0x00079c36 movs r3, r0 | r3 = r0;
0x00079c38 ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
0x00079c3a movs r3, r0 | r3 = r0;
0x00079c3c ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00079c3e movs r3, r0 | r3 = r0;
0x00079c40 cmp r3, 0xd4 |
0x00079c42 movs r5, r0 | r5 = r0;
0x00079c44 cmp r4, r1 |
0x00079c46 movs r5, r0 | r5 = r0;
0x00079c48 lsls r2, r7 | r2 <<= r7;
0x00079c4a movs r3, r0 | r3 = r0;
0x00079c4c str r4, [r3, 0x7c] | *((r3 + 0x7c)) = r4;
0x00079c4e movs r3, r0 | r3 = r0;
0x00079c50 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x82b2c */
| #include <stdint.h>
|
; (fcn) fcn.00082b2c () | void fcn_00082b2c (int16_t arg1, int16_t arg3) {
| r0 = arg1;
| r2 = arg3;
| if (? >= ?) {
0x00082b2c andlo lr, r2, 208, 18 | lr = r2 & (208 18);
| }
0x00082b30 push {r4, r5, r6, lr} |
0x00082b32 mov r4, r0 | r4 = r0;
0x00082b34 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00082b36 adds r3, 1 | r3++;
0x00082b38 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00082b3c strd r3, r2, [r4, 8] | __asm ("strd r3, r2, [r4, 8]");
0x00082b40 blx 0x809c | r0 = fcn_0000809c ();
0x00082b44 cmp r0, 0x64 |
0x00082b46 it eq |
| if (r0 != 0x64) {
0x00082b48 moveq r5, 0 | r5 = 0;
| }
| if (r0 != 0x64) {
0x00082b4a beq 0x82b70 |
0x00082b4c movs r6, 0 | r6 = 0;
0x00082b4e ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00082b50 blx 0x8484 | fcn_00008484 ();
0x00082b54 str r6, [r4, 4] | *((r4 + 4)) = r6;
0x00082b56 mov r5, r0 | r5 = r0;
0x00082b58 mov r0, r6 | r0 = r6;
0x00082b5a blx 0x8484 | fcn_00008484 ();
0x00082b5e ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00082b60 str r6, [r4, 4] | *((r4 + 4)) = r6;
0x00082b62 blx 0x84f8 | fcn_000084f8 ();
0x00082b66 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00082b68 str r6, [r4, 0x10] | *((r4 + 0x10)) = r6;
0x00082b6a blx 0x84f8 | fcn_000084f8 ();
0x00082b6e str r6, [r4, 0x14] | *((r4 + 0x14)) = r6;
| }
0x00082b70 mov r0, r5 | r0 = r5;
0x00082b72 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x83ab4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00083ab4 () | void fcn_00083ab4 (int16_t arg_0h, int16_t arg_4h, int16_t arg_9h, int16_t arg_ah, int16_t arg_ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_3;
| int16_t var_4h_2;
| int16_t var_8h_3;
| int16_t var_ch_3;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h_2;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_48h;
| int16_t var_6ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00083ab4 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00083ab8 mov r7, r2 | r7 = r2;
0x00083aba ldr.w r2, [pc, 0x558] | r2 = *(0x00084014);
0x00083abe mov r8, r3 | r8 = r3;
0x00083ac0 mov r4, r1 | r4 = r1;
0x00083ac2 sub sp, 0x74 |
0x00083ac4 ldr.w r3, [pc, 0x550] |
0x00083ac8 mov r5, r0 | r5 = r0;
0x00083aca add r2, pc | r2 += pc;
0x00083acc ldrb.w r1, [r1, 0x51] | r1 = *((r1 + 0x51));
0x00083ad0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00083ad2 ldr r3, [r3] | r3 = *(0x84018);
0x00083ad4 str r3, [sp, 0x6c] | var_6ch = r3;
0x00083ad6 mov.w r3, 0 | r3 = 0;
0x00083ada cmp r1, 0 |
| if (r1 == 0) {
0x00083adc beq.w 0x83c6a | goto label_9;
| }
0x00083ae0 ldr.w r3, [r4, 0xb0] | r3 = *((r4 + 0xb0));
0x00083ae4 cmp r3, 1 |
| if (r3 > 1) {
0x00083ae6 bgt 0x83b3a | goto label_10;
| }
0x00083ae8 ldr.w fp, [r4, 0x3c] | fp = *((r4 + 0x3c));
0x00083aec cmp.w r8, 0 |
| if (r8 == 0) {
0x00083af0 beq.w 0x83c84 | goto label_11;
| }
0x00083af4 mov r0, r8 | r0 = r8;
0x00083af6 blx 0x7ff4 | r0 = fcn_00007ff4 ();
0x00083afa cmp r0, 3 |
| if (r0 == 3) {
0x00083afc beq 0x83b56 | goto label_12;
| }
0x00083afe ldr r1, [r5] | r1 = *(r5);
| if (r1 != 0) {
0x00083b00 cbz r1, 0x83b08 |
0x00083b02 mov r0, r4 | r0 = r4;
0x00083b04 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00083b08 ldr.w r1, [pc, 0x510] |
0x00083b0c movs r6, 1 | r6 = 1;
0x00083b0e mov r0, r4 | r0 = r4;
0x00083b10 add r1, pc | r1 = 0x107b30;
0x00083b12 bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x00083b16 str r0, [r5] | *(r5) = r0;
| do {
| label_0:
0x00083b18 ldr.w r2, [pc, 0x504] |
0x00083b1c ldr.w r3, [pc, 0x4f8] | r3 = *(0x84018);
0x00083b20 add r2, pc | r2 = 0x107b44;
0x00083b22 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00083b24 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00083b26 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00083b28 eors r2, r3 | r2 ^= r3;
0x00083b2a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00083b2e bne.w 0x83eca | goto label_13;
| }
0x00083b32 mov r0, r6 | r0 = r6;
0x00083b34 add sp, 0x74 |
0x00083b36 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x00083b3a ldr r1, [r0] | r1 = *(r0);
| if (r1 != 0) {
0x00083b3c cbz r1, 0x83b44 |
0x00083b3e mov r0, r4 | r0 = r4;
0x00083b40 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00083b44 ldr.w r1, [pc, 0x4dc] |
0x00083b48 mov r0, r4 | r0 = r4;
0x00083b4a movs r6, 1 | r6 = 1;
0x00083b4c add r1, pc | r1 = 0x107b74;
0x00083b4e bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x00083b52 str r0, [r5] | *(r5) = r0;
0x00083b54 b 0x83b18 |
| } while (1);
| label_12:
0x00083b56 mov r0, r8 | r0 = r8;
0x00083b58 blx 0x8508 | fcn_00008508 ();
0x00083b5c ldr r2, [r4, 0x3c] | r2 = *((r4 + 0x3c));
0x00083b5e mov r3, r0 | r3 = r0;
0x00083b60 bic r2, r2, 1 | r2 = BIT_MASK (r2, 1);
0x00083b64 orr r2, r2, 6 | r2 |= 6;
0x00083b68 str r2, [r4, 0x3c] | *((r4 + 0x3c)) = r2;
| do {
0x00083b6a ldrb.w r1, [r4, 0x5a] | r1 = *((r4 + 0x5a));
0x00083b6e lsls r6, r7, 4 | r6 = r7 << 4;
0x00083b70 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00083b72 mov.w sl, 0 | sl = 0;
0x00083b76 strb.w sl, [r4, 0x5a] | *((r4 + 0x5a)) = sl;
0x00083b7a str r1, [sp, 0x10] | var_10h = r1;
0x00083b7c ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x00083b7e ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00083b80 str r6, [sp, 0x1c] | var_1ch = r6;
0x00083b82 mov r7, r1 | r7 = r1;
0x00083b84 str r1, [sp, 0x18] | var_18h_2 = r1;
0x00083b86 adds r1, r2, r6 | r1 = r2 + r6;
0x00083b88 ldr r2, [r2, r6] | r2 = *((r2 + r6));
0x00083b8a ldr.w sb, [r1, 4] | sb = *((r1 + 4));
0x00083b8e str r0, [sp, 0x14] | var_14h = r0;
0x00083b90 str r2, [sp, 0x24] | var_24h = r2;
0x00083b92 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00083b94 mov r1, r2 | r1 = r2;
0x00083b96 str r2, [sp, 4] | *(arg_4h) = r2;
0x00083b98 bic r2, r0, 0x10000000 | r2 = BIT_MASK (r0, 0x10000000);
0x00083b9c orr r1, r1, 6 | r1 |= 6;
0x00083ba0 bic r2, r2, 0x5000 | r2 = BIT_MASK (r2, 0x5000);
0x00083ba4 mov r0, r4 | r0 = r4;
0x00083ba6 orr r2, r2, 0x200 | r2 |= 0x200;
0x00083baa orr r2, r2, 1 | r2 |= 1;
0x00083bae str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
0x00083bb0 ldr.w r2, [sb, 4] | r2 = *((sb + 4));
0x00083bb4 ldr r2, [r2] | r2 = *(r2);
0x00083bb6 str r1, [r4, 0x18] | *((r4 + 0x18)) = r1;
0x00083bb8 bic r1, r7, 1 | r1 = BIT_MASK (r7, 1);
0x00083bbc ldr r7, [r4, 0x68] | r7 = *((r4 + 0x68));
0x00083bbe str r1, [r4, 0x24] | *((r4 + 0x24)) = r1;
0x00083bc0 mov r1, r5 | r1 = r5;
0x00083bc2 ldrb r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00083bc4 str r7, [sp, 8] | var_8h_3 = r7;
0x00083bc6 ldr r7, [r4, 0x6c] | r7 = *((r4 + 0x6c));
0x00083bc8 str r2, [sp, 0x20] | var_20h = r2;
0x00083bca ldr.w r2, [pc, 0x45c] | r2 = *(0x00084028);
0x00083bce str r7, [sp, 0xc] | *(arg_ch) = r7;
0x00083bd0 ldr r7, [r4, 0x14] | r7 = *((r4 + 0x14));
0x00083bd2 add r2, pc | r2 += pc;
0x00083bd4 str r7, [sp, 0x28] | var_28h = r7;
0x00083bd6 bl 0x83a40 | fcn_00083a40 (r0, r1);
0x00083bda str.w fp, [r4, 0x3c] | __asm ("str.w fp, [r4, 0x3c]");
0x00083bde mov r6, r0 | r6 = r0;
0x00083be0 cmp r0, 0 |
| if (r0 != 0) {
0x00083be2 bne.w 0x83e3c | goto label_14;
| }
0x00083be6 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00083be8 add.w sl, r3, r7, lsl 4 | sl = r3 + (r7 << 4);
0x00083bec ldr.w fp, [sl, 4] | fp = *((sl + 4));
0x00083bf0 cmp.w r8, 0 |
| if (r8 != 0) {
0x00083bf4 beq 0x83c2c |
0x00083bf6 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00083bfa vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00083bfe ldr r3, [r3] | r3 = *(r3);
0x00083c00 ldr r0, [r3, 0x3c] | r0 = *((r3 + 0x3c));
0x00083c02 vstr d16, [sp, 0x38] | __asm ("vstr d16, [sp, 0x38]");
0x00083c06 ldr r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x00083c08 cbz r3, 0x83c24 |
0x00083c0a ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00083c0c add r1, sp, 0x38 | r1 += var_38h;
0x00083c0e blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
0x00083c10 cmp r0, 0 |
| if (r0 != 0) {
0x00083c12 bne.w 0x83dd8 | goto label_15;
| }
0x00083c16 ldrd r2, r3, [sp, 0x38] | __asm ("ldrd r2, r3, [var_38h]");
0x00083c1a cmp r2, 1 |
0x00083c1c sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x00083c20 bge.w 0x83dd8 | goto label_15;
| }
| }
0x00083c24 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00083c26 orr r3, r3, 8 | r3 |= 8;
0x00083c2a str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| }
0x00083c2c ldrb.w r3, [sb, 9] | r3 = *((sb + 9));
| if (r3 == 0) {
0x00083c30 cbz r3, 0x83c8a | goto label_16;
| }
0x00083c32 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x00083c36 ldrb.w r2, [sb, 0xa] | r2 = *((sb + 0xa));
0x00083c3a adds r1, r3, 1 | r1 = r3 + 1;
0x00083c3c str.w r1, [sb, 0xc] | __asm ("str.w r1, [sb, 0xc]");
0x00083c40 cmp r2, 0 |
| if (r2 != 0) {
0x00083c42 bne.w 0x83e70 | goto label_17;
| }
0x00083c46 mov r0, sb | r0 = sb;
0x00083c48 bl 0x12464 | fcn_00012464 (r0);
0x00083c4c ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00083c50 ldrb.w r2, [sb, 9] | r2 = *((sb + 9));
0x00083c54 ldrd r0, r1, [r3, 0x24] | __asm ("ldrd r0, r1, [r3, 0x24]");
0x00083c58 ldrb r3, [r3, 0x16] | r3 = *((r3 + 0x16));
0x00083c5a subs r1, r0, r1 | r1 = r0 - r1;
0x00083c5c mov r7, r1 | r7 = r1;
0x00083c5e str r3, [sp, 0x2c] | var_2ch = r3;
| if (r2 == 0) {
0x00083c60 cbz r2, 0x83c9a | goto label_1;
| }
0x00083c62 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x00083c66 subs r3, 1 | r3--;
0x00083c68 b 0x83e80 | goto label_18;
| label_9:
0x00083c6a ldr r1, [r0] | r1 = *(r0);
| if (r1 != 0) {
0x00083c6c cbz r1, 0x83c74 |
0x00083c6e mov r0, r4 | r0 = r4;
0x00083c70 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00083c74 ldr r1, [pc, 0x3b4] |
0x00083c76 mov r0, r4 | r0 = r4;
0x00083c78 movs r6, 1 | r6 = 1;
0x00083c7a add r1, pc | r1 = 0x107caa;
0x00083c7c bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x00083c80 str r0, [r5] | *(r5) = r0;
0x00083c82 b 0x83b18 | goto label_0;
| label_11:
0x00083c84 ldr r3, [pc, 0x3a8] |
0x00083c86 add r3, pc | r3 = 0x107cba;
0x00083c88 b 0x83b6a |
| } while (1);
| label_16:
0x00083c8a ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00083c8e ldrd r1, r2, [r3, 0x24] | __asm ("ldrd r1, r2, [r3, 0x24]");
0x00083c92 ldrb r3, [r3, 0x16] | r3 = *((r3 + 0x16));
0x00083c94 subs r2, r1, r2 | r2 = r1 - r2;
0x00083c96 mov r7, r2 | r7 = r2;
0x00083c98 str r3, [sp, 0x2c] | var_2ch = r3;
| label_1:
0x00083c9a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00083c9c mov r0, fp | r0 = fp;
0x00083c9e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00083ca0 add r3, r2 | r3 += r2;
0x00083ca2 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00083ca4 ldr r1, [r3, 0x50] | r1 = *((r3 + 0x50));
0x00083ca6 bl 0x18650 | fcn_00018650 (r0, r1);
0x00083caa movs r1, 0 | r1 = 0;
0x00083cac mov r0, sb | r0 = sb;
0x00083cae bl 0x188ac | r0 = fcn_000188ac (r0, r1);
0x00083cb2 mov r1, r0 | r1 = r0;
0x00083cb4 mov r0, fp | r0 = fp;
0x00083cb6 bl 0x188ac | fcn_000188ac (r0, r1);
0x00083cba movs r1, 0x21 | r1 = 0x21;
0x00083cbc mov r0, fp | r0 = fp;
0x00083cbe bl 0x19680 | fcn_00019680 (r0, r1);
0x00083cc2 ldr r2, [pc, 0x370] |
0x00083cc4 mov r1, r5 | r1 = r5;
0x00083cc6 mov r0, r4 | r0 = r4;
0x00083cc8 add r2, pc | r2 = 0x107d02;
0x00083cca bl 0x83964 | r0 = fcn_00083964 (r0, r1, r2);
0x00083cce mov r6, r0 | r6 = r0;
0x00083cd0 cmp r0, 0 |
| if (r0 != 0) {
0x00083cd2 bne.w 0x83df0 | goto label_3;
| }
0x00083cd6 clz r1, r8 | r1 &= r8;
0x00083cda mov r2, r0 | r2 = r0;
0x00083cdc lsrs r1, r1, 5 | r1 >>= 5;
0x00083cde mov r0, sb | r0 = sb;
0x00083ce0 lsls r1, r1, 1 | r1 <<= 1;
0x00083ce2 bl 0x54990 | r0 = fcn_00054990 (r0, r1, r2, r3, r4, r5, r6);
0x00083ce6 mov r6, r0 | r6 = r0;
0x00083ce8 cmp r0, 0 |
| if (r0 != 0) {
0x00083cea bne.w 0x83df0 | goto label_3;
| }
0x00083cee ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00083cf2 ldr r2, [r3] | r2 = *(r3);
0x00083cf4 ldr r1, [r3, 0x24] | r1 = *((r3 + 0x24));
0x00083cf6 movs r3, 0 | r3 = 0;
0x00083cf8 ldrb r2, [r2, 5] | r2 = *((r2 + 5));
0x00083cfa cmp r2, 5 |
0x00083cfc ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00083cfe it eq |
| if (r2 != 5) {
0x00083d00 streq r0, [r4, 0x60] | *((r4 + 0x60)) = r0;
| }
0x00083d02 mov r0, fp | r0 = fp;
0x00083d04 cmp r7, r2 |
0x00083d06 it lt |
| if (r7 >= r2) {
0x00083d08 movlt r7, r2 | r7 = r2;
| }
0x00083d0a mov r2, r7 | r2 = r7;
0x00083d0c bl 0x1f048 | r0 = fcn_0001f048 (r0, r1, r2, r3);
0x00083d10 cmp r0, 0 |
| if (r0 != 0) {
0x00083d12 bne.w 0x83ea4 | goto label_19;
| }
0x00083d16 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00083d18 cmp r3, 0 |
| if (r3 == 0) {
0x00083d1a beq.w 0x83e92 | goto label_20;
| }
| label_2:
0x00083d1e ldrb.w r3, [r4, 0x53] | r3 = *((r4 + 0x53));
0x00083d22 cmp r3, 0 |
| if (r3 != 0) {
0x00083d24 bne.w 0x83ea4 | goto label_19;
| }
0x00083d28 ldrsb.w r1, [r4, 0x56] | r1 = *((r4 + 0x56));
0x00083d2c cmp r1, 0 |
| if (r1 < 0) {
0x00083d2e blt.w 0x83ea8 | goto label_21;
| }
| label_4:
0x00083d32 mov r0, fp | r0 = fp;
0x00083d34 bl 0x183d8 | fcn_000183d8 (r0, r1);
0x00083d38 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00083d3a mov r1, r5 | r1 = r5;
0x00083d3c ldr r2, [pc, 0x2f8] |
0x00083d3e mov r0, r4 | r0 = r4;
0x00083d40 strb.w r3, [r4, 0xa8] | *((r4 + 0xa8)) = r3;
0x00083d44 add r2, pc | r2 = 0x107d80;
0x00083d46 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00083d48 bl 0x83a40 | r0 = fcn_00083a40 (r0, r1);
0x00083d4c mov r6, r0 | r6 = r0;
0x00083d4e cmp r0, 0 |
| if (r0 != 0) {
0x00083d50 bne 0x83df0 | goto label_3;
| }
0x00083d52 ldr r2, [pc, 0x2e8] |
0x00083d54 mov r1, r5 | r1 = r5;
0x00083d56 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00083d58 mov r0, r4 | r0 = r4;
0x00083d5a add r2, pc | r2 = 0x107d9c;
0x00083d5c bl 0x83a40 | r0 = fcn_00083a40 (r0, r1);
0x00083d60 mov r6, r0 | r6 = r0;
0x00083d62 cmp r0, 0 |
| if (r0 != 0) {
0x00083d64 bne 0x83df0 | goto label_3;
| }
0x00083d66 ldr r2, [pc, 0x2d8] |
0x00083d68 mov r1, r5 | r1 = r5;
0x00083d6a ldr r3, [sp, 0x24] | r3 = var_24h;
0x00083d6c strb.w r0, [r4, 0xa8] | *((r4 + 0xa8)) = r0;
0x00083d70 mov r0, r4 | r0 = r4;
0x00083d72 add r2, pc | r2 = 0x107db8;
0x00083d74 bl 0x83a40 | fcn_00083a40 (r0, r1);
0x00083d78 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00083d7a mov r6, r0 | r6 = r0;
0x00083d7c bic r3, r3, 4 | r3 = BIT_MASK (r3, 4);
0x00083d80 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x00083d82 cmp r0, 0 |
| if (r0 != 0) {
0x00083d84 bne 0x83df0 | goto label_3;
| }
0x00083d86 ldr r2, [pc, 0x2bc] |
0x00083d88 mov r1, r5 | r1 = r5;
0x00083d8a ldr r3, [sp, 0x24] | r3 = var_24h;
0x00083d8c mov r0, r4 | r0 = r4;
0x00083d8e add r2, pc | r2 = 0x107dd8;
0x00083d90 bl 0x83a40 | r0 = fcn_00083a40 (r0, r1);
0x00083d94 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00083d96 cbnz r0, 0x83df0 | goto label_3;
| }
0x00083d98 ldr r2, [pc, 0x2ac] |
0x00083d9a add r3, sp, 0x34 | r3 += var_34h;
0x00083d9c str r7, [sp, 0x1c] | var_1ch = r7;
0x00083d9e movs r6, 1 | r6 = 1;
0x00083da0 str.w r8, [sp, 0x20] | __asm ("str.w r8, [var_20h]");
0x00083da4 mov r8, r3 | r8 = r3;
0x00083da6 add r2, pc | r2 = 0x107df2;
0x00083da8 addw r5, r2, 0x9ec | __asm ("addw r5, r2, aav.0x000000ff");
0x00083dac addw r2, r2, 0x9f4 | __asm ("addw r2, r2, aav.0x000000ff");
0x00083db0 mov r7, r2 | r7 = r2;
| do {
0x00083db2 mov r2, r8 | r2 = r8;
0x00083db4 mov r1, r6 | r1 = r6;
0x00083db6 mov r0, sb | r0 = sb;
0x00083db8 bl 0x185fc | fcn_000185fc (r0, r1, r2);
0x00083dbc ldrb r0, [r5, 1] | r0 = *((r5 + 1));
0x00083dbe mov r1, r6 | r1 = r6;
0x00083dc0 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00083dc2 add r2, r0 | r2 += r0;
0x00083dc4 mov r0, fp | r0 = fp;
0x00083dc6 bl 0x55070 | r0 = fcn_00055070 (r0, r1, r2);
0x00083dca cmp r0, 0 |
| if (r0 != 0) {
0x00083dcc bne 0x83ec6 | goto label_22;
| }
0x00083dce cmp r7, r5 |
| if (r7 == r5) {
0x00083dd0 beq 0x83eb2 | goto label_23;
| }
0x00083dd2 ldrb r6, [r5, 2]! | r6 = *((r5 += 2));
0x00083dd6 b 0x83db2 |
| } while (1);
| label_15:
0x00083dd8 ldr r1, [r5] | r1 = *(r5);
| if (r1 != 0) {
0x00083dda cbz r1, 0x83de2 |
0x00083ddc mov r0, r4 | r0 = r4;
0x00083dde bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00083de2 ldr r1, [pc, 0x268] |
0x00083de4 movs r6, 1 | r6 = 1;
0x00083de6 mov r0, r4 | r0 = r4;
0x00083de8 add r1, pc | r1 = 0x107e3a;
0x00083dea bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x00083dee str r0, [r5] | *(r5) = r0;
| label_3:
0x00083df0 ldr r3, [sp, 4] | r3 = *(arg_4h);
0x00083df2 movs r5, 0 | r5 = 0;
0x00083df4 mov r2, r5 | r2 = r5;
0x00083df6 mov.w r1, -1 | r1 = -1;
0x00083dfa mov r0, sb | r0 = sb;
0x00083dfc strb.w r5, [r4, 0xa8] | *((r4 + 0xa8)) = r5;
0x00083e00 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x00083e02 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00083e04 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x00083e06 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00083e08 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00083e0a ldr r3, [sp, 8] | r3 = var_8h_3;
0x00083e0c str r3, [r4, 0x68] | *((r4 + 0x68)) = r3;
0x00083e0e ldr r3, [sp, 0xc] | r3 = *(arg_ch);
0x00083e10 str r3, [r4, 0x6c] | *((r4 + 0x6c)) = r3;
0x00083e12 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00083e14 strb.w r3, [r4, 0x5a] | *((r4 + 0x5a)) = r3;
0x00083e18 movs r3, 1 | r3 = 1;
0x00083e1a bl 0x1f048 | fcn_0001f048 (r0, r1, r2, r3);
0x00083e1e movs r3, 1 | r3 = 1;
0x00083e20 strb.w r3, [r4, 0x51] | *((r4 + 0x51)) = r3;
0x00083e24 ldr.w r0, [sl, 4] | r0 = *((sl + 4));
0x00083e28 bl 0x59ac0 | fcn_00059ac0 (r0);
0x00083e2c str.w r5, [sl, 4] | __asm ("str.w r5, [sl, 4]");
0x00083e30 str.w r5, [sl, 0xc] | __asm ("str.w r5, [sl, 0xc]");
| do {
0x00083e34 mov r0, r4 | r0 = r4;
0x00083e36 bl 0x1935c | fcn_0001935c (r0);
0x00083e3a b 0x83b18 | goto label_0;
| label_14:
0x00083e3c ldr r3, [sp, 4] | r3 = *(arg_4h);
0x00083e3e mov r0, sb | r0 = sb;
0x00083e40 mov r2, sl | r2 = sl;
0x00083e42 mov.w r1, -1 | r1 = -1;
0x00083e46 strb.w sl, [r4, 0xa8] | *((r4 + 0xa8)) = sl;
0x00083e4a str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x00083e4c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00083e4e str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x00083e50 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00083e52 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00083e54 ldr r3, [sp, 8] | r3 = var_8h_3;
0x00083e56 str r3, [r4, 0x68] | *((r4 + 0x68)) = r3;
0x00083e58 ldr r3, [sp, 0xc] | r3 = *(arg_ch);
0x00083e5a str r3, [r4, 0x6c] | *((r4 + 0x6c)) = r3;
0x00083e5c ldr r3, [sp, 0x10] | r3 = var_10h;
0x00083e5e strb.w r3, [r4, 0x5a] | *((r4 + 0x5a)) = r3;
0x00083e62 movs r3, 1 | r3 = 1;
0x00083e64 bl 0x1f048 | fcn_0001f048 (r0, r1, r2, r3);
0x00083e68 movs r3, 1 | r3 = 1;
0x00083e6a strb.w r3, [r4, 0x51] | *((r4 + 0x51)) = r3;
0x00083e6e b 0x83e34 |
| } while (1);
| label_17:
0x00083e70 ldr.w r2, [sb, 4] | r2 = *((sb + 4));
0x00083e74 ldrd r0, r1, [r2, 0x24] | __asm ("ldrd r0, r1, [r2, 0x24]");
0x00083e78 ldrb r2, [r2, 0x16] | r2 = *((r2 + 0x16));
0x00083e7a subs r1, r0, r1 | r1 = r0 - r1;
0x00083e7c mov r7, r1 | r7 = r1;
0x00083e7e str r2, [sp, 0x2c] | var_2ch = r2;
| label_18:
0x00083e80 str.w r3, [sb, 0xc] | __asm ("str.w r3, [sb, 0xc]");
0x00083e84 cmp r3, 0 |
| if (r3 != 0) {
0x00083e86 bne.w 0x83c9a | goto label_1;
| }
0x00083e8a mov r0, sb | r0 = sb;
0x00083e8c bl 0x95d0 | fcn_000095d0 (r0);
0x00083e90 b 0x83c9a | goto label_1;
| label_20:
0x00083e92 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00083e94 mov r2, r7 | r2 = r7;
0x00083e96 ldr r1, [r4, 0x60] | r1 = *((r4 + 0x60));
0x00083e98 mov r0, fp | r0 = fp;
0x00083e9a bl 0x1f048 | r0 = fcn_0001f048 (r0, r1, r2, r3);
0x00083e9e cmp r0, 0 |
| if (r0 == 0) {
0x00083ea0 beq.w 0x83d1e | goto label_2;
| }
| label_19:
0x00083ea4 movs r6, 7 | r6 = 7;
0x00083ea6 b 0x83df0 | goto label_3;
| label_21:
0x00083ea8 mov r0, sb | r0 = sb;
0x00083eaa bl 0x180b0 | r0 = fcn_000180b0 (r0);
0x00083eae mov r1, r0 | r1 = r0;
0x00083eb0 b 0x83d32 | goto label_4;
| label_23:
0x00083eb2 ldrd r7, r8, [sp, 0x1c] | __asm ("ldrd r7, r8, [var_1ch]");
0x00083eb6 cmp.w r8, 0 |
| if (r8 != 0) {
0x00083eba beq 0x83ece |
0x00083ebc mov r0, fp | r0 = fp;
0x00083ebe bl 0x591b4 | r0 = fcn_000591b4 (r0, r1);
0x00083ec2 mov r6, r0 | r6 = r0;
0x00083ec4 b 0x83df0 | goto label_3;
| label_22:
0x00083ec6 mov r6, r0 | r6 = r0;
0x00083ec8 b 0x83df0 | goto label_3;
| label_13:
0x00083eca blx 0x7e8c | fcn_00007e8c ();
| }
0x00083ece ldrb.w r3, [sb, 9] | r3 = *((sb + 9));
| if (r3 != 0) {
0x00083ed2 cbz r3, 0x83eea |
0x00083ed4 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x00083ed8 adds r3, 1 | r3++;
0x00083eda str.w r3, [sb, 0xc] | __asm ("str.w r3, [sb, 0xc]");
0x00083ede ldrb.w r3, [sb, 0xa] | r3 = *((sb + 0xa));
| if (r3 != 0) {
0x00083ee2 cbnz r3, 0x83eea | goto label_24;
| }
0x00083ee4 mov r0, sb | r0 = sb;
0x00083ee6 bl 0x12464 | fcn_00012464 (r0);
| }
| label_24:
0x00083eea ldrb.w r3, [fp, 9] | r3 = *(arg_9h);
| if (r3 != 0) {
0x00083eee cbz r3, 0x83f06 |
0x00083ef0 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x00083ef4 adds r3, 1 | r3++;
0x00083ef6 str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
0x00083efa ldrb.w r3, [fp, 0xa] | r3 = *(arg_ah);
| if (r3 != 0) {
0x00083efe cbnz r3, 0x83f06 | goto label_25;
| }
0x00083f00 mov r0, fp | r0 = fp;
0x00083f02 bl 0x12464 | fcn_00012464 (r0);
| }
| label_25:
0x00083f06 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00083f0a ldr r3, [r3] | r3 = *(r3);
0x00083f0c ldr r0, [r3, 0x3c] | r0 = *((r3 + 0x3c));
0x00083f0e ldr r3, [r0] | r3 = *(r0);
0x00083f10 cmp r3, 0 |
| if (r3 == 0) {
0x00083f12 beq 0x83fe8 | goto label_26;
| }
0x00083f14 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x00083f16 add.w r8, sp, 0x38 | r8 += var_38h;
0x00083f1a ldr.w r5, [fp, 4] | r5 = *(arg_4h);
0x00083f1e mov r2, r8 | r2 = r8;
0x00083f20 movs r1, 0xb | r1 = 0xb;
0x00083f22 str r3, [sp, 0x1c] | var_1ch = r3;
0x00083f24 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00083f26 ldr r5, [r5, 0x30] | r5 = *((r5 + 0x30));
0x00083f28 asrs r6, r3, 0x1f | r6 = r3 >> 0x1f;
0x00083f2a umull ip, r3, r3, r5 | ip:r3 = r3 * r5;
0x00083f2e mla r3, r5, r6, r3 | __asm ("mla r3, r5, r6, r3");
0x00083f32 strd ip, r3, [sp, 0x38] | __asm ("strd ip, r3, [sp, 0x38]");
0x00083f36 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00083f38 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x00083f3a cmp r0, 0xc |
0x00083f3c mov r6, r0 | r6 = r0;
| if (r0 != 0xc) {
0x00083f3e beq 0x83f42 |
| if (r0 != 0) {
0x00083f40 cbnz r0, 0x83f7e | goto label_8;
| }
| }
| label_7:
0x00083f42 movs r2, 0x30 | r2 = 0x30;
0x00083f44 movs r1, 0 | r1 = 0;
0x00083f46 mov r0, r8 | r0 = r8;
0x00083f48 movs r5, 1 | r5 = 1;
0x00083f4a blx 0x8264 | fcn_00008264 ();
0x00083f4e ldr.w r3, [fp] | r3 = *(fp);
0x00083f52 mvn r1, 0x80000000 | r1 = ~0x80000000;
0x00083f54 asrs r0, r0 | r0 >>= r0;
0x00083f56 mov r0, r8 | r0 = r8;
0x00083f58 str.w sb, [sp, 0x3c] | __asm ("str.w sb, [var_3ch]");
0x00083f5c str r5, [sp, 0x48] | var_48h = r5;
0x00083f5e strd r3, fp, [sp, 0x4c] | __asm ("strd r3, fp, [arg_0hx4c]");
0x00083f62 blx 0x843c | fcn_0000843c ();
0x00083f66 mov r0, r8 | r0 = r8;
0x00083f68 blx 0x80a8 | r0 = fcn_000080a8 ();
0x00083f6c mov r6, r0 | r6 = r0;
0x00083f6e cmp r0, 0 |
| if (r0 != 0) {
0x00083f70 bne 0x83fee | goto label_27;
| }
0x00083f72 ldr.w r2, [sb, 4] | r2 = *((sb + 4));
0x00083f76 ldrh r3, [r2, 0x18] | r3 = *((r2 + 0x18));
0x00083f78 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x00083f7c strh r3, [r2, 0x18] | *((r2 + 0x18)) = r3;
| label_8:
0x00083f7e ldrb.w r3, [fp, 9] | r3 = *(arg_9h);
| if (r3 != 0) {
0x00083f82 cbz r3, 0x83f90 |
0x00083f84 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x00083f88 subs r3, 1 | r3--;
0x00083f8a str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
| if (r3 == 0) {
0x00083f8e cbz r3, 0x83fe0 | goto label_28;
| }
| }
| label_6:
0x00083f90 ldrb.w r3, [sb, 9] | r3 = *((sb + 9));
| if (r3 != 0) {
0x00083f94 cbz r3, 0x83fa2 |
0x00083f96 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x00083f9a subs r3, 1 | r3--;
0x00083f9c str.w r3, [sb, 0xc] | __asm ("str.w r3, [sb, 0xc]");
| if (r3 == 0) {
0x00083fa0 cbz r3, 0x83fd8 | goto label_29;
| }
| }
| label_5:
0x00083fa2 cmp r6, 0 |
| if (r6 != 0) {
0x00083fa4 bne.w 0x83df0 | goto label_3;
| }
0x00083fa8 mov r0, fp | r0 = fp;
0x00083faa bl 0x591b4 | r0 = fcn_000591b4 (r0, r1);
0x00083fae mov r6, r0 | r6 = r0;
0x00083fb0 cmp r0, 0 |
| if (r0 != 0) {
0x00083fb2 bne.w 0x83df0 | goto label_3;
| }
0x00083fb6 mov r0, fp | r0 = fp;
0x00083fb8 bl 0x180b0 | r0 = fcn_000180b0 (r0);
0x00083fbc mov r1, r0 | r1 = r0;
0x00083fbe mov r0, sb | r0 = sb;
0x00083fc0 bl 0x183d8 | fcn_000183d8 (r0, r1);
0x00083fc4 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00083fc8 mov r2, r7 | r2 = r7;
0x00083fca mov r0, sb | r0 = sb;
0x00083fcc ldr r1, [r3, 0x24] | r1 = *((r3 + 0x24));
0x00083fce movs r3, 1 | r3 = 1;
0x00083fd0 bl 0x1f048 | r0 = fcn_0001f048 (r0, r1, r2, r3);
0x00083fd4 mov r6, r0 | r6 = r0;
0x00083fd6 b 0x83df0 | goto label_3;
| label_29:
0x00083fd8 mov r0, sb | r0 = sb;
0x00083fda bl 0x95d0 | fcn_000095d0 (r0);
0x00083fde b 0x83fa2 | goto label_5;
| label_28:
0x00083fe0 mov r0, fp | r0 = fp;
0x00083fe2 bl 0x95d0 | fcn_000095d0 (r0);
0x00083fe6 b 0x83f90 | goto label_6;
| label_26:
0x00083fe8 add.w r8, sp, 0x38 | r8 += var_38h;
0x00083fec b 0x83f42 | goto label_7;
| label_27:
0x00083fee ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00083ff0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00083ff2 ldr r3, [r3] | r3 = *(r3);
0x00083ff4 ldrb r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00083ff6 cmp r2, 0 |
| if (r2 != 0) {
0x00083ff8 bne 0x83f7e | goto label_8;
| }
0x00083ffa ldr r2, [r3, 0x64] | r2 = *((r3 + 0x64));
0x00083ffc ldr r1, [r3, 0x58] | r1 = *((r3 + 0x58));
0x00083ffe adds r2, 1 | r2++;
0x00084000 str r2, [r3, 0x64] | *((r3 + 0x64)) = r2;
| if (r1 == 0) {
| do {
0x00084002 cbz r1, 0x8400a | goto label_30;
| }
0x00084004 str r5, [r1, 0x10] | *((r1 + 0x10)) = r5;
0x00084006 ldr r1, [r1, 0x2c] | r1 = *((r1 + 0x2c));
0x00084008 b 0x84002 |
| } while (1);
| label_30:
0x0008400a ldr.w r0, [r3, 0xd4] | r0 = *((r3 + 0xd4));
0x0008400e bl 0x157d4 | fcn_000157d4 (r0, r1);
0x00084012 b 0x83f7e | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x84120 */
| #include <stdint.h>
|
; (fcn) fcn.00084120 () | void fcn_00084120 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00084120 push {r4, r5, r6, lr} |
0x00084122 mov r4, r1 | r4 = r1;
0x00084124 ldrd r3, r1, [r1, 8] | __asm ("ldrd r3, r1, [r1, 8]");
0x00084128 mov r5, r0 | r5 = r0;
0x0008412a ldr r2, [r0, 0x3c] | r2 = *((r0 + 0x3c));
0x0008412c subs r3, 1 | r3--;
0x0008412e orrs r3, r1 | r3 |= r1;
0x00084130 ldr r1, [r4] | r1 = *(r4);
0x00084132 add.w r2, r2, -1 | r2 += -1;
0x00084136 it eq |
| if (r3 != r1) {
0x00084138 moveq r3, -1 | r3 = -1;
| }
0x0008413c str r2, [r0, 0x3c] | *((r0 + 0x3c)) = r2;
0x0008413e it eq |
| if (r3 != r1) {
0x00084140 streq r3, [r0, 0x1c] | *((r0 + 0x1c)) = r3;
| }
| if (r1 == 0) {
0x00084142 cbz r1, 0x841a0 | goto label_2;
| }
0x00084144 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00084146 subs r3, 1 | r3--;
0x00084148 str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
| if (r3 != 0) {
0x0008414a cbnz r3, 0x841a0 | goto label_2;
| }
0x0008414c bl 0x84120 | r0 = fcn_00084120 (r0, r1);
0x00084150 mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00084152 cbz r0, 0x841a0 | goto label_2;
| }
| label_0:
0x00084154 ldrd r3, r2, [r4, 8] | __asm ("ldrd r3, r2, [r4, 8]");
0x00084158 orrs r2, r3 | r2 |= r3;
| if (r2 == r3) {
0x0008415a beq 0x84196 | goto label_3;
| }
0x0008415c movw r2, 0x7eaf |
0x00084160 movt r2, 0x51d0 | r2 = 0x51d07eaf;
0x00084164 umull r1, r2, r2, r3 | r1:r2 = r2 * r3;
0x00084168 subs r1, r3, r2 | r1 = r3 - r2;
0x0008416a add.w r2, r2, r1, lsr 1 | r2 += (r1 >> 1);
0x0008416e lsrs r2, r2, 6 | r2 >>= 6;
0x00084170 add.w r1, r2, r2, lsl 1 | r1 = r2 + (r2 << 1);
0x00084174 add.w r2, r2, r1, lsl 5 | r2 += (r1 << 5);
0x00084178 subs r2, r3, r2 | r2 = r3 - r2;
0x0008417a add.w r3, r5, r2, lsl 2 | r3 = r5 + (r2 << 2);
0x0008417e ldr r3, [r3, 0x74] | r3 = *((r3 + 0x74));
0x00084180 cmp r4, r3 |
| if (r4 == r3) {
0x00084182 beq 0x841b2 | goto label_4;
| }
| do {
0x00084184 mov r5, r3 | r5 = r3;
0x00084186 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00084188 cmp r4, r3 |
0x0008418a bne 0x84184 |
| } while (r4 != r3);
0x0008418c adds r5, 0x1c | r5 += 0x1c;
| label_1:
0x0008418e ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x00084190 movs r3, 0 | r3 = 0;
0x00084192 str r2, [r5] | *(r5) = r2;
0x00084194 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_3:
0x00084196 mov r0, r4 | r0 = r4;
0x00084198 blx 0x84f8 | fcn_000084f8 ();
0x0008419c mov r0, r6 | r0 = r6;
0x0008419e pop {r4, r5, r6, pc} |
| label_2:
0x000841a0 ldr r6, [r4, 0x14] | r6 = *((r4 + 0x14));
0x000841a2 cmp r6, 0 |
| if (r6 == 0) {
0x000841a4 beq 0x84154 | goto label_0;
| }
0x000841a6 mov r1, r4 | r1 = r4;
0x000841a8 mov r0, r5 | r0 = r5;
0x000841aa bl 0x84084 | r0 = fcn_00084084 (r0, r1, r2);
0x000841ae mov r6, r0 | r6 = r0;
0x000841b0 b 0x84154 | goto label_0;
| label_4:
0x000841b2 adds r2, 0x1d | r2 += 0x1d;
0x000841b4 add.w r5, r5, r2, lsl 2 | r5 += (r2 << 2);
0x000841b8 b 0x8418e | 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/libsqlite3.so.0.8.6 @ 0x841bc */
| #include <stdint.h>
|
; (fcn) fcn.000841bc () | void fcn_000841bc (int16_t arg1) {
| r0 = arg1;
0x000841bc push {r3, r4, r5, r6, r7, lr} |
0x000841be mov r6, r0 | r6 = r0;
0x000841c0 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x000841c2 ldr r7, [r6] | r7 = *(r6);
| if (r0 == 0) {
0x000841c4 cbz r0, 0x841fa | goto label_0;
| }
0x000841c6 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000841c8 cmp r2, 0 |
| if (r2 <= 0) {
0x000841ca ble 0x841f2 | goto label_1;
| }
0x000841cc movs r4, 0 | r4 = 0;
| do {
0x000841ce add.w r3, r4, r4, lsl 1 | r3 = r4 + (r4 << 1);
0x000841d2 adds r4, 1 | r4++;
0x000841d4 add.w r3, r0, r3, lsl 3 | r3 = r0 + (r3 << 3);
0x000841d8 ldr r5, [r3, 0x10] | r5 = *((r3 + 0x10));
| if (r5 != 0) {
0x000841da cbz r5, 0x841ee |
0x000841dc ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
| if (r3 != 0) {
0x000841de cbz r3, 0x841e4 |
0x000841e0 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x000841e2 blx r3 | uint32_t (*r3)(uint32_t) (r0);
| }
0x000841e4 mov r0, r5 | r0 = r5;
0x000841e6 blx 0x84f8 | r0 = fcn_000084f8 ();
0x000841ea ldrd r2, r0, [r6, 0xc] | __asm ("ldrd r2, r0, [r6, 0xc]");
| }
0x000841ee cmp r2, r4 |
0x000841f0 bgt 0x841ce |
| } while (r2 > r4);
| label_1:
0x000841f2 blx 0x84f8 | fcn_000084f8 ();
0x000841f6 movs r3, 0 | r3 = 0;
0x000841f8 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
| label_0:
0x000841fa add.w r4, r6, 0x40 | r4 = r6 + 0x40;
0x000841fe add.w r5, r6, 0x54 | r5 = r6 + 0x54;
| do {
0x00084202 ldr r1, [r4], 4 | r1 = *(r4);
| r4 += 4;
| if (r1 != 0) {
0x00084206 cbz r1, 0x84216 |
0x00084208 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0008420a mov r0, r7 | r0 = r7;
0x0008420c subs r3, 1 | r3--;
0x0008420e str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
| if (r3 != 0) {
0x00084210 cbnz r3, 0x84216 | goto label_2;
| }
0x00084212 bl 0x84120 | fcn_00084120 (r0, r1);
| }
| label_2:
0x00084216 cmp r4, r5 |
0x00084218 bne 0x84202 |
| } while (r4 != r5);
0x0008421a ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x0008421c blx 0x84f8 | fcn_000084f8 ();
0x00084220 ldr r4, [r6, 0x24] | r4 = *((r6 + 0x24));
0x00084222 movs r2, 0xf4 | r2 = 0xf4;
0x00084224 movs r1, 0 | r1 = 0;
0x00084226 adds r0, r6, 4 | r0 = r6 + 4;
0x00084228 blx 0x8264 | fcn_00008264 ();
0x0008422c str r7, [r6] | *(r6) = r7;
0x0008422e str r4, [r6, 0x24] | *((r6 + 0x24)) = r4;
0x00084230 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/libsqlite3.so.0.8.6 @ 0x84320 */
| #include <stdint.h>
|
; (fcn) fcn.00084320 () | void fcn_00084320 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00084320 push {r0, r1, sb, fp, sp, lr} |
0x00084324 blx lr | lr (r0);
0x00084326 add.w lr, r1, r1, lsl 1 | lr = r1 + (r1 << 1);
0x0008432a mov r7, r2 | r7 = r2;
0x0008432c add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00084330 mov r5, r1 | r5 = r1;
0x00084332 add.w lr, r3, lr, lsl 3 | lr = r3 + (lr << 3);
0x00084336 add.w ip, r3, r2, lsl 3 |
0x0008433a mov sl, lr | sl = lr;
0x0008433c mov r6, r0 | r6 = r0;
0x0008433e ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00084342 sub sp, 0x18 |
0x00084344 mov r4, sp | r4 = sp;
0x00084346 mov r8, ip | r8 = ip;
0x00084348 mov sb, sp | sb = sp;
0x0008434a cmp r5, 3 |
0x0008434c stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x0008434e ldm.w lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x00084352 stm.w r4, {r0, r1} | *(r4) = r0;
| *((r4 + 4)) = r1;
0x00084356 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x0008435a stm.w sl!, {r0, r1, r2, r3} | *(sl!) = r0;
| *((sl! + 4)) = r1;
| *((sl! + 8)) = r2;
| *((sl! + 12)) = r3;
0x0008435e ldm.w ip, {r0, r1} | r0 = *(ip);
| r1 = *((ip + 4));
0x00084362 stm.w lr, {r0, r1} | *(lr) = r0;
| *((lr + 4)) = r1;
0x00084366 ldm.w sb!, {r0, r1, r2, r3} | r0 = *(sb!);
| r1 = *((sb! + 4));
| r2 = *((sb! + 8));
| r3 = *((sb! + 12));
0x0008436a stm.w r8!, {r0, r1, r2, r3} | *(r8!) = r0;
| *((r8! + 4)) = r1;
| *((r8! + 8)) = r2;
| *((r8! + 12)) = r3;
0x0008436e ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x00084372 stm.w ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
| if (r5 <= 3) {
0x00084376 bgt 0x8438c |
0x00084378 add.w r5, r6, r5, lsl 2 | r5 = r6 + (r5 << 2);
0x0008437c cmp r7, 3 |
0x0008437e ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
| if (r7 > 3) {
0x00084380 bgt 0x84392 | goto label_0;
| }
0x00084382 add.w r6, r6, r7, lsl 2 | r6 += (r7 << 2);
0x00084386 ldr r3, [r6, 0x44] | r3 = *((r6 + 0x44));
0x00084388 str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x0008438a str r1, [r6, 0x44] | *((r6 + 0x44)) = r1;
| }
0x0008438c add sp, 0x18 |
0x0008438e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_0:
0x00084392 ldr r0, [r6] | r0 = *(r6);
| if (r1 != 0) {
0x00084394 cbz r1, 0x843a2 |
0x00084396 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00084398 subs r3, 1 | r3--;
0x0008439a str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
| if (r3 != 0) {
0x0008439c cbnz r3, 0x843a2 | goto label_1;
| }
0x0008439e bl 0x84120 | fcn_00084120 (r0, r1);
| }
| label_1:
0x000843a2 movs r3, 0 | r3 = 0;
0x000843a4 str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x000843a6 add sp, 0x18 |
0x000843a8 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/libsqlite3.so.0.8.6 @ 0x843ac */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000843ac () | void fcn_000843ac (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000843ac push {r3, r4, r5, r6, r7, lr} |
0x000843ae mov r6, r0 | r6 = r0;
0x000843b0 ldr r2, [r0, 0x18] | r2 = *((r0 + 0x18));
0x000843b2 mov r4, r1 | r4 = r1;
0x000843b4 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x000843b6 vpush {d8} | __asm ("vpush {d8}");
0x000843ba ldr r7, [r0, 0x20] | r7 = *((r0 + 0x20));
0x000843bc cmp r2, r3 |
0x000843be vmov.f64 d8, d0 | __asm ("vmov.f64 d8, d0");
| if (r2 >= r3) {
0x000843c2 bge 0x8442a | goto label_2;
| }
| label_1:
0x000843c4 adds r3, r2, 1 | r3 = r2 + 1;
0x000843c6 cmp r2, 0 |
0x000843c8 str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x000843ca add.w r3, r2, r2, lsl 1 | r3 = r2 + (r2 << 1);
0x000843ce add.w r7, r7, r3, lsl 3 | r7 += (r3 << 3);
0x000843d2 vstr d8, [r7] | __asm ("vstr d8, [r7]");
0x000843d6 strb r4, [r7, 0x10] | *((r7 + 0x10)) = r4;
0x000843d8 ble 0x84408 |
| while (1) {
0x000843da subs r3, r2, 1 | r3 = r2 - 1;
0x000843dc ldr r4, [r6, 0x20] | r4 = *((r6 + 0x20));
0x000843de asrs r5, r3, 1 | r5 = r3 >> 1;
0x000843e0 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x000843e4 mov r0, r6 | r0 = r6;
0x000843e6 add r3, r5 | r3 += r5;
0x000843e8 mov r1, r5 | r1 = r5;
0x000843ea add.w r4, r4, r3, lsl 3 | r4 += (r3 << 3);
0x000843ee vldr d16, [r4] | __asm ("vldr d16, [r4]");
0x000843f2 vcmpe.f64 d16, d8 | __asm ("vcmpe.f64 d16, d8");
0x000843f6 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 <= r2) {
0x000843fa bgt 0x84410 |
| if (r3 >= r2) {
0x000843fc bmi 0x84408 |
0x000843fe ldrb.w ip, [r7, 0x10] | ip = *((r7 + 0x10));
0x00084402 ldrb r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00084404 cmp ip, r3 |
| if (ip <= r3) {
0x00084406 blo 0x84410 | goto label_3;
| }
| }
| label_0:
0x00084408 vpop {d8} | __asm ("vpop {d8}");
0x0008440c mov r0, r7 | r0 = r7;
0x0008440e pop {r3, r4, r5, r6, r7, pc} |
| }
| label_3:
0x00084410 bl 0x84320 | fcn_00084320 (r0, r1, r2);
| if (r5 == 0) {
0x00084414 cbz r5, 0x84420 | goto label_4;
| }
0x00084416 vldr d8, [r4] | __asm ("vldr d8, [r4]");
0x0008441a mov r7, r4 | r7 = r4;
0x0008441c mov r2, r5 | r2 = r5;
0x0008441e b 0x843da |
| }
| label_4:
0x00084420 vpop {d8} | __asm ("vpop {d8}");
0x00084424 mov r7, r4 | r7 = r4;
0x00084426 mov r0, r7 | r0 = r7;
0x00084428 pop {r3, r4, r5, r6, r7, pc} |
| label_2:
0x0008442a adds r3, 4 | r3 += 4;
0x0008442c mov r0, r7 | r0 = r7;
0x0008442e lsls r5, r3, 1 | r5 = r3 << 1;
0x00084430 add.w r3, r5, r3, lsl 2 | r3 = r5 + (r3 << 2);
0x00084434 lsls r2, r3, 3 | r2 = r3 << 3;
0x00084436 movs r3, 0 | r3 = 0;
0x00084438 blx 0x8638 | r0 = fcn_00008638 ();
0x0008443c mov r7, r0 | r7 = r0;
0x0008443e cmp r0, 0 |
| if (r0 == 0) {
0x00084440 beq 0x84408 | goto label_0;
| }
0x00084442 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x00084444 str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x00084446 str r5, [r6, 0x14] | *((r6 + 0x14)) = r5;
0x00084448 b 0x843c4 | 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/libsqlite3.so.0.8.6 @ 0x8444c */
| #include <stdint.h>
|
; (fcn) fcn.0008444c () | void fcn_0008444c (int16_t arg1) {
| r0 = arg1;
0x0008444c push.w {r4, r5, r6, r7, r8, lr} |
0x00084450 mov r5, r0 | r5 = r0;
0x00084452 ldrb.w ip, [r0, 5] | ip = *((r0 + 5));
0x00084456 rsb.w r4, ip, 1 | r4 = 1 - ip;
0x0008445a add.w r4, r0, r4, lsl 2 | r4 = r0 + (r4 << 2);
0x0008445e ldr r1, [r4, 0x40] | r1 = *((r4 + 0x40));
| if (r1 != 0) {
0x00084460 cbz r1, 0x84478 |
0x00084462 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00084464 ldr r0, [r0] | r0 = *(r0);
0x00084466 subs r3, 1 | r3--;
0x00084468 str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
| if (r3 == 0) {
0x0008446a cbnz r3, 0x84474 |
0x0008446c bl 0x84120 | fcn_00084120 (r0, r1);
0x00084470 ldrb.w ip, [r5, 5] | ip = *((r5 + 5));
| }
0x00084474 movs r3, 0 | r3 = 0;
0x00084476 str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
| }
0x00084478 cmp.w ip, 0 |
| if (ip == 0) {
0x0008447c beq 0x84494 | goto label_5;
| }
0x0008447e ldrb.w r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x00084482 movs r1, 0 | r1 = 0;
0x00084484 add.w r3, r5, r3, lsl 2 | r3 = r5 + (r3 << 2);
0x00084488 ldr r2, [r3, 0x54] | r2 = *((r3 + 0x54));
0x0008448a subs r2, 1 | r2--;
0x0008448c str r2, [r3, 0x54] | *((r3 + 0x54)) = r2;
0x0008448e strb r1, [r5, 5] | *((r5 + 5)) = r1;
| do {
| label_0:
0x00084490 pop.w {r4, r5, r6, r7, r8, pc} |
| label_5:
0x00084494 ldr.w r8, [r5, 0x18] | r8 = *((r5 + 0x18));
0x00084498 cmp.w r8, 0 |
0x0008449c beq 0x84490 |
| } while (r8 == 0);
0x0008449e ldr r7, [r5, 0x20] | r7 = *((r5 + 0x20));
0x000844a0 add.w r6, r8, -1 | r6 = r8 + -1;
0x000844a4 add.w r4, r6, r6, lsl 1 | r4 = r6 + (r6 << 1);
0x000844a8 cmp r6, 3 |
0x000844aa ldrb r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000844ac mov lr, r7 | lr = r7;
0x000844ae add.w r4, r7, r4, lsl 3 | r4 = r7 + (r4 << 3);
0x000844b2 add.w r3, r5, r3, lsl 2 | r3 = r5 + (r3 << 2);
0x000844b6 ldr r2, [r3, 0x54] | r2 = *((r3 + 0x54));
0x000844b8 add.w r2, r2, -1 | r2 += -1;
0x000844bc str r2, [r3, 0x54] | *((r3 + 0x54)) = r2;
0x000844be ldm r4!, {r0, r1, r2, r3} | r0 = *(r4!);
| r1 = *((r4! + 4));
| r2 = *((r4! + 8));
| r3 = *((r4! + 12));
0x000844c0 str r6, [r5, 0x18] | *((r5 + 0x18)) = r6;
0x000844c2 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000844c6 ldm.w r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x000844ca stm.w lr, {r0, r1} | *(lr) = r0;
| *((lr + 4)) = r1;
| if (r6 <= 3) {
0x000844ce ble 0x84574 | goto label_6;
| }
| label_4:
0x000844d0 movs r1, 0 | r1 = 0;
0x000844d2 movs r4, 1 | r4 = 1;
0x000844d4 mov r3, r1 | r3 = r1;
0x000844d6 b 0x8451a | goto label_7;
| if (r4 <= 1) {
| label_2:
0x000844d8 bgt 0x844e6 |
0x000844da ldrb.w r0, [ip, 0x10] | r0 = *((ip + 0x10));
0x000844de ldrb.w r2, [lr, 0x10] | r2 = *((lr + 0x10));
0x000844e2 cmp r0, r2 |
| if (r0 <= r2) {
0x000844e4 blo 0x84548 | goto label_8;
| }
| }
| label_1:
0x000844e6 add r3, r1 | r3 += r1;
0x000844e8 add.w r3, r7, r3, lsl 3 | r3 = r7 + (r3 << 3);
0x000844ec vldr d17, [r3] | __asm ("vldr d17, [r3]");
0x000844f0 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x000844f4 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < r2) {
0x000844f8 bmi 0x84506 | goto label_9;
| }
| if (r0 > r2) {
0x000844fa bgt 0x84490 | goto label_0;
| }
0x000844fc ldrb.w r2, [lr, 0x10] | r2 = *((lr + 0x10));
0x00084500 ldrb r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00084502 cmp r2, r3 |
| if (r2 >= r3) {
0x00084504 bhs 0x84490 | goto label_0;
| }
| label_9:
0x00084506 mov r2, r4 | r2 = r4;
0x00084508 mov r0, r5 | r0 = r5;
0x0008450a bl 0x84320 | fcn_00084320 (r0, r1, r2);
0x0008450e mov r1, r4 | r1 = r4;
| label_3:
0x00084510 lsls r3, r1, 1 | r3 = r1 << 1;
0x00084512 adds r4, r3, 1 | r4 = r3 + 1;
0x00084514 cmp r6, r4 |
| if (r6 <= r4) {
0x00084516 ble 0x84490 | goto label_0;
| }
0x00084518 ldr r7, [r5, 0x20] | r7 = *((r5 + 0x20));
| label_7:
0x0008451a add.w ip, r1, 1 |
0x0008451e add.w lr, r4, r4, lsl 1 | lr = r4 + (r4 << 1);
0x00084522 lsl.w r8, ip, 1 | r8 = ip << 1;
0x00084526 add.w lr, r7, lr, lsl 3 | lr = r7 + (lr << 3);
0x0008452a cmp r6, r8 |
0x0008452c vldr d16, [lr] | __asm ("vldr d16, [lr]");
| if (r6 <= r8) {
0x00084530 ble 0x844e6 | goto label_1;
| }
0x00084532 add.w ip, r8, ip, lsl 2 |
0x00084536 add.w ip, r7, ip, lsl 3 |
0x0008453a vldr d17, [ip] | __asm ("vldr d17, [ip]");
0x0008453e vcmpe.f64 d17, d16 | __asm ("vcmpe.f64 d17, d16");
0x00084542 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r6 >= r8) {
0x00084546 bpl 0x844d8 | goto label_2;
| }
| label_8:
0x00084548 add r3, r1 | r3 += r1;
0x0008454a add.w r3, r7, r3, lsl 3 | r3 = r7 + (r3 << 3);
0x0008454e vldr d16, [r3] | __asm ("vldr d16, [r3]");
0x00084552 vcmpe.f64 d17, d16 | __asm ("vcmpe.f64 d17, d16");
0x00084556 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r6 < r8) {
0x0008455a bmi 0x84568 | goto label_10;
| }
| if (r6 > r8) {
0x0008455c bgt 0x84490 | goto label_0;
| }
0x0008455e ldrb.w r2, [ip, 0x10] | r2 = *((ip + 0x10));
0x00084562 ldrb r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00084564 cmp r2, r3 |
| if (r2 >= r3) {
0x00084566 bhs 0x84490 | goto label_0;
| }
| label_10:
0x00084568 mov r2, r8 | r2 = r8;
0x0008456a mov r0, r5 | r0 = r5;
0x0008456c bl 0x84320 | fcn_00084320 (r0, r1, r2);
0x00084570 mov r1, r8 | r1 = r8;
0x00084572 b 0x84510 | goto label_3;
| label_6:
0x00084574 add.w r8, r5, r8, lsl 2 | r8 = r5 + (r8 << 2);
0x00084578 cmp r6, 1 |
0x0008457a ldr.w r3, [r8, 0x40] | r3 = *((r8 + 0x40));
0x0008457e str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x00084580 str.w ip, [r8, 0x40] | __asm ("str.w ip, [r8, 0x40]");
| if (r6 > 1) {
0x00084584 bgt 0x844d0 | goto label_4;
| }
0x00084586 b 0x84490 | 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/libsqlite3.so.0.8.6 @ 0x84588 */
| #include <stdint.h>
|
; (fcn) fcn.00084588 () | void fcn_00084588 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00084588 add.w r2, r0, r1, lsl 2 | r2 = r0 + (r1 << 2);
0x0008458c push {r4, r5, r6, lr} |
0x0008458e mov r5, r1 | r5 = r1;
0x00084590 vpush {d8} | __asm ("vpush {d8}");
0x00084594 mov r4, r0 | r4 = r0;
0x00084596 ldrb r1, [r0, 5] | r1 = *((r0 + 5));
0x00084598 ldr r3, [r2, 0x54] | r3 = *((r2 + 0x54));
0x0008459a vmov.f64 d8, d0 | __asm ("vmov.f64 d8, d0");
0x0008459e adds r3, 1 | r3++;
0x000845a0 cmp r1, 0 |
| if (r1 == 0) {
0x000845a2 beq 0x84630 | goto label_3;
| }
0x000845a4 str r3, [r2, 0x54] | *((r2 + 0x54)) = r3;
0x000845a6 vldr d16, [r0, 0x28] | __asm ("vldr d16, [r0, 0x28]");
0x000845aa vcmpe.f64 d0, d16 | __asm ("vcmpe.f64 d0, d16");
0x000845ae vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x000845b2 bpl 0x84614 |
| while (r1 != 0) {
0x000845b4 mov r1, r5 | r1 = r5;
0x000845b6 vmov.f64 d0, d8 | __asm ("vmov.f64 d0, d8");
0x000845ba mov r0, r4 | r0 = r4;
0x000845bc bl 0x843ac | r0 = fcn_000843ac (r0, r1);
0x000845c0 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x000845c2 cbz r0, 0x8460c |
0x000845c4 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000845c6 movw r2, 0xaaab |
| /* if there is a right shift of 1, then it's a division by 1/3 */
0x000845ca movt r2, 0xaaaa | r2 = 0xaaaaaaab;
0x000845ce subs r3, r0, r3 | r3 = r0 - r3;
0x000845d0 asrs r3, r3, 3 | r3 >>= 3;
0x000845d2 mul r3, r2, r3 | r3 = r2 * r3;
0x000845d6 adds r2, r3, 1 | r2 = r3 + 1;
0x000845d8 cmp r2, 4 |
| if (r2 > 4) {
0x000845da bgt 0x8466a | goto label_4;
| }
0x000845dc ldr r2, [r4, 0x40] | r2 = *((r4 + 0x40));
0x000845de adds r3, 0x11 | r3 += 0x11;
0x000845e0 str.w r2, [r4, r3, lsl 2] | __asm ("str.w r2, [r4, r3, lsl 2]");
| label_2:
0x000845e4 add.w lr, r4, 0x28 | lr = r4 + 0x28;
0x000845e8 movs r3, 0 | r3 = 0;
0x000845ea mov ip, r6 |
0x000845ec mov r6, lr | r6 = lr;
0x000845ee str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
0x000845f0 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x000845f2 stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000845f6 ldm.w r6, {r0, r1} | r0 = *(r6);
| r1 = *((r6 + 4));
0x000845fa stm.w ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
| label_0:
0x000845fe mov r6, lr | r6 = lr;
0x00084600 movs r3, 1 | r3 = 1;
0x00084602 vstr d8, [r4, 0x28] | __asm ("vstr d8, [r4, 0x28]");
0x00084604 ldrh r2, [r1, 0x18] | r2 = *((r1 + 0x18));
0x00084606 strb.w r5, [r4, 0x38] | *((r4 + 0x38)) = r5;
0x0008460a strb r3, [r4, 5] | *((r4 + 5)) = r3;
| }
0x0008460c vpop {d8} | __asm ("vpop {d8}");
0x00084610 mov r0, r6 | r0 = r6;
0x00084612 pop {r4, r5, r6, pc} |
0x00084614 adds r0, 0x28 | r0 += 0x28;
| label_1:
0x00084616 vcmp.f64 d8, d16 | __asm ("vcmp.f64 d8, d16");
0x0008461a vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 != 0x28) {
0x0008461e bne 0x84650 | goto label_5;
| }
0x00084620 ldrb r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x00084622 cmp r3, r5 |
| if (r3 < r5) {
0x00084624 bls 0x84650 | goto label_5;
| }
0x00084626 cmp r1, 0 |
0x00084628 bne 0x845b4 |
| }
| do {
0x0008462a add.w lr, r4, 0x28 | lr = r4 + 0x28;
0x0008462e b 0x845fe | goto label_0;
| label_3:
0x00084630 ldr r0, [r0, 0x18] | r0 = *((r0 + 0x18));
| if (r0 == 0) {
0x00084632 cbz r0, 0x84662 | goto label_6;
| }
0x00084634 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00084636 str r3, [r2, 0x54] | *((r2 + 0x54)) = r3;
0x00084638 cmp r0, 0 |
0x0008463a beq 0x8462a |
| } while (r0 == 0);
0x0008463c vldr d16, [r0] | __asm ("vldr d16, [r0]");
0x00084640 vcmpe.f64 d0, d16 | __asm ("vcmpe.f64 d0, d16");
0x00084644 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 >= 0) {
0x00084648 bpl 0x84616 | goto label_1;
| }
0x0008464a add.w lr, r4, 0x28 | lr = r4 + 0x28;
0x0008464e b 0x845fe | goto label_0;
| label_5:
0x00084650 vmov.f64 d0, d8 | __asm ("vmov.f64 d0, d8");
0x00084654 mov r1, r5 | r1 = r5;
0x00084656 vpop {d8} | __asm ("vpop {d8}");
0x0008465a mov r0, r4 | r0 = r4;
0x0008465c pop.w {r4, r5, r6, lr} |
0x00084660 b 0x843ac | void (*0x843ac)() ();
| label_6:
0x00084662 add.w lr, r4, 0x28 | lr = r4 + 0x28;
0x00084666 str r3, [r2, 0x54] | *((r2 + 0x54)) = r3;
0x00084668 b 0x845fe | goto label_0;
| label_4:
0x0008466a ldr r1, [r4, 0x40] | r1 = *((r4 + 0x40));
0x0008466c ldr r0, [r4] | r0 = *(r4);
0x0008466e cmp r1, 0 |
| if (r1 == 0) {
0x00084670 beq 0x845e4 | goto label_2;
| }
0x00084672 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00084674 subs r3, 1 | r3--;
0x00084676 str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
0x00084678 cmp r3, 0 |
| if (r3 != 0) {
0x0008467a bne 0x845e4 | goto label_2;
| }
0x0008467c bl 0x84120 | fcn_00084120 (r0, r1);
0x00084680 b 0x845e4 | 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/libsqlite3.so.0.8.6 @ 0x84c70 */
| #include <stdint.h>
|
; (fcn) fcn.00084c70 () | void fcn_00084c70 (int16_t arg_0h, int16_t arg_68h, int16_t arg1) {
| int16_t var_20h;
| int16_t var_34h;
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
0x00084c70 ldr r1, [pc, 0x118] |
0x00084c72 ldr r2, [pc, 0x11c] | r2 = *(0x84d92);
0x00084c74 ldr r3, [r0] | r3 = *(r0);
0x00084c76 add r1, pc | r1 = 0x109a06;
0x00084c78 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00084c7c ldr r2, [r1, r2] |
0x00084c7e sub sp, 0x24 |
0x00084c80 movs r6, 0 | r6 = 0;
0x00084c82 add r1, sp, 0x10 | r1 += var_10h;
0x00084c84 ldr.w sl, [r3, 0xc] | sl = *((r3 + 0xc));
0x00084c88 mov sb, r0 | sb = r0;
0x00084c8a ldr r2, [r2] | r2 = imp._ITM_deregisterTMCloneTable;
0x00084c8c str r2, [sp, 0x1c] | var_1ch = r2;
0x00084c8e mov.w r2, 0 | r2 = 0;
0x00084c92 ldrd r2, r3, [r0, 0x10] | __asm ("ldrd r2, r3, [arg_0hx10]");
0x00084c96 strd r6, r6, [sp, 0xc] | __asm ("strd r6, r6, [var_10h]");
0x00084c9a add r0, sp, 0xc | r0 += var_ch;
0x00084c9c strd r6, r6, [r1, 4] | __asm ("strd r6, r6, [var_14h]");
0x00084ca0 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00084ca4 cmp sl, r6 |
0x00084ca6 ldr.w fp, [sp, 0x10] | fp = var_10h;
| if (sl > r6) {
0x00084caa bgt 0x84ce0 | goto label_3;
| }
0x00084cac b 0x84d3c | goto label_4;
| do {
| label_0:
0x00084cae cmp r7, 0x80 |
0x00084cb0 add.w r0, fp, r5 | r0 = fp + r5;
0x00084cb4 sbcs r3, r8, 0 | __asm ("sbcs r3, r8, 0");
0x00084cb8 itt lo |
| if (r7 >= 0x80) {
0x00084cba movlo r3, 1 | r3 = 1;
| }
| if (r7 >= 0x80) {
0x00084cbc strblo r7, [fp, r5] | *((fp + r5)) = r7;
| }
| if (r7 > 0x80) {
0x00084cc0 blo 0x84cd6 |
0x00084cc2 cmp.w r7, 0x4000 |
0x00084cc6 sbcs r3, r8, 0 | __asm ("sbcs r3, r8, 0");
| if (r7 <= 0x4000) {
0x00084cca blo 0x84d2a | goto label_5;
| }
0x00084ccc mov r3, r8 | r3 = r8;
0x00084cce mov r2, r7 | r2 = r7;
0x00084cd0 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x00084cd4 mov r3, r0 | r3 = r0;
| }
| label_1:
0x00084cd6 add r5, r3 | r5 += r3;
0x00084cd8 str r5, [sp, 0x14] | var_14h = r5;
| label_2:
0x00084cda adds r6, 1 | r6++;
0x00084cdc cmp sl, r6 |
| if (sl == r6) {
0x00084cde beq 0x84d3c | goto label_4;
| }
| label_3:
0x00084ce0 ldr.w r3, [sb, 0x18] | r3 = *((sb + 0x18));
0x00084ce4 ldrd r5, r4, [sp, 0x14] | __asm ("ldrd r5, r4, [var_14h]");
0x00084ce8 ldr.w r7, [r3, r6, lsl 3] | offset_0 = r6 << 3;
| r7 = *((r3 + offset_0));
0x00084cec add.w r2, r5, 9 | r2 = r5 + 9;
0x00084cf0 add.w r3, r3, r6, lsl 3 | r3 += (r6 << 3);
0x00084cf4 cmp r2, r4 |
0x00084cf6 ldr.w r8, [r3, 4] | r8 = *((r3 + 4));
0x00084cfa bls 0x84cae |
| } while (r2 < r4);
0x00084cfc cmp r4, 0 |
0x00084cfe it eq |
| if (r4 != 0) {
0x00084d00 moveq r4, 0x40 | r4 = 0x40;
| }
0x00084d02 asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x00084d04 cmp r4, r2 |
0x00084d06 sbcs r0, r3, 0 | __asm ("sbcs r0, r3, 0");
| if (r4 >= r2) {
0x00084d0a bhs 0x84d18 | goto label_6;
| }
| do {
0x00084d0c adds r4, r4, r4 | r4 += r4;
0x00084d0e adcs r3, r3 | __asm ("adcs r3, r3");
0x00084d10 cmp r4, r2 |
0x00084d12 sbcs r0, r3, 0 | __asm ("sbcs r0, r3, 0");
0x00084d16 blo 0x84d0c |
| } while (r4 <= r2);
| label_6:
0x00084d18 mov r2, r4 | r2 = r4;
0x00084d1a mov r0, fp | r0 = fp;
0x00084d1c blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 == 0) {
0x00084d20 cbz r0, 0x84d82 | goto label_7;
| }
0x00084d22 mov fp, r0 |
0x00084d24 str r4, [sp, 0x18] | var_18h = r4;
0x00084d26 str r0, [sp, 0x10] | var_10h = r0;
0x00084d28 b 0x84cae | goto label_0;
| label_5:
0x00084d2a lsrs r2, r7, 7 | r2 = r7 >> 7;
0x00084d2c and r7, r7, 0x7f | r7 &= 0x7f;
0x00084d30 movs r3, 2 | r3 = 2;
0x00084d32 strb r7, [r0, 1] | *((r0 + 1)) = r7;
0x00084d34 orn r2, r2, 0x7f | r2 |= 0x7f;
| r2 = ~r2;
0x00084d38 strb r2, [r0] | *(r0) = r2;
0x00084d3a b 0x84cd6 | goto label_1;
| label_4:
0x00084d3c ldr r4, [sp, 0xc] | r4 = var_ch;
0x00084d3e cbz r4, 0x84d62 |
| while (1) {
0x00084d40 mov r0, fp | r0 = fp;
0x00084d42 blx 0x84f8 | fcn_000084f8 ();
0x00084d46 ldr r2, [pc, 0x4c] |
0x00084d48 ldr r3, [pc, 0x44] | r3 = *(0x84d90);
0x00084d4a add r2, pc | r2 = 0x109ae4;
0x00084d4c ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00084d4e ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00084d50 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00084d52 eors r2, r3 | r2 ^= r3;
0x00084d54 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00084d58 bne 0x84d88 | goto label_8;
| }
0x00084d5a mov r0, r4 | r0 = r4;
0x00084d5c add sp, 0x24 |
0x00084d5e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00084d62 ldr.w r5, [sb, 4] | r5 = *((sb + 4));
0x00084d66 ldr r4, [r5, 0x24] | r4 = *((r5 + 0x24));
| if (r4 == 0) {
0x00084d68 cbnz r4, 0x84d7c |
0x00084d6a ldr r0, [sp, 0x14] | r0 = var_14h;
0x00084d6c movs r2, 1 | r2 = 1;
0x00084d6e movs r3, 0 | r3 = 0;
0x00084d70 strd fp, r0, [sp] | __asm ("strd fp, r0, [sp]");
0x00084d74 mov r0, r5 | r0 = r5;
0x00084d76 bl 0x84bd4 | fcn_00084bd4 (r0, r1, r2, r3);
0x00084d7a ldr r4, [r5, 0x24] | r4 = *((r5 + 0x24));
| }
0x00084d7c movs r3, 0 | r3 = 0;
0x00084d7e str r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
0x00084d80 b 0x84d40 |
| }
| label_7:
0x00084d82 movs r3, 7 | r3 = 7;
0x00084d84 str r3, [sp, 0xc] | var_ch = r3;
0x00084d86 b 0x84cda | goto label_2;
| label_8:
0x00084d88 blx 0x7e8c | fcn_00007e8c ();
0x00084d8c str r0, [sp, 0x68] | *(arg_68h) = r0;
0x00084d8e movs r4, r0 | r4 = r0;
0x00084d90 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00084d92 movs r0, r0 |
0x00084d94 ldrh r6, [r0, 0x3a] | r6 = *((r0 + 0x3a));
0x00084d96 movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x84d98 */
| #include <stdint.h>
|
; (fcn) fcn.00084d98 () | void fcn_00084d98 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int32_t var_18h_2;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int32_t var_28h_2;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00084d98 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00084d9c mov fp, r2 |
0x00084d9e sub sp, 0x3c |
0x00084da0 ldr r2, [pc, 0x1b0] |
0x00084da2 str r3, [sp, 0x20] | var_20h = r3;
0x00084da4 ldr r3, [pc, 0x1b0] | r3 = *(0x84f58);
0x00084da6 add r2, pc | r2 = 0x109cfe;
0x00084da8 ldr r5, [r0, 0x24] | r5 = *((r0 + 0x24));
0x00084daa ldr r3, [r2, r3] |
0x00084dac ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00084dae str r3, [sp, 0x34] | var_34h = r3;
0x00084db0 mov.w r3, 0 | r3 = 0;
0x00084db4 cmp r5, 0 |
| if (r5 != 0) {
0x00084db6 bne.w 0x84ec6 | goto label_3;
| }
0x00084dba mov r6, r0 | r6 = r0;
0x00084dbc mov r8, r1 | r8 = r1;
0x00084dbe add.w sl, r0, 0x24 | sl = r0 + 0x24;
0x00084dc2 strd r5, r5, [sp, 0x10] | __asm ("strd r5, r5, [var_10h]");
0x00084dc6 str.w fp, [sp, 0xc] | __asm ("str.w fp, [var_ch]");
| do {
0x00084dca ldr.w r3, [r8, 0x48] | r3 = *((r8 + 0x48));
0x00084dce lsls r7, r5, 5 | r7 = r5 << 5;
0x00084dd0 ldr r2, [r6] | r2 = *(r6);
0x00084dd2 adds r4, r3, r7 | r4 = r3 + r7;
0x00084dd4 ldr r2, [r2, 0x4c] | r2 = *((r2 + 0x4c));
0x00084dd6 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x00084dd8 cmp r1, r2 |
| if (r1 < r2) {
0x00084dda blt 0x84e9a | goto label_4;
| }
0x00084ddc ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00084dde movs r1, 1 | r1 = 1;
0x00084de0 strb r1, [r2] | *(r2) = r1;
0x00084de2 ldr r2, [r6, 0x24] | r2 = *((r6 + 0x24));
| if (r2 == 0) {
0x00084de4 cbnz r2, 0x84e0e |
0x00084de6 ldr r0, [r3, r7] | r0 = *((r3 + r7));
0x00084de8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00084dea ldr.w r1, [r8] | r1 = *(r8);
0x00084dee adds r2, r2, r3 | r2 += r3;
0x00084df0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00084df2 adds r2, r2, r0 | r2 += r0;
0x00084df4 add.w r3, r3, r1, lsl 5 | r3 += (r1 << 5);
0x00084df8 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x00084dfa add.w r3, r3, 0x10 | r3 += 0x10;
0x00084dfe str r1, [sp, 4] | var_4h = r1;
0x00084e00 adc.w r3, r3, r0, asr 31 | __asm ("adc.w r3, r3, r0, asr 31");
0x00084e04 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x00084e06 mov r0, r6 | r0 = r6;
0x00084e08 str r1, [sp] | *(sp) = r1;
0x00084e0a bl 0x84bd4 | fcn_00084bd4 (r0, r1, r2, r3);
| }
0x00084e0e adds r2, r5, 2 | r2 = r5 + 2;
0x00084e10 mov r1, r8 | r1 = r8;
0x00084e12 mov r0, r6 | r0 = r6;
0x00084e14 bl 0x482a4 | fcn_000482a4 (r0, r1, r2);
0x00084e18 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00084e1a ldr.w sb, [r8, 0x48] | sb = *((r8 + 0x48));
0x00084e1e add.w r4, sb, r7 | r4 = sb + r7;
| if (r3 == 0) {
0x00084e22 cbnz r3, 0x84e2a |
0x00084e24 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x00084e26 cmp r3, 0 |
| if (r3 == 0) {
0x00084e28 beq 0x84ee6 | goto label_5;
| }
| }
| label_1:
0x00084e2a movs r3, 0 | r3 = 0;
0x00084e2c movs r2, 1 | r2 = 1;
0x00084e2e str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00084e30 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x00084e32 ldr.w r3, [sb, r7] | r3 = *((sb + r7));
0x00084e36 adds r3, 1 | r3++;
0x00084e38 str.w r3, [sb, r7] | __asm ("str.w r3, [sb, r7]");
0x00084e3c movs r3, 0 | r3 = 0;
0x00084e3e mov fp, r3 |
0x00084e40 add.w r7, r4, 0x10 | r7 = r4 + 0x10;
0x00084e44 movs r3, 0 | r3 = 0;
| label_2:
0x00084e46 cmp r5, 0 |
| if (r5 != 0) {
0x00084e48 bne 0x84ee0 | goto label_6;
| }
0x00084e4a ldr.w sb, [r8, 4] | sb = *((r8 + 4));
| label_0:
0x00084e4e mov r1, r7 | r1 = r7;
0x00084e50 mov r0, sl | r0 = sl;
0x00084e52 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00084e56 mov r2, sb | r2 = sb;
0x00084e58 mov r1, r7 | r1 = r7;
0x00084e5a asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00084e5c mov r0, sl | r0 = sl;
0x00084e5e adds r5, 1 | r5++;
0x00084e60 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00084e64 ldr.w sb, [sp, 0x20] | sb = var_20h;
0x00084e68 mov r1, r7 | r1 = r7;
0x00084e6a ldr r2, [sp, 0xc] | r2 = var_ch;
0x00084e6c mov r0, sl | r0 = sl;
0x00084e6e mov r3, sb | r3 = sb;
0x00084e70 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00084e74 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00084e76 movs r3, 1 | r3 = 1;
0x00084e78 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00084e7a adds.w r2, r2, -0x80000000 | r2 += -0x80000000;
0x00084e7e str r2, [sp, 0x10] | var_10h = r2;
0x00084e80 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00084e82 strd r3, r1, [r4, 4] | __asm ("strd r3, r1, [r4, 4]");
0x00084e86 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00084e88 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00084e8c str.w sb, [r4, 0xc] | __asm ("str.w sb, [r4, 0xc]");
0x00084e90 str r2, [sp, 0x14] | var_14h = r2;
0x00084e92 mov r2, fp | r2 = fp;
0x00084e94 orrs r2, r3 | r2 |= r3;
0x00084e96 beq 0x84dca |
| } while (r2 == r3);
0x00084e98 b 0x84ec6 | goto label_3;
| label_4:
0x00084e9a ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00084e9c add.w r7, r4, 0x10 | r7 = r4 + 0x10;
0x00084ea0 cmp r3, 0 |
| if (r3 != 0) {
0x00084ea2 beq 0x84f46 |
0x00084ea4 ldr.w fp, [sp, 0xc] | fp = var_ch;
0x00084ea8 mov r1, r7 | r1 = r7;
0x00084eaa ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00084eae mov r0, sl | r0 = sl;
0x00084eb0 ldr r5, [sp, 0x20] | r5 = var_20h;
0x00084eb2 subs.w r2, fp, r2 | r2 = fp - r2;
0x00084eb6 sbc.w r3, r5, r3 | __asm ("sbc.w r3, r5, r3");
0x00084eba bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00084ebc mrrc2 p3, 0, r2, r5, c1 | __asm ("mrrc2 p3, 0, r2, r5, c1");
0x00084ec0 str r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x00084ec2 strd r3, fp, [r4, 4] | __asm ("strd r3, fp, [r4, 4]");
| label_3:
0x00084ec6 ldr r2, [pc, 0x94] |
0x00084ec8 ldr r3, [pc, 0x8c] | r3 = *(0x84f58);
0x00084eca add r2, pc | r2 = 0x109e2c;
0x00084ecc ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00084ece ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00084ed0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00084ed2 eors r2, r3 | r2 ^= r3;
0x00084ed4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00084ed8 bne 0x84f50 | goto label_7;
| }
0x00084eda add sp, 0x3c |
0x00084edc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x00084ee0 ldr sb, [r4, -0x20] | sb = *((r4 - 0x20));
0x00084ee4 b 0x84e4e | goto label_0;
| label_5:
0x00084ee6 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00084ee8 add.w r3, r4, 0x30 | r3 = r4 + 0x30;
0x00084eec add r1, sp, 0x28 | r1 += var_28h;
0x00084eee str r3, [sp, 0x24] | var_24h = r3;
0x00084ef0 adds r0, r2, 1 | r0 = r2 + 1;
0x00084ef2 str r2, [sp, 0x18] | var_18h = r2;
0x00084ef4 bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00084ef8 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00084efa adds r0, 1 | r0++;
0x00084efc add r0, r2 | r0 += r2;
0x00084efe bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00084f02 ldr.w r2, [sb, r7] | r2 = *((sb + r7));
0x00084f06 mov r0, sl | r0 = sl;
0x00084f08 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00084f0a ldrd fp, ip, [sp, 0x28] | __asm ("ldrd fp, ip, [var_28h]");
0x00084f0e str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
0x00084f10 movs r2, 0 | r2 = 0;
0x00084f12 mov r1, r3 | r1 = r3;
0x00084f14 movs r3, 0 | r3 = 0;
0x00084f16 strd fp, ip, [sp, 0x18] | __asm ("strd fp, ip, [var_18h]");
0x00084f1a bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00084f1e ldr.w r2, [sb, r7] | r2 = *((sb + r7));
0x00084f22 mov r0, sl | r0 = sl;
0x00084f24 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00084f26 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00084f28 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00084f2c ldrd r2, r3, [sp, 0x18] | __asm ("ldrd r2, r3, [var_18h]");
0x00084f30 mov r0, sl | r0 = sl;
0x00084f32 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00084f34 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00084f38 ldrd fp, ip, [sp, 0x18] | __asm ("ldrd fp, ip, [var_18h]");
0x00084f3c movs r3, 1 | r3 = 1;
0x00084f3e str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00084f40 strd fp, ip, [r4, 0x28] | __asm ("strd fp, ip, [r4, 0x28]");
0x00084f44 b 0x84e2a | goto label_1;
| }
0x00084f46 movs r3, 1 | r3 = 1;
0x00084f48 movs r2, 0 | r2 = 0;
0x00084f4a mov fp, r3 |
0x00084f4c movs r3, 0 | r3 = 0;
0x00084f4e b 0x84e46 | goto label_2;
| label_7:
0x00084f50 blx 0x7e8c | fcn_00007e8c ();
0x00084f54 ldrh r2, [r5, 0x36] | r2 = *((r5 + 0x36));
0x00084f56 movs r4, r0 | r4 = r0;
0x00084f58 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00084f5a movs r0, r0 |
0x00084f5c ldrh r6, [r0, 0x2e] | r6 = *((r0 + 0x2e));
0x00084f5e movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x850ec */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000850ec () | void fcn_000850ec (int16_t arg1, int16_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int32_t var_10h_2;
| r0 = arg1;
| r1 = arg2;
0x000850ec svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000850f0 mov sb, r0 | sb = r0;
0x000850f2 ldr r2, [r0] | r2 = *(r0);
0x000850f4 mov r8, r1 | r8 = r1;
0x000850f6 sub sp, 0x1c |
0x000850f8 movs r3, 0 | r3 = 0;
0x000850fa ldr r0, [pc, 0x1c4] |
0x000850fc add r6, sp, 8 | r6 += var_8h;
0x000850fe ldr r1, [pc, 0x1c4] | r1 = *(0x852c6);
0x00085100 ldr r5, [r2, 0x48] | r5 = *((r2 + 0x48));
0x00085102 movs r2, 0x40 | r2 = 0x40;
0x00085104 add r0, pc | r0 = 0x10a3ca;
0x00085106 ldr r1, [r0, r1] |
0x00085108 mov r0, r3 | r0 = r3;
0x0008510a ldr r1, [r1] | r1 = imp._ITM_deregisterTMCloneTable;
0x0008510c str r1, [sp, 0x14] | var_14h = r1;
0x0008510e mov.w r1, 0 | r1 = 0;
0x00085112 strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [var_8h]");
0x00085116 str r3, [sp, 0x10] | var_10h = r3;
0x00085118 movs r3, 0 | r3 = 0;
0x0008511a blx 0x8638 | r0 = fcn_00008638 ();
0x0008511e cmp r0, 0 |
| if (r0 == 0) {
0x00085120 beq.w 0x852b4 | goto label_5;
| }
0x00085124 bic.w r3, r5, r5, asr 31 | r3 = BIT_MASK (r5, r5);
0x00085128 mov r4, r0 | r4 = r0;
0x0008512a str r0, [sp, 8] | var_8h = r0;
0x0008512c lsrs r2, r3, 0x18 | r2 = r3 >> 0x18;
0x0008512e strb r3, [r0, 3] | *((r0 + 3)) = r3;
0x00085130 strb r2, [r0] | *(r0) = r2;
0x00085132 asrs r2, r3, 0x10 | r2 = r3 >> 0x10;
0x00085134 asrs r3, r3, 8 | r3 >>= 8;
0x00085136 strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x00085138 strb r3, [r0, 2] | *((r0 + 2)) = r3;
0x0008513a movs r3, 4 | r3 = 4;
0x0008513c ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x00085140 str r3, [sp, 0xc] | var_ch = r3;
0x00085142 movs r3, 0x40 | r3 = 0x40;
0x00085144 str r3, [sp, 0x10] | var_10h = r3;
0x00085146 cmp r2, 0x80 |
0x00085148 asr.w r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0008514c sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x00085150 ittt lo |
| if (r2 >= 0x80) {
0x00085152 movlo r1, 5 | r1 = 5;
| }
| if (r2 >= 0x80) {
0x00085154 strblo r2, [r0, 4] | *((r0 + 4)) = r2;
| }
| if (r2 >= 0x80) {
0x00085156 movlo r7, r1 | r7 = r1;
| }
| if (r2 > 0x80) {
0x00085158 blo 0x85170 |
0x0008515a cmp.w r2, 0x4000 |
0x0008515e sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x4000) {
0x00085162 blo.w 0x8527c | goto label_6;
| }
0x00085166 adds r0, 4 | r0 += 4;
0x00085168 bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
0x0008516c adds r7, r0, 4 | r7 = r0 + 4;
0x0008516e mov r1, r7 | r1 = r7;
| }
| label_1:
0x00085170 ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x00085174 adds r0, r4, r1 | r0 = r4 + r1;
0x00085176 str r7, [sp, 0xc] | var_ch = r7;
0x00085178 cmp r2, 0x80 |
0x0008517a asr.w r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0008517e sbcs r5, r3, 0 | __asm ("sbcs r5, r3, 0");
0x00085182 itt lo |
| if (r2 >= 0x80) {
0x00085184 movlo r0, 1 | r0 = 1;
| }
| if (r2 >= 0x80) {
0x00085186 strblo r2, [r4, r1] | *((r4 + r1)) = r2;
| }
| if (r2 > 0x80) {
0x00085188 blo 0x8519a |
0x0008518a cmp.w r2, 0x4000 |
0x0008518e sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x4000) {
0x00085192 blo.w 0x852a2 | goto label_7;
| }
0x00085196 bl 0x8c4c | fcn_00008c4c (r0, r1, r2);
| }
| label_3:
0x0008519a ldrd r2, r3, [r8, 8] | __asm ("ldrd r2, r3, [r8, 8]");
0x0008519e adds r5, r0, r7 | r5 = r0 + r7;
0x000851a0 adds r0, r4, r5 | r0 = r4 + r5;
0x000851a2 str r5, [sp, 0xc] | var_ch = r5;
0x000851a4 cmp r2, 0x80 |
0x000851a6 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x000851aa itt lo |
| if (r2 >= 0x80) {
0x000851ac movlo r0, 1 | r0 = 1;
| }
| if (r2 >= 0x80) {
0x000851ae strblo r2, [r4, r5] | *((r4 + r5)) = r2;
| }
| if (r2 > 0x80) {
0x000851b0 blo 0x851c0 |
0x000851b2 cmp.w r2, 0x4000 |
0x000851b6 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x4000) {
0x000851ba blo 0x85290 | goto label_8;
| }
0x000851bc bl 0x8c4c | r0 = fcn_00008c4c (r0, r1, r2);
| }
| label_2:
0x000851c0 add r5, r0 | r5 += r0;
0x000851c2 str r5, [sp, 0xc] | var_ch = r5;
| label_4:
0x000851c4 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x000851c8 cmp r3, 0 |
0x000851ca ittt gt |
| if (r3 <= 0) {
0x000851cc addgt fp, sb, 0x24 |
| }
| if (r3 <= 0) {
0x000851d0 movgt r5, r8 | r5 = r8;
| }
| if (r3 > 0) {
0x000851d2 movs r7, 0 | r7 = 0;
| }
| if (r7 <= 0) {
0x000851d4 ble 0x85244 | goto label_9;
| }
| label_0:
0x000851d6 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x000851d8 mov r1, r6 | r1 = r6;
0x000851da mov r0, fp | r0 = fp;
0x000851dc asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000851de bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x000851e2 ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x000851e4 mov r1, r6 | r1 = r6;
0x000851e6 mov r0, fp | r0 = fp;
0x000851e8 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000851ea bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x000851ee ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000851f0 cmp r3, 0 |
0x000851f2 it gt |
| if (r3 <= 0) {
0x000851f4 movgt r4, 0 | r4 = 0;
| }
| if (r3 <= 0) {
0x000851f6 ble 0x85238 | goto label_10;
| }
| do {
0x000851f8 ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x000851fa add.w r2, r4, r4, lsl 1 | r2 = r4 + (r4 << 1);
0x000851fc lsls r4, r0, 9 | r4 = r0 << 9;
0x000851fe mov r1, r6 | r1 = r6;
0x00085200 lsl.w sl, r2, 2 | sl = r2 << 2;
0x00085204 mov r0, fp | r0 = fp;
0x00085206 ldr.w r2, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r2 = *((r3 + offset_0));
0x0008520a adds r4, 1 | r4++;
0x0008520c asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0008520e bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00085212 ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x00085214 mov r1, r6 | r1 = r6;
0x00085216 mov r0, fp | r0 = fp;
0x00085218 add r3, sl | r3 += sl;
0x0008521a ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0008521c asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0008521e bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00085222 ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x00085224 mov r1, r6 | r1 = r6;
0x00085226 mov r0, fp | r0 = fp;
0x00085228 add r3, sl | r3 += sl;
0x0008522a ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0008522c asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0008522e bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00085232 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00085234 cmp r4, r3 |
0x00085236 blt 0x851f8 |
| } while (r4 < r3);
| label_10:
0x00085238 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x0008523c adds r7, 1 | r7++;
0x0008523e adds r5, 0xc | r5 += 0xc;
0x00085240 cmp r7, r3 |
| if (r7 < r3) {
0x00085242 blt 0x851d6 | goto label_0;
| }
| label_9:
0x00085244 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x00085248 ldr r4, [sp, 8] | r4 = var_8h;
| if (r3 == 0) {
0x0008524a cbnz r3, 0x8525c |
0x0008524c ldr r1, [sp, 0xc] | r1 = var_ch;
0x0008524e movs r2, 0xa | r2 = 0xa;
0x00085250 movs r3, 0 | r3 = 0;
0x00085252 mov r0, sb | r0 = sb;
0x00085254 strd r4, r1, [sp] | __asm ("strd r4, r1, [sp]");
0x00085258 bl 0x84bd4 | fcn_00084bd4 (r0, r1, r2, r3);
| }
0x0008525c ldr r2, [pc, 0x68] |
0x0008525e ldr r3, [pc, 0x64] | r3 = *(0x852c6);
0x00085260 add r2, pc | r2 = 0x10a52c;
0x00085262 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00085264 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00085266 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00085268 eors r2, r3 | r2 ^= r3;
0x0008526a mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0008526e bne 0x852bc |
0x00085270 mov r0, r4 | r0 = r4;
0x00085272 add sp, 0x1c |
0x00085274 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00085278 b.w 0x84f4 | void (*0x84f4)() ();
| label_6:
0x0008527c lsrs r3, r2, 7 | r3 = r2 >> 7;
0x0008527e movs r1, 6 | r1 = 6;
0x00085280 and r2, r2, 0x7f | r2 &= 0x7f;
0x00085284 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00085288 mov r7, r1 | r7 = r1;
0x0008528a strb r2, [r0, 5] | *((r0 + 5)) = r2;
0x0008528c strb r3, [r0, 4] | *((r0 + 4)) = r3;
0x0008528e b 0x85170 | goto label_1;
| label_8:
0x00085290 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x00085292 and r2, r2, 0x7f | r2 &= 0x7f;
0x00085296 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x0008529a strb r3, [r4, r5] | *((r4 + r5)) = r3;
0x0008529c strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x0008529e movs r0, 2 | r0 = 2;
0x000852a0 b 0x851c0 | goto label_2;
| label_7:
0x000852a2 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x000852a4 and r2, r2, 0x7f | r2 &= 0x7f;
0x000852a8 strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x000852aa orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x000852ae strb r3, [r0] | *(r0) = r3;
0x000852b0 movs r0, 2 | r0 = 2;
0x000852b2 b 0x8519a | goto label_3;
| label_5:
0x000852b4 movs r3, 7 | r3 = 7;
0x000852b6 str.w r3, [sb, 0x24] | __asm ("str.w r3, [sb, 0x24]");
0x000852ba b 0x851c4 | goto label_4;
| }
0x000852bc blx 0x7e8c | fcn_00007e8c ();
0x000852c0 ldrh r4, [r1, 0x1c] | r4 = *((r1 + 0x1c));
0x000852c2 movs r4, r0 | r4 = r0;
0x000852c4 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000852c6 movs r0, r0 |
0x000852c8 ldrh r0, [r6, 0x10] | r0 = var_10h_2;
0x000852ca movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x85388 */
| #include <stdint.h>
|
; (fcn) fcn.00085388 () | void fcn_00085388 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00085388 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0008538c mov sl, r0 | sl = r0;
0x0008538e ldr r5, [r1, 0x48] | r5 = *((r1 + 0x48));
0x00085390 sub sp, 0xc |
0x00085392 mov r8, r1 | r8 = r1;
0x00085394 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x00085396 cmp r0, 0 |
0x00085398 it le |
| if (r0 > 0) {
0x0008539a movle fp, 0 |
| }
| if (r0 > 0) {
0x0008539e ble 0x853ae |
0x000853a0 ldr r3, [r1, 0x40] | r3 = *((r1 + 0x40));
0x000853a2 cmp r3, 3 |
0x000853a4 ite le |
| if (r3 > 3) {
0x000853a6 movle fp, 0 |
| }
| if (r3 <= 3) {
0x000853aa mov.w fp, 1 | goto label_0;
| }
| }
| label_0:
0x000853ae ldr.w r3, [r8, 0x44] | r3 = *((r8 + 0x44));
0x000853b2 ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x000853b6 cmp r3, 0 |
| if (r3 <= 0) {
0x000853b8 ble 0x8541e | goto label_1;
| }
0x000853ba movs r4, 0 | r4 = 0;
0x000853bc mov sb, r4 | sb = r4;
0x000853be mov r7, r4 | r7 = r4;
0x000853c0 mov r1, r4 | r1 = r4;
0x000853c2 b 0x85414 |
| while (r0 != 0) {
0x000853c4 cmp.w fp, 0 |
| if (fp != 0) {
0x000853c8 beq 0x853fc |
| if (r2 != 0) {
0x000853ca cbnz r2, 0x853fc | goto label_2;
| }
0x000853cc ldr.w r3, [r8] | r3 = *(r8);
0x000853d0 adds r2, r2, r4 | r2 += r4;
0x000853d2 ldr.w ip, [r5] | ip = *(r5);
0x000853d6 str r0, [sp, 4] | var_4h = r0;
0x000853d8 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000853da add.w r3, sb, r3, lsl 5 | r3 = sb + (r3 << 5);
0x000853de adds.w r2, r2, ip | r2 += ip;
0x000853e2 add.w r3, r3, 0x10 | r3 += 0x10;
0x000853e6 str r0, [sp] | *(sp) = r0;
0x000853e8 adc.w r3, r3, ip, asr 31 | __asm ("adc.w r3, r3, ip, asr 31");
0x000853ec mov r0, sl | r0 = sl;
0x000853ee bl 0x84bd4 | fcn_00084bd4 (r0, r1, r2, r3);
0x000853f2 ldr.w r3, [r8, 0x44] | r3 = *((r8 + 0x44));
0x000853f6 movs r1, 0 | r1 = 0;
0x000853f8 ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
| }
| label_2:
0x000853fc adds.w r4, r4, -0x80000000 | r4 += -0x80000000;
0x00085400 str r1, [r5, 0x14] | *((r5 + 0x14)) = r1;
0x00085402 adc sb, sb, 0 | __asm ("adc sb, sb, 0");
0x00085406 cmp r7, r3 |
0x00085408 str r1, [r5, 4] | *((r5 + 4)) = r1;
| if (r7 >= r3) {
0x0008540a bge 0x8541e | goto label_1;
| }
0x0008540c ldr.w r5, [r8, 0x48] | r5 = *((r8 + 0x48));
0x00085410 add r6, r5 | r6 += r5;
0x00085412 ldr r0, [r6, 0x34] | r0 = *((r6 + 0x34));
0x00085414 lsls r6, r7, 5 | r6 = r7 << 5;
0x00085416 adds r7, 1 | r7++;
0x00085418 add r5, r6 | r5 += r6;
0x0008541a cmp r0, 0 |
0x0008541c bne 0x853c4 |
| }
| label_1:
0x0008541e movs r3, 0 | r3 = 0;
0x00085420 str.w r3, [r8, 0x40] | __asm ("str.w r3, [r8, 0x40]");
| if (r2 != 0) {
0x00085424 cbnz r2, 0x8547c | goto label_3;
| }
0x00085426 ldr.w r3, [r8, 0x50] | r3 = *((r8 + 0x50));
0x0008542a cmp r3, 0 |
| if (r3 <= 0) {
0x0008542c ble 0x85488 | goto label_4;
| }
0x0008542e ldr.w r2, [r8, 0x4c] | r2 = *((r8 + 0x4c));
| do {
0x00085432 movs r1, 0 | r1 = 0;
0x00085434 str r1, [sp] | *(sp) = r1;
0x00085436 movs r1, 2 | r1 = 2;
0x00085438 ldr.w r0, [sl, 0x34] | r0 = *((sl + 0x34));
0x0008543c blx 0x83f0 | fcn_000083f0 ();
0x00085440 ldr.w r2, [r8, 0x58] | r2 = *((r8 + 0x58));
0x00085444 movs r1, 3 | r1 = 3;
0x00085446 ldr.w r0, [sl, 0x34] | r0 = *((sl + 0x34));
0x0008544a asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0008544c adds r2, r2, r2 | r2 += r2;
0x0008544e adcs r3, r3 | __asm ("adcs r3, r3");
0x00085450 adds.w r2, r2, fp | r2 += fp;
0x00085454 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00085458 blx 0x7c4c | fcn_00007c4c ();
0x0008545c ldr.w r0, [sl, 0x34] | r0 = *((sl + 0x34));
0x00085460 blx 0x809c | fcn_0000809c ();
0x00085464 ldr.w r0, [sl, 0x34] | r0 = *((sl + 0x34));
0x00085468 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0008546c mov r3, r0 | r3 = r0;
0x0008546e movs r1, 2 | r1 = 2;
0x00085470 ldr.w r0, [sl, 0x34] | r0 = *((sl + 0x34));
0x00085474 str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00085478 blx 0x8248 | fcn_00008248 ();
| label_3:
0x0008547c movs r3, 0 | r3 = 0;
0x0008547e str.w r3, [r8, 0x58] | __asm ("str.w r3, [r8, 0x58]");
0x00085480 adds r0, 0x58 | r0 += 0x58;
0x00085482 add sp, 0xc |
0x00085484 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00085488 ldr r2, [pc, 4] | r2 = *(0x00085490);
0x0008548a add r2, pc | r2 += pc;
0x0008548c b 0x85432 |
| } 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/libsqlite3.so.0.8.6 @ 0x85494 */
| #include <stdint.h>
|
; (fcn) fcn.00085494 () | void fcn_00085494 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00085494 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00085498 mov r6, r2 | r6 = r2;
0x0008549a ldr.w ip, [r1, 0x1c] | ip = *((r1 + 0x1c));
0x0008549e mov r7, r3 | r7 = r3;
0x000854a0 mov r8, r0 | r8 = r0;
0x000854a2 mov r4, r1 | r4 = r1;
0x000854a4 ldr r3, [r0] | r3 = *(r0);
0x000854a6 ldr r2, [r1, 0x10] | r2 = *((r1 + 0x10));
0x000854a8 ldr r5, [r1, 0x28] | r5 = *((r1 + 0x28));
0x000854aa ldr.w lr, [r3, 0x4c] |
0x000854ae add.w r3, r2, ip | r3 = r2 + ip;
0x000854b2 add r3, r6 | r3 += r6;
0x000854b4 cmp r5, r6 |
0x000854b6 add.w r3, r3, 2 | r3 += 2;
0x000854ba it ge |
| if (r5 < r6) {
0x000854bc movge r5, r6 | r5 = r6;
| }
0x000854be cmp r3, lr |
| if (r3 >= lr) {
0x000854c0 blt 0x854da |
0x000854c2 cmp r2, 4 |
| if (r2 > 4) {
0x000854c4 bgt.w 0x8561e | goto label_9;
| }
0x000854c8 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x000854ca add.w r1, r6, 0x14 | r1 = r6 + 0x14;
0x000854ce add r1, r2 | r1 += r2;
0x000854d0 cmp r1, r0 |
| if (r1 > r0) {
0x000854d2 bhi.w 0x8563a | goto label_10;
| }
| label_4:
0x000854d6 ldr.w ip, [r4, 0x1c] | ip = *((r4 + 0x1c));
| }
| label_5:
0x000854da ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000854dc ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x000854de subs r2, r2, r3 | r2 -= r3;
0x000854e0 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000854e2 cmp r2, 0x80 |
0x000854e4 add.w r0, r1, ip | r0 = r1 + ip;
0x000854e8 sbcs lr, r3, 0 | __asm ("sbcs lr, r3, 0");
0x000854ec itt lo |
| if (r2 >= 0x80) {
0x000854ee movlo r0, 1 | r0 = 1;
| }
| if (r2 >= 0x80) {
0x000854f0 strblo r2, [r1, ip] | *((r1 + ip)) = r2;
| }
| if (r2 > 0x80) {
0x000854f4 blo 0x85504 |
0x000854f6 cmp.w r2, 0x4000 |
0x000854fa sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x4000) {
0x000854fe blo 0x855fe | goto label_11;
| }
0x00085500 bl 0x8c4c | fcn_00008c4c (r0, r1, r2);
| }
| label_2:
0x00085504 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00085506 ldrb.w r2, [r4, 0x3a] | r2 = *((r4 + 0x3a));
0x0008550a add r3, r0 | r3 += r0;
0x0008550c str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x0008550e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00085510 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00085512 cmp r2, 0 |
| if (r2 != 0) {
0x00085514 bne 0x85592 | goto label_12;
| }
0x00085516 cmp r5, 0 |
0x00085518 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
| if (r5 <= 0) {
0x0008551a ble.w 0x85696 | goto label_13;
| }
0x0008551e subs r3, 1 | r3--;
0x00085520 mov ip, r2 |
0x00085522 mov r1, r7 | r1 = r7;
0x00085524 b 0x8552e |
| while (r0 == r2) {
0x00085526 add.w ip, ip, 1 |
0x0008552a cmp r5, ip |
| if (r5 == ip) {
0x0008552c beq 0x85610 | goto label_14;
| }
0x0008552e ldrb r0, [r3, 1]! | r0 = *((r3 += 1));
0x00085532 mov sb, r1 | sb = r1;
0x00085534 ldrb r2, [r1], 1 | r2 = *(r1);
| r1++;
0x00085538 cmp r0, r2 |
0x0008553a beq 0x85526 |
| }
0x0008553c mov r2, ip | r2 = ip;
0x0008553e sub.w sl, r6, ip | sl = r6 - ip;
0x00085542 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
| label_3:
0x00085544 add.w r8, r8, 0x24 | r8 += 0x24;
0x00085548 add.w r5, r4, 0xc | r5 = r4 + 0xc;
0x0008554c mov r0, r8 | r0 = r8;
0x0008554e mov r1, r5 | r1 = r5;
0x00085550 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
| label_1:
0x00085554 mov r1, r5 | r1 = r5;
0x00085556 asr.w r3, sl, 0x1f | r3 = sl >> 0x1f;
0x0008555a mov r2, sl | r2 = sl;
0x0008555c mov r0, r8 | r0 = r8;
0x0008555e bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00085562 mov r1, r5 | r1 = r5;
0x00085564 mov r3, sb | r3 = sb;
0x00085566 mov r2, sl | r2 = sl;
0x00085568 mov r0, r8 | r0 = r8;
0x0008556a movs r5, 0 | r5 = 0;
0x0008556c bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x00085570 mov r3, r7 | r3 = r7;
0x00085572 mov r2, r6 | r2 = r6;
0x00085574 add.w r1, r4, 0x24 | r1 = r4 + 0x24;
0x00085578 mov r0, r8 | r0 = r8;
0x0008557a str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x0008557c bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x00085580 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x00085582 movs r1, 1 | r1 = 1;
0x00085584 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00085586 strh r1, [r4, 0x38] | *((r4 + 0x38)) = r1;
0x00085588 strb.w r5, [r4, 0x3a] | *((r4 + 0x3a)) = r5;
0x0008558c str r2, [r3] | *(r3) = r2;
| label_0:
0x0008558e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_12:
0x00085592 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00085594 cmp r3, 1 |
| if (r3 == 1) {
0x00085596 beq 0x8568a | goto label_15;
| }
0x00085598 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0008559a mov sb, r6 | sb = r6;
| if (r3 == 0) {
0x0008559c cbz r3, 0x855c4 | goto label_8;
| }
0x0008559e cmp r5, 0 |
0x000855a0 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
| if (r5 <= 0) {
0x000855a2 ble.w 0x856ac | goto label_16;
| }
0x000855a6 subs r3, r7, 1 | r3 = r7 - 1;
0x000855a8 subs r1, 1 | r1--;
0x000855aa add r5, r3 | r5 += r3;
0x000855ac b 0x855b2 |
| while (ip == r0) {
0x000855ae cmp r5, r3 |
| if (r5 == r3) {
0x000855b0 beq 0x85690 | goto label_17;
| }
0x000855b2 adds r2, r3, 2 | r2 = r3 + 2;
0x000855b4 ldrb ip, [r1, 1]! | ip = *((r1 += 1));
0x000855b8 ldrb r0, [r3, 1]! | r0 = *((r3 += 1));
0x000855bc sub.w sb, r2, r7 | sb = r2 - r7;
0x000855c0 cmp ip, r0 |
0x000855c2 beq 0x855ae |
| }
| label_8:
0x000855c4 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x000855c6 cmp r3, 0 |
| if (r3 != 0) {
0x000855c8 bne 0x85678 | goto label_18;
| }
0x000855ca ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x000855ce cmp r3, 0 |
| if (r3 != 0) {
0x000855d0 bne 0x8558e | goto label_0;
| }
| label_6:
0x000855d2 add.w r5, r8, 0x24 | r5 = r8 + 0x24;
0x000855d6 mov r2, sb | r2 = sb;
0x000855d8 str r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
0x000855da add.w r1, r4, 0x4c | r1 = r4 + 0x4c;
0x000855de mov r3, r7 | r3 = r7;
0x000855e0 mov r0, r5 | r0 = r5;
0x000855e2 bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x000855e6 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x000855ea ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x000855ec str r2, [r4, 0x58] | *((r4 + 0x58)) = r2;
0x000855ee cmp r3, 0 |
| if (r3 != 0) {
0x000855f0 bne 0x8558e | goto label_0;
| }
| label_7:
0x000855f2 mov r8, r5 | r8 = r5;
0x000855f4 mov sb, r7 | sb = r7;
0x000855f6 add.w r5, r4, 0xc | r5 = r4 + 0xc;
0x000855fa mov sl, r6 | sl = r6;
0x000855fc b 0x85554 | goto label_1;
| label_11:
0x000855fe lsrs r3, r2, 7 | r3 = r2 >> 7;
0x00085600 and r2, r2, 0x7f | r2 &= 0x7f;
0x00085604 strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x00085606 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x0008560a strb r3, [r0] | *(r0) = r3;
0x0008560c movs r0, 2 | r0 = 2;
0x0008560e b 0x85504 | goto label_2;
| label_14:
0x00085610 asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x00085612 mov r2, r5 | r2 = r5;
0x00085614 sub.w sl, r6, r5 | sl = r6 - r5;
0x00085618 add.w sb, r7, r5 | sb = r7 + r5;
0x0008561c b 0x85544 | goto label_3;
| label_9:
0x0008561e bl 0x84f60 | fcn_00084f60 (r0, r1, r2);
0x00085622 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00085626 cmp r3, 0 |
| if (r3 != 0) {
0x00085628 bne 0x8558e | goto label_0;
| }
0x0008562a ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0008562c add.w r1, r6, 0x14 | r1 = r6 + 0x14;
0x00085630 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00085632 add r1, r2 | r1 += r2;
0x00085634 cmp r1, r0 |
| if (r1 < r0) {
0x00085636 bls.w 0x854d6 | goto label_4;
| }
| label_10:
0x0008563a cmp r0, r1 |
| if (r0 >= r1) {
0x0008563c bhs.w 0x854d6 | goto label_4;
| }
0x00085640 cmp r0, 0 |
0x00085642 it eq |
| if (r0 != 0) {
0x00085644 moveq r0, 0x40 | r0 = 0x40;
| }
0x00085646 asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x00085648 cmp r0, r1 |
0x0008564a mov sb, r0 | sb = r0;
0x0008564c sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r0 >= r1) {
0x00085650 bhs 0x85660 | goto label_19;
| }
| do {
0x00085652 adds.w sb, sb, sb | sb += sb;
0x00085656 adcs r3, r3 | __asm ("adcs r3, r3");
0x00085658 cmp sb, r1 |
0x0008565a sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
0x0008565e blo 0x85652 |
| } while (sb <= r1);
| label_19:
0x00085660 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00085662 mov r2, sb | r2 = sb;
0x00085664 blx 0x8638 | r0 = fcn_00008638 ();
| if (r0 == 0) {
0x00085668 cbz r0, 0x8569e | goto label_20;
| }
0x0008566a ldr.w ip, [r4, 0x1c] | ip = *((r4 + 0x1c));
0x0008566e ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00085670 str.w sb, [r4, 0x14] | __asm ("str.w sb, [r4, 0x14]");
0x00085674 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00085676 b 0x854da | goto label_5;
| label_18:
0x00085678 mov r1, r4 | r1 = r4;
0x0008567a mov r0, r8 | r0 = r8;
0x0008567c bl 0x85388 | fcn_00085388 (r0, r1);
0x00085680 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00085684 cmp r3, 0 |
| if (r3 != 0) {
0x00085686 bne 0x8558e | goto label_0;
| }
0x00085688 b 0x855d2 | goto label_6;
| label_15:
0x0008568a add.w r5, r8, 0x24 | r5 = r8 + 0x24;
0x0008568e b 0x855f2 | goto label_7;
| label_17:
0x00085690 add.w sb, sb, 1 | sb++;
0x00085694 b 0x855c4 | goto label_8;
| label_13:
0x00085696 mov sb, r7 | sb = r7;
0x00085698 mov sl, r6 | sl = r6;
0x0008569a mov r3, r2 | r3 = r2;
0x0008569c b 0x85544 | goto label_3;
| label_20:
0x0008569e movs r3, 7 | r3 = 7;
0x000856a0 str.w r3, [r8, 0x24] | __asm ("str.w r3, [r8, 0x24]");
0x000856a4 ldr.w ip, [r4, 0x1c] | ip = *((r4 + 0x1c));
0x000856a8 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000856aa b 0x854da | goto label_5;
| label_16:
0x000856ac mov.w sb, 1 | sb = 1;
0x000856b0 b 0x855c4 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x859f8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000859f8 () | void fcn_000859f8 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int32_t var_30h;
| int32_t var_30h_2;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000859f8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000859fc mov r6, r0 | r6 = r0;
0x000859fe ldr r5, [pc, 0x250] |
0x00085a00 sub sp, 0x44 |
0x00085a02 mov sb, r1 | sb = r1;
0x00085a04 ldr r4, [pc, 0x24c] | r4 = *(0x85c54);
0x00085a06 add r5, pc | r5 = 0x10b65c;
0x00085a08 ldr r0, [r0] | r0 = *(r0);
0x00085a0a ldr r4, [r5, r4] |
0x00085a0c ldr r7, [r0, 0xc] | r7 = *((r0 + 0xc));
0x00085a0e ldr r4, [r4] | r4 = imp._ITM_deregisterTMCloneTable;
0x00085a10 str r4, [sp, 0x3c] | var_3ch = r4;
0x00085a12 mov.w r4, 0 | r4 = 0;
0x00085a16 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x00085a1a ldrd r4, r3, [r6, 0x38] | __asm ("ldrd r4, r3, [r6, 0x38]");
0x00085a1e ands r1, r3, 0x40 | r1 = r3 & 0x40;
| if (r1 != r3) {
0x00085a22 beq 0x85a30 |
0x00085a24 ldr r1, [r7, 0x30] | r1 = *((r7 + 0x30));
0x00085a26 cmp r1, 0 |
| if (r1 != 0) {
0x00085a28 bne 0x85abe | goto label_15;
| }
| label_4:
0x00085a2a bic r3, r3, 0x40 | r3 = BIT_MASK (r3, 0x40);
0x00085a2e str r3, [r6, 0x3c] | *((r6 + 0x3c)) = r3;
| }
| if (r4 == 0) {
0x00085a30 cbz r4, 0x85a86 | goto label_16;
| }
0x00085a32 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
| if (r3 != 0) {
0x00085a34 cbnz r3, 0x85a86 | goto label_16;
| }
0x00085a36 mov r2, sb | r2 = sb;
0x00085a38 mov r0, sb | r0 = sb;
0x00085a3a cmp.w sb, 0 |
| if (sb != 0) {
0x00085a3e beq 0x85a4a |
0x00085a40 add.w r3, sb, 5 | r3 = sb + 5;
0x00085a44 ldr.w r2, [r4, r3, lsl 2] | offset_0 = r3 << 2;
| r2 = *((r4 + offset_0));
0x00085a48 mov r0, r2 | r0 = r2;
| }
0x00085a4a add.w r3, sb, 6 | r3 = sb + 6;
0x00085a4e ldr.w r3, [r4, r3, lsl 2] | offset_1 = r3 << 2;
| r3 = *((r4 + offset_1));
0x00085a52 subs r3, r3, r2 | r3 -= r2;
0x00085a54 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00085a56 str r3, [r2] | *(r2) = r3;
0x00085a58 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00085a5a ldr r2, [sp, 8] | r2 = var_8h;
0x00085a5c add r3, r0 | r3 += r0;
0x00085a5e str r3, [r2] | *(r2) = r3;
| do {
0x00085a60 ldr r2, [pc, 0x1f4] |
0x00085a62 ldr r3, [pc, 0x1f0] | r3 = *(0x85c56);
0x00085a64 add r2, pc | r2 = 0x10b6c0;
0x00085a66 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00085a68 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00085a6a ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00085a6c eors r2, r3 | r2 ^= r3;
0x00085a6e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00085a72 bne.w 0x85c4a | goto label_17;
| }
0x00085a76 mov r0, r1 | r0 = r1;
0x00085a78 add sp, 0x44 |
0x00085a7a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00085a7e ldr r3, [r6, 0x3c] | r3 = *((r6 + 0x3c));
0x00085a80 bic r3, r3, 0x40 | r3 = BIT_MASK (r3, 0x40);
0x00085a84 str r3, [r6, 0x3c] | *((r6 + 0x3c)) = r3;
| label_16:
0x00085a86 ldr r3, [r6, 0x34] | r3 = *((r6 + 0x34));
0x00085a88 ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x00085a8a ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00085a8c ldr.w r2, [r2, sb, lsl 2] | offset_2 = sb << 2;
| r2 = *((r2 + offset_2));
0x00085a90 ldr r3, [r2] | r3 = *(r2);
0x00085a92 ldr r4, [r3, 4] | r4 = *((r3 + 4));
| if (r4 == 0) {
0x00085a94 cbz r4, 0x85aa4 | goto label_18;
| }
| label_0:
0x00085a96 movs r3, 0 | r3 = 0;
0x00085a98 ldr r0, [sp, 8] | r0 = var_8h;
0x00085a9a mov r2, r3 | r2 = r3;
0x00085a9c str r3, [r0] | *(r0) = r3;
| label_1:
0x00085a9e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00085aa0 str r2, [r3] | *(r3) = r2;
0x00085aa2 b 0x85a60 |
| } while (1);
| label_18:
0x00085aa4 ldrd r6, r4, [r3, 0x10] | __asm ("ldrd r6, r4, [r3, 0x10]");
0x00085aa8 ldrd r5, r3, [r0, 0x10] | __asm ("ldrd r5, r3, [r0, 0x10]");
0x00085aac cmp r4, r3 |
0x00085aae it eq |
| if (r4 != r3) {
0x00085ab0 cmpeq r6, r5 | __asm ("cmpeq r6, r5");
| goto label_19;
| }
| if (r4 != r3) {
| label_19:
0x00085ab2 bne 0x85a96 | goto label_0;
| }
0x00085ab4 ldrd r3, r2, [r2, 4] | __asm ("ldrd r3, r2, [r2, 4]");
0x00085ab8 ldr r0, [sp, 8] | r0 = var_8h;
0x00085aba str r3, [r0] | *(r0) = r3;
0x00085abc b 0x85a9e | goto label_1;
| label_15:
0x00085abe ldr r5, [r6, 0x34] | r5 = *((r6 + 0x34));
0x00085ac0 movs r1, 0 | r1 = 0;
0x00085ac2 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x00085ac4 lsls r0, r0, 4 | r0 <<= 4;
0x00085ac6 blx 0x7f18 | fcn_00007f18 ();
0x00085aca movs r1, 7 | r1 = 7;
0x00085acc str r0, [sp, 0x18] | var_18h = r0;
0x00085ace cmp r0, 0 |
| if (r0 == 0) {
0x00085ad0 beq 0x85b66 | goto label_12;
| }
0x00085ad2 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x00085ad4 movs r1, 0 | r1 = 0;
0x00085ad6 lsls r2, r2, 4 | r2 <<= 4;
0x00085ad8 blx 0x8264 | fcn_00008264 ();
0x00085adc ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x00085ade cmp r2, 0 |
| if (r2 <= 0) {
0x00085ae0 ble 0x85b34 | goto label_20;
| }
0x00085ae2 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00085ae4 mov.w fp, 0 |
0x00085ae8 ldr.w ip, [sp, 0x18] | ip = var_18h;
0x00085aec movs r0, 1 | r0 = 1;
0x00085aee mov lr, r5 | lr = r5;
0x00085af0 strd r7, r6, [sp, 0x10] | __asm ("strd r7, r6, [var_10h]");
0x00085af4 add.w r8, r3, r2, lsl 2 | r8 = r3 + (r2 << 2);
0x00085af8 b 0x85b20 |
| while (r4 == 0) {
0x00085afa ldr r5, [r2, 8] | r5 = *((r2 + 8));
| if (r5 != 0) {
0x00085afc cbz r5, 0x85b14 |
0x00085afe ldr.w r5, [lr, 8] | r5 = *((lr + 8));
0x00085b02 ldrd r6, r7, [r1, 0x10] | __asm ("ldrd r6, r7, [r1, 0x10]");
0x00085b06 ldrd sl, r5, [r5, 0x10] | __asm ("ldrd sl, r5, [r5, 0x10]");
0x00085b0a cmp r7, r5 |
0x00085b0c it eq |
| if (r7 == r5) {
0x00085b0e cmpeq r6, sl | __asm ("cmpeq r6, sl");
| }
| if (r7 == r5) {
0x00085b10 beq.w 0x85c40 | goto label_21;
| }
| }
| label_14:
0x00085b14 str.w r0, [ip, 0xc] | __asm ("str.w r0, [ip, 0xc]");
| label_2:
0x00085b18 cmp r8, r3 |
0x00085b1a add.w ip, ip, 0x10 |
| if (r8 == r3) {
0x00085b1e beq 0x85b30 | goto label_22;
| }
0x00085b20 ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x00085b24 ldr r1, [r2] | r1 = *(r2);
0x00085b26 cmp r4, 0 |
0x00085b28 beq 0x85afa |
| }
| label_13:
0x00085b2a str.w fp, [r2, 8] | __asm ("str.w fp, [r2, 8]");
0x00085b2e b 0x85b18 | goto label_2;
| label_22:
0x00085b30 ldrd r7, r6, [sp, 0x10] | __asm ("ldrd r7, r6, [var_10h]");
| label_20:
0x00085b34 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00085b36 cmp r3, 0 |
0x00085b38 itttt gt |
| if (r3 <= 0) {
0x00085b3a movgt r5, 0 | r5 = 0;
| }
| if (r3 <= 0) {
0x00085b3c addgt r4, sp, 0x20 | r4 += var_20h;
| }
| if (r3 <= 0) {
0x00085b3e addgt r8, sp, 0x24 | r8 += var_24h;
| }
| if (r3 > 0) {
0x00085b42 str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
| }
| if (r3 <= 0) {
0x00085b46 ble 0x85c3c | goto label_23;
| }
| label_9:
0x00085b48 movs r3, 0 | r3 = 0;
0x00085b4a add.w sb, r5, -1 | sb = r5 + -1;
0x00085b4e subs r3, 1 | r3--;
0x00085b50 str r3, [sp, 0x10] | var_10h = r3;
| label_11:
0x00085b52 mov r3, r4 | r3 = r4;
0x00085b54 mov r2, r8 | r2 = r8;
0x00085b56 mov r1, r5 | r1 = r5;
0x00085b58 mov r0, r6 | r0 = r6;
0x00085b5a bl 0x859a4 | r0 = fcn_000859a4 (r0, r1, r2, r3);
| if (r0 == 0) {
0x00085b5e cbz r0, 0x85b86 | goto label_24;
| }
| label_10:
0x00085b60 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x00085b64 mov r1, r0 | r1 = r0;
| label_12:
0x00085b66 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00085b68 str r1, [sp, 0x10] | var_10h = r1;
0x00085b6a blx 0x84f8 | fcn_000084f8 ();
0x00085b6e ldr r4, [r6, 0x38] | r4 = *((r6 + 0x38));
0x00085b70 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00085b72 cmp r4, 0 |
| if (r4 == 0) {
0x00085b74 beq 0x85a7e | goto label_3;
| }
0x00085b76 ldr r3, [r6, 0x34] | r3 = *((r6 + 0x34));
0x00085b78 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00085b7a ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00085b7e bl 0x156a0 | fcn_000156a0 (r0, r1, r2, r3);
0x00085b82 ldr r3, [r6, 0x3c] | r3 = *((r6 + 0x3c));
0x00085b84 b 0x85a2a | goto label_4;
| label_24:
0x00085b86 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00085b88 ldrd r1, sl, [sp, 0x20] | __asm ("ldrd r1, sl, [var_20h]");
0x00085b8c str r3, [sp, 0x2c] | var_2ch = r3;
0x00085b8e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00085b90 str r1, [sp, 0x14] | var_14h = r1;
0x00085b92 strd r3, sb, [sp, 0x30] | __asm ("strd r3, sb, [var_30h]");
0x00085b96 ldr r3, [r6, 0x34] | r3 = *((r6 + 0x34));
0x00085b98 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00085b9a str r3, [sp, 0x28] | var_28h = r3;
0x00085b9c cmp r2, 0 |
| if (r2 <= 0) {
0x00085b9e ble 0x85bf6 | goto label_25;
| }
0x00085ba0 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00085ba2 mov fp, r4 |
0x00085ba4 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00085ba6 add.w lr, r3, r2, lsl 2 | lr = r3 + (r2 << 2);
0x00085baa b 0x85bbe |
| while (r0 == 0) {
| label_6:
0x00085bac ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
0x00085bae clz r2, r2 | r2 &= r2;
0x00085bb2 lsrs r2, r2, 5 | r2 >>= 5;
| label_5:
0x00085bb4 cmp lr, r3 |
0x00085bb6 str r2, [r1, 8] | *((r1 + 8)) = r2;
0x00085bb8 add.w r1, r1, 0x10 | r1 += 0x10;
| if (lr == r3) {
0x00085bbc beq 0x85bf4 | goto label_26;
| }
| label_8:
0x00085bbe ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x00085bc2 ldr r2, [r2] | r2 = *(r2);
0x00085bc4 ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
0x00085bc6 ldr r0, [r2, 4] | r0 = *((r2 + 4));
0x00085bc8 cmp r0, 0 |
0x00085bca beq 0x85bac |
| }
0x00085bcc ldr.w ip, [r0] | ip = *(r0);
0x00085bd0 movs r2, 0 | r2 = 0;
0x00085bd2 cmp.w ip, 0 |
| if (ip <= 0) {
0x00085bd6 ble 0x85bb4 | goto label_5;
| }
| label_7:
0x00085bd8 ldr r4, [r0, 4]! | r4 = *((r0 += 4));
0x00085bdc cmp r4, r5 |
| if (r4 == r5) {
0x00085bde beq 0x85bac | goto label_6;
| }
0x00085be0 adds r2, 1 | r2++;
0x00085be2 cmp r2, ip |
| if (r2 != ip) {
0x00085be4 bne 0x85bd8 | goto label_7;
| }
0x00085be6 cmp lr, r3 |
0x00085be8 mov.w r2, 0 | r2 = 0;
0x00085bec str r2, [r1, 8] | *((r1 + 8)) = r2;
0x00085bee add.w r1, r1, 0x10 | r1 += 0x10;
| if (lr != r3) {
0x00085bf2 bne 0x85bbe | goto label_8;
| }
| label_26:
0x00085bf4 mov r4, fp | r4 = fp;
| label_25:
0x00085bf6 adds r5, 1 | r5++;
0x00085bf8 cmp.w sl, 0 |
| if (sl == 0) {
0x00085bfc beq 0x85c2e | goto label_27;
| }
0x00085bfe ldr r1, [sp, 0x14] | r1 = var_14h;
0x00085c00 mov r3, sl | r3 = sl;
0x00085c02 ldrd r0, r2, [r7, 0x38] | __asm ("ldrd r0, r2, [r7, 0x38]");
0x00085c06 str r1, [sp] | *(sp) = r1;
0x00085c08 ldr r1, [pc, 0x50] |
0x00085c0a add r1, pc | r1 = 0x10b86a;
0x00085c0c str r1, [sp, 4] | var_4h = r1;
0x00085c0e add r1, sp, 0x28 | r1 += var_28h;
0x00085c10 ldr.w sl, [r2, 8] | sl = *((r2 + 8));
0x00085c14 movs r2, 4 | r2 = 4;
0x00085c16 blx sl | sl (r0, r1, r2, r3);
0x00085c18 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00085c1a cmp r3, r5 |
0x00085c1c ite le |
| if (r3 > r5) {
0x00085c1e movle r3, 0 | r3 = 0;
| }
| if (r3 <= r5) {
0x00085c20 movgt r3, 1 | r3 = 1;
| }
0x00085c22 cmp r0, 0 |
0x00085c24 it ne |
| if (r0 == 0) {
0x00085c26 movne r3, 0 | r3 = 0;
| }
0x00085c28 cmp r3, 0 |
| if (r3 != 0) {
0x00085c2a bne 0x85b48 | goto label_9;
| }
0x00085c2c b 0x85b60 | goto label_10;
| label_27:
0x00085c2e ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x00085c30 add.w sb, sb, 1 | sb++;
0x00085c34 cmp r3, r5 |
| if (r3 > r5) {
0x00085c36 bgt 0x85b52 | goto label_11;
| }
0x00085c38 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
| label_23:
0x00085c3c movs r1, 0 | r1 = 0;
0x00085c3e b 0x85b66 | goto label_12;
| label_21:
0x00085c40 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00085c42 cmp r1, 0 |
| if (r1 == 0) {
0x00085c44 beq.w 0x85b2a | goto label_13;
| }
0x00085c48 b 0x85b14 | goto label_14;
| label_17:
0x00085c4a blx 0x7e8c | fcn_00007e8c ();
0x00085c4e nop |
0x00085c50 strh r2, [r1, 0x14] | *((r1 + 0x14)) = r2;
0x00085c52 movs r4, r0 | r4 = r0;
0x00085c54 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00085c56 movs r0, r0 |
0x00085c58 strh r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
0x00085c5a movs r4, r0 | r4 = r0;
0x00085c5c cmp r1, 0xbf |
0x00085c5e invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x85db8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00085db8 () | void fcn_00085db8 (int16_t arg1) {
| int16_t var_1h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
0x00085db8 blmi 0x1dd8790 | __asm ("blmi 0x1dd8790");
0x00085dbc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00085dc0 sub sp, 0x1c |
0x00085dc2 add r2, pc | r2 += pc;
0x00085dc4 mov r7, r0 | r7 = r0;
0x00085dc6 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00085dc8 ldr r2, [r0] | r2 = *(r0);
0x00085dca ldr r3, [r3] | r3 = *(r3);
0x00085dcc str r3, [sp, 0x14] | var_14h = r3;
0x00085dce mov.w r3, 0 | r3 = 0;
0x00085dd2 ldr r3, [r0, 0x34] | r3 = *((r0 + 0x34));
0x00085dd4 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00085dd6 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00085dd8 str r2, [sp] | *(sp) = r2;
0x00085dda cmp r3, 0 |
| if (r3 == 0) {
0x00085ddc beq.w 0x85f26 | goto label_5;
| }
0x00085de0 ldr.w r8, [r0, 0x68] | r8 = *((r0 + 0x68));
0x00085de4 ldr r5, [r3, 0x10] | r5 = *((r3 + 0x10));
0x00085de6 cmp.w r8, 0 |
| if (r8 == 0) {
0x00085dea beq.w 0x85f3e | goto label_6;
| }
| label_2:
0x00085dee cmp r5, 0 |
0x00085df0 itttt gt |
| if (r5 <= 0) {
0x00085df2 addgt r4, r8, 8 | r4 = r8 + 8;
| }
| if (r5 <= 0) {
0x00085df6 movgt sb, 0 | sb = 0;
| }
| if (r5 > 0) {
0x00085dfa add.w fp, sp, 0x10 |
| }
| if (r5 > 0) {
0x00085dfc lsrs r0, r2, 0xc | r0 = r2 >> 0xc;
| }
0x00085dfe add.w sl, sp, 0xc | sl += var_ch;
| if (r0 <= r2) {
0x00085e02 ble.w 0x85f2a | goto label_7;
| }
| do {
0x00085e06 mov r3, fp | r3 = fp;
0x00085e08 mov r2, sl | r2 = sl;
0x00085e0a mov r1, sb | r1 = sb;
0x00085e0c mov r0, r7 | r0 = r7;
0x00085e0e bl 0x859f8 | r0 = fcn_000859f8 (r0, r1, r2, r3);
0x00085e12 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00085e14 cbz r0, 0x85e44 |
0x00085e16 mov.w sb, 0 | sb = 0;
| label_1:
0x00085e1a ldr r3, [r7, 0x3c] | r3 = *((r7 + 0x3c));
0x00085e1c str.w sb, [r7, 0x70] | __asm ("str.w sb, [r7, 0x70]");
0x00085e20 bic r3, r3, 8 | r3 = BIT_MASK (r3, 8);
0x00085e24 str r3, [r7, 0x3c] | *((r7 + 0x3c)) = r3;
| label_3:
0x00085e26 ldr r2, [pc, 0x16c] |
0x00085e28 ldr r3, [pc, 0x164] | r3 = *(0x85f90);
0x00085e2a add r2, pc | r2 = 0x10bdc4;
0x00085e2c ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00085e2e ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00085e30 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00085e32 eors r2, r3 | r2 ^= r3;
0x00085e34 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00085e38 bne.w 0x85f86 | goto label_8;
| }
0x00085e3c mov r0, r6 | r0 = r6;
0x00085e3e add sp, 0x1c |
0x00085e40 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00085e44 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00085e46 add.w r3, r4, 8 | r3 = r4 + 8;
0x00085e4a str r0, [r4] | *(r4) = r0;
0x00085e4c mov r2, r4 | r2 = r4;
0x00085e4e str r0, [r4, 4] | *((r4 + 4)) = r0;
0x00085e50 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00085e52 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00085e54 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00085e56 str r1, [r4, -0x4] | *((r4 - 0x4)) = r1;
0x00085e5a str r0, [r4, -0x8] | *((r4 - 0x8)) = r0;
0x00085e5e bl 0xbc8c | r0 = fcn_0000bc8c (r0, r1, r2, r3);
| if (r0 != 0) {
0x00085e62 cbz r0, 0x85e6a |
0x00085e64 mov.w r3, 1 | r3 = 1;
0x00085e68 strb r3, [r4, 5] | *((r4 + 5)) = r3;
| }
0x00085e6a add.w sb, sb, 1 | sb++;
0x00085e6e adds r4, 0x18 | r4 += 0x18;
0x00085e70 cmp r5, sb |
0x00085e72 bgt 0x85e06 |
| } while (r5 > sb);
0x00085e74 mov.w fp, 0 |
0x00085e78 str r6, [sp, 4] | var_4h = r6;
0x00085e7a mov sl, fp | sl = fp;
| label_0:
0x00085e7c mov r3, r8 | r3 = r8;
0x00085e7e movs r0, 0 | r0 = 0;
0x00085e80 mov.w r4, -1 | r4 = -1;
| do {
0x00085e84 ldrb r2, [r3, 0xd] | r2 = *((r3 + 0xd));
| if (r2 == 0) {
0x00085e86 cbnz r2, 0x85ea4 |
0x00085e88 adds r2, r4, 1 | r2 = r4 + 1;
| if (r2 == r4) {
0x00085e8a beq 0x85f70 | goto label_9;
| }
0x00085e8c add.w r2, r4, r4, lsl 1 | r2 = r4 + (r4 << 1);
0x00085e90 ldr r6, [r3, 0x10] | r6 = *((r3 + 0x10));
0x00085e92 add.w r2, r8, r2, lsl 3 | r2 = r8 + (r2 << 3);
0x00085e96 ldrd r1, r2, [r2, 0x10] | __asm ("ldrd r1, r2, [r2, 0x10]");
0x00085e9a cmp r6, r1 |
0x00085e9c ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x00085e9e sbcs.w r2, r1, r2 | __asm ("sbcs.w r2, r1, r2");
| if (r6 < r1) {
0x00085ea2 blt 0x85f70 | goto label_9;
| }
| }
| label_4:
0x00085ea4 adds r0, 1 | r0++;
0x00085ea6 adds r3, 0x18 | r3 += 0x18;
0x00085ea8 cmp r5, r0 |
0x00085eaa bne 0x85e84 |
| } while (r5 != r0);
0x00085eac adds r3, r4, 1 | r3 = r4 + 1;
| if (r3 == r4) {
0x00085eae beq 0x85f80 | goto label_10;
| }
0x00085eb0 ldr r3, [r7, 0x6c] | r3 = *((r7 + 0x6c));
0x00085eb2 add.w sb, fp, 1 | sb += var_1h;
0x00085eb6 ldr r0, [r7, 0x74] | r0 = *((r7 + 0x74));
0x00085eb8 cmp r3, sb |
| if (r3 <= sb) {
0x00085eba bgt 0x85eda |
0x00085ebc mov.w r2, 0x180 | r2 = 0x180;
0x00085ec0 movs r6, 0x20 | r6 = 0x20;
| if (r3 != 0) {
0x00085ec2 cbz r3, 0x85ecc |
0x00085ec4 lsls r6, r3, 1 | r6 = r3 << 1;
0x00085ec6 add.w r3, r6, r3, lsl 2 | r3 = r6 + (r3 << 2);
0x00085eca lsls r2, r3, 2 | r2 = r3 << 2;
| }
0x00085ecc movs r3, 0 | r3 = 0;
0x00085ece blx 0x8638 | r0 = fcn_00008638 ();
0x00085ed2 cmp r0, 0 |
| if (r0 == 0) {
0x00085ed4 beq 0x85f7a | goto label_11;
| }
0x00085ed6 str r6, [r7, 0x6c] | *((r7 + 0x6c)) = r6;
0x00085ed8 str r0, [r7, 0x74] | *((r7 + 0x74)) = r0;
| }
0x00085eda add.w r1, r4, r4, lsl 1 | r1 = r4 + (r4 << 1);
0x00085ede str.w r4, [r0, sl] | __asm ("str.w r4, [r0, sl]");
0x00085ee2 add.w r2, r0, sl | r2 = r0 + sl;
0x00085ee6 add.w r4, r8, r1, lsl 3 | r4 = r8 + (r1 << 3);
0x00085eea ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00085eec bic r0, r3, 0x80000000 | r0 = BIT_MASK (r3, 0x80000000);
0x00085ef0 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00085ef2 strd r3, r0, [r2, 4] | __asm ("strd r3, r0, [r2, 4]");
0x00085ef6 ldr r2, [sp] | r2 = *(sp);
0x00085ef8 cmp r3, r2 |
0x00085efa ite lt |
| if (r3 >= r2) {
0x00085efc movlt r2, 0 | r2 = 0;
| }
| if (r3 < r2) {
0x00085efe movge r2, 1 | r2 = 1;
| }
0x00085f00 orrs.w r2, r2, r3, lsr 31 | r2 |= (r3 >> 31);
| if (r2 != r2) {
0x00085f04 bne 0x85f74 | goto label_12;
| }
0x00085f06 ldr.w r0, [r8, r1, lsl 3] | offset_0 = r1 << 3;
| r0 = *((r8 + offset_0));
0x00085f0a add.w r3, r4, 0x10 | r3 = r4 + 0x10;
0x00085f0e ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00085f10 add.w r2, r4, 8 | r2 = r4 + 8;
0x00085f14 bl 0xbc8c | r0 = fcn_0000bc8c (r0, r1, r2, r3);
| if (r0 != 0) {
0x00085f18 cbz r0, 0x85f1e |
0x00085f1a movs r3, 1 | r3 = 1;
0x00085f1c strb r3, [r4, 0xd] | *((r4 + 0xd)) = r3;
| }
0x00085f1e add.w sl, sl, 0xc | sl += 0xc;
0x00085f22 mov fp, sb |
0x00085f24 b 0x85e7c | goto label_0;
| label_5:
0x00085f26 ldr r3, [r0, 0x68] | r3 = *((r0 + 0x68));
0x00085f28 cbz r3, 0x85f30 |
| while (1) {
| label_7:
0x00085f2a movs r6, 0 | r6 = 0;
0x00085f2c mov sb, r6 | sb = r6;
0x00085f2e b 0x85e1a | goto label_1;
0x00085f30 movs r0, 0 | r0 = 0;
0x00085f32 movs r1, 0 | r1 = 0;
0x00085f34 blx 0x7f18 | r0 = fcn_00007f18 ();
| if (r0 == 0) {
0x00085f38 cbz r0, 0x85f68 | goto label_13;
| }
0x00085f3a str r0, [r7, 0x68] | *((r7 + 0x68)) = r0;
0x00085f3c b 0x85f2a |
| }
| label_6:
0x00085f3e add.w r4, r5, r5, lsl 1 | r4 = r5 + (r5 << 1);
0x00085f42 mov r1, r8 | r1 = r8;
0x00085f44 mov r6, r8 | r6 = r8;
0x00085f46 lsls r4, r4, 3 | r4 <<= 3;
0x00085f48 mov r0, r4 | r0 = r4;
0x00085f4a blx 0x7f18 | r0 = fcn_00007f18 ();
0x00085f4e mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x00085f50 cbz r0, 0x85f60 |
0x00085f52 mov r2, r4 | r2 = r4;
0x00085f54 mov r1, r6 | r1 = r6;
0x00085f56 blx 0x8264 | fcn_00008264 ();
0x00085f5a str.w r8, [r7, 0x68] | __asm ("str.w r8, [r7, 0x68]");
0x00085f5e b 0x85dee | goto label_2;
| }
| if (r4 != 0) {
0x00085f60 cbz r4, 0x85f68 |
0x00085f62 movs r6, 7 | r6 = 7;
0x00085f64 str r0, [r7, 0x68] | *((r7 + 0x68)) = r0;
0x00085f66 b 0x85e26 | goto label_3;
| }
| label_13:
0x00085f68 movs r3, 0 | r3 = 0;
0x00085f6a mov r6, r3 | r6 = r3;
0x00085f6c str r3, [r7, 0x68] | *((r7 + 0x68)) = r3;
0x00085f6e b 0x85e26 | goto label_3;
| label_9:
0x00085f70 mov r4, r0 | r4 = r0;
0x00085f72 b 0x85ea4 | goto label_4;
| label_12:
0x00085f74 movw r6, 0x10b | r6 = 0x10b;
0x00085f78 b 0x85e1a | goto label_1;
| label_11:
0x00085f7a mov sb, fp | sb = fp;
0x00085f7c movs r6, 7 | r6 = 7;
0x00085f7e b 0x85e1a | goto label_1;
| label_10:
0x00085f80 ldr r6, [sp, 4] | r6 = var_4h;
0x00085f82 mov sb, fp | sb = fp;
0x00085f84 b 0x85e1a | goto label_1;
| label_8:
0x00085f86 blx 0x7e8c | fcn_00007e8c ();
0x00085f8a nop |
0x00085f8c ldrb r6, [r1, 0x1b] | r6 = *((r1 + 0x1b));
0x00085f8e movs r4, r0 | r4 = r0;
0x00085f90 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00085f92 movs r0, r0 |
0x00085f94 ldrb r6, [r4, 0x19] | r6 = *((r4 + 0x19));
0x00085f96 movs r4, r0 | r4 = r0;
0x00085f98 push {r3, r4, r5, r6, r7, lr} |
0x00085f9a mov r4, r1 | r4 = r1;
0x00085f9c ldr r1, [r0, 0x3c] | r1 = *((r0 + 0x3c));
0x00085f9e mov r7, r3 | r7 = r3;
0x00085fa0 mov r5, r0 | r5 = r0;
0x00085fa2 mov r6, r2 | r6 = r2;
0x00085fa4 lsls r3, r1, 0x1c | r3 = r1 << 0x1c;
0x00085fa6 bmi 0x85fd2 |
| while (r0 == 0) {
0x00085fa8 cmp r4, 0 |
| if (r4 >= 0) {
0x00085faa blt 0x85fce |
0x00085fac ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x00085fae cmp r3, r4 |
| if (r3 <= r4) {
0x00085fb0 ble 0x85fce | goto label_14;
| }
0x00085fb2 add.w r4, r4, r4, lsl 1 | r4 += (r4 << 1);
0x00085fb6 ldr r1, [r5, 0x74] | r1 = *((r5 + 0x74));
0x00085fb8 ldr r2, [sp, 0x18] | r2 = var_0h;
0x00085fba movs r0, 0 | r0 = 0;
0x00085fbc lsls r4, r4, 2 | r4 <<= 2;
0x00085fbe ldr r3, [r1, r4] | r3 = *((r1 + r4));
0x00085fc0 add r1, r4 | r1 += r4;
0x00085fc2 str r3, [r6] | *(r6) = r3;
0x00085fc4 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00085fc6 str r3, [r7] | *(r7) = r3;
0x00085fc8 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00085fca str r3, [r2] | *(r2) = r3;
0x00085fcc pop {r3, r4, r5, r6, r7, pc} |
| }
| label_14:
0x00085fce movs r0, 0x19 | r0 = 0x19;
0x00085fd0 pop {r3, r4, r5, r6, r7, pc} |
0x00085fd2 bl 0x85db8 | r0 = fcn_00085db8 (r0);
0x00085fd6 cmp r0, 0 |
0x00085fd8 beq 0x85fa8 |
| }
0x00085fda 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/libsqlite3.so.0.8.6 @ 0x866dc */
| #include <stdint.h>
|
; (fcn) fcn.000866dc () | void fcn_000866dc (int16_t arg1) {
| int16_t var_34h;
| int16_t var_8h_4;
| int16_t var_ch;
| r0 = arg1;
0x000866dc ldr r2, [pc, 0xc8] |
0x000866de ldr r3, [pc, 0xcc] | r3 = *(0x867ae);
0x000866e0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000866e4 mov r4, r0 | r4 = r0;
0x000866e6 add r2, pc | r2 = 0x10ce92;
0x000866e8 ldr r5, [r0, 0x38] | r5 = *((r0 + 0x38));
0x000866ea sub sp, 0x14 |
0x000866ec ldr r3, [r2, r3] |
0x000866ee ldr r0, [r5] | r0 = *(r5);
0x000866f0 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000866f2 str r3, [sp, 0xc] | var_ch = r3;
0x000866f4 mov.w r3, 0 | r3 = 0;
0x000866f8 blx 0x809c | r0 = fcn_0000809c ();
0x000866fc cmp r0, 0x65 |
| if (r0 == 0x65) {
0x000866fe beq 0x8671e | goto label_1;
| }
0x00086700 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x00086702 beq 0x8672a | goto label_2;
| }
| do {
| label_0:
0x00086704 ldr r2, [pc, 0xa8] |
0x00086706 ldr r3, [pc, 0xa4] | r3 = *(0x867ae);
0x00086708 add r2, pc | r2 = 0x10cebc;
0x0008670a ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008670c ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008670e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00086710 eors r2, r3 | r2 ^= r3;
0x00086712 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00086716 bne 0x867a4 | goto label_3;
| }
0x00086718 add sp, 0x14 |
0x0008671a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x0008671e ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00086720 movs r0, 0 | r0 = 0;
0x00086722 orr r3, r3, 1 | r3 |= 1;
0x00086726 str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x00086728 b 0x86704 |
| } while (1);
| label_2:
0x0008672a ldr r0, [r5] | r0 = *(r5);
0x0008672c movs r1, 0 | r1 = 0;
0x0008672e blx 0x80d8 | fcn_000080d8 ();
0x00086732 strd r0, r1, [r5, 8] | __asm ("strd r0, r1, [r5, 8]");
0x00086736 movs r1, 1 | r1 = 1;
0x00086738 ldr r0, [r5] | r0 = *(r5);
0x0008673a blx 0x8184 | fcn_00008184 ();
0x0008673e movs r1, 1 | r1 = 1;
0x00086740 mov r7, r0 | r7 = r0;
0x00086742 ldr r0, [r5] | r0 = *(r5);
0x00086744 blx 0x7cd0 | fcn_00007cd0 ();
0x00086748 cmp r7, 0 |
0x0008674a mov r6, r0 | r6 = r0;
| if (r7 <= 0) {
0x0008674c ble 0x86792 | goto label_4;
| }
0x0008674e ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00086750 add.w sl, r3, -1 | sl = r3 + -1;
0x00086754 adds r3, r0, r7 | r3 = r0 + r7;
0x00086756 cmp.w sl, 0 |
0x0008675a str r3, [sp, 4] | var_34h = r3;
| if (sl <= 0) {
0x0008675c ble 0x8679e | goto label_5;
| }
0x0008675e movs r7, 0 | r7 = 0;
0x00086760 add.w sb, r5, 0x14 | sb = r5 + 0x14;
0x00086764 mov r8, r7 | r8 = r7;
0x00086766 add.w fp, sp, 8 |
| do {
0x0008676a mov r0, r6 | r0 = r6;
0x0008676c mov r1, fp | r1 = fp;
0x0008676e bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00086772 ldr r3, [sp, 8] | r3 = var_8h_4;
0x00086774 add.w r8, r8, 1 | r8++;
0x00086778 cmp r8, sl |
0x0008677a add r6, r0 | r6 += r0;
0x0008677c add r7, r3 | r7 += r3;
0x0008677e str r7, [sb, 4]! | *((sb += 4)) = r7;
0x00086782 bne 0x8676a |
| } while (r8 != sl);
0x00086784 ldr r3, [sp, 4] | r3 = var_34h;
0x00086786 subs r7, r3, r6 | r7 = r3 - r6;
| do {
0x00086788 add.w sl, sl, 6 | sl += 6;
0x0008678c str.w r7, [r5, sl, lsl 2] | __asm ("str.w r7, [r5, sl, lsl 2]");
0x00086790 str r6, [r5, 0x10] | *((r5 + 0x10)) = r6;
| label_4:
0x00086792 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x00086794 movs r0, 0 | r0 = 0;
0x00086796 orr r3, r3, 0x4e | r3 |= 0x4e;
0x0008679a str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x0008679c b 0x86704 | goto label_0;
| label_5:
0x0008679e mov.w sl, 0 | sl = 0;
0x000867a2 b 0x86788 |
| } while (1);
| label_3:
0x000867a4 blx 0x7e8c | fcn_00007e8c ();
0x000867a8 strb r2, [r5, 0x16] | *((r5 + 0x16)) = r2;
0x000867aa movs r4, r0 | r4 = r0;
0x000867ac lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000867ae movs r0, r0 |
0x000867b0 strb r0, [r1, 0x16] | *((r1 + 0x16)) = r0;
0x000867b2 movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x86a48 */
| #include <stdint.h>
|
; (fcn) fcn.00086a48 () | void fcn_00086a48 (int16_t arg1, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_ch_5;
| int16_t s;
| int16_t var_18h;
| int16_t var_24h;
| int16_t var_8h_3;
| int16_t var_ch_4;
| r0 = arg1;
| r2 = arg3;
| r3 = arg4;
| label_0:
0x00007cf8 invalid | void (*0x7cfc)() ();
0x00086a48 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00086a4c mov r8, r2 | r8 = r2;
0x00086a4e ldr r2, [pc, 0x1fc] |
0x00086a50 mov sb, r3 | sb = r3;
0x00086a52 movs r1, 0x25 | r1 = 0x25;
0x00086a54 ldr r3, [pc, 0x1f8] | r3 = *(0x86c50);
0x00086a56 vpush {d8} | __asm ("vpush {d8}");
0x00086a5a add r2, pc | r2 = 0x10d6ac;
0x00086a5c sub sp, 0x2c |
0x00086a5e str r0, [sp, 4] | var_4h = r0;
0x00086a60 ldr r3, [r2, r3] |
0x00086a62 add r2, sp, 0xc | r2 += var_ch_5;
0x00086a64 ldr r4, [sp, 0x58] | r4 = var_8h_3;
0x00086a66 ldr r6, [sp, 0x5c] | r6 = var_ch_4;
0x00086a68 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00086a6a str r3, [sp, 0x24] | var_24h = r3;
0x00086a6c mov.w r3, 0 | r3 = 0;
0x00086a70 movs r3, 0 | r3 = 0;
0x00086a72 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x00086a76 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00086a78 cbz r0, 0x86a9c |
| label_1:
0x00086a7a ldr r2, [pc, 0x1d8] |
0x00086a7c ldr r3, [pc, 0x1d0] | r3 = *(0x86c50);
0x00086a7e add r2, pc | r2 = 0x10d6d8;
0x00086a80 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00086a82 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00086a84 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00086a86 eors r2, r3 | r2 ^= r3;
0x00086a88 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00086a8c bne.w 0x86c3c | goto label_4;
| }
0x00086a90 mov r0, r5 | r0 = r5;
0x00086a92 add sp, 0x2c |
0x00086a94 vpop {d8} | __asm ("vpop {d8}");
0x00086a98 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00086a9c adds r3, r4, r4 | r3 = r4 + r4;
0x00086a9e mov.w r1, 1 | r1 = 1;
0x00086aa2 adc.w r2, r6, r6 | __asm ("adc.w r2, r6, r6");
0x00086aa6 adds r3, r3, r4 | r3 += r4;
0x00086aa8 adc.w r6, r6, r2 | __asm ("adc.w r6, r6, r2");
0x00086aac ldr r4, [sp, 0xc] | r4 = var_ch_5;
0x00086aae lsrs r7, r6, 0x1f | r7 = r6 >> 0x1f;
0x00086ab0 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x00086ab4 add.w fp, sp, 0x10 |
0x00086ab8 adds r7, r7, r3 | r7 += r3;
0x00086aba mov r0, r4 | r0 = r4;
0x00086abc adc r6, r6, 0 | __asm ("adc r6, r6, 0");
0x00086ac0 adds.w r2, r8, 1 | r2 = r8 + 1;
0x00086ac4 adc r3, sb, 0 | __asm ("adc r3, sb, 0");
0x00086ac8 lsrs r7, r7, 1 | r7 >>= 1;
0x00086aca add.w sl, sp, 0x18 | sl += var_18h;
0x00086ace blx 0x7c4c | fcn_00007c4c ();
0x00086ad2 asr.w r2, sb, 0x1f | r2 = sb >> 0x1f;
0x00086ad6 movs r1, 2 | r1 = 2;
0x00086ad8 mov r0, r4 | r0 = r4;
0x00086ada orr.w r7, r7, r6, lsl 31 | r7 |= (r6 << 31);
0x00086ade ubfx r2, r2, 0, 0xa | r2 = (r2 >> 0) & ((1 << 0xa) - 1);
0x00086ae2 asrs r6, r6, 1 | r6 >>= 1;
0x00086ae4 adds.w r2, r2, r8 | r2 += r8;
0x00086ae8 lsr.w r2, r2, 0xa | r2 >>= 0xa;
0x00086aec adc r3, sb, 0 | __asm ("adc r3, sb, 0");
0x00086af0 orr.w r2, r2, r3, lsl 22 | r2 |= (r3 << 22);
0x00086af4 asrs r3, r3, 0xa | r3 >>= 0xa;
0x00086af6 adds r2, 1 | r2++;
0x00086af8 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00086afc lsls r3, r3, 0xa | r3 <<= 0xa;
0x00086afe orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x00086b02 lsls r2, r2, 0xa | r2 <<= 0xa;
0x00086b04 subs r2, 1 | r2--;
0x00086b06 sbc r3, r3, 0 | __asm ("sbc r3, r3, 0");
0x00086b0a blx 0x7c4c | fcn_00007c4c ();
0x00086b0e b 0x86b12 |
| while (r3 == 0) {
0x00086b10 movs r5, 1 | r5 = 1;
0x00086b12 mov r0, r4 | r0 = r4;
0x00086b14 blx 0x809c | r0 = fcn_0000809c ();
0x00086b18 cmp r0, 0x64 |
| if (r0 != 0x64) {
0x00086b1a bne 0x86b70 | goto label_5;
| }
0x00086b1c mov r3, fp | r3 = fp;
0x00086b1e mov r2, sl | r2 = sl;
0x00086b20 movs r1, 2 | r1 = 2;
0x00086b22 mov r0, r4 | r0 = r4;
0x00086b24 vstr d8, [sp, 0x10] | __asm ("vstr d8, [sp, 0x10]");
0x00086b28 bl 0x225b4 | fcn_000225b4 (r0, r1);
0x00086b2c ldrd r1, r2, [sp, 0x10] | __asm ("ldrd r1, r2, [s]");
0x00086b30 cmp r7, r1 |
0x00086b32 sbcs.w r3, r6, r2 | __asm ("sbcs.w r3, r6, r2");
0x00086b36 ite lt |
| if (r7 >= r1) {
0x00086b38 movlt r3, 1 | r3 = 1;
| }
| if (r7 < r1) {
0x00086b3a movge r3, 0 | r3 = 0;
| }
0x00086b3c cmp r1, 1 |
0x00086b3e sbcs r2, r2, 0 | __asm ("sbcs r2, r2, 0");
0x00086b42 it lt |
| if (r1 >= 1) {
0x00086b44 orrlt r3, r3, 1 | r3 |= 1;
| }
0x00086b48 cmp r3, 0 |
0x00086b4a beq 0x86b10 |
| }
0x00086b4c ldr r2, [pc, 0x108] |
0x00086b4e ldr r3, [pc, 0x100] | r3 = *(0x86c52);
0x00086b50 add r2, pc | r2 = 0x10d7ac;
0x00086b52 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00086b54 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00086b56 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00086b58 eors r2, r3 | r2 ^= r3;
0x00086b5a mov.w r3, 0 | r3 = 0;
0x00086b5c lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00086b5e bne 0x86c3c | goto label_4;
| }
| label_3:
0x00086b60 mov r0, r4 | r0 = r4;
0x00086b62 add sp, 0x2c |
0x00086b64 vpop {d8} | __asm ("vpop {d8}");
0x00086b68 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00086b6c b.w 0x7cf8 | goto label_0;
| label_5:
0x00086b70 mov r0, r4 | r0 = r4;
0x00086b72 blx 0x7cfc | r0 = fcn_00007cfc ();
0x00086b76 mov r6, r0 | r6 = r0;
| if (r5 == 0) {
0x00086b78 cbz r5, 0x86b82 | goto label_2;
| }
0x00086b7a movs r3, 0 | r3 = 0;
0x00086b7c str r3, [sp, 0x10] | s = r3;
0x00086b7e str r3, [sp, 0x18] | var_18h = r3;
0x00086b80 cbz r0, 0x86b86 |
| while (r0 != 0) {
| label_2:
0x00086b82 mov r5, r6 | r5 = r6;
0x00086b84 b 0x86a7a | goto label_1;
0x00086b86 ldr r5, [sp, 4] | r5 = var_4h;
0x00086b88 mov r3, r0 | r3 = r0;
0x00086b8a add r2, sp, 0x10 | r2 += s;
0x00086b8c movs r1, 0x26 | r1 = 0x26;
0x00086b8e mov r0, r5 | r0 = r5;
0x00086b90 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x00086b94 mov r6, r0 | r6 = r0;
0x00086b96 cmp r0, 0 |
0x00086b98 bne 0x86b82 |
| }
0x00086b9a mov r3, r0 | r3 = r0;
0x00086b9c add r2, sp, 0x18 | r2 += var_18h;
0x00086b9e mov r0, r5 | r0 = r5;
0x00086ba0 movs r1, 0x27 | r1 = 0x27;
0x00086ba2 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x00086ba6 mov r6, r0 | r6 = r0;
0x00086ba8 cmp r0, 0 |
| if (r0 != 0) {
0x00086baa bne 0x86b82 | goto label_2;
| }
0x00086bac mov r2, r8 | r2 = r8;
0x00086bae mov r3, sb | r3 = sb;
0x00086bb0 movs r1, 1 | r1 = 1;
0x00086bb2 mov r0, r4 | r0 = r4;
0x00086bb4 blx 0x7c4c | fcn_00007c4c ();
0x00086bb8 b 0x86bfe |
| while (r0 == 0x64) {
0x00086bba ldr r5, [sp, 0x10] | r5 = s;
0x00086bbc mov r2, r6 | r2 = r6;
0x00086bbe movs r1, 1 | r1 = 1;
0x00086bc0 adds r7, r6, 1 | r7 = r6 + 1;
0x00086bc2 mov r0, r5 | r0 = r5;
0x00086bc4 blx 0x7e30 | sleep (r0);
0x00086bc8 movs r1, 0 | r1 = 0;
0x00086bca mov r0, r4 | r0 = r4;
0x00086bcc blx 0x8050 | fcn_00008050 ();
0x00086bd0 movs r1, 2 | r1 = 2;
0x00086bd2 mov r2, r0 | r2 = r0;
0x00086bd4 mov r0, r5 | r0 = r5;
0x00086bd6 blx 0x7e30 | sleep (r0);
0x00086bda movs r1, 1 | r1 = 1;
0x00086bdc mov r0, r4 | r0 = r4;
0x00086bde blx 0x8050 | fcn_00008050 ();
0x00086be2 movs r1, 3 | r1 = 3;
0x00086be4 mov r2, r0 | r2 = r0;
0x00086be6 mov r0, r5 | r0 = r5;
0x00086be8 blx 0x7e30 | sleep (r0);
0x00086bec mov r0, r5 | r0 = r5;
0x00086bee blx 0x809c | fcn_0000809c ();
0x00086bf2 mov r0, r5 | r0 = r5;
0x00086bf4 blx 0x7cfc | r0 = fcn_00007cfc ();
0x00086bf8 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00086bfa cbnz r0, 0x86c40 | goto label_6;
| }
0x00086bfc mov r6, r7 | r6 = r7;
0x00086bfe mov r0, r4 | r0 = r4;
0x00086c00 blx 0x809c | r0 = fcn_0000809c ();
0x00086c04 cmp r0, 0x64 |
0x00086c06 beq 0x86bba |
| }
0x00086c08 mov r0, r4 | r0 = r4;
0x00086c0a blx 0x7cfc | r0 = fcn_00007cfc ();
0x00086c0e mov r6, r0 | r6 = r0;
0x00086c10 cmp r0, 0 |
| if (r0 != 0) {
0x00086c12 bne 0x86b82 | goto label_2;
| }
0x00086c14 ldr r4, [sp, 0x18] | r4 = var_18h;
0x00086c16 mov r2, r8 | r2 = r8;
0x00086c18 mov r3, sb | r3 = sb;
0x00086c1a movs r1, 1 | r1 = 1;
0x00086c1c mov r0, r4 | r0 = r4;
0x00086c1e blx 0x7c4c | fcn_00007c4c ();
0x00086c22 mov r0, r4 | r0 = r4;
0x00086c24 blx 0x809c | fcn_0000809c ();
0x00086c28 ldr r2, [pc, 0x30] |
0x00086c2a ldr r3, [pc, 0x24] | r3 = *(0x86c52);
0x00086c2c add r2, pc | r2 = 0x10d88c;
0x00086c2e ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00086c30 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00086c32 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00086c34 eors r2, r3 | r2 ^= r3;
0x00086c36 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00086c3a beq 0x86b60 | goto label_3;
| }
| label_4:
0x00086c3c blx 0x7e8c | fcn_00007e8c ();
| label_6:
0x00086c40 mov r0, r4 | r0 = r4;
0x00086c42 mov r5, r6 | r5 = r6;
0x00086c44 blx 0x7cfc | fcn_00007cfc ();
0x00086c48 b 0x86a7a | 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/libsqlite3.so.0.8.6 @ 0x86de4 */
| #include <stdint.h>
|
; (fcn) fcn.00086de4 () | void fcn_00086de4 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00086de4 push {r3, r4, r5, r6, r7, lr} |
0x00086de6 ldrb r3, [r1, 7] | r3 = *((r1 + 7));
| if (r3 == 0) {
0x00086de8 cbz r3, 0x86e3e | goto label_2;
| }
0x00086dea mov r7, r0 | r7 = r0;
0x00086dec ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x00086dee mov r4, r1 | r4 = r1;
| if (r0 == 0) {
0x00086df0 cbz r0, 0x86e44 | goto label_3;
| }
| label_0:
0x00086df2 ldr r6, [r4] | r6 = *(r4);
0x00086df4 movs r1, 1 | r1 = 1;
0x00086df6 movs r5, 0 | r5 = 0;
0x00086df8 ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x00086dfa adds r3, 1 | r3++;
0x00086dfc str r3, [r6, 0x38] | *((r6 + 0x38)) = r3;
0x00086dfe ldrd r2, r3, [r4, 0x20] | __asm ("ldrd r2, r3, [r4, 0x20]");
0x00086e02 blx 0x7c4c | fcn_00007c4c ();
0x00086e06 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00086e08 strb r5, [r4, 7] | *((r4 + 7)) = r5;
0x00086e0a blx 0x809c | fcn_0000809c ();
0x00086e0e ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x00086e10 cmp r0, 0x64 |
0x00086e12 itt eq |
| if (r0 != 0x64) {
0x00086e14 addeq r3, r3, -1 | r3 += -1;
| }
| if (r0 == 0x64) {
0x00086e18 str r3, [r6, 0x38] | *((r6 + 0x38)) = r3;
| }
| if (r0 == 0x64) {
0x00086e1a beq 0x86e40 | goto label_4;
| }
0x00086e1c subs r3, 1 | r3--;
0x00086e1e ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00086e20 str r3, [r6, 0x38] | *((r6 + 0x38)) = r3;
0x00086e22 blx 0x7cfc | r0 = fcn_00007cfc ();
0x00086e26 mov r5, r0 | r5 = r0;
0x00086e28 cbz r0, 0x86e38 |
| while (r0 != 0) {
| if (r7 != 0) {
| label_1:
0x00086e2a cbz r7, 0x86e40 |
0x00086e2c mov r0, r7 | r0 = r7;
0x00086e2e mov r1, r5 | r1 = r5;
0x00086e30 blx 0x8310 | fcn_00008310 ();
0x00086e34 mov r0, r5 | r0 = r5;
0x00086e36 pop {r3, r4, r5, r6, r7, pc} |
0x00086e38 ldr r3, [r4] | r3 = *(r4);
0x00086e3a ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
| if (r3 == 0) {
0x00086e3c cbz r3, 0x86e54 | goto label_5;
| }
| label_2:
0x00086e3e movs r5, 0 | r5 = 0;
| }
| label_4:
0x00086e40 mov r0, r5 | r0 = r5;
0x00086e42 pop {r3, r4, r5, r6, r7, pc} |
| label_3:
0x00086e44 mov r0, r1 | r0 = r1;
0x00086e46 bl 0x7927c | r0 = fcn_0007927c (r0);
0x00086e4a mov r5, r0 | r5 = r0;
0x00086e4c cmp r0, 0 |
0x00086e4e bne 0x86e2a |
| }
0x00086e50 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00086e52 b 0x86df2 | goto label_0;
| label_5:
0x00086e54 movs r3, 1 | r3 = 1;
0x00086e56 movw r5, 0x10b | r5 = 0x10b;
0x00086e5a strb r3, [r4, 6] | *((r4 + 6)) = r3;
0x00086e5c b 0x86e2a | 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/libsqlite3.so.0.8.6 @ 0x86e60 */
| #include <stdint.h>
|
; (fcn) fcn.00086e60 () | void fcn_00086e60 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int32_t var_2ch_2;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| r0 = arg1;
| r1 = arg2;
0x00086e60 ldr r2, [pc, 0x22c] |
0x00086e62 ldr r3, [pc, 0x230] | r3 = *(0x87096);
0x00086e64 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00086e68 mov r6, r0 | r6 = r0;
0x00086e6a add r2, pc | r2 = 0x10defe;
0x00086e6c ldr r0, [r1] | r0 = *(r1);
0x00086e6e sub sp, 0x6c |
0x00086e70 ldr r3, [r2, r3] |
0x00086e72 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00086e74 str r3, [sp, 0x64] | var_64h = r3;
0x00086e76 mov.w r3, 0 | r3 = 0;
0x00086e7a str r0, [sp, 0x44] | var_44h = r0;
0x00086e7c cmp r0, 0 |
| if (r0 != 0) {
0x00086e7e bne 0x86eda | goto label_11;
| }
0x00086e80 ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00086e82 mov r7, r1 | r7 = r1;
| if (r3 != 0) {
0x00086e84 cbz r3, 0x86e92 |
0x00086e86 mov r1, r6 | r1 = r6;
0x00086e88 bl 0x86de4 | r0 = fcn_00086de4 (r0, r1);
0x00086e8c mov r4, r0 | r4 = r0;
0x00086e8e str r0, [sp, 0x44] | var_44h = r0;
| if (r0 == 0) {
0x00086e90 cbz r0, 0x86ede | goto label_12;
| }
| }
| label_2:
0x00086e92 ldr r1, [r6, 0x10] | r1 = *((r6 + 0x10));
0x00086e94 mov r0, r6 | r0 = r6;
0x00086e96 add r2, sp, 0x44 | r2 += var_44h;
0x00086e98 bl 0x3f8b8 | fcn_0003f8b8 (r0, r1, r2);
0x00086e9c ldr r4, [r6, 0x1c] | r4 = *((r6 + 0x1c));
0x00086e9e mov r6, r0 | r6 = r0;
| if (r4 == 0) {
0x00086ea0 cbz r4, 0x86eb2 | goto label_13;
| }
0x00086ea2 movs r5, 0 | r5 = 0;
| do {
0x00086ea4 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00086ea6 blx 0x84f8 | fcn_000084f8 ();
0x00086eaa str r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x00086eac ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x00086eae cmp r4, 0 |
0x00086eb0 bne 0x86ea4 |
| } while (r4 != 0);
| label_13:
0x00086eb2 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00086eb4 orrs r6, r3 | r6 |= r3;
0x00086eb6 str r3, [r7] | *(r7) = r3;
0x00086eb8 ite eq |
| if (r6 != r3) {
0x00086eba moveq r0, 1 | r0 = 1;
| }
0x00086ebc movne r0, 0 | r0 = 0;
| while (1) {
0x00086ebe ldr r2, [pc, 0x1d8] |
0x00086ec0 ldr r3, [pc, 0x1d0] | r3 = *(0x87094);
0x00086ec2 add r2, pc | r2 = 0x10df60;
0x00086ec4 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00086ec6 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00086ec8 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00086eca eors r2, r3 | r2 ^= r3;
0x00086ecc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00086ed0 bne.w 0x8708a | goto label_14;
| }
0x00086ed4 add sp, 0x6c |
0x00086ed6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x00086eda movs r0, 0 | r0 = 0;
0x00086edc b 0x86ebe |
| }
| label_12:
0x00086ede ldr r0, [r6, 0x1c] | r0 = *((r6 + 0x1c));
0x00086ee0 str r4, [sp, 0x48] | var_48h = r4;
0x00086ee2 cmp r0, 0 |
| if (r0 == 0) {
0x00086ee4 beq.w 0x8703c | goto label_6;
| }
0x00086ee8 ldr.w sb, [r6] | sb = *(r6);
0x00086eec mov r1, r4 | r1 = r4;
0x00086eee ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00086ef0 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x00086ef4 ldr.w sl, [r3] | sl = *(r3);
0x00086ef8 str r3, [sp, 0x38] | var_38h = r3;
0x00086efa blx 0x80d8 | fcn_000080d8 ();
0x00086efe ldr.w r2, [sb, 0x18] | r2 = *((sb + 0x18));
0x00086f02 strd r0, r1, [sp, 0x2c] | __asm ("strd r0, r1, [var_2ch]");
0x00086f06 cmp r2, 0 |
| if (r2 <= 0) {
0x00086f08 ble.w 0x87086 | goto label_15;
| }
0x00086f0c add r3, sp, 0x48 | r3 += var_48h;
0x00086f0e mov r8, r4 | r8 = r4;
0x00086f10 mov r5, r4 | r5 = r4;
0x00086f12 str r3, [sp, 0x34] | var_34h = r3;
0x00086f14 str r7, [sp, 0x3c] | var_3ch = r7;
0x00086f16 b 0x86f2c |
| while (r4 != 0) {
0x00086f18 ldr r0, [sp, 0x48] | r0 = var_48h;
| label_4:
0x00086f1a ldr r3, [sp, 0x18] | r3 = var_18h;
0x00086f1c cmp r2, r3 |
| if (r2 <= r3) {
0x00086f1e ble 0x8701c | goto label_7;
| }
0x00086f20 adds.w r8, r8, 1 | r8++;
0x00086f24 adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x00086f28 cmp r0, 0 |
| if (r0 != 0) {
0x00086f2a bne 0x8701c | goto label_7;
| }
| label_8:
0x00086f2c ldr.w r3, [sb, 0x20] | r3 = *((sb + 0x20));
0x00086f30 ldrb.w r4, [r3, r8] | r4 = *((r3 + r8));
0x00086f34 add.w r3, r8, 1 | r3 = r8 + 1;
0x00086f38 str r3, [sp, 0x18] | var_18h = r3;
0x00086f3a cmp r4, 0 |
0x00086f3c bne 0x86f18 |
| }
0x00086f3e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00086f40 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x00086f42 blx 0x81c4 | fcn_000081c4 ();
0x00086f46 add r3, sp, 0x4c | r3 += var_4ch;
0x00086f48 mov r2, r0 | r2 = r0;
0x00086f4a str r3, [sp] | *(sp) = r3;
0x00086f4c mov.w r3, -1 | r3 = -1;
0x00086f50 ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x00086f52 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00086f54 str r4, [sp, 0x4c] | var_4ch = r4;
0x00086f56 bl 0xaa78 | r0 = fcn_0000aa78 (r0, r1, r2, r3, r4);
0x00086f5a mov r3, r0 | r3 = r0;
0x00086f5c str r0, [sp, 0x48] | var_48h = r0;
0x00086f5e cmp r0, 0 |
| if (r0 != 0) {
0x00086f60 bne 0x8704c | goto label_16;
| }
0x00086f62 add r3, sp, 0x54 | r3 += var_54h;
0x00086f64 add r2, sp, 0x60 | r2 += var_60h;
0x00086f66 str r5, [sp, 0x28] | var_28h = r5;
0x00086f68 mov r4, r0 | r4 = r0;
0x00086f6a mov r5, r8 | r5 = r8;
0x00086f6c add.w fp, sp, 0x58 |
0x00086f70 add r7, sp, 0x50 | r7 += var_50h;
0x00086f72 mov r8, r3 | r8 = r3;
0x00086f74 str r2, [sp, 0x24] | var_24h = r2;
0x00086f76 add r2, sp, 0x5c | r2 += var_5ch;
0x00086f78 strd r6, r2, [sp, 0x1c] | __asm ("strd r6, r2, [var_1ch]");
| label_3:
0x00086f7c ldr r3, [sp, 0x24] | r3 = var_24h;
0x00086f7e mov r2, r8 | r2 = r8;
0x00086f80 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00086f82 mov r1, r7 | r1 = r7;
0x00086f84 strd r4, r4, [sp, 0x54] | __asm ("strd r4, r4, [var_54h]");
0x00086f88 str r3, [sp, 4] | var_4h = r3;
0x00086f8a ldr r3, [sp, 0x20] | r3 = var_20h;
0x00086f8c strd r4, r4, [sp, 0x5c] | __asm ("strd r4, r4, [var_60h]");
0x00086f90 str r3, [sp] | *(sp) = r3;
0x00086f92 mov r3, fp | r3 = fp;
0x00086f94 ldr.w r6, [sl, 0x14] | r6 = *((sl + 0x14));
0x00086f98 blx r6 | uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00086f9a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00086f9c str r0, [sp, 0x48] | var_48h = r0;
0x00086f9e ldr r6, [r3, 0x1c] | r6 = *((r3 + 0x1c));
0x00086fa0 clz r3, r0 | r3 &= r0;
0x00086fa4 lsrs r3, r3, 5 | r3 >>= 5;
0x00086fa6 cmp r6, 0 |
0x00086fa8 it eq |
| if (r6 != 0) {
0x00086faa moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x00086fac cbnz r3, 0x86fce | goto label_17;
| }
0x00086fae b 0x87040 | goto label_18;
| label_1:
0x00086fb0 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00086fb2 cmp r0, 0 |
0x00086fb4 it ne |
| if (r0 != 0) {
0x00086fb6 cmpne r2, r1 | __asm ("cmpne r2, r1");
| }
| if (r0 < 0) {
0x00086fb8 blt 0x86ff0 | goto label_19;
| }
| do {
| label_0:
0x00086fba ldr r6, [r6, 8] | r6 = *((r6 + 8));
0x00086fbc ldr r0, [sp, 0x48] | r0 = var_48h;
0x00086fbe subs r3, r6, 0 | r3 = r6 - 0;
0x00086fc0 it ne |
| if (r3 == r6) {
0x00086fc2 movne r3, 1 | r3 = 1;
| }
0x00086fc4 cmp r0, 0 |
0x00086fc6 it ne |
| if (r0 == 0) {
0x00086fc8 movne r3, 0 | r3 = 0;
| }
0x00086fca cmp r3, 0 |
| if (r3 == 0) {
0x00086fcc beq 0x87040 | goto label_18;
| }
| label_17:
0x00086fce ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00086fd0 ldr.w r2, [sb, 0x18] | r2 = *((sb + 0x18));
0x00086fd4 cmp r3, r5 |
0x00086fd6 it ne |
| if (r3 != r5) {
0x00086fd8 cmpne r3, r2 | __asm ("cmpne r3, r2");
| }
0x00086fda blt 0x86fba |
| } while (r3 < r5);
0x00086fdc ldr r3, [r6] | r3 = *(r6);
0x00086fde ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
| if (r2 == 0) {
0x00086fe0 cbz r2, 0x86fe8 | goto label_20;
| }
0x00086fe2 ldr r2, [sp, 0x60] | r2 = var_60h;
0x00086fe4 cmp r2, 0 |
| if (r2 != 0) {
0x00086fe6 bne 0x86fba | goto label_0;
| }
| label_20:
0x00086fe8 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00086fea ldr r1, [sp, 0x54] | r1 = var_54h;
0x00086fec cmp r2, r1 |
| if (r2 != r1) {
0x00086fee bne 0x86fb0 | goto label_1;
| }
| label_19:
0x00086ff0 ldr r1, [r3] | r1 = *(r3);
0x00086ff2 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00086ff4 blx 0x7e40 | r0 = fcn_00007e40 ();
0x00086ff8 cmp r0, 0 |
| if (r0 != 0) {
0x00086ffa bne 0x86fba | goto label_0;
| }
0x00086ffc ldr r3, [sp, 0x34] | r3 = var_34h;
0x00086ffe add.w r0, r6, 0xc | r0 = r6 + 0xc;
0x00087002 str r5, [sp] | *(sp) = r5;
0x00087004 str r3, [sp, 0x10] | var_10h = r3;
0x00087006 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00087008 str r3, [sp, 4] | var_4h = r3;
0x0008700a ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008700c str r3, [sp, 8] | var_8h = r3;
0x0008700e asrs r3, r3, 0x1f | r3 >>= 0x1f;
0x00087010 str r3, [sp, 0xc] | var_ch = r3;
0x00087012 ldrd r2, r3, [sp, 0x2c] | __asm ("ldrd r2, r3, [var_2ch]");
0x00087016 bl 0x411e4 | fcn_000411e4 (r0, r1, r2, r3, r4, r5);
0x0008701a b 0x86fba | goto label_0;
| label_7:
0x0008701c ldr r7, [sp, 0x3c] | r7 = var_3ch;
| label_9:
0x0008701e ldr r4, [r6, 0x1c] | r4 = *((r6 + 0x1c));
| if (r4 == 0) {
0x00087020 cbz r4, 0x8703c | goto label_6;
| }
| do {
| if (r0 != 0) {
0x00087022 cbnz r0, 0x8703c | goto label_6;
| }
| label_5:
0x00087024 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
| if (r3 == 0) {
0x00087026 cbz r3, 0x87066 | goto label_21;
| }
0x00087028 add.w r0, r4, 0xc | r0 = r4 + 0xc;
0x0008702c movs r2, 0 | r2 = 0;
0x0008702e movs r3, 0 | r3 = 0;
0x00087030 bl 0x41134 | fcn_00041134 (r0, r1, r2);
0x00087034 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x00087036 str r0, [sp, 0x48] | var_48h = r0;
0x00087038 cmp r4, 0 |
0x0008703a bne 0x87022 |
| } while (r4 != 0);
| label_6:
0x0008703c str r0, [sp, 0x44] | var_44h = r0;
0x0008703e b 0x86e92 | goto label_2;
| label_18:
0x00087040 cmp r0, 0 |
| if (r0 == 0) {
0x00087042 beq 0x86f7c | goto label_3;
| }
0x00087044 mov r8, r5 | r8 = r5;
0x00087046 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x00087048 ldr r5, [sp, 0x28] | r5 = var_28h;
0x0008704a mov r3, r0 | r3 = r0;
| label_16:
0x0008704c ldr r0, [sp, 0x4c] | r0 = var_4ch;
| if (r0 != 0) {
0x0008704e cbz r0, 0x8705a |
0x00087050 ldr.w r2, [sl, 0x10] | r2 = *((sl + 0x10));
0x00087054 str r3, [sp, 0x1c] | var_1ch = r3;
0x00087056 blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r2, r3);
0x00087058 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| }
0x0008705a cmp r3, 0x65 |
| if (r3 == 0x65) {
0x0008705c beq 0x8706e | goto label_22;
| }
0x0008705e ldr r0, [sp, 0x48] | r0 = var_48h;
0x00087060 ldr.w r2, [sb, 0x18] | r2 = *((sb + 0x18));
0x00087064 b 0x86f1a | goto label_4;
| label_21:
0x00087066 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x00087068 cmp r4, 0 |
| if (r4 != 0) {
0x0008706a bne 0x87024 | goto label_5;
| }
0x0008706c b 0x8703c | goto label_6;
| label_22:
0x0008706e ldr.w r2, [sb, 0x18] | r2 = *((sb + 0x18));
0x00087072 movs r0, 0 | r0 = 0;
0x00087074 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00087076 str r0, [sp, 0x48] | var_48h = r0;
0x00087078 cmp r3, r2 |
| if (r3 >= r2) {
0x0008707a bge 0x8701c | goto label_7;
| }
0x0008707c adds.w r8, r8, 1 | r8++;
0x00087080 adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x00087084 b 0x86f2c | goto label_8;
| label_15:
0x00087086 mov r0, r4 | r0 = r4;
0x00087088 b 0x8701e | goto label_9;
| label_14:
0x0008708a blx 0x7e8c | fcn_00007e8c ();
0x0008708e nop |
0x00087090 ldr r6, [r4, 0x60] | r6 = *((r4 + 0x60));
0x00087092 movs r4, r0 | r4 = r0;
0x00087094 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00087096 movs r0, r0 |
0x00087098 ldr r6, [r1, 0x5c] | r6 = *((r1 + 0x5c));
0x0008709a movs r4, r0 | r4 = r0;
0x0008709c push {r3, r4, r5, r6, r7, lr} |
0x0008709e mov r5, r2 | r5 = r2;
0x000870a0 ldr r3, [r0] | r3 = *(r0);
0x000870a2 mov r6, r0 | r6 = r0;
0x000870a4 mov r7, r1 | r7 = r1;
0x000870a6 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x000870a8 subs r4, r5, r2 | r4 = r5 - r2;
0x000870aa cmp r4, 1 |
| if (r4 == 1) {
0x000870ac beq 0x870ea | goto label_23;
| }
0x000870ae cmp r4, 2 |
| if (r4 == 2) {
0x000870b0 beq 0x870d6 | goto label_24;
| }
0x000870b2 cbz r4, 0x870c4 |
| while (r1 != 0) {
0x000870b4 mov r1, r6 | r1 = r6;
0x000870b6 movs r0, 0 | r0 = 0;
0x000870b8 bl 0x86de4 | r0 = fcn_00086de4 (r0, r1);
0x000870bc mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000870be cbz r0, 0x8710c | goto label_25;
| }
| label_10:
0x000870c0 mov r0, r4 | r0 = r4;
0x000870c2 pop {r3, r4, r5, r6, r7, pc} |
0x000870c4 ldr r2, [pc, 0x64] |
0x000870c6 mov r1, r0 | r1 = r0;
0x000870c8 mov r3, r4 | r3 = r4;
0x000870ca mov r0, r7 | r0 = r7;
0x000870cc add r2, pc | r2 = 0x10e1fc;
0x000870ce blx 0x8418 | fcn_00008418 ();
0x000870d2 mov r0, r4 | r0 = r4;
0x000870d4 pop {r3, r4, r5, r6, r7, pc} |
| label_24:
0x000870d6 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
| if (r1 != 0) {
0x000870d8 cbz r1, 0x870fa |
0x000870da ldr r2, [r0, 0x14] | r2 = *((r0 + 0x14));
0x000870dc movs r4, 0 | r4 = 0;
0x000870de mov r0, r7 | r0 = r7;
0x000870e0 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000870e2 blx 0x8608 | fcn_00008608 ();
0x000870e6 mov r0, r4 | r0 = r4;
0x000870e8 pop {r3, r4, r5, r6, r7, pc} |
| label_23:
0x000870ea ldrd r2, r3, [r0, 0x20] | __asm ("ldrd r2, r3, [r0, 0x20]");
0x000870ee movs r4, 0 | r4 = 0;
0x000870f0 mov r0, r1 | r0 = r1;
0x000870f2 blx 0x8608 | fcn_00008608 ();
0x000870f6 mov r0, r4 | r0 = r4;
0x000870f8 pop {r3, r4, r5, r6, r7, pc} |
| }
0x000870fa ldr r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x000870fc mov r5, r2 | r5 = r2;
0x000870fe cmp r1, 0 |
0x00087100 bne 0x870b4 |
| }
0x00087102 mov r0, r7 | r0 = r7;
0x00087104 mov r4, r1 | r4 = r1;
0x00087106 blx 0x7f5c | usleep (r0);
0x0008710a b 0x870c0 | goto label_10;
| label_25:
0x0008710c ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0008710e blx 0x80e4 | fcn_000080e4 ();
0x00087112 subs r0, 1 | r0--;
0x00087114 cmp r0, r5 |
| if (r0 <= r5) {
0x00087116 ble 0x870c0 | goto label_10;
| }
0x00087118 adds r1, r5, 1 | r1 = r5 + 1;
0x0008711a ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0008711c blx 0x8538 | r0 = fcn_00008538 ();
0x00087120 mov r1, r0 | r1 = r0;
0x00087122 mov r0, r7 | r0 = r7;
0x00087124 blx 0x82c0 | fcn_000082c0 ();
0x00087128 b 0x870c0 | goto label_10;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x87344 */
| #include <stdint.h>
|
; (fcn) fcn.00087344 () | void fcn_00087344 (int16_t arg_60h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_38h;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_bch;
| int16_t var_e8h;
| int16_t var_4h;
| int16_t var_f0h;
| int16_t var_0h;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t s;
| int16_t var_28h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00087344 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00087348 mov sl, r2 | sl = r2;
0x0008734a ldr r2, [pc, 0x22c] |
0x0008734c mov r8, r3 | r8 = r3;
0x0008734e sub sp, 0x3c |
0x00087350 mov r4, r1 | r4 = r1;
0x00087352 ldr r3, [pc, 0x228] | r3 = *(0x8757e);
0x00087354 add r2, pc | r2 = 0x10e8d2;
0x00087356 ldr r5, [r0] | r5 = *(r0);
0x00087358 ldr r1, [r1, 0x18] | r1 = *((r1 + 0x18));
0x0008735a ldr r3, [r2, r3] |
0x0008735c ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008735e str r3, [sp, 0x34] | var_34h = r3;
0x00087360 mov.w r3, 0 | r3 = 0;
| if (r5 != 0) {
0x00087364 cbz r5, 0x87382 |
| label_1:
0x00087366 ldr r2, [pc, 0x218] |
0x00087368 ldr r3, [pc, 0x210] | r3 = *(0x8757c);
0x0008736a add r2, pc | r2 = 0x10e8f0;
0x0008736c ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008736e ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00087370 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00087372 eors r2, r3 | r2 ^= r3;
0x00087374 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00087378 bne.w 0x87574 | goto label_10;
| }
0x0008737c add sp, 0x3c |
0x0008737e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00087382 add.w sb, r1, 2 | sb = r1 + 2;
0x00087386 movs r1, 0xe | r1 = 0xe;
0x00087388 mov r6, r0 | r6 = r0;
0x0008738a smull r0, r1, sb, r1 | r0:r1 = sb * r1;
0x0008738e blx 0x7f18 | r0 = fcn_00007f18 ();
0x00087392 mov r7, r0 | r7 = r0;
0x00087394 cmp r0, 0 |
| if (r0 == 0) {
0x00087396 beq.w 0x87552 | goto label_11;
| }
0x0008739a mov r3, r5 | r3 = r5;
0x0008739c add r2, sp, 0x24 | r2 += s;
0x0008739e movs r1, 0x16 | r1 = 0x16;
0x000873a0 mov r0, r4 | r0 = r4;
0x000873a2 str r2, [sp, 0xc] | var_ch_2 = r2;
0x000873a4 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x000873a8 mov r5, r0 | r5 = r0;
0x000873aa cmp r0, 0 |
| if (r0 != 0) {
0x000873ac bne.w 0x87548 | goto label_12;
| }
0x000873b0 mov r2, r0 | r2 = r0;
0x000873b2 movs r1, 1 | r1 = 1;
0x000873b4 ldr r0, [sp, 0x24] | r0 = s;
0x000873b6 lsl.w fp, sb, 2 |
0x000873ba blx 0x7e30 | sleep (r0);
0x000873be ldr r0, [sp, 0x24] | r0 = s;
0x000873c0 blx 0x809c | r0 = fcn_0000809c ();
0x000873c4 cmp r0, 0x64 |
0x000873c6 mov r1, r5 | r1 = r5;
| if (r0 == 0x64) {
0x000873c8 beq 0x874c0 | goto label_13;
| }
0x000873ca mov r2, fp | r2 = fp;
0x000873cc mov r0, r7 | r0 = r7;
0x000873ce blx 0x8264 | fcn_00008264 ();
| label_2:
0x000873d2 ldr r0, [sp, 0x24] | r0 = s;
0x000873d4 blx 0x7cfc | r0 = fcn_00007cfc ();
0x000873d8 mov r5, r0 | r5 = r0;
0x000873da cmp r0, 0 |
| if (r0 != 0) {
0x000873dc bne.w 0x87548 | goto label_12;
| }
0x000873e0 ldr r2, [sp, 0x60] | r2 = *(arg_60h);
0x000873e2 ldr r3, [r7] | r3 = *(r7);
0x000873e4 cmp r2, 0 |
| if (r2 < 0) {
0x000873e6 blt.w 0x87558 | goto label_14;
| }
| label_4:
0x000873ea ldr r2, [sp, 0x60] | r2 = *(arg_60h);
0x000873ec add r3, r2 | r3 += r2;
| label_3:
0x000873ee str r3, [r7] | *(r7) = r3;
0x000873f0 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000873f2 cmp r3, 0 |
0x000873f4 itttt ge |
| if (r3 < 0) {
0x000873f6 subge sl, sl, 4 | sl -= 4;
| }
| if (r3 < 0) {
0x000873fa subge r8, r8, 4 | r8 -= 4;
| }
| if (r3 >= 0) {
0x000873fe mov r1, r7 | r1 = r7;
| }
| if (r3 >= 0) {
0x00087400 movs r2, 0 | r2 = 0;
| }
| if (r2 < 0) {
0x00087402 blt 0x87424 | goto label_15;
| }
| do {
0x00087404 ldr r0, [r1, 4]! | r0 = *((r1 += 4));
0x00087408 adds r2, 1 | r2++;
0x0008740a ldr r3, [sl, 4]! | r3 = *((sl += 4));
0x0008740e add r3, r0 | r3 += r0;
0x00087410 ldr r0, [r8, 4]! | r0 = *((r8 += 4));
0x00087414 cmp r3, r0 |
0x00087416 ite hs |
| if (r3 < r0) {
0x00087418 subhs r3, r3, r0 | r3 -= r0;
| }
| if (r3 >= r0) {
0x0008741a movlo r3, 0 | r3 = 0;
| }
0x0008741c str r3, [r1] | *(r1) = r3;
0x0008741e ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00087420 cmp r3, r2 |
0x00087422 bge 0x87404 |
| } while (r3 >= r2);
| label_15:
0x00087424 cmp.w sb, 0 |
0x00087428 add.w r8, r7, fp | r8 = r7 + fp;
0x0008742c ittt gt |
| if (sb <= 0) {
0x0008742e subgt fp, fp, 4 |
| }
| if (sb <= 0) {
0x00087432 subgt sb, r7, 4 | sb = r7 - 4;
| }
| if (sb > 0) {
0x00087436 add fp, r7 |
| }
| if (sb <= 0) {
0x00087438 ble 0x87476 | goto label_16;
| }
| label_0:
0x0008743a ldr r3, [sb, 4]! | r3 = *((sb += 4));
0x0008743e add.w sl, r8, r5 | sl = r8 + r5;
0x00087442 movs r2, 0 | r2 = 0;
0x00087444 mov r1, sl | r1 = sl;
| do {
0x00087446 lsr.w lr, r3, 7 | lr = r3 >> 7;
0x0008744a orn r0, r3, 0x7f | r0 = r3 | 0x7f;
| r0 = ~r0;
0x0008744e uxtb.w ip, r3 | ip = (int8_t) r3;
0x00087452 orr.w r3, lr, r2, lsl 25 | r3 = lr | (r2 << 25);
0x00087456 lsrs r2, r2, 7 | r2 >>= 7;
0x00087458 mov lr, r1 | lr = r1;
0x0008745a strb r0, [r1], 1 | *(r1) = r0;
| r1++;
0x0008745e orrs.w r0, r3, r2 | r0 = r3 | r2;
0x00087462 bne 0x87446 |
| } while (r0 != r3);
0x00087464 cmp sb, fp |
0x00087466 sub.w r1, r1, sl | r1 -= sl;
0x0008746a and ip, ip, 0x7f |
0x0008746e add r5, r1 | r5 += r1;
0x00087470 strb.w ip, [lr] | *(lr) = ip;
| if (sb != fp) {
0x00087474 bne 0x8743a | goto label_0;
| }
| label_16:
0x00087476 mov r0, r4 | r0 = r4;
0x00087478 ldr r2, [sp, 0xc] | r2 = var_ch_2;
0x0008747a movs r3, 0 | r3 = 0;
0x0008747c movs r1, 0x17 | r1 = 0x17;
0x0008747e bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x00087482 mov r4, r0 | r4 = r0;
0x00087484 cmp r0, 0 |
| if (r0 != 0) {
0x00087486 bne 0x87566 | goto label_17;
| }
0x00087488 mov r2, r0 | r2 = r0;
0x0008748a movs r1, 1 | r1 = 1;
0x0008748c ldr r0, [sp, 0x24] | r0 = s;
0x0008748e blx 0x7e30 | sleep (r0);
0x00087492 mov r3, r5 | r3 = r5;
0x00087494 mov r2, r8 | r2 = r8;
0x00087496 movs r1, 2 | r1 = 2;
0x00087498 ldr r0, [sp, 0x24] | r0 = s;
0x0008749a str r4, [sp] | *(sp) = r4;
0x0008749c blx 0x83f0 | fcn_000083f0 ();
0x000874a0 ldr r0, [sp, 0x24] | r0 = s;
0x000874a2 blx 0x809c | fcn_0000809c ();
0x000874a6 ldr r0, [sp, 0x24] | r0 = s;
0x000874a8 blx 0x7cfc | r0 = fcn_00007cfc ();
0x000874ac mov r3, r0 | r3 = r0;
0x000874ae movs r1, 2 | r1 = 2;
0x000874b0 ldr r0, [sp, 0x24] | r0 = s;
0x000874b2 str r3, [r6] | *(r6) = r3;
0x000874b4 blx 0x8248 | fcn_00008248 ();
0x000874b8 mov r0, r7 | r0 = r7;
0x000874ba blx 0x84f8 | fcn_000084f8 ();
0x000874be b 0x87366 | goto label_1;
| label_13:
0x000874c0 ldr r0, [sp, 0x24] | r0 = s;
0x000874c2 blx 0x7cd0 | fcn_00007cd0 ();
0x000874c6 mov r1, r5 | r1 = r5;
0x000874c8 str r0, [sp, 0x10] | var_10h_2 = r0;
0x000874ca ldr r0, [sp, 0x24] | r0 = s;
0x000874cc blx 0x8184 | r0 = fcn_00008184 ();
0x000874d0 mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x000874d2 cbz r0, 0x87530 | goto label_5;
| }
0x000874d4 ldr r0, [sp, 0x10] | r0 = var_10h_2;
0x000874d6 adds r3, r0, r2 | r3 = r0 + r2;
0x000874d8 ldrsb r3, [r3, -0x1] | r3 = *((r3 - 0x1));
0x000874dc cmp r3, 0 |
0x000874de it lt |
| if (r3 >= 0) {
0x000874e0 movlt r2, r5 | r2 = r5;
| }
| if (r3 < 0) {
0x000874e2 blt 0x87530 | goto label_5;
| }
0x000874e4 cmp.w sb, 0 |
0x000874e8 it gt |
| if (sb > 0) {
0x000874ea cmpgt r2, 0 | __asm ("cmpgt r2, 0");
| }
0x000874ec ite gt |
| if (sb <= 0) {
0x000874ee movgt r3, 1 | r3 = 1;
| }
| if (sb > 0) {
0x000874f0 movle r3, 0 | r3 = 0;
| }
| if (sb <= 0) {
0x000874f2 ble 0x87570 | goto label_18;
| }
0x000874f4 subs r3, r7, 4 | r3 = r7 - 4;
0x000874f6 str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
0x000874fa str r3, [sp, 0x10] | var_10h_2 = r3;
0x000874fc add r1, sp, 0x28 | r1 += var_28h;
0x000874fe str r7, [sp, 0x18] | var_18h = r7;
0x00087500 mov fp, r0 |
0x00087502 ldr r7, [sp, 0x10] | r7 = var_10h_2;
0x00087504 str r4, [sp, 0x1c] | var_1ch = r4;
0x00087506 mov r4, r2 | r4 = r2;
0x00087508 str r6, [sp, 0x10] | var_10h_2 = r6;
0x0008750a mov r6, r5 | r6 = r5;
| do {
0x0008750c add.w r0, fp, r6 | r0 = fp + r6;
0x00087510 adds r5, 1 | r5++;
0x00087512 bl 0xa5b4 | r0 = fcn_0000a5b4 (r0, r1);
0x00087516 add r6, r0 | r6 += r0;
0x00087518 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0008751a cmp sb, r5 |
0x0008751c it gt |
| if (sb > r5) {
0x0008751e cmpgt r4, r6 | __asm ("cmpgt r4, r6");
| }
0x00087520 str r0, [r7, 4]! | *((r7 += 4)) = r0;
0x00087524 bgt 0x8750c |
| } while (sb > r5);
0x00087526 ldrd fp, r7, [sp, 0x14] | __asm ("ldrd fp, r7, [var_14h]");
0x0008752a mov r2, r5 | r2 = r5;
0x0008752c ldr r6, [sp, 0x10] | r6 = var_10h_2;
0x0008752e ldr r4, [sp, 0x1c] | r4 = var_1ch;
| label_5:
0x00087530 cmp sb, r2 |
| if (sb <= r2) {
0x00087532 ble.w 0x873d2 | goto label_2;
| }
0x00087534 add r7, sp, 0x138 | r7 = sp + 0x138;
0x00087536 sub.w r3, sb, r2 | r3 = sb - r2;
0x0008753a add.w r0, r7, r2, lsl 2 | r0 = r7 + (r2 << 2);
0x0008753e movs r1, 0 | r1 = 0;
0x00087540 lsls r2, r3, 2 | r2 = r3 << 2;
0x00087542 blx 0x8264 | fcn_00008264 ();
0x00087546 b 0x873d2 | goto label_2;
| label_12:
0x00087548 mov r0, r7 | r0 = r7;
0x0008754a blx 0x84f8 | fcn_000084f8 ();
0x0008754e str r5, [r6] | *(r6) = r5;
0x00087550 b 0x87366 | goto label_1;
| label_11:
0x00087552 movs r3, 7 | r3 = 7;
0x00087554 str r3, [r6] | *(r6) = r3;
0x00087556 b 0x87366 | goto label_1;
| label_14:
0x00087558 rsbs r2, r2, 0 | r2 -= ;
0x0008755a cmp r2, r3 |
0x0008755c it hi |
| if (r2 > r3) {
0x0008755e movhi r3, r0 | r3 = r0;
| goto label_19;
| }
| if (r2 > r3) {
| label_19:
0x00087560 bhi.w 0x873ee | goto label_3;
| }
0x00087564 b 0x873ea | goto label_4;
| label_17:
0x00087566 mov r0, r7 | r0 = r7;
0x00087568 blx 0x84f8 | fcn_000084f8 ();
0x0008756c str r4, [r6] | *(r6) = r4;
0x0008756e b 0x87366 | goto label_1;
| label_18:
0x00087570 mov r2, r3 | r2 = r3;
0x00087572 b 0x87530 | goto label_5;
| label_10:
0x00087574 blx 0x7e8c | fcn_00007e8c ();
0x00087578 ldr r4, [r7, 0x10] | r4 = *((r7 + 0x10));
0x0008757a movs r4, r0 | r4 = r0;
0x0008757c lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0008757e movs r0, r0 |
0x00087580 ldr r6, [r4, 0x10] | r6 = *((r4 + 0x10));
0x00087582 movs r4, r0 | r4 = r0;
0x00087584 ldr r2, [pc, 0xec] |
0x00087586 ldr r3, [pc, 0xf0] | r3 = *(0x8767a);
0x00087588 push {r4, r5, r6, r7, lr} |
0x0008758a sub sp, 0xc |
0x0008758c add r2, pc | r2 = 0x10ec04;
0x0008758e mov r4, r0 | r4 = r0;
0x00087590 ldr r3, [r2, r3] |
0x00087592 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00087594 str r3, [sp, 4] | var_4h = r3;
0x00087596 mov.w r3, 0 | r3 = 0;
0x0008759a ldrh r3, [r0, 4] | r3 = *((r0 + 4));
0x0008759c cmp r3, 1 |
| if (r3 < 1) {
0x0008759e bls 0x87606 | goto label_20;
| }
0x000875a0 ldr r5, [r0, 0x10] | r5 = *((r0 + 0x10));
0x000875a2 movs r3, 0 | r3 = 0;
0x000875a4 str r3, [sp] | *(sp) = r3;
0x000875a6 cmp r5, 0 |
| if (r5 == 0) {
0x000875a8 beq 0x8762a | goto label_21;
| }
0x000875aa mov r7, sp | r7 = sp;
0x000875ac movs r6, 1 | r6 = 1;
0x000875ae b 0x875dc |
| while (r3 != 0) {
| label_6:
0x000875b0 ldr r3, [sp] | r3 = *(sp);
| if (r3 == 0) {
0x000875b2 cbnz r3, 0x875be |
0x000875b4 mov r2, r7 | r2 = r7;
0x000875b6 mov r1, r5 | r1 = r5;
0x000875b8 mov r0, r4 | r0 = r4;
0x000875ba bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
| }
0x000875be ldrb.w r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x000875c2 strb r6, [r4, 7] | *((r4 + 7)) = r6;
0x000875c4 str r6, [r4, 0x58] | *((r4 + 0x58)) = r6;
0x000875c6 strb r3, [r4, 6] | *((r4 + 6)) = r3;
0x000875c8 ldrd r0, r1, [r5, 0x18] | __asm ("ldrd r0, r1, [r5, 0x18]");
0x000875cc strd r0, r1, [r4, 0x20] | __asm ("strd r0, r1, [r4, 0x20]");
| if (r3 != 0) {
0x000875d0 cbnz r3, 0x875ea | goto label_22;
| }
0x000875d2 mov r1, r7 | r1 = r7;
0x000875d4 mov r0, r4 | r0 = r4;
0x000875d6 bl 0x86e60 | r0 = fcn_00086e60 (r0, r1);
| if (r0 == 0) {
0x000875da cbz r0, 0x875ea | goto label_22;
| }
0x000875dc ldrb r3, [r4, 7] | r3 = *((r4 + 7));
0x000875de cmp r3, 0 |
0x000875e0 bne 0x875b0 |
| }
0x000875e2 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000875e4 blx 0x7cfc | fcn_00007cfc ();
0x000875e8 b 0x875b0 | goto label_6;
| label_22:
0x000875ea ldr r0, [sp] | r0 = *(sp);
| if (r0 == 0) {
0x000875ec cbz r0, 0x8762e | goto label_23;
| }
| do {
| label_7:
0x000875ee ldr r2, [pc, 0x8c] |
0x000875f0 ldr r3, [pc, 0x84] | r3 = *(0x87678);
0x000875f2 add r2, pc | r2 = 0x10ec74;
0x000875f4 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000875f6 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000875f8 ldr r3, [sp, 4] | r3 = var_4h;
0x000875fa eors r2, r3 | r2 ^= r3;
0x000875fc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00087600 bne 0x8766e | goto label_24;
| }
0x00087602 add sp, 0xc |
0x00087604 pop {r4, r5, r6, r7, pc} |
| label_20:
0x00087606 ldr r5, [r0] | r5 = *(r0);
0x00087608 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x0008760a ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x0008760c adds r3, 1 | r3++;
0x0008760e str r3, [r5, 0x38] | *((r5 + 0x38)) = r3;
0x00087610 blx 0x809c | r0 = fcn_0000809c ();
0x00087614 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x00087616 beq 0x8765a | goto label_25;
| }
0x00087618 movs r3, 1 | r3 = 1;
0x0008761a ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0008761c strb r3, [r4, 6] | *((r4 + 6)) = r3;
0x0008761e blx 0x7cfc | fcn_00007cfc ();
| label_9:
0x00087622 ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x00087624 subs r3, 1 | r3--;
0x00087626 str r3, [r5, 0x38] | *((r5 + 0x38)) = r3;
0x00087628 b 0x875ee |
| } while (1);
| label_21:
0x0008762a movs r3, 1 | r3 = 1;
0x0008762c strb r3, [r0, 6] | *((r0 + 6)) = r3;
| label_23:
0x0008762e ldrb.w r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x00087632 ldrd r2, r3, [r4, 0x20] | __asm ("ldrd r2, r3, [r4, 0x20]");
| if (r0 != 0) {
0x00087636 cbnz r0, 0x8764a | goto label_26;
| }
0x00087638 ldrd r5, r1, [r4, 0x50] | __asm ("ldrd r5, r1, [r4, 0x50]");
0x0008763c cmp r5, r2 |
0x0008763e sbcs r1, r3 | __asm ("sbcs r1, r3");
| if (r5 >= r2) {
0x00087640 bge 0x875ee | goto label_7;
| }
| label_8:
0x00087642 movs r3, 1 | r3 = 1;
0x00087644 movs r0, 0 | r0 = 0;
0x00087646 strb r3, [r4, 6] | *((r4 + 6)) = r3;
0x00087648 b 0x875ee | goto label_7;
| label_26:
0x0008764a ldrd r0, r1, [r4, 0x48] | __asm ("ldrd r0, r1, [r4, 0x48]");
0x0008764e cmp r2, r0 |
0x00087650 sbcs r3, r1 | __asm ("sbcs r3, r1");
0x00087652 it ge |
| if (r2 >= r0) {
0x00087654 movge r0, 0 | r0 = 0;
| goto label_27;
| }
| if (r2 >= r0) {
| label_27:
0x00087656 bge 0x875ee | goto label_7;
| }
0x00087658 b 0x87642 | goto label_8;
| label_25:
0x0008765a ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0008765c movs r1, 0 | r1 = 0;
0x0008765e blx 0x80d8 | r0 = fcn_000080d8 ();
0x00087662 mov r2, r0 | r2 = r0;
0x00087664 mov r3, r1 | r3 = r1;
0x00087666 movs r0, 0 | r0 = 0;
0x00087668 strd r2, r3, [r4, 0x20] | __asm ("strd r2, r3, [r4, 0x20]");
0x0008766c b 0x87622 | goto label_9;
| label_24:
0x0008766e blx 0x7e8c | fcn_00007e8c ();
0x00087672 nop |
0x00087674 str r4, [r0, 0x70] | *((r0 + 0x70)) = r4;
0x00087676 movs r4, r0 | r4 = r0;
0x00087678 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0008767a movs r0, r0 |
0x0008767c str r6, [r3, 0x68] | *((r3 + 0x68)) = r6;
0x0008767e movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x87680 */
| #include <stdint.h>
|
; (fcn) fcn.00087680 () | void fcn_00087680 (int16_t arg_e8h, int16_t arg_ech, int16_t arg_f0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| size_t n;
| int16_t var_20h;
| int16_t var_24h;
| size_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| char * s1;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int32_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_bch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00087680 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00087684 sub sp, 0xc4 |
0x00087686 ldr.w r4, [pc, 0xbf0] |
0x0008768a mov r7, r3 | r7 = r3;
0x0008768c subs r5, r7, 2 | r5 = r7 - 2;
0x0008768e ldr r6, [sp, 0xe8] | r6 = *(arg_e8h);
0x00087690 lsls r5, r5, 2 | r5 <<= 2;
0x00087692 str r3, [sp, 0x10] | var_10h = r3;
0x00087694 add r4, pc | r4 = 0x10f912;
0x00087696 ldr.w r3, [pc, 0xbe4] | r3 = *(0x8827e);
0x0008769a str r6, [sp, 0x4c] | var_4ch = r6;
0x0008769c ldr r3, [r4, r3] |
0x0008769e movs r4, 0 | r4 = 0;
0x000876a0 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000876a2 str r3, [sp, 0xbc] | var_bch = r3;
0x000876a4 mov.w r3, 0 | r3 = 0;
0x000876a8 ldr r3, [r6] | r3 = *(r6);
0x000876aa str r2, [sp, 0x38] | var_38h = r2;
0x000876ac str r0, [sp, 0x50] | var_50h = r0;
0x000876ae ldrb r2, [r3, 3] | r2 = *((r3 + 3));
0x000876b0 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x000876b2 str r1, [sp, 0x48] | var_48h = r1;
0x000876b4 str r2, [sp, 0xc] | var_ch = r2;
0x000876b6 strd r4, r4, [sp, 0x70] | __asm ("strd r4, r4, [var_70h]");
0x000876ba blx 0x8160 | fcn_00008160 ();
0x000876be str r0, [sp, 0x40] | var_40h = r0;
0x000876c0 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x000876c2 blx 0x8160 | fcn_00008160 ();
0x000876c6 ldr r3, [sp, 0xec] | r3 = *(arg_ech);
0x000876c8 mov r1, r4 | r1 = r4;
0x000876ca str r0, [sp, 0x44] | var_44h = r0;
0x000876cc mov r0, r5 | r0 = r5;
0x000876ce str r3, [sp, 0x30] | var_30h = r3;
0x000876d0 ldr r3, [sp, 0xf0] | r3 = *(arg_f0h);
0x000876d2 str r3, [sp, 0x2c] | var_2ch = r3;
0x000876d4 blx 0x7f18 | fcn_00007f18 ();
0x000876d8 str r0, [sp, 8] | var_8h = r0;
0x000876da cmp r0, 0 |
| if (r0 == 0) {
0x000876dc beq.w 0x87a56 | goto label_42;
| }
0x000876e0 mov r2, r5 | r2 = r5;
0x000876e2 mov r1, r4 | r1 = r4;
0x000876e4 blx 0x8264 | fcn_00008264 ();
0x000876e8 mov r0, r5 | r0 = r5;
0x000876ea mov r1, r4 | r1 = r4;
0x000876ec blx 0x7f18 | fcn_00007f18 ();
0x000876f0 str r0, [sp, 0x14] | var_14h = r0;
0x000876f2 cmp r0, 0 |
| if (r0 == 0) {
0x000876f4 beq.w 0x87a56 | goto label_42;
| }
0x000876f8 mov r2, r5 | r2 = r5;
0x000876fa mov r1, r4 | r1 = r4;
0x000876fc blx 0x8264 | fcn_00008264 ();
0x00087700 cmp r7, 3 |
| if (r7 <= 3) {
0x00087702 ble.w 0x881a0 | goto label_43;
| }
0x00087706 ldr.w r3, [pc, 0xb78] | r3 = *(0x00088280);
0x0008770a add.w r8, r6, 8 | r8 = r6 + 8;
0x0008770e mov fp, r4 |
0x00087710 movs r7, 3 | r7 = 3;
0x00087712 mov sl, r8 | sl = r8;
0x00087714 str r4, [sp, 0x28] | var_28h = r4;
0x00087716 add r3, pc | r3 += pc;
0x00087718 str r4, [sp, 0x1c] | n = r4;
0x0008771a str r3, [sp, 0x58] | s1 = r3;
0x0008771c ldr.w r3, [pc, 0xb64] | r3 = *(0x00088284);
0x00087720 strd r4, r4, [sp, 0x20] | __asm ("strd r4, r4, [var_20h]");
0x00087724 str r4, [sp, 0x18] | var_18h = r4;
0x00087726 add r3, pc | r3 += pc;
0x00087728 strd r4, r4, [sp, 0x64] | __asm ("strd r4, r4, [var_64h]");
0x0008772c str r3, [sp, 0x5c] | var_5ch = r3;
0x0008772e ldr.w r3, [pc, 0xb58] |
0x00087732 str r4, [sp, 0x3c] | var_3ch = r4;
0x00087734 add r3, pc | r3 = 0x10f9c2;
0x00087736 str r3, [sp, 0x6c] | var_6ch = r3;
| do {
| label_6:
0x00087738 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0008773a adds r7, 1 | r7++;
0x0008773c ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008773e ldr r6, [sl, 4]! | r6 = *((sl += 4));
0x00087742 cmp r2, r7 |
0x00087744 ite le |
| if (r2 > r7) {
0x00087746 movle r5, 0 | r5 = 0;
| }
| if (r2 <= r7) {
0x00087748 movgt r5, 1 | r5 = 1;
| }
0x0008774a cmp r3, 0 |
| if (r3 == 0) {
0x0008774c beq.w 0x87af8 | goto label_44;
| }
| label_5:
0x00087750 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00087752 cmp r3, 0x34 |
| if (r3 == 0x34) {
0x00087754 beq.w 0x87b58 | goto label_45;
| }
| label_8:
0x00087758 mov r0, r6 | r0 = r6;
0x0008775a add.w fp, fp, 1 |
0x0008775e blx 0x8160 | fcn_00008160 ();
0x00087762 ldr r3, [sp, 8] | r3 = var_8h;
0x00087764 add fp, r0 |
0x00087766 str.w r6, [r3, r4, lsl 2] | __asm ("str.w r6, [r3, r4, lsl 2]");
0x0008776a adds r4, 1 | r4++;
0x0008776c ldr r6, [sp, 0x70] | r6 = var_70h;
0x0008776e clz sb, r6 | sb &= r6;
0x00087772 lsr.w sb, sb, 5 | sb >>= 5;
0x00087776 and.w r5, sb, r5 | r5 = sb & r5;
0x0008777a cmp r5, 0 |
0x0008777c bne 0x87738 |
| } while (r5 != 0);
| label_7:
0x0008777e ldr.w sl, [sp, 0x3c] | sl = var_3ch;
| label_11:
0x00087782 ldr r3, [sp, 0x1c] | r3 = n;
0x00087784 cmp r3, 0 |
0x00087786 ite eq |
| if (r3 != 0) {
0x00087788 moveq r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x0008778a andne r3, sb, 1 | r3 = sb & 1;
| }
0x0008778e cmp r3, 0 |
| if (r3 != 0) {
0x00087790 bne.w 0x87c12 | goto label_46;
| }
0x00087794 cmp r6, 0 |
| if (r6 != 0) {
0x00087796 bne.w 0x87c52 | goto label_47;
| }
| if (r4 == 0) {
0x0008779a cbnz r4, 0x877ac |
| label_14:
0x0008779c ldr.w r3, [pc, 0xaec] |
0x000877a0 movs r4, 1 | r4 = 1;
0x000877a2 ldr r2, [sp, 8] | r2 = var_8h;
0x000877a4 mov.w fp, 8 |
0x000877a8 add r3, pc | r3 = 0x10fa38;
0x000877aa str r3, [r2] | *(r2) = r3;
| }
| label_15:
0x000877ac ldr r7, [sp, 0x74] | r7 = var_74h;
0x000877ae cmp r7, 0 |
| if (r7 == 0) {
0x000877b0 beq.w 0x87c34 | goto label_48;
| }
| label_12:
0x000877b4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000877b6 cmp r3, 0 |
| if (r3 == 0) {
0x000877b8 beq.w 0x87f4c | goto label_49;
| }
0x000877bc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000877be ldrb r5, [r3] | r5 = *(r3);
0x000877c0 cmp r5, 0 |
| if (r5 == 0) {
0x000877c2 beq.w 0x87c58 | goto label_50;
| }
0x000877c6 movs r6, 2 | r6 = 2;
| do {
0x000877c8 cmp r5, 0x2c |
0x000877ca ldrb r5, [r3, 1]! | r5 = *((r3 += 1));
0x000877ce it eq |
| if (r5 != 0x2c) {
0x000877d0 addeq r6, 1 | r6++;
| }
0x000877d2 cmp r5, 0 |
0x000877d4 bne 0x877c8 |
| } while (r5 != 0);
0x000877d6 add.w r7, r6, r6, lsl 1 | r7 = r6 + (r6 << 1);
0x000877da mov r1, r5 | r1 = r5;
0x000877dc lsls r7, r7, 3 | r7 <<= 3;
0x000877de mov r0, r7 | r0 = r7;
0x000877e0 blx 0x7f18 | fcn_00007f18 ();
0x000877e4 str r0, [sp, 0x10] | var_10h = r0;
0x000877e6 cmp r0, 0 |
| if (r0 == 0) {
0x000877e8 beq.w 0x87c68 | goto label_19;
| }
0x000877ec mov r2, r7 | r2 = r7;
0x000877ee mov r1, r5 | r1 = r5;
0x000877f0 blx 0x8264 | fcn_00008264 ();
0x000877f4 str r4, [sp, 0x34] | var_34h = r4;
0x000877f6 movw sb, 0x9680 |
0x000877fa ldr.w lr, [sp, 0x18] | lr = var_18h;
0x000877fe movt sb, 0x98 | sb = 0x989680;
0x00087802 ldr r4, [sp, 0x10] | r4 = var_10h;
0x00087804 mov.w r8, 1 | r8 = 1;
| label_0:
0x00087808 ldrb.w r3, [lr] | r3 = *(lr);
0x0008780c subs r3, 0x30 | r3 -= 0x30;
0x0008780e uxtb r2, r3 | r2 = (int8_t) r3;
0x00087810 cmp r2, 9 |
| if (r2 > 9) {
0x00087812 bhi.w 0x87da0 | goto label_51;
| }
0x00087816 asrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x00087818 add.w r7, lr, 1 | r7 = lr + 1;
0x0008781c mov.w ip, 0 |
0x00087820 b 0x87846 |
| while (r0 < 9) {
0x00087822 lsls r0, r1, 2 | r0 = r1 << 2;
0x00087824 lsls r2, r3, 2 | r2 = r3 << 2;
0x00087826 orr.w r0, r0, r3, lsr 30 | r0 |= (r3 >> 30);
0x0008782a adds r3, r2, r3 | r3 = r2 + r3;
0x0008782c adc.w r0, r1, r0 | __asm ("adc.w r0, r1, r0");
0x00087830 adds r3, r3, r3 | r3 += r3;
0x00087832 adcs r0, r0 | __asm ("adcs r0, r0");
0x00087834 adds r3, r5, r3 | r3 = r5 + r3;
0x00087836 adc.w r1, r0, r5, asr 31 | __asm ("adc.w r1, r0, r5, asr 31");
0x0008783a cmp.w r3, -0x80000000 |
0x0008783e sbcs r2, r1, 0 | __asm ("sbcs r2, r1, 0");
| if (r3 >= -0x80000000) {
0x00087842 bhs.w 0x8822e | goto label_52;
| }
0x00087846 ldrb r5, [r7] | r5 = *(r7);
0x00087848 mov r2, r7 | r2 = r7;
0x0008784a add.w ip, ip, 1 |
0x0008784e adds r7, 1 | r7++;
0x00087850 subs r5, 0x30 | r5 -= 0x30;
0x00087852 uxtb r0, r5 | r0 = (int8_t) r5;
0x00087854 cmp r0, 9 |
0x00087856 bls 0x87822 |
| }
0x00087858 cmp r3, sb |
| if (r3 <= sb) {
0x0008785a ble.w 0x87db6 | goto label_53;
| }
| label_17:
0x0008785e subs r6, 1 | r6--;
| label_18:
0x00087860 cmp r8, r6 |
0x00087862 add.w lr, r2, 1 | lr = r2 + 1;
0x00087864 lsrs r1, r0, 0x18 | r1 = r0 >> 0x18;
| if (r1 < r0) {
0x00087866 blt 0x87808 | goto label_0;
| }
0x00087868 add.w r2, r6, r6, lsl 1 | r2 = r6 + (r6 << 1);
0x0008786c ldr r4, [sp, 0x34] | r4 = var_34h;
0x0008786e mov r5, r6 | r5 = r6;
0x00087870 lsls r2, r2, 1 | r2 <<= 1;
| label_20:
0x00087872 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00087874 add.w r8, r3, 1 | r8 = r3 + 1;
0x00087878 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008787a add.w sb, r3, 1 | sb = r3 + 1;
0x0008787e add.w r3, r8, sb | r3 = r8 + sb;
0x00087882 add r3, r4 | r3 += r4;
0x00087884 add.w r1, r3, fp | r1 = r3 + fp;
0x00087888 add.w r3, r4, 0x48 | r3 = r4 + 0x48;
0x0008788c add r3, r2 | r3 += r2;
0x0008788e add.w fp, r1, r3, lsl 2 |
0x00087892 movs r3, 0 | r3 = 0;
0x00087894 mov r1, r3 | r1 = r3;
0x00087896 str r3, [sp, 0x70] | var_70h = r3;
0x00087898 mov r0, fp | r0 = fp;
0x0008789a blx 0x7f18 | fcn_00007f18 ();
0x0008789e movs r3, 0 | r3 = 0;
0x000878a0 mov r7, r0 | r7 = r0;
0x000878a2 cmp r0, 0 |
| if (r0 == 0) {
0x000878a4 beq.w 0x88014 | goto label_54;
| }
0x000878a8 mov r1, r3 | r1 = r3;
0x000878aa mov r2, fp | r2 = fp;
0x000878ac blx 0x8264 | fcn_00008264 ();
0x000878b0 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000878b2 add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x000878b6 ldr r1, [sp, 0x74] | r1 = var_74h;
0x000878b8 add.w r0, r7, 0x120 | r0 = r7 + 0x120;
0x000878bc str r0, [r7, 0x1c] | *((r7 + 0x1c)) = r0;
0x000878be lsls r5, r5, 3 | r5 <<= 3;
0x000878c0 str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x000878c2 add.w r0, r0, r4, lsl 2 | r0 += (r4 << 2);
0x000878c6 ldr r3, [sp, 0x68] | r3 = var_68h;
0x000878c8 str r1, [r7, 0x24] | *((r7 + 0x24)) = r1;
0x000878ca str r4, [r7, 0x18] | *((r7 + 0x18)) = r4;
0x000878cc strb.w r3, [r7, 0xef] | *((r7 + 0xef)) = r3;
0x000878d0 ldr r3, [sp, 0x1c] | r3 = n;
0x000878d2 str.w r0, [r7, 0x104] | __asm ("str.w r0, aav.0x000000ff");
0x000878d6 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x000878d8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000878da str r3, [r7, 0x2c] | *((r7 + 0x2c)) = r3;
0x000878dc ldr r3, [sp, 0x64] | r3 = var_64h;
0x000878de eor r2, r3, 1 | r2 = r3 ^ 1;
0x000878e2 movs r3, 0 | r3 = 0;
0x000878e4 str.w r3, [r7, 0x10c] | __asm ("str.w r3, aav.0x000000ff");
0x000878e8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000878ea sub.w r1, r3, 0x34 | r1 = r3 - 0x34;
0x000878ee clz r1, r1 | r1 &= r1;
0x000878f2 lsrs r1, r1, 5 | r1 >>= 5;
0x000878f4 ands r2, r1 | r2 &= r1;
0x000878f6 strb.w r1, [r7, 0xed] | *((r7 + 0xed)) = r1;
0x000878fa strb.w r2, [r7, 0xee] | *((r7 + 0xee)) = r2;
0x000878fe mov.w r2, 0x100000 | r2 = 0x100000;
0x00087902 str.w r2, [r7, 0x108] | __asm ("str.w r2, aav.0x000000ff");
0x00087904 movs r1, 8 | r1 = 8;
0x00087906 movs r2, 0xff | r2 = 0xff;
0x00087908 strb.w r1, [r7, 0xec] | *((r7 + 0xec)) = r1;
0x0008790c str r2, [r7, 0x30] | *((r7 + 0x30)) = r2;
0x0008790e mov r2, r5 | r2 = r5;
0x00087910 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00087912 blx 0x7dcc | fcn_00007dcc ();
0x00087916 add.w r0, r6, r6, lsl 1 | r0 = r6 + (r6 << 1);
0x0008791a str.w r6, [r7, 0x100] | __asm ("str.w r6, aav.0x000000ff");
0x0008791e ldr.w r6, [r7, 0x104] | r6 = *((r7 + 0x104));
0x00087922 movs r1, 1 | r1 = 1;
0x00087924 movs r3, 0 | r3 = 0;
0x00087926 mov r2, r6 | r2 = r6;
0x00087928 add.w r0, r6, r0, lsl 3 | r0 = r6 + (r0 << 3);
| do {
0x0008792c strb r1, [r2, 4] | *((r2 + 4)) = r1;
0x0008792e strb r1, [r2, 5] | *((r2 + 5)) = r1;
0x00087930 strd r3, r3, [r2, 8] | __asm ("strd r3, r3, [r2, 8]");
0x00087934 strd r3, r3, [r2, 0x10] | __asm ("strd r3, r3, [r2, 0x10]");
0x00087938 adds r2, 0x18 | r2 += 0x18;
0x0008793a cmp r0, r2 |
0x0008793c bne 0x8792c |
| } while (r0 != r2);
0x0008793e adds r0, r6, r5 | r0 = r6 + r5;
0x00087940 ldr r6, [sp, 0x4c] | r6 = var_4ch;
0x00087942 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
0x00087944 add r0, r4 | r0 += r4;
0x00087946 add.w r5, r0, r8 | r5 = r0 + r8;
0x0008794a mov r2, r8 | r2 = r8;
0x0008794c str r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
0x0008794e add.w fp, r5, sb |
0x00087950 lsrs r1, r1, 0xc | r1 >>= 0xc;
0x00087952 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x00087954 blx 0x7dcc | fcn_00007dcc ();
0x00087958 mov r2, sb | r2 = sb;
0x0008795a str r5, [r7, 0x10] | *((r7 + 0x10)) = r5;
0x0008795c mov r0, r5 | r0 = r5;
0x0008795e ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00087960 blx 0x7dcc | fcn_00007dcc ();
0x00087964 cmp r4, 0 |
0x00087966 it le |
| if (r4 > 0) {
0x00087968 addle sb, sp, 0x78 | sb += var_78h;
| }
| if (r4 <= 0) {
0x0008796c ble.w 0x87dd6 | goto label_55;
| }
0x00087970 ldr r3, [sp, 8] | r3 = var_8h;
0x00087972 movs r5, 0 | r5 = 0;
0x00087974 str.w sl, [sp, 0x1c] | __asm ("str.w sl, [n]");
0x00087978 add.w sb, sp, 0x78 | sb += var_78h;
0x0008797c mov sl, fp | sl = fp;
0x0008797e sub.w r8, r3, 4 | r8 = r3 - 4;
| do {
0x00087982 movs r3, 0 | r3 = 0;
0x00087984 ldr r0, [r8, 4]! | r0 = *((r8 += 4));
0x00087988 mov r1, sb | r1 = sb;
0x0008798a str r3, [sp, 0x78] | var_78h = r3;
0x0008798c bl 0xabfc | fcn_0000abfc (r0, r1);
0x00087990 ldr r6, [sp, 0x78] | r6 = var_78h;
0x00087992 lsl.w fp, r5, 2 |
0x00087996 cmp r6, 0 |
| if (r6 > 0) {
0x00087998 ble 0x879a4 |
0x0008799a mov r1, r0 | r1 = r0;
0x0008799c mov r2, r6 | r2 = r6;
0x0008799e mov r0, sl | r0 = sl;
0x000879a0 blx 0x7dcc | fcn_00007dcc ();
| }
0x000879a4 mov.w r3, 0 | r3 = 0;
0x000879a8 mov r0, sl | r0 = sl;
0x000879aa strb.w r3, [sl, r6] | *((sl + r6)) = r3;
0x000879ae adds r5, 1 | r5++;
0x000879b0 bl 0xa694 | fcn_0000a694 (r0);
0x000879b4 ldr r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
0x000879b6 cmp r5, r4 |
0x000879b8 add.w r6, r6, 1 | r6++;
0x000879bc str.w sl, [r2, fp] | __asm ("str.w sl, [r2, fp]");
0x000879c0 add sl, r6 | sl += r6;
0x000879c2 bne 0x87982 |
| } while (r5 != r4);
0x000879c4 ldr.w sl, [sp, 0x1c] | sl = n;
0x000879c8 mov r3, r2 | r3 = r2;
0x000879ca mov r2, r4 | r2 = r4;
0x000879cc mov.w r8, 0 | r8 = 0;
0x000879d0 str r7, [sp, 0x1c] | n = r7;
0x000879d2 mov r4, sl | r4 = sl;
0x000879d4 mov sl, r2 | sl = r2;
0x000879d6 str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h]");
| label_3:
0x000879da ldr.w r0, [r3, r8, lsl 2] | offset_0 = r8 << 2;
| r0 = *((r3 + offset_0));
0x000879de lsl.w sb, r8, 2 | sb = r8 << 2;
0x000879e2 blx 0x8160 | r0 = fcn_00008160 ();
0x000879e6 mov r6, r0 | r6 = r0;
| if (r4 == 0) {
0x000879e8 cbz r4, 0x87a46 | goto label_56;
| }
0x000879ea ldr r3, [sp, 0x14] | r3 = var_14h;
0x000879ec movs r5, 0 | r5 = 0;
0x000879ee sub.w fp, r3, 4 |
0x000879f2 mov r3, fp | r3 = fp;
0x000879f4 mov fp, sb |
0x000879f6 mov sb, r3 | sb = r3;
0x000879f8 b 0x87a00 |
| while (r7 == 0) {
| label_1:
0x000879fa adds r5, 1 | r5++;
0x000879fc cmp r4, r5 |
| if (r4 == r5) {
0x000879fe beq 0x87a46 | goto label_56;
| }
| label_2:
0x00087a00 ldr r7, [sb, 4]! | r7 = *((sb += 4));
0x00087a04 cmp r7, 0 |
0x00087a06 beq 0x879fa |
| }
0x00087a08 mov r0, r7 | r0 = r7;
0x00087a0a blx 0x8160 | r0 = fcn_00008160 ();
0x00087a0e cmp r6, r0 |
| if (r6 != r0) {
0x00087a10 bne 0x879fa | goto label_1;
| }
0x00087a12 ldr r3, [sp, 0x1c] | r3 = n;
0x00087a14 mov r1, r7 | r1 = r7;
0x00087a16 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x00087a18 ldr.w r0, [r2, fp] | r0 = *((r2 + fp));
0x00087a1c mov r2, r6 | r2 = r6;
0x00087a1e blx 0x85a8 | r0 = fcn_000085a8 ();
0x00087a22 cmp r0, 0 |
| if (r0 != 0) {
0x00087a24 bne 0x879fa | goto label_1;
| }
0x00087a26 ldr r3, [sp, 0x1c] | r3 = n;
0x00087a28 adds r5, 1 | r5++;
0x00087a2a str r0, [sp, 0x28] | var_28h = r0;
0x00087a2c mov r0, r7 | r0 = r7;
0x00087a2e ldr r1, [r3, 0x20] | r1 = *((r3 + 0x20));
0x00087a30 mov.w r3, 1 | r3 = 1;
0x00087a34 strb.w r3, [r1, r8] | *((r1 + r8)) = r3;
0x00087a38 blx 0x84f8 | fcn_000084f8 ();
0x00087a3c ldr r2, [sp, 0x28] | r2 = var_28h;
0x00087a3e cmp r4, r5 |
0x00087a40 str.w r2, [sb] | __asm ("str.w r2, [sb]");
| if (r4 != r5) {
0x00087a44 bne 0x87a00 | goto label_2;
| }
| label_56:
0x00087a46 add.w r8, r8, 1 | r8++;
0x00087a4a cmp r8, sl |
| if (r8 == sl) {
0x00087a4c beq.w 0x87dce | goto label_57;
| }
0x00087a50 ldr r3, [sp, 0x1c] | r3 = n;
0x00087a52 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00087a54 b 0x879da | goto label_3;
| label_42:
0x00087a56 movs r7, 0 | r7 = 0;
0x00087a58 movs r3, 7 | r3 = 7;
0x00087a5a mov r6, r3 | r6 = r3;
0x00087a5c mov sl, r7 | sl = r7;
0x00087a5e str r7, [sp, 0x14] | var_14h = r7;
0x00087a60 str r3, [sp, 0x70] | var_70h = r3;
0x00087a62 str r7, [sp, 0x10] | var_10h = r7;
0x00087a64 str r7, [sp, 0x28] | var_28h = r7;
0x00087a66 str r7, [sp, 0x1c] | n = r7;
0x00087a68 strd r7, r7, [sp, 0x20] | __asm ("strd r7, r7, [var_20h]");
0x00087a6c str r7, [sp, 0x18] | var_18h = r7;
| label_13:
0x00087a6e ldr r0, [sp, 0x18] | r0 = var_18h;
0x00087a70 blx 0x84f8 | fcn_000084f8 ();
0x00087a74 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00087a76 blx 0x84f8 | fcn_000084f8 ();
0x00087a7a ldr r0, [sp, 0x20] | r0 = var_20h;
0x00087a7c blx 0x84f8 | fcn_000084f8 ();
0x00087a80 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00087a82 blx 0x84f8 | fcn_000084f8 ();
0x00087a86 ldr r0, [sp, 0x1c] | r0 = n;
0x00087a88 blx 0x84f8 | fcn_000084f8 ();
0x00087a8c ldr r0, [sp, 0x28] | r0 = var_28h;
0x00087a8e blx 0x84f8 | fcn_000084f8 ();
0x00087a92 cmp.w sl, 0 |
| if (sl == 0) {
0x00087a96 beq 0x87aac | goto label_58;
| }
0x00087a98 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00087a9a movs r4, 0 | r4 = 0;
0x00087a9c subs r5, r3, 4 | r5 = r3 - 4;
| do {
0x00087a9e ldr r0, [r5, 4]! | r0 = *((r5 += 4));
0x00087aa2 adds r4, 1 | r4++;
0x00087aa4 blx 0x84f8 | fcn_000084f8 ();
0x00087aa8 cmp sl, r4 |
0x00087aaa bne 0x87a9e |
| } while (sl != r4);
| label_58:
0x00087aac ldr r0, [sp, 8] | r0 = var_8h;
0x00087aae blx 0x84f8 | fcn_000084f8 ();
0x00087ab2 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00087ab4 blx 0x84f8 | fcn_000084f8 ();
| if (r6 != 0) {
0x00087ab8 cbz r6, 0x87ac4 |
| if (r7 == 0) {
0x00087aba cbz r7, 0x87aea | goto label_59;
| }
0x00087abc mov r0, r7 | r0 = r7;
0x00087abe bl 0x5d894 | fcn_0005d894 (r0);
0x00087ac2 b 0x87ac8 |
| } else {
0x00087ac4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00087ac6 str r7, [r3] | *(r3) = r7;
| }
| do {
| label_4:
0x00087ac8 ldr.w r2, [pc, 0x7c4] |
0x00087acc ldr.w r3, [pc, 0x7ac] | r3 = *(0x8827c);
0x00087ad0 add r2, pc | r2 = 0x10fd64;
0x00087ad2 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00087ad4 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00087ad6 ldr r3, [sp, 0xbc] | r3 = var_bch;
0x00087ad8 eors r2, r3 | r2 ^= r3;
0x00087ada mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00087ade bne.w 0x8848a | goto label_60;
| }
0x00087ae2 mov r0, r6 | r0 = r6;
0x00087ae4 add sp, 0xc4 |
0x00087ae6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_59:
0x00087aea ldr r0, [sp, 0x74] | r0 = var_74h;
0x00087aec cmp r0, 0 |
0x00087aee beq 0x87ac8 |
| } while (r0 == 0);
0x00087af0 ldr r3, [r0] | r3 = *(r0);
0x00087af2 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00087af4 blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x00087af6 b 0x87ac8 | goto label_4;
| label_44:
0x00087af8 mov r0, r6 | r0 = r6;
0x00087afa blx 0x8160 | r0 = fcn_00008160 ();
0x00087afe cmp r0, 8 |
| if (r0 < 8) {
0x00087b00 bls.w 0x87750 | goto label_5;
| }
0x00087b04 ldr.w r1, [pc, 0x78c] |
0x00087b08 movs r2, 8 | r2 = 8;
0x00087b0a mov r0, r6 | r0 = r6;
0x00087b0c add r1, pc | r1 = 0x10fda4;
0x00087b0e blx 0x85a8 | r0 = fcn_000085a8 ();
0x00087b12 cmp r0, 0 |
| if (r0 != 0) {
0x00087b14 bne.w 0x87750 | goto label_5;
| }
0x00087b18 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
0x00087b1a lsls r2, r3, 0x18 | r2 = r3 << 0x18;
| if (r2 < r3) {
0x00087b1c bmi.w 0x87750 | goto label_5;
| }
0x00087b20 ldr.w r2, [pc, 0x774] |
0x00087b24 add r2, pc | r2 = 0x10fdc0;
0x00087b26 add r3, r2 | r3 += r2;
0x00087b28 ldrb.w r3, [r3, 0x73c] | r3 = *((r3 + 0x73c));
0x00087b2c cmp r3, 0 |
| if (r3 != 0) {
0x00087b2e bne.w 0x87750 | goto label_5;
| }
0x00087b30 add r6, sp, 0x3c | r6 = sp + 0x3c;
0x00087b32 add.w r1, r6, 9 | r1 = r6 + 9;
0x00087b36 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00087b38 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00087b3a add r2, sp, 0x74 | r2 += var_74h;
0x00087b3c bl 0x4e2ec | r0 = fcn_0004e2ec (r0, r1, r2);
0x00087b40 clz sb, r0 | sb &= r0;
0x00087b44 mov r6, r0 | r6 = r0;
0x00087b46 lsr.w sb, sb, 5 | sb >>= 5;
0x00087b4a str r0, [sp, 0x70] | var_70h = r0;
0x00087b4c and.w r5, sb, r5 | r5 = sb & r5;
0x00087b50 cmp r5, 0 |
| if (r5 != 0) {
0x00087b52 bne.w 0x87738 | goto label_6;
| }
0x00087b56 b 0x8777e | goto label_7;
| label_45:
0x00087b58 ldrb r3, [r6] | r3 = *(r6);
0x00087b5a mov r1, r6 | r1 = r6;
0x00087b5c cmp r3, 0x3d |
| if (r3 == 0x3d) {
0x00087b5e beq.w 0x87d9a | goto label_61;
| }
| label_9:
0x00087b62 cmp r3, 0 |
| if (r3 == 0) {
0x00087b64 beq.w 0x87758 | goto label_8;
| }
0x00087b68 ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x00087b6c cmp r3, 0x3d |
| if (r3 != 0x3d) {
0x00087b6e bne 0x87b62 | goto label_9;
| }
0x00087b70 subs r3, r1, r6 | r3 = r1 - r6;
0x00087b72 str r3, [sp, 0x54] | var_54h = r3;
| label_16:
0x00087b74 ldr r0, [sp, 0x58] | r0 = s1;
0x00087b76 adds r1, 1 | r1++;
0x00087b78 blx 0x852c | strncmp (r0, r1, r2);
0x00087b7c str r0, [sp, 0x34] | var_34h = r0;
0x00087b7e cmp r0, 0 |
| if (r0 == 0) {
0x00087b80 beq 0x87c04 | goto label_62;
| }
0x00087b82 bl 0xa694 | fcn_0000a694 (r0);
0x00087b86 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00087b88 add.w ip, sp, 0x7c |
0x00087b8c mov sb, ip | sb = ip;
0x00087b8e mov.w r8, 0 | r8 = 0;
0x00087b92 add.w lr, r3, 0x3ac | lr = r3 + 0x3ac;
0x00087b96 ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00087b9a stm.w ip!, {r0} | *(ip!) = r0;
0x00087b9e ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00087ba2 stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00087ba6 ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00087baa stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00087bae ldm.w lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x00087bb2 stm.w ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00087bb6 str r5, [sp, 0x60] | var_60h = r5;
0x00087bb8 ldr r5, [sp, 0x54] | r5 = var_54h;
0x00087bba b 0x87bcc |
| while (r3 != r5) {
| label_10:
0x00087bbc add.w r8, r8, 1 | r8++;
0x00087bc0 add.w sb, sb, 8 | sb += var_8h_2;
0x00087bc4 cmp.w r8, 8 |
| if (r8 == 8) {
0x00087bc8 beq.w 0x88218 | goto label_63;
| }
0x00087bcc ldr.w r3, [sb, 4] | r3 = var_4h_2;
0x00087bd0 cmp r3, r5 |
0x00087bd2 bne 0x87bbc |
| }
0x00087bd4 ldr.w r1, [sb] | r1 = *(sb);
0x00087bd8 mov r2, r5 | r2 = r5;
0x00087bda mov r0, r6 | r0 = r6;
0x00087bdc blx 0x85a8 | r0 = fcn_000085a8 ();
0x00087be0 cmp r0, 0 |
| if (r0 != 0) {
0x00087be2 bne 0x87bbc | goto label_10;
| }
0x00087be4 add.w r8, r8, -1 | r8 += -1;
0x00087be8 ldr r5, [sp, 0x60] | r5 = var_60h;
0x00087bea cmp.w r8, 6 |
| if (r8 > 6) {
0x00087bee bhi.w 0x8848e | goto label_64;
| }
| /* switch table (8 cases) at 0x87bf6 */
0x00087bf2 tbh [pc, r8, lsl 1] | __asm ("tbh [pc, r8, lsl 1]");
| label_62:
0x00087c04 movs r6, 7 | r6 = 7;
0x00087c06 ldr.w sl, [sp, 0x3c] | sl = var_3ch;
0x00087c0a ldr.w sb, [sp, 0x34] | sb = var_34h;
0x00087c0e str r6, [sp, 0x70] | var_70h = r6;
0x00087c10 b 0x87782 | goto label_11;
| label_46:
0x00087c12 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00087c14 blx 0x84f8 | fcn_000084f8 ();
0x00087c18 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00087c1a blx 0x84f8 | fcn_000084f8 ();
| if (r4 == 0) {
0x00087c1e cbz r4, 0x87c74 | goto label_65;
| }
0x00087c20 cmp r6, 0 |
| if (r6 != 0) {
0x00087c22 bne.w 0x880de | goto label_66;
| }
| label_30:
0x00087c26 ldr r7, [sp, 0x74] | r7 = var_74h;
0x00087c28 movs r3, 0 | r3 = 0;
0x00087c2a strd r3, r3, [sp, 0x20] | __asm ("strd r3, r3, [var_20h]");
0x00087c2e cmp r7, 0 |
| if (r7 != 0) {
0x00087c30 bne.w 0x877b4 | goto label_12;
| }
| label_48:
0x00087c34 ldr.w r1, [pc, 0x664] | r1 = *(0x0008829c);
0x00087c38 add r2, sp, 0x74 | r2 += var_74h;
0x00087c3a ldr r0, [sp, 0x38] | r0 = var_38h;
0x00087c3c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00087c3e add r1, pc | r1 += pc;
0x00087c40 bl 0x4e2ec | r0 = fcn_0004e2ec (r0, r1, r2);
0x00087c44 mov r6, r0 | r6 = r0;
0x00087c46 str r0, [sp, 0x70] | var_70h = r0;
0x00087c48 cmp r0, 0 |
| if (r0 == 0) {
0x00087c4a beq.w 0x877b4 | goto label_12;
| }
0x00087c4e str r7, [sp, 0x10] | var_10h = r7;
0x00087c50 b 0x87a6e | goto label_13;
| label_47:
0x00087c52 mov r7, r3 | r7 = r3;
0x00087c54 str r3, [sp, 0x10] | var_10h = r3;
0x00087c56 b 0x87a6e | goto label_13;
| label_50:
0x00087c58 movs r0, 0x18 | r0 = 0x18;
0x00087c5a movs r1, 0 | r1 = 0;
0x00087c5c blx 0x7f18 | fcn_00007f18 ();
0x00087c60 str r0, [sp, 0x10] | var_10h = r0;
0x00087c62 cmp r0, 0 |
| if (r0 != 0) {
0x00087c64 bne.w 0x88314 | goto label_67;
| }
| label_19:
0x00087c68 movs r3, 0 | r3 = 0;
0x00087c6a movs r6, 7 | r6 = 7;
0x00087c6c mov r7, r3 | r7 = r3;
0x00087c6e str r6, [sp, 0x70] | var_70h = r6;
0x00087c70 str r3, [sp, 0x10] | var_10h = r3;
0x00087c72 b 0x87a6e | goto label_13;
| label_65:
0x00087c74 ldr r0, [sp, 8] | r0 = var_8h;
0x00087c76 blx 0x84f8 | fcn_000084f8 ();
0x00087c7a ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00087c7c ldr.w r0, [pc, 0x620] |
0x00087c80 ldr r2, [sp, 0x1c] | r2 = n;
0x00087c82 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00087c84 add r0, pc | r0 = 0x10ff28;
0x00087c86 str r4, [sp, 0x78] | var_78h = r4;
0x00087c88 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x00087c8c mov r7, r0 | r7 = r0;
0x00087c8e cmp r0, 0 |
| if (r0 == 0) {
0x00087c90 beq.w 0x8801a | goto label_68;
| }
0x00087c94 mov r1, r0 | r1 = r0;
0x00087c96 add r3, sp, 0x78 | r3 += var_78h;
0x00087c98 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00087c9a mov.w r2, -1 | r2 = -1;
0x00087c9c adds r2, 0xff | r2 += 0xff;
0x00087c9e str r4, [sp] | *(sp) = r4;
0x00087ca0 blx 0x8430 | r0 = fcn_00008430 ();
0x00087ca4 mov r6, r0 | r6 = r0;
0x00087ca6 cmp r0, 0 |
| if (r0 != 0) {
0x00087ca8 bne.w 0x88250 | goto label_69;
| }
0x00087cac mov r0, r7 | r0 = r7;
0x00087cae blx 0x84f8 | fcn_000084f8 ();
0x00087cb2 ldr r0, [sp, 0x78] | r0 = var_78h;
0x00087cb4 blx 0x8190 | r0 = fcn_00008190 ();
0x00087cb8 subs.w sb, r0, 0 | sb = r0 - 0;
0x00087cbc ittt gt |
| if (sb <= r0) {
0x00087cbe movgt r4, r6 | r4 = r6;
| }
| if (sb <= r0) {
0x00087cc0 movgt fp, r6 |
| }
| if (sb <= r0) {
0x00087cc2 movgt r5, r6 | r5 = r6;
| }
| if (sb <= r0) {
0x00087cc4 ble.w 0x88446 | goto label_70;
| }
| do {
0x00087cc8 mov r1, r4 | r1 = r4;
0x00087cca ldr r0, [sp, 0x78] | r0 = var_78h;
0x00087ccc blx 0x7d5c | fcn_00007d5c ();
0x00087cd0 blx 0x8160 | r0 = fcn_00008160 ();
0x00087cd4 adds r3, r0, 1 | r3 = r0 + 1;
0x00087cd6 adds r4, 1 | r4++;
0x00087cd8 adds.w r8, r3, fp | r8 = r3 + fp;
0x00087cdc adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x00087ce0 cmp sb, r4 |
0x00087ce2 mov fp, r8 |
0x00087ce4 bne 0x87cc8 |
| } while (sb != r4);
0x00087ce6 lsl.w r7, sb, 2 | r7 = sb << 2;
0x00087cea adds.w r0, r7, r8 | r0 = r7 + r8;
0x00087cee adc r1, r5, 0 | __asm ("adc r1, r5, 0");
0x00087cf2 blx 0x7f18 | fcn_00007f18 ();
0x00087cf6 str r0, [sp, 8] | var_8h = r0;
0x00087cf8 cmp r0, 0 |
| if (r0 == 0) {
0x00087cfa beq.w 0x88472 | goto label_71;
| }
0x00087cfe ldr r3, [sp, 8] | r3 = var_8h;
0x00087d00 movs r4, 0 | r4 = 0;
0x00087d02 str r6, [sp, 0x10] | var_10h = r6;
0x00087d04 add r7, r3 | r7 += r3;
0x00087d06 subs r3, 4 | r3 -= 4;
0x00087d08 mov r6, r3 | r6 = r3;
| do {
0x00087d0a mov r1, r4 | r1 = r4;
0x00087d0c ldr r0, [sp, 0x78] | r0 = var_78h;
0x00087d0e blx 0x7d5c | r0 = fcn_00007d5c ();
0x00087d12 mov r5, r0 | r5 = r0;
0x00087d14 blx 0x8160 | fcn_00008160 ();
0x00087d18 mov r1, r5 | r1 = r5;
0x00087d1a adds r5, r0, 1 | r5 = r0 + 1;
0x00087d1c mov r2, r5 | r2 = r5;
0x00087d1e mov r0, r7 | r0 = r7;
0x00087d20 blx 0x7dcc | fcn_00007dcc ();
0x00087d24 str r7, [r6, 4]! | *((r6 += 4)) = r7;
0x00087d28 add r7, r5 | r7 += r5;
0x00087d2a mov r5, r4 | r5 = r4;
0x00087d2c adds r4, 1 | r4++;
0x00087d2e cmp sb, r4 |
0x00087d30 bne 0x87d0a |
| } while (sb != r4);
0x00087d32 ldr r0, [sp, 0x78] | r0 = var_78h;
0x00087d34 ldr r6, [sp, 0x10] | r6 = var_10h;
0x00087d36 blx 0x8484 | fcn_00008484 ();
0x00087d3a movs r3, 0 | r3 = 0;
0x00087d3c str r3, [sp, 0x70] | var_70h = r3;
0x00087d3e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00087d40 cmp r3, 0 |
| if (r3 == 0) {
0x00087d42 beq.w 0x881ac | goto label_40;
| }
0x00087d46 str r4, [sp, 0x10] | var_10h = r4;
0x00087d48 ldr r7, [sp, 8] | r7 = var_8h;
0x00087d4a ldr r4, [sp, 0x28] | r4 = var_28h;
0x00087d4c b 0x87d54 |
| while (r0 != 0) {
0x00087d4e cmp r3, r5 |
| if (r3 == r5) {
0x00087d50 beq.w 0x8824c | goto label_72;
| }
0x00087d54 ldr.w r1, [r7, r6, lsl 2] | offset_1 = r6 << 2;
| r1 = *((r7 + offset_1));
0x00087d58 mov r0, r4 | r0 = r4;
0x00087d5a blx 0x831c | fcn_0000831c ();
0x00087d5e mov r3, r6 | r3 = r6;
0x00087d60 adds r6, 1 | r6++;
0x00087d62 cmp r0, 0 |
0x00087d64 bne 0x87d4e |
| }
0x00087d66 sub.w r2, sb, r3 | r2 = sb - r3;
0x00087d6a ldr r4, [sp, 0x10] | r4 = var_10h;
0x00087d6c lsls r2, r2, 2 | r2 <<= 2;
0x00087d6e mov r6, r8 | r6 = r8;
0x00087d70 mov sb, r5 | sb = r5;
0x00087d72 cmp r4, r3 |
0x00087d74 it le |
| if (r4 > r3) {
0x00087d76 movle r2, 4 | r2 = 4;
| }
0x00087d78 ldr r4, [sp, 8] | r4 = var_8h;
0x00087d7a lsls r3, r3, 2 | r3 <<= 2;
0x00087d7c mov r0, r4 | r0 = r4;
0x00087d7e adds r1, r3, 4 | r1 = r3 + 4;
0x00087d80 add r0, r3 | r0 += r3;
0x00087d82 add r1, r4 | r1 += r4;
0x00087d84 blx 0x7d44 | fcn_00007d44 ();
| label_39:
0x00087d88 mov r4, sb | r4 = sb;
0x00087d8a movs r3, 0 | r3 = 0;
0x00087d8c mov fp, r6 |
0x00087d8e strd r3, r3, [sp, 0x20] | __asm ("strd r3, r3, [var_20h]");
0x00087d92 cmp r4, 0 |
| if (r4 == 0) {
0x00087d94 beq.w 0x8779c | goto label_14;
| }
0x00087d98 b 0x877ac | goto label_15;
| label_61:
0x00087d9a movs r3, 0 | r3 = 0;
0x00087d9c str r3, [sp, 0x54] | var_54h = r3;
0x00087d9e b 0x87b74 | goto label_16;
| label_51:
0x00087da0 ldr.w r1, [pc, 0x500] |
0x00087da4 movs r6, 1 | r6 = 1;
0x00087da6 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00087da8 movs r7, 0 | r7 = 0;
0x00087daa ldr r2, [sp, 0x18] | r2 = var_18h;
0x00087dac add r1, pc | r1 = 0x110054;
0x00087dae str r6, [sp, 0x70] | var_70h = r6;
0x00087db0 bl 0x49598 | fcn_00049598 (r0);
0x00087db4 b 0x87a6e | goto label_13;
| label_53:
0x00087db6 add.w r2, lr, ip | r2 = lr + ip;
0x00087dba cmp r3, 0 |
| if (r3 == 0) {
0x00087dbc beq.w 0x8785e | goto label_17;
| }
0x00087dc0 add.w r1, r8, r8, lsl 1 | r1 = r8 + (r8 << 1);
0x00087dc4 add.w r8, r8, 1 | r8++;
0x00087dc8 str.w r3, [r4, r1, lsl 3] | __asm ("str.w r3, [r4, r1, lsl 3]");
0x00087dcc b 0x87860 | goto label_18;
| label_57:
0x00087dce ldr r7, [sp, 0x1c] | r7 = n;
0x00087dd0 mov sl, r4 | sl = r4;
0x00087dd2 ldr.w sb, [sp, 0x34] | sb = var_34h;
| label_55:
0x00087dd6 cmp.w sl, 0 |
| if (sl == 0) {
0x00087dda beq.w 0x87f74 | goto label_73;
| }
0x00087dde ldr.w r8, [pc, 0x4c8] |
0x00087de2 movs r4, 0 | r4 = 0;
0x00087de4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00087de6 movs r5, 1 | r5 = 1;
0x00087de8 ldr.w fp, [sp, 0x2c] | fp = var_2ch;
0x00087dec add r8, pc | r8 = 0x11009a;
0x00087dee subs r6, r3, 4 | r6 = r3 - 4;
| do {
0x00087df0 ldr r2, [r6, 4]! | r2 = *((r6 += 4));
| if (r2 != 0) {
0x00087df4 cbz r2, 0x87e00 |
0x00087df6 mov r1, r8 | r1 = r8;
0x00087df8 mov r0, fp | r0 = fp;
0x00087dfa bl 0x49598 | fcn_00049598 (r0);
0x00087dfe str r5, [sp, 0x70] | var_70h = r5;
| }
0x00087e00 adds r4, 1 | r4++;
0x00087e02 cmp sl, r4 |
0x00087e04 bne 0x87df0 |
| } while (sl != r4);
0x00087e06 ldr r3, [sp, 0x70] | r3 = var_70h;
0x00087e08 cmp r3, 0 |
| if (r3 == 0) {
0x00087e0a beq.w 0x87f74 | goto label_73;
| }
| label_21:
0x00087e0e movs r4, 0 | r4 = 0;
0x00087e10 str r4, [sp, 0x78] | var_78h = r4;
0x00087e12 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x00087e14 cmp r3, 0 |
| if (r3 == 0) {
0x00087e16 beq.w 0x87fa4 | goto label_74;
| }
0x00087e1a ldr.w r2, [pc, 0x490] |
0x00087e1e add r5, sp, 0x70 | r5 += var_70h;
0x00087e20 mov r1, sb | r1 = sb;
0x00087e22 mov r0, r5 | r0 = r5;
0x00087e24 ldr.w r6, [pc, 0x488] |
0x00087e28 add r2, pc | r2 = 0x1100da;
0x00087e2a bl 0x4e43c | fcn_0004e43c (r0, r1);
0x00087e2e ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00087e30 add r6, pc | r6 = 0x1100e4;
0x00087e32 cmp r3, 0 |
| if (r3 <= 0) {
0x00087e34 ble 0x87e4e | goto label_75;
| }
| do {
0x00087e36 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00087e38 mov r2, r6 | r2 = r6;
0x00087e3a mov r1, sb | r1 = sb;
0x00087e3c mov r0, r5 | r0 = r5;
0x00087e3e ldr.w r3, [r3, r4, lsl 2] | offset_2 = r4 << 2;
| r3 = *((r3 + offset_2));
0x00087e42 adds r4, 1 | r4++;
0x00087e44 bl 0x4e43c | fcn_0004e43c (r0, r1);
0x00087e48 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00087e4a cmp r4, r3 |
0x00087e4c blt 0x87e36 |
| } while (r4 < r3);
| label_75:
0x00087e4e ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
| if (r3 != 0) {
0x00087e50 cbz r3, 0x87e60 |
0x00087e52 ldr.w r2, [pc, 0x460] | r2 = *(0x000882b4);
0x00087e56 mov r1, sb | r1 = sb;
0x00087e58 mov r0, r5 | r0 = r5;
0x00087e5a add r2, pc | r2 += pc;
0x00087e5c bl 0x4e43c | fcn_0004e43c (r0, r1);
| }
| label_22:
0x00087e60 ldr r2, [r7, 0x28] | r2 = *((r7 + 0x28));
0x00087e62 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00087e64 cmp r2, 0 |
| if (r2 == 0) {
0x00087e66 beq.w 0x88198 | goto label_76;
| }
0x00087e6a ldr.w r1, [pc, 0x44c] | r1 = *(0x000882b8);
0x00087e6e add r1, pc | r1 += pc;
| label_28:
0x00087e70 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x00087e74 mov r0, r5 | r0 = r5;
0x00087e76 ldr.w r2, [pc, 0x444] |
0x00087e7a mov r1, sb | r1 = sb;
0x00087e7c add r2, pc | r2 = 0x11013e;
0x00087e7e bl 0x4e43c | fcn_0004e43c (r0, r1);
0x00087e82 ldr r3, [sp, 0x78] | r3 = var_78h;
0x00087e84 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00087e86 str.w r3, [r7, 0xe0] | __asm ("str.w r3, [r7, 0xe0]");
0x00087e8a movs r3, 0 | r3 = 0;
0x00087e8c str r3, [sp, 0x78] | var_78h = r3;
0x00087e8e cmp r0, 0 |
| if (r0 == 0) {
0x00087e90 beq.w 0x8800a | goto label_77;
| }
0x00087e94 bl 0x3fd34 | r0 = fcn_0003fd34 (r0);
0x00087e98 mov r8, r0 | r8 = r0;
0x00087e9a mov r6, r0 | r6 = r0;
| label_23:
0x00087e9c ldr.w r2, [pc, 0x420] |
0x00087ea0 mov r1, sb | r1 = sb;
0x00087ea2 mov r0, r5 | r0 = r5;
0x00087ea4 add r2, pc | r2 = 0x110168;
0x00087ea6 bl 0x4e43c | fcn_0004e43c (r0, r1);
0x00087eaa ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00087eac cmp r3, 0 |
| if (r3 <= 0) {
0x00087eae ble 0x87ecc | goto label_78;
| }
0x00087eb0 ldr.w fp, [pc, 0x410] | fp = *(0x000882c4);
0x00087eb4 movs r4, 0 | r4 = 0;
0x00087eb6 add fp, pc |
| do {
0x00087eb8 mov r3, r6 | r3 = r6;
0x00087eba mov r2, fp | r2 = fp;
0x00087ebc mov r1, sb | r1 = sb;
0x00087ebe mov r0, r5 | r0 = r5;
0x00087ec0 bl 0x4e43c | fcn_0004e43c (r0, r1);
0x00087ec4 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00087ec6 adds r4, 1 | r4++;
0x00087ec8 cmp r4, r3 |
0x00087eca blt 0x87eb8 |
| } while (r4 < r3);
| label_78:
0x00087ecc ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
| if (r3 != 0) {
0x00087ece cbz r3, 0x87edc |
0x00087ed0 ldr r2, [pc, 0x3f4] |
0x00087ed2 mov r0, r5 | r0 = r5;
0x00087ed4 mov r1, sb | r1 = sb;
0x00087ed6 add r2, pc | r2 = 0x1101a2;
0x00087ed8 bl 0x4e43c | fcn_0004e43c (r0, r1);
| }
0x00087edc mov r0, r8 | r0 = r8;
0x00087ede blx 0x84f8 | fcn_000084f8 ();
0x00087ee2 ldr r6, [sp, 0x70] | r6 = var_70h;
0x00087ee4 ldr r3, [sp, 0x78] | r3 = var_78h;
0x00087ee6 str.w r3, [r7, 0xe4] | __asm ("str.w r3, [r7, 0xe4]");
| if (r6 == 0) {
0x00087eea cbnz r6, 0x87f44 |
0x00087eec ldr r3, [sp, 0x50] | r3 = var_50h;
0x00087eee cmp r3, 0 |
| if (r3 != 0) {
0x00087ef0 bne.w 0x881be | goto label_79;
| }
0x00087ef4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00087ef6 cmp r3, 0x34 |
| if (r3 != 0x34) {
0x00087ef8 beq 0x87f00 |
0x00087efa movs r3, 2 | r3 = 2;
0x00087efc strb.w r3, [r7, 0xed] | *((r7 + 0xed)) = r3;
| }
| label_29:
0x00087f00 ldr r0, [pc, 0x3c8] |
0x00087f02 ldr r1, [r7, 0x10] | r1 = *((r7 + 0x10));
0x00087f04 add r0, pc | r0 = 0x1101d4;
0x00087f06 blx 0x852c | strncmp (r0, r1, r2);
0x00087f0a str r0, [sp, 0x1c] | n = r0;
0x00087f0c cmp r0, 0 |
| if (r0 == 0) {
0x00087f0e beq.w 0x8832c | goto label_80;
| }
0x00087f12 movs r4, 0 | r4 = 0;
0x00087f14 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x00087f16 ldr r1, [sp, 0x1c] | r1 = n;
0x00087f18 mov r3, sb | r3 = sb;
0x00087f1a mov.w r2, -1 | r2 = -1;
0x00087f1e str r4, [sp] | *(sp) = r4;
0x00087f20 blx 0x8430 | r0 = fcn_00008430 ();
0x00087f24 mov r6, r0 | r6 = r0;
0x00087f26 cmp r0, 0 |
| if (r0 == 0) {
0x00087f28 beq.w 0x880e8 | goto label_81;
| }
0x00087f2c cmp r6, 0x17 |
0x00087f2e ldr r0, [sp, 0x1c] | r0 = n;
| if (r6 == 0x17) {
0x00087f30 beq.w 0x8842c | goto label_82;
| }
0x00087f34 blx 0x84f8 | fcn_000084f8 ();
0x00087f38 ldr.w r3, [r7, 0xf4] | r3 = *((r7 + 0xf4));
0x00087f3c str r6, [sp, 0x70] | var_70h = r6;
0x00087f3e subs r3, 0x23 | r3 -= 0x23;
0x00087f40 str.w r3, [r7, 0xe8] | __asm ("str.w r3, [r7, 0xe8]");
| }
| label_27:
0x00087f44 movs r3, 0 | r3 = 0;
0x00087f46 str r3, [sp, 0x28] | var_28h = r3;
0x00087f48 str r3, [sp, 0x1c] | n = r3;
0x00087f4a b 0x87a6e | goto label_13;
| label_49:
0x00087f4c movs r0, 0x18 | r0 = 0x18;
0x00087f4e movs r1, 0 | r1 = 0;
0x00087f50 blx 0x7f18 | fcn_00007f18 ();
0x00087f54 str r0, [sp, 0x10] | var_10h = r0;
0x00087f56 cmp r0, 0 |
| if (r0 == 0) {
0x00087f58 beq.w 0x87c68 | goto label_19;
| }
0x00087f5c ldr r2, [sp, 0x18] | r2 = var_18h;
0x00087f5e movs r5, 1 | r5 = 1;
0x00087f60 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00087f62 mov r6, r5 | r6 = r5;
0x00087f64 str r2, [r3] | *(r3) = r2;
0x00087f66 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00087f68 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00087f6a str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00087f6c str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x00087f6e str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x00087f70 movs r2, 6 | r2 = 6;
0x00087f72 b 0x87872 | goto label_20;
| label_73:
0x00087f74 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00087f76 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00087f78 clz r2, r1 | r2 &= r1;
0x00087f7c clz r3, r3 | r3 &= r3;
0x00087f80 lsrs r2, r2, 5 | r2 >>= 5;
0x00087f82 lsrs r3, r3, 5 | r3 >>= 5;
0x00087f84 cmp r2, r3 |
| if (r2 == r3) {
0x00087f86 beq.w 0x87e0e | goto label_21;
| }
0x00087f8a cmp r1, 0 |
| if (r1 == 0) {
0x00087f8c beq.w 0x8834c | goto label_83;
| }
0x00087f90 ldr r2, [pc, 0x33c] |
0x00087f92 add r2, pc | r2 = 0x110266;
| label_32:
0x00087f94 ldr r1, [pc, 0x33c] |
0x00087f96 movs r3, 1 | r3 = 1;
0x00087f98 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00087f9a str r3, [sp, 0x70] | var_70h = r3;
0x00087f9c add r1, pc | r1 = 0x110274;
0x00087f9e bl 0x49598 | fcn_00049598 (r0);
0x00087fa2 b 0x87e0e | goto label_21;
| label_74:
0x00087fa4 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00087fa6 cmp r0, 0 |
| if (r0 == 0) {
0x00087fa8 beq.w 0x880d4 | goto label_84;
| }
0x00087fac bl 0x3fd34 | r0 = fcn_0003fd34 (r0);
0x00087fb0 mov r8, r0 | r8 = r0;
0x00087fb2 mov r6, r0 | r6 = r0;
| label_26:
0x00087fb4 ldr r2, [pc, 0x320] |
0x00087fb6 add r5, sp, 0x70 | r5 += var_70h;
0x00087fb8 mov r1, sb | r1 = sb;
0x00087fba mov r0, r5 | r0 = r5;
0x00087fbc add r2, pc | r2 = 0x110298;
0x00087fbe bl 0x4e43c | fcn_0004e43c (r0, r1);
0x00087fc2 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00087fc4 cmp r3, 0 |
| if (r3 <= 0) {
0x00087fc6 ble 0x87fee | goto label_85;
| }
0x00087fc8 ldr.w fp, [pc, 0x310] | fp = *(0x000882dc);
0x00087fcc movs r4, 0 | r4 = 0;
0x00087fce add fp, pc |
| do {
0x00087fd0 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00087fd2 mov r2, fp | r2 = fp;
0x00087fd4 mov r1, sb | r1 = sb;
0x00087fd6 mov r0, r5 | r0 = r5;
0x00087fd8 ldr.w r3, [r3, r4, lsl 2] | offset_3 = r4 << 2;
| r3 = *((r3 + offset_3));
0x00087fdc strd r4, r3, [sp] | __asm ("strd r4, r3, [sp]");
0x00087fe0 mov r3, r6 | r3 = r6;
0x00087fe2 bl 0x4e43c | fcn_0004e43c (r0, r1);
0x00087fe6 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00087fe8 adds r4, 1 | r4++;
0x00087fea cmp r4, r3 |
0x00087fec blt 0x87fd0 |
| } while (r4 < r3);
| label_85:
0x00087fee ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
| if (r3 != 0) {
0x00087ff0 cbz r3, 0x88002 |
0x00087ff2 ldr r3, [pc, 0x2ec] |
0x00087ff4 mov r1, sb | r1 = sb;
0x00087ff6 ldr r2, [pc, 0x2ec] |
0x00087ff8 mov r0, r5 | r0 = r5;
0x00087ffa add r3, pc | r3 = 0x1102e0;
0x00087ffc add r2, pc | r2 = 0x1102e6;
0x00087ffe bl 0x4e43c | fcn_0004e43c (r0, r1);
| }
0x00088002 mov r0, r8 | r0 = r8;
0x00088004 blx 0x84f8 | fcn_000084f8 ();
0x00088008 b 0x87e60 | goto label_22;
| label_77:
0x0008800a ldr r6, [pc, 0x2dc] |
0x0008800c ldr.w r8, [sp, 0x20] | r8 = var_20h;
0x00088010 add r6, pc | r6 = 0x1102fe;
0x00088012 b 0x87e9c | goto label_23;
| label_54:
0x00088014 movs r6, 7 | r6 = 7;
0x00088016 str r6, [sp, 0x70] | var_70h = r6;
0x00088018 b 0x87a6e | goto label_13;
| label_68:
0x0008801a movs r6, 7 | r6 = 7;
0x0008801c blx 0x84f8 | fcn_000084f8 ();
0x00088020 str r4, [sp, 8] | var_8h = r4;
0x00088022 str r6, [sp, 0x70] | var_70h = r6;
0x00088024 str r4, [sp, 0x10] | var_10h = r4;
0x00088026 strd r4, r4, [sp, 0x20] | __asm ("strd r4, r4, [var_20h]");
0x0008802a b 0x87a6e | goto label_13;
0x0008802c ldr r0, [sp, 0x20] | r0 = var_20h;
0x0008802e blx 0x84f8 | fcn_000084f8 ();
0x00088032 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00088034 str r3, [sp, 0x20] | var_20h = r3;
| label_24:
0x00088036 ldr r6, [sp, 0x70] | r6 = var_70h;
0x00088038 movs r3, 0 | r3 = 0;
0x0008803a str r3, [sp, 0x34] | var_34h = r3;
0x0008803c clz sb, r6 | sb &= r6;
0x00088040 lsr.w sb, sb, 5 | sb >>= 5;
0x00088044 and.w r5, sb, r5 | r5 = sb & r5;
| label_25:
0x00088048 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008804a blx 0x84f8 | fcn_000084f8 ();
0x0008804e cmp r5, 0 |
| if (r5 != 0) {
0x00088050 bne.w 0x87738 | goto label_6;
| }
0x00088054 b.w 0x8777e | goto label_7;
0x00088058 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0008805a blx 0x84f8 | fcn_000084f8 ();
0x0008805e ldr r3, [sp, 0x34] | r3 = var_34h;
0x00088060 str r3, [sp, 0x24] | var_24h = r3;
0x00088062 b 0x88036 | goto label_24;
0x00088064 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00088066 blx 0x8160 | r0 = fcn_00008160 ();
0x0008806a cmp r0, 3 |
0x0008806c mov r2, r0 | r2 = r0;
| if (r0 == 3) {
0x0008806e beq.w 0x883aa | goto label_86;
| }
| label_36:
0x00088072 cmp r2, 4 |
| if (r2 == 4) {
0x00088074 beq.w 0x8838a | goto label_87;
| }
| label_34:
0x00088078 movs r5, 0 | r5 = 0;
0x0008807a ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008807c mov sb, r5 | sb = r5;
0x0008807e ldr r1, [sp, 0x6c] | r1 = var_6ch;
0x00088080 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00088082 movs r6, 1 | r6 = 1;
0x00088084 bl 0x49598 | fcn_00049598 (r0);
0x00088088 str r6, [sp, 0x70] | var_70h = r6;
| label_35:
0x0008808a ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008808c ldrb r3, [r3] | r3 = *(r3);
0x0008808e and r3, r3, 0xdf | r3 &= 0xdf;
0x00088092 sub.w r3, r3, 0x44 | r3 -= 0x44;
0x00088096 clz r3, r3 | r3 &= r3;
0x0008809a lsrs r3, r3, 5 | r3 >>= 5;
0x0008809c str r3, [sp, 0x68] | var_68h = r3;
0x0008809e b 0x88048 | goto label_25;
0x000880a0 ldr r0, [sp, 0x1c] | r0 = n;
0x000880a2 blx 0x84f8 | fcn_000084f8 ();
0x000880a6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000880a8 str r3, [sp, 0x1c] | n = r3;
0x000880aa b 0x88036 | goto label_24;
0x000880ac ldr r0, [sp, 0x28] | r0 = var_28h;
0x000880ae blx 0x84f8 | fcn_000084f8 ();
0x000880b2 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000880b4 str r3, [sp, 0x28] | var_28h = r3;
0x000880b6 b 0x88036 | goto label_24;
0x000880b8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000880ba ldr r2, [sp, 0x14] | r2 = var_14h;
0x000880bc ldr r1, [sp, 0x34] | r1 = var_34h;
0x000880be str.w r1, [r2, r3, lsl 2] | __asm ("str.w r1, [r2, r3, lsl 2]");
0x000880c2 adds r3, 1 | r3++;
0x000880c4 str r3, [sp, 0x3c] | var_3ch = r3;
0x000880c6 b 0x88036 | goto label_24;
0x000880c8 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000880ca blx 0x84f8 | fcn_000084f8 ();
0x000880ce ldr r3, [sp, 0x34] | r3 = var_34h;
0x000880d0 str r3, [sp, 0x18] | var_18h = r3;
0x000880d2 b 0x88036 | goto label_24;
| label_84:
0x000880d4 ldr r6, [pc, 0x214] |
0x000880d6 ldr.w r8, [sp, 0x24] | r8 = var_24h;
0x000880da add r6, pc | r6 = 0x1103ca;
0x000880dc b 0x87fb4 | goto label_26;
| label_66:
0x000880de movs r7, 0 | r7 = 0;
0x000880e0 str r7, [sp, 0x24] | var_24h = r7;
0x000880e2 str r7, [sp, 0x10] | var_10h = r7;
0x000880e4 str r7, [sp, 0x20] | var_20h = r7;
0x000880e6 b 0x87a6e | goto label_13;
| label_81:
0x000880e8 ldr r0, [sp, 0x78] | r0 = var_78h;
0x000880ea blx 0x809c | fcn_0000809c ();
0x000880ee mov r1, r6 | r1 = r6;
0x000880f0 ldr r0, [sp, 0x78] | r0 = var_78h;
0x000880f2 blx 0x8050 | fcn_00008050 ();
0x000880f6 str.w r0, [r7, 0xf4] | __asm ("str.w r0, [r7, 0xf4]");
0x000880fa ldr r0, [sp, 0x78] | r0 = var_78h;
0x000880fc blx 0x8484 | r0 = fcn_00008484 ();
0x00088100 mov r6, r0 | r6 = r0;
0x00088102 ldr r0, [sp, 0x1c] | r0 = n;
0x00088104 blx 0x84f8 | fcn_000084f8 ();
0x00088108 ldr.w r3, [r7, 0xf4] | r3 = *((r7 + 0xf4));
0x0008810c str r6, [sp, 0x70] | var_70h = r6;
0x0008810e subs r3, 0x23 | r3 -= 0x23;
0x00088110 str.w r3, [r7, 0xe8] | __asm ("str.w r3, [r7, 0xe8]");
0x00088114 cmp r6, 0 |
| if (r6 != 0) {
0x00088116 bne.w 0x87f44 | goto label_27;
| }
| label_38:
0x0008811a ldr r6, [r7, 0x2c] | r6 = *((r7 + 0x2c));
0x0008811c cmp r6, 0 |
| if (r6 == 0) {
0x0008811e beq.w 0x88346 | goto label_88;
| }
| label_31:
0x00088122 movs r2, 1 | r2 = 1;
0x00088124 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x00088126 mov r1, r2 | r1 = r2;
0x00088128 blx 0x7dbc | fcn_00007dbc ();
0x0008812c ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x0008812e ldr r0, [pc, 0x1c0] |
0x00088130 ldr r1, [r3] | r1 = *(r3);
0x00088132 add r0, pc | r0 = 0x110428;
0x00088134 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x00088138 cmp r0, 0 |
| if (r0 == 0) {
0x0008813a beq 0x88236 | goto label_89;
| }
0x0008813c ldr r5, [pc, 0x1b4] |
0x0008813e mov.w r8, 1 | r8 = 1;
0x00088142 mov r1, r0 | r1 = r0;
0x00088144 add r5, pc | r5 = 0x11043c;
0x00088146 b 0x8815e | void (*0x8815e)() ();
| label_76:
0x00088198 ldr r1, [pc, 0x160] |
0x0008819a ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0008819c add r1, pc | r1 = 0x11049c;
0x0008819e b 0x87e70 | goto label_28;
| label_43:
0x000881a0 mov sl, r4 | sl = r4;
0x000881a2 mov fp, r4 |
0x000881a4 strd r4, r4, [sp, 0x64] | __asm ("strd r4, r4, [var_64h]");
0x000881a8 strd r4, r4, [sp, 0x18] | __asm ("strd r4, r4, [n]");
| label_40:
0x000881ac movs r3, 0 | r3 = 0;
0x000881ae strd r3, r3, [sp, 0x24] | __asm ("strd r3, r3, [var_28h]");
0x000881b2 str r3, [sp, 0x20] | var_20h = r3;
0x000881b4 cmp r4, 0 |
| if (r4 == 0) {
0x000881b6 beq.w 0x8779c | goto label_14;
| }
0x000881ba b.w 0x877ac | goto label_15;
| label_79:
0x000881be ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x000881c0 ldr r5, [r7, 0xc] | r5 = *((r7 + 0xc));
0x000881c2 str r6, [sp, 0x78] | var_78h = r6;
0x000881c4 cmp r3, 0 |
| if (r3 == 0) {
0x000881c6 beq.w 0x883c2 | goto label_90;
| }
| label_37:
0x000881ca ldrd r3, r2, [r7, 0x10] | __asm ("ldrd r3, r2, [r7, 0x10]");
0x000881ce mov r1, r5 | r1 = r5;
0x000881d0 mov r0, sb | r0 = sb;
0x000881d2 str r2, [sp] | *(sp) = r2;
0x000881d4 ldr r2, [pc, 0x128] |
0x000881d6 add r2, pc | r2 = 0x1104da;
0x000881d8 bl 0x83580 | fcn_00083580 (r0, r1);
0x000881dc ldrd r3, r2, [r7, 0x10] | __asm ("ldrd r3, r2, [r7, 0x10]");
0x000881e0 mov r1, r5 | r1 = r5;
0x000881e2 mov r0, sb | r0 = sb;
0x000881e4 str r2, [sp] | *(sp) = r2;
0x000881e6 ldr r2, [pc, 0x11c] |
0x000881e8 add r2, pc | r2 = 0x1104f2;
0x000881ea bl 0x83580 | fcn_00083580 (r0, r1);
0x000881ee ldrb.w r3, [r7, 0xee] | r3 = *((r7 + 0xee));
0x000881f2 cmp r3, 0 |
| if (r3 != 0) {
0x000881f4 bne.w 0x88376 | goto label_91;
| }
| label_33:
0x000881f8 ldrb.w r3, [r7, 0xed] | r3 = *((r7 + 0xed));
0x000881fc cmp r3, 0 |
| if (r3 != 0) {
0x000881fe bne.w 0x88352 | goto label_92;
| }
0x00088202 ldr r6, [sp, 0x78] | r6 = var_78h;
0x00088204 str r6, [sp, 0x70] | var_70h = r6;
0x00088206 cmp r6, 0 |
| if (r6 == 0) {
0x00088208 beq.w 0x87f00 | goto label_29;
| }
| do {
0x0008820c ldr.w r3, [r7, 0xf4] | r3 = *((r7 + 0xf4));
0x00088210 subs r3, 0x23 | r3 -= 0x23;
0x00088212 str.w r3, [r7, 0xe8] | __asm ("str.w r3, [r7, 0xe8]");
0x00088216 b 0x87f44 | goto label_27;
| label_63:
0x00088218 ldr r1, [pc, 0xec] |
0x0008821a mov r2, r6 | r2 = r6;
0x0008821c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008821e movs r5, 0 | r5 = 0;
0x00088220 movs r6, 1 | r6 = 1;
0x00088222 mov sb, r5 | sb = r5;
0x00088224 add r1, pc | r1 = 0x110530;
0x00088226 bl 0x49598 | fcn_00049598 (r0);
0x0008822a str r6, [sp, 0x70] | var_70h = r6;
0x0008822c b 0x88048 | goto label_25;
| label_52:
0x0008822e add.w r2, lr, -1 | r2 = lr + -1;
0x00088232 b.w 0x8785e | goto label_17;
| label_89:
0x00088236 ldr r0, [pc, 0xd4] |
0x00088238 mov r3, r6 | r3 = r6;
0x0008823a ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0008823c movs r1, 0 | r1 = 0;
0x0008823e movs r4, 0 | r4 = 0;
0x00088240 movs r6, 7 | r6 = 7;
0x00088242 add r0, pc | r0 = 0x110554;
0x00088244 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x00088248 mov r5, r0 | r5 = r0;
0x0008824a b 0x88182 | void (*0x88182)() ();
| label_72:
0x0008824c ldr r4, [sp, 0x10] | r4 = var_10h;
0x0008824e b 0x87c26 | goto label_30;
| label_69:
0x00088250 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00088252 str r4, [sp, 8] | var_8h = r4;
0x00088254 blx 0x805c | fcn_0000805c ();
0x00088258 ldr r1, [pc, 0xb4] |
0x0008825a mov r2, r0 | r2 = r0;
0x0008825c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008825e add r1, pc | r1 = 0x110572;
0x00088260 bl 0x49598 | fcn_00049598 (r0);
0x00088264 mov r0, r7 | r0 = r7;
0x00088266 mov r7, r4 | r7 = r4;
0x00088268 blx 0x84f8 | fcn_000084f8 ();
0x0008826c str r6, [sp, 0x70] | var_70h = r6;
0x0008826e str r4, [sp, 0x10] | var_10h = r4;
0x00088270 strd r4, r4, [sp, 0x20] | __asm ("strd r4, r4, [var_20h]");
0x00088274 b.w 0x87a6e | goto label_13;
| label_67:
0x00088314 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00088316 movs r2, 6 | r2 = 6;
0x00088318 str r5, [r3] | *(r3) = r5;
0x0008831a str r5, [r3, 4] | *((r3 + 4)) = r5;
0x0008831c str r5, [r3, 8] | *((r3 + 8)) = r5;
0x0008831e str r5, [r3, 0xc] | *((r3 + 0xc)) = r5;
0x00088320 str r5, [r3, 0x10] | *((r3 + 0x10)) = r5;
0x00088322 str r5, [r3, 0x14] | *((r3 + 0x14)) = r5;
0x00088324 movs r5, 1 | r5 = 1;
0x00088326 mov r6, r5 | r6 = r5;
0x00088328 b.w 0x87872 | goto label_20;
| label_80:
0x0008832c blx 0x84f8 | fcn_000084f8 ();
0x00088330 ldr.w r3, [r7, 0xf4] | r3 = *((r7 + 0xf4));
0x00088334 movs r6, 7 | r6 = 7;
0x00088336 str r6, [sp, 0x70] | var_70h = r6;
0x00088338 subs r3, 0x23 | r3 -= 0x23;
0x0008833a str.w r3, [r7, 0xe8] | __asm ("str.w r3, [r7, 0xe8]");
0x0008833e ldr r3, [sp, 0x1c] | r3 = n;
0x00088340 str r3, [sp, 0x28] | var_28h = r3;
0x00088342 b.w 0x87a6e | goto label_13;
| label_88:
0x00088346 ldr r6, [pc, 0x18c] |
0x00088348 add r6, pc | r6 = 0x110822;
0x0008834a b 0x88122 | goto label_31;
| label_83:
0x0008834c ldr r2, [pc, 0x188] |
0x0008834e add r2, pc | r2 = 0x11082a;
0x00088350 b 0x87f94 | goto label_32;
| label_92:
0x00088352 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00088354 mov r0, sb | r0 = sb;
0x00088356 ldrd r1, r3, [r7, 0xc] | __asm ("ldrd r1, r3, [r7, 0xc]");
0x0008835a str r2, [sp] | *(sp) = r2;
0x0008835c ldr r2, [pc, 0x17c] |
0x0008835e add r2, pc | r2 = 0x11083e;
0x00088360 bl 0x83580 | fcn_00083580 (r0, r1);
0x00088364 ldr r6, [sp, 0x78] | r6 = var_78h;
0x00088366 str r6, [sp, 0x70] | var_70h = r6;
0x00088368 cmp r6, 0 |
0x0008836a bne.w 0x8820c |
| } while (r6 != 0);
0x0008836e movs r3, 1 | r3 = 1;
0x00088370 strb.w r3, [r7, 0xed] | *((r7 + 0xed)) = r3;
0x00088374 b 0x87f00 | goto label_29;
| label_91:
0x00088376 ldrd r3, r2, [r7, 0x10] | __asm ("ldrd r3, r2, [r7, 0x10]");
0x0008837a mov r1, r5 | r1 = r5;
0x0008837c mov r0, sb | r0 = sb;
0x0008837e str r2, [sp] | *(sp) = r2;
0x00088380 ldr r2, [pc, 0x15c] |
0x00088382 add r2, pc | r2 = 0x110866;
0x00088384 bl 0x83580 | fcn_00083580 (r0, r1);
0x00088388 b 0x881f8 | goto label_33;
| label_87:
0x0008838a ldr r1, [pc, 0x158] |
0x0008838c ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008838e add r1, pc | r1 = 0x110878;
0x00088390 blx 0x85a8 | r0 = fcn_000085a8 ();
0x00088394 cmp r0, 0 |
| if (r0 != 0) {
0x00088396 bne.w 0x88078 | goto label_34;
| }
| do {
0x0008839a ldr r6, [sp, 0x70] | r6 = var_70h;
0x0008839c clz sb, r6 | sb &= r6;
0x000883a0 lsr.w sb, sb, 5 | sb >>= 5;
0x000883a4 and.w r5, sb, r5 | r5 = sb & r5;
0x000883a8 b 0x8808a | goto label_35;
| label_86:
0x000883aa ldr r1, [pc, 0x13c] |
0x000883ac ldr r0, [sp, 0x34] | r0 = var_34h;
0x000883ae add r1, pc | r1 = 0x11089c;
0x000883b0 blx 0x85a8 | r0 = fcn_000085a8 ();
0x000883b4 cmp r0, 0 |
0x000883b6 beq 0x8839a |
| } while (r0 == 0);
0x000883b8 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000883ba blx 0x8160 | r0 = fcn_00008160 ();
0x000883be mov r2, r0 | r2 = r0;
0x000883c0 b 0x88072 | goto label_36;
| label_90:
0x000883c2 ldr r0, [pc, 0x128] |
0x000883c4 ldr.w fp, [r7, 0x2c] | fp = *((r7 + 0x2c));
0x000883c8 add r0, pc | r0 = 0x1108ba;
0x000883ca blx 0x852c | r0 = strncmp (r0, r1, r2);
0x000883ce cmp r0, 0 |
| if (r0 == 0) {
0x000883d0 beq 0x8846a | goto label_93;
| }
0x000883d2 ldr.w r8, [pc, 0x11c] |
0x000883d6 mov r1, r0 | r1 = r0;
0x000883d8 add r8, pc | r8 = 0x1108ce;
0x000883da b 0x883f2 |
| while (r3 > r6) {
0x000883dc ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x000883de mov r2, r6 | r2 = r6;
0x000883e0 mov r0, r8 | r0 = r8;
0x000883e2 ldr.w r3, [r3, r6, lsl 2] | offset_4 = r6 << 2;
| r3 = *((r3 + offset_4));
0x000883e6 adds r6, 1 | r6++;
0x000883e8 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x000883ec mov r1, r0 | r1 = r0;
0x000883ee cmp r0, 0 |
| if (r0 == 0) {
0x000883f0 beq 0x8846a | goto label_93;
| }
0x000883f2 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x000883f4 cmp r3, r6 |
0x000883f6 bgt 0x883dc |
| }
0x000883f8 mov r4, r1 | r4 = r1;
0x000883fa cmp.w fp, 0 |
| if (fp != 0) {
0x000883fe beq 0x88410 |
0x00088400 ldr r0, [pc, 0xf0] |
0x00088402 mov r1, r4 | r1 = r4;
0x00088404 mov r2, fp | r2 = fp;
0x00088406 add r0, pc | r0 = 0x1108fe;
0x00088408 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x0008840c mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0008840e cbz r0, 0x8846a | goto label_93;
| }
| }
| label_41:
0x00088410 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00088412 mov r0, sb | r0 = sb;
0x00088414 str r4, [sp, 4] | var_4h = r4;
0x00088416 mov r1, r5 | r1 = r5;
0x00088418 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0008841a str r2, [sp] | *(sp) = r2;
0x0008841c ldr r2, [pc, 0xd8] |
0x0008841e add r2, pc | r2 = 0x11091a;
0x00088420 bl 0x83580 | fcn_00083580 (r0, r1);
0x00088424 mov r0, r4 | r0 = r4;
0x00088426 blx 0x84f8 | fcn_000084f8 ();
0x0008842a b 0x881ca | goto label_37;
| label_82:
0x0008842c mov.w r3, 0x400 | r3 = 0x400;
0x00088430 str.w r3, [r7, 0xf4] | __asm ("str.w r3, [r7, 0xf4]");
0x00088434 blx 0x84f8 | fcn_000084f8 ();
0x00088438 ldr.w r3, [r7, 0xf4] | r3 = *((r7 + 0xf4));
0x0008843c str r4, [sp, 0x70] | var_70h = r4;
0x0008843e subs r3, 0x23 | r3 -= 0x23;
0x00088440 str.w r3, [r7, 0xe8] | __asm ("str.w r3, [r7, 0xe8]");
0x00088444 b 0x8811a | goto label_38;
| label_70:
0x00088446 lsl.w r0, sb, 2 | r0 = sb << 2;
0x0008844a mov r1, r4 | r1 = r4;
0x0008844c blx 0x7f18 | fcn_00007f18 ();
0x00088450 str r0, [sp, 8] | var_8h = r0;
| if (r0 == 0) {
0x00088452 cbz r0, 0x88472 | goto label_71;
| }
0x00088454 ldr r0, [sp, 0x78] | r0 = var_78h;
0x00088456 blx 0x8484 | fcn_00008484 ();
0x0008845a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008845c str r4, [sp, 0x70] | var_70h = r4;
0x0008845e mov r4, sb | r4 = sb;
0x00088460 mov fp, r3 |
0x00088462 cmp r3, 0 |
| if (r3 != 0) {
0x00088464 bne.w 0x87d88 | goto label_39;
| }
0x00088468 b 0x881ac | goto label_40;
| label_93:
0x0008846a movs r3, 7 | r3 = 7;
0x0008846c movs r4, 0 | r4 = 0;
0x0008846e str r3, [sp, 0x78] | var_78h = r3;
0x00088470 b 0x88410 | goto label_41;
| label_71:
0x00088472 movs r7, 0 | r7 = 0;
0x00088474 ldr r0, [sp, 0x78] | r0 = var_78h;
0x00088476 movs r6, 7 | r6 = 7;
0x00088478 blx 0x8484 | fcn_00008484 ();
0x0008847c str r7, [sp, 0x10] | var_10h = r7;
0x0008847e str r6, [sp, 0x70] | var_70h = r6;
0x00088480 str r7, [sp, 8] | var_8h = r7;
0x00088482 strd r7, r7, [sp, 0x20] | __asm ("strd r7, r7, [var_20h]");
0x00088486 b.w 0x87a6e | goto label_13;
| label_60:
0x0008848a blx 0x7e8c | fcn_00007e8c ();
| label_64:
0x0008848e ldr r0, [sp, 0x34] | r0 = var_34h;
0x00088490 blx 0x8160 | r0 = fcn_00008160 ();
0x00088494 cmp r0, 4 |
0x00088496 mov r2, r0 | r2 = r0;
0x00088498 beq 0x884b2 |
| while (r0 != 0) {
0x0008849a ldr r1, [pc, 0x60] |
0x0008849c movs r6, 1 | r6 = 1;
0x0008849e ldr r2, [sp, 0x34] | r2 = var_34h;
0x000884a0 movs r5, 0 | r5 = 0;
0x000884a2 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000884a4 mov sb, r5 | sb = r5;
0x000884a6 add r1, pc | r1 = 0x1109a8;
0x000884a8 bl 0x49598 | fcn_00049598 (r0);
0x000884ac str r6, [sp, 0x70] | var_70h = r6;
0x000884ae str r6, [sp, 0x64] | var_64h = r6;
0x000884b0 b 0x88048 | goto label_25;
0x000884b2 ldr r1, [pc, 0x4c] |
0x000884b4 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000884b6 add r1, pc | r1 = 0x1109bc;
0x000884b8 blx 0x85a8 | r0 = fcn_000085a8 ();
0x000884bc cmp r0, 0 |
0x000884be bne 0x8849a |
| }
0x000884c0 ldr r6, [sp, 0x70] | r6 = var_70h;
0x000884c2 movs r3, 1 | r3 = 1;
0x000884c4 str r3, [sp, 0x64] | var_64h = r3;
0x000884c6 clz sb, r6 | sb &= r6;
0x000884ca lsr.w sb, sb, 5 | sb >>= 5;
0x000884ce and.w r5, sb, r5 | r5 = sb & r5;
0x000884d2 b 0x88048 | goto label_25;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x8854c */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.0008854c () | void fcn_0008854c (int16_t arg_70h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0008854c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00088550 mov sb, r2 | sb = r2;
0x00088552 ldr r2, [pc, 0x310] |
0x00088554 sub sp, 0x4c |
0x00088556 ldr r3, [pc, 0x310] | r3 = *(0x8886a);
0x00088558 add r2, pc | r2 = 0x110dc2;
0x0008855a str r1, [sp, 0x1c] | var_1ch = r1;
0x0008855c ldr r3, [r2, r3] |
0x0008855e ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [arg_70h]");
0x00088562 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00088564 str r3, [sp, 0x44] | var_44h = r3;
0x00088566 mov.w r3, 0 | r3 = 0;
0x0008856a ldr r3, [r0, 0x28] | r3 = *(arg_70hx28);
0x0008856c strd r1, r2, [sp, 8] | __asm ("strd r1, r2, [var_8h]");
0x00088570 cbz r3, 0x8858e |
| while (r5 != 0) {
| label_0:
0x00088572 ldr r2, [pc, 0x2f8] |
0x00088574 ldr r3, [pc, 0x2f0] | r3 = *(0x88868);
0x00088576 add r2, pc | r2 = 0x110de8;
0x00088578 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008857a ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008857c ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008857e eors r2, r3 | r2 ^= r3;
0x00088580 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00088584 bne.w 0x88854 | goto label_12;
| }
0x00088588 add sp, 0x4c |
0x0008858a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0008858e ldr r3, [r0, 0x14] | r3 = *(arg_70hx14);
0x00088590 mov r4, r0 | r4 = r0;
0x00088592 cmp r3, 0 |
| if (r3 == 0) {
0x00088594 beq.w 0x88774 | goto label_13;
| }
| label_3:
0x00088598 mov r0, r3 | r0 = r3;
0x0008859a movs r1, 1 | r1 = 1;
0x0008859c ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x000885a0 blx 0x7c4c | fcn_00007c4c ();
0x000885a4 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x000885a6 blx 0x809c | r0 = fcn_0000809c ();
0x000885aa cmp r0, 0x64 |
| if (r0 == 0x64) {
0x000885ac beq 0x885ea | goto label_14;
| }
| label_10:
0x000885ae ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x000885b0 blx 0x7cfc | fcn_00007cfc ();
0x000885b4 ldr r5, [r4, 0x28] | r5 = *((r4 + 0x28));
0x000885b6 cmp r5, 0 |
0x000885b8 bne 0x88572 |
| }
0x000885ba str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x000885bc cmp r0, 0 |
| if (r0 != 0) {
0x000885be bne 0x88572 | goto label_0;
| }
0x000885c0 ldr r2, [pc, 0x2ac] |
0x000885c2 ldr r3, [pc, 0x2a4] | r3 = *(0x8886a);
0x000885c4 add r2, pc | r2 = 0x110e38;
0x000885c6 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000885c8 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000885ca ldr r3, [sp, 0x44] | r3 = var_44h;
0x000885cc eors r2, r3 | r2 ^= r3;
0x000885ce mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000885d2 bne.w 0x88854 | goto label_12;
| }
0x000885d6 ldr r1, [pc, 0x29c] |
0x000885d8 mov r0, r4 | r0 = r4;
0x000885da ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x000885de add r1, pc | r1 = 0x110e58;
0x000885e0 add sp, 0x4c |
0x000885e2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000885e6 b.w 0x4dd80 | void (*0x4dd80)() ();
| label_14:
0x000885ea movs r1, 0 | r1 = 0;
0x000885ec ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x000885ee blx 0x8184 | fcn_00008184 ();
0x000885f2 movs r1, 0 | r1 = 0;
0x000885f4 mov r5, r0 | r5 = r0;
0x000885f6 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x000885f8 blx 0x7cd0 | fcn_00007cd0 ();
0x000885fc asrs r1, r5, 0x1f | r1 = r5 >> 0x1f;
0x000885fe mov r6, r0 | r6 = r0;
0x00088600 mov r0, r5 | r0 = r5;
0x00088602 blx 0x7f18 | fcn_00007f18 ();
0x00088606 str r0, [sp, 0x20] | var_20h = r0;
0x00088608 cmp r0, 0 |
| if (r0 == 0) {
0x0008860a beq.w 0x88858 | goto label_15;
| }
0x0008860e mov r1, r6 | r1 = r6;
0x00088610 mov r2, r5 | r2 = r5;
0x00088612 blx 0x7dcc | fcn_00007dcc ();
0x00088616 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00088618 blx 0x7cfc | fcn_00007cfc ();
0x0008861c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0008861e cmp r3, 0 |
| if (r3 == 0) {
0x00088620 beq.w 0x8885e | goto label_16;
| }
| label_11:
0x00088624 cmp r5, 3 |
| if (r5 <= 3) {
0x00088626 ble.w 0x887c0 | goto label_17;
| }
0x0008862a cmp.w sb, 0 |
| if (sb == 0) {
0x0008862e beq.w 0x88822 | goto label_18;
| }
| label_8:
0x00088632 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00088634 ldrb r2, [r3, 2] | r2 = *((r3 + 2));
0x00088636 ldrb r3, [r3, 3] | r3 = *((r3 + 3));
0x00088638 add.w r0, r3, r2, lsl 8 | r0 = r3 + (r2 << 8);
0x0008863c ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0008863e str r0, [sp, 0x30] | var_30h = r0;
0x00088640 adds r3, r2, 1 | r3 = r2 + 1;
0x00088642 mla r1, r2, r0, r0 | __asm ("mla r1, r2, r0, r0");
0x00088646 lsls r1, r1, 3 | r1 <<= 3;
0x00088648 adds r1, 3 | r1 += 3;
0x0008864a cmp r1, r5 |
| if (r1 >= r5) {
0x0008864c bge.w 0x8880c | goto label_19;
| }
0x00088650 cmp r0, 0 |
| if (r0 == 0) {
0x00088652 beq.w 0x887d0 | goto label_20;
| }
0x00088654 strh r5, [r7, 4] | *((r7 + 4)) = r5;
0x00088656 ldr r1, [pc, 0x220] |
0x00088658 mov.w sl, 0 | sl = 0;
0x0008865c add r1, pc | r1 = 0x110eda;
0x0008865e str r1, [sp, 0x18] | var_18h = r1;
0x00088660 ldr r1, [pc, 0x218] |
0x00088662 add r1, pc | r1 = 0x110ee2;
0x00088664 str r1, [sp, 0x14] | var_14h = r1;
0x00088666 add r1, sp, 0x38 | r1 += var_38h;
0x00088668 str r1, [sp, 0x34] | var_34h = r1;
| label_1:
0x0008866a mul r3, sl, r3 | r3 = sl * r3;
0x0008866e ldr r1, [sp, 0x20] | r1 = var_20h;
0x00088670 ldr r5, [sp, 0x34] | r5 = var_34h;
0x00088672 cmp r2, 0 |
0x00088674 itt gt |
| if (r2 <= 0) {
0x00088676 movgt fp, 0 |
| }
| if (r2 > 0) {
0x0008867a add.w r8, sb, 4 | r8 = sb + 4;
| }
0x0008867e lsl.w r3, r3, 3 | r3 <<= 3;
0x00088682 add.w r3, r3, 4 | r3 += 4;
0x00088686 add.w r6, r1, r3 | r6 = r1 + r3;
0x0008868a ldr r0, [r1, r3] | r0 = *((r1 + r3));
0x0008868c ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0008868e stm r5!, {r0, r1} | *(r5!) = r0;
| *((r5! + 4)) = r1;
0x00088690 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00088692 rev r3, r3 | r3 = SWAP32 (r3);
0x00088694 str r3, [sp, 0x24] | var_24h = r3;
0x00088696 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00088698 rev r3, r3 | r3 = SWAP32 (r3);
0x0008869a str r3, [sp, 0x28] | var_28h = r3;
0x0008869c add.w r3, r6, 8 | r3 = r6 + 8;
0x000886a0 str r3, [sp, 0x2c] | var_2ch = r3;
| if (r2 <= 0) {
0x000886a2 ble 0x8871a | goto label_21;
| }
| do {
0x000886a4 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000886a6 ldr r5, [r6, 8] | r5 = *((r6 + 8));
0x000886a8 ldr r7, [r6, 0xc] | r7 = *((r6 + 0xc));
0x000886aa rev r5, r5 | r5 = SWAP32 (r5);
0x000886ac rev r7, r7 | r7 = SWAP32 (r7);
0x000886ae cmp r2, 0 |
| if (r2 == 0) {
0x000886b0 beq 0x8878e | goto label_22;
| }
0x000886b2 cmp r5, r7 |
0x000886b4 ite le |
| if (r5 > r7) {
0x000886b6 movle r2, 0 | r2 = 0;
| }
| if (r5 <= r7) {
0x000886b8 movgt r2, 1 | r2 = 1;
| }
0x000886ba cmp r2, 0 |
| if (r2 != 0) {
0x000886bc bne 0x8875e | goto label_4;
| }
| label_2:
0x000886be cmp.w sb, 0 |
| if (sb != 0) {
0x000886c2 beq 0x8870e |
0x000886c4 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000886c6 ldr.w r2, [sb, fp, lsl 3] | offset_0 = fp << 3;
| r2 = *((sb + offset_0));
0x000886ca ldr.w r1, [r8, fp, lsl 3] | offset_1 = fp << 3;
| r1 = *((r8 + offset_1));
0x000886ce rev r2, r2 | r2 = SWAP32 (r2);
0x000886d0 rev r1, r1 | r1 = SWAP32 (r1);
0x000886d2 cmp r0, 0 |
| if (r0 != 0) {
0x000886d4 bne 0x887aa | goto label_23;
| }
0x000886d6 vmov s15, r5 | __asm ("vmov s15, r5");
0x000886da vmov s14, r2 | __asm ("vmov s14, r2");
0x000886de vcmpe.f32 s15, s14 | __asm ("vcmpe.f32 s15, s14");
0x000886e2 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 >= 0) {
0x000886e6 bmi 0x886fa |
0x000886e8 vmov s15, r7 | __asm ("vmov s15, r7");
0x000886ec vmov s14, r1 | __asm ("vmov s14, r1");
0x000886f0 vcmpe.f32 s15, s14 | __asm ("vcmpe.f32 s15, s14");
0x000886f4 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 <= 0) {
0x000886f8 ble 0x8870e | goto label_6;
| }
| }
| label_5:
0x000886fa ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x000886fe mov r0, r4 | r0 = r4;
0x00088700 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00088702 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00088706 mov r3, sl | r3 = sl;
0x00088708 mov r2, fp | r2 = fp;
0x0008870a bl 0x4dd80 | fcn_0004dd80 (r0);
| }
| label_6:
0x0008870e ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00088710 add.w fp, fp, 1 |
0x00088714 adds r6, 8 | r6 += 8;
0x00088716 cmp fp, r2 |
0x00088718 blt 0x886a4 |
| } while (fp < r2);
| label_21:
0x0008871a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0008871c cmp r3, 0 |
| if (r3 == 0) {
0x0008871e beq 0x887f0 | goto label_24;
| }
0x00088720 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x00088724 movs r1, 0 | r1 = 0;
0x00088726 ldr r6, [sp, 0x28] | r6 = var_28h;
0x00088728 mov r0, r4 | r0 = r4;
0x0008872a ldr r5, [sp, 0x24] | r5 = var_24h;
0x0008872c strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00088730 mov r2, r6 | r2 = r6;
0x00088732 mov r3, r5 | r3 = r5;
0x00088734 bl 0x84860 | fcn_00084860 (r0, r1, r2, r3);
0x00088738 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0008873a mov r0, r4 | r0 = r4;
0x0008873c ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0008873e str r6, [sp] | *(sp) = r6;
0x00088740 subs r1, r3, 1 | r1 = r3 - 1;
0x00088742 str r5, [sp, 4] | var_4h = r5;
0x00088744 bl 0x8854c | fcn_0008854c (r0, r1, r2, r3);
0x00088748 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0008874a adds r3, 1 | r3++;
0x0008874c str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| label_7:
0x0008874e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00088750 add.w sl, sl, 1 | sl++;
0x00088754 cmp sl, r3 |
| if (sl == r3) {
0x00088756 beq 0x887d0 | goto label_20;
| }
0x00088758 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0008875a adds r3, r2, 1 | r3 = r2 + 1;
0x0008875c b 0x8866a | goto label_1;
| label_4:
0x0008875e ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x00088762 mov r0, r4 | r0 = r4;
0x00088764 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00088766 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0008876a mov r3, sl | r3 = sl;
0x0008876c mov r2, fp | r2 = fp;
0x0008876e bl 0x4dd80 | fcn_0004dd80 (r0);
0x00088772 b 0x886be | goto label_2;
| label_13:
0x00088774 ldr r1, [pc, 0x108] |
0x00088776 ldrd r2, r3, [r0, 4] | __asm ("ldrd r2, r3, [r0, 4]");
0x0008877a add r1, pc | r1 = 0x110ffe;
0x0008877c bl 0x78eb8 | fcn_00078eb8 (r0);
0x00088780 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00088782 mov r3, r0 | r3 = r0;
0x00088784 str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x00088786 cmp r2, 0 |
| if (r2 == 0) {
0x00088788 beq.w 0x88598 | goto label_3;
| }
0x0008878c b 0x88572 | goto label_0;
| label_22:
0x0008878e vmov s15, r5 | __asm ("vmov s15, r5");
0x00088792 vmov s14, r7 | __asm ("vmov s14, r7");
0x00088796 vcmpe.f32 s15, s14 | __asm ("vcmpe.f32 s15, s14");
0x00088798 ldrb r7, [r0, 0xb] | r7 = *((r0 + 0xb));
0x0008879a vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x0008879e ite gt |
| if (r2 <= 0) {
0x000887a0 movgt r2, 1 | r2 = 1;
| }
| if (r2 > 0) {
0x000887a2 movle r2, 0 | r2 = 0;
| }
0x000887a4 cmp r2, 0 |
| if (r2 == 0) {
0x000887a6 beq 0x886be | goto label_2;
| }
0x000887a8 b 0x8875e | goto label_4;
| label_23:
0x000887aa cmp r5, r2 |
0x000887ac ite ge |
| if (r5 < r2) {
0x000887ae movge r2, 0 | r2 = 0;
| }
| if (r5 >= r2) {
0x000887b0 movlt r2, 1 | r2 = 1;
| }
0x000887b2 cmp r7, r1 |
0x000887b4 it gt |
| if (r7 <= r1) {
0x000887b6 orrgt r2, r2, 1 | r2 |= 1;
| }
0x000887ba cmp r2, 0 |
| if (r2 != 0) {
0x000887bc bne 0x886fa | goto label_5;
| }
0x000887be b 0x8870e | goto label_6;
| label_17:
0x000887c0 ldr r1, [pc, 0xc0] |
0x000887c2 mov r0, r4 | r0 = r4;
0x000887c4 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x000887c8 str r5, [sp] | *(sp) = r5;
0x000887ca add r1, pc | r1 = 0x111052;
0x000887cc bl 0x4dd80 | fcn_0004dd80 (r0);
| do {
| label_20:
0x000887d0 ldr r2, [pc, 0xb4] |
0x000887d2 ldr r3, [pc, 0x94] | r3 = *(0x8886a);
0x000887d4 add r2, pc | r2 = 0x111060;
0x000887d6 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000887d8 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000887da ldr r3, [sp, 0x44] | r3 = var_44h;
0x000887dc eors r2, r3 | r2 ^= r3;
0x000887de mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000887e2 bne 0x88854 | goto label_12;
| }
| label_9:
0x000887e4 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000887e6 add sp, 0x4c |
0x000887e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000887ec b.w 0x84f4 | void (*0x84f4)() ();
| label_24:
0x000887f0 ldrd r0, r1, [sp, 8] | __asm ("ldrd r0, r1, [var_8h]");
0x000887f4 ldrd r3, r2, [sp, 0x24] | __asm ("ldrd r3, r2, [var_24h]");
0x000887f8 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x000887fc movs r1, 1 | r1 = 1;
0x000887fe mov r0, r4 | r0 = r4;
0x00088800 bl 0x84860 | fcn_00084860 (r0, r1, r2, r3);
0x00088804 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00088806 adds r3, 1 | r3++;
0x00088808 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0008880a b 0x8874e | goto label_7;
| label_19:
0x0008880c ldr r1, [sp, 0x30] | r1 = var_30h;
0x0008880e mov r0, r4 | r0 = r4;
0x00088810 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x00088814 str r5, [sp, 4] | var_4h = r5;
0x00088816 str r1, [sp] | *(sp) = r1;
0x00088818 ldr r1, [pc, 0x70] |
0x0008881a add r1, pc | r1 = 0x1110aa;
0x0008881c bl 0x4dd80 | fcn_0004dd80 (r0);
0x00088820 b 0x887d0 |
| } while (1);
| label_18:
0x00088822 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00088824 ldrb r2, [r3] | r2 = *(r3);
0x00088826 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00088828 add.w r3, r3, r2, lsl 8 | r3 += (r2 << 8);
0x0008882c cmp r3, 0x28 |
0x0008882e str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 <= 0x28) {
0x00088830 ble.w 0x88632 | goto label_8;
| }
0x00088834 ldr r1, [pc, 0x58] |
0x00088836 mov r2, r3 | r2 = r3;
0x00088838 mov r0, r4 | r0 = r4;
0x0008883a add r1, pc | r1 = 0x1110ce;
0x0008883c bl 0x4dd80 | fcn_0004dd80 (r0);
0x00088840 ldr r2, [pc, 0x50] |
0x00088842 ldr r3, [pc, 0x24] | r3 = *(0x8886a);
0x00088844 add r2, pc | r2 = 0x1110dc;
0x00088846 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00088848 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008884a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008884c eors r2, r3 | r2 ^= r3;
0x0008884e mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00088852 beq 0x887e4 | goto label_9;
| }
| label_12:
0x00088854 blx 0x7e8c | fcn_00007e8c ();
| label_15:
0x00088858 movs r3, 7 | r3 = 7;
0x0008885a str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0008885c b 0x885ae | goto label_10;
| label_16:
0x0008885e str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00088860 b 0x88624 | goto label_11;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x88f5c */
| #include <stdint.h>
|
; (fcn) fcn.00088f5c () | void fcn_00088f5c (int16_t arg1) {
| r0 = arg1;
0x00088f5c push {r3, r4, r5, lr} |
0x00088f5e ldr r5, [r0] | r5 = *(r0);
0x00088f60 ldrb.w r3, [r5, 0xa9] | r3 = *((r5 + 0xa9));
0x00088f64 cbz r3, 0x88f6a |
| while (r3 == 0) {
0x00088f66 movs r0, 0 | r0 = 0;
0x00088f68 pop {r3, r4, r5, pc} |
0x00088f6a mov r4, r0 | r4 = r0;
0x00088f6c adds r1, r0, 4 | r1 = r0 + 4;
0x00088f6e mov r0, r5 | r0 = r5;
0x00088f70 bl 0x88eec | r0 = fcn_00088eec (r0, r1);
| if (r0 != 0) {
0x00088f74 cbnz r0, 0x88f88 | goto label_0;
| }
0x00088f76 ldrb.w r3, [r5, 0x5b] | r3 = *((r5 + 0x5b));
0x00088f7a cmp r3, 0 |
0x00088f7c beq 0x88f66 |
| }
0x00088f7e ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00088f80 orr r3, r3, 0x10 | r3 |= 0x10;
0x00088f84 str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x00088f86 pop {r3, r4, r5, pc} |
| label_0:
0x00088f88 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00088f8a str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00088f8c adds r3, 1 | r3++;
0x00088f8e str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00088f90 pop {r3, r4, r5, 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/libsqlite3.so.0.8.6 @ 0x88f94 */
| #include <stdint.h>
|
; (fcn) fcn.00088f94 () | void fcn_00088f94 (int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00088f94 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00088f98 mov r8, r2 | r8 = r2;
0x00088f9a ldr.w r2, [pc, 0x4c4] | r2 = *(0x00089460);
0x00088f9e mov sb, r3 | sb = r3;
0x00088fa0 sub sp, 0x24 |
0x00088fa2 mov r4, r0 | r4 = r0;
0x00088fa4 ldr.w r3, [pc, 0x4bc] |
0x00088fa8 mov r7, r1 | r7 = r1;
0x00088faa add r2, pc | r2 += pc;
0x00088fac ldr r5, [r0] | r5 = *(r0);
0x00088fae ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00088fb0 ldr r3, [r3] | r3 = *(0x89464);
0x00088fb2 str r3, [sp, 0x1c] | var_1ch = r3;
0x00088fb4 mov.w r3, 0 | r3 = 0;
0x00088fb8 ldrb.w r3, [r5, 0xa9] | r3 = *((r5 + 0xa9));
| if (r3 != 0) {
0x00088fbc cbz r3, 0x88fc8 |
0x00088fbe ldr.w r3, [r5, 0xa4] | r3 = *((r5 + 0xa4));
0x00088fc2 cmp r3, 1 |
| if (r3 == 1) {
0x00088fc4 beq.w 0x892bc | goto label_16;
| }
| }
0x00088fc8 mov r1, r7 | r1 = r7;
0x00088fca add r3, sp, 0x18 | r3 += var_18h;
0x00088fcc mov r2, r8 | r2 = r8;
0x00088fce mov r0, r4 | r0 = r4;
0x00088fd0 bl 0x25870 | r0 = fcn_00025870 (r0, r1, r2, r3);
0x00088fd4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00088fd6 blt.w 0x89282 | goto label_0;
| }
0x00088fda cmp.w sb, 0 |
| if (sb != 0) {
0x00088fde beq 0x88ff2 |
0x00088fe0 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00088fe4 cmp r3, 0 |
0x00088fe6 it ne |
| if (r3 != 0) {
0x00088fe8 cmpne r6, 1 | __asm ("cmpne r6, 1");
| }
0x00088fea it eq |
| if (r3 != 0) {
0x00088fec moveq r6, 1 | r6 = 1;
| }
| if (r3 != 0) {
0x00088fee bne.w 0x89360 | goto label_17;
| }
| }
0x00088ff2 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00088ff4 mov r0, r5 | r0 = r5;
0x00088ff6 bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x00088ffa ldrb.w r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x00088ffe mov r8, r0 | r8 = r0;
0x00089000 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00089002 cmp r3, 1 |
| if (r3 >= 1) {
0x00089004 bls 0x8900c |
0x00089006 cmp r3, 3 |
| if (r3 != 3) {
0x00089008 bne.w 0x892d4 | goto label_18;
| }
| }
| label_1:
0x0008900c ldm.w r7, {r0, r1} | r0 = *(r7);
| r1 = *((r7 + 4));
0x00089010 add.w r3, r4, 0xb4 | r3 = r4 + 0xb4;
0x00089014 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00089018 movs r0, r0 |
0x0008901a movs r0, r0 |
0x0008901c movs r0, r0 |
0x0008901e movs r0, r0 |
0x00089020 movs r0, r0 |
0x00089022 movs r0, r0 |
0x00089024 movs r0, r0 |
0x00089026 movs r0, r0 |
0x00089028 ldr.w r2, [pc, 0x43c] | r2 = *(0x00089468);
0x0008902c mov r3, r8 | r3 = r8;
0x0008902e mov r1, r8 | r1 = r8;
0x00089030 mov r0, r4 | r0 = r4;
0x00089032 add r2, pc | r2 += pc;
0x00089034 bl 0x3b980 | r0 = fcn_0003b980 (r0, r1, r2, r3);
0x00089038 cmp r0, 0 |
| if (r0 != 0) {
0x0008903a bne.w 0x892b2 | goto label_2;
| }
| do {
0x0008903e ldrb.w r3, [r5, 0xa8] | r3 = *((r5 + 0xa8));
0x00089042 lsls r7, r6, 4 | r7 = r6 << 4;
0x00089044 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x00089046 cmp r3, 1 |
0x00089048 ldr.w sl, [r2, r7] | sl = *((r2 + r7));
| if (r3 == 1) {
0x0008904c beq.w 0x89358 | goto label_19;
| }
0x00089050 cmp.w sb, 1 |
| if (sb == 1) {
0x00089054 beq.w 0x8939e | goto label_20;
| }
0x00089058 ldr.w r2, [pc, 0x410] |
0x0008905c add r2, pc | r2 = 0x1124cc;
| label_5:
0x0008905e movs r3, 0 | r3 = 0;
0x00089060 movs r1, 0x12 | r1 = 0x12;
0x00089062 mov r0, r4 | r0 = r4;
0x00089064 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00089068 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0008906c cmp r0, 0 |
| if (r0 != 0) {
0x0008906e bne.w 0x892b2 | goto label_2;
| }
0x00089072 ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x00089074 cmp r3, 0 |
| if (r3 == 0) {
0x00089076 beq.w 0x8932c | goto label_21;
| }
| label_3:
0x0008907a ldrb.w r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x0008907e cmp r3, 0 |
| if (r3 == 0) {
0x00089080 beq.w 0x892e2 | goto label_22;
| }
| label_7:
0x00089084 mov r0, r5 | r0 = r5;
0x00089086 movs r2, 0x4c | r2 = 0x4c;
0x00089088 movs r3, 0 | r3 = 0;
0x0008908a bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x0008908e mov sb, r0 | sb = r0;
0x00089090 cmp r0, 0 |
| if (r0 == 0) {
0x00089092 beq.w 0x893a4 | goto label_23;
| }
0x00089096 movs r2, 0x48 | r2 = 0x48;
0x00089098 movs r1, 0 | r1 = 0;
0x0008909a add.w r0, sb, 4 | r0 = sb + 4;
0x0008909e blx 0x8264 | fcn_00008264 ();
0x000890a2 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000890a4 movs r2, 0xc8 | r2 = 0xc8;
0x000890a6 str.w r8, [sb] | __asm ("str.w r8, [sb]");
0x000890aa add r3, r7 | r3 += r7;
0x000890ac ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000890ae strh.w r2, [sb, 0x2e] | *((sb + 0x2e)) = r2;
0x000890b2 str.w r3, [sb, 0x48] | __asm ("str.w r3, [sb, 0x48]");
0x000890b4 adds r0, 0x48 | r0 += 0x48;
0x000890b6 movw r3, 0xffff | r3 = 0xffff;
0x000890ba strh.w r3, [sb, 0x28] | *((sb + 0x28)) = r3;
0x000890be movs r3, 1 | r3 = 1;
0x000890c0 str.w r3, [sb, 0x20] | __asm ("str.w r3, [sb, 0x20]");
0x000890c4 str.w sb, [r4, 0xe4] | __asm ("str.w sb, [r4, 0xe4]");
0x000890c8 ldrb.w r2, [r5, 0xa9] | r2 = *((r5 + 0xa9));
0x000890cc cmp r2, 0 |
| if (r2 == 0) {
0x000890ce bne.w 0x89282 |
0x000890d2 ldr.w r8, [r4, 8] | r8 = *((r4 + 8));
0x000890d6 cmp.w r8, 0 |
| if (r8 == 0) {
0x000890da beq.w 0x8936c | goto label_24;
| }
| label_6:
0x000890de mov r2, r6 | r2 = r6;
0x000890e0 movs r1, 1 | r1 = 1;
0x000890e2 mov r0, r4 | r0 = r4;
0x000890e4 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x000890e8 ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x000890ea cmp r3, 0 |
| if (r3 != 0) {
0x000890ec bne.w 0x8940c | goto label_25;
| }
| label_11:
0x000890f0 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x000890f2 movs r2, 2 | r2 = 2;
0x000890f4 str r2, [sp] | *(sp) = r2;
0x000890f6 movs r1, 0x5f | r1 = 0x5f;
0x000890f8 mov r2, r6 | r2 = r6;
0x000890fa mov r0, r8 | r0 = r8;
0x000890fc add.w sl, r3, 3 | sl = r3 + 3;
0x00089100 add.w fp, r3, 1 |
0x00089104 adds r3, 2 | r3 += 2;
0x00089106 str.w sl, [r4, 0x2c] | __asm ("str.w sl, [r4, 0x2c]");
0x0008910a str r3, [sp, 0x14] | var_14h = r3;
0x0008910c strd fp, r3, [r4, 0x58] | __asm ("strd fp, r3, [r4, 0x58]");
0x00089110 mov r3, sl | r3 = sl;
0x00089112 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00089116 ldr.w r2, [r8, 0x98] | r2 = *((r8 + 0x98));
0x0008911a movs r3, 1 | r3 = 1;
0x0008911c lsls r3, r6 | r3 <<= r6;
0x0008911e cmp r6, 1 |
0x00089120 orr.w r2, r2, r3 | r2 |= r3;
0x00089124 str.w r2, [r8, 0x98] | __asm ("str.w r2, [r8, 0x98]");
| if (r6 != 1) {
0x00089128 beq 0x89142 |
0x0008912a ldr.w r2, [r8] | r2 = *(r8);
0x0008912e ldr r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x00089130 add r2, r7 | r2 += r7;
0x00089132 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00089134 ldrb r2, [r2, 9] | r2 = *((r2 + 9));
| if (r2 == 0) {
0x00089136 cbz r2, 0x89142 | goto label_26;
| }
0x00089138 ldr.w r2, [r8, 0x9c] | r2 = *((r8 + 0x9c));
0x0008913c orrs r2, r3 | r2 |= r3;
0x0008913e str.w r2, [r8, 0x9c] | __asm ("str.w r2, [r8, 0x9c]");
| }
| label_26:
0x00089142 ldrd sb, r3, [r8, 0x6c] | __asm ("ldrd sb, r3, [r8, 0x6c]");
0x00089146 cmp sb, r3 |
| if (sb >= r3) {
0x00089148 bge.w 0x89422 | goto label_27;
| }
0x0008914c add.w r3, sb, sb, lsl 2 | r3 = sb + (sb << 2);
0x00089150 ldr.w r0, [r8, 0x68] | r0 = *((r8 + 0x68));
0x00089154 add.w r2, sb, 1 | r2 = sb + 1;
0x00089158 lsls r3, r3, 2 | r3 <<= 2;
0x0008915a str.w r2, [r8, 0x6c] | __asm ("str.w r2, [r8, 0x6c]");
0x0008915e movs r1, 0 | r1 = 0;
0x00089160 adds r2, r0, r3 | r2 = r0 + r3;
0x00089162 mov.w ip, 0x12 |
0x00089166 strd sl, r1, [r2, 4] | __asm ("strd sl, r1, [r2, 4]");
0x0008916a strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x0008916e str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
| label_13:
0x00089172 ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x00089174 movs r1, 0x60 | r1 = 0x60;
0x00089176 mov r0, r8 | r0 = r8;
0x00089178 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
0x0008917a mov r2, r6 | r2 = r6;
0x0008917c ite pl |
| if (r2 < r3) {
0x0008917e movpl r3, 4 | r3 = 4;
| }
| if (r2 >= r3) {
0x00089180 movmi r3, 1 | r3 = 1;
| }
0x00089182 str r3, [sp] | *(sp) = r3;
0x00089184 movs r3, 2 | r3 = 2;
0x00089186 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008918a ldrb.w r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x0008918e mov r2, r6 | r2 = r6;
0x00089190 movs r1, 0x60 | r1 = 0x60;
0x00089192 mov r0, r8 | r0 = r8;
0x00089194 str r3, [sp] | *(sp) = r3;
0x00089196 movs r3, 5 | r3 = 5;
0x00089198 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008919c ldr.w r3, [r8] | r3 = *(r8);
0x000891a0 cmp.w sb, 0 |
0x000891a4 ldr.w r0, [r8, 0x6c] | r0 = *((r8 + 0x6c));
0x000891a8 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000891ac it lt |
| if (sb >= 0) {
0x000891ae addlt sb, r0, -1 | sb = r0 + -1;
| }
0x000891b2 cmp r3, 0 |
| if (r3 != 0) {
0x000891b4 bne.w 0x893e8 | goto label_28;
| }
0x000891b8 ldr.w r3, [r8, 0x68] | r3 = *((r8 + 0x68));
0x000891bc add.w sb, sb, sb, lsl 2 | sb += (sb << 2);
0x000891c0 add.w r3, r3, sb, lsl 2 | r3 += (sb << 2);
| label_9:
0x000891c4 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x000891c6 ldrd r3, r2, [sp, 0x48] | __asm ("ldrd r3, r2, [arg_48h]");
0x000891ca orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x000891cc beq.w 0x893b0 | goto label_29;
| }
0x000891d0 movs r2, 0 | r2 = 0;
0x000891d2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000891d4 movs r1, 0x45 | r1 = 0x45;
0x000891d6 mov r0, r8 | r0 = r8;
0x000891d8 str r2, [sp] | *(sp) = r2;
0x000891da bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_8:
0x000891de ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x000891e0 cmp r5, 0 |
| if (r5 == 0) {
0x000891e2 beq.w 0x893fe | goto label_30;
| }
| label_10:
0x000891e6 cmp r6, 1 |
| if (r6 != 1) {
0x000891e8 beq 0x89208 |
0x000891ea ldr r3, [r4] | r3 = *(r4);
0x000891ec ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000891ee add r3, r7 | r3 += r7;
0x000891f0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000891f2 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x000891f4 cbz r3, 0x89208 | goto label_31;
| }
0x000891f6 ldr r3, [pc, 0x278] |
0x000891f8 mov r1, r6 | r1 = r6;
0x000891fa mov r0, r4 | r0 = r4;
0x000891fc add r3, pc | r3 = 0x112672;
0x000891fe str r3, [sp] | *(sp) = r3;
0x00089200 movs r3, 1 | r3 = 1;
0x00089202 mov r2, r3 | r2 = r3;
0x00089204 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
| }
| label_31:
0x00089208 movs r3, 5 | r3 = 5;
0x0008920a mov r0, r5 | r0 = r5;
0x0008920c str r3, [sp, 4] | var_4h = r3;
0x0008920e movs r2, 0 | r2 = 0;
0x00089210 movs r3, 1 | r3 = 1;
0x00089212 movs r1, 0x63 | r1 = 0x63;
0x00089214 str r6, [sp] | *(sp) = r6;
0x00089216 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00089218 invalid |
| if (r3 == 0) {
0x0008921c cbnz r3, 0x89222 |
0x0008921e movs r3, 1 | r3 = 1;
0x00089220 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| }
0x00089222 movs r4, 0 | r4 = 0;
0x00089224 mov r3, fp | r3 = fp;
0x00089226 mov r2, r4 | r2 = r4;
0x00089228 movs r1, 0x7b | r1 = 0x7b;
0x0008922a mov r0, r8 | r0 = r8;
0x0008922c str r4, [sp] | *(sp) = r4;
0x0008922e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00089232 mov.w r3, -1 | r3 = -1;
0x00089236 movs r2, 6 | r2 = 6;
0x00089238 str r3, [sp, 8] | var_8h = r3;
0x0008923a movs r1, 0x4a | r1 = 0x4a;
0x0008923c ldr r3, [pc, 0x234] |
0x0008923e mov r0, r8 | r0 = r8;
0x00089240 str r4, [sp] | *(sp) = r4;
0x00089242 add r3, pc |
0x00089244 add.w r3, r3, 0xa00 | r3 = 0x1130ba;
0x00089248 str r3, [sp, 4] | var_4h = r3;
0x0008924a mov r3, sl | r3 = sl;
0x0008924c bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00089250 mov r3, sl | r3 = sl;
0x00089252 mov r2, r4 | r2 = r4;
0x00089254 movs r1, 0x7c | r1 = 0x7c;
0x00089256 mov r0, r8 | r0 = r8;
0x00089258 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x0008925c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00089260 ldr.w r3, [r8, 0x6c] | r3 = *((r8 + 0x6c));
0x00089264 cmp r3, r4 |
| if (r3 > r4) {
0x00089266 ble 0x8927a |
0x00089268 ldr.w r2, [r8, 0x68] | r2 = *((r8 + 0x68));
0x0008926c add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00089270 movs r1, 8 | r1 = 8;
0x00089272 add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x00089276 strh r1, [r2, -0x12] | *((r2 - 0x12)) = r1;
| }
0x0008927a movs r1, 0x76 | r1 = 0x76;
0x0008927c mov r0, r8 | r0 = r8;
0x0008927e bl 0x2b574 | fcn_0002b574 (r0, r1, r2);
| }
| label_0:
0x00089282 ldr r2, [pc, 0x1f4] |
0x00089284 ldr r3, [pc, 0x1dc] | r3 = *(0x89464);
0x00089286 add r2, pc | r2 = 0x112704;
0x00089288 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008928a ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008928c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0008928e eors r2, r3 | r2 ^= r3;
0x00089290 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00089294 bne.w 0x8945a | goto label_32;
| }
0x00089298 add sp, 0x24 |
0x0008929a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0008929e ldr r2, [pc, 0x1dc] |
0x000892a0 mov r3, r8 | r3 = r8;
0x000892a2 mov r1, r8 | r1 = r8;
0x000892a4 mov r0, r4 | r0 = r4;
0x000892a6 add r2, pc | r2 = 0x112728;
0x000892a8 bl 0x3b980 | r0 = fcn_0003b980 (r0, r1, r2, r3);
0x000892ac cmp r0, 0 |
0x000892ae beq.w 0x8903e |
| } while (r0 == 0);
| do {
| label_2:
0x000892b2 mov r1, r8 | r1 = r8;
0x000892b4 mov r0, r5 | r0 = r5;
0x000892b6 bl 0x159dc | fcn_000159dc (r0, r1);
0x000892ba b 0x89282 | goto label_0;
| label_16:
0x000892bc ldrb.w r6, [r5, 0xa8] | r6 = *((r5 + 0xa8));
0x000892c0 cmp r6, 1 |
| if (r6 == 1) {
0x000892c2 beq 0x89352 | goto label_33;
| }
0x000892c4 ldr r1, [pc, 0x1b8] |
0x000892c6 add r1, pc | r1 = 0x11274a;
| label_4:
0x000892c8 mov r0, r5 | r0 = r5;
0x000892ca bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x000892ce str r7, [sp, 0x18] | var_18h = r7;
0x000892d0 mov r8, r0 | r8 = r0;
0x000892d2 b 0x8900c | goto label_1;
| label_18:
0x000892d4 mov r2, r7 | r2 = r7;
0x000892d6 mov r1, r0 | r1 = r0;
0x000892d8 mov r0, r4 | r0 = r4;
0x000892da bl 0x1bf44 | fcn_0001bf44 (r0, r1, r2);
0x000892de ldr r7, [sp, 0x18] | r7 = var_18h;
0x000892e0 b 0x8900c | goto label_1;
| label_22:
0x000892e2 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000892e4 mov r0, r4 | r0 = r4;
0x000892e6 ldr.w sb, [r3, r7] | sb = *((r3 + r7));
0x000892ea bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x000892ee cmp r0, 0 |
0x000892f0 bne 0x892b2 |
| } while (r0 != 0);
0x000892f2 mov r2, sb | r2 = sb;
0x000892f4 mov r1, r8 | r1 = r8;
0x000892f6 mov r0, r5 | r0 = r5;
0x000892f8 bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
0x000892fc cmp r0, 0 |
| if (r0 == 0) {
0x000892fe beq 0x89380 | goto label_34;
| }
0x00089300 ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x00089302 cmp r3, 0 |
| if (r3 == 0) {
0x00089304 beq 0x893f0 | goto label_35;
| }
0x00089306 ldr r0, [r4, 0x74] | r0 = *((r4 + 0x74));
0x00089308 movs r3, 1 | r3 = 1;
0x0008930a lsls r3, r6 | r3 <<= r6;
0x0008930c cmp r0, 0 |
0x0008930e it eq |
| if (r0 != 0) {
0x00089310 moveq r0, r4 | r0 = r4;
| }
0x00089312 ldr r2, [r0, 0x54] | r2 = *((r0 + 0x54));
0x00089314 tst r2, r3 |
| if ((r2 & r3) == 0) {
0x00089316 bne 0x89324 |
0x00089318 cmp r6, 1 |
0x0008931a orr.w r2, r2, r3 | r2 |= r3;
0x0008931e str r2, [r0, 0x54] | *((r0 + 0x54)) = r2;
| if (r6 == 1) {
0x00089320 beq.w 0x89454 | goto label_36;
| }
| }
| label_15:
0x00089324 mov r0, r4 | r0 = r4;
0x00089326 bl 0x2aec8 | fcn_0002aec8 (r0, r1);
0x0008932a b 0x892b2 | goto label_2;
| label_21:
0x0008932c ldr r2, [sp, 0x48] | r2 = *(arg_48h);
0x0008932e mov r0, r4 | r0 = r4;
0x00089330 ldr r3, [pc, 0x150] |
0x00089332 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00089336 add r3, pc | r3 = 0x1127be;
0x00089338 add.w r3, r3, r2, lsl 1 | r3 += (r2 << 1);
0x0008933c mov r2, r8 | r2 = r8;
0x0008933e add r3, sb | r3 += sb;
0x00089340 ldrb.w r1, [r3, 0x9fc] | r1 = *((r3 + 0x9fc));
0x00089344 ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x00089346 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0008934a cmp r0, 0 |
| if (r0 == 0) {
0x0008934c beq.w 0x8907a | goto label_3;
| }
0x00089350 b 0x892b2 | goto label_2;
| label_33:
0x00089352 ldr r1, [pc, 0x134] |
0x00089354 add r1, pc | r1 = 0x1127e2;
0x00089356 b 0x892c8 | goto label_4;
| label_19:
0x00089358 ldr r2, [pc, 0x130] |
0x0008935a mov sb, r3 | sb = r3;
0x0008935c add r2, pc | r2 = 0x1127ec;
0x0008935e b 0x8905e | goto label_5;
| label_17:
0x00089360 ldr r1, [pc, 0x12c] |
0x00089362 mov r0, r4 | r0 = r4;
0x00089364 add r1, pc | r1 = 0x1127f8;
0x00089366 bl 0x25778 | fcn_00025778 (r0);
0x0008936a b 0x89282 | goto label_0;
| label_24:
0x0008936c ldr r2, [r4, 0x74] | r2 = *((r4 + 0x74));
0x0008936e cmp r2, 0 |
| if (r2 == 0) {
0x00089370 beq 0x89416 | goto label_37;
| }
| label_12:
0x00089372 mov r0, r4 | r0 = r4;
0x00089374 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00089378 mov r8, r0 | r8 = r0;
0x0008937a cmp r0, 0 |
| if (r0 == 0) {
0x0008937c beq 0x89282 | goto label_0;
| }
0x0008937e b 0x890de | goto label_6;
| label_34:
0x00089380 mov r2, sb | r2 = sb;
0x00089382 mov r1, r8 | r1 = r8;
0x00089384 mov r0, r5 | r0 = r5;
0x00089386 bl 0x1aa6c | r0 = fcn_0001aa6c (r0, r1, r2);
0x00089388 usada8 r8, r1, r0, r2 | __asm ("usada8 r8, r1, r0, r2");
| if (r0 == 0) {
0x0008938c beq.w 0x89084 | goto label_7;
| }
0x00089390 ldr r1, [pc, 0x100] |
0x00089392 mov r2, r8 | r2 = r8;
0x00089394 mov r0, r4 | r0 = r4;
0x00089396 add r1, pc | r1 = 0x11282e;
0x00089398 bl 0x25778 | fcn_00025778 (r0);
0x0008939c b 0x892b2 | goto label_2;
| label_20:
0x0008939e ldr r2, [pc, 0xf8] |
0x000893a0 add r2, pc | r2 = 0x11283e;
0x000893a2 b 0x8905e | goto label_5;
| label_23:
0x000893a4 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000893a6 movs r2, 7 | r2 = 7;
0x000893a8 str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x000893aa adds r3, 1 | r3++;
0x000893ac str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x000893ae b 0x892b2 | goto label_2;
| label_29:
0x000893b0 ldr.w r2, [r8, 0x70] | r2 = *((r8 + 0x70));
0x000893b4 cmp r0, r2 |
| if (r0 >= r2) {
0x000893b6 bge 0x89442 | goto label_38;
| }
0x000893b8 add.w r2, r0, r0, lsl 2 | r2 = r0 + (r0 << 2);
0x000893bc ldr.w r5, [r8, 0x68] | r5 = *((r8 + 0x68));
0x000893c0 adds r1, r0, 1 | r1 = r0 + 1;
0x000893c2 lsl.w lr, r2, 2 | lr = r2 << 2;
0x000893c6 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000893c8 str.w r1, [r8, 0x6c] | __asm ("str.w r1, [r8, 0x6c]");
0x000893cc mov.w ip, 1 |
0x000893d0 add.w r1, r5, lr | r1 = r5 + lr;
0x000893d4 str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
0x000893d6 movs r3, 0x8f | r3 = 0x8f;
0x000893d8 strd r2, ip, [r1, 8] | __asm ("strd r2, ip, [r1, 8]");
0x000893dc str r6, [r1, 4] | *((r1 + 4)) = r6;
0x000893de str.w r3, [r5, lr] | __asm ("str.w r3, [r5, lr]");
| label_14:
0x000893e2 str.w r0, [r4, 0x80] | __asm ("str.w r0, [r4, 0x80]");
0x000893e6 b 0x891de | goto label_8;
| label_28:
0x000893e8 ldr r3, [pc, 0xb0] |
0x000893ea add r3, pc | r3 = 0x11288a;
0x000893ec adds r3, 4 | r3 += 4;
0x000893ee b 0x891c4 | goto label_9;
| label_35:
0x000893f0 ldr r1, [pc, 0xac] |
0x000893f2 mov r0, r4 | r0 = r4;
0x000893f4 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000893f6 add r1, pc | r1 = 0x11289a;
0x000893f8 bl 0x25778 | fcn_00025778 (r0);
0x000893fc b 0x892b2 | goto label_2;
| label_30:
0x000893fe ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x00089400 cbz r3, 0x89434 |
| while (1) {
0x00089402 mov r0, r4 | r0 = r4;
0x00089404 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00089408 mov r5, r0 | r5 = r0;
0x0008940a b 0x891e6 | goto label_10;
| label_25:
0x0008940c movs r1, 0xa6 | r1 = 0xa6;
0x0008940e mov r0, r8 | r0 = r8;
0x00089410 bl 0x2b574 | fcn_0002b574 (r0, r1, r2);
0x00089414 b 0x890f0 | goto label_11;
| label_37:
0x00089416 ldr r2, [r4] | r2 = *(r4);
0x00089418 ldr r2, [r2, 0x4c] | r2 = *((r2 + 0x4c));
0x0008941a lsls r1, r2, 0x1c | r1 = r2 << 0x1c;
0x0008941c it pl |
| if (r1 < r2) {
0x0008941e strbpl r3, [r4, 0x17] | *((r4 + 0x17)) = r3;
| }
0x00089420 b 0x89372 | goto label_12;
| label_27:
0x00089422 movs r3, 0 | r3 = 0;
0x00089424 mov r2, sl | r2 = sl;
0x00089426 movs r1, 0x12 | r1 = 0x12;
0x00089428 mov r0, r8 | r0 = r8;
0x0008942a str r3, [sp] | *(sp) = r3;
0x0008942c bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00089430 mov sb, r0 | sb = r0;
0x00089432 b 0x89172 | goto label_13;
0x00089434 ldr r3, [r4] | r3 = *(r4);
0x00089436 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00089438 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x0008943a itt pl |
| if (r3 < r3) {
0x0008943c movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x0008943e strbpl r3, [r4, 0x17] | *((r4 + 0x17)) = r3;
| }
0x00089440 b 0x89402 |
| }
| label_38:
0x00089442 movs r2, 1 | r2 = 1;
0x00089444 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00089446 str r2, [sp] | *(sp) = r2;
0x00089448 movs r1, 0x8f | r1 = 0x8f;
0x0008944a mov r2, r6 | r2 = r6;
0x0008944c mov r0, r8 | r0 = r8;
0x0008944e bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x00089452 b 0x893e2 | goto label_14;
| label_36:
0x00089454 bl 0x53ee0 | fcn_00053ee0 (r0, r1, r2, r3);
0x00089458 b 0x89324 | goto label_15;
| label_32:
0x0008945a blx 0x7e8c | fcn_00007e8c ();
0x0008945e nop |
0x00089460 ldr r4, [pc, 0x398] | r4 = *(0x897fc);
0x00089462 movs r4, r0 | r4 = r0;
0x00089464 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00089466 movs r0, r0 |
0x00089468 cmp r2, r0 |
0x0008946a movs r2, r0 | r2 = r0;
0x0008946c ldr r2, [pc, 0x1c0] | r2 = *(0x89630);
0x0008946e movs r2, r0 | r2 = r0;
0x00089470 ldr r0, [pc, 0x340] | r0 = *(0x897b4);
0x00089472 movs r2, r0 | r2 = r0;
0x00089474 asrs r2, r0, 0xf | r2 = r0 >> 0xf;
0x00089476 movs r3, r0 | r3 = r0;
0x00089478 ldr r2, [pc, 0x28] | r2 = *(0x894a4);
0x0008947a movs r4, r0 | r4 = r0;
0x0008947c strh r6, [r6, 0x36] | *((r6 + 0x36)) = r6;
0x0008947e movs r2, r0 | r2 = r0;
0x00089480 ldr r0, [pc, 0x18] | r0 = *(0x8949c);
0x00089482 movs r2, r0 | r2 = r0;
0x00089484 asrs r6, r1, 0xb | r6 = r1 >> 0xb;
0x00089486 movs r3, r0 | r3 = r0;
0x00089488 blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x0008948a movs r2, r0 | r2 = r0;
0x0008948c blx r0 | r0 = uint32_t (*r0)(uint32_t) (r2);
0x0008948e movs r2, r0 | r2 = r0;
0x00089490 strh r0, [r2, 6] | *((r2 + 6)) = r0;
0x00089492 movs r2, r0 | r2 = r0;
0x00089494 strh r2, [r4, 6] | *((r4 + 6)) = r2;
0x00089496 movs r2, r0 | r2 = r0;
0x00089498 bx r7 | return uint32_t (*r7)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x89738 */
| #include <stdint.h>
|
; (fcn) fcn.00089738 () | void fcn_00089738 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00089738 invalid |
0x0008973c lsls r0, r1, 0x1c | r0 = r1 << 0x1c;
0x0008973e mov r5, r1 | r5 = r1;
0x00089740 mov r2, r7 | r2 = r7;
0x00089742 movs r1, 0 | r1 = 0;
0x00089744 mov r6, r0 | r6 = r0;
0x00089746 bl 0x89708 | fcn_00089708 (r0, r1, r2);
0x0008974a ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0008974c mov r4, r0 | r4 = r0;
0x0008974e ldr r3, [r6] | r3 = *(r6);
| if (r1 == 0) {
0x00089750 cbz r1, 0x89760 | goto label_1;
| }
| if (r3 == 0) {
0x00089752 cbz r3, 0x89776 | goto label_2;
| }
0x00089754 ldr.w r2, [r3, 0x1f8] | r2 = *((r3 + 0x1f8));
0x00089758 cbz r2, 0x89776 |
| while (r2 == 0) {
0x0008975a mov r0, r3 | r0 = r3;
0x0008975c bl 0x19014 | fcn_00019014 (r0, r1);
| label_1:
0x00089760 str r4, [r5, 0x18] | *((r5 + 0x18)) = r4;
| if (r4 == 0) {
0x00089762 cbz r4, 0x89786 | goto label_3;
| }
| label_0:
0x00089764 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00089766 ldrb.w r2, [r5, 0x2d] | r2 = *((r5 + 0x2d));
0x0008976a adds r3, 1 | r3++;
0x0008976c str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0008976e lsls r3, r2, 0x1e | r3 = r2 << 0x1e;
| if (r3 < r2) {
0x00089770 bmi 0x8978c | goto label_4;
| }
0x00089772 mov r0, r4 | r0 = r4;
0x00089774 pop {r3, r4, r5, r6, r7, pc} |
| label_2:
0x00089776 ldr r2, [r1, 0x20] | r2 = *((r1 + 0x20));
0x00089778 subs r2, 1 | r2--;
0x0008977a str r2, [r1, 0x20] | *((r1 + 0x20)) = r2;
0x0008977c cmp r2, 0 |
0x0008977e beq 0x8975a |
| }
0x00089780 str r4, [r5, 0x18] | *((r5 + 0x18)) = r4;
0x00089782 cmp r4, 0 |
| if (r4 != 0) {
0x00089784 bne 0x89764 | goto label_0;
| }
| do {
| label_3:
0x00089786 movs r4, 0 | r4 = 0;
0x00089788 mov r0, r4 | r0 = r4;
0x0008978a pop {r3, r4, r5, r6, r7, pc} |
| label_4:
0x0008978c mov r1, r7 | r1 = r7;
0x0008978e mov r0, r6 | r0 = r6;
0x00089790 bl 0x25948 | r0 = fcn_00025948 (r0, r1);
0x00089794 cmp r0, 0 |
0x00089796 bne 0x89786 |
| } while (r0 != 0);
0x00089798 mov r0, r4 | r0 = r4;
0x0008979a 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/libsqlite3.so.0.8.6 @ 0x8979c */
| #include <stdint.h>
|
; (fcn) fcn.0008979c () | void fcn_0008979c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0008979c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000897a0 sub sp, 0x2c |
0x000897a2 ldr r4, [r0] | r4 = *(r0);
0x000897a4 ldrb.w r5, [r4, 0x53] | r5 = *((r4 + 0x53));
0x000897a8 ldr.w sl, [r4, 0x18] | sl = *((r4 + 0x18));
| if (r5 != 0) {
0x000897ac cbz r5, 0x897be |
| label_0:
0x000897ae mov r0, r4 | r0 = r4;
0x000897b0 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x000897b4 str.w sl, [r4, 0x18] | __asm ("str.w sl, [r4, 0x18]");
0x000897b8 add sp, 0x2c |
0x000897ba pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000897be mov r7, r1 | r7 = r1;
0x000897c0 mov r8, r2 | r8 = r2;
0x000897c2 add.w r2, r1, 8 | r2 = r1 + 8;
0x000897c6 mov r1, r5 | r1 = r5;
0x000897c8 mov r6, r0 | r6 = r0;
0x000897ca bl 0x89708 | r0 = fcn_00089708 (r0, r1, r2);
0x000897ce mov sb, r0 | sb = r0;
0x000897d0 cmp r0, 0 |
| if (r0 == 0) {
0x000897d2 beq 0x89846 | goto label_8;
| }
0x000897d4 ldr r2, [r0, 0x48] | r2 = *((r0 + 0x48));
0x000897d6 ldr r3, [r6] | r3 = *(r6);
0x000897d8 cmp r2, 0 |
| if (r2 == 0) {
0x000897da beq.w 0x89a48 | goto label_9;
| }
0x000897de ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x000897e0 ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x000897e2 cmp r2, r3 |
| if (r2 == r3) {
0x000897e4 beq 0x898a2 | goto label_10;
| }
0x000897e6 subs r1, 4 | r1 -= 4;
0x000897e8 movs r3, 0x10 | r3 = 0x10;
0x000897ea mov ip, r4 |
| do {
0x000897ec mov r0, r3 | r0 = r3;
0x000897ee adds r3, 0x10 | r3 += 0x10;
0x000897f0 ldr r4, [r1, r3] | r4 = *((r1 + r3));
0x000897f2 adds r5, 1 | r5++;
0x000897f4 cmp r2, r4 |
0x000897f6 bne 0x897ec |
| } while (r2 != r4);
0x000897f8 mov r4, ip | r4 = ip;
| label_3:
0x000897fa ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000897fc mov r1, r8 | r1 = r8;
0x000897fe ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00089800 orr r3, r3, 2 | r3 |= 2;
0x00089804 ldr.w fp, [r2, r0] | fp = *((r2 + r0));
0x00089808 mov r0, r4 | r0 = r4;
0x0008980a str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0008980c bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x00089810 mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x00089812 cbz r0, 0x89846 | goto label_8;
| }
0x00089814 mov r1, r0 | r1 = r0;
0x00089816 mov r2, fp | r2 = fp;
0x00089818 mov r0, r4 | r0 = r4;
0x0008981a bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
0x0008981e cbz r0, 0x8984a |
| while (r0 != 0) {
| label_1:
0x00089820 ldr r1, [pc, 0x304] |
0x00089822 mov r0, r6 | r0 = r6;
0x00089824 mov r2, r8 | r2 = r8;
0x00089826 add r1, pc | r1 = 0x113352;
0x00089828 bl 0x25778 | fcn_00025778 (r0);
| label_2:
0x0008982c mov r1, r7 | r1 = r7;
0x0008982e mov r0, r4 | r0 = r4;
0x00089830 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x00089834 mov r1, r8 | r1 = r8;
0x00089836 mov r0, r4 | r0 = r4;
0x00089838 bl 0x159dc | fcn_000159dc (r0, r1);
0x0008983c str.w sl, [r4, 0x18] | __asm ("str.w sl, [r4, 0x18]");
0x00089840 add sp, 0x2c |
0x00089842 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00089846 mov r1, r7 | r1 = r7;
0x00089848 b 0x897ae | goto label_0;
0x0008984a mov r2, fp | r2 = fp;
0x0008984c mov r1, r8 | r1 = r8;
0x0008984e mov r0, r4 | r0 = r4;
0x00089850 bl 0x1aa6c | r0 = fcn_0001aa6c (r0, r1, r2);
0x00089854 cmp r0, 0 |
0x00089856 bne 0x89820 |
| }
0x00089858 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
| if (r3 == 0) {
0x0008985c cbz r3, 0x8986c | goto label_11;
| }
0x0008985e mov r2, r8 | r2 = r8;
0x00089860 mov r1, sb | r1 = sb;
0x00089862 mov r0, r4 | r0 = r4;
0x00089864 bl 0x16bb4 | r0 = fcn_00016bb4 (r0, r1, r2);
0x00089868 cmp r0, 0 |
| if (r0 != 0) {
0x0008986a bne 0x89820 | goto label_1;
| }
| label_11:
0x0008986c mov r1, sb | r1 = sb;
0x0008986e mov r0, r6 | r0 = r6;
0x00089870 bl 0x26344 | r0 = fcn_00026344 (r0, r1);
0x00089874 cmp r0, 0 |
| if (r0 != 0) {
0x00089876 bne 0x8982c | goto label_2;
| }
0x00089878 ldr r2, [pc, 0x2b0] |
0x0008987a mov r3, r8 | r3 = r8;
0x0008987c mov r1, r8 | r1 = r8;
0x0008987e mov r0, r6 | r0 = r6;
0x00089880 add r2, pc | r2 = 0x1133b0;
0x00089882 bl 0x3b980 | r0 = fcn_0003b980 (r0, r1, r2, r3);
0x00089886 cmp r0, 0 |
| if (r0 != 0) {
0x00089888 bne 0x8982c | goto label_2;
| }
0x0008988a ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x0008988e ldr.w r2, [sb] | r2 = *(sb);
0x00089892 str r3, [sp, 0x14] | var_14h = r3;
| if (r3 != 0) {
0x00089894 cbz r3, 0x898a6 |
0x00089896 ldr r1, [pc, 0x298] |
0x00089898 mov r0, r6 | r0 = r6;
0x0008989a add r1, pc | r1 = 0x1133d0;
0x0008989c bl 0x25778 | fcn_00025778 (r0);
0x000898a0 b 0x8982c | goto label_2;
| label_10:
0x000898a2 mov r0, r5 | r0 = r5;
0x000898a4 b 0x897fa | goto label_3;
| }
0x000898a6 mov r3, r2 | r3 = r2;
0x000898a8 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000898aa movs r1, 0x1a | r1 = 0x1a;
0x000898ac mov r0, r6 | r0 = r6;
0x000898ae str r2, [sp] | *(sp) = r2;
0x000898b0 mov r2, fp | r2 = fp;
0x000898b2 bl 0x25800 | r0 = fcn_00025800 (r0);
0x000898b6 cmp r0, 0 |
| if (r0 != 0) {
0x000898b8 bne 0x8982c | goto label_2;
| }
0x000898ba mov r1, sb | r1 = sb;
0x000898bc mov r0, r6 | r0 = r6;
0x000898be bl 0x70e88 | fcn_00070e88 (r0, r1);
0x000898c2 str r0, [sp, 0x24] | var_24h = r0;
0x000898c4 cmp r0, 0 |
| if (r0 != 0) {
0x000898c6 bne 0x8982c | goto label_2;
| }
0x000898c8 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
| if (r3 == 0) {
0x000898cc cbz r3, 0x898f4 | goto label_12;
| }
0x000898ce ldr.w r3, [sb, 0x40] | r3 = *((sb + 0x40));
| if (r3 != 0) {
0x000898d2 cbnz r3, 0x898de | goto label_13;
| }
0x000898d4 b 0x89b20 | goto label_14;
| do {
0x000898d6 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000898d8 cmp r3, 0 |
| if (r3 == 0) {
0x000898da beq.w 0x89b20 | goto label_14;
| }
| label_13:
0x000898de ldr r2, [r3] | r2 = *(r3);
0x000898e0 cmp r4, r2 |
0x000898e2 bne 0x898d6 |
| } while (r4 != r2);
0x000898e4 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x000898e6 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000898e8 ldr r2, [r2] | r2 = *(r2);
0x000898ea ldr r2, [r2, 0x4c] | r2 = *((r2 + 0x4c));
0x000898ec cmp r2, 0 |
0x000898ee it ne |
| if (r2 == 0) {
0x000898f0 movne r1, r3 | r1 = r3;
| }
0x000898f2 str r1, [sp, 0x14] | var_14h = r1;
| label_12:
0x000898f4 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x000898f6 str r3, [sp, 0x18] | var_18h = r3;
0x000898f8 cmp r3, 0 |
| if (r3 == 0) {
0x000898fa beq.w 0x89a58 | goto label_15;
| }
| label_6:
0x000898fe ldr r3, [r6, 0x74] | r3 = *((r6 + 0x74));
0x00089900 movs r2, 1 | r2 = 1;
0x00089902 cmp r3, 0 |
0x00089904 it eq |
| if (r3 != 0) {
0x00089906 moveq r3, r6 | r3 = r6;
| }
0x00089908 strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
0x0008990a ldr.w r3, [sb] | r3 = *(sb);
0x0008990e ldrb r2, [r3] | r2 = *(r3);
0x00089910 str r3, [sp, 0x20] | var_20h = r3;
0x00089912 cmp r2, 0 |
0x00089914 it ne |
| if (r2 != 0) {
0x00089916 cmpne r3, -1 | __asm ("cmpne r3, -1");
| }
| if (r2 == 0) {
0x0008991a beq 0x8993c | goto label_16;
| }
0x0008991c ldr r0, [sp, 0x24] | r0 = var_24h;
| do {
0x0008991e cmp r2, 0xbf |
0x00089920 ldrb r1, [r3, 1] | r1 = *((r3 + 1));
0x00089922 add.w r3, r3, 1 | r3++;
| if (r2 > 0xbf) {
0x00089926 bhi.w 0x89a30 | goto label_17;
| }
| label_4:
0x0008992a mov r2, r1 | r2 = r1;
| label_5:
0x0008992c cmp r2, 0 |
0x0008992e it ne |
| if (r2 != 0) {
0x00089930 cmpne r3, -1 | __asm ("cmpne r3, -1");
| }
0x00089934 add.w r0, r0, 1 | r0++;
0x00089938 bne 0x8991e |
| } while (r2 != 0);
0x0008993a str r0, [sp, 0x24] | var_24h = r0;
| label_16:
0x0008993c sub.w r2, r5, 1 | r2 = r5 - 1;
0x00089940 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00089942 ldr r1, [pc, 0x1f0] |
0x00089944 clz r2, r2 | r2 &= r2;
0x00089948 lsrs r2, r2, 5 | r2 >>= 5;
0x0008994a mov r0, r6 | r0 = r6;
0x0008994c str r3, [sp, 0xc] | var_ch = r3;
0x0008994e add r1, pc | r1 = 0x113488;
0x00089950 strd r3, r8, [sp] | __asm ("strd r3, r8, [sp]");
0x00089954 str r2, [sp, 0x1c] | var_1ch = r2;
0x00089956 mov r3, fp | r3 = fp;
0x00089958 str r2, [sp, 8] | var_8h = r2;
0x0008995a mov r2, fp | r2 = fp;
0x0008995c bl 0x77c00 | fcn_00077c00 (r0);
0x00089960 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00089962 mov r0, r6 | r0 = r6;
0x00089964 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00089966 ldr r1, [pc, 0x1d0] |
0x00089968 str r2, [sp, 8] | var_8h = r2;
0x0008996a mov r2, fp | r2 = fp;
0x0008996c str r3, [sp, 0xc] | var_ch = r3;
0x0008996e mov r3, r8 | r3 = r8;
0x00089970 add r1, pc | r1 = 0x1134ae;
0x00089972 strd r8, r8, [sp] | __asm ("strd r8, r8, [sp]");
0x00089976 bl 0x77c00 | fcn_00077c00 (r0);
0x0008997a ldr r1, [pc, 0x1c0] |
0x0008997c mov r2, fp | r2 = fp;
0x0008997e mov r0, r4 | r0 = r4;
0x00089980 add r1, pc | r1 = 0x1134c2;
0x00089982 bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
| if (r0 != 0) {
0x00089986 cbz r0, 0x8999c |
0x00089988 ldr.w r3, [sb] | r3 = *(sb);
0x0008998c mov r2, fp | r2 = fp;
0x0008998e ldr r1, [pc, 0x1b0] |
0x00089990 mov r0, r6 | r0 = r6;
0x00089992 str r3, [sp] | *(sp) = r3;
0x00089994 mov r3, r8 | r3 = r8;
0x00089996 add r1, pc | r1 = 0x1134dc;
0x00089998 bl 0x77c00 | fcn_00077c00 (r0);
| }
0x0008999c cmp r5, 1 |
| if (r5 == 1) {
0x0008999e beq 0x89a68 | goto label_18;
| }
0x000899a0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000899a2 mov r2, fp | r2 = fp;
0x000899a4 ldr r1, [pc, 0x19c] |
0x000899a6 mov r0, r6 | r0 = r6;
0x000899a8 strd fp, r8, [sp, 8] | __asm ("strd fp, r8, [var_ch]");
0x000899ac strd r8, r3, [sp] | __asm ("strd r8, r3, [sp]");
0x000899b0 add r1, pc | r1 = 0x1134f8;
0x000899b2 bl 0x77c00 | fcn_00077c00 (r0);
0x000899b6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000899b8 cmp r3, 0 |
| if (r3 == 0) {
0x000899ba beq.w 0x89aca | goto label_19;
| }
0x000899be ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
0x000899c0 mov r2, r8 | r2 = r8;
0x000899c2 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000899c4 add.w sb, r3, 1 | sb = r3 + 1;
0x000899c8 mov r1, sb | r1 = sb;
0x000899ca str.w sb, [r6, 0x2c] | __asm ("str.w sb, [r6, 0x2c]");
0x000899ce bl 0x2b744 | fcn_0002b744 (r0, r1, r2);
0x000899d2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000899d4 mov r2, sb | r2 = sb;
0x000899d6 mov.w sb, 0 | sb = 0;
0x000899da movs r1, 0xab | r1 = 0xab;
0x000899dc ldr r0, [sp, 0x18] | r0 = var_18h;
0x000899de str r3, [sp, 4] | var_4h = r3;
0x000899e0 mvn r3, 0xb | r3 = ~0xb;
0x000899e4 str r3, [sp, 8] | var_8h = r3;
0x000899e6 mov r3, sb | r3 = sb;
0x000899e8 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000899ec bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000899f0 mov r1, r5 | r1 = r5;
0x000899f2 mov r0, r6 | r0 = r6;
0x000899f4 movs r2, 1 | r2 = 1;
0x000899f6 bl 0x2bc6c | fcn_0002bc6c (r0, r1, r2);
0x000899fa ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000899fc mov r2, fp | r2 = fp;
0x000899fe ldr r1, [pc, 0x148] |
0x00089a00 mov r0, r6 | r0 = r6;
0x00089a02 str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x00089a06 str r3, [sp] | *(sp) = r3;
0x00089a08 ldr r3, [pc, 0x140] |
0x00089a0a add r1, pc | r1 = 0x113558;
0x00089a0c add r3, pc | r3 = 0x11355c;
0x00089a0e str r3, [sp, 4] | var_4h = r3;
0x00089a10 movs r3, 1 | r3 = 1;
0x00089a12 strb r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00089a14 mov r3, fp | r3 = fp;
0x00089a16 bl 0x77c00 | fcn_00077c00 (r0);
| label_7:
0x00089a1a movs r3, 0 | r3 = 0;
0x00089a1c ldr r1, [pc, 0x130] |
0x00089a1e str r3, [sp] | *(sp) = r3;
0x00089a20 mov r2, fp | r2 = fp;
0x00089a22 ldr r3, [pc, 0x130] |
0x00089a24 mov r0, r6 | r0 = r6;
0x00089a26 add r1, pc | r1 = 0x11357a;
0x00089a28 add r3, pc | r3 = 0x113582;
0x00089a2a bl 0x77c00 | fcn_00077c00 (r0);
0x00089a2e b 0x8982c | goto label_2;
| label_17:
0x00089a30 and r2, r1, 0xc0 | r2 = r1 & 0xc0;
0x00089a34 cmp r2, 0x80 |
| if (r2 != 0x80) {
0x00089a36 bne.w 0x8992a | goto label_4;
| }
| do {
0x00089a3a ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x00089a3e and r1, r2, 0xc0 | r1 = r2 & 0xc0;
0x00089a42 cmp r1, 0x80 |
0x00089a44 beq 0x89a3a |
| } while (r1 == 0x80);
0x00089a46 b 0x8992c | goto label_5;
| label_9:
0x00089a48 movs r0, 0 | r0 = 0;
0x00089a4a mov.w r5, 0x8000 | r5 = fcn.00008000;
0x00089a4e movt r0, 0xfff8 | r0 = (r0 & 0xFFFF) | 0xfff80000;
0x00089a52 movt r5, 0xffff | r5 = (r5 & 0xFFFF) | 0xffff0000;
0x00089a56 b 0x897fa | goto label_3;
| label_15:
0x00089a58 mov r0, r6 | r0 = r6;
0x00089a5a bl 0x2aeb4 | fcn_0002aeb4 (r0, r1);
0x00089a5e str r0, [sp, 0x18] | var_18h = r0;
0x00089a60 cmp r0, 0 |
| if (r0 != 0) {
0x00089a62 bne.w 0x898fe | goto label_6;
| }
0x00089a66 b 0x8982c | goto label_2;
| label_18:
0x00089a68 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00089a6a cmp r3, 0 |
| if (r3 != 0) {
0x00089a6c beq 0x89af6 |
0x00089a6e ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
0x00089a70 mov r2, r8 | r2 = r8;
0x00089a72 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00089a74 add.w sb, r3, 1 | sb = r3 + 1;
0x00089a78 mov r1, sb | r1 = sb;
0x00089a7a str.w sb, [r6, 0x2c] | __asm ("str.w sb, [r6, 0x2c]");
0x00089a7e bl 0x2b744 | fcn_0002b744 (r0, r1, r2);
0x00089a82 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00089a84 mov r2, sb | r2 = sb;
0x00089a86 mov.w sb, 0 | sb = 0;
0x00089a8a ldr r0, [sp, 0x18] | r0 = var_18h;
0x00089a8c movs r1, 0xab | r1 = 0xab;
0x00089a8e str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00089a92 str r3, [sp, 4] | var_4h = r3;
0x00089a94 mvn r3, 0xb | r3 = ~0xb;
0x00089a98 str r3, [sp, 8] | var_8h = r3;
0x00089a9a mov r3, sb | r3 = sb;
0x00089a9c bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x00089aa0 mov r2, r5 | r2 = r5;
0x00089aa2 mov r1, r5 | r1 = r5;
0x00089aa4 mov r0, r6 | r0 = r6;
0x00089aa6 bl 0x2bc6c | fcn_0002bc6c (r0, r1, r2);
0x00089aaa ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00089aac mov r0, r6 | r0 = r6;
0x00089aae strb r5, [r6, 0x10] | *((r6 + 0x10)) = r5;
0x00089ab0 mov r2, fp | r2 = fp;
0x00089ab2 ldr r1, [pc, 0xa4] |
0x00089ab4 str r3, [sp] | *(sp) = r3;
0x00089ab6 ldr r3, [pc, 0xa4] |
0x00089ab8 add r1, pc | r1 = 0x113616;
0x00089aba str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x00089abe add r3, pc | r3 = 0x113620;
0x00089ac0 str r3, [sp, 4] | var_4h = r3;
0x00089ac2 mov r3, fp | r3 = fp;
0x00089ac4 bl 0x77c00 | fcn_00077c00 (r0);
0x00089ac8 b 0x8982c | goto label_2;
| label_19:
0x00089aca mov r1, r5 | r1 = r5;
0x00089acc mov r0, r6 | r0 = r6;
0x00089ace movs r2, 1 | r2 = 1;
0x00089ad0 bl 0x2bc6c | fcn_0002bc6c (r0, r1, r2);
0x00089ad4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00089ad6 mov r2, fp | r2 = fp;
0x00089ad8 ldr r1, [pc, 0x84] |
0x00089ada mov r0, r6 | r0 = r6;
0x00089adc str r3, [sp, 8] | var_8h = r3;
0x00089ade ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00089ae0 add r1, pc | r1 = 0x113644;
0x00089ae2 str r3, [sp] | *(sp) = r3;
0x00089ae4 ldr r3, [pc, 0x7c] |
0x00089ae6 add r3, pc | r3 = 0x11364e;
0x00089ae8 str r3, [sp, 4] | var_4h = r3;
0x00089aea movs r3, 1 | r3 = 1;
0x00089aec strb r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00089aee mov r3, fp | r3 = fp;
0x00089af0 bl 0x77c00 | fcn_00077c00 (r0);
0x00089af4 b 0x89a1a | goto label_7;
| }
0x00089af6 mov r2, r5 | r2 = r5;
0x00089af8 mov r1, r5 | r1 = r5;
0x00089afa mov r0, r6 | r0 = r6;
0x00089afc bl 0x2bc6c | fcn_0002bc6c (r0, r1, r2);
0x00089b00 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00089b02 mov r0, r6 | r0 = r6;
0x00089b04 strb r5, [r6, 0x10] | *((r6 + 0x10)) = r5;
0x00089b06 mov r2, fp | r2 = fp;
0x00089b08 ldr r1, [pc, 0x5c] |
0x00089b0a str r3, [sp, 8] | var_8h = r3;
0x00089b0c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00089b0e add r1, pc | r1 = 0x11367a;
0x00089b10 str r3, [sp] | *(sp) = r3;
0x00089b12 ldr r3, [pc, 0x58] |
0x00089b14 add r3, pc | r3 = 0x113686;
0x00089b16 str r3, [sp, 4] | var_4h = r3;
0x00089b18 mov r3, fp | r3 = fp;
0x00089b1a bl 0x77c00 | fcn_00077c00 (r0);
0x00089b1e b 0x8982c | goto label_2;
| label_14:
0x00089b20 movs r3, 0 | r3 = 0;
0x00089b22 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00089b24 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x89b70 */
| #include <stdint.h>
|
; (fcn) fcn.00089b70 () | void fcn_00089b70 (int16_t arg_10h, int16_t arg_28h, int16_t arg_48h, int16_t arg_80h, int16_t arg_84h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_28h;
| int16_t var_2ch_2;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_48h;
| int16_t var_54h_2;
| int16_t var_cch;
| int16_t var_114h;
| int16_t var_0h;
| int16_t var_144h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h_2;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h_2;
| int16_t var_38h_2;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h_2;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00089b70 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00089b74 mov sl, r0 | sl = r0;
0x00089b76 ldr.w r4, [pc, 0x480] |
0x00089b7a sub sp, 0x5c |
0x00089b7c ldr.w r0, [pc, 0x47c] | r0 = *(0x89ffc);
0x00089b80 add r4, pc | r4 = 0x113b7e;
0x00089b82 ldr.w sb, [sl] | sb = *(sl);
0x00089b86 ldr r6, [sp, 0x80] | r6 = *(arg_80h);
0x00089b88 ldr r0, [r4, r0] |
0x00089b8a ldr r0, [r0] | r0 = imp._ITM_deregisterTMCloneTable;
0x00089b8c str r0, [sp, 0x54] | var_54h = r0;
0x00089b8e mov.w r0, 0 | r0 = 0;
0x00089b92 str r3, [sp, 0x2c] | var_2ch = r3;
0x00089b94 ldrb.w r3, [sl, 0x93] | r3 = *((sl + 0x93));
0x00089b98 str r2, [sp, 0x20] | var_20h = r2;
0x00089b9a str r3, [sp, 0x18] | var_18h = r3;
0x00089b9c ldr.w r3, [sb, 0x20] | r3 = *((sb + 0x20));
0x00089ba0 lsls r0, r3, 0x11 | r0 = r3 << 0x11;
| if (r0 >= r3) {
0x00089ba2 bpl.w 0x89ce4 | goto label_10;
| }
0x00089ba6 ldr r0, [r1, 0x48] | r0 = *((r1 + 0x48));
0x00089ba8 mov fp, r1 |
0x00089baa ldr.w r1, [sb, 0x10] | r1 = *((sb + 0x10));
0x00089bae cmp r0, 0 |
| if (r0 == 0) {
0x00089bb0 beq.w 0x89fde | goto label_20;
| }
0x00089bb4 ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x00089bb6 cmp r0, r3 |
| if (r0 == r3) {
0x00089bb8 beq.w 0x89ea4 | goto label_21;
| }
0x00089bbc add.w r3, r1, 0x10 | r3 = r1 + 0x10;
0x00089bc0 movs r4, 0 | r4 = 0;
| do {
0x00089bc2 mov r1, r3 | r1 = r3;
0x00089bc4 adds r4, 1 | r4++;
0x00089bc6 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00089bc8 adds r3, 0x10 | r3 += 0x10;
0x00089bca lsls r5, r4, 4 | r5 = r4 << 4;
0x00089bcc cmp r0, r2 |
0x00089bce bne 0x89bc2 |
| } while (r0 != r2);
0x00089bd0 str r5, [sp, 0x38] | var_38h_2 = r5;
| label_6:
0x00089bd2 ldr r3, [r1] | r3 = *(r1);
0x00089bd4 ldr.w r8, [fp, 0x10] | r8 = *(arg_10h);
0x00089bd8 str r3, [sp, 0x1c] | var_1ch = r3;
0x00089bda cmp.w r8, 0 |
| if (r8 == 0) {
0x00089bde beq 0x89c84 | goto label_22;
| }
0x00089be0 add r3, sp, 0x48 | r3 += var_48h_2;
0x00089be2 str r4, [sp, 0x34] | var_34h_2 = r4;
0x00089be4 mov r4, r8 | r4 = r8;
0x00089be6 str r3, [sp, 0x24] | var_24h = r3;
0x00089be8 add r3, sp, 0x4c | r3 += var_4ch;
0x00089bea str r3, [sp, 0x28] | var_28h_2 = r3;
| label_0:
0x00089bec movs r3, 0 | r3 = 0;
0x00089bee ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00089bf0 strd r3, r3, [sp, 0x48] | __asm ("strd r3, r3, [var_4ch]");
| if (r6 == 0) {
0x00089bf4 cbz r6, 0x89c3c | goto label_23;
| }
0x00089bf6 ldr.w r0, [fp] | r0 = *(fp);
0x00089bfa blx 0x831c | r0 = fcn_0000831c ();
| if (r0 == 0) {
0x00089bfe cbz r0, 0x89c3a | goto label_24;
| }
0x00089c00 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00089c02 cmp r0, 0 |
| if (r0 <= 0) {
0x00089c04 ble 0x89c7a | goto label_2;
| }
0x00089c06 ldr r7, [sp, 0x84] | r7 = *(arg_84h);
0x00089c08 movs r3, 0 | r3 = 0;
0x00089c0a add.w r5, r4, 0x24 | r5 = r4 + 0x24;
0x00089c0e b 0x89c2e |
| while (r2 < 0) {
0x00089c10 ldrsh.w r2, [fp, 0x28] | r2 = *(arg_28h);
0x00089c14 cmp r7, 0 |
0x00089c16 sub.w r2, r2, r1 | r2 -= r1;
0x00089c1a clz r2, r2 | r2 &= r2;
0x00089c1e lsr.w r2, r2, 5 | r2 >>= 5;
0x00089c22 it eq |
| if (r7 != 0) {
0x00089c24 moveq r2, 0 | r2 = 0;
| }
| if (r2 != 0) {
0x00089c26 cbnz r2, 0x89c3a | goto label_24;
| }
0x00089c28 adds r3, 1 | r3++;
0x00089c2a cmp r0, r3 |
| if (r0 == r3) {
0x00089c2c beq 0x89c7a | goto label_2;
| }
0x00089c2e ldr.w r1, [r5, r3, lsl 3] | offset_0 = r3 << 3;
| r1 = *((r5 + offset_0));
0x00089c32 ldr.w r2, [r6, r1, lsl 2] | offset_1 = r1 << 2;
| r2 = *((r6 + offset_1));
0x00089c36 cmp r2, 0 |
0x00089c38 blt 0x89c10 |
| }
| label_24:
0x00089c3a ldr r1, [r4, 8] | r1 = *((r4 + 8));
| label_23:
0x00089c3c ldrb.w r3, [sl, 0x93] | r3 = *((sl + 0x93));
0x00089c40 cmp r3, 0 |
| if (r3 == 0) {
0x00089c42 beq 0x89d00 | goto label_25;
| }
0x00089c44 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00089c46 mov r0, sb | r0 = sb;
0x00089c48 bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
0x00089c4c mov r5, r0 | r5 = r0;
| if (r5 != 0) {
| label_1:
0x00089c4e cbz r5, 0x89c68 |
0x00089c50 ldr r3, [sp, 0x28] | r3 = var_28h_2;
0x00089c52 mov r2, r4 | r2 = r4;
0x00089c54 mov r1, r5 | r1 = r5;
0x00089c56 mov r0, sl | r0 = sl;
0x00089c58 str r3, [sp] | *(sp) = r3;
0x00089c5a ldr r3, [sp, 0x24] | r3 = var_24h;
0x00089c5c bl 0x2e55c | fcn_0002e55c (r0, r1, r2, r3, r4, r5);
0x00089c60 str r0, [sp, 0x30] | var_30h = r0;
0x00089c62 cmp r0, 0 |
| if (r0 == 0) {
0x00089c64 beq.w 0x89d94 | goto label_26;
| }
| }
0x00089c68 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00089c6a cmp r3, 0 |
| if (r3 == 0) {
0x00089c6c beq 0x89ce4 | goto label_10;
| }
0x00089c6e ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x00089c72 cmp r3, 0 |
| if (r3 != 0) {
0x00089c74 bne 0x89ce4 | goto label_10;
| }
0x00089c76 cmp r5, 0 |
| if (r5 == 0) {
0x00089c78 beq 0x89d10 | goto label_27;
| }
| label_2:
0x00089c7a ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00089c7c cmp r4, 0 |
| if (r4 != 0) {
0x00089c7e bne 0x89bec | goto label_0;
| }
| label_5:
0x00089c80 ldr.w r0, [fp, 0x48] | r0 = *(arg_48h);
| label_22:
0x00089c84 ldr.w r1, [fp] | r1 = *(fp);
0x00089c88 adds r0, 0x38 | r0 += 0x38;
0x00089c8a movs r2, 0 | r2 = 0;
0x00089c8c bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x00089c90 ldr r4, [r0, 8] | r4 = *((r0 + 8));
| if (r4 != 0) {
0x00089c92 cbz r4, 0x89ce4 |
0x00089c94 movs r5, 0 | r5 = 0;
0x00089c96 add.w r8, sp, 0x4c | r8 += var_4ch;
0x00089c9a add r7, sp, 0x50 | r7 += var_50h;
| label_9:
0x00089c9c strd r5, r5, [sp, 0x4c] | __asm ("strd r5, r5, [var_4ch]");
| if (r6 != 0) {
0x00089ca0 cbz r6, 0x89cb4 |
0x00089ca2 ldr r3, [sp, 0x84] | r3 = *(arg_84h);
0x00089ca4 mov r2, r6 | r2 = r6;
0x00089ca6 mov r1, r4 | r1 = r4;
0x00089ca8 mov r0, fp | r0 = fp;
0x00089caa bl 0x1635c | r0 = fcn_0001635c (r0, r1, r2, r3);
0x00089cae cmp r0, 0 |
| if (r0 == 0) {
0x00089cb0 beq.w 0x89f22 | goto label_12;
| }
| }
0x00089cb4 ldrb r3, [r4, 0x18] | r3 = *((r4 + 0x18));
| if (r3 == 0) {
0x00089cb6 cbnz r3, 0x89cc2 |
0x00089cb8 ldr.w r3, [sb, 0x20] | r3 = *((sb + 0x20));
0x00089cbc lsls r3, r3, 0xc | r3 <<= 0xc;
| if (r3 >= r3) {
0x00089cbe bpl.w 0x89f2c | goto label_28;
| }
| }
| label_11:
0x00089cc2 mov r3, r8 | r3 = r8;
0x00089cc4 mov r2, r4 | r2 = r4;
0x00089cc6 mov r1, fp | r1 = fp;
0x00089cc8 mov r0, sl | r0 = sl;
0x00089cca str r7, [sp] | *(sp) = r7;
0x00089ccc bl 0x2e55c | r0 = fcn_0002e55c (r0, r1, r2, r3, r4, r5);
0x00089cd0 cmp r0, 0 |
| if (r0 == 0) {
0x00089cd2 beq.w 0x89ed8 | goto label_29;
| }
0x00089cd6 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 == 0) {
0x00089cd8 cbz r3, 0x89ce4 | goto label_10;
| }
0x00089cda ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x00089cde cmp r3, 0 |
| if (r3 == 0) {
0x00089ce0 beq.w 0x89f22 | goto label_12;
| }
| }
| label_10:
0x00089ce4 ldr r2, [pc, 0x318] |
0x00089ce6 ldr r3, [pc, 0x314] | r3 = *(0x89ffe);
0x00089ce8 add r2, pc | r2 = 0x113cec;
0x00089cea ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00089cec ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00089cee ldr r3, [sp, 0x54] | r3 = var_54h;
0x00089cf0 eors r2, r3 | r2 ^= r3;
0x00089cf2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00089cf6 bne.w 0x89ff4 | goto label_30;
| }
0x00089cfa add sp, 0x5c |
0x00089cfc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_25:
0x00089d00 mov r2, r1 | r2 = r1;
0x00089d02 mov r0, sl | r0 = sl;
0x00089d04 mov r1, r3 | r1 = r3;
0x00089d06 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00089d08 bl 0x894a4 | r0 = fcn_000894a4 (r0, r1, r2, r3, r4, r5, r6);
0x00089d0c mov r5, r0 | r5 = r0;
0x00089d0e b 0x89c4e | goto label_1;
| label_27:
0x00089d10 ldr.w r8, [sl, 8] | r8 = *((sl + 8));
0x00089d14 cmp.w r8, 0 |
| if (r8 == 0) {
0x00089d18 beq.w 0x89f42 | goto label_31;
| }
| label_13:
0x00089d1c ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00089d1e ldr.w r3, [r8, 0x6c] | r3 = *((r8 + 0x6c));
0x00089d22 cmp r2, 0 |
0x00089d24 add r3, r2 | r3 += r2;
0x00089d26 add.w r3, r3, 1 | r3++;
| if (r2 <= 0) {
0x00089d2a ble 0x89d80 | goto label_32;
| }
0x00089d2c str.w sl, [sp, 0x3c] | __asm ("str.w sl, [var_3ch]");
0x00089d30 movs r7, 0 | r7 = 0;
0x00089d32 ldr.w sl, [sp, 0x20] | sl = var_20h;
0x00089d36 add.w r5, r4, 0x24 | r5 = r4 + 0x24;
0x00089d3a str.w sb, [sp, 0x30] | __asm ("str.w sb, [var_30h]");
0x00089d3e mov sb, r3 | sb = r3;
| do {
0x00089d40 ldr r0, [r4] | r0 = *(r4);
0x00089d42 ldrsh.w r1, [r5, r7, lsl 3] | offset_2 = r7 << 3;
| r1 = *((r5 + offset_2));
0x00089d46 ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x00089d48 eor r3, r3, 0x20 | r3 ^= 0x20;
0x00089d4c ubfx r3, r3, 5, 1 | r3 = (r3 >> 5) & ((1 << 1) - 1);
0x00089d50 orrs.w r3, r3, r1, lsr 31 | r3 |= (r1 >> 31);
| if (r3 == r3) {
0x00089d54 bne 0x89d5c |
0x00089d56 bl 0xf328 | r0 = fcn_0000f328 (r0, r1);
0x00089d5a mov r1, r0 | r1 = r0;
| }
0x00089d5c add.w r2, r1, sl | r2 = r1 + sl;
0x00089d60 movs r3, 0 | r3 = 0;
0x00089d62 str r3, [sp] | *(sp) = r3;
0x00089d64 adds r2, 1 | r2++;
0x00089d66 mov r3, sb | r3 = sb;
0x00089d68 movs r1, 0x32 | r1 = 0x32;
0x00089d6a mov r0, r8 | r0 = r8;
0x00089d6c adds r7, 1 | r7++;
0x00089d6e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00089d72 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00089d74 cmp r3, r7 |
0x00089d76 bgt 0x89d40 |
| } while (r3 > r7);
0x00089d78 ldr.w sb, [sp, 0x30] | sb = var_30h;
0x00089d7c ldr.w sl, [sp, 0x3c] | sl = var_3ch;
| label_32:
0x00089d80 movs r3, 0 | r3 = 0;
0x00089d82 ldrb r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00089d84 mov r0, r8 | r0 = r8;
0x00089d86 str r3, [sp] | *(sp) = r3;
0x00089d88 movs r1, 0x9a | r1 = 0x9a;
0x00089d8a mov.w r3, -1 | r3 = -1;
0x00089d8e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00089d92 b 0x89c7a | goto label_2;
| label_26:
0x00089d94 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00089d96 str r3, [sp, 0x3c] | var_3ch = r3;
0x00089d98 cmp r3, 0 |
| if (r3 == 0) {
0x00089d9a beq.w 0x89ece | goto label_33;
| }
0x00089d9e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00089da0 str r3, [sp, 0x40] | var_40h = r3;
| label_8:
0x00089da2 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00089da4 cmp r3, 0 |
| if (r3 <= 0) {
0x00089da6 ble 0x89e16 | goto label_34;
| }
0x00089da8 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00089daa mov.w r8, 0 | r8 = 0;
0x00089dae str r6, [sp, 0x44] | var_44h = r6;
0x00089db0 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00089db2 ldr r6, [sp, 0x34] | r6 = var_34h_2;
0x00089db4 subs r7, r3, 4 | r7 = r3 - 4;
0x00089db6 b 0x89de4 | goto label_35;
| label_3:
0x00089db8 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00089dba ldrsh.w r3, [r3, r8, lsl 1] | offset_3 = r8 << 1;
| r3 = *((r3 + offset_3));
0x00089dbe add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00089dc2 lsls r3, r3, 2 | r3 <<= 2;
| label_4:
0x00089dc4 ldr r2, [r2, r3] | r2 = *((r2 + r3));
0x00089dc6 mov r0, sl | r0 = sl;
0x00089dc8 ldr r1, [r5] | r1 = *(r5);
0x00089dca mov r3, r6 | r3 = r6;
0x00089dcc bl 0x496c8 | r0 = fcn_000496c8 (r0, r1, r2, r3);
0x00089dd0 sub.w r0, r0, 2 | r0 -= 2;
0x00089dd4 clz r0, r0 | r0 &= r0;
0x00089dd8 lsrs r0, r0, 5 | r0 >>= 5;
| do {
0x00089dda ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00089ddc add.w r8, r8, 1 | r8++;
0x00089de0 cmp r3, r8 |
| if (r3 <= r8) {
0x00089de2 ble 0x89e12 | goto label_36;
| }
| label_35:
0x00089de4 ldrsh.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x00089de8 ldr r2, [r7, 4]! | r2 = *((r7 += 4));
0x00089dec cmp r2, r3 |
0x00089dee itt eq |
| if (r2 != r3) {
0x00089df0 moveq r3, -1 | r3 = -1;
| }
| if (r2 == r3) {
0x00089df4 str r3, [r7] | *(r7) = r3;
| }
0x00089df6 ldr.w r3, [sb, 0x150] | r3 = *((sb + 0x150));
0x00089dfa cmp r3, 0 |
0x00089dfc beq 0x89dda |
| } while (r3 == 0);
0x00089dfe ldr r3, [sp, 0x48] | r3 = var_48h_2;
0x00089e00 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00089e02 cmp r3, 0 |
| if (r3 != 0) {
0x00089e04 bne 0x89db8 | goto label_3;
| }
0x00089e06 ldrsh.w r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x00089e0a add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00089e0e lsls r3, r3, 2 | r3 <<= 2;
0x00089e10 b 0x89dc4 | goto label_4;
| label_36:
0x00089e12 ldr r6, [sp, 0x44] | r6 = var_44h;
0x00089e14 str r0, [sp, 0x30] | var_30h = r0;
| label_34:
0x00089e16 ldr r1, [sp, 0x34] | r1 = var_34h_2;
0x00089e18 cmp r1, 1 |
| if (r1 != 1) {
0x00089e1a beq 0x89e3a |
0x00089e1c ldr.w r3, [sl] | r3 = *(sl);
0x00089e20 ldr r2, [sp, 0x38] | r2 = var_38h_2;
0x00089e22 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00089e24 add r3, r2 | r3 += r2;
0x00089e26 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00089e28 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x00089e2a cbz r3, 0x89e3a | goto label_37;
| }
0x00089e2c ldr r3, [r5] | r3 = *(r5);
0x00089e2e mov r0, sl | r0 = sl;
0x00089e30 ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x00089e32 str r3, [sp] | *(sp) = r3;
0x00089e34 movs r3, 0 | r3 = 0;
0x00089e36 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
| }
| label_37:
0x00089e3a ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x00089e3e adds r3, 1 | r3++;
0x00089e40 str.w r3, [sl, 0x28] | __asm ("str.w r3, [sl, 0x28]");
0x00089e44 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00089e46 cmp r3, 0 |
| if (r3 != 0) {
0x00089e48 bne 0x89eac | goto label_38;
| }
| label_7:
0x00089e4a ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x00089e4c cbz r3, 0x89e8a |
0x00089e4e ldr.w r3, [sl, 0x74] | r3 = *((sl + 0x74));
0x00089e52 cmp r3, 0 |
0x00089e54 it eq |
| if (r3 != 0) {
0x00089e56 moveq r3, sl | r3 = sl;
| }
0x00089e58 ldr.w r3, [r3, 0x100] | r3 = *((r3 + 0x100));
| if (r3 != 0) {
0x00089e5c cbz r3, 0x89e6c |
0x00089e5e ldr r3, [r3] | r3 = *(r3);
0x00089e60 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x00089e62 cmp r3, r2 |
| if (r3 == r2) {
0x00089e64 beq 0x89f54 | goto label_39;
| }
| label_14:
0x00089e66 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x00089e68 cmp r3, r2 |
| if (r3 == r2) {
0x00089e6a beq 0x89f5c | goto label_40;
| }
| }
| label_16:
0x00089e6c ldr r3, [sp, 0x30] | r3 = var_30h;
0x00089e6e mov r2, r5 | r2 = r5;
0x00089e70 ldr r1, [sp, 0x34] | r1 = var_34h_2;
0x00089e72 mov r0, sl | r0 = sl;
0x00089e74 str r4, [sp] | *(sp) = r4;
0x00089e76 str r3, [sp, 0x10] | var_10h = r3;
0x00089e78 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00089e7a str r3, [sp, 4] | var_144h = r3;
0x00089e7c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00089e7e str r3, [sp, 8] | var_8h = r3;
0x00089e80 movs r3, 1 | r3 = 1;
0x00089e82 str r3, [sp, 0xc] | var_ch = r3;
0x00089e84 ldr r3, [sp, 0x48] | r3 = var_48h_2;
0x00089e86 bl 0x33b7c | fcn_00033b7c (r0, r1, r2, r3, r4, r5, r6);
| }
| label_15:
0x00089e8a ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00089e8c cmp r3, 0 |
| if (r3 == 0) {
0x00089e8e beq.w 0x89c7a | goto label_2;
| }
0x00089e92 mov r1, r3 | r1 = r3;
0x00089e94 mov r0, sb | r0 = sb;
0x00089e96 bl 0x159dc | fcn_000159dc (r0, r1);
0x00089e9a ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00089e9c cmp r4, 0 |
| if (r4 != 0) {
0x00089e9e bne.w 0x89bec | goto label_0;
| }
0x00089ea2 b 0x89c80 | goto label_5;
| label_21:
0x00089ea4 movs r3, 0 | r3 = 0;
0x00089ea6 mov r4, r3 | r4 = r3;
0x00089ea8 str r3, [sp, 0x38] | var_38h_2 = r3;
0x00089eaa b 0x89bd2 | goto label_6;
| label_38:
0x00089eac ldr r3, [sp, 0x30] | r3 = var_30h;
0x00089eae mov r2, r5 | r2 = r5;
0x00089eb0 ldr r1, [sp, 0x34] | r1 = var_34h_2;
0x00089eb2 mov r0, sl | r0 = sl;
0x00089eb4 str r3, [sp, 0x10] | var_10h = r3;
0x00089eb6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00089eb8 str r3, [sp, 8] | var_8h = r3;
0x00089eba ldr r3, [sp, 0x40] | r3 = var_40h;
0x00089ebc strd r4, r3, [sp] | __asm ("strd r4, r3, [sp]");
0x00089ec0 mov.w r3, -1 | r3 = -1;
0x00089ec4 str r3, [sp, 0xc] | var_ch = r3;
0x00089ec6 ldr r3, [sp, 0x48] | r3 = var_48h_2;
0x00089ec8 bl 0x33b7c | fcn_00033b7c (r0, r1, r2, r3, r4, r5, r6);
0x00089ecc b 0x89e4a | goto label_7;
| label_33:
0x00089ece ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00089ed0 str r3, [sp, 0x50] | var_50h = r3;
0x00089ed2 add r3, sp, 0x50 | r3 += var_50h;
0x00089ed4 str r3, [sp, 0x40] | var_40h = r3;
0x00089ed6 b 0x89da2 | goto label_8;
| label_29:
0x00089ed8 mov r1, r0 | r1 = r0;
0x00089eda mov r3, r0 | r3 = r0;
0x00089edc mov r2, r0 | r2 = r0;
0x00089ede mov r0, sl | r0 = sl;
0x00089ee0 bl 0x25c84 | r0 = fcn_00025c84 (r0, r1, r2, r3);
0x00089ee4 mov r1, r0 | r1 = r0;
| if (r0 != 0) {
0x00089ee6 cbz r0, 0x89f18 |
0x00089ee8 ldr r3, [r4] | r3 = *(r4);
0x00089eea ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x00089eec str r3, [r0, 0x18] | *((r0 + 0x18)) = r3;
0x00089eee ldr.w r0, [sl, 0x28] | r0 = *((sl + 0x28));
0x00089ef2 add.w ip, r2, 1 |
0x00089ef6 ldr r2, [r3] | r2 = *(r3);
0x00089ef8 str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
0x00089efa str.w ip, [r3, 0x20] | __asm ("str.w ip, [r3, 0x20]");
0x00089efe adds r3, r0, 1 | r3 = r0 + 1;
0x00089f00 str.w r3, [sl, 0x28] | __asm ("str.w r3, [sl, 0x28]");
0x00089f04 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00089f06 str r0, [r1, 0x30] | *((r1 + 0x30)) = r0;
0x00089f08 cmp r3, 0 |
| if (r3 != 0) {
0x00089f0a bne 0x89fae | goto label_41;
| }
| label_18:
0x00089f0c ldr r3, [sp, 0x20] | r3 = var_20h;
| if (r3 != 0) {
0x00089f0e cbnz r3, 0x89f64 | goto label_42;
| }
| label_17:
0x00089f10 mov r0, sb | r0 = sb;
0x00089f12 str r5, [r1, 0x10] | *((r1 + 0x10)) = r5;
0x00089f14 bl 0x18a68 | fcn_00018a68 (r0, r1);
| }
0x00089f18 ldr r1, [sp, 0x50] | r1 = var_50h;
| if (r1 != 0) {
0x00089f1a cbz r1, 0x89f22 |
0x00089f1c mov r0, sb | r0 = sb;
0x00089f1e bl 0x159dc | fcn_000159dc (r0, r1);
| }
| label_12:
0x00089f22 ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
0x00089f24 cmp r4, 0 |
| if (r4 != 0) {
0x00089f26 bne.w 0x89c9c | goto label_9;
| }
0x00089f2a b 0x89ce4 | goto label_10;
| label_28:
0x00089f2c ldr.w r3, [sl, 0x74] | r3 = *((sl + 0x74));
0x00089f30 cmp r3, 0 |
| if (r3 != 0) {
0x00089f32 bne.w 0x89cc2 | goto label_11;
| }
0x00089f36 ldrb.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x00089f3a cmp r3, 0 |
| if (r3 != 0) {
0x00089f3c bne.w 0x89cc2 | goto label_11;
| }
0x00089f40 b 0x89f22 | goto label_12;
| label_31:
0x00089f42 ldr.w r3, [sl, 0x74] | r3 = *((sl + 0x74));
0x00089f46 cmp r3, 0 |
| if (r3 == 0) {
0x00089f48 beq 0x89fcc | goto label_43;
| }
| label_19:
0x00089f4a mov r0, sl | r0 = sl;
0x00089f4c bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x00089f50 mov r8, r0 | r8 = r0;
0x00089f52 b 0x89d1c | goto label_13;
| label_39:
0x00089f54 ldrb r2, [r4, 0x19] | r2 = *((r4 + 0x19));
0x00089f56 cmp r2, 8 |
| if (r2 != 8) {
0x00089f58 bne 0x89e66 | goto label_14;
| }
0x00089f5a b 0x89e8a | goto label_15;
| label_40:
0x00089f5c ldrb r3, [r4, 0x1a] | r3 = *((r4 + 0x1a));
0x00089f5e cmp r3, 8 |
| if (r3 != 8) {
0x00089f60 bne 0x89e6c | goto label_16;
| }
0x00089f62 b 0x89e8a | goto label_15;
| label_42:
0x00089f64 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00089f66 cmp r6, 0 |
0x00089f68 ite eq |
| if (r6 != 0) {
0x00089f6a moveq r2, r4 | r2 = r4;
| }
| if (r6 == 0) {
0x00089f6c addne r2, r4, 1 | r2 = r4 + 1;
| }
0x00089f6e ldrb r2, [r2, 0x19] | r2 = *((r2 + 0x19));
0x00089f70 mov r0, sl | r0 = sl;
0x00089f72 str r4, [sp] | *(sp) = r4;
0x00089f74 str r3, [sp, 4] | var_144h = r3;
0x00089f76 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00089f78 str r2, [sp, 0x1c] | var_1ch = r2;
0x00089f7a mov r2, fp | r2 = fp;
0x00089f7c str r1, [sp, 0x24] | var_24h = r1;
0x00089f7e str r3, [sp, 8] | var_8h = r3;
0x00089f80 movs r3, 1 | r3 = 1;
0x00089f82 str r3, [sp, 0xc] | var_ch = r3;
0x00089f84 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00089f86 bl 0x6eebc | fcn_0006eebc (r0, r1, r2, r3, r4, r5, r6);
0x00089f8a ldrb r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00089f8c ldr r1, [sp, 0x24] | r1 = var_24h;
0x00089f8e cmp r3, 0 |
| if (r3 != 0) {
0x00089f90 bne 0x89f10 | goto label_17;
| }
0x00089f92 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00089f94 and r3, r2, 0xfd | r3 = r2 & 0xfd;
0x00089f98 cmp r3, 8 |
| if (r3 == 8) {
0x00089f9a beq 0x89f10 | goto label_17;
| }
0x00089f9c ldr.w r3, [sl, 0x74] | r3 = *((sl + 0x74));
0x00089fa0 mov.w r2, 1 | r2 = 1;
0x00089fa4 cmp r3, 0 |
0x00089fa6 it eq |
| if (r3 != 0) {
0x00089fa8 moveq r3, sl | r3 = sl;
| }
0x00089faa strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
0x00089fac b 0x89f10 | goto label_17;
| label_41:
0x00089fae str r3, [sp, 8] | var_8h = r3;
0x00089fb0 mov r2, fp | r2 = fp;
0x00089fb2 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00089fb4 mov r0, sl | r0 = sl;
0x00089fb6 str r4, [sp] | *(sp) = r4;
0x00089fb8 str r1, [sp, 0x1c] | var_1ch = r1;
0x00089fba str r3, [sp, 4] | var_144h = r3;
0x00089fbc mov.w r3, -1 | r3 = -1;
0x00089fc0 str r3, [sp, 0xc] | var_ch = r3;
0x00089fc2 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00089fc4 bl 0x6eebc | fcn_0006eebc (r0, r1, r2, r3, r4, r5, r6);
0x00089fc8 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00089fca b 0x89f0c | goto label_18;
| label_43:
0x00089fcc ldr.w r3, [sl] | r3 = *(sl);
0x00089fd0 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00089fd2 lsls r2, r3, 0x1c | r2 = r3 << 0x1c;
0x00089fd4 itt pl |
| if (r2 < r3) {
0x00089fd6 movpl r3, 1 | r3 = 1;
| }
| if (r2 < r3) {
0x00089fd8 strbpl r3, [sl, 0x17] | *((sl + 0x17)) = r3;
| }
0x00089fdc b 0x89f4a | goto label_19;
| label_20:
0x00089fde movs r3, 0 | r3 = 0;
0x00089fe0 mov.w r4, 0x8000 | r4 = fcn.00008000;
0x00089fe4 movt r3, 0xfff8 | r3 = (r3 & 0xFFFF) | 0xfff80000;
0x00089fe8 sub.w r1, r1, 0x80000 | r1 -= 0x80000;
0x00089fec movt r4, 0xffff | r4 = (r4 & 0xFFFF) | 0xffff0000;
0x00089ff0 str r3, [sp, 0x38] | var_38h_2 = r3;
0x00089ff2 b 0x89bd2 | goto label_6;
| label_30:
0x00089ff4 blx 0x7e8c | fcn_00007e8c ();
0x00089ff8 asrs r0, r2 | r0 >>= r2;
0x00089ffa movs r4, r0 | r4 = r0;
0x00089ffc lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00089ffe movs r0, r0 |
0x0008a000 subs r7, 0xa8 | r7 -= 0xa8;
0x0008a002 movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x8a004 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0008a004 () | void fcn_0008a004 (int16_t arg_1h, int16_t arg_140h, int16_t arg_144h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_2;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_c8h;
| int16_t var_cch;
| int16_t var_d0h;
| int16_t var_d4h;
| int32_t var_8h_3;
| int32_t var_8h_4;
| int32_t var_10h;
| int16_t var_e4h;
| int16_t var_e8h;
| int16_t var_ech;
| int16_t var_f0h;
| int16_t var_f4h;
| int32_t var_f8h;
| int32_t var_f8h_2;
| int16_t var_100h;
| int16_t var_104h;
| int16_t var_108h;
| int16_t var_10ch;
| int16_t var_110h;
| int16_t var_114h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0008a004 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0008a008 sub sp, 0x11c |
0x0008a00a str r2, [sp, 0x28] | var_28h = r2;
0x0008a00c ldr.w r2, [pc, 0xad4] | r2 = *(0x0008aae4);
0x0008a010 str r3, [sp, 0x48] | var_48h = r3;
0x0008a012 ldr.w r3, [pc, 0xad4] |
0x0008a016 add r2, pc | r2 += pc;
0x0008a018 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0008a01a ldr r2, [r0, 0x24] | r2 = *(arg_140hx24);
0x0008a01c ldr r3, [r3] | r3 = *(0x8aaea);
0x0008a01e str r3, [sp, 0x114] | var_114h = r3;
0x0008a020 mov.w r3, 0 | r3 = 0;
0x0008a024 movs r3, 0 | r3 = 0;
0x0008a026 str r3, [sp, 0xcc] | var_cch = r3;
0x0008a028 strd r3, r3, [sp, 0xc4] | __asm ("strd r3, r3, [var_c8h]");
0x0008a02c ldr r3, [sp, 0x144] | r3 = *(arg_144h);
0x0008a02e str r2, [sp, 0x34] | var_34h = r2;
0x0008a030 str r1, [sp, 0x38] | var_38h = r1;
0x0008a032 str r3, [sp, 0x54] | var_54h = r3;
0x0008a034 ldr r3, [r0] | r3 = *(r0);
0x0008a036 str r3, [sp, 0x2c] | var_2ch = r3;
| if (r2 == 0) {
0x0008a038 cbnz r2, 0x8a042 |
0x0008a03a ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008a03e str r3, [sp, 0x58] | var_58h = r3;
| if (r3 == 0) {
0x0008a040 cbz r3, 0x8a084 | goto label_81;
| }
| }
| label_0:
0x0008a042 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x0008a044 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008a046 mov r0, r4 | r0 = r4;
0x0008a048 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x0008a04c ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r3 != 0) {
0x0008a04e cbz r3, 0x8a058 |
0x0008a050 mov r1, r3 | r1 = r3;
0x0008a052 mov r0, r4 | r0 = r4;
0x0008a054 bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x0008a058 ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x0008a05a cbz r3, 0x8a064 |
0x0008a05c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008a05e mov r1, r3 | r1 = r3;
0x0008a060 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x0008a064 ldr.w r2, [pc, 0xa84] |
0x0008a068 ldr.w r3, [pc, 0xa7c] | r3 = *(0x8aae8);
0x0008a06c add r2, pc | r2 = 0x114b5c;
0x0008a06e ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008a070 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008a072 ldr r3, [sp, 0x114] | r3 = var_114h;
0x0008a074 eors r2, r3 | r2 ^= r3;
0x0008a076 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0008a07a bne.w 0x8abcc | goto label_82;
| }
0x0008a07e add sp, 0x11c |
0x0008a080 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_81:
0x0008a084 mov r5, r0 | r5 = r0;
0x0008a086 bl 0x89738 | r0 = fcn_00089738 (r0, r1);
0x0008a08a mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x0008a08c cbz r0, 0x8a0e4 | goto label_1;
| }
0x0008a08e ldr r1, [r0, 0x48] | r1 = *((r0 + 0x48));
0x0008a090 ldr r3, [r5] | r3 = *(r5);
0x0008a092 cmp r1, 0 |
| if (r1 == 0) {
0x0008a094 beq.w 0x8abf4 | goto label_83;
| }
0x0008a098 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0008a09a ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0008a09c cmp r1, r2 |
| if (r1 == r2) {
0x0008a09e beq.w 0x8a4ee | goto label_84;
| }
0x0008a0a2 ldr r2, [sp, 0x58] | r2 = var_58h;
| do {
0x0008a0a4 ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x0008a0a6 adds r3, 0x10 | r3 += 0x10;
0x0008a0a8 adds r2, 1 | r2++;
0x0008a0aa cmp r1, r0 |
0x0008a0ac bne 0x8a0a4 |
| } while (r1 != r0);
0x0008a0ae str r2, [sp, 0x64] | var_64h = r2;
| label_16:
0x0008a0b0 ldr r4, [sp, 0x28] | r4 = var_28h;
0x0008a0b2 add r3, sp, 0xc0 | r3 += var_c0h;
0x0008a0b4 movs r2, 0x80 | r2 = 0x80;
0x0008a0b6 mov r1, sb | r1 = sb;
0x0008a0b8 str r3, [sp] | *(sp) = r3;
0x0008a0ba mov r0, r5 | r0 = r5;
0x0008a0bc mov r3, r4 | r3 = r4;
0x0008a0be bl 0x26008 | fcn_00026008 (r0, r1, r2, r3);
0x0008a0c2 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0008a0c4 mov r1, sb | r1 = sb;
0x0008a0c6 str r0, [sp, 0x8c] | var_8ch = r0;
0x0008a0c8 mov r0, r5 | r0 = r5;
0x0008a0ca ldr r3, [r2] | r3 = *(r2);
0x0008a0cc ldr.w r2, [sb, 0xc] | r2 = *((sb + 0xc));
0x0008a0d0 cmp r3, 1 |
0x0008a0d2 it gt |
| if (r3 <= 1) {
0x0008a0d4 movgt r3, r4 | r3 = r4;
| }
0x0008a0d6 str r2, [sp, 0x5c] | var_5ch = r2;
0x0008a0d8 itt gt |
| if (r3 <= 1) {
0x0008a0da ldrgt r3, [r3] | r3 = *(r3);
| }
| if (r3 <= 1) {
0x0008a0dc strgt r3, [sp, 0x34] | var_34h = r3;
| }
0x0008a0de bl 0x70e88 | r0 = fcn_00070e88 (r0, r1);
| if (r0 == 0) {
0x0008a0e2 cbz r0, 0x8a0f6 | goto label_85;
| }
| label_1:
0x0008a0e4 ldr r3, [sp, 0xcc] | r3 = var_cch;
0x0008a0e6 cmp r3, 0 |
| if (r3 == 0) {
0x0008a0e8 beq 0x8a042 | goto label_0;
| }
0x0008a0ea ldr r2, [sp, 0xc8] | r2 = var_c8h;
0x0008a0ec str.w r2, [r3, 0xf0] | __asm ("str.w r2, [r3, 0xf0]");
0x0008a0f0 movs r3, 0 | r3 = 0;
0x0008a0f2 str r3, [sp, 0xcc] | var_cch = r3;
0x0008a0f4 b 0x8a042 | goto label_0;
| label_85:
0x0008a0f6 ldr r2, [sp, 0xc0] | r2 = var_c0h;
0x0008a0f8 mov r1, sb | r1 = sb;
0x0008a0fa mov r0, r5 | r0 = r5;
0x0008a0fc bl 0x263a0 | fcn_000263a0 (r0, r1, r2);
0x0008a100 str r0, [sp, 0x6c] | var_6ch = r0;
0x0008a102 cmp r0, 0 |
| if (r0 != 0) {
0x0008a104 bne 0x8a0e4 | goto label_1;
| }
0x0008a106 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0008a108 ldr.w r6, [sb, 0x24] | r6 = *((sb + 0x24));
0x0008a10c mov r2, r3 | r2 = r3;
0x0008a10e str r3, [sp, 0x7c] | var_7ch = r3;
0x0008a110 ands r6, r6, 0x80 | r6 &= 0x80;
0x0008a114 add.w r2, r2, 1 | r2++;
0x0008a118 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0008a11c str r2, [sp, 0x80] | var_80h = r2;
0x0008a11e str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
| if (r6 != r6) {
0x0008a120 bne.w 0x8a44a | goto label_86;
| }
0x0008a124 cmp r3, 0 |
| if (r3 == 0) {
0x0008a126 beq.w 0x8a508 | goto label_87;
| }
0x0008a12a ldr r2, [sp, 0x6c] | r2 = var_6ch;
| label_6:
0x0008a12c str r2, [sp, 0x40] | var_40h = r2;
0x0008a12e ldrd r4, r2, [sp, 0x7c] | __asm ("ldrd r4, r2, [var_7ch]");
0x0008a132 ldr r7, [sp, 0x40] | r7 = var_40h;
0x0008a134 mov r0, r4 | r0 = r4;
| do {
0x0008a136 cmp r7, r3 |
0x0008a138 it eq |
| if (r7 != r3) {
0x0008a13a moveq r0, r2 | r0 = r2;
| }
0x0008a13c ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0008a13e adds r2, 1 | r2++;
0x0008a140 subs r1, r2, r4 | r1 = r2 - r4;
0x0008a142 subs r6, r1, 1 | r6 = r1 - 1;
0x0008a144 cmp r3, 0 |
0x0008a146 bne 0x8a136 |
| } while (r3 != 0);
0x0008a148 adds r1, 1 | r1++;
0x0008a14a str r0, [sp, 0x30] | var_30h = r0;
0x0008a14c str r6, [sp, 0xac] | var_ach = r6;
0x0008a14e str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
| label_19:
0x0008a150 ldr r3, [sp, 0x54] | r3 = var_54h;
| if (r3 != 0) {
0x0008a152 cbz r3, 0x8a160 |
0x0008a154 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x0008a156 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x0008a158 str r2, [sp, 0x30] | var_30h = r2;
0x0008a15a str r3, [sp, 0x80] | var_80h = r3;
0x0008a15c ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008a15e str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
| }
0x0008a160 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008a162 movs r4, 0 | r4 = 0;
0x0008a164 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008a166 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008a168 str r2, [r3, 0x30] | *((r3 + 0x30)) = r2;
0x0008a16a ldr r3, [sp, 0xac] | r3 = var_ach;
0x0008a16c ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008a170 add r2, r3 | r2 += r3;
0x0008a172 mov r3, r4 | r3 = r4;
0x0008a174 adds r2, 1 | r2++;
0x0008a176 add.w r2, r1, r2, lsl 2 | r2 = r1 + (r2 << 2);
0x0008a17a bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0008a17e str r0, [sp, 0x3c] | var_3ch = r0;
0x0008a180 cmp r0, 0 |
| if (r0 == 0) {
0x0008a182 beq 0x8a0e4 | goto label_1;
| }
0x0008a184 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0008a186 adds r2, r6, 1 | r2 = r6 + 1;
0x0008a188 ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
0x0008a18c mov r6, r2 | r6 = r2;
0x0008a18e str r2, [sp, 0x68] | var_68h = r2;
0x0008a190 add.w r3, r1, r3, lsl 2 | r3 = r1 + (r3 << 2);
0x0008a194 movs r1, 1 | r1 = 1;
0x0008a196 str r3, [sp, 0x84] | var_84h = r3;
0x0008a198 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0008a19c mov r7, r3 | r7 = r3;
0x0008a19e mov r0, r3 | r0 = r3;
0x0008a1a0 str r3, [sp, 0x98] | var_98h = r3;
0x0008a1a2 blx 0x8264 | fcn_00008264 ();
0x0008a1a6 strb r4, [r7, r6] | *((r7 + r6)) = r4;
0x0008a1a8 ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008a1ac cmp r2, 0 |
| if (r2 > 0) {
0x0008a1ae ble 0x8a1ba |
0x0008a1b0 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0008a1b2 lsls r2, r2, 2 | r2 <<= 2;
0x0008a1b4 movs r1, 0xff | r1 = 0xff;
0x0008a1b6 blx 0x8264 | fcn_00008264 ();
| }
0x0008a1ba ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008a1bc ldr.w r8, [r5, 8] | r8 = *((r5 + 8));
0x0008a1c0 str r5, [sp, 0xec] | var_ech = r5;
0x0008a1c2 str r3, [sp, 0xf0] | var_f0h = r3;
0x0008a1c4 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008a1c6 str r3, [sp, 0xf4] | var_f4h = r3;
0x0008a1c8 movs r3, 0 | r3 = 0;
0x0008a1ca strd r3, r3, [sp, 0xf8] | __asm ("strd r3, r3, [var_f8h]");
0x0008a1ce str r3, [sp, 0x100] | var_100h = r3;
0x0008a1d0 str r3, [sp, 0x108] | var_108h = r3;
0x0008a1d2 mov.w r3, 0x200 | r3 = 0x200;
0x0008a1d6 str r3, [sp, 0x104] | var_104h = r3;
0x0008a1d8 cmp.w r8, 0 |
| if (r8 == 0) {
0x0008a1dc beq.w 0x8a4f4 | goto label_88;
| }
| label_17:
0x0008a1e0 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008a1e2 ldr r3, [r2] | r3 = *(r2);
0x0008a1e4 cmp r3, 0 |
| if (r3 <= 0) {
0x0008a1e6 ble.w 0x8ab9e | goto label_89;
| }
0x0008a1ea ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008a1ec movs r1, 0 | r1 = 0;
0x0008a1ee ldr.w r4, [pc, 0x900] | r4 = fcn.0002af30;
0x0008a1f2 mov r7, r1 | r7 = r1;
0x0008a1f4 str.w r8, [sp, 0x70] | __asm ("str.w r8, [var_70h]");
0x0008a1f8 str r1, [sp, 0x60] | var_60h = r1;
0x0008a1fa lsls r3, r3, 4 | r3 <<= 4;
0x0008a1fc add r4, pc | r4 += pc;
0x0008a1fe str r1, [sp, 0x50] | var_50h = r1;
0x0008a200 str r3, [sp, 0x4c] | var_4ch = r3;
0x0008a202 mov r3, r2 | r3 = r2;
0x0008a204 mov r8, r3 | r8 = r3;
0x0008a206 mov.w r2, -1 | r2 = -1;
0x0008a20a str r2, [sp, 0xa4] | var_a4h = r2;
0x0008a20c str r5, [sp, 0x44] | var_44h = r5;
| label_3:
0x0008a20e ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008a210 cmp r3, 0 |
| if (r3 == 0) {
0x0008a212 beq.w 0x8a494 | goto label_90;
| }
| label_10:
0x0008a216 ldrsh.w sl, [sb, 0x2a] | sl = *((sb + 0x2a));
0x0008a21a ldr.w r5, [r8, 0xc] | r5 = *((r8 + 0xc));
0x0008a21e cmp.w sl, 0 |
| if (sl <= 0) {
0x0008a222 ble 0x8a25e | goto label_12;
| }
0x0008a224 ldr.w lr, [sb, 4] |
0x0008a228 movs r6, 0 | r6 = 0;
0x0008a22a add.w fp, r5, -1 |
| label_2:
0x0008a22e ldr.w r3, [lr] | r3 = *(lr);
0x0008a232 mov ip, fp |
0x0008a234 subs r0, r3, 1 | r0 = r3 - 1;
| do {
| label_8:
0x0008a236 ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x0008a23a ldrb r1, [ip, 1]! | r1 = *((ip += 1));
0x0008a23e cmp r2, r1 |
| if (r2 == r1) {
0x0008a240 beq.w 0x8a466 | goto label_91;
| }
0x0008a244 add r2, r4 | r2 += r4;
0x0008a246 add r1, r4 | r1 += r4;
0x0008a248 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x0008a24c ldrb.w r1, [r1, 0x140] | r1 = *((r1 + 0x140));
0x0008a250 cmp r2, r1 |
0x0008a252 beq 0x8a236 |
| } while (r2 == r1);
0x0008a254 adds r6, 1 | r6++;
0x0008a256 add.w lr, lr, 0x14 | lr += 0x14;
0x0008a25a cmp r6, sl |
| if (r6 != sl) {
0x0008a25c bne 0x8a22e | goto label_2;
| }
| label_12:
0x0008a25e ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008a260 cmp r3, 0 |
| if (r3 != 0) {
0x0008a262 bne.w 0x8a522 | goto label_92;
| }
0x0008a266 mov r0, r5 | r0 = r5;
0x0008a268 bl 0x1fe40 | r0 = fcn_0001fe40 (r0);
0x0008a26c cmp r0, 0 |
| if (r0 == 0) {
0x0008a26e beq.w 0x8a522 | goto label_92;
| }
0x0008a272 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x0008a276 mov.w r6, -1 | r6 = -1;
0x0008a27a ldr.w r2, [sb] | r2 = *(sb);
0x0008a27e movs r1, 1 | r1 = 1;
0x0008a280 str r7, [sp, 0xa4] | var_a4h = r7;
0x0008a282 str r3, [sp, 0x50] | var_50h = r3;
0x0008a284 ldr.w r3, [pc, 0x86c] | r3 = *(0x0008aaf4);
0x0008a288 str r1, [sp, 0x58] | var_58h = r1;
0x0008a28a add r3, pc | r3 += pc;
| label_9:
0x0008a28c ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0008a28e ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x0008a290 ldr r1, [r1, 0x10] | r1 = *((r1 + 0x10));
0x0008a292 ldr r1, [r1, r0] | r1 = *((r1 + r0));
0x0008a294 ldr r0, [sp, 0x44] | r0 = var_44h;
0x0008a296 str r1, [sp] | *(sp) = r1;
0x0008a298 movs r1, 0x17 | r1 = 0x17;
0x0008a29a bl 0x25800 | r0 = fcn_00025800 (r0);
0x0008a29e cmp r0, 1 |
| if (r0 == 1) {
0x0008a2a0 beq.w 0x8a4a4 | goto label_18;
| }
0x0008a2a4 cmp r0, 2 |
0x0008a2a6 add.w r7, r7, 1 | r7++;
0x0008a2aa itt eq |
| if (r0 != 2) {
0x0008a2ac ldreq r2, [sp, 0x3c] | r2 = var_3ch;
| }
| if (r0 != 2) {
0x0008a2ae moveq r3, -1 | r3 = -1;
| }
0x0008a2b2 add.w r8, r8, 0x10 | r8 += 0x10;
0x0008a2b6 it eq |
| if (r0 != 2) {
0x0008a2b8 streq r3, [r2, r6, lsl 2] | offset_0 = r6 << 2;
| *((r2 + offset_0)) = r3;
| }
0x0008a2bc ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008a2be ldr r3, [r3] | r3 = *(r3);
0x0008a2c0 cmp r7, r3 |
| if (r7 < r3) {
0x0008a2c2 blt 0x8a20e | goto label_3;
| }
0x0008a2c4 ldr.w r8, [sp, 0x70] | r8 = var_70h;
0x0008a2c8 ldr r5, [sp, 0x44] | r5 = var_44h;
0x0008a2ca ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008a2cc ldr.w fp, [sp, 0x58] | fp = var_58h;
0x0008a2d0 str r3, [sp, 0x58] | var_58h = r3;
| label_34:
0x0008a2d2 ldr r2, [sp, 0x58] | r2 = var_58h;
0x0008a2d4 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008a2d8 add r2, fp | r2 += fp;
0x0008a2da uxtb r2, r2 | r2 = (int8_t) r2;
0x0008a2dc tst.w r3, 0x60 |
0x0008a2e0 str r2, [sp, 0x74] | var_74h = r2;
| if ((r3 & 0x60) == 0) {
0x0008a2e2 beq 0x8a380 | goto label_93;
| }
0x0008a2e4 ldr.w r3, [pc, 0x810] | r3 = *(0x0008aaf8);
0x0008a2e8 movw sl, 0x869f |
0x0008a2ec ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008a2f0 movt sl, 1 | sl = 0x1869f;
0x0008a2f4 str r5, [sp, 0x44] | var_44h = r5;
0x0008a2f6 add r3, pc | r3 += pc;
0x0008a2f8 str r3, [sp, 0x4c] | var_4ch = r3;
0x0008a2fa mov r3, r8 | r3 = r8;
| label_4:
0x0008a2fc cmp r2, 0 |
| if (r2 <= 0) {
0x0008a2fe ble 0x8a37c | goto label_94;
| }
0x0008a300 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0008a302 mov.w r8, 0 | r8 = 0;
0x0008a306 mov r4, r8 | r4 = r8;
0x0008a308 mov r6, r8 | r6 = r8;
0x0008a30a add r5, sp, 0xd0 | r5 += var_d0h;
0x0008a30c subs r7, r1, 4 | r7 = r1 - 4;
| do {
0x0008a30e ldr r1, [r7, 4]! | r1 = *((r7 += 4));
0x0008a312 cmp r1, 0 |
| if (r1 < 0) {
0x0008a314 bge 0x8a36e |
0x0008a316 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x0008a31a add r1, r6 | r1 += r6;
0x0008a31c ldrh r0, [r1, 0x10] | r0 = *((r1 + 0x10));
0x0008a31e and r0, r0, 0x60 | r0 &= 0x60;
| if (r0 == 0) {
0x0008a322 cbz r0, 0x8a36e | goto label_14;
| }
0x0008a324 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008a326 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x0008a328 str r2, [sp, 0xd4] | var_d4h = r2;
0x0008a32a ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008a32c str r2, [sp, 0xe8] | var_e8h = r2;
0x0008a32e movs r2, 0 | r2 = 0;
0x0008a330 str r2, [r5] | *(r5) = r2;
0x0008a332 strd r2, r2, [r5, 8] | __asm ("strd r2, r2, [var_8h_3]");
0x0008a336 strd r2, r2, [r5, 0x10] | __asm ("strd r2, r2, [var_e4h]");
0x0008a33a cmp r1, 0 |
| if (r1 == 0) {
0x0008a33c beq.w 0x8a4e4 | goto label_95;
| }
0x0008a340 mov r0, r5 | r0 = r5;
0x0008a342 str r3, [sp, 0x60] | var_60h = r3;
0x0008a344 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x0008a348 ldrh.w r2, [sp, 0xe4] | r2 = var_e4h;
0x0008a34c ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008a34e cmp.w fp, 0 |
| if (fp == 0) {
0x0008a352 bne 0x8a35c |
| label_15:
0x0008a354 bic r2, r2, 2 | r2 = BIT_MASK (r2, 2);
0x0008a358 lsls r2, r2, 0x10 | r2 <<= 0x10;
0x0008a35a lsrs r2, r2, 0x10 | r2 >>= 0x10;
| }
0x0008a35c cmp r2, 0 |
| if (r2 == 0) {
0x0008a35e beq.w 0x8a4de | goto label_96;
| }
0x0008a362 ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008a366 mov.w r8, 1 | r8 = 1;
0x0008a36a str.w sl, [r7] | __asm ("str.w sl, [r7]");
| }
| label_14:
0x0008a36e adds r4, 1 | r4++;
0x0008a370 adds r6, 0x14 | r6 += 0x14;
0x0008a372 cmp r4, r2 |
0x0008a374 blt 0x8a30e |
| } while (r4 < r2);
0x0008a376 cmp.w r8, 0 |
| if (r8 != 0) {
0x0008a37a bne 0x8a2fc | goto label_4;
| }
| label_94:
0x0008a37c ldr r5, [sp, 0x44] | r5 = var_44h;
0x0008a37e mov r8, r3 | r8 = r3;
| label_93:
0x0008a380 ldr r3, [r5] | r3 = *(r5);
0x0008a382 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0008a384 ldr r1, [r3, 0x20] | r1 = *((r3 + 0x20));
0x0008a386 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008a38a subs r3, 0 |
0x0008a38c it ne |
| if (r3 == 0) {
0x0008a38e movne r3, -1 | r3 = -1;
| }
0x0008a392 lsls r1, r1, 0x11 | r1 <<= 0x11;
0x0008a394 str r3, [r0, 0x40] | *((r0 + 0x40)) = r3;
0x0008a396 str r3, [r0, 0x44] | *((r0 + 0x44)) = r3;
| if (r1 >= r1) {
0x0008a398 bpl.w 0x8a53a | goto label_35;
| }
0x0008a39c ldr.w r6, [sb, 0x10] | r6 = *((sb + 0x10));
0x0008a3a0 ldr.w r1, [sb] | r1 = *(sb);
0x0008a3a4 cmp r6, 0 |
| if (r6 == 0) {
0x0008a3a6 beq.w 0x8abb0 | goto label_97;
| }
0x0008a3aa ldr r7, [sp, 0x3c] | r7 = var_3ch;
0x0008a3ac movs r4, 0 | r4 = 0;
0x0008a3ae ldr.w sl, [sp, 0x74] | sl = var_74h;
0x0008a3b2 movs r3, 1 | r3 = 1;
0x0008a3b4 str r3, [sp, 0x60] | var_60h = r3;
| label_5:
0x0008a3b6 ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x0008a3b8 cmp r1, 0 |
0x0008a3ba itt gt |
| if (r1 <= 0) {
0x0008a3bc movgt r3, 0 | r3 = 0;
| }
| if (r1 <= 0) {
0x0008a3be addgt r0, r6, 0x24 | r0 = r6 + 0x24;
| }
| if (r1 > 0) {
0x0008a3c2 bgt 0x8a3e6 | goto label_98;
| }
0x0008a3c4 b 0x8a408 | goto label_99;
| do {
0x0008a3c6 ldrsh.w r2, [sb, 0x28] | r2 = *((sb + 0x28));
0x0008a3ca cmp.w sl, 0 |
0x0008a3ce sub.w r2, r2, ip | r2 -= ip;
0x0008a3d2 clz r2, r2 | r2 &= r2;
0x0008a3d6 lsr.w r2, r2, 5 | r2 >>= 5;
0x0008a3da it eq |
| if (sl != 0) {
0x0008a3dc moveq r2, 0 | r2 = 0;
| }
| if (r2 != 0) {
0x0008a3de cbnz r2, 0x8a3f2 | goto label_100;
| }
0x0008a3e0 adds r3, 1 | r3++;
0x0008a3e2 cmp r3, r1 |
| if (r3 == r1) {
0x0008a3e4 beq 0x8a408 | goto label_99;
| }
| label_98:
0x0008a3e6 ldr.w ip, [r0, r3, lsl 3] | offset_1 = r3 << 3;
| ip = *((r0 + offset_1));
0x0008a3ea ldr.w r2, [r7, ip, lsl 2] | offset_2 = ip << 2;
| r2 = *((r7 + offset_2));
0x0008a3ee cmp r2, 0 |
0x0008a3f0 blt 0x8a3c6 |
| } while (r2 < 0);
| label_100:
0x0008a3f2 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x0008a3f4 movs r4, 1 | r4 = 1;
0x0008a3f6 ldr.w r0, [sb] | r0 = *(sb);
0x0008a3fa blx 0x831c | fcn_0000831c ();
0x0008a3fe ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008a400 cmp r0, 0 |
0x0008a402 it eq |
| if (r0 != 0) {
0x0008a404 moveq r3, 2 | r3 = 2;
| }
0x0008a406 str r3, [sp, 0x60] | var_60h = r3;
| label_99:
0x0008a408 ldr r6, [r6, 4] | r6 = *((r6 + 4));
0x0008a40a cmp r6, 0 |
| if (r6 != 0) {
0x0008a40c bne 0x8a3b6 | goto label_5;
| }
0x0008a40e ldr.w r0, [sb, 0x48] | r0 = *((sb + 0x48));
0x0008a412 mov r2, r6 | r2 = r6;
0x0008a414 ldr.w r1, [sb] | r1 = *(sb);
0x0008a418 adds r0, 0x38 | r0 += 0x38;
0x0008a41a bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x0008a41e ldr r7, [r0, 8] | r7 = *((r0 + 8));
| if (r7 == 0) {
0x0008a420 cbz r7, 0x8a440 | goto label_101;
| }
| do {
| label_36:
0x0008a422 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008a424 mov r1, r7 | r1 = r7;
0x0008a426 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008a428 mov r0, sb | r0 = sb;
0x0008a42a bl 0x1635c | r0 = fcn_0001635c (r0, r1, r2, r3);
| if (r0 != 0) {
0x0008a42e cbz r0, 0x8a43a |
0x0008a430 ldrb r3, [r7, 0x1a] | r3 = *((r7 + 0x1a));
0x0008a432 cmp r3, 0 |
| if (r3 != 0) {
0x0008a434 bne.w 0x8ac02 | goto label_102;
| }
0x0008a438 movs r4, 1 | r4 = 1;
| }
0x0008a43a ldr r7, [r7, 0xc] | r7 = *((r7 + 0xc));
0x0008a43c cmp r7, 0 |
0x0008a43e bne 0x8a422 |
| } while (r7 != 0);
| label_101:
0x0008a440 cmp r4, 0 |
| if (r4 == 0) {
0x0008a442 beq 0x8a53a | goto label_35;
| }
0x0008a444 movs r3, 1 | r3 = 1;
0x0008a446 str r3, [sp, 0xb4] | var_b4h = r3;
0x0008a448 b 0x8a540 | goto label_37;
| label_86:
0x0008a44a mov r2, r3 | r2 = r3;
| if (r3 != 0) {
0x0008a44c cbnz r3, 0x8a458 | goto label_103;
| }
0x0008a44e b 0x8abd0 | goto label_104;
| label_7:
0x0008a450 ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x0008a452 cmp r2, 0 |
| if (r2 == 0) {
0x0008a454 beq.w 0x8a12c | goto label_6;
| }
| label_103:
0x0008a458 ldrb.w r1, [r2, 0x37] | r1 = *((r2 + 0x37));
0x0008a45c and r1, r1, 3 | r1 &= 3;
0x0008a460 cmp r1, 2 |
| if (r1 != 2) {
0x0008a462 bne 0x8a450 | goto label_7;
| }
0x0008a464 b 0x8a12c | goto label_6;
| label_91:
0x0008a466 cmp r2, 0 |
| if (r2 != 0) {
0x0008a468 bne.w 0x8a236 | goto label_8;
| }
0x0008a46c ldrsh.w r2, [sb, 0x28] | r2 = *((sb + 0x28));
0x0008a470 cmp r2, r6 |
| if (r2 == r6) {
0x0008a472 beq 0x8a4d0 | goto label_105;
| }
0x0008a474 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008a476 ldrh.w r2, [lr, 0x10] | r2 = *((lr + 0x10));
| if (r1 == 0) {
0x0008a47a cbz r1, 0x8a4bc | goto label_106;
| }
0x0008a47c lsls r0, r2, 0x1f | r0 = r2 << 0x1f;
| if (r0 >= r2) {
0x0008a47e bpl 0x8a4bc | goto label_106;
| }
0x0008a480 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008a482 cmp sl, r6 |
0x0008a484 str.w r7, [r2, r6, lsl 2] | __asm ("str.w r7, [r2, r6, lsl 2]");
| if (sl <= r6) {
0x0008a488 ble 0x8a522 | goto label_92;
| }
0x0008a48a movs r2, 1 | r2 = 1;
0x0008a48c str r2, [sp, 0x60] | var_60h = r2;
| label_11:
0x0008a48e ldr.w r2, [sb] | r2 = *(sb);
0x0008a492 b 0x8a28c | goto label_9;
| label_90:
0x0008a494 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x0008a498 add r0, sp, 0xec | r0 += var_ech;
0x0008a49a bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x0008a49e cmp r0, 0 |
| if (r0 == 0) {
0x0008a4a0 beq.w 0x8a216 | goto label_10;
| }
| label_18:
0x0008a4a4 ldr r3, [sp, 0xcc] | r3 = var_cch;
| if (r3 != 0) {
0x0008a4a6 cbz r3, 0x8a4b2 |
0x0008a4a8 ldr r2, [sp, 0xc8] | r2 = var_c8h;
0x0008a4aa str.w r2, [r3, 0xf0] | __asm ("str.w r2, [r3, 0xf0]");
0x0008a4ae movs r3, 0 | r3 = 0;
0x0008a4b0 str r3, [sp, 0xcc] | var_cch = r3;
| }
0x0008a4b2 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0008a4b4 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008a4b6 bl 0x159dc | fcn_000159dc (r0, r1);
0x0008a4ba b 0x8a042 | goto label_0;
| label_106:
0x0008a4bc tst.w r2, 0x60 |
| if ((r2 & 0x60) != 0) {
0x0008a4c0 bne.w 0x8abe2 | goto label_107;
| }
| label_13:
0x0008a4c4 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008a4c6 cmp sl, r6 |
0x0008a4c8 str.w r7, [r2, r6, lsl 2] | __asm ("str.w r7, [r2, r6, lsl 2]");
| if (sl > r6) {
0x0008a4cc bgt 0x8a48e | goto label_11;
| }
0x0008a4ce b 0x8a25e | goto label_12;
| label_105:
0x0008a4d0 ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x0008a4d4 str r7, [sp, 0xa4] | var_a4h = r7;
0x0008a4d6 str r2, [sp, 0x50] | var_50h = r2;
0x0008a4d8 movs r2, 1 | r2 = 1;
0x0008a4da str r2, [sp, 0x58] | var_58h = r2;
0x0008a4dc b 0x8a4c4 | goto label_13;
| do {
| label_96:
0x0008a4de ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008a4e2 b 0x8a36e | goto label_14;
| label_95:
0x0008a4e4 cmp.w fp, 0 |
0x0008a4e8 bne 0x8a4de |
| } while (fp != 0);
0x0008a4ea mov r2, fp | r2 = fp;
0x0008a4ec b 0x8a354 | goto label_15;
| label_84:
0x0008a4ee ldr r3, [sp, 0x58] | r3 = var_58h;
0x0008a4f0 str r3, [sp, 0x64] | var_64h = r3;
0x0008a4f2 b 0x8a0b0 | goto label_16;
| label_88:
0x0008a4f4 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
| if (r3 == 0) {
0x0008a4f6 cbz r3, 0x8a514 | goto label_108;
| }
| label_20:
0x0008a4f8 mov r0, r5 | r0 = r5;
0x0008a4fa bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0008a4fe mov r8, r0 | r8 = r0;
0x0008a500 cmp r0, 0 |
| if (r0 != 0) {
0x0008a502 bne.w 0x8a1e0 | goto label_17;
| }
0x0008a506 b 0x8a4a4 | goto label_18;
| label_87:
0x0008a508 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008a50a movs r1, 2 | r1 = 2;
0x0008a50c str r6, [sp, 0x40] | var_40h = r6;
0x0008a50e str r6, [sp, 0xac] | var_ach = r6;
0x0008a510 str r3, [sp, 0x30] | var_30h = r3;
0x0008a512 b 0x8a150 | goto label_19;
| label_108:
0x0008a514 ldr r3, [r5] | r3 = *(r5);
0x0008a516 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0008a518 lsls r4, r3, 0x1c | r4 = r3 << 0x1c;
0x0008a51a itt pl |
| if (r4 < r3) {
0x0008a51c movpl r3, 1 | r3 = 1;
| }
| if (r4 < r3) {
0x0008a51e strbpl r3, [r5, 0x17] | *((r5 + 0x17)) = r3;
| }
0x0008a520 b 0x8a4f8 | goto label_20;
| label_92:
0x0008a522 mov r3, r5 | r3 = r5;
0x0008a524 ldr.w r1, [pc, 0x5d4] |
0x0008a528 ldr r5, [sp, 0x44] | r5 = var_44h;
0x0008a52a mov r2, r3 | r2 = r3;
0x0008a52c add r1, pc | r1 = 0x11502c;
0x0008a52e mov r0, r5 | r0 = r5;
0x0008a530 bl 0x25778 | fcn_00025778 (r0);
0x0008a534 movs r3, 1 | r3 = 1;
0x0008a536 strb r3, [r5, 0x11] | *((r5 + 0x11)) = r3;
0x0008a538 b 0x8a4a4 | goto label_18;
| label_35:
0x0008a53a movs r3, 0 | r3 = 0;
0x0008a53c str r3, [sp, 0x60] | var_60h = r3;
0x0008a53e str r3, [sp, 0xb4] | var_b4h = r3;
| label_37:
0x0008a540 ldr r3, [sp, 0x140] | r3 = *(arg_140h);
0x0008a542 ldr.w sl, [sb, 8] | sl = *((sb + 8));
0x0008a546 cmp r3, 5 |
0x0008a548 itt eq |
| if (r3 != 5) {
0x0008a54a moveq r3, 1 | r3 = 1;
| }
| if (r3 != 5) {
0x0008a54c streq r3, [sp, 0xc4] | var_c4h = r3;
| }
0x0008a54e cmp.w sl, 0 |
| if (sl == 0) {
0x0008a552 beq.w 0x8ab90 | goto label_109;
| }
0x0008a556 ldr.w r3, [pc, 0x5a8] | r3 = *(0x0008ab00);
0x0008a55a mov r4, sl | r4 = sl;
0x0008a55c ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008a55e mov sl, fp | sl = fp;
0x0008a560 mov fp, r8 |
0x0008a562 mov r8, r5 | r8 = r5;
0x0008a564 add r3, pc | r3 += pc;
0x0008a566 str r3, [sp, 0x78] | var_78h = r3;
0x0008a568 ldr.w r3, [pc, 0x598] | r3 = *(0x0008ab04);
0x0008a56c add r3, pc | r3 += pc;
0x0008a56e str r3, [sp, 0x88] | var_88h = r3;
0x0008a570 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008a572 cmp r2, 1 |
0x0008a574 it le |
| if (r2 <= 1) {
0x0008a576 cmple r3, 0 | __asm ("cmple r3, 0");
| }
0x0008a578 ite ne |
| if (r2 == 1) {
0x0008a57a movne r3, 1 | r3 = 1;
| }
| if (r2 != 1) {
0x0008a57c moveq r3, 0 | r3 = 0;
| }
0x0008a57e str r3, [sp, 0x70] | var_70h = r3;
0x0008a580 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0008a582 subs r3, 4 | r3 -= 4;
0x0008a584 str r3, [sp, 0x4c] | var_4ch = r3;
0x0008a586 movs r3, 0 | r3 = 0;
0x0008a588 str r3, [sp, 0x44] | var_44h = r3;
| do {
0x0008a58a ldr r0, [sp, 0x70] | r0 = var_70h;
0x0008a58c ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008a58e cmp r3, r4 |
0x0008a590 it eq |
| if (r3 != r4) {
0x0008a592 orreq r0, r0, 1 | r0 |= 1;
| }
0x0008a596 cmp r0, 0 |
| if (r0 == 0) {
0x0008a598 beq.w 0x8a7b8 | goto label_110;
| }
| label_21:
0x0008a59c ldr.w r1, [r8, 0x2c] | r1 = *((r8 + 0x2c));
0x0008a5a0 ldrh r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x0008a5a2 adds r1, 1 | r1++;
0x0008a5a4 add r0, r1 | r0 += r1;
0x0008a5a6 str.w r0, [r8, 0x2c] | __asm ("str.w r0, [r8, 0x2c]");
| label_24:
0x0008a5aa cmp r1, 0 |
| if (r1 == 0) {
0x0008a5ac beq.w 0x8a814 | goto label_111;
| }
| label_22:
0x0008a5b0 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008a5b2 ldr r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x0008a5b4 str r1, [r3, 4]! | *((r3 += 4)) = r1;
0x0008a5b8 str r3, [sp, 0x4c] | var_4ch = r3;
0x0008a5ba ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008a5bc adds r3, 1 | r3++;
0x0008a5be str r3, [sp, 0x44] | var_44h = r3;
0x0008a5c0 cmp r4, 0 |
0x0008a5c2 bne 0x8a58a |
| } while (r4 != 0);
0x0008a5c4 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0008a5c6 mov r5, r8 | r5 = r8;
0x0008a5c8 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008a5ca mov r8, fp | r8 = fp;
0x0008a5cc mov fp, sl |
0x0008a5ce add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0008a5d2 str r3, [sp, 0xb0] | var_b0h = r3;
| label_32:
0x0008a5d4 ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008a5d6 ldr r2, [sp, 0xb0] | r2 = var_b0h;
0x0008a5d8 adds r3, 1 | r3++;
0x0008a5da str r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x0008a5dc str r3, [r2] | *(r2) = r3;
0x0008a5de ldr r3, [sp, 0xc4] | r3 = var_c4h;
0x0008a5e0 cmp r3, 0 |
| if (r3 != 0) {
0x0008a5e2 bne.w 0x8ab38 | goto label_112;
| }
| label_29:
0x0008a5e6 ldrb r3, [r5, 0x12] | r3 = *((r5 + 0x12));
| if (r3 == 0) {
0x0008a5e8 cbnz r3, 0x8a5f6 |
0x0008a5ea ldrb.w r3, [r8, 0x96] | r3 = *((r8 + 0x96));
0x0008a5ee orr r3, r3, 0x10 | r3 |= 0x10;
0x0008a5f2 strb.w r3, [r8, 0x96] | *((r8 + 0x96)) = r3;
| }
0x0008a5f6 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0008a5f8 mov r0, r5 | r0 = r5;
0x0008a5fa ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008a5fc orrs r3, r2 | r3 |= r2;
0x0008a5fe ldr r2, [sp, 0x64] | r2 = var_64h;
0x0008a600 ite ne |
| if (r3 == r2) {
0x0008a602 movne r6, 1 | r6 = 1;
| }
| if (r3 != r2) {
0x0008a604 moveq r6, 0 | r6 = 0;
| }
0x0008a606 mov r1, r6 | r1 = r6;
0x0008a608 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x0008a60c ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008a610 str r3, [sp, 0x90] | var_90h = r3;
0x0008a612 cmp r3, 0 |
| if (r3 != 0) {
0x0008a614 bne.w 0x8aa92 | goto label_113;
| }
0x0008a618 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0008a61a ldr r1, [r5, 0x2c] | r1 = *((r5 + 0x2c));
0x0008a61c ldr r2, [sp, 0xb0] | r2 = var_b0h;
0x0008a61e and r3, r3, 1 | r3 &= 1;
0x0008a622 orrs r3, r6 | r3 |= r6;
0x0008a624 add.w r0, r1, 1 | r0 = r1 + 1;
0x0008a628 ldr r4, [r2] | r4 = *(r2);
0x0008a62a str r0, [sp, 0x4c] | var_4ch = r0;
0x0008a62c ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008a630 str r0, [r5, 0x2c] | *((r5 + 0x2c)) = r0;
| if (r3 == r6) {
0x0008a632 beq.w 0x8ab28 | goto label_114;
| }
0x0008a636 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008a638 cmp r3, 0 |
0x0008a63a it ne |
| if (r3 == 0) {
0x0008a63c orrne r6, r6, 1 | r6 |= 1;
| }
0x0008a640 adds r3, r1, 2 | r3 = r1 + 2;
0x0008a642 str r3, [sp, 0xa8] | var_a8h = r3;
0x0008a644 adds r3, r0, r2 | r3 = r0 + r2;
0x0008a646 str r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x0008a648 cmp r6, 0 |
| if (r6 == 0) {
0x0008a64a beq.w 0x8ab22 | goto label_115;
| }
| label_33:
0x0008a64e adds r3, 1 | r3++;
0x0008a650 str r3, [sp, 0x68] | var_68h = r3;
| label_28:
0x0008a652 add r2, r3 | r2 += r3;
0x0008a654 adds r3, 1 | r3++;
0x0008a656 str r2, [r5, 0x2c] | *((r5 + 0x2c)) = r2;
0x0008a658 str r3, [sp, 0xa0] | var_a0h = r3;
| label_25:
0x0008a65a ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008a65c cmp r3, 0 |
| if (r3 == 0) {
0x0008a65e beq.w 0x8b8c8 | goto label_116;
| }
0x0008a662 ldr.w r3, [r5, 0xf0] | r3 = *((r5 + 0xf0));
0x0008a666 ldr.w r2, [sb] | r2 = *(sb);
0x0008a66a str r5, [sp, 0xcc] | var_cch = r5;
0x0008a66c str r3, [sp, 0xc8] | var_c8h = r3;
0x0008a66e ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008a670 str.w r2, [r5, 0xf0] | __asm ("str.w r2, [r5, 0xf0]");
0x0008a674 cmp r3, 0 |
| if (r3 == 0) {
0x0008a676 beq.w 0x8ad0e | goto label_117;
| }
0x0008a67a movs r3, 0 | r3 = 0;
0x0008a67c str r3, [sp, 0xb8] | var_b8h = r3;
| label_38:
0x0008a67e ldr r3, [sp, 0x90] | r3 = var_90h;
0x0008a680 cmp r3, 0 |
| if (r3 != 0) {
0x0008a682 bne.w 0x8ad34 | goto label_118;
| }
0x0008a686 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008a688 ldr r2, [r5, 0x38] | r2 = *((r5 + 0x38));
0x0008a68a ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x0008a68c subs r7, r2, 1 | r7 = r2 - 1;
0x0008a68e str r2, [sp, 0xbc] | var_bch = r2;
0x0008a690 str r7, [r5, 0x38] | *((r5 + 0x38)) = r7;
0x0008a692 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x0008a694 bpl 0x8a69e |
0x0008a696 ldr r3, [r5, 0x78] | r3 = *((r5 + 0x78));
0x0008a698 cmp r3, 0 |
| if (r3 == 0) {
0x0008a69a beq.w 0x8aaca | goto label_119;
| }
| }
| label_26:
0x0008a69e ldr r3, [sp, 0x90] | r3 = var_90h;
0x0008a6a0 str r3, [sp, 0x94] | var_94h = r3;
| label_27:
0x0008a6a2 ldr r3, [sp, 0x34] | r3 = var_34h;
| if (r3 == 0) {
0x0008a6a4 cbnz r3, 0x8a6b0 |
0x0008a6a6 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008a6aa lsls r6, r3, 0x18 | r6 = r3 << 0x18;
| if (r6 >= r3) {
0x0008a6ac bpl.w 0x8ae46 | goto label_120;
| }
| }
0x0008a6b0 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008a6b2 cmp r3, 0 |
| if (r3 == 0) {
0x0008a6b4 beq.w 0x8b7a2 | goto label_121;
| }
0x0008a6b8 ldrsh.w r3, [r3, 0x32] | r3 = *((r3 + 0x32));
0x0008a6bc str r3, [sp, 0x6c] | var_6ch = r3;
0x0008a6be str r3, [sp, 0x64] | var_64h = r3;
| label_66:
0x0008a6c0 ldr r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x0008a6c2 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008a6c4 adds r3, r2, r3 | r3 = r2 + r3;
0x0008a6c6 adds r2, 1 | r2++;
0x0008a6c8 str r2, [sp, 0x44] | var_44h = r2;
0x0008a6ca ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008a6cc add r3, r2 | r3 += r2;
0x0008a6ce adds r3, 1 | r3++;
0x0008a6d0 str r3, [sp, 0x9c] | var_9ch = r3;
0x0008a6d2 str r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x0008a6d4 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008a6d6 cmp r3, 0 |
| if (r3 == 0) {
0x0008a6d8 beq.w 0x8b432 | goto label_122;
| }
0x0008a6dc ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008a6de cmp r3, 0 |
| if (r3 == 0) {
0x0008a6e0 beq.w 0x8b7ac | goto label_123;
| }
0x0008a6e4 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x0008a6e6 str r3, [sp, 0x78] | var_78h = r3;
0x0008a6e8 cmp r3, 0 |
| if (r3 == 0) {
0x0008a6ea beq.w 0x8acf6 | goto label_124;
| }
0x0008a6ee ldr r2, [sp, 0x78] | r2 = var_78h;
0x0008a6f0 movs r3, 1 | r3 = 1;
0x0008a6f2 str r3, [sp, 0x88] | var_88h = r3;
0x0008a6f4 strb r3, [r2, 0x14] | *((r2 + 0x14)) = r3;
0x0008a6f6 cmp.w fp, 0 |
| if (fp != 0) {
0x0008a6fa bne.w 0x8ab62 | goto label_125;
| }
0x0008a6fe mov sl, fp | sl = fp;
0x0008a700 mov r6, fp | r6 = fp;
0x0008a702 str.w fp, [sp, 0x70] | __asm ("str.w fp, [var_70h]");
0x0008a706 str.w fp, [sp, 0x78] | __asm ("str.w fp, [var_78h]");
| label_31:
0x0008a70a ldr r3, [sp, 0x58] | r3 = var_58h;
0x0008a70c ldr r2, [sp, 0xb4] | r2 = var_b4h;
0x0008a70e and r3, r3, 1 | r3 &= 1;
0x0008a712 orrs r2, r3 | r2 |= r3;
0x0008a714 mov r3, r2 | r3 = r2;
| if (r2 != r3) {
0x0008a716 bne.w 0x8ab44 | goto label_126;
| }
0x0008a71a ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x0008a71c mov r4, r3 | r4 = r3;
0x0008a71e cmp r2, 0 |
| if (r2 == 0) {
0x0008a720 beq.w 0x8a898 | goto label_61;
| }
| label_30:
0x0008a724 ldr r3, [sp, 0x140] | r3 = *(arg_140h);
0x0008a726 mov r0, r5 | r0 = r5;
0x0008a728 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008a72a ldr r1, [sp, 0x8c] | r1 = var_8ch;
0x0008a72c strd sb, r3, [sp, 4] | __asm ("strd sb, r3, [var_4h]");
0x0008a730 movs r3, 3 | r3 = 3;
0x0008a732 str r3, [sp] | *(sp) = r3;
0x0008a734 movs r3, 0 | r3 = 0;
0x0008a736 bl 0x8c330 | r0 = fcn_0008c330 (r0, r1, r2, r3, r4, r5, r6);
0x0008a73a orr.w r3, r0, r4 | r3 = r0 | r4;
0x0008a73e str r3, [sp, 0x58] | var_58h = r3;
0x0008a740 ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
0x0008a744 cmp r3, 0 |
0x0008a746 itt gt |
| if (r3 <= 0) {
0x0008a748 movgt r4, 0 | r4 = 0;
| }
| if (r3 <= 0) {
0x0008a74a strgt r4, [sp, 0x50] | var_50h = r4;
| }
| if (r3 > 0) {
0x0008a74c bgt 0x8a770 | goto label_127;
| }
0x0008a74e b 0x8a882 | goto label_128;
| do {
0x0008a750 str r3, [sp] | *(sp) = r3;
0x0008a752 mov r1, sb | r1 = sb;
0x0008a754 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008a756 mov r3, r4 | r3 = r4;
0x0008a758 mov r0, r8 | r0 = r8;
0x0008a75a bl 0x66f40 | fcn_00066f40 (r0, r1, r2, r3, r4);
0x0008a75e ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008a760 adds r4, 1 | r4++;
0x0008a762 adds r3, 0x14 | r3 += 0x14;
0x0008a764 str r3, [sp, 0x50] | var_50h = r3;
0x0008a766 ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
0x0008a76a cmp r4, r3 |
| if (r4 >= r3) {
0x0008a76c bge.w 0x8a882 | goto label_128;
| }
| label_127:
0x0008a770 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0008a772 sxth r1, r4 | __asm ("sxth r1, r4");
0x0008a774 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0008a778 add r3, r2 | r3 += r2;
0x0008a77a ldrh r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x0008a77c ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008a780 lsls r0, r3, 0x1a | r0 = r3 << 0x1a;
| if (r0 < r3) {
0x0008a782 bpl 0x8a790 |
0x0008a784 mov r0, sb | r0 = sb;
0x0008a786 str r2, [sp, 0x7c] | var_7ch = r2;
0x0008a788 bl 0xf328 | fcn_0000f328 (r0, r1);
0x0008a78c ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008a78e mov r1, r0 | r1 = r0;
| }
0x0008a790 ldr r3, [sp, 0xa8] | r3 = var_a8h;
0x0008a792 ldr r0, [sp, 0x58] | r0 = var_58h;
0x0008a794 adds r3, r1, r3 | r3 = r1 + r3;
0x0008a796 adds r1, r0, 1 | r1 = r0 + 1;
0x0008a798 beq 0x8a750 |
| } while (r1 == r0);
0x0008a79a cmp r4, 0x1f |
| if (r4 > 0x1f) {
0x0008a79c bgt 0x8a7a6 | void (*0x8a7a6)() ();
| }
| label_110:
0x0008a7b8 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
| if (r1 == 0) {
0x0008a7ba cbz r1, 0x8a7ec | goto label_129;
| }
0x0008a7bc ldr r3, [sp, 0x88] | r3 = var_88h;
0x0008a7be str r0, [sp, 0xd0] | var_d0h = r0;
0x0008a7c0 strd r0, r0, [sp, 0xd8] | __asm ("strd r0, r0, [var_8h_3]");
0x0008a7c4 str r3, [sp, 0xd4] | var_d4h = r3;
0x0008a7c6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008a7c8 strd r0, r0, [sp, 0xe0] | __asm ("strd r0, r0, [var_e4h]");
0x0008a7cc add r0, sp, 0xd0 | r0 += var_d0h;
0x0008a7ce str r3, [sp, 0xe8] | var_e8h = r3;
0x0008a7d0 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x0008a7d4 ldrh.w r1, [sp, 0xe4] | r1 = var_e4h;
0x0008a7d8 cmp.w sl, 0 |
| if (sl == 0) {
0x0008a7dc bne 0x8a7e6 |
0x0008a7de bic r1, r1, 2 | r1 = BIT_MASK (r1, 2);
0x0008a7e2 lsls r1, r1, 0x10 | r1 <<= 0x10;
0x0008a7e4 lsrs r1, r1, 0x10 | r1 >>= 0x10;
| }
0x0008a7e6 cmp r1, 0 |
| if (r1 != 0) {
0x0008a7e8 bne.w 0x8a59c | goto label_21;
| }
| label_129:
0x0008a7ec ldrh r1, [r4, 0x32] | r1 = *((r4 + 0x32));
| if (r1 == 0) {
0x0008a7ee cbz r1, 0x8a814 | goto label_111;
| }
0x0008a7f0 movs r6, 0 | r6 = 0;
0x0008a7f2 add r7, sp, 0xd0 | r7 += var_d0h;
0x0008a7f4 mov r5, r6 | r5 = r6;
| do {
0x0008a7f6 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0008a7f8 ldrsh.w r3, [r3, r6, lsl 1] | offset_3 = r6 << 1;
| r3 = *((r3 + offset_3));
0x0008a7fc cmp r3, 0 |
| if (r3 < 0) {
0x0008a7fe blt 0x8a820 | goto label_130;
| }
0x0008a800 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008a802 ldr.w r3, [r2, r3, lsl 2] | offset_4 = r3 << 2;
| r3 = *((r2 + offset_4));
0x0008a806 mvns r3, r3 | r3 = ~r3;
0x0008a808 lsrs r3, r3, 0x1f | r3 >>= 0x1f;
| if (r3 != 0) {
| label_23:
0x0008a80a cbnz r3, 0x8a85e | goto label_131;
| }
0x0008a80c ldrh r3, [r4, 0x32] | r3 = *((r4 + 0x32));
0x0008a80e adds r6, 1 | r6++;
0x0008a810 cmp r6, r3 |
0x0008a812 blt 0x8a7f6 |
| } while (r6 < r3);
| label_111:
0x0008a814 ldr r3, [sp, 0x98] | r3 = var_98h;
0x0008a816 movs r1, 0 | r1 = 0;
0x0008a818 adds r0, r3, 1 | r0 = r3 + 1;
0x0008a81a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008a81c strb r1, [r0, r3] | *((r0 + r3)) = r1;
0x0008a81e b 0x8a5b0 | goto label_22;
| label_130:
0x0008a820 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0008a822 add.w r3, r3, r6, lsl 4 | r3 += (r6 << 4);
0x0008a826 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0008a828 ldr r3, [sp, 0x78] | r3 = var_78h;
0x0008a82a str r5, [r7] | *(r7) = r5;
0x0008a82c strd r5, r5, [r7, 8] | __asm ("strd r5, r5, [var_8h_3]");
0x0008a830 strd r5, r5, [r7, 0x10] | __asm ("strd r5, r5, [var_e4h]");
0x0008a834 str r3, [sp, 0xd4] | var_d4h = r3;
0x0008a836 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008a838 str r3, [sp, 0xe8] | var_e8h = r3;
0x0008a83a mov r3, r1 | r3 = r1;
| if (r1 != 0) {
0x0008a83c cbz r1, 0x8a848 |
0x0008a83e mov r0, r7 | r0 = r7;
0x0008a840 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x0008a844 ldrh.w r3, [sp, 0xe4] | r3 = var_e4h;
| }
0x0008a848 cmp.w sl, 0 |
| if (sl == 0) {
0x0008a84c bne 0x8a856 |
0x0008a84e bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0008a852 lsls r3, r3, 0x10 | r3 <<= 0x10;
0x0008a854 lsrs r3, r3, 0x10 | r3 >>= 0x10;
| }
0x0008a856 subs r3, 0 |
0x0008a858 it ne |
| if (r3 == 0) {
0x0008a85a movne r3, 1 | r3 = 1;
| }
0x0008a85c b 0x8a80a | goto label_23;
| label_131:
0x0008a85e ldr.w r1, [r8, 0x2c] | r1 = *((r8 + 0x2c));
0x0008a862 ldr r3, [sp, 0x140] | r3 = *(arg_140h);
0x0008a864 ldrh r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x0008a866 adds r1, 1 | r1++;
0x0008a868 cmp r3, 0xb |
0x0008a86a add r0, r1 | r0 += r1;
0x0008a86c str.w r0, [r8, 0x2c] | __asm ("str.w r0, [r8, 0x2c]");
| if (r3 != 0xb) {
0x0008a870 bne.w 0x8a5aa | goto label_24;
| }
0x0008a874 ldrb.w r0, [r4, 0x36] | r0 = *((r4 + 0x36));
0x0008a878 cmp r0, 5 |
0x0008a87a itt eq |
| if (r0 != 5) {
0x0008a87c moveq r0, 1 | r0 = 1;
| }
| if (r0 != 5) {
0x0008a87e streq r0, [sp, 0xc4] | var_c4h = r0;
| }
0x0008a880 b 0x8a5aa | goto label_24;
| label_128:
0x0008a882 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008a884 eor r3, fp, 1 | r3 = fp ^ 1;
0x0008a888 cmp r2, 0 |
0x0008a88a ite ne |
| if (r2 == 0) {
0x0008a88c movne r3, 0 | r3 = 0;
| }
| if (r2 != 0) {
0x0008a88e andeq r3, r3, 1 | r3 &= 1;
| }
0x0008a892 cmp r3, 0 |
| if (r3 != 0) {
0x0008a894 bne.w 0x8b620 | goto label_132;
| }
| label_61:
0x0008a898 ldr r3, [sp, 0x140] | r3 = *(arg_140h);
0x0008a89a mov r0, r5 | r0 = r5;
0x0008a89c ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008a89e ldr r1, [sp, 0x8c] | r1 = var_8ch;
0x0008a8a0 strd sb, r3, [sp, 4] | __asm ("strd sb, r3, [var_4h]");
0x0008a8a4 movs r3, 1 | r3 = 1;
0x0008a8a6 str r3, [sp] | *(sp) = r3;
0x0008a8a8 bl 0x8c330 | fcn_0008c330 (r0, r1, r2, r3, r4, r5, r6);
0x0008a8ac ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008a8b0 str r0, [sp, 0x50] | var_50h = r0;
0x0008a8b2 cmp r2, 0 |
| if (r2 <= 0) {
0x0008a8b4 ble 0x8a9a8 | void (*0x8a9a8)() ();
| }
| label_113:
0x0008aa92 movs r4, 0 | r4 = 0;
0x0008aa94 str r4, [sp, 0xa8] | var_a8h = r4;
0x0008aa96 str r4, [sp, 0xa0] | var_a0h = r4;
0x0008aa98 str r4, [sp, 0x68] | var_68h = r4;
0x0008aa9a str r4, [sp, 0x4c] | var_4ch = r4;
0x0008aa9c b 0x8a65a | goto label_25;
| label_119:
0x0008aaca ldrb r3, [r5, 0x12] | r3 = *((r5 + 0x12));
0x0008aacc cmp r3, 0 |
| if (r3 != 0) {
0x0008aace bne.w 0x8a69e | goto label_26;
| }
0x0008aad2 ldrb.w r3, [r5, 0x91] | r3 = *((r5 + 0x91));
| if (r3 == 0) {
0x0008aad6 cbnz r3, 0x8aadc |
0x0008aad8 ldr r3, [sp, 0x54] | r3 = var_54h;
| if (r3 == 0) {
0x0008aada cbz r3, 0x8ab0c | goto label_133;
| }
| }
0x0008aadc movs r3, 0 | r3 = 0;
0x0008aade str r3, [sp, 0x94] | var_94h = r3;
0x0008aae0 b 0x8a6a2 | goto label_27;
| label_133:
0x0008ab0c ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008ab0e movs r1, 0x45 | r1 = 0x45;
0x0008ab10 ldr r2, [sp, 0x90] | r2 = var_90h;
0x0008ab12 mov r0, r8 | r0 = r8;
0x0008ab14 adds r3, 1 | r3++;
0x0008ab16 str r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x0008ab18 str r2, [sp] | *(sp) = r2;
0x0008ab1a str r3, [sp, 0x94] | var_94h = r3;
0x0008ab1c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ab20 b 0x8a6a2 | goto label_27;
| label_115:
0x0008ab22 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0008ab24 str r1, [sp, 0x68] | var_68h = r1;
0x0008ab26 b 0x8a652 | goto label_28;
| label_114:
0x0008ab28 ldr r1, [sp, 0x74] | r1 = var_74h;
0x0008ab2a cmp r1, 0 |
| if (r1 != 0) {
0x0008ab2c bne 0x8ab96 | goto label_134;
| }
0x0008ab2e ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x0008ab30 str r1, [sp, 0xa8] | var_a8h = r1;
0x0008ab32 mov r3, r0 | r3 = r0;
0x0008ab34 str r0, [sp, 0x68] | var_68h = r0;
0x0008ab36 b 0x8a652 | goto label_28;
| label_112:
0x0008ab38 ldr r2, [sp, 0x68] | r2 = var_68h;
0x0008ab3a movs r1, 1 | r1 = 1;
0x0008ab3c ldr r0, [sp, 0x98] | r0 = var_98h;
0x0008ab3e blx 0x8264 | fcn_00008264 ();
0x0008ab42 b 0x8a5e6 | goto label_29;
| label_126:
0x0008ab44 ldr r3, [sp, 0x60] | r3 = var_60h;
| if (r3 == 0) {
0x0008ab46 cbz r3, 0x8ab8c | goto label_135;
| }
0x0008ab48 ldr r3, [r5] | r3 = *(r5);
0x0008ab4a ldr r4, [r3, 0x20] | r4 = *((r3 + 0x20));
0x0008ab4c and r4, r4, 0x4000 | r4 &= 0x4000;
0x0008ab50 cmp r4, 0 |
| if (r4 == 0) {
0x0008ab52 beq.w 0x8a724 | goto label_30;
| }
0x0008ab56 mov r1, sb | r1 = sb;
0x0008ab58 mov r0, r5 | r0 = r5;
0x0008ab5a bl 0x2e770 | r0 = fcn_0002e770 (r0, r1);
0x0008ab5e mov r4, r0 | r4 = r0;
0x0008ab60 b 0x8a724 | goto label_30;
| label_125:
0x0008ab62 movs r3, 0 | r3 = 0;
0x0008ab64 mov sl, r3 | sl = r3;
0x0008ab66 mov r6, r3 | r6 = r3;
0x0008ab68 str r3, [sp, 0x70] | var_70h = r3;
0x0008ab6a str r3, [sp, 0x78] | var_78h = r3;
| label_56:
0x0008ab6c ldr r2, [sp, 0x68] | r2 = var_68h;
0x0008ab6e movs r1, 0x5b | r1 = 0x5b;
0x0008ab70 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0008ab72 mov r0, r8 | r0 = r8;
0x0008ab74 str r2, [sp] | *(sp) = r2;
0x0008ab76 mov r2, r6 | r2 = r6;
0x0008ab78 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_41:
0x0008ab7c movs r3, 0 | r3 = 0;
0x0008ab7e ldr r2, [sp, 0x68] | r2 = var_68h;
0x0008ab80 movs r1, 0xf | r1 = 0xf;
0x0008ab82 mov r0, r8 | r0 = r8;
0x0008ab84 str r3, [sp] | *(sp) = r3;
0x0008ab86 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ab8a b 0x8a70a | goto label_31;
| label_135:
0x0008ab8c ldr r4, [sp, 0x60] | r4 = var_60h;
0x0008ab8e b 0x8a724 | goto label_30;
| label_109:
0x0008ab90 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0008ab92 str r3, [sp, 0xb0] | var_b0h = r3;
0x0008ab94 b 0x8a5d4 | goto label_32;
| label_134:
0x0008ab96 ldr r1, [sp, 0x90] | r1 = var_90h;
0x0008ab98 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008ab9a str r1, [sp, 0xa8] | var_a8h = r1;
0x0008ab9c b 0x8a64e | goto label_33;
| label_89:
0x0008ab9e mov.w fp, 0 |
0x0008aba2 mov.w r3, -1 | r3 = -1;
0x0008aba6 str r3, [sp, 0xa4] | var_a4h = r3;
0x0008aba8 str.w fp, [sp, 0x50] | __asm ("str.w fp, [var_50h]");
0x0008abac b.w 0x8a2d2 | goto label_34;
| label_97:
0x0008abb0 ldr.w r0, [sb, 0x48] | r0 = *((sb + 0x48));
0x0008abb4 mov r2, r6 | r2 = r6;
0x0008abb6 adds r0, 0x38 | r0 += 0x38;
0x0008abb8 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x0008abbc ldr r7, [r0, 8] | r7 = *((r0 + 8));
0x0008abbe cmp r7, 0 |
| if (r7 == 0) {
0x0008abc0 beq.w 0x8a53a | goto label_35;
| }
0x0008abc4 movs r3, 1 | r3 = 1;
0x0008abc6 mov r4, r6 | r4 = r6;
0x0008abc8 str r3, [sp, 0x60] | var_60h = r3;
0x0008abca b 0x8a422 | goto label_36;
| label_82:
0x0008abcc blx 0x7e8c | fcn_00007e8c ();
| label_104:
0x0008abd0 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008abd2 movs r1, 2 | r1 = 2;
0x0008abd4 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008abd6 mov r6, r3 | r6 = r3;
0x0008abd8 str r3, [sp, 0x40] | var_40h = r3;
0x0008abda str r2, [sp, 0x30] | var_30h = r2;
0x0008abdc str r3, [sp, 0xac] | var_ach = r3;
0x0008abde b.w 0x8a150 | goto label_19;
| label_107:
0x0008abe2 ldr r5, [sp, 0x44] | r5 = var_44h;
0x0008abe4 mov r2, r3 | r2 = r3;
0x0008abe6 ldr.w r1, [pc, 0xb64] |
0x0008abea mov r0, r5 | r0 = r5;
0x0008abec add r1, pc | r1 = 0x11633e;
0x0008abee bl 0x25778 | fcn_00025778 (r0);
0x0008abf2 b 0x8a4a4 | goto label_18;
| label_83:
0x0008abf4 mov.w r3, 0x8000 |
0x0008abf8 movt r3, 0xffff | r3 = 0xNaN;
0x0008abfc str r3, [sp, 0x64] | var_64h = r3;
0x0008abfe b.w 0x8a0b0 | goto label_16;
| label_102:
0x0008ac02 movs r3, 1 | r3 = 1;
0x0008ac04 str r3, [sp, 0xb4] | var_b4h = r3;
0x0008ac06 movs r3, 2 | r3 = 2;
0x0008ac08 str r3, [sp, 0x60] | var_60h = r3;
0x0008ac0a b 0x8a540 | goto label_37;
| label_124:
0x0008acf6 movs r3, 1 | r3 = 1;
0x0008acf8 strb r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
0x0008acfa str r3, [sp, 0x88] | var_88h = r3;
0x0008acfc cmp.w fp, 0 |
| if (fp != 0) {
0x0008ad00 bne.w 0x8b8d8 | goto label_136;
| }
0x0008ad04 mov sl, fp | sl = fp;
0x0008ad06 mov r6, fp | r6 = fp;
| label_40:
0x0008ad08 movs r3, 0 | r3 = 0;
0x0008ad0a str r3, [sp, 0x70] | var_70h = r3;
0x0008ad0c b 0x8a70a | goto label_31;
| label_117:
0x0008ad0e ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008ad10 mov r1, sb | r1 = sb;
0x0008ad12 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0008ad14 mov r0, r5 | r0 = r5;
0x0008ad16 bl 0x70d8c | fcn_00070d8c (r0, r1, r2, r3);
| label_68:
0x0008ad1a ldr r1, [sp, 0x48] | r1 = var_48h;
0x0008ad1c add r0, sp, 0xec | r0 += var_ech;
0x0008ad1e bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x0008ad22 cmp r0, 0 |
| if (r0 != 0) {
0x0008ad24 bne.w 0x8a4a4 | goto label_18;
| }
0x0008ad28 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008ad2c str r3, [sp, 0x90] | var_90h = r3;
0x0008ad2e movs r3, 1 | r3 = 1;
0x0008ad30 str r3, [sp, 0xb8] | var_b8h = r3;
0x0008ad32 b 0x8a67e | goto label_38;
| label_118:
0x0008ad34 ldr.w r3, [sb, 0x40] | r3 = *((sb + 0x40));
0x0008ad38 ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x0008ad3a ldr r7, [r5] | r7 = *(r5);
0x0008ad3c str r3, [sp, 0x44] | var_44h = r3;
| if (r3 == 0) {
0x0008ad3e cbz r3, 0x8ad50 | goto label_137;
| }
0x0008ad40 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008ad42 b 0x8ad48 |
| while (r7 != r2) {
0x0008ad44 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
| if (r3 == 0) {
0x0008ad46 cbz r3, 0x8ad4e | goto label_138;
| }
0x0008ad48 ldr r2, [r3] | r2 = *(r3);
0x0008ad4a cmp r7, r2 |
0x0008ad4c bne 0x8ad44 |
| }
| label_138:
0x0008ad4e str r3, [sp, 0x44] | var_44h = r3;
| label_137:
0x0008ad50 ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
0x0008ad54 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008ad56 ldr.w fp, [r5, 0x28] | fp = *((r5 + 0x28));
0x0008ad5a adds r3, 2 | r3 += 2;
0x0008ad5c str r3, [sp, 0x30] | var_30h = r3;
0x0008ad5e ldrd r8, r3, [r4, 0x6c] | __asm ("ldrd r8, r3, [r4, 0x6c]");
0x0008ad62 add.w r2, fp, 1 | r2 += arg_1h;
0x0008ad66 ldr r1, [r1, 0x30] | r1 = *((r1 + 0x30));
0x0008ad68 str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0008ad6a cmp r8, r3 |
0x0008ad6c str r1, [sp, 0x40] | var_40h = r1;
| if (r8 >= r3) {
0x0008ad6e bge.w 0x8b2ac | goto label_139;
| }
0x0008ad72 add.w r3, r8, r8, lsl 2 | r3 = r8 + (r8 << 2);
0x0008ad76 ldr r1, [r4, 0x68] | r1 = *((r4 + 0x68));
0x0008ad78 ldr r6, [sp, 0x30] | r6 = var_30h;
0x0008ad7a add.w r2, r8, 1 | r2 = r8 + 1;
0x0008ad7e lsls r3, r3, 2 | r3 <<= 2;
0x0008ad80 str r2, [r4, 0x6c] | *((r4 + 0x6c)) = r2;
0x0008ad82 movs r0, 0 | r0 = 0;
0x0008ad84 adds r2, r1, r3 | r2 = r1 + r3;
0x0008ad86 mov.w ip, 0x70 |
0x0008ad8a str.w fp, [r2, 4] | __asm ("str.w fp, [r2, 4]");
0x0008ad8e strd r6, r0, [r2, 8] | __asm ("strd r6, r0, [r2, 8]");
0x0008ad92 str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x0008ad94 str.w ip, [r1, r3] | __asm ("str.w ip, [r1, r3]");
| label_49:
0x0008ad98 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008ad9a ldr r6, [r5, 0x2c] | r6 = *((r5 + 0x2c));
0x0008ad9c ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008ad9e ldr r3, [r3] | r3 = *(r3);
0x0008ada0 add r2, r6 | r2 += r6;
0x0008ada2 cmp r3, 1 |
0x0008ada4 str r2, [sp, 0x4c] | var_4ch = r2;
0x0008ada6 str r2, [r5, 0x2c] | *((r5 + 0x2c)) = r2;
0x0008ada8 add.w r2, r6, 1 | r2 = r6 + 1;
0x0008adac str r2, [sp, 0x34] | var_34h = r2;
| if (r3 <= 1) {
0x0008adae ble.w 0x8b148 | goto label_140;
| }
0x0008adb2 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008adb6 ands r3, r3, 0x80 | r3 &= 0x80;
| if (r3 != r3) {
0x0008adba bne.w 0x8b09a | goto label_141;
| }
0x0008adbe ldr r2, [sp, 0x50] | r2 = var_50h;
0x0008adc0 cmp r2, 0 |
| if (r2 == 0) {
0x0008adc2 beq.w 0x8b08a | goto label_142;
| }
0x0008adc6 mov r1, r2 | r1 = r2;
0x0008adc8 mov r0, r7 | r0 = r7;
0x0008adca mov r2, r3 | r2 = r3;
0x0008adcc str r3, [sp, 0x50] | var_50h = r3;
0x0008adce bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x0008add2 mov r1, r0 | r1 = r0;
| label_42:
0x0008add4 ldr r0, [r5] | r0 = *(r5);
0x0008add6 bl 0x1afb0 | fcn_0001afb0 (r0, r1);
0x0008adda ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
0x0008adde mov sl, r0 | sl = r0;
0x0008ade0 cmp r3, 0 |
| if (r3 <= 0) {
0x0008ade2 ble.w 0x8af5a | goto label_143;
| }
0x0008ade6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008ade8 movs r6, 0 | r6 = 0;
0x0008adea sub.w r8, r3, 4 | r8 = r3 - 4;
0x0008adee b 0x8ae1e |
| while (r3 >= 0) {
0x0008adf0 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008adf2 add.w r3, r2, r3, lsl 4 | r3 = r2 + (r3 << 4);
0x0008adf6 ldr r2, [r3, 8] | r2 = *((r3 + 8));
| if (r2 != 0) {
0x0008adf8 cbz r2, 0x8ae08 |
0x0008adfa movs r3, 0 | r3 = 0;
0x0008adfc mov r1, r2 | r1 = r2;
0x0008adfe mov r0, r7 | r0 = r7;
0x0008ae00 mov r2, r3 | r2 = r3;
0x0008ae02 bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x0008ae06 mov r2, r0 | r2 = r0;
| }
0x0008ae08 mov r1, sl | r1 = sl;
0x0008ae0a mov r0, r5 | r0 = r5;
0x0008ae0c bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x0008ae10 adds r6, 1 | r6++;
0x0008ae12 mov sl, r0 | sl = r0;
| label_39:
0x0008ae14 ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
0x0008ae18 cmp r6, r3 |
| if (r6 >= r3) {
0x0008ae1a bge.w 0x8af5a | goto label_143;
| }
0x0008ae1e ldr r3, [r8, 4]! | r3 = *((r8 += 4));
0x0008ae22 cmp r3, 0 |
0x0008ae24 bge 0x8adf0 |
| }
0x0008ae26 movs r3, 0 | r3 = 0;
0x0008ae28 movs r1, 0x4b | r1 = 0x4b;
0x0008ae2a mov r2, r3 | r2 = r3;
0x0008ae2c mov r0, r5 | r0 = r5;
0x0008ae2e bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0008ae32 adds r6, 1 | r6++;
0x0008ae34 mov r2, r0 | r2 = r0;
| if (r0 != 0) {
0x0008ae36 cbz r0, 0x8ae3a |
0x0008ae38 strh r6, [r0, 0x20] | *((r0 + 0x20)) = r6;
| }
0x0008ae3a mov r1, sl | r1 = sl;
0x0008ae3c mov r0, r5 | r0 = r5;
0x0008ae3e bl 0x1c2ac | r0 = fcn_0001c2ac (r0, r1, r2);
0x0008ae42 mov sl, r0 | sl = r0;
0x0008ae44 b 0x8ae14 | goto label_39;
| label_120:
0x0008ae46 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008ae48 movs r1, 0x48 | r1 = 0x48;
0x0008ae4a ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008ae4c mov r0, r8 | r0 = r8;
0x0008ae4e str r3, [sp] | *(sp) = r3;
0x0008ae50 mov r3, r4 | r3 = r4;
0x0008ae52 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ae56 ldr.w r3, [r8, 0x6c] | r3 = *((r8 + 0x6c));
0x0008ae5a ldr r6, [r5, 0x28] | r6 = *((r5 + 0x28));
0x0008ae5c mov r1, r3 | r1 = r3;
0x0008ae5e str r3, [sp, 0x70] | var_70h = r3;
0x0008ae60 ldr.w r3, [r8, 0x70] | r3 = *((r8 + 0x70));
0x0008ae64 adds r2, r6, 1 | r2 = r6 + 1;
0x0008ae66 str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0008ae68 cmp r1, r3 |
| if (r1 >= r3) {
0x0008ae6a bge.w 0x8b420 | goto label_144;
| }
0x0008ae6e ldr r2, [sp, 0x70] | r2 = var_70h;
0x0008ae70 mov.w ip, 0x70 |
0x0008ae74 ldr.w r1, [r8, 0x68] | r1 = *((r8 + 0x68));
0x0008ae78 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008ae7a add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x0008ae7e adds r2, 1 | r2++;
0x0008ae80 str.w r2, [r8, 0x6c] | __asm ("str.w r2, [r8, 0x6c]");
0x0008ae84 lsls r3, r3, 2 | r3 <<= 2;
0x0008ae86 adds r2, r1, r3 | r2 = r1 + r3;
0x0008ae88 str r6, [r2, 4] | *((r2 + 4)) = r6;
0x0008ae8a strd r0, r4, [r2, 8] | __asm ("strd r0, r4, [r2, 8]");
0x0008ae8e str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x0008ae90 str.w ip, [r1, r3] | __asm ("str.w ip, [r1, r3]");
| label_54:
0x0008ae94 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008ae96 cmp r3, 0 |
| if (r3 == 0) {
0x0008ae98 beq.w 0x8b2ee | goto label_145;
| }
0x0008ae9c movs r3, 0 | r3 = 0;
0x0008ae9e str r3, [sp, 0x9c] | var_9ch = r3;
0x0008aea0 str r3, [sp, 0x44] | var_44h = r3;
0x0008aea2 str r3, [sp, 0x6c] | var_6ch = r3;
| label_67:
0x0008aea4 movs r3, 0x10 | r3 = 0x10;
0x0008aea6 mov r2, r7 | r2 = r7;
0x0008aea8 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0008aeaa mov r0, r5 | r0 = r5;
0x0008aeac bl 0x6373c | fcn_0006373c (r0, r1, r2, r3, r4);
0x0008aeb0 ldr.w r2, [sb, 0x24] | r2 = *((sb + 0x24));
0x0008aeb4 mov.w sl, 1 | sl = 1;
0x0008aeb8 movs r3, 0 | r3 = 0;
0x0008aeba str r3, [sp, 0x88] | var_88h = r3;
0x0008aebc str r3, [sp, 0x78] | var_78h = r3;
| label_51:
0x0008aebe ands r2, r2, 0x80 | r2 &= 0x80;
| if (r2 == r2) {
0x0008aec2 beq.w 0x8b2c0 | goto label_146;
| }
| label_52:
0x0008aec6 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008aec8 cmp r3, 0 |
0x0008aeca str r3, [sp, 0x64] | var_64h = r3;
0x0008aecc it gt |
| if (r3 <= 0) {
0x0008aece movgt r4, 0 | r4 = 0;
| }
| if (r3 <= 0) {
0x0008aed0 ble 0x8aef2 | goto label_147;
| }
| do {
0x0008aed2 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008aed4 mov r1, sb | r1 = sb;
0x0008aed6 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008aed8 mov r0, r8 | r0 = r8;
0x0008aeda ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0008aedc add r2, r4 | r2 += r4;
0x0008aede ldrsh.w r3, [r3, r4, lsl 1] | offset_5 = r4 << 1;
| r3 = *((r3 + offset_5));
0x0008aee2 adds r4, 1 | r4++;
0x0008aee4 str r2, [sp] | *(sp) = r2;
0x0008aee6 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008aee8 bl 0x66f40 | fcn_00066f40 (r0, r1, r2, r3, r4);
0x0008aeec ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008aeee cmp r4, r3 |
0x0008aef0 bne 0x8aed2 |
| } while (r4 != r3);
| label_147:
0x0008aef2 cmp.w sl, 0 |
| if (sl == 0) {
0x0008aef6 beq.w 0x8b99e | goto label_148;
| }
0x0008aefa ldr r3, [sp, 0x70] | r3 = var_70h;
0x0008aefc ldr r4, [sp, 0x44] | r4 = var_44h;
0x0008aefe cmp r3, 0 |
| if (r3 != 0) {
0x0008af00 bne.w 0x8b990 | goto label_149;
| }
| label_50:
0x0008af04 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008af06 cmp r3, 0 |
| if (r3 == 0) {
0x0008af08 beq.w 0x8b97e | goto label_150;
| }
| label_53:
0x0008af0c cmp.w fp, 0 |
| if (fp == 0) {
0x0008af10 beq.w 0x8ad08 | goto label_40;
| }
0x0008af14 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008af16 cmp r3, 0 |
| if (r3 != 0) {
0x0008af18 bne.w 0x8b8dc | goto label_151;
| }
0x0008af1c str r3, [sp, 0x70] | var_70h = r3;
| label_74:
0x0008af1e ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0008af20 cmp r3, 0 |
| if (r3 == 0) {
0x0008af22 beq.w 0x8ab7c | goto label_41;
| }
0x0008af26 ldr r4, [sp, 0x68] | r4 = var_68h;
0x0008af28 mov r0, r5 | r0 = r5;
0x0008af2a ldr r1, [sp, 0x50] | r1 = var_50h;
0x0008af2c mov r2, r4 | r2 = r4;
0x0008af2e bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0008af32 cmp r4, r0 |
0x0008af34 mov r2, r0 | r2 = r0;
| if (r4 == r0) {
0x0008af36 beq.w 0x8ab7c | goto label_41;
| }
0x0008af3a ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008af3c ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0008af3e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0008af40 tst.w r3, 0x200000 |
0x0008af44 mov.w r3, 0 | r3 = 0;
0x0008af48 str r3, [sp] | *(sp) = r3;
0x0008af4a it ne |
| if ((r3 & 0x200000) == 0) {
0x0008af4c movne r1, 0x4d | r1 = 0x4d;
| }
0x0008af4e mov r3, r4 | r3 = r4;
0x0008af50 it eq |
| if ((r3 & 0x200000) != 0) {
0x0008af52 moveq r1, 0x4e | r1 = 0x4e;
| }
0x0008af54 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008af58 b 0x8ab7c | goto label_41;
| label_143:
0x0008af5a ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008af5c mov r1, fp | r1 = fp;
0x0008af5e ldr r2, [sp, 0x50] | r2 = var_50h;
0x0008af60 mov r0, r5 | r0 = r5;
0x0008af62 str r3, [sp, 4] | var_4h = r3;
0x0008af64 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008af66 str r3, [sp] | *(sp) = r3;
0x0008af68 mov r3, sl | r3 = sl;
0x0008af6a bl 0x70acc | fcn_00070acc (r0, r1, r2, r3);
0x0008af6e cmp.w sl, 0 |
| if (sl != 0) {
0x0008af72 beq 0x8af80 |
0x0008af74 mov r1, sl | r1 = sl;
0x0008af76 mov.w sl, 0 | sl = 0;
0x0008af7a mov r0, r7 | r0 = r7;
0x0008af7c bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
| label_48:
0x0008af80 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008af82 ldr r3, [r3] | r3 = *(r3);
0x0008af84 cmp r3, 1 |
| if (r3 == 1) {
0x0008af86 beq.w 0x8b126 | goto label_152;
| }
| label_46:
0x0008af8a ldrd r8, r3, [r4, 0x6c] | __asm ("ldrd r8, r3, [r4, 0x6c]");
0x0008af8e cmp r8, r3 |
| if (r8 >= r3) {
0x0008af90 bge.w 0x8b114 | goto label_153;
| }
0x0008af94 add.w r3, r8, r8, lsl 2 | r3 = r8 + (r8 << 2);
0x0008af98 ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x0008af9a add.w r2, r8, 1 | r2 = r8 + 1;
0x0008af9e lsls r3, r3, 2 | r3 <<= 2;
0x0008afa0 str r2, [r4, 0x6c] | *((r4 + 0x6c)) = r2;
0x0008afa2 movs r1, 0 | r1 = 0;
0x0008afa4 adds r2, r0, r3 | r2 = r0 + r3;
0x0008afa6 movs r6, 0x25 | r6 = 0x25;
0x0008afa8 strd fp, r1, [r2, 4] | __asm ("strd fp, r1, [r2, 4]");
0x0008afac strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x0008afb0 str r6, [r0, r3] | *((r0 + r3)) = r6;
| label_45:
0x0008afb2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008afb4 cmp r3, 0 |
| if (r3 <= 0) {
0x0008afb6 ble 0x8afd4 | goto label_70;
| }
0x0008afb8 movs r6, 0 | r6 = 0;
| do {
0x0008afba ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008afbc mov r2, fp | r2 = fp;
0x0008afbe movs r1, 0x5b | r1 = 0x5b;
0x0008afc0 mov r0, r4 | r0 = r4;
0x0008afc2 add r3, r6 | r3 += r6;
0x0008afc4 str r3, [sp] | *(sp) = r3;
0x0008afc6 mov r3, r6 | r3 = r6;
0x0008afc8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008afcc ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008afce adds r6, 1 | r6++;
0x0008afd0 cmp r3, r6 |
0x0008afd2 bgt 0x8afba |
| } while (r3 > r6);
| label_70:
0x0008afd4 mov r1, sb | r1 = sb;
0x0008afd6 mov r0, r5 | r0 = r5;
0x0008afd8 bl 0x1a2f4 | fcn_0001a2f4 (r0, r1);
0x0008afdc ldrd r1, r3, [r4, 0x6c] | __asm ("ldrd r1, r3, [r4, 0x6c]");
0x0008afe0 cmp r1, r3 |
| if (r1 >= r3) {
0x0008afe2 bge.w 0x8b0ec | goto label_154;
| }
0x0008afe6 add.w r2, r1, r1, lsl 2 | r2 = r1 + (r1 << 2);
0x0008afea ldr r6, [r4, 0x68] | r6 = *((r4 + 0x68));
0x0008afec ldr r7, [sp, 0x30] | r7 = var_30h;
0x0008afee adds r3, r1, 1 | r3 = r1 + 1;
0x0008aff0 lsls r2, r2, 2 | r2 <<= 2;
0x0008aff2 str r3, [r4, 0x6c] | *((r4 + 0x6c)) = r3;
0x0008aff4 movs r0, 0 | r0 = 0;
0x0008aff6 adds r3, r6, r2 | r3 = r6 + r2;
0x0008aff8 mov.w ip, 0xa |
0x0008affc str r7, [r3, 8] | *((r3 + 8)) = r7;
0x0008affe ldr r7, [sp, 0x34] | r7 = var_34h;
0x0008b000 strd r7, r0, [r3, 0xc] | __asm ("strd r7, r0, [r3, 0xc]");
0x0008b004 str.w ip, [r6, r2] | __asm ("str.w ip, [r6, r2]");
0x0008b008 str r0, [r3, 4] | *((r3 + 4)) = r0;
| label_43:
0x0008b00a mvn r3, 0xb | r3 = ~0xb;
0x0008b00e ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008b010 mov r0, r4 | r0 = r4;
0x0008b012 bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x0008b016 ldr r3, [sp, 0x140] | r3 = *(arg_140h);
0x0008b018 cmp r3, 0xb |
0x0008b01a it eq |
| if (r3 != 0xb) {
0x0008b01c moveq r3, 2 | r3 = 2;
| }
0x0008b01e str r3, [sp, 0x140] | *(arg_140h) = r3;
0x0008b020 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x0008b022 cmp r3, 0 |
| if (r3 > 0) {
0x0008b024 ble 0x8b036 |
0x0008b026 ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x0008b028 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008b02c add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0008b030 ldr r3, [sp, 0x140] | r3 = *(arg_140h);
0x0008b032 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
0x0008b036 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x0008b038 cmp r3, 0 |
0x0008b03a it ne |
| if (r3 == 0) {
0x0008b03c movne r5, r3 | r5 = r3;
| }
0x0008b03e movs r3, 1 | r3 = 1;
0x0008b040 strb r3, [r5, 0x15] | *((r5 + 0x15)) = r3;
0x0008b042 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008b044 cmp r3, 0 |
| if (r3 != 0) {
0x0008b046 bne 0x8b10a | goto label_155;
| }
0x0008b048 mov r2, fp | r2 = fp;
0x0008b04a str r3, [sp] | *(sp) = r3;
0x0008b04c movs r1, 5 | r1 = 5;
0x0008b04e add.w r3, r8, 1 | r3 = r8 + 1;
0x0008b052 mov r0, r4 | r0 = r4;
0x0008b054 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b058 ldr r3, [r4] | r3 = *(r4);
0x0008b05a cmp.w r8, 0 |
0x0008b05e ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x0008b060 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008b064 it lt |
| if (r8 >= 0) {
0x0008b066 addlt r8, r2, -1 | r8 = r2 + -1;
| }
0x0008b06a cmp r3, 0 |
| if (r3 != 0) {
0x0008b06c bne 0x8b100 | goto label_156;
| }
0x0008b06e ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x0008b070 movs r1, 0x14 | r1 = 0x14;
0x0008b072 mla r3, r1, r8, r3 | __asm ("mla r3, r1, r8, r3");
| label_44:
0x0008b076 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0008b078 movs r3, 0 | r3 = 0;
0x0008b07a mov r2, fp | r2 = fp;
0x0008b07c mov r0, r4 | r0 = r4;
0x0008b07e movs r1, 0x76 | r1 = 0x76;
0x0008b080 str r3, [sp] | *(sp) = r3;
0x0008b082 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b086 b.w 0x8a4a4 | goto label_18;
| label_142:
0x0008b08a ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008b08c movs r1, 0x4b | r1 = 0x4b;
0x0008b08e mov r0, r5 | r0 = r5;
0x0008b090 mov r2, r3 | r2 = r3;
0x0008b092 bl 0x264f8 | r0 = fcn_000264f8 (r0, r1, r2, r3);
0x0008b096 mov r1, r0 | r1 = r0;
0x0008b098 b 0x8add4 | goto label_42;
| label_141:
0x0008b09a ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0008b09e str r3, [sp, 0x50] | var_50h = r3;
0x0008b0a0 cmp r3, 0 |
| if (r3 == 0) {
0x0008b0a2 beq.w 0x8bb3c | goto label_157;
| }
0x0008b0a6 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008b0a8 b 0x8b0b2 |
| while (r2 != 2) {
0x0008b0aa ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0008b0ac cmp r3, 0 |
| if (r3 == 0) {
0x0008b0ae beq.w 0x8bb3c | goto label_157;
| }
0x0008b0b2 ldrb.w r2, [r3, 0x37] | r2 = *((r3 + 0x37));
0x0008b0b6 and r2, r2, 3 | r2 &= 3;
0x0008b0ba cmp r2, 2 |
0x0008b0bc bne 0x8b0aa |
| }
0x0008b0be str r3, [sp, 0x50] | var_50h = r3;
0x0008b0c0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0008b0c2 ldrsh.w r6, [r3] | r6 = *(r3);
0x0008b0c6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008b0c8 ldr.w r3, [r3, r6, lsl 2] | offset_6 = r6 << 2;
| r3 = *((r3 + offset_6));
0x0008b0cc cmp r3, 0 |
| if (r3 < 0) {
0x0008b0ce blt 0x8b12e | goto label_158;
| }
0x0008b0d0 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008b0d2 add.w r3, r2, r3, lsl 4 | r3 = r2 + (r3 << 4);
0x0008b0d6 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0008b0d8 cmp r1, 0 |
| if (r1 == 0) {
0x0008b0da beq.w 0x8add4 | goto label_42;
| }
0x0008b0de movs r3, 0 | r3 = 0;
0x0008b0e0 mov r0, r7 | r0 = r7;
0x0008b0e2 mov r2, r3 | r2 = r3;
0x0008b0e4 bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x0008b0e8 mov r1, r0 | r1 = r0;
0x0008b0ea b 0x8add4 | goto label_42;
| label_154:
0x0008b0ec ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008b0ee movs r1, 0xa | r1 = 0xa;
0x0008b0f0 movs r2, 0 | r2 = 0;
0x0008b0f2 mov r0, r4 | r0 = r4;
0x0008b0f4 str r3, [sp] | *(sp) = r3;
0x0008b0f6 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008b0f8 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008b0fc mov r1, r0 | r1 = r0;
0x0008b0fe b 0x8b00a | goto label_43;
| label_156:
0x0008b100 ldr.w r3, [pc, 0x64c] |
0x0008b104 add r3, pc | r3 = 0x116858;
0x0008b106 adds r3, 4 | r3 += 4;
0x0008b108 b 0x8b076 | goto label_44;
| label_155:
0x0008b10a mov r0, sl | r0 = sl;
0x0008b10c bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0008b110 b.w 0x8a4a4 | goto label_18;
| label_153:
0x0008b114 movs r3, 0 | r3 = 0;
0x0008b116 mov r2, fp | r2 = fp;
0x0008b118 movs r1, 0x25 | r1 = 0x25;
0x0008b11a mov r0, r4 | r0 = r4;
0x0008b11c str r3, [sp] | *(sp) = r3;
0x0008b11e bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008b120 cdp2 p6, 5, c4, c9, c0, 4 | __asm ("cdp2 p6, 5, c4, c9, c0, 4");
0x0008b124 b 0x8afb2 | goto label_45;
| label_152:
0x0008b126 mov r0, sl | r0 = sl;
0x0008b128 bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0008b12c b 0x8af8a | goto label_46;
| label_158:
0x0008b12e movs r3, 0 | r3 = 0;
0x0008b130 movs r1, 0x4b | r1 = 0x4b;
0x0008b132 mov r2, r3 | r2 = r3;
0x0008b134 mov r0, r5 | r0 = r5;
0x0008b136 bl 0x264f8 | fcn_000264f8 (r0, r1, r2, r3);
0x0008b138 invalid |
0x0008b13c cmp r0, 0 |
| if (r0 == 0) {
0x0008b13e beq.w 0x8add4 | goto label_42;
| }
0x0008b142 adds r6, 1 | r6++;
0x0008b144 strh r6, [r0, 0x20] | *((r0 + 0x20)) = r6;
0x0008b146 b 0x8add4 | goto label_42;
| label_140:
0x0008b148 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008b14a movs r7, 0 | r7 = 0;
0x0008b14c ldr r2, [sp, 0x48] | r2 = var_48h;
0x0008b14e mov r0, r5 | r0 = r5;
0x0008b150 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008b152 adds r3, 2 | r3 += 2;
0x0008b154 str r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x0008b156 str r3, [sp, 0x58] | var_58h = r3;
0x0008b158 movs r3, 4 | r3 = 4;
0x0008b15a str r3, [sp, 4] | var_4h = r3;
0x0008b15c mov r3, r7 | r3 = r7;
0x0008b15e str r7, [sp, 8] | var_8h = r7;
0x0008b160 str r7, [sp] | *(sp) = r7;
0x0008b162 bl 0x6b788 | r0 = fcn_0006b788 (r0, r1, r2, r3, r4, r5, r6);
0x0008b166 mov sl, r0 | sl = r0;
0x0008b168 cmp r0, 0 |
| if (r0 == 0) {
0x0008b16a beq.w 0x8a4a4 | goto label_18;
| }
0x0008b16e ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008b172 cmp r2, r7 |
| if (r2 <= r7) {
0x0008b174 ble 0x8b202 | goto label_159;
| }
0x0008b176 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008b178 mov r1, r7 | r1 = r7;
0x0008b17a mov r7, r6 | r7 = r6;
0x0008b17c subs r3, 4 | r3 -= 4;
0x0008b17e str r3, [sp, 0x54] | var_54h = r3;
0x0008b180 b 0x8b1c8 |
| while (r0 >= 0) {
0x0008b182 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0008b184 add.w r0, r1, r0, lsl 4 | r0 = r1 + (r0 << 4);
0x0008b188 ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x0008b18a ldr r0, [r5, 8] | r0 = *((r5 + 8));
| if (r0 != 0) {
0x0008b18c cbz r0, 0x8b1c0 |
0x0008b18e mov r2, r3 | r2 = r3;
0x0008b190 mov r0, r5 | r0 = r5;
0x0008b192 strd r1, r3, [sp, 0x5c] | __asm ("strd r1, r3, [var_60h]");
0x0008b196 bl 0x63a00 | fcn_00063a00 (r0, r1);
0x0008b19a ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008b19c mov r2, r0 | r2 = r0;
0x0008b19e ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x0008b1a0 cmp r0, r3 |
| if (r0 == r3) {
0x0008b1a2 beq 0x8b1fc | goto label_160;
| }
0x0008b1a4 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x0008b1a6 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0008b1a8 tst.w r1, 0x200000 |
0x0008b1ac mov.w r1, 0 | r1 = 0;
0x0008b1b0 str r1, [sp] | *(sp) = r1;
0x0008b1b2 ite ne |
| if ((r1 & 0x200000) == 0) {
0x0008b1b4 movne r1, 0x4d | r1 = 0x4d;
| }
| if ((r1 & 0x200000) != 0) {
0x0008b1b6 moveq r1, 0x4e | r1 = 0x4e;
| }
0x0008b1b8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b1bc ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
| }
| label_47:
0x0008b1c0 adds r7, 1 | r7++;
0x0008b1c2 subs r1, r7, r6 | r1 = r7 - r6;
0x0008b1c4 cmp r2, r1 |
| if (r2 <= r1) {
0x0008b1c6 ble 0x8b202 | goto label_159;
| }
0x0008b1c8 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008b1ca ldr r0, [r3, 4]! | r0 = *((r3 += 4));
0x0008b1ce cmp r0, 0 |
0x0008b1d0 str r3, [sp, 0x54] | var_54h = r3;
0x0008b1d2 add.w r3, r7, 3 | r3 = r7 + 3;
0x0008b1d6 bge 0x8b182 |
| }
0x0008b1d8 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008b1da mov r0, r4 | r0 = r4;
0x0008b1dc str r3, [sp] | *(sp) = r3;
0x0008b1de mov r3, r1 | r3 = r1;
0x0008b1e0 movs r1, 0xaa | r1 = 0xaa;
0x0008b1e2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b1e6 ldr r2, [r4, 0x6c] | r2 = *((r4 + 0x6c));
0x0008b1e8 cmp r2, 0 |
0x0008b1ea itttt gt |
| if (r2 <= 0) {
0x0008b1ec ldrgt r3, [r4, 0x68] | r3 = *((r4 + 0x68));
| }
| if (r2 <= 0) {
0x0008b1ee movgt r1, 0x14 | r1 = 0x14;
| }
| if (r2 > 0) {
0x0008b1f0 mlagt r3, r1, r2, r3 | __asm ("mlagt r3, r1, r2, r3");
| }
| if (r2 > 0) {
0x0008b1f4 movs r2, 1 | r2 = 1;
| }
0x0008b1f6 it gt |
| if (r2 > 1) {
0x0008b1f8 strhgt r2, [r3, -0x12] | __asm ("strhgt r2, [r3, -0x12]");
| }
| label_160:
0x0008b1fc ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008b200 b 0x8b1c0 | goto label_47;
| label_159:
0x0008b202 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008b206 ands r7, r3, 0x80 | r7 = r3 & 0x80;
| if (r7 == r3) {
0x0008b20a beq.w 0x8b8e4 | goto label_161;
| }
0x0008b20e ldr.w r3, [sb, 8] | r3 = *((sb + 8));
| if (r3 != 0) {
0x0008b212 cbnz r3, 0x8b220 | goto label_162;
| }
0x0008b214 b.w 0x8bb3c | goto label_157;
| do {
0x0008b218 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0008b21a cmp r3, 0 |
| if (r3 == 0) {
0x0008b21c beq.w 0x8bb3c | goto label_157;
| }
| label_162:
0x0008b220 ldrb.w r2, [r3, 0x37] | r2 = *((r3 + 0x37));
0x0008b224 and r2, r2, 3 | r2 &= 3;
0x0008b228 cmp r2, 2 |
0x0008b22a bne 0x8b218 |
| } while (r2 != 2);
0x0008b22c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0008b22e movs r1, 0xaa | r1 = 0xaa;
0x0008b230 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008b232 mov r0, r4 | r0 = r4;
0x0008b234 ldrsh.w r7, [r3] | r7 = *(r3);
0x0008b238 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008b23a str r3, [sp] | *(sp) = r3;
0x0008b23c mov r3, r7 | r3 = r7;
0x0008b23e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b242 movs r1, 0 | r1 = 0;
0x0008b244 adds r2, r6, 3 | r2 = r6 + 3;
0x0008b246 str r1, [sp] | *(sp) = r1;
0x0008b248 add r2, r7 | r2 += r7;
0x0008b24a adds r3, r6, 2 | r3 = r6 + 2;
0x0008b24c movs r1, 0x4e | r1 = 0x4e;
0x0008b24e mov r0, r4 | r0 = r4;
0x0008b250 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_69:
0x0008b254 ldr.w r0, [sl, 0x14] | r0 = *((sl + 0x14));
0x0008b258 add r3, sp, 0x10c | r3 += var_10ch;
0x0008b25a ldr.w r1, [sl, 0x18] | r1 = *((sl + 0x18));
0x0008b25e stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x0008b260 ldrb.w r3, [sl, 0x2e] | r3 = *((sl + 0x2e));
0x0008b264 str r3, [sp, 0x50] | var_50h = r3;
0x0008b266 cmp r3, 0 |
| if (r3 != 0) {
0x0008b268 bne.w 0x8b92c | goto label_163;
| }
0x0008b26c ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x0008b26e movs r2, 1 | r2 = 1;
0x0008b270 ldr r6, [sp, 0x4c] | r6 = var_4ch;
0x0008b272 movs r1, 0x5d | r1 = 0x5d;
0x0008b274 mov r0, r4 | r0 = r4;
0x0008b276 cmp r3, 0 |
0x0008b278 it eq |
| if (r3 != 0) {
0x0008b27a moveq r3, r5 | r3 = r5;
| }
0x0008b27c adds r6, 1 | r6++;
0x0008b27e strb r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x0008b280 ldrd r3, r2, [sp, 0x30] | __asm ("ldrd r3, r2, [var_34h]");
0x0008b284 str r6, [sp] | *(sp) = r6;
0x0008b286 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b28a ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008b28c mov r2, fp | r2 = fp;
0x0008b28e ldr r7, [sp, 0x58] | r7 = var_58h;
0x0008b290 movs r1, 0x7b | r1 = 0x7b;
0x0008b292 mov r0, r4 | r0 = r4;
0x0008b294 str r3, [sp] | *(sp) = r3;
0x0008b296 mov r3, r7 | r3 = r7;
0x0008b298 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b29c mov r3, r6 | r3 = r6;
0x0008b29e mov r2, fp | r2 = fp;
0x0008b2a0 movs r1, 0x7c | r1 = 0x7c;
0x0008b2a2 mov r0, r4 | r0 = r4;
0x0008b2a4 str r7, [sp] | *(sp) = r7;
0x0008b2a6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b2aa b 0x8af80 | goto label_48;
| label_139:
0x0008b2ac movs r3, 0 | r3 = 0;
0x0008b2ae mov r2, fp | r2 = fp;
0x0008b2b0 str r3, [sp] | *(sp) = r3;
0x0008b2b2 movs r1, 0x70 | r1 = 0x70;
0x0008b2b4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008b2b6 mov r0, r4 | r0 = r4;
0x0008b2b8 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008b2bc mov r8, r0 | r8 = r0;
0x0008b2be b 0x8ad98 | goto label_49;
| label_146:
0x0008b2c0 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0008b2c2 movs r1, 0x83 | r1 = 0x83;
0x0008b2c4 ldr r4, [sp, 0x44] | r4 = var_44h;
0x0008b2c6 mov r0, r8 | r0 = r8;
0x0008b2c8 str r2, [sp] | *(sp) = r2;
0x0008b2ca str r3, [sp, 0x44] | var_44h = r3;
0x0008b2cc ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008b2ce ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008b2d0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b2d4 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0008b2d6 str r3, [sp, 0x64] | var_64h = r3;
| label_73:
0x0008b2d8 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0008b2da cmp r3, 0 |
| if (r3 == 0) {
0x0008b2dc beq.w 0x8af04 | goto label_50;
| }
0x0008b2e0 mov r1, r3 | r1 = r3;
0x0008b2e2 mov r0, r8 | r0 = r8;
0x0008b2e4 bl 0x1aa40 | fcn_0001aa40 (r0, r1);
0x0008b2e8 movs r3, 0 | r3 = 0;
0x0008b2ea str r3, [sp, 0x64] | var_64h = r3;
0x0008b2ec b 0x8af04 | goto label_50;
| label_145:
0x0008b2ee str r3, [sp, 0x9c] | var_9ch = r3;
0x0008b2f0 str r3, [sp, 0x44] | var_44h = r3;
0x0008b2f2 str r3, [sp, 0x6c] | var_6ch = r3;
| label_55:
0x0008b2f4 ldrb r3, [r5, 0x12] | r3 = *((r5 + 0x12));
0x0008b2f6 ldr r2, [sp, 0x74] | r2 = var_74h;
0x0008b2f8 orrs r3, r2 | r3 |= r2;
0x0008b2fa it ne |
| if (r3 == r2) {
0x0008b2fc movne r3, 4 | r3 = 4;
| }
| if (r3 == r2) {
0x0008b2fe bne 0x8b310 |
0x0008b300 ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x0008b302 ldr r3, [sp, 0xc4] | r3 = var_c4h;
0x0008b304 orrs r3, r2 | r3 |= r2;
0x0008b306 ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008b308 orrs r3, r2 | r3 |= r2;
0x0008b30a ite eq |
| if (r3 != r2) {
0x0008b30c moveq r3, 0xc | r3 = 0xc;
| }
| if (r3 != r2) {
0x0008b30e movne r3, 4 | r3 = 4;
| goto label_164;
| }
| }
| label_164:
0x0008b310 str r3, [sp, 4] | var_4h = r3;
0x0008b312 mov.w ip, 0 |
0x0008b316 ldr r3, [sp, 0x80] | r3 = var_80h;
0x0008b318 mov r0, r5 | r0 = r5;
0x0008b31a ldr r2, [sp, 0x48] | r2 = var_48h;
0x0008b31c ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008b31e str r3, [sp, 8] | var_8h = r3;
0x0008b320 mov r3, ip | r3 = ip;
0x0008b322 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x0008b326 bl 0x6b788 | r0 = fcn_0006b788 (r0, r1, r2, r3, r4, r5, r6);
0x0008b32a mov r3, r0 | r3 = r0;
0x0008b32c str r0, [sp, 0x78] | var_78h = r0;
0x0008b32e cmp r0, 0 |
| if (r0 == 0) {
0x0008b330 beq.w 0x8a4a4 | goto label_18;
| }
0x0008b334 ldr r0, [r0, 0x14] | r0 = *((r0 + 0x14));
0x0008b336 add r2, sp, 0x10c | r2 += var_10ch;
0x0008b338 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x0008b33a mov.w ip, 0 |
0x0008b33e stm r2!, {r0, r1} | *(r2!) = r0;
| *((r2! + 4)) = r1;
0x0008b340 ldrb.w sl, [r3, 0x2e] | sl = *((r3 + 0x2e));
0x0008b344 ldrb.w r2, [r3, 0x30] | r2 = *((r3 + 0x30));
0x0008b348 cmp.w sl, 1 |
0x0008b34c and r2, r2, 1 | r2 &= 1;
0x0008b350 str r2, [sp, 0x88] | var_88h = r2;
0x0008b352 it eq |
| if (sl == 1) {
0x0008b354 ldreq r2, [sb, 0x24] | r2 = *((sb + 0x24));
| goto label_165;
| }
| if (sl == 1) {
| label_165:
0x0008b358 beq.w 0x8aebe | goto label_51;
| }
0x0008b35c ldr r2, [r5, 0x74] | r2 = *((r5 + 0x74));
0x0008b35e movs r1, 1 | r1 = 1;
0x0008b360 cmp r2, 0 |
0x0008b362 it eq |
| if (r2 != 0) {
0x0008b364 moveq r2, r5 | r2 = r5;
| }
0x0008b366 cmp.w sl, 2 |
0x0008b36a strb r1, [r2, 0x14] | *((r2 + 0x14)) = r1;
0x0008b36c ldr.w r2, [sb, 0x24] | r2 = *((sb + 0x24));
0x0008b370 and r0, r2, 0x80 | r0 = r2 & 0x80;
| if (sl == 2) {
0x0008b374 beq.w 0x8ba92 | goto label_166;
| }
0x0008b378 cmp r0, 0 |
| if (r0 != 0) {
0x0008b37a bne.w 0x8aec6 | goto label_52;
| }
0x0008b37e str r0, [sp] | *(sp) = r0;
0x0008b380 movs r1, 0x83 | r1 = 0x83;
0x0008b382 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008b384 mov r0, r8 | r0 = r8;
0x0008b386 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008b388 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b38c cmp.w sl, 0 |
| if (sl != 0) {
0x0008b390 bne.w 0x8b9e0 | goto label_167;
| }
| label_79:
0x0008b394 ldr r2, [sp, 0x9c] | r2 = var_9ch;
0x0008b396 mov r3, r4 | r3 = r4;
0x0008b398 ldr r4, [sp, 0x44] | r4 = var_44h;
0x0008b39a mov r0, r8 | r0 = r8;
0x0008b39c ldr r1, [sp, 0xb0] | r1 = var_b0h;
0x0008b39e str r2, [sp, 0x44] | var_44h = r2;
0x0008b3a0 ldr r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x0008b3a2 adds r2, 1 | r2++;
0x0008b3a4 str r2, [r5, 0x2c] | *((r5 + 0x2c)) = r2;
0x0008b3a6 str r2, [r1] | *(r1) = r2;
0x0008b3a8 movs r1, 0x7c | r1 = 0x7c;
0x0008b3aa ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008b3ac str r2, [sp] | *(sp) = r2;
0x0008b3ae mov r2, r6 | r2 = r6;
0x0008b3b0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b3b4 movs r3, 0 | r3 = 0;
0x0008b3b6 mov sl, r3 | sl = r3;
0x0008b3b8 str r3, [sp, 0x64] | var_64h = r3;
| label_72:
0x0008b3ba ldr r0, [sp, 0x78] | r0 = var_78h;
0x0008b3bc bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
| label_71:
0x0008b3c0 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008b3c2 cmp r3, 0 |
| if (r3 == 0) {
0x0008b3c4 beq.w 0x8b566 | goto label_168;
| }
| label_58:
0x0008b3c8 cmp.w sl, 0 |
| if (sl == 0) {
0x0008b3cc beq.w 0x8b51e | goto label_60;
| }
| label_57:
0x0008b3d0 ldr r3, [sp, 0x10c] | r3 = var_10ch;
0x0008b3d2 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008b3d4 cmp r3, r2 |
| if (r3 != r2) {
0x0008b3d6 beq 0x8b3f2 |
| label_76:
0x0008b3d8 ldr r3, [sp, 0x110] | r3 = var_110h;
0x0008b3da ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008b3dc cmp r3, r2 |
| if (r3 == r2) {
0x0008b3de beq 0x8b3f2 | goto label_169;
| }
0x0008b3e0 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008b3e2 movs r1, 0x1d | r1 = 0x1d;
0x0008b3e4 mov r0, r8 | r0 = r8;
0x0008b3e6 str r3, [sp, 4] | var_4h = r3;
0x0008b3e8 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008b3ea str r3, [sp] | *(sp) = r3;
0x0008b3ec mov r3, r7 | r3 = r7;
0x0008b3ee bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
| }
| label_169:
0x0008b3f2 cmp.w sl, 1 |
0x0008b3f6 it eq |
| if (sl != 1) {
0x0008b3f8 moveq r2, r7 | r2 = r7;
| }
| if (sl != 1) {
0x0008b3fa beq 0x8b402 |
| label_77:
0x0008b3fc ldr r2, [r5, 0x38] | r2 = *((r5 + 0x38));
0x0008b3fe subs r2, 1 | r2--;
0x0008b400 str r2, [r5, 0x38] | *((r5 + 0x38)) = r2;
| }
0x0008b402 mov r3, r7 | r3 = r7;
0x0008b404 mov r7, r2 | r7 = r2;
0x0008b406 movs r2, 0 | r2 = 0;
0x0008b408 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0008b40a ldr r0, [sp, 0x40] | r0 = var_40h;
0x0008b40c str r2, [sp] | *(sp) = r2;
0x0008b40e ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008b410 cmp r0, 0 |
0x0008b412 it eq |
| if (r0 != 0) {
0x0008b414 moveq r2, r1 | r2 = r1;
| }
0x0008b416 movs r1, 0x32 | r1 = 0x32;
0x0008b418 mov r0, r8 | r0 = r8;
0x0008b41a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b41e b 0x8af0c | goto label_53;
| label_144:
0x0008b420 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008b422 mov r2, r6 | r2 = r6;
0x0008b424 movs r1, 0x70 | r1 = 0x70;
0x0008b426 mov r0, r8 | r0 = r8;
0x0008b428 str r4, [sp] | *(sp) = r4;
0x0008b42a bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008b42e str r0, [sp, 0x70] | var_70h = r0;
0x0008b430 b 0x8ae94 | goto label_54;
| label_122:
0x0008b432 mov r3, r2 | r3 = r2;
0x0008b434 ldr r2, [sp, 0x64] | r2 = var_64h;
0x0008b436 adds r2, r3, r2 | r2 = r3 + r2;
0x0008b438 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008b43a cmp r3, 0 |
| if (r3 == 0) {
0x0008b43c beq.w 0x8b794 | goto label_170;
| }
0x0008b440 ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
| label_64:
0x0008b444 ldr r6, [r5, 0x28] | r6 = *((r5 + 0x28));
0x0008b446 add.w sl, r2, r3 | sl = r2 + r3;
0x0008b44a adds r3, r6, 1 | r3 = r6 + 1;
0x0008b44c str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0008b44e ldr r3, [sp, 0x40] | r3 = var_40h;
| if (r3 != 0) {
0x0008b450 cbz r3, 0x8b468 |
0x0008b452 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008b454 movs r1, 0x48 | r1 = 0x48;
0x0008b456 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008b458 mov r0, r8 | r0 = r8;
0x0008b45a adds r3, r2, r3 | r3 = r2 + r3;
0x0008b45c subs r3, 1 | r3--;
0x0008b45e str r3, [sp] | *(sp) = r3;
0x0008b460 mov r3, r2 | r3 = r2;
0x0008b462 movs r2, 0 | r2 = 0;
0x0008b464 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0008b468 ldr.w r3, [r8, 0x6c] | r3 = *((r8 + 0x6c));
0x0008b46c mov r2, r3 | r2 = r3;
0x0008b46e str r3, [sp, 0x70] | var_70h = r3;
0x0008b470 ldr.w r3, [r8, 0x70] | r3 = *((r8 + 0x70));
0x0008b474 cmp r2, r3 |
| if (r2 >= r3) {
0x0008b476 bge.w 0x8b77a | goto label_171;
| }
0x0008b47a ldr r2, [sp, 0x70] | r2 = var_70h;
0x0008b47c movs r0, 0 | r0 = 0;
0x0008b47e ldr.w r1, [r8, 0x68] | r1 = *((r8 + 0x68));
0x0008b482 mov.w ip, 0x70 |
0x0008b486 add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x0008b48a adds r2, 1 | r2++;
0x0008b48c str.w r2, [r8, 0x6c] | __asm ("str.w r2, [r8, 0x6c]");
0x0008b490 lsls r3, r3, 2 | r3 <<= 2;
0x0008b492 adds r2, r1, r3 | r2 = r1 + r3;
0x0008b494 strd r6, sl, [r2, 4] | __asm ("strd r6, sl, [r2, 4]");
0x0008b498 strd r0, r0, [r2, 0xc] | __asm ("strd r0, r0, [r2, 0xc]");
0x0008b49c str.w ip, [r1, r3] | __asm ("str.w ip, [r1, r3]");
| label_62:
0x0008b4a0 ldr r3, [sp, 0x40] | r3 = var_40h;
| if (r3 != 0) {
0x0008b4a2 cbz r3, 0x8b4da |
0x0008b4a4 mov r1, r3 | r1 = r3;
0x0008b4a6 mov r0, r5 | r0 = r5;
0x0008b4a8 bl 0x2d384 | r0 = fcn_0002d384 (r0, r1);
0x0008b4ac mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x0008b4ae cbz r0, 0x8b4da | goto label_65;
| }
0x0008b4b0 strh.w sl, [r0, 8] | *((r0 + 8)) = sl;
0x0008b4b4 ldr.w r0, [r8] | r0 = *(r8);
0x0008b4b8 ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x0008b4bc cmp r3, 0 |
| if (r3 != 0) {
0x0008b4be bne.w 0x8b798 | goto label_172;
| }
0x0008b4c2 ldr.w r3, [r8, 0x6c] | r3 = *((r8 + 0x6c));
0x0008b4c6 movs r1, 0x14 | r1 = 0x14;
0x0008b4c8 mul r3, r1, r3 | r3 = r1 * r3;
0x0008b4cc ldr.w r1, [r8, 0x68] | r1 = *((r8 + 0x68));
0x0008b4d0 subs r3, 0x14 | r3 -= 0x14;
0x0008b4d2 add r3, r1 | r3 += r1;
0x0008b4d4 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x0008b4d6 movs r2, 0xf7 | r2 = 0xf7;
0x0008b4d8 strb r2, [r3, 1] | *((r3 + 1)) = r2;
| }
| label_65:
0x0008b4da ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008b4dc cmp r3, 0 |
| if (r3 == 0) {
0x0008b4de beq.w 0x8b2f4 | goto label_55;
| }
0x0008b4e2 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008b4e4 mov r1, r6 | r1 = r6;
0x0008b4e6 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0008b4e8 mov r0, r5 | r0 = r5;
0x0008b4ea str r3, [sp, 4] | var_4h = r3;
0x0008b4ec ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008b4ee str r3, [sp] | *(sp) = r3;
0x0008b4f0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008b4f2 cmp r2, 0 |
0x0008b4f4 it ne |
| if (r2 == 0) {
0x0008b4f6 movne r3, r6 | r3 = r6;
| }
0x0008b4f8 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008b4fa str r3, [sp, 0x30] | var_30h = r3;
0x0008b4fc ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008b4fe bl 0x70acc | fcn_00070acc (r0, r1, r2, r3);
0x0008b502 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x0008b504 cmp r3, 0 |
| if (r3 == 0) {
0x0008b506 beq.w 0x8b78e | goto label_173;
| }
0x0008b50a movs r2, 1 | r2 = 1;
0x0008b50c strb r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
| label_63:
0x0008b50e ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008b510 cmp r3, 0 |
| if (r3 == 0) {
0x0008b512 beq 0x8b60a | goto label_174;
| }
0x0008b514 ldr r4, [sp, 0x44] | r4 = var_44h;
0x0008b516 movs r3, 0 | r3 = 0;
0x0008b518 str r3, [sp, 0x78] | var_78h = r3;
0x0008b51a movs r3, 1 | r3 = 1;
0x0008b51c str r3, [sp, 0x88] | var_88h = r3;
| label_60:
0x0008b51e ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008b520 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008b522 orrs.w sl, r2, r3 | sl = r2 | r3;
0x0008b526 mov r3, r7 | r3 = r7;
| if (sl == r2) {
0x0008b528 beq.w 0x8ba20 | goto label_175;
| }
0x0008b52c ldr r2, [r5, 0x38] | r2 = *((r5 + 0x38));
0x0008b52e movs r1, 0x25 | r1 = 0x25;
0x0008b530 mov r0, r8 | r0 = r8;
0x0008b532 subs r7, r2, 1 | r7 = r2 - 1;
0x0008b534 movs r2, 0 | r2 = 0;
0x0008b536 str r7, [r5, 0x38] | *((r5 + 0x38)) = r7;
0x0008b538 str r2, [sp] | *(sp) = r2;
0x0008b53a mov r2, r6 | r2 = r6;
0x0008b53c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b540 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008b542 ldr.w r2, [r8, 0x6c] | r2 = *((r8 + 0x6c));
0x0008b546 str r2, [sp, 0x70] | var_70h = r2;
0x0008b548 cmp r3, 0 |
| if (r3 == 0) {
0x0008b54a beq.w 0x8b9ec | goto label_176;
| }
0x0008b54e ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008b550 cmp r3, 0 |
| if (r3 == 0) {
0x0008b552 beq.w 0x8bace | goto label_177;
| }
| label_80:
0x0008b556 cmp.w fp, 0 |
| if (fp == 0) {
0x0008b55a beq.w 0x8bac2 | goto label_178;
| }
0x0008b55e mov.w sl, 0 | sl = 0;
0x0008b562 b.w 0x8ab6c | goto label_56;
| label_168:
0x0008b566 cmp.w sl, 0 |
| if (sl == 0) {
0x0008b56a beq 0x8b614 | goto label_179;
| }
0x0008b56c ldr r3, [sp, 0x10c] | r3 = var_10ch;
0x0008b56e cmp r3, 0 |
| if (r3 >= 0) {
0x0008b570 blt 0x8b57c |
0x0008b572 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008b574 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x0008b576 subs r3, r3, r2 | r3 -= r2;
0x0008b578 ldr r2, [sp, 0x98] | r2 = var_98h;
0x0008b57a strb r1, [r2, r3] | *((r2 + r3)) = r1;
| }
0x0008b57c ldr r3, [sp, 0x110] | r3 = var_110h;
0x0008b57e cmp r3, 0 |
| if (r3 >= 0) {
0x0008b580 blt 0x8b58c |
0x0008b582 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008b584 ldr r1, [sp, 0x98] | r1 = var_98h;
0x0008b586 subs r3, r3, r2 | r3 -= r2;
0x0008b588 movs r2, 0 | r2 = 0;
0x0008b58a strb r2, [r1, r3] | *((r1 + r3)) = r2;
| }
0x0008b58c cmp.w sl, 2 |
| if (sl == 2) {
0x0008b590 bne 0x8b59e |
0x0008b592 ldr r3, [sp, 0x110] | r3 = var_110h;
0x0008b594 ldr r2, [sp, 0xac] | r2 = var_ach;
0x0008b596 mvns r3, r3 | r3 = ~r3;
0x0008b598 lsrs r3, r3, 0x1f | r3 >>= 0x1f;
0x0008b59a cmp r2, r3 |
| if (r2 > r3) {
0x0008b59c bgt 0x8b5c2 | goto label_180;
| }
| }
0x0008b59e ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008b5a2 cmp r3, 0 |
| if (r3 != 0) {
0x0008b5a4 bne.w 0x8b3d0 | goto label_57;
| }
| label_59:
0x0008b5a8 ldr r3, [sp, 0x98] | r3 = var_98h;
0x0008b5aa movs r2, 0x63 | r2 = 0x63;
0x0008b5ac mov r1, sb | r1 = sb;
0x0008b5ae mov r0, r5 | r0 = r5;
0x0008b5b0 str r3, [sp, 4] | var_4h = r3;
0x0008b5b2 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008b5b4 str r3, [sp] | *(sp) = r3;
0x0008b5b6 movs r3, 0 | r3 = 0;
0x0008b5b8 strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [var_8h]");
0x0008b5bc bl 0x2f32c | fcn_0002f32c (r0, r1, r2, r3, r4, r5, r6);
0x0008b5c0 b 0x8b3c8 | goto label_58;
| label_180:
0x0008b5c2 movs r3, 0 | r3 = 0;
0x0008b5c4 movs r1, 0x11 | r1 = 0x11;
0x0008b5c6 mov r2, r3 | r2 = r3;
0x0008b5c8 str r3, [sp] | *(sp) = r3;
0x0008b5ca mov r0, r8 | r0 = r8;
0x0008b5cc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b5d0 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008b5d4 mov r4, r0 | r4 = r0;
0x0008b5d6 cmp r3, 0 |
| if (r3 != 0) {
0x0008b5d8 bne.w 0x8ba78 | goto label_181;
| }
0x0008b5dc ldr r2, [sp, 0x98] | r2 = var_98h;
0x0008b5de mov r1, sb | r1 = sb;
0x0008b5e0 mov r0, r5 | r0 = r5;
0x0008b5e2 strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [var_8h]");
0x0008b5e6 str r2, [sp, 4] | var_4h = r2;
0x0008b5e8 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008b5ea str r2, [sp] | *(sp) = r2;
0x0008b5ec movs r2, 0x63 | r2 = 0x63;
0x0008b5ee bl 0x2f32c | fcn_0002f32c (r0, r1, r2, r3, r4, r5, r6);
0x0008b5f2 cmp r4, 0 |
| if (r4 == 0) {
0x0008b5f4 beq.w 0x8b3d0 | goto label_57;
| }
| label_75:
0x0008b5f8 ldr.w r2, [r8, 0x6c] | r2 = *((r8 + 0x6c));
0x0008b5fc subs r3, r2, 1 | r3 = r2 - 1;
0x0008b5fe cmp r4, r3 |
| if (r4 != r3) {
0x0008b600 bne.w 0x8ba58 | goto label_182;
| }
0x0008b604 str.w r4, [r8, 0x6c] | __asm ("str.w r4, [r8, 0x6c]");
0x0008b608 b 0x8b3d0 | goto label_57;
| label_174:
0x0008b60a ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008b60c ldr r4, [sp, 0x44] | r4 = var_44h;
0x0008b60e str r3, [sp, 0x78] | var_78h = r3;
0x0008b610 movs r3, 1 | r3 = 1;
0x0008b612 str r3, [sp, 0x88] | var_88h = r3;
| label_179:
0x0008b614 ldr.w sl, [sb, 0x38] | sl = *((sb + 0x38));
0x0008b618 cmp.w sl, 0 |
| if (sl == 0) {
0x0008b61c beq 0x8b5a8 | goto label_59;
| }
0x0008b61e b 0x8b51e | goto label_60;
| label_132:
0x0008b620 movs r3, 0 | r3 = 0;
0x0008b622 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008b624 str r3, [sp] | *(sp) = r3;
0x0008b626 movs r1, 0x4d | r1 = 0x4d;
0x0008b628 ldr r3, [sp, 0x68] | r3 = var_68h;
0x0008b62a mov r0, r8 | r0 = r8;
0x0008b62c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b630 b.w 0x8a898 | goto label_61;
| label_171:
0x0008b77a movs r3, 0 | r3 = 0;
0x0008b77c mov r2, r6 | r2 = r6;
0x0008b77e str r3, [sp] | *(sp) = r3;
0x0008b780 movs r1, 0x70 | r1 = 0x70;
0x0008b782 mov r3, sl | r3 = sl;
0x0008b784 mov r0, r8 | r0 = r8;
0x0008b786 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008b78a str r0, [sp, 0x70] | var_70h = r0;
0x0008b78c b 0x8b4a0 | goto label_62;
| label_173:
0x0008b78e movs r3, 1 | r3 = 1;
0x0008b790 strb r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
0x0008b792 b 0x8b50e | goto label_63;
| label_170:
0x0008b794 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008b796 b 0x8b444 | goto label_64;
| label_172:
0x0008b798 mvn r1, 8 | r1 = ~8;
0x0008b79c bl 0x1a7f4 | fcn_0001a7f4 (r0);
0x0008b7a0 b 0x8b4da | goto label_65;
| label_121:
0x0008b7a2 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008b7a4 str r3, [sp, 0x64] | var_64h = r3;
0x0008b7a6 str r3, [sp, 0x6c] | var_6ch = r3;
0x0008b7a8 b.w 0x8a6c0 | goto label_66;
| label_123:
0x0008b7ac mov r6, r3 | r6 = r3;
0x0008b7ae str r3, [sp, 0x70] | var_70h = r3;
0x0008b7b0 b.w 0x8aea4 | goto label_67;
| label_116:
0x0008b8c8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008b8ca cmp r3, 0 |
| if (r3 == 0) {
0x0008b8cc beq.w 0x8ad1a | goto label_68;
| }
0x0008b8d0 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008b8d2 str r3, [sp, 0xb8] | var_b8h = r3;
0x0008b8d4 b.w 0x8a67e | goto label_38;
| label_136:
0x0008b8d8 ldr r6, [sp, 0x78] | r6 = var_78h;
0x0008b8da mov sl, r6 | sl = r6;
| label_151:
0x0008b8dc movs r3, 0 | r3 = 0;
0x0008b8de str r3, [sp, 0x70] | var_70h = r3;
0x0008b8e0 b.w 0x8ab6c | goto label_56;
| label_161:
0x0008b8e4 movs r1, 0x83 | r1 = 0x83;
0x0008b8e6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008b8e8 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008b8ea mov r0, r4 | r0 = r4;
0x0008b8ec str r7, [sp] | *(sp) = r7;
0x0008b8ee adds r6, 2 | r6 += 2;
0x0008b8f0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b8f4 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0008b8f6 cmp r1, 0 |
| if (r1 == 0) {
0x0008b8f8 beq 0x8b96c | goto label_183;
| }
0x0008b8fa ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0008b8fc cmp r3, 0 |
| if (r3 == 0) {
0x0008b8fe beq.w 0x8b254 | goto label_69;
| }
0x0008b902 mov r2, r6 | r2 = r6;
0x0008b904 mov r0, r5 | r0 = r5;
0x0008b906 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0008b90a cmp r0, r6 |
0x0008b90c mov r2, r0 | r2 = r0;
| if (r0 == r6) {
0x0008b90e beq.w 0x8b254 | goto label_69;
| }
0x0008b912 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0008b914 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0008b916 str r7, [sp] | *(sp) = r7;
0x0008b918 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0008b91a tst.w r3, 0x200000 |
0x0008b91e mov r3, r6 | r3 = r6;
0x0008b920 ite ne |
| if ((r3 & 0x200000) == 0) {
0x0008b922 movne r1, 0x4d | r1 = 0x4d;
| }
| if ((r3 & 0x200000) != 0) {
0x0008b924 moveq r1, 0x4e | r1 = 0x4e;
| }
0x0008b926 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b92a b 0x8b254 | goto label_69;
| label_163:
0x0008b92c ldr r0, [r4] | r0 = *(r4);
0x0008b92e ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x0008b932 str r3, [sp, 0x54] | var_54h = r3;
| if (r3 == 0) {
0x0008b934 cbnz r3, 0x8b956 |
0x0008b936 movs r6, 0x14 | r6 = 0x14;
0x0008b938 ldr r3, [r4, 0x68] | r3 = *((r4 + 0x68));
0x0008b93a mul r6, r6, r8 | r6 *= r8;
0x0008b93e str r3, [sp, 0x4c] | var_4ch = r3;
0x0008b940 adds r7, r3, r6 | r7 = r3 + r6;
0x0008b942 ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x0008b944 ldrsb.w r1, [r7, 1] | r1 = *((r7 + 1));
0x0008b948 bl 0x1a7f4 | fcn_0001a7f4 (r0);
0x0008b94c ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008b94e ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008b950 str r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
0x0008b952 movs r3, 0xb1 | r3 = 0xb1;
0x0008b954 strh r3, [r2, r6] | *((r2 + r6)) = r3;
| }
0x0008b956 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008b958 movs r1, 0x76 | r1 = 0x76;
0x0008b95a ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008b95c mov r0, r4 | r0 = r4;
0x0008b95e str r3, [sp, 0x6c] | var_6ch = r3;
0x0008b960 movs r3, 0 | r3 = 0;
0x0008b962 str r3, [sp] | *(sp) = r3;
0x0008b964 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b968 b.w 0x8afd4 | goto label_70;
| label_183:
0x0008b96c ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008b96e movs r1, 0x83 | r1 = 0x83;
0x0008b970 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008b972 mov r0, r4 | r0 = r4;
0x0008b974 str r3, [sp] | *(sp) = r3;
0x0008b976 mov r3, r6 | r3 = r6;
0x0008b978 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008b97c b 0x8b254 | goto label_69;
| label_150:
0x0008b97e cmp.w sl, 2 |
| if (sl == 2) {
0x0008b982 beq.w 0x8b3c0 | goto label_71;
| }
0x0008b986 ldr r3, [sp, 0xb8] | r3 = var_b8h;
0x0008b988 cmp r3, 0 |
| if (r3 != 0) {
0x0008b98a bne.w 0x8b3ba | goto label_72;
| }
0x0008b98e b 0x8b3c0 | goto label_71;
| label_149:
0x0008b990 mov r1, r3 | r1 = r3;
0x0008b992 mov r0, r8 | r0 = r8;
0x0008b994 bl 0x1aa40 | fcn_0001aa40 (r0, r1);
0x0008b998 ldr r4, [sp, 0x44] | r4 = var_44h;
0x0008b99a b.w 0x8af04 | goto label_50;
| label_148:
0x0008b99e ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008b9a0 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008b9a2 bl 0x1305c | fcn_0001305c (r0, r1);
0x0008b9a6 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008b9a8 movs r1, 0x5d | r1 = 0x5d;
0x0008b9aa ldr r4, [sp, 0x9c] | r4 = var_9ch;
0x0008b9ac ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008b9ae str r0, [sp, 4] | var_4h = r0;
0x0008b9b0 mov r0, r8 | r0 = r8;
0x0008b9b2 str r3, [sp, 8] | var_8h = r3;
0x0008b9b4 str r4, [sp] | *(sp) = r4;
0x0008b9b6 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0008b9ba ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008b9bc mov r2, r6 | r2 = r6;
0x0008b9be movs r1, 0x86 | r1 = 0x86;
0x0008b9c0 mov r0, r8 | r0 = r8;
0x0008b9c2 str r3, [sp, 4] | var_4h = r3;
0x0008b9c4 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008b9c6 str r3, [sp] | *(sp) = r3;
0x0008b9c8 mov r3, r4 | r3 = r4;
0x0008b9ca bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0008b9ce ldr r2, [sp, 0x54] | r2 = var_54h;
0x0008b9d0 cmp r2, 0 |
| if (r2 == 0) {
0x0008b9d2 beq.w 0x8bb0e | goto label_184;
| }
0x0008b9d6 str r4, [sp, 0x44] | var_44h = r4;
0x0008b9d8 str.w sl, [sp, 0x64] | __asm ("str.w sl, [var_64h]");
0x0008b9dc b.w 0x8af0c | goto label_53;
| label_167:
0x0008b9e0 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0008b9e2 ldr r4, [sp, 0x44] | r4 = var_44h;
0x0008b9e4 str r3, [sp, 0x44] | var_44h = r3;
0x0008b9e6 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0008b9e8 str r3, [sp, 0x64] | var_64h = r3;
0x0008b9ea b 0x8b2d8 | goto label_73;
| label_176:
0x0008b9ec ldr r4, [sp, 0x34] | r4 = var_34h;
0x0008b9ee mov r2, r6 | r2 = r6;
0x0008b9f0 ldr.w sl, [sp, 0x44] | sl = var_44h;
0x0008b9f4 movs r1, 0x82 | r1 = 0x82;
0x0008b9f6 mov r0, r8 | r0 = r8;
0x0008b9f8 str r4, [sp] | *(sp) = r4;
0x0008b9fa mov r3, sl | r3 = sl;
0x0008b9fc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ba00 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008ba02 mov r3, r7 | r3 = r7;
0x0008ba04 movs r1, 0x1d | r1 = 0x1d;
0x0008ba06 mov r0, r8 | r0 = r8;
0x0008ba08 str r4, [sp, 4] | var_4h = r4;
0x0008ba0a str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0008ba0e bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
| do {
0x0008ba12 cmp.w fp, 0 |
| if (fp == 0) {
0x0008ba16 beq 0x8bac2 | goto label_178;
| }
0x0008ba18 mov.w sl, 0 | sl = 0;
0x0008ba1c b.w 0x8af1e | goto label_74;
| label_175:
0x0008ba20 mov r2, r6 | r2 = r6;
0x0008ba22 movs r1, 0x25 | r1 = 0x25;
0x0008ba24 mov r0, r8 | r0 = r8;
0x0008ba26 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0008ba2a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ba2e ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x0008ba30 mov r2, r6 | r2 = r6;
0x0008ba32 ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0008ba34 movs r1, 0x83 | r1 = 0x83;
0x0008ba36 mov r0, r8 | r0 = r8;
0x0008ba38 subs r7, r3, 1 | r7 = r3 - 1;
0x0008ba3a str r7, [r5, 0x38] | *((r5 + 0x38)) = r7;
0x0008ba3c mov r3, r4 | r3 = r4;
0x0008ba3e str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0008ba42 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ba46 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008ba48 mov r3, r7 | r3 = r7;
0x0008ba4a str r0, [sp, 0x70] | var_70h = r0;
0x0008ba4c movs r1, 0x20 | r1 = 0x20;
0x0008ba4e mov r0, r8 | r0 = r8;
0x0008ba50 str r4, [sp] | *(sp) = r4;
0x0008ba52 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ba56 b 0x8ba12 |
| } while (1);
| label_182:
0x0008ba58 bics.w r4, r4, r4, asr 32 | __asm ("bics.w r4, r4, r4, asr 32");
0x0008ba5c it hs |
| if (r1 < 0x20) {
0x0008ba5e movhs r4, r3 | r4 = r3;
| }
0x0008ba60 ldr.w r3, [r8] | r3 = *(r8);
0x0008ba64 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 != 0) {
0x0008ba68 cbnz r3, 0x8ba8a | goto label_185;
| }
0x0008ba6a ldr.w r3, [r8, 0x68] | r3 = *((r8 + 0x68));
0x0008ba6e movs r1, 0x14 | r1 = 0x14;
0x0008ba70 mla r3, r1, r4, r3 | __asm ("mla r3, r1, r4, r3");
| label_78:
0x0008ba74 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0008ba76 b 0x8b3d0 | goto label_57;
| label_181:
0x0008ba78 cmp r0, 0 |
| if (r0 != 0) {
0x0008ba7a bne.w 0x8b5f8 | goto label_75;
| }
0x0008ba7e ldr r3, [sp, 0x10c] | r3 = var_10ch;
0x0008ba80 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008ba82 cmp r2, r3 |
| if (r2 != r3) {
0x0008ba84 bne.w 0x8b3d8 | goto label_76;
| }
0x0008ba88 b 0x8b3fc | goto label_77;
| label_185:
0x0008ba8a ldr r3, [pc, 0xb8] |
0x0008ba8c add r3, pc | r3 = 0x1175d6;
0x0008ba8e adds r3, 4 | r3 += 4;
0x0008ba90 b 0x8ba74 | goto label_78;
| label_166:
0x0008ba92 ldr r1, [sp, 0x110] | r1 = var_110h;
0x0008ba94 cmp r1, 0 |
| if (r1 < 0) {
0x0008ba96 blt.w 0x8aebe | goto label_51;
| }
0x0008ba9a ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008ba9c cmp r3, r1 |
| if (r3 == r1) {
0x0008ba9e beq.w 0x8aebe | goto label_51;
| }
0x0008baa2 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008baa4 subs r1, r1, r3 | r1 -= r3;
0x0008baa6 ldr r3, [sp, 0x98] | r3 = var_98h;
0x0008baa8 ldrb r1, [r3, r1] | r1 = *((r3 + r1));
0x0008baaa cmp r1, 0 |
| if (r1 == 0) {
0x0008baac beq.w 0x8aebe | goto label_51;
| }
| if (r0 == 0) {
0x0008bab0 cbnz r0, 0x8bac8 |
0x0008bab2 str r0, [sp] | *(sp) = r0;
0x0008bab4 movs r1, 0x83 | r1 = 0x83;
0x0008bab6 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008bab8 mov r0, r8 | r0 = r8;
0x0008baba ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008babc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008bac0 b 0x8b394 | goto label_79;
| label_178:
0x0008bac2 mov sl, fp | sl = fp;
0x0008bac4 b.w 0x8a70a | goto label_31;
| }
0x0008bac8 mov sl, ip | sl = ip;
0x0008baca b.w 0x8aec6 | goto label_52;
| label_177:
0x0008bace ldr r3, [sp, 0x40] | r3 = var_40h;
| if (r3 == 0) {
0x0008bad0 cbz r3, 0x8bb1a | goto label_186;
| }
0x0008bad2 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008bad4 cmp r3, 0 |
0x0008bad6 it gt |
| if (r3 <= 0) {
0x0008bad8 ldrgt sl, [sp, 0x5c] | sl = var_5ch;
| }
| if (r3 <= 0) {
0x0008badc ble 0x8bafa | goto label_187;
| }
| do {
0x0008bade add.w r3, sl, r4 | r3 = sl + r4;
0x0008bae2 mov r2, r6 | r2 = r6;
0x0008bae4 str r3, [sp] | *(sp) = r3;
0x0008bae6 movs r1, 0x5b | r1 = 0x5b;
0x0008bae8 mov r3, sl | r3 = sl;
0x0008baea mov r0, r8 | r0 = r8;
0x0008baec bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008baf0 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008baf2 add.w sl, sl, 1 | sl++;
0x0008baf6 cmp sl, r3 |
0x0008baf8 blt 0x8bade |
| } while (sl < r3);
| label_187:
0x0008bafa ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008bafc movs r1, 0x1d | r1 = 0x1d;
0x0008bafe ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008bb00 mov r0, r8 | r0 = r8;
0x0008bb02 str r4, [sp] | *(sp) = r4;
0x0008bb04 str r3, [sp, 4] | var_4h = r3;
0x0008bb06 mov r3, r7 | r3 = r7;
0x0008bb08 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0008bb0c b 0x8b556 | goto label_80;
| label_184:
0x0008bb0e ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0008bb10 ldr r4, [sp, 0x44] | r4 = var_44h;
0x0008bb12 str r3, [sp, 0x44] | var_44h = r3;
0x0008bb14 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008bb16 str r3, [sp, 0x64] | var_64h = r3;
0x0008bb18 b 0x8b3ba | goto label_72;
| label_186:
0x0008bb1a ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008bb1c mov r2, r6 | r2 = r6;
0x0008bb1e ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0008bb20 movs r1, 0x83 | r1 = 0x83;
0x0008bb22 mov r0, r8 | r0 = r8;
0x0008bb24 str r3, [sp] | *(sp) = r3;
0x0008bb26 mov r3, r4 | r3 = r4;
0x0008bb28 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008bb2c ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008bb2e mov r3, r7 | r3 = r7;
0x0008bb30 movs r1, 0x20 | r1 = 0x20;
0x0008bb32 mov r0, r8 | r0 = r8;
0x0008bb34 str r4, [sp] | *(sp) = r4;
0x0008bb36 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008bb3a b 0x8b556 | goto label_80;
| label_157:
0x0008bb3c movs r3, 0 | r3 = 0;
0x0008bb3e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0008bb40 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x8bb48 */
| #include <stdint.h>
|
; (fcn) fcn.0008bb48 () | void fcn_0008bb48 (int16_t arg_58h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int32_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0008bb48 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0008bb4c mov r5, r3 | r5 = r3;
0x0008bb4e ldr r3, [r0] | r3 = *(r0);
0x0008bb50 sub sp, 0x34 |
0x0008bb52 mov r6, r2 | r6 = r2;
0x0008bb54 mov r8, r0 | r8 = r0;
0x0008bb56 ldr r2, [sp, 0x58] | r2 = *(arg_58h);
0x0008bb58 mov sb, r1 | sb = r1;
0x0008bb5a ldr.w sl, [r0, 8] | sl = *((r0 + 8));
0x0008bb5e mov r4, r1 | r4 = r1;
0x0008bb60 str r3, [sp, 0x14] | var_14h = r3;
0x0008bb62 ldr r3, [r1, 0x28] | r3 = *((r1 + 0x28));
0x0008bb64 str r3, [sp, 0x18] | var_18h = r3;
| do {
0x0008bb66 ldr r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x0008bb68 cbz r3, 0x8bb76 | goto label_6;
| }
0x0008bb6a ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0008bb6c cmp r5, r3 |
| if (r5 == r3) {
0x0008bb6e beq 0x8bb76 | goto label_6;
| }
0x0008bb70 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x0008bb72 cmp r4, 0 |
0x0008bb74 bne 0x8bb66 |
| } while (r4 != 0);
| label_6:
0x0008bb76 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0008bb78 cmp r5, 0 |
0x0008bb7a it ne |
| if (r5 != 0) {
0x0008bb7c cmpne r3, r2 | __asm ("cmpne r3, r2");
| }
| if (r5 == 0) {
0x0008bb7e beq 0x8bc72 | goto label_2;
| }
0x0008bb80 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x0008bb82 lsls r1, r3, 0x18 | r1 = r3 << 0x18;
| if (r1 >= r3) {
0x0008bb84 bpl.w 0x8bcf8 | goto label_7;
| }
0x0008bb88 ldr r7, [r6, 8] | r7 = *((r6 + 8));
| if (r7 != 0) {
0x0008bb8a cbnz r7, 0x8bb96 | goto label_8;
| }
0x0008bb8c b 0x8bd60 | goto label_9;
| do {
0x0008bb8e ldr r7, [r7, 0x14] | r7 = *((r7 + 0x14));
0x0008bb90 cmp r7, 0 |
| if (r7 == 0) {
0x0008bb92 beq.w 0x8bd60 | goto label_9;
| }
| label_8:
0x0008bb96 ldrb.w r3, [r7, 0x37] | r3 = *((r7 + 0x37));
0x0008bb9a and r3, r3, 3 | r3 &= 3;
0x0008bb9e cmp r3, 2 |
0x0008bba0 bne 0x8bb8e |
| } while (r3 != 2);
0x0008bba2 ldr.w r3, [r8, 0x2c] | r3 = *((r8 + 0x2c));
0x0008bba6 ldrh r0, [r7, 0x32] | r0 = *((r7 + 0x32));
0x0008bba8 adds r1, r3, r0 | r1 = r3 + r0;
0x0008bbaa adds r3, 1 | r3++;
0x0008bbac str r0, [sp, 0x1c] | var_1ch = r0;
0x0008bbae str.w r1, [r8, 0x2c] | __asm ("str.w r1, [r8, 0x2c]");
0x0008bbb2 str r3, [sp, 0x20] | var_20h = r3;
| if (r0 == 0) {
0x0008bbb4 cbz r0, 0x8bc0e | goto label_10;
| }
0x0008bbb6 strd r8, r6, [sp, 0x28] | __asm ("strd r8, r6, [var_2ch]");
0x0008bbba mov.w fp, 0 |
0x0008bbbe str r4, [sp, 0x24] | var_24h = r4;
0x0008bbc0 mov r6, r2 | r6 = r2;
0x0008bbc2 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x0008bbc4 ldr.w r8, [sp, 0x20] | r8 = var_20h;
| label_0:
0x0008bbc8 ldrh r0, [r5, 0x34] | r0 = *((r5 + 0x34));
0x0008bbca ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0008bbcc ldrsh.w ip, [r3, fp, lsl 1] | offset_0 = fp << 1;
| ip = *((r3 + offset_0));
0x0008bbd0 cmp r0, 0 |
| if (r0 == 0) {
0x0008bbd2 beq.w 0x8bd52 | goto label_11;
| }
0x0008bbd6 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x0008bbd8 movs r3, 0 | r3 = 0;
0x0008bbda subs r1, 2 | r1 -= 2;
0x0008bbdc b 0x8bbe6 |
| while (r2 != ip) {
0x0008bbde adds r3, 1 | r3++;
0x0008bbe0 cmp r3, r0 |
| if (r3 == r0) {
0x0008bbe2 beq.w 0x8bd52 | goto label_11;
| }
0x0008bbe6 ldrsh r2, [r1, 2]! | r2 = *((r1 += 2));
0x0008bbea cmp r2, ip |
0x0008bbec bne 0x8bbde |
| }
0x0008bbee sxth r3, r3 | __asm ("sxth r3, r3");
| label_4:
0x0008bbf0 add.w r1, r8, fp | r1 = r8 + fp;
0x0008bbf4 str r1, [sp] | *(sp) = r1;
0x0008bbf6 add.w fp, fp, 1 |
0x0008bbfa mov r2, r6 | r2 = r6;
0x0008bbfc movs r1, 0x5b | r1 = 0x5b;
0x0008bbfe mov r0, sl | r0 = sl;
0x0008bc00 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008bc04 cmp r4, fp |
| if (r4 != fp) {
0x0008bc06 bne 0x8bbc8 | goto label_0;
| }
0x0008bc08 ldrd r4, r8, [sp, 0x24] | __asm ("ldrd r4, r8, [var_24h]");
0x0008bc0c ldr r6, [sp, 0x2c] | r6 = var_2ch;
| label_10:
0x0008bc0e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0008bc10 movs r1, 0x1e | r1 = 0x1e;
0x0008bc12 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0008bc14 mov r0, sl | r0 = sl;
0x0008bc16 str r3, [sp, 4] | var_4h = r3;
0x0008bc18 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0008bc1a str r3, [sp] | *(sp) = r3;
0x0008bc1c movs r3, 0 | r3 = 0;
0x0008bc1e bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0008bc22 ldr r3, [pc, 0x144] |
0x0008bc24 mov r5, r0 | r5 = r0;
0x0008bc26 movs r2, 0xb | r2 = 0xb;
0x0008bc28 movs r1, 0x44 | r1 = 0x44;
0x0008bc2a mov r0, sl | r0 = sl;
0x0008bc2c add r3, pc | r3 = 0x11799a;
0x0008bc2e str r3, [sp, 4] | var_4h = r3;
0x0008bc30 mov.w r3, -1 | r3 = -1;
0x0008bc34 str r3, [sp, 8] | var_8h = r3;
0x0008bc36 movs r3, 0 | r3 = 0;
0x0008bc38 str r3, [sp] | *(sp) = r3;
0x0008bc3a movs r3, 2 | r3 = 2;
0x0008bc3c bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0008bc40 ldr.w r3, [r8, 0x74] | r3 = *((r8 + 0x74));
0x0008bc44 movs r2, 1 | r2 = 1;
0x0008bc46 cmp r3, 0 |
0x0008bc48 it eq |
| if (r3 != 0) {
0x0008bc4a moveq r3, r8 | r3 = r8;
| }
0x0008bc4c cmp r5, 0 |
0x0008bc4e strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
0x0008bc50 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
| if (r5 < 0) {
0x0008bc54 bge 0x8bc58 |
0x0008bc56 subs r5, r2, 1 | r5 = r2 - 1;
| }
0x0008bc58 ldr.w r3, [sl] | r3 = *(sl);
0x0008bc5c ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008bc60 cmp r3, 0 |
| if (r3 != 0) {
0x0008bc62 bne 0x8bd58 | goto label_12;
| }
0x0008bc64 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008bc68 add.w r5, r5, r5, lsl 2 | r5 += (r5 << 2);
0x0008bc6c add.w r3, r3, r5, lsl 2 | r3 += (r5 << 2);
| label_5:
0x0008bc70 str r2, [r3, 8] | *((r3 + 8)) = r2;
| label_2:
0x0008bc72 ldr.w r1, [sb, 0x20] | r1 = *((sb + 0x20));
0x0008bc76 movs r2, 0 | r2 = 0;
0x0008bc78 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0008bc7a bl 0x32550 | fcn_00032550 (r0, r1, r2, r3);
0x0008bc7e ldrsh.w r1, [r6, 0x2a] | r1 = *((r6 + 0x2a));
0x0008bc82 mov r7, r0 | r7 = r0;
0x0008bc84 cmp r1, 0 |
0x0008bc86 itt gt |
| if (r1 <= 0) {
0x0008bc88 movgt r5, 0 | r5 = 0;
| }
| if (r1 <= 0) {
0x0008bc8a movgt fp, r5 |
| }
| if (r1 > 0) {
0x0008bc8c bgt 0x8bc96 | goto label_1;
| }
0x0008bc8e b 0x8bcc4 | goto label_13;
| do {
0x0008bc90 adds r5, 1 | r5++;
0x0008bc92 cmp r1, r5 |
| if (r1 <= r5) {
0x0008bc94 ble 0x8bcc4 | goto label_13;
| }
| label_1:
0x0008bc96 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0008bc98 add.w r2, r5, r5, lsl 2 | r2 = r5 + (r5 << 2);
0x0008bc9c add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0008bca0 ldrb r3, [r3, 0xd] | r3 = *((r3 + 0xd));
0x0008bca2 cmp r3, 0x45 |
0x0008bca4 bne 0x8bc90 |
| } while (r3 != 0x45);
0x0008bca6 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x0008bcaa movs r1, 0x54 | r1 = 0x54;
0x0008bcac ldr.w r2, [sb, 0x24] | r2 = *((sb + 0x24));
0x0008bcb0 movs r3, 0 | r3 = 0;
0x0008bcb2 mov r0, sl | r0 = sl;
0x0008bcb4 add r2, r5 | r2 += r5;
0x0008bcb6 adds r5, 1 | r5++;
0x0008bcb8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008bcbc ldrsh.w r1, [r6, 0x2a] | r1 = *((r6 + 0x2a));
0x0008bcc0 cmp r1, r5 |
| if (r1 > r5) {
0x0008bcc2 bgt 0x8bc96 | goto label_1;
| }
| label_13:
0x0008bcc4 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0008bcc6 movs r2, 0 | r2 = 0;
0x0008bcc8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0008bcca bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x0008bcce ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0008bcd0 mov r5, r0 | r5 = r0;
| if (r3 != 0) {
0x0008bcd2 cbz r3, 0x8bce2 |
0x0008bcd4 mov r1, r3 | r1 = r3;
0x0008bcd6 movs r3, 0 | r3 = 0;
0x0008bcd8 mov r2, r3 | r2 = r3;
0x0008bcda ldr r0, [sp, 0x14] | r0 = var_14h;
0x0008bcdc bl 0x311ec | r0 = fcn_000311ec (r0, r1, r2, r3);
0x0008bce0 mov r3, r0 | r3 = r0;
| }
0x0008bce2 str r4, [sp, 4] | var_4h = r4;
0x0008bce4 movs r4, 2 | r4 = 2;
0x0008bce6 mov r2, r5 | r2 = r5;
0x0008bce8 mov r1, r7 | r1 = r7;
0x0008bcea mov r0, r8 | r0 = r8;
0x0008bcec str r4, [sp] | *(sp) = r4;
0x0008bcee bl 0x8a004 | fcn_0008a004 (r0, r1, r2, r3, r4, r5, r6);
0x0008bcf2 add sp, 0x34 |
0x0008bcf4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x0008bcf8 ldrb.w r3, [r8, 0x13] | r3 = *((r8 + 0x13));
| if (r3 == 0) {
0x0008bcfc cbz r3, 0x8bd46 | goto label_14;
| }
0x0008bcfe subs r3, 1 | r3--;
0x0008bd00 uxtb r3, r3 | r3 = (int8_t) r3;
0x0008bd02 strb.w r3, [r8, 0x13] | *((r8 + 0x13)) = r3;
0x0008bd06 add.w r3, r8, r3, lsl 2 | r3 = r8 + (r3 << 2);
0x0008bd0a ldr.w r5, [r3, 0x94] | r5 = *((r3 + 0x94));
| label_3:
0x0008bd0e movs r7, 0 | r7 = 0;
0x0008bd10 mov r3, r5 | r3 = r5;
0x0008bd12 movs r1, 0x8a | r1 = 0x8a;
0x0008bd14 mov r0, sl | r0 = sl;
0x0008bd16 str r7, [sp] | *(sp) = r7;
0x0008bd18 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008bd1c ldr r2, [sp, 0x18] | r2 = var_18h;
0x0008bd1e mov r3, r7 | r3 = r7;
0x0008bd20 movs r1, 0x1f | r1 = 0x1f;
0x0008bd22 mov r0, sl | r0 = sl;
0x0008bd24 str r5, [sp] | *(sp) = r5;
0x0008bd26 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008bd2a cmp r5, 0 |
| if (r5 == 0) {
0x0008bd2c beq 0x8bc72 | goto label_2;
| }
0x0008bd2e ldrb.w r3, [r8, 0x13] | r3 = *((r8 + 0x13));
0x0008bd32 cmp r3, 7 |
| if (r3 > 7) {
0x0008bd34 bhi 0x8bc72 | goto label_2;
| }
0x0008bd36 add.w r2, r8, r3, lsl 2 | r2 = r8 + (r3 << 2);
0x0008bd3a adds r3, 1 | r3++;
0x0008bd3c strb.w r3, [r8, 0x13] | *((r8 + 0x13)) = r3;
0x0008bd40 str.w r5, [r2, 0x94] | __asm ("str.w r5, [r2, 0x94]");
0x0008bd44 b 0x8bc72 | goto label_2;
| label_14:
0x0008bd46 ldr.w r5, [r8, 0x2c] | r5 = *((r8 + 0x2c));
0x0008bd4a adds r5, 1 | r5++;
0x0008bd4c str.w r5, [r8, 0x2c] | __asm ("str.w r5, [r8, 0x2c]");
0x0008bd50 b 0x8bd0e | goto label_3;
| label_11:
0x0008bd52 mov.w r3, -1 | r3 = -1;
0x0008bd56 b 0x8bbf0 | goto label_4;
| label_12:
0x0008bd58 ldr r3, [pc, 0x10] |
0x0008bd5a add r3, pc | r3 = 0x117aca;
0x0008bd5c adds r3, 4 | r3 += 4;
0x0008bd5e b 0x8bc70 | goto label_5;
| label_9:
0x0008bd60 movs r3, 0 | r3 = 0;
0x0008bd62 ldrh r3, [r3, 0x32] | r3 = *((r3 + 0x32));
0x0008bd64 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x8c3a4 */
| #include <stdint.h>
|
; (fcn) fcn.0008c3a4 () | void fcn_0008c3a4 (int16_t arg_20h, int16_t arg_24h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0008c3a4 push.w {r4, r5, r6, r7, r8, lr} |
0x0008c3a8 mov r4, r0 | r4 = r0;
0x0008c3aa ldr r5, [r0, 8] | r5 = *((r0 + 8));
0x0008c3ac sub sp, 8 |
0x0008c3ae mov r6, r1 | r6 = r1;
0x0008c3b0 mov r7, r2 | r7 = r2;
0x0008c3b2 mov r8, r3 | r8 = r3;
0x0008c3b4 cmp r5, 0 |
0x0008c3b6 beq 0x8c43a |
| while (1) {
0x0008c3b8 ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x0008c3ba mov r2, r7 | r2 = r7;
0x0008c3bc mov r1, r6 | r1 = r6;
0x0008c3be mov r0, r4 | r0 = r4;
0x0008c3c0 bl 0x8bd70 | r0 = fcn_0008bd70 (r0, r1, r2, r3, r4, r5, r6);
0x0008c3c4 cmp r0, 0 |
| if (r0 != 0) {
0x0008c3c6 beq 0x8c434 |
0x0008c3c8 ldr r6, [r6] | r6 = *(r6);
| if (r6 != 0) {
0x0008c3ca cbz r6, 0x8c3e0 |
0x0008c3cc ldr r3, [r4] | r3 = *(r4);
0x0008c3ce ldrd r1, r3, [r3, 0x20] | __asm ("ldrd r1, r3, [r3, 0x20]");
0x0008c3d2 lsrs r1, r1, 0xd | r1 >>= 0xd;
0x0008c3d4 orr.w r1, r1, r3, lsl 19 | r1 |= (r3 << 19);
0x0008c3d8 eor r1, r1, 1 | r1 ^= 1;
0x0008c3dc and r6, r1, 1 | r6 = r1 & 1;
| }
0x0008c3e0 ldrd r1, r3, [r5, 0x6c] | __asm ("ldrd r1, r3, [r5, 0x6c]");
0x0008c3e4 ldr r7, [r0, 8] | r7 = *((r0 + 8));
0x0008c3e6 ldr r0, [r4, 0x2c] | r0 = *((r4 + 0x2c));
0x0008c3e8 cmp r1, r3 |
0x0008c3ea add.w r0, r0, 1 | r0++;
0x0008c3ee str r0, [r4, 0x2c] | *((r4 + 0x2c)) = r0;
| if (r1 >= r3) {
0x0008c3f0 bge 0x8c448 | goto label_2;
| }
0x0008c3f2 add.w r3, r1, r1, lsl 2 | r3 = r1 + (r1 << 2);
0x0008c3f6 ldr r4, [r5, 0x68] | r4 = *((r5 + 0x68));
0x0008c3f8 adds r2, r1, 1 | r2 = r1 + 1;
0x0008c3fa lsls r3, r3, 2 | r3 <<= 2;
0x0008c3fc str r2, [r5, 0x6c] | *((r5 + 0x6c)) = r2;
0x0008c3fe mov.w ip, 0 |
0x0008c402 adds r2, r4, r3 | r2 = r4 + r3;
0x0008c404 strd r0, ip, [r2, 0xc] | __asm ("strd r0, ip, [r2, 0xc]");
0x0008c408 ldr r0, [sp, 0x24] | r0 = *(arg_24h);
0x0008c40a str.w r8, [r2, 4] | __asm ("str.w r8, [r2, 4]");
0x0008c40e str r0, [r2, 8] | *((r2 + 8)) = r0;
0x0008c410 movs r2, 0x2e | r2 = 0x2e;
0x0008c412 str r2, [r4, r3] | *((r4 + r3)) = r2;
| label_0:
0x0008c414 mov r2, r7 | r2 = r7;
0x0008c416 mvn r3, 3 | r3 = ~3;
0x0008c41a mov r0, r5 | r0 = r5;
0x0008c41c bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x0008c420 ldr r3, [r5, 0x6c] | r3 = *((r5 + 0x6c));
0x0008c422 cmp r3, 0 |
0x0008c424 itttt gt |
| if (r3 <= 0) {
0x0008c426 ldrgt r2, [r5, 0x68] | r2 = *((r5 + 0x68));
| }
| if (r3 <= 0) {
0x0008c428 addgt r3, r3, r3, lsl 2 | r3 += (r3 << 2);
| }
| if (r3 <= 0) {
0x0008c42c addgt r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| }
| if (r3 <= 0) {
0x0008c430 strh r6, [r3, -0x12] | *((r3 - 0x12)) = r6;
| goto label_3;
| }
| }
| label_3:
0x0008c434 add sp, 8 |
0x0008c436 pop.w {r4, r5, r6, r7, r8, pc} |
0x0008c43a ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
| if (r3 == 0) {
0x0008c43c cbz r3, 0x8c45a | goto label_4;
| }
| label_1:
0x0008c43e mov r0, r4 | r0 = r4;
0x0008c440 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0008c444 mov r5, r0 | r5 = r0;
0x0008c446 b 0x8c3b8 |
| }
| label_2:
0x0008c448 movs r1, 0x2e | r1 = 0x2e;
0x0008c44a str r0, [sp] | *(sp) = r0;
0x0008c44c ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x0008c44e mov r2, r8 | r2 = r8;
0x0008c450 mov r0, r5 | r0 = r5;
0x0008c452 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008c456 mov r1, r0 | r1 = r0;
0x0008c458 b 0x8c414 | goto label_0;
| label_4:
0x0008c45a ldr r3, [r0] | r3 = *(r0);
0x0008c45c ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0008c45e lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x0008c460 itt pl |
| if (r3 < r3) {
0x0008c462 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x0008c464 strbpl r3, [r0, 0x17] | *((r0 + 0x17)) = r3;
| }
0x0008c466 b 0x8c43e | 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/libsqlite3.so.0.8.6 @ 0x8c468 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0008c468 () | void fcn_0008c468 (int16_t arg_130h, int16_t arg_134h, int16_t arg_138h, int16_t arg_13ch, int16_t arg_140h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_18h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_34h;
| int16_t var_3ch;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_1ch_2;
| int16_t var_20h_2;
| int16_t var_24h_2;
| int16_t var_28h_2;
| int32_t var_28h_3;
| int16_t var_30h_2;
| int16_t var_34h_2;
| int16_t var_38h_2;
| int16_t var_3ch_2;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_5ch;
| int16_t var_64h;
| int16_t var_80h_2;
| int32_t var_80h_3;
| int16_t var_b0h;
| int16_t var_c8h;
| int16_t var_104h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0008c468 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0008c46c mov sl, r2 | sl = r2;
0x0008c46e ldr r2, [pc, 0x350] |
0x0008c470 mov fp, r3 |
0x0008c472 sub sp, 0x10c |
0x0008c474 ldr r3, [pc, 0x34c] | r3 = *(0x8c7c4);
0x0008c476 add r2, pc | r2 = 0x118c3c;
0x0008c478 ldr.w r8, [sp, 0x134] | r8 = *(arg_134h);
0x0008c47c ldr r3, [r2, r3] |
0x0008c47e ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008c480 str r3, [sp, 0x104] | var_104h = r3;
0x0008c482 mov.w r3, 0 | r3 = 0;
0x0008c486 cmp r1, 0 |
| if (r1 == 0) {
0x0008c488 beq.w 0x8c5ec | goto label_6;
| }
0x0008c48c ldr r3, [pc, 0x338] |
0x0008c48e mov sb, r0 | sb = r0;
0x0008c490 ldr r6, [sp, 0x130] | r6 = *(arg_130h);
0x0008c492 mov r7, r1 | r7 = r1;
0x0008c494 add r3, pc | r3 = 0x118c60;
0x0008c496 str r3, [sp, 0x14] | var_7ch = r3;
0x0008c498 add r3, sp, 0x64 | r3 += var_64h;
0x0008c49a str r3, [sp, 0x10] | var_78h = r3;
0x0008c49c add r3, sp, 0x44 | r3 += var_44h;
0x0008c49e strd fp, r3, [sp, 8] | __asm ("strd fp, r3, [var_70h]");
0x0008c4a2 b 0x8c4c8 |
| while (r2 != sl) {
0x0008c4a4 ldrb r3, [r7, 0xa] | r3 = *((r7 + 0xa));
0x0008c4a6 subs r3, 0 |
0x0008c4a8 it ne |
| if (r3 == 0) {
0x0008c4aa movne r3, 1 | r3 = 1;
| }
0x0008c4ac cmp r2, 0x7e |
0x0008c4ae it ne |
| if (r2 == 0x7e) {
0x0008c4b0 movne r3, 0 | r3 = 0;
| }
0x0008c4b2 cmp.w sl, 0x80 |
0x0008c4b6 ite ne |
| if (sl == 0x80) {
0x0008c4b8 movne r3, 0 | r3 = 0;
| }
| if (sl != 0x80) {
0x0008c4ba andeq r3, r3, 1 | r3 &= 1;
| }
| if (r3 != 0) {
0x0008c4be cbnz r3, 0x8c4ce | goto label_7;
| }
| label_0:
0x0008c4c0 ldr r7, [r7, 0x20] | r7 = *((r7 + 0x20));
0x0008c4c2 cmp r7, 0 |
| if (r7 == 0) {
0x0008c4c4 beq.w 0x8c5ec | goto label_6;
| }
0x0008c4c8 ldrb r2, [r7, 8] | r2 = *((r7 + 8));
0x0008c4ca cmp r2, sl |
0x0008c4cc bne 0x8c4a4 |
| }
| label_7:
0x0008c4ce ldrb r3, [r7, 9] | r3 = *((r7 + 9));
0x0008c4d0 cmp r3, r6 |
| if (r3 != r6) {
0x0008c4d2 bne 0x8c4c0 | goto label_0;
| }
0x0008c4d4 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x0008c4d6 ldr r1, [sp, 8] | r1 = var_70h;
0x0008c4d8 bl 0x14ac0 | r0 = fcn_00014ac0 (r0, r1);
0x0008c4dc cmp r0, 0 |
| if (r0 == 0) {
0x0008c4de beq 0x8c4c0 | goto label_0;
| }
0x0008c4e0 ldrb r3, [r7, 0xa] | r3 = *((r7 + 0xa));
0x0008c4e2 cmp r3, 0 |
| if (r3 == 0) {
0x0008c4e4 beq.w 0x8c608 | goto label_8;
| }
0x0008c4e8 ldr.w fp, [sb, 0x74] | fp = *((sb + 0x74));
0x0008c4ec cmp.w fp, 0 |
| if (fp != 0) {
0x0008c4f0 bne 0x8c4c0 | goto label_0;
| }
0x0008c4f2 ldr.w r4, [sb, 8] | r4 = *((sb + 8));
0x0008c4f6 movs r2, 0x4c | r2 = 0x4c;
0x0008c4f8 ldr.w r5, [sb] | r5 = *(sb);
0x0008c4fc mov r1, fp | r1 = fp;
0x0008c4fe ldr.w r3, [sb, 0x80] | r3 = *((sb + 0x80));
0x0008c502 str r4, [sp, 0x34] | var_34h_2 = r4;
0x0008c504 add r4, sp, 0xb0 | r4 += var_b0h;
0x0008c506 ldr r0, [sp, 0x10] | r0 = var_78h;
0x0008c508 str r3, [sp, 0x24] | var_24h_2 = r3;
0x0008c50a str r5, [sp, 0x30] | var_30h_2 = r5;
0x0008c50c blx 0x8264 | fcn_00008264 ();
0x0008c510 mov r1, fp | r1 = fp;
0x0008c512 movs r2, 0x50 | r2 = 0x50;
0x0008c514 mov r0, r4 | r0 = r4;
0x0008c516 blx 0x8264 | fcn_00008264 ();
0x0008c51a ldr r3, [sp, 0x24] | r3 = var_24h_2;
0x0008c51c mov r2, fp | r2 = fp;
0x0008c51e mov r0, r5 | r0 = r5;
0x0008c520 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0008c522 bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x0008c526 movs r3, 1 | r3 = 1;
0x0008c528 strd r0, r4, [sp, 0x80] | __asm ("strd r0, r4, [var_80h_2]");
0x0008c52c ldr r1, [sp, 0x10] | r1 = var_78h;
0x0008c52e mov r2, fp | r2 = fp;
0x0008c530 mov r0, sb | r0 = sb;
0x0008c532 str r3, [sp, 0xb0] | var_b0h = r3;
0x0008c534 str.w r8, [sp, 0xc8] | __asm ("str.w r8, [var_c8h]");
0x0008c538 bl 0x32c7c | fcn_00032c7c (r0, r1, r2, r3);
0x0008c53c ldrb.w r3, [r5, 0x53] | r3 = *((r5 + 0x53));
| if (r3 == 0) {
0x0008c540 cbnz r3, 0x8c54c |
0x0008c542 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008c546 cmp r3, 0 |
| if (r3 == 0) {
0x0008c548 beq.w 0x8c7aa | goto label_9;
| }
| }
| label_5:
0x0008c54c ldr r1, [sp, 0x80] | r1 = var_80h_2;
| if (r1 != 0) {
0x0008c54e cbz r1, 0x8c556 |
0x0008c550 ldr r0, [sp, 0x30] | r0 = var_30h_2;
0x0008c552 bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x0008c556 ldr r3, [sp, 0x24] | r3 = var_24h_2;
0x0008c558 ldr.w r1, [sb] | r1 = *(sb);
0x0008c55c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0008c55e ldr r2, [r3] | r2 = *(r3);
0x0008c560 str r3, [sp, 0x18] | var_80h = r3;
0x0008c562 cmp r2, 0 |
| if (r2 <= 0) {
0x0008c564 ble 0x8c4c0 | goto label_0;
| }
0x0008c566 movs r0, 0 | r0 = 0;
0x0008c568 str r7, [sp, 0x38] | var_38h_2 = r7;
0x0008c56a str.w sl, [sp, 0x3c] | __asm ("str.w sl, [var_3ch_2]");
0x0008c56e mov r7, r1 | r7 = r1;
0x0008c570 str r6, [sp, 0x130] | *(arg_130h) = r6;
0x0008c572 mov sl, r3 | sl = r3;
0x0008c574 mov r6, r0 | r6 = r0;
0x0008c576 b 0x8c5e0 |
| while (r1 != 0) {
0x0008c578 ldrb r3, [r1] | r3 = *(r1);
0x0008c57a cmp r3, 0xb3 |
| if (r3 == 0xb3) {
0x0008c57c beq 0x8c632 | goto label_10;
| }
0x0008c57e cmp r3, 0x8c |
| if (r3 == 0x8c) {
0x0008c580 bne 0x8c58a |
0x0008c582 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0008c584 ldrb r3, [r3] | r3 = *(r3);
0x0008c586 cmp r3, 0xb3 |
| if (r3 == 0xb3) {
0x0008c588 beq 0x8c62a | goto label_11;
| }
| }
0x0008c58a movs r3, 0 | r3 = 0;
0x0008c58c mov r0, r7 | r0 = r7;
0x0008c58e mov r2, r3 | r2 = r3;
0x0008c590 bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x0008c594 mov r1, fp | r1 = fp;
0x0008c596 mov r2, r0 | r2 = r0;
0x0008c598 mov r0, sb | r0 = sb;
0x0008c59a bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x0008c59e ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x0008c5a2 mov fp, r0 |
0x0008c5a4 cmp r3, 0 |
| if (r3 != 0) {
0x0008c5a6 bne 0x8c622 | goto label_12;
| }
0x0008c5a8 ldr.w r1, [sl, 0xc] | r1 = *((sl + 0xc));
0x0008c5ac cmp r1, 0 |
| if (r1 == 0) {
0x0008c5ae beq 0x8c622 | goto label_12;
| }
0x0008c5b0 ldr r4, [r0] | r4 = *(r0);
0x0008c5b2 mov r0, r7 | r0 = r7;
0x0008c5b4 bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x0008c5b8 ldr r1, [sp, 0x18] | r1 = var_80h;
0x0008c5ba adds r6, 1 | r6++;
0x0008c5bc subs r3, r4, 1 | r3 = r4 - 1;
0x0008c5be add.w r3, fp, r3, lsl 4 | r3 = fp + (r3 << 4);
0x0008c5c2 add.w r4, fp, r4, lsl 4 | r4 = fp + (r4 << 4);
0x0008c5c6 str r0, [r3, 0xc] | *((r3 + 0xc)) = r0;
0x0008c5c8 add.w r3, r1, r6, lsl 4 | r3 = r1 + (r6 << 4);
0x0008c5cc ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0008c5ce ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0008c5d0 bfi r3, r2, 0, 2 | value_0 = BIT_MASK (0, 2);
| value_1 = r2 & value_0;
| value_0 = ~value_0;
| r3 &= value_0;
| r3 |= value_1;
0x0008c5d4 strb r3, [r4, 1] | *((r4 + 1)) = r3;
0x0008c5d6 ldr r2, [r1] | r2 = *(r1);
| label_1:
0x0008c5d8 cmp r6, r2 |
0x0008c5da add.w sl, sl, 0x10 | sl += 0x10;
| if (r6 >= r2) {
0x0008c5de bge 0x8c6c0 | goto label_13;
| }
0x0008c5e0 ldr.w r1, [sl, 8] | r1 = *((sl + 8));
0x0008c5e4 cmp r1, 0 |
0x0008c5e6 bne 0x8c578 |
| }
0x0008c5e8 adds r6, 1 | r6++;
0x0008c5ea b 0x8c5d8 | goto label_1;
| label_6:
0x0008c5ec ldr r2, [pc, 0x1dc] |
0x0008c5ee ldr r3, [pc, 0x1d4] | r3 = *(0x8c7c6);
0x0008c5f0 add r2, pc | r2 = 0x118dc0;
0x0008c5f2 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008c5f4 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008c5f6 ldr r3, [sp, 0x104] | r3 = var_104h;
0x0008c5f8 eors r2, r3 | r2 ^= r3;
0x0008c5fa mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0008c5fe bne.w 0x8c7ba | goto label_14;
| }
0x0008c602 add sp, 0x10c |
0x0008c604 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x0008c608 ldr r3, [sp, 0x140] | r3 = *(arg_140h);
0x0008c60a mov r2, r8 | r2 = r8;
0x0008c60c mov r1, r7 | r1 = r7;
0x0008c60e mov r0, sb | r0 = sb;
0x0008c610 str r3, [sp, 4] | var_6ch = r3;
0x0008c612 ldr r3, [sp, 0x13c] | r3 = *(arg_13ch);
0x0008c614 str r3, [sp] | *(sp) = r3;
0x0008c616 ldr r3, [sp, 0x138] | r3 = *(arg_138h);
0x0008c618 bl 0x8c3a4 | fcn_0008c3a4 (r0, r1, r2, r3, r4, r5);
0x0008c61c b 0x8c4c0 | goto label_0;
| label_2:
0x0008c61e ldrd sl, r6, [sp, 0x28] | __asm ("ldrd sl, r6, [var_28h_2]");
| do {
| label_12:
0x0008c622 ldr r3, [sp, 0x18] | r3 = var_80h;
0x0008c624 adds r6, 1 | r6++;
0x0008c626 ldr r2, [r3] | r2 = *(r3);
0x0008c628 b 0x8c5d8 | goto label_1;
| label_11:
0x0008c62a ldr r1, [sp, 0x14] | r1 = var_7ch;
0x0008c62c mov r0, sb | r0 = sb;
0x0008c62e bl 0x25778 | fcn_00025778 (r0);
| label_10:
0x0008c632 ldrsh.w r1, [r8, 0x2a] | r1 = *((r8 + 0x2a));
0x0008c636 cmp r1, 0 |
0x0008c638 ble 0x8c622 |
| } while (r1 <= 0);
0x0008c63a movs r4, 0 | r4 = 0;
0x0008c63c strd sl, r6, [sp, 0x28] | __asm ("strd sl, r6, [var_28h_2]");
0x0008c640 mov r5, r4 | r5 = r4;
0x0008c642 ldr.w sl, [sp, 0xc] | sl = var_74h;
0x0008c646 b 0x8c654 | goto label_15;
| label_4:
0x0008c648 ldrsh.w r1, [r8, 0x2a] | r1 = *((r8 + 0x2a));
| label_3:
0x0008c64c adds r5, 1 | r5++;
0x0008c64e adds r4, 0x14 | r4 += 0x14;
0x0008c650 cmp r5, r1 |
| if (r5 >= r1) {
0x0008c652 bge 0x8c61e | goto label_2;
| }
| label_15:
0x0008c654 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0008c658 adds r2, r3, r4 | r2 = r3 + r4;
0x0008c65a ldrh r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x0008c65c lsls r2, r2, 0x1e | r2 <<= 0x1e;
| if (r2 < r2) {
0x0008c65e bmi 0x8c64c | goto label_3;
| }
0x0008c660 ldr r0, [r3, r4] | r0 = *((r3 + r4));
0x0008c662 str r0, [sp, 0x44] | var_44h = r0;
| if (r0 != 0) {
0x0008c664 cbz r0, 0x8c66e |
0x0008c666 blx 0x8160 | r0 = fcn_00008160 ();
0x0008c66a bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
| }
0x0008c66e movs r3, 0 | r3 = 0;
0x0008c670 mov r2, sl | r2 = sl;
0x0008c672 movs r1, 0x3b | r1 = 0x3b;
0x0008c674 str r0, [sp, 0x48] | var_48h = r0;
0x0008c676 mov r0, r7 | r0 = r7;
0x0008c678 bl 0x1afec | fcn_0001afec (r0, r1, r2, r3);
0x0008c67c mov r1, fp | r1 = fp;
0x0008c67e mov r2, r0 | r2 = r0;
0x0008c680 mov r0, sb | r0 = sb;
0x0008c682 bl 0x1c2ac | fcn_0001c2ac (r0, r1, r2);
0x0008c686 ldrb.w r6, [r7, 0x53] | r6 = *((r7 + 0x53));
0x0008c68a mov fp, r0 |
0x0008c68c cmp r6, 0 |
| if (r6 != 0) {
0x0008c68e bne 0x8c648 | goto label_4;
| }
0x0008c690 ldr r3, [r0] | r3 = *(r0);
0x0008c692 mov r0, r7 | r0 = r7;
0x0008c694 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x0008c698 ldr r1, [r2, r4] | r1 = *((r2 + r4));
0x0008c69a subs r2, r3, 1 | r2 = r3 - 1;
0x0008c69c strd r2, r3, [sp, 0x1c] | __asm ("strd r2, r3, [var_1ch_2]");
0x0008c6a0 bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x0008c6a4 ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x0008c6a6 ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x0008c6a8 ldrsh.w r1, [r8, 0x2a] | r1 = *((r8 + 0x2a));
0x0008c6ac add.w r3, fp, r3, lsl 4 | r3 = fp + (r3 << 4);
0x0008c6b0 add.w r2, fp, r2, lsl 4 | r2 = fp + (r2 << 4);
0x0008c6b4 str r0, [r2, 0xc] | *((r2 + 0xc)) = r0;
0x0008c6b6 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0008c6b8 bfi r2, r6, 0, 2 | value_2 = BIT_MASK (0, 2);
| value_3 = r6 & value_2;
| value_2 = ~value_2;
| r2 &= value_2;
| r2 |= value_3;
0x0008c6bc strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x0008c6be b 0x8c64c | goto label_3;
| label_13:
0x0008c6c0 ldrd r7, sl, [sp, 0x38] | __asm ("ldrd r7, sl, [var_38h_2]");
0x0008c6c4 ldr r6, [sp, 0x130] | r6 = *(arg_130h);
0x0008c6c6 cmp.w fp, 0 |
| if (fp == 0) {
0x0008c6ca beq.w 0x8c4c0 | goto label_0;
| }
0x0008c6ce movs r1, 0 | r1 = 0;
0x0008c6d0 ldr r0, [sp, 0xc] | r0 = var_74h;
0x0008c6d2 movs r2, 0x20 | r2 = 0x20;
0x0008c6d4 blx 0x8264 | fcn_00008264 ();
0x0008c6d8 ldr r1, [sp, 0x24] | r1 = var_24h_2;
0x0008c6da ldr r3, [r1, 0x60] | r3 = *((r1 + 0x60));
| if (r3 == 0) {
0x0008c6dc cbnz r3, 0x8c6f0 |
0x0008c6de ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x0008c6e2 ldr.w r2, [fp] | r2 = *(fp);
0x0008c6e6 str r2, [r1, 0x60] | *((r1 + 0x60)) = r2;
0x0008c6e8 adds r2, r3, 1 | r2 = r3 + 1;
0x0008c6ea str.w r2, [sb, 0x28] | __asm ("str.w r2, [sb, 0x28]");
0x0008c6ee str r3, [r1, 0x5c] | *((r1 + 0x5c)) = r3;
| }
0x0008c6f0 ldr r3, [sp, 0x138] | r3 = *(arg_138h);
0x0008c6f2 mov r1, fp | r1 = fp;
0x0008c6f4 str.w sb, [sp, 0x44] | __asm ("str.w sb, [var_44h]");
0x0008c6f8 ldr r0, [sp, 0xc] | r0 = var_74h;
0x0008c6fa str r3, [sp, 0x4c] | var_4ch = r3;
0x0008c6fc mov.w r3, 0x400 | r3 = 0x400;
0x0008c700 str r3, [sp, 0x5c] | var_5ch = r3;
0x0008c702 ldrb r3, [r7, 8] | r3 = *((r7 + 8));
0x0008c704 str.w r8, [sb, 0x78] | __asm ("str.w r8, [sb, 0x78]");
0x0008c708 strb.w r3, [sb, 0x90] | *((sb + 0x90)) = r3;
0x0008c70c bl 0x304f0 | r0 = fcn_000304f0 (r0, r1, r2);
0x0008c710 cmp r0, 0 |
| if (r0 != 0) {
0x0008c712 bne 0x8c796 | goto label_16;
| }
0x0008c714 ldr.w r1, [fp] | r1 = *(fp);
0x0008c718 ldr.w r2, [sb, 0x2c] | r2 = *((sb + 0x2c));
0x0008c71c adds r3, r1, 2 | r3 = r1 + 2;
0x0008c71e cmp r1, 0 |
0x0008c720 add r3, r2 | r3 += r2;
0x0008c722 str r1, [sp, 0x18] | var_80h = r1;
0x0008c724 str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x0008c728 add.w r3, r2, 1 | r3 = r2 + 1;
0x0008c72c ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x0008c72e str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x0008c730 str r3, [r2, 0x64] | *((r2 + 0x64)) = r3;
| if (r1 <= 0) {
0x0008c732 ble 0x8c7b4 | goto label_17;
| }
0x0008c734 mov r4, r3 | r4 = r3;
0x0008c736 add r3, r1 | r3 += r1;
0x0008c738 str r7, [sp, 0x28] | var_28h_2 = r7;
0x0008c73a mov r5, fp | r5 = fp;
0x0008c73c mov r7, sb | r7 = sb;
0x0008c73e mov sb, r8 | sb = r8;
0x0008c740 mov r8, r6 | r8 = r6;
0x0008c742 mov r6, r3 | r6 = r3;
0x0008c744 str r3, [sp, 0x20] | var_20h_2 = r3;
| do {
0x0008c746 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0008c748 mov r2, r4 | r2 = r4;
0x0008c74a mov r0, r7 | r0 = r7;
0x0008c74c adds r4, 1 | r4++;
0x0008c74e bl 0x67ba8 | fcn_00067ba8 (r0, r1, r2);
0x0008c752 cmp r6, r4 |
0x0008c754 add.w r5, r5, 0x10 | r5 += 0x10;
0x0008c758 bne 0x8c746 |
| } while (r6 != r4);
0x0008c75a mov r6, r8 | r6 = r8;
0x0008c75c ldr r4, [sp, 0x20] | r4 = var_20h_2;
0x0008c75e mov r8, sb | r8 = sb;
0x0008c760 mov sb, r7 | sb = r7;
0x0008c762 ldr r7, [sp, 0x28] | r7 = var_28h_2;
| do {
0x0008c764 ldrd r3, r2, [sp, 0x18] | __asm ("ldrd r3, r2, [var_80h]");
0x0008c768 movs r1, 0x5d | r1 = 0x5d;
0x0008c76a ldr r0, [sp, 0x34] | r0 = var_34h_2;
0x0008c76c adds r5, r4, 1 | r5 = r4 + 1;
0x0008c76e str r4, [sp] | *(sp) = r4;
0x0008c770 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008c774 ldr r3, [sp, 0x24] | r3 = var_24h_2;
0x0008c776 movs r1, 0x7b | r1 = 0x7b;
0x0008c778 ldr r0, [sp, 0x34] | r0 = var_34h_2;
0x0008c77a ldr r2, [r3, 0x5c] | r2 = *((r3 + 0x5c));
0x0008c77c movs r3, 0 | r3 = 0;
0x0008c77e str r3, [sp] | *(sp) = r3;
0x0008c780 mov r3, r5 | r3 = r5;
0x0008c782 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008c786 ldr r3, [sp, 0x24] | r3 = var_24h_2;
0x0008c788 movs r1, 0x7c | r1 = 0x7c;
0x0008c78a ldr r0, [sp, 0x34] | r0 = var_34h_2;
0x0008c78c ldr r2, [r3, 0x5c] | r2 = *((r3 + 0x5c));
0x0008c78e mov r3, r4 | r3 = r4;
0x0008c790 str r5, [sp] | *(sp) = r5;
0x0008c792 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_16:
0x0008c796 ldr r0, [sp, 0x30] | r0 = var_30h_2;
0x0008c798 mov r1, fp | r1 = fp;
0x0008c79a bl 0x18c5c | fcn_00018c5c (r0, r1);
0x0008c79e movs r3, 0 | r3 = 0;
0x0008c7a0 strb.w r3, [sb, 0x90] | *((sb + 0x90)) = r3;
0x0008c7a4 str.w r3, [sb, 0x78] | __asm ("str.w r3, [sb, 0x78]");
0x0008c7a8 b 0x8c4c0 | goto label_0;
| label_9:
0x0008c7aa ldr r1, [sp, 0x10] | r1 = var_78h;
0x0008c7ac mov r0, sb | r0 = sb;
0x0008c7ae bl 0x29530 | fcn_00029530 (r0, r1, r2);
0x0008c7b2 b 0x8c54c | goto label_5;
| label_17:
0x0008c7b4 ldr r4, [sp, 0x1c] | r4 = var_1ch_2;
0x0008c7b6 str r0, [sp, 0x18] | var_80h = r0;
0x0008c7b8 b 0x8c764 |
| } while (1);
| label_14:
0x0008c7ba blx 0x7e8c | fcn_00007e8c ();
0x0008c7be nop |
0x0008c7c0 adds r2, r3, r0 | r2 = r3 + r0;
0x0008c7c2 movs r4, r0 | r4 = r0;
0x0008c7c4 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0008c7c6 movs r0, r0 |
0x0008c7c8 strb r0, [r0, r0] | *((r0 + r0)) = r0;
0x0008c7ca movs r2, r0 | r2 = r0;
0x0008c7cc asrs r0, r4, 0x1a | r0 = r4 >> 0x1a;
0x0008c7ce movs r4, r0 | r4 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x8c7d0 */
| #include <stdint.h>
|
; (fcn) fcn.0008c7d0 () | void fcn_0008c7d0 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_30h;
| int16_t var_38h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_7ch;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_34h;
| int16_t var_3ch;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_80h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0008c7d0 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0008c7d4 mov sl, r2 | sl = r2;
0x0008c7d6 ldr r2, [r0, 0x38] | r2 = *((r0 + 0x38));
0x0008c7d8 sub sp, 0x44 |
0x0008c7da mov r5, r1 | r5 = r1;
0x0008c7dc mov fp, r3 |
0x0008c7de ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0008c7e0 mov r6, r0 | r6 = r0;
0x0008c7e2 str r2, [sp, 0x24] | var_24h = r2;
0x0008c7e4 subs r2, 1 | r2--;
0x0008c7e6 str r2, [sp, 0x1c] | var_1ch = r2;
0x0008c7e8 str r2, [r0, 0x38] | *((r0 + 0x38)) = r2;
0x0008c7ea tst.w r3, 0x80 |
0x0008c7ee ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x0008c7f0 ldrb.w r3, [sp, 0x7c] | r3 = var_7ch;
0x0008c7f4 ldr r1, [sp, 0x68] | r1 = var_68h;
0x0008c7f6 str r2, [sp, 0x20] | var_20h = r2;
0x0008c7f8 ldrsh.w r2, [sp, 0x70] | r2 = var_70h;
0x0008c7fc ldr.w sb, [r0, 8] | sb = *((r0 + 8));
0x0008c800 str r1, [sp, 0x38] | var_38h = r1;
0x0008c802 str r2, [sp, 0x30] | var_30h = r2;
0x0008c804 ldrb.w r2, [sp, 0x74] | r2 = var_74h;
0x0008c808 str r3, [sp, 0x34] | var_34h = r3;
0x0008c80a str r2, [sp, 0x3c] | var_3ch = r2;
0x0008c80c ldrb.w r2, [sp, 0x78] | r2 = var_78h;
0x0008c810 str r2, [sp, 0x18] | var_18h = r2;
0x0008c812 ldr r2, [sp, 0x80] | r2 = var_80h;
0x0008c814 str r2, [sp, 0x28] | var_28h = r2;
0x0008c816 ite eq |
| if ((r3 & 0x80) != 0) {
0x0008c818 moveq r2, 0x20 | r2 = 0x20;
| }
| if ((r3 & 0x80) == 0) {
0x0008c81a movne r2, 0x1d | r2 = 0x1d;
| }
0x0008c81c str r2, [sp, 0x2c] | var_2ch = r2;
0x0008c81e cmp r3, 0 |
| if (r3 == 0) {
0x0008c820 beq.w 0x8c96c | goto label_9;
| }
| label_3:
0x0008c824 ldr r3, [r6] | r3 = *(r6);
0x0008c826 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008c828 lsls r4, r3, 0x11 | r4 = r3 << 0x11;
| if (r4 >= r3) {
0x0008c82a bpl.w 0x8c954 | goto label_10;
| }
0x0008c82e ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x0008c830 movs r2, 0 | r2 = 0;
0x0008c832 ldr r1, [r5] | r1 = *(r5);
0x0008c834 adds r0, 0x38 | r0 += 0x38;
0x0008c836 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x0008c83a ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0008c83c cmp r3, 0 |
| if (r3 == 0) {
0x0008c83e beq.w 0x8c94c | goto label_11;
| }
| label_0:
0x0008c842 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0008c844 movs r2, 3 | r2 = 3;
0x0008c846 str r2, [sp] | *(sp) = r2;
0x0008c848 mov r1, sl | r1 = sl;
0x0008c84a mov r0, r6 | r0 = r6;
0x0008c84c strd r5, r3, [sp, 4] | __asm ("strd r5, r3, [sp, 4]");
0x0008c850 movs r3, 0 | r3 = 0;
0x0008c852 mov r2, r3 | r2 = r3;
0x0008c854 bl 0x8c330 | fcn_0008c330 (r0, r1, r2, r3, r4, r5, r6);
0x0008c858 ldr r3, [r6] | r3 = *(r6);
0x0008c85a mov r7, r0 | r7 = r0;
0x0008c85c ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008c85e lsls r0, r3, 0x11 | r0 = r3 << 0x11;
| if (r0 < r3) {
0x0008c860 bmi 0x8c960 | goto label_12;
| }
| label_2:
0x0008c862 ldrsh.w r3, [r5, 0x2a] | r3 = *((r5 + 0x2a));
0x0008c866 movs r4, 0 | r4 = 0;
0x0008c868 ldr r2, [r6, 0x2c] | r2 = *((r6 + 0x2c));
0x0008c86a movs r1, 0x4d | r1 = 0x4d;
0x0008c86c mov r0, sb | r0 = sb;
0x0008c86e adds r3, 1 | r3++;
0x0008c870 add r3, r2 | r3 += r2;
0x0008c872 add.w r8, r2, 1 | r8 = r2 + 1;
0x0008c876 str r3, [r6, 0x2c] | *((r6 + 0x2c)) = r3;
0x0008c878 mov r3, r8 | r3 = r8;
0x0008c87a ldr r2, [sp, 0x20] | r2 = *((sp + 0x20));
0x0008c87c str r4, [sp] | *(sp) = r4;
0x0008c87e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008c882 ldrsh.w r2, [r5, 0x2a] | r2 = *((r5 + 0x2a));
0x0008c886 cmp r2, r4 |
| if (r2 <= r4) {
0x0008c888 ble 0x8c8ca | goto label_13;
| }
| do {
0x0008c88a adds r1, r7, 1 | r1 = r7 + 1;
0x0008c88c sxth r1, r4 | __asm ("sxth r1, r4");
| if (r1 != r7) {
0x0008c88e beq 0x8c8a0 |
0x0008c890 cmp r4, 0x1f |
0x0008c892 mov.w r3, 1 | r3 = 1;
0x0008c896 lsl.w r3, r3, r4 | r3 <<= r4;
| if (r4 > 0x1f) {
0x0008c89a bgt 0x8c8c4 | goto label_14;
| }
0x0008c89c tst r3, r7 |
| if ((r3 & r7) == 0) {
0x0008c89e beq 0x8c8c4 | goto label_14;
| }
| }
0x0008c8a0 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0008c8a2 lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 < r3) {
0x0008c8a4 bpl 0x8c8ae |
0x0008c8a6 mov r0, r5 | r0 = r5;
0x0008c8a8 bl 0xf328 | r0 = fcn_0000f328 (r0, r1);
0x0008c8ac mov r1, r0 | r1 = r0;
| }
0x0008c8ae add r1, r8 | r1 += r8;
0x0008c8b0 mov r2, fp | r2 = fp;
0x0008c8b2 adds r1, 1 | r1++;
0x0008c8b4 mov r3, r4 | r3 = r4;
0x0008c8b6 str r1, [sp] | *(sp) = r1;
0x0008c8b8 mov r0, sb | r0 = sb;
0x0008c8ba mov r1, r5 | r1 = r5;
0x0008c8bc bl 0x66f40 | fcn_00066f40 (r0, r1, r2, r3, r4);
0x0008c8c0 ldrsh.w r2, [r5, 0x2a] | r2 = *((r5 + 0x2a));
| label_14:
0x0008c8c4 adds r4, 1 | r4++;
0x0008c8c6 cmp r2, r4 |
0x0008c8c8 bgt 0x8c88a |
| } while (r2 > r4);
| label_13:
0x0008c8ca movs r3, 1 | r3 = 1;
0x0008c8cc ldr.w r4, [sb, 0x6c] | r4 = *((sb + 0x6c));
0x0008c8d0 str r3, [sp] | *(sp) = r3;
0x0008c8d2 movs r2, 0x7f | r2 = 0x7f;
0x0008c8d4 ldr r3, [sp, 0x1c] | r3 = *((sp + 0x1c));
0x0008c8d6 mov r1, sl | r1 = sl;
0x0008c8d8 mov r0, r6 | r0 = r6;
0x0008c8da str r5, [sp, 4] | var_4h = r5;
0x0008c8dc str r3, [sp, 0x10] | var_10h = r3;
0x0008c8de ldr r3, [sp, 0x18] | r3 = var_18h;
0x0008c8e0 strd r8, r3, [sp, 8] | __asm ("strd r8, r3, [sp, 8]");
0x0008c8e4 movs r3, 0 | r3 = 0;
0x0008c8e6 bl 0x8c468 | fcn_0008c468 (r0, r1, r2, r3, r4, r5, r6);
0x0008c8ea ldr.w r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
0x0008c8ee cmp r3, r4 |
| if (r3 > r4) {
0x0008c8f0 bgt 0x8c9c0 | goto label_15;
| }
| label_5:
0x0008c8f2 movs r3, 0 | r3 = 0;
0x0008c8f4 mov r2, r8 | r2 = r8;
0x0008c8f6 mov r1, r5 | r1 = r5;
0x0008c8f8 mov r0, r6 | r0 = r6;
0x0008c8fa strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x0008c8fe bl 0x89b70 | fcn_00089b70 (r0, r1, r2, r3, r4, r5, r6);
| label_1:
0x0008c902 ldr r4, [r5, 0xc] | r4 = *((r5 + 0xc));
0x0008c904 cmp r4, 0 |
| if (r4 == 0) {
0x0008c906 beq 0x8c9ec | goto label_16;
| }
| label_7:
0x0008c908 ldr r3, [r6] | r3 = *(r6);
0x0008c90a ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008c90c lsls r2, r3, 0x11 | r2 = r3 << 0x11;
| if (r2 < r3) {
0x0008c90e bmi 0x8c982 | goto label_17;
| }
| label_4:
0x0008c910 ldr r3, [sp, 0x1c] | r3 = *((sp + 0x1c));
0x0008c912 mov r0, r6 | r0 = r6;
0x0008c914 movs r2, 0x7f | r2 = 0x7f;
0x0008c916 mov r1, sl | r1 = sl;
0x0008c918 str r5, [sp, 4] | var_4h = r5;
0x0008c91a str r3, [sp, 0x10] | var_10h = r3;
0x0008c91c ldr r3, [sp, 0x18] | r3 = var_18h;
0x0008c91e strd r8, r3, [sp, 8] | __asm ("strd r8, r3, [sp, 8]");
0x0008c922 movs r3, 2 | r3 = 2;
0x0008c924 str r3, [sp] | *(sp) = r3;
0x0008c926 movs r3, 0 | r3 = 0;
0x0008c928 bl 0x8c468 | fcn_0008c468 (r0, r1, r2, r3, r4, r5, r6);
0x0008c92c ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x0008c930 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0008c934 cmn r2, r3 |
| if (r2 < r3) {
0x0008c936 bmi 0x8c9dc | goto label_18;
| }
0x0008c938 ldr r3, [sp, 0x24] | r3 = *((sp + 0x24));
0x0008c93a ldr.w r1, [sb, 0x6c] | r1 = *((sb + 0x6c));
0x0008c93e ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0008c940 lsls r3, r3, 2 | r3 <<= 2;
0x0008c942 rsbs r3, r3, 0 | r3 -= ;
0x0008c944 str r1, [r2, r3] | *((r2 + r3)) = r1;
0x0008c946 add sp, 0x44 |
0x0008c948 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x0008c94c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0008c94e cmp r3, 0 |
| if (r3 != 0) {
0x0008c950 bne.w 0x8c842 | goto label_0;
| }
| label_10:
0x0008c954 mov r8, sl | r8 = sl;
0x0008c956 cmp.w sl, 0 |
| if (sl != 0) {
0x0008c95a bne.w 0x8c842 | goto label_0;
| }
0x0008c95e b 0x8c902 | goto label_1;
| label_12:
0x0008c960 mov r1, r5 | r1 = r5;
0x0008c962 mov r0, r6 | r0 = r6;
0x0008c964 bl 0x2e770 | r0 = fcn_0002e770 (r0, r1);
0x0008c968 orrs r7, r0 | r7 |= r0;
0x0008c96a b 0x8c862 | goto label_2;
| label_9:
0x0008c96c ldr r3, [sp, 0x30] | r3 = *((sp + 0x30));
0x0008c96e mov r2, fp | r2 = fp;
0x0008c970 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0008c972 mov r0, sb | r0 = sb;
0x0008c974 str r3, [sp, 4] | var_4h = r3;
0x0008c976 ldr r3, [sp, 0x20] | r3 = *((sp + 0x20));
0x0008c978 str r3, [sp] | *(sp) = r3;
0x0008c97a ldr r3, [sp, 0x1c] | r3 = *((sp + 0x1c));
0x0008c97c bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0008c980 b 0x8c824 | goto label_3;
| label_17:
0x0008c982 ldr r0, [r5, 0x48] | r0 = *((r5 + 0x48));
0x0008c984 movs r2, 0 | r2 = 0;
0x0008c986 ldr r1, [r5] | r1 = *(r5);
0x0008c988 adds r0, 0x38 | r0 += 0x38;
0x0008c98a bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x0008c98e ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x0008c990 cmp r4, 0 |
| if (r4 == 0) {
0x0008c992 beq 0x8c910 | goto label_4;
| }
0x0008c994 mov.w fp, 0 |
0x0008c998 movs r7, 2 | r7 = 2;
| do {
0x0008c99a mov r2, r4 | r2 = r4;
0x0008c99c movs r3, 0 | r3 = 0;
0x0008c99e mov r1, r5 | r1 = r5;
0x0008c9a0 mov r0, r6 | r0 = r6;
0x0008c9a2 bl 0x32770 | r0 = fcn_00032770 (r0, r1, r2, r3);
0x0008c9a6 mov r1, r0 | r1 = r0;
0x0008c9a8 mov r3, r8 | r3 = r8;
0x0008c9aa mov r2, r5 | r2 = r5;
0x0008c9ac mov r0, r6 | r0 = r6;
| if (r1 != 0) {
0x0008c9ae cbz r1, 0x8c9b8 |
0x0008c9b0 strd r7, fp, [sp] | __asm ("strd r7, fp, [sp]");
0x0008c9b4 bl 0x8c3a4 | fcn_0008c3a4 (r0, r1, r2, r3, r4, r5);
| }
0x0008c9b8 ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
0x0008c9ba cmp r4, 0 |
0x0008c9bc bne 0x8c99a |
| } while (r4 != 0);
0x0008c9be b 0x8c910 | goto label_4;
| label_15:
0x0008c9c0 ldr r3, [sp, 0x30] | r3 = *((sp + 0x30));
0x0008c9c2 mov r2, fp | r2 = fp;
0x0008c9c4 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0008c9c6 mov r0, sb | r0 = sb;
0x0008c9c8 str r3, [sp, 4] | var_4h = r3;
0x0008c9ca ldr r3, [sp, 0x20] | r3 = *((sp + 0x20));
0x0008c9cc str r3, [sp] | *(sp) = r3;
0x0008c9ce mov.w r3, -1 | r3 = -1;
0x0008c9d2 str r3, [sp, 0x28] | var_28h = r3;
0x0008c9d4 ldr r3, [sp, 0x1c] | r3 = *((sp + 0x1c));
0x0008c9d6 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0008c9da b 0x8c8f2 | goto label_5;
| label_18:
0x0008c9dc ldr r3, [sp, 0x24] | r3 = *((sp + 0x24));
0x0008c9de mov r1, sb | r1 = sb;
0x0008c9e0 rsbs r2, r3, 0 | r2 = r3 - ;
0x0008c9e2 add sp, 0x44 |
0x0008c9e4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0008c9e8 b.w 0x1c0b8 | void (*0x1c0b8)() ();
| label_16:
0x0008c9ec ldr r3, [sp, 0x38] | r3 = *((sp + 0x38));
0x0008c9ee mov r0, r6 | r0 = r6;
0x0008c9f0 str r3, [sp] | *(sp) = r3;
0x0008c9f2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008c9f4 strd r4, r3, [sp, 4] | __asm ("strd r4, r3, [sp, 4]");
0x0008c9f8 mov r3, fp | r3 = fp;
0x0008c9fa ldr r2, [r5, 0x24] | r2 = *((r5 + 0x24));
0x0008c9fc ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0008c9fe bl 0x6f1d4 | fcn_0006f1d4 (r0, r1, r2, r3);
0x0008ca02 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008ca04 mov r2, fp | r2 = fp;
0x0008ca06 movs r1, 0x7e | r1 = 0x7e;
0x0008ca08 mov r0, sb | r0 = sb;
0x0008ca0a str r4, [sp] | *(sp) = r4;
0x0008ca0c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ca10 ldrb r3, [r6, 0x12] | r3 = *((r6 + 0x12));
| if (r3 == 0) {
0x0008ca12 cbz r3, 0x8ca5c | goto label_19;
| }
0x0008ca14 ldr r1, [pc, 0xac] |
0x0008ca16 ldr r0, [r5] | r0 = *(r5);
0x0008ca18 add r1, pc | r1 = 0x1194e0;
0x0008ca1a blx 0x831c | r0 = fcn_0000831c ();
0x0008ca1e cbz r0, 0x8ca5c |
| while (r3 != 0) {
| label_6:
0x0008ca20 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008ca22 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008ca24 mvns r2, r3 | r2 = ~r3;
0x0008ca26 cmp r3, fp |
0x0008ca28 lsr.w r2, r2, 0x1f | r2 >>= 0x1f;
0x0008ca2c it eq |
| if (r3 != fp) {
0x0008ca2e moveq r2, 0 | r2 = 0;
| }
| if (r0 == 0) {
0x0008ca30 cbz r0, 0x8ca82 | goto label_20;
| }
0x0008ca32 ldr.w r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
0x0008ca36 cmp r3, 0 |
| if (r3 <= 0) {
0x0008ca38 ble 0x8cabc | goto label_21;
| }
0x0008ca3a add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008ca3e ldr.w r1, [sb, 0x68] | r1 = *((sb + 0x68));
0x0008ca42 lsls r3, r3, 2 | r3 <<= 2;
0x0008ca44 subs r3, 0x14 | r3 -= 0x14;
0x0008ca46 add r3, r1 | r3 += r1;
0x0008ca48 movs r1, 4 | r1 = 4;
0x0008ca4a strh r1, [r3, 2] | *((r3 + 2)) = r1;
| if (r2 != 0) {
0x0008ca4c cbnz r2, 0x8ca84 | goto label_8;
| }
0x0008ca4e sub.w r1, r0, 2 | r1 = r0 - 2;
0x0008ca52 clz r1, r1 | r1 &= r1;
0x0008ca56 lsrs r1, r1, 5 | r1 >>= 5;
0x0008ca58 lsls r1, r1, 1 | r1 <<= 1;
0x0008ca5a b 0x8cab8 | goto label_22;
| label_19:
0x0008ca5c ldr.w r3, [sb] | r3 = *(sb);
0x0008ca60 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008ca64 cmp r3, 0 |
0x0008ca66 bne 0x8ca20 |
| }
0x0008ca68 ldr.w r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
0x0008ca6c ldr.w r2, [sb, 0x68] | r2 = *((sb + 0x68));
0x0008ca70 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008ca74 lsls r3, r3, 2 | r3 <<= 2;
0x0008ca76 subs r3, 0x14 | r3 -= 0x14;
0x0008ca78 add r3, r2 | r3 += r2;
0x0008ca7a movs r2, 0xfa | r2 = 0xfa;
0x0008ca7c str r5, [r3, 0x10] | *((r3 + 0x10)) = r5;
0x0008ca7e strb r2, [r3, 1] | *((r3 + 1)) = r2;
0x0008ca80 b 0x8ca20 | goto label_6;
| if (r2 != 0) {
| label_20:
0x0008ca82 cbz r2, 0x8ca92 |
| label_8:
0x0008ca84 movs r3, 0 | r3 = 0;
0x0008ca86 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008ca88 movs r1, 0x7e | r1 = 0x7e;
0x0008ca8a mov r0, sb | r0 = sb;
0x0008ca8c str r3, [sp] | *(sp) = r3;
0x0008ca8e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0008ca92 ldr.w r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
0x0008ca96 cmp r3, 0 |
| if (r3 <= 0) {
0x0008ca98 ble.w 0x8c908 | goto label_7;
| }
0x0008ca9c ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008ca9e add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008caa2 lsls r3, r3, 2 | r3 <<= 2;
0x0008caa4 sub.w r1, r2, 2 | r1 = r2 - 2;
0x0008caa8 ldr.w r2, [sb, 0x68] | r2 = *((sb + 0x68));
0x0008caac clz r1, r1 | r1 &= r1;
0x0008cab0 subs r3, 0x14 | r3 -= 0x14;
0x0008cab2 lsrs r1, r1, 5 | r1 >>= 5;
0x0008cab4 add r3, r2 | r3 += r2;
0x0008cab6 lsls r1, r1, 1 | r1 <<= 1;
| label_22:
0x0008cab8 strh r1, [r3, 2] | *((r3 + 2)) = r1;
0x0008caba b 0x8c908 | goto label_7;
| label_21:
0x0008cabc cmp r2, 0 |
| if (r2 == 0) {
0x0008cabe beq.w 0x8c908 | goto label_7;
| }
0x0008cac2 b 0x8ca84 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x8cac8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0008cac8 () | void fcn_0008cac8 (int16_t arg_0h, int16_t arg_8h, int16_t arg_2ch, int16_t arg_34h, int16_t arg_38h, int16_t arg_74h, int16_t arg_114h, int16_t arg_11ch, int16_t arg_120h, int16_t arg_124h, int16_t arg_128h, int16_t arg_12ch, int16_t arg_130h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_c8h;
| int16_t var_cch;
| int32_t var_8h_2;
| int32_t var_8h_3;
| int32_t var_10h_2;
| int16_t var_dch;
| int16_t var_e0h;
| int16_t var_e4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0008cac8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0008cacc mov fp, r0 |
0x0008cace ldr.w r0, [pc, 0xb58] | r0 = *(0x0008d628);
0x0008cad2 mov r8, r1 | r8 = r1;
0x0008cad4 sub sp, 0xec |
0x0008cad6 ldr.w r1, [pc, 0xb54] |
0x0008cada add r0, pc | r0 += pc;
0x0008cadc ldr.w sl, [fp, 8] | sl = *(arg_8h);
0x0008cae0 ldrsh.w sb, [r8, 0x2a] | sb = *((r8 + 0x2a));
0x0008cae4 ldr r1, [r0, r1] | r1 = *((r0 + r1));
0x0008cae6 ldr r1, [r1] | r1 = *(0x8d62e);
0x0008cae8 str r1, [sp, 0xe4] | var_e4h = r1;
0x0008caea mov.w r1, 0 | r1 = 0;
0x0008caee str r3, [sp, 0x7c] | var_7ch = r3;
0x0008caf0 ldrb.w r3, [sp, 0x11c] | r3 = *(arg_11ch);
0x0008caf4 str r2, [sp, 0x2c] | var_2ch = r2;
0x0008caf6 ldr.w r2, [r8, 0x24] | r2 = *((r8 + 0x24));
0x0008cafa str r3, [sp, 0x54] | var_54h = r3;
0x0008cafc ldrb.w r3, [sp, 0x120] | r3 = *(arg_120h);
0x0008cb00 str r3, [sp, 0x30] | var_30h = r3;
0x0008cb02 ldr r3, [sp, 0x128] | r3 = *(arg_128h);
0x0008cb04 str r3, [sp, 0x98] | var_98h = r3;
0x0008cb06 ldr r3, [sp, 0x12c] | r3 = *(arg_12ch);
0x0008cb08 str r3, [sp, 0x20] | var_20h = r3;
0x0008cb0a ldr r3, [sp, 0x130] | r3 = *(arg_130h);
0x0008cb0c str r3, [sp, 0x3c] | var_3ch = r3;
0x0008cb0e ldr.w r3, [fp] | r3 = *(fp);
0x0008cb12 str r3, [sp, 0x34] | var_34h = r3;
0x0008cb14 ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008cb16 subs r3, 0 |
0x0008cb18 it ne |
| if (r3 == 0) {
0x0008cb1a movne r3, 1 | r3 = 1;
| }
0x0008cb1c str r3, [sp, 0x58] | var_58h = r3;
0x0008cb1e ands r3, r2, 0x80 | r3 = r2 & 0x80;
| if (r3 == r2) {
0x0008cb22 beq.w 0x8cd54 | goto label_80;
| }
0x0008cb26 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x0008cb2a str r3, [sp, 0x44] | var_44h = r3;
0x0008cb2c ldr r1, [sp, 0x44] | r1 = var_44h;
| if (r3 != 0) {
0x0008cb2e cbnz r3, 0x8cb3c | goto label_81;
| }
0x0008cb30 b.w 0x8df1c | goto label_82;
| do {
0x0008cb34 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0008cb36 cmp r1, 0 |
| if (r1 == 0) {
0x0008cb38 beq.w 0x8df1c | goto label_82;
| }
| label_81:
0x0008cb3c ldrb.w r3, [r1, 0x37] | r3 = *((r1 + 0x37));
0x0008cb40 and r3, r3, 3 | r3 &= 3;
0x0008cb44 cmp r3, 2 |
0x0008cb46 bne 0x8cb34 |
| } while (r3 != 2);
0x0008cb48 ldrh r3, [r1, 0x32] | r3 = *((r1 + 0x32));
0x0008cb4a lsls r5, r2, 0x14 | r5 = r2 << 0x14;
0x0008cb4c str r1, [sp, 0x44] | var_44h = r1;
0x0008cb4e str r3, [sp, 0x64] | var_64h = r3;
| if (r5 < r2) {
0x0008cb50 bmi.w 0x8cd62 | goto label_83;
| }
| label_1:
0x0008cb54 ldr.w r5, [r8, 0x18] | r5 = *((r8 + 0x18));
0x0008cb58 str r5, [sp, 0x24] | var_24h = r5;
0x0008cb5a cmp r5, 0 |
| if (r5 == 0) {
0x0008cb5c beq.w 0x8cc72 | goto label_84;
| }
0x0008cb60 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008cb62 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008cb64 and r3, r3, 0x200 | r3 &= 0x200;
0x0008cb68 cmp r3, 0 |
| if (r3 != 0) {
0x0008cb6a bne.w 0x8cfc0 | goto label_85;
| }
0x0008cb6e ldr r0, [sp, 0x30] | r0 = var_30h;
0x0008cb70 ldr r2, [r5] | r2 = *(r5);
0x0008cb72 ldr r1, [sp, 0x114] | r1 = *(arg_114h);
0x0008cb74 cmp r0, 0xb |
0x0008cb76 ite ne |
| if (r0 == 0xb) {
0x0008cb78 movne r6, r0 | r6 = r0;
| }
| if (r0 != 0xb) {
0x0008cb7a moveq r6, 2 | r6 = 2;
| }
0x0008cb7c cmp r2, 0 |
0x0008cb7e mvn.w r1, r1 | r1 = ~r1;
0x0008cb82 str.w r1, [fp, 0x34] | __asm ("str.w r1, [arg_34h]");
| if (r2 <= 0) {
0x0008cb86 ble.w 0x8de94 | goto label_86;
| }
0x0008cb8a ldr.w r1, [pc, 0xaa4] | r1 = *(0x0008d630);
0x0008cb8e mov r4, r3 | r4 = r3;
0x0008cb90 str.w r8, [sp, 0x40] | __asm ("str.w r8, [var_40h]");
0x0008cb94 add.w sb, sp, 0xc8 | sb += var_c8h;
0x0008cb98 mov r7, r3 | r7 = r3;
0x0008cb9a mov r8, r3 | r8 = r3;
0x0008cb9c add r1, pc | r1 += pc;
0x0008cb9e str r1, [sp, 0x38] | var_38h = r1;
| do {
0x0008cba0 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0008cba2 ldr r3, [r5, 8] | r3 = *((r5 + 8));
| if (r2 != 0) {
0x0008cba4 cbz r2, 0x8cbe0 |
0x0008cba6 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0008cba8 str.w r7, [sb] | __asm ("str.w r7, [sb]");
0x0008cbac strd r7, r7, [sb, 8] | __asm ("strd r7, r7, [var_8h_2]");
0x0008cbb0 str r2, [sp, 0xcc] | var_cch = r2;
0x0008cbb2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0008cbb4 strd r7, r7, [sb, 0x10] | __asm ("strd r7, r7, [var_dch]");
0x0008cbb8 str r2, [sp, 0xe0] | var_e0h = r2;
0x0008cbba cmp r3, 0 |
| if (r3 == 0) {
0x0008cbbc beq.w 0x8d05e | goto label_87;
| }
0x0008cbc0 mov r1, r3 | r1 = r3;
0x0008cbc2 mov r0, sb | r0 = sb;
0x0008cbc4 str r3, [sp, 0x28] | var_28h = r3;
0x0008cbc6 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x0008cbca ldr r1, [sp, 0x54] | r1 = var_54h;
0x0008cbcc ldrh.w r2, [sp, 0xdc] | r2 = var_dch;
0x0008cbd0 ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r1 == 0) {
0x0008cbd2 cbnz r1, 0x8cbdc |
| label_15:
0x0008cbd4 bic r2, r2, 2 | r2 = BIT_MASK (r2, 2);
0x0008cbd8 lsls r2, r2, 0x10 | r2 <<= 0x10;
0x0008cbda lsrs r2, r2, 0x10 | r2 >>= 0x10;
| }
0x0008cbdc cmp r2, 0 |
| if (r2 == 0) {
0x0008cbde beq 0x8cc58 | goto label_14;
| }
| }
0x0008cbe0 cmp r4, 0 |
| if (r4 == 0) {
0x0008cbe2 beq.w 0x8d04c | goto label_88;
| }
| label_13:
0x0008cbe6 ldr.w r4, [fp, 0x38] | r4 = *(arg_38h);
0x0008cbea subs r2, r4, 1 | r2 = r4 - 1;
0x0008cbec str r2, [sp, 0x28] | var_28h = r2;
0x0008cbee str.w r2, [fp, 0x38] | __asm ("str.w r2, [arg_38h]");
0x0008cbf2 cmp r3, 0 |
| if (r3 == 0) {
0x0008cbf4 beq.w 0x8d06a | goto label_89;
| }
0x0008cbf8 mov r1, r3 | r1 = r3;
0x0008cbfa movs r3, 0 | r3 = 0;
0x0008cbfc mov r2, r3 | r2 = r3;
0x0008cbfe ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008cc00 bl 0x311ec | fcn_000311ec (r0, r1, r2, r3);
0x0008cc04 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008cc06 mov r1, r0 | r1 = r0;
0x0008cc08 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008cc0c cmp r3, 0 |
| if (r3 == 0) {
0x0008cc0e beq.w 0x8d026 | goto label_90;
| }
| if (r1 != 0) {
| label_12:
0x0008cc12 cbz r1, 0x8cc1a |
0x0008cc14 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008cc16 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
| label_16:
0x0008cc1a cmp r6, 4 |
| if (r6 == 4) {
0x0008cc1c beq.w 0x8d088 | goto label_91;
| }
| label_17:
0x0008cc20 cmp r6, 5 |
0x0008cc22 mov.w r2, 3 | r2 = 3;
0x0008cc26 it eq |
| if (r6 != 5) {
0x0008cc28 moveq r6, 2 | r6 = 2;
| }
0x0008cc2a ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0008cc2c mov r0, fp | r0 = fp;
0x0008cc2e str r2, [sp, 4] | var_4h = r2;
0x0008cc30 movw r1, 0x113 | r1 = 0x113;
0x0008cc34 mov r2, r6 | r2 = r6;
0x0008cc36 str r7, [sp] | *(sp) = r7;
0x0008cc38 bl 0x2b978 | fcn_0002b978 (r0, r1, r2, r3, r4, r5);
0x0008cc3c ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008cc40 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0008cc44 cmn r2, r3 |
| if (r2 < r3) {
0x0008cc46 bmi.w 0x8d09e | goto label_92;
| }
| label_18:
0x0008cc4a ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0008cc4c lsls r4, r4, 2 | r4 <<= 2;
0x0008cc4e ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008cc52 rsbs r4, r4, 0 | r4 -= ;
0x0008cc54 str r2, [r3, r4] | *((r3 + r4)) = r2;
0x0008cc56 movs r4, 1 | r4 = 1;
| label_14:
0x0008cc58 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008cc5a add.w r8, r8, 1 | r8++;
0x0008cc5e adds r5, 0x10 | r5 += 0x10;
0x0008cc60 ldr r3, [r3] | r3 = *(r3);
0x0008cc62 cmp r3, r8 |
0x0008cc64 bgt 0x8cba0 |
| } while (r3 > r8);
0x0008cc66 ldr.w r8, [sp, 0x40] | r8 = var_40h;
0x0008cc6a str r4, [sp, 0x24] | var_24h = r4;
| label_74:
0x0008cc6c movs r3, 0 | r3 = 0;
0x0008cc6e str.w r3, [fp, 0x34] | __asm ("str.w r3, [arg_34h]");
| label_84:
0x0008cc72 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008cc74 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x0008cc78 str r3, [sp, 0x28] | var_28h = r3;
0x0008cc7a cmp r2, 0 |
| if (r2 == 0) {
0x0008cc7c beq.w 0x8cfd2 | goto label_93;
| }
| label_11:
0x0008cc80 ldr r2, [r2] | r2 = *(r2);
0x0008cc82 str r2, [sp, 0x5c] | var_5ch = r2;
0x0008cc84 cmp r2, 0 |
| if (r2 == 0) {
0x0008cc86 beq.w 0x8d036 | goto label_94;
| }
0x0008cc8a ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008cc8c cmp r2, 0 |
| if (r2 == 0) {
0x0008cc8e beq.w 0x8dbcc | goto label_95;
| }
0x0008cc92 movs r2, 0 | r2 = 0;
| do {
0x0008cc94 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0008cc96 adds r2, 1 | r2++;
0x0008cc98 cmp r3, 0 |
0x0008cc9a bne 0x8cc94 |
| } while (r3 != 0);
0x0008cc9c ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008cc9e add.w r4, r2, r2, lsl 2 | r4 = r2 + (r2 << 2);
0x0008cca2 str r2, [sp, 0x28] | var_28h = r2;
0x0008cca4 lsls r4, r4, 1 | r4 <<= 1;
0x0008cca6 cmp r0, 0 |
| if (r0 == 0) {
0x0008cca8 beq.w 0x8d95a | goto label_96;
| }
0x0008ccac mov r2, r4 | r2 = r4;
0x0008ccae bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0008ccb2 str r0, [sp, 0x5c] | var_5ch = r0;
| label_50:
0x0008ccb4 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008ccb6 cmp r3, 0 |
| if (r3 == 0) {
0x0008ccb8 beq.w 0x8d5be | goto label_97;
| }
0x0008ccbc mov r2, r4 | r2 = r4;
0x0008ccbe movs r1, 0 | r1 = 0;
0x0008ccc0 mov r0, r3 | r0 = r3;
0x0008ccc2 mov r4, r3 | r4 = r3;
0x0008ccc4 blx 0x8264 | fcn_00008264 ();
0x0008ccc8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0008ccca mov r3, r4 | r3 = r4;
0x0008cccc ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008ccce movs r7, 1 | r7 = 1;
0x0008ccd0 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x0008ccd4 mov ip, r3 |
0x0008ccd6 add.w r5, r4, r0, lsl 3 | r5 = r4 + (r0 << 3);
0x0008ccda str r4, [r2, 0x18] | *((r2 + 0x18)) = r4;
0x0008ccdc mov r0, r2 | r0 = r2;
0x0008ccde movs r4, 0 | r4 = 0;
| label_0:
0x0008cce0 ldr r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x0008cce2 cbz r3, 0x8cd2a | goto label_98;
| }
0x0008cce4 ldr r6, [r0, 0x1c] | r6 = *((r0 + 0x1c));
| if (r6 == 0) {
0x0008cce6 cbz r6, 0x8cd24 | goto label_99;
| }
0x0008cce8 cmp r1, 0 |
| if (r1 == 0) {
0x0008ccea beq.w 0x8db88 | goto label_100;
| }
0x0008ccee cmp r6, r1 |
| if (r6 == r1) {
0x0008ccf0 beq.w 0x8db88 | goto label_100;
| }
0x0008ccf4 mov r3, r1 | r3 = r1;
0x0008ccf6 movs r2, 0 | r2 = 0;
0x0008ccf8 b 0x8ccfe |
| while (r3 != 0) {
0x0008ccfa cmp r6, r3 |
| if (r6 == r3) {
0x0008ccfc beq 0x8cd06 | goto label_101;
| }
0x0008ccfe ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0008cd00 adds r2, 1 | r2++;
0x0008cd02 cmp r3, 0 |
0x0008cd04 bne 0x8ccfa |
| }
| label_101:
0x0008cd06 adds r6, r5, r2 | r6 = r5 + r2;
| label_64:
0x0008cd08 ldrb.w lr, [r6] |
0x0008cd0c cmp.w lr, 0 |
| if (lr == 0) {
0x0008cd10 bne 0x8cd24 |
0x0008cd12 strb r7, [r6] | *(r6) = r7;
0x0008cd14 str.w r3, [ip, r4, lsl 3] | __asm ("str.w r3, [ip, r4, lsl 3]");
0x0008cd18 add.w r3, ip, r4, lsl 3 | r3 = ip + (r4 << 3);
0x0008cd1c adds r4, 1 | r4++;
0x0008cd1e ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x0008cd22 str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
| label_99:
0x0008cd24 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x0008cd26 cmp r0, 0 |
| if (r0 != 0) {
0x0008cd28 bne 0x8cce0 | goto label_0;
| }
| if (r1 == 0) {
| label_98:
0x0008cd2a cbz r1, 0x8cd4e | goto label_102;
| }
0x0008cd2c ldr r6, [sp, 0x5c] | r6 = var_5ch;
0x0008cd2e subs r3, r5, 1 | r3 = r5 - 1;
0x0008cd30 rsb.w r5, r5, 1 | r5 = 1 - r5;
| do {
0x0008cd34 adds r0, r5, r3 | r0 = r5 + r3;
0x0008cd36 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
| if (r2 == 0) {
0x0008cd3a cbnz r2, 0x8cd48 |
0x0008cd3c add.w r2, r6, r4, lsl 3 | r2 = r6 + (r4 << 3);
0x0008cd40 str.w r1, [r6, r4, lsl 3] | __asm ("str.w r1, [r6, r4, lsl 3]");
0x0008cd44 adds r4, 1 | r4++;
0x0008cd46 str r0, [r2, 4] | *((r2 + 4)) = r0;
| }
0x0008cd48 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0008cd4a cmp r1, 0 |
0x0008cd4c bne 0x8cd34 |
| } while (r1 != 0);
| label_102:
0x0008cd4e movs r3, 1 | r3 = 1;
0x0008cd50 str r3, [sp, 0x40] | var_40h = r3;
0x0008cd52 b 0x8cfd8 | goto label_56;
| label_80:
0x0008cd54 lsls r5, r2, 0x14 | r5 = r2 << 0x14;
0x0008cd56 str r3, [sp, 0x44] | var_44h = r3;
0x0008cd58 mov.w r3, 1 | r3 = 1;
0x0008cd5c str r3, [sp, 0x64] | var_64h = r3;
| if (r5 >= r2) {
0x0008cd5e bpl.w 0x8cb54 | goto label_1;
| }
| label_83:
0x0008cd62 ldr.w r3, [pc, 0x8d0] | r3 = *(0x0008d634);
0x0008cd66 ldr.w r2, [pc, 0x8d0] | r2 = *(0x0008d638);
0x0008cd6a str.w fp, [sp, 0x40] | __asm ("str.w fp, [var_40h]");
0x0008cd6e add r3, pc | r3 += pc;
0x0008cd70 adds r3, 4 | r3 += 4;
0x0008cd72 add r2, pc | r2 += pc;
0x0008cd74 str r3, [sp, 0x5c] | var_5ch = r3;
0x0008cd76 movs r3, 0 | r3 = 0;
0x0008cd78 mov fp, r3 |
0x0008cd7a str r3, [sp, 0x24] | var_24h = r3;
0x0008cd7c str r2, [sp, 0x48] | var_48h = r2;
0x0008cd7e str r3, [sp, 0x38] | var_38h = r3;
| label_2:
0x0008cd80 cmp.w sb, 0 |
0x0008cd84 itt le |
| if (sb > 0) {
0x0008cd86 andle r3, fp, 1 | r3 = fp & 1;
| }
| if (sb <= 0) {
0x0008cd8a str r3, [sp, 0x28] | var_28h = r3;
| }
| if (sb <= 0) {
0x0008cd8c ble.w 0x8cec0 | goto label_103;
| }
0x0008cd90 movs r4, 0 | r4 = 0;
0x0008cd92 and r3, fp, 1 | r3 = fp & 1;
0x0008cd96 str r3, [sp, 0x28] | var_28h = r3;
| do {
0x0008cd98 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x0008cd9c add.w r3, r4, r4, lsl 2 | r3 = r4 + (r4 << 2);
0x0008cda0 add.w r6, r2, r3, lsl 2 | r6 = r2 + (r3 << 2);
0x0008cda4 ldrb r5, [r6, 0xc] | r5 = *((r6 + 0xc));
0x0008cda6 cmp r5, 0 |
| if (r5 != 0) {
0x0008cda8 beq.w 0x8ceb8 |
0x0008cdac ldrsh.w r1, [r8, 0x28] | r1 = *((r8 + 0x28));
0x0008cdb0 cmp r1, r4 |
| if (r1 == r4) {
0x0008cdb2 beq.w 0x8ceb8 | goto label_4;
| }
0x0008cdb6 ldrh r1, [r6, 0x10] | r1 = *((r6 + 0x10));
0x0008cdb8 ands r0, r1, 0x60 | r0 = r1 & 0x60;
0x0008cdbc eor r1, fp, 1 | r1 = fp ^ 1;
0x0008cdc0 and r1, r1, 1 | r1 &= 1;
0x0008cdc4 it eq |
| if (r0 != r1) {
0x0008cdc6 moveq r1, 0 | r1 = 0;
| }
0x0008cdc8 cmp r1, 0 |
| if (r1 != 0) {
0x0008cdca bne.w 0x8cf80 | goto label_104;
| }
0x0008cdce ldr r1, [sp, 0x20] | r1 = var_20h;
| if (r1 != 0) {
0x0008cdd0 cbz r1, 0x8cde2 |
0x0008cdd2 ldr.w r1, [r1, r4, lsl 2] | offset_0 = r4 << 2;
| r1 = *((r1 + offset_0));
0x0008cdd6 clz r7, r0 | r7 &= r0;
0x0008cdda lsrs r7, r7, 5 | r7 >>= 5;
0x0008cddc ands.w r7, r7, r1, lsr 31 | r7 &= (r1 >> 31);
| if (r7 != r7) {
0x0008cde0 bne 0x8ceb8 | goto label_4;
| }
| }
0x0008cde2 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0008cde4 cmp r1, 0xb |
0x0008cde6 it ne |
| if (r1 == 0xb) {
0x0008cde8 movne r5, r1 | r5 = r1;
| }
| if (r1 == 0xb) {
0x0008cdea beq.w 0x8cf88 | goto label_105;
| }
| label_5:
0x0008cdee cmp r5, 5 |
| if (r5 == 5) {
0x0008cdf0 beq 0x8cee4 | goto label_106;
| }
| label_6:
0x0008cdf2 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0008cdf4 cmp r0, 0 |
0x0008cdf6 ite ne |
| if (r0 == 0) {
0x0008cdf8 movne r1, 0 | r1 = 0;
| }
| if (r0 != 0) {
0x0008cdfa andeq r1, r1, 1 | r1 &= 1;
| }
0x0008cdfe cmp r1, 0 |
| if (r1 != 0) {
0x0008ce00 bne 0x8ceb8 | goto label_4;
| }
0x0008ce02 ldr.w r0, [r8, 0x24] | r0 = *((r8 + 0x24));
0x0008ce06 sxth r1, r4 | __asm ("sxth r1, r4");
0x0008ce08 lsls r0, r0, 0x1a | r0 <<= 0x1a;
| if (r0 < r0) {
0x0008ce0a bpl 0x8ce1c |
0x0008ce0c mov r0, r8 | r0 = r8;
0x0008ce0e strd r3, r2, [sp, 0x4c] | __asm ("strd r3, r2, [var_50h]");
0x0008ce12 bl 0xf328 | fcn_0000f328 (r0, r1);
0x0008ce16 ldrd r3, r2, [sp, 0x4c] | __asm ("ldrd r3, r2, [var_50h]");
0x0008ce1a mov r1, r0 | r1 = r0;
| }
0x0008ce1c ldr r0, [sp, 0x114] | r0 = *(arg_114h);
0x0008ce1e add r1, r0 | r1 += r0;
0x0008ce20 adds r7, r1, 1 | r7 = r1 + 1;
0x0008ce22 subs r1, r5, 1 | r1 = r5 - 1;
0x0008ce24 cmp r1, 4 |
| if (r1 > 4) {
0x0008ce26 bhi.w 0x8cf6e | goto label_107;
| }
| /* switch table (5 cases) at 0x8ce2e */
0x0008ce2a tbb [pc, r1] | __asm ("tbb aav.0x000000ff");
| label_3:
0x0008ce34 cmp r0, 0 |
| if (r0 == 0) {
0x0008ce36 beq.w 0x8cfa4 | goto label_108;
| }
0x0008ce3a mov r0, r8 | r0 = r8;
0x0008ce3c strd r3, r2, [sp, 0x4c] | __asm ("strd r3, r2, [var_50h]");
0x0008ce40 bl 0xf328 | fcn_0000f328 (r0, r1);
0x0008ce44 ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x0008ce46 adds r7, r0, r3 | r7 = r0 + r3;
0x0008ce48 ldrd r3, r2, [sp, 0x4c] | __asm ("ldrd r3, r2, [var_50h]");
0x0008ce4c adds r7, 1 | r7++;
| label_9:
0x0008ce4e ldr r0, [sp, 0x40] | r0 = var_40h;
0x0008ce50 movs r5, 2 | r5 = 2;
0x0008ce52 ldr r1, [r0, 0x74] | r1 = *((r0 + 0x74));
0x0008ce54 cmp r1, 0 |
0x0008ce56 it eq |
| if (r1 != 0) {
0x0008ce58 moveq r1, r0 | r1 = r0;
| }
0x0008ce5a movs r0, 1 | r0 = 1;
0x0008ce5c strb r0, [r1, 0x15] | *((r1 + 0x15)) = r0;
0x0008ce5e ldr.w r3, [r2, r3, lsl 2] | offset_1 = r3 << 2;
| r3 = *((r2 + offset_1));
0x0008ce62 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0008ce64 ldr.w r2, [r8] | r2 = *(r8);
0x0008ce68 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008ce6a bl 0x2677c | fcn_0002677c (r0);
0x0008ce6e mov r3, r5 | r3 = r5;
0x0008ce70 movw r2, 0x513 | r2 = 0x513;
0x0008ce74 mov r5, r0 | r5 = r0;
0x0008ce76 movs r1, 0x43 | r1 = 0x43;
0x0008ce78 mov r0, sl | r0 = sl;
0x0008ce7a str r7, [sp] | *(sp) = r7;
0x0008ce7c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ce80 ldr.w r0, [sl] | r0 = *(sl);
0x0008ce84 ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x0008ce88 cmp r3, 0 |
| if (r3 != 0) {
0x0008ce8a bne.w 0x8cf92 | goto label_109;
| }
0x0008ce8e ldrd r1, r3, [sl, 0x68] | __asm ("ldrd r1, r3, [sl, 0x68]");
0x0008ce92 movs r0, 0xf9 | r0 = 0xf9;
0x0008ce94 add.w r2, r3, r3, lsl 2 | r2 = r3 + (r3 << 2);
0x0008ce98 lsls r2, r2, 2 | r2 <<= 2;
0x0008ce9a subs r2, 0x14 | r2 -= 0x14;
0x0008ce9c add r1, r2 | r1 += r2;
0x0008ce9e strb r0, [r1, 1] | *((r1 + 1)) = r0;
0x0008cea0 str r5, [r1, 0x10] | *((r1 + 0x10)) = r5;
| label_7:
0x0008cea2 cmp r3, 0 |
| if (r3 <= 0) {
0x0008cea4 ble 0x8ceb8 | goto label_4;
| }
0x0008cea6 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0008ceaa add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008ceae add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0008ceb2 movs r3, 1 | r3 = 1;
0x0008ceb4 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
| label_4:
0x0008ceb8 adds r4, 1 | r4++;
0x0008ceba cmp sb, r4 |
0x0008cebc bne.w 0x8cd98 |
| } while (sb != r4);
| label_103:
0x0008cec0 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008cec2 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0008cec4 orrs r3, r2 | r3 |= r2;
0x0008cec6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008cec8 it eq |
| if (r3 != r2) {
0x0008ceca orreq r3, r3, 1 | r3 |= 1;
| }
0x0008cece cmp r3, 0 |
| if (r3 != 0) {
0x0008ced0 bne 0x8cfba | goto label_110;
| }
| if (r2 != 0) {
0x0008ced2 cbz r2, 0x8cede |
0x0008ced4 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0008ced8 tst.w r3, 0x60 |
| if ((r3 & 0x60) != 0) {
0x0008cedc bne 0x8cfac | goto label_111;
| }
| }
| label_10:
0x0008cede mov.w fp, 1 |
0x0008cee2 b 0x8cd80 | goto label_2;
| label_106:
0x0008cee4 ldr.w r1, [r8, 0x24] | r1 = *((r8 + 0x24));
0x0008cee8 and r0, r1, 0x20 | r0 = r1 & 0x20;
0x0008ceec sxth r1, r4 | __asm ("sxth r1, r4");
0x0008ceee cmp.w fp, 0 |
| if (fp != 0) {
0x0008cef2 bne 0x8ce34 | goto label_3;
| }
0x0008cef4 ldr r5, [r6, 4] | r5 = *((r6 + 4));
0x0008cef6 cmp r5, 0 |
| if (r5 == 0) {
0x0008cef8 beq 0x8ce34 | goto label_3;
| }
0x0008cefa cmp r0, 0 |
| if (r0 == 0) {
0x0008cefc beq.w 0x8d0bc | goto label_112;
| }
0x0008cf00 mov r0, r8 | r0 = r8;
0x0008cf02 bl 0xf328 | fcn_0000f328 (r0, r1);
0x0008cf06 ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x0008cf08 adds r7, r0, r3 | r7 = r0 + r3;
0x0008cf0a adds r7, 1 | r7++;
| label_20:
0x0008cf0c ldrd r5, r3, [sl, 0x6c] | __asm ("ldrd r5, r3, [sl, 0x6c]");
0x0008cf10 cmp r5, r3 |
| if (r5 >= r3) {
0x0008cf12 bge.w 0x8d0aa | goto label_113;
| }
0x0008cf16 ldr.w r1, [sl, 0x68] | r1 = *((sl + 0x68));
0x0008cf1a add.w r3, r5, r5, lsl 2 | r3 = r5 + (r5 << 2);
0x0008cf1e adds r0, r5, 1 | r0 = r5 + 1;
0x0008cf20 str.w r0, [sl, 0x6c] | __asm ("str.w r0, [sl, 0x6c]");
0x0008cf24 movs r2, 0 | r2 = 0;
0x0008cf26 movs r0, 0x33 | r0 = 0x33;
0x0008cf28 add.w ip, r1, r3, lsl 2 |
0x0008cf2c strd r7, r2, [ip, 4] | __asm ("strd r7, r2, [ip, 4]");
0x0008cf30 strd r2, r2, [ip, 0xc] | __asm ("strd r2, r2, [ip, 0xc]");
0x0008cf34 str.w r0, [r1, r3, lsl 2] | __asm ("str.w r0, [r1, r3, lsl 2]");
| label_19:
0x0008cf38 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008cf3a mov r2, r7 | r2 = r7;
0x0008cf3c ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0008cf3e ldr r0, [sp, 0x40] | r0 = var_40h;
0x0008cf40 adds r3, 1 | r3++;
0x0008cf42 str r3, [sp, 0x38] | var_38h = r3;
0x0008cf44 bl 0x66da8 | fcn_00066da8 (r0, r1, r2);
0x0008cf48 ldr.w r3, [sl] | r3 = *(sl);
0x0008cf4c cmp r5, 0 |
0x0008cf4e ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008cf52 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008cf56 it lt |
| if (r5 >= 0) {
0x0008cf58 addlt r5, r2, -1 | r5 = r2 + -1;
| }
| if (r3 != 0) {
0x0008cf5c cbnz r3, 0x8cfa0 | goto label_114;
| }
0x0008cf5e ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008cf62 add.w r5, r5, r5, lsl 2 | r5 += (r5 << 2);
0x0008cf66 add.w r3, r3, r5, lsl 2 | r3 += (r5 << 2);
| label_8:
0x0008cf6a str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0008cf6c b 0x8ceb8 | goto label_4;
| label_107:
0x0008cf6e movs r3, 0 | r3 = 0;
0x0008cf70 mov r2, r7 | r2 = r7;
0x0008cf72 str r3, [sp] | *(sp) = r3;
0x0008cf74 movs r1, 0x32 | r1 = 0x32;
0x0008cf76 ldr r3, [sp, 0x124] | r3 = *(arg_124h);
0x0008cf78 mov r0, sl | r0 = sl;
0x0008cf7a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008cf7e b 0x8ceb8 | goto label_4;
| label_104:
0x0008cf80 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008cf82 adds r3, 1 | r3++;
0x0008cf84 str r3, [sp, 0x24] | var_24h = r3;
0x0008cf86 b 0x8ceb8 | goto label_4;
| label_105:
0x0008cf88 cmp r5, 0xb |
| if (r5 != 0xb) {
0x0008cf8a bne.w 0x8cdee | goto label_5;
| }
0x0008cf8e movs r5, 2 | r5 = 2;
0x0008cf90 b 0x8cdf2 | goto label_6;
| if (r5 != 0) {
| label_109:
0x0008cf92 cbz r5, 0x8cf9a |
0x0008cf94 mov r1, r5 | r1 = r5;
0x0008cf96 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0008cf9a ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008cf9e b 0x8cea2 | goto label_7;
| label_114:
0x0008cfa0 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008cfa2 b 0x8cf6a | goto label_8;
| label_108:
0x0008cfa4 ldr r1, [sp, 0x114] | r1 = *(arg_114h);
0x0008cfa6 adds r7, r1, r4 | r7 = r1 + r4;
0x0008cfa8 adds r7, 1 | r7++;
0x0008cfaa b 0x8ce4e | goto label_9;
| label_111:
0x0008cfac ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x0008cfae mov r2, r8 | r2 = r8;
0x0008cfb0 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0008cfb2 adds r1, r3, 1 | r1 = r3 + 1;
0x0008cfb4 bl 0x67188 | fcn_00067188 (r0, r1, r2, r3, r4);
0x0008cfb8 b 0x8cede | goto label_10;
| label_110:
0x0008cfba ldr.w fp, [sp, 0x40] | fp = var_40h;
0x0008cfbe b 0x8cb54 | goto label_1;
| label_85:
0x0008cfc0 movs r3, 0 | r3 = 0;
0x0008cfc2 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008cfc4 str r3, [sp, 0x24] | var_24h = r3;
0x0008cfc6 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x0008cfca str r3, [sp, 0x28] | var_28h = r3;
0x0008cfcc cmp r2, 0 |
| if (r2 != 0) {
0x0008cfce bne.w 0x8cc80 | goto label_11;
| }
| label_93:
0x0008cfd2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008cfd4 str r3, [sp, 0x5c] | var_5ch = r3;
0x0008cfd6 str r3, [sp, 0x40] | var_40h = r3;
| do {
| label_56:
0x0008cfd8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008cfda ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x0008cfdc movs r3, 0 | r3 = 0;
0x0008cfde tst.w r2, 0x6000 |
| if ((r2 & 0x6000) == 0) {
0x0008cfe2 beq 0x8d0d4 | goto label_53;
| }
0x0008cfe4 and r2, r2, 0x2000 | r2 &= 0x2000;
0x0008cfe8 cmp r2, 0 |
| if (r2 == 0) {
0x0008cfea beq 0x8d0c4 | goto label_115;
| }
0x0008cfec movs r2, 0x7f | r2 = 0x7f;
0x0008cfee mov r1, r8 | r1 = r8;
0x0008cff0 mov r0, fp | r0 = fp;
0x0008cff2 str r3, [sp] | *(sp) = r3;
0x0008cff4 bl 0x26008 | fcn_00026008 (r0, r1, r2, r3);
0x0008cff8 str r0, [sp, 0x90] | var_90h = r0;
0x0008cffa cmp r0, 0 |
| if (r0 == 0) {
0x0008cffc beq.w 0x8d996 | goto label_116;
| }
| label_54:
0x0008d000 ldr.w r0, [fp, 0x2c] | r0 = *(arg_2ch);
0x0008d004 movs r0, r0 |
0x0008d006 lsrs r0, r0, 8 | r0 >>= 8;
0x0008d008 movs r4, r1 | r4 = r1;
0x0008d00a bx r0 | return uint32_t (*r0)() ();
0x0008d00c lsrs r0, r2, 3 | r0 = r2 >> 3;
0x0008d00e asrs r0, r0, 0x10 | r0 >>= 0x10;
0x0008d010 asrs r1, r0, 0x1e | r1 = r0 >> 0x1e;
0x0008d012 str r3, [sp] | *(sp) = r3;
0x0008d014 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d018 lsls r3, r3, 7 | r3 <<= 7;
0x0008d01a adds r0, 0x38 | r0 += 0x38;
0x0008d01c subs r3, 1 | r3--;
0x0008d01e str r3, [sp, 0x94] | var_94h = r3;
0x0008d020 str.w r3, [fp, 0x38] | __asm ("str.w r3, [arg_38h]");
0x0008d024 b 0x8d0dc | goto label_117;
| label_90:
0x0008d026 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008d028 movs r3, 0x10 | r3 = 0x10;
0x0008d02a str r0, [sp, 0x28] | var_28h = r0;
0x0008d02c mov r0, fp | r0 = fp;
0x0008d02e bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x0008d032 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0008d034 b 0x8cc12 | goto label_12;
| label_94:
0x0008d036 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008d038 ldrb r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0008d03a cmp r3, 0 |
| if (r3 != 0) {
0x0008d03c bne.w 0x8d9fe | goto label_118;
| }
0x0008d040 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008d042 movs r2, 4 | r2 = 4;
0x0008d044 str r2, [sp, 0x30] | var_30h = r2;
0x0008d046 str r3, [sp, 0x3c] | var_3ch = r3;
0x0008d048 str r3, [sp, 0x40] | var_40h = r3;
0x0008d04a b 0x8cfd8 |
| } while (1);
| label_88:
0x0008d04c str r3, [sp, 0x28] | var_28h = r3;
0x0008d04e mov r0, sl | r0 = sl;
0x0008d050 ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x0008d052 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008d054 adds r2, r3, 1 | r2 = r3 + 1;
0x0008d056 bl 0x2f4b4 | fcn_0002f4b4 (r0, r1, r2);
0x0008d05a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008d05c b 0x8cbe6 | goto label_13;
| label_87:
0x0008d05e ldr r2, [sp, 0x54] | r2 = var_54h;
0x0008d060 cmp r2, 0 |
| if (r2 != 0) {
0x0008d062 bne.w 0x8cc58 | goto label_14;
| }
0x0008d066 ldr r2, [sp, 0x54] | r2 = var_54h;
0x0008d068 b 0x8cbd4 | goto label_15;
| label_89:
0x0008d06a ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008d06c ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0008d070 cmp r2, 0 |
| if (r2 != 0) {
0x0008d072 bne.w 0x8cc1a | goto label_16;
| }
0x0008d076 mov r1, r3 | r1 = r3;
0x0008d078 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008d07a movs r3, 0x10 | r3 = 0x10;
0x0008d07c mov r0, fp | r0 = fp;
0x0008d07e bl 0x63460 | fcn_00063460 (r0, r1, r2, r3, r4, r5);
0x0008d082 cmp r6, 4 |
| if (r6 != 4) {
0x0008d084 bne.w 0x8cc20 | goto label_17;
| }
| label_91:
0x0008d088 mov r0, sl | r0 = sl;
0x0008d08a ldr r1, [sp, 0x124] | r1 = *(arg_124h);
0x0008d08c bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0008d090 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008d094 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0008d098 cmn r2, r3 |
| if (r2 >= r3) {
0x0008d09a bpl.w 0x8cc4a | goto label_18;
| }
| label_92:
0x0008d09e rsbs r2, r4, 0 | r2 = r4 - ;
0x0008d0a0 mov r1, sl | r1 = sl;
0x0008d0a2 movs r4, 1 | r4 = 1;
0x0008d0a4 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0008d0a8 b 0x8cc58 | goto label_14;
| label_113:
0x0008d0aa movs r3, 0 | r3 = 0;
0x0008d0ac mov r2, r7 | r2 = r7;
0x0008d0ae movs r1, 0x33 | r1 = 0x33;
0x0008d0b0 mov r0, sl | r0 = sl;
0x0008d0b2 str r3, [sp] | *(sp) = r3;
0x0008d0b4 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008d0b8 mov r5, r0 | r5 = r0;
0x0008d0ba b 0x8cf38 | goto label_19;
| label_112:
0x0008d0bc ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x0008d0be adds r7, r3, r4 | r7 = r3 + r4;
0x0008d0c0 adds r7, 1 | r7++;
0x0008d0c2 b 0x8cf0c | goto label_20;
| label_115:
0x0008d0c4 ldr.w r3, [fp] | r3 = *(fp);
0x0008d0c8 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008d0ca and r3, r3, 0x4000 | r3 &= 0x4000;
0x0008d0ce orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x0008d0d0 bne.w 0x8d9a4 | goto label_119;
| }
| label_53:
0x0008d0d4 movs r3, 0 | r3 = 0;
0x0008d0d6 strd r3, r3, [sp, 0x90] | __asm ("strd r3, r3, [var_94h]");
0x0008d0da str r3, [sp, 0x80] | var_80h = r3;
| label_117:
0x0008d0dc ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008d0de ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008d0e0 subs r3, 0 |
0x0008d0e2 it ne |
| if (r3 == 0) {
0x0008d0e4 movne r3, 1 | r3 = 1;
| }
0x0008d0e6 cmp r2, 0 |
0x0008d0e8 it ne |
| if (r2 == 0) {
0x0008d0ea movne r3, 0 | r3 = 0;
| }
0x0008d0ec cmp r3, 0 |
| if (r3 == 0) {
0x0008d0ee beq 0x8d1a4 | goto label_120;
| }
0x0008d0f0 ldr r7, [sp, 0x30] | r7 = var_30h;
0x0008d0f2 ldr.w r6, [fp, 0x38] | r6 = *(arg_38h);
0x0008d0f6 cmp r7, 0xb |
0x0008d0f8 add.w r4, r6, -1 | r4 = r6 + -1;
0x0008d0fc str.w r4, [fp, 0x38] | __asm ("str.w r4, [arg_38h]");
0x0008d100 ldrb.w r3, [r8, 0x32] | r3 = *((r8 + 0x32));
| if (r7 == 0xb) {
0x0008d104 beq.w 0x8dab0 | goto label_121;
| }
| label_59:
0x0008d108 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008d10a cmp r3, 0 |
| if (r3 == 0) {
0x0008d10c beq.w 0x8dbd6 | goto label_122;
| }
| label_60:
0x0008d110 ldr r5, [sp, 0x3c] | r5 = var_3ch;
| do {
0x0008d112 ldr r3, [r5] | r3 = *(r5);
0x0008d114 cmp r3, 0 |
| if (r3 == 0) {
0x0008d116 beq.w 0x8d900 | goto label_123;
| }
0x0008d11a ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0008d11c cmp r3, 0 |
| if (r3 == 0) {
0x0008d11e beq.w 0x8d900 | goto label_123;
| }
0x0008d122 ldr r5, [r5, 0x10] | r5 = *((r5 + 0x10));
0x0008d124 cmp r5, 0 |
0x0008d126 bne 0x8d112 |
| } while (r5 != 0);
| label_48:
0x0008d128 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008d12c mov r2, r3 | r2 = r3;
0x0008d12e str r3, [sp, 0x78] | var_78h = r3;
0x0008d130 ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x0008d134 cmp r2, r3 |
| if (r2 >= r3) {
0x0008d136 bge.w 0x8de9a | goto label_124;
| }
0x0008d13a ldr r0, [sp, 0x78] | r0 = var_78h;
0x0008d13c movs r2, 0 | r2 = 0;
0x0008d13e ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008d142 add.w r1, r0, r0, lsl 2 | r1 = r0 + (r0 << 2);
0x0008d146 adds r0, 1 | r0++;
0x0008d148 str.w r0, [sl, 0x6c] | __asm ("str.w r0, [sl, 0x6c]");
0x0008d14c movs r0, 0xb | r0 = 0xb;
0x0008d14e lsls r1, r1, 2 | r1 <<= 2;
0x0008d150 str r0, [r3, r1] | *((r3 + r1)) = r0;
0x0008d152 add r3, r1 | r3 += r1;
0x0008d154 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x0008d158 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_65:
0x0008d15c cmp r7, 5 |
| if (r7 != 5) {
0x0008d15e bne.w 0x8da68 | goto label_125;
| }
0x0008d162 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008d164 cmp r3, 5 |
| if (r3 == 5) {
0x0008d166 beq.w 0x8db2c | goto label_126;
| }
0x0008d16a ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x0008d16e cmp r3, 0 |
| if (r3 == 0) {
0x0008d170 beq.w 0x8de56 | goto label_127;
| }
0x0008d174 ldrd r3, r2, [sl, 0x6c] | __asm ("ldrd r3, r2, [sl, 0x6c]");
0x0008d178 cmp r3, r2 |
| if (r3 >= r2) {
0x0008d17a bge.w 0x8de42 | goto label_128;
| }
0x0008d17e add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0008d182 adds r3, 1 | r3++;
0x0008d184 str.w r3, [sl, 0x6c] | __asm ("str.w r3, [sl, 0x6c]");
0x0008d188 movs r0, 0xb | r0 = 0xb;
0x0008d18a str r3, [sp, 0x74] | var_74h = r3;
0x0008d18c lsls r1, r1, 2 | r1 <<= 2;
0x0008d18e ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008d192 movs r2, 0 | r2 = 0;
0x0008d194 str r0, [r3, r1] | *((r3 + r1)) = r0;
0x0008d196 add r3, r1 | r3 += r1;
0x0008d198 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x0008d19c strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
0x0008d1a0 b.w 0x8db30 | goto label_71;
| label_120:
0x0008d1a4 mov r5, r3 | r5 = r3;
0x0008d1a6 str r3, [sp, 0x88] | var_88h = r3;
0x0008d1a8 str r3, [sp, 0xa8] | var_a8h = r3;
0x0008d1aa strd r3, r3, [sp, 0x74] | __asm ("strd r3, r3, [var_74h]");
0x0008d1ae str r3, [sp, 0x68] | var_68h = r3;
0x0008d1b0 str r3, [sp, 0x84] | var_84h = r3;
| label_62:
0x0008d1b2 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008d1b4 cmp r3, 0 |
| if (r3 == 0) {
0x0008d1b6 beq.w 0x8d8ba | goto label_129;
| }
0x0008d1ba ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008d1bc ldr.w sb, [r3] | sb = *(r3);
0x0008d1c0 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0008d1c2 str r2, [sp, 0x20] | var_20h = r2;
| label_44:
0x0008d1c4 cmp.w sb, 0 |
| if (sb == 0) {
0x0008d1c8 beq.w 0x8deae | goto label_130;
| }
0x0008d1cc ldr.w r3, [pc, 0x46c] | r3 = *(0x0008d63c);
0x0008d1d0 mov r4, sb | r4 = sb;
0x0008d1d2 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0008d1d4 mov sb, fp | sb = fp;
0x0008d1d6 add r3, pc | r3 += pc;
0x0008d1d8 adds r3, 4 | r3 += 4;
0x0008d1da str r3, [sp, 0xb0] | var_b0h = r3;
0x0008d1dc ldr.w r3, [pc, 0x460] |
0x0008d1e0 add r3, pc | r3 = 0x11a824;
0x0008d1e2 adds r3, 4 | r3 += 4;
0x0008d1e4 str r3, [sp, 0xb4] | var_b4h = r3;
0x0008d1e6 ldrsh.w r3, [sp, 0x64] | r3 = var_64h;
0x0008d1ea str r3, [sp, 0xac] | var_ach = r3;
0x0008d1ec ldr r3, [sp, 0x94] | r3 = var_94h;
0x0008d1ee str r3, [sp, 0xa4] | var_a4h = r3;
0x0008d1f0 movs r3, 0 | r3 = 0;
0x0008d1f2 str r3, [sp, 0x38] | var_38h = r3;
| do {
| label_23:
0x0008d1f4 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0008d1f6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008d1f8 ldr.w r3, [r3, r1, lsl 2] | offset_2 = r1 << 2;
| r3 = *((r3 + offset_2));
0x0008d1fc lsls r1, r1, 2 | r1 <<= 2;
0x0008d1fe str r1, [sp, 0x24] | var_24h = r1;
0x0008d200 cmp r3, 0 |
| if (r3 != 0) {
0x0008d202 bne 0x8d2ee | goto label_131;
| }
| label_40:
0x0008d204 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008d206 cmp r3, 0 |
| if (r3 == 0) {
0x0008d208 beq.w 0x8d4c4 | goto label_132;
| }
| label_22:
0x0008d20c ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008d20e ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008d210 adds r1, 1 | r1++;
0x0008d212 cmp r3, r1 |
0x0008d214 str r1, [sp, 0x38] | var_38h = r1;
| if (r3 <= r1) {
0x0008d216 ble.w 0x8d59a | goto label_133;
| }
0x0008d21a ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x0008d21c ldr.w r4, [r0, r1, lsl 3] | offset_3 = r1 << 3;
| r4 = *((r0 + offset_3));
0x0008d220 add.w r3, r0, r1, lsl 3 | r3 = r0 + (r1 << 3);
0x0008d224 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0008d226 str r3, [sp, 0x20] | var_20h = r3;
0x0008d228 cmp r4, 0 |
0x0008d22a bne 0x8d1f4 |
| } while (r4 != 0);
| label_24:
0x0008d22c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0008d22e mov fp, sb |
0x0008d230 str r2, [sp, 0x24] | var_24h = r2;
0x0008d232 str r3, [sp, 0x38] | var_38h = r3;
0x0008d234 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008d236 cmp r3, 0 |
| if (r3 == 0) {
0x0008d238 beq.w 0x8d5a6 | goto label_134;
| }
| label_32:
0x0008d23c mov r1, r3 | r1 = r3;
0x0008d23e mov r0, sl | r0 = sl;
0x0008d240 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0008d244 ldr r3, [sp, 0xa8] | r3 = var_a8h;
0x0008d246 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0008d24a cmp r3, 0 |
0x0008d24c itt lt |
| if (r3 >= 0) {
0x0008d24e addlt r3, r1, -1 | r3 = r1 + -1;
| }
| if (r3 < 0) {
0x0008d252 str r3, [sp, 0xa8] | var_a8h = r3;
| }
0x0008d254 ldr.w r3, [sl] | r3 = *(sl);
0x0008d258 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008d25c cmp r3, 0 |
| if (r3 != 0) {
0x0008d25e bne.w 0x8d968 | goto label_135;
| }
0x0008d262 ldr r3, [sp, 0xa8] | r3 = var_a8h;
0x0008d264 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0008d268 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008d26c add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_51:
0x0008d270 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x0008d272 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0008d274 cmp r3, 0 |
| if (r3 == 0) {
0x0008d276 beq.w 0x8d5ae | goto label_66;
| }
| label_33:
0x0008d27a movs r3, 0 | r3 = 0;
0x0008d27c ldr r2, [sp, 0x80] | r2 = var_80h;
0x0008d27e str r3, [sp] | *(sp) = r3;
0x0008d280 movs r1, 0x14 | r1 = 0x14;
0x0008d282 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0008d284 mov r0, sl | r0 = sl;
0x0008d286 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d28a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008d28c cmp r3, 0 |
| if (r3 == 0) {
0x0008d28e beq.w 0x8d972 | goto label_136;
| }
0x0008d292 ldr r1, [sp, 0x94] | r1 = var_94h;
0x0008d294 mov r0, sl | r0 = sl;
0x0008d296 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
| label_52:
0x0008d29a ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0008d29c ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008d2a0 mvns r2, r3 | r2 = ~r3;
0x0008d2a2 ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x0008d2a6 cmn r1, r3 |
| if (r1 < r3) {
0x0008d2a8 bmi.w 0x8dd9e | goto label_137;
| }
0x0008d2ac ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0008d2ae ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0008d2b2 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
0x0008d2b6 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0008d2ba lsls r4, r3, 0x18 | r4 = r3 << 0x18;
| if (r4 < r3) {
0x0008d2bc bmi.w 0x8d5b8 | goto label_138;
| }
| label_34:
0x0008d2c0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0008d2c2 movs r1, 0x5d | r1 = 0x5d;
0x0008d2c4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008d2c6 mov r0, sl | r0 = sl;
0x0008d2c8 ldr.w r3, [r3, r2, lsl 2] | offset_4 = r2 << 2;
| r3 = *((r3 + offset_4));
0x0008d2cc str r3, [sp] | *(sp) = r3;
0x0008d2ce ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x0008d2d0 adds r2, r3, 1 | r2 = r3 + 1;
0x0008d2d2 ldrsh.w r3, [r8, 0x2c] | r3 = *((r8 + 0x2c));
0x0008d2d6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d2da ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008d2dc cmp r3, 0 |
| if (r3 != 0) {
0x0008d2de bne.w 0x8d5b8 | goto label_138;
| }
0x0008d2e2 mov r2, r3 | r2 = r3;
0x0008d2e4 mov r1, r8 | r1 = r8;
0x0008d2e6 mov r0, sl | r0 = sl;
0x0008d2e8 bl 0x2f4b4 | fcn_0002f4b4 (r0, r1, r2);
0x0008d2ec b 0x8d5b8 | goto label_138;
| label_131:
0x0008d2ee ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008d2f0 cmp r3, 0 |
| if (r3 != 0) {
0x0008d2f2 bne.w 0x8d53e | goto label_139;
| }
| label_30:
0x0008d2f6 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008d2fa str r3, [sp, 0x48] | var_48h = r3;
0x0008d2fc subs r3, 1 | r3--;
0x0008d2fe str r3, [sp, 0x50] | var_50h = r3;
0x0008d300 str.w r3, [sb, 0x38] | __asm ("str.w r3, [sb, 0x38]");
0x0008d304 cmp r2, 0 |
| if (r2 == 0) {
0x0008d306 beq.w 0x8d5da | goto label_140;
| }
| label_35:
0x0008d30a ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
| if (r3 != 0) {
0x0008d30c cbz r3, 0x8d338 |
0x0008d30e ldr r2, [sp, 0x24] | r2 = var_24h;
0x0008d310 movs r6, 0 | r6 = 0;
0x0008d312 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008d314 movs r1, 0x48 | r1 = 0x48;
0x0008d316 str r6, [sp] | *(sp) = r6;
0x0008d318 mov r0, sl | r0 = sl;
0x0008d31a ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x0008d31c mov r2, r6 | r2 = r6;
0x0008d31e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d322 ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x0008d324 mov r0, sb | r0 = sb;
0x0008d326 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x0008d328 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0008d32a mvns r3, r3 | r3 = ~r3;
0x0008d32c str.w r3, [sb, 0x34] | __asm ("str.w r3, [sb, 0x34]");
0x0008d330 bl 0x6af70 | fcn_0006af70 (r0, r1, r2);
0x0008d334 str.w r6, [sb, 0x34] | __asm ("str.w r6, [sb, 0x34]");
| }
0x0008d338 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0008d33a ldr r1, [sp, 0x24] | r1 = var_24h;
0x0008d33c ldrh r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0008d33e ldr r2, [r2, r1] | r2 = *((r2 + r1));
0x0008d340 add.w fp, r2, 1 |
0x0008d344 str r2, [sp, 0x70] | var_70h = r2;
0x0008d346 cmp r3, 0 |
| if (r3 == 0) {
0x0008d348 beq.w 0x8d8c4 | goto label_141;
| }
0x0008d34c movs r6, 0 | r6 = 0;
0x0008d34e str r5, [sp, 0x60] | var_60h = r5;
0x0008d350 mov r7, r6 | r7 = r6;
0x0008d352 ldr r5, [sp, 0x114] | r5 = *(arg_114h);
0x0008d354 b 0x8d38c |
| while (r2 != r1) {
0x0008d356 ldr.w r2, [r8, 0x24] | r2 = *((r8 + 0x24));
0x0008d35a ubfx r0, r1, 0xf, 1 | r0 = (r1 >> 0xf) & ((1 << 1) - 1);
0x0008d35e eor r2, r2, 0x20 | r2 ^= 0x20;
0x0008d362 ubfx r2, r2, 5, 1 | r2 = (r2 >> 5) & ((1 << 1) - 1);
0x0008d366 orrs r0, r2 | r0 |= r2;
| if (r0 == r2) {
0x0008d368 bne 0x8d376 |
0x0008d36a mov r0, r8 | r0 = r8;
0x0008d36c str r3, [sp, 0x4c] | var_4ch = r3;
0x0008d36e bl 0xf328 | fcn_0000f328 (r0, r1);
0x0008d372 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008d374 mov r1, r0 | r1 = r0;
| }
0x0008d376 adds r2, r5, r1 | r2 = r5 + r1;
0x0008d378 mov r0, sl | r0 = sl;
0x0008d37a adds r2, 1 | r2++;
0x0008d37c movs r1, 0x4e | r1 = 0x4e;
0x0008d37e str r7, [sp] | *(sp) = r7;
0x0008d380 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_25:
0x0008d384 ldrh r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0008d386 adds r6, 1 | r6++;
0x0008d388 cmp r3, r6 |
| if (r3 <= r6) {
0x0008d38a ble 0x8d3bc | goto label_142;
| }
| label_21:
0x0008d38c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0008d38e ldrsh.w r1, [r3, r6, lsl 1] | offset_5 = r6 << 1;
| r1 = *((r3 + offset_5));
0x0008d392 add.w r3, fp, r6 | r3 = fp + r6;
0x0008d396 adds r2, r1, 2 | r2 = r1 + 2;
| if (r2 == r1) {
0x0008d398 beq.w 0x8d4d8 | goto label_143;
| }
0x0008d39c adds r0, r1, 1 | r0 = r1 + 1;
| if (r0 == r1) {
0x0008d39e beq 0x8d3a8 | goto label_144;
| }
0x0008d3a0 ldrsh.w r2, [r8, 0x28] | r2 = *((r8 + 0x28));
0x0008d3a4 cmp r2, r1 |
0x0008d3a6 bne 0x8d356 |
| }
| label_144:
0x0008d3a8 mov r2, r5 | r2 = r5;
0x0008d3aa movs r1, 0x4f | r1 = 0x4f;
0x0008d3ac mov r0, sl | r0 = sl;
0x0008d3ae str r7, [sp] | *(sp) = r7;
0x0008d3b0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d3b4 ldrh r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0008d3b6 adds r6, 1 | r6++;
0x0008d3b8 cmp r3, r6 |
| if (r3 > r6) {
0x0008d3ba bgt 0x8d38c | goto label_21;
| }
| label_142:
0x0008d3bc ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0008d3be ldr r1, [sp, 0x24] | r1 = var_24h;
0x0008d3c0 ldr r5, [sp, 0x60] | r5 = var_60h;
0x0008d3c2 ldr r2, [r2, r1] | r2 = *((r2 + r1));
| label_45:
0x0008d3c4 str r2, [sp] | *(sp) = r2;
0x0008d3c6 movs r1, 0x5d | r1 = 0x5d;
0x0008d3c8 mov r2, fp | r2 = fp;
0x0008d3ca mov r0, sl | r0 = sl;
0x0008d3cc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d3d0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008d3d2 ldrd r2, r7, [sp, 0x54] | __asm ("ldrd r2, r7, [var_54h]");
0x0008d3d6 subs r3, r3, r4 | r3 -= r4;
0x0008d3d8 clz r3, r3 | r3 &= r3;
0x0008d3dc cmp r2, 0 |
0x0008d3de ite ne |
| if (r2 == 0) {
0x0008d3e0 movne r7, 0 | r7 = 0;
| }
| if (r2 != 0) {
0x0008d3e2 andeq r7, r7, 1 | r7 &= 1;
| }
0x0008d3e6 lsrs r3, r3, 5 | r3 >>= 5;
0x0008d3e8 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0008d3ea ands r7, r3 | r7 &= r3;
0x0008d3ec str r3, [sp, 0x60] | var_60h = r3;
0x0008d3ee rsb.w r2, r2, 0 | r2 -= ;
0x0008d3f2 str r2, [sp, 0x6c] | var_6ch = r2;
| if (r7 != r3) {
0x0008d3f4 bne.w 0x8d7b0 | void (*0x8d7b0)() ();
| }
0x0008d3f8 ldrb.w r6, [r4, 0x36] | r6 = *((r4 + 0x36));
0x0008d3fc cmp r6, 0 |
| if (r6 == 0) {
0x0008d3fe beq.w 0x8d7b0 | void (*0x8d7b0)() ();
| }
0x0008d402 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008d404 cmp r3, 0xb |
0x0008d406 it ne |
| if (r3 == 0xb) {
0x0008d408 movne r6, r3 | r6 = r3;
| }
| if (r3 == 0xb) {
0x0008d40a beq 0x8d4f4 | goto label_145;
| }
0x0008d40c cmp r5, 0 |
| if (r5 == 0) {
0x0008d40e beq 0x8d4fe | goto label_146;
| }
| label_26:
0x0008d410 ldrb r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0008d412 cmp r3, 0 |
0x0008d414 ite eq |
| if (r3 != 0) {
0x0008d416 moveq r6, 4 | r6 = 4;
| }
| if (r3 == 0) {
0x0008d418 movne r6, 6 | r6 = 6;
| }
| label_27:
0x0008d41a ldr r2, [sp, 0x110] | r2 = *(arg_0h);
0x0008d41c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0008d41e add r2, r3 | r2 += r3;
0x0008d420 str r2, [sp, 0x4c] | var_4ch = r2;
| if (r3 == 0) {
0x0008d422 cbnz r3, 0x8d42c |
0x0008d424 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0008d426 cmp r3, 0 |
| if (r3 == 0) {
0x0008d428 beq.w 0x8d834 | goto label_147;
| }
| }
| label_42:
0x0008d42c ldrh r3, [r4, 0x32] | r3 = *((r4 + 0x32));
0x0008d42e movs r1, 0x1c | r1 = 0x1c;
0x0008d430 mov r0, sl | r0 = sl;
0x0008d432 strd fp, r3, [sp] | __asm ("strd fp, r3, [sp]");
0x0008d436 ldrd r2, r3, [sp, 0x4c] | __asm ("ldrd r2, r3, [var_50h]");
0x0008d43a bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0008d43e ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008d440 str r0, [sp, 0x8c] | var_8ch = r0;
0x0008d442 cmp r3, r4 |
0x0008d444 it eq |
| if (r3 != r4) {
0x0008d446 streq fp, [sp, 0x24] | var_24h = fp;
| }
| if (r3 != r4) {
0x0008d44a beq 0x8d456 |
0x0008d44c ldr r1, [sp, 0x64] | r1 = var_64h;
0x0008d44e mov r0, sb | r0 = sb;
0x0008d450 bl 0xf298 | fcn_0000f298 (r0, r1);
0x0008d454 str r0, [sp, 0x24] | var_24h = r0;
| }
0x0008d456 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0008d458 orrs r7, r3 | r7 |= r3;
| if (r7 != r3) {
0x0008d45a bne.w 0x8d5e8 | goto label_148;
| }
| label_37:
0x0008d45e cmp r6, 4 |
| if (r6 == 4) {
0x0008d460 beq 0x8d520 | goto label_149;
| }
| if (r6 > 4) {
0x0008d462 bgt 0x8d50a | goto label_150;
| }
0x0008d464 subs r3, r6, 1 | r3 = r6 - 1;
0x0008d466 cmp r3, 2 |
| if (r3 > 2) {
0x0008d468 bhi.w 0x8d7d0 | goto label_151;
| }
0x0008d46c mov r2, r4 | r2 = r4;
0x0008d46e mov r1, r6 | r1 = r6;
0x0008d470 mov r0, sb | r0 = sb;
0x0008d472 bl 0x2ba20 | fcn_0002ba20 (r0, r1, r2);
| label_41:
0x0008d476 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008d47a ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0008d47e cmn r2, r3 |
| if (r2 < r3) {
0x0008d480 bmi 0x8d534 | goto label_152;
| }
| label_28:
0x0008d482 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008d484 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0008d486 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0008d48a lsls r3, r3, 2 | r3 <<= 2;
0x0008d48c rsbs r3, r3, 0 | r3 -= ;
0x0008d48e str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_29:
0x0008d490 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008d492 cmp fp, r3 |
| if (fp != r3) {
0x0008d494 beq 0x8d4ae |
0x0008d496 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008d498 cmp r3, 1 |
| if (r3 == 1) {
0x0008d49a beq.w 0x8d8d2 | goto label_153;
| }
0x0008d49e ldr.w r3, [sb, 0x1c] | r3 = *((sb + 0x1c));
0x0008d4a2 ldr r2, [sp, 0x64] | r2 = var_64h;
0x0008d4a4 cmp r2, r3 |
| if (r2 <= r3) {
0x0008d4a6 ble 0x8d4ae | goto label_47;
| }
0x0008d4a8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008d4aa strd r2, r3, [sb, 0x1c] | __asm ("strd r2, r3, [sb, 0x1c]");
| }
| label_47:
0x0008d4ae ldr r3, [sp, 0x68] | r3 = var_68h;
0x0008d4b0 cmp r5, 0 |
0x0008d4b2 it ne |
| if (r5 != 0) {
0x0008d4b4 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r5 != 0) {
0x0008d4b6 bne.w 0x8d74c | goto label_154;
| }
| label_39:
0x0008d4ba ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008d4bc movs r2, 1 | r2 = 1;
0x0008d4be cmp r3, 0 |
| if (r3 != 0) {
0x0008d4c0 bne.w 0x8d20c | goto label_22;
| }
| label_132:
0x0008d4c4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008d4c6 ldr r4, [r3, 0x14] | r4 = *((r3 + 0x14));
0x0008d4c8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0008d4ca str r4, [sp, 0x28] | var_28h = r4;
0x0008d4cc adds r3, 1 | r3++;
0x0008d4ce str r3, [sp, 0x20] | var_20h = r3;
0x0008d4d0 cmp r4, 0 |
| if (r4 != 0) {
0x0008d4d2 bne.w 0x8d1f4 | goto label_23;
| }
0x0008d4d6 b 0x8d22c | goto label_24;
| label_143:
0x0008d4d8 mov r2, r3 | r2 = r3;
0x0008d4da ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0008d4dc mov r0, sb | r0 = sb;
0x0008d4de add.w r3, r3, r6, lsl 4 | r3 += (r6 << 4);
0x0008d4e2 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0008d4e4 mvns r3, r5 | r3 = ~r5;
0x0008d4e6 str.w r3, [sb, 0x34] | __asm ("str.w r3, [sb, 0x34]");
0x0008d4ea bl 0x66da8 | fcn_00066da8 (r0, r1, r2);
0x0008d4ee str.w r7, [sb, 0x34] | __asm ("str.w r7, [sb, 0x34]");
0x0008d4f2 b 0x8d384 | goto label_25;
| label_145:
0x0008d4f4 cmp r6, 0xb |
0x0008d4f6 it eq |
| if (r6 != 0xb) {
0x0008d4f8 moveq r6, 2 | r6 = 2;
| }
0x0008d4fa cmp r5, 0 |
| if (r5 != 0) {
0x0008d4fc bne 0x8d410 | goto label_26;
| }
| label_146:
0x0008d4fe sub.w r7, r6, 5 | r7 = r6 - 5;
0x0008d502 clz r7, r7 | r7 &= r7;
0x0008d506 lsrs r7, r7, 5 | r7 >>= 5;
0x0008d508 b 0x8d41a | goto label_27;
| label_150:
0x0008d50a cmp r6, 6 |
| if (r6 != 6) {
0x0008d50c bne.w 0x8d7d0 | goto label_151;
| }
0x0008d510 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008d512 mov r2, r8 | r2 = r8;
0x0008d514 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0008d516 mov r0, sb | r0 = sb;
0x0008d518 str r3, [sp] | *(sp) = r3;
0x0008d51a mov r3, r4 | r3 = r4;
0x0008d51c bl 0x8bb48 | fcn_0008bb48 (r0, r1, r2, r3, r4);
| label_149:
0x0008d520 mov r0, sl | r0 = sl;
0x0008d522 ldr r1, [sp, 0x124] | r1 = *(arg_124h);
0x0008d524 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0008d528 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008d52c ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0008d530 cmn r2, r3 |
| if (r2 >= r3) {
0x0008d532 bpl 0x8d482 | goto label_28;
| }
| label_152:
0x0008d534 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x0008d536 mov r1, sl | r1 = sl;
0x0008d538 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0008d53c b 0x8d490 | goto label_29;
| label_139:
0x0008d53e ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x0008d540 b 0x8d550 | goto label_155;
| label_31:
0x0008d542 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0008d544 cmp r3, r4 |
| if (r3 == r4) {
0x0008d546 beq 0x8d556 | goto label_156;
| }
0x0008d548 ldr r5, [r5, 0x10] | r5 = *((r5 + 0x10));
0x0008d54a cmp r5, 0 |
| if (r5 == 0) {
0x0008d54c beq.w 0x8d2f6 | goto label_30;
| }
| label_155:
0x0008d550 ldr r3, [r5] | r3 = *(r5);
0x0008d552 cmp r3, 0 |
| if (r3 != 0) {
0x0008d554 bne 0x8d542 | goto label_31;
| }
| label_156:
0x0008d556 ldr r0, [sp, 0x78] | r0 = var_78h;
0x0008d558 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0008d55a subs r3, r0, 0 | r3 = r0 - 0;
0x0008d55c it ne |
| if (r3 == r0) {
0x0008d55e movne r3, 1 | r3 = 1;
| }
0x0008d560 cmp r1, r5 |
0x0008d562 it ne |
| if (r1 == r5) {
0x0008d564 movne r3, 0 | r3 = 0;
| }
0x0008d566 cmp r3, 0 |
| if (r3 == 0) {
0x0008d568 beq.w 0x8d2f6 | goto label_30;
| }
0x0008d56c cmp r0, 0 |
0x0008d56e ldr.w r0, [sl] | r0 = *(sl);
0x0008d572 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0008d576 it ge |
| if (r0 < 0) {
0x0008d578 ldrge r3, [sp, 0x78] | r3 = var_78h;
| }
0x0008d57a ldrb.w r0, [r0, 0x53] | r0 = *((r0 + 0x53));
0x0008d57e it lt |
| if (r0 >= 0) {
0x0008d580 addlt r3, r1, -1 | r3 = r1 + -1;
| }
0x0008d584 cmp r0, 0 |
| if (r0 != 0) {
0x0008d586 bne.w 0x8d8c8 | goto label_157;
| }
0x0008d58a add.w r0, r3, r3, lsl 2 | r0 = r3 + (r3 << 2);
0x0008d58e ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008d592 add.w r3, r3, r0, lsl 2 | r3 += (r0 << 2);
| label_46:
0x0008d596 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x0008d598 b 0x8d2f6 | goto label_30;
| label_133:
0x0008d59a mov fp, sb |
0x0008d59c str r2, [sp, 0x24] | var_24h = r2;
| label_75:
0x0008d59e ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008d5a0 cmp r3, 0 |
| if (r3 != 0) {
0x0008d5a2 bne.w 0x8d23c | goto label_32;
| }
| label_134:
0x0008d5a6 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0008d5a8 cmp r3, 0 |
| if (r3 != 0) {
0x0008d5aa bne.w 0x8d27a | goto label_33;
| }
| label_66:
0x0008d5ae ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0008d5b2 lsls r4, r3, 0x18 | r4 = r3 << 0x18;
| if (r4 >= r3) {
0x0008d5b4 bpl.w 0x8d2c0 | goto label_34;
| }
| label_138:
0x0008d5b8 ldr r3, [sp, 0x98] | r3 = var_98h;
0x0008d5ba ldr r2, [sp, 0x84] | r2 = var_84h;
0x0008d5bc str r2, [r3] | *(r3) = r2;
| label_97:
0x0008d5be ldr r2, [pc, 0x84] |
0x0008d5c0 ldr r3, [pc, 0x68] | r3 = *(0x8d62c);
0x0008d5c2 add r2, pc | r2 = 0x11ac0c;
0x0008d5c4 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008d5c6 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008d5c8 ldr r3, [sp, 0xe4] | r3 = var_e4h;
0x0008d5ca eors r2, r3 | r2 ^= r3;
0x0008d5cc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0008d5d0 bne.w 0x8df14 | goto label_158;
| }
0x0008d5d4 add sp, 0xec |
0x0008d5d6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_140:
0x0008d5da ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x0008d5dc mov r1, r8 | r1 = r8;
0x0008d5de mov r0, sl | r0 = sl;
0x0008d5e0 adds r2, r3, 1 | r2 = r3 + 1;
0x0008d5e2 bl 0x2f4b4 | fcn_0002f4b4 (r0, r1, r2);
0x0008d5e6 b 0x8d30a | goto label_35;
| label_148:
0x0008d5e8 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0008d5ec lsls r7, r3, 0x18 | r7 = r3 << 0x18;
| if (r7 >= r3) {
0x0008d5ee bpl.w 0x8d874 | void (*0x8d874)() ();
| }
0x0008d5f2 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008d5f4 cmp r3, r4 |
| if (r3 == r4) {
0x0008d5f6 beq 0x8d676 | void (*0x8d676)() ();
| }
0x0008d5f8 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008d5fa ldrh r3, [r2, 0x32] | r3 = *((r2 + 0x32));
0x0008d5fc cmp r3, 0 |
| if (r3 == 0) {
0x0008d5fe beq 0x8d676 | void (*0x8d676)() ();
| }
0x0008d600 strd r6, r5, [sp, 0x9c] | __asm ("strd r6, r5, [var_9ch]");
0x0008d604 movs r7, 0 | r7 = 0;
0x0008d606 str.w sb, [sp, 0xb8] | __asm ("str.w sb, [var_b8h]");
0x0008d60a mov r5, r2 | r5 = r2;
0x0008d60c ldr r6, [sp, 0x24] | r6 = var_24h;
0x0008d60e ldr.w sb, [sp, 0x4c] | sb = var_4ch;
| label_36:
0x0008d612 ldrh r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x0008d614 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0008d616 ldrsh.w ip, [r3, r7, lsl 1] | offset_6 = r7 << 1;
| ip = *((r3 + offset_6));
0x0008d61a cmp r0, 0 |
| if (r0 == 0) {
0x0008d61c beq.w 0x8d746 | goto label_159;
| }
0x0008d620 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0008d622 movs r3, 0 | r3 = 0;
0x0008d624 subs r2, 2 | r2 -= 2;
0x0008d626 b 0x8d64e |
| while (r1 != ip) {
0x0008d648 adds r3, 1 | r3++;
0x0008d64a cmp r3, r0 |
| if (r3 == r0) {
0x0008d64c beq 0x8d746 | goto label_159;
| }
0x0008d64e ldrsh r1, [r2, 2]! | r1 = *((r2 += 2));
0x0008d652 cmp r1, ip |
0x0008d654 bne 0x8d648 |
| }
0x0008d656 sxth r3, r3 | __asm ("sxth r3, r3");
| label_38:
0x0008d658 adds r2, r6, r7 | r2 = r6 + r7;
0x0008d65a str r2, [sp] | *(sp) = r2;
0x0008d65c movs r1, 0x5b | r1 = 0x5b;
0x0008d65e mov r2, sb | r2 = sb;
0x0008d660 mov r0, sl | r0 = sl;
0x0008d662 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d666 ldrh r3, [r5, 0x32] | r3 = *((r5 + 0x32));
0x0008d668 adds r7, 1 | r7++;
0x0008d66a cmp r3, r7 |
| if (r3 > r7) {
0x0008d66c bgt 0x8d612 | goto label_36;
| }
0x0008d66e ldrd r6, r5, [sp, 0x9c] | __asm ("ldrd r6, r5, [var_9ch]");
0x0008d672 ldr.w sb, [sp, 0xb8] | sb = var_b8h;
0x0008d67e ldr r1, [sp, 0x44] | r1 = var_44h;
0x0008d680 ldrb.w r3, [r4, 0x37] | r3 = *((r4 + 0x37));
0x0008d684 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0008d686 ldrh r2, [r1, 0x32] | r2 = *((r1 + 0x32));
0x0008d688 and r3, r3, 3 | r3 &= 3;
0x0008d68c cmp r3, 2 |
0x0008d68e it eq |
| if (r3 != 2) {
0x0008d690 moveq r0, fp | r0 = fp;
| }
0x0008d692 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008d696 str r0, [sp, 0xa0] | var_a0h = r0;
0x0008d698 adds r3, r2, r3 | r3 = r2 + r3;
0x0008d69a cmp r2, 0 |
| if (r2 == 0) {
0x0008d69c beq.w 0x8d45e | goto label_37;
| }
0x0008d6a0 ldr r2, [sp, 0x118] | r2 = *(arg_8h);
0x0008d6a2 movs r7, 0 | r7 = 0;
0x0008d6a4 str.w fp, [sp, 0xc4] | __asm ("str.w fp, [var_c4h]");
0x0008d6a8 ldr.w fp, [sp, 0x50] | fp = var_50h;
0x0008d6ac adds r2, 1 | r2++;
0x0008d6ae str r6, [sp, 0xb8] | var_b8h = r6;
0x0008d6b0 str r2, [sp, 0x9c] | var_9ch = r2;
0x0008d6b2 movs r2, 0x34 | r2 = 0x34;
0x0008d6b4 str r5, [sp, 0xbc] | var_bch = r5;
0x0008d6b6 mov r6, r3 | r6 = r3;
0x0008d6b8 str r4, [sp, 0xc0] | var_c0h = r4;
0x0008d6ba mov r5, r2 | r5 = r2;
0x0008d6bc mov r4, r1 | r4 = r1;
| do {
0x0008d6be ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0008d6c0 mov r0, sb | r0 = sb;
0x0008d6c2 ldr.w r1, [r3, r7, lsl 2] | offset_7 = r7 << 2;
| r1 = *((r3 + offset_7));
0x0008d6c6 bl 0x2d348 | fcn_0002d348 (r0, r1);
0x0008d6ca ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0008d6cc mov r2, r0 | r2 = r0;
0x0008d6ce ldrsh.w r1, [r3, r7, lsl 1] | offset_8 = r7 << 1;
| r1 = *((r3 + offset_8));
0x0008d6d2 ldrh r3, [r4, 0x32] | r3 = *((r4 + 0x32));
0x0008d6d4 subs r3, 1 | r3--;
0x0008d6d6 cmp r3, r7 |
0x0008d6d8 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0008d6dc itt eq |
| if (r3 != r7) {
0x0008d6de moveq r6, fp | r6 = fp;
| }
| if (r3 != r7) {
0x0008d6e0 moveq r5, 0x35 | r5 = 0x35;
| }
0x0008d6e2 eor r3, r3, 0x20 | r3 ^= 0x20;
0x0008d6e6 ubfx r3, r3, 5, 1 | r3 = (r3 >> 5) & ((1 << 1) - 1);
0x0008d6ea orrs.w r3, r3, r1, lsr 31 | r3 |= (r1 >> 31);
| if (r3 == r3) {
0x0008d6ee bne 0x8d6fc |
0x0008d6f0 str r0, [sp, 0x50] | var_50h = r0;
0x0008d6f2 mov r0, r8 | r0 = r8;
0x0008d6f4 bl 0xf328 | fcn_0000f328 (r0, r1);
0x0008d6f8 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0008d6fa mov r1, r0 | r1 = r0;
| }
0x0008d6fc ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0008d6fe mov r0, sl | r0 = sl;
0x0008d700 str r2, [sp, 4] | var_4h = r2;
0x0008d702 adds r2, r1, r3 | r2 = r1 + r3;
0x0008d704 mvn r3, 1 | r3 = ~1;
0x0008d708 str r3, [sp, 8] | var_8h = r3;
0x0008d70a mov r1, r5 | r1 = r5;
0x0008d70c ldr r3, [sp, 0xa0] | r3 = var_a0h;
0x0008d70e add r3, r7 | r3 += r7;
0x0008d710 str r3, [sp] | *(sp) = r3;
0x0008d712 mov r3, r6 | r3 = r6;
0x0008d714 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0008d718 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008d71c cmp r3, 0 |
| if (r3 > 0) {
0x0008d71e ble 0x8d734 |
0x0008d720 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0008d724 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008d728 add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0008d72c mov.w r3, 0x90 | r3 = 0x90;
0x0008d730 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
0x0008d734 ldrh r3, [r4, 0x32] | r3 = *((r4 + 0x32));
0x0008d736 adds r7, 1 | r7++;
0x0008d738 cmp r3, r7 |
0x0008d73a bgt 0x8d6be |
| } while (r3 > r7);
0x0008d73c ldrd r6, r5, [sp, 0xb8] | __asm ("ldrd r6, r5, [var_b8h]");
0x0008d740 ldrd r4, fp, [sp, 0xc0] | __asm ("ldrd r4, fp, [var_c0h]");
0x0008d744 b 0x8d45e | goto label_37;
| label_159:
0x0008d746 mov.w r3, -1 | r3 = -1;
0x0008d74a b 0x8d658 | goto label_38;
| label_154:
0x0008d74c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
| if (r3 == 0) {
0x0008d74e cbz r3, 0x8d75c | goto label_160;
| }
0x0008d750 ldr r2, [r3] | r2 = *(r3);
| if (r2 == 0) {
0x0008d752 cbz r2, 0x8d75c | goto label_160;
| }
0x0008d754 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0008d756 cmp r3, 0 |
| if (r3 != 0) {
0x0008d758 bne.w 0x8d4ba | goto label_39;
| }
| label_160:
0x0008d75c ldr r3, [sp, 0x78] | r3 = var_78h;
0x0008d75e mov r0, sl | r0 = sl;
0x0008d760 adds r1, r3, 1 | r1 = r3 + 1;
0x0008d762 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0008d766 ldr r3, [sp, 0x68] | r3 = var_68h;
0x0008d768 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008d76c cmp r3, 0 |
0x0008d76e itt lt |
| if (r3 >= 0) {
0x0008d770 addlt r3, r2, -1 | r3 = r2 + -1;
| }
| if (r3 < 0) {
0x0008d774 str r3, [sp, 0x68] | var_68h = r3;
| }
0x0008d776 ldr.w r3, [sl] | r3 = *(sl);
0x0008d77a ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008d77e cmp r3, 0 |
| if (r3 != 0) {
0x0008d780 bne.w 0x8d956 | goto label_161;
| }
0x0008d784 ldr r3, [sp, 0x68] | r3 = var_68h;
0x0008d786 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0008d78a ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008d78e add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
| label_49:
0x0008d792 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0008d794 movs r3, 0 | r3 = 0;
0x0008d796 movs r2, 1 | r2 = 1;
0x0008d798 str r3, [sp, 0x68] | var_68h = r3;
0x0008d79a b 0x8d204 | goto label_40;
| label_43:
0x0008d79c ldr.w r0, [r8, 0x48] | r0 = *((r8 + 0x48));
0x0008d79e lsls r0, r1, 1 | r0 = r1 << 1;
| label_151:
0x0008d7d0 ldr r3, [sp, 0x80] | r3 = var_80h;
0x0008d7d2 ldr.w r7, [sl, 0x6c] | r7 = *((sl + 0x6c));
| if (r3 != 0) {
0x0008d7d6 cbz r3, 0x8d7ec |
0x0008d7d8 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0008d7da movs r2, 1 | r2 = 1;
0x0008d7dc adds r3, 1 | r3++;
0x0008d7de str r3, [sp, 0x88] | var_88h = r3;
0x0008d7e0 ldr.w r3, [sb, 0x74] | r3 = *((sb + 0x74));
0x0008d7e4 cmp r3, 0 |
0x0008d7e6 it eq |
| if (r3 != 0) {
0x0008d7e8 moveq r3, sb | r3 = sb;
| }
0x0008d7ea strb r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
| }
0x0008d7ec ldr r3, [sp, 0x58] | r3 = var_58h;
0x0008d7ee ldr r2, [sp, 0x90] | r2 = var_90h;
0x0008d7f0 cmp r2, 0 |
0x0008d7f2 ite eq |
| if (r2 != 0) {
0x0008d7f4 moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0) {
0x0008d7f6 andne r3, r3, 1 | r3 &= 1;
| }
0x0008d7fa cmp r3, 0 |
| if (r3 != 0) {
0x0008d7fc bne.w 0x8da22 | goto label_162;
| }
0x0008d800 str r3, [sp, 0xc] | var_ch = r3;
0x0008d802 mov r1, r8 | r1 = r8;
0x0008d804 ldr r3, [sp, 0xac] | r3 = var_ach;
0x0008d806 mov r0, sb | r0 = sb;
0x0008d808 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008d80a str r3, [sp, 8] | var_8h = r3;
0x0008d80c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008d80e str r2, [sp, 0x18] | var_18h = r2;
0x0008d810 ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008d812 str r3, [sp, 4] | var_4h = r3;
0x0008d814 ldr r3, [sp, 0x110] | r3 = *(arg_0h);
0x0008d816 str r2, [sp, 0x14] | var_14h = r2;
0x0008d818 ldr r2, [sp, 0x90] | r2 = var_90h;
0x0008d81a str r3, [sp] | *(sp) = r3;
0x0008d81c movs r3, 5 | r3 = 5;
0x0008d81e str r3, [sp, 0x10] | var_10h = r3;
0x0008d820 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008d822 bl 0x8c7d0 | fcn_0008c7d0 (r0, r1, r2, r3);
| label_58:
0x0008d826 ldr r3, [sp, 0x80] | r3 = var_80h;
0x0008d828 cmp r3, 0 |
| if (r3 != 0) {
0x0008d82a bne.w 0x8dc40 | goto label_163;
| }
0x0008d82e movs r3, 1 | r3 = 1;
0x0008d830 str r3, [sp, 0x84] | var_84h = r3;
0x0008d832 b 0x8d476 | goto label_41;
| label_147:
0x0008d834 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008d836 tst r3, r7 |
| if ((r3 & r7) == 0) {
0x0008d838 beq.w 0x8d42c | goto label_42;
| }
0x0008d83c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008d83e ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008d840 lsls r2, r3, 0x12 | r2 = r3 << 0x12;
| if (r2 < r3) {
0x0008d842 bmi.w 0x8da08 | goto label_164;
| }
| label_57:
0x0008d846 lsls r3, r3, 0x11 | r3 <<= 0x11;
| if (r3 >= r3) {
0x0008d848 bpl 0x8d7b0 | void (*0x8d7b0)() ();
| }
0x0008d84a ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x0008d84e cmp r2, 0 |
| if (r2 == 0) {
0x0008d850 beq 0x8d79c | goto label_43;
| }
| label_129:
0x0008d8ba ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008d8bc ldr.w sb, [sp, 0x28] | sb = var_28h;
0x0008d8c0 str r3, [sp, 0x20] | var_20h = r3;
0x0008d8c2 b 0x8d1c4 | goto label_44;
| label_141:
0x0008d8c4 ldr r2, [sp, 0x70] | r2 = var_70h;
0x0008d8c6 b 0x8d3c4 | goto label_45;
| label_157:
0x0008d8c8 ldr.w r3, [pc, 0x658] |
0x0008d8cc add r3, pc | r3 = 0x11b7f4;
0x0008d8ce adds r3, 4 | r3 += 4;
0x0008d8d0 b 0x8d596 | goto label_46;
| label_153:
0x0008d8d2 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0008d8d4 cmp r1, 0 |
| if (r1 == 0) {
0x0008d8d6 beq.w 0x8d4ae | goto label_47;
| }
0x0008d8da ldrb.w r3, [sb, 0x13] | r3 = *((sb + 0x13));
0x0008d8de cmp r3, 7 |
| if (r3 > 7) {
0x0008d8e0 bhi.w 0x8d4ae | goto label_47;
| }
0x0008d8e4 add.w r2, sb, r3, lsl 2 | r2 = sb + (r3 << 2);
0x0008d8e8 adds r3, 1 | r3++;
0x0008d8ea strb.w r3, [sb, 0x13] | *((sb + 0x13)) = r3;
0x0008d8ee str.w r1, [r2, 0x94] | __asm ("str.w r1, [r2, 0x94]");
0x0008d8f2 b 0x8d4ae | goto label_47;
| label_123:
0x0008d900 ldrb r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0008d902 cmp r3, 0 |
| if (r3 != 0) {
0x0008d904 bne 0x8d9c2 | goto label_165;
| }
0x0008d906 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008d908 cmp r2, r5 |
0x0008d90a it ne |
| if (r2 != r5) {
0x0008d90c movne r7, 4 | r7 = 4;
| goto label_166;
| }
| if (r2 != r5) {
| label_166:
0x0008d90e bne.w 0x8d128 | goto label_48;
| }
0x0008d912 ldr r2, [sp, 0x118] | r2 = *(arg_8h);
0x0008d914 cmp r2, 0 |
| if (r2 != 0) {
0x0008d916 bne.w 0x8de30 | goto label_167;
| }
0x0008d918 strh r3, [r1, 0x14] | *((r1 + 0x14)) = r3;
0x0008d91a ldr r2, [sp, 0x114] | r2 = *(arg_114h);
0x0008d91c mov r3, r4 | r3 = r4;
0x0008d91e movs r1, 0x20 | r1 = 0x20;
0x0008d920 mov r0, sl | r0 = sl;
0x0008d922 str r2, [sp] | *(sp) = r2;
0x0008d924 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008d926 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d92a ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008d92c strd r3, r3, [sp, 0x74] | __asm ("strd r3, r3, [var_74h]");
| label_55:
0x0008d930 mov r0, sl | r0 = sl;
0x0008d932 ldr r1, [sp, 0x124] | r1 = *(arg_124h);
0x0008d934 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0008d938 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008d93c movs r3, 0 | r3 = 0;
0x0008d93e strd r3, r3, [sp, 0x84] | __asm ("strd r3, r3, [var_88h]");
0x0008d942 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0008d946 cmn r2, r3 |
| if (r2 >= r3) {
0x0008d948 bpl.w 0x8db00 | goto label_168;
| }
| label_61:
0x0008d94c rsbs r2, r6, 0 | r2 = r6 - ;
0x0008d94e mov r1, sl | r1 = sl;
0x0008d950 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0008d954 b 0x8db0c | goto label_169;
| label_161:
0x0008d956 ldr r3, [sp, 0xb0] | r3 = var_b0h;
0x0008d958 b 0x8d792 | goto label_49;
| label_96:
0x0008d95a ldr r1, [sp, 0x34] | r1 = var_34h;
0x0008d95c mov r0, r4 | r0 = r4;
0x0008d95e bl 0x12abc | fcn_00012abc (r0);
0x0008d962 str r0, [sp, 0x5c] | var_5ch = r0;
0x0008d964 b.w 0x8ccb4 | goto label_50;
| label_135:
0x0008d968 ldr.w r3, [pc, 0x5bc] |
0x0008d96c add r3, pc | r3 = 0x11b898;
0x0008d96e adds r3, 4 | r3 += 4;
0x0008d970 b 0x8d270 | goto label_51;
| label_136:
0x0008d972 ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008d974 cmp r3, 0 |
| if (r3 != 0) {
0x0008d976 bne.w 0x8de5a | goto label_170;
| }
| label_72:
0x0008d97a ldr r1, [sp, 0x114] | r1 = *(arg_114h);
0x0008d97c mov r0, sl | r0 = sl;
0x0008d97e ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008d980 ldr r3, [sp, 0x94] | r3 = var_94h;
0x0008d982 str r1, [sp] | *(sp) = r1;
0x0008d984 movs r1, 0x20 | r1 = 0x20;
0x0008d986 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d98a mov r2, r8 | r2 = r8;
0x0008d98c mov r0, fp | r0 = fp;
0x0008d98e movs r1, 2 | r1 = 2;
0x0008d990 bl 0x2bb58 | fcn_0002bb58 (r0, r1, r2);
0x0008d994 b 0x8d29a | goto label_52;
| label_116:
0x0008d996 ldr.w r3, [fp] | r3 = *(fp);
0x0008d99a ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008d99c lsls r4, r3, 0x11 | r4 = r3 << 0x11;
| if (r4 >= r3) {
0x0008d99e bpl.w 0x8d0d4 | goto label_53;
| }
0x0008d9a2 mov r2, r0 | r2 = r0;
| label_119:
0x0008d9a4 ldr.w r0, [r8, 0x48] | r0 = *((r8 + 0x48));
0x0008d9a8 ldr.w r1, [r8] | r1 = *(r8);
0x0008d9ac adds r0, 0x38 | r0 += 0x38;
0x0008d9ae bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x0008d9b2 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0008d9b4 cmp r3, 0 |
| if (r3 == 0) {
0x0008d9b6 beq.w 0x8de86 | goto label_171;
| }
| label_73:
0x0008d9ba movs r3, 0 | r3 = 0;
0x0008d9bc str r3, [sp, 0x90] | var_90h = r3;
0x0008d9be b.w 0x8d000 | goto label_54;
| label_165:
0x0008d9c2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008d9c4 cmp r3, r5 |
0x0008d9c6 it ne |
| if (r3 != r5) {
0x0008d9c8 movne r7, 6 | r7 = 6;
| goto label_172;
| }
| if (r3 != r5) {
| label_172:
0x0008d9ca bne.w 0x8d128 | goto label_48;
| }
0x0008d9ce ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008d9d0 cmp r3, 0 |
| if (r3 != 0) {
0x0008d9d2 bne.w 0x8de38 | goto label_173;
| }
0x0008d9d6 ldr r2, [sp, 0x114] | r2 = *(arg_114h);
0x0008d9d8 mov r3, r4 | r3 = r4;
0x0008d9da movs r1, 0x20 | r1 = 0x20;
0x0008d9dc mov r0, sl | r0 = sl;
0x0008d9de str r2, [sp] | *(sp) = r2;
0x0008d9e0 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008d9e2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008d9e6 ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008d9e8 strd r3, r3, [sp, 0x74] | __asm ("strd r3, r3, [var_74h]");
0x0008d9ec ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008d9ee mov r2, r8 | r2 = r8;
0x0008d9f0 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0008d9f2 mov r0, fp | r0 = fp;
0x0008d9f4 str r3, [sp] | *(sp) = r3;
0x0008d9f6 movs r3, 0 | r3 = 0;
0x0008d9f8 bl 0x8bb48 | fcn_0008bb48 (r0, r1, r2, r3, r4);
0x0008d9fc b 0x8d930 | goto label_55;
| label_118:
0x0008d9fe movs r3, 6 | r3 = 6;
0x0008da00 str r2, [sp, 0x40] | var_40h = r2;
0x0008da02 str r3, [sp, 0x30] | var_30h = r3;
0x0008da04 b.w 0x8cfd8 | goto label_56;
| label_164:
0x0008da08 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0008da0a movs r2, 0x7f | r2 = 0x7f;
0x0008da0c mov r1, r8 | r1 = r8;
0x0008da0e mov r0, sb | r0 = sb;
0x0008da10 str r3, [sp] | *(sp) = r3;
0x0008da12 bl 0x26008 | r0 = fcn_00026008 (r0, r1, r2, r3);
0x0008da16 cmp r0, 0 |
| if (r0 != 0) {
0x0008da18 bne.w 0x8d852 | void (*0x8d852)() ();
| }
0x0008da1c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008da1e ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008da20 b 0x8d846 | goto label_57;
| label_162:
0x0008da22 movs r6, 0 | r6 = 0;
0x0008da24 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008da26 mov r3, r6 | r3 = r6;
0x0008da28 movs r1, 0xa3 | r1 = 0xa3;
0x0008da2a mov r0, sl | r0 = sl;
0x0008da2c str r6, [sp] | *(sp) = r6;
0x0008da2e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008da32 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008da34 mov r1, r8 | r1 = r8;
0x0008da36 ldr r2, [sp, 0x90] | r2 = var_90h;
0x0008da38 mov r0, sb | r0 = sb;
0x0008da3a str r6, [sp, 0xc] | var_ch = r6;
0x0008da3c str r3, [sp, 0x18] | var_18h = r3;
0x0008da3e ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008da40 str r3, [sp, 0x14] | var_14h = r3;
0x0008da42 ldr r3, [sp, 0xac] | r3 = var_ach;
0x0008da44 str r3, [sp, 8] | var_8h = r3;
0x0008da46 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008da48 str r3, [sp, 4] | var_4h = r3;
0x0008da4a ldr r3, [sp, 0x110] | r3 = *(arg_0h);
0x0008da4c str r3, [sp] | *(sp) = r3;
0x0008da4e movs r3, 5 | r3 = 5;
0x0008da50 str r3, [sp, 0x10] | var_10h = r3;
0x0008da52 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008da54 bl 0x8c7d0 | fcn_0008c7d0 (r0, r1, r2, r3);
0x0008da58 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008da5a mov r3, r6 | r3 = r6;
0x0008da5c movs r1, 0xa4 | r1 = 0xa4;
0x0008da5e mov r0, sl | r0 = sl;
0x0008da60 str r6, [sp] | *(sp) = r6;
0x0008da62 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008da66 b 0x8d826 | goto label_58;
| label_125:
0x0008da68 ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008da6a cmp r3, 0 |
| if (r3 != 0) {
0x0008da6c bne.w 0x8dda6 | goto label_174;
| }
0x0008da70 ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008da72 str r3, [sp, 0x74] | var_74h = r3;
| label_67:
0x0008da74 ldr r2, [sp, 0x114] | r2 = *(arg_114h);
0x0008da76 mov r3, r4 | r3 = r4;
0x0008da78 movs r1, 0x20 | r1 = 0x20;
0x0008da7a mov r0, sl | r0 = sl;
0x0008da7c str r2, [sp] | *(sp) = r2;
0x0008da7e ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008da80 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008da84 subs r3, r7, 1 | r3 = r7 - 1;
0x0008da86 cmp r3, 5 |
| if (r3 > 5) {
0x0008da88 bhi.w 0x8df18 | goto label_175;
| }
0x0008da8c adr r2, 8 | r2 = 8;
0x0008da8e ldr.w r3, [r2, r3, lsl 2] | offset_9 = r3 << 2;
| r3 = *((r2 + offset_9));
0x0008da92 add r2, r3 | r2 += r3;
0x0008da94 bx r2 | return uint32_t (*r2)() ();
| label_121:
0x0008dab0 cmp r3, 0xb |
0x0008dab2 mov r7, r3 | r7 = r3;
| if (r3 != 0xb) {
0x0008dab4 bne.w 0x8d108 | goto label_59;
| }
0x0008dab8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008daba movs r7, 2 | r7 = 2;
0x0008dabc cmp r3, 0 |
| if (r3 != 0) {
0x0008dabe bne.w 0x8d110 | goto label_60;
| }
0x0008dac2 ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008dac4 cmp r3, 0 |
| if (r3 != 0) {
0x0008dac6 bne.w 0x8df08 | goto label_176;
| }
0x0008daca ldr r2, [sp, 0x114] | r2 = *(arg_114h);
0x0008dacc mov r3, r4 | r3 = r4;
0x0008dace movs r1, 0x20 | r1 = 0x20;
0x0008dad0 mov r0, sl | r0 = sl;
0x0008dad2 movs r7, 2 | r7 = 2;
0x0008dad4 str r2, [sp] | *(sp) = r2;
0x0008dad6 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008dad8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008dadc ldr r5, [sp, 0x118] | r5 = *(arg_8h);
0x0008dade strd r5, r5, [sp, 0x74] | __asm ("strd r5, r5, [var_74h]");
| label_79:
0x0008dae2 mov r1, r7 | r1 = r7;
0x0008dae4 mov r2, r8 | r2 = r8;
0x0008dae6 mov r0, fp | r0 = fp;
0x0008dae8 bl 0x2bb58 | fcn_0002bb58 (r0, r1, r2);
0x0008daec movs r3, 0 | r3 = 0;
0x0008daee strd r3, r3, [sp, 0x84] | __asm ("strd r3, r3, [var_88h]");
| label_63:
0x0008daf2 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008daf6 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0008dafa cmn r2, r3 |
| if (r2 < r3) {
0x0008dafc bmi.w 0x8d94c | goto label_61;
| }
| label_168:
0x0008db00 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0008db02 lsls r3, r6, 2 | r3 = r6 << 2;
0x0008db04 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0008db08 rsbs r3, r3, 0 | r3 -= ;
0x0008db0a str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_169:
0x0008db0c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008db0e cmp r3, 0 |
0x0008db10 it ne |
| if (r3 != 0) {
0x0008db12 cmpne r3, r5 | __asm ("cmpne r3, r5");
| }
0x0008db14 ite ne |
| if (r3 == 0) {
0x0008db16 movne r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
0x0008db18 moveq r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x0008db1a bne 0x8db92 |
0x0008db1c ldr r2, [sp, 0x74] | r2 = var_74h;
0x0008db1e cmp r2, 0 |
| if (r2 != 0) {
0x0008db20 bne 0x8dbe0 | goto label_177;
| }
0x0008db22 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008db24 str r3, [sp, 0xa8] | var_a8h = r3;
0x0008db26 str r3, [sp, 0x68] | var_68h = r3;
0x0008db28 b.w 0x8d1b2 | goto label_62;
| label_126:
0x0008db2c movs r3, 0 | r3 = 0;
0x0008db2e str r3, [sp, 0x74] | var_74h = r3;
| label_71:
0x0008db30 ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008db32 cmp r3, 0 |
| if (r3 != 0) {
0x0008db34 bne.w 0x8ddaa | goto label_70;
| }
0x0008db38 ldr r2, [sp, 0x114] | r2 = *(arg_114h);
0x0008db3a mov r3, r4 | r3 = r4;
0x0008db3c movs r1, 0x20 | r1 = 0x20;
0x0008db3e mov r0, sl | r0 = sl;
0x0008db40 str r2, [sp] | *(sp) = r2;
0x0008db42 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0008db44 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008db48 ldr r3, [sp, 0x80] | r3 = var_80h;
0x0008db4a cmp r3, 0 |
| if (r3 != 0) {
0x0008db4c bne.w 0x8dde8 | goto label_178;
| }
0x0008db50 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x0008db54 cmp r1, 0 |
| if (r1 == 0) {
0x0008db56 beq.w 0x8defe | goto label_179;
| }
0x0008db5a ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x0008db5e movs r2, 1 | r2 = 1;
0x0008db60 ldr r4, [sp, 0x80] | r4 = var_80h;
0x0008db62 mov r0, fp | r0 = fp;
0x0008db64 str r2, [sp, 0x84] | var_84h = r2;
0x0008db66 cmp r3, 0 |
0x0008db68 it eq |
| if (r3 != 0) {
0x0008db6a moveq r3, fp | r3 = fp;
| }
0x0008db6c strb r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x0008db6e ldr r3, [sp, 0x110] | r3 = *(arg_0h);
0x0008db70 str r4, [sp, 4] | var_4h = r4;
0x0008db72 str r3, [sp] | *(sp) = r3;
0x0008db74 mov.w r3, -1 | r3 = -1;
0x0008db78 str r3, [sp, 8] | var_8h = r3;
0x0008db7a ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008db7c ldr.w r2, [r8, 0x24] | r2 = *((r8 + 0x24));
0x0008db80 bl 0x6f1d4 | fcn_0006f1d4 (r0, r1, r2, r3);
0x0008db84 str r4, [sp, 0x88] | var_88h = r4;
0x0008db86 b 0x8daf2 | goto label_63;
| label_100:
0x0008db88 mov r6, r5 | r6 = r5;
0x0008db8a mov r3, r1 | r3 = r1;
0x0008db8c movs r2, 0 | r2 = 0;
0x0008db8e b.w 0x8cd08 | goto label_64;
| }
0x0008db92 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008db96 mov r2, r3 | r2 = r3;
0x0008db98 str r3, [sp, 0x68] | var_68h = r3;
0x0008db9a ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x0008db9e cmp r2, r3 |
| if (r2 >= r3) {
0x0008dba0 bge.w 0x8deba | goto label_180;
| }
0x0008dba4 ldr r0, [sp, 0x68] | r0 = var_68h;
0x0008dba6 movs r2, 0 | r2 = 0;
0x0008dba8 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008dbac str r2, [sp, 0xa8] | var_a8h = r2;
0x0008dbae add.w r1, r0, r0, lsl 2 | r1 = r0 + (r0 << 2);
0x0008dbb2 adds r0, 1 | r0++;
0x0008dbb4 str.w r0, [sl, 0x6c] | __asm ("str.w r0, [sl, 0x6c]");
0x0008dbb8 movs r0, 0xb | r0 = 0xb;
0x0008dbba lsls r1, r1, 2 | r1 <<= 2;
0x0008dbbc str r0, [r3, r1] | *((r3 + r1)) = r0;
0x0008dbbe add r3, r1 | r3 += r1;
0x0008dbc0 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x0008dbc4 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
0x0008dbc8 b.w 0x8d1b2 | goto label_62;
| label_95:
0x0008dbcc ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008dbce str r3, [sp, 0x5c] | var_5ch = r3;
0x0008dbd0 str r3, [sp, 0x40] | var_40h = r3;
0x0008dbd2 b.w 0x8cfd8 | goto label_56;
| label_122:
0x0008dbd6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008dbd8 mov r5, r3 | r5 = r3;
0x0008dbda str r3, [sp, 0x78] | var_78h = r3;
0x0008dbdc b.w 0x8d15c | goto label_65;
| label_177:
0x0008dbe0 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008dbe4 mov r1, r2 | r1 = r2;
0x0008dbe6 str r2, [sp, 0xa8] | var_a8h = r2;
0x0008dbe8 ldr.w r2, [sl, 0x70] | r2 = *((sl + 0x70));
0x0008dbec cmp r1, r2 |
| if (r1 >= r2) {
0x0008dbee bge.w 0x8ded0 | goto label_181;
| }
0x0008dbf2 ldr r1, [sp, 0xa8] | r1 = var_a8h;
0x0008dbf4 movs r4, 0xb | r4 = 0xb;
0x0008dbf6 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0008dbfa add.w r0, r1, r1, lsl 2 | r0 = r1 + (r1 << 2);
0x0008dbfe adds r1, 1 | r1++;
0x0008dc00 str.w r1, [sl, 0x6c] | __asm ("str.w r1, [sl, 0x6c]");
0x0008dc04 lsls r0, r0, 2 | r0 <<= 2;
0x0008dc06 str r4, [r2, r0] | *((r2 + r0)) = r4;
0x0008dc08 add r2, r0 | r2 += r0;
0x0008dc0a strd r3, r3, [r2, 4] | __asm ("strd r3, r3, [r2, 4]");
0x0008dc0e strd r3, r3, [r2, 0xc] | __asm ("strd r3, r3, [r2, 0xc]");
| label_76:
0x0008dc12 ldr.w r2, [sl] | r2 = *(sl);
0x0008dc16 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008dc18 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0008dc1c subs r3, 1 | r3--;
0x0008dc1e it mi |
| if (r3 >= 1) {
0x0008dc20 addmi r3, r1, -1 | r3 = r1 + -1;
| }
0x0008dc24 cmp r2, 0 |
| if (r2 != 0) {
0x0008dc26 bne.w 0x8ddd8 | goto label_182;
| }
0x0008dc2a add.w r2, r3, r3, lsl 2 | r2 = r3 + (r3 << 2);
0x0008dc2e ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008dc32 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
| label_68:
0x0008dc36 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x0008dc38 movs r3, 0 | r3 = 0;
0x0008dc3a str r3, [sp, 0x68] | var_68h = r3;
0x0008dc3c b.w 0x8d1b2 | goto label_62;
| label_163:
0x0008dc40 movs r6, 0 | r6 = 0;
0x0008dc42 ldr r2, [sp, 0x80] | r2 = var_80h;
0x0008dc44 movs r3, 1 | r3 = 1;
0x0008dc46 movs r1, 0x53 | r1 = 0x53;
0x0008dc48 mov r0, sl | r0 = sl;
0x0008dc4a str r6, [sp] | *(sp) = r6;
0x0008dc4c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008dc50 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008dc54 mov r2, r3 | r2 = r3;
0x0008dc56 str r3, [sp, 0x4c] | var_4ch = r3;
0x0008dc58 ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x0008dc5c cmp r2, r3 |
| if (r2 >= r3) {
0x0008dc5e bge.w 0x8deec | goto label_183;
| }
0x0008dc62 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0008dc64 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008dc68 add.w r2, r1, r1, lsl 2 | r2 = r1 + (r1 << 2);
0x0008dc6c adds r1, 1 | r1++;
0x0008dc6e str.w r1, [sl, 0x6c] | __asm ("str.w r1, [sl, 0x6c]");
0x0008dc72 movs r1, 0xb | r1 = 0xb;
0x0008dc74 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
0x0008dc78 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0008dc7c strd r6, r6, [r3, 4] | __asm ("strd r6, r6, [r3, 4]");
0x0008dc80 strd r6, r6, [r3, 0xc] | __asm ("strd r6, r6, [r3, 0xc]");
| label_78:
0x0008dc84 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0008dc86 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008dc8a mvns r2, r3 | r2 = ~r3;
0x0008dc8c ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x0008dc90 cmn r1, r3 |
| if (r1 < r3) {
0x0008dc92 bmi.w 0x8dee4 | goto label_184;
| }
0x0008dc96 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0008dc98 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0008dc9c str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
| label_77:
0x0008dca0 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008dca4 subs r1, r3, 1 | r1 = r3 - 1;
0x0008dca6 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0008dca8 str r1, [sp, 0xa4] | var_a4h = r1;
0x0008dcaa str.w r1, [sb, 0x38] | __asm ("str.w r1, [sb, 0x38]");
| if (r3 != 0) {
0x0008dcae cbz r3, 0x8dcc0 |
0x0008dcb0 movs r3, 0 | r3 = 0;
0x0008dcb2 ldr r2, [sp, 0x70] | r2 = var_70h;
0x0008dcb4 str r3, [sp] | *(sp) = r3;
0x0008dcb6 mov r0, sl | r0 = sl;
0x0008dcb8 mov r3, r1 | r3 = r1;
0x0008dcba movs r1, 0x32 | r1 = 0x32;
0x0008dcbc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0008dcc0 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0008dcc2 cmp r7, r3 |
| if (r7 <= r3) {
0x0008dcc4 ble 0x8dd64 | goto label_185;
| }
0x0008dcc6 ldr r2, [pc, 0x264] |
0x0008dcc8 str.w sb, [sp, 0x70] | __asm ("str.w sb, [var_70h]");
0x0008dccc ldr r6, [sp, 0xa4] | r6 = var_a4h;
0x0008dcce ldr.w sb, [sp, 0xb4] | sb = var_b4h;
0x0008dcd2 add r2, pc | r2 = 0x11bc04;
0x0008dcd4 str r4, [sp, 0x60] | var_60h = r4;
0x0008dcd6 mov r4, r3 | r4 = r3;
0x0008dcd8 str.w r8, [sp, 0x84] | __asm ("str.w r8, [var_84h]");
0x0008dcdc mov r8, r2 | r8 = r2;
0x0008dcde str r5, [sp, 0x50] | var_50h = r5;
| do {
0x0008dce0 ldr.w r2, [sl] | r2 = *(sl);
0x0008dce4 cmp r4, 0 |
0x0008dce6 ite lt |
| if (r4 >= 0) {
0x0008dce8 ldrlt r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
| }
| if (r4 >= 0) {
0x0008dcec mov r3, r4 | r3 = r4;
| }
0x0008dcee mov r0, sb | r0 = sb;
0x0008dcf0 ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0008dcf4 it lt |
| if (r4 >= 0) {
0x0008dcf6 addlt r3, r3, -1 | r3 += -1;
| }
| if (r2 == 0) {
0x0008dcfa cbnz r2, 0x8dd08 |
0x0008dcfc ldr.w r0, [sl, 0x68] | r0 = *((sl + 0x68));
0x0008dd00 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008dd04 add.w r0, r0, r3, lsl 2 | r0 += (r3 << 2);
| }
0x0008dd08 ldrb r1, [r0] | r1 = *(r0);
0x0008dd0a ldrsb.w lr, [r0, 1] |
0x0008dd0e ldrh r5, [r0, 2] | r5 = *((r0 + 2));
0x0008dd10 cmp r1, 0x8a |
0x0008dd12 ldrd r2, r3, [r0, 4] | __asm ("ldrd r2, r3, [r0, 4]");
0x0008dd16 ldrd ip, r0, [r0, 0xc] | __asm ("ldrd ip, r0, [r0, 0xc]");
| if (r1 != 0x8a) {
0x0008dd1a beq 0x8dd52 |
0x0008dd1c strd r0, lr, [sp, 4] | __asm ("strd r0, lr, [var_8h]");
0x0008dd20 add.w r0, r8, r1 | r0 = r8 + r1;
0x0008dd24 ldrb.w r0, [r0, 0xac] | r0 = *((r0 + 0xac));
0x0008dd28 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x0008dd2c tst.w r0, 1 |
0x0008dd30 mov r0, sl | r0 = sl;
0x0008dd32 it ne |
| if ((r0 & 1) == 0) {
0x0008dd34 movne r3, r6 | r3 = r6;
| }
0x0008dd36 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0008dd3a ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008dd3e cmp r3, 0 |
0x0008dd40 itttt gt |
| if (r3 <= 0) {
0x0008dd42 ldrgt r2, [sl, 0x68] | r2 = *((sl + 0x68));
| }
| if (r3 <= 0) {
0x0008dd46 addgt r3, r3, r3, lsl 2 | r3 += (r3 << 2);
| }
| if (r3 > 0) {
0x0008dd4a add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
| }
| if (r3 <= 0) {
0x0008dd4e strh r5, [r2, -0x12] | *((r2 - 0x12)) = r5;
| goto label_186;
| }
| }
| label_186:
0x0008dd52 adds r4, 1 | r4++;
0x0008dd54 cmp r4, r7 |
0x0008dd56 bne 0x8dce0 |
| } while (r4 != r7);
0x0008dd58 ldr r5, [sp, 0x50] | r5 = var_50h;
0x0008dd5a ldr r4, [sp, 0x60] | r4 = var_60h;
0x0008dd5c ldr.w sb, [sp, 0x70] | sb = var_70h;
0x0008dd60 ldr.w r8, [sp, 0x84] | r8 = var_84h;
| label_185:
0x0008dd64 mov r2, r4 | r2 = r4;
0x0008dd66 movs r1, 2 | r1 = 2;
0x0008dd68 mov r0, sb | r0 = sb;
0x0008dd6a bl 0x2ba20 | fcn_0002ba20 (r0, r1, r2);
0x0008dd6e ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008dd70 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008dd74 cmp r3, 0 |
| if (r3 < 0) {
0x0008dd76 bge 0x8dd7c |
0x0008dd78 subs r3, r2, 1 | r3 = r2 - 1;
0x0008dd7a str r3, [sp, 0x4c] | var_4ch = r3;
| }
0x0008dd7c ldr.w r3, [sl] | r3 = *(sl);
0x0008dd80 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 != 0) {
0x0008dd84 cbnz r3, 0x8dde0 | goto label_187;
| }
0x0008dd86 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008dd88 ldr.w r1, [sl, 0x68] | r1 = *((sl + 0x68));
0x0008dd8c add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008dd90 add.w r3, r1, r3, lsl 2 | r3 = r1 + (r3 << 2);
| label_69:
0x0008dd94 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0008dd96 movs r3, 1 | r3 = 1;
0x0008dd98 str r3, [sp, 0x84] | var_84h = r3;
0x0008dd9a b.w 0x8d476 | goto label_41;
| label_137:
0x0008dd9e mov r1, sl | r1 = sl;
0x0008dda0 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0008dda4 b 0x8d5ae | goto label_66;
| label_174:
0x0008dda6 movs r3, 0 | r3 = 0;
0x0008dda8 str r3, [sp, 0x74] | var_74h = r3;
| label_70:
0x0008ddaa ldr r3, [sp, 0x118] | r3 = *(arg_8h);
0x0008ddac movs r1, 0x35 | r1 = 0x35;
0x0008ddae ldr r2, [sp, 0x114] | r2 = *(arg_114h);
0x0008ddb0 mov r0, sl | r0 = sl;
0x0008ddb2 str r3, [sp] | *(sp) = r3;
0x0008ddb4 mov r3, r4 | r3 = r4;
0x0008ddb6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ddba ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008ddbe cmp r3, 0 |
| if (r3 <= 0) {
0x0008ddc0 ble.w 0x8da74 | goto label_67;
| }
0x0008ddc4 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0008ddc8 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008ddcc add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0008ddd0 movs r3, 0x90 | r3 = 0x90;
0x0008ddd2 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
0x0008ddd6 b 0x8da74 | goto label_67;
| label_182:
0x0008ddd8 ldr r3, [pc, 0x154] |
0x0008ddda add r3, pc | r3 = 0x11bd0e;
0x0008dddc adds r3, 4 | r3 += 4;
0x0008ddde b 0x8dc36 | goto label_68;
| label_187:
0x0008dde0 ldr r3, [pc, 0x150] |
0x0008dde2 add r3, pc | r3 = 0x11bd1a;
0x0008dde4 adds r3, 4 | r3 += 4;
0x0008dde6 b 0x8dd94 | goto label_69;
| label_178:
0x0008dde8 ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x0008ddec movs r4, 1 | r4 = 1;
0x0008ddee ldr r1, [sp, 0x114] | r1 = *(arg_114h);
0x0008ddf0 movs r7, 0 | r7 = 0;
0x0008ddf2 ldr r2, [sp, 0x90] | r2 = var_90h;
0x0008ddf4 mov r0, fp | r0 = fp;
0x0008ddf6 cmp r3, 0 |
0x0008ddf8 it eq |
| if (r3 != 0) {
0x0008ddfa moveq r3, fp | r3 = fp;
| }
0x0008ddfc strb r4, [r3, 0x14] | *((r3 + 0x14)) = r4;
0x0008ddfe mov.w r3, -1 | r3 = -1;
0x0008de02 str r1, [sp, 4] | var_4h = r1;
0x0008de04 ldr r1, [sp, 0x110] | r1 = *(arg_0h);
0x0008de06 str r3, [sp, 0x18] | var_18h = r3;
0x0008de08 movs r3, 5 | r3 = 5;
0x0008de0a str r3, [sp, 0x10] | var_10h = r3;
0x0008de0c str r1, [sp] | *(sp) = r1;
0x0008de0e mov r1, r8 | r1 = r8;
0x0008de10 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008de12 str r4, [sp, 0x14] | var_14h = r4;
0x0008de14 str r4, [sp, 8] | var_8h = r4;
0x0008de16 str r7, [sp, 0xc] | var_ch = r7;
0x0008de18 bl 0x8c7d0 | fcn_0008c7d0 (r0, r1, r2, r3);
0x0008de1c ldr r2, [sp, 0x80] | r2 = var_80h;
0x0008de1e mov r3, r4 | r3 = r4;
0x0008de20 movs r1, 0x53 | r1 = 0x53;
0x0008de22 mov r0, sl | r0 = sl;
0x0008de24 str r7, [sp] | *(sp) = r7;
0x0008de26 str r4, [sp, 0x88] | var_88h = r4;
0x0008de28 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008de2c str r4, [sp, 0x84] | var_84h = r4;
0x0008de2e b 0x8daf2 | goto label_63;
| label_167:
0x0008de30 movs r7, 4 | r7 = 4;
0x0008de32 str r3, [sp, 0x78] | var_78h = r3;
0x0008de34 str r3, [sp, 0x74] | var_74h = r3;
0x0008de36 b 0x8ddaa | goto label_70;
| label_173:
0x0008de38 movs r3, 0 | r3 = 0;
0x0008de3a movs r7, 6 | r7 = 6;
0x0008de3c str r3, [sp, 0x78] | var_78h = r3;
0x0008de3e str r3, [sp, 0x74] | var_74h = r3;
0x0008de40 b 0x8ddaa | goto label_70;
| label_128:
0x0008de42 movs r3, 0 | r3 = 0;
0x0008de44 movs r1, 0xb | r1 = 0xb;
0x0008de46 mov r2, r3 | r2 = r3;
0x0008de48 str r3, [sp] | *(sp) = r3;
0x0008de4a mov r0, sl | r0 = sl;
0x0008de4c bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008de50 adds r3, r0, 1 | r3 = r0 + 1;
0x0008de52 str r3, [sp, 0x74] | var_74h = r3;
0x0008de54 b 0x8db30 | goto label_71;
| label_127:
0x0008de56 str r3, [sp, 0x74] | var_74h = r3;
0x0008de58 b 0x8db30 | goto label_71;
| label_170:
0x0008de5a str r3, [sp] | *(sp) = r3;
0x0008de5c movs r1, 0x35 | r1 = 0x35;
0x0008de5e ldr r3, [sp, 0x94] | r3 = var_94h;
0x0008de60 mov r0, sl | r0 = sl;
0x0008de62 ldr r2, [sp, 0x114] | r2 = *(arg_114h);
0x0008de64 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008de68 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008de6c cmp r3, 0 |
| if (r3 <= 0) {
0x0008de6e ble.w 0x8d97a | goto label_72;
| }
0x0008de72 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0008de76 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008de7a add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0008de7e movs r3, 0x90 | r3 = 0x90;
0x0008de80 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
0x0008de84 b 0x8d97a | goto label_72;
| label_171:
0x0008de86 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x0008de8a cmp r3, 0 |
| if (r3 != 0) {
0x0008de8c bne.w 0x8d9ba | goto label_73;
| }
0x0008de90 b.w 0x8d0d4 | goto label_53;
| label_86:
0x0008de94 str r3, [sp, 0x24] | var_24h = r3;
0x0008de96 b.w 0x8cc6c | goto label_74;
| label_124:
0x0008de9a movs r3, 0 | r3 = 0;
0x0008de9c movs r1, 0xb | r1 = 0xb;
0x0008de9e mov r2, r3 | r2 = r3;
0x0008dea0 mov r0, sl | r0 = sl;
0x0008dea2 str r3, [sp] | *(sp) = r3;
0x0008dea4 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008dea8 str r0, [sp, 0x78] | var_78h = r0;
0x0008deaa b.w 0x8d15c | goto label_65;
| label_130:
0x0008deae ldr r3, [sp, 0x20] | r3 = var_20h;
0x0008deb0 str r3, [sp, 0x38] | var_38h = r3;
0x0008deb2 ldr r3, [sp, 0x94] | r3 = var_94h;
0x0008deb4 str r3, [sp, 0xa4] | var_a4h = r3;
0x0008deb6 b.w 0x8d59e | goto label_75;
| label_180:
0x0008deba movs r3, 0 | r3 = 0;
0x0008debc movs r1, 0xb | r1 = 0xb;
0x0008debe mov r2, r3 | r2 = r3;
0x0008dec0 mov r0, sl | r0 = sl;
0x0008dec2 str r3, [sp] | *(sp) = r3;
0x0008dec4 str r3, [sp, 0xa8] | var_a8h = r3;
0x0008dec6 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008deca str r0, [sp, 0x68] | var_68h = r0;
0x0008decc b.w 0x8d1b2 | goto label_62;
| label_181:
0x0008ded0 movs r1, 0xb | r1 = 0xb;
0x0008ded2 mov r2, r3 | r2 = r3;
0x0008ded4 mov r0, sl | r0 = sl;
0x0008ded6 str r3, [sp] | *(sp) = r3;
0x0008ded8 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008dedc ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0008dee0 str r0, [sp, 0xa8] | var_a8h = r0;
0x0008dee2 b 0x8dc12 | goto label_76;
| label_184:
0x0008dee4 mov r1, sl | r1 = sl;
0x0008dee6 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0008deea b 0x8dca0 | goto label_77;
| label_183:
0x0008deec mov r3, r6 | r3 = r6;
0x0008deee mov r2, r6 | r2 = r6;
0x0008def0 movs r1, 0xb | r1 = 0xb;
0x0008def2 mov r0, sl | r0 = sl;
0x0008def4 str r6, [sp] | *(sp) = r6;
0x0008def6 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008defa str r0, [sp, 0x4c] | var_4ch = r0;
0x0008defc b 0x8dc84 | goto label_78;
| label_179:
0x0008defe ldr r3, [sp, 0x80] | r3 = var_80h;
0x0008df00 str r3, [sp, 0x88] | var_88h = r3;
0x0008df02 movs r3, 1 | r3 = 1;
0x0008df04 str r3, [sp, 0x84] | var_84h = r3;
0x0008df06 b 0x8daf2 | goto label_63;
| label_176:
0x0008df08 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008df0a movs r7, 2 | r7 = 2;
0x0008df0c mov r5, r3 | r5 = r3;
0x0008df0e strd r3, r3, [sp, 0x74] | __asm ("strd r3, r3, [var_74h]");
0x0008df12 b 0x8ddaa | goto label_70;
| label_158:
0x0008df14 blx 0x7e8c | fcn_00007e8c ();
| label_175:
0x0008df18 movs r7, 2 | r7 = 2;
0x0008df1a b 0x8dae2 | goto label_79;
| label_82:
0x0008df1c movs r3, 0 | r3 = 0;
0x0008df1e ldrh r3, [r3, 0x32] | r3 = *((r3 + 0x32));
0x0008df20 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x8df38 */
| #include <stdint.h>
|
; (fcn) fcn.0008df38 () | void fcn_0008df38 (int16_t arg_1h_2, int16_t arg_1h, int16_t arg_190h, int16_t arg_194h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int32_t var_98h_2;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_cch;
| int32_t var_cch_2;
| int32_t var_d4h;
| int32_t var_d4h_2;
| int32_t var_dch;
| int32_t var_dch_2;
| int32_t var_e4h;
| int32_t var_e4h_2;
| int16_t var_ech;
| int16_t var_f4h;
| int16_t var_f8h;
| int16_t var_120h;
| int16_t var_13ch;
| int16_t var_140h;
| int16_t var_154h;
| int16_t var_164h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0008df38 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0008df3c sub sp, 0x16c |
0x0008df3e str r2, [sp, 0x30] | var_30h = r2;
0x0008df40 ldr.w r2, [pc, 0xa6c] | r2 = *(0x0008e9b0);
0x0008df44 str r3, [sp, 0x3c] | var_3ch = r3;
0x0008df46 ldr.w r3, [pc, 0xa6c] |
0x0008df4a add r2, pc | r2 += pc;
0x0008df4c str r1, [sp, 0x40] | var_40h = r1;
0x0008df4e ldr.w fp, [r0, 0x24] | fp = *(arg_190hx24);
0x0008df52 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0008df54 ldr r2, [sp, 0x194] | r2 = *(arg_194h);
0x0008df56 ldr r3, [r3] | r3 = *(0x8e9b6);
0x0008df58 str r3, [sp, 0x164] | var_164h = r3;
0x0008df5a mov.w r3, 0 | r3 = 0;
0x0008df5e movs r3, 0 | r3 = 0;
0x0008df60 str r2, [sp, 0x38] | var_38h = r2;
0x0008df62 ldr r2, [r0] | r2 = *(r0);
0x0008df64 strd r3, r3, [sp, 0xa4] | __asm ("strd r3, r3, [var_a4h]");
0x0008df68 str r2, [sp, 0x2c] | var_2ch = r2;
0x0008df6a cmp.w fp, 0 |
| if (fp != 0) {
0x0008df6e bne 0x8e054 | goto label_70;
| }
0x0008df70 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008df72 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008df76 str r3, [sp, 0x4c] | var_4ch = r3;
0x0008df78 cmp r3, 0 |
| if (r3 != 0) {
0x0008df7a bne 0x8dffa | goto label_71;
| }
0x0008df7c ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008df7e mov r4, r0 | r4 = r0;
0x0008df80 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008df82 str r3, [sp, 0xb4] | var_b4h = r3;
| if (r2 != 0) {
0x0008df84 cbz r2, 0x8df8e |
0x0008df86 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0008df88 lsls r1, r3, 0x16 | r1 = r3 << 0x16;
| if (r1 < r3) {
0x0008df8a bmi.w 0x8e4bc | goto label_72;
| }
| }
| label_4:
0x0008df8e ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008df90 mov r0, r4 | r0 = r4;
0x0008df92 bl 0x89738 | r0 = fcn_00089738 (r0, r1);
0x0008df96 mov sb, r0 | sb = r0;
0x0008df98 cmp r0, 0 |
| if (r0 == 0) {
0x0008df9a beq.w 0x8e550 | goto label_73;
| }
0x0008df9e movs r3, 0 | r3 = 0;
0x0008dfa0 str r3, [sp, 0x44] | var_44h = r3;
| label_42:
0x0008dfa2 ldr.w r0, [sb, 0x48] | r0 = *((sb + 0x48));
0x0008dfa6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008dfa8 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x0008dfaa cmp r0, 0 |
| if (r0 == 0) {
0x0008dfac beq.w 0x8ed14 | goto label_74;
| }
0x0008dfb0 ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x0008dfb2 cmp r0, r3 |
| if (r0 == r3) {
0x0008dfb4 beq 0x8dfc8 | goto label_34;
| }
0x0008dfb6 add.w r3, r1, 0x10 | r3 = r1 + 0x10;
| do {
0x0008dfba mov r1, r3 | r1 = r3;
0x0008dfbc add.w fp, fp, 1 |
0x0008dfc0 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0008dfc2 adds r3, 0x10 | r3 += 0x10;
0x0008dfc4 cmp r0, r2 |
0x0008dfc6 bne 0x8dfba |
| } while (r0 != r2);
| label_34:
0x0008dfc8 ldr r3, [r1] | r3 = *(r1);
0x0008dfca mov r0, r4 | r0 = r4;
0x0008dfcc ldr.w r2, [sb] | r2 = *(sb);
0x0008dfd0 movs r1, 0x12 | r1 = 0x12;
0x0008dfd2 str r3, [sp] | *(sp) = r3;
0x0008dfd4 movs r3, 0 | r3 = 0;
0x0008dfd6 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0008dfda mov r5, r0 | r5 = r0;
0x0008dfdc cmp r0, 0 |
| if (r0 == 0) {
0x0008dfde beq 0x8e05e | goto label_75;
| }
0x0008dfe0 movs r3, 0 | r3 = 0;
0x0008dfe2 str r3, [sp, 0x34] | var_34h = r3;
| label_2:
0x0008dff0 ldr r1, [sp, 0x44] | r1 = var_44h;
0x0008dff2 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008dff4 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x0008dff8 b 0x8e004 | goto label_10;
| label_71:
0x0008dffa ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008dffc str.w fp, [sp, 0x34] | __asm ("str.w fp, [var_34h]");
0x0008e000 bl 0x18a68 | fcn_00018a68 (r0, r1);
| do {
| label_10:
0x0008e004 ldr r3, [sp, 0x38] | r3 = var_38h;
| if (r3 != 0) {
0x0008e006 cbz r3, 0x8e010 |
| label_3:
0x0008e008 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008e00a ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008e00c bl 0x18de4 | fcn_00018de4 (r0, r1);
| }
0x0008e010 ldr r3, [sp, 0x30] | r3 = var_30h;
| if (r3 != 0) {
0x0008e012 cbz r3, 0x8e01e |
0x0008e014 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008e016 movs r2, 1 | r2 = 1;
0x0008e018 mov r1, r3 | r1 = r3;
0x0008e01a bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
| }
0x0008e01e ldr r3, [sp, 0x3c] | r3 = var_3ch;
| if (r3 != 0) {
0x0008e020 cbz r3, 0x8e02a |
0x0008e022 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008e024 mov r1, r3 | r1 = r3;
0x0008e026 bl 0x17b14 | fcn_00017b14 (r0, r1, r2);
| }
0x0008e02a ldr r1, [sp, 0x34] | r1 = var_34h;
| if (r1 != 0) {
0x0008e02c cbz r1, 0x8e034 |
0x0008e02e ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008e030 bl 0x159dc | fcn_000159dc (r0, r1);
| }
| label_17:
0x0008e034 ldr.w r2, [pc, 0x980] |
0x0008e038 ldr.w r3, [pc, 0x978] | r3 = *(0x8e9b4);
0x0008e03c add r2, pc | r2 = 0x11c9f8;
0x0008e03e ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008e040 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008e042 ldr r3, [sp, 0x164] | r3 = var_164h;
0x0008e044 eors r2, r3 | r2 ^= r3;
0x0008e046 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0008e04a bne.w 0x8ecea | goto label_76;
| }
0x0008e04e add sp, 0x16c |
0x0008e050 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_70:
0x0008e054 mov r0, r2 | r0 = r2;
0x0008e056 str r3, [sp, 0x34] | var_34h = r3;
0x0008e058 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x0008e05c b 0x8e004 |
| } while (1);
| label_75:
0x0008e05e ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008e062 movs r2, 0x7e | r2 = 0x7e;
0x0008e064 mov r1, sb | r1 = sb;
0x0008e066 str r3, [sp, 0x70] | var_70h = r3;
0x0008e068 add r3, sp, 0xac | r3 += var_ach;
0x0008e06a str r3, [sp] | *(sp) = r3;
0x0008e06c mov r3, r0 | r3 = r0;
0x0008e06e mov r0, r4 | r0 = r4;
0x0008e070 bl 0x26008 | fcn_00026008 (r0, r1, r2, r3);
0x0008e074 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x0008e078 mov r1, sb | r1 = sb;
0x0008e07a str r0, [sp, 0x7c] | var_7ch = r0;
0x0008e07c mov r0, r4 | r0 = r4;
0x0008e07e str r3, [sp, 0x68] | var_68h = r3;
0x0008e080 bl 0x70e88 | r0 = fcn_00070e88 (r0, r1);
0x0008e084 mov r6, r0 | r6 = r0;
0x0008e086 cmp r0, 0 |
| if (r0 != 0) {
0x0008e088 bne.w 0x8e4ee | goto label_77;
| }
0x0008e08c ldr r2, [sp, 0xac] | r2 = var_ach;
0x0008e08e mov r1, sb | r1 = sb;
0x0008e090 mov r0, r4 | r0 = r4;
0x0008e092 bl 0x263a0 | r0 = fcn_000263a0 (r0, r1, r2);
0x0008e096 cmp r0, 0 |
| if (r0 != 0) {
0x0008e098 bne.w 0x8e546 | goto label_78;
| }
0x0008e09c ldr.w sl, [r4, 8] | sl = *((r4 + 8));
0x0008e0a0 cmp.w sl, 0 |
| if (sl == 0) {
0x0008e0a4 beq.w 0x8e4f2 | goto label_79;
| }
| label_5:
0x0008e0a8 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
| if (r3 == 0) {
0x0008e0aa cbnz r3, 0x8e0b8 |
0x0008e0ac ldrb.w r3, [sl, 0x96] | r3 = *((sl + 0x96));
0x0008e0b0 orr r3, r3, 0x10 | r3 |= 0x10;
0x0008e0b4 strb.w r3, [sl, 0x96] | *((sl + 0x96)) = r3;
| }
0x0008e0b8 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008e0ba mov r0, r4 | r0 = r4;
0x0008e0bc ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008e0be orrs r3, r2 | r3 |= r2;
0x0008e0c0 mov r2, fp | r2 = fp;
0x0008e0c2 ite ne |
| if (r3 == r2) {
0x0008e0c4 movne r1, 1 | r1 = 1;
| }
| if (r3 != r2) {
0x0008e0c6 moveq r1, 0 | r1 = 0;
| }
0x0008e0c8 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x0008e0cc ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008e0ce cmp r3, 0 |
| if (r3 == 0) {
0x0008e0d0 beq.w 0x8e566 | goto label_80;
| }
| label_12:
0x0008e0d4 mov r2, sb | r2 = sb;
0x0008e0d6 mov r1, fp | r1 = fp;
0x0008e0d8 mov r0, r4 | r0 = r4;
0x0008e0da bl 0x20098 | fcn_00020098 (r0, r1, r2);
0x0008e0de ldrsh.w r8, [sb, 0x2a] | r8 = *((sb + 0x2a));
0x0008e0e2 ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x0008e0e4 ldr.w r1, [sb, 0x38] | r1 = *((sb + 0x38));
0x0008e0e8 add.w r3, r8, 1 | r3 = r8 + 1;
0x0008e0ec str r0, [sp, 0x90] | var_90h = r0;
0x0008e0ee add r3, r2 | r3 += r2;
0x0008e0f0 adds r0, r2, 1 | r0 = r2 + 1;
0x0008e0f2 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0008e0f4 str r0, [sp, 0x80] | var_80h = r0;
0x0008e0f6 cmp r1, 0 |
| if (r1 == 0) {
0x0008e0f8 beq.w 0x8e54a | goto label_81;
| }
0x0008e0fc adds r3, 1 | r3++;
0x0008e0fe str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0008e100 adds r3, r2, 2 | r3 = r2 + 2;
0x0008e102 str r3, [sp, 0x54] | var_54h = r3;
| label_9:
0x0008e104 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0008e106 and r3, r3, 0x80 | r3 &= 0x80;
0x0008e10a str r3, [sp, 0x8c] | var_8ch = r3;
0x0008e10c ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008e110 tst.w r3, 0x440 |
0x0008e114 ite eq |
| if ((r3 & 0x440) != 0) {
0x0008e116 moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 0x440) == 0) {
0x0008e118 movne r3, 0 | r3 = 0;
| }
0x0008e11a str r3, [sp, 0x50] | var_50h = r3;
0x0008e11c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008e11e cmp r3, 0 |
| if (r3 == 0) {
0x0008e120 beq.w 0x8e55e | goto label_82;
| }
0x0008e124 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0008e126 cmp r1, 0 |
0x0008e128 str r1, [sp, 0x34] | var_34h = r1;
| if (r1 <= 0) {
0x0008e12a ble.w 0x8e55e | goto label_82;
| }
0x0008e12e ldr r2, [r3] | r2 = *(r3);
0x0008e130 mov.w r0, -1 | r0 = -1;
0x0008e134 mov r3, r2 | r3 = r2;
0x0008e136 add.w r1, r2, r1, lsl 3 | r1 = r2 + (r1 << 3);
| do {
0x0008e13a str r0, [r3, 4] | *((r3 + 4)) = r0;
0x0008e13c adds r3, 8 | r3 += 8;
0x0008e13e cmp r1, r3 |
0x0008e140 bne 0x8e13a |
| } while (r1 != r3);
0x0008e142 ldr.w r6, [pc, 0x878] |
0x0008e146 adds r3, r2, 4 | r3 = r2 + 4;
0x0008e148 strd sl, fp, [sp, 0x5c] | __asm ("strd sl, fp, [var_5ch]");
0x0008e14c movs r7, 0 | r7 = 0;
0x0008e14e ldr.w fp, [sp, 0x50] | fp = var_50h;
0x0008e152 mov sl, r3 | sl = r3;
0x0008e154 add r6, pc | r6 = 0x11cb16;
0x0008e156 mov.w r2, -1 | r2 = -1;
0x0008e15a str r2, [sp, 0x48] | var_48h = r2;
0x0008e15c str r4, [sp, 0x58] | var_58h = r4;
| label_1:
0x0008e15e cmp.w r8, 0 |
| if (r8 <= 0) {
0x0008e162 ble 0x8e1a2 | goto label_8;
| }
0x0008e164 ldr r3, [sl, -0x4] | r3 = *((sl - 0x4));
0x0008e168 movs r4, 0 | r4 = 0;
0x0008e16a ldr.w r5, [sb, 4] | r5 = *((sb + 4));
0x0008e16e mov ip, r7 |
0x0008e170 add.w lr, r3, -1 | lr = r3 + -1;
| label_0:
0x0008e174 ldr r7, [r5] | r7 = *(r5);
0x0008e176 mov r0, lr | r0 = lr;
0x0008e178 subs r1, r7, 1 | r1 = r7 - 1;
| do {
| label_6:
0x0008e17a ldrb r3, [r0, 1]! | r3 = *((r0 += 1));
0x0008e17e ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x0008e182 cmp r3, r2 |
| if (r3 == r2) {
0x0008e184 beq.w 0x8e50c | goto label_83;
| }
0x0008e188 add r3, r6 | r3 += r6;
0x0008e18a add r2, r6 | r2 += r6;
0x0008e18c ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x0008e190 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x0008e194 cmp r3, r2 |
0x0008e196 beq 0x8e17a |
| } while (r3 == r2);
0x0008e198 adds r4, 1 | r4++;
0x0008e19a adds r5, 0x14 | r5 += 0x14;
0x0008e19c cmp r8, r4 |
| if (r8 != r4) {
0x0008e19e bne 0x8e174 | goto label_0;
| }
0x0008e1a0 mov r7, ip | r7 = ip;
| label_8:
0x0008e1a2 ldr r5, [sl, -0x4] | r5 = *((sl - 0x4));
0x0008e1a6 mov r0, r5 | r0 = r5;
0x0008e1a8 bl 0x1fe40 | fcn_0001fe40 (r0);
0x0008e1ac ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0008e1ae subs r0, 0 |
0x0008e1b0 it ne |
| if (r0 == 0) {
0x0008e1b2 movne r0, 1 | r0 = 1;
| }
0x0008e1b4 cmp r3, 0 |
0x0008e1b6 it ne |
| if (r3 == 0) {
0x0008e1b8 movne r0, 0 | r0 = 0;
| }
0x0008e1ba cmp r0, 0 |
| if (r0 == 0) {
0x0008e1bc beq.w 0x8e768 | goto label_84;
| }
0x0008e1c0 mov.w fp, 0 |
0x0008e1c4 str r7, [sp, 0x48] | var_48h = r7;
| label_7:
0x0008e1c6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008e1c8 adds r7, 1 | r7++;
0x0008e1ca add.w sl, sl, 8 | sl += 8;
0x0008e1ce cmp r7, r3 |
| if (r7 != r3) {
0x0008e1d0 bne 0x8e15e | goto label_1;
| }
0x0008e1d2 str.w fp, [sp, 0x50] | __asm ("str.w fp, [var_50h]");
0x0008e1d6 ldr r4, [sp, 0x58] | r4 = var_58h;
0x0008e1d8 ldrd sl, fp, [sp, 0x5c] | __asm ("ldrd sl, fp, [var_5ch]");
| label_11:
0x0008e1dc ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008e1de ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008e1e0 adds r3, 1 | r3++;
0x0008e1e2 str r3, [sp, 0x78] | var_78h = r3;
0x0008e1e4 cmp r2, 0 |
| if (r2 == 0) {
0x0008e1e6 beq.w 0x8e724 | goto label_85;
| }
0x0008e1ea ldr r5, [r4, 0x2c] | r5 = *((r4 + 0x2c));
0x0008e1ec movs r3, 0 | r3 = 0;
0x0008e1ee ldr.w r6, [sl, 0x6c] | r6 = *((sl + 0x6c));
0x0008e1f2 movs r1, 0xd | r1 = 0xd;
0x0008e1f4 mov r0, sl | r0 = sl;
0x0008e1f6 adds r5, 1 | r5++;
0x0008e1f8 adds r7, r6, 1 | r7 = r6 + 1;
0x0008e1fa mov r2, r5 | r2 = r5;
0x0008e1fc str r5, [r4, 0x2c] | *((r4 + 0x2c)) = r5;
0x0008e1fe str r7, [sp] | *(sp) = r7;
0x0008e200 movs r7, 0 | r7 = 0;
0x0008e202 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008e206 ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
0x0008e20a add r2, sp, 0xb0 | r2 += var_b0h;
0x0008e20c ldr r0, [sp, 0x50] | r0 = var_50h;
0x0008e20e ldr r1, [sp, 0x30] | r1 = var_30h;
0x0008e210 str r3, [sp, 0xc0] | var_c0h = r3;
0x0008e212 ldr r3, [sp, 0x78] | r3 = var_78h;
0x0008e214 cmp r0, 0 |
0x0008e216 it eq |
| if (r0 != 0) {
0x0008e218 moveq r3, r7 | r3 = r7;
| }
0x0008e21a mov r0, r4 | r0 = r4;
0x0008e21c str r5, [sp, 0xb4] | var_b4h = r5;
0x0008e21e str r3, [sp, 0xbc] | var_bch = r3;
0x0008e220 movs r3, 0xd | r3 = 0xd;
0x0008e222 strb.w r3, [sp, 0xb0] | var_b0h = r3;
0x0008e226 str r7, [sp, 0xb8] | var_b8h = r7;
0x0008e228 str r7, [sp, 0xc4] | var_c4h = r7;
0x0008e22a bl 0x5f5e0 | fcn_0005f5e0 (r0, r1, r2, r3, r4, r5, r6);
0x0008e22e ldr r3, [sp, 0xbc] | r3 = var_bch;
0x0008e230 str r3, [sp, 0x74] | var_74h = r3;
0x0008e232 mov r3, r0 | r3 = r0;
0x0008e234 cmp r0, 0 |
| if (r0 != 0) {
0x0008e236 bne.w 0x8e720 | goto label_86;
| }
0x0008e23a ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0008e23c ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0008e240 str r2, [sp, 0x50] | var_50h = r2;
0x0008e242 cmp r2, 0 |
| if (r2 != 0) {
0x0008e244 bne.w 0x8e71c | goto label_87;
| }
0x0008e248 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0008e24a str r3, [sp, 0x60] | var_60h = r3;
0x0008e24c cmp r3, 0 |
| if (r3 != 0) {
0x0008e24e bne.w 0x8e71a | goto label_88;
| }
0x0008e252 mov r1, r5 | r1 = r5;
0x0008e254 mov r0, sl | r0 = sl;
0x0008e256 bl 0x2b650 | fcn_0002b650 (r0, r1, r2);
0x0008e25a ldr.w r3, [sl] | r3 = *(sl);
0x0008e25e cmp r6, r7 |
0x0008e260 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008e264 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008e268 it lt |
| if (r6 >= r7) {
0x0008e26a addlt r6, r2, -1 | r6 = r2 + -1;
| }
0x0008e26e cmp r3, 0 |
| if (r3 != 0) {
0x0008e270 bne.w 0x8ede2 | goto label_89;
| }
0x0008e274 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008e278 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x0008e27c add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
| label_40:
0x0008e280 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0008e282 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008e284 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0008e286 ldr r3, [r3] | r3 = *(r3);
0x0008e288 str r3, [sp, 0x5c] | var_5ch = r3;
0x0008e28a ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0008e28c cmp r3, 0 |
| if (r3 == 0) {
0x0008e28e beq.w 0x8ed36 | goto label_90;
| }
| label_36:
0x0008e292 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0008e294 mov r2, r3 | r2 = r3;
0x0008e296 str r3, [sp, 0x60] | var_60h = r3;
0x0008e298 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008e29a adds r2, 1 | r2++;
0x0008e29c str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0008e29e cmp r3, 0 |
| if (r3 == 0) {
0x0008e2a0 beq.w 0x8ed24 | goto label_91;
| }
0x0008e2a4 subs r2, r3, 1 | r2 = r3 - 1;
0x0008e2a6 uxtb r2, r2 | r2 = (int8_t) r2;
0x0008e2a8 add.w r1, r4, r2, lsl 2 | r1 = r4 + (r2 << 2);
0x0008e2ac strb r2, [r4, 0x13] | *((r4 + 0x13)) = r2;
0x0008e2ae ldr.w r7, [r1, 0x94] | r7 = *((r1 + 0x94));
0x0008e2b2 cmp r2, 0 |
| if (r2 == 0) {
0x0008e2b4 beq.w 0x8f364 | goto label_92;
| }
0x0008e2b8 subs r3, 2 | r3 -= 2;
0x0008e2ba uxtb r3, r3 | r3 = (int8_t) r3;
0x0008e2bc strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x0008e2be add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x0008e2c2 ldr.w r8, [r3, 0x94] | r8 = *((r3 + 0x94));
| label_35:
0x0008e2c6 movs r6, 0 | r6 = 0;
0x0008e2c8 ldrd r3, r2, [sp, 0x5c] | __asm ("ldrd r3, r2, [var_5ch]");
0x0008e2cc movs r1, 0x70 | r1 = 0x70;
0x0008e2ce mov r0, sl | r0 = sl;
0x0008e2d0 str r6, [sp] | *(sp) = r6;
0x0008e2d2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008e2d6 ldrd r5, r3, [sl, 0x6c] | __asm ("ldrd r5, r3, [sl, 0x6c]");
0x0008e2da ldr r2, [sp, 0xb4] | r2 = var_b4h;
0x0008e2dc cmp r5, r3 |
| if (r5 >= r3) {
0x0008e2de bge.w 0x8f352 | goto label_93;
| }
0x0008e2e2 add.w r3, r5, r5, lsl 2 | r3 = r5 + (r5 << 2);
0x0008e2e6 ldr.w r0, [sl, 0x68] | r0 = *((sl + 0x68));
0x0008e2ea adds r1, r5, 1 | r1 = r5 + 1;
0x0008e2ec lsls r3, r3, 2 | r3 <<= 2;
0x0008e2ee str.w r1, [sl, 0x6c] | __asm ("str.w r1, [sl, 0x6c]");
0x0008e2f2 mov.w ip, 0xe |
0x0008e2f6 adds r1, r0, r3 | r1 = r0 + r3;
0x0008e2f8 strd r2, r6, [r1, 4] | __asm ("strd r2, r6, [r1, 4]");
0x0008e2fc strd r6, r6, [r1, 0xc] | __asm ("strd r6, r6, [r1, 0xc]");
0x0008e300 str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
| label_58:
0x0008e304 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008e306 movs r1, 0x5d | r1 = 0x5d;
0x0008e308 ldr r2, [sp, 0x74] | r2 = var_74h;
0x0008e30a mov r0, sl | r0 = sl;
0x0008e30c str r7, [sp] | *(sp) = r7;
0x0008e30e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008e312 ldr r6, [sp, 0x60] | r6 = var_60h;
0x0008e314 movs r3, 0 | r3 = 0;
0x0008e316 movs r1, 0x7b | r1 = 0x7b;
0x0008e318 str r3, [sp] | *(sp) = r3;
0x0008e31a mov r0, sl | r0 = sl;
0x0008e31c mov r3, r8 | r3 = r8;
0x0008e31e mov r2, r6 | r2 = r6;
0x0008e320 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008e324 mov r3, r7 | r3 = r7;
0x0008e326 mov r2, r6 | r2 = r6;
0x0008e328 movs r1, 0x7c | r1 = 0x7c;
0x0008e32a mov r0, sl | r0 = sl;
0x0008e32c str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0008e330 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008e334 mov r1, r5 | r1 = r5;
0x0008e336 mov r0, sl | r0 = sl;
0x0008e338 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0008e33c ldr.w r3, [sl] | r3 = *(sl);
0x0008e340 cmp r5, 0 |
0x0008e342 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008e346 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008e34a it lt |
| if (r5 >= 0) {
0x0008e34c addlt r5, r2, -1 | r5 = r2 + -1;
| }
0x0008e350 cmp r3, 0 |
| if (r3 != 0) {
0x0008e352 bne.w 0x8f348 | goto label_94;
| }
0x0008e356 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008e35a add.w r5, r5, r5, lsl 2 | r5 += (r5 << 2);
0x0008e35e add.w r3, r3, r5, lsl 2 | r3 += (r5 << 2);
| label_57:
0x0008e362 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0008e364 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008e366 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008e368 cmp r3, 0 |
0x0008e36a ite le |
| if (r3 > 0) {
0x0008e36c movle r3, 0 | r3 = 0;
| }
| if (r3 <= 0) {
0x0008e36e movgt r3, 1 | r3 = 1;
| }
0x0008e370 cmp r2, 0 |
0x0008e372 it ne |
| if (r2 == 0) {
0x0008e374 movne r3, 0 | r3 = 0;
| }
0x0008e376 mov ip, r3 |
| if (r7 != 0) {
0x0008e378 cbz r7, 0x8e38e |
0x0008e37a ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008e37c cmp r3, 7 |
| if (r3 > 7) {
0x0008e37e bhi.w 0x8ee38 | goto label_95;
| }
0x0008e382 add.w r2, r4, r3, lsl 2 | r2 = r4 + (r3 << 2);
0x0008e386 adds r3, 1 | r3++;
0x0008e388 strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x0008e38a str.w r7, [r2, 0x94] | __asm ("str.w r7, [r2, 0x94]");
| }
0x0008e38e cmp.w r8, 0 |
| if (r8 == 0) {
0x0008e392 beq.w 0x8ee38 | goto label_95;
| }
0x0008e396 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008e398 cmp r3, 7 |
| if (r3 > 7) {
0x0008e39a bhi.w 0x8ee38 | goto label_95;
| }
0x0008e39e add.w r2, r4, r3, lsl 2 | r2 = r4 + (r3 << 2);
0x0008e3a2 adds r3, 1 | r3++;
0x0008e3a4 strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x0008e3a6 movs r3, 1 | r3 = 1;
0x0008e3a8 str.w r8, [r2, 0x94] | __asm ("str.w r8, [r2, 0x94]");
0x0008e3ac str r3, [sp, 0x50] | var_50h = r3;
| label_15:
0x0008e3ae cmp.w ip, 0 |
| if (ip == 0) {
0x0008e3b2 beq.w 0x8e790 | goto label_96;
| }
0x0008e3b6 ldrsh.w r5, [sb, 0x28] | r5 = *((sb + 0x28));
0x0008e3ba ldr.w r1, [sb, 0x24] | r1 = *((sb + 0x24));
0x0008e3be cmp r5, 0 |
0x0008e3c0 str r5, [sp, 0x48] | var_48h = r5;
| if (r5 < 0) {
0x0008e3c2 blt 0x8e3ec | goto label_97;
| }
0x0008e3c4 tst.w r1, 0x60 |
| if ((r1 & 0x60) == 0) {
0x0008e3c8 beq 0x8e3ec | goto label_97;
| }
| if (r5 == 0) {
0x0008e3ca cbz r5, 0x8e3ec | goto label_97;
| }
0x0008e3cc ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0008e3d0 add.w r3, r5, r5, lsl 2 | r3 = r5 + (r5 << 2);
0x0008e3d4 add.w r3, r0, r3, lsl 2 | r3 = r0 + (r3 << 2);
| do {
0x0008e3d8 ldrh r2, [r3, -0x4] | r2 = *((r3 - 0x4));
0x0008e3dc and r2, r2, 0x60 | r2 &= 0x60;
| if (r2 != 0) {
0x0008e3e0 cbz r2, 0x8e3e4 |
0x0008e3e2 subs r5, 1 | r5--;
| }
0x0008e3e4 subs r3, 0x14 | r3 -= 0x14;
0x0008e3e6 cmp r0, r3 |
0x0008e3e8 bne 0x8e3d8 |
| } while (r0 != r3);
0x0008e3ea str r5, [sp, 0x48] | var_48h = r5;
| label_97:
0x0008e3ec tst.w r1, 0x62 |
0x0008e3f0 ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
| if ((r1 & 0x62) == 0) {
0x0008e3f4 beq 0x8e418 | goto label_98;
| }
0x0008e3f6 cmp r3, 0 |
| if (r3 <= 0) {
0x0008e3f8 ble 0x8e418 | goto label_98;
| }
0x0008e3fa ldr.w r2, [sb, 4] | r2 = *((sb + 4));
0x0008e3fe movs r0, 0x14 | r0 = 0x14;
0x0008e400 movs r1, 0 | r1 = 0;
0x0008e402 smlabb r0, r3, r0, r2 | __asm ("smlabb r0, r3, r0, r2");
| do {
0x0008e406 ldrh r5, [r2, 0x10] | r5 = *((r2 + 0x10));
0x0008e408 and r5, r5, 0x62 | r5 &= 0x62;
| if (r5 != 0) {
0x0008e40c cbz r5, 0x8e410 |
0x0008e40e adds r1, 1 | r1++;
| }
0x0008e410 adds r2, 0x14 | r2 += 0x14;
0x0008e412 cmp r0, r2 |
0x0008e414 bne 0x8e406 |
| } while (r0 != r2);
0x0008e416 subs r3, r3, r1 | r3 -= r1;
| label_98:
0x0008e418 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0008e41a cmp r2, r3 |
| if (r2 != r3) {
0x0008e41c bne.w 0x8f4a2 | goto label_99;
| }
| label_16:
0x0008e420 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008e422 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x0008e424 ands r3, r3, 1 | r3 &= 1;
| if (r3 == r3) {
0x0008e428 beq.w 0x8f486 | goto label_100;
| }
0x0008e42c ldrb r2, [r4, 0x12] | r2 = *((r4 + 0x12));
0x0008e42e cmp r2, 0 |
| if (r2 != 0) {
0x0008e430 bne.w 0x8f4ba | goto label_101;
| }
0x0008e434 ldr r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x0008e436 cmp r3, 0 |
| if (r3 == 0) {
0x0008e438 beq.w 0x8f480 | goto label_102;
| }
0x0008e43c str r2, [sp, 0x6c] | var_6ch = r2;
| label_68:
0x0008e43e ldr r3, [sp, 0x68] | r3 = var_68h;
0x0008e440 cmp r3, 0 |
| if (r3 == 0) {
0x0008e442 beq.w 0x8f406 | goto label_103;
| }
0x0008e446 movs r3, 0 | r3 = 0;
0x0008e448 str r3, [sp, 0x34] | var_34h = r3;
| label_67:
0x0008e44a ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008e44c cmp r3, 0 |
| if (r3 == 0) {
0x0008e44e beq.w 0x8e9e6 | goto label_104;
| }
0x0008e452 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008e456 cmp r3, 0 |
| if (r3 != 0) {
0x0008e458 bne.w 0x8f4c2 | goto label_105;
| }
0x0008e45c ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x0008e460 cmp r3, 0 |
| if (r3 != 0) {
0x0008e462 bne.w 0x8f472 | goto label_106;
| }
0x0008e466 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0008e468 ldr r2, [r2] | r2 = *(r2);
0x0008e46a cmp r2, 0 |
| if (r2 == 0) {
0x0008e46c beq.w 0x8e7f0 | goto label_107;
| }
0x0008e470 ldr r0, [r2] | r0 = *(r2);
0x0008e472 cmp r0, 0 |
| if (r0 > 0) {
0x0008e474 bgt 0x8e47e | goto label_108;
| }
0x0008e476 b 0x8e7f0 | goto label_107;
| do {
0x0008e478 cmp r3, r0 |
| if (r3 == r0) {
0x0008e47a beq.w 0x8e7f0 | goto label_107;
| }
| label_108:
0x0008e47e adds r3, 1 | r3++;
0x0008e480 add.w r1, r2, r3, lsl 4 | r1 = r2 + (r3 << 4);
0x0008e484 ldrb r5, [r1, 1] | r5 = *((r1 + 1));
0x0008e486 lsls r5, r5, 0x1a | r5 <<= 0x1a;
0x0008e488 bpl 0x8e478 |
| } while (r5 >= r5);
0x0008e48a ldrb r3, [r1] | r3 = *(r1);
0x0008e48c cmp r3, 0 |
| if (r3 == 0) {
0x0008e48e beq.w 0x8e9aa | goto label_109;
| }
0x0008e492 cmp r3, 3 |
| if (r3 == 3) {
0x0008e494 beq.w 0x8e9aa | goto label_109;
| }
0x0008e498 ldr.w r2, [pc, 0x524] |
0x0008e49c add r2, pc | r2 = 0x11ce60;
| label_26:
0x0008e49e ldr.w r1, [pc, 0x524] |
0x0008e4a2 mov r0, r4 | r0 = r4;
0x0008e4a4 add r1, pc | r1 = 0x11ce6e;
0x0008e4a6 bl 0x25778 | fcn_00025778 (r0);
| label_18:
0x0008e4aa ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008e4ac ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008e4ae bl 0x18a68 | fcn_00018a68 (r0, r1);
0x0008e4b2 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008e4b4 cmp r3, 0 |
| if (r3 != 0) {
0x0008e4b6 bne.w 0x8dff0 | goto label_2;
| }
0x0008e4ba b 0x8e008 | goto label_3;
| label_72:
0x0008e4bc ldr r3, [r2, 0x34] | r3 = *((r2 + 0x34));
0x0008e4be cmp r3, 0 |
| if (r3 != 0) {
0x0008e4c0 bne.w 0x8df8e | goto label_4;
| }
0x0008e4c4 mov r3, r2 | r3 = r2;
0x0008e4c6 ldr r2, [r2, 0x1c] | r2 = *((r2 + 0x1c));
0x0008e4c8 mov r1, r3 | r1 = r3;
0x0008e4ca ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008e4cc str r2, [sp, 0x44] | var_44h = r2;
0x0008e4ce ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008e4d0 str r2, [r3, 0x1c] | *((r3 + 0x1c)) = r2;
0x0008e4d2 movs r2, 1 | r2 = 1;
0x0008e4d4 bl 0x18b24 | fcn_00018b24 (r0, r1, r2);
0x0008e4d8 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008e4da mov r0, r4 | r0 = r4;
0x0008e4dc bl 0x89738 | fcn_00089738 (r0, r1);
0x0008e4e0 str r0, [sp, 0x30] | var_30h = r0;
0x0008e4e2 cmp r0, 0 |
| if (r0 != 0) {
0x0008e4e4 bne.w 0x8ee40 | goto label_110;
| }
0x0008e4e8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008e4ea str r3, [sp, 0x34] | var_34h = r3;
0x0008e4ec b 0x8dfe4 | void (*0x8dfe4)() ();
| label_77:
0x0008e4ee str r5, [sp, 0x34] | var_34h = r5;
0x0008e4f0 b 0x8dfe4 | void (*0x8dfe4)() ();
| label_79:
0x0008e4f2 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0008e4f4 cmp r3, 0 |
| if (r3 == 0) {
0x0008e4f6 beq.w 0x8e70c | goto label_111;
| }
| label_14:
0x0008e4fa mov r0, r4 | r0 = r4;
0x0008e4fc bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x0008e500 mov sl, r0 | sl = r0;
0x0008e502 cmp r0, 0 |
| if (r0 != 0) {
0x0008e504 bne.w 0x8e0a8 | goto label_5;
| }
0x0008e508 str r0, [sp, 0x34] | var_34h = r0;
0x0008e50a b 0x8dfe4 | void (*0x8dfe4)() ();
| label_83:
0x0008e50c cmp r3, 0 |
| if (r3 != 0) {
0x0008e50e bne.w 0x8e17a | goto label_6;
| }
0x0008e512 mov r2, ip | r2 = ip;
0x0008e514 mov ip, r7 |
0x0008e516 mov r7, r2 | r7 = r2;
0x0008e518 ldrh r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0008e51a ldr r0, [sp, 0x48] | r0 = var_48h;
0x0008e51c cmp r4, r7 |
0x0008e51e it ne |
| if (r4 == r7) {
0x0008e520 movne fp, 0 |
| }
0x0008e524 ldrsh.w r1, [sb, 0x28] | r1 = *((sb + 0x28));
0x0008e528 and r2, r2, 0x60 | r2 &= 0x60;
0x0008e52c str.w r4, [sl] | __asm ("str.w r4, [sl]");
0x0008e530 cmp r1, r4 |
0x0008e532 it eq |
| if (r1 != r4) {
0x0008e534 moveq r0, r7 | r0 = r7;
| }
0x0008e536 str r0, [sp, 0x48] | var_48h = r0;
0x0008e538 cmp r2, 0 |
| if (r2 != 0) {
0x0008e53a bne.w 0x8e6fa | goto label_112;
| }
0x0008e53e cmp r8, r4 |
| if (r8 > r4) {
0x0008e540 bgt.w 0x8e1c6 | goto label_7;
| }
0x0008e544 b 0x8e1a2 | goto label_8;
| label_78:
0x0008e546 str r6, [sp, 0x34] | var_34h = r6;
0x0008e548 b 0x8dfe4 | void (*0x8dfe4)() ();
| label_81:
0x0008e54a ldr r3, [sp, 0x80] | r3 = var_80h;
0x0008e54c str r3, [sp, 0x54] | var_54h = r3;
0x0008e54e b 0x8e104 | goto label_9;
| label_73:
0x0008e550 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008e552 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008e554 str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h]");
0x0008e558 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x0008e55c b 0x8e004 | goto label_10;
| label_82:
0x0008e55e mov.w r3, -1 | r3 = -1;
0x0008e562 str r3, [sp, 0x48] | var_48h = r3;
0x0008e564 b 0x8e1dc | goto label_11;
| label_80:
0x0008e566 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008e568 ldr r3, [r4] | r3 = *(r4);
0x0008e56a str r3, [sp, 0x34] | var_34h = r3;
0x0008e56c cmp r2, 0 |
| if (r2 == 0) {
0x0008e56e beq.w 0x8e0d4 | goto label_12;
| }
0x0008e572 ldr.w r3, [r4, 0x104] | r3 = *((r4 + 0x104));
0x0008e576 cmp r3, 0 |
| if (r3 != 0) {
0x0008e578 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e57c ldr r3, [r2, 0x40] | r3 = *((r2 + 0x40));
0x0008e57e cmp r3, 0 |
| if (r3 != 0) {
0x0008e580 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e584 ldrb.w r1, [r4, 0x93] | r1 = *((r4 + 0x93));
0x0008e588 mov r2, sb | r2 = sb;
0x0008e58a ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008e58c bl 0x1a618 | r0 = fcn_0001a618 (r0, r1, r2, r3);
0x0008e590 cmp r0, 0 |
| if (r0 != 0) {
0x0008e592 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e596 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008e59a cmp r3, 0 |
| if (r3 != 0) {
0x0008e59c bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5a0 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x0008e5a2 cmp r3, 0xb |
| if (r3 == 0xb) {
0x0008e5a4 beq.w 0x8ecfe | goto label_113;
| }
0x0008e5a8 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x0008e5aa str r3, [sp, 0x5c] | var_5ch = r3;
| label_33:
0x0008e5ac ldr r1, [sp, 0x30] | r1 = var_30h;
0x0008e5ae ldr r2, [r1, 0x20] | r2 = *((r1 + 0x20));
0x0008e5b0 ldr r3, [r2] | r3 = *(r2);
0x0008e5b2 cmp r3, 1 |
| if (r3 != 1) {
0x0008e5b4 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5b8 ldr r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
0x0008e5ba cmp r3, 0 |
| if (r3 != 0) {
0x0008e5bc bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5c0 ldr r3, [r1, 0x24] | r3 = *((r1 + 0x24));
0x0008e5c2 cmp r3, 0 |
| if (r3 != 0) {
0x0008e5c4 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5c8 ldr r3, [r1, 0x30] | r3 = *((r1 + 0x30));
0x0008e5ca cmp r3, 0 |
| if (r3 != 0) {
0x0008e5cc bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5d0 ldr r3, [r1, 0x28] | r3 = *((r1 + 0x28));
0x0008e5d2 cmp r3, 0 |
| if (r3 != 0) {
0x0008e5d4 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5d8 ldr r3, [r1, 0x3c] | r3 = *((r1 + 0x3c));
0x0008e5da cmp r3, 0 |
| if (r3 != 0) {
0x0008e5dc bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5e0 ldr r3, [r1, 0x34] | r3 = *((r1 + 0x34));
0x0008e5e2 cmp r3, 0 |
| if (r3 != 0) {
0x0008e5e4 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5e8 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0008e5ea lsls r7, r3, 0x1f | r7 = r3 << 0x1f;
| if (r7 < r3) {
0x0008e5ec bmi.w 0x8e0d4 | goto label_12;
| }
0x0008e5f0 ldr r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x0008e5f2 ldr r1, [r3] | r1 = *(r3);
0x0008e5f4 cmp r1, 1 |
| if (r1 != 1) {
0x0008e5f6 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e5fa ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0008e5fc ldrb r3, [r3] | r3 = *(r3);
0x0008e5fe cmp r3, 0xb3 |
| if (r3 != 0xb3) {
0x0008e600 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e604 adds r2, 8 | r2 += 8;
0x0008e606 movs r1, 0 | r1 = 0;
0x0008e608 mov r0, r4 | r0 = r4;
0x0008e60a bl 0x89708 | r0 = fcn_00089708 (r0, r1, r2);
0x0008e60e mov r8, r0 | r8 = r0;
0x0008e610 cmp r0, 0 |
| if (r0 == 0) {
0x0008e612 beq.w 0x8e0d4 | goto label_12;
| }
0x0008e616 ldr r2, [r0, 0x1c] | r2 = *((r0 + 0x1c));
0x0008e618 ldr.w r3, [sb, 0x1c] | r3 = *((sb + 0x1c));
0x0008e61c cmp r2, r3 |
| if (r2 == r3) {
0x0008e61e beq.w 0x8ecee | goto label_114;
| }
| label_32:
0x0008e622 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008e626 eor r3, r3, 0x80 | r3 ^= 0x80;
0x0008e62a ubfx r2, r3, 7, 1 | r2 = (r3 >> 7) & ((1 << 1) - 1);
0x0008e62e ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0008e632 eor r3, r3, 0x80 | r3 ^= 0x80;
0x0008e636 ubfx r3, r3, 7, 1 | r3 = (r3 >> 7) & ((1 << 1) - 1);
0x0008e63a cmp r2, r3 |
| if (r2 != r3) {
0x0008e63c bne.w 0x8e0d4 | goto label_12;
| }
0x0008e640 ldr.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x0008e644 cmp r3, 0 |
| if (r3 != 0) {
0x0008e646 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e64a ldr.w r7, [r8, 0xc] | r7 = *((r8 + 0xc));
0x0008e64e cmp r7, 0 |
| if (r7 != 0) {
0x0008e650 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e654 ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
0x0008e658 ldrsh.w r2, [r8, 0x2a] | r2 = *((r8 + 0x2a));
0x0008e65c cmp r1, r2 |
| if (r1 != r2) {
0x0008e65e bne.w 0x8e0d4 | goto label_12;
| }
0x0008e662 ldrsh.w r0, [sb, 0x28] | r0 = *((sb + 0x28));
0x0008e666 ldrsh.w r2, [r8, 0x28] | r2 = *((r8 + 0x28));
0x0008e66a cmp r0, r2 |
| if (r0 != r2) {
0x0008e66c bne.w 0x8e0d4 | goto label_12;
| }
0x0008e670 b 0x8e6aa | goto label_115;
| label_13:
0x0008e672 ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x0008e674 ldrb r3, [r6, 0xd] | r3 = *((r6 + 0xd));
0x0008e676 cmp r2, r3 |
| if (r2 != r3) {
0x0008e678 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e67c ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x0008e67e ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0008e680 blx 0x831c | r0 = fcn_0000831c ();
0x0008e684 cmp r0, 0 |
| if (r0 != 0) {
0x0008e686 bne.w 0x8e0d4 | goto label_12;
| }
0x0008e68a ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
| if (r3 == 0) {
0x0008e68c cbz r3, 0x8e696 | goto label_116;
| }
0x0008e68e ldrb r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0008e690 cmp r3, 0 |
| if (r3 == 0) {
0x0008e692 beq.w 0x8e0d4 | goto label_12;
| }
| label_116:
0x0008e696 ldrh r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0008e698 and r3, r3, 0x60 | r3 &= 0x60;
| if (r3 == 0) {
0x0008e69c cbnz r3, 0x8e6a4 |
0x0008e69e cmp r7, 0 |
| if (r7 != 0) {
0x0008e6a0 bne.w 0x8ecbc | goto label_117;
| }
| }
| label_31:
0x0008e6a4 ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
0x0008e6a8 adds r7, 1 | r7++;
| label_115:
0x0008e6aa cmp r7, r1 |
| if (r7 >= r1) {
0x0008e6ac bge.w 0x8edf6 | goto label_118;
| }
0x0008e6b0 movs r3, 0x14 | r3 = 0x14;
0x0008e6b2 ldr.w r5, [sb, 4] | r5 = *((sb + 4));
0x0008e6b6 mul r3, r3, r7 | r3 *= r7;
0x0008e6ba ldr.w r6, [r8, 4] | r6 = *((r8 + 4));
0x0008e6be add r5, r3 | r5 += r3;
0x0008e6c0 add r6, r3 | r6 += r3;
0x0008e6c2 ldrh r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0008e6c4 ldrh r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0008e6c6 eors r3, r2 | r3 ^= r2;
0x0008e6c8 tst.w r3, 0x60 |
| if ((r3 & 0x60) != 0) {
0x0008e6cc bne.w 0x8e0d4 | goto label_12;
| }
0x0008e6d0 tst.w r2, 0x60 |
| if ((r2 & 0x60) == 0) {
0x0008e6d4 beq 0x8e672 | goto label_13;
| }
0x0008e6d6 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0008e6d8 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x0008e6da cmp r1, 0 |
| if (r1 == 0) {
0x0008e6dc beq.w 0x8ee30 | goto label_119;
| }
0x0008e6e0 clz r0, r2 | r0 &= r2;
0x0008e6e4 lsrs r0, r0, 5 | r0 >>= 5;
0x0008e6e6 cmp r2, 0 |
| if (r2 == 0) {
0x0008e6e8 beq.w 0x8ee30 | goto label_119;
| }
0x0008e6ec mov.w r3, -1 | r3 = -1;
0x0008e6f0 bl 0x35ca8 | r0 = fcn_00035ca8 (r0, r1, r2, r3);
0x0008e6f4 cmp r0, 0 |
| if (r0 == 0) {
0x0008e6f6 beq 0x8e672 | goto label_13;
| }
0x0008e6f8 b 0x8e0d4 | goto label_12;
| label_112:
0x0008e6fa ldr r4, [sp, 0x58] | r4 = var_58h;
0x0008e6fc mov r2, ip | r2 = ip;
0x0008e6fe ldr r1, [pc, 0x2c8] |
0x0008e700 str r3, [sp, 0x34] | var_34h = r3;
0x0008e702 mov r0, r4 | r0 = r4;
0x0008e704 add r1, pc | r1 = 0x11d0d2;
0x0008e706 bl 0x25778 | fcn_00025778 (r0);
0x0008e70a b 0x8dfe4 | void (*0x8dfe4)() ();
| label_111:
0x0008e70c ldr r3, [r4] | r3 = *(r4);
0x0008e70e ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0008e710 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x0008e712 itt pl |
| if (r3 < r3) {
0x0008e714 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x0008e716 strbpl r3, [r4, 0x17] | *((r4 + 0x17)) = r3;
| }
0x0008e718 b 0x8e4fa | goto label_14;
| label_88:
0x0008e71a ldr r3, [sp, 0x50] | r3 = var_50h;
| label_87:
0x0008e71c str r3, [sp, 0x34] | var_34h = r3;
0x0008e71e b 0x8dfe4 | void (*0x8dfe4)() ();
| label_86:
0x0008e720 str r7, [sp, 0x34] | var_34h = r7;
0x0008e722 b 0x8dfe4 | void (*0x8dfe4)() ();
| label_85:
0x0008e724 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008e726 add r0, sp, 0xcc | r0 += var_cch;
0x0008e728 ldr r5, [sp, 0x30] | r5 = var_30h;
0x0008e72a strd r4, r5, [sp, 0xcc] | __asm ("strd r4, r5, [var_cch]");
0x0008e72e strd r5, r5, [sp, 0xd4] | __asm ("strd r5, r5, [var_d4h]");
0x0008e732 strd r5, r5, [sp, 0xdc] | __asm ("strd r5, r5, [var_dch]");
0x0008e736 strd r5, r5, [sp, 0xe4] | __asm ("strd r5, r5, [var_e4h]");
| if (r3 != 0) {
0x0008e73a cbz r3, 0x8e782 |
0x0008e73c ldr r6, [r3] | r6 = *(r3);
0x0008e73e mov r1, r3 | r1 = r3;
0x0008e740 str r6, [sp, 0x5c] | var_5ch = r6;
0x0008e742 bl 0x304f0 | fcn_000304f0 (r0, r1, r2);
0x0008e746 str r0, [sp, 0x74] | var_74h = r0;
0x0008e748 cmp r0, 0 |
| if (r0 != 0) {
0x0008e74a bne 0x8e7b2 | goto label_120;
| }
0x0008e74c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008e74e cmp r6, 0 |
0x0008e750 str r5, [sp, 0x50] | var_50h = r5;
0x0008e752 clz r3, r3 | r3 &= r3;
0x0008e756 lsr.w r3, r3, 5 | r3 >>= 5;
0x0008e75a it le |
| if (r6 > 0) {
0x0008e75c movle r3, 0 | r3 = 0;
| }
0x0008e75e mov ip, r3 |
0x0008e760 mov.w r3, -1 | r3 = -1;
0x0008e764 str r3, [sp, 0x60] | var_60h = r3;
0x0008e766 b 0x8e3ae | goto label_15;
| label_84:
0x0008e768 ldr r4, [sp, 0x58] | r4 = var_58h;
0x0008e76a mov r3, r5 | r3 = r5;
0x0008e76c ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008e76e ldr r1, [pc, 0x25c] |
0x0008e770 str r0, [sp, 0x34] | var_34h = r0;
0x0008e772 mov r0, r4 | r0 = r4;
0x0008e774 adds r2, 8 | r2 += 8;
0x0008e776 add r1, pc | r1 = 0x11d148;
0x0008e778 bl 0x25778 | fcn_00025778 (r0);
0x0008e77c movs r3, 1 | r3 = 1;
0x0008e77e strb r3, [r4, 0x11] | *((r4 + 0x11)) = r3;
0x0008e780 b 0x8dfe4 | void (*0x8dfe4)() ();
| }
0x0008e782 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008e784 str r3, [sp, 0x74] | var_74h = r3;
0x0008e786 str r3, [sp, 0x50] | var_50h = r3;
0x0008e788 str r3, [sp, 0x5c] | var_5ch = r3;
0x0008e78a mov.w r3, -1 | r3 = -1;
0x0008e78e str r3, [sp, 0x60] | var_60h = r3;
| label_96:
0x0008e790 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008e792 cmp r3, 0 |
| if (r3 == 0) {
0x0008e794 beq.w 0x8e420 | goto label_16;
| }
0x0008e798 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0008e79a ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0008e79c cmp r3, r2 |
| if (r3 == r2) {
0x0008e79e beq.w 0x8e420 | goto label_16;
| }
0x0008e7a2 ldr r1, [pc, 0x22c] |
0x0008e7a4 mov r0, r4 | r0 = r4;
0x0008e7a6 add r1, pc | r1 = 0x11d17c;
0x0008e7a8 bl 0x25778 | fcn_00025778 (r0);
0x0008e7ac movs r3, 0 | r3 = 0;
0x0008e7ae str r3, [sp, 0x34] | var_34h = r3;
0x0008e7b0 b 0x8dfe4 | void (*0x8dfe4)() ();
| label_120:
0x0008e7b2 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x0008e7b4 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008e7b6 mov r0, r4 | r0 = r4;
0x0008e7b8 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x0008e7bc ldr r1, [sp, 0x44] | r1 = var_44h;
0x0008e7be mov r0, r4 | r0 = r4;
0x0008e7c0 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x0008e7c4 ldr r1, [sp, 0x38] | r1 = var_38h;
| if (r1 == 0) {
0x0008e7c6 cbz r1, 0x8e7de | goto label_121;
| }
0x0008e7c8 mov r0, r4 | r0 = r4;
0x0008e7ca bl 0x18de4 | fcn_00018de4 (r0, r1);
0x0008e7ce ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0008e7d0 cmp r1, 0 |
| if (r1 == 0) {
0x0008e7d2 beq.w 0x8e034 | goto label_17;
| }
0x0008e7d6 mov r0, r4 | r0 = r4;
0x0008e7d8 bl 0x17b14 | fcn_00017b14 (r0, r1, r2);
0x0008e7dc b 0x8e034 | goto label_17;
| label_121:
0x0008e7de ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008e7e0 cmp r3, 0 |
| if (r3 == 0) {
0x0008e7e2 beq.w 0x8e034 | goto label_17;
| }
0x0008e7e6 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008e7e8 mov r1, r3 | r1 = r3;
0x0008e7ea bl 0x17b14 | fcn_00017b14 (r0, r1, r2);
0x0008e7ee b 0x8e034 | goto label_17;
| label_107:
0x0008e7f0 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008e7f2 mov r8, r4 | r8 = r4;
0x0008e7f4 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0008e7f6 strd sl, sb, [sp, 0x98] | __asm ("strd sl, sb, [var_98h]");
0x0008e7fa str r3, [r1, 0x30] | *((r1 + 0x30)) = r3;
0x0008e7fc ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008e7fe str r1, [sp, 0x94] | var_94h = r1;
0x0008e800 add r1, sp, 0xec | r1 += var_ech;
0x0008e802 str r1, [sp, 0x70] | var_70h = r1;
| label_23:
0x0008e804 ldr r1, [sp, 0x94] | r1 = var_94h;
0x0008e806 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0008e808 str r3, [r1, 0x28] | *((r1 + 0x28)) = r3;
0x0008e80a ldr r3, [sp, 0x78] | r3 = var_78h;
0x0008e80c str r0, [r1, 0x20] | *((r1 + 0x20)) = r0;
0x0008e80e str r3, [r1, 0x24] | *((r1 + 0x24)) = r3;
0x0008e810 ldr r3, [sp, 0xa8] | r3 = var_a8h;
0x0008e812 str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
0x0008e814 cmp r2, 0 |
| if (r2 == 0) {
0x0008e816 beq.w 0x8e940 | goto label_122;
| }
0x0008e81a movs r3, 0 | r3 = 0;
0x0008e81c strd r8, r0, [sp, 0xcc] | __asm ("strd r8, r0, [var_cch]");
0x0008e820 strd r3, r3, [sp, 0xd4] | __asm ("strd r3, r3, [var_d4h]");
0x0008e824 strd r3, r3, [sp, 0xdc] | __asm ("strd r3, r3, [var_dch]");
0x0008e828 strd r3, r3, [sp, 0xe4] | __asm ("strd r3, r3, [var_e4h]");
0x0008e82c str r3, [sp, 0x84] | var_84h = r3;
0x0008e82e str r1, [sp, 0x64] | var_64h = r1;
| label_22:
0x0008e830 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008e832 ldr r1, [r3] | r1 = *(r3);
0x0008e834 cmp r1, 0 |
| if (r1 == 0) {
0x0008e836 beq.w 0x8e940 | goto label_122;
| }
0x0008e83a add r4, sp, 0xcc | r4 += var_cch;
0x0008e83c mov r0, r4 | r0 = r4;
0x0008e83e bl 0x304f0 | r0 = fcn_000304f0 (r0, r1, r2);
0x0008e842 cmp r0, 0 |
| if (r0 != 0) {
0x0008e844 bne.w 0x8e4aa | goto label_18;
| }
0x0008e848 ldr r5, [sp, 0x64] | r5 = var_64h;
0x0008e84a mov r0, r4 | r0 = r4;
0x0008e84c ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x0008e84e bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x0008e852 cmp r0, 0 |
| if (r0 != 0) {
0x0008e854 bne.w 0x8e4aa | goto label_18;
| }
0x0008e858 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008e85a ldr r3, [r5] | r3 = *(r5);
0x0008e85c ldr r4, [r2, 0x18] | r4 = *((r2 + 0x18));
0x0008e85e ldr.w fp, [r2, 0x30] | fp = *((r2 + 0x30));
0x0008e862 str r3, [sp, 0x58] | var_58h = r3;
0x0008e864 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x0008e866 lsls r0, r2, 0x18 | r0 = r2 << 0x18;
| if (r0 >= r2) {
0x0008e868 bmi 0x8e880 |
0x0008e86a ldr r2, [r3] | r2 = *(r3);
0x0008e86c cmp r2, 1 |
| if (r2 != 1) {
0x0008e86e bne 0x8e880 | goto label_123;
| }
0x0008e870 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0008e872 ldrb r1, [r2] | r1 = *(r2);
0x0008e874 cmp r1, 0xa6 |
| if (r1 != 0xa6) {
0x0008e876 bne 0x8e880 | goto label_123;
| }
0x0008e878 ldrsh.w r2, [r2, 0x20] | r2 = *((r2 + 0x20));
0x0008e87c adds r2, 1 | r2++;
| if (r2 == 1) {
0x0008e87e beq 0x8e92e | goto label_25;
| }
| }
| label_123:
0x0008e880 movs r2, 0x68 | r2 = 0x68;
0x0008e882 ldr r0, [sp, 0x70] | r0 = var_70h;
0x0008e884 movs r1, 0 | r1 = 0;
0x0008e886 blx 0x8264 | fcn_00008264 ();
0x0008e88a movs r2, 0xa6 | r2 = 0xa6;
0x0008e88c add r3, sp, 0x120 | r3 += var_120h;
0x0008e88e strb.w r2, [sp, 0x120] | var_120h = r2;
0x0008e892 movs r2, 0x70 | r2 = 0x70;
0x0008e894 ldr r7, [r4, 8] | r7 = *((r4 + 8));
0x0008e896 str.w fp, [sp, 0x13c] | __asm ("str.w fp, [var_13ch]");
0x0008e89a strb.w r2, [sp, 0xec] | var_ech = r2;
0x0008e89e str r3, [sp, 0x88] | var_88h = r3;
0x0008e8a0 str r3, [sp, 0xf8] | var_f8h = r3;
| if (r7 != 0) {
0x0008e8a2 cbnz r7, 0x8e8ac | goto label_124;
| }
0x0008e8a4 b 0x8e96c | goto label_125;
| do {
| label_19:
0x0008e8a6 ldr r7, [r7, 0x14] | r7 = *((r7 + 0x14));
0x0008e8a8 cmp r7, 0 |
| if (r7 == 0) {
0x0008e8aa beq 0x8e96c | goto label_125;
| }
| label_124:
0x0008e8ac ldrb.w r2, [r7, 0x36] | r2 = *((r7 + 0x36));
0x0008e8b0 cmp r2, 0 |
0x0008e8b2 beq 0x8e8a6 |
| } while (r2 == 0);
0x0008e8b4 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0008e8b6 ldrh r6, [r7, 0x32] | r6 = *((r7 + 0x32));
0x0008e8b8 ldr r2, [r3] | r2 = *(r3);
0x0008e8ba cmp r2, r6 |
| if (r2 != r6) {
0x0008e8bc bne 0x8e8a6 | goto label_19;
| }
0x0008e8be ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
| if (r2 == 0) {
0x0008e8c0 cbz r2, 0x8e8d8 | goto label_126;
| }
0x0008e8c2 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008e8c4 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0008e8c6 cmp r1, 0 |
| if (r1 == 0) {
0x0008e8c8 beq 0x8e8a6 | goto label_19;
| }
0x0008e8ca mov r3, fp | r3 = fp;
0x0008e8cc mov r0, r8 | r0 = r8;
0x0008e8ce bl 0x35ca8 | r0 = fcn_00035ca8 (r0, r1, r2, r3);
0x0008e8d2 cmp r0, 0 |
| if (r0 != 0) {
0x0008e8d4 bne 0x8e8a6 | goto label_19;
| }
0x0008e8d6 ldrh r6, [r7, 0x32] | r6 = *((r7 + 0x32));
| if (r6 == 0) {
| label_126:
0x0008e8d8 cbz r6, 0x8e92a | goto label_127;
| }
0x0008e8da mov.w sb, 0 | sb = 0;
| label_21:
0x0008e8de ldr r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x0008e8e0 ldr.w r2, [r2, sb, lsl 2] | offset_0 = sb << 2;
| r2 = *((r2 + offset_0));
0x0008e8e4 str r2, [sp, 0xf4] | var_f4h = r2;
0x0008e8e6 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x0008e8e8 ldrsh.w r2, [r2, sb, lsl 1] | offset_1 = sb << 1;
| r2 = *((r2 + offset_1));
0x0008e8ec adds r1, r2, 2 | r1 = r2 + 2;
| if (r1 == r2) {
0x0008e8ee beq 0x8e950 | goto label_128;
| }
0x0008e8f0 ldr.w sl, [sp, 0x70] | sl = var_70h;
0x0008e8f4 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0008e8f6 strh.w r2, [sp, 0x140] | var_140h = r2;
0x0008e8fa str r3, [sp, 0xf8] | var_f8h = r3;
| label_24:
0x0008e8fc ldr r5, [sp, 0x58] | r5 = var_58h;
0x0008e8fe movs r4, 0 | r4 = 0;
0x0008e900 b 0x8e90a | goto label_129;
| label_20:
0x0008e902 adds r4, 1 | r4++;
0x0008e904 adds r5, 0x10 | r5 += 0x10;
0x0008e906 cmp r4, r6 |
| if (r4 == r6) {
0x0008e908 beq 0x8e8a6 | goto label_19;
| }
| label_129:
0x0008e90a ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0008e90c cmp r1, 0 |
| if (r1 == 0) {
0x0008e90e beq 0x8e902 | goto label_20;
| }
0x0008e910 mov r3, fp | r3 = fp;
0x0008e912 mov r2, sl | r2 = sl;
0x0008e914 mov r0, r8 | r0 = r8;
0x0008e916 bl 0x35ca8 | r0 = fcn_00035ca8 (r0, r1, r2, r3);
0x0008e91a cmp r0, 1 |
| if (r0 > 1) {
0x0008e91c bgt 0x8e902 | goto label_20;
| }
0x0008e91e cmp r6, r4 |
| if (r6 <= r4) {
0x0008e920 ble 0x8e8a6 | goto label_19;
| }
0x0008e922 add.w sb, sb, 1 | sb++;
0x0008e926 cmp sb, r6 |
| if (sb != r6) {
0x0008e928 bne 0x8e8de | goto label_21;
| }
| label_127:
0x0008e92a ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008e92c str r7, [r3, 0x1c] | *((r3 + 0x1c)) = r7;
| label_25:
0x0008e92e ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008e930 ldr r2, [sp, 0x84] | r2 = var_84h;
0x0008e932 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0008e934 adds r2, 1 | r2++;
0x0008e936 str r2, [sp, 0x84] | var_84h = r2;
0x0008e938 str r3, [sp, 0x64] | var_64h = r3;
0x0008e93a cmp r3, 0 |
| if (r3 != 0) {
0x0008e93c bne.w 0x8e830 | goto label_22;
| }
| label_122:
0x0008e940 ldr r3, [sp, 0x94] | r3 = var_94h;
0x0008e942 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x0008e944 str r2, [sp, 0x94] | var_94h = r2;
0x0008e946 cmp r2, 0 |
| if (r2 == 0) {
0x0008e948 beq 0x8e9e0 | goto label_130;
| }
0x0008e94a ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0008e94c ldr r2, [r2] | r2 = *(r2);
0x0008e94e b 0x8e804 | goto label_23;
| label_128:
0x0008e950 ldr r2, [r7, 0x28] | r2 = *((r7 + 0x28));
0x0008e952 add.w r2, r2, sb, lsl 4 | r2 += (sb << 4);
0x0008e956 ldr.w sl, [r2, 8] | sl = *((r2 + 8));
0x0008e95a ldrb.w r1, [sl] | r1 = *(sl);
0x0008e95e cmp r1, 0x70 |
| if (r1 == 0x70) {
0x0008e960 beq 0x8e8fc | goto label_24;
| }
0x0008e962 str.w sl, [sp, 0xf8] | __asm ("str.w sl, [var_f8h]");
0x0008e966 ldr.w sl, [sp, 0x70] | sl = var_70h;
0x0008e96a b 0x8e8fc | goto label_24;
| label_125:
0x0008e96c ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008e96e ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0008e970 cmp r3, 0 |
| if (r3 != 0) {
0x0008e972 bne 0x8e92e | goto label_25;
| }
0x0008e974 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0008e976 mov r4, r8 | r4 = r8;
| if (r3 == 0) {
0x0008e978 cbnz r3, 0x8e980 |
0x0008e97a ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008e97c ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
| if (r3 == 0) {
0x0008e97e cbz r3, 0x8e9a0 | goto label_131;
| }
| }
0x0008e980 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0008e982 add r5, sp, 0x154 | r5 += var_154h;
0x0008e984 ldr r2, [pc, 0x4c] |
0x0008e986 mov r1, r5 | r1 = r5;
0x0008e988 movs r0, 0x10 | r0 = 0x10;
0x0008e98a adds r3, 1 | r3++;
0x0008e98c add r2, pc | r2 = 0x11d364;
0x0008e98e blx 0x8154 | fcn_00008154 ();
| do {
0x0008e992 ldr r1, [pc, 0x44] |
0x0008e994 mov r2, r5 | r2 = r5;
0x0008e996 mov r0, r4 | r0 = r4;
0x0008e998 add r1, pc | r1 = 0x11d376;
0x0008e99a bl 0x25778 | fcn_00025778 (r0);
0x0008e99e b 0x8e4aa | goto label_18;
| label_131:
0x0008e9a0 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0008e9a2 add r5, sp, 0x154 | r5 += var_154h;
0x0008e9a4 strb.w r3, [sp, 0x154] | var_154h = r3;
0x0008e9a8 b 0x8e992 |
| } while (1);
| label_109:
0x0008e9aa ldr r2, [pc, 0x30] |
0x0008e9ac add r2, pc | r2 = 0x11d38e;
0x0008e9ae b 0x8e49e | goto label_26;
| label_130:
0x0008e9e0 ldrd sl, sb, [sp, 0x98] | __asm ("ldrd sl, sb, [var_98h]");
0x0008e9e4 mov r4, r8 | r4 = r8;
| label_104:
0x0008e9e6 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008e9e8 cmp r3, 0 |
| if (r3 != 0) {
0x0008e9ea bne.w 0x8f3ec | goto label_132;
| }
0x0008e9ee ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008e9f0 cmp r3, 0 |
| if (r3 == 0) {
0x0008e9f2 beq.w 0x8f3e2 | goto label_133;
| }
0x0008e9f6 ldrd r8, r3, [sl, 0x6c] | __asm ("ldrd r8, r3, [sl, 0x6c]");
0x0008e9fa ldr r2, [sp, 0xb4] | r2 = var_b4h;
0x0008e9fc cmp r8, r3 |
| if (r8 >= r3) {
0x0008e9fe bge.w 0x8f3d0 | goto label_134;
| }
0x0008ea02 movs r3, 0x14 | r3 = 0x14;
0x0008ea04 ldr.w r0, [sl, 0x68] | r0 = *((sl + 0x68));
0x0008ea08 mul r3, r3, r8 | r3 *= r8;
0x0008ea0c add.w r1, r8, 1 | r1 = r8 + 1;
0x0008ea10 str.w r1, [sl, 0x6c] | __asm ("str.w r1, [sl, 0x6c]");
0x0008ea14 movs r5, 0xe | r5 = 0xe;
0x0008ea16 adds r1, r0, r3 | r1 = r0 + r3;
0x0008ea18 str r2, [r1, 4] | *((r1 + 4)) = r2;
0x0008ea1a ldr r2, [sp, 0x50] | r2 = var_50h;
0x0008ea1c strd r2, r2, [r1, 8] | __asm ("strd r2, r2, [r1, 8]");
0x0008ea20 str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
0x0008ea22 str r5, [r0, r3] | *((r0 + r3)) = r5;
| label_65:
0x0008ea24 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0008ea26 cmp r2, 0 |
0x0008ea28 it lt |
| if (r2 >= 0) {
0x0008ea2a strlt r8, [sp, 0x58] | var_58h = r8;
| }
| if (r2 >= 0) {
0x0008ea2e blt 0x8ea46 |
0x0008ea30 ldr r1, [sp, 0x74] | r1 = var_74h;
0x0008ea32 movs r3, 0 | r3 = 0;
0x0008ea34 str r3, [sp] | *(sp) = r3;
0x0008ea36 mov r0, sl | r0 = sl;
0x0008ea38 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008ea3a adds r2, r1, r2 | r2 = r1 + r2;
0x0008ea3c movs r1, 0x4d | r1 = 0x4d;
0x0008ea3e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ea42 str.w r8, [sp, 0x58] | __asm ("str.w r8, [var_58h]");
| }
| label_66:
0x0008ea46 ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
0x0008ea4a cmp r1, 0 |
| if (r1 <= 0) {
0x0008ea4c ble 0x8ead2 | goto label_135;
| }
0x0008ea4e movs r7, 0 | r7 = 0;
0x0008ea50 ldr r5, [sp, 0x78] | r5 = var_78h;
0x0008ea52 mov r6, r7 | r6 = r7;
0x0008ea54 mov fp, r7 |
0x0008ea56 ldr r7, [sp, 0x3c] | r7 = var_3ch;
| label_27:
0x0008ea58 ldrsh.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x0008ea5c cmp r3, r6 |
| if (r3 == r6) {
0x0008ea5e beq.w 0x8ec4a | goto label_136;
| }
0x0008ea62 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0008ea66 add.w r3, r6, r6, lsl 2 | r3 = r6 + (r6 << 2);
0x0008ea6a add.w r0, r0, r3, lsl 2 | r0 += (r3 << 2);
0x0008ea6e ldrh r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x0008ea70 tst.w r2, 0x62 |
| if ((r2 & 0x62) == 0) {
0x0008ea74 beq.w 0x8ebce | goto label_137;
| }
0x0008ea78 ands r3, r2, 0x20 | r3 = r2 & 0x20;
0x0008ea7c add.w fp, fp, 1 |
| if (r3 != r2) {
0x0008ea80 bne 0x8eacc | goto label_30;
| }
0x0008ea82 lsls r2, r2, 0x19 | r2 <<= 0x19;
| if (r2 < r2) {
0x0008ea84 bmi.w 0x8ec28 | goto label_138;
| }
0x0008ea88 cmp r7, 0 |
| if (r7 == 0) {
0x0008ea8a beq.w 0x8ec16 | goto label_139;
| }
| label_28:
0x0008ea8e ldr.w ip, [r7, 4] | ip = *((r7 + 4));
0x0008ea92 cmp.w ip, 0 |
| if (ip <= 0) {
0x0008ea96 ble.w 0x8ec16 | goto label_139;
| }
0x0008ea9a ldr r3, [r7] | r3 = *(r7);
0x0008ea9c movs r2, 0 | r2 = 0;
0x0008ea9e mov lr, r1 | lr = r1;
0x0008eaa0 adds r3, 4 | r3 += 4;
0x0008eaa2 b 0x8eaac |
| while (r1 != r6) {
0x0008eaa4 adds r2, 1 | r2++;
0x0008eaa6 cmp r2, ip |
| if (r2 == ip) {
0x0008eaa8 beq.w 0x8ec16 | goto label_139;
| }
0x0008eaac ldr.w r1, [r3, r2, lsl 3] | offset_2 = r2 << 3;
| r1 = *((r3 + offset_2));
0x0008eab0 cmp r1, r6 |
0x0008eab2 bne 0x8eaa4 |
| }
0x0008eab4 mov r1, lr | r1 = lr;
0x0008eab6 b 0x8ebdc | goto label_140;
| label_29:
0x0008eab8 mov r3, r2 | r3 = r2;
0x0008eaba movs r1, 0x5b | r1 = 0x5b;
0x0008eabc str r5, [sp] | *(sp) = r5;
0x0008eabe mov r0, sl | r0 = sl;
0x0008eac0 ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008eac2 adds r5, 1 | r5++;
0x0008eac4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008eac8 ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
| label_30:
0x0008eacc adds r6, 1 | r6++;
0x0008eace cmp r1, r6 |
| if (r1 > r6) {
0x0008ead0 bgt 0x8ea58 | goto label_27;
| }
| label_135:
0x0008ead2 ldr r3, [sp, 0xac] | r3 = var_ach;
0x0008ead4 ldr.w fp, [r4, 0x38] | fp = *((r4 + 0x38));
0x0008ead8 lsls r3, r3, 0x1f | r3 <<= 0x1f;
0x0008eada add.w r6, fp, -1 | r6 = fp + -1;
0x0008eade str r6, [r4, 0x38] | *((r4 + 0x38)) = r6;
| if (r3 < r3) {
0x0008eae0 bmi.w 0x8f754 | goto label_141;
| }
| label_137:
0x0008ebce cmp r7, 0 |
| if (r7 != 0) {
0x0008ebd0 bne.w 0x8ea8e | goto label_28;
| }
0x0008ebd4 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008ebd6 sub.w r2, r6, fp | r2 = r6 - fp;
| if (r3 == 0) {
0x0008ebda cbz r3, 0x8ec16 | goto label_139;
| }
| label_140:
0x0008ebdc ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008ebde cmp r3, 0 |
| if (r3 != 0) {
0x0008ebe0 bne.w 0x8eab8 | goto label_29;
| }
0x0008ebe4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008ebe6 cmp r3, 0 |
| if (r3 == 0) {
0x0008ebe8 beq 0x8ec60 | goto label_142;
| }
0x0008ebea ldrd r3, r0, [sp, 0x74] | __asm ("ldrd r3, r0, [var_78h]");
0x0008ebee add.w ip, r5, 1 |
0x0008ebf2 cmp r3, r0 |
0x0008ebf4 it eq |
| if (r3 == r0) {
0x0008ebf6 moveq r5, ip | r5 = ip;
| goto label_143;
| }
| if (r3 == r0) {
| label_143:
0x0008ebf8 beq.w 0x8eacc | goto label_30;
| }
0x0008ebfc ldr r1, [sp, 0x74] | r1 = var_74h;
0x0008ebfe mov r3, r5 | r3 = r5;
0x0008ec00 mov r0, sl | r0 = sl;
0x0008ec02 mov r5, ip | r5 = ip;
0x0008ec04 add r2, r1 | r2 += r1;
0x0008ec06 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0008ec08 str r1, [sp] | *(sp) = r1;
0x0008ec0a movs r1, 0x4e | r1 = 0x4e;
0x0008ec0c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ec10 ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
0x0008ec14 b 0x8eacc | goto label_30;
| label_139:
0x0008ec16 ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x0008ec18 mov r2, r5 | r2 = r5;
0x0008ec1a mov r0, r4 | r0 = r4;
0x0008ec1c adds r5, 1 | r5++;
0x0008ec1e bl 0x67ba8 | fcn_00067ba8 (r0, r1, r2);
0x0008ec22 ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
0x0008ec26 b 0x8eacc | goto label_30;
| label_138:
0x0008ec28 ldr r2, [sp, 0xac] | r2 = var_ach;
0x0008ec2a adds r0, r5, 1 | r0 = r5 + 1;
0x0008ec2c lsls r2, r2, 0x1f | r2 <<= 0x1f;
0x0008ec2e it pl |
| if (r2 >= r2) {
0x0008ec30 movpl r5, r0 | r5 = r0;
| goto label_144;
| }
| if (r2 >= r2) {
| label_144:
0x0008ec32 bpl.w 0x8eacc | goto label_30;
| }
0x0008ec36 mov r2, r5 | r2 = r5;
0x0008ec38 movs r1, 0x49 | r1 = 0x49;
0x0008ec3a mov r5, r0 | r5 = r0;
0x0008ec3c str r3, [sp] | *(sp) = r3;
0x0008ec3e mov r0, sl | r0 = sl;
0x0008ec40 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ec44 ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
0x0008ec48 b 0x8eacc | goto label_30;
| label_136:
0x0008ec4a movs r3, 0 | r3 = 0;
0x0008ec4c mov r2, r5 | r2 = r5;
0x0008ec4e movs r1, 0x49 | r1 = 0x49;
0x0008ec50 mov r0, sl | r0 = sl;
0x0008ec52 str r3, [sp] | *(sp) = r3;
0x0008ec54 adds r5, 1 | r5++;
0x0008ec56 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ec5a ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
0x0008ec5e b 0x8eacc | goto label_30;
| label_142:
0x0008ec60 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0008ec62 cmp r3, 0 |
| if (r3 == 0) {
0x0008ec64 beq.w 0x8f884 | goto label_145;
| }
0x0008ec68 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008ec6a mov r0, r4 | r0 = r4;
0x0008ec6c add.w r2, r3, r2, lsl 4 | r2 = r3 + (r2 << 4);
0x0008ec70 ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x0008ec72 mov r2, r5 | r2 = r5;
0x0008ec74 str r1, [sp, 0x64] | var_64h = r1;
0x0008ec76 bl 0x63a00 | r0 = fcn_00063a00 (r0, r1);
0x0008ec7a cmp r0, r5 |
0x0008ec7c ldr r1, [sp, 0x64] | r1 = var_64h;
0x0008ec7e mov r2, r0 | r2 = r0;
0x0008ec80 itt eq |
| if (r0 == r5) {
0x0008ec82 ldrsheq r1, [sb, 0x2a] | __asm ("ldrsheq r1, [sb, 0x2a]");
| }
| if (r0 != r5) {
0x0008ec86 adds r5, 1 | r5++;
| goto label_146;
| }
| if (r5 == 1) {
| label_146:
0x0008ec88 beq.w 0x8eacc | goto label_30;
| }
0x0008ec8c ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0008ec8e tst.w r3, 0x200000 |
0x0008ec92 mov.w r3, 0 | r3 = 0;
0x0008ec96 str r3, [sp] | *(sp) = r3;
0x0008ec98 it ne |
| if ((r3 & 0x200000) == 0) {
0x0008ec9a movne r1, 0x4d | r1 = 0x4d;
| }
0x0008ec9c mov r3, r5 | r3 = r5;
0x0008ec9e it eq |
| if ((r3 & 0x200000) != 0) {
0x0008eca0 moveq r1, 0x4e | r1 = 0x4e;
| }
0x0008eca2 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0008eca4 adds r5, 1 | r5++;
0x0008eca6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ecaa ldrsh.w r1, [sb, 0x2a] | r1 = *((sb + 0x2a));
0x0008ecae b 0x8eacc | goto label_30;
| label_117:
0x0008ecbc ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0008ecbe ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0008ecc0 clz r1, r3 | r1 &= r3;
0x0008ecc4 clz r2, r0 | r2 &= r0;
0x0008ecc8 lsrs r1, r1, 5 | r1 >>= 5;
0x0008ecca lsrs r2, r2, 5 | r2 >>= 5;
0x0008eccc cmp r1, r2 |
| if (r1 != r2) {
0x0008ecce bne.w 0x8e0d4 | goto label_12;
| }
0x0008ecd2 cmp r3, 0 |
| if (r3 == 0) {
0x0008ecd4 beq.w 0x8e6a4 | goto label_31;
| }
0x0008ecd8 ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x0008ecda ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0008ecdc blx 0x7ca0 | r0 = fcn_00007ca0 ();
0x0008ece0 cmp r0, 0 |
| if (r0 == 0) {
0x0008ece2 beq.w 0x8e6a4 | goto label_31;
| }
0x0008ece6 b.w 0x8e0d4 | goto label_12;
| label_76:
0x0008ecea blx 0x7e8c | fcn_00007e8c ();
| label_114:
0x0008ecee ldr r2, [r0, 0x48] | r2 = *((r0 + 0x48));
0x0008ecf0 ldr.w r3, [sb, 0x48] | r3 = *((sb + 0x48));
0x0008ecf4 cmp r2, r3 |
| if (r2 != r3) {
0x0008ecf6 bne.w 0x8e622 | goto label_32;
| }
0x0008ecfa b.w 0x8e0d4 | goto label_12;
| label_113:
0x0008ecfe ldrsh.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x0008ed02 cmp r3, 0 |
| if (r3 < 0) {
0x0008ed04 blt 0x8edee | goto label_147;
| }
0x0008ed06 ldrb.w r3, [sb, 0x32] | r3 = *((sb + 0x32));
0x0008ed0a cmp r3, 0xb |
0x0008ed0c it eq |
| if (r3 != 0xb) {
0x0008ed0e moveq r3, 2 | r3 = 2;
| }
0x0008ed10 str r3, [sp, 0x5c] | var_5ch = r3;
0x0008ed12 b 0x8e5ac | goto label_33;
| label_74:
0x0008ed14 mov.w fp, 0x8000 |
0x0008ed18 sub.w r1, r1, 0x80000 | r1 -= 0x80000;
0x0008ed1c movt fp, 0xffff |
0x0008ed20 b.w 0x8dfc8 | goto label_34;
| label_91:
0x0008ed24 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008ed26 adds r7, r3, 1 | r7 = r3 + 1;
0x0008ed28 mov r3, r7 | r3 = r7;
| label_59:
0x0008ed2a add.w r8, r3, 1 | r8 = r3 + 1;
0x0008ed2e str.w r8, [r4, 0x2c] | __asm ("str.w r8, [r4, 0x2c]");
0x0008ed32 b.w 0x8e2c6 | goto label_35;
| label_90:
0x0008ed36 ldr r2, [r4, 8] | r2 = *((r4 + 8));
| if (r2 == 0) {
0x0008ed38 cbnz r2, 0x8ed42 |
0x0008ed3a mov r0, r4 | r0 = r4;
0x0008ed3c bl 0x2aeb4 | r0 = fcn_0002aeb4 (r0, r1);
0x0008ed40 mov r2, r0 | r2 = r0;
| }
0x0008ed42 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008ed46 ldr r7, [r2, 0x6c] | r7 = *((r2 + 0x6c));
| if (r3 == 0) {
0x0008ed48 cbz r3, 0x8ed5e | goto label_148;
| }
0x0008ed4a ldr.w r3, [sb, 0x40] | r3 = *((sb + 0x40));
0x0008ed4e ldr r0, [r4] | r0 = *(r4);
| if (r3 != 0) {
0x0008ed50 cbnz r3, 0x8ed58 | goto label_149;
| }
0x0008ed52 b 0x8ed5e | goto label_148;
| do {
0x0008ed54 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
| if (r3 == 0) {
0x0008ed56 cbz r3, 0x8ed5e | goto label_148;
| }
| label_149:
0x0008ed58 ldr r1, [r3] | r1 = *(r3);
0x0008ed5a cmp r0, r1 |
0x0008ed5c bne 0x8ed54 |
| } while (r0 != r1);
| label_148:
0x0008ed5e ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x0008ed60 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0008ed62 cmp r1, 0 |
0x0008ed64 ite le |
| if (r1 > 0) {
0x0008ed66 movle r1, 0 | r1 = 0;
| }
| if (r1 <= 0) {
0x0008ed68 movgt r1, 1 | r1 = 1;
| }
0x0008ed6a cmp r0, 0 |
0x0008ed6c it ne |
| if (r0 == 0) {
0x0008ed6e movne r1, 0 | r1 = 0;
| }
0x0008ed70 cmp r7, 1 |
0x0008ed72 mov ip, r1 |
| if (r7 <= 1) {
0x0008ed74 ble.w 0x8e3ae | goto label_15;
| }
0x0008ed78 ldr r1, [r2] | r1 = *(r2);
0x0008ed7a ldrb.w lr, [r1, 0x53] |
0x0008ed7e ldr.w r1, [pc, 0x9b4] | r1 = *(0x0008f734);
0x0008ed82 add r1, pc | r1 += pc;
0x0008ed84 add.w r8, r1, 4 | r8 = r1 + 4;
0x0008ed88 movs r1, 1 | r1 = 1;
0x0008ed8a b 0x8eda0 | goto label_150;
| label_37:
0x0008ed8c cmp r5, 0xa9 |
| if (r5 != 0xa9) {
0x0008ed8e bne 0x8ed98 | goto label_38;
| }
0x0008ed90 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x0008ed92 cmp r0, r3 |
| if (r0 == r3) {
0x0008ed94 beq.w 0x8e292 | goto label_36;
| }
| label_38:
0x0008ed98 adds r1, 1 | r1++;
0x0008ed9a cmp r7, r1 |
| if (r7 == r1) {
0x0008ed9c beq.w 0x8e3ae | goto label_15;
| }
| label_150:
0x0008eda0 mov r0, r8 | r0 = r8;
0x0008eda2 cmp.w lr, 0 |
| if (lr == 0) {
0x0008eda6 bne 0x8edb2 |
0x0008eda8 ldr r0, [r2, 0x68] | r0 = *((r2 + 0x68));
0x0008edaa add.w r5, r1, r1, lsl 2 | r5 = r1 + (r1 << 2);
0x0008edae add.w r0, r0, r5, lsl 2 | r0 += (r5 << 2);
| }
0x0008edb2 ldrb r5, [r0] | r5 = *(r0);
0x0008edb4 cmp r5, 0x62 |
| if (r5 != 0x62) {
0x0008edb6 bne 0x8ed8c | goto label_37;
| }
0x0008edb8 ldr r5, [r0, 0xc] | r5 = *((r0 + 0xc));
0x0008edba cmp fp, r5 |
| if (fp != r5) {
0x0008edbc bne 0x8ed98 | goto label_38;
| }
0x0008edbe ldr r5, [r0, 8] | r5 = *((r0 + 8));
0x0008edc0 ldr.w r0, [sb, 0x1c] | r0 = *((sb + 0x1c));
0x0008edc4 cmp r5, r0 |
| if (r5 == r0) {
0x0008edc6 beq.w 0x8e292 | goto label_36;
| }
0x0008edca ldr.w r6, [sb, 8] | r6 = *((sb + 8));
| if (r6 != 0) {
0x0008edce cbnz r6, 0x8edd8 | goto label_151;
| }
0x0008edd0 b 0x8ed98 | goto label_38;
| label_39:
0x0008edd2 ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x0008edd4 cmp r6, 0 |
| if (r6 == 0) {
0x0008edd6 beq 0x8ed98 | goto label_38;
| }
| label_151:
0x0008edd8 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x0008edda cmp r5, r0 |
| if (r5 != r0) {
0x0008eddc bne 0x8edd2 | goto label_39;
| }
0x0008edde b.w 0x8e292 | goto label_36;
| label_89:
0x0008ede2 ldr.w r3, [pc, 0x954] | r3 = *(0x0008f738);
0x0008ede6 add r3, pc | r3 += pc;
0x0008ede8 adds r3, 4 | r3 += 4;
0x0008edea b.w 0x8e280 | goto label_40;
| label_147:
0x0008edee movs r3, 2 | r3 = 2;
0x0008edf0 str r3, [sp, 0x5c] | var_5ch = r3;
0x0008edf2 b.w 0x8e5ac | goto label_33;
| label_118:
0x0008edf6 ldr.w r5, [pc, 0x944] | r5 = *(0x0008f73c);
0x0008edfa movs r3, 0 | r3 = 0;
0x0008edfc ldr.w r7, [sb, 8] | r7 = *((sb + 8));
0x0008ee00 str r3, [sp, 0x50] | var_50h = r3;
0x0008ee02 add r5, pc | r5 += pc;
| if (r7 == 0) {
| label_55:
0x0008ee04 cbz r7, 0x8ee4a | goto label_152;
| }
0x0008ee06 ldrb.w r3, [r7, 0x36] | r3 = *((r7 + 0x36));
0x0008ee0a ldr.w r6, [r8, 8] | r6 = *((r8 + 8));
0x0008ee0e cmp r3, 0 |
0x0008ee10 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008ee12 it ne |
| if (r3 == 0) {
0x0008ee14 movne r3, 1 | r3 = 1;
| }
0x0008ee16 str r3, [sp, 0x50] | var_50h = r3;
| label_41:
0x0008ee18 cmp r6, 0 |
| if (r6 == 0) {
0x0008ee1a beq.w 0x8e0d4 | goto label_12;
| }
0x0008ee1e mov r1, r6 | r1 = r6;
0x0008ee20 mov r0, r7 | r0 = r7;
0x0008ee22 bl 0x39860 | r0 = fcn_00039860 (r0, r1);
0x0008ee26 cmp r0, 0 |
| if (r0 != 0) {
0x0008ee28 bne.w 0x8f336 | goto label_153;
| }
0x0008ee2c ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x0008ee2e b 0x8ee18 | goto label_41;
| label_119:
0x0008ee30 cmp r1, r2 |
| if (r1 != r2) {
0x0008ee32 bne.w 0x8e0d4 | goto label_12;
| }
0x0008ee36 b 0x8e672 | goto label_13;
| label_95:
0x0008ee38 movs r3, 1 | r3 = 1;
0x0008ee3a str r3, [sp, 0x50] | var_50h = r3;
0x0008ee3c b.w 0x8e3ae | goto label_15;
| label_110:
0x0008ee40 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0008ee42 mov sb, r0 | sb = r0;
0x0008ee44 str r3, [sp, 0x30] | var_30h = r3;
0x0008ee46 b.w 0x8dfa2 | goto label_42;
| label_152:
0x0008ee4a ldr.w r1, [sb, 0x18] | r1 = *((sb + 0x18));
| if (r1 == 0) {
0x0008ee4e cbz r1, 0x8ee62 | goto label_154;
| }
0x0008ee50 ldr.w r0, [r8, 0x18] | r0 = *((r8 + 0x18));
0x0008ee54 mov.w r2, -1 | r2 = -1;
0x0008ee58 bl 0x36d2c | r0 = fcn_00036d2c (r0, r1, r2);
0x0008ee5c cmp r0, 0 |
| if (r0 != 0) {
0x0008ee5e bne.w 0x8e0d4 | goto label_12;
| }
| label_154:
0x0008ee62 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008ee64 ldrd r2, r3, [r3, 0x20] | __asm ("ldrd r2, r3, [r3, 0x20]");
0x0008ee68 lsls r6, r2, 0x11 | r6 = r2 << 0x11;
| if (r6 >= r2) {
0x0008ee6a bpl 0x8ee76 | goto label_155;
| }
0x0008ee6c ldr.w r2, [sb, 0x10] | r2 = *((sb + 0x10));
0x0008ee70 cmp r2, 0 |
| if (r2 != 0) {
0x0008ee72 bne.w 0x8e0d4 | goto label_12;
| }
| label_155:
0x0008ee76 lsls r5, r3, 0x1f | r5 = r3 << 0x1f;
| if (r5 < r3) {
0x0008ee78 bmi.w 0x8e0d4 | goto label_12;
| }
0x0008ee7c ldr.w r1, [r8, 0x48] | r1 = *((r8 + 0x48));
0x0008ee80 cmp r1, 0 |
| if (r1 == 0) {
0x0008ee82 beq.w 0x8f32a | goto label_156;
| }
0x0008ee86 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0008ee88 bl 0xf364 | fcn_0000f364 (r0, r1);
0x0008ee8c str r0, [sp, 0x58] | var_58h = r0;
| label_54:
0x0008ee8e ldr r7, [r4, 8] | r7 = *((r4 + 8));
| if (r7 == 0) {
0x0008ee90 cbnz r7, 0x8ee9a |
0x0008ee92 mov r0, r4 | r0 = r4;
0x0008ee94 bl 0x2aeb4 | r0 = fcn_0002aeb4 (r0, r1);
0x0008ee98 mov r7, r0 | r7 = r0;
| }
0x0008ee9a ldr r0, [r4, 0x74] | r0 = *((r4 + 0x74));
0x0008ee9c ldr r1, [sp, 0x58] | r1 = var_58h;
0x0008ee9e cmp r0, 0 |
0x0008eea0 it eq |
| if (r0 != 0) {
0x0008eea2 moveq r0, r4 | r0 = r4;
| }
0x0008eea4 bl 0x540f0 | fcn_000540f0 (r0, r1);
0x0008eea8 ldr r6, [r4, 0x28] | r6 = *((r4 + 0x28));
0x0008eeaa mov r2, sb | r2 = sb;
0x0008eeac mov r1, fp | r1 = fp;
0x0008eeae mov r0, r4 | r0 = r4;
0x0008eeb0 adds r3, r6, 2 | r3 = r6 + 2;
0x0008eeb2 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0008eeb4 bl 0x20098 | fcn_00020098 (r0, r1, r2);
0x0008eeb8 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008eeba adds r2, r6, 1 | r2 = r6 + 1;
0x0008eebc str r0, [sp, 0x60] | var_60h = r0;
0x0008eebe str r2, [sp, 0x74] | var_74h = r2;
0x0008eec0 cmp r3, 0 |
| if (r3 == 0) {
0x0008eec2 beq.w 0x8f320 | goto label_157;
| }
0x0008eec6 subs r3, 1 | r3--;
0x0008eec8 uxtb r3, r3 | r3 = (int8_t) r3;
0x0008eeca strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x0008eecc add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x0008eed0 ldr.w r3, [r3, 0x94] | r3 = *((r3 + 0x94));
0x0008eed4 str r3, [sp, 0x54] | var_54h = r3;
| label_53:
0x0008eed6 movs r2, 0 | r2 = 0;
0x0008eed8 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008eeda movs r1, 0x48 | r1 = 0x48;
0x0008eedc mov r0, r7 | r0 = r7;
0x0008eede str r2, [sp] | *(sp) = r2;
0x0008eee0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008eee4 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008eee6 cmp r3, 0 |
| if (r3 == 0) {
0x0008eee8 beq.w 0x8f3a2 | goto label_158;
| }
0x0008eeec subs r3, 1 | r3--;
0x0008eeee uxtb r3, r3 | r3 = (int8_t) r3;
0x0008eef0 strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
0x0008eef2 add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x0008eef6 ldr.w r3, [r3, 0x94] | r3 = *((r3 + 0x94));
0x0008eefa str r3, [sp, 0x48] | var_48h = r3;
| label_63:
0x0008eefc movs r3, 0x63 | r3 = 0x63;
0x0008eefe mov r0, r4 | r0 = r4;
0x0008ef00 str r3, [sp] | *(sp) = r3;
0x0008ef02 mov r2, fp | r2 = fp;
0x0008ef04 mov r3, sb | r3 = sb;
0x0008ef06 adds r1, r6, 1 | r1 = r6 + 1;
0x0008ef08 bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x0008ef0c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008ef0e ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0008ef10 lsls r0, r3, 0x1d | r0 = r3 << 0x1d;
| if (r0 < r3) {
0x0008ef12 bmi.w 0x8f342 | goto label_159;
| }
0x0008ef16 ldrsh.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x0008ef1a cmp r3, 0 |
| if (r3 < 0) {
0x0008ef1c blt.w 0x8f314 | goto label_160;
| }
| label_52:
0x0008ef20 ldr r3, [sp, 0x50] | r3 = var_50h;
| if (r3 == 0) {
0x0008ef22 cbnz r3, 0x8ef2c |
0x0008ef24 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008ef26 subs r3, 1 | r3--;
0x0008ef28 cmp r3, 1 |
| if (r3 < 1) {
0x0008ef2a bls 0x8ef56 | goto label_56;
| }
| }
| label_51:
0x0008ef2c movs r3, 0 | r3 = 0;
0x0008ef2e adds r2, r6, 1 | r2 = r6 + 1;
0x0008ef30 movs r1, 0x25 | r1 = 0x25;
0x0008ef32 str r3, [sp] | *(sp) = r3;
0x0008ef34 mov r0, r7 | r0 = r7;
0x0008ef36 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ef3a movs r3, 0 | r3 = 0;
0x0008ef3c mov r5, r0 | r5 = r0;
0x0008ef3e mov r2, r3 | r2 = r3;
0x0008ef40 movs r1, 0xb | r1 = 0xb;
0x0008ef42 mov r0, r7 | r0 = r7;
0x0008ef44 str r3, [sp] | *(sp) = r3;
0x0008ef46 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ef4a ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0008ef4c mov r1, r5 | r1 = r5;
0x0008ef4e str r0, [sp, 0x50] | var_50h = r0;
0x0008ef50 mov r0, r7 | r0 = r7;
0x0008ef52 bl 0x9894 | fcn_00009894 (r0, r1, r2);
| label_56:
0x0008ef56 ldr.w r5, [r8, 0x24] | r5 = *((r8 + 0x24));
0x0008ef5a ands r5, r5, 0x80 | r5 &= 0x80;
| if (r5 != r5) {
0x0008ef5e bne.w 0x8f2e8 | goto label_161;
| }
0x0008ef62 movs r3, 0x62 | r3 = 0x62;
0x0008ef64 ldr r2, [sp, 0x58] | r2 = var_58h;
0x0008ef66 mov r1, r6 | r1 = r6;
0x0008ef68 mov r0, r4 | r0 = r4;
0x0008ef6a str r3, [sp] | *(sp) = r3;
0x0008ef6c mov r3, r8 | r3 = r8;
0x0008ef6e bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x0008ef72 mov r3, r5 | r3 = r5;
0x0008ef74 mov r2, r6 | r2 = r6;
0x0008ef76 movs r1, 0x25 | r1 = 0x25;
0x0008ef78 mov r0, r7 | r0 = r7;
0x0008ef7a str r5, [sp] | *(sp) = r5;
0x0008ef7c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ef80 ldrsh.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x0008ef84 str r0, [sp, 0x6c] | var_6ch = r0;
0x0008ef86 cmp r3, 0 |
| if (r3 >= 0) {
0x0008ef88 bge.w 0x8f0a8 | goto label_162;
| }
0x0008ef8c ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0008ef90 cmp r3, 0 |
| if (r3 == 0) {
0x0008ef92 beq 0x8f08a | goto label_163;
| }
| label_44:
0x0008ef94 movs r3, 0 | r3 = 0;
0x0008ef96 mov r2, r6 | r2 = r6;
0x0008ef98 str r3, [sp] | *(sp) = r3;
0x0008ef9a movs r1, 0x83 | r1 = 0x83;
0x0008ef9c ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008ef9e mov r0, r7 | r0 = r7;
0x0008efa0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008efa4 str r0, [sp, 0x64] | var_64h = r0;
| label_45:
0x0008efa6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008efa8 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0008efaa lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
| if (r1 < r3) {
0x0008efac bmi 0x8f076 | goto label_46;
| }
0x0008efae movs r3, 0xa9 | r3 = 0xa9;
0x0008efb0 str r3, [sp, 0x5c] | var_5ch = r3;
| label_43:
0x0008efb2 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008efb4 adds r5, r6, 1 | r5 = r6 + 1;
0x0008efb6 mov r2, r5 | r2 = r5;
0x0008efb8 movs r1, 0x7d | r1 = 0x7d;
0x0008efba mov r0, r7 | r0 = r7;
0x0008efbc str r3, [sp] | *(sp) = r3;
0x0008efbe mov r3, r6 | r3 = r6;
0x0008efc0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008efc4 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008efc6 mov r2, r5 | r2 = r5;
0x0008efc8 movs r1, 0x7c | r1 = 0x7c;
0x0008efca mov r0, r7 | r0 = r7;
0x0008efcc str r3, [sp] | *(sp) = r3;
0x0008efce ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008efd0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008efd4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008efd6 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0008efd8 lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 >= r3) {
0x0008efda bmi 0x8efec |
0x0008efdc mvn r3, 5 | r3 = ~5;
0x0008efe0 mov r2, sb | r2 = sb;
0x0008efe2 mov.w r1, -1 | r1 = -1;
0x0008efe6 mov r0, r7 | r0 = r7;
0x0008efe8 bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
| }
0x0008efec ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0008efee movs r5, 0 | r5 = 0;
0x0008eff0 ldrh.w r0, [sp, 0x5c] | r0 = var_5ch;
0x0008eff4 cmp r2, 0 |
0x0008eff6 ittt gt |
| if (r2 <= 0) {
0x0008eff8 ldrgt r3, [r7, 0x68] | r3 = *((r7 + 0x68));
| }
| if (r2 <= 0) {
0x0008effa movgt r1, 0x14 | r1 = 0x14;
| }
| if (r2 > 0) {
0x0008effc mlagt r3, r1, r2, r3 | __asm ("mlagt r3, r1, r2, r3");
| }
0x0008f000 mov r2, r6 | r2 = r6;
0x0008f002 mov.w r1, 5 | r1 = 5;
0x0008f006 it gt |
| if (r2 > 0) {
0x0008f008 strhgt r0, [r3, -0x12] | __asm ("strhgt r0, [r3, -0x12]");
| }
0x0008f00c mov r0, r7 | r0 = r7;
0x0008f00e ldr r3, [sp, 0x64] | r3 = var_64h;
0x0008f010 str r5, [sp] | *(sp) = r5;
0x0008f012 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f016 mov r3, r5 | r3 = r5;
0x0008f018 mov r2, r6 | r2 = r6;
0x0008f01a movs r1, 0x76 | r1 = 0x76;
0x0008f01c mov r0, r7 | r0 = r7;
0x0008f01e str r5, [sp] | *(sp) = r5;
0x0008f020 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f024 mov r3, r5 | r3 = r5;
0x0008f026 adds r2, r6, 1 | r2 = r6 + 1;
0x0008f028 movs r1, 0x76 | r1 = 0x76;
0x0008f02a mov r0, r7 | r0 = r7;
0x0008f02c str r5, [sp] | *(sp) = r5;
0x0008f02e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_50:
0x0008f032 ldr.w r3, [pc, 0x70c] |
0x0008f036 str.w sb, [sp, 0x80] | __asm ("str.w sb, [var_80h]");
0x0008f03a str.w sl, [sp, 0x78] | __asm ("str.w sl, [var_78h]");
0x0008f03e mov sl, r4 | sl = r4;
0x0008f040 add r3, pc |
0x0008f042 str.w fp, [sp, 0x5c] | __asm ("str.w fp, [var_5ch]");
0x0008f046 add.w r3, r3, 0x358 | r3 = 0x11eade;
0x0008f04a str r3, [sp, 0x64] | var_64h = r3;
0x0008f04c ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0008f050 ldr.w sb, [sp, 0x74] | sb = var_74h;
0x0008f054 mov r4, r3 | r4 = r3;
| label_47:
0x0008f056 cmp r4, 0 |
| if (r4 == 0) {
0x0008f058 beq 0x8f0fc | goto label_164;
| }
0x0008f05a ldr.w r5, [r8, 8] | r5 = *((r8 + 8));
| do {
0x0008f05e cmp r5, 0 |
| if (r5 == 0) {
0x0008f060 beq.w 0x8f8a2 | goto label_165;
| }
0x0008f064 mov r1, r5 | r1 = r5;
0x0008f066 mov r0, r4 | r0 = r4;
0x0008f068 bl 0x39860 | r0 = fcn_00039860 (r0, r1);
0x0008f06c cmp r0, 0 |
| if (r0 != 0) {
0x0008f06e bne.w 0x8f192 | goto label_166;
| }
0x0008f072 ldr r5, [r5, 0x14] | r5 = *((r5 + 0x14));
0x0008f074 b 0x8f05e |
| } while (1);
| label_46:
0x0008f076 movs r3, 0 | r3 = 0;
0x0008f078 adds r2, r6, 1 | r2 = r6 + 1;
0x0008f07a str r3, [sp] | *(sp) = r3;
0x0008f07c movs r1, 0x85 | r1 = 0x85;
0x0008f07e mov r0, r7 | r0 = r7;
0x0008f080 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f084 movs r3, 0x98 | r3 = 0x98;
0x0008f086 str r3, [sp, 0x5c] | var_5ch = r3;
0x0008f088 b 0x8efb2 | goto label_43;
| label_163:
0x0008f08a ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008f08c ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0008f08e ands r3, r3, 8 | r3 &= 8;
| if (r3 != r3) {
0x0008f092 bne.w 0x8ef94 | goto label_44;
| }
0x0008f096 str r3, [sp] | *(sp) = r3;
0x0008f098 adds r2, r6, 1 | r2 = r6 + 1;
0x0008f09a ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008f09c movs r1, 0x7b | r1 = 0x7b;
0x0008f09e mov r0, r7 | r0 = r7;
0x0008f0a0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f0a4 str r0, [sp, 0x64] | var_64h = r0;
0x0008f0a6 b 0x8efa6 | goto label_45;
| label_162:
0x0008f0a8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008f0aa mov r2, r6 | r2 = r6;
0x0008f0ac movs r1, 0x83 | r1 = 0x83;
0x0008f0ae mov r0, r7 | r0 = r7;
0x0008f0b0 str r5, [sp] | *(sp) = r5;
0x0008f0b2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f0b6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008f0b8 str r0, [sp, 0x64] | var_64h = r0;
0x0008f0ba ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0008f0bc ands r3, r3, 4 | r3 &= 4;
| if (r3 == r3) {
0x0008f0c0 beq.w 0x8f292 | goto label_167;
| }
0x0008f0c4 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008f0c6 cmp r3, 0 |
| if (r3 <= 0) {
0x0008f0c8 ble 0x8f076 | goto label_46;
| }
| label_48:
0x0008f0ca ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0008f0cc ldrd r3, r2, [r0, 0x6c] | __asm ("ldrd r3, r2, [r0, 0x6c]");
0x0008f0d0 cmp r3, r2 |
| if (r3 >= r2) {
0x0008f0d2 bge.w 0x8f282 | goto label_168;
| }
0x0008f0d6 movs r2, 0x14 | r2 = 0x14;
0x0008f0d8 ldr r1, [r0, 0x68] | r1 = *((r0 + 0x68));
0x0008f0da mul r2, r3, r2 | r2 = r3 * r2;
0x0008f0de ldr r5, [sp, 0x60] | r5 = var_60h;
0x0008f0e0 adds r3, 1 | r3++;
0x0008f0e2 mov.w ip, 0x9b |
0x0008f0e6 str r3, [r0, 0x6c] | *((r0 + 0x6c)) = r3;
0x0008f0e8 movs r0, 0 | r0 = 0;
0x0008f0ea adds r3, r1, r2 | r3 = r1 + r2;
0x0008f0ec str r5, [r3, 4] | *((r3 + 4)) = r5;
0x0008f0ee ldr r5, [sp, 0x48] | r5 = var_48h;
0x0008f0f0 str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x0008f0f2 strd r5, r0, [r3, 8] | __asm ("strd r5, r0, [r3, 8]");
0x0008f0f6 str.w ip, [r1, r2] | __asm ("str.w ip, [r1, r2]");
0x0008f0fa b 0x8efa6 | goto label_45;
| label_164:
0x0008f0fc ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008f0fe str r4, [sp, 0x34] | var_34h = r4;
0x0008f100 mov r4, sl | r4 = sl;
0x0008f102 ldr.w fp, [sp, 0x5c] | fp = var_5ch;
0x0008f104 add sp, 0x170 |
0x0008f106 ldr.w sb, [sp, 0x80] | sb = var_80h;
0x0008f108 str r0, [sp, 0x200] | *((sp + 0x200)) = r0;
0x0008f10a ldr.w sl, [sp, 0x78] | sl = var_78h;
| if (r3 != 0) {
0x0008f10e cbz r3, 0x8f11a |
0x0008f110 ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0008f112 mov r1, r3 | r1 = r3;
0x0008f114 mov r0, r7 | r0 = r7;
0x0008f116 bl 0x9894 | fcn_00009894 (r0, r1, r2);
| }
0x0008f11a ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x0008f11c cbz r3, 0x8f126 |
0x0008f11e mov r1, r3 | r1 = r3;
0x0008f120 mov r0, r4 | r0 = r4;
0x0008f122 bl 0xf284 | fcn_0000f284 (r0, r1);
| }
0x0008f126 ldr r3, [sp, 0x54] | r3 = var_54h;
| if (r3 != 0) {
0x0008f128 cbz r3, 0x8f132 |
0x0008f12a mov r1, r3 | r1 = r3;
0x0008f12c mov r0, r4 | r0 = r4;
0x0008f12e bl 0xf284 | fcn_0000f284 (r0, r1);
| }
0x0008f132 ldr r3, [sp, 0x50] | r3 = var_50h;
| if (r3 != 0) {
0x0008f134 cbz r3, 0x8f16a |
0x0008f136 ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
| if (r3 != 0) {
0x0008f138 cbz r3, 0x8f140 |
0x0008f13a mov r0, r4 | r0 = r4;
0x0008f13c bl 0x2f274 | fcn_0002f274 (r0, r1);
| }
0x0008f140 movs r5, 0 | r5 = 0;
0x0008f142 movs r1, 0x44 | r1 = 0x44;
0x0008f144 mov r3, r5 | r3 = r5;
0x0008f146 mov r2, r5 | r2 = r5;
0x0008f148 mov r0, r7 | r0 = r7;
0x0008f14a str r5, [sp] | *(sp) = r5;
0x0008f14c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f150 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0008f152 mov r0, r7 | r0 = r7;
0x0008f154 ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0008f156 bl 0x9894 | fcn_00009894 (r0, r1, r2);
0x0008f15a ldr r2, [sp, 0x74] | r2 = var_74h;
0x0008f15c mov r3, r5 | r3 = r5;
0x0008f15e movs r1, 0x76 | r1 = 0x76;
0x0008f160 str r5, [sp] | *(sp) = r5;
0x0008f162 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f166 b.w 0x8e0d4 | goto label_12;
| }
0x0008f16a ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x0008f16c cmp r3, 0 |
| if (r3 != 0) {
0x0008f16e bne.w 0x8dfe4 | void (*0x8dfe4)() ();
| }
0x0008f172 ldr r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x0008f174 cmp r3, 0 |
| if (r3 != 0) {
0x0008f176 bne.w 0x8dfe4 | void (*0x8dfe4)() ();
| }
0x0008f17a ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
0x0008f17c str r3, [sp, 0x34] | var_34h = r3;
0x0008f17e cmp r3, 0 |
| if (r3 == 0) {
0x0008f180 beq.w 0x8dfe4 | void (*0x8dfe4)() ();
| }
0x0008f184 mov r0, r4 | r0 = r4;
0x0008f186 bl 0x2f274 | fcn_0002f274 (r0, r1);
0x0008f18a ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008f18c str r3, [sp, 0x34] | var_34h = r3;
0x0008f18e b.w 0x8dfe4 | void (*0x8dfe4)() ();
| label_166:
0x0008f192 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0008f194 mov r2, r6 | r2 = r6;
0x0008f196 movs r1, 0x62 | r1 = 0x62;
0x0008f198 mov r0, r7 | r0 = r7;
0x0008f19a str r3, [sp] | *(sp) = r3;
0x0008f19c ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008f19e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f1a2 mov r1, r5 | r1 = r5;
0x0008f1a4 mov r0, sl | r0 = sl;
0x0008f1a6 bl 0x2d434 | fcn_0002d434 (r0, r1);
0x0008f1aa ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0008f1ac mov r2, sb | r2 = sb;
0x0008f1ae movs r1, 0x63 | r1 = 0x63;
0x0008f1b0 mov r0, r7 | r0 = r7;
0x0008f1b2 str r3, [sp] | *(sp) = r3;
0x0008f1b4 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008f1b6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f1ba mov r1, r4 | r1 = r4;
0x0008f1bc mov r0, sl | r0 = sl;
0x0008f1be bl 0x2d434 | fcn_0002d434 (r0, r1);
0x0008f1c2 ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0008f1c4 cmp r2, 0 |
| if (r2 > 0) {
0x0008f1c6 ble 0x8f1d6 |
0x0008f1c8 ldr r3, [r7, 0x68] | r3 = *((r7 + 0x68));
0x0008f1ca movs r1, 0x14 | r1 = 0x14;
0x0008f1cc mla r3, r1, r2, r3 | __asm ("mla r3, r1, r2, r3");
0x0008f1d0 movs r2, 1 | r2 = 1;
0x0008f1d2 strh r2, [r3, -0x12] | *((r3 - 0x12)) = r2;
| }
0x0008f1d6 movs r3, 0 | r3 = 0;
0x0008f1d8 mov r2, r6 | r2 = r6;
0x0008f1da str r3, [sp] | *(sp) = r3;
0x0008f1dc movs r1, 0x25 | r1 = 0x25;
0x0008f1de mov r0, r7 | r0 = r7;
0x0008f1e0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f1e4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008f1e6 mov fp, r0 |
0x0008f1e8 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x0008f1ea movs r3, 0 | r3 = 0;
0x0008f1ec tst.w r2, 4 |
| if ((r2 & 4) != 0) {
0x0008f1f0 bne 0x8f2c6 | goto label_169;
| }
0x0008f1f2 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x0008f1f6 lsls r3, r3, 0x18 | r3 <<= 0x18;
| if (r3 >= r3) {
0x0008f1f8 bpl 0x8f2c2 | goto label_60;
| }
0x0008f1fa ldrb.w r5, [r4, 0x37] | r5 = *((r4 + 0x37));
0x0008f1fe and r5, r5, 3 | r5 &= 3;
0x0008f202 sub.w ip, r5, 2 |
0x0008f206 rsbs.w r5, ip, 0 | r5 = ip - ;
0x0008f20a adc.w r5, r5, ip | __asm ("adc.w r5, r5, ip");
| label_49:
0x0008f20e movs r3, 1 | r3 = 1;
0x0008f210 mov r2, r6 | r2 = r6;
0x0008f212 str r3, [sp] | *(sp) = r3;
0x0008f214 movs r1, 0x82 | r1 = 0x82;
0x0008f216 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008f218 mov r0, r7 | r0 = r7;
0x0008f21a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_61:
0x0008f21e movs r3, 0 | r3 = 0;
0x0008f220 movs r1, 0x86 | r1 = 0x86;
0x0008f222 mov r2, sb | r2 = sb;
0x0008f224 str r3, [sp] | *(sp) = r3;
0x0008f226 mov r0, r7 | r0 = r7;
0x0008f228 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008f22a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f22e ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0008f230 orr r5, r5, 8 | r5 |= 8;
0x0008f234 mov r0, r7 | r0 = r7;
0x0008f236 cmp r2, 0 |
0x0008f238 ittt gt |
| if (r2 <= 0) {
0x0008f23a ldrgt r3, [r7, 0x68] | r3 = *((r7 + 0x68));
| }
| if (r2 <= 0) {
0x0008f23c movgt r1, 0x14 | r1 = 0x14;
| }
| if (r2 > 0) {
0x0008f23e mlagt r3, r1, r2, r3 | __asm ("mlagt r3, r1, r2, r3");
| }
0x0008f242 mov r2, r6 | r2 = r6;
0x0008f244 mov.w r1, 5 | r1 = 5;
0x0008f248 it gt |
| if (r2 > 0) {
0x0008f24a strhgt r5, [r3, -0x12] | __asm ("strhgt r5, [r3, -0x12]");
| }
0x0008f24e movs r5, 0 | r5 = 0;
0x0008f250 add.w r3, fp, 1 | r3 += arg_1h_2;
0x0008f254 str r5, [sp] | *(sp) = r5;
0x0008f256 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f25a ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0008f25c mov r1, fp | r1 = fp;
0x0008f25e mov r0, r7 | r0 = r7;
0x0008f260 bl 0x9894 | fcn_00009894 (r0, r1, r2);
0x0008f264 mov r3, r5 | r3 = r5;
0x0008f266 mov r2, r6 | r2 = r6;
0x0008f268 movs r1, 0x76 | r1 = 0x76;
0x0008f26a str r5, [sp] | *(sp) = r5;
0x0008f26c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f270 mov r3, r5 | r3 = r5;
0x0008f272 mov r2, sb | r2 = sb;
0x0008f274 movs r1, 0x76 | r1 = 0x76;
0x0008f276 mov r0, r7 | r0 = r7;
0x0008f278 str r5, [sp] | *(sp) = r5;
0x0008f27a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f27e ldr r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x0008f280 b 0x8f056 | goto label_47;
| label_168:
0x0008f282 movs r3, 0 | r3 = 0;
0x0008f284 ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008f286 str r3, [sp] | *(sp) = r3;
0x0008f288 movs r1, 0x9b | r1 = 0x9b;
0x0008f28a ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008f28c bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008f290 b 0x8efa6 | goto label_45;
| label_167:
0x0008f292 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0008f294 movs r1, 0x20 | r1 = 0x20;
0x0008f296 mov r0, r7 | r0 = r7;
0x0008f298 str r2, [sp] | *(sp) = r2;
0x0008f29a adds r2, r6, 1 | r2 = r6 + 1;
0x0008f29c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f2a0 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x0008f2a2 mov r2, sb | r2 = sb;
0x0008f2a4 str r0, [sp, 0x78] | var_78h = r0;
0x0008f2a6 mov r0, r4 | r0 = r4;
0x0008f2a8 bl 0x2bb58 | fcn_0002bb58 (r0, r1, r2);
0x0008f2ac ldr r3, [sp, 0x78] | r3 = var_78h;
0x0008f2ae mov r0, r7 | r0 = r7;
0x0008f2b0 ldr r2, [r7, 0x6c] | r2 = *((r7 + 0x6c));
0x0008f2b2 mov r1, r3 | r1 = r3;
0x0008f2b4 bl 0x9894 | fcn_00009894 (r0, r1, r2);
0x0008f2b8 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0008f2ba cmp r3, 0 |
| if (r3 <= 0) {
0x0008f2bc ble.w 0x8efa6 | goto label_45;
| }
0x0008f2c0 b 0x8f0ca | goto label_48;
| label_60:
0x0008f2c2 movs r5, 0 | r5 = 0;
0x0008f2c4 b 0x8f20e | goto label_49;
| label_169:
0x0008f2c6 str.w sl, [sp, 0x60] | __asm ("str.w sl, [var_60h]");
0x0008f2ca mov sl, r4 | sl = r4;
0x0008f2cc mov r4, r3 | r4 = r3;
| do {
0x0008f2ce ldrh r2, [r5, 0x34] | r2 = *((r5 + 0x34));
0x0008f2d0 cmp r4, r2 |
| if (r4 >= r2) {
0x0008f2d2 bge 0x8f398 | goto label_170;
| }
0x0008f2d4 ldr r2, [r5, 0x20] | r2 = *((r5 + 0x20));
0x0008f2d6 ldr r0, [sp, 0x64] | r0 = var_64h;
0x0008f2d8 ldr.w r1, [r2, r4, lsl 2] | offset_3 = r4 << 2;
| r1 = *((r2 + offset_3));
0x0008f2dc blx 0x831c | r0 = fcn_0000831c ();
0x0008f2e0 cmp r0, 0 |
| if (r0 != 0) {
0x0008f2e2 bne 0x8f368 | goto label_171;
| }
0x0008f2e4 adds r4, 1 | r4++;
0x0008f2e6 b 0x8f2ce |
| } while (1);
| label_161:
0x0008f2e8 ldr.w r3, [sb] | r3 = *(sb);
0x0008f2ec mov r1, fp | r1 = fp;
0x0008f2ee mov r0, r4 | r0 = r4;
0x0008f2f0 str r3, [sp] | *(sp) = r3;
0x0008f2f2 movs r3, 1 | r3 = 1;
0x0008f2f4 ldr.w r2, [sb, 0x1c] | r2 = *((sb + 0x1c));
0x0008f2f8 bl 0x1b6bc | fcn_0001b6bc (r0, r1, r2, r3);
0x0008f2fc ldr.w r3, [r8] | r3 = *(r8);
0x0008f300 mov r0, r4 | r0 = r4;
0x0008f302 ldr r1, [sp, 0x58] | r1 = var_58h;
0x0008f304 str r3, [sp] | *(sp) = r3;
0x0008f306 movs r3, 0 | r3 = 0;
0x0008f308 ldr.w r2, [r8, 0x1c] | r2 = *((r8 + 0x1c));
0x0008f30c str r3, [sp, 0x6c] | var_6ch = r3;
0x0008f30e bl 0x1b6bc | fcn_0001b6bc (r0, r1, r2, r3);
0x0008f312 b 0x8f032 | goto label_50;
| label_160:
0x0008f314 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0008f318 cmp r3, 0 |
| if (r3 != 0) {
0x0008f31a bne.w 0x8ef2c | goto label_51;
| }
0x0008f31e b 0x8ef20 | goto label_52;
| label_157:
0x0008f320 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008f322 adds r3, 1 | r3++;
0x0008f324 str r3, [sp, 0x54] | var_54h = r3;
0x0008f326 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0008f328 b 0x8eed6 | goto label_53;
| label_156:
0x0008f32a mov.w r3, 0x8000 |
0x0008f32e movt r3, 0xffff | r3 = 0xNaN;
0x0008f332 str r3, [sp, 0x58] | var_58h = r3;
0x0008f334 b 0x8ee8e | goto label_54;
| label_153:
0x0008f336 ldr r2, [r6, 0x2c] | r2 = *((r6 + 0x2c));
0x0008f338 ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x0008f33a cmp r2, r3 |
| if (r2 == r3) {
0x0008f33c beq 0x8f3ac | goto label_172;
| }
| label_64:
0x0008f33e ldr r7, [r7, 0x14] | r7 = *((r7 + 0x14));
0x0008f340 b 0x8ee04 | goto label_55;
| label_159:
0x0008f342 movs r3, 0 | r3 = 0;
0x0008f344 str r3, [sp, 0x50] | var_50h = r3;
0x0008f346 b 0x8ef56 | goto label_56;
| label_94:
0x0008f348 ldr r3, [pc, 0x3f8] |
0x0008f34a add r3, pc | r3 = 0x11ea92;
0x0008f34c adds r3, 4 | r3 += 4;
0x0008f34e b.w 0x8e362 | goto label_57;
| label_93:
0x0008f352 mov r3, r6 | r3 = r6;
0x0008f354 movs r1, 0xe | r1 = 0xe;
0x0008f356 mov r0, sl | r0 = sl;
0x0008f358 str r6, [sp] | *(sp) = r6;
0x0008f35a bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008f35e mov r5, r0 | r5 = r0;
0x0008f360 b.w 0x8e304 | goto label_58;
| label_92:
0x0008f364 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008f366 b 0x8ed2a | goto label_59;
| label_171:
0x0008f368 mov r3, r4 | r3 = r4;
0x0008f36a ldrh r2, [r5, 0x34] | r2 = *((r5 + 0x34));
0x0008f36c mov r4, sl | r4 = sl;
0x0008f36e ldr.w sl, [sp, 0x60] | sl = var_60h;
| label_62:
0x0008f372 cmp r3, r2 |
| if (r3 != r2) {
0x0008f374 bne 0x8f2c2 | goto label_60;
| }
0x0008f376 movs r5, 0 | r5 = 0;
0x0008f378 mov r2, sb | r2 = sb;
0x0008f37a mov r3, r5 | r3 = r5;
0x0008f37c movs r1, 0x85 | r1 = 0x85;
0x0008f37e str r5, [sp] | *(sp) = r5;
0x0008f380 mov r0, r7 | r0 = r7;
0x0008f382 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f386 str r5, [sp] | *(sp) = r5;
0x0008f388 mov r3, r6 | r3 = r6;
0x0008f38a mov r2, sb | r2 = sb;
0x0008f38c movs r1, 0x7d | r1 = 0x7d;
0x0008f38e mov r0, r7 | r0 = r7;
0x0008f390 movs r5, 0x90 | r5 = 0x90;
0x0008f392 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f396 b 0x8f21e | goto label_61;
| label_170:
0x0008f398 mov r3, r4 | r3 = r4;
0x0008f39a mov r4, sl | r4 = sl;
0x0008f39c ldr.w sl, [sp, 0x60] | sl = var_60h;
0x0008f3a0 b 0x8f372 | goto label_62;
| label_158:
0x0008f3a2 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008f3a4 adds r3, 1 | r3++;
0x0008f3a6 str r3, [sp, 0x48] | var_48h = r3;
0x0008f3a8 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0008f3aa b 0x8eefc | goto label_63;
| label_172:
0x0008f3ac ldr.w r2, [r8, 0x48] | r2 = *((r8 + 0x48));
0x0008f3b0 ldr.w r3, [sb, 0x48] | r3 = *((sb + 0x48));
0x0008f3b4 cmp r2, r3 |
| if (r2 != r3) {
0x0008f3b6 bne 0x8f33e | goto label_64;
| }
0x0008f3b8 ldr.w r3, [r5, 0x100] | r3 = *((r5 + 0x100));
0x0008f3bc cmp r3, 0 |
| if (r3 == 0) {
0x0008f3be beq.w 0x8e0d4 | goto label_12;
| }
0x0008f3c2 movw r0, 0x19b | r0 = 0x19b;
0x0008f3c6 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
0x0008f3c8 cmp r0, 0 |
| if (r0 != 0) {
0x0008f3ca bne 0x8f33e | goto label_64;
| }
0x0008f3cc b.w 0x8e0d4 | goto label_12;
| label_134:
0x0008f3d0 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008f3d2 movs r1, 0xe | r1 = 0xe;
0x0008f3d4 mov r0, sl | r0 = sl;
0x0008f3d6 str r3, [sp] | *(sp) = r3;
0x0008f3d8 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008f3dc mov r8, r0 | r8 = r0;
0x0008f3de b.w 0x8ea24 | goto label_65;
| label_133:
0x0008f3e2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008f3e4 mov r8, r3 | r8 = r3;
0x0008f3e6 str r3, [sp, 0x58] | var_58h = r3;
0x0008f3e8 b.w 0x8ea46 | goto label_66;
| label_132:
0x0008f3ec movs r3, 0 | r3 = 0;
0x0008f3ee ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008f3f0 str r3, [sp] | *(sp) = r3;
0x0008f3f2 movs r1, 0x25 | r1 = 0x25;
0x0008f3f4 mov r0, sl | r0 = sl;
0x0008f3f6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f3fa ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008f3fe mov r8, r0 | r8 = r0;
0x0008f400 str r3, [sp, 0x58] | var_58h = r3;
0x0008f402 b.w 0x8ea46 | goto label_66;
| label_103:
0x0008f406 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008f40a cmp r3, 0 |
| if (r3 != 0) {
0x0008f40c bne 0x8f4d8 | goto label_173;
| }
0x0008f40e ldr r6, [sp, 0x68] | r6 = var_68h;
0x0008f410 add r3, sp, 0xa8 | r3 += var_a8h;
0x0008f412 str r3, [sp, 0xc] | var_ch = r3;
0x0008f414 add r3, sp, 0xa4 | r3 += var_a4h;
0x0008f416 str r3, [sp, 8] | var_8h = r3;
0x0008f418 mov.w r3, -1 | r3 = -1;
0x0008f41c movs r2, 0x63 | r2 = 0x63;
0x0008f41e mov r1, sb | r1 = sb;
0x0008f420 str r6, [sp, 4] | var_4h = r6;
0x0008f422 mov r0, r4 | r0 = r4;
0x0008f424 str r3, [sp] | *(sp) = r3;
0x0008f426 mov r3, r6 | r3 = r6;
0x0008f428 bl 0x2f32c | fcn_0002f32c (r0, r1, r2, r3, r4, r5, r6);
0x0008f42c mov r3, r6 | r3 = r6;
0x0008f42e adds r6, r0, 2 | r6 = r0 + 2;
0x0008f430 lsls r6, r6, 2 | r6 <<= 2;
0x0008f432 mov r5, r0 | r5 = r0;
0x0008f434 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008f436 mov r2, r6 | r2 = r6;
0x0008f438 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0008f43c str r0, [sp, 0x34] | var_34h = r0;
0x0008f43e cmp r0, 0 |
| if (r0 == 0) {
0x0008f440 beq.w 0x8dfe4 | void (*0x8dfe4)() ();
| }
0x0008f444 cmp r5, 0 |
0x0008f446 ldr.w r1, [sb, 8] | r1 = *((sb + 8));
0x0008f44a ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
| if (r5 <= 0) {
0x0008f44c ble 0x8f4d4 | goto label_174;
| }
0x0008f44e sub.w r2, r6, 8 | r2 = r6 - 8;
0x0008f452 add r2, r0 | r2 += r0;
| do {
0x0008f454 ldrh r6, [r1, 0x34] | r6 = *((r1 + 0x34));
0x0008f456 adds r3, 1 | r3++;
0x0008f458 str r3, [r0], 4 | *(r0) = r3;
| r0 += 4;
0x0008f45c cmp r2, r0 |
0x0008f45e ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0008f460 add r3, r6 | r3 += r6;
0x0008f462 bne 0x8f454 |
| } while (r2 != r0);
| do {
| label_69:
0x0008f464 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008f466 adds r3, 1 | r3++;
0x0008f468 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0008f46a str.w r3, [r2, r5, lsl 2] | __asm ("str.w r3, [r2, r5, lsl 2]");
0x0008f46e b.w 0x8e44a | goto label_67;
| label_106:
0x0008f472 ldr r1, [pc, 0x2d4] |
0x0008f474 mov r0, r4 | r0 = r4;
0x0008f476 add r1, pc | r1 = 0x11ebc4;
0x0008f478 bl 0x25778 | fcn_00025778 (r0);
0x0008f47c b.w 0x8e4aa | goto label_18;
| label_102:
0x0008f480 ldrb.w r2, [r4, 0x91] | r2 = *((r4 + 0x91));
| if (r2 != 0) {
0x0008f484 cbz r2, 0x8f48c |
| label_100:
0x0008f486 str r3, [sp, 0x6c] | var_6ch = r3;
0x0008f488 b.w 0x8e43e | goto label_68;
| }
0x0008f48c str r2, [sp] | *(sp) = r2;
0x0008f48e movs r1, 0x45 | r1 = 0x45;
0x0008f490 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008f492 mov r0, sl | r0 = sl;
0x0008f494 adds r3, 1 | r3++;
0x0008f496 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0008f498 str r3, [sp, 0x6c] | var_6ch = r3;
0x0008f49a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f49e b.w 0x8e43e | goto label_68;
| label_99:
0x0008f4a2 str r2, [sp] | *(sp) = r2;
0x0008f4a4 mov r0, r4 | r0 = r4;
0x0008f4a6 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0008f4a8 ldr r1, [pc, 0x2a0] |
0x0008f4aa adds r2, 8 | r2 += 8;
0x0008f4ac add r1, pc | r1 = 0x11ebfc;
0x0008f4ae bl 0x25778 | fcn_00025778 (r0);
0x0008f4b2 movs r3, 0 | r3 = 0;
0x0008f4b4 str r3, [sp, 0x34] | var_34h = r3;
0x0008f4b6 b.w 0x8dfe4 | void (*0x8dfe4)() ();
| label_101:
0x0008f4ba movs r3, 0 | r3 = 0;
0x0008f4bc str r3, [sp, 0x6c] | var_6ch = r3;
0x0008f4be b.w 0x8e43e | goto label_68;
| label_105:
0x0008f4c2 ldr r1, [pc, 0x28c] |
0x0008f4c4 mov r0, r4 | r0 = r4;
0x0008f4c6 ldr.w r2, [sb] | r2 = *(sb);
0x0008f4ca add r1, pc | r1 = 0x11ec20;
0x0008f4cc bl 0x25778 | fcn_00025778 (r0);
0x0008f4d0 b.w 0x8e4aa | goto label_18;
| label_174:
0x0008f4d4 ldr r5, [sp, 0x68] | r5 = var_68h;
0x0008f4d6 b 0x8f464 |
| } while (1);
| label_173:
0x0008f4d8 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008f4da movs r2, 8 | r2 = 8;
0x0008f4dc movs r3, 0 | r3 = 0;
0x0008f4de bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0008f4e2 str r0, [sp, 0x34] | var_34h = r0;
0x0008f4e4 cmp r0, 0 |
| if (r0 == 0) {
0x0008f4e6 beq.w 0x8dfe4 | void (*0x8dfe4)() ();
| }
0x0008f4ea ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008f4ec ldr r5, [sp, 0x68] | r5 = var_68h;
0x0008f4ee b 0x8f464 | goto label_69;
| label_141:
0x0008f754 adds r1, 1 | r1++;
0x0008f756 mov r0, r4 | r0 = r4;
0x0008f758 bl 0xf298 | fcn_0000f298 (r0, r1);
0x0008f75c ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008f75e mov r7, r0 | r7 = r0;
0x0008f760 cmp r3, 0 |
| if (r3 < 0) {
0x0008f762 blt 0x8f826 | goto label_175;
| }
0x0008f764 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008f766 cmp r3, 0 |
| if (r3 != 0) {
0x0008f768 bne 0x8f816 | goto label_176;
| }
0x0008f76a ldr r3, [r4, 8] | r3 = *((r4 + 8));
| if (r3 == 0) {
0x0008f76c cbz r3, 0x8f780 | goto label_177;
| }
0x0008f76e ldrd r3, r2, [sp, 0x44] | __asm ("ldrd r3, r2, [var_48h]");
0x0008f772 add.w r3, r3, r2, lsl 4 | r3 += (r2 << 4);
0x0008f776 mov r2, r0 | r2 = r0;
0x0008f778 mov r0, r4 | r0 = r4;
0x0008f77a ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0008f77c bl 0x64e94 | fcn_00064e94 (r0, r1, r2);
| do {
| label_177:
0x0008f780 movs r5, 0 | r5 = 0;
0x0008f782 mov r2, r7 | r2 = r7;
0x0008f784 mov r3, r5 | r3 = r5;
0x0008f786 movs r1, 0x33 | r1 = 0x33;
0x0008f788 mov r0, sl | r0 = sl;
0x0008f78a str r5, [sp] | *(sp) = r5;
0x0008f78c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f790 mov r3, r7 | r3 = r7;
0x0008f792 mov.w r2, -1 | r2 = -1;
0x0008f796 movs r1, 0x45 | r1 = 0x45;
0x0008f798 str r0, [sp, 0x5c] | var_5ch = r0;
0x0008f79a str r5, [sp] | *(sp) = r5;
0x0008f79c mov r0, sl | r0 = sl;
0x0008f79e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f7a0 invalid |
| label_176:
0x0008f816 str r0, [sp] | *(sp) = r0;
0x0008f818 movs r1, 0x5b | r1 = 0x5b;
0x0008f81a ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008f81c mov r0, sl | r0 = sl;
0x0008f81e ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008f820 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f824 b 0x8f780 |
| } while (1);
| label_175:
0x0008f826 movs r3, 0 | r3 = 0;
0x0008f828 mov.w r2, -1 | r2 = -1;
0x0008f82c str r3, [sp] | *(sp) = r3;
0x0008f82e movs r1, 0x45 | r1 = 0x45;
0x0008f830 mov r3, r0 | r3 = r0;
0x0008f832 mov r0, sl | r0 = sl;
0x0008f834 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f838 b 0x8f7ba | void (*0x8f7ba)() ();
| label_145:
0x0008f884 adds r5, 1 | r5++;
0x0008f886 b.w 0x8eacc | goto label_30;
| label_165:
0x0008f8a2 ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008f8a4 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x8f8ac */
| #include <stdint.h>
|
; (fcn) fcn.0008f8ac () | void fcn_0008f8ac (int16_t arg_30h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int32_t var_7ch_2;
| int32_t var_84h;
| int32_t var_84h_2;
| int32_t var_8ch;
| int32_t var_8ch_2;
| int16_t var_94h;
| int32_t var_94h_2;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0008f8ac push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0008f8b0 mov r5, r2 | r5 = r2;
0x0008f8b2 ldr.w r2, [pc, 0xa60] | r2 = *(0x00090314);
0x0008f8b6 sub sp, 0xac |
0x0008f8b8 mov fp, r1 |
0x0008f8ba ldr.w r3, [pc, 0xa5c] |
0x0008f8be add r2, pc | r2 += pc;
0x0008f8c0 ldr.w r8, [r0, 0x24] | r8 = *((r0 + 0x24));
0x0008f8c4 ldr r7, [r0] | r7 = *(r0);
0x0008f8c6 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0008f8c8 ldr r3, [r3] | r3 = *(0x9031a);
0x0008f8ca str r3, [sp, 0xa4] | var_a4h = r3;
0x0008f8cc mov.w r3, 0 | r3 = 0;
0x0008f8d0 movs r3, 0 | r3 = 0;
0x0008f8d2 str r3, [sp, 0x78] | var_78h = r3;
0x0008f8d4 strd r3, r3, [sp, 0x6c] | __asm ("strd r3, r3, [var_6ch]");
0x0008f8d8 str r3, [sp, 0x74] | var_74h = r3;
0x0008f8da cmp.w r8, 0 |
0x0008f8dc lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x0008f8de bne 0x8f8e6 |
0x0008f8e0 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
| if (r3 == 0) {
0x0008f8e4 cbz r3, 0x8f924 | goto label_40;
| }
| }
0x0008f8e6 mov r1, fp | r1 = fp;
0x0008f8e8 mov r0, r7 | r0 = r7;
0x0008f8ea movs r6, 0 | r6 = 0;
0x0008f8ec bl 0x18a68 | fcn_00018a68 (r0, r1);
| if (r5 == 0) {
0x0008f8f0 cbz r5, 0x8f904 | goto label_41;
| }
0x0008f8f2 mov r1, r5 | r1 = r5;
0x0008f8f4 mov r0, r7 | r0 = r7;
0x0008f8f6 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| do {
| if (r6 != 0) {
| label_0:
0x0008f8fa cbz r6, 0x8f904 |
0x0008f8fc mov r1, r6 | r1 = r6;
0x0008f8fe mov r0, r7 | r0 = r7;
0x0008f900 bl 0x159dc | fcn_000159dc (r0, r1);
| }
| label_41:
0x0008f904 ldr.w r2, [pc, 0xa14] |
0x0008f908 ldr.w r3, [pc, 0xa0c] | r3 = *(0x90318);
0x0008f90c add r2, pc | r2 = 0x11fc2c;
0x0008f90e ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0008f910 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0008f912 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0008f914 eors r2, r3 | r2 ^= r3;
0x0008f916 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0008f91a bne.w 0x902e8 | goto label_42;
| }
0x0008f91e add sp, 0xac |
0x0008f920 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_40:
0x0008f924 mov r4, r0 | r4 = r0;
0x0008f926 bl 0x89738 | r0 = fcn_00089738 (r0, r1);
0x0008f92a mov r6, r0 | r6 = r0;
0x0008f92c cmp r0, 0 |
| if (r0 == 0) {
0x0008f92e beq.w 0x8fd98 | goto label_43;
| }
0x0008f932 mov r3, r8 | r3 = r8;
0x0008f934 mov r1, r0 | r1 = r0;
0x0008f936 movs r2, 0x7f | r2 = 0x7f;
0x0008f938 mov r0, r4 | r0 = r4;
0x0008f93a str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0008f93e bl 0x26008 | fcn_00026008 (r0, r1, r2, r3);
0x0008f942 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0008f944 str r0, [sp, 0x24] | var_24h = r0;
0x0008f946 str r3, [sp, 0x28] | var_28h = r3;
0x0008f948 cmp r0, 0 |
| if (r0 == 0) {
0x0008f94a beq.w 0x8fd9c | goto label_44;
| }
| label_4:
0x0008f94e mov.w r8, 1 | r8 = 1;
| label_3:
0x0008f952 mov r1, r6 | r1 = r6;
0x0008f954 mov r0, r4 | r0 = r4;
0x0008f956 bl 0x70e88 | r0 = fcn_00070e88 (r0, r1);
| if (r0 == 0) {
0x0008f95a cbz r0, 0x8f982 | goto label_45;
| }
| label_1:
0x0008f95c ldr r2, [sp, 0x78] | r2 = var_78h;
0x0008f95e movs r6, 0 | r6 = 0;
| if (r2 != 0) {
| label_2:
0x0008f960 cbz r2, 0x8f96c |
0x0008f962 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0008f964 str.w r3, [r2, 0xf0] | __asm ("str.w r3, [r2, 0xf0]");
0x0008f968 movs r3, 0 | r3 = 0;
0x0008f96a str r3, [sp, 0x78] | var_78h = r3;
| }
0x0008f96c mov r1, fp | r1 = fp;
0x0008f96e mov r0, r7 | r0 = r7;
0x0008f970 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x0008f974 cmp r5, 0 |
0x0008f976 beq 0x8f8fa |
| } while (r5 == 0);
0x0008f978 mov r1, r5 | r1 = r5;
0x0008f97a mov r0, r7 | r0 = r7;
0x0008f97c bl 0x18bd0 | fcn_00018bd0 (r0, r1);
0x0008f980 b 0x8f8fa | goto label_0;
| label_45:
0x0008f982 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008f984 mov r1, r6 | r1 = r6;
0x0008f986 mov r0, r4 | r0 = r4;
0x0008f988 subs r2, r3, 0 | r2 = r3 - 0;
0x0008f98a it ne |
| if (r2 == r3) {
0x0008f98c movne r2, 1 | r2 = 1;
| }
0x0008f98e bl 0x263a0 | r0 = fcn_000263a0 (r0, r1, r2);
0x0008f992 mov sb, r0 | sb = r0;
0x0008f994 cmp r0, 0 |
| if (r0 != 0) {
0x0008f996 bne 0x8f95c | goto label_1;
| }
0x0008f998 ldr r0, [r6, 0x48] | r0 = *((r6 + 0x48));
0x0008f99a ldr r1, [r7, 0x10] | r1 = *((r7 + 0x10));
0x0008f99c cmp r0, 0 |
| if (r0 == 0) {
0x0008f99e beq.w 0x902aa | goto label_46;
| }
0x0008f9a2 ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x0008f9a4 cmp r0, r3 |
| if (r0 == r3) {
0x0008f9a6 beq.w 0x8fe0a | goto label_47;
| }
0x0008f9aa add.w r3, r1, 0x10 | r3 = r1 + 0x10;
0x0008f9ae mov sl, sb | sl = sb;
| do {
0x0008f9b0 mov r1, r3 | r1 = r3;
0x0008f9b2 add.w sl, sl, 1 | sl++;
0x0008f9b4 lsrs r1, r0, 8 | r1 = r0 >> 8;
0x0008f9b6 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0008f9b8 adds r3, 0x10 | r3 += 0x10;
0x0008f9ba lsl.w ip, sl, 4 |
0x0008f9be cmp r0, r2 |
0x0008f9c0 bne 0x8f9b0 |
| } while (r0 != r2);
0x0008f9c2 str.w ip, [sp, 0x40] | __asm ("str.w ip, [var_40h]");
| label_8:
0x0008f9c6 ldr r3, [r1] | r3 = *(r1);
0x0008f9c8 mov r0, r4 | r0 = r4;
0x0008f9ca ldr r2, [r6] | r2 = *(r6);
0x0008f9cc movs r1, 9 | r1 = 9;
0x0008f9ce str r3, [sp] | *(sp) = r3;
0x0008f9d0 movs r3, 0 | r3 = 0;
0x0008f9d2 bl 0x25800 | r0 = fcn_00025800 (r0);
0x0008f9d6 cmp r0, 1 |
0x0008f9d8 str r0, [sp, 0x38] | var_38h = r0;
| if (r0 == 1) {
0x0008f9da beq 0x8f95c | goto label_1;
| }
0x0008f9dc ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x0008f9de ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0008f9e0 adds r1, r2, 1 | r1 = r2 + 1;
0x0008f9e2 str r2, [sp, 0x30] | var_30h = r2;
0x0008f9e4 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0008f9e6 str r1, [sp, 0x3c] | var_3ch = r1;
0x0008f9e8 str.w r2, [fp, 0x30] | __asm ("str.w r2, [arg_30h]");
| if (r3 == 0) {
0x0008f9ec cbz r3, 0x8fa00 | goto label_48;
| }
0x0008f9ee adds r1, r2, 2 | r1 = r2 + 2;
| do {
0x0008f9f0 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0008f9f2 add.w r2, r1, sb | r2 = r1 + sb;
0x0008f9f6 add.w sb, sb, 1 | sb++;
0x0008f9fa cmp r3, 0 |
0x0008f9fc bne 0x8f9f0 |
| } while (r3 != 0);
0x0008f9fe str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
| label_48:
0x0008fa00 ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r3 != 0) {
0x0008fa02 cbz r3, 0x8fa12 |
0x0008fa04 ldr r2, [r6] | r2 = *(r6);
0x0008fa06 ldr.w r3, [r4, 0xf0] | r3 = *((r4 + 0xf0));
0x0008fa0a str r4, [sp, 0x78] | var_78h = r4;
0x0008fa0c str.w r2, [r4, 0xf0] | __asm ("str.w r2, [r4, 0xf0]");
0x0008fa10 str r3, [sp, 0x74] | var_74h = r3;
| }
0x0008fa12 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0008fa14 str r3, [sp, 0x2c] | var_2ch = r3;
0x0008fa16 cmp r3, 0 |
| if (r3 == 0) {
0x0008fa18 beq.w 0x8fdc4 | goto label_49;
| }
| label_5:
0x0008fa1c ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
| if (r3 == 0) {
0x0008fa1e cbnz r3, 0x8fa2e |
0x0008fa20 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0008fa22 ldrb.w r3, [r2, 0x96] | r3 = *((r2 + 0x96));
0x0008fa26 orr r3, r3, 0x10 | r3 |= 0x10;
0x0008fa2a strb.w r3, [r2, 0x96] | *((r2 + 0x96)) = r3;
| }
0x0008fa2e mov r2, sl | r2 = sl;
0x0008fa30 mov r1, r8 | r1 = r8;
0x0008fa32 mov r0, r4 | r0 = r4;
0x0008fa34 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x0008fa38 ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r3 != 0) {
0x0008fa3a cbz r3, 0x8fa4e |
0x0008fa3c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008fa3e mov r2, r5 | r2 = r5;
0x0008fa40 mov r1, r6 | r1 = r6;
0x0008fa42 mov r0, r4 | r0 = r4;
0x0008fa44 bl 0x70d8c | fcn_00070d8c (r0, r1, r2, r3);
0x0008fa48 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008fa4a strd r3, r3, [sp, 0x6c] | __asm ("strd r3, r3, [var_6ch]");
| }
0x0008fa4e movs r3, 0 | r3 = 0;
0x0008fa50 mov r1, r5 | r1 = r5;
0x0008fa52 add r0, sp, 0x7c | r0 += var_7ch;
0x0008fa54 strd r4, fp, [sp, 0x7c] | __asm ("strd r4, fp, [var_0hx7c]");
0x0008fa58 strd r3, r3, [sp, 0x84] | __asm ("strd r3, r3, [var_84h]");
0x0008fa5c strd r3, r3, [sp, 0x8c] | __asm ("strd r3, r3, [var_8ch]");
0x0008fa60 strd r3, r3, [sp, 0x94] | __asm ("strd r3, r3, [var_94h]");
0x0008fa64 bl 0x3040c | fcn_0003040c (r0, r1, r2);
0x0008fa68 str r0, [sp, 0x34] | var_34h = r0;
0x0008fa6a cmp r0, 0 |
| if (r0 != 0) {
0x0008fa6c bne.w 0x8f95c | goto label_1;
| }
0x0008fa70 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x0008fa72 lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
| if (r0 < r3) {
0x0008fa74 bpl 0x8fa82 |
0x0008fa76 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
| if (r3 != 0) {
0x0008fa78 cbnz r3, 0x8fa82 | goto label_26;
| }
0x0008fa7a ldr r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x0008fa7c cmp r3, 0 |
| if (r3 == 0) {
0x0008fa7e beq.w 0x90164 | goto label_50;
| }
| }
| label_26:
0x0008fa82 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008fa84 str r3, [sp, 0x44] | var_44h = r3;
| label_27:
0x0008fa86 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008fa88 orrs r3, r5 | r3 |= r5;
| if (r3 == r5) {
0x0008fa8a bne 0x8fa9c |
0x0008fa8c cmp.w r8, 0 |
| if (r8 != 0) {
0x0008fa90 bne.w 0x8fe12 | goto label_51;
| }
0x0008fa94 ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x0008fa96 cmp r3, 0 |
| if (r3 == 0) {
0x0008fa98 beq.w 0x90094 | goto label_52;
| }
| }
0x0008fa9c ldr r3, [sp, 0x94] | r3 = var_94h;
0x0008fa9e and r3, r3, 0x40 | r3 &= 0x40;
0x0008faa2 orrs.w r3, r3, r8 | r3 |= r8;
0x0008faa6 ite eq |
| if (r3 != r3) {
0x0008faa8 moveq r3, 1 | r3 = 1;
| }
| if (r3 == r3) {
0x0008faaa movne r3, 0 | r3 = 0;
| }
0x0008faac lsls r3, r3, 3 | r3 <<= 3;
0x0008faae orr sl, r3, 0x14 | sl = r3 | 0x14;
| label_9:
0x0008fab2 ldr r2, [r6, 0x24] | r2 = *((r6 + 0x24));
0x0008fab4 ands r2, r2, 0x80 | r2 &= 0x80;
| if (r2 == r2) {
0x0008fab8 beq.w 0x8fdea | goto label_53;
| }
0x0008fabc ldr.w r8, [r6, 8] | r8 = *((r6 + 8));
0x0008fac0 mov r2, r8 | r2 = r8;
0x0008fac2 cmp.w r8, 0 |
| if (r8 != 0) {
0x0008fac6 bne 0x8fad4 | goto label_54;
| }
0x0008fac8 b.w 0x9030e | goto label_55;
| do {
0x0008facc ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x0008face cmp r2, 0 |
| if (r2 == 0) {
0x0008fad0 beq.w 0x9030e | goto label_55;
| }
| label_54:
0x0008fad4 ldrb.w r3, [r2, 0x37] | r3 = *((r2 + 0x37));
0x0008fad8 and r3, r3, 3 | r3 &= 3;
0x0008fadc cmp r3, 2 |
0x0008fade bne 0x8facc |
| } while (r3 != 2);
0x0008fae0 ldrsh.w r1, [r2, 0x32] | r1 = *((r2 + 0x32));
0x0008fae4 mov r8, r2 | r8 = r2;
0x0008fae6 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0008fae8 ldrd r0, ip, [r4, 0x28] | __asm ("ldrd r0, ip, [r4, 0x28]");
0x0008faec str r1, [sp, 0x38] | var_38h = r1;
0x0008faee ldr r3, [r2, 0x6c] | r3 = *((r2 + 0x6c));
0x0008faf0 ldr r2, [r2, 0x70] | r2 = *((r2 + 0x70));
0x0008faf2 add r1, ip | r1 += ip;
0x0008faf4 str r1, [r4, 0x2c] | *((r4 + 0x2c)) = r1;
0x0008faf6 add.w r1, ip, 1 | r1 = ip + 1;
0x0008fafa str r3, [sp, 0x50] | var_50h = r3;
0x0008fafc adds r3, r0, 1 | r3 = r0 + 1;
0x0008fafe str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0008fb00 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008fb02 str r0, [sp, 0x4c] | var_4ch = r0;
0x0008fb04 str r1, [sp, 0x48] | var_48h = r1;
0x0008fb06 cmp r3, r2 |
| if (r3 >= r2) {
0x0008fb08 bge.w 0x8ff5e | goto label_56;
| }
0x0008fb0c ldr r2, [sp, 0x50] | r2 = var_50h;
0x0008fb0e movs r0, 0 | r0 = 0;
0x0008fb10 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0008fb12 mov.w ip, 0x70 |
0x0008fb16 add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x0008fb1a ldr.w lr, [r1, 0x68] |
0x0008fb1c b 0x8fbf0 | goto label_57;
0x0008fb1e adds r2, 1 | r2++;
0x0008fb20 str r2, [r1, 0x6c] | *((r1 + 0x6c)) = r2;
0x0008fb22 lsls r3, r3, 2 | r3 <<= 2;
0x0008fb24 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0008fb26 add.w r2, lr, r3 | r2 = lr + r3;
0x0008fb2a str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x0008fb2c str r1, [r2, 4] | *((r2 + 4)) = r1;
0x0008fb2e ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008fb30 strd r1, r0, [r2, 8] | __asm ("strd r1, r0, [r2, 8]");
0x0008fb34 str.w ip, [lr, r3] | __asm ("str.w ip, [lr, r3]");
| label_17:
0x0008fb38 movs r3, 0 | r3 = 0;
0x0008fb3a mov r1, r8 | r1 = r8;
0x0008fb3c mov r0, r4 | r0 = r4;
0x0008fb3e str r3, [sp, 0x58] | var_58h = r3;
0x0008fb40 bl 0x2d434 | fcn_0002d434 (r0, r1);
| label_7:
0x0008fb44 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008fb46 mov r2, r5 | r2 = r5;
0x0008fb48 mov r1, fp | r1 = fp;
0x0008fb4a mov r0, r4 | r0 = r4;
0x0008fb4c strd sl, r3, [sp, 4] | __asm ("strd sl, r3, [var_8h]");
0x0008fb50 movs r3, 0 | r3 = 0;
0x0008fb52 str r3, [sp] | *(sp) = r3;
0x0008fb54 bl 0x6b788 | fcn_0006b788 (r0, r1, r2, r3, r4, r5, r6);
0x0008fb58 str r0, [sp, 0x40] | var_40h = r0;
0x0008fb5a cmp r0, 0 |
| if (r0 == 0) {
0x0008fb5c beq.w 0x8f95c | goto label_1;
| }
0x0008fb60 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008fb62 ldr r0, [r3, 0x14] | r0 = *((r3 + 0x14));
0x0008fb64 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x0008fb66 ldrb.w r3, [r3, 0x2e] | r3 = *((r3 + 0x2e));
0x0008fb6a mov r2, r3 | r2 = r3;
0x0008fb6c str r3, [sp, 0x3c] | var_3ch = r3;
0x0008fb6e cmp r2, 1 |
0x0008fb70 add r3, sp, 0x9c | r3 += var_9ch;
0x0008fb72 stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
| if (r2 != 1) {
0x0008fb74 beq 0x8fb82 |
0x0008fb76 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0008fb78 movs r2, 1 | r2 = 1;
0x0008fb7a cmp r3, 0 |
0x0008fb7c it eq |
| if (r3 != 0) {
0x0008fb7e moveq r3, r4 | r3 = r4;
| }
0x0008fb80 strb r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
| }
0x0008fb82 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0008fb84 ldrb.w r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x0008fb88 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x0008fb8a bmi.w 0x8fe26 | goto label_58;
| }
| label_11:
0x0008fb8e ldr r3, [sp, 0x44] | r3 = var_44h;
0x0008fb90 cmp r3, 0 |
| if (r3 != 0) {
0x0008fb92 bne.w 0x8fdd8 | goto label_59;
| }
| label_6:
0x0008fb96 cmp.w r8, 0 |
| if (r8 == 0) {
0x0008fb9a beq.w 0x8ffa2 | goto label_60;
| }
0x0008fb9e ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008fba0 cmp r3, 0 |
| if (r3 <= 0) {
0x0008fba2 ble 0x8fbe2 | goto label_61;
| }
0x0008fba4 str r7, [sp, 0x54] | var_54h = r7;
0x0008fba6 mov.w sl, 0 | sl = 0;
0x0008fbaa str r4, [sp, 0x60] | var_60h = r4;
0x0008fbac str r5, [sp, 0x64] | var_64h = r5;
0x0008fbae ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x0008fbb0 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0008fbb2 ldr r5, [sp, 0x48] | r5 = var_48h;
0x0008fbb4 str.w sb, [sp, 0x5c] | __asm ("str.w sb, [var_5ch]");
0x0008fbb8 mov sb, r3 | sb = r3;
| do {
0x0008fbba ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0008fbbe add.w r2, r5, sl | r2 = r5 + sl;
0x0008fbc2 mov r1, r6 | r1 = r6;
0x0008fbc4 mov r0, r7 | r0 = r7;
0x0008fbc6 ldrsh.w r3, [r3, sl, lsl 1] | offset_0 = sl << 1;
| r3 = *((r3 + offset_0));
0x0008fbca add.w sl, sl, 1 | sl++;
0x0008fbce str r2, [sp] | *(sp) = r2;
0x0008fbd0 mov r2, r4 | r2 = r4;
0x0008fbd2 bl 0x66f40 | fcn_00066f40 (r0, r1, r2, r3, r4);
0x0008fbd6 cmp sl, sb |
0x0008fbd8 bne 0x8fbba |
| } while (sl != sb);
0x0008fbda ldr r7, [sp, 0x54] | r7 = var_54h;
0x0008fbdc ldrd sb, r4, [sp, 0x5c] | __asm ("ldrd sb, r4, [var_5ch]");
0x0008fbe0 ldr r5, [sp, 0x64] | r5 = var_64h;
| label_61:
0x0008fbe2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008fbe4 cmp r3, 0 |
| if (r3 != 0) {
0x0008fbe6 bne.w 0x8fe3a | goto label_62;
| }
0x0008fbea ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008fbec mov r1, r8 | r1 = r8;
0x0008fbee ldr r0, [r4] | r0 = *(r4);
| label_57:
0x0008fbf0 add.w sl, r3, 1 | sl = r3 + 1;
0x0008fbf4 str.w sl, [r4, 0x2c] | __asm ("str.w sl, [r4, 0x2c]");
0x0008fbf8 bl 0x1305c | fcn_0001305c (r0, r1);
0x0008fbfc ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008fbfe movs r1, 0x5d | r1 = 0x5d;
0x0008fc00 ldr.w sb, [sp, 0x2c] | sb = var_2ch;
0x0008fc04 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0008fc06 str r0, [sp, 4] | var_4h = r0;
0x0008fc08 str r3, [sp, 8] | var_8h = r3;
0x0008fc0a mov r0, sb | r0 = sb;
0x0008fc0c str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0008fc10 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0008fc14 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008fc16 movs r1, 0x86 | r1 = 0x86;
0x0008fc18 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008fc1a mov r0, sb | r0 = sb;
0x0008fc1c str r3, [sp, 4] | var_4h = r3;
0x0008fc1e ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008fc20 str r3, [sp] | *(sp) = r3;
0x0008fc22 mov r3, sl | r3 = sl;
0x0008fc24 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0008fc28 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0008fc2a bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0008fc2e ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008fc30 cmp r3, 0 |
| if (r3 == 0) {
0x0008fc32 beq.w 0x90054 | goto label_63;
| }
0x0008fc36 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008fc38 ldr r2, [r3, 0x6c] | r2 = *((r3 + 0x6c));
0x0008fc3a ldr r3, [r3, 0x70] | r3 = *((r3 + 0x70));
0x0008fc3c str r2, [sp, 0x34] | var_34h = r2;
0x0008fc3e ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008fc40 strd r2, r2, [sp, 0x50] | __asm ("strd r2, r2, [var_50h]");
0x0008fc44 str r2, [sp, 0x38] | var_38h = r2;
| label_23:
0x0008fc46 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008fc48 cmp r2, r3 |
| if (r2 >= r3) {
0x0008fc4a bge.w 0x9026c | goto label_64;
| }
0x0008fc4e ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008fc50 mov.w lr, 0 | lr = 0;
0x0008fc54 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0008fc56 mov.w ip, 0x25 |
0x0008fc5a add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x0008fc5e ldr r0, [r1, 0x68] | r0 = *((r1 + 0x68));
0x0008fc60 adds r2, 1 | r2++;
0x0008fc62 str r2, [r1, 0x6c] | *((r1 + 0x6c)) = r2;
0x0008fc64 lsls r3, r3, 2 | r3 <<= 2;
0x0008fc66 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0008fc68 adds r2, r0, r3 | r2 = r0 + r3;
0x0008fc6a strd lr, lr, [r2, 0xc] | __asm ("strd lr, lr, [r2, 0xc]");
0x0008fc6e strd r1, lr, [r2, 4] | __asm ("strd r1, lr, [r2, 4]");
0x0008fc72 str.w ip, [r0, r3] | __asm ("str.w ip, [r0, r3]");
| label_32:
0x0008fc76 ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x0008fc78 cmp r3, 0 |
| if (r3 == 0) {
0x0008fc7a beq.w 0x90028 | goto label_65;
| }
0x0008fc7e ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008fc80 movs r3, 0 | r3 = 0;
0x0008fc82 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008fc84 movs r1, 0x5b | r1 = 0x5b;
0x0008fc86 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0008fc8a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_20:
0x0008fc8e ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x0008fc90 cmp r3, 0 |
| if (r3 == 0) {
0x0008fc92 beq.w 0x90048 | goto label_66;
| }
| label_16:
0x0008fc96 ldr.w sb, [r6, 0x40] | sb = *((r6 + 0x40));
0x0008fc9a mov r3, sb | r3 = sb;
0x0008fc9c cmp.w sb, 0 |
| if (sb != 0) {
0x0008fca0 bne 0x8fca8 | goto label_67;
| }
0x0008fca2 b 0x8fcb0 | goto label_68;
| do {
0x0008fca4 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
| if (r3 == 0) {
0x0008fca6 cbz r3, 0x8fcae | goto label_69;
| }
| label_67:
0x0008fca8 ldr r2, [r3] | r2 = *(r3);
0x0008fcaa cmp r7, r2 |
0x0008fcac bne 0x8fca4 |
| } while (r7 != r2);
| label_69:
0x0008fcae mov sb, r3 | sb = r3;
| label_68:
0x0008fcb0 mov r1, r6 | r1 = r6;
0x0008fcb2 mov r0, r4 | r0 = r4;
0x0008fcb4 bl 0x1a2f4 | fcn_0001a2f4 (r0, r1);
0x0008fcb8 ldr r2, [r4, 0x74] | r2 = *((r4 + 0x74));
0x0008fcba movs r3, 1 | r3 = 1;
0x0008fcbc cmp r2, 0 |
0x0008fcbe it eq |
| if (r2 != 0) {
0x0008fcc0 moveq r2, r4 | r2 = r4;
| }
0x0008fcc2 strb r3, [r2, 0x15] | *((r2 + 0x15)) = r3;
0x0008fcc4 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008fcc6 cmp r2, r3 |
| if (r2 == r3) {
0x0008fcc8 beq.w 0x8fef0 | goto label_70;
| }
0x0008fccc ldr r6, [sp, 0x2c] | r6 = var_2ch;
0x0008fcce mvn r2, 0xb | r2 = ~0xb;
0x0008fcd2 str r2, [sp, 8] | var_8h = r2;
0x0008fcd4 movs r1, 0xa | r1 = 0xa;
0x0008fcd6 movs r2, 0 | r2 = 0;
0x0008fcd8 strd sl, sb, [sp] | __asm ("strd sl, sb, [sp]");
0x0008fcdc mov r0, r6 | r0 = r6;
0x0008fcde bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0008fce2 ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x0008fce4 cmp r3, 0 |
| if (r3 > 0) {
0x0008fce6 ble 0x8fcfa |
| label_14:
0x0008fce8 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0008fcea add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0008fcee ldr r2, [r2, 0x68] | r2 = *((r2 + 0x68));
0x0008fcf0 add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x0008fcf4 movs r3, 2 | r3 = 2;
0x0008fcf6 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
| label_12:
0x0008fcfa ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008fcfc cmp r3, 0 |
| if (r3 != 0) {
0x0008fcfe bne.w 0x8ff26 | goto label_71;
| }
0x0008fd02 cmp.w r8, 0 |
| if (r8 == 0) {
0x0008fd06 beq.w 0x8ff72 | goto label_72;
| }
0x0008fd0a ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
0x0008fd0e movs r1, 5 | r1 = 5;
0x0008fd10 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008fd12 ldr r6, [sp, 0x34] | r6 = var_34h;
0x0008fd14 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0008fd16 mov r0, r8 | r0 = r8;
0x0008fd18 str r3, [sp] | *(sp) = r3;
0x0008fd1a adds r3, r6, 1 | r3 = r6 + 1;
0x0008fd1c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008fd20 ldr.w r2, [r8, 0x6c] | r2 = *((r8 + 0x6c));
0x0008fd24 cmp r6, 0 |
0x0008fd26 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008fd28 mov r3, r8 | r3 = r8;
0x0008fd2a itt lt |
| if (r6 >= 0) {
0x0008fd2c addlt r3, r2, -1 | r3 = r2 + -1;
| }
| if (r6 < 0) {
0x0008fd30 str r3, [sp, 0x34] | var_34h = r3;
| }
0x0008fd32 ldr r3, [r0] | r3 = *(r0);
0x0008fd34 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008fd38 cmp r3, 0 |
| if (r3 == 0) {
0x0008fd3a beq.w 0x8fee2 | goto label_18;
| }
0x0008fd3e ldr.w r3, [pc, 0x5e0] | r3 = *(0x00090320);
0x0008fd42 add r3, pc | r3 += pc;
0x0008fd44 adds r3, 4 | r3 += 4;
| label_13:
0x0008fd46 ldr r6, [sp, 0x54] | r6 = var_54h;
0x0008fd48 str r2, [r3, 8] | *((r3 + 8)) = r2;
| label_15:
0x0008fd4a ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
| if (r3 == 0) {
0x0008fd4c cbnz r3, 0x8fd56 |
0x0008fd4e ldr r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x0008fd50 cmp r3, 0 |
| if (r3 == 0) {
0x0008fd52 beq.w 0x90038 | goto label_73;
| }
| }
| label_21:
0x0008fd56 ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 != 0) {
0x0008fd58 cbz r3, 0x8fd98 |
0x0008fd5a ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x0008fd5c movs r3, 0 | r3 = 0;
0x0008fd5e ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008fd60 movs r1, 0x50 | r1 = 0x50;
0x0008fd62 str r3, [sp] | *(sp) = r3;
0x0008fd64 movs r3, 1 | r3 = 1;
0x0008fd66 mov r0, r4 | r0 = r4;
0x0008fd68 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008fd6c movs r1, 1 | r1 = 1;
0x0008fd6e mov r0, r4 | r0 = r4;
0x0008fd70 bl 0x1ad08 | fcn_0001ad08 (r0, r1);
0x0008fd74 ldr r3, [r4] | r3 = *(r4);
0x0008fd76 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 != 0) {
0x0008fd7a cbnz r3, 0x8fd98 | goto label_43;
| }
0x0008fd7c ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0008fd7e ldr.w r1, [pc, 0x5a4] | r1 = *(0x00090324);
0x0008fd82 ldr r0, [r2, 0x74] | r0 = *((r2 + 0x74));
0x0008fd84 mov.w r2, -1 | r2 = -1;
0x0008fd88 str r3, [sp, 4] | var_4h = r3;
0x0008fd8a movs r3, 1 | r3 = 1;
0x0008fd8c str r3, [sp] | *(sp) = r3;
0x0008fd8e add r1, pc | r1 += pc;
0x0008fd90 mov.w r3, -1 | r3 = -1;
0x0008fd94 bl 0x26e0c | fcn_00026e0c (r0, r1, r2, r3, r4, r5);
| }
| label_43:
0x0008fd98 ldr r2, [sp, 0x78] | r2 = var_78h;
0x0008fd9a b 0x8f960 | goto label_2;
| label_44:
0x0008fd9c ldr r3, [r4] | r3 = *(r4);
0x0008fd9e ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0008fda0 lsls r2, r3, 0x11 | r2 = r3 << 0x11;
| if (r2 >= r3) {
0x0008fda2 bpl.w 0x8f952 | goto label_3;
| }
0x0008fda6 ldr r0, [r6, 0x48] | r0 = *((r6 + 0x48));
0x0008fda8 ldr r1, [r6] | r1 = *(r6);
0x0008fdaa ldr r2, [sp, 0x24] | r2 = var_24h;
0x0008fdac adds r0, 0x38 | r0 += 0x38;
0x0008fdae bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x0008fdb2 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0008fdb4 cmp r3, 0 |
| if (r3 != 0) {
0x0008fdb6 bne.w 0x8f94e | goto label_4;
| }
0x0008fdba ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0008fdbc cmp r3, 0 |
| if (r3 != 0) {
0x0008fdbe bne.w 0x8f94e | goto label_4;
| }
0x0008fdc2 b 0x8f952 | goto label_3;
| label_49:
0x0008fdc4 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
| if (r3 == 0) {
0x0008fdc6 cbz r3, 0x8fe18 | goto label_74;
| }
| label_10:
0x0008fdc8 mov r0, r4 | r0 = r4;
0x0008fdca bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x0008fdce str r0, [sp, 0x2c] | var_2ch = r0;
0x0008fdd0 cmp r0, 0 |
| if (r0 != 0) {
0x0008fdd2 bne.w 0x8fa1c | goto label_5;
| }
0x0008fdd6 b 0x8f95c | goto label_1;
| label_59:
0x0008fdd8 movs r3, 0 | r3 = 0;
0x0008fdda ldr r2, [sp, 0x44] | r2 = var_44h;
0x0008fddc str r3, [sp] | *(sp) = r3;
0x0008fdde movs r1, 0x53 | r1 = 0x53;
0x0008fde0 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008fde2 movs r3, 1 | r3 = 1;
0x0008fde4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008fde8 b 0x8fb96 | goto label_6;
| label_53:
0x0008fdea str r2, [sp] | *(sp) = r2;
0x0008fdec movs r1, 0x48 | r1 = 0x48;
0x0008fdee ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008fdf0 mov r8, r2 | r8 = r2;
0x0008fdf2 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008fdf4 str r2, [sp, 0x50] | var_50h = r2;
0x0008fdf6 adds r3, 1 | r3++;
0x0008fdf8 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0008fdfa str r3, [sp, 0x58] | var_58h = r3;
0x0008fdfc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008fe00 movs r2, 1 | r2 = 1;
0x0008fe02 strd r8, r8, [sp, 0x48] | __asm ("strd r8, r8, [var_48h]");
0x0008fe06 str r2, [sp, 0x38] | var_38h = r2;
0x0008fe08 b 0x8fb44 | goto label_7;
| label_47:
0x0008fe0a mov sl, sb | sl = sb;
0x0008fe0c str.w sb, [sp, 0x40] | __asm ("str.w sb, [var_40h]");
0x0008fe10 b 0x8f9c6 | goto label_8;
| label_51:
0x0008fe12 mov.w sl, 0x14 | sl = 0x14;
0x0008fe16 b 0x8fab2 | goto label_9;
| label_74:
0x0008fe18 ldr r3, [r4] | r3 = *(r4);
0x0008fe1a ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0008fe1c lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x0008fe1e itt pl |
| if (r3 < r3) {
0x0008fe20 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x0008fe22 strbpl r3, [r4, 0x17] | *((r4 + 0x17)) = r3;
| }
0x0008fe24 b 0x8fdc8 | goto label_10;
| label_58:
0x0008fe26 movs r3, 0 | r3 = 0;
0x0008fe28 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008fe2a ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008fe2c movs r1, 0x8b | r1 = 0x8b;
0x0008fe2e str r3, [sp] | *(sp) = r3;
0x0008fe30 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008fe34 b 0x8fb8e | goto label_11;
| label_19:
0x0008fe36 str.w sl, [sp, 0x48] | __asm ("str.w sl, [var_48h]");
| label_62:
0x0008fe3a add.w r2, sb, 2 | r2 = sb + 2;
0x0008fe3e mov r0, r7 | r0 = r7;
0x0008fe40 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0008fe42 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x0008fe46 mov r3, r0 | r3 = r0;
0x0008fe48 str r0, [sp, 0x54] | var_54h = r0;
0x0008fe4a cmp r0, 0 |
| if (r0 == 0) {
0x0008fe4c beq.w 0x90284 | goto label_75;
| }
0x0008fe50 add.w r2, sb, 1 | r2 = sb + 1;
0x0008fe54 movs r1, 1 | r1 = 1;
0x0008fe56 blx 0x8264 | fcn_00008264 ();
0x0008fe5a ldr r1, [sp, 0x54] | r1 = var_54h;
0x0008fe5c movs r2, 0 | r2 = 0;
0x0008fe5e add sb, r1 | sb += r1;
0x0008fe60 strb.w r2, [sb, 1] | *((sb + 1)) = r2;
0x0008fe64 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0008fe66 cmp r3, r2 |
0x0008fe68 ittt ge |
| if (r3 < r2) {
0x0008fe6a ldrge r0, [sp, 0x30] | r0 = var_30h;
| }
| if (r3 < r2) {
0x0008fe6c subge r3, r3, r0 | r3 -= r0;
| }
| if (r3 < r2) {
0x0008fe6e strbge r2, [r1, r3] | *((r1 + r3)) = r2;
| }
0x0008fe70 ldr r3, [sp, 0xa0] | r3 = var_a0h;
0x0008fe72 cmp r3, 0 |
| if (r3 >= 0) {
0x0008fe74 blt 0x8fe80 |
0x0008fe76 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008fe78 ldr r1, [sp, 0x54] | r1 = var_54h;
0x0008fe7a subs r3, r3, r2 | r3 -= r2;
0x0008fe7c movs r2, 0 | r2 = 0;
0x0008fe7e strb r2, [r1, r3] | *((r1 + r3)) = r2;
| }
0x0008fe80 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008fe82 cmp r3, 0 |
| if (r3 != 0) {
0x0008fe84 bne.w 0x90188 | goto label_76;
| }
| label_29:
0x0008fe88 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0008fe8a subs r3, 1 | r3--;
0x0008fe8c str r3, [sp, 0x50] | var_50h = r3;
0x0008fe8e str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
0x0008fe90 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008fe92 cmp r3, 0 |
| if (r3 == 0) {
0x0008fe94 beq.w 0x901c4 | goto label_77;
| }
| label_36:
0x0008fe98 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
| label_30:
0x0008fe9a mov ip, r1 |
0x0008fe9c cmp r1, 0 |
| if (r1 != 0) {
0x0008fe9e bne 0x8ff58 | goto label_78;
| }
0x0008fea0 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008fea2 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0008fea4 ldr r2, [sp, 0x54] | r2 = var_54h;
0x0008fea6 subs r0, r3, r0 | r0 = r3 - r0;
0x0008fea8 ldrb r0, [r2, r0] | r0 = *((r2 + r0));
0x0008feaa cmp r0, 0 |
| if (r0 != 0) {
0x0008feac bne.w 0x9024a | goto label_79;
| }
| label_22:
0x0008feb0 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0008feb2 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0008feb4 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0008feb6 str r1, [sp, 8] | var_8h = r1;
0x0008feb8 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0008feba str r0, [sp, 0x14] | var_14h = r0;
0x0008febc str.w ip, [sp, 0x34] | __asm ("str.w ip, [var_34h]");
0x0008fec0 str r1, [sp, 4] | var_4h = r1;
0x0008fec2 mov r1, r6 | r1 = r6;
0x0008fec4 ldrb r0, [r4, 0x12] | r0 = *((r4 + 0x12));
0x0008fec6 clz r0, r0 | r0 &= r0;
0x0008feca lsrs r0, r0, 5 | r0 >>= 5;
0x0008fecc str r0, [sp, 0xc] | var_ch = r0;
0x0008fece ldr r0, [sp, 0xa0] | r0 = var_a0h;
0x0008fed0 str r0, [sp, 0x18] | var_18h = r0;
0x0008fed2 ldr r0, [sp, 0x70] | r0 = var_70h;
0x0008fed4 str r0, [sp] | *(sp) = r0;
0x0008fed6 movs r0, 0xb | r0 = 0xb;
0x0008fed8 str r0, [sp, 0x10] | var_10h = r0;
0x0008feda mov r0, r4 | r0 = r4;
0x0008fedc bl 0x8c7d0 | fcn_0008c7d0 (r0, r1, r2, r3);
0x0008fee0 b 0x8fcfa | goto label_12;
| label_18:
0x0008fee2 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0008fee4 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0008fee8 ldr r3, [r0, 0x68] | r3 = *((r0 + 0x68));
0x0008feea add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
0x0008feee b 0x8fd46 | goto label_13;
| label_70:
0x0008fef0 movs r3, 0 | r3 = 0;
0x0008fef2 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008fef4 str r3, [sp] | *(sp) = r3;
0x0008fef6 movs r1, 0x76 | r1 = 0x76;
0x0008fef8 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008fefa bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008fefe ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0008ff00 cmp r3, 0 |
| if (r3 == 0) {
0x0008ff02 beq.w 0x90292 | goto label_80;
| }
0x0008ff04 strh r6, [r0, 0xe] | *((r0 + 0xe)) = r6;
| label_34:
0x0008ff06 ldr r6, [sp, 0x2c] | r6 = var_2ch;
0x0008ff08 mvn r3, 0xb | r3 = ~0xb;
0x0008ff0c str r3, [sp, 8] | var_8h = r3;
0x0008ff0e movs r2, 0 | r2 = 0;
0x0008ff10 movs r3, 1 | r3 = 1;
0x0008ff12 movs r1, 0xa | r1 = 0xa;
0x0008ff14 mov r0, r6 | r0 = r6;
0x0008ff16 strd sl, sb, [sp] | __asm ("strd sl, sb, [sp]");
0x0008ff1a bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0008ff1e ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x0008ff20 cmp r3, 0 |
| if (r3 > 0) {
0x0008ff22 bgt.w 0x8fce8 | goto label_14;
| }
| label_71:
0x0008ff26 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008ff28 mvns r2, r3 | r2 = ~r3;
0x0008ff2a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008ff2c ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x0008ff2e ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x0008ff32 cmn r1, r3 |
| if (r1 < r3) {
0x0008ff34 bmi.w 0x90264 | goto label_81;
| }
0x0008ff38 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0008ff3a ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x0008ff3c ldr r1, [r1, 0x6c] | r1 = *((r1 + 0x6c));
0x0008ff3e str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
| label_31:
0x0008ff42 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0008ff44 bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0008ff48 ldr r6, [sp, 0x54] | r6 = var_54h;
0x0008ff4a b 0x8fd4a | goto label_15;
| label_35:
0x0008ff4c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008ff4e ldr.w sl, [sp, 0x48] | sl = var_48h;
0x0008ff52 cmp r3, 0 |
| if (r3 == 0) {
0x0008ff54 beq.w 0x90082 | goto label_39;
| }
| label_78:
0x0008ff58 ldr.w sl, [sp, 0x48] | sl = var_48h;
0x0008ff5c b 0x8fc96 | goto label_16;
| label_56:
0x0008ff5e movs r3, 0 | r3 = 0;
0x0008ff60 mov r2, r0 | r2 = r0;
0x0008ff62 str r3, [sp] | *(sp) = r3;
0x0008ff64 movs r1, 0x70 | r1 = 0x70;
0x0008ff66 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008ff68 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008ff6a bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0008ff6e str r0, [sp, 0x50] | var_50h = r0;
0x0008ff70 b 0x8fb38 | goto label_17;
| label_72:
0x0008ff72 ldr.w r8, [sp, 0x34] | r8 = var_34h;
0x0008ff76 ldr r6, [sp, 0x2c] | r6 = var_2ch;
0x0008ff78 mov r1, r8 | r1 = r8;
0x0008ff7a mov r0, r6 | r0 = r6;
0x0008ff7c bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0008ff80 ldr r2, [r6, 0x6c] | r2 = *((r6 + 0x6c));
0x0008ff82 mov r3, r8 | r3 = r8;
0x0008ff84 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008ff86 cmp r3, 0 |
0x0008ff88 itt lt |
| if (r3 >= 0) {
0x0008ff8a addlt r3, r2, -1 | r3 = r2 + -1;
| }
| if (r3 < 0) {
0x0008ff8e str r3, [sp, 0x34] | var_34h = r3;
| }
0x0008ff90 ldr r3, [r0] | r3 = *(r0);
0x0008ff92 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008ff96 cmp r3, 0 |
| if (r3 == 0) {
0x0008ff98 beq 0x8fee2 | goto label_18;
| }
0x0008ff9a ldr r3, [pc, 0x38c] |
0x0008ff9c add r3, pc | r3 = 0x1202ca;
0x0008ff9e adds r3, 4 | r3 += 4;
0x0008ffa0 b 0x8fd46 | goto label_13;
| label_60:
0x0008ffa2 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0008ffa6 movs r1, 0x83 | r1 = 0x83;
0x0008ffa8 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x0008ffaa ldr r2, [sp, 0x30] | r2 = var_30h;
0x0008ffac ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008ffae add.w sl, r3, 1 | sl = r3 + 1;
0x0008ffb2 mov r3, sl | r3 = sl;
0x0008ffb4 str.w sl, [r4, 0x2c] | __asm ("str.w sl, [r4, 0x2c]");
0x0008ffb8 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ffbc ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008ffbe cmp r3, 0 |
| if (r3 != 0) {
0x0008ffc0 bne.w 0x8fe36 | goto label_19;
| }
0x0008ffc4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0008ffc6 movs r1, 0x97 | r1 = 0x97;
0x0008ffc8 ldr r2, [sp, 0x58] | r2 = var_58h;
0x0008ffca ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008ffcc str r3, [sp] | *(sp) = r3;
0x0008ffce mov r3, sl | r3 = sl;
0x0008ffd0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008ffd4 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0008ffd6 bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0008ffda ldr r3, [sp, 0x28] | r3 = var_28h;
0x0008ffdc cmp r3, 0 |
| if (r3 == 0) {
0x0008ffde beq.w 0x9027e | goto label_82;
| }
0x0008ffe2 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0008ffe4 ldr r2, [r3, 0x6c] | r2 = *((r3 + 0x6c));
0x0008ffe6 ldr r3, [r3, 0x70] | r3 = *((r3 + 0x70));
0x0008ffe8 str r2, [sp, 0x34] | var_34h = r2;
0x0008ffea ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008ffec strd r2, r2, [sp, 0x50] | __asm ("strd r2, r2, [var_50h]");
0x0008fff0 movs r2, 1 | r2 = 1;
0x0008fff2 str r2, [sp, 0x38] | var_38h = r2;
| label_24:
0x0008fff4 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008fff6 cmp r3, r2 |
| if (r3 <= r2) {
0x0008fff8 ble.w 0x90296 | goto label_83;
| }
0x0008fffc ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008fffe movs r0, 0 | r0 = 0;
0x00090000 movs r0, r0 |
0x00090002 movs r0, r0 |
0x00090004 lsrs r2, r5, 0x10 | r2 = r5 >> 0x10;
0x00090006 add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x00090008 lsls r2, r0, 0xe | r2 = r0 << 0xe;
0x0009000a ldr.w lr, [r1, 0x68] |
0x0009000e adds r2, 1 | r2++;
0x00090010 str r2, [r1, 0x6c] | *((r1 + 0x6c)) = r2;
0x00090012 lsls r3, r3, 2 | r3 <<= 2;
0x00090014 ldr r1, [sp, 0x58] | r1 = var_58h;
0x00090016 add.w r2, lr, r3 | r2 = lr + r3;
0x0009001a strd sl, r0, [r2, 0xc] | __asm ("strd sl, r0, [r2, 0xc]");
0x0009001e strd r1, r0, [r2, 4] | __asm ("strd r1, r0, [r2, 4]");
0x00090022 str.w ip, [lr, r3] | __asm ("str.w ip, [lr, r3]");
0x00090026 b 0x8fc8e | goto label_20;
| label_65:
0x00090028 str r3, [sp] | *(sp) = r3;
0x0009002a movs r1, 0x82 | r1 = 0x82;
0x0009002c ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0009002e mov r3, sl | r3 = sl;
0x00090030 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00090032 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00090034 cdp2 p6, 0xf, c14, c3, c10, 1 | __asm ("cdp2 p6, 0xf, c14, c3, c10, 1");
| label_73:
0x00090038 ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
0x0009003a cmp r3, 0 |
| if (r3 == 0) {
0x0009003c beq.w 0x8fd56 | goto label_21;
| }
0x00090040 mov r0, r4 | r0 = r4;
0x00090042 bl 0x2f274 | fcn_0002f274 (r0, r1);
0x00090046 b 0x8fd56 | goto label_21;
| label_66:
0x00090048 ldr.w ip, [sp, 0x34] | ip = var_34h;
0x0009004c ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0009004e str.w sl, [sp, 0x48] | __asm ("str.w sl, [var_48h]");
0x00090052 b 0x8feb0 | goto label_22;
| label_63:
0x00090054 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00090056 str r3, [sp, 0x38] | var_38h = r3;
| label_33:
0x00090058 ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x0009005a str r3, [sp, 0x50] | var_50h = r3;
0x0009005c cmp r3, 0 |
| if (r3 != 0) {
0x0009005e bne.w 0x90306 | goto label_84;
| }
0x00090062 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00090064 mov r1, r6 | r1 = r6;
0x00090066 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00090068 mov r0, r4 | r0 = r4;
0x0009006a str r3, [sp, 4] | var_4h = r3;
0x0009006c add r3, sp, 0x70 | r3 += var_70h;
0x0009006e str r3, [sp, 0xc] | var_ch = r3;
0x00090070 add r3, sp, 0x6c | r3 += var_6ch;
0x00090072 str r2, [sp] | *(sp) = r2;
0x00090074 movs r2, 0x63 | r2 = 0x63;
0x00090076 str r3, [sp, 8] | var_8h = r3;
0x00090078 movs r3, 8 | r3 = 8;
0x0009007a bl 0x2f32c | fcn_0002f32c (r0, r1, r2, r3, r4, r5, r6);
0x0009007e ldr r3, [sp, 0x50] | r3 = var_50h;
0x00090080 str r3, [sp, 0x54] | var_54h = r3;
| label_39:
0x00090082 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00090084 ldr r2, [r3, 0x6c] | r2 = *((r3 + 0x6c));
0x00090086 ldr r3, [r3, 0x70] | r3 = *((r3 + 0x70));
0x00090088 str r2, [sp, 0x34] | var_34h = r2;
0x0009008a cmp.w r8, 0 |
| if (r8 != 0) {
0x0009008e bne.w 0x8fc46 | goto label_23;
| }
0x00090092 b 0x8fff4 | goto label_24;
| label_52:
0x00090094 cmp.w sl, 1 |
| if (sl != 1) {
0x00090098 beq 0x900b8 |
0x0009009a ldr r3, [r4] | r3 = *(r4);
0x0009009c ldr r2, [sp, 0x40] | r2 = var_40h;
0x0009009e ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000900a0 add r3, r2 | r3 += r2;
0x000900a2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000900a4 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x000900a6 cbz r3, 0x900b8 | goto label_85;
| }
0x000900a8 ldr r3, [r6] | r3 = *(r6);
0x000900aa mov r1, sl | r1 = sl;
0x000900ac mov r0, r4 | r0 = r4;
0x000900ae str r3, [sp] | *(sp) = r3;
0x000900b0 movs r3, 1 | r3 = 1;
0x000900b2 ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x000900b4 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
| }
| label_85:
0x000900b8 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x000900ba lsls r1, r3, 0x18 | r1 = r3 << 0x18;
| if (r1 >= r3) {
0x000900bc bmi 0x900e2 |
0x000900be ldr r1, [sp, 0x44] | r1 = var_44h;
0x000900c0 mov.w r3, -1 | r3 = -1;
0x000900c4 ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x000900c6 str r3, [sp, 8] | var_8h = r3;
0x000900c8 ldr r3, [r6] | r3 = *(r6);
0x000900ca cmp r1, 0 |
0x000900cc ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000900ce str r3, [sp, 4] | var_4h = r3;
0x000900d0 ite ne |
| if (r1 == 0) {
0x000900d2 movne r3, r1 | r3 = r1;
| }
| if (r1 != 0) {
0x000900d4 moveq r3, -1 | r3 = -1;
| }
0x000900d8 movs r1, 0x8d | r1 = 0x8d;
0x000900da str r3, [sp] | *(sp) = r3;
0x000900dc mov r3, sl | r3 = sl;
0x000900de bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
| }
0x000900e2 ldr.w r8, [r6, 8] | r8 = *((r6 + 8));
0x000900e6 cmp.w r8, 0 |
| if (r8 == 0) {
0x000900ea beq 0x90160 | goto label_86;
| }
0x000900ec ldr r3, [pc, 0x23c] |
0x000900ee mov.w sb, 0 | sb = 0;
0x000900f2 ldr r2, [sp, 0x44] | r2 = var_44h;
0x000900f4 str r4, [sp, 0x28] | var_28h = r4;
0x000900f6 mov r4, sl | r4 = sl;
0x000900f8 add r3, pc | r3 = 0x120428;
0x000900fa mov sl, r6 | sl = r6;
0x000900fc adds r3, 4 | r3 += 4;
0x000900fe cmp r2, 0 |
0x00090100 str r3, [sp, 0x30] | var_30h = r3;
0x00090102 ite ne |
| if (r2 == 0) {
0x00090104 movne r3, r2 | r3 = r2;
| }
| if (r2 != 0) {
0x00090106 moveq r3, -1 | r3 = -1;
| }
0x0009010a mov r6, r8 | r6 = r8;
0x0009010c str r3, [sp, 0x24] | var_24h = r3;
0x0009010e ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
0x00090112 b 0x90118 |
| while (r2 != 2) {
| label_25:
0x00090114 ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
| if (r6 == 0) {
0x00090116 cbz r6, 0x9015e | goto label_87;
| }
0x00090118 ldr r2, [r6, 0x2c] | r2 = *((r6 + 0x2c));
0x0009011a mov r3, r4 | r3 = r4;
0x0009011c movs r1, 0x8d | r1 = 0x8d;
0x0009011e mov r0, r8 | r0 = r8;
0x00090120 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00090124 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00090128 ldrb.w r2, [r6, 0x37] | r2 = *((r6 + 0x37));
0x0009012c and r2, r2, 3 | r2 &= 3;
0x00090130 cmp r2, 2 |
0x00090132 bne 0x90114 |
| }
0x00090134 ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x00090138 lsls r2, r2, 0x18 | r2 <<= 0x18;
| if (r2 >= r2) {
0x0009013a bpl 0x90114 | goto label_25;
| }
0x0009013c ldr.w r2, [r8] | r2 = *(r8);
0x00090140 ldrb.w r1, [r2, 0x53] | r1 = *((r2 + 0x53));
0x00090144 ldr.w r2, [r8, 0x6c] | r2 = *((r8 + 0x6c));
| if (r1 != 0) {
0x00090148 cbnz r1, 0x90184 | goto label_88;
| }
0x0009014a ldr.w r1, [r8, 0x68] | r1 = *((r8 + 0x68));
0x0009014e subs r2, 1 | r2--;
0x00090150 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x00090154 add.w r2, r1, r2, lsl 2 | r2 = r1 + (r2 << 2);
| label_28:
0x00090158 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0009015a str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x0009015c b 0x90114 | goto label_25;
| label_87:
0x0009015e ldr r4, [sp, 0x28] | r4 = var_28h;
| label_86:
0x00090160 movs r6, 0 | r6 = 0;
0x00090162 b 0x8fd4a | goto label_15;
| label_50:
0x00090164 ldrb.w r3, [r4, 0x91] | r3 = *((r4 + 0x91));
0x00090168 cmp r3, 0 |
| if (r3 != 0) {
0x0009016a bne.w 0x8fa82 | goto label_26;
| }
0x0009016e ldr r2, [sp, 0x34] | r2 = var_34h;
0x00090170 movs r1, 0x45 | r1 = 0x45;
0x00090172 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00090174 str r2, [sp] | *(sp) = r2;
0x00090176 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00090178 adds r3, 1 | r3++;
0x0009017a str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0009017c str r3, [sp, 0x44] | var_44h = r3;
0x0009017e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x00090182 b 0x8fa86 | goto label_27;
| label_88:
0x00090184 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00090186 b 0x90158 | goto label_28;
| label_76:
0x00090188 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0009018a ldr r0, [r1] | r0 = *(r1);
0x0009018c ldrb.w r3, [r0, 0x53] | r3 = *((r0 + 0x53));
0x00090190 str r3, [sp, 0x5c] | var_5ch = r3;
0x00090192 cmp r3, 0 |
| if (r3 != 0) {
0x00090194 bne.w 0x8fe88 | goto label_29;
| }
0x00090198 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0009019a movs r2, 0x14 | r2 = 0x14;
0x0009019c mul sl, r2, r3 | sl = r2 * r3;
0x000901a0 ldr r3, [r1, 0x68] | r3 = *((r1 + 0x68));
0x000901a2 str r3, [sp, 0x50] | var_50h = r3;
0x000901a4 add.w sb, r3, sl | sb = r3 + sl;
0x000901a8 ldr.w r2, [sb, 0x10] | r2 = *((sb + 0x10));
0x000901ac ldrsb.w r1, [sb, 1] | r1 = *((sb + 1));
0x000901b0 bl 0x1a7f4 | fcn_0001a7f4 (r0);
0x000901b4 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000901b6 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000901b8 str.w r3, [sb, 0x10] | __asm ("str.w r3, [sb, 0x10]");
0x000901bc movs r3, 0xb1 | r3 = 0xb1;
0x000901be strh.w r3, [r2, sl] | *((r2 + sl)) = r3;
0x000901c2 b 0x8fe88 | goto label_29;
| label_77:
0x000901c4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000901c6 cmp r3, 2 |
| if (r3 != 2) {
0x000901c8 bne 0x902c2 | goto label_89;
| }
0x000901ca ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000901cc ldrd sb, r3, [r3, 0x6c] | __asm ("ldrd sb, r3, [r3, 0x6c]");
0x000901d0 cmp sb, r3 |
| if (sb >= r3) {
0x000901d2 bge.w 0x902f4 | goto label_90;
| }
0x000901d6 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000901d8 movs r2, 0x14 | r2 = 0x14;
0x000901da mul r2, r2, sb | r2 *= sb;
0x000901de add.w r1, sb, 1 | r1 = sb + 1;
0x000901e2 ldr r3, [r0, 0x68] | r3 = *((r0 + 0x68));
0x000901e4 str r1, [r0, 0x6c] | *((r0 + 0x6c)) = r1;
0x000901e6 movs r1, 0x11 | r1 = 0x11;
0x000901e8 str r1, [r3, r2] | *((r3 + r2)) = r1;
0x000901ea add r3, r2 | r3 += r2;
0x000901ec ldr r2, [sp, 0x28] | r2 = var_28h;
0x000901ee strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x000901f2 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_38:
0x000901f6 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
| if (r1 == 0) {
0x000901f8 cbnz r1, 0x90218 |
0x000901fa ldr r3, [sp, 0x54] | r3 = var_54h;
0x000901fc mov r1, r6 | r1 = r6;
0x000901fe movs r2, 0x63 | r2 = 0x63;
0x00090200 mov r0, r4 | r0 = r4;
0x00090202 str r3, [sp, 4] | var_4h = r3;
0x00090204 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00090206 str r3, [sp] | *(sp) = r3;
0x00090208 add r3, sp, 0x70 | r3 += var_70h;
0x0009020a str r3, [sp, 0xc] | var_ch = r3;
0x0009020c add r3, sp, 0x6c | r3 += var_6ch;
0x0009020e str r3, [sp, 8] | var_8h = r3;
0x00090210 movs r3, 8 | r3 = 8;
0x00090212 bl 0x2f32c | fcn_0002f32c (r0, r1, r2, r3, r4, r5, r6);
0x00090216 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
| }
0x00090218 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0009021a ldr r2, [r0, 0x6c] | r2 = *((r0 + 0x6c));
0x0009021c subs r3, r2, 1 | r3 = r2 - 1;
0x0009021e cmp sb, r3 |
0x00090220 it eq |
| if (sb == r3) {
0x00090222 streq sb, [r0, 0x6c] | *((r0 + 0x6c)) = sb;
| goto label_91;
| }
| if (sb == r3) {
| label_91:
0x00090226 beq.w 0x8fe9a | goto label_30;
| }
0x0009022a ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0009022c bics.w sb, sb, sb, asr 32 | __asm ("bics.w sb, sb, sb, asr 32");
0x00090230 it hs |
| if (sb < r3) {
0x00090232 movhs sb, r3 | sb = r3;
| }
0x00090234 ldr r3, [r0] | r3 = *(r0);
0x00090236 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0009023a cmp r3, 0 |
| if (r3 != 0) {
0x0009023c bne 0x902ec | goto label_92;
| }
0x0009023e ldr r3, [r0, 0x68] | r3 = *((r0 + 0x68));
0x00090240 movs r0, 0x14 | r0 = 0x14;
0x00090242 mla r3, r0, sb, r3 | __asm ("mla r3, r0, sb, r3");
| label_37:
0x00090246 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00090248 b 0x8fe9a | goto label_30;
| label_79:
0x0009024a mov r2, r3 | r2 = r3;
0x0009024c ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009024e str r1, [sp, 0x34] | var_34h = r1;
0x00090250 movs r1, 0x1d | r1 = 0x1d;
0x00090252 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00090254 str r3, [sp, 4] | var_4h = r3;
0x00090256 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00090258 mov sl, r3 | sl = r3;
0x0009025a str r3, [sp] | *(sp) = r3;
0x0009025c ldr r3, [sp, 0x50] | r3 = var_50h;
0x0009025e bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x00090262 b 0x8fc8e | goto label_20;
| label_81:
0x00090264 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00090266 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0009026a b 0x8ff42 | goto label_31;
| label_64:
0x0009026c movs r3, 0 | r3 = 0;
0x0009026e ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x00090270 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00090272 movs r1, 0x25 | r1 = 0x25;
0x00090274 str r3, [sp] | *(sp) = r3;
0x00090276 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0009027a str r0, [sp, 0x34] | var_34h = r0;
0x0009027c b 0x8fc76 | goto label_32;
| label_82:
0x0009027e movs r3, 1 | r3 = 1;
0x00090280 str r3, [sp, 0x38] | var_38h = r3;
0x00090282 b 0x90058 | goto label_33;
| label_75:
0x00090284 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00090286 mov r6, r3 | r6 = r3;
0x00090288 bl 0x2f5a0 | fcn_0002f5a0 (r0, r1);
0x0009028c ldr r2, [sp, 0x78] | r2 = var_78h;
0x0009028e b.w 0x8f960 | goto label_2;
| label_80:
0x00090292 strb r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00090294 b 0x8ff06 | goto label_34;
| label_83:
0x00090296 ldr r2, [sp, 0x58] | r2 = var_58h;
0x00090298 movs r3, 0 | r3 = 0;
0x0009029a ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0009029c movs r1, 0x2a | r1 = 0x2a;
0x0009029e str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x000902a2 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000902a6 str r0, [sp, 0x34] | var_34h = r0;
0x000902a8 b 0x8fc8e | goto label_20;
| label_46:
0x000902aa movs r3, 0 | r3 = 0;
0x000902ac mov.w sl, 0x8000 | sl = fcn.00008000;
0x000902b0 movt r3, 0xfff8 | r3 = (r3 & 0xFFFF) | 0xfff80000;
0x000902b4 sub.w r1, r1, 0x80000 | r1 -= 0x80000;
0x000902b8 movt sl, 0xffff | sl = (sl & 0xFFFF) | 0xffff0000;
0x000902bc str r3, [sp, 0x40] | var_40h = r3;
0x000902be b.w 0x8f9c6 | goto label_8;
| label_89:
0x000902c2 ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x000902c4 cmp r3, 0 |
| if (r3 != 0) {
0x000902c6 bne.w 0x8ff4c | goto label_35;
| }
0x000902ca ldr r3, [sp, 0x54] | r3 = var_54h;
0x000902cc movs r2, 0x63 | r2 = 0x63;
0x000902ce mov r1, r6 | r1 = r6;
0x000902d0 mov r0, r4 | r0 = r4;
0x000902d2 str r3, [sp, 4] | var_4h = r3;
0x000902d4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000902d6 str r3, [sp] | *(sp) = r3;
0x000902d8 add r3, sp, 0x70 | r3 += var_70h;
0x000902da str r3, [sp, 0xc] | var_ch = r3;
0x000902dc add r3, sp, 0x6c | r3 += var_6ch;
0x000902de str r3, [sp, 8] | var_8h = r3;
0x000902e0 movs r3, 8 | r3 = 8;
0x000902e2 bl 0x2f32c | fcn_0002f32c (r0, r1, r2, r3, r4, r5, r6);
0x000902e6 b 0x8fe98 | goto label_36;
| label_42:
0x000902e8 blx 0x7e8c | fcn_00007e8c ();
| label_92:
0x000902ec ldr r3, [pc, 0x40] |
0x000902ee add r3, pc | r3 = 0x120622;
0x000902f0 adds r3, 4 | r3 += 4;
0x000902f2 b 0x90246 | goto label_37;
| label_90:
0x000902f4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000902f6 movs r1, 0x11 | r1 = 0x11;
0x000902f8 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000902fa mov r2, r3 | r2 = r3;
0x000902fc str r3, [sp] | *(sp) = r3;
0x000902fe bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x00090302 mov sb, r0 | sb = r0;
0x00090304 b 0x901f6 | goto label_38;
| label_84:
0x00090306 movs r3, 0 | r3 = 0;
0x00090308 strd r3, r3, [sp, 0x50] | __asm ("strd r3, r3, [var_50h]");
0x0009030c b 0x90082 | goto label_39;
| label_55:
0x0009030e movs r3, 0 | r3 = 0;
0x00090310 ldrh r3, [r3, 0x32] | r3 = *((r3 + 0x32));
0x00090312 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x90cb0 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00090cb0 () | void fcn_00090cb0 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00090cb0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00090cb4 mov r7, r2 | r7 = r2;
0x00090cb6 ldr r2, [pc, 0x168] |
0x00090cb8 sub sp, 0x14 |
0x00090cba mov r4, r1 | r4 = r1;
0x00090cbc mov r5, r0 | r5 = r0;
0x00090cbe ldr r3, [pc, 0x164] | r3 = *(0x90e26);
0x00090cc0 add r2, pc | r2 = 0x121ae6;
0x00090cc2 ldr r6, [r1] | r6 = *(r1);
0x00090cc4 ldr r3, [r2, r3] |
0x00090cc6 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00090cc8 str r3, [sp, 0xc] | var_ch = r3;
0x00090cca mov.w r3, 0 | r3 = 0;
0x00090cce cmp r6, 0 |
| if (r6 != 0) {
0x00090cd0 bne 0x90d90 | goto label_4;
| }
0x00090cd2 mov r1, r6 | r1 = r6;
0x00090cd4 adds r3, r7, 1 | r3 = r7 + 1;
0x00090cd6 mov.w r2, -1 | r2 = -1;
0x00090cda bl 0x90b90 | r0 = fcn_00090b90 (r0, r1, r2, r3);
0x00090cde mov r8, r0 | r8 = r0;
| label_1:
0x00090ce0 cmp.w r8, 0 |
| if (r8 != 0) {
0x00090ce4 bne 0x90d02 | goto label_0;
| }
| label_2:
0x00090ce6 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00090cea movs r1, 1 | r1 = 1;
0x00090cec ldr r0, [r5, 0x54] | r0 = *((r5 + 0x54));
0x00090cee blx 0x7c4c | fcn_00007c4c ();
0x00090cf2 ldr r0, [r5, 0x54] | r0 = *((r5 + 0x54));
0x00090cf4 blx 0x809c | fcn_0000809c ();
0x00090cf8 ldr r0, [r5, 0x54] | r0 = *((r5 + 0x54));
0x00090cfa blx 0x7cfc | r0 = fcn_00007cfc ();
0x00090cfe mov r8, r0 | r8 = r0;
0x00090d00 cbz r0, 0x90d20 |
| while (r0 != 0) {
| label_0:
0x00090d02 ldr r2, [pc, 0x124] |
0x00090d04 ldr r3, [pc, 0x11c] | r3 = *(0x90e24);
0x00090d06 add r2, pc | r2 = 0x121b34;
0x00090d08 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00090d0a ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00090d0c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00090d0e eors r2, r3 | r2 ^= r3;
0x00090d10 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00090d14 bne.w 0x90e1c | goto label_5;
| }
0x00090d18 mov r0, r8 | r0 = r8;
0x00090d1a add sp, 0x14 |
0x00090d1c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00090d20 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00090d24 movs r1, 1 | r1 = 1;
0x00090d26 ldr r0, [r5, 0x6c] | r0 = *((r5 + 0x6c));
0x00090d28 blx 0x7c4c | fcn_00007c4c ();
0x00090d2c ldr r0, [r5, 0x6c] | r0 = *((r5 + 0x6c));
0x00090d2e blx 0x809c | fcn_0000809c ();
0x00090d32 ldr r0, [r5, 0x6c] | r0 = *((r5 + 0x6c));
0x00090d34 blx 0x7cfc | r0 = fcn_00007cfc ();
0x00090d38 mov r8, r0 | r8 = r0;
0x00090d3a cmp r0, 0 |
0x00090d3c bne 0x90d02 |
| }
0x00090d3e ldrd r3, r2, [r4, 8] | __asm ("ldrd r3, r2, [r4, 8]");
0x00090d42 orrs r2, r3 | r2 |= r3;
| if (r2 == r3) {
0x00090d44 beq 0x90d7c | goto label_6;
| }
0x00090d46 movw r2, 0x7eaf |
0x00090d4a movt r2, 0x51d0 | r2 = 0x51d07eaf;
0x00090d4e umull r1, r2, r2, r3 | r1:r2 = r2 * r3;
0x00090d52 subs r1, r3, r2 | r1 = r3 - r2;
0x00090d54 add.w r2, r2, r1, lsr 1 | r2 += (r1 >> 1);
0x00090d58 lsrs r2, r2, 6 | r2 >>= 6;
0x00090d5a add.w r1, r2, r2, lsl 1 | r1 = r2 + (r2 << 1);
0x00090d5e add.w r2, r2, r1, lsl 5 | r2 += (r1 << 5);
0x00090d62 subs r2, r3, r2 | r2 = r3 - r2;
0x00090d64 add.w r3, r5, r2, lsl 2 | r3 = r5 + (r2 << 2);
0x00090d68 ldr r3, [r3, 0x74] | r3 = *((r3 + 0x74));
0x00090d6a cmp r4, r3 |
| if (r4 == r3) {
0x00090d6c beq 0x90e14 | goto label_7;
| }
| do {
0x00090d6e mov r2, r3 | r2 = r3;
0x00090d70 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00090d72 cmp r4, r3 |
0x00090d74 bne 0x90d6e |
| } while (r4 != r3);
0x00090d76 adds r2, 0x1c | r2 += 0x1c;
| label_3:
0x00090d78 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00090d7a str r3, [r2] | *(r2) = r3;
| label_6:
0x00090d7c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00090d7e asrs r2, r7, 0x1f | r2 = r7 >> 0x1f;
0x00090d80 ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x00090d82 str r7, [r4, 8] | *((r4 + 8)) = r7;
0x00090d84 adds r3, 1 | r3++;
0x00090d86 str r1, [r4, 0x1c] | *((r4 + 0x1c)) = r1;
0x00090d88 strd r2, r3, [r4, 0xc] | __asm ("strd r2, r3, [r4, 0xc]");
0x00090d8c str r4, [r5, 0x44] | *((r5 + 0x44)) = r4;
0x00090d8e b 0x90d02 | goto label_0;
| label_4:
0x00090d90 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x00090d92 ldr.w r8, [r1, 8] | r8 = *((r1 + 8));
0x00090d96 ldr.w sb, [r1, 0xc] | sb = *((r1 + 0xc));
0x00090d9a ldrb r2, [r3, 2] | r2 = *((r3 + 2));
0x00090d9c ldrb.w lr, [r3, 3] |
0x00090da0 adds.w lr, lr, r2, lsl 8 | lr += (r2 << 8);
| if (lr == lr) {
0x00090da4 beq 0x90e0e | goto label_8;
| }
0x00090da6 ldrb.w fp, [r0, 0x17] | fp = *((r0 + 0x17));
0x00090daa add.w ip, r3, 4 |
0x00090dae movs r2, 0 | r2 = 0;
0x00090db0 mov sl, sp | sl = sp;
0x00090db2 b 0x90dbc |
| while (sb != r3) {
0x00090db4 adds r2, 1 | r2++;
0x00090db6 add ip, fp |
0x00090db8 cmp lr, r2 |
| if (lr == r2) {
0x00090dba beq 0x90e0e | goto label_8;
| }
0x00090dbc ldr.w r1, [ip, 4] | r1 = *((ip + 4));
0x00090dc0 mov r3, sl | r3 = sl;
0x00090dc2 ldr.w r0, [ip] | r0 = *(ip);
0x00090dc6 stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x00090dc8 ldr r3, [sp] | r3 = *(sp);
0x00090dca ldr r1, [sp, 4] | r1 = var_4h_2;
0x00090dcc rev r3, r3 | r3 = SWAP32 (r3);
0x00090dce rev r1, r1 | r1 = SWAP32 (r1);
0x00090dd0 cmp sb, r3 |
0x00090dd2 it eq |
| if (sb == r3) {
0x00090dd4 cmpeq r8, r1 | __asm ("cmpeq r8, r1");
| }
0x00090dd6 bne 0x90db4 |
| }
0x00090dd8 movs r3, 0 | r3 = 0;
0x00090dda mov r1, r6 | r1 = r6;
0x00090ddc str r3, [r4] | *(r4) = r3;
0x00090dde mov r0, r5 | r0 = r5;
0x00090de0 adds r3, r7, 1 | r3 = r7 + 1;
0x00090de2 bl 0x90b90 | fcn_00090b90 (r0, r1, r2, r3);
0x00090de6 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00090de8 mov r8, r0 | r8 = r0;
0x00090dea subs r3, 1 | r3--;
0x00090dec str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00090dee cmp r3, 0 |
| if (r3 != 0) {
0x00090df0 bne.w 0x90ce0 | goto label_1;
| }
0x00090df4 mov r1, r6 | r1 = r6;
0x00090df6 mov r0, r5 | r0 = r5;
0x00090df8 bl 0x84120 | fcn_00084120 (r0, r1);
0x00090dfc cmp.w r8, 0 |
| if (r8 != 0) {
0x00090e00 bne.w 0x90d02 | goto label_0;
| }
0x00090e04 cmp r0, 0 |
| if (r0 == 0) {
0x00090e06 beq.w 0x90ce6 | goto label_2;
| }
0x00090e0a mov r8, r0 | r8 = r0;
0x00090e0c b 0x90d02 | goto label_0;
| label_8:
0x00090e0e movw r8, 0x10b | r8 = 0x10b;
0x00090e12 b 0x90d02 | goto label_0;
| label_7:
0x00090e14 adds r2, 0x1d | r2 += 0x1d;
0x00090e16 add.w r2, r5, r2, lsl 2 | r2 = r5 + (r2 << 2);
0x00090e1a b 0x90d78 | goto label_3;
| label_5:
0x00090e1c blx 0x7e8c | fcn_00007e8c ();
0x00090e20 ldm r7, {r4, r6, r7} | r4 = *(r7);
| r6 = *((r7 + 4));
| r7 = *((r7 + 8));
0x00090e22 movs r3, r0 | r3 = r0;
0x00090e24 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00090e26 movs r0, r0 |
0x00090e28 ldm r7, {r1, r3, r7} | r1 = *(r7);
| r3 = *((r7 + 4));
| r7 = *((r7 + 8));
0x00090e2a movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x90fc0 */
| #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)))
| #define SWAP64(val) ((uint64_t) (((val & 0x00000000000000ffull) << 56) | \
| ((val & 0x000000000000ff00ull) << 40) | \
| ((val & 0x0000000000ff0000ull) << 24) | \
| ((val & 0x00000000ff000000ull) << 8) | \
| ((val & 0x000000ff00000000ull) >> 8) | \
| ((val & 0x0000ff0000000000ull) >> 24) | \
| ((val & 0x00ff000000000000ull) >> 40) | \
| ((val & 0xff00000000000000ull) >> 56)))
|
; (fcn) fcn.00090fc0 () | void fcn_00090fc0 (int16_t arg_1h, int16_t arg_2h, int16_t arg_b4h, int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_14h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_60h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_80h;
| int16_t var_b4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00090fc0 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00090fc4 cmp r3, 0 |
0x00090fc6 ldr.w r5, [pc, 0xbf4] | r5 = *(0x00091bbc);
0x00090fca ldr.w r4, [pc, 0xbf4] |
0x00090fce add r5, pc | r5 += pc;
0x00090fd0 vpush {d8, d9, d10, d11, d12, d13, d14, d15} | __asm ("vpush {d8, d9, d10, d11, d12, d13, d14, d15}");
0x00090fd4 sub sp, 0xbc |
0x00090fd6 ldr r4, [r5, r4] | r4 = *((r5 + r4));
0x00090fd8 ldr r4, [r4] | r4 = *(0x91bc2);
0x00090fda str r4, [sp, 0xb4] | var_b4h = r4;
0x00090fdc mov.w r4, 0 | r4 = 0;
0x00090fe0 mov r4, r0 | r4 = r0;
0x00090fe2 str r1, [sp, 0xc] | var_2ch = r1;
0x00090fe4 str r2, [sp, 0x30] | *((sp + 0x30)) = r2;
0x00090fe6 str r3, [sp, 0x2c] | *((sp + 0x2c)) = r3;
| if (r3 <= 0) {
0x00090fe8 ble 0x91046 | goto label_33;
| }
0x00090fea ldr r1, [r2] | r1 = *(r2);
0x00090fec movw r3, 0x7eaf |
0x00090ff0 movt r3, 0x51d0 | r3 = 0x51d07eaf;
0x00090ff4 mov r0, r2 | r0 = r2;
0x00090ff6 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00090ff8 umull r2, r3, r3, r1 | r2:r3 = r3 * r1;
0x00090ffc subs r2, r1, r3 | r2 = r1 - r3;
0x00090ffe add.w r3, r3, r2, lsr 1 | r3 += (r2 >> 1);
0x00091002 lsrs r3, r3, 6 | r3 >>= 6;
0x00091004 add.w r2, r3, r3, lsl 1 | r2 = r3 + (r3 << 1);
0x00091008 add.w r3, r3, r2, lsl 5 | r3 += (r2 << 5);
0x0009100c subs r3, r1, r3 | r3 = r1 - r3;
0x0009100e add.w r3, r4, r3, lsl 2 | r3 = r4 + (r3 << 2);
0x00091012 ldr r5, [r3, 0x74] | r5 = *((r3 + 0x74));
| if (r5 != 0) {
0x00091014 cbnz r5, 0x9101c | goto label_34;
| }
0x00091016 b 0x91046 | goto label_33;
| do {
0x00091018 ldr r5, [r5, 0x1c] | r5 = *((r5 + 0x1c));
| if (r5 == 0) {
0x0009101a cbz r5, 0x91046 | goto label_33;
| }
| label_34:
0x0009101c ldrd r2, r3, [r5, 8] | __asm ("ldrd r2, r3, [r5, 8]");
0x00091020 cmp r0, r3 |
0x00091022 it eq |
| if (r0 == r3) {
0x00091024 cmpeq r1, r2 | __asm ("cmpeq r1, r2");
| }
0x00091026 bne 0x91018 |
| } while (r0 != r3);
0x00091028 ldr r1, [r5] | r1 = *(r5);
| if (r1 != 0) {
0x0009102a cbz r1, 0x91038 |
0x0009102c ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0009102e subs r3, 1 | r3--;
0x00091030 str r3, [r1, 0x10] | *((r1 + 0x10)) = r3;
0x00091032 cmp r3, 0 |
| if (r3 == 0) {
0x00091034 beq.w 0x9155e | goto label_35;
| }
| }
| label_5:
0x00091038 ldr r2, [sp, 0xc] | r2 = var_2ch;
| if (r2 != 0) {
0x0009103a cbz r2, 0x91042 |
0x0009103c ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x0009103e adds r3, 1 | r3++;
0x00091040 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
| }
0x00091042 ldr r3, [sp, 0xc] | r3 = var_2ch;
0x00091044 str r3, [r5] | *(r5) = r3;
| label_33:
0x00091046 ldr r5, [sp, 0xc] | r5 = var_2ch;
0x00091048 mov r0, r4 | r0 = r4;
0x0009104a ldr r2, [sp, 0x30] | r2 = *((sp + 0x30));
0x0009104c mov r1, r5 | r1 = r5;
0x0009104e bl 0x1173c | r0 = fcn_0001173c (r0, r1, r2);
0x00091052 cmp r0, 0 |
| if (r0 == 0) {
0x00091054 beq.w 0x9149c | goto label_36;
| }
0x00091058 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x0009105a ldr r0, [sp, 0x2c] | r0 = *((sp + 0x2c));
0x0009105c cmp r3, r0 |
| if (r3 >= r0) {
0x0009105e bge.w 0x9118e | goto label_37;
| }
0x00091062 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00091064 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00091066 subs r3, 1 | r3--;
0x00091068 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x0009106a beq.w 0x9118e | goto label_37;
| }
0x0009106e ldr r3, [sp, 0x2c] | r3 = *((sp + 0x2c));
0x00091070 add r6, sp, 0x80 | r6 += var_80h;
0x00091072 movs r2, 0x28 | r2 = 0x28;
0x00091074 movs r1, 0 | r1 = 0;
0x00091076 mov r0, r6 | r0 = r6;
0x00091078 str r3, [r4, 0x48] | *((r4 + 0x48)) = r3;
0x0009107a blx 0x8264 | fcn_00008264 ();
0x0009107e ldr r3, [sp, 0xc] | r3 = var_2ch;
0x00091080 movs r1, 0 | r1 = 0;
0x00091082 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00091084 ldrb r2, [r3, 2] | r2 = *((r3 + 2));
0x00091086 ldrb r3, [r3, 3] | r3 = *((r3 + 3));
0x00091088 add.w fp, r3, r2, lsl 8 |
0x0009108c add.w r5, fp, 2 | r5 += arg_2h;
0x00091090 add.w r3, fp, 1 | r3 += arg_1h;
0x00091094 bic r5, r5, 1 | r5 = BIT_MASK (r5, 1);
0x00091098 str r3, [sp, 8] | var_28h = r3;
0x0009109a lsls r0, r5, 6 | r0 = r5 << 6;
0x0009109c blx 0x7f18 | r0 = fcn_00007f18 ();
0x000910a0 mov sl, r0 | sl = r0;
0x000910a2 cmp r0, 0 |
| if (r0 == 0) {
0x000910a4 beq.w 0x91c08 | goto label_38;
| }
0x000910a8 add.w r2, r5, r5, lsl 1 | r2 = r5 + (r5 << 1);
0x000910ac ldr r1, [sp, 0x30] | r1 = *((sp + 0x30));
0x000910ae lsls r3, r5, 2 | r3 = r5 << 2;
0x000910b0 mov.w r8, 0 | r8 = 0;
0x000910b4 add.w r2, r0, r2, lsl 4 | r2 = r0 + (r2 << 4);
0x000910b8 cmp fp, r8 |
0x000910ba add.w r1, r1, 0x30 | r1 += 0x30;
0x000910be str r1, [sp, 0x1c] | *((sp + 0x1c)) = r1;
0x000910c0 add.w r1, r2, r3 | r1 = r2 + r3;
0x000910c4 add.w sb, r1, r3 | sb = r1 + r3;
0x000910c8 sub.w r3, r2, 4 | r3 = r2 - 4;
0x000910cc mov r5, r0 | r5 = r0;
0x000910ce str r2, [sp, 0x10] | var_30h = r2;
0x000910d0 str r1, [sp, 0x18] | *((sp + 0x18)) = r1;
0x000910d2 str r3, [sp, 0x14] | var_14h = r3;
| if (fp == r8) {
0x000910d4 beq 0x91160 | goto label_39;
| }
| label_1:
0x000910d6 ldr r1, [sp, 0xc] | r1 = var_2ch;
0x000910d8 mov r3, r5 | r3 = r5;
0x000910da mov r2, r8 | r2 = r8;
0x000910dc mov r0, r4 | r0 = r4;
0x000910de bl 0x13eb8 | fcn_00013eb8 (r0, r1, r2, r3, r4, r5);
| label_2:
0x000910e2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000910e4 str r8, [r3, 4]! | *((r3 += 4)) = r8;
0x000910e8 ldrb.w ip, [r4, 0x14] | ip = *((r4 + 0x14));
0x000910ec str r3, [sp, 0x14] | var_14h = r3;
0x000910ee cmp.w ip, 0 |
| if (ip == 0) {
0x000910f2 beq 0x9114c | goto label_40;
| }
0x000910f4 movs r3, 8 | r3 = 8;
0x000910f6 ldrb r7, [r4, 0x16] | r7 = *((r4 + 0x16));
0x000910f8 smlabb r0, r3, ip, r5 | __asm ("smlabb r0, r3, ip, r5");
0x000910fc mov r1, r5 | r1 = r5;
0x000910fe mov r3, r6 | r3 = r6;
0x00091100 b 0x91120 |
| while (r7 == 0) {
0x00091102 vmov s14, r2 | __asm ("vmov s14, r2");
0x00091106 adds r1, 8 | r1 += 8;
0x00091108 vcvt.f64.f32 d18, s14 | __asm ("vcvt.f64.f32 d18, s14");
0x0009110c cmp r0, r1 |
0x0009110e vcvt.f64.f32 d16, s15 | __asm ("vcvt.f64.f32 d16, s15");
0x00091112 vadd.f64 d17, d18, d17 | __asm ("vadd.f64 d17, d18, d17");
0x00091116 vadd.f64 d16, d16, d17 | __asm ("vadd.f64 d16, d16, d17");
0x0009111a vstr d16, [r3, -8] | __asm ("vstr d16, [r3, -8]");
| if (r0 == r1) {
0x0009111e beq 0x9114c | goto label_40;
| }
| label_0:
0x00091120 vldmia r3!, {d17} | __asm ("vldmia r3!, {d17}");
0x00091124 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00091126 vldr s15, [r1, 0xc] | __asm ("vldr s15, [r1, 0xc]");
0x0009112a cmp r7, 0 |
0x0009112c beq 0x91102 |
| }
0x0009112e vmov s14, r2 | __asm ("vmov s14, r2");
0x00091132 adds r1, 8 | r1 += 8;
0x00091134 vcvt.f64.s32 d18, s14 | __asm ("vcvt.f64.s32 d18, s14");
0x00091138 cmp r0, r1 |
0x0009113a vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x0009113e vadd.f64 d17, d18, d17 | __asm ("vadd.f64 d17, d18, d17");
0x00091142 vadd.f64 d16, d16, d17 | __asm ("vadd.f64 d16, d16, d17");
0x00091146 vstr d16, [r3, -8] | __asm ("vstr d16, [r3, -8]");
| if (r0 != r1) {
0x0009114a bne 0x91120 | goto label_0;
| }
| label_40:
0x0009114c cmp fp, r8 |
0x0009114e add.w r5, r5, 0x30 | r5 += 0x30;
0x00091152 add.w r3, r8, 1 | r3 = r8 + 1;
| if (fp == r8) {
0x00091156 beq.w 0x91808 | goto label_41;
| }
0x0009115a mov r8, r3 | r8 = r3;
0x0009115c cmp fp, r8 |
| if (fp != r8) {
0x0009115e bne 0x910d6 | goto label_1;
| }
| label_39:
0x00091160 ldr r3, [sp, 0x30] | r3 = *((sp + 0x30));
0x00091162 mov r2, r5 | r2 = r5;
| do {
0x00091164 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x00091166 adds r3, 0x10 | r3 += 0x10;
0x00091168 ldr ip, [r3, -0x10] | ip = *((r3 - 0x10));
0x0009116c adds r2, 0x10 | r2 += 0x10;
0x0009116e ldr r7, [r3, -0xc] | r7 = *((r3 - 0xc));
0x00091172 ldr r0, [r3, -0x8] | r0 = *((r3 - 0x8));
0x00091176 str ip, [r2, -0x10] | *((r2 - 0x10)) = ip;
0x0009117a str r7, [r2, -0xc] | *((r2 - 0xc)) = r7;
0x0009117e str r0, [r2, -0x8] | *((r2 - 0x8)) = r0;
0x00091182 str r1, [r2, -0x4] | *((r2 - 0x4)) = r1;
0x00091186 ldr r1, [sp, 0x1c] | r1 = *((sp + 0x1c));
0x00091188 cmp r3, r1 |
0x0009118a bne 0x91164 |
| } while (r3 != r1);
0x0009118c b 0x910e2 | goto label_2;
| label_37:
0x0009118e ldr r3, [sp, 0xc] | r3 = var_2ch;
0x00091190 movs r0, 0x34 | r0 = 0x34;
0x00091192 movs r1, 0 | r1 = 0;
0x00091194 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00091196 ldrb r2, [r3, 2] | r2 = *((r3 + 2));
0x00091198 ldrb r3, [r3, 3] | r3 = *((r3 + 3));
0x0009119a add.w fp, r3, r2, lsl 8 |
0x0009119e mla r0, fp, r0, r0 | __asm ("mla r0, fp, r0, r0");
0x000911a2 add.w r7, fp, 1 | r7 += arg_1h;
0x000911a6 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000911aa mov r8, r0 | r8 = r0;
0x000911ac cmp r0, 0 |
| if (r0 == 0) {
0x000911ae beq.w 0x91a60 | goto label_42;
| }
0x000911b2 add.w r5, r7, r7, lsl 1 | r5 = r7 + (r7 << 1);
0x000911b6 lsls r2, r7, 2 | r2 = r7 << 2;
0x000911b8 lsls r5, r5, 4 | r5 <<= 4;
0x000911ba movs r1, 0 | r1 = 0;
0x000911bc add r0, r5 | r0 += r5;
0x000911be blx 0x8264 | fcn_00008264 ();
0x000911c2 cmp.w fp, 0 |
| if (fp == 0) {
0x000911c6 beq 0x911e6 | goto label_43;
| }
0x000911c8 ldr.w sl, [sp, 0xc] | sl = var_2ch;
0x000911cc mov sb, r8 | sb = r8;
0x000911ce movs r6, 0 | r6 = 0;
| do {
0x000911d0 mov r3, sb | r3 = sb;
0x000911d2 mov r2, r6 | r2 = r6;
0x000911d4 mov r1, sl | r1 = sl;
0x000911d6 adds r6, 1 | r6++;
0x000911d8 mov r0, r4 | r0 = r4;
0x000911da add.w sb, sb, 0x30 | sb += 0x30;
0x000911de bl 0x13eb8 | fcn_00013eb8 (r0, r1, r2, r3, r4, r5);
0x000911e2 cmp fp, r6 |
0x000911e4 bne 0x911d0 |
| } while (fp != r6);
| label_43:
0x000911e6 ldr r6, [sp, 0xc] | r6 = var_2ch;
0x000911e8 movs r1, 0 | r1 = 0;
0x000911ea ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000911ec ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x000911ee subs r2, 2 | r2 -= 2;
0x000911f0 adds r0, 2 | r0 += 2;
0x000911f2 blx 0x8264 | fcn_00008264 ();
0x000911f6 ldr r1, [sp, 0x30] | r1 = *((sp + 0x30));
0x000911f8 sub.w r3, r5, 0x30 | r3 = r5 - 0x30;
0x000911fc add r3, r8 | r3 += r8;
0x000911fe mov r2, r1 | r2 = r1;
0x00091200 add.w r0, r1, 0x30 | r0 = r1 + 0x30;
0x00091204 movs r1, 1 | r1 = 1;
0x00091206 str r1, [r6, 0x14] | *((r6 + 0x14)) = r1;
| do {
0x00091208 ldr.w ip, [r2] | ip = *(r2);
0x0009120c adds r2, 0x10 | r2 += 0x10;
0x0009120e ldr r6, [r2, -0xc] | r6 = *((r2 - 0xc));
0x00091212 adds r3, 0x10 | r3 += 0x10;
0x00091214 ldr r5, [r2, -0x8] | r5 = *((r2 - 0x8));
0x00091218 ldr r1, [r2, -0x4] | r1 = *((r2 - 0x4));
0x0009121c cmp r2, r0 |
0x0009121e str ip, [r3, -0x10] | *((r3 - 0x10)) = ip;
0x00091222 str r6, [r3, -0xc] | *((r3 - 0xc)) = r6;
0x00091226 str r5, [r3, -0x8] | *((r3 - 0x8)) = r5;
0x0009122a str r1, [r3, -0x4] | *((r3 - 0x4)) = r1;
0x0009122e bne 0x91208 |
| } while (r2 != r0);
0x00091230 ldr r2, [sp, 0xc] | r2 = var_2ch;
0x00091232 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x00091234 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00091236 subs r3, 1 | r3--;
0x00091238 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x0009123a beq.w 0x91a34 | goto label_44;
| }
0x0009123e ldr r5, [sp, 0xc] | r5 = var_2ch;
0x00091240 mov r0, r4 | r0 = r4;
0x00091242 ldr r1, [r5] | r1 = *(r5);
0x00091244 bl 0x3e614 | fcn_0003e614 (r0, r1);
0x00091248 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0009124a str r0, [sp, 0x14] | var_14h = r0;
0x0009124c str r5, [sp, 0x20] | *((sp + 0x20)) = r5;
0x0009124e adds r3, 1 | r3++;
0x00091250 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
| label_23:
0x00091252 ldr r3, [sp, 0x20] | r3 = *((sp + 0x20));
0x00091254 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00091256 cmp r5, 0 |
0x00091258 it ne |
| if (r5 != 0) {
0x0009125a cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x0009125c ite eq |
| if (r5 != 0) {
0x0009125e moveq r6, 1 | r6 = 1;
| }
| if (r5 == 0) {
0x00091260 movne r6, 0 | r6 = 0;
| }
| if (r5 == 0) {
0x00091262 beq.w 0x91a12 | goto label_45;
| }
0x00091266 ldr r0, [r3, 0x18] | r0 = *((r3 + 0x18));
0x00091268 mov r1, r6 | r1 = r6;
0x0009126a ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0009126c blx 0x8264 | fcn_00008264 ();
0x00091270 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00091272 mov r1, r6 | r1 = r6;
0x00091274 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x00091276 add.w r5, fp, 2 | r5 += arg_2h;
0x0009127a blx 0x8264 | fcn_00008264 ();
0x0009127e ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00091280 mov r1, r6 | r1 = r6;
0x00091282 mla r5, r3, r5, r5 | __asm ("mla r5, r3, r5, r5");
0x00091286 lsls r5, r5, 2 | r5 <<= 2;
0x00091288 mov r0, r5 | r0 = r5;
0x0009128a blx 0x7f18 | fcn_00007f18 ();
0x0009128e str r0, [sp, 0x34] | var_34h = r0;
0x00091290 cmp r0, 0 |
| if (r0 == 0) {
0x00091292 beq.w 0x91506 | goto label_46;
| }
0x00091296 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00091298 mov r2, r5 | r2 = r5;
0x0009129a mov r1, r6 | r1 = r6;
0x0009129c mla r3, r7, r3, r3 | __asm ("mla r3, r7, r3, r3");
0x000912a0 add.w r5, r0, r3, lsl 2 | r5 = r0 + (r3 << 2);
0x000912a4 blx 0x8264 | fcn_00008264 ();
0x000912a8 ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000912aa cmp r3, 0 |
| if (r3 == 0) {
0x000912ac beq.w 0x91bfa | goto label_47;
| }
0x000912b0 ldr.w sl, [sp, 0x34] | sl = var_34h;
0x000912b4 mov sb, r6 | sb = r6;
| label_3:
0x000912b6 add r3, r6 | r3 += r6;
0x000912b8 add.w r1, sl, r3, lsl 2 | r1 = sl + (r3 << 2);
0x000912bc movs r3, 0 | r3 = 0;
0x000912be subs r0, r1, 4 | r0 = r1 - 4;
0x000912c0 str.w r1, [sl, sb, lsl 2] | __asm ("str.w r1, [sl, sb, lsl 2]");
| do {
0x000912c4 cmp fp, r3 |
0x000912c6 str r3, [r0, 4]! | *((r0 += 4)) = r3;
0x000912ca add.w r3, r3, 1 | r3++;
0x000912ce bne 0x912c4 |
| } while (fp != r3);
0x000912d0 mov r3, sb | r3 = sb;
0x000912d2 mov r2, r7 | r2 = r7;
0x000912d4 mov r0, r4 | r0 = r4;
0x000912d6 strd r8, r5, [sp] | __asm ("strd r8, r5, [sp]");
0x000912da bl 0xcc60 | fcn_0000cc60 (r0, r1, r2, r3, r4, r5);
0x000912de ldrb r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x000912e0 add.w sb, sb, 1 | sb++;
0x000912e4 add r6, r7 | r6 += r7;
0x000912e6 cmp sb, r2 |
0x000912e8 mov r3, r2 | r3 = r2;
| if (sb < r2) {
0x000912ea blt 0x912b6 | goto label_3;
| }
0x000912ec str r2, [sp, 0x44] | var_44h = r2;
0x000912ee cmp r2, 0 |
| if (r2 == 0) {
0x000912f0 beq.w 0x91bea | goto label_48;
| }
0x000912f4 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000912f6 add r6, sp, 0x80 | r6 += var_80h;
0x000912f8 ldrb r1, [r4, 0x17] | r1 = *((r4 + 0x17));
0x000912fa vmov.i64 d13, 0 | __asm ("vmov.i64 d13, 0");
0x000912fe subs r0, 4 | r0 -= 4;
0x00091300 bl 0xab8f8 | fcn_000ab8f8 (r0, r1);
0x00091304 movw r2, 0x5556 |
0x00091308 vmov.f64 d12, d13 | __asm ("vmov.f64 d12, d13");
| /* if there is a right shift of 0, then it's a division by 1/3 */
0x0009130c movt r2, 0x5555 | r2 = 0x55555556;
0x00091310 vmov.f64 d11, d13 | __asm ("vmov.f64 d11, d13");
0x00091314 smull r1, r2, r2, r0 | r1:r2 = r2 * r0;
0x00091318 sub.w r3, r2, r0, asr 31 | r3 = r2 - (r0 >> 31);
0x0009131c lsl.w r2, fp, 2 | r2 = fp << 2;
0x00091320 str r2, [sp, 0x24] | *((sp + 0x24)) = r2;
0x00091322 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00091324 str r3, [sp, 0x10] | var_30h = r3;
0x00091326 subs r3, r7, r3 | r3 = r7 - r3;
0x00091328 add r7, sp, 0x50 | r7 += var_50h;
0x0009132a str r3, [sp, 0x1c] | *((sp + 0x1c)) = r3;
0x0009132c movs r3, 0 | r3 = 0;
0x0009132e str r2, [sp, 0x18] | *((sp + 0x18)) = r2;
0x00091330 str r3, [sp, 0x38] | var_38h = r3;
0x00091332 strd r3, r3, [sp, 0x3c] | __asm ("strd r3, r3, [sp, 0x3c]");
| label_8:
0x00091336 ldr r3, [sp, 0x10] | r3 = var_30h;
0x00091338 ldr r2, [sp, 0x1c] | r2 = *((sp + 0x1c));
0x0009133a cmp r3, r2 |
| if (r3 > r2) {
0x0009133c bgt.w 0x91a2a | goto label_49;
| }
0x00091340 vmov.f64 d10, d12 | __asm ("vmov.f64 d10, d12");
0x00091344 mov sb, r3 | sb = r3;
0x00091346 vmov.f64 d9, d11 | __asm ("vmov.f64 d9, d11");
0x0009134a movs r3, 0 | r3 = 0;
0x0009134c vmov.f64 d8, d11 | __asm ("vmov.f64 d8, d11");
0x00091350 str r3, [sp, 0x28] | *((sp + 0x28)) = r3;
| label_7:
0x00091352 ldr r3, [sp, 0x18] | r3 = *((sp + 0x18));
0x00091354 mov sl, r7 | sl = r7;
0x00091356 ldr.w lr, [r3] |
0x0009135a ldr.w r5, [lr] | r5 = *(lr);
0x0009135e add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x00091362 add.w r5, r8, r5, lsl 4 | r5 = r8 + (r5 << 4);
0x00091366 add.w r3, r5, 0x30 | r3 = r5 + 0x30;
0x0009136a str r3, [sp, 8] | var_28h = r3;
| do {
0x0009136c ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0009136e mov ip, sl |
0x00091370 ldr r0, [r5] | r0 = *(r5);
0x00091372 adds r5, 0x10 | r5 += 0x10;
0x00091374 ldr r1, [r5, -0xc] | r1 = *((r5 - 0xc));
0x00091378 ldr r2, [r5, -0x8] | r2 = *((r5 - 0x8));
0x0009137c stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00091380 mov sl, ip | sl = ip;
0x00091382 ldr r3, [sp, 8] | r3 = var_28h;
0x00091384 cmp r5, r3 |
0x00091386 bne 0x9136c |
| } while (r5 != r3);
0x00091388 ldr r3, [sp, 0x24] | r3 = *((sp + 0x24));
0x0009138a mov sl, r6 | sl = r6;
0x0009138c ldr.w r5, [lr, r3] | r5 = *((lr + r3));
0x00091390 add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x00091394 add.w r5, r8, r5, lsl 4 | r5 = r8 + (r5 << 4);
0x00091398 add.w r3, r5, 0x30 | r3 = r5 + 0x30;
0x0009139c str r3, [sp, 8] | var_28h = r3;
| do {
0x0009139e ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000913a0 mov ip, sl |
0x000913a2 ldr r0, [r5] | r0 = *(r5);
0x000913a4 adds r5, 0x10 | r5 += 0x10;
0x000913a6 ldr r1, [r5, -0xc] | r1 = *((r5 - 0xc));
0x000913aa ldr r2, [r5, -0x8] | r2 = *((r5 - 0x8));
0x000913ae stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000913b2 mov sl, ip | sl = ip;
0x000913b4 ldr r3, [sp, 8] | r3 = var_28h;
0x000913b6 cmp r5, r3 |
0x000913b8 bne 0x9139e |
| } while (r5 != r3);
0x000913ba cmp.w fp, 1 |
0x000913be itt gt |
| if (fp <= 1) {
0x000913c0 movgt sl, lr | sl = lr;
| }
| if (fp <= 1) {
0x000913c2 movgt r5, 1 | r5 = 1;
| }
| if (fp <= 1) {
0x000913c4 ble 0x913e6 | goto label_50;
| }
| do {
0x000913c6 ldr r2, [sl, 4]! | r2 = *((sl += 4));
0x000913ca cmp r5, sb |
0x000913cc ite lt |
| if (r5 >= sb) {
0x000913ce movlt r1, r7 | r1 = r7;
| }
| if (r5 < sb) {
0x000913d0 movge r1, r6 | r1 = r6;
| }
0x000913d2 mov r0, r4 | r0 = r4;
0x000913d4 adds r5, 1 | r5++;
0x000913d6 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x000913da add.w r2, r8, r2, lsl 4 | r2 = r8 + (r2 << 4);
0x000913de bl 0x11220 | fcn_00011220 (r0, r1, r2);
0x000913e2 cmp fp, r5 |
0x000913e4 bne 0x913c6 |
| } while (fp != r5);
| label_50:
0x000913e6 ldrb.w sl, [r4, 0x15] | sl = *((r4 + 0x15));
0x000913ea mov r2, r7 | r2 = r7;
0x000913ec ldrb r5, [r4, 0x16] | r5 = *((r4 + 0x16));
0x000913ee vmov.f64 d15, 1.000000e+00 | __asm ("vmov.f64 d15, 1");
0x000913f2 mov r0, sl | r0 = sl;
0x000913f4 mov r1, r5 | r1 = r5;
0x000913f6 bl 0x11510 | fcn_00011510 (r0, r1);
0x000913fa vadd.f64 d8, d0, d8 | __asm ("vadd.f64 d8, d0, d8");
0x000913fe mov r2, r6 | r2 = r6;
0x00091400 mov r0, sl | r0 = sl;
0x00091402 bl 0x11510 | fcn_00011510 (r0, r1);
0x00091406 mov r1, r6 | r1 = r6;
0x00091408 mov r2, r7 | r2 = r7;
0x0009140a vadd.f64 d8, d8, d0 | __asm ("vadd.f64 d8, d8, d0");
0x0009140e mov.w ip, 0 |
0x00091412 cmp.w sl, 0 |
| if (sl != 0) {
0x00091416 bne 0x91476 | goto label_51;
| }
0x00091418 b 0x9157a | goto label_10;
| do {
0x0009141a vmov s14, r0 | __asm ("vmov s14, r0");
0x0009141e vmov s15, r3 | __asm ("vmov s15, r3");
0x00091422 vcmpe.f32 s15, s14 | __asm ("vcmpe.f32 s15, s14");
0x00091426 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (sl < 0) {
0x0009142a bmi.w 0x91570 | goto label_52;
| }
0x0009142e vcvt.f64.f32 d7, s15 | __asm ("vcvt.f64.f32 d7, s15");
| label_6:
0x00091432 vldr s12, [r2, 0xc] | __asm ("vldr s12, [r2, 0xc]");
0x00091436 vldr s13, [r1, 0xc] | __asm ("vldr s13, [r1, 0xc]");
0x0009143a vcvt.f64.f32 d16, s12 | __asm ("vcvt.f64.f32 d16, s12");
0x0009143e vcvt.f64.f32 d18, s13 | __asm ("vcvt.f64.f32 d18, s13");
| label_4:
0x00091442 vcmpe.f64 d18, d16 | __asm ("vcmpe.f64 d18, d16");
0x00091446 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x0009144a it le |
| if (sl <= 0) {
0x0009144c vmovle d16, d18 | __asm ("vmovle d16, d18");
| }
0x00091450 vcmpe.f64 d16, d7 | __asm ("vcmpe.f64 d16, d7");
0x00091454 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (sl < 0) {
0x00091458 bmi.w 0x91576 | goto label_53;
| }
0x0009145c vsub.f64 d16, d16, d7 | __asm ("vsub.f64 d16, d16, d7");
0x00091460 add.w ip, ip, 2 |
0x00091464 cmp ip, sl |
0x00091466 add.w r1, r1, 8 | r1 += 8;
0x0009146a add.w r2, r2, 8 | r2 += 8;
0x0009146e vmul.f64 d15, d15, d16 | __asm ("vmul.f64 d15, d15, d16");
| if (ip >= sl) {
0x00091472 bge.w 0x917e6 | goto label_54;
| }
| label_51:
0x00091476 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00091478 ldr r0, [r2, 8] | r0 = *((r2 + 8));
0x0009147a cmp r5, 0 |
0x0009147c beq 0x9141a |
| } while (r5 == 0);
0x0009147e cmp r0, r3 |
| if (r0 > r3) {
0x00091480 bgt 0x91566 | goto label_55;
| }
0x00091482 vmov s15, r3 | __asm ("vmov s15, r3");
0x00091486 vcvt.f64.s32 d7, s15 | __asm ("vcvt.f64.s32 d7, s15");
| do {
0x0009148a vldr s13, [r2, 0xc] | __asm ("vldr s13, [r2, 0xc]");
0x0009148e vcvt.f64.s32 d16, s13 | __asm ("vcvt.f64.s32 d16, s13");
0x00091492 vldr s13, [r1, 0xc] | __asm ("vldr s13, [r1, 0xc]");
0x00091496 vcvt.f64.s32 d18, s13 | __asm ("vcvt.f64.s32 d18, s13");
0x0009149a b 0x91442 | goto label_4;
| label_36:
0x0009149c ldr r6, [sp, 0x30] | r6 = *((sp + 0x30));
0x0009149e mov r0, r4 | r0 = r4;
0x000914a0 ldr r5, [sp, 0xc] | r5 = var_2ch;
0x000914a2 mov r2, r6 | r2 = r6;
0x000914a4 mov r1, r5 | r1 = r5;
0x000914a6 bl 0x14044 | r0 = fcn_00014044 (r0, r1, r2, r3);
0x000914aa mov sb, r0 | sb = r0;
0x000914ac cmp r0, 0 |
| if (r0 == 0) {
0x000914ae bne 0x91538 |
0x000914b0 ldr r1, [sp, 0x2c] | r1 = *((sp + 0x2c));
0x000914b2 ldrd r2, r3, [r6] | __asm ("ldrd r2, r3, [r6]");
0x000914b6 ldrd r6, r7, [r5, 8] | __asm ("ldrd r6, r7, [r5, 8]");
0x000914ba cmp r1, 0 |
| if (r1 != 0) {
0x000914bc bne.w 0x91a66 | goto label_56;
| }
0x000914c0 movs r1, 1 | r1 = 1;
0x000914c2 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000914c4 blx 0x7c4c | fcn_00007c4c ();
0x000914c8 mov r2, r6 | r2 = r6;
0x000914ca mov r3, r7 | r3 = r7;
0x000914cc movs r1, 2 | r1 = 2;
0x000914ce ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000914d0 blx 0x7c4c | fcn_00007c4c ();
0x000914d4 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000914d6 blx 0x809c | fcn_0000809c ();
0x000914da ldr.w r2, [pc, 0x6e8] | r2 = *(0x00091bc4);
0x000914de ldr.w r3, [pc, 0x6e0] | r3 = *(0x91bc2);
0x000914e2 add r2, pc | r2 += pc;
0x000914e4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000914e6 ldr r2, [r3] | r2 = *(0x91bc2);
0x000914e8 ldr r3, [sp, 0xb4] | r3 = var_b4h;
0x000914ea eors r2, r3 | r2 ^= r3;
0x000914ec mov.w r3, 0 | r3 = 0;
0x000914f0 it eq |
| if (r2 != r3) {
0x000914f2 ldreq r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
| }
| if (r2 != r3) {
0x000914f4 bne.w 0x91a9a | goto label_57;
| }
| label_25:
0x000914f8 add sp, 0xbc |
0x000914fa vpop {d8, d9, d10, d11, d12, d13, d14, d15} | __asm ("vpop {d8, d9, d10, d11, d12, d13, d14, d15}");
0x000914fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00091502 b.w 0x7cf8 | void (*0x7cf8)() ();
| label_46:
0x00091506 movs r3, 7 | r3 = 7;
0x00091508 mov sb, r3 | sb = r3;
| label_9:
0x0009150a ldr r2, [sp, 0x14] | r2 = *((sp + 0x14));
0x0009150c ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x0009150e subs r3, 1 | r3--;
0x00091510 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
| if (r3 == 0) {
0x00091512 cbnz r3, 0x91520 |
| label_21:
0x00091514 ldr r1, [sp, 0x14] | r1 = *((sp + 0x14));
0x00091516 mov r0, r4 | r0 = r4;
0x00091518 bl 0x84120 | fcn_00084120 (r0, r1);
| label_26:
0x0009151c ldr r3, [sp, 0x20] | r3 = *((sp + 0x20));
| if (r3 == 0) {
0x0009151e cbz r3, 0x91532 | goto label_24;
| }
| }
| label_28:
0x00091520 ldr r2, [sp, 0x20] | r2 = *((sp + 0x20));
0x00091522 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00091524 subs r3, 1 | r3--;
0x00091526 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
| if (r3 == 0) {
0x00091528 cbnz r3, 0x91532 |
0x0009152a mov r1, r2 | r1 = r2;
0x0009152c mov r0, r4 | r0 = r4;
0x0009152e bl 0x84120 | fcn_00084120 (r0, r1);
| }
| label_24:
0x00091532 mov r0, r8 | r0 = r8;
0x00091534 blx 0x84f8 | fcn_000084f8 ();
| }
| label_15:
0x00091538 ldr.w r2, [pc, 0x68c] |
0x0009153c ldr.w r3, [pc, 0x680] | r3 = *(0x91bc0);
0x00091540 add r2, pc | r2 = 0x12310c;
0x00091542 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00091544 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00091546 ldr r3, [sp, 0xb4] | r3 = *(arg_b4h);
0x00091548 eors r2, r3 | r2 ^= r3;
0x0009154a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009154e bne.w 0x91a9a | goto label_57;
| }
0x00091552 mov r0, sb | r0 = sb;
0x00091554 add sp, 0xbc |
0x00091556 vpop {d8, d9, d10, d11, d12, d13, d14, d15} | __asm ("vpop {d8, d9, d10, d11, d12, d13, d14, d15}");
0x0009155a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_35:
0x0009155e mov r0, r4 | r0 = r4;
0x00091560 bl 0x84120 | fcn_00084120 (r0, r1);
0x00091564 b 0x91038 | goto label_5;
| label_55:
0x00091566 vmov s15, r0 | __asm ("vmov s15, r0");
0x0009156a vcvt.f64.s32 d7, s15 | __asm ("vcvt.f64.s32 d7, s15");
0x0009156e b 0x9148a |
| } while (1);
| label_52:
0x00091570 vcvt.f64.f32 d7, s14 | __asm ("vcvt.f64.f32 d7, s14");
0x00091574 b 0x91432 | goto label_6;
| label_53:
0x00091576 vmov.f64 d15, d11 | __asm ("vmov.f64 d15, d11");
| label_10:
0x0009157a ldrb.w sl, [r4, 0x14] | sl = *((r4 + 0x14));
0x0009157e mov r2, r7 | r2 = r7;
0x00091580 mov r1, r5 | r1 = r5;
0x00091582 mov r0, sl | r0 = sl;
0x00091584 bl 0x11564 | fcn_00011564 (r0, r1);
0x00091588 mov r1, r5 | r1 = r5;
0x0009158a mov r0, sl | r0 = sl;
0x0009158c mov r2, r6 | r2 = r6;
0x0009158e vmov.f64 d14, d0 | __asm ("vmov.f64 d14, d0");
0x00091592 bl 0x11564 | fcn_00011564 (r0, r1);
0x00091596 ldr r3, [sp, 0x10] | r3 = var_30h;
0x00091598 vadd.f64 d0, d14, d0 | __asm ("vadd.f64 d0, d14, d0");
0x0009159c cmp r3, sb |
| if (r3 == sb) {
0x0009159e beq.w 0x917ec | goto label_58;
| }
0x000915a2 vcmpe.f64 d15, d9 | __asm ("vcmpe.f64 d15, d9");
0x000915a6 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 >= sb) {
0x000915aa bmi 0x915c0 |
0x000915ac vcmp.f64 d15, d9 | __asm ("vcmp.f64 d15, d9");
0x000915b0 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 != sb) {
0x000915b4 bne 0x915cc | goto label_11;
| }
0x000915b6 vcmpe.f64 d0, d10 | __asm ("vcmpe.f64 d0, d10");
0x000915ba vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 >= sb) {
0x000915be bpl 0x915cc | goto label_11;
| }
| }
0x000915c0 vmov.f64 d10, d0 | __asm ("vmov.f64 d10, d0");
0x000915c4 vmov.f64 d9, d15 | __asm ("vmov.f64 d9, d15");
0x000915c8 str.w sb, [sp, 0x28] | __asm ("str.w sb, [sp, 0x28]");
| label_11:
0x000915cc ldr r3, [sp, 0x1c] | r3 = *((sp + 0x1c));
0x000915ce add.w sb, sb, 1 | sb++;
0x000915d2 cmp sb, r3 |
| if (sb <= r3) {
0x000915d4 ble.w 0x91352 | goto label_7;
| }
| label_22:
0x000915d8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000915da cmp r3, 0 |
| if (r3 == 0) {
0x000915dc beq.w 0x917fa | goto label_59;
| }
0x000915e0 vcmpe.f64 d13, d8 | __asm ("vcmpe.f64 d13, d8");
0x000915e4 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 > 0) {
0x000915e8 ble 0x915f4 |
0x000915ea ldr r2, [sp, 0x28] | r2 = *((sp + 0x28));
0x000915ec vmov.f64 d13, d8 | __asm ("vmov.f64 d13, d8");
0x000915f0 str r3, [sp, 0x40] | var_60h = r3;
0x000915f2 str r2, [sp, 0x38] | var_38h = r2;
| }
| label_12:
0x000915f4 ldr r2, [sp, 0x18] | r2 = *((sp + 0x18));
0x000915f6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000915f8 adds r2, 4 | r2 += 4;
0x000915fa str r2, [sp, 0x18] | *((sp + 0x18)) = r2;
0x000915fc adds r3, 1 | r3++;
0x000915fe ldr r2, [sp, 0x44] | r2 = var_44h;
0x00091600 str r3, [sp, 0x3c] | var_3ch = r3;
0x00091602 cmp r2, r3 |
| if (r2 != r3) {
0x00091604 bne.w 0x91336 | goto label_8;
| }
0x00091608 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009160a ldr r2, [sp, 0x40] | r2 = var_60h;
0x0009160c add.w sl, r3, r2, lsl 2 | sl = r3 + (r2 << 2);
0x00091610 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00091612 lsls r5, r3, 2 | r5 = r3 << 2;
| label_32:
0x00091614 ldr.w r3, [sl] | r3 = *(sl);
0x00091618 mov sb, r7 | sb = r7;
0x0009161a ldr r3, [r3] | r3 = *(r3);
0x0009161c add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00091620 add.w ip, r8, r3, lsl 4 |
0x00091624 add.w r3, ip, 0x30 | r3 = ip + 0x30;
0x00091628 str r3, [sp, 8] | var_28h = r3;
| do {
0x0009162a ldr.w r3, [ip, 0xc] | r3 = *((ip + 0xc));
0x0009162e mov lr, sb | lr = sb;
0x00091630 ldr.w r0, [ip] | r0 = *(ip);
0x00091634 add.w ip, ip, 0x10 |
0x00091638 ldr r1, [ip, -0xc] | r1 = *((ip - 0xc));
0x0009163c ldr r2, [ip, -0x8] | r2 = *((ip - 0x8));
0x00091640 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00091644 mov sb, lr | sb = lr;
0x00091646 ldr r3, [sp, 8] | r3 = var_28h;
0x00091648 cmp ip, r3 |
0x0009164a bne 0x9162a |
| } while (ip != r3);
0x0009164c ldr.w r3, [sl] | r3 = *(sl);
0x00091650 mov lr, r6 | lr = r6;
0x00091652 ldr r5, [r3, r5] | r5 = *((r3 + r5));
0x00091654 add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x00091658 add.w r5, r8, r5, lsl 4 | r5 = r8 + (r5 << 4);
0x0009165c add.w sb, r5, 0x30 | sb = r5 + 0x30;
| do {
0x00091660 ldr r0, [r5] | r0 = *(r5);
0x00091662 adds r5, 0x10 | r5 += 0x10;
0x00091664 ldr r1, [r5, -0xc] | r1 = *((r5 - 0xc));
0x00091668 mov ip, lr |
0x0009166a ldr r2, [r5, -0x8] | r2 = *((r5 - 0x8));
0x0009166e ldr r3, [r5, -0x4] | r3 = *((r5 - 0x4));
0x00091672 cmp r5, sb |
0x00091674 stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00091678 mov lr, ip | lr = ip;
0x0009167a bne 0x91660 |
| } while (r5 != sb);
0x0009167c mov r3, r6 | r3 = r6;
0x0009167e movs r5, 0 | r5 = 0;
0x00091680 mov r6, r4 | r6 = r4;
0x00091682 b 0x91686 |
| while (fp != r5) {
0x00091684 mov r5, r2 | r5 = r2;
0x00091686 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00091688 mov r0, r6 | r0 = r6;
0x0009168a str r3, [sp, 8] | var_28h = r3;
0x0009168c cmp r2, r5 |
0x0009168e ldr.w r2, [sl] | r2 = *(sl);
0x00091692 ittee le |
| if (r2 > r5) {
0x00091694 movle r4, r3 | r4 = r3;
| }
| if (r2 > r5) {
0x00091696 ldrle r1, [sp, 0x14] | r1 = var_14h;
| }
| if (r2 <= r5) {
0x00091698 ldrgt r1, [sp, 0x20] | r1 = *((sp + 0x20));
| }
| if (r2 <= r5) {
0x0009169a movgt r4, r7 | r4 = r7;
| }
0x0009169c ldr.w r2, [r2, r5, lsl 2] | offset_0 = r5 << 2;
| r2 = *((r2 + offset_0));
0x000916a0 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x000916a4 add.w sb, r8, r2, lsl 4 | sb = r8 + (r2 << 4);
0x000916a8 mov r2, sb | r2 = sb;
0x000916aa bl 0x1173c | fcn_0001173c (r0, r1, r2);
0x000916ac invalid |
0x000916b0 mov r1, r4 | r1 = r4;
0x000916b2 mov r0, r6 | r0 = r6;
0x000916b4 bl 0x11220 | fcn_00011220 (r0, r1, r2);
0x000916b8 cmp fp, r5 |
0x000916ba ldr r3, [sp, 8] | r3 = var_28h;
0x000916bc add.w r2, r5, 1 | r2 = r5 + 1;
0x000916c0 bne 0x91684 |
| }
0x000916c2 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000916c4 mov r4, r6 | r4 = r6;
0x000916c6 mov r6, r3 | r6 = r3;
0x000916c8 blx 0x84f8 | fcn_000084f8 ();
0x000916cc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000916ce ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| if (r3 == 0) {
0x000916d0 cbz r3, 0x916e2 | goto label_60;
| }
0x000916d2 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000916d4 mov r0, r4 | r0 = r4;
0x000916d6 bl 0x84084 | r0 = fcn_00084084 (r0, r1, r2);
0x000916da mov sb, r0 | sb = r0;
0x000916dc cmp r0, 0 |
| if (r0 != 0) {
0x000916de bne.w 0x9150a | goto label_9;
| }
| label_60:
0x000916e2 ldr r3, [sp, 0x20] | r3 = *((sp + 0x20));
0x000916e4 ldrd ip, lr, [r3, 8] | __asm ("ldrd ip, lr, [r3, 8]");
0x000916e8 orrs.w r3, ip, lr | r3 = ip | lr;
| if (r3 != ip) {
0x000916ec bne 0x91708 | goto label_61;
| }
0x000916ee ldr r5, [sp, 0x20] | r5 = *((sp + 0x20));
0x000916f0 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
| if (r3 == 0) {
0x000916f2 cbz r3, 0x91708 | goto label_61;
| }
0x000916f4 mov r1, r5 | r1 = r5;
0x000916f6 mov r0, r4 | r0 = r4;
0x000916f8 bl 0x84084 | r0 = fcn_00084084 (r0, r1, r2);
0x000916fc mov sb, r0 | sb = r0;
0x000916fe cmp r0, 0 |
| if (r0 != 0) {
0x00091700 bne.w 0x9150a | goto label_9;
| }
0x00091704 ldrd ip, lr, [r5, 8] | __asm ("ldrd ip, lr, [r5, 8]");
| label_61:
0x00091708 ldr r2, [sp, 0xc] | r2 = var_2ch;
0x0009170a ldr r1, [sp, 0x20] | r1 = *((sp + 0x20));
0x0009170c ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x0009170e ldr.w sl, [r1] | sl = *(r1);
0x00091712 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00091714 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00091716 subs r3, 1 | r3--;
0x00091718 ldrd r0, r1, [r1, 8] | __asm ("ldrd r0, r1, [r1, 8]");
0x0009171c orrs r3, r2 | r3 |= r2;
0x0009171e strd ip, lr, [sp, 0x50] | __asm ("strd ip, lr, [sp, 0x50]");
0x00091722 strd r0, r1, [sp, 0x80] | __asm ("strd r0, r1, [sp, 0x80]");
| if (r3 == r2) {
0x00091726 beq.w 0x91bd0 | goto label_62;
| }
0x0009172a mov.w r3, -1 | r3 = -1;
0x0009172e cmp.w sl, 0 |
| if (sl != 0) {
0x00091732 bne.w 0x91aa8 | goto label_63;
| }
| label_27:
0x00091736 mov r2, r7 | r2 = r7;
0x00091738 mov r1, sl | r1 = sl;
0x0009173a mov r0, r4 | r0 = r4;
0x0009173c bl 0x116a8 | fcn_000116a8 (r0, r1, r2);
0x00091740 mov r2, r7 | r2 = r7;
0x00091742 mov r1, sl | r1 = sl;
0x00091744 mov r0, r4 | r0 = r4;
0x00091746 bl 0x14044 | r0 = fcn_00014044 (r0, r1, r2, r3);
0x0009174a mov sb, r0 | sb = r0;
0x0009174c cmp r0, 0 |
| if (r0 != 0) {
0x0009174e bne.w 0x9150a | goto label_9;
| }
0x00091752 ldr r3, [sp, 0x2c] | r3 = *((sp + 0x2c));
0x00091754 adds r5, r3, 1 | r5 = r3 + 1;
| label_31:
0x00091756 mov r3, r5 | r3 = r5;
0x00091758 ldr r5, [sp, 0x14] | r5 = var_14h;
0x0009175a mov r2, r6 | r2 = r6;
0x0009175c mov r0, r4 | r0 = r4;
0x0009175e ldr r1, [r5] | r1 = *(r5);
0x00091760 bl 0x90fc0 | r0 = fcn_00090fc0 (r0, r1, r2, r3, r4, r5, r6);
0x00091764 mov r6, r0 | r6 = r0;
0x00091766 cmp r0, 0 |
| if (r0 != 0) {
0x00091768 bne.w 0x91aa4 | goto label_64;
| }
0x0009176c ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0009176e ldrb r2, [r1, 2] | r2 = *((r1 + 2));
0x00091770 ldrb r3, [r1, 3] | r3 = *((r1 + 3));
0x00091772 add.w r3, r3, r2, lsl 8 | r3 += (r2 << 8);
0x00091776 cmp r3, 0 |
| if (r3 == 0) {
0x00091778 beq.w 0x91b24 | goto label_65;
| }
0x0009177c ldr.w sb, [sp, 0x30] | sb = *((sp + 0x30));
0x00091780 add r5, sp, 0x48 | r5 += var_48h;
0x00091782 mov r7, r0 | r7 = r0;
0x00091784 b 0x9179c |
| while (r0 == 0) {
0x00091786 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00091788 adds r7, 1 | r7++;
0x0009178a ldr r1, [r1, 0x18] | r1 = *((r1 + 0x18));
0x0009178c ldrb.w ip, [r1, 2] | ip = *((r1 + 2));
0x00091790 ldrb r0, [r1, 3] | r0 = *((r1 + 3));
0x00091792 add.w r0, r0, ip, lsl 8 | r0 += (ip << 8);
0x00091796 cmp r7, r0 |
| if (r7 >= r0) {
0x00091798 bge.w 0x91aea | goto label_66;
| }
0x0009179c ldrb r3, [r4, 0x17] | r3 = *((r4 + 0x17));
0x0009179e mov r2, r5 | r2 = r5;
0x000917a0 mul r3, r7, r3 | r3 = r7 * r3;
0x000917a4 adds r3, 4 | r3 += 4;
0x000917a6 add.w ip, r1, r3 |
0x000917aa ldr r0, [r1, r3] | r0 = *((r1 + r3));
0x000917ac ldr.w r1, [ip, 4] | r1 = *((ip + 4));
0x000917b0 ldr r3, [sp, 0x2c] | r3 = *((sp + 0x2c));
0x000917b2 stm r2!, {r0, r1} | *(r2!) = r0;
| *((r2! + 4)) = r1;
0x000917b4 mov r0, r4 | r0 = r4;
0x000917b6 str r3, [sp, 4] | var_24h = r3;
0x000917b8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000917ba str r3, [sp] | *(sp) = r3;
0x000917bc ldr r3, [sp, 0x48] | r3 = var_48h;
0x000917be rev.w sl, r3 | r3 = SWAP32 (sl);
0x000917c2 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000917c4 rev.w fp, r3 | r3 = SWAPundefined (fp);
0x000917c8 mov r3, sl | r3 = sl;
0x000917ca mov r2, fp | r2 = fp;
0x000917cc bl 0x84270 | fcn_00084270 (r0, r1, r2, r3, r4);
0x000917d0 ldrd r2, r3, [sb] | __asm ("ldrd r2, r3, [sb]");
0x000917d4 cmp r3, sl |
0x000917d6 it eq |
| if (r3 == sl) {
0x000917d8 cmpeq r2, fp | __asm ("cmpeq r2, fp");
| }
0x000917da it eq |
| if (r3 != sl) {
0x000917dc moveq r6, 1 | r6 = 1;
| }
0x000917de cmp r0, 0 |
0x000917e0 beq 0x91786 |
| }
0x000917e2 mov sb, r0 | sb = r0;
0x000917e4 b 0x9150a | goto label_9;
| label_54:
0x000917e6 vadd.f64 d15, d15, d12 | __asm ("vadd.f64 d15, d15, d12");
0x000917ea b 0x9157a | goto label_10;
| label_58:
0x000917ec ldr r3, [sp, 0x10] | r3 = var_30h;
0x000917ee vmov.f64 d10, d0 | __asm ("vmov.f64 d10, d0");
0x000917f2 vmov.f64 d9, d15 | __asm ("vmov.f64 d9, d15");
0x000917f6 str r3, [sp, 0x28] | *((sp + 0x28)) = r3;
0x000917f8 b 0x915cc | goto label_11;
| label_59:
0x000917fa ldr r3, [sp, 0x28] | r3 = *((sp + 0x28));
0x000917fc vmov.f64 d13, d8 | __asm ("vmov.f64 d13, d8");
0x00091800 str r3, [sp, 0x38] | var_38h = r3;
0x00091802 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00091804 str r3, [sp, 0x40] | var_60h = r3;
0x00091806 b 0x915f4 | goto label_12;
| label_41:
0x00091808 mov r7, ip | r7 = ip;
| if (r7 == 0) {
0x0009180a cbz r7, 0x91832 | goto label_67;
| }
0x0009180c vldr s15, [sp, 8] | __asm ("vldr s15, [sp, 8]");
0x00091810 sxth.w ip, ip | __asm ("sxth.w ip, ip");
0x00091814 add.w r2, r6, r7, lsl 3 | r2 = r6 + (r7 << 3);
0x00091818 mov r3, r6 | r3 = r6;
0x0009181a vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x0009181e vadd.f64 d16, d16, d16 | __asm ("vadd.f64 d16, d16, d16");
| do {
0x00091822 vldr d18, [r3] | __asm ("vldr d18, [r3]");
0x00091826 vdiv.f64 d17, d18, d16 | __asm ("vdiv.f64 d17, d18, d16");
0x0009182a vstmia r3!, {d17} | __asm ("vstmia r3!, {d17}");
0x0009182e cmp r2, r3 |
0x00091830 bne 0x91822 |
| } while (r2 != r3);
| label_67:
0x00091832 ldr r3, [sp, 8] | r3 = var_28h;
0x00091834 lsl.w ip, ip, 3 |
0x00091838 vmov.i64 d20, 0 | __asm ("vmov.i64 d20, 0");
0x0009183c mov r5, sb | r5 = sb;
0x0009183e add.w r1, sl, ip | r1 = sl + ip;
0x00091842 add.w lr, sb, r3, lsl 3 | lr = sb + (r3 << 3);
| label_14:
0x00091846 vstmia r5!, {d20} | __asm ("vstmia r5!, {d20}");
| if (r7 == 0) {
0x0009184a cbz r7, 0x91892 | goto label_68;
| }
0x0009184c ldrb r0, [r4, 0x16] | r0 = *((r4 + 0x16));
0x0009184e sub.w r3, r1, ip | r3 = r1 - ip;
0x00091852 vmov.i64 d18, 0 | __asm ("vmov.i64 d18, 0");
0x00091856 mov r2, r6 | r2 = r6;
0x00091858 b 0x91878 |
| while (r0 == 0) {
0x0009185a vcvt.f64.f32 d16, s15 | __asm ("vcvt.f64.f32 d16, s15");
0x0009185e vcvt.f64.f32 d7, s14 | __asm ("vcvt.f64.f32 d7, s14");
| label_13:
0x00091862 vldmia r2!, {d19} | __asm ("vldmia r2!, {d19}");
0x00091866 adds r3, 8 | r3 += 8;
0x00091868 vsub.f64 d16, d16, d7 | __asm ("vsub.f64 d16, d16, d7");
0x0009186c cmp r1, r3 |
0x0009186e vsub.f64 d16, d16, d19 | __asm ("vsub.f64 d16, d16, d19");
0x00091872 vmla.f64 d18, d16, d16 | __asm ("vmla.f64 d18, d16, d16");
| if (r1 == r3) {
0x00091876 beq 0x9188e | goto label_69;
| }
0x00091878 vldr s15, [r3, 0xc] | __asm ("vldr s15, [r3, 0xc]");
0x0009187c vldr s14, [r3, 8] | __asm ("vldr s14, [r3, 8]");
0x00091880 cmp r0, 0 |
0x00091882 beq 0x9185a |
| }
0x00091884 vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x00091888 vcvt.f64.s32 d7, s14 | __asm ("vcvt.f64.s32 d7, s14");
0x0009188c b 0x91862 | goto label_13;
| label_69:
0x0009188e vstr d18, [r5, -8] | __asm ("vstr d18, [r5, -8]");
| label_68:
0x00091892 cmp lr, r5 |
0x00091894 add.w r1, r1, 0x30 | r1 += 0x30;
| if (lr != r5) {
0x00091898 bne 0x91846 | goto label_14;
| }
0x0009189a ldr r3, [sp, 0x18] | r3 = *((sp + 0x18));
0x0009189c mov r2, sb | r2 = sb;
0x0009189e ldr r1, [sp, 8] | r1 = var_28h;
0x000918a0 movw sb, 0x5556 |
0x000918a4 ldr r0, [sp, 0x10] | r0 = var_30h;
| /* if there is a right shift of 0, then it's a division by 1/3 */
0x000918a6 movt sb, 0x5555 | sb = 0x55555556;
0x000918aa bl 0xcbc0 | fcn_0000cbc0 (r0, r1, r2, r3);
0x000918ae ldr r5, [sp, 0xc] | r5 = var_2ch;
0x000918b0 movs r1, 0 | r1 = 0;
0x000918b2 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000918b4 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000918b6 subs r2, 2 | r2 -= 2;
0x000918b8 adds r0, 2 | r0 += 2;
0x000918ba blx 0x8264 | fcn_00008264 ();
0x000918be ldr.w r8, [sp, 0x30] | r8 = *((sp + 0x30));
0x000918c2 movs r3, 1 | r3 = 1;
0x000918c4 str r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
0x000918c6 movs r5, 0 | r5 = 0;
| label_18:
0x000918c8 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000918ca ldrb r1, [r4, 0x17] | r1 = *((r4 + 0x17));
0x000918cc subs r0, 4 | r0 -= 4;
0x000918ce bl 0xab8f8 | fcn_000ab8f8 (r0, r1);
0x000918d2 smull r1, r3, sb, r0 | r1:r3 = sb * r0;
0x000918d6 sub.w r3, r3, r0, asr 31 | r3 -= (r0 >> 31);
0x000918da sub.w r3, fp, r3 | r3 = fp - r3;
0x000918de cmp r3, r5 |
| if (r3 <= r5) {
0x000918e0 ble 0x91932 | goto label_70;
| }
0x000918e2 ldr r3, [sp, 0x10] | r3 = var_30h;
0x000918e4 add.w r6, r3, r5, lsl 2 | r6 = r3 + (r5 << 2);
| do {
0x000918e8 ldr r7, [r6], 4 | r7 = *(r6);
| r6 += 4;
0x000918ec mov r0, r4 | r0 = r4;
0x000918ee ldr r1, [sp, 0xc] | r1 = var_2ch;
0x000918f0 adds r5, 1 | r5++;
0x000918f2 add.w r7, r7, r7, lsl 1 | r7 += (r7 << 1);
0x000918f6 lsls r7, r7, 4 | r7 <<= 4;
0x000918f8 add.w r3, sl, r7 | r3 = sl + r7;
0x000918fc mov r2, r3 | r2 = r3;
0x000918fe str r3, [sp, 0x14] | var_14h = r3;
0x00091900 bl 0x1173c | fcn_0001173c (r0, r1, r2);
0x00091904 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00091906 ldr.w r2, [sl, r7] | r2 = *((sl + r7));
0x0009190a ldrd r0, r1, [r8] | __asm ("ldrd r0, r1, [r8]");
0x0009190e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00091910 cmp r3, r1 |
0x00091912 it eq |
| if (r3 == r1) {
0x00091914 cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| }
| if (r3 == r1) {
0x00091916 beq 0x919bc | goto label_71;
| }
0x00091918 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0009191a ldrb r1, [r4, 0x17] | r1 = *((r4 + 0x17));
0x0009191c subs r0, 4 | r0 -= 4;
0x0009191e bl 0xab8f8 | fcn_000ab8f8 (r0, r1);
0x00091922 smull r1, r3, sb, r0 | r1:r3 = sb * r0;
0x00091926 sub.w r3, r3, r0, asr 31 | r3 -= (r0 >> 31);
0x0009192a sub.w r3, fp, r3 | r3 = fp - r3;
0x0009192e cmp r3, r5 |
0x00091930 bgt 0x918e8 |
| } while (r3 > r5);
| label_70:
0x00091932 ldr r1, [sp, 0xc] | r1 = var_2ch;
0x00091934 mov r0, r4 | r0 = r4;
0x00091936 bl 0x13f48 | fcn_00013f48 (r0, r1, r2, r3);
0x0009193a ldr r2, [sp, 8] | r2 = var_28h;
0x0009193c clz r3, r0 | r3 &= r0;
0x00091940 lsrs r3, r3, 5 | r3 >>= 5;
0x00091942 mov sb, r0 | sb = r0;
0x00091944 cmp r2, r5 |
0x00091946 it le |
| if (r2 > r5) {
0x00091948 movle r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x0009194a cbz r3, 0x91974 | goto label_19;
| }
0x0009194c ldr r3, [sp, 0x10] | r3 = var_30h;
0x0009194e mov r6, r5 | r6 = r5;
0x00091950 add.w r7, r3, r5, lsl 2 | r7 = r3 + (r5 << 2);
0x00091954 add r5, sp, 0x48 | r5 += var_48h;
| label_16:
0x00091956 ldr r1, [r7], 4 | r1 = *(r7);
| r7 += 4;
0x0009195a mov r3, r5 | r3 = r5;
0x0009195c ldr r2, [sp, 0x2c] | r2 = *((sp + 0x2c));
0x0009195e mov r0, r4 | r0 = r4;
0x00091960 add.w r1, r1, r1, lsl 1 | r1 += (r1 << 1);
0x00091964 add.w sb, sl, r1, lsl 4 | sb = sl + (r1 << 4);
0x00091968 mov r1, sb | r1 = sb;
0x0009196a bl 0x90e2c | r0 = fcn_00090e2c (r0, r1, r2, r3, r4);
0x0009196e mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x00091970 cbz r0, 0x9197c | goto label_72;
| }
| label_17:
0x00091972 mov sb, r8 | sb = r8;
| do {
| label_19:
0x00091974 mov r0, sl | r0 = sl;
0x00091976 blx 0x84f8 | fcn_000084f8 ();
0x0009197a b 0x91538 | goto label_15;
| label_72:
0x0009197c ldr r1, [sp, 0x48] | r1 = var_48h;
0x0009197e mov r2, sb | r2 = sb;
0x00091980 ldr r3, [sp, 0x2c] | r3 = *((sp + 0x2c));
0x00091982 mov r0, r4 | r0 = r4;
0x00091984 str r1, [sp, 8] | var_28h = r1;
0x00091986 bl 0x90fc0 | fcn_00090fc0 (r0, r1, r2, r3, r4, r5, r6);
0x0009198a ldr r1, [sp, 8] | r1 = var_28h;
0x0009198c mov sb, r0 | sb = r0;
| if (r1 != 0) {
0x0009198e cbz r1, 0x919a0 |
0x00091990 ldr r2, [r1, 0x10] | r2 = *((r1 + 0x10));
0x00091992 subs r2, 1 | r2--;
0x00091994 str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
| if (r2 != 0) {
0x00091996 cbnz r2, 0x919a0 | goto label_73;
| }
0x00091998 mov r0, r4 | r0 = r4;
0x0009199a bl 0x84120 | r0 = fcn_00084120 (r0, r1);
0x0009199e mov r8, r0 | r8 = r0;
| }
| label_73:
0x000919a0 cmp.w sb, 0 |
0x000919a4 bne 0x91974 |
| } while (sb != 0);
0x000919a6 clz r3, r8 | r3 &= r8;
0x000919aa cmp fp, r6 |
0x000919ac lsr.w r3, r3, 5 | r3 >>= 5;
0x000919b0 it le |
| if (fp > r6) {
0x000919b2 movle r3, 0 | r3 = 0;
| }
0x000919b4 adds r6, 1 | r6++;
0x000919b6 cmp r3, 0 |
| if (r3 != 0) {
0x000919b8 bne 0x91956 | goto label_16;
| }
0x000919ba b 0x91972 | goto label_17;
| label_71:
0x000919bc ldr r1, [sp, 0xc] | r1 = var_2ch;
0x000919be ldrd r6, r7, [r1, 8] | __asm ("ldrd r6, r7, [r1, 8]");
0x000919c2 ldr r1, [sp, 0x2c] | r1 = *((sp + 0x2c));
| if (r1 != 0) {
0x000919c4 cbnz r1, 0x919f0 | goto label_74;
| }
0x000919c6 movs r1, 1 | r1 = 1;
0x000919c8 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000919ca blx 0x7c4c | fcn_00007c4c ();
0x000919ce mov r2, r6 | r2 = r6;
0x000919d0 mov r3, r7 | r3 = r7;
0x000919d2 movs r1, 2 | r1 = 2;
0x000919d4 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000919d6 blx 0x7c4c | fcn_00007c4c ();
0x000919da ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000919dc blx 0x809c | fcn_0000809c ();
0x000919e0 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000919e2 blx 0x7cfc | r0 = fcn_00007cfc ();
| label_20:
0x000919e6 cmp r0, 0 |
| if (r0 == 0) {
0x000919e8 beq.w 0x918c8 | goto label_18;
| }
0x000919ec mov sb, r0 | sb = r0;
0x000919ee b 0x91974 | goto label_19;
| label_74:
0x000919f0 ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x000919f2 movs r1, 1 | r1 = 1;
0x000919f4 blx 0x7c4c | fcn_00007c4c ();
0x000919f8 mov r2, r6 | r2 = r6;
0x000919fa mov r3, r7 | r3 = r7;
0x000919fc movs r1, 2 | r1 = 2;
0x000919fe ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00091a00 blx 0x7c4c | fcn_00007c4c ();
0x00091a04 ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00091a06 blx 0x809c | fcn_0000809c ();
0x00091a0a ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00091a0c blx 0x7cfc | fcn_00007cfc ();
0x00091a10 b 0x919e6 | goto label_20;
| label_45:
0x00091a12 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00091a14 cmp r3, 0 |
| if (r3 == 0) {
0x00091a16 beq 0x91a9e | goto label_75;
| }
0x00091a18 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00091a1a ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00091a1c subs r3, 1 | r3--;
0x00091a1e str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00091a20 cmp r3, 0 |
| if (r3 != 0) {
0x00091a22 bne 0x91a9e | goto label_75;
| }
0x00091a24 movs r3, 7 | r3 = 7;
0x00091a26 mov sb, r3 | sb = r3;
0x00091a28 b 0x91514 | goto label_21;
| label_49:
0x00091a2a movs r3, 0 | r3 = 0;
0x00091a2c vmov.f64 d8, d12 | __asm ("vmov.f64 d8, d12");
0x00091a30 str r3, [sp, 0x28] | *((sp + 0x28)) = r3;
0x00091a32 b 0x915d8 | goto label_22;
| label_44:
0x00091a34 ldr r5, [sp, 0xc] | r5 = var_2ch;
0x00091a36 mov r0, r4 | r0 = r4;
0x00091a38 mov r1, r5 | r1 = r5;
0x00091a3a bl 0x3e614 | fcn_0003e614 (r0, r1);
0x00091a3e mov r1, r5 | r1 = r5;
0x00091a40 str r0, [sp, 0x14] | var_14h = r0;
0x00091a42 mov r0, r4 | r0 = r4;
0x00091a44 bl 0x3e614 | fcn_0003e614 (r0, r1);
0x00091a48 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00091a4a ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00091a4c str r0, [sp, 0x20] | *((sp + 0x20)) = r0;
0x00091a4e movs r0, 1 | r0 = 1;
0x00091a50 adds r3, 1 | r3++;
0x00091a52 asrs r1, r3, 8 | r1 = r3 >> 8;
0x00091a54 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00091a56 str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
0x00091a58 strb r1, [r2] | *(r2) = r1;
0x00091a5a strb r3, [r2, 1] | *((r2 + 1)) = r3;
0x00091a5c b.w 0x91252 | goto label_23;
| label_42:
0x00091a60 movs r3, 7 | r3 = 7;
0x00091a62 mov sb, r3 | sb = r3;
0x00091a64 b 0x91532 | goto label_24;
| label_56:
0x00091a66 movs r1, 1 | r1 = 1;
0x00091a68 ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00091a6a blx 0x7c4c | fcn_00007c4c ();
0x00091a6e mov r2, r6 | r2 = r6;
0x00091a70 mov r3, r7 | r3 = r7;
0x00091a72 movs r1, 2 | r1 = 2;
0x00091a74 ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00091a76 blx 0x7c4c | fcn_00007c4c ();
0x00091a7a ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x00091a7c blx 0x809c | fcn_0000809c ();
0x00091a80 ldr r2, [pc, 0x148] |
0x00091a82 ldr r3, [pc, 0x13c] | r3 = *(0x91bc2);
0x00091a84 add r2, pc | r2 = 0x123654;
0x00091a86 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00091a88 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00091a8a ldr r3, [sp, 0xb4] | r3 = var_b4h;
0x00091a8c eors r2, r3 | r2 ^= r3;
0x00091a8e mov.w r3, 0 | r3 = 0;
0x00091a92 it eq |
| if (r2 == r3) {
0x00091a94 ldreq r0, [r4, 0x68] | r0 = *((r4 + 0x68));
| goto label_76;
| }
| if (r2 == r3) {
| label_76:
0x00091a96 beq.w 0x914f8 | goto label_25;
| }
| label_57:
0x00091a9a blx 0x7e8c | fcn_00007e8c ();
| label_75:
0x00091a9e movs r3, 7 | r3 = 7;
0x00091aa0 mov sb, r3 | sb = r3;
0x00091aa2 b 0x9151c | goto label_26;
| label_64:
0x00091aa4 mov sb, r0 | sb = r0;
0x00091aa6 b 0x9150a | goto label_9;
| label_63:
0x00091aa8 ldr.w r2, [sl, 0x18] | r2 = *((sl + 0x18));
0x00091aac ldrb r1, [r2, 2] | r1 = *((r2 + 2));
0x00091aae ldrb r3, [r2, 3] | r3 = *((r2 + 3));
0x00091ab0 adds.w r3, r3, r1, lsl 8 | r3 += (r1 << 8);
0x00091ab4 str r3, [sp, 8] | var_28h = r3;
| if (r3 == r3) {
0x00091ab6 beq 0x91b4e | goto label_77;
| }
0x00091ab8 ldrb.w fp, [r4, 0x17] | fp = *((r4 + 0x17));
0x00091abc adds r2, 4 | r2 += 4;
0x00091abe movs r3, 0 | r3 = 0;
0x00091ac0 add r5, sp, 0x48 | r5 += var_48h;
0x00091ac2 b 0x91ace |
| while (r1 != lr) {
0x00091ac4 ldr r1, [sp, 8] | r1 = var_28h;
0x00091ac6 adds r3, 1 | r3++;
0x00091ac8 add r2, fp | r2 += fp;
0x00091aca cmp r1, r3 |
| if (r1 == r3) {
0x00091acc beq 0x91b4e | goto label_77;
| }
0x00091ace ldr r0, [r2] | r0 = *(r2);
0x00091ad0 mov sb, r5 | sb = r5;
0x00091ad2 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00091ad4 stm.w sb!, {r0, r1} | *(sb!) = r0;
| *((sb! + 4)) = r1;
0x00091ad8 ldr r1, [sp, 0x48] | r1 = var_48h;
0x00091ada ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00091adc rev r1, r1 | r1 = SWAP32 (r1);
0x00091ade rev r0, r0 | r0 = SWAP32 (r0);
0x00091ae0 cmp r1, lr |
0x00091ae2 it eq |
| if (r1 == lr) {
0x00091ae4 cmpeq r0, ip | __asm ("cmpeq r0, ip");
| }
0x00091ae6 bne 0x91ac4 |
| }
0x00091ae8 b 0x91736 | goto label_27;
| label_66:
0x00091aea ldr r0, [sp, 0xc] | r0 = var_2ch;
0x00091aec ldrd r1, r0, [r0, 8] | __asm ("ldrd r1, r0, [r0, 8]");
0x00091af0 subs r1, 1 | r1--;
0x00091af2 orrs r1, r0 | r1 |= r0;
| if (r1 == r0) {
0x00091af4 beq 0x91b56 | goto label_78;
| }
| if (r6 == 0) {
0x00091af6 cbz r6, 0x91b36 | goto label_79;
| }
| label_29:
0x00091af8 ldr r2, [sp, 0x14] | r2 = *((sp + 0x14));
0x00091afa ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00091afc subs r3, 1 | r3--;
0x00091afe str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
| if (r3 != 0) {
0x00091b00 cbnz r3, 0x91b12 | goto label_80;
| }
0x00091b02 ldr r1, [sp, 0x14] | r1 = *((sp + 0x14));
0x00091b04 mov r0, r4 | r0 = r4;
0x00091b06 bl 0x84120 | r0 = fcn_00084120 (r0, r1);
0x00091b0a mov sb, r0 | sb = r0;
0x00091b0c cmp r0, 0 |
| if (r0 != 0) {
0x00091b0e bne.w 0x91520 | goto label_28;
| }
| label_80:
0x00091b12 ldr r2, [sp, 0x20] | r2 = *((sp + 0x20));
0x00091b14 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00091b16 subs r3, 1 | r3--;
0x00091b18 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00091b1a cmp r3, 0 |
| if (r3 == 0) {
0x00091b1c beq 0x91bae | goto label_81;
| }
0x00091b1e movs r3, 0 | r3 = 0;
0x00091b20 mov sb, r3 | sb = r3;
0x00091b22 b 0x91532 | goto label_24;
| label_65:
0x00091b24 ldr r2, [sp, 0xc] | r2 = var_2ch;
0x00091b26 ldrd r3, r2, [r2, 8] | __asm ("ldrd r3, r2, [r2, 8]");
0x00091b2a subs r3, 1 | r3--;
0x00091b2c orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x00091b2e beq 0x91b56 | goto label_78;
| }
0x00091b30 ldr r3, [sp, 0x30] | r3 = *((sp + 0x30));
0x00091b32 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
| label_79:
0x00091b36 ldr r1, [sp, 0x2c] | r1 = *((sp + 0x2c));
0x00091b38 mov r0, r4 | r0 = r4;
0x00091b3a str r1, [sp, 4] | var_24h = r1;
0x00091b3c ldr r1, [sp, 0x20] | r1 = *((sp + 0x20));
0x00091b3e str r1, [sp] | *(sp) = r1;
0x00091b40 bl 0x84270 | r0 = fcn_00084270 (r0, r1, r2, r3, r4);
0x00091b44 mov sb, r0 | sb = r0;
0x00091b46 cmp r0, 0 |
| if (r0 != 0) {
0x00091b48 bne.w 0x9150a | goto label_9;
| }
0x00091b4c b 0x91af8 | goto label_29;
| label_77:
0x00091b4e movw r3, 0x10b | r3 = 0x10b;
0x00091b52 mov sb, r3 | sb = r3;
0x00091b54 b 0x9150a | goto label_9;
| label_78:
0x00091b56 ldr r3, [sp, 0x20] | r3 = *((sp + 0x20));
0x00091b58 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00091b5a ldrb r1, [r3, 2] | r1 = *((r3 + 2));
0x00091b5c ldrb r2, [r3, 3] | r2 = *((r3 + 3));
0x00091b5e add.w r2, r2, r1, lsl 8 | r2 += (r1 << 8);
0x00091b62 cmp r2, 0 |
| if (r2 == 0) {
0x00091b64 beq 0x91af8 | goto label_29;
| }
0x00091b66 ldr r7, [sp, 0x20] | r7 = *((sp + 0x20));
0x00091b68 movs r6, 0 | r6 = 0;
0x00091b6a add r5, sp, 0x48 | r5 += var_48h;
0x00091b6c b 0x91b7e | goto label_82;
| label_30:
0x00091b6e ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x00091b70 adds r6, 1 | r6++;
0x00091b72 ldrb r1, [r3, 2] | r1 = *((r3 + 2));
0x00091b74 ldrb r2, [r3, 3] | r2 = *((r3 + 3));
0x00091b76 add.w r2, r2, r1, lsl 8 | r2 += (r1 << 8);
0x00091b7a cmp r6, r2 |
| if (r6 >= r2) {
0x00091b7c bge 0x91af8 | goto label_29;
| }
| label_82:
0x00091b7e ldrb r2, [r4, 0x17] | r2 = *((r4 + 0x17));
0x00091b80 mov ip, r5 |
0x00091b82 mul r2, r6, r2 | r2 = r6 * r2;
0x00091b86 adds r2, 4 | r2 += 4;
0x00091b88 adds r1, r3, r2 | r1 = r3 + r2;
0x00091b8a ldr r0, [r3, r2] | r0 = *((r3 + r2));
0x00091b8c ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00091b8e ldr r3, [sp, 0x2c] | r3 = *((sp + 0x2c));
0x00091b90 stm.w ip!, {r0, r1} | *(ip!) = r0;
| *((ip! + 4)) = r1;
0x00091b94 mov r0, r4 | r0 = r4;
0x00091b96 ldr r2, [sp, 0x4c] | r2 = *((sp + 0x4c));
0x00091b98 strd r7, r3, [sp] | __asm ("strd r7, r3, [sp]");
0x00091b9c ldr r3, [sp, 0x48] | r3 = *((sp + 0x48));
0x00091b9e rev r2, r2 | r2 = SWAP32 (r2);
0x00091ba0 rev r3, r3 | r3 = SWAP32 (r3);
0x00091ba2 bl 0x84270 | r0 = fcn_00084270 (r0, r1, r2, r3, r4);
0x00091ba6 cmp r0, 0 |
| if (r0 == 0) {
0x00091ba8 beq 0x91b6e | goto label_30;
| }
0x00091baa mov sb, r0 | sb = r0;
0x00091bac b 0x9150a | goto label_9;
| label_81:
0x00091bae ldr r1, [sp, 0x20] | r1 = *((sp + 0x20));
0x00091bb0 mov r0, r4 | r0 = r4;
0x00091bb2 bl 0x84120 | r0 = fcn_00084120 (r0, r1);
0x00091bb6 mov sb, r0 | sb = r0;
0x00091bb8 b 0x91532 | goto label_24;
| label_62:
0x00091bd0 ldr r3, [sp, 0x2c] | r3 = *((sp + 0x2c));
0x00091bd2 mov r2, r7 | r2 = r7;
0x00091bd4 mov r1, sl | r1 = sl;
0x00091bd6 mov r0, r4 | r0 = r4;
0x00091bd8 adds r5, r3, 1 | r5 = r3 + 1;
0x00091bda mov r3, r5 | r3 = r5;
0x00091bdc bl 0x90fc0 | r0 = fcn_00090fc0 (r0, r1, r2, r3, r4, r5, r6);
0x00091be0 mov sb, r0 | sb = r0;
0x00091be2 cmp r0, 0 |
| if (r0 == 0) {
0x00091be4 beq.w 0x91756 | goto label_31;
| }
0x00091be8 b 0x9150a | goto label_9;
| label_48:
0x00091bea ldr r3, [sp, 0x44] | r3 = var_44h;
0x00091bec add r7, sp, 0x50 | r7 += var_50h;
0x00091bee ldr.w sl, [sp, 0x34] | sl = var_34h;
0x00091bf2 add r6, sp, 0x80 | r6 += var_80h;
0x00091bf4 mov r5, r3 | r5 = r3;
0x00091bf6 str r3, [sp, 0x38] | var_38h = r3;
0x00091bf8 b 0x91614 | goto label_32;
| label_47:
0x00091bfa ldr.w sl, [sp, 0x34] | sl = var_34h;
0x00091bfe mov r5, r3 | r5 = r3;
0x00091c00 add r7, sp, 0x50 | r7 += var_50h;
0x00091c02 add r6, sp, 0x80 | r6 += var_80h;
0x00091c04 str r3, [sp, 0x38] | var_38h = r3;
0x00091c06 b 0x91614 | goto label_32;
| label_38:
0x00091c08 movs r3, 7 | r3 = 7;
0x00091c0a mov sb, r3 | sb = r3;
0x00091c0c b 0x91538 | goto label_15;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x93d64 */
| #include <stdint.h>
|
; (fcn) fcn.00093d64 () | void fcn_00093d64 (int16_t arg1) {
| int16_t var_0h;
| 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;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| r0 = arg1;
0x00093d64 ldr.w r2, [pc, 0x488] | r2 = *(0x000941f0);
0x00093d68 ldr.w r3, [pc, 0x488] |
0x00093d6c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00093d70 sub sp, 0x5c |
0x00093d72 add r2, pc | r2 += pc;
0x00093d74 mov r4, r0 | r4 = r0;
0x00093d76 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00093d78 ldr r3, [r3] | r3 = *(0x941f4);
0x00093d7a str r3, [sp, 0x54] | var_54h = r3;
0x00093d7c mov.w r3, 0 | r3 = 0;
0x00093d80 ldr r3, [r0, 0x50] | r3 = *((r0 + 0x50));
| if (r3 == 0) {
0x00093d82 cbz r3, 0x93db0 | goto label_16;
| }
0x00093d84 ldr r5, [r0, 0x24] | r5 = *((r0 + 0x24));
| if (r5 != 0) {
| label_0:
0x00093d86 cbnz r5, 0x93dbc | goto label_17;
| }
| label_7:
0x00093d88 ldr r0, [r4, 0x50] | r0 = *((r4 + 0x50));
0x00093d8a ldr r3, [r0] | r3 = *(r0);
0x00093d8c adds r3, 1 | r3++;
0x00093d8e str r3, [r0] | *(r0) = r3;
| do {
0x00093d90 ldr.w r2, [pc, 0x464] |
0x00093d94 ldr.w r3, [pc, 0x45c] | r3 = *(0x941f4);
0x00093d98 add r2, pc | r2 = 0x127f94;
0x00093d9a ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00093d9c ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00093d9e ldr r3, [sp, 0x54] | r3 = var_54h;
0x00093da0 eors r2, r3 | r2 ^= r3;
0x00093da2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00093da6 bne.w 0x9419e | goto label_18;
| }
0x00093daa add sp, 0x5c |
0x00093dac pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x00093db0 bl 0x849fc | fcn_000849fc (r0);
0x00093db4 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00093db6 strd r0, r1, [r4, 0x48] | __asm ("strd r0, r1, [r4, 0x48]");
| if (r3 == 0) {
0x00093dba cbz r3, 0x93dc0 | goto label_19;
| }
| label_17:
0x00093dbc movs r0, 0 | r0 = 0;
0x00093dbe b 0x93d90 |
| } while (1);
| label_19:
0x00093dc0 ldr r1, [r4] | r1 = *(r4);
0x00093dc2 movs r2, 0xa | r2 = 0xa;
0x00093dc4 movs r3, 0 | r3 = 0;
0x00093dc6 mov r0, r4 | r0 = r4;
0x00093dc8 str r1, [sp, 8] | var_8h = r1;
0x00093dca bl 0x934cc | fcn_000934cc (r0, r1, r2);
0x00093dce ldr r5, [r4, 0x24] | r5 = *((r4 + 0x24));
0x00093dd0 mov r6, r0 | r6 = r0;
0x00093dd2 cbz r5, 0x93dda |
| while (1) {
| label_2:
0x00093dd4 movs r3, 0 | r3 = 0;
0x00093dd6 str r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
0x00093dd8 b 0x93d86 | goto label_0;
0x00093dda ldrd r3, r2, [r0] | __asm ("ldrd r3, r2, [r0]");
0x00093dde str r5, [r3, r2] | *((r3 + r2)) = r5;
0x00093de0 add r3, r2 | r3 += r2;
0x00093de2 str r5, [r3, 4] | *((r3 + 4)) = r5;
0x00093de4 str r5, [r3, 8] | *((r3 + 8)) = r5;
0x00093de6 str r5, [r3, 0xc] | *((r3 + 0xc)) = r5;
0x00093de8 str r5, [r3, 0x10] | *((r3 + 0x10)) = r5;
0x00093dea add r3, sp, 0x48 | r3 += var_48h;
0x00093dec ldr.w sb, [r0] | sb = *(r0);
0x00093df0 mov r1, r3 | r1 = r3;
0x00093df2 str r3, [sp, 0x38] | var_38h = r3;
0x00093df4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00093df6 strd r5, r5, [sp, 0x48] | __asm ("strd r5, r5, [var_48h]");
0x00093dfa add.w r0, sb, 4 | r0 = sb + 4;
0x00093dfe str r3, [sp, 0x34] | var_34h = r3;
0x00093e00 ldrb.w r3, [sb] | r3 = *(sb);
0x00093e04 str r3, [sp, 0x20] | var_20h = r3;
0x00093e06 ldrb.w r3, [sb, 1] | r3 = *((sb + 1));
0x00093e0a str r3, [sp, 0x24] | var_24h = r3;
0x00093e0c ldrb.w r3, [sb, 2] | r3 = *((sb + 2));
0x00093e10 str r3, [sp, 0x28] | var_28h = r3;
0x00093e12 ldrb.w r3, [sb, 3] | r3 = *((sb + 3));
0x00093e16 str r3, [sp, 0x2c] | var_2ch = r3;
0x00093e18 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00093e1c add r3, sp, 0x4c | r3 += var_4ch;
0x00093e1e adds r7, r0, 4 | r7 = r0 + 4;
0x00093e20 mov r1, r3 | r1 = r3;
0x00093e22 add.w r0, sb, r7 | r0 = sb + r7;
0x00093e26 str r3, [sp, 0x30] | var_30h = r3;
0x00093e28 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00093e2c ldr r3, [sp, 0x48] | r3 = var_48h;
0x00093e2e mov r8, r0 | r8 = r0;
0x00093e30 cmp.w r3, 0x7d0 |
0x00093e34 str r3, [sp, 0x10] | var_10h = r3;
| if (r3 > 0x7d0) {
0x00093e36 bhi 0x93f1c | goto label_20;
| }
0x00093e38 ldr.w sl, [sp, 0x4c] | sl = var_4ch;
0x00093e3c cmp.w sl, 0x7d0 |
| if (sl > 0x7d0) {
0x00093e40 bhi 0x93f1c | goto label_20;
| }
0x00093e42 subs r3, 1 | r3--;
0x00093e44 mov r1, r5 | r1 = r5;
0x00093e46 add.w fp, r3, r3, lsl 1 |
0x00093e4a str r3, [sp, 0x3c] | var_3ch = r3;
0x00093e4c lsl.w fp, fp, 2 |
0x00093e50 add.w fp, fp, 0x28 |
0x00093e54 mov r0, fp | r0 = fp;
0x00093e56 blx 0x7f18 | fcn_00007f18 ();
0x00093e5a str r0, [sp, 0x1c] | var_1ch = r0;
0x00093e5c cmp r0, 0 |
| if (r0 == 0) {
0x00093e5e beq.w 0x93fd4 | goto label_21;
| }
0x00093e62 mov r2, fp | r2 = fp;
0x00093e64 mov r1, r5 | r1 = r5;
0x00093e66 blx 0x8264 | fcn_00008264 ();
0x00093e6a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00093e6c add r7, r8 | r7 += r8;
0x00093e6e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00093e70 add.w r0, sb, r7 | r0 = sb + r7;
0x00093e74 add.w r1, r2, 8 | r1 = r2 + 8;
0x00093e78 str.w sl, [r2, 0x10] | __asm ("str.w sl, [r2, 0x10]");
0x00093e7c str r3, [r2, 0x14] | *((r2 + 0x14)) = r3;
0x00093e7e movs r3, 1 | r3 = 1;
0x00093e80 str r3, [r2] | *(r2) = r3;
0x00093e82 bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00093e86 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00093e88 add r7, r0 | r7 += r0;
0x00093e8a strd r5, r4, [sp, 0x14] | __asm ("strd r5, r4, [var_14h]");
0x00093e8e str r5, [sp, 0xc] | var_ch = r5;
0x00093e90 mov fp, r3 |
0x00093e92 str r3, [sp, 0x44] | var_44h = r3;
0x00093e94 mov r4, fp | r4 = fp;
0x00093e96 ldr.w fp, [sp, 0x34] | fp = var_34h;
0x00093e9a add r3, sp, 0x50 | r3 += var_50h;
0x00093e9c str r3, [sp, 0x40] | var_40h = r3;
| label_3:
0x00093e9e ldrd r2, r3, [sp, 0xc] | __asm ("ldrd r2, r3, [var_10h]");
0x00093ea2 cmp r3, r2 |
| if (r3 == r2) {
0x00093ea4 beq.w 0x94170 | goto label_22;
| }
0x00093ea8 cmp fp, r7 |
0x00093eaa mov.w r3, 0 | r3 = 0;
0x00093eae str r3, [sp, 0x50] | var_50h = r3;
| if (fp > r7) {
0x00093eb0 bgt 0x93ed6 | goto label_23;
| }
| label_11:
0x00093eb2 ldrd r5, r4, [sp, 0x14] | __asm ("ldrd r5, r4, [var_14h]");
| label_12:
0x00093eb6 movw r8, 0x10b | r8 = 0x10b;
| label_1:
0x00093eba ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00093ebc ldr r3, [r2] | r3 = *(r2);
0x00093ebe subs r3, 1 | r3--;
0x00093ec0 cmp r3, 0 |
0x00093ec2 str r3, [r2] | *(r2) = r3;
| if (r3 <= 0) {
0x00093ec4 ble.w 0x941a2 | goto label_24;
| }
| label_15:
0x00093ec8 mov r0, r6 | r0 = r6;
0x00093eca str.w r8, [r4, 0x24] | __asm ("str.w r8, [r4, 0x24]");
0x00093ece blx 0x84f8 | fcn_000084f8 ();
0x00093ed2 ldr r5, [r4, 0x24] | r5 = *((r4 + 0x24));
0x00093ed4 b 0x93dd4 |
| }
| label_23:
0x00093ed6 add.w r1, r4, 0x18 | r1 = r4 + 0x18;
0x00093eda add.w r0, sb, r7 | r0 = sb + r7;
0x00093ede bl 0xbbf8 | r0 = fcn_0000bbf8 (r0, r1);
0x00093ee2 add r7, r0 | r7 += r0;
0x00093ee4 ldr r1, [sp, 0x40] | r1 = var_40h;
0x00093ee6 add.w r0, sb, r7 | r0 = sb + r7;
0x00093eea bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00093eee ldr.w sl, [sp, 0x50] | sl = var_50h;
0x00093ef2 add r7, r0 | r7 += r0;
0x00093ef4 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00093ef6 cmp r2, sl |
| if (r2 > sl) {
0x00093ef8 ble 0x93f2c |
0x00093efa ldr r3, [sp, 0xc] | r3 = var_ch;
0x00093efc movw r8, 0x10b | r8 = 0x10b;
0x00093f00 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00093f02 ldrd r5, r4, [sp, 0x14] | __asm ("ldrd r5, r4, [var_14h]");
0x00093f06 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00093f0a add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x00093f0e movs r2, 0 | r2 = 0;
0x00093f10 str r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
0x00093f12 mov r2, sl | r2 = sl;
0x00093f14 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00093f16 subs r3, r3, r2 | r3 -= r2;
0x00093f18 str r3, [sp, 0x4c] | var_4ch = r3;
0x00093f1a b 0x93eba | goto label_1;
| label_20:
0x00093f1c movw r3, 0x10b | r3 = 0x10b;
| label_4:
0x00093f20 mov r0, r6 | r0 = r6;
0x00093f22 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00093f24 blx 0x84f8 | fcn_000084f8 ();
0x00093f28 ldr r5, [r4, 0x24] | r5 = *((r4 + 0x24));
0x00093f2a b 0x93dd4 | goto label_2;
| }
0x00093f2c add.w r2, sl, sl, lsl 1 | r2 = sl + (sl << 1);
0x00093f30 movs r1, 0 | r1 = 0;
0x00093f32 lsls r5, r2, 2 | r5 = r2 << 2;
0x00093f34 mov r0, r5 | r0 = r5;
0x00093f36 blx 0x7f18 | r0 = fcn_00007f18 ();
0x00093f3a mov r8, r0 | r8 = r0;
0x00093f3c cmp r0, 0 |
| if (r0 == 0) {
0x00093f3e beq.w 0x9413c | goto label_25;
| }
0x00093f42 mov r2, r5 | r2 = r5;
0x00093f44 movs r1, 0 | r1 = 0;
0x00093f46 blx 0x8264 | fcn_00008264 ();
| label_8:
0x00093f4a str.w r8, [r4, 0x20] | __asm ("str.w r8, [r4, 0x20]");
0x00093f4e cmp.w sl, 0 |
0x00093f52 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x00093f54 sub.w r2, r2, sl | r2 -= sl;
0x00093f58 str r2, [sp, 0x4c] | var_4ch = r2;
0x00093f5a str.w sl, [r4, 0x1c] | __asm ("str.w sl, [r4, 0x1c]");
| if (sl <= 0) {
0x00093f5e ble.w 0x94182 | goto label_26;
| }
0x00093f62 cmp fp, r7 |
| if (fp <= r7) {
0x00093f64 ble 0x93fb0 | goto label_27;
| }
0x00093f66 movs r5, 0 | r5 = 0;
0x00093f68 b 0x93f80 |
| while (r2 >= r3) {
0x00093f6a adds r5, 1 | r5++;
0x00093f6c cmp sl, r5 |
| if (sl == r5) {
0x00093f6e beq.w 0x94162 | goto label_28;
| }
0x00093f72 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00093f74 add.w r2, r5, r5, lsl 1 | r2 = r5 + (r5 << 1);
0x00093f78 cmp fp, r7 |
0x00093f7a add.w r8, r3, r2, lsl 2 | r8 = r3 + (r2 << 2);
| if (fp <= r7) {
0x00093f7e ble 0x93fb0 | goto label_27;
| }
0x00093f80 mov r1, r8 | r1 = r8;
0x00093f82 add.w r0, sb, r7 | r0 = sb + r7;
0x00093f86 bl 0xbbf8 | r0 = fcn_0000bbf8 (r0, r1);
0x00093f8a add r7, r0 | r7 += r0;
0x00093f8c add.w r1, r8, 4 | r1 = r8 + 4;
0x00093f90 add.w r0, sb, r7 | r0 = sb + r7;
0x00093f94 bl 0xbbf8 | r0 = fcn_0000bbf8 (r0, r1);
0x00093f98 add r7, r0 | r7 += r0;
0x00093f9a add.w r1, r8, 8 | r1 = r8 + 8;
0x00093f9e add.w r0, sb, r7 | r0 = sb + r7;
0x00093fa2 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00093fa6 ldrd r3, r2, [r8, 4] | __asm ("ldrd r3, r2, [r8, 4]");
0x00093faa add r7, r0 | r7 += r0;
0x00093fac cmp r2, r3 |
0x00093fae bge 0x93f6a |
| }
| label_27:
0x00093fb0 movw r2, 0x10b | r2 = 0x10b;
| label_9:
0x00093fb4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00093fb6 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00093fb8 cmp r3, r1 |
| if (r3 == r1) {
0x00093fba beq.w 0x94166 | goto label_29;
| }
| label_10:
0x00093fbe ldr r3, [sp, 0xc] | r3 = var_ch;
0x00093fc0 adds r4, 0xc | r4 += 0xc;
0x00093fc2 adds r3, 1 | r3++;
0x00093fc4 str r3, [sp, 0xc] | var_ch = r3;
0x00093fc6 cmp r2, 0 |
| if (r2 == 0) {
0x00093fc8 beq.w 0x93e9e | goto label_3;
| }
0x00093fcc ldr r5, [sp, 0x14] | r5 = var_14h;
0x00093fce mov r8, r2 | r8 = r2;
0x00093fd0 ldr r4, [sp, 0x18] | r4 = var_18h;
0x00093fd2 b 0x93eba | goto label_1;
| label_21:
0x00093fd4 movs r3, 7 | r3 = 7;
0x00093fd6 cmp.w fp, 0 |
| if (fp != 0) {
0x00093fda bne 0x93f20 | goto label_4;
| }
| label_13:
0x00093fdc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00093fde ldr r2, [sp, 0x20] | r2 = var_20h;
0x00093fe0 add.w sb, r3, r2, lsl 24 | sb = r3 + (r2 << 24);
0x00093fe4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00093fe6 movs r2, 0 | r2 = 0;
0x00093fe8 add.w sb, sb, r3, lsl 16 | sb += (r3 << 16);
0x00093fec ldr r3, [sp, 0x28] | r3 = var_28h;
0x00093fee add.w sb, sb, r3, lsl 8 | sb += (r3 << 8);
0x00093ff2 ldr r3, [sp, 8] | r3 = var_8h;
0x00093ff4 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x00093ff6 str r2, [r4, 0x24] | *((r4 + 0x24)) = r2;
| if (r3 != 0) {
0x00093ff8 cbz r3, 0x94002 |
0x00093ffa ldr r3, [sp, 8] | r3 = var_8h;
0x00093ffc ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x00093ffe cmp r3, sb |
| if (r3 == sb) {
0x00094000 beq 0x940c2 | goto label_30;
| }
| }
0x00094002 ldr r2, [sp, 8] | r2 = var_8h;
0x00094004 movs r3, 4 | r3 = 4;
0x00094006 movs r7, 0 | r7 = 0;
0x00094008 ldr r1, [pc, 0x1f0] |
0x0009400a strd r7, r7, [sp, 0x48] | __asm ("strd r7, r7, [var_48h]");
0x0009400e str r3, [r2, 0x50] | *((r2 + 0x50)) = r3;
0x00094010 str r3, [r2, 0x58] | *((r2 + 0x58)) = r3;
0x00094012 movw r3, 0xfd2 | r3 = 0xfd2;
0x00094016 str r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
0x00094018 movs r3, 0x10 | r3 = 0x10;
0x0009401a str r3, [r2, 0x54] | *((r2 + 0x54)) = r3;
0x0009401c mov.w r3, 0x100000 | r3 = 0x100000;
0x00094020 str r3, [r2, 0x5c] | *((r2 + 0x5c)) = r3;
0x00094022 add r1, pc | r1 = 0x128222;
0x00094024 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00094026 ldrd r2, r3, [r2, 4] | __asm ("ldrd r2, r3, [r2, 4]");
0x0009402a bl 0x492c8 | r0 = fcn_000492c8 (r0);
0x0009402e mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x00094030 cbz r0, 0x9404c |
0x00094032 ldr r2, [sp, 8] | r2 = var_8h;
0x00094034 mov r1, r8 | r1 = r8;
0x00094036 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00094038 ldr r0, [r2] | r0 = *(r2);
0x0009403a mov.w r2, -1 | r2 = -1;
0x0009403e str r7, [sp] | *(sp) = r7;
0x00094040 blx 0x8490 | fcn_00008490 ();
0x00094044 str r0, [sp, 0x4c] | var_4ch = r0;
0x00094046 mov r0, r8 | r0 = r8;
0x00094048 blx 0x84f8 | fcn_000084f8 ();
| }
0x0009404c ldr.w r8, [sp, 0x4c] | r8 = var_4ch;
0x00094050 cmp.w r8, 0 |
| if (r8 != 0) {
0x00094054 bne 0x940be | goto label_14;
| }
0x00094056 ldr.w sl, [pc, 0x1a8] | sl = *(0x00094200);
0x0009405a add sl, pc | sl += pc;
| label_6:
0x0009405c ldr r0, [sp, 0x48] | r0 = var_48h;
0x0009405e blx 0x809c | r0 = fcn_0000809c ();
0x00094062 cmp r0, 0x64 |
| if (r0 != 0x64) {
0x00094064 bne 0x94098 | goto label_31;
| }
| do {
0x00094066 movs r1, 0 | r1 = 0;
0x00094068 ldr r0, [sp, 0x48] | r0 = var_48h;
0x0009406a blx 0x81c4 | fcn_000081c4 ();
0x0009406e movs r1, 1 | r1 = 1;
0x00094070 mov r7, r0 | r7 = r0;
0x00094072 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00094074 blx 0x8538 | fcn_00008538 ();
0x00094078 mov r1, sl | r1 = sl;
0x0009407a mov fp, r0 |
0x0009407c mov r0, r7 | r0 = r7;
0x0009407e blx 0x831c | r0 = fcn_0000831c ();
0x00094082 cmp r0, 0 |
| if (r0 != 0) {
0x00094084 bne 0x94124 | goto label_32;
| }
0x00094086 mov r0, fp | r0 = fp;
0x00094088 blx 0x7da0 | r0 = fcn_00007da0 ();
0x0009408c mov r8, r0 | r8 = r0;
0x0009408e ldr r0, [sp, 0x48] | r0 = var_48h;
0x00094090 blx 0x809c | r0 = fcn_0000809c ();
0x00094094 cmp r0, 0x64 |
0x00094096 beq 0x94066 |
| } while (r0 == 0x64);
| label_31:
0x00094098 ldr r0, [sp, 0x48] | r0 = var_48h;
0x0009409a blx 0x8484 | r0 = fcn_00008484 ();
0x0009409e clz r3, r0 | r3 &= r0;
0x000940a2 cmp.w r8, 4 |
0x000940a6 lsr.w r3, r3, 5 | r3 >>= 5;
0x000940aa it eq |
| if (r8 != 4) {
0x000940ac moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x000940ae cbnz r3, 0x94106 | goto label_33;
| }
| label_5:
0x000940b0 cmp r0, 0 |
| if (r0 != 0) {
0x000940b2 bne.w 0x941c8 | goto label_34;
| }
0x000940b6 ldr r3, [sp, 8] | r3 = var_8h;
0x000940b8 mov r8, r0 | r8 = r0;
0x000940ba str.w sb, [r3, 0x48] | __asm ("str.w sb, [r3, 0x48]");
| label_14:
0x000940be str.w r8, [r4, 0x24] | __asm ("str.w r8, [r4, 0x24]");
| label_30:
0x000940c2 mov r0, r6 | r0 = r6;
0x000940c4 blx 0x84f8 | fcn_000084f8 ();
0x000940c8 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x000940ca cmp r2, 0 |
| if (r2 == 0) {
0x000940cc beq 0x94136 | goto label_35;
| }
0x000940ce ldr r1, [sp, 0x1c] | r1 = var_1ch;
| if (r1 != 0) {
0x000940d0 cbz r1, 0x940dc |
0x000940d2 ldr r3, [r1] | r3 = *(r1);
0x000940d4 subs r3, 1 | r3--;
0x000940d6 cmp r3, 0 |
0x000940d8 str r3, [r1] | *(r1) = r3;
| if (r3 <= 0) {
0x000940da ble 0x940e0 | goto label_36;
| }
| }
0x000940dc mov r5, r2 | r5 = r2;
0x000940de b 0x93dd4 | goto label_2;
| label_36:
0x000940e0 ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x000940e2 cmp r3, 0 |
0x000940e4 itt gt |
| if (r3 <= 0) {
0x000940e6 ldrgt r7, [sp, 0x1c] | r7 = var_1ch;
| }
| if (r3 <= 0) {
0x000940e8 movgt r6, r7 | r6 = r7;
| }
| if (r3 <= 0) {
0x000940ea ble 0x940fc | goto label_37;
| }
| do {
0x000940ec ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x000940ee adds r5, 1 | r5++;
0x000940f0 blx 0x84f8 | fcn_000084f8 ();
0x000940f4 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000940f6 adds r6, 0xc | r6 += 0xc;
0x000940f8 cmp r5, r3 |
0x000940fa blt 0x940ec |
| } while (r5 < r3);
| label_37:
0x000940fc ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000940fe blx 0x84f8 | fcn_000084f8 ();
0x00094102 ldr r5, [r4, 0x24] | r5 = *((r4 + 0x24));
0x00094104 b 0x93dd4 | goto label_2;
| label_33:
0x00094106 ldr r3, [sp, 8] | r3 = var_8h;
0x00094108 ldr r7, [r3, 0x68] | r7 = *((r3 + 0x68));
0x0009410a movs r3, 1 | r3 = 1;
0x0009410c str r3, [sp, 0x4c] | var_4ch = r3;
0x0009410e cmp r7, 0 |
| if (r7 == 0) {
0x00094110 beq 0x9417e | goto label_38;
| }
0x00094112 ldr r0, [pc, 0xf0] |
0x00094114 mov r1, r8 | r1 = r8;
0x00094116 movs r2, 4 | r2 = 4;
0x00094118 add r0, pc | r0 = 0x128322;
0x0009411a blx 0x852c | strncmp (r0, r1, r2);
0x0009411e str r0, [r7] | *(r7) = r0;
0x00094120 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x00094122 b 0x940b0 | goto label_5;
| label_32:
0x00094124 movs r3, 0 | r3 = 0;
0x00094126 ldr r0, [sp, 8] | r0 = var_8h;
0x00094128 str r3, [sp, 0x50] | var_50h = r3;
0x0009412a mov r2, fp | r2 = fp;
0x0009412c mov r1, r7 | r1 = r7;
0x0009412e add r3, sp, 0x50 | r3 += var_50h;
0x00094130 bl 0x40a70 | fcn_00040a70 (r0, r1, r2, r3, r4, r5, r6);
0x00094134 b 0x9405c | goto label_6;
| label_35:
0x00094136 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00094138 str r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
0x0009413a b 0x93d88 | goto label_7;
| label_25:
0x0009413c cmp r5, 0 |
| if (r5 == 0) {
0x0009413e beq.w 0x93f4a | goto label_8;
| }
0x00094142 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00094144 mov.w r8, 7 | r8 = 7;
0x00094148 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0009414a ldrd r5, r4, [sp, 0x14] | __asm ("ldrd r5, r4, [var_14h]");
0x0009414e add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00094152 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x00094156 mov r2, sl | r2 = sl;
0x00094158 str r0, [r3, 0x20] | *((r3 + 0x20)) = r0;
0x0009415a ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0009415c subs r3, r3, r2 | r3 -= r2;
0x0009415e str r3, [sp, 0x4c] | var_4ch = r3;
0x00094160 b 0x93eba | goto label_1;
| label_28:
0x00094162 movs r2, 0 | r2 = 0;
0x00094164 b 0x93fb4 | goto label_9;
| label_29:
0x00094166 ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x00094168 cmp r1, 0 |
| if (r1 == 0) {
0x0009416a beq.w 0x93fbe | goto label_10;
| }
0x0009416e b 0x93eb2 | goto label_11;
| label_22:
0x00094170 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00094172 ldrd r5, r4, [sp, 0x14] | __asm ("ldrd r5, r4, [var_14h]");
0x00094176 cmp r3, 0 |
| if (r3 != 0) {
0x00094178 bne.w 0x93eb6 | goto label_12;
| }
0x0009417c b 0x93fdc | goto label_13;
| label_38:
0x0009417e mov r8, r3 | r8 = r3;
0x00094180 b 0x940be | goto label_14;
| label_26:
0x00094182 ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 == 0) {
0x00094184 cbz r3, 0x941cc | goto label_39;
| }
0x00094186 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00094188 subs r2, 0 |
0x0009418a it ne |
| if (r2 == 0) {
0x0009418c movne r2, 1 | r2 = 1;
| }
0x0009418e cmp.w sl, 0 |
0x00094192 it ne |
| if (sl == 0) {
0x00094194 movne r2, 0 | r2 = 0;
| }
| if (r2 == 0) {
0x00094196 cbz r2, 0x941cc | goto label_39;
| }
0x00094198 ldrd r5, r4, [sp, 0x14] | __asm ("ldrd r5, r4, [var_14h]");
0x0009419c b 0x93eb6 | goto label_12;
| label_18:
0x0009419e blx 0x7e8c | fcn_00007e8c ();
| label_24:
0x000941a2 ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x000941a4 cmp r3, 0 |
| if (r3 <= 0) {
0x000941a6 ble 0x941c0 | goto label_40;
| }
0x000941a8 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x000941ac ldr r7, [sp, 0x44] | r7 = var_44h;
| do {
0x000941ae ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x000941b0 adds r5, 1 | r5++;
0x000941b2 blx 0x84f8 | fcn_000084f8 ();
0x000941b6 ldr.w r3, [sb, 0x14] | r3 = *((sb + 0x14));
0x000941ba adds r7, 0xc | r7 += 0xc;
0x000941bc cmp r5, r3 |
0x000941be blt 0x941ae |
| } while (r5 < r3);
| label_40:
0x000941c0 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000941c2 blx 0x84f8 | fcn_000084f8 ();
0x000941c6 b 0x93ec8 | goto label_15;
| label_34:
0x000941c8 mov r8, r0 | r8 = r0;
0x000941ca b 0x940be | goto label_14;
| label_39:
0x000941cc ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000941ce ldr r2, [sp, 0xc] | r2 = var_ch;
0x000941d0 cmp r3, r2 |
| if (r3 != r2) {
0x000941d2 beq 0x941de |
0x000941d4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000941d6 adds r4, 0xc | r4 += 0xc;
0x000941d8 adds r3, 1 | r3++;
0x000941da str r3, [sp, 0xc] | var_ch = r3;
0x000941dc b 0x93e9e | goto label_3;
| }
0x000941de ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x000941e0 cmp r2, 0 |
| if (r2 != 0) {
0x000941e2 bne.w 0x93eb2 | goto label_11;
| }
0x000941e6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000941e8 adds r4, 0xc | r4 += 0xc;
0x000941ea adds r3, 1 | r3++;
0x000941ec str r3, [sp, 0xc] | var_ch = r3;
0x000941ee b 0x93e9e | 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/libsqlite3.so.0.8.6 @ 0x94208 */
| #include <stdint.h>
|
; (fcn) fcn.00094208 () | void fcn_00094208 (uint32_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
| uint32_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00094208 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009420c mov sb, r0 | sb = r0;
0x0009420e ldr r0, [r0, 0x24] | r0 = *((r0 + 0x24));
0x00094210 sub sp, 0xc |
0x00094212 strd r2, r0, [sp] | __asm ("strd r2, r0, [sp]");
0x00094216 cmp r0, 0 |
| if (r0 != 0) {
0x00094218 bne 0x942c6 | goto label_4;
| }
0x0009421a asr.w sl, r3, 0x1f | sl = r3 >> 0x1f;
0x0009421e mov fp, r1 |
0x00094220 mov r4, r0 | r4 = r0;
0x00094222 add.w sl, sl, 0x10 | sl += 0x10;
0x00094226 adds r5, r0, r3 | r5 = r0 + r3;
0x00094228 add.w sl, sl, r2, lsl 5 | sl += (r2 << 5);
0x0009422c mov r7, r0 | r7 = r0;
0x0009422e movs r6, 0x28 | r6 = 0x28;
0x00094230 b 0x9426c |
| while (r4 != 0) {
0x00094232 blx 0x8264 | fcn_00008264 ();
0x00094236 mov r2, r5 | r2 = r5;
0x00094238 mov r3, sl | r3 = sl;
0x0009423a mov r0, sb | r0 = sb;
0x0009423c bl 0x934cc | fcn_000934cc (r0, r1, r2);
0x00094240 lsls r3, r7, 5 | r3 = r7 << 5;
0x00094242 adds r2, r4, r3 | r2 = r4 + r3;
0x00094244 str r0, [r2, 8] | *((r2 + 8)) = r0;
| if (r0 != 0) {
0x00094246 cbz r0, 0x94254 |
0x00094248 ldr r2, [r0] | r2 = *(r0);
0x0009424a ldrb r0, [r2] | r0 = *(r2);
0x0009424c and r0, r0, 1 | r0 &= 1;
0x00094250 rsb.w r0, r0, 1 | r0 = 1 - r0;
| }
0x00094254 ldr.w r1, [sb, 0x24] | r1 = *((sb + 0x24));
0x00094258 adds.w r5, r5, -0x80000000 | r5 += -0x80000000;
0x0009425c adc sl, sl, 0 | __asm ("adc sl, sl, 0");
0x00094260 adds r2, r7, 1 | r2 = r7 + 1;
0x00094262 adds r6, 0x20 | r6 += 0x20;
0x00094264 str r2, [r4] | *(r4) = r2;
0x00094266 orrs r0, r1 | r0 |= r1;
| if (r0 != r1) {
0x00094268 bne 0x942d2 | goto label_5;
| }
0x0009426a mov r7, r2 | r7 = r2;
0x0009426c mov r2, r6 | r2 = r6;
0x0009426e movs r3, 0 | r3 = 0;
0x00094270 mov r0, r4 | r0 = r4;
0x00094272 mov r8, r4 | r8 = r4;
0x00094274 blx 0x8638 | r0 = fcn_00008638 ();
0x00094278 mov r4, r0 | r4 = r0;
0x0009427a sub.w r3, r6, 0x20 | r3 = r6 - 0x20;
0x0009427e movs r1, 0 | r1 = 0;
0x00094280 movs r2, 0x20 | r2 = 0x20;
0x00094282 add r0, r3 | r0 += r3;
0x00094284 cmp r4, 0 |
0x00094286 bne 0x94232 |
| }
0x00094288 movs r3, 7 | r3 = 7;
0x0009428a str.w r3, [sb, 0x24] | __asm ("str.w r3, [sb, 0x24]");
0x0009428e cmp.w r8, 0 |
| if (r8 == 0) {
0x00094292 beq 0x942be | goto label_6;
| }
| label_0:
0x00094294 ldr.w r3, [r8] | r3 = *(r8);
0x00094298 cmp r3, 0 |
0x0009429a itt gt |
| if (r3 <= 0) {
0x0009429c ldrgt r5, [sp, 4] | r5 = var_4h;
| }
| if (r3 <= 0) {
0x0009429e movgt r4, r8 | r4 = r8;
| }
| if (r3 <= 0) {
0x000942a0 ble 0x942b4 | goto label_7;
| }
| do {
0x000942a2 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000942a4 adds r5, 1 | r5++;
0x000942a6 blx 0x84f8 | fcn_000084f8 ();
0x000942aa ldr.w r3, [r8] | r3 = *(r8);
0x000942ae adds r4, 0x20 | r4 += 0x20;
0x000942b0 cmp r5, r3 |
0x000942b2 blt 0x942a2 |
| } while (r5 < r3);
| label_7:
0x000942b4 mov r0, r8 | r0 = r8;
0x000942b6 mov.w r8, 0 | r8 = 0;
0x000942ba blx 0x84f8 | fcn_000084f8 ();
| label_6:
0x000942be mov r0, r8 | r0 = r8;
0x000942c0 add sp, 0xc |
0x000942c2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x000942c6 mov.w r8, 0 | r8 = 0;
0x000942ca mov r0, r8 | r0 = r8;
0x000942cc add sp, 0xc |
0x000942ce pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| if (r1 != 0) {
| label_5:
0x000942d2 cbnz r1, 0x942f8 | goto label_1;
| }
0x000942d4 ldr r2, [sp] | r2 = *(sp);
0x000942d6 str r2, [r4, 4] | *((r4 + 4)) = r2;
0x000942d8 cmp.w fp, 0 |
| if (fp != 0) {
0x000942dc bne 0x94306 | goto label_8;
| }
0x000942de add.w r5, r4, 8 | r5 = r4 + 8;
| do {
0x000942e2 mov r0, r5 | r0 = r5;
0x000942e4 adds r5, 0x20 | r5 += 0x20;
0x000942e6 bl 0xbe08 | fcn_0000be08 (r0);
0x000942ea cmp r7, fp |
0x000942ec add.w fp, fp, 1 |
0x000942f0 bne 0x942e2 |
| } while (r7 != fp);
0x000942f2 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
| if (r3 != 0) {
0x000942f6 cbz r3, 0x942fc |
| label_1:
0x000942f8 mov r8, r4 | r8 = r4;
0x000942fa b 0x94294 | goto label_0;
| }
| label_2:
0x000942fc mov r8, r4 | r8 = r4;
0x000942fe mov r0, r8 | r0 = r8;
0x00094300 add sp, 0xc |
0x00094302 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00094306 adds r3, 8 | r3 += 8;
0x00094308 adds r5, r4, r3 | r5 = r4 + r3;
0x0009430a subs r3, r7, 1 | r3 = r7 - 1;
0x0009430c and sl, r3, 0x80000000 | sl = r3 & 0x80000000;
0x00094310 lsl.w fp, r3, 0x1f |
0x00094314 orr.w sl, sl, r3, lsr 1 | sl |= (r3 >> 1);
0x00094318 mov r3, r4 | r3 = r4;
0x0009431a mov r8, r3 | r8 = r3;
0x0009431c mov r4, r1 | r4 = r1;
| label_3:
0x0009431e mov r6, r5 | r6 = r5;
| do {
0x00094320 mov r0, r5 | r0 = r5;
0x00094322 bl 0xbe08 | r0 = fcn_0000be08 (r0);
0x00094326 cmp r0, 0 |
0x00094328 beq 0x94320 |
| } while (r0 == 0);
0x0009432a str r4, [r5, 8] | *((r5 + 8)) = r4;
| if (r7 != 0) {
0x0009432c cbnz r7, 0x9433a | goto label_9;
| }
0x0009432e ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x00094332 mov r4, r8 | r4 = r8;
0x00094334 cmp r3, 0 |
| if (r3 != 0) {
0x00094336 bne 0x942f8 | goto label_1;
| }
0x00094338 b 0x942fc | goto label_2;
| label_9:
0x0009433a ldr r0, [r6, -0x20] | r0 = *((r6 - 0x20));
0x0009433e subs r5, 0x20 | r5 -= 0x20;
0x00094340 blx 0x84f8 | fcn_000084f8 ();
0x00094344 movs r2, 0x20 | r2 = 0x20;
0x00094346 movs r1, 0 | r1 = 0;
0x00094348 mov r0, r5 | r0 = r5;
0x0009434a subs r7, 1 | r7--;
0x0009434c blx 0x8264 | fcn_00008264 ();
0x00094350 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00094354 movs r2, 0 | r2 = 0;
0x00094356 ldr r1, [r6, 0x10] | r1 = *((r6 + 0x10));
0x00094358 adds.w r2, r2, fp | r2 += fp;
0x0009435c mov r0, sb | r0 = sb;
0x0009435e add.w r3, sl, r3, lsl 5 | r3 = sl + (r3 << 5);
0x00094362 adds r2, r2, r1 | r2 += r1;
0x00094364 add.w r3, r3, 0x10 | r3 += 0x10;
0x00094368 adc.w r3, r3, r1, asr 31 | __asm ("adc.w r3, r3, r1, asr 31");
0x0009436c bl 0x934cc | fcn_000934cc (r0, r1, r2);
0x00094370 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x00094374 adds.w fp, fp, -0x80000000 |
0x00094378 sbc sl, sl, 0 | __asm ("sbc sl, sl, 0");
0x0009437c str r0, [r6, -0x20] | *((r6 - 0x20)) = r0;
0x00094380 cmp r3, 0 |
| if (r3 == 0) {
0x00094382 beq 0x9431e | goto label_3;
| }
0x00094384 mov r4, r8 | r4 = r8;
0x00094386 b 0x94294 | 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/libsqlite3.so.0.8.6 @ 0x949ec */
| #include <stdint.h>
|
; (fcn) fcn.000949ec () | void fcn_000949ec (int16_t arg1) {
| r0 = arg1;
0x000949ec push {r4, r5, r6, lr} |
0x000949ee sub sp, 8 |
0x000949f0 ldr r5, [r0, 0x18] | r5 = *((r0 + 0x18));
0x000949f2 mov r1, r0 | r1 = r0;
0x000949f4 mov r4, r0 | r4 = r0;
0x000949f6 movs r2, 0 | r2 = 0;
0x000949f8 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000949fc mov r0, r5 | r0 = r5;
0x000949fe vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00094a02 bl 0x946e4 | fcn_000946e4 (r0, r1, r2, r3, r4, r5, r6);
0x00094a06 ldr r6, [r5, 0x24] | r6 = *((r5 + 0x24));
| if (r6 != 0) {
0x00094a08 cbnz r6, 0x94a24 | goto label_0;
| }
0x00094a0a ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x00094a0c ldrh r5, [r3, 4] | r5 = *((r3 + 4));
0x00094a0e add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x00094a12 add.w r5, r4, r5, lsl 5 | r5 = r4 + (r5 << 5);
0x00094a16 ldr r0, [r5, 0x5c] | r0 = *((r5 + 0x5c));
| if (r0 == 0) {
0x00094a18 cbz r0, 0x94a24 | goto label_0;
| }
0x00094a1a ldr.w r3, [r5, 0x94] | r3 = *((r5 + 0x94));
0x00094a1e ldrb r3, [r3] | r3 = *(r3);
0x00094a20 cmp r3, 0x30 |
0x00094a22 bne 0x94a30 |
| while (1) {
| label_0:
0x00094a24 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00094a26 movs r2, 0 | r2 = 0;
0x00094a28 ldr r0, [r3, 0x24] | r0 = *((r3 + 0x24));
0x00094a2a str r2, [r3, 0x24] | *((r3 + 0x24)) = r2;
0x00094a2c add sp, 8 |
0x00094a2e pop {r4, r5, r6, pc} |
0x00094a30 blx 0x84f8 | fcn_000084f8 ();
0x00094a34 movs r3, 1 | r3 = 1;
0x00094a36 str r6, [r5, 0x5c] | *((r5 + 0x5c)) = r6;
0x00094a38 strb r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x00094a3a b 0x94a24 |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x956d0 */
| #include <stdint.h>
|
; (fcn) fcn.000956d0 () | void fcn_000956d0 (int16_t arg_1h, int16_t arg_ch, int16_t arg_24h, int16_t arg_a0h, int16_t arg_a4h, int16_t arg_a8h, int16_t arg_b0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| 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;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| char * s1;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000956d0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000956d4 sub sp, 0x7c |
0x000956d6 str r2, [sp, 0x38] | var_38h = r2;
0x000956d8 mov fp, r0 |
0x000956da mov r6, r3 | r6 = r3;
0x000956dc mov r7, r1 | r7 = r1;
0x000956de ldr.w r2, [pc, 0x9e4] |
0x000956e2 ldr r0, [sp, 0xa0] | r0 = *(arg_a0h);
0x000956e4 ldr.w r3, [pc, 0x9e0] | r3 = *(0x960c8);
0x000956e8 add r2, pc | r2 = 0x12b7b2;
0x000956ea ldrd r5, r4, [sp, 0xa8] | __asm ("ldrd r5, r4, [arg_a8h]");
0x000956ee str r0, [sp, 0x14] | var_14h = r0;
0x000956f0 ldr r3, [r2, r3] |
0x000956f2 ldr r2, [sp, 0xa4] | r2 = *(arg_a4h);
0x000956f4 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000956f6 str r3, [sp, 0x74] | var_74h = r3;
0x000956f8 mov.w r3, 0 | r3 = 0;
0x000956fc ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00095700 str r2, [sp, 0x20] | var_20h = r2;
0x00095702 ldr r2, [sp, 0xb0] | r2 = *(arg_b0h);
0x00095704 str r2, [sp, 0x44] | var_44h = r2;
| if (r3 == 0) {
0x00095706 cbnz r3, 0x95720 |
0x00095708 cmp r5, 0 |
| if (r5 < 0) {
0x0009570a blt.w 0x95862 | goto label_29;
| }
0x0009570e add.w r3, r5, r5, lsl 1 | r3 = r5 + (r5 << 1);
0x00095712 add.w r3, r1, r3, lsl 2 | r3 = r1 + (r3 << 2);
0x00095716 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00095718 cmp r4, r3 |
0x0009571a it ge |
| if (r4 < r3) {
0x0009571c movge r4, r3 | r4 = r3;
| }
0x0009571e b 0x95722 |
| } else {
0x00095720 movs r4, 0 | r4 = 0;
| }
| label_0:
0x00095722 mov r1, r4 | r1 = r4;
0x00095724 mov r0, fp | r0 = fp;
0x00095726 bl 0x40334 | fcn_00040334 (r0, r1);
0x0009572a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009572c str r0, [sp, 0x28] | var_28h = r0;
0x0009572e str r0, [r3] | *(r3) = r0;
0x00095730 cmp r0, 0 |
| if (r0 == 0) {
0x00095732 beq 0x95834 | goto label_30;
| }
0x00095734 ldr r1, [sp, 0x38] | r1 = var_38h;
0x00095736 str r6, [r0, 0x28] | *((r0 + 0x28)) = r6;
0x00095738 ubfx r3, r1, 1, 1 | r3 = (r1 >> 1) & ((1 << 1) - 1);
0x0009573c tst.w r1, 0x20 |
0x00095740 str r3, [r0, 0x34] | *((r0 + 0x34)) = r3;
0x00095742 and r2, r1, 2 | r2 = r1 & 2;
0x00095746 ubfx r3, r1, 4, 1 | r3 = (r1 >> 4) & ((1 << 1) - 1);
0x0009574a str r2, [sp, 0x48] | var_48h = r2;
0x0009574c strb.w r3, [r0, 0x38] | *((r0 + 0x38)) = r3;
0x00095750 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
| if ((r1 & 0x20) == 0) {
0x00095754 bne 0x95768 |
0x00095756 cmp r3, 0 |
| if (r3 != 0) {
0x00095758 bne 0x95854 | goto label_31;
| }
0x0009575a ldr r1, [sp, 0x28] | r1 = var_28h;
0x0009575c add.w r0, fp, 0x24 | r0 += arg_24h;
0x00095760 bl 0x47184 | fcn_00047184 (r0, r1);
0x00095764 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
| }
0x00095768 str r3, [sp, 0x34] | var_34h = r3;
0x0009576a ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009576c cmp r3, 0 |
| if (r3 != 0) {
0x0009576e bne 0x95854 | goto label_31;
| }
0x00095770 cmp r5, 0 |
| if (r5 < 0) {
0x00095772 blt.w 0x958d4 | goto label_32;
| }
0x00095776 subs r4, 1 | r4--;
| if (r4 < 1) {
0x00095778 bmi 0x957b2 | goto label_2;
| }
0x0009577a add.w r5, r5, r5, lsl 1 | r5 += (r5 << 1);
0x0009577e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00095780 add.w r6, r7, r5, lsl 2 | r6 = r7 + (r5 << 2);
0x00095784 add.w r5, r4, r4, lsl 1 | r5 = r4 + (r4 << 1);
0x00095788 lsls r5, r5, 2 | r5 <<= 2;
0x0009578a add.w r7, r3, 0x50 | r7 = r3 + 0x50;
| do {
0x0009578e ldr r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x00095790 add r1, r5 | r1 += r5;
0x00095792 ldr r3, [r1, 4] | r3 = *((r1 + 4));
| if (r3 != 0) {
0x00095794 cbz r3, 0x9579e |
0x00095796 mov r2, r7 | r2 = r7;
0x00095798 mov r0, fp | r0 = fp;
0x0009579a bl 0x93b88 | fcn_00093b88 (r0, r1, r2);
| }
0x0009579e subs r4, 1 | r4--;
0x000957a0 subs r5, 0xc | r5 -= 0xc;
0x000957a2 adds r3, r4, 1 | r3 = r4 + 1;
0x000957a4 add.w r7, r7, 0x60 | r7 += 0x60;
0x000957a8 bne 0x9578e |
| } while (r3 != r4);
| label_1:
0x000957aa ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x000957ae cmp r3, 0 |
| if (r3 != 0) {
0x000957b0 bne 0x95854 | goto label_31;
| }
| label_2:
0x000957b2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000957b4 ldr r5, [r3, 0x30] | r5 = *((r3 + 0x30));
0x000957b6 subs r5, 1 | r5--;
0x000957b8 cmp r5, 0 |
0x000957ba it gt |
| if (r5 <= 0) {
0x000957bc ldrgt r6, [sp, 0x28] | r6 = var_28h;
| }
| if (r5 <= 0) {
0x000957be ble 0x957f6 | goto label_33;
| }
| do {
0x000957c0 mov r1, r5 | r1 = r5;
0x000957c2 mov r0, r6 | r0 = r6;
0x000957c4 bl 0x113cc | r0 = fcn_000113cc (r0, r1, r2);
0x000957c8 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x000957ca cbz r0, 0x957f2 |
0x000957cc ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
| if (r2 == 0) {
0x000957d0 cbnz r2, 0x957e6 |
0x000957d2 add.w r3, r0, r0, lsl 1 | r3 = r0 + (r0 << 1);
0x000957d6 mov r0, fp | r0 = fp;
0x000957d8 lsls r3, r3, 5 | r3 <<= 5;
0x000957da add.w r1, r3, 0x50 | r1 = r3 + 0x50;
0x000957de add r3, r6 | r3 += r6;
0x000957e0 ldr r3, [r3, 0x70] | r3 = *((r3 + 0x70));
0x000957e2 add r1, r6 | r1 += r6;
0x000957e4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| }
0x000957e6 mov r3, r5 | r3 = r5;
0x000957e8 mov r2, r4 | r2 = r4;
0x000957ea mov r1, r6 | r1 = r6;
0x000957ec mov r0, fp | r0 = fp;
0x000957ee bl 0x114b0 | fcn_000114b0 (r0, r1, r2, r3);
| }
0x000957f2 subs r5, 1 | r5--;
0x000957f4 bne 0x957c0 |
| } while (r5 != 1);
| label_33:
0x000957f6 ldr r6, [sp, 0x28] | r6 = var_28h;
0x000957f8 ldr r3, [r6, 0x48] | r3 = *((r6 + 0x48));
0x000957fa ldrb.w r5, [r6, 0x38] | r5 = *((r6 + 0x38));
0x000957fe ldrh r0, [r3, 4] | r0 = *((r3 + 4));
0x00095800 lsls r1, r0, 1 | r1 = r0 << 1;
0x00095802 adds r3, r1, r0 | r3 = r1 + r0;
0x00095804 add.w r3, r6, r3, lsl 5 | r3 = r6 + (r3 << 5);
0x00095808 ldr r4, [r3, 0x5c] | r4 = *((r3 + 0x5c));
0x0009580a clz r2, r4 | r2 &= r4;
0x0009580e lsrs r2, r2, 5 | r2 >>= 5;
0x00095810 strb r2, [r6, 0x10] | *((r6 + 0x10)) = r2;
0x00095812 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00095814 ldrd r6, r7, [r3, 0xa0] | __asm ("ldrd r6, r7, [r3, 0xa0]");
0x00095818 strd r6, r7, [r2, 0x40] | __asm ("strd r6, r7, [r2, 0x40]");
| if (r5 != 0) {
0x0009581c cbz r5, 0x95832 |
0x0009581e ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x00095822 cmp r4, 0 |
0x00095824 clz r2, r2 | r2 &= r2;
0x00095828 lsr.w r2, r2, 5 | r2 >>= 5;
0x0009582c it eq |
| if (r4 != 0) {
0x0009582e moveq r2, 0 | r2 = 0;
| }
| if (r2 != 0) {
0x00095830 cbnz r2, 0x95870 | goto label_34;
| }
| }
| if (r4 != 0) {
0x00095832 cbnz r4, 0x95876 | goto label_35;
| }
| do {
| label_30:
0x00095834 ldr.w r2, [pc, 0x894] |
0x00095838 ldr.w r3, [pc, 0x88c] | r3 = *(0x960c8);
0x0009583c add r2, pc | r2 = 0x12b90c;
0x0009583e ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00095840 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00095842 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00095844 eors r2, r3 | r2 ^= r3;
0x00095846 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009584a bne.w 0x960c0 | goto label_36;
| }
0x0009584e add sp, 0x7c |
0x00095850 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_31:
0x00095854 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00095856 bl 0x16c60 | fcn_00016c60 (r0);
0x0009585a ldr r2, [sp, 0x44] | r2 = var_44h;
0x0009585c movs r3, 0 | r3 = 0;
0x0009585e str r3, [r2] | *(r2) = r3;
0x00095860 b 0x95834 |
| } while (1);
| label_29:
0x00095862 ldr r4, [r1, 0x10] | r4 = *((r1 + 0x10));
0x00095864 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x00095868 cmp r3, 0 |
0x0009586a it ne |
| if (r3 == 0) {
0x0009586c addne r4, 1 | r4++;
| }
0x0009586e b 0x95722 | goto label_0;
| label_34:
0x00095870 ldr.w r2, [r3, 0xa8] | r2 = *((r3 + 0xa8));
| if (r2 != 0) {
0x00095874 cbz r2, 0x958a4 |
| label_35:
0x00095876 ldr.w r2, [pc, 0x858] | r2 = *(0x000960d0);
0x0009587a ldr.w r3, [pc, 0x84c] | r3 = *(0x960ca);
0x0009587e add r2, pc | r2 += pc;
0x00095880 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00095882 ldr r2, [r3] | r2 = *(0x960ca);
0x00095884 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00095886 eors r2, r3 | r2 ^= r3;
0x00095888 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009588c bne.w 0x960c0 | goto label_36;
| }
0x00095890 add r1, r0 | r1 += r0;
0x00095892 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00095894 ldr r3, [r0, 0x2c] | r3 = *((r0 + 0x2c));
0x00095896 add.w r1, r0, r1, lsl 5 | r1 = r0 + (r1 << 5);
0x0009589a adds r1, 0x50 | r1 += 0x50;
0x0009589c add sp, 0x7c |
0x0009589e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000958a2 bx r3 | return uint32_t (*r3)() ();
| }
0x000958a4 ldr.w r1, [pc, 0x82c] |
0x000958a8 ldr.w r3, [pc, 0x81c] | r3 = *(0x960c8);
0x000958ac add r1, pc | r1 = 0x12b984;
0x000958ae ldr r3, [r1, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000958b0 ldr r1, [r3] | r1 = imp._ITM_deregisterTMCloneTable;
0x000958b2 ldr r3, [sp, 0x74] | r3 = var_74h;
0x000958b4 eors r1, r3 | r1 ^= r3;
0x000958b6 mov.w r3, 0 | r3 = 0;
| if (r1 != r3) {
0x000958ba bne.w 0x960c0 | goto label_36;
| }
0x000958be vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000958c2 mov r0, fp | r0 = fp;
0x000958c4 ldr r1, [sp, 0x28] | r1 = var_28h;
0x000958c6 vstr d16, [sp, 0xa0] | __asm ("vstr d16, [sp, 0xa0]");
0x000958ca add sp, 0x7c |
0x000958cc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000958d0 b.w 0x946e4 | void (*0x946e4)() ();
| label_32:
0x000958d4 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000958d6 add.w r2, r7, 0x18 | r2 = r7 + 0x18;
0x000958da ldr.w r5, [fp, 0xc] | r5 = *(arg_ch);
0x000958de str r2, [sp, 0x18] | var_18h = r2;
0x000958e0 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x000958e4 add.w r3, r7, r3, lsl 2 | r3 = r7 + (r3 << 2);
0x000958e8 adds r3, 0x18 | r3 += 0x18;
0x000958ea str r3, [sp, 0x4c] | var_4ch = r3;
0x000958ec cmp r5, 0 |
| if (r5 != 0) {
0x000958ee beq 0x959e8 |
0x000958f0 ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 != 0) {
0x000958f2 cbz r3, 0x958fc |
0x000958f4 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000958f6 lsls r2, r3, 0x1c | r2 = r3 << 0x1c;
| if (r2 >= r3) {
0x000958f8 bpl.w 0x95fb0 | goto label_37;
| }
| }
0x000958fc add.w r3, r5, 0x10 | r3 = r5 + 0x10;
0x00095900 mov r0, r5 | r0 = r5;
0x00095902 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00095904 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00095906 bl 0x3f300 | fcn_0003f300 (r0, r1, r2, r3, r4, r5);
0x0009590a ldr.w r6, [fp, 0xc] | r6 = *(arg_ch);
0x0009590e str.w r0, [fp, 0x24] | __asm ("str.w r0, [arg_24h]");
0x00095912 ldr r5, [r6, 0x10] | r5 = *((r6 + 0x10));
0x00095914 cmp r5, 0 |
| if (r5 != 0) {
0x00095916 beq 0x959b8 |
0x00095918 add.w r8, r5, 0x28 | r8 = r5 + 0x28;
0x0009591c mov r0, r8 | r0 = r8;
0x0009591e blx 0x8160 | fcn_00008160 ();
0x00095922 mov r1, r5 | r1 = r5;
0x00095924 mov r4, r0 | r4 = r0;
0x00095926 movs r2, 0 | r2 = 0;
0x00095928 mov r0, r6 | r0 = r6;
0x0009592a bl 0x1ef60 | fcn_0001ef60 (r0, r1, r2);
0x0009592e ldr r5, [r5, 0x10] | r5 = *((r5 + 0x10));
0x00095930 mov r0, r8 | r0 = r8;
0x00095932 blx 0x8160 | fcn_00008160 ();
0x00095936 ldr.w sb, [fp, 0x24] | sb = *(arg_24h);
0x0009593a mov r7, r0 | r7 = r0;
0x0009593c subs r5, 0x29 | r5 -= 0x29;
0x0009593e subs r5, r5, r4 | r5 -= r4;
0x00095940 adds r4, 1 | r4++;
0x00095942 add.w r6, r8, r4 | r6 = r8 + r4;
0x00095946 cmp.w sb, 0 |
| if (sb != 0) {
0x0009594a bne 0x959b8 | goto label_38;
| }
0x0009594c movs r0, 0xc | r0 = 0xc;
0x0009594e movs r1, 0 | r1 = 0;
0x00095950 blx 0x7f18 | r0 = fcn_00007f18 ();
0x00095954 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00095956 cbz r0, 0x959b2 |
0x00095958 str r6, [r0] | *(r0) = r6;
0x0009595a str.w sb, [r0, 4] | __asm ("str.w sb, [r0, 4]");
0x0009595e str.w sb, [r0, 8] | __asm ("str.w sb, [r0, 8]");
| label_25:
0x00095962 mov r2, r7 | r2 = r7;
0x00095964 ldr r7, [sp, 0x28] | r7 = var_28h;
0x00095966 movs r6, 0 | r6 = 0;
0x00095968 mov r3, r8 | r3 = r8;
0x0009596a add.w r0, fp, 0x24 | r0 += arg_24h;
0x0009596e mov r1, r7 | r1 = r7;
0x00095970 str.w r6, [r7, 0x98] | __asm ("str.w r6, [r7, 0x98]");
0x00095974 adds r1, 0x94 | r1 += 0x94;
0x00095976 bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x0009597a add.w r1, r7, 0xa0 | r1 = r7 + 0xa0;
0x0009597e strd r5, r5, [r4, 4] | __asm ("strd r5, r5, [r4, 4]");
0x00095982 ldr r0, [r4] | r0 = *(r4);
0x00095984 str r4, [r7, 0x5c] | *((r7 + 0x5c)) = r4;
0x00095986 bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x0009598a ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009598c add.w r1, r7, 0x50 | r1 = r7 + 0x50;
0x00095990 strd r0, r6, [r7, 0x68] | __asm ("strd r0, r6, [r7, 0x68]");
0x00095994 str.w r5, [r7, 0x80] | __asm ("str.w r5, [r7, 0x80]");
0x00095998 cmp r3, 0 |
| if (r3 != 0) {
0x0009599a bne.w 0x96084 | goto label_39;
| }
0x0009599e ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x000959a2 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000959a4 ldr r4, [r2, 0x54] | r4 = *((r2 + 0x54));
| if (r3 != 0) {
0x000959a6 cbnz r3, 0x959bc | goto label_27;
| }
0x000959a8 ldr.w r0, [fp] | r0 = *(fp);
0x000959ac bl 0x11120 | fcn_00011120 (r0, r1);
0x000959b0 b 0x959bc | goto label_27;
| }
0x000959b2 movs r3, 7 | r3 = 7;
0x000959b4 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
| }
| label_38:
0x000959b8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000959ba ldr r4, [r3, 0x54] | r4 = *((r3 + 0x54));
| label_27:
0x000959bc lsls r3, r4, 0x1e | r3 = r4 << 0x1e;
| if (r3 < r4) {
0x000959be bmi.w 0x95fa6 | goto label_40;
| }
0x000959c2 ldr.w r3, [fp] | r3 = *(fp);
0x000959c6 ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x000959c8 cmp r3, 1 |
| if (r3 == 1) {
0x000959ca beq.w 0x96098 | goto label_41;
| }
0x000959ce ldr.w r3, [pc, 0x708] | r3 = *(0x000960d8);
0x000959d2 add r3, pc | r3 += pc;
| label_23:
0x000959d4 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000959d6 str r3, [r2, 0x70] | *((r2 + 0x70)) = r3;
0x000959d8 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000959da ldr r2, [sp, 0x18] | r2 = var_18h;
0x000959dc cmp r3, r2 |
0x000959de itt hi |
| if (r3 <= r2) {
0x000959e0 movhi r3, 1 | r3 = 1;
| }
| if (r3 <= r2) {
0x000959e2 strhi r3, [sp, 0x34] | var_34h = r3;
| }
| if (r3 > r2) {
0x000959e4 bhi 0x959f2 | goto label_42;
| }
0x000959e6 b 0x957aa | goto label_1;
| }
0x000959e8 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000959ea ldr r2, [sp, 0x18] | r2 = var_18h;
0x000959ec cmp r3, r2 |
| if (r3 < r2) {
0x000959ee bls.w 0x957b2 | goto label_2;
| }
| label_42:
0x000959f2 ldr.w r3, [pc, 0x6e8] | r3 = *(0x000960dc);
0x000959f6 str.w fp, [sp, 0xc] | __asm ("str.w fp, [var_ch]");
0x000959fa add r3, pc | r3 += pc;
0x000959fc str r3, [sp, 0x50] | var_50h = r3;
0x000959fe ldr.w r3, [pc, 0x6e0] | r3 = *(0x000960e0);
0x00095a02 add r3, pc | r3 += pc;
0x00095a04 str r3, [sp, 0x54] | var_54h = r3;
0x00095a06 ldr.w r3, [pc, 0x6dc] | r3 = *(0x000960e4);
0x00095a0a add r3, pc | r3 += pc;
0x00095a0c str r3, [sp, 0x58] | var_58h = r3;
0x00095a0e ldr.w r3, [pc, 0x6d8] | r3 = *(0x000960e8);
0x00095a12 add r3, pc | r3 += pc;
0x00095a14 str r3, [sp, 0x5c] | s1 = r3;
| label_5:
0x00095a16 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00095a18 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00095a1a subs.w sb, r3, 1 | sb = r3 - 1;
0x00095a1e str r3, [sp, 0x40] | var_40h = r3;
| if (sb < r3) {
0x00095a20 bmi.w 0x95ba0 | goto label_43;
| }
0x00095a24 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00095a26 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00095a28 str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x00095a2c add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00095a30 add.w r3, r2, r3, lsl 5 | r3 = r2 + (r3 << 5);
0x00095a34 add.w sl, r3, 0xa0 | sl = r3 + 0xa0;
| label_4:
0x00095a38 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00095a3a sub.w r2, sl, 0x50 | r2 = sl - 0x50;
0x00095a3e str r2, [sp, 0x10] | var_10h = r2;
0x00095a40 ldr r6, [r3, 8] | r6 = *((r3 + 8));
0x00095a42 ldr r3, [sp, 8] | r3 = var_8h;
0x00095a44 add.w r7, r3, r3, lsl 1 | r7 = r3 + (r3 << 1);
0x00095a48 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00095a4a add.w r4, r6, r7, lsl 2 | r4 = r6 + (r7 << 2);
0x00095a4e cmp r3, 0 |
| if (r3 == 0) {
0x00095a50 beq.w 0x95b7c | goto label_44;
| }
0x00095a54 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00095a56 movs r2, 0x60 | r2 = 0x60;
0x00095a58 movs r1, 0 | r1 = 0;
0x00095a5a blx 0x8264 | fcn_00008264 ();
0x00095a5e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095a60 str r4, [sl, -0x50] | *((sl - 0x50)) = r4;
0x00095a64 ldr r5, [r3, 0x3c] | r5 = *((r3 + 0x3c));
0x00095a66 cmp r5, 0 |
| if (r5 == 0) {
0x00095a68 beq.w 0x95d68 | goto label_45;
| }
| label_13:
0x00095a6c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095a6e ldr.w r8, [r3, 0x24] | r8 = *((r3 + 0x24));
0x00095a72 cmp.w r8, 0 |
| if (r8 != 0) {
0x00095a76 bne.w 0x95b88 | goto label_7;
| }
0x00095a7a ldr.w r2, [r6, r7, lsl 2] | offset_0 = r7 << 2;
| r2 = *((r6 + offset_0));
0x00095a7e movs r1, 1 | r1 = 1;
0x00095a80 mov r0, r5 | r0 = r5;
0x00095a82 blx 0x7e30 | sleep (r0);
0x00095a86 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00095a88 movs r1, 2 | r1 = 2;
0x00095a8a ldr r2, [sp, 0x14] | r2 = var_14h;
0x00095a8c mov r0, r5 | r0 = r5;
0x00095a8e str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00095a92 blx 0x83f0 | fcn_000083f0 ();
0x00095a94 stc p6, c4, [lr], 0xa0 | __asm ("stc p6, c4, [lr], 0xa0");
0x00095a98 blx 0x809c | r0 = fcn_0000809c ();
0x00095a9c cmp r0, 0x64 |
0x00095a9e itt ne |
| if (r0 == 0x64) {
0x00095aa0 movne r6, 1 | r6 = 1;
| }
| if (r0 == 0x64) {
0x00095aa2 strne r8, [sp, 0x30] | var_30h = r8;
| }
| if (r0 == 0x64) {
0x00095aa6 beq.w 0x95dae | goto label_46;
| }
| label_15:
0x00095aaa mov r0, r5 | r0 = r5;
0x00095aac blx 0x7cfc | fcn_00007cfc ();
0x00095ab0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095ab2 movs r1, 2 | r1 = 2;
0x00095ab4 str r0, [r3, 0x24] | *((r3 + 0x24)) = r0;
0x00095ab6 mov r0, r5 | r0 = r5;
0x00095ab8 blx 0x8248 | fcn_00008248 ();
0x00095abc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00095abe ldrd r4, r1, [sp, 0xc] | __asm ("ldrd r4, r1, [var_ch]");
0x00095ac2 cmp r3, r6 |
0x00095ac4 it gt |
| if (r3 <= r6) {
0x00095ac6 movgt r6, r3 | r6 = r3;
| }
0x00095ac8 mov r0, r4 | r0 = r4;
0x00095aca add.w r6, r6, -1 | r6 += -1;
0x00095ace it gt |
| if (r3 <= r6) {
0x00095ad0 movgt r3, 0 | r3 = 0;
| }
0x00095ad2 str r6, [sl, -0x48] | *((sl - 0x48)) = r6;
0x00095ad6 it gt |
| if (r3 <= r6) {
0x00095ad8 strgt r3, [sp, 0x30] | var_30h = r3;
| }
0x00095ada bl 0x935c0 | fcn_000935c0 (r0, r1);
0x00095ade ldr r3, [sl, -0x44] | r3 = *((sl - 0x44));
0x00095ae2 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00095ae4 str r3, [sp, 0x3c] | var_3ch = r3;
0x00095ae6 and r2, r2, 8 | r2 &= 8;
0x00095aea str r2, [sp, 0x24] | var_24h = r2;
0x00095aec cmp r3, 0 |
| if (r3 == 0) {
0x00095aee beq.w 0x95d60 | goto label_47;
| }
0x00095af2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00095af4 movs r7, 0 | r7 = 0;
0x00095af6 add r1, sp, 0x6c | r1 += var_6ch;
0x00095af8 ldr r4, [r3] | r4 = *(r3);
0x00095afa ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x00095afc ldr r6, [r3, 4] | r6 = *((r3 + 4));
0x00095afe strd r7, r7, [sp, 0x64] | __asm ("strd r7, r7, [var_64h]");
0x00095b02 adds r0, r4, r5 | r0 = r4 + r5;
0x00095b04 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00095b08 ldr.w fp, [sp, 0x6c] | fp = var_6ch;
0x00095b0c cmp r6, fp |
0x00095b0e str.w fp, [sp, 0x60] | __asm ("str.w fp, [var_60h]");
| if (r6 < fp) {
0x00095b12 blt 0x95bfe | goto label_21;
| }
0x00095b14 mov r3, r7 | r3 = r7;
0x00095b16 mov r8, r7 | r8 = r7;
0x00095b18 add r7, sp, 0x64 | r7 += var_64h;
0x00095b1a add r5, r0 | r5 += r0;
0x00095b1c mov sb, r7 | sb = r7;
0x00095b1e add r2, sp, 0x68 | r2 += var_68h;
0x00095b20 str r2, [sp, 0x2c] | var_2ch = r2;
| do {
| label_3:
0x00095b22 add.w r2, fp, 1 | r2 += arg_1h;
0x00095b26 add.w r0, r4, fp | r0 = r4 + fp;
0x00095b2a str r2, [sp, 0x60] | var_60h = r2;
0x00095b2c ldrb.w r2, [r4, fp] | r2 = *((r4 + fp));
0x00095b30 lsls r7, r2, 0x18 | r7 = r2 << 0x18;
0x00095b32 str r2, [sp, 0x68] | var_68h = r2;
| if (r7 < r2) {
0x00095b34 bmi 0x95bb4 | goto label_48;
| }
0x00095b36 cmp r8, r3 |
| if (r8 > r3) {
0x00095b38 bhi 0x95bca | goto label_9;
| }
| if (r8 == r3) {
| label_6:
0x00095b3a beq.w 0x95cb6 | goto label_49;
| }
| label_8:
0x00095b3e cmp r6, r5 |
| if (r6 <= r5) {
0x00095b40 ble.w 0x95d1e | goto label_50;
| }
| label_10:
0x00095b44 adds r0, r4, r5 | r0 = r4 + r5;
0x00095b46 mov r1, sb | r1 = sb;
0x00095b48 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00095b4c ldr r7, [sp, 0x6c] | r7 = var_6ch;
0x00095b4e add r5, r0 | r5 += r0;
0x00095b50 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00095b52 add r7, r3 | r7 += r3;
0x00095b54 cmp r6, r7 |
0x00095b56 str r7, [sp, 0x6c] | var_6ch = r7;
| if (r6 <= r7) {
0x00095b58 ble 0x95bfe | goto label_21;
| }
0x00095b5a add.w fp, r7, 1 |
0x00095b5e adds r0, r4, r7 | r0 = r4 + r7;
0x00095b60 str.w fp, [sp, 0x60] | __asm ("str.w fp, [var_60h]");
0x00095b64 ldrb r3, [r4, r7] | r3 = *((r4 + r7));
0x00095b66 lsls r1, r3, 0x18 | r1 = r3 << 0x18;
0x00095b68 str r3, [sp, 0x64] | var_64h = r3;
0x00095b6a bpl 0x95b22 |
| } while (r1 >= r3);
0x00095b6c mov r1, sb | r1 = sb;
0x00095b6e str r7, [sp, 0x60] | var_60h = r7;
0x00095b70 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00095b74 ldr r3, [sp, 0x64] | r3 = var_64h;
0x00095b76 add.w fp, r7, r0 |
0x00095b7a b 0x95b22 | goto label_3;
| label_44:
0x00095b7c ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 != 0) {
0x00095b7e cbz r3, 0x95b88 |
0x00095b80 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00095b82 mov r1, r4 | r1 = r4;
0x00095b84 bl 0x93b88 | fcn_00093b88 (r0, r1, r2);
| }
| label_7:
0x00095b88 ldr r3, [sp, 8] | r3 = var_8h;
0x00095b8a add.w sl, sl, 0x60 | sl += 0x60;
0x00095b8e subs r3, 1 | r3--;
0x00095b90 str r3, [sp, 8] | var_8h = r3;
0x00095b92 adds r3, 1 | r3++;
| if (r3 != 1) {
0x00095b94 bne.w 0x95a38 | goto label_4;
| }
0x00095b98 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00095b9a ldr r3, [sp, 0x40] | r3 = var_40h;
0x00095b9c add r3, r2 | r3 += r2;
0x00095b9e str r3, [sp, 0x34] | var_34h = r3;
| label_43:
0x00095ba0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00095ba2 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x00095ba4 adds r3, 0xc | r3 += 0xc;
0x00095ba6 cmp r2, r3 |
0x00095ba8 str r3, [sp, 0x18] | var_18h = r3;
| if (r2 > r3) {
0x00095baa bhi.w 0x95a16 | goto label_5;
| }
0x00095bae ldr.w fp, [sp, 0xc] | fp = var_ch;
0x00095bb2 b 0x957aa | goto label_1;
| label_48:
0x00095bb4 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00095bb6 str r3, [sp, 0x1c] | var_1ch = r3;
0x00095bb8 str.w fp, [sp, 0x60] | __asm ("str.w fp, [var_60h]");
0x00095bbc bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00095bc0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00095bc2 add r0, fp | r0 += fp;
0x00095bc4 str r0, [sp, 0x60] | var_60h = r0;
0x00095bc6 cmp r8, r3 |
| if (r8 < r3) {
0x00095bc8 bls 0x95b3a | goto label_6;
| }
| label_9:
0x00095bca ldr r3, [sp, 0x24] | r3 = var_24h;
0x00095bcc cmp r3, 0 |
| if (r3 == 0) {
0x00095bce beq.w 0x95eee | goto label_51;
| }
0x00095bd2 ldr r3, [sp, 0x60] | r3 = var_60h;
0x00095bd4 ldr.w fp, [sp, 0x68] | fp = var_68h;
| label_22:
0x00095bd8 asrs r2, r3, 0x1f | r2 = r3 >> 0x1f;
0x00095bda asrs r1, r6, 0x1f | r1 = r6 >> 0x1f;
0x00095bdc adds.w r3, r3, fp | r3 += fp;
0x00095be0 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00095be4 cmp r6, r3 |
0x00095be6 sbcs r1, r2 | __asm ("sbcs r1, r2");
0x00095be8 ite lt |
| if (r6 >= r3) {
0x00095bea movlt r1, 1 | r1 = 1;
| }
| if (r6 < r3) {
0x00095bec movge r1, 0 | r1 = 0;
| }
0x00095bee cmp.w fp, 0 |
0x00095bf2 it eq |
| if (fp != 0) {
0x00095bf4 orreq r1, r1, 1 | r1 |= 1;
| }
0x00095bf8 cmp r1, 0 |
| if (r1 == 0) {
0x00095bfa beq.w 0x95f36 | goto label_52;
| }
| label_21:
0x00095bfe ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095c00 movw r4, 0x10b | r4 = 0x10b;
0x00095c04 str r4, [r3, 0x24] | *((r3 + 0x24)) = r4;
| label_11:
0x00095c06 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00095c08 ldr r3, [sl, -0x4c] | r3 = *((sl - 0x4c));
0x00095c0c orrs r2, r4 | r2 |= r4;
| if (r2 == r4) {
0x00095c0e bne 0x95caa |
0x00095c10 ldr r0, [sl, -0x44] | r0 = *((sl - 0x44));
0x00095c14 orr r1, r3, 1 | r1 = r3 | 1;
0x00095c18 str r1, [sl, -0x4c] | *((sl - 0x4c)) = r1;
0x00095c1c cmp r0, 0 |
| if (r0 == 0) {
0x00095c1e beq.w 0x95daa | goto label_53;
| }
0x00095c22 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00095c24 cmp r2, 0 |
| if (r2 == 0) {
0x00095c26 beq.w 0x95dc6 | goto label_54;
| }
0x00095c2a orr r1, r3, 3 | r1 = r3 | 3;
0x00095c2e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00095c30 str r1, [sl, -0x4c] | *((sl - 0x4c)) = r1;
0x00095c34 cmp r3, 0 |
| if (r3 != 0) {
0x00095c36 bne.w 0x95dcc | goto label_55;
| }
| label_17:
0x00095c3a ldr r5, [sl, -0x10] | r5 = *((sl - 0x10));
0x00095c3e cmp r5, 0 |
| if (r5 == 0) {
0x00095c40 beq.w 0x95e08 | goto label_56;
| }
0x00095c44 ldr r3, [sl, -0x50] | r3 = *((sl - 0x50));
0x00095c48 ldr.w sb, [r5, 0x18] | sb = *((r5 + 0x18));
0x00095c4c ldr r0, [sp, 0xc] | r0 = var_ch;
0x00095c4e ldr r1, [r3] | r1 = *(r3);
0x00095c50 mov r2, sb | r2 = sb;
0x00095c52 asr.w r3, sb, 0x1f | r3 = sb >> 0x1f;
0x00095c56 add.w r3, r3, r1, lsl 5 | r3 += (r1 << 5);
0x00095c5a bl 0x934cc | r0 = fcn_000934cc (r0, r1, r2);
0x00095c5e mov r5, r0 | r5 = r0;
| if (r5 != 0) {
| label_20:
0x00095c60 cbz r5, 0x95c9e |
0x00095c62 ldr r0, [sl, -0x44] | r0 = *((sl - 0x44));
0x00095c66 blx 0x84f8 | fcn_000084f8 ();
0x00095c6a ldr r4, [r5] | r4 = *(r5);
0x00095c6c mov r1, sl | r1 = sl;
0x00095c6e strd sb, r5, [sl, -0x48] | __asm ("strd sb, r5, [sl, -0x48]");
0x00095c72 ldrb r3, [r4] | r3 = *(r4);
0x00095c74 ldrb r6, [r4, 1] | r6 = *((r4 + 1));
0x00095c76 add.w r6, r6, r3, lsl 8 | r6 += (r3 << 8);
0x00095c7a uxth r6, r6 | r6 = (int16_t) r6;
0x00095c7c adds r0, r4, r6 | r0 = r4 + r6;
0x00095c7e bl 0xbaf0 | r0 = fcn_0000baf0 (r0, r1);
0x00095c82 adds r3, r0, r6 | r3 = r0 + r6;
0x00095c84 str r3, [sl, -0x38] | *((sl - 0x38)) = r3;
0x00095c88 asrs r3, r3, 0x1f | r3 >>= 0x1f;
0x00095c8a str r3, [sl, -0x34] | *((sl - 0x34)) = r3;
0x00095c8e ldrd r3, r0, [r5, 4] | __asm ("ldrd r3, r0, [r5, 4]");
0x00095c92 cmp r0, r3 |
| if (r0 < r3) {
0x00095c94 blt.w 0x9605e | goto label_57;
| }
0x00095c98 adds r3, 1 | r3++;
0x00095c9a str r3, [sl, -0x20] | *((sl - 0x20)) = r3;
| }
| label_19:
0x00095c9e ldrd r0, r1, [sp, 0xc] | __asm ("ldrd r0, r1, [var_ch]");
0x00095ca2 bl 0x4722c | fcn_0004722c (r0, r1);
| label_16:
0x00095ca6 ldr r3, [sl, -0x4c] | r3 = *((sl - 0x4c));
| }
| label_14:
0x00095caa lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 >= r3) {
0x00095cac bpl 0x95d4a | goto label_58;
| }
0x00095cae ldr r3, [sp, 0x58] | r3 = var_58h;
0x00095cb0 str r3, [sl, -0x30] | *((sl - 0x30)) = r3;
0x00095cb4 b 0x95b88 | goto label_7;
| label_49:
0x00095cb6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00095cb8 ldr.w fp, [sp, 0x68] | fp = var_68h;
0x00095cbc sub.w r7, r3, r8 | r7 = r3 - r8;
0x00095cc0 cmp r7, fp |
0x00095cc2 it hs |
| if (r7 < fp) {
0x00095cc4 movhs r7, fp | r7 = fp;
| }
0x00095cc6 cmp r7, 0 |
| if (r7 == 0) {
0x00095cc8 beq.w 0x95f32 | goto label_59;
| }
0x00095ccc ldr r3, [sp, 0x60] | r3 = var_60h;
0x00095cce add.w r2, r8, -1 | r2 = r8 + -1;
0x00095cd2 subs r3, 1 | r3--;
0x00095cd4 add.w ip, r4, r3 |
0x00095cd8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00095cda add r2, r3 | r2 += r3;
0x00095cdc movs r3, 0 | r3 = 0;
0x00095cde b 0x95ce6 |
| while (r0 == r1) {
0x00095ce0 adds r3, 1 | r3++;
0x00095ce2 cmp r7, r3 |
| if (r7 == r3) {
0x00095ce4 beq 0x95d64 | goto label_60;
| }
0x00095ce6 ldrb r0, [ip, 1]! | r0 = *((ip += 1));
0x00095cea add.w lr, r8, r3 | lr = r8 + r3;
0x00095cee ldrb r1, [r2, 1]! | r1 = *((r2 += 1));
0x00095cf2 cmp r0, r1 |
0x00095cf4 beq 0x95ce0 |
| }
0x00095cf6 mov r8, lr | r8 = lr;
| label_12:
0x00095cf8 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00095cfa cmp r2, r8 |
| if (r2 == r8) {
0x00095cfc beq.w 0x95eda | goto label_61;
| }
0x00095d00 cmp fp, r3 |
| if (fp < r3) {
0x00095d02 bls.w 0x95b3e | goto label_8;
| }
0x00095d06 ldr r2, [sp, 0x60] | r2 = var_60h;
0x00095d08 add r3, r4 | r3 += r4;
0x00095d0a ldrb r2, [r3, r2] | r2 = *((r3 + r2));
0x00095d0c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00095d0e ldrb.w r3, [r3, r8] | r3 = *((r3 + r8));
0x00095d12 cmp r2, r3 |
| if (r2 > r3) {
0x00095d14 bhi.w 0x95bca | goto label_9;
| }
0x00095d18 cmp r6, r5 |
| if (r6 > r5) {
0x00095d1a bgt.w 0x95b44 | goto label_10;
| }
| label_50:
0x00095d1e ldr r3, [sp, 0x24] | r3 = var_24h;
0x00095d20 ldrd r8, r7, [sp, 0xc] | __asm ("ldrd r8, r7, [var_ch]");
| if (r3 != 0) {
0x00095d24 cbnz r3, 0x95d34 | goto label_62;
| }
0x00095d26 b 0x95eee | goto label_51;
| do {
0x00095d28 ldrd r6, r5, [r3, 4] | __asm ("ldrd r6, r5, [r3, 4]");
0x00095d2c ldr r4, [r3] | r4 = *(r3);
0x00095d2e cmp r5, r6 |
| if (r5 < r6) {
0x00095d30 blt.w 0x95f00 | goto label_63;
| }
| label_62:
0x00095d34 mov r1, r7 | r1 = r7;
0x00095d36 mov r0, r8 | r0 = r8;
0x00095d38 bl 0x935c0 | fcn_000935c0 (r0, r1);
0x00095d3c ldr r3, [sl, -0x44] | r3 = *((sl - 0x44));
0x00095d40 cmp r3, 0 |
0x00095d42 bne 0x95d28 |
| } while (r3 != 0);
0x00095d44 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095d46 ldr r4, [r3, 0x24] | r4 = *((r3 + 0x24));
0x00095d48 b 0x95c06 | goto label_11;
| label_58:
0x00095d4a ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095d4c ldr r3, [r3] | r3 = *(r3);
0x00095d4e ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x00095d50 cmp r3, 1 |
0x00095d52 ldrd r3, r2, [sp, 0x50] | __asm ("ldrd r3, r2, [var_50h]");
0x00095d56 it eq |
| if (r3 != 1) {
0x00095d58 moveq r3, r2 | r3 = r2;
| }
0x00095d5a str r3, [sl, -0x30] | *((sl - 0x30)) = r3;
0x00095d5e b 0x95b88 | goto label_7;
| label_47:
0x00095d60 ldr r4, [r4, 0x24] | r4 = *((r4 + 0x24));
0x00095d62 b 0x95c06 | goto label_11;
| label_60:
0x00095d64 add r8, r3 | r8 += r3;
0x00095d66 b 0x95cf8 | goto label_12;
| label_45:
0x00095d68 ldr r3, [r3] | r3 = *(r3);
0x00095d6a ldr r0, [sp, 0x5c] | r0 = s1;
0x00095d6c ldrd r1, r2, [r3, 4] | __asm ("ldrd r1, r2, [r3, 4]");
0x00095d70 blx 0x852c | strncmp (r0, r1, r2);
0x00095d74 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095d76 mov r5, r0 | r5 = r0;
0x00095d78 ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
| if (r2 == 0) {
0x00095d7a cbnz r2, 0x95d9e |
0x00095d7c cmp r0, 0 |
| if (r0 == 0) {
0x00095d7e beq 0x95e00 | goto label_64;
| }
0x00095d80 mov r1, r3 | r1 = r3;
0x00095d82 mov r8, r3 | r8 = r3;
0x00095d84 ldr r0, [r1], 0x3c | r0 = *(r1);
| r1 += 0x3c;
0x00095d88 movs r3, 5 | r3 = 5;
0x00095d8a ldr r0, [r0] | r0 = *(r0);
0x00095d8c strd r1, r2, [sp] | __asm ("strd r1, r2, [sp]");
0x00095d90 mov.w r2, -1 | r2 = -1;
0x00095d94 mov r1, r5 | r1 = r5;
0x00095d96 blx 0x7f24 | fcn_00007f24 ();
0x00095d9a str.w r0, [r8, 0x24] | __asm ("str.w r0, [r8, 0x24]");
| }
| label_18:
0x00095d9e mov r0, r5 | r0 = r5;
0x00095da0 blx 0x84f8 | fcn_000084f8 ();
0x00095da4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095da6 ldr r5, [r3, 0x3c] | r5 = *((r3 + 0x3c));
0x00095da8 b 0x95a6c | goto label_13;
| do {
| label_53:
0x00095daa mov r3, r1 | r3 = r1;
0x00095dac b 0x95caa | goto label_14;
| label_46:
0x00095dae mov r1, r8 | r1 = r8;
0x00095db0 mov r0, r5 | r0 = r5;
0x00095db2 blx 0x8050 | r0 = fcn_00008050 ();
0x00095db6 asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x00095db8 lsrs r6, r0, 1 | r6 = r0 >> 1;
0x00095dba orr.w r6, r6, r3, lsl 31 | r6 |= (r3 << 31);
0x00095dbe and r3, r0, 1 | r3 = r0 & 1;
0x00095dc2 str r3, [sp, 0x30] | var_30h = r3;
0x00095dc4 b 0x95aaa | goto label_15;
| label_54:
0x00095dc6 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00095dc8 cmp r3, 0 |
0x00095dca beq 0x95daa |
| } while (r3 == 0);
| label_55:
0x00095dcc ldr r3, [sl, -0x50] | r3 = *((sl - 0x50));
0x00095dd0 and r1, r1, 2 | r1 &= 2;
0x00095dd4 ldr r4, [sl, -0x48] | r4 = *((sl - 0x48));
0x00095dd8 ldr r2, [r3] | r2 = *(r3);
0x00095dda ldr r3, [sl, -0x2c] | r3 = *((sl - 0x2c));
0x00095dde cmp r3, r4 |
| if (r3 == r4) {
0x00095de0 bne 0x95dec |
0x00095de2 ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x00095de4 ldr r0, [sl, -0x20] | r0 = *((sl - 0x20));
0x00095de8 cmp r0, r4 |
| if (r0 < r4) {
0x00095dea blt 0x95df6 | goto label_65;
| }
| }
0x00095dec ldr r0, [sp, 0xc] | r0 = var_ch;
0x00095dee bl 0x94208 | fcn_00094208 (r0, r1, r2, r3);
0x00095df2 str r0, [sl, -0x10] | *((sl - 0x10)) = r0;
| label_65:
0x00095df6 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00095df8 cmp r3, 0 |
| if (r3 == 0) {
0x00095dfa beq.w 0x95ca6 | goto label_16;
| }
0x00095dfe b 0x95c3a | goto label_17;
| label_64:
0x00095e00 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00095e02 movs r3, 7 | r3 = 7;
0x00095e04 str r3, [r2, 0x24] | *((r2 + 0x24)) = r3;
0x00095e06 b 0x95d9e | goto label_18;
| label_56:
0x00095e08 ldr r3, [sl, -0x2c] | r3 = *((sl - 0x2c));
0x00095e0c ldr r7, [sl, -0x48] | r7 = *((sl - 0x48));
0x00095e10 ldr r6, [sl, -0x44] | r6 = *((sl - 0x44));
0x00095e14 cmp r3, r7 |
0x00095e16 ite eq |
| if (r3 != r7) {
0x00095e18 ldreq r3, [sl, -0x28] | r3 = *((sl - 0x28));
| }
| if (r3 != r7) {
0x00095e1c movs r3, 4 | r3 = 4;
| }
0x00095e1e ldr r2, [r6] | r2 = *(r6);
0x00095e20 it ne |
| if (r3 == 4) {
0x00095e22 movne r4, 0xd | r4 = 0xd;
| }
0x00095e24 add.w r1, r3, -1 | r1 = r3 + -1;
0x00095e28 it eq |
| if (r3 != 4) {
0x00095e2a addeq r4, r3, 9 | r4 = r3 + 9;
| }
0x00095e2e add r1, r2 | r1 += r2;
| do {
0x00095e30 ldrb r0, [r1, 1]! | r0 = *((r1 += 1));
0x00095e34 adds r3, 1 | r3++;
0x00095e36 cmp r3, r4 |
0x00095e38 ite ge |
| if (r3 < r4) {
0x00095e3a movge r2, 0 | r2 = 0;
| }
| if (r3 >= r4) {
0x00095e3c movlt r2, 1 | r2 = 1;
| }
0x00095e3e ands.w r2, r2, r0, lsr 7 | r2 &= (r0 >> 7);
0x00095e42 bne 0x95e30 |
| } while (r2 != r2);
0x00095e44 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00095e46 str r3, [sl, -0x38] | *((sl - 0x38)) = r3;
0x00095e4a asrs r3, r3, 0x1f | r3 >>= 0x1f;
0x00095e4c str r3, [sl, -0x34] | *((sl - 0x34)) = r3;
0x00095e50 ldr r3, [sl, -0x20] | r3 = *((sl - 0x20));
0x00095e54 cmp r3, r2 |
| if (r3 < r2) {
0x00095e56 blt.w 0x95c9e | goto label_19;
| }
0x00095e5a ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095e5c adds r6, r7, 1 | r6 = r7 + 1;
0x00095e5e ldr r8, [sl, -0x50] | r8 = *((sl - 0x50));
0x00095e62 ldr.w sb, [r3, 0x24] | sb = *((r3 + 0x24));
0x00095e66 cmp.w sb, 0 |
| if (sb != 0) {
0x00095e6a bne.w 0x95c9e | goto label_19;
| }
0x00095e6e asrs r7, r6, 0x1f | r7 = r6 >> 0x1f;
0x00095e70 mov r4, r6 | r4 = r6;
0x00095e72 mov fp, r3 |
0x00095e74 str.w sl, [sp, 0x24] | __asm ("str.w sl, [var_24h]");
0x00095e78 b 0x95ecc |
| while (r3 >= r6) {
0x00095e7a ldr.w r3, [r8] | r3 = *(r8);
0x00095e7e movs r2, 0 | r2 = 0;
0x00095e80 adds r2, r2, r4 | r2 += r4;
0x00095e82 mov r0, fp | r0 = fp;
0x00095e84 add.w r3, r7, r3, lsl 5 | r3 = r7 + (r3 << 5);
0x00095e88 bl 0x934cc | r0 = fcn_000934cc (r0, r1, r2);
0x00095e8c mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x00095e8e cbz r0, 0x95ebc |
0x00095e90 ldr r0, [r0] | r0 = *(r0);
0x00095e92 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00095e94 ldr.w sl, [r3, 4] | sl = *((r3 + 4));
0x00095e98 ldrb.w ip, [r0] | ip = *(r0);
0x00095e9c ldrb r0, [r0, 1] | r0 = *((r0 + 1));
0x00095e9e str r1, [sp, 0x1c] | var_1ch = r1;
0x00095ea0 add.w r0, r0, ip, lsl 8 | r0 += (ip << 8);
0x00095ea4 uxth r0, r0 | r0 = (int16_t) r0;
0x00095ea6 cmp r0, 0 |
0x00095ea8 itett ne |
| if (r0 == 0) {
0x00095eaa movne r0, r5 | r0 = r5;
| }
| if (r0 != 0) {
0x00095eac moveq r0, r3 | r0 = r3;
| }
| if (r0 == 0) {
0x00095eae movne sb, r6 | sb = r6;
| }
| if (r0 == 0) {
0x00095eb0 movne r5, r3 | r5 = r3;
| }
0x00095eb2 blx 0x84f8 | fcn_000084f8 ();
0x00095eb6 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00095eb8 cmp r1, sl |
| if (r1 < sl) {
0x00095eba blt 0x95ed4 | goto label_66;
| }
| }
0x00095ebc ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00095ec0 adds r4, 1 | r4++;
0x00095ec2 add.w r6, r6, 1 | r6++;
0x00095ec6 adc r7, r7, 0 | __asm ("adc r7, r7, 0");
| if (r3 != 0) {
0x00095eca cbnz r3, 0x95ed4 | goto label_66;
| }
0x00095ecc ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x00095ed0 cmp r3, r6 |
0x00095ed2 bge 0x95e7a |
| }
| label_66:
0x00095ed4 ldr.w sl, [sp, 0x24] | sl = var_24h;
0x00095ed8 b 0x95c60 | goto label_20;
| label_61:
0x00095eda ldr r2, [sp, 0x24] | r2 = var_24h;
0x00095edc cmp fp, r3 |
0x00095ede clz r2, r2 | r2 &= r2;
0x00095ee2 lsr.w r2, r2, 5 | r2 >>= 5;
0x00095ee6 it eq |
| if (fp != r3) {
0x00095ee8 moveq r2, 0 | r2 = 0;
| }
0x00095eea cmp r2, 0 |
| if (r2 == 0) {
0x00095eec beq 0x95fac | goto label_67;
| }
| label_51:
0x00095eee ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00095ef0 blx 0x84f8 | fcn_000084f8 ();
0x00095ef4 movs r3, 0 | r3 = 0;
0x00095ef6 str r3, [sl, -0x44] | *((sl - 0x44)) = r3;
0x00095efa ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095efc ldr r4, [r3, 0x24] | r4 = *((r3 + 0x24));
0x00095efe b 0x95c06 | goto label_11;
| label_63:
0x00095f00 add r1, sp, 0x60 | r1 += var_60h;
0x00095f02 adds r0, r4, r5 | r0 = r4 + r5;
0x00095f04 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00095f08 ldr r7, [sp, 0x60] | r7 = var_60h;
0x00095f0a cmp r5, r7 |
0x00095f0c it gt |
| if (r5 > r7) {
0x00095f0e cmpgt r7, 3 | __asm ("cmpgt r7, 3");
| }
0x00095f10 ite le |
| if (r5 > r7) {
0x00095f12 movle r3, 1 | r3 = 1;
| }
| if (r5 > r7) {
0x00095f14 movgt r3, 0 | r3 = 0;
| goto label_68;
| }
| if (r5 <= r7) {
| label_68:
0x00095f16 ble.w 0x95bfe | goto label_21;
| }
0x00095f1a add r5, r0 | r5 += r0;
0x00095f1c add r1, sp, 0x68 | r1 += var_68h;
0x00095f1e adds r0, r4, r7 | r0 = r4 + r7;
0x00095f20 str r3, [sp, 0x64] | var_64h = r3;
0x00095f22 str r7, [sp, 0x6c] | var_6ch = r7;
0x00095f24 bl 0xbbf8 | r0 = fcn_0000bbf8 (r0, r1);
0x00095f28 adds r3, r7, r0 | r3 = r7 + r0;
0x00095f2a ldr.w fp, [sp, 0x68] | fp = var_68h;
0x00095f2e str r3, [sp, 0x60] | var_60h = r3;
0x00095f30 b 0x95bd8 | goto label_22;
| label_59:
0x00095f32 mov r3, r7 | r3 = r7;
0x00095f34 b 0x95cf8 | goto label_12;
| label_52:
0x00095f36 str r3, [sl, -0x38] | *((sl - 0x38)) = r3;
0x00095f3a sub.w r8, sl, 0xc | r8 = sl - 0xc;
0x00095f3e str r3, [sl, -0x28] | *((sl - 0x28)) = r3;
0x00095f42 ldr r3, [sl, -0x48] | r3 = *((sl - 0x48));
0x00095f46 ldr r2, [sp, 0x64] | r2 = var_64h;
0x00095f48 str r1, [sl, -0x34] | *((sl - 0x34)) = r1;
0x00095f4c str r3, [sl, -0x2c] | *((sl - 0x2c)) = r3;
0x00095f50 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00095f52 str r1, [sl, -0x8] | *((sl - 0x8)) = r1;
0x00095f56 mov r1, r8 | r1 = r8;
0x00095f58 add.w r7, r3, 0x24 | r7 = r3 + 0x24;
0x00095f5c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00095f5e mov r0, r7 | r0 = r7;
0x00095f60 bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x00095f64 ldr r3, [sp, 0x60] | r3 = var_60h;
0x00095f66 mov r1, r8 | r1 = r8;
0x00095f68 ldr r2, [sp, 0x68] | r2 = var_68h;
0x00095f6a mov r0, r7 | r0 = r7;
0x00095f6c add r3, r4 | r3 += r4;
0x00095f6e bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x00095f72 cmp r6, r5 |
| if (r6 > r5) {
0x00095f74 bgt 0x9606e | goto label_69;
| }
0x00095f76 ldr r3, [sl, -0x44] | r3 = *((sl - 0x44));
0x00095f7a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00095f7c adds r3, 1 | r3++;
0x00095f7e str r3, [sl, -0x20] | *((sl - 0x20)) = r3;
| label_26:
0x00095f82 ldr r4, [sp, 0xc] | r4 = var_ch;
0x00095f84 str r5, [sl, -0x24] | *((sl - 0x24)) = r5;
0x00095f88 ldr r5, [sp, 0x10] | r5 = var_10h;
0x00095f8a mov r0, r4 | r0 = r4;
0x00095f8c mov r1, r5 | r1 = r5;
0x00095f8e bl 0x93644 | fcn_00093644 (r0);
0x00095f92 mov r3, r4 | r3 = r4;
0x00095f94 ldr r4, [r4, 0x24] | r4 = *((r4 + 0x24));
0x00095f96 cmp r4, 0 |
| if (r4 != 0) {
0x00095f98 bne.w 0x95c06 | goto label_11;
| }
0x00095f9c ldr r0, [r3] | r0 = *(r3);
0x00095f9e mov r1, r5 | r1 = r5;
0x00095fa0 bl 0x11120 | fcn_00011120 (r0, r1);
0x00095fa4 b 0x95c06 | goto label_11;
| label_40:
0x00095fa6 ldr r3, [pc, 0x144] |
0x00095fa8 add r3, pc | r3 = 0x12c09a;
0x00095faa b 0x959d4 | goto label_23;
| label_67:
0x00095fac ldr r3, [sp, 0x60] | r3 = var_60h;
0x00095fae b 0x95bd8 | goto label_22;
| label_37:
0x00095fb0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00095fb2 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x00095fb4 cmp r3, 0 |
| if (r3 <= 0) {
0x00095fb6 ble 0x960aa | goto label_70;
| }
0x00095fb8 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00095fba movs r0, 0xd | r0 = 0xd;
0x00095fbc adds r2, r4, r3 | r2 = r4 + r3;
| do {
0x00095fbe ldrb r3, [r2, -0x1]! | r3 = *((r2 -= 0x1));
0x00095fc2 cmp r4, r2 |
0x00095fc4 eor.w r3, r3, r0, lsl 3 | r3 ^= (r0 << 3);
0x00095fc8 eor.w r0, r0, r3 | r0 ^= r3;
0x00095fcc bne 0x95fbe |
| } while (r4 != r2);
| label_28:
0x00095fce bl 0xab8dc | fcn_000ab8dc (r0, r1, r2);
0x00095fd2 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00095fd4 ldr.w r6, [r3, r1, lsl 2] | offset_1 = r1 << 2;
| r6 = *((r3 + offset_1));
0x00095fd8 cmp r6, 0 |
| if (r6 == 0) {
0x00095fda beq 0x9609e | goto label_71;
| }
0x00095fdc ldr.w r8, [sp, 0x14] | r8 = var_14h;
0x00095fe0 ldr.w sb, [sp, 0x20] | sb = var_20h;
0x00095fe4 b 0x95fec |
| while (sb != r3) {
| label_24:
0x00095fe6 ldr r6, [r6] | r6 = *(r6);
0x00095fe8 cmp r6, 0 |
| if (r6 == 0) {
0x00095fea beq 0x9609e | goto label_71;
| }
0x00095fec ldr r4, [r6, 0x14] | r4 = *((r6 + 0x14));
0x00095fee adds r3, r4, 1 | r3 = r4 + 1;
0x00095ff0 cmp sb, r3 |
0x00095ff2 bne 0x95fe6 |
| }
0x00095ff4 mov r2, sb | r2 = sb;
0x00095ff6 mov r1, r8 | r1 = r8;
0x00095ff8 add.w r0, r6, 0x28 | r0 = r6 + 0x28;
0x00095ffc mov r7, sb | r7 = sb;
0x00095ffe blx 0x7e40 | r0 = fcn_00007e40 ();
0x00096002 cmp r0, 0 |
| if (r0 != 0) {
0x00096004 bne 0x95fe6 | goto label_24;
| }
0x00096006 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00096008 add.w sb, r4, 0x2a | sb = r4 + 0x2a;
0x0009600c mov r8, r0 | r8 = r0;
0x0009600e sub.w sl, r3, sb | sl = r3 - sb;
0x00096012 add.w r0, sl, 0x16 | r0 = sl + 0x16;
0x00096016 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00096018 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0009601c mov r4, r0 | r4 = r0;
0x0009601e cmp r0, 0 |
| if (r0 == 0) {
0x00096020 beq 0x960ae | goto label_72;
| }
0x00096022 add.w r3, r4, 0xc | r3 = r4 + 0xc;
0x00096026 mov r2, sl | r2 = sl;
0x00096028 mov r0, r3 | r0 = r3;
0x0009602a add.w r1, r6, sb | r1 = r6 + sb;
0x0009602e str r3, [sp, 8] | var_8h = r3;
0x00096030 blx 0x7dcc | fcn_00007dcc ();
0x00096034 rsb.w r2, sb, 0xc | r2 = 0xc - sb;
0x00096038 mov r0, r5 | r0 = r5;
0x0009603a add r2, r4 | r2 += r4;
0x0009603c mov r1, r6 | r1 = r6;
0x0009603e bl 0x1ef60 | fcn_0001ef60 (r0, r1, r2);
| do {
0x00096042 ldr r3, [sp, 8] | r3 = var_8h;
0x00096044 add.w r5, sl, r0 | r5 = sl + r0;
0x00096048 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0009604a str.w r8, [fp, 0x24] | __asm ("str.w r8, [arg_24h]");
0x0009604e str r3, [r4] | *(r4) = r3;
0x00096050 ldr r3, [r2, 0x54] | r3 = *((r2 + 0x54));
0x00096052 ldr.w r8, [sp, 0x14] | r8 = var_14h;
0x00096056 orr r3, r3, 1 | r3 |= 1;
0x0009605a str r3, [r2, 0x54] | *((r2 + 0x54)) = r3;
0x0009605c b 0x95962 | goto label_25;
| label_57:
0x0009605e add r0, r4 | r0 += r4;
0x00096060 add r1, sp, 0x70 | r1 += var_70h;
0x00096062 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00096066 ldr r3, [sp, 0x70] | r3 = var_70h;
0x00096068 str r3, [sl, -0x20] | *((sl - 0x20)) = r3;
0x0009606c b 0x95c9e | goto label_19;
| label_69:
0x0009606e adds r0, r4, r5 | r0 = r4 + r5;
0x00096070 add r1, sp, 0x70 | r1 += var_70h;
0x00096072 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00096076 ldrd r3, r2, [sp, 0x6c] | __asm ("ldrd r3, r2, [var_70h]");
0x0009607a add r5, r0 | r5 += r0;
0x0009607c add r3, r2 | r3 += r2;
0x0009607e str r3, [sl, -0x20] | *((sl - 0x20)) = r3;
0x00096082 b 0x95f82 | goto label_26;
| label_39:
0x00096084 ldr r4, [sp, 0x28] | r4 = var_28h;
0x00096086 mov r0, fp | r0 = fp;
0x00096088 ldr r3, [r4, 0x54] | r3 = *((r4 + 0x54));
0x0009608a orr r3, r3, 2 | r3 |= 2;
0x0009608e str r3, [r4, 0x54] | *((r4 + 0x54)) = r3;
0x00096090 bl 0x4722c | fcn_0004722c (r0, r1);
0x00096094 ldr r4, [r4, 0x54] | r4 = *((r4 + 0x54));
0x00096096 b 0x959bc | goto label_27;
| label_41:
0x00096098 ldr r3, [pc, 0x54] |
0x0009609a add r3, pc | r3 = 0x12c18e;
0x0009609c b 0x959d4 | goto label_23;
| label_71:
0x0009609e ldr r3, [sp, 0x28] | r3 = var_28h;
0x000960a0 ldr r4, [r3, 0x54] | r4 = *((r3 + 0x54));
0x000960a2 orr r4, r4, 1 | r4 |= 1;
0x000960a6 str r4, [r3, 0x54] | *((r3 + 0x54)) = r4;
0x000960a8 b 0x959bc | goto label_27;
| label_70:
0x000960aa movs r0, 0xd | r0 = 0xd;
0x000960ac b 0x95fce | goto label_28;
| label_72:
0x000960ae ldr r2, [sp, 0x28] | r2 = var_28h;
0x000960b0 movs r3, 7 | r3 = 7;
0x000960b2 ldr r4, [r2, 0x54] | r4 = *((r2 + 0x54));
0x000960b4 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
0x000960b8 orr r4, r4, 1 | r4 |= 1;
0x000960bc str r4, [r2, 0x54] | *((r2 + 0x54)) = r4;
0x000960be b 0x959bc | goto label_27;
| label_36:
0x000960c0 blx 0x7e8c | fcn_00007e8c ();
0x000960c4 strh r0, [r5, 0x2c] | *((r5 + 0x2c)) = r0;
0x000960c6 movs r3, r0 | r3 = r0;
0x000960c8 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000960ca movs r0, r0 |
0x000960cc strh r4, [r2, 0x22] | *((r2 + 0x22)) = r4;
0x000960ce movs r3, r0 | r3 = r0;
0x000960d0 strh r2, [r2, 0x20] | *((r2 + 0x20)) = r2;
0x000960d2 movs r3, r0 | r3 = r0;
0x000960d4 strh r4, [r4, 0x1e] | *((r4 + 0x1e)) = r4;
0x000960d6 movs r3, r0 | r3 = r0;
0x000960d8 ble 0x96042 |
| } while (r3 <= r0);
0x000960da invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x960f4 */
| #include <stdint.h>
|
; (fcn) fcn.000960f4 () | void fcn_000960f4 (int16_t arg_c0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000960f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000960f8 mov r5, r0 | r5 = r0;
0x000960fa ldr.w r4, [pc, 0x744] |
0x000960fe sub sp, 0x9c |
0x00096100 ldr.w r0, [pc, 0x740] | r0 = *(0x96844);
0x00096104 add r4, pc | r4 = 0x12c94a;
0x00096106 ldr.w sl, [r5] | sl = *(r5);
0x0009610a ldr r0, [r4, r0] |
0x0009610c adds r4, r2, 1 | r4 = r2 + 1;
0x0009610e ldr r0, [r0] | r0 = imp._ITM_deregisterTMCloneTable;
0x00096110 str r0, [sp, 0x94] | var_94h = r0;
0x00096112 mov.w r0, 0 | r0 = 0;
0x00096116 ldrd r8, r0, [sp, 0xc0] | __asm ("ldrd r8, r0, [arg_c0h]");
0x0009611a str r3, [sp, 0x20] | var_20h = r3;
0x0009611c mov.w r3, 0 | r3 = 0;
0x00096120 str r3, [sp, 0x6c] | var_6ch = r3;
0x00096122 str r3, [sp, 0x7c] | var_7ch = r3;
0x00096124 str r0, [sp, 0x24] | var_24h = r0;
| if (r4 == r2) {
0x00096126 bne 0x96144 |
0x00096128 movs r0, 1 | r0 = 1;
0x0009612a blx 0x7dcc | fcn_00007dcc ();
0x0009612e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00096130 lsls r3, r3, 0x1f | r3 <<= 0x1f;
0x00096132 it pl |
| if (r3 < r3) {
0x00096134 movpl r6, r4 | r6 = r4;
| }
| if (r3 < r3) {
0x00096136 bmi.w 0x9682c | goto label_29;
| }
| label_0:
0x0009613a movs r7, 0 | r7 = 0;
0x0009613c ldr.w r0, [sl, 0x18] | r0 = *((sl + 0x18));
0x00096140 mov fp, r7 |
0x00096142 b 0x96186 | goto label_3;
| }
0x00096144 cmp r4, 0x40 |
0x00096146 mov sb, r2 | sb = r2;
0x00096148 mov r7, r1 | r7 = r1;
0x0009614a mov.w r2, 0x40 | r2 = 0x40;
| if (r4 < 0x40) {
0x0009614e bls 0x9615c | goto label_30;
| }
| do {
0x00096150 adds r2, r2, r2 | r2 += r2;
0x00096152 adcs r3, r3 | __asm ("adcs r3, r3");
0x00096154 cmp r2, r4 |
0x00096156 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x0009615a blo 0x96150 |
| } while (r2 <= r4);
| label_30:
0x0009615c movs r0, 0 | r0 = 0;
0x0009615e blx 0x8638 | r0 = fcn_00008638 ();
0x00096162 mov r6, r0 | r6 = r0;
0x00096164 movs r0, 7 | r0 = 7;
0x00096166 cmp r6, 0 |
| if (r6 != 0) {
0x00096168 beq 0x961e6 |
0x0009616a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0009616c str r6, [sp, 0x7c] | var_7ch = r6;
0x0009616e and fp, r3, 1 |
0x00096172 cmp.w sb, 0 |
| if (sb != 0) {
0x00096176 bne 0x9620a | goto label_31;
| }
0x00096178 ldr.w r0, [sl, 0x18] | r0 = *((sl + 0x18));
0x0009617c mov r1, r0 | r1 = r0;
0x0009617e cmp.w fp, 0 |
| if (fp != 0) {
0x00096182 bne 0x9626e | goto label_28;
| }
0x00096184 mov r7, sb | r7 = sb;
| label_3:
0x00096186 cmp fp, r0 |
| if (fp > r0) {
0x00096188 bgt.w 0x9629e | goto label_18;
| }
0x0009618c mov r0, r5 | r0 = r5;
0x0009618e add.w fp, fp, 0x30 |
0x00096192 bl 0x93d64 | fcn_00093d64 (r0);
0x00096196 strb.w fp, [r6] | *(r6) = fp;
0x0009619a mov r7, r0 | r7 = r0;
0x0009619c cmp r0, 0 |
| if (r0 == 0) {
0x0009619e beq.w 0x963c0 | goto label_32;
| }
0x000961a2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000961a4 add r1, sp, 0x6c | r1 += var_6ch;
0x000961a6 str r4, [sp, 4] | var_4h = r4;
0x000961a8 movs r4, 0 | r4 = 0;
0x000961aa str r1, [sp, 0x10] | var_10h = r1;
0x000961ac mov.w r1, -1 | r1 = -1;
0x000961b0 mov r3, r8 | r3 = r8;
0x000961b2 strd r1, r4, [sp, 8] | __asm ("strd r1, r4, [var_ch]");
0x000961b6 orr r2, r2, 0x10 | r2 |= 0x10;
0x000961ba mov r1, r0 | r1 = r0;
0x000961bc str r6, [sp] | *(sp) = r6;
0x000961be mov r0, r5 | r0 = r5;
0x000961c0 bl 0x956d0 | fcn_000956d0 (r0, r1, r2, r3, r4, r5, r6);
0x000961c4 ldr r3, [r7] | r3 = *(r7);
0x000961c6 subs r3, 1 | r3--;
0x000961c8 cmp r3, r4 |
0x000961ca str r3, [r7] | *(r7) = r3;
| if (r3 <= r4) {
0x000961cc ble.w 0x964a6 | goto label_33;
| }
| label_11:
0x000961d0 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000961d2 ldr r4, [sp, 0x6c] | r4 = var_6ch;
0x000961d4 cmp r3, 0 |
| if (r3 != 0) {
0x000961d6 bne.w 0x963e4 | goto label_34;
| }
| label_6:
0x000961da ldr r3, [sp, 0x24] | r3 = var_24h;
0x000961dc mov r0, r6 | r0 = r6;
0x000961de str r4, [r3] | *(r3) = r4;
0x000961e0 blx 0x84f8 | fcn_000084f8 ();
0x000961e4 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
| }
0x000961e6 movs r3, 0 | r3 = 0;
0x000961e8 ldr.w r2, [pc, 0x65c] | r2 = *(0x00096848);
0x000961ec str r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
0x000961ee ldr.w r3, [pc, 0x654] | r3 = *(0x96846);
0x000961f2 add r2, pc | r2 += pc;
0x000961f4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000961f6 ldr r2, [r3] | r2 = *(0x96846);
0x000961f8 ldr r3, [sp, 0x94] | r3 = var_94h;
0x000961fa eors r2, r3 | r2 ^= r3;
0x000961fc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00096200 bne.w 0x9680c | goto label_35;
| }
0x00096204 add sp, 0x9c |
0x00096206 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_31:
0x0009620a mov r2, sb | r2 = sb;
0x0009620c mov r1, r7 | r1 = r7;
0x0009620e adds r0, r6, 1 | r0 = r6 + 1;
0x00096210 blx 0x7dcc | fcn_00007dcc ();
0x00096214 cmp.w fp, 0 |
| if (fp == 0) {
0x00096218 beq 0x9613a | goto label_0;
| }
0x0009621a cmp.w sb, 0 |
| if (sb <= 0) {
0x0009621e ble.w 0x96822 | goto label_36;
| }
0x00096222 mov.w lr, 0 | lr = 0;
0x00096226 subs r0, r7, 1 | r0 = r7 - 1;
0x00096228 add r0, sb | r0 += sb;
0x0009622a mov r1, lr | r1 = lr;
0x0009622c rsb.w ip, r7, 1 |
0x00096230 b 0x9623c |
| while (fp < 0xbf) {
| label_1:
0x00096232 cmp sb, r1 |
0x00096234 add.w lr, lr, 1 | lr++;
| if (sb <= r1) {
0x00096238 ble.w 0x96836 | goto label_37;
| }
0x0009623c ldrb.w fp, [r7, r1] | fp = *((r7 + r1));
0x00096240 adds r2, r1, 1 | r2 = r1 + 1;
0x00096242 adds r3, r7, r1 | r3 = r7 + r1;
0x00096244 cmp.w fp, 0xbf |
0x00096248 it ls |
| if (fp > 0xbf) {
0x0009624a movls r1, r2 | r1 = r2;
| }
0x0009624c bls 0x96232 |
| }
0x0009624e cmp sb, r2 |
| if (sb <= r2) {
0x00096250 ble 0x96266 | goto label_38;
| }
| label_2:
0x00096252 add.w r1, ip, r3 | r1 = ip + r3;
0x00096256 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x0009625a and r2, r2, 0xc0 | r2 &= 0xc0;
0x0009625e cmp r2, 0x80 |
| if (r2 != 0x80) {
0x00096260 bne 0x96232 | goto label_1;
| }
0x00096262 cmp r3, r0 |
| if (r3 != r0) {
0x00096264 bne 0x96252 | goto label_2;
| }
| label_38:
0x00096266 ldr.w r1, [sl, 0x18] | r1 = *((sl + 0x18));
0x0009626a add.w sb, lr, 1 | sb = lr + 1;
| label_28:
0x0009626e cmp r1, 0 |
0x00096270 mov r0, r1 | r0 = r1;
| if (r1 <= 0) {
0x00096272 ble.w 0x966d8 | goto label_39;
| }
0x00096276 ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x0009627a mov.w fp, 1 |
0x0009627e movs r7, 0 | r7 = 0;
0x00096280 add.w ip, sb, fp |
0x00096284 subs r2, 4 | r2 -= 4;
| label_4:
0x00096286 ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x0009628a cmp r3, sb |
| if (r3 == sb) {
0x0009628c beq.w 0x96186 | goto label_3;
| }
0x00096290 cmp ip, r3 |
0x00096292 it eq |
| if (ip != r3) {
0x00096294 moveq r7, fp | r7 = fp;
| }
0x00096296 add.w fp, fp, 1 |
0x0009629a cmp fp, r1 |
| if (fp <= r1) {
0x0009629c ble 0x96286 | goto label_4;
| }
| label_18:
0x0009629e ldr r3, [r5] | r3 = *(r5);
0x000962a0 ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x000962a2 cmp r3, 1 |
0x000962a4 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 == 1) {
0x000962a6 beq.w 0x963c8 | goto label_40;
| }
0x000962aa ldr.w r3, [pc, 0x5a0] | r3 = *(0x0009684c);
0x000962ae mov.w sb, 0x5a0 | sb = 0x5a0;
0x000962b2 add r3, pc | r3 += pc;
0x000962b4 str r3, [sp, 0x3c] | var_3ch = r3;
0x000962b6 ldr.w r3, [pc, 0x598] | r3 = *(0x00096850);
0x000962ba add r3, pc | r3 += pc;
0x000962bc str r3, [sp, 0x30] | var_30h = r3;
0x000962be movs r3, 0xf | r3 = 0xf;
0x000962c0 str r3, [sp, 0x1c] | var_1ch = r3;
0x000962c2 movs r3, 0x78 | r3 = 0x78;
0x000962c4 str r3, [sp, 0x28] | var_28h = r3;
| label_7:
0x000962c6 ldr.w sl, [r5, 0x24] | sl = *((r5 + 0x24));
0x000962ca add.w r3, r5, 0x24 | r3 = r5 + 0x24;
0x000962ce str r3, [sp, 0x38] | var_38h = r3;
0x000962d0 cmp.w sl, 0 |
| if (sl != 0) {
0x000962d4 bne.w 0x96416 | goto label_41;
| }
0x000962d8 mov r0, sb | r0 = sb;
0x000962da mov r1, sl | r1 = sl;
0x000962dc blx 0x7f18 | fcn_00007f18 ();
0x000962e0 str r0, [sp, 0x2c] | var_2ch = r0;
0x000962e2 cmp r0, 0 |
| if (r0 == 0) {
0x000962e4 beq.w 0x96412 | goto label_42;
| }
0x000962e8 mov r2, sb | r2 = sb;
0x000962ea mov r1, sl | r1 = sl;
0x000962ec blx 0x8264 | fcn_00008264 ();
0x000962f0 mov r0, r5 | r0 = r5;
0x000962f2 bl 0x93d64 | r0 = fcn_00093d64 (r0);
0x000962f6 mov sb, r0 | sb = r0;
0x000962f8 cmp r0, 0 |
| if (r0 == 0) {
0x000962fa beq.w 0x9681e | goto label_43;
| }
0x000962fe movs r3, 1 | r3 = 1;
0x00096300 str.w sl, [sp, 0x70] | __asm ("str.w sl, [var_70h]");
0x00096304 str r3, [sp, 0x74] | var_74h = r3;
0x00096306 add r3, sp, 0x88 | r3 += var_88h;
0x00096308 strd sl, sl, [sp, 0x88] | __asm ("strd sl, sl, [var_88h]");
0x0009630c str.w sl, [sp, 0x90] | __asm ("str.w sl, [var_90h]");
0x00096310 str r3, [sp, 0x34] | var_34h = r3;
0x00096312 cmp r7, 0 |
| if (r7 != 0) {
0x00096314 bne.w 0x9658e | goto label_44;
| }
0x00096318 add.w fp, sp, 0x70 |
0x0009631c strd r7, r7, [sp, 0x44] | __asm ("strd r7, r7, [var_44h]");
| label_15:
0x00096320 mov.w r2, -1 | r2 = -1;
0x00096324 movs r1, 0 | r1 = 0;
0x00096326 adds r7, 0x30 | r7 += 0x30;
0x00096328 mov r3, r8 | r3 = r8;
0x0009632a strb r7, [r6] | *(r6) = r7;
0x0009632c mov r0, r5 | r0 = r5;
0x0009632e strd r2, r1, [sp, 8] | __asm ("strd r2, r1, [var_ch]");
0x00096332 movs r2, 0x38 | r2 = 0x38;
0x00096334 mov r1, sb | r1 = sb;
0x00096336 str.w fp, [sp, 0x10] | __asm ("str.w fp, [var_10h]");
0x0009633a strd r6, r4, [sp] | __asm ("strd r6, r4, [sp]");
0x0009633e bl 0x956d0 | fcn_000956d0 (r0, r1, r2, r3, r4, r5, r6);
0x00096342 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00096344 ldr r2, [sp, 0x70] | r2 = var_70h;
0x00096346 str r2, [sp, 0x40] | var_40h = r2;
0x00096348 cmp r3, 0 |
| if (r3 == 0) {
0x0009634a beq.w 0x964cc | goto label_45;
| }
| label_12:
0x0009634e ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00096350 lsl.w fp, r2, 1 |
| label_13:
0x00096354 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00096356 movs r7, 0 | r7 = 0;
0x00096358 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0009635a mov r4, r7 | r4 = r7;
0x0009635c str.w sb, [sp, 0x3c] | __asm ("str.w sb, [var_3ch]");
0x00096360 add.w sl, fp, r2 | sl = fp + r2;
0x00096364 mov fp, r2 |
0x00096366 lsl.w sl, sl, 2 | sl <<= 2;
0x0009636a mov r8, r1 | r8 = r1;
0x0009636c add.w r6, r1, sl | r6 = r1 + sl;
0x00096370 str r6, [sp, 0x1c] | var_1ch = r6;
| label_5:
0x00096372 mov sb, r7 | sb = r7;
| if (r3 == 0) {
0x00096374 cbnz r3, 0x96382 |
0x00096376 ldr r1, [sp, 0x34] | r1 = var_34h;
0x00096378 mov r3, r8 | r3 = r8;
0x0009637a ldr r6, [sp, 0x30] | r6 = var_30h;
0x0009637c mov r2, fp | r2 = fp;
0x0009637e mov r0, r5 | r0 = r5;
0x00096380 blx r6 | uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| }
0x00096382 add r7, fp | r7 += fp;
0x00096384 cmp r7, sb |
0x00096386 itt gt |
| if (r7 <= sb) {
0x00096388 ldrgt r6, [sp, 0x1c] | r6 = var_1ch;
| }
| if (r7 <= sb) {
0x0009638a movgt sb, r8 | sb = r8;
| }
| if (r7 <= sb) {
0x0009638c ble 0x963ac | goto label_46;
| }
| do {
0x0009638e ldr.w r0, [sb] | r0 = *(sb);
0x00096392 add.w sb, sb, 0xc | sb += 0xc;
0x00096396 blx 0x84f8 | fcn_000084f8 ();
0x0009639a str r4, [sb, -0xc] | *((sb - 0xc)) = r4;
0x0009639e str r4, [sb, -0x8] | *((sb - 0x8)) = r4;
0x000963a2 str r4, [sb, -0x4] | *((sb - 0x4)) = r4;
0x000963a6 cmp r6, sb |
0x000963a8 bne 0x9638e |
| } while (r6 != sb);
0x000963aa str r6, [sp, 0x1c] | var_1ch = r6;
| label_46:
0x000963ac ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000963ae add r8, sl | r8 += sl;
0x000963b0 add r3, sl | r3 += sl;
0x000963b2 str r3, [sp, 0x1c] | var_1ch = r3;
0x000963b4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000963b6 cmp r7, r3 |
| if (r7 >= r3) {
0x000963b8 bge.w 0x96508 | goto label_47;
| }
0x000963bc ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000963be b 0x96372 | goto label_5;
| label_32:
0x000963c0 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| if (r3 == 0) {
0x000963c2 cbnz r3, 0x963fa |
0x000963c4 ldr r4, [sp, 0x6c] | r4 = var_6ch;
0x000963c6 b 0x961da | goto label_6;
| label_40:
0x000963c8 ldr.w r3, [pc, 0x488] | r3 = *(0x00096854);
0x000963cc mov.w sb, 0x180 | sb = 0x180;
0x000963d0 add r3, pc | r3 += pc;
0x000963d2 str r3, [sp, 0x3c] | var_3ch = r3;
0x000963d4 ldr.w r3, [pc, 0x480] | r3 = *(0x00096858);
0x000963d8 add r3, pc | r3 += pc;
0x000963da str r3, [sp, 0x30] | var_30h = r3;
0x000963dc movs r3, 0x20 | r3 = 0x20;
0x000963de str r3, [sp, 0x28] | var_28h = r3;
0x000963e0 b 0x962c6 | goto label_7;
| label_8:
0x000963e2 ldr r6, [sp, 0x7c] | r6 = var_7ch;
| if (r4 == 0) {
| label_34:
0x000963e4 cbz r4, 0x963fa | goto label_48;
| }
| label_9:
0x000963e6 ldr r7, [r4, 0x18] | r7 = *((r4 + 0x18));
0x000963e8 mov r0, r4 | r0 = r4;
0x000963ea bl 0x16c60 | fcn_00016c60 (r0);
0x000963ee ldr r0, [r7, 0x28] | r0 = *((r7 + 0x28));
| if (r0 == 0) {
0x000963f0 cbz r0, 0x963fa | goto label_48;
| }
0x000963f2 movs r3, 0 | r3 = 0;
0x000963f4 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x000963f6 blx 0x8300 | fcn_00008300 ();
| }
| label_48:
0x000963fa ldr r4, [r5, 0x28] | r4 = *((r5 + 0x28));
0x000963fc movs r3, 0 | r3 = 0;
0x000963fe str r3, [sp, 0x6c] | var_6ch = r3;
0x00096400 cmp r4, 0 |
| if (r4 == 0) {
0x00096402 beq.w 0x961da | goto label_6;
| }
0x00096406 mov r0, r4 | r0 = r4;
0x00096408 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0009640a mov r4, r3 | r4 = r3;
0x0009640c blx 0x8300 | fcn_00008300 ();
0x00096410 b 0x961da | goto label_6;
| label_42:
0x00096412 movs r3, 7 | r3 = 7;
0x00096414 str r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
| label_41:
0x00096416 mov r0, r5 | r0 = r5;
0x00096418 bl 0x93d64 | fcn_00093d64 (r0);
0x0009641c ldr r4, [sp, 0x6c] | r4 = var_6ch;
0x0009641e mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x00096420 cbz r0, 0x9647a | goto label_49;
| }
0x00096422 movs r3, 0 | r3 = 0;
0x00096424 str r3, [sp, 0x2c] | var_2ch = r3;
| label_14:
0x00096426 ldr.w r3, [sb] | r3 = *(sb);
0x0009642a subs r3, 1 | r3--;
0x0009642c cmp r3, 0 |
0x0009642e str.w r3, [sb] | __asm ("str.w r3, [sb]");
| if (r3 <= 0) {
0x00096432 ble 0x9647e | goto label_50;
| }
| label_10:
0x00096434 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00096436 blx 0x84f8 | fcn_000084f8 ();
0x0009643a ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0009643c cmp r3, 0 |
| if (r3 != 0) {
0x0009643e bne 0x963e2 | goto label_8;
| }
0x00096440 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00096442 mov r1, r4 | r1 = r4;
0x00096444 bl 0x47184 | fcn_00047184 (r0, r1);
0x00096448 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0009644a cmp r3, 0 |
| if (r3 != 0) {
0x0009644c bne 0x963e2 | goto label_8;
| }
0x0009644e ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x00096450 ldr r6, [sp, 0x7c] | r6 = var_7ch;
0x00096452 ldrh r3, [r3, 4] | r3 = *((r3 + 4));
0x00096454 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00096458 lsls r3, r3, 5 | r3 <<= 5;
0x0009645a adds r2, r4, r3 | r2 = r4 + r3;
0x0009645c ldr r2, [r2, 0x5c] | r2 = *((r2 + 0x5c));
0x0009645e cmp r2, 0 |
| if (r2 == 0) {
0x00096460 beq.w 0x961da | goto label_6;
| }
0x00096464 adds r3, 0x50 | r3 += 0x50;
0x00096466 ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x00096468 adds r1, r4, r3 | r1 = r4 + r3;
0x0009646a mov r0, r4 | r0 = r4;
0x0009646c blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0009646e ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00096470 ldr r6, [sp, 0x7c] | r6 = var_7ch;
0x00096472 cmp r3, 0 |
| if (r3 == 0) {
0x00096474 beq.w 0x961da | goto label_6;
| }
0x00096478 b 0x963e6 | goto label_9;
| label_49:
0x0009647a str r0, [sp, 0x2c] | var_2ch = r0;
0x0009647c b 0x96434 | goto label_10;
| label_50:
0x0009647e ldr.w r3, [sb, 0x14] | r3 = *((sb + 0x14));
0x00096482 cmp r3, 0 |
0x00096484 itt gt |
| if (r3 <= 0) {
0x00096486 movgt r7, sb | r7 = sb;
| }
| if (r3 <= 0) {
0x00096488 movgt r6, 0 | r6 = 0;
| }
| if (r3 <= 0) {
0x0009648a ble 0x9649e | goto label_51;
| }
| do {
0x0009648c ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x0009648e adds r6, 1 | r6++;
0x00096490 blx 0x84f8 | fcn_000084f8 ();
0x00096494 ldr.w r3, [sb, 0x14] | r3 = *((sb + 0x14));
0x00096498 adds r7, 0xc | r7 += 0xc;
0x0009649a cmp r6, r3 |
0x0009649c blt 0x9648c |
| } while (r6 < r3);
| label_51:
0x0009649e mov r0, sb | r0 = sb;
0x000964a0 blx 0x84f8 | fcn_000084f8 ();
0x000964a4 b 0x96434 | goto label_10;
| label_33:
0x000964a6 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000964a8 cmp r3, r4 |
0x000964aa it gt |
| if (r3 <= r4) {
0x000964ac movgt r8, r7 | r8 = r7;
| }
| if (r3 <= r4) {
0x000964ae ble 0x964c4 | goto label_52;
| }
| do {
0x000964b0 ldr.w r0, [r8, 0x20] | r0 = *((r8 + 0x20));
0x000964b4 adds r4, 1 | r4++;
0x000964b6 blx 0x84f8 | fcn_000084f8 ();
0x000964ba ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000964bc add.w r8, r8, 0xc | r8 += 0xc;
0x000964c0 cmp r4, r3 |
0x000964c2 blt 0x964b0 |
| } while (r4 < r3);
| label_52:
0x000964c4 mov r0, r7 | r0 = r7;
0x000964c6 blx 0x84f8 | fcn_000084f8 ();
0x000964ca b 0x961d0 | goto label_11;
| label_45:
0x000964cc ldr r1, [sp, 0x40] | r1 = var_40h;
0x000964ce ldr r0, [sp, 0x38] | r0 = var_38h;
0x000964d0 bl 0x47184 | fcn_00047184 (r0, r1);
0x000964d4 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000964d6 cmp r3, 0 |
| if (r3 != 0) {
0x000964d8 bne.w 0x9634e | goto label_12;
| }
0x000964dc str r3, [sp, 0x50] | var_50h = r3;
0x000964de add r2, sp, 0x74 | r2 += var_74h;
0x000964e0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000964e2 ldr r7, [sp, 0x40] | r7 = var_40h;
0x000964e4 str.w sb, [sp, 0x4c] | __asm ("str.w sb, [var_4ch]");
0x000964e8 mov sb, r4 | sb = r4;
0x000964ea str r2, [sp, 0x58] | var_58h = r2;
0x000964ec lsl.w fp, r3, 1 |
0x000964f0 str r6, [sp, 0x5c] | var_5ch = r6;
0x000964f2 add r3, fp | r3 += fp;
0x000964f4 lsls r3, r3, 2 | r3 <<= 2;
0x000964f6 str r3, [sp, 0x54] | var_54h = r3;
| label_16:
0x000964f8 ldrb r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000964fa cmp r3, 0 |
| if (r3 == 0) {
0x000964fc beq.w 0x96644 | goto label_53;
| }
0x00096500 ldr.w sb, [sp, 0x4c] | sb = var_4ch;
0x00096504 movs r3, 0 | r3 = 0;
0x00096506 b 0x96354 | goto label_13;
| label_47:
0x00096508 ldrd sb, r3, [sp, 0x3c] | __asm ("ldrd sb, r3, [var_3ch]");
| if (r3 != 0) {
0x0009650c cbz r3, 0x96514 |
0x0009650e mov r0, r3 | r0 = r3;
0x00096510 bl 0x16c60 | fcn_00016c60 (r0);
| }
0x00096514 ldr r4, [r5, 0x24] | r4 = *((r5 + 0x24));
0x00096516 cmp r4, 0 |
| if (r4 != 0) {
0x00096518 bne 0x9658a | goto label_54;
| }
0x0009651a ldr r7, [sp, 0x8c] | r7 = var_8ch;
0x0009651c mov r1, r4 | r1 = r4;
0x0009651e adds r7, 0x14 | r7 += 0x14;
0x00096520 mov r0, r7 | r0 = r7;
0x00096522 blx 0x7f18 | r0 = fcn_00007f18 ();
0x00096526 mov r6, r0 | r6 = r0;
0x00096528 cmp r0, 0 |
| if (r0 == 0) {
0x0009652a beq.w 0x966ca | goto label_55;
| }
0x0009652e mov r2, r7 | r2 = r7;
0x00096530 mov r1, r4 | r1 = r4;
0x00096532 blx 0x8264 | fcn_00008264 ();
0x00096536 ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x00096538 add.w r0, r6, 0xc | r0 = r6 + 0xc;
0x0009653c str r0, [r6] | *(r6) = r0;
0x0009653e strd r2, r2, [r6, 4] | __asm ("strd r2, r2, [r6, 4]");
0x00096542 cmp r2, 0 |
| if (r2 != 0) {
0x00096544 bne.w 0x966e8 | goto label_56;
| }
| label_19:
0x00096548 movs r1, 2 | r1 = 2;
0x0009654a mov r0, r5 | r0 = r5;
0x0009654c bl 0x40334 | r0 = fcn_00040334 (r0, r1);
0x00096550 mov r4, r0 | r4 = r0;
0x00096552 cmp r0, 0 |
| if (r0 == 0) {
0x00096554 beq.w 0x966f0 | goto label_57;
| }
0x00096558 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0009655a movs r7, 1 | r7 = 1;
0x0009655c str.w r7, [r0, 0xb4] | __asm ("str.w r7, [r0, 0xb4]");
0x00096560 cmp r3, 0 |
| if (r3 > 0) {
0x00096562 bgt.w 0x96700 | goto label_58;
| }
0x00096566 strb r7, [r0, 0x10] | *((r0 + 0x10)) = r7;
0x00096568 ldr r7, [r5] | r7 = *(r5);
| label_22:
0x0009656a ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0009656c cmp r3, 1 |
| if (r3 == 1) {
0x0009656e beq.w 0x9676c | goto label_59;
| }
0x00096572 ldr r3, [pc, 0x2e8] |
0x00096574 add r3, pc | r3 = 0x12cdd6;
| label_23:
0x00096576 str.w r3, [r4, 0xd0] | __asm ("str.w r3, [r4, 0xd0]");
0x0009657a str r4, [sp, 0x6c] | var_6ch = r4;
| label_20:
0x0009657c mov r0, r6 | r0 = r6;
0x0009657e blx 0x84f8 | fcn_000084f8 ();
| do {
| label_17:
0x00096582 ldr r0, [sp, 0x88] | r0 = var_88h;
0x00096584 blx 0x84f8 | fcn_000084f8 ();
0x00096588 b 0x96426 | goto label_14;
| label_54:
0x0009658a ldr r4, [sp, 0x6c] | r4 = var_6ch;
0x0009658c b 0x96582 |
| } while (1);
| label_44:
0x0009658e movs r2, 0x30 | r2 = 0x30;
0x00096590 mov.w r3, -1 | r3 = -1;
0x00096594 add.w fp, sp, 0x70 |
0x00096598 strb r2, [r6] | *(r6) = r2;
0x0009659a mov r1, r0 | r1 = r0;
0x0009659c str.w sl, [sp, 0xc] | __asm ("str.w sl, [var_ch]");
0x000965a0 str r3, [sp, 8] | var_8h = r3;
0x000965a2 mov r0, r5 | r0 = r5;
0x000965a4 mov r3, r8 | r3 = r8;
0x000965a6 strd r6, r4, [sp] | __asm ("strd r6, r4, [sp]");
0x000965aa str.w fp, [sp, 0x10] | __asm ("str.w fp, [var_10h]");
0x000965ae str.w sl, [sp, 0x78] | __asm ("str.w sl, [var_78h]");
0x000965b2 bl 0x956d0 | fcn_000956d0 (r0, r1, r2, r3, r4, r5, r6);
0x000965b6 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000965b8 ldr.w sl, [sp, 0x70] | sl = var_70h;
0x000965bc cmp r3, 0 |
| if (r3 != 0) {
0x000965be bne.w 0x966dc | goto label_60;
| }
0x000965c2 ldr r0, [sp, 0x38] | r0 = var_38h;
0x000965c4 mov r1, sl | r1 = sl;
0x000965c6 bl 0x47184 | fcn_00047184 (r0, r1);
0x000965ca ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000965cc cmp r3, 0 |
| if (r3 != 0) {
0x000965ce bne.w 0x966dc | goto label_60;
| }
0x000965d2 add r2, sp, 0x78 | r2 += var_78h;
0x000965d4 str r3, [sp, 0x44] | var_44h = r3;
0x000965d6 str r2, [sp, 0x40] | var_40h = r2;
0x000965d8 str r3, [sp, 0x48] | var_48h = r3;
| do {
0x000965da ldrb.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
| if (r3 != 0) {
0x000965de cbnz r3, 0x9663c | goto label_24;
| }
0x000965e0 ldr.w r3, [sl, 0x48] | r3 = *((sl + 0x48));
0x000965e4 mov r0, sl | r0 = sl;
0x000965e6 ldrh r3, [r3, 4] | r3 = *((r3 + 4));
0x000965e8 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x000965ec add.w r1, sl, r3, lsl 5 | r1 = sl + (r3 << 5);
0x000965f0 ldr.w r3, [sl, 0x2c] | r3 = *((sl + 0x2c));
0x000965f4 adds r1, 0x50 | r1 += 0x50;
0x000965f6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000965f8 ldr.w r3, [sl, 0xc] | r3 = *((sl + 0xc));
| if (r3 != 0) {
0x000965fc cbz r3, 0x96628 |
0x000965fe ldr.w r3, [sl] | r3 = *(sl);
0x00096602 mov r0, r5 | r0 = r5;
0x00096604 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00096606 ldr r1, [sp, 0x48] | r1 = var_48h;
0x00096608 subs r2, r3, r2 | r2 = r3 - r2;
0x0009660a ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x0009660e sbc.w r3, r3, r1 | __asm ("sbc.w r3, r3, r1");
0x00096612 ldr r1, [sp, 0x34] | r1 = var_34h;
0x00096614 strd sl, r1, [sp] | __asm ("strd sl, r1, [sp]");
0x00096618 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0009661a blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0009661c ldr.w r3, [sl] | r3 = *(sl);
0x00096620 str r3, [sp, 0x44] | var_44h = r3;
0x00096622 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x00096626 str r3, [sp, 0x48] | var_48h = r3;
| }
0x00096628 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| if (r3 != 0) {
0x0009662a cbnz r3, 0x9663c | goto label_24;
| }
0x0009662c ldr r2, [sp, 0x40] | r2 = var_40h;
0x0009662e mov r1, sl | r1 = sl;
0x00096630 mov r0, r5 | r0 = r5;
0x00096632 bl 0x1314c | fcn_0001314c (r0, r1, r2, r3, r4);
0x00096636 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00096638 cmp r3, 0 |
0x0009663a beq 0x965da |
| } while (r3 == 0);
| label_24:
0x0009663c mov r0, sl | r0 = sl;
0x0009663e bl 0x16c60 | fcn_00016c60 (r0);
0x00096642 b 0x96320 | goto label_15;
| label_53:
0x00096644 ldr r3, [r7, 0x48] | r3 = *((r7 + 0x48));
0x00096646 mov r0, r7 | r0 = r7;
0x00096648 ldr r2, [r7, 0x2c] | r2 = *((r7 + 0x2c));
0x0009664a ldrh r3, [r3, 4] | r3 = *((r3 + 4));
0x0009664c add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00096650 lsls r3, r3, 5 | r3 <<= 5;
0x00096652 add.w r1, r3, 0x50 | r1 = r3 + 0x50;
0x00096656 add r3, r7 | r3 += r7;
0x00096658 add r1, r7 | r1 += r7;
0x0009665a ldrd r4, r6, [r3, 0x94] | __asm ("ldrd r4, r6, [r3, 0x94]");
0x0009665e blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00096660 ldr r3, [sp, 0x74] | r3 = var_74h;
| if (r3 != 0) {
0x00096662 cbz r3, 0x9667a |
0x00096664 cmp sb, r6 |
| if (sb > r6) {
0x00096666 bgt.w 0x96810 | goto label_61;
| }
0x0009666a ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x0009666c mov r1, r4 | r1 = r4;
0x0009666e mov r2, sb | r2 = sb;
0x00096670 blx 0x7e40 | r0 = fcn_00007e40 ();
0x00096674 cmp r0, 0 |
| if (r0 != 0) {
0x00096676 bne.w 0x96810 | goto label_61;
| }
| }
0x0009667a ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
| if (r3 != 0) {
0x0009667c cbz r3, 0x966ae |
0x0009667e ldrd r2, r3, [r7] | __asm ("ldrd r2, r3, [r7]");
0x00096682 ldr r0, [sp, 0x44] | r0 = var_44h;
0x00096684 ldr r4, [sp, 0x48] | r4 = var_48h;
0x00096686 cmp r0, r2 |
0x00096688 sbcs.w r1, r4, r3 | __asm ("sbcs.w r1, r4, r3");
| if (r0 < r2) {
0x0009668c blt 0x966f4 | goto label_62;
| }
0x0009668e ldr r1, [sp, 0x8c] | r1 = var_8ch;
0x00096690 cmp r1, 0 |
| if (r1 > 0) {
0x00096692 bgt 0x96772 | goto label_63;
| }
0x00096694 subs r2, r2, r0 | r2 -= r0;
0x00096696 sbc.w r3, r3, r4 | __asm ("sbc.w r3, r3, r4");
| label_21:
0x0009669a ldr r1, [sp, 0x34] | r1 = var_34h;
0x0009669c mov r0, r5 | r0 = r5;
0x0009669e strd r7, r1, [sp] | __asm ("strd r7, r1, [sp]");
0x000966a2 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x000966a4 blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000966a6 ldr r3, [r7] | r3 = *(r7);
0x000966a8 str r3, [sp, 0x44] | var_44h = r3;
0x000966aa ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000966ac str r3, [sp, 0x48] | var_48h = r3;
| }
0x000966ae ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| if (r3 != 0) {
0x000966b0 cbnz r3, 0x966c4 | goto label_64;
| }
0x000966b2 ldr r2, [sp, 0x58] | r2 = var_58h;
0x000966b4 mov r1, r7 | r1 = r7;
0x000966b6 mov r0, r5 | r0 = r5;
0x000966b8 bl 0x1314c | fcn_0001314c (r0, r1, r2, r3, r4);
0x000966bc ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000966be cmp r3, 0 |
| if (r3 == 0) {
0x000966c0 beq.w 0x964f8 | goto label_16;
| }
| label_64:
0x000966c4 ldr.w sb, [sp, 0x4c] | sb = var_4ch;
0x000966c8 b 0x96354 | goto label_13;
| label_55:
0x000966ca ldr r4, [sp, 0x6c] | r4 = var_6ch;
0x000966cc cmp r7, 0 |
| if (r7 == 0) {
0x000966ce beq.w 0x96582 | goto label_17;
| }
0x000966d2 movs r3, 7 | r3 = 7;
0x000966d4 str r3, [r5, 0x24] | *((r5 + 0x24)) = r3;
0x000966d6 b 0x96582 | goto label_17;
| label_39:
0x000966d8 movs r7, 0 | r7 = 0;
0x000966da b 0x9629e | goto label_18;
| label_60:
0x000966dc cmp.w sl, 0 |
| if (sl != 0) {
0x000966e0 bne 0x96764 | goto label_65;
| }
0x000966e2 strd sl, sl, [sp, 0x44] | __asm ("strd sl, sl, [var_44h]");
0x000966e6 b 0x96320 | goto label_15;
| label_56:
0x000966e8 ldr r1, [sp, 0x88] | r1 = var_88h;
0x000966ea blx 0x7dcc | fcn_00007dcc ();
0x000966ee b 0x96548 | goto label_19;
| label_57:
0x000966f0 ldr r4, [sp, 0x6c] | r4 = var_6ch;
0x000966f2 b 0x9657c | goto label_20;
| label_62:
0x000966f4 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000966f6 subs r2, r2, r1 | r2 -= r1;
0x000966f8 ldr r1, [sp, 0x48] | r1 = var_48h;
0x000966fa sbc.w r3, r3, r1 | __asm ("sbc.w r3, r3, r1");
0x000966fe b 0x9669a | goto label_21;
| label_58:
0x00096700 str.w r6, [r0, 0xbc] | __asm ("str.w r6, [r0, 0xbc]");
0x00096704 add.w r1, r4, 0x100 | r1 = r4 + 0x100;
0x00096708 ldr r0, [r6] | r0 = *(r6);
0x0009670a mov.w r8, 0 | r8 = 0;
0x0009670e bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00096712 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00096714 add.w r1, r4, 0xb0 | r1 = r4 + 0xb0;
0x00096718 str.w r0, [r4, 0xc8] | __asm ("str.w r0, [r4, 0xc8]");
0x0009671c str.w r8, [r4, 0xcc] | __asm ("str.w r8, [r4, 0xcc]");
0x00096720 str.w r3, [r4, 0xe0] | __asm ("str.w r3, [r4, 0xe0]");
0x00096724 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x00096726 strh r7, [r3, 4] | *((r3 + 4)) = r7;
0x00096728 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0009672a ands r6, r3, 2 | r6 = r3 & 2;
| if (r6 != r3) {
0x0009672e bne 0x96744 | goto label_66;
| }
0x00096730 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00096732 ldr r7, [r5] | r7 = *(r5);
0x00096734 cmp r3, 0 |
| if (r3 != 0) {
0x00096736 bne.w 0x9656a | goto label_22;
| }
0x0009673a mov r0, r7 | r0 = r7;
0x0009673c mov r6, r3 | r6 = r3;
0x0009673e bl 0x11120 | fcn_00011120 (r0, r1);
0x00096742 b 0x9656a | goto label_22;
| label_66:
0x00096744 movs r3, 3 | r3 = 3;
0x00096746 mov r0, r5 | r0 = r5;
0x00096748 str.w r3, [r4, 0xb4] | __asm ("str.w r3, [r4, 0xb4]");
0x0009674c str r7, [r4, 0x34] | *((r4 + 0x34)) = r7;
0x0009674e bl 0x4722c | fcn_0004722c (r0, r1);
0x00096752 ldr.w r3, [r4, 0xb4] | r3 = *((r4 + 0xb4));
0x00096756 ands r3, r3, 2 | r3 &= 2;
| if (r3 == r3) {
0x0009675a beq 0x96818 | goto label_67;
| }
0x0009675c ldr r3, [pc, 0x100] |
0x0009675e mov r6, r8 | r6 = r8;
0x00096760 add r3, pc | r3 = 0x12cfc4;
0x00096762 b 0x96576 | goto label_23;
| label_65:
0x00096764 movs r3, 0 | r3 = 0;
0x00096766 strd r3, r3, [sp, 0x44] | __asm ("strd r3, r3, [var_44h]");
0x0009676a b 0x9663c | goto label_24;
| label_59:
0x0009676c ldr r3, [pc, 0xf4] |
0x0009676e add r3, pc | r3 = 0x12cfd6;
0x00096770 b 0x96576 | goto label_23;
| label_63:
0x00096772 ldr r1, [r5, 0x24] | r1 = *((r5 + 0x24));
0x00096774 cmp r1, 0 |
| if (r1 != 0) {
0x00096776 bne 0x9669a | goto label_21;
| }
0x00096778 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0009677a mov r8, r1 | r8 = r1;
0x0009677c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0009677e ldr.w sl, [sp, 0x34] | sl = var_34h;
0x00096782 str.w sb, [sp, 0x48] | __asm ("str.w sb, [var_48h]");
0x00096786 mov r6, r2 | r6 = r2;
0x00096788 str.w fp, [sp, 0x64] | __asm ("str.w fp, [var_64h]");
0x0009678c mov sb, r3 | sb = r3;
0x0009678e mov fp, r2 |
0x00096790 str r7, [sp, 0x60] | var_60h = r7;
| label_25:
0x00096792 cmp r8, r6 |
0x00096794 mov r7, r8 | r7 = r8;
| if (r8 >= r6) {
0x00096796 bge 0x967fc | goto label_68;
| }
0x00096798 mov r1, sb | r1 = sb;
0x0009679a mov r4, r8 | r4 = r8;
0x0009679c b 0x967a6 |
| while (r3 != 0) {
0x0009679e adds r4, 1 | r4++;
0x000967a0 adds r1, 0xc | r1 += 0xc;
0x000967a2 cmp r4, r6 |
| if (r4 == r6) {
0x000967a4 beq 0x967dc | goto label_69;
| }
0x000967a6 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000967a8 cmp r3, 0 |
0x000967aa bne 0x9679e |
| }
0x000967ac mov r0, sl | r0 = sl;
0x000967ae str r3, [sp, 0x44] | var_44h = r3;
0x000967b0 bl 0xb970 | fcn_0000b970 (r0, r1);
0x000967b4 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000967b6 cmp r4, r6 |
0x000967b8 str r3, [sp, 0x8c] | var_8ch = r3;
| if (r4 == r6) {
0x000967ba beq 0x967dc | goto label_69;
| }
| label_26:
0x000967bc ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| if (r3 != 0) {
0x000967be cbnz r3, 0x967ce | goto label_70;
| }
| label_27:
0x000967c0 ldr r3, [sp, 0x54] | r3 = var_54h;
0x000967c2 add r8, fp | r8 += fp;
0x000967c4 add r6, fp | r6 += fp;
0x000967c6 add sb, r3 | sb += r3;
0x000967c8 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x000967ca cmp r3, 0 |
| if (r3 != 0) {
0x000967cc bne 0x96792 | goto label_25;
| }
| label_70:
0x000967ce ldrd r7, fp, [sp, 0x60] | __asm ("ldrd r7, fp, [var_64h]");
0x000967d2 ldr.w sb, [sp, 0x48] | sb = var_48h;
0x000967d6 ldrd r2, r3, [r7] | __asm ("ldrd r2, r3, [r7]");
0x000967da b 0x9669a | goto label_21;
| label_69:
0x000967dc mov r3, sb | r3 = sb;
0x000967de ldr r4, [sp, 0x30] | r4 = var_30h;
0x000967e0 mov r2, fp | r2 = fp;
0x000967e2 mov r1, sl | r1 = sl;
0x000967e4 mov r0, r5 | r0 = r5;
0x000967e6 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000967e8 mov r3, sb | r3 = sb;
| do {
0x000967ea ldr r2, [sp, 0x50] | r2 = var_50h;
0x000967ec adds r7, 1 | r7++;
0x000967ee cmp r7, r6 |
0x000967f0 add.w r3, r3, 0xc | r3 += 0xc;
0x000967f4 str r2, [r3, -0x8] | *((r3 - 0x8)) = r2;
0x000967f8 blt 0x967ea |
| } while (r7 < r6);
0x000967fa b 0x967bc | goto label_26;
| if (r7 != r6) {
| label_68:
0x000967fc bne 0x967c0 | goto label_27;
| }
0x000967fe ldr r4, [sp, 0x30] | r4 = var_30h;
0x00096800 mov r3, sb | r3 = sb;
0x00096802 mov r2, fp | r2 = fp;
0x00096804 mov r1, sl | r1 = sl;
0x00096806 mov r0, r5 | r0 = r5;
0x00096808 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0009680a b 0x967bc | goto label_26;
| label_35:
0x0009680c blx 0x7e8c | fcn_00007e8c ();
| label_61:
0x00096810 ldr.w sb, [sp, 0x4c] | sb = var_4ch;
0x00096814 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00096816 b 0x96354 | goto label_13;
| label_67:
0x00096818 ldr r7, [r5] | r7 = *(r5);
0x0009681a mov r6, r3 | r6 = r3;
0x0009681c b 0x9656a | goto label_22;
| label_43:
0x0009681e ldr r4, [sp, 0x6c] | r4 = var_6ch;
0x00096820 b 0x96434 | goto label_10;
| label_36:
0x00096822 ldr.w r1, [sl, 0x18] | r1 = *((sl + 0x18));
0x00096826 mov.w sb, 0 | sb = 0;
0x0009682a b 0x9626e | goto label_28;
| label_29:
0x0009682c ldr.w r1, [sl, 0x18] | r1 = *((sl + 0x18));
0x00096830 mov r6, r4 | r6 = r4;
0x00096832 mov sb, r4 | sb = r4;
0x00096834 b 0x9626e | goto label_28;
| label_37:
0x00096836 ldr.w r1, [sl, 0x18] | r1 = *((sl + 0x18));
0x0009683a mov sb, lr | sb = lr;
0x0009683c b 0x9626e | goto label_28;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x97ba0 */
| #include <stdint.h>
|
; (fcn) fcn.00097ba0 () | void fcn_00097ba0 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00097ba0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00097ba4 mov fp, r2 |
0x00097ba6 ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
0x00097ba8 sub sp, 0x14 |
0x00097baa mov sb, r0 | sb = r0;
0x00097bac mov sl, r1 | sl = r1;
0x00097bae ldr r6, [r1, 0x58] | r6 = *((r1 + 0x58));
0x00097bb0 ldr r0, [r2, 8] | r0 = *((r2 + 8));
0x00097bb2 str r3, [sp, 8] | var_8h = r3;
0x00097bb4 ldr r2, [r2] | r2 = *(r2);
0x00097bb6 ldrd r3, r1, [r1, 0x18] | __asm ("ldrd r3, r1, [r1, 0x18]");
0x00097bba asrs r4, r6, 0x1f | r4 = r6 >> 0x1f;
0x00097bbc add r2, r3 | r2 += r3;
0x00097bbe subs r3, r0, r3 | r3 = r0 - r3;
0x00097bc0 asr.w r0, r0, 0x1f | r0 >>= 0x1f;
0x00097bc4 sbc.w r0, r0, r1 | __asm ("sbc.w r0, r0, r1");
0x00097bc8 ldrd r1, r7, [sl, 4] | __asm ("ldrd r1, r7, [sl, 4]");
0x00097bcc cmp r6, r3 |
0x00097bce sbcs.w r0, r4, r0 | __asm ("sbcs.w r0, r4, r0");
0x00097bd2 mov.w r4, 0 | r4 = 0;
0x00097bd6 it lt |
| if (r6 >= r3) {
0x00097bd8 movlt r3, r6 | r3 = r6;
| }
0x00097bda lsls r1, r1, 0x1e | r1 <<= 0x1e;
0x00097bdc asr.w r8, r7, 0x1f | r8 = r7 >> 0x1f;
0x00097be0 ite pl |
| if (r1 < r1) {
0x00097be2 addpl r1, r7, 1 | r1 = r7 + 1;
| }
| if (r1 >= r1) {
0x00097be4 movmi r1, 0 | r1 = 0;
| }
0x00097be6 str r7, [sp, 4] | var_4h = r7;
0x00097be8 adds r5, r7, 1 | r5 = r7 + 1;
0x00097bea str r1, [sp, 0xc] | var_ch = r1;
0x00097bec adc r8, r8, 0 | __asm ("adc r8, r8, 0");
0x00097bf0 b 0x97c10 |
| while (r2 >= r3) {
0x00097bf2 ldr r2, [r0] | r2 = *(r0);
0x00097bf4 cmp r3, r6 |
0x00097bf6 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00097bf8 it ge |
| if (r3 < r6) {
0x00097bfa movge r3, r6 | r3 = r6;
| }
0x00097bfc ldr r0, [sp, 4] | r0 = var_4h;
0x00097bfe adds r2, 4 | r2 += 4;
0x00097c00 cmp r0, r1 |
0x00097c02 itt eq |
| if (r0 != r1) {
0x00097c04 streq r4, [sl, 0x10] | *((sl + 0x10)) = r4;
| }
| if (r0 == r1) {
0x00097c08 movs r4, 0 | r4 = 0;
| }
0x00097c0a adds r5, 1 | r5++;
0x00097c0c adc r8, r8, 0 | __asm ("adc r8, r8, 0");
0x00097c10 ldr r1, [sp, 4] | r1 = var_4h;
0x00097c12 mov r0, sb | r0 = sb;
0x00097c14 ldr r7, [sp, 8] | r7 = var_8h;
0x00097c16 subs r6, r6, r3 | r6 -= r3;
0x00097c18 adds r1, 1 | r1++;
0x00097c1a str r1, [sp, 4] | var_4h = r1;
0x00097c1c mov r1, fp | r1 = fp;
0x00097c1e blx r7 | uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00097c20 mov r0, r4 | r0 = r4;
0x00097c22 blx 0x84f8 | fcn_000084f8 ();
0x00097c26 cmp r6, 0 |
0x00097c28 mov r0, sb | r0 = sb;
| if (r6 <= 0) {
0x00097c2a ble 0x97c70 | goto label_0;
| }
0x00097c2c ldr.w r3, [sl] | r3 = *(sl);
| if (r3 == 0) {
0x00097c30 cbz r3, 0x97c68 | goto label_1;
| }
0x00097c32 ldr r3, [r3] | r3 = *(r3);
0x00097c34 movs r2, 0 | r2 = 0;
0x00097c36 adds r2, r2, r5 | r2 += r5;
0x00097c38 add.w r3, r8, r3, lsl 5 | r3 = r8 + (r3 << 5);
0x00097c3c bl 0x934cc | r0 = fcn_000934cc (r0, r1, r2);
0x00097c40 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00097c42 cbz r0, 0x97c70 | goto label_0;
| }
0x00097c44 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x00097c46 cmp r2, 3 |
| if (r2 <= 3) {
0x00097c48 ble 0x97c54 | goto label_2;
| }
0x00097c4a ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00097c4c cmp r2, r3 |
0x00097c4e sub.w r3, r3, 4 | r3 -= 4;
0x00097c52 bge 0x97bf2 |
| }
| label_2:
0x00097c54 movw r3, 0x10b | r3 = 0x10b;
0x00097c58 mov r0, r4 | r0 = r4;
0x00097c5a str.w r3, [sb, 0x24] | __asm ("str.w r3, [sb, 0x24]");
0x00097c5e add sp, 0x14 |
0x00097c60 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00097c64 b.w 0x84f4 | void (*0x84f4)() ();
| label_1:
0x00097c68 movw r3, 0x10b | r3 = 0x10b;
0x00097c6c str.w r3, [sb, 0x24] | __asm ("str.w r3, [sb, 0x24]");
| label_0:
0x00097c70 add sp, 0x14 |
0x00097c72 pop.w {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/libsqlite3.so.0.8.6 @ 0x97c78 */
| #include <stdint.h>
|
; (fcn) fcn.00097c78 () | void fcn_00097c78 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_ch_2;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00097c78 push.w {r4, r5, r6, r7, r8, lr} |
0x00097c7c mov r6, r3 | r6 = r3;
0x00097c7e ldr r4, [pc, 0x104] |
0x00097c80 mov r8, r1 | r8 = r1;
0x00097c82 sub sp, 0x18 |
0x00097c84 mov r5, r2 | r5 = r2;
0x00097c86 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00097c88 mov r7, r0 | r7 = r0;
0x00097c8a ldr r3, [pc, 0xfc] | r3 = *(0x97d8a);
0x00097c8c add r4, pc | r4 = 0x12fa16;
0x00097c8e ldr r0, [r6] | r0 = *(r6);
0x00097c90 ldr r3, [r4, r3] |
0x00097c92 ldr r4, [r6, 8] | r4 = *((r6 + 8));
0x00097c94 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00097c96 str r3, [sp, 0x14] | var_14h = r3;
0x00097c98 mov.w r3, 0 | r3 = 0;
0x00097c9c ldr.w r3, [r8, 0x58] | r3 = *((r8 + 0x58));
0x00097ca0 add.w r2, r3, 8 | r2 = r3 + 8;
0x00097ca4 add r2, r1 | r2 += r1;
0x00097ca6 cmp r2, r4 |
| if (r2 < r4) {
0x00097ca8 bls 0x97cde | goto label_0;
| }
0x00097caa cmp r4, r2 |
| if (r4 >= r2) {
0x00097cac bhs 0x97cde | goto label_0;
| }
0x00097cae cmp r4, 0 |
0x00097cb0 it eq |
| if (r4 != 0) {
0x00097cb2 moveq r4, 0x40 | r4 = 0x40;
| }
0x00097cb4 asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x00097cb6 cmp r4, r2 |
0x00097cb8 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r4 >= r2) {
0x00097cbc bhs 0x97cca | goto label_1;
| }
| do {
0x00097cbe adds r4, r4, r4 | r4 += r4;
0x00097cc0 adcs r3, r3 | __asm ("adcs r3, r3");
0x00097cc2 cmp r4, r2 |
0x00097cc4 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x00097cc8 blo 0x97cbe |
| } while (r4 <= r2);
| label_1:
0x00097cca mov r2, r4 | r2 = r4;
0x00097ccc blx 0x8638 | r0 = fcn_00008638 ();
0x00097cd0 cmp r0, 0 |
| if (r0 == 0) {
0x00097cd2 beq 0x97d78 | goto label_2;
| }
0x00097cd4 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00097cd6 ldr.w r3, [r8, 0x58] | r3 = *((r8 + 0x58));
0x00097cda str r4, [r6, 8] | *((r6 + 8)) = r4;
0x00097cdc str r0, [r6] | *(r6) = r0;
| label_0:
0x00097cde add r3, r1 | r3 += r1;
0x00097ce0 movs r2, 0 | r2 = 0;
0x00097ce2 str r2, [r0, r3] | *((r0 + r3)) = r2;
0x00097ce4 add r0, r3 | r0 += r3;
0x00097ce6 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00097ce8 cmp r5, 0 |
| if (r5 == 0) {
0x00097cea beq 0x97d52 | goto label_3;
| }
0x00097cec ldr r3, [r7] | r3 = *(r7);
0x00097cee ldr r4, [r3, 0x30] | r4 = *((r3 + 0x30));
0x00097cf0 str r6, [sp, 4] | var_4h = r6;
| if (r4 != 0) {
0x00097cf2 cbnz r4, 0x97d24 | goto label_4;
| }
0x00097cf4 ldr r0, [r5] | r0 = *(r5);
0x00097cf6 str r5, [sp, 8] | var_8h = r5;
0x00097cf8 cmp r0, 0 |
| if (r0 <= 0) {
0x00097cfa ble 0x97d12 | goto label_5;
| }
0x00097cfc mov r2, r5 | r2 = r5;
0x00097cfe mov r3, r4 | r3 = r4;
0x00097d00 b 0x97d08 |
| while (r1 != 0) {
0x00097d02 adds r3, 1 | r3++;
0x00097d04 cmp r0, r3 |
| if (r0 == r3) {
0x00097d06 beq 0x97d12 | goto label_5;
| }
0x00097d08 ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x00097d0c cmp r1, 0 |
0x00097d0e bne 0x97d02 |
| }
0x00097d10 movs r4, 1 | r4 = 1;
| label_5:
0x00097d12 ldr r3, [pc, 0x78] |
0x00097d14 add r2, sp, 4 | r2 += var_4h;
0x00097d16 mov r1, r8 | r1 = r8;
0x00097d18 mov r0, r7 | r0 = r7;
0x00097d1a str r4, [sp, 0xc] | var_ch = r4;
0x00097d1c add r3, pc | r3 = 0x12faae;
0x00097d1e bl 0x97ba0 | fcn_00097ba0 (r0, r1, r2, r3);
0x00097d22 b 0x97d38 | goto label_6;
| label_4:
0x00097d24 ldr r3, [pc, 0x68] |
0x00097d26 mov r1, r8 | r1 = r8;
0x00097d28 strd r2, r2, [sp, 0xc] | __asm ("strd r2, r2, [var_ch]");
0x00097d2c mov r0, r7 | r0 = r7;
0x00097d2e add r2, sp, 4 | r2 += var_4h;
0x00097d30 str r5, [sp, 8] | var_8h = r5;
0x00097d32 add r3, pc | r3 = 0x12fac6;
0x00097d34 bl 0x97ba0 | fcn_00097ba0 (r0, r1, r2, r3);
| do {
| label_6:
0x00097d38 ldr r2, [pc, 0x58] |
0x00097d3a ldr r3, [pc, 0x4c] | r3 = *(0x97d8a);
0x00097d3c add r2, pc | r2 = 0x12fad4;
0x00097d3e ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00097d40 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00097d42 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00097d44 eors r2, r3 | r2 ^= r3;
0x00097d46 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00097d4a bne 0x97d7e | goto label_7;
| }
0x00097d4c add sp, 0x18 |
0x00097d4e pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x00097d52 ldr r2, [pc, 0x44] |
0x00097d54 ldr r3, [pc, 0x30] | r3 = *(0x97d88);
0x00097d56 add r2, pc | r2 = 0x12faf4;
0x00097d58 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00097d5a ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00097d5c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00097d5e eors r2, r3 | r2 ^= r3;
0x00097d60 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00097d64 bne 0x97d7e | goto label_7;
| }
0x00097d66 ldr r3, [pc, 0x34] |
0x00097d68 mov r2, r6 | r2 = r6;
0x00097d6a mov r1, r8 | r1 = r8;
0x00097d6c mov r0, r7 | r0 = r7;
0x00097d6e add r3, pc | r3 = 0x12fb10;
0x00097d70 add sp, 0x18 |
0x00097d72 pop.w {r4, r5, r6, r7, r8, lr} |
0x00097d76 b 0x97ba0 | void (*0x97ba0)() ();
| label_2:
0x00097d78 movs r3, 7 | r3 = 7;
0x00097d7a str r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
0x00097d7c b 0x97d38 |
| } while (1);
| label_7:
0x00097d7e blx 0x7e8c | fcn_00007e8c ();
0x00097d82 nop |
0x00097d84 str r4, [r0] | *(r0) = r4;
0x00097d86 movs r3, r0 | r3 = r0;
0x00097d88 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00097d8a movs r0, r0 |
0x00097d8c strh r1, [r3, 0x10] | *((r3 + 0x10)) = r1;
0x00097d8e invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x98044 */
| #include <stdint.h>
|
; (fcn) fcn.00098044 () | void fcn_00098044 (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_4h_4;
| int32_t var_8h;
| int32_t var_8h_2;
| int16_t var_10h_2;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h_2;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h_2;
| int16_t var_3ch_2;
| int16_t var_40h;
| int16_t var_44h_2;
| int16_t var_48h_2;
| int16_t var_4ch_2;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h_2;
| int16_t var_68h_2;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h_2;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_8ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_a9h;
| int16_t var_ach;
| int16_t var_c8h;
| int16_t var_d0h;
| int16_t var_d4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00098044 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00098048 mov r6, r1 | r6 = r1;
0x0009804a ldr.w sb, [r1] | sb = *(r1);
0x0009804e mov r5, r2 | r5 = r2;
0x00098050 sub sp, 0xdc |
0x00098052 mov r4, r0 | r4 = r0;
0x00098054 ldr.w r1, [pc, 0x6bc] |
0x00098058 ldr.w r2, [pc, 0x6bc] | r2 = *(0x98718);
0x0009805c add r1, pc | r1 = 0x130774;
0x0009805e ldr r2, [r1, r2] |
0x00098060 ldr r2, [r2] | r2 = imp._ITM_deregisterTMCloneTable;
0x00098062 str r2, [sp, 0xd4] | var_d4h = r2;
0x00098064 mov.w r2, 0 | r2 = 0;
0x00098068 lsls r2, r5, 1 | r2 = r5 << 1;
0x0009806a str r3, [sp, 0x20] | var_20h = r3;
0x0009806c mov r1, r2 | r1 = r2;
0x0009806e str r2, [sp, 0x1c] | var_1ch = r2;
0x00098070 adds r7, r1, r5 | r7 = r1 + r5;
0x00098072 movs r2, 0 | r2 = 0;
0x00098074 lsls r7, r7, 2 | r7 <<= 2;
0x00098076 str r2, [sp, 0x54] | var_54h = r2;
0x00098078 add.w fp, r7, 0x18 |
0x0009807c cmp r3, 0 |
| if (r3 == 0) {
0x0009807e beq.w 0x98508 | goto label_20;
| }
0x00098082 ldr r3, [r3] | r3 = *(r3);
0x00098084 str r3, [sp, 0x34] | var_34h = r3;
| label_6:
0x00098086 ldr r3, [r4] | r3 = *(r4);
0x00098088 add.w r8, sp, 0x70 | r8 += var_70h;
0x0009808c movs r2, 0x60 | r2 = 0x60;
0x0009808e movs r1, 0 | r1 = 0;
0x00098090 mov r0, r8 | r0 = r8;
0x00098092 ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x00098094 str r3, [sp, 0x30] | var_30h = r3;
0x00098096 blx 0x8264 | fcn_00008264 ();
0x0009809a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0009809c adds r2, r5, 1 | r2 = r5 + 1;
0x0009809e add r3, r5 | r3 += r5;
0x000980a0 add.w r3, sb, r3, lsl 2 | r3 = sb + (r3 << 2);
0x000980a4 ldr.w sl, [r3, 0x18] | sl = *((r3 + 0x18));
0x000980a8 movs r3, 0 | r3 = 0;
0x000980aa strd r3, r3, [sp, 0x58] | __asm ("strd r3, r3, [var_58h]");
0x000980ae str r3, [sp, 0x60] | var_60h = r3;
0x000980b0 add r3, sp, 0x58 | r3 += var_58h;
0x000980b2 str r3, [sp, 0x2c] | var_2ch = r3;
0x000980b4 cmp.w sl, 0 |
| if (sl == 0) {
0x000980b8 beq.w 0x9829c | goto label_21;
| }
0x000980bc add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x000980c0 adds r7, 0x24 | r7 += 0x24;
0x000980c2 add.w r3, sb, r7 | r3 = sb + r7;
0x000980c6 add.w r2, sb, r2, lsl 2 | r2 = sb + (r2 << 2);
0x000980ca str r3, [sp, 0x28] | var_28h_2 = r3;
0x000980cc mov r1, r8 | r1 = r8;
0x000980ce ldrd r7, r6, [r2, 0x1c] | __asm ("ldrd r7, r6, [r2, 0x1c]");
0x000980d2 mov r0, r4 | r0 = r4;
0x000980d4 add fp, sb |
0x000980d6 add.w r2, r7, r7, lsl 1 | r2 = r7 + (r7 << 1);
0x000980da lsls r2, r2, 2 | r2 <<= 2;
0x000980dc subs r2, 0xc | r2 -= 0xc;
0x000980de adds r3, r6, r2 | r3 = r6 + r2;
0x000980e0 ldr r2, [r6, r2] | r2 = *((r6 + r2));
0x000980e2 mov r7, r3 | r7 = r3;
0x000980e4 str r3, [sp, 0x24] | var_24h = r3;
0x000980e6 bl 0x7938c | fcn_0007938c (r0, r1, r2);
0x000980ea ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x000980ec movs r3, 0 | r3 = 0;
0x000980ee str r3, [sp, 0xc8] | var_c8h = r3;
0x000980f0 adds r2, 1 | r2++;
0x000980f2 str r2, [sp, 0x74] | var_74h_2 = r2;
| label_9:
0x000980f4 ldr r3, [sp, 0x28] | r3 = var_28h_2;
0x000980f6 mov r1, sb | r1 = sb;
0x000980f8 mov r0, r4 | r0 = r4;
0x000980fa ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000980fc cmp r3, 1 |
0x000980fe itte eq |
| if (r3 != 1) {
0x00098100 ldreq r2, [sb, 0x14] | r2 = *((sb + 0x14));
| }
| if (r3 == 1) {
0x00098104 addne r3, r5, 2 | r3 = r5 + 2;
| }
| if (r3 != 1) {
0x00098106 movs r3, 0 | r3 = 0;
| }
0x00098108 strd r5, sl, [sp, 8] | __asm ("strd r5, sl, [var_8h]");
0x0009810c mov.w r5, 0 | r5 = 0;
0x00098110 it eq |
| if (r3 != 0) {
0x00098112 subeq r3, r2, r3 | r3 = r2 - r3;
| }
0x00098114 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x00098118 it eq |
| if (r3 == 0) {
0x0009811a clzeq r3, r3 | __asm ("clzeq r3, r3");
| }
0x0009811e mov.w r2, 0x20 | r2 = 0x20;
0x00098122 it eq |
| if (r3 != 0) {
0x00098124 lsreq r3, r3, 5 | r3 >>= 5;
| }
0x00098126 str r3, [sp, 0x38] | var_38h_2 = r3;
0x00098128 add r3, sp, 0x54 | r3 += var_54h;
0x0009812a str r3, [sp, 0x10] | var_10h_2 = r3;
0x0009812c mov r3, r5 | r3 = r5;
0x0009812e bl 0x956d0 | fcn_000956d0 (r0, r1, r2, r3, r4, r5, r6);
0x00098132 ldr r7, [r4, 0x24] | r7 = *((r4 + 0x24));
0x00098134 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00098136 str r3, [sp, 0x1c] | var_1ch = r3;
0x00098138 cmp r7, 0 |
| if (r7 == 0) {
0x0009813a beq.w 0x982c4 | goto label_22;
| }
0x0009813e str r5, [sp, 0x2c] | var_2ch = r5;
| label_2:
0x00098140 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00098142 mov r1, r8 | r1 = r8;
0x00098144 mov r0, r4 | r0 = r4;
0x00098146 add.w r2, r3, 8 | r2 = r3 + 8;
0x0009814a bl 0x856b4 | fcn_000856b4 (r0, r1, r2);
0x0009814e ldr r5, [r4, 0x24] | r5 = *((r4 + 0x24));
0x00098150 cmp r5, 0 |
| if (r5 != 0) {
0x00098152 bne.w 0x983f6 | goto label_23;
| }
0x00098156 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x00098158 ldrb r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0009815a cmp r0, 0 |
| if (r0 != 0) {
0x0009815c bne.w 0x983f6 | goto label_23;
| }
0x00098160 ldr r1, [r6, 0x30] | r1 = *((r6 + 0x30));
0x00098162 add.w r8, sp, 0x64 | r8 += var_64h_2;
0x00098166 strd r5, r5, [sp, 0x64] | __asm ("strd r5, r5, [var_64h_2]");
0x0009816a str r5, [sp, 0x6c] | var_6ch = r5;
0x0009816c cmp r1, 0 |
| if (r1 <= 0) {
0x0009816e ble.w 0x985ec | goto label_24;
| }
0x00098172 strd sl, fp, [sp, 0x30] | __asm ("strd sl, fp, [var_34h]");
0x00098176 add.w sb, r4, 0x24 | sb = r4 + 0x24;
0x0009817a mov fp, r8 |
0x0009817c mov r8, r4 | r8 = r4;
0x0009817e b 0x98288 | goto label_25;
| label_0:
0x00098180 ldr r2, [r6, 0x78] | r2 = *((r6 + 0x78));
0x00098182 mov r0, r8 | r0 = r8;
0x00098184 ldr r3, [r3] | r3 = *(r3);
0x00098186 str r2, [sp, 0x24] | var_24h = r2;
0x00098188 movs r2, 0 | r2 = 0;
0x0009818a str r2, [sp, 0xd0] | var_d0h = r2;
0x0009818c ldr r4, [r6, 0x74] | r4 = *((r6 + 0x74));
0x0009818e lsls r3, r3, 5 | r3 <<= 5;
0x00098190 str r3, [sp, 0x28] | var_28h_2 = r3;
0x00098192 adds.w sl, r4, r2 | sl = r4 + r2;
0x00098196 add.w r4, r3, r4, asr 31 | r4 = r3 + (r4 >> 31);
0x0009819a mov r2, sl | r2 = sl;
0x0009819c mov r3, r4 | r3 = r4;
0x0009819e bl 0x934cc | r0 = fcn_000934cc (r0, r1, r2);
0x000981a2 mov r7, r0 | r7 = r0;
0x000981a4 cmp r0, 0 |
| if (r0 != 0) {
0x000981a6 beq 0x98270 |
0x000981a8 ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x000981aa cmp r1, 3 |
| if (r1 <= 3) {
0x000981ac ble.w 0x985d2 | goto label_26;
| }
0x000981b0 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x000981b2 cmp r1, r3 |
| if (r1 < r3) {
0x000981b4 blt.w 0x985d2 | goto label_26;
| }
0x000981b8 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000981ba cmp r2, r3 |
0x000981bc itt gt |
| if (r2 > r3) {
0x000981be movwgt r3, 0x10b | __asm ("movwgt r3, aav.0x000000ff");
| }
| if (r2 > r3) {
0x000981c2 str.w r3, [r8, 0x24] | __asm ("str.w r3, [r8, 0x24]");
| }
| if (r2 <= r3) {
0x000981c6 bgt 0x9826a |
0x000981c8 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x000981ca movs r3, 0 | r3 = 0;
0x000981cc str r3, [sp, 0x68] | var_68h_2 = r3;
0x000981ce cmp r1, r2 |
| if (r1 > r2) {
0x000981d0 bhi.w 0x986b4 | goto label_27;
| }
| label_17:
0x000981d4 add r3, sp, 0xd0 | r3 += var_d0h;
0x000981d6 movs r2, 4 | r2 = 4;
0x000981d8 mov r1, fp | r1 = fp;
0x000981da mov r0, sb | r0 = sb;
0x000981dc bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x000981e0 ldr.w r2, [r6, 0x98] | r2 = *((r6 + 0x98));
0x000981e4 mov r1, fp | r1 = fp;
0x000981e6 mov r0, sb | r0 = sb;
0x000981e8 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000981ea bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x000981ee ldrd r3, r2, [r6, 0x94] | __asm ("ldrd r3, r2, [r6, 0x94]");
0x000981f2 mov r1, fp | r1 = fp;
0x000981f4 mov r0, sb | r0 = sb;
0x000981f6 bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x000981fa ldr r1, [sp, 0x24] | r1 = var_24h;
0x000981fc mov r0, sb | r0 = sb;
0x000981fe ldr r3, [r7] | r3 = *(r7);
0x00098200 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00098202 add r3, r1 | r3 += r1;
0x00098204 subs r2, r2, r1 | r2 -= r1;
0x00098206 mov r1, fp | r1 = fp;
0x00098208 bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x0009820c ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
| if (r3 == 0) {
0x00098210 cbnz r3, 0x9821e |
0x00098212 ldrd r2, r3, [sp, 0x64] | __asm ("ldrd r2, r3, [var_64h_2]");
0x00098216 strb r3, [r2, 3] | *((r2 + 3)) = r3;
0x00098218 ubfx r3, r3, 8, 8 | r3 = (r3 >> 8) & ((1 << 8) - 1);
0x0009821c strb r3, [r2, 2] | *((r2 + 2)) = r3;
| }
0x0009821e movs r2, 4 | r2 = 4;
0x00098220 movs r3, 0 | r3 = 0;
0x00098222 mov r1, fp | r1 = fp;
0x00098224 mov r0, sb | r0 = sb;
0x00098226 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x0009822a ldr r3, [r6, 0x74] | r3 = *((r6 + 0x74));
0x0009822c ldr r2, [r6, 0x58] | r2 = *((r6 + 0x58));
0x0009822e cmp r2, r3 |
| if (r2 == r3) {
0x00098230 beq.w 0x98638 | goto label_28;
| }
| label_15:
0x00098234 ldr.w r2, [r8, 0x24] | r2 = *((r8 + 0x24));
0x00098238 ldr r1, [r6, 0x50] | r1 = *((r6 + 0x50));
0x0009823a str r3, [r1, 4] | *((r1 + 4)) = r3;
| if (r2 != 0) {
0x0009823c cbnz r2, 0x9826a | goto label_29;
| }
0x0009823e movs r3, 0 | r3 = 0;
0x00098240 mov r0, r8 | r0 = r8;
0x00098242 adds r2, r3, 1 | r2 = r3 + 1;
0x00098244 ldr r3, [sp, 0x28] | r3 = var_28h_2;
0x00098246 strd sl, r4, [sp] | __asm ("strd sl, r4, [sp]");
0x0009824a adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009824e bl 0x85764 | fcn_00085764 (r0, r1, r2, r3);
0x00098252 ldr.w r1, [r8, 0x24] | r1 = *((r8 + 0x24));
0x00098254 asrs r4, r4, 0x20 | r4 >>= 0x20;
0x00098256 ldrd r3, r2, [sp, 0x64] | __asm ("ldrd r3, r2, [var_64h_2]");
| if (r1 != 0) {
0x0009825a cbnz r1, 0x9826a | goto label_29;
| }
0x0009825c strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00098260 mov r0, r8 | r0 = r8;
0x00098262 mov r2, sl | r2 = sl;
0x00098264 mov r3, r4 | r3 = r4;
0x00098266 bl 0x84bd4 | fcn_00084bd4 (r0, r1, r2, r3);
| }
| label_29:
0x0009826a mov r0, r7 | r0 = r7;
0x0009826c blx 0x84f8 | fcn_000084f8 ();
| }
0x00098270 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00098272 ldr r1, [r3, 0x30] | r1 = *((r3 + 0x30));
| do {
| label_1:
0x00098274 adds r5, 1 | r5++;
0x00098276 cmp r5, r1 |
| if (r5 >= r1) {
0x00098278 bge.w 0x985e6 | goto label_30;
| }
0x0009827c ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00098280 adds r6, 0x60 | r6 += 0x60;
0x00098282 cmp r3, 0 |
| if (r3 != 0) {
0x00098284 bne.w 0x985e6 | goto label_30;
| }
| label_25:
0x00098288 ldr r3, [r6, 0x50] | r3 = *((r6 + 0x50));
0x0009828a cmp r3, 0 |
0x0009828c beq 0x98274 |
| } while (r3 == 0);
0x0009828e ldr r2, [r6, 0x5c] | r2 = *((r6 + 0x5c));
0x00098290 cmp r2, 0 |
| if (r2 != 0) {
0x00098292 bne.w 0x98180 | goto label_0;
| }
0x00098296 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x0009829a b 0x98274 | goto label_1;
| label_21:
0x0009829c ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0009829e cmp r3, 0 |
| if (r3 == 0) {
0x000982a0 beq.w 0x983e4 | goto label_31;
| }
| label_3:
0x000982a4 ldr.w r2, [pc, 0x474] |
0x000982a8 ldr.w r3, [pc, 0x46c] | r3 = *(0x98718);
0x000982ac add r2, pc | r2 = 0x1309cc;
0x000982ae ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000982b0 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000982b2 ldr r3, [sp, 0xd4] | r3 = var_d4h;
0x000982b4 eors r2, r3 | r2 ^= r3;
0x000982b6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000982ba bne.w 0x9870e | goto label_32;
| }
0x000982be add sp, 0xdc |
0x000982c0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x000982c4 ldr.w r2, [pc, 0x458] | r2 = *(0x00098720);
0x000982c8 add r2, pc | r2 += pc;
0x000982ca str r2, [sp, 0x44] | var_44h_2 = r2;
0x000982cc add.w r2, r4, 0x24 | r2 = r4 + 0x24;
0x000982d0 strd r2, sb, [sp, 0x3c] | __asm ("strd r2, sb, [var_40h]");
0x000982d4 mov sb, r3 | sb = r3;
| do {
0x000982d6 ldrb.w r3, [sb, 0x10] | r3 = *((sb + 0x10));
0x000982da cmp r3, 0 |
| if (r3 != 0) {
0x000982dc bne 0x983da | goto label_33;
| }
0x000982de ldr.w r3, [sb, 0x48] | r3 = *((sb + 0x48));
0x000982e2 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x000982e4 ldrh r5, [r3, 4] | r5 = *((r3 + 4));
0x000982e6 lsls r6, r5, 1 | r6 = r5 << 1;
0x000982e8 adds r3, r6, r5 | r3 = r6 + r5;
0x000982ea add.w r3, sb, r3, lsl 5 | r3 = sb + (r3 << 5);
0x000982ec asrs r3, r0, 0xd | r3 = r0 >> 0xd;
0x000982ee ldrd r3, r2, [r3, 0x94] | __asm ("ldrd r3, r2, [r3, 0x94]");
0x000982f2 cmp r1, r2 |
| if (r1 == r2) {
0x000982f4 beq.w 0x9850e | goto label_34;
| }
| label_8:
0x000982f8 ldr r1, [sp, 0x20] | r1 = var_20h;
| if (r1 != 0) {
0x000982fa cbz r1, 0x98304 |
0x000982fc ldr r1, [sp, 0xac] | r1 = var_ach;
0x000982fe ldr r0, [sp, 0x34] | r0 = var_34h;
0x00098300 cmp r1, r0 |
| if (r1 > r0) {
0x00098302 bgt 0x983da | goto label_33;
| }
| }
0x00098304 movs r1, 0 | r1 = 0;
0x00098306 ldr r0, [sp, 0x3c] | r0 = var_3ch_2;
0x00098308 str r1, [sp, 0x5c] | var_5ch = r1;
0x0009830a mov r7, r1 | r7 = r1;
0x0009830c ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0009830e strd r2, r3, [sp, 0x48] | __asm ("strd r2, r3, [var_48h_2]");
0x00098312 bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x00098316 ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h_2]");
| label_7:
0x0009831a adds r1, r6, r5 | r1 = r6 + r5;
0x0009831c add.w r1, sb, r1, lsl 5 | r1 = sb + (r1 << 5);
0x00098320 ldr.w r0, [r1, 0xa8] | r0 = *((r1 + 0xa8));
| if (r0 == 0) {
0x00098324 cbnz r0, 0x98334 |
0x00098326 ldr r0, [sp, 0x38] | r0 = var_38h_2;
0x00098328 cmp r0, 0 |
| if (r0 != 0) {
0x0009832a bne 0x983c0 | goto label_14;
| }
0x0009832c ldrb.w r1, [r1, 0xac] | r1 = *((r1 + 0xac));
0x00098330 cmp r1, 0 |
| if (r1 == 0) {
0x00098332 beq 0x983c0 | goto label_14;
| }
| }
0x00098334 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x00098336 orrs.w r0, r1, r7 | r0 = r1 | r7;
| if (r0 == r1) {
0x0009833a beq.w 0x985c4 | goto label_35;
| }
| label_10:
0x0009833e cmp r1, 0 |
| if (r1 == 0) {
0x00098340 bne 0x983a6 |
0x00098342 ldr.w r3, [sb, 0x48] | r3 = *((sb + 0x48));
0x00098346 ldr r2, [r4] | r2 = *(r4);
0x00098348 ldr r0, [sp, 0x8c] | r0 = var_8ch;
0x0009834a ldrh r3, [r3, 4] | r3 = *((r3 + 4));
0x0009834c ldr r1, [r2, 0x4c] | r1 = *((r2 + 0x4c));
0x0009834e ldr r2, [sp, 0x80] | r2 = var_80h;
0x00098350 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00098354 add r2, r0 | r2 += r0;
0x00098356 add.w r3, sb, r3, lsl 5 | r3 = sb + (r3 << 5);
0x0009835a cmp r2, r1 |
0x0009835c ldr.w r0, [r3, 0xa0] | r0 = *((r3 + 0xa0));
0x00098360 ldr.w r3, [r3, 0xa4] | r3 = *((r3 + 0xa4));
0x00098364 str r0, [sp, 0x48] | var_48h_2 = r0;
0x00098366 str r3, [sp, 0x4c] | var_4ch_2 = r3;
| if (r2 >= r1) {
0x00098368 bge.w 0x986fc | goto label_36;
| }
| label_19:
0x0009836c ldrb.w r3, [sp, 0xa9] | r3 = var_a9h;
0x00098370 cmp r3, 0 |
| if (r3 != 0) {
0x00098372 bne.w 0x986e2 | goto label_37;
| }
| label_18:
0x00098376 ldrh.w r3, [sp, 0xa8] | r3 = var_a8h;
0x0009837a cmp r3, 0 |
| if (r3 != 0) {
0x0009837c bne.w 0x9867a | goto label_38;
| }
0x00098380 ldr r3, [sp, 0xa0] | r3 = var_a0h;
0x00098382 ldr r2, [sp, 0x48] | r2 = var_48h_2;
0x00098384 ldr r1, [sp, 0x4c] | r1 = var_4ch_2;
0x00098386 ldr r0, [sp, 0x3c] | r0 = var_3ch_2;
0x00098388 subs r2, r2, r3 | r2 -= r3;
0x0009838a ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0009838c sbc.w r3, r1, r3 | __asm ("sbc.w r3, r1, r3");
0x00098390 add r1, sp, 0x7c | r1 += var_7ch;
0x00098392 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
| label_16:
0x00098396 ldr r3, [sp, 0x48] | r3 = var_48h_2;
0x00098398 str r3, [sp, 0xa0] | var_a0h = r3;
0x0009839a ldr r3, [sp, 0x4c] | r3 = var_4ch_2;
0x0009839c str r3, [sp, 0xa4] | var_a4h = r3;
0x0009839e mov.w r3, 0 | r3 = 0;
0x000983a2 strh.w r3, [sp, 0xa8] | var_a8h = r3;
| }
0x000983a6 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000983a8 add r5, r6 | r5 += r6;
0x000983aa lsls r5, r5, 5 | r5 <<= 5;
0x000983ac cmp r3, 1 |
0x000983ae add.w r6, sb, r5 | r6 = sb + r5;
0x000983b2 ldrb.w r2, [r6, 0xac] | r2 = *((r6 + 0xac));
| if (r3 != 1) {
0x000983b6 bne.w 0x98614 | goto label_39;
| }
0x000983ba cmp r2, 0 |
| if (r2 != 0) {
0x000983bc bne.w 0x98688 | goto label_40;
| }
| label_14:
0x000983c0 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000983c4 movs r2, 0 | r2 = 0;
0x000983c6 mov r1, sb | r1 = sb;
0x000983c8 mov r0, r4 | r0 = r4;
0x000983ca vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x000983ce bl 0x946e4 | fcn_000946e4 (r0, r1, r2, r3, r4, r5, r6);
0x000983d2 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000983d4 cmp r3, 0 |
0x000983d6 beq.w 0x982d6 |
| } while (r3 == 0);
| label_33:
0x000983da ldr r3, [sp, 0x58] | r3 = var_58h;
0x000983dc ldr.w sb, [sp, 0x40] | sb = var_40h;
0x000983e0 str r3, [sp, 0x2c] | var_2ch = r3;
0x000983e2 b 0x98140 | goto label_2;
| label_31:
0x000983e4 ldr.w r3, [sb, 0x10] | r3 = *((sb + 0x10));
0x000983e8 cmp.w r3, 0x7d0 |
| if (r3 < 0x7d0) {
0x000983ec blt.w 0x9852c | goto label_41;
| }
0x000983f0 movs r3, 0xd | r3 = 0xd;
0x000983f2 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x000983f4 b 0x982a4 | goto label_3;
| label_23:
0x000983f6 cmp.w sl, 0 |
| if (sl <= 0) {
0x000983fa ble 0x98492 | goto label_42;
| }
0x000983fc ldr r3, [pc, 0x324] |
0x000983fe movs r6, 0 | r6 = 0;
0x00098400 mov r7, r6 | r7 = r6;
0x00098402 mov r2, r5 | r2 = r5;
0x00098404 add r3, pc | r3 = 0x130b2c;
0x00098406 mov r8, r3 | r8 = r3;
0x00098408 b 0x98446 |
| while (r2 == 0) {
0x0009840a lsls r3, r5, 5 | r3 = r5 << 5;
0x0009840c mov r0, r4 | r0 = r4;
0x0009840e adds r3, 0x1f | r3 += 0x1f;
0x00098410 str r3, [sp, 4] | var_4h_4 = r3;
0x00098412 subs r3, r2, 1 | r3 = r2 - 1;
0x00098414 str r3, [sp] | *(sp) = r3;
0x00098416 lsls r3, r5, 5 | r3 = r5 << 5;
0x00098418 bl 0x85764 | fcn_00085764 (r0, r1, r2, r3);
0x0009841c ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
| if (r3 == 0) {
0x0009841e cbz r3, 0x98456 | goto label_43;
| }
| label_5:
0x00098420 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
| if (r3 == 0) {
0x00098422 cbnz r3, 0x9843c |
0x00098424 mov r2, r5 | r2 = r5;
0x00098426 movs r1, 1 | r1 = 1;
0x00098428 ldr r0, [r4, 0x38] | r0 = *((r4 + 0x38));
0x0009842a blx 0x7e30 | sleep (r0);
0x0009842e ldr r0, [r4, 0x38] | r0 = *((r4 + 0x38));
0x00098430 blx 0x809c | fcn_0000809c ();
0x00098434 ldr r0, [r4, 0x38] | r0 = *((r4 + 0x38));
0x00098436 blx 0x7cfc | fcn_00007cfc ();
0x0009843a str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
| }
| label_4:
0x0009843c adds r7, 1 | r7++;
0x0009843e adds r6, 0xc | r6 += 0xc;
0x00098440 cmp sl, r7 |
| if (sl == r7) {
0x00098442 beq 0x98492 | goto label_42;
| }
0x00098444 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x00098446 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x0009844a ldr r5, [r3, r6] | r5 = *((r3 + r6));
0x0009844c cmp r2, 0 |
0x0009844e beq 0x9840a |
| }
0x00098450 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00098452 cmp r3, 0 |
| if (r3 != 0) {
0x00098454 bne 0x9843c | goto label_4;
| }
| label_43:
0x00098456 ldr r3, [r4] | r3 = *(r4);
0x00098458 mov r0, r8 | r0 = r8;
0x0009845a ldrd r1, r2, [r3, 4] | __asm ("ldrd r1, r2, [r3, 4]");
0x0009845e blx 0x852c | strncmp (r0, r1, r2);
0x00098462 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x00098464 mov r1, r0 | r1 = r0;
| if (r2 == 0) {
0x00098466 cbnz r2, 0x9848a |
0x00098468 cmp r0, 0 |
| if (r0 == 0) {
0x0009846a beq.w 0x985f6 | goto label_44;
| }
0x0009846e mov ip, r4 |
0x00098470 movs r3, 5 | r3 = 5;
0x00098472 ldr r0, [ip], 0x38 | r0 = *(ip);
| ip += 0x38;
0x00098476 str r1, [sp, 0x30] | var_30h = r1;
0x00098478 ldr r0, [r0] | r0 = *(r0);
0x0009847a strd ip, r2, [sp] | __asm ("strd ip, r2, [sp]");
0x0009847e mov.w r2, -1 | r2 = -1;
0x00098482 blx 0x7f24 | fcn_00007f24 ();
0x00098486 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00098488 str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
| }
| label_12:
0x0009848a mov r0, r1 | r0 = r1;
0x0009848c blx 0x84f8 | fcn_000084f8 ();
0x00098490 b 0x98420 | goto label_5;
| label_42:
0x00098492 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00098496 cmp r3, sl |
| if (r3 != sl) {
0x00098498 beq 0x984b8 |
0x0009849a ldr.w r0, [fp, 8] | r0 = *(arg_8h);
0x0009849e sub.w r3, r3, sl | r3 -= sl;
0x000984a2 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x000984a6 add.w r1, sl, sl, lsl 1 | r1 = sl + (sl << 1);
0x000984aa lsls r2, r3, 2 | r2 = r3 << 2;
0x000984ac add.w r1, r0, r1, lsl 2 | r1 = r0 + (r1 << 2);
0x000984b0 blx 0x7d44 | fcn_00007d44 ();
0x000984b4 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
| }
0x000984b8 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000984ba sub.w r3, r3, sl | r3 -= sl;
0x000984be ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x000984c0 ldr.w r2, [sb, 0x10] | r2 = *((sb + 0x10));
0x000984c4 sub.w r2, r2, sl | r2 -= sl;
0x000984c8 str.w r2, [sb, 0x10] | __asm ("str.w r2, [sb, 0x10]");
0x000984cc str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
0x000984d0 movs r3, 0 | r3 = 0;
0x000984d2 str.w r3, [fp] | __asm ("str.w r3, [fp]");
| if (r1 == 0) {
0x000984d6 cbnz r1, 0x984e6 |
0x000984d8 ldr r1, [sp, 0x28] | r1 = var_28h_2;
0x000984da subs r2, 1 | r2--;
0x000984dc ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000984de subs r3, 1 | r3--;
0x000984e0 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x000984e2 str.w r2, [sb, 0x10] | __asm ("str.w r2, [sb, 0x10]");
| }
0x000984e6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x000984e8 cbz r3, 0x984f0 |
| label_11:
0x000984ea ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000984ec bl 0x16c60 | fcn_00016c60 (r0);
| }
0x000984f0 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000984f2 blx 0x84f8 | fcn_000084f8 ();
0x000984f6 ldr r1, [sp, 0x20] | r1 = var_20h;
0x000984f8 cmp r1, 0 |
| if (r1 == 0) {
0x000984fa beq.w 0x982a4 | goto label_3;
| }
0x000984fe ldr r3, [r1] | r3 = *(r1);
0x00098500 ldr r2, [sp, 0xac] | r2 = var_ach;
0x00098502 subs r3, r3, r2 | r3 -= r2;
0x00098504 str r3, [r1] | *(r1) = r3;
0x00098506 b 0x982a4 | goto label_3;
| label_20:
0x00098508 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0009850a str r3, [sp, 0x34] | var_34h = r3;
0x0009850c b 0x98086 | goto label_6;
| label_34:
0x0009850e cmp r2, 0 |
| if (r2 == 0) {
0x00098510 beq.w 0x9831a | goto label_7;
| }
0x00098514 mov r0, r3 | r0 = r3;
0x00098516 ldr r1, [sp, 0x58] | r1 = var_58h;
0x00098518 str r2, [sp, 0x4c] | var_4ch_2 = r2;
0x0009851a str r3, [sp, 0x48] | var_48h_2 = r3;
0x0009851c blx 0x7e40 | fcn_00007e40 ();
0x00098520 ldrd r3, r2, [sp, 0x48] | __asm ("ldrd r3, r2, [var_48h_2]");
0x00098524 cmp r0, 0 |
| if (r0 == 0) {
0x00098526 beq.w 0x9831a | goto label_7;
| }
0x0009852a b 0x982f8 | goto label_8;
| label_41:
0x0009852c mov r0, sb | r0 = sb;
0x0009852e str r2, [sp, 0x24] | var_24h = r2;
0x00098530 bl 0xf840 | fcn_0000f840 (r0);
0x00098534 ldr.w r3, [sb, 0x14] | r3 = *((sb + 0x14));
0x00098538 mov sl, r0 | sl = r0;
0x0009853a ldr r2, [sp, 0x24] | r2 = var_24h;
0x0009853c subs r3, 1 | r3--;
0x0009853e cmp r5, r3 |
| if (r5 == r3) {
0x00098540 beq 0x985fc | goto label_45;
| }
| label_13:
0x00098542 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00098546 movs r3, 0 | r3 = 0;
0x00098548 add.w r6, sb, r2, lsl 2 | r6 = sb + (r2 << 2);
0x0009854c ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x0009854e ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00098550 adds r2, 1 | r2++;
0x00098552 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00098556 lsls r2, r2, 2 | r2 <<= 2;
0x00098558 blx 0x8638 | r0 = fcn_00008638 ();
0x0009855c cmp r0, 0 |
| if (r0 == 0) {
0x0009855e beq.w 0x986ae | goto label_46;
| }
0x00098562 ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x00098564 movs r3, 0 | r3 = 0;
0x00098566 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x0009856a lsls r2, r2, 2 | r2 <<= 2;
0x0009856c str r3, [r0, r2] | *((r0 + r2)) = r3;
0x0009856e add r2, r0 | r2 += r0;
0x00098570 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00098572 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x00098574 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00098576 str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x00098578 cmp r3, 0 |
| if (r3 != 0) {
0x0009857a bne.w 0x982a4 | goto label_3;
| }
0x0009857e adds r7, 0x24 | r7 += 0x24;
0x00098580 mov r2, sl | r2 = sl;
0x00098582 add.w r3, sb, r7 | r3 = sb + r7;
0x00098586 mov r1, r8 | r1 = r8;
0x00098588 mov r0, r4 | r0 = r4;
0x0009858a str r3, [sp, 0x28] | var_28h_2 = r3;
0x0009858c bl 0x7938c | fcn_0007938c (r0, r1, r2);
0x00098590 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00098592 movs r0, 1 | r0 = 1;
0x00098594 add fp, sb |
0x00098596 add r3, r5 | r3 += r5;
0x00098598 add.w r7, sb, r3, lsl 2 | r7 = sb + (r3 << 2);
0x0009859c ldrd r3, r1, [r6, 0x1c] | __asm ("ldrd r3, r1, [r6, 0x1c]");
0x000985a0 adds r2, r3, r0 | r2 = r3 + r0;
0x000985a2 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x000985a6 str r2, [r6, 0x1c] | *((r6 + 0x1c)) = r2;
0x000985a8 ldr.w r2, [sb, 0x10] | r2 = *((sb + 0x10));
0x000985ac lsls r3, r3, 2 | r3 <<= 2;
0x000985ae add r2, r0 | r2 += r0;
0x000985b0 adds r6, r1, r3 | r6 = r1 + r3;
0x000985b2 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x000985b4 str.w sl, [r1, r3] | __asm ("str.w sl, [r1, r3]");
0x000985b8 str.w r2, [sb, 0x10] | __asm ("str.w r2, [sb, 0x10]");
0x000985bc ldr.w sl, [r7, 0x1c] | sl = *((r7 + 0x1c));
0x000985c0 str r6, [sp, 0x24] | var_24h = r6;
0x000985c2 b 0x980f4 | goto label_9;
| label_35:
0x000985c4 mov r1, r8 | r1 = r8;
0x000985c6 mov r0, r4 | r0 = r4;
0x000985c8 bl 0x85494 | fcn_00085494 (r0, r1, r2, r3);
0x000985cc movs r7, 1 | r7 = 1;
0x000985ce ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x000985d0 b 0x9833e | goto label_10;
| label_26:
0x000985d2 movw r3, 0x10b | r3 = 0x10b;
0x000985d6 mov r0, r7 | r0 = r7;
0x000985d8 str.w r3, [r8, 0x24] | __asm ("str.w r3, [r8, 0x24]");
0x000985dc blx 0x84f8 | fcn_000084f8 ();
0x000985e0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000985e2 ldr r1, [r3, 0x30] | r1 = *(0x13b);
0x000985e4 b 0x98274 | goto label_1;
| label_30:
0x000985e6 ldrd sl, fp, [sp, 0x30] | __asm ("ldrd sl, fp, [var_34h]");
0x000985ea ldr r0, [sp, 0x64] | r0 = var_64h_2;
| label_24:
0x000985ec blx 0x84f8 | fcn_000084f8 ();
0x000985f0 str.w sl, [fp] | __asm ("str.w sl, [fp]");
0x000985f4 b 0x984ea | goto label_11;
| label_44:
0x000985f6 movs r3, 7 | r3 = 7;
0x000985f8 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x000985fa b 0x9848a | goto label_12;
| label_45:
0x000985fc mov r1, r6 | r1 = r6;
0x000985fe add.w r0, r4, 0x24 | r0 = r4 + 0x24;
0x00098602 bl 0x4737c | fcn_0004737c (r0, r1);
0x00098606 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00098608 ldr.w sb, [r6] | sb = *(r6);
0x0009860c ldr r2, [sp, 0x24] | r2 = var_24h;
0x0009860e cmp r3, 0 |
| if (r3 == 0) {
0x00098610 beq 0x98542 | goto label_13;
| }
0x00098612 b 0x982a4 | goto label_3;
| label_39:
0x00098614 ldr.w r3, [r6, 0xa8] | r3 = *((r6 + 0xa8));
0x00098618 add r1, sp, 0x7c | r1 += var_7ch;
0x0009861a ldr r0, [sp, 0x3c] | r0 = var_3ch_2;
0x0009861c add.w r2, r2, r3, lsl 1 | r2 += (r3 << 1);
0x00098620 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00098622 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00098626 add.w r1, r5, 0x50 | r1 = r5 + 0x50;
0x0009862a ldr r3, [sp, 0x44] | r3 = var_44h_2;
0x0009862c add r1, sb | r1 += sb;
0x0009862e mov r2, r8 | r2 = r8;
0x00098630 mov r0, r4 | r0 = r4;
0x00098632 bl 0x97ba0 | fcn_00097ba0 (r0, r1, r2, r3);
0x00098636 b 0x983c0 | goto label_14;
| label_28:
0x00098638 ldr.w r1, [r6, 0x80] | r1 = *((r6 + 0x80));
0x0009863c ldr.w ip, [r7, 8] | ip = *((r7 + 8));
0x00098640 cmp r1, ip |
| if (r1 >= ip) {
0x00098642 bge.w 0x98234 | goto label_15;
| }
0x00098646 ldr r0, [r6, 0x7c] | r0 = *((r6 + 0x7c));
0x00098648 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x0009864a cmp r0, r2 |
| if (r0 > r2) {
0x0009864c bgt.w 0x98234 | goto label_15;
| }
0x00098650 ldr r3, [sp, 0x68] | r3 = var_68h_2;
0x00098652 sub.w r2, ip, r1 | r2 = ip - r1;
0x00098656 mov r0, sb | r0 = sb;
0x00098658 mov r1, fp | r1 = fp;
0x0009865a subs r3, r3, r2 | r3 -= r2;
0x0009865c subs r2, r3, 5 | r2 = r3 - 5;
0x0009865e asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00098660 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00098664 ldr r2, [r6, 0x7c] | r2 = *((r6 + 0x7c));
0x00098666 mov r0, sb | r0 = sb;
0x00098668 ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x0009866a ldr r3, [r7] | r3 = *(r7);
0x0009866c add r3, r2 | r3 += r2;
0x0009866e subs r2, r1, r2 | r2 = r1 - r2;
0x00098670 mov r1, fp | r1 = fp;
0x00098672 bl 0x487fc | fcn_000487fc (r0, r1, r2, r3);
0x00098676 ldr r3, [r6, 0x74] | r3 = *((r6 + 0x74));
0x00098678 b 0x98234 | goto label_15;
| label_38:
0x0009867a ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h_2]");
0x0009867e add r1, sp, 0x7c | r1 += var_7ch;
0x00098680 ldr r0, [sp, 0x3c] | r0 = var_3ch_2;
0x00098682 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00098686 b 0x98396 | goto label_16;
| label_40:
0x00098688 add r5, sp, 0x7c | r5 += var_7ch;
0x0009868a movs r3, 0 | r3 = 0;
0x0009868c ldr r0, [sp, 0x3c] | r0 = var_3ch_2;
0x0009868e mov r1, r5 | r1 = r5;
0x00098690 movs r2, 0 | r2 = 0;
0x00098692 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x00098696 ldr.w r3, [r6, 0xa8] | r3 = *((r6 + 0xa8));
0x0009869a cmp r3, 0 |
| if (r3 <= 0) {
0x0009869c ble.w 0x983c0 | goto label_14;
| }
0x000986a0 ldr r0, [sp, 0x3c] | r0 = var_3ch_2;
0x000986a2 mov r1, r5 | r1 = r5;
0x000986a4 movs r2, 0 | r2 = 0;
0x000986a6 movs r3, 0 | r3 = 0;
0x000986a8 bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x000986ac b 0x983c0 | goto label_14;
| label_46:
0x000986ae movs r3, 7 | r3 = 7;
0x000986b0 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x000986b2 b 0x982a4 | goto label_3;
| label_27:
0x000986b4 cmp r2, r3 |
0x000986b6 it eq |
| if (r2 != r3) {
0x000986b8 moveq r2, 0x40 | r2 = 0x40;
| }
0x000986ba asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000986bc cmp r2, r1 |
0x000986be sbcs r0, r3, 0 | __asm ("sbcs r0, r3, 0");
| if (r2 >= r1) {
0x000986c2 bhs 0x986d0 | goto label_47;
| }
| do {
0x000986c4 adds r2, r2, r2 | r2 += r2;
0x000986c6 adcs r3, r3 | __asm ("adcs r3, r3");
0x000986c8 cmp r2, r1 |
0x000986ca sbcs r0, r3, 0 | __asm ("sbcs r0, r3, 0");
0x000986ce blo 0x986c4 |
| } while (r2 <= r1);
| label_47:
0x000986d0 ldr r0, [sp, 0x64] | r0 = var_64h_2;
0x000986d2 str r2, [sp, 0x38] | var_38h_2 = r2;
0x000986d4 blx 0x8638 | fcn_00008638 ();
0x000986d8 ldr r2, [sp, 0x38] | r2 = var_38h_2;
| if (r0 != 0) {
0x000986da cbz r0, 0x98706 |
0x000986dc str r2, [sp, 0x6c] | var_6ch = r2;
0x000986de str r0, [sp, 0x64] | var_64h_2 = r0;
0x000986e0 b 0x981d4 | goto label_17;
| label_37:
0x000986e2 ldrd r2, r3, [sp, 0x7c] | __asm ("ldrd r2, r3, [var_7ch]");
0x000986e6 mov r1, r8 | r1 = r8;
0x000986e8 mov r0, r4 | r0 = r4;
0x000986ea strb r3, [r2, 1] | *((r2 + 1)) = r3;
0x000986ec ubfx r3, r3, 8, 8 | r3 = (r3 >> 8) & ((1 << 8) - 1);
0x000986f0 strb r3, [r2] | *(r2) = r3;
0x000986f2 ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h_2]");
0x000986f6 bl 0x84d98 | fcn_00084d98 (r0, r1, r2, r3);
0x000986fa b 0x98376 | goto label_18;
| label_36:
0x000986fc mov r1, r8 | r1 = r8;
0x000986fe mov r0, r4 | r0 = r4;
0x00098700 bl 0x84f60 | fcn_00084f60 (r0, r1, r2);
0x00098704 b 0x9836c | goto label_19;
| }
0x00098706 movs r3, 7 | r3 = 7;
0x00098708 str.w r3, [r8, 0x24] | __asm ("str.w r3, [r8, 0x24]");
0x0009870c b 0x981d4 | goto label_17;
| label_32:
0x0009870e blx 0x7e8c | fcn_00007e8c ();
0x00098712 nop |
0x00098714 ldrb r4, [r6, r0] | r4 = *((r6 + r0));
0x00098716 movs r3, r0 | r3 = r0;
0x00098718 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0009871a movs r0, r0 |
0x0009871c ldr r4, [r4, r7] | r4 = *((r4 + r7));
0x0009871e movs r3, r0 | r3 = r0;
0x00098720 ldm r5!, {r0, r6} | r0 = *(r5!);
| r6 = *((r5! + 4));
0x00098722 vqshrun.s64 d25, q0, 2 | __asm ("vqshrun.s64 d25, q0, 2");
0x00098726 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/libsqlite3.so.0.8.6 @ 0x98810 */
| #include <stdint.h>
|
; (fcn) fcn.00098810 () | void fcn_00098810 (int16_t arg_0h, int16_t arg_8h, int16_t arg_24h, int16_t arg_50h, int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch_2;
| int16_t var_20h_2;
| int16_t var_24h_2;
| int16_t var_28h;
| int16_t var_2ch_2;
| int16_t var_30h_2;
| int16_t var_34h_2;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h_2;
| int16_t var_58h_2;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_74h;
| int16_t var_91h;
| int16_t var_bch;
| r0 = arg1;
| if (? == ?) {
0x00098810 ldrbne pc, [r0, 0x8df] | pc = *((r0 + 0x8df));
| }
0x00098814 movs r3, 0 | r3 = 0;
0x00098816 ldr.w r2, [pc, 0x5d0] |
0x0009881a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009881e sub sp, 0xc4 |
0x00098820 add r1, pc | r1 += pc;
0x00098822 mov fp, r0 |
0x00098824 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x00098826 ldr r2, [r2] | r2 = *(0x98dea);
0x00098828 str r2, [sp, 0xbc] | var_bch = r2;
0x0009882a mov.w r2, 0 | r2 = 0;
0x0009882e ldr r2, [r0, 0xc] | r2 = *(arg_0hxc);
0x00098830 str r3, [sp, 0x48] | var_48h = r3;
0x00098832 str r2, [sp, 0x30] | var_30h_2 = r2;
0x00098834 bl 0x93d64 | fcn_00093d64 (r0);
0x00098838 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x0009883c str r0, [sp, 0x2c] | var_2ch_2 = r0;
0x0009883e str r0, [sp, 0x44] | var_44h = r0;
| if (r3 == 0) {
0x00098840 cbnz r3, 0x98852 |
0x00098842 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x00098844 cmp.w r3, 0x7d0 |
| if (r3 < 0x7d0) {
0x00098848 blt.w 0x989b6 | goto label_23;
| }
0x0009884c movs r3, 0xd | r3 = 0xd;
0x0009884e str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
| }
0x00098852 ldr.w r4, [fp, 0x50] | r4 = *(arg_50h);
| if (r4 != 0) {
0x00098856 cbz r4, 0x98884 |
0x00098858 ldr r3, [r4] | r3 = *(r4);
0x0009885a subs r3, 1 | r3--;
0x0009885c cmp r3, 0 |
0x0009885e str r3, [r4] | *(r4) = r3;
0x00098860 itt gt |
| if (r3 <= 0) {
0x00098862 movgt r3, 0 | r3 = 0;
| }
| if (r3 <= 0) {
0x00098864 strgt r3, [fp, 0x50] | *(arg_50h) = r3;
| }
| if (r3 <= 0) {
0x00098868 ble.w 0x98d90 | goto label_24;
| }
| label_3:
0x0009886c ldr.w r4, [fp, 0x24] | r4 = *(arg_24h);
0x00098870 movs r5, 0 | r5 = 0;
| if (r4 != 0) {
| label_4:
0x00098872 cbnz r4, 0x988bc | goto label_18;
| }
| label_22:
0x00098874 ldr.w r3, [fp] | r3 = *(fp);
0x00098878 ldr r6, [r3, 0x50] | r6 = *((r3 + 0x50));
0x0009887a cmp r6, 0 |
| if (r6 > 0) {
0x0009887c bgt 0x9895e | goto label_25;
| }
0x0009887e ldr.w r4, [fp, 0x24] | r4 = *(arg_24h);
0x00098882 b 0x9888c |
| } else {
0x00098884 ldr.w r4, [fp, 0x24] | r4 = *(arg_24h);
0x00098888 ldr.w r3, [fp] | r3 = *(fp);
| }
| label_2:
0x0009888c ldr r7, [sp, 0x2c] | r7 = var_2ch_2;
0x0009888e ldr r5, [r3, 0x54] | r5 = *((r3 + 0x54));
0x00098890 str r7, [sp, 0x58] | var_58h_2 = r7;
| if (r4 != 0) {
0x00098892 cbnz r4, 0x988bc | goto label_18;
| }
0x00098894 add.w r3, r4, r4, lsl 1 | r3 = r4 + (r4 << 1);
0x00098898 add r6, sp, 0x58 | r6 += var_58h_2;
0x0009889a add.w r3, r7, r3, lsl 2 | r3 = r7 + (r3 << 2);
0x0009889e ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x000988a0 cmp r5, r3 |
| if (r5 > r3) {
0x000988a2 bgt 0x9890e | goto label_26;
| }
| label_0:
0x000988a4 mov r2, r4 | r2 = r4;
0x000988a6 movs r3, 0 | r3 = 0;
0x000988a8 mov r1, r6 | r1 = r6;
0x000988aa mov r0, fp | r0 = fp;
0x000988ac bl 0x98044 | fcn_00098044 (r0, r1, r2, r3, r4, r5, r6);
0x000988b0 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x000988b4 adds r4, 1 | r4++;
0x000988b6 ldr r7, [sp, 0x58] | r7 = var_58h_2;
0x000988b8 cbz r3, 0x988ee |
| while (r3 != 0) {
0x000988ba str r7, [sp, 0x2c] | var_2ch_2 = r7;
| label_18:
0x000988bc ldr r3, [sp, 0x2c] | r3 = var_2ch_2;
0x000988be str r3, [sp, 0x44] | var_44h = r3;
| if (r3 != 0) {
0x000988c0 cbz r3, 0x988ce |
| label_1:
0x000988c2 ldr r2, [sp, 0x2c] | r2 = var_2ch_2;
0x000988c4 ldr r3, [r2] | r3 = *(r2);
0x000988c6 subs r3, 1 | r3--;
0x000988c8 cmp r3, 0 |
0x000988ca str r3, [r2] | *(r2) = r3;
| if (r3 <= 0) {
0x000988cc ble 0x9891c | goto label_27;
| }
| }
0x000988ce ldr.w r2, [pc, 0x51c] | r2 = *(0x00098dec);
0x000988d2 ldr.w r3, [pc, 0x514] | r3 = *(0x98dea);
0x000988d6 add r2, pc | r2 += pc;
0x000988d8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000988da ldr r2, [r3] | r2 = *(0x98dea);
0x000988dc ldr r3, [sp, 0xbc] | r3 = var_bch;
0x000988de eors r2, r3 | r2 ^= r3;
0x000988e0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000988e4 bne.w 0x98dde | goto label_28;
| }
0x000988e8 add sp, 0xc4 |
0x000988ea pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000988ee mov r2, r7 | r2 = r7;
0x000988f0 mov r1, r4 | r1 = r4;
0x000988f2 mov r0, fp | r0 = fp;
0x000988f4 bl 0x48148 | fcn_00048148 (r0, r1, r2);
0x000988f8 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x000988fc cmp r3, 0 |
0x000988fe bne 0x988ba |
| }
0x00098900 add.w r3, r4, r4, lsl 1 | r3 = r4 + (r4 << 1);
0x00098904 add.w r3, r7, r3, lsl 2 | r3 = r7 + (r3 << 2);
0x00098908 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0009890a cmp r5, r3 |
| if (r5 <= r3) {
0x0009890c ble 0x988a4 | goto label_0;
| }
| label_26:
0x0009890e mov r1, r7 | r1 = r7;
0x00098910 mov r0, fp | r0 = fp;
0x00098912 str r7, [sp, 0x2c] | var_2ch_2 = r7;
0x00098914 str r7, [sp, 0x44] | var_44h = r7;
0x00098916 bl 0x850ec | fcn_000850ec (r0, r1);
0x0009891a b 0x988c2 | goto label_1;
| label_27:
0x0009891c ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x0009891e cmp r3, 0 |
| if (r3 <= 0) {
0x00098920 ble 0x98938 | goto label_29;
| }
0x00098922 ldr r6, [sp, 0x2c] | r6 = var_2ch_2;
0x00098924 movs r4, 0 | r4 = 0;
0x00098926 mov r5, r6 | r5 = r6;
| do {
0x00098928 ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x0009892a adds r4, 1 | r4++;
0x0009892c blx 0x84f8 | fcn_000084f8 ();
0x00098930 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00098932 adds r5, 0xc | r5 += 0xc;
0x00098934 cmp r4, r3 |
0x00098936 blt 0x98928 |
| } while (r4 < r3);
| label_29:
0x00098938 ldr.w r2, [pc, 0x4b4] |
0x0009893c ldr.w r3, [pc, 0x4a8] | r3 = *(0x98de8);
0x00098940 add r2, pc | r2 = 0x131734;
0x00098942 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00098944 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00098946 ldr r3, [sp, 0xbc] | r3 = var_bch;
0x00098948 eors r2, r3 | r2 ^= r3;
0x0009894a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009894e bne.w 0x98dde | goto label_28;
| }
0x00098952 ldr r0, [sp, 0x2c] | r0 = var_2ch_2;
0x00098954 add sp, 0xc4 |
0x00098956 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009895a b.w 0x84f4 | void (*0x84f4)() ();
| label_25:
0x0009895e ldr r3, [sp, 0x2c] | r3 = var_2ch_2;
0x00098960 ldr.w r7, [fp, 8] | r7 = *(arg_8h);
0x00098964 ldr.w r8, [r3, 8] | r8 = *((r3 + 8));
0x00098968 ldr.w sb, [r3, 0xc] | sb = *((r3 + 0xc));
0x0009896c mov r2, r7 | r2 = r7;
0x0009896e adds.w r0, r5, r8 | r0 = r5 + r8;
0x00098972 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x00098974 adc.w r1, sb, r5, asr 31 | __asm ("adc.w r1, sb, r5, asr 31");
0x00098978 asrs r5, r7, 0x1f | r5 = r7 >> 0x1f;
0x0009897a str r1, [r3, 0xc] | *((r3 + 0xc)) = r1;
0x0009897c mov r3, r5 | r3 = r5;
0x0009897e bl 0xac1dc | fcn_000ac1dc (r0, r1, r2, r3);
0x00098982 mov r3, r5 | r3 = r5;
0x00098984 mov r4, r0 | r4 = r0;
0x00098986 mov r2, r7 | r2 = r7;
0x00098988 mov r0, r8 | r0 = r8;
0x0009898a mov r1, sb | r1 = sb;
0x0009898c bl 0xac1dc | fcn_000ac1dc (r0, r1, r2, r3);
0x00098990 ldr r3, [sp, 0x2c] | r3 = var_2ch_2;
0x00098992 subs r4, r4, r0 | r4 -= r0;
0x00098994 mul r2, r7, r4 | r2 = r7 * r4;
0x00098998 mov r0, fp | r0 = fp;
0x0009899a ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x0009899c mov r3, r6 | r3 = r6;
0x0009899e mul r2, r1, r2 | r2 = r1 * r2;
0x000989a2 add r1, sp, 0x44 | r1 += var_44h;
0x000989a4 bl 0x98728 | fcn_00098728 (r0, r1, r2);
0x000989a8 ldr r2, [sp, 0x44] | r2 = var_44h;
0x000989aa ldr.w r4, [fp, 0x24] | r4 = *(arg_24h);
0x000989ae ldr.w r3, [fp] | r3 = *(fp);
0x000989b2 str r2, [sp, 0x2c] | var_2ch_2 = r2;
0x000989b4 b 0x9888c | goto label_2;
| label_23:
0x000989b6 bl 0xf840 | fcn_0000f840 (r0);
0x000989ba ldr.w r4, [fp, 0x50] | r4 = *(arg_50h);
0x000989be str r0, [sp, 0x3c] | var_3ch = r0;
0x000989c0 cmp r4, 0 |
| if (r4 == 0) {
0x000989c2 beq.w 0x98dcc | goto label_30;
| }
0x000989c6 ldr r3, [r4] | r3 = *(r4);
0x000989c8 subs r3, 1 | r3--;
0x000989ca cmp r3, 0 |
0x000989cc str r3, [r4] | *(r4) = r3;
| if (r3 <= 0) {
0x000989ce ble.w 0x98d94 | goto label_31;
| }
| label_19:
0x000989d2 movs r3, 0 | r3 = 0;
0x000989d4 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
0x000989d8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000989da cmp r3, 0 |
| if (r3 == 0) {
0x000989dc beq.w 0x9886c | goto label_3;
| }
| label_21:
0x000989e0 ldr.w r3, [fp] | r3 = *(fp);
0x000989e4 add r2, sp, 0x58 | r2 += var_58h_2;
0x000989e6 mov r1, r2 | r1 = r2;
0x000989e8 str r2, [sp, 0x1c] | var_1ch_2 = r2;
0x000989ea mov r0, fp | r0 = fp;
0x000989ec ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000989ee ldr r4, [r3, 0x4c] | r4 = *((r3 + 0x4c));
0x000989f0 ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x000989f2 str r4, [sp] | *(sp) = r4;
0x000989f4 str r3, [sp, 0x28] | var_28h = r3;
0x000989f6 bl 0x7938c | fcn_0007938c (r0, r1, r2);
0x000989fa ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x000989fe cmp r2, 0 |
| if (r2 == 0) {
0x00098a00 beq.w 0x98db8 | goto label_32;
| }
| label_20:
0x00098a04 add r3, sp, 0x4c | r3 += var_4ch;
0x00098a06 str r3, [sp, 0x38] | var_38h = r3;
0x00098a08 cmp r2, 0 |
| if (r2 != 0) {
0x00098a0a bne 0x98a86 | goto label_16;
| }
0x00098a0c ldr r3, [sp, 0x30] | r3 = var_30h_2;
0x00098a0e ldr r6, [r3, 0x10] | r6 = *((r3 + 0x10));
0x00098a10 cmp r6, 0 |
| if (r6 == 0) {
0x00098a12 beq 0x98a86 | goto label_16;
| }
| do {
0x00098a14 add.w r4, r6, 0x28 | r4 = r6 + 0x28;
0x00098a18 mov r0, r4 | r0 = r4;
0x00098a1a blx 0x8160 | fcn_00008160 ();
0x00098a1e movs r2, 0 | r2 = 0;
0x00098a20 mov r5, r0 | r5 = r0;
0x00098a22 mov r1, r6 | r1 = r6;
0x00098a24 ldr r0, [sp, 0x30] | r0 = var_30h_2;
0x00098a26 bl 0x1ef60 | fcn_0001ef60 (r0, r1, r2);
0x00098a2a ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00098a2c mov r0, r4 | r0 = r4;
0x00098a2e subs r3, 0x29 | r3 -= 0x29;
0x00098a30 subs r3, r3, r5 | r3 -= r5;
0x00098a32 adds r5, 1 | r5++;
0x00098a34 str r3, [sp, 0x18] | var_18h = r3;
0x00098a36 adds r3, r4, r5 | r3 = r4 + r5;
0x00098a38 str r3, [sp, 0xc] | var_ch_2 = r3;
0x00098a3a blx 0x8160 | fcn_00008160 ();
0x00098a3e ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00098a40 mov r2, r0 | r2 = r0;
0x00098a42 mov r3, r4 | r3 = r4;
0x00098a44 mov r0, fp | r0 = fp;
0x00098a46 bl 0x85494 | fcn_00085494 (r0, r1, r2, r3);
0x00098a4a ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
| if (r2 != 0) {
0x00098a4e cbnz r2, 0x98a86 | goto label_16;
| }
0x00098a50 ldr r4, [sp, 0x68] | r4 = var_68h;
0x00098a52 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00098a54 ldr r5, [sp, 0x18] | r5 = var_18h;
0x00098a56 ldr r1, [sp] | r1 = *(sp);
0x00098a58 add r3, r4 | r3 += r4;
0x00098a5a add r3, r5 | r3 += r5;
0x00098a5c cmp r1, r3 |
| if (r1 <= r3) {
0x00098a5e ble 0x98aae | goto label_33;
| }
0x00098a60 ldr r0, [sp, 0x64] | r0 = var_64h;
0x00098a62 mov r2, r5 | r2 = r5;
0x00098a64 ldr r1, [sp, 0xc] | r1 = var_ch_2;
0x00098a66 add r0, r4 | r0 += r4;
0x00098a68 add r4, r5 | r4 += r5;
0x00098a6a blx 0x7dcc | fcn_00007dcc ();
0x00098a6e ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00098a72 str r4, [sp, 0x68] | var_68h = r4;
| if (r3 != 0) {
| label_15:
0x00098a74 cbnz r3, 0x98a86 | goto label_16;
| }
| label_5:
0x00098a76 ldr r2, [sp, 0x30] | r2 = var_30h_2;
0x00098a78 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00098a7a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00098a7c str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00098a7e ldr r3, [sp, 0x30] | r3 = var_30h_2;
0x00098a80 ldr r6, [r3, 0x10] | r6 = *((r3 + 0x10));
0x00098a82 cmp r6, 0 |
0x00098a84 bne 0x98a14 |
| } while (r6 != 0);
| label_16:
0x00098a86 ldr r0, [sp, 0x30] | r0 = var_30h_2;
0x00098a88 bl 0xe31c | fcn_0000e31c (r0);
0x00098a8c ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00098a8e add r2, sp, 0x48 | r2 += var_48h;
0x00098a90 mov r0, fp | r0 = fp;
0x00098a92 bl 0x856b4 | fcn_000856b4 (r0, r1, r2);
0x00098a96 ldr r3, [sp, 0x2c] | r3 = var_2ch_2;
0x00098a98 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00098a9a cmp r3, 0 |
| if (r3 != 0) {
0x00098a9c bne.w 0x98d20 | goto label_34;
| }
0x00098aa0 ldr.w r4, [fp, 0x24] | r4 = *(arg_24h);
0x00098aa4 cmp r4, 0 |
| if (r4 == 0) {
0x00098aa6 beq.w 0x98d12 | goto label_35;
| }
| label_17:
0x00098aaa ldr r5, [sp, 0x48] | r5 = var_48h;
0x00098aac b 0x98872 | goto label_4;
| label_33:
0x00098aae ldr r3, [sp, 0x18] | r3 = var_18h;
0x00098ab0 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00098ab4 cmp r3, 0 |
0x00098ab6 vstr d16, [sp, 0x50] | __asm ("vstr d16, [sp, 0x50]");
| if (r3 <= 0) {
0x00098aba ble 0x98a76 | goto label_5;
| }
0x00098abc add r3, sp, 0x50 | r3 += arg_50h;
0x00098abe str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h_2]");
0x00098ac2 mov sb, r2 | sb = r2;
0x00098ac4 ldr.w fp, [sp, 0x38] | fp = var_38h;
0x00098ac8 str r3, [sp, 0x24] | *(arg_24h) = r3;
0x00098aca strd r2, r2, [sp, 0x10] | __asm ("strd r2, r2, [sp, 0x10]");
0x00098ace b 0x98b80 |
| while (r7 != 0) {
0x00098ad0 ubfx r3, r4, 8, 8 | r3 = (r4 >> 8) & ((1 << 8) - 1);
0x00098ad4 cmp r6, 0x80 |
0x00098ad6 strb r3, [r1] | *(r1) = r3;
0x00098ad8 mov r3, r5 | r3 = r5;
0x00098ada sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x00098ade strb r4, [r1, 1] | *((r1 + 1)) = r4;
0x00098ae0 itt lo |
| if (r6 >= 0x80) {
0x00098ae2 strblo r6, [r0] | *(r0) = r6;
| }
| if (r6 >= 0x80) {
0x00098ae4 movlo r0, 1 | r0 = 1;
| }
| if (r6 > 0x80) {
0x00098ae6 blo 0x98afe |
0x00098ae8 cmp.w r6, 0x4000 |
0x00098aec mov r3, r5 | r3 = r5;
0x00098aee sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x00098af2 mov r2, r6 | r2 = r6;
| if (r6 <= 0x4000) {
0x00098af4 blo.w 0x98cda | goto label_36;
| }
0x00098af8 mov r3, r5 | r3 = r5;
0x00098afa bl 0x8c4c | fcn_00008c4c (r0, r1, r2);
| }
| label_13:
0x00098afe add r0, r4 | r0 += r4;
0x00098b00 ldr r4, [sp, 4] | r4 = var_4h_2;
0x00098b02 movs r1, 0 | r1 = 0;
0x00098b04 mov r3, r5 | r3 = r5;
0x00098b06 str r0, [sp, 0x68] | var_68h = r0;
0x00098b08 mov r2, r6 | r2 = r6;
0x00098b0a strb.w r1, [sp, 0x91] | var_91h = r1;
0x00098b0e mov r0, r4 | r0 = r4;
0x00098b10 ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00098b12 bl 0x84d98 | fcn_00084d98 (r0, r1, r2, r3);
0x00098b16 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00098b18 cmp r3, 0 |
| if (r3 != 0) {
0x00098b1a bne.w 0x98d0c | goto label_37;
| }
0x00098b1e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00098b20 ldr r4, [sp, 0x68] | r4 = var_68h;
0x00098b22 cmp r3, 1 |
| if (r3 != 1) {
0x00098b24 bne 0x98bd4 | goto label_38;
| }
| label_6:
0x00098b26 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00098b28 cmp sb, r0 |
| if (sb < r0) {
0x00098b2a bge 0x98b58 |
0x00098b2c ldr r5, [sp, 0xc] | r5 = var_ch_2;
0x00098b2e ldrb.w r3, [r5, sb] | r3 = *((r5 + sb));
| if (r3 != 0) {
0x00098b32 cbnz r3, 0x98b58 | goto label_14;
| }
0x00098b34 ldr r1, [sp, 0x64] | r1 = var_64h;
0x00098b36 adds r2, r4, 1 | r2 = r4 + 1;
0x00098b38 str r2, [sp, 0x68] | var_68h = r2;
0x00098b3a strb r3, [r1, r4] | *((r1 + r4)) = r3;
0x00098b3c add.w r3, sb, 1 | r3 = sb + 1;
0x00098b40 cmp r3, r0 |
| if (r3 >= r0) {
0x00098b42 bge.w 0x98d00 | goto label_39;
| }
0x00098b46 ldrb r0, [r5, r3] | r0 = *((r5 + r3));
0x00098b48 cmp r0, 0 |
| if (r0 != 0) {
0x00098b4a bne.w 0x98d00 | goto label_39;
| }
0x00098b4e add.w sb, sb, 2 | sb += 2;
0x00098b52 adds r4, 2 | r4 += 2;
0x00098b54 strb r0, [r1, r2] | *((r1 + r2)) = r0;
0x00098b56 str r4, [sp, 0x68] | var_68h = r4;
| }
| label_14:
0x00098b58 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00098b5a ldr r2, [sp] | r2 = *(sp);
0x00098b5c add r3, r4 | r3 += r4;
0x00098b5e cmp r2, r3 |
| if (r2 <= r3) {
0x00098b60 ble.w 0x98cae | goto label_40;
| }
0x00098b64 ldr r3, [sp, 4] | r3 = var_4h_2;
0x00098b66 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
| label_7:
0x00098b68 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00098b6a cmp r2, sb |
0x00098b6c ite le |
| if (r2 > sb) {
0x00098b6e movle r2, 0 | r2 = 0;
| }
| if (r2 <= sb) {
0x00098b70 movgt r2, 1 | r2 = 1;
| }
0x00098b72 cmp r3, 0 |
0x00098b74 it ne |
| if (r3 == 0) {
0x00098b76 movne r2, 0 | r2 = 0;
| }
0x00098b78 cmp r2, 0 |
| if (r2 == 0) {
0x00098b7a beq.w 0x98d06 | goto label_41;
| }
0x00098b7e ldr r4, [sp, 0x68] | r4 = var_68h;
0x00098b80 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x00098b82 ldr r1, [sp, 0x24] | r1 = *(arg_24h);
0x00098b84 add.w r0, r3, sb | r0 = r3 + sb;
0x00098b88 bl 0xbaf0 | fcn_0000baf0 (r0, r1);
0x00098b8c ldr r3, [sp, 0x10] | r3 = var_10h;
0x00098b8e add sb, r0 | sb += r0;
0x00098b90 ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x00098b92 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00098b94 ldrb.w r7, [sp, 0x91] | r7 = var_91h;
0x00098b98 adds r6, r3, r2 | r6 = r3 + r2;
0x00098b9a ldr r3, [sp, 0x54] | r3 = var_54h_2;
0x00098b9c str r6, [sp, 0x10] | var_10h = r6;
0x00098b9e adc.w r5, r3, r1 | __asm ("adc.w r5, r3, r1");
0x00098ba2 ldr r1, [sp, 0x64] | r1 = var_64h;
0x00098ba4 str r5, [sp, 0x14] | var_14h = r5;
0x00098ba6 adds r0, r1, r4 | r0 = r1 + r4;
0x00098ba8 cmp r7, 0 |
0x00098baa bne 0x98ad0 |
| }
0x00098bac cmp r2, 0x80 |
0x00098bae sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x00098bb2 itt lo |
| if (r2 >= 0x80) {
0x00098bb4 strblo r2, [r0] | *(r0) = r2;
| }
| if (r2 >= 0x80) {
0x00098bb6 movlo r0, 1 | r0 = 1;
| }
| if (r2 > 0x80) {
0x00098bb8 blo 0x98bca |
0x00098bba cmp.w r2, 0x4000 |
0x00098bbe sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 <= 0x4000) {
0x00098bc2 blo.w 0x98cc8 | goto label_42;
| }
0x00098bc6 bl 0x8c4c | fcn_00008c4c (r0, r1, r2);
| }
| label_12:
0x00098bca ldr r3, [sp, 0x28] | r3 = var_28h;
0x00098bcc add r4, r0 | r4 += r0;
0x00098bce str r4, [sp, 0x68] | var_68h = r4;
0x00098bd0 cmp r3, 1 |
| if (r3 == 1) {
0x00098bd2 beq 0x98b26 | goto label_6;
| }
| label_38:
0x00098bd4 ldr r2, [sp, 0xc] | r2 = var_ch_2;
0x00098bd6 ldrb.w r3, [r2, sb] | r3 = *((r2 + sb));
0x00098bda add r2, sb | r2 += sb;
0x00098bdc str r2, [sp, 8] | *(arg_8h) = r2;
0x00098bde lsls r1, r3, 0x18 | r1 = r3 << 0x18;
0x00098be0 str r3, [sp, 0x4c] | var_4ch = r3;
0x00098be2 it pl |
| if (r1 < r3) {
0x00098be4 movpl r0, 1 | r0 = 1;
| }
| if (r1 < r3) {
0x00098be6 bmi 0x98cbc | goto label_43;
| }
| label_11:
0x00098be8 add.w r3, r3, r3, lsr 31 | r3 += (r3 >> 31);
0x00098bec ldr r2, [sp] | r2 = *(sp);
0x00098bee add.w r7, r0, r3, asr 1 | r7 = r0 + (r3 >> 1);
0x00098bf2 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00098bf4 add r3, r4 | r3 += r4;
0x00098bf6 add r3, r7 | r3 += r7;
0x00098bf8 cmp r2, r3 |
| if (r2 >= r3) {
0x00098bfa blt 0x98c14 |
0x00098bfc ldr r0, [sp, 0x64] | r0 = var_64h;
0x00098bfe mov r2, r7 | r2 = r7;
0x00098c00 ldr r1, [sp, 8] | r1 = *(arg_8h);
0x00098c02 add sb, r7 | sb += r7;
0x00098c04 add r0, r4 | r0 += r4;
0x00098c06 add r4, r7 | r4 += r7;
0x00098c08 blx 0x7dcc | fcn_00007dcc ();
0x00098c0c ldr r3, [sp, 4] | r3 = var_4h_2;
0x00098c0e str r4, [sp, 0x68] | var_68h = r4;
0x00098c10 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x00098c12 b 0x98b68 | goto label_7;
| }
0x00098c14 mov.w r8, 0 | r8 = 0;
0x00098c18 str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h_2]");
0x00098c1c b 0x98c44 |
| while (sl >= r4) {
0x00098c1e ldr r0, [sp, 0x64] | r0 = var_64h;
0x00098c20 mov r2, r4 | r2 = r4;
0x00098c22 mov r1, sb | r1 = sb;
0x00098c24 add r4, r6 | r4 += r6;
0x00098c26 add r5, r4 | r5 += r4;
0x00098c28 add r0, r6 | r0 += r6;
0x00098c2a blx 0x7dcc | fcn_00007dcc ();
0x00098c2e ldr r3, [sp] | r3 = *(sp);
0x00098c30 str r4, [sp, 0x68] | var_68h = r4;
0x00098c32 cmp r3, r5 |
| if (r3 > r5) {
0x00098c34 bgt 0x98cf4 | goto label_44;
| }
0x00098c36 mov r8, r7 | r8 = r7;
| label_9:
0x00098c38 ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00098c3a ldr r0, [sp, 4] | r0 = var_4h_2;
0x00098c3c bl 0x84f60 | fcn_00084f60 (r0, r1, r2);
| label_8:
0x00098c40 cmp r8, r7 |
| if (r8 >= r7) {
0x00098c42 bge 0x98cf4 | goto label_44;
| }
0x00098c44 ldr r3, [sp, 4] | r3 = var_4h_2;
0x00098c46 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x00098c48 cmp r3, 0 |
| if (r3 != 0) {
0x00098c4a bne 0x98cec | goto label_45;
| }
0x00098c4c ldr r3, [sp, 8] | r3 = *(arg_8h);
0x00098c4e sub.w r4, r7, r8 | r4 = r7 - r8;
0x00098c52 ldr r6, [sp, 0x68] | r6 = var_68h;
0x00098c54 ldr r5, [sp, 0x74] | r5 = var_74h;
0x00098c56 add.w sb, r3, r8 | sb = r3 + r8;
0x00098c5a ldr r3, [sp] | r3 = *(sp);
0x00098c5c subs r3, r3, r6 | r3 -= r6;
0x00098c5e sub.w sl, r3, r5 | sl = r3 - r5;
0x00098c62 cmp sl, r4 |
0x00098c64 bge 0x98c1e |
| }
0x00098c66 mov r1, fp | r1 = fp;
0x00098c68 mov r0, sb | r0 = sb;
0x00098c6a bl 0xbbf8 | r0 = fcn_0000bbf8 (r0, r1);
0x00098c6e cmp sl, r0 |
0x00098c70 mov r4, r0 | r4 = r0;
0x00098c72 itt le |
| if (sl > r0) {
0x00098c74 movle r2, r0 | r2 = r0;
| }
| if (sl > r0) {
0x00098c76 movle r3, r2 | r3 = r2;
| }
| if (sl > r0) {
0x00098c78 bgt 0x98c98 | goto label_46;
| }
| label_10:
0x00098c7a ldr r0, [sp, 0x64] | r0 = var_64h;
0x00098c7c mov r1, sb | r1 = sb;
0x00098c7e add r8, r3 | r8 += r3;
0x00098c80 str r3, [sp, 0x20] | var_20h_2 = r3;
0x00098c82 add r0, r6 | r0 += r6;
0x00098c84 blx 0x7dcc | fcn_00007dcc ();
0x00098c88 ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x00098c8a add r6, r3 | r6 += r3;
0x00098c8c ldr r3, [sp] | r3 = *(sp);
0x00098c8e add r5, r6 | r5 += r6;
0x00098c90 str r6, [sp, 0x68] | var_68h = r6;
0x00098c92 cmp r3, r5 |
| if (r3 > r5) {
0x00098c94 bgt 0x98c40 | goto label_8;
| }
0x00098c96 b 0x98c38 | goto label_9;
| do {
| label_46:
0x00098c98 add.w r0, sb, r4 | r0 = sb + r4;
0x00098c9c mov r1, fp | r1 = fp;
0x00098c9e bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00098ca2 mov r2, r4 | r2 = r4;
0x00098ca4 mov r3, r4 | r3 = r4;
0x00098ca6 add r4, r0 | r4 += r0;
0x00098ca8 cmp sl, r4 |
0x00098caa bge 0x98c98 |
| } while (sl >= r4);
0x00098cac b 0x98c7a | goto label_10;
| label_40:
0x00098cae ldr r4, [sp, 4] | r4 = var_4h_2;
0x00098cb0 ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00098cb2 mov r0, r4 | r0 = r4;
0x00098cb4 bl 0x84f60 | fcn_00084f60 (r0, r1, r2);
0x00098cb8 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00098cba b 0x98b68 | goto label_7;
| label_43:
0x00098cbc mov r1, fp | r1 = fp;
0x00098cbe mov r0, r2 | r0 = r2;
0x00098cc0 bl 0xbbf8 | fcn_0000bbf8 (r0, r1);
0x00098cc4 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00098cc6 b 0x98be8 | goto label_11;
| label_42:
0x00098cc8 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x00098cca and r2, r2, 0x7f | r2 &= 0x7f;
0x00098cce strb r2, [r0, 1] | *((r0 + 1)) = r2;
0x00098cd0 orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00098cd4 strb r3, [r0] | *(r0) = r3;
0x00098cd6 movs r0, 2 | r0 = 2;
0x00098cd8 b 0x98bca | goto label_12;
| label_36:
0x00098cda lsrs r3, r6, 7 | r3 = r6 >> 7;
0x00098cdc orn r3, r3, 0x7f | r3 |= 0x7f;
| r3 = ~r3;
0x00098ce0 strb r3, [r0] | *(r0) = r3;
0x00098ce2 and r3, r6, 0x7f | r3 = r6 & 0x7f;
0x00098ce6 strb r3, [r0, 1] | *((r0 + 1)) = r3;
0x00098ce8 movs r0, 2 | r0 = 2;
0x00098cea b 0x98afe | goto label_13;
| label_45:
0x00098cec ldr.w sb, [sp, 0x34] | sb = var_34h_2;
0x00098cf0 add sb, r7 | sb += r7;
0x00098cf2 b 0x98b68 | goto label_7;
| label_44:
0x00098cf4 ldr.w sb, [sp, 0x34] | sb = var_34h_2;
0x00098cf8 ldr r3, [sp, 4] | r3 = var_4h_2;
0x00098cfa add sb, r7 | sb += r7;
0x00098cfc ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x00098cfe b 0x98b68 | goto label_7;
| label_39:
0x00098d00 mov r4, r2 | r4 = r2;
0x00098d02 mov sb, r3 | sb = r3;
0x00098d04 b 0x98b58 | goto label_14;
| label_41:
0x00098d06 ldr.w fp, [sp, 4] | fp = var_4h_2;
0x00098d0a b 0x98a74 | goto label_15;
| label_37:
0x00098d0c ldr.w fp, [sp, 4] | fp = var_4h_2;
0x00098d10 b 0x98a86 | goto label_16;
| label_35:
0x00098d12 add r1, sp, 0x44 | r1 += var_44h;
0x00098d14 add.w r0, fp, 0x24 | r0 += arg_24h;
0x00098d18 bl 0x4737c | fcn_0004737c (r0, r1);
0x00098d1c ldr r3, [sp, 0x44] | r3 = var_44h;
0x00098d1e str r3, [sp, 0x2c] | var_2ch_2 = r3;
| label_34:
0x00098d20 ldr.w r4, [fp, 0x24] | r4 = *(arg_24h);
0x00098d24 cmp r4, 0 |
| if (r4 != 0) {
0x00098d26 bne.w 0x98aaa | goto label_17;
| }
0x00098d2a ldr r5, [sp, 0x2c] | r5 = var_2ch_2;
0x00098d2c mov r3, r4 | r3 = r4;
0x00098d2e ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x00098d30 ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x00098d32 adds r2, 1 | r2++;
0x00098d34 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00098d38 lsls r2, r2, 2 | r2 <<= 2;
0x00098d3a blx 0x8638 | r0 = fcn_00008638 ();
0x00098d3e cmp r0, 0 |
| if (r0 == 0) {
0x00098d40 beq 0x98dd6 | goto label_47;
| }
0x00098d42 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00098d44 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00098d48 lsls r3, r3, 2 | r3 <<= 2;
0x00098d4a str r4, [r0, r3] | *((r0 + r3)) = r4;
0x00098d4c add r3, r0 | r3 += r0;
0x00098d4e str r4, [r3, 4] | *((r3 + 4)) = r4;
0x00098d50 str r4, [r3, 8] | *((r3 + 8)) = r4;
0x00098d52 ldr.w r4, [fp, 0x24] | r4 = *(arg_24h);
0x00098d56 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00098d58 ldr r5, [sp, 0x48] | r5 = var_48h;
0x00098d5a cmp r4, 0 |
| if (r4 != 0) {
0x00098d5c bne.w 0x988bc | goto label_18;
| }
0x00098d60 ldr r6, [sp, 0x2c] | r6 = var_2ch_2;
0x00098d62 mov r1, r4 | r1 = r4;
0x00098d64 ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00098d66 ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x00098d68 adds r4, r2, 1 | r4 = r2 + 1;
0x00098d6a add.w r2, r3, r3, lsl 1 | r2 = r3 + (r3 << 1);
0x00098d6e adds r3, 1 | r3++;
0x00098d70 str r3, [r6, 0x1c] | *((r6 + 0x1c)) = r3;
0x00098d72 lsls r3, r2, 2 | r3 = r2 << 2;
0x00098d74 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00098d76 str r2, [r0, r3] | *((r0 + r3)) = r2;
0x00098d78 add r0, r3 | r0 += r3;
0x00098d7a movs r3, 1 | r3 = 1;
0x00098d7c str r5, [r0, 8] | *((r0 + 8)) = r5;
0x00098d7e str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00098d80 mov r2, r6 | r2 = r6;
0x00098d82 str r4, [r6, 0x10] | *((r6 + 0x10)) = r4;
0x00098d84 mov r0, fp | r0 = fp;
0x00098d86 bl 0x48148 | fcn_00048148 (r0, r1, r2);
0x00098d8a ldr.w r4, [fp, 0x24] | r4 = *(arg_24h);
0x00098d8e b 0x98872 | goto label_4;
| label_24:
0x00098d90 movs r3, 0 | r3 = 0;
0x00098d92 str r3, [sp, 0x3c] | var_3ch = r3;
| label_31:
0x00098d94 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00098d96 cmp r3, 0 |
0x00098d98 itt gt |
| if (r3 <= 0) {
0x00098d9a movgt r6, r4 | r6 = r4;
| }
| if (r3 <= 0) {
0x00098d9c movgt r5, 0 | r5 = 0;
| }
| if (r3 <= 0) {
0x00098d9e ble 0x98db0 | goto label_48;
| }
| do {
0x00098da0 ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x00098da2 adds r5, 1 | r5++;
0x00098da4 blx 0x84f8 | fcn_000084f8 ();
0x00098da8 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00098daa adds r6, 0xc | r6 += 0xc;
0x00098dac cmp r5, r3 |
0x00098dae blt 0x98da0 |
| } while (r5 < r3);
| label_48:
0x00098db0 mov r0, r4 | r0 = r4;
0x00098db2 blx 0x84f8 | fcn_000084f8 ();
0x00098db6 b 0x989d2 | goto label_19;
| label_32:
0x00098db8 ldr r0, [sp, 0x30] | r0 = var_30h_2;
0x00098dba mov r1, r2 | r1 = r2;
0x00098dbc mov r3, r0 | r3 = r0;
0x00098dbe adds r3, 0x10 | r3 += 0x10;
0x00098dc0 bl 0x3f300 | r0 = fcn_0003f300 (r0, r1, r2, r3, r4, r5);
0x00098dc4 mov r2, r0 | r2 = r0;
0x00098dc6 str.w r0, [fp, 0x24] | __asm ("str.w r0, [arg_24h]");
0x00098dca b 0x98a04 | goto label_20;
| label_30:
0x00098dcc ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x00098dce cmp r5, 0 |
| if (r5 != 0) {
0x00098dd0 bne.w 0x989e0 | goto label_21;
| }
0x00098dd4 b 0x98874 | goto label_22;
| label_47:
0x00098dd6 movs r3, 7 | r3 = 7;
0x00098dd8 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
0x00098ddc b 0x988bc | goto label_18;
| label_28:
0x00098dde blx 0x7e8c | fcn_00007e8c ();
0x00098de2 nop |
0x00098de4 strb r0, [r6, r1] | *((r6 + r1)) = r0;
0x00098de6 movs r3, r0 | r3 = r0;
0x00098de8 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x00098dea movs r0, r0 |
0x00098dec strh r2, [r7, r6] | *((r7 + r6)) = r2;
0x00098dee movs r3, r0 | r3 = r0;
0x00098df0 strh r0, [r2, r5] | *((r2 + r5)) = r0;
0x00098df2 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9913c */
| #include <stdint.h>
|
; (fcn) fcn.0009913c () | void fcn_0009913c (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int32_t var_20h_2;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0009913c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00099140 mov fp, r2 |
0x00099142 sub sp, 0x34 |
0x00099144 ldr r2, [pc, 0x14c] |
0x00099146 mov r5, r0 | r5 = r0;
0x00099148 mov r8, r1 | r8 = r1;
0x0009914a str r3, [sp, 0xc] | var_ch = r3;
0x0009914c add r6, sp, 0x20 | r6 += var_20h;
0x0009914e ldr r3, [pc, 0x148] | r3 = *(0x9929a);
0x00099150 add r2, pc | r2 = 0x1323e8;
0x00099152 ldr r7, [r0, 8] | r7 = *((r0 + 8));
0x00099154 ldr r4, [r0] | r4 = *(r0);
0x00099156 ldr r3, [r2, r3] |
0x00099158 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009915a str r3, [sp, 0x2c] | var_2ch = r3;
0x0009915c mov.w r3, 0 | r3 = 0;
0x00099160 movs r3, 0 | r3 = 0;
0x00099162 str r0, [sp, 0x14] | var_14h = r0;
0x00099164 strd r3, r3, [sp, 0x20] | __asm ("strd r3, r3, [var_20h]");
0x00099168 str r3, [sp, 0x28] | var_28h = r3;
0x0009916a cmp r7, 0 |
| if (r7 == 0) {
0x0009916c beq 0x99268 | goto label_4;
| }
| label_1:
0x0009916e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00099170 mov r2, fp | r2 = fp;
0x00099172 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00099174 movs r1, 0 | r1 = 0;
0x00099176 bl 0x98df4 | r0 = fcn_00098df4 (r0, r1, r2, r3);
0x0009917a mov r3, r0 | r3 = r0;
0x0009917c str r0, [sp, 0x10] | var_10h = r0;
0x0009917e movs r0, 0 | r0 = 0;
0x00099180 mov r2, r3 | r2 = r3;
0x00099182 str r0, [sp, 0x18] | var_18h = r0;
0x00099184 cmp r3, 0 |
| if (r3 != 0) {
0x00099186 bne 0x9921e | goto label_2;
| }
0x00099188 ldr r2, [pc, 0x110] |
0x0009918a mov r7, r3 | r7 = r3;
0x0009918c add.w sl, sp, 0x14 | sl += var_14h;
0x00099190 add r2, pc | r2 = 0x132430;
0x00099192 str r2, [sp, 8] | var_8h = r2;
0x00099194 b 0x991cc |
| while (r2 != 0) {
0x00099196 movs r2, 0 | r2 = 0;
0x00099198 mov r3, r2 | r3 = r2;
| label_0:
0x0009919a mov r1, r6 | r1 = r6;
0x0009919c add r0, sp, 0x10 | r0 += var_10h;
0x0009919e bl 0x48768 | fcn_00048768 (r0, r1, r2, r3);
0x000991a2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000991a4 ldr.w ip, [r5, 0x18] | ip = *((r5 + 0x18));
0x000991a8 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000991aa ldr.w r2, [ip, r3, lsl 3] | offset_0 = r3 << 3;
| r2 = *((ip + offset_0));
0x000991ae add.w r0, ip, r3, lsl 3 | r0 = ip + (r3 << 3);
0x000991b2 ldr.w lr, [r0, 4] |
0x000991b6 adds r2, r2, r1 | r2 += r1;
0x000991b8 str.w r2, [ip, r3, lsl 3] | __asm ("str.w r2, [ip, r3, lsl 3]");
0x000991bc add.w r3, r3, 1 | r3++;
0x000991c0 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000991c2 adc.w r1, lr, r1, asr 31 | __asm ("adc.w r1, lr, r1, asr 31");
0x000991c6 str r1, [r0, 4] | *((r0 + 4)) = r1;
0x000991c8 str r3, [sp, 0x18] | var_18h = r3;
| if (r2 != 0) {
0x000991ca cbnz r2, 0x9921c | goto label_5;
| }
0x000991cc ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000991ce cmp r2, r3 |
| if (r2 <= r3) {
0x000991d0 ble 0x99250 | goto label_6;
| }
0x000991d2 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x000991d4 str r7, [sp, 0x1c] | var_1ch = r7;
0x000991d6 ldrb r2, [r2, r3] | r2 = *((r2 + r3));
0x000991d8 cmp r2, 0 |
0x000991da bne 0x99196 |
| }
0x000991dc adds r3, 2 | r3 += 2;
0x000991de ldr.w r0, [r8, r3, lsl 2] | offset_1 = r3 << 2;
| r0 = *((r8 + offset_1));
0x000991e2 blx 0x8508 | fcn_00008508 ();
0x000991e6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000991e8 mov sb, r0 | sb = r0;
0x000991ea adds r3, 2 | r3 += 2;
0x000991ec ldr.w r0, [r8, r3, lsl 2] | offset_2 = r3 << 2;
| r0 = *((r8 + offset_2));
0x000991f0 blx 0x8448 | r0 = fcn_00008448 ();
0x000991f4 mov r2, r0 | r2 = r0;
0x000991f6 mov r0, sb | r0 = sb;
0x000991f8 cmp.w sb, 0 |
| if (sb != 0) {
0x000991fc beq 0x99214 |
0x000991fe ldrd r0, r1, [r4, 0x38] | __asm ("ldrd r0, r1, [r4, 0x38]");
0x00099202 mov r3, sb | r3 = sb;
0x00099204 str r2, [sp] | *(sp) = r2;
0x00099206 ldr r2, [sp, 8] | r2 = var_8h;
0x00099208 str r2, [sp, 4] | var_4h = r2;
0x0009920a movs r2, 4 | r2 = 4;
0x0009920c ldr.w sb, [r1, 8] | sb = *((r1 + 8));
0x00099210 mov r1, sl | r1 = sl;
0x00099212 blx sb | sb (r0, r1, r2, r3);
| }
0x00099214 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00099216 str r0, [sp, 0x10] | var_10h = r0;
0x00099218 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0009921a b 0x9919a | goto label_0;
| label_5:
0x0009921c ldr r0, [sp, 0x20] | r0 = var_20h;
| label_2:
0x0009921e ldrd r3, r1, [r5, 0x10] | __asm ("ldrd r3, r1, [r5, 0x10]");
0x00099222 adds r3, 1 | r3++;
0x00099224 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00099228 strd r3, r1, [r5, 0x10] | __asm ("strd r3, r1, [r5, 0x10]");
| do {
0x0009922c str r2, [sp, 8] | var_8h = r2;
0x0009922e blx 0x84f8 | fcn_000084f8 ();
0x00099232 ldr r1, [pc, 0x6c] |
0x00099234 ldr r3, [pc, 0x60] | r3 = *(0x99298);
0x00099236 ldr r2, [sp, 8] | r2 = var_8h;
0x00099238 add r1, pc | r1 = 0x1324de;
0x0009923a ldr r3, [r1, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009923c ldr r1, [r3] | r1 = imp._ITM_deregisterTMCloneTable;
0x0009923e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00099240 eors r1, r3 | r1 ^= r3;
0x00099242 mov.w r3, 0 | r3 = 0;
| if (r1 != r3) {
0x00099246 bne 0x9928e | goto label_7;
| }
0x00099248 mov r0, r2 | r0 = r2;
0x0009924a add sp, 0x34 |
0x0009924c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x00099250 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00099252 adds r3, 1 | r3++;
0x00099254 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x00099256 ldr r3, [r5] | r3 = *(r5);
0x00099258 ldr r2, [r3, 0x2c] | r2 = *((r3 + 0x2c));
0x0009925a ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0009925c adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00099260 str r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
| if (r2 != 0) {
0x00099262 cbnz r2, 0x9927e | goto label_8;
| }
| label_3:
0x00099264 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00099266 b 0x9922c |
| } while (1);
| label_4:
0x00099268 movs r1, 1 | r1 = 1;
0x0009926a bl 0x94388 | r0 = fcn_00094388 (r0, r1);
0x0009926e mov r2, r0 | r2 = r0;
0x00099270 str r0, [sp, 0x10] | var_10h = r0;
0x00099272 cmp r0, 0 |
| if (r0 == 0) {
0x00099274 beq.w 0x9916e | goto label_1;
| }
0x00099278 mov r0, r7 | r0 = r7;
0x0009927a str r7, [sp, 0x18] | var_18h = r7;
0x0009927c b 0x9921e | goto label_2;
| label_8:
0x0009927e mov r2, fp | r2 = fp;
0x00099280 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00099282 mov r0, r5 | r0 = r5;
0x00099284 str r6, [sp] | *(sp) = r6;
0x00099286 bl 0x86188 | r0 = fcn_00086188 (r0, r1, r2, r3);
0x0009928a mov r2, r0 | r2 = r0;
0x0009928c b 0x99264 | goto label_3;
| label_7:
0x0009928e blx 0x7e8c | fcn_00007e8c ();
0x00099292 nop |
0x00099294 ldr r3, [pc, 0x100] | r3 = *(0x99398);
0x00099296 movs r3, r0 | r3 = r0;
0x00099298 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0009929a movs r0, r0 |
0x0009929c b 0x9910a | return void (*0x9910a)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x996dc */
| #include <stdint.h>
|
; (fcn) fcn.000996dc () | void fcn_000996dc (int16_t arg_88h, int16_t arg_8ch, int16_t arg_90h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_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;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_5ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000996dc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000996e0 sub sp, 0x64 |
0x000996e2 ldr r4, [pc, 0x328] |
0x000996e4 mov r5, r3 | r5 = r3;
0x000996e6 str r3, [sp, 0x1c] | var_1ch = r3;
0x000996e8 ldr r3, [pc, 0x324] | r3 = *(0x99a10);
0x000996ea add r4, pc | r4 = 0x1330fc;
0x000996ec ldr r3, [r4, r3] |
0x000996ee ldr r4, [sp, 0x88] | r4 = *(arg_88h);
0x000996f0 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000996f2 str r3, [sp, 0x5c] | var_5ch = r3;
0x000996f4 mov.w r3, 0 | r3 = 0;
0x000996f8 strd r1, r2, [sp, 0x28] | __asm ("strd r1, r2, [var_28h]");
0x000996fc ldr r2, [sp, 0x8c] | r2 = *(arg_8ch);
0x000996fe ldrb r3, [r5] | r3 = *(r5);
0x00099700 str r0, [sp, 0x38] | var_38h = r0;
0x00099702 str r2, [sp, 0x30] | var_30h = r2;
0x00099704 ldr r2, [sp, 0x90] | r2 = *(arg_90h);
0x00099706 lsls r6, r3, 0x18 | r6 = r3 << 0x18;
0x00099708 it pl |
| if (r6 < r3) {
0x0009970a strpl r3, [sp, 0x44] | var_44h = r3;
| }
0x0009970c str r2, [sp, 0x20] | var_20h = r2;
| if (r6 < r3) {
0x0009970e bmi.w 0x99916 | goto label_14;
| }
| label_5:
0x00099712 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x00099714 add r2, sp, 0x50 | r2 += var_50h;
0x00099716 mov r1, r2 | r1 = r2;
0x00099718 str r2, [sp, 0x3c] | var_3ch = r2;
0x0009971a adds r4, r5, r4 | r4 = r5 + r4;
0x0009971c mov r0, r5 | r0 = r5;
0x0009971e str r4, [sp, 0x18] | var_18h = r4;
0x00099720 bl 0xa5b4 | r0 = fcn_0000a5b4 (r0, r1);
0x00099724 adds r7, r5, r0 | r7 = r5 + r0;
0x00099726 mov r0, r7 | r0 = r7;
0x00099728 bl 0xa5b4 | r0 = fcn_0000a5b4 (r0, r1);
0x0009972c add r7, r0 | r7 += r0;
0x0009972e cmp r4, r7 |
0x00099730 it lo |
| if (r4 < r7) {
0x00099732 movwlo sb, 0x10b | __asm ("movwlo sb, aav.0x000000ff");
| }
| if (r4 <= r7) {
0x00099736 blo.w 0x99850 | goto label_0;
| }
| if (r4 < r7) {
0x0009973a bls.w 0x99956 | goto label_15;
| }
0x0009973e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00099740 subs r2, r3, 0 | r2 = r3 - 0;
0x00099742 it ne |
| if (r2 == r3) {
0x00099744 movne r2, 1 | r2 = 1;
| }
0x00099746 str r2, [sp, 0x24] | var_24h = r2;
0x00099748 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0009974a orrs.w sl, r2, r3 | sl = r2 | r3;
| if (sl == r2) {
0x0009974e beq.w 0x99888 | goto label_1;
| }
0x00099752 ldr.w r8, [sp, 0x30] | r8 = var_30h;
0x00099756 movs r5, 0 | r5 = 0;
0x00099758 mov fp, r5 |
0x0009975a mov sl, r5 | sl = r5;
0x0009975c add r3, sp, 0x48 | r3 += var_48h;
0x0009975e str r5, [sp, 0x4c] | var_4ch = r5;
0x00099760 str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
0x00099764 mov r8, r5 | r8 = r5;
0x00099766 str r3, [sp, 0x34] | var_34h = r3;
| do {
0x00099768 ldrb r3, [r7] | r3 = *(r7);
0x0009976a lsls r0, r3, 0x18 | r0 = r3 << 0x18;
0x0009976c itt pl |
| if (r0 < r3) {
0x0009976e movpl r0, 1 | r0 = 1;
| }
| if (r0 < r3) {
0x00099770 strpl r3, [sp, 0x48] | var_48h = r3;
| }
| if (r0 < r3) {
0x00099772 bmi.w 0x998fa | goto label_16;
| }
| label_3:
0x00099776 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00099778 add r7, r0 | r7 += r0;
0x0009977a subs r3, r7, r3 | r3 = r7 - r3;
0x0009977c cmp r3, r5 |
| if (r3 < r5) {
0x0009977e blt 0x99846 | goto label_17;
| }
0x00099780 ldr r4, [sp, 0x48] | r4 = var_48h;
0x00099782 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00099784 subs r2, r3, r7 | r2 = r3 - r7;
0x00099786 clz r3, r4 | r3 &= r4;
0x0009978a lsrs r3, r3, 5 | r3 >>= 5;
0x0009978c cmp r2, r4 |
0x0009978e it lt |
| if (r2 >= r4) {
0x00099790 orrlt r3, r3, 1 | r3 |= 1;
| }
0x00099794 cmp r3, 0 |
| if (r3 != 0) {
0x00099796 bne 0x99846 | goto label_17;
| }
0x00099798 asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x0009979a adds.w sb, r5, r4 | sb = r5 + r4;
0x0009979e adc.w r3, r3, r5, asr 31 | __asm ("adc.w r3, r3, r5, asr 31");
0x000997a2 cmp fp, sb |
0x000997a4 sbcs.w r2, r8, r3 | __asm ("sbcs.w r2, r8, r3");
| if (fp < sb) {
0x000997a8 bge 0x997c2 |
0x000997aa adds.w fp, sb, sb |
0x000997ae mov r0, sl | r0 = sl;
0x000997b0 adcs r3, r3 | __asm ("adcs r3, r3");
0x000997b2 mov r2, fp | r2 = fp;
0x000997b4 mov r8, r3 | r8 = r3;
0x000997b6 blx 0x8638 | r0 = fcn_00008638 ();
0x000997ba cmp r0, 0 |
| if (r0 == 0) {
0x000997bc beq.w 0x999b2 | goto label_18;
| }
0x000997c0 mov sl, r0 | sl = r0;
| }
0x000997c2 add.w r0, sl, r5 | r0 = sl + r5;
0x000997c6 mov r2, r4 | r2 = r4;
0x000997c8 mov r1, r7 | r1 = r7;
0x000997ca blx 0x7dcc | fcn_00007dcc ();
0x000997ce ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x000997d0 mov r1, sl | r1 = sl;
0x000997d2 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000997d4 cmp r5, sb |
0x000997d6 mov r2, r5 | r2 = r5;
0x000997d8 it ge |
| if (r5 < sb) {
0x000997da movge r2, sb | r2 = sb;
| }
0x000997dc blx 0x7e40 | fcn_00007e40 ();
0x000997e0 ldrd r2, r1, [sp, 0x50] | __asm ("ldrd r2, r1, [var_50h]");
0x000997e4 adds r3, r7, r4 | r3 = r7 + r4;
0x000997e6 adds.w ip, r2, 1 |
0x000997ea adc r6, r1, 0 | __asm ("adc r6, r1, 0");
0x000997ee str r6, [sp, 0x14] | var_14h = r6;
0x000997f0 ldr r6, [sp, 0x10] | r6 = var_10h;
0x000997f2 cmp r6, 0 |
| if (r6 == 0) {
0x000997f4 beq 0x99874 | goto label_19;
| }
0x000997f6 cmp r0, 0 |
| if (r0 < 0) {
0x000997f8 blt 0x9986e | goto label_20;
| }
0x000997fa ite eq |
| if (r0 != 0) {
0x000997fc moveq lr, 1 | lr = 1;
| }
| if (r0 != 0) {
0x00099800 mov.w lr, 0 | lr = 0;
| }
0x00099804 cmp r5, sb |
0x00099806 ite ge |
| if (r5 < sb) {
0x00099808 movge lr, 0 | lr = 0;
| }
| if (r5 < sb) {
0x0009980c and lr, lr, 1 | lr &= 1;
| }
0x00099810 cmp.w lr, 0 |
| if (lr != 0) {
0x00099814 bne 0x9986e | goto label_20;
| }
0x00099816 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00099818 str.w ip, [sp, 0x50] | __asm ("str.w ip, [var_50h]");
0x0009981c str r2, [sp, 0x54] | var_54h = r2;
0x0009981e ldr r2, [sp, 0x18] | r2 = var_18h;
0x00099820 cmp r2, r3 |
| if (r2 < r3) {
0x00099822 bls.w 0x999fa | goto label_21;
| }
0x00099826 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00099828 subs r2, 0 |
0x0009982a it ne |
| if (r2 == 0) {
0x0009982c movne r2, 1 | r2 = 1;
| }
0x0009982e str r2, [sp, 0x24] | var_24h = r2;
| label_2:
0x00099830 ldrb r5, [r7, r4] | r5 = *((r7 + r4));
0x00099832 movs r2, 0 | r2 = 0;
0x00099834 str r2, [sp, 0x4c] | var_4ch = r2;
0x00099836 lsls r1, r5, 0x18 | r1 = r5 << 0x18;
0x00099838 itt pl |
| if (r1 < r5) {
0x0009983a movpl r7, 1 | r7 = 1;
| }
| if (r1 < r5) {
0x0009983c strpl r5, [sp, 0x4c] | var_4ch = r5;
| }
| if (r1 < r5) {
0x0009983e bmi 0x99904 | goto label_22;
| }
| label_4:
0x00099840 cmp sb, r5 |
0x00099842 add r7, r3 | r7 += r3;
0x00099844 bge 0x99768 |
| } while (sb >= r5);
| label_17:
0x00099846 movw sb, 0x10b | sb = 0x10b;
| label_9:
0x0009984a mov r0, sl | r0 = sl;
0x0009984c blx 0x84f8 | fcn_000084f8 ();
| do {
| label_0:
0x00099850 ldr r2, [pc, 0x1c0] |
0x00099852 ldr r3, [pc, 0x1bc] | r3 = *(0x99a12);
0x00099854 add r2, pc | r2 = 0x13326c;
0x00099856 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00099858 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009985a ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0009985c eors r2, r3 | r2 ^= r3;
0x0009985e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00099862 bne.w 0x99a00 | goto label_23;
| }
0x00099866 mov r0, sb | r0 = sb;
0x00099868 add sp, 0x64 |
0x0009986a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x0009986e ldr r5, [sp, 0x10] | r5 = var_10h;
0x00099870 strd r2, r1, [r5] | __asm ("strd r2, r1, [r5]");
| label_19:
0x00099874 ldr r5, [sp, 0x24] | r5 = var_24h;
0x00099876 ands.w r0, r5, r0, lsr 31 | r0 = r5 & (r0 >> 31);
| if (r0 == r5) {
0x0009987a beq 0x998de | goto label_24;
| }
0x0009987c ldr r5, [sp, 0x14] | r5 = var_14h;
0x0009987e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00099880 strd ip, r5, [sp, 0x50] | __asm ("strd ip, r5, [var_50h]");
0x00099884 strd r2, r1, [r3] | __asm ("strd r2, r1, [r3]");
| label_1:
0x00099888 mov r0, sl | r0 = sl;
0x0009988a blx 0x84f8 | fcn_000084f8 ();
| label_8:
0x0009988e ldr r5, [sp, 0x44] | r5 = var_44h;
0x00099890 cmp r5, 1 |
0x00099892 it le |
| if (r5 > 1) {
0x00099894 movle sb, 0 | sb = 0;
| }
0x00099898 ble 0x99850 |
| } while (r5 <= 1);
0x0009989a ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009989c movs r4, 0 | r4 = 0;
0x0009989e ldr r2, [sp, 0x20] | r2 = var_20h;
0x000998a0 strd r4, r4, [sp, 0x48] | __asm ("strd r4, r4, [var_4ch]");
0x000998a4 cmp r3, r4 |
0x000998a6 it ne |
| if (r3 != r4) {
0x000998a8 cmpne r2, r4 | __asm ("cmpne r2, r4");
| }
| if (r3 != r4) {
0x000998aa bne 0x99920 | goto label_25;
| }
0x000998ac add r7, sp, 0x4c | r7 += var_4ch;
0x000998ae add r6, sp, 0x48 | r6 += var_48h;
0x000998b0 cmp r3, 0 |
| if (r3 == 0) {
0x000998b2 beq.w 0x999e2 | goto label_26;
| }
0x000998b6 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000998b8 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
| label_6:
0x000998bc add r7, sp, 0x4c | r7 += var_4ch;
0x000998be add r6, sp, 0x48 | r6 += var_48h;
| label_10:
0x000998c0 movs r1, 0 | r1 = 0;
0x000998c2 ldr r0, [sp, 0x38] | r0 = var_38h;
0x000998c4 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x000998c8 str r1, [sp, 8] | var_8h = r1;
0x000998ca bl 0x995fc | r0 = fcn_000995fc (r0, r1, r2, r3, r4, r5);
0x000998ce mov sb, r0 | sb = r0;
0x000998d0 cmp r0, 0 |
| if (r0 == 0) {
0x000998d2 beq 0x99982 | goto label_27;
| }
0x000998d4 ldr r4, [sp, 0x48] | r4 = var_48h;
| label_7:
0x000998d6 mov r0, r4 | r0 = r4;
0x000998d8 blx 0x84f8 | fcn_000084f8 ();
0x000998dc b 0x99850 | goto label_0;
| label_24:
0x000998de ldr r2, [sp, 0x14] | r2 = var_14h;
0x000998e0 str.w ip, [sp, 0x50] | __asm ("str.w ip, [var_50h]");
0x000998e4 str r2, [sp, 0x54] | var_54h = r2;
0x000998e6 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000998e8 cmp r2, r3 |
| if (r2 < r3) {
0x000998ea bls 0x9996a | goto label_13;
| }
0x000998ec ldr r2, [sp, 0x20] | r2 = var_20h;
0x000998ee cmp r2, 0 |
| if (r2 == 0) {
0x000998f0 beq 0x99888 | goto label_1;
| }
0x000998f2 movs r2, 1 | r2 = 1;
0x000998f4 str r0, [sp, 0x10] | var_10h = r0;
0x000998f6 str r2, [sp, 0x24] | var_24h = r2;
0x000998f8 b 0x99830 | goto label_2;
| label_16:
0x000998fa ldr r1, [sp, 0x34] | r1 = var_34h;
0x000998fc mov r0, r7 | r0 = r7;
0x000998fe bl 0xa648 | fcn_0000a648 (r0, r1);
0x00099902 b 0x99776 | goto label_3;
| label_22:
0x00099904 mov r0, r3 | r0 = r3;
0x00099906 add r1, sp, 0x4c | r1 += var_4ch;
0x00099908 str r3, [sp, 0x14] | var_14h = r3;
0x0009990a bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009990e ldr r5, [sp, 0x4c] | r5 = var_4ch;
0x00099910 mov r7, r0 | r7 = r0;
0x00099912 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00099914 b 0x99840 | goto label_4;
| label_14:
0x00099916 add r1, sp, 0x44 | r1 += var_44h;
0x00099918 mov r0, r5 | r0 = r5;
0x0009991a bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009991e b 0x99712 | goto label_5;
| label_25:
0x00099920 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00099922 ldrd r0, r1, [r3] | __asm ("ldrd r0, r1, [r3]");
0x00099926 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00099928 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0009992c cmp r1, r3 |
0x0009992e it eq |
| if (r1 != r3) {
0x00099930 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| goto label_28;
| }
| if (r1 == r3) {
| label_28:
0x00099932 beq 0x998bc | goto label_6;
| }
0x00099934 add r7, sp, 0x4c | r7 += var_4ch;
0x00099936 add r6, sp, 0x48 | r6 += var_48h;
0x00099938 mov r2, r0 | r2 = r0;
0x0009993a mov r3, r1 | r3 = r1;
0x0009993c ldr r0, [sp, 0x38] | r0 = var_38h;
0x0009993e str r4, [sp, 8] | var_8h = r4;
0x00099940 str r7, [sp, 4] | var_4h = r7;
0x00099942 str r6, [sp] | *(sp) = r6;
0x00099944 bl 0x995fc | r0 = fcn_000995fc (r0, r1, r2, r3, r4, r5);
0x00099948 mov sb, r0 | sb = r0;
0x0009994a cmp r0, 0 |
| if (r0 == 0) {
0x0009994c beq 0x999b8 | goto label_29;
| }
0x0009994e ldr r0, [sp, 0x48] | r0 = var_48h;
0x00099950 blx 0x84f8 | fcn_000084f8 ();
0x00099954 b 0x998d6 | goto label_7;
| label_15:
0x00099956 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00099958 cmp r3, 0 |
| if (r3 == 0) {
0x0009995a beq 0x99a04 | goto label_30;
| }
0x0009995c mov r8, r3 | r8 = r3;
0x0009995e mov.w sl, 0 | sl = 0;
| label_12:
0x00099962 ldrd r2, r3, [sp, 0x50] | __asm ("ldrd r2, r3, [var_50h]");
0x00099966 strd r2, r3, [r8] | __asm ("strd r2, r3, [r8]");
| label_13:
0x0009996a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0009996c cmp r3, 0 |
| if (r3 == 0) {
0x0009996e beq 0x99888 | goto label_1;
| }
0x00099970 ldrd r2, r3, [sp, 0x50] | __asm ("ldrd r2, r3, [var_50h]");
0x00099974 mov r0, sl | r0 = sl;
0x00099976 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00099978 strd r2, r3, [r1] | __asm ("strd r2, r3, [r1]");
0x0009997c blx 0x84f8 | fcn_000084f8 ();
0x00099980 b 0x9988e | goto label_8;
| label_27:
0x00099982 ldr r4, [sp, 0x48] | r4 = var_48h;
0x00099984 str r0, [sp, 0x50] | var_50h = r0;
0x00099986 ldrb r3, [r4] | r3 = *(r4);
0x00099988 lsls r2, r3, 0x18 | r2 = r3 << 0x18;
| if (r2 < r3) {
0x0009998a bmi 0x999ee | goto label_31;
| }
| label_11:
0x0009998c cmp r5, r3 |
0x0009998e it le |
| if (r5 > r3) {
0x00099990 movwle sb, 0x10b | __asm ("movwle sb, aav.0x000000ff");
| goto label_32;
| }
| if (r5 <= r3) {
| label_32:
0x00099994 ble 0x998d6 | goto label_7;
| }
0x00099996 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00099998 ldrd r1, r2, [sp, 0x28] | __asm ("ldrd r1, r2, [var_28h]");
0x0009999c ldr r0, [sp, 0x38] | r0 = var_38h;
0x0009999e str r3, [sp, 8] | var_8h = r3;
0x000999a0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000999a2 str r3, [sp, 4] | var_4h = r3;
0x000999a4 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000999a6 str r3, [sp] | *(sp) = r3;
0x000999a8 mov r3, r4 | r3 = r4;
0x000999aa bl 0x996dc | r0 = fcn_000996dc (r0, r1, r2, r3, r4, r5, r6);
0x000999ae mov sb, r0 | sb = r0;
0x000999b0 b 0x998d6 | goto label_7;
| label_18:
0x000999b2 mov.w sb, 7 | sb = 7;
0x000999b6 b 0x9984a | goto label_9;
| label_29:
0x000999b8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000999ba ldrd r1, r2, [sp, 0x28] | __asm ("ldrd r1, r2, [var_28h]");
0x000999be str r0, [sp, 8] | var_8h = r0;
0x000999c0 str r3, [sp, 4] | var_4h = r3;
0x000999c2 ldrd r8, r3, [sp, 0x48] | __asm ("ldrd r8, r3, [var_4ch]");
0x000999c6 ldr r0, [sp, 0x38] | r0 = var_38h;
0x000999c8 str r3, [sp] | *(sp) = r3;
0x000999ca mov r3, r8 | r3 = r8;
0x000999cc bl 0x996dc | r0 = fcn_000996dc (r0, r1, r2, r3, r4, r5, r6);
0x000999d0 mov sb, r0 | sb = r0;
0x000999d2 mov r0, r8 | r0 = r8;
0x000999d4 blx 0x84f8 | fcn_000084f8 ();
0x000999d8 str r4, [sp, 0x48] | var_48h = r4;
0x000999da cmp.w sb, 0 |
| if (sb != 0) {
0x000999de bne.w 0x998d6 | goto label_7;
| }
| label_26:
0x000999e2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000999e4 movs r1, 0 | r1 = 0;
0x000999e6 str r1, [sp, 0x30] | var_30h = r1;
0x000999e8 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x000999ec b 0x998c0 | goto label_10;
| label_31:
0x000999ee ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x000999f0 mov r0, r4 | r0 = r4;
0x000999f2 bl 0xa648 | fcn_0000a648 (r0, r1);
0x000999f6 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000999f8 b 0x9998c | goto label_11;
| label_21:
0x000999fa ldr.w r8, [sp, 0x10] | r8 = var_10h;
0x000999fe b 0x99962 | goto label_12;
| label_23:
0x00099a00 blx 0x7e8c | fcn_00007e8c ();
| label_30:
0x00099a04 ldr.w sl, [sp, 0x30] | sl = var_30h;
0x00099a08 b 0x9996a | goto label_13;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x99a18 */
| #include <stdint.h>
|
; (fcn) fcn.00099a18 () | void fcn_00099a18 (int16_t arg_100h, int16_t arg_80h, int16_t arg_84h, int16_t arg_88h, int16_t arg_8ch, int16_t arg_90h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_3ch;
| int16_t var_40h;
| int32_t var_40h_2;
| int16_t var_48h;
| int32_t var_48h_2;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00099a18 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00099a1c sub sp, 0x5c |
0x00099a1e ldr r5, [pc, 0x394] |
0x00099a20 mov fp, r0 |
0x00099a22 mov r7, r1 | r7 = r1;
0x00099a24 ldr r4, [pc, 0x390] | r4 = *(0x99db8);
0x00099a26 add r5, pc | r5 = 0x1337e0;
0x00099a28 ldr.w sl, [sp, 0x80] | sl = *(arg_80h);
0x00099a2c ldr.w sb, [sp, 0x88] | sb = *(arg_88h);
0x00099a30 ldr r4, [r5, r4] |
0x00099a32 ldr.w r8, [sp, 0x90] | r8 = *(arg_90h);
0x00099a36 ldr r4, [r4] | r4 = imp._ITM_deregisterTMCloneTable;
0x00099a38 str r4, [sp, 0x54] | var_54h = r4;
0x00099a3a mov.w r4, 0 | r4 = 0;
0x00099a3e subs r4, r3, 0 | r4 = r3 - 0;
0x00099a40 str r2, [sp, 0x24] | var_24h = r2;
| if (r4 < r3) {
0x00099a42 blt 0x99a6e | goto label_9;
| }
0x00099a44 add r2, sp, 0x48 | r2 += var_48h;
0x00099a46 movs r3, 0 | r3 = 0;
0x00099a48 movs r1, 0xc | r1 = 0xc;
0x00099a4a str r2, [sp, 0x2c] | var_2ch = r2;
0x00099a4c str r3, [sp, 0x48] | var_48h = r3;
0x00099a4e bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x00099a52 mov r2, r0 | r2 = r0;
0x00099a54 cmp r0, 0 |
| if (r0 == 0) {
0x00099a56 beq.w 0x99b72 | goto label_10;
| }
| do {
0x00099a5a ldr r4, [sp, 0x48] | r4 = var_48h;
| label_6:
0x00099a5c mov r0, r4 | r0 = r4;
0x00099a5e str r2, [sp, 0x24] | var_24h = r2;
0x00099a60 blx 0x7cfc | fcn_00007cfc ();
0x00099a64 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00099a66 cmp r2, 0x65 |
| if (r2 == 0x65) {
0x00099a68 beq 0x99ae8 | goto label_8;
| }
0x00099a6a mov r0, r2 | r0 = r2;
0x00099a6c b 0x99ae8 | goto label_8;
| label_9:
0x00099a6e ldr.w r3, [r0, 0x104] | r3 = *((r0 + 0x104));
| if (r3 != 0) {
0x00099a72 cbz r3, 0x99a7c |
0x00099a74 ldr.w r2, [r0, 0x118] | r2 = *((r0 + 0x118));
0x00099a78 cmp r2, r1 |
| if (r2 == r1) {
0x00099a7a beq 0x99b04 | goto label_11;
| }
| }
| label_4:
0x00099a7c adds r4, 1 | r4++;
| if (r4 == 1) {
0x00099a7e beq 0x99ae0 | goto label_12;
| }
| label_5:
0x00099a80 add r2, sp, 0x48 | r2 += var_48h;
0x00099a82 movs r3, 0 | r3 = 0;
0x00099a84 movs r1, 0xd | r1 = 0xd;
0x00099a86 mov r0, fp | r0 = fp;
0x00099a88 str r2, [sp, 0x2c] | var_2ch = r2;
0x00099a8a str r3, [sp, 0x48] | var_48h = r3;
0x00099a8c bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x00099a90 mov r2, r0 | r2 = r0;
0x00099a92 cmp r0, 0 |
0x00099a94 bne 0x99a5a |
| } while (r0 != 0);
0x00099a96 ldr r6, [sp, 0x24] | r6 = var_24h;
0x00099a98 movs r1, 1 | r1 = 1;
0x00099a9a ldr.w r0, [fp, 0x100] | r0 = *(arg_100h);
0x00099a9e ldr r4, [sp, 0x48] | r4 = var_48h;
0x00099aa0 mov r2, r6 | r2 = r6;
0x00099aa2 asrs r5, r6, 0x1f | r5 = r6 >> 0x1f;
0x00099aa4 mov r3, r5 | r3 = r5;
0x00099aa6 smlal r2, r3, r7, r0 | __asm ("smlal r2, r3, r7, r0");
0x00099aaa mov r0, r4 | r0 = r4;
0x00099aac lsls r3, r3, 0xa | r3 <<= 0xa;
0x00099aae orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x00099ab2 lsls r2, r2, 0xa | r2 <<= 0xa;
0x00099ab4 blx 0x7c4c | fcn_00007c4c ();
0x00099ab8 ldr.w r3, [fp, 0x100] | r3 = *(arg_100h);
0x00099abc mov r2, r6 | r2 = r6;
0x00099abe movw r1, 0x3ff | r1 = 0x3ff;
0x00099ac2 mov r0, r4 | r0 = r4;
0x00099ac4 smlal r2, r5, r7, r3 | __asm ("smlal r2, r5, r7, r3");
0x00099ac8 lsls r3, r5, 0xa | r3 = r5 << 0xa;
0x00099aca orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x00099ace lsls r2, r2, 0xa | r2 <<= 0xa;
0x00099ad0 adds r2, r2, r1 | r2 += r1;
0x00099ad2 mov.w r1, 2 | r1 = 2;
0x00099ad6 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00099ada blx 0x7c4c | fcn_00007c4c ();
0x00099ade b 0x99b96 | goto label_13;
| label_12:
0x00099ae0 movs r0, 0 | r0 = 0;
0x00099ae2 blx 0x7cfc | fcn_00007cfc ();
0x00099ae6 movs r0, 0 | r0 = 0;
| label_8:
0x00099ae8 ldr r2, [pc, 0x2d0] |
0x00099aea ldr r3, [pc, 0x2cc] | r3 = *(0x99dba);
0x00099aec add r2, pc | r2 = 0x1338ac;
0x00099aee ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00099af0 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00099af2 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00099af4 eors r2, r3 | r2 ^= r3;
0x00099af6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00099afa bne.w 0x99dac | goto label_14;
| }
0x00099afe add sp, 0x5c |
0x00099b00 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x00099b04 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00099b06 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x00099b0a add.w r3, r3, r2, lsl 3 | r3 += (r2 << 3);
0x00099b0e ldr r2, [sp, 0x8c] | r2 = *(arg_8ch);
0x00099b10 orrs.w r5, sb, r2 | r5 = sb | r2;
| if (r5 == sb) {
0x00099b14 beq.w 0x99c8c | goto label_15;
| }
0x00099b18 ldr r5, [r3, 0xc] | r5 = *((r3 + 0xc));
0x00099b1a cmp r5, 0 |
| if (r5 == 0) {
0x00099b1c beq.w 0x99da4 | goto label_16;
| }
0x00099b20 movs r3, 0 | r3 = 0;
0x00099b22 strd r1, r4, [sp, 0x2c] | __asm ("strd r1, r4, [var_2ch]");
0x00099b26 ldr r7, [sp, 0x84] | r7 = *(arg_84h);
0x00099b28 mov r6, r3 | r6 = r3;
0x00099b2a mov fp, r3 |
0x00099b2c mov r4, r3 | r4 = r3;
0x00099b2e str r0, [sp, 0x28] | var_28h = r0;
0x00099b30 b 0x99b40 | goto label_17;
| label_1:
0x00099b32 str.w r5, [r4, r6, lsl 2] | __asm ("str.w r5, [r4, r6, lsl 2]");
0x00099b36 adds r6, 1 | r6++;
| do {
| label_0:
0x00099b38 ldr r5, [r5] | r5 = *(r5);
0x00099b3a cmp r5, 0 |
| if (r5 == 0) {
0x00099b3c beq.w 0x99d0a | goto label_18;
| }
| label_17:
0x00099b40 ldrd r0, r1, [r5, 0xc] | __asm ("ldrd r0, r1, [r5, 0xc]");
| if (r7 == 0) {
0x00099b44 cbz r7, 0x99b56 | goto label_19;
| }
0x00099b46 cmp r7, r1 |
0x00099b48 bgt 0x99b38 |
| } while (r7 > r1);
0x00099b4a mov r2, r7 | r2 = r7;
0x00099b4c mov r1, sl | r1 = sl;
0x00099b4e blx 0x7e40 | r0 = fcn_00007e40 ();
0x00099b52 cmp r0, 0 |
| if (r0 != 0) {
0x00099b54 bne 0x99b38 | goto label_0;
| }
| label_19:
0x00099b56 cmp fp, r6 |
| if (fp != r6) {
0x00099b58 bne 0x99b32 | goto label_1;
| }
0x00099b5a add.w fp, fp, 0x10 |
0x00099b5e mov r0, r4 | r0 = r4;
0x00099b60 lsl.w r1, fp, 2 | r1 = fp << 2;
0x00099b64 blx 0x8514 | r0 = fcn_00008514 ();
0x00099b68 cmp r0, 0 |
| if (r0 == 0) {
0x00099b6a beq.w 0x99d5c | goto label_20;
| }
0x00099b6e mov r4, r0 | r4 = r0;
0x00099b70 b 0x99b32 | goto label_1;
| label_10:
0x00099b72 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00099b74 ldr.w r1, [fp, 0x100] | r1 = *(arg_100h);
0x00099b78 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00099b7a smlal r2, r3, r7, r1 | __asm ("smlal r2, r3, r7, r1");
0x00099b7e movs r1, 1 | r1 = 1;
0x00099b80 lsls r3, r3, 0xa | r3 <<= 0xa;
0x00099b82 orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x00099b86 lsls r2, r2, 0xa | r2 <<= 0xa;
0x00099b88 adds r2, r2, r4 | r2 += r4;
0x00099b8a adc.w r3, r3, r4, asr 31 | __asm ("adc.w r3, r3, r4, asr 31");
0x00099b8e ldr r4, [sp, 0x48] | r4 = var_48h;
0x00099b90 mov r0, r4 | r0 = r4;
0x00099b92 blx 0x7c4c | fcn_00007c4c ();
| label_13:
0x00099b96 str.w fp, [sp, 0x24] | __asm ("str.w fp, [var_24h]");
0x00099b9a ldr.w fp, [sp, 0x8c] | fp = *(arg_8ch);
0x00099b9e b 0x99be2 |
| while (r1 == 0) {
| label_2:
0x00099ba0 ldrd ip, r1, [sp, 0x48] | __asm ("ldrd ip, r1, [var_48h]");
| label_3:
0x00099ba4 strd r3, r5, [sp, 0x10] | __asm ("strd r3, r5, [var_10h]");
0x00099ba8 orrs.w r3, sb, fp | r3 = sb | fp;
0x00099bac str r1, [sp, 4] | var_4h = r1;
0x00099bae mov r3, r0 | r3 = r0;
0x00099bb0 strd r6, r7, [sp, 8] | __asm ("strd r6, r7, [var_8h]");
0x00099bb4 add r5, sp, 0x3c | r5 += var_3ch;
0x00099bb6 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00099bba it eq |
| if (r3 != sb) {
0x00099bbc moveq r1, 1 | r1 = 1;
| }
0x00099bbe ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00099bc2 it ne |
| if (r3 == sb) {
0x00099bc4 movne r1, 0 | r1 = 0;
| }
0x00099bc6 str r5, [sp, 0x18] | var_18h = r5;
0x00099bc8 adds r0, 1 | r0++;
0x00099bca bl 0x3d47c | r0 = fcn_0003d47c (r0, r1, r2, r3, r4, r5, r6);
0x00099bce cmp r0, 0 |
| if (r0 != 0) {
0x00099bd0 bne.w 0x99d06 | goto label_21;
| }
0x00099bd4 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00099bd6 mov r0, r8 | r0 = r8;
0x00099bd8 bl 0x5b464 | r0 = fcn_0005b464 (r0, r1, r2);
0x00099bdc cmp r0, 0 |
| if (r0 != 0) {
0x00099bde bne.w 0x99d06 | goto label_21;
| }
0x00099be2 mov r0, r4 | r0 = r4;
0x00099be4 blx 0x809c | r0 = fcn_0000809c ();
0x00099be8 cmp r0, 0x64 |
| if (r0 != 0x64) {
0x00099bea bne.w 0x99d06 | goto label_21;
| }
0x00099bee movs r3, 0 | r3 = 0;
0x00099bf0 movs r1, 1 | r1 = 1;
0x00099bf2 mov r0, r4 | r0 = r4;
0x00099bf4 str r3, [sp, 0x3c] | var_3ch = r3;
0x00099bf6 blx 0x80d8 | r0 = fcn_000080d8 ();
0x00099bfa mov r2, r0 | r2 = r0;
0x00099bfc mov r3, r1 | r3 = r1;
0x00099bfe mov r0, r4 | r0 = r4;
0x00099c00 movs r1, 2 | r1 = 2;
0x00099c02 strd r2, r3, [sp, 0x40] | __asm ("strd r2, r3, [var_40h]");
0x00099c06 blx 0x80d8 | r0 = fcn_000080d8 ();
0x00099c0a mov r2, r0 | r2 = r0;
0x00099c0c mov r3, r1 | r3 = r1;
0x00099c0e mov r0, r4 | r0 = r4;
0x00099c10 movs r1, 3 | r1 = 3;
0x00099c12 strd r2, r3, [sp, 0x48] | __asm ("strd r2, r3, [var_48h]");
0x00099c16 blx 0x80d8 | fcn_000080d8 ();
0x00099c1a mov r7, r1 | r7 = r1;
0x00099c1c mov r6, r0 | r6 = r0;
0x00099c1e movs r1, 4 | r1 = 4;
0x00099c20 mov r0, r4 | r0 = r4;
0x00099c22 blx 0x8184 | fcn_00008184 ();
0x00099c26 movs r1, 4 | r1 = 4;
0x00099c28 mov r5, r0 | r5 = r0;
0x00099c2a mov r0, r4 | r0 = r4;
0x00099c2c blx 0x7cd0 | r0 = fcn_00007cd0 ();
0x00099c30 mov r3, r0 | r3 = r0;
0x00099c32 ldrd r2, r0, [sp, 0x40] | __asm ("ldrd r2, r0, [var_40h]");
0x00099c36 orr.w r1, r2, r0 | r1 = r2 | r0;
0x00099c3a cmp.w sl, 0 |
0x00099c3e it ne |
| if (sl != 0) {
0x00099c40 cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
0x00099c42 ite ne |
| if (sl == 0) {
0x00099c44 movne r1, 1 | r1 = 1;
| }
| if (sl != 0) {
0x00099c46 moveq r1, 0 | r1 = 0;
| }
0x00099c48 cmp r3, 0 |
0x00099c4a ite eq |
| if (r3 != 0) {
0x00099c4c moveq r1, 0 | r1 = 0;
| }
| if (r3 == 0) {
0x00099c4e andne r1, r1, 1 | r1 &= 1;
| }
0x00099c52 cmp r1, 0 |
0x00099c54 beq 0x99ba0 |
| }
0x00099c56 cmp.w sb, 0 |
| if (sb != 0) {
0x00099c5a bne 0x99ce2 | goto label_22;
| }
0x00099c5c add r2, sp, 0x40 | r2 += var_40h;
0x00099c5e ldr r0, [sp, 0x24] | r0 = var_24h;
0x00099c60 str r2, [sp, 4] | var_4h = r2;
0x00099c62 mov r1, sl | r1 = sl;
0x00099c64 ldr r2, [sp, 0x84] | r2 = *(arg_84h);
0x00099c66 str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x00099c6a str r5, [sp] | *(sp) = r5;
0x00099c6c str r3, [sp, 0x28] | var_28h = r3;
0x00099c6e bl 0x996dc | r0 = fcn_000996dc (r0, r1, r2, r3, r4, r5, r6);
0x00099c72 cmp r0, 0 |
| if (r0 != 0) {
0x00099c74 bne 0x99d06 | goto label_21;
| }
0x00099c76 ldrd r2, r0, [sp, 0x40] | __asm ("ldrd r2, r0, [var_40h]");
0x00099c7a ldr r3, [sp, 0x28] | r3 = var_28h;
0x00099c7c cmp.w fp, 0 |
| if (fp != 0) {
0x00099c80 bne 0x99ba0 | goto label_2;
| }
0x00099c82 mov ip, r2 |
0x00099c84 mov r1, r0 | r1 = r0;
0x00099c86 strd r2, r0, [sp, 0x48] | __asm ("strd r2, r0, [var_48h]");
0x00099c8a b 0x99ba4 | goto label_3;
| label_15:
0x00099c8c ldr r2, [sp, 0x84] | r2 = *(arg_84h);
0x00099c8e adds r0, r3, 4 | r0 = r3 + 4;
0x00099c90 mov r1, sl | r1 = sl;
0x00099c92 bl 0x11964 | fcn_00011964 (r0, r1, r2);
0x00099c96 str r0, [sp, 0x28] | var_28h = r0;
0x00099c98 cmp r0, 0 |
| if (r0 == 0) {
0x00099c9a beq.w 0x99a7c | goto label_4;
| }
0x00099c9e movs r0, 0x68 | r0 = 0x68;
0x00099ca0 movs r1, 0 | r1 = 0;
0x00099ca2 blx 0x7f18 | fcn_00007f18 ();
0x00099ca6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00099ca8 mov r6, r0 | r6 = r0;
0x00099caa cmp r0, 0 |
| if (r0 == 0) {
0x00099cac beq 0x99d80 | goto label_23;
| }
0x00099cae mov r1, r5 | r1 = r5;
0x00099cb0 movs r2, 0x64 | r2 = 0x64;
0x00099cb2 adds r0, 4 | r0 += 4;
0x00099cb4 str r3, [sp, 0x28] | var_28h = r3;
0x00099cb6 blx 0x8264 | fcn_00008264 ();
0x00099cba ldr r3, [sp, 0x28] | r3 = var_28h;
0x00099cbc mov r2, r6 | r2 = r6;
0x00099cbe mvn r1, 0x80000000 | r1 = ~0x80000000;
0x00099cc2 str r1, [r2], 0x60 | *(r2) = r1;
| r2 += 0x60;
0x00099cc6 str r3, [r6, 0x60] | *((r6 + 0x60)) = r3;
0x00099cc8 str r2, [r6, 0x38] | *((r6 + 0x38)) = r2;
| label_7:
0x00099cca mov r1, r6 | r1 = r6;
0x00099ccc mov r0, r8 | r0 = r8;
0x00099cce bl 0x5b464 | fcn_0005b464 (r0, r1, r2);
0x00099cd2 adds r4, 1 | r4++;
0x00099cd4 mov r2, r0 | r2 = r0;
| if (r4 == 1) {
0x00099cd6 beq 0x99cde | goto label_24;
| }
0x00099cd8 cmp r0, 0 |
| if (r0 == 0) {
0x00099cda beq.w 0x99a80 | goto label_5;
| }
| label_24:
0x00099cde movs r4, 0 | r4 = 0;
0x00099ce0 b 0x99a5c | goto label_6;
| label_22:
0x00099ce2 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00099ce4 mov r1, sl | r1 = sl;
0x00099ce6 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00099ce8 str r5, [sp] | *(sp) = r5;
0x00099cea str r2, [sp, 8] | var_8h = r2;
0x00099cec add r2, sp, 0x40 | r2 += var_40h;
0x00099cee str r2, [sp, 4] | var_4h = r2;
0x00099cf0 ldr r2, [sp, 0x84] | r2 = *(arg_84h);
0x00099cf2 str r3, [sp, 0x28] | var_28h = r3;
0x00099cf4 bl 0x996dc | r0 = fcn_000996dc (r0, r1, r2, r3, r4, r5, r6);
| if (r0 == 0) {
0x00099cf8 cbnz r0, 0x99d06 |
0x00099cfa ldrd r2, r0, [sp, 0x40] | __asm ("ldrd r2, r0, [var_40h]");
0x00099cfe ldrd ip, r1, [sp, 0x48] | __asm ("ldrd ip, r1, [var_48h]");
0x00099d02 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00099d04 b 0x99ba4 | goto label_3;
| }
| label_21:
0x00099d06 mov r2, r0 | r2 = r0;
0x00099d08 b 0x99a5c | goto label_6;
| label_18:
0x00099d0a cmp r6, 1 |
0x00099d0c mov r0, r4 | r0 = r4;
0x00099d0e str r4, [sp, 0x34] | var_34h = r4;
0x00099d10 ldrd fp, r7, [sp, 0x28] | __asm ("ldrd fp, r7, [var_2ch]");
0x00099d14 ldr r4, [sp, 0x30] | r4 = var_30h;
| if (r6 <= 1) {
0x00099d16 ble 0x99d76 | goto label_25;
| }
0x00099d18 ldr r3, [pc, 0xa4] |
0x00099d1a movs r2, 4 | r2 = 4;
0x00099d1c mov r1, r6 | r1 = r6;
0x00099d1e add r3, pc | r3 = 0x133ae2;
0x00099d20 blx 0x84b4 | fcn_000084b4 ();
| do {
0x00099d24 adds r6, 0x19 | r6 += 0x19;
0x00099d26 movs r1, 0 | r1 = 0;
0x00099d28 lsls r5, r6, 2 | r5 = r6 << 2;
0x00099d2a mov r0, r5 | r0 = r5;
0x00099d2c blx 0x7f18 | r0 = fcn_00007f18 ();
0x00099d30 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00099d32 cbz r0, 0x99d8e |
0x00099d34 mov r2, r5 | r2 = r5;
0x00099d36 movs r1, 0 | r1 = 0;
0x00099d38 blx 0x8264 | fcn_00008264 ();
0x00099d3c sub.w r2, r5, 0x64 | r2 = r5 - 0x64;
0x00099d40 ldr r5, [sp, 0x34] | r5 = var_34h;
0x00099d42 mov r0, r6 | r0 = r6;
0x00099d44 mvn r3, 0x80000000 | r3 = ~0x80000000;
0x00099d48 str r3, [r0], 0x60 | *(r0) = r3;
| r0 += 0x60;
0x00099d4c mov r1, r5 | r1 = r5;
0x00099d4e str r0, [r6, 0x38] | *((r6 + 0x38)) = r0;
0x00099d50 blx 0x7dcc | fcn_00007dcc ();
0x00099d54 mov r0, r5 | r0 = r5;
0x00099d56 blx 0x84f8 | fcn_000084f8 ();
0x00099d5a b 0x99cca | goto label_7;
| label_20:
0x00099d5c movs r2, 7 | r2 = 7;
0x00099d5e str r0, [sp, 0x28] | var_28h = r0;
0x00099d60 mov r0, r4 | r0 = r4;
0x00099d62 str r2, [sp, 0x24] | var_24h = r2;
0x00099d64 blx 0x84f8 | fcn_000084f8 ();
0x00099d68 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00099d6a mov r0, r1 | r0 = r1;
0x00099d6c blx 0x7cfc | fcn_00007cfc ();
0x00099d70 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00099d72 mov r0, r2 | r0 = r2;
0x00099d74 b 0x99ae8 | goto label_8;
| if (r6 != 0) {
| label_25:
0x00099d76 cbnz r6, 0x99db0 | goto label_26;
| }
0x00099d78 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00099d7a blx 0x84f8 | fcn_000084f8 ();
0x00099d7e b 0x99a7c | goto label_4;
| label_23:
0x00099d80 movs r2, 7 | r2 = 7;
0x00099d82 str r2, [sp, 0x24] | var_24h = r2;
0x00099d84 blx 0x7cfc | fcn_00007cfc ();
0x00099d88 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00099d8a mov r0, r2 | r0 = r2;
0x00099d8c b 0x99ae8 | goto label_8;
| }
0x00099d8e movs r2, 7 | r2 = 7;
0x00099d90 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00099d92 str r2, [sp, 0x24] | var_24h = r2;
0x00099d94 blx 0x84f8 | fcn_000084f8 ();
0x00099d98 mov r0, r6 | r0 = r6;
0x00099d9a blx 0x7cfc | fcn_00007cfc ();
0x00099d9e ldr r2, [sp, 0x24] | r2 = var_24h;
0x00099da0 mov r0, r2 | r0 = r2;
0x00099da2 b 0x99ae8 | goto label_8;
| label_16:
0x00099da4 mov r0, r5 | r0 = r5;
0x00099da6 blx 0x84f8 | fcn_000084f8 ();
0x00099daa b 0x99a7c | goto label_4;
| label_14:
0x00099dac blx 0x7e8c | fcn_00007e8c ();
| label_26:
0x00099db0 movs r6, 1 | r6 = 1;
0x00099db2 b 0x99d24 |
| } 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/libsqlite3.so.0.8.6 @ 0x99dc4 */
| #include <stdint.h>
|
; (fcn) fcn.00099dc4 () | void fcn_00099dc4 (int16_t arg_50h, int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00099dc4 cmp r1, 0 |
| if (r1 == 0) {
0x00099dc6 beq.w 0x99f88 | goto label_3;
| }
0x00099dca push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00099dce sub sp, 0x2c |
0x00099dd0 ldr r7, [sp, 0x50] | r7 = *(arg_50h);
0x00099dd2 mov r8, r0 | r8 = r0;
0x00099dd4 mov sb, r3 | sb = r3;
0x00099dd6 mov r5, r1 | r5 = r1;
0x00099dd8 mov sl, r2 | sl = r2;
| do {
0x00099dda ldr r1, [r7] | r1 = *(r7);
0x00099ddc mov r3, sb | r3 = sb;
0x00099dde mov r2, sl | r2 = sl;
0x00099de0 mov r0, r8 | r0 = r8;
| if (r1 != 0) {
0x00099de2 cbnz r1, 0x99e06 | goto label_4;
| }
0x00099de4 ldr r6, [r5] | r6 = *(r5);
0x00099de6 cmp r6, 5 |
| if (r6 == 5) {
0x00099de8 beq 0x99e0c | goto label_5;
| }
0x00099dea ldr.w r4, [sb] | r4 = *(sb);
0x00099dee ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x00099df0 str r7, [sp] | *(sp) = r7;
0x00099df2 cmp r6, 4 |
0x00099df4 it eq |
| if (r6 != 4) {
0x00099df6 addeq r4, 1 | r4++;
| }
0x00099df8 str.w r4, [sb] | __asm ("str.w r4, [sb]");
0x00099dfc bl 0x99dc4 | fcn_00099dc4 (r0, r1, r2, r3, r4);
0x00099e00 ldr r5, [r5, 0x10] | r5 = *((r5 + 0x10));
0x00099e02 cmp r5, 0 |
0x00099e04 bne 0x99dda |
| } while (r5 != 0);
| label_4:
0x00099e06 add sp, 0x2c |
0x00099e08 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00099e0c ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00099e0e mov r6, r1 | r6 = r1;
0x00099e10 mov r2, r3 | r2 = r3;
0x00099e12 str r3, [sp, 0x18] | var_18h = r3;
0x00099e14 ldr r2, [r2, 0x40] | r2 = *((r2 + 0x40));
0x00099e16 ldr.w r3, [sl] | r3 = *(sl);
0x00099e1a cmp r2, 0 |
0x00099e1c str r2, [sp, 0x20] | var_20h = r2;
0x00099e1e add r3, r2 | r3 += r2;
0x00099e20 str.w r3, [sl] | __asm ("str.w r3, [sl]");
| if (r2 <= 0) {
0x00099e24 ble 0x99ec2 | goto label_6;
| }
0x00099e26 str r5, [sp, 0x24] | var_24h = r5;
| label_0:
0x00099e28 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00099e2a lsls r7, r6, 1 | r7 = r6 << 1;
0x00099e2c movs r0, 0x38 | r0 = 0x38;
0x00099e2e add.w sl, r7, r6 | sl = r7 + r6;
0x00099e32 add.w sl, r3, sl, lsl 3 | sl = r3 + (sl << 3);
0x00099e36 ldrd fp, r5, [sl, 0x48] | __asm ("ldrd fp, r5, [sl, 0x48]");
0x00099e3a ldr.w sb, [sl, 0x50] | sb = *((sl + 0x50));
0x00099e3e blx 0x85dc | r0 = fcn_000085dc ();
0x00099e42 mov r4, r0 | r4 = r0;
0x00099e44 cmp r0, 0 |
| if (r0 == 0) {
0x00099e46 beq.w 0x99f78 | goto label_7;
| }
0x00099e4a ldr.w sl, [r8] | sl = *(r8);
0x00099e4e cmp.w sb, 0 |
| if (sb == 0) {
0x00099e52 beq 0x99ed0 | goto label_8;
| }
0x00099e54 ldr.w r0, [sl, 0x100] | r0 = *((sl + 0x100));
0x00099e58 cmp r0, 1 |
| if (r0 <= 1) {
0x00099e5a ble 0x99ed0 | goto label_8;
| }
0x00099e5c ldr.w r2, [sl, 0x104] | r2 = *((sl + 0x104));
0x00099e60 movs r3, 1 | r3 = 1;
0x00099e62 mov r1, r2 | r1 = r2;
0x00099e64 mov ip, r2 |
0x00099e66 b 0x99e6e |
| while (r5 != r2) {
0x00099e68 adds r3, 1 | r3++;
0x00099e6a cmp r3, r0 |
| if (r3 == r0) {
0x00099e6c beq 0x99f06 | goto label_9;
| }
0x00099e6e ldr r2, [r1, 0x18] | r2 = *((r1 + 0x18));
0x00099e70 adds r1, 0x18 | r1 += 0x18;
0x00099e72 cmp r5, r2 |
0x00099e74 bne 0x99e68 |
| }
0x00099e76 movs r2, 0x38 | r2 = 0x38;
0x00099e78 movs r1, 0 | r1 = 0;
0x00099e7a mov r0, r4 | r0 = r4;
0x00099e7c ldr.w sb, [r8, 0x14] | sb = *((r8 + 0x14));
0x00099e80 str r3, [sp, 0x1c] | var_1ch = r3;
0x00099e82 blx 0x8264 | fcn_00008264 ();
0x00099e86 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00099e88 mov r1, sb | r1 = sb;
0x00099e8a mov r0, sl | r0 = sl;
0x00099e8c strd fp, r5, [sp] | __asm ("strd fp, r5, [sp]");
0x00099e90 str r4, [sp, 0x10] | var_10h = r4;
0x00099e92 mov r2, r3 | r2 = r3;
0x00099e94 movs r3, 0 | r3 = 0;
0x00099e96 strd r3, r3, [sp, 8] | __asm ("strd r3, r3, [var_ch]");
0x00099e9a mvn r3, 1 | r3 = ~1;
0x00099e9e bl 0x99a18 | fcn_00099a18 (r0, r1, r2, r3, r4, r5, r6);
0x00099ea2 movs r3, 1 | r3 = 1;
0x00099ea4 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
| label_1:
0x00099ea6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00099ea8 add r7, r6 | r7 += r6;
0x00099eaa add.w r7, r3, r7, lsl 3 | r7 = r3 + (r7 << 3);
0x00099eae str r4, [r7, 0x5c] | *((r7 + 0x5c)) = r4;
0x00099eb0 cmp r0, 0 |
| if (r0 != 0) {
0x00099eb2 bne 0x99f7e | goto label_10;
| }
0x00099eb4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00099eb6 adds r6, 1 | r6++;
0x00099eb8 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00099eba str r3, [sp, 0x18] | var_18h = r3;
0x00099ebc ldr r3, [sp, 0x20] | r3 = var_20h;
0x00099ebe cmp r3, r6 |
| if (r3 != r6) {
0x00099ec0 bne 0x99e28 | goto label_0;
| }
| label_6:
0x00099ec2 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00099ec4 mov.w r3, -1 | r3 = -1;
0x00099ec8 str r3, [r2, 0x2c] | *((r2 + 0x2c)) = r3;
0x00099eca add sp, 0x2c |
0x00099ecc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
| label_8:
0x00099ed0 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00099ed4 movs r2, 0x38 | r2 = 0x38;
0x00099ed6 movs r1, 0 | r1 = 0;
0x00099ed8 mov r0, r4 | r0 = r4;
0x00099eda str r3, [sp, 0x1c] | var_1ch = r3;
0x00099edc blx 0x8264 | fcn_00008264 ();
0x00099ee0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00099ee2 mov r0, sl | r0 = sl;
0x00099ee4 movs r2, 0 | r2 = 0;
0x00099ee6 strd fp, r5, [sp] | __asm ("strd fp, r5, [sp]");
0x00099eea str r4, [sp, 0x10] | var_10h = r4;
0x00099eec mov r1, r3 | r1 = r3;
0x00099eee movs r3, 0 | r3 = 0;
0x00099ef0 strd sb, r3, [sp, 8] | __asm ("strd sb, r3, [var_ch]");
0x00099ef4 mvn r3, 1 | r3 = ~1;
0x00099ef8 bl 0x99a18 | fcn_00099a18 (r0, r1, r2, r3, r4, r5, r6);
0x00099efc clz r3, sb | r3 &= sb;
0x00099f00 lsrs r3, r3, 5 | r3 >>= 5;
0x00099f02 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00099f04 b 0x99ea6 | goto label_1;
| label_9:
0x00099f06 mov r2, ip | r2 = ip;
0x00099f08 movs r3, 1 | r3 = 1;
0x00099f0a add.w ip, r5, 1 |
0x00099f0e b 0x99f16 | goto label_11;
| label_2:
0x00099f10 adds r3, 1 | r3++;
0x00099f12 cmp r3, r0 |
0x00099f14 beq 0x99ed0 |
| } while (r3 == r0);
| label_11:
0x00099f16 ldr r1, [r2, 0x18] | r1 = *((r2 + 0x18));
0x00099f18 adds r2, 0x18 | r2 += 0x18;
0x00099f1a cmp r1, ip |
| if (r1 != ip) {
0x00099f1c bne 0x99f10 | goto label_2;
| }
0x00099f1e movs r2, 0x38 | r2 = 0x38;
0x00099f20 movs r1, 0 | r1 = 0;
0x00099f22 mov r0, r4 | r0 = r4;
0x00099f24 ldr.w sb, [r8, 0x14] | sb = *((r8 + 0x14));
0x00099f28 str r3, [sp, 0x1c] | var_1ch = r3;
0x00099f2a blx 0x8264 | fcn_00008264 ();
0x00099f2e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00099f30 mov r1, sb | r1 = sb;
0x00099f32 mov r0, sl | r0 = sl;
0x00099f34 str r4, [sp, 0x10] | var_10h = r4;
0x00099f36 strd fp, r5, [sp] | __asm ("strd fp, r5, [sp]");
0x00099f3a mov r2, r3 | r2 = r3;
0x00099f3c movs r3, 0 | r3 = 0;
0x00099f3e str r3, [sp, 0xc] | var_ch = r3;
0x00099f40 movs r3, 1 | r3 = 1;
0x00099f42 str r3, [sp, 8] | var_8h = r3;
0x00099f44 mvn r3, 1 | r3 = ~1;
0x00099f48 bl 0x99a18 | r0 = fcn_00099a18 (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00099f4c cbz r0, 0x99f5c |
0x00099f4e ldr r2, [sp, 0x18] | r2 = var_18h;
0x00099f50 mov r3, r7 | r3 = r7;
0x00099f52 add r3, r6 | r3 += r6;
0x00099f54 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x00099f58 str r4, [r3, 0x5c] | *((r3 + 0x5c)) = r4;
0x00099f5a b 0x99f7e |
| } else {
0x00099f5c strd r0, r0, [sp, 8] | __asm ("strd r0, r0, [var_ch]");
0x00099f60 mov r2, r0 | r2 = r0;
0x00099f62 strd fp, r5, [sp] | __asm ("strd fp, r5, [sp]");
0x00099f66 mov r0, sl | r0 = sl;
0x00099f68 str r4, [sp, 0x10] | var_10h = r4;
0x00099f6a mvn r3, 1 | r3 = ~1;
0x00099f6e ldr.w r1, [r8, 0x14] | r1 = *((r8 + 0x14));
0x00099f72 bl 0x99a18 | fcn_00099a18 (r0, r1, r2, r3, r4, r5, r6);
0x00099f76 b 0x99ea6 | goto label_1;
| label_7:
0x00099f78 movs r0, 7 | r0 = 7;
0x00099f7a str.w r4, [sl, 0x5c] | __asm ("str.w r4, [sl, 0x5c]");
| }
| label_10:
0x00099f7e ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x00099f80 str r0, [r3] | *(r3) = r0;
0x00099f82 add sp, 0x2c |
0x00099f84 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00099f88 bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x99f8c */
| #include <stdint.h>
|
; (fcn) fcn.00099f8c () | void fcn_00099f8c (int16_t arg1, int16_t arg2) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_14h_2;
| int16_t var_18h_2;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x00099f8c ldr r2, [pc, 0x1ec] |
0x00099f8e ldr r3, [pc, 0x1f0] | r3 = *(0x9a182);
0x00099f90 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00099f94 sub sp, 0x24 |
0x00099f96 add r2, pc | r2 = 0x134116;
0x00099f98 ldr r5, [r1, 0x48] | r5 = *((r1 + 0x48));
0x00099f9a mov r6, r0 | r6 = r0;
0x00099f9c mov r4, r1 | r4 = r1;
0x00099f9e ldr r3, [r2, r3] |
0x00099fa0 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00099fa2 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00099fa4 str r3, [sp, 0x1c] | var_1ch = r3;
0x00099fa6 mov.w r3, 0 | r3 = 0;
0x00099faa cmp r5, 0 |
| if (r5 == 0) {
0x00099fac beq 0x9a090 | goto label_7;
| }
0x00099fae ldr r3, [r1, 0x4c] | r3 = *((r1 + 0x4c));
0x00099fb0 add r5, r3 | r5 += r3;
| do {
0x00099fb2 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00099fb4 add r3, r0 | r3 += r0;
0x00099fb6 cmp r5, r3 |
| if (r5 >= r3) {
0x00099fb8 bhs 0x9a096 | goto label_8;
| }
| label_2:
0x00099fba movs r2, 0x14 | r2 = 0x14;
0x00099fbc mov r1, r5 | r1 = r5;
0x00099fbe mov r0, r4 | r0 = r4;
0x00099fc0 bl 0x5b840 | r0 = fcn_0005b840 (r0, r1, r2);
0x00099fc4 cmp r0, 0 |
| if (r0 != 0) {
0x00099fc6 bne.w 0x9a0e2 | goto label_1;
| }
0x00099fca ldrb r3, [r5] | r3 = *(r5);
0x00099fcc lsls r0, r3, 0x18 | r0 = r3 << 0x18;
0x00099fce itt pl |
| if (r0 < r3) {
0x00099fd0 movpl r0, 1 | r0 = 1;
| }
| if (r0 < r3) {
0x00099fd2 strpl r3, [sp, 0x14] | var_14h_2 = r3;
| }
| if (r0 < r3) {
0x00099fd4 bmi.w 0x9a150 | goto label_9;
| }
| label_4:
0x00099fd8 ldrb r6, [r5, r0] | r6 = *((r5 + r0));
0x00099fda add r5, r0 | r5 += r0;
0x00099fdc lsls r1, r6, 0x18 | r1 = r6 << 0x18;
0x00099fde itt pl |
| if (r1 < r6) {
0x00099fe0 movpl r0, 1 | r0 = 1;
| }
| if (r1 < r6) {
0x00099fe2 strpl r6, [sp, 0x18] | var_18h_2 = r6;
| }
| if (r1 < r6) {
0x00099fe4 bmi.w 0x9a144 | goto label_10;
| }
| label_3:
0x00099fe8 cmp r6, 0 |
0x00099fea add r5, r0 | r5 += r0;
| if (r6 <= 0) {
0x00099fec ble.w 0x9a13a | goto label_11;
| }
0x00099ff0 ldrd r3, r2, [r4, 0x28] | __asm ("ldrd r3, r2, [r4, 0x28]");
0x00099ff4 add r3, r2 | r3 += r2;
0x00099ff6 subs r3, r3, r5 | r3 -= r5;
0x00099ff8 cmp r3, r6 |
| if (r3 < r6) {
0x00099ffa blt.w 0x9a13a | goto label_11;
| }
0x00099ffe ldr r7, [sp, 0x14] | r7 = var_14h_2;
0x0009a000 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x0009a002 cmp r3, r7 |
| if (r3 < r7) {
0x0009a004 blt.w 0x9a13a | goto label_11;
| }
0x0009a008 ldr r1, [r4, 0x44] | r1 = *((r4 + 0x44));
0x0009a00a asrs r3, r6, 0x1f | r3 = r6 >> 0x1f;
0x0009a00c adds.w r8, r7, r6 | r8 = r7 + r6;
0x0009a010 adc.w r3, r3, r7, asr 31 | __asm ("adc.w r3, r3, r7, asr 31");
0x0009a014 cmp r1, r8 |
0x0009a016 asr.w r2, r1, 0x1f | r2 = r1 >> 0x1f;
0x0009a01a sbcs r2, r3 | __asm ("sbcs r2, r3");
| if (r1 < r8) {
0x0009a01c bge 0x9a036 |
0x0009a01e adds.w sb, r8, r8 | sb = r8 + r8;
0x0009a022 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x0009a024 adcs r3, r3 | __asm ("adcs r3, r3");
0x0009a026 mov r2, sb | r2 = sb;
0x0009a028 blx 0x8638 | r0 = fcn_00008638 ();
0x0009a02c cmp r0, 0 |
| if (r0 == 0) {
0x0009a02e beq.w 0x9a140 | goto label_12;
| }
0x0009a032 strd r0, sb, [r4, 0x40] | __asm ("strd r0, sb, [r4, 0x40]");
| }
0x0009a036 add.w r2, r6, 0xa | r2 = r6 + 0xa;
0x0009a03a mov r1, r5 | r1 = r5;
0x0009a03c mov r0, r4 | r0 = r4;
0x0009a03e bl 0x5b840 | r0 = fcn_0005b840 (r0, r1, r2);
0x0009a042 cmp r0, 0 |
| if (r0 != 0) {
0x0009a044 bne 0x9a0e2 | goto label_1;
| }
0x0009a046 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x0009a048 mov r2, r6 | r2 = r6;
0x0009a04a mov r1, r5 | r1 = r5;
0x0009a04c add r0, r7 | r0 += r7;
0x0009a04e blx 0x7dcc | fcn_00007dcc ();
0x0009a052 str.w r8, [r4, 0x3c] | __asm ("str.w r8, [r4, 0x3c]");
0x0009a056 ldrb r3, [r5, r6] | r3 = *((r5 + r6));
0x0009a058 add r5, r6 | r5 += r6;
0x0009a05a lsls r2, r3, 0x18 | r2 = r3 << 0x18;
0x0009a05c itt pl |
| if (r2 < r3) {
0x0009a05e movpl r0, 1 | r0 = 1;
| }
| if (r2 < r3) {
0x0009a060 strpl r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
| }
| if (r2 < r3) {
0x0009a062 bmi.w 0x9a168 | goto label_13;
| }
| label_6:
0x0009a066 movs r2, 0 | r2 = 0;
0x0009a068 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0009a06a str r2, [r4, 0x50] | *((r4 + 0x50)) = r2;
0x0009a06c add r5, r0 | r5 += r0;
0x0009a06e ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x0009a070 subs r1, r5, r1 | r1 = r5 - r1;
0x0009a072 str r5, [r4, 0x48] | *((r4 + 0x48)) = r5;
0x0009a074 subs r2, r2, r1 | r2 -= r1;
0x0009a076 cmp r2, r3 |
| if (r2 < r3) {
0x0009a078 blt 0x9a13a | goto label_11;
| }
0x0009a07a ldr r2, [r4, 0x30] | r2 = *((r4 + 0x30));
| if (r2 == 0) {
0x0009a07c cbnz r2, 0x9a088 |
0x0009a07e add r5, r3 | r5 += r3;
0x0009a080 ldrb r2, [r5, -0x1] | r2 = *((r5 - 0x1));
0x0009a084 cmp r2, 0 |
| if (r2 != 0) {
0x0009a086 bne 0x9a13a | goto label_11;
| }
| }
0x0009a088 cmp r3, 0 |
| if (r3 == 0) {
0x0009a08a beq 0x9a13a | goto label_11;
| }
| label_0:
0x0009a08c movs r0, 0 | r0 = 0;
0x0009a08e b 0x9a0e2 | goto label_1;
| label_7:
0x0009a090 mov r5, r0 | r5 = r0;
0x0009a092 cmp r0, 0 |
0x0009a094 bne 0x99fb2 |
| } while (r0 != 0);
| label_8:
0x0009a096 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0009a098 cmp r3, 0 |
| if (r3 == 0) {
0x0009a09a beq 0x9a0fc | goto label_14;
| }
0x0009a09c ldr r7, [r3] | r7 = *(r3);
0x0009a09e movs r5, 0 | r5 = 0;
0x0009a0a0 blx 0x84f8 | fcn_000084f8 ();
0x0009a0a4 str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x0009a0a6 cmp r7, 0 |
| if (r7 == 0) {
0x0009a0a8 beq 0x9a08c | goto label_0;
| }
0x0009a0aa ldr.w r8, [r7, 8] | r8 = *((r7 + 8));
0x0009a0ae ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x0009a0b0 ldr.w r6, [r8] | r6 = *(r8);
0x0009a0b4 str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
0x0009a0b6 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0009a0b8 adds r6, 1 | r6++;
0x0009a0ba mov r0, r6 | r0 = r6;
0x0009a0bc str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x0009a0be blx 0x85dc | r0 = fcn_000085dc ();
0x0009a0c2 mov r7, r0 | r7 = r0;
0x0009a0c4 cmp r0, 0 |
| if (r0 == 0) {
0x0009a0c6 beq 0x9a140 | goto label_12;
| }
0x0009a0c8 ldr.w r1, [r8, 4] | r1 = *((r8 + 4));
0x0009a0cc mov r2, r6 | r2 = r6;
0x0009a0ce blx 0x7dcc | fcn_00007dcc ();
0x0009a0d2 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0009a0d4 mov r0, r5 | r0 = r5;
0x0009a0d6 str r6, [r4, 0x4c] | *((r4 + 0x4c)) = r6;
0x0009a0d8 str r6, [r4, 0x2c] | *((r4 + 0x2c)) = r6;
0x0009a0da adds r3, 4 | r3 += 4;
0x0009a0dc str r7, [r4, 0x48] | *((r4 + 0x48)) = r7;
0x0009a0de str r7, [r4, 0x28] | *((r4 + 0x28)) = r7;
0x0009a0e0 str r3, [r4, 0x38] | *((r4 + 0x38)) = r3;
| label_1:
0x0009a0e2 ldr r2, [pc, 0xa0] |
0x0009a0e4 ldr r3, [pc, 0x98] | r3 = *(0x9a180);
0x0009a0e6 add r2, pc | r2 = 0x134270;
0x0009a0e8 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009a0ea ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009a0ec ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0009a0ee eors r2, r3 | r2 ^= r3;
0x0009a0f0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009a0f4 bne 0x9a176 | goto label_15;
| }
0x0009a0f6 add sp, 0x24 |
0x0009a0f8 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_14:
0x0009a0fc ldrb r5, [r4, 5] | r5 = *((r4 + 5));
| if (r5 == 0) {
0x0009a0fe cbz r5, 0x9a15a | goto label_16;
| }
| label_5:
0x0009a100 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x0009a102 movs r5, 0 | r5 = 0;
0x0009a104 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0009a106 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0009a108 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x0009a10a cmp r2, r0 |
0x0009a10c str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x0009a10e sbcs.w r1, r3, r1 | __asm ("sbcs.w r1, r3, r1");
| if (r2 >= r0) {
0x0009a112 bge 0x9a08c | goto label_0;
| }
0x0009a114 adds r2, 1 | r2++;
0x0009a116 add.w r1, r4, 0x2c | r1 = r4 + 0x2c;
0x0009a11a adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009a11e mov r0, r6 | r0 = r6;
0x0009a120 strd r2, r3, [r4, 0x20] | __asm ("strd r2, r3, [r4, 0x20]");
0x0009a124 str r1, [sp, 4] | var_4h_2 = r1;
0x0009a126 add.w r1, r4, 0x28 | r1 = r4 + 0x28;
0x0009a12a str r5, [sp, 8] | var_8h_2 = r5;
0x0009a12c str r1, [sp] | *(sp) = r1;
0x0009a12e bl 0x995fc | r0 = fcn_000995fc (r0, r1, r2, r3, r4, r5);
0x0009a132 cmp r0, 0 |
| if (r0 != 0) {
0x0009a134 bne 0x9a0e2 | goto label_1;
| }
0x0009a136 ldr r5, [r4, 0x28] | r5 = *((r4 + 0x28));
0x0009a138 b 0x99fba | goto label_2;
| label_11:
0x0009a13a movw r0, 0x10b | r0 = 0x10b;
0x0009a13e b 0x9a0e2 | goto label_1;
| label_12:
0x0009a140 movs r0, 7 | r0 = 7;
0x0009a142 b 0x9a0e2 | goto label_1;
| label_10:
0x0009a144 add r1, sp, 0x18 | r1 += var_18h_2;
0x0009a146 mov r0, r5 | r0 = r5;
0x0009a148 bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009a14c ldr r6, [sp, 0x18] | r6 = var_18h_2;
0x0009a14e b 0x99fe8 | goto label_3;
| label_9:
0x0009a150 add r1, sp, 0x14 | r1 += var_14h_2;
0x0009a152 mov r0, r5 | r0 = r5;
0x0009a154 bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009a158 b 0x99fd8 | goto label_4;
| label_16:
0x0009a15a blx 0x84f8 | fcn_000084f8 ();
0x0009a15e ldr r0, [r4, 0x34] | r0 = *((r4 + 0x34));
0x0009a160 blx 0x8300 | fcn_00008300 ();
0x0009a164 str r5, [r4, 0x34] | *((r4 + 0x34)) = r5;
0x0009a166 b 0x9a100 | goto label_5;
| label_13:
0x0009a168 add.w r1, r4, 0x4c | r1 = r4 + 0x4c;
0x0009a16c mov r0, r5 | r0 = r5;
0x0009a16e bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009a172 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x0009a174 b 0x9a066 | goto label_6;
| label_15:
0x0009a176 blx 0x7e8c | fcn_00007e8c ();
0x0009a17a nop |
0x0009a17c subs r4, 0xfa | r4 -= 0xfa;
0x0009a17e movs r3, r0 | r3 = r0;
0x0009a180 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0009a182 movs r0, r0 |
0x0009a184 subs r3, 0xaa | r3 -= 0xaa;
0x0009a186 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9a188 */
| #include <stdint.h>
|
; (fcn) fcn.0009a188 () | void fcn_0009a188 (int16_t arg_1h, int16_t arg_efh, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch_2;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_7ch;
| r0 = arg1;
| r1 = arg2;
0x0009a188 push {r0, r1, r3, sb, sl, lr} |
0x0009a18c ldr r7, [pc, 0x3c0] | r7 = *(0x9a550);
0x0009a18e ldr r2, [r3] | r2 = *(r3);
0x0009a190 sub sp, 0x84 |
0x0009a192 mov sl, r0 | sl = r0;
0x0009a194 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0009a196 str r2, [sp, 4] | var_4h = r2;
0x0009a198 ldr.w r2, [pc, 0x630] | r2 = *(0x0009a7cc);
0x0009a19c str r1, [sp, 0x14] | var_14h = r1;
0x0009a19e str r3, [sp, 0x48] | var_48h = r3;
0x0009a1a0 ldr r1, [r1, 0xc] | r1 = *(arg_1hxc);
0x0009a1a2 add r2, pc | r2 += pc;
0x0009a1a4 ldr.w r3, [pc, 0x628] |
0x0009a1a8 str r1, [sp, 0x4c] | var_4ch = r1;
0x0009a1aa ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0009a1ac ldr r3, [r3] | r3 = *(0x9a7d0);
0x0009a1ae str r3, [sp, 0x7c] | var_7ch = r3;
0x0009a1b0 mov.w r3, 0 | r3 = 0;
0x0009a1b4 ldr r3, [r1, 0xc] | r3 = *(arg_1hxc);
0x0009a1b6 str r3, [sp, 0x58] | var_58h = r3;
0x0009a1b8 ldrb.w r3, [r0, 0xef] | r3 = *(var_0hxef);
0x0009a1bc cmp r3, 0 |
| if (r3 != 0) {
0x0009a1be bne.w 0x9a386 | goto label_22;
| }
0x0009a1c2 ldr.w r3, [pc, 0x610] | r3 = *(0x0009a7d4);
0x0009a1c6 add r3, pc | r3 += pc;
0x0009a1c8 str r3, [sp, 0x2c] | var_2ch = r3;
0x0009a1ca ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009a1cc cmp r3, 0 |
| if (r3 == 0) {
0x0009a1ce beq.w 0x9a396 | goto label_17;
| }
| label_3:
0x0009a1d2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009a1d4 ldr.w r8, [r3, 8] | r8 = *((r3 + 8));
0x0009a1d8 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0009a1da and r2, r3, 2 | r2 = r3 & 2;
0x0009a1de str r2, [sp, 0x5c] | var_5ch = r2;
0x0009a1e0 and r2, r3, 1 | r2 = r3 & 1;
0x0009a1e4 str r2, [sp, 0x28] | var_28h = r2;
0x0009a1e6 and r2, r3, 4 | r2 = r3 & 4;
0x0009a1ea str r2, [sp, 0x30] | var_30h = r2;
0x0009a1ec and r2, r3, 8 | r2 = r3 & 8;
0x0009a1f0 str r2, [sp, 0x64] | var_64h = r2;
0x0009a1f2 and r2, r3, 0x10 | r2 = r3 & 0x10;
0x0009a1f6 and r3, r3, 0x20 | r3 &= 0x20;
0x0009a1fa str r2, [sp, 0x60] | var_60h = r2;
0x0009a1fc str r3, [sp, 0x38] | var_38h = r3;
| label_7:
0x0009a1fe cmp.w r8, 0 |
| if (r8 <= 0) {
0x0009a202 ble 0x9a272 | goto label_23;
| }
0x0009a204 ldr r3, [sp, 4] | r3 = var_4h;
0x0009a206 movs r5, 0 | r5 = 0;
0x0009a208 ldr.w sb, [sp, 0x14] | sb = var_14h;
0x0009a20c mov r4, r5 | r4 = r5;
0x0009a20e subs r6, r3, 4 | r6 = r3 - 4;
0x0009a210 b 0x9a228 |
| while (r3 != 0) {
0x0009a212 ldrb.w r8, [r7, 5] | r8 = *((r7 + 5));
0x0009a216 cmp.w r8, 0 |
| if (r8 == 0) {
0x0009a21a beq 0x9a25e | goto label_24;
| }
| label_1:
0x0009a21c str r4, [r7, 0x28] | *((r7 + 0x28)) = r4;
| label_0:
0x0009a21e ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0009a222 adds r5, 1 | r5++;
0x0009a224 cmp r3, r5 |
| if (r3 <= r5) {
0x0009a226 ble 0x9a270 | goto label_25;
| }
0x0009a228 ldr r7, [r6, 4]! | r7 = *((r6 += 4));
0x0009a22c ldrb r3, [r7, 4] | r3 = *((r7 + 4));
0x0009a22e cmp r3, 0 |
0x0009a230 bne 0x9a212 |
| }
0x0009a232 mov r1, r7 | r1 = r7;
0x0009a234 mov r0, sl | r0 = sl;
0x0009a236 bl 0x99f8c | r0 = fcn_00099f8c (r0, r1);
0x0009a23a cmp r0, 0 |
| if (r0 == 0) {
0x0009a23c beq 0x9a21e | goto label_0;
| }
| label_4:
0x0009a23e ldr.w r2, [pc, 0x598] | r2 = *(0x0009a7d8);
0x0009a242 ldr.w r3, [pc, 0x58c] | r3 = *(0x9a7d2);
0x0009a246 add r2, pc | r2 += pc;
0x0009a248 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0009a24a ldr r2, [r3] | r2 = *(0x9a7d2);
0x0009a24c ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0009a24e eors r2, r3 | r2 ^= r3;
0x0009a250 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009a254 bne.w 0x9a7b4 | goto label_26;
| }
0x0009a258 add sp, 0x84 |
0x0009a25a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_24:
0x0009a25e ldr r0, [r7, 0x28] | r0 = *((r7 + 0x28));
0x0009a260 blx 0x84f8 | fcn_000084f8 ();
0x0009a264 ldr r0, [r7, 0x34] | r0 = *((r7 + 0x34));
0x0009a266 blx 0x8300 | fcn_00008300 ();
0x0009a26a str.w r8, [r7, 0x34] | __asm ("str.w r8, [r7, 0x34]");
0x0009a26e b 0x9a21c | goto label_1;
| label_25:
0x0009a270 mov r8, r3 | r8 = r3;
| label_23:
0x0009a272 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009a274 cmp r3, r8 |
0x0009a276 it eq |
| if (r3 != r8) {
0x0009a278 addeq r8, r3, -1 | r8 = r3 + -1;
| }
0x0009a27c subs.w r6, r8, 1 | r6 = r8 - 1;
| if (r6 < r8) {
0x0009a280 bmi 0x9a2bc | goto label_27;
| }
0x0009a282 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009a284 ldr.w fp, [sp, 4] | fp = var_4h;
0x0009a288 subs r5, r3, 1 | r5 = r3 - 1;
0x0009a28a mov sb, r5 | sb = r5;
| label_2:
0x0009a28c cmp r6, sb |
0x0009a28e itt lt |
| if (r6 >= sb) {
0x0009a290 addlt r4, fp, r6, lsl 2 | r4 = fp + (r6 << 2);
| }
| if (r6 < sb) {
0x0009a294 mov r8, r6 | r8 = r6;
| }
| if (r6 < sb) {
0x0009a296 blt 0x9a2a6 | goto label_28;
| }
0x0009a298 b 0x9a2b8 | goto label_29;
| do {
0x0009a29a add.w r8, r8, 1 | r8++;
0x0009a29e strd r5, r7, [r4, -0x4] | __asm ("strd r5, r7, [r4, -0x4]");
0x0009a2a2 cmp r8, sb |
| if (r8 == sb) {
0x0009a2a4 beq 0x9a2b8 | goto label_29;
| }
| label_28:
0x0009a2a6 ldr r7, [r4] | r7 = *(r4);
0x0009a2a8 ldr r5, [r4, 4]! | r5 = *((r4 += 4));
0x0009a2ac mov r0, r7 | r0 = r7;
0x0009a2ae mov r1, r5 | r1 = r5;
0x0009a2b0 bl 0xd5cc | r0 = fcn_0000d5cc (r0, r1);
0x0009a2b4 cmp r0, 0 |
0x0009a2b6 bge 0x9a29a |
| } while (r0 >= 0);
| label_29:
0x0009a2b8 subs r6, 1 | r6--;
| if (r6 >= 1) {
0x0009a2ba bhs 0x9a28c | goto label_2;
| }
| label_27:
0x0009a2bc ldr r3, [sp, 4] | r3 = var_4h;
0x0009a2be ldr r2, [sp, 0x14] | r2 = var_14h;
0x0009a2c0 ldr r6, [r3] | r6 = *(r3);
0x0009a2c2 movs r3, 0 | r3 = 0;
0x0009a2c4 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0009a2c6 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0009a2c8 cmp r3, 0 |
| if (r3 == 0) {
0x0009a2ca beq 0x9a396 | goto label_17;
| }
0x0009a2cc ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0009a2ce ldr r4, [r6, 0x3c] | r4 = *((r6 + 0x3c));
0x0009a2d0 ldr r7, [r6, 0x40] | r7 = *((r6 + 0x40));
0x0009a2d2 ldr r1, [r3] | r1 = *(r3);
0x0009a2d4 str r4, [r2, 0x2c] | *((r2 + 0x2c)) = r4;
0x0009a2d6 str r7, [r2, 0x28] | *((r2 + 0x28)) = r7;
0x0009a2d8 ldr r2, [sp, 0x60] | r2 = var_60h;
0x0009a2da subs r3, r1, 0 | r3 = r1 - 0;
0x0009a2dc it ne |
| if (r3 == r1) {
0x0009a2de movne r3, 1 | r3 = 1;
| }
0x0009a2e0 cmp r2, 0 |
0x0009a2e2 it ne |
| if (r2 == 0) {
0x0009a2e4 movne r3, 0 | r3 = 0;
| }
0x0009a2e6 cmp r3, 0 |
| if (r3 != 0) {
0x0009a2e8 bne.w 0x9a736 | goto label_30;
| }
| label_18:
0x0009a2ec ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009a2ee cmp r3, 1 |
| if (r3 <= 1) {
0x0009a2f0 ble.w 0x9a772 | goto label_31;
| }
0x0009a2f4 ldr r5, [sp, 4] | r5 = var_4h;
0x0009a2f6 mov.w r8, 1 | r8 = 1;
0x0009a2fa mov sb, r3 | sb = r3;
0x0009a2fc b 0x9a318 |
| while (r1 != 0) {
0x0009a2fe ldr r2, [r3, 0x3c] | r2 = *((r3 + 0x3c));
0x0009a300 cmp r4, r2 |
| if (r4 != r2) {
0x0009a302 bne 0x9a322 | goto label_32;
| }
0x0009a304 ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x0009a306 mov r2, r4 | r2 = r4;
0x0009a308 mov r0, r7 | r0 = r7;
0x0009a30a blx 0x7e40 | r0 = fcn_00007e40 ();
| if (r0 != 0) {
0x0009a30e cbnz r0, 0x9a322 | goto label_32;
| }
0x0009a310 add.w r8, r8, 1 | r8++;
0x0009a314 cmp sb, r8 |
| if (sb == r8) {
0x0009a316 beq 0x9a39a | goto label_33;
| }
0x0009a318 ldr r3, [r5, 4]! | r3 = *((r5 += 4));
0x0009a31c ldr r1, [r3, 0x28] | r1 = *((r3 + 0x28));
0x0009a31e cmp r1, 0 |
0x0009a320 bne 0x9a2fe |
| }
| label_32:
0x0009a322 sub.w r3, r8, 1 | r3 = r8 - 1;
0x0009a326 clz r3, r3 | r3 &= r3;
0x0009a32a lsrs r3, r3, 5 | r3 >>= 5;
| label_20:
0x0009a32c ldr r2, [sp, 0x58] | r2 = var_58h;
0x0009a32e and r3, r3, 1 | r3 &= 1;
0x0009a332 tst.w r2, 0x22 |
0x0009a336 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0009a338 it ne |
| if ((r2 & 0x22) == 0) {
0x0009a33a movne r3, 0 | r3 = 0;
| }
0x0009a33c clz r2, r2 | r2 &= r2;
0x0009a340 lsrs r2, r2, 5 | r2 >>= 5;
0x0009a342 str r2, [sp, 0x34] | var_34h = r2;
| if (r3 == 0) {
0x0009a344 cbz r3, 0x9a3a4 | goto label_34;
| }
0x0009a346 ldrb.w r0, [sl, 0xef] | r0 = *((sl + 0xef));
0x0009a34a ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x0009a34c cmp r0, 0 |
| if (r0 != 0) {
0x0009a34e bne.w 0x9a716 | goto label_35;
| }
0x0009a352 ldrd r4, r5, [r6, 0x48] | __asm ("ldrd r4, r5, [r6, 0x48]");
0x0009a356 ldr r6, [sp, 0x14] | r6 = var_14h;
0x0009a358 str r5, [r6, 0x34] | *((r6 + 0x34)) = r5;
0x0009a35a cmp r3, 0 |
| if (r3 == 0) {
0x0009a35c beq.w 0x9a720 | goto label_36;
| }
0x0009a360 ldrd r0, r3, [r6, 0x10] | __asm ("ldrd r0, r3, [r6, 0x10]");
0x0009a364 cmp r5, r3 |
| if (r5 > r3) {
0x0009a366 ble 0x9a378 |
0x0009a368 lsls r1, r5, 1 | r1 = r5 << 1;
0x0009a36a str r1, [r6, 0x14] | *((r6 + 0x14)) = r1;
0x0009a36c blx 0x8514 | r0 = fcn_00008514 ();
0x0009a370 cmp r0, 0 |
| if (r0 == 0) {
0x0009a372 beq.w 0x9a778 | goto label_37;
| }
0x0009a376 str r0, [r6, 0x10] | *((r6 + 0x10)) = r0;
| }
0x0009a378 mov r1, r4 | r1 = r4;
0x0009a37a mov r2, r5 | r2 = r5;
0x0009a37c blx 0x7dcc | fcn_00007dcc ();
0x0009a380 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009a382 ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
0x0009a384 b 0x9a720 | goto label_36;
| label_22:
0x0009a386 ldr.w r3, [pc, 0x454] | r3 = *(0x0009a7dc);
0x0009a38a add r3, pc | r3 += pc;
0x0009a38c str r3, [sp, 0x2c] | var_2ch = r3;
0x0009a38e ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009a390 cmp r3, 0 |
| if (r3 != 0) {
0x0009a392 bne.w 0x9a1d2 | goto label_3;
| }
| label_17:
0x0009a396 movs r0, 0 | r0 = 0;
0x0009a398 b 0x9a23e | goto label_4;
| label_33:
0x0009a39a ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0009a39c clz r3, r3 | r3 &= r3;
0x0009a3a0 lsrs r3, r3, 5 | r3 >>= 5;
0x0009a3a2 str r3, [sp, 0x34] | var_34h = r3;
| label_34:
0x0009a3a4 ldr r3, [sp, 4] | r3 = var_4h;
0x0009a3a6 mov r1, r6 | r1 = r6;
0x0009a3a8 adds r5, r3, 4 | r5 = r3 + 4;
0x0009a3aa add.w r4, r3, r8, lsl 2 | r4 = r3 + (r8 << 2);
0x0009a3ae b 0x9a3b4 |
| while (r4 != r5) {
0x0009a3b0 ldr r1, [r5], 4 | r1 = *(r5);
| r5 += 4;
0x0009a3b4 ldrb.w r0, [sl, 0xef] | r0 = *((sl + 0xef));
0x0009a3b8 bl 0x5b8c4 | fcn_0005b8c4 (r0);
0x0009a3bc cmp r4, r5 |
0x0009a3be bne 0x9a3b0 |
| }
| label_19:
0x0009a3c0 ldr r4, [sp, 4] | r4 = var_4h;
0x0009a3c2 mov r1, r8 | r1 = r8;
0x0009a3c4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0009a3c6 mov r2, r8 | r2 = r8;
0x0009a3c8 mov r0, r4 | r0 = r4;
0x0009a3ca bl 0xad04 | fcn_0000ad04 (r0, r1, r2, r3);
0x0009a3ce ldr r1, [r4] | r1 = *(r4);
0x0009a3d0 ldr r3, [r1, 0x50] | r3 = *((r1 + 0x50));
0x0009a3d2 cmp r3, 0 |
| if (r3 == 0) {
0x0009a3d4 beq.w 0x9a57c | goto label_38;
| }
0x0009a3d8 movs r3, 0 | r3 = 0;
0x0009a3da mov fp, sl |
0x0009a3dc add r2, sp, 0x6c | r2 += var_6ch;
0x0009a3de str r3, [sp, 0x18] | var_18h = r3;
0x0009a3e0 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x0009a3e2 str r3, [sp] | *(sp) = r3;
0x0009a3e4 add r3, sp, 0x68 | r3 += var_68h;
0x0009a3e6 str r2, [sp, 0x24] | var_24h = r2;
0x0009a3e8 str r3, [sp, 0x20] | var_20h = r3;
0x0009a3ea str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
| label_6:
0x0009a3ee ldrd sl, r6, [r1, 0x58] | __asm ("ldrd sl, r6, [r1, 0x58]");
0x0009a3f2 movs r3, 0 | r3 = 0;
0x0009a3f4 strd r3, r3, [sp, 0x68] | __asm ("strd r3, r3, [sp, 0x68]");
0x0009a3f8 mov r0, fp | r0 = fp;
0x0009a3fa ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_20h]");
0x0009a3fe str r6, [sp, 8] | var_8h = r6;
0x0009a400 bl 0x5b95c | fcn_0005b95c (r0, r1, r2, r3, r4);
0x0009a404 ldr r7, [sp, 0x10] | r7 = var_10h;
0x0009a406 cmp r7, 1 |
| if (r7 == 1) {
0x0009a408 beq.w 0x9a732 | goto label_39;
| }
0x0009a40c ldr r5, [sp, 4] | r5 = var_4h;
0x0009a40e movs r4, 1 | r4 = 1;
0x0009a410 b 0x9a42e |
| while (r3 != 0) {
0x0009a412 ldrd r2, r3, [r1, 0x58] | __asm ("ldrd r2, r3, [r1, 0x58]");
0x0009a416 cmp r3, r6 |
0x0009a418 it eq |
| if (r3 == r6) {
0x0009a41a cmpeq r2, sl | __asm ("cmpeq r2, sl");
| }
| if (r3 != r6) {
0x0009a41c bne 0x9a438 | goto label_16;
| }
0x0009a41e movs r3, 0 | r3 = 0;
0x0009a420 adds r4, 1 | r4++;
0x0009a422 mov r0, fp | r0 = fp;
0x0009a424 mov r2, r3 | r2 = r3;
0x0009a426 bl 0x5b95c | fcn_0005b95c (r0, r1, r2, r3, r4);
0x0009a42a cmp r7, r4 |
| if (r7 == r4) {
0x0009a42c beq 0x9a438 | goto label_16;
| }
0x0009a42e ldr r1, [r5, 4]! | r1 = *((r5 += 4));
0x0009a432 ldr r3, [r1, 0x50] | r3 = *((r1 + 0x50));
0x0009a434 cmp r3, 0 |
0x0009a436 bne 0x9a412 |
| }
| label_16:
0x0009a438 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009a43a cmp r3, 0 |
| if (r3 != 0) {
0x0009a43c bne.w 0x9a60e | goto label_40;
| }
| label_10:
0x0009a440 ldr r3, [sp, 0x34] | r3 = var_34h;
| if (r3 == 0) {
0x0009a442 cbnz r3, 0x9a44c |
0x0009a444 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0009a446 cmp r3, 0 |
| if (r3 <= 0) {
0x0009a448 ble.w 0x9a556 | goto label_11;
| }
| }
0x0009a44c ldrb.w r3, [fp, 0xef] | r3 = *(arg_efh);
0x0009a450 cmp r3, 0 |
| if (r3 == 0) {
0x0009a452 beq.w 0x9a5dc | goto label_41;
| }
0x0009a456 ldr r3, [sp] | r3 = *(sp);
0x0009a458 cmp r3, 0 |
| if (r3 <= 0) {
0x0009a45a ble.w 0x9a5fe | goto label_42;
| }
0x0009a45e ldr r2, [sp, 0x18] | r2 = var_18h;
0x0009a460 ldr r1, [sp, 8] | r1 = var_8h;
0x0009a462 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x0009a464 cmp sl, r2 |
0x0009a466 sbcs.w r3, r1, r0 | __asm ("sbcs.w r3, r1, r0");
| if (sl >= r2) {
0x0009a46a bge.w 0x9a72c | goto label_43;
| }
0x0009a46e subs.w r7, r2, sl | r7 = r2 - sl;
0x0009a472 sbc.w sb, r0, r1 | __asm ("sbc.w sb, r0, r1");
| label_9:
0x0009a476 mov r3, r7 | r3 = r7;
0x0009a478 mov r2, sb | r2 = sb;
0x0009a47a movs r1, 0 | r1 = 0;
| do {
0x0009a47c lsrs r3, r3, 7 | r3 >>= 7;
0x0009a47e adds r1, 1 | r1++;
0x0009a480 orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009a484 lsrs r2, r2, 7 | r2 >>= 7;
0x0009a486 orrs.w r0, r3, r2 | r0 = r3 | r2;
0x0009a48a bne 0x9a47c |
| } while (r0 != r3);
0x0009a48c ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r3 != 0) {
0x0009a48e cbz r3, 0x9a496 |
0x0009a490 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0009a492 adds r3, 1 | r3++;
0x0009a494 add r1, r3 | r1 += r3;
| }
0x0009a496 ldr r3, [sp] | r3 = *(sp);
0x0009a498 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0009a49a add r1, r3 | r1 += r3;
0x0009a49c ldrd r0, r3, [r2, 0x10] | __asm ("ldrd r0, r3, [r2, 0x10]");
0x0009a4a0 adds r1, 0x14 | r1 += 0x14;
0x0009a4a2 cmp r1, r3 |
| if (r1 > r3) {
0x0009a4a4 bgt.w 0x9a65a | goto label_44;
| }
| label_12:
0x0009a4a8 ldr r3, [sp] | r3 = *(sp);
0x0009a4aa adds r3, r0, r3 | r3 = r0 + r3;
0x0009a4ac str r3, [sp, 0xc] | var_ch = r3;
0x0009a4ae ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009a4b0 cmp r3, 0 |
| if (r3 == 0) {
0x0009a4b2 beq.w 0x9a61e | goto label_45;
| }
0x0009a4b6 ldrd r3, r2, [sp, 0x68] | __asm ("ldrd r3, r2, [var_68h]");
0x0009a4ba ldrb r1, [r3] | r1 = *(r3);
0x0009a4bc adds r2, r3, r2 | r2 = r3 + r2;
0x0009a4be mov lr, r2 | lr = r2;
0x0009a4c0 cmp r1, 1 |
| if (r1 == 1) {
0x0009a4c2 beq.w 0x9a6a4 | goto label_46;
| }
0x0009a4c6 cmp r1, 2 |
0x0009a4c8 itt ne |
| if (r1 == 2) {
0x0009a4ca movne r5, 0 | r5 = 0;
| }
| if (r1 == 2) {
0x0009a4cc movne r6, r5 | r6 = r5;
| }
| if (r1 == 2) {
0x0009a4ce beq.w 0x9a6da | goto label_47;
| }
| label_15:
0x0009a4d2 tst.w r1, 0xfe |
| if ((r1 & 0xfe) == 0) {
0x0009a4d6 beq 0x9a4e8 | goto label_48;
| }
| do {
0x0009a4d8 and r2, r1, 0x80 | r2 = r1 & 0x80;
0x0009a4dc ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x0009a4e0 orrs r2, r1 | r2 |= r1;
0x0009a4e2 tst.w r2, 0xfe |
0x0009a4e6 bne 0x9a4d8 |
| } while ((r2 & 0xfe) != 0);
| label_48:
0x0009a4e8 cmp lr, r3 |
| if (lr < r3) {
0x0009a4ea bls 0x9a536 | goto label_49;
| }
| label_14:
0x0009a4ec str.w sl, [sp, 0x44] | __asm ("str.w sl, [var_44h]");
0x0009a4f0 add r1, sp, 0x70 | r1 += var_70h;
0x0009a4f2 ldr.w sl, [sp, 0xc] | sl = var_ch;
0x0009a4f6 strd r4, fp, [sp, 0x3c] | __asm ("strd r4, fp, [var_0hx3c]");
0x0009a4fa mov fp, r6 |
0x0009a4fc str r7, [sp, 0x50] | var_50h = r7;
0x0009a4fe mov r7, lr | r7 = lr;
0x0009a500 str.w sb, [sp, 0x54] | __asm ("str.w sb, [var_54h]");
| label_5:
0x0009a504 adds r6, r3, 1 | r6 = r3 + 1;
0x0009a506 mov r0, r6 | r0 = r6;
0x0009a508 bl 0xa5b4 | fcn_0000a5b4 (r0, r1);
0x0009a50c ldrb r2, [r6, r0] | r2 = *((r6 + r0));
0x0009a50e adds r3, r6, r0 | r3 = r6 + r0;
0x0009a510 cmp r2, 2 |
| if (r2 == 2) {
0x0009a512 beq 0x9a584 | goto label_50;
| }
| label_8:
0x0009a514 tst.w r2, 0xfe |
| if ((r2 & 0xfe) == 0) {
0x0009a518 beq 0x9a52a | goto label_51;
| }
| do {
0x0009a51a and r0, r2, 0x80 | r0 = r2 & 0x80;
0x0009a51e ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x0009a522 orrs r0, r2 | r0 |= r2;
0x0009a524 tst.w r0, 0xfe |
0x0009a528 bne 0x9a51a |
| } while ((r0 & 0xfe) != 0);
| label_51:
0x0009a52a cmp r7, r3 |
| if (r7 > r3) {
0x0009a52c bhi 0x9a504 | goto label_5;
| }
0x0009a52e mov r6, fp | r6 = fp;
0x0009a530 ldr r4, [sp, 0x3c] | r4 = var_3ch;
0x0009a532 ldrd fp, sl, [sp, 0x40] | __asm ("ldrd fp, sl, [var_40h]");
| if (r5 != 0) {
| label_49:
0x0009a536 cbz r5, 0x9a546 |
0x0009a538 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0009a53a mov r3, r6 | r3 = r6;
0x0009a53c mov.w r1, 0 | r1 = 0;
0x0009a540 adds r3, 1 | r3++;
0x0009a542 strb r1, [r2, r6] | *((r2 + r6)) = r1;
0x0009a544 mov r6, r3 | r6 = r3;
| }
| if (r6 != 0) {
0x0009a546 cbz r6, 0x9a556 |
0x0009a548 ldr r2, [sp] | r2 = *(sp);
0x0009a54a ldr r3, [sp, 8] | r3 = var_8h;
0x0009a54c str.w sl, [sp, 0x18] | __asm ("str.w sl, [var_18h]");
0x0009a550 add r2, r6 | r2 += r6;
0x0009a552 str r2, [sp] | *(sp) = r2;
0x0009a554 str r3, [sp, 0x1c] | var_1ch_2 = r3;
| }
| label_11:
0x0009a556 mov r2, r4 | r2 = r4;
0x0009a558 ldr r4, [sp, 4] | r4 = var_4h;
0x0009a55a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0009a55c ldr r1, [sp, 0x10] | r1 = var_10h;
0x0009a55e mov r0, r4 | r0 = r4;
0x0009a560 bl 0xad04 | fcn_0000ad04 (r0, r1, r2, r3);
0x0009a564 ldr r1, [r4] | r1 = *(r4);
0x0009a566 ldr r3, [r1, 0x50] | r3 = *((r1 + 0x50));
0x0009a568 cmp r3, 0 |
| if (r3 != 0) {
0x0009a56a bne.w 0x9a3ee | goto label_6;
| }
0x0009a56e ldr r3, [sp] | r3 = *(sp);
0x0009a570 mov sl, fp | sl = fp;
0x0009a572 ldr.w r8, [sp, 0x10] | r8 = var_10h;
0x0009a576 cmp r3, 0 |
| if (r3 > 0) {
0x0009a578 bgt.w 0x9a786 | goto label_52;
| }
| label_38:
0x0009a57c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009a57e str.w r8, [r3, 8] | __asm ("str.w r8, [r3, 8]");
0x0009a582 b 0x9a1fe | goto label_7;
| label_50:
0x0009a584 cmp r5, 0 |
| if (r5 == 0) {
0x0009a586 beq 0x9a66c | goto label_53;
| }
| label_13:
0x0009a588 mov.w r2, 1 | r2 = 1;
0x0009a58c add.w sb, fp, 1 | sb += arg_1h;
0x0009a590 strb.w r2, [sl, fp] | *((sl + fp)) = r2;
0x0009a594 add.w fp, sl, sb |
0x0009a598 ldrd r2, r4, [sp, 0x70] | __asm ("ldrd r2, r4, [var_70h]");
0x0009a59c mov r5, fp | r5 = fp;
| do {
0x0009a59e lsr.w lr, r2, 7 | lr = r2 >> 7;
0x0009a5a2 orn ip, r2, 0x7f | ip = r2 | 0x7f;
| ip = ~ip;
0x0009a5a6 uxtb.w r8, r2 | r8 = (int8_t) r2;
0x0009a5aa orr.w r2, lr, r4, lsl 25 | r2 = lr | (r4 << 25);
0x0009a5ae lsrs r4, r4, 7 | r4 >>= 7;
0x0009a5b0 mov lr, r5 | lr = r5;
0x0009a5b2 strb ip, [r5], 1 | *(r5) = ip;
| r5++;
0x0009a5b6 orrs.w ip, r2, r4 |
0x0009a5ba bne 0x9a59e |
| } while (ip != r2);
0x0009a5bc sub.w r5, r5, fp | r5 -= fp;
0x0009a5c0 mov.w r2, 2 | r2 = 2;
0x0009a5c4 add r5, sb | r5 += sb;
0x0009a5c6 and r8, r8, 0x7f | r8 &= 0x7f;
0x0009a5ca strb.w r8, [lr] | *(lr) = r8;
0x0009a5ce add.w fp, r5, 1 |
0x0009a5d2 strb.w r2, [sl, r5] | *((sl + r5)) = r2;
0x0009a5d6 movs r5, 1 | r5 = 1;
0x0009a5d8 ldrb r2, [r6, r0] | r2 = *((r6 + r0));
0x0009a5da b 0x9a514 | goto label_8;
| label_41:
0x0009a5dc ldr r3, [sp, 0x18] | r3 = var_18h;
0x0009a5de ldr r2, [sp, 8] | r2 = var_8h;
0x0009a5e0 cmp r3, sl |
0x0009a5e2 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x0009a5e4 sbcs r3, r2 | __asm ("sbcs r3, r2");
0x0009a5e6 ldr r2, [sp] | r2 = *(sp);
0x0009a5e8 ite ge |
| if (r3 < sl) {
0x0009a5ea movge r3, 1 | r3 = 1;
| }
| if (r3 >= sl) {
0x0009a5ec movlt r3, 0 | r3 = 0;
| }
0x0009a5ee cmp r2, 0 |
0x0009a5f0 ite le |
| if (r2 > 0) {
0x0009a5f2 movle r3, 0 | r3 = 0;
| }
| if (r2 <= 0) {
0x0009a5f4 andgt r3, r3, 1 | r3 &= 1;
| }
0x0009a5f8 cmp r3, 0 |
| if (r3 != 0) {
0x0009a5fa bne.w 0x9a72c | goto label_43;
| }
| label_42:
0x0009a5fe ldr r3, [sp, 0x18] | r3 = var_18h;
0x0009a600 ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x0009a602 subs.w r7, sl, r3 | r7 = sl - r3;
0x0009a606 ldr r3, [sp, 8] | r3 = var_8h;
0x0009a608 sbc.w sb, r3, r2 | __asm ("sbc.w sb, r3, r2");
0x0009a60c b 0x9a476 | goto label_9;
| label_40:
0x0009a60e ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0009a610 movs r1, 0 | r1 = 0;
0x0009a612 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0009a614 ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_20h]");
0x0009a618 bl 0xc148 | fcn_0000c148 (r0, r1, r2, r3);
0x0009a61c b 0x9a440 | goto label_10;
| label_45:
0x0009a61e ldr r3, [sp, 0xc] | r3 = var_ch;
| do {
0x0009a620 lsrs r1, r7, 7 | r1 = r7 >> 7;
0x0009a622 orn r0, r7, 0x7f | r0 = r7 | 0x7f;
| r0 = ~r0;
0x0009a626 uxtb r2, r7 | r2 = (int8_t) r7;
0x0009a628 orr.w r7, r1, sb, lsl 25 | r7 = r1 | (sb << 25);
0x0009a62c lsr.w sb, sb, 7 | sb >>= 7;
0x0009a630 mov r1, r3 | r1 = r3;
0x0009a632 strb r0, [r3], 1 | *(r3) = r0;
| r3++;
0x0009a636 orrs.w r0, r7, sb | r0 = r7 | sb;
0x0009a63a bne 0x9a620 |
| } while (r0 != r7);
0x0009a63c ldr r0, [sp, 0xc] | r0 = var_ch;
0x0009a63e and r2, r2, 0x7f | r2 &= 0x7f;
0x0009a642 strb r2, [r1] | *(r1) = r2;
0x0009a644 str.w sl, [sp, 0x18] | __asm ("str.w sl, [var_18h]");
0x0009a648 subs r3, r3, r0 | r3 -= r0;
0x0009a64a ldr r0, [sp] | r0 = *(sp);
0x0009a64c add r0, r3 | r0 += r3;
0x0009a64e ldr r3, [sp, 0x28] | r3 = var_28h;
0x0009a650 str r0, [sp] | *(sp) = r0;
| if (r3 != 0) {
0x0009a652 cbnz r3, 0x9a6b4 | goto label_54;
| }
0x0009a654 ldr r3, [sp, 8] | r3 = var_8h;
0x0009a656 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x0009a658 b 0x9a556 | goto label_11;
| label_44:
0x0009a65a lsls r1, r1, 1 | r1 <<= 1;
0x0009a65c mov r5, r2 | r5 = r2;
0x0009a65e str r1, [r2, 0x14] | *((r2 + 0x14)) = r1;
0x0009a660 blx 0x8514 | r0 = fcn_00008514 ();
0x0009a664 cmp r0, 0 |
| if (r0 == 0) {
0x0009a666 beq 0x9a766 | goto label_55;
| }
0x0009a668 str r0, [r5, 0x10] | *((r5 + 0x10)) = r0;
0x0009a66a b 0x9a4a8 | goto label_12;
| label_53:
0x0009a66c ldrd r2, r4, [sp, 0x50] | __asm ("ldrd r2, r4, [var_50h]");
0x0009a670 add.w sb, sl, fp | sb = sl + fp;
0x0009a674 mov r5, sb | r5 = sb;
| do {
0x0009a676 lsr.w lr, r2, 7 | lr = r2 >> 7;
0x0009a67a orn ip, r2, 0x7f | ip = r2 | 0x7f;
| ip = ~ip;
0x0009a67e uxtb.w r8, r2 | r8 = (int8_t) r2;
0x0009a682 orr.w r2, lr, r4, lsl 25 | r2 = lr | (r4 << 25);
0x0009a686 lsrs r4, r4, 7 | r4 >>= 7;
0x0009a688 mov lr, r5 | lr = r5;
0x0009a68a strb ip, [r5], 1 | *(r5) = ip;
| r5++;
0x0009a68e orrs.w ip, r2, r4 |
0x0009a692 bne 0x9a676 |
| } while (ip != r2);
0x0009a694 sub.w r5, r5, sb | r5 -= sb;
0x0009a698 and r8, r8, 0x7f | r8 &= 0x7f;
0x0009a69c add fp, r5 |
0x0009a69e strb.w r8, [lr] | *(lr) = r8;
0x0009a6a2 b 0x9a588 | goto label_13;
| label_46:
0x0009a6a4 cmp r3, r2 |
0x0009a6a6 ittt lo |
| if (r3 >= r2) {
0x0009a6a8 movlo r2, 0 | r2 = 0;
| }
| if (r3 >= r2) {
0x0009a6aa movlo r6, r2 | r6 = r2;
| }
| if (r3 < r2) {
0x0009a6ac movlo r5, r2 | r5 = r2;
| goto label_56;
| }
| if (r3 <= r2) {
| label_56:
0x0009a6ae blo.w 0x9a4ec | goto label_14;
| }
0x0009a6b2 b 0x9a556 | goto label_11;
| label_54:
0x0009a6b4 ldr r6, [sp, 0x14] | r6 = var_14h;
0x0009a6b6 ldr r5, [sp, 0x6c] | r5 = var_6ch;
0x0009a6b8 ldr r7, [sp] | r7 = *(sp);
0x0009a6ba ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0009a6bc ldr r3, [sp, 8] | r3 = var_8h;
0x0009a6be mov r2, r5 | r2 = r5;
0x0009a6c0 ldr r1, [sp, 0x68] | r1 = var_68h;
0x0009a6c2 add r5, r7 | r5 += r7;
0x0009a6c4 add r0, r7 | r0 += r7;
0x0009a6c6 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x0009a6c8 blx 0x7dcc | fcn_00007dcc ();
0x0009a6cc ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0009a6ce mov.w r2, 0 | r2 = 0;
0x0009a6d2 strb r2, [r3, r5] | *((r3 + r5)) = r2;
0x0009a6d4 adds r3, r5, 1 | r3 = r5 + 1;
0x0009a6d6 str r3, [sp] | *(sp) = r3;
0x0009a6d8 b 0x9a556 | goto label_11;
| label_47:
0x0009a6da ldr r0, [sp, 0xc] | r0 = var_ch;
0x0009a6dc mov r2, r7 | r2 = r7;
0x0009a6de mov r1, sb | r1 = sb;
| do {
0x0009a6e0 lsrs r6, r2, 7 | r6 = r2 >> 7;
0x0009a6e2 orn r5, r2, 0x7f | r5 = r2 | 0x7f;
| r5 = ~r5;
0x0009a6e6 uxtb.w ip, r2 | ip = (int8_t) r2;
0x0009a6ea orr.w r2, r6, r1, lsl 25 | r2 = r6 | (r1 << 25);
0x0009a6ee lsrs r1, r1, 7 | r1 >>= 7;
0x0009a6f0 mov r6, r0 | r6 = r0;
0x0009a6f2 strb r5, [r0], 1 | *(r0) = r5;
| r0++;
0x0009a6f6 orrs.w r5, r2, r1 | r5 = r2 | r1;
0x0009a6fa bne 0x9a6e0 |
| } while (r5 != r2);
0x0009a6fc ldr r2, [sp, 0xc] | r2 = var_ch;
0x0009a6fe and ip, ip, 0x7f |
0x0009a702 strb.w ip, [r6] | *(r6) = ip;
0x0009a706 movs r5, 1 | r5 = 1;
0x0009a708 subs r2, r0, r2 | r2 = r0 - r2;
0x0009a70a adds r2, 1 | r2++;
0x0009a70c mov r6, r2 | r6 = r2;
0x0009a70e movs r2, 2 | r2 = 2;
0x0009a710 strb r2, [r0] | *(r0) = r2;
0x0009a712 ldrb r1, [r3] | r1 = *(r3);
0x0009a714 b 0x9a4d2 | goto label_15;
| if (r3 != 0) {
| label_35:
0x0009a716 cbnz r3, 0x9a76a | goto label_57;
| }
0x0009a718 ldrd r4, r3, [r6, 0x48] | __asm ("ldrd r4, r3, [r6, 0x48]");
0x0009a71c ldr r2, [sp, 0x14] | r2 = var_14h;
0x0009a71e str r3, [r2, 0x34] | *((r2 + 0x34)) = r3;
| label_36:
0x0009a720 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0009a722 movs r3, 1 | r3 = 1;
0x0009a724 movs r0, 0x64 | r0 = 0x64;
0x0009a726 str r4, [r2, 0x30] | *((r2 + 0x30)) = r4;
0x0009a728 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0009a72a b 0x9a23e | goto label_4;
| label_43:
0x0009a72c movw r0, 0x10b | r0 = 0x10b;
0x0009a730 b 0x9a23e | goto label_4;
| label_39:
0x0009a732 ldr r4, [sp, 0x10] | r4 = var_10h;
0x0009a734 b 0x9a438 | goto label_16;
| label_30:
0x0009a736 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0009a738 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0009a73a cmp r4, r2 |
| if (r4 < r2) {
0x0009a73c blt.w 0x9a396 | goto label_17;
| }
0x0009a740 ldr r0, [sp, 0x64] | r0 = var_64h;
0x0009a742 ite gt |
| if (r4 <= r2) {
0x0009a744 movgt r3, 1 | r3 = 1;
| }
| if (r4 > r2) {
0x0009a746 movle r3, 0 | r3 = 0;
| }
0x0009a748 cmp r0, 0 |
0x0009a74a ite ne |
| if (r0 == 0) {
0x0009a74c movne r3, 0 | r3 = 0;
| }
| if (r0 != 0) {
0x0009a74e andeq r3, r3, 1 | r3 &= 1;
| }
0x0009a752 cmp r3, 0 |
| if (r3 != 0) {
0x0009a754 bne.w 0x9a396 | goto label_17;
| }
0x0009a758 mov r0, r7 | r0 = r7;
0x0009a75a blx 0x7e40 | r0 = fcn_00007e40 ();
0x0009a75e cmp r0, 0 |
| if (r0 == 0) {
0x0009a760 beq.w 0x9a2ec | goto label_18;
| }
0x0009a764 b 0x9a396 | goto label_17;
| do {
| label_55:
0x0009a766 movs r0, 7 | r0 = 7;
0x0009a768 b 0x9a23e | goto label_4;
| label_57:
0x0009a76a mov r1, r6 | r1 = r6;
0x0009a76c bl 0x5b8c4 | fcn_0005b8c4 (r0);
0x0009a770 b 0x9a3c0 | goto label_19;
| label_31:
0x0009a772 movs r3, 1 | r3 = 1;
0x0009a774 mov r8, r3 | r8 = r3;
0x0009a776 b 0x9a32c | goto label_20;
| label_37:
0x0009a778 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0009a77a movs r2, 1 | r2 = 1;
0x0009a77c movs r0, 7 | r0 = 7;
0x0009a77e ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0009a780 str r2, [r1, 8] | *((r1 + 8)) = r2;
0x0009a782 str r3, [r1, 0x30] | *((r1 + 0x30)) = r3;
0x0009a784 b 0x9a23e | goto label_4;
| label_52:
0x0009a786 add.w r1, r3, 0x14 | r1 = r3 + 0x14;
0x0009a78a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009a78c ldrd r0, r3, [r3, 0x10] | __asm ("ldrd r0, r3, [r3, 0x10]");
0x0009a790 cmp r1, r3 |
| if (r1 <= r3) {
0x0009a792 bgt 0x9a7b8 |
| label_21:
0x0009a794 ldr r1, [sp] | r1 = *(sp);
0x0009a796 movs r3, 0 | r3 = 0;
0x0009a798 adds r2, r0, r1 | r2 = r0 + r1;
0x0009a79a str r3, [r0, r1] | *((r0 + r1)) = r3;
0x0009a79c str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0009a79e movs r0, 0x64 | r0 = 0x64;
0x0009a7a0 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x0009a7a2 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x0009a7a4 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x0009a7a6 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0009a7a8 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x0009a7aa str r1, [r2, 0x34] | *((r2 + 0x34)) = r1;
0x0009a7ac str.w r8, [r2, 8] | __asm ("str.w r8, [r2, 8]");
0x0009a7b0 str r3, [r2, 0x30] | *((r2 + 0x30)) = r3;
0x0009a7b2 b 0x9a23e | goto label_4;
| label_26:
0x0009a7b4 blx 0x7e8c | fcn_00007e8c ();
| }
0x0009a7b8 ldr r4, [sp, 0x14] | r4 = var_14h;
0x0009a7ba lsls r1, r1, 1 | r1 <<= 1;
0x0009a7bc str r1, [r4, 0x14] | *((r4 + 0x14)) = r1;
0x0009a7be blx 0x8514 | r0 = fcn_00008514 ();
0x0009a7c2 cmp r0, 0 |
0x0009a7c4 beq 0x9a766 |
| } while (r0 == 0);
0x0009a7c6 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0009a7c8 b 0x9a794 | goto label_21;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9ab20 */
| #include <stdint.h>
|
; (fcn) fcn.0009ab20 () | void fcn_0009ab20 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int32_t var_18h;
| int32_t var_18h_2;
| int32_t var_20h;
| int32_t var_20h_2;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0009ab20 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009ab24 sub sp, 0xc4 |
0x0009ab26 str r2, [sp, 0x48] | var_48h = r2;
0x0009ab28 mov r7, r2 | r7 = r2;
0x0009ab2a mov r5, r3 | r5 = r3;
0x0009ab2c add r4, sp, 0x84 | r4 += var_84h;
0x0009ab2e ldr.w r2, [pc, 0x9b0] | r2 = *(0x0009b4e0);
0x0009ab32 mov sb, r0 | sb = r0;
0x0009ab34 str r3, [sp, 0x44] | var_44h = r3;
0x0009ab36 mov r8, r1 | r8 = r1;
0x0009ab38 ldr.w r3, [pc, 0x9a8] |
0x0009ab3c mov r0, r4 | r0 = r4;
0x0009ab3e add r2, pc | r2 += pc;
0x0009ab40 str r4, [sp, 0x3c] | var_3ch = r4;
0x0009ab42 str r1, [sp, 0x4c] | var_4ch = r1;
0x0009ab44 movs r1, 0 | r1 = 0;
0x0009ab46 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0009ab48 movs r2, 0x38 | r2 = 0x38;
0x0009ab4a movs r6, 1 | r6 = 1;
0x0009ab4c ldr r3, [r3] | r3 = *(0x9b4e4);
0x0009ab4e str r3, [sp, 0xbc] | var_bch = r3;
0x0009ab50 mov.w r3, 0 | r3 = 0;
0x0009ab54 blx 0x8264 | fcn_00008264 ();
0x0009ab58 movs r3, 0 | r3 = 0;
0x0009ab5a str r4, [sp, 0x10] | var_10h = r4;
0x0009ab5c str r3, [sp, 0xc] | var_ch = r3;
0x0009ab5e mov r2, r7 | r2 = r7;
0x0009ab60 strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x0009ab64 mov r1, r8 | r1 = r8;
0x0009ab66 mov r3, r5 | r3 = r5;
0x0009ab68 mov r0, sb | r0 = sb;
0x0009ab6a str r6, [sp, 8] | var_8h = r6;
0x0009ab6c bl 0x99a18 | fcn_00099a18 (r0, r1, r2, r3, r4, r5, r6);
0x0009ab70 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0009ab72 mov r4, r0 | r4 = r0;
0x0009ab74 str r3, [sp, 0x30] | var_30h = r3;
| if (r0 == 0) {
0x0009ab76 cbnz r0, 0x9ab96 |
| if (r3 == 0) {
0x0009ab78 cbz r3, 0x9abe0 | goto label_24;
| }
0x0009ab7a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009ab7c adds r3, 1 | r3++;
| if (r3 == 1) {
0x0009ab7e beq 0x9abe4 | goto label_25;
| }
0x0009ab80 mov r3, r0 | r3 = r0;
0x0009ab82 add r2, sp, 0x74 | r2 += var_74h;
0x0009ab84 movs r1, 0xf | r1 = 0xf;
0x0009ab86 mov r0, sb | r0 = sb;
0x0009ab88 str r2, [sp, 0x34] | var_34h = r2;
0x0009ab8a bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009ab8e mov r4, r0 | r4 = r0;
0x0009ab90 cmp r0, 0 |
| if (r0 == 0) {
0x0009ab92 beq.w 0x9acae | goto label_26;
| }
| }
| label_0:
0x0009ab96 ldr r6, [sp, 0x84] | r6 = var_84h;
| label_1:
0x0009ab98 ldr r5, [sp, 0x30] | r5 = var_30h;
0x0009ab9a cmp r5, 0 |
| if (r5 <= 0) {
0x0009ab9c ble 0x9abb2 | goto label_9;
| }
0x0009ab9e ldr r0, [r6] | r0 = *(r6);
0x0009aba0 movs r7, 0 | r7 = 0;
0x0009aba2 b 0x9aba8 |
| while (r7 < r5) {
0x0009aba4 ldr.w r0, [r6, r7, lsl 2] | offset_0 = r7 << 2;
| r0 = *((r6 + offset_0));
0x0009aba8 adds r7, 1 | r7++;
0x0009abaa bl 0x5b434 | fcn_0005b434 (r0);
0x0009abae cmp r7, r5 |
0x0009abb0 blt 0x9aba4 |
| }
| do {
| label_9:
0x0009abb2 mov r0, r6 | r0 = r6;
0x0009abb4 blx 0x84f8 | fcn_000084f8 ();
0x0009abb8 ldr r0, [sp, 0x94] | r0 = var_94h;
0x0009abba blx 0x84f8 | fcn_000084f8 ();
0x0009abbe ldr.w r2, [pc, 0x928] | r2 = *(0x0009b4e8);
0x0009abc2 ldr.w r3, [pc, 0x920] | r3 = *(0x9b4e6);
0x0009abc6 add r2, pc | r2 += pc;
0x0009abc8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0009abca ldr r2, [r3] | r2 = *(0x9b4e6);
0x0009abcc ldr r3, [sp, 0xbc] | r3 = var_bch;
0x0009abce eors r2, r3 | r2 ^= r3;
0x0009abd0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009abd4 bne.w 0x9b4ce | goto label_27;
| }
0x0009abd8 mov r0, r4 | r0 = r4;
0x0009abda add sp, 0xc4 |
0x0009abdc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_24:
0x0009abe0 ldr r6, [sp, 0x84] | r6 = var_84h;
0x0009abe2 b 0x9abb2 |
| } while (1);
| label_25:
0x0009abe4 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009abe6 str r0, [sp, 0x58] | var_58h = r0;
0x0009abe8 str r0, [sp, 0x5c] | var_5ch = r0;
0x0009abea asrs r3, r3, 0x1f | r3 >>= 0x1f;
0x0009abec str r3, [sp, 0x50] | var_50h = r3;
0x0009abee add r3, sp, 0x74 | r3 += var_74h;
0x0009abf0 str r3, [sp, 0x34] | var_34h = r3;
| label_23:
0x0009abf2 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009abf4 movs r1, 8 | r1 = 8;
0x0009abf6 ldr.w r4, [sb, 0x100] | r4 = *((sb + 0x100));
0x0009abfa mov r0, sb | r0 = sb;
0x0009abfc ldr r6, [sp, 0x48] | r6 = var_48h;
0x0009abfe adds r5, r3, 1 | r5 = r3 + 1;
0x0009ac00 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0009ac02 str r5, [sp, 0x38] | var_38h = r5;
0x0009ac04 asr.w r8, r5, 0x1f | r8 = r5 >> 0x1f;
0x0009ac08 ldrd r5, r7, [sp, 0x4c] | __asm ("ldrd r5, r7, [var_4ch]");
0x0009ac0c movs r3, 0 | r3 = 0;
0x0009ac0e smlal r6, r7, r5, r4 | __asm ("smlal r6, r7, r5, r4");
0x0009ac12 ldr r5, [sp, 0x38] | r5 = var_38h;
0x0009ac14 lsl.w ip, r7, 0xa |
0x0009ac18 lsls r4, r6, 0xa | r4 = r6 << 0xa;
0x0009ac1a orr.w ip, ip, r6, lsr 22 |
0x0009ac1e adds r4, r4, r5 | r4 += r5;
0x0009ac20 str r4, [sp, 0x60] | var_60h = r4;
0x0009ac22 adc.w r6, r8, ip | __asm ("adc.w r6, r8, ip");
0x0009ac26 str r6, [sp, 0x64] | var_64h = r6;
0x0009ac28 bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x0009ac2c ldr r1, [sp, 0x58] | r1 = var_58h;
0x0009ac2e ldr r2, [sp, 0x44] | r2 = var_44h;
0x0009ac30 cmp r1, r4 |
0x0009ac32 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x0009ac34 mov r4, r0 | r4 = r0;
0x0009ac36 sbcs.w r3, r1, r6 | __asm ("sbcs.w r3, r1, r6");
0x0009ac3a ite lt |
| if (r1 >= r4) {
0x0009ac3c movlt r3, 1 | r3 = 1;
| }
| if (r1 < r4) {
0x0009ac3e movge r3, 0 | r3 = 0;
| }
0x0009ac40 cmp.w r2, -1 |
0x0009ac44 ite eq |
| if (r2 != -1) {
0x0009ac46 moveq sl, 0 | sl = 0;
| }
| if (r2 != -1) {
0x0009ac4a and sl, r3, 1 | sl = r3 & 1;
| }
0x0009ac4e cmp r0, 0 |
| if (r0 != 0) {
0x0009ac50 bne 0x9ab96 | goto label_0;
| }
0x0009ac52 ldrd r5, r3, [sp, 0x4c] | __asm ("ldrd r5, r3, [var_4ch]");
0x0009ac56 movs r1, 1 | r1 = 1;
0x0009ac58 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0009ac5a ldr.w r6, [sb, 0x100] | r6 = *((sb + 0x100));
0x0009ac5e ldr.w fp, [sp, 0x74] | fp = var_74h;
0x0009ac62 smlal r2, r3, r5, r6 | __asm ("smlal r2, r3, r5, r6");
0x0009ac66 ldr r5, [sp, 0x38] | r5 = var_38h;
0x0009ac68 mov r0, fp | r0 = fp;
0x0009ac6a lsls r3, r3, 0xa | r3 <<= 0xa;
0x0009ac6c orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x0009ac70 lsls r2, r2, 0xa | r2 <<= 0xa;
0x0009ac72 adds r2, r2, r5 | r2 += r5;
0x0009ac74 adc.w r3, r8, r3 | __asm ("adc.w r3, r8, r3");
0x0009ac78 blx 0x7c4c | fcn_00007c4c ();
0x0009ac7c mov r0, fp | r0 = fp;
0x0009ac7e blx 0x809c | r0 = fcn_0000809c ();
0x0009ac82 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0009ac84 beq.w 0x9b248 | goto label_28;
| }
0x0009ac88 mov r0, fp | r0 = fp;
0x0009ac8a blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009ac8e mov r4, r0 | r4 = r0;
| label_11:
0x0009ac90 cmp.w sl, 0 |
| if (sl != 0) {
0x0009ac94 bne.w 0x9b298 | goto label_29;
| }
0x0009ac98 cmp r4, 0 |
| if (r4 != 0) {
0x0009ac9a bne.w 0x9ab96 | goto label_0;
| }
| label_21:
0x0009ac9e ldr r2, [sp, 0x34] | r2 = var_34h;
0x0009aca0 movs r3, 0 | r3 = 0;
0x0009aca2 str r3, [sp, 0x74] | var_74h = r3;
0x0009aca4 str r4, [sp, 0x6c] | var_6ch = r4;
0x0009aca6 strd r3, r3, [r2, 4] | __asm ("strd r3, r3, [r2, 4]");
0x0009acaa movs r3, 1 | r3 = 1;
0x0009acac b 0x9ad44 | goto label_22;
| label_26:
0x0009acae ldr r2, [sp, 0x48] | r2 = var_48h;
0x0009acb0 mov r1, r6 | r1 = r6;
0x0009acb2 ldr.w r0, [sb, 0x100] | r0 = *((sb + 0x100));
0x0009acb6 ldr r5, [sp, 0x4c] | r5 = var_4ch;
0x0009acb8 ldr r6, [sp, 0x74] | r6 = var_74h;
0x0009acba asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0009acbc mov r7, r3 | r7 = r3;
0x0009acbe str r3, [sp, 0x50] | var_50h = r3;
0x0009acc0 smlal r2, r3, r5, r0 | __asm ("smlal r2, r3, r5, r0");
0x0009acc4 mov r0, r6 | r0 = r6;
0x0009acc6 lsls r3, r3, 0xa | r3 <<= 0xa;
0x0009acc8 orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x0009accc lsls r2, r2, 0xa | r2 <<= 0xa;
0x0009acce blx 0x7c4c | fcn_00007c4c ();
0x0009acd2 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0009acd4 mov r3, r7 | r3 = r7;
0x0009acd6 ldr.w r7, [sb, 0x100] | r7 = *((sb + 0x100));
0x0009acda movw ip, 0x3ff | ip = 0x3ff;
0x0009acde movs r1, 2 | r1 = 2;
0x0009ace0 mov r0, r6 | r0 = r6;
0x0009ace2 smlal r2, r3, r5, r7 | __asm ("smlal r2, r3, r5, r7");
0x0009ace6 lsls r3, r3, 0xa | r3 <<= 0xa;
0x0009ace8 orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x0009acec lsls r2, r2, 0xa | r2 <<= 0xa;
0x0009acee adds.w r2, r2, ip | r2 += ip;
0x0009acf2 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009acf6 blx 0x7c4c | fcn_00007c4c ();
0x0009acfa mov r0, r6 | r0 = r6;
0x0009acfc blx 0x809c | r0 = fcn_0000809c ();
0x0009ad00 cmp r0, 0x64 |
0x0009ad02 itt ne |
| if (r0 == 0x64) {
0x0009ad04 movne r3, r4 | r3 = r4;
| }
| if (r0 != 0x64) {
0x0009ad06 strdne r3, r3, [sp, 0x60] | __asm ("strdne r3, r3, [var_60h]");
| }
| if (r0 == 0x64) {
0x0009ad0a beq.w 0x9b28a | goto label_30;
| }
| label_13:
0x0009ad0e mov r0, r6 | r0 = r6;
0x0009ad10 blx 0x7cfc | fcn_00007cfc ();
0x0009ad14 ldr r6, [sp, 0x84] | r6 = var_84h;
0x0009ad16 mov r4, r0 | r4 = r0;
0x0009ad18 str r0, [sp, 0x6c] | var_6ch = r0;
0x0009ad1a cmp r0, 0 |
| if (r0 != 0) {
0x0009ad1c bne.w 0x9ab98 | goto label_1;
| }
0x0009ad20 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009ad22 adds r3, 2 | r3 += 2;
| if (r3 != 2) {
0x0009ad24 bne.w 0x9b4c2 | goto label_31;
| }
0x0009ad28 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009ad2a cmp r3, 1 |
| if (r3 == 1) {
0x0009ad2c beq.w 0x9b1ae | goto label_32;
| }
| label_8:
0x0009ad30 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0009ad32 movs r3, 0 | r3 = 0;
0x0009ad34 str r3, [sp, 0x74] | var_74h = r3;
0x0009ad36 strd r3, r3, [r2, 4] | __asm ("strd r3, r3, [r2, 4]");
0x0009ad3a ldr r3, [sp, 0x60] | r3 = var_60h;
0x0009ad3c str r3, [sp, 0x58] | var_58h = r3;
0x0009ad3e ldr r3, [sp, 0x64] | r3 = var_64h;
0x0009ad40 str r3, [sp, 0x5c] | var_5ch = r3;
0x0009ad42 movs r3, 3 | r3 = 3;
| label_22:
0x0009ad44 str r3, [sp, 0x80] | var_80h = r3;
0x0009ad46 mov r0, sb | r0 = sb;
0x0009ad48 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009ad4a ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0009ad4c str r3, [sp, 0x90] | var_90h = r3;
0x0009ad4e movs r3, 0 | r3 = 0;
0x0009ad50 mov r2, r3 | r2 = r3;
0x0009ad52 bl 0x9aa40 | r0 = fcn_0009aa40 (r0, r1, r2, r3);
0x0009ad56 cmp r0, 0 |
| if (r0 != 0) {
0x0009ad58 bne.w 0x9b4d2 | goto label_33;
| }
0x0009ad5c mov r7, r0 | r7 = r0;
0x0009ad5e add r3, sp, 0x70 | r3 += var_70h;
0x0009ad60 str r3, [sp, 0x68] | var_68h = r3;
0x0009ad62 str.w sb, [sp, 0x38] | __asm ("str.w sb, [var_38h]");
| label_2:
0x0009ad66 ldrd r0, r1, [sp, 0x38] | __asm ("ldrd r0, r1, [var_3ch]");
0x0009ad6a bl 0x9a188 | r0 = fcn_0009a188 (r0, r1, r2, r3);
0x0009ad6e cmp r0, 0x64 |
| if (r0 != 0x64) {
0x0009ad70 bne.w 0x9b088 | goto label_34;
| }
0x0009ad74 ldr r3, [sp, 0xac] | r3 = var_ach;
0x0009ad76 ldr.w r8, [sp, 0xb8] | r8 = var_b8h;
0x0009ad7a str r3, [sp, 0x34] | var_34h = r3;
0x0009ad7c ldr r3, [sp, 0xb0] | r3 = var_b0h;
0x0009ad7e str r3, [sp, 0x30] | var_30h = r3;
0x0009ad80 ldr r3, [sp, 0xb4] | r3 = var_b4h;
0x0009ad82 str r3, [sp, 0x40] | var_40h = r3;
0x0009ad84 cmp r7, 0 |
| if (r7 == 0) {
0x0009ad86 beq.w 0x9aff2 | goto label_35;
| }
| label_4:
0x0009ad8a ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x0009ad8c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009ad8e ldr.w sl, [r7, 0x2c] | sl = *((r7 + 0x2c));
0x0009ad92 cmp r0, r3 |
0x0009ad94 it ge |
| if (r0 < r3) {
0x0009ad96 movge r0, r3 | r0 = r3;
| }
0x0009ad98 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x0009ad9a cmp r0, 0 |
0x0009ad9c itt le |
| if (r0 > 0) {
0x0009ad9e ldrle sb, [sp, 0x30] | sb = var_30h;
| }
| if (r0 <= 0) {
0x0009ada2 movs r4, 0 | r4 = 0;
| }
| if (r4 <= 0) {
0x0009ada4 ble 0x9adc8 | goto label_36;
| }
0x0009ada6 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0009ada8 subs r3, 1 | r3--;
0x0009adaa movs r4, 0 | r4 = 0;
0x0009adac subs r2, 1 | r2--;
0x0009adae b 0x9adb6 |
| while (r5 == r1) {
0x0009adb0 adds r4, 1 | r4++;
0x0009adb2 cmp r4, r0 |
| if (r4 == r0) {
0x0009adb4 beq 0x9adc2 | goto label_37;
| }
0x0009adb6 ldrb r5, [r3, 1]! | r5 = *((r3 += 1));
0x0009adba ldrb r1, [r2, 1]! | r1 = *((r2 += 1));
0x0009adbe cmp r5, r1 |
0x0009adc0 beq 0x9adb0 |
| }
| label_37:
0x0009adc2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009adc4 sub.w sb, r3, r4 | sb = r3 - r4;
| label_36:
0x0009adc8 cmp.w sb, 0 |
| if (sb <= 0) {
0x0009adcc ble.w 0x9b078 | goto label_38;
| }
0x0009add0 asrs r2, r4, 0x1f | r2 = r4 >> 0x1f;
0x0009add2 mov r3, r4 | r3 = r4;
0x0009add4 movs r1, 0 | r1 = 0;
| do {
0x0009add6 lsrs r3, r3, 7 | r3 >>= 7;
0x0009add8 adds r1, 1 | r1++;
0x0009adda orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009adde lsrs r2, r2, 7 | r2 >>= 7;
0x0009ade0 orrs.w r0, r3, r2 | r0 = r3 | r2;
0x0009ade4 bne 0x9add6 |
| } while (r0 != r3);
0x0009ade6 asr.w r2, sb, 0x1f | r2 = sb >> 0x1f;
0x0009adea mov r3, sb | r3 = sb;
0x0009adec movs r0, 0 | r0 = 0;
| do {
0x0009adee lsrs r3, r3, 7 | r3 >>= 7;
0x0009adf0 adds r0, 1 | r0++;
0x0009adf2 orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009adf6 lsrs r2, r2, 7 | r2 >>= 7;
0x0009adf8 orrs.w r5, r3, r2 | r5 = r3 | r2;
0x0009adfc bne 0x9adee |
| } while (r5 != r3);
0x0009adfe asr.w fp, r8, 0x1f |
0x0009ae02 add r1, r0 | r1 += r0;
0x0009ae04 add r1, sb | r1 += sb;
0x0009ae06 mov r5, r8 | r5 = r8;
0x0009ae08 movs r0, 0 | r0 = 0;
0x0009ae0a mov r6, fp | r6 = fp;
0x0009ae0c mov r3, r8 | r3 = r8;
0x0009ae0e mov r2, fp | r2 = fp;
| do {
0x0009ae10 lsrs r3, r3, 7 | r3 >>= 7;
0x0009ae12 adds r0, 1 | r0++;
0x0009ae14 orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009ae18 lsrs r2, r2, 7 | r2 >>= 7;
0x0009ae1a orrs.w ip, r3, r2 |
0x0009ae1e bne 0x9ae10 |
| } while (ip != r3);
0x0009ae20 ldr.w ip, [r7, 0x30] | ip = *((r7 + 0x30));
0x0009ae24 cmp.w sl, 0 |
0x0009ae28 add r1, r0 | r1 += r0;
0x0009ae2a add r1, r8 | r1 += r8;
0x0009ae2c mov r0, ip | r0 = ip;
| if (sl <= 0) {
0x0009ae2e ble 0x9aed2 | goto label_39;
| }
0x0009ae30 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009ae32 add.w r2, sl, r1 | r2 = sl + r1;
0x0009ae36 ldr.w r3, [r3, 0xe8] | r3 = *((r3 + 0xe8));
0x0009ae3a cmp r2, r3 |
| if (r2 <= r3) {
0x0009ae3c ble 0x9aed2 | goto label_39;
| }
0x0009ae3e ldrd r2, r3, [r7, 0x10] | __asm ("ldrd r2, r3, [r7, 0x10]");
0x0009ae42 mvn r1, 0x80000000 | r1 = ~0x80000000;
0x0009ae46 cmp r3, r1 |
0x0009ae48 it eq |
| if (r3 == r1) {
0x0009ae4a cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == r1) {
0x0009ae4e beq.w 0x9b1a6 | goto label_40;
| }
0x0009ae52 ldr.w sb, [sp, 0x38] | sb = var_38h;
0x0009ae56 adds r1, r2, 1 | r1 = r2 + 1;
0x0009ae58 str r1, [r7, 0x10] | *((r7 + 0x10)) = r1;
0x0009ae5a adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x0009ae5e str r1, [r7, 0x14] | *((r7 + 0x14)) = r1;
0x0009ae60 mov r0, sb | r0 = sb;
0x0009ae62 strd ip, sl, [sp] | __asm ("strd ip, sl, [sp]");
0x0009ae66 bl 0x867b4 | r0 = fcn_000867b4 (r0, r1, r2);
0x0009ae6a mov sl, r0 | sl = r0;
0x0009ae6c cmp r0, 0 |
| if (r0 != 0) {
0x0009ae6e bne.w 0x9b04c | goto label_41;
| }
0x0009ae72 ldr.w r2, [sb, 0x34] | r2 = *((sb + 0x34));
0x0009ae76 adds r3, r4, 1 | r3 = r4 + 1;
0x0009ae78 mov r0, sb | r0 = sb;
0x0009ae7a mov r1, r7 | r1 = r7;
0x0009ae7c adds r2, 1 | r2++;
0x0009ae7e str.w r2, [sb, 0x34] | __asm ("str.w r2, [sb, 0x34]");
0x0009ae82 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0009ae84 bl 0x42cf8 | r0 = fcn_00042cf8 (r0, r1, r2, r3, r4);
0x0009ae88 mov sl, r0 | sl = r0;
0x0009ae8a cmp r0, 0 |
| if (r0 != 0) {
0x0009ae8c bne.w 0x9b04c | goto label_41;
| }
0x0009ae90 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009ae92 mov r1, r0 | r1 = r0;
0x0009ae94 str r0, [r7, 0x1c] | *((r7 + 0x1c)) = r0;
0x0009ae96 asrs r2, r3, 0x1f | r2 = r3 >> 0x1f;
| do {
0x0009ae98 lsrs r3, r3, 7 | r3 >>= 7;
0x0009ae9a mov r0, r1 | r0 = r1;
0x0009ae9c adds r1, 1 | r1++;
0x0009ae9e orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009aea2 lsrs r2, r2, 7 | r2 >>= 7;
0x0009aea4 orrs.w r4, r3, r2 | r4 = r3 | r2;
0x0009aea8 bne 0x9ae98 |
| } while (r4 != r3);
0x0009aeaa ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009aeac adds r1, r0, 2 | r1 = r0 + 2;
0x0009aeae movs r2, 0 | r2 = 0;
0x0009aeb0 add r1, r3 | r1 += r3;
0x0009aeb2 mov r3, r8 | r3 = r8;
| do {
0x0009aeb4 lsrs r3, r3, 7 | r3 >>= 7;
0x0009aeb6 adds r2, 1 | r2++;
0x0009aeb8 orr.w r3, r3, fp, lsl 25 | r3 |= (fp << 25);
0x0009aebc lsr.w fp, fp, 7 |
0x0009aec0 orrs.w r0, r3, fp | r0 = r3 | fp;
0x0009aec4 bne 0x9aeb4 |
| } while (r0 != r3);
0x0009aec6 ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x0009aec8 add r1, r2 | r1 += r2;
0x0009aeca ldr.w sb, [sp, 0x30] | sb = var_30h;
0x0009aece add r1, r8 | r1 += r8;
0x0009aed0 movs r4, 0 | r4 = 0;
| label_39:
0x0009aed2 ldr r3, [r7, 0x38] | r3 = *((r7 + 0x38));
0x0009aed4 mov r2, r0 | r2 = r0;
0x0009aed6 adds r3, r3, r1 | r3 += r1;
0x0009aed8 str r3, [r7, 0x38] | *((r7 + 0x38)) = r3;
0x0009aeda ldr r3, [r7, 0x3c] | r3 = *((r7 + 0x3c));
0x0009aedc adc.w r3, r3, r1, asr 31 | __asm ("adc.w r3, r3, r1, asr 31");
0x0009aee0 str r3, [r7, 0x3c] | *((r7 + 0x3c)) = r3;
0x0009aee2 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x0009aee4 cmp r1, r3 |
| if (r1 > r3) {
0x0009aee6 bgt 0x9afdc | goto label_42;
| }
| label_3:
0x0009aee8 add.w fp, r2, sl |
0x0009aeec asrs r2, r4, 0x1f | r2 = r4 >> 0x1f;
0x0009aeee mov r3, r4 | r3 = r4;
0x0009aef0 mov r1, fp | r1 = fp;
| do {
0x0009aef2 lsr.w lr, r3, 7 | lr = r3 >> 7;
0x0009aef6 orn r0, r3, 0x7f | r0 = r3 | 0x7f;
| r0 = ~r0;
0x0009aefa uxtb.w ip, r3 | ip = (int8_t) r3;
0x0009aefe orr.w r3, lr, r2, lsl 25 | r3 = lr | (r2 << 25);
0x0009af02 lsrs r2, r2, 7 | r2 >>= 7;
0x0009af04 mov lr, r1 | lr = r1;
0x0009af06 strb r0, [r1], 1 | *(r1) = r0;
| r1++;
0x0009af0a orrs.w r0, r3, r2 | r0 = r3 | r2;
0x0009af0e bne 0x9aef2 |
| } while (r0 != r3);
0x0009af10 and ip, ip, 0x7f |
0x0009af14 sub.w r1, r1, fp | r1 -= fp;
0x0009af18 strb.w ip, [lr] | *(lr) = ip;
0x0009af1c add.w r0, r1, sl | r0 = r1 + sl;
0x0009af20 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0009af22 asr.w r2, sb, 0x1f | r2 = sb >> 0x1f;
0x0009af26 add.w sl, r3, r0 | sl = r3 + r0;
0x0009af2a mov r3, sb | r3 = sb;
0x0009af2c mov r1, sl | r1 = sl;
| do {
0x0009af2e lsr.w fp, r3, 7 |
0x0009af32 orn ip, r3, 0x7f | ip = r3 | 0x7f;
| ip = ~ip;
0x0009af36 uxtb.w lr, r3 | lr = (int8_t) r3;
0x0009af3a orr.w r3, fp, r2, lsl 25 | r3 = fp | (r2 << 25);
0x0009af3e lsrs r2, r2, 7 | r2 >>= 7;
0x0009af40 mov fp, r1 |
0x0009af42 strb ip, [r1], 1 | *(r1) = ip;
| r1++;
0x0009af46 orrs.w ip, r3, r2 |
0x0009af4a bne 0x9af2e |
| } while (ip != r3);
0x0009af4c and lr, lr, 0x7f | lr &= 0x7f;
0x0009af50 sub.w r1, r1, sl | r1 -= sl;
0x0009af54 strb.w lr, [fp] |
0x0009af58 add.w sl, r1, r0 | sl = r1 + r0;
0x0009af5c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009af5e mov r2, sb | r2 = sb;
0x0009af60 ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x0009af62 adds r1, r3, r4 | r1 = r3 + r4;
0x0009af64 add r0, sl | r0 += sl;
0x0009af66 add sl, sb | sl += sb;
0x0009af68 blx 0x7dcc | fcn_00007dcc ();
0x0009af6c ldr r1, [r7, 0x30] | r1 = *((r7 + 0x30));
0x0009af6e add r1, sl | r1 += sl;
0x0009af70 mov r3, r1 | r3 = r1;
| do {
0x0009af72 lsrs r4, r5, 7 | r4 = r5 >> 7;
0x0009af74 orn r2, r5, 0x7f | r2 = r5 | 0x7f;
| r2 = ~r2;
0x0009af78 uxtb r0, r5 | r0 = (int8_t) r5;
0x0009af7a mov ip, r3 |
0x0009af7c orr.w r5, r4, r6, lsl 25 | r5 = r4 | (r6 << 25);
0x0009af80 lsrs r6, r6, 7 | r6 >>= 7;
0x0009af82 strb r2, [r3], 1 | *(r3) = r2;
| r3++;
0x0009af86 orrs.w r2, r5, r6 | r2 = r5 | r6;
0x0009af8a bne 0x9af72 |
| } while (r2 != r5);
0x0009af8c and r0, r0, 0x7f | r0 &= 0x7f;
0x0009af90 subs r3, r3, r1 | r3 -= r1;
0x0009af92 strb.w r0, [ip] | *(ip) = r0;
0x0009af96 add.w r4, r3, sl | r4 = r3 + sl;
0x0009af9a ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x0009af9c mov r2, r8 | r2 = r8;
0x0009af9e ldr r1, [sp, 0x40] | r1 = var_40h;
0x0009afa0 add r0, r4 | r0 += r4;
0x0009afa2 add r4, r8 | r4 += r8;
0x0009afa4 blx 0x7dcc | fcn_00007dcc ();
0x0009afa8 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x0009afaa ldr r2, [sp, 0x30] | r2 = var_30h;
0x0009afac str r4, [r7, 0x2c] | *((r7 + 0x2c)) = r4;
0x0009afae cmp r2, r3 |
| if (r2 > r3) {
0x0009afb0 bgt 0x9afc2 | goto label_43;
| }
0x0009afb2 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
| do {
0x0009afb4 ldrd r4, r1, [sp, 0x30] | __asm ("ldrd r4, r1, [var_30h]");
0x0009afb8 mov r2, r4 | r2 = r4;
0x0009afba blx 0x7dcc | fcn_00007dcc ();
0x0009afbe str r4, [r7, 0x1c] | *((r7 + 0x1c)) = r4;
0x0009afc0 b 0x9ad66 | goto label_2;
| label_43:
0x0009afc2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009afc4 ldr r0, [r7, 0x24] | r0 = *((r7 + 0x24));
0x0009afc6 lsls r4, r3, 1 | r4 = r3 << 1;
0x0009afc8 mov r1, r4 | r1 = r4;
0x0009afca blx 0x8514 | r0 = fcn_00008514 ();
0x0009afce cmp r0, 0 |
| if (r0 == 0) {
0x0009afd0 beq.w 0x9b19e | goto label_44;
| }
0x0009afd4 strd r4, r0, [r7, 0x20] | __asm ("strd r4, r0, [r7, 0x20]");
0x0009afd8 str r0, [r7, 0x18] | *((r7 + 0x18)) = r0;
0x0009afda b 0x9afb4 |
| } while (1);
| label_42:
0x0009afdc str r1, [sp, 0x54] | var_54h = r1;
0x0009afde blx 0x8514 | fcn_00008514 ();
0x0009afe2 ldr r1, [sp, 0x54] | r1 = var_54h;
0x0009afe4 mov r2, r0 | r2 = r0;
0x0009afe6 cmp r0, 0 |
| if (r0 == 0) {
0x0009afe8 beq.w 0x9b19e | goto label_44;
| }
0x0009afec str r1, [r7, 0x28] | *((r7 + 0x28)) = r1;
0x0009afee str r0, [r7, 0x30] | *((r7 + 0x30)) = r0;
0x0009aff0 b 0x9aee8 | goto label_3;
| label_35:
0x0009aff2 movs r0, 0x40 | r0 = 0x40;
0x0009aff4 blx 0x85dc | r0 = fcn_000085dc ();
0x0009aff8 mov r7, r0 | r7 = r0;
0x0009affa cmp r0, 0 |
| if (r0 == 0) {
0x0009affc beq.w 0x9b194 | goto label_45;
| }
0x0009b000 movs r2, 0x40 | r2 = 0x40;
0x0009b002 movs r1, 0 | r1 = 0;
0x0009b004 blx 0x8264 | fcn_00008264 ();
0x0009b008 ldr r4, [sp, 0x38] | r4 = var_38h;
0x0009b00a ldr.w r0, [r4, 0xe8] | r0 = *((r4 + 0xe8));
0x0009b00e blx 0x85dc | fcn_000085dc ();
0x0009b012 str r0, [r7, 0x30] | *((r7 + 0x30)) = r0;
0x0009b014 cmp r0, 0 |
| if (r0 == 0) {
0x0009b016 beq.w 0x9b1c2 | goto label_46;
| }
0x0009b01a ldr.w r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
0x0009b01e mov r0, r4 | r0 = r4;
0x0009b020 ldr r2, [sp, 0x68] | r2 = var_68h;
0x0009b022 movs r1, 0xa | r1 = 0xa;
0x0009b024 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x0009b026 movs r3, 0 | r3 = 0;
0x0009b028 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009b02c mov sl, r0 | sl = r0;
| if (r0 != 0) {
0x0009b02e cbnz r0, 0x9b04c | goto label_41;
| }
0x0009b030 ldr r4, [sp, 0x70] | r4 = var_70h;
0x0009b032 mov r0, r4 | r0 = r4;
0x0009b034 blx 0x809c | r0 = fcn_0000809c ();
0x0009b038 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0009b03a beq.w 0x9b278 | goto label_47;
| }
| label_12:
0x0009b03e mov r0, r4 | r0 = r4;
0x0009b040 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009b044 mov sl, r0 | sl = r0;
0x0009b046 cmp r0, 0 |
| if (r0 == 0) {
0x0009b048 beq.w 0x9ad8a | goto label_4;
| }
| label_41:
0x0009b04c ldr r6, [sp, 0x84] | r6 = var_84h;
0x0009b04e mov r8, r7 | r8 = r7;
0x0009b050 ldr r2, [sp, 0x88] | r2 = var_88h;
0x0009b052 mov r3, sl | r3 = sl;
0x0009b054 str r2, [sp, 0x30] | var_30h = r2;
| label_10:
0x0009b056 ldr.w r0, [r8, 0x30] | r0 = *((r8 + 0x30));
0x0009b05a mov r4, r3 | r4 = r3;
| do {
| label_6:
0x0009b05c blx 0x84f8 | fcn_000084f8 ();
0x0009b060 ldr.w r0, [r8, 0x24] | r0 = *((r8 + 0x24));
0x0009b064 blx 0x84f8 | fcn_000084f8 ();
0x0009b068 ldr.w r0, [r8] | r0 = *(r8);
0x0009b06c bl 0xe28c | fcn_0000e28c (r0);
0x0009b070 mov r0, r8 | r0 = r8;
0x0009b072 blx 0x84f8 | fcn_000084f8 ();
0x0009b076 b 0x9ab98 | goto label_1;
| label_38:
0x0009b078 ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x0009b07a mov r8, r7 | r8 = r7;
0x0009b07c movw r4, 0x10b | r4 = 0x10b;
| label_7:
0x0009b080 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0009b082 ldr r6, [sp, 0x84] | r6 = var_84h;
0x0009b084 str r3, [sp, 0x30] | var_30h = r3;
0x0009b086 b 0x9b05c |
| } while (1);
| label_34:
0x0009b088 ldrd r6, r3, [sp, 0x84] | __asm ("ldrd r6, r3, [var_84h]");
0x0009b08c mov r8, r7 | r8 = r7;
0x0009b08e ldr.w sb, [sp, 0x38] | sb = var_38h;
0x0009b092 mov r4, r0 | r4 = r0;
0x0009b094 str r3, [sp, 0x30] | var_30h = r3;
0x0009b096 cmp r0, 0 |
| if (r0 != 0) {
0x0009b098 bne.w 0x9b1c8 | goto label_48;
| }
0x0009b09c ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009b09e adds r3, 1 | r3++;
| if (r3 == 1) {
0x0009b0a0 beq 0x9b140 | goto label_49;
| }
0x0009b0a2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009b0a4 str r0, [sp, 0x70] | var_70h = r0;
0x0009b0a6 cmp r3, 0 |
| if (r3 <= 0) {
0x0009b0a8 ble 0x9b0ea | goto label_50;
| }
0x0009b0aa ldr r5, [sp, 0x30] | r5 = var_30h;
0x0009b0ac sub.w sl, r6, 4 | sl = r6 - 4;
0x0009b0b0 mov r7, r0 | r7 = r0;
0x0009b0b2 b 0x9b0c2 |
| while (r3 == r2) {
| label_5:
0x0009b0b4 adds r7, 1 | r7++;
0x0009b0b6 cmp r7, r5 |
0x0009b0b8 ite ge |
| if (r7 < r5) {
0x0009b0ba movge r3, 0 | r3 = 0;
| }
| if (r7 >= r5) {
0x0009b0bc andlt r3, r3, 1 | r3 &= 1;
| }
| if (r3 == 0) {
0x0009b0c0 cbz r3, 0x9b0e2 | goto label_51;
| }
0x0009b0c2 ldr r1, [sl, 4]! | r1 = *((sl += 4));
0x0009b0c6 ldrd r2, r3, [r1, 8] | __asm ("ldrd r2, r3, [r1, 8]");
0x0009b0ca orrs r3, r2 | r3 |= r2;
0x0009b0cc itt eq |
| if (r3 != r2) {
0x0009b0ce moveq r0, 0 | r0 = 0;
| }
| if (r3 != r2) {
0x0009b0d0 moveq r3, 1 | r3 = 1;
| }
0x0009b0d2 beq 0x9b0b4 |
| }
0x0009b0d4 mov r0, sb | r0 = sb;
0x0009b0d6 bl 0x86878 | r0 = fcn_00086878 (r0, r1);
0x0009b0da clz r3, r0 | r3 &= r0;
0x0009b0de lsrs r3, r3, 5 | r3 >>= 5;
0x0009b0e0 b 0x9b0b4 | goto label_5;
| label_51:
0x0009b0e2 mov r3, r0 | r3 = r0;
0x0009b0e4 str r5, [sp, 0x30] | var_30h = r5;
0x0009b0e6 cmp r0, 0 |
| if (r0 != 0) {
0x0009b0e8 bne 0x9b1ca | goto label_14;
| }
| label_50:
0x0009b0ea ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009b0ec adds r3, 2 | r3 += 2;
| if (r3 == 2) {
0x0009b0ee beq.w 0x9b2a0 | goto label_52;
| }
0x0009b0f2 movs r3, 0 | r3 = 0;
0x0009b0f4 add r2, sp, 0x70 | r2 += var_70h;
0x0009b0f6 movs r1, 0x10 | r1 = 0x10;
0x0009b0f8 mov r0, sb | r0 = sb;
0x0009b0fa bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009b0fe mov r3, r0 | r3 = r0;
0x0009b100 cmp r0, 0 |
| if (r0 != 0) {
0x0009b102 bne 0x9b1ca | goto label_14;
| }
0x0009b104 ldr.w r1, [sb, 0x100] | r1 = *((sb + 0x100));
0x0009b108 ldrd r0, r3, [sp, 0x4c] | __asm ("ldrd r0, r3, [var_4ch]");
0x0009b10c ldr r2, [sp, 0x48] | r2 = var_48h;
0x0009b10e ldr.w sl, [sp, 0x70] | sl = var_70h;
0x0009b112 smlal r2, r3, r0, r1 | __asm ("smlal r2, r3, r0, r1");
0x0009b116 ldr r1, [sp, 0x44] | r1 = var_44h;
0x0009b118 mov r0, sl | r0 = sl;
0x0009b11a lsls r3, r3, 0xa | r3 <<= 0xa;
0x0009b11c orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x0009b120 lsls r2, r2, 0xa | r2 <<= 0xa;
0x0009b122 adds r2, r2, r1 | r2 += r1;
0x0009b124 adc.w r3, r3, r1, asr 31 | __asm ("adc.w r3, r3, r1, asr 31");
0x0009b128 movs r1, 1 | r1 = 1;
0x0009b12a blx 0x7c4c | fcn_00007c4c ();
| label_15:
0x0009b12e mov r0, sl | r0 = sl;
0x0009b130 blx 0x809c | fcn_0000809c ();
0x0009b134 mov r0, sl | r0 = sl;
0x0009b136 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009b13a mov r3, r0 | r3 = r0;
0x0009b13c cmp r0, 0 |
| if (r0 != 0) {
0x0009b13e bne 0x9b1ca | goto label_14;
| }
| label_49:
0x0009b140 cmp.w r8, 0 |
| if (r8 == 0) {
0x0009b144 beq.w 0x9ab98 | goto label_1;
| }
0x0009b148 ldr.w r1, [r8] | r1 = *(r8);
0x0009b14c ldrd r2, r3, [r8, 0x2c] | __asm ("ldrd r2, r3, [r8, 0x2c]");
0x0009b150 cmp r1, 0 |
| if (r1 == 0) {
0x0009b152 beq 0x9b1d6 | goto label_53;
| }
0x0009b154 ldr.w r4, [r8, 0x10] | r4 = *((r8 + 0x10));
0x0009b158 mov r0, sb | r0 = sb;
0x0009b15a ldr.w r5, [r8, 0x14] | r5 = *((r8 + 0x14));
0x0009b15e adds r1, r4, 1 | r1 = r4 + 1;
0x0009b160 str r4, [sp, 0x48] | var_48h = r4;
0x0009b162 str.w r1, [r8, 0x10] | __asm ("str.w r1, [r8, 0x10]");
0x0009b166 adc r1, r5, 0 | __asm ("adc r1, r5, 0");
0x0009b16a str.w r1, [r8, 0x14] | __asm ("str.w r1, [r8, 0x14]");
0x0009b16e strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x0009b172 mov r2, r4 | r2 = r4;
0x0009b174 mov r3, r5 | r3 = r5;
0x0009b176 str r5, [sp, 0x4c] | var_4ch = r5;
0x0009b178 bl 0x867b4 | r0 = fcn_000867b4 (r0, r1, r2);
0x0009b17c mov r4, r0 | r4 = r0;
0x0009b17e cmp r0, 0 |
| if (r0 == 0) {
0x0009b180 beq.w 0x9b2fe | goto label_54;
| }
| label_19:
0x0009b184 ldr.w r3, [sb, 0x34] | r3 = *((sb + 0x34));
0x0009b188 ldr.w r0, [r8, 0x30] | r0 = *((r8 + 0x30));
0x0009b18c adds r3, 1 | r3++;
0x0009b18e str.w r3, [sb, 0x34] | __asm ("str.w r3, [sb, 0x34]");
0x0009b190 adds r0, 0x34 | r0 += 0x34;
0x0009b192 b 0x9b05c | goto label_6;
| label_45:
0x0009b194 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0009b196 movs r4, 7 | r4 = 7;
0x0009b198 ldr r6, [sp, 0x84] | r6 = var_84h;
0x0009b19a str r3, [sp, 0x30] | var_30h = r3;
0x0009b19c b 0x9ab98 | goto label_1;
| label_44:
0x0009b19e ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x0009b1a0 mov r8, r7 | r8 = r7;
0x0009b1a2 movs r4, 7 | r4 = 7;
0x0009b1a4 b 0x9b080 | goto label_7;
| label_40:
0x0009b1a6 mov r8, r7 | r8 = r7;
0x0009b1a8 movw r4, 0x10b | r4 = 0x10b;
0x0009b1ac b 0x9b080 | goto label_7;
| label_32:
0x0009b1ae ldr r6, [sp, 0x84] | r6 = var_84h;
0x0009b1b0 ldr r0, [r6] | r0 = *(r6);
0x0009b1b2 ldr r3, [r0, 0x38] | r3 = *((r0 + 0x38));
0x0009b1b4 cmp r3, 0 |
| if (r3 != 0) {
0x0009b1b6 bne.w 0x9ad30 | goto label_8;
| }
0x0009b1ba movs r4, 0x65 | r4 = 0x65;
0x0009b1bc bl 0x5b434 | fcn_0005b434 (r0);
0x0009b1c0 b 0x9abb2 | goto label_9;
| label_46:
0x0009b1c2 mov r8, r7 | r8 = r7;
0x0009b1c4 movs r4, 7 | r4 = 7;
0x0009b1c6 b 0x9b080 | goto label_7;
| label_48:
0x0009b1c8 mov r3, r0 | r3 = r0;
| label_14:
0x0009b1ca cmp.w r8, 0 |
| if (r8 != 0) {
0x0009b1ce bne.w 0x9b056 | goto label_10;
| }
0x0009b1d2 mov r4, r3 | r4 = r3;
0x0009b1d4 b 0x9ab98 | goto label_1;
| label_53:
0x0009b1d6 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0009b1da mov r0, sb | r0 = sb;
0x0009b1dc strd r3, r2, [sp, 0x28] | __asm ("strd r3, r2, [var_2ch]");
0x0009b1e0 ldr r1, [sp, 0x6c] | r1 = var_6ch;
0x0009b1e2 ldrd sl, fp, [r8, 0x38] | __asm ("ldrd sl, fp, [r8, 0x38]");
0x0009b1e6 ldrd r2, r3, [sp, 0x60] | __asm ("ldrd r2, r3, [var_60h]");
0x0009b1ea str r1, [sp] | *(sp) = r1;
0x0009b1ec strd sl, fp, [sp, 0x20] | __asm ("strd sl, fp, [var_0hx20]");
0x0009b1f0 vstr d16, [sp, 0x18] | __asm ("vstr d16, [sp, 0x18]");
0x0009b1f4 vstr d16, [sp, 0x10] | __asm ("vstr d16, [sp, 0x10]");
0x0009b1f8 vstr d16, [sp, 8] | __asm ("vstr d16, [sp, 8]");
0x0009b1fc bl 0x86944 | r0 = fcn_00086944 (r0, r1, r2);
0x0009b200 mov r4, r0 | r4 = r0;
| label_18:
0x0009b202 ldr.w r3, [sb, 0x34] | r3 = *((sb + 0x34));
0x0009b206 adds r3, 1 | r3++;
0x0009b208 str.w r3, [sb, 0x34] | __asm ("str.w r3, [sb, 0x34]");
| if (r4 == 0) {
0x0009b20c cbnz r4, 0x9b242 |
0x0009b20e ldr r3, [sp, 0x60] | r3 = var_60h;
0x0009b210 ldr r2, [sp, 0x58] | r2 = var_58h;
0x0009b212 cmp r3, r2 |
0x0009b214 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0009b216 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0009b218 sbcs r3, r2 | __asm ("sbcs r3, r2");
0x0009b21a ldr r2, [sp, 0x44] | r2 = var_44h;
0x0009b21c ite lt |
| if (r3 >= r2) {
0x0009b21e movlt r3, 1 | r3 = 1;
| }
| if (r3 < r2) {
0x0009b220 movge r3, 0 | r3 = 0;
| }
0x0009b222 cmp.w r2, -1 |
0x0009b226 it eq |
| if (r2 != -1) {
0x0009b228 orreq r3, r3, 1 | r3 |= 1;
| }
| if (r3 == 0) {
0x0009b22c cbz r3, 0x9b242 | goto label_55;
| }
0x0009b22e ldrd sl, fp, [r8, 0x38] | __asm ("ldrd sl, fp, [r8, 0x38]");
0x0009b232 mov r0, sb | r0 = sb;
0x0009b234 ldrd r2, r3, [sp, 0x60] | __asm ("ldrd r2, r3, [var_60h]");
0x0009b238 strd sl, fp, [sp] | __asm ("strd sl, fp, [sp]");
0x0009b23c bl 0x86a48 | r0 = fcn_00086a48 (r0, r1, r2);
0x0009b240 mov r4, r0 | r4 = r0;
| }
| label_55:
0x0009b242 ldr.w r0, [r8, 0x30] | r0 = *((r8 + 0x30));
0x0009b246 b 0x9b05c | goto label_6;
| label_28:
0x0009b248 mov r1, r4 | r1 = r4;
0x0009b24a mov r0, fp | r0 = fp;
0x0009b24c blx 0x8050 | r0 = fcn_00008050 ();
0x0009b250 mov r8, r0 | r8 = r0;
0x0009b252 mov r0, fp | r0 = fp;
0x0009b254 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009b258 mov r4, r0 | r4 = r0;
0x0009b25a cmp r0, 0 |
| if (r0 != 0) {
0x0009b25c bne.w 0x9ab96 | goto label_0;
| }
0x0009b260 cmp.w r8, 0xf |
| if (r8 <= 0xf) {
0x0009b264 ble.w 0x9b4a8 | goto label_56;
| }
0x0009b268 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009b26a mov r0, sb | r0 = sb;
0x0009b26c ldrd r2, r1, [sp, 0x48] | __asm ("ldrd r2, r1, [var_48h]");
0x0009b270 bl 0x9ab20 | r0 = fcn_0009ab20 (r0, r1, r2, r3, r4);
0x0009b274 mov r4, r0 | r4 = r0;
0x0009b276 b 0x9ac90 | goto label_11;
| label_47:
0x0009b278 mov r1, sl | r1 = sl;
0x0009b27a mov r0, r4 | r0 = r4;
0x0009b27c blx 0x80d8 | fcn_000080d8 ();
0x0009b280 str r0, [r7, 0x10] | *((r7 + 0x10)) = r0;
0x0009b282 str r0, [r7, 8] | *((r7 + 8)) = r0;
0x0009b284 str r1, [r7, 0x14] | *((r7 + 0x14)) = r1;
0x0009b286 str r1, [r7, 0xc] | *((r7 + 0xc)) = r1;
0x0009b288 b 0x9b03e | goto label_12;
| label_30:
0x0009b28a mov r1, r4 | r1 = r4;
0x0009b28c mov r0, r6 | r0 = r6;
0x0009b28e blx 0x80d8 | fcn_000080d8 ();
0x0009b292 strd r0, r1, [sp, 0x60] | __asm ("strd r0, r1, [var_60h]");
0x0009b296 b 0x9ad0e | goto label_13;
| label_29:
0x0009b298 cmp r4, 0 |
| if (r4 != 0) {
0x0009b29a bne.w 0x9ab96 | goto label_0;
| }
0x0009b29e b 0x9b4b2 | goto label_57;
| label_52:
0x0009b2a0 movs r3, 0 | r3 = 0;
0x0009b2a2 add r2, sp, 0x70 | r2 += var_70h;
0x0009b2a4 movs r1, 0x1a | r1 = 0x1a;
0x0009b2a6 mov r0, sb | r0 = sb;
0x0009b2a8 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009b2ac mov r3, r0 | r3 = r0;
0x0009b2ae cmp r0, 0 |
| if (r0 != 0) {
0x0009b2b0 bne 0x9b1ca | goto label_14;
| }
0x0009b2b2 ldrd r5, r3, [sp, 0x4c] | __asm ("ldrd r5, r3, [var_4ch]");
0x0009b2b6 movs r1, 1 | r1 = 1;
0x0009b2b8 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0009b2ba ldr.w r7, [sb, 0x100] | r7 = *((sb + 0x100));
0x0009b2be ldr.w sl, [sp, 0x70] | sl = var_70h;
0x0009b2c2 smlal r2, r3, r5, r7 | __asm ("smlal r2, r3, r5, r7");
0x0009b2c6 mov r0, sl | r0 = sl;
0x0009b2c8 lsls r3, r3, 0xa | r3 <<= 0xa;
0x0009b2ca orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x0009b2ce lsls r2, r2, 0xa | r2 <<= 0xa;
0x0009b2d0 blx 0x7c4c | fcn_00007c4c ();
0x0009b2d4 ldr.w r1, [sb, 0x100] | r1 = *((sb + 0x100));
0x0009b2d8 mov r0, sl | r0 = sl;
0x0009b2da ldr r2, [sp, 0x48] | r2 = var_48h;
0x0009b2dc ldr r3, [sp, 0x50] | r3 = var_50h;
0x0009b2de smlal r2, r3, r5, r1 | __asm ("smlal r2, r3, r5, r1");
0x0009b2e2 movw r1, 0x3ff | r1 = 0x3ff;
0x0009b2e6 lsls r3, r3, 0xa | r3 <<= 0xa;
0x0009b2e8 orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x0009b2ec lsls r2, r2, 0xa | r2 <<= 0xa;
0x0009b2ee adds r2, r2, r1 | r2 += r1;
0x0009b2f0 mov.w r1, 2 | r1 = 2;
0x0009b2f4 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009b2f8 blx 0x7c4c | fcn_00007c4c ();
0x0009b2fc b 0x9b12e | goto label_15;
| label_54:
0x0009b2fe ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x0009b302 ldr.w r3, [r8] | r3 = *(r8);
0x0009b306 mov r1, r2 | r1 = r2;
0x0009b308 ldrd fp, r2, [r8, 0xc] | __asm ("ldrd fp, r2, [r8, 0xc]");
0x0009b30c str r3, [sp, 0x3c] | var_3ch = r3;
0x0009b30e ldr r3, [r3] | r3 = *(r3);
0x0009b310 str r2, [sp, 0x34] | var_34h = r2;
0x0009b312 ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x0009b316 str r2, [sp, 0x38] | var_38h = r2;
0x0009b318 cmp r3, 0 |
| if (r3 == 0) {
0x0009b31a beq.w 0x9b498 | goto label_58;
| }
0x0009b31e strd r8, r6, [sp, 0x50] | __asm ("strd r8, r6, [var_50h]");
0x0009b322 mov r6, r1 | r6 = r1;
0x0009b324 movs r3, 1 | r3 = 1;
0x0009b326 str r0, [sp, 0x68] | var_68h = r0;
0x0009b328 str r3, [sp, 0x40] | var_40h = r3;
| label_17:
0x0009b32a ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009b32c ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x0009b32e cmp r4, 0 |
| if (r4 == 0) {
0x0009b330 beq 0x9b3e4 | goto label_59;
| }
0x0009b332 ldrb.w r8, [sp, 0x40] | r8 = var_40h;
0x0009b336 ldrd r5, r7, [sp, 0x34] | __asm ("ldrd r5, r7, [var_34h]");
| label_16:
0x0009b33a mov ip, r6 |
0x0009b33c mov lr, fp | lr = fp;
0x0009b33e movs r1, 0 | r1 = 0;
0x0009b340 mov r3, r6 | r3 = r6;
0x0009b342 mov r2, fp | r2 = fp;
| do {
0x0009b344 lsrs r3, r3, 7 | r3 >>= 7;
0x0009b346 adds r1, 1 | r1++;
0x0009b348 orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009b34c lsrs r2, r2, 7 | r2 >>= 7;
0x0009b34e orrs.w r0, r3, r2 | r0 = r3 | r2;
0x0009b352 bne 0x9b344 |
| } while (r0 != r3);
0x0009b354 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x0009b356 rsb.w r0, r1, 0xa | r0 = 0xa - r1;
0x0009b35a rsb.w r1, r1, 0xb | r1 = 0xb - r1;
0x0009b35e strb.w r8, [r2, r0] | *((r2 + r0)) = r8;
0x0009b362 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0009b364 add r1, r3 | r1 += r3;
| do {
0x0009b366 lsr.w r2, ip, 7 | r2 = ip >> 7;
0x0009b36a orn r3, ip, 0x7f | r3 = ip | 0x7f;
| r3 = ~r3;
0x0009b36e uxtb.w sl, ip | sl = (int8_t) ip;
0x0009b372 orr.w ip, r2, lr, lsl 25 |
0x0009b376 lsr.w lr, lr, 7 | lr >>= 7;
0x0009b37a mov r2, r1 | r2 = r1;
0x0009b37c strb r3, [r1], 1 | *(r1) = r3;
| r1++;
0x0009b380 orrs.w r3, ip, lr | r3 = ip | lr;
0x0009b384 bne 0x9b366 |
| } while (r3 != ip);
0x0009b386 and sl, sl, 0x7f | sl &= 0x7f;
0x0009b38a strb.w sl, [r2] | *(r2) = sl;
0x0009b38e mov r2, r5 | r2 = r5;
0x0009b390 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0009b392 subs r3, r3, r0 | r3 -= r0;
0x0009b394 str r3, [sp, 4] | var_4h = r3;
0x0009b396 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0009b398 add r3, r0 | r3 += r0;
0x0009b39a mov r0, sb | r0 = sb;
0x0009b39c str r3, [sp] | *(sp) = r3;
0x0009b39e mov r3, r7 | r3 = r7;
0x0009b3a0 bl 0x867b4 | fcn_000867b4 (r0, r1, r2);
0x0009b3a4 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0009b3a6 adds r5, 1 | r5++;
0x0009b3a8 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0009b3aa adc r7, r7, 0 | __asm ("adc r7, r7, 0");
0x0009b3ae adds r3, 1 | r3++;
0x0009b3b0 adds r6, r3, r6 | r6 = r3 + r6;
0x0009b3b2 adc.w fp, fp, r3, asr 31 | __asm ("adc.w fp, fp, r3, asr 31");
0x0009b3b6 subs r3, r4, 0 | r3 = r4 - 0;
0x0009b3b8 it ne |
| if (r3 == r4) {
0x0009b3ba movne r3, 1 | r3 = 1;
| }
0x0009b3bc cmp r0, 0 |
0x0009b3be it ne |
| if (r0 == 0) {
0x0009b3c0 movne r3, 0 | r3 = 0;
| }
0x0009b3c2 cmp r3, 0 |
| if (r3 != 0) {
0x0009b3c4 bne 0x9b33a | goto label_16;
| }
0x0009b3c6 cmp r0, 0 |
| if (r0 != 0) {
0x0009b3c8 bne 0x9b490 | goto label_60;
| }
| do {
0x0009b3ca ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009b3cc ldr r2, [sp, 0x40] | r2 = var_40h;
0x0009b3ce ldrd r6, fp, [sp, 0x34] | __asm ("ldrd r6, fp, [var_34h]");
0x0009b3d2 ldr r3, [r3] | r3 = *(r3);
0x0009b3d4 adds r2, 1 | r2++;
0x0009b3d6 str r2, [sp, 0x40] | var_40h = r2;
0x0009b3d8 str r3, [sp, 0x3c] | var_3ch = r3;
0x0009b3da ldr r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x0009b3dc cbz r3, 0x9b3ea | goto label_61;
| }
0x0009b3de strd r5, r7, [sp, 0x34] | __asm ("strd r5, r7, [var_34h]");
0x0009b3e2 b 0x9b32a | goto label_17;
| label_59:
0x0009b3e4 ldrd r5, r7, [sp, 0x34] | __asm ("ldrd r5, r7, [var_34h]");
0x0009b3e8 b 0x9b3ca |
| } while (1);
| label_61:
0x0009b3ea ldrd r8, r6, [sp, 0x50] | __asm ("ldrd r8, r6, [var_50h]");
0x0009b3ee mov lr, r5 | lr = r5;
0x0009b3f0 ldr r4, [sp, 0x68] | r4 = var_68h;
0x0009b3f2 mov sl, r7 | sl = r7;
| label_20:
0x0009b3f4 ldrd r3, r1, [sp, 0x34] | __asm ("ldrd r3, r1, [var_34h]");
0x0009b3f8 ldr r5, [sp, 0x30] | r5 = var_30h;
0x0009b3fa mov r2, r3 | r2 = r3;
0x0009b3fc mov r0, r1 | r0 = r1;
| do {
0x0009b3fe lsrs r2, r2, 7 | r2 >>= 7;
0x0009b400 adds r4, 1 | r4++;
0x0009b402 orr.w r2, r2, r0, lsl 25 | r2 |= (r0 << 25);
0x0009b406 lsrs r0, r0, 7 | r0 >>= 7;
0x0009b408 orrs.w r7, r2, r0 | r7 = r2 | r0;
0x0009b40c bne 0x9b3fe |
| } while (r7 != r2);
0x0009b40e ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0009b410 mov r7, r5 | r7 = r5;
0x0009b412 ldr r5, [sp, 0x40] | r5 = var_40h;
0x0009b414 rsb.w ip, r4, 0xa |
0x0009b418 rsb.w r4, r4, 0xb | r4 = 0xb - r4;
0x0009b41c ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x0009b41e strb.w r5, [r2, ip] | *((r2 + ip)) = r5;
0x0009b422 mov r5, r7 | r5 = r7;
0x0009b424 ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x0009b426 add r2, r4 | r2 += r4;
| do {
0x0009b428 lsrs r4, r3, 7 | r4 = r3 >> 7;
0x0009b42a orn r0, r3, 0x7f | r0 = r3 | 0x7f;
| r0 = ~r0;
0x0009b42e uxtb r7, r3 | r7 = (int8_t) r3;
0x0009b430 orr.w r3, r4, r1, lsl 25 | r3 = r4 | (r1 << 25);
0x0009b434 lsrs r1, r1, 7 | r1 >>= 7;
0x0009b436 mov r4, r2 | r4 = r2;
0x0009b438 strb r0, [r2], 1 | *(r2) = r0;
| r2++;
0x0009b43c orrs.w r0, r3, r1 | r0 = r3 | r1;
0x0009b440 bne 0x9b428 |
| } while (r0 != r3);
0x0009b442 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0009b444 mov r3, lr | r3 = lr;
0x0009b446 and r7, r7, 0x7f | r7 &= 0x7f;
0x0009b44a subs r1, r3, 1 | r1 = r3 - 1;
0x0009b44c strb r7, [r4] | *(r4) = r7;
0x0009b44e adc r4, sl, -1 | __asm ("adc r4, sl, -1");
0x0009b452 ldr r3, [r2, 0x20] | r3 = *((r2 + 0x20));
0x0009b454 mov r0, sb | r0 = sb;
0x0009b456 str r5, [sp, 0x30] | var_30h = r5;
0x0009b458 sub.w r3, r3, ip | r3 -= ip;
0x0009b45c str r3, [sp, 0x2c] | var_2ch = r3;
0x0009b45e ldr r3, [r2, 0x24] | r3 = *((r2 + 0x24));
0x0009b460 add r3, ip | r3 += ip;
0x0009b462 str r3, [sp, 0x28] | var_28h = r3;
0x0009b464 ldrd sl, fp, [r8, 0x38] | __asm ("ldrd sl, fp, [r8, 0x38]");
0x0009b468 strd r1, r4, [sp, 0x18] | __asm ("strd r1, r4, [var_18h]");
0x0009b46c ldr r1, [sp, 0x48] | r1 = var_48h;
0x0009b46e strd sl, fp, [sp, 0x20] | __asm ("strd sl, fp, [var_0hx20]");
0x0009b472 ldrd r2, r3, [sp, 0x60] | __asm ("ldrd r2, r3, [var_60h]");
0x0009b476 str r1, [sp, 0x10] | var_10h = r1;
0x0009b478 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0009b47a str r1, [sp, 0x14] | var_14h = r1;
0x0009b47c ldr r1, [sp, 0x6c] | r1 = var_6ch;
0x0009b47e ldrd sl, fp, [r8, 8] | __asm ("ldrd sl, fp, [r8, 8]");
0x0009b482 str r1, [sp] | *(sp) = r1;
0x0009b484 strd sl, fp, [sp, 8] | __asm ("strd sl, fp, [var_ch]");
0x0009b488 bl 0x86944 | r0 = fcn_00086944 (r0, r1, r2);
0x0009b48c mov r4, r0 | r4 = r0;
0x0009b48e b 0x9b202 | goto label_18;
| label_60:
0x0009b490 ldrd r8, r6, [sp, 0x50] | __asm ("ldrd r8, r6, [var_50h]");
0x0009b494 mov r4, r0 | r4 = r0;
0x0009b496 b 0x9b184 | goto label_19;
| label_58:
0x0009b498 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009b49a mov sl, r2 | sl = r2;
0x0009b49c strd r1, fp, [sp, 0x34] | __asm ("strd r1, fp, [var_34h]");
0x0009b4a0 mov lr, r3 | lr = r3;
0x0009b4a2 movs r3, 1 | r3 = 1;
0x0009b4a4 str r3, [sp, 0x40] | var_40h = r3;
0x0009b4a6 b 0x9b3f4 | goto label_20;
| label_56:
0x0009b4a8 mov r4, r8 | r4 = r8;
0x0009b4aa cmp.w sl, 0 |
| if (sl == 0) {
0x0009b4ae beq.w 0x9ac9e | goto label_21;
| }
| label_57:
0x0009b4b2 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0009b4b4 movs r3, 0 | r3 = 0;
0x0009b4b6 str r3, [sp, 0x74] | var_74h = r3;
0x0009b4b8 str r4, [sp, 0x6c] | var_6ch = r4;
0x0009b4ba strd r3, r3, [r2, 4] | __asm ("strd r3, r3, [r2, 4]");
0x0009b4be movs r3, 3 | r3 = 3;
0x0009b4c0 b 0x9ad44 | goto label_22;
| label_31:
0x0009b4c2 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0009b4c4 str r3, [sp, 0x58] | var_58h = r3;
0x0009b4c6 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0009b4c8 str r3, [sp, 0x5c] | var_5ch = r3;
0x0009b4ca b.w 0x9abf2 | goto label_23;
| label_27:
0x0009b4ce blx 0x7e8c | fcn_00007e8c ();
| label_33:
0x0009b4d2 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0009b4d4 mov r4, r0 | r4 = r0;
0x0009b4d6 ldr r6, [sp, 0x84] | r6 = var_84h;
0x0009b4d8 str r3, [sp, 0x30] | var_30h = r3;
0x0009b4da b.w 0x9ab98 | 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/libsqlite3.so.0.8.6 @ 0x9b634 */
| #include <stdint.h>
|
; (fcn) fcn.0009b634 () | void fcn_0009b634 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0009b634 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009b638 sub sp, 0x2c |
0x0009b63a str r2, [sp, 0xc] | var_ch = r2;
0x0009b63c mov r7, r3 | r7 = r3;
0x0009b63e add.w sl, sp, 0x1c | sl += var_1ch;
0x0009b642 add.w sb, sp, 0x20 | sb += var_20h;
0x0009b646 ldr r2, [pc, 0x22c] |
0x0009b648 mov r6, r0 | r6 = r0;
0x0009b64a ldr r3, [pc, 0x22c] | r3 = *(0x9b87a);
0x0009b64c str r1, [sp, 0x14] | var_14h = r1;
0x0009b64e add r2, pc | r2 = 0x136ec8;
0x0009b650 str r1, [sp, 0x1c] | var_1ch = r1;
0x0009b652 ldr r3, [r2, r3] |
0x0009b654 movs r1, 7 | r1 = 7;
0x0009b656 mov r2, sb | r2 = sb;
0x0009b658 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009b65a str r3, [sp, 0x24] | var_24h = r3;
0x0009b65c mov.w r3, 0 | r3 = 0;
0x0009b660 mov r3, sl | r3 = sl;
0x0009b662 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009b666 mov r4, r0 | r4 = r0;
0x0009b668 cmp r0, 0 |
| if (r0 != 0) {
0x0009b66a bne 0x9b73a | goto label_10;
| }
0x0009b66c ldr.w r8, [sp, 0x20] | r8 = var_20h;
0x0009b670 mov r0, r8 | r0 = r8;
0x0009b672 blx 0x809c | r0 = fcn_0000809c ();
0x0009b676 cmp r0, 0x64 |
| if (r0 != 0x64) {
0x0009b678 bne 0x9b75e | goto label_11;
| }
0x0009b67a ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
| if (r3 != 0) {
0x0009b67c cbz r3, 0x9b68a |
0x0009b67e ldr r1, [r6, 0x18] | r1 = *((r6 + 0x18));
0x0009b680 mov r0, r8 | r0 = r8;
0x0009b682 adds r1, 1 | r1++;
0x0009b684 blx 0x8050 | r0 = fcn_00008050 ();
0x0009b688 mov r4, r0 | r4 = r0;
| }
0x0009b68a movs r1, 0 | r1 = 0;
0x0009b68c mov r0, r8 | r0 = r8;
0x0009b68e blx 0x80d8 | fcn_000080d8 ();
0x0009b692 ldrd r2, r3, [r6, 0x110] | __asm ("ldrd r2, r3, aav.0x000000ff");
0x0009b696 mov fp, r1 |
0x0009b698 mov r5, r0 | r5 = r0;
0x0009b69a cmp r0, r2 |
0x0009b69c sbcs.w r1, fp, r3 | __asm ("sbcs.w r1, fp, r3");
| if (r0 >= r2) {
0x0009b6a0 blt 0x9b6b4 |
0x0009b6a2 cmp fp, r3 |
0x0009b6a4 it eq |
| if (fp == r3) {
0x0009b6a6 cmpeq r5, r2 | __asm ("cmpeq r5, r2");
| }
| if (fp == r3) {
0x0009b6a8 beq.w 0x9b826 | goto label_12;
| }
| label_8:
0x0009b6ac ldr.w r3, [r6, 0x118] | r3 = *((r6 + 0x118));
0x0009b6b0 cmp r4, r3 |
| if (r4 == r3) {
0x0009b6b2 beq 0x9b7aa | goto label_13;
| }
| }
| label_2:
0x0009b6b4 mov r0, r6 | r0 = r6;
0x0009b6b6 bl 0x9b4ec | r0 = fcn_0009b4ec (r0);
0x0009b6ba cmp r0, 0 |
| if (r0 != 0) {
0x0009b6bc bne 0x9b7b4 | goto label_14;
| }
| label_3:
0x0009b6be strd r5, fp, [r6, 0x110] | __asm ("strd r5, fp, [r6, aav.0x00000110]");
0x0009b6c2 movs r5, 1 | r5 = 1;
0x0009b6c4 str.w r4, [r6, 0x118] | __asm ("str.w r4, aav.0x000000ff");
0x0009b6c8 str.w r5, [r6, 0x11c] | __asm ("str.w r5, aav.0x000000ff");
0x0009b6cc str.w sb, [sp, 0x10] | __asm ("str.w sb, [var_10h]");
| label_0:
0x0009b6d0 ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x0009b6d2 cmp r0, r5 |
| if (r0 < r5) {
0x0009b6d4 blt 0x9b6f0 | goto label_15;
| }
0x0009b6d6 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0009b6d8 subs r2, r5, 2 | r2 = r5 - 2;
0x0009b6da add r3, r2 | r3 += r2;
| do {
0x0009b6dc ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x0009b6e0 add.w sb, r5, -1 | sb = r5 + -1;
0x0009b6e4 mov fp, r5 |
0x0009b6e6 adds r5, 1 | r5++;
0x0009b6e8 cmp r2, 0 |
| if (r2 == 0) {
0x0009b6ea beq 0x9b768 | goto label_16;
| }
0x0009b6ec cmp r0, r5 |
0x0009b6ee bge 0x9b6dc |
| } while (r0 >= r5);
| label_15:
0x0009b6f0 mov r0, r8 | r0 = r8;
0x0009b6f2 ldr.w sb, [sp, 0x10] | sb = var_10h;
0x0009b6f6 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009b6fa mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0009b6fc cbnz r0, 0x9b740 | goto label_1;
| }
0x0009b6fe ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0009b700 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0009b702 str r2, [sp, 0x1c] | var_1ch = r2;
0x0009b704 cmp r3, 0 |
| if (r3 == 0) {
0x0009b706 beq 0x9b7b8 | goto label_17;
| }
0x0009b708 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0009b70a ldr r3, [r2] | r3 = *(r2);
0x0009b70c subs r3, 1 | r3--;
0x0009b70e str r3, [r2] | *(r2) = r3;
| label_6:
0x0009b710 ldrb.w r3, [r6, 0xee] | r3 = *((r6 + 0xee));
0x0009b714 add r5, sp, 0x14 | r5 += var_14h;
| if (r3 == 0) {
0x0009b716 cbz r3, 0x9b740 | goto label_1;
| }
| label_7:
0x0009b718 mov r3, r5 | r3 = r5;
0x0009b71a mov r2, sb | r2 = sb;
0x0009b71c movs r1, 0x13 | r1 = 0x13;
0x0009b71e mov r0, r6 | r0 = r6;
0x0009b720 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009b724 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0009b726 cbnz r0, 0x9b740 | goto label_1;
| }
0x0009b728 ldr r4, [sp, 0x20] | r4 = var_20h;
0x0009b72a mov r0, r4 | r0 = r4;
0x0009b72c blx 0x809c | fcn_0000809c ();
0x0009b730 mov r0, r4 | r0 = r4;
0x0009b732 blx 0x7cfc | r0 = fcn_00007cfc ();
| label_5:
0x0009b736 mov r4, r0 | r4 = r0;
0x0009b738 b 0x9b740 | goto label_1;
| label_10:
0x0009b73a ldr r0, [sp, 0x20] | r0 = var_20h;
0x0009b73c blx 0x7cfc | fcn_00007cfc ();
| do {
| label_1:
0x0009b740 ldr r2, [pc, 0x138] |
0x0009b742 ldr r3, [pc, 0x134] | r3 = *(0x9b87a);
0x0009b744 add r2, pc | r2 = 0x136fc4;
0x0009b746 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009b748 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009b74a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0009b74c eors r2, r3 | r2 ^= r3;
0x0009b74e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009b752 bne.w 0x9b86e | goto label_18;
| }
0x0009b756 mov r0, r4 | r0 = r4;
0x0009b758 add sp, 0x2c |
0x0009b75a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x0009b75e mov r0, r8 | r0 = r8;
0x0009b760 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009b764 mov r4, r0 | r4 = r0;
0x0009b766 b 0x9b740 |
| } while (1);
| label_16:
0x0009b768 mov r1, fp | r1 = fp;
0x0009b76a mov r0, r8 | r0 = r8;
0x0009b76c blx 0x81c4 | fcn_000081c4 ();
0x0009b770 add.w r2, r7, sb, lsl 2 | r2 = r7 + (sb << 2);
0x0009b774 mov.w r3, -1 | r3 = -1;
0x0009b778 mov r1, r4 | r1 = r4;
0x0009b77a str r2, [sp] | *(sp) = r2;
0x0009b77c mov r2, r0 | r2 = r0;
0x0009b77e mov r0, r6 | r0 = r6;
0x0009b780 bl 0x413cc | fcn_000413cc (r0, r1, r2, r3);
0x0009b784 mov r1, fp | r1 = fp;
0x0009b786 mov fp, r0 |
0x0009b788 mov r0, r8 | r0 = r8;
0x0009b78a blx 0x8184 | fcn_00008184 ();
0x0009b78e ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x0009b790 ldr.w r3, [r7, r2, lsl 2] | offset_0 = r2 << 2;
| r3 = *((r7 + offset_0));
0x0009b794 add r3, r0 | r3 += r0;
0x0009b796 str.w r3, [r7, r2, lsl 2] | __asm ("str.w r3, [r7, r2, lsl 2]");
0x0009b79a cmp.w fp, 0 |
| if (fp == 0) {
0x0009b79e beq 0x9b6d0 | goto label_0;
| }
0x0009b7a0 mov r4, fp | r4 = fp;
| label_4:
0x0009b7a2 mov r0, r8 | r0 = r8;
0x0009b7a4 blx 0x7cfc | fcn_00007cfc ();
0x0009b7a8 b 0x9b740 | goto label_1;
| label_13:
0x0009b7aa ldrd r3, r2, [r6, 0x108] | __asm ("ldrd r3, r2, aav.0x000000ff");
0x0009b7ae cmp r2, r3 |
| if (r2 > r3) {
0x0009b7b0 bgt 0x9b6b4 | goto label_2;
| }
0x0009b7b2 b 0x9b6be | goto label_3;
| label_14:
0x0009b7b4 mov r4, r0 | r4 = r0;
0x0009b7b6 b 0x9b7a2 | goto label_4;
| label_17:
0x0009b7b8 mov r3, sl | r3 = sl;
0x0009b7ba mov r2, sb | r2 = sb;
0x0009b7bc movs r1, 1 | r1 = 1;
0x0009b7be mov r0, r6 | r0 = r6;
0x0009b7c0 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009b7c4 cmp r0, 0 |
| if (r0 != 0) {
0x0009b7c6 bne 0x9b736 | goto label_5;
| }
0x0009b7c8 ldr r5, [sp, 0x20] | r5 = var_20h;
0x0009b7ca mov r0, r5 | r0 = r5;
0x0009b7cc blx 0x809c | r0 = fcn_0000809c ();
0x0009b7d0 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0009b7d2 beq 0x9b832 | goto label_19;
| }
0x0009b7d4 mov r0, r5 | r0 = r5;
0x0009b7d6 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009b7da cmp r0, 0 |
| if (r0 != 0) {
0x0009b7dc bne 0x9b736 | goto label_5;
| }
| label_9:
0x0009b7de ldr r2, [sp, 0xc] | r2 = var_ch;
0x0009b7e0 ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x0009b7e2 ldr r3, [r2] | r3 = *(r2);
0x0009b7e4 subs r3, 1 | r3--;
0x0009b7e6 str r3, [r2] | *(r2) = r3;
0x0009b7e8 cmp r1, 0 |
| if (r1 != 0) {
0x0009b7ea bne 0x9b710 | goto label_6;
| }
0x0009b7ec add r5, sp, 0x14 | r5 += var_14h;
0x0009b7ee mov r2, sb | r2 = sb;
0x0009b7f0 mov r3, r5 | r3 = r5;
0x0009b7f2 mov r0, r6 | r0 = r6;
0x0009b7f4 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009b7f8 mov r4, r0 | r4 = r0;
0x0009b7fa cmp r0, 0 |
| if (r0 != 0) {
0x0009b7fc bne 0x9b740 | goto label_1;
| }
0x0009b7fe ldr r4, [sp, 0x20] | r4 = var_20h;
0x0009b800 mov r0, r4 | r0 = r4;
0x0009b802 blx 0x809c | fcn_0000809c ();
0x0009b806 mov r0, r4 | r0 = r4;
0x0009b808 blx 0x7cfc | fcn_00007cfc ();
0x0009b80c ldrb.w r2, [r6, 0xee] | r2 = *((r6 + 0xee));
0x0009b810 subs r3, r0, 0 | r3 = r0 - 0;
0x0009b812 it ne |
| if (r3 == r0) {
0x0009b814 movne r3, 1 | r3 = 1;
| }
0x0009b816 mov r4, r0 | r4 = r0;
0x0009b818 cmp r2, 0 |
0x0009b81a it eq |
| if (r2 != 0) {
0x0009b81c orreq r3, r3, 1 | r3 |= 1;
| }
0x0009b820 cmp r3, 0 |
| if (r3 != 0) {
0x0009b822 bne 0x9b740 | goto label_1;
| }
0x0009b824 b 0x9b718 | goto label_7;
| label_12:
0x0009b826 ldr.w r3, [r6, 0x11c] | r3 = *((r6 + 0x11c));
0x0009b82a cmp r3, 0 |
| if (r3 == 0) {
0x0009b82c beq.w 0x9b6b4 | goto label_2;
| }
0x0009b830 b 0x9b6ac | goto label_8;
| label_19:
0x0009b832 mov r1, r4 | r1 = r4;
0x0009b834 mov r0, r5 | r0 = r5;
0x0009b836 blx 0x8050 | r0 = fcn_00008050 ();
0x0009b83a mov r8, r0 | r8 = r0;
0x0009b83c mov r0, r5 | r0 = r5;
0x0009b83e blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009b842 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0009b844 cbnz r0, 0x9b86a | goto label_20;
| }
0x0009b846 cmp.w r8, 0 |
| if (r8 == 0) {
0x0009b84a beq 0x9b7de | goto label_9;
| }
0x0009b84c movs r1, 1 | r1 = 1;
0x0009b84e mov r0, r6 | r0 = r6;
0x0009b850 bl 0x88b84 | fcn_00088b84 (r0, r1);
0x0009b854 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0009b856 mov r4, r0 | r4 = r0;
0x0009b858 mov r1, r5 | r1 = r5;
0x0009b85a mov r0, r7 | r0 = r7;
0x0009b85c str r5, [r3] | *(r3) = r5;
0x0009b85e ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x0009b860 adds r2, 1 | r2++;
0x0009b862 lsls r2, r2, 3 | r2 <<= 3;
0x0009b864 blx 0x8264 | fcn_00008264 ();
0x0009b868 b 0x9b740 | goto label_1;
| label_20:
0x0009b86a mov r4, r0 | r4 = r0;
0x0009b86c b 0x9b740 | goto label_1;
| label_18:
0x0009b86e blx 0x7e8c | fcn_00007e8c ();
0x0009b872 nop |
0x0009b874 movs r6, 0x42 | r6 = 0x42;
0x0009b876 movs r3, r0 | r3 = r0;
0x0009b878 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0009b87a movs r0, r0 |
0x0009b87c movs r5, 0x4c | r5 = 0x4c;
0x0009b87e movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9bc3c */
| #include <stdint.h>
|
; (fcn) fcn.0009bc3c () | void fcn_0009bc3c (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t arg_238h, int16_t arg_244h, int16_t arg_248h, int16_t arg_24ch, int16_t arg_254h, int16_t arg_258h, int16_t arg_270h, int16_t arg_274h, int16_t arg_278h, int16_t arg_27ch, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| int32_t var_b0h;
| int32_t var_b0h_2;
| int32_t var_b8h;
| int32_t var_b8h_2;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_c8h;
| int16_t var_cch;
| int16_t var_d0h;
| int16_t var_d4h;
| int16_t var_d8h;
| int32_t var_d8h_2;
| int16_t var_e0h;
| int16_t var_e4h;
| int16_t var_e8h;
| int16_t s;
| int16_t var_f4h;
| int16_t var_f8h;
| int16_t var_108h;
| int32_t var_108h_2;
| int16_t var_124h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0009bc3c svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0009bc40 mov fp, r0 |
0x0009bc42 vpush {d8} | __asm ("vpush {d8}");
0x0009bc46 sub sp, 0x12c |
0x0009bc48 mov.w r0, 0x280 | r0 = 0x280;
0x0009bc4c str r2, [sp, 0x74] | var_74h = r2;
0x0009bc4e ldr.w r2, [pc, 0xc08] |
0x0009bc52 ldr.w r3, [pc, 0xc08] | r3 = *(0x9c85e);
0x0009bc56 str r1, [sp, 0x58] | var_58h = r1;
0x0009bc58 add r2, pc | r2 = 0x1384b6;
0x0009bc5a ldr r3, [r2, r3] |
0x0009bc5c ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009bc5e str r3, [sp, 0x124] | var_124h = r3;
0x0009bc60 mov.w r3, 0 | r3 = 0;
0x0009bc64 blx 0x85dc | r0 = fcn_000085dc ();
0x0009bc68 cmp r0, 0 |
| if (r0 == 0) {
0x0009bc6a beq.w 0x9c30a | goto label_59;
| }
0x0009bc6e add.w r3, r0, 0x238 | r3 = r0 + 0x238;
0x0009bc72 mov sl, r0 | sl = r0;
0x0009bc74 add r2, sp, 0xf0 | r2 += s;
0x0009bc76 str r3, [sp, 0x80] | var_80h = r3;
0x0009bc78 movs r1, 0x16 | r1 = 0x16;
0x0009bc7a movs r3, 0 | r3 = 0;
0x0009bc7c mov r0, fp | r0 = fp;
0x0009bc7e str r3, [sp, 0xf0] | s = r3;
0x0009bc80 str r2, [sp, 0x50] | var_50h = r2;
0x0009bc82 bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x0009bc86 add.w r3, sl, 0x248 | r3 = sl + 0x248;
0x0009bc8a mov sb, r0 | sb = r0;
0x0009bc8c str r3, [sp, 0x60] | var_60h = r3;
| if (r0 == 0) {
0x0009bc8e cbz r0, 0x9bcc6 | goto label_60;
| }
| label_49:
0x0009bc90 movs r3, 0 | r3 = 0;
0x0009bc92 str r3, [sp, 0x64] | var_64h = r3;
| do {
| label_0:
0x0009bc94 mov r0, sl | r0 = sl;
0x0009bc96 blx 0x84f8 | fcn_000084f8 ();
0x0009bc9a ldr r0, [sp, 0x64] | r0 = var_64h;
0x0009bc9c blx 0x84f8 | fcn_000084f8 ();
| label_15:
0x0009bca0 ldr.w r2, [pc, 0xbbc] |
0x0009bca4 ldr.w r3, [pc, 0xbb4] | r3 = *(0x9c85c);
0x0009bca8 add r2, pc | r2 = 0x13850c;
0x0009bcaa ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009bcac ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009bcae ldr r3, [sp, 0x124] | r3 = var_124h;
0x0009bcb0 eors r2, r3 | r2 ^= r3;
0x0009bcb2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009bcb6 bne.w 0x9d048 | goto label_61;
| }
0x0009bcba mov r0, sb | r0 = sb;
0x0009bcbc add sp, 0x12c |
0x0009bcbe vpop {d8} | __asm ("vpop {d8}");
0x0009bcc2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_60:
0x0009bcc6 ldr r5, [sp, 0xf0] | r5 = s;
0x0009bcc8 movs r2, 1 | r2 = 1;
0x0009bcca mov r1, r2 | r1 = r2;
0x0009bccc mov r0, r5 | r0 = r5;
0x0009bcce blx 0x7e30 | sleep (r0);
0x0009bcd2 mov r0, r5 | r0 = r5;
0x0009bcd4 blx 0x809c | r0 = fcn_0000809c ();
0x0009bcd8 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0009bcda beq.w 0x9c606 | goto label_62;
| }
| label_21:
0x0009bcde movs r3, 0 | r3 = 0;
0x0009bce0 str r3, [sp, 0x8c] | var_8ch = r3;
0x0009bce2 str r3, [sp, 0x3c] | var_3ch = r3;
0x0009bce4 str r3, [sp, 0x64] | var_64h = r3;
| label_22:
0x0009bce6 mov r0, r5 | r0 = r5;
0x0009bce8 blx 0x7cfc | fcn_00007cfc ();
0x0009bcec ldr r3, [sp, 0x58] | r3 = var_58h;
0x0009bcee mov sb, r0 | sb = r0;
0x0009bcf0 cmp r3, 0 |
0x0009bcf2 ite le |
| if (r3 > 0) {
0x0009bcf4 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 0) {
0x0009bcf6 movgt r3, 1 | r3 = 1;
| }
0x0009bcf8 cmp r0, 0 |
0x0009bcfa it ne |
| if (r0 == 0) {
0x0009bcfc movne r3, 0 | r3 = 0;
| }
0x0009bcfe str r3, [sp, 0x5c] | var_5ch = r3;
0x0009bd00 cmp r3, 0 |
0x0009bd02 beq 0x9bc94 |
| } while (r3 == 0);
0x0009bd04 ldr r2, [sp, 0x74] | r2 = var_74h;
0x0009bd06 movs r3, 0 | r3 = 0;
0x0009bd08 mov sb, fp | sb = fp;
0x0009bd0a str r3, [sp, 0x78] | var_78h = r3;
0x0009bd0c strd r3, r3, [sp, 0x34] | __asm ("strd r3, r3, [var_34h]");
0x0009bd10 mov fp, sl |
0x0009bd12 add r3, sp, 0xc8 | r3 += var_c8h;
0x0009bd14 cmp r2, 2 |
0x0009bd16 it lt |
| if (r2 >= 2) {
0x0009bd18 movlt r2, 2 | r2 = 2;
| }
0x0009bd1a str r3, [sp, 0x4c] | var_4ch = r3;
0x0009bd1c add r3, sp, 0xd0 | r3 += var_d0h;
0x0009bd1e str r2, [sp, 0x48] | var_48h = r2;
0x0009bd20 str r3, [sp, 0x7c] | var_7ch = r3;
| label_1:
0x0009bd22 movs r5, 0 | r5 = 0;
0x0009bd24 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0009bd26 mov r3, r5 | r3 = r5;
0x0009bd28 movs r1, 0x1c | r1 = 0x1c;
0x0009bd2a mov r0, sb | r0 = sb;
0x0009bd2c ldr.w r4, [sb, 0x100] | r4 = *((sb + 0x100));
0x0009bd30 str r5, [sp, 0xc8] | var_c8h = r5;
0x0009bd32 bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x0009bd36 ldr r6, [sp, 0xc8] | r6 = var_c8h;
0x0009bd38 movs r1, 1 | r1 = 1;
0x0009bd3a ldr r2, [sp, 0x48] | r2 = var_48h;
0x0009bd3c lsls r4, r4, 0xa | r4 <<= 0xa;
0x0009bd3e mov r0, r6 | r0 = r6;
0x0009bd40 asr.w r8, r4, 0x1f | r8 = r4 >> 0x1f;
0x0009bd44 blx 0x7e30 | sleep (r0);
0x0009bd48 mov r0, r6 | r0 = r6;
0x0009bd4a blx 0x809c | r0 = fcn_0000809c ();
0x0009bd4e cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0009bd50 beq.w 0x9bf38 | goto label_63;
| }
0x0009bd54 mov r0, r6 | r0 = r6;
0x0009bd56 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009bd5a cmp r0, 0 |
| if (r0 != 0) {
0x0009bd5c bne.w 0x9c248 | goto label_64;
| }
0x0009bd60 mov.w r3, -1 | r3 = -1;
0x0009bd64 str r3, [sp, 0x30] | var_30h = r3;
| label_3:
0x0009bd66 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009bd68 cmp r3, 0 |
| if (r3 != 0) {
0x0009bd6a bne.w 0x9bf62 | goto label_65;
| }
0x0009bd6e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009bd70 mov sl, r3 | sl = r3;
0x0009bd72 str r3, [sp, 0x54] | var_54h = r3;
| label_4:
0x0009bd74 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009bd76 cmp r3, 0 |
| if (r3 <= 0) {
0x0009bd78 ble.w 0x9d028 | goto label_66;
| }
0x0009bd7c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009bd7e cmp r3, 0 |
| if (r3 < 0) {
0x0009bd80 blt.w 0x9c178 | goto label_67;
| }
0x0009bd84 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0009bd86 mov.w r8, 0 | r8 = 0;
0x0009bd8a cmp r8, r2 |
0x0009bd8c sbcs r4, r3 | __asm ("sbcs r4, r3");
| if (r8 < r2) {
0x0009bd8e blt.w 0x9c178 | goto label_67;
| }
0x0009bd92 mov.w r2, 0x280 | r2 = 0x280;
0x0009bd96 mov r1, r8 | r1 = r8;
0x0009bd98 mov r0, fp | r0 = fp;
0x0009bd9a movs r4, 1 | r4 = 1;
0x0009bd9c blx 0x8264 | fcn_00008264 ();
0x0009bda0 str.w r4, [fp, 0x244] | __asm ("str.w r4, [arg_244h]");
0x0009bda4 cmp.w sl, 0 |
| if (sl == 0) {
0x0009bda8 beq 0x9be1e | goto label_68;
| }
0x0009bdaa mov r3, sb | r3 = sb;
0x0009bdac mov r0, r8 | r0 = r8;
0x0009bdae mov sb, sl | sb = sl;
0x0009bdb0 mov r7, r8 | r7 = r8;
0x0009bdb2 mov sl, fp | sl = fp;
0x0009bdb4 mov fp, r3 |
0x0009bdb6 blx 0x84f8 | fcn_000084f8 ();
0x0009bdba ldr.w r0, [sl, 0x258] | r0 = *((sl + 0x258));
0x0009bdbe blx 0x84f8 | fcn_000084f8 ();
0x0009bdc2 strd r8, r8, [sl, 0x248] | __asm ("strd r8, r8, aav.0x000000ff");
0x0009bdc6 str.w r8, [sl, 0x258] | __asm ("str.w r8, aav.0x000000ff");
| label_2:
0x0009bdca ldr r3, [sp, 0x78] | r3 = var_78h;
0x0009bdcc ands r7, r3 | r7 &= r3;
0x0009bdce cmp r7, 0 |
| if (r7 == 0) {
0x0009bdd0 beq.w 0x9bc94 | goto label_0;
| }
| label_48:
0x0009bdd4 movs r3, 0 | r3 = 0;
0x0009bdd6 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0009bdd8 mov r0, fp | r0 = fp;
0x0009bdda movs r1, 0x17 | r1 = 0x17;
0x0009bddc str r3, [sp, 0xf0] | s = r3;
0x0009bdde bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009bde2 mov sb, r0 | sb = r0;
0x0009bde4 cmp r0, 0 |
| if (r0 != 0) {
0x0009bde6 bne.w 0x9bc94 | goto label_0;
| }
0x0009bdea ldr r4, [sp, 0xf0] | r4 = s;
0x0009bdec movs r2, 1 | r2 = 1;
0x0009bdee mov r1, r2 | r1 = r2;
0x0009bdf0 mov r0, r4 | r0 = r4;
0x0009bdf2 blx 0x7e30 | sleep (r0);
0x0009bdf6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009bdf8 movs r1, 2 | r1 = 2;
0x0009bdfa ldr r2, [sp, 0x64] | r2 = var_64h;
0x0009bdfc mov r0, r4 | r0 = r4;
0x0009bdfe str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0009be02 blx 0x83f0 | fcn_000083f0 ();
0x0009be06 mov r0, r4 | r0 = r4;
0x0009be08 blx 0x809c | fcn_0000809c ();
0x0009be0c mov r0, r4 | r0 = r4;
0x0009be0e blx 0x7cfc | fcn_00007cfc ();
0x0009be12 movs r1, 2 | r1 = 2;
0x0009be14 mov sb, r0 | sb = r0;
0x0009be16 mov r0, r4 | r0 = r4;
0x0009be18 blx 0x8248 | fcn_00008248 ();
0x0009be1c b 0x9bc94 | goto label_0;
| label_68:
0x0009be1e mov r3, sl | r3 = sl;
0x0009be20 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0009be22 movs r1, 8 | r1 = 8;
0x0009be24 mov r0, sb | r0 = sb;
0x0009be26 str.w sl, [sp, 0xf0] | __asm ("str.w sl, [s]");
0x0009be2a bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x0009be2e ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009be30 adds r3, 1 | r3++;
0x0009be32 str r3, [sp, 0x68] | var_68h = r3;
0x0009be34 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009be36 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009be3a str r3, [sp, 0x6c] | var_6ch = r3;
0x0009be3c cmp r0, 0 |
| if (r0 == 0) {
0x0009be3e beq.w 0x9c038 | goto label_69;
| }
0x0009be42 str.w sl, [sp, 0x70] | __asm ("str.w sl, [var_70h]");
| label_5:
0x0009be46 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0009be48 movs r3, 0 | r3 = 0;
0x0009be4a movs r1, 0xf | r1 = 0xf;
0x0009be4c mov r0, sb | r0 = sb;
0x0009be4e bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009be52 mov r8, r0 | r8 = r0;
0x0009be54 cmp r0, 0 |
| if (r0 == 0) {
0x0009be56 bne 0x9beee |
0x0009be58 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009be5a movs r1, 1 | r1 = 1;
0x0009be5c ldr r4, [sp, 0xf0] | r4 = s;
0x0009be5e adds r2, r3, 2 | r2 = r3 + 2;
0x0009be60 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009be62 mov r0, r4 | r0 = r4;
0x0009be64 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009be68 blx 0x7c4c | fcn_00007c4c ();
0x0009be6c ldr r3, [sp, 0x68] | r3 = var_68h;
0x0009be6e mov r0, r4 | r0 = r4;
0x0009be70 ldr r1, [sp, 0x6c] | r1 = var_6ch;
0x0009be72 lsrs r3, r3, 0xa | r3 >>= 0xa;
0x0009be74 orr.w r3, r3, r1, lsl 22 | r3 |= (r1 << 22);
0x0009be78 adds r2, r3, 1 | r2 = r3 + 1;
0x0009be7a lsr.w r3, r1, 0xa | r3 = r1 >> 0xa;
0x0009be7e mov.w r1, 2 | r1 = 2;
0x0009be82 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009be86 lsls r3, r3, 0xa | r3 <<= 0xa;
0x0009be88 orr.w r3, r3, r2, lsr 22 | r3 |= (r2 >> 22);
0x0009be8c lsls r2, r2, 0xa | r2 <<= 0xa;
0x0009be8e blx 0x7c4c | fcn_00007c4c ();
0x0009be92 mov r0, r4 | r0 = r4;
0x0009be94 blx 0x809c | r0 = fcn_0000809c ();
0x0009be98 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0009be9a beq.w 0x9c310 | goto label_70;
| }
0x0009be9e mov r0, r4 | r0 = r4;
0x0009bea0 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009bea4 mov r8, r0 | r8 = r0;
| label_6:
0x0009bea6 cmp.w r8, 0 |
| if (r8 != 0) {
0x0009beaa bne 0x9beee | goto label_11;
| }
0x0009beac ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009beae movs r2, 0x38 | r2 = 0x38;
0x0009beb0 mov r1, r8 | r1 = r8;
0x0009beb2 ldr r0, [sp, 0x60] | r0 = var_60h;
0x0009beb4 str.w r8, [sp, 0xf0] | __asm ("str.w r8, [s]");
0x0009beb8 lsls r4, r3, 2 | r4 = r3 << 2;
0x0009beba blx 0x8264 | fcn_00008264 ();
0x0009bebe mov r0, r4 | r0 = r4;
0x0009bec0 mov r1, r8 | r1 = r8;
0x0009bec2 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0009bec6 mov r3, r0 | r3 = r0;
0x0009bec8 str.w r0, [fp, 0x248] | __asm ("str.w r0, [arg_248h]");
0x0009becc cmp r0, 0 |
| if (r0 == 0) {
0x0009bece beq.w 0x9c07c | goto label_71;
| }
0x0009bed2 mov r1, r8 | r1 = r8;
0x0009bed4 mov r2, r4 | r2 = r4;
0x0009bed6 blx 0x8264 | fcn_00008264 ();
0x0009beda mov r3, r8 | r3 = r8;
0x0009bedc ldr r2, [sp, 0x50] | r2 = var_50h;
0x0009bede movs r1, 0xc | r1 = 0xc;
0x0009bee0 mov r0, sb | r0 = sb;
0x0009bee2 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009bee6 mov r8, r0 | r8 = r0;
0x0009bee8 cmp r0, 0 |
| if (r0 == 0) {
0x0009beea beq.w 0x9c08a | goto label_72;
| }
| }
| label_11:
0x0009beee ldrd r3, r2, [fp, 0x248] | __asm ("ldrd r3, r2, [arg_248h]");
0x0009bef2 movs r4, 0 | r4 = 0;
0x0009bef4 mov r7, r4 | r7 = r4;
| label_7:
0x0009bef6 cmp r2, 0 |
| if (r2 <= 0) {
0x0009bef8 ble 0x9bf12 | goto label_73;
| }
| do {
0x0009befa ldr.w r0, [r3, sl, lsl 2] | offset_0 = sl << 2;
| r0 = *((r3 + offset_0));
0x0009befe add.w sl, sl, 1 | sl++;
0x0009bf02 bl 0x5b434 | fcn_0005b434 (r0);
0x0009bf06 ldr.w r3, [fp, 0x24c] | r3 = *(arg_24ch);
0x0009bf0a cmp sl, r3 |
0x0009bf0c ldr.w r3, [fp, 0x248] | r3 = *(arg_248h);
0x0009bf10 blt 0x9befa |
| } while (sl < r3);
| label_73:
0x0009bf12 mov r0, r3 | r0 = r3;
0x0009bf14 blx 0x84f8 | fcn_000084f8 ();
0x0009bf18 ldr.w r0, [fp, 0x258] | r0 = *(arg_258h);
0x0009bf1c blx 0x84f8 | fcn_000084f8 ();
0x0009bf20 movs r3, 0 | r3 = 0;
0x0009bf22 strd r3, r3, [fp, 0x248] | __asm ("strd r3, r3, aav.0x000000ff");
0x0009bf26 str.w r3, [fp, 0x258] | __asm ("str.w r3, [arg_258h]");
0x0009bf2a cmp r4, 0 |
| if (r4 != 0) {
0x0009bf2c bne.w 0x9bd22 | goto label_1;
| }
0x0009bf30 mov sl, fp | sl = fp;
0x0009bf32 mov fp, sb |
0x0009bf34 mov sb, r8 | sb = r8;
0x0009bf36 b 0x9bdca | goto label_2;
| label_63:
0x0009bf38 mov r1, r5 | r1 = r5;
0x0009bf3a mov r0, r6 | r0 = r6;
0x0009bf3c blx 0x80d8 | r0 = fcn_000080d8 ();
0x0009bf40 strd r1, r0, [sp, 0x34] | __asm ("strd r1, r0, [var_34h]");
0x0009bf44 movs r1, 1 | r1 = 1;
0x0009bf46 mov r0, r6 | r0 = r6;
0x0009bf48 blx 0x8050 | r0 = fcn_00008050 ();
0x0009bf4c mov r3, r0 | r3 = r0;
0x0009bf4e mov r0, r6 | r0 = r6;
0x0009bf50 str r3, [sp, 0x30] | var_30h = r3;
0x0009bf52 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009bf56 mov sl, r0 | sl = r0;
0x0009bf58 cmp r0, 0 |
| if (r0 == 0) {
0x0009bf5a beq.w 0x9bd66 | goto label_3;
| }
0x0009bf5e str r5, [sp, 0x54] | var_54h = r5;
0x0009bf60 b 0x9bd74 | goto label_4;
| label_65:
0x0009bf62 ldr r0, [sp, 0x64] | r0 = var_64h;
0x0009bf64 movs r7, 0 | r7 = 0;
0x0009bf66 subs r3, 1 | r3--;
0x0009bf68 str r7, [sp, 0xf0] | s = r7;
0x0009bf6a str r7, [sp, 0xf4] | var_f4h = r7;
0x0009bf6c mov r6, r7 | r6 = r7;
0x0009bf6e ldrsb r2, [r0, r3] | r2 = *((r0 + r3));
0x0009bf70 str r7, [sp, 0xe0] | var_e0h = r7;
0x0009bf72 cmp r2, r7 |
| if (r2 < r7) {
0x0009bf74 blt.w 0x9c230 | goto label_74;
| }
0x0009bf78 cmp r3, r7 |
| if (r3 <= r7) {
0x0009bf7a ble.w 0x9c222 | goto label_75;
| }
0x0009bf7e adds r2, r0, r3 | r2 = r0 + r3;
0x0009bf80 b 0x9bf88 |
| while (r1 < 0) {
0x0009bf82 cmp r3, 0 |
| if (r3 == 0) {
0x0009bf84 beq.w 0x9c16c | goto label_76;
| }
0x0009bf88 ldrsb r1, [r2, -0x1]! | r1 = *((r2 -= 0x1));
0x0009bf8c mov r5, r3 | r5 = r3;
0x0009bf8e subs r3, 1 | r3--;
0x0009bf90 cmp r1, 0 |
0x0009bf92 blt 0x9bf82 |
| }
| label_9:
0x0009bf94 subs r5, 1 | r5--;
0x0009bf96 cmp r5, 0 |
0x0009bf98 itt gt |
| if (r5 <= 0) {
0x0009bf9a ldrgt r3, [sp, 0x64] | r3 = var_64h;
| }
| if (r5 <= 0) {
0x0009bf9c addgt r3, r3, r5 | r3 += r5;
| }
| if (r5 > 0) {
0x0009bf9e bgt 0x9bfa6 | goto label_77;
| }
0x0009bfa0 b 0x9bfae | goto label_78;
| do {
0x0009bfa2 subs r5, 1 | r5--;
| if (r5 == 1) {
0x0009bfa4 beq 0x9bfae | goto label_78;
| }
| label_77:
0x0009bfa6 ldrsb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x0009bfaa cmp r2, 0 |
0x0009bfac blt 0x9bfa2 |
| } while (r2 < 0);
| label_78:
0x0009bfae ldr r7, [sp, 0x64] | r7 = var_64h;
0x0009bfb0 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0009bfb2 adds r0, r7, r5 | r0 = r7 + r5;
0x0009bfb4 bl 0xa5b4 | r0 = fcn_0000a5b4 (r0, r1);
0x0009bfb8 adds r6, r0, r5 | r6 = r0 + r5;
0x0009bfba ldrb r3, [r7, r6] | r3 = *((r7 + r6));
0x0009bfbc adds r0, r7, r6 | r0 = r7 + r6;
0x0009bfbe lsls r1, r3, 0x18 | r1 = r3 << 0x18;
0x0009bfc0 itt pl |
| if (r1 < r3) {
0x0009bfc2 movpl r0, 1 | r0 = 1;
| }
| if (r1 < r3) {
0x0009bfc4 strpl r3, [sp, 0xe0] | var_e0h = r3;
| }
| if (r1 < r3) {
0x0009bfc6 bmi.w 0x9c228 | goto label_79;
| }
| label_10:
0x0009bfca ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0009bfcc add r6, r0 | r6 += r0;
0x0009bfce movw r3, 0x10b | r3 = 0x10b;
0x0009bfd2 cmp r6, r2 |
0x0009bfd4 ite ne |
| if (r6 == r2) {
0x0009bfd6 movne sl, r3 | sl = r3;
| }
| if (r6 != r2) {
0x0009bfd8 moveq sl, 0 | sl = 0;
| }
0x0009bfdc ldrd r7, r6, [sp, 0xf0] | __asm ("ldrd r7, r6, [s]");
| label_8:
0x0009bfe0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009bfe2 cmp r3, 0 |
| if (r3 < 0) {
0x0009bfe4 blt 0x9c016 | goto label_80;
| }
0x0009bfe6 mov r3, r8 | r3 = r8;
0x0009bfe8 ldrd r1, r0, [sp, 0x34] | __asm ("ldrd r1, r0, [var_34h]");
0x0009bfec mov r2, r4 | r2 = r4;
0x0009bfee bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x0009bff2 mov r1, r3 | r1 = r3;
0x0009bff4 str r2, [sp, 0x40] | var_40h = r2;
0x0009bff6 mov r3, r8 | r3 = r8;
0x0009bff8 mov r2, r4 | r2 = r4;
0x0009bffa mov r8, r1 | r8 = r1;
0x0009bffc mov r0, r7 | r0 = r7;
0x0009bffe mov r1, r6 | r1 = r6;
0x0009c000 bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x0009c004 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0009c006 cmp r1, r2 |
0x0009c008 sbcs.w r3, r8, r3 | __asm ("sbcs.w r3, r8, r3");
0x0009c00c itt lt |
| if (r1 >= r2) {
0x0009c00e movlt r3, 0 | r3 = 0;
| }
| if (r1 < r2) {
0x0009c010 strlt r3, [sp, 0x54] | var_54h = r3;
| goto label_81;
| }
| if (r1 < r2) {
| label_81:
0x0009c012 blt.w 0x9bd74 | goto label_4;
| }
| label_80:
0x0009c016 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0009c018 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0009c01a strd r7, r5, [sp, 0x38] | __asm ("strd r7, r5, [var_3ch]");
0x0009c01e str r6, [sp, 0x34] | var_34h = r6;
0x0009c020 cmp r2, r3 |
0x0009c022 it lt |
| if (r2 >= r3) {
0x0009c024 movlt r2, r3 | r2 = r3;
| }
0x0009c026 ldr r3, [sp, 0xe0] | r3 = var_e0h;
0x0009c028 cmp r2, r3 |
0x0009c02a it ge |
| if (r2 < r3) {
0x0009c02c movge r2, r3 | r2 = r3;
| }
0x0009c02e movs r3, 1 | r3 = 1;
0x0009c030 str r2, [sp, 0x30] | var_30h = r2;
0x0009c032 str r3, [sp, 0x54] | var_54h = r3;
0x0009c034 str r3, [sp, 0x78] | var_78h = r3;
0x0009c036 b 0x9bd74 | goto label_4;
| label_69:
0x0009c038 ldr r5, [sp, 0xf0] | r5 = s;
0x0009c03a mov r1, r4 | r1 = r4;
0x0009c03c ldrd r2, r3, [sp, 0x68] | __asm ("ldrd r2, r3, [var_68h]");
0x0009c040 mov r0, r5 | r0 = r5;
0x0009c042 blx 0x7c4c | fcn_00007c4c ();
0x0009c046 mov r0, r5 | r0 = r5;
0x0009c048 blx 0x809c | fcn_0000809c ();
0x0009c04c mov r1, sl | r1 = sl;
0x0009c04e mov r0, r5 | r0 = r5;
0x0009c050 blx 0x8050 | r0 = fcn_00008050 ();
0x0009c054 mov r6, r0 | r6 = r0;
0x0009c056 str r0, [sp, 0x70] | var_70h = r0;
0x0009c058 mov r0, r5 | r0 = r5;
0x0009c05a blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009c05e mov r8, r0 | r8 = r0;
0x0009c060 cmp r6, 0 |
| if (r6 == 0) {
0x0009c062 beq.w 0x9be46 | goto label_5;
| }
0x0009c066 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009c068 cmp r6, 1 |
0x0009c06a ite ne |
| if (r6 == 1) {
0x0009c06c movne r3, 0 | r3 = 0;
| }
| if (r6 != 1) {
0x0009c06e andeq r3, r3, 1 | r3 &= 1;
| }
0x0009c072 cmp r3, 0 |
| if (r3 == 0) {
0x0009c074 beq.w 0x9bea6 | goto label_6;
| }
0x0009c078 str r4, [sp, 0x70] | var_70h = r4;
0x0009c07a b 0x9be46 | goto label_5;
| label_71:
0x0009c07c mov r4, r8 | r4 = r8;
0x0009c07e mov r7, r8 | r7 = r8;
0x0009c080 ldr.w r2, [fp, 0x24c] | r2 = *(arg_24ch);
0x0009c084 mov.w r8, 7 | r8 = 7;
0x0009c088 b 0x9bef6 | goto label_7;
| label_72:
0x0009c08a ldr r4, [sp, 0xf0] | r4 = s;
0x0009c08c movs r1, 1 | r1 = 1;
0x0009c08e ldrd r3, r2, [sp, 0x34] | __asm ("ldrd r3, r2, [var_34h]");
0x0009c092 mov r0, r4 | r0 = r4;
0x0009c094 blx 0x7c4c | fcn_00007c4c ();
0x0009c098 strd sl, sb, [sp, 0x84] | __asm ("strd sl, sb, [var_84h]");
0x0009c09c b 0x9c10a |
| while (r7 != 0) {
0x0009c09e movs r1, 1 | r1 = 1;
0x0009c0a0 mov r0, r4 | r0 = r4;
0x0009c0a2 blx 0x80d8 | fcn_000080d8 ();
0x0009c0a6 str r0, [sp, 0x44] | var_44h = r0;
0x0009c0a8 mov r0, r4 | r0 = r4;
0x0009c0aa str r1, [sp, 0x40] | var_40h = r1;
0x0009c0ac movs r1, 2 | r1 = 2;
0x0009c0ae blx 0x80d8 | r0 = fcn_000080d8 ();
0x0009c0b2 mov r6, r0 | r6 = r0;
0x0009c0b4 mov r5, r1 | r5 = r1;
0x0009c0b6 mov r0, r4 | r0 = r4;
0x0009c0b8 movs r1, 3 | r1 = 3;
0x0009c0ba blx 0x80d8 | r0 = fcn_000080d8 ();
0x0009c0be mov sb, r0 | sb = r0;
0x0009c0c0 mov r7, r1 | r7 = r1;
0x0009c0c2 mov r0, r4 | r0 = r4;
0x0009c0c4 movs r1, 4 | r1 = 4;
0x0009c0c6 blx 0x7cd0 | fcn_00007cd0 ();
0x0009c0ca movs r1, 4 | r1 = 4;
0x0009c0cc mov sl, r0 | sl = r0;
0x0009c0ce mov r0, r4 | r0 = r4;
0x0009c0d0 blx 0x8184 | fcn_00008184 ();
0x0009c0d4 ldr.w r1, [fp, 0x248] | r1 = *(arg_248h);
0x0009c0d8 ldrd r3, r2, [sp, 0x40] | __asm ("ldrd r3, r2, [var_44h]");
0x0009c0dc strd sl, r0, [sp, 0x10] | __asm ("strd sl, r0, [var_10h]");
0x0009c0e0 mov r0, r8 | r0 = r8;
0x0009c0e2 strd sb, r7, [sp, 8] | __asm ("strd sb, r7, [var_8h]");
0x0009c0e6 add.w r1, r1, r8, lsl 2 | r1 += (r8 << 2);
0x0009c0ea strd r6, r5, [sp] | __asm ("strd r6, r5, [sp]");
0x0009c0ee add.w r8, r8, 1 | r8++;
0x0009c0f2 str r1, [sp, 0x18] | var_18h = r1;
0x0009c0f4 movs r1, 0 | r1 = 0;
0x0009c0f6 bl 0x3d47c | fcn_0003d47c (r0, r1, r2, r3, r4, r5, r6);
0x0009c0fa ldr.w r3, [fp, 0x24c] | r3 = *(arg_24ch);
0x0009c0fe adds r3, 1 | r3++;
0x0009c100 str.w r3, [fp, 0x24c] | __asm ("str.w r3, [arg_24ch]");
0x0009c104 cmp r0, 0 |
| if (r0 != 0) {
0x0009c106 bne.w 0x9c238 | goto label_82;
| }
0x0009c10a mov r0, r4 | r0 = r4;
0x0009c10c blx 0x809c | fcn_0000809c ();
0x0009c110 ldr r7, [sp, 0x30] | r7 = var_30h;
0x0009c112 cmp r7, r8 |
0x0009c114 ite le |
| if (r7 > r8) {
0x0009c116 movle r7, 0 | r7 = 0;
| }
| if (r7 <= r8) {
0x0009c118 movgt r7, 1 | r7 = 1;
| }
0x0009c11a cmp r0, 0x64 |
0x0009c11c it ne |
| if (r0 == 0x64) {
0x0009c11e movne r7, 0 | r7 = 0;
| }
0x0009c120 cmp r7, 0 |
0x0009c122 bne 0x9c09e |
| }
0x0009c124 mov r0, r4 | r0 = r4;
0x0009c126 ldrd sl, sb, [sp, 0x84] | __asm ("ldrd sl, sb, [var_84h]");
0x0009c12a blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009c12e mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x0009c130 cbnz r0, 0x9c164 |
0x0009c132 ldr.w r2, [fp, 0x24c] | r2 = *(arg_24ch);
0x0009c136 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009c138 cmp r2, r3 |
| if (r2 != r3) {
0x0009c13a beq 0x9c14e |
0x0009c13c ldr r1, [sp, 0x58] | r1 = var_58h;
0x0009c13e ldr.w r3, [fp, 0x248] | r3 = *(arg_248h);
0x0009c142 ldr r7, [sp, 0x5c] | r7 = var_5ch;
0x0009c144 cmp r1, 0 |
0x0009c146 ite le |
| if (r1 > 0) {
0x0009c148 movle r4, 0 | r4 = 0;
| }
| if (r1 <= 0) {
0x0009c14a movgt r4, 1 | r4 = 1;
| }
0x0009c14c b 0x9bef6 | goto label_7;
| }
0x0009c14e ldr r3, [sp, 0x80] | r3 = var_80h;
0x0009c150 mov r0, sb | r0 = sb;
0x0009c152 ldr r1, [sp, 0x60] | r1 = var_60h;
0x0009c154 str.w r3, [fp, 0x254] | __asm ("str.w r3, [arg_254h]");
0x0009c158 ldrd r2, r3, [fp, 0x238] | __asm ("ldrd r2, r3, [arg_238h]");
0x0009c15c bl 0x9aa40 | r0 = fcn_0009aa40 (r0, r1, r2, r3);
0x0009c160 mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x0009c162 cbz r0, 0x9c180 | goto label_83;
| }
| }
0x0009c164 ldrd r3, r2, [fp, 0x248] | __asm ("ldrd r3, r2, [arg_248h]");
0x0009c168 mov r4, r7 | r4 = r7;
0x0009c16a b 0x9bef6 | goto label_7;
| label_76:
0x0009c16c movs r7, 0 | r7 = 0;
0x0009c16e ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x0009c170 mov r6, r7 | r6 = r7;
0x0009c172 movw sl, 0x10b | sl = 0x10b;
0x0009c176 b 0x9bfe0 | goto label_8;
| label_67:
0x0009c178 mov sl, fp | sl = fp;
0x0009c17a movw sb, 0x10b | sb = 0x10b;
0x0009c17e b 0x9bc94 | goto label_0;
| label_83:
0x0009c180 ldr r1, [sp, 0x60] | r1 = var_60h;
0x0009c182 mov r0, sb | r0 = sb;
0x0009c184 bl 0x9a188 | r0 = fcn_0009a188 (r0, r1, r2, r3);
0x0009c188 cmp r0, 0 |
| if (r0 == 0) {
0x0009c18a beq 0x9c24e | goto label_84;
| }
0x0009c18c cmp r0, 0x64 |
| if (r0 != 0x64) {
0x0009c18e bne.w 0x9ce9e | goto label_85;
| }
| label_12:
0x0009c192 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009c194 ldr r2, [sp, 0x70] | r2 = var_70h;
0x0009c196 cmp r2, 0 |
0x0009c198 ite le |
| if (r2 > 0) {
0x0009c19a movle r3, 0 | r3 = 0;
| }
| if (r2 <= 0) {
0x0009c19c andgt r3, r3, 1 | r3 &= 1;
| }
0x0009c1a0 cmp r3, 0 |
| if (r3 != 0) {
0x0009c1a2 bne.w 0x9c336 | goto label_86;
| }
0x0009c1a6 add r2, sp, 0xe0 | r2 += var_e0h;
0x0009c1a8 movs r1, 0x1d | r1 = 0x1d;
0x0009c1aa mov r0, sb | r0 = sb;
0x0009c1ac str r3, [sp, 0xe0] | var_e0h = r3;
0x0009c1ae str r3, [sp, 0xf0] | s = r3;
0x0009c1b0 bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x0009c1b4 str r0, [sp, 0x40] | var_40h = r0;
0x0009c1b6 cmp r0, 0 |
| if (r0 == 0) {
0x0009c1b8 beq.w 0x9c538 | goto label_87;
| }
| label_16:
0x0009c1bc ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x0009c1c0 ldr.w r8, [sp, 0x40] | r8 = var_40h;
0x0009c1c4 rsbs r3, r3, 0 | r3 -= ;
0x0009c1c6 str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x0009c1ca ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x0009c1ce sbc.w r3, r3, r3, lsl 1 | __asm ("sbc.w r3, r3, r3, lsl 1");
0x0009c1d2 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
| label_37:
0x0009c1d6 mov r4, fp | r4 = fp;
0x0009c1d8 mov r6, fp | r6 = fp;
0x0009c1da movs r5, 0xf | r5 = 0xf;
| do {
0x0009c1dc ldr.w r3, [r6, 0x230] | r3 = *((r6 + 0x230));
0x0009c1e0 cmp r3, 0 |
| if (r3 > 0) {
0x0009c1e2 bgt 0x9c254 | goto label_88;
| }
0x0009c1e4 ldr.w r0, [r6, 0x22c] | r0 = *((r6 + 0x22c));
0x0009c1e8 subs r5, 1 | r5--;
0x0009c1ea blx 0x84f8 | fcn_000084f8 ();
0x0009c1ee ldr.w r0, [r6, 0x220] | r0 = *((r6 + 0x220));
0x0009c1f2 subs r6, 0x20 | r6 -= 0x20;
0x0009c1f4 blx 0x84f8 | fcn_000084f8 ();
0x0009c1f8 adds r3, r5, 1 | r3 = r5 + 1;
0x0009c1fa bne 0x9c1dc |
| } while (r3 != r5);
| label_14:
0x0009c1fc ldr r3, [sp, 0x58] | r3 = var_58h;
0x0009c1fe clz r7, r8 | r7 &= r8;
0x0009c202 lsrs r7, r7, 5 | r7 >>= 5;
0x0009c204 cmp r3, 0 |
0x0009c206 ite le |
| if (r3 > 0) {
0x0009c208 movle r4, 0 | r4 = 0;
| }
| if (r3 <= 0) {
0x0009c20a andgt r4, r7, 1 | r4 = r7 & 1;
| }
0x0009c20e ldr r3, [sp, 0x30] | r3 = var_30h;
| if (r3 == 0) {
0x0009c210 cbnz r3, 0x9c21c |
0x0009c212 ldrb.w r3, [fp, 0x30] | r3 = *(arg_30h);
0x0009c216 cmp r3, 0 |
| if (r3 == 0) {
0x0009c218 beq.w 0x9c5f2 | goto label_89;
| }
| }
| label_20:
0x0009c21c ldrd r3, r2, [fp, 0x248] | __asm ("ldrd r3, r2, [arg_248h]");
0x0009c220 b 0x9bef6 | goto label_7;
| if (r3 != 0) {
| label_75:
0x0009c222 beq 0x9c230 |
0x0009c224 mov r5, r3 | r5 = r3;
0x0009c226 b 0x9bf94 | goto label_9;
| label_79:
0x0009c228 add r1, sp, 0xe0 | r1 += var_e0h;
0x0009c22a bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009c22e b 0x9bfca | goto label_10;
| }
| label_74:
0x0009c230 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x0009c232 movw sl, 0x10b | sl = 0x10b;
0x0009c236 b 0x9bfe0 | goto label_8;
| label_82:
0x0009c238 mov r5, r0 | r5 = r0;
0x0009c23a mov r0, r4 | r0 = r4;
0x0009c23c ldrd sl, sb, [sp, 0x84] | __asm ("ldrd sl, sb, [var_84h]");
0x0009c240 mov r8, r5 | r8 = r5;
0x0009c242 blx 0x7cfc | fcn_00007cfc ();
0x0009c246 b 0x9beee | goto label_11;
| label_64:
0x0009c248 mov sb, r0 | sb = r0;
0x0009c24a mov sl, fp | sl = fp;
0x0009c24c b 0x9bc94 | goto label_0;
| label_84:
0x0009c24e mov.w r8, 1 | r8 = 1;
0x0009c252 b 0x9c192 | goto label_12;
| label_88:
0x0009c254 cmp r5, 0 |
| if (r5 == 0) {
0x0009c256 beq.w 0x9c4e2 | goto label_90;
| }
| label_18:
0x0009c25a lsls r7, r5, 5 | r7 = r5 << 5;
0x0009c25c add.w r6, fp, r7 | r6 = fp + r7;
0x0009c260 b 0x9c274 |
| while (r3 == 0) {
| label_13:
0x0009c262 ldr r0, [r4, 0x4c] | r0 = *((r4 + 0x4c));
0x0009c264 adds r4, 0x20 | r4 += 0x20;
0x0009c266 blx 0x84f8 | fcn_000084f8 ();
0x0009c26a ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x0009c26c blx 0x84f8 | fcn_000084f8 ();
0x0009c270 cmp r6, r4 |
| if (r6 == r4) {
0x0009c272 beq 0x9c29e | goto label_91;
| }
0x0009c274 ldr r1, [r4, 0x50] | r1 = *((r4 + 0x50));
0x0009c276 cmp r1, 0 |
0x0009c278 ite le |
| if (r1 > 0) {
0x0009c27a movle r3, 0 | r3 = 0;
| }
| if (r1 <= 0) {
0x0009c27c movgt r3, 1 | r3 = 1;
| }
0x0009c27e cmp.w r8, 0 |
0x0009c282 it ne |
| if (r8 == 0) {
0x0009c284 movne r3, 0 | r3 = 0;
| }
0x0009c286 cmp r3, 0 |
0x0009c288 beq 0x9c262 |
| }
0x0009c28a ldrd r2, r3, [r4, 0x38] | __asm ("ldrd r2, r3, [r4, 0x38]");
0x0009c28e mov r0, sb | r0 = sb;
0x0009c290 str r1, [sp, 4] | var_4h = r1;
0x0009c292 ldr r1, [r4, 0x4c] | r1 = *((r4 + 0x4c));
0x0009c294 str r1, [sp] | *(sp) = r1;
0x0009c296 bl 0x867b4 | r0 = fcn_000867b4 (r0, r1, r2);
0x0009c29a mov r8, r0 | r8 = r0;
0x0009c29c b 0x9c262 | goto label_13;
| label_91:
0x0009c29e cmp.w r8, 0 |
| if (r8 == 0) {
0x0009c2a2 bne 0x9c2f6 |
0x0009c2a4 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x0009c2a8 ldrb.w r1, [fp, 0x30] | r1 = *(arg_30h);
0x0009c2ac ldr.w r4, [fp, 0x10] | r4 = *(arg_10h);
0x0009c2b0 adds r2, r3, 1 | r2 = r3 + 1;
0x0009c2b2 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x0009c2b6 vldr d18, [fp, 0x18] | __asm ("vldr d18, [fp, 0x18]");
0x0009c2b8 cmp r3, 6 |
0x0009c2ba vldr d19, [fp, 0x38] | __asm ("vldr d19, [fp, 0x38]");
0x0009c2be vldr d17, [fp, 0x20] | __asm ("vldr d17, [fp, 0x20]");
0x0009c2c2 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009c2c6 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
| if (r1 == 0) {
0x0009c2ca cbnz r1, 0x9c2d0 |
0x0009c2cc vldr d16, [fp, 0x28] | __asm ("vldr d16, [fp, 0x28]");
| }
0x0009c2d0 add.w r6, fp, r7 | r6 = fp + r7;
0x0009c2d4 mov r0, sb | r0 = sb;
0x0009c2d6 ldr r1, [r6, 0x50] | r1 = *((r6 + 0x50));
0x0009c2d8 str r1, [sp, 0x2c] | var_2ch = r1;
0x0009c2da ldr r1, [r6, 0x4c] | r1 = *((r6 + 0x4c));
0x0009c2dc vstr d17, [sp, 0x18] | __asm ("vstr d17, [sp, 0x18]");
0x0009c2e0 vstr d19, [sp, 0x10] | __asm ("vstr d19, [sp, 0x10]");
0x0009c2e4 vstr d18, [sp, 8] | __asm ("vstr d18, [sp, 8]");
0x0009c2e8 str r4, [sp] | *(sp) = r4;
0x0009c2ea str r1, [sp, 0x28] | var_28h = r1;
0x0009c2ec vstr d16, [sp, 0x20] | __asm ("vstr d16, [sp, 0x20]");
0x0009c2f0 bl 0x86944 | r0 = fcn_00086944 (r0, r1, r2);
0x0009c2f4 mov r8, r0 | r8 = r0;
| }
0x0009c2f6 add.w r5, fp, r5, lsl 5 | r5 = fp + (r5 << 5);
0x0009c2fa add r7, fp | r7 += fp;
0x0009c2fc ldr r0, [r7, 0x4c] | r0 = *((r7 + 0x4c));
0x0009c2fe blx 0x84f8 | fcn_000084f8 ();
0x0009c302 ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x0009c304 blx 0x84f8 | fcn_000084f8 ();
0x0009c308 b 0x9c1fc | goto label_14;
| label_59:
0x0009c30a mov.w sb, 7 | sb = 7;
0x0009c30e b 0x9bca0 | goto label_15;
| label_70:
0x0009c310 mov r1, r8 | r1 = r8;
0x0009c312 mov r0, r4 | r0 = r4;
0x0009c314 blx 0x8090 | r0 = fcn_00008090 ();
0x0009c318 mov r3, r0 | r3 = r0;
0x0009c31a mov r0, r4 | r0 = r4;
0x0009c31c mov r4, r3 | r4 = r3;
0x0009c31e blx 0x7cfc | fcn_00007cfc ();
0x0009c322 cmp r4, 5 |
0x0009c324 mov r8, r0 | r8 = r0;
0x0009c326 ittt eq |
| if (r4 != 5) {
0x0009c328 ldreq r3, [fp, 0x244] | r3 = *(arg_244h);
| }
| if (r4 != 5) {
0x0009c32c orreq r3, r3, 2 | r3 |= 2;
| }
| if (r4 == 5) {
0x0009c330 str.w r3, [fp, 0x244] | __asm ("str.w r3, [arg_244h]");
| }
0x0009c334 b 0x9bea6 | goto label_6;
| label_86:
0x0009c336 ldr.w r4, [fp, 0x270] | r4 = *(arg_270h);
0x0009c33a movs r3, 0 | r3 = 0;
0x0009c33c ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0009c33e movs r1, 0x20 | r1 = 0x20;
0x0009c340 mov r0, sb | r0 = sb;
0x0009c342 str r3, [sp, 0xd0] | var_d0h = r3;
0x0009c344 str r4, [sp, 0x98] | var_98h = r4;
0x0009c346 ldr.w r4, [fp, 0x274] | r4 = *(arg_274h);
0x0009c34a str r4, [sp, 0x84] | var_84h = r4;
0x0009c34c bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x0009c350 str r0, [sp, 0x40] | var_40h = r0;
0x0009c352 cmp r0, 0 |
| if (r0 != 0) {
0x0009c354 bne.w 0x9c1bc | goto label_16;
| }
0x0009c358 ldr r5, [sp, 0xd0] | r5 = var_d0h;
0x0009c35a movs r1, 1 | r1 = 1;
0x0009c35c ldr r3, [sp, 0x70] | r3 = var_70h;
0x0009c35e vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0009c362 ldr r2, [sp, 0x68] | r2 = var_68h;
0x0009c364 mov r0, r5 | r0 = r5;
0x0009c366 subs r4, r3, 1 | r4 = r3 - 1;
0x0009c368 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0009c36a vstr d16, [sp, 0xe0] | __asm ("vstr d16, [sp, 0xe0]");
0x0009c36e str r4, [sp, 0x94] | var_94h = r4;
0x0009c370 blx 0x7c4c | fcn_00007c4c ();
0x0009c374 mov r2, r4 | r2 = r4;
0x0009c376 movs r1, 2 | r1 = 2;
0x0009c378 mov r0, r5 | r0 = r5;
0x0009c37a blx 0x7e30 | sleep (r0);
0x0009c37e mov r0, r5 | r0 = r5;
0x0009c380 blx 0x809c | r0 = fcn_0000809c ();
0x0009c384 cmp r0, 0x64 |
| if (r0 != 0x64) {
0x0009c386 bne.w 0x9cab4 | goto label_43;
| }
0x0009c38a movs r1, 1 | r1 = 1;
0x0009c38c mov r0, r5 | r0 = r5;
0x0009c38e blx 0x80d8 | fcn_000080d8 ();
0x0009c392 str r1, [sp, 0x54] | var_54h = r1;
0x0009c394 mov r7, r0 | r7 = r0;
0x0009c396 movs r1, 2 | r1 = 2;
0x0009c398 mov r0, r5 | r0 = r5;
0x0009c39a blx 0x80d8 | fcn_000080d8 ();
0x0009c39e add.w r3, fp, 0x28 | r3 += arg_28h;
0x0009c3a2 add r2, sp, 0xe0 | r2 += var_e0h;
0x0009c3a4 str r1, [sp, 0x9c] | var_9ch = r1;
0x0009c3a6 mov r6, r0 | r6 = r0;
0x0009c3a8 movs r1, 3 | r1 = 3;
0x0009c3aa mov r0, r5 | r0 = r5;
0x0009c3ac bl 0x225b4 | fcn_000225b4 (r0, r1);
0x0009c3b0 ldrd r3, r2, [fp, 0x28] | __asm ("ldrd r3, r2, [arg_28h]");
0x0009c3b4 cmp r2, 0 |
| if (r2 < 0) {
0x0009c3b6 bge 0x9c3c2 |
0x0009c3b8 rsbs r3, r3, 0 | r3 -= ;
0x0009c3ba sbc.w r2, r2, r2, lsl 1 | __asm ("sbc.w r2, r2, r2, lsl 1");
0x0009c3be strd r3, r2, [fp, 0x28] | __asm ("strd r3, r2, [fp, 0x28]");
| }
0x0009c3c2 orrs r3, r2 | r3 |= r2;
0x0009c3c4 mov.w r1, 4 | r1 = 4;
0x0009c3c8 ite eq |
| if (r3 != r2) {
0x0009c3ca moveq r3, 1 | r3 = 1;
| }
| if (r3 == r2) {
0x0009c3cc movne r3, 0 | r3 = 0;
| }
0x0009c3ce strb.w r3, [fp, 0x30] | *(arg_30h) = r3;
0x0009c3d2 mov r0, r5 | r0 = r5;
0x0009c3d4 blx 0x8184 | fcn_00008184 ();
0x0009c3d8 movs r1, 4 | r1 = 4;
0x0009c3da str r0, [sp, 0x44] | var_44h = r0;
0x0009c3dc mov r0, r5 | r0 = r5;
0x0009c3de blx 0x7cd0 | fcn_00007cd0 ();
0x0009c3e2 str r0, [sp, 0x70] | var_70h = r0;
0x0009c3e4 cmp r0, 0 |
| if (r0 == 0) {
0x0009c3e6 beq.w 0x9d04c | goto label_92;
| }
0x0009c3ea ldr r4, [sp, 0xe0] | r4 = var_e0h;
0x0009c3ec movs r3, 0 | r3 = 0;
0x0009c3ee ldr r2, [sp, 0x50] | r2 = var_50h;
0x0009c3f0 movs r1, 0x22 | r1 = 0x22;
0x0009c3f2 mov r0, sb | r0 = sb;
0x0009c3f4 str r3, [sp, 0xf0] | s = r3;
0x0009c3f6 str r4, [sp, 0x88] | var_88h = r4;
0x0009c3f8 ldr r4, [sp, 0xe4] | r4 = var_e4h;
0x0009c3fa str r4, [sp, 0x90] | var_90h = r4;
0x0009c3fc bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x0009c400 str r0, [sp, 0x40] | var_40h = r0;
0x0009c402 cmp r0, 0 |
| if (r0 == 0) {
0x0009c404 beq.w 0x9cf6e | goto label_93;
| }
| label_44:
0x0009c408 mov r0, r5 | r0 = r5;
0x0009c40a blx 0x7cfc | fcn_00007cfc ();
| label_33:
0x0009c40e ldr r3, [sp, 0x40] | r3 = var_40h;
0x0009c410 cmp r3, 0 |
| if (r3 != 0) {
0x0009c412 bne.w 0x9c1bc | goto label_16;
| }
| label_19:
0x0009c416 ldr.w r3, [fp] | r3 = *(fp);
0x0009c41a cmp r3, 0 |
| if (r3 == 0) {
0x0009c41c beq.w 0x9c1bc | goto label_16;
| }
0x0009c420 cmp.w r8, 0 |
| if (r8 == 0) {
0x0009c424 beq.w 0x9c80c | goto label_94;
| }
0x0009c428 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
| label_26:
0x0009c42c ldr r2, [sp, 0x58] | r2 = var_58h;
0x0009c42e adds r3, 1 | r3++;
0x0009c430 ldr.w r8, [fp, 0x24c] | r8 = *(arg_24ch);
0x0009c434 subs r3, r2, r3 | r3 = r2 - r3;
0x0009c436 str r3, [sp, 0x58] | var_58h = r3;
0x0009c438 subs.w r3, r8, 1 | r3 = r8 - 1;
0x0009c43c mov r2, r3 | r2 = r3;
| if (r3 < r8) {
0x0009c43e bmi.w 0x9cf98 | goto label_95;
| }
0x0009c442 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x0009c446 mov r4, r8 | r4 = r8;
0x0009c448 str.w fp, [sp, 0x54] | __asm ("str.w fp, [var_54h]");
0x0009c44c mov fp, r2 |
0x0009c44e movs r3, 0 | r3 = 0;
0x0009c450 str.w sl, [sp, 0x9c] | __asm ("str.w sl, [var_9ch]");
0x0009c454 str r3, [sp, 0x30] | var_30h = r3;
| label_17:
0x0009c456 cmp r4, 0 |
| if (r4 <= 0) {
0x0009c458 ble.w 0x9d3e0 | goto label_96;
| }
0x0009c45c ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009c45e ldr.w r2, [r3, 0x248] | r2 = *((r3 + 0x248));
0x0009c462 movs r3, 0 | r3 = 0;
0x0009c464 subs r2, 4 | r2 -= 4;
0x0009c466 b 0x9c46e |
| while (r7 != fp) {
0x0009c468 adds r3, 1 | r3++;
0x0009c46a cmp r4, r3 |
| if (r4 == r3) {
0x0009c46c beq 0x9c478 | goto label_97;
| }
0x0009c46e ldr r5, [r2, 4]! | r5 = *((r2 += 4));
0x0009c472 ldr r7, [r5] | r7 = *(r5);
0x0009c474 cmp r7, fp |
0x0009c476 bne 0x9c468 |
| }
| label_97:
0x0009c478 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0009c47a cmp r3, 0 |
| if (r3 == 0) {
0x0009c47c beq.w 0x9c63e | goto label_98;
| }
0x0009c480 ldr r4, [r5, 0x40] | r4 = *((r5 + 0x40));
0x0009c482 movs r6, 0 | r6 = 0;
0x0009c484 mov r3, r6 | r3 = r6;
0x0009c486 add r2, sp, 0xcc | r2 += var_cch;
0x0009c488 movs r1, 0x20 | r1 = 0x20;
0x0009c48a mov r0, sb | r0 = sb;
0x0009c48c str r4, [sp, 0x70] | var_70h = r4;
0x0009c48e ldr r4, [r5, 0x3c] | r4 = *((r5 + 0x3c));
0x0009c490 vstr d8, [sp, 0xd8] | __asm ("vstr d8, [sp, 0xd8]");
0x0009c494 strd r6, r6, [sp, 0xe0] | __asm ("strd r6, r6, [var_e0h]");
0x0009c498 str r4, [sp, 0x84] | var_84h = r4;
0x0009c49a str r6, [sp, 0xe8] | var_e8h = r6;
0x0009c49c str r6, [sp, 0xcc] | var_cch = r6;
0x0009c49e strd r6, r6, [sp, 0xf0] | __asm ("strd r6, r6, [s]");
0x0009c4a2 str r6, [sp, 0xf8] | var_f8h = r6;
0x0009c4a4 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009c4a8 mov r4, r0 | r4 = r0;
0x0009c4aa cmp r0, 0 |
| if (r0 == 0) {
0x0009c4ac beq.w 0x9c686 | goto label_99;
| }
0x0009c4b0 mov r1, r6 | r1 = r6;
0x0009c4b2 str r6, [sp, 0x88] | var_88h = r6;
| label_24:
0x0009c4b4 ldr r0, [sp, 0x88] | r0 = var_88h;
0x0009c4b6 str r1, [sp, 0x44] | var_44h = r1;
0x0009c4b8 blx 0x84f8 | fcn_000084f8 ();
0x0009c4bc ldr r1, [sp, 0x44] | r1 = var_44h;
0x0009c4be mov r0, r1 | r0 = r1;
0x0009c4c0 blx 0x84f8 | fcn_000084f8 ();
0x0009c4c4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009c4c6 adds r3, 1 | r3++;
0x0009c4c8 str r3, [sp, 0x30] | var_30h = r3;
| label_23:
0x0009c4ca add.w fp, fp, -1 |
0x0009c4ce cmp.w fp, 0 |
0x0009c4d2 it ge |
| if (fp >= 0) {
0x0009c4d4 cmpge r4, 0 | __asm ("cmpge r4, 0");
| }
| if (fp != 0) {
0x0009c4d6 bne.w 0x9cade | goto label_100;
| }
0x0009c4da ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009c4dc ldr.w r4, [r3, 0x24c] | r4 = *((r3 + 0x24c));
0x0009c4e0 b 0x9c456 | goto label_17;
| label_90:
0x0009c4e2 cmp.w r8, 0 |
| if (r8 != 0) {
0x0009c4e6 bne 0x9c534 | goto label_101;
| }
0x0009c4e8 ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x0009c4ec ldr.w r0, [fp, 0x6c] | r0 = *(arg_6ch);
0x0009c4f0 cmp r3, 0xa |
| if (r3 <= 0xa) {
0x0009c4f2 ble.w 0x9cabe | goto label_102;
| }
| label_35:
0x0009c4f6 movs r3, 1 | r3 = 1;
0x0009c4f8 strb r3, [r0] | *(r0) = r3;
0x0009c4fa ldr.w r7, [fp, 0x6c] | r7 = *(arg_6ch);
0x0009c4fe ldrd r3, r2, [fp, 0x38] | __asm ("ldrd r3, r2, [arg_38h]");
0x0009c502 adds r1, r7, 1 | r1 = r7 + 1;
| do {
0x0009c504 lsrs r5, r3, 7 | r5 = r3 >> 7;
0x0009c506 orn r0, r3, 0x7f | r0 = r3 | 0x7f;
| r0 = ~r0;
0x0009c50a uxtb r6, r3 | r6 = (int8_t) r3;
0x0009c50c orr.w r3, r5, r2, lsl 25 | r3 = r5 | (r2 << 25);
0x0009c510 lsrs r2, r2, 7 | r2 >>= 7;
0x0009c512 mov r5, r1 | r5 = r1;
0x0009c514 strb r0, [r1], 1 | *(r1) = r0;
| r1++;
0x0009c518 orrs.w r0, r3, r2 | r0 = r3 | r2;
0x0009c51c bne 0x9c504 |
| } while (r0 != r3);
0x0009c51e subs r3, r5, r7 | r3 = r5 - r7;
0x0009c520 and r6, r6, 0x7f | r6 &= 0x7f;
0x0009c524 adds r3, 1 | r3++;
0x0009c526 strb r6, [r5] | *(r5) = r6;
0x0009c528 movs r5, 1 | r5 = 1;
0x0009c52a str.w r3, [fp, 0x70] | __asm ("str.w r3, [arg_70h]");
0x0009c52e b 0x9c25a | goto label_18;
| label_34:
0x0009c530 mov.w r8, 7 | r8 = 7;
| label_101:
0x0009c534 movs r5, 1 | r5 = 1;
0x0009c536 b 0x9c25a | goto label_18;
| label_87:
0x0009c538 ldr r4, [sp, 0xe0] | r4 = var_e0h;
0x0009c53a movs r1, 1 | r1 = 1;
0x0009c53c ldrd r3, r2, [sp, 0x34] | __asm ("ldrd r3, r2, [var_34h]");
0x0009c540 mov r0, r4 | r0 = r4;
0x0009c542 blx 0x7c4c | fcn_00007c4c ();
0x0009c546 ldr.w r2, [fp, 0x24c] | r2 = *(arg_24ch);
0x0009c54a movs r1, 2 | r1 = 2;
0x0009c54c mov r0, r4 | r0 = r4;
0x0009c54e asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0009c550 blx 0x7c4c | fcn_00007c4c ();
0x0009c554 mov r0, r4 | r0 = r4;
0x0009c556 blx 0x809c | r0 = fcn_0000809c ();
0x0009c55a cmp r0, 0x64 |
0x0009c55c it ne |
| if (r0 == 0x64) {
0x0009c55e ldrne r7, [sp, 0x40] | r7 = var_40h;
| }
| if (r0 == 0x64) {
0x0009c560 beq.w 0x9cba2 | goto label_103;
| }
| label_38:
0x0009c564 mov r0, r4 | r0 = r4;
0x0009c566 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009c56a mov r3, r0 | r3 = r0;
0x0009c56c str r0, [sp, 0x40] | var_40h = r0;
0x0009c56e cmp r0, 0 |
| if (r0 != 0) {
0x0009c570 bne.w 0x9c1bc | goto label_16;
| }
0x0009c574 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0009c576 movs r1, 0xa | r1 = 0xa;
0x0009c578 mov r0, sb | r0 = sb;
0x0009c57a bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x0009c57e str r0, [sp, 0x40] | var_40h = r0;
0x0009c580 cmp r0, 0 |
| if (r0 != 0) {
0x0009c582 bne.w 0x9c1bc | goto label_16;
| }
0x0009c586 ldr r4, [sp, 0xf0] | r4 = s;
0x0009c588 mov r0, r4 | r0 = r4;
0x0009c58a blx 0x809c | r0 = fcn_0000809c ();
0x0009c58e cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0009c590 beq.w 0x9cee2 | goto label_104;
| }
| label_41:
0x0009c594 mov r0, r4 | r0 = r4;
0x0009c596 blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009c59a mov r1, r0 | r1 = r0;
0x0009c59c str r0, [sp, 0x40] | var_40h = r0;
0x0009c59e cmp r0, 0 |
| if (r0 != 0) {
0x0009c5a0 bne.w 0x9c1bc | goto label_16;
| }
0x0009c5a4 ldrd r2, r3, [fp, 0x20] | __asm ("ldrd r2, r3, [arg_20h]");
0x0009c5a8 mov r0, sb | r0 = sb;
0x0009c5aa strd r1, r1, [sp] | __asm ("strd r1, r1, [sp]");
0x0009c5ae bl 0x867b4 | r0 = fcn_000867b4 (r0, r1, r2);
0x0009c5b2 mov r2, r0 | r2 = r0;
0x0009c5b4 str r0, [sp, 0x40] | var_40h = r0;
0x0009c5b6 cmp r0, 0 |
| if (r0 != 0) {
0x0009c5b8 bne.w 0x9c1bc | goto label_16;
| }
0x0009c5bc ldr r3, [sp, 0x70] | r3 = var_70h;
0x0009c5be movs r1, 0x10 | r1 = 0x10;
0x0009c5c0 ldrd r4, r6, [fp, 0x18] | __asm ("ldrd r4, r6, [arg_18h]");
0x0009c5c4 str.w r7, [fp] | __asm ("str.w r7, [fp]");
0x0009c5c8 str.w r3, [fp, 0x10] | __asm ("str.w r3, [arg_10h]");
0x0009c5cc ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009c5ce str.w r3, [fp, 8] | __asm ("str.w r3, [arg_8h]");
0x0009c5d2 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009c5d4 str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
| do {
0x0009c5d8 mul r3, r2, r7 | r3 = r2 * r7;
0x0009c5dc add.w r0, fp, r2, lsl 5 | r0 = fp + (r2 << 5);
0x0009c5e0 adds r2, 1 | r2++;
0x0009c5e2 adds r5, r3, r4 | r5 = r3 + r4;
0x0009c5e4 adc.w r3, r6, r3, asr 31 | __asm ("adc.w r3, r6, r3, asr 31");
0x0009c5e8 subs r1, 1 | r1--;
0x0009c5ea str r5, [r0, 0x38] | *((r0 + 0x38)) = r5;
0x0009c5ec str r3, [r0, 0x3c] | *((r0 + 0x3c)) = r3;
0x0009c5ee bne 0x9c5d8 |
| } while (r1 != 1);
0x0009c5f0 b 0x9c416 | goto label_19;
| label_89:
0x0009c5f2 vldr d16, [fp, 0x28] | __asm ("vldr d16, [fp, 0x28]");
0x0009c5f6 mov r0, sb | r0 = sb;
0x0009c5f8 ldrd r2, r3, [sp, 0x68] | __asm ("ldrd r2, r3, [var_68h]");
0x0009c5fc vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0009c600 bl 0x86a48 | fcn_00086a48 (r0, r1, r2);
0x0009c604 b 0x9c21c | goto label_20;
| label_62:
0x0009c606 mov r1, sb | r1 = sb;
0x0009c608 mov r0, r5 | r0 = r5;
0x0009c60a blx 0x7cd0 | r0 = fcn_00007cd0 ();
0x0009c60e mov r4, r0 | r4 = r0;
0x0009c610 mov r1, sb | r1 = sb;
0x0009c612 mov r0, r5 | r0 = r5;
0x0009c614 blx 0x8184 | r0 = fcn_00008184 ();
0x0009c618 mov r3, r0 | r3 = r0;
0x0009c61a str r0, [sp, 0x3c] | var_3ch = r0;
0x0009c61c cmp r4, 0 |
| if (r4 == 0) {
0x0009c61e beq.w 0x9bcde | goto label_21;
| }
0x0009c622 cmp r0, 0 |
0x0009c624 ittt le |
| if (r0 > 0) {
0x0009c626 movle r3, sb | r3 = sb;
| }
| if (r0 > 0) {
0x0009c628 strle r3, [sp, 0x8c] | var_8ch = r3;
| }
| if (r0 > 0) {
0x0009c62a strle r3, [sp, 0x64] | var_64h = r3;
| }
| if (r0 > 0) {
0x0009c62c bgt.w 0x9cf58 | goto label_105;
| }
| label_42:
0x0009c630 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0009c632 mov r1, r4 | r1 = r4;
0x0009c634 ldr r0, [sp, 0x64] | r0 = var_64h;
0x0009c636 blx 0x7dcc | fcn_00007dcc ();
0x0009c63a b.w 0x9bce6 | goto label_22;
| label_98:
0x0009c63e ldrd r3, r2, [r5, 8] | __asm ("ldrd r3, r2, [r5, 8]");
0x0009c642 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x0009c644 bne.w 0x9c7fa | goto label_106;
| }
| label_25:
0x0009c648 movs r3, 0 | r3 = 0;
0x0009c64a ldr r2, [sp, 0x50] | r2 = var_50h;
0x0009c64c movs r1, 0x1e | r1 = 0x1e;
0x0009c64e mov r0, sb | r0 = sb;
0x0009c650 str r3, [sp, 0xf0] | s = r3;
0x0009c652 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009c656 mov r4, r0 | r4 = r0;
0x0009c658 cmp r0, 0 |
| if (r0 != 0) {
0x0009c65a bne.w 0x9c4ca | goto label_23;
| }
0x0009c65e ldr r4, [sp, 0xf0] | r4 = s;
0x0009c660 movs r1, 1 | r1 = 1;
0x0009c662 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009c664 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0009c666 mov r0, r4 | r0 = r4;
0x0009c668 blx 0x7c4c | fcn_00007c4c ();
0x0009c66c mov r2, r7 | r2 = r7;
0x0009c66e movs r1, 2 | r1 = 2;
0x0009c670 mov r0, r4 | r0 = r4;
0x0009c672 blx 0x7e30 | sleep (r0);
0x0009c676 mov r0, r4 | r0 = r4;
0x0009c678 blx 0x809c | fcn_0000809c ();
0x0009c67c mov r0, r4 | r0 = r4;
0x0009c67e blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009c682 mov r4, r0 | r4 = r0;
0x0009c684 b 0x9c4ca | goto label_23;
| label_99:
0x0009c686 ldr r5, [sp, 0xcc] | r5 = var_cch;
0x0009c688 movs r1, 1 | r1 = 1;
0x0009c68a ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009c68c ldr r2, [sp, 0x38] | r2 = var_38h;
0x0009c68e mov r0, r5 | r0 = r5;
0x0009c690 blx 0x7c4c | fcn_00007c4c ();
0x0009c694 mov r2, r7 | r2 = r7;
0x0009c696 movs r1, 2 | r1 = 2;
0x0009c698 mov r0, r5 | r0 = r5;
0x0009c69a blx 0x7e30 | sleep (r0);
0x0009c69e mov r0, r5 | r0 = r5;
0x0009c6a0 blx 0x809c | r0 = fcn_0000809c ();
0x0009c6a4 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x0009c6a6 beq.w 0x9cf08 | goto label_107;
| }
0x0009c6aa mov r0, r5 | r0 = r5;
0x0009c6ac str r6, [sp, 0x88] | var_88h = r6;
0x0009c6ae blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009c6b2 mov r4, r0 | r4 = r0;
0x0009c6b4 strd r6, r6, [sp, 0x94] | __asm ("strd r6, r6, [var_98h]");
| label_55:
0x0009c6b8 movs r1, 0 | r1 = 0;
0x0009c6ba cmp r4, 0 |
| if (r4 != 0) {
0x0009c6bc bne.w 0x9c4b4 | goto label_24;
| }
0x0009c6c0 add r3, sp, 0xd4 | r3 += var_d4h;
0x0009c6c2 mov r5, r4 | r5 = r4;
0x0009c6c4 mov r6, r4 | r6 = r4;
0x0009c6c6 mov r8, r4 | r8 = r4;
0x0009c6c8 str r3, [sp, 0x44] | var_44h = r3;
0x0009c6ca add r3, sp, 0xd8 | r3 += var_d8h;
0x0009c6cc str r3, [sp, 0x90] | var_90h = r3;
0x0009c6ce str r7, [sp, 0xa0] | var_a0h = r7;
0x0009c6d0 mov r3, r5 | r3 = r5;
0x0009c6d2 mov r2, r6 | r2 = r6;
0x0009c6d4 ldrd r5, r6, [sp, 0xd8] | __asm ("ldrd r5, r6, [var_d8h]");
0x0009c6d8 orrs.w r1, r5, r6 | r1 = r5 | r6;
| if (r1 == r5) {
0x0009c6dc beq 0x9c748 | goto label_108;
| }
0x0009c6de ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009c6e0 mov r2, r5 | r2 = r5;
0x0009c6e2 mov r0, sb | r0 = sb;
0x0009c6e4 str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h]");
0x0009c6e8 strd r8, r8, [sp, 0xd0] | __asm ("strd r8, r8, [var_d0h]");
0x0009c6ec str r3, [sp, 4] | var_4h = r3;
0x0009c6ee ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x0009c6f0 str r3, [sp] | *(sp) = r3;
0x0009c6f2 mov r3, r6 | r3 = r6;
0x0009c6f4 bl 0x995fc | r0 = fcn_000995fc (r0, r1, r2, r3, r4, r5);
0x0009c6f8 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0009c6fa cbz r0, 0x9c706 | void (*0x9c706)() ();
| }
| label_108:
0x0009c748 mov r5, r3 | r5 = r3;
0x0009c74a orrs r3, r2 | r3 |= r2;
0x0009c74c ldr r7, [sp, 0xa0] | r7 = var_a0h;
0x0009c74e mov sl, r2 | sl = r2;
| if (r3 == r2) {
0x0009c750 beq 0x9c79c | void (*0x9c79c)() ();
| }
| label_106:
0x0009c7fa mov r1, r5 | r1 = r5;
0x0009c7fc mov r0, sb | r0 = sb;
0x0009c7fe bl 0x86878 | r0 = fcn_00086878 (r0, r1);
0x0009c802 cmp r0, 0 |
| if (r0 != 0) {
0x0009c804 bne.w 0x9cb84 | goto label_109;
| }
0x0009c808 ldr r7, [r5] | r7 = *(r5);
0x0009c80a b 0x9c648 | goto label_25;
| label_94:
0x0009c80c add.w r3, fp, 0x4c | r3 += arg_4ch;
0x0009c810 str.w sl, [sp, 0xac] | __asm ("str.w sl, [var_ach]");
0x0009c814 str r3, [sp, 0xc0] | var_c0h = r3;
0x0009c816 add.w r3, fp, 0x40 | r3 += arg_40h;
0x0009c81a str r3, [sp, 0xc4] | var_c4h = r3;
0x0009c81c str.w sb, [sp, 0x70] | __asm ("str.w sb, [var_70h]");
| label_27:
0x0009c820 ldr.w r3, [fp, 0x274] | r3 = *(arg_274h);
0x0009c824 ldr.w r0, [fp, 0x44] | r0 = *(arg_44h);
0x0009c828 str r3, [sp, 0x84] | var_84h = r3;
0x0009c82a cmp r0, r3 |
0x0009c82c it ge |
| if (r0 < r3) {
0x0009c82e movge r0, r3 | r0 = r3;
| }
0x0009c830 ldr.w r3, [fp, 0x270] | r3 = *(arg_270h);
0x0009c834 cmp r0, 0 |
0x0009c836 str r3, [sp, 0x88] | var_88h = r3;
0x0009c838 ldr.w r3, [fp, 0x278] | r3 = *(arg_278h);
0x0009c83c str r3, [sp, 0x9c] | var_9ch = r3;
0x0009c83e ldr.w r3, [fp, 0x27c] | r3 = *(arg_27ch);
0x0009c842 str r3, [sp, 0x54] | var_54h = r3;
0x0009c844 ldr.w r3, [fp, 0x40] | r3 = *(arg_40h);
| if (r0 <= 0) {
0x0009c848 ble.w 0x9cad6 | goto label_110;
| }
0x0009c84c ldr r2, [sp, 0x88] | r2 = var_88h;
0x0009c84e subs r3, 1 | r3--;
0x0009c850 movs r6, 0 | r6 = 0;
0x0009c852 subs r2, 1 | r2--;
0x0009c854 b 0x9c86a |
| while (r4 == r1) {
0x0009c864 adds r6, 1 | r6++;
0x0009c866 cmp r6, r0 |
| if (r6 == r0) {
0x0009c868 beq 0x9c876 | goto label_111;
| }
0x0009c86a ldrb r4, [r3, 1]! | r4 = *((r3 += 1));
0x0009c86e ldrb r1, [r2, 1]! | r1 = *((r2 += 1));
0x0009c872 cmp r4, r1 |
0x0009c874 beq 0x9c864 |
| }
| label_111:
0x0009c876 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0009c878 asrs r2, r6, 0x1f | r2 = r6 >> 0x1f;
0x0009c87a movs r0, 0 | r0 = 0;
0x0009c87c subs r5, r3, r6 | r5 = r3 - r6;
0x0009c87e mov r3, r6 | r3 = r6;
| do {
0x0009c880 lsrs r3, r3, 7 | r3 >>= 7;
0x0009c882 adds r0, 1 | r0++;
0x0009c884 orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009c888 lsrs r2, r2, 7 | r2 >>= 7;
0x0009c88a orrs.w r1, r3, r2 | r1 = r3 | r2;
0x0009c88e bne 0x9c880 |
| } while (r1 != r3);
| label_36:
0x0009c890 asrs r2, r5, 0x1f | r2 = r5 >> 0x1f;
0x0009c892 mov r3, r5 | r3 = r5;
0x0009c894 movs r1, 0 | r1 = 0;
| do {
0x0009c896 lsrs r3, r3, 7 | r3 >>= 7;
0x0009c898 adds r1, 1 | r1++;
0x0009c89a orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009c89e lsrs r2, r2, 7 | r2 >>= 7;
0x0009c8a0 orrs.w r4, r3, r2 | r4 = r3 | r2;
0x0009c8a4 bne 0x9c896 |
| } while (r4 != r3);
0x0009c8a6 ldr r2, [sp, 0x54] | r2 = var_54h;
0x0009c8a8 add r1, r5 | r1 += r5;
0x0009c8aa add r0, r1 | r0 += r1;
0x0009c8ac movs r1, 0 | r1 = 0;
0x0009c8ae str r2, [sp, 0xa0] | var_a0h = r2;
0x0009c8b0 asr.w r8, r2, 0x1f | r8 = r2 >> 0x1f;
0x0009c8b4 mov r3, r8 | r3 = r8;
| do {
0x0009c8b6 lsrs r4, r2, 7 | r4 = r2 >> 7;
0x0009c8b8 lsrs r5, r3, 7 | r5 = r3 >> 7;
0x0009c8ba orr.w r4, r4, r3, lsl 25 | r4 |= (r3 << 25);
0x0009c8be adds r1, 1 | r1++;
0x0009c8c0 mov r3, r5 | r3 = r5;
0x0009c8c2 orrs.w r7, r4, r5 | r7 = r4 | r5;
0x0009c8c6 mov r2, r4 | r2 = r4;
0x0009c8c8 bne 0x9c8b6 |
| } while (r7 != r4);
0x0009c8ca ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009c8cc adds r2, r3, r1 | r2 = r3 + r1;
0x0009c8ce ldr.w r1, [fp, 0x50] | r1 = *(arg_50h);
0x0009c8d2 add r2, r0 | r2 += r0;
0x0009c8d4 cmp r1, 0 |
0x0009c8d6 add.w r7, r2, r1 | r7 = r2 + r1;
| if (r1 <= 0) {
0x0009c8da ble.w 0x9ca32 | goto label_112;
| }
0x0009c8de ldr r3, [sp, 0x70] | r3 = var_70h;
0x0009c8e0 ldr.w r3, [r3, 0xe8] | r3 = *((r3 + 0xe8));
0x0009c8e4 cmp r3, r7 |
| if (r3 < r7) {
0x0009c8e6 blt 0x9c962 | goto label_113;
| }
0x0009c8e8 ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x0009c8ec adds r3, r3, r2 | r3 += r2;
0x0009c8ee str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x0009c8f2 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x0009c8f6 adc.w r3, r3, r2, asr 31 | __asm ("adc.w r3, r3, r2, asr 31");
0x0009c8fa str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x0009c8fe ldr.w r3, [fp, 0x54] | r3 = *(arg_54h);
0x0009c902 cmp r7, r3 |
| if (r7 > r3) {
0x0009c904 bgt 0x9ca00 | goto label_32;
| }
| label_30:
0x0009c906 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009c908 ldrd r0, r1, [sp, 0xc0] | __asm ("ldrd r0, r1, [var_c0h]");
0x0009c90c str r3, [sp, 4] | var_4h = r3;
0x0009c90e ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0009c910 str r3, [sp] | *(sp) = r3;
0x0009c912 ldrd r3, r2, [sp, 0x84] | __asm ("ldrd r3, r2, [var_84h]");
0x0009c916 bl 0x42f74 | fcn_00042f74 (r0, r1, r2, r3);
0x0009c91a str r0, [sp, 0x44] | var_44h = r0;
| if (r0 == 0) {
0x0009c91c cbnz r0, 0x9c928 |
0x0009c91e ldr r1, [sp, 0x60] | r1 = var_60h;
0x0009c920 ldr r0, [sp, 0x70] | r0 = var_70h;
0x0009c922 bl 0x9a188 | fcn_0009a188 (r0, r1, r2, r3);
0x0009c926 str r0, [sp, 0x44] | var_44h = r0;
| }
| label_29:
0x0009c928 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0009c92c ldr r2, [sp, 0x58] | r2 = var_58h;
0x0009c92e cmp r3, r2 |
| if (r3 < r2) {
0x0009c930 blt 0x9c950 | goto label_114;
| }
0x0009c932 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0009c934 ldr.w sl, [sp, 0xac] | sl = var_ach;
0x0009c938 ldr.w sb, [sp, 0x70] | sb = var_70h;
0x0009c93c cmp r2, 0x64 |
| if (r2 == 0x64) {
0x0009c93e beq.w 0x9c42c | goto label_26;
| }
| label_28:
0x0009c942 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0009c944 cmp r2, 0 |
| if (r2 == 0) {
0x0009c946 beq.w 0x9c42c | goto label_26;
| }
0x0009c94a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009c94c str r3, [sp, 0x40] | var_40h = r3;
0x0009c94e b 0x9c1bc | goto label_16;
| label_114:
0x0009c950 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0009c952 cmp r2, 0x64 |
| if (r2 == 0x64) {
0x0009c954 beq.w 0x9c820 | goto label_27;
| }
0x0009c958 ldr.w sl, [sp, 0xac] | sl = var_ach;
0x0009c95c ldr.w sb, [sp, 0x70] | sb = var_70h;
0x0009c960 b 0x9c942 | goto label_28;
| label_113:
0x0009c962 ldrd r2, r3, [fp, 0x38] | __asm ("ldrd r2, r3, [arg_38h]");
0x0009c966 str r1, [sp, 4] | var_4h = r1;
0x0009c968 ldr.w r1, [fp, 0x4c] | r1 = *(arg_4ch);
0x0009c96c ldr r0, [sp, 0x70] | r0 = var_70h;
0x0009c96e str r1, [sp] | *(sp) = r1;
0x0009c970 bl 0x867b4 | fcn_000867b4 (r0, r1, r2);
0x0009c974 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0009c978 str r0, [sp, 0x44] | var_44h = r0;
0x0009c97a adds r3, 1 | r3++;
0x0009c97c str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
0x0009c980 cmp r0, 0 |
| if (r0 == 0) {
0x0009c982 beq.w 0x9cbae | goto label_115;
| }
| label_46:
0x0009c986 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0009c98a movs r1, 0 | r1 = 0;
0x0009c98c str.w r1, [fp, 0x44] | __asm ("str.w r1, [arg_44h]");
0x0009c990 str.w r1, [fp, 0x50] | __asm ("str.w r1, [arg_50h]");
0x0009c994 adds r3, 1 | r3++;
0x0009c996 str.w r3, [fp, 0x38] | __asm ("str.w r3, [arg_38h]");
0x0009c99a ldr.w r3, [fp, 0x3c] | r3 = *(arg_3ch);
0x0009c99e adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0009c9a2 str.w r3, [fp, 0x3c] | __asm ("str.w r3, [arg_3ch]");
0x0009c9a6 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0009c9a8 asrs r2, r3, 0x1f | r2 = r3 >> 0x1f;
| do {
0x0009c9aa lsrs r3, r3, 7 | r3 >>= 7;
0x0009c9ac adds r1, 1 | r1++;
0x0009c9ae orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009c9b2 lsrs r2, r2, 7 | r2 >>= 7;
0x0009c9b4 orrs.w r0, r3, r2 | r0 = r3 | r2;
0x0009c9b8 bne 0x9c9aa |
| } while (r0 != r3);
0x0009c9ba ldr r3, [sp, 0x84] | r3 = var_84h;
0x0009c9bc movs r2, 0 | r2 = 0;
0x0009c9be add r3, r1 | r3 += r1;
0x0009c9c0 ldr r1, [sp, 0xa0] | r1 = var_a0h;
0x0009c9c2 adds r3, 1 | r3++;
| do {
0x0009c9c4 lsrs r1, r1, 7 | r1 >>= 7;
0x0009c9c6 adds r2, 1 | r2++;
0x0009c9c8 orr.w r1, r1, r8, lsl 25 | r1 |= (r8 << 25);
0x0009c9cc lsr.w r8, r8, 7 | r8 >>= 7;
0x0009c9d0 orrs.w r0, r1, r8 | r0 = r1 | r8;
0x0009c9d4 bne 0x9c9c4 |
| } while (r0 != r1);
0x0009c9d6 ldr r1, [sp, 0x54] | r1 = var_54h;
0x0009c9d8 add r2, r1 | r2 += r1;
0x0009c9da adds r7, r2, r3 | r7 = r2 + r3;
0x0009c9dc ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x0009c9e0 adds r3, r3, r7 | r3 += r7;
0x0009c9e2 str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x0009c9e6 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x0009c9ea adc.w r3, r3, r7, asr 31 | __asm ("adc.w r3, r3, r7, asr 31");
0x0009c9ee str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x0009c9f2 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009c9f4 cmp r3, 0 |
| if (r3 != 0) {
0x0009c9f6 bne 0x9c928 | goto label_29;
| }
0x0009c9f8 ldr.w r3, [fp, 0x54] | r3 = *(arg_54h);
0x0009c9fc cmp r7, r3 |
| if (r7 <= r3) {
0x0009c9fe ble 0x9ca22 | goto label_116;
| }
| label_32:
0x0009ca00 ldr.w r0, [fp, 0x4c] | r0 = *(arg_4ch);
0x0009ca04 mov r1, r7 | r1 = r7;
0x0009ca06 blx 0x8514 | r0 = fcn_00008514 ();
0x0009ca0a cmp r0, 0 |
| if (r0 == 0) {
0x0009ca0c beq.w 0x9ce62 | goto label_117;
| }
0x0009ca10 ldr.w r1, [fp, 0x50] | r1 = *(arg_50h);
0x0009ca14 str.w r7, [fp, 0x54] | __asm ("str.w r7, [arg_54h]");
0x0009ca18 str.w r0, [fp, 0x4c] | __asm ("str.w r0, [arg_4ch]");
| label_31:
0x0009ca1c cmp r1, 0 |
| if (r1 != 0) {
0x0009ca1e bne.w 0x9c906 | goto label_30;
| }
| label_116:
0x0009ca22 movs r3, 1 | r3 = 1;
0x0009ca24 movs r2, 0 | r2 = 0;
0x0009ca26 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
0x0009ca2a ldr.w r3, [fp, 0x4c] | r3 = *(arg_4ch);
0x0009ca2e strb r2, [r3] | *(r3) = r2;
0x0009ca30 b 0x9c906 | goto label_30;
| label_112:
0x0009ca32 ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x0009ca36 adds r3, r3, r2 | r3 += r2;
0x0009ca38 str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x0009ca3c ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x0009ca40 adc.w r3, r3, r2, asr 31 | __asm ("adc.w r3, r3, r2, asr 31");
0x0009ca44 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x0009ca48 ldr.w r3, [fp, 0x54] | r3 = *(arg_54h);
0x0009ca4c cmp r3, r7 |
| if (r3 >= r7) {
0x0009ca4e bge 0x9ca1c | goto label_31;
| }
0x0009ca50 b 0x9ca00 | goto label_32;
| label_56:
0x0009ca52 lsls r5, r6, 5 | r5 = r6 << 5;
0x0009ca54 ldr r0, [sp, 0x50] | r0 = var_50h;
0x0009ca56 add.w r3, fp, r5 | r3 = fp + r5;
0x0009ca5a ldr r2, [r3, 0x50] | r2 = *((r3 + 0x50));
0x0009ca5c bl 0x43258 | fcn_00043258 (r0, r1, r2);
0x0009ca60 ldr r2, [sp, 0xf0] | r2 = s;
| if (r2 == 0) {
0x0009ca62 cbz r2, 0x9ca76 | void (*0x9ca76)() ();
| }
| label_43:
0x0009cab4 mov r0, r5 | r0 = r5;
0x0009cab6 blx 0x7cfc | fcn_00007cfc ();
0x0009caba str r0, [sp, 0x40] | var_40h = r0;
0x0009cabc b 0x9c40e | goto label_33;
| label_102:
0x0009cabe movs r1, 0xb | r1 = 0xb;
0x0009cac0 blx 0x8514 | r0 = fcn_00008514 ();
0x0009cac4 cmp r0, 0 |
| if (r0 == 0) {
0x0009cac6 beq.w 0x9c530 | goto label_34;
| }
0x0009caca movs r3, 0xb | r3 = 0xb;
0x0009cacc str.w r0, [fp, 0x6c] | __asm ("str.w r0, [arg_6ch]");
0x0009cad0 str.w r3, [fp, 0x74] | __asm ("str.w r3, [arg_74h]");
0x0009cad4 b 0x9c4f6 | goto label_35;
| label_110:
0x0009cad6 ldr r5, [sp, 0x84] | r5 = var_84h;
0x0009cad8 movs r6, 0 | r6 = 0;
0x0009cada movs r0, 1 | r0 = 1;
0x0009cadc b 0x9c890 | goto label_36;
| label_100:
0x0009cade ldr.w fp, [sp, 0x54] | fp = var_54h;
0x0009cae2 mov r8, r4 | r8 = r4;
0x0009cae4 ldr.w sl, [sp, 0x9c] | sl = var_9ch;
0x0009cae8 cmp r4, 0 |
| if (r4 != 0) {
0x0009caea bne 0x9cb8e | goto label_40;
| }
0x0009caec ldr.w r3, [fp, 0x24c] | r3 = *(arg_24ch);
0x0009caf0 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0009caf2 cmp r3, r2 |
| if (r3 != r2) {
0x0009caf4 bne.w 0x9ce76 | goto label_118;
| }
| label_54:
0x0009cafe ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009cb00 add.w r7, r3, 0x14 | r7 = r3 + 0x14;
0x0009cb04 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0009cb06 cmp r3, r7 |
| if (r3 < r7) {
0x0009cb08 blt.w 0x9cfec | goto label_119;
| }
0x0009cb0c ldr r7, [sp, 0x8c] | r7 = var_8ch;
0x0009cb0e ldr.w ip, [sp, 0x64] | ip = var_64h;
| label_47:
0x0009cb12 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009cb14 ldrd r1, r2, [sp, 0x34] | __asm ("ldrd r1, r2, [var_34h]");
0x0009cb18 add.w r6, ip, r3 | r6 = ip + r3;
0x0009cb1c mov r3, r6 | r3 = r6;
| do {
0x0009cb1e lsrs r4, r2, 7 | r4 = r2 >> 7;
0x0009cb20 orn r5, r2, 0x7f | r5 = r2 | 0x7f;
| r5 = ~r5;
0x0009cb24 uxtb r0, r2 | r0 = (int8_t) r2;
0x0009cb26 orr.w r2, r4, r1, lsl 25 | r2 = r4 | (r1 << 25);
0x0009cb2a lsrs r1, r1, 7 | r1 >>= 7;
0x0009cb2c mov r4, r3 | r4 = r3;
0x0009cb2e strb r5, [r3], 1 | *(r3) = r5;
| r3++;
0x0009cb32 orrs.w r5, r2, r1 | r5 = r2 | r1;
0x0009cb36 bne 0x9cb1e |
| } while (r5 != r2);
| label_109:
0x0009cb84 ldr.w fp, [sp, 0x54] | fp = var_54h;
0x0009cb88 mov r8, r0 | r8 = r0;
0x0009cb8a ldr.w sl, [sp, 0x9c] | sl = var_9ch;
| label_40:
0x0009cb8e ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009cb90 cmp r3, 0 |
| if (r3 == 0) {
0x0009cb92 beq.w 0x9c1d6 | goto label_37;
| }
| label_53:
0x0009cb96 movs r3, 1 | r3 = 1;
0x0009cb98 str.w r8, [sp, 0x40] | __asm ("str.w r8, [var_40h]");
0x0009cb9c str r3, [sp, 0x78] | var_78h = r3;
0x0009cb9e b.w 0x9c1bc | goto label_16;
| label_103:
0x0009cba2 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0009cba4 mov r0, r4 | r0 = r4;
0x0009cba6 blx 0x8050 | r0 = fcn_00008050 ();
0x0009cbaa mov r7, r0 | r7 = r0;
0x0009cbac b 0x9c564 | goto label_38;
| label_115:
0x0009cbae adds r3, r6, 1 | r3 = r6 + 1;
0x0009cbb0 mov sb, fp | sb = fp;
0x0009cbb2 str r3, [sp, 0x90] | var_90h = r3;
0x0009cbb4 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0009cbb8 str r3, [sp, 0xa4] | var_a4h = r3;
0x0009cbba ldr.w r3, [fp, 0x3c] | r3 = *(arg_3ch);
0x0009cbbe str r3, [sp, 0xa8] | var_a8h = r3;
0x0009cbc0 movs r3, 1 | r3 = 1;
0x0009cbc2 strd r3, r8, [sp, 0x94] | __asm ("strd r3, r8, [var_98h]");
0x0009cbc6 ldr r7, [sp, 0x90] | r7 = var_90h;
0x0009cbc8 ldrd r3, lr, [sb, 0x60] | __asm ("ldrd r3, lr, [sb, 0x60]");
0x0009cbcc cmp r7, lr |
0x0009cbce it ge |
| if (r7 < lr) {
0x0009cbd0 movge r7, lr | r7 = lr;
| }
0x0009cbd2 cmp r7, 0 |
| if (r7 <= 0) {
0x0009cbd4 ble.w 0x9ce54 | goto label_120;
| }
0x0009cbd8 ldr r2, [sp, 0x88] | r2 = var_88h;
0x0009cbda subs r3, 1 | r3--;
0x0009cbdc movs r6, 0 | r6 = 0;
0x0009cbde subs r2, 1 | r2--;
0x0009cbe0 b 0x9cbe8 |
| while (r0 == r1) {
0x0009cbe2 adds r6, 1 | r6++;
0x0009cbe4 cmp r6, r7 |
| if (r6 == r7) {
0x0009cbe6 beq 0x9cbf4 | goto label_121;
| }
0x0009cbe8 ldrb r0, [r3, 1]! | r0 = *((r3 += 1));
0x0009cbec ldrb r1, [r2, 1]! | r1 = *((r2 += 1));
0x0009cbf0 cmp r0, r1 |
0x0009cbf2 beq 0x9cbe2 |
| }
| label_121:
0x0009cbf4 ldr r3, [sp, 0x90] | r3 = var_90h;
0x0009cbf6 sub.w r8, r3, r6 | r8 = r3 - r6;
0x0009cbfa cmp.w r8, 0 |
| if (r8 <= 0) {
0x0009cbfe ble.w 0x9cfa8 | goto label_122;
| }
0x0009cc02 asrs r3, r6, 0x1f | r3 = r6 >> 0x1f;
0x0009cc04 movs r0, 0 | r0 = 0;
0x0009cc06 mov r2, r3 | r2 = r3;
0x0009cc08 strd r6, r3, [sp, 0xb0] | __asm ("strd r6, r3, [var_b0h]");
0x0009cc0c mov r3, r6 | r3 = r6;
| do {
0x0009cc0e lsrs r3, r3, 7 | r3 >>= 7;
0x0009cc10 adds r0, 1 | r0++;
0x0009cc12 orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009cc16 lsrs r2, r2, 7 | r2 >>= 7;
0x0009cc18 orrs.w r1, r3, r2 | r1 = r3 | r2;
0x0009cc1c bne 0x9cc0e |
| } while (r1 != r3);
| label_39:
0x0009cc1e asr.w sl, r8, 0x1f | sl = r8 >> 0x1f;
0x0009cc22 mov r7, r8 | r7 = r8;
0x0009cc24 movs r1, 0 | r1 = 0;
0x0009cc26 mov r3, r8 | r3 = r8;
0x0009cc28 mov r2, sl | r2 = sl;
| do {
0x0009cc2a lsrs r3, r3, 7 | r3 >>= 7;
0x0009cc2c adds r1, 1 | r1++;
0x0009cc2e orr.w r3, r3, r2, lsl 25 | r3 |= (r2 << 25);
0x0009cc32 lsrs r2, r2, 7 | r2 >>= 7;
0x0009cc34 orrs.w ip, r3, r2 |
0x0009cc38 bne 0x9cc2a |
| } while (ip != r3);
0x0009cc3a add r1, r8 | r1 += r8;
0x0009cc3c add r0, r1 | r0 += r1;
0x0009cc3e ldr.w r1, [sb, 0x70] | r1 = *((sb + 0x70));
0x0009cc42 cmp.w lr, 0 |
0x0009cc44 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 != r0) {
0x0009cc46 beq 0x9cc56 |
0x0009cc48 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0009cc4a adds r2, r0, r1 | r2 = r0 + r1;
0x0009cc4c ldr.w r3, [r3, 0xe8] | r3 = *((r3 + 0xe8));
0x0009cc50 cmp r2, r3 |
| if (r2 > r3) {
0x0009cc52 bgt.w 0x9cda6 | goto label_123;
| }
| }
0x0009cc56 strd r8, r0, [sp, 0xb8] | __asm ("strd r8, r0, [var_b8h]");
0x0009cc5a ldrd r3, r8, [sp, 0x94] | __asm ("ldrd r3, r8, [var_98h]");
0x0009cc5e lsl.w sb, r3, 5 | sb = r3 << 5;
0x0009cc62 add.w r4, fp, sb | r4 = fp + sb;
0x0009cc66 ldr r3, [r4, 0x54] | r3 = *((r4 + 0x54));
0x0009cc68 cmp r1, 0 |
| if (r1 == 0) {
0x0009cc6a beq 0x9ccf8 | goto label_124;
| }
0x0009cc6c mov r5, r0 | r5 = r0;
0x0009cc6e add r5, r1 | r5 += r1;
0x0009cc70 add.w r4, fp, sb | r4 = fp + sb;
0x0009cc74 ldr r3, [r4, 0x54] | r3 = *((r4 + 0x54));
0x0009cc76 cmp r5, r3 |
| if (r5 > r3) {
0x0009cc78 bgt 0x9cd5a | void (*0x9cd5a)() ();
| }
| label_124:
0x0009ccf8 ldr r2, [sp, 0x70] | r2 = var_70h;
0x0009ccfa ldr r0, [r4, 0x4c] | r0 = *((r4 + 0x4c));
0x0009ccfc ldr.w r5, [r2, 0xe8] | r5 = *((r2 + 0xe8));
0x0009cd00 cmp r5, r3 |
| if (r5 > r3) {
0x0009cd02 bgt.w 0x9ce40 | void (*0x9ce40)() ();
| }
| label_123:
0x0009cda6 ldrd r2, r3, [sb, 0x58] | __asm ("ldrd r2, r3, [sb, 0x58]");
0x0009cdaa str r1, [sp, 4] | var_4h = r1;
0x0009cdac ldr.w r1, [sb, 0x6c] | r1 = *((sb + 0x6c));
0x0009cdb0 ldr r0, [sp, 0x70] | r0 = var_70h;
0x0009cdb2 str r1, [sp] | *(sp) = r1;
0x0009cdb4 bl 0x867b4 | fcn_000867b4 (r0, r1, r2);
0x0009cdb8 ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0009cdba mov lr, r0 | lr = r0;
0x0009cdbc ldr r0, [sp, 0x94] | r0 = var_94h;
0x0009cdbe adds r2, r3, 1 | r2 = r3 + 1;
0x0009cdc0 ldr r3, [sp, 0xa8] | r3 = var_a8h;
0x0009cdc2 adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x0009cdc6 ldr.w r3, [sb, 0x6c] | r3 = *((sb + 0x6c));
0x0009cdca strb r0, [r3] | *(r3) = r0;
0x0009cdcc ldr.w r7, [sb, 0x6c] | r7 = *((sb + 0x6c));
0x0009cdd0 adds r6, r7, 1 | r6 = r7 + 1;
| do {
0x0009cdd2 lsrs r3, r2, 7 | r3 = r2 >> 7;
0x0009cdd4 orn ip, r2, 0x7f | ip = r2 | 0x7f;
| ip = ~ip;
0x0009cdd8 uxtb r0, r2 | r0 = (int8_t) r2;
0x0009cdda orr.w r2, r3, r1, lsl 25 | r2 = r3 | (r1 << 25);
0x0009cdde lsrs r1, r1, 7 | r1 >>= 7;
0x0009cde0 mov r3, r6 | r3 = r6;
0x0009cde2 strb ip, [r6], 1 | *(r6) = ip;
| r6++;
0x0009cde6 orrs.w ip, r2, r1 |
0x0009cdea bne 0x9cdd2 |
| } while (ip != r2);
| label_120:
0x0009ce54 ldr.w r8, [sp, 0x90] | r8 = var_90h;
0x0009ce58 movs r6, 0 | r6 = 0;
0x0009ce5a movs r0, 1 | r0 = 1;
0x0009ce5c strd r4, r5, [sp, 0xb0] | __asm ("strd r4, r5, [var_b0h]");
0x0009ce60 b 0x9cc1e | goto label_39;
| label_117:
0x0009ce62 movs r3, 7 | r3 = 7;
0x0009ce64 ldr.w sl, [sp, 0xac] | sl = var_ach;
0x0009ce68 ldr.w sb, [sp, 0x70] | sb = var_70h;
0x0009ce6c str r3, [sp, 0x40] | var_40h = r3;
0x0009ce6e b.w 0x9c1bc | goto label_16;
| label_45:
0x0009ce72 movs r3, 0 | r3 = 0;
0x0009ce74 str r3, [sp, 0x30] | var_30h = r3;
| label_118:
0x0009ce76 movs r5, 0 | r5 = 0;
0x0009ce78 add r2, sp, 0xe0 | r2 += var_e0h;
0x0009ce7a mov r3, r5 | r3 = r5;
0x0009ce7c movs r1, 0x23 | r1 = 0x23;
0x0009ce7e mov r0, sb | r0 = sb;
0x0009ce80 str r5, [sp, 0xe0] | var_e0h = r5;
0x0009ce82 str r5, [sp, 0xf0] | s = r5;
0x0009ce84 bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009ce88 mov r8, r0 | r8 = r0;
0x0009ce8a cmp r0, 0 |
| if (r0 == 0) {
0x0009ce8c beq.w 0x9d072 | goto label_125;
| }
| label_50:
0x0009ce90 movs r3, 0 | r3 = 0;
0x0009ce92 mov r0, r5 | r0 = r5;
0x0009ce94 strb.w r3, [sb, 0xf0] | *((sb + 0xf0)) = r3;
0x0009ce98 blx 0x84f8 | fcn_000084f8 ();
0x0009ce9c b 0x9cb8e | goto label_40;
| label_85:
0x0009ce9e ldr.w r3, [fp, 0x24c] | r3 = *(arg_24ch);
0x0009cea2 mov r6, r0 | r6 = r0;
0x0009cea4 mov sl, fp | sl = fp;
0x0009cea6 cmp r3, 0 |
| if (r3 <= 0) {
0x0009cea8 ble 0x9cec2 | goto label_126;
| }
| do {
0x0009ceaa ldr.w r3, [sl, 0x248] | r3 = *((sl + 0x248));
0x0009ceae ldr.w r0, [r3, r8, lsl 2] | offset_1 = r8 << 2;
| r0 = *((r3 + offset_1));
0x0009ceb2 add.w r8, r8, 1 | r8++;
0x0009ceb6 bl 0x5b434 | fcn_0005b434 (r0);
0x0009ceba ldr.w r3, [sl, 0x24c] | r3 = *((sl + 0x24c));
0x0009cebe cmp r8, r3 |
0x0009cec0 blt 0x9ceaa |
| } while (r8 < r3);
| label_126:
0x0009cec2 ldr.w r0, [sl, 0x248] | r0 = *((sl + 0x248));
0x0009cec6 mov sb, r6 | sb = r6;
0x0009cec8 blx 0x84f8 | fcn_000084f8 ();
0x0009cecc ldr.w r0, [sl, 0x258] | r0 = *((sl + 0x258));
0x0009ced0 blx 0x84f8 | fcn_000084f8 ();
0x0009ced4 movs r3, 0 | r3 = 0;
0x0009ced6 strd r3, r3, [sl, 0x248] | __asm ("strd r3, r3, aav.0x000000ff");
0x0009ceda str.w r3, [sl, 0x258] | __asm ("str.w r3, aav.0x000000ff");
0x0009cede b.w 0x9bc94 | goto label_0;
| label_104:
0x0009cee2 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0009cee4 mov r0, r4 | r0 = r4;
0x0009cee6 blx 0x80d8 | r0 = fcn_000080d8 ();
0x0009ceea subs r3, r0, 1 | r3 = r0 - 1;
0x0009ceec str.w r1, [fp, 0x1c] | __asm ("str.w r1, [arg_1ch]");
0x0009cef0 adc r2, r1, -1 | __asm ("adc r2, r1, -1");
0x0009cef4 lsls r1, r7, 4 | r1 = r7 << 4;
0x0009cef6 str.w r0, [fp, 0x18] | __asm ("str.w r0, [arg_18h]");
0x0009cefa adds r3, r3, r1 | r3 += r1;
0x0009cefc adc.w r2, r2, r1, asr 31 | __asm ("adc.w r2, r2, r1, asr 31");
0x0009cf00 strd r3, r2, [fp, 0x20] | __asm ("strd r3, r2, [fp, 0x20]");
0x0009cf04 b.w 0x9c594 | goto label_41;
| label_107:
0x0009cf08 movs r1, 4 | r1 = 4;
0x0009cf0a mov r0, r5 | r0 = r5;
0x0009cf0c blx 0x7cd0 | fcn_00007cd0 ();
0x0009cf10 movs r1, 4 | r1 = 4;
0x0009cf12 mov r8, r0 | r8 = r0;
0x0009cf14 mov r0, r5 | r0 = r5;
0x0009cf16 blx 0x8184 | fcn_00008184 ();
0x0009cf1a movs r1, 1 | r1 = 1;
0x0009cf1c mov r4, r0 | r4 = r0;
0x0009cf1e mov r0, r5 | r0 = r5;
0x0009cf20 blx 0x80d8 | fcn_000080d8 ();
0x0009cf24 mov r3, r1 | r3 = r1;
0x0009cf26 mov r1, r4 | r1 = r4;
0x0009cf28 ldr r4, [sp, 0x84] | r4 = var_84h;
0x0009cf2a mov r2, r0 | r2 = r0;
0x0009cf2c strd r2, r3, [sp, 0x94] | __asm ("strd r2, r3, [var_98h]");
0x0009cf30 add r3, sp, 0xd8 | r3 += var_d8h;
0x0009cf32 str r3, [sp, 4] | var_4h = r3;
0x0009cf34 mov r0, r8 | r0 = r8;
0x0009cf36 str r4, [sp] | *(sp) = r4;
0x0009cf38 add r2, sp, 0xe0 | r2 += var_e0h;
0x0009cf3a ldr r3, [sp, 0x70] | r3 = var_70h;
0x0009cf3c bl 0x432a0 | r0 = fcn_000432a0 (r0, r1, r2, r3, r4, r5, r6);
0x0009cf40 mov r4, r0 | r4 = r0;
0x0009cf42 mov r0, r5 | r0 = r5;
0x0009cf44 blx 0x7cfc | fcn_00007cfc ();
0x0009cf48 cmp r4, 0 |
| if (r4 == 0) {
0x0009cf4a beq.w 0x9d192 | goto label_127;
| }
0x0009cf4e ldr r3, [sp, 0xe0] | r3 = var_e0h;
0x0009cf50 mov r1, r6 | r1 = r6;
0x0009cf52 str r3, [sp, 0x88] | var_88h = r3;
0x0009cf54 b.w 0x9c4b4 | goto label_24;
| label_105:
0x0009cf58 mov r0, sb | r0 = sb;
0x0009cf5a mov r1, r3 | r1 = r3;
0x0009cf5c blx 0x8514 | fcn_00008514 ();
0x0009cf60 str r0, [sp, 0x64] | var_64h = r0;
0x0009cf62 cmp r0, 0 |
| if (r0 == 0) {
0x0009cf64 beq 0x9d064 | goto label_128;
| }
0x0009cf66 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009cf68 str r3, [sp, 0x8c] | var_8ch = r3;
0x0009cf6a b.w 0x9c630 | goto label_42;
| label_93:
0x0009cf6e ldr r4, [sp, 0xf0] | r4 = s;
0x0009cf70 movs r1, 1 | r1 = 1;
0x0009cf72 ldr r2, [sp, 0x88] | r2 = var_88h;
0x0009cf74 ldr r3, [sp, 0x90] | r3 = var_90h;
0x0009cf76 mov r0, r4 | r0 = r4;
0x0009cf78 blx 0x7c4c | fcn_00007c4c ();
0x0009cf7c mov r0, r4 | r0 = r4;
0x0009cf7e blx 0x809c | r0 = fcn_0000809c ();
0x0009cf82 cmp r0, 0x64 |
0x0009cf84 mov r0, r4 | r0 = r4;
| if (r0 == 0x64) {
0x0009cf86 beq 0x9cfb4 | goto label_129;
| }
0x0009cf88 blx 0x7cfc | fcn_00007cfc ();
0x0009cf8c str r0, [sp, 0x40] | var_40h = r0;
0x0009cf8e cmp r0, 0 |
| if (r0 == 0) {
0x0009cf90 beq.w 0x9cab4 | goto label_43;
| }
0x0009cf94 b.w 0x9c408 | goto label_44;
| label_95:
0x0009cf98 cmp.w r8, 0 |
| if (r8 != 0) {
0x0009cf9c bne.w 0x9ce72 | goto label_45;
| }
0x0009cfa0 str.w r8, [sp, 0x30] | __asm ("str.w r8, [var_30h]");
0x0009cfa4 b.w 0x9c1d6 | goto label_37;
| label_122:
0x0009cfa8 movw r3, 0x10b | r3 = 0x10b;
0x0009cfac ldr.w r8, [sp, 0x98] | r8 = var_98h;
0x0009cfb0 str r3, [sp, 0x44] | var_44h = r3;
0x0009cfb2 b 0x9c986 | goto label_46;
| label_129:
0x0009cfb4 blx 0x7cfc | fcn_00007cfc ();
0x0009cfb8 str r0, [sp, 0x40] | var_40h = r0;
0x0009cfba cmp r0, 0 |
| if (r0 != 0) {
0x0009cfbc bne.w 0x9c408 | goto label_44;
| }
0x0009cfc0 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0009cfc2 mov r2, r6 | r2 = r6;
0x0009cfc4 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0009cfc6 mov r0, sb | r0 = sb;
0x0009cfc8 str r1, [sp, 8] | var_8h = r1;
0x0009cfca strd r1, r1, [sp, 0xd4] | __asm ("strd r1, r1, [var_d8h]");
0x0009cfce add r1, sp, 0xd8 | r1 += var_d8h;
0x0009cfd0 str r1, [sp, 0xa0] | var_a0h = r1;
0x0009cfd2 str r1, [sp, 4] | var_4h = r1;
0x0009cfd4 add r1, sp, 0xd4 | r1 += var_d4h;
0x0009cfd6 str r1, [sp] | *(sp) = r1;
0x0009cfd8 str r1, [sp, 0x9c] | var_9ch = r1;
0x0009cfda bl 0x995fc | fcn_000995fc (r0, r1, r2, r3, r4, r5);
0x0009cfde str r0, [sp, 0x40] | var_40h = r0;
| if (r0 == 0) {
0x0009cfe0 cbz r0, 0x9d002 | goto label_130;
| }
0x0009cfe2 ldr r0, [sp, 0xd4] | r0 = var_d4h;
0x0009cfe4 blx 0x84f8 | fcn_000084f8 ();
0x0009cfe8 b.w 0x9c408 | goto label_44;
| label_119:
0x0009cfec ldr r0, [sp, 0x64] | r0 = var_64h;
0x0009cfee mov r1, r7 | r1 = r7;
0x0009cff0 blx 0x8514 | r0 = fcn_00008514 ();
0x0009cff4 mov ip, r0 |
0x0009cff6 cmp r0, 0 |
| if (r0 != 0) {
0x0009cff8 bne.w 0x9cb12 | goto label_47;
| }
| label_130:
0x0009d002 ldrd r4, r2, [sp, 0xd4] | __asm ("ldrd r4, r2, [var_d8h]");
0x0009d006 ldr r0, [sp, 0x50] | r0 = var_50h;
0x0009d008 mov r1, r4 | r1 = r4;
0x0009d00a bl 0x43258 | fcn_00043258 (r0, r1, r2);
0x0009d00e str r0, [sp, 0x40] | var_40h = r0;
| if (r0 == 0) {
0x0009d010 cbz r0, 0x9d020 | goto label_131;
| }
0x0009d012 b 0x9d19e | goto label_132;
| do {
0x0009d014 ldr r0, [sp, 0x50] | r0 = var_50h;
0x0009d016 bl 0x430e4 | r0 = fcn_000430e4 (r0, r1, r2);
0x0009d01a cmp r0, 0 |
| if (r0 != 0) {
0x0009d01c bne.w 0x9d19c | goto label_133;
| }
| label_131:
0x0009d020 ldr r3, [sp, 0xf0] | r3 = s;
0x0009d022 cmp r3, 0 |
0x0009d024 bne 0x9d014 |
| } while (r3 != 0);
0x0009d026 b 0x9d19e | goto label_132;
| label_66:
0x0009d028 ldr r7, [sp, 0x78] | r7 = var_78h;
0x0009d02a mov r3, sb | r3 = sb;
0x0009d02c mov sb, sl | sb = sl;
0x0009d02e mov sl, fp | sl = fp;
0x0009d030 mov fp, r3 |
0x0009d032 cmp.w sb, 0 |
0x0009d036 ite ne |
| if (sb == 0) {
0x0009d038 movne r7, 0 | r7 = 0;
| }
| if (sb != 0) {
0x0009d03a andeq r7, r7, 1 | r7 &= 1;
| }
0x0009d03e cmp r7, 0 |
| if (r7 == 0) {
0x0009d040 beq.w 0x9bc94 | goto label_0;
| }
0x0009d044 b.w 0x9bdd4 | goto label_48;
| label_61:
0x0009d048 blx 0x7e8c | fcn_00007e8c ();
| label_92:
0x0009d04c mov r0, r5 | r0 = r5;
0x0009d04e blx 0x7cfc | fcn_00007cfc ();
0x0009d052 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0009d054 cmp r3, 0 |
0x0009d056 movw r3, 0x10b | r3 = 0x10b;
0x0009d05a it ne |
| if (r3 == 0) {
0x0009d05c movne r3, 7 | r3 = 7;
| }
0x0009d05e str r3, [sp, 0x40] | var_40h = r3;
0x0009d060 b.w 0x9c1bc | goto label_16;
| label_128:
0x0009d064 mov r0, r5 | r0 = r5;
0x0009d066 mov.w sb, 7 | sb = 7;
0x0009d06a blx 0x7cfc | fcn_00007cfc ();
0x0009d06e b.w 0x9bc90 | goto label_49;
| label_125:
0x0009d072 ldr r4, [sp, 0xe0] | r4 = var_e0h;
0x0009d074 mov r6, r0 | r6 = r0;
0x0009d076 mov r5, r0 | r5 = r0;
0x0009d078 ldrd r3, r2, [sp, 0x34] | __asm ("ldrd r3, r2, [var_34h]");
0x0009d07c movs r1, 1 | r1 = 1;
0x0009d07e mov r0, r4 | r0 = r4;
0x0009d080 blx 0x7c4c | fcn_00007c4c ();
0x0009d084 b 0x9d0ae |
| while (r0 == 0x64) {
0x0009d086 cmp r6, r8 |
| if (r6 >= r8) {
0x0009d088 blt 0x9d0a0 |
0x0009d08a add.w r8, r8, 0x10 | r8 += 0x10;
0x0009d08e mov r0, r5 | r0 = r5;
0x0009d090 lsl.w r1, r8, 2 | r1 = r8 << 2;
0x0009d094 blx 0x8514 | r0 = fcn_00008514 ();
0x0009d098 mov r7, r0 | r7 = r0;
0x0009d09a cmp r0, 0 |
| if (r0 == 0) {
0x0009d09c beq 0x9d158 | goto label_134;
| }
0x0009d09e mov r5, r0 | r5 = r0;
| }
0x0009d0a0 movs r1, 0 | r1 = 0;
0x0009d0a2 mov r0, r4 | r0 = r4;
0x0009d0a4 blx 0x8050 | fcn_00008050 ();
0x0009d0a8 str.w r0, [r5, r6, lsl 2] | __asm ("str.w r0, [r5, r6, lsl 2]");
0x0009d0ac adds r6, 1 | r6++;
0x0009d0ae mov r0, r4 | r0 = r4;
0x0009d0b0 blx 0x809c | r0 = fcn_0000809c ();
0x0009d0b4 cmp r0, 0x64 |
0x0009d0b6 beq 0x9d086 |
| }
0x0009d0b8 mov r0, r4 | r0 = r4;
0x0009d0ba blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009d0be mov r8, r0 | r8 = r0;
0x0009d0c0 cmp r0, 0 |
| if (r0 != 0) {
0x0009d0c2 bne.w 0x9ce90 | goto label_50;
| }
0x0009d0c6 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0009d0c8 mov r3, r8 | r3 = r8;
0x0009d0ca movs r1, 0x1f | r1 = 0x1f;
0x0009d0cc mov r0, sb | r0 = sb;
0x0009d0ce bl 0x79148 | r0 = fcn_00079148 (r0, r1, r2, r3);
0x0009d0d2 cmp r0, 0 |
| if (r0 != 0) {
0x0009d0d4 bne 0x9d18e | goto label_135;
| }
0x0009d0d6 ldr r4, [sp, 0xf0] | r4 = s;
0x0009d0d8 movs r1, 2 | r1 = 2;
0x0009d0da ldrd r3, r2, [sp, 0x34] | __asm ("ldrd r3, r2, [var_34h]");
0x0009d0de mov r0, r4 | r0 = r4;
0x0009d0e0 blx 0x7c4c | fcn_00007c4c ();
0x0009d0e4 movs r3, 1 | r3 = 1;
0x0009d0e6 strb.w r3, [sb, 0xf0] | *((sb + 0xf0)) = r3;
0x0009d0ea cmp r6, 0 |
| if (r6 == 0) {
0x0009d0ec beq 0x9d178 | goto label_136;
| }
0x0009d0ee mov r7, r8 | r7 = r8;
0x0009d0f0 b 0x9d126 | goto label_137;
| label_51:
0x0009d0f2 movs r1, 3 | r1 = 3;
0x0009d0f4 mov r0, r4 | r0 = r4;
0x0009d0f6 blx 0x7e30 | sleep (r0);
0x0009d0fa mov r2, r7 | r2 = r7;
0x0009d0fc movs r1, 1 | r1 = 1;
0x0009d0fe mov r0, r4 | r0 = r4;
0x0009d100 blx 0x7e30 | sleep (r0);
0x0009d104 mov r0, r4 | r0 = r4;
0x0009d106 blx 0x809c | fcn_0000809c ();
0x0009d10a mov r0, r4 | r0 = r4;
0x0009d10c blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009d110 clz r3, r0 | r3 &= r0;
0x0009d114 mov r8, r0 | r8 = r0;
0x0009d116 lsrs r3, r3, 5 | r3 >>= 5;
| label_52:
0x0009d118 adds r7, 1 | r7++;
0x0009d11a cmp r6, r7 |
0x0009d11c ite le |
| if (r6 > r7) {
0x0009d11e movle r3, 0 | r3 = 0;
| }
| if (r6 > r7) {
0x0009d120 andgt r3, r3, 1 | r3 &= 1;
| goto label_138;
| }
| if (r3 == 0) {
| label_138:
0x0009d124 cbz r3, 0x9d136 | void (*0x9d136)() ();
| }
| label_137:
0x0009d126 ldr.w r2, [r5, r7, lsl 2] | offset_2 = r7 << 2;
| r2 = *((r5 + offset_2));
0x0009d12a cmp r2, r7 |
| if (r2 != r7) {
0x0009d12c bne 0x9d0f2 | goto label_51;
| }
0x0009d12e ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0009d130 mov.w r8, 0 | r8 = 0;
0x0009d134 b 0x9d118 | goto label_52;
| label_134:
0x0009d158 mov r0, r4 | r0 = r4;
0x0009d15a mov.w r8, 7 | r8 = 7;
0x0009d15e blx 0x7cfc | fcn_00007cfc ();
0x0009d162 mov r0, r5 | r0 = r5;
0x0009d164 strb.w r7, [sb, 0xf0] | *((sb + 0xf0)) = r7;
0x0009d168 blx 0x84f8 | fcn_000084f8 ();
0x0009d16c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009d16e cmp r3, 0 |
| if (r3 != 0) {
0x0009d170 bne.w 0x9cb96 | goto label_53;
| }
0x0009d174 b.w 0x9c1d6 | goto label_37;
| label_136:
0x0009d178 mov r0, r5 | r0 = r5;
0x0009d17a strb.w r6, [sb, 0xf0] | *((sb + 0xf0)) = r6;
0x0009d17e blx 0x84f8 | fcn_000084f8 ();
0x0009d182 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009d184 cmp r3, 0 |
| if (r3 != 0) {
0x0009d186 bne.w 0x9cafe | goto label_54;
| }
0x0009d18a b.w 0x9c1d6 | goto label_37;
| label_135:
0x0009d18e mov r8, r0 | r8 = r0;
0x0009d190 b 0x9ce90 | goto label_50;
| label_127:
0x0009d192 ldr r3, [sp, 0xe0] | r3 = var_e0h;
0x0009d194 mov r4, r0 | r4 = r0;
0x0009d196 str r3, [sp, 0x88] | var_88h = r3;
0x0009d198 b.w 0x9c6b8 | goto label_55;
| label_133:
0x0009d19c str r0, [sp, 0x40] | var_40h = r0;
| label_132:
0x0009d19e ldrd r1, r6, [sp, 0x108] | __asm ("ldrd r1, r6, [var_108h]");
0x0009d1a2 ldr r2, [sp, 0x84] | r2 = var_84h;
0x0009d1a4 cmp r2, r6 |
0x0009d1a6 it ge |
| if (r2 < r6) {
0x0009d1a8 movge r2, r6 | r2 = r6;
| }
| if (r2 != 0) {
0x0009d1aa cbz r2, 0x9d1ba |
0x0009d1ac ldr r0, [sp, 0x98] | r0 = var_98h;
0x0009d1ae str r1, [sp, 0x98] | var_98h = r1;
0x0009d1b0 blx 0x7e40 | fcn_00007e40 ();
0x0009d1b4 ldr r1, [sp, 0x98] | r1 = var_98h;
0x0009d1b6 mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x0009d1b8 cbnz r0, 0x9d1be | goto label_139;
| }
| }
0x0009d1ba ldr r3, [sp, 0x84] | r3 = var_84h;
0x0009d1bc subs r3, r3, r6 | r3 -= r6;
| label_139:
0x0009d1be mov r0, r1 | r0 = r1;
0x0009d1c0 str r3, [sp, 0x84] | var_84h = r3;
0x0009d1c2 blx 0x84f8 | fcn_000084f8 ();
0x0009d1c6 mov r0, r4 | r0 = r4;
0x0009d1c8 blx 0x84f8 | fcn_000084f8 ();
0x0009d1cc ldr r3, [sp, 0x40] | r3 = var_40h;
0x0009d1ce cmp r3, 0 |
| if (r3 != 0) {
0x0009d1d0 bne.w 0x9c408 | goto label_44;
| }
0x0009d1d4 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0009d1d6 cmp r3, 0 |
| if (r3 <= 0) {
0x0009d1d8 ble.w 0x9cab4 | goto label_43;
| }
0x0009d1dc ldr r3, [sp, 0x70] | r3 = var_70h;
0x0009d1de ldrb r6, [r3] | r6 = *(r3);
0x0009d1e0 subs r3, r6, 1 | r3 = r6 - 1;
0x0009d1e2 cmp r3, 0xe |
| if (r3 > 0xe) {
0x0009d1e4 bhi 0x9d2c8 | goto label_140;
| }
0x0009d1e6 ldr r3, [sp, 0x90] | r3 = var_90h;
0x0009d1e8 str.w r7, [fp, 0x18] | __asm ("str.w r7, [arg_18h]");
0x0009d1ec str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_24h]");
0x0009d1f0 ldr r3, [sp, 0x94] | r3 = var_94h;
0x0009d1f2 str.w r3, [fp, 0x10] | __asm ("str.w r3, [arg_10h]");
0x0009d1f6 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009d1f8 str.w r3, [fp, 0x1c] | __asm ("str.w r3, [arg_1ch]");
0x0009d1fc ldr r3, [sp, 0x88] | r3 = var_88h;
0x0009d1fe adds r2, r3, 1 | r2 = r3 + 1;
0x0009d200 str.w r3, [fp, 0x20] | __asm ("str.w r3, [arg_20h]");
0x0009d204 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009d206 subs r2, r2, r7 | r2 -= r7;
0x0009d208 str.w r3, [fp, 8] | __asm ("str.w r3, [arg_8h]");
0x0009d20c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009d20e str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
0x0009d212 add.w r3, r2, 0xf | r3 = r2 + 0xf;
0x0009d216 ands.w r3, r3, r2, asr 32 | r3 &= (r2 >> 32);
0x0009d21a it lo |
| if (r3 >= r3) {
0x0009d21c movlo r3, r2 | r3 = r2;
| }
0x0009d21e adds r2, r6, 1 | r2 = r6 + 1;
0x0009d220 asrs r3, r3, 4 | r3 >>= 4;
0x0009d222 cmp r2, 0xf |
0x0009d224 str.w r3, [fp] | __asm ("str.w r3, [fp]");
| if (r2 > 0xf) {
0x0009d228 bgt 0x9d244 | goto label_141;
| }
| do {
0x0009d22a mul r1, r2, r3 | r1 = r2 * r3;
0x0009d22e add.w r0, fp, r2, lsl 5 | r0 = fp + (r2 << 5);
0x0009d232 adds r2, 1 | r2++;
0x0009d234 adds r4, r1, r7 | r4 = r1 + r7;
0x0009d236 str r4, [r0, 0x38] | *((r0 + 0x38)) = r4;
0x0009d238 ldr r4, [sp, 0x54] | r4 = var_54h;
0x0009d23a adc.w r1, r4, r1, asr 31 | __asm ("adc.w r1, r4, r1, asr 31");
0x0009d23e cmp r2, 0x10 |
0x0009d240 str r1, [r0, 0x3c] | *((r0 + 0x3c)) = r1;
0x0009d242 bne 0x9d22a |
| } while (r2 != 0x10);
| label_141:
0x0009d244 mul r3, r6, r3 | r3 = r6 * r3;
0x0009d248 ldr r2, [sp, 0x54] | r2 = var_54h;
0x0009d24a ldr r4, [sp, 0x44] | r4 = var_44h;
0x0009d24c lsls r0, r6, 5 | r0 = r6 << 5;
0x0009d24e str r0, [sp, 0x54] | var_54h = r0;
0x0009d250 adds r1, r3, r7 | r1 = r3 + r7;
0x0009d252 adc.w r3, r2, r3, asr 31 | __asm ("adc.w r3, r2, r3, asr 31");
0x0009d256 ldr.w r2, [sb, 0xe8] | r2 = *((sb + 0xe8));
0x0009d25a cmp r2, r4 |
0x0009d25c it lt |
| if (r2 >= r4) {
0x0009d25e movlt r2, r4 | r2 = r4;
| }
0x0009d260 add.w r4, fp, r0 | r4 = fp + r0;
0x0009d264 strd r1, r3, [r4, 0x38] | __asm ("strd r1, r3, [r4, 0x38]");
0x0009d268 add.w r7, r2, 0x14 | r7 = r2 + 0x14;
0x0009d26c ldr r3, [r4, 0x54] | r3 = *((r4 + 0x54));
0x0009d26e cmp r7, r3 |
| if (r7 > r3) {
0x0009d270 bgt 0x9d302 | goto label_142;
| }
| label_58:
0x0009d272 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009d274 ldr r7, [sp, 0x44] | r7 = var_44h;
0x0009d276 ldr r1, [sp, 0x70] | r1 = var_70h;
0x0009d278 add.w r4, fp, r3 | r4 = fp + r3;
0x0009d27c mov r2, r7 | r2 = r7;
0x0009d27e ldr r0, [r4, 0x4c] | r0 = *((r4 + 0x4c));
0x0009d280 blx 0x7dcc | fcn_00007dcc ();
0x0009d284 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x0009d286 mov r2, r7 | r2 = r7;
0x0009d288 strd r5, r8, [sp, 0x40] | __asm ("strd r5, r8, [var_44h]");
0x0009d28c ldr r5, [sp, 0x54] | r5 = var_54h;
0x0009d28e str r7, [r4, 0x50] | *((r4 + 0x50)) = r7;
0x0009d290 movs r7, 0 | r7 = 0;
0x0009d292 str r7, [r3, r2] | *((r3 + r2)) = r7;
0x0009d294 add r3, r2 | r3 += r2;
0x0009d296 str r7, [r3, 4] | *((r3 + 4)) = r7;
0x0009d298 str r7, [r3, 8] | *((r3 + 8)) = r7;
0x0009d29a str r7, [r3, 0xc] | *((r3 + 0xc)) = r7;
0x0009d29c str r7, [r3, 0x10] | *((r3 + 0x10)) = r7;
0x0009d29e add r5, fp | r5 += fp;
| label_57:
0x0009d2a0 ldr r1, [r5, 0x4c] | r1 = *((r5 + 0x4c));
0x0009d2a2 cmp r1, 0 |
| if (r1 != 0) {
0x0009d2a4 bne.w 0x9ca52 | goto label_56;
| }
0x0009d2a8 ldr r0, [sp, 0x108] | r0 = var_108h;
0x0009d2aa subs r6, 1 | r6--;
0x0009d2ac blx 0x84f8 | fcn_000084f8 ();
0x0009d2b0 adds r2, r6, 1 | r2 = r6 + 1;
0x0009d2b2 sub.w r5, r5, 0x20 | r5 -= 0x20;
| if (r2 != r6) {
0x0009d2b6 bne 0x9d2a0 | goto label_57;
| }
| label_140:
0x0009d2c8 mov r0, r5 | r0 = r5;
0x0009d2ca blx 0x7cfc | fcn_00007cfc ();
0x0009d2ce movw r3, 0x10b | r3 = 0x10b;
0x0009d2d2 str r3, [sp, 0x40] | var_40h = r3;
0x0009d2d4 b.w 0x9c1bc | goto label_16;
| label_142:
0x0009d302 ldr r0, [r4, 0x4c] | r0 = *((r4 + 0x4c));
0x0009d304 mov r1, r7 | r1 = r7;
0x0009d306 blx 0x8514 | r0 = fcn_00008514 ();
| if (r0 != 0) {
0x0009d30a cbz r0, 0x9d31a |
0x0009d30c str r7, [r4, 0x54] | *((r4 + 0x54)) = r7;
0x0009d30e str r0, [r4, 0x4c] | *((r4 + 0x4c)) = r0;
0x0009d310 b 0x9d272 | goto label_58;
| }
0x0009d31a mov r0, r5 | r0 = r5;
0x0009d31c blx 0x7cfc | fcn_00007cfc ();
0x0009d320 movs r3, 7 | r3 = 7;
0x0009d322 str r3, [sp, 0x40] | var_40h = r3;
0x0009d324 b.w 0x9c1bc | goto label_16;
| label_96:
0x0009d3e0 movs r3, 0 | r3 = 0;
0x0009d3e2 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x0009d3e4 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9e504 */
| #include <stdint.h>
|
; (fcn) fcn.0009e504 () | void fcn_0009e504 (int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| int16_t var_0h;
| 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;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0009e504 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009e508 mov r6, r1 | r6 = r1;
0x0009e50a sub sp, 0x44 |
0x0009e50c ldr r1, [pc, 0x358] |
0x0009e50e mov r4, r2 | r4 = r2;
0x0009e510 str r0, [sp, 0x1c] | var_1ch = r0;
0x0009e512 str r2, [sp, 8] | var_8h = r2;
0x0009e514 add r1, pc | r1 = 0x13cd80;
0x0009e516 ldr r0, [r0] | r0 = *(r0);
0x0009e518 ldr r2, [pc, 0x350] | r2 = *(0x9e86c);
0x0009e51a str r0, [sp, 0x10] | var_10h = r0;
0x0009e51c ldr r2, [r1, r2] |
0x0009e51e ldr r2, [r2] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009e520 str r2, [sp, 0x3c] | var_3ch = r2;
0x0009e522 mov.w r2, 0 | r2 = 0;
0x0009e526 ldr r2, [r0, 0x28] | r2 = *((r0 + 0x28));
0x0009e528 cbz r2, 0x9e54c |
| while (r3 <= 0) {
| label_0:
0x0009e52a mov.w fp, 0 |
| label_3:
0x0009e52e ldr r2, [pc, 0x340] |
0x0009e530 ldr r3, [pc, 0x338] | r3 = *(0x9e86c);
0x0009e532 add r2, pc | r2 = 0x13cda8;
0x0009e534 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009e536 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009e538 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009e53a eors r2, r3 | r2 ^= r3;
0x0009e53c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009e540 bne.w 0x9e862 | goto label_16;
| }
0x0009e544 mov r0, fp | r0 = fp;
0x0009e546 add sp, 0x44 |
0x0009e548 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0009e54c cmp r3, 0 |
0x0009e54e ble 0x9e52a |
| }
0x0009e550 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0009e554 mov r8, r2 | r8 = r2;
0x0009e556 mov r2, r4 | r2 = r4;
0x0009e558 mov r1, r8 | r1 = r8;
0x0009e55a add.w r4, r4, r3, lsl 3 | r4 += (r3 << 3);
0x0009e55e mov r3, r2 | r3 = r2;
| do {
0x0009e560 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0009e562 adds r3, 0x18 | r3 += 0x18;
0x0009e564 cmp r2, r6 |
0x0009e566 ittt eq |
| if (r2 != r6) {
0x0009e568 ldreq r2, [r3, -0x8] | r2 = *((r3 - 0x8));
| }
| if (r2 != r6) {
0x0009e56c addeq r8, r8, 1 | r8++;
| }
| if (r2 == r6) {
0x0009e570 adds r1, r1, r2 | r1 += r2;
| }
0x0009e572 cmp r3, r4 |
0x0009e574 bne 0x9e560 |
| } while (r3 != r4);
0x0009e576 cmp r1, 0 |
0x0009e578 it ne |
| if (r1 == 0) {
0x0009e57a cmpne r8, 1 | __asm ("cmpne r8, 1");
| goto label_17;
| }
| if (r1 <= 0) {
| label_17:
0x0009e57e ble 0x9e52a | goto label_0;
| }
0x0009e580 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0009e582 ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x0009e584 str r3, [sp, 0x20] | var_20h = r3;
0x0009e586 cmp r3, 0 |
| if (r3 == 0) {
0x0009e588 beq 0x9e61c | goto label_18;
| }
| label_15:
0x0009e58a mov.w sl, 0 | sl = 0;
0x0009e58e movs r3, 1 | r3 = 1;
0x0009e590 strd r3, sl, [sp, 0x14] | __asm ("strd r3, sl, [var_14h]");
0x0009e594 mov r7, sl | r7 = sl;
0x0009e596 add r3, sp, 0x34 | r3 += var_34h;
0x0009e598 str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch]");
0x0009e59c str r3, [sp, 0x28] | var_28h = r3;
0x0009e59e add r3, sp, 0x38 | r3 += var_38h;
0x0009e5a0 str r3, [sp, 0x2c] | var_2ch = r3;
| label_4:
0x0009e5a2 ldr r3, [sp, 8] | r3 = var_8h;
0x0009e5a4 movs r5, 0 | r5 = 0;
0x0009e5a6 b 0x9e5ae |
| while (r2 == 0) {
| label_1:
0x0009e5a8 adds r3, 0x18 | r3 += 0x18;
0x0009e5aa cmp r3, r4 |
| if (r3 == r4) {
0x0009e5ac beq 0x9e5ce | goto label_19;
| }
| label_2:
0x0009e5ae ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0009e5b0 cmp r2, 0 |
0x0009e5b2 beq 0x9e5a8 |
| }
0x0009e5b4 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0009e5b6 cmp r2, r6 |
| if (r2 != r6) {
0x0009e5b8 bne 0x9e5a8 | goto label_1;
| }
0x0009e5ba cmp r5, 0 |
| if (r5 == 0) {
0x0009e5bc beq 0x9e6ae | goto label_20;
| }
0x0009e5be ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x0009e5c0 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0009e5c2 cmp r1, r2 |
0x0009e5c4 it lt |
| if (r1 >= r2) {
0x0009e5c6 movlt r5, r3 | r5 = r3;
| }
0x0009e5c8 adds r3, 0x18 | r3 += 0x18;
0x0009e5ca cmp r3, r4 |
| if (r3 != r4) {
0x0009e5cc bne 0x9e5ae | goto label_2;
| }
| label_19:
0x0009e5ce ldr r3, [sp, 0xc] | r3 = var_ch;
0x0009e5d0 add.w sl, r7, 1 | sl = r7 + 1;
0x0009e5d4 cmp r3, sl |
0x0009e5d6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009e5d8 ite le |
| if (r3 > sl) {
0x0009e5da movle sb, 0 | sb = 0;
| }
| if (r3 > sl) {
0x0009e5de mov.w sb, 1 | sb = 1;
| }
0x0009e5e2 cmp r7, 0 |
| if (r7 != 0) {
0x0009e5e4 bne 0x9e6b2 | goto label_21;
| }
0x0009e5e6 lsls r3, r3, 2 | r3 <<= 2;
0x0009e5e8 str r3, [sp, 0x14] | var_14h = r3;
| label_7:
0x0009e5ea movs r3, 0 | r3 = 0;
0x0009e5ec ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0009e5ee strd r3, r3, [sp, 0x34] | __asm ("strd r3, r3, [var_38h]");
0x0009e5f2 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0009e5f4 ldr r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x0009e5f6 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0009e5f8 str r3, [sp] | *(sp) = r3;
0x0009e5fa ldr r3, [sp, 0x28] | r3 = var_28h;
0x0009e5fc bl 0x9e294 | r0 = fcn_0009e294 (r0, r1, r2, r3, r4, r5, r6);
0x0009e600 mov fp, r0 |
0x0009e602 cmp r0, 0 |
| if (r0 == 0) {
0x0009e604 beq.w 0x9e75e | goto label_22;
| }
| label_9:
0x0009e608 movs r3, 0 | r3 = 0;
| label_11:
0x0009e60a and.w sb, sb, r3 | sb &= r3;
| label_8:
0x0009e60e movs r3, 0 | r3 = 0;
0x0009e610 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0009e612 cmp.w sb, 0 |
| if (sb == 0) {
0x0009e616 beq 0x9e52e | goto label_3;
| }
0x0009e618 mov r7, sl | r7 = sl;
0x0009e61a b 0x9e5a2 | goto label_4;
| label_18:
0x0009e61c ldr r0, [sp, 0x10] | r0 = var_10h;
0x0009e61e add r1, sp, 0x38 | r1 += var_38h;
0x0009e620 bl 0x86c60 | r0 = fcn_00086c60 (r0, r1);
0x0009e624 mov fp, r0 |
0x0009e626 cmp r0, 0 |
| if (r0 != 0) {
0x0009e628 bne 0x9e52e | goto label_3;
| }
0x0009e62a ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009e62c mov r1, r0 | r1 = r0;
0x0009e62e mov r0, r3 | r0 = r3;
0x0009e630 str r3, [sp, 0xc] | var_ch = r3;
0x0009e632 blx 0x7cd0 | r0 = fcn_00007cd0 ();
0x0009e636 mov r5, r0 | r5 = r0;
0x0009e638 cmp r0, 0 |
| if (r0 == 0) {
0x0009e63a beq.w 0x9e7fe | goto label_23;
| }
0x0009e63e ldr r0, [sp, 0xc] | r0 = var_ch;
0x0009e640 mov r1, fp | r1 = fp;
0x0009e642 blx 0x8184 | fcn_00008184 ();
0x0009e646 mov r7, fp | r7 = fp;
0x0009e648 add.w sl, r5, r0 | sl = r5 + r0;
0x0009e64c mov r3, fp | r3 = fp;
0x0009e64e mov r0, r5 | r0 = r5;
| label_14:
0x0009e650 mov r2, r0 | r2 = r0;
0x0009e652 adds r0, 1 | r0++;
0x0009e654 cmp sl, r2 |
0x0009e656 mov sb, r0 | sb = r0;
| if (sl > r2) {
0x0009e658 bhi.w 0x9e7ca | goto label_24;
| }
| label_13:
0x0009e65c cmp sl, r0 |
0x0009e65e str r7, [sp, 0x14] | var_14h = r7;
| if (sl > r0) {
0x0009e660 bhi 0x9e66a | goto label_25;
| }
0x0009e662 b 0x9e7fe | goto label_23;
| do {
| label_5:
0x0009e664 cmp sl, ip |
| if (sl < ip) {
0x0009e666 bls.w 0x9e80a | goto label_26;
| }
| label_25:
0x0009e66a movs r5, 0 | r5 = 0;
0x0009e66c mov ip, sb |
0x0009e66e mov r0, r5 | r0 = r5;
0x0009e670 mov r1, r5 | r1 = r5;
| label_6:
0x0009e672 mov r3, ip | r3 = ip;
0x0009e674 add.w ip, ip, 1 |
0x0009e678 cmp sl, r3 |
0x0009e67a mov sb, ip | sb = ip;
0x0009e67c bls 0x9e664 |
| } while (sl < r3);
0x0009e67e ldrb r7, [r3] | r7 = *(r3);
0x0009e680 sub.w r2, r5, 0x20 | r2 = r5 - 0x20;
0x0009e684 rsb.w lr, r5, 0x20 | lr = 0x20 - r5;
0x0009e688 and r3, r7, 0x7f | r3 = r7 & 0x7f;
0x0009e68c lsl.w r2, r3, r2 | r2 = r3 << r2;
0x0009e690 lsr.w lr, r3, lr | lr = r3 >> lr;
0x0009e694 lsls r3, r5 | r3 <<= r5;
0x0009e696 orr.w r2, r2, lr | r2 |= lr;
0x0009e69a adds r3, r3, r0 | r3 += r0;
0x0009e69c adc.w r1, r1, r2 | __asm ("adc.w r1, r1, r2");
0x0009e6a0 mov r0, r3 | r0 = r3;
0x0009e6a2 lsls r3, r7, 0x18 | r3 = r7 << 0x18;
| if (r3 >= r7) {
0x0009e6a4 bpl 0x9e664 | goto label_5;
| }
0x0009e6a6 adds r5, 7 | r5 += 7;
0x0009e6a8 cmp r5, 0x46 |
| if (r5 != 0x46) {
0x0009e6aa bne 0x9e672 | goto label_6;
| }
0x0009e6ac b 0x9e664 | goto label_5;
| label_20:
0x0009e6ae mov r5, r3 | r5 = r3;
0x0009e6b0 b 0x9e5a8 | goto label_1;
| label_21:
0x0009e6b2 asrs r1, r3, 2 | r1 = r3 >> 2;
0x0009e6b4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0009e6b6 adds r0, r1, r3 | r0 = r1 + r3;
0x0009e6b8 subs r0, 1 | r0--;
0x0009e6ba bl 0xab8f8 | fcn_000ab8f8 (r0, r1);
0x0009e6be ldr r3, [sp, 0x20] | r3 = var_20h;
0x0009e6c0 mul r0, r3, r0 | r0 = r3 * r0;
0x0009e6c4 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0009e6c6 cmp r3, r0 |
| if (r3 >= r0) {
0x0009e6c8 bge 0x9e6ea | goto label_27;
| }
0x0009e6ca cmp r7, 0xb |
0x0009e6cc ittt le |
| if (r7 > 0xb) {
0x0009e6ce ldrle r3, [sp, 0x14] | r3 = var_14h;
| }
| if (r7 > 0xb) {
0x0009e6d0 lslle r3, r3, 2 | r3 <<= 2;
| }
| if (r7 > 0xb) {
0x0009e6d2 strle r3, [sp, 0x14] | var_14h = r3;
| }
0x0009e6d4 ldr r3, [r5] | r3 = *(r5);
0x0009e6d6 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0009e6d8 cmp r3, 1 |
| if (r3 <= 1) {
0x0009e6da ble 0x9e6e4 | goto label_28;
| }
0x0009e6dc ldr r3, [sp, 0xc] | r3 = var_ch;
0x0009e6de subs r3, 1 | r3--;
0x0009e6e0 cmp r3, r7 |
| if (r3 != r7) {
0x0009e6e2 bne 0x9e5ea | goto label_7;
| }
| label_28:
0x0009e6e4 mov.w fp, 0 |
0x0009e6e8 b 0x9e60e | goto label_8;
| label_27:
0x0009e6ea ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0009e6ec movs r0, 0x10 | r0 = 0x10;
0x0009e6ee ldr r7, [r5, 0x14] | r7 = *((r5 + 0x14));
0x0009e6f0 str r2, [sp, 0x24] | var_24h = r2;
0x0009e6f2 blx 0x85dc | r0 = fcn_000085dc ();
0x0009e6f6 cmp r0, 0 |
| if (r0 == 0) {
0x0009e6f8 beq 0x9e7c2 | goto label_29;
| }
0x0009e6fa ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0009e6fc movs r3, 0 | r3 = 0;
0x0009e6fe str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0009e700 mov.w fp, 0 |
0x0009e704 str r3, [r0, 8] | *((r0 + 8)) = r3;
0x0009e706 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x0009e708 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0009e70a ldr r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x0009e70c str r2, [r0] | *(r0) = r2;
0x0009e70e strd r7, r3, [r0, 4] | __asm ("strd r7, r3, [r0, 4]");
0x0009e712 str r0, [r1, 0x1c] | *((r1 + 0x1c)) = r0;
0x0009e714 str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
| label_12:
0x0009e716 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0009e718 ldr r7, [r3, 0x14] | r7 = *((r3 + 0x14));
| if (r7 == 0) {
0x0009e71a cbz r7, 0x9e750 | goto label_30;
| }
0x0009e71c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0009e71e cmp r3, 0 |
0x0009e720 it gt |
| if (r3 <= 0) {
0x0009e722 movgt r8, 0 | r8 = 0;
| }
| if (r3 <= 0) {
0x0009e726 ble 0x9e73c | goto label_31;
| }
| do {
0x0009e728 ldr r3, [r7] | r3 = *(r7);
0x0009e72a ldr.w r0, [r3, r8, lsl 2] | offset_0 = r8 << 2;
| r0 = *((r3 + offset_0));
0x0009e72e add.w r8, r8, 1 | r8++;
0x0009e732 bl 0x5b434 | fcn_0005b434 (r0);
0x0009e736 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0009e738 cmp r8, r3 |
0x0009e73a blt 0x9e728 |
| } while (r8 < r3);
| label_31:
0x0009e73c ldr r0, [r7] | r0 = *(r7);
0x0009e73e blx 0x84f8 | fcn_000084f8 ();
0x0009e742 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x0009e744 blx 0x84f8 | fcn_000084f8 ();
0x0009e748 movs r3, 0 | r3 = 0;
0x0009e74a strd r3, r3, [r7] | __asm ("strd r3, r3, [r7]");
0x0009e74e str r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
| label_30:
0x0009e750 mov r0, r7 | r0 = r7;
0x0009e752 blx 0x84f8 | fcn_000084f8 ();
0x0009e756 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0009e758 movs r2, 0 | r2 = 0;
0x0009e75a str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x0009e75c b 0x9e60e | goto label_8;
| label_22:
0x0009e75e ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009e760 ldrd r1, r2, [r5] | __asm ("ldrd r1, r2, [r5]");
0x0009e764 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0009e766 str r3, [sp] | *(sp) = r3;
0x0009e768 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009e76a bl 0x3f638 | r0 = fcn_0003f638 (r0, r1, r2, r3, r4);
0x0009e76e mov fp, r0 |
0x0009e770 cmp r0, 0 |
| if (r0 != 0) {
0x0009e772 bne.w 0x9e608 | goto label_9;
| }
0x0009e776 ldr r2, [r5] | r2 = *(r5);
0x0009e778 ldr r3, [r2] | r3 = *(r2);
| if (r3 == 0) {
0x0009e77a cbz r3, 0x9e7a6 | goto label_32;
| }
0x0009e77c ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0009e77e add.w ip, r3, r2 |
0x0009e782 cmp r3, ip |
| if (r3 >= ip) {
0x0009e784 bhs 0x9e7a6 | goto label_32;
| }
| label_10:
0x0009e786 adds r0, 1 | r0++;
| do {
0x0009e788 ldrsb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0009e78c cmp r2, 0 |
0x0009e78e blt 0x9e788 |
| } while (r2 < 0);
0x0009e790 ldrb r2, [r3] | r2 = *(r3);
| if (r2 == 0) {
0x0009e792 cbz r2, 0x9e7a0 | goto label_33;
| }
| do {
0x0009e794 and r1, r2, 0x80 | r1 = r2 & 0x80;
0x0009e798 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x0009e79c orrs r1, r2 | r1 |= r2;
0x0009e79e bne 0x9e794 |
| } while (r1 != r2);
| label_33:
0x0009e7a0 adds r3, 1 | r3++;
0x0009e7a2 cmp ip, r3 |
| if (ip > r3) {
0x0009e7a4 bhi 0x9e786 | goto label_10;
| }
| label_32:
0x0009e7a6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0009e7a8 cmp r0, r3 |
0x0009e7aa ite ge |
| if (r0 < r3) {
0x0009e7ac movge r3, 0 | r3 = 0;
| }
| if (r0 >= r3) {
0x0009e7ae movlt r3, 1 | r3 = 1;
| }
0x0009e7b0 cmp r7, 0 |
0x0009e7b2 it eq |
| if (r7 != 0) {
0x0009e7b4 orreq r3, r3, 1 | r3 |= 1;
| }
| if (r3 != 0) {
0x0009e7b8 cbz r3, 0x9e7be |
0x0009e7ba str r0, [sp, 0x18] | var_18h = r0;
0x0009e7bc b 0x9e60a | goto label_11;
| }
0x0009e7be movs r3, 1 | r3 = 1;
0x0009e7c0 b 0x9e60a | goto label_11;
| label_29:
0x0009e7c2 mov sb, r0 | sb = r0;
0x0009e7c4 mov.w fp, 7 |
0x0009e7c8 b 0x9e716 | goto label_12;
| label_24:
0x0009e7ca ldrb r5, [r2] | r5 = *(r2);
0x0009e7cc sub.w r1, r3, 0x20 | r1 = r3 - 0x20;
0x0009e7d0 rsb.w ip, r3, 0x20 |
0x0009e7d4 and r2, r5, 0x7f | r2 = r5 & 0x7f;
0x0009e7d8 lsl.w r1, r2, r1 | r1 = r2 << r1;
0x0009e7dc lsr.w ip, r2, ip |
0x0009e7e0 lsls r2, r3 | r2 <<= r3;
0x0009e7e2 orr.w r1, r1, ip | r1 |= ip;
0x0009e7e6 adds r2, r2, r7 | r2 += r7;
0x0009e7e8 adc.w fp, fp, r1 | __asm ("adc.w fp, fp, r1");
0x0009e7ec mov r7, r2 | r7 = r2;
0x0009e7ee lsls r2, r5, 0x18 | r2 = r5 << 0x18;
| if (r2 >= r5) {
0x0009e7f0 bpl.w 0x9e65c | goto label_13;
| }
0x0009e7f4 adds r3, 7 | r3 += 7;
0x0009e7f6 cmp r3, 0x46 |
| if (r3 != 0x46) {
0x0009e7f8 bne.w 0x9e650 | goto label_14;
| }
0x0009e7fc b 0x9e65c | goto label_13;
| do {
| label_23:
0x0009e7fe ldr r0, [sp, 0xc] | r0 = var_ch;
0x0009e800 movw fp, 0x10b | fp = 0x10b;
0x0009e804 blx 0x7cfc | fcn_00007cfc ();
0x0009e808 b 0x9e52e | goto label_3;
| label_26:
0x0009e80a ldr r5, [sp, 0x14] | r5 = var_14h;
0x0009e80c orrs.w r3, r0, r1 | r3 = r0 | r1;
0x0009e810 ite eq |
| if (r3 != r0) {
0x0009e812 moveq r3, 1 | r3 = 1;
| }
| if (r3 == r0) {
0x0009e814 movne r3, 0 | r3 = 0;
| }
0x0009e816 orrs.w r2, r5, fp | r2 = r5 | fp;
0x0009e81a it eq |
| if (r2 != r5) {
0x0009e81c orreq r3, r3, 1 | r3 |= 1;
| }
0x0009e820 cmp r3, 0 |
0x0009e822 bne 0x9e7fe |
| } while (r3 != 0);
0x0009e824 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0009e826 mov r2, r5 | r2 = r5;
0x0009e828 str r5, [r3, 0x40] | *((r3 + 0x40)) = r5;
0x0009e82a mov r5, r3 | r5 = r3;
0x0009e82c str.w fp, [r3, 0x44] | __asm ("str.w fp, [r3, 0x44]");
0x0009e830 mov r3, fp | r3 = fp;
0x0009e832 bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x0009e836 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0009e838 ldr.w r2, [r3, 0xf4] | r2 = *((r3 + 0xf4));
0x0009e83c adds r0, r0, r2 | r0 += r2;
0x0009e83e asr.w r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0009e842 adc.w r1, r3, r1 | __asm ("adc.w r1, r3, r1");
0x0009e846 bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x0009e84a str r0, [r5, 0x3c] | *((r5 + 0x3c)) = r0;
0x0009e84c ldr r0, [sp, 0xc] | r0 = var_ch;
0x0009e84e blx 0x7cfc | r0 = fcn_00007cfc ();
0x0009e852 mov fp, r0 |
0x0009e854 cmp r0, 0 |
| if (r0 != 0) {
0x0009e856 bne.w 0x9e52e | goto label_3;
| }
0x0009e85a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0009e85c ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x0009e85e str r3, [sp, 0x20] | var_20h = r3;
0x0009e860 b 0x9e58a | goto label_15;
| label_16:
0x0009e862 blx 0x7e8c | fcn_00007e8c ();
0x0009e866 nop |
0x0009e868 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9e874 */
| #include <stdint.h>
|
; (fcn) fcn.0009e874 () | void fcn_0009e874 (int16_t arg_4h, uint32_t arg1, int16_t arg2, uint32_t arg3) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| uint32_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_34h;
| int16_t var_38h;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0009e874 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0009e878 sub sp, 0x44 |
0x0009e87a ldr r4, [pc, 0x1e0] |
0x0009e87c mov r6, r1 | r6 = r1;
0x0009e87e ldr r3, [pc, 0x1e0] | r3 = *(0x9ea62);
0x0009e880 add r4, pc | r4 = 0x13d2e2;
0x0009e882 str r2, [sp, 0x10] | var_10h = r2;
0x0009e884 ldr r2, [r2, 0x40] | r2 = *((r2 + 0x40));
0x0009e886 ldr r3, [r4, r3] |
0x0009e888 ldr.w r8, [r0] | r8 = *(r0);
0x0009e88c mov r1, r2 | r1 = r2;
0x0009e88e ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009e890 str r3, [sp, 0x3c] | var_3ch = r3;
0x0009e892 mov.w r3, 0 | r3 = 0;
| if (r6 != 0) {
0x0009e896 cbz r6, 0x9e8a4 |
0x0009e898 ldrb.w r0, [r0, 0x34] | r0 = *((r0 + 0x34));
0x0009e89c ldrb.w r3, [r8, 0xef] | r3 = *((r8 + 0xef));
0x0009e8a0 cmp r0, r3 |
| if (r0 == r3) {
0x0009e8a2 beq 0x9e92c | goto label_10;
| }
| }
| label_2:
0x0009e8a4 ldr.w sb, [sp, 0x10] | sb = var_10h;
0x0009e8a8 movs r4, 0 | r4 = 0;
0x0009e8aa add r7, sp, 0x34 | r7 += var_34h;
0x0009e8ac mov r5, r4 | r5 = r4;
0x0009e8ae add r6, sp, 0x38 | r6 += var_38h;
| label_1:
0x0009e8b0 cmp r1, r4 |
| if (r1 <= r4) {
0x0009e8b2 ble.w 0x9ea54 | goto label_11;
| }
0x0009e8b6 add.w r3, r4, r4, lsl 1 | r3 = r4 + (r4 << 1);
0x0009e8ba add.w r3, sb, r3, lsl 3 | r3 = sb + (r3 << 3);
| do {
0x0009e8be ldr r0, [r3, 0x5c] | r0 = *((r3 + 0x5c));
| if (r0 != 0) {
0x0009e8c0 cbz r0, 0x9e906 |
0x0009e8c2 add.w r1, r4, r4, lsl 1 | r1 = r4 + (r4 << 1);
0x0009e8c6 str r6, [sp] | *(sp) = r6;
0x0009e8c8 mov r3, r7 | r3 = r7;
0x0009e8ca ldr.w r2, [sb, 0x44] | r2 = *((sb + 0x44));
0x0009e8ce add.w r1, sb, r1, lsl 3 | r1 = sb + (r1 << 3);
0x0009e8d2 mov r0, r8 | r0 = r8;
0x0009e8d4 str r5, [sp, 0x34] | var_34h = r5;
0x0009e8d6 adds r1, 0x48 | r1 += 0x48;
0x0009e8d8 str r5, [sp, 0x38] | var_38h = r5;
0x0009e8da bl 0x9e294 | r0 = fcn_0009e294 (r0, r1, r2, r3, r4, r5, r6);
| if (r0 == 0) {
0x0009e8de cbz r0, 0x9e910 | goto label_12;
| }
| label_0:
0x0009e8e0 movs r3, 0 | r3 = 0;
0x0009e8e2 str r3, [sp, 0x28] | var_28h = r3;
| label_5:
0x0009e8e4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0009e8e6 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0009e8e8 str r2, [r3, 0x28] | *((r3 + 0x28)) = r2;
0x0009e8ea ldr r2, [pc, 0x178] |
0x0009e8ec ldr r3, [pc, 0x170] | r3 = *(0x9ea60);
0x0009e8ee add r2, pc | r2 = 0x13d358;
0x0009e8f0 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009e8f2 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009e8f4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009e8f6 eors r2, r3 | r2 ^= r3;
0x0009e8f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009e8fc bne.w 0x9ea58 | goto label_13;
| }
0x0009e900 add sp, 0x44 |
0x0009e902 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0009e906 adds r4, 1 | r4++;
0x0009e908 adds r3, 0x18 | r3 += 0x18;
0x0009e90a cmp r4, r1 |
0x0009e90c bne 0x9e8be |
| } while (r4 != r1);
0x0009e90e b 0x9e8e0 | goto label_0;
| label_12:
0x0009e910 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0009e912 mov r2, r4 | r2 = r4;
0x0009e914 mov r1, sb | r1 = sb;
0x0009e916 mov r0, r8 | r0 = r8;
0x0009e918 adds r4, 1 | r4++;
0x0009e91a str r3, [sp] | *(sp) = r3;
0x0009e91c ldr r3, [sp, 0x38] | r3 = var_38h;
0x0009e91e bl 0x3f638 | r0 = fcn_0003f638 (r0, r1, r2, r3, r4);
0x0009e922 cmp r0, 0 |
| if (r0 != 0) {
0x0009e924 bne 0x9e8e0 | goto label_0;
| }
0x0009e926 ldr.w r1, [sb, 0x40] | r1 = *((sb + 0x40));
0x0009e92a b 0x9e8b0 | goto label_1;
| label_10:
0x0009e92c subs r3, r2, 1 | r3 = r2 - 1;
0x0009e92e cmp r3, 3 |
| if (r3 > 3) {
0x0009e930 bhi 0x9e8a4 | goto label_2;
| }
0x0009e932 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0009e934 movs r5, 0 | r5 = 0;
0x0009e936 mov r7, r5 | r7 = r5;
0x0009e938 str r3, [sp, 8] | var_8h = r3;
0x0009e93a b 0x9e950 | goto label_4;
| if (r4 == 0) {
| label_3:
0x0009e93c cbz r4, 0x9e95a | goto label_14;
| }
0x0009e93e ldr r0, [r4, 0x24] | r0 = *((r4 + 0x24));
0x0009e940 cmp r0, 0 |
| if (r0 == 0) {
0x0009e942 beq 0x9e8a4 | goto label_2;
| }
0x0009e944 adds r5, 1 | r5++;
0x0009e946 mov r7, r6 | r7 = r6;
0x0009e948 cmp r2, r5 |
0x0009e94a add.w r3, r3, 0x18 | r3 += 0x18;
| if (r2 == r5) {
0x0009e94e beq 0x9e962 | goto label_15;
| }
| label_4:
0x0009e950 ldr r0, [r3, 0x54] | r0 = *((r3 + 0x54));
0x0009e952 ldr r4, [r3, 0x5c] | r4 = *((r3 + 0x5c));
0x0009e954 cmp r0, 0 |
| if (r0 != 0) {
0x0009e956 bne 0x9e8a4 | goto label_2;
| }
0x0009e958 b 0x9e93c | goto label_3;
| label_14:
0x0009e95a adds r5, 1 | r5++;
0x0009e95c adds r3, 0x18 | r3 += 0x18;
0x0009e95e cmp r2, r5 |
| if (r2 != r5) {
0x0009e960 bne 0x9e950 | goto label_4;
| }
| label_15:
0x0009e962 str r7, [sp, 0x28] | var_28h = r7;
0x0009e964 cmp r7, 0 |
| if (r7 == 0) {
0x0009e966 beq 0x9e8a4 | goto label_2;
| }
0x0009e968 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0009e96a ldr r1, [r3, 0x44] | r1 = *((r3 + 0x44));
0x0009e96c ldr.w r3, [r8, 0x18] | r3 = *((r8 + 0x18));
0x0009e970 cmp r1, r3 |
0x0009e972 it ge |
| if (r1 < r3) {
0x0009e974 movge r1, -1 | r1 = -1;
| }
0x0009e978 ldr r3, [pc, 0xec] |
0x0009e97a str r1, [sp, 0x2c] | var_2ch = r1;
0x0009e97c add r3, pc | r3 = 0x13d3e8;
0x0009e97e str r3, [sp, 0x1c] | var_1ch = r3;
0x0009e980 ldr r3, [pc, 0xe8] |
0x0009e982 add r3, pc | r3 = 0x13d3f2;
0x0009e984 str r3, [sp, 0x20] | var_20h = r3;
0x0009e986 movs r3, 1 | r3 = 1;
0x0009e988 str r3, [sp, 0xc] | var_ch = r3;
| label_9:
0x0009e98a ldr r3, [sp, 8] | r3 = var_8h;
0x0009e98c ldr r5, [r3, 0x5c] | r5 = *((r3 + 0x5c));
0x0009e98e cmp r5, 0 |
| if (r5 == 0) {
0x0009e990 beq 0x9ea3c | goto label_16;
| }
0x0009e992 ldr r3, [sp, 8] | r3 = var_8h;
0x0009e994 mov r1, r5 | r1 = r5;
0x0009e996 ldrd r6, r7, [sp, 0x1c] | __asm ("ldrd r6, r7, [var_1ch]");
0x0009e99a mov r0, r8 | r0 = r8;
0x0009e99c ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x0009e99e ldrd sb, sl, [r3, 0x48] | __asm ("ldrd sb, sl, [r3, 0x48]");
0x0009e9a2 ldrb.w r3, [r8, 0xef] | r3 = *((r8 + 0xef));
0x0009e9a6 str r4, [sp, 0x24] | var_24h = r4;
0x0009e9a8 mov r2, sb | r2 = sb;
0x0009e9aa cmp r3, 0 |
0x0009e9ac mov r3, sl | r3 = sl;
0x0009e9ae it eq |
| if (r3 != 0) {
0x0009e9b0 moveq r6, r7 | r6 = r7;
| }
0x0009e9b2 str r6, [sp, 0x14] | var_14h = r6;
0x0009e9b4 bl 0x9aa40 | r0 = fcn_0009aa40 (r0, r1, r2, r3);
0x0009e9b8 cmp r0, 0 |
| if (r0 != 0) {
0x0009e9ba bne 0x9e8e4 | goto label_5;
| }
0x0009e9bc cmp r4, 0 |
0x0009e9be ldr r6, [r5] | r6 = *(r5);
0x0009e9c0 mov r3, r4 | r3 = r4;
| if (r4 <= 0) {
0x0009e9c2 ble 0x9ea24 | goto label_17;
| }
0x0009e9c4 str r5, [sp, 0x18] | var_18h = r5;
0x0009e9c6 mov r4, r0 | r4 = r0;
0x0009e9c8 mov r5, sb | r5 = sb;
0x0009e9ca sub.w fp, r6, 4 |
0x0009e9ce mov sb, r3 | sb = r3;
| label_7:
0x0009e9d0 ldr r3, [fp, 4]! | r3 = *(arg_4h);
0x0009e9d4 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
| if (r2 != 0) {
0x0009e9d6 cbz r2, 0x9e9e0 |
0x0009e9d8 ldrd r7, r0, [r3, 0x3c] | __asm ("ldrd r7, r0, [r3, 0x3c]");
0x0009e9dc cmp sl, r7 |
| if (sl >= r7) {
0x0009e9de bge 0x9ea06 | goto label_18;
| }
| }
| label_6:
0x0009e9e0 ldr r5, [sp, 0x18] | r5 = var_18h;
0x0009e9e2 str r4, [r5, 8] | *((r5 + 8)) = r4;
| if (r4 == 0) {
0x0009e9e4 cbz r4, 0x9ea28 | goto label_19;
| }
| label_8:
0x0009e9e6 movs r4, 0 | r4 = 0;
0x0009e9e8 b 0x9e9f4 |
| while (r0 == 0) {
0x0009e9ea ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0009e9ec adds r4, 1 | r4++;
0x0009e9ee ldr r6, [r5] | r6 = *(r5);
0x0009e9f0 cmp r4, r3 |
| if (r4 >= r3) {
0x0009e9f2 bge 0x9ea28 | goto label_19;
| }
0x0009e9f4 ldr.w r1, [r6, r4, lsl 2] | offset_0 = r4 << 2;
| r1 = *((r6 + offset_0));
0x0009e9f8 ldrb.w r0, [r8, 0xef] | r0 = *((r8 + 0xef));
0x0009e9fc bl 0x5b8c4 | r0 = fcn_0005b8c4 (r0);
0x0009ea00 cmp r0, 0 |
0x0009ea02 beq 0x9e9ea |
| }
0x0009ea04 b 0x9e8e4 | goto label_5;
| label_18:
0x0009ea06 mov r2, r7 | r2 = r7;
0x0009ea08 mov r1, r5 | r1 = r5;
0x0009ea0a sub.w r7, r7, sl | r7 -= sl;
0x0009ea0e blx 0x7e40 | r0 = fcn_00007e40 ();
0x0009ea12 orrs r7, r0 | r7 |= r0;
| if (r7 != r0) {
0x0009ea14 bne 0x9e9e0 | goto label_6;
| }
0x0009ea16 adds r4, 1 | r4++;
0x0009ea18 cmp sb, r4 |
| if (sb != r4) {
0x0009ea1a bne 0x9e9d0 | goto label_7;
| }
0x0009ea1c ldr r5, [sp, 0x18] | r5 = var_18h;
0x0009ea1e ldr r3, [sp, 0x24] | r3 = var_24h;
0x0009ea20 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0009ea22 b 0x9e9e6 | goto label_8;
| label_17:
0x0009ea24 mov r4, r0 | r4 = r0;
0x0009ea26 str r0, [r5, 8] | *((r5 + 8)) = r0;
| label_19:
0x0009ea28 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009ea2a mov r2, r4 | r2 = r4;
0x0009ea2c mov r0, r6 | r0 = r6;
0x0009ea2e mov r1, r4 | r1 = r4;
0x0009ea30 bl 0xad04 | fcn_0000ad04 (r0, r1, r2, r3);
0x0009ea34 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0009ea36 str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x0009ea38 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0009ea3a ldr r2, [r3, 0x40] | r2 = *((r3 + 0x40));
| label_16:
0x0009ea3c ldrd r1, r3, [sp, 8] | __asm ("ldrd r1, r3, [var_8h]");
0x0009ea40 adds r1, 0x18 | r1 += 0x18;
0x0009ea42 cmp r2, r3 |
0x0009ea44 str r1, [sp, 8] | var_8h = r1;
0x0009ea46 ldr r1, [sp, 0xc] | r1 = var_ch;
0x0009ea48 add.w r1, r1, 1 | r1++;
0x0009ea4c str r1, [sp, 0xc] | var_ch = r1;
| if (r2 > r3) {
0x0009ea4e bgt 0x9e98a | goto label_9;
| }
0x0009ea50 movs r0, 0 | r0 = 0;
0x0009ea52 b 0x9e8e4 | goto label_5;
| label_11:
0x0009ea54 movs r0, 0 | r0 = 0;
0x0009ea56 b 0x9e8e0 | goto label_0;
| label_13:
0x0009ea58 blx 0x7e8c | r0 = fcn_00007e8c ();
0x0009ea5c ands r0, r0, 0x820000 | r0 &= 0x820000;
0x0009ea60 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0009ea62 movs r0, r0 |
0x0009ea64 usat16 r0, 2, r2 | __asm ("usat16 r0, 2, r2");
0x0009ea68 lsrs r1, r1, 0x14 | r1 >>= 0x14;
0x0009ea6a invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9ea70 */
| #include <stdint.h>
|
; (fcn) fcn.0009ea70 () | void fcn_0009ea70 (int16_t arg1, uint32_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0009ea70 subsle r2, fp, r0, lsl 18 | __asm ("subsle r2, fp, r0, lsl 18");
0x0009ea74 push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x0009ea78 mov r8, r0 | r8 = r0;
0x0009ea7a vpush {d8} | __asm ("vpush {d8}");
0x0009ea7e mov sb, r2 | sb = r2;
0x0009ea80 mov r6, r1 | r6 = r1;
0x0009ea82 movs r5, 0 | r5 = 0;
0x0009ea84 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
| do {
0x0009ea88 ldr.w r3, [sb] | r3 = *(sb);
| if (r3 != 0) {
0x0009ea8c cbnz r3, 0x9eabe | goto label_2;
| }
0x0009ea8e ldr r7, [r6, 0x14] | r7 = *((r6 + 0x14));
| if (r7 != 0) {
0x0009ea90 cbz r7, 0x9eaa8 |
0x0009ea92 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
| if (r3 != 0) {
0x0009ea94 cbnz r3, 0x9eac6 | goto label_3;
| }
0x0009ea96 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x0009ea98 strd r5, r5, [r7, 0x1c] | __asm ("strd r5, r5, [r7, 0x1c]");
0x0009ea9c str r5, [r7, 0x18] | *((r7 + 0x18)) = r5;
| if (r3 != 0) {
0x0009ea9e cbnz r3, 0x9ead8 | goto label_4;
| }
| label_0:
0x0009eaa0 str r5, [r7, 8] | *((r7 + 8)) = r5;
0x0009eaa2 vstr d8, [r7, 0x10] | __asm ("vstr d8, [r7, 0x10]");
0x0009eaa6 str r5, [r7, 0x30] | *((r7 + 0x30)) = r5;
| }
0x0009eaa8 ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x0009eaaa mov r2, sb | r2 = sb;
0x0009eaac vstr d8, [r6, 0x18] | __asm ("vstr d8, [r6, 0x18]");
0x0009eab0 mov r0, r8 | r0 = r8;
0x0009eab2 strh r5, [r6, 0x20] | *((r6 + 0x20)) = r5;
0x0009eab4 bl 0x9ea70 | fcn_0009ea70 (r0, r1, r2);
0x0009eab8 ldr r6, [r6, 0x10] | r6 = *((r6 + 0x10));
0x0009eaba cmp r6, 0 |
0x0009eabc bne 0x9ea88 |
| } while (r6 != 0);
| label_2:
0x0009eabe vpop {d8} | __asm ("vpop {d8}");
0x0009eac2 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_3:
0x0009eac6 ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x0009eac8 blx 0x84f8 | fcn_000084f8 ();
0x0009eacc ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x0009eace strd r5, r5, [r7, 0x1c] | __asm ("strd r5, r5, [r7, 0x1c]");
0x0009ead2 str r5, [r7, 0x18] | *((r7 + 0x18)) = r5;
0x0009ead4 cmp r3, 0 |
| if (r3 == 0) {
0x0009ead6 beq 0x9eaa0 | goto label_0;
| }
| label_4:
0x0009ead8 ldr r0, [r7, 0x40] | r0 = *((r7 + 0x40));
0x0009eada cmp r0, 0 |
| if (r0 <= 0) {
0x0009eadc ble 0x9eb1c | goto label_5;
| }
0x0009eade add.w r0, r0, r0, lsl 1 | r0 += (r0 << 1);
0x0009eae2 movs r2, 0 | r2 = 0;
0x0009eae4 add.w ip, r7, 0x5c |
0x0009eae8 lsls r0, r0, 1 | r0 <<= 1;
0x0009eaea mov.w lr, 1 | lr = 1;
| label_1:
0x0009eaee ldr.w r3, [ip, r2, lsl 2] | offset_0 = r2 << 2;
| r3 = *((ip + offset_0));
| if (r3 == 0) {
0x0009eaf2 cbz r3, 0x9eb16 | goto label_6;
| }
0x0009eaf4 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0009eaf6 str r5, [r3, 8] | *((r3 + 8)) = r5;
0x0009eaf8 str.w lr, [r3, 0x1c] | __asm ("str.w lr, [r3, 0x1c]");
0x0009eafc cmp r1, 0 |
| if (r1 <= 0) {
0x0009eafe ble 0x9eb16 | goto label_6;
| }
0x0009eb00 ldr r4, [r3] | r4 = *(r3);
0x0009eb02 add.w r1, r4, r1, lsl 2 | r1 = r4 + (r1 << 2);
0x0009eb04 lsls r1, r0, 6 | r1 = r0 << 6;
| do {
0x0009eb06 ldr r3, [r4], 4 | r3 = *(r4);
| r4 += 4;
0x0009eb0a cmp r1, r4 |
0x0009eb0c strd r5, r5, [r3, 0x50] | __asm ("strd r5, r5, [r3, 0x50]");
0x0009eb10 vstr d8, [r3, 0x58] | __asm ("vstr d8, [r3, 0x58]");
0x0009eb14 bne 0x9eb06 |
| } while (r1 != r4);
| label_6:
0x0009eb16 adds r2, 6 | r2 += 6;
0x0009eb18 cmp r2, r0 |
| if (r2 != r0) {
0x0009eb1a bne 0x9eaee | goto label_1;
| }
| label_5:
0x0009eb1c mov r2, r7 | r2 = r7;
0x0009eb1e movs r1, 0 | r1 = 0;
0x0009eb20 mov r0, r8 | r0 = r8;
0x0009eb22 bl 0x9e874 | fcn_0009e874 (r0, r1, r2, r3);
0x0009eb26 str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x0009eb2a b 0x9eaa0 | goto label_0;
0x0009eb2c bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9eb30 */
| #include <stdint.h>
|
; (fcn) fcn.0009eb30 () | void fcn_0009eb30 (int16_t arg_8h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int32_t var_4h;
| int32_t var_4h_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_37h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0009eb30 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009eb34 sub sp, 0x5c |
0x0009eb36 str r2, [sp, 0x28] | var_28h = r2;
0x0009eb38 mov r4, r2 | r4 = r2;
0x0009eb3a mov r5, r0 | r5 = r0;
0x0009eb3c mov fp, r1 |
0x0009eb3e ldr.w r2, [pc, 0x404] | r2 = *(0x0009ef44);
0x0009eb42 mov r0, r3 | r0 = r3;
0x0009eb44 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0009eb46 str r3, [sp, 0x2c] | var_2ch = r3;
0x0009eb48 ldr r3, [pc, 0x3fc] |
0x0009eb4a add r2, pc | r2 += pc;
0x0009eb4c str r1, [sp, 0x1c] | var_1ch = r1;
0x0009eb4e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0009eb50 ldr r2, [r5] | r2 = *(r5);
0x0009eb52 ldr r3, [r3] | r3 = *(0x9ef48);
0x0009eb54 str r3, [sp, 0x54] | var_54h = r3;
0x0009eb56 mov.w r3, 0 | r3 = 0;
0x0009eb5a ldr r3, [r1, 0x44] | r3 = *((r1 + 0x44));
0x0009eb5c movs r1, 0 | r1 = 0;
0x0009eb5e str r1, [r0] | *(r0) = r1;
0x0009eb60 ldr r1, [r2, 0x18] | r1 = *((r2 + 0x18));
0x0009eb62 cmp r3, r4 |
0x0009eb64 it ne |
| if (r3 != r4) {
0x0009eb66 cmpne r3, r1 | __asm ("cmpne r3, r1");
| }
| if (r3 < r4) {
0x0009eb68 blt.w 0x9ece0 | goto label_3;
| }
0x0009eb6c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0009eb6e ldr.w r4, [fp, 0x18] | r4 = *(arg_18h);
0x0009eb72 ldr.w r6, [fp, 0x1c] | r6 = *(arg_1ch);
0x0009eb76 ldr r7, [r3, 0x1c] | r7 = *((r3 + 0x1c));
0x0009eb78 ldrd r1, r3, [r5, 0x20] | __asm ("ldrd r1, r3, [r5, 0x20]");
0x0009eb7c str r4, [sp, 0x40] | var_40h = r4;
0x0009eb7e str r6, [sp, 0x44] | var_44h = r6;
0x0009eb80 cmp r6, r3 |
0x0009eb82 it eq |
| if (r6 == r3) {
0x0009eb84 cmpeq r4, r1 | __asm ("cmpeq r4, r1");
| }
0x0009eb86 str r7, [sp, 0x38] | var_38h = r7;
| if (r6 == r3) {
0x0009eb88 beq.w 0x9ed02 | goto label_22;
| }
| label_2:
0x0009eb8c ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x0009eb90 ldrb.w r7, [r2, 0xef] | r7 = *((r2 + 0xef));
0x0009eb94 movs r2, 0 | r2 = 0;
0x0009eb96 str r2, [sp, 0x3c] | var_3ch = r2;
0x0009eb98 cmp r3, 0 |
| if (r3 == 0) {
0x0009eb9a beq.w 0x9ef00 | goto label_23;
| }
0x0009eb9e mov sl, r2 | sl = r2;
0x0009eba0 mov r1, r2 | r1 = r2;
| do {
0x0009eba2 ldr r2, [r3] | r2 = *(r3);
0x0009eba4 cmp r2, 4 |
0x0009eba6 it eq |
| if (r2 != 4) {
0x0009eba8 moveq r1, 1 | r1 = 1;
| }
| if (r2 != 4) {
0x0009ebaa beq 0x9ebb2 |
0x0009ebac cmp r2, 1 |
0x0009ebae it eq |
| if (r2 == 1) {
0x0009ebb0 moveq fp, r3 | goto label_24;
| }
| }
| label_24:
0x0009ebb2 ldrb.w r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x0009ebb6 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0009ebb8 cmp r2, 0 |
0x0009ebba it ne |
| if (r2 == 0) {
0x0009ebbc movne sl, 1 | sl = 1;
| }
0x0009ebc0 cmp r3, 0 |
0x0009ebc2 bne 0x9eba2 |
| } while (r3 != 0);
0x0009ebc4 str r1, [sp, 0x14] | var_14h = r1;
0x0009ebc6 cmp r1, 0 |
| if (r1 == 0) {
0x0009ebc8 beq.w 0x9ece4 | goto label_5;
| }
0x0009ebcc ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0009ebce ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x0009ebd0 cmp r3, 0 |
| if (r3 != 0) {
0x0009ebd2 bne.w 0x9eeae | goto label_25;
| }
0x0009ebd6 cmp.w sl, 0 |
| if (sl == 0) {
0x0009ebda beq 0x9ec02 | goto label_26;
| }
| label_16:
0x0009ebdc add r4, sp, 0x3c | r4 += var_3ch;
0x0009ebde b 0x9ebf2 |
| while (r3 == 0) {
0x0009ebe0 mov r2, r4 | r2 = r4;
0x0009ebe2 mov r1, fp | r1 = fp;
0x0009ebe4 mov r0, r5 | r0 = r5;
0x0009ebe6 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
0x0009ebea ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009ebec cmp r3, 0 |
| if (r3 != 0) {
0x0009ebee bne.w 0x9ef00 | goto label_23;
| }
0x0009ebf2 ldrb.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x0009ebf6 cmp r3, 0 |
0x0009ebf8 beq 0x9ebe0 |
| }
0x0009ebfa ldr r3, [sp, 0x3c] | r3 = var_3ch;
| label_15:
0x0009ebfc cmp r3, 0 |
| if (r3 != 0) {
0x0009ebfe bne.w 0x9ef00 | goto label_23;
| }
| label_26:
0x0009ec02 mov.w r2, -1 | r2 = -1;
0x0009ec06 mov r3, r2 | r3 = r2;
0x0009ec08 cmp r7, 0 |
| if (r7 == 0) {
0x0009ec0a beq.w 0x9ef0c | goto label_27;
| }
| label_18:
0x0009ec0e strd r2, r3, [sp, 0x20] | __asm ("strd r2, r3, [var_20h]");
0x0009ec12 ldrb.w r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x0009ec16 str.w fp, [sp, 0x10] | __asm ("str.w fp, [var_10h]");
0x0009ec1a str r3, [sp, 0x18] | var_18h = r3;
0x0009ec1c add r3, sp, 0x38 | r3 += var_38h;
0x0009ec1e mov fp, r3 |
| label_1:
0x0009ec20 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0009ec22 ldr r3, [r3] | r3 = *(r3);
0x0009ec24 cmp r3, 1 |
0x0009ec26 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0009ec28 it eq |
| if (r3 != 1) {
0x0009ec2a ldreq r3, [r3, 0x10] | r3 = *((r3 + 0x10));
| }
0x0009ec2c ldr r6, [r3, 0x14] | r6 = *((r3 + 0x14));
0x0009ec2e ldrd r2, r3, [r6, 0x38] | __asm ("ldrd r2, r3, [r6, 0x38]");
0x0009ec32 ldr r4, [r6, 0x30] | r4 = *((r6 + 0x30));
0x0009ec34 ldr.w sl, [r6, 4] | sl = *((r6 + 4));
0x0009ec38 strd r2, r3, [sp, 0x40] | __asm ("strd r2, r3, [var_40h]");
0x0009ec3c ldr r3, [sp, 0x18] | r3 = var_18h;
0x0009ec3e str r4, [sp, 0x38] | var_38h = r4;
0x0009ec40 cmp r7, r3 |
| if (r7 == r3) {
0x0009ec42 beq.w 0x9ed88 | goto label_28;
| }
0x0009ec46 movs r3, 1 | r3 = 1;
0x0009ec48 cmp.w sl, 0 |
| if (sl != 0) {
0x0009ec4c beq 0x9ec5c |
0x0009ec4e mov r3, r4 | r3 = r4;
| if (r4 == 0) {
0x0009ec50 cbz r4, 0x9ec5c | goto label_29;
| }
0x0009ec52 ldr r3, [r6] | r3 = *(r6);
0x0009ec54 cmp r4, r3 |
0x0009ec56 ite hi |
| if (r4 <= r3) {
0x0009ec58 movhi r3, 0 | r3 = 0;
| }
| if (r4 <= r3) {
0x0009ec5a movls r3, 1 | r3 = 1;
| goto label_29;
| }
| }
| label_29:
0x0009ec5c add.w sb, sp, 0x37 | sb += var_37h;
0x0009ec60 add.w r8, sp, 0x48 | r8 += var_48h;
0x0009ec64 mov r1, r3 | r1 = r3;
0x0009ec66 strb.w r3, [sp, 0x37] | var_37h = r3;
| do {
| if (r4 != 0) {
0x0009ec6a cbz r4, 0x9ec86 |
0x0009ec6c ldrd r2, ip, [r5, 0x20] | __asm ("ldrd r2, ip, [r5, 0x20]");
0x0009ec70 ldrd r3, r0, [sp, 0x40] | __asm ("ldrd r3, r0, [var_40h]");
| if (r7 == 0) {
0x0009ec74 cbz r7, 0x9eca6 | goto label_30;
| }
0x0009ec76 cmp r2, r3 |
0x0009ec78 sbcs.w lr, ip, r0 | __asm ("sbcs.w lr, ip, r0");
| if (r2 < r3) {
0x0009ec7c blt 0x9ecae | goto label_31;
| }
0x0009ec7e cmp ip, r0 |
0x0009ec80 it eq |
| if (ip == r0) {
0x0009ec82 cmpeq r2, r3 | __asm ("cmpeq r2, r3");
| }
| if (ip == r0) {
0x0009ec84 beq 0x9ecae | goto label_31;
| }
| }
| label_0:
0x0009ec86 cmp r1, 0 |
| if (r1 != 0) {
0x0009ec88 bne 0x9ed78 | goto label_32;
| }
0x0009ec8a add r3, sp, 0x40 | r3 += var_40h;
0x0009ec8c ldr r1, [r6] | r1 = *(r6);
0x0009ec8e mov r2, sl | r2 = sl;
0x0009ec90 str r3, [sp] | *(sp) = r3;
0x0009ec92 mov r0, r7 | r0 = r7;
0x0009ec94 mov r3, fp | r3 = fp;
0x0009ec96 strd r8, sb, [sp, 4] | __asm ("strd r8, sb, [var_4h]");
0x0009ec9a bl 0x14fd4 | fcn_00014fd4 (r0, r1, r2, r3, r4, r5, r6);
0x0009ec9e ldr r4, [sp, 0x38] | r4 = var_38h;
0x0009eca0 ldrb.w r1, [sp, 0x37] | r1 = var_37h;
0x0009eca4 b 0x9ec6a |
| } while (1);
| label_30:
0x0009eca6 cmp r2, r3 |
0x0009eca8 sbcs.w lr, ip, r0 | __asm ("sbcs.w lr, ip, r0");
| if (r2 < r3) {
0x0009ecac blt 0x9ec86 | goto label_0;
| }
| label_31:
0x0009ecae mov lr, ip | lr = ip;
0x0009ecb0 mov ip, r3 |
0x0009ecb2 mov r3, r1 | r3 = r1;
0x0009ecb4 mov r1, r2 | r1 = r2;
0x0009ecb6 mov r2, lr | r2 = lr;
| label_10:
0x0009ecb8 str r4, [r6, 0x30] | *((r6 + 0x30)) = r4;
0x0009ecba strd ip, r0, [r6, 0x38] | __asm ("strd ip, r0, [r6, 0x38]");
0x0009ecbe cmp r3, 0 |
| if (r3 != 0) {
0x0009ecc0 bne.w 0x9ef3a | goto label_33;
| }
0x0009ecc4 cmp r2, r0 |
0x0009ecc6 it eq |
| if (r2 == r0) {
0x0009ecc8 cmpeq r1, ip | __asm ("cmpeq r1, ip");
| }
| if (r2 != r0) {
0x0009ecca beq 0x9ecce |
| label_21:
0x0009eccc str r3, [sp, 0x14] | var_14h = r3;
| }
| label_6:
0x0009ecce ldr r3, [sp, 0x10] | r3 = var_10h;
0x0009ecd0 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0009ecd2 str r3, [sp, 0x10] | var_10h = r3;
0x0009ecd4 cmp r3, 0 |
| if (r3 != 0) {
0x0009ecd6 bne 0x9ec20 | goto label_1;
| }
0x0009ecd8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009ecda cmp r3, 0 |
| if (r3 != 0) {
0x0009ecdc bne.w 0x9ef04 | goto label_34;
| }
| label_3:
0x0009ece0 movs r3, 0 | r3 = 0;
0x0009ece2 str r3, [sp, 0x14] | var_14h = r3;
| label_5:
0x0009ece4 ldr r2, [pc, 0x264] |
0x0009ece6 ldr r3, [pc, 0x260] | r3 = *(0x9ef4a);
0x0009ece8 add r2, pc | r2 = 0x13dc38;
0x0009ecea ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009ecec ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009ecee ldr r3, [sp, 0x54] | r3 = var_54h;
0x0009ecf0 eors r2, r3 | r2 ^= r3;
0x0009ecf2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0009ecf6 bne.w 0x9ef3e | goto label_35;
| }
0x0009ecfa ldr r0, [sp, 0x14] | r0 = var_14h;
0x0009ecfc add sp, 0x5c |
0x0009ecfe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x0009ed02 ldrb.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x0009ed06 cmp r3, 0 |
| if (r3 != 0) {
0x0009ed08 bne.w 0x9eb8c | goto label_2;
| }
| label_17:
0x0009ed0c cmp r7, 0 |
| if (r7 == 0) {
0x0009ed0e beq 0x9ece0 | goto label_3;
| }
0x0009ed10 ldrb r2, [r7] | r2 = *(r7);
0x0009ed12 cmp r2, 1 |
0x0009ed14 itt ne |
| if (r2 == 1) {
0x0009ed16 movne r3, 0 | r3 = 0;
| }
| if (r2 == 1) {
0x0009ed18 strne r3, [sp, 0x48] | var_48h = r3;
| }
| if (r2 == 1) {
0x0009ed1a beq.w 0x9ef12 | goto label_36;
| }
| label_19:
0x0009ed1e ldr r5, [sp, 0x28] | r5 = var_28h;
0x0009ed20 cmp r5, r3 |
| if (r5 <= r3) {
0x0009ed22 ble 0x9ed5e | goto label_37;
| }
0x0009ed24 add r1, sp, 0x48 | r1 += var_48h;
| label_4:
0x0009ed26 tst.w r2, 0xfe |
| if ((r2 & 0xfe) == 0) {
0x0009ed2a beq 0x9ed3c | goto label_38;
| }
| do {
0x0009ed2c and r3, r2, 0x80 | r3 = r2 & 0x80;
0x0009ed30 ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x0009ed34 orrs r3, r2 | r3 |= r2;
0x0009ed36 tst.w r3, 0xfe |
0x0009ed3a bne 0x9ed2c |
| } while ((r3 & 0xfe) != 0);
| label_38:
0x0009ed3c cmp r2, 0 |
| if (r2 == 0) {
0x0009ed3e beq 0x9ece0 | goto label_3;
| }
0x0009ed40 ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x0009ed42 adds r4, r7, 1 | r4 = r7 + 1;
0x0009ed44 str r4, [sp, 0x38] | var_38h = r4;
0x0009ed46 lsls r2, r3, 0x18 | r2 = r3 << 0x18;
0x0009ed48 itt pl |
| if (r2 < r3) {
0x0009ed4a movpl r0, 1 | r0 = 1;
| }
| if (r2 < r3) {
0x0009ed4c strpl r3, [sp, 0x48] | var_48h = r3;
| }
| if (r2 < r3) {
0x0009ed4e bmi.w 0x9ee90 | goto label_39;
| }
| label_12:
0x0009ed52 cmp r5, r3 |
0x0009ed54 add.w r7, r4, r0 | r7 = r4 + r0;
0x0009ed58 ldrb r2, [r4, r0] | r2 = *((r4 + r0));
0x0009ed5a str r7, [sp, 0x38] | var_38h = r7;
| if (r5 > r3) {
0x0009ed5c bgt 0x9ed26 | goto label_4;
| }
| if (r2 == 0) {
| label_37:
0x0009ed5e cbnz r2, 0x9ed62 |
0x0009ed60 str r2, [sp, 0x38] | var_38h = r2;
| }
0x0009ed62 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0009ed64 cmp r2, r3 |
0x0009ed66 mov.w r2, 0 | r2 = 0;
0x0009ed6a ite eq |
| if (r2 != r3) {
0x0009ed6c ldreq r3, [sp, 0x38] | r3 = var_38h;
| }
| if (r2 == r3) {
0x0009ed6e movne r3, 0 | r3 = 0;
| }
0x0009ed70 str r2, [sp, 0x14] | var_14h = r2;
0x0009ed72 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0009ed74 str r3, [r2] | *(r2) = r3;
0x0009ed76 b 0x9ece4 | goto label_5;
| label_32:
0x0009ed78 ldrd ip, r0, [sp, 0x40] | __asm ("ldrd ip, r0, [var_40h]");
| label_14:
0x0009ed7c movs r3, 0 | r3 = 0;
0x0009ed7e str r4, [r6, 0x30] | *((r6 + 0x30)) = r4;
0x0009ed80 strd ip, r0, [r6, 0x38] | __asm ("strd ip, r0, [r6, 0x38]");
0x0009ed84 str r3, [sp, 0x14] | var_14h = r3;
0x0009ed86 b 0x9ecce | goto label_6;
| label_28:
0x0009ed88 cmp.w sl, 0 |
| if (sl == 0) {
0x0009ed8c beq.w 0x9ee9a | goto label_40;
| }
0x0009ed90 ldr.w r8, [r6] | r8 = *(r6);
0x0009ed94 add.w r2, r8, sl | r2 = r8 + sl;
0x0009ed98 cmp r4, r2 |
0x0009ed9a ite lo |
| if (r4 >= r2) {
0x0009ed9c movlo r3, 0 | r3 = 0;
| }
| if (r4 < r2) {
0x0009ed9e movhs r3, 1 | r3 = 1;
| }
0x0009eda0 strb.w r3, [sp, 0x37] | var_37h = r3;
| if (r4 == 0) {
0x0009eda4 cbnz r4, 0x9edbe |
0x0009eda6 cmp r4, r2 |
| if (r4 >= r2) {
0x0009eda8 bhs 0x9ee80 | goto label_13;
| }
| label_8:
0x0009edaa add r1, sp, 0x40 | r1 += var_40h;
0x0009edac mov r0, r8 | r0 = r8;
0x0009edae bl 0xa5b4 | r0 = fcn_0000a5b4 (r0, r1);
0x0009edb2 add.w r4, r8, r0 | r4 = r8 + r0;
0x0009edb6 movs r3, 0 | r3 = 0;
0x0009edb8 str r4, [sp, 0x38] | var_38h = r4;
0x0009edba cmp r4, 0 |
| if (r4 == 0) {
0x0009edbc beq 0x9ee44 | goto label_41;
| }
| }
| label_7:
0x0009edbe ldrd r1, r2, [r5, 0x20] | __asm ("ldrd r1, r2, [r5, 0x20]");
0x0009edc2 mov ip, r5 |
0x0009edc4 ldrd r8, sb, [sp, 0x40] | __asm ("ldrd r8, sb, [var_40h]");
| label_11:
0x0009edc8 mov r5, r8 | r5 = r8;
0x0009edca mov r0, sb | r0 = sb;
0x0009edcc cmp r7, 0 |
| if (r7 == 0) {
0x0009edce beq 0x9ee4a | goto label_42;
| }
0x0009edd0 cmp r1, r8 |
0x0009edd2 sbcs.w lr, r2, sb | __asm ("sbcs.w lr, r2, sb");
| if (r1 >= r8) {
0x0009edd6 bge 0x9ee5a | goto label_43;
| }
| label_9:
0x0009edd8 cmp r3, 0 |
| if (r3 != 0) {
0x0009edda bne 0x9eea6 | goto label_44;
| }
0x0009eddc ldrb r3, [r4] | r3 = *(r4);
0x0009edde ldr r5, [r6] | r5 = *(r6);
| if (r3 == 0) {
0x0009ede0 cbz r3, 0x9edee | goto label_45;
| }
| do {
0x0009ede2 and r0, r3, 0x80 | r0 = r3 & 0x80;
0x0009ede6 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x0009edea orrs r0, r3 | r0 |= r3;
0x0009edec bne 0x9ede2 |
| } while (r0 != r3);
| label_45:
0x0009edee adds r4, 1 | r4++;
0x0009edf0 add r5, sl | r5 += sl;
0x0009edf2 cmp r5, r4 |
| if (r5 < r4) {
0x0009edf4 bls 0x9ee72 | goto label_46;
| }
0x0009edf6 mov r3, r4 | r3 = r4;
0x0009edf8 b 0x9ee00 |
| while (r0 == 0) {
0x0009edfa cmp r5, r3 |
0x0009edfc mov r4, r3 | r4 = r3;
| if (r5 == r3) {
0x0009edfe beq 0x9ee62 | goto label_47;
| }
0x0009ee00 mov r4, r3 | r4 = r3;
0x0009ee02 ldrb r0, [r3], 1 | r0 = *(r3);
| r3++;
0x0009ee06 cmp r0, 0 |
0x0009ee08 beq 0x9edfa |
| }
0x0009ee0a cmp r5, r4 |
| if (r5 < r4) {
0x0009ee0c bls 0x9ee72 | goto label_46;
| }
0x0009ee0e mov r0, r4 | r0 = r4;
0x0009ee10 add r1, sp, 0x48 | r1 += var_48h;
0x0009ee12 mov r5, ip | r5 = ip;
0x0009ee14 bl 0xa5b4 | fcn_0000a5b4 (r0, r1);
0x0009ee18 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0009ee1a add r4, r0 | r4 += r0;
0x0009ee1c ldr r1, [sp, 0x20] | r1 = var_20h;
0x0009ee1e ldr r0, [sp, 0x24] | r0 = var_24h;
0x0009ee20 str r4, [sp, 0x38] | var_38h = r4;
0x0009ee22 mul r2, r1, r3 | r2 = r1 * r3;
0x0009ee26 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009ee28 mla r2, r0, r3, r2 | __asm ("mla r2, r0, r3, r2");
0x0009ee2c umull r3, r1, r3, r1 | r3:r1 = r3 * r1;
0x0009ee30 adds.w r3, r3, r8 | r3 += r8;
0x0009ee34 add r2, r1 | r2 += r1;
0x0009ee36 adc.w r2, r2, sb | __asm ("adc.w r2, r2, sb");
0x0009ee3a strd r3, r2, [sp, 0x40] | __asm ("strd r3, r2, [var_40h]");
0x0009ee3e movs r3, 0 | r3 = 0;
0x0009ee40 cmp r4, 0 |
| if (r4 != 0) {
0x0009ee42 bne 0x9edbe | goto label_7;
| }
| label_41:
0x0009ee44 ldr.w r8, [r6] | r8 = *(r6);
0x0009ee48 b 0x9edaa | goto label_8;
| label_42:
0x0009ee4a cmp r1, r8 |
0x0009ee4c sbcs.w lr, r2, sb | __asm ("sbcs.w lr, r2, sb");
| if (r1 < r8) {
0x0009ee50 blt 0x9ee5a | goto label_43;
| }
0x0009ee52 cmp r2, sb |
0x0009ee54 it eq |
| if (r2 != sb) {
0x0009ee56 cmpeq r1, r8 | __asm ("cmpeq r1, r8");
| goto label_48;
| }
| if (r2 != sb) {
| label_48:
0x0009ee58 bne 0x9edd8 | goto label_9;
| }
| label_43:
0x0009ee5a mov lr, r5 | lr = r5;
0x0009ee5c mov r5, ip | r5 = ip;
0x0009ee5e mov ip, lr |
0x0009ee60 b 0x9ecb8 | goto label_10;
| label_47:
0x0009ee62 mov.w r3, 1 | r3 = 1;
0x0009ee66 str r4, [sp, 0x38] | var_38h = r4;
0x0009ee68 strb.w r3, [sp, 0x37] | var_37h = r3;
| if (r4 == 0) {
0x0009ee6c cbz r4, 0x9ee7e | goto label_49;
| }
| do {
0x0009ee6e movs r3, 1 | r3 = 1;
0x0009ee70 b 0x9edc8 | goto label_11;
| label_46:
0x0009ee72 mov.w r3, 1 | r3 = 1;
0x0009ee76 str r4, [sp, 0x38] | var_38h = r4;
0x0009ee78 strb.w r3, [sp, 0x37] | var_37h = r3;
0x0009ee7c b 0x9ee6e |
| } while (1);
| label_49:
0x0009ee7e mov r5, ip | r5 = ip;
| label_13:
0x0009ee80 movs r3, 0 | r3 = 0;
0x0009ee82 str r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x0009ee84 str r3, [sp, 0x14] | var_14h = r3;
0x0009ee86 ldrd r2, r3, [sp, 0x40] | __asm ("ldrd r2, r3, [var_40h]");
0x0009ee8a strd r2, r3, [r6, 0x38] | __asm ("strd r2, r3, [r6, 0x38]");
0x0009ee8e b 0x9ecce | goto label_6;
| label_39:
0x0009ee90 mov r0, r4 | r0 = r4;
0x0009ee92 bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009ee96 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009ee98 b 0x9ed52 | goto label_12;
| label_40:
0x0009ee9a movs r3, 1 | r3 = 1;
0x0009ee9c strb.w r3, [sp, 0x37] | var_37h = r3;
0x0009eea0 cmp r4, 0 |
| if (r4 != 0) {
0x0009eea2 bne 0x9edbe | goto label_7;
| }
0x0009eea4 b 0x9ee80 | goto label_13;
| label_44:
0x0009eea6 mov r3, r5 | r3 = r5;
0x0009eea8 mov r5, ip | r5 = ip;
0x0009eeaa mov ip, r3 |
0x0009eeac b 0x9ed7c | goto label_14;
| label_25:
0x0009eeae add.w sb, sp, 0x3c | sb += var_3ch;
0x0009eeb2 mov r1, fp | r1 = fp;
0x0009eeb4 mov r2, sb | r2 = sb;
0x0009eeb6 mov r0, r5 | r0 = r5;
0x0009eeb8 ldrb.w r8, [fp, 0x20] | r8 = *(arg_20h);
0x0009eebc bl 0x9ea70 | fcn_0009ea70 (r0, r1, r2);
0x0009eec0 ldr r3, [sp, 0x3c] | r3 = var_3ch;
| if (r3 != 0) {
0x0009eec2 cbnz r3, 0x9ef00 | goto label_23;
| }
0x0009eec4 mov r3, r4 | r3 = r4;
0x0009eec6 mov r4, r8 | r4 = r8;
0x0009eec8 mov r8, r3 | r8 = r3;
0x0009eeca b 0x9eee8 |
| while (r3 == 0) {
0x0009eecc mov r2, sb | r2 = sb;
0x0009eece mov r1, fp | r1 = fp;
0x0009eed0 mov r0, r5 | r0 = r5;
0x0009eed2 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
| if (r4 == 0) {
0x0009eed6 cbnz r4, 0x9eee4 |
0x0009eed8 ldrd r2, r3, [fp, 0x18] | __asm ("ldrd r2, r3, [arg_18h]");
0x0009eedc cmp r6, r3 |
0x0009eede it eq |
| if (r6 == r3) {
0x0009eee0 cmpeq r8, r2 | __asm ("cmpeq r8, r2");
| }
| if (r6 == r3) {
0x0009eee2 beq 0x9ef36 | goto label_50;
| }
| }
0x0009eee4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
| if (r3 != 0) {
0x0009eee6 cbnz r3, 0x9ef00 | goto label_23;
| }
0x0009eee8 ldrb.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x0009eeec cmp r3, 0 |
0x0009eeee beq 0x9eecc |
| }
0x0009eef0 movs r3, 0 | r3 = 0;
| label_20:
0x0009eef2 cmp.w sl, 0 |
| if (sl == 0) {
0x0009eef6 beq.w 0x9ebfc | goto label_15;
| }
0x0009eefa cmp r3, 0 |
| if (r3 == 0) {
0x0009eefc beq.w 0x9ebdc | goto label_16;
| }
| label_23:
0x0009ef00 str r3, [sp, 0x14] | var_14h = r3;
0x0009ef02 b 0x9ece4 | goto label_5;
| label_34:
0x0009ef04 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0009ef06 ldr r7, [r3, 0x30] | r7 = *((r3 + 0x30));
0x0009ef08 str r7, [sp, 0x38] | var_38h = r7;
0x0009ef0a b 0x9ed0c | goto label_17;
| label_27:
0x0009ef0c movs r2, 1 | r2 = 1;
0x0009ef0e movs r3, 0 | r3 = 0;
0x0009ef10 b 0x9ec0e | goto label_18;
| label_36:
0x0009ef12 ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x0009ef14 adds r4, r7, 1 | r4 = r7 + 1;
0x0009ef16 str r4, [sp, 0x38] | var_38h = r4;
0x0009ef18 lsls r1, r3, 0x18 | r1 = r3 << 0x18;
0x0009ef1a it pl |
| if (r1 < r3) {
0x0009ef1c strpl r3, [sp, 0x48] | var_48h = r3;
| }
0x0009ef1e bmi 0x9ef28 |
| while (1) {
0x0009ef20 adds r7, r4, r2 | r7 = r4 + r2;
0x0009ef22 ldrb r2, [r4, r2] | r2 = *((r4 + r2));
0x0009ef24 str r7, [sp, 0x38] | var_38h = r7;
0x0009ef26 b 0x9ed1e | goto label_19;
0x0009ef28 add r1, sp, 0x48 | r1 += var_48h;
0x0009ef2a mov r0, r4 | r0 = r4;
0x0009ef2c bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009ef30 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0009ef32 mov r2, r0 | r2 = r0;
0x0009ef34 b 0x9ef20 |
| }
| label_50:
0x0009ef36 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0009ef38 b 0x9eef2 | goto label_20;
| label_33:
0x0009ef3a movs r3, 0 | r3 = 0;
0x0009ef3c b 0x9eccc | goto label_21;
| label_35:
0x0009ef3e blx 0x7e8c | fcn_00007e8c ();
0x0009ef42 nop |
0x0009ef44 adc r0, r6, 2 | __asm ("adc r0, r6, 2");
0x0009ef48 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0009ef4a movs r0, r0 |
0x0009ef4c vaddl.s32 q0, d8, d2 | __asm ("vaddl.s32 q0, d8, d2");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x9f004 */
| #include <stdint.h>
|
; (fcn) fcn.0009f004 () | void fcn_0009f004 (int16_t arg1, int16_t arg3) {
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r2 = arg3;
0x0009f004 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0009f008 mov r4, r0 | r4 = r0;
0x0009f00a ldr r5, [pc, 0xd0] |
0x0009f00c sub sp, 0x14 |
0x0009f00e mov r8, r2 | r8 = r2;
0x0009f010 add r3, sp, 4 | r3 += var_4h_2;
0x0009f012 ldr r1, [pc, 0xcc] | r1 = *(0x9f0e2);
0x0009f014 add r5, pc | r5 = 0x13e0f6;
0x0009f016 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0009f018 ldr.w r0, [r8] | r0 = *(r8);
0x0009f01c ldr r1, [r5, r1] |
0x0009f01e ldr r1, [r1] | r1 = imp._ITM_deregisterTMCloneTable;
0x0009f020 str r1, [sp, 0xc] | var_ch = r1;
0x0009f022 mov.w r1, 0 | r1 = 0;
0x0009f026 mov r1, r4 | r1 = r4;
0x0009f028 bl 0x9eb30 | fcn_0009eb30 (r0, r1, r2, r3, r4, r5, r6);
0x0009f02c ldr r6, [sp, 4] | r6 = var_4h_2;
0x0009f02e mov sb, r0 | sb = r0;
0x0009f030 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0009f032 ldr r4, [r3, 0x40] | r4 = *((r3 + 0x40));
0x0009f034 cmp r6, 0 |
| if (r6 == 0) {
0x0009f036 beq 0x9f0c4 | goto label_2;
| }
0x0009f038 ldrb r5, [r6] | r5 = *(r6);
0x0009f03a lsls r3, r5, 0x18 | r3 = r5 << 0x18;
0x0009f03c it pl |
| if (r3 < r5) {
0x0009f03e movpl r3, 1 | r3 = 1;
| }
| if (r3 < r5) {
0x0009f040 bmi 0x9f0c8 | goto label_3;
| }
| label_1:
0x0009f042 subs r5, 2 | r5 -= 2;
0x0009f044 add r3, r6 | r3 += r6;
0x0009f046 asrs r6, r5, 0x1f | r6 = r5 >> 0x1f;
0x0009f048 str r3, [sp, 4] | var_4h_2 = r3;
| label_0:
0x0009f04a cmp r4, 0 |
| if (r4 <= 0) {
0x0009f04c ble 0x9f0a8 | goto label_4;
| }
0x0009f04e ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x0009f052 subs r2, r4, 1 | r2 = r4 - 1;
0x0009f054 ldr.w sl, [r8, 0x18] | sl = *((r8 + 0x18));
0x0009f058 asr.w fp, r2, 0x1f |
0x0009f05c ldr r7, [sp, 4] | r7 = var_4h_2;
0x0009f05e mov r1, r2 | r1 = r2;
0x0009f060 adds r0, r3, r4 | r0 = r3 + r4;
0x0009f062 mov r4, fp | r4 = fp;
0x0009f064 add.w lr, r0, r0, lsl 1 | lr = r0 + (r0 << 1);
0x0009f068 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0009f06c lsl.w lr, lr, 3 | lr <<= 3;
0x0009f070 add.w r3, sl, r3, lsl 3 | r3 = sl + (r3 << 3);
0x0009f074 add.w ip, sl, lr |
| do {
0x0009f078 strd r1, r4, [r3, 0x10] | __asm ("strd r1, r4, [r3, 0x10]");
0x0009f07c subs r1, 1 | r1--;
0x0009f07e str r7, [r3] | *(r3) = r7;
0x0009f080 sbc r4, r4, 0 | __asm ("sbc r4, r4, 0");
0x0009f084 strd r5, r6, [r3, 8] | __asm ("strd r5, r6, [r3, 8]");
0x0009f088 adds r3, 0x18 | r3 += 0x18;
0x0009f08a cmp r3, ip |
0x0009f08c bne 0x9f078 |
| } while (r3 != ip);
0x0009f08e sub.w lr, lr, 0x18 | lr -= 0x18;
0x0009f092 subs r2, r2, r2 | r2 -= r2;
0x0009f094 add.w r3, sl, lr | r3 = sl + lr;
0x0009f098 str.w r0, [r8, 8] | __asm ("str.w r0, [r8, 8]");
0x0009f09c strd r2, fp, [r3, 0x10] | __asm ("strd r2, fp, [r3, 0x10]");
0x0009f0a0 str.w r7, [sl, lr] | __asm ("str.w r7, [sl, lr]");
0x0009f0a4 strd r5, r6, [r3, 8] | __asm ("strd r5, r6, [r3, 8]");
| label_4:
0x0009f0a8 ldr r2, [pc, 0x38] |
0x0009f0aa ldr r3, [pc, 0x34] | r3 = *(0x9f0e2);
0x0009f0ac add r2, pc | r2 = 0x13e194;
0x0009f0ae ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x0009f0b0 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009f0b2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0009f0b4 eors r2, r3 | r2 ^= r3;
0x0009f0b6 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0009f0ba bne 0x9f0d6 |
0x0009f0bc mov r0, sb | r0 = sb;
0x0009f0be add sp, 0x14 |
0x0009f0c0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0009f0c4 mov r5, r6 | r5 = r6;
0x0009f0c6 b 0x9f04a | goto label_0;
| label_3:
0x0009f0c8 add r1, sp, 8 | r1 += var_8h;
0x0009f0ca mov r0, r6 | r0 = r6;
0x0009f0cc bl 0xa648 | fcn_0000a648 (r0, r1);
0x0009f0d0 ldr r5, [sp, 8] | r5 = var_8h;
0x0009f0d2 mov r3, r0 | r3 = r0;
0x0009f0d4 b 0x9f042 | goto label_1;
| }
0x0009f0d6 blx 0x7e8c | fcn_00007e8c ();
0x0009f0da nop |
0x0009f0dc ldcl p0, c0, [ip], -8 | __asm ("ldcl p0, c0, [ip], -8");
0x0009f0e0 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0009f0e2 movs r0, r0 |
0x0009f0e4 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa0070 */
| #include <stdint.h>
|
; (fcn) fcn.000a0070 () | void fcn_000a0070 (int16_t arg_0h, int16_t arg_10h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_5ch, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_ch_3;
| int16_t var_0h_2;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_58h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_78h;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_8ch;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| label_20:
0x000084cc invalid | void (*0x84d0)() ();
0x000a0070 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a0074 mov sb, r0 | sb = r0;
0x000a0076 ldrd r4, r3, [r2] | __asm ("ldrd r4, r3, [r2]");
0x000a007a ldr r0, [pc, 0x1e8] |
0x000a007c ldr r5, [r2, 0x1c] | r5 = *((r2 + 0x1c));
0x000a007e mul r1, r3, r1 | r1 = r3 * r1;
0x000a0082 ldr r2, [pc, 0x1e4] | r2 = *(0xa026a);
0x000a0084 vpush {d8} | __asm ("vpush {d8}");
0x000a0088 add r0, pc | r0 = 0x1402f2;
0x000a008a ldrb.w r3, [sb, 0x22] | r3 = *((sb + 0x22));
0x000a008e sub sp, 0x14 |
0x000a0090 ldr r2, [r0, r2] |
0x000a0092 ldr r7, [r4] | r7 = *(r4);
0x000a0094 add.w r1, r1, r1, lsl 1 | r1 += (r1 << 1);
0x000a0098 ldr r2, [r2] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a009a str r2, [sp, 0xc] | var_ch = r2;
0x000a009c mov.w r2, 0 | r2 = 0;
0x000a00a0 add.w r5, r5, r1, lsl 2 | r5 += (r1 << 2);
0x000a00a4 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
| if (r3 == 0) {
0x000a00a6 cbz r3, 0xa00ec | goto label_46;
| }
0x000a00a8 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x000a00ac ldr r3, [r3] | r3 = *(r3);
0x000a00ae cmp r3, 1 |
| if (r3 == 1) {
0x000a00b0 beq 0xa00ec | goto label_46;
| }
0x000a00b2 cmp r0, 0 |
0x000a00b4 itt gt |
| if (r0 <= 0) {
0x000a00b6 ldrgt r2, [r4, 0x40] | r2 = *((r4 + 0x40));
| }
| if (r0 <= 0) {
0x000a00b8 movgt r3, 0 | r3 = 0;
| }
| if (r0 <= 0) {
0x000a00ba ble 0xa00ca | goto label_0;
| }
| do {
0x000a00bc strd r2, r2, [r5, 4] | __asm ("strd r2, r2, [r5, 4]");
0x000a00c0 adds r3, 1 | r3++;
0x000a00c2 ldr r1, [r7, 0x18] | r1 = *((r7 + 0x18));
0x000a00c4 adds r5, 0xc | r5 += 0xc;
0x000a00c6 cmp r3, r1 |
0x000a00c8 blt 0xa00bc |
| } while (r3 < r1);
| do {
| label_0:
0x000a00ca movs r0, 0 | r0 = 0;
| label_2:
0x000a00cc ldr r2, [pc, 0x19c] |
0x000a00ce ldr r3, [pc, 0x198] | r3 = *(0xa026a);
0x000a00d0 add r2, pc | r2 = 0x140340;
0x000a00d2 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a00d4 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a00d6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000a00d8 eors r2, r3 | r2 ^= r3;
0x000a00da mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a00de bne.w 0xa025e | goto label_47;
| }
0x000a00e2 add sp, 0x14 |
0x000a00e4 vpop {d8} | __asm ("vpop {d8}");
0x000a00e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_46:
0x000a00ec ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x000a00f0 movs r2, 0 | r2 = 0;
0x000a00f2 str r2, [sp, 8] | var_8h = r2;
| if (r3 == 0) {
0x000a00f4 cbz r3, 0xa011c | goto label_48;
| }
| label_3:
0x000a00f6 cmp r0, 0 |
0x000a00f8 ble 0xa00ca |
| } while (r0 <= 0);
0x000a00fa ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x000a00fe movs r2, 0 | r2 = 0;
| do {
0x000a0100 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000a0102 adds r3, 0xc | r3 += 0xc;
0x000a0104 adds r2, 1 | r2++;
0x000a0106 adds r5, 0xc | r5 += 0xc;
0x000a0108 str r1, [r5, -0x8] | *((r5 - 0x8)) = r1;
0x000a010c ldr r1, [r3, -0x4] | r1 = *((r3 - 0x4));
0x000a0110 str r1, [r5, -0x4] | *((r5 - 0x4)) = r1;
0x000a0114 ldr r1, [r7, 0x18] | r1 = *((r7 + 0x18));
0x000a0116 cmp r2, r1 |
0x000a0118 blt 0xa0100 |
| } while (r2 < r1);
0x000a011a b 0xa00ca | goto label_0;
| label_48:
0x000a011c vldr d8, [r4, 0x20] | __asm ("vldr d8, [r4, 0x20]");
0x000a0120 mov r2, sb | r2 = sb;
0x000a0122 b 0xa012a |
| while (r2 != 0) {
0x000a0124 ldr r3, [r2] | r3 = *(r2);
0x000a0126 cmp r3, 1 |
| if (r3 != 1) {
0x000a0128 bne 0xa0132 | goto label_49;
| }
0x000a012a mov fp, r2 |
0x000a012c ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000a012e cmp r2, 0 |
0x000a0130 bne 0xa0124 |
| }
| label_49:
0x000a0132 ldr.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x000a0136 mov r6, fp | r6 = fp;
0x000a0138 ldrb.w sl, [fp, 0x20] | sl = *(arg_20h);
0x000a013c str r3, [sp] | *(sp) = r3;
0x000a013e ldr.w r3, [fp, 0x1c] | r3 = *(arg_1ch);
0x000a0142 str r3, [sp, 4] | var_4h = r3;
0x000a0144 b 0xa0148 |
| while (r6 != 0) {
0x000a0146 ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x000a0148 ldr r3, [r6] | r3 = *(r6);
0x000a014a add.w r0, r0, r0, lsl 1 | r0 += (r0 << 1);
0x000a014e movs r1, 0 | r1 = 0;
0x000a0150 lsls r0, r0, 2 | r0 <<= 2;
0x000a0152 cmp r3, 5 |
0x000a0154 ite ne |
| if (r3 == 5) {
0x000a0156 ldrne r8, [r6, 0x10] | r8 = *((r6 + 0x10));
| }
| if (r3 == 5) {
0x000a015a mov r8, r6 | r8 = r6;
| }
0x000a015c blx 0x7f18 | fcn_00007f18 ();
0x000a0160 str.w r0, [r8, 0x28] | __asm ("str.w r0, [r8, 0x28]");
0x000a0164 cmp r0, 0 |
| if (r0 == 0) {
0x000a0166 beq 0xa0216 | goto label_50;
| }
0x000a0168 ldr r2, [r7, 0x18] | r2 = *((r7 + 0x18));
0x000a016a movs r1, 0 | r1 = 0;
0x000a016c add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x000a0170 lsls r2, r2, 2 | r2 <<= 2;
0x000a0172 blx 0x8264 | fcn_00008264 ();
0x000a0176 ldr r6, [r6, 0xc] | r6 = *((r6 + 0xc));
0x000a0178 cmp r6, 0 |
0x000a017a bne 0xa0146 |
| }
0x000a017c add.w r8, sp, 8 | r8 += var_8h;
0x000a0180 mov r1, fp | r1 = fp;
0x000a0182 mov r2, r8 | r2 = r8;
0x000a0184 mov r0, r4 | r0 = r4;
0x000a0186 bl 0x9ea70 | fcn_0009ea70 (r0, r1, r2);
0x000a018a ldrb r2, [r4, 6] | r2 = *((r4 + 6));
| if (r2 != 0) {
0x000a018c cbnz r2, 0xa01e0 | goto label_4;
| }
0x000a018e ldr r2, [sp, 8] | r2 = var_8h;
0x000a0190 movs r6, 1 | r6 = 1;
| if (r2 == 0) {
| label_5:
0x000a0192 cbz r2, 0xa01ca | goto label_51;
| }
0x000a0194 b 0xa01e0 | goto label_4;
| do {
| label_1:
0x000a0196 ldr r3, [sp, 8] | r3 = var_8h;
| if (r3 == 0) {
0x000a0198 cbnz r3, 0xa01a4 |
0x000a019a mov r2, r8 | r2 = r8;
0x000a019c mov r1, fp | r1 = fp;
0x000a019e mov r0, r4 | r0 = r4;
0x000a01a0 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
| }
0x000a01a4 ldrb.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x000a01a8 strb r6, [r4, 7] | *((r4 + 7)) = r6;
0x000a01aa str r6, [r4, 0x58] | *((r4 + 0x58)) = r6;
0x000a01ac strb r3, [r4, 6] | *((r4 + 6)) = r3;
0x000a01ae ldrd r0, r1, [fp, 0x18] | __asm ("ldrd r0, r1, [arg_18h]");
0x000a01b2 strd r0, r1, [r4, 0x20] | __asm ("strd r0, r1, [r4, 0x20]");
| if (r3 != 0) {
0x000a01b6 cbnz r3, 0xa01e0 | goto label_4;
| }
0x000a01b8 ldr.w r3, [fp] | r3 = *(fp);
0x000a01bc cmp r3, 1 |
| if (r3 != 1) {
0x000a01be bne 0xa01fe | goto label_52;
| }
0x000a01c0 mov r1, r8 | r1 = r8;
0x000a01c2 mov r0, r4 | r0 = r4;
0x000a01c4 bl 0x86e60 | r0 = fcn_00086e60 (r0, r1);
| if (r0 == 0) {
0x000a01c8 cbz r0, 0xa01d8 | goto label_53;
| }
| label_51:
0x000a01ca ldrb r3, [r4, 7] | r3 = *((r4 + 7));
0x000a01cc cmp r3, 0 |
0x000a01ce bne 0xa0196 |
| } while (r3 != 0);
0x000a01d0 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000a01d2 blx 0x7cfc | fcn_00007cfc ();
0x000a01d6 b 0xa0196 | goto label_1;
| label_53:
0x000a01d8 ldr r2, [sp, 8] | r2 = var_8h;
0x000a01da ldrb r3, [r4, 6] | r3 = *((r4 + 6));
| if (r2 != 0) {
0x000a01dc cbnz r2, 0xa020e | goto label_54;
| }
| if (r3 == 0) {
0x000a01de cbz r3, 0xa0204 | goto label_55;
| }
| label_4:
0x000a01e0 movs r2, 0 | r2 = 0;
0x000a01e2 vstr d8, [r4, 0x20] | __asm ("vstr d8, [r4, 0x20]");
0x000a01e6 strb r2, [r4, 6] | *((r4 + 6)) = r2;
0x000a01e8 cmp.w sl, 0 |
| if (sl == 0) {
0x000a01ec beq 0xa021a | goto label_56;
| }
0x000a01ee ldr r0, [sp, 8] | r0 = var_8h;
| label_8:
0x000a01f0 strb.w sl, [fp, 0x20] | *(arg_20h) = sl;
| label_6:
0x000a01f4 cmp r0, 0 |
| if (r0 != 0) {
0x000a01f6 bne.w 0xa00cc | goto label_2;
| }
0x000a01fa ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x000a01fc b 0xa00f6 | goto label_3;
| label_52:
0x000a01fe ldr r2, [sp, 8] | r2 = var_8h;
0x000a0200 cmp r2, 0 |
| if (r2 != 0) {
0x000a0202 bne 0xa01e0 | goto label_4;
| }
| label_55:
0x000a0204 ldr r1, [r7, 0x18] | r1 = *((r7 + 0x18));
0x000a0206 mov r0, fp | r0 = fp;
0x000a0208 bl 0xa860 | fcn_0000a860 (r0, r1);
0x000a020c ldrb r3, [r4, 6] | r3 = *((r4 + 6));
| label_54:
0x000a020e cmp r3, 0 |
| if (r3 != 0) {
0x000a0210 bne 0xa01e0 | goto label_4;
| }
0x000a0212 ldr r2, [sp, 8] | r2 = var_8h;
0x000a0214 b 0xa0192 | goto label_5;
| label_50:
0x000a0216 movs r0, 7 | r0 = 7;
0x000a0218 b 0xa00cc | goto label_2;
| label_56:
0x000a021a mov r2, r8 | r2 = r8;
0x000a021c mov r1, fp | r1 = fp;
0x000a021e mov r0, r4 | r0 = r4;
0x000a0220 bl 0x9ea70 | fcn_0009ea70 (r0, r1, r2);
0x000a0224 ldr r2, [sp, 8] | r2 = var_8h;
| if (r2 != 0) {
0x000a0226 cbnz r2, 0xa024c | goto label_57;
| }
0x000a0228 b 0xa0242 | goto label_58;
| label_7:
0x000a022a ldrd r1, r2, [fp, 0x18] | __asm ("ldrd r1, r2, [arg_18h]");
0x000a022e ldrd r3, r6, [sp] | __asm ("ldrd r3, r6, [sp]");
0x000a0232 ldr r0, [sp, 8] | r0 = var_8h;
0x000a0234 cmp r6, r2 |
0x000a0236 it eq |
| if (r6 != r2) {
0x000a0238 cmpeq r3, r1 | __asm ("cmpeq r3, r1");
| goto label_59;
| }
| if (r6 == r2) {
| label_59:
0x000a023a beq 0xa01f4 | goto label_6;
| }
0x000a023c cmp r0, 0 |
| if (r0 != 0) {
0x000a023e bne.w 0xa00cc | goto label_2;
| }
| label_58:
0x000a0242 mov r2, r8 | r2 = r8;
0x000a0244 mov r1, fp | r1 = fp;
0x000a0246 mov r0, r4 | r0 = r4;
0x000a0248 bl 0x5bd04 | fcn_0005bd04 (r0, r1, r2);
| label_57:
0x000a024c ldrb.w r2, [fp, 0x20] | r2 = *(arg_20h);
0x000a0250 cmp r2, 0 |
| if (r2 == 0) {
0x000a0252 beq 0xa022a | goto label_7;
| }
0x000a0254 movw r3, 0x10b | r3 = 0x10b;
0x000a0258 mov r0, r3 | r0 = r3;
0x000a025a str r3, [sp, 8] | var_8h = r3;
0x000a025c b 0xa00cc | goto label_2;
| label_47:
0x000a025e blx 0x7e8c | fcn_00007e8c ();
0x000a0262 nop |
| if (r2 > 0) {
0x000a0264 bgt 0xa0278 | goto label_60;
| }
0x000a0266 movs r2, r0 | r2 = r0;
0x000a0268 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000a026a movs r0, r0 |
| if (r0 < r0) {
0x000a026c blt 0xa01f0 | goto label_8;
| }
0x000a026e movs r2, r0 | r2 = r0;
0x000a0270 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a0274 mov r4, r0 | r4 = r0;
0x000a0276 mov r5, r2 | r5 = r2;
| label_60:
0x000a0278 ldr r0, [r2] | r0 = *(r2);
0x000a027a sub sp, 0x94 |
0x000a027c mov r6, r1 | r6 = r1;
0x000a027e ldr.w r2, [pc, 0x9b4] | r2 = *(0x000a0c34);
0x000a0282 ldr.w r3, [pc, 0x9b4] |
0x000a0286 ldr.w r1, [pc, 0x9b4] |
0x000a0288 adds r4, r6, r6 | r4 = r6 + r6;
0x000a028a add r2, pc | r2 += pc;
0x000a028c str r4, [sp, 0xc] | var_ch_2 = r4;
0x000a028e ldr.w r4, [pc, 0x9b0] | r4 = *(0x000a0c40);
0x000a0292 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000a0294 add r1, pc | r1 = 0x140ed6;
0x000a0296 add r4, pc | r4 += pc;
0x000a0298 ldr r3, [r3] | r3 = *(0xa0c3a);
0x000a029a str r3, [sp, 0x8c] | var_8ch = r3;
0x000a029c mov.w r3, 0 | r3 = 0;
0x000a02a0 blx 0x7f0c | r0 = fcn_00007f0c ();
0x000a02a4 cmp r0, 0 |
| if (r0 == 0) {
0x000a02a6 beq.w 0xa08b4 | goto label_61;
| }
0x000a02aa cmp r6, 1 |
0x000a02ac mov fp, r0 |
| if (r6 > 1) {
0x000a02ae bgt 0xa039c | goto label_62;
| }
0x000a02b0 ldr.w r5, [pc, 0x990] | r5 = *(0x000a0c44);
0x000a02b4 ldr r3, [r0] | r3 = *(r0);
0x000a02b6 add r5, pc | r5 += pc;
0x000a02b8 str r3, [sp, 0x10] | var_10h = r3;
| do {
| label_9:
0x000a02ba ldr.w r3, [fp, 0x10] | r3 = *(arg_10h);
0x000a02be cmp r3, 0 |
| if (r3 == 0) {
0x000a02c0 beq.w 0xa08f0 | goto label_63;
| }
0x000a02c4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000a02c6 movs r6, 0 | r6 = 0;
0x000a02c8 ldr.w r7, [fp, 0x5c] | r7 = *(arg_5ch);
0x000a02cc strd r6, r6, [sp, 0x6c] | __asm ("strd r6, r6, [sp, 0x6c]");
0x000a02d0 strd r6, r6, [sp, 0x74] | __asm ("strd r6, r6, [sp, 0x74]");
0x000a02d4 strd r6, r6, [sp, 0x7c] | __asm ("strd r6, r6, [sp, 0x7c]");
0x000a02d8 str r6, [sp, 0x84] | var_84h = r6;
0x000a02da ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000a02dc str.w fp, [sp, 0x68] | __asm ("str.w fp, [var_68h]");
0x000a02e0 str r3, [sp, 0x6c] | var_6ch = r3;
0x000a02e2 cmp r7, 0 |
| if (r7 == 0) {
0x000a02e4 beq.w 0xa04f0 | goto label_64;
| }
0x000a02e8 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x000a02ea mov r1, r5 | r1 = r5;
0x000a02ec blx 0x7ca0 | fcn_00007ca0 ();
0x000a02f0 str r0, [sp, 0x18] | var_18h = r0;
0x000a02f2 cmp r0, 0 |
| if (r0 != 0) {
0x000a02f4 bne.w 0xa04e0 | goto label_65;
| }
| label_17:
0x000a02f8 ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x000a02fa cmp r3, 0 |
| if (r3 == 0) {
0x000a02fc beq.w 0xa04cc | goto label_66;
| }
0x000a0300 ldrb r3, [r7, 2] | r3 = *((r7 + 2));
0x000a0302 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x000a0304 cmp r3, 0 |
| if (r3 != 0) {
0x000a0306 bne.w 0xa091c | goto label_67;
| }
0x000a030a adds r0, 6 | r0 += 6;
0x000a030c add.w r3, r7, r0, lsl 2 | r3 = r7 + (r0 << 2);
0x000a0310 str r3, [sp, 0x14] | var_14h = r3;
0x000a0312 movs r3, 1 | r3 = 1;
0x000a0314 strb r3, [r7, 2] | *((r7 + 2)) = r3;
0x000a0316 ldr.w r3, [pc, 0x930] | r3 = *(0x000a0c48);
0x000a031a add r3, pc | r3 += pc;
0x000a031c str r3, [sp, 0x1c] | var_1ch = r3;
| label_10:
0x000a031e ldr r3, [sp, 0x14] | r3 = var_14h;
0x000a0320 add.w sl, r5, -1 | sl = r5 + -1;
0x000a0324 ldr.w r2, [fp] | r2 = *(fp);
0x000a0328 str r3, [sp, 0x84] | var_84h = r3;
0x000a032a ldr.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x000a032e str r2, [sp, 0x24] | var_24h = r2;
0x000a0330 str r3, [sp, 0x70] | var_70h = r3;
0x000a0332 movs r3, 0 | r3 = 0;
0x000a0334 str r3, [sp, 0x40] | var_40h = r3;
0x000a0336 str r3, [sp, 0x44] | var_44h = r3;
0x000a0338 ldr.w r3, [pc, 0x910] | r3 = *(0x000a0c4c);
0x000a033c add r3, pc | r3 += pc;
0x000a033e str r3, [sp, 0x30] | var_30h = r3;
0x000a0340 ldr.w r3, [pc, 0x90c] | r3 = *(0x000a0c50);
0x000a0344 add r3, pc | r3 += pc;
0x000a0346 str r3, [sp, 0x34] | var_34h = r3;
0x000a0348 ldr.w r3, [pc, 0x908] | r3 = *(0x000a0c54);
0x000a034c add r3, pc | r3 += pc;
0x000a034e str r3, [sp, 0x28] | var_28h = r3;
| label_11:
0x000a0350 ldrb r1, [sl, 1]! | r1 = *((sl += 1));
0x000a0354 cmp r1, 0 |
| if (r1 == 0) {
0x000a0356 beq.w 0xa0982 | goto label_68;
| }
0x000a035a sub.w r3, r1, 0x61 | r3 = r1 - 0x61;
0x000a035e strb.w r1, [sp, 0x80] | var_80h = r1;
0x000a0362 cmp r3, 0x18 |
| if (r3 > 0x18) {
0x000a0364 bhi 0xa03b6 | goto label_69;
| }
| /* switch table (26 cases) at 0xa036a */
0x000a0366 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_62:
0x000a039c ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000a039e blx 0x8508 | fcn_00008508 ();
0x000a03a2 ldr.w r3, [fp] | r3 = *(fp);
0x000a03a6 mov r5, r0 | r5 = r0;
0x000a03a8 str r3, [sp, 0x10] | var_10h = r3;
0x000a03aa cmp r0, 0 |
0x000a03ac bne 0xa02ba |
| } while (r0 != 0);
0x000a03ae ldr.w r5, [pc, 0x8a8] | r5 = *(0x000a0c58);
0x000a03b2 add r5, pc | r5 += pc;
0x000a03b4 b 0xa02ba | goto label_9;
| label_69:
0x000a03b6 ldr.w r7, [fp, 0x10] | r7 = *(arg_10h);
0x000a03ba movs r3, 0 | r3 = 0;
0x000a03bc str r3, [sp, 0x50] | var_50h = r3;
0x000a03be str.w fp, [sp, 0x58] | __asm ("str.w fp, [var_58h]");
0x000a03c2 ldr r6, [r7] | r6 = *(r7);
0x000a03c4 strd r3, r3, [sp, 0x5c] | __asm ("strd r3, r3, [sp, 0x5c]");
0x000a03c8 cmp r6, 5 |
| if (r6 == 5) {
0x000a03ca beq 0xa0400 | goto label_70;
| }
0x000a03cc ldr.w r8, [sp, 0x28] | r8 = var_28h;
0x000a03d0 mov r4, r7 | r4 = r7;
0x000a03d2 add.w sb, sp, 0x50 | sb += var_50h;
0x000a03d6 add r5, sp, 0x58 | r5 += var_58h;
| do {
0x000a03d8 mov r3, r5 | r3 = r5;
0x000a03da ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000a03dc mov r2, r8 | r2 = r8;
0x000a03de mov r1, sb | r1 = sb;
0x000a03e0 bl 0xad50 | r0 = fcn_0000ad50 (r0, r1, r2, r3);
0x000a03e4 clz r3, r0 | r3 &= r0;
0x000a03e8 cmp r6, 2 |
0x000a03ea lsr.w r3, r3, 5 | r3 >>= 5;
0x000a03ee it eq |
| if (r6 != 2) {
0x000a03f0 moveq r3, 0 | r3 = 0;
| }
0x000a03f2 cmp r3, 0 |
| if (r3 == 0) {
0x000a03f4 beq.w 0xa0964 | goto label_71;
| }
0x000a03f8 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x000a03fa ldr r6, [r4] | r6 = *(r4);
0x000a03fc cmp r6, 5 |
0x000a03fe bne 0xa03d8 |
| } while (r6 != 5);
| label_70:
0x000a0400 movs r3, 0 | r3 = 0;
0x000a0402 str r3, [sp, 0x40] | var_40h = r3;
| label_25:
0x000a0404 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a0406 cmp r3, 0 |
| if (r3 == 0) {
0x000a0408 beq.w 0xa09fc | goto label_72;
| }
0x000a040c ldr.w r3, [fp, 0x1c] | r3 = *(arg_1ch);
| if (r3 != 0) {
0x000a0410 cbz r3, 0xa042a |
0x000a0412 movs r3, 0 | r3 = 0;
0x000a0414 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000a0416 add r2, sp, 0x78 | r2 += var_78h;
0x000a0418 add r1, sp, 0x44 | r1 += var_44h;
0x000a041a str r3, [sp] | *(sp) = r3;
0x000a041c bl 0x86d2c | r0 = fcn_00086d2c (r0, r1, r2, r3);
0x000a0420 mov r6, r0 | r6 = r0;
0x000a0422 str r0, [sp, 0x40] | var_40h = r0;
0x000a0424 cmp r0, 0 |
| if (r0 != 0) {
0x000a0426 bne.w 0xa095c | goto label_73;
| }
| }
0x000a042a movs r1, 0 | r1 = 0;
0x000a042c mov r4, r7 | r4 = r7;
0x000a042e str r1, [sp, 0x58] | var_58h = r1;
0x000a0430 ldr r6, [r7] | r6 = *(r7);
0x000a0432 cmp r6, 5 |
| if (r6 == 5) {
0x000a0434 beq.w 0xa0c16 | goto label_74;
| }
0x000a0438 ldr.w r0, [sp] | r0 = *(sp);
0x000a043c movs r0, r0 |
0x000a043e add.w r8, sp, 0x68 | r8 += var_68h;
| do {
0x000a0442 mov r3, r8 | r3 = r8;
0x000a0444 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000a0446 mov r2, sb | r2 = sb;
0x000a0448 mov r1, r5 | r1 = r5;
0x000a044a bl 0xad50 | r0 = fcn_0000ad50 (r0, r1, r2, r3);
0x000a044e clz r3, r0 | r3 &= r0;
0x000a0452 cmp r6, 2 |
0x000a0454 lsr.w r3, r3, 5 | r3 >>= 5;
0x000a0458 it eq |
| if (r6 != 2) {
0x000a045a moveq r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x000a045c cbz r3, 0xa0470 | goto label_75;
| }
0x000a045e ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x000a0460 ldr r6, [r4] | r6 = *(r4);
0x000a0462 cmp r6, 5 |
0x000a0464 bne 0xa0442 |
| } while (r6 != 5);
0x000a0466 ldr r1, [sp, 0x58] | r1 = var_58h;
| label_44:
0x000a0468 mov r0, r4 | r0 = r4;
0x000a046a mov r2, r8 | r2 = r8;
0x000a046c bl 0xa0070 | fcn_000a0070 (r0, r1, r2, r3, r4, r5, r6);
| label_75:
0x000a0470 str r0, [sp, 0x40] | var_40h = r0;
0x000a0472 add r1, sp, 0x40 | r1 += var_40h;
0x000a0474 mov r0, fp | r0 = fp;
0x000a0476 bl 0x86e60 | fcn_00086e60 (r0, r1);
0x000a047a ldr r6, [sp, 0x40] | r6 = var_40h;
0x000a047c cmp r6, 0 |
| if (r6 == 0) {
0x000a047e beq.w 0xa0a02 | goto label_76;
| }
0x000a0482 ldr r4, [sp, 0x84] | r4 = var_84h;
| label_24:
0x000a0484 ldrb.w r1, [sl] | r1 = *(sl);
0x000a0488 mov r0, r8 | r0 = r8;
0x000a048a bl 0xadc4 | r0 = fcn_0000adc4 (r0, r1);
0x000a048e add.w r4, r4, r0, lsl 2 | r4 += (r0 << 2);
0x000a0492 str r4, [sp, 0x84] | var_84h = r4;
| label_12:
0x000a0494 ldr r0, [sp, 0x44] | r0 = var_44h;
0x000a0496 blx 0x7cfc | fcn_00007cfc ();
0x000a049a ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x000a049c cbz r3, 0xa04bc |
0x000a049e ldr.w r0, [fp, 0x5c] | r0 = *(arg_5ch);
0x000a04a2 movs r3, 1 | r3 = 1;
0x000a04a4 str r3, [r0, 8] | *((r0 + 8)) = r3;
0x000a04a6 add.w r1, r0, 0x14 | r1 = r0 + 0x14;
0x000a04aa ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000a04ac adds r3, 6 | r3 += 6;
0x000a04ae add.w r0, r0, r3, lsl 2 | r0 += (r3 << 2);
0x000a04b2 lsls r3, r3, 2 | r3 <<= 2;
0x000a04b4 sub.w r2, r3, 0x18 | r2 = r3 - 0x18;
0x000a04b8 blx 0x7dcc | fcn_00007dcc ();
| }
0x000a04bc ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a04be mov r1, r6 | r1 = r6;
0x000a04c0 blx 0x8310 | fcn_00008310 ();
0x000a04c4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000a04c6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000a04c8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000a04ca b 0xa05b2 | goto label_18;
| label_66:
0x000a04cc movs r3, 1 | r3 = 1;
0x000a04ce strb r3, [r7, 1] | *((r7 + 1)) = r3;
0x000a04d0 add.w r3, r7, 0x14 | r3 = r7 + 0x14;
0x000a04d4 str r3, [sp, 0x14] | var_14h = r3;
0x000a04d6 ldr.w r3, [pc, 0x784] | r3 = *(0x000a0c5c);
0x000a04da add r3, pc | r3 += pc;
0x000a04dc str r3, [sp, 0x1c] | var_1ch = r3;
0x000a04de b 0xa031e | goto label_10;
| label_65:
0x000a04e0 strb r6, [r7] | *(r7) = r6;
0x000a04e2 ldrh r3, [r7] | r3 = *(r7);
0x000a04e4 cmp r3, 0 |
| if (r3 == 0) {
0x000a04e6 beq.w 0xa0938 | goto label_77;
| }
| label_22:
0x000a04ea movs r3, 0 | r3 = 0;
0x000a04ec str.w r3, [fp, 0x5c] | __asm ("str.w r3, [arg_5ch]");
| label_64:
0x000a04f0 ldr.w r6, [fp, 0x10] | r6 = *(arg_10h);
0x000a04f4 movs r3, 0 | r3 = 0;
0x000a04f6 str r3, [sp, 0x50] | var_50h = r3;
0x000a04f8 str r3, [sp, 0x58] | var_58h = r3;
0x000a04fa ldr r7, [r6] | r7 = *(r6);
0x000a04fc cmp r7, 5 |
| if (r7 == 5) {
0x000a04fe beq.w 0xa0b00 | goto label_78;
| }
0x000a0502 ldr.w sb, [pc, 0x75c] | sb = *(0x000a0c60);
0x000a0506 add.w r8, sp, 0x50 | r8 += var_50h;
0x000a050a add.w sl, sp, 0x58 | sl += var_58h;
0x000a050e add sb, pc | sb += pc;
| do {
0x000a0510 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x000a0512 mov r3, r8 | r3 = r8;
0x000a0514 mov r2, sb | r2 = sb;
0x000a0516 mov r1, sl | r1 = sl;
0x000a0518 bl 0xad50 | r0 = fcn_0000ad50 (r0, r1, r2, r3);
0x000a051c clz r0, r0 | r0 &= r0;
0x000a0520 cmp r7, 2 |
0x000a0522 lsr.w r0, r0, 5 | r0 >>= 5;
0x000a0526 it eq |
| if (r7 != 2) {
0x000a0528 moveq r0, 0 | r0 = 0;
| }
0x000a052a cmp r0, 0 |
| if (r0 == 0) {
0x000a052c beq.w 0xa0918 | goto label_79;
| }
0x000a0530 ldr r6, [r6, 0x10] | r6 = *((r6 + 0x10));
0x000a0532 ldr r7, [r6] | r7 = *(r6);
0x000a0534 cmp r7, 5 |
0x000a0536 bne 0xa0510 |
| } while (r7 != 5);
0x000a0538 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000a053a ldr r3, [sp, 0x58] | r3 = var_58h;
0x000a053c adds r2, 1 | r2++;
| label_33:
0x000a053e str r3, [r6, 0x24] | *((r6 + 0x24)) = r3;
| label_21:
0x000a0540 str.w r2, [fp, 0x18] | __asm ("str.w r2, [arg_18h]");
0x000a0544 str r2, [sp, 0x70] | var_70h = r2;
0x000a0546 ldrb r2, [r5] | r2 = *(r5);
0x000a0548 cmp r2, 0 |
| if (r2 == 0) {
0x000a054a beq.w 0xa0be2 | goto label_80;
| }
0x000a054e mov.w sb, 0 | sb = 0;
0x000a0552 mov.w r8, 1 |
0x000a0556 movt r8, 0xc2 | r8 = 0xc20001;
0x000a055a mov sl, r5 | sl = r5;
0x000a055c mov r6, sb | r6 = sb;
0x000a055e add r7, sp, 0x68 | r7 += var_68h;
| label_16:
0x000a0560 cmp r2, 0x63 |
0x000a0562 it ne |
| if (r2 != 0x63) {
0x000a0564 cmpne r2, 0x70 | __asm ("cmpne r2, 0x70");
| }
0x000a0566 str r6, [sp, 0x58] | var_58h = r6;
| if (r2 == 0x63) {
0x000a0568 beq.w 0xa081a | goto label_19;
| }
0x000a056c cmp r2, 0x6e |
| if (r2 == 0x6e) {
0x000a056e beq.w 0xa080e | goto label_81;
| }
0x000a0572 cmp r2, 0x61 |
| if (r2 == 0x61) {
0x000a0574 beq.w 0xa080e | goto label_81;
| }
0x000a0578 cmp r2, 0x6c |
| if (r2 == 0x6c) {
0x000a057a beq.w 0xa08a6 | goto label_82;
| }
0x000a057e sub.w r3, r2, 0x62 | r3 = r2 - 0x62;
0x000a0582 uxtb r3, r3 | r3 = (int8_t) r3;
0x000a0584 cmp r3, 0x17 |
| if (r3 <= 0x17) {
0x000a0586 bhi 0xa0592 |
0x000a0588 lsr.w r3, r8, r3 | r3 = r8 >> r3;
0x000a058c lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x000a058e bmi.w 0xa081a | goto label_19;
| }
| }
| label_15:
0x000a0592 ldr.w r1, [pc, 0x6d0] |
0x000a0596 add r0, sp, 0x58 | r0 += var_58h;
0x000a0598 add r1, pc | r1 = 0x141202;
0x000a059a bl 0x49598 | fcn_00049598 (r0);
0x000a059e ldr r4, [sp, 0x58] | r4 = var_58h;
0x000a05a0 mov.w r2, -1 | r2 = -1;
0x000a05a4 ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a05a6 mov r1, r4 | r1 = r4;
0x000a05a8 blx 0x7edc | fcn_00007edc ();
0x000a05ac mov r0, r4 | r0 = r4;
0x000a05ae blx 0x84f8 | fcn_000084f8 ();
| label_18:
0x000a05b2 ldr r4, [sp, 0x10] | r4 = var_10h;
0x000a05b4 ldr.w r0, [r4, 0xfc] | r0 = *((r4 + 0xfc));
0x000a05b8 blx 0x8300 | fcn_00008300 ();
0x000a05bc movs r3, 0 | r3 = 0;
0x000a05be ldr.w r2, [pc, 0x6a8] | r2 = *(0x000a0c68);
0x000a05c2 str.w r3, [r4, 0xfc] | __asm ("str.w r3, [r4, 0xfc]");
0x000a05c6 ldr.w r3, [pc, 0x670] | r3 = *(0xa0c3a);
0x000a05ca add r2, pc | r2 += pc;
0x000a05cc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000a05ce ldr r2, [r3] | r2 = *(0xa0c3a);
0x000a05d0 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x000a05d2 eors r2, r3 | r2 ^= r3;
0x000a05d4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a05d8 bne.w 0xa0c28 | goto label_83;
| }
0x000a05dc add sp, 0x94 |
0x000a05de pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000a05e2 add.w r8, sp, 0x68 | r8 += var_68h;
0x000a05e6 mov r0, r8 | r0 = r8;
0x000a05e8 bl 0xadc4 | fcn_0000adc4 (r0, r1);
0x000a05ec movs r1, 0 | r1 = 0;
0x000a05ee lsls r2, r0, 2 | r2 = r0 << 2;
0x000a05f0 ldr r0, [sp, 0x84] | r0 = var_84h;
0x000a05f2 blx 0x8264 | fcn_00008264 ();
0x000a05f6 ldr.w r0, [fp, 0x10] | r0 = *(arg_10h);
0x000a05fa mov r1, r8 | r1 = r8;
0x000a05fc bl 0x11794 | fcn_00011794 (r0, r1);
0x000a0600 ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a0602 mov r6, r0 | r6 = r0;
0x000a0604 str r0, [sp, 0x40] | var_40h = r0;
| label_14:
0x000a0606 ldrb.w r1, [sl] | r1 = *(sl);
0x000a060a mov r0, r8 | r0 = r8;
0x000a060c bl 0xadc4 | r0 = fcn_0000adc4 (r0, r1);
0x000a0610 add.w r4, r4, r0, lsl 2 | r4 += (r0 << 2);
0x000a0614 str r4, [sp, 0x84] | var_84h = r4;
0x000a0616 cmp r6, 0 |
| if (r6 == 0) {
0x000a0618 beq.w 0xa0350 | goto label_11;
| }
0x000a061c b 0xa0494 | goto label_12;
0x000a061e ldr.w r4, [fp, 0x10] | r4 = *(arg_10h);
0x000a0622 movs r3, 0 | r3 = 0;
0x000a0624 str r3, [sp, 0x50] | var_50h = r3;
0x000a0626 str.w fp, [sp, 0x58] | __asm ("str.w fp, [var_58h]");
0x000a062a ldr r7, [r4] | r7 = *(r4);
0x000a062c strd r3, r3, [sp, 0x5c] | __asm ("strd r3, r3, [sp, 0x5c]");
0x000a0630 cmp r7, 5 |
| if (r7 == 5) {
0x000a0632 beq 0xa0668 | goto label_84;
| }
0x000a0634 ldr.w r8, [pc, 0x634] | r8 = *(0x000a0c6c);
0x000a0638 add.w sb, sp, 0x50 | sb += var_50h;
0x000a063c add r5, sp, 0x58 | r5 += var_58h;
0x000a063e add r8, pc | r8 += pc;
| do {
0x000a0640 mov r3, r5 | r3 = r5;
0x000a0642 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000a0644 mov r2, r8 | r2 = r8;
0x000a0646 mov r1, sb | r1 = sb;
0x000a0648 bl 0xad50 | r0 = fcn_0000ad50 (r0, r1, r2, r3);
0x000a064c clz r3, r0 | r3 &= r0;
0x000a0650 cmp r7, 2 |
0x000a0652 lsr.w r3, r3, 5 | r3 >>= 5;
0x000a0656 it eq |
| if (r7 != 2) {
0x000a0658 moveq r3, 0 | r3 = 0;
| }
0x000a065a cmp r3, 0 |
| if (r3 == 0) {
0x000a065c beq.w 0xa0952 | goto label_85;
| }
0x000a0660 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x000a0662 ldr r7, [r4] | r7 = *(r4);
0x000a0664 cmp r7, 5 |
0x000a0666 bne 0xa0640 |
| } while (r7 != 5);
| label_84:
0x000a0668 movs r3, 0 | r3 = 0;
0x000a066a str r3, [sp, 0x40] | var_40h = r3;
| label_23:
0x000a066c ldr.w r0, [fp, 0x18] | r0 = *(arg_18h);
0x000a0670 movs r5, 0 | r5 = 0;
0x000a0672 mov r1, r5 | r1 = r5;
0x000a0674 lsls r0, r0, 4 | r0 <<= 4;
0x000a0676 blx 0x7f18 | fcn_00007f18 ();
0x000a067a str r0, [sp, 0x2c] | var_2ch = r0;
0x000a067c cmp r0, 0 |
| if (r0 == 0) {
0x000a067e beq.w 0xa0bf2 | goto label_86;
| }
0x000a0682 ldr.w r2, [fp, 0x18] | r2 = *(arg_18h);
0x000a0686 mov r1, r5 | r1 = r5;
0x000a0688 lsls r2, r2, 4 | r2 <<= 4;
0x000a068a blx 0x8264 | fcn_00008264 ();
0x000a068e ldr.w r4, [fp, 0x10] | r4 = *(arg_10h);
0x000a0692 str r5, [sp, 0x58] | var_58h = r5;
0x000a0694 ldr r6, [r4] | r6 = *(r4);
0x000a0696 cmp r6, 5 |
| if (r6 == 5) {
0x000a0698 beq.w 0xa0c12 | goto label_87;
| }
0x000a069c ldr.w r7, [pc, 0x5d0] | r7 = *(0x000a0c70);
0x000a06a0 add r5, sp, 0x58 | r5 += var_58h;
0x000a06a2 ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
0x000a06a6 add r7, pc | r7 += pc;
| do {
0x000a06a8 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000a06aa mov r3, r8 | r3 = r8;
0x000a06ac mov r2, r7 | r2 = r7;
0x000a06ae mov r1, r5 | r1 = r5;
0x000a06b0 bl 0xad50 | r0 = fcn_0000ad50 (r0, r1, r2, r3);
0x000a06b4 clz r0, r0 | r0 &= r0;
0x000a06b8 cmp r6, 2 |
0x000a06ba lsr.w r0, r0, 5 | r0 >>= 5;
0x000a06be it eq |
| if (r6 != 2) {
0x000a06c0 moveq r0, 0 | r0 = 0;
| }
| if (r0 == 0) {
0x000a06c2 cbz r0, 0xa06d6 | goto label_88;
| }
0x000a06c4 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x000a06c6 ldr r6, [r4] | r6 = *(r4);
0x000a06c8 cmp r6, 5 |
0x000a06ca bne 0xa06a8 |
| } while (r6 != 5);
0x000a06cc ldr r3, [sp, 0x58] | r3 = var_58h;
0x000a06ce ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000a06d0 add.w r3, r2, r3, lsl 4 | r3 = r2 + (r3 << 4);
| label_43:
0x000a06d4 str r4, [r3] | *(r3) = r4;
| label_88:
0x000a06d6 ldr r0, [sp, 0x70] | r0 = var_70h;
0x000a06d8 cmp r0, 0 |
| if (r0 <= 0) {
0x000a06da ble 0xa06f6 | goto label_89;
| }
0x000a06dc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a06de movs r2, 0 | r2 = 0;
0x000a06e0 add.w r4, r3, r0, lsl 4 | r4 = r3 + (r0 << 4);
| do {
0x000a06e4 ldr r1, [r3] | r1 = *(r3);
0x000a06e6 adds r3, 0x10 | r3 += 0x10;
0x000a06e8 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x000a06ea ldr r1, [r1, 0x40] | r1 = *((r1 + 0x40));
0x000a06ec subs r2, r2, r1 | r2 -= r1;
0x000a06ee str r2, [r3, -0xc] | *((r3 - 0xc)) = r2;
0x000a06f2 cmp r4, r3 |
0x000a06f4 bne 0xa06e4 |
| } while (r4 != r3);
| label_89:
0x000a06f6 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000a06f8 cmp r3, 0 |
| if (r3 <= 0) {
0x000a06fa ble.w 0xa0c24 | goto label_90;
| }
0x000a06fe add r3, sp, 0x58 | r3 += var_58h;
0x000a0700 mov.w r8, 0 | r8 = 0;
0x000a0704 mov sb, r3 | sb = r3;
0x000a0706 strd sl, r8, [sp, 0x38] | __asm ("strd sl, r8, [sp, 0x38]");
| label_32:
0x000a070a cmp r0, 0 |
| if (r0 <= 0) {
0x000a070c ble.w 0xa0c1c | goto label_91;
| }
0x000a0710 movs r7, 0 | r7 = 0;
0x000a0712 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x000a0714 ldr.w r8, [sp, 0x3c] | r8 = var_3ch;
0x000a0718 mov r5, r7 | r5 = r7;
0x000a071a b 0xa0732 | goto label_92;
| label_13:
0x000a071c subs r1, 2 | r1 -= 2;
0x000a071e adds r7, 1 | r7++;
0x000a0720 add r1, r3 | r1 += r3;
0x000a0722 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x000a0724 str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
| do {
0x000a0726 ldr r3, [sp, 0x70] | r3 = var_70h;
0x000a0728 adds r5, 1 | r5++;
0x000a072a adds r4, 0x10 | r4 += 0x10;
0x000a072c cmp r5, r3 |
| if (r5 >= r3) {
0x000a072e bge.w 0xa0a5e | goto label_93;
| }
| label_92:
0x000a0732 mov r3, r4 | r3 = r4;
0x000a0734 mov r2, r8 | r2 = r8;
0x000a0736 ldr r1, [r3], 8 | r1 = *(r3);
| r3 += 8;
0x000a073a mov r0, fp | r0 = fp;
0x000a073c bl 0x9eb30 | r0 = fcn_0009eb30 (r0, r1, r2, r3, r4, r5, r6);
0x000a0740 mov r6, r0 | r6 = r0;
0x000a0742 cmp r0, 0 |
| if (r0 != 0) {
0x000a0744 bne.w 0xa0a58 | goto label_94;
| }
0x000a0748 ldr.w sl, [r4, 8] | sl = *((r4 + 8));
0x000a074c cmp.w sl, 0 |
0x000a0750 beq 0xa0726 |
| } while (sl == 0);
0x000a0752 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a0754 mov r1, sb | r1 = sb;
0x000a0756 mov r0, sl | r0 = sl;
0x000a0758 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000a075a str r3, [sp, 0x20] | var_20h = r3;
0x000a075c bl 0xa5b4 | fcn_0000a5b4 (r0, r1);
0x000a0760 ldrd r1, r2, [sp, 0x58] | __asm ("ldrd r1, r2, [var_58h]");
0x000a0764 add r0, sl | r0 += sl;
0x000a0766 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a0768 cmp r1, 2 |
0x000a076a sbcs r2, r2, 0 | __asm ("sbcs r2, r2, 0");
| if (r1 >= 2) {
0x000a076e bhs 0xa071c | goto label_13;
| }
0x000a0770 ldr.w sl, [sp, 0x38] | sl = var_38h;
0x000a0774 str r6, [r4, 8] | *((r4 + 8)) = r6;
0x000a0776 movw r6, 0x10b | r6 = 0x10b;
| label_27:
0x000a077a ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000a077c blx 0x84f8 | fcn_000084f8 ();
| label_41:
0x000a0780 str r6, [sp, 0x40] | var_40h = r6;
0x000a0782 b 0xa07b4 | goto label_95;
0x000a0784 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a0786 ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a0788 ldr r6, [sp, 0x40] | r6 = var_40h;
| if (r3 == 0) {
0x000a078a cbz r3, 0xa07b6 | goto label_38;
| }
0x000a078c ldr r3, [sp, 0x70] | r3 = var_70h;
0x000a078e add.w r8, sp, 0x68 | r8 += var_68h;
0x000a0792 str r3, [r4] | *(r4) = r3;
0x000a0794 b 0xa0606 | goto label_14;
0x000a0796 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 == 0) {
0x000a0798 cbz r3, 0xa07c4 | goto label_96;
| }
0x000a079a add r3, sp, 0x4c | r3 += var_4ch;
0x000a079c ldr r0, [sp, 0x24] | r0 = var_24h;
0x000a079e str r3, [sp] | *(sp) = r3;
0x000a07a0 add r2, sp, 0x50 | r2 += var_50h;
0x000a07a2 add r3, sp, 0x48 | r3 += var_48h;
0x000a07a4 add r1, sp, 0x44 | r1 += var_44h;
0x000a07a6 bl 0x86d2c | r0 = fcn_00086d2c (r0, r1, r2, r3);
0x000a07aa mov r6, r0 | r6 = r0;
0x000a07ac str r0, [sp, 0x40] | var_40h = r0;
0x000a07ae cmp r0, 0 |
| if (r0 == 0) {
0x000a07b0 beq.w 0xa0b7e | goto label_97;
| }
| label_95:
0x000a07b4 ldr r4, [sp, 0x84] | r4 = var_84h;
| do {
| label_38:
0x000a07b6 add.w r8, sp, 0x68 | r8 += var_68h;
0x000a07ba b 0xa0606 | goto label_14;
0x000a07bc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a07be cmp r3, 0 |
| if (r3 != 0) {
0x000a07c0 bne.w 0xa09a4 | goto label_98;
| }
| label_96:
0x000a07c4 ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a07c6 add.w r8, sp, 0x68 | r8 += var_68h;
0x000a07ca ldr r6, [sp, 0x40] | r6 = var_40h;
0x000a07cc b 0xa0606 | goto label_14;
0x000a07ce movs r3, 0 | r3 = 0;
0x000a07d0 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000a07d2 add r2, sp, 0x58 | r2 += var_58h;
0x000a07d4 movs r1, 0x15 | r1 = 0x15;
0x000a07d6 ldrd r4, r5, [fp, 0x20] | __asm ("ldrd r4, r5, [arg_20h]");
0x000a07da str r3, [sp, 0x58] | var_58h = r3;
0x000a07dc bl 0x79148 | fcn_00079148 (r0, r1, r2, r3);
0x000a07e0 ldr r7, [sp, 0x58] | r7 = var_58h;
0x000a07e2 mov r6, r0 | r6 = r0;
0x000a07e4 cmp r0, 0 |
| if (r0 == 0) {
0x000a07e6 beq.w 0xa09ca | goto label_99;
| }
| label_34:
0x000a07ea str r6, [sp, 0x40] | var_40h = r6;
| label_26:
0x000a07ec mov r0, r7 | r0 = r7;
0x000a07ee add.w r8, sp, 0x68 | r8 += var_68h;
0x000a07f2 blx 0x7cfc | fcn_00007cfc ();
0x000a07f6 ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a07f8 b 0xa0606 | goto label_14;
0x000a07fa ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a07fc ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a07fe ldr r6, [sp, 0x40] | r6 = var_40h;
0x000a0800 cmp r3, 0 |
0x000a0802 beq 0xa07b6 |
| } while (r3 == 0);
0x000a0804 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000a0806 add.w r8, sp, 0x68 | r8 += var_68h;
0x000a080a str r3, [r4] | *(r4) = r3;
0x000a080c b 0xa0606 | goto label_14;
| label_81:
0x000a080e ldr r3, [sp, 0x10] | r3 = var_10h;
0x000a0810 ldrb.w r3, [r3, 0xec] | r3 = *((r3 + 0xec));
0x000a0814 cmp r3, 0 |
| if (r3 == 0) {
0x000a0816 beq.w 0xa0592 | goto label_15;
| }
| label_19:
0x000a081a ldrb.w r1, [sl] | r1 = *(sl);
0x000a081e mov r0, r7 | r0 = r7;
0x000a0820 bl 0xadc4 | fcn_0000adc4 (r0, r1);
0x000a0824 ldrb r2, [sl, 1]! | r2 = *((sl += 1));
0x000a0828 add sb, r0 | sb += r0;
0x000a082a cmp r2, 0 |
| if (r2 != 0) {
0x000a082c bne.w 0xa0560 | goto label_16;
| }
0x000a0830 adds.w r6, sb, 3 | r6 = sb + 3;
0x000a0834 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x000a0838 lsl.w r8, r2, 3 | r8 = r2 << 3;
0x000a083c orr.w r8, r8, r6, lsr 29 | r8 |= (r6 >> 29);
0x000a0840 lsls r6, r6, 3 | r6 <<= 3;
| label_40:
0x000a0842 mov r0, r5 | r0 = r5;
0x000a0844 blx 0x8160 | r0 = fcn_00008160 ();
0x000a0848 mov sl, r0 | sl = r0;
0x000a084a adds r0, r0, r6 | r0 += r6;
0x000a084c adc r1, r8, 0 | __asm ("adc r1, r8, 0");
0x000a0850 adds r0, 1 | r0++;
0x000a0852 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x000a0856 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a085a mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x000a085c cbz r0, 0xa0896 |
0x000a085e mov r2, r6 | r2 = r6;
0x000a0860 movs r1, 0 | r1 = 0;
0x000a0862 blx 0x8264 | fcn_00008264 ();
0x000a0866 lsl.w r3, sb, 2 | r3 = sb << 2;
0x000a086a movs r1, 0x14 | r1 = 0x14;
0x000a086c str r1, [r7, 0x10] | *((r7 + 0x10)) = r1;
0x000a086e adds r0, r7, r6 | r0 = r7 + r6;
0x000a0870 adds r3, 0x18 | r3 += 0x18;
0x000a0872 add.w r1, sb, 5 | r1 = sb + 5;
0x000a0876 str.w r3, [r7, r1, lsl 2] | __asm ("str.w r3, [r7, r1, lsl 2]");
0x000a087a add.w r2, sl, 1 | r2 = sl + 1;
0x000a087e mov r1, r5 | r1 = r5;
0x000a0880 str.w sb, [r7, 4] | __asm ("str.w sb, [r7, 4]");
0x000a0884 str r0, [r7, 0xc] | *((r7 + 0xc)) = r0;
0x000a0886 blx 0x7dcc | fcn_00007dcc ();
0x000a088a movs r3, 1 | r3 = 1;
0x000a088c strb r3, [r7] | *(r7) = r3;
0x000a088e str r3, [sp, 0x18] | var_18h = r3;
0x000a0890 strd r3, r7, [fp, 0x58] | __asm ("strd r3, r7, [fp, 0x58]");
0x000a0894 b 0xa02f8 | goto label_17;
| }
0x000a0896 movs r3, 1 | r3 = 1;
0x000a0898 ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a089a movs r1, 7 | r1 = 7;
0x000a089c strd r3, r7, [fp, 0x58] | __asm ("strd r3, r7, [fp, 0x58]");
0x000a08a0 blx 0x8310 | fcn_00008310 ();
0x000a08a4 b 0xa05b2 | goto label_18;
| label_82:
0x000a08a6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000a08a8 ldrb.w r3, [r3, 0xee] | r3 = *((r3 + 0xee));
0x000a08ac cmp r3, 0 |
| if (r3 == 0) {
0x000a08ae beq.w 0xa0592 | goto label_15;
| }
0x000a08b2 b 0xa081a | goto label_19;
| label_61:
0x000a08b4 ldr r1, [pc, 0x3bc] |
0x000a08b6 ldr r0, [pc, 0x3c0] |
0x000a08b8 add r1, pc | r1 = 0x141530;
0x000a08ba add r0, pc | r0 = 0x141538;
0x000a08bc blx 0x852c | strncmp (r0, r1, r2);
0x000a08c0 mov.w r2, -1 | r2 = -1;
0x000a08c4 mov r1, r0 | r1 = r0;
0x000a08c6 mov r4, r0 | r4 = r0;
0x000a08c8 ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a08ca blx 0x7edc | fcn_00007edc ();
0x000a08ce ldr r2, [pc, 0x3ac] |
0x000a08d0 ldr r3, [pc, 0x364] | r3 = *(0xa0c38);
0x000a08d2 add r2, pc | r2 = 0x141554;
0x000a08d4 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a08d6 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a08d8 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x000a08da eors r2, r3 | r2 ^= r3;
0x000a08dc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a08e0 bne.w 0xa0c28 | goto label_83;
| }
0x000a08e4 mov r0, r4 | r0 = r4;
0x000a08e6 add sp, 0x94 |
0x000a08e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a08ec b.w 0x84f4 | void (*0x84f4)() ();
| label_63:
0x000a08f0 ldr r1, [pc, 0x38c] |
0x000a08f2 ldr r2, [pc, 0x344] | r2 = *(0xa0c3a);
0x000a08f4 add r1, pc | r1 = 0x141578;
0x000a08f6 ldr r2, [r1, r2] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a08f8 ldr r1, [r2] | r1 = imp._ITM_deregisterTMCloneTable;
0x000a08fa ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x000a08fc eors r1, r2 | r1 ^= r2;
0x000a08fe mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x000a0902 bne.w 0xa0c28 | goto label_83;
| }
0x000a0906 ldr r1, [pc, 0x37c] |
0x000a0908 mov r2, r3 | r2 = r3;
0x000a090a ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a090c add r1, pc | r1 = 0x141596;
0x000a090e add sp, 0x94 |
0x000a0910 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a0914 b.w 0x84cc | goto label_20;
| label_79:
0x000a0918 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000a091a b 0xa0540 | goto label_21;
| label_67:
0x000a091c lsls r0, r0, 2 | r0 <<= 2;
0x000a091e movs r1, 0 | r1 = 0;
0x000a0920 blx 0x7f18 | fcn_00007f18 ();
0x000a0924 str r0, [sp, 0x14] | var_14h = r0;
| if (r0 == 0) {
0x000a0926 cbz r0, 0xa0948 | goto label_100;
| }
0x000a0928 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x000a092a cmp r3, 0 |
| if (r3 != 0) {
0x000a092c bne.w 0xa0a44 | goto label_101;
| }
0x000a0930 ldr r3, [pc, 0x354] | r3 = *(0xa0c88);
0x000a0932 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000a0934 str r3, [sp, 0x1c] | var_1ch = r3;
0x000a0936 b 0xa031e | goto label_10;
| label_77:
0x000a0938 ldrb r3, [r7, 2] | r3 = *((r7 + 2));
0x000a093a cmp r3, 0 |
| if (r3 != 0) {
0x000a093c bne.w 0xa04ea | goto label_22;
| }
0x000a0940 mov r0, r7 | r0 = r7;
0x000a0942 blx 0x84f8 | fcn_000084f8 ();
0x000a0946 b 0xa04ea | goto label_22;
| label_100:
0x000a0948 ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a094a movs r1, 7 | r1 = 7;
0x000a094c blx 0x8310 | fcn_00008310 ();
0x000a0950 b 0xa05b2 | goto label_18;
| label_85:
0x000a0952 mov r6, r0 | r6 = r0;
0x000a0954 str r0, [sp, 0x40] | var_40h = r0;
0x000a0956 cmp r0, 0 |
| if (r0 == 0) {
0x000a0958 beq.w 0xa066c | goto label_23;
| }
| label_73:
0x000a095c ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a095e add.w r8, sp, 0x68 | r8 += var_68h;
0x000a0962 b 0xa0484 | goto label_24;
| label_71:
0x000a0964 mov r6, r0 | r6 = r0;
0x000a0966 str r0, [sp, 0x40] | var_40h = r0;
0x000a0968 cmp r0, 0 |
| if (r0 == 0) {
0x000a096a beq.w 0xa0404 | goto label_25;
| }
0x000a096e ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a0970 add r0, sp, 0x68 | r0 += var_68h;
0x000a0972 ldrb.w r1, [sl] | r1 = *(sl);
0x000a0976 bl 0xadc4 | r0 = fcn_0000adc4 (r0, r1);
0x000a097a add.w r4, r4, r0, lsl 2 | r4 += (r0 << 2);
0x000a097e str r4, [sp, 0x84] | var_84h = r4;
0x000a0980 b 0xa0494 | goto label_12;
| label_68:
0x000a0982 ldr r0, [sp, 0x44] | r0 = var_44h;
0x000a0984 blx 0x7cfc | fcn_00007cfc ();
0x000a0988 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a098a cmp r3, 0 |
| if (r3 != 0) {
0x000a098c bne.w 0xa0bf6 | goto label_102;
| }
| label_42:
0x000a0990 ldr.w r2, [fp, 0x5c] | r2 = *(arg_5ch);
0x000a0994 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000a0996 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000a0998 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000a099a ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a099c lsls r2, r2, 2 | r2 <<= 2;
0x000a099e blx 0x84d0 | fcn_000084d0 ();
0x000a09a2 b 0xa05b2 | goto label_18;
| label_98:
0x000a09a4 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000a09a8 movs r3, 0 | r3 = 0;
0x000a09aa str r3, [sp] | *(sp) = r3;
0x000a09ac add r2, sp, 0x58 | r2 += var_58h;
0x000a09ae ldr r0, [sp, 0x24] | r0 = var_24h;
0x000a09b0 add r1, sp, 0x44 | r1 += var_44h;
0x000a09b2 vstr d16, [sp, 0x58] | __asm ("vstr d16, [sp, 0x58]");
0x000a09b6 add.w r8, sp, 0x68 | r8 += var_68h;
0x000a09ba bl 0x86d2c | fcn_00086d2c (r0, r1, r2, r3);
0x000a09be ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a09c0 mov r6, r0 | r6 = r0;
0x000a09c2 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000a09c4 str r0, [sp, 0x40] | var_40h = r0;
0x000a09c6 str r3, [r4] | *(r4) = r3;
0x000a09c8 b 0xa0606 | goto label_14;
| label_99:
0x000a09ca mov r2, r4 | r2 = r4;
0x000a09cc ldr r4, [sp, 0x58] | r4 = var_58h;
0x000a09ce mov r3, r5 | r3 = r5;
0x000a09d0 movs r1, 1 | r1 = 1;
0x000a09d2 mov r0, r4 | r0 = r4;
0x000a09d4 blx 0x7c4c | fcn_00007c4c ();
0x000a09d8 mov r0, r4 | r0 = r4;
0x000a09da blx 0x809c | r0 = fcn_0000809c ();
0x000a09de cmp r0, 0x64 |
| if (r0 == 0x64) {
0x000a09e0 beq.w 0xa0b08 | goto label_103;
| }
| label_35:
0x000a09e4 mov r0, r4 | r0 = r4;
0x000a09e6 blx 0x7cfc | r0 = fcn_00007cfc ();
0x000a09ea mov r6, r0 | r6 = r0;
0x000a09ec cmp r0, 0 |
| if (r0 != 0) {
0x000a09ee bne.w 0xa0b04 | goto label_104;
| }
0x000a09f2 movw r6, 0x10b | r6 = 0x10b;
0x000a09f6 mov r7, r0 | r7 = r0;
0x000a09f8 str r6, [sp, 0x40] | var_40h = r6;
0x000a09fa b 0xa07ec | goto label_26;
| label_72:
0x000a09fc ldr r6, [sp, 0x40] | r6 = var_40h;
0x000a09fe add.w r8, sp, 0x68 | r8 += var_68h;
| label_76:
0x000a0a02 movs r1, 0 | r1 = 0;
0x000a0a04 str r1, [sp, 0x58] | var_58h = r1;
0x000a0a06 ldr r4, [r7] | r4 = *(r7);
0x000a0a08 cmp r4, 5 |
| if (r4 == 5) {
0x000a0a0a beq 0xa0a38 | goto label_105;
| }
0x000a0a0c ldr.w sb, [sp, 0x30] | sb = var_30h;
0x000a0a10 add r5, sp, 0x58 | r5 += var_58h;
| do {
0x000a0a12 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x000a0a14 mov r3, r8 | r3 = r8;
0x000a0a16 mov r2, sb | r2 = sb;
0x000a0a18 mov r1, r5 | r1 = r5;
0x000a0a1a bl 0xad50 | r0 = fcn_0000ad50 (r0, r1, r2, r3);
0x000a0a1e clz r0, r0 | r0 &= r0;
0x000a0a22 cmp r4, 2 |
0x000a0a24 lsr.w r0, r0, 5 | r0 >>= 5;
0x000a0a28 it eq |
| if (r4 != 2) {
0x000a0a2a moveq r0, 0 | r0 = 0;
| }
| if (r0 == 0) {
0x000a0a2c cbz r0, 0xa0a40 | goto label_106;
| }
0x000a0a2e ldr r7, [r7, 0x10] | r7 = *((r7 + 0x10));
0x000a0a30 ldr r4, [r7] | r4 = *(r7);
0x000a0a32 cmp r4, 5 |
0x000a0a34 bne 0xa0a12 |
| } while (r4 != 5);
0x000a0a36 ldr r1, [sp, 0x58] | r1 = var_58h;
| label_105:
0x000a0a38 mov r0, r7 | r0 = r7;
0x000a0a3a mov r2, r8 | r2 = r8;
0x000a0a3c bl 0x9ef50 | fcn_0009ef50 (r0, r1);
| label_106:
0x000a0a40 ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a0a42 b 0xa0606 | goto label_14;
| label_101:
0x000a0a44 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x000a0a46 add.w r1, r7, 0x14 | r1 = r7 + 0x14;
0x000a0a4a lsls r2, r2, 2 | r2 <<= 2;
0x000a0a4c blx 0x7dcc | fcn_00007dcc ();
0x000a0a50 ldr r3, [pc, 0x234] | r3 = *(0xa0c88);
0x000a0a52 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000a0a54 str r3, [sp, 0x1c] | var_1ch = r3;
0x000a0a56 b 0xa031e | goto label_10;
| label_94:
0x000a0a58 ldr.w sl, [sp, 0x38] | sl = var_38h;
0x000a0a5c b 0xa077a | goto label_27;
| label_93:
0x000a0a5e mov sl, r3 | sl = r3;
0x000a0a60 cmp r7, 0 |
| if (r7 == 0) {
0x000a0a62 beq.w 0xa0c1c | goto label_91;
| }
0x000a0a66 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a0a68 movs r5, 0 | r5 = 0;
0x000a0a6a add.w r6, r3, sl, lsl 4 | r6 = r3 + (sl << 4);
| label_28:
0x000a0a6e cmp.w sl, 0 |
| if (sl <= 0) {
0x000a0a72 ble.w 0xa0c2c | goto label_107;
| }
0x000a0a76 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000a0a78 movs r0, 0 | r0 = 0;
0x000a0a7a mov r4, r0 | r4 = r0;
| do {
0x000a0a7c ldr r3, [r1, 8] | r3 = *((r1 + 8));
| if (r3 == 0) {
0x000a0a7e cbz r3, 0xa0ad4 | goto label_108;
| }
| if (r4 == 0) {
0x000a0a80 cbz r4, 0xa0ad8 | goto label_109;
| }
0x000a0a82 ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
0x000a0a84 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000a0a86 cmp r2, r3 |
0x000a0a88 it lt |
| if (r2 >= r3) {
0x000a0a8a movlt r4, r1 | r4 = r1;
| }
| if (r0 == 0) {
| label_31:
0x000a0a8c cbz r0, 0xa0ad0 | goto label_110;
| }
0x000a0a8e ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
0x000a0a90 ldr r3, [r1, -0x4] | r3 = *((r1 - 0x4));
0x000a0a94 cmp r2, r3 |
0x000a0a96 it ne |
| if (r2 == r3) {
0x000a0a98 movne r0, 1 | r0 = 1;
| }
| if (r2 == r3) {
0x000a0a9a beq 0xa0ad0 | goto label_110;
| }
| label_29:
0x000a0a9c cmp r5, r0 |
0x000a0a9e it lt |
| if (r5 >= r0) {
0x000a0aa0 movlt r5, r0 | r5 = r0;
| }
| label_30:
0x000a0aa2 adds r1, 0x10 | r1 += 0x10;
0x000a0aa4 cmp r6, r1 |
0x000a0aa6 bne 0xa0a7c |
| } while (r6 != r1);
0x000a0aa8 ldr.w r8, [r4, 8] | r8 = *((r4 + 8));
0x000a0aac mov r1, sb | r1 = sb;
0x000a0aae mov r0, r8 | r0 = r8;
0x000a0ab0 bl 0xa5b4 | fcn_0000a5b4 (r0, r1);
0x000a0ab4 ldrd r1, r2, [sp, 0x58] | __asm ("ldrd r1, r2, [var_58h]");
0x000a0ab8 cmp r1, 2 |
0x000a0aba sbcs r2, r2, 0 | __asm ("sbcs r2, r2, 0");
| if (r1 > 2) {
0x000a0abe blo 0xa0adc |
0x000a0ac0 add.w r3, r8, r0 | r3 = r8 + r0;
0x000a0ac4 subs r1, 2 | r1 -= 2;
0x000a0ac6 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x000a0ac8 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000a0aca add r3, r1 | r3 += r1;
0x000a0acc str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000a0ace b 0xa0a6e | goto label_28;
| label_110:
0x000a0ad0 adds r0, 1 | r0++;
0x000a0ad2 b 0xa0a9c | goto label_29;
| label_108:
0x000a0ad4 mov r0, r3 | r0 = r3;
0x000a0ad6 b 0xa0aa2 | goto label_30;
| label_109:
0x000a0ad8 mov r4, r1 | r4 = r1;
0x000a0ada b 0xa0a8c | goto label_31;
| }
0x000a0adc subs r7, 1 | r7--;
0x000a0ade mov.w r3, 0 | r3 = 0;
0x000a0ae2 str r3, [r4, 8] | *((r4 + 8)) = r3;
| if (r7 != 1) {
0x000a0ae4 bne 0xa0a6e | goto label_28;
| }
| label_45:
0x000a0ae6 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000a0ae8 ldr r3, [sp, 0x84] | r3 = var_84h;
0x000a0aea str.w r5, [r3, r2, lsl 2] | __asm ("str.w r5, [r3, r2, lsl 2]");
0x000a0aee adds r3, r2, 1 | r3 = r2 + 1;
0x000a0af0 mov r2, r3 | r2 = r3;
0x000a0af2 str r3, [sp, 0x3c] | var_3ch = r3;
0x000a0af4 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000a0af6 cmp r2, r3 |
| if (r2 >= r3) {
0x000a0af8 bge.w 0xa0c20 | goto label_111;
| }
0x000a0afc ldr r0, [sp, 0x70] | r0 = var_70h;
0x000a0afe b 0xa070a | goto label_32;
| label_78:
0x000a0b00 movs r2, 1 | r2 = 1;
0x000a0b02 b 0xa053e | goto label_33;
| label_104:
0x000a0b04 movs r7, 0 | r7 = 0;
0x000a0b06 b 0xa07ea | goto label_34;
| label_103:
0x000a0b08 mov r1, r6 | r1 = r6;
0x000a0b0a mov r0, r4 | r0 = r4;
0x000a0b0c blx 0x8090 | r0 = fcn_00008090 ();
0x000a0b10 cmp r0, 4 |
| if (r0 != 4) {
0x000a0b12 bne.w 0xa09e4 | goto label_35;
| }
0x000a0b16 ldr r7, [sp, 0x58] | r7 = var_58h;
0x000a0b18 mov r1, r6 | r1 = r6;
0x000a0b1a str r6, [sp, 0x40] | var_40h = r6;
0x000a0b1c mov r0, r7 | r0 = r7;
0x000a0b1e blx 0x7cd0 | fcn_00007cd0 ();
0x000a0b22 mov r1, r6 | r1 = r6;
0x000a0b24 mov r5, r0 | r5 = r0;
0x000a0b26 mov r0, r7 | r0 = r7;
0x000a0b28 blx 0x8184 | fcn_00008184 ();
0x000a0b2c ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000a0b2e add r0, r5 | r0 += r5;
0x000a0b30 cmp r3, 0 |
| if (r3 <= 0) {
0x000a0b32 ble.w 0xa07ec | goto label_26;
| }
0x000a0b36 ldr r3, [sp, 0x84] | r3 = var_84h;
0x000a0b38 mov ip, r6 |
0x000a0b3a sub.w lr, r3, 4 | lr = r3 - 4;
0x000a0b3e b 0xa0b54 | goto label_112;
| label_36:
0x000a0b40 cmp r0, r2 |
| if (r0 <= r2) {
0x000a0b42 blo 0xa0bea | goto label_113;
| }
0x000a0b44 str r4, [lr, 4]! | *((lr += 4)) = r4;
0x000a0b48 add.w ip, ip, 1 |
0x000a0b4c ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000a0b4e cmp ip, r3 |
| if (ip >= r3) {
0x000a0b50 bge.w 0xa07ec | goto label_26;
| }
| label_112:
0x000a0b54 movs r1, 0 | r1 = 0;
0x000a0b56 mov r2, r5 | r2 = r5;
0x000a0b58 mov r4, r1 | r4 = r1;
| label_37:
0x000a0b5a mov r3, r2 | r3 = r2;
0x000a0b5c adds r2, 1 | r2++;
0x000a0b5e cmp r0, r3 |
0x000a0b60 mov r5, r2 | r5 = r2;
| if (r0 < r3) {
0x000a0b62 bls 0xa0b40 | goto label_36;
| }
0x000a0b64 ldrb.w r8, [r3] | r8 = *(r3);
0x000a0b68 and r3, r8, 0x7f | r3 = r8 & 0x7f;
0x000a0b6c lsls r3, r1 | r3 <<= r1;
0x000a0b6e adds r4, r3, r4 | r4 = r3 + r4;
0x000a0b70 tst.w r8, 0x80 |
| if ((r8 & 0x80) == 0) {
0x000a0b74 beq 0xa0b40 | goto label_36;
| }
0x000a0b76 adds r1, 7 | r1 += 7;
0x000a0b78 cmp r1, 0x46 |
| if (r1 != 0x46) {
0x000a0b7a bne 0xa0b5a | goto label_37;
| }
0x000a0b7c b 0xa0b40 | goto label_36;
| label_97:
0x000a0b7e ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000a0b80 ldr r4, [sp, 0x84] | r4 = var_84h;
0x000a0b82 cmp r3, 0 |
0x000a0b84 ittt gt |
| if (r3 > 0) {
0x000a0b86 ldrdgt r7, sb, [sp, 0x48] | __asm ("ldrdgt r7, sb, [var_48h]");
| }
| if (r3 <= 0) {
0x000a0b8a movgt r8, r0 | r8 = r0;
| }
| if (r3 > 0) {
0x000a0b8c add r5, sp, 0x58 | r5 += var_58h;
| }
| if (r3 > 0) {
0x000a0b8e bgt 0xa0bca | goto label_114;
| }
0x000a0b90 b 0xa07b6 | goto label_38;
| label_39:
0x000a0b92 ldrd r2, r3, [sp, 0x50] | __asm ("ldrd r2, r3, [var_50h]");
0x000a0b96 ldr r0, [sp, 0x58] | r0 = var_58h;
0x000a0b98 lsr.w ip, r3, 0x1f |
0x000a0b9c adds.w ip, ip, r2 |
0x000a0ba0 lsr.w ip, ip, 1 |
0x000a0ba4 adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x000a0ba8 orr.w ip, ip, r1, lsl 31 |
0x000a0bac asrs r1, r1, 1 | r1 >>= 1;
0x000a0bae adds.w r0, r0, ip | r0 += ip;
0x000a0bb2 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x000a0bb6 bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x000a0bba str.w r0, [r4, r8, lsl 2] | __asm ("str.w r0, [r4, r8, lsl 2]");
0x000a0bbe add.w r8, r8, 1 | r8++;
0x000a0bc2 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000a0bc4 cmp r8, r3 |
| if (r8 >= r3) {
0x000a0bc6 bge.w 0xa07b6 | goto label_38;
| }
| label_114:
0x000a0bca mov r0, r7 | r0 = r7;
0x000a0bcc mov r1, r5 | r1 = r5;
0x000a0bce bl 0xa5b4 | r0 = fcn_0000a5b4 (r0, r1);
0x000a0bd2 add r7, r0 | r7 += r0;
0x000a0bd4 cmp r7, sb |
0x000a0bd6 str r7, [sp, 0x48] | var_48h = r7;
| if (r7 < sb) {
0x000a0bd8 bls 0xa0b92 | goto label_39;
| }
0x000a0bda movw r6, 0x10b | r6 = 0x10b;
0x000a0bde str r6, [sp, 0x40] | var_40h = r6;
0x000a0be0 b 0xa07b6 | goto label_38;
| label_80:
0x000a0be2 mov r8, r2 | r8 = r2;
0x000a0be4 movs r6, 0x18 | r6 = 0x18;
0x000a0be6 mov sb, r2 | sb = r2;
0x000a0be8 b 0xa0842 | goto label_40;
| label_113:
0x000a0bea movw r6, 0x10b | r6 = 0x10b;
0x000a0bee str r6, [sp, 0x40] | var_40h = r6;
0x000a0bf0 b 0xa07ec | goto label_26;
| label_86:
0x000a0bf2 movs r6, 7 | r6 = 7;
0x000a0bf4 b 0xa0780 | goto label_41;
| label_102:
0x000a0bf6 ldr.w r0, [fp, 0x5c] | r0 = *(arg_5ch);
0x000a0bfa movs r3, 1 | r3 = 1;
0x000a0bfc str r3, [r0, 8] | *((r0 + 8)) = r3;
0x000a0bfe add.w r1, r0, 0x14 | r1 = r0 + 0x14;
0x000a0c02 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000a0c04 adds r3, 6 | r3 += 6;
0x000a0c06 lsls r2, r3, 2 | r2 = r3 << 2;
0x000a0c08 add r0, r2 | r0 += r2;
0x000a0c0a subs r2, 0x18 | r2 -= 0x18;
0x000a0c0c blx 0x7dcc | fcn_00007dcc ();
0x000a0c10 b 0xa0990 | goto label_42;
| label_87:
0x000a0c12 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a0c14 b 0xa06d4 | goto label_43;
| label_74:
0x000a0c16 add.w r8, sp, 0x68 | r8 += var_68h;
0x000a0c1a b 0xa0468 | goto label_44;
| label_91:
0x000a0c1c movs r5, 0 | r5 = 0;
0x000a0c1e b 0xa0ae6 | goto label_45;
| label_111:
0x000a0c20 ldr.w sl, [sp, 0x38] | sl = var_38h;
| label_90:
0x000a0c24 movs r6, 0 | r6 = 0;
0x000a0c26 b 0xa077a | goto label_27;
| label_83:
0x000a0c28 blx 0x7e8c | fcn_00007e8c ();
| label_107:
0x000a0c2c movs r3, 0 | r3 = 0;
0x000a0c2e ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000a0c30 udf 0xff | __asm ("udf 0xff");
0x000ad43a subs r2, 0x64 | r2 -= 0x64;
0x000ad43c movs r0, r4 | r0 = r4;
0x000ad43e movs r0, r0 |
0x000ad440 ldr r7, [r1, 0x64] | r7 = *((r1 + 0x64));
0x000ad442 strb r0, [r4] | *(r4) = r0;
0x000ad444 str r1, [r4, 0x74] | *((r4 + 0x74)) = r1;
0x000ad446 movs r0, 0x65 | r0 = 0x65;
0x000ad448 strb r5, [r4, 0x14] | *((r4 + 0x14)) = r5;
0x000ad44a str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x000ad44c movs r0, 0x74 | r0 = 0x74;
0x000ad44e ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x000ad450 ldr r7, [r4, 4] | r7 = *((r4 + 4));
0x000ad452 movs r0, 0x74 | r0 = 0x74;
0x000ad454 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000ad456 ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x000ad458 subs r2, 0x64 | r2 -= 0x64;
0x000ad45a movs r0, r4 | r0 = r4;
0x000ad45c movs r3, r2 | r3 = r2;
0x000ad45e movs r0, r0 |
0x000ad460 strb r5, [r4, 0x11] | *((r4 + 0x11)) = r5;
0x000ad462 movs r5, 0x20 | r5 = 0x20;
0x000ad464 movs r0, 0x64 | r0 = 0x64;
0x000ad466 strb r7, [r5, 0x15] | *((r5 + 0x15)) = r7;
0x000ad468 movs r0, 0x74 | r0 = 0x74;
0x000ad46a str r7, [r5, 0x64] | *((r5 + 0x64)) = r7;
0x000ad46c strb r0, [r4, 8] | *((r4 + 8)) = r0;
0x000ad46e ldr r1, [r4, 0x64] | r1 = *((r4 + 0x64));
0x000ad470 str r7, [r4, 0x54] | *((r4 + 0x54)) = r7;
0x000ad472 movs r5, 0x20 | r5 = 0x20;
0x000ad474 lsls r4, r4, 1 | r4 <<= 1;
0x000ad476 movs r0, r0 |
0x000ad478 movs r0, r0 |
0x000ad47a movs r0, r0 |
0x000ad47c ldrb r5, [r0, 1] | r5 = *((r0 + 1));
0x000ad47e str r4, [r6, 0x54] | *((r6 + 0x54)) = r4;
0x000ad480 str r6, [r5, 0x44] | *((r5 + 0x44)) = r6;
0x000ad482 movs r0, 0x73 | r0 = 0x73;
| if (r0 >= 0x73) {
0x000ad484 bmi 0xad540 |
0x000ad486 movs r2, r1 | r2 = r1;
0x000ad488 ldr r5, [r4, 0x64] | r5 = *((r4 + 0x64));
0x000ad48a movs r0, 0x64 | r0 = 0x64;
0x000ad48c str r7, [r5, 0x64] | *((r5 + 0x64)) = r7;
0x000ad48e strb r0, [r4] | *(r4) = r0;
0x000ad490 str r1, [r4, 0x74] | *((r4 + 0x74)) = r1;
0x000ad492 lsls r5, r4, 1 | r5 = r4 << 1;
0x000ad494 ldr r2, [r2, 0x74] | r2 = *((r2 + 0x74));
0x000ad496 ldr r7, [r6, 0x14] | r7 = *((r6 + 0x14));
0x000ad498 movs r0, 0x64 | r0 = 0x64;
0x000ad49a ldr r5, [r4, 0x40] | r5 = *((r4 + 0x40));
0x000ad49c str r4, [r5, 0x44] | *((r5 + 0x44)) = r4;
0x000ad49e ldr r0, [r4, 0x70] | r0 = *((r4 + 0x70));
0x000ad4a0 strb r5, [r6, 0x11] | *((r6 + 0x11)) = r5;
0x000ad4a2 ldr r0, [r4, 0x70] | r0 = *((r4 + 0x70));
0x000ad4a4 movs r0, 0x66 | r0 = 0x66;
0x000ad4a6 strb r7, [r5, 9] | *((r5 + 9)) = r7;
0x000ad4a8 str r4, [r4, 0x54] | *((r4 + 0x54)) = r4;
0x000ad4aa lsls r2, r6, 1 | r2 = r6 << 1;
0x000ad4ac ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000ad4ae ldr r1, [r5, 0x44] | r1 = *((r5 + 0x44));
0x000ad4b0 movs r0, 0x64 | r0 = 0x64;
0x000ad4b2 str r0, [r6, 0x14] | *((r6 + 0x14)) = r0;
0x000ad4b4 str r7, [r4, 0x54] | *((r4 + 0x54)) = r7;
0x000ad4b6 str r0, [r4, 0x40] | *((r4 + 0x40)) = r0;
0x000ad4b8 strb r5, [r4, 1] | *((r4 + 1)) = r5;
0x000ad4ba ldr r4, [r6, 4] | r4 = *((r6 + 4));
0x000ad4bc str r0, [r4, 0x40] | *((r4 + 0x40)) = r0;
0x000ad4be str r1, [r5, 0x64] | *((r5 + 0x64)) = r1;
0x000ad4c0 str r6, [r4, 0x54] | *((r4 + 0x54)) = r6;
0x000ad4c2 strb r2, [r6, 0xd] | *((r6 + 0xd)) = r2;
0x000ad4c4 movs r0, r0 |
0x000ad4c6 movs r0, r0 |
0x000ad4c8 strb r5, [r1, 0x15] | *((r1 + 0x15)) = r5;
0x000ad4ca strb r4, [r5, 0x11] | *((r5 + 0x11)) = r4;
0x000ad4cc strb r1, [r5, 1] | *((r5 + 1)) = r1;
0x000ad4ce str r4, [r5, 0x54] | *((r5 + 0x54)) = r4;
0x000ad4d0 strb r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x000ad4d2 str r3, [r6, 0x54] | *((r6 + 0x54)) = r3;
0x000ad4d4 movs r0, 0x73 | r0 = 0x73;
0x000ad4d6 ldr r6, [r4, 0x74] | r6 = *((r4 + 0x74));
0x000ad4d8 movs r0, 0x72 | r0 = 0x72;
0x000ad4da ldrb r2, [r4, 5] | r2 = *((r4 + 5));
0x000ad4dc str r4, [r6, 0x54] | *((r6 + 0x54)) = r4;
0x000ad4de movs r5, 0x20 | r5 = 0x20;
0x000ad4e0 movs r0, 0x75 | r0 = 0x75;
0x000ad4e2 str r7, [r5, 0x64] | *((r5 + 0x64)) = r7;
0x000ad4e4 strb r0, [r4] | *(r4) = r0;
0x000ad4e6 str r1, [r4, 0x74] | *((r4 + 0x74)) = r1;
0x000ad4e8 movs r0, 0x65 | r0 = 0x65;
0x000ad4ea strb r5, [r4, 0x14] | *((r4 + 0x14)) = r5;
0x000ad4ec movs r0, r0 |
0x000ad4ee movs r0, r0 |
0x000ad4f0 strb r6, [r0, 9] | *((r0 + 9)) = r6;
0x000ad4f2 str r1, [r4, 0x74] | *((r4 + 0x74)) = r1;
0x000ad4f4 str r5, [r5, 0x54] | *((r5 + 0x54)) = r5;
0x000ad4f6 strb r6, [r5, 0x11] | *((r5 + 0x11)) = r6;
0x000ad4f8 strb r1, [r4, 0x11] | *((r4 + 0x11)) = r1;
0x000ad4fa ldr r1, [r5, 0x74] | r1 = *((r5 + 0x74));
0x000ad4fc movs r0, 0x6e | r0 = 0x6e;
0x000ad4fe str r7, [r5, 0x64] | *((r5 + 0x64)) = r7;
0x000ad500 movs r5, 0x20 | r5 = 0x20;
0x000ad502 movs r0, 0x64 | r0 = 0x64;
0x000ad504 ldrb r2, [r4, 5] | r2 = *((r4 + 5));
0x000ad506 str r4, [r6, 0x54] | *((r6 + 0x54)) = r4;
0x000ad508 movs r0, 0x73 | r0 = 0x73;
0x000ad50a str r2, [r6, 0x54] | *((r6 + 0x54)) = r2;
0x000ad50c ldr r0, [r6, 0x74] | r0 = *((r6 + 0x74));
0x000ad50e strb r2, [r6, 0x11] | *((r6 + 0x11)) = r2;
0x000ad510 str r5, [r4, 0x44] | *((r4 + 0x44)) = r5;
0x000ad512 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x000ad514 movs r0, 0x73 | r0 = 0x73;
0x000ad516 str r5, [r4, 0x40] | *((r4 + 0x40)) = r5;
0x000ad518 ldr r0, [r4, 0x70] | r0 = *((r4 + 0x70));
0x000ad51a movs r0, 0x6e | r0 = 0x6e;
0x000ad51c str r0, [r6, 0x14] | *((r6 + 0x14)) = r0;
0x000ad51e str r7, [r4, 0x54] | *((r4 + 0x54)) = r7;
0x000ad520 movs r5, 0x20 | r5 = 0x20;
0x000ad522 lsls r5, r6, 1 | r5 = r6 << 1;
0x000ad524 cmp r3, sl |
0x000ad526 strh r1, [r0, r1] | *((r0 + r1)) = r1;
0x000ad528 ldr r0, [pc, 0x10c] | r0 = *(0xad638);
0x000ad52a movs r0, r0 |
0x000ad52c muls r3, r2, r3 | r3 = r2 * r3;
0x000ad52e ldr r6, [pc, 0x104] | r6 = *(0xad636);
0x000ad530 movs r0, r0 |
0x000ad532 movs r0, r0 |
0x000ad534 strb r1, [r0, r5] | *((r0 + r5)) = r1;
0x000ad536 ldr r7, [pc, 0x150] | r7 = *(0xad68a);
0x000ad538 adcs r5, r1 | __asm ("adcs r5, r1");
0x000ad53a ldr r1, [pc, 0x150] | r1 = *(0xad68e);
0x000ad53c movs r0, 0x43 | r0 = 0x43;
0x000ad53e adcs r0, r2 | __asm ("adcs r0, r2");
| }
0x000ad540 strb r2, [r2, r1] | *((r2 + r1)) = r2;
0x000ad542 adcs r1, r1 | __asm ("adcs r1, r1");
0x000ad544 movs r0, 0x4c | r0 = 0x4c;
0x000ad546 ldr r7, [pc, 0x10c] | r7 = *(0xad656);
0x000ad548 cmp r6, sl |
0x000ad54a ldr r1, [pc, 0x148] | r1 = *(0xad696);
0x000ad54c bx sb | return uint32_t (*sb)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa0c8c */
| #include <stdint.h>
|
; (fcn) fcn.000a0c8c () | void fcn_000a0c8c (int16_t arg1, uint32_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| if (r1 == 0) {
0x000a0c8c cbz r1, 0xa0cd4 | goto label_0;
| }
0x000a0c8e push {r3, r4, r5, r6, r7, lr} |
0x000a0c90 mov r5, r2 | r5 = r2;
0x000a0c92 ldr r3, [r2] | r3 = *(r2);
| if (r3 != 0) {
0x000a0c94 cbnz r3, 0xa0cd2 | goto label_1;
| }
0x000a0c96 mov r4, r1 | r4 = r1;
0x000a0c98 ldr r1, [r1] | r1 = *(r1);
0x000a0c9a mov r6, r0 | r6 = r0;
0x000a0c9c cmp r1, 5 |
| if (r1 != 5) {
0x000a0c9e bne 0xa0cd6 | goto label_2;
| }
0x000a0ca0 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x000a0ca2 ldr r7, [r2, 0x40] | r7 = *((r2 + 0x40));
0x000a0ca4 cmp r7, 0 |
| if (r7 == 0) {
0x000a0ca6 beq 0xa0cc8 | goto label_3;
| }
| if (r7 <= 0) {
0x000a0ca8 ble 0xa0cbc | goto label_4;
| }
0x000a0caa mov r1, r2 | r1 = r2;
0x000a0cac b 0xa0cb4 |
| while (r0 != 0) {
0x000a0cae adds r3, 1 | r3++;
0x000a0cb0 cmp r7, r3 |
| if (r7 == r3) {
0x000a0cb2 beq 0xa0cbc | goto label_4;
| }
0x000a0cb4 ldr r0, [r1, 0x58] | r0 = *((r1 + 0x58));
0x000a0cb6 adds r1, 0x18 | r1 += 0x18;
0x000a0cb8 cmp r0, 0 |
0x000a0cba bne 0xa0cae |
| }
| label_4:
0x000a0cbc subs r7, r7, r3 | r7 -= r3;
0x000a0cbe clz r7, r7 | r7 &= r7;
0x000a0cc2 lsrs r7, r7, 5 | r7 >>= 5;
0x000a0cc4 strb.w r7, [r4, 0x22] | *((r4 + 0x22)) = r7;
| label_3:
0x000a0cc8 movs r1, 1 | r1 = 1;
0x000a0cca mov r0, r6 | r0 = r6;
0x000a0ccc bl 0x9e874 | fcn_0009e874 (r0, r1, r2, r3);
0x000a0cd0 str r0, [r5] | *(r5) = r0;
| label_1:
0x000a0cd2 pop {r3, r4, r5, r6, r7, pc} |
| label_0:
0x000a0cd4 bx lr | return;
| label_2:
0x000a0cd6 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x000a0cd8 bl 0xa0c8c | fcn_000a0c8c (r0, r1, r2);
0x000a0cdc ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x000a0cde mov r2, r5 | r2 = r5;
0x000a0ce0 mov r0, r6 | r0 = r6;
0x000a0ce2 bl 0xa0c8c | fcn_000a0c8c (r0, r1, r2);
0x000a0ce6 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000a0ce8 ldrb.w r3, [r3, 0x22] | r3 = *((r3 + 0x22));
| if (r3 != 0) {
0x000a0cec cbz r3, 0xa0cfa |
0x000a0cee ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a0cf0 ldrb.w r3, [r3, 0x22] | r3 = *((r3 + 0x22));
0x000a0cf4 subs r3, 0 |
0x000a0cf6 it ne |
| if (r3 != 0) {
0x000a0cf8 movne r3, 1 | r3 = 1;
| goto label_5;
| }
| }
| label_5:
0x000a0cfa strb.w r3, [r4, 0x22] | *((r4 + 0x22)) = r3;
0x000a0cfe 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/libsqlite3.so.0.8.6 @ 0xa0d00 */
| #include <stdint.h>
|
; (fcn) fcn.000a0d00 () | void fcn_000a0d00 (int16_t arg_8h, int16_t arg_10h, int16_t arg_84h, int16_t arg_70h, int16_t arg_74h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_3;
| int16_t var_4h;
| int16_t var_8h_3;
| int16_t var_14h_2;
| int16_t var_18h_2;
| int16_t var_1ch_2;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h_2;
| int16_t var_2ch_2;
| int16_t var_30h_2;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h_2;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int32_t var_64h_2;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int32_t var_a0h_2;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_d8h;
| int32_t var_4h_2;
| int32_t var_4h_3;
| int16_t var_14h_3;
| int16_t var_18h_3;
| int16_t var_1ch_3;
| int16_t var_20h_2;
| int16_t var_24h_2;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h_2;
| int16_t var_38h_2;
| int16_t var_3ch_2;
| int16_t var_40h_2;
| int16_t var_44h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000a0d00 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a0d04 mov r4, r2 | r4 = r2;
0x000a0d06 sub sp, 0x4c |
0x000a0d08 ldr r2, [pc, 0x174] |
0x000a0d0a mov sb, r3 | sb = r3;
0x000a0d0c str r3, [sp, 0x2c] | var_2ch = r3;
0x000a0d0e ldr r3, [pc, 0x174] | r3 = *(0xa0e86);
0x000a0d10 add r2, pc | r2 = 0x141b94;
0x000a0d12 ldr r7, [sp, 0x74] | r7 = *(arg_74h);
0x000a0d14 str r0, [sp, 0x28] | var_28h = r0;
0x000a0d16 ldr r3, [r2, r3] |
0x000a0d18 ldr r5, [sp, 0x70] | r5 = *(arg_70h);
0x000a0d1a ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a0d1c str r3, [sp, 0x44] | var_44h = r3;
0x000a0d1e mov.w r3, 0 | r3 = 0;
0x000a0d22 ldr r3, [r7] | r3 = *(r7);
0x000a0d24 str r7, [sp, 0x30] | var_30h = r7;
| if (r3 != 0) {
0x000a0d26 cbnz r3, 0xa0d6e | goto label_2;
| }
0x000a0d28 mov r8, r0 | r8 = r0;
0x000a0d2a mov r6, r1 | r6 = r1;
| do {
0x000a0d2c ldr r3, [r4] | r3 = *(r4);
0x000a0d2e cmp r3, 5 |
| if (r3 == 5) {
0x000a0d30 beq 0xa0d88 | goto label_53;
| }
0x000a0d32 cmp r3, 2 |
| if (r3 == 2) {
0x000a0d34 beq 0xa0d6e | goto label_2;
| }
0x000a0d36 cmp r3, 4 |
0x000a0d38 mov r0, r8 | r0 = r8;
0x000a0d3a itt eq |
| if (r3 != 4) {
0x000a0d3c ldreq r6, [r4, 0xc] | r6 = *((r4 + 0xc));
| }
| if (r3 != 4) {
0x000a0d3e ldreq r3, [r5] | r3 = *(r5);
| }
0x000a0d40 mov r1, r6 | r1 = r6;
0x000a0d42 itt eq |
| if (r3 != 4) {
0x000a0d44 streq r6, [r3], 4 | *(r3) = r6;
| r3 += 4;
| }
| if (r3 == 4) {
0x000a0d48 str r3, [r5] | *(r5) = r3;
| }
0x000a0d4a mov r3, sb | r3 = sb;
0x000a0d4c ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000a0d4e strd r5, r7, [sp] | __asm ("strd r5, r7, [sp]");
0x000a0d52 bl 0xa0d00 | fcn_000a0d00 (r0, r1, r2, r3, r4, r5, r6);
0x000a0d56 ldr r3, [r4] | r3 = *(r4);
0x000a0d58 cmp r3, 4 |
0x000a0d5a itttt eq |
| if (r3 != 4) {
0x000a0d5c ldreq r6, [r4, 0x10] | r6 = *((r4 + 0x10));
| }
| if (r3 != 4) {
0x000a0d5e ldreq r3, [r5] | r3 = *(r5);
| }
| if (r3 != 4) {
0x000a0d60 streq r6, [r3], 4 | *(r3) = r6;
| r3 += 4;
| }
| if (r3 == 4) {
0x000a0d64 str r3, [r5] | *(r5) = r3;
| }
0x000a0d66 ldr r3, [r7] | r3 = *(r7);
0x000a0d68 ldr r4, [r4, 0x10] | r4 = *((r4 + 0x10));
0x000a0d6a cmp r3, 0 |
0x000a0d6c beq 0xa0d2c |
| } while (r3 == 0);
| do {
| label_2:
0x000a0d6e ldr r2, [pc, 0x118] |
0x000a0d70 ldr r3, [pc, 0x110] | r3 = *(0xa0e84);
0x000a0d72 add r2, pc | r2 = 0x141c00;
0x000a0d74 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a0d76 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a0d78 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000a0d7a eors r2, r3 | r2 ^= r3;
0x000a0d7c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a0d80 bne 0xa0e7c | goto label_54;
| }
0x000a0d82 add sp, 0x4c |
0x000a0d84 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_53:
0x000a0d88 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a0d8a add r2, sp, 0x40 | r2 += var_40h_2;
0x000a0d8c str r6, [sp, 0x34] | var_34h_2 = r6;
0x000a0d8e movs r6, 0 | r6 = 0;
0x000a0d90 str r6, [sp, 0x14] | var_14h_3 = r6;
0x000a0d92 str r3, [sp, 0x1c] | var_1ch_3 = r3;
0x000a0d94 adds r3, 0x48 | r3 += 0x48;
0x000a0d96 str r2, [sp, 0x3c] | var_3ch_2 = r2;
0x000a0d98 str r3, [sp, 0x18] | var_18h_3 = r3;
| label_3:
0x000a0d9a ldr r3, [sp, 0x1c] | r3 = var_1ch_3;
0x000a0d9c ldr r2, [sp, 0x14] | r2 = var_14h_3;
0x000a0d9e ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x000a0da0 cmp r3, r2 |
0x000a0da2 ble 0xa0d6e |
| } while (r3 <= r2);
0x000a0da4 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000a0da6 mov.w r8, 0 | r8 = 0;
0x000a0daa mov r5, r8 | r5 = r8;
0x000a0dac ldr r2, [r1] | r2 = *(r1);
0x000a0dae add.w r3, r2, 0x18 | r3 = r2 + 0x18;
0x000a0db2 str r2, [sp, 0x24] | var_24h_2 = r2;
0x000a0db4 str r3, [r1] | *(r1) = r3;
0x000a0db6 ldr r1, [sp, 0x1c] | r1 = var_1ch_3;
0x000a0db8 ldr r3, [r1, 0x44] | r3 = *((r1 + 0x44));
0x000a0dba str r1, [r2] | *(r2) = r1;
0x000a0dbc ldr r1, [sp, 0x14] | r1 = var_14h_3;
0x000a0dbe str r3, [r2, 0x14] | *((r2 + 0x14)) = r3;
0x000a0dc0 str r1, [r2, 4] | *((r2 + 4)) = r1;
0x000a0dc2 ldr r1, [sp, 0x34] | r1 = var_34h_2;
0x000a0dc4 str r1, [r2, 0xc] | *((r2 + 0xc)) = r1;
0x000a0dc6 ldr r1, [sp, 0x18] | r1 = var_18h_3;
0x000a0dc8 str r1, [r2, 8] | *((r2 + 8)) = r1;
0x000a0dca ldr r2, [sp, 0x28] | r2 = var_28h;
0x000a0dcc ldr r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x000a0dce ldr.w sb, [r2] | sb = *(r2);
0x000a0dd2 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a0dd4 str r3, [sp, 0x20] | var_20h_2 = r3;
0x000a0dd6 ldr.w r7, [sb, 0xf4] | r7 = *((sb + 0xf4));
| label_1:
0x000a0dda cmp r0, r5 |
| if (r0 <= r5) {
0x000a0ddc ble 0xa0e5c | goto label_55;
| }
0x000a0dde ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x000a0de0 ldr r3, [r3] | r3 = *(r3);
0x000a0de2 add.w r3, r3, r5, lsl 2 | r3 += (r5 << 2);
0x000a0de6 adds r5, 1 | r5++;
0x000a0de8 b 0xa0df2 |
| while (r2 != 0) {
| label_0:
0x000a0dea mov r2, r5 | r2 = r5;
0x000a0dec adds r5, 1 | r5++;
0x000a0dee cmp r0, r2 |
| if (r0 <= r2) {
0x000a0df0 ble 0xa0e5c | goto label_55;
| }
0x000a0df2 ldr r4, [r3], 4 | r4 = *(r3);
| r3 += 4;
0x000a0df6 ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x000a0df8 cmp r2, 0 |
0x000a0dfa bne 0xa0dea |
| }
0x000a0dfc ldrb r2, [r4, 5] | r2 = *((r4 + 5));
0x000a0dfe cmp r2, 0 |
| if (r2 != 0) {
0x000a0e00 bne 0xa0dea | goto label_0;
| }
0x000a0e02 ldrd sl, fp, [r4, 8] | __asm ("ldrd sl, fp, [r4, 8]");
0x000a0e06 ldrd r3, r1, [r4, 0x10] | __asm ("ldrd r3, r1, [r4, 0x10]");
0x000a0e0a cmp r3, sl |
0x000a0e0c sbcs.w r1, r1, fp | __asm ("sbcs.w r1, r1, fp");
| if (r3 < sl) {
0x000a0e10 blt 0xa0dda | goto label_1;
| }
0x000a0e12 str r5, [sp, 0x38] | var_38h_2 = r5;
0x000a0e14 ldr r5, [sp, 0x3c] | r5 = var_3ch_2;
0x000a0e16 b 0xa0e3c |
| while (r0 == 0) {
0x000a0e18 ldr r0, [sp, 0x40] | r0 = var_40h_2;
0x000a0e1a adds r0, 0x22 | r0 += 0x22;
0x000a0e1c cmp r7, r0 |
| if (r7 <= r0) {
0x000a0e1e bgt 0xa0e28 |
0x000a0e20 mov r1, r7 | r1 = r7;
0x000a0e22 bl 0xab8f8 | r0 = fcn_000ab8f8 (r0, r1);
0x000a0e26 add r8, r0 | r8 += r0;
| }
0x000a0e28 ldrd r1, r2, [r4, 0x10] | __asm ("ldrd r1, r2, [r4, 0x10]");
0x000a0e2c adds.w sl, sl, 1 | sl++;
0x000a0e30 adc fp, fp, 0 | __asm ("adc fp, fp, 0");
0x000a0e34 cmp r1, sl |
0x000a0e36 sbcs.w r2, r2, fp | __asm ("sbcs.w r2, r2, fp");
| if (r1 < sl) {
0x000a0e3a blt 0xa0e74 | goto label_56;
| }
0x000a0e3c mov r2, sl | r2 = sl;
0x000a0e3e mov r3, fp | r3 = fp;
0x000a0e40 mov r0, sb | r0 = sb;
0x000a0e42 strd r5, r6, [sp, 4] | __asm ("strd r5, r6, [var_4h_2]");
0x000a0e46 str r6, [sp] | *(sp) = r6;
0x000a0e48 bl 0x995fc | r0 = fcn_000995fc (r0, r1, r2, r3, r4, r5);
0x000a0e4c cmp r0, 0 |
0x000a0e4e beq 0xa0e18 |
| }
0x000a0e50 ldr r3, [sp, 0x24] | r3 = var_24h_2;
0x000a0e52 str.w r8, [r3, 0x10] | __asm ("str.w r8, [r3, 0x10]");
0x000a0e54 strh r0, [r2] | *(r2) = r0;
0x000a0e56 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a0e58 str r0, [r3] | *(r3) = r0;
0x000a0e5a b 0xa0d6e | goto label_2;
| label_55:
0x000a0e5c ldr r3, [sp, 0x24] | r3 = var_24h_2;
0x000a0e5e str.w r8, [r3, 0x10] | __asm ("str.w r8, [r3, 0x10]");
0x000a0e62 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a0e64 str r6, [r3] | *(r3) = r6;
0x000a0e66 ldr r3, [sp, 0x14] | r3 = var_14h_3;
0x000a0e68 adds r3, 1 | r3++;
0x000a0e6a str r3, [sp, 0x14] | var_14h_3 = r3;
0x000a0e6c ldr r3, [sp, 0x18] | r3 = var_18h_3;
0x000a0e6e adds r3, 0x18 | r3 += 0x18;
0x000a0e70 str r3, [sp, 0x18] | var_18h_3 = r3;
0x000a0e72 b 0xa0d9a | goto label_3;
| label_56:
0x000a0e74 ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x000a0e76 ldr r5, [sp, 0x38] | r5 = var_38h_2;
0x000a0e78 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a0e7a b 0xa0dda | goto label_1;
| label_54:
0x000a0e7c blx 0x7e8c | fcn_00007e8c ();
0x000a0e80 ldm r7, {r7} | r7 = *(r7);
0x000a0e82 movs r2, r0 | r2 = r0;
0x000a0e84 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000a0e86 movs r0, r0 |
0x000a0e88 ldm r7!, {r1, r2, r3, r4} | r1 = *(r7!);
| r2 = *((r7! + 4));
| r3 = *((r7! + 8));
| r4 = *((r7! + 12));
0x000a0e8a movs r2, r0 | r2 = r0;
0x000a0e8c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a0e90 mov r5, r2 | r5 = r2;
0x000a0e92 ldr.w r2, [pc, 0xb74] | r2 = *(0x000a1a08);
0x000a0e96 sub sp, 0xb4 |
0x000a0e98 ldr r6, [r0] | r6 = *(r0);
0x000a0e9a ldr.w r3, [pc, 0xb70] |
0x000a0e9e add r2, pc | r2 += pc;
0x000a0ea0 str r0, [sp, 0x40] | var_40h = r0;
0x000a0ea2 str r6, [sp, 0x50] | var_50h = r6;
0x000a0ea4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000a0ea6 ldr r0, [sp, 0xd8] | r0 = var_d8h;
0x000a0ea8 ldr r3, [r3] | r3 = *(0xa1a0e);
0x000a0eaa str r3, [sp, 0xac] | var_ach = r3;
0x000a0eac mov.w r3, 0 | r3 = 0;
0x000a0eb0 ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x000a0eb2 cmp r3, 0 |
| if (r3 != 0) {
0x000a0eb4 bne.w 0xa1020 | goto label_57;
| }
0x000a0eb8 uxth r6, r1 | r6 = (int16_t) r1;
0x000a0eba mov r4, r1 | r4 = r1;
0x000a0ebc mov r3, r6 | r3 = r6;
0x000a0ebe mov fp, r6 |
| if (r6 != 0) {
0x000a0ec0 cbz r6, 0xa0ec8 |
0x000a0ec2 ldr.w fp, [r0] | fp = *(r0);
0x000a0ec6 movs r3, 1 | r3 = 1;
| }
0x000a0ec8 ands r8, r4, 0x10000 | r8 = r4 & 0x10000;
0x000a0ecc itt ne |
| if (r8 == r4) {
0x000a0ece ldrne r8, [r0, r3, lsl 2] | offset_0 = r3 << 2;
| r8 = *((r0 + offset_0));
| }
| if (r8 != r4) {
0x000a0ed2 adds r3, 1 | r3++;
| }
0x000a0ed4 ands sb, r4, 0x20000 | sb = r4 & 0x20000;
| if (sb == r4) {
0x000a0ed8 beq.w 0xa0fec | goto label_58;
| }
0x000a0edc ands sl, r4, 0x40000 | sl = r4 & 0x40000;
0x000a0ee0 ldr.w r7, [r0, r3, lsl 2] | offset_1 = r3 << 2;
| r7 = *((r0 + offset_1));
0x000a0ee4 add.w r3, r3, 1 | r3++;
| if (sl == r4) {
0x000a0ee8 beq.w 0xa1044 | goto label_59;
| }
0x000a0eec ldr.w sl, [r0, r3, lsl 2] | offset_2 = r3 << 2;
| sl = *((r0 + offset_2));
0x000a0ef0 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a0ef2 bl 0x5da28 | fcn_0005da28 (r0);
| if (r7 != 0) {
0x000a0ef6 cbz r7, 0xa0f04 |
0x000a0ef8 mov r0, r7 | r0 = r7;
0x000a0efa blx 0x8550 | r0 = dlclose ();
0x000a0efe cmp r0, 1 |
| if (r0 == 1) {
0x000a0f00 beq.w 0xa105e | goto label_60;
| }
| }
0x000a0f04 movs r0, 0 | r0 = 0;
0x000a0f06 mov.w r1, -0x80000000 | r1 = -0x80000000;
| label_7:
0x000a0f0a ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a0f0c strd r0, r1, [r3, 0x48] | __asm ("strd r0, r1, [r3, 0x48]");
0x000a0f10 cmp.w sl, 0 |
| if (sl != 0) {
0x000a0f14 beq 0xa0f22 |
0x000a0f16 mov r0, sl | r0 = sl;
0x000a0f18 blx 0x8550 | r0 = dlclose ();
0x000a0f1c cmp r0, 1 |
| if (r0 == 1) {
0x000a0f1e beq.w 0xa19b2 | goto label_61;
| }
| }
0x000a0f22 mov.w ip, -1 |
0x000a0f26 mvn r0, 0x80000000 | r0 = ~0x80000000;
| label_43:
0x000a0f2a ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a0f2c strd ip, r0, [r3, 0x50] | __asm ("strd ip, r0, [r3, 0x50]");
0x000a0f30 cmp r5, 0 |
| if (r5 == 0) {
0x000a0f32 beq 0xa1018 | goto label_62;
| }
| do {
0x000a0f34 ldrb r3, [r5] | r3 = *(r5);
0x000a0f36 sub.w r3, r3, 0x44 | r3 -= 0x44;
0x000a0f3a clz r3, r3 | r3 &= r3;
0x000a0f3e lsrs r3, r3, 5 | r3 >>= 5;
| label_4:
0x000a0f40 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000a0f42 strb.w r3, [r2, 0x34] | *((r2 + 0x34)) = r3;
0x000a0f46 strh r4, [r2, 4] | *((r2 + 4)) = r4;
0x000a0f48 movw r2, 0xfffe | r2 = 0xfffe;
0x000a0f4c tst r4, r2 |
| if ((r4 & r2) != 0) {
0x000a0f4e bne.w 0xa107a | goto label_63;
| }
0x000a0f52 cmp r6, 0 |
| if (r6 != 0) {
0x000a0f54 bne.w 0xa18fe | goto label_64;
| }
0x000a0f58 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000a0f5a orrs.w sl, sl, r7 | sl |= r7;
0x000a0f5e ldr.w r6, [r2, 0xe0] | r6 = *((r2 + 0xe0));
| if (sl == sl) {
0x000a0f62 beq.w 0xa1920 | goto label_65;
| }
0x000a0f66 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000a0f68 ldrd r4, r5, [r2, 0x48] | __asm ("ldrd r4, r5, [r2, 0x48]");
0x000a0f6c cmp r3, 0 |
| if (r3 != 0) {
0x000a0f6e bne.w 0xa199a | goto label_66;
| }
0x000a0f70 strh r4, [r2, 0x28] | *((r2 + 0x28)) = r4;
0x000a0f72 ldr.w r3, [pc, 0xa9c] | r3 = *(0x000a1a10);
0x000a0f76 add r3, pc | r3 += pc;
| label_40:
0x000a0f78 strd ip, r0, [sp] | __asm ("strd ip, r0, [sp]");
0x000a0f7c mov r2, r4 | r2 = r4;
0x000a0f7e ldr.w r0, [pc, 0xa94] |
0x000a0f82 mov r1, r6 | r1 = r6;
0x000a0f84 str r3, [sp, 8] | var_8h_3 = r3;
0x000a0f86 mov r3, r5 | r3 = r5;
0x000a0f88 add r0, pc | r0 = 0x1429a2;
0x000a0f8a blx 0x852c | r0 = strncmp (r0, r1, r2);
0x000a0f8e mov r4, r0 | r4 = r0;
| label_36:
0x000a0f90 cmp r4, 0 |
| if (r4 == 0) {
0x000a0f92 beq.w 0xa1944 | goto label_46;
| }
0x000a0f96 ldr r5, [sp, 0x50] | r5 = var_50h;
0x000a0f98 mov.w r2, -1 | r2 = -1;
0x000a0f9c mov r1, r4 | r1 = r4;
0x000a0f9e ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x000a0fa0 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x000a0fa2 adds r3, 1 | r3++;
0x000a0fa4 str r3, [r5, 0x38] | *((r5 + 0x38)) = r3;
0x000a0fa6 movs r3, 0 | r3 = 0;
0x000a0fa8 str r3, [sp, 4] | var_4h = r3;
0x000a0faa ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a0fac adds r3, 0xc | r3 += 0xc;
0x000a0fae str r3, [sp] | *(sp) = r3;
0x000a0fb0 movs r3, 1 | r3 = 1;
0x000a0fb2 blx 0x7f24 | fcn_00007f24 ();
0x000a0fb6 ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x000a0fb8 mov r7, r0 | r7 = r0;
0x000a0fba mov r0, r4 | r0 = r4;
0x000a0fbc subs r3, 1 | r3--;
0x000a0fbe str r3, [r5, 0x38] | *((r5 + 0x38)) = r3;
0x000a0fc0 blx 0x84f8 | fcn_000084f8 ();
| if (r7 != 0) {
0x000a0fc4 cbnz r7, 0xa1022 | goto label_10;
| }
| label_11:
0x000a0fc6 ldr.w r2, [pc, 0xa50] | r2 = *(0x000a1a18);
0x000a0fca ldr.w r3, [pc, 0xa40] | r3 = *(0xa1a0e);
0x000a0fce add r2, pc | r2 += pc;
0x000a0fd0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000a0fd2 ldr r2, [r3] | r2 = *(0xa1a0e);
0x000a0fd4 ldr r3, [sp, 0xac] | r3 = var_ach;
0x000a0fd6 eors r2, r3 | r2 ^= r3;
0x000a0fd8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a0fdc bne.w 0xa1acc | goto label_67;
| }
0x000a0fe0 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a0fe2 add sp, 0xb4 |
0x000a0fe4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a0fe8 b.w 0x87584 | void (*0x87584)() ();
| label_58:
0x000a0fec lsls r2, r4, 0xd | r2 = r4 << 0xd;
| if (r2 < r4) {
0x000a0fee bmi 0xa1066 | goto label_68;
| }
0x000a0ff0 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a0ff2 bl 0x5da28 | fcn_0005da28 (r0);
| label_5:
0x000a0ff6 movs r7, 0 | r7 = 0;
0x000a0ff8 mov.w ip, -1 |
0x000a0ffc mov sl, r7 | sl = r7;
| label_6:
0x000a0ffe ldr r1, [sp, 0x40] | r1 = var_40h;
0x000a1000 mov.w r3, -0x80000000 | r3 = -0x80000000;
0x000a1004 movs r2, 0 | r2 = 0;
0x000a1006 mvn r0, 0x80000000 | r0 = ~0x80000000;
0x000a100a strd r2, r3, [r1, 0x48] | __asm ("strd r2, r3, [r1, 0x48]");
0x000a100e ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a1010 strd ip, r0, [r3, 0x50] | __asm ("strd ip, r0, [r3, 0x50]");
0x000a1014 cmp r5, 0 |
0x000a1016 bne 0xa0f34 |
| } while (r5 != 0);
| label_62:
0x000a1018 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000a101a ldrb.w r3, [r3, 0xef] | r3 = *((r3 + 0xef));
0x000a101e b 0xa0f40 | goto label_4;
| label_57:
0x000a1020 movs r7, 1 | r7 = 1;
| label_10:
0x000a1022 ldr.w r2, [pc, 0x9f8] | r2 = *(0x000a1a1c);
0x000a1026 ldr.w r3, [pc, 0x9e4] | r3 = *(0xa1a0e);
0x000a102a add r2, pc | r2 += pc;
0x000a102c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000a102e ldr r2, [r3] | r2 = *(0xa1a0e);
0x000a1030 ldr r3, [sp, 0xac] | r3 = var_ach;
0x000a1032 eors r2, r3 | r2 ^= r3;
0x000a1034 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a1038 bne.w 0xa1acc | goto label_67;
| }
0x000a103c mov r0, r7 | r0 = r7;
0x000a103e add sp, 0xb4 |
0x000a1040 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_59:
0x000a1044 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a1046 bl 0x5da28 | fcn_0005da28 (r0);
0x000a104a cmp r7, 0 |
| if (r7 == 0) {
0x000a104c beq 0xa0ff6 | goto label_5;
| }
0x000a104e mov r0, r7 | r0 = r7;
0x000a1050 blx 0x8550 | r0 = dlclose ();
0x000a1054 cmp r0, 1 |
0x000a1056 it ne |
| if (r0 != 1) {
0x000a1058 movne ip, -1 | goto label_69;
| }
| if (r0 != 1) {
| label_69:
0x000a105c bne 0xa0ffe | goto label_6;
| }
| label_60:
0x000a105e mov r0, r7 | r0 = r7;
0x000a1060 blx 0x8584 | fcn_00008584 ();
0x000a1064 b 0xa0f0a | goto label_7;
| label_68:
0x000a1066 ldr.w sl, [r0, r3, lsl 2] | offset_3 = r3 << 2;
| sl = *((r0 + offset_3));
0x000a106a mov r7, sb | r7 = sb;
0x000a106c ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a106e bl 0x5da28 | fcn_0005da28 (r0);
0x000a1072 movs r0, 0 | r0 = 0;
0x000a1074 mov.w r1, -0x80000000 | r1 = -0x80000000;
0x000a1078 b 0xa0f0a | goto label_7;
| label_63:
0x000a107a mov r0, fp | r0 = fp;
0x000a107c subs r6, 2 | r6 -= 2;
0x000a107e blx 0x8508 | fcn_00008508 ();
0x000a1082 str r0, [sp, 0x60] | var_60h = r0;
0x000a1084 cmp r0, 0 |
| if (r0 == 0) {
0x000a1086 beq.w 0xa1938 | goto label_70;
| }
| label_37:
0x000a108a ldr r2, [sp, 0x40] | r2 = var_40h;
0x000a108c movs r3, 0 | r3 = 0;
0x000a108e mov r0, r8 | r0 = r8;
0x000a1090 str r3, [r2, 0x14] | *((r2 + 0x14)) = r3;
0x000a1092 cmp.w r8, 0 |
| if (r8 != 0) {
0x000a1096 beq 0xa10a0 |
0x000a1098 blx 0x7da0 | fcn_00007da0 ();
0x000a109c ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a109e str r0, [r3, 0x14] | *((r3 + 0x14)) = r0;
| }
0x000a10a0 ldr r5, [sp, 0x50] | r5 = var_50h;
0x000a10a2 ldrb.w r3, [r5, 0xec] | r3 = *((r5 + 0xec));
0x000a10a6 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x000a10a8 ldr r4, [r5, 0x24] | r4 = *((r5 + 0x24));
0x000a10aa ldr r1, [r5, 0x1c] | r1 = *((r5 + 0x1c));
0x000a10ac strd r3, r2, [sp, 0x94] | __asm ("strd r3, r2, [var_98h]");
0x000a10b0 add.w r2, r5, 8 | r2 = r5 + 8;
0x000a10b4 str r2, [sp, 0x6c] | var_6ch = r2;
0x000a10b6 movs r3, 0 | r3 = 0;
0x000a10b8 ldr r2, [sp, 0x60] | r2 = var_60h;
0x000a10ba str r0, [sp, 0x8c] | var_8ch = r0;
0x000a10bc str r6, [sp, 0x9c] | var_9ch = r6;
0x000a10be str r4, [sp, 0x88] | var_88h = r4;
0x000a10c0 str r1, [sp, 0x90] | var_90h = r1;
0x000a10c2 strd r3, r3, [sp, 0xa0] | __asm ("strd r3, r3, [var_a0h]");
0x000a10c6 str r3, [sp, 0xa8] | var_a8h = r3;
0x000a10c8 cmp r2, 0 |
| if (r2 == 0) {
0x000a10ca beq.w 0xa19a8 | goto label_71;
| }
0x000a10ce ldr r5, [sp, 0x60] | r5 = var_60h;
0x000a10d0 mov r6, r3 | r6 = r3;
0x000a10d2 ldr.w r4, [pc, 0x94c] |
0x000a10d6 mov fp, r6 |
0x000a10d8 str r3, [sp, 0x48] | var_48h = r3;
0x000a10da mov r0, r5 | r0 = r5;
0x000a10dc add r4, pc | r4 = 0x142b02;
0x000a10de str r4, [sp, 0x1c] | var_1ch_2 = r4;
0x000a10e0 blx 0x8160 | fcn_00008160 ();
0x000a10e4 movs r1, 1 | r1 = 1;
0x000a10e6 add.w r2, r4, 0x90 | r2 = r4 + 0x90;
0x000a10ea str r0, [sp, 0x20] | var_20h = r0;
0x000a10ec str r5, [sp, 0x18] | var_18h_2 = r5;
0x000a10ee str r1, [sp, 0x44] | var_44h_2 = r1;
0x000a10f0 str r6, [sp, 0x5c] | var_5ch = r6;
0x000a10f2 str r2, [sp, 0x14] | var_14h_2 = r2;
| label_21:
0x000a10f4 ldr r5, [sp, 0x20] | r5 = var_20h;
0x000a10f6 movs r3, 0 | r3 = 0;
0x000a10f8 str r3, [sp, 0xa0] | var_a0h = r3;
0x000a10fa cmp r5, r3 |
| if (r5 <= r3) {
0x000a10fc ble.w 0xa1424 | goto label_72;
| }
| label_16:
0x000a1100 ldr r2, [sp, 0x18] | r2 = var_18h_2;
| label_9:
0x000a1102 mov r4, r2 | r4 = r2;
0x000a1104 ldrb r3, [r2], 1 | r3 = *(r2);
| r2++;
0x000a1108 cmp r3, 0xd |
| if (r3 > 0xd) {
0x000a110a bhi 0xa115e | goto label_73;
| }
0x000a110c cmp r3, 8 |
| if (r3 > 8) {
0x000a110e bhi 0xa1162 | goto label_74;
| }
| label_8:
0x000a1110 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x000a1112 add.w r6, r3, 0x70 | r6 = r3 + 0x70;
0x000a1116 movs r3, 0 | r3 = 0;
| if (r3 == 0) {
| do {
0x000a1118 cbnz r3, 0xa1150 |
0x000a111a ldrb r7, [r6, 4] | r7 = *((r6 + 4));
0x000a111c cmp r7, r5 |
| if (r7 > r5) {
0x000a111e bgt 0xa1150 | goto label_25;
| }
0x000a1120 ldr r1, [r6] | r1 = *(r6);
0x000a1122 mov r2, r7 | r2 = r7;
0x000a1124 mov r0, r4 | r0 = r4;
0x000a1126 blx 0x7e40 | r0 = fcn_00007e40 ();
0x000a112a mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x000a112c cbnz r0, 0xa1150 | goto label_25;
| }
0x000a112e ldrb.w r8, [r6, 6] | r8 = *((r6 + 6));
0x000a1132 cmp.w r8, 1 |
| if (r8 == 1) {
0x000a1136 beq.w 0xa16fa | goto label_75;
| }
| label_27:
0x000a113a movs r3, 0xa | r3 = 0xa;
| label_29:
0x000a113c ldrb r2, [r4, r7] | r2 = *((r4 + r7));
0x000a113e cmp r2, 0xd |
| if (r2 > 0xd) {
0x000a1140 bhi.w 0xa136c | goto label_76;
| }
0x000a1144 cmp r2, 8 |
| if (r2 > 8) {
0x000a1146 bhi.w 0xa1372 | goto label_24;
| }
0x000a114a cmp r2, 0 |
| if (r2 == 0) {
0x000a114c beq.w 0xa1372 | goto label_24;
| }
| }
| label_25:
0x000a1150 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x000a1152 adds r6, 8 | r6 += 8;
0x000a1154 cmp r3, r6 |
| if (r3 == r6) {
0x000a1156 beq.w 0xa12ca | goto label_77;
| }
0x000a115a ldrb r3, [r6, 5] | r3 = *((r6 + 5));
0x000a115c b 0xa1118 |
| } while (1);
| label_73:
0x000a115e cmp r3, 0x20 |
| if (r3 != 0x20) {
0x000a1160 bne 0xa1110 | goto label_8;
| }
| label_74:
0x000a1162 subs r5, 1 | r5--;
| if (r5 != 1) {
0x000a1164 bne 0xa1102 | goto label_9;
| }
| label_13:
0x000a1166 ldrd r3, r2, [sp, 0x44] | __asm ("ldrd r3, r2, [var_48h]");
0x000a116a cmp r2, 0 |
0x000a116c ite eq |
| if (r2 != 0) {
0x000a116e moveq r3, 0 | r3 = 0;
| }
| if (r2 == 0) {
0x000a1170 andne r3, r3, 1 | r3 &= 1;
| }
0x000a1174 cmp r3, 0 |
| if (r3 != 0) {
0x000a1176 bne.w 0xa16e4 | goto label_78;
| }
0x000a117a ldr r3, [sp, 0x5c] | r3 = var_5ch;
| if (r3 == 0) {
0x000a117c cbz r3, 0xa11ae | goto label_79;
| }
0x000a117e cmp r2, 0 |
| if (r2 == 0) {
0x000a1180 beq.w 0xa16e4 | goto label_78;
| }
| do {
0x000a1184 mov r2, r3 | r2 = r3;
0x000a1186 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000a1188 cmp r3, 0 |
0x000a118a bne 0xa1184 |
| } while (r3 != 0);
0x000a118c ldr r3, [sp, 0x48] | r3 = var_48h;
0x000a118e str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x000a1190 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000a1192 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a1194 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x000a1196 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x000a1198 ldr r3, [sp, 0xa8] | r3 = var_a8h;
| if (r3 == 0) {
0x000a119a cbz r3, 0xa11be | goto label_80;
| }
0x000a119c ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000a119e str r3, [sp, 0x48] | var_48h = r3;
| do {
0x000a11a0 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000a11a2 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a11a6 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000a11a8 movs r3, 0 | r3 = 0;
0x000a11aa str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x000a11ac b 0xa1988 | goto label_49;
| label_79:
0x000a11ae ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a11b0 ldr r2, [sp, 0x48] | r2 = var_48h;
0x000a11b2 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x000a11b4 ldr r3, [sp, 0xa8] | r3 = var_a8h;
0x000a11b6 cmp r3, 0 |
0x000a11b8 bne 0xa11a0 |
| } while (r3 != 0);
0x000a11ba ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 == 0) {
0x000a11bc cbz r3, 0xa1208 | goto label_42;
| }
| label_80:
0x000a11be ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a11c0 movs r1, 0xc | r1 = 0xc;
0x000a11c2 add.w r0, r3, 0x10 | r0 = r3 + 0x10;
0x000a11c6 bl 0x5b58c | r0 = fcn_0005b58c (r0, r1);
0x000a11ca mov r7, r0 | r7 = r0;
0x000a11cc cbz r0, 0xa11f4 |
| while (r0 != 0) {
| label_26:
0x000a11ce ldr r4, [sp, 0x40] | r4 = var_40h;
0x000a11d0 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000a11d2 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a11d6 cmp r7, 0x12 |
0x000a11d8 mov.w r3, 0 | r3 = 0;
0x000a11dc str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
| if (r7 != 0x12) {
0x000a11de bne.w 0xa1a88 | goto label_81;
| }
0x000a11e2 ldr.w r1, [pc, 0x840] | r1 = case.0x10766.15;
0x000a11e6 movs r2, 0xc | r2 = 0xc;
0x000a11e8 ldr r0, [sp, 0x6c] | r0 = var_6ch;
0x000a11ea movs r7, 1 | r7 = 1;
0x000a11ec add r1, pc | r1 += pc;
0x000a11ee bl 0x49598 | fcn_00049598 (r0);
0x000a11f2 b 0xa1022 | goto label_10;
0x000a11f4 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a11f6 movs r1, 0xc | r1 = 0xc;
0x000a11f8 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a11fa mov r0, r3 | r0 = r3;
0x000a11fc str r3, [sp, 0x48] | var_48h = r3;
0x000a11fe bl 0x15190 | r0 = fcn_00015190 (r0, r1, r2);
0x000a1202 mov r7, r0 | r7 = r0;
0x000a1204 cmp r0, 0 |
0x000a1206 bne 0xa11ce |
| }
| label_42:
0x000a1208 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a120a movs r3, 0 | r3 = 0;
0x000a120c add r6, sp, 0x78 | r6 += var_78h;
0x000a120e strd r3, r3, [sp, 0x78] | __asm ("strd r3, r3, [var_78h]");
0x000a1212 str r6, [sp] | *(sp) = r6;
0x000a1214 add r2, sp, 0x7c | r2 += var_7ch;
0x000a1216 str r3, [sp, 0x80] | var_80h = r3;
0x000a1218 add r3, sp, 0x80 | r3 += var_80h;
0x000a121a ldr r1, [sp, 0x48] | r1 = var_48h;
0x000a121c ldr r5, [r0] | r5 = *(r0);
0x000a121e bl 0x99dc4 | fcn_00099dc4 (r0, r1, r2, r3, r4);
0x000a1222 ldr r4, [sp, 0x78] | r4 = var_78h;
0x000a1224 cmp r4, 0 |
| if (r4 == 0) {
0x000a1226 bne 0xa1298 |
0x000a1228 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x000a122a cmp r3, 1 |
| if (r3 <= 1) {
0x000a122c ble 0xa1298 | goto label_48;
| }
0x000a122e ldrb.w r2, [r5, 0xec] | r2 = *((r5 + 0xec));
0x000a1232 cmp r2, 0 |
| if (r2 == 0) {
0x000a1234 beq 0xa1298 | goto label_48;
| }
0x000a1236 ldr r2, [sp, 0x80] | r2 = var_80h;
0x000a1238 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x000a123c mov r1, r4 | r1 = r4;
0x000a123e adds r0, r3, r2 | r0 = r3 + r2;
0x000a1240 lsls r0, r0, 3 | r0 <<= 3;
0x000a1242 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a1246 mov r5, r0 | r5 = r0;
0x000a1248 cmp r0, 0 |
| if (r0 == 0) {
0x000a124a beq.w 0xa1a4a | goto label_82;
| }
0x000a124e mov r1, r4 | r1 = r4;
0x000a1250 ldr r4, [sp, 0x7c] | r4 = var_7ch;
0x000a1252 str r0, [sp, 0x84] | var_84h = r0;
0x000a1254 add r3, sp, 0x88 | r3 += var_88h;
0x000a1256 str r3, [sp] | *(sp) = r3;
0x000a1258 add r3, sp, 0x84 | r3 += var_84h;
0x000a125a str r6, [sp, 4] | var_4h = r6;
0x000a125c add.w r4, r4, r4, lsl 1 | r4 += (r4 << 1);
0x000a1260 add.w r4, r0, r4, lsl 3 | r4 = r0 + (r4 << 3);
0x000a1264 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a1266 str r4, [sp, 0x88] | var_88h = r4;
0x000a1268 ldr r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x000a126a bl 0xa0d00 | fcn_000a0d00 (r0, r1, r2, r3, r4, r5, r6);
0x000a126e ldr r2, [sp, 0x88] | r2 = var_88h;
0x000a1270 ldr r3, [sp, 0x84] | r3 = var_84h;
0x000a1272 ldr r1, [sp, 0x78] | r1 = var_78h;
0x000a1274 subs r2, r2, r4 | r2 -= r4;
0x000a1276 asrs r2, r2, 2 | r2 >>= 2;
0x000a1278 subs r3, r3, r5 | r3 -= r5;
0x000a127a asrs r3, r3, 3 | r3 >>= 3;
0x000a127c str r2, [sp, 0x80] | var_80h = r2;
0x000a127e movw r2, 0xaaab |
| /* if there is a right shift of 1, then it's a division by 1/3 */
0x000a1282 movt r2, 0xaaaa | r2 = 0xaaaaaaab;
0x000a1286 mul r3, r2, r3 | r3 = r2 * r3;
0x000a128a str r3, [sp, 0x7c] | var_7ch = r3;
0x000a128c cmp r1, 0 |
| if (r1 == 0) {
0x000a128e beq.w 0xa1a90 | goto label_83;
| }
| label_50:
0x000a1292 mov r0, r5 | r0 = r5;
0x000a1294 blx 0x84f8 | fcn_000084f8 ();
| }
| label_48:
0x000a1298 ldr r5, [sp, 0x40] | r5 = var_40h;
0x000a129a mov r2, r6 | r2 = r6;
0x000a129c ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x000a129e mov r0, r5 | r0 = r5;
0x000a12a0 bl 0xa0c8c | fcn_000a0c8c (r0, r1, r2);
0x000a12a4 ldr r4, [sp, 0x50] | r4 = var_50h;
0x000a12a6 ldr r7, [sp, 0x78] | r7 = var_78h;
0x000a12a8 ldr.w r0, [r4, 0xfc] | r0 = *((r4 + 0xfc));
0x000a12ac blx 0x8300 | fcn_00008300 ();
0x000a12b0 movs r3, 0 | r3 = 0;
0x000a12b2 str.w r3, [r4, 0xfc] | __asm ("str.w r3, [r4, 0xfc]");
0x000a12b6 cmp r7, 0 |
| if (r7 != 0) {
0x000a12b8 bne.w 0xa1022 | goto label_10;
| }
0x000a12bc ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x000a12be vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000a12c2 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x000a12c4 vstr d16, [r5, 0x20] | __asm ("vstr d16, [r5, 0x20]");
0x000a12c8 b 0xa0fc6 | goto label_11;
| label_77:
0x000a12ca ldrb r3, [r4] | r3 = *(r4);
0x000a12cc cmp r3, 0x22 |
| if (r3 == 0x22) {
0x000a12ce beq.w 0xa1448 | goto label_84;
| }
0x000a12d2 ldrd r7, r3, [sp, 0x98] | __asm ("ldrd r7, r3, [var_9ch]");
0x000a12d6 cmp r7, 0 |
0x000a12d8 str r3, [sp, 0x2c] | var_2ch_2 = r3;
| if (r7 <= 0) {
0x000a12da ble.w 0xa142e | goto label_85;
| }
0x000a12de ldr r6, [sp, 0x90] | r6 = var_90h;
0x000a12e0 mov.w r8, 0 | r8 = 0;
0x000a12e4 subs r6, 4 | r6 -= 4;
0x000a12e6 b 0xa12f2 |
| while (r0 >= r5) {
| label_12:
0x000a12e8 add.w r8, r8, 1 | r8++;
0x000a12ec cmp r8, r7 |
| if (r8 == r7) {
0x000a12ee beq.w 0xa142e | goto label_85;
| }
0x000a12f2 ldr sl, [r6, 4]! | sl = *((r6 += 4));
0x000a12f6 mov r0, sl | r0 = sl;
0x000a12f8 blx 0x8160 | r0 = fcn_00008160 ();
0x000a12fc cmp r0, r5 |
0x000a12fe mov sb, r0 | sb = r0;
0x000a1300 bge 0xa12e8 |
| }
0x000a1302 ldrb r3, [r4, r0] | r3 = *((r4 + r0));
0x000a1304 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x000a1306 bne 0xa12e8 | goto label_12;
| }
0x000a1308 mov r0, sl | r0 = sl;
0x000a130a mov r2, sb | r2 = sb;
0x000a130c mov r1, r4 | r1 = r4;
0x000a130e blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a1312 cmp r0, 0 |
| if (r0 != 0) {
0x000a1314 bne 0xa12e8 | goto label_12;
| }
0x000a1316 ldr r2, [sp, 0x18] | r2 = var_18h_2;
0x000a1318 str.w r8, [sp, 0x2c] | __asm ("str.w r8, [var_2ch_2]");
0x000a131c ldr r0, [sp, 0x88] | r0 = var_88h;
0x000a131e subs r4, r4, r2 | r4 -= r2;
0x000a1320 add r4, sb | r4 += sb;
0x000a1322 adds r3, r4, 1 | r3 = r4 + 1;
0x000a1324 ldr.w sl, [r0] | sl = *(r0);
0x000a1328 add.w r8, r2, r3 | r8 = r2 + r3;
0x000a132c ldr r2, [sp, 0x20] | r2 = var_20h;
0x000a132e str r3, [sp, 0x24] | var_24h = r3;
0x000a1330 subs r5, r2, r3 | r5 = r2 - r3;
0x000a1332 cmp r5, 0 |
| if (r5 <= 0) {
0x000a1334 ble.w 0xa1444 | goto label_86;
| }
| label_17:
0x000a1338 add.w r3, r8, -1 | r3 = r8 + -1;
0x000a133c movs r4, 0 | r4 = 0;
0x000a133e b 0xa1346 |
| while (r2 != 0x22) {
0x000a1340 adds r4, 1 | r4++;
0x000a1342 cmp r4, r5 |
| if (r4 == r5) {
0x000a1344 beq 0xa134e | goto label_18;
| }
0x000a1346 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x000a134a cmp r2, 0x22 |
0x000a134c bne 0xa1340 |
| }
| label_18:
0x000a134e add r3, sp, 0x70 | r3 += var_70h;
0x000a1350 ldr r1, [sp, 0x8c] | r1 = var_8ch;
0x000a1352 str r3, [sp] | *(sp) = r3;
0x000a1354 mov r2, r8 | r2 = r8;
0x000a1356 mov r3, r4 | r3 = r4;
0x000a1358 bl 0xaa78 | r0 = fcn_0000aa78 (r0, r1, r2, r3, r4);
0x000a135c mov r7, r0 | r7 = r0;
0x000a135e cmp r0, 0 |
| if (r0 == 0) {
0x000a1360 beq.w 0xa1680 | goto label_87;
| }
| label_19:
0x000a1364 cmp r7, 0x65 |
| if (r7 != 0x65) {
0x000a1366 bne.w 0xa16e6 | goto label_34;
| }
0x000a136a b 0xa1166 | goto label_13;
| label_76:
0x000a136c cmp r2, 0x20 |
| if (r2 != 0x20) {
0x000a136e bne.w 0xa16d0 | goto label_88;
| }
| label_24:
0x000a1372 movs r0, 0x30 | r0 = 0x30;
0x000a1374 movs r1, 0 | r1 = 0;
0x000a1376 str r3, [sp, 0x24] | var_24h = r3;
0x000a1378 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a137c mov sb, r0 | sb = r0;
0x000a137e cmp r0, 0 |
| if (r0 == 0) {
0x000a1380 beq.w 0xa194a | goto label_89;
| }
0x000a1384 movs r2, 0x28 | r2 = 0x28;
0x000a1386 movs r1, 0 | r1 = 0;
0x000a1388 adds r0, 8 | r0 += 8;
0x000a138a blx 0x8264 | fcn_00008264 ();
0x000a138e ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a1390 ldr r2, [sp, 0x18] | r2 = var_18h_2;
0x000a1392 str.w r8, [sb] | __asm ("str.w r8, [sb]");
0x000a1396 str.w r3, [sb, 4] | __asm ("str.w r3, [sb, 4]");
0x000a139a mov r3, r8 | r3 = r8;
0x000a139c cmp r3, 5 |
0x000a139e sub.w r4, r4, r2 | r4 -= r2;
0x000a13a2 add.w r5, r4, r7 | r5 = r4 + r7;
| if (r3 == 5) {
0x000a13a6 beq.w 0xa1522 | goto label_30;
| }
| label_20:
0x000a13aa ldr r2, [sp, 0x44] | r2 = var_44h_2;
0x000a13ac cmp r2, 0 |
| if (r2 != 0) {
0x000a13ae bne.w 0xa1968 | goto label_90;
| }
0x000a13b2 cmp.w fp, 0 |
| if (fp != 0) {
0x000a13b6 beq 0xa13c6 |
0x000a13b8 cmp r3, 1 |
| if (r3 != 1) {
0x000a13ba bne 0xa13c6 | goto label_91;
| }
0x000a13bc ldr.w r3, [fp] | r3 = *(fp);
0x000a13c0 cmp r3, 5 |
| if (r3 != 5) {
0x000a13c2 bne.w 0xa1968 | goto label_90;
| }
| }
| label_91:
0x000a13c6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a13c8 subs r3, r3, r5 | r3 -= r5;
0x000a13ca str r3, [sp, 0x20] | var_20h = r3;
0x000a13cc ldr.w r3, [fp, 8] | r3 = *(arg_8h);
| if (r3 != 0) {
0x000a13d0 cbnz r3, 0xa13e8 | goto label_92;
| }
0x000a13d2 b 0xa19c0 | goto label_93;
| label_14:
0x000a13d4 cmp r2, 1 |
| if (r2 == 1) {
0x000a13d6 beq 0xa13fa | goto label_94;
| }
0x000a13d8 cmp r2, 4 |
| if (r2 == 4) {
0x000a13da beq 0xa13fa | goto label_94;
| }
| do {
| label_15:
0x000a13dc ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x000a13de mov fp, r3 |
0x000a13e0 cmp r2, 0 |
| if (r2 == 0) {
0x000a13e2 beq.w 0xa18e6 | goto label_95;
| }
0x000a13e6 mov r3, r2 | r3 = r2;
| label_92:
0x000a13e8 ldr r2, [r3] | r2 = *(r3);
0x000a13ea cmp r2, 1 |
0x000a13ec beq 0xa13dc |
| } while (r2 == 1);
0x000a13ee cmp r2, 4 |
0x000a13f0 ldr.w r2, [sb] | r2 = *(sb);
| if (r2 != 4) {
0x000a13f4 bne 0xa13d4 | goto label_14;
| }
0x000a13f6 cmp r2, 1 |
| if (r2 != 1) {
0x000a13f8 bne 0xa13dc | goto label_15;
| }
| label_94:
0x000a13fa str.w sb, [r3, 0x10] | __asm ("str.w sb, [r3, 0x10]");
0x000a13fe str.w r3, [sb, 8] | __asm ("str.w r3, [sb, 8]");
0x000a1402 mov r3, fp | r3 = fp;
| label_35:
0x000a1404 ldr r2, [sp, 0x18] | r2 = var_18h_2;
0x000a1406 mov fp, sb |
0x000a1408 str.w r3, [sb, 0xc] | __asm ("str.w r3, [sb, 0xc]");
0x000a140c str.w sb, [r3, 8] | __asm ("str.w sb, [r3, 8]");
0x000a1410 movs r3, 1 | r3 = 1;
0x000a1412 add r2, r5 | r2 += r5;
0x000a1414 ldr r5, [sp, 0x20] | r5 = var_20h;
0x000a1416 str r3, [sp, 0x44] | var_44h_2 = r3;
0x000a1418 movs r3, 0 | r3 = 0;
0x000a141a str r2, [sp, 0x18] | var_18h_2 = r2;
0x000a141c cmp r5, r3 |
0x000a141e str r3, [sp, 0xa0] | var_a0h = r3;
| if (r5 > r3) {
0x000a1420 bgt.w 0xa1100 | goto label_16;
| }
| if (r5 == r3) {
| label_72:
0x000a1424 beq.w 0xa1166 | goto label_13;
| }
0x000a1428 ldr r4, [sp, 0x18] | r4 = var_18h_2;
0x000a142a ldr r5, [sp, 0x20] | r5 = var_20h;
0x000a142c b 0xa1110 | goto label_8;
| label_85:
0x000a142e ldr r5, [sp, 0x20] | r5 = var_20h;
0x000a1430 movs r3, 0 | r3 = 0;
0x000a1432 ldr r0, [sp, 0x88] | r0 = var_88h;
0x000a1434 ldr.w r8, [sp, 0x18] | r8 = var_18h_2;
0x000a1438 cmp r5, 0 |
0x000a143a str r3, [sp, 0x24] | var_24h = r3;
0x000a143c ldr.w sl, [r0] | sl = *(r0);
| if (r5 > 0) {
0x000a1440 bgt.w 0xa1338 | goto label_17;
| }
| label_86:
0x000a1444 movs r4, 0 | r4 = 0;
0x000a1446 b 0xa134e | goto label_18;
| label_84:
0x000a1448 cmp r5, 1 |
| if (r5 <= 1) {
0x000a144a ble.w 0xa194e | goto label_96;
| }
0x000a144e mov r3, r4 | r3 = r4;
0x000a1450 movs r6, 1 | r6 = 1;
0x000a1452 b 0xa145c |
| while (r2 != 0x22) {
0x000a1454 adds r6, 1 | r6++;
0x000a1456 cmp r6, r5 |
| if (r6 == r5) {
0x000a1458 beq.w 0xa16e4 | goto label_78;
| }
0x000a145c ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x000a1460 cmp r2, 0x22 |
0x000a1462 bne 0xa1454 |
| }
| label_38:
0x000a1464 cmp r6, r5 |
| if (r6 == r5) {
0x000a1466 beq.w 0xa16e4 | goto label_78;
| }
0x000a146a ldr r0, [sp, 0x88] | r0 = var_88h;
0x000a146c movs r3, 0 | r3 = 0;
0x000a146e str r3, [sp, 0x70] | var_70h = r3;
0x000a1470 subs r5, r6, 1 | r5 = r6 - 1;
0x000a1472 adds r2, r4, 1 | r2 = r4 + 1;
0x000a1474 ldr r1, [sp, 0x8c] | r1 = var_8ch;
0x000a1476 ldr r3, [r0] | r3 = *(r0);
0x000a1478 str r2, [sp, 0x54] | var_54h = r2;
0x000a147a str r5, [sp, 0x4c] | var_4ch = r5;
0x000a147c str r3, [sp, 0x24] | var_24h = r3;
0x000a147e add r3, sp, 0x70 | r3 += var_70h;
0x000a1480 str r3, [sp] | *(sp) = r3;
0x000a1482 mov r3, r5 | r3 = r5;
0x000a1484 bl 0xaa78 | r0 = fcn_0000aa78 (r0, r1, r2, r3, r4);
0x000a1488 mov r7, r0 | r7 = r0;
0x000a148a cmp r0, 0 |
| if (r0 != 0) {
0x000a148c bne.w 0xa18a8 | goto label_97;
| }
0x000a1490 ldr r3, [sp, 0x70] | r3 = var_70h;
0x000a1492 add r2, sp, 0x78 | r2 += var_78h;
0x000a1494 str r2, [sp, 0x38] | var_38h = r2;
0x000a1496 add r2, sp, 0x74 | r2 += var_74h;
0x000a1498 str r2, [sp, 0x2c] | var_2ch_2 = r2;
0x000a149a mov sl, r0 | sl = r0;
0x000a149c str r3, [sp, 0x28] | var_28h_2 = r3;
0x000a149e add r3, sp, 0x7c | r3 += var_7ch;
0x000a14a0 add r2, sp, 0x84 | r2 += var_84h;
0x000a14a2 strd fp, r6, [sp, 0x64] | __asm ("strd fp, r6, [var_64h]");
0x000a14a6 mov sb, r0 | sb = r0;
0x000a14a8 mov r6, r3 | r6 = r3;
0x000a14aa str r2, [sp, 0x34] | var_34h = r2;
0x000a14ac add r2, sp, 0x80 | r2 += var_80h;
0x000a14ae str r0, [sp, 0x3c] | var_3ch = r0;
0x000a14b0 str r2, [sp, 0x30] | var_30h_2 = r2;
0x000a14b2 str r4, [sp, 0x58] | var_58h = r4;
| label_23:
0x000a14b4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a14b6 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000a14b8 ldrd r0, r1, [sp, 0x28] | __asm ("ldrd r0, r1, [var_28h_2]");
0x000a14bc str r3, [sp, 4] | var_4h = r3;
0x000a14be ldr r3, [sp, 0x30] | r3 = var_30h_2;
0x000a14c0 str r3, [sp] | *(sp) = r3;
0x000a14c2 movs r3, 0 | r3 = 0;
0x000a14c4 strd r3, r3, [sp, 0x78] | __asm ("strd r3, r3, [var_78h]");
0x000a14c8 strd r3, r3, [sp, 0x80] | __asm ("strd r3, r3, [var_80h]");
0x000a14cc ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a14ce ldr r4, [r3, 0x14] | r4 = *((r3 + 0x14));
0x000a14d0 mov r3, r6 | r3 = r6;
0x000a14d2 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x000a14d4 mov r5, r0 | r5 = r0;
0x000a14d6 cmp r0, 0 |
| if (r0 == 0) {
0x000a14d8 beq 0xa15d4 | goto label_98;
| }
0x000a14da ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a14dc ldr r0, [sp, 0x28] | r0 = var_28h_2;
0x000a14de str r7, [sp, 0x28] | var_28h_2 = r7;
0x000a14e0 mov r7, r5 | r7 = r5;
0x000a14e2 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a14e4 ldrd fp, r6, [sp, 0x64] | __asm ("ldrd fp, r6, [var_64h]");
0x000a14e8 ldr r4, [sp, 0x58] | r4 = var_58h;
0x000a14ea blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000a14ec movs r3, 0 | r3 = 0;
0x000a14ee str r3, [sp, 0x70] | var_70h = r3;
| label_33:
0x000a14f0 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x000a14f2 cmp r7, 0x65 |
0x000a14f4 sub.w r3, r4, r3 | r3 = r4 - r3;
0x000a14f8 add r3, r6 | r3 += r6;
0x000a14fa add.w r5, r3, 1 | r5 = r3 + 1;
| if (r7 == 0x65) {
0x000a14fe beq 0xa1556 | goto label_99;
| }
0x000a1500 cmp r7, 0 |
| if (r7 != 0) {
0x000a1502 bne.w 0xa1364 | goto label_19;
| }
| label_22:
0x000a1506 cmp.w sb, 0 |
| if (sb == 0) {
0x000a150a beq.w 0xa1a50 | goto label_100;
| }
0x000a150e ldr.w r3, [sb] | r3 = *(sb);
0x000a1512 cmp r3, 5 |
| if (r3 == 5) {
0x000a1514 beq.w 0xa176a | goto label_101;
| }
| label_47:
0x000a1518 ldr.w r2, [sb, 0xc] | r2 = *((sb + 0xc));
0x000a151c cmp r2, 0 |
| if (r2 == 0) {
0x000a151e beq.w 0xa13aa | goto label_20;
| }
| label_30:
0x000a1522 ldr r2, [sp, 0x44] | r2 = var_44h_2;
0x000a1524 cmp r2, 0 |
| if (r2 == 0) {
0x000a1526 beq.w 0xa17b4 | goto label_102;
| }
0x000a152a cmp.w fp, 0 |
| if (fp != 0) {
0x000a152e bne.w 0xa1958 | goto label_103;
| }
| label_39:
0x000a1532 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a1534 subs r3, r3, r5 | r3 -= r5;
0x000a1536 str r3, [sp, 0x20] | var_20h = r3;
0x000a1538 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000a153a cmp r3, 0 |
| if (r3 == 0) {
0x000a153c beq.w 0xa17f2 | goto label_104;
| }
| label_31:
0x000a1540 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x000a1542 str.w sb, [fp, 0x10] | __asm ("str.w sb, [arg_10h]");
0x000a1546 str.w fp, [sb, 8] | __asm ("str.w fp, [sb, 8]");
0x000a154a mov fp, sb |
0x000a154c add r3, r5 | r3 += r5;
0x000a154e str r3, [sp, 0x18] | var_18h_2 = r3;
0x000a1550 movs r3, 0 | r3 = 0;
0x000a1552 str r3, [sp, 0x44] | var_44h_2 = r3;
0x000a1554 b 0xa10f4 | goto label_21;
| label_99:
0x000a1556 add.w r3, sl, sl, lsl 1 | r3 = sl + (sl << 1);
0x000a155a mov r0, sb | r0 = sb;
0x000a155c lsls r4, r3, 3 | r4 = r3 << 3;
0x000a155e ldr r3, [sp, 0x28] | r3 = var_28h_2;
0x000a1560 add.w r2, r3, 0x90 | r2 = r3 + 0x90;
0x000a1564 movs r3, 0 | r3 = 0;
0x000a1566 add r2, r4 | r2 += r4;
0x000a1568 blx 0x8638 | r0 = fcn_00008638 ();
0x000a156c mov r8, r0 | r8 = r0;
0x000a156e cmp r0, 0 |
| if (r0 == 0) {
0x000a1570 beq.w 0xa19c8 | goto label_105;
| }
0x000a1574 movs r2, 0x78 | r2 = 0x78;
0x000a1576 movs r1, 0 | r1 = 0;
0x000a1578 blx 0x8264 | fcn_00008264 ();
0x000a157c ldr r2, [sp, 0x9c] | r2 = var_9ch;
0x000a157e mov r3, r8 | r3 = r8;
0x000a1580 movs r1, 5 | r1 = 5;
0x000a1582 adds r4, 0x48 | r4 += 0x48;
0x000a1584 str r1, [r3], 0x30 | *(r3) = r1;
| r3 += 0x30;
0x000a1588 add r4, r3 | r4 += r3;
0x000a158a str.w r2, [r8, 0x74] | __asm ("str.w r2, [r8, 0x74]");
0x000a158e ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000a1590 str.w r3, [r8, 0x14] | __asm ("str.w r3, [r8, 0x14]");
0x000a1594 str.w sl, [r8, 0x70] | __asm ("str.w sl, [r8, 0x70]");
| if (r2 != 0) {
0x000a1598 cbz r2, 0xa15b4 |
0x000a159a ldr r6, [sp, 0x3c] | r6 = var_3ch;
0x000a159c mov r0, r4 | r0 = r4;
0x000a159e ldr r2, [sp, 0x28] | r2 = var_28h_2;
0x000a15a0 mov r1, r6 | r1 = r6;
0x000a15a2 blx 0x7dcc | fcn_00007dcc ();
0x000a15a6 mov r0, r6 | r0 = r6;
0x000a15a8 blx 0x84f8 | fcn_000084f8 ();
0x000a15ac ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x000a15b0 ldr.w sl, [r3, 0x40] | sl = *((r3 + 0x40));
| }
0x000a15b4 cmp.w sl, 0 |
| if (sl <= 0) {
0x000a15b8 ble.w 0xa1a3c | goto label_106;
| }
0x000a15bc movs r2, 0 | r2 = 0;
| do {
0x000a15be ldr r1, [r3, 0x4c] | r1 = *((r3 + 0x4c));
0x000a15c0 adds r2, 1 | r2++;
0x000a15c2 cmp r2, sl |
0x000a15c4 str r4, [r3, 0x48] | *((r3 + 0x48)) = r4;
0x000a15c6 add.w r3, r3, 0x18 | r3 += 0x18;
0x000a15ca add r4, r1 | r4 += r1;
0x000a15cc bne 0xa15be |
| } while (r2 != sl);
0x000a15ce mov sb, r8 | sb = r8;
0x000a15d0 movs r7, 0 | r7 = 0;
0x000a15d2 b 0xa1506 | goto label_22;
| label_98:
0x000a15d4 lsl.w fp, sl, 1 |
0x000a15d8 mov r3, r0 | r3 = r0;
0x000a15da mov r0, sb | r0 = sb;
0x000a15dc add.w r4, fp, sl | r4 = fp + sl;
0x000a15e0 lsls r4, r4, 3 | r4 <<= 3;
0x000a15e2 add.w r2, r4, 0x90 | r2 = r4 + 0x90;
0x000a15e6 blx 0x8638 | r0 = fcn_00008638 ();
0x000a15ea mov r8, r0 | r8 = r0;
0x000a15ec cmp r0, 0 |
| if (r0 == 0) {
0x000a15ee beq.w 0xa18b8 | goto label_107;
| }
0x000a15f2 ldr r2, [sp, 0x78] | r2 = var_78h;
0x000a15f4 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000a15f6 add r2, r7 | r2 += r7;
0x000a15f8 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000a15fa blx 0x8638 | r0 = fcn_00008638 ();
0x000a15fe mov sb, r0 | sb = r0;
0x000a1600 cmp r0, 0 |
| if (r0 == 0) {
0x000a1602 beq.w 0xa18d8 | goto label_108;
| }
0x000a1606 add.w r2, r4, 0x48 | r2 = r4 + 0x48;
0x000a160a add.w r3, r8, 0x30 | r3 = r8 + 0x30;
0x000a160e str r5, [r3, r2] | *((r3 + r2)) = r5;
0x000a1610 add r3, r2 | r3 += r2;
0x000a1612 str r5, [r3, 4] | *((r3 + 4)) = r5;
0x000a1614 add.w r0, sb, r7 | r0 = sb + r7;
0x000a1618 str r5, [r3, 8] | *((r3 + 8)) = r5;
0x000a161a add r4, r8 | r4 += r8;
0x000a161c str r5, [r3, 0xc] | *((r3 + 0xc)) = r5;
0x000a161e str r5, [r3, 0x10] | *((r3 + 0x10)) = r5;
0x000a1620 str r5, [r3, 0x14] | *((r3 + 0x14)) = r5;
0x000a1622 ldrd r1, r2, [sp, 0x74] | __asm ("ldrd r1, r2, [var_78h]");
0x000a1626 blx 0x7dcc | fcn_00007dcc ();
0x000a162a ldr r3, [sp, 0x78] | r3 = var_78h;
0x000a162c ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x000a162e str r3, [r4, 0x7c] | *((r4 + 0x7c)) = r3;
0x000a1630 add r7, r3 | r7 += r3;
0x000a1632 ldr r3, [sp, 0x80] | r3 = var_80h;
0x000a1634 cmp r2, r3 |
0x000a1636 it le |
| if (r2 > r3) {
0x000a1638 movle r2, r5 | r2 = r5;
| }
| if (r2 > r3) {
0x000a163a ble 0xa164a |
0x000a163c ldr r2, [sp, 0x54] | r2 = var_54h;
0x000a163e ldrb r2, [r2, r3] | r2 = *((r2 + r3));
0x000a1640 sub.w r2, r2, 0x2a | r2 -= 0x2a;
0x000a1644 clz r2, r2 | r2 &= r2;
0x000a1648 lsrs r2, r2, 5 | r2 >>= 5;
| }
0x000a164a add.w r3, fp, sl | r3 = fp + sl;
0x000a164e add.w r3, r8, r3, lsl 3 | r3 = r8 + (r3 << 3);
0x000a1652 str.w r2, [r3, 0x80] | __asm ("str.w r2, [r3, 0x80]");
0x000a1656 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x000a1658 cmp r3, 0 |
| if (r3 > 0) {
0x000a165a ble 0xa166a |
0x000a165c ldr r2, [sp, 0x58] | r2 = var_58h;
0x000a165e ldrb r5, [r2, r3] | r5 = *((r2 + r3));
0x000a1660 sub.w r5, r5, 0x5e | r5 -= 0x5e;
0x000a1664 clz r5, r5 | r5 &= r5;
0x000a1668 lsrs r5, r5, 5 | r5 >>= 5;
| }
0x000a166a add fp, sl |
0x000a166c str.w sb, [sp, 0x3c] | __asm ("str.w sb, [var_3ch]");
0x000a1670 add.w fp, r8, fp, lsl 3 |
0x000a1674 add.w sl, sl, 1 | sl++;
0x000a1678 mov sb, r8 | sb = r8;
0x000a167a str.w r5, [fp, 0x84] | __asm ("str.w r5, [arg_84h]");
0x000a167e b 0xa14b4 | goto label_23;
| label_87:
0x000a1680 add r3, sp, 0x84 | r3 += var_84h;
0x000a1682 strd r0, r0, [sp, 0x78] | __asm ("strd r0, r0, [var_78h]");
0x000a1686 strd r0, r0, [sp, 0x80] | __asm ("strd r0, r0, [var_80h]");
0x000a168a add r2, sp, 0x78 | r2 += var_78h;
0x000a168c ldr r0, [sp, 0x70] | r0 = var_70h;
0x000a168e add r1, sp, 0x74 | r1 += var_74h;
0x000a1690 str r3, [sp, 4] | var_4h = r3;
0x000a1692 add r3, sp, 0x80 | r3 += var_80h;
0x000a1694 str r3, [sp] | *(sp) = r3;
0x000a1696 add r3, sp, 0x7c | r3 += var_7ch;
0x000a1698 ldr.w r6, [sl, 0x14] | r6 = *((sl + 0x14));
0x000a169c str r0, [sp, 0x28] | var_28h_2 = r0;
0x000a169e blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000a16a0 cmp r0, 0 |
| if (r0 == 0) {
0x000a16a2 beq.w 0xa1804 | goto label_109;
| }
0x000a16a6 subs r2, r4, 0 | r2 = r4 - 0;
0x000a16a8 mov.w sb, 0 | sb = 0;
0x000a16ac it ne |
| if (r2 == r4) {
0x000a16ae movne r2, 1 | r2 = 1;
| }
0x000a16b0 cmp r0, 0x65 |
0x000a16b2 it ne |
| if (r0 == 0x65) {
0x000a16b4 movne r2, 0 | r2 = 0;
| }
0x000a16b6 cmp r2, 0 |
0x000a16b8 it eq |
| if (r2 != 0) {
0x000a16ba moveq r7, r0 | r7 = r0;
| }
| label_32:
0x000a16bc ldr r5, [sp, 0x24] | r5 = var_24h;
0x000a16be ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a16c2 ldr r0, [sp, 0x28] | r0 = var_28h_2;
0x000a16c4 add r5, r4 | r5 += r4;
0x000a16c6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x000a16c8 cmp r7, 0 |
| if (r7 != 0) {
0x000a16ca bne.w 0xa1364 | goto label_19;
| }
0x000a16ce b 0xa1506 | goto label_22;
| label_88:
0x000a16d0 cmp r2, 0x22 |
| if (r2 == 0x22) {
0x000a16d2 beq.w 0xa1372 | goto label_24;
| }
| if (r2 < 0x22) {
0x000a16d6 bls.w 0xa1150 | goto label_25;
| }
0x000a16da subs r2, 0x28 | r2 -= 0x28;
0x000a16dc cmp r2, 1 |
| if (r2 > 1) {
0x000a16de bhi.w 0xa1150 | goto label_25;
| }
0x000a16e2 b 0xa1372 | goto label_24;
| label_78:
0x000a16e4 movs r7, 1 | r7 = 1;
| label_34:
0x000a16e6 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000a16e8 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a16ec ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x000a16ee bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a16f2 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000a16f4 movs r3, 0 | r3 = 0;
0x000a16f6 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x000a16f8 b 0xa11ce | goto label_26;
| label_75:
0x000a16fa ldrb r2, [r4, 4] | r2 = *((r4 + 4));
0x000a16fc cmp r2, 0x2f |
| if (r2 != 0x2f) {
0x000a16fe bne.w 0xa113a | goto label_27;
| }
0x000a1702 ldrb r2, [r4, 5] | r2 = *((r4 + 5));
0x000a1704 subs r2, 0x30 | r2 -= 0x30;
0x000a1706 cmp r2, 9 |
| if (r2 > 9) {
0x000a1708 bhi.w 0xa113a | goto label_27;
| }
0x000a170c adds r1, r7, 1 | r1 = r7 + 1;
0x000a170e ldrb r2, [r4, r1] | r2 = *((r4 + r1));
0x000a1710 add r1, r4 | r1 += r4;
0x000a1712 subs r2, 0x30 | r2 -= 0x30;
0x000a1714 uxtb r0, r2 | r0 = (int8_t) r2;
0x000a1716 cmp r0, 9 |
| if (r0 > 9) {
0x000a1718 bhi.w 0xa1a80 | goto label_110;
| }
0x000a171c asrs r0, r2, 0x1f | r0 = r2 >> 0x1f;
0x000a171e mov lr, r1 | lr = r1;
0x000a1720 b 0xa174c | goto label_111;
| label_28:
0x000a1722 lsl.w ip, r0, 2 |
0x000a1726 lsls r1, r2, 2 | r1 = r2 << 2;
0x000a1728 orr.w ip, ip, r2, lsr 30 |
0x000a172c adds r2, r1, r2 | r2 = r1 + r2;
0x000a172e adc.w ip, r0, ip | __asm ("adc.w ip, r0, ip");
0x000a1732 adds r2, r2, r2 | r2 += r2;
0x000a1734 adc.w ip, ip, ip | __asm ("adc.w ip, ip, ip");
0x000a1738 adds.w r2, sl, r2 | r2 = sl + r2;
0x000a173c adc.w r0, ip, sl, asr 31 | __asm ("adc.w r0, ip, sl, asr 31");
0x000a1740 cmp.w r2, -0x80000000 |
0x000a1744 sbcs r1, r0, 0 | __asm ("sbcs r1, r0, 0");
| if (r2 >= -0x80000000) {
0x000a1748 bhs.w 0xa113a | goto label_27;
| }
| label_111:
0x000a174c ldrb sl, [lr, 1]! | sl = *((lr += 1));
0x000a1750 mov sb, r3 | sb = r3;
0x000a1752 adds r3, 1 | r3++;
0x000a1754 sub.w sl, sl, 0x30 | sl -= 0x30;
0x000a1758 uxtb.w r1, sl | r1 = (int8_t) sl;
0x000a175c cmp r1, 9 |
| if (r1 < 9) {
0x000a175e bls 0xa1722 | goto label_28;
| }
0x000a1760 add.w sb, sb, 2 | sb += 2;
0x000a1764 mov r3, r2 | r3 = r2;
0x000a1766 add r7, sb | r7 += sb;
0x000a1768 b 0xa113c | goto label_29;
| label_101:
0x000a176a ldr r2, [sp, 0xa0] | r2 = var_a0h;
0x000a176c cmp r2, 0 |
| if (r2 == 0) {
0x000a176e beq.w 0xa1522 | goto label_30;
| }
0x000a1772 movs r0, 0x30 | r0 = 0x30;
0x000a1774 movs r1, 0 | r1 = 0;
0x000a1776 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a177a mov r4, r0 | r4 = r0;
0x000a177c cmp r0, 0 |
| if (r0 == 0) {
0x000a177e beq.w 0xa1a60 | goto label_112;
| }
0x000a1782 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x000a1784 movs r2, 0x2c | r2 = 0x2c;
0x000a1786 movs r1, 0 | r1 = 0;
0x000a1788 adds r0, 4 | r0 += 4;
0x000a178a add r3, r5 | r3 += r5;
0x000a178c str r3, [sp, 0x18] | var_18h_2 = r3;
0x000a178e ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a1790 subs r3, r3, r5 | r3 -= r5;
0x000a1792 str r3, [sp, 0x20] | var_20h = r3;
0x000a1794 blx 0x8264 | fcn_00008264 ();
0x000a1798 movs r3, 2 | r3 = 2;
0x000a179a str.w sb, [r4, 0x10] | __asm ("str.w sb, [r4, 0x10]");
0x000a179e str r3, [r4] | *(r4) = r3;
0x000a17a0 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000a17a2 str.w r4, [sb, 8] | __asm ("str.w r4, [sb, 8]");
0x000a17a6 cmp r3, 0 |
| if (r3 == 0) {
0x000a17a8 beq.w 0xa1952 | goto label_113;
| }
0x000a17ac str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000a17ae str r4, [sp, 0x5c] | var_5ch = r4;
0x000a17b0 str r4, [r3, 8] | *((r3 + 8)) = r4;
0x000a17b2 b 0xa10f4 | goto label_21;
| label_102:
0x000a17b4 movs r0, 0x30 | r0 = 0x30;
0x000a17b6 movs r1, 0 | r1 = 0;
0x000a17b8 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a17bc mov r4, r0 | r4 = r0;
0x000a17be cmp r0, 0 |
| if (r0 == 0) {
0x000a17c0 beq.w 0xa19e8 | goto label_114;
| }
0x000a17c4 movs r2, 0x2c | r2 = 0x2c;
0x000a17c6 movs r1, 0 | r1 = 0;
0x000a17c8 adds r0, 4 | r0 += 4;
0x000a17ca blx 0x8264 | fcn_00008264 ();
0x000a17ce mov r2, fp | r2 = fp;
0x000a17d0 movs r3, 3 | r3 = 3;
0x000a17d2 str r3, [r4] | *(r4) = r3;
| do {
0x000a17d4 mov r3, r2 | r3 = r2;
0x000a17d6 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000a17d8 cmp r2, 0 |
0x000a17da bne 0xa17d4 |
| } while (r2 != 0);
0x000a17dc str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000a17de str r4, [sp, 0x48] | var_48h = r4;
0x000a17e0 str r4, [r3, 8] | *((r3 + 8)) = r4;
| label_52:
0x000a17e2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a17e4 mov fp, r4 |
0x000a17e6 subs r3, r3, r5 | r3 -= r5;
0x000a17e8 str r3, [sp, 0x20] | var_20h = r3;
0x000a17ea ldr r3, [sp, 0x48] | r3 = var_48h;
0x000a17ec cmp r3, 0 |
| if (r3 != 0) {
0x000a17ee bne.w 0xa1540 | goto label_31;
| }
| label_104:
0x000a17f2 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x000a17f4 mov fp, sb |
0x000a17f6 str.w sb, [sp, 0x48] | __asm ("str.w sb, [var_48h]");
0x000a17fa add r3, r5 | r3 += r5;
0x000a17fc str r3, [sp, 0x18] | var_18h_2 = r3;
0x000a17fe movs r3, 0 | r3 = 0;
0x000a1800 str r3, [sp, 0x44] | var_44h_2 = r3;
0x000a1802 b 0xa10f4 | goto label_21;
| label_109:
0x000a1804 ldr r4, [sp, 0x78] | r4 = var_78h;
0x000a1806 mov r1, r7 | r1 = r7;
0x000a1808 str r0, [sp, 0x30] | var_30h_2 = r0;
0x000a180a adds r4, 0x90 | r4 += 0x90;
0x000a180c mov r0, r4 | r0 = r4;
0x000a180e blx 0x7f18 | fcn_00007f18 ();
0x000a1812 ldr r3, [sp, 0x30] | r3 = var_30h_2;
0x000a1814 mov sb, r0 | sb = r0;
0x000a1816 cmp r0, 0 |
| if (r0 == 0) {
0x000a1818 beq 0xa18ec | goto label_115;
| }
0x000a181a mov r2, r4 | r2 = r4;
0x000a181c mov r1, r3 | r1 = r3;
0x000a181e blx 0x8264 | fcn_00008264 ();
0x000a1822 mov r3, sb | r3 = sb;
0x000a1824 movs r2, 5 | r2 = 5;
0x000a1826 str r2, [r3], 0x30 | *(r3) = r2;
| r3 += 0x30;
0x000a182a movs r7, 1 | r7 = 1;
0x000a182c ldr r2, [sp, 0x2c] | r2 = var_2ch_2;
0x000a182e add.w r0, sb, 0x90 | r0 = sb + 0x90;
0x000a1832 str.w r7, [sb, 0x70] | __asm ("str.w r7, [sb, 0x70]");
0x000a1836 str.w r3, [sb, 0x14] | __asm ("str.w r3, [sb, 0x14]");
0x000a183a str.w r2, [sb, 0x74] | __asm ("str.w r2, [sb, 0x74]");
0x000a183e ldr r2, [sp, 0x78] | r2 = var_78h;
0x000a1840 str.w r0, [sb, 0x78] | __asm ("str.w r0, [sb, 0x78]");
0x000a1844 ldr r1, [sp, 0x74] | r1 = var_74h;
0x000a1846 str.w r2, [sb, 0x7c] | __asm ("str.w r2, [sb, 0x7c]");
0x000a184a blx 0x7dcc | fcn_00007dcc ();
0x000a184e ldr r4, [sp, 0x80] | r4 = var_80h;
0x000a1850 cmp r4, r5 |
| if (r4 < r5) {
0x000a1852 bge 0xa1864 |
0x000a1854 ldrb.w r3, [r8, r4] | r3 = *((r8 + r4));
0x000a1858 cmp r3, 0x2a |
0x000a185a ittt eq |
| if (r3 != 0x2a) {
0x000a185c addeq r4, r4, r7 | r4 += r7;
| }
| if (r3 != 0x2a) {
0x000a185e streq r7, [sb, 0x80] | *((sb + 0x80)) = r7;
| }
| if (r3 != 0x2a) {
0x000a1862 str r4, [sp, 0x80] | var_80h = r4;
| goto label_116;
| }
| }
| label_116:
0x000a1864 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x000a1866 cmp r3, 0 |
| if (r3 <= 0) {
0x000a1868 ble 0xa18fa | goto label_117;
| }
0x000a186a ldr r5, [sp, 0x94] | r5 = var_94h;
0x000a186c add r8, r3 | r8 += r3;
0x000a186e ldr r6, [sp, 0x28] | r6 = var_28h_2;
0x000a1870 subs r3, 1 | r3--;
0x000a1872 movs r0, 0 | r0 = 0;
0x000a1874 movs r1, 1 | r1 = 1;
| do {
0x000a1876 ldrb r2, [r8, -0x1]! | r2 = *((r8 -= 0x1));
0x000a187a cmp r2, 0x2d |
0x000a187c itt eq |
| if (r2 != 0x2d) {
0x000a187e moveq r7, r3 | r7 = r3;
| }
| if (r2 != 0x2d) {
0x000a1880 moveq r0, 1 | r0 = 1;
| }
| if (r2 != 0x2d) {
0x000a1882 beq 0xa1892 |
0x000a1884 cmp r5, 0 |
| if (r5 == 0) {
0x000a1886 beq 0xa18f2 | goto label_118;
| }
0x000a1888 cmp r2, 0x5e |
| if (r2 != 0x5e) {
0x000a188a bne 0xa18f2 | goto label_118;
| }
0x000a188c mov r7, r3 | r7 = r3;
0x000a188e str.w r1, [sb, 0x84] | __asm ("str.w r1, [sb, 0x84]");
| }
0x000a1892 str r3, [sp, 0x7c] | var_7ch = r3;
0x000a1894 subs r3, 1 | r3--;
0x000a1896 cmp r7, 0 |
0x000a1898 bne 0xa1876 |
| } while (r7 != 0);
0x000a189a str r6, [sp, 0x28] | var_28h_2 = r6;
0x000a189c cmp r0, 0 |
| if (r0 == 0) {
0x000a189e beq.w 0xa16bc | goto label_32;
| }
0x000a18a2 movs r3, 1 | r3 = 1;
0x000a18a4 str r3, [sp, 0xa0] | var_a0h = r3;
0x000a18a6 b 0xa16bc | goto label_32;
| label_97:
0x000a18a8 mov.w sl, 0 | sl = 0;
0x000a18ac mov sb, sl | sb = sl;
0x000a18ae str.w sl, [sp, 0x28] | __asm ("str.w sl, [var_28h_2]");
0x000a18b2 str.w sl, [sp, 0x3c] | __asm ("str.w sl, [var_3ch]");
0x000a18b6 b 0xa14f0 | goto label_33;
| label_107:
0x000a18b8 mov r0, sb | r0 = sb;
0x000a18ba blx 0x84f8 | fcn_000084f8 ();
| do {
| label_44:
0x000a18be ldr r0, [sp, 0x28] | r0 = var_28h_2;
| if (r0 != 0) {
0x000a18c0 cbz r0, 0xa18c8 |
0x000a18c2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a18c4 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a18c6 blx r3 | uint32_t (*r3)(uint32_t) (r3);
| }
0x000a18c8 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000a18ca movs r7, 7 | r7 = 7;
0x000a18cc blx 0x84f8 | fcn_000084f8 ();
0x000a18d0 mov r0, r8 | r0 = r8;
0x000a18d2 blx 0x84f8 | fcn_000084f8 ();
0x000a18d6 b 0xa16e6 | goto label_34;
| label_108:
0x000a18d8 str r0, [sp, 0x14] | var_14h_2 = r0;
0x000a18da ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000a18dc blx 0x84f8 | fcn_000084f8 ();
0x000a18e0 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x000a18e2 str r3, [sp, 0x3c] | var_3ch = r3;
0x000a18e4 b 0xa18be |
| } while (1);
| label_95:
0x000a18e6 str.w sb, [sp, 0x48] | __asm ("str.w sb, [var_48h]");
0x000a18ea b 0xa1404 | goto label_35;
| label_115:
0x000a18ec ldr r4, [sp, 0x80] | r4 = var_80h;
0x000a18ee movs r7, 7 | r7 = 7;
0x000a18f0 b 0xa16bc | goto label_32;
| label_118:
0x000a18f2 str r6, [sp, 0x28] | var_28h_2 = r6;
| if (r0 != 0) {
0x000a18f4 cbz r0, 0xa18fa |
0x000a18f6 movs r3, 1 | r3 = 1;
0x000a18f8 str r3, [sp, 0xa0] | var_a0h = r3;
| }
| label_117:
0x000a18fa movs r7, 0 | r7 = 0;
0x000a18fc b 0xa16bc | goto label_32;
| label_64:
0x000a18fe cmp r6, 1 |
| if (r6 != 1) {
0x000a1900 bne.w 0xa0fc6 | goto label_11;
| }
0x000a1904 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a1906 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x000a1908 cmp r0, 0 |
| if (r0 == 0) {
0x000a190a beq 0xa19d4 | goto label_119;
| }
| label_45:
0x000a190c mov r2, fp | r2 = fp;
0x000a190e movs r1, 1 | r1 = 1;
0x000a1910 blx 0x82cc | r0 = fcn_000082cc ();
0x000a1914 mov r7, r0 | r7 = r0;
0x000a1916 cmp r7, 0 |
| if (r7 != 0) {
0x000a1918 bne.w 0xa1022 | goto label_10;
| }
0x000a191c b.w 0xa0fc6 | goto label_11;
| label_65:
0x000a1920 cmp r3, 0 |
| if (r3 != 0) {
0x000a1922 bne 0xa19a2 | goto label_120;
| }
0x000a1924 ldr r2, [pc, 0x100] |
0x000a1926 add r2, pc | r2 = 0x143352;
| label_41:
0x000a1928 ldr r0, [pc, 0x100] |
0x000a192a mov r1, r6 | r1 = r6;
0x000a192c add r0, pc | r0 = 0x14335c;
0x000a192e blx 0x852c | r0 = strncmp (r0, r1, r2);
0x000a1932 mov r4, r0 | r4 = r0;
0x000a1934 b.w 0xa0f90 | goto label_36;
| label_70:
0x000a1938 mov r0, fp | r0 = fp;
0x000a193a blx 0x7ff4 | r0 = fcn_00007ff4 ();
0x000a193e cmp r0, 5 |
| if (r0 == 5) {
0x000a1940 beq.w 0xa108a | goto label_37;
| }
| label_46:
0x000a1944 movs r7, 7 | r7 = 7;
0x000a1946 b.w 0xa1022 | goto label_10;
| label_89:
0x000a194a movs r7, 7 | r7 = 7;
0x000a194c b 0xa16e6 | goto label_34;
| label_96:
0x000a194e movs r6, 1 | r6 = 1;
0x000a1950 b 0xa1464 | goto label_38;
| label_113:
0x000a1952 str r4, [sp, 0x5c] | var_5ch = r4;
0x000a1954 b.w 0xa10f4 | goto label_21;
| label_103:
0x000a1958 cmp r3, 5 |
| if (r3 == 5) {
0x000a195a beq.w 0xa1532 | goto label_39;
| }
0x000a195e ldr.w r3, [fp] | r3 = *(fp);
0x000a1962 cmp r3, 1 |
| if (r3 != 1) {
0x000a1964 bne.w 0xa1ac8 | goto label_121;
| }
| label_90:
0x000a1968 mov r0, sb | r0 = sb;
0x000a196a movs r4, 0 | r4 = 0;
0x000a196c bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a1970 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000a1972 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a1976 ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x000a1978 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a197c ldr r5, [sp, 0x40] | r5 = var_40h;
0x000a197e mov r0, r4 | r0 = r4;
0x000a1980 str r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
0x000a1982 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a1986 str r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
| label_49:
0x000a1988 ldr r1, [pc, 0xa4] |
0x000a198a movs r7, 1 | r7 = 1;
0x000a198c ldr r2, [sp, 0x60] | r2 = var_60h;
0x000a198e ldr r0, [sp, 0x6c] | r0 = var_6ch;
0x000a1990 add r1, pc | r1 = 0x1433c4;
0x000a1992 bl 0x49598 | fcn_00049598 (r0);
0x000a1996 b.w 0xa1022 | goto label_10;
| label_66:
0x000a199a ldr r3, [pc, 0x98] |
0x000a199c add r3, pc | r3 = 0x1433d6;
0x000a199e b.w 0xa0f78 | goto label_40;
| label_120:
0x000a19a2 ldr r2, [pc, 0x94] |
0x000a19a4 add r2, pc | r2 = 0x1433e2;
0x000a19a6 b 0xa1928 | goto label_41;
| label_71:
0x000a19a8 mov r3, r2 | r3 = r2;
0x000a19aa str r2, [sp, 0x48] | var_48h = r2;
0x000a19ac ldr r2, [sp, 0x40] | r2 = var_40h;
0x000a19ae str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x000a19b0 b 0xa1208 | goto label_42;
| label_61:
0x000a19b2 mov r0, sl | r0 = sl;
0x000a19b4 blx 0x8584 | r0 = fcn_00008584 ();
0x000a19b8 mov ip, r0 |
0x000a19ba mov r0, r1 | r0 = r1;
0x000a19bc b.w 0xa0f2a | goto label_43;
| label_93:
0x000a19c0 mov r3, fp | r3 = fp;
0x000a19c2 str.w sb, [sp, 0x48] | __asm ("str.w sb, [var_48h]");
0x000a19c6 b 0xa1404 | goto label_35;
| label_105:
0x000a19c8 mov r0, sb | r0 = sb;
0x000a19ca blx 0x84f8 | fcn_000084f8 ();
0x000a19ce ldr r3, [sp, 0x70] | r3 = var_70h;
0x000a19d0 str r3, [sp, 0x28] | var_28h_2 = r3;
0x000a19d2 b 0xa18be | goto label_44;
| label_119:
0x000a19d4 mov r0, r3 | r0 = r3;
0x000a19d6 mov r4, r3 | r4 = r3;
0x000a19d8 bl 0x7927c | r0 = fcn_0007927c (r0);
0x000a19dc mov r7, r0 | r7 = r0;
0x000a19de cmp r0, 0 |
| if (r0 != 0) {
0x000a19e0 bne.w 0xa1022 | goto label_10;
| }
0x000a19e4 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000a19e6 b 0xa190c | goto label_45;
| label_114:
0x000a19e8 mov r0, sb | r0 = sb;
0x000a19ea bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a19ee ldr r0, [sp, 0x48] | r0 = var_48h;
0x000a19f0 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a19f4 ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x000a19f6 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a19fa ldr r5, [sp, 0x40] | r5 = var_40h;
0x000a19fc mov r0, r4 | r0 = r4;
0x000a19fe str r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
0x000a1a00 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a1a04 str r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
0x000a1a06 b 0xa1944 | goto label_46;
| label_106:
0x000a1a3c ldr.w r3, [r8] | r3 = *(r8);
0x000a1a40 mov sb, r8 | sb = r8;
0x000a1a42 cmp r3, 5 |
| if (r3 != 5) {
0x000a1a44 bne.w 0xa1518 | goto label_47;
| }
0x000a1a48 b 0xa1522 | goto label_30;
| label_82:
0x000a1a4a movs r3, 7 | r3 = 7;
0x000a1a4c str r3, [sp, 0x78] | var_78h = r3;
0x000a1a4e b 0xa1298 | goto label_48;
| label_100:
0x000a1a50 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a1a52 subs r3, r3, r5 | r3 -= r5;
0x000a1a54 str r3, [sp, 0x20] | var_20h = r3;
0x000a1a56 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x000a1a58 add r3, r5 | r3 += r5;
0x000a1a5a str r3, [sp, 0x18] | var_18h_2 = r3;
0x000a1a5c b.w 0xa10f4 | goto label_21;
| label_112:
0x000a1a60 mov r0, sb | r0 = sb;
0x000a1a62 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a1a66 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000a1a68 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a1a6c ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x000a1a6e bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a1a72 mov r0, r4 | r0 = r4;
0x000a1a74 ldr r4, [sp, 0x40] | r4 = var_40h;
0x000a1a76 str r7, [r4, 0x10] | *((r4 + 0x10)) = r7;
0x000a1a78 bl 0x5b4a0 | fcn_0005b4a0 (r0, r1, r2);
0x000a1a7c str r7, [r4, 0x10] | *((r4 + 0x10)) = r7;
0x000a1a7e b 0xa1944 | goto label_46;
| label_110:
0x000a1a80 mov sb, r8 | sb = r8;
0x000a1a82 add r7, sb | r7 += sb;
0x000a1a84 b.w 0xa113c | goto label_29;
| label_81:
0x000a1a88 cmp r7, 1 |
| if (r7 != 1) {
0x000a1a8a bne.w 0xa1022 | goto label_10;
| }
0x000a1a8e b 0xa1988 | goto label_49;
| label_83:
0x000a1a90 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a1a92 mov r2, r5 | r2 = r5;
0x000a1a94 bl 0x9e504 | r0 = fcn_0009e504 (r0, r1, r2, r3);
0x000a1a98 mov r7, r0 | r7 = r0;
0x000a1a9a str r0, [sp, 0x78] | var_78h = r0;
0x000a1a9c cmp r0, 0 |
| if (r0 != 0) {
0x000a1a9e bne.w 0xa1292 | goto label_50;
| }
0x000a1aa2 subs r4, 4 | r4 -= 4;
0x000a1aa4 b 0xa1abe | goto label_122;
| label_51:
0x000a1aa6 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x000a1aa8 mov r2, r5 | r2 = r5;
0x000a1aaa ldr r1, [r4, 4]! | r1 = *((r4 += 4));
0x000a1aae adds r7, 1 | r7++;
0x000a1ab0 ldr r0, [sp, 0x40] | r0 = var_40h;
0x000a1ab2 bl 0x9e504 | fcn_0009e504 (r0, r1, r2, r3);
0x000a1ab6 str r0, [sp, 0x78] | var_78h = r0;
0x000a1ab8 cmp r0, 0 |
| if (r0 != 0) {
0x000a1aba bne.w 0xa1292 | goto label_50;
| }
| label_122:
0x000a1abe ldr r3, [sp, 0x80] | r3 = var_80h;
0x000a1ac0 cmp r7, r3 |
| if (r7 < r3) {
0x000a1ac2 blt 0xa1aa6 | goto label_51;
| }
0x000a1ac4 b.w 0xa1292 | goto label_50;
| label_121:
0x000a1ac8 mov r4, fp | r4 = fp;
0x000a1aca b 0xa17e2 | goto label_52;
| label_67:
0x000a1acc blx 0x7e8c | fcn_00007e8c ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa1c50 */
| #include <stdint.h>
|
; (fcn) fcn.000a1c50 () | void fcn_000a1c50 (int16_t arg_ch, int16_t arg_10h, int16_t arg_14h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_48h, int16_t arg_68h, int16_t arg_138h, int16_t arg_13ch, char * s2, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_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;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int32_t var_40h_2;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int32_t var_64h;
| int32_t var_64h_2;
| int16_t var_6ch;
| int32_t var_4h;
| int32_t var_8h_2;
| int16_t var_8ch;
| int16_t var_10ch;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000a1c50 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000a1c54 sub sp, 0x114 |
0x000a1c56 str r2, [sp, 0x20] | var_20h = r2;
0x000a1c58 mov r4, r1 | r4 = r1;
0x000a1c5a movs r1, 0 | r1 = 0;
0x000a1c5c movs r7, 7 | r7 = 7;
0x000a1c5e ldr.w r2, [pc, 0xbe0] |
0x000a1c62 str r3, [sp, 0xc] | var_ch = r3;
0x000a1c64 ldr.w r3, [pc, 0xbdc] | r3 = *(0xa2844);
0x000a1c68 add r2, pc | r2 = 0x1444ae;
0x000a1c6a str r0, [sp, 0x24] | var_24h = r0;
0x000a1c6c movs r0, 0x20 | r0 = 0x20;
0x000a1c6e ldr r5, [sp, 0x138] | r5 = *(arg_138h);
0x000a1c70 ldr r3, [r2, r3] |
0x000a1c72 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a1c74 str r3, [sp, 0x10c] | var_10ch = r3;
0x000a1c76 mov.w r3, 0 | r3 = 0;
0x000a1c7a ldr r3, [sp, 0x13c] | r3 = *(arg_13ch);
0x000a1c7c str r3, [sp, 0x1c] | var_1ch = r3;
0x000a1c7e ldr r3, [sp, 0x140] | r3 = *(s2);
0x000a1c80 str r3, [sp, 0x18] | var_18h = r3;
0x000a1c82 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a1c86 mov sl, r0 | sl = r0;
0x000a1c88 cmp r0, 0 |
| if (r0 == 0) {
0x000a1c8a beq.w 0xa206c | goto label_19;
| }
0x000a1c8e movs r2, 0x20 | r2 = 0x20;
0x000a1c90 movs r1, 0 | r1 = 0;
0x000a1c92 blx 0x8264 | fcn_00008264 ();
0x000a1c96 movs r6, 0 | r6 = 0;
0x000a1c98 movs r0, 0x6c | r0 = 0x6c;
0x000a1c9a str r6, [sp, 0x50] | var_50h = r6;
0x000a1c9c blx 0x85dc | r0 = fcn_000085dc ();
0x000a1ca0 mov fp, r0 |
0x000a1ca2 cmp r0, 0 |
| if (r0 == 0) {
0x000a1ca4 beq.w 0xa2094 | goto label_40;
| }
0x000a1ca8 movs r2, 0x68 | r2 = 0x68;
0x000a1caa mov r1, r6 | r1 = r6;
0x000a1cac adds r0, 4 | r0 += 4;
0x000a1cae blx 0x8264 | fcn_00008264 ();
0x000a1cb2 ldr r7, [sp, 0x50] | r7 = var_50h;
0x000a1cb4 mov.w r3, -1 | r3 = -1;
0x000a1cb8 str.w r4, [fp] | __asm ("str.w r4, [fp]");
0x000a1cbc str.w r3, [fp, 0x48] | __asm ("str.w r3, [arg_48h]");
0x000a1cc0 cmp r7, 0 |
| if (r7 != 0) {
0x000a1cc2 bne.w 0xa2496 | goto label_41;
| }
0x000a1cc6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000a1cc8 mov r1, r7 | r1 = r7;
0x000a1cca lsls r6, r3, 2 | r6 = r3 << 2;
0x000a1ccc add.w r8, r6, r3 | r8 = r6 + r3;
0x000a1cd0 mov r0, r8 | r0 = r8;
0x000a1cd2 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a1cd6 mov r4, r0 | r4 = r0;
0x000a1cd8 cmp r0, 0 |
| if (r0 == 0) {
0x000a1cda beq.w 0xa2458 | goto label_42;
| }
0x000a1cde mov r2, r8 | r2 = r8;
0x000a1ce0 mov r1, r7 | r1 = r7;
0x000a1ce2 blx 0x8264 | fcn_00008264 ();
0x000a1ce6 str.w r4, [fp, 0x10] | __asm ("str.w r4, [arg_10h]");
0x000a1cea add r4, r6 | r4 += r6;
0x000a1cec ldr r6, [sp, 0x50] | r6 = var_50h;
| label_22:
0x000a1cee str.w r4, [fp, 0x14] | __asm ("str.w r4, [arg_14h]");
0x000a1cf2 cmp r6, 0 |
| if (r6 != 0) {
0x000a1cf4 bne.w 0xa249a | goto label_43;
| }
0x000a1cf8 ldr.w r8, [r5, 4] | r8 = *((r5 + 4));
0x000a1cfc mov r0, r8 | r0 = r8;
0x000a1cfe blx 0x8160 | r0 = fcn_00008160 ();
0x000a1d02 mov r7, r0 | r7 = r0;
0x000a1d04 adds r0, 1 | r0++;
0x000a1d06 blx 0x85dc | r0 = fcn_000085dc ();
0x000a1d0a mov r4, r0 | r4 = r0;
0x000a1d0c cmp r0, 0 |
| if (r0 == 0) {
0x000a1d0e beq.w 0xa243e | goto label_44;
| }
0x000a1d12 mov r1, r8 | r1 = r8;
0x000a1d14 mov r2, r7 | r2 = r7;
0x000a1d16 blx 0x7dcc | fcn_00007dcc ();
0x000a1d1a strb r6, [r4, r7] | *((r4 + r7)) = r6;
0x000a1d1c ldr r3, [sp, 0x50] | r3 = var_50h;
0x000a1d1e str.w r4, [fp, 4] | __asm ("str.w r4, [arg_13ch]");
0x000a1d22 cmp r3, 0 |
| if (r3 != 0) {
0x000a1d24 bne.w 0xa2446 | goto label_21;
| }
0x000a1d28 ldr.w r8, [r5, 8] | r8 = *((r5 + 8));
0x000a1d2c mov r0, r8 | r0 = r8;
0x000a1d2e blx 0x8160 | r0 = fcn_00008160 ();
0x000a1d32 mov r7, r0 | r7 = r0;
0x000a1d34 adds r0, 1 | r0++;
0x000a1d36 blx 0x85dc | r0 = fcn_000085dc ();
0x000a1d3a mov r4, r0 | r4 = r0;
0x000a1d3c cmp r0, 0 |
| if (r0 == 0) {
0x000a1d3e beq.w 0xa25b2 | goto label_45;
| }
0x000a1d42 mov r1, r8 | r1 = r8;
0x000a1d44 mov r2, r7 | r2 = r7;
0x000a1d46 blx 0x7dcc | fcn_00007dcc ();
0x000a1d4a strb r6, [r4, r7] | *((r4 + r7)) = r6;
0x000a1d4c ldr r3, [sp, 0x50] | r3 = var_50h;
0x000a1d4e str.w r6, [fp, 0x30] | __asm ("str.w r6, [arg_30h]");
0x000a1d52 movs r6, 1 | r6 = 1;
0x000a1d54 str.w r4, [fp, 8] | __asm ("str.w r4, [s2]");
0x000a1d58 str.w r6, [fp, 0x2c] | __asm ("str.w r6, [arg_2ch]");
0x000a1d5c cmp r3, 0 |
| if (r3 != 0) {
0x000a1d5e bne.w 0xa21f8 | goto label_18;
| }
0x000a1d62 ldr.w r1, [pc, 0xae4] |
0x000a1d66 mov r0, r4 | r0 = r4;
0x000a1d68 add r1, pc | r1 = 0x1445b6;
0x000a1d6a blx 0x831c | fcn_0000831c ();
0x000a1d6c invalid |
| if (r3 == 0) {
0x000a1d70 beq.w 0xa26e4 | goto label_46;
| }
0x000a1d74 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000a1d76 str r3, [sp, 0x2c] | var_2ch = r3;
0x000a1d78 cmp r3, 0 |
| if (r3 != 0) {
0x000a1d7a bne.w 0xa21f8 | goto label_18;
| }
0x000a1d7e ldr r3, [sp, 0xc] | r3 = var_ch;
0x000a1d80 cmp r3, 3 |
| if (r3 <= 3) {
0x000a1d82 ble 0xa1e26 | goto label_47;
| }
0x000a1d84 add.w r3, r5, 8 | r3 = r5 + 8;
0x000a1d88 mov.w sb, 3 | sb = 3;
0x000a1d8c str r3, [sp, 8] | var_8h = r3;
0x000a1d8e ldr.w r3, [pc, 0xabc] | r3 = *(0x000a284c);
0x000a1d92 str.w sl, [sp, 0x28] | __asm ("str.w sl, [var_28h]");
0x000a1d96 add r3, pc | r3 += pc;
0x000a1d98 addw r3, r3, 0x414 | __asm ("addw r3, r3, aav.0x000000ff");
0x000a1d9c str r3, [sp, 0x30] | var_30h = r3;
0x000a1d9e add r3, sp, 0x5c | r3 += var_5ch;
0x000a1da0 str r3, [sp, 0x14] | var_14h = r3;
0x000a1da2 add r3, sp, 0x54 | r3 += var_54h;
0x000a1da4 str r3, [sp, 0x10] | var_10h = r3;
0x000a1da6 add r3, sp, 0x50 | r3 += var_50h;
0x000a1da8 mov r8, r3 | r8 = r3;
| label_0:
0x000a1daa ldr r3, [sp, 8] | r3 = var_8h;
0x000a1dac mov r0, r8 | r0 = r8;
0x000a1dae ldr r6, [r3, 4]! | r6 = *((r3 += 4));
0x000a1db2 str r3, [sp, 8] | var_8h = r3;
0x000a1db4 movs r3, 0 | r3 = 0;
0x000a1db6 strd r3, r3, [sp, 0x54] | __asm ("strd r3, r3, [var_54h]");
0x000a1dba mov r1, r6 | r1 = r6;
0x000a1dbc str r3, [sp, 0x5c] | var_5ch = r3;
0x000a1dbe ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x000a1dc2 bl 0x3ffe8 | r0 = fcn_0003ffe8 (r0, r1, r2, r3);
| if (r0 == 0) {
0x000a1dc6 cbz r0, 0xa1de6 | goto label_48;
| }
0x000a1dc8 ldrb r3, [r0] | r3 = *(r0);
0x000a1dca cmp r3, 0x20 |
| if (r3 != 0x20) {
0x000a1dcc bne 0xa1dd6 | goto label_49;
| }
| do {
0x000a1dce ldrb r3, [r0, 1]! | r3 = *((r0 += 1));
0x000a1dd2 cmp r3, 0x20 |
0x000a1dd4 beq 0xa1dce |
| } while (r3 == 0x20);
| label_49:
0x000a1dd6 cmp r3, 0x3d |
| if (r3 != 0x3d) {
0x000a1dd8 bne.w 0xa2384 | goto label_50;
| }
0x000a1ddc ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000a1dde adds r1, r0, 1 | r1 = r0 + 1;
0x000a1de0 cmp r3, 0 |
| if (r3 == 0) {
0x000a1de2 beq.w 0xa209a | goto label_51;
| }
| label_48:
0x000a1de6 ldr r5, [sp, 0x50] | r5 = var_50h;
0x000a1de8 cmp r5, 0 |
| if (r5 != 0) {
0x000a1dea bne.w 0xa220a | goto label_52;
| }
| label_3:
0x000a1dee ldr.w r0, [pc, 0xa60] |
0x000a1df2 mov r1, r6 | r1 = r6;
0x000a1df4 add r0, pc | r0 = 0x14464a;
0x000a1df6 blx 0x852c | strncmp (r0, r1, r2);
0x000a1dfa ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a1dfc str r0, [r3] | *(r3) = r0;
0x000a1dfe movs r3, 1 | r3 = 1;
0x000a1e00 str r3, [sp, 0x50] | var_50h = r3;
| label_4:
0x000a1e02 ldr r6, [sp, 0x54] | r6 = var_54h;
| label_1:
0x000a1e04 mov r0, r6 | r0 = r6;
0x000a1e06 add.w sb, sb, 1 | sb++;
0x000a1e0a blx 0x84f8 | fcn_000084f8 ();
0x000a1e0e mov r0, r5 | r0 = r5;
0x000a1e10 blx 0x84f8 | fcn_000084f8 ();
0x000a1e14 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000a1e16 cmp r3, 0 |
| if (r3 != 0) {
0x000a1e18 bne.w 0xa21f4 | goto label_53;
| }
0x000a1e1c ldr r3, [sp, 0xc] | r3 = var_ch;
0x000a1e1e cmp r3, sb |
| if (r3 != sb) {
0x000a1e20 bne 0xa1daa | goto label_0;
| }
0x000a1e22 ldr.w sl, [sp, 0x28] | sl = var_28h;
| label_47:
0x000a1e26 ldr.w r2, [fp, 0x38] | r2 = *(arg_38h);
0x000a1e2a cmp r2, 0 |
| if (r2 == 0) {
0x000a1e2c beq.w 0xa26f8 | goto label_54;
| }
| label_32:
0x000a1e30 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x000a1e34 cmp r3, 0 |
| if (r3 == 0) {
0x000a1e36 beq.w 0xa268a | goto label_55;
| }
| label_30:
0x000a1e3a ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x000a1e3e cmp r3, 0 |
| if (r3 == 0) {
0x000a1e40 beq.w 0xa278c | goto label_56;
| }
| label_35:
0x000a1e44 add r2, sp, 0x5c | r2 += var_5ch;
0x000a1e46 add r4, sp, 0x60 | r4 += var_60h;
0x000a1e48 mov r0, r2 | r0 = r2;
0x000a1e4a movs r2, 0 | r2 = 0;
0x000a1e4c strd r2, r2, [sp, 0x5c] | __asm ("strd r2, r2, [var_60h]");
0x000a1e50 mov r1, r4 | r1 = r4;
0x000a1e52 strd r2, r2, [sp, 0x64] | __asm ("strd r2, r2, [var_64h]");
0x000a1e56 mov r8, r0 | r8 = r0;
0x000a1e58 ldr.w r2, [pc, 0x9f8] |
0x000a1e5c add r2, pc | r2 = 0x1446b4;
0x000a1e5e bl 0x49518 | fcn_00049518 (r0, r1);
0x000a1e62 ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x000a1e66 cmp r3, 1 |
| if (r3 == 1) {
0x000a1e68 beq 0xa1eac | goto label_57;
| }
0x000a1e6a ldr.w r2, [fp, 0xc] | r2 = *(arg_ch);
0x000a1e6e cmp r2, 0 |
| if (r2 <= 0) {
0x000a1e70 ble 0xa1eac | goto label_57;
| }
0x000a1e72 ldr.w r5, [pc, 0x9e4] |
0x000a1e76 ldr.w r6, [pc, 0x9e4] | r6 = *(0x000a285c);
0x000a1e7a ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x000a1e7c add r5, pc | r5 = 0x1446da;
0x000a1e7e add r6, pc | r6 += pc;
0x000a1e80 b 0xa1e86 |
| while (r7 < r3) {
0x000a1e82 ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x000a1e86 cmp r3, 2 |
0x000a1e88 mov r1, r4 | r1 = r4;
0x000a1e8a itete eq |
| if (r3 != 2) {
0x000a1e8c ldreq r3, [fp, 0x10] | r3 = *(arg_10h);
| }
| if (r3 != 2) {
0x000a1e90 moveq r3, r7 | r3 = r7;
| }
| if (r3 == 2) {
0x000a1e92 movne r2, r6 | r2 = r6;
| }
| if (r3 != 2) {
0x000a1e94 mov r2, r5 | r2 = r5;
| }
0x000a1e96 mov r0, r8 | r0 = r8;
0x000a1e98 it eq |
| if (r3 != 2) {
0x000a1e9a ldreq r3, [r3, r7, lsl 2] | offset_0 = r7 << 2;
| r3 = *((r3 + offset_0));
| }
0x000a1e9e adds r7, 1 | r7++;
0x000a1ea0 bl 0x49518 | fcn_00049518 (r0, r1);
0x000a1ea4 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x000a1ea8 cmp r7, r3 |
0x000a1eaa blt 0xa1e82 |
| }
| label_57:
0x000a1eac ldrd r3, r2, [sp, 0x5c] | __asm ("ldrd r3, r2, [var_60h]");
0x000a1eb0 str.w r2, [fp, 0x34] | __asm ("str.w r2, [arg_34h]");
0x000a1eb4 cmp r3, 0 |
| if (r3 != 0) {
0x000a1eb6 bne.w 0xa2998 | goto label_58;
| }
| label_8:
0x000a1eba ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a1ebc movs r4, 0 | r4 = 0;
0x000a1ebe str.w fp, [sl, 0xc] | __asm ("str.w fp, [sl, 0xc]");
0x000a1ec2 movs r0, 0x58 | r0 = 0x58;
0x000a1ec4 movs r1, 0 | r1 = 0;
0x000a1ec6 str.w r3, [sl, 0x18] | __asm ("str.w r3, [sl, 0x18]");
0x000a1eca str r4, [sp, 0x60] | var_60h = r4;
0x000a1ecc blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a1ed0 mov r5, r0 | r5 = r0;
0x000a1ed2 cmp r0, 0 |
| if (r0 == 0) {
0x000a1ed4 beq.w 0xa234e | goto label_59;
| }
0x000a1ed8 mov r1, r4 | r1 = r4;
0x000a1eda movs r2, 0x58 | r2 = 0x58;
0x000a1edc blx 0x8264 | fcn_00008264 ();
0x000a1ee0 ldr r4, [sp, 0x60] | r4 = var_60h;
0x000a1ee2 str.w r5, [sl, 0x10] | __asm ("str.w r5, [sl, 0x10]");
0x000a1ee6 cmp r4, 0 |
| if (r4 != 0) {
0x000a1ee8 bne.w 0xa2356 | goto label_33;
| }
0x000a1eec ldr.w r1, [pc, 0x970] | r1 = *(0x000a2860);
0x000a1ef0 movs r3, 0x40 | r3 = 0x40;
0x000a1ef2 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x000a1ef4 add r0, sp, 0x60 | r0 += var_60h;
0x000a1ef6 ldr.w r2, [fp, 8] | r2 = *(s2);
0x000a1ef8 movs r0, 8 | r0 = 8;
0x000a1efa add r1, pc | r1 += pc;
0x000a1efc str.w fp, [r5] | __asm ("str.w fp, [r5]");
0x000a1f00 bl 0x492c8 | fcn_000492c8 (r0);
0x000a1f04 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a1f06 str r0, [r5, 4] | *((r5 + 4)) = r0;
0x000a1f08 cmp r0, 0 |
0x000a1f0a ite eq |
| if (r0 != 0) {
0x000a1f0c moveq r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x000a1f0e andne r3, r3, 1 | r3 &= 1;
| }
0x000a1f12 cmp r3, 0 |
| if (r3 != 0) {
0x000a1f14 bne.w 0xa270e | goto label_60;
| }
0x000a1f18 ldr r0, [sp, 0x60] | r0 = var_60h;
| label_34:
0x000a1f1a cmp r0, 0 |
| if (r0 != 0) {
0x000a1f1c bne.w 0xa2356 | goto label_33;
| }
0x000a1f20 ldr.w r5, [sl, 0x10] | r5 = *((sl + 0x10));
| label_13:
0x000a1f24 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x000a1f28 movs r1, 0 | r1 = 0;
0x000a1f2a adds r3, 9 | r3 += 9;
0x000a1f2c lsls r6, r3, 3 | r6 = r3 << 3;
0x000a1f2e mov r0, r6 | r0 = r6;
0x000a1f30 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a1f34 mov r4, r0 | r4 = r0;
0x000a1f36 str.w r0, [sl, 0x14] | __asm ("str.w r0, [sl, 0x14]");
0x000a1f3a cmp r0, 0 |
| if (r0 == 0) {
0x000a1f3c beq.w 0xa2466 | goto label_61;
| }
0x000a1f40 mov r2, r6 | r2 = r6;
0x000a1f42 movs r1, 0 | r1 = 0;
0x000a1f44 blx 0x8264 | fcn_00008264 ();
0x000a1f48 add.w r3, r4, 0x48 | r3 = r4 + 0x48;
0x000a1f4c strd fp, r5, [r4] | __asm ("strd fp, r5, [r4]");
0x000a1f50 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x000a1f52 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a1f54 cmp r3, 0 |
| if (r3 == 0) {
0x000a1f56 beq.w 0xa2198 | goto label_62;
| }
0x000a1f5a ldr.w r5, [fp, 0x20] | r5 = *(arg_20h);
0x000a1f5e cmp r5, 0 |
| if (r5 == 0) {
0x000a1f60 beq.w 0xa25fa | goto label_63;
| }
| label_28:
0x000a1f64 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x000a1f68 cmp r3, 0 |
| if (r3 != 0) {
0x000a1f6a bne.w 0xa26c0 | goto label_64;
| }
| label_31:
0x000a1f6e ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a1f70 mov r0, fp | r0 = fp;
0x000a1f72 ldr.w r2, [pc, 0x8f0] | r2 = *(0x000a2864);
0x000a1f76 ldr.w r1, [pc, 0x8f0] |
0x000a1f7a str r3, [sp] | *(sp) = r3;
0x000a1f7c movs r3, 1 | r3 = 1;
0x000a1f7e add r2, pc | r2 += pc;
0x000a1f80 add r1, pc | r1 = 0x1447ee;
0x000a1f82 bl 0x834e8 | r0 = fcn_000834e8 (r0, r1, r2, r3, r4);
0x000a1f86 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000a1f88 cbnz r0, 0xa1fa2 |
0x000a1f8a ldr.w r1, [pc, 0x8e0] |
0x000a1f8e mov r2, r0 | r2 = r0;
0x000a1f90 movs r3, 4 | r3 = 4;
0x000a1f92 mov r0, r4 | r0 = r4;
0x000a1f94 add r1, pc | r1 = 0x144806;
0x000a1f96 bl 0xa1ad0 | r0 = fcn_000a1ad0 (r0, r1, r2, r3);
0x000a1f9a mov r5, r0 | r5 = r0;
0x000a1f9c cmp r0, 0 |
| if (r0 == 0) {
0x000a1f9e beq.w 0xa2198 | goto label_62;
| }
| }
| label_29:
0x000a1fa2 add.w r6, r4, 0x18 | r6 = r4 + 0x18;
0x000a1fa6 add.w r7, r4, 0x44 | r7 = r4 + 0x44;
| do {
0x000a1faa ldr r0, [r6, 4]! | r0 = *((r6 += 4));
0x000a1fae blx 0x8484 | fcn_00008484 ();
0x000a1fb2 cmp r6, r7 |
0x000a1fb4 bne 0xa1faa |
| } while (r6 != r7);
0x000a1fb6 mov r0, r4 | r0 = r4;
0x000a1fb8 blx 0x84f8 | fcn_000084f8 ();
0x000a1fbc movs r3, 0 | r3 = 0;
0x000a1fbe str.w r3, [sl, 0x14] | __asm ("str.w r3, [sl, 0x14]");
| do {
| label_9:
0x000a1fc2 mov r7, r5 | r7 = r5;
0x000a1fc4 b 0xa2468 | goto label_39;
| label_5:
0x000a1fc6 movs r2, 0 | r2 = 0;
| label_7:
0x000a1fc8 ldr.w r1, [pc, 0x8a4] | r1 = *(0x000a2870);
0x000a1fcc mov r0, r4 | r0 = r4;
0x000a1fce ldr.w r3, [fp, 8] | r3 = *(s2);
0x000a1fd2 add r1, pc | r1 += pc;
0x000a1fd4 str r1, [sp] | *(sp) = r1;
0x000a1fd6 ldr.w r1, [pc, 0x89c] | r1 = *(0x000a2874);
0x000a1fda add r1, pc | r1 += pc;
0x000a1fdc bl 0x492c8 | r0 = fcn_000492c8 (r0);
0x000a1fe0 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x000a1fe2 cbz r0, 0xa1ff6 |
0x000a1fe4 ldr.w r0, [fp] | r0 = *(fp);
0x000a1fe8 mov r1, r4 | r1 = r4;
0x000a1fea blx 0x83cc | fcn_000083cc ();
0x000a1fee str r0, [sp, 0x60] | var_60h = r0;
0x000a1ff0 mov r0, r4 | r0 = r4;
0x000a1ff2 blx 0x84f8 | fcn_000084f8 ();
| }
0x000a1ff6 ldr r5, [sp, 0x60] | r5 = var_60h;
0x000a1ff8 cmp r5, 0 |
0x000a1ffa bne 0xa1fc2 |
| } while (r5 != 0);
0x000a1ffc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a1ffe ldr.w r8, [sl, 0x10] | r8 = *((sl + 0x10));
0x000a2002 str.w r3, [fp, 0x68] | __asm ("str.w r3, [arg_68h]");
0x000a2006 mov r0, r8 | r0 = r8;
0x000a2008 bl 0x93d64 | r0 = fcn_00093d64 (r0);
0x000a200c mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x000a200e cbz r0, 0xa201c |
0x000a2010 ldr r3, [r0] | r3 = *(r0);
0x000a2012 subs r3, 1 | r3--;
0x000a2014 cmp r3, 0 |
0x000a2016 str r3, [r0] | *(r0) = r3;
| if (r3 <= 0) {
0x000a2018 ble.w 0xa23c4 | goto label_65;
| }
| }
| label_17:
0x000a201c ldr.w sb, [sl, 0x10] | sb = *((sl + 0x10));
0x000a2020 movs r3, 0 | r3 = 0;
0x000a2022 ldr.w r7, [r8, 0x24] | r7 = *((r8 + 0x24));
0x000a2026 str.w r3, [r8, 0x24] | __asm ("str.w r3, [r8, 0x24]");
0x000a202a ldr.w r0, [sb, 0x28] | r0 = *((sb + 0x28));
| if (r0 != 0) {
0x000a202e cbz r0, 0xa2038 |
0x000a2030 str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x000a2034 blx 0x8300 | fcn_00008300 ();
| }
0x000a2038 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
| if (r0 != 0) {
0x000a203c cbz r0, 0xa2048 |
0x000a203e bl 0xe31c | fcn_0000e31c (r0);
0x000a2042 movs r3, 0 | r3 = 0;
0x000a2044 str.w r3, [sb, 0x10] | __asm ("str.w r3, [sb, 0x10]");
| }
0x000a2048 ldr.w r4, [sb, 0x50] | r4 = *((sb + 0x50));
| if (r4 != 0) {
0x000a204c cbz r4, 0xa2060 |
0x000a204e ldr r3, [r4] | r3 = *(r4);
0x000a2050 subs r3, 1 | r3--;
0x000a2052 cmp r3, 0 |
0x000a2054 str r3, [r4] | *(r4) = r3;
| if (r3 <= 0) {
0x000a2056 ble.w 0xa2474 | goto label_66;
| }
| label_20:
0x000a205a movs r3, 0 | r3 = 0;
0x000a205c str.w r3, [sb, 0x50] | __asm ("str.w r3, [sb, 0x50]");
| }
0x000a2060 movs r3, 0 | r3 = 0;
0x000a2062 str.w r3, [fp, 0x68] | __asm ("str.w r3, [arg_68h]");
0x000a2066 cmp r7, 0 |
| if (r7 != 0) {
0x000a2068 bne.w 0xa29a0 | goto label_67;
| }
| label_19:
0x000a206c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000a206e ldr.w r2, [pc, 0x808] | r2 = *(0x000a2878);
0x000a2072 str.w sl, [r3] | __asm ("str.w sl, [r3]");
0x000a2076 ldr.w r3, [pc, 0x7cc] | r3 = *(0xa2846);
0x000a207a add r2, pc | r2 += pc;
0x000a207c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000a207e ldr r2, [r3] | r2 = *(0xa2846);
0x000a2080 ldr r3, [sp, 0x10c] | r3 = var_10ch;
0x000a2082 eors r2, r3 | r2 ^= r3;
0x000a2084 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a2088 bne.w 0xa298a | goto label_68;
| }
0x000a208c mov r0, r7 | r0 = r7;
0x000a208e add sp, 0x114 |
0x000a2090 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_40:
0x000a2094 movs r5, 7 | r5 = 7;
0x000a2096 mov r7, r5 | r7 = r5;
0x000a2098 b 0xa2468 | goto label_39;
| label_51:
0x000a209a ldrb r5, [r0, 1] | r5 = *((r0 + 1));
0x000a209c cmp r5, 0x20 |
| if (r5 != 0x20) {
0x000a209e bne 0xa20a8 | goto label_69;
| }
| do {
0x000a20a0 ldrb r5, [r1, 1]! | r5 = *((r1 += 1));
0x000a20a4 cmp r5, 0x20 |
0x000a20a6 beq 0xa20a0 |
| } while (r5 == 0x20);
| label_69:
0x000a20a8 movs r4, 1 | r4 = 1;
| label_16:
0x000a20aa cmp r5, 0 |
| if (r5 != 0) {
0x000a20ac bne 0xa2174 | goto label_70;
| }
0x000a20ae ldrd r3, r6, [sp, 0x50] | __asm ("ldrd r3, r6, [var_54h]");
0x000a20b2 cmp r3, 0 |
| if (r3 != 0) {
0x000a20b4 bne.w 0xa1e04 | goto label_1;
| }
0x000a20b8 cmp r4, 0 |
| if (r4 == 0) {
0x000a20ba beq.w 0xa22e4 | goto label_71;
| }
0x000a20be ldr.w r4, [pc, 0x7bc] | r4 = *(0x000a287c);
0x000a20c2 add r4, pc | r4 += pc;
| label_15:
0x000a20c4 movs r3, 0 | r3 = 0;
0x000a20c6 mov r0, r6 | r0 = r6;
0x000a20c8 str r3, [sp, 0x60] | var_60h = r3;
0x000a20ca blx 0x8160 | r0 = fcn_00008160 ();
0x000a20ce mov sl, r0 | sl = r0;
0x000a20d0 ldr.w r0, [pc, 0x7ac] |
0x000a20d4 mov r2, sl | r2 = sl;
0x000a20d6 mov r1, r6 | r1 = r6;
0x000a20d8 add r0, pc | r0 = 0x14495c;
0x000a20da blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a20de cmp r0, 0 |
| if (r0 != 0) {
0x000a20e0 bne.w 0xa2222 | goto label_72;
| }
0x000a20e4 ldr.w r3, [fp, 0x1c] | r3 = *(arg_1ch);
0x000a20e8 cmp r3, 0 |
| if (r3 == 0) {
0x000a20ea beq.w 0xa22b8 | goto label_73;
| }
| label_11:
0x000a20ee movs r7, 1 | r7 = 1;
0x000a20f0 movw r0, 0x3e7 | r0 = 0x3e7;
0x000a20f4 movw r6, 0x3e6 | r6 = 0x3e6;
| label_2:
0x000a20f8 ldrb r3, [r4] | r3 = *(r4);
0x000a20fa cmp r3, 0x20 |
| if (r3 != 0x20) {
0x000a20fc bne 0xa2106 | goto label_74;
| }
| do {
0x000a20fe ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x000a2102 cmp r3, 0x20 |
0x000a2104 beq 0xa20fe |
| } while (r3 == 0x20);
| label_74:
0x000a2106 eor r7, r7, 1 | r7 ^= 1;
0x000a210a cmp r3, 0x2c |
0x000a210c ite ne |
| if (r3 == 0x2c) {
0x000a210e movne r7, 0 | r7 = 0;
| }
| if (r3 != 0x2c) {
0x000a2110 andeq r7, r7, 1 | r7 &= 1;
| }
0x000a2114 cmp r7, 0 |
| if (r7 != 0) {
0x000a2116 bne 0xa2210 | goto label_75;
| }
0x000a2118 cmp r3, 0 |
| if (r3 == 0) {
0x000a211a beq.w 0xa2404 | goto label_76;
| }
0x000a211e ldrb r2, [r4] | r2 = *(r4);
| label_10:
0x000a2120 subs r2, 0x30 | r2 -= 0x30;
0x000a2122 uxtb r3, r2 | r3 = (int8_t) r2;
0x000a2124 cmp r3, 9 |
| if (r3 > 9) {
0x000a2126 bhi.w 0xa2408 | goto label_77;
| }
0x000a212a ldr.w r1, [fp, 0x18] | r1 = *(arg_18h);
0x000a212e cmp r1, 0x1f |
| if (r1 == 0x1f) {
0x000a2130 beq.w 0xa241a | goto label_78;
| }
0x000a2134 movs r3, 0 | r3 = 0;
| do {
0x000a2136 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000a213a add.w r3, r2, r3, lsl 1 | r3 = r2 + (r3 << 1);
0x000a213e ldrb r2, [r4, 1]! | r2 = *((r4 += 1));
0x000a2142 subs r2, 0x30 | r2 -= 0x30;
0x000a2144 uxtb r7, r2 | r7 = (int8_t) r2;
0x000a2146 cmp r7, 9 |
0x000a2148 ite hi |
| if (r7 <= 9) {
0x000a214a movhi r7, 0 | r7 = 0;
| }
| if (r7 > 9) {
0x000a214c movls r7, 1 | r7 = 1;
| }
0x000a214e cmp r3, r0 |
0x000a2150 it gt |
| if (r3 <= r0) {
0x000a2152 movgt r7, 0 | r7 = 0;
| }
0x000a2154 cmp r7, 0 |
0x000a2156 bne 0xa2136 |
| } while (r7 != 0);
0x000a2158 subs r2, r3, 1 | r2 = r3 - 1;
0x000a215a cmp r2, r6 |
| if (r2 > r6) {
0x000a215c bhi.w 0xa242c | goto label_79;
| }
0x000a2160 ldr.w r2, [fp, 0x1c] | r2 = *(arg_1ch);
0x000a2164 str.w r3, [r2, r1, lsl 2] | __asm ("str.w r3, [r2, r1, lsl 2]");
0x000a2168 ldr.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x000a216c adds r3, 1 | r3++;
0x000a216e str.w r3, [fp, 0x18] | __asm ("str.w r3, [arg_18h]");
0x000a2172 b 0xa20f8 | goto label_2;
| label_70:
0x000a2174 add r3, sp, 0x60 | r3 += var_60h;
0x000a2176 add r2, sp, 0x58 | r2 += var_58h;
0x000a2178 mov r0, r8 | r0 = r8;
0x000a217a bl 0x3ffe8 | r0 = fcn_0003ffe8 (r0, r1, r2, r3);
0x000a217e cmp r0, 0 |
| if (r0 == 0) {
0x000a2180 beq.w 0xa238c | goto label_80;
| }
0x000a2184 ldrb r3, [r0] | r3 = *(r0);
0x000a2186 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000a2188 ldr r5, [sp, 0x58] | r5 = var_58h;
0x000a218a cmp r3, 0 |
| if (r3 == 0) {
0x000a218c beq.w 0xa236e | goto label_81;
| }
0x000a2190 cmp r2, 0 |
| if (r2 == 0) {
0x000a2192 beq.w 0xa1dee | goto label_3;
| }
0x000a2196 b 0xa1e02 | goto label_4;
| label_62:
0x000a2198 ldr.w r1, [pc, 0x6e8] |
0x000a219c add r4, sp, 0x60 | r4 += var_60h;
0x000a219e movs r5, 0 | r5 = 0;
0x000a21a0 mov r0, r4 | r0 = r4;
0x000a21a2 str r5, [sp, 0x60] | var_60h = r5;
0x000a21a4 add r1, pc | r1 = 0x144a2c;
0x000a21a6 bl 0x492c8 | r0 = fcn_000492c8 (r0);
0x000a21aa mov r2, r0 | r2 = r0;
0x000a21ac cmp r0, 0 |
| if (r0 == 0) {
0x000a21ae beq.w 0xa1fc6 | goto label_5;
| }
0x000a21b2 ldr.w r7, [pc, 0x6d4] | r7 = *(0x000a2888);
0x000a21b6 ldr.w r6, [pc, 0x6d4] |
0x000a21ba ldr.w r8, [pc, 0x6d4] | r8 = *(0x000a2890);
0x000a21be add r7, pc | r7 += pc;
0x000a21c0 add r6, pc | r6 = 0x144a52;
0x000a21c2 add r8, pc | r8 += pc;
0x000a21c4 b 0xa21ea | goto label_82;
| label_6:
0x000a21c6 ldr.w r1, [fp, 0x10] | r1 = *(arg_10h);
0x000a21ca cmp r5, 0 |
0x000a21cc ite eq |
| if (r5 != 0) {
0x000a21ce moveq r3, r7 | r3 = r7;
| }
| if (r5 == 0) {
0x000a21d0 movne r3, r6 | r3 = r6;
| }
0x000a21d2 mov r0, r4 | r0 = r4;
0x000a21d4 ldr.w r1, [r1, r5, lsl 2] | offset_1 = r5 << 2;
| r1 = *((r1 + offset_1));
0x000a21d8 adds r5, 1 | r5++;
0x000a21da str r1, [sp] | *(sp) = r1;
0x000a21dc mov r1, r8 | r1 = r8;
0x000a21de bl 0x492c8 | r0 = fcn_000492c8 (r0);
0x000a21e2 mov r2, r0 | r2 = r0;
0x000a21e4 cmp r0, 0 |
| if (r0 == 0) {
0x000a21e6 beq.w 0xa1fc6 | goto label_5;
| }
| label_82:
0x000a21ea ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x000a21ee cmp r3, r5 |
| if (r3 > r5) {
0x000a21f0 bgt 0xa21c6 | goto label_6;
| }
0x000a21f2 b 0xa1fc8 | goto label_7;
| label_53:
0x000a21f4 ldr.w sl, [sp, 0x28] | sl = var_28h;
| label_18:
0x000a21f8 mov r0, fp | r0 = fp;
0x000a21fa bl 0xf76c | fcn_0000f76c (r0);
0x000a21fe ldr r5, [sp, 0x50] | r5 = var_50h;
0x000a2200 mov fp, r5 |
0x000a2202 cmp r5, 0 |
| if (r5 == 0) {
0x000a2204 beq.w 0xa1eba | goto label_8;
| }
0x000a2208 b 0xa1fc2 | goto label_9;
| label_52:
0x000a220a ldr r6, [sp, 0x54] | r6 = var_54h;
0x000a220c movs r5, 0 | r5 = 0;
0x000a220e b 0xa1e04 | goto label_1;
| label_75:
0x000a2210 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x000a2212 adds r4, 1 | r4++;
0x000a2214 cmp r2, 0x20 |
| if (r2 != 0x20) {
0x000a2216 bne 0xa2120 | goto label_10;
| }
| do {
0x000a2218 ldrb r2, [r4, 1]! | r2 = *((r4 += 1));
0x000a221c cmp r2, 0x20 |
0x000a221e beq 0xa2218 |
| } while (r2 == 0x20);
0x000a2220 b 0xa2120 | goto label_10;
| label_72:
0x000a2222 ldr.w r0, [pc, 0x670] | r0 = *(0x000a2894);
0x000a2226 mov r2, sl | r2 = sl;
0x000a2228 mov r1, r6 | r1 = r6;
0x000a222a add r0, pc | r0 += pc;
0x000a222c blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a2230 cmp r0, 0 |
| if (r0 != 0) {
0x000a2232 bne.w 0xa2398 | goto label_83;
| }
0x000a2236 mov r0, r4 | r0 = r4;
0x000a2238 blx 0x8160 | fcn_00008160 ();
0x000a223c ldr r7, [sp, 0x60] | r7 = var_60h;
0x000a223e cmp r7, 0 |
| if (r7 != 0) {
0x000a2240 bne.w 0xa257a | goto label_84;
| }
0x000a2244 adds r6, r0, 1 | r6 = r0 + 1;
0x000a2246 lsl.w sl, r6, 2 | sl = r6 << 2;
0x000a224a lsrs r1, r6, 0x1e | r1 = r6 >> 0x1e;
0x000a224c mov r0, sl | r0 = sl;
0x000a224e blx 0x7f18 | fcn_00007f18 ();
0x000a2252 str r0, [sp, 0x34] | var_34h = r0;
0x000a2254 cmp r0, 0 |
| if (r0 == 0) {
0x000a2256 beq.w 0xa2576 | goto label_85;
| }
0x000a225a mov r2, sl | r2 = sl;
0x000a225c mov r1, r7 | r1 = r7;
0x000a225e blx 0x8264 | fcn_00008264 ();
0x000a2262 adds.w sl, r6, r6 | sl = r6 + r6;
0x000a2266 ldr r6, [sp, 0x60] | r6 = var_60h;
0x000a2268 adc.w r1, r7, r7 | __asm ("adc.w r1, r7, r7");
0x000a226c cmp r6, 0 |
| if (r6 != 0) {
0x000a226e bne.w 0xa299c | goto label_86;
| }
0x000a2272 mov r0, sl | r0 = sl;
0x000a2274 blx 0x7f18 | fcn_00007f18 ();
0x000a2278 str r0, [sp, 0x38] | var_38h = r0;
0x000a227a cmp r0, 0 |
| if (r0 == 0) {
0x000a227c beq.w 0xa2582 | goto label_87;
| }
0x000a2280 mov r2, sl | r2 = sl;
0x000a2282 mov r1, r6 | r1 = r6;
0x000a2284 blx 0x8264 | fcn_00008264 ();
0x000a2288 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x000a228c cmp r3, 0 |
| if (r3 == 0) {
0x000a228e beq.w 0xa24aa | goto label_88;
| }
0x000a2292 ldr.w r0, [pc, 0x604] | r0 = *(0x000a2898);
0x000a2296 add r0, pc | r0 += pc;
| label_27:
0x000a2298 blx 0x852c | strncmp (r0, r1, r2);
0x000a229c ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a229e str r0, [r3] | *(r3) = r0;
0x000a22a0 movs r3, 1 | r3 = 1;
0x000a22a2 str r3, [sp, 0x60] | var_60h = r3;
| label_25:
0x000a22a4 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000a22a6 blx 0x84f8 | fcn_000084f8 ();
0x000a22aa ldr r0, [sp, 0x38] | r0 = var_38h;
0x000a22ac blx 0x84f8 | fcn_000084f8 ();
0x000a22b0 ldr r7, [sp, 0x60] | r7 = var_60h;
| do {
| label_12:
0x000a22b2 ldr r6, [sp, 0x54] | r6 = var_54h;
0x000a22b4 str r7, [sp, 0x50] | var_50h = r7;
0x000a22b6 b 0xa1e04 | goto label_1;
| label_73:
0x000a22b8 ldr r7, [sp, 0x60] | r7 = var_60h;
0x000a22ba cmp r7, 0 |
0x000a22bc bne 0xa22b2 |
| } while (r7 != 0);
0x000a22be movs r0, 0x7c | r0 = 0x7c;
0x000a22c0 movs r1, 0 | r1 = 0;
0x000a22c2 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a22c6 mov r6, r0 | r6 = r0;
0x000a22c8 cmp r0, 0 |
| if (r0 == 0) {
0x000a22ca beq.w 0xa25c6 | goto label_89;
| }
0x000a22ce mov r1, r7 | r1 = r7;
0x000a22d0 movs r2, 0x7c | r2 = 0x7c;
0x000a22d2 blx 0x8264 | fcn_00008264 ();
0x000a22d6 ldr r7, [sp, 0x60] | r7 = var_60h;
0x000a22d8 str.w r6, [fp, 0x1c] | __asm ("str.w r6, [arg_1ch]");
0x000a22dc cmp r7, 0 |
| if (r7 == 0) {
0x000a22de beq.w 0xa20ee | goto label_11;
| }
0x000a22e2 b 0xa22b2 | goto label_12;
| label_71:
0x000a22e4 mov r5, r4 | r5 = r4;
| label_14:
0x000a22e6 ldr.w r1, [pc, 0x5b4] |
0x000a22ea mov r0, r6 | r0 = r6;
0x000a22ec add r1, pc | r1 = 0x144b8e;
0x000a22ee blx 0x831c | r0 = fcn_0000831c ();
| if (r0 == 0) {
0x000a22f2 cbz r0, 0xa233a | goto label_90;
| }
0x000a22f4 ldr.w r1, [pc, 0x5a8] | r1 = *(0x000a28a0);
0x000a22f8 mov r0, r6 | r0 = r6;
0x000a22fa add r1, pc | r1 += pc;
0x000a22fc blx 0x831c | r0 = fcn_0000831c ();
| if (r0 == 0) {
0x000a2300 cbz r0, 0xa233a | goto label_90;
| }
0x000a2302 mov r0, r5 | r0 = r5;
| if (r5 == 0) {
0x000a2304 cbz r5, 0xa2322 | goto label_37;
| }
0x000a2306 ldr.w r1, [pc, 0x59c] | r1 = *(0x000a28a4);
0x000a230a add r1, pc | r1 += pc;
0x000a230c blx 0x831c | r0 = fcn_0000831c ();
0x000a2310 cmp r0, 0 |
| if (r0 != 0) {
0x000a2312 bne.w 0xa27be | goto label_91;
| }
0x000a2316 ldr.w r2, [fp, 0x14] | r2 = *(arg_14h);
0x000a231a movs r1, 1 | r1 = 1;
0x000a231c ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x000a2320 strb r1, [r2, r3] | *((r2 + r3)) = r1;
| do {
| label_37:
0x000a2322 ldrd r2, r1, [fp, 0xc] | __asm ("ldrd r2, r1, [arg_ch]");
0x000a2326 movs r3, 0 | r3 = 0;
0x000a2328 adds r4, r2, 1 | r4 = r2 + 1;
0x000a232a str.w r4, [fp, 0xc] | __asm ("str.w r4, [arg_ch]");
0x000a232e str.w r6, [r1, r2, lsl 2] | __asm ("str.w r6, [r1, r2, lsl 2]");
0x000a2332 mov r6, r3 | r6 = r3;
0x000a2334 strd r0, r3, [sp, 0x50] | __asm ("strd r0, r3, [var_54h]");
0x000a2338 b 0xa1e04 | goto label_1;
| label_90:
0x000a233a ldr.w r0, [pc, 0x56c] |
0x000a233e mov r1, r6 | r1 = r6;
0x000a2340 add r0, pc | r0 = 0x144bee;
0x000a2342 blx 0x852c | strncmp (r0, r1, r2);
0x000a2346 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a2348 str r0, [r3] | *(r3) = r0;
0x000a234a movs r0, 1 | r0 = 1;
0x000a234c b 0xa2322 |
| } while (1);
| label_59:
0x000a234e movs r3, 7 | r3 = 7;
0x000a2350 str r3, [sp, 0x60] | var_60h = r3;
0x000a2352 str.w r0, [sl, 0x10] | __asm ("str.w r0, [sl, 0x10]");
| label_33:
0x000a2356 mov r0, r5 | r0 = r5;
0x000a2358 bl 0x5dac8 | fcn_0005dac8 (r0);
0x000a235c ldr r5, [sp, 0x60] | r5 = var_60h;
0x000a235e movs r3, 0 | r3 = 0;
0x000a2360 str.w r3, [sl, 0x10] | __asm ("str.w r3, [sl, 0x10]");
0x000a2364 cmp r5, 0 |
| if (r5 == 0) {
0x000a2366 beq.w 0xa1f24 | goto label_13;
| }
0x000a236a mov r7, r5 | r7 = r5;
0x000a236c b 0xa2468 | goto label_39;
| label_81:
0x000a236e ldr r6, [sp, 0x54] | r6 = var_54h;
0x000a2370 cmp r2, 0 |
| if (r2 != 0) {
0x000a2372 bne.w 0xa1e04 | goto label_1;
| }
0x000a2376 cmp r4, 0 |
| if (r4 == 0) {
0x000a2378 beq 0xa22e6 | goto label_14;
| }
0x000a237a cmp r5, 0 |
| if (r5 == 0) {
0x000a237c beq.w 0xa26de | goto label_92;
| }
0x000a2380 mov r4, r5 | r4 = r5;
0x000a2382 b 0xa20c4 | goto label_15;
| label_50:
0x000a2384 ldrb r5, [r0] | r5 = *(r0);
0x000a2386 mov r1, r0 | r1 = r0;
0x000a2388 movs r4, 0 | r4 = 0;
0x000a238a b 0xa20aa | goto label_16;
| label_80:
0x000a238c ldr r3, [sp, 0x50] | r3 = var_50h;
0x000a238e ldr r5, [sp, 0x58] | r5 = var_58h;
0x000a2390 cmp r3, 0 |
| if (r3 == 0) {
0x000a2392 beq.w 0xa1dee | goto label_3;
| }
0x000a2396 b 0xa1e02 | goto label_4;
| label_83:
0x000a2398 ldr.w r0, [pc, 0x510] |
0x000a239c mov r2, sl | r2 = sl;
0x000a239e mov r1, r6 | r1 = r6;
0x000a23a0 add r0, pc | r0 = 0x144c50;
0x000a23a2 blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a23a6 cmp r0, 0 |
| if (r0 != 0) {
0x000a23a8 bne.w 0xa25ce | goto label_93;
| }
0x000a23ac ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x000a23b0 cmp r3, 0 |
| if (r3 != 0) {
0x000a23b2 bne.w 0xa2588 | goto label_94;
| }
0x000a23b6 ldrb r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x000a23b8 cbnz r3, 0xa23e8 | goto label_95;
| }
0x000a23ba movs r3, 1 | r3 = 1;
0x000a23bc str.w r3, [fp, 0x20] | __asm ("str.w r3, [arg_20h]");
0x000a23c0 ldr r7, [sp, 0x60] | r7 = var_60h;
0x000a23c2 b 0xa22b2 | goto label_12;
| label_65:
0x000a23c4 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x000a23c6 cmp r3, 0 |
0x000a23c8 itt gt |
| if (r3 <= 0) {
0x000a23ca movgt r7, r0 | r7 = r0;
| }
| if (r3 <= 0) {
0x000a23cc movgt r6, r5 | r6 = r5;
| }
| if (r3 <= 0) {
0x000a23ce ble 0xa23e0 | goto label_96;
| }
| do {
0x000a23d0 ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x000a23d2 adds r6, 1 | r6++;
0x000a23d4 blx 0x84f8 | fcn_000084f8 ();
0x000a23d8 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a23da adds r7, 0xc | r7 += 0xc;
0x000a23dc cmp r6, r3 |
0x000a23de blt 0xa23d0 |
| } while (r6 < r3);
| label_96:
0x000a23e0 mov r0, r4 | r0 = r4;
0x000a23e2 blx 0x84f8 | fcn_000084f8 ();
0x000a23e6 b 0xa201c | goto label_17;
| label_95:
0x000a23e8 ldr.w r1, [pc, 0x4c4] | r1 = *(0x000a28b0);
0x000a23ec movs r2, 2 | r2 = 2;
0x000a23ee str.w r2, [fp, 0x20] | __asm ("str.w r2, [arg_20h]");
0x000a23f2 mov r3, r4 | r3 = r4;
0x000a23f4 ldr.w r2, [fp, 4] | r2 = *(arg_13ch);
0x000a23f8 add r0, sp, 0x60 | r0 += var_60h;
0x000a23fa add r1, pc | r1 += pc;
0x000a23fc bl 0x492c8 | fcn_000492c8 (r0);
0x000a2400 str.w r0, [fp, 0x24] | __asm ("str.w r0, [arg_24h]");
| label_76:
0x000a2404 ldr r7, [sp, 0x60] | r7 = var_60h;
0x000a2406 b 0xa22b2 | goto label_12;
| label_77:
0x000a2408 ldr.w r0, [pc, 0x4a8] | r0 = *(0x000a28b4);
0x000a240c movs r7, 1 | r7 = 1;
0x000a240e add r0, pc | r0 += pc;
0x000a2410 blx 0x852c | strncmp (r0, r1, r2);
0x000a2414 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a2416 str r0, [r3] | *(r3) = r0;
0x000a2418 b 0xa22b2 | goto label_12;
| label_78:
0x000a241a ldr.w r0, [pc, 0x49c] |
0x000a241e movs r7, 1 | r7 = 1;
0x000a2420 add r0, pc | r0 = 0x144cde;
0x000a2422 blx 0x852c | strncmp (r0, r1, r2);
0x000a2426 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a2428 str r0, [r3] | *(r3) = r0;
0x000a242a b 0xa22b2 | goto label_12;
| label_79:
0x000a242c ldr.w r0, [pc, 0x48c] | r0 = *(0x000a28bc);
0x000a2430 movs r7, 1 | r7 = 1;
0x000a2432 add r0, pc | r0 += pc;
0x000a2434 blx 0x852c | strncmp (r0, r1, r2);
0x000a2438 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a243a str r0, [r3] | *(r3) = r0;
0x000a243c b 0xa22b2 | goto label_12;
| label_44:
0x000a243e movs r3, 7 | r3 = 7;
0x000a2440 str.w r6, [fp, 4] | __asm ("str.w r6, [arg_13ch]");
0x000a2444 str r3, [sp, 0x50] | var_50h = r3;
| label_21:
0x000a2446 movs r3, 0 | r3 = 0;
0x000a2448 str.w r3, [fp, 8] | __asm ("str.w r3, [s2]");
0x000a244c str.w r3, [fp, 0x30] | __asm ("str.w r3, [arg_30h]");
0x000a2450 movs r3, 1 | r3 = 1;
0x000a2452 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x000a2456 b 0xa21f8 | goto label_18;
| label_42:
0x000a2458 ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 == 0) {
0x000a245a cbz r3, 0xa24a2 | goto label_97;
| }
0x000a245c movs r3, 7 | r3 = 7;
0x000a245e strd r0, r0, [fp, 0x10] | __asm ("strd r0, r0, [fp, 0x10]");
0x000a2462 str r3, [sp, 0x50] | var_50h = r3;
0x000a2464 b 0xa249a | goto label_43;
| label_61:
0x000a2466 movs r7, 7 | r7 = 7;
| label_39:
0x000a2468 mov r0, sl | r0 = sl;
0x000a246a mov.w sl, 0 | sl = 0;
0x000a246e bl 0x5db54 | fcn_0005db54 (r0);
0x000a2472 b 0xa206c | goto label_19;
| label_66:
0x000a2474 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a2476 cmp r3, 0 |
0x000a2478 it gt |
| if (r3 <= 0) {
0x000a247a movgt r6, r4 | r6 = r4;
| }
| if (r3 <= 0) {
0x000a247c ble 0xa248e | goto label_98;
| }
| do {
0x000a247e ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x000a2480 adds r5, 1 | r5++;
0x000a2482 blx 0x84f8 | fcn_000084f8 ();
0x000a2486 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a2488 adds r6, 0xc | r6 += 0xc;
0x000a248a cmp r5, r3 |
0x000a248c blt 0xa247e |
| } while (r5 < r3);
| label_98:
0x000a248e mov r0, r4 | r0 = r4;
0x000a2490 blx 0x84f8 | fcn_000084f8 ();
0x000a2494 b 0xa205a | goto label_20;
| label_41:
0x000a2496 str.w r6, [fp, 0x14] | __asm ("str.w r6, [arg_14h]");
| label_43:
0x000a249a movs r3, 0 | r3 = 0;
0x000a249c str.w r3, [fp, 4] | __asm ("str.w r3, [arg_13ch]");
0x000a24a0 b 0xa2446 | goto label_21;
| label_97:
0x000a24a2 ldr r6, [sp, 0x50] | r6 = var_50h;
0x000a24a4 str.w r3, [fp, 0x10] | __asm ("str.w r3, [arg_10h]");
0x000a24a8 b 0xa1cee | goto label_22;
| label_88:
0x000a24aa ldrb r2, [r4] | r2 = *(r4);
0x000a24ac cmp r2, 0 |
| if (r2 == 0) {
0x000a24ae beq 0xa2562 | goto label_99;
| }
0x000a24b0 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000a24b2 add r0, sp, 0x8c | r0 += var_8ch;
0x000a24b4 ldr.w sl, [sp, 0x30] | sl = var_30h;
0x000a24b8 strd sb, fp, [sp, 0x40] | __asm ("strd sb, fp, [var_0hx40]");
0x000a24bc mov sb, r0 | sb = r0;
0x000a24be subs r1, 4 | r1 -= 4;
0x000a24c0 str r5, [sp, 0x48] | var_48h = r5;
0x000a24c2 str r1, [sp, 0x3c] | var_3ch = r1;
0x000a24c4 ldr r1, [sp, 0x38] | r1 = var_38h;
0x000a24c6 str.w r8, [sp, 0x4c] | __asm ("str.w r8, [var_4ch]");
0x000a24ca mov r8, r3 | r8 = r3;
0x000a24cc mov r5, r1 | r5 = r1;
| do {
| label_24:
0x000a24ce cmp r2, 0x20 |
0x000a24d0 it eq |
| if (r2 != 0x20) {
0x000a24d2 ldrbeq r2, [r4, 1]! | r2 = *((r4 += 1));
| }
0x000a24d6 beq 0xa24ce |
| } while (r2 == 0x20);
0x000a24d8 cmp r2, 0x27 |
0x000a24da it ne |
| if (r2 == 0x27) {
0x000a24dc movne r7, r4 | r7 = r4;
| }
| if (r2 == 0x27) {
0x000a24de beq 0xa2598 | goto label_100;
| }
| do {
| label_23:
0x000a24e0 ldrb r6, [r7] | r6 = *(r7);
0x000a24e2 movs r2, 0x80 | r2 = 0x80;
0x000a24e4 mov r1, sl | r1 = sl;
0x000a24e6 mov r0, sb | r0 = sb;
0x000a24e8 blx 0x7dcc | fcn_00007dcc ();
0x000a24ec lsls r3, r6, 0x18 | r3 = r6 << 0x18;
0x000a24ee mov fp, r7 |
0x000a24f0 add.w r7, r7, 1 | r7++;
0x000a24f4 bmi 0xa24e0 |
| } while (r3 < r6);
0x000a24f6 add.w r3, r6, 0x110 | r3 = r6 + 0x110;
0x000a24fa add.w r6, sp, r3 | r6 = sp + r3;
0x000a24fe ldrb r3, [r6, -0x84] | r3 = var_8ch;
0x000a2502 cmp r3, 0 |
| if (r3 != 0) {
0x000a2504 bne 0xa24e0 | goto label_23;
| }
0x000a2506 cmp r4, fp |
| if (r4 == fp) {
0x000a2508 beq 0xa25a4 | goto label_101;
| }
| label_26:
0x000a250a sub.w r6, fp, r4 | r6 = fp - r4;
0x000a250e mov r1, r4 | r1 = r4;
0x000a2510 mov r2, r6 | r2 = r6;
0x000a2512 mov r0, r5 | r0 = r5;
0x000a2514 blx 0x7dcc | fcn_00007dcc ();
0x000a2518 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000a251a str r5, [r3, 4]! | *((r3 += 4)) = r5;
0x000a251e ldrb r2, [r5] | r2 = *(r5);
0x000a2520 str r3, [sp, 0x3c] | var_3ch = r3;
0x000a2522 cmp r2, 0x27 |
0x000a2524 it ne |
| if (r2 != 0x27) {
0x000a2526 cmpne r2, 0x5b | __asm ("cmpne r2, 0x5b");
| }
| if (r2 != 0x27) {
0x000a2528 beq 0xa2532 |
0x000a252a cmp r2, 0x60 |
0x000a252c it ne |
| if (r2 != 0x60) {
0x000a252e cmpne r2, 0x22 | __asm ("cmpne r2, 0x22");
| }
| if (r2 != 0x60) {
0x000a2530 bne 0xa2538 | goto label_102;
| }
| }
0x000a2532 mov r0, r5 | r0 = r5;
0x000a2534 bl 0xb750 | fcn_0000b750 (r0);
| label_102:
0x000a2538 ldrb.w r2, [fp] | r2 = *(fp);
0x000a253c adds r6, 1 | r6++;
0x000a253e add r5, r6 | r5 += r6;
0x000a2540 mov r4, fp | r4 = fp;
0x000a2542 cmp r2, 0x20 |
| if (r2 != 0x20) {
0x000a2544 bne 0xa254e | goto label_103;
| }
| do {
0x000a2546 ldrb r2, [r4, 1]! | r2 = *((r4 += 1));
0x000a254a cmp r2, 0x20 |
0x000a254c beq 0xa2546 |
| } while (r2 == 0x20);
| label_103:
0x000a254e adds.w r8, r8, 1 | r8++;
0x000a2552 cmp r2, 0 |
| if (r2 != 0) {
0x000a2554 bne 0xa24ce | goto label_24;
| }
0x000a2556 mov r6, r8 | r6 = r8;
0x000a2558 ldrd sb, fp, [sp, 0x40] | __asm ("ldrd sb, fp, [var_40h]");
0x000a255c ldr r5, [sp, 0x48] | r5 = var_48h;
0x000a255e ldr.w r8, [sp, 0x4c] | r8 = var_4ch;
| label_99:
0x000a2562 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a2564 mov r2, r6 | r2 = r6;
0x000a2566 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000a2568 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000a256a str r3, [sp] | *(sp) = r3;
0x000a256c mov r3, fp | r3 = fp;
0x000a256e bl 0x4e22c | fcn_0004e22c (r0, r1, r2, r3, r4);
0x000a2572 str r0, [sp, 0x60] | var_60h = r0;
0x000a2574 b 0xa22a4 | goto label_25;
| label_85:
0x000a2576 movs r3, 7 | r3 = 7;
0x000a2578 str r3, [sp, 0x60] | var_60h = r3;
| label_84:
0x000a257a movs r3, 0 | r3 = 0;
0x000a257c strd r3, r3, [sp, 0x34] | __asm ("strd r3, r3, [var_34h]");
0x000a2580 b 0xa22a4 | goto label_25;
| label_87:
0x000a2582 movs r3, 7 | r3 = 7;
0x000a2584 str r3, [sp, 0x60] | var_60h = r3;
0x000a2586 b 0xa22a4 | goto label_25;
| label_94:
0x000a2588 ldr r0, [pc, 0x334] |
0x000a258a movs r7, 1 | r7 = 1;
0x000a258c add r0, pc | r0 = 0x144e50;
0x000a258e blx 0x852c | strncmp (r0, r1, r2);
0x000a2592 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a2594 str r0, [r3] | *(r3) = r0;
0x000a2596 b 0xa22b2 | goto label_12;
| label_100:
0x000a2598 mov r0, r4 | r0 = r4;
0x000a259a bl 0xe70c | r0 = fcn_0000e70c (r0);
0x000a259e mov fp, r0 |
0x000a25a0 cmp r0, 0 |
| if (r0 != 0) {
0x000a25a2 bne 0xa250a | goto label_26;
| }
| label_101:
0x000a25a4 ldr r0, [pc, 0x31c] |
0x000a25a6 ldrd sb, fp, [sp, 0x40] | __asm ("ldrd sb, fp, [var_40h]");
0x000a25aa ldrd r5, r8, [sp, 0x48] | __asm ("ldrd r5, r8, [var_48h]");
0x000a25ae add r0, pc | r0 = 0x144e76;
0x000a25b0 b 0xa2298 | goto label_27;
| label_45:
0x000a25b2 movs r3, 7 | r3 = 7;
0x000a25b4 str.w r6, [fp, 8] | __asm ("str.w r6, [s2]");
0x000a25b8 str r3, [sp, 0x50] | var_50h = r3;
0x000a25ba movs r3, 1 | r3 = 1;
0x000a25bc str.w r6, [fp, 0x30] | __asm ("str.w r6, [arg_30h]");
0x000a25c0 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x000a25c4 b 0xa21f8 | goto label_18;
| label_89:
0x000a25c6 str.w r7, [fp, 0x1c] | __asm ("str.w r7, [arg_1ch]");
0x000a25ca movs r7, 7 | r7 = 7;
0x000a25cc b 0xa22b2 | goto label_12;
| label_93:
0x000a25ce ldr r0, [pc, 0x2f8] |
0x000a25d0 mov r2, sl | r2 = sl;
0x000a25d2 mov r1, r6 | r1 = r6;
0x000a25d4 add r0, pc | r0 = 0x144ea2;
0x000a25d6 blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a25da cmp r0, 0 |
| if (r0 != 0) {
0x000a25dc bne.w 0xa2752 | goto label_104;
| }
0x000a25e0 ldr.w r6, [fp, 0x28] | r6 = *(arg_28h);
0x000a25e4 cmp r6, 0 |
| if (r6 == 0) {
0x000a25e6 beq.w 0xa2808 | goto label_105;
| }
0x000a25ea ldr r0, [pc, 0x2e0] |
0x000a25ec movs r7, 1 | r7 = 1;
0x000a25ee add r0, pc | r0 = 0x144ec0;
0x000a25f0 blx 0x852c | strncmp (r0, r1, r2);
0x000a25f4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a25f6 str r0, [r3] | *(r3) = r0;
0x000a25f8 b 0xa22b2 | goto label_12;
| label_63:
0x000a25fa ldr.w r6, [fp, 0xc] | r6 = *(arg_ch);
0x000a25fe movs r3, 0xa | r3 = 0xa;
0x000a2600 movs r0, 0x20 | r0 = 0x20;
0x000a2602 mov r1, r5 | r1 = r5;
0x000a2604 smlal r0, r1, r6, r3 | __asm ("smlal r0, r1, r6, r3");
0x000a2608 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000a260c mov r8, r0 | r8 = r0;
0x000a260e cmp r0, 0 |
| if (r0 == 0) {
0x000a2610 beq.w 0xa2784 | goto label_106;
| }
0x000a2614 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x000a2618 ldr r2, [pc, 0x2b4] |
0x000a261a mov r1, r0 | r1 = r0;
0x000a261c lsls r7, r6, 1 | r7 = r6 << 1;
0x000a261e add r2, pc | r2 = 0x144ef2;
0x000a2620 add.w r3, r7, 0x20 | r3 = r7 + 0x20;
0x000a2624 mov r0, r3 | r0 = r3;
0x000a2626 mov sb, r3 | sb = r3;
0x000a2628 blx 0x8154 | fcn_00008154 ();
0x000a262c mov r0, r8 | r0 = r8;
0x000a262e blx 0x8160 | fcn_00008160 ();
0x000a2632 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x000a2636 mov r6, r0 | r6 = r0;
0x000a2638 cmp r3, 0 |
| if (r3 <= 0) {
0x000a263a ble 0xa2668 | goto label_107;
| }
0x000a263c ldr r7, [pc, 0x294] |
0x000a263e str r4, [sp, 8] | var_8h = r4;
0x000a2640 mov r4, sb | r4 = sb;
0x000a2642 add r7, pc | r7 = 0x144f1a;
| do {
0x000a2644 add.w sb, r8, r6 | sb = r8 + r6;
0x000a2648 mov r3, r5 | r3 = r5;
0x000a264a mov r2, r7 | r2 = r7;
0x000a264c mov r1, sb | r1 = sb;
0x000a264e subs r0, r4, r6 | r0 = r4 - r6;
0x000a2650 adds r5, 1 | r5++;
0x000a2652 blx 0x8154 | fcn_00008154 ();
0x000a2656 mov r0, sb | r0 = sb;
0x000a2658 blx 0x8160 | fcn_00008160 ();
0x000a265c ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x000a2660 add r6, r0 | r6 += r0;
0x000a2662 cmp r5, r3 |
0x000a2664 blt 0xa2644 |
| } while (r5 < r3);
0x000a2666 ldr r4, [sp, 8] | r4 = var_8h;
| label_107:
0x000a2668 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a266a mov r2, r8 | r2 = r8;
0x000a266c ldr r1, [pc, 0x268] |
0x000a266e mov r0, fp | r0 = fp;
0x000a2670 str r3, [sp] | *(sp) = r3;
0x000a2672 movs r3, 0 | r3 = 0;
0x000a2674 add r1, pc | r1 = 0x144f50;
0x000a2676 bl 0x834e8 | r0 = fcn_000834e8 (r0, r1, r2, r3, r4);
0x000a267a mov r5, r0 | r5 = r0;
0x000a267c mov r0, r8 | r0 = r8;
0x000a267e blx 0x84f8 | fcn_000084f8 ();
0x000a2682 cmp r5, 0 |
| if (r5 == 0) {
0x000a2684 beq.w 0xa1f64 | goto label_28;
| }
0x000a2688 b 0xa1fa2 | goto label_29;
| label_55:
0x000a268a ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x000a268e cmp r3, 0 |
| if (r3 == 0) {
0x000a2690 beq.w 0xa27b8 | goto label_108;
| }
0x000a2694 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x000a2698 cmp r3, 0 |
| if (r3 == 0) {
0x000a269a beq.w 0xa1e3a | goto label_30;
| }
0x000a269e ldr r1, [pc, 0x23c] |
0x000a26a0 add r1, pc | r1 = 0x144f82;
| label_36:
0x000a26a2 ldrd r2, r3, [fp, 4] | __asm ("ldrd r2, r3, [arg_13ch]");
0x000a26a6 add r0, sp, 0x50 | r0 += var_50h;
0x000a26a8 str r1, [sp] | *(sp) = r1;
0x000a26aa ldr r1, [pc, 0x234] |
0x000a26ac add r1, pc | r1 = 0x144f92;
0x000a26ae bl 0x492c8 | fcn_000492c8 (r0);
0x000a26b2 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000a26b4 str.w r0, [fp, 0x24] | __asm ("str.w r0, [arg_24h]");
0x000a26b8 cmp r3, 0 |
| if (r3 == 0) {
0x000a26ba beq.w 0xa1e3a | goto label_30;
| }
0x000a26be b 0xa21f8 | goto label_18;
| label_64:
0x000a26c0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a26c2 mov r0, fp | r0 = fp;
0x000a26c4 ldr r2, [pc, 0x21c] |
0x000a26c6 ldr r1, [pc, 0x220] |
0x000a26c8 str r3, [sp] | *(sp) = r3;
0x000a26ca movs r3, 0 | r3 = 0;
0x000a26cc add r2, pc | r2 = 0x144fb4;
0x000a26ce add r1, pc | r1 = 0x144fbc;
0x000a26d0 bl 0x834e8 | r0 = fcn_000834e8 (r0, r1, r2, r3, r4);
0x000a26d4 mov r5, r0 | r5 = r0;
0x000a26d6 cmp r0, 0 |
| if (r0 != 0) {
0x000a26d8 bne.w 0xa1fa2 | goto label_29;
| }
0x000a26dc b 0xa1f6e | goto label_31;
| label_92:
0x000a26de ldr r4, [pc, 0x20c] |
0x000a26e0 add r4, pc | r4 = 0x144fd2;
0x000a26e2 b 0xa20c4 | goto label_15;
| label_46:
0x000a26e4 ldr r0, [pc, 0x208] |
0x000a26e6 ldr.w r1, [fp, 8] | r1 = *(s2);
0x000a26ea add r0, pc | r0 = 0x144fde;
0x000a26ec blx 0x852c | strncmp (r0, r1, r2);
0x000a26f0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a26f2 str r6, [sp, 0x50] | var_50h = r6;
0x000a26f4 str r0, [r3] | *(r3) = r0;
0x000a26f6 b 0xa21f8 | goto label_18;
| label_54:
0x000a26f8 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000a26fa mov r3, fp | r3 = fp;
0x000a26fc mov r1, r2 | r1 = r2;
0x000a26fe str r2, [sp] | *(sp) = r2;
0x000a2700 bl 0x4e22c | fcn_0004e22c (r0, r1, r2, r3, r4);
0x000a2704 str r0, [sp, 0x50] | var_50h = r0;
0x000a2706 cmp r0, 0 |
| if (r0 == 0) {
0x000a2708 beq.w 0xa1e30 | goto label_32;
| }
0x000a270c b 0xa21f8 | goto label_18;
| label_60:
0x000a270e ldr r2, [sp, 0x18] | r2 = var_18h;
0x000a2710 mov r3, r4 | r3 = r4;
0x000a2712 ldr r1, [pc, 0x1e0] |
0x000a2714 mov r0, fp | r0 = fp;
0x000a2716 str r2, [sp] | *(sp) = r2;
0x000a2718 ldr r2, [pc, 0x1dc] |
0x000a271a add r1, pc | r1 = 0x145014;
0x000a271c add r2, pc | r2 = 0x145018;
0x000a271e bl 0x834e8 | fcn_000834e8 (r0, r1, r2, r3, r4);
0x000a2722 str r0, [sp, 0x60] | var_60h = r0;
0x000a2724 cmp r0, 0 |
| if (r0 != 0) {
0x000a2726 bne.w 0xa2356 | goto label_33;
| }
0x000a272a ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a272c mov r0, fp | r0 = fp;
0x000a272e ldr r2, [pc, 0x1cc] |
0x000a2730 ldr r1, [pc, 0x1cc] |
0x000a2732 str r3, [sp] | *(sp) = r3;
0x000a2734 movs r3, 1 | r3 = 1;
0x000a2736 add r2, pc | r2 = 0x145038;
0x000a2738 add r1, pc | r1 = 0x14503c;
0x000a273a bl 0x834e8 | fcn_000834e8 (r0, r1, r2, r3, r4);
0x000a273e str r0, [sp, 0x60] | var_60h = r0;
0x000a2740 cmp r0, 0 |
| if (r0 != 0) {
0x000a2742 bne.w 0xa2356 | goto label_33;
| }
0x000a2746 mov r0, r5 | r0 = r5;
0x000a2748 bl 0x852cc | fcn_000852cc (r0, r1);
0x000a274c str r0, [sp, 0x60] | var_60h = r0;
0x000a274e b.w 0xa1f1a | goto label_34;
| label_104:
0x000a2752 ldr r0, [pc, 0x1b0] |
0x000a2754 mov r2, sl | r2 = sl;
0x000a2756 mov r1, r6 | r1 = r6;
0x000a2758 add r0, pc | r0 = 0x145062;
0x000a275a blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a275e cmp r0, 0 |
| if (r0 != 0) {
0x000a2760 bne 0xa27d0 | goto label_109;
| }
0x000a2762 ldrb r3, [r4] | r3 = *(r4);
0x000a2764 sub.w r2, r3, 0x30 | r2 = r3 - 0x30;
0x000a2768 cmp r2, 1 |
| if (r2 > 1) {
0x000a276a bhi 0xa27f8 | goto label_110;
| }
0x000a276c ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x000a276e cmp r2, 0 |
| if (r2 != 0) {
0x000a2770 bne 0xa27f8 | goto label_110;
| }
0x000a2772 sub.w r3, r3, 0x31 | r3 -= 0x31;
0x000a2776 clz r3, r3 | r3 &= r3;
0x000a277a lsrs r3, r3, 5 | r3 >>= 5;
0x000a277c str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
0x000a2780 ldr r7, [sp, 0x60] | r7 = var_60h;
0x000a2782 b 0xa22b2 | goto label_12;
| label_106:
0x000a2784 movs r5, 7 | r5 = 7;
0x000a2786 blx 0x84f8 | fcn_000084f8 ();
0x000a278a b 0xa1fa2 | goto label_29;
| label_56:
0x000a278c movs r0, 6 | r0 = 6;
0x000a278e blx 0x85dc | r0 = fcn_000085dc ();
0x000a2792 mov r3, r0 | r3 = r0;
0x000a2794 cmp r0, 0 |
| if (r0 == 0) {
0x000a2796 beq 0xa2836 | goto label_111;
| }
0x000a2798 ldr r2, [pc, 0x16c] |
0x000a279a movs r1, 0 | r1 = 0;
0x000a279c strb r1, [r0, 5] | *((r0 + 5)) = r1;
0x000a279e add r2, pc | r2 = 0x1450aa;
0x000a27a0 ldr r0, [r2] | r0 = imp._ITM_deregisterTMCloneTable;
0x000a27a2 ldrb r2, [r2, 4] | r2 = *((r2 + 4));
0x000a27a4 str r0, [r3] | *(r3) = r0;
0x000a27a6 strb r2, [r3, 4] | *((r3 + 4)) = r2;
0x000a27a8 ldr r2, [sp, 0x50] | r2 = var_50h;
0x000a27aa str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x000a27ae cmp r2, 0 |
| if (r2 != 0) {
0x000a27b0 bne.w 0xa21f8 | goto label_18;
| }
0x000a27b4 b.w 0xa1e44 | goto label_35;
| label_108:
0x000a27b8 ldr r1, [pc, 0x150] |
0x000a27ba add r1, pc | r1 = 0x1450ca;
0x000a27bc b 0xa26a2 | goto label_36;
| label_91:
0x000a27be ldr r0, [pc, 0x150] |
0x000a27c0 mov r1, r5 | r1 = r5;
0x000a27c2 add r0, pc | r0 = 0x1450d8;
0x000a27c4 blx 0x852c | strncmp (r0, r1, r2);
0x000a27c8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a27ca str r0, [r3] | *(r3) = r0;
0x000a27cc movs r0, 1 | r0 = 1;
0x000a27ce b 0xa2322 | goto label_37;
| label_109:
0x000a27d0 ldr r0, [pc, 0x140] |
0x000a27d2 mov r2, sl | r2 = sl;
0x000a27d4 mov r1, r6 | r1 = r6;
0x000a27d6 add r0, pc | r0 = 0x1450ee;
0x000a27d8 blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a27dc mov r7, r0 | r7 = r0;
0x000a27de cmp r0, 0 |
| if (r0 != 0) {
0x000a27e0 beq.w 0xa2920 |
0x000a27e4 ldr r0, [pc, 0x130] |
0x000a27e6 mov r2, r6 | r2 = r6;
0x000a27e8 mov r1, sl | r1 = sl;
0x000a27ea movs r7, 1 | r7 = 1;
0x000a27ec add r0, pc | r0 = 0x145108;
0x000a27ee blx 0x852c | strncmp (r0, r1, r2);
0x000a27f2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a27f4 str r0, [r3] | *(r3) = r0;
0x000a27f6 b 0xa22b2 | goto label_12;
| label_110:
0x000a27f8 ldr r0, [pc, 0x120] |
0x000a27fa movs r7, 1 | r7 = 1;
0x000a27fc add r0, pc | r0 = 0x14511c;
0x000a27fe blx 0x852c | strncmp (r0, r1, r2);
0x000a2802 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a2804 str r0, [r3] | *(r3) = r0;
0x000a2806 b 0xa22b2 | goto label_12;
| label_105:
0x000a2808 ldr r7, [sp, 0x60] | r7 = var_60h;
| if (r7 == 0) {
0x000a280a cbnz r7, 0xa2830 |
0x000a280c mov r0, r4 | r0 = r4;
0x000a280e blx 0x8160 | r0 = fcn_00008160 ();
0x000a2812 mov sl, r0 | sl = r0;
0x000a2814 adds r0, 1 | r0++;
0x000a2816 blx 0x85dc | r0 = fcn_000085dc ();
0x000a281a mov r6, r0 | r6 = r0;
0x000a281c cmp r0, 0 |
| if (r0 == 0) {
0x000a281e beq.w 0xa2994 | goto label_112;
| }
0x000a2822 mov r1, r4 | r1 = r4;
0x000a2824 mov r2, sl | r2 = sl;
0x000a2826 blx 0x7dcc | fcn_00007dcc ();
0x000a282a strb.w r7, [r6, sl] | *((r6 + sl)) = r7;
0x000a282e ldr r7, [sp, 0x60] | r7 = var_60h;
| }
| label_38:
0x000a2830 str.w r6, [fp, 0x28] | __asm ("str.w r6, [arg_28h]");
0x000a2834 b 0xa22b2 | goto label_12;
| label_111:
0x000a2836 movs r3, 7 | r3 = 7;
0x000a2838 str.w r0, [fp, 0x28] | __asm ("str.w r0, [arg_28h]");
0x000a283c str r3, [sp, 0x50] | var_50h = r3;
0x000a283e b 0xa21f8 | goto label_18;
| }
0x000a2920 ldr.w ip, [pc, 0x84] | ip = *(0x000a29a8);
0x000a2924 add.w lr, sp, 0x6c | lr += var_6ch;
0x000a2928 mov sl, lr | sl = lr;
0x000a292a mov.w r6, -1 | r6 = -1;
0x000a292e add ip, pc |
0x000a2930 add.w ip, ip, 0x3ec |
0x000a2934 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000a2938 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000a293c ldm.w ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x000a2940 stm.w lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x000a2944 mov r0, r4 | r0 = r4;
0x000a2946 blx 0x8160 | r0 = fcn_00008160 ();
0x000a294a mov r2, r0 | r2 = r0;
0x000a294c ldr r0, [pc, 0x5c] |
0x000a294e add r0, pc | r0 = 0x1452fe;
| do {
0x000a2950 mov r1, r4 | r1 = r4;
0x000a2952 str r2, [sp, 0x34] | var_34h = r2;
0x000a2954 blx 0x85a8 | fcn_000085a8 ();
0x000a2958 ldr r2, [sp, 0x34] | r2 = var_34h;
| if (r0 == 0) {
0x000a295a cbnz r0, 0xa2964 |
0x000a295c cmp r6, 0 |
| if (r6 >= 0) {
0x000a295e bge 0xa298e | goto label_113;
| }
0x000a2960 ldr.w r6, [sl, 4] | r6 = var_4h;
| }
0x000a2964 ldr r0, [sl, 8]! | r0 = var_8h_2;
0x000a2968 cmp r0, 0 |
0x000a296a bne 0xa2950 |
| } while (r0 != 0);
0x000a296c str.w r6, [fp, 0x30] | __asm ("str.w r6, [arg_30h]");
0x000a2970 lsrs r6, r6, 0x1f | r6 >>= 0x1f;
0x000a2972 str r6, [sp, 0x60] | var_60h = r6;
0x000a2974 cmp r6, 0 |
| if (r6 == 0) {
0x000a2976 beq.w 0xa22b2 | goto label_12;
| }
| do {
0x000a297a ldr r0, [pc, 0x34] |
0x000a297c add r0, pc | r0 = 0x145332;
0x000a297e blx 0x852c | strncmp (r0, r1, r2);
0x000a2982 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a2984 ldr r7, [sp, 0x60] | r7 = var_60h;
0x000a2986 str r0, [r3] | *(r3) = r0;
0x000a2988 b 0xa22b2 | goto label_12;
| label_68:
0x000a298a blx 0x7e8c | fcn_00007e8c ();
| label_113:
0x000a298e movs r3, 1 | r3 = 1;
0x000a2990 str r3, [sp, 0x60] | var_60h = r3;
0x000a2992 b 0xa297a |
| } while (1);
| label_112:
0x000a2994 movs r7, 7 | r7 = 7;
0x000a2996 b 0xa2830 | goto label_38;
| label_58:
0x000a2998 str r3, [sp, 0x50] | var_50h = r3;
0x000a299a b 0xa21f8 | goto label_18;
| label_86:
0x000a299c str r7, [sp, 0x38] | var_38h = r7;
0x000a299e b 0xa22a4 | goto label_25;
| label_67:
0x000a29a0 mov r5, r7 | r5 = r7;
0x000a29a2 mov r7, r5 | r7 = r5;
0x000a29a4 b 0xa2468 | goto label_39;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa3c8c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000a3c8c () | void fcn_000a3c8c (int16_t arg_0h, int16_t arg_ch, int16_t arg_34h, int16_t arg_38h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t arg_96h, int16_t arg_98h, int16_t arg_9ch, int16_t arg_e0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_18h;
| char * s2;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_9ch;
| int16_t var_a0h;
| int32_t var_a4h;
| int32_t var_a4h_2;
| int16_t var_ach;
| int16_t var_b0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000a3c8c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a3c90 mov r4, r2 | r4 = r2;
0x000a3c92 ldr.w r2, [pc, 0xb74] |
0x000a3c96 mov r7, r3 | r7 = r3;
0x000a3c98 mov sb, r0 | sb = r0;
0x000a3c9a mov r5, r1 | r5 = r1;
0x000a3c9c ldr.w r3, [pc, 0xb6c] | r3 = *(0xa480c);
0x000a3ca0 add r2, pc | r2 = 0x1484ae;
0x000a3ca2 vpush {d8} | __asm ("vpush {d8}");
0x000a3ca6 ldr.w r6, [pc, 0xb68] | r6 = *(0x000a4810);
0x000a3caa sub sp, 0xb4 |
0x000a3cac ldr r3, [r2, r3] |
0x000a3cae ldr.w fp, [r0, 8] | fp = *((r0 + 8));
0x000a3cb2 add r6, pc | r6 += pc;
0x000a3cb4 ldr.w sl, [r0] | sl = *(r0);
0x000a3cb8 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a3cba str r3, [sp, 0xac] | var_ach = r3;
0x000a3cbc mov.w r3, 0 | r3 = 0;
0x000a3cc0 cmp.w fp, 0 |
| if (fp == 0) {
0x000a3cc4 beq 0xa3dc0 | goto label_102;
| }
| label_0:
0x000a3cc6 ldrb.w r3, [fp, 0x96] | r3 = *(arg_96h);
0x000a3cca mov r1, r5 | r1 = r5;
0x000a3ccc mov r2, r4 | r2 = r4;
0x000a3cce mov r0, sb | r0 = sb;
0x000a3cd0 orr r3, r3, 0x20 | r3 |= 0x20;
0x000a3cd4 strb.w r3, [fp, 0x96] | *(arg_96h) = r3;
0x000a3cd8 movs r3, 2 | r3 = 2;
0x000a3cda str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a3cde add r3, sp, 0x78 | r3 += var_78h;
0x000a3ce0 bl 0x25870 | r0 = fcn_00025870 (r0, r1, r2, r3);
0x000a3ce4 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x000a3ce8 blt 0xa3d9c | goto label_3;
| }
0x000a3cea cmp.w r8, 1 |
0x000a3cee ldr.w r5, [sl, 0x10] | r5 = *((sl + 0x10));
| if (r8 == 1) {
0x000a3cf2 beq 0xa3de4 | goto label_103;
| }
| label_2:
0x000a3cf4 ldr r1, [sp, 0x78] | r1 = var_78h;
0x000a3cf6 mov r0, sl | r0 = sl;
0x000a3cf8 bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x000a3cfc str r0, [sp, 0x24] | var_24h = r0;
0x000a3cfe cmp r0, 0 |
| if (r0 == 0) {
0x000a3d00 beq 0xa3d9c | goto label_3;
| }
0x000a3d02 ldr r3, [sp, 0xe0] | r3 = *(arg_e0h);
0x000a3d04 cmp r3, 0 |
| if (r3 != 0) {
0x000a3d06 bne 0xa3dd2 | goto label_104;
| }
0x000a3d08 mov r1, r7 | r1 = r7;
0x000a3d0a mov r0, sl | r0 = sl;
0x000a3d0c bl 0x1bcc0 | fcn_0001bcc0 (r0, r1);
0x000a3d10 str r0, [sp, 0x20] | s2 = r0;
| label_1:
0x000a3d12 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a3d14 lsl.w r7, r8, 4 | r7 = r8 << 4;
0x000a3d18 adds r2, r5, r7 | r2 = r5 + r7;
0x000a3d1a str r2, [sp, 0x30] | var_30h = r2;
0x000a3d1c cmp r3, 0 |
| if (r3 == 0) {
0x000a3d1e beq 0xa3df0 | goto label_105;
| }
0x000a3d20 ldr r3, [r5, r7] | r3 = *((r5 + r7));
0x000a3d22 str r3, [sp, 0x28] | var_28h = r3;
| label_4:
0x000a3d24 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a3d26 movs r1, 0x13 | r1 = 0x13;
0x000a3d28 mov r0, sb | r0 = sb;
0x000a3d2a str r3, [sp] | *(sp) = r3;
0x000a3d2c ldrd r3, r2, [sp, 0x20] | __asm ("ldrd r3, r2, [var_24h]");
0x000a3d30 bl 0x25800 | r0 = fcn_00025800 (r0);
0x000a3d34 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000a3d36 cbnz r0, 0xa3d88 |
0x000a3d38 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000a3d3a add r3, sp, 0x9c | r3 += var_9ch;
0x000a3d3c str.w r0, [sl, 0x1ac] | __asm ("str.w r0, aav.0x000000ff");
0x000a3d40 str r0, [sp, 0x9c] | var_9ch = r0;
0x000a3d42 str r2, [sp, 0xa0] | var_a0h = r2;
0x000a3d44 ldr r2, [sp, 0x20] | r2 = s2;
0x000a3d46 ldr r1, [sp, 0x28] | r1 = var_28h;
0x000a3d48 strd r2, r0, [sp, 0xa4] | __asm ("strd r2, r0, [var_a4h]");
0x000a3d4c movs r2, 0xe | r2 = 0xe;
0x000a3d4e mov r0, sl | r0 = sl;
0x000a3d50 blx 0x84e8 | fcn_000084e8 ();
0x000a3d54 str r0, [sp, 0x2c] | var_2ch = r0;
0x000a3d56 cmp r0, 0 |
| if (r0 == 0) {
0x000a3d58 beq.w 0xa518c | goto label_106;
| }
0x000a3d5c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a3d5e cmp r3, 0xc |
| if (r3 == 0xc) {
0x000a3d60 beq 0xa3e02 | goto label_107;
| }
0x000a3d62 ldr r2, [sp, 0x9c] | r2 = var_9ch;
| if (r2 != 0) {
0x000a3d64 cbz r2, 0xa3d78 |
0x000a3d66 ldr.w r1, [pc, 0xaac] |
0x000a3d6a mov r0, sb | r0 = sb;
0x000a3d6c add r1, pc | r1 = 0x148586;
0x000a3d6e bl 0x25778 | fcn_00025778 (r0);
0x000a3d72 ldr r0, [sp, 0x9c] | r0 = var_9ch;
0x000a3d74 blx 0x84f8 | fcn_000084f8 ();
| }
0x000a3d78 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a3d7a str.w r3, [sb, 0xc] | __asm ("str.w r3, [sb, 0xc]");
0x000a3d7e ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x000a3d82 adds r3, 1 | r3++;
0x000a3d84 str.w r3, [sb, 0x24] | __asm ("str.w r3, [sb, 0x24]");
| }
| label_6:
0x000a3d88 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000a3d8a mov r0, sl | r0 = sl;
0x000a3d8c bl 0x159dc | fcn_000159dc (r0, r1);
0x000a3d90 ldr r3, [sp, 0x20] | r3 = s2;
| if (r3 == 0) {
0x000a3d92 cbz r3, 0xa3d9c | goto label_3;
| }
| label_7:
0x000a3d94 ldr r1, [sp, 0x20] | r1 = s2;
0x000a3d96 mov r0, sl | r0 = sl;
0x000a3d98 bl 0x159dc | fcn_000159dc (r0, r1);
| do {
| label_3:
0x000a3d9c ldr.w r2, [pc, 0xa78] |
0x000a3da0 ldr.w r3, [pc, 0xa68] | r3 = *(0xa480c);
0x000a3da4 add r2, pc | r2 = 0x1485c0;
0x000a3da6 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a3da8 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a3daa ldr r3, [sp, 0xac] | r3 = var_ach;
0x000a3dac eors r2, r3 | r2 ^= r3;
0x000a3dae mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a3db2 bne.w 0xa5fce | goto label_108;
| }
0x000a3db6 add sp, 0xb4 |
0x000a3db8 vpop {d8} | __asm ("vpop {d8}");
0x000a3dbc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_102:
0x000a3dc0 ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
| if (r3 == 0) {
0x000a3dc2 cbz r3, 0xa3df4 | goto label_109;
| }
| label_5:
0x000a3dc4 mov r0, sb | r0 = sb;
0x000a3dc6 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x000a3dca mov fp, r0 |
0x000a3dcc cmp r0, 0 |
0x000a3dce beq 0xa3d9c |
| } while (r0 == 0);
0x000a3dd0 b 0xa3cc6 | goto label_0;
| label_104:
0x000a3dd2 ldr.w r1, [pc, 0xa48] | r1 = *(0x000a481c);
0x000a3dd6 mov r2, r7 | r2 = r7;
0x000a3dd8 mov r0, sl | r0 = sl;
0x000a3dda add r1, pc | r1 += pc;
0x000a3ddc bl 0x2677c | fcn_0002677c (r0);
0x000a3de0 str r0, [sp, 0x20] | s2 = r0;
0x000a3de2 b 0xa3d12 | goto label_1;
| label_103:
0x000a3de4 mov r0, sb | r0 = sb;
0x000a3de6 bl 0x53ee0 | r0 = fcn_00053ee0 (r0, r1, r2, r3);
0x000a3dea cmp r0, 0 |
| if (r0 == 0) {
0x000a3dec beq 0xa3cf4 | goto label_2;
| }
0x000a3dee b 0xa3d9c | goto label_3;
| label_105:
0x000a3df0 str r3, [sp, 0x28] | var_28h = r3;
0x000a3df2 b 0xa3d24 | goto label_4;
| label_109:
0x000a3df4 ldr.w r3, [sl, 0x4c] | r3 = *((sl + 0x4c));
0x000a3df8 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x000a3dfa itt pl |
| if (r3 < r3) {
0x000a3dfc movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x000a3dfe strbpl r3, [r0, 0x17] | *((r0 + 0x17)) = r3;
| }
0x000a3e00 b 0xa3dc4 | goto label_5;
| label_107:
0x000a3e02 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000a3e04 bl 0x1a104 | fcn_0001a104 (r0);
0x000a3e08 str r0, [sp, 0x34] | var_34h = r0;
0x000a3e0a cmp r0, 0 |
| if (r0 == 0) {
0x000a3e0c beq 0xa3d88 | goto label_6;
| }
0x000a3e0e ldrb r3, [r0, 5] | r3 = *((r0 + 5));
0x000a3e10 lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
| if (r1 < r3) {
0x000a3e12 bmi.w 0xa520a | goto label_110;
| }
| label_27:
0x000a3e16 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 >= r3) {
0x000a3e18 bmi 0xa3e3a |
0x000a3e1a ldr r2, [sp, 0x20] | r2 = s2;
0x000a3e1c eor r3, r3, 4 | r3 ^= 4;
0x000a3e20 ubfx r3, r3, 2, 1 | r3 = (r3 >> 2) & ((1 << 1) - 1);
0x000a3e24 cmp r2, 0 |
0x000a3e26 it eq |
| if (r2 != 0) {
0x000a3e28 orreq r3, r3, 1 | r3 |= 1;
| }
0x000a3e2c cmp r3, 0 |
| if (r3 == 0) {
0x000a3e2e beq.w 0xa521e | goto label_111;
| }
0x000a3e32 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000a3e34 mov r0, fp | r0 = fp;
0x000a3e36 bl 0x2941c | fcn_0002941c (r0, r1, r2, r3);
| }
0x000a3e3a ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a3e3c ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x000a3e3e subs r3, 1 | r3--;
0x000a3e40 cmp r3, 0x29 |
| if (r3 <= 0x29) {
0x000a3e42 bhi 0xa3e9c |
| /* switch table (43 cases) at 0xa3e48 */
0x000a3e44 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| }
0x000a3e9c ldr r3, [sp, 0x20] | r3 = s2;
0x000a3e9e cmp r3, 0 |
| if (r3 != 0) {
0x000a3ea0 bne.w 0xa52dc | goto label_112;
| }
| label_28:
0x000a3ea4 ldr.w r2, [sl, 0x1d8] | r2 = *((sl + 0x1d8));
0x000a3ea8 mov r0, fp | r0 = fp;
0x000a3eaa asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000a3eac bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a3eb0 b 0xa3d88 | goto label_6;
0x000a3eb2 ldr r3, [r4] | r3 = *(r4);
0x000a3eb4 cmp r3, 0 |
0x000a3eb6 ldr r3, [sp, 0x20] | r3 = s2;
0x000a3eb8 it eq |
| if (r3 != 0) {
0x000a3eba moveq r8, 0xc | r8 = 0xc;
| }
| if (r3 != 0) {
0x000a3ebe cbz r3, 0xa3ed4 |
0x000a3ec0 ldr.w r1, [pc, 0x95c] | r1 = *(0x000a4820);
0x000a3ec4 mov r0, r3 | r0 = r3;
0x000a3ec6 add r1, pc | r1 += pc;
0x000a3ec8 bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a3ecc cmp r0, 0 |
| if (r0 != 0) {
0x000a3ece bne.w 0xa631a | goto label_113;
| }
0x000a3ed2 movs r5, 1 | r5 = 1;
| }
| label_92:
0x000a3ed4 mov r3, r5 | r3 = r5;
0x000a3ed6 movs r4, 1 | r4 = 1;
0x000a3ed8 movs r5, 3 | r5 = 3;
0x000a3eda mov r2, r8 | r2 = r8;
0x000a3edc str.w r5, [sb, 0x2c] | __asm ("str.w r5, [sb, 0x2c]");
0x000a3ee0 movs r1, 6 | r1 = 6;
0x000a3ee2 mov r0, fp | r0 = fp;
0x000a3ee4 str r4, [sp] | *(sp) = r4;
0x000a3ee6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a3eea movs r1, 0 | r1 = 0;
0x000a3eec mov r3, r5 | r3 = r5;
0x000a3eee str r1, [sp] | *(sp) = r1;
0x000a3ef0 mov r2, r4 | r2 = r4;
0x000a3ef2 mov r0, fp | r0 = fp;
0x000a3ef4 movs r1, 0x51 | r1 = 0x51;
0x000a3ef6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a3efa b 0xa3d88 | goto label_6;
0x000a3efc ldr r0, [sp, 0x20] | r0 = s2;
| if (r0 != 0) {
0x000a3efe cbz r0, 0xa3f12 |
0x000a3f00 movs r3, 0 | r3 = 0;
0x000a3f02 add r1, sp, 0x88 | r1 += var_88h;
0x000a3f04 str r3, [sp, 0x88] | var_88h = r3;
0x000a3f06 bl 0xc338 | fcn_0000c338 (r0, r1);
0x000a3f0a ldr r1, [sp, 0x88] | r1 = var_88h;
0x000a3f0c mov r0, sl | r0 = sl;
0x000a3f0e blx 0x7de4 | fcn_00007de4 ();
| }
0x000a3f12 ldr.w r3, [pc, 0x910] | r3 = *(0x000a4824);
0x000a3f16 ldr.w r2, [sl, 0xf8] | r2 = *((sl + 0xf8));
0x000a3f1a add r3, pc | r3 += pc;
0x000a3f1c cmp r2, r3 |
0x000a3f1e iteet eq |
| if (r2 != r3) {
0x000a3f20 ldreq r2, [sl, 0xfc] | r2 = *((sl + 0xfc));
| }
| if (r2 == r3) {
0x000a3f24 movne r2, 0 | r2 = 0;
| }
| if (r2 != r3) {
0x000a3f26 moveq r3, r2 | r3 = r2;
| }
| if (r2 == r3) {
0x000a3f28 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
| }
| label_11:
0x000a3f2a mov r0, fp | r0 = fp;
0x000a3f2c bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a3f30 b 0xa3d88 | goto label_6;
0x000a3f32 ldr r3, [sp, 0x20] | r3 = s2;
| if (r3 != 0) {
0x000a3f34 cbz r3, 0xa3f54 |
0x000a3f36 add r1, sp, 0x88 | r1 += var_88h;
0x000a3f38 mov r0, r3 | r0 = r3;
0x000a3f3a bl 0x102c0 | r0 = fcn_000102c0 (r0, r1);
| if (r0 != 0) {
0x000a3f3e cbnz r0, 0xa3f54 | goto label_114;
| }
0x000a3f40 ldrd r2, r3, [sp, 0x88] | __asm ("ldrd r2, r3, [var_88h]");
0x000a3f44 cmp r3, 0 |
| if (r3 < 0) {
0x000a3f46 blt 0xa3f54 | goto label_114;
| }
0x000a3f48 bic r2, r2, 0x80000000 | r2 = BIT_MASK (r2, 0x80000000);
0x000a3f4c movs r1, 0xb | r1 = 0xb;
0x000a3f4e mov r0, sl | r0 = sl;
0x000a3f50 blx 0x7c30 | fcn_00007c30 ();
| }
| label_114:
0x000a3f54 mov.w r2, -1 | r2 = -1;
0x000a3f58 movs r1, 0xb | r1 = 0xb;
0x000a3f5a mov r0, sl | r0 = sl;
0x000a3f5c blx 0x7c30 | r0 = fcn_00007c30 ();
0x000a3f60 mov r2, r0 | r2 = r0;
0x000a3f62 mov r0, fp | r0 = fp;
0x000a3f64 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000a3f66 bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a3f6a b 0xa3d88 | goto label_6;
0x000a3f6c ldr r3, [sp, 0x20] | r3 = s2;
0x000a3f6e cmp r3, 0 |
| if (r3 == 0) {
0x000a3f70 beq.w 0xa6128 | goto label_115;
| }
0x000a3f74 ldr r1, [sp, 0x20] | r1 = s2;
0x000a3f76 ldrb r3, [r1] | r3 = *(r1);
| if (r3 != 0) {
0x000a3f78 cbz r3, 0xa3f94 |
0x000a3f7a ldr.w r0, [sl] | r0 = *(sl);
0x000a3f7e add r3, sp, 0x88 | r3 += var_88h;
0x000a3f80 movs r2, 1 | r2 = 1;
0x000a3f82 ldr r4, [r0, 0x20] | r4 = *((r0 + 0x20));
0x000a3f84 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x000a3f86 cmp r0, 0 |
| if (r0 != 0) {
0x000a3f88 bne.w 0xa63a6 | goto label_116;
| }
0x000a3f8c ldr r3, [sp, 0x88] | r3 = var_88h;
0x000a3f8e cmp r3, 0 |
| if (r3 == 0) {
0x000a3f90 beq.w 0xa63a6 | goto label_116;
| }
| }
0x000a3f94 ldrb.w r3, [sl, 0x52] | r3 = *((sl + 0x52));
0x000a3f98 cmp r3, 1 |
| if (r3 < 1) {
0x000a3f9a bls.w 0xa639c | goto label_117;
| }
| label_98:
0x000a3f9e ldr.w r3, [pc, 0x888] | r3 = *(0xa482a);
0x000a3fa2 ldr r4, [r6, r3] | r4 = *((r6 + r3));
0x000a3fa4 ldr r0, [r4] | r0 = *(r4);
0x000a3fa6 blx 0x84f8 | fcn_000084f8 ();
0x000a3faa ldr r3, [sp, 0x20] | r3 = s2;
0x000a3fac ldrb r3, [r3] | r3 = *(r3);
0x000a3fae cmp r3, 0 |
| if (r3 != 0) {
0x000a3fb0 bne.w 0xa61fa | goto label_118;
| }
0x000a3fb4 str r3, [r4] | *(r4) = r3;
| do {
| label_8:
0x000a3fb6 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000a3fb8 mov r0, sl | r0 = sl;
0x000a3fba bl 0x159dc | fcn_000159dc (r0, r1);
0x000a3fbe b 0xa3d94 | goto label_7;
0x000a3fc0 ldr r3, [sp, 0x20] | r3 = s2;
0x000a3fc2 cmp r3, 0 |
| if (r3 == 0) {
0x000a3fc4 beq.w 0xa6168 | goto label_119;
| }
0x000a3fc8 ldr r3, [sp, 0x20] | r3 = s2;
0x000a3fca ldrb r4, [r3] | r4 = *(r3);
0x000a3fcc subs r4, 0x30 | r4 -= 0x30;
0x000a3fce uxtb r3, r4 | r3 = (int8_t) r4;
0x000a3fd0 cmp r3, 2 |
| if (r3 >= 2) {
0x000a3fd2 bls 0xa3ffc |
0x000a3fd4 ldr.w r1, [pc, 0x854] | r1 = *(0x000a482c);
0x000a3fd8 ldr r4, [sp, 0x20] | r4 = s2;
0x000a3fda add r1, pc | r1 += pc;
0x000a3fdc mov r0, r4 | r0 = r4;
0x000a3fde bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a3fe2 cmp r0, 0 |
| if (r0 == 0) {
0x000a3fe4 beq.w 0xa61d2 | goto label_120;
| }
0x000a3fe8 ldr.w r1, [pc, 0x844] | r1 = *(0x000a4830);
0x000a3fec mov r0, r4 | r0 = r4;
0x000a3fee add r1, pc | r1 += pc;
0x000a3ff0 bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a3ff4 clz r4, r0 | r4 &= r0;
0x000a3ff8 lsrs r4, r4, 5 | r4 >>= 5;
0x000a3ffa lsls r4, r4, 1 | r4 <<= 1;
| }
| label_81:
0x000a3ffc ldr.w r5, [sb] | r5 = *(sb);
0x000a4000 ldrb.w r3, [r5, 0x52] | r3 = *((r5 + 0x52));
0x000a4004 cmp r3, r4 |
0x000a4006 beq 0xa3fb6 |
| } while (r3 == r4);
0x000a4008 mov r0, sb | r0 = sb;
0x000a400a bl 0x5ad90 | r0 = fcn_0005ad90 (r0);
0x000a400e cmp r0, 0 |
| if (r0 != 0) {
0x000a4010 bne 0xa3fb6 | goto label_8;
| }
0x000a4012 strb.w r4, [r5, 0x52] | *((r5 + 0x52)) = r4;
0x000a4016 b 0xa3fb6 | goto label_8;
0x000a4018 ldr r4, [sp, 0x20] | r4 = s2;
0x000a401a cmp r4, 0 |
| if (r4 == 0) {
0x000a401c beq.w 0xa568a | goto label_65;
| }
0x000a4020 ldr r5, [sp, 0x28] | r5 = var_28h;
0x000a4022 mov r0, sb | r0 = sb;
0x000a4024 mov r1, r5 | r1 = r5;
0x000a4026 bl 0x54114 | fcn_00054114 (r0, r1);
0x000a402a mov r3, r5 | r3 = r5;
0x000a402c mov r2, r4 | r2 = r4;
0x000a402e movs r1, 2 | r1 = 2;
0x000a4030 mov r0, sb | r0 = sb;
0x000a4032 bl 0x894a4 | fcn_000894a4 (r0, r1, r2, r3, r4, r5, r6);
0x000a4036 str r0, [sp, 0x2c] | var_2ch = r0;
0x000a4038 cmp r0, 0 |
| if (r0 == 0) {
0x000a403a beq 0xa3fb6 | goto label_8;
| }
0x000a403c ldr r6, [r0, 8] | r6 = *((r0 + 8));
| if (r6 != 0) {
0x000a403e cbnz r6, 0xa4046 | goto label_121;
| }
0x000a4040 b 0xa4052 | goto label_122;
| do {
0x000a4042 ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
| if (r6 == 0) {
0x000a4044 cbz r6, 0xa4052 | goto label_122;
| }
| label_121:
0x000a4046 ldrb.w r3, [r6, 0x37] | r3 = *((r6 + 0x37));
0x000a404a and r3, r3, 3 | r3 &= 3;
0x000a404e cmp r3, 2 |
0x000a4050 bne 0xa4042 |
| } while (r3 != 2);
| label_122:
0x000a4052 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x000a4054 movs r3, 7 | r3 = 7;
0x000a4056 str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a405a mov r0, sb | r0 = sb;
0x000a405c mov r1, r4 | r1 = r4;
0x000a405e bl 0x70e88 | fcn_00070e88 (r0, r1);
0x000a4062 ldrsh.w r1, [r4, 0x2a] | r1 = *((r4 + 0x2a));
0x000a4066 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a4068 cmp r1, 0 |
| if (r1 <= 0) {
0x000a406a ble 0xa3fb6 | goto label_8;
| }
0x000a406c add.w r8, r3, 0x14 | r8 = r3 + 0x14;
0x000a4070 ldr.w r3, [pc, 0x7c0] |
0x000a4074 add r3, pc | r3 = 0x1488ac;
0x000a4076 str r3, [sp, 0x30] | var_30h = r3;
0x000a4078 ldr.w r3, [pc, 0x7bc] |
0x000a407c add r3, pc | r3 = 0x1488b8;
0x000a407e str r3, [sp, 0x38] | var_38h = r3;
0x000a4080 ldr.w r3, [pc, 0x7b8] |
0x000a4084 add r3, pc | r3 = 0x1488c4;
0x000a4086 str r3, [sp, 0x3c] | var_3ch = r3;
0x000a4088 movs r3, 0 | r3 = 0;
0x000a408a mov sb, r3 | sb = r3;
0x000a408c str r3, [sp, 0x28] | var_28h = r3;
0x000a408e b 0xa4132 | goto label_123;
| label_9:
0x000a4090 orrs.w r3, r2, r7 | r3 = r2 | r7;
0x000a4094 ittt eq |
| if (r3 != r2) {
0x000a4096 ldreq r3, [sp, 0x28] | r3 = var_28h;
| }
| if (r3 != r2) {
0x000a4098 addeq r3, 1 | r3++;
| }
| if (r3 != r2) {
0x000a409a streq r3, [sp, 0x28] | var_28h = r3;
| }
| if (r3 != r2) {
0x000a409c beq 0xa4124 |
0x000a409e lsls r4, r0, 0x1a | r4 = r0 << 0x1a;
| if (r4 < r0) {
0x000a40a0 bmi.w 0xa5ffa | goto label_124;
| }
0x000a40a4 tst.w r0, 0x40 |
0x000a40a8 ite ne |
| if ((r0 & 0x40) == 0) {
0x000a40aa movne r5, 3 | r5 = 3;
| }
| if ((r0 & 0x40) != 0) {
0x000a40ac moveq r5, 1 | r5 = 1;
| }
| label_75:
0x000a40ae ands r4, r0, 1 | r4 = r0 & 1;
| if (r4 != r0) {
0x000a40b2 bne.w 0xa5f6a | goto label_125;
| }
0x000a40b6 ldr.w r7, [pc, 0x788] | r7 = *(0x000a4840);
0x000a40ba add r7, pc | r7 += pc;
| label_10:
0x000a40bc ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a40be lsls r0, r0, 0x1d | r0 <<= 0x1d;
0x000a40c0 ldr r2, [r8, -0x14] | r2 = *((r8 - 0x14));
0x000a40c4 it pl |
| if (r0 < r0) {
0x000a40c6 ldrpl r0, [sp, 0x30] | r0 = var_30h;
| }
0x000a40c8 sub.w r3, sb, r3 | r3 = sb - r3;
| if (r0 < r0) {
0x000a40cc bpl 0xa40e0 |
0x000a40ce mov r0, r2 | r0 = r2;
0x000a40d0 str r3, [sp, 0x44] | var_44h = r3;
0x000a40d2 str r2, [sp, 0x40] | var_40h = r2;
0x000a40d4 blx 0x8160 | fcn_00008160 ();
0x000a40d8 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000a40da adds r0, 1 | r0++;
0x000a40dc ldr r3, [sp, 0x44] | r3 = var_44h;
0x000a40de add r0, r2 | r0 += r2;
| }
0x000a40e0 ldrb ip, [r8, -0x8] | ip = *((r8 - 0x8));
0x000a40e4 ldr lr, [r8, -0x10] |
0x000a40e8 subs.w ip, ip, 0 |
0x000a40ec it ne |
| if (ip == ip) {
0x000a40ee movne ip, 1 |
| }
0x000a40f2 cmp r5, 1 |
0x000a40f4 ite gt |
| if (r5 <= 1) {
0x000a40f6 movgt r1, 0 | r1 = 0;
| }
| if (r5 > 1) {
0x000a40f8 movle r1, 1 | r1 = 1;
| }
0x000a40fa cmp.w lr, 0 |
0x000a40fe it eq |
| if (lr != 0) {
0x000a4100 moveq r1, 0 | r1 = 0;
| }
0x000a4102 cmp r1, 0 |
| if (r1 != 0) {
0x000a4104 bne.w 0xa5f14 | goto label_126;
| }
| label_62:
0x000a4108 strd r2, r0, [sp] | __asm ("strd r2, r0, [sp]");
0x000a410c mov r2, r7 | r2 = r7;
0x000a410e strd ip, r1, [sp, 8] | __asm ("strd ip, r1, [sp, 8]");
0x000a4112 mov r0, fp | r0 = fp;
0x000a4114 movs r1, 1 | r1 = 1;
0x000a4116 strd r4, r5, [sp, 0x10] | __asm ("strd r4, r5, [sp, 0x10]");
0x000a411a bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a411e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a4120 ldrsh.w r1, [r3, 0x2a] | r1 = *((r3 + 0x2a));
| }
0x000a4124 add.w sb, sb, 1 | sb++;
0x000a4128 add.w r8, r8, 0x14 | r8 += 0x14;
0x000a412c cmp r1, sb |
| if (r1 <= sb) {
0x000a412e ble.w 0xa3fb6 | goto label_8;
| }
| label_123:
0x000a4132 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a4134 ldrh r0, [r8, -0x4] | r0 = *((r8 - 0x4));
0x000a4138 ldrd r2, r7, [r3, 8] | __asm ("ldrd r2, r7, [r3, 8]");
0x000a413c ands r3, r0, 0x62 | r3 = r0 & 0x62;
| if (r3 != r0) {
0x000a4140 bne 0xa4090 | goto label_9;
| }
0x000a4142 ands r5, r0, 1 | r5 = r0 & 1;
0x000a4146 it eq |
| if (r5 != r0) {
0x000a4148 moveq r4, r5 | r4 = r5;
| }
| if (r5 != r0) {
0x000a414a beq 0xa4156 |
0x000a414c cmp r6, 0 |
| if (r6 != 0) {
0x000a414e bne.w 0xa5f78 | goto label_127;
| }
0x000a4152 mov r5, r6 | r5 = r6;
0x000a4154 movs r4, 1 | r4 = 1;
| }
| label_66:
0x000a4156 orrs r2, r7 | r2 |= r7;
0x000a4158 ite eq |
| if (r2 != r7) {
0x000a415a ldreq r7, [sp, 0x3c] | r7 = var_3ch;
| }
| if (r2 == r7) {
0x000a415c ldrne r7, [sp, 0x38] | r7 = var_38h;
| }
0x000a415e b 0xa40bc | goto label_10;
0x000a4160 ldr r3, [sp, 0x20] | r3 = s2;
0x000a4162 cmp r3, 0 |
| if (r3 == 0) {
0x000a4164 beq.w 0xa6218 | goto label_128;
| }
0x000a4168 ldrb.w r3, [sl, 0x51] | r3 = *((sl + 0x51));
0x000a416c cmp r3, 0 |
| if (r3 == 0) {
0x000a416e beq.w 0xa620a | goto label_129;
| }
0x000a4172 cmp.w r8, 1 |
| if (r8 == 1) {
0x000a4176 beq.w 0xa3fb6 | goto label_8;
| }
0x000a417a movs r2, 1 | r2 = 1;
0x000a417c ldr r0, [sp, 0x20] | r0 = s2;
0x000a417e movs r1, 0 | r1 = 0;
0x000a4180 bl 0xe7e8 | fcn_0000e7e8 (r0, r1, r2);
0x000a4184 ldr r2, [sp, 0x30] | r2 = var_30h;
0x000a4186 adds r3, r0, 1 | r3 = r0 + 1;
0x000a4188 ands r3, r3, 7 | r3 &= 7;
0x000a418c it eq |
| if (r3 != r3) {
0x000a418e moveq r3, 1 | r3 = 1;
| }
0x000a4190 strb r3, [r2, 8] | *((r2 + 8)) = r3;
0x000a4192 movs r3, 1 | r3 = 1;
0x000a4194 strb r3, [r2, 9] | *((r2 + 9)) = r3;
0x000a4196 ldrb.w r3, [sl, 0x51] | r3 = *((sl + 0x51));
0x000a419a cmp r3, 0 |
| if (r3 == 0) {
0x000a419c beq.w 0xa3fb6 | goto label_8;
| }
| label_21:
0x000a41a0 mov r0, sl | r0 = sl;
0x000a41a2 bl 0x19734 | fcn_00019734 (r0, r1);
0x000a41a6 b 0xa3fb6 | goto label_8;
0x000a41a8 ldr r3, [sp, 0x20] | r3 = s2;
| if (r3 != 0) {
0x000a41aa cbz r3, 0xa41ba |
0x000a41ac add r1, sp, 0x88 | r1 += var_88h;
0x000a41ae mov r0, r3 | r0 = r3;
0x000a41b0 bl 0x102c0 | r0 = fcn_000102c0 (r0, r1);
0x000a41b4 cmp r0, 0 |
| if (r0 == 0) {
0x000a41b6 beq.w 0xa6290 | goto label_130;
| }
| }
| label_86:
0x000a41ba mov.w r0, -1 | r0 = -1;
0x000a41be mov.w r1, -1 | r1 = -1;
0x000a41c2 blx 0x8648 | r0 = fcn_00008648 ();
0x000a41c6 mov r2, r0 | r2 = r0;
0x000a41c8 mov r3, r1 | r3 = r1;
0x000a41ca b 0xa3f2a | goto label_11;
0x000a41cc mov r0, sl | r0 = sl;
0x000a41ce blx 0x839c | fcn_0000839c ();
0x000a41d2 b 0xa3d88 | goto label_6;
0x000a41d4 ldr r3, [sp, 0x20] | r3 = s2;
| if (r3 != 0) {
0x000a41d6 cbz r3, 0xa41e6 |
0x000a41d8 add r1, sp, 0x88 | r1 += var_88h;
0x000a41da mov r0, r3 | r0 = r3;
0x000a41dc bl 0x102c0 | r0 = fcn_000102c0 (r0, r1);
0x000a41e0 cmp r0, 0 |
| if (r0 == 0) {
0x000a41e2 beq.w 0xa625c | goto label_131;
| }
| }
| label_85:
0x000a41e6 mov.w r0, -1 | r0 = -1;
0x000a41ea mov.w r1, -1 | r1 = -1;
0x000a41ee blx 0x83fc | r0 = fcn_000083fc ();
0x000a41f2 mov r2, r0 | r2 = r0;
0x000a41f4 mov r3, r1 | r3 = r1;
0x000a41f6 mov r0, fp | r0 = fp;
0x000a41f8 bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a41fc b 0xa3d88 | goto label_6;
0x000a41fe ldr.w r7, [pc, 0x644] |
0x000a4202 movs r3, 6 | r3 = 6;
0x000a4204 ldr.w r5, [sl, 0x18] | r5 = *((sl + 0x18));
0x000a4208 str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a420c add r7, pc |
0x000a420e add.w r6, r7, 0x104 | r6 = r7 + 0x104;
0x000a4212 ubfx r5, r5, 5, 1 | r5 = (r5 >> 5) & ((1 << 1) - 1);
0x000a4216 add.w r7, r7, 0x160 | r7 = 0x148bb6;
| label_12:
0x000a421a ldr r4, [r6, 4]! | r4 = *((r6 += 4));
| if (r4 == 0) {
0x000a421e cbz r4, 0xa4232 | goto label_132;
| }
| do {
0x000a4220 mov r1, r4 | r1 = r4;
0x000a4222 mov r3, r5 | r3 = r5;
0x000a4224 movs r2, 1 | r2 = 1;
0x000a4226 mov r0, fp | r0 = fp;
0x000a4228 bl 0x2b4c8 | fcn_0002b4c8 (r0, r1, r2);
0x000a422c ldr r4, [r4, 0x24] | r4 = *((r4 + 0x24));
0x000a422e cmp r4, 0 |
0x000a4230 bne 0xa4220 |
| } while (r4 != 0);
| label_132:
0x000a4232 cmp r6, r7 |
| if (r6 != r7) {
0x000a4234 bne 0xa421a | goto label_12;
| }
0x000a4236 ldr.w r4, [sl, 0x18c] | r4 = *((sl + 0x18c));
0x000a423a cmp r4, 0 |
| if (r4 == 0) {
0x000a423c beq.w 0xa3d88 | goto label_6;
| }
| do {
0x000a4240 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x000a4242 mov r3, r5 | r3 = r5;
0x000a4244 movs r2, 0 | r2 = 0;
0x000a4246 mov r0, fp | r0 = fp;
0x000a4248 bl 0x2b4c8 | fcn_0002b4c8 (r0, r1, r2);
0x000a424c ldr r4, [r4] | r4 = *(r4);
0x000a424e cmp r4, 0 |
0x000a4250 bne 0xa4240 |
| } while (r4 != 0);
0x000a4252 b 0xa3d88 | goto label_6;
0x000a4254 ldr r3, [sp, 0x20] | r3 = s2;
0x000a4256 cmp r3, 0 |
| if (r3 == 0) {
0x000a4258 beq.w 0xa568a | goto label_65;
| }
0x000a425c ldr r2, [sp, 0x28] | r2 = var_28h;
0x000a425e mov r1, r3 | r1 = r3;
0x000a4260 mov r0, sl | r0 = sl;
0x000a4262 bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
0x000a4266 mov r6, r0 | r6 = r0;
0x000a4268 cmp r0, 0 |
| if (r0 == 0) {
0x000a426a beq.w 0xa3fb6 | goto label_8;
| }
0x000a426e ldr r4, [r0, 0x10] | r4 = *((r0 + 0x10));
0x000a4270 cmp r4, 0 |
| if (r4 == 0) {
0x000a4272 beq.w 0xa3fb6 | goto label_8;
| }
0x000a4276 ldr r1, [r0, 0x48] | r1 = *((r0 + 0x48));
0x000a4278 cmp r1, 0 |
| if (r1 == 0) {
0x000a427a beq.w 0xa63f0 | goto label_133;
| }
0x000a427e mov r0, sl | r0 = sl;
0x000a4280 bl 0xf364 | r0 = fcn_0000f364 (r0, r1);
0x000a4284 mov r1, r0 | r1 = r0;
| label_101:
0x000a4286 ldr.w r0, [sb, 0x74] | r0 = *((sb + 0x74));
0x000a428a movs r3, 8 | r3 = 8;
0x000a428c str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a4290 mov.w r8, 0 | r8 = 0;
0x000a4294 cmp r0, 0 |
0x000a4296 it eq |
| if (r0 != 0) {
0x000a4298 moveq r0, sb | r0 = sb;
| }
0x000a429a ldr.w sb, [pc, 0x5ac] | sb = *(0x000a4848);
0x000a429e bl 0x540f0 | fcn_000540f0 (r0, r1);
0x000a42a2 ldr.w r3, [pc, 0x5a8] |
0x000a42a6 add sb, pc | sb += pc;
0x000a42a8 add r3, pc | r3 = 0x148afa;
0x000a42aa str r3, [sp, 0x28] | var_28h = r3;
0x000a42ac ldr.w r3, [pc, 0x5a0] |
0x000a42b0 add r3, pc | r3 = 0x148b04;
0x000a42b2 str r3, [sp, 0x30] | var_30h = r3;
0x000a42b4 ldr.w r3, [pc, 0x59c] |
0x000a42b8 add r3, pc | r3 = 0x148b10;
0x000a42ba str r3, [sp, 0x2c] | var_2ch = r3;
| label_13:
0x000a42bc ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a42be cmp r3, 0 |
0x000a42c0 itt gt |
| if (r3 <= 0) {
0x000a42c2 movgt r7, r4 | r7 = r4;
| }
| if (r3 <= 0) {
0x000a42c4 movgt r5, 0 | r5 = 0;
| }
| if (r3 <= 0) {
0x000a42c6 ble 0xa4332 | goto label_134;
| }
| do {
0x000a42c8 ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x000a42ca ldrb r1, [r4, 0x1a] | r1 = *((r4 + 0x1a));
0x000a42cc ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000a42ce ldr r0, [r7, 0x28] | r0 = *((r7 + 0x28));
0x000a42d0 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x000a42d4 subs r1, 7 | r1 -= 7;
0x000a42d6 ldr.w r2, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r2 = *((r3 + offset_0));
0x000a42da ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000a42dc cmp r1, 3 |
| if (r1 > 3) {
0x000a42de bhi.w 0xa6404 | goto label_135;
| }
| /* switch table (4 cases) at 0xa42e6 */
0x000a42e2 tbb [pc, r1] | __asm ("tbb aav.0x000000ff");
0x000a42ea ldr.w ip, [pc, 0x56c] | ip = *(0x000a4858);
0x000a42ee add ip, pc |
| label_14:
0x000a42f0 ldrb r1, [r4, 0x19] | r1 = *((r4 + 0x19));
0x000a42f2 subs r1, 7 | r1 -= 7;
0x000a42f4 cmp r1, 3 |
| if (r1 > 3) {
0x000a42f6 bhi.w 0xa63fc | goto label_136;
| }
| /* switch table (4 cases) at 0xa42fe */
0x000a42fa tbb [pc, r1] | __asm ("tbb aav.0x000000ff");
0x000a4302 ldr.w r1, [pc, 0x558] | r1 = *(0x000a485c);
0x000a4306 add r1, pc | r1 += pc;
| label_15:
0x000a4308 strd r5, r3, [sp] | __asm ("strd r5, r3, [sp]");
0x000a430c adds r5, 1 | r5++;
0x000a430e ldr.w r3, [pc, 0x550] |
0x000a4312 adds r7, 8 | r7 += 8;
0x000a4314 strd r2, r0, [sp, 8] | __asm ("strd r2, r0, [sp, 8]");
0x000a4318 mov r2, sb | r2 = sb;
0x000a431a strd ip, r1, [sp, 0x10] | __asm ("strd ip, r1, [sp, 0x10]");
0x000a431e mov r0, fp | r0 = fp;
0x000a4320 add r3, pc | r3 = 0x148b86;
0x000a4322 movs r1, 1 | r1 = 1;
0x000a4324 str r3, [sp, 0x18] | var_18h = r3;
0x000a4326 mov r3, r8 | r3 = r8;
0x000a4328 bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a432c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a432e cmp r3, r5 |
0x000a4330 bgt 0xa42c8 |
| } while (r3 > r5);
| label_134:
0x000a4332 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x000a4334 add.w r8, r8, 1 | r8++;
0x000a4338 cmp r4, 0 |
| if (r4 != 0) {
0x000a433a bne 0xa42bc | goto label_13;
| }
0x000a433c b 0xa3fb6 | goto label_8;
0x000a433e ldr.w ip, [sp, 0x28] | ip = var_28h;
0x000a4342 b 0xa42f0 | goto label_14;
0x000a4344 ldr.w r1, [pc, 0x51c] |
0x000a4348 add r1, pc | r1 = 0x148bb0;
0x000a434a b 0xa4308 | goto label_15;
0x000a434c ldr.w ip, [sp, 0x2c] | ip = var_2ch;
0x000a4350 b 0xa42f0 | goto label_14;
0x000a4352 ldr.w r1, [pc, 0x514] | r1 = *(0x000a4868);
0x000a4356 add r1, pc | r1 += pc;
0x000a4358 b 0xa4308 | goto label_15;
0x000a435a ldr.w r1, [pc, 0x510] | r1 = *(0x000a486c);
0x000a435e add r1, pc | r1 += pc;
0x000a4360 b 0xa4308 | goto label_15;
0x000a4362 ldr.w ip, [pc, 0x50c] | ip = *(0x000a4870);
0x000a4366 add ip, pc |
0x000a4368 b 0xa42f0 | goto label_14;
0x000a436a ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a436e add r3, r7 | r3 += r7;
0x000a4370 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000a4372 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x000a4374 ldr.w r3, [sb, 0x2c] | r3 = *((sb + 0x2c));
0x000a4378 str r2, [sp, 0x5c] | var_5ch = r2;
0x000a437a adds r1, r3, 6 | r1 = r3 + 6;
0x000a437c str r3, [sp, 0x6c] | var_6ch = r3;
0x000a437e str r1, [sp, 0x64] | var_64h = r1;
0x000a4380 str.w r1, [sb, 0x2c] | __asm ("str.w r1, [sb, 0x2c]");
0x000a4384 adds r1, r3, 1 | r1 = r3 + 1;
0x000a4386 adds r3, 5 | r3 += 5;
0x000a4388 str r1, [sp, 0x48] | var_48h = r1;
0x000a438a str r3, [sp, 0x58] | var_58h = r3;
0x000a438c cmp r2, 0 |
| if (r2 == 0) {
0x000a438e beq.w 0xa3d88 | goto label_6;
| }
0x000a4392 ldr.w r3, [pc, 0x4e0] | r3 = *(0x000a4874);
0x000a4396 str.w sl, [sp, 0x38] | __asm ("str.w sl, [var_38h]");
0x000a439a add r3, pc | r3 += pc;
0x000a439c adds r3, 4 | r3 += 4;
0x000a439e str r3, [sp, 0x70] | var_70h = r3;
0x000a43a0 ldr.w r3, [pc, 0x4d4] |
0x000a43a4 add r3, pc | r3 = 0x148c20;
0x000a43a6 str r3, [sp, 0x54] | var_54h = r3;
| label_34:
0x000a43a8 ldr r2, [sp, 0x20] | r2 = s2;
0x000a43aa cmp r2, 0 |
| if (r2 == 0) {
0x000a43ac beq.w 0xa565a | goto label_137;
| }
0x000a43b0 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a43b2 movs r1, 0 | r1 = 0;
0x000a43b4 mov r0, sb | r0 = sb;
0x000a43b6 bl 0x894a4 | r0 = fcn_000894a4 (r0, r1, r2, r3, r4, r5, r6);
0x000a43ba mov sl, r0 | sl = r0;
0x000a43bc cmp r0, 0 |
| if (r0 == 0) {
0x000a43be beq.w 0xa558e | goto label_138;
| }
0x000a43c2 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000a43c4 cmp r3, 0 |
| if (r3 == 0) {
0x000a43c6 beq.w 0xa558e | goto label_138;
| }
0x000a43ca movs r3, 0 | r3 = 0;
0x000a43cc str r3, [sp, 0x5c] | var_5ch = r3;
| label_41:
0x000a43ce ldr.w r0, [sl, 0x48] | r0 = *((sl + 0x48));
0x000a43d2 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000a43d4 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x000a43d6 cmp r0, 0 |
| if (r0 == 0) {
0x000a43d8 beq.w 0xa63c0 | goto label_139;
| }
0x000a43dc ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x000a43de cmp r0, r3 |
| if (r0 == r3) {
0x000a43e0 beq.w 0xa5f0c | goto label_140;
| }
0x000a43e4 add.w r3, r1, 0x10 | r3 = r1 + 0x10;
0x000a43e8 movs r6, 0 | r6 = 0;
| do {
0x000a43ea mov r1, r3 | r1 = r3;
0x000a43ec adds r6, 1 | r6++;
0x000a43ee ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000a43f0 adds r3, 0x10 | r3 += 0x10;
0x000a43f2 lsls r4, r6, 4 | r4 = r6 << 4;
0x000a43f4 cmp r0, r2 |
0x000a43f6 bne 0xa43ea |
| } while (r0 != r2);
0x000a43f8 str r4, [sp, 0x30] | var_30h = r4;
| label_61:
0x000a43fa ldr.w r0, [sb, 0x74] | r0 = *((sb + 0x74));
0x000a43fe ldr r3, [r1] | r3 = *(r1);
0x000a4400 cmp r0, 0 |
0x000a4402 it eq |
| if (r0 != 0) {
0x000a4404 moveq r0, sb | r0 = sb;
| }
0x000a4406 ldr r2, [r0, 0x54] | r2 = *((r0 + 0x54));
0x000a4408 str r3, [sp, 0x28] | var_28h = r3;
0x000a440a movs r3, 1 | r3 = 1;
0x000a440c lsls r3, r6 | r3 <<= r6;
0x000a440e tst r2, r3 |
| if ((r2 & r3) != 0) {
0x000a4410 bne.w 0xa56b0 | goto label_141;
| }
0x000a4414 cmp r6, 1 |
0x000a4416 orr.w r2, r2, r3 | r2 |= r3;
0x000a441a str r2, [r0, 0x54] | *((r0 + 0x54)) = r2;
| if (r6 == 1) {
0x000a441c beq.w 0xa5f24 | goto label_142;
| }
0x000a4420 ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x000a4424 ldr.w r1, [sl] | r1 = *(sl);
| label_42:
0x000a4428 ldr.w r3, [sb] | r3 = *(sb);
0x000a442c ldr r0, [sp, 0x30] | r0 = var_30h;
0x000a442e ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a4430 add r3, r0 | r3 += r0;
0x000a4432 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a4434 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 != 0) {
0x000a4436 cbz r3, 0xa4444 |
0x000a4438 str r1, [sp] | *(sp) = r1;
0x000a443a movs r3, 0 | r3 = 0;
0x000a443c mov r1, r6 | r1 = r6;
0x000a443e mov r0, sb | r0 = sb;
0x000a4440 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
| }
| label_43:
0x000a4444 ldrsh.w r3, [sl, 0x2a] | r3 = *((sl + 0x2a));
0x000a4448 movs r1, 0 | r1 = 0;
0x000a444a ldr r2, [sp, 0x64] | r2 = var_64h;
0x000a444c mov r0, sb | r0 = sb;
0x000a444e movs r7, 1 | r7 = 1;
0x000a4450 add r3, r2 | r3 += r2;
0x000a4452 ldr.w r2, [sb, 0x2c] | r2 = *((sb + 0x2c));
0x000a4456 cmp r3, r2 |
0x000a4458 mov r2, r6 | r2 = r6;
0x000a445a it gt |
| if (r3 <= r2) {
0x000a445c strgt r3, [sb, 0x2c] | *((sb + 0x2c)) = r3;
| }
0x000a4460 movs r3, 0x62 | r3 = 0x62;
0x000a4462 str r3, [sp] | *(sp) = r3;
0x000a4464 mov r3, sl | r3 = sl;
0x000a4466 bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x000a446a ldr.w r2, [sl] | r2 = *(sl);
0x000a446e mov r0, fp | r0 = fp;
0x000a4470 ldr r1, [sp, 0x48] | r1 = var_48h;
0x000a4472 bl 0x2b744 | fcn_0002b744 (r0, r1, r2);
0x000a4476 ldr.w r5, [sl, 0x10] | r5 = *((sl + 0x10));
0x000a447a cmp r5, 0 |
| if (r5 == 0) {
0x000a447c beq.w 0xa5352 | goto label_143;
| }
0x000a4480 add r3, sp, 0x84 | r3 += var_84h;
0x000a4482 str.w sl, [sp, 0x3c] | __asm ("str.w sl, [var_3ch]");
0x000a4486 str.w fp, [sp, 0x34] | __asm ("str.w fp, [var_34h]");
0x000a4488 add sp, 0xd0 |
0x000a448a mov r8, r6 | r8 = r6;
0x000a448c ldr.w sl, [sp, 0x38] | sl = var_38h;
0x000a4490 ldr.w fp, [sp, 0x28] | fp = var_28h;
0x000a4494 str r3, [sp, 0x2c] | var_2ch = r3;
0x000a4496 b 0xa44ba | goto label_144;
| label_16:
0x000a4498 ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
0x000a449a movs r1, 0x62 | r1 = 0x62;
0x000a449c ldr r0, [sp, 0x34] | r0 = var_34h;
0x000a449e mov r2, r7 | r2 = r7;
0x000a44a0 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000a44a4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a44a8 mov r1, r6 | r1 = r6;
0x000a44aa mov r0, sb | r0 = sb;
0x000a44ac bl 0x2d434 | fcn_0002d434 (r0, r1);
| do {
0x000a44b0 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x000a44b2 adds r7, 1 | r7++;
0x000a44b4 cmp r5, 0 |
| if (r5 == 0) {
0x000a44b6 beq.w 0xa534a | goto label_145;
| }
| label_144:
0x000a44ba ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x000a44bc mov r2, fp | r2 = fp;
0x000a44be mov r0, sl | r0 = sl;
0x000a44c0 bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
0x000a44c4 mov r4, r0 | r4 = r0;
0x000a44c6 cmp r0, 0 |
0x000a44c8 beq 0xa44b0 |
| } while (r0 == 0);
0x000a44ca cmp.w r8, 1 |
0x000a44ce mov.w r3, 0 | r3 = 0;
0x000a44d2 str r3, [sp, 0x84] | var_84h = r3;
| if (r8 != 1) {
0x000a44d4 beq 0xa44f6 |
0x000a44d6 ldr.w r3, [sb] | r3 = *(sb);
0x000a44da ldr r2, [sp, 0x30] | r2 = var_30h;
0x000a44dc ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a44de add r3, r2 | r3 += r2;
0x000a44e0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a44e2 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x000a44e4 cbz r3, 0xa44f6 | goto label_146;
| }
0x000a44e6 ldr r3, [r0] | r3 = *(r0);
0x000a44e8 mov r1, r8 | r1 = r8;
0x000a44ea ldr r2, [r0, 0x1c] | r2 = *((r0 + 0x1c));
0x000a44ec mov r0, sb | r0 = sb;
0x000a44ee str r3, [sp] | *(sp) = r3;
0x000a44f0 movs r3, 0 | r3 = 0;
0x000a44f2 bl 0x1b620 | fcn_0001b620 (r0, r1, r2, r3, r4);
| }
| label_146:
0x000a44f6 movs r3, 0 | r3 = 0;
0x000a44f8 mov r2, r5 | r2 = r5;
0x000a44fa str r3, [sp] | *(sp) = r3;
0x000a44fc mov r1, r4 | r1 = r4;
0x000a44fe ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a4500 mov r0, sb | r0 = sb;
0x000a4502 bl 0x2e55c | r0 = fcn_0002e55c (r0, r1, r2, r3, r4, r5);
0x000a4506 cmp r0, 0 |
| if (r0 != 0) {
0x000a4508 bne.w 0xa3d88 | goto label_6;
| }
0x000a450c ldr r6, [sp, 0x84] | r6 = var_84h;
0x000a450e cmp r6, 0 |
| if (r6 != 0) {
0x000a4510 bne 0xa4498 | goto label_16;
| }
0x000a4512 movs r2, 0x62 | r2 = 0x62;
0x000a4514 mov r3, r4 | r3 = r4;
0x000a4516 str r2, [sp] | *(sp) = r2;
0x000a4518 mov r1, r7 | r1 = r7;
0x000a451a mov r2, r8 | r2 = r8;
0x000a451c mov r0, sb | r0 = sb;
0x000a451e bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x000a4520 cdp2 p7, 1, c14, c1, c5, 6 | __asm ("cdp2 p7, 1, c14, c1, c5, 6");
0x000a4524 ldr r3, [sp, 0x20] | r3 = s2;
0x000a4526 cmp r3, 0 |
| if (r3 == 0) {
0x000a4528 beq.w 0xa62c4 | goto label_147;
| }
0x000a452c ldr.w r3, [sl, 0x18] | r3 = *((sl + 0x18));
0x000a4530 lsls r1, r3, 0x19 | r1 = r3 << 0x19;
| if (r1 < r3) {
0x000a4532 bmi.w 0xa3fb6 | goto label_8;
| }
0x000a4536 ldr r4, [pc, 0x344] |
0x000a4538 ldr r1, [pc, 0x344] |
0x000a453a ldr r5, [pc, 0x348] |
0x000a453c ldr r3, [sp, 0x20] | r3 = s2;
0x000a453e add r4, pc | r4 = 0x148dc0;
0x000a4540 adds r4, 0x90 | r4 += 0x90;
0x000a4542 add r1, pc | r1 = 0x148dc6;
0x000a4544 add r5, pc | r5 = 0x148dce;
0x000a4546 subs r6, r3, 1 | r6 = r3 - 1;
| label_17:
0x000a4548 subs r1, 1 | r1--;
0x000a454a mov r0, r6 | r0 = r6;
| do {
| label_25:
0x000a454c ldrb r3, [r0, 1]! | r3 = *((r0 += 1));
0x000a4550 ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x000a4554 cmp r3, r2 |
| if (r3 == r2) {
0x000a4556 beq.w 0xa51d0 | goto label_148;
| }
0x000a455a add r3, r5 | r3 += r5;
0x000a455c add r2, r5 | r2 += r5;
0x000a455e ldrb.w r7, [r3, 0x140] | r7 = *((r3 + 0x140));
0x000a4562 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x000a4566 cmp r7, r3 |
0x000a4568 beq 0xa454c |
| } while (r7 == r3);
0x000a456a ldr r1, [r4, 8]! | r1 = *((r4 += 8));
0x000a456e cmp r1, 0 |
| if (r1 != 0) {
0x000a4570 bne 0xa4548 | goto label_17;
| }
| label_26:
0x000a4572 ldr r1, [pc, 0x314] |
0x000a4574 mov r0, sb | r0 = sb;
0x000a4576 ldr r2, [sp, 0x20] | r2 = s2;
0x000a4578 add r1, pc | r1 = 0x148e06;
0x000a457a bl 0x25778 | fcn_00025778 (r0);
0x000a457e b 0xa3fb6 | goto label_8;
0x000a4580 mov r1, r8 | r1 = r8;
0x000a4582 mov r0, fp | r0 = fp;
0x000a4584 bl 0x98c4 | fcn_000098c4 (r0, r1);
0x000a4588 ldr r3, [sp, 0x20] | r3 = s2;
0x000a458a cmp r3, 0 |
| if (r3 == 0) {
0x000a458c beq.w 0xa6096 | goto label_149;
| }
0x000a4590 movs r3, 0 | r3 = 0;
0x000a4592 ldr r0, [sp, 0x20] | r0 = s2;
0x000a4594 add r1, sp, 0x88 | r1 += var_88h;
0x000a4596 str r3, [sp, 0x88] | var_88h = r3;
0x000a4598 bl 0xc338 | fcn_0000c338 (r0, r1);
0x000a459c ldr r4, [sp, 0x88] | r4 = var_88h;
0x000a459e cmp r4, 0 |
| if (r4 < 0) {
0x000a45a0 bge 0xa45ae |
0x000a45a2 cmp.w r4, -0x80000000 |
0x000a45a6 ite ne |
| if (r4 != -0x80000000) {
0x000a45a8 rsbne r4, r4, 0 | __asm ("rsbne r4, r4, 0");
| }
| if (r4 == -0x80000000) {
0x000a45aa mvneq r4, 0x80000000 | r4 = ~0x80000000;
| goto label_150;
| }
| }
| label_150:
0x000a45ae mov r0, sb | r0 = sb;
0x000a45b0 mov r2, r8 | r2 = r8;
0x000a45b2 movs r1, 0 | r1 = 0;
0x000a45b4 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x000a45b8 mov r2, r8 | r2 = r8;
0x000a45ba mov r0, fp | r0 = fp;
0x000a45bc movs r3, 3 | r3 = 3;
0x000a45be movs r1, 0x60 | r1 = 0x60;
0x000a45c0 str r4, [sp] | *(sp) = r4;
0x000a45c2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a45c6 ldr r2, [sp, 0x30] | r2 = var_30h;
0x000a45c8 mov r1, r4 | r1 = r4;
0x000a45ca ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x000a45cc ldr r0, [r2, 4] | r0 = *((r2 + 4));
0x000a45ce str r4, [r3, 0x50] | *((r3 + 0x50)) = r4;
0x000a45d0 bl 0x18650 | fcn_00018650 (r0, r1);
0x000a45d4 b 0xa3fb6 | goto label_8;
0x000a45d6 ldr.w r1, [sl, 0x14] | r1 = *((sl + 0x14));
0x000a45da movs r3, 3 | r3 = 3;
0x000a45dc str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a45e0 cmp r1, 0 |
| if (r1 <= 0) {
0x000a45e2 ble.w 0xa3d88 | goto label_6;
| }
0x000a45e6 ldr r4, [pc, 0x2a4] |
0x000a45e8 mov r2, r1 | r2 = r1;
0x000a45ea ldr r6, [pc, 0x2a4] |
0x000a45ec add r4, pc | r4 = 0x148e7e;
0x000a45ee adds r4, 0x8c | r4 += 0x8c;
0x000a45f0 add r6, pc | r6 = 0x148e86;
0x000a45f2 b 0xa4614 | goto label_151;
| label_19:
0x000a45f4 ldr.w r3, [r3, 0xa8] | r3 = *((r3 + 0xa8));
| label_20:
0x000a45f8 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x000a45fc movs r1, 1 | r1 = 1;
0x000a45fe mov r2, r6 | r2 = r6;
0x000a4600 mov r3, r5 | r3 = r5;
0x000a4602 mov r0, fp | r0 = fp;
0x000a4604 bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a4608 ldr.w r2, [sl, 0x14] | r2 = *((sl + 0x14));
| label_18:
0x000a460c adds r5, 1 | r5++;
0x000a460e cmp r2, r5 |
| if (r2 <= r5) {
0x000a4610 ble.w 0xa3d88 | goto label_6;
| }
| label_151:
0x000a4614 ldr.w r1, [sl, 0x10] | r1 = *((sl + 0x10));
0x000a4618 lsls r7, r5, 4 | r7 = r5 << 4;
0x000a461a adds r3, r1, r7 | r3 = r1 + r7;
0x000a461c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a461e cmp r3, 0 |
| if (r3 == 0) {
0x000a4620 beq 0xa460c | goto label_18;
| }
0x000a4622 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a4624 ldr r2, [r1, r7] | r2 = *((r1 + r7));
0x000a4626 ldr r3, [r3] | r3 = *(r3);
0x000a4628 ldrb r1, [r3, 0xf] | r1 = *((r3 + 0xf));
0x000a462a cmp r1, 0 |
| if (r1 == 0) {
0x000a462c beq 0xa45f4 | goto label_19;
| }
0x000a462e mov r3, r4 | r3 = r4;
0x000a4630 b 0xa45f8 | goto label_20;
0x000a4632 movs r3, 1 | r3 = 1;
0x000a4634 movs r4, 0 | r4 = 0;
0x000a4636 str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a463a b 0xa4652 |
| while (r0 != 0) {
0x000a463c movs r1, 1 | r1 = 1;
0x000a463e mov r0, fp | r0 = fp;
0x000a4640 bl 0x2b744 | fcn_0002b744 (r0, r1, r2);
0x000a4644 movs r3, 1 | r3 = 1;
0x000a4646 movs r1, 0x51 | r1 = 0x51;
0x000a4648 mov r2, r3 | r2 = r3;
0x000a464a mov r0, fp | r0 = fp;
0x000a464c str r4, [sp] | *(sp) = r4;
0x000a464e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a4652 mov r0, r5 | r0 = r5;
0x000a4654 adds r5, 1 | r5++;
0x000a4656 blx 0x8208 | r0 = fcn_00008208 ();
0x000a465a mov r2, r0 | r2 = r0;
0x000a465c cmp r0, 0 |
0x000a465e bne 0xa463c |
| }
0x000a4660 ldrb.w r3, [fp, 0x96] | r3 = *(arg_96h);
0x000a4664 bfi r3, r0, 5, 1 | value_1 = BIT_MASK (5, 1);
| value_2 = r0 & value_1;
| value_1 = ~value_1;
| r3 &= value_1;
| r3 |= value_2;
0x000a4668 strb.w r3, [fp, 0x96] | *(arg_96h) = r3;
0x000a466c b.w 0xa3d88 | goto label_6;
0x000a4670 ldr.w r4, [sl, 0x19c] | r4 = *((sl + 0x19c));
0x000a4674 movs r3, 2 | r3 = 2;
0x000a4676 str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a467a cmp r4, 0 |
| if (r4 == 0) {
0x000a467c beq.w 0xa3d88 | goto label_6;
| }
0x000a4680 ldr r6, [pc, 0x210] |
0x000a4682 add r6, pc | r6 = 0x148f1a;
| do {
0x000a4684 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000a4686 mov r2, r6 | r2 = r6;
0x000a4688 movs r1, 1 | r1 = 1;
0x000a468a mov r0, fp | r0 = fp;
0x000a468c ldr r3, [r3] | r3 = *(r3);
0x000a468e str r3, [sp] | *(sp) = r3;
0x000a4690 mov r3, r5 | r3 = r5;
0x000a4692 bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a4696 ldr r4, [r4] | r4 = *(r4);
0x000a4698 adds r5, 1 | r5++;
0x000a469a cmp r4, 0 |
0x000a469c bne 0xa4684 |
| } while (r4 != 0);
0x000a469e b.w 0xa3d88 | goto label_6;
0x000a46a2 ldr r3, [sp, 0x20] | r3 = s2;
0x000a46a4 cmp r3, 0 |
| if (r3 == 0) {
0x000a46a6 beq.w 0xa568a | goto label_65;
| }
0x000a46aa movs r2, 0 | r2 = 0;
0x000a46ac movs r1, 1 | r1 = 1;
0x000a46ae mov r0, r3 | r0 = r3;
0x000a46b0 bl 0xe7e8 | r0 = fcn_0000e7e8 (r0, r1, r2);
0x000a46b4 cmp r0, 0 |
| if (r0 != 0) {
0x000a46b6 bne.w 0xa6196 | goto label_152;
| }
0x000a46ba ldr r5, [pc, 0x1dc] |
0x000a46bc movs r3, 4 | r3 = 4;
0x000a46be str r3, [sp, 0x2c] | var_2ch = r3;
0x000a46c0 add r5, pc | r5 = 0x148f5e;
0x000a46c2 addw r5, r5, 0x958 | __asm ("addw r5, r5, aav.0x000000ff");
| label_80:
0x000a46c6 ldr r6, [pc, 0x1d4] |
0x000a46c8 movs r4, 0 | r4 = 0;
0x000a46ca ldr r7, [pc, 0x1d4] |
0x000a46cc movs r3, 1 | r3 = 1;
0x000a46ce movs r2, 2 | r2 = 2;
0x000a46d0 str r5, [sp] | *(sp) = r5;
0x000a46d2 add r6, pc | r6 = 0x148f74;
0x000a46d4 mov r0, sl | r0 = sl;
0x000a46d6 add r7, pc | r7 = 0x148f7c;
0x000a46d8 mov r1, r6 | r1 = r6;
0x000a46da str r7, [sp, 4] | var_4h = r7;
0x000a46dc strd r4, r4, [sp, 0x14] | __asm ("strd r4, r4, [sp, 0x14]");
0x000a46e0 strd r4, r4, [sp, 0xc] | __asm ("strd r4, r4, [sp, 0xc]");
0x000a46e4 str r4, [sp, 8] | var_8h = r4;
0x000a46e6 bl 0x2a674 | fcn_0002a674 (r0, r1, r2, r3, r4, r5, r6);
0x000a46ea movs r3, 1 | r3 = 1;
0x000a46ec movs r2, 3 | r2 = 3;
0x000a46ee mov r1, r6 | r1 = r6;
0x000a46f0 strd r5, r7, [sp] | __asm ("strd r5, r7, [sp]");
0x000a46f4 mov r0, sl | r0 = sl;
0x000a46f6 strd r4, r4, [sp, 0x14] | __asm ("strd r4, r4, [sp, 0x14]");
0x000a46fa strd r4, r4, [sp, 0xc] | __asm ("strd r4, r4, [sp, 0xc]");
0x000a46fe str r4, [sp, 8] | var_8h = r4;
0x000a4700 bl 0x2a674 | fcn_0002a674 (r0, r1, r2, r3, r4, r5, r6);
0x000a4704 movs r3, 1 | r3 = 1;
0x000a4706 movs r2, 2 | r2 = 2;
0x000a4708 mov r1, r6 | r1 = r6;
0x000a470a mov r0, sl | r0 = sl;
0x000a470c str r4, [sp] | *(sp) = r4;
0x000a470e bl 0x2a3a0 | fcn_0002a3a0 (r0, r1, r2, r3, r4, r5);
0x000a4712 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x000a4714 mov r1, r6 | r1 = r6;
0x000a4716 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x000a4718 movs r3, 1 | r3 = 1;
0x000a471a orrs r2, r5 | r2 |= r5;
0x000a471c str r2, [r0, 4] | *((r0 + 4)) = r2;
0x000a471e movs r2, 3 | r2 = 3;
0x000a4720 mov r0, sl | r0 = sl;
0x000a4722 str r4, [sp] | *(sp) = r4;
0x000a4724 bl 0x2a3a0 | fcn_0002a3a0 (r0, r1, r2, r3, r4, r5);
0x000a4728 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x000a472a orrs r2, r5 | r2 |= r5;
0x000a472c str r2, [r0, 4] | *((r0 + 4)) = r2;
0x000a472e b 0xa3fb6 | goto label_8;
0x000a4730 ldr r3, [sp, 0x20] | r3 = s2;
0x000a4732 cmp r3, 0 |
| if (r3 == 0) {
0x000a4734 beq.w 0xa5676 | goto label_153;
| }
0x000a4738 movs r3, 1 | r3 = 1;
0x000a473a ldr r0, [sp, 0x20] | r0 = s2;
0x000a473c add r1, sp, 0x88 | r1 += var_88h;
0x000a473e str r3, [sp, 0x88] | var_88h = r3;
0x000a4740 bl 0xc338 | r0 = fcn_0000c338 (r0, r1);
0x000a4744 cmp r0, 0 |
| if (r0 != 0) {
0x000a4746 bne.w 0xa61ec | goto label_154;
| }
| label_83:
0x000a474a ldr r2, [sp, 0x88] | r2 = var_88h;
0x000a474c movs r1, 1 | r1 = 1;
0x000a474e ldr r0, [sp, 0x20] | r0 = s2;
0x000a4750 subs r2, 0 |
0x000a4752 it ne |
| if (r2 == 0) {
0x000a4754 movne r2, 1 | r2 = 1;
| }
0x000a4756 bl 0xe7e8 | fcn_0000e7e8 (r0, r1, r2);
0x000a475a ldrd r3, r2, [sl, 0x20] | __asm ("ldrd r3, r2, [sl, 0x20]");
0x000a475e cmp r0, 0 |
| if (r0 == 0) {
0x000a4760 beq.w 0xa6254 | goto label_155;
| }
0x000a4764 orr r3, r3, 0x20 | r3 |= 0x20;
| label_84:
0x000a4768 str.w r3, [sl, 0x20] | __asm ("str.w r3, [sl, 0x20]");
0x000a476c ldrb.w r3, [sl, 0x51] | r3 = *((sl + 0x51));
0x000a4770 str.w r2, [sl, 0x24] | __asm ("str.w r2, [sl, 0x24]");
0x000a4774 cmp r3, 0 |
| if (r3 == 0) {
0x000a4776 beq.w 0xa3fb6 | goto label_8;
| }
0x000a477a b 0xa41a0 | goto label_21;
0x000a477c ldr.w r0, [sb, 0x74] | r0 = *((sb + 0x74));
0x000a4780 mov r1, r8 | r1 = r8;
0x000a4782 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000a4786 cmp r0, 0 |
0x000a4788 it eq |
| if (r0 != 0) {
0x000a478a moveq r0, sb | r0 = sb;
| }
0x000a478c vstr d16, [sp, 0x88] | __asm ("vstr d16, [sp, 0x88]");
0x000a4790 bl 0x540f0 | fcn_000540f0 (r0, r1);
0x000a4794 ldr.w r4, [sb, 0x2c] | r4 = *((sb + 0x2c));
0x000a4798 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000a479a ldr r3, [pc, 0x108] |
0x000a479c adds r4, 1 | r4++;
0x000a479e str.w r4, [sb, 0x2c] | __asm ("str.w r4, [sb, 0x2c]");
0x000a47a2 ldrb r2, [r2] | r2 = *(r2);
0x000a47a4 add r3, pc | r3 = 0x14904e;
0x000a47a6 add r3, r2 | r3 += r2;
0x000a47a8 ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x000a47ac cmp r3, 0x70 |
| if (r3 == 0x70) {
0x000a47ae beq.w 0xa61d8 | goto label_156;
| }
0x000a47b2 ldr r3, [sp, 0x20] | r3 = s2;
0x000a47b4 cmp r3, 0 |
| if (r3 == 0) {
0x000a47b6 beq.w 0xa5efe | goto label_157;
| }
0x000a47ba mov r0, r3 | r0 = r3;
0x000a47bc add r1, sp, 0x88 | r1 += var_88h;
0x000a47be bl 0x102c0 | r0 = fcn_000102c0 (r0, r1);
0x000a47c2 mov r3, r0 | r3 = r0;
0x000a47c4 cmp r0, 0 |
| if (r0 != 0) {
0x000a47c6 bne.w 0xa5efe | goto label_157;
| }
0x000a47ca ldrd r2, r1, [sp, 0x88] | __asm ("ldrd r2, r1, [var_88h]");
0x000a47ce cmp r1, 0 |
| if (r1 < 0) {
0x000a47d0 blt.w 0xa5efe | goto label_157;
| }
0x000a47d4 mvn r0, 1 | r0 = ~1;
0x000a47d8 cmp r0, r2 |
0x000a47da sbcs r3, r1 | __asm ("sbcs r3, r1");
0x000a47dc itttt lt |
| if (r0 >= r2) {
0x000a47de movlt r2, r0 | r2 = r0;
| }
| if (r0 >= r2) {
0x000a47e0 movlt r3, 0 | r3 = 0;
| }
| if (r0 >= r2) {
0x000a47e2 strlt r2, [sp, 0x88] | var_88h = r2;
| }
| if (r0 >= r2) {
0x000a47e4 strlt r3, [sp, 0x8c] | var_8ch = r3;
| }
| label_60:
0x000a47e6 str r2, [sp] | *(sp) = r2;
0x000a47e8 mov r3, r4 | r3 = r4;
0x000a47ea mov r2, r8 | r2 = r8;
0x000a47ec movs r1, 0xad | r1 = 0xad;
0x000a47ee mov r0, fp | r0 = fp;
0x000a47f0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_82:
0x000a47f4 movs r3, 0 | r3 = 0;
0x000a47f6 mov r2, r4 | r2 = r4;
0x000a47f8 str r3, [sp] | *(sp) = r3;
0x000a47fa mov r0, fp | r0 = fp;
0x000a47fc movs r3, 1 | r3 = 1;
0x000a47fe movs r1, 0x51 | r1 = 0x51;
0x000a4800 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a4804 b.w 0xa3d88 | goto label_6;
0x000a48a8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a48aa mvn r2, 1 | r2 = ~1;
0x000a48ae ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a48b0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a48b2 ldr r4, [r3] | r4 = *(r3);
0x000a48b4 mov.w r3, -1 | r3 = -1;
0x000a48b8 strd r2, r3, [sp, 0x88] | __asm ("strd r2, r3, [sp, 0x88]");
0x000a48bc ldr r3, [sp, 0x20] | r3 = s2;
| if (r3 != 0) {
0x000a48be cbz r3, 0xa48ee |
0x000a48c0 mov r0, r3 | r0 = r3;
0x000a48c2 add r1, sp, 0x88 | r1 += var_88h;
0x000a48c4 bl 0x102c0 | fcn_000102c0 (r0, r1);
0x000a48c8 ldrd r2, r3, [sp, 0x88] | __asm ("ldrd r2, r3, [var_88h]");
0x000a48cc adds r2, 1 | r2++;
0x000a48ce sbcs r3, r3, -1 | __asm ("sbcs r3, r3, -1");
| if (r2 < 1) {
0x000a48d2 bge 0xa48dc |
0x000a48d4 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000a48d8 vstr d16, [sp, 0x88] | __asm ("vstr d16, [sp, 0x88]");
| }
0x000a48dc ldr.w r3, [r4, 0xd8] | r3 = *((r4 + 0xd8));
0x000a48e0 ldrd r0, r1, [sp, 0x88] | __asm ("ldrd r0, r1, [var_88h]");
0x000a48e4 strd r0, r1, [r4, 0xa0] | __asm ("strd r0, r1, [r4, 0xa0]");
| if (r3 == 0) {
0x000a48e8 cbz r3, 0xa48ee | goto label_158;
| }
0x000a48ea strd r0, r1, [r3, 0x10] | __asm ("strd r0, r1, [r3, 0x10]");
| }
| label_158:
0x000a48ee ldrd r2, r3, [r4, 0xa0] | __asm ("ldrd r2, r3, [r4, 0xa0]");
0x000a48f2 mov r0, fp | r0 = fp;
0x000a48f4 bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a48f8 b.w 0xa3d88 | goto label_6;
0x000a48fc ldr r3, [sp, 0x20] | r3 = s2;
| if (r3 == 0) {
0x000a48fe cbz r3, 0xa493c | goto label_70;
| }
0x000a4900 ldr.w sb, [sp, 0x20] | sb = s2;
0x000a4904 movs r5, 0 | r5 = 0;
0x000a4906 ldr.w r6, [pc, 0xb38] |
0x000a490a mov r0, sb | r0 = sb;
0x000a490c blx 0x8160 | fcn_00008160 ();
0x000a4910 ldr.w r1, [pc, 0xb30] | r1 = *(0x000a5444);
0x000a4914 add r6, pc | r6 = 0x149d5a;
0x000a4916 bic r7, r0, 0xc0000000 | r7 = BIT_MASK (r0, 0xc0000000);
0x000a491a addw r6, r6, 0xe14 | __asm ("addw r6, r6, aav.0x000000ff");
0x000a491e add r1, pc | r1 += pc;
0x000a4920 b 0xa4928 |
| while (r5 != 6) {
0x000a4922 ldr r1, [r6], 4 | r1 = *(r6);
| r6 += 4;
| if (r1 == 0) {
0x000a4926 cbz r1, 0xa493c | goto label_70;
| }
0x000a4928 mov r2, r7 | r2 = r7;
0x000a492a mov r0, sb | r0 = sb;
0x000a492c blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a4930 cmp r0, 0 |
| if (r0 == 0) {
0x000a4932 beq.w 0xa5fb4 | goto label_159;
| }
0x000a4936 adds r5, 1 | r5++;
0x000a4938 cmp r5, 6 |
0x000a493a bne 0xa4922 |
| }
| label_70:
0x000a493c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a493e cmp r3, 0 |
| if (r3 != 0) {
0x000a4940 bne.w 0xa5f94 | goto label_160;
| }
0x000a4944 mov.w r5, -1 | r5 = -1;
0x000a4948 mov r8, r3 | r8 = r3;
0x000a494a movs r3, 1 | r3 = 1;
0x000a494c str r3, [r4, 4] | *((r4 + 4)) = r3;
| label_68:
0x000a494e ldr.w r7, [sl, 0x14] | r7 = *((sl + 0x14));
0x000a4952 subs r7, 1 | r7--;
| if (r7 < 1) {
0x000a4954 bmi 0xa49aa | goto label_161;
| }
0x000a4956 movs r6, 1 | r6 = 1;
| do {
0x000a4958 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a495c lsls r2, r7, 4 | r2 = r7 << 4;
0x000a495e add r3, r2 | r3 += r2;
0x000a4960 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 != 0) {
0x000a4962 cbz r3, 0xa49a6 |
0x000a4964 cmp r8, r7 |
| if (r8 != r7) {
0x000a4966 beq 0xa496c |
0x000a4968 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 != 0) {
0x000a496a cbnz r3, 0xa49a6 | goto label_162;
| }
| }
0x000a496c ldr.w r3, [fp, 0x98] | r3 = *(arg_98h);
0x000a4970 lsl.w r1, r6, r7 | r1 = r6 << r7;
0x000a4974 cmp r7, 1 |
0x000a4976 orr.w r3, r3, r1 | r3 |= r1;
0x000a497a str.w r3, [fp, 0x98] | __asm ("str.w r3, [arg_98h]");
| if (r7 != 1) {
0x000a497e beq 0xa4998 |
0x000a4980 ldr.w r3, [fp] | r3 = *(fp);
0x000a4984 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a4986 add r3, r2 | r3 += r2;
0x000a4988 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a498a ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x000a498c cbz r3, 0xa4998 | goto label_163;
| }
0x000a498e ldr.w r3, [fp, 0x9c] | r3 = *(arg_9ch);
0x000a4992 orrs r3, r1 | r3 |= r1;
0x000a4994 str.w r3, [fp, 0x9c] | __asm ("str.w r3, [arg_9ch]");
| }
| label_163:
0x000a4998 movs r3, 1 | r3 = 1;
0x000a499a mov r2, r7 | r2 = r7;
0x000a499c movs r1, 7 | r1 = 7;
0x000a499e mov r0, fp | r0 = fp;
0x000a49a0 str r5, [sp] | *(sp) = r5;
0x000a49a2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
| label_162:
0x000a49a6 subs r7, 1 | r7--;
0x000a49a8 bhs 0xa4958 |
| } while (r7 >= 1);
| label_161:
0x000a49aa movs r3, 0 | r3 = 0;
0x000a49ac mov r0, fp | r0 = fp;
0x000a49ae str r3, [sp] | *(sp) = r3;
0x000a49b0 movs r3, 1 | r3 = 1;
0x000a49b2 mov r2, r3 | r2 = r3;
0x000a49b4 movs r1, 0x51 | r1 = 0x51;
0x000a49b6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a49ba b.w 0xa3d88 | goto label_6;
0x000a49be ldr r3, [sp, 0x20] | r3 = s2;
0x000a49c0 cmp r3, 0 |
| if (r3 == 0) {
0x000a49c2 beq.w 0xa622a | goto label_164;
| }
0x000a49c6 ldrb.w r3, [sl, 0x51] | r3 = *((sl + 0x51));
0x000a49ca ldr r2, [sp, 0x34] | r2 = var_34h;
0x000a49cc ldrd r4, r5, [r2, 8] | __asm ("ldrd r4, r5, [r2, 8]");
| if (r3 == 0) {
0x000a49d0 cbnz r3, 0xa49d6 |
0x000a49d2 bic r4, r4, 0x4000 | r4 = BIT_MASK (r4, 0x4000);
| }
0x000a49d6 ldr r0, [sp, 0x20] | r0 = s2;
0x000a49d8 movs r2, 0 | r2 = 0;
0x000a49da movs r1, 1 | r1 = 1;
0x000a49dc bl 0xe7e8 | fcn_0000e7e8 (r0, r1, r2);
0x000a49e0 ldr.w r3, [sl, 0x20] | r3 = *((sl + 0x20));
0x000a49e4 cmp r0, 0 |
| if (r0 == 0) {
0x000a49e6 beq.w 0xa5f2c | goto label_165;
| }
0x000a49ea orrs r3, r4 | r3 |= r4;
0x000a49ec str.w r3, [sl, 0x20] | __asm ("str.w r3, [sl, 0x20]");
0x000a49f0 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x000a49f4 orrs r3, r5 | r3 |= r5;
0x000a49f6 str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
| label_64:
0x000a49fa movs r1, 0xa2 | r1 = 0xa2;
0x000a49fc mov r0, fp | r0 = fp;
0x000a49fe bl 0x2b574 | fcn_0002b574 (r0, r1, r2);
0x000a4a02 ldrb.w r3, [sl, 0x51] | r3 = *((sl + 0x51));
0x000a4a06 cmp r3, 0 |
| if (r3 == 0) {
0x000a4a08 beq.w 0xa3fb6 | goto label_8;
| }
0x000a4a0c b.w 0xa41a0 | goto label_21;
0x000a4a10 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a4a12 ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x000a4a14 ldr r3, [sp, 0x20] | r3 = s2;
0x000a4a16 cmp r3, 0 |
| if (r3 == 0) {
0x000a4a18 beq.w 0xa613e | goto label_166;
| }
0x000a4a1c ldr.w r1, [pc, 0xa28] | r1 = *(0x000a5448);
0x000a4a20 ldr r4, [sp, 0x20] | r4 = s2;
0x000a4a22 add r1, pc | r1 += pc;
0x000a4a24 mov r0, r4 | r0 = r4;
0x000a4a26 bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a4a2a cmp r0, 0 |
| if (r0 == 0) {
0x000a4a2c beq.w 0xa5fa4 | goto label_167;
| }
0x000a4a30 ldr.w r1, [pc, 0xa18] | r1 = *(0x000a544c);
0x000a4a34 mov r0, r4 | r0 = r4;
0x000a4a36 add r1, pc | r1 += pc;
0x000a4a38 bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a4a3c cmp r0, 0 |
| if (r0 == 0) {
0x000a4a3e beq.w 0xa62ee | goto label_168;
| }
0x000a4a42 ldr.w r1, [pc, 0xa0c] |
0x000a4a46 mov r0, r4 | r0 = r4;
0x000a4a48 add r1, pc | r1 = 0x149e9e;
0x000a4a4a bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a4a4e cmp r0, 0 |
| if (r0 == 0) {
0x000a4a50 beq.w 0xa635c | goto label_169;
| }
0x000a4a54 movs r3, 0 | r3 = 0;
0x000a4a56 mov r0, r4 | r0 = r4;
0x000a4a58 add r1, sp, 0x88 | r1 += var_88h;
0x000a4a5a str r3, [sp, 0x88] | var_88h = r3;
0x000a4a5c bl 0xc338 | fcn_0000c338 (r0, r1);
0x000a4a60 ldr r4, [sp, 0x88] | r4 = var_88h;
0x000a4a62 cmp r4, 2 |
| if (r4 > 2) {
0x000a4a64 bhi.w 0xa5fa4 | goto label_167;
| }
0x000a4a68 mov r0, r5 | r0 = r5;
0x000a4a6a mov r1, r4 | r1 = r4;
0x000a4a6c strb.w r4, [sl, 0x56] | *((sl + 0x56)) = r4;
0x000a4a70 bl 0x183d8 | r0 = fcn_000183d8 (r0, r1);
0x000a4a74 cmp r0, 0 |
| if (r0 != 0) {
0x000a4a76 bne.w 0xa3fb6 | goto label_8;
| }
0x000a4a7a subs r4, 1 | r4--;
0x000a4a7c cmp r4, 1 |
| if (r4 > 1) {
0x000a4a7e bhi.w 0xa3fb6 | goto label_8;
| }
| label_89:
0x000a4a82 ldr.w r2, [pc, 0x9d0] | r2 = *(0x000a5454);
0x000a4a86 movs r1, 5 | r1 = 5;
0x000a4a88 ldr.w r5, [fp, 0x6c] | r5 = *(arg_6ch);
0x000a4a8c mov r0, fp | r0 = fp;
0x000a4a8e add r2, pc | r2 += pc;
0x000a4a90 add.w r2, r2, 0xa50 | r2 += 0xa50;
0x000a4a94 adds r5, 4 | r5 += 4;
0x000a4a96 bl 0x1b57c | r0 = fcn_0001b57c (r0, r1, r2);
0x000a4a9a mov r3, r0 | r3 = r0;
0x000a4a9c str r4, [r0, 0x5c] | *((r0 + 0x5c)) = r4;
0x000a4a9e str r5, [r0, 0x30] | *((r0 + 0x30)) = r5;
0x000a4aa0 mov r1, r8 | r1 = r8;
0x000a4aa2 mov r0, fp | r0 = fp;
0x000a4aa4 str.w r8, [r3, 4] | __asm ("str.w r8, [r3, 4]");
0x000a4aa8 str.w r8, [r3, 0x18] | __asm ("str.w r8, [r3, 0x18]");
0x000a4aac str.w r8, [r3, 0x54] | __asm ("str.w r8, [r3, 0x54]");
0x000a4ab0 bl 0x98c4 | fcn_000098c4 (r0, r1);
0x000a4ab4 b.w 0xa3fb6 | goto label_8;
0x000a4ab8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a4aba ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x000a4abc ldr r3, [sp, 0x20] | r3 = s2;
0x000a4abe cmp r3, 0 |
| if (r3 == 0) {
0x000a4ac0 beq.w 0xa5f56 | goto label_170;
| }
0x000a4ac4 movs r5, 0 | r5 = 0;
0x000a4ac6 add r1, sp, 0x88 | r1 += var_88h;
0x000a4ac8 ldr r0, [sp, 0x20] | r0 = s2;
0x000a4aca str r5, [sp, 0x88] | var_88h = r5;
0x000a4acc bl 0xc338 | fcn_0000c338 (r0, r1);
0x000a4ad0 ldr r1, [sp, 0x88] | r1 = var_88h;
0x000a4ad2 mov r0, r4 | r0 = r4;
0x000a4ad4 mov r3, r5 | r3 = r5;
0x000a4ad6 mov r2, r5 | r2 = r5;
0x000a4ad8 str.w r1, [sl, 0x60] | __asm ("str.w r1, [sl, 0x60]");
0x000a4adc bl 0x1f048 | r0 = fcn_0001f048 (r0, r1, r2, r3);
0x000a4ae0 cmp r0, 7 |
| if (r0 != 7) {
0x000a4ae2 bne.w 0xa3fb6 | goto label_8;
| }
0x000a4ae6 mov r0, sl | r0 = sl;
0x000a4ae8 bl 0x101ec | fcn_000101ec (r0);
0x000a4aec b.w 0xa3fb6 | goto label_8;
0x000a4af0 ldr r0, [sp, 0x20] | r0 = s2;
0x000a4af2 cmp r0, 0 |
| if (r0 == 0) {
0x000a4af4 beq.w 0xa5ff0 | goto label_171;
| }
0x000a4af8 movs r3, 0 | r3 = 0;
0x000a4afa add r1, sp, 0x88 | r1 += var_88h;
0x000a4afc str r3, [sp, 0x88] | var_88h = r3;
0x000a4afe bl 0xc338 | fcn_0000c338 (r0, r1);
0x000a4b02 ldr r3, [sp, 0x88] | r3 = var_88h;
0x000a4b04 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
0x000a4b06 str r3, [sp, 0x38] | var_38h = r3;
| if (r2 >= r3) {
0x000a4b08 bpl.w 0xa3fb6 | goto label_8;
| }
| label_74:
0x000a4b0c ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x000a4b10 str r3, [sp, 0x2c] | var_2ch = r3;
0x000a4b12 adds r3, 1 | r3++;
0x000a4b14 str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x000a4b18 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a4b1a cmp r3, 0 |
| if (r3 == 0) {
0x000a4b1c beq.w 0xa6308 | goto label_172;
| }
0x000a4b20 str.w r8, [sp, 0x30] | __asm ("str.w r8, [var_30h]");
| label_90:
0x000a4b24 ldr.w r3, [pc, 0x930] |
0x000a4b28 add r3, pc | r3 = 0x149f84;
0x000a4b2a str r3, [sp, 0x3c] | var_3ch = r3;
| label_31:
0x000a4b2c cmp.w r8, 1 |
| if (r8 == 1) {
0x000a4b30 beq.w 0xa5332 | goto label_173;
| }
0x000a4b34 ldr.w r3, [sb, 0x74] | r3 = *((sb + 0x74));
0x000a4b38 movs r2, 1 | r2 = 1;
0x000a4b3a lsl.w r1, r2, r8 | r1 = r2 << r8;
0x000a4b3e cmp r3, 0 |
0x000a4b40 it eq |
| if (r3 != 0) {
0x000a4b42 moveq r3, sb | r3 = sb;
| }
0x000a4b44 ldr r2, [r3, 0x54] | r2 = *((r3 + 0x54));
0x000a4b46 tst r2, r1 |
0x000a4b48 itt eq |
| if ((r2 & r1) != 0) {
0x000a4b4a orreq r2, r1 | r2 |= r1;
| }
| if ((r2 & r1) != 0) {
0x000a4b4c streq r2, [r3, 0x54] | *((r3 + 0x54)) = r2;
| }
0x000a4b4e lsl.w r2, r8, 4 | r2 = r8 << 4;
0x000a4b52 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a4b56 str r2, [sp, 0x28] | var_28h = r2;
0x000a4b58 add r3, r2 | r3 += r2;
0x000a4b5a ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000a4b5c ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
0x000a4b5e cmp r4, 0 |
| if (r4 == 0) {
0x000a4b60 beq.w 0xa5332 | goto label_173;
| }
0x000a4b64 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000a4b66 str.w r8, [sp, 0x34] | __asm ("str.w r8, [var_34h]");
0x000a4b6a ldr.w r8, [sp, 0x3c] | r8 = var_3ch;
0x000a4b6e and r7, r3, 1 | r7 = r3 & 1;
0x000a4b72 b 0xa4b7c |
| while (r3 >= r3) {
| label_22:
0x000a4b74 ldr r4, [r4] | r4 = *(r4);
0x000a4b76 cmp r4, 0 |
| if (r4 == 0) {
0x000a4b78 beq.w 0xa532e | goto label_174;
| }
0x000a4b7c ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x000a4b7e ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000a4b80 lsls r3, r3, 0x17 | r3 <<= 0x17;
0x000a4b82 bpl 0xa4b74 |
| }
0x000a4b84 ldr r3, [r5, 8] | r3 = *((r5 + 8));
| if (r3 != 0) {
0x000a4b86 cbnz r3, 0xa4b92 | goto label_175;
| }
0x000a4b88 b 0xa52f4 | goto label_176;
| do {
0x000a4b8a ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000a4b8c cmp r3, 0 |
| if (r3 == 0) {
0x000a4b8e beq.w 0xa52f4 | goto label_176;
| }
| label_175:
0x000a4b92 ldrsb.w r2, [r3, 0x37] | r2 = *((r3 + 0x37));
0x000a4b96 cmp r2, 0 |
0x000a4b98 blt 0xa4b8a |
| } while (r2 < 0);
| label_29:
0x000a4b9a ldr r1, [sp, 0x28] | r1 = var_28h;
0x000a4b9c mov r0, sl | r0 = sl;
0x000a4b9e ldr.w r2, [sl, 0x10] | r2 = *((sl + 0x10));
0x000a4ba2 ldr r3, [r5] | r3 = *(r5);
0x000a4ba4 ldr r2, [r2, r1] | r2 = *((r2 + r1));
0x000a4ba6 mov r1, r8 | r1 = r8;
0x000a4ba8 bl 0x2677c | fcn_0002677c (r0);
0x000a4bac cmp r7, 0 |
| if (r7 == 0) {
0x000a4bae beq.w 0xa5696 | goto label_177;
| }
0x000a4bb2 ldrb.w r3, [sb, 0x13] | r3 = *((sb + 0x13));
0x000a4bb6 cmp r3, 0 |
| if (r3 == 0) {
0x000a4bb8 beq.w 0xa56c6 | goto label_178;
| }
0x000a4bbc subs r3, 1 | r3--;
0x000a4bbe uxtb r3, r3 | r3 = (int8_t) r3;
0x000a4bc0 strb.w r3, [sb, 0x13] | *((sb + 0x13)) = r3;
0x000a4bc4 add.w r3, sb, r3, lsl 2 | r3 = sb + (r3 << 2);
0x000a4bc8 ldr.w r5, [r3, 0x94] | r5 = *((r3 + 0x94));
| label_45:
0x000a4bcc movs r6, 0 | r6 = 0;
0x000a4bce mvn r3, 6 | r3 = ~6;
0x000a4bd2 mov r2, r6 | r2 = r6;
0x000a4bd4 str r0, [sp, 4] | var_4h = r0;
0x000a4bd6 str r3, [sp, 8] | var_8h = r3;
0x000a4bd8 movs r1, 0x74 | r1 = 0x74;
0x000a4bda mov r3, r5 | r3 = r5;
0x000a4bdc mov r0, fp | r0 = fp;
0x000a4bde str r6, [sp] | *(sp) = r6;
0x000a4be0 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000a4be4 mov r2, r5 | r2 = r5;
0x000a4be6 movs r3, 1 | r3 = 1;
0x000a4be8 movs r1, 0x51 | r1 = 0x51;
0x000a4bea mov r0, fp | r0 = fp;
0x000a4bec str r6, [sp] | *(sp) = r6;
0x000a4bee bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a4bf2 b 0xa4b74 | goto label_22;
0x000a4bf4 ldr.w r4, [sl, 0x170] | r4 = *((sl + 0x170));
0x000a4bf8 movs r3, 1 | r3 = 1;
0x000a4bfa str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a4bfe cmp r4, 0 |
| if (r4 == 0) {
0x000a4c00 beq.w 0xa3d88 | goto label_6;
| }
0x000a4c04 ldr.w r5, [pc, 0x854] |
0x000a4c08 add r5, pc | r5 = 0x14a068;
| do {
0x000a4c0a ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000a4c0c mov r2, r5 | r2 = r5;
0x000a4c0e movs r1, 1 | r1 = 1;
0x000a4c10 mov r0, fp | r0 = fp;
0x000a4c12 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a4c14 bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a4c18 ldr r4, [r4] | r4 = *(r4);
0x000a4c1a cmp r4, 0 |
0x000a4c1c bne 0xa4c0a |
| } while (r4 != 0);
0x000a4c1e b.w 0xa3d88 | goto label_6;
0x000a4c22 ldr r3, [sp, 0x20] | r3 = s2;
0x000a4c24 add r5, sp, 0x88 | r5 += var_88h;
0x000a4c26 cmp r3, 0 |
| if (r3 == 0) {
0x000a4c28 beq 0xa4cb6 | goto label_179;
| }
0x000a4c2a ldr r0, [sp, 0x20] | r0 = s2;
0x000a4c2c mov r1, r5 | r1 = r5;
0x000a4c2e bl 0x102c0 | fcn_000102c0 (r0, r1);
0x000a4c32 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x000a4c34 cmp r3, 0 |
| if (r3 < 0) {
0x000a4c36 bge 0xa4c46 |
0x000a4c38 ldr.w r3, [pc, 0x824] |
0x000a4c3c add r3, pc | r3 = 0x14a0a0;
0x000a4c3e ldrd r2, r3, [r3, 0xa8] | __asm ("ldrd r2, r3, [r3, 0xa8]");
0x000a4c42 strd r2, r3, [sp, 0x88] | __asm ("strd r2, r3, [sp, 0x88]");
| }
0x000a4c46 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 == 0) {
0x000a4c48 cbnz r3, 0xa4c52 |
0x000a4c4a ldrd r2, r3, [sp, 0x88] | __asm ("ldrd r2, r3, [var_88h]");
0x000a4c4e strd r2, r3, [sl, 0x30] | __asm ("strd r2, r3, [sl, 0x30]");
| }
0x000a4c52 ldr.w r6, [sl, 0x14] | r6 = *((sl + 0x14));
0x000a4c56 subs r6, 1 | r6--;
| if (r6 < 1) {
0x000a4c58 bmi 0xa4cb6 | goto label_179;
| }
| do {
0x000a4c5a ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a4c5e add.w r3, r3, r6, lsl 4 | r3 += (r6 << 4);
0x000a4c62 ldr r7, [r3, 4] | r7 = *((r3 + 4));
| if (r7 != 0) {
0x000a4c64 cbz r7, 0xa4cb2 |
0x000a4c66 cmp r8, r6 |
| if (r8 != r6) {
0x000a4c68 beq 0xa4c6e |
0x000a4c6a ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 != 0) {
0x000a4c6c cbnz r3, 0xa4cb2 | goto label_93;
| }
| }
0x000a4c6e ldrb r3, [r7, 9] | r3 = *((r7 + 9));
0x000a4c70 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x000a4c72 vldr d8, [sp, 0x88] | __asm ("vldr d8, [sp, 0x88]");
| if (r3 != 0) {
0x000a4c76 cbz r3, 0xa4c8c |
0x000a4c78 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x000a4c7a adds r3, 1 | r3++;
0x000a4c7c str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x000a4c7e ldrb r3, [r7, 0xa] | r3 = *((r7 + 0xa));
| if (r3 != 0) {
0x000a4c80 cbnz r3, 0xa4c8c | goto label_180;
| }
0x000a4c82 mov r0, r7 | r0 = r7;
0x000a4c84 str r2, [sp, 0x2c] | var_2ch = r2;
0x000a4c86 bl 0x12464 | fcn_00012464 (r0);
0x000a4c8a ldr r2, [sp, 0x2c] | r2 = var_2ch;
| }
| label_180:
0x000a4c8c ldr r0, [r2] | r0 = *(r2);
0x000a4c8e ldr r3, [r0, 0x3c] | r3 = *((r0 + 0x3c));
0x000a4c90 vstr d8, [r0, 0x80] | __asm ("vstr d8, [r0, 0x80]");
0x000a4c94 ldr r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x000a4c96 cbz r3, 0xa4ca2 |
0x000a4c98 ldr r3, [r3] | r3 = *(r3);
0x000a4c9a cmp r3, 2 |
| if (r3 <= 2) {
0x000a4c9c ble 0xa4ca2 | goto label_181;
| }
0x000a4c9e bl 0x12668 | fcn_00012668 (r0);
| }
| label_181:
0x000a4ca2 ldrb r3, [r7, 9] | r3 = *((r7 + 9));
| if (r3 == 0) {
0x000a4ca4 cbz r3, 0xa4cb2 | goto label_93;
| }
0x000a4ca6 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x000a4ca8 subs r3, 1 | r3--;
0x000a4caa str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x000a4cac cmp r3, 0 |
| if (r3 == 0) {
0x000a4cae beq.w 0xa632c | goto label_182;
| }
| }
| label_93:
0x000a4cb2 subs r6, 1 | r6--;
0x000a4cb4 bhs 0xa4c5a |
| } while (r6 >= 1);
| label_179:
0x000a4cb6 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000a4cba mov r3, r5 | r3 = r5;
0x000a4cbc ldr r1, [sp, 0x28] | r1 = var_28h;
0x000a4cbe movs r2, 0x12 | r2 = 0x12;
0x000a4cc0 mov r0, sl | r0 = sl;
0x000a4cc2 vstr d16, [sp, 0x88] | __asm ("vstr d16, [sp, 0x88]");
0x000a4cc6 blx 0x84e8 | r0 = fcn_000084e8 ();
0x000a4cca cmp r0, 0 |
| if (r0 == 0) {
0x000a4ccc beq.w 0xa6152 | goto label_183;
| }
0x000a4cd0 cmp r0, 0xc |
| if (r0 == 0xc) {
0x000a4cd2 beq.w 0xa3d88 | goto label_6;
| }
0x000a4cd6 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x000a4cda str.w r0, [sb, 0xc] | __asm ("str.w r0, [sb, 0xc]");
0x000a4cde adds r3, 1 | r3++;
0x000a4ce0 str.w r3, [sb, 0x24] | __asm ("str.w r3, [sb, 0x24]");
0x000a4ce4 b.w 0xa3d88 | goto label_6;
0x000a4ce8 ldr r3, [sp, 0x20] | r3 = s2;
0x000a4cea cmp r3, 0 |
| if (r3 == 0) {
0x000a4cec beq.w 0xa6170 | goto label_184;
| }
0x000a4cf0 movs r3, 0 | r3 = 0;
0x000a4cf2 add r1, sp, 0x88 | r1 += var_88h;
0x000a4cf4 ldr r0, [sp, 0x20] | r0 = s2;
0x000a4cf6 str r3, [sp, 0x88] | var_88h = r3;
0x000a4cf8 bl 0xc338 | fcn_0000c338 (r0, r1);
0x000a4cfc ldr r2, [sp, 0x30] | r2 = var_30h;
0x000a4cfe ldr r1, [sp, 0x88] | r1 = var_88h;
0x000a4d00 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x000a4d02 ldr r0, [r2, 4] | r0 = *((r2 + 4));
0x000a4d04 str r1, [r3, 0x50] | *((r3 + 0x50)) = r1;
0x000a4d06 bl 0x18650 | fcn_00018650 (r0, r1);
0x000a4d0a b.w 0xa3fb6 | goto label_8;
0x000a4d0e ldr r4, [sp, 0x34] | r4 = var_34h;
0x000a4d10 mov r1, r8 | r1 = r8;
0x000a4d12 mov r0, fp | r0 = fp;
0x000a4d14 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x000a4d16 bl 0x98c4 | fcn_000098c4 (r0, r1);
0x000a4d1a ldr r3, [sp, 0x20] | r3 = s2;
| if (r3 != 0) {
0x000a4d1c cbz r3, 0xa4d28 |
0x000a4d1e ldrb r3, [r4, 5] | r3 = *((r4 + 5));
0x000a4d20 ands r6, r3, 8 | r6 = r3 & 8;
| if (r6 == r3) {
0x000a4d24 beq.w 0xa61a2 | goto label_185;
| }
| }
0x000a4d28 ldr.w r2, [pc, 0x738] |
0x000a4d2c movs r1, 3 | r1 = 3;
0x000a4d2e mov r0, fp | r0 = fp;
0x000a4d30 add r2, pc | r2 = 0x14a198;
0x000a4d32 addw r2, r2, 0xa88 | __asm ("addw r2, r2, aav.0x000000ff");
0x000a4d36 bl 0x1b57c | fcn_0001b57c (r0, r1, r2);
0x000a4d38 stc2 p2, c6, [r1], -0x14 | __asm ("stc2 p2, c6, [r1], -0x14");
0x000a4d3c str.w r8, [r0, 4] | __asm ("str.w r8, [r0, 4]");
0x000a4d40 str.w r8, [r0, 0x18] | __asm ("str.w r8, [r0, 0x18]");
0x000a4d44 ldrb.w r3, [fp, 0x96] | r3 = *(arg_96h);
0x000a4d48 bfc r3, 5, 1 | value_3 = BIT_MASK (1, );
| value_3 = ~value_3;
| r3 &= value_3;
0x000a4d4c strb.w r3, [fp, 0x96] | *(arg_96h) = r3;
0x000a4d50 b.w 0xa3d88 | goto label_6;
0x000a4d54 ldr r3, [r4] | r3 = *(r4);
0x000a4d56 movs r4, 0x64 | r4 = 0x64;
0x000a4d58 str r4, [sp, 0x7c] | var_7ch = r4;
0x000a4d5a cmp r3, 0 |
0x000a4d5c ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a4d5e it eq |
| if (r3 != 0) {
0x000a4d60 moveq r8, -1 | r8 = -1;
| }
0x000a4d64 ldrb r2, [r3] | r2 = *(r3);
0x000a4d66 ldr.w r3, [pc, 0x700] | r3 = *(0x000a5468);
0x000a4d6a add r3, pc | r3 += pc;
0x000a4d6c add r3, r2 | r3 += r2;
0x000a4d6e ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x000a4d72 str r3, [sp, 0x48] | var_48h = r3;
0x000a4d74 movs r3, 6 | r3 = 6;
0x000a4d76 str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a4d7a ldr r3, [sp, 0x20] | r3 = s2;
0x000a4d7c cmp r3, 0 |
| if (r3 == 0) {
0x000a4d7e beq.w 0xa5fc8 | goto label_186;
| }
0x000a4d82 ldr r0, [sp, 0x20] | r0 = s2;
0x000a4d84 add r1, sp, 0x7c | r1 += var_7ch;
0x000a4d86 bl 0xc338 | r0 = fcn_0000c338 (r0, r1);
0x000a4d8a mov r3, r0 | r3 = r0;
0x000a4d8c cmp r0, 0 |
| if (r0 == 0) {
0x000a4d8e beq.w 0xa629c | goto label_187;
| }
0x000a4d92 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x000a4d94 cmp r3, 0 |
0x000a4d96 str r3, [sp, 0x70] | var_70h = r3;
| if (r3 <= 0) {
0x000a4d98 ble.w 0xa63b4 | goto label_188;
| }
| label_71:
0x000a4d9c movs r3, 0 | r3 = 0;
0x000a4d9e str r3, [sp, 0x3c] | var_3ch = r3;
| label_87:
0x000a4da0 ldr r2, [sp, 0x70] | r2 = var_70h;
0x000a4da2 movs r4, 0 | r4 = 0;
0x000a4da4 movs r1, 0x45 | r1 = 0x45;
0x000a4da6 movs r3, 1 | r3 = 1;
0x000a4da8 mov r0, fp | r0 = fp;
0x000a4daa str r4, [sp] | *(sp) = r4;
0x000a4dac subs r2, 1 | r2--;
0x000a4dae bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a4db2 ldr.w r1, [sl, 0x14] | r1 = *((sl + 0x14));
0x000a4db6 cmp r1, r4 |
| if (r1 <= r4) {
0x000a4db8 ble.w 0xa5e5c | goto label_189;
| }
0x000a4dbc ldr.w r3, [pc, 0x6ac] |
0x000a4dc0 str.w sl, [sp, 0x34] | __asm ("str.w sl, [var_34h]");
0x000a4dc4 mov sl, fp | sl = fp;
0x000a4dc6 str r4, [sp, 0x2c] | var_2ch = r4;
0x000a4dc8 add r3, pc |
0x000a4dca str.w r8, [sp, 0x64] | __asm ("str.w r8, [var_64h]");
0x000a4dce adds r3, 4 | r3 += 4;
0x000a4dd0 str r3, [sp, 0x68] | var_68h = r3;
0x000a4dd2 ldr.w r3, [pc, 0x69c] | r3 = *(0x000a5470);
0x000a4dd6 add r3, pc | r3 = 0x1ef012;
0x000a4dd8 adds r3, 4 | r3 += 4;
0x000a4dda str r3, [sp, 0x74] | var_74h = r3;
0x000a4ddc mvn.w r3, r8 | r3 = ~r8;
0x000a4de0 lsrs r3, r3, 0x1f | r3 >>= 0x1f;
0x000a4de2 str r3, [sp, 0x58] | var_58h = r3;
0x000a4de4 b 0xa4df2 |
| while (r3 != 0) {
| label_30:
0x000a4de6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a4de8 adds r3, 1 | r3++;
0x000a4dea cmp r1, r3 |
0x000a4dec str r3, [sp, 0x2c] | var_2ch = r3;
| if (r1 <= r3) {
0x000a4dee ble.w 0xa5e56 | goto label_190;
| }
0x000a4df2 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000a4df4 ldr r2, [sp, 0x64] | r2 = var_64h;
0x000a4df6 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000a4df8 cmp r2, r0 |
0x000a4dfa ite eq |
| if (r2 != r0) {
0x000a4dfc moveq r3, 0 | r3 = 0;
| }
| if (r2 == r0) {
0x000a4dfe andne r3, r3, 1 | r3 &= 1;
| }
0x000a4e02 cmp r3, 0 |
0x000a4e04 bne 0xa4de6 |
| }
0x000a4e06 ldr.w r0, [sb, 0x74] | r0 = *((sb + 0x74));
0x000a4e0a movs r3, 1 | r3 = 1;
0x000a4e0c ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000a4e0e cmp r0, 0 |
0x000a4e10 it eq |
| if (r0 != 0) {
0x000a4e12 moveq r0, sb | r0 = sb;
| }
0x000a4e14 ldr r2, [r0, 0x54] | r2 = *((r0 + 0x54));
0x000a4e16 lsls r3, r1 | r3 <<= r1;
0x000a4e18 tst r2, r3 |
| if ((r2 & r3) == 0) {
0x000a4e1a bne 0xa4e28 |
0x000a4e1c cmp r1, 1 |
0x000a4e1e orr.w r2, r2, r3 | r2 |= r3;
0x000a4e22 str r2, [r0, 0x54] | *((r0 + 0x54)) = r2;
| if (r1 == 1) {
0x000a4e24 beq.w 0xa5f1c | goto label_191;
| }
| }
| label_63:
0x000a4e28 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a4e2a ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000a4e2c ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a4e2e lsls r6, r2, 4 | r6 = r2 << 4;
0x000a4e30 add r3, r6 | r3 += r6;
0x000a4e32 ldr r5, [r3, 0xc] | r5 = *((r3 + 0xc));
0x000a4e34 ldr r7, [r5, 0x10] | r7 = *((r5 + 0x10));
0x000a4e36 cmp r7, 0 |
| if (r7 == 0) {
0x000a4e38 beq.w 0xa5328 | goto label_38;
| }
0x000a4e3c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000a4e3e movs r4, 0 | r4 = 0;
0x000a4e40 mov r1, r4 | r1 = r4;
0x000a4e42 subs r2, r3, r4 | r2 = r3 - r4;
0x000a4e44 mov ip, r3 |
0x000a4e46 it ne |
| if (r2 == r3) {
0x000a4e48 movne r2, 1 | r2 = 1;
| }
0x000a4e4a mov lr, r2 | lr = r2;
0x000a4e4c str r2, [sp, 0x44] | var_44h = r2;
0x000a4e4e b 0xa4e58 |
| while (r3 != 0) {
| label_23:
0x000a4e50 ldr r7, [r7] | r7 = *(r7);
0x000a4e52 cmp r7, 0 |
| if (r7 == 0) {
0x000a4e54 beq.w 0xa55e6 | goto label_192;
| }
0x000a4e58 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x000a4e5a cmp ip, r2 |
0x000a4e5c ite eq |
| if (ip != r2) {
0x000a4e5e moveq r3, 0 | r3 = 0;
| }
| if (ip == r2) {
0x000a4e60 andne r3, lr, 1 | r3 = lr & 1;
| }
0x000a4e64 cmp r3, 0 |
0x000a4e66 bne 0xa4e50 |
| }
0x000a4e68 ldr r3, [r2, 0x24] | r3 = *((r2 + 0x24));
0x000a4e6a lsls r0, r3, 0x18 | r0 = r3 << 0x18;
0x000a4e6c ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x000a4e6e it pl |
| if (r0 < r3) {
0x000a4e70 addpl r1, 1 | r1++;
| }
0x000a4e72 cmp r3, 0 |
| if (r3 == 0) {
0x000a4e74 beq.w 0xa5db0 | goto label_193;
| }
0x000a4e78 adds r0, r1, 1 | r0 = r1 + 1;
0x000a4e7a movs r2, 0 | r2 = 0;
| do {
0x000a4e7c ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000a4e7e adds r1, r0, r2 | r1 = r0 + r2;
0x000a4e80 adds r2, 1 | r2++;
0x000a4e82 cmp r3, 0 |
0x000a4e84 bne 0xa4e7c |
| } while (r3 != 0);
| label_52:
0x000a4e86 cmp r4, r2 |
0x000a4e88 it lt |
| if (r4 >= r2) {
0x000a4e8a movlt r4, r2 | r4 = r2;
| }
0x000a4e8c b 0xa4e50 | goto label_23;
0x000a4e8e ldr r3, [sp, 0x20] | r3 = s2;
0x000a4e90 cmp r3, 0 |
| if (r3 == 0) {
0x000a4e92 beq.w 0xa568a | goto label_65;
| }
0x000a4e96 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000a4e98 mov r1, r3 | r1 = r3;
0x000a4e9a mov r0, sl | r0 = sl;
0x000a4e9c bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
0x000a4ea0 mov r4, r0 | r4 = r0;
0x000a4ea2 cmp r0, 0 |
| if (r0 == 0) {
0x000a4ea4 beq.w 0xa3fb6 | goto label_8;
| }
0x000a4ea8 ldr r1, [r0, 0x48] | r1 = *((r0 + 0x48));
0x000a4eaa cmp r1, 0 |
| if (r1 == 0) {
0x000a4eac beq.w 0xa63d8 | goto label_194;
| }
0x000a4eb0 mov r0, sl | r0 = sl;
0x000a4eb2 bl 0xf364 | r0 = fcn_0000f364 (r0, r1);
0x000a4eb6 mov r1, r0 | r1 = r0;
| label_99:
0x000a4eb8 ldr.w r0, [sb, 0x74] | r0 = *((sb + 0x74));
0x000a4ebc movs r3, 5 | r3 = 5;
0x000a4ebe str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a4ec2 cmp r0, 0 |
0x000a4ec4 it eq |
| if (r0 != 0) {
0x000a4ec6 moveq r0, sb | r0 = sb;
| }
0x000a4ec8 bl 0x540f0 | fcn_000540f0 (r0, r1);
0x000a4ecc ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x000a4ece cmp r4, 0 |
| if (r4 == 0) {
0x000a4ed0 beq.w 0xa3fb6 | goto label_8;
| }
0x000a4ed4 ldr.w r6, [pc, 0x59c] | r6 = *(0x000a5474);
0x000a4ed8 add r7, sp, 0x90 | r7 += var_90h;
0x000a4eda ldr.w r8, [pc, 0x59c] |
0x000a4ede add r6, pc | r6 += pc;
0x000a4ee0 addw r6, r6, 0x40c | __asm ("addw r6, r6, aav.0x000000ff");
0x000a4ee4 add r8, pc | r8 = 0x14a362;
| do {
0x000a4ee6 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000a4ee8 ldm.w r6, {r0, r1, r2} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
0x000a4eec subs r3, 0 |
0x000a4eee it ne |
| if (r3 == 0) {
0x000a4ef0 movne r3, 1 | r3 = 1;
| }
0x000a4ef2 str r3, [sp, 0xc] | var_ch = r3;
0x000a4ef4 add r3, sp, 0xb0 | r3 += var_b0h;
0x000a4ef6 ldrb.w ip, [r4, 0x37] | ip = *((r4 + 0x37));
0x000a4efa stm.w r7, {r0, r1, r2} | *(r7) = r0;
| *((r7 + 4)) = r1;
| *((r7 + 8)) = r2;
0x000a4efe movs r1, 1 | r1 = 1;
0x000a4f00 mov r0, fp | r0 = fp;
0x000a4f02 and ip, ip, 3 |
0x000a4f06 add.w ip, r3, ip, lsl 2 |
0x000a4f0a mov r3, r5 | r3 = r5;
0x000a4f0c adds r5, 1 | r5++;
0x000a4f0e ldr r2, [ip, -0x20] | r2 = *((ip - 0x20));
0x000a4f12 str r2, [sp, 8] | var_8h = r2;
0x000a4f14 ldrb.w r2, [r4, 0x36] | r2 = *((r4 + 0x36));
0x000a4f18 subs r2, 0 |
0x000a4f1a it ne |
| if (r2 == 0) {
0x000a4f1c movne r2, 1 | r2 = 1;
| }
0x000a4f1e str r2, [sp, 4] | var_4h = r2;
0x000a4f20 ldr r2, [r4] | r2 = *(r4);
0x000a4f22 str r2, [sp] | *(sp) = r2;
0x000a4f24 mov r2, r8 | r2 = r8;
0x000a4f26 bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a4f2a ldr r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x000a4f2c cmp r4, 0 |
0x000a4f2e bne 0xa4ee6 |
| } while (r4 != 0);
0x000a4f30 b.w 0xa3fb6 | goto label_8;
0x000a4f34 ldr r3, [sp, 0x20] | r3 = s2;
0x000a4f36 cmp r3, 0 |
| if (r3 == 0) {
0x000a4f38 beq.w 0xa568a | goto label_65;
| }
0x000a4f3c ldr r2, [sp, 0x28] | r2 = var_28h;
0x000a4f3e mov r1, r3 | r1 = r3;
0x000a4f40 mov r0, sl | r0 = sl;
0x000a4f42 bl 0x1aa6c | r0 = fcn_0001aa6c (r0, r1, r2);
0x000a4f46 mov r4, r0 | r4 = r0;
0x000a4f48 cmp r0, 0 |
| if (r0 == 0) {
0x000a4f4a beq.w 0xa6360 | goto label_195;
| }
| label_95:
0x000a4f4e ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x000a4f50 cmp r1, 0 |
| if (r1 == 0) {
0x000a4f52 beq.w 0xa63e4 | goto label_196;
| }
0x000a4f56 mov r0, sl | r0 = sl;
0x000a4f58 bl 0xf364 | r0 = fcn_0000f364 (r0, r1);
0x000a4f5c mov r1, r0 | r1 = r0;
| label_100:
0x000a4f5e ldr r2, [sp, 0x34] | r2 = var_34h;
0x000a4f60 ldr.w r0, [sb, 0x74] | r0 = *((sb + 0x74));
0x000a4f64 ldr.w r8, [r4, 0xc] | r8 = *((r4 + 0xc));
0x000a4f68 ldrd r3, r2, [r2, 8] | __asm ("ldrd r3, r2, [r2, 8]");
0x000a4f6c orrs r3, r2 | r3 |= r2;
0x000a4f6e ittee ne |
| if (r3 != r2) {
0x000a4f70 ldrhne r6, [r4, 0x34] | __asm ("ldrhne r6, [r4, 0x34]");
| }
| if (r3 == r2) {
0x000a4f72 movne r3, 6 | r3 = 6;
| }
| if (r3 == r2) {
0x000a4f74 ldrheq r6, [r4, 0x32] | __asm ("ldrheq r6, [r4, 0x32]");
| }
| if (r3 != r2) {
0x000a4f76 moveq r3, 3 | r3 = 3;
| }
0x000a4f78 str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a4f7c cmp r0, 0 |
0x000a4f7e it eq |
| if (r0 != 0) {
0x000a4f80 moveq r0, sb | r0 = sb;
| }
0x000a4f82 bl 0x540f0 | fcn_000540f0 (r0, r1);
0x000a4f86 cmp r6, 0 |
| if (r6 == 0) {
0x000a4f88 beq.w 0xa3fb6 | goto label_8;
| }
0x000a4f8c ldr.w r7, [pc, 0x4ec] |
0x000a4f90 str.w sl, [sp, 0x28] | __asm ("str.w sl, [var_28h]");
0x000a4f94 ldr.w sl, [sp, 0x34] | sl = var_34h;
0x000a4f98 add r7, pc | r7 = 0x14a418;
0x000a4f9a b 0xa4fb6 |
| while (r3 == r2) {
| label_24:
0x000a4f9c movs r3, 0 | r3 = 0;
0x000a4f9e adds r5, 1 | r5++;
0x000a4fa0 str r3, [sp] | *(sp) = r3;
0x000a4fa2 movs r2, 1 | r2 = 1;
0x000a4fa4 ldr.w r3, [sb, 0x2c] | r3 = *((sb + 0x2c));
0x000a4fa8 movs r1, 0x51 | r1 = 0x51;
0x000a4faa mov r0, fp | r0 = fp;
0x000a4fac bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a4fb0 cmp r6, r5 |
| if (r6 == r5) {
0x000a4fb2 beq.w 0xa6000 | goto label_197;
| }
0x000a4fb6 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a4fb8 mov r0, fp | r0 = fp;
0x000a4fba ldrsh.w r3, [r3, r5, lsl 1] | offset_4 = r5 << 1;
| r3 = *((r3 + offset_4));
0x000a4fbe cmp r3, 0 |
0x000a4fc0 ittet ge |
| if (r3 < 0) {
0x000a4fc2 ldrge r2, [r8, 4] | r2 = *((r8 + 4));
| }
| if (r3 >= 0) {
0x000a4fc6 addlt r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
| }
| if (r3 < 0) {
0x000a4fca movs r2, 0 | r2 = 0;
| }
| if (r3 >= 0) {
0x000a4fcc ldr.w r2, [r2, r1, lsl 2] | offset_5 = r1 << 2;
| r2 = *((r2 + offset_5));
| }
0x000a4fd0 movs r1, 1 | r1 = 1;
0x000a4fd2 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x000a4fd6 mov r3, r5 | r3 = r5;
0x000a4fd8 mov r2, r7 | r2 = r7;
0x000a4fda bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a4fde ldrd r3, r2, [sl, 8] | __asm ("ldrd r3, r2, [sl, 8]");
0x000a4fe2 orrs r3, r2 | r3 |= r2;
0x000a4fe4 beq 0xa4f9c |
| }
0x000a4fe6 ldrh r2, [r4, 0x32] | r2 = *((r4 + 0x32));
0x000a4fe8 movs r1, 4 | r1 = 4;
0x000a4fea ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000a4fec mov r0, fp | r0 = fp;
0x000a4fee cmp r2, r5 |
0x000a4ff0 ite le |
| if (r2 > r5) {
0x000a4ff2 movle r2, 0 | r2 = 0;
| }
| if (r2 <= r5) {
0x000a4ff4 movgt r2, 1 | r2 = 1;
| }
0x000a4ff6 ldrb r3, [r3, r5] | r3 = *((r3 + r5));
0x000a4ff8 str r2, [sp, 4] | var_4h = r2;
0x000a4ffa ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x000a4ffc ldr.w r2, [r2, r5, lsl 2] | offset_6 = r5 << 2;
| r2 = *((r2 + offset_6));
0x000a5000 str r2, [sp] | *(sp) = r2;
0x000a5002 ldr.w r2, [pc, 0x47c] | r2 = *(0x000a5480);
0x000a5006 add r2, pc | r2 += pc;
0x000a5008 bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a500c b 0xa4f9c | goto label_24;
0x000a500e ldr r3, [sp, 0x20] | r3 = s2;
| if (r3 != 0) {
0x000a5010 cbz r3, 0xa502c |
0x000a5012 add r1, sp, 0x88 | r1 += var_88h;
0x000a5014 mov r0, r3 | r0 = r3;
0x000a5016 bl 0x102c0 | r0 = fcn_000102c0 (r0, r1);
| if (r0 != 0) {
0x000a501a cbnz r0, 0xa502c | goto label_198;
| }
0x000a501c ldrd r3, r2, [sp, 0x88] | __asm ("ldrd r3, r2, [var_88h]");
0x000a5020 cmp r2, 0 |
0x000a5022 itt ge |
| if (r2 >= 0) {
0x000a5024 bicge r3, r3, 0x80000000 | __asm ("bicge r3, r3, aav.0x000000ff");
| }
| if (r2 < 0) {
0x000a5028 str.w r3, [sl, 0x1d4] | __asm ("str.w r3, aav.0x000000ff");
| goto label_198;
| }
| }
| label_198:
0x000a502c ldr.w r2, [sl, 0x1d4] | r2 = *((sl + 0x1d4));
0x000a5030 mov r0, fp | r0 = fp;
0x000a5032 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000a5034 bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a5038 b.w 0xa3d88 | goto label_6;
0x000a503c ldr r0, [sp, 0x20] | r0 = s2;
0x000a503e ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a5040 ldr r6, [r3, 4] | r6 = *((r3 + 4));
0x000a5042 cmp r0, 0 |
| if (r0 == 0) {
0x000a5044 beq.w 0xa5f9c | goto label_199;
| }
0x000a5048 ldr.w r1, [pc, 0x438] |
0x000a504c add r1, pc | r1 = 0x14a4d4;
0x000a504e blx 0x831c | r0 = fcn_0000831c ();
0x000a5052 cmp r0, 0 |
| if (r0 != 0) {
0x000a5054 bne.w 0xa6182 | goto label_200;
| }
0x000a5058 movs r7, 2 | r7 = 2;
| label_79:
0x000a505a ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 != 0) {
0x000a505c cbnz r3, 0xa5080 | goto label_69;
| }
0x000a505e ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x000a5062 cmp r3, 0 |
| if (r3 <= 0) {
0x000a5064 ble 0xa5080 | goto label_69;
| }
| do {
0x000a5066 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a506a mov r1, r7 | r1 = r7;
0x000a506c add.w r3, r3, r5, lsl 4 | r3 += (r5 << 4);
0x000a5070 adds r5, 1 | r5++;
0x000a5072 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a5074 bl 0x18938 | fcn_00018938 (r0, r1);
0x000a5078 ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x000a507c cmp r3, r5 |
0x000a507e bgt 0xa5066 |
| } while (r3 > r5);
| label_69:
0x000a5080 mov r1, r7 | r1 = r7;
0x000a5082 mov r0, r6 | r0 = r6;
0x000a5084 bl 0x18938 | r0 = fcn_00018938 (r0, r1);
0x000a5088 mov r2, r0 | r2 = r0;
0x000a508a mov r0, fp | r0 = fp;
0x000a508c asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000a508e bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a5092 b.w 0xa3d88 | goto label_6;
0x000a5096 ldr r5, [pc, 0x3f0] |
0x000a5098 movs r4, 0 | r4 = 0;
0x000a509a ldr r6, [pc, 0x3f0] |
0x000a509c add r5, pc |
0x000a509e add.w r5, r5, 0x218 | r5 = 0x14a742;
0x000a50a2 add r6, pc | r6 = 0x14a534;
| do {
0x000a50a4 ldr.w r3, [r5, r4, lsl 2] | offset_7 = r4 << 2;
| r3 = *((r5 + offset_7));
0x000a50a8 mov r2, r6 | r2 = r6;
0x000a50aa adds r4, 4 | r4 += 4;
0x000a50ac movs r1, 1 | r1 = 1;
0x000a50ae mov r0, fp | r0 = fp;
0x000a50b0 bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a50b4 cmp.w r4, 0x104 |
0x000a50b8 bne 0xa50a4 |
| } while (r4 != 0x104);
0x000a50ba b.w 0xa3d88 | goto label_6;
0x000a50be ldr r5, [sp, 0x20] | r5 = s2;
| if (r5 != 0) {
0x000a50c0 cbz r5, 0xa50e2 |
0x000a50c2 ldr r1, [pc, 0x3cc] |
0x000a50c4 mov r0, r5 | r0 = r5;
0x000a50c6 add r1, pc | r1 = 0x14a55c;
0x000a50c8 bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a50cc cmp r0, 0 |
| if (r0 == 0) {
0x000a50ce beq.w 0xa60c4 | goto label_201;
| }
0x000a50d2 ldr r1, [pc, 0x3c0] |
0x000a50d4 mov r0, r5 | r0 = r5;
0x000a50d6 add r1, pc | r1 = 0x14a570;
0x000a50d8 bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a50dc cmp r0, 0 |
| if (r0 == 0) {
0x000a50de beq.w 0xa60c6 | goto label_202;
| }
| }
0x000a50e2 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a50e4 cmp r3, 0 |
| if (r3 == 0) {
0x000a50e6 beq.w 0xa6394 | goto label_203;
| }
0x000a50ea ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a50ec ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a50ee ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a50f0 ldr r3, [r3] | r3 = *(r3);
| label_76:
0x000a50f2 ldrb r3, [r3, 4] | r3 = *((r3 + 4));
| label_97:
0x000a50f4 cmp r3, 1 |
| if (r3 == 1) {
0x000a50f6 beq.w 0xa6160 | goto label_204;
| }
0x000a50fa ldr r1, [pc, 0x39c] |
0x000a50fc add r1, pc | r1 = 0x14a59a;
| label_77:
0x000a50fe mov r0, fp | r0 = fp;
0x000a5100 bl 0x2bf24 | fcn_0002bf24 (r0, r1, r2);
0x000a5104 b.w 0xa3d88 | goto label_6;
0x000a5108 ldr r3, [sp, 0x20] | r3 = s2;
0x000a510a cmp r3, 0 |
| if (r3 == 0) {
0x000a510c beq.w 0xa5ef4 | goto label_205;
| }
0x000a5110 ldr r0, [sp, 0x20] | r0 = s2;
0x000a5112 add r1, sp, 0x88 | r1 += var_88h;
0x000a5114 bl 0xc338 | r0 = fcn_0000c338 (r0, r1);
0x000a5118 cmp r0, 0 |
| if (r0 == 0) {
0x000a511a beq.w 0xa5ef4 | goto label_205;
| }
0x000a511e ldr r3, [sp, 0x88] | r3 = var_88h;
0x000a5120 cmp r3, 0 |
| if (r3 <= 0) {
0x000a5122 ble.w 0xa5ef4 | goto label_205;
| }
| label_59:
0x000a5126 movs r4, 0 | r4 = 0;
0x000a5128 mov r0, sb | r0 = sb;
0x000a512a mov r2, r8 | r2 = r8;
0x000a512c mov r1, r4 | r1 = r4;
0x000a512e bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x000a5132 ldr r2, [sp, 0x88] | r2 = var_88h;
0x000a5134 movs r3, 1 | r3 = 1;
0x000a5136 movs r1, 0x45 | r1 = 0x45;
0x000a5138 mov r0, fp | r0 = fp;
0x000a513a str r4, [sp] | *(sp) = r4;
0x000a513c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a5140 mov r2, r8 | r2 = r8;
0x000a5142 mov r3, r4 | r3 = r4;
0x000a5144 movs r1, 0x3c | r1 = 0x3c;
0x000a5146 mov r0, fp | r0 = fp;
0x000a5148 str r4, [sp] | *(sp) = r4;
0x000a514a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a514e mov r3, r4 | r3 = r4;
0x000a5150 mov r5, r0 | r5 = r0;
0x000a5152 movs r2, 1 | r2 = 1;
0x000a5154 movs r1, 0x51 | r1 = 0x51;
0x000a5156 mov r0, fp | r0 = fp;
0x000a5158 str r4, [sp] | *(sp) = r4;
0x000a515a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a515e mov.w r3, -1 | r3 = -1;
0x000a5162 movs r2, 1 | r2 = 1;
0x000a5164 movs r1, 0x53 | r1 = 0x53;
0x000a5166 mov r0, fp | r0 = fp;
0x000a5168 str r4, [sp] | *(sp) = r4;
0x000a516a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a516e mov r3, r5 | r3 = r5;
0x000a5170 movs r2, 1 | r2 = 1;
0x000a5172 movs r1, 0x30 | r1 = 0x30;
0x000a5174 mov r0, fp | r0 = fp;
0x000a5176 str r4, [sp] | *(sp) = r4;
0x000a5178 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a517c ldr.w r2, [fp, 0x6c] | r2 = *(arg_6ch);
0x000a5180 mov r1, r5 | r1 = r5;
0x000a5182 mov r0, fp | r0 = fp;
0x000a5184 bl 0x9894 | fcn_00009894 (r0, r1, r2);
0x000a5188 b.w 0xa3d88 | goto label_6;
| label_106:
0x000a518c movs r1, 1 | r1 = 1;
0x000a518e mov r0, fp | r0 = fp;
0x000a5190 bl 0x1ad08 | fcn_0001ad08 (r0, r1);
0x000a5194 ldr.w r3, [fp] | r3 = *(fp);
0x000a5198 ldr r1, [sp, 0x9c] | r1 = var_9ch;
0x000a519a ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 == 0) {
0x000a519e cbnz r3, 0xa51bc |
0x000a51a0 movs r3, 1 | r3 = 1;
0x000a51a2 mov.w r4, -1 | r4 = -1;
0x000a51a4 adds r4, 0xff | r4 += 0xff;
0x000a51a6 ldr.w r0, [fp, 0x74] | r0 = *(arg_74h);
0x000a51aa mov.w r2, -1 | r2 = -1;
0x000a51ae strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x000a51b2 mov.w r3, -1 | r3 = -1;
0x000a51b6 bl 0x26e0c | fcn_00026e0c (r0, r1, r2, r3, r4, r5);
0x000a51ba ldr r1, [sp, 0x9c] | r1 = var_9ch;
| }
| if (r1 != 0) {
0x000a51bc cbz r1, 0xa51c6 |
0x000a51be mov r0, fp | r0 = fp;
0x000a51c0 bl 0x2bf24 | fcn_0002bf24 (r0, r1, r2);
0x000a51c4 ldr r1, [sp, 0x9c] | r1 = var_9ch;
| }
0x000a51c6 mov r0, r1 | r0 = r1;
0x000a51c8 blx 0x84f8 | fcn_000084f8 ();
0x000a51cc b.w 0xa3d88 | goto label_6;
| label_148:
0x000a51d0 cmp r3, 0 |
| if (r3 != 0) {
0x000a51d2 bne.w 0xa454c | goto label_25;
| }
0x000a51d6 ldr.w r2, [sl, 0x10] | r2 = *((sl + 0x10));
0x000a51da mov r0, sl | r0 = sl;
0x000a51dc ldrb r1, [r4, 4] | r1 = *((r4 + 4));
0x000a51de ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x000a51e0 cmp r1, 0 |
0x000a51e2 it eq |
| if (r1 != 0) {
0x000a51e4 moveq r1, 2 | r1 = 2;
| }
0x000a51e6 strb.w r1, [r2, 0x4d] | *((r2 + 0x4d)) = r1;
0x000a51ea ldr r2, [pc, 0x2b0] |
0x000a51ec strb.w r1, [sl, 0x50] | *((sl + 0x50)) = r1;
0x000a51f0 add r2, pc |
0x000a51f2 add.w r2, r2, 0x358 | r2 = 0x14a9ea;
0x000a51f6 bl 0x1f120 | fcn_0001f120 (r0, r1, r2, r3);
0x000a51fa ldr r3, [r4] | r3 = *(r4);
0x000a51fc str.w r0, [sl, 8] | __asm ("str.w r0, [sl, 8]");
0x000a5200 cmp r3, 0 |
| if (r3 != 0) {
0x000a5202 bne.w 0xa3fb6 | goto label_8;
| }
0x000a5206 b.w 0xa4572 | goto label_26;
| label_110:
0x000a520a mov r0, sb | r0 = sb;
0x000a520c bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x000a5210 cmp r0, 0 |
| if (r0 != 0) {
0x000a5212 bne.w 0xa3d88 | goto label_6;
| }
0x000a5216 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a5218 ldrb r3, [r3, 5] | r3 = *((r3 + 5));
0x000a521a b.w 0xa3e16 | goto label_27;
| label_111:
0x000a521e ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a5220 ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x000a5222 subs r3, 1 | r3--;
0x000a5224 cmp r3, 0x29 |
| if (r3 <= 0x29) {
0x000a5226 bhi 0xa52dc |
0x000a5228 adr r2, 8 | r2 = 8;
0x000a522a ldr.w r3, [r2, r3, lsl 2] | offset_8 = r3 << 2;
| r3 = *((r2 + offset_8));
0x000a522e add r2, r3 | r2 += r3;
0x000a5230 bx r2 | return uint32_t (*r2)() ();
| }
| label_112:
0x000a52dc movs r3, 0 | r3 = 0;
0x000a52de add r1, sp, 0x88 | r1 += var_88h;
0x000a52e0 ldr r0, [sp, 0x20] | r0 = s2;
0x000a52e2 str r3, [sp, 0x88] | var_88h = r3;
0x000a52e4 bl 0xc338 | fcn_0000c338 (r0, r1);
0x000a52e8 ldr r1, [sp, 0x88] | r1 = var_88h;
0x000a52ea mov r0, sl | r0 = sl;
0x000a52ec blx 0x7c88 | fcn_00007c88 ();
0x000a52f0 b.w 0xa3ea4 | goto label_28;
| label_176:
0x000a52f4 ldrh r6, [r5, 0x2e] | r6 = *((r5 + 0x2e));
0x000a52f6 adds r6, 0x2e | r6 += 0x2e;
0x000a52f8 sxth r6, r6 | __asm ("sxth r6, r6");
0x000a52fa cmp r6, 0 |
| if (r6 == 0) {
0x000a52fc beq.w 0xa4b9a | goto label_29;
| }
0x000a5300 movs r3, 0x62 | r3 = 0x62;
0x000a5302 ldr r2, [sp, 0x34] | r2 = var_34h;
0x000a5304 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000a5306 mov r0, sb | r0 = sb;
0x000a5308 str r3, [sp] | *(sp) = r3;
0x000a530a mov r3, r5 | r3 = r5;
0x000a530c bl 0x2f144 | fcn_0002f144 (r0, r1, r2, r3, r4);
0x000a5310 ldr.w r3, [fp, 0x6c] | r3 = *(arg_6ch);
0x000a5314 movs r1, 0x22 | r1 = 0x22;
0x000a5316 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000a5318 mov r0, fp | r0 = fp;
0x000a531a str r6, [sp] | *(sp) = r6;
0x000a531c adds r3, 2 | r3 += 2;
0x000a531e add r3, r7 | r3 += r7;
0x000a5320 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a5324 b 0xa4b9a | goto label_29;
| label_48:
0x000a5326 mov sb, fp | sb = fp;
| label_38:
0x000a5328 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a532a ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x000a532c b 0xa4de6 | goto label_30;
| label_174:
0x000a532e ldr.w r8, [sp, 0x34] | r8 = var_34h;
| label_173:
0x000a5332 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a5334 add.w r8, r8, 1 | r8++;
0x000a5338 cmp r8, r3 |
| if (r8 <= r3) {
0x000a533a ble.w 0xa4b2c | goto label_31;
| }
| label_91:
0x000a533e movs r1, 0xa2 | r1 = 0xa2;
0x000a5340 mov r0, fp | r0 = fp;
0x000a5342 bl 0x2b574 | fcn_0002b574 (r0, r1, r2);
0x000a5346 b.w 0xa3d88 | goto label_6;
| label_145:
0x000a534a ldr.w sl, [sp, 0x3c] | sl = var_3ch;
0x000a534e ldr.w fp, [sp, 0x34] | fp = var_34h;
0x000a5350 add sp, 0xd0 |
| label_143:
0x000a5352 ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x000a5356 cmp r3, r7 |
0x000a5358 ldr.w r3, [fp, 0x6c] | r3 = *(arg_6ch);
0x000a535c it lt |
| if (r3 >= r7) {
0x000a535e strlt r7, [sb, 0x28] | *((sb + 0x28)) = r7;
| }
0x000a5362 mov r2, r3 | r2 = r3;
0x000a5364 str r3, [sp, 0x60] | var_60h = r3;
0x000a5366 ldr.w r3, [fp, 0x70] | r3 = *(arg_70h);
0x000a536a cmp r2, r3 |
| if (r2 >= r3) {
0x000a536c bge.w 0xa5e3c | goto label_206;
| }
0x000a5370 ldr r0, [sp, 0x60] | r0 = var_60h;
0x000a5372 movs r2, 0 | r2 = 0;
0x000a5374 ldr.w r3, [fp, 0x68] | r3 = *(arg_68h);
0x000a5378 add.w r1, r0, r0, lsl 2 | r1 = r0 + (r0 << 2);
0x000a537c adds r0, 1 | r0++;
0x000a537e str.w r0, [fp, 0x6c] | __asm ("str.w r0, [arg_6ch]");
0x000a5382 str r0, [sp, 0x68] | var_68h = r0;
0x000a5384 movs r0, 0x25 | r0 = 0x25;
0x000a5386 str.w r0, [r3, r1, lsl 2] | __asm ("str.w r0, [r3, r1, lsl 2]");
0x000a538a add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
0x000a538e strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x000a5392 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| label_57:
0x000a5396 ldr.w r8, [sl, 0x10] | r8 = *((sl + 0x10));
0x000a539a cmp.w r8, 0 |
| if (r8 == 0) {
0x000a539e beq.w 0xa554c | goto label_207;
| }
0x000a53a2 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000a53a4 movs r7, 0 | r7 = 0;
0x000a53a6 str.w sb, [sp, 0x44] | __asm ("str.w sb, [var_44h]");
0x000a53aa mov r6, r8 | r6 = r8;
0x000a53ac ldr.w sb, [sp, 0x64] | sb = var_64h;
0x000a53b0 adds r2, r3, 3 | r2 = r3 + 3;
0x000a53b2 adds r3, 2 | r3 += 2;
0x000a53b4 str r2, [sp, 0x4c] | var_4ch = r2;
0x000a53b6 movs r2, 1 | r2 = 1;
0x000a53b8 str r2, [sp, 0x2c] | var_2ch = r2;
0x000a53ba str r3, [sp, 0x50] | var_50h = r3;
| label_33:
0x000a53bc ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x000a53be ldr r2, [sp, 0x28] | r2 = var_28h;
0x000a53c0 ldr r0, [sp, 0x38] | r0 = var_38h;
0x000a53c2 bl 0x3b634 | fcn_0003b634 (r0, r1, r2, r3);
0x000a53c6 strd r7, r7, [sp, 0x84] | __asm ("strd r7, r7, [sp, 0x84]");
0x000a53ca str r0, [sp, 0x3c] | var_3ch = r0;
0x000a53cc cmp r0, 0 |
| if (r0 == 0) {
0x000a53ce beq.w 0xa5596 | goto label_208;
| }
0x000a53d2 ldr r4, [sp, 0x44] | r4 = var_44h;
0x000a53d4 add r3, sp, 0x88 | r3 += var_88h;
0x000a53d6 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x000a53d8 mov r2, r6 | r2 = r6;
0x000a53da str r3, [sp] | *(sp) = r3;
0x000a53dc add r3, sp, 0x84 | r3 += var_84h;
0x000a53de mov r0, r4 | r0 = r4;
0x000a53e0 bl 0x2e55c | fcn_0002e55c (r0, r1, r2, r3, r4, r5);
0x000a53e4 ldr r5, [r6, 0x14] | r5 = *((r6 + 0x14));
0x000a53e6 ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x000a53e8 ldr r1, [sp, 0x84] | r1 = var_84h;
0x000a53ea cmp r5, 0 |
0x000a53ec add.w r8, r2, -1 | r8 = r2 + -1;
0x000a53f0 str r2, [sp, 0x40] | var_40h = r2;
0x000a53f2 str r1, [sp, 0x34] | var_34h = r1;
0x000a53f4 str.w r8, [r4, 0x38] | __asm ("str.w r8, [r4, 0x38]");
| if (r5 <= 0) {
0x000a53f8 ble.w 0xa56d4 | goto label_209;
| }
| label_35:
0x000a53fc add.w r3, r6, 0x24 | r3 = r6 + 0x24;
0x000a5400 movs r4, 0 | r4 = 0;
0x000a5402 str r3, [sp, 0x30] | var_30h = r3;
0x000a5404 b 0xa5430 |
| while (r3 != 0) {
0x000a5406 ldr.w r3, [r3, r4, lsl 2] | offset_9 = r4 << 2;
| r3 = *((r3 + offset_9));
| label_32:
0x000a540a add.w r5, sb, r4 | r5 = sb + r4;
0x000a540e movs r2, 0 | r2 = 0;
0x000a5410 mov r1, sl | r1 = sl;
0x000a5412 mov r0, fp | r0 = fp;
0x000a5414 str r5, [sp] | *(sp) = r5;
0x000a5416 adds r4, 1 | r4++;
0x000a5418 bl 0x66f40 | fcn_00066f40 (r0, r1, r2, r3, r4);
0x000a541c mov r2, r5 | r2 = r5;
0x000a541e mov r3, r8 | r3 = r8;
0x000a5420 movs r1, 0x32 | r1 = 0x32;
0x000a5422 mov r0, fp | r0 = fp;
0x000a5424 str r7, [sp] | *(sp) = r7;
0x000a5426 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a542a ldr r5, [r6, 0x14] | r5 = *((r6 + 0x14));
0x000a542c cmp r5, r4 |
| if (r5 <= r4) {
0x000a542e ble 0xa54a0 | goto label_210;
| }
0x000a5430 ldr r3, [sp, 0x88] | r3 = var_88h;
0x000a5432 cmp r3, 0 |
0x000a5434 bne 0xa5406 |
| }
0x000a5436 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a5438 ldr.w r3, [r3, r4, lsl 3] | offset_10 = r4 << 3;
| r3 = *((r3 + offset_10));
0x000a543c b 0xa540a | goto label_32;
| label_210:
0x000a54a0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a54a2 cmp r3, 0 |
| if (r3 == 0) {
0x000a54a4 beq.w 0xa55b6 | goto label_211;
| }
| label_46:
0x000a54a8 ldrd r1, r0, [sp, 0x34] | __asm ("ldrd r1, r0, [var_34h]");
0x000a54ac bl 0x1305c | fcn_0001305c (r0, r1);
0x000a54b0 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x000a54b2 mov r3, r5 | r3 = r5;
0x000a54b4 ldr r4, [sp, 0x58] | r4 = var_58h;
0x000a54b6 movs r1, 0x5d | r1 = 0x5d;
0x000a54b8 strd r0, r2, [sp, 4] | __asm ("strd r0, r2, [sp, 4]");
0x000a54bc mov r2, sb | r2 = sb;
0x000a54be mov r0, fp | r0 = fp;
0x000a54c0 str r4, [sp] | *(sp) = r4;
0x000a54c2 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000a54c6 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000a54c8 mov r3, r8 | r3 = r8;
0x000a54ca movs r1, 0x1e | r1 = 0x1e;
0x000a54cc mov r0, fp | r0 = fp;
0x000a54ce str r7, [sp, 4] | var_4h = r7;
0x000a54d0 str r4, [sp] | *(sp) = r4;
0x000a54d2 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
| label_36:
0x000a54d6 ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x000a54da mov r0, fp | r0 = fp;
0x000a54dc ands r2, r2, 0x80 | r2 &= 0x80;
0x000a54e0 ittee eq |
| if (r2 != r2) {
0x000a54e2 ldreq r3, [sp, 0x50] | r3 = var_50h;
| }
| if (r2 != r2) {
0x000a54e4 moveq r1, 0x83 | r1 = 0x83;
| }
| if (r2 == r2) {
0x000a54e6 ldrne r3, [sp, 0x50] | r3 = var_50h;
| }
| if (r2 == r2) {
0x000a54e8 movne r2, 0 | r2 = 0;
| }
0x000a54ea itet ne |
| if (r2 == r2) {
0x000a54ec movne r1, 0x48 | r1 = 0x48;
| }
| if (r2 != r2) {
0x000a54ee streq r2, [sp] | *(sp) = r2;
| }
| if (r2 == r2) {
0x000a54f0 strne r7, [sp] | *(sp) = r7;
| }
0x000a54f2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a54f6 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000a54f8 mov r0, fp | r0 = fp;
0x000a54fa ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x000a54fc ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x000a54fe subs r2, 1 | r2--;
0x000a5500 str r2, [sp] | *(sp) = r2;
0x000a5502 ldr r2, [sp, 0x54] | r2 = var_54h;
0x000a5504 bl 0x2b378 | fcn_0002b378 (r0, r1);
0x000a5508 ldr r2, [sp, 0x48] | r2 = var_48h;
0x000a550a movs r3, 4 | r3 = 4;
0x000a550c movs r1, 0x51 | r1 = 0x51;
0x000a550e mov r0, fp | r0 = fp;
0x000a5510 str r7, [sp] | *(sp) = r7;
0x000a5512 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a5516 ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x000a551a ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x000a551e cmn r2, r3 |
| if (r2 < r3) {
0x000a5520 bmi 0xa55da | goto label_212;
| }
0x000a5522 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a5524 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x000a5526 ldr.w r1, [fp, 0x6c] | r1 = *(arg_6ch);
0x000a552a lsls r3, r3, 2 | r3 <<= 2;
0x000a552c rsbs r3, r3, 0 | r3 -= ;
0x000a552e str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_37:
0x000a5530 ldr r1, [sp, 0x88] | r1 = var_88h;
| if (r1 != 0) {
0x000a5532 cbz r1, 0xa553a |
0x000a5534 ldr r0, [sp, 0x38] | r0 = var_38h;
0x000a5536 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x000a553a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a553c ldr r6, [r6, 4] | r6 = *((r6 + 4));
0x000a553e adds r3, 1 | r3++;
0x000a5540 str r3, [sp, 0x2c] | var_2ch = r3;
0x000a5542 cmp r6, 0 |
| if (r6 != 0) {
0x000a5544 bne.w 0xa53bc | goto label_33;
| }
0x000a5548 ldr.w sb, [sp, 0x44] | sb = var_44h;
| label_207:
0x000a554c movs r2, 0 | r2 = 0;
0x000a554e ldr r3, [sp, 0x68] | r3 = var_68h;
0x000a5550 movs r1, 5 | r1 = 5;
0x000a5552 mov r0, fp | r0 = fp;
0x000a5554 str r2, [sp] | *(sp) = r2;
0x000a5556 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a555a ldr r3, [sp, 0x60] | r3 = var_60h;
0x000a555c ldr.w r1, [fp, 0x6c] | r1 = *(arg_6ch);
0x000a5560 cmp r3, 0 |
| if (r3 < 0) {
0x000a5562 bge 0xa5568 |
0x000a5564 subs r3, r1, 1 | r3 = r1 - 1;
0x000a5566 str r3, [sp, 0x60] | var_60h = r3;
| }
0x000a5568 ldr.w r3, [fp] | r3 = *(fp);
0x000a556c ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000a5570 cmp r3, 0 |
| if (r3 != 0) {
0x000a5572 bne.w 0xa56c2 | goto label_213;
| }
0x000a5576 ldr r3, [sp, 0x60] | r3 = var_60h;
0x000a5578 ldr.w r2, [fp, 0x68] | r2 = *(arg_68h);
0x000a557c add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000a5580 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_44:
0x000a5584 str r1, [r3, 8] | *((r3 + 8)) = r1;
| label_40:
0x000a5586 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000a5588 cmp r3, 0 |
| if (r3 != 0) {
0x000a558a bne.w 0xa43a8 | goto label_34;
| }
| label_138:
0x000a558e ldr.w sl, [sp, 0x38] | sl = var_38h;
0x000a5592 b.w 0xa3d88 | goto label_6;
| label_208:
0x000a5596 ldr r2, [sp, 0x44] | r2 = var_44h;
0x000a5598 ldr r3, [r2, 0x38] | r3 = *((r2 + 0x38));
0x000a559a mov r1, r3 | r1 = r3;
0x000a559c str r3, [sp, 0x40] | var_40h = r3;
0x000a559e ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x000a55a0 add.w r8, r1, -1 | r8 = r1 + -1;
0x000a55a4 str.w r8, [r2, 0x38] | __asm ("str.w r8, [r2, 0x38]");
0x000a55a8 cmp r3, 0 |
0x000a55aa itt gt |
| if (r3 <= 0) {
0x000a55ac ldrgt r3, [sp, 0x3c] | r3 = var_3ch;
| }
| if (r3 > 0) {
0x000a55ae strgt r3, [sp, 0x34] | var_34h = r3;
| goto label_214;
| }
| if (r3 > 0) {
| label_214:
0x000a55b0 bgt.w 0xa53fc | goto label_35;
| }
0x000a55b4 b 0xa54d6 | goto label_36;
| label_211:
0x000a55b6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000a55b8 cmp r3, 0 |
| if (r3 == 0) {
0x000a55ba beq 0xa54d6 | goto label_36;
| }
| label_47:
0x000a55bc ldr.w r3, [fp, 0x6c] | r3 = *(arg_6ch);
0x000a55c0 movs r1, 0x1f | r1 = 0x1f;
0x000a55c2 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000a55c4 mov r0, fp | r0 = fp;
0x000a55c6 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000a55ca adds r3, 2 | r3 += 2;
0x000a55cc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a55d0 mov r1, r8 | r1 = r8;
0x000a55d2 mov r0, fp | r0 = fp;
0x000a55d4 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x000a55d8 b 0xa54d6 | goto label_36;
| label_212:
0x000a55da ldr r3, [sp, 0x40] | r3 = var_40h;
0x000a55dc mov r1, fp | r1 = fp;
0x000a55de rsbs r2, r3, 0 | r2 = r3 - ;
0x000a55e0 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000a55e4 b 0xa5530 | goto label_37;
| label_192:
0x000a55e6 cmp r1, 0 |
| if (r1 == 0) {
0x000a55e8 beq.w 0xa5328 | goto label_38;
| }
0x000a55ec ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000a55ee cmp r3, 0 |
| if (r3 == 0) {
0x000a55f0 beq.w 0xa5ec8 | goto label_215;
| }
0x000a55f4 adds r1, 2 | r1 += 2;
0x000a55f6 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000a55f8 lsls r2, r1, 2 | r2 = r1 << 2;
0x000a55fa mov r3, r7 | r3 = r7;
0x000a55fc bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x000a5600 mov r1, r0 | r1 = r0;
0x000a5602 cmp r0, 0 |
| if (r0 == 0) {
0x000a5604 beq.w 0xa5e56 | goto label_190;
| }
0x000a5608 movs r3, 1 | r3 = 1;
0x000a560a str r7, [r0, 4] | *((r0 + 4)) = r7;
| label_58:
0x000a560c ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000a560e cmp r0, 0 |
| if (r0 == 0) {
0x000a5610 beq 0xa56de | goto label_216;
| }
0x000a5612 ldr.w ip, [sp, 0x3c] | ip = var_3ch;
0x000a5616 ldr.w lr, [sp, 0x44] | lr = var_44h;
0x000a561a b 0xa5622 |
| while (r2 != 0) {
| label_39:
0x000a561c ldr r0, [r0] | r0 = *(r0);
0x000a561e cmp r0, 0 |
| if (r0 == 0) {
0x000a5620 beq 0xa56de | goto label_216;
| }
0x000a5622 ldr r7, [r0, 8] | r7 = *((r0 + 8));
0x000a5624 cmp ip, r7 |
0x000a5626 ite eq |
| if (ip != r7) {
0x000a5628 moveq r2, 0 | r2 = 0;
| }
| if (ip == r7) {
0x000a562a andne r2, lr, 1 | r2 = lr & 1;
| }
0x000a562e cmp r2, 0 |
0x000a5630 bne 0xa561c |
| }
0x000a5632 ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x000a5634 lsls r2, r2, 0x18 | r2 <<= 0x18;
0x000a5636 ittt pl |
| if (r2 < r2) {
0x000a5638 ldrpl r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
| }
| if (r2 < r2) {
0x000a563a addpl r3, 1 | r3++;
| }
| if (r2 < r2) {
0x000a563c strpl r2, [r1, r3, lsl 2] | offset_11 = r3 << 2;
| *((r1 + offset_11)) = r2;
| }
0x000a5640 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x000a5642 cmp r2, 0 |
| if (r2 == 0) {
0x000a5644 beq 0xa561c | goto label_39;
| }
0x000a5646 add.w r8, r1, r3, lsl 2 | r8 = r1 + (r3 << 2);
| do {
0x000a564a ldr r7, [r2, 0x2c] | r7 = *((r2 + 0x2c));
0x000a564c adds r3, 1 | r3++;
0x000a564e ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x000a5650 str r7, [r8, 4]! | *((r8 += 4)) = r7;
0x000a5654 cmp r2, 0 |
0x000a5656 bne 0xa564a |
| } while (r2 != 0);
0x000a5658 b 0xa561c | goto label_39;
| label_137:
0x000a565a ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x000a565c ldr.w sl, [r3, 8] | sl = *((r3 + 8));
0x000a5660 ldr r3, [r3] | r3 = *(r3);
0x000a5662 str r3, [sp, 0x5c] | var_5ch = r3;
0x000a5664 cmp.w sl, 0 |
| if (sl == 0) {
0x000a5668 beq 0xa5586 | goto label_40;
| }
0x000a566a ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a566e cmp r3, 0 |
| if (r3 != 0) {
0x000a5670 bne.w 0xa43ce | goto label_41;
| }
0x000a5674 b 0xa5586 | goto label_40;
| label_153:
0x000a5676 ldr.w r3, [sl, 0x20] | r3 = *((sl + 0x20));
0x000a567a lsls r5, r3, 0x1a | r5 = r3 << 0x1a;
| if (r5 < r3) {
0x000a567c bmi.w 0xa6336 | goto label_217;
| }
0x000a5680 ldr r2, [sp, 0x20] | r2 = s2;
0x000a5682 mov r3, r2 | r3 = r2;
| label_78:
0x000a5684 mov r0, fp | r0 = fp;
0x000a5686 bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
| label_65:
0x000a568a ldr r1, [sp, 0x24] | r1 = var_24h;
0x000a568c mov r0, sl | r0 = sl;
0x000a568e bl 0x159dc | fcn_000159dc (r0, r1);
0x000a5692 b.w 0xa3d9c | goto label_3;
| label_177:
0x000a5696 mvn r3, 6 | r3 = ~6;
0x000a569a str r0, [sp, 4] | var_4h = r0;
0x000a569c str r3, [sp, 8] | var_8h = r3;
0x000a569e mov r2, r7 | r2 = r7;
0x000a56a0 mov r3, r7 | r3 = r7;
0x000a56a2 movs r1, 0x90 | r1 = 0x90;
0x000a56a4 mov r0, fp | r0 = fp;
0x000a56a6 str r7, [sp] | *(sp) = r7;
0x000a56a8 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000a56ac b.w 0xa4b74 | goto label_22;
| label_141:
0x000a56b0 cmp r6, 1 |
0x000a56b2 ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x000a56b6 ldr.w r1, [sl] | r1 = *(sl);
| if (r6 != 1) {
0x000a56ba bne.w 0xa4428 | goto label_42;
| }
0x000a56be b.w 0xa4444 | goto label_43;
| label_213:
0x000a56c2 ldr r3, [sp, 0x70] | r3 = var_70h;
0x000a56c4 b 0xa5584 | goto label_44;
| label_178:
0x000a56c6 ldr.w r5, [sb, 0x2c] | r5 = *((sb + 0x2c));
0x000a56ca adds r5, 1 | r5++;
0x000a56cc str.w r5, [sb, 0x2c] | __asm ("str.w r5, [sb, 0x2c]");
0x000a56d0 b.w 0xa4bcc | goto label_45;
| label_209:
0x000a56d4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a56d6 cmp r3, 0 |
| if (r3 != 0) {
0x000a56d8 bne.w 0xa54a8 | goto label_46;
| }
0x000a56dc b 0xa55bc | goto label_47;
| label_216:
0x000a56de str r3, [r1] | *(r1) = r3;
0x000a56e0 adds r4, 8 | r4 += 8;
0x000a56e2 str r1, [sp, 4] | var_4h = r1;
0x000a56e4 mov r0, sl | r0 = sl;
0x000a56e6 ldr.w r2, [sb, 0x2c] | r2 = *((sb + 0x2c));
0x000a56ea movs r1, 0x96 | r1 = 0x96;
0x000a56ec cmp r2, r4 |
0x000a56ee it lt |
| if (r2 >= r4) {
0x000a56f0 movlt r2, r4 | r2 = r4;
| }
0x000a56f2 str.w r2, [sb, 0x2c] | __asm ("str.w r2, [sb, 0x2c]");
0x000a56f6 movs r2, 0 | r2 = 0;
0x000a56f8 strb.w r2, [sb, 0x13] | *((sb + 0x13)) = r2;
0x000a56fc str.w r2, [sb, 0x1c] | __asm ("str.w r2, [sb, 0x1c]");
0x000a5700 mvn r2, 0xe | r2 = ~0xe;
0x000a5704 str r2, [sp, 8] | var_8h = r2;
0x000a5706 movs r2, 1 | r2 = 1;
0x000a5708 str r2, [sp] | *(sp) = r2;
0x000a570a movs r2, 2 | r2 = 2;
0x000a570c bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000a5710 ldr.w r4, [sl, 0x6c] | r4 = *((sl + 0x6c));
0x000a5714 cmp r4, 0 |
| if (r4 > 0) {
0x000a5716 ble 0xa572c |
0x000a5718 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x000a571c add.w r2, r4, r4, lsl 2 | r2 = r4 + (r4 << 2);
0x000a5720 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x000a5724 ldrb.w r2, [sp, 0x2c] | r2 = var_2ch;
0x000a5728 strh r2, [r3, -0x12] | *((r3 - 0x12)) = r2;
| }
0x000a572c ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x000a5730 cmp r4, r3 |
| if (r4 >= r3) {
0x000a5732 bge.w 0xa5fdc | goto label_218;
| }
0x000a5736 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x000a573a add.w r2, r4, r4, lsl 2 | r2 = r4 + (r4 << 2);
0x000a573e adds r0, r4, 1 | r0 = r4 + 1;
0x000a5740 str.w r0, [sl, 0x6c] | __asm ("str.w r0, [sl, 0x6c]");
0x000a5744 movs r0, 0x32 | r0 = 0x32;
0x000a5746 str.w r0, [r3, r2, lsl 2] | __asm ("str.w r0, [r3, r2, lsl 2]");
0x000a574a movs r1, 0 | r1 = 0;
0x000a574c add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x000a5750 movs r2, 2 | r2 = 2;
0x000a5752 strd r1, r1, [r3, 8] | __asm ("strd r1, r1, [r3, 8]");
0x000a5756 str r1, [r3, 0x10] | *((r3 + 0x10)) = r1;
0x000a5758 str r2, [r3, 4] | *((r3 + 4)) = r2;
| label_73:
0x000a575a ldr r0, [sp, 0x34] | r0 = var_34h;
0x000a575c ldr.w r1, [pc, 0xcac] | r1 = *(0x000a640c);
0x000a5760 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000a5762 add r1, pc | r1 += pc;
0x000a5764 ldr r2, [r3, r6] | r2 = *((r3 + r6));
0x000a5766 bl 0x2677c | fcn_0002677c (r0);
0x000a576a movs r2, 0 | r2 = 0;
0x000a576c mvn r3, 6 | r3 = ~6;
0x000a5770 movs r1, 0x74 | r1 = 0x74;
0x000a5772 str r0, [sp, 4] | var_4h = r0;
0x000a5774 str r2, [sp] | *(sp) = r2;
0x000a5776 mov r0, sl | r0 = sl;
0x000a5778 str r3, [sp, 8] | var_8h = r3;
0x000a577a movs r3, 3 | r3 = 3;
0x000a577c bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000a5780 movs r3, 3 | r3 = 3;
0x000a5782 movs r2, 2 | r2 = 2;
0x000a5784 str r3, [sp] | *(sp) = r3;
0x000a5786 movs r1, 0x6f | r1 = 0x6f;
0x000a5788 mov r0, sl | r0 = sl;
0x000a578a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a578e mov r0, sl | r0 = sl;
0x000a5790 bl 0x2b830 | fcn_0002b830 (r0);
0x000a5794 ldr.w r3, [sl] | r3 = *(sl);
0x000a5798 cmp r4, 0 |
0x000a579a ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x000a579e ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000a57a2 it lt |
| if (r4 >= 0) {
0x000a57a4 addlt r4, r2, -1 | r4 = r2 + -1;
| }
0x000a57a8 cmp r3, 0 |
| if (r3 != 0) {
0x000a57aa bne.w 0xa5e1a | goto label_219;
| }
0x000a57ae ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x000a57b2 add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x000a57b6 add.w r3, r3, r4, lsl 2 | r3 += (r4 << 2);
| label_55:
0x000a57ba str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000a57bc mov fp, sb |
0x000a57be ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000a57c0 str r3, [sp, 0x28] | var_28h = r3;
| if (r3 != 0) {
0x000a57c2 cbnz r3, 0xa57d2 | goto label_220;
| }
0x000a57c4 b 0xa5328 | goto label_38;
| label_49:
0x000a57c6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a57c8 ldr r3, [r3] | r3 = *(r3);
0x000a57ca str r3, [sp, 0x28] | var_28h = r3;
0x000a57cc cmp r3, 0 |
| if (r3 == 0) {
0x000a57ce beq.w 0xa5326 | goto label_48;
| }
| label_220:
0x000a57d2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a57d4 ldr r7, [r3, 8] | r7 = *((r3 + 8));
0x000a57d6 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x000a57d8 cmp r3, 0 |
| if (r3 == 0) {
0x000a57da beq 0xa57c6 | goto label_49;
| }
0x000a57dc ldr r3, [sp, 0x44] | r3 = var_44h;
0x000a57de ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000a57e0 cmp r2, r7 |
0x000a57e2 ite eq |
| if (r2 != r7) {
0x000a57e4 moveq r3, 0 | r3 = 0;
| }
| if (r2 == r7) {
0x000a57e6 andne r3, r3, 1 | r3 &= 1;
| }
0x000a57ea cmp r3, 0 |
| if (r3 != 0) {
0x000a57ec bne 0xa57c6 | goto label_49;
| }
0x000a57ee ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x000a57f0 ands r3, r3, 0x80 | r3 &= 0x80;
0x000a57f4 it eq |
| if (r3 != r3) {
0x000a57f6 streq r3, [sp, 0x38] | var_38h = r3;
| }
| if (r3 != r3) {
0x000a57f8 bne.w 0xa5dd2 | goto label_221;
| }
| label_53:
0x000a57fc ldr r3, [r7, 0x38] | r3 = *((r7 + 0x38));
| if (r3 == 0) {
0x000a57fe cbnz r3, 0xa5818 |
0x000a5800 add r2, sp, 0x84 | r2 += var_84h;
0x000a5802 mov r1, r7 | r1 = r7;
0x000a5804 str r2, [sp, 0xc] | var_ch = r2;
0x000a5806 add r2, sp, 0x80 | r2 += var_80h;
0x000a5808 str r2, [sp, 8] | var_8h = r2;
0x000a580a movs r2, 1 | r2 = 1;
0x000a580c str r2, [sp] | *(sp) = r2;
0x000a580e mov r0, fp | r0 = fp;
0x000a5810 movs r2, 0x62 | r2 = 0x62;
0x000a5812 str r3, [sp, 4] | var_4h = r3;
0x000a5814 bl 0x2f32c | fcn_0002f32c (r0, r1, r2, r3, r4, r5, r6);
| }
0x000a5818 movs r6, 0 | r6 = 0;
0x000a581a movs r3, 7 | r3 = 7;
0x000a581c mov r2, r6 | r2 = r6;
0x000a581e movs r1, 0x45 | r1 = 0x45;
0x000a5820 mov r0, sl | r0 = sl;
0x000a5822 str r6, [sp] | *(sp) = r6;
0x000a5824 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a5828 ldr r4, [r7, 8] | r4 = *((r7 + 8));
0x000a582a movs r5, 8 | r5 = 8;
| if (r4 == 0) {
0x000a582c cbz r4, 0xa5844 | goto label_222;
| }
| do {
0x000a582e mov r3, r5 | r3 = r5;
0x000a5830 movs r2, 0 | r2 = 0;
0x000a5832 movs r1, 0x45 | r1 = 0x45;
0x000a5834 mov r0, sl | r0 = sl;
0x000a5836 str r6, [sp] | *(sp) = r6;
0x000a5838 adds r5, 1 | r5++;
0x000a583a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a583e ldr r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x000a5840 cmp r4, 0 |
0x000a5842 bne 0xa582e |
| } while (r4 != 0);
| label_222:
0x000a5844 ldr.w sb, [sp, 0x80] | sb = var_80h;
0x000a5848 movs r4, 0 | r4 = 0;
0x000a584a mov r3, r4 | r3 = r4;
0x000a584c movs r1, 0x25 | r1 = 0x25;
0x000a584e mov r0, sl | r0 = sl;
0x000a5850 str r4, [sp] | *(sp) = r4;
0x000a5852 mov r2, sb | r2 = sb;
0x000a5854 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a5858 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x000a585c mov r2, r3 | r2 = r3;
0x000a585e str r3, [sp, 0x50] | var_50h = r3;
0x000a5860 ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x000a5864 cmp r2, r3 |
| if (r2 >= r3) {
0x000a5866 bge.w 0xa5e24 | goto label_223;
| }
0x000a586a ldr r1, [sp, 0x50] | r1 = var_50h;
0x000a586c movs r0, 7 | r0 = 7;
0x000a586e ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x000a5872 add.w r2, r1, r1, lsl 2 | r2 = r1 + (r1 << 2);
0x000a5876 adds r1, 1 | r1++;
0x000a5878 str.w r1, [sl, 0x6c] | __asm ("str.w r1, [sl, 0x6c]");
0x000a587c movs r1, 0x53 | r1 = 0x53;
0x000a587e str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
0x000a5882 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x000a5886 movs r2, 1 | r2 = 1;
0x000a5888 strd r4, r4, [r3, 0xc] | __asm ("strd r4, r4, [r3, 0xc]");
0x000a588c strd r0, r2, [r3, 4] | __asm ("strd r0, r2, [r3, 4]");
| label_56:
0x000a5890 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000a5892 cmp r3, 0x71 |
| if (r3 != 0x71) {
0x000a5894 beq 0xa58c4 |
0x000a5896 ldrsh.w r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x000a589a movs r2, 3 | r2 = 3;
0x000a589c str r2, [sp] | *(sp) = r2;
0x000a589e movs r1, 0x5b | r1 = 0x5b;
0x000a58a0 mov r2, sb | r2 = sb;
0x000a58a2 mov r0, sl | r0 = sl;
0x000a58a4 subs r3, 1 | r3--;
0x000a58a6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a58aa ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x000a58ae cmp r3, 0 |
| if (r3 <= 0) {
0x000a58b0 ble 0xa58c4 | goto label_224;
| }
0x000a58b2 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x000a58b6 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000a58ba add.w r2, r2, r3, lsl 2 | r2 += (r3 << 2);
0x000a58be movs r3, 0x80 | r3 = 0x80;
0x000a58c0 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
| label_224:
0x000a58c4 ldrsh.w r2, [r7, 0x2a] | r2 = *((r7 + 0x2a));
0x000a58c8 cmp r2, 0 |
| if (r2 <= 0) {
0x000a58ca ble.w 0xa59e4 | goto label_225;
| }
0x000a58ce ldr.w r3, [pc, 0xb40] | r3 = *(0x000a6410);
0x000a58d2 movs r4, 0 | r4 = 0;
0x000a58d4 ldr.w r8, [pc, 0xb3c] | r8 = *(0x000a6414);
0x000a58d8 mov r6, r4 | r6 = r4;
0x000a58da str.w fp, [sp, 0x4c] | __asm ("str.w fp, [var_4ch]");
0x000a58de add r3, pc | r3 += pc;
0x000a58e0 ldr.w fp, [sp, 0x34] | fp = var_34h;
0x000a58e4 adds r3, 4 | r3 += 4;
0x000a58e6 add r8, pc | r8 += pc;
0x000a58e8 str r3, [sp, 0x30] | var_30h = r3;
0x000a58ea ldr.w r3, [pc, 0xb2c] | r3 = *(0x000a6418);
0x000a58ee add r3, pc | r3 += pc;
0x000a58f0 adds r3, 4 | r3 += 4;
0x000a58f2 str r3, [sp, 0x40] | var_40h = r3;
0x000a58f4 b 0xa59a6 |
| while (r3 == r4) {
| label_50:
0x000a599e adds r4, 1 | r4++;
0x000a59a0 adds r6, 0x14 | r6 += 0x14;
0x000a59a2 cmp r2, r4 |
| if (r2 <= r4) {
0x000a59a4 ble 0xa59e0 | goto label_226;
| }
0x000a59a6 ldrsh.w r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x000a59aa cmp r3, r4 |
0x000a59ac beq 0xa599e |
| }
0x000a59ae ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000a59b0 add r3, r6 | r3 += r6;
0x000a59b2 ldrb r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000a59b4 cmp r3, 0 |
| if (r3 == 0) {
0x000a59b6 beq 0xa599e | goto label_50;
| }
0x000a59b8 movs r3, 3 | r3 = 3;
0x000a59ba mov r2, sb | r2 = sb;
0x000a59bc str r3, [sp] | *(sp) = r3;
0x000a59be mov r1, r7 | r1 = r7;
0x000a59c0 mov r3, r4 | r3 = r4;
0x000a59c2 mov r0, sl | r0 = sl;
0x000a59c4 bl 0x66f40 | fcn_00066f40 (r0, r1, r2, r3, r4);
0x000a59c8 ldr.w r3, [sl] | r3 = *(sl);
0x000a59cc ldr.w r5, [sl, 0x6c] | r5 = *((sl + 0x6c));
0x000a59d0 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000a59d4 cmp r3, 0 |
| if (r3 == 0) {
0x000a59d6 beq 0xa58f6 | void (*0xa58f6)() ();
| }
| label_226:
0x000a59e0 ldr.w fp, [sp, 0x4c] | fp = var_4ch;
| label_225:
0x000a59e4 ldr r1, [r7, 0x18] | r1 = *((r7 + 0x18));
| if (r1 != 0) {
0x000a59e6 cbz r1, 0xa59f6 |
0x000a59e8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000a59ea ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x000a59ec and r2, r2, 0x200 | r2 &= 0x200;
0x000a59f0 cmp r2, 0 |
| if (r2 == 0) {
0x000a59f2 beq.w 0xa5df6 | goto label_227;
| }
| }
| label_54:
0x000a59f6 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000a59f8 cmp r3, 0x71 |
| if (r3 != 0x71) {
0x000a59fa bne.w 0xa5b50 | goto label_228;
| }
| label_51:
0x000a59fe ldr r4, [sp, 0x50] | r4 = var_50h;
0x000a5a00 movs r3, 0 | r3 = 0;
0x000a5a02 movs r1, 5 | r1 = 5;
0x000a5a04 str r3, [sp] | *(sp) = r3;
0x000a5a06 mov r2, sb | r2 = sb;
0x000a5a08 mov r0, sl | r0 = sl;
0x000a5a0a mov r3, r4 | r3 = r4;
0x000a5a0c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a5a10 subs r3, r4, 1 | r3 = r4 - 1;
0x000a5a12 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
| if (r3 >= r4) {
0x000a5a16 bpl 0xa5a1a | void (*0xa5a1a)() ();
| }
| label_228:
0x000a5b50 ldr r6, [r7, 8] | r6 = *((r7 + 8));
0x000a5b52 cmp r6, 0 |
| if (r6 == 0) {
0x000a5b54 beq.w 0xa59fe | goto label_51;
| }
0x000a5b58 ldr.w r3, [pc, 0x8cc] |
0x000a5b5c mov.w r8, -1 | r8 = -1;
0x000a5b60 str.w sb, [sp, 0x54] | __asm ("str.w sb, [var_54h]");
0x000a5b64 mov r5, r8 | r5 = r8;
0x000a5b66 mov sb, r7 | sb = r7;
0x000a5b68 add r3, pc | r3 = 0x14bf94;
0x000a5b6a str r3, [sp, 0x5c] | var_5ch = r3;
0x000a5b6c ldr.w r3, [pc, 0x8bc] |
0x000a5b70 add r3, pc | r3 = 0x14bfa0;
0x000a5b72 str r3, [sp, 0x60] | var_60h = r3;
0x000a5b74 movs r3, 0 | r3 = 0;
0x000a5b76 mov r7, r3 | r7 = r3;
0x000a5b78 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000a5b7a ldr.w r4, [fp, 0x38] | r4 = *(arg_38h);
0x000a5b7e cmp r2, r6 |
0x000a5b80 add.w r4, r4, -1 | r4 += -1;
0x000a5b84 str.w r4, [fp, 0x38] | __asm ("str.w r4, [arg_38h]");
| if (r2 == r6) {
0x000a5b88 beq 0xa5c7e | void (*0xa5c7e)() ();
| }
| label_193:
0x000a5db0 mov r2, r3 | r2 = r3;
0x000a5db2 b.w 0xa4e86 | goto label_52;
| label_221:
0x000a5dd2 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x000a5dd4 str r3, [sp, 0x38] | var_38h = r3;
0x000a5dd6 ldr r2, [sp, 0x38] | r2 = var_38h;
| if (r3 != 0) {
0x000a5dd8 cbnz r3, 0xa5de0 | goto label_229;
| }
0x000a5dda b 0xa57fc | goto label_53;
| do {
0x000a5ddc ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
| if (r2 == 0) {
0x000a5dde cbz r2, 0xa5dec | goto label_230;
| }
| label_229:
0x000a5de0 ldrb.w r3, [r2, 0x37] | r3 = *((r2 + 0x37));
0x000a5de4 and r3, r3, 3 | r3 &= 3;
0x000a5de8 cmp r3, 2 |
0x000a5dea bne 0xa5ddc |
| } while (r3 != 2);
| label_230:
0x000a5dec str r2, [sp, 0x38] | var_38h = r2;
0x000a5dee b 0xa57fc | goto label_53;
| label_227:
0x000a5df6 mov r4, r3 | r4 = r3;
0x000a5df8 mov r0, r3 | r0 = r3;
0x000a5dfa bl 0x314cc | fcn_000314cc (r0, r1, r2);
0x000a5dfe ldrb.w r3, [r4, 0x53] | r3 = *((r4 + 0x53));
0x000a5e02 mov r8, r0 | r8 = r0;
0x000a5e04 cmp r3, 0 |
| if (r3 == 0) {
0x000a5e06 beq.w 0xa6008 | goto label_231;
| }
0x000a5e0a cmp r0, 0 |
| if (r0 == 0) {
0x000a5e0c beq.w 0xa59f6 | goto label_54;
| }
| label_219:
0x000a5e1a ldr.w r3, [pc, 0x61c] | r3 = *(0x000a6438);
0x000a5e1e add r3, pc | r3 += pc;
0x000a5e20 adds r3, 4 | r3 += 4;
0x000a5e22 b 0xa57ba | goto label_55;
| label_223:
0x000a5e24 movs r3, 1 | r3 = 1;
0x000a5e26 movs r2, 7 | r2 = 7;
0x000a5e28 movs r1, 0x53 | r1 = 0x53;
0x000a5e2a mov r0, sl | r0 = sl;
0x000a5e2c str r4, [sp] | *(sp) = r4;
0x000a5e2e bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000a5e32 str r0, [sp, 0x50] | var_50h = r0;
0x000a5e34 b 0xa5890 | goto label_56;
| label_206:
0x000a5e3c movs r3, 0 | r3 = 0;
0x000a5e3e movs r1, 0x25 | r1 = 0x25;
0x000a5e40 mov r2, r3 | r2 = r3;
0x000a5e42 str r3, [sp] | *(sp) = r3;
0x000a5e44 mov r0, fp | r0 = fp;
0x000a5e46 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x000a5e4a mov r3, r0 | r3 = r0;
0x000a5e4c str r0, [sp, 0x60] | var_60h = r0;
0x000a5e4e adds r3, 1 | r3++;
0x000a5e50 str r3, [sp, 0x68] | var_68h = r3;
0x000a5e52 b.w 0xa5396 | goto label_57;
| do {
| label_190:
0x000a5e56 mov fp, sl |
0x000a5e58 ldr.w sl, [sp, 0x34] | sl = var_34h;
| label_189:
0x000a5e5c ldr.w r2, [pc, 0x5dc] |
0x000a5e60 movs r1, 7 | r1 = 7;
0x000a5e62 mov r0, fp | r0 = fp;
0x000a5e64 add r2, pc | r2 = 0x14c2a4;
0x000a5e66 addw r2, r2, 0xa64 | __asm ("addw r2, r2, aav.0x000000ff");
0x000a5e6a bl 0x1b57c | r0 = fcn_0001b57c (r0, r1, r2);
| if (r0 != 0) {
0x000a5e6e cbz r0, 0xa5e92 |
0x000a5e70 ldr r2, [sp, 0x70] | r2 = var_70h;
0x000a5e72 rsb.w r2, r2, 1 | r2 = 1 - r2;
0x000a5e76 str r2, [r0, 8] | *((r0 + 8)) = r2;
0x000a5e78 ldr.w r2, [pc, 0x5c4] |
0x000a5e7c add r2, pc | r2 = 0x14c2c0;
0x000a5e7e str r2, [r0, 0x38] | *((r0 + 0x38)) = r2;
0x000a5e80 ldr.w r2, [pc, 0x5c0] |
0x000a5e84 add r2, pc | r2 = 0x14c2cc;
0x000a5e86 str r2, [r0, 0x74] | *((r0 + 0x74)) = r2;
0x000a5e88 movs r2, 0xff | r2 = 0xff;
0x000a5e8a strb.w r2, [r0, 0x29] | *((r0 + 0x29)) = r2;
0x000a5e8e strb.w r2, [r0, 0x65] | *((r0 + 0x65)) = r2;
| }
0x000a5e92 ldr.w r3, [fp, 0x6c] | r3 = *(arg_6ch);
0x000a5e96 subs r2, r3, 2 | r2 = r3 - 2;
0x000a5e98 ldr.w r3, [fp] | r3 = *(fp);
0x000a5e9c ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000a5ea0 cmp r3, 0 |
| if (r3 != 0) {
0x000a5ea2 bne.w 0xa5fd2 | goto label_232;
| }
0x000a5ea6 ldr.w r3, [fp, 0x68] | r3 = *(arg_68h);
| label_72:
0x000a5eaa str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x000a5eac b.w 0xa3d88 | goto label_6;
| label_215:
0x000a5ec8 ldr r7, [sp, 0x3c] | r7 = var_3ch;
0x000a5eca adds r1, 1 | r1++;
0x000a5ecc lsls r2, r1, 2 | r2 = r1 << 2;
0x000a5ece ldr r0, [sp, 0x34] | r0 = var_34h;
0x000a5ed0 mov r3, r7 | r3 = r7;
0x000a5ed2 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x000a5ed6 mov r1, r0 | r1 = r0;
0x000a5ed8 cmp r0, 0 |
0x000a5eda beq 0xa5e56 |
| } while (r0 == 0);
0x000a5edc mov r3, r7 | r3 = r7;
0x000a5ede b.w 0xa560c | goto label_58;
| label_205:
0x000a5ef4 mvn r3, 0x80000000 | r3 = ~0x80000000;
0x000a5ef8 str r3, [sp, 0x88] | var_88h = r3;
0x000a5efa b.w 0xa5126 | goto label_59;
| label_157:
0x000a5efe vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000a5f02 movs r2, 0 | r2 = 0;
0x000a5f04 vstr d16, [sp, 0x88] | __asm ("vstr d16, [sp, 0x88]");
0x000a5f08 b.w 0xa47e6 | goto label_60;
| label_140:
0x000a5f0c movs r6, 0 | r6 = 0;
0x000a5f0e str r6, [sp, 0x30] | var_30h = r6;
0x000a5f10 b.w 0xa43fa | goto label_61;
| label_126:
0x000a5f14 ldr.w r1, [lr, 8] | r1 = *((lr + 8));
0x000a5f18 b.w 0xa4108 | goto label_62;
| label_191:
0x000a5f1c bl 0x53ee0 | fcn_00053ee0 (r0, r1, r2, r3);
0x000a5f20 b.w 0xa4e28 | goto label_63;
| label_142:
0x000a5f24 bl 0x53ee0 | fcn_00053ee0 (r0, r1, r2, r3);
0x000a5f28 b.w 0xa4444 | goto label_43;
| label_165:
0x000a5f2c ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x000a5f30 bic.w r3, r3, r4 | r3 = BIT_MASK (r3, r4);
0x000a5f34 str.w r3, [sl, 0x20] | __asm ("str.w r3, [sl, 0x20]");
0x000a5f38 sub.w r3, r4, 0x80000 | r3 = r4 - 0x80000;
0x000a5f3c orrs r3, r5 | r3 |= r5;
0x000a5f3e bic.w r2, r2, r5 | r2 = BIT_MASK (r2, r5);
0x000a5f42 str.w r2, [sl, 0x24] | __asm ("str.w r2, [sl, 0x24]");
| if (r3 != r5) {
0x000a5f46 bne.w 0xa49fa | goto label_64;
| }
0x000a5f4a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000a5f4e vstr d16, [sl, 0x1f0] | __asm ("vstr d16, aav.0x000000ff");
0x000a5f52 b.w 0xa49fa | goto label_64;
| if (r4 != 0) {
| label_170:
0x000a5f56 cbz r4, 0xa5f5c |
0x000a5f58 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a5f5a ldr r5, [r3, 0x24] | r5 = *((r3 + 0x24));
| }
0x000a5f5c asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x000a5f5e mov r2, r5 | r2 = r5;
0x000a5f60 mov r0, fp | r0 = fp;
0x000a5f62 bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a5f66 b.w 0xa568a | goto label_65;
| if (r6 == 0) {
| label_125:
0x000a5f6a cbnz r6, 0xa5f7a |
0x000a5f6c ldr.w r7, [pc, 0x4d8] | r7 = *(0x000a6448);
0x000a5f70 movs r4, 1 | r4 = 1;
0x000a5f72 add r7, pc | r7 += pc;
0x000a5f74 b.w 0xa40bc | goto label_10;
| label_127:
0x000a5f78 mov r5, r3 | r5 = r3;
| }
0x000a5f7a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000a5f7c movs r4, 1 | r4 = 1;
0x000a5f7e subs r3, 2 | r3 -= 2;
| label_67:
0x000a5f80 ldrsh ip, [r3, 2]! | ip = *((r3 += 2));
0x000a5f84 cmp ip, sb |
| if (ip == sb) {
0x000a5f86 beq.w 0xa4156 | goto label_66;
| }
0x000a5f8a adds r4, 1 | r4++;
0x000a5f8c cmp r4, r1 |
| if (r4 <= r1) {
0x000a5f8e ble 0xa5f80 | goto label_67;
| }
0x000a5f90 b.w 0xa4156 | goto label_66;
| label_160:
0x000a5f94 mov.w r5, -1 | r5 = -1;
0x000a5f98 b.w 0xa494e | goto label_68;
| label_199:
0x000a5f9c mov.w r7, -1 | r7 = -1;
0x000a5fa0 b.w 0xa5080 | goto label_69;
| label_167:
0x000a5fa4 movs r1, 0 | r1 = 0;
0x000a5fa6 mov r0, r5 | r0 = r5;
0x000a5fa8 strb.w r1, [sl, 0x56] | *((sl + 0x56)) = r1;
0x000a5fac bl 0x183d8 | fcn_000183d8 (r0, r1);
0x000a5fb0 b.w 0xa3fb6 | goto label_8;
| label_159:
0x000a5fb4 cmp r5, 2 |
| if (r5 != 2) {
0x000a5fb6 bne.w 0xa494e | goto label_68;
| }
0x000a5fba ldr.w r3, [sl, 0x20] | r3 = *((sl + 0x20));
0x000a5fbe lsls r6, r3, 3 | r6 = r3 << 3;
| if (r6 < r3) {
0x000a5fc0 bmi.w 0xa493c | goto label_70;
| }
0x000a5fc4 b.w 0xa494e | goto label_68;
| label_186:
0x000a5fc8 str r4, [sp, 0x70] | var_70h = r4;
0x000a5fca b.w 0xa4d9c | goto label_71;
| label_108:
0x000a5fce blx 0x7e8c | fcn_00007e8c ();
| label_232:
0x000a5fd2 ldr.w r3, [pc, 0x478] | r3 = *(0x000a644c);
0x000a5fd6 add r3, pc | r3 += pc;
0x000a5fd8 adds r3, 4 | r3 += 4;
0x000a5fda b 0xa5eaa | goto label_72;
| label_218:
0x000a5fdc movs r3, 0 | r3 = 0;
0x000a5fde movs r2, 2 | r2 = 2;
0x000a5fe0 movs r1, 0x32 | r1 = 0x32;
0x000a5fe2 mov r0, sl | r0 = sl;
0x000a5fe4 str r3, [sp] | *(sp) = r3;
0x000a5fe6 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x000a5fea mov r4, r0 | r4 = r0;
0x000a5fec b.w 0xa575a | goto label_73;
| label_171:
0x000a5ff0 movw r3, 0xfffe | r3 = 0xfffe;
0x000a5ff4 str r3, [sp, 0x38] | var_38h = r3;
0x000a5ff6 b.w 0xa4b0c | goto label_74;
| label_124:
0x000a5ffa movs r5, 2 | r5 = 2;
0x000a5ffc b.w 0xa40ae | goto label_75;
| label_197:
0x000a6000 ldr.w sl, [sp, 0x28] | sl = var_28h;
0x000a6004 b.w 0xa3fb6 | goto label_8;
| label_231:
0x000a6008 ldr r4, [r0] | r4 = *(r0);
0x000a600a add.w r3, sb, 1 | r3 = sb + 1;
0x000a600e ldr.w r6, [fp, 0x38] | r6 = *(arg_38h);
0x000a6012 str.w r3, [fp, 0x34] | __asm ("str.w r3, [arg_34h]");
0x000a6016 subs r5, r4, 1 | r5 = r4 - 1;
0x000a6018 cmp r5, 0 |
0x000a601a sub.w r3, r6, 2 | r3 = r6 - 2;
0x000a601e it gt |
| if (r5 <= 0) {
0x000a6020 addgt r4, r0, r4, lsl 4 | r4 = r0 + (r4 << 4);
| }
0x000a6024 add.w r6, r6, -1 | r6 += -1;
0x000a6028 str r3, [sp, 0x30] | var_30h = r3;
0x000a602a str.w r3, [fp, 0x38] | __asm ("str.w r3, [arg_38h]");
| if (r5 <= 0) {
0x000a602e ble 0xa6046 | void (*0xa6046)() ();
| }
| label_149:
0x000a6096 ldr.w r3, [sb, 0x2c] | r3 = *((sb + 0x2c));
0x000a609a movs r1, 9 | r1 = 9;
0x000a609c ldr r2, [pc, 0x3b4] |
0x000a609e adds r3, 2 | r3 += 2;
0x000a60a0 add r2, pc | r2 = 0x14c4f8;
0x000a60a2 str.w r3, [sb, 0x2c] | __asm ("str.w r3, [sb, 0x2c]");
0x000a60a6 addw r2, r2, 0xa2c | __asm ("addw r2, r2, aav.0x000000ff");
0x000a60aa bl 0x1b57c | fcn_0001b57c (r0, r1, r2);
0x000a60ae movw r2, 0xf830 |
0x000a60b2 str.w r8, [r0, 4] | __asm ("str.w r8, [r0, 4]");
0x000a60b6 movt r2, 0xffff | r2 = 0xfffff830;
0x000a60ba str.w r8, [r0, 0x18] | __asm ("str.w r8, [r0, 0x18]");
0x000a60be str r2, [r0, 0x7c] | *((r0 + 0x7c)) = r2;
0x000a60c0 b.w 0xa568a | goto label_65;
| label_201:
0x000a60c4 movs r0, 1 | r0 = 1;
| label_202:
0x000a60c6 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 != 0) {
0x000a60c8 cbnz r3, 0xa6102 | goto label_233;
| }
0x000a60ca ldr.w r1, [sl, 0x14] | r1 = *((sl + 0x14));
0x000a60ce cmp r1, 2 |
| if (r1 <= 2) {
0x000a60d0 ble 0xa60fe | goto label_234;
| }
0x000a60d2 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a60d6 sub.w r2, r3, 0x20 | r2 = r3 - 0x20;
0x000a60da add.w r2, r2, r1, lsl 4 | r2 += (r1 << 4);
| do {
0x000a60de ldr r1, [r3, 0x24] | r1 = *((r3 + 0x24));
0x000a60e0 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000a60e2 ldr r1, [r1] | r1 = *(r1);
0x000a60e4 ldrb r4, [r1, 0xc] | r4 = *((r1 + 0xc));
| if (r4 == 0) {
0x000a60e6 cbnz r4, 0xa60f8 |
0x000a60e8 ldr.w r4, [r1, 0xd8] | r4 = *((r1 + 0xd8));
| if (r4 != 0) {
0x000a60ec cbz r4, 0xa60f6 |
0x000a60ee ldrb.w r4, [r4, 0x2b] | r4 = *((r4 + 0x2b));
0x000a60f2 cmp r4, 2 |
| if (r4 == 2) {
0x000a60f4 beq 0xa60f8 | goto label_235;
| }
| }
0x000a60f6 strb r0, [r1, 4] | *((r1 + 4)) = r0;
| }
| label_235:
0x000a60f8 adds r3, 0x10 | r3 += 0x10;
0x000a60fa cmp r2, r3 |
0x000a60fc bne 0xa60de |
| } while (r2 != r3);
| label_234:
0x000a60fe strb.w r0, [sl, 0x55] | *((sl + 0x55)) = r0;
| label_233:
0x000a6102 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a6104 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a6106 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a6108 ldr r3, [r3] | r3 = *(r3);
0x000a610a ldrb r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000a610c cmp r2, 0 |
| if (r2 != 0) {
0x000a610e bne.w 0xa50f2 | goto label_76;
| }
0x000a6112 ldr.w r2, [r3, 0xd8] | r2 = *((r3 + 0xd8));
| if (r2 == 0) {
0x000a6116 cbz r2, 0xa6122 | goto label_236;
| }
0x000a6118 ldrb.w r2, [r2, 0x2b] | r2 = *((r2 + 0x2b));
0x000a611c cmp r2, 2 |
| if (r2 == 2) {
0x000a611e beq.w 0xa50f2 | goto label_76;
| }
| label_236:
0x000a6122 strb r0, [r3, 4] | *((r3 + 4)) = r0;
0x000a6124 b.w 0xa50f2 | goto label_76;
| label_115:
0x000a6128 ldr r3, [pc, 0x32c] | r3 = *(0xa6458);
0x000a612a ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000a612c ldr r1, [r3] | r1 = *(0xa6458);
0x000a612e cmp r1, 0 |
| if (r1 == 0) {
0x000a6130 beq.w 0xa568a | goto label_65;
| }
| label_88:
0x000a6134 mov r0, fp | r0 = fp;
0x000a6136 bl 0x2bf24 | fcn_0002bf24 (r0, r1, r2);
0x000a613a b.w 0xa568a | goto label_65;
| label_166:
0x000a613e mov r0, r5 | r0 = r5;
0x000a6140 bl 0x180b0 | r0 = fcn_000180b0 (r0);
0x000a6144 mov r2, r0 | r2 = r0;
0x000a6146 mov r0, fp | r0 = fp;
0x000a6148 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000a614a bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a614e b.w 0xa568a | goto label_65;
| label_183:
0x000a6152 ldrd r2, r3, [sp, 0x88] | __asm ("ldrd r2, r3, [var_88h]");
0x000a6156 mov r0, fp | r0 = fp;
0x000a6158 bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a615c b.w 0xa3d88 | goto label_6;
| label_204:
0x000a6160 ldr r1, [pc, 0x2f8] |
0x000a6162 add r1, pc | r1 = 0x14c5c2;
0x000a6164 b.w 0xa50fe | goto label_77;
| label_119:
0x000a6168 ldrb.w r2, [sl, 0x52] | r2 = *((sl + 0x52));
0x000a616c b.w 0xa5684 | goto label_78;
| label_184:
0x000a6170 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a6172 mov r0, fp | r0 = fp;
0x000a6174 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000a6176 ldr r2, [r3, 0x50] | r2 = *((r3 + 0x50));
0x000a6178 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000a617a bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a617e b.w 0xa568a | goto label_65;
| label_200:
0x000a6182 ldr r0, [sp, 0x20] | r0 = s2;
0x000a6184 movs r2, 0 | r2 = 0;
0x000a6186 movs r1, 1 | r1 = 1;
0x000a6188 bl 0xe7e8 | r0 = fcn_0000e7e8 (r0, r1, r2);
0x000a618c subs r7, r0, 0 | r7 = r0 - 0;
0x000a618e it ne |
| if (r7 == r0) {
0x000a6190 movne r7, 1 | r7 = 1;
| }
0x000a6192 b.w 0xa505a | goto label_79;
| label_152:
0x000a6196 ldr r5, [pc, 0x2c8] |
0x000a6198 add r5, pc | r5 = 0x14c5fe;
0x000a619a addw r5, r5, 0xa28 | __asm ("addw r5, r5, aav.0x000000ff");
0x000a619e b.w 0xa46c6 | goto label_80;
| label_185:
0x000a61a2 ldr r2, [pc, 0x2c0] |
0x000a61a4 movs r1, 2 | r1 = 2;
0x000a61a6 add r2, pc |
0x000a61a8 add.w r2, r2, 0xa80 | r2 = 0x14d090;
0x000a61ac bl 0x1b57c | fcn_0001b57c (r0, r1, r2);
0x000a61b0 add r1, sp, 0x88 | r1 += var_88h;
0x000a61b2 mov r4, r0 | r4 = r0;
0x000a61b4 str r5, [r0, 0x1c] | *((r0 + 0x1c)) = r5;
0x000a61b6 str.w r8, [r0, 4] | __asm ("str.w r8, [r0, 4]");
0x000a61ba str.w r8, [r0, 0x18] | __asm ("str.w r8, [r0, 0x18]");
0x000a61be ldr r0, [sp, 0x20] | r0 = s2;
0x000a61c0 str r6, [sp, 0x88] | var_88h = r6;
0x000a61c2 bl 0xc338 | fcn_0000c338 (r0, r1);
0x000a61c6 ldr r3, [sp, 0x88] | r3 = var_88h;
0x000a61c8 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x000a61ca movs r3, 1 | r3 = 1;
0x000a61cc strh r3, [r4, 0x16] | *((r4 + 0x16)) = r3;
0x000a61ce b.w 0xa3fb6 | goto label_8;
| label_120:
0x000a61d2 movs r4, 1 | r4 = 1;
0x000a61d4 b.w 0xa3ffc | goto label_81;
| label_156:
0x000a61d8 movs r3, 0 | r3 = 0;
0x000a61da mov r2, r8 | r2 = r8;
0x000a61dc str r3, [sp] | *(sp) = r3;
0x000a61de movs r1, 0xac | r1 = 0xac;
0x000a61e0 mov r3, r4 | r3 = r4;
0x000a61e2 mov r0, fp | r0 = fp;
0x000a61e4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a61e8 b.w 0xa47f4 | goto label_82;
| label_154:
0x000a61ec ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a61ee ldr r1, [sp, 0x88] | r1 = var_88h;
0x000a61f0 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a61f2 bl 0x188ac | fcn_000188ac (r0, r1);
0x000a61f6 b.w 0xa474a | goto label_83;
| label_118:
0x000a61fa ldr r0, [pc, 0x26c] |
0x000a61fc ldr r1, [sp, 0x20] | r1 = s2;
0x000a61fe add r0, pc | r0 = 0x14c66c;
0x000a6200 blx 0x852c | strncmp (r0, r1, r2);
0x000a6204 str r0, [r4] | *(r4) = r0;
0x000a6206 b.w 0xa3fb6 | goto label_8;
| label_129:
0x000a620a ldr r1, [pc, 0x260] |
0x000a620c mov r0, sb | r0 = sb;
0x000a620e add r1, pc | r1 = 0x14c680;
0x000a6210 bl 0x25778 | fcn_00025778 (r0);
0x000a6214 b.w 0xa3fb6 | goto label_8;
| label_128:
0x000a6218 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a621a mov r0, fp | r0 = fp;
0x000a621c ldrb r2, [r3, 8] | r2 = *((r3 + 8));
0x000a621e subs r2, 1 | r2--;
0x000a6220 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000a6222 bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a6226 b.w 0xa568a | goto label_65;
| label_164:
0x000a622a ldr r5, [sp, 0x34] | r5 = var_34h;
0x000a622c mov r0, fp | r0 = fp;
0x000a622e mov r1, r5 | r1 = r5;
0x000a6230 bl 0x2941c | fcn_0002941c (r0, r1, r2, r3);
0x000a6234 ldrd r2, r1, [sl, 0x20] | __asm ("ldrd r2, r1, [sl, 0x20]");
0x000a6238 mov r0, fp | r0 = fp;
0x000a623a ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x000a623c ldr r3, [sp, 0x20] | r3 = s2;
0x000a623e ands r2, r4 | r2 &= r4;
0x000a6240 ldr r4, [r5, 0xc] | r4 = *((r5 + 0xc));
0x000a6242 ands r1, r4 | r1 &= r4;
0x000a6244 orrs r2, r1 | r2 |= r1;
0x000a6246 ite ne |
| if (r2 == r1) {
0x000a6248 movne r2, 1 | r2 = 1;
| }
| if (r2 != r1) {
0x000a624a moveq r2, 0 | r2 = 0;
| }
0x000a624c bl 0x2b7b8 | fcn_0002b7b8 (r0, r1, r2, r3);
0x000a6250 b.w 0xa568a | goto label_65;
| label_155:
0x000a6254 bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x000a6258 b.w 0xa4768 | goto label_84;
| label_131:
0x000a625c mov.w r0, -1 | r0 = -1;
0x000a6260 mov.w r1, -1 | r1 = -1;
0x000a6264 blx 0x83fc | r0 = fcn_000083fc ();
0x000a6268 mov r3, r0 | r3 = r0;
0x000a626a mov r2, r1 | r2 = r1;
0x000a626c ldrd r0, r1, [sp, 0x88] | __asm ("ldrd r0, r1, [var_88h]");
0x000a6270 cmp r0, 1 |
0x000a6272 sbcs r4, r1, 0 | __asm ("sbcs r4, r1, 0");
| if (r0 < 1) {
0x000a6276 blt.w 0xa41e6 | goto label_85;
| }
0x000a627a cmp r0, r3 |
0x000a627c sbcs.w r4, r1, r2 | __asm ("sbcs.w r4, r1, r2");
| if (r0 < r3) {
0x000a6280 blt 0xa6288 | goto label_237;
| }
0x000a6282 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x000a6284 bne.w 0xa41e6 | goto label_85;
| }
| label_237:
0x000a6288 blx 0x83fc | fcn_000083fc ();
0x000a628c b.w 0xa41e6 | goto label_85;
| label_130:
0x000a6290 ldrd r0, r1, [sp, 0x88] | __asm ("ldrd r0, r1, [var_88h]");
0x000a6294 blx 0x8648 | fcn_00008648 ();
0x000a6298 b.w 0xa41ba | goto label_86;
| label_187:
0x000a629c cmp.w r8, -1 |
0x000a62a0 mov.w r1, 0 | r1 = 0;
0x000a62a4 itt ne |
| if (r8 == -1) {
0x000a62a6 ldrne r2, [sl, 0x10] | r2 = *((sl + 0x10));
| }
| if (r8 != -1) {
0x000a62aa lsl.w r3, r8, 4 | r3 = r8 << 4;
| }
0x000a62ae mov r0, sb | r0 = sb;
0x000a62b0 it ne |
| if (r8 == -1) {
0x000a62b2 ldrne r3, [r2, r3] | r3 = *((r2 + r3));
| }
0x000a62b4 ldr r2, [sp, 0x20] | r2 = s2;
0x000a62b6 bl 0x894a4 | fcn_000894a4 (r0, r1, r2, r3, r4, r5, r6);
0x000a62ba ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x000a62bc str r0, [sp, 0x3c] | var_3ch = r0;
0x000a62be str r3, [sp, 0x70] | var_70h = r3;
0x000a62c0 b.w 0xa4da0 | goto label_87;
| label_147:
0x000a62c4 mov r0, sb | r0 = sb;
0x000a62c6 bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x000a62ca cmp r0, 0 |
| if (r0 != 0) {
0x000a62cc bne.w 0xa568a | goto label_65;
| }
0x000a62d0 ldr.w r2, [sb] | r2 = *(sb);
0x000a62d4 ldr r3, [pc, 0x198] |
0x000a62d6 ldrb.w r2, [r2, 0x50] | r2 = *((r2 + 0x50));
0x000a62da add r3, pc | r3 = 0x14c74e;
0x000a62dc add.w r3, r3, r2, lsl 3 | r3 += (r2 << 3);
0x000a62e0 ldr.w r1, [r3, 0x90] | r1 = *((r3 + 0x90));
0x000a62e4 cmp r1, 0 |
| if (r1 != 0) {
0x000a62e6 bne.w 0xa6134 | goto label_88;
| }
0x000a62ea b.w 0xa568a | goto label_65;
| label_168:
0x000a62ee movs r4, 1 | r4 = 1;
| label_94:
0x000a62f0 mov r0, r5 | r0 = r5;
0x000a62f2 mov r1, r4 | r1 = r4;
0x000a62f4 strb.w r4, [sl, 0x56] | *((sl + 0x56)) = r4;
0x000a62f8 bl 0x183d8 | r0 = fcn_000183d8 (r0, r1);
0x000a62fc cmp r0, 0 |
| if (r0 != 0) {
0x000a62fe bne.w 0xa3fb6 | goto label_8;
| }
0x000a6302 subs r4, 1 | r4--;
0x000a6304 b.w 0xa4a82 | goto label_89;
| label_172:
0x000a6308 ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x000a630c subs r3, 1 | r3--;
0x000a630e cmp r8, r3 |
0x000a6310 str r3, [sp, 0x30] | var_30h = r3;
| if (r8 <= r3) {
0x000a6312 ble.w 0xa4b24 | goto label_90;
| }
0x000a6316 b.w 0xa533e | goto label_91;
| label_113:
0x000a631a ldr r1, [pc, 0x158] |
0x000a631c ldr r0, [sp, 0x20] | r0 = s2;
0x000a631e add r1, pc | r1 = 0x14c798;
0x000a6320 bl 0x8940 | r0 = fcn_00008940 (r0);
| if (r0 == 0) {
0x000a6324 cbnz r0, 0xa6348 |
0x000a6326 movs r5, 2 | r5 = 2;
0x000a6328 b.w 0xa3ed4 | goto label_92;
| label_182:
0x000a632c mov r0, r7 | r0 = r7;
0x000a632e bl 0x95d0 | fcn_000095d0 (r0);
0x000a6332 b.w 0xa4cb2 | goto label_93;
| label_217:
0x000a6336 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000a6338 ldr r1, [sp, 0x20] | r1 = s2;
0x000a633a ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a633c bl 0x188ac | r0 = fcn_000188ac (r0, r1);
0x000a6340 asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x000a6342 mov r2, r0 | r2 = r0;
0x000a6344 b.w 0xa5684 | goto label_78;
| }
0x000a6348 ldr r1, [pc, 0x12c] |
0x000a634a ldr r0, [sp, 0x20] | r0 = s2;
0x000a634c add r1, pc | r1 = 0x14c7c8;
0x000a634e bl 0x8940 | r0 = fcn_00008940 (r0);
0x000a6352 cmp r0, 0 |
0x000a6354 it eq |
| if (r0 != 0) {
0x000a6356 moveq r5, 3 | r5 = 3;
| }
0x000a6358 b.w 0xa3ed4 | goto label_92;
| label_169:
0x000a635c movs r4, 2 | r4 = 2;
0x000a635e b 0xa62f0 | goto label_94;
| label_195:
0x000a6360 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a6362 movs r1, 2 | r1 = 2;
0x000a6364 ldr r2, [sp, 0x20] | r2 = s2;
0x000a6366 mov r0, sb | r0 = sb;
0x000a6368 bl 0x894a4 | r0 = fcn_000894a4 (r0, r1, r2, r3, r4, r5, r6);
0x000a636c cmp r0, 0 |
| if (r0 == 0) {
0x000a636e beq.w 0xa3fb6 | goto label_8;
| }
0x000a6372 ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x000a6374 lsls r4, r2, 0x18 | r4 = r2 << 0x18;
| if (r4 >= r2) {
0x000a6376 bpl.w 0xa3fb6 | goto label_8;
| }
0x000a637a ldr r4, [r0, 8] | r4 = *((r0 + 8));
| label_96:
0x000a637c cmp r4, 0 |
| if (r4 == 0) {
0x000a637e beq.w 0xa3fb6 | goto label_8;
| }
0x000a6382 ldrb.w r3, [r4, 0x37] | r3 = *((r4 + 0x37));
0x000a6386 and r3, r3, 3 | r3 &= 3;
0x000a638a cmp r3, 2 |
| if (r3 == 2) {
0x000a638c beq.w 0xa4f4e | goto label_95;
| }
0x000a6390 ldr r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x000a6392 b 0xa637c | goto label_96;
| label_203:
0x000a6394 ldrb.w r3, [sl, 0x55] | r3 = *((sl + 0x55));
0x000a6398 b.w 0xa50f4 | goto label_97;
| label_117:
0x000a639c mov r0, sb | r0 = sb;
0x000a639e bl 0x5ad90 | fcn_0005ad90 (r0);
0x000a63a2 b.w 0xa3f9e | goto label_98;
| label_116:
0x000a63a6 ldr r1, [pc, 0xd4] |
0x000a63a8 mov r0, sb | r0 = sb;
0x000a63aa add r1, pc | r1 = 0x14c82c;
0x000a63ac bl 0x25778 | fcn_00025778 (r0);
0x000a63b0 b.w 0xa3fb6 | goto label_8;
| label_188:
0x000a63b4 movs r3, 0 | r3 = 0;
0x000a63b6 str r4, [sp, 0x7c] | var_7ch = r4;
0x000a63b8 str r4, [sp, 0x70] | var_70h = r4;
0x000a63ba str r3, [sp, 0x3c] | var_3ch = r3;
0x000a63bc b.w 0xa4da0 | goto label_87;
| label_139:
0x000a63c0 movs r3, 0 | r3 = 0;
0x000a63c2 mov.w r6, 0x8000 | r6 = fcn.00008000;
0x000a63c6 movt r3, 0xfff8 | r3 = (r3 & 0xFFFF) | 0xfff80000;
0x000a63ca sub.w r1, r1, 0x80000 | r1 -= 0x80000;
0x000a63ce movt r6, 0xffff | r6 = (r6 & 0xFFFF) | 0xffff0000;
0x000a63d2 str r3, [sp, 0x30] | var_30h = r3;
0x000a63d4 b.w 0xa43fa | goto label_61;
| label_194:
0x000a63d8 mov.w r1, 0x8000 |
0x000a63dc movt r1, 0xffff | r1 = 0xNaN;
0x000a63e0 b.w 0xa4eb8 | goto label_99;
| label_196:
0x000a63e4 mov.w r1, 0x8000 |
0x000a63e8 movt r1, 0xffff | r1 = 0xNaN;
0x000a63ec b.w 0xa4f5e | goto label_100;
| label_133:
0x000a63f0 mov.w r1, 0x8000 |
0x000a63f4 movt r1, 0xffff | r1 = 0xNaN;
0x000a63f8 b.w 0xa4286 | goto label_101;
| label_136:
0x000a63fc ldr r1, [pc, 0x80] |
0x000a63fe add r1, pc | r1 = 0x14c882;
0x000a6400 b.w 0xa4308 | goto label_15;
| label_135:
0x000a6404 ldr.w ip, [sp, 0x30] | ip = var_30h;
0x000a6408 b.w 0xa42f0 | goto label_14;
0x000b7458 movs r7, r4 | r7 = r4;
0x000b745a movs r2, r5 | r2 = r5;
0x000b745c lsls r7, r0, 1 | r7 = r0 << 1;
0x000b745e lsls r7, r4, 1 | r7 = r4 << 1;
0x000b7460 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7462 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7464 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7466 lsls r7, r2, 1 | r7 = r2 << 1;
0x000b7468 lsls r7, r1, 3 | r7 = r1 << 3;
0x000b746a movs r2, r7 | r2 = r7;
0x000b746c movs r7, r6 | r7 = r6;
0x000b746e lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7470 movs r2, r5 | r2 = r5;
0x000b7472 lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7474 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7476 lsls r7, r0, 0xb | r7 = r0 << 0xb;
0x000b7478 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b747a lsls r7, r0, 1 | r7 = r0 << 1;
0x000b747c lsls r7, r0, 1 | r7 = r0 << 1;
0x000b747e lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7480 movs r4, r5 | r4 = r5;
0x000b7482 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7484 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7486 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7488 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b748a movs r4, r5 | r4 = r5;
0x000b748c lsls r7, r0, 2 | r7 = r0 << 2;
0x000b748e movs r7, r4 | r7 = r4;
0x000b7490 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7492 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7494 lsls r7, r4, 1 | r7 = r4 << 1;
0x000b7496 movs r4, r5 | r4 = r5;
0x000b7498 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b749a movs r2, r5 | r2 = r5;
0x000b749c lsls r7, r4, 4 | r7 = r4 << 4;
0x000b749e lsls r7, r4, 1 | r7 = r4 << 1;
0x000b74a0 lsls r7, r0, 0xb | r7 = r0 << 0xb;
0x000b74a2 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b74a4 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b74a6 lsls r7, r4, 2 | r7 = r4 << 2;
0x000b74a8 movs r4, r5 | r4 = r5;
0x000b74aa movs r7, r4 | r7 = r4;
0x000b74ac lsls r2, r5, 1 | r2 = r5 << 1;
0x000b74ae lsls r4, r5, 2 | r4 = r5 << 2;
0x000b74b0 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b74b2 movs r2, r5 | r2 = r5;
0x000b74b4 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b74b6 movs r4, r5 | r4 = r5;
0x000b74b8 movs r7, r4 | r7 = r4;
0x000b74ba lsls r7, r0, 1 | r7 = r0 << 1;
0x000b74bc lsls r4, r1, 1 | r4 = r1 << 1;
0x000b74be lsls r5, r1, 5 | r5 = r1 << 5;
0x000b74c0 movs r5, r6 | r5 = r6;
0x000b74c2 movs r7, r6 | r7 = r6;
0x000b74c4 movs r4, r5 | r4 = r5;
0x000b74c6 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b74c8 lsls r7, r0, 4 | r7 = r0 << 4;
0x000b74ca lsls r7, r0, 1 | r7 = r0 << 1;
0x000b74cc lsls r7, r0, 0xb | r7 = r0 << 0xb;
0x000b74ce lsls r7, r4, 3 | r7 = r4 << 3;
0x000b74d0 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b74d2 lsls r7, r4, 2 | r7 = r4 << 2;
0x000b74d4 movs r4, r5 | r4 = r5;
0x000b74d6 movs r7, r4 | r7 = r4;
0x000b74d8 movs r2, r5 | r2 = r5;
0x000b74da movs r4, r5 | r4 = r5;
0x000b74dc movs r2, r5 | r2 = r5;
0x000b74de lsls r4, r1, 2 | r4 = r1 << 2;
0x000b74e0 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b74e2 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b74e4 movs r4, r5 | r4 = r5;
0x000b74e6 movs r4, r5 | r4 = r5;
0x000b74e8 movs r2, r5 | r2 = r5;
0x000b74ea lsls r7, r0, 1 | r7 = r0 << 1;
0x000b74ec lsls r7, r4, 1 | r7 = r4 << 1;
0x000b74ee lsls r4, r1, 1 | r4 = r1 << 1;
0x000b74f0 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b74f2 movs r2, r7 | r2 = r7;
0x000b74f4 movs r7, r4 | r7 = r4;
0x000b74f6 lsls r7, r1, 3 | r7 = r1 << 3;
0x000b74f8 movs r4, r5 | r4 = r5;
0x000b74fa movs r7, r4 | r7 = r4;
0x000b74fc lsls r7, r0, 3 | r7 = r0 << 3;
0x000b74fe lsls r7, r4, 1 | r7 = r4 << 1;
0x000b7500 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b7502 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7504 movs r7, r4 | r7 = r4;
0x000b7506 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7508 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b750a lsls r7, r4, 1 | r7 = r4 << 1;
0x000b750c lsls r7, r0, 6 | r7 = r0 << 6;
0x000b750e lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7510 movs r4, r5 | r4 = r5;
0x000b7512 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7514 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7516 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7518 movs r4, r5 | r4 = r5;
0x000b751a movs r7, r4 | r7 = r4;
0x000b751c movs r2, r5 | r2 = r5;
0x000b751e lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7520 lsls r7, r5, 1 | r7 = r5 << 1;
0x000b7522 lsls r2, r3, 3 | r2 = r3 << 3;
0x000b7524 movs r7, r6 | r7 = r6;
0x000b7526 movs r2, r7 | r2 = r7;
0x000b7528 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b752a lsls r7, r0, 4 | r7 = r0 << 4;
0x000b752c lsls r7, r4, 1 | r7 = r4 << 1;
0x000b752e lsls r7, r4, 0xb | r7 = r4 << 0xb;
0x000b7530 lsls r7, r0, 5 | r7 = r0 << 5;
0x000b7532 lsls r7, r4, 2 | r7 = r4 << 2;
0x000b7534 movs r7, r4 | r7 = r4;
0x000b7536 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7538 lsls r2, r1, 2 | r2 = r1 << 2;
0x000b753a lsls r4, r5, 1 | r4 = r5 << 1;
0x000b753c lsls r4, r1, 2 | r4 = r1 << 2;
0x000b753e lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7540 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7542 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7544 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7546 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7548 lsls r7, r5, 3 | r7 = r5 << 3;
0x000b754a movs r2, r7 | r2 = r7;
0x000b754c lsls r2, r1, 1 | r2 = r1 << 1;
0x000b754e lsls r7, r0, 4 | r7 = r0 << 4;
0x000b7550 lsls r7, r4, 1 | r7 = r4 << 1;
0x000b7552 lsls r7, r4, 0xb | r7 = r4 << 0xb;
0x000b7554 lsls r7, r0, 5 | r7 = r0 << 5;
0x000b7556 lsls r7, r4, 2 | r7 = r4 << 2;
0x000b7558 movs r4, r5 | r4 = r5;
0x000b755a movs r7, r4 | r7 = r4;
0x000b755c movs r2, r5 | r2 = r5;
0x000b755e movs r4, r5 | r4 = r5;
0x000b7560 lsls r2, r5, 2 | r2 = r5 << 2;
0x000b7562 movs r4, r5 | r4 = r5;
0x000b7564 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7566 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7568 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b756a lsls r2, r1, 1 | r2 = r1 << 1;
0x000b756c movs r7, r4 | r7 = r4;
0x000b756e lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7570 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7572 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7574 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7576 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7578 lsls r7, r0, 4 | r7 = r0 << 4;
0x000b757a lsls r7, r4, 1 | r7 = r4 << 1;
0x000b757c lsls r7, r4, 0x14 | r7 = r4 << 0x14;
0x000b757e movs r7, r4 | r7 = r4;
0x000b7580 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7582 lsls r4, r1, 2 | r4 = r1 << 2;
0x000b7584 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7586 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7588 movs r4, r5 | r4 = r5;
0x000b758a movs r7, r4 | r7 = r4;
0x000b758c movs r2, r5 | r2 = r5;
0x000b758e lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7590 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7592 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7594 lsls r7, r1, 3 | r7 = r1 << 3;
0x000b7596 movs r2, r7 | r2 = r7;
0x000b7598 lsls r7, r0, 3 | r7 = r0 << 3;
0x000b759a lsls r2, r1, 1 | r2 = r1 << 1;
0x000b759c lsls r7, r0, 9 | r7 = r0 << 9;
0x000b759e lsls r7, r0, 0xc | r7 = r0 << 0xc;
0x000b75a0 lsls r7, r4, 4 | r7 = r4 << 4;
0x000b75a2 movs r7, r4 | r7 = r4;
0x000b75a4 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b75a6 movs r4, r5 | r4 = r5;
0x000b75a8 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b75aa lsls r4, r5, 1 | r4 = r5 << 1;
0x000b75ac movs r4, r5 | r4 = r5;
0x000b75ae lsls r2, r1, 4 | r2 = r1 << 4;
0x000b75b0 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b75b2 movs r5, r6 | r5 = r6;
0x000b75b4 lsls r7, r0, 0x18 | r7 = r0 << 0x18;
0x000b75b6 movs r4, r5 | r4 = r5;
0x000b75b8 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b75ba lsls r4, r5, 3 | r4 = r5 << 3;
0x000b75bc movs r7, r6 | r7 = r6;
0x000b75be lsls r7, r0, 3 | r7 = r0 << 3;
0x000b75c0 movs r6, r4 | r6 = r4;
0x000b75c2 lsls r4, r1, 4 | r4 = r1 << 4;
0x000b75c4 movs r5, r6 | r5 = r6;
0x000b75c6 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b75c8 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b75ca lsls r7, r0, 1 | r7 = r0 << 1;
0x000b75cc movs r7, r4 | r7 = r4;
0x000b75ce lsls r7, r0, 1 | r7 = r0 << 1;
0x000b75d0 movs r7, r4 | r7 = r4;
0x000b75d2 movs r7, r4 | r7 = r4;
0x000b75d4 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b75d6 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b75d8 lsls r7, r4, 1 | r7 = r4 << 1;
0x000b75da movs r7, r4 | r7 = r4;
0x000b75dc movs r7, r4 | r7 = r4;
0x000b75de lsls r7, r0, 1 | r7 = r0 << 1;
0x000b75e0 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b75e2 movs r4, r5 | r4 = r5;
0x000b75e4 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b75e6 lsls r4, r1, 3 | r4 = r1 << 3;
0x000b75e8 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b75ea movs r7, r4 | r7 = r4;
0x000b75ec lsls r7, r4, 2 | r7 = r4 << 2;
0x000b75ee movs r6, r4 | r6 = r4;
0x000b75f0 lsls r4, r1, 3 | r4 = r1 << 3;
0x000b75f2 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b75f4 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b75f6 movs r7, r4 | r7 = r4;
0x000b75f8 lsls r2, r7, 1 | r2 = r7 << 1;
0x000b75fa lsls r5, r6, 7 | r5 = r6 << 7;
0x000b75fc movs r2, r7 | r2 = r7;
0x000b75fe movs r5, r6 | r5 = r6;
0x000b7600 lsls r2, r7, 1 | r2 = r7 << 1;
0x000b7602 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7604 lsls r2, r3, 3 | r2 = r3 << 3;
0x000b7606 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7608 lsls r7, r1, 5 | r7 = r1 << 5;
0x000b760a movs r2, r7 | r2 = r7;
0x000b760c movs r4, r5 | r4 = r5;
0x000b760e movs r2, r7 | r2 = r7;
0x000b7610 movs r4, r5 | r4 = r5;
0x000b7612 movs r2, r7 | r2 = r7;
0x000b7614 movs r4, r5 | r4 = r5;
0x000b7616 movs r6, r6 |
0x000b7618 movs r2, r6 | r2 = r6;
0x000b761a movs r6, r6 |
0x000b761c movs r2, r6 | r2 = r6;
0x000b761e lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7620 lsls r7, r0, 4 | r7 = r0 << 4;
0x000b7622 lsls r7, r0, 0x12 | r7 = r0 << 0x12;
0x000b7624 lsls r4, r1, 7 | r4 = r1 << 7;
0x000b7626 movs r2, r5 | r2 = r5;
0x000b7628 lsls r4, r5, 2 | r4 = r5 << 2;
0x000b762a movs r5, r6 | r5 = r6;
0x000b762c lsls r4, r1, 1 | r4 = r1 << 1;
0x000b762e lsls r7, r4, 2 | r7 = r4 << 2;
0x000b7630 lsls r4, r5, 5 | r4 = r5 << 5;
0x000b7632 lsls r4, r1, 0x12 | r4 = r1 << 0x12;
0x000b7634 lsls r2, r3, 4 | r2 = r3 << 4;
0x000b7636 movs r4, r5 | r4 = r5;
0x000b7638 lsls r2, r3, 3 | r2 = r3 << 3;
0x000b763a lsls r2, r3, 1 | r2 = r3 << 1;
0x000b763c lsls r5, r6, 2 | r5 = r6 << 2;
0x000b763e lsls r2, r3, 2 | r2 = r3 << 2;
0x000b7640 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7642 lsls r7, r4, 0x15 | r7 = r4 << 0x15;
0x000b7644 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7646 lsls r4, r1, 2 | r4 = r1 << 2;
0x000b7648 movs r2, r5 | r2 = r5;
0x000b764a lsls r4, r1, 3 | r4 = r1 << 3;
0x000b764c movs r2, r5 | r2 = r5;
0x000b764e lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7650 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7652 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7654 movs r7, r4 | r7 = r4;
0x000b7656 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7658 lsls r5, r2, 3 | r5 = r2 << 3;
0x000b765a lsls r7, r0, 3 | r7 = r0 << 3;
0x000b765c lsls r2, r1, 1 | r2 = r1 << 1;
0x000b765e lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7660 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b7662 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7664 movs r7, r4 | r7 = r4;
0x000b7666 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7668 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b766a lsls r2, r5, 3 | r2 = r5 << 3;
0x000b766c lsls r7, r4, 1 | r7 = r4 << 1;
0x000b766e lsls r4, r1, 2 | r4 = r1 << 2;
0x000b7670 lsls r7, r4, 6 | r7 = r4 << 6;
0x000b7672 movs r4, r5 | r4 = r5;
0x000b7674 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7676 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7678 lsls r2, r1, 3 | r2 = r1 << 3;
0x000b767a movs r4, r5 | r4 = r5;
0x000b767c movs r7, r4 | r7 = r4;
0x000b767e movs r2, r5 | r2 = r5;
0x000b7680 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7682 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7684 movs r4, r5 | r4 = r5;
0x000b7686 lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7688 lsls r1, r1, 0x13 | r1 <<= 0x13;
0x000b768a movs r1, r5 | r1 = r5;
0x000b768c movs r1, r5 | r1 = r5;
0x000b768e lsls r7, r4, 0x15 | r7 = r4 << 0x15;
0x000b7690 movs r5, r6 | r5 = r6;
0x000b7692 movs r6, r4 | r6 = r4;
0x000b7694 cmp r1, 0x87 |
0x000b7696 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b7698 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b769a movs r7, r4 | r7 = r4;
0x000b769c lsls r7, r0, 2 | r7 = r0 << 2;
0x000b769e lsls r7, r4, 0x14 | r7 = r4 << 0x14;
0x000b76a0 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b76a2 lsls r7, r4, 0x10 | r7 = r4 << 0x10;
0x000b76a4 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b76a6 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b76a8 movs r7, r4 | r7 = r4;
0x000b76aa lsls r7, r0, 2 | r7 = r0 << 2;
0x000b76ac lsls r7, r4, 7 | r7 = r4 << 7;
0x000b76ae lsls r7, r4, 0x1c | r7 = r4 << 0x1c;
0x000b76b0 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b76b2 lsrs r7, r4, 1 | r7 = r4 >> 1;
0x000b76b4 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b76b6 lsls r5, r6, 4 | r5 = r6 << 4;
0x000b76b8 lsls r7, r1, 0xa | r7 = r1 << 0xa;
0x000b76ba lsls r7, r0, 8 | r7 = r0 << 8;
0x000b76bc lsls r2, r3, 5 | r2 = r3 << 5;
0x000b76be lsrs r7, r4, 0xa | r7 = r4 >> 0xa;
0x000b76c0 movs r1, r6 | r1 = r6;
0x000b76c2 ldr r5, [pc, 0x21c] | r5 = *(0xb78e2);
0x000b76c4 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b76c6 lsls r7, r4, 8 | r7 = r4 << 8;
0x000b76c8 movs r5, r7 | r5 = r7;
0x000b76ca lsls r7, r0, 0xd | r7 = r0 << 0xd;
0x000b76cc movs r6, r6 |
0x000b76ce movs r2, r6 | r2 = r6;
0x000b76d0 lsrs r7, r4, 5 | r7 = r4 >> 5;
0x000b76d2 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b76d4 lsls r6, r5, 1 | r6 = r5 << 1;
0x000b76d6 lsls r7, r4, 6 | r7 = r4 << 6;
0x000b76d8 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b76da lsls r4, r5, 1 | r4 = r5 << 1;
0x000b76dc lsls r7, r0, 9 | r7 = r0 << 9;
0x000b76de lsls r4, r5, 1 | r4 = r5 << 1;
0x000b76e0 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b76e2 lsls r7, r0, 9 | r7 = r0 << 9;
0x000b76e4 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b76e6 lsls r7, r4, 6 | r7 = r4 << 6;
0x000b76e8 lsls r7, r4, 1 | r7 = r4 << 1;
0x000b76ea lsls r4, r1, 1 | r4 = r1 << 1;
0x000b76ec lsls r7, r0, 0x1a | r7 = r0 << 0x1a;
0x000b76ee lsls r4, r1, 1 | r4 = r1 << 1;
0x000b76f0 movs r2, r5 | r2 = r5;
0x000b76f2 lsls r4, r5, 3 | r4 = r5 << 3;
0x000b76f4 lsls r2, r1, 4 | r2 = r1 << 4;
0x000b76f6 movs r4, r5 | r4 = r5;
0x000b76f8 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b76fa lsls r4, r5, 5 | r4 = r5 << 5;
0x000b76fc lsls r5, r6, 1 | r5 = r6 << 1;
0x000b76fe movs r6, r4 | r6 = r4;
0x000b7700 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7702 movs r7, r6 | r7 = r6;
0x000b7704 movs r7, r4 | r7 = r4;
0x000b7706 movs r4, r5 | r4 = r5;
0x000b7708 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b770a lsls r7, r1, 5 | r7 = r1 << 5;
0x000b770c lsls r5, r2, 3 | r5 = r2 << 3;
0x000b770e movs r1, r6 | r1 = r6;
0x000b7710 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7712 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7714 movs r5, r7 | r5 = r7;
0x000b7716 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7718 lsls r7, r4, 0x11 | r7 = r4 << 0x11;
0x000b771a movs r6, r4 | r6 = r4;
0x000b771c lsls r7, r0, 0x1a | r7 = r0 << 0x1a;
0x000b771e lsls r7, r4, 0x14 | r7 = r4 << 0x14;
0x000b7720 movs r4, r5 | r4 = r5;
0x000b7722 movs r7, r4 | r7 = r4;
0x000b7724 lsrs r7, r0, 3 | r7 = r0 >> 3;
0x000b7726 lsls r7, r4, 0xe | r7 = r4 << 0xe;
0x000b7728 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b772a lsls r2, r1, 2 | r2 = r1 << 2;
0x000b772c lsls r4, r1, 1 | r4 = r1 << 1;
0x000b772e lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7730 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7732 movs r4, r5 | r4 = r5;
0x000b7734 lsls r2, r1, 3 | r2 = r1 << 3;
0x000b7736 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7738 movs r2, r7 | r2 = r7;
0x000b773a lsls r5, r2, 1 | r5 = r2 << 1;
0x000b773c lsls r5, r1, 5 | r5 = r1 << 5;
0x000b773e lsls r7, r0, 0xf | r7 = r0 << 0xf;
0x000b7740 lsls r7, r4, 2 | r7 = r4 << 2;
0x000b7742 lsls r7, r0, 0x16 | r7 = r0 << 0x16;
0x000b7744 lsls r2, r5, 8 | r2 = r5 << 8;
0x000b7746 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7748 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b774a lsls r5, r1, 5 | r5 = r1 << 5;
0x000b774c movs r7, r5 | r7 = r5;
0x000b774e lsls r2, r3, 0x11 | r2 = r3 << 0x11;
0x000b7750 lsls r7, r4, 0xb | r7 = r4 << 0xb;
0x000b7752 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7754 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7756 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7758 lsls r7, r4, 0x1a | r7 = r4 << 0x1a;
0x000b775a movs r2, r5 | r2 = r5;
0x000b775c movs r4, r5 | r4 = r5;
0x000b775e movs r2, r5 | r2 = r5;
0x000b7760 lsls r4, r5, 3 | r4 = r5 << 3;
0x000b7762 movs r4, r5 | r4 = r5;
0x000b7764 movs r2, r5 | r2 = r5;
0x000b7766 movs r4, r5 | r4 = r5;
0x000b7768 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b776a lsls r4, r1, 4 | r4 = r1 << 4;
0x000b776c lsls r2, r1, 3 | r2 = r1 << 3;
0x000b776e lsls r4, r1, 5 | r4 = r1 << 5;
0x000b7770 movs r4, r5 | r4 = r5;
0x000b7772 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7774 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7776 lsls r5, r6, 3 | r5 = r6 << 3;
0x000b7778 movs r6, r4 | r6 = r4;
0x000b777a lsls r5, r2, 3 | r5 = r2 << 3;
0x000b777c lsls r4, r1, 2 | r4 = r1 << 2;
0x000b777e movs r2, r5 | r2 = r5;
0x000b7780 lsls r7, r4, 0x17 | r7 = r4 << 0x17;
0x000b7782 movs r4, r5 | r4 = r5;
0x000b7784 movs r2, r5 | r2 = r5;
0x000b7786 lsls r4, r5, 2 | r4 = r5 << 2;
0x000b7788 movs r2, r5 | r2 = r5;
0x000b778a movs r4, r5 | r4 = r5;
0x000b778c lsls r2, r5, 2 | r2 = r5 << 2;
0x000b778e movs r4, r5 | r4 = r5;
0x000b7790 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7792 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7794 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7796 lsls r5, r6, 3 | r5 = r6 << 3;
0x000b7798 lsls r2, r3, 5 | r2 = r3 << 5;
0x000b779a lsls r4, r5, 4 | r4 = r5 << 4;
0x000b779c lsls r2, r7, 4 | r2 = r7 << 4;
0x000b779e lsls r4, r1, 1 | r4 = r1 << 1;
0x000b77a0 movs r2, r5 | r2 = r5;
0x000b77a2 lsls r7, r0, 0xf | r7 = r0 << 0xf;
0x000b77a4 movs r2, r5 | r2 = r5;
0x000b77a6 lsls r4, r1, 2 | r4 = r1 << 2;
0x000b77a8 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b77aa lsls r4, r1, 1 | r4 = r1 << 1;
0x000b77ac movs r2, r5 | r2 = r5;
0x000b77ae movs r4, r5 | r4 = r5;
0x000b77b0 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b77b2 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b77b4 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b77b6 lsls r7, r0, 0x16 | r7 = r0 << 0x16;
0x000b77b8 movs r4, r5 | r4 = r5;
0x000b77ba movs r2, r5 | r2 = r5;
0x000b77bc lsls r4, r1, 1 | r4 = r1 << 1;
0x000b77be lsls r2, r5, 1 | r2 = r5 << 1;
0x000b77c0 movs r4, r5 | r4 = r5;
0x000b77c2 movs r2, r5 | r2 = r5;
0x000b77c4 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b77c6 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b77c8 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b77ca lsls r7, r0, 0x12 | r7 = r0 << 0x12;
0x000b77cc lsls r2, r1, 4 | r2 = r1 << 4;
0x000b77ce lsls r4, r1, 4 | r4 = r1 << 4;
0x000b77d0 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b77d2 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b77d4 lsls r5, r6, 2 | r5 = r6 << 2;
0x000b77d6 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b77d8 lsls r7, r4, 1 | r7 = r4 << 1;
0x000b77da lsls r5, r1, 5 | r5 = r1 << 5;
0x000b77dc lsls r7, r0, 0xf | r7 = r0 << 0xf;
0x000b77de lsls r6, r0, 3 | r6 = r0 << 3;
0x000b77e0 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b77e2 lsls r5, r2, 4 | r5 = r2 << 4;
0x000b77e4 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b77e6 movs r5, r6 | r5 = r6;
0x000b77e8 lsls r4, r5, 6 | r4 = r5 << 6;
0x000b77ea movs r2, r5 | r2 = r5;
0x000b77ec lsls r4, r5, 3 | r4 = r5 << 3;
0x000b77ee lsls r7, r0, 2 | r7 = r0 << 2;
0x000b77f0 movs r4, r5 | r4 = r5;
0x000b77f2 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b77f4 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b77f6 movs r4, r5 | r4 = r5;
0x000b77f8 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b77fa lsls r5, r0, 0x16 | r5 = r0 << 0x16;
0x000b77fc lsls r6, r4, 0x1f | r6 = r4 << 0x1f;
0x000b77fe lsls r5, r4, 6 | r5 = r4 << 6;
0x000b7800 movs r6, r4 | r6 = r4;
0x000b7802 lsls r5, r0, 0x11 | r5 = r0 << 0x11;
0x000b7804 lsls r6, r4, 0x12 | r6 = r4 << 0x12;
0x000b7806 lsls r4, r5, 0x13 | r4 = r5 << 0x13;
0x000b7808 lsls r4, r1, 2 | r4 = r1 << 2;
0x000b780a asrs r6, r3, 0xb | r6 = r3 >> 0xb;
0x000b780c lsls r5, r0, 4 | r5 = r0 << 4;
0x000b780e lsrs r6, r3, 0x11 | r6 = r3 >> 0x11;
0x000b7810 lsls r5, r0, 4 | r5 = r0 << 4;
0x000b7812 lsls r1, r1, 4 | r1 <<= 4;
0x000b7814 lsls r5, r0, 3 | r5 = r0 << 3;
0x000b7816 lsls r1, r1, 3 | r1 <<= 3;
0x000b7818 lsls r5, r0, 4 | r5 = r0 << 4;
0x000b781a lsls r1, r1, 4 | r1 <<= 4;
0x000b781c lsls r5, r0, 4 | r5 = r0 << 4;
0x000b781e lsls r1, r1, 4 | r1 <<= 4;
0x000b7820 lsls r5, r0, 3 | r5 = r0 << 3;
0x000b7822 lsls r1, r1, 3 | r1 <<= 3;
0x000b7824 lsls r5, r0, 4 | r5 = r0 << 4;
0x000b7826 movs r1, r5 | r1 = r5;
0x000b7828 movs r1, r5 | r1 = r5;
0x000b782a movs r1, r5 | r1 = r5;
0x000b782c lsls r6, r3, 1 | r6 = r3 << 1;
0x000b782e lsls r5, r4, 3 | r5 = r4 << 3;
0x000b7830 lsls r1, r1, 4 | r1 <<= 4;
0x000b7832 lsls r5, r0, 7 | r5 = r0 << 7;
0x000b7834 lsls r5, r0, 4 | r5 = r0 << 4;
0x000b7836 lsls r0, r1, 4 | r0 = r1 << 4;
0x000b7838 lsls r5, r0, 4 | r5 = r0 << 4;
0x000b783a lsls r0, r1, 4 | r0 = r1 << 4;
0x000b783c lsls r5, r0, 4 | r5 = r0 << 4;
0x000b783e lsls r0, r1, 4 | r0 = r1 << 4;
0x000b7840 lsls r5, r4, 2 | r5 = r4 << 2;
0x000b7842 lsls r5, r0, 1 | r5 = r0 << 1;
0x000b7844 lsls r1, r1, 2 | r1 <<= 2;
0x000b7846 movs r0, r5 | r0 = r5;
0x000b7848 movs r0, r7 | r0 = r7;
0x000b784a movs r5, r4 | r5 = r4;
0x000b784c lsls r0, r7, 1 | r0 = r7 << 1;
0x000b784e lsls r5, r4, 1 | r5 = r4 << 1;
0x000b7850 lsls r5, r0, 1 | r5 = r0 << 1;
0x000b7852 lsls r1, r1, 2 | r1 <<= 2;
0x000b7854 movs r0, r5 | r0 = r5;
0x000b7856 lsls r0, r7, 1 | r0 = r7 << 1;
0x000b7858 lsls r5, r0, 2 | r5 = r0 << 2;
0x000b785a lsls r5, r0, 1 | r5 = r0 << 1;
0x000b785c lsls r1, r1, 2 | r1 <<= 2;
0x000b785e lsls r0, r7, 1 | r0 = r7 << 1;
0x000b7860 lsls r5, r0, 4 | r5 = r0 << 4;
0x000b7862 lsls r1, r5, 2 | r1 = r5 << 2;
0x000b7864 lsls r0, r7, 1 | r0 = r7 << 1;
0x000b7866 lsls r5, r4, 1 | r5 = r4 << 1;
0x000b7868 lsls r5, r0, 1 | r5 = r0 << 1;
0x000b786a lsls r1, r1, 2 | r1 <<= 2;
0x000b786c movs r0, r5 | r0 = r5;
0x000b786e lsls r0, r3, 1 | r0 = r3 << 1;
0x000b7870 lsls r5, r7, 5 | r5 = r7 << 5;
0x000b7872 lsls r2, r4, 2 | r2 = r4 << 2;
0x000b7874 lsls r1, r2, 3 | r1 = r2 << 3;
0x000b7876 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7878 movs r4, r6 | r4 = r6;
0x000b787a movs r3, r6 | r3 = r6;
0x000b787c movs r6, r6 |
0x000b787e lsls r4, r2, 1 | r4 = r2 << 1;
0x000b7880 movs r3, r6 | r3 = r6;
0x000b7882 movs r6, r6 |
0x000b7884 movs r4, r6 | r4 = r6;
0x000b7886 lsls r5, r2, 4 | r5 = r2 << 4;
0x000b7888 movs r3, r7 | r3 = r7;
0x000b788a movs r4, r7 | r4 = r7;
0x000b788c lsls r2, r4, 2 | r2 = r4 << 2;
0x000b788e movs r5, r7 | r5 = r7;
0x000b7890 lsls r5, r6, 4 | r5 = r6 << 4;
0x000b7892 movs r4, r6 | r4 = r6;
0x000b7894 movs r3, r6 | r3 = r6;
0x000b7896 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7898 lsls r0, r2, 1 | r0 = r2 << 1;
0x000b789a lsls r5, r6, 1 | r5 = r6 << 1;
0x000b789c movs r1, r7 | r1 = r7;
0x000b789e movs r6, r6 |
0x000b78a0 movs r2, r6 | r2 = r6;
0x000b78a2 lsls r5, r6, 5 | r5 = r6 << 5;
0x000b78a4 movs r1, r7 | r1 = r7;
0x000b78a6 movs r5, r6 | r5 = r6;
0x000b78a8 movs r0, r6 | r0 = r6;
0x000b78aa lsls r5, r2, 5 | r5 = r2 << 5;
0x000b78ac movs r5, r7 | r5 = r7;
0x000b78ae lsls r2, r4, 2 | r2 = r4 << 2;
0x000b78b0 lsls r2, r0, 3 | r2 = r0 << 3;
0x000b78b2 movs r7, r5 | r7 = r5;
0x000b78b4 movs r6, r4 | r6 = r4;
0x000b78b6 lsls r7, r1, 3 | r7 = r1 << 3;
0x000b78b8 lsls r1, r7, 1 | r1 = r7 << 1;
0x000b78ba movs r6, r6 |
0x000b78bc movs r2, r6 | r2 = r6;
0x000b78be movs r6, r4 | r6 = r4;
0x000b78c0 lsls r7, r1, 5 | r7 = r1 << 5;
0x000b78c2 lsls r1, r7, 1 | r1 = r7 << 1;
0x000b78c4 movs r6, r6 |
0x000b78c6 movs r2, r6 | r2 = r6;
0x000b78c8 lsls r6, r4, 6 | r6 = r4 << 6;
0x000b78ca lsls r7, r2, 0xd | r7 = r2 << 0xd;
0x000b78cc lsls r4, r5, 6 | r4 = r5 << 6;
0x000b78ce lsls r3, r1, 2 | r3 = r1 << 2;
0x000b78d0 movs r4, r5 | r4 = r5;
0x000b78d2 lsls r3, r5, 1 | r3 = r5 << 1;
0x000b78d4 lsls r4, r1, 6 | r4 = r1 << 6;
0x000b78d6 lsls r2, r3, 1 | r2 = r3 << 1;
0x000b78d8 movs r1, r5 | r1 = r5;
0x000b78da lsls r2, r3, 2 | r2 = r3 << 2;
0x000b78dc movs r1, r5 | r1 = r5;
0x000b78de lsls r2, r3, 1 | r2 = r3 << 1;
0x000b78e0 movs r5, r4 | r5 = r4;
0x000b78e2 lsls r1, r5, 1 | r1 = r5 << 1;
0x000b78e4 lsls r5, r0, 1 | r5 = r0 << 1;
0x000b78e6 lsls r1, r5, 1 | r1 = r5 << 1;
0x000b78e8 movs r5, r4 | r5 = r4;
0x000b78ea movs r2, r7 | r2 = r7;
0x000b78ec movs r1, r5 | r1 = r5;
0x000b78ee lsls r2, r3, 1 | r2 = r3 << 1;
0x000b78f0 movs r1, r7 | r1 = r7;
0x000b78f2 lsls r1, r5, 2 | r1 = r5 << 2;
0x000b78f4 lsls r2, r3, 3 | r2 = r3 << 3;
0x000b78f6 movs r1, r5 | r1 = r5;
0x000b78f8 movs r2, r7 | r2 = r7;
0x000b78fa movs r1, r5 | r1 = r5;
0x000b78fc movs r2, r7 | r2 = r7;
0x000b78fe movs r1, r5 | r1 = r5;
0x000b7900 movs r2, r7 | r2 = r7;
0x000b7902 lsls r1, r1, 2 | r1 <<= 2;
0x000b7904 movs r2, r7 | r2 = r7;
0x000b7906 movs r5, r4 | r5 = r4;
0x000b7908 lsls r1, r1, 2 | r1 <<= 2;
0x000b790a movs r5, r4 | r5 = r4;
0x000b790c lsls r7, r0, 2 | r7 = r0 << 2;
0x000b790e movs r5, r4 | r5 = r4;
0x000b7910 lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7912 lsls r5, r0, 1 | r5 = r0 << 1;
0x000b7914 lsls r1, r1, 1 | r1 <<= 1;
0x000b7916 lsls r1, r7, 2 | r1 = r7 << 2;
0x000b7918 lsls r6, r3, 1 | r6 = r3 << 1;
0x000b791a lsls r5, r4, 1 | r5 = r4 << 1;
0x000b791c movs r2, r7 | r2 = r7;
0x000b791e movs r1, r7 | r1 = r7;
0x000b7920 lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7922 movs r5, r4 | r5 = r4;
0x000b7924 movs r2, r7 | r2 = r7;
0x000b7926 lsls r7, r1, 8 | r7 = r1 << 8;
0x000b7928 lsls r6, r5, 0x11 | r6 = r5 << 0x11;
0x000b792a lsls r6, r3, 1 | r6 = r3 << 1;
0x000b792c lsls r6, r1, 2 | r6 = r1 << 2;
0x000b792e movs r7, r5 | r7 = r5;
0x000b7930 lsls r1, r7, 2 | r1 = r7 << 2;
0x000b7932 lsls r2, r7, 2 | r2 = r7 << 2;
0x000b7934 lsls r1, r3, 1 | r1 = r3 << 1;
0x000b7936 lsls r2, r3, 2 | r2 = r3 << 2;
0x000b7938 movs r1, r7 | r1 = r7;
0x000b793a lsls r2, r3, 1 | r2 = r3 << 1;
0x000b793c movs r1, r7 | r1 = r7;
0x000b793e lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7940 movs r1, r7 | r1 = r7;
0x000b7942 lsls r2, r7, 3 | r2 = r7 << 3;
0x000b7944 movs r1, r7 | r1 = r7;
0x000b7946 lsls r2, r7, 0xf | r2 = r7 << 0xf;
0x000b7948 lsls r1, r3, 1 | r1 = r3 << 1;
0x000b794a lsls r2, r3, 1 | r2 = r3 << 1;
0x000b794c movs r1, r7 | r1 = r7;
0x000b794e movs r2, r7 | r2 = r7;
0x000b7950 movs r1, r7 | r1 = r7;
0x000b7952 lsls r2, r7, 0xf | r2 = r7 << 0xf;
0x000b7954 movs r1, 0x99 | r1 = 0x99;
0x000b7956 lsls r2, r3, 4 | r2 = r3 << 4;
0x000b7958 lsls r1, r3, 2 | r1 = r3 << 2;
0x000b795a lsls r2, r3, 0xa | r2 = r3 << 0xa;
0x000b795c lsls r1, r3, 1 | r1 = r3 << 1;
0x000b795e lsls r2, r7, 3 | r2 = r7 << 3;
0x000b7960 movs r6, r6 |
0x000b7962 movs r2, r6 | r2 = r6;
0x000b7964 lsrs r2, r7, 8 | r2 = r7 >> 8;
0x000b7966 movs r1, r7 | r1 = r7;
0x000b7968 lsls r2, r3, 0xf | r2 = r3 << 0xf;
0x000b796a lsls r1, r7, 0xc | r1 = r7 << 0xc;
0x000b796c lsls r2, r3, 0x14 | r2 = r3 << 0x14;
0x000b796e lsls r1, r3, 3 | r1 = r3 << 3;
0x000b7970 lsls r2, r3, 9 | r2 = r3 << 9;
0x000b7972 lsls r2, r7, 0x13 | r2 = r7 << 0x13;
0x000b7974 lsls r2, r7, 5 | r2 = r7 << 5;
0x000b7976 lsls r7, r1, 0x1e | r7 = r1 << 0x1e;
0x000b7978 lsrs r2, r3, 7 | r2 = r3 >> 7;
0x000b797a lsls r7, r1, 0xb | r7 = r1 << 0xb;
0x000b797c asrs r2, r7, 0x1b | r2 = r7 >> 0x1b;
0x000b797e movs r1, r7 | r1 = r7;
0x000b7980 lsls r2, r7, 4 | r2 = r7 << 4;
0x000b7982 movs r1, r7 | r1 = r7;
0x000b7984 lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
0x000b7986 lsls r1, r3, 4 | r1 = r3 << 4;
0x000b7988 lsrs r2, r7, 0x17 | r2 = r7 >> 0x17;
0x000b798a movs r1, r7 | r1 = r7;
0x000b798c asrs r2, r3, 8 | r2 = r3 >> 8;
0x000b798e lsrs r2, r7, 0x13 | r2 = r7 >> 0x13;
0x000b7990 movs r6, r6 |
0x000b7992 movs r2, r6 | r2 = r6;
0x000b7994 movs r6, r6 |
0x000b7996 movs r2, r6 | r2 = r6;
0x000b7998 movs r6, r6 |
0x000b799a movs r2, r6 | r2 = r6;
0x000b799c movs r6, r6 |
0x000b799e movs r2, r6 | r2 = r6;
0x000b79a0 movs r6, r6 |
0x000b79a2 movs r2, r6 | r2 = r6;
0x000b79a4 movs r6, r6 |
0x000b79a6 movs r2, r6 | r2 = r6;
0x000b79a8 movs r6, r6 |
0x000b79aa movs r2, r6 | r2 = r6;
0x000b79ac lsls r7, r1, 0xf | r7 = r1 << 0xf;
0x000b79ae lsls r2, r3, 0x16 | r2 = r3 << 0x16;
0x000b79b0 lsls r1, r7, 2 | r1 = r7 << 2;
0x000b79b2 movs r6, r6 |
0x000b79b4 movs r2, r6 | r2 = r6;
0x000b79b6 lsls r1, r7, 0xf | r1 = r7 << 0xf;
0x000b79b8 movs r6, r6 |
0x000b79ba movs r2, r6 | r2 = r6;
0x000b79bc movs r6, r6 |
0x000b79be movs r2, r6 | r2 = r6;
0x000b79c0 movs r6, r6 |
0x000b79c2 movs r2, r6 | r2 = r6;
0x000b79c4 movs r6, r6 |
0x000b79c6 movs r2, r6 | r2 = r6;
0x000b79c8 movs r6, r6 |
0x000b79ca movs r2, r6 | r2 = r6;
0x000b79cc lsls r1, r3, 8 | r1 = r3 << 8;
0x000b79ce movs r0, 0x1a | r0 = 0x1a;
0x000b79d0 asrs r1, r7, 1 | r1 = r7 >> 1;
0x000b79d2 movs r6, r6 |
0x000b79d4 movs r2, r6 | r2 = r6;
0x000b79d6 movs r6, r6 |
0x000b79d8 movs r2, r6 | r2 = r6;
0x000b79da movs r6, r6 |
0x000b79dc movs r2, r6 | r2 = r6;
0x000b79de movs r6, r6 |
0x000b79e0 movs r2, r6 | r2 = r6;
0x000b79e2 movs r6, r6 |
0x000b79e4 movs r2, r6 | r2 = r6;
0x000b79e6 movs r6, r6 |
0x000b79e8 movs r2, r6 | r2 = r6;
0x000b79ea movs r6, r6 |
0x000b79ec movs r2, r6 | r2 = r6;
0x000b79ee movs r6, r6 |
0x000b79f0 movs r2, r6 | r2 = r6;
0x000b79f2 movs r6, r6 |
0x000b79f4 movs r2, r6 | r2 = r6;
0x000b79f6 movs r6, r6 |
0x000b79f8 movs r2, r6 | r2 = r6;
0x000b79fa movs r6, r6 |
0x000b79fc movs r2, r6 | r2 = r6;
0x000b79fe lsls r1, r7, 0x1f | r1 = r7 << 0x1f;
0x000b7a00 movs r6, r6 |
0x000b7a02 movs r2, r6 | r2 = r6;
0x000b7a04 movs r6, r6 |
0x000b7a06 movs r2, r6 | r2 = r6;
0x000b7a08 lsls r1, r3, 0x10 | r1 = r3 << 0x10;
0x000b7a0a movs r6, r6 |
0x000b7a0c movs r2, r6 | r2 = r6;
0x000b7a0e movs r0, 0x59 | r0 = 0x59;
0x000b7a10 lsls r2, r3, 0x18 | r2 = r3 << 0x18;
0x000b7a12 lsls r1, r7, 0xa | r1 = r7 << 0xa;
0x000b7a14 lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7a16 lsls r1, r3, 3 | r1 = r3 << 3;
0x000b7a18 lsls r2, r3, 5 | r2 = r3 << 5;
0x000b7a1a lsls r1, r5, 0x17 | r1 = r5 << 0x17;
0x000b7a1c lsls r5, r4, 0x17 | r5 = r4 << 0x17;
0x000b7a1e lsls r6, r7, 1 | r6 = r7 << 1;
0x000b7a20 lsls r1, r1, 1 | r1 <<= 1;
0x000b7a22 lsls r5, r0, 1 | r5 = r0 << 1;
0x000b7a24 lsls r6, r7, 3 | r6 = r7 << 3;
0x000b7a26 lsls r1, r5, 1 | r1 = r5 << 1;
0x000b7a28 movs r5, r4 | r5 = r4;
0x000b7a2a lsls r6, r3, 1 | r6 = r3 << 1;
0x000b7a2c movs r5, r4 | r5 = r4;
0x000b7a2e lsls r6, r3, 1 | r6 = r3 << 1;
0x000b7a30 lsls r5, r4, 2 | r5 = r4 << 2;
0x000b7a32 lsls r6, r0, 1 | r6 = r0 << 1;
0x000b7a34 lsls r1, r5, 1 | r1 = r5 << 1;
0x000b7a36 movs r5, r4 | r5 = r4;
0x000b7a38 lsrs r6, r3, 0x11 | r6 = r3 >> 0x11;
0x000b7a3a movs r5, r4 | r5 = r4;
0x000b7a3c lsls r2, r3, 3 | r2 = r3 << 3;
0x000b7a3e lsls r6, r3, 2 | r6 = r3 << 2;
0x000b7a40 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7a42 lsls r6, r3, 1 | r6 = r3 << 1;
0x000b7a44 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7a46 movs r7, r5 | r7 = r5;
0x000b7a48 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7a4a lsls r5, r0, 0x13 | r5 = r0 << 0x13;
0x000b7a4c movs r5, r4 | r5 = r4;
0x000b7a4e movs r5, r4 | r5 = r4;
0x000b7a50 lsls r7, r0, 0x1c | r7 = r0 << 0x1c;
0x000b7a52 movs r6, r4 | r6 = r4;
0x000b7a54 movs r5, r6 | r5 = r6;
0x000b7a56 movs r4, r5 | r4 = r5;
0x000b7a58 lsls r7, r4, 0xb | r7 = r4 << 0xb;
0x000b7a5a lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7a5c lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7a5e lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7a60 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7a62 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7a64 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7a66 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7a68 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7a6a lsls r4, r1, 0x10 | r4 = r1 << 0x10;
0x000b7a6c lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7a6e movs r4, r6 | r4 = r6;
0x000b7a70 movs r3, r6 | r3 = r6;
0x000b7a72 movs r4, r6 | r4 = r6;
0x000b7a74 movs r3, r6 | r3 = r6;
0x000b7a76 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7a78 movs r4, r6 | r4 = r6;
0x000b7a7a movs r3, r6 | r3 = r6;
0x000b7a7c movs r5, r6 | r5 = r6;
0x000b7a7e movs r4, r6 | r4 = r6;
0x000b7a80 movs r3, r6 | r3 = r6;
0x000b7a82 lsls r5, r6, 4 | r5 = r6 << 4;
0x000b7a84 movs r1, r6 | r1 = r6;
0x000b7a86 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7a88 movs r1, r6 | r1 = r6;
0x000b7a8a movs r5, r6 | r5 = r6;
0x000b7a8c movs r4, r6 | r4 = r6;
0x000b7a8e movs r3, r6 | r3 = r6;
0x000b7a90 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7a92 movs r4, r6 | r4 = r6;
0x000b7a94 movs r3, r6 | r3 = r6;
0x000b7a96 movs r6, r6 |
0x000b7a98 movs r2, r6 | r2 = r6;
0x000b7a9a movs r6, r6 |
0x000b7a9c movs r2, r6 | r2 = r6;
0x000b7a9e movs r6, r6 |
0x000b7aa0 movs r2, r6 | r2 = r6;
0x000b7aa2 movs r6, r6 |
0x000b7aa4 movs r2, r6 | r2 = r6;
0x000b7aa6 lsls r5, r6, 2 | r5 = r6 << 2;
0x000b7aa8 movs r6, r4 | r6 = r4;
0x000b7aaa lsls r5, r2, 5 | r5 = r2 << 5;
0x000b7aac lsls r1, r2, 1 | r1 = r2 << 1;
0x000b7aae lsls r2, r3, 0xd | r2 = r3 << 0xd;
0x000b7ab0 lsrs r2, r7, 0xc | r2 = r7 >> 0xc;
0x000b7ab2 subs r2, r3, r3 | r2 = r3 - r3;
0x000b7ab4 lsls r2, r3, 6 | r2 = r3 << 6;
0x000b7ab6 movs r5, r7 | r5 = r7;
0x000b7ab8 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7aba movs r2, r7 | r2 = r7;
0x000b7abc movs r6, r4 | r6 = r4;
0x000b7abe movs r7, r4 | r7 = r4;
0x000b7ac0 movs r6, r5 | r6 = r5;
0x000b7ac2 movs r6, r6 |
0x000b7ac4 movs r2, r6 | r2 = r6;
0x000b7ac6 movs r6, r6 |
0x000b7ac8 movs r2, r6 | r2 = r6;
0x000b7aca movs r6, r6 |
0x000b7acc movs r2, r6 | r2 = r6;
0x000b7ace movs r6, r6 |
0x000b7ad0 movs r2, r6 | r2 = r6;
0x000b7ad2 movs r6, r6 |
0x000b7ad4 movs r2, r6 | r2 = r6;
0x000b7ad6 lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7ad8 movs r6, r6 |
0x000b7ada movs r2, r6 | r2 = r6;
0x000b7adc movs r6, r6 |
0x000b7ade movs r2, r6 | r2 = r6;
0x000b7ae0 movs r6, r6 |
0x000b7ae2 movs r2, r6 | r2 = r6;
0x000b7ae4 movs r6, r6 |
0x000b7ae6 movs r2, r6 | r2 = r6;
0x000b7ae8 movs r1, r6 | r1 = r6;
0x000b7aea movs r6, r6 |
0x000b7aec lsls r2, r2, 1 | r2 <<= 1;
0x000b7aee movs r2, r7 | r2 = r7;
0x000b7af0 lsls r6, r5, 4 | r6 = r5 << 4;
0x000b7af2 lsls r4, r1, 2 | r4 = r1 << 2;
0x000b7af4 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7af6 movs r1, r6 | r1 = r6;
0x000b7af8 lsls r6, r4, 2 | r6 = r4 << 2;
0x000b7afa lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7afc lsls r6, r5, 1 | r6 = r5 << 1;
0x000b7afe movs r6, r4 | r6 = r4;
0x000b7b00 movs r7, r4 | r7 = r4;
0x000b7b02 movs r5, r6 | r5 = r6;
0x000b7b04 lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7b06 lsrs r7, r0, 0xb | r7 = r0 >> 0xb;
0x000b7b08 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7b0a lsls r0, r3, 1 | r0 = r3 << 1;
0x000b7b0c lsls r6, r0, 1 | r6 = r0 << 1;
0x000b7b0e movs r7, r4 | r7 = r4;
0x000b7b10 movs r1, r6 | r1 = r6;
0x000b7b12 lsrs r7, r0, 0xd | r7 = r0 >> 0xd;
0x000b7b14 movs r5, r6 | r5 = r6;
0x000b7b16 lsls r6, r4, 1 | r6 = r4 << 1;
0x000b7b18 movs r7, r4 | r7 = r4;
0x000b7b1a lsls r7, r4, 0x14 | r7 = r4 << 0x14;
0x000b7b1c lsrs r7, r0, 0xf | r7 = r0 >> 0xf;
0x000b7b1e lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7b20 lsls r7, r1, 2 | r7 = r1 << 2;
0x000b7b22 lsls r2, r3, 5 | r2 = r3 << 5;
0x000b7b24 lsls r7, r4, 0xd | r7 = r4 << 0xd;
0x000b7b26 lsls r2, r3, 0x12 | r2 = r3 << 0x12;
0x000b7b28 lsls r7, r0, 8 | r7 = r0 << 8;
0x000b7b2a lsls r2, r7, 0xf | r2 = r7 << 0xf;
0x000b7b2c lsls r7, r1, 5 | r7 = r1 << 5;
0x000b7b2e lsls r2, r3, 0xf | r2 = r3 << 0xf;
0x000b7b30 lsls r7, r1, 4 | r7 = r1 << 4;
0x000b7b32 movs r2, r7 | r2 = r7;
0x000b7b34 lsls r7, r5, 7 | r7 = r5 << 7;
0x000b7b36 lsls r2, r3, 0x10 | r2 = r3 << 0x10;
0x000b7b38 lsls r7, r1, 5 | r7 = r1 << 5;
0x000b7b3a lsls r2, r7, 0x13 | r2 = r7 << 0x13;
0x000b7b3c lsls r7, r5, 7 | r7 = r5 << 7;
0x000b7b3e lsls r2, r7, 0x1f | r2 = r7 << 0x1f;
0x000b7b40 movs r0, 0x1a | r0 = 0x1a;
0x000b7b42 movs r7, r4 | r7 = r4;
0x000b7b44 movs r7, r4 | r7 = r4;
0x000b7b46 lsrs r2, r3, 0x20 | r2 = r3 >> 0x20;
0x000b7b48 movs r7, r4 | r7 = r4;
0x000b7b4a movs r7, r4 | r7 = r4;
0x000b7b4c lsls r7, r4, 0xa | r7 = r4 << 0xa;
0x000b7b4e movs r6, r4 | r6 = r4;
0x000b7b50 ldrh r7, [r4, 0x36] | r7 = *((r4 + 0x36));
0x000b7b52 lsls r2, r7, 0x1b | r2 = r7 << 0x1b;
0x000b7b54 lsls r7, r0, 0x14 | r7 = r0 << 0x14;
0x000b7b56 lsls r6, r0, 3 | r6 = r0 << 3;
0x000b7b58 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7b5a movs r1, 0x87 | r1 = 0x87;
0x000b7b5c movs r6, r4 | r6 = r4;
0x000b7b5e lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7b60 lsls r7, r0, 8 | r7 = r0 << 8;
0x000b7b62 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7b64 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7b66 lsls r6, r3, 0x17 | r6 = r3 << 0x17;
0x000b7b68 movs r7, r4 | r7 = r4;
0x000b7b6a movs r4, r5 | r4 = r5;
0x000b7b6c lsls r3, r5, 1 | r3 = r5 << 1;
0x000b7b6e movs r5, r6 | r5 = r6;
0x000b7b70 lsls r4, r1, 5 | r4 = r1 << 5;
0x000b7b72 movs r5, r6 | r5 = r6;
0x000b7b74 movs r6, r4 | r6 = r4;
0x000b7b76 lsls r6, r3, 0xc | r6 = r3 << 0xc;
0x000b7b78 movs r4, r5 | r4 = r5;
0x000b7b7a lsrs r7, r0, 3 | r7 = r0 >> 3;
0x000b7b7c lsls r6, r1, 5 | r6 = r1 << 5;
0x000b7b7e lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7b80 lsls r5, r2, 3 | r5 = r2 << 3;
0x000b7b82 lsls r0, r7, 0xb | r0 = r7 << 0xb;
0x000b7b84 lsls r6, r4, 4 | r6 = r4 << 4;
0x000b7b86 lsls r0, r3, 1 | r0 = r3 << 1;
0x000b7b88 lsls r6, r3, 7 | r6 = r3 << 7;
0x000b7b8a lsls r5, r0, 1 | r5 = r0 << 1;
0x000b7b8c lsls r6, r3, 0x1f | r6 = r3 << 0x1f;
0x000b7b8e movs r6, r4 | r6 = r4;
0x000b7b90 lsls r5, r0, 4 | r5 = r0 << 4;
0x000b7b92 lsls r6, r7, 2 | r6 = r7 << 2;
0x000b7b94 lsls r6, r3, 5 | r6 = r3 << 5;
0x000b7b96 movs r6, r4 | r6 = r4;
0x000b7b98 lsls r0, r3, 1 | r0 = r3 << 1;
0x000b7b9a lsls r6, r3, 2 | r6 = r3 << 2;
0x000b7b9c lsls r6, r3, 2 | r6 = r3 << 2;
0x000b7b9e lsls r6, r7, 5 | r6 = r7 << 5;
0x000b7ba0 lsls r6, r0, 1 | r6 = r0 << 1;
0x000b7ba2 movs r5, r4 | r5 = r4;
0x000b7ba4 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7ba6 movs r4, r5 | r4 = r5;
0x000b7ba8 lsls r7, r4, 1 | r7 = r4 << 1;
0x000b7baa movs r4, r5 | r4 = r5;
0x000b7bac lsls r7, r0, 2 | r7 = r0 << 2;
0x000b7bae movs r4, r5 | r4 = r5;
0x000b7bb0 lsls r7, r4, 0xb | r7 = r4 << 0xb;
0x000b7bb2 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7bb4 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7bb6 movs r2, r5 | r2 = r5;
0x000b7bb8 lsls r2, r3, 2 | r2 = r3 << 2;
0x000b7bba lsls r7, r1, 3 | r7 = r1 << 3;
0x000b7bbc lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7bbe movs r7, r6 | r7 = r6;
0x000b7bc0 movs r2, r7 | r2 = r7;
0x000b7bc2 lsls r7, r0, 0x1a | r7 = r0 << 0x1a;
0x000b7bc4 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7bc6 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7bc8 lsls r7, r0, 0x19 | r7 = r0 << 0x19;
0x000b7bca lsls r2, r1, 8 | r2 = r1 << 8;
0x000b7bcc movs r4, r5 | r4 = r5;
0x000b7bce lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7bd0 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7bd2 lsls r4, r1, 9 | r4 = r1 << 9;
0x000b7bd4 lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7bd6 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7bd8 movs r7, r4 | r7 = r4;
0x000b7bda lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7bdc lsls r7, r0, 0xe | r7 = r0 << 0xe;
0x000b7bde lsls r4, r1, 4 | r4 = r1 << 4;
0x000b7be0 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7be2 lsls r7, r4, 0xb | r7 = r4 << 0xb;
0x000b7be4 lsls r4, r5, 5 | r4 = r5 << 5;
0x000b7be6 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7be8 movs r5, r6 | r5 = r6;
0x000b7bea lsls r7, r4, 0xe | r7 = r4 << 0xe;
0x000b7bec lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7bee movs r2, r5 | r2 = r5;
0x000b7bf0 lsls r7, r4, 0x17 | r7 = r4 << 0x17;
0x000b7bf2 movs r4, r5 | r4 = r5;
0x000b7bf4 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7bf6 lsls r4, r1, 2 | r4 = r1 << 2;
0x000b7bf8 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7bfa movs r4, r5 | r4 = r5;
0x000b7bfc lsls r2, r1, 2 | r2 = r1 << 2;
0x000b7bfe lsls r5, r6, 6 | r5 = r6 << 6;
0x000b7c00 movs r6, r4 | r6 = r4;
0x000b7c02 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7c04 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7c06 lsls r7, r4, 0x14 | r7 = r4 << 0x14;
0x000b7c08 lsls r4, r1, 3 | r4 = r1 << 3;
0x000b7c0a lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7c0c lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7c0e lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7c10 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7c12 lsls r7, r4, 1 | r7 = r4 << 1;
0x000b7c14 movs r4, r5 | r4 = r5;
0x000b7c16 lsls r7, r0, 4 | r7 = r0 << 4;
0x000b7c18 movs r4, r5 | r4 = r5;
0x000b7c1a movs r2, r5 | r2 = r5;
0x000b7c1c lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7c1e lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7c20 lsls r7, r0, 8 | r7 = r0 << 8;
0x000b7c22 movs r6, r4 | r6 = r4;
0x000b7c24 lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7c26 lsls r2, r7, 1 | r2 = r7 << 1;
0x000b7c28 movs r7, r4 | r7 = r4;
0x000b7c2a movs r2, r5 | r2 = r5;
0x000b7c2c lsls r7, r0, 0x18 | r7 = r0 << 0x18;
0x000b7c2e movs r4, r5 | r4 = r5;
0x000b7c30 movs r7, r4 | r7 = r4;
0x000b7c32 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7c34 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7c36 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7c38 lsls r7, r4, 2 | r7 = r4 << 2;
0x000b7c3a lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7c3c movs r7, r4 | r7 = r4;
0x000b7c3e movs r4, r5 | r4 = r5;
0x000b7c40 movs r7, r4 | r7 = r4;
0x000b7c42 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7c44 movs r6, r4 | r6 = r4;
0x000b7c46 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7c48 lsls r7, r4, 5 | r7 = r4 << 5;
0x000b7c4a movs r2, r5 | r2 = r5;
0x000b7c4c lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7c4e lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7c50 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7c52 movs r7, r4 | r7 = r4;
0x000b7c54 lsls r6, r0, 1 | r6 = r0 << 1;
0x000b7c56 movs r2, r5 | r2 = r5;
0x000b7c58 movs r4, r5 | r4 = r5;
0x000b7c5a lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7c5c lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7c5e lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7c60 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7c62 lsls r7, r4, 3 | r7 = r4 << 3;
0x000b7c64 lsls r7, r4, 0x11 | r7 = r4 << 0x11;
0x000b7c66 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7c68 movs r4, r5 | r4 = r5;
0x000b7c6a lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7c6c movs r4, r5 | r4 = r5;
0x000b7c6e lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7c70 movs r5, r6 | r5 = r6;
0x000b7c72 movs r2, r5 | r2 = r5;
0x000b7c74 movs r4, r5 | r4 = r5;
0x000b7c76 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7c78 movs r7, r4 | r7 = r4;
0x000b7c7a movs r7, r4 | r7 = r4;
0x000b7c7c lsls r7, r4, 0xb | r7 = r4 << 0xb;
0x000b7c7e lsls r7, r4, 0x18 | r7 = r4 << 0x18;
0x000b7c80 movs r4, r4 |
0x000b7c82 lsls r4, r0, 1 | r4 = r0 << 1;
0x000b7c84 lsls r4, r0, 1 | r4 = r0 << 1;
0x000b7c86 movs r4, r4 |
0x000b7c88 movs r7, r7 |
0x000b7c8a movs r7, r7 |
0x000b7c8c cmp r5, 0xc7 |
0x000b7c8e lsrs r7, r0, 0x15 | r7 = r0 >> 0x15;
0x000b7c90 lsls r5, r4, 3 | r5 = r4 << 3;
0x000b7c92 lsls r5, r4, 2 | r5 = r4 << 2;
0x000b7c94 movs r7, r4 | r7 = r4;
0x000b7c96 movs r4, r5 | r4 = r5;
0x000b7c98 lsls r7, r0, 5 | r7 = r0 << 5;
0x000b7c9a movs r1, r7 | r1 = r7;
0x000b7c9c lsls r7, r4, 6 | r7 = r4 << 6;
0x000b7c9e lsls r7, r4, 2 | r7 = r4 << 2;
0x000b7ca0 movs r7, r4 | r7 = r4;
0x000b7ca2 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7ca4 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7ca6 lsrs r7, r0, 0x16 | r7 = r0 >> 0x16;
0x000b7ca8 lsls r0, r3, 8 | r0 = r3 << 8;
0x000b7caa cmp r5, 0x67 |
0x000b7cac movs r6, r6 |
0x000b7cae movs r2, r6 | r2 = r6;
0x000b7cb0 lsrs r7, r0, 0x20 | r7 = r0 >> 0x20;
0x000b7cb2 lsls r7, r0, 0x1b | r7 = r0 << 0x1b;
0x000b7cb4 lsls r7, r0, 6 | r7 = r0 << 6;
0x000b7cb6 movs r7, r6 | r7 = r6;
0x000b7cb8 movs r2, r7 | r2 = r7;
0x000b7cba lsls r4, r1, 8 | r4 = r1 << 8;
0x000b7cbc lsls r5, r6, 3 | r5 = r6 << 3;
0x000b7cbe movs r6, r6 |
0x000b7cc0 movs r2, r6 | r2 = r6;
0x000b7cc2 movs r5, r6 | r5 = r6;
0x000b7cc4 lsls r4, r5, 3 | r4 = r5 << 3;
0x000b7cc6 movs r5, r6 | r5 = r6;
0x000b7cc8 lsls r1, r2, 1 | r1 = r2 << 1;
0x000b7cca lsls r0, r2, 1 | r0 = r2 << 1;
0x000b7ccc movs r6, r6 |
0x000b7cce movs r2, r6 | r2 = r6;
0x000b7cd0 movs r6, r6 |
0x000b7cd2 movs r2, r6 | r2 = r6;
0x000b7cd4 movs r6, r6 |
0x000b7cd6 movs r2, r6 | r2 = r6;
0x000b7cd8 movs r6, r6 |
0x000b7cda movs r2, r6 | r2 = r6;
0x000b7cdc movs r6, r6 |
0x000b7cde movs r2, r6 | r2 = r6;
0x000b7ce0 movs r6, r6 |
0x000b7ce2 movs r2, r6 | r2 = r6;
0x000b7ce4 movs r6, r6 |
0x000b7ce6 movs r2, r6 | r2 = r6;
0x000b7ce8 movs r6, r6 |
0x000b7cea movs r2, r6 | r2 = r6;
0x000b7cec lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7cee movs r6, r6 |
0x000b7cf0 movs r2, r6 | r2 = r6;
0x000b7cf2 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7cf4 lsls r0, r6, 1 | r0 = r6 << 1;
0x000b7cf6 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7cf8 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7cfa movs r1, r6 | r1 = r6;
0x000b7cfc movs r6, r6 |
0x000b7cfe movs r2, r6 | r2 = r6;
0x000b7d00 movs r6, r6 |
0x000b7d02 movs r2, r6 | r2 = r6;
0x000b7d04 movs r6, r6 |
0x000b7d06 movs r2, r6 | r2 = r6;
0x000b7d08 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7d0a movs r1, r7 | r1 = r7;
0x000b7d0c movs r1, r6 | r1 = r6;
0x000b7d0e lsls r1, r7, 1 | r1 = r7 << 1;
0x000b7d10 movs r5, r6 | r5 = r6;
0x000b7d12 movs r7, r6 | r7 = r6;
0x000b7d14 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7d16 lsls r7, r4, 2 | r7 = r4 << 2;
0x000b7d18 asrs r7, r4, 3 | r7 = r4 >> 3;
0x000b7d1a movs r2, r4 | r2 = r4;
0x000b7d1c lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7d1e movs r7, r6 | r7 = r6;
0x000b7d20 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7d22 movs r6, r6 |
0x000b7d24 movs r2, r6 | r2 = r6;
0x000b7d26 movs r5, r6 | r5 = r6;
0x000b7d28 movs r1, r7 | r1 = r7;
0x000b7d2a movs r5, r6 | r5 = r6;
0x000b7d2c movs r1, r6 | r1 = r6;
0x000b7d2e lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7d30 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7d32 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7d34 lsls r1, r7, 1 | r1 = r7 << 1;
0x000b7d36 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7d38 lsls r1, r1, 0xd | r1 <<= 0xd;
0x000b7d3a movs r6, r6 |
0x000b7d3c movs r5, r6 | r5 = r6;
0x000b7d3e movs r2, r6 | r2 = r6;
0x000b7d40 movs r0, r7 | r0 = r7;
0x000b7d42 movs r0, r6 | r0 = r6;
0x000b7d44 movs r0, r7 | r0 = r7;
0x000b7d46 lsls r5, r0, 0xd | r5 = r0 << 0xd;
0x000b7d48 movs r6, r6 |
0x000b7d4a movs r1, r7 | r1 = r7;
0x000b7d4c movs r2, r6 | r2 = r6;
0x000b7d4e movs r1, r7 | r1 = r7;
0x000b7d50 movs r6, r6 |
0x000b7d52 movs r2, r6 | r2 = r6;
0x000b7d54 movs r5, r6 | r5 = r6;
0x000b7d56 movs r6, r6 |
0x000b7d58 movs r2, r6 | r2 = r6;
0x000b7d5a lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7d5c lsls r7, r0, 5 | r7 = r0 << 5;
0x000b7d5e movs r6, r4 | r6 = r4;
0x000b7d60 lsls r7, r4, 0x16 | r7 = r4 << 0x16;
0x000b7d62 lsls r6, r0, 1 | r6 = r0 << 1;
0x000b7d64 lsls r7, r4, 0xf | r7 = r4 << 0xf;
0x000b7d66 lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7d68 lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7d6a lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7d6c lsls r7, r4, 1 | r7 = r4 << 1;
0x000b7d6e lsls r7, r2, 1 | r7 = r2 << 1;
0x000b7d70 movs r1, r7 | r1 = r7;
0x000b7d72 movs r0, r7 | r0 = r7;
0x000b7d74 movs r2, r7 | r2 = r7;
0x000b7d76 lsls r7, r2, 1 | r7 = r2 << 1;
0x000b7d78 movs r2, r7 | r2 = r7;
0x000b7d7a lsls r1, r3, 2 | r1 = r3 << 2;
0x000b7d7c lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7d7e lsls r2, r4, 1 | r2 = r4 << 1;
0x000b7d80 lsls r2, r3, 1 | r2 = r3 << 1;
0x000b7d82 lsls r7, r0, 6 | r7 = r0 << 6;
0x000b7d84 lsls r7, r0, 0xd | r7 = r0 << 0xd;
0x000b7d86 lsls r7, r4, 9 | r7 = r4 << 9;
0x000b7d88 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7d8a lsls r7, r4, 7 | r7 = r4 << 7;
0x000b7d8c lsls r7, r0, 7 | r7 = r0 << 7;
0x000b7d8e lsrs r7, r4, 0x1d | r7 = r4 >> 0x1d;
0x000b7d90 lsls r5, r6, 1 | r5 = r6 << 1;
0x000b7d92 lsls r7, r5, 0x16 | r7 = r5 << 0x16;
0x000b7d94 lsls r2, r7, 4 | r2 = r7 << 4;
0x000b7d96 lsls r6, r5, 0x1a | r6 = r5 << 0x1a;
0x000b7d98 lsls r7, r1, 2 | r7 = r1 << 2;
0x000b7d9a lsls r2, r7, 8 | r2 = r7 << 8;
0x000b7d9c movs r7, r5 | r7 = r5;
0x000b7d9e lsls r2, r3, 6 | r2 = r3 << 6;
0x000b7da0 lsls r2, r7, 0x16 | r2 = r7 << 0x16;
0x000b7da2 movs r4, r5 | r4 = r5;
0x000b7da4 lsls r7, r4, 0xe | r7 = r4 << 0xe;
0x000b7da6 lsls r7, r4, 0x18 | r7 = r4 << 0x18;
0x000b7da8 lsls r7, r4, 0xf | r7 = r4 << 0xf;
0x000b7daa lsls r7, r1, 2 | r7 = r1 << 2;
0x000b7dac lsls r7, r4, 8 | r7 = r4 << 8;
0x000b7dae movs r6, r5 | r6 = r5;
0x000b7db0 lsls r7, r0, 4 | r7 = r0 << 4;
0x000b7db2 movs r6, r5 | r6 = r5;
0x000b7db4 lsls r7, r0, 0xf | r7 = r0 << 0xf;
0x000b7db6 movs r5, r6 | r5 = r6;
0x000b7db8 lsls r7, r0, 0x12 | r7 = r0 << 0x12;
0x000b7dba lsls r7, r0, 4 | r7 = r0 << 4;
0x000b7dbc movs r5, r6 | r5 = r6;
0x000b7dbe lsls r6, r5, 2 | r6 = r5 << 2;
0x000b7dc0 lsls r1, r1, 0x14 | r1 <<= 0x14;
0x000b7dc2 lsls r5, r0, 0x14 | r5 = r0 << 0x14;
0x000b7dc4 lsrs r7, r0, 7 | r7 = r0 >> 7;
0x000b7dc6 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7dc8 lsls r7, r0, 3 | r7 = r0 << 3;
0x000b7dca movs r7, r4 | r7 = r4;
0x000b7dcc lsls r7, r0, 0x16 | r7 = r0 << 0x16;
0x000b7dce lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7dd0 movs r7, r4 | r7 = r4;
0x000b7dd2 lsls r7, r4, 0xb | r7 = r4 << 0xb;
0x000b7dd4 movs r5, r6 | r5 = r6;
0x000b7dd6 lsls r7, r1, 4 | r7 = r1 << 4;
0x000b7dd8 lsls r7, r0, 0xb | r7 = r0 << 0xb;
0x000b7dda lsls r7, r1, 3 | r7 = r1 << 3;
0x000b7ddc movs r5, r6 | r5 = r6;
0x000b7dde lsls r7, r0, 0xd | r7 = r0 << 0xd;
0x000b7de0 movs r5, r6 | r5 = r6;
0x000b7de2 lsls r7, r0, 0x1c | r7 = r0 << 0x1c;
0x000b7de4 lsls r7, r0, 1 | r7 = r0 << 1;
0x000b7de6 movs r7, r4 | r7 = r4;
0x000b7de8 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7dea lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7dec lsls r4, r1, 2 | r4 = r1 << 2;
0x000b7dee lsls r7, r0, 2 | r7 = r0 << 2;
0x000b7df0 lsls r7, r4, 1 | r7 = r4 << 1;
0x000b7df2 lsls r7, r4, 0xd | r7 = r4 << 0xd;
0x000b7df4 lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7df6 movs r4, r5 | r4 = r5;
0x000b7df8 lsls r7, r1, 4 | r7 = r1 << 4;
0x000b7dfa lsls r5, r6, 4 | r5 = r6 << 4;
0x000b7dfc lsls r7, r4, 0xe | r7 = r4 << 0xe;
0x000b7dfe lsls r7, r1, 1 | r7 = r1 << 1;
0x000b7e00 movs r5, r6 | r5 = r6;
0x000b7e02 lsls r7, r0, 0x1b | r7 = r0 << 0x1b;
0x000b7e04 lsls r5, r6, 3 | r5 = r6 << 3;
0x000b7e06 lsls r7, r0, 0xb | r7 = r0 << 0xb;
0x000b7e08 lsls r7, r1, 4 | r7 = r1 << 4;
0x000b7e0a lsls r7, r4, 9 | r7 = r4 << 9;
0x000b7e0c lsls r7, r1, 4 | r7 = r1 << 4;
0x000b7e0e lsrs r7, r4, 4 | r7 = r4 >> 4;
0x000b7e10 lsls r7, r5, 0xf | r7 = r5 << 0xf;
0x000b7e12 movs r2, r5 | r2 = r5;
0x000b7e14 movs r4, r5 | r4 = r5;
0x000b7e16 movs r2, r5 | r2 = r5;
0x000b7e18 lsls r7, r4, 0x1a | r7 = r4 << 0x1a;
0x000b7e1a lsls r4, r5, 7 | r4 = r5 << 7;
0x000b7e1c lsls r5, r6, 3 | r5 = r6 << 3;
0x000b7e1e lsls r7, r1, 0xa | r7 = r1 << 0xa;
0x000b7e20 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7e22 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7e24 movs r2, r5 | r2 = r5;
0x000b7e26 lsls r7, r4, 0x16 | r7 = r4 << 0x16;
0x000b7e28 lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7e2a lsls r4, r1, 2 | r4 = r1 << 2;
0x000b7e2c lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7e2e lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7e30 lsls r5, r2, 1 | r5 = r2 << 1;
0x000b7e32 movs r2, r4 | r2 = r4;
0x000b7e34 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7e36 lsls r7, r4, 0xc | r7 = r4 << 0xc;
0x000b7e38 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7e3a lsls r4, r5, 1 | r4 = r5 << 1;
0x000b7e3c lsls r7, r0, 0x12 | r7 = r0 << 0x12;
0x000b7e3e lsls r4, r5, 2 | r4 = r5 << 2;
0x000b7e40 movs r2, r5 | r2 = r5;
0x000b7e42 lsls r4, r1, 4 | r4 = r1 << 4;
0x000b7e44 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7e46 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7e48 lsls r4, r1, 1 | r4 = r1 << 1;
0x000b7e4a movs r2, r5 | r2 = r5;
0x000b7e4c lsls r7, r0, 0x18 | r7 = r0 << 0x18;
0x000b7e4e lsls r2, r5, 1 | r2 = r5 << 1;
0x000b7e50 lsls r4, r5, 4 | r4 = r5 << 4;
0x000b7e52 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7e54 lsls r7, r0, 2 | r7 = r0 << 2;
0x000b7e56 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7e58 lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7e5a lsls r7, r4, 0x15 | r7 = r4 << 0x15;
0x000b7e5c movs r4, r5 | r4 = r5;
0x000b7e5e movs r2, r5 | r2 = r5;
0x000b7e60 movs r4, r5 | r4 = r5;
0x000b7e62 lsls r2, r1, 1 | r2 = r1 << 1;
0x000b7e64 lsls r4, r1, 3 | r4 = r1 << 3;
0x000b7e66 movs r2, r5 | r2 = r5;
0x000b7e68 movs r4, r5 | r4 = r5;
0x000b7e6a lsls r5, r1, 5 | r5 = r1 << 5;
0x000b7e6c ldr r7, [r4, 0x5c] | r7 = *((r4 + 0x5c));
0x000b7e6e lsrs r6, r5, 0x11 | r6 = r5 >> 0x11;
0x000b7e70 lsls r5, r2, 2 | r5 = r2 << 2;
0x000b7e72 strh r7, [r4, 0x2e] | *((r4 + 0x2e)) = r7;
0x000b7e74 bx r4 | return uint32_t (*r4)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa5c26 */
| #include <stdint.h>
|
; (fcn) fcn.000a5c26 () | void fcn_000a5c26 (int16_t arg_8h, int16_t arg_38h, int16_t arg_0h, int16_t arg_30h, int16_t arg_40h, int16_t arg_4ch, int16_t arg_54h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_74h, int16_t arg_88h, int16_t arg1) {
| r0 = arg1;
0x000a5c26 bl 0x2b830 | fcn_0002b830 (r0);
0x000a5c2a ldr.w r2, [sl] | r2 = *(sl);
0x000a5c2e cmp r4, 0 |
0x000a5c30 str r0, [sp, 0x30] | *(arg_30h) = r0;
0x000a5c32 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x000a5c36 ldrb.w r0, [r2, 0x53] | r0 = *((r2 + 0x53));
0x000a5c3a mov r1, r3 | r1 = r3;
0x000a5c3c it lt |
| if (r4 >= 0) {
0x000a5c3e addlt r4, r3, -1 | r4 = r3 + -1;
| }
0x000a5c42 cmp r0, 0 |
| if (r0 != 0) {
0x000a5c44 bne 0xa5cb0 | goto label_5;
| }
0x000a5c46 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x000a5c4a add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x000a5c4e add.w r2, r2, r4, lsl 2 | r2 += (r4 << 2);
| label_2:
0x000a5c52 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x000a5c54 ldrb.w r2, [r6, 0x36] | r2 = *((r6 + 0x36));
| if (r2 != 0) {
0x000a5c58 cbnz r2, 0xa5cba | goto label_6;
| }
| label_3:
0x000a5c5a ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000a5c5c cmp r3, 0 |
0x000a5c5e itt lt |
| if (r3 >= 0) {
0x000a5c60 addlt r3, r1, -1 | r3 = r1 + -1;
| }
| if (r3 < 0) {
0x000a5c64 str r3, [sp, 0x30] | *(arg_30h) = r3;
| }
| if (r0 != 0) {
0x000a5c66 cbnz r0, 0xa5cac | goto label_7;
| }
0x000a5c68 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000a5c6a ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x000a5c6e add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000a5c72 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_1:
0x000a5c76 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x000a5c78 ldr r2, [sp, 0x88] | r2 = *(arg_88h);
| if (r2 != 0) {
0x000a5c7a cbnz r2, 0xa5c90 | goto label_8;
| }
| label_0:
0x000a5c7c mov r3, r6 | r3 = r6;
0x000a5c7e ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x000a5c80 adds r7, 1 | r7++;
0x000a5c82 cmp r6, 0 |
| if (r6 != 0) {
0x000a5c84 bne.w 0xa5b78 | void (*0xa5b78)() ();
| }
0x000a5c88 mov r7, sb | r7 = sb;
0x000a5c8a ldr.w sb, [sp, 0x54] | sb = *(arg_54h);
0x000a5c8e b 0xa59fe | void (*0xa59fe)() ();
| label_8:
0x000a5c90 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
0x000a5c94 mvns r2, r2 | r2 = ~r2;
0x000a5c96 ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x000a5c98 ldrd r3, r4, [r0, 0x38] | __asm ("ldrd r3, r4, [r0, 0x38]");
0x000a5c9c cmn r4, r3 |
| if (r4 < r3) {
0x000a5c9e bmi.w 0xa5e36 | goto label_9;
| }
0x000a5ca2 ldr r1, [r1, 0x6c] | r1 = *((r1 + 0x6c));
0x000a5ca4 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x000a5ca6 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
0x000a5caa b 0xa5c7c | goto label_0;
| label_7:
0x000a5cac ldr r3, [sp, 0x68] | r3 = *(arg_68h);
0x000a5cae b 0xa5c76 | goto label_1;
| label_5:
0x000a5cb0 ldr.w r2, [pc, 0x77c] |
0x000a5cb4 add r2, pc | r2 = 0x14c0e8;
0x000a5cb6 adds r2, 4 | r2 += 4;
0x000a5cb8 b 0xa5c52 | goto label_2;
| label_6:
0x000a5cba ldr.w r2, [fp, 0x38] | r2 = *(arg_38h);
0x000a5cbe movs r4, 0 | r4 = 0;
0x000a5cc0 ldrh r1, [r6, 0x32] | r1 = *((r6 + 0x32));
0x000a5cc2 add.w r8, r2, -1 | r8 = r2 + -1;
0x000a5cc6 str r2, [sp, 0x6c] | *(arg_6ch) = r2;
0x000a5cc8 str.w r8, [fp, 0x38] | __asm ("str.w r8, [arg_38h]");
| if (r1 == 0) {
0x000a5ccc cbz r1, 0xa5d04 | goto label_10;
| }
| do {
0x000a5cce ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000a5cd0 ldrsh.w r2, [r3, r4, lsl 1] | offset_0 = r4 << 1;
| r2 = *((r3 + offset_0));
0x000a5cd4 cmp r2, 0 |
| if (r2 >= 0) {
0x000a5cd6 blt 0xa5ce8 |
0x000a5cd8 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x000a5cdc add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x000a5ce0 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x000a5ce4 ldrb r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 != 0) {
0x000a5ce6 cbnz r3, 0xa5cfa | goto label_11;
| }
| }
0x000a5ce8 movs r3, 0 | r3 = 0;
0x000a5cea movs r1, 0x32 | r1 = 0x32;
0x000a5cec str r3, [sp] | *(sp) = r3;
0x000a5cee adds r2, r5, r4 | r2 = r5 + r4;
0x000a5cf0 mov r3, r8 | r3 = r8;
0x000a5cf2 mov r0, sl | r0 = sl;
0x000a5cf4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a5cf8 ldrh r1, [r6, 0x32] | r1 = *((r6 + 0x32));
| label_11:
0x000a5cfa adds r4, 1 | r4++;
0x000a5cfc cmp r1, r4 |
0x000a5cfe bgt 0xa5cce |
| } while (r1 > r4);
0x000a5d00 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
| label_10:
0x000a5d04 mov r4, r3 | r4 = r3;
0x000a5d06 ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x000a5d0a cmp r4, r3 |
| if (r4 >= r3) {
0x000a5d0c bge.w 0xa5ee2 | goto label_12;
| }
0x000a5d10 ldr.w r1, [sl, 0x68] | r1 = *((sl + 0x68));
0x000a5d14 add.w r3, r4, r4, lsl 2 | r3 = r4 + (r4 << 2);
0x000a5d18 adds r0, r4, 1 | r0 = r4 + 1;
0x000a5d1a str.w r0, [sl, 0x6c] | __asm ("str.w r0, [sl, 0x6c]");
0x000a5d1e movs r2, 0 | r2 = 0;
0x000a5d20 ldr r0, [sp, 0x40] | r0 = *(arg_40h);
0x000a5d22 mov.w lr, 5 | lr = 5;
0x000a5d26 add.w ip, r1, r3, lsl 2 |
0x000a5d2a strd r0, r2, [ip, 4] | __asm ("strd r0, r2, [ip, 4]");
0x000a5d2e strd r2, r2, [ip, 0xc] | __asm ("strd r2, r2, [ip, 0xc]");
0x000a5d32 str.w lr, [r1, r3, lsl 2] | __asm ("str.w lr, [r1, r3, lsl 2]");
| label_4:
0x000a5d36 mov r1, r8 | r1 = r8;
0x000a5d38 mov r0, sl | r0 = sl;
0x000a5d3a bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x000a5d3e ldr.w r3, [sl] | r3 = *(sl);
0x000a5d42 cmp r4, 0 |
0x000a5d44 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x000a5d48 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000a5d4c it lt |
| if (r4 >= 0) {
0x000a5d4e addlt r4, r1, -1 | r4 = r1 + -1;
| }
| if (r3 != 0) {
0x000a5d52 cbnz r3, 0xa5db6 | goto label_13;
| }
0x000a5d54 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x000a5d58 add.w r3, r4, r4, lsl 2 | r3 = r4 + (r4 << 2);
0x000a5d5c add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| do {
0x000a5d60 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x000a5d62 mov r0, sl | r0 = sl;
0x000a5d64 ldrh r1, [r6, 0x32] | r1 = *((r6 + 0x32));
0x000a5d66 mov r3, r8 | r3 = r8;
0x000a5d68 ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x000a5d6a strd r5, r1, [sp] | __asm ("strd r5, r1, [sp]");
0x000a5d6e movs r1, 0x27 | r1 = 0x27;
0x000a5d70 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x000a5d74 ldr.w r2, [pc, 0x6bc] |
0x000a5d78 movs r1, 3 | r1 = 3;
0x000a5d7a mov r0, sl | r0 = sl;
0x000a5d7c add r2, pc | r2 = 0x14c1b4;
0x000a5d7e bl 0x2b744 | fcn_0002b744 (r0, r1, r2);
0x000a5d82 mov r0, sl | r0 = sl;
0x000a5d84 ldr r1, [sp, 0x4c] | r1 = *(arg_4ch);
0x000a5d86 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x000a5d8a ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x000a5d8e ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x000a5d92 cmn r2, r3 |
| if (r2 < r3) {
0x000a5d94 bmi.w 0xa5eb0 | goto label_14;
| }
0x000a5d98 ldr r3, [sp, 0x6c] | r3 = *(arg_6ch);
0x000a5d9a ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x000a5d9c ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x000a5da0 lsls r3, r3, 2 | r3 <<= 2;
0x000a5da2 rsbs r3, r3, 0 | r3 -= ;
0x000a5da4 str r1, [r2, r3] | *((r2 + r3)) = r1;
0x000a5da6 ldr.w r3, [sl] | r3 = *(sl);
0x000a5daa ldrb.w r0, [r3, 0x53] | r0 = *((r3 + 0x53));
0x000a5dae b 0xa5c5a | goto label_3;
| label_13:
0x000a5db6 ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x000a5db8 b 0xa5d60 |
| } while (1);
| label_9:
0x000a5e36 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000a5e3a b 0xa5c7c | goto label_0;
| label_14:
0x000a5eb0 ldr r3, [sp, 0x6c] | r3 = *(arg_6ch);
0x000a5eb2 mov r1, sl | r1 = sl;
0x000a5eb4 rsbs r2, r3, 0 | r2 = r3 - ;
0x000a5eb6 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000a5eba ldr.w r3, [sl] | r3 = *(sl);
0x000a5ebe ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x000a5ec2 ldrb.w r0, [r3, 0x53] | r0 = *((r3 + 0x53));
0x000a5ec6 b 0xa5c5a | goto label_3;
| label_12:
0x000a5ee2 movs r3, 0 | r3 = 0;
0x000a5ee4 ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x000a5ee6 movs r1, 5 | r1 = 5;
0x000a5ee8 mov r0, sl | r0 = sl;
0x000a5eea str r3, [sp] | *(sp) = r3;
0x000a5eec bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x000a5ef0 mov r4, r0 | r4 = r0;
0x000a5ef2 b 0xa5d36 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa6484 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000a6484 () | void fcn_000a6484 (int16_t arg_0h, int16_t arg_ch, int16_t arg_68h, int16_t arg_6ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000a6484 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a6488 mov r6, r3 | r6 = r3;
0x000a648a ldr.w r8, [r0] | r8 = *(r0);
0x000a648c strh r0, [r0] | *(r0) = r0;
0x000a648e sub sp, 0x24 |
0x000a6490 mov r7, r1 | r7 = r1;
0x000a6492 ldrb.w r3, [r8, 0x53] | r3 = *((r8 + 0x53));
0x000a6496 cbz r3, 0xa64a6 |
| while (r0 != 0) {
| label_0:
0x000a6498 mov r1, r7 | r1 = r7;
0x000a649a mov r0, r8 | r0 = r8;
0x000a649c add sp, 0x24 |
0x000a649e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a64a2 b.w 0x18a68 | void (*0x18a68)() ();
0x000a64a6 mov r5, r0 | r5 = r0;
0x000a64a8 mov sb, r2 | sb = r2;
0x000a64aa bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x000a64ae mov r4, r0 | r4 = r0;
0x000a64b0 cmp r0, 0 |
0x000a64b2 bne 0xa6498 |
| }
0x000a64b4 add.w r2, r7, 8 | r2 = r7 + 8;
0x000a64b8 cmp r6, 0 |
| if (r6 != 0) {
0x000a64ba bne.w 0xa6722 | goto label_27;
| }
0x000a64be mov r1, sb | r1 = sb;
0x000a64c0 mov r0, r5 | r0 = r5;
0x000a64c2 bl 0x89708 | r0 = fcn_00089708 (r0, r1, r2);
0x000a64c6 mov sl, r0 | sl = r0;
0x000a64c8 cmp r0, 0 |
| if (r0 == 0) {
0x000a64ca beq 0xa6498 | goto label_0;
| }
| label_1:
0x000a64cc ldr.w r1, [sl, 0x48] | r1 = *((sl + 0x48));
0x000a64d0 ldr.w r2, [sl, 0x38] | r2 = *((sl + 0x38));
0x000a64d4 cmp r1, 0 |
| if (r1 == 0) {
0x000a64d6 beq.w 0xa699a | goto label_28;
| }
0x000a64da ldr.w ip, [r8, 0x10] | ip = *((r8 + 0x10));
0x000a64de ldr.w r3, [ip, 0xc] | r3 = *((ip + 0xc));
0x000a64e2 cmp r1, r3 |
| if (r1 == r3) {
0x000a64e4 beq.w 0xa67a6 | goto label_29;
| }
0x000a64e8 movs r3, 0x10 | r3 = 0x10;
0x000a64ea sub.w r0, ip, 4 | r0 = ip - 4;
0x000a64ee mov lr, r2 | lr = r2;
| do {
0x000a64f0 mov r6, r3 | r6 = r3;
0x000a64f2 adds r3, 0x10 | r3 += 0x10;
0x000a64f4 ldr r2, [r0, r3] | r2 = *((r0 + r3));
0x000a64f6 adds r4, 1 | r4++;
0x000a64f8 cmp r1, r2 |
0x000a64fa bne 0xa64f0 |
| } while (r1 != r2);
0x000a64fc mov r2, lr | r2 = lr;
0x000a64fe cmp r2, 0 |
| if (r2 != 0) {
0x000a6500 bne.w 0xa6786 | goto label_30;
| }
| label_4:
0x000a6504 cmp r4, 1 |
0x000a6506 it ne |
| if (r4 == 1) {
0x000a6508 addne ip, r6 |
| }
| if (r4 == 1) {
0x000a650a beq.w 0xa6756 | goto label_31;
| }
| label_5:
0x000a650e ldr.w r2, [pc, 0x624] | r2 = *(0x000a6b34);
0x000a6512 add r2, pc | r2 += pc;
| label_2:
0x000a6514 ldr.w fp, [ip] | fp = *(ip);
0x000a6518 movs r3, 0 | r3 = 0;
0x000a651a movs r1, 9 | r1 = 9;
0x000a651c mov r0, r5 | r0 = r5;
0x000a651e str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x000a6522 bl 0x25800 | r0 = fcn_00025800 (r0);
0x000a6526 cmp r0, 0 |
| if (r0 != 0) {
0x000a6528 bne 0xa6498 | goto label_0;
| }
0x000a652a cmp.w sb, 0 |
| if (sb == 0) {
0x000a652e beq.w 0xa6762 | goto label_32;
| }
0x000a6532 cmp r4, 1 |
0x000a6534 mov r3, r0 | r3 = r0;
0x000a6536 ite eq |
| if (r4 != 1) {
0x000a6538 moveq r1, 0xf | r1 = 0xf;
| }
| if (r4 == 1) {
0x000a653a movne r1, 0x11 | r1 = 0x11;
| }
| label_3:
0x000a653c ldr.w r2, [sl] | r2 = *(sl);
0x000a6540 mov r0, r5 | r0 = r5;
0x000a6542 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x000a6546 bl 0x25800 | r0 = fcn_00025800 (r0);
0x000a654a cmp r0, 0 |
| if (r0 != 0) {
0x000a654c bne 0xa6498 | goto label_0;
| }
0x000a654e ldr.w r2, [sl] | r2 = *(sl);
0x000a6552 mov r3, r0 | r3 = r0;
0x000a6554 movs r1, 9 | r1 = 9;
0x000a6556 mov r0, r5 | r0 = r5;
0x000a6558 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x000a655c bl 0x25800 | r0 = fcn_00025800 (r0);
0x000a6560 cmp r0, 0 |
| if (r0 != 0) {
0x000a6562 bne 0xa6498 | goto label_0;
| }
0x000a6564 ldr.w r1, [pc, 0x5d0] | r1 = *(0x000a6b38);
0x000a6568 movs r2, 7 | r2 = 7;
0x000a656a ldr.w r0, [sl] | r0 = *(sl);
0x000a656e add r1, pc | r1 += pc;
0x000a6570 blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a6574 cmp r0, 0 |
| if (r0 == 0) {
0x000a6576 beq.w 0xa67e4 | goto label_33;
| }
0x000a657a ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x000a657e lsls r3, r3, 0x13 | r3 <<= 0x13;
| if (r3 < r3) {
0x000a6580 bpl 0xa6594 |
0x000a6582 ldr.w r3, [r8, 0x20] | r3 = *((r8 + 0x20));
0x000a6586 lsls r0, r3, 3 | r0 = r3 << 3;
| if (r0 >= r3) {
0x000a6588 bpl 0xa6594 | goto label_7;
| }
0x000a658a ldr.w r3, [r8, 0x178] | r3 = *((r8 + 0x178));
0x000a658e cmp r3, 0 |
| if (r3 == 0) {
0x000a6590 beq.w 0xa69ba | goto label_34;
| }
| }
| label_7:
0x000a6594 ldr.w r3, [sl, 0xc] | r3 = *((sl + 0xc));
0x000a6598 cmp.w sb, 0 |
| if (sb == 0) {
0x000a659c beq.w 0xa67b0 | goto label_35;
| }
0x000a65a0 cmp r3, 0 |
| if (r3 == 0) {
0x000a65a2 beq.w 0xa6a54 | goto label_36;
| }
0x000a65a6 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x000a65a8 cmp r3, 0 |
| if (r3 == 0) {
0x000a65aa beq.w 0xa67ba | goto label_37;
| }
0x000a65ae mov r2, r4 | r2 = r4;
0x000a65b0 movs r1, 1 | r1 = 1;
0x000a65b2 mov r0, r5 | r0 = r5;
0x000a65b4 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x000a65b8 ldr r3, [r5] | r3 = *(r5);
0x000a65ba str r3, [sp, 0x14] | var_14h = r3;
| label_6:
0x000a65bc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000a65be ldr.w fp, [r5, 8] | fp = *((r5 + 8));
0x000a65c2 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a65c4 add r3, r6 | r3 += r6;
0x000a65c6 str r3, [sp, 0x18] | var_18h = r3;
0x000a65c8 cmp.w fp, 0 |
| if (fp == 0) {
0x000a65cc beq.w 0xa6846 | goto label_38;
| }
| label_10:
0x000a65d0 mov r2, r4 | r2 = r4;
0x000a65d2 movs r1, 1 | r1 = 1;
0x000a65d4 mov r0, r5 | r0 = r5;
0x000a65d6 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x000a65da ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x000a65de cmp r3, 0 |
| if (r3 != 0) {
0x000a65e0 bne.w 0xa694e | goto label_39;
| }
| label_13:
0x000a65e4 ldrb.w r1, [r5, 0x93] | r1 = *((r5 + 0x93));
0x000a65e8 mov r2, sl | r2 = sl;
0x000a65ea ldr r0, [r5] | r0 = *(r5);
0x000a65ec bl 0x1a618 | r0 = fcn_0001a618 (r0, r1, r2, r3);
| if (r0 == 0) {
0x000a65f0 cbz r0, 0xa6606 | goto label_40;
| }
0x000a65f2 str r4, [sp, 0x1c] | var_1ch = r4;
0x000a65f4 mov r4, r0 | r4 = r0;
| do {
0x000a65f6 mov r1, r4 | r1 = r4;
0x000a65f8 mov r0, r5 | r0 = r5;
0x000a65fa bl 0x77d58 | fcn_00077d58 (r0, r1);
0x000a65fe ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
0x000a6600 cmp r4, 0 |
0x000a6602 bne 0xa65f6 |
| } while (r4 != 0);
0x000a6604 ldr r4, [sp, 0x1c] | r4 = var_1ch;
| label_40:
0x000a6606 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x000a660a lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
| if (r0 < r3) {
0x000a660c bmi.w 0xa693a | goto label_41;
| }
| label_12:
0x000a6610 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a6612 mov r0, r5 | r0 = r5;
0x000a6614 ldr.w r1, [pc, 0x524] | r1 = *(0x000a6b3c);
0x000a6618 ldr r2, [r3] | r2 = *(r3);
0x000a661a add r1, pc | r1 += pc;
0x000a661c ldr.w r3, [sl] | r3 = *(sl);
0x000a6620 bl 0x77c00 | fcn_00077c00 (r0);
0x000a6624 cmp.w sb, 0 |
| if (sb != 0) {
0x000a6628 bne.w 0xa683a | goto label_42;
| }
0x000a662c ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x000a6630 cmp r3, 0 |
| if (r3 == 0) {
0x000a6632 beq.w 0xa69c6 | goto label_43;
| }
| label_9:
0x000a6636 movs r3, 0 | r3 = 0;
0x000a6638 movs r1, 0xa8 | r1 = 0xa8;
0x000a663a str r3, [sp, 8] | var_8h = r3;
0x000a663c mov r0, fp | r0 = fp;
0x000a663e ldr.w r2, [sl] | r2 = *(sl);
0x000a6642 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x000a6646 mov r2, r4 | r2 = r4;
0x000a6648 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x000a664c ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x000a664e movs r2, 1 | r2 = 1;
0x000a6650 cmp r3, 0 |
0x000a6652 it eq |
| if (r3 != 0) {
0x000a6654 moveq r3, r5 | r3 = r5;
| }
0x000a6656 strb r2, [r3, 0x15] | *((r3 + 0x15)) = r2;
| label_8:
0x000a6658 ldrd r1, r3, [fp, 0x6c] | __asm ("ldrd r1, r3, [arg_6ch]");
0x000a665c ldr.w sb, [sl] | sb = *(sl);
0x000a6660 cmp r1, r3 |
| if (r1 >= r3) {
0x000a6662 bge.w 0xa6988 | goto label_44;
| }
0x000a6666 add.w r3, r1, r1, lsl 2 | r3 = r1 + (r1 << 2);
0x000a666a ldr.w ip, [fp, 0x68] | ip = *(arg_68h);
0x000a666e adds r2, r1, 1 | r2 = r1 + 1;
0x000a6670 lsls r3, r3, 2 | r3 <<= 2;
0x000a6672 str.w r2, [fp, 0x6c] | __asm ("str.w r2, [arg_6ch]");
0x000a6676 movs r0, 0 | r0 = 0;
0x000a6678 add.w r2, ip, r3 | r2 = ip + r3;
0x000a667c mov.w lr, 0x93 | lr = 0x93;
0x000a6680 strd r4, r0, [r2, 4] | __asm ("strd r4, r0, [r2, 4]");
0x000a6684 strd r0, r0, [r2, 0xc] | __asm ("strd r0, r0, [r2, 0xc]");
0x000a6688 str.w lr, [ip, r3] | __asm ("str.w lr, [ip, r3]");
| label_15:
0x000a668c ldr.w r3, [fp] | r3 = *(fp);
0x000a6690 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 == 0) {
0x000a6694 cbnz r3, 0xa66ba |
0x000a6696 cmp r1, 0 |
0x000a6698 ldr.w r3, [fp, 0x68] | r3 = *(arg_68h);
0x000a669c it lt |
| if (r1 >= 0) {
0x000a669e ldrlt r1, [fp, 0x6c] | r1 = *(arg_6ch);
| }
0x000a66a2 mov r2, sb | r2 = sb;
0x000a66a4 mov r0, fp | r0 = fp;
0x000a66a6 it lt |
| if (r1 >= 0) {
0x000a66a8 addlt r1, r1, -1 | r1 += -1;
| }
0x000a66ac add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x000a66b0 add.w r1, r3, r1, lsl 2 | r1 = r3 + (r1 << 2);
0x000a66b4 movs r3, 0 | r3 = 0;
0x000a66b6 bl 0x1bdb4 | fcn_0001bdb4 (r0, r1, r2, r3);
| }
0x000a66ba ldr r3, [r5] | r3 = *(r5);
0x000a66bc mov r2, r4 | r2 = r4;
0x000a66be ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x000a66c0 movs r1, 0x60 | r1 = 0x60;
0x000a66c2 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000a66c4 add r3, r6 | r3 += r6;
0x000a66c6 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000a66c8 ldr r3, [r3] | r3 = *(r3);
0x000a66ca adds r3, 1 | r3++;
0x000a66cc str r3, [sp] | *(sp) = r3;
0x000a66ce movs r3, 1 | r3 = 1;
0x000a66d0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a66d4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000a66d6 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000a66d8 adds r2, r3, r6 | r2 = r3 + r6;
0x000a66da ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x000a66dc ldrh.w r1, [r2, 0x4e] | r1 = *((r2 + 0x4e));
0x000a66e0 lsls r1, r1, 0x1e | r1 <<= 0x1e;
| if (r1 >= r1) {
0x000a66e2 bpl.w 0xa6498 | goto label_0;
| }
0x000a66e6 ldr r4, [r2, 0x10] | r4 = *((r2 + 0x10));
| if (r4 == 0) {
0x000a66e8 cbz r4, 0xa6710 | goto label_45;
| }
0x000a66ea mov.w sb, 0 | sb = 0;
0x000a66ee mov sl, r0 | sl = r0;
| do {
0x000a66f0 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x000a66f2 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
| if (r3 != 0) {
0x000a66f4 cbz r3, 0xa6706 |
0x000a66f6 mov r1, r5 | r1 = r5;
0x000a66f8 mov r0, sl | r0 = sl;
0x000a66fa bl 0x18e70 | fcn_00018e70 (r0, r1);
0x000a66fe str.w sb, [r5, 4] | __asm ("str.w sb, [r5, 4]");
0x000a6702 strh.w sb, [r5, 0x2a] | *((r5 + 0x2a)) = sb;
| }
0x000a6706 ldr r4, [r4] | r4 = *(r4);
0x000a6708 cmp r4, 0 |
0x000a670a bne 0xa66f0 |
| } while (r4 != 0);
0x000a670c ldr r3, [sp, 0x14] | r3 = var_14h;
0x000a670e ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
| label_45:
0x000a6710 add r3, r6 | r3 += r6;
0x000a6712 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000a6714 ldrh.w r3, [r2, 0x4e] | r3 = *((r2 + 0x4e));
0x000a6718 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x000a671c strh.w r3, [r2, 0x4e] | *((r2 + 0x4e)) = r3;
0x000a6720 b 0xa6498 | goto label_0;
| label_27:
0x000a6722 ldrb.w r3, [r8, 0x57] | r3 = *((r8 + 0x57));
0x000a6726 mov r1, sb | r1 = sb;
0x000a6728 mov r0, r5 | r0 = r5;
0x000a672a adds r3, 1 | r3++;
0x000a672c strb.w r3, [r8, 0x57] | *((r8 + 0x57)) = r3;
0x000a6730 bl 0x89708 | fcn_00089708 (r0, r1, r2);
0x000a6734 ldrb.w r3, [r8, 0x57] | r3 = *((r8 + 0x57));
0x000a6738 mov sl, r0 | sl = r0;
0x000a673a subs r3, 1 | r3--;
0x000a673c strb.w r3, [r8, 0x57] | *((r8 + 0x57)) = r3;
0x000a6740 cmp r0, 0 |
| if (r0 != 0) {
0x000a6742 bne.w 0xa64cc | goto label_1;
| }
0x000a6746 mov r0, r5 | r0 = r5;
0x000a6748 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x000a674a bl 0x54114 | fcn_00054114 (r0, r1);
0x000a674e mov r0, r5 | r0 = r5;
0x000a6750 bl 0x2aec8 | fcn_0002aec8 (r0, r1);
0x000a6754 b 0xa6498 | goto label_0;
| label_31:
0x000a6756 ldr r2, [pc, 0x3e8] |
0x000a6758 add.w ip, ip, 0x10 |
0x000a675c movs r6, 0x10 | r6 = 0x10;
0x000a675e add r2, pc | r2 = 0x14d2a4;
0x000a6760 b 0xa6514 | goto label_2;
| label_32:
0x000a6762 ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
| if (r3 == 0) {
0x000a6766 cbz r3, 0xa679a | goto label_46;
| }
0x000a6768 ldr.w r3, [sl, 0x40] | r3 = *((sl + 0x40));
| if (r3 != 0) {
0x000a676c cbnz r3, 0xa6778 | goto label_47;
| }
0x000a676e b 0xa6b2e | goto label_48;
| do {
0x000a6770 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x000a6772 cmp r3, 0 |
| if (r3 == 0) {
0x000a6774 beq.w 0xa6b2e | goto label_48;
| }
| label_47:
0x000a6778 ldr r2, [r3] | r2 = *(r3);
0x000a677a cmp r8, r2 |
0x000a677c bne 0xa6770 |
| } while (r8 != r2);
0x000a677e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a6780 movs r1, 0x1e | r1 = 0x1e;
0x000a6782 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a6784 b 0xa653c | goto label_3;
| label_30:
0x000a6786 mov r1, sl | r1 = sl;
0x000a6788 mov r0, r5 | r0 = r5;
0x000a678a bl 0x70e88 | r0 = fcn_00070e88 (r0, r1);
0x000a678e cmp r0, 0 |
| if (r0 != 0) {
0x000a6790 bne.w 0xa6498 | goto label_0;
| }
0x000a6794 ldr.w ip, [r8, 0x10] | ip = *((r8 + 0x10));
0x000a6798 b 0xa6504 | goto label_4;
| label_46:
0x000a679a cmp r4, 1 |
0x000a679c mov r3, sb | r3 = sb;
0x000a679e ite eq |
| if (r4 != 1) {
0x000a67a0 moveq r1, 0xd | r1 = 0xd;
| }
| if (r4 == 1) {
0x000a67a2 movne r1, 0xb | r1 = 0xb;
| }
0x000a67a4 b 0xa653c | goto label_3;
| label_29:
0x000a67a6 cmp r2, 0 |
| if (r2 != 0) {
0x000a67a8 bne 0xa6820 | goto label_49;
| }
0x000a67aa mov r4, r2 | r4 = r2;
0x000a67ac mov r6, r2 | r6 = r2;
0x000a67ae b 0xa650e | goto label_5;
| label_35:
0x000a67b0 cmp r3, 0 |
| if (r3 != 0) {
0x000a67b2 bne 0xa6858 | goto label_50;
| }
0x000a67b4 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x000a67b6 cmp r3, 0 |
| if (r3 != 0) {
0x000a67b8 bne 0xa6868 | goto label_51;
| }
| label_37:
0x000a67ba ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x000a67bc cmp r3, 0 |
| if (r3 == 0) {
0x000a67be beq.w 0xa697a | goto label_52;
| }
| label_14:
0x000a67c2 mov r0, r5 | r0 = r5;
0x000a67c4 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x000a67c8 cmp r0, 0 |
| if (r0 == 0) {
0x000a67ca beq.w 0xa6498 | goto label_0;
| }
0x000a67ce mov r2, r4 | r2 = r4;
0x000a67d0 movs r1, 1 | r1 = 1;
0x000a67d2 mov r0, r5 | r0 = r5;
0x000a67d4 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x000a67d8 cmp.w sb, 0 |
| if (sb == 0) {
0x000a67dc beq 0xa6872 | goto label_53;
| }
| label_11:
0x000a67de ldr r3, [r5] | r3 = *(r5);
0x000a67e0 str r3, [sp, 0x14] | var_14h = r3;
0x000a67e2 b 0xa65bc | goto label_6;
| label_33:
0x000a67e4 ldr.w r0, [sl] | r0 = *(sl);
0x000a67e8 movs r2, 4 | r2 = 4;
0x000a67ea ldr r1, [pc, 0x358] |
0x000a67ec adds r0, 7 | r0 += 7;
0x000a67ee add r1, pc | r1 = 0x14d338;
0x000a67f0 blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a67f4 cmp r0, 0 |
| if (r0 == 0) {
0x000a67f6 beq.w 0xa6594 | goto label_7;
| }
0x000a67fa ldr.w r0, [sl] | r0 = *(sl);
0x000a67fe movs r2, 0xa | r2 = 0xa;
0x000a6800 ldr r1, [pc, 0x344] |
0x000a6802 adds r0, 7 | r0 += 7;
0x000a6804 add r1, pc | r1 = 0x14d350;
0x000a6806 blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a680a cmp r0, 0 |
| if (r0 == 0) {
0x000a680c beq.w 0xa6594 | goto label_7;
| }
| label_16:
0x000a6810 ldr r1, [pc, 0x338] |
0x000a6812 mov r0, r5 | r0 = r5;
0x000a6814 ldr.w r2, [sl] | r2 = *(sl);
0x000a6818 add r1, pc | r1 = 0x14d368;
0x000a681a bl 0x25778 | fcn_00025778 (r0);
0x000a681e b 0xa6498 | goto label_0;
| label_49:
0x000a6820 mov r1, sl | r1 = sl;
0x000a6822 mov r0, r5 | r0 = r5;
0x000a6824 bl 0x70e88 | r0 = fcn_00070e88 (r0, r1);
0x000a6828 mov r4, r0 | r4 = r0;
0x000a682a cmp r0, 0 |
| if (r0 != 0) {
0x000a682c bne.w 0xa6498 | goto label_0;
| }
0x000a6830 ldr.w ip, [r8, 0x10] | ip = *((r8 + 0x10));
0x000a6834 mov r6, r0 | r6 = r0;
0x000a6836 b 0xa650e | goto label_5;
| label_17:
0x000a6838 ldr r4, [sp, 0x18] | r4 = var_18h;
| label_42:
0x000a683a ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x000a683e cmp r3, 0 |
| if (r3 == 0) {
0x000a6840 beq.w 0xa6658 | goto label_8;
| }
0x000a6844 b 0xa6636 | goto label_9;
| label_38:
0x000a6846 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x000a6848 cmp r3, 0 |
| if (r3 == 0) {
0x000a684a beq.w 0xa6a46 | goto label_54;
| }
| label_21:
0x000a684e mov r0, r5 | r0 = r5;
0x000a6850 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x000a6854 mov fp, r0 |
0x000a6856 b 0xa65d0 | goto label_10;
| label_50:
0x000a6858 ldr r1, [pc, 0x2f4] |
0x000a685a mov r0, r5 | r0 = r5;
0x000a685c ldr.w r2, [sl] | r2 = *(sl);
0x000a6860 add r1, pc | r1 = 0x14d3b4;
0x000a6862 bl 0x25778 | fcn_00025778 (r0);
0x000a6866 b 0xa6498 | goto label_0;
| label_51:
0x000a6868 mov r2, r4 | r2 = r4;
0x000a686a movs r1, 1 | r1 = 1;
0x000a686c mov r0, r5 | r0 = r5;
0x000a686e bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
| label_53:
0x000a6872 ldr r2, [pc, 0x2e0] |
0x000a6874 mov r1, r4 | r1 = r4;
0x000a6876 ldr.w r3, [sl] | r3 = *(sl);
0x000a687a mov r0, r5 | r0 = r5;
0x000a687c add r2, pc | r2 = 0x14d3d6;
0x000a687e bl 0x77cc4 | fcn_00077cc4 (r0, r1, r2, r3);
0x000a6882 ldr r3, [r5] | r3 = *(r5);
0x000a6884 str r3, [sp, 0x14] | var_14h = r3;
0x000a6886 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x000a6888 lsls r2, r3, 0x11 | r2 = r3 << 0x11;
| if (r2 >= r3) {
0x000a688a bpl.w 0xa65bc | goto label_6;
| }
0x000a688e ldr.w r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x000a6892 str r3, [sp, 0x18] | var_18h = r3;
0x000a6894 cmp r3, 0 |
| if (r3 != 0) {
0x000a6896 bne.w 0xa65bc | goto label_6;
| }
0x000a689a ldr.w fp, [r5, 8] | fp = *((r5 + 8));
0x000a689e cmp.w fp, 0 |
| if (fp == 0) {
0x000a68a2 beq.w 0xa6afc | goto label_55;
| }
| label_25:
0x000a68a6 ldr.w r0, [sl, 0x48] | r0 = *((sl + 0x48));
0x000a68aa movs r2, 0 | r2 = 0;
0x000a68ac ldr.w r1, [sl] | r1 = *(sl);
0x000a68b0 adds r0, 0x38 | r0 += 0x38;
0x000a68b2 bl 0x168e4 | fcn_000168e4 (r0, r1, r2);
0x000a68b6 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x000a68b8 cmp r3, 0 |
| if (r3 == 0) {
0x000a68ba beq.w 0xa6a9a | goto label_56;
| }
0x000a68be movs r3, 1 | r3 = 1;
0x000a68c0 movs r2, 0 | r2 = 0;
0x000a68c2 strb.w r3, [r5, 0x93] | *((r5 + 0x93)) = r3;
0x000a68c6 mov r1, r7 | r1 = r7;
0x000a68c8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000a68ca bl 0x32550 | fcn_00032550 (r0, r1, r2, r3);
0x000a68ce movs r2, 0 | r2 = 0;
0x000a68d0 mov r1, r0 | r1 = r0;
0x000a68d2 mov r0, r5 | r0 = r5;
0x000a68d4 bl 0x8f8ac | fcn_0008f8ac (r0, r1, r2, r3);
0x000a68d8 movs r3, 0 | r3 = 0;
0x000a68da strb.w r3, [r5, 0x93] | *((r5 + 0x93)) = r3;
0x000a68de ldr r3, [sp, 0x14] | r3 = var_14h;
0x000a68e0 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x000a68e2 lsls r2, r3, 0xc | r2 = r3 << 0xc;
| if (r2 < r3) {
0x000a68e4 bmi.w 0xa67de | goto label_11;
| }
| label_24:
0x000a68e8 ldr.w r3, [fp, 0x6c] | r3 = *(arg_6ch);
0x000a68ec movs r2, 0 | r2 = 0;
0x000a68ee movs r1, 0x2f | r1 = 0x2f;
0x000a68f0 str r2, [sp] | *(sp) = r2;
0x000a68f2 mov r0, fp | r0 = fp;
0x000a68f4 adds r3, 2 | r3 += 2;
0x000a68f6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a68fa movs r2, 0 | r2 = 0;
0x000a68fc movs r1, 4 | r1 = 4;
0x000a68fe mov r3, r2 | r3 = r2;
0x000a6900 mov.w r2, -1 | r2 = -1;
0x000a6904 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x000a6908 mov r0, r5 | r0 = r5;
0x000a690a movs r2, 2 | r2 = 2;
0x000a690c movw r1, 0x313 | r1 = 0x313;
0x000a6910 bl 0x2b978 | fcn_0002b978 (r0, r1, r2, r3, r4, r5);
| label_23:
0x000a6914 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a6916 cmp r3, 0 |
| if (r3 == 0) {
0x000a6918 beq.w 0xa67de | goto label_11;
| }
0x000a691c ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a691e ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x000a6922 mvns r2, r3 | r2 = ~r3;
0x000a6924 ldrd r3, r1, [r0, 0x38] | __asm ("ldrd r3, r1, [r0, 0x38]");
0x000a6928 cmn r1, r3 |
| if (r1 < r3) {
0x000a692a bmi.w 0xa6b22 | goto label_57;
| }
0x000a692e ldr.w r1, [fp, 0x6c] | r1 = *(arg_6ch);
0x000a6932 ldr r3, [r0, 0x40] | r3 = *((r0 + 0x40));
0x000a6934 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
0x000a6938 b 0xa67de | goto label_11;
| label_41:
0x000a693a ldr r2, [sp, 0x18] | r2 = var_18h;
0x000a693c mov r0, r5 | r0 = r5;
0x000a693e ldr r1, [pc, 0x218] |
0x000a6940 ldr.w r3, [sl] | r3 = *(sl);
0x000a6944 ldr r2, [r2] | r2 = *(r2);
0x000a6946 add r1, pc | r1 = 0x14d4a4;
0x000a6948 bl 0x77c00 | fcn_00077c00 (r0);
0x000a694c b 0xa6610 | goto label_12;
| label_39:
0x000a694e ldrd r3, r2, [fp, 0x6c] | __asm ("ldrd r3, r2, [arg_6ch]");
0x000a6952 cmp r3, r2 |
| if (r3 >= r2) {
0x000a6954 bge.w 0xa6a8a | goto label_58;
| }
0x000a6958 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x000a695c adds r3, 1 | r3++;
0x000a695e str.w r3, [fp, 0x6c] | __asm ("str.w r3, [arg_6ch]");
0x000a6962 movs r0, 0xa6 | r0 = 0xa6;
0x000a6964 ldr.w r3, [fp, 0x68] | r3 = *(arg_68h);
0x000a6968 lsls r1, r1, 2 | r1 <<= 2;
0x000a696a movs r2, 0 | r2 = 0;
0x000a696c str r0, [r3, r1] | *((r3 + r1)) = r0;
0x000a696e add r3, r1 | r3 += r1;
0x000a6970 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x000a6974 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
0x000a6978 b 0xa65e4 | goto label_13;
| label_52:
0x000a697a ldr r3, [r5] | r3 = *(r5);
0x000a697c ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000a697e lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x000a6980 itt pl |
| if (r1 < r3) {
0x000a6982 movpl r3, 1 | r3 = 1;
| }
| if (r1 < r3) {
0x000a6984 strbpl r3, [r5, 0x17] | *((r5 + 0x17)) = r3;
| }
0x000a6986 b 0xa67c2 | goto label_14;
| label_44:
0x000a6988 movs r3, 0 | r3 = 0;
0x000a698a movs r1, 0x93 | r1 = 0x93;
0x000a698c mov r2, r4 | r2 = r4;
0x000a698e mov r0, fp | r0 = fp;
0x000a6990 str r3, [sp] | *(sp) = r3;
0x000a6992 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x000a6996 mov r1, r0 | r1 = r0;
0x000a6998 b 0xa668c | goto label_15;
| label_28:
0x000a699a cmp r2, 0 |
| if (r2 != 0) {
0x000a699c bne 0xa6a64 | goto label_59;
| }
0x000a699e ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x000a69a2 movs r6, 0 | r6 = 0;
0x000a69a4 ldr r2, [pc, 0x1b4] |
0x000a69a6 mov.w r4, 0x8000 | r4 = fcn.00008000;
0x000a69aa movt r6, 0xfff8 | r6 = (r6 & 0xFFFF) | 0xfff80000;
0x000a69ae movt r4, 0xffff | r4 = (r4 & 0xFFFF) | 0xffff0000;
0x000a69b2 sub.w ip, r3, 0x80000 |
0x000a69b6 add r2, pc | r2 = 0x14d516;
0x000a69b8 b 0xa6514 | goto label_2;
| label_34:
0x000a69ba ldr.w r3, [r8, 0xbc] | r3 = *((r8 + 0xbc));
0x000a69be cmp r3, 0 |
| if (r3 != 0) {
0x000a69c0 bne.w 0xa6594 | goto label_7;
| }
0x000a69c4 b 0xa6810 | goto label_16;
| label_43:
0x000a69c6 ldr.w r3, [sl, 0x1c] | r3 = *((sl + 0x1c));
0x000a69ca mov ip, sb |
0x000a69cc str r4, [sp, 0x18] | var_18h = r4;
0x000a69ce mov sb, r3 | sb = r3;
| label_18:
0x000a69d0 clz lr, ip | lr &= ip;
0x000a69d4 ldr.w r3, [sl, 8] | r3 = *((sl + 8));
0x000a69d8 lsr.w lr, lr, 5 | lr >>= 5;
0x000a69dc cmp sb, ip |
0x000a69de ite hs |
| if (sb < ip) {
0x000a69e0 movhs r4, lr | r4 = lr;
| }
| if (sb >= ip) {
0x000a69e2 orrlo r4, lr, 1 | r4 = lr | 1;
| }
| if (r4 != 0) {
0x000a69e6 cbnz r4, 0xa6a3e | goto label_60;
| }
0x000a69e8 cmp r3, 0 |
| if (r3 == 0) {
0x000a69ea beq.w 0xa6838 | goto label_17;
| }
| do {
| label_19:
0x000a69ee ldr r2, [r3, 0x2c] | r2 = *((r3 + 0x2c));
0x000a69f0 cmp ip, r2 |
0x000a69f2 ite ls |
| if (ip > r2) {
0x000a69f4 movls r1, lr | r1 = lr;
| }
| if (ip <= r2) {
0x000a69f6 orrhi r1, lr, 1 | r1 = lr | 1;
| }
| if (r1 != 0) {
0x000a69fa cbz r1, 0xa6a02 |
0x000a69fc cmp r4, r2 |
0x000a69fe it lo |
| if (r4 < r2) {
0x000a6a00 movlo r4, r2 | r4 = r2;
| goto label_61;
| }
| }
| label_61:
0x000a6a02 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000a6a04 cmp r3, 0 |
0x000a6a06 bne 0xa69ee |
| } while (r3 != 0);
| label_20:
0x000a6a08 cmp r4, 0 |
| if (r4 == 0) {
0x000a6a0a beq.w 0xa6838 | goto label_17;
| }
0x000a6a0e ldr.w r2, [sl, 0x48] | r2 = *((sl + 0x48));
0x000a6a12 ldr r3, [r5] | r3 = *(r5);
0x000a6a14 cmp r2, 0 |
| if (r2 == 0) {
0x000a6a16 beq 0xa6b0a | goto label_62;
| }
0x000a6a18 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x000a6a1a mov.w ip, 0 |
0x000a6a1e ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x000a6a20 cmp r2, r3 |
| if (r2 == r3) {
0x000a6a22 beq 0xa6a30 | goto label_26;
| }
| do {
0x000a6a24 ldr r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x000a6a26 adds r1, 0x10 | r1 += 0x10;
0x000a6a28 add.w ip, ip, 1 |
0x000a6a2c cmp r2, r3 |
0x000a6a2e bne 0xa6a24 |
| } while (r2 != r3);
| label_26:
0x000a6a30 mov r2, ip | r2 = ip;
0x000a6a32 mov r1, r4 | r1 = r4;
0x000a6a34 mov r0, r5 | r0 = r5;
0x000a6a36 bl 0x77f00 | fcn_00077f00 (r0, r1, r2);
0x000a6a38 invalid |
0x000a6a3c b 0xa69d0 | goto label_18;
| label_60:
0x000a6a3e mov r4, sb | r4 = sb;
0x000a6a40 cmp r3, 0 |
| if (r3 != 0) {
0x000a6a42 bne 0xa69ee | goto label_19;
| }
0x000a6a44 b 0xa6a08 | goto label_20;
| label_54:
0x000a6a46 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000a6a48 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000a6a4a lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x000a6a4c itt pl |
| if (r3 < r3) {
0x000a6a4e movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x000a6a50 strbpl r3, [r5, 0x17] | *((r5 + 0x17)) = r3;
| }
0x000a6a52 b 0xa684e | goto label_21;
| label_36:
0x000a6a54 ldr r1, [pc, 0x108] |
0x000a6a56 mov r0, r5 | r0 = r5;
0x000a6a58 ldr.w r2, [sl] | r2 = *(sl);
0x000a6a5c add r1, pc | r1 = 0x14d5c0;
0x000a6a5e bl 0x25778 | fcn_00025778 (r0);
0x000a6a62 b 0xa6498 | goto label_0;
| label_59:
0x000a6a64 mov r1, sl | r1 = sl;
0x000a6a66 mov r0, r5 | r0 = r5;
0x000a6a68 bl 0x70e88 | r0 = fcn_00070e88 (r0, r1);
0x000a6a6c cmp r0, 0 |
| if (r0 != 0) {
0x000a6a6e bne.w 0xa6498 | goto label_0;
| }
0x000a6a72 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x000a6a76 movs r6, 0 | r6 = 0;
0x000a6a78 mov.w r4, 0x8000 | r4 = fcn.00008000;
0x000a6a7c movt r6, 0xfff8 | r6 = (r6 & 0xFFFF) | 0xfff80000;
0x000a6a80 movt r4, 0xffff | r4 = (r4 & 0xFFFF) | 0xffff0000;
0x000a6a84 sub.w ip, r3, 0x80000 |
0x000a6a88 b 0xa650e | goto label_5;
| label_58:
0x000a6a8a movs r3, 0 | r3 = 0;
0x000a6a8c movs r1, 0xa6 | r1 = 0xa6;
0x000a6a8e mov r2, r3 | r2 = r3;
0x000a6a90 mov r0, fp | r0 = fp;
0x000a6a92 str r3, [sp] | *(sp) = r3;
0x000a6a94 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000a6a98 b 0xa65e4 | goto label_13;
| label_56:
0x000a6a9a ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000a6a9e ldr r1, [sp, 0x14] | r1 = var_14h;
| if (r3 != 0) {
0x000a6aa0 cbnz r3, 0xa6ab2 | goto label_63;
| }
0x000a6aa2 b 0xa67de | goto label_11;
| label_22:
0x000a6aa4 ldr r2, [r1, 0x20] | r2 = *((r1 + 0x20));
0x000a6aa6 lsls r0, r2, 0xc | r0 = r2 << 0xc;
| if (r0 < r2) {
0x000a6aa8 bmi 0xa6ab8 | goto label_64;
| }
0x000a6aaa ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a6aac cmp r3, 0 |
| if (r3 == 0) {
0x000a6aae beq.w 0xa67de | goto label_11;
| }
| label_63:
0x000a6ab2 ldrb r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x000a6ab4 cmp r2, 0 |
| if (r2 == 0) {
0x000a6ab6 beq 0xa6aa4 | goto label_22;
| }
| label_64:
0x000a6ab8 ldr r3, [r5, 0x38] | r3 = *((r5 + 0x38));
0x000a6aba movs r2, 0 | r2 = 0;
0x000a6abc movs r1, 0x2f | r1 = 0x2f;
0x000a6abe mov r0, fp | r0 = fp;
0x000a6ac0 subs r3, 1 | r3--;
0x000a6ac2 str r3, [r5, 0x38] | *((r5 + 0x38)) = r3;
0x000a6ac4 str r2, [sp] | *(sp) = r2;
0x000a6ac6 movs r2, 1 | r2 = 1;
0x000a6ac8 str r3, [sp, 0x18] | var_18h = r3;
0x000a6aca bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a6ace movs r3, 1 | r3 = 1;
0x000a6ad0 movs r2, 0 | r2 = 0;
0x000a6ad2 strb.w r3, [r5, 0x93] | *((r5 + 0x93)) = r3;
0x000a6ad6 mov r1, r7 | r1 = r7;
0x000a6ad8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000a6ada bl 0x32550 | fcn_00032550 (r0, r1, r2, r3);
0x000a6ade movs r2, 0 | r2 = 0;
0x000a6ae0 mov r1, r0 | r1 = r0;
0x000a6ae2 mov r0, r5 | r0 = r5;
0x000a6ae4 bl 0x8f8ac | fcn_0008f8ac (r0, r1, r2, r3);
0x000a6ae8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000a6aea mov.w r2, 0 | r2 = 0;
0x000a6aee strb.w r2, [r5, 0x93] | *((r5 + 0x93)) = r2;
0x000a6af2 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x000a6af4 lsls r3, r3, 0xc | r3 <<= 0xc;
| if (r3 < r3) {
0x000a6af6 bmi.w 0xa6914 | goto label_23;
| }
0x000a6afa b 0xa68e8 | goto label_24;
| label_55:
0x000a6afc ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
0x000a6afe cbz r3, 0xa6b14 |
| while (1) {
0x000a6b00 mov r0, r5 | r0 = r5;
0x000a6b02 bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x000a6b06 mov fp, r0 |
0x000a6b08 b 0xa68a6 | goto label_25;
| label_62:
0x000a6b0a mov.w ip, 0x8000 |
0x000a6b0e movt ip, 0xffff |
0x000a6b12 b 0xa6a30 | goto label_26;
0x000a6b14 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000a6b16 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000a6b18 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x000a6b1a itt pl |
| if (r3 < r3) {
0x000a6b1c movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x000a6b1e strbpl r3, [r5, 0x17] | *((r5 + 0x17)) = r3;
| }
0x000a6b20 b 0xa6b00 |
| }
| label_57:
0x000a6b22 mov r1, fp | r1 = fp;
0x000a6b24 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x000a6b28 ldr r3, [r5] | r3 = *(r5);
0x000a6b2a str r3, [sp, 0x14] | var_14h = r3;
0x000a6b2c b 0xa65bc | goto label_6;
| label_48:
0x000a6b2e movs r3, 0 | r3 = 0;
0x000a6b30 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000a6b32 udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa6b64 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000a6b64 () | void fcn_000a6b64 (int16_t arg_1h, int16_t arg_4h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ah, int16_t arg_38h, int16_t arg_48h, int16_t arg_100h, int16_t arg_108h, int16_t arg_10ch, int16_t arg_110h, int16_t arg_114h, int16_t arg_118h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_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;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_a8h;
| int16_t var_d4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000a6b64 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a6b68 mov r4, r2 | r4 = r2;
0x000a6b6a ldr.w r2, [pc, 0xb40] | r2 = *(0x000a76ac);
0x000a6b6e mov r8, r3 | r8 = r3;
0x000a6b70 sub sp, 0xdc |
0x000a6b72 ldr.w r3, [pc, 0xb3c] |
0x000a6b76 add r2, pc | r2 += pc;
0x000a6b78 ldr r7, [r0] | r7 = *(r0);
0x000a6b7a ldr.w sb, [sp, 0x100] | sb = *(arg_100h);
0x000a6b7e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000a6b80 ldrb.w r2, [sp, 0x118] | r2 = *(arg_118h);
0x000a6b84 ldr r6, [sp, 0x10c] | r6 = *(arg_10ch);
0x000a6b86 ldr r3, [r3] | r3 = *(0xa76b2);
0x000a6b88 str r3, [sp, 0xd4] | var_d4h = r3;
0x000a6b8a mov.w r3, 0 | r3 = 0;
0x000a6b8e movs r3, 0 | r3 = 0;
0x000a6b90 strd r3, r3, [sp, 0x44] | __asm ("strd r3, r3, [var_44h]");
0x000a6b94 ldr r3, [sp, 0x108] | r3 = *(arg_108h);
0x000a6b96 str r2, [sp, 0x10] | var_10h = r2;
0x000a6b98 str r3, [sp, 0x14] | var_14h = r3;
0x000a6b9a ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x000a6b9e cmp r3, 0 |
| if (r3 != 0) {
0x000a6ba0 bne 0xa6c26 | goto label_0;
| }
0x000a6ba2 ldr r3, [r0, 0x24] | r3 = *(arg_100hx24);
0x000a6ba4 mov r5, r0 | r5 = r0;
0x000a6ba6 cmp r3, 0 |
| if (r3 > 0) {
0x000a6ba8 bgt 0xa6c26 | goto label_0;
| }
0x000a6baa ldrb.w r3, [r0, 0xc8] | r3 = *(arg_100hxc8);
0x000a6bae ldr r2, [sp, 0x10] | r2 = var_10h;
0x000a6bb0 sub.w r3, r3, 1 | r3--;
0x000a6bb4 clz r3, r3 | r3 &= r3;
0x000a6bb8 cmp r2, 2 |
0x000a6bba lsr.w r3, r3, 5 | r3 >>= 5;
0x000a6bbe it eq |
| if (r2 != 2) {
0x000a6bc0 moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x000a6bc2 cbnz r3, 0xa6c26 | goto label_0;
| }
0x000a6bc4 mov sl, r1 | sl = r1;
0x000a6bc6 bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x000a6bca mov r3, r0 | r3 = r0;
0x000a6bcc str r0, [sp, 0x18] | var_18h = r0;
| if (r0 != 0) {
0x000a6bce cbnz r0, 0xa6c26 | goto label_0;
| }
0x000a6bd0 cmp.w sb, 0 |
| if (sb == 0) {
0x000a6bd4 beq 0xa6c78 | goto label_46;
| }
0x000a6bd6 ldr.w r1, [sb] | r1 = *(sb);
0x000a6bda cmp r1, 0 |
| if (r1 > 0) {
0x000a6bdc bgt 0xa6be4 | goto label_47;
| }
0x000a6bde b 0xa6c78 | goto label_46;
| do {
0x000a6be0 cmp r3, r1 |
| if (r3 == r1) {
0x000a6be2 beq 0xa6c78 | goto label_46;
| }
| label_47:
0x000a6be4 adds r3, 1 | r3++;
0x000a6be6 add.w r2, sb, r3, lsl 4 | r2 = sb + (r3 << 4);
0x000a6bea ldrb r0, [r2, 1] | r0 = *((r2 + 1));
0x000a6bec lsls r0, r0, 0x1a | r0 <<= 0x1a;
0x000a6bee bpl 0xa6be0 |
| } while (r0 >= r0);
0x000a6bf0 ldrb r3, [r2] | r3 = *(r2);
0x000a6bf2 cmp r3, 3 |
0x000a6bf4 it ne |
| if (r3 != 3) {
0x000a6bf6 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r3 == 3) {
0x000a6bf8 beq.w 0xa6edc | goto label_48;
| }
0x000a6bfc ldr.w r2, [pc, 0xab4] |
0x000a6c00 add r2, pc | r2 = 0x14e2b8;
| label_6:
0x000a6c02 ldr.w r1, [pc, 0xab4] |
0x000a6c06 mov r0, r5 | r0 = r5;
0x000a6c08 mov.w sl, 0 | sl = 0;
0x000a6c0c add r1, pc | r1 = 0x14e2ca;
0x000a6c0e bl 0x25778 | fcn_00025778 (r0);
| if (r6 != 0) {
0x000a6c12 cbnz r6, 0xa6c2c | goto label_49;
| }
0x000a6c14 mov r1, sb | r1 = sb;
0x000a6c16 mov r0, r7 | r0 = r7;
0x000a6c18 bl 0x18c5c | fcn_00018c5c (r0, r1);
0x000a6c1c mov r1, r8 | r1 = r8;
0x000a6c1e mov r0, r7 | r0 = r7;
0x000a6c20 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x000a6c24 b 0xa6c58 |
| while (r2 < r0) {
| label_0:
0x000a6c26 mov.w sl, 0 | sl = 0;
| if (r6 != 0) {
| label_1:
0x000a6c2a cbz r6, 0xa6c34 |
| label_49:
0x000a6c2c mov r1, r6 | r1 = r6;
0x000a6c2e mov r0, r7 | r0 = r7;
0x000a6c30 bl 0x18bd0 | fcn_00018bd0 (r0, r1);
| }
0x000a6c34 cmp.w sb, 0 |
| if (sb != 0) {
0x000a6c38 beq 0xa6c42 |
| label_39:
0x000a6c3a mov r1, sb | r1 = sb;
0x000a6c3c mov r0, r7 | r0 = r7;
0x000a6c3e bl 0x18c5c | fcn_00018c5c (r0, r1);
| }
0x000a6c42 mov r1, r8 | r1 = r8;
0x000a6c44 mov r0, r7 | r0 = r7;
0x000a6c46 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x000a6c4a cmp.w sl, 0 |
| if (sl != 0) {
0x000a6c4e beq 0xa6c58 |
| label_40:
0x000a6c50 mov r1, sl | r1 = sl;
0x000a6c52 mov r0, r7 | r0 = r7;
0x000a6c54 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x000a6c58 ldr.w r2, [pc, 0xa60] |
0x000a6c5c ldr.w r3, [pc, 0xa50] | r3 = *(0xa76b0);
0x000a6c60 add r2, pc | r2 = 0x14e320;
0x000a6c62 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a6c64 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a6c66 ldr r3, [sp, 0xd4] | r3 = var_d4h;
0x000a6c68 eors r2, r3 | r2 ^= r3;
0x000a6c6a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a6c6e bne.w 0xa7544 | goto label_50;
| }
0x000a6c72 add sp, 0xdc |
0x000a6c74 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_46:
0x000a6c78 cmp.w r8, 0 |
| if (r8 == 0) {
0x000a6c7c beq.w 0xa6dde | goto label_51;
| }
0x000a6c80 mov r2, r4 | r2 = r4;
0x000a6c82 mov r1, sl | r1 = sl;
0x000a6c84 add r3, sp, 0x44 | r3 += var_44h;
0x000a6c86 mov r0, r5 | r0 = r5;
0x000a6c88 bl 0x25870 | r0 = fcn_00025870 (r0, r1, r2, r3);
0x000a6c8c subs r2, r0, 0 | r2 = r0 - 0;
0x000a6c8e str r2, [sp, 0x18] | var_18h = r2;
0x000a6c90 blt 0xa6c26 |
| }
0x000a6c92 ldrb.w r3, [r7, 0xa9] | r3 = *((r7 + 0xa9));
0x000a6c96 cmp r3, 0 |
| if (r3 == 0) {
0x000a6c98 beq.w 0xa6ee4 | goto label_52;
| }
0x000a6c9c mov r3, r2 | r3 = r2;
| label_7:
0x000a6c9e sub.w ip, r3, 1 |
0x000a6ca2 lsls r2, r3, 4 | r2 = r3 << 4;
0x000a6ca4 clz ip, ip |
0x000a6ca8 lsr.w ip, ip, 5 |
0x000a6cac str r2, [sp, 0x1c] | var_1ch = r2;
| label_20:
0x000a6cae ldr r3, [r5] | r3 = *(r5);
0x000a6cb0 ldr.w r0, [pc, 0xa0c] | r0 = *(0x000a76c0);
0x000a6cb4 ldr.w r1, [pc, 0xa0c] | r1 = *(0x000a76c4);
0x000a6cb8 ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
0x000a6cba ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000a6cbc add r0, pc | r0 += pc;
0x000a6cbe ldr.w r2, [pc, 0xa08] | r2 = *(0x000a76c8);
0x000a6cc2 add r1, pc | r1 += pc;
0x000a6cc4 ldr.w sl, [pc, 0xa04] | sl = *(0x000a76cc);
0x000a6cc8 add.w lr, r4, r3 | lr = r4 + r3;
0x000a6ccc ldr r4, [r4, r3] | r4 = *((r4 + r3));
0x000a6cce ldr r3, [sp, 0x44] | r3 = var_44h;
0x000a6cd0 add r2, pc | r2 += pc;
0x000a6cd2 str r0, [sp, 0x5c] | var_5ch = r0;
0x000a6cd4 add sl, pc | sl += pc;
0x000a6cd6 ldr.w r0, [lr, 0xc] | r0 = *((lr + 0xc));
0x000a6cda str r3, [sp, 0x84] | var_84h = r3;
0x000a6cdc add r3, sp, 0x54 | r3 += var_54h;
0x000a6cde str r4, [sp, 0x7c] | var_7ch = r4;
0x000a6ce0 movs r4, 0 | r4 = 0;
0x000a6ce2 str r3, [sp, 0x70] | var_70h = r3;
0x000a6ce4 add r3, sp, 0x88 | r3 += var_88h;
0x000a6ce6 str r1, [sp, 0x80] | var_80h = r1;
0x000a6ce8 mov r1, r4 | r1 = r4;
0x000a6cea str r2, [sp, 0x60] | var_60h = r2;
0x000a6cec movs r2, 0x4c | r2 = 0x4c;
0x000a6cee str r0, [sp, 0x74] | var_74h = r0;
0x000a6cf0 mov r0, r3 | r0 = r3;
0x000a6cf2 strb.w ip, [sp, 0x78] | var_78h = ip;
0x000a6cf6 str r5, [sp, 0x54] | var_54h = r5;
0x000a6cf8 str.w sl, [sp, 0x64] | __asm ("str.w sl, [var_64h]");
0x000a6cfc str r5, [sp, 0x58] | var_58h = r5;
0x000a6cfe str r4, [sp, 0x68] | var_68h = r4;
0x000a6d00 strh.w r4, [sp, 0x6c] | var_6ch = r4;
0x000a6d04 blx 0x8264 | r0 = fcn_00008264 ();
0x000a6d08 mov r1, r0 | r1 = r0;
0x000a6d0a add r0, sp, 0x58 | r0 += var_58h;
0x000a6d0c str.w r8, [sp, 0xa8] | __asm ("str.w r8, [var_a8h]");
0x000a6d10 bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
0x000a6d14 add.w r2, r8, 8 | r2 = r8 + 8;
0x000a6d18 mov r1, r4 | r1 = r4;
0x000a6d1a mov r0, r5 | r0 = r5;
0x000a6d1c bl 0x89708 | r0 = fcn_00089708 (r0, r1, r2);
0x000a6d20 mov fp, r0 |
0x000a6d22 cmp r0, 0 |
| if (r0 == 0) {
0x000a6d24 beq.w 0xa6c26 | goto label_0;
| }
0x000a6d28 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a6d2a ldr r1, [r7, 0x10] | r1 = *((r7 + 0x10));
0x000a6d2c ldr r0, [r0] | r0 = *(r0);
0x000a6d2e cmp r3, 1 |
| if (r3 == 1) {
0x000a6d30 beq.w 0xa6fec | goto label_53;
| }
| label_10:
0x000a6d34 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x000a6d38 ands r3, r3, 0x80 | r3 &= 0x80;
0x000a6d3c it eq |
| if (r3 != r3) {
0x000a6d3e streq r3, [sp, 0x24] | var_24h = r3;
| }
| if (r3 == r3) {
0x000a6d40 beq 0xa6d60 | goto label_54;
| }
0x000a6d42 ldr.w r3, [fp, 8] | r3 = *(arg_108h);
0x000a6d46 str r3, [sp, 0x24] | var_24h = r3;
0x000a6d48 ldr r2, [sp, 0x24] | r2 = var_24h;
| if (r3 != 0) {
0x000a6d4a cbnz r3, 0xa6d52 | goto label_55;
| }
0x000a6d4c b 0xa6d60 | goto label_54;
| do {
0x000a6d4e ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
| if (r2 == 0) {
0x000a6d50 cbz r2, 0xa6d5e | goto label_56;
| }
| label_55:
0x000a6d52 ldrb.w r3, [r2, 0x37] | r3 = *((r2 + 0x37));
0x000a6d56 and r3, r3, 3 | r3 &= 3;
0x000a6d5a cmp r3, 2 |
0x000a6d5c bne 0xa6d4e |
| } while (r3 != 2);
| label_56:
0x000a6d5e str r2, [sp, 0x24] | var_24h = r2;
| label_54:
0x000a6d60 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000a6d62 movs r2, 7 | r2 = 7;
0x000a6d64 adds r3, r1, r3 | r3 = r1 + r3;
0x000a6d66 ldr.w r1, [pc, 0x968] |
0x000a6d6a str r3, [sp, 0x20] | var_20h = r3;
0x000a6d6c add r1, pc | r1 = 0x14e442;
0x000a6d6e blx 0x85a8 | r0 = fcn_000085a8 ();
0x000a6d72 cmp r0, 0 |
| if (r0 != 0) {
0x000a6d74 bne 0xa6e2e | goto label_57;
| }
0x000a6d76 ldrb.w r3, [r7, 0xa9] | r3 = *((r7 + 0xa9));
0x000a6d7a cmp r3, 0 |
| if (r3 != 0) {
0x000a6d7c bne 0xa6e2e | goto label_57;
| }
0x000a6d7e ldr.w r1, [pc, 0x954] | r1 = *(0x000a76d4);
0x000a6d82 mov r0, r5 | r0 = r5;
0x000a6d84 ldr.w r2, [fp] | r2 = *(fp);
0x000a6d88 mov sl, r3 | sl = r3;
0x000a6d8a add r1, pc | r1 += pc;
0x000a6d8c bl 0x25778 | fcn_00025778 (r0);
| label_4:
0x000a6d90 ldr.w r4, [fp, 8] | r4 = *(arg_108h);
0x000a6d94 add.w r2, fp, 8 | r2 += arg_108h;
0x000a6d98 cmp r4, 0 |
| if (r4 == 0) {
0x000a6d9a beq.w 0xa6c2a | goto label_1;
| }
| label_26:
0x000a6d9e ldrb.w r1, [r4, 0x36] | r1 = *((r4 + 0x36));
0x000a6da2 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a6da4 cmp r1, 5 |
| if (r1 == 5) {
0x000a6da6 beq 0xa6dbe | goto label_3;
| }
| label_2:
0x000a6da8 add.w r2, r4, 0x14 | r2 = r4 + 0x14;
0x000a6dac cmp r3, 0 |
| if (r3 == 0) {
0x000a6dae beq.w 0xa6c2a | goto label_1;
| }
0x000a6db2 mov r4, r3 | r4 = r3;
0x000a6db4 ldrb.w r1, [r4, 0x36] | r1 = *((r4 + 0x36));
0x000a6db8 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a6dba cmp r1, 5 |
| if (r1 != 5) {
0x000a6dbc bne 0xa6da8 | goto label_2;
| }
| label_3:
0x000a6dbe cmp r3, 0 |
| if (r3 == 0) {
0x000a6dc0 beq.w 0xa6c2a | goto label_1;
| }
0x000a6dc4 ldrb.w r1, [r3, 0x36] | r1 = *((r3 + 0x36));
0x000a6dc8 cmp r1, 5 |
| if (r1 == 5) {
0x000a6dca beq.w 0xa6c2a | goto label_1;
| }
0x000a6dce str r3, [r2] | *(r2) = r3;
0x000a6dd0 mov r2, r3 | r2 = r3;
0x000a6dd2 ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x000a6dd4 str r1, [r4, 0x14] | *((r4 + 0x14)) = r1;
0x000a6dd6 str r4, [r2, 0x14]! | *((r2 += 0x14)) = r4;
0x000a6dda ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a6ddc b 0xa6dbe | goto label_3;
| label_51:
0x000a6dde ldr.w fp, [r5, 0xe4] | fp = *((r5 + 0xe4));
0x000a6de2 cmp.w fp, 0 |
| if (fp == 0) {
0x000a6de6 beq.w 0xa6c26 | goto label_0;
| }
0x000a6dea ldr.w r1, [fp, 0x48] | r1 = *(arg_48h);
0x000a6dee ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x000a6df0 str r2, [sp, 0x20] | var_20h = r2;
0x000a6df2 cmp r1, 0 |
| if (r1 == 0) {
0x000a6df4 beq.w 0xa7548 | goto label_58;
| }
0x000a6df8 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x000a6dfa cmp r1, r3 |
| if (r1 == r3) {
0x000a6dfc beq.w 0xa6f06 | goto label_59;
| }
0x000a6e00 mov r3, r2 | r3 = r2;
0x000a6e02 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000a6e04 adds r3, 0x10 | r3 += 0x10;
| do {
0x000a6e06 mov ip, r3 |
0x000a6e08 adds r2, 1 | r2++;
0x000a6e0a ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x000a6e0c adds r3, 0x10 | r3 += 0x10;
0x000a6e0e lsls r4, r2, 4 | r4 = r2 << 4;
0x000a6e10 cmp r1, r0 |
0x000a6e12 bne 0xa6e06 |
| } while (r1 != r0);
0x000a6e14 strd r4, ip, [sp, 0x1c] | __asm ("strd r4, ip, [var_20h]");
0x000a6e18 str r2, [sp, 0x18] | var_18h = r2;
| label_8:
0x000a6e1a ldr.w r1, [pc, 0x8bc] |
0x000a6e1e movs r2, 7 | r2 = 7;
0x000a6e20 ldr.w r0, [fp] | r0 = *(fp);
0x000a6e24 add r1, pc | r1 = 0x14e502;
0x000a6e26 blx 0x85a8 | fcn_000085a8 ();
0x000a6e2a movs r3, 0 | r3 = 0;
0x000a6e2c str r3, [sp, 0x24] | var_24h = r3;
| label_57:
0x000a6e2e ldr.w r3, [fp, 0xc] | r3 = *(arg_10ch);
0x000a6e32 cmp r3, 0 |
| if (r3 != 0) {
0x000a6e34 bne.w 0xa6f60 | goto label_60;
| }
0x000a6e38 ldr.w r2, [fp, 0x38] | r2 = *(arg_38h);
0x000a6e3c cmp r2, 0 |
| if (r2 != 0) {
0x000a6e3e bne.w 0xa730a | goto label_61;
| }
0x000a6e42 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000a6e44 cmp r1, 0 |
| if (r1 == 0) {
0x000a6e46 beq.w 0xa6f72 | goto label_62;
| }
0x000a6e4a mov r0, r7 | r0 = r7;
0x000a6e4c bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x000a6e50 mov sl, r0 | sl = r0;
0x000a6e52 cmp r0, 0 |
| if (r0 == 0) {
0x000a6e54 beq 0xa6d90 | goto label_4;
| }
0x000a6e56 ldr.w r2, [pc, 0x884] | r2 = *(0x000a76dc);
0x000a6e5a mov r1, r0 | r1 = r0;
0x000a6e5c ldr.w r3, [fp] | r3 = *(fp);
0x000a6e60 mov r0, r5 | r0 = r5;
0x000a6e62 add r2, pc | r2 += pc;
0x000a6e64 bl 0x3b980 | r0 = fcn_0003b980 (r0, r1, r2, r3);
0x000a6e68 cmp r0, 0 |
| if (r0 != 0) {
0x000a6e6a bne 0xa6d90 | goto label_4;
| }
0x000a6e6c ldrb.w r3, [r5, 0xc8] | r3 = *((r5 + 0xc8));
0x000a6e70 cmp r3, 1 |
| if (r3 < 1) {
0x000a6e72 bls 0xa6f0c | goto label_63;
| }
| label_9:
0x000a6e74 cmp.w sb, 0 |
| if (sb == 0) {
0x000a6e78 beq.w 0xa733c | goto label_64;
| }
0x000a6e7c ldr r3, [r5] | r3 = *(r5);
0x000a6e7e ldr r2, [r3, 0x78] | r2 = *((r3 + 0x78));
0x000a6e80 ldr.w r3, [sb] | r3 = *(sb);
0x000a6e84 cmp r2, r3 |
| if (r2 < r3) {
0x000a6e86 blt.w 0xa73ba | goto label_65;
| }
| label_24:
0x000a6e8a ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000a6e8c cmp r3, 0 |
| if (r3 != 0) {
0x000a6e8e bne.w 0xa6d90 | goto label_4;
| }
0x000a6e92 ldr.w r2, [sb] | r2 = *(sb);
| label_21:
0x000a6e96 cmp r2, 0 |
0x000a6e98 mov.w r1, 0 | r1 = 0;
| if (r2 <= 0) {
0x000a6e9c ble.w 0xa7014 | goto label_66;
| }
0x000a6ea0 str r7, [sp, 0x28] | var_28h = r7;
0x000a6ea2 mov r4, r1 | r4 = r1;
0x000a6ea4 str r5, [sp, 0x2c] | var_2ch = r5;
0x000a6ea6 mov r7, r2 | r7 = r2;
0x000a6ea8 str r6, [sp, 0x30] | var_30h = r6;
0x000a6eaa mov r5, r1 | r5 = r1;
0x000a6eac mov r6, sb | r6 = sb;
0x000a6eae b 0xa6eba |
| while (ip != 0x70) {
| label_5:
0x000a6eb0 adds r4, 1 | r4++;
0x000a6eb2 adds r6, 0x10 | r6 += 0x10;
0x000a6eb4 cmp r4, r7 |
| if (r4 == r7) {
0x000a6eb6 beq.w 0xa700a | goto label_67;
| }
0x000a6eba ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x000a6ebc ldrb.w ip, [r0] | ip = *(r0);
0x000a6ec0 cmp.w ip, 0x70 |
0x000a6ec4 bne 0xa6eb0 |
| }
0x000a6ec6 ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x000a6ec8 cmp r0, 0 |
| if (r0 == 0) {
0x000a6eca beq.w 0xa731e | goto label_68;
| }
0x000a6ece blx 0x8160 | r0 = fcn_00008160 ();
0x000a6ed2 bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
0x000a6ed6 adds r0, 1 | r0++;
0x000a6ed8 add r5, r0 | r5 += r0;
0x000a6eda b 0xa6eb0 | goto label_5;
| label_48:
0x000a6edc ldr.w r2, [pc, 0x800] |
0x000a6ee0 add r2, pc | r2 = 0x14e5c4;
0x000a6ee2 b 0xa6c02 | goto label_6;
| label_52:
0x000a6ee4 mov r1, r8 | r1 = r8;
0x000a6ee6 mov r0, r5 | r0 = r5;
0x000a6ee8 bl 0x89738 | fcn_00089738 (r0, r1);
0x000a6eec ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a6eee cmp r0, 0 |
0x000a6ef0 clz r3, r3 | r3 &= r3;
0x000a6ef4 lsr.w r3, r3, 5 | r3 >>= 5;
0x000a6ef8 it eq |
| if (r0 != 0) {
0x000a6efa moveq r3, 0 | r3 = 0;
| }
0x000a6efc cmp r3, 0 |
| if (r3 != 0) {
0x000a6efe bne.w 0xa7324 | goto label_69;
| }
| label_19:
0x000a6f02 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a6f04 b 0xa6c9e | goto label_7;
| label_59:
0x000a6f06 str.w r8, [sp, 0x1c] | __asm ("str.w r8, [var_1ch]");
0x000a6f0a b 0xa6e1a | goto label_8;
| label_63:
0x000a6f0c ldrb.w r2, [r7, 0xa9] | r2 = *((r7 + 0xa9));
| if (r2 == 0) {
0x000a6f10 cbnz r2, 0xa6f20 |
0x000a6f12 mov r1, sl | r1 = sl;
0x000a6f14 mov r0, r7 | r0 = r7;
0x000a6f16 bl 0x3b634 | r0 = fcn_0003b634 (r0, r1, r2, r3);
0x000a6f1a cmp r0, 0 |
| if (r0 != 0) {
0x000a6f1c bne.w 0xa7536 | goto label_70;
| }
| }
0x000a6f20 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a6f22 mov r1, sl | r1 = sl;
0x000a6f24 mov r0, r7 | r0 = r7;
0x000a6f26 ldr r2, [r3] | r2 = *(r3);
0x000a6f28 bl 0x1aa6c | r0 = fcn_0001aa6c (r0, r1, r2);
0x000a6f2c cmp r0, 0 |
| if (r0 == 0) {
0x000a6f2e beq 0xa6fa6 | goto label_71;
| }
0x000a6f30 ldr r3, [sp, 0x114] | r3 = *(arg_114h);
0x000a6f32 cmp r3, 0 |
| if (r3 == 0) {
0x000a6f34 beq.w 0xa7528 | goto label_72;
| }
0x000a6f38 ldr r0, [r5, 0x74] | r0 = *((r5 + 0x74));
0x000a6f3a movs r2, 1 | r2 = 1;
0x000a6f3c ldr r1, [sp, 0x18] | r1 = var_18h;
0x000a6f3e cmp r0, 0 |
0x000a6f40 it eq |
| if (r0 != 0) {
0x000a6f42 moveq r0, r5 | r0 = r5;
| }
0x000a6f44 ldr r3, [r0, 0x54] | r3 = *((r0 + 0x54));
0x000a6f46 lsls r2, r1 | r2 <<= r1;
0x000a6f48 tst r3, r2 |
| if ((r3 & r2) == 0) {
0x000a6f4a bne 0xa6f58 |
0x000a6f4c cmp r1, 1 |
0x000a6f4e orr.w r3, r3, r2 | r3 |= r2;
0x000a6f52 str r3, [r0, 0x54] | *((r0 + 0x54)) = r3;
| if (r1 == 1) {
0x000a6f54 beq.w 0xa785e | goto label_73;
| }
| }
| label_41:
0x000a6f58 mov r0, r5 | r0 = r5;
0x000a6f5a bl 0x2aec8 | fcn_0002aec8 (r0, r1);
0x000a6f5e b 0xa6d90 | goto label_4;
| label_60:
0x000a6f60 ldr.w r1, [pc, 0x780] | r1 = *(0x000a76e4);
0x000a6f64 mov r0, r5 | r0 = r5;
0x000a6f66 mov.w sl, 0 | sl = 0;
0x000a6f6a add r1, pc | r1 += pc;
0x000a6f6c bl 0x25778 | fcn_00025778 (r0);
0x000a6f70 b 0xa6d90 | goto label_4;
| label_62:
0x000a6f72 ldr.w r2, [fp, 8] | r2 = *(arg_108h);
0x000a6f76 movs r3, 1 | r3 = 1;
| if (r2 == 0) {
0x000a6f78 cbz r2, 0xa6f82 | goto label_74;
| }
| do {
0x000a6f7a ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x000a6f7c adds r3, 1 | r3++;
0x000a6f7e cmp r2, 0 |
0x000a6f80 bne 0xa6f7a |
| } while (r2 != 0);
| label_74:
0x000a6f82 ldr.w r1, [pc, 0x764] |
0x000a6f86 mov r0, r7 | r0 = r7;
0x000a6f88 ldr.w r2, [fp] | r2 = *(fp);
0x000a6f8c add r1, pc | r1 = 0x14e67a;
0x000a6f8e bl 0x2677c | r0 = fcn_0002677c (r0);
0x000a6f92 mov sl, r0 | sl = r0;
0x000a6f94 cmp r0, 0 |
| if (r0 == 0) {
0x000a6f96 beq.w 0xa6d90 | goto label_4;
| }
0x000a6f9a ldrb.w r3, [r5, 0xc8] | r3 = *((r5 + 0xc8));
| if (r3 == 0) {
0x000a6f9e cbz r3, 0xa6fb0 | goto label_75;
| }
0x000a6fa0 ldrb r3, [r0, 7] | r3 = *((r0 + 7));
0x000a6fa2 adds r3, 1 | r3++;
0x000a6fa4 strb r3, [r0, 7] | *((r0 + 7)) = r3;
| label_71:
0x000a6fa6 ldrb.w r3, [r5, 0xc8] | r3 = *((r5 + 0xc8));
0x000a6faa cmp r3, 1 |
| if (r3 > 1) {
0x000a6fac bhi.w 0xa6e74 | goto label_9;
| }
| label_75:
0x000a6fb0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a6fb2 ldr r4, [r3] | r4 = *(r3);
0x000a6fb4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a6fb6 cmp r3, 1 |
| if (r3 == 1) {
0x000a6fb8 beq.w 0xa73a0 | goto label_76;
| }
0x000a6fbc ldr.w r2, [pc, 0x72c] |
0x000a6fc0 movs r1, 0x12 | r1 = 0x12;
0x000a6fc2 movs r3, 0 | r3 = 0;
0x000a6fc4 mov r0, r5 | r0 = r5;
0x000a6fc6 str r4, [sp] | *(sp) = r4;
0x000a6fc8 add r2, pc | r2 = 0x14e6b8;
0x000a6fca bl 0x25800 | fcn_00025800 (r0);
0x000a6fce movs r1, 1 | r1 = 1;
0x000a6fd0 cmp r0, 0 |
| if (r0 != 0) {
0x000a6fd2 bne.w 0xa6d90 | goto label_4;
| }
| label_23:
0x000a6fd6 ldr.w r3, [fp] | r3 = *(fp);
0x000a6fda mov r2, sl | r2 = sl;
0x000a6fdc mov r0, r5 | r0 = r5;
0x000a6fde str r4, [sp] | *(sp) = r4;
0x000a6fe0 bl 0x25800 | r0 = fcn_00025800 (r0);
0x000a6fe4 cmp r0, 0 |
| if (r0 == 0) {
0x000a6fe6 beq.w 0xa6e74 | goto label_9;
| }
0x000a6fea b 0xa6d90 | goto label_4;
| label_53:
0x000a6fec ldr.w r3, [fp, 0x48] | r3 = *(arg_48h);
0x000a6ff0 ldr r2, [r1, 0x1c] | r2 = *((r1 + 0x1c));
0x000a6ff2 cmp r2, r3 |
| if (r2 == r3) {
0x000a6ff4 beq.w 0xa6d34 | goto label_10;
| }
0x000a6ff8 ldr.w r1, [pc, 0x6f4] | r1 = *(0x000a76f0);
0x000a6ffc mov r2, r0 | r2 = r0;
0x000a6ffe mov r0, r5 | r0 = r5;
0x000a7000 mov sl, r4 | sl = r4;
0x000a7002 add r1, pc | r1 += pc;
0x000a7004 bl 0x25778 | fcn_00025778 (r0);
0x000a7008 b 0xa6d90 | goto label_4;
| label_67:
0x000a700a mov r1, r5 | r1 = r5;
0x000a700c mov r2, r7 | r2 = r7;
0x000a700e ldr r6, [sp, 0x30] | r6 = var_30h;
0x000a7010 ldrd r7, r5, [sp, 0x28] | __asm ("ldrd r7, r5, [var_2ch]");
| label_66:
0x000a7014 mov r0, sl | r0 = sl;
0x000a7016 strd r1, r2, [sp, 0x2c] | __asm ("strd r1, r2, [var_2ch]");
0x000a701a blx 0x8160 | r0 = fcn_00008160 ();
0x000a701e bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x000a7022 ldrd r1, r2, [sp, 0x2c] | __asm ("ldrd r1, r2, [var_2ch]");
0x000a7026 str r3, [sp, 0x28] | var_28h = r3;
0x000a7028 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a702a cmp r3, 0 |
| if (r3 == 0) {
0x000a702c beq.w 0xa739c | goto label_77;
| }
0x000a7030 ldrh r3, [r3, 0x32] | r3 = *((r3 + 0x32));
| label_22:
0x000a7032 add r3, r2 | r3 += r2;
0x000a7034 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000a7036 mov r0, r7 | r0 = r7;
0x000a7038 adds r2, r1, r2 | r2 = r1 + r2;
0x000a703a sxth r1, r3 | __asm ("sxth r1, r3");
0x000a703c adds r2, 1 | r2++;
0x000a703e add r3, sp, 0x48 | r3 += var_48h;
0x000a7040 bl 0x1c418 | fcn_0001c418 (r0, r1, r2, r3);
0x000a7044 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x000a7048 mov r4, r0 | r4 = r0;
0x000a704a str r3, [sp, 0x2c] | var_2ch = r3;
0x000a704c cmp r3, 0 |
| if (r3 != 0) {
0x000a704e bne.w 0xa7318 | goto label_78;
| }
0x000a7052 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000a7054 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000a7056 adds r2, 1 | r2++;
0x000a7058 adds r1, r0, r2 | r1 = r0 + r2;
0x000a705a str r0, [r4] | *(r4) = r0;
0x000a705c str r1, [sp, 0x48] | var_48h = r1;
0x000a705e mov r1, sl | r1 = sl;
0x000a7060 blx 0x7dcc | fcn_00007dcc ();
0x000a7064 ldr r3, [sp, 0x104] | r3 = *(arg_4h);
0x000a7066 ldrb.w r1, [r4, 0x37] | r1 = *((r4 + 0x37));
0x000a706a str.w fp, [r4, 0xc] | __asm ("str.w fp, [r4, 0xc]");
0x000a706e strb.w r3, [r4, 0x36] | *((r4 + 0x36)) = r3;
0x000a7072 ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x000a7074 bic r1, r1, 0xb | r1 = BIT_MASK (r1, 0xb);
0x000a7078 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000a707a add r2, r3 | r2 += r3;
0x000a707c ldr r3, [sp, 0x104] | r3 = *(arg_4h);
0x000a707e ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x000a7080 str r2, [r4, 0x18] | *((r4 + 0x18)) = r2;
0x000a7082 subs r2, r3, 0 | r2 = r3 - 0;
0x000a7084 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000a7086 it ne |
| if (r2 == r3) {
0x000a7088 movne r2, 1 | r2 = 1;
| }
0x000a708a orr.w r2, r3, r2, lsl 3 | r2 = r3 | (r2 << 3);
0x000a708e and r2, r2, 0xb | r2 &= 0xb;
0x000a7092 orrs r2, r1 | r2 |= r1;
0x000a7094 strb.w r2, [r4, 0x37] | *((r4 + 0x37)) = r2;
0x000a7098 ldrh.w r2, [sb] | r2 = *(sb);
0x000a709c strh r2, [r4, 0x32] | *((r4 + 0x32)) = r2;
| if (r6 != 0) {
0x000a709e cbz r6, 0xa70b4 |
0x000a70a0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000a70a2 movs r2, 2 | r2 = 2;
0x000a70a4 mov r1, fp | r1 = fp;
0x000a70a6 mov r0, r5 | r0 = r5;
0x000a70a8 str r3, [sp] | *(sp) = r3;
0x000a70aa mov r3, r6 | r3 = r6;
0x000a70ac bl 0x3060c | fcn_0003060c (r0, r1, r2, r3, r4, r5);
0x000a70b0 ldrh r2, [r4, 0x32] | r2 = *((r4 + 0x32));
0x000a70b2 str r6, [r4, 0x24] | *((r4 + 0x24)) = r6;
| }
0x000a70b4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a70b6 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000a70b8 ldrb.w r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000a70bc cmp r3, 3 |
0x000a70be mov.w r3, -1 | r3 = -1;
0x000a70c2 it ls |
| if (r3 > 3) {
0x000a70c4 movls r3, 0 | r3 = 0;
| }
0x000a70c6 mov r1, r3 | r1 = r3;
0x000a70c8 ldrb.w r3, [r5, 0xc8] | r3 = *((r5 + 0xc8));
0x000a70cc cmp r3, 1 |
0x000a70ce it ls |
| if (r3 > 1) {
0x000a70d0 strls sb, [sp, 0x20] | var_20h = sb;
| }
| if (r3 >= 1) {
0x000a70d4 bls 0xa70de |
0x000a70d6 movs r3, 0 | r3 = 0;
0x000a70d8 str.w sb, [r4, 0x28] | __asm ("str.w sb, [r4, 0x28]");
0x000a70dc str r3, [sp, 0x20] | var_20h = r3;
| }
0x000a70de cmp r2, 0 |
| if (r2 == 0) {
0x000a70e0 beq.w 0xa7866 | goto label_79;
| }
0x000a70e4 ldr.w r3, [pc, 0x60c] | r3 = *(0x000a76f4);
0x000a70e8 add.w sb, sb, 0x18 | sb += 0x18;
0x000a70ec str.w sl, [sp, 0x34] | __asm ("str.w sl, [var_34h]");
0x000a70f0 mov sl, r1 | sl = r1;
0x000a70f2 str.w r8, [sp, 0x38] | __asm ("str.w r8, [var_38h]");
0x000a70f6 add r3, pc | r3 += pc;
0x000a70f8 add.w r3, r3, 0x358 | r3 += 0x358;
0x000a70fc str r3, [sp, 0x28] | var_28h = r3;
0x000a70fe ldr.w r3, [pc, 0x5f8] | r3 = *(0x000a76f8);
0x000a7102 add r3, pc | r3 += pc;
0x000a7104 add.w r3, r3, 0x358 | r3 += 0x358;
0x000a7108 str r3, [sp, 0x30] | var_30h = r3;
0x000a710a ldr.w r3, [pc, 0x5f0] | r3 = *(0x000a76fc);
0x000a710e add r3, pc | r3 += pc;
0x000a7110 str r3, [sp, 0x3c] | var_3ch = r3;
0x000a7112 movs r3, 0 | r3 = 0;
0x000a7114 mov r8, r3 | r8 = r3;
| label_11:
0x000a7116 ldr r3, [sb, -0x10] | r3 = *((sb - 0x10));
0x000a711a ldrb r2, [r3] | r2 = *(r3);
0x000a711c cmp r2, 0x74 |
0x000a711e itt eq |
| if (r2 != 0x74) {
0x000a7120 moveq r2, 0x3b | r2 = 0x3b;
| }
| if (r2 != 0x74) {
0x000a7122 strbeq r2, [r3] | *(r3) = r2;
| }
| if (r2 != 0x74) {
0x000a7124 beq 0xa7136 |
0x000a7126 cmp r2, 0x70 |
| if (r2 != 0x70) {
0x000a7128 bne 0xa7136 | goto label_80;
| }
0x000a712a ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000a712c ldrb r1, [r2] | r1 = *(r2);
0x000a712e cmp r1, 0x74 |
0x000a7130 itt eq |
| if (r1 != 0x74) {
0x000a7132 moveq r1, 0x3b | r1 = 0x3b;
| }
| if (r1 == 0x74) {
0x000a7134 strbeq r1, [r2] | *(r2) = r1;
| goto label_80;
| }
| }
| label_80:
0x000a7136 movs r6, 0 | r6 = 0;
0x000a7138 movs r2, 0x20 | r2 = 0x20;
0x000a713a mov r1, fp | r1 = fp;
0x000a713c mov r0, r5 | r0 = r5;
0x000a713e str r6, [sp] | *(sp) = r6;
0x000a7140 bl 0x3060c | fcn_0003060c (r0, r1, r2, r3, r4, r5);
0x000a7144 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000a7146 cmp r3, 0 |
| if (r3 != 0) {
0x000a7148 bne.w 0xa73ca | goto label_81;
| }
0x000a714c ldr r1, [sb, -0x10] | r1 = *((sb - 0x10));
0x000a7150 cmp r1, 0 |
| if (r1 == 0) {
0x000a7152 beq.w 0xa78a6 | goto label_82;
| }
0x000a7156 mov r3, r1 | r3 = r1;
0x000a7158 b 0xa7162 |
| while (r2 != r2) {
0x000a715a ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000a715c cmp r3, 0 |
| if (r3 == 0) {
0x000a715e beq.w 0xa78a6 | goto label_82;
| }
0x000a7162 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x000a7164 ands r2, r2, 0x1000 | r2 &= 0x1000;
0x000a7168 bne 0xa715a |
| }
0x000a716a ldrb r0, [r3] | r0 = *(r3);
0x000a716c cmp r0, 0xa6 |
| if (r0 == 0xa6) {
0x000a716e beq 0xa7240 | goto label_83;
| }
0x000a7170 ldr.w r3, [r5, 0xe4] | r3 = *((r5 + 0xe4));
0x000a7174 cmp r3, fp |
| if (r3 == fp) {
0x000a7176 beq.w 0xa750e | goto label_84;
| }
0x000a717a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000a717c cmp r3, 0 |
| if (r3 == 0) {
0x000a717e beq.w 0xa72e2 | goto label_85;
| }
| label_15:
0x000a7182 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a7184 movw r2, 0xfffe | r2 = 0xfffe;
0x000a7188 strh.w r2, [r3, r8, lsl 1] | offset_0 = r8 << 1;
| *((r3 + offset_0)) = r2;
0x000a718c ldrb.w r3, [r4, 0x37] | r3 = *((r4 + 0x37));
0x000a7190 bfc r3, 3, 1 | value_1 = BIT_MASK (1, );
| value_1 = ~value_1;
| r3 &= value_1;
0x000a7194 strb.w r3, [r4, 0x37] | *((r4 + 0x37)) = r3;
0x000a7198 ldrb r3, [r1] | r3 = *(r1);
0x000a719a cmp r3, 0x70 |
| if (r3 == 0x70) {
0x000a719c beq 0xa729a | goto label_16;
| }
0x000a719e ldr r6, [sp, 0x30] | r6 = var_30h;
| label_13:
0x000a71a0 ldrb.w r3, [r7, 0xa9] | r3 = *((r7 + 0xa9));
0x000a71a4 cmp r3, 0 |
| if (r3 == 0) {
0x000a71a6 beq.w 0xa72c0 | goto label_86;
| }
| label_14:
0x000a71aa ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000a71ac add.w sb, sb, 0x10 | sb += 0x10;
0x000a71b0 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x000a71b2 str.w r6, [r3, r8, lsl 2] | __asm ("str.w r6, [r3, r8, lsl 2]");
0x000a71b6 ldrb r3, [sb, -0x18] | r3 = *((sb - 0x18));
0x000a71ba and.w r3, r3, sl | r3 &= sl;
0x000a71be strb.w r3, [r2, r8] | *((r2 + r8)) = r3;
0x000a71c2 add.w r8, r8, 1 | r8++;
0x000a71c6 ldrh r3, [r4, 0x32] | r3 = *((r4 + 0x32));
0x000a71c8 cmp r3, r8 |
| if (r3 > r8) {
0x000a71ca bgt 0xa7116 | goto label_11;
| }
0x000a71cc mov ip, r8 |
0x000a71ce ldr.w sb, [sp, 0x20] | sb = var_20h;
0x000a71d0 str r0, [sp, 0x80] | *((sp + 0x80)) = r0;
0x000a71d2 ldrd sl, r8, [sp, 0x34] | __asm ("ldrd sl, r8, [var_34h]");
| label_42:
0x000a71d6 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000a71d8 cmp r2, 0 |
| if (r2 == 0) {
0x000a71da beq.w 0xa7564 | goto label_87;
| }
0x000a71de ldrh r3, [r2, 0x32] | r3 = *((r2 + 0x32));
0x000a71e0 cmp r3, 0 |
| if (r3 == 0) {
0x000a71e2 beq.w 0xa73e4 | goto label_29;
| }
0x000a71e6 str r7, [sp, 0x24] | var_24h = r7;
0x000a71e8 movs r6, 0 | r6 = 0;
0x000a71ea strd r5, r8, [sp, 0x28] | __asm ("strd r5, r8, [var_2ch]");
0x000a71ee mov r7, ip | r7 = ip;
0x000a71f0 mov r8, r2 | r8 = r2;
0x000a71f2 b 0xa7206 |
| while (r0 != 0) {
0x000a71f4 ldrh r1, [r4, 0x34] | r1 = *((r4 + 0x34));
0x000a71f6 subs r1, 1 | r1--;
0x000a71f8 strh r1, [r4, 0x34] | *((r4 + 0x34)) = r1;
| label_12:
0x000a71fa ldrh.w r1, [r8, 0x32] | r1 = *((r8 + 0x32));
0x000a71fe adds r6, 1 | r6++;
0x000a7200 cmp r1, r6 |
| if (r1 <= r6) {
0x000a7202 ble.w 0xa73dc | goto label_88;
| }
0x000a7206 ldr.w r1, [r8, 4] | r1 = *((r8 + 4));
0x000a720a mov r3, r6 | r3 = r6;
0x000a720c mov r2, r8 | r2 = r8;
0x000a720e mov r0, r4 | r0 = r4;
0x000a7210 ldrsh.w r5, [r1, r6, lsl 1] | offset_2 = r6 << 1;
| r5 = *((r1 + offset_2));
0x000a7214 ldrh r1, [r4, 0x32] | r1 = *((r4 + 0x32));
0x000a7216 bl 0x17d8c | r0 = fcn_00017d8c (r0, r1, r2, r3, r4);
0x000a721a cmp r0, 0 |
0x000a721c bne 0xa71f4 |
| }
0x000a721e ldr.w r1, [r8, 0x20] | r1 = *((r8 + 0x20));
0x000a7222 ldr.w r0, [r1, r6, lsl 2] | offset_3 = r6 << 2;
| r0 = *((r1 + offset_3));
0x000a7226 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000a7228 strh.w r5, [r1, r7, lsl 1] | offset_4 = r7 << 1;
| *((r1 + offset_4)) = r5;
0x000a722c ldr r1, [r4, 0x20] | r1 = *((r4 + 0x20));
0x000a722e str.w r0, [r1, r7, lsl 2] | __asm ("str.w r0, [r1, r7, lsl 2]");
0x000a7232 ldr.w r1, [r8, 0x1c] | r1 = *((r8 + 0x1c));
0x000a7236 ldrb r0, [r1, r6] | r0 = *((r1 + r6));
0x000a7238 ldr r1, [r4, 0x1c] | r1 = *((r4 + 0x1c));
0x000a723a strb r0, [r1, r7] | *((r1 + r7)) = r0;
0x000a723c adds r7, 1 | r7++;
0x000a723e b 0xa71fa | goto label_12;
| label_83:
0x000a7240 ldrsh.w r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x000a7244 lsl.w r6, r8, 1 | r6 = r8 << 1;
0x000a7248 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000a724a cmp r2, 0 |
| if (r2 < 0) {
0x000a724c blt 0xa72ea | goto label_89;
| }
0x000a724e ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x000a7252 add.w ip, r2, r2, lsl 2 |
0x000a7256 add.w r3, r3, ip, lsl 2 | r3 += (ip << 2);
0x000a725a ldrb.w ip, [r3, 0xc] | ip = *((r3 + 0xc));
0x000a725e cmp.w ip, 0 |
| if (ip == 0) {
0x000a7262 bne 0xa7270 |
0x000a7264 ldrb.w lr, [r4, 0x37] |
0x000a7268 bfi lr, ip, 3, 1 | value_5 = BIT_MASK (3, 1);
| value_6 = ip & value_5;
| value_5 = ~value_5;
| lr &= value_5;
| lr |= value_6;
0x000a726c strb.w lr, [r4, 0x37] |
| }
0x000a7270 ldrh.w ip, [r3, 0x10] | ip = *((r3 + 0x10));
0x000a7274 tst.w ip, 0x20 |
| if ((ip & 0x20) != 0) {
0x000a7278 beq 0xa7286 |
0x000a727a ldrb.w ip, [r4, 0x38] | ip = *((r4 + 0x38));
0x000a727e orr ip, ip, 4 |
0x000a7282 strb.w ip, [r4, 0x38] | *((r4 + 0x38)) = ip;
| }
0x000a7286 strh r2, [r0, r6] | *((r0 + r6)) = r2;
0x000a7288 ldrb r2, [r1] | r2 = *(r1);
0x000a728a cmp r2, 0x70 |
| if (r2 == 0x70) {
0x000a728c beq 0xa729a | goto label_16;
| }
| label_17:
0x000a728e ldr r6, [r3, 8] | r6 = *((r3 + 8));
| do {
0x000a7290 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a7292 cmp r6, 0 |
0x000a7294 it eq |
| if (r6 != 0) {
0x000a7296 moveq r6, r3 | r6 = r3;
| }
0x000a7298 b 0xa71a0 | goto label_13;
| label_16:
0x000a729a ldr r6, [r1, 8] | r6 = *((r1 + 8));
0x000a729c movs r2, 1 | r2 = 1;
| if (r6 != 0) {
0x000a729e cbz r6, 0xa72ac |
0x000a72a0 mov r0, r6 | r0 = r6;
0x000a72a2 blx 0x8160 | r0 = fcn_00008160 ();
0x000a72a6 bic r2, r0, 0xc0000000 | r2 = BIT_MASK (r0, 0xc0000000);
0x000a72aa adds r2, 1 | r2++;
| }
0x000a72ac mov r1, r6 | r1 = r6;
0x000a72ae ldr r0, [sp, 0x48] | r0 = var_48h;
0x000a72b0 str r2, [sp, 0x2c] | var_2ch = r2;
0x000a72b2 blx 0x7dcc | fcn_00007dcc ();
0x000a72b6 ldr r6, [sp, 0x48] | r6 = var_48h;
0x000a72b8 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000a72ba add r2, r6 | r2 += r6;
0x000a72bc str r2, [sp, 0x48] | var_48h = r2;
0x000a72be b 0xa7290 |
| } while (1);
| label_86:
0x000a72c0 mov r1, r6 | r1 = r6;
0x000a72c2 mov r0, r5 | r0 = r5;
0x000a72c4 bl 0x2d348 | r0 = fcn_0002d348 (r0, r1);
0x000a72c8 cmp r0, 0 |
| if (r0 != 0) {
0x000a72ca bne.w 0xa71aa | goto label_14;
| }
0x000a72ce ldrd sl, r8, [sp, 0x34] | __asm ("ldrd sl, r8, [var_34h]");
0x000a72d2 mov r6, r0 | r6 = r0;
0x000a72d4 ldr.w sb, [sp, 0x20] | sb = var_20h;
| label_18:
0x000a72d8 mov r1, r4 | r1 = r4;
0x000a72da mov r0, r7 | r0 = r7;
0x000a72dc bl 0x18e30 | fcn_00018e30 (r0, r1);
0x000a72e0 b 0xa6d90 | goto label_4;
| label_85:
0x000a72e2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000a72e4 str r3, [sp, 0x20] | var_20h = r3;
0x000a72e6 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x000a72e8 b 0xa7182 | goto label_15;
| label_89:
0x000a72ea ldrsh.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x000a72ee strh.w r3, [r0, r8, lsl 1] | offset_7 = r8 << 1;
| *((r0 + offset_7)) = r3;
0x000a72f2 ldrb r2, [r1] | r2 = *(r1);
0x000a72f4 cmp r2, 0x70 |
| if (r2 == 0x70) {
0x000a72f6 beq 0xa729a | goto label_16;
| }
0x000a72f8 cmp r3, 0 |
| if (r3 < 0) {
0x000a72fa blt 0xa73d4 | goto label_90;
| }
0x000a72fc ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x000a7300 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000a7304 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x000a7308 b 0xa728e | goto label_17;
| label_61:
0x000a730a ldr r1, [pc, 0x3f4] |
0x000a730c mov r0, r5 | r0 = r5;
0x000a730e mov sl, r3 | sl = r3;
0x000a7310 add r1, pc | r1 = 0x14ea16;
0x000a7312 bl 0x25778 | fcn_00025778 (r0);
0x000a7316 b 0xa6d90 | goto label_4;
| label_78:
0x000a7318 cmp r0, 0 |
| if (r0 != 0) {
0x000a731a bne 0xa72d8 | goto label_18;
| }
0x000a731c b 0xa6d90 | goto label_4;
| label_68:
0x000a731e movs r0, 1 | r0 = 1;
0x000a7320 add r5, r0 | r5 += r0;
0x000a7322 b 0xa6eb0 | goto label_5;
| label_69:
0x000a7324 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000a7326 ldr r2, [r0, 0x48] | r2 = *((r0 + 0x48));
0x000a7328 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x000a732a cmp r2, r3 |
| if (r2 != r3) {
0x000a732c bne.w 0xa6f02 | goto label_19;
| }
0x000a7330 mov.w ip, 1 |
0x000a7334 movs r3, 0x10 | r3 = 0x10;
0x000a7336 strd ip, r3, [sp, 0x18] | __asm ("strd ip, r3, [var_1ch]");
0x000a733a b 0xa6cae | goto label_20;
| label_64:
0x000a733c ldrh.w r3, [fp, 0x2a] | r3 = *(arg_2ah);
0x000a7340 movs r1, 0x14 | r1 = 0x14;
0x000a7342 mvn r2, 0x13 | r2 = ~0x13;
0x000a7346 smlabb r3, r3, r1, r2 | __asm ("smlabb r3, r3, r1, r2");
0x000a734a ldr.w r1, [fp, 4] | r1 = *(arg_4h);
0x000a734e adds r2, r1, r3 | r2 = r1 + r3;
0x000a7350 ldr r0, [r1, r3] | r0 = *((r1 + r3));
0x000a7352 ldrh r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x000a7354 str r0, [sp, 0x4c] | var_4ch = r0;
0x000a7356 orr r3, r3, 8 | r3 |= 8;
0x000a735a strh r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x000a735c cmp r0, 0 |
| if (r0 == 0) {
0x000a735e beq.w 0xa7524 | goto label_91;
| }
0x000a7362 blx 0x8160 | r0 = fcn_00008160 ();
0x000a7366 bic r0, r0, 0xc0000000 | r0 = BIT_MASK (r0, 0xc0000000);
| label_28:
0x000a736a movs r3, 0 | r3 = 0;
0x000a736c add r2, sp, 0x4c | r2 += var_4ch;
0x000a736e movs r1, 0x3b | r1 = 0x3b;
0x000a7370 str r0, [sp, 0x50] | var_50h = r0;
0x000a7372 mov r0, r7 | r0 = r7;
0x000a7374 bl 0x1afec | r0 = fcn_0001afec (r0, r1, r2, r3);
0x000a7378 mov r1, r0 | r1 = r0;
0x000a737a ldr r0, [r5] | r0 = *(r5);
0x000a737c bl 0x1afb0 | r0 = fcn_0001afb0 (r0, r1);
0x000a7380 mov sb, r0 | sb = r0;
0x000a7382 cmp r0, 0 |
| if (r0 == 0) {
0x000a7384 beq.w 0xa6d90 | goto label_4;
| }
0x000a7388 ldr r3, [sp, 0x110] | r3 = *(arg_110h);
0x000a738a ldr r2, [r0] | r2 = *(r0);
0x000a738c adds r1, r3, 1 | r1 = r3 + 1;
0x000a738e it eq |
| if (r1 != r3) {
0x000a7390 moveq r3, 0 | r3 = 0;
| }
0x000a7392 str r3, [sp, 0x110] | *(arg_110h) = r3;
0x000a7394 lsls r3, r2, 4 | r3 = r2 << 4;
0x000a7396 ldr r1, [sp, 0x110] | r1 = *(arg_110h);
0x000a7398 strb r1, [r0, r3] | *((r0 + r3)) = r1;
0x000a739a b 0xa6e96 | goto label_21;
| label_77:
0x000a739c movs r3, 1 | r3 = 1;
0x000a739e b 0xa7032 | goto label_22;
| label_76:
0x000a73a0 ldr r2, [pc, 0x360] |
0x000a73a2 movs r1, 0x12 | r1 = 0x12;
0x000a73a4 movs r3, 0 | r3 = 0;
0x000a73a6 mov r0, r5 | r0 = r5;
0x000a73a8 str r4, [sp] | *(sp) = r4;
0x000a73aa add r2, pc | r2 = 0x14eab2;
0x000a73ac bl 0x25800 | fcn_00025800 (r0);
0x000a73b0 movs r1, 3 | r1 = 3;
0x000a73b2 cmp r0, 0 |
| if (r0 == 0) {
0x000a73b4 beq.w 0xa6fd6 | goto label_23;
| }
0x000a73b8 b 0xa6d90 | goto label_4;
| label_65:
0x000a73ba ldr r2, [pc, 0x34c] |
0x000a73bc mov r0, r5 | r0 = r5;
0x000a73be ldr r1, [pc, 0x34c] |
0x000a73c0 add r2, pc | r2 = 0x14eace;
0x000a73c2 add r1, pc | r1 = 0x14ead4;
0x000a73c4 bl 0x25778 | fcn_00025778 (r0);
0x000a73c8 b 0xa6e8a | goto label_24;
| label_81:
0x000a73ca ldrd sl, r8, [sp, 0x34] | __asm ("ldrd sl, r8, [var_34h]");
0x000a73ce ldr.w sb, [sp, 0x20] | sb = var_20h;
0x000a73d2 b 0xa72d8 | goto label_18;
| label_90:
0x000a73d4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000a73d6 add.w r6, r3, 0x358 | r6 = r3 + 0x358;
0x000a73da b 0xa71a0 | goto label_13;
| label_88:
0x000a73dc ldrd r7, r5, [sp, 0x24] | __asm ("ldrd r7, r5, [var_24h]");
0x000a73e0 ldr.w r8, [sp, 0x2c] | r8 = var_2ch;
| label_29:
0x000a73e4 mov r0, r4 | r0 = r4;
0x000a73e6 bl 0xcb5c | fcn_0000cb5c (r0);
0x000a73ea ldr.w r6, [r5, 0xe4] | r6 = *((r5 + 0xe4));
0x000a73ee mov r0, r4 | r0 = r4;
0x000a73f0 cmp r6, 0 |
| if (r6 == 0) {
0x000a73f2 beq.w 0xa757e | goto label_92;
| }
0x000a73f6 bl 0x9db0 | fcn_00009db0 (r0);
0x000a73fa cmp.w r8, 0 |
| if (r8 == 0) {
0x000a73fe beq 0xa7460 | goto label_38;
| }
| label_30:
0x000a7400 ldrh.w lr, [r4, 0x34] |
0x000a7404 ldrsh.w r0, [fp, 0x2a] | r0 = *(arg_2ah);
0x000a7408 cmp lr, r0 |
| if (lr < r0) {
0x000a740a blt 0xa7460 | goto label_38;
| }
0x000a740c ldrb.w r3, [r4, 0x37] | r3 = *((r4 + 0x37));
0x000a7410 cmp r0, 0 |
0x000a7412 orr r3, r3, 0x20 | r3 |= 0x20;
0x000a7416 strb.w r3, [r4, 0x37] | *((r4 + 0x37)) = r3;
| if (r0 <= 0) {
0x000a741a ble 0xa7460 | goto label_38;
| }
0x000a741c ldrsh.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x000a7420 str r3, [sp, 0x24] | var_24h = r3;
0x000a7422 movs r3, 0 | r3 = 0;
| label_25:
0x000a7424 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000a7426 cmp r2, r3 |
| if (r2 == r3) {
0x000a7428 beq 0xa745a | goto label_93;
| }
0x000a742a cmp.w lr, 0 |
| if (lr == 0) {
0x000a742e beq.w 0xa77fa | goto label_94;
| }
0x000a7432 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000a7434 sxth r2, r3 | __asm ("sxth r2, r3");
0x000a7436 str r3, [sp, 0x2c] | var_2ch = r3;
0x000a7438 str r2, [sp, 0x28] | var_28h = r2;
0x000a743a movs r2, 0 | r2 = 0;
0x000a743c subs r1, 2 | r1 -= 2;
0x000a743e b 0xa7448 |
| while (ip != r3) {
0x000a7440 adds r2, 1 | r2++;
0x000a7442 cmp lr, r2 |
| if (lr == r2) {
0x000a7444 beq.w 0xa77fa | goto label_94;
| }
0x000a7448 ldrsh ip, [r1, 2]! | ip = *((r1 += 2));
0x000a744c ldr r3, [sp, 0x28] | r3 = var_28h;
0x000a744e cmp ip, r3 |
0x000a7450 bne 0xa7440 |
| }
0x000a7452 lsls r2, r2, 0x10 | r2 <<= 0x10;
0x000a7454 ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r2 < r2) {
0x000a7456 bmi.w 0xa77fa | goto label_94;
| }
| label_93:
0x000a745a adds r3, 1 | r3++;
0x000a745c cmp r0, r3 |
| if (r0 != r3) {
0x000a745e bne 0xa7424 | goto label_25;
| }
| label_38:
0x000a7460 cmp r6, fp |
| if (r6 == fp) {
0x000a7462 beq.w 0xa7692 | goto label_95;
| }
| label_31:
0x000a7466 ldrb.w r3, [r5, 0xc8] | r3 = *((r5 + 0xc8));
0x000a746a ldrb.w r6, [r7, 0xa9] | r6 = *((r7 + 0xa9));
0x000a746e cmp r3, 1 |
| if (r3 < 1) {
0x000a7470 bls 0xa749c | goto label_96;
| }
| label_27:
0x000a7472 cmp r6, 0 |
| if (r6 != 0) {
0x000a7474 bne 0xa74fe | goto label_32;
| }
0x000a7476 cmp.w r8, 0 |
| if (r8 == 0) {
0x000a747a beq 0xa74fe | goto label_32;
| }
0x000a747c ldrb.w r3, [r5, 0xc8] | r3 = *((r5 + 0xc8));
0x000a7480 cmp r3, 1 |
| if (r3 < 1) {
0x000a7482 bls.w 0xa72d8 | goto label_18;
| }
0x000a7486 str.w r4, [r5, 0xe8] | __asm ("str.w r4, [r5, 0xe8]");
0x000a748a ldr.w r4, [fp, 8] | r4 = *(arg_108h);
| label_37:
0x000a748e add.w r2, fp, 8 | r2 += arg_108h;
0x000a7492 cmp r4, 0 |
| if (r4 == 0) {
0x000a7494 beq.w 0xa781a | goto label_97;
| }
0x000a7498 movs r6, 0 | r6 = 0;
0x000a749a b 0xa6d9e | goto label_26;
| label_96:
0x000a749c cmp r6, 0 |
| if (r6 == 0) {
0x000a749e beq 0xa7590 | goto label_98;
| }
0x000a74a0 cmp.w r8, 0 |
| if (r8 == 0) {
0x000a74a4 beq 0xa74de | goto label_99;
| }
0x000a74a6 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000a74a8 ldr.w r2, [r7, 0xa4] | r2 = *((r7 + 0xa4));
0x000a74ac ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000a74ae str r2, [r4, 0x2c] | *((r4 + 0x2c)) = r2;
| if (r3 == 0) {
0x000a74b0 cbz r3, 0xa74de | goto label_99;
| }
0x000a74b2 ldr r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x000a74b4 cmp r1, r2 |
| if (r1 != r2) {
0x000a74b6 bne 0xa74d8 | goto label_100;
| }
0x000a74b8 cmp r4, r3 |
| if (r4 == r3) {
0x000a74ba beq 0xa74d8 | goto label_100;
| }
0x000a74bc b 0xa783c | goto label_101;
| do {
0x000a74be ldr r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x000a74c0 cmp r4, r3 |
0x000a74c2 sub.w r1, r1, r2 | r1 -= r2;
0x000a74c6 clz r1, r1 | r1 &= r1;
0x000a74ca lsr.w r1, r1, 5 | r1 >>= 5;
0x000a74ce it eq |
| if (r4 != r3) {
0x000a74d0 moveq r1, 0 | r1 = 0;
| }
0x000a74d2 cmp r1, 0 |
| if (r1 != 0) {
0x000a74d4 bne.w 0xa783c | goto label_101;
| }
| label_100:
0x000a74d8 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000a74da cmp r3, 0 |
0x000a74dc bne 0xa74be |
| } while (r3 != 0);
| label_99:
0x000a74de ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x000a74e0 mov r2, r4 | r2 = r4;
0x000a74e2 ldr r1, [r4] | r1 = *(r4);
0x000a74e4 adds r0, 0x18 | r0 += 0x18;
0x000a74e6 bl 0x169a8 | r0 = fcn_000169a8 (r0, r1, r2, r3, r4);
0x000a74ea cmp r0, 0 |
| if (r0 != 0) {
0x000a74ec bne.w 0xa782e | goto label_102;
| }
0x000a74f0 ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x000a74f2 ldrb.w r6, [r7, 0xa9] | r6 = *((r7 + 0xa9));
0x000a74f6 orr r3, r3, 1 | r3 |= 1;
0x000a74fa str r3, [r7, 0x18] | *((r7 + 0x18)) = r3;
0x000a74fc b 0xa7472 | goto label_27;
| label_32:
0x000a74fe ldr.w r3, [fp, 8] | r3 = *(arg_108h);
0x000a7502 mov r2, fp | r2 = fp;
0x000a7504 movs r6, 0 | r6 = 0;
0x000a7506 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x000a7508 str r4, [r2, 8]! | *((r2 += 8)) = r4;
0x000a750c b 0xa6d9e | goto label_26;
| label_84:
0x000a750e ldr r1, [pc, 0x200] |
0x000a7510 mov r0, r5 | r0 = r5;
0x000a7512 ldrd sl, r8, [sp, 0x34] | __asm ("ldrd sl, r8, [var_34h]");
0x000a7516 mov r6, r2 | r6 = r2;
0x000a7518 ldr.w sb, [sp, 0x20] | sb = var_20h;
0x000a751c add r1, pc | r1 = 0x14ec32;
0x000a751e bl 0x25778 | fcn_00025778 (r0);
0x000a7522 b 0xa72d8 | goto label_18;
| label_91:
0x000a7524 mov r0, sb | r0 = sb;
0x000a7526 b 0xa736a | goto label_28;
| label_72:
0x000a7528 ldr r1, [pc, 0x1e8] |
0x000a752a mov r0, r5 | r0 = r5;
0x000a752c mov r2, sl | r2 = sl;
0x000a752e add r1, pc | r1 = 0x14ec46;
0x000a7530 bl 0x25778 | fcn_00025778 (r0);
0x000a7534 b 0xa6d90 | goto label_4;
| label_70:
0x000a7536 ldr r1, [pc, 0x1e0] |
0x000a7538 mov r0, r5 | r0 = r5;
0x000a753a mov r2, sl | r2 = sl;
0x000a753c add r1, pc | r1 = 0x14ec5a;
0x000a753e bl 0x25778 | fcn_00025778 (r0);
0x000a7542 b 0xa6d90 | goto label_4;
| label_50:
0x000a7544 blx 0x7e8c | fcn_00007e8c ();
| label_58:
0x000a7548 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a754a sub.w r3, r3, 0x80000 | r3 -= 0x80000;
0x000a754e str r3, [sp, 0x20] | var_20h = r3;
0x000a7550 movs r3, 0 |
0x000a7552 movt r3, 0xfff8 | r3 = 0x-80000;
0x000a7556 str r3, [sp, 0x1c] | var_1ch = r3;
0x000a7558 mov.w r3, 0x8000 |
0x000a755c movt r3, 0xffff | r3 = 0xNaN;
0x000a7560 str r3, [sp, 0x18] | var_18h = r3;
0x000a7562 b 0xa6e1a | goto label_8;
| label_87:
0x000a7564 ldr r3, [pc, 0x1b4] |
0x000a7566 movw r0, 0xffff | r0 = 0xffff;
0x000a756a ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000a756c ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x000a756e add r3, pc |
0x000a7570 add.w r3, r3, 0x358 | r3 = 0x14efe6;
0x000a7574 strh.w r0, [r1, ip, lsl 1] | offset_8 = ip << 1;
| *((r1 + offset_8)) = r0;
0x000a7578 str.w r3, [r2, ip, lsl 2] | __asm ("str.w r3, [r2, ip, lsl 2]");
0x000a757c b 0xa73e4 | goto label_29;
| label_92:
0x000a757e bl 0x18438 | r0 = fcn_00018438 (r0);
0x000a7582 bl 0x9db0 | fcn_00009db0 (r0);
0x000a7586 cmp.w r8, 0 |
| if (r8 != 0) {
0x000a758a bne.w 0xa7400 | goto label_30;
| }
0x000a758e b 0xa7466 | goto label_31;
| label_98:
0x000a7590 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x000a7594 lsls r3, r3, 0x18 | r3 <<= 0x18;
| if (r3 >= r3) {
0x000a7596 bpl 0xa759e | goto label_103;
| }
0x000a7598 cmp.w r8, 0 |
| if (r8 == 0) {
0x000a759c beq 0xa74fe | goto label_32;
| }
| label_103:
0x000a759e ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x000a75a0 ldr r6, [r5, 8] | r6 = *((r5 + 8));
0x000a75a2 adds r3, 1 | r3++;
0x000a75a4 str r3, [sp, 0x10] | var_10h = r3;
0x000a75a6 str r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x000a75a8 cmp r6, 0 |
| if (r6 == 0) {
0x000a75aa beq.w 0xa7896 | goto label_104;
| }
| label_45:
0x000a75ae ldr r2, [sp, 0x18] | r2 = var_18h;
0x000a75b0 movs r1, 1 | r1 = 1;
0x000a75b2 mov r0, r5 | r0 = r5;
0x000a75b4 bl 0x541a8 | fcn_000541a8 (r0, r1, r2);
0x000a75b8 movs r3, 0 | r3 = 0;
0x000a75ba movs r1, 0xb1 | r1 = 0xb1;
0x000a75bc mov r2, r3 | r2 = r3;
0x000a75be str r3, [sp] | *(sp) = r3;
0x000a75c0 mov r0, r6 | r0 = r6;
0x000a75c2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a75c6 movs r3, 2 | r3 = 2;
0x000a75c8 str r0, [r4, 0x2c] | *((r4 + 0x2c)) = r0;
0x000a75ca ldr r2, [sp, 0x18] | r2 = var_18h;
0x000a75cc movs r1, 0x8f | r1 = 0x8f;
0x000a75ce str r3, [sp] | *(sp) = r3;
0x000a75d0 mov r0, r6 | r0 = r6;
0x000a75d2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000a75d4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x000a75d8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000a75da cmp r3, 0 |
| if (r3 == 0) {
0x000a75dc beq.w 0xa7874 | goto label_105;
| }
0x000a75e0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000a75e2 ldr.w r2, [r5, 0xc0] | r2 = *((r5 + 0xc0));
0x000a75e6 ldr r1, [r3] | r1 = *(r3);
0x000a75e8 ldr.w r3, [r5, 0xbc] | r3 = *((r5 + 0xbc));
0x000a75ec subs r3, r3, r1 | r3 -= r1;
0x000a75ee add r3, r2 | r3 += r2;
0x000a75f0 adds r2, r1, r3 | r2 = r1 + r3;
0x000a75f2 ldrb r2, [r2, -0x1] | r2 = *((r2 - 0x1));
0x000a75f6 cmp r2, 0x3b |
0x000a75f8 ldr r2, [sp, 0x104] | r2 = *(arg_4h);
0x000a75fa it eq |
| if (r2 != 0x3b) {
0x000a75fc addeq r3, r3, -1 | r3 += -1;
| }
0x000a7600 cmp r2, 0 |
| if (r2 == 0) {
0x000a7602 beq.w 0xa786e | goto label_106;
| }
0x000a7606 ldr r2, [pc, 0x118] |
0x000a7608 add r2, pc | r2 = 0x14ed2e;
| label_43:
0x000a760a str r1, [sp] | *(sp) = r1;
0x000a760c mov r0, r7 | r0 = r7;
0x000a760e ldr r1, [pc, 0x114] |
0x000a7610 add r1, pc | r1 = 0x14ed3a;
0x000a7612 bl 0x2677c | fcn_0002677c (r0);
0x000a7616 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000a7618 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000a761a str r0, [sp, 8] | var_8h = r0;
0x000a761c str r1, [sp, 4] | var_4h = r1;
0x000a761e ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000a7620 ldr.w r2, [fp] | r2 = *(fp);
0x000a7624 str r0, [sp, 0x14] | var_14h = r0;
0x000a7626 mov r0, r5 | r0 = r5;
0x000a7628 str r2, [sp] | *(sp) = r2;
0x000a762a ldr r2, [r3, r1] | r2 = *((r3 + r1));
0x000a762c ldr r1, [pc, 0xf8] |
0x000a762e ldr r3, [r4] | r3 = *(r4);
0x000a7630 add r1, pc | r1 = 0x14ed5c;
0x000a7632 bl 0x77c00 | fcn_00077c00 (r0);
0x000a7636 ldr r2, [sp, 0x14] | r2 = var_14h;
| if (r2 != 0) {
0x000a7638 cbz r2, 0xa7642 |
0x000a763a mov r1, r2 | r1 = r2;
0x000a763c mov r0, r7 | r0 = r7;
0x000a763e bl 0x159dc | fcn_000159dc (r0, r1);
| }
| label_44:
0x000a7642 cmp.w r8, 0 |
| if (r8 != 0) {
0x000a7646 beq 0xa7682 |
0x000a7648 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000a764a mov r1, r4 | r1 = r4;
0x000a764c mov r0, r5 | r0 = r5;
0x000a764e bl 0x6b164 | fcn_0006b164 (r0, r1, r2, r3);
0x000a7652 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000a7654 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x000a7656 ldr r0, [r5] | r0 = *(r5);
0x000a7658 bl 0x2b6f8 | fcn_0002b6f8 (r0, r1, r2);
0x000a765c ldr r1, [pc, 0xcc] |
0x000a765e mov r0, r7 | r0 = r7;
0x000a7660 ldr r2, [r4] | r2 = *(r4);
0x000a7662 add r1, pc | r1 = 0x14ed92;
0x000a7664 bl 0x2677c | fcn_0002677c (r0);
0x000a7668 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000a766a mov r2, r0 | r2 = r0;
0x000a766c movs r3, 0 | r3 = 0;
0x000a766e mov r0, r6 | r0 = r6;
0x000a7670 bl 0x2bbb8 | fcn_0002bbb8 (r0, r1, r2, r3);
0x000a7674 movs r2, 0 | r2 = 0;
0x000a7676 movs r3, 1 | r3 = 1;
0x000a7678 movs r1, 0xa2 | r1 = 0xa2;
0x000a767a mov r0, r6 | r0 = r6;
0x000a767c str r2, [sp] | *(sp) = r2;
0x000a767e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x000a7682 ldr r2, [r6, 0x6c] | r2 = *((r6 + 0x6c));
0x000a7684 mov r0, r6 | r0 = r6;
0x000a7686 ldr r1, [r4, 0x2c] | r1 = *((r4 + 0x2c));
0x000a7688 bl 0x9894 | fcn_00009894 (r0, r1, r2);
0x000a768c ldrb.w r6, [r7, 0xa9] | r6 = *((r7 + 0xa9));
0x000a7690 b 0xa7472 | goto label_27;
| label_95:
0x000a7692 ldr.w r6, [fp, 8] | r6 = *(arg_108h);
0x000a7696 cmp r6, 0 |
| if (r6 == 0) {
0x000a7698 beq.w 0xa7466 | goto label_31;
| }
0x000a769c ldrh r3, [r4, 0x32] | r3 = *((r4 + 0x32));
0x000a769e ldr r1, [pc, 0x90] |
0x000a76a0 str r5, [sp, 0x2c] | var_2ch = r5;
0x000a76a2 strd fp, r7, [sp, 0x24] | __asm ("strd fp, r7, [var_24h]");
0x000a76a6 mov r5, r3 | r5 = r3;
0x000a76a8 add r1, pc | r1 = 0x14edde;
0x000a76aa b 0xa773a |
| while (r3 != r5) {
| label_33:
0x000a7734 ldr r6, [r6, 0x14] | r6 = *((r6 + 0x14));
0x000a7736 cmp r6, 0 |
| if (r6 == 0) {
0x000a7738 beq 0xa7808 | goto label_107;
| }
0x000a773a ldrh r3, [r6, 0x32] | r3 = *((r6 + 0x32));
0x000a773c cmp r3, r5 |
0x000a773e bne 0xa7734 |
| }
| if (r5 == 0) {
0x000a7740 cbz r5, 0xa77a0 | goto label_108;
| }
0x000a7742 ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x000a7744 movs r0, 0 | r0 = 0;
0x000a7746 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000a7748 subs r7, 2 | r7 -= 2;
0x000a774a sub.w ip, r3, 2 |
| label_36:
0x000a774e ldrsh r2, [r7, 2]! | r2 = *((r7 += 2));
0x000a7752 ldrsh r3, [ip, 2]! | r3 = *((ip += 2));
0x000a7756 cmp r2, r3 |
| if (r2 != r3) {
0x000a7758 bne 0xa7734 | goto label_33;
| }
0x000a775a ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x000a775c ldr.w r3, [r3, r0, lsl 2] | offset_9 = r0 << 2;
| r3 = *((r3 + offset_9));
0x000a7760 add.w lr, r3, -1 | lr = r3 + -1;
0x000a7764 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000a7766 ldr.w r3, [r3, r0, lsl 2] | offset_10 = r0 << 2;
| r3 = *((r3 + offset_10));
0x000a776a add.w fp, r3, -1 |
| label_35:
0x000a776e ldrb r3, [lr, 1]! | r3 = *((lr += 1));
0x000a7772 ldrb r2, [fp, 1]! | r2 = *(arg_1h);
0x000a7776 cmp r3, r2 |
| if (r3 == r2) {
0x000a7778 beq 0xa7796 | goto label_109;
| }
| label_34:
0x000a777a add r3, r1 | r3 += r1;
0x000a777c add r2, r1 | r2 += r1;
0x000a777e ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x000a7782 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x000a7786 cmp r3, r2 |
| if (r3 != r2) {
0x000a7788 bne 0xa7734 | goto label_33;
| }
0x000a778a ldrb r3, [lr, 1]! | r3 = *((lr += 1));
0x000a778e ldrb r2, [fp, 1]! | r2 = *(arg_1h);
0x000a7792 cmp r3, r2 |
| if (r3 != r2) {
0x000a7794 bne 0xa777a | goto label_34;
| }
| label_109:
0x000a7796 cmp r3, 0 |
| if (r3 != 0) {
0x000a7798 bne 0xa776e | goto label_35;
| }
0x000a779a adds r0, 1 | r0++;
0x000a779c cmp r0, r5 |
| if (r0 != r5) {
0x000a779e bne 0xa774e | goto label_36;
| }
| label_108:
0x000a77a0 ldrb.w r3, [r6, 0x36] | r3 = *((r6 + 0x36));
0x000a77a4 ldrb.w r2, [r4, 0x36] | r2 = *((r4 + 0x36));
0x000a77a8 ldrd fp, r7, [sp, 0x24] | __asm ("ldrd fp, r7, [var_24h]");
0x000a77ac ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x000a77ae cmp r3, r2 |
| if (r3 == r2) {
0x000a77b0 beq 0xa77ce | goto label_110;
| }
0x000a77b2 cmp r2, 0xb |
| if (r2 != 0xb) {
0x000a77b4 beq 0xa77ca |
0x000a77b6 cmp r3, 0xb |
| if (r3 == 0xb) {
0x000a77b8 beq 0xa7810 | goto label_111;
| }
0x000a77ba ldr r1, [pc, 0xf0] |
0x000a77bc movs r2, 0 | r2 = 0;
0x000a77be mov r0, r5 | r0 = r5;
0x000a77c0 add r1, pc | r1 = 0x14f072;
0x000a77c2 bl 0x25778 | fcn_00025778 (r0);
0x000a77c6 ldrb.w r3, [r6, 0x36] | r3 = *((r6 + 0x36));
| }
0x000a77ca cmp r3, 0xb |
0x000a77cc beq 0xa7810 |
| while (1) {
| label_110:
0x000a77ce ldr r3, [sp, 0x10] | r3 = var_10h;
0x000a77d0 cmp r3, 2 |
0x000a77d2 itttt eq |
| if (r3 != 2) {
0x000a77d4 ldrbeq r3, [r6, 0x37] | r3 = *((r6 + 0x37));
| }
| if (r3 != 2) {
0x000a77d8 ldreq r2, [sp, 0x10] | r2 = var_10h;
| }
| if (r3 == 2) {
0x000a77da bfieq r3, r2, 0, 2 | __asm ("bfieq r3, r2, 0, 2");
| }
| if (r3 == 2) {
0x000a77de strb.w r3, [r6, 0x37] | *((r6 + 0x37)) = r3;
| }
0x000a77e2 ldrb.w r3, [r5, 0xc8] | r3 = *((r5 + 0xc8));
0x000a77e6 cmp r3, 1 |
| if (r3 < 1) {
0x000a77e8 bls 0xa7838 | goto label_112;
| }
0x000a77ea ldr.w r3, [r5, 0xe8] | r3 = *((r5 + 0xe8));
0x000a77ee str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x000a77f0 str.w r4, [r5, 0xe8] | __asm ("str.w r4, [r5, 0xe8]");
0x000a77f4 ldr.w r4, [fp, 8] | r4 = *(arg_108h);
0x000a77f8 b 0xa748e | goto label_37;
| label_94:
0x000a77fa ldrb.w r3, [r4, 0x37] | r3 = *((r4 + 0x37));
0x000a77fe bfc r3, 5, 1 | value_11 = BIT_MASK (1, );
| value_11 = ~value_11;
| r3 &= value_11;
0x000a7802 strb.w r3, [r4, 0x37] | *((r4 + 0x37)) = r3;
0x000a7806 b 0xa7460 | goto label_38;
| label_107:
0x000a7808 ldrd fp, r7, [sp, 0x24] | __asm ("ldrd fp, r7, [var_24h]");
0x000a780c ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x000a780e b 0xa7466 | goto label_31;
| label_111:
0x000a7810 ldrb.w r3, [r4, 0x36] | r3 = *((r4 + 0x36));
0x000a7814 strb.w r3, [r6, 0x36] | *((r6 + 0x36)) = r3;
0x000a7818 b 0xa77ce |
| }
| label_97:
0x000a781a ldr r3, [sp, 0x20] | r3 = var_20h;
0x000a781c cmp r3, 0 |
| if (r3 != 0) {
0x000a781e bne.w 0xa6c3a | goto label_39;
| }
0x000a7822 mov r1, r8 | r1 = r8;
0x000a7824 mov r0, r7 | r0 = r7;
0x000a7826 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x000a782a b.w 0xa6c50 | goto label_40;
| label_102:
0x000a782e mov r0, r7 | r0 = r7;
0x000a7830 movs r6, 0 | r6 = 0;
0x000a7832 bl 0x101ec | fcn_000101ec (r0);
0x000a7836 b 0xa72d8 | goto label_18;
| label_112:
0x000a7838 movs r6, 0 | r6 = 0;
0x000a783a b 0xa72d8 | goto label_18;
| label_101:
0x000a783c ldr r1, [pc, 0x70] |
0x000a783e mov r0, r5 | r0 = r5;
0x000a7840 movs r6, 0 | r6 = 0;
0x000a7842 add r1, pc | r1 = 0x14f0f6;
0x000a7844 bl 0x25778 | fcn_00025778 (r0);
0x000a7848 ldr r2, [pc, 0x68] |
0x000a784a movw r1, 0xc722 |
0x000a784e movt r1, 1 | r1 = 0x1c722;
0x000a7852 movs r0, 0xb | r0 = 0xb;
0x000a7854 add r2, pc | r2 = 0x14f10c;
0x000a7856 bl 0x23164 | fcn_00023164 (r0, r1, r2);
0x000a785a str r0, [r5, 0xc] | *((r5 + 0xc)) = r0;
0x000a785c b 0xa72d8 | goto label_18;
| label_73:
0x000a785e bl 0x53ee0 | fcn_00053ee0 (r0, r1, r2, r3);
0x000a7862 b.w 0xa6f58 | goto label_41;
| label_79:
0x000a7866 ldr.w sb, [sp, 0x20] | sb = var_20h;
0x000a786a mov ip, r2 |
0x000a786c b 0xa71d6 | goto label_42;
| label_106:
0x000a786e ldr r2, [pc, 0x48] |
0x000a7870 add r2, pc | r2 = 0x14f12e;
0x000a7872 b 0xa760a | goto label_43;
| label_105:
0x000a7874 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000a7876 mov r0, r5 | r0 = r5;
0x000a7878 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000a787a ldr r1, [pc, 0x40] |
0x000a787c str r2, [sp, 8] | var_8h = r2;
0x000a787e ldr r2, [sp, 0x10] | r2 = var_10h;
0x000a7880 add r1, pc | r1 = 0x14f142;
0x000a7882 str r2, [sp, 4] | var_4h = r2;
0x000a7884 ldr.w r2, [fp] | r2 = *(fp);
0x000a7888 str r2, [sp] | *(sp) = r2;
0x000a788a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000a788c ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x000a788e ldr r3, [r4] | r3 = *(r4);
0x000a7890 bl 0x77c00 | fcn_00077c00 (r0);
0x000a7894 b 0xa7642 | goto label_44;
| label_104:
0x000a7896 mov r0, r5 | r0 = r5;
0x000a7898 bl 0x2aeb4 | r0 = fcn_0002aeb4 (r0, r1);
0x000a789c mov r6, r0 | r6 = r0;
0x000a789e cmp r0, 0 |
| if (r0 == 0) {
0x000a78a0 beq.w 0xa72d8 | goto label_18;
| }
0x000a78a4 b 0xa75ae | goto label_45;
| label_82:
0x000a78a6 movs r3, 0 | r3 = 0;
0x000a78a8 ldrb r3, [r3] | r3 = *(r3);
0x000a78aa udf 0xff | __asm ("udf 0xff");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa7b80 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000a7b80 () | void fcn_000a7b80 (int16_t arg_0h, int16_t arg_a0h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000a7b80 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000a7b84 mov r8, r2 | r8 = r2;
0x000a7b86 ldr r2, [pc, 0x154] |
0x000a7b88 sub sp, 0x14 |
0x000a7b8a mov r5, r0 | r5 = r0;
0x000a7b8c mov r6, r1 | r6 = r1;
0x000a7b8e ldr r3, [pc, 0x150] | r3 = *(0xa7ce2);
0x000a7b90 add r2, pc | r2 = 0x14f872;
0x000a7b92 ldr r7, [r0] | r7 = *(r0);
0x000a7b94 ldr r3, [r2, r3] |
0x000a7b96 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a7b98 str r3, [sp, 0xc] | var_ch = r3;
0x000a7b9a mov.w r3, 0 | r3 = 0;
0x000a7b9e bl 0x88f5c | r0 = fcn_00088f5c (r0);
0x000a7ba2 cmp r0, 0 |
| if (r0 != 0) {
0x000a7ba4 bne 0xa7c4c | goto label_1;
| }
0x000a7ba6 cmp r6, 0 |
| if (r6 == 0) {
0x000a7ba8 beq 0xa7c66 | goto label_27;
| }
0x000a7baa ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
| if (r3 == 0) {
0x000a7bae cbnz r3, 0xa7bd4 |
0x000a7bb0 mov r1, r6 | r1 = r6;
0x000a7bb2 mov r0, r7 | r0 = r7;
0x000a7bb4 bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x000a7bb8 mov r4, r0 | r4 = r0;
0x000a7bba mov r0, r7 | r0 = r7;
0x000a7bbc mov r1, r4 | r1 = r4;
0x000a7bbe bl 0x19fe4 | r0 = fcn_00019fe4 (r0, r1);
0x000a7bc2 mov sb, r0 | sb = r0;
| if (r4 != 0) {
0x000a7bc4 cbz r4, 0xa7bce |
0x000a7bc6 mov r1, r4 | r1 = r4;
0x000a7bc8 mov r0, r7 | r0 = r7;
0x000a7bca bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x000a7bce cmp.w sb, 0 |
| if (sb >= 0) {
0x000a7bd2 bge 0xa7c94 | goto label_28;
| }
| }
0x000a7bd4 add r3, sp, 8 | r3 += var_8h;
0x000a7bd6 mov r1, r6 | r1 = r6;
0x000a7bd8 mov r2, r8 | r2 = r8;
0x000a7bda mov r0, r5 | r0 = r5;
0x000a7bdc bl 0x25870 | r0 = fcn_00025870 (r0, r1, r2, r3);
0x000a7be0 cmp r0, 0 |
| if (r0 < 0) {
0x000a7be2 blt 0xa7c1e | goto label_0;
| }
0x000a7be4 ldr.w r6, [r8, 4] | r6 = *((r8 + 4));
| if (r6 != 0) {
0x000a7be8 cbz r6, 0xa7bf0 |
0x000a7bea ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000a7bec lsls r0, r0, 4 | r0 <<= 4;
0x000a7bee ldr r6, [r3, r0] | r6 = *((r3 + r0));
| }
0x000a7bf0 ldr r1, [sp, 8] | r1 = var_8h;
0x000a7bf2 mov r0, r7 | r0 = r7;
0x000a7bf4 bl 0x1bcc0 | r0 = fcn_0001bcc0 (r0, r1);
0x000a7bf8 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000a7bfa cbz r0, 0xa7c1e | goto label_0;
| }
0x000a7bfc mov r1, r0 | r1 = r0;
0x000a7bfe mov r2, r6 | r2 = r6;
0x000a7c00 mov r0, r7 | r0 = r7;
0x000a7c02 bl 0x1aa6c | r0 = fcn_0001aa6c (r0, r1, r2);
0x000a7c06 mov r8, r0 | r8 = r0;
0x000a7c08 cmp r0, 0 |
| if (r0 == 0) {
0x000a7c0a beq 0xa7cba | goto label_29;
| }
0x000a7c0c ldr r1, [r0, 0xc] | r1 = *((r0 + 0xc));
0x000a7c0e mov r2, r0 | r2 = r0;
0x000a7c10 mov r0, r5 | r0 = r5;
0x000a7c12 bl 0x78218 | fcn_00078218 (r0, r1, r2);
| label_4:
0x000a7c16 mov r1, r4 | r1 = r4;
0x000a7c18 mov r0, r7 | r0 = r7;
0x000a7c1a bl 0x159dc | fcn_000159dc (r0, r1);
| do {
| label_0:
0x000a7c1e ldrb.w r3, [r7, 0x5c] | r3 = *((r7 + 0x5c));
| if (r3 == 0) {
0x000a7c22 cbnz r3, 0xa7c4c |
0x000a7c24 ldr r0, [r5, 8] | r0 = *((r5 + 8));
| if (r0 == 0) {
0x000a7c26 cbz r0, 0xa7c84 | goto label_30;
| }
| label_2:
0x000a7c28 ldrd r3, r2, [r0, 0x6c] | __asm ("ldrd r3, r2, [r0, 0x6c]");
0x000a7c2c cmp r3, r2 |
| if (r3 >= r2) {
0x000a7c2e bge 0xa7cac | goto label_31;
| }
0x000a7c30 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x000a7c34 ldr r4, [r0, 0x68] | r4 = *((r0 + 0x68));
0x000a7c36 adds r3, 1 | r3++;
0x000a7c38 lsls r1, r1, 2 | r1 <<= 2;
0x000a7c3a str r3, [r0, 0x6c] | *((r0 + 0x6c)) = r3;
0x000a7c3c movs r2, 0 | r2 = 0;
0x000a7c3e adds r3, r4, r1 | r3 = r4 + r1;
0x000a7c40 movs r0, 0xa2 | r0 = 0xa2;
0x000a7c42 str r0, [r4, r1] | *((r4 + r1)) = r0;
0x000a7c44 strd r2, r2, [r3, 4] | __asm ("strd r2, r2, [r3, 4]");
0x000a7c48 strd r2, r2, [r3, 0xc] | __asm ("strd r2, r2, [r3, 0xc]");
| }
| label_1:
0x000a7c4c ldr r2, [pc, 0x94] |
0x000a7c4e ldr r3, [pc, 0x90] | r3 = *(0xa7ce2);
0x000a7c50 add r2, pc | r2 = 0x14f938;
0x000a7c52 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a7c54 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a7c56 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000a7c58 eors r2, r3 | r2 ^= r3;
0x000a7c5a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a7c5e bne 0xa7cd6 | goto label_32;
| }
0x000a7c60 add sp, 0x14 |
0x000a7c62 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_27:
0x000a7c66 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000a7c68 mov r4, r0 | r4 = r0;
0x000a7c6a cmp r3, 0 |
0x000a7c6c ble 0xa7c1e |
| } while (r3 <= 0);
| do {
0x000a7c6e cmp r4, 1 |
| if (r4 != 1) {
0x000a7c70 beq 0xa7c7c |
0x000a7c72 mov r1, r4 | r1 = r4;
0x000a7c74 mov r0, r5 | r0 = r5;
0x000a7c76 bl 0x78190 | fcn_00078190 (r0, r1);
0x000a7c7a ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
| }
0x000a7c7c adds r4, 1 | r4++;
0x000a7c7e cmp r3, r4 |
0x000a7c80 bgt 0xa7c6e |
| } while (r3 > r4);
0x000a7c82 b 0xa7c1e | goto label_0;
| label_30:
0x000a7c84 ldr r3, [r5, 0x74] | r3 = *((r5 + 0x74));
| if (r3 == 0) {
0x000a7c86 cbz r3, 0xa7c9e | goto label_33;
| }
| label_3:
0x000a7c88 mov r0, r5 | r0 = r5;
0x000a7c8a bl 0x2ae64 | r0 = fcn_0002ae64 (r0, r1);
0x000a7c8e cmp r0, 0 |
| if (r0 == 0) {
0x000a7c90 beq 0xa7c4c | goto label_1;
| }
0x000a7c92 b 0xa7c28 | goto label_2;
| label_28:
0x000a7c94 mov r1, sb | r1 = sb;
0x000a7c96 mov r0, r5 | r0 = r5;
0x000a7c98 bl 0x78190 | fcn_00078190 (r0, r1);
0x000a7c9c b 0xa7c1e | goto label_0;
| label_33:
0x000a7c9e ldr r3, [r5] | r3 = *(r5);
0x000a7ca0 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000a7ca2 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x000a7ca4 itt pl |
| if (r3 < r3) {
0x000a7ca6 movpl r3, 1 | r3 = 1;
| }
| if (r3 < r3) {
0x000a7ca8 strbpl r3, [r5, 0x17] | *((r5 + 0x17)) = r3;
| }
0x000a7caa b 0xa7c88 | goto label_3;
| label_31:
0x000a7cac movs r3, 0 | r3 = 0;
0x000a7cae movs r1, 0xa2 | r1 = 0xa2;
0x000a7cb0 mov r2, r3 | r2 = r3;
0x000a7cb2 str r3, [sp] | *(sp) = r3;
0x000a7cb4 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000a7cb8 b 0xa7c4c | goto label_1;
| label_29:
0x000a7cba mov r1, r0 | r1 = r0;
0x000a7cbc mov r3, r6 | r3 = r6;
0x000a7cbe mov r2, r4 | r2 = r4;
0x000a7cc0 mov r0, r5 | r0 = r5;
0x000a7cc2 bl 0x894a4 | r0 = fcn_000894a4 (r0, r1, r2, r3, r4, r5, r6);
0x000a7cc6 mov r1, r0 | r1 = r0;
0x000a7cc8 cmp r0, 0 |
| if (r0 == 0) {
0x000a7cca beq 0xa7c16 | goto label_4;
| }
0x000a7ccc mov r2, r8 | r2 = r8;
0x000a7cce mov r0, r5 | r0 = r5;
0x000a7cd0 bl 0x78218 | fcn_00078218 (r0, r1, r2);
0x000a7cd4 b 0xa7c16 | goto label_4;
| label_32:
0x000a7cd6 blx 0x7e8c | fcn_00007e8c ();
0x000a7cda nop |
0x000a7cdc str r0, [r0, 0x10] | *((r0 + 0x10)) = r0;
0x000a7cde movs r2, r0 | r2 = r0;
0x000a7ce0 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000a7ce2 movs r0, r0 |
0x000a7ce4 str r0, [r0, 4] | *((r0 + 4)) = r0;
0x000a7ce6 movs r2, r0 | r2 = r0;
0x000a7ce8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a7cec mov r5, r2 | r5 = r2;
0x000a7cee ldr.w r2, [pc, 0x490] |
0x000a7cf0 movs r4, 0x90 | r4 = 0x90;
0x000a7cf2 sub sp, 0x2c |
0x000a7cf4 ldr.w r3, [pc, 0x48c] | r3 = *(0xa8184);
0x000a7cf8 add r2, pc | r2 = 0x14fe7e;
0x000a7cfa str r0, [sp, 0xc] | var_ch_2 = r0;
0x000a7cfc ldr r3, [r2, r3] |
0x000a7cfe ldr r3, [r3] | r3 = *(0x14fe7e);
0x000a7d00 str r3, [sp, 0x24] | var_24h = r3;
0x000a7d02 mov.w r3, 0 | r3 = 0;
0x000a7d06 blx 0x82a0 | fcn_000082a0 ();
0x000a7d0a movs r3, 0 | r3 = 0;
0x000a7d0c mov r4, r0 | r4 = r0;
0x000a7d0e ldr r0, [r5] | r0 = *(r5);
0x000a7d10 strd r3, r3, [sp, 0x10] | __asm ("strd r3, r3, [var_14h]");
0x000a7d14 str r3, [sp, 0x1c] | var_1ch = r3;
0x000a7d16 blx 0x8508 | r0 = fcn_00008508 ();
0x000a7d1a mov r6, r0 | r6 = r0;
0x000a7d1c ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000a7d1e blx 0x8508 | r0 = fcn_00008508 ();
0x000a7d22 mov r5, r0 | r5 = r0;
0x000a7d24 cmp r6, 0 |
| if (r6 == 0) {
0x000a7d26 beq.w 0xa7e80 | goto label_34;
| }
0x000a7d2a cmp r5, 0 |
| if (r5 == 0) {
0x000a7d2c beq.w 0xa7e8a | goto label_35;
| }
| label_12:
0x000a7d30 ldrb.w r3, [r4, 0xaa] | r3 = *((r4 + 0xaa));
0x000a7d34 ands r7, r3, 4 | r7 = r3 & 4;
| if (r7 != r3) {
0x000a7d38 bne.w 0xa7e9a | goto label_36;
| }
| label_13:
0x000a7d3c ldr.w r2, [r4, 0x8c] | r2 = *((r4 + 0x8c));
0x000a7d40 ldr.w sl, [r4, 0x14] | sl = *((r4 + 0x14));
0x000a7d44 adds r3, r2, 1 | r3 = r2 + 1;
0x000a7d46 cmp r3, sl |
| if (r3 < sl) {
0x000a7d48 blt.w 0xa7fac | goto label_37;
| }
0x000a7d4c cmp.w sl, 0 |
0x000a7d50 ldr.w fp, [r4, 0x10] | fp = *((r4 + 0x10));
| if (sl <= 0) {
0x000a7d54 ble 0xa7d98 | goto label_38;
| }
0x000a7d56 ldr.w r1, [pc, 0x430] | r1 = *(0x000a8188);
0x000a7d5a add.w sb, r5, -1 | sb = r5 + -1;
0x000a7d5e ldr.w r8, [pc, 0x42c] |
0x000a7d62 add r1, pc | r1 += pc;
0x000a7d64 add r8, pc | r8 = 0x14fef6;
| label_5:
0x000a7d66 lsls r3, r7, 4 | r3 = r7 << 4;
0x000a7d68 mov lr, sb | lr = sb;
0x000a7d6a mov ip, sb |
0x000a7d6c ldr.w r0, [fp, r3] | r0 = *((fp + r3));
0x000a7d70 subs r0, 1 | r0--;
| do {
| label_6:
0x000a7d72 ldrb r3, [r0, 1]! | r3 = *((r0 += 1));
0x000a7d76 ldrb r2, [ip, 1]! | r2 = *((ip += 1));
0x000a7d7a cmp r3, r2 |
| if (r3 == r2) {
0x000a7d7c beq 0xa7e26 | goto label_39;
| }
0x000a7d7e add r3, r1 | r3 += r1;
0x000a7d80 add r2, r1 | r2 += r1;
0x000a7d82 ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x000a7d86 ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x000a7d8a cmp r3, r2 |
0x000a7d8c beq 0xa7d72 |
| } while (r3 == r2);
0x000a7d8e cmp r7, 0 |
| if (r7 == 0) {
0x000a7d90 beq 0xa7e56 | goto label_40;
| }
| label_8:
0x000a7d92 adds r7, 1 | r7++;
0x000a7d94 cmp sl, r7 |
| if (sl != r7) {
0x000a7d96 bne 0xa7d66 | goto label_5;
| }
| label_38:
0x000a7d98 add.w r3, r4, 0x1b0 | r3 = r4 + 0x1b0;
0x000a7d9c cmp fp, r3 |
| if (fp == r3) {
0x000a7d9e beq.w 0xa7f66 | goto label_41;
| }
0x000a7da2 add.w r2, sl, 1 | r2 = sl + 1;
0x000a7da6 mov r1, fp | r1 = fp;
0x000a7da8 lsls r2, r2, 4 | r2 <<= 4;
0x000a7daa movs r3, 0 | r3 = 0;
0x000a7dac mov r0, r4 | r0 = r4;
0x000a7dae bl 0x1b3a0 | r0 = fcn_0001b3a0 (r0, r1, r2);
0x000a7db2 mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x000a7db4 cbz r0, 0xa7e0a |
| label_14:
0x000a7db6 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a7db8 add r2, sp, 0x18 | r2 += var_18h;
0x000a7dba str.w r8, [r4, 0x10] | __asm ("str.w r8, [r4, 0x10]");
0x000a7dbe mov r1, r6 | r1 = r6;
0x000a7dc0 lsl.w sl, r3, 4 | sl = r3 << 4;
0x000a7dc4 movs r3, 0 | r3 = 0;
0x000a7dc6 add.w r7, r8, sl | r7 = r8 + sl;
0x000a7dca str.w r3, [r8, sl] | __asm ("str.w r3, [r8, sl]");
0x000a7dce str r3, [r7, 4] | *((r7 + 4)) = r3;
0x000a7dd0 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x000a7dd2 str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x000a7dd4 ldr r3, [r4] | r3 = *(r4);
0x000a7dd6 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x000a7dd8 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x000a7dda str r3, [sp, 0x18] | var_18h = r3;
0x000a7ddc add r3, sp, 0x14 | r3 += var_14h;
0x000a7dde str r3, [sp, 4] | var_4h = r3;
0x000a7de0 add r3, sp, 0x10 | r3 += var_10h;
0x000a7de2 str r3, [sp] | *(sp) = r3;
0x000a7de4 add r3, sp, 0x20 | r3 += var_20h;
0x000a7de6 bl 0x4b1ac | r0 = fcn_0004b1ac (r0, r1, r2, r3, r4, r5);
0x000a7dea cmp r0, 0 |
| if (r0 == 0) {
0x000a7dec beq.w 0xa7fba | goto label_42;
| }
0x000a7df0 cmp r0, 7 |
| if (r0 == 7) {
0x000a7df2 beq.w 0xa8172 | goto label_43;
| }
| label_25:
0x000a7df6 ldr r4, [sp, 0x14] | r4 = var_14h;
0x000a7df8 mov.w r2, -1 | r2 = -1;
0x000a7dfc ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a7dfe mov r1, r4 | r1 = r4;
0x000a7e00 blx 0x7edc | fcn_00007edc ();
0x000a7e04 mov r0, r4 | r0 = r4;
0x000a7e06 blx 0x84f8 | fcn_000084f8 ();
| }
| label_7:
0x000a7e0a ldr r2, [pc, 0x384] |
0x000a7e0c ldr r3, [pc, 0x374] | r3 = *(0xa8184);
0x000a7e0e add r2, pc | r2 = 0x14ffa4;
0x000a7e10 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a7e12 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a7e14 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a7e16 eors r2, r3 | r2 ^= r3;
0x000a7e18 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a7e1c bne.w 0xa817a | goto label_44;
| }
0x000a7e20 add sp, 0x2c |
0x000a7e22 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_39:
0x000a7e26 cmp r3, 0 |
| if (r3 != 0) {
0x000a7e28 bne 0xa7d72 | goto label_6;
| }
| label_11:
0x000a7e2a ldr r1, [pc, 0x368] |
0x000a7e2c mov r2, r5 | r2 = r5;
0x000a7e2e mov r0, r4 | r0 = r4;
0x000a7e30 add r1, pc | r1 = 0x14ffca;
0x000a7e32 bl 0x2677c | r0 = fcn_0002677c (r0);
0x000a7e36 mov r1, r0 | r1 = r0;
| label_15:
0x000a7e38 str r1, [sp, 0x1c] | var_1ch = r1;
0x000a7e3a cmp r1, 0 |
| if (r1 == 0) {
0x000a7e3c beq 0xa7e0a | goto label_7;
| }
0x000a7e3e ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a7e40 mov.w r2, -1 | r2 = -1;
0x000a7e44 blx 0x7edc | fcn_00007edc ();
0x000a7e48 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000a7e4a cmp r1, 0 |
| if (r1 == 0) {
0x000a7e4c beq 0xa7e0a | goto label_7;
| }
0x000a7e4e mov r0, r4 | r0 = r4;
0x000a7e50 bl 0x159dc | fcn_000159dc (r0, r1);
0x000a7e54 b 0xa7e0a | goto label_7;
| label_40:
0x000a7e56 ldr r0, [pc, 0x340] |
0x000a7e58 movs r3, 0x6d | r3 = 0x6d;
0x000a7e5a add r0, pc | r0 = 0x14fff8;
0x000a7e5c b 0xa7e72 | goto label_45;
| label_9:
0x000a7e5e add r3, r8 | r3 += r8;
0x000a7e60 add r2, r8 | r2 += r8;
0x000a7e62 ldrb.w ip, [r3, 0x140] | ip = *((r3 + 0x140));
0x000a7e66 ldrb.w r3, [r2, 0x140] | r3 = *((r2 + 0x140));
0x000a7e6a cmp ip, r3 |
| if (ip != r3) {
0x000a7e6c bne 0xa7d92 | goto label_8;
| }
| label_10:
0x000a7e6e ldrb r3, [r0, 1]! | r3 = *((r0 += 1));
| label_45:
0x000a7e72 ldrb r2, [lr, 1]! | r2 = *((lr += 1));
0x000a7e76 cmp r3, r2 |
| if (r3 != r2) {
0x000a7e78 bne 0xa7e5e | goto label_9;
| }
0x000a7e7a cmp r3, 0 |
| if (r3 != 0) {
0x000a7e7c bne 0xa7e6e | goto label_10;
| }
0x000a7e7e b 0xa7e2a | goto label_11;
| label_34:
0x000a7e80 ldr r6, [pc, 0x318] |
0x000a7e82 add r6, pc | r6 = 0x150022;
0x000a7e84 cmp r5, 0 |
| if (r5 != 0) {
0x000a7e86 bne.w 0xa7d30 | goto label_12;
| }
| label_35:
0x000a7e8a ldrb.w r3, [r4, 0xaa] | r3 = *((r4 + 0xaa));
0x000a7e8e ldr r5, [pc, 0x310] |
0x000a7e90 ands r7, r3, 4 | r7 = r3 & 4;
0x000a7e94 add r5, pc | r5 = 0x15003a;
| if (r7 == r3) {
0x000a7e96 beq.w 0xa7d3c | goto label_13;
| }
| label_36:
0x000a7e9a ldr r0, [pc, 0x308] |
0x000a7e9c add r0, pc | r0 = 0x150046;
0x000a7e9e blx 0x7f3c | r0 = fcn_00007f3c ();
0x000a7ea2 mov r5, r0 | r5 = r0;
0x000a7ea4 str r0, [sp, 0x20] | var_20h = r0;
0x000a7ea6 cmp r0, 0 |
| if (r0 == 0) {
0x000a7ea8 beq 0xa7e0a | goto label_7;
| }
0x000a7eaa ldrb.w r3, [r4, 0xa8] | r3 = *((r4 + 0xa8));
0x000a7eae ldr r7, [r4, 0x10] | r7 = *((r4 + 0x10));
0x000a7eb0 add.w r7, r7, r3, lsl 4 | r7 += (r3 << 4);
0x000a7eb4 ldr r0, [r7, 4] | r0 = *((r7 + 4));
| if (r0 != 0) {
0x000a7eb6 cbz r0, 0xa7ebc |
0x000a7eb8 bl 0x59ac0 | fcn_00059ac0 (r0);
| }
0x000a7ebc ldr r1, [pc, 0x2e8] |
0x000a7ebe movs r3, 0 | r3 = 0;
0x000a7ec0 str r3, [r7, 4] | *((r7 + 4)) = r3;
0x000a7ec2 mov sb, r3 | sb = r3;
0x000a7ec4 str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x000a7ec6 mov r0, r5 | r0 = r5;
0x000a7ec8 str r3, [sp] | *(sp) = r3;
0x000a7eca add r1, pc | r1 = 0x150076;
0x000a7ecc mov.w r3, 0x100 | r3 = 0x100;
0x000a7ed0 addw r1, r1, 0xa94 | __asm ("addw r1, r1, aav.0x000000ff");
0x000a7ed4 str r3, [sp, 4] | var_4h = r3;
0x000a7ed6 mov r2, r4 | r2 = r4;
0x000a7ed8 adds r3, r7, 4 | r3 = r7 + 4;
0x000a7eda bl 0x534c8 | r0 = fcn_000534c8 (r0, r1, r2, r3, r4, r5, r6);
0x000a7ede mov r5, r0 | r5 = r0;
| label_16:
0x000a7ee0 cmp r5, 0x13 |
0x000a7ee2 mov.w r3, 0 | r3 = 0;
0x000a7ee6 strb.w r3, [r4, 0x5b] | *((r4 + 0x5b)) = r3;
| if (r5 == 0x13) {
0x000a7eea beq.w 0xa80c6 | goto label_46;
| }
0x000a7eee cmp r5, 0 |
| if (r5 == 0) {
0x000a7ef0 beq 0xa7fec | goto label_47;
| }
0x000a7ef2 movs r3, 3 | r3 = 3;
0x000a7ef4 strb r3, [r7, 8] | *((r7 + 8)) = r3;
| label_17:
0x000a7ef6 mov r0, sb | r0 = sb;
0x000a7ef8 blx 0x7f68 | fcn_00007f68 ();
| label_18:
0x000a7efc ldrb.w r7, [r4, 0xaa] | r7 = *((r4 + 0xaa));
0x000a7f00 ands r7, r7, 4 | r7 &= 4;
| if (r7 != r7) {
0x000a7f04 bne.w 0xa8100 | goto label_48;
| }
0x000a7f08 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a7f0a add.w r8, r3, -1 | r8 = r3 + -1;
0x000a7f0e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a7f10 lsl.w sb, r8, 4 | sb = r8 << 4;
0x000a7f14 add r3, sb | r3 += sb;
0x000a7f16 ldr r0, [r3, 4] | r0 = *((r3 + 4));
| if (r0 != 0) {
0x000a7f18 cbz r0, 0xa7f26 |
0x000a7f1a bl 0x59ac0 | fcn_00059ac0 (r0);
0x000a7f1e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a7f20 add r3, sb | r3 += sb;
0x000a7f22 str r7, [r3, 4] | *((r3 + 4)) = r7;
0x000a7f24 str r7, [r3, 0xc] | *((r3 + 0xc)) = r7;
| }
0x000a7f26 mov r0, r4 | r0 = r4;
0x000a7f28 bl 0x1935c | fcn_0001935c (r0);
0x000a7f2c movw r3, 0xc0a | r3 = 0xc0a;
0x000a7f30 str.w r8, [r4, 0x14] | __asm ("str.w r8, [r4, 0x14]");
0x000a7f34 cmp r5, r3 |
0x000a7f36 it ne |
| if (r5 != r3) {
0x000a7f38 cmpne r5, 7 | __asm ("cmpne r5, 7");
| }
| if (r5 == r3) {
0x000a7f3a beq.w 0xa8148 | goto label_49;
| }
0x000a7f3e ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000a7f40 cmp r1, 0 |
| if (r1 != 0) {
0x000a7f42 bne.w 0xa8104 | goto label_50;
| }
0x000a7f46 ldr r1, [pc, 0x264] |
0x000a7f48 mov r2, r6 | r2 = r6;
0x000a7f4a mov r0, r4 | r0 = r4;
0x000a7f4c add r1, pc | r1 = 0x1500fe;
0x000a7f4e bl 0x2677c | r0 = fcn_0002677c (r0);
0x000a7f52 mov r1, r0 | r1 = r0;
0x000a7f54 str r0, [sp, 0x1c] | var_1ch = r0;
| label_20:
0x000a7f56 cmp r1, 0 |
| if (r1 != 0) {
0x000a7f58 bne.w 0xa8104 | goto label_50;
| }
| label_21:
0x000a7f5c ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a7f5e mov r1, r5 | r1 = r5;
0x000a7f60 blx 0x8310 | fcn_00008310 ();
0x000a7f64 b 0xa7e0a | goto label_7;
| label_41:
0x000a7f66 movs r2, 0x30 | r2 = 0x30;
0x000a7f68 movs r3, 0 | r3 = 0;
0x000a7f6a mov r0, r4 | r0 = r4;
0x000a7f6c bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x000a7f70 mov r8, r0 | r8 = r0;
0x000a7f72 cmp r0, 0 |
| if (r0 == 0) {
0x000a7f74 beq.w 0xa7e0a | goto label_7;
| }
0x000a7f78 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a7f7a ldr r7, [r3] | r7 = *(r3);
0x000a7f7c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a7f7e ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x000a7f80 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000a7f82 str.w r7, [r8] | __asm ("str.w r7, [r8]");
0x000a7f86 str.w r0, [r8, 4] | __asm ("str.w r0, [r8, 4]");
0x000a7f8a str.w r1, [r8, 8] | __asm ("str.w r1, [r8, 8]");
0x000a7f8e str.w r2, [r8, 0xc] | __asm ("str.w r2, [r8, 0xc]");
0x000a7f92 ldr r7, [r3, 0x10] | r7 = *((r3 + 0x10));
0x000a7f94 ldr r0, [r3, 0x14] | r0 = *((r3 + 0x14));
0x000a7f96 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x000a7f98 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x000a7f9a str.w r7, [r8, 0x10] | __asm ("str.w r7, [r8, 0x10]");
0x000a7f9e str.w r0, [r8, 0x14] | __asm ("str.w r0, [r8, 0x14]");
0x000a7fa2 str.w r1, [r8, 0x18] | __asm ("str.w r1, [r8, 0x18]");
0x000a7fa6 str.w r2, [r8, 0x1c] | __asm ("str.w r2, [r8, 0x1c]");
0x000a7faa b 0xa7db6 | goto label_14;
| label_37:
0x000a7fac ldr r1, [pc, 0x200] |
0x000a7fae mov r0, r4 | r0 = r4;
0x000a7fb0 add r1, pc | r1 = 0x150164;
0x000a7fb2 bl 0x2677c | r0 = fcn_0002677c (r0);
0x000a7fb6 mov r1, r0 | r1 = r0;
0x000a7fb8 b 0xa7e38 | goto label_15;
| label_42:
0x000a7fba ldr r3, [sp, 0x18] | r3 = var_18h;
0x000a7fbc mov r2, r4 | r2 = r4;
0x000a7fbe ldr.w sb, [sp, 0x10] | sb = var_10h;
0x000a7fc2 str r0, [sp] | *(sp) = r0;
0x000a7fc4 orr r3, r3, 0x100 | r3 |= 0x100;
0x000a7fc8 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000a7fca mov r1, sb | r1 = sb;
0x000a7fcc str r3, [sp, 4] | var_4h = r3;
0x000a7fce str r3, [sp, 0x18] | var_18h = r3;
0x000a7fd0 adds r3, r7, 4 | r3 = r7 + 4;
0x000a7fd2 bl 0x534c8 | fcn_000534c8 (r0, r1, r2, r3, r4, r5, r6);
0x000a7fd6 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000a7fd8 mov r1, r5 | r1 = r5;
0x000a7fda mov r5, r0 | r5 = r0;
0x000a7fdc mov r0, r4 | r0 = r4;
0x000a7fde adds r3, 1 | r3++;
0x000a7fe0 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x000a7fe2 bl 0x1b9dc | fcn_0001b9dc (r0, r1);
0x000a7fe6 str.w r0, [r8, sl] | __asm ("str.w r0, [r8, sl]");
0x000a7fea b 0xa7ee0 | goto label_16;
| label_47:
0x000a7fec ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x000a7fee mov r0, r4 | r0 = r4;
0x000a7ff0 bl 0x2a2cc | fcn_0002a2cc (r0, r1);
0x000a7ff4 str r0, [r7, 0xc] | *((r7 + 0xc)) = r0;
0x000a7ff6 cmp r0, 0 |
| if (r0 == 0) {
0x000a7ff8 beq.w 0xa816e | goto label_51;
| }
0x000a7ffc ldrb.w r2, [r0, 0x4c] | r2 = *((r0 + 0x4c));
| if (r2 != 0) {
0x000a8000 cbz r2, 0xa801c |
0x000a8002 ldrb.w r2, [r0, 0x4d] | r2 = *((r0 + 0x4d));
0x000a8006 ldrb.w r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x000a800a cmp r2, r3 |
| if (r2 == r3) {
0x000a800c beq 0xa801c | goto label_24;
| }
0x000a800e ldr r1, [pc, 0x1a4] |
0x000a8010 movs r5, 1 | r5 = 1;
0x000a8012 mov r0, r4 | r0 = r4;
0x000a8014 add r1, pc | r1 = 0x1501ce;
0x000a8016 bl 0x2677c | fcn_0002677c (r0);
0x000a801a str r0, [sp, 0x1c] | var_1ch = r0;
| }
| label_24:
0x000a801c ldr.w r8, [r7, 4] | r8 = *((r7 + 4));
0x000a8020 ldrb.w r3, [r8, 9] | r3 = *((r8 + 9));
| if (r3 != 0) {
0x000a8024 cbz r3, 0xa8038 |
0x000a8026 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x000a802a adds r3, 1 | r3++;
0x000a802c str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x000a8030 ldrb.w r3, [r8, 0xa] | r3 = *((r8 + 0xa));
0x000a8034 cmp r3, 0 |
| if (r3 == 0) {
0x000a8036 beq 0xa812e | goto label_52;
| }
| }
| label_23:
0x000a8038 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000a803c ldr r3, [r3] | r3 = *(r3);
0x000a803e ldrb r2, [r3, 0xc] | r2 = *((r3 + 0xc));
| if (r2 == 0) {
0x000a8040 cbnz r2, 0xa8056 |
0x000a8042 ldr.w r2, [r3, 0xd8] | r2 = *((r3 + 0xd8));
| if (r2 != 0) {
0x000a8046 cbz r2, 0xa8050 |
0x000a8048 ldrb.w r2, [r2, 0x2b] | r2 = *((r2 + 0x2b));
0x000a804c cmp r2, 2 |
| if (r2 == 2) {
0x000a804e beq 0xa8056 | goto label_53;
| }
| }
0x000a8050 ldrb.w r2, [r4, 0x55] | r2 = *((r4 + 0x55));
0x000a8054 strb r2, [r3, 4] | *((r3 + 4)) = r2;
| }
| label_53:
0x000a8056 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000a8058 mov.w r1, -1 | r1 = -1;
0x000a805c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000a805e bl 0x18938 | r0 = fcn_00018938 (r0, r1);
0x000a8062 mov r1, r0 | r1 = r0;
0x000a8064 mov r0, r8 | r0 = r8;
0x000a8066 bl 0x18938 | fcn_00018938 (r0, r1);
0x000a806a ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000a806c ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x000a806e and r3, r3, 0x38 | r3 &= 0x38;
0x000a8072 orr r1, r3, 3 | r1 = r3 | 3;
0x000a8076 bl 0x19680 | fcn_00019680 (r0, r1);
0x000a807a ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x000a807c ldrb r3, [r0, 9] | r3 = *((r0 + 9));
0x000a807e cmp r3, 0 |
| if (r3 != 0) {
0x000a8080 bne 0xa811e | goto label_54;
| }
| label_22:
0x000a8082 movs r3, 3 | r3 = 3;
0x000a8084 strb r3, [r7, 8] | *((r7 + 8)) = r3;
0x000a8086 cmp r5, 0 |
| if (r5 != 0) {
0x000a8088 bne.w 0xa7ef6 | goto label_17;
| }
0x000a808c ldr r3, [r7] | r3 = *(r7);
0x000a808e mov r0, sb | r0 = sb;
0x000a8090 cmp r3, 0 |
| if (r3 == 0) {
0x000a8092 beq 0xa8166 | goto label_55;
| }
0x000a8094 blx 0x7f68 | fcn_00007f68 ();
0x000a8098 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
| if (r3 == 0) {
0x000a809c cbz r3, 0xa80f8 | goto label_56;
| }
| label_19:
0x000a809e ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000a80a0 movs r1, 0 | r1 = 0;
0x000a80a2 ldrb.w r2, [r4, 0xaa] | r2 = *((r4 + 0xaa));
0x000a80a6 strb.w r1, [r4, 0xa8] | *((r4 + 0xa8)) = r1;
0x000a80aa bic r3, r3, 0x10 | r3 = BIT_MASK (r3, 0x10);
0x000a80ae str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x000a80b0 lsls r3, r2, 0x1d | r3 = r2 << 0x1d;
| if (r3 >= r2) {
0x000a80b2 bpl 0xa80e0 | goto label_57;
| }
0x000a80b4 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x000a80b8 cmp r3, 0 |
| if (r3 != 0) {
0x000a80ba bne.w 0xa7e0a | goto label_7;
| }
0x000a80be mov r0, r4 | r0 = r4;
0x000a80c0 bl 0x1536c | fcn_0001536c (r0);
0x000a80c4 b 0xa7e0a | goto label_7;
| label_46:
0x000a80c6 ldr r1, [pc, 0xf0] |
0x000a80c8 mov r0, r4 | r0 = r4;
0x000a80ca movs r5, 1 | r5 = 1;
0x000a80cc add r1, pc | r1 = 0x15028a;
0x000a80ce bl 0x2677c | fcn_0002677c (r0);
0x000a80d2 movs r3, 3 | r3 = 3;
0x000a80d4 str r0, [sp, 0x1c] | var_1ch = r0;
0x000a80d6 strb r3, [r7, 8] | *((r7 + 8)) = r3;
0x000a80d8 mov r0, sb | r0 = sb;
0x000a80da blx 0x7f68 | fcn_00007f68 ();
0x000a80de b 0xa7efc | goto label_18;
| label_57:
0x000a80e0 add r1, sp, 0x1c | r1 += var_1ch;
0x000a80e2 mov r0, r4 | r0 = r4;
0x000a80e4 bl 0x88eec | fcn_00088eec (r0, r1);
0x000a80e8 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x000a80ec mov r5, r0 | r5 = r0;
| if (r3 == 0) {
0x000a80ee cbz r3, 0xa813a | goto label_58;
| }
0x000a80f0 cmp r5, 0 |
| if (r5 == 0) {
0x000a80f2 beq.w 0xa7e0a | goto label_7;
| }
0x000a80f6 b 0xa7efc | goto label_18;
| label_56:
0x000a80f8 mov r0, r4 | r0 = r4;
0x000a80fa bl 0x16588 | fcn_00016588 (r0);
0x000a80fe b 0xa809e | goto label_19;
| label_48:
0x000a8100 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000a8102 b 0xa7f56 | goto label_20;
| label_50:
0x000a8104 ldr r0, [sp, 0xc] | r0 = var_ch_2;
0x000a8106 mov.w r2, -1 | r2 = -1;
0x000a810a blx 0x7edc | fcn_00007edc ();
0x000a810e ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000a8110 cmp r1, 0 |
| if (r1 == 0) {
0x000a8112 beq.w 0xa7f5c | goto label_21;
| }
0x000a8116 mov r0, r4 | r0 = r4;
0x000a8118 bl 0x159dc | fcn_000159dc (r0, r1);
0x000a811c b 0xa7f5c | goto label_21;
| label_54:
0x000a811e ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
| label_26:
0x000a8120 subs r3, 1 | r3--;
0x000a8122 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x000a8124 cmp r3, 0 |
| if (r3 != 0) {
0x000a8126 bne 0xa8082 | goto label_22;
| }
0x000a8128 bl 0x95d0 | fcn_000095d0 (r0);
0x000a812c b 0xa8082 | goto label_22;
| label_52:
0x000a812e mov r0, r8 | r0 = r8;
0x000a8130 bl 0x12464 | fcn_00012464 (r0);
0x000a8134 ldr.w r8, [r7, 4] | r8 = *((r7 + 4));
0x000a8138 b 0xa8038 | goto label_23;
| label_58:
0x000a813a mov r0, r4 | r0 = r4;
0x000a813c bl 0x1536c | fcn_0001536c (r0);
0x000a8140 cmp r5, 0 |
| if (r5 == 0) {
0x000a8142 beq.w 0xa7e0a | goto label_7;
| }
0x000a8146 b 0xa7efc | goto label_18;
| label_49:
0x000a8148 mov r0, r4 | r0 = r4;
0x000a814a bl 0x101ec | fcn_000101ec (r0);
0x000a814e ldr r1, [sp, 0x1c] | r1 = var_1ch;
| if (r1 != 0) {
0x000a8150 cbz r1, 0xa8156 |
0x000a8152 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x000a8156 ldr r1, [pc, 0x64] |
0x000a8158 mov r0, r4 | r0 = r4;
0x000a815a add r1, pc | r1 = 0x15031c;
0x000a815c bl 0x2677c | r0 = fcn_0002677c (r0);
0x000a8160 mov r1, r0 | r1 = r0;
0x000a8162 str r0, [sp, 0x1c] | var_1ch = r0;
0x000a8164 b 0xa7f56 | goto label_20;
| label_55:
0x000a8166 movs r5, 7 | r5 = 7;
0x000a8168 blx 0x7f68 | fcn_00007f68 ();
0x000a816c b 0xa7efc | goto label_18;
| label_51:
0x000a816e movs r5, 7 | r5 = 7;
0x000a8170 b 0xa801c | goto label_24;
| label_43:
0x000a8172 mov r0, r4 | r0 = r4;
0x000a8174 bl 0x101ec | fcn_000101ec (r0);
0x000a8178 b 0xa7df6 | goto label_25;
| label_44:
0x000a817a blx 0x7e8c | fcn_00007e8c ();
0x000a817e nop |
0x000a8180 ldrsh r0, [r3, r6] | r0 = *((r3 + r6));
0x000a8182 movs r2, r0 | r2 = r0;
0x000a8184 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000a8186 movs r0, r0 |
| if (r0 <= r0) {
0x000a8188 blo 0xa8120 | goto label_26;
| }
0x000a818a movs r0, r0 |
| if (r0 <= r0) {
0x000a818c blo 0xa8120 | goto label_26;
| }
0x000a818e movs r0, r0 |
0x000a8190 ldrsh r2, [r0, r2] | r2 = *((r0 + r2));
0x000a8192 movs r2, r0 | r2 = r0;
0x000a8194 add r2, sp, 0xa0 | r2 += arg_a0h;
0x000a8196 movs r0, r0 |
0x000a8198 bx ip | return void (*ip)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa9d54 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000a9d54 () | void fcn_000a9d54 (int16_t arg1) {
| int16_t var_18h_2;
| int16_t var_bp_0h;
| int16_t var_18h;
| int16_t var_bp_8h;
| int16_t var_0h;
| int16_t var_8h_3;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_sp_18h;
| int16_t var_1ch;
| int16_t var_24h_2;
| int32_t var_0h_4;
| int32_t var_8h_5;
| int32_t var_8h_6;
| int32_t var_10h_2;
| int32_t var_4h_2;
| int32_t var_4h_3;
| int32_t var_44h_2;
| int32_t var_44h_3;
| int16_t var_4ch;
| int16_t var_54h;
| int32_t var_58h;
| int32_t var_58h_2;
| int32_t var_60h;
| int32_t var_60h_2;
| int32_t var_68h;
| int32_t var_68h_2;
| int16_t var_70h;
| int16_t var_74h;
| int32_t var_4h_4;
| int32_t var_ch_5;
| int32_t var_24h_3;
| int32_t var_e4h;
| int32_t var_e8h;
| int32_t var_ech;
| int16_t var_180h;
| int16_t var_184h;
| int16_t var_0h_2;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_14h_2;
| int32_t var_20h;
| int32_t var_20h_2;
| int32_t var_28h;
| int32_t var_28h_2;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_1h;
| int32_t var_ch_6;
| int32_t var_24h_4;
| int32_t var_e4h_2;
| int32_t var_ech_2;
| int16_t var_144h;
| int16_t var_0h_3;
| int16_t var_8h_4;
| int32_t var_8h_9;
| int16_t var_14h_3;
| int32_t var_0h_5;
| int32_t var_8h_7;
| int32_t var_8h_8;
| int32_t var_10h_3;
| int16_t var_28h_3;
| int32_t var_4h_5;
| int32_t var_4h_6;
| int32_t var_34h_2;
| int32_t var_34h_3;
| int16_t var_3ch;
| int16_t var_44h;
| int32_t var_ch_7;
| int32_t var_e4h_3;
| int32_t var_e8h_2;
| int32_t var_ech_3;
| int16_t var_154h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch_3;
| int32_t var_ch_4;
| int32_t var_14h_4;
| int32_t var_14h_5;
| int16_t var_1ch_2;
| int32_t var_1ch_3;
| int16_t var_24h;
| r0 = arg1;
0x000a9d54 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a9d58 movs r3, 0 | r3 = 0;
0x000a9d5a sub sp, 0x2c |
0x000a9d5c ldr.w r6, [r0, 0xec] | r6 = *((r0 + 0xec));
0x000a9d60 mov r4, r0 | r4 = r0;
0x000a9d62 ldr r2, [pc, 0x214] |
0x000a9d64 str r3, [sp, 8] | var_8h = r3;
0x000a9d66 strd r3, r3, [sp, 0xc] | __asm ("strd r3, r3, [var_ch_3]");
0x000a9d6a strd r3, r3, [sp, 0x14] | __asm ("strd r3, r3, [var_14h_4]");
0x000a9d6e add r2, pc | r2 = 0x153cec;
0x000a9d70 strd r3, r3, [sp, 0x1c] | __asm ("strd r3, r3, [var_1ch_2]");
0x000a9d74 ldr r3, [pc, 0x204] | r3 = *(0xa9f7c);
0x000a9d76 ldr r5, [r6, 0x18] | r5 = *((r6 + 0x18));
0x000a9d78 ldr.w sl, [r0] | sl = *(r0);
0x000a9d7c ldr r3, [r2, r3] |
0x000a9d7e ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000a9d80 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a9d82 str r3, [sp, 0x24] | var_24h = r3;
0x000a9d84 mov.w r3, 0 | r3 = 0;
0x000a9d88 str r0, [sp, 4] | var_4h = r0;
0x000a9d8a ldr.w r0, [sl, 0x10] | r0 = *((sl + 0x10));
0x000a9d8e cmp r5, 0 |
| if (r5 == 0) {
0x000a9d90 beq.w 0xa9f6c | goto label_35;
| }
0x000a9d94 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000a9d96 cmp r5, r3 |
| if (r5 == r3) {
0x000a9d98 beq 0xa9daa | goto label_8;
| }
0x000a9d9a add.w r3, r0, 0x10 | r3 = r0 + 0x10;
| do {
0x000a9d9e mov r0, r3 | r0 = r3;
0x000a9da0 adds r3, 0x10 | r3 += 0x10;
0x000a9da2 ldr r2, [r3, -0x4] | r2 = *((r3 - 0x4));
0x000a9da6 cmp r5, r2 |
0x000a9da8 bne 0xa9d9e |
| } while (r5 != r2);
| label_8:
0x000a9daa ldr r2, [r0] | r2 = *(r0);
0x000a9dac mov r0, sl | r0 = sl;
0x000a9dae bl 0x3b634 | fcn_0003b634 (r0, r1, r2, r3);
0x000a9db2 str r0, [r4, 0x78] | *((r4 + 0x78)) = r0;
0x000a9db4 mov r1, r0 | r1 = r0;
0x000a9db6 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
0x000a9db8 strb.w r3, [r4, 0x90] | *((r4 + 0x90)) = r3;
| if (r0 == 0) {
0x000a9dbc cbz r0, 0xa9de6 | goto label_36;
| }
0x000a9dbe mov r0, r4 | r0 = r4;
0x000a9dc0 bl 0x70e88 | r0 = fcn_00070e88 (r0, r1);
0x000a9dc4 mov r5, r0 | r5 = r0;
0x000a9dc6 cbz r0, 0xa9de6 |
| while (r8 == 0) {
| label_0:
0x000a9dc8 ldr r2, [pc, 0x1b4] |
0x000a9dca ldr r3, [pc, 0x1b0] | r3 = *(0xa9f7e);
0x000a9dcc add r2, pc | r2 = 0x153d50;
0x000a9dce ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a9dd0 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a9dd2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000a9dd4 eors r2, r3 | r2 ^= r3;
0x000a9dd6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a9dda bne.w 0xa9f72 | goto label_37;
| }
0x000a9dde mov r0, r5 | r0 = r5;
0x000a9de0 add sp, 0x2c |
0x000a9de2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_36:
0x000a9de6 ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x000a9de8 mov.w r8, 1 | r8 = 1;
0x000a9dec mov r5, r1 | r5 = r1;
| if (r1 != 0) {
0x000a9dee cbz r1, 0xa9e00 |
0x000a9df0 add r0, sp, 4 | r0 += var_4h;
0x000a9df2 bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x000a9df6 clz r8, r0 | r8 &= r0;
0x000a9dfa mov r5, r0 | r5 = r0;
0x000a9dfc lsr.w r8, r8, 5 | r8 >>= 5;
| }
0x000a9e00 ldr r6, [r6, 0x1c] | r6 = *((r6 + 0x1c));
0x000a9e02 cmp r6, 0 |
0x000a9e04 ite eq |
| if (r6 != 0) {
0x000a9e06 moveq r8, 0 | r8 = 0;
| }
| if (r6 != 0) {
0x000a9e0a and r8, r8, 1 | r8 &= 1;
| }
0x000a9e0e cmp.w r8, 0 |
0x000a9e12 beq 0xa9dc8 |
| }
0x000a9e14 add.w sb, sp, 4 | sb += var_4h;
| label_1:
0x000a9e18 ldr r1, [r6, 8] | r1 = *((r6 + 8));
| if (r1 == 0) {
0x000a9e1a cbz r1, 0xa9e2e | goto label_38;
| }
0x000a9e1c mov r2, sb | r2 = sb;
0x000a9e1e mov r0, r4 | r0 = r4;
0x000a9e20 bl 0x32c7c | fcn_00032c7c (r0, r1, r2, r3);
0x000a9e24 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
| if (r3 == 0) {
0x000a9e26 cbz r3, 0xa9e2e | goto label_38;
| }
0x000a9e28 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x000a9e2a cmp r5, 0 |
| if (r5 != 0) {
0x000a9e2c bne 0xa9dc8 | goto label_0;
| }
| label_38:
0x000a9e2e ldr r5, [r6, 0xc] | r5 = *((r6 + 0xc));
0x000a9e30 mov r7, r8 | r7 = r8;
| if (r5 != 0) {
0x000a9e32 cbz r5, 0xa9e54 |
0x000a9e34 mov r1, r6 | r1 = r6;
0x000a9e36 mov r0, r4 | r0 = r4;
0x000a9e38 bl 0x32674 | r0 = fcn_00032674 (r0, r1);
0x000a9e3c mov fp, r0 |
| if (r0 != 0) {
0x000a9e3e cbnz r0, 0xa9e66 | goto label_39;
| }
0x000a9e40 movs r5, 7 | r5 = 7;
0x000a9e42 b 0xa9dc8 | goto label_0;
| label_4:
0x000a9e44 movs r5, 1 | r5 = 1;
| label_2:
0x000a9e46 movs r7, 0 | r7 = 0;
| label_3:
0x000a9e48 movs r3, 0 | r3 = 0;
0x000a9e4a mov r1, fp | r1 = fp;
0x000a9e4c mov r0, sl | r0 = sl;
0x000a9e4e str r3, [sp, 8] | var_8h = r3;
0x000a9e50 bl 0x18a68 | fcn_00018a68 (r0, r1);
| }
0x000a9e54 ldr r6, [r6, 0x28] | r6 = *((r6 + 0x28));
0x000a9e56 cmp r6, 0 |
0x000a9e58 ite eq |
| if (r6 != 0) {
0x000a9e5a moveq r7, 0 | r7 = 0;
| }
| if (r6 == 0) {
0x000a9e5c andne r7, r7, 1 | r7 &= 1;
| }
0x000a9e60 cmp r7, 0 |
| if (r7 != 0) {
0x000a9e62 bne 0xa9e18 | goto label_1;
| }
0x000a9e64 b 0xa9dc8 | goto label_0;
| label_39:
0x000a9e66 ldr r3, [r0] | r3 = *(r0);
0x000a9e68 cmp r3, 0 |
| if (r3 <= 0) {
0x000a9e6a ble 0xa9eb8 | goto label_40;
| }
0x000a9e6c movs r7, 0 | r7 = 0;
| label_5:
0x000a9e6e add.w r5, r7, r7, lsl 3 | r5 = r7 + (r7 << 3);
0x000a9e72 add.w r5, fp, r5, lsl 3 | r5 = fp + (r5 << 3);
0x000a9e76 adds r5, 8 | r5 += 8;
| do {
0x000a9e78 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000a9e7a ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x000a9e7c adds r2, r3, 1 | r2 = r3 + 1;
0x000a9e7e str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x000a9e80 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x000a9e82 cmp r1, 0 |
| if (r1 == 0) {
0x000a9e84 beq 0xa9f02 | goto label_41;
| }
0x000a9e86 movs r2, 0 | r2 = 0;
0x000a9e88 mov r0, r4 | r0 = r4;
0x000a9e8a bl 0x32c7c | fcn_00032c7c (r0, r1, r2, r3);
0x000a9e8e mov r1, r5 | r1 = r5;
0x000a9e90 mov r0, r4 | r0 = r4;
0x000a9e92 bl 0xa8e74 | fcn_000a8e74 (r0, r1);
0x000a9e96 ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x000a9e98 subs r3, r7, 1 | r3 = r7 - 1;
0x000a9e9a add.w r3, r3, r3, lsl 3 | r3 += (r3 << 3);
0x000a9e9e mov r0, r4 | r0 = r4;
0x000a9ea0 adds r7, 1 | r7++;
0x000a9ea2 adds r5, 0x48 | r5 += 0x48;
0x000a9ea4 add.w r3, r2, r3, lsl 3 | r3 = r2 + (r3 << 3);
0x000a9ea8 movs r2, 0 | r2 = 0;
0x000a9eaa ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x000a9eac bl 0x32c7c | fcn_00032c7c (r0, r1, r2, r3);
0x000a9eb0 ldr.w r3, [fp] | r3 = *(fp);
0x000a9eb4 cmp r7, r3 |
0x000a9eb6 blt 0xa9e78 |
| } while (r7 < r3);
| label_40:
0x000a9eb8 str.w fp, [sp, 8] | __asm ("str.w fp, [var_8h]");
| label_7:
0x000a9ebc ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
| if (r1 == 0) {
0x000a9ebe cbz r1, 0xa9ecc | goto label_42;
| }
0x000a9ec0 mov r0, sb | r0 = sb;
0x000a9ec2 bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x000a9ec6 mov r5, r0 | r5 = r0;
0x000a9ec8 cmp r0, 0 |
| if (r0 != 0) {
0x000a9eca bne 0xa9e46 | goto label_2;
| }
| label_42:
0x000a9ecc ldr r1, [r6, 0x18] | r1 = *((r6 + 0x18));
0x000a9ece mov r0, sb | r0 = sb;
0x000a9ed0 bl 0x304f0 | fcn_000304f0 (r0, r1, r2);
0x000a9ed4 ldr r7, [r6, 0x20] | r7 = *((r6 + 0x20));
0x000a9ed6 mov r5, r0 | r5 = r0;
| if (r7 == 0) {
0x000a9ed8 cbz r7, 0xa9efa | goto label_43;
| }
0x000a9eda cmp r0, 0 |
| if (r0 != 0) {
0x000a9edc bne 0xa9e46 | goto label_2;
| }
0x000a9ede mov.w r3, 0x200 | r3 = 0x200;
0x000a9ee2 ldr r1, [r7] | r1 = *(r7);
0x000a9ee4 mov r0, sb | r0 = sb;
0x000a9ee6 str.w fp, [r7, 0x20] | __asm ("str.w fp, [r7, 0x20]");
0x000a9eea str r7, [sp, 0xc] | var_ch_3 = r7;
0x000a9eec str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x000a9eee bl 0x304f0 | r0 = fcn_000304f0 (r0, r1, r2);
0x000a9ef2 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000a9ef4 cbz r0, 0xa9f38 | goto label_44;
| }
| label_6:
0x000a9ef6 movs r3, 0 | r3 = 0;
0x000a9ef8 str r3, [sp, 0x1c] | var_1ch_2 = r3;
| label_43:
0x000a9efa clz r7, r5 | r7 &= r5;
0x000a9efe lsrs r7, r7, 5 | r7 >>= 5;
0x000a9f00 b 0xa9e48 | goto label_3;
| label_41:
0x000a9f02 mov r2, r5 | r2 = r5;
0x000a9f04 mov r0, r4 | r0 = r4;
0x000a9f06 bl 0x89708 | fcn_00089708 (r0, r1, r2);
0x000a9f0a add.w r3, r7, r7, lsl 3 | r3 = r7 + (r7 << 3);
0x000a9f0e mov r1, r0 | r1 = r0;
0x000a9f10 add.w r3, fp, r3, lsl 3 | r3 = fp + (r3 << 3);
0x000a9f14 str r0, [r3, 0x18] | *((r3 + 0x18)) = r0;
0x000a9f16 cmp r0, 0 |
| if (r0 == 0) {
0x000a9f18 beq 0xa9e44 | goto label_4;
| }
0x000a9f1a ldr r3, [r0, 0x20] | r3 = *((r0 + 0x20));
0x000a9f1c adds r7, 1 | r7++;
0x000a9f1e adds r3, 1 | r3++;
0x000a9f20 str r3, [r0, 0x20] | *((r0 + 0x20)) = r3;
0x000a9f22 mov r0, r4 | r0 = r4;
0x000a9f24 bl 0x70e88 | fcn_00070e88 (r0, r1);
0x000a9f28 ldr.w r3, [fp] | r3 = *(fp);
0x000a9f2c cmp r3, r7 |
| if (r3 <= r7) {
0x000a9f2e ble 0xa9f60 | goto label_45;
| }
0x000a9f30 cmp r0, 0 |
| if (r0 == 0) {
0x000a9f32 beq 0xa9e6e | goto label_5;
| }
0x000a9f34 mov r5, r0 | r5 = r0;
0x000a9f36 b 0xa9e46 | goto label_2;
| label_44:
0x000a9f38 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x000a9f3a mov r0, sb | r0 = sb;
0x000a9f3c bl 0x304f0 | r0 = fcn_000304f0 (r0, r1, r2);
0x000a9f40 mov r5, r0 | r5 = r0;
0x000a9f42 cmp r0, 0 |
| if (r0 != 0) {
0x000a9f44 bne 0xa9ef6 | goto label_6;
| }
0x000a9f46 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x000a9f48 mov r0, sb | r0 = sb;
0x000a9f4a bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x000a9f4e mov r5, r0 | r5 = r0;
0x000a9f50 cmp r0, 0 |
| if (r0 != 0) {
0x000a9f52 bne 0xa9ef6 | goto label_6;
| }
0x000a9f54 ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x000a9f56 mov r0, sb | r0 = sb;
0x000a9f58 bl 0x3040c | r0 = fcn_0003040c (r0, r1, r2);
0x000a9f5c mov r5, r0 | r5 = r0;
0x000a9f5e b 0xa9ef6 | goto label_6;
| label_45:
0x000a9f60 mov r5, r0 | r5 = r0;
0x000a9f62 str.w fp, [sp, 8] | __asm ("str.w fp, [var_8h]");
0x000a9f66 cmp r0, 0 |
| if (r0 == 0) {
0x000a9f68 beq 0xa9ebc | goto label_7;
| }
0x000a9f6a b 0xa9e46 | goto label_2;
| label_35:
0x000a9f6c sub.w r0, r0, 0x80000 | r0 -= 0x80000;
0x000a9f70 b 0xa9daa | goto label_8;
| label_37:
0x000a9f72 blx 0x7e8c | fcn_00007e8c ();
0x000a9f76 nop |
0x000a9f78 subs r7, 0x22 | r7 -= 0x22;
0x000a9f7a movs r2, r0 | r2 = r0;
0x000a9f7c lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000a9f7e movs r0, r0 |
0x000a9f80 subs r6, 0xc4 | r6 -= 0xc4;
0x000a9f82 movs r2, r0 | r2 = r0;
0x000a9f84 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000a9f88 mov r5, r2 | r5 = r2;
0x000a9f8a ldr r2, [pc, 0x234] |
0x000a9f8c sub sp, 0x15c |
0x000a9f8e mov r7, r0 | r7 = r0;
0x000a9f90 ldr r3, [pc, 0x230] | r3 = *(0xaa1c4);
0x000a9f92 add r2, pc | r2 = 0x154158;
0x000a9f94 ldr r3, [r2, r3] |
0x000a9f96 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a9f98 str r3, [sp, 0x154] | var_154h = r3;
0x000a9f9a mov.w r3, 0 | r3 = 0;
0x000a9f9e blx 0x82a0 | r0 = fcn_000082a0 ();
0x000a9fa2 mov r4, r0 | r4 = r0;
0x000a9fa4 ldr r0, [r5] | r0 = *(r5);
0x000a9fa6 blx 0x8508 | fcn_00008508 ();
0x000a9fa8 invalid |
0x000a9fac ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000a9fae blx 0x8508 | fcn_00008508 ();
0x000a9fb2 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x000a9fb6 movs r2, 0 | r2 = 0;
0x000a9fb8 ldr.w r8, [r4, 0x150] | r8 = *((r4 + 0x150));
0x000a9fbc mov r5, r0 | r5 = r0;
0x000a9fbe str.w r2, [r4, 0x150] | __asm ("str.w r2, aav.0x000000ff");
| if (r3 == 0) {
0x000a9fc2 cbz r3, 0xa9ff2 | goto label_46;
| }
0x000a9fc4 cmp r6, 0 |
0x000a9fc6 it ne |
| if (r6 != 0) {
0x000a9fc8 cmpne r5, 0 | __asm ("cmpne r5, 0");
| }
| if (r6 != 0) {
0x000a9fca bne 0xaa000 | goto label_47;
| }
| do {
0x000a9fcc ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x000a9fd0 str.w r8, [r4, 0x150] | __asm ("str.w r8, aav.0x000000ff");
| if (r3 == 0) {
0x000a9fd4 cbz r3, 0xaa032 | goto label_48;
| }
| label_9:
0x000a9fd6 ldr r2, [pc, 0x1f0] |
0x000a9fd8 ldr r3, [pc, 0x1e8] | r3 = *(0xaa1c4);
0x000a9fda add r2, pc | r2 = 0x1541a8;
0x000a9fdc ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000a9fde ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000a9fe0 ldr r3, [sp, 0x154] | r3 = var_154h;
0x000a9fe2 eors r2, r3 | r2 ^= r3;
0x000a9fe4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000a9fe8 bne.w 0xaa1bc | goto label_49;
| }
0x000a9fec add sp, 0x15c |
0x000a9fee pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_46:
0x000a9ff2 mov r0, r4 | r0 = r4;
0x000a9ff4 bl 0x16588 | fcn_00016588 (r0);
0x000a9ff8 cmp r6, 0 |
0x000a9ffa it ne |
| if (r6 != 0) {
0x000a9ffc cmpne r5, 0 | __asm ("cmpne r5, 0");
| }
0x000a9ffe beq 0xa9fcc |
| } while (r6 == 0);
| label_47:
0x000aa000 movs r3, 0 | r3 = 0;
0x000aa002 add.w sb, sp, 0x44 | sb += var_44h;
0x000aa006 mov r1, r6 | r1 = r6;
0x000aa008 str r3, [sp] | *(sp) = r3;
0x000aa00a mov r2, r4 | r2 = r4;
0x000aa00c mov r3, r5 | r3 = r5;
0x000aa00e mov r0, sb | r0 = sb;
0x000aa010 bl 0x77138 | r0 = fcn_00077138 (r0, r1, r2, r3);
0x000aa014 mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x000aa016 cbz r0, 0xaa054 | goto label_50;
| }
| label_10:
0x000aa018 mov r1, r6 | r1 = r6;
0x000aa01a mov r0, r7 | r0 = r7;
0x000aa01c blx 0x8310 | fcn_00008310 ();
| label_11:
0x000aa020 mov r0, sb | r0 = sb;
0x000aa022 bl 0x5ab04 | fcn_0005ab04 (r0);
0x000aa026 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x000aa02a str.w r8, [r4, 0x150] | __asm ("str.w r8, aav.0x000000ff");
0x000aa02e cmp r3, 0 |
| if (r3 != 0) {
0x000aa030 bne 0xa9fd6 | goto label_9;
| }
| label_48:
0x000aa032 ldr r2, [pc, 0x198] |
0x000aa034 ldr r3, [pc, 0x18c] | r3 = *(0xaa1c4);
0x000aa036 add r2, pc | r2 = 0x154208;
0x000aa038 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000aa03a ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000aa03c ldr r3, [sp, 0x154] | r3 = var_154h;
0x000aa03e eors r2, r3 | r2 ^= r3;
0x000aa040 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000aa044 bne.w 0xaa1bc | goto label_49;
| }
0x000aa048 mov r0, r4 | r0 = r4;
0x000aa04a add sp, 0x15c |
0x000aa04c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000aa050 b.w 0x1536c | void (*0x1536c)() ();
| label_50:
0x000aa054 ldr r1, [pc, 0x178] |
0x000aa056 add.w sl, sp, 0x14 | sl += var_14h_3;
0x000aa05a ldr r2, [pc, 0x178] |
0x000aa05c add.w fp, sp, 0x28 |
0x000aa060 ldr.w r3, [sb, 0xe4] | r3 = var_e4h_3;
0x000aa064 add r1, pc | r1 = 0x154238;
0x000aa066 str.w sl, [fp, 0x18] | __asm ("str.w sl, [var_18h_2]");
0x000aa06a add r2, pc | r2 = 0x154244;
0x000aa06c strd r0, r0, [sl] | __asm ("strd r0, r0, [sl]");
0x000aa070 strd r0, r0, [sl, 8] | __asm ("strd r0, r0, [var_8h_7]");
0x000aa074 strd r1, r2, [fp, 4] | __asm ("strd r1, r2, [var_4h_5]");
0x000aa078 strd r0, r0, [sp, 0x34] | __asm ("strd r0, r0, [var_34h_2]");
0x000aa07c str r0, [sp, 0x3c] | var_3ch = r0;
0x000aa07e str.w r0, [sl, 0x10] | __asm ("str.w r0, [var_10h_3]");
0x000aa082 str.w sb, [fp] | __asm ("str.w sb, [fp]");
| if (r3 == 0) {
0x000aa086 cbz r3, 0xaa0da | goto label_51;
| }
0x000aa088 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x000aa08a cmp r1, 0 |
| if (r1 == 0) {
0x000aa08c beq 0xaa136 | goto label_52;
| }
0x000aa08e ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000aa090 mov r2, r0 | r2 = r0;
0x000aa092 str r1, [sp, 8] | var_8h_4 = r1;
0x000aa094 bic r3, r3, 0x200000 | r3 = BIT_MASK (r3, 0x200000);
0x000aa098 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x000aa09a str.w r0, [sb, 0xc] | __asm ("str.w r0, [var_ch_7]");
0x000aa09e mov r0, sb | r0 = sb;
0x000aa0a0 bl 0x32c7c | fcn_00032c7c (r0, r1, r2, r3);
0x000aa0a4 ldrb.w r3, [r4, 0x53] | r3 = *((r4 + 0x53));
0x000aa0a8 ldr r1, [sp, 8] | r1 = var_8h_4;
| if (r3 == 0) {
0x000aa0aa cbnz r3, 0xaa0bc |
0x000aa0ac ldr.w r6, [sb, 0xc] | r6 = var_ch_7;
0x000aa0b0 cmp r6, 0 |
| if (r6 == 0) {
0x000aa0b2 beq 0xaa1ac | goto label_53;
| }
| label_14:
0x000aa0b4 ldr.w r5, [sl] | r5 = *(sl);
| if (r5 != 0) {
0x000aa0b8 cbnz r5, 0xaa0c6 | goto label_12;
| }
0x000aa0ba b 0xaa018 | goto label_10;
| }
0x000aa0bc ldr.w r5, [sl] | r5 = *(sl);
0x000aa0c0 movs r6, 7 | r6 = 7;
0x000aa0c2 cmp r5, 0 |
| if (r5 == 0) {
0x000aa0c4 beq 0xaa018 | goto label_10;
| }
| do {
| label_12:
0x000aa0c6 mov r1, r5 | r1 = r5;
0x000aa0c8 ldr r5, [r5, 0xc] | r5 = *((r5 + 0xc));
0x000aa0ca mov r0, r4 | r0 = r4;
0x000aa0cc bl 0x159dc | fcn_000159dc (r0, r1);
0x000aa0d0 cmp r5, 0 |
0x000aa0d2 bne 0xaa0c6 |
| } while (r5 != 0);
0x000aa0d4 cmp r6, 0 |
| if (r6 == 0) {
0x000aa0d6 beq 0xaa020 | goto label_11;
| }
0x000aa0d8 b 0xaa018 | goto label_10;
| label_51:
0x000aa0da ldr.w r2, [sb, 0xe8] | r2 = var_e8h_2;
0x000aa0de cmp r2, 0 |
| if (r2 == 0) {
0x000aa0e0 beq 0xaa194 | goto label_54;
| }
0x000aa0e2 ldr r6, [r2, 0x28] | r6 = *((r2 + 0x28));
| if (r6 == 0) {
0x000aa0e4 cbz r6, 0xaa10c | goto label_55;
| }
0x000aa0e6 ldr r3, [r6] | r3 = *(r6);
0x000aa0e8 cmp r3, 0 |
| if (r3 <= 0) {
0x000aa0ea ble 0xaa10c | goto label_55;
| }
0x000aa0ec adds r6, 0x18 | r6 += 0x18;
| do {
0x000aa0ee ldr r1, [r6, -0x10] | r1 = *((r6 - 0x10));
| if (r1 != 0) {
0x000aa0f2 cbz r1, 0xaa100 |
0x000aa0f4 mov r0, fp | r0 = fp;
0x000aa0f6 str r3, [sp, 8] | var_8h_4 = r3;
0x000aa0f8 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x000aa0fc ldr r3, [sp, 8] | r3 = var_8h_4;
| if (r0 != 0) {
0x000aa0fe cbnz r0, 0xaa108 | goto label_56;
| }
| }
0x000aa100 subs r3, 1 | r3--;
0x000aa102 add.w r6, r6, 0x10 | r6 += 0x10;
0x000aa106 bne 0xaa0ee |
| } while (r3 != 1);
| label_56:
0x000aa108 ldr.w r2, [sb, 0xe8] | r2 = var_e8h_2;
| label_55:
0x000aa10c ldr r1, [r2, 0x24] | r1 = *((r2 + 0x24));
| if (r1 != 0) {
0x000aa10e cbz r1, 0xaa116 |
0x000aa110 mov r0, fp | r0 = fp;
0x000aa112 bl 0x301c4 | fcn_000301c4 (r0, r1);
| }
| label_13:
0x000aa116 movs r3, 0 | r3 = 0;
0x000aa118 mov r2, r5 | r2 = r5;
0x000aa11a mov r1, sl | r1 = sl;
0x000aa11c mov r0, r7 | r0 = r7;
0x000aa11e str r3, [sp] | *(sp) = r3;
0x000aa120 bl 0x2cac0 | fcn_0002cac0 (r0, r1, r2, r3);
0x000aa124 ldr.w r5, [sl] | r5 = *(sl);
0x000aa128 mov r6, r0 | r6 = r0;
0x000aa12a cmp r5, 0 |
| if (r5 != 0) {
0x000aa12c bne 0xaa0c6 | goto label_12;
| }
0x000aa12e cmp r6, 0 |
| if (r6 == 0) {
0x000aa130 beq.w 0xaa020 | goto label_11;
| }
0x000aa134 b 0xaa018 | goto label_10;
| label_52:
0x000aa136 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
| if (r1 == 0) {
0x000aa138 cbz r1, 0xaa166 | goto label_57;
| }
0x000aa13a ldr r2, [r1] | r2 = *(r1);
0x000aa13c cmp r2, 0 |
| if (r2 <= 0) {
0x000aa13e ble 0xaa166 | goto label_57;
| }
0x000aa140 add.w r3, r1, 0x18 | r3 = r1 + 0x18;
| do {
0x000aa144 ldr r1, [r3, -0x10] | r1 = *((r3 - 0x10));
| if (r1 != 0) {
0x000aa148 cbz r1, 0xaa15a |
0x000aa14a mov r0, fp | r0 = fp;
0x000aa14c strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h_4]");
0x000aa150 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x000aa154 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h_4]");
| if (r0 != 0) {
0x000aa158 cbnz r0, 0xaa162 | goto label_58;
| }
| }
0x000aa15a subs r2, 1 | r2--;
0x000aa15c add.w r3, r3, 0x10 | r3 += 0x10;
0x000aa160 bne 0xaa144 |
| } while (r2 != 1);
| label_58:
0x000aa162 ldr.w r3, [sb, 0xe4] | r3 = var_e4h_3;
| label_57:
0x000aa166 ldrsh.w r2, [r3, 0x2a] | r2 = *((r3 + 0x2a));
0x000aa16a cmp r2, 0 |
| if (r2 <= 0) {
0x000aa16c ble 0xaa116 | goto label_13;
| }
0x000aa16e movs r2, 0 | r2 = 0;
| do {
0x000aa170 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000aa172 add r3, r2 | r3 += r2;
0x000aa174 ldr r1, [r3, 4] | r1 = *((r3 + 4));
| if (r1 != 0) {
0x000aa176 cbz r1, 0xaa182 |
0x000aa178 mov r0, fp | r0 = fp;
0x000aa17a str r2, [sp, 8] | var_8h_4 = r2;
0x000aa17c bl 0x301c4 | fcn_000301c4 (r0, r1);
0x000aa180 ldr r2, [sp, 8] | r2 = var_8h_4;
| }
0x000aa182 ldr.w r3, [sb, 0xe4] | r3 = var_e4h_3;
0x000aa186 adds r6, 1 | r6++;
0x000aa188 adds r2, 0x14 | r2 += 0x14;
0x000aa18a ldrsh.w r1, [r3, 0x2a] | r1 = *((r3 + 0x2a));
0x000aa18e cmp r1, r6 |
0x000aa190 bgt 0xaa170 |
| } while (r1 > r6);
0x000aa192 b 0xaa116 | goto label_13;
| label_54:
0x000aa194 mov r0, sb | r0 = sb;
0x000aa196 bl 0xa9d54 | r0 = fcn_000a9d54 (r0);
0x000aa19a mov r6, r0 | r6 = r0;
0x000aa19c cmp r0, 0 |
| if (r0 != 0) {
0x000aa19e bne 0xaa0b4 | goto label_14;
| }
0x000aa1a0 ldr.w r1, [sb, 0xec] | r1 = var_ech_3;
0x000aa1a4 mov r0, fp | r0 = fp;
0x000aa1a6 bl 0x30e2c | fcn_00030e2c (r0, r1);
0x000aa1aa b 0xaa116 | goto label_13;
| label_53:
0x000aa1ac ldr.w r3, [fp, 8] | r3 = var_4h_6;
0x000aa1b0 cmp r3, 0 |
| if (r3 == 0) {
0x000aa1b2 beq 0xaa116 | goto label_13;
| }
0x000aa1b4 mov r0, fp | r0 = fp;
0x000aa1b6 bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
0x000aa1ba b 0xaa116 | goto label_13;
| label_49:
0x000aa1bc blx 0x7e8c | fcn_00007e8c ();
0x000aa1c0 subs r4, 0xfe | r4 -= 0xfe;
0x000aa1c2 movs r2, r0 | r2 = r0;
0x000aa1c4 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000aa1c6 movs r0, r0 |
0x000aa1c8 subs r4, 0xb6 | r4 -= 0xb6;
0x000aa1ca movs r2, r0 | r2 = r0;
0x000aa1cc subs r4, 0x5a | r4 -= 0x5a;
0x000aa1ce movs r2, r0 | r2 = r0;
0x000aa1d0 adds r6, 0x95 | r6 += 0x95;
0x000aa1d2 vcvt.u32.f32 d24, d7, 9 | __asm ("vcvt.u32.f32 d24, d7, 9");
0x000aa1d6 vtbl.8 d30, {d8, d9}, d29 | __asm ("vtbl.8 d30, {d8, d9}, d29");
0x000aa1da ldr r7, [pc, 0x3c0] | r7 = *(0xaa59e);
0x000aa1dc mov r5, r2 | r5 = r2;
0x000aa1de ldr r2, [pc, 0x15c] |
0x000aa1e0 sub sp, 0x14c |
0x000aa1e2 mov r8, r0 | r8 = r0;
0x000aa1e4 ldr r3, [pc, 0x158] | r3 = *(0xaa340);
0x000aa1e6 add r2, pc | r2 = 0x154528;
0x000aa1e8 ldr r3, [r2, r3] |
0x000aa1ea ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000aa1ec str r3, [sp, 0x144] | var_144h = r3;
0x000aa1ee mov.w r3, 0 | r3 = 0;
0x000aa1f2 blx 0x82a0 | r0 = fcn_000082a0 ();
0x000aa1f6 mov r4, r0 | r4 = r0;
0x000aa1f8 ldr r0, [r5] | r0 = *(r5);
0x000aa1fa blx 0x8508 | r0 = fcn_00008508 ();
0x000aa1fe mov sl, r0 | sl = r0;
0x000aa200 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000aa202 blx 0x8508 | r0 = fcn_00008508 ();
0x000aa206 mov sb, r0 | sb = r0;
0x000aa208 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000aa20a blx 0x7da0 | fcn_00007da0 ();
0x000aa20e ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000aa210 mov r7, r0 | r7 = r0;
0x000aa212 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x000aa214 str r3, [sp, 8] | var_8h_2 = r3;
0x000aa216 blx 0x8508 | r0 = fcn_00008508 ();
0x000aa21a mov r6, r0 | r6 = r0;
0x000aa21c ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000aa21e blx 0x7da0 | fcn_00007da0 ();
0x000aa222 movs r2, 0 | r2 = 0;
0x000aa224 ldr.w fp, [r4, 0x150] | fp = *((r4 + 0x150));
0x000aa228 cmp sl, r2 |
0x000aa22a it ne |
| if (sl != r2) {
0x000aa22c cmpne sb, r2 | __asm ("cmpne sb, r2");
| }
0x000aa22e str.w r2, [r4, 0x150] | __asm ("str.w r2, aav.0x000000ff");
| if (sl == r2) {
0x000aa232 beq 0xaa296 | goto label_16;
| }
0x000aa234 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000aa236 str r3, [sp, 0xc] | var_ch_2 = r3;
0x000aa238 cmp r0, 0 |
| if (r0 != 0) {
0x000aa23a bne 0xaa2b4 | goto label_59;
| }
| label_15:
0x000aa23c str r7, [sp] | *(sp) = r7;
0x000aa23e add r7, sp, 0x34 | r7 += var_34h;
0x000aa240 mov r3, sb | r3 = sb;
0x000aa242 mov r2, r4 | r2 = r4;
0x000aa244 mov r1, sl | r1 = sl;
0x000aa246 mov r0, r7 | r0 = r7;
0x000aa248 bl 0x77138 | fcn_00077138 (r0, r1, r2, r3);
0x000aa24c ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x000aa24e mov sb, r0 | sb = r0;
0x000aa250 ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x000aa252 and r3, r3, 0x60000000 | r3 &= 0x60000000;
0x000aa256 orrs r2, r3 | r2 |= r3;
0x000aa258 str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
| if (r0 != 0) {
0x000aa25a cbnz r0, 0xaa2bc | goto label_19;
| }
0x000aa25c ldr r3, [sp, 8] | r3 = var_8h_2;
0x000aa25e ands r3, r3, 0x4000000 | r3 &= 0x4000000;
| if (r3 == r3) {
0x000aa262 beq 0xaa2d6 | goto label_60;
| }
0x000aa264 ldr.w r3, [r7, 0xec] | r3 = var_ech_2;
| if (r3 == 0) {
0x000aa268 cbz r3, 0xaa290 | goto label_17;
| }
| label_20:
0x000aa26a ldr r0, [r3, 0x18] | r0 = *((r3 + 0x18));
0x000aa26c cmp r0, 0 |
| if (r0 == 0) {
0x000aa26e beq 0xaa32e | goto label_61;
| }
0x000aa270 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000aa272 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000aa274 cmp r0, r2 |
| if (r0 == r2) {
0x000aa276 beq 0xaa284 | goto label_21;
| }
| do {
0x000aa278 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x000aa27a adds r3, 0x10 | r3 += 0x10;
0x000aa27c add.w sb, sb, 1 | sb += var_1h;
0x000aa280 cmp r0, r2 |
0x000aa282 bne 0xaa278 |
| } while (r0 != r2);
| label_21:
0x000aa284 mov r1, sl | r1 = sl;
0x000aa286 mov r0, r4 | r0 = r4;
0x000aa288 bl 0x19fe4 | r0 = fcn_00019fe4 (r0, r1);
0x000aa28c cmp r0, sb |
| if (r0 == sb) {
0x000aa28e beq 0xaa324 | goto label_62;
| }
| do {
| label_17:
0x000aa290 mov r0, r7 | r0 = r7;
0x000aa292 bl 0x5ab04 | fcn_0005ab04 (r0);
| label_16:
0x000aa296 ldr r2, [pc, 0xac] |
0x000aa298 ldr r3, [pc, 0xa4] | r3 = *(0xaa340);
0x000aa29a str.w fp, [r4, 0x150] | __asm ("str.w fp, aav.0x000000ff");
0x000aa29e add r2, pc | r2 = 0x1545e8;
0x000aa2a0 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000aa2a2 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000aa2a4 ldr r3, [sp, 0x144] | r3 = var_144h;
0x000aa2a6 eors r2, r3 | r2 ^= r3;
0x000aa2a8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000aa2ac bne 0xaa338 | goto label_63;
| }
0x000aa2ae add sp, 0x14c |
0x000aa2b0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_59:
0x000aa2b4 bic r2, r3, 0x60000000 | r2 = BIT_MASK (r3, 0x60000000);
0x000aa2b8 str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
0x000aa2ba b 0xaa23c | goto label_15;
| label_19:
0x000aa2bc cmp r6, 0 |
0x000aa2be beq 0xaa290 |
| } while (r6 == 0);
| label_18:
0x000aa2c0 mov r0, r8 | r0 = r8;
0x000aa2c2 str r7, [sp] | *(sp) = r7;
0x000aa2c4 mov r1, r6 | r1 = r6;
0x000aa2c6 ldrd r2, r3, [r5, 8] | __asm ("ldrd r2, r3, [r5, 8]");
0x000aa2ca bl 0x4bc18 | fcn_0004bc18 (r0, r1, r2, r3, r4);
0x000aa2ce mov r0, r7 | r0 = r7;
0x000aa2d0 bl 0x5ab04 | fcn_0005ab04 (r0);
0x000aa2d4 b 0xaa296 | goto label_16;
| label_60:
0x000aa2d6 ldr.w r0, [r7, 0xe4] | r0 = var_e4h_2;
| if (r0 == 0) {
0x000aa2da cbz r0, 0xaa30c | goto label_64;
| }
0x000aa2dc ldr r2, [r0, 0xc] | r2 = *((r0 + 0xc));
| if (r2 == 0) {
0x000aa2de cbz r2, 0xaa30c | goto label_64;
| }
0x000aa2e0 strd r3, r3, [sp, 0x18] | __asm ("strd r3, r3, [sp, 0x18]");
0x000aa2e4 add r2, sp, 0x14 | r2 += var_14h_2;
0x000aa2e6 strd r3, r3, [sp, 0x20] | __asm ("strd r3, r3, [var_20h]");
0x000aa2ea strd r3, r3, [sp, 0x28] | __asm ("strd r3, r3, [var_28h]");
0x000aa2ee str r3, [sp, 0x30] | var_30h = r3;
0x000aa2f0 ldr r1, [r0, 0xc] | r1 = *((r0 + 0xc));
0x000aa2f2 mov r0, r7 | r0 = r7;
0x000aa2f4 str r7, [r2] | *(r2) = r7;
0x000aa2f6 bl 0x32c7c | fcn_00032c7c (r0, r1, r2, r3);
0x000aa2fa ldr r3, [r7, 0x24] | r3 = var_24h_4;
0x000aa2fc cmp r3, 0 |
| if (r3 == 0) {
0x000aa2fe beq 0xaa290 | goto label_17;
| }
0x000aa300 ldr r3, [r7, 0xc] | r3 = var_ch_6;
0x000aa302 cmp r3, 0 |
0x000aa304 it ne |
| if (r3 == 0) {
0x000aa306 cmpne r6, 0 | __asm ("cmpne r6, 0");
| goto label_65;
| }
| if (r3 == 0) {
| label_65:
0x000aa308 beq 0xaa290 | goto label_17;
| }
0x000aa30a b 0xaa2c0 | goto label_18;
| label_64:
0x000aa30c ldr.w r3, [r7, 0xec] | r3 = var_ech_2;
0x000aa310 cmp r3, 0 |
| if (r3 == 0) {
0x000aa312 beq 0xaa290 | goto label_17;
| }
0x000aa314 mov r0, r7 | r0 = r7;
0x000aa316 bl 0xa9d54 | r0 = fcn_000a9d54 (r0);
0x000aa31a cmp r0, 0 |
| if (r0 != 0) {
0x000aa31c bne 0xaa2bc | goto label_19;
| }
0x000aa31e ldr.w r3, [r7, 0xec] | r3 = var_ech_2;
0x000aa322 b 0xaa26a | goto label_20;
| label_62:
0x000aa324 movs r1, 1 | r1 = 1;
0x000aa326 mov r0, r8 | r0 = r8;
0x000aa328 blx 0x7f5c | usleep (r0);
0x000aa32c b 0xaa290 | goto label_17;
| label_61:
0x000aa32e mov.w sb, 0x8000 |
0x000aa332 movt sb, 0xffff | sb = 0xNaN;
0x000aa336 b 0xaa284 | goto label_21;
| label_63:
0x000aa338 blx 0x7e8c | fcn_00007e8c ();
0x000aa33c subs r2, 0xaa | r2 -= 0xaa;
0x000aa33e movs r2, r0 | r2 = r0;
0x000aa340 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000aa342 movs r0, r0 |
0x000aa344 subs r1, 0xf2 | r1 -= 0xf2;
0x000aa346 movs r2, r0 | r2 = r0;
0x000aa348 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000aa34c mov r5, r2 | r5 = r2;
0x000aa34e ldr.w r2, [pc, 0x448] |
0x000aa352 sub sp, 0x18c |
0x000aa354 ldr.w r3, [pc, 0x444] | r3 = *(0xaa79c);
0x000aa358 add r2, pc | r2 = 0x154af6;
0x000aa35a str r0, [sp, 8] | var_8h_3 = r0;
0x000aa35c ldr r3, [r2, r3] |
0x000aa35e ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000aa360 str r3, [sp, 0x184] | var_184h = r3;
0x000aa362 mov.w r3, 0 | r3 = 0;
0x000aa366 blx 0x82a0 | r0 = fcn_000082a0 ();
0x000aa36a mov r4, r0 | r4 = r0;
0x000aa36c ldr r0, [r5] | r0 = *(r5);
0x000aa36e blx 0x8508 | r0 = fcn_00008508 ();
0x000aa372 mov sb, r0 | sb = r0;
0x000aa374 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x000aa376 blx 0x8508 | r0 = fcn_00008508 ();
0x000aa37a mov r7, r0 | r7 = r0;
0x000aa37c ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000aa37e blx 0x8508 | r0 = fcn_00008508 ();
0x000aa382 mov r6, r0 | r6 = r0;
0x000aa384 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
0x000aa386 blx 0x8508 | r0 = fcn_00008508 ();
0x000aa38a mov r8, r0 | r8 = r0;
0x000aa38c ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000aa38e blx 0x7da0 | fcn_00007da0 ();
0x000aa392 cmp r7, 0 |
0x000aa394 it ne |
| if (r7 != 0) {
0x000aa396 cmpne r6, 0 | __asm ("cmpne r6, 0");
| }
0x000aa398 ite ne |
| if (r7 == 0) {
0x000aa39a movne r3, 1 | r3 = 1;
| }
| if (r7 != 0) {
0x000aa39c moveq r3, 0 | r3 = 0;
| }
0x000aa39e cmp.w r8, 0 |
0x000aa3a2 ite eq |
| if (r8 != 0) {
0x000aa3a4 moveq r3, 0 | r3 = 0;
| }
| if (r8 == 0) {
0x000aa3a6 andne r3, r3, 1 | r3 &= 1;
| }
| if (r3 == 0) {
0x000aa3aa cbnz r3, 0xaa3c8 |
| label_22:
0x000aa3ac ldr r2, [pc, 0x3f0] |
0x000aa3ae ldr r3, [pc, 0x3ec] | r3 = *(0xaa79e);
0x000aa3b0 add r2, pc | r2 = 0x154b54;
0x000aa3b2 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000aa3b4 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x000aa3b6 ldr r3, [sp, 0x184] | r3 = var_184h;
0x000aa3b8 eors r2, r3 | r2 ^= r3;
0x000aa3ba mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000aa3be bne.w 0xaa794 | goto label_66;
| }
0x000aa3c2 add sp, 0x18c |
0x000aa3c4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000aa3c8 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x000aa3cc movs r2, 0 | r2 = 0;
0x000aa3ce ldr.w r1, [r4, 0x150] | r1 = *((r4 + 0x150));
0x000aa3d2 mov fp, r0 |
0x000aa3d4 str.w r2, [r4, 0x150] | __asm ("str.w r2, aav.0x000000ff");
0x000aa3d8 str r1, [sp, 0xc] | var_ch = r1;
0x000aa3da cmp r3, 0 |
| if (r3 == 0) {
0x000aa3dc beq 0xaa4a6 | goto label_67;
| }
| label_23:
0x000aa3de movs r3, 0 | r3 = 0;
0x000aa3e0 add.w sl, sp, 0x24 | sl += var_24h_2;
0x000aa3e4 mov r2, sb | r2 = sb;
0x000aa3e6 mov r1, r6 | r1 = r6;
0x000aa3e8 strd r3, r3, [sl] | __asm ("strd r3, r3, [sl]");
0x000aa3ec mov r0, r4 | r0 = r4;
0x000aa3ee strd r3, r3, [sl, 8] | __asm ("strd r3, r3, [var_8h_5]");
0x000aa3f2 str.w r3, [sl, 0x10] | __asm ("str.w r3, [var_10h_2]");
0x000aa3f6 bl 0x3b634 | fcn_0003b634 (r0, r1, r2, r3);
0x000aa3fa str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x000aa3fe movs r3, 0 | r3 = 0;
0x000aa400 ldr r2, [pc, 0x3a0] |
0x000aa402 add.w fp, sp, 0x38 |
0x000aa406 str.w r0, [sl, 0xc] | __asm ("str.w r0, [var_8h_6]");
0x000aa40a mov r1, sb | r1 = sb;
0x000aa40c ldr r0, [pc, 0x398] |
0x000aa40e add.w sb, sp, 0x74 | sb += var_74h;
0x000aa412 add r2, pc | r2 = 0x154bba;
0x000aa414 str.w sl, [fp, 0x18] | __asm ("str.w sl, [var_18h]");
0x000aa418 str.w sb, [fp] | __asm ("str.w sb, [fp]");
0x000aa41c add r0, pc | r0 = 0x154bc8;
0x000aa41e strd r3, r3, [sp, 0x44] | __asm ("strd r3, r3, [var_44h_2]");
0x000aa422 strd r0, r2, [fp, 4] | __asm ("strd r0, r2, [var_4h_2]");
0x000aa426 mov r2, r4 | r2 = r4;
0x000aa428 str r3, [sp, 0x4c] | var_4ch = r3;
0x000aa42a mov r0, sb | r0 = sb;
0x000aa42c mov r3, r7 | r3 = r7;
0x000aa42e bl 0x77138 | r0 = fcn_00077138 (r0, r1, r2, r3);
| if (r0 == 0) {
0x000aa432 cbnz r0, 0xaa466 |
0x000aa434 ldr.w r2, [sb, 0xe4] | r2 = var_e4h;
0x000aa438 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000aa43a str r2, [sp, 0x10] | var_10h = r2;
0x000aa43c and r1, r3, 0x4000000 | r1 = r3 & 0x4000000;
0x000aa440 str r1, [sp, 0x14] | var_14h = r1;
0x000aa442 cmp r2, 0 |
| if (r2 == 0) {
0x000aa444 beq 0xaa4c0 | goto label_68;
| }
0x000aa446 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x000aa448 cmp r2, 0 |
| if (r2 == 0) {
0x000aa44a beq.w 0xaa5c2 | goto label_69;
| }
0x000aa44e cmp r1, 0 |
| if (r1 == 0) {
0x000aa450 beq.w 0xaa626 | goto label_70;
| }
| label_25:
0x000aa454 movs r1, 1 | r1 = 1;
0x000aa456 ldr r0, [sp, 8] | r0 = var_8h_3;
0x000aa458 str r1, [sp] | *(sp) = r1;
0x000aa45a mov r3, r8 | r3 = r8;
0x000aa45c mov r2, r7 | r2 = r7;
0x000aa45e mov r1, sl | r1 = sl;
0x000aa460 bl 0x2cac0 | r0 = fcn_0002cac0 (r0, r1, r2, r3);
| if (r0 == 0) {
0x000aa464 cbz r0, 0xaa47e | goto label_24;
| }
| }
| label_26:
0x000aa466 ldr.w r3, [sb, 4] | r3 = var_4h_4;
| if (r3 == 0) {
0x000aa46a cbz r3, 0xaa4b6 | goto label_71;
| }
0x000aa46c ldr r1, [pc, 0x33c] |
0x000aa46e str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x000aa472 ldr r0, [sp, 8] | r0 = var_8h_3;
0x000aa474 ldrd r2, r3, [r5, 4] | __asm ("ldrd r2, r3, [r5, 4]");
0x000aa478 add r1, pc | r1 = 0x154c28;
0x000aa47a bl 0x4bc18 | fcn_0004bc18 (r0, r1, r2, r3, r4);
| label_24:
0x000aa47e mov r0, sb | r0 = sb;
0x000aa480 bl 0x5ab04 | fcn_0005ab04 (r0);
0x000aa484 ldr.w r5, [sl] | r5 = *(sl);
| if (r5 == 0) {
0x000aa488 cbz r5, 0xaa498 | goto label_72;
| }
| do {
0x000aa48a mov r1, r5 | r1 = r5;
0x000aa48c ldr r5, [r5, 0xc] | r5 = *((r5 + 0xc));
0x000aa48e mov r0, r4 | r0 = r4;
0x000aa490 bl 0x159dc | fcn_000159dc (r0, r1);
0x000aa494 cmp r5, 0 |
0x000aa496 bne 0xaa48a |
| } while (r5 != 0);
| label_72:
0x000aa498 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x000aa49c cbz r3, 0xaa4ae |
| while (1) {
0x000aa49e ldr r3, [sp, 0xc] | r3 = var_ch;
0x000aa4a0 str.w r3, [r4, 0x150] | __asm ("str.w r3, aav.0x000000ff");
0x000aa4a4 b 0xaa3ac | goto label_22;
| label_67:
0x000aa4a6 mov r0, r4 | r0 = r4;
0x000aa4a8 bl 0x16588 | fcn_00016588 (r0);
0x000aa4ac b 0xaa3de | goto label_23;
0x000aa4ae mov r0, r4 | r0 = r4;
0x000aa4b0 bl 0x1536c | fcn_0001536c (r0);
0x000aa4b4 b 0xaa49e |
| }
| label_71:
0x000aa4b6 mov r1, r0 | r1 = r0;
0x000aa4b8 ldr r0, [sp, 8] | r0 = var_8h_3;
0x000aa4ba blx 0x8310 | fcn_00008310 ();
0x000aa4be b 0xaa47e | goto label_24;
| label_68:
0x000aa4c0 ldr.w ip, [sb, 0xe8] | ip = var_e8h;
0x000aa4c4 cmp.w ip, 0 |
| if (ip == 0) {
0x000aa4c8 beq 0xaa516 | goto label_73;
| }
0x000aa4ca ldr.w r0, [ip] | r0 = *(ip);
| if (r0 == 0) {
0x000aa4ce cbz r0, 0xaa500 | goto label_74;
| }
0x000aa4d0 ldr.w r3, [sb, 0x10c] | r3 = var_180h;
| if (r3 == 0) {
0x000aa4d4 cbz r3, 0xaa500 | goto label_74;
| }
0x000aa4d6 add r6, sp, 0x180 | r6 += var_180h;
0x000aa4d8 b 0xaa4e0 |
| while (r0 != r1) {
0x000aa4da add.w r6, r2, 0xc | r6 = r2 + 0xc;
| if (r3 == 0) {
0x000aa4de cbz r3, 0xaa500 | goto label_74;
| }
0x000aa4e0 ldr r1, [r3] | r1 = *(r3);
0x000aa4e2 mov r2, r3 | r2 = r3;
0x000aa4e4 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000aa4e6 cmp r0, r1 |
0x000aa4e8 bne 0xaa4da |
| }
0x000aa4ea str r3, [r6] | *(r6) = r3;
0x000aa4ec ldr.w r3, [sl, 4] | r3 = var_0h_4;
0x000aa4f0 adds r3, 1 | r3++;
0x000aa4f2 str.w r3, [sl, 4] | __asm ("str.w r3, [var_0h_4]");
0x000aa4f6 ldr.w r3, [sl] | r3 = *(sl);
0x000aa4fa str.w r2, [sl] | __asm ("str.w r2, [sl]");
0x000aa4fe str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
| label_74:
0x000aa500 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000aa502 cmp r3, 0 |
| if (r3 != 0) {
0x000aa504 bne 0xaa454 | goto label_25;
| }
0x000aa506 ldr.w r1, [ip, 0x24] | r1 = *((ip + 0x24));
0x000aa50a cmp r1, 0 |
| if (r1 == 0) {
0x000aa50c beq 0xaa454 | goto label_25;
| }
0x000aa50e mov r0, fp | r0 = fp;
0x000aa510 bl 0x301c4 | fcn_000301c4 (r0, r1);
0x000aa514 b 0xaa454 | goto label_25;
| label_73:
0x000aa516 ldr.w r3, [sb, 0xec] | r3 = var_ech;
0x000aa51a mov r1, r6 | r1 = r6;
0x000aa51c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000aa51e str r3, [sp, 0x10] | var_10h = r3;
0x000aa520 blx 0x831c | fcn_0000831c ();
0x000aa524 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r0 == 0) {
0x000aa526 cbnz r0, 0xaa536 |
0x000aa528 ldr.w r2, [sl, 0xc] | r2 = var_8h_6;
0x000aa52c ldr r1, [r2, 0x48] | r1 = *((r2 + 0x48));
0x000aa52e ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x000aa530 cmp r1, r2 |
| if (r1 == r2) {
0x000aa532 beq.w 0xaa746 | goto label_75;
| }
| }
| label_33:
0x000aa536 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000aa538 cmp r2, 0 |
| if (r2 != 0) {
0x000aa53a bne 0xaa454 | goto label_25;
| }
0x000aa53c mov r0, sb | r0 = sb;
0x000aa53e str r3, [sp, 0x10] | var_10h = r3;
0x000aa540 bl 0xa9d54 | fcn_000a9d54 (r0);
0x000aa544 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa546 cmp r0, 0 |
| if (r0 != 0) {
0x000aa548 bne 0xaa466 | goto label_26;
| }
0x000aa54a mov r1, r3 | r1 = r3;
0x000aa54c mov r0, fp | r0 = fp;
0x000aa54e bl 0x30e2c | fcn_00030e2c (r0, r1);
0x000aa552 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa554 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x000aa556 cmp r2, 0 |
| if (r2 == 0) {
0x000aa558 beq.w 0xaa454 | goto label_25;
| }
0x000aa55c mov r3, r5 | r3 = r5;
0x000aa55e str r4, [sp, 0x10] | var_10h = r4;
0x000aa560 mov r5, r6 | r5 = r6;
0x000aa562 add.w fp, sp, 0x180 |
0x000aa566 mov r4, r2 | r4 = r2;
0x000aa568 mov r6, r3 | r6 = r3;
0x000aa56a b 0xaa574 |
| while (r0 == 0) {
| label_27:
0x000aa56c ldr r4, [r4, 0x28] | r4 = *((r4 + 0x28));
0x000aa56e cmp r4, 0 |
| if (r4 == 0) {
0x000aa570 beq.w 0xaa740 | goto label_76;
| }
0x000aa574 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000aa576 cmp r0, 0 |
0x000aa578 beq 0xaa56c |
| }
0x000aa57a mov r1, r5 | r1 = r5;
0x000aa57c blx 0x831c | r0 = fcn_0000831c ();
0x000aa580 cmp r0, 0 |
| if (r0 != 0) {
0x000aa582 bne 0xaa56c | goto label_27;
| }
0x000aa584 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x000aa586 cmp r1, 0 |
| if (r1 == 0) {
0x000aa588 beq 0xaa56c | goto label_27;
| }
0x000aa58a ldr.w r3, [sb, 0x10c] | r3 = var_180h;
0x000aa58e cmp r3, 0 |
| if (r3 == 0) {
0x000aa590 beq 0xaa56c | goto label_27;
| }
0x000aa592 mov lr, fp | lr = fp;
0x000aa594 b 0xaa59e | goto label_77;
| label_28:
0x000aa596 add.w lr, r2, 0xc | lr = r2 + 0xc;
0x000aa59a cmp r3, 0 |
| if (r3 == 0) {
0x000aa59c beq 0xaa56c | goto label_27;
| }
| label_77:
0x000aa59e ldr r0, [r3] | r0 = *(r3);
0x000aa5a0 mov r2, r3 | r2 = r3;
0x000aa5a2 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000aa5a4 cmp r1, r0 |
| if (r1 != r0) {
0x000aa5a6 bne 0xaa596 | goto label_28;
| }
0x000aa5a8 str.w r3, [lr] | __asm ("str.w r3, [lr]");
0x000aa5ac ldr.w r3, [sl, 4] | r3 = var_0h_4;
0x000aa5b0 adds r3, 1 | r3++;
0x000aa5b2 str.w r3, [sl, 4] | __asm ("str.w r3, [var_0h_4]");
0x000aa5b6 ldr.w r3, [sl] | r3 = *(sl);
0x000aa5ba str.w r2, [sl] | __asm ("str.w r2, [sl]");
0x000aa5be str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x000aa5c0 b 0xaa56c | goto label_27;
| label_69:
0x000aa5c2 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000aa5c4 cmp r2, 0 |
| if (r2 == 0) {
0x000aa5c6 beq 0xaa660 | goto label_78;
| }
0x000aa5c8 lsls r3, r3, 0x11 | r3 <<= 0x11;
| if (r3 < r3) {
0x000aa5ca bmi 0xaa660 | goto label_78;
| }
0x000aa5cc ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa5ce mov r0, r6 | r0 = r6;
0x000aa5d0 ldr r1, [r3] | r1 = *(r3);
0x000aa5d2 blx 0x831c | r0 = fcn_0000831c ();
0x000aa5d6 cmp r0, 0 |
| if (r0 != 0) {
0x000aa5d8 bne.w 0xaa454 | goto label_25;
| }
0x000aa5dc ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa5de str.w r3, [sl, 0xc] | __asm ("str.w r3, [var_8h_6]");
| label_32:
0x000aa5e2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa5e4 ldr r0, [r3] | r0 = *(r3);
0x000aa5e6 cmp r0, 0 |
| if (r0 == 0) {
0x000aa5e8 beq.w 0xaa454 | goto label_25;
| }
0x000aa5ec ldr.w r3, [sb, 0x10c] | r3 = var_180h;
0x000aa5f0 cmp r3, 0 |
| if (r3 == 0) {
0x000aa5f2 beq.w 0xaa454 | goto label_25;
| }
0x000aa5f6 add r6, sp, 0x180 | r6 += var_180h;
0x000aa5f8 b 0xaa604 | goto label_79;
| label_29:
0x000aa5fa add.w r6, r2, 0xc | r6 = r2 + 0xc;
0x000aa5fe cmp r3, 0 |
| if (r3 == 0) {
0x000aa600 beq.w 0xaa454 | goto label_25;
| }
| label_79:
0x000aa604 ldr r1, [r3] | r1 = *(r3);
0x000aa606 mov r2, r3 | r2 = r3;
0x000aa608 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000aa60a cmp r1, r0 |
| if (r1 != r0) {
0x000aa60c bne 0xaa5fa | goto label_29;
| }
0x000aa60e str r3, [r6] | *(r6) = r3;
0x000aa610 ldr.w r3, [sl, 4] | r3 = var_0h_4;
0x000aa614 adds r3, 1 | r3++;
0x000aa616 str.w r3, [sl, 4] | __asm ("str.w r3, [var_0h_4]");
0x000aa61a ldr.w r3, [sl] | r3 = *(sl);
0x000aa61e str.w r2, [sl] | __asm ("str.w r2, [sl]");
0x000aa622 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x000aa624 b 0xaa454 | goto label_25;
| label_70:
0x000aa626 strd r0, r0, [sp, 0x58] | __asm ("strd r0, r0, [var_58h]");
0x000aa62a strd r0, r0, [sp, 0x60] | __asm ("strd r0, r0, [var_60h]");
0x000aa62e strd r0, r0, [sp, 0x68] | __asm ("strd r0, r0, [var_68h]");
0x000aa632 str r0, [sp, 0x70] | var_70h = r0;
0x000aa634 mov r0, sb | r0 = sb;
0x000aa636 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000aa638 bic r3, r3, 0x200000 | r3 = BIT_MASK (r3, 0x200000);
0x000aa63c str r3, [r2, 4] | *((r2 + 4)) = r3;
0x000aa63e add r2, sp, 0x54 | r2 += var_54h;
0x000aa640 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa642 str.w sb, [r2] | __asm ("str.w sb, [r2]");
0x000aa646 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x000aa648 bl 0x32c7c | fcn_00032c7c (r0, r1, r2, r3);
0x000aa64c ldr.w r3, [sb, 0x24] | r3 = var_24h_3;
0x000aa650 cmp r3, 0 |
| if (r3 == 0) {
0x000aa652 beq 0xaa724 | goto label_80;
| }
0x000aa654 ldr.w r0, [sb, 0xc] | r0 = var_ch_5;
0x000aa658 cmp r0, 0 |
| if (r0 == 0) {
0x000aa65a beq.w 0xaa454 | goto label_25;
| }
0x000aa65e b 0xaa466 | goto label_26;
| label_78:
0x000aa660 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa662 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
| if (r2 == 0) {
0x000aa664 cbz r2, 0xaa6c6 | goto label_81;
| }
0x000aa666 add r3, sp, 0x180 | r3 += var_180h;
0x000aa668 strd r3, r4, [sp, 0x18] | __asm ("strd r3, r4, [var_1ch]");
0x000aa66c mov r4, r6 | r4 = r6;
0x000aa66e mov r6, r2 | r6 = r2;
0x000aa670 b 0xaa676 |
| while (r0 != 0) {
| label_30:
0x000aa672 ldr r6, [r6, 4] | r6 = *((r6 + 4));
| if (r6 == 0) {
0x000aa674 cbz r6, 0xaa6c2 | goto label_82;
| }
0x000aa676 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x000aa678 mov r1, r4 | r1 = r4;
0x000aa67a blx 0x831c | r0 = fcn_0000831c ();
0x000aa67e cmp r0, 0 |
0x000aa680 bne 0xaa672 |
| }
0x000aa682 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x000aa684 cmp r1, 0 |
| if (r1 == 0) {
0x000aa686 beq 0xaa672 | goto label_30;
| }
0x000aa688 ldr.w r3, [sb, 0x10c] | r3 = var_180h;
0x000aa68c cmp r3, 0 |
| if (r3 == 0) {
0x000aa68e beq 0xaa672 | goto label_30;
| }
0x000aa690 ldr.w lr, [sp, 0x18] | lr = var_sp_18h;
0x000aa694 b 0xaa69e | goto label_83;
| label_31:
0x000aa696 add.w lr, r0, 0xc | lr = r0 + 0xc;
0x000aa69a cmp r3, 0 |
| if (r3 == 0) {
0x000aa69c beq 0xaa672 | goto label_30;
| }
| label_83:
0x000aa69e ldr r2, [r3] | r2 = *(r3);
0x000aa6a0 mov r0, r3 | r0 = r3;
0x000aa6a2 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000aa6a4 cmp r1, r2 |
| if (r1 != r2) {
0x000aa6a6 bne 0xaa696 | goto label_31;
| }
0x000aa6a8 str.w r3, [lr] | __asm ("str.w r3, [lr]");
0x000aa6ac ldr.w r3, [sl, 4] | r3 = var_0h_4;
0x000aa6b0 adds r3, 1 | r3++;
0x000aa6b2 str.w r3, [sl, 4] | __asm ("str.w r3, [var_0h_4]");
0x000aa6b6 ldr.w r3, [sl] | r3 = *(sl);
0x000aa6ba str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x000aa6be str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x000aa6c0 b 0xaa672 | goto label_30;
| label_82:
0x000aa6c2 mov r6, r4 | r6 = r4;
0x000aa6c4 ldr r4, [sp, 0x1c] | r4 = var_1ch;
| label_81:
0x000aa6c6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa6c8 mov r0, r6 | r0 = r6;
0x000aa6ca ldr r1, [r3] | r1 = *(r3);
0x000aa6cc blx 0x831c | r0 = fcn_0000831c ();
0x000aa6d0 cmp r0, 0 |
| if (r0 != 0) {
0x000aa6d2 bne.w 0xaa454 | goto label_25;
| }
0x000aa6d6 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000aa6d8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa6da str.w r3, [sl, 0xc] | __asm ("str.w r3, [var_8h_6]");
0x000aa6de cmp r2, 0 |
| if (r2 != 0) {
0x000aa6e0 bne.w 0xaa5e2 | goto label_32;
| }
0x000aa6e4 ldr r6, [r3, 0x18] | r6 = *((r3 + 0x18));
0x000aa6e6 cmp r6, 0 |
| if (r6 == 0) {
0x000aa6e8 beq.w 0xaa5e2 | goto label_32;
| }
0x000aa6ec ldr r3, [r6] | r3 = *(r6);
0x000aa6ee cmp r3, 0 |
| if (r3 <= 0) {
0x000aa6f0 ble.w 0xaa5e2 | goto label_32;
| }
0x000aa6f4 str r4, [sp, 0x14] | var_14h = r4;
0x000aa6f6 mov r4, r3 | r4 = r3;
0x000aa6f8 mov r3, sl | r3 = sl;
0x000aa6fa adds r6, 0x18 | r6 += 0x18;
0x000aa6fc mov sl, sb | sl = sb;
0x000aa6fe mov sb, r5 | sb = r5;
0x000aa700 mov r5, fp | r5 = fp;
0x000aa702 mov fp, r3 |
| do {
0x000aa704 ldr r1, [r6, -0x10] | r1 = *((r6 - 0x10));
| if (r1 != 0) {
0x000aa708 cbz r1, 0xaa712 |
0x000aa70a mov r0, r5 | r0 = r5;
0x000aa70c bl 0x301c4 | r0 = fcn_000301c4 (r0, r1);
| if (r0 != 0) {
0x000aa710 cbnz r0, 0xaa71a | goto label_84;
| }
| }
0x000aa712 subs r4, 1 | r4--;
0x000aa714 add.w r6, r6, 0x10 | r6 += 0x10;
0x000aa718 bne 0xaa704 |
| } while (r4 != 1);
| label_84:
0x000aa71a mov r5, sb | r5 = sb;
0x000aa71c ldr r4, [sp, 0x14] | r4 = var_14h;
0x000aa71e mov sb, sl | sb = sl;
0x000aa720 mov sl, fp | sl = fp;
0x000aa722 b 0xaa5e2 | goto label_32;
| label_80:
0x000aa724 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000aa726 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x000aa728 cmp r1, 0 |
| if (r1 == 0) {
0x000aa72a beq.w 0xaa454 | goto label_25;
| }
0x000aa72e ldr.w r3, [fp, 8] | r3 = var_bp_8h;
0x000aa732 cmp r3, 0 |
| if (r3 == 0) {
0x000aa734 beq.w 0xaa454 | goto label_25;
| }
0x000aa738 mov r0, fp | r0 = fp;
0x000aa73a bl 0x30ca4 | fcn_00030ca4 (r0, r1, r2, r3, r4);
0x000aa73e b 0xaa454 | goto label_25;
| label_76:
0x000aa740 ldr r4, [sp, 0x10] | r4 = var_10h;
0x000aa742 mov r5, r6 | r5 = r6;
0x000aa744 b 0xaa454 | goto label_25;
| label_75:
0x000aa746 ldr.w r2, [sb, 0xec] | r2 = var_ech;
0x000aa74a ldr.w lr, [r2, 4] |
0x000aa74e cmp.w lr, 0 |
| if (lr == 0) {
0x000aa752 beq.w 0xaa536 | goto label_33;
| }
0x000aa756 ldr.w r2, [sb, 0x10c] | r2 = var_180h;
0x000aa75a cmp r2, 0 |
| if (r2 == 0) {
0x000aa75c beq.w 0xaa536 | goto label_33;
| }
0x000aa760 add.w ip, sp, 0x180 |
0x000aa764 b 0xaa770 | goto label_85;
| label_34:
0x000aa766 add.w ip, r1, 0xc |
0x000aa76a cmp r2, 0 |
| if (r2 == 0) {
0x000aa76c beq.w 0xaa536 | goto label_33;
| }
| label_85:
0x000aa770 ldr r0, [r2] | r0 = *(r2);
0x000aa772 mov r1, r2 | r1 = r2;
0x000aa774 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x000aa776 cmp lr, r0 |
| if (lr != r0) {
0x000aa778 bne 0xaa766 | goto label_34;
| }
0x000aa77a str.w r2, [ip] | __asm ("str.w r2, [ip]");
0x000aa77e ldr.w r2, [sl, 4] | r2 = var_0h_4;
0x000aa782 adds r2, 1 | r2++;
0x000aa784 str.w r2, [sl, 4] | __asm ("str.w r2, [var_0h_4]");
0x000aa788 ldr.w r2, [sl] | r2 = *(sl);
0x000aa78c str.w r1, [sl] | __asm ("str.w r1, [sl]");
0x000aa790 str r2, [r1, 0xc] | *((r1 + 0xc)) = r2;
0x000aa792 b 0xaa536 | goto label_33;
| label_66:
0x000aa794 blx 0x7e8c | fcn_00007e8c ();
0x000aa798 subs r1, 0x38 | r1 -= 0x38;
0x000aa79a movs r2, r0 | r2 = r0;
0x000aa79c lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000aa79e movs r0, r0 |
0x000aa7a0 subs r0, 0xe0 | r0 -= 0xe0;
0x000aa7a2 movs r2, r0 | r2 = r0;
0x000aa7a4 ldrh r3, [r3, 0x16] | r3 = *((r3 + 0x16));
0x000aa7a6 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x59210 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_backup_step () | void sqlite3_backup_step (int16_t arg_cch, int16_t arg1, int16_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int32_t var_30h_2;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
0x00059210 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00059214 mov r7, r1 | r7 = r1;
0x00059216 ldr.w r1, [pc, 0x594] |
0x0005921a sub sp, 0x44 |
0x0005921c mov r5, r0 | r5 = r0;
0x0005921e ldr.w r2, [pc, 0x590] | r2 = *(0x597b2);
0x00059222 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x00059224 add r1, pc | r1 = 0xb29d6;
0x00059226 ldr r2, [r1, r2] |
0x00059228 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x0005922a ldr r2, [r2] | r2 = *(0xb29d6);
0x0005922c str r2, [sp, 0x3c] | var_3ch = r2;
0x0005922e mov.w r2, 0 | r2 = 0;
0x00059232 blx 0x8254 | fcn_00008254 ();
0x00059236 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x00059238 ldrb r3, [r0, 9] | r3 = *((r0 + 9));
| if (r3 != 0) {
0x0005923a cbz r3, 0x5924a |
0x0005923c ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0005923e ldrb r2, [r0, 0xa] | r2 = *((r0 + 0xa));
0x00059240 adds r3, 1 | r3++;
0x00059242 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x00059244 cmp r2, 0 |
| if (r2 == 0) {
0x00059246 beq.w 0x59412 | goto label_23;
| }
| }
0x0005924a ldr r3, [r5] | r3 = *(r5);
0x0005924c cmp r3, 0 |
| if (r3 == 0) {
0x0005924e beq.w 0x5941e | goto label_24;
| }
| do {
0x00059252 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00059254 blx 0x8254 | fcn_00008254 ();
0x00059258 ldr.w sb, [r5, 0x1c] | sb = *((r5 + 0x1c));
0x0005925c sub.w r2, sb, 5 | r2 = sb - 5;
0x00059260 cmp.w sb, 0 |
0x00059264 it ne |
| if (sb != 0) {
0x00059266 cmpne r2, 1 | __asm ("cmpne r2, 1");
| }
0x00059268 ite hi |
| if (sb <= 0) {
0x0005926a movhi r2, 1 | r2 = 1;
| }
| if (sb > 0) {
0x0005926c movls r2, 0 | r2 = 0;
| }
| if (sb <= 0) {
0x0005926e bhi.w 0x593d2 |
0x00059272 ldrd r3, r0, [r5] | __asm ("ldrd r3, r0, [r5]");
0x00059276 ldr r6, [r5, 0x18] | r6 = *((r5 + 0x18));
0x00059278 ldr r4, [r0, 4] | r4 = *((r0 + 4));
0x0005927a str r3, [sp, 0xc] | var_ch = r3;
0x0005927c ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0005927e ldr r3, [r4] | r3 = *(r4);
0x00059280 ldr.w fp, [r1] | fp = *(r1);
0x00059284 str r3, [sp, 0x14] | var_14h = r3;
0x00059286 ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 != 0) {
0x00059288 cbz r3, 0x59292 |
0x0005928a ldrb r3, [r1, 0x14] | r3 = *((r1 + 0x14));
0x0005928c cmp r3, 2 |
| if (r3 == 2) {
0x0005928e beq.w 0x596be | goto label_25;
| }
| }
0x00059292 ldrb r2, [r6, 8] | r2 = *((r6 + 8));
0x00059294 cmp r2, 0 |
| if (r2 == 0) {
0x00059296 beq.w 0x59448 | goto label_26;
| }
| label_1:
0x0005929a ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0005929c str r3, [sp, 0x10] | var_10h = r3;
0x0005929e cmp r3, 0 |
| if (r3 != 0) {
0x000592a0 bne.w 0x59478 | goto label_27;
| }
| label_22:
0x000592a4 movs r3, 0 | r3 = 0;
0x000592a6 ldr r1, [r1, 0x24] | r1 = *((r1 + 0x24));
0x000592a8 mov r2, r3 | r2 = r3;
0x000592aa bl 0x1f048 | r0 = fcn_0001f048 (r0, r1, r2, r3);
0x000592ae cmp r0, 7 |
0x000592b0 mov sb, r0 | sb = r0;
| if (r0 != 7) {
0x000592b2 beq 0x592d2 |
0x000592b4 ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x000592b6 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
| label_21:
0x000592b8 cmp r2, 0 |
| if (r2 != 0) {
0x000592ba bne.w 0x5972a | goto label_28;
| }
0x000592be mov r0, r4 | r0 = r4;
0x000592c0 add.w r2, r5, 8 | r2 = r5 + 8;
0x000592c4 movs r1, 2 | r1 = 2;
0x000592c6 bl 0x54990 | r0 = fcn_00054990 (r0, r1, r2, r3, r4, r5, r6);
0x000592ca mov sb, r0 | sb = r0;
0x000592cc cmp r0, 0 |
| if (r0 == 0) {
0x000592ce beq.w 0x5970a | goto label_29;
| }
| }
0x000592d2 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x000592d4 ldr r4, [r2, 4] | r4 = *((r2 + 4));
0x000592d6 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x000592d8 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000592da ldr r2, [r4] | r2 = *(r4);
| label_2:
0x000592dc ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000592de ldr.w r8, [r1, 0x30] | r8 = *((r1 + 0x30));
0x000592e2 str r3, [sp, 0x18] | var_18h = r3;
0x000592e4 ldrb r3, [r2, 5] | r3 = *((r2 + 5));
0x000592e6 str r3, [sp, 0x20] | var_20h = r3;
0x000592e8 ldr r3, [r1, 0x24] | r3 = *((r1 + 0x24));
0x000592ea str r3, [sp, 0x1c] | var_1ch = r3;
0x000592ec cmp r7, 0 |
| if (r7 != 0) {
0x000592ee bne.w 0x594a6 | goto label_30;
| }
| label_7:
0x000592f2 cmp.w sb, 0x65 |
| if (sb == 0x65) {
0x000592f6 bne 0x593ba |
| label_8:
0x000592f8 ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x000592fa cmp.w r8, 0 |
| if (r8 == 0) {
0x000592fe beq.w 0x596c8 | goto label_31;
| }
| label_15:
0x00059302 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00059304 mov r0, r4 | r0 = r4;
0x00059306 movs r1, 1 | r1 = 1;
0x00059308 adds r2, 1 | r2++;
0x0005930a bl 0x55070 | r0 = fcn_00055070 (r0, r1, r2);
0x0005930e mov sb, r0 | sb = r0;
0x00059310 cmp r0, 0 |
| if (r0 != 0) {
0x00059312 bne 0x593ba | goto label_12;
| }
0x00059314 ldr r0, [r5] | r0 = *(r5);
| if (r0 != 0) {
0x00059316 cbz r0, 0x5931c |
0x00059318 bl 0x1935c | fcn_0001935c (r0);
| }
0x0005931c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0005931e cmp r3, 5 |
| if (r3 == 5) {
0x00059320 beq.w 0x59734 | goto label_32;
| }
| label_19:
0x00059324 ldrd r3, r2, [sp, 0x18] | __asm ("ldrd r3, r2, [var_18h]");
0x00059328 cmp r3, r2 |
| if (r3 <= r2) {
0x0005932a ble.w 0x59654 | goto label_33;
| }
0x0005932e ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00059330 mov sb, fp | sb = fp;
0x00059332 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00059334 ldr.w sl, [pc, 0x47c] |
0x00059338 mov r1, r7 | r1 = r7;
0x0005933a bl 0xab8f8 | r0 = fcn_000ab8f8 (r0, r1);
0x0005933e mov r1, r0 | r1 = r0;
0x00059340 add r0, r8 | r0 += r8;
0x00059342 subs r0, 1 | r0--;
0x00059344 add sl, pc | sl = 0xb2afc;
0x00059346 bl 0xab8f8 | fcn_000ab8f8 (r0, r1);
0x0005934a ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0005934c mov r4, r0 | r4 = r0;
0x0005934e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00059350 ldr r1, [r3, 0x24] | r1 = *((r3 + 0x24));
0x00059352 ldr.w r3, [pc, 0x464] | r3 = *(0x000597b8);
0x00059356 add r3, pc | r3 += pc;
0x00059358 ldr.w r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x0005935c bl 0xab680 | r0 = fcn_000ab680 (r0, r1, r2);
0x00059360 adds r3, r0, 1 | r3 = r0 + 1;
0x00059362 mov r2, r7 | r2 = r7;
0x00059364 cmp r3, r4 |
0x00059366 ite ne |
| if (r3 == r4) {
0x00059368 movne r6, r4 | r6 = r4;
| }
| if (r3 != r4) {
0x0005936a moveq r6, r0 | r6 = r0;
| }
0x0005936c smull r1, r3, r7, r8 | r1:r3 = r7 * r8;
0x00059370 asrs r4, r2, 0x1f | r4 = r2 >> 0x1f;
0x00059372 add.w r8, sp, 0x30 | r8 += var_30h;
0x00059376 str r4, [sp, 0xc] | var_ch = r4;
0x00059378 str r3, [sp, 0x28] | var_28h = r3;
0x0005937a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005937c str r1, [sp, 0x24] | var_24h = r1;
0x0005937e ldr r7, [r3, 0x18] | r7 = *((r3 + 0x18));
0x00059380 mov fp, r3 |
0x00059382 ldr r1, [r3, 0x3c] | r1 = *((r3 + 0x3c));
0x00059384 str r1, [sp, 0x20] | var_20h = r1;
| label_5:
0x00059386 cmp r7, r6 |
| if (r7 <= r6) {
0x00059388 blo.w 0x59578 | goto label_34;
| }
0x0005938c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0005938e ldr.w r0, [sl, 0x118] | r0 = *((sl + 0x118));
0x00059392 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00059394 ldr r1, [r3, 0x24] | r1 = *((r3 + 0x24));
0x00059396 bl 0xab680 | fcn_000ab680 (r0, r1, r2);
0x0005939a adds r0, 1 | r0++;
| label_10:
0x0005939c cmp r0, r6 |
| if (r0 == r6) {
0x0005939e beq.w 0x59570 | goto label_35;
| }
0x000593a2 ldr.w r4, [fp, 0xcc] | r4 = *(arg_cch);
0x000593a6 movs r3, 0 | r3 = 0;
0x000593a8 mov r2, r8 | r2 = r8;
0x000593aa mov r1, r6 | r1 = r6;
0x000593ac mov r0, fp | r0 = fp;
0x000593ae blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000593b0 mov r4, r0 | r4 = r0;
0x000593b2 cmp r0, 0 |
| if (r0 == 0) {
0x000593b4 beq.w 0x59518 | goto label_36;
| }
| label_6:
0x000593b8 mov sb, r4 | sb = r4;
| }
| label_12:
0x000593ba ldr r3, [sp, 0x10] | r3 = var_10h;
0x000593bc cmp r3, 0 |
| if (r3 != 0) {
0x000593be bne.w 0x59698 | goto label_37;
| }
| label_13:
0x000593c2 movw r2, 0xc0a | r2 = 0xc0a;
0x000593c6 cmp sb, r2 |
0x000593c8 it eq |
| if (sb != r2) {
0x000593ca moveq sb, 7 | sb = 7;
| }
| label_9:
0x000593ce str.w sb, [r5, 0x1c] | __asm ("str.w sb, [r5, 0x1c]");
| }
0x000593d2 ldr r2, [r5] | r2 = *(r5);
| if (r2 != 0) {
0x000593d4 cbz r2, 0x593dc |
0x000593d6 ldr r0, [r2, 0xc] | r0 = *((r2 + 0xc));
0x000593d8 blx 0x81d4 | fcn_000081d4 ();
| }
| label_0:
0x000593dc ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000593de ldrb r2, [r0, 9] | r2 = *((r0 + 9));
| if (r2 != 0) {
0x000593e0 cbz r2, 0x593ec |
0x000593e2 ldr r2, [r0, 0xc] | r2 = *((r0 + 0xc));
0x000593e4 subs r2, 1 | r2--;
0x000593e6 str r2, [r0, 0xc] | *((r0 + 0xc)) = r2;
0x000593e8 cmp r2, 0 |
| if (r2 == 0) {
0x000593ea beq 0x59472 | goto label_38;
| }
| }
| label_3:
0x000593ec ldr r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x000593ee ldr r0, [r2, 0xc] | r0 = *((r2 + 0xc));
0x000593f0 blx 0x81d4 | fcn_000081d4 ();
0x000593f4 ldr r1, [pc, 0x3c4] |
0x000593f6 ldr r2, [pc, 0x3b8] | r2 = *(0x597b2);
0x000593f8 add r1, pc | r1 = 0xb2bb8;
0x000593fa ldr r2, [r1, r2] | r2 = *(0xb2bb8);
0x000593fc ldr r1, [r2] | r1 = *(0xb2bb8);
0x000593fe ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00059400 eors r1, r2 | r1 ^= r2;
0x00059402 mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x00059406 bne.w 0x59796 | goto label_39;
| }
0x0005940a mov r0, sb | r0 = sb;
0x0005940c add sp, 0x44 |
0x0005940e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_23:
0x00059412 bl 0x12464 | fcn_00012464 (r0);
0x00059416 ldr r3, [r5] | r3 = *(r5);
0x00059418 cmp r3, 0 |
0x0005941a bne.w 0x59252 |
| } while (r3 != 0);
| label_24:
0x0005941e ldr.w sb, [r5, 0x1c] | sb = *((r5 + 0x1c));
0x00059422 sub.w r2, sb, 5 | r2 = sb - 5;
0x00059426 cmp.w sb, 0 |
0x0005942a it ne |
| if (sb == 0) {
0x0005942c cmpne r2, 1 | __asm ("cmpne r2, 1");
| goto label_40;
| }
| if (sb > 0) {
| label_40:
0x0005942e bhi 0x593dc | goto label_0;
| }
0x00059430 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00059432 ldr r6, [r5, 0x18] | r6 = *((r5 + 0x18));
0x00059434 ldr r4, [r0, 4] | r4 = *((r0 + 4));
0x00059436 ldrb r2, [r6, 8] | r2 = *((r6 + 8));
0x00059438 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0005943a ldr r3, [r4] | r3 = *(r4);
0x0005943c ldr.w fp, [r1] | fp = *(r1);
0x00059440 str r3, [sp, 0x14] | var_14h = r3;
0x00059442 cmp r2, 0 |
| if (r2 != 0) {
0x00059444 bne.w 0x5929a | goto label_1;
| }
| label_26:
0x00059448 mov r1, r2 | r1 = r2;
0x0005944a mov r0, r6 | r0 = r6;
0x0005944c bl 0x54990 | fcn_00054990 (r0, r1, r2, r3, r4, r5, r6);
0x00059450 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00059452 mov sb, r0 | sb = r0;
0x00059454 orrs.w r1, r0, r2 | r1 = r0 | r2;
| if (r1 == r0) {
0x00059458 beq.w 0x597a0 | goto label_41;
| }
0x0005945c ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x0005945e cmp r0, 0 |
| if (r0 == 0) {
0x00059460 beq.w 0x5979a | goto label_42;
| }
0x00059464 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00059466 movs r3, 1 | r3 = 1;
0x00059468 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0005946a str r3, [sp, 0x10] | var_10h = r3;
0x0005946c ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0005946e ldr r2, [r4] | r2 = *(r4);
0x00059470 b 0x592dc | goto label_2;
| label_38:
0x00059472 bl 0x95d0 | fcn_000095d0 (r0);
0x00059476 b 0x593ec | goto label_3;
| label_27:
0x00059478 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005947a movs r2, 0 | r2 = 0;
0x0005947c str r2, [sp, 0x10] | var_10h = r2;
| label_16:
0x0005947e ldrb r3, [r3, 5] | r3 = *((r3 + 5));
0x00059480 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x00059482 ldr r0, [r1, 0x24] | r0 = *((r1 + 0x24));
0x00059484 str r3, [sp, 0x20] | var_20h = r3;
0x00059486 sub.w r3, r3, 5 | r3 -= 5;
0x0005948a clz r3, r3 | r3 &= r3;
0x0005948e ldr.w r8, [r1, 0x30] | r8 = *((r1 + 0x30));
0x00059492 lsrs r3, r3, 5 | r3 >>= 5;
0x00059494 cmp r2, r0 |
0x00059496 it eq |
| if (r2 != r0) {
0x00059498 moveq r3, 0 | r3 = 0;
| }
0x0005949a str r2, [sp, 0x18] | var_18h = r2;
0x0005949c lsl.w sb, r3, 3 | sb = r3 << 3;
0x000594a0 str r0, [sp, 0x1c] | var_1ch = r0;
0x000594a2 cmp r7, 0 |
| if (r7 == 0) {
0x000594a4 beq 0x59534 | goto label_43;
| }
| label_30:
0x000594a6 ldr r3, [pc, 0x318] |
0x000594a8 movs r6, 0 | r6 = 0;
0x000594aa ldr r4, [r5, 0x10] | r4 = *((r5 + 0x10));
0x000594ac add.w sl, sp, 0x30 | sl += var_30h;
0x000594b0 add r3, pc | r3 = 0xb2c76;
0x000594b2 str r3, [sp, 0xc] | var_ch = r3;
0x000594b4 mov r3, r7 | r3 = r7;
0x000594b6 mov r7, sb | r7 = sb;
0x000594b8 mov sb, r3 | sb = r3;
0x000594ba b 0x594c8 | goto label_44;
| label_4:
0x000594bc ldr r4, [r5, 0x10] | r4 = *((r5 + 0x10));
| do {
0x000594be adds r6, 1 | r6++;
0x000594c0 adds r4, 1 | r4++;
0x000594c2 cmp sb, r6 |
0x000594c4 str r4, [r5, 0x10] | *((r5 + 0x10)) = r4;
| if (sb == r6) {
0x000594c6 beq 0x59532 | goto label_45;
| }
| label_44:
0x000594c8 cmp r4, r8 |
| if (r4 > r8) {
0x000594ca bhi 0x59532 | goto label_45;
| }
0x000594cc cmp r7, 0 |
| if (r7 != 0) {
0x000594ce bne.w 0x596ba | goto label_46;
| }
0x000594d2 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x000594d4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000594d6 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000594d8 ldr.w r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x000594dc ldr r1, [r2, 0x24] | r1 = *((r2 + 0x24));
0x000594de bl 0xab680 | fcn_000ab680 (r0, r1, r2);
0x000594e2 adds r0, 1 | r0++;
0x000594e4 cmp r0, r4 |
0x000594e6 beq 0x594be |
| } while (r0 == r4);
0x000594e8 ldr.w r7, [fp, 0xcc] | r7 = *(arg_cch);
0x000594ec movs r3, 2 | r3 = 2;
0x000594ee mov r2, sl | r2 = sl;
0x000594f0 mov r1, r4 | r1 = r4;
0x000594f2 mov r0, fp | r0 = fp;
0x000594f4 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000594f6 mov r7, r0 | r7 = r0;
0x000594f8 cmp r0, 0 |
| if (r0 != 0) {
0x000594fa bne 0x594bc | goto label_4;
| }
0x000594fc ldr r2, [sp, 0x30] | r2 = var_30h;
0x000594fe mov r3, r0 | r3 = r0;
0x00059500 mov r1, r4 | r1 = r4;
0x00059502 mov r0, r5 | r0 = r5;
0x00059504 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00059506 bl 0x516d4 | r0 = fcn_000516d4 (r0, r1, r2, r3);
0x0005950a mov r7, r0 | r7 = r0;
0x0005950c ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005950e cmp r0, 0 |
| if (r0 == 0) {
0x00059510 beq 0x594bc | goto label_4;
| }
0x00059512 bl 0x11fa4 | fcn_00011fa4 (r0);
0x00059516 b 0x594bc | goto label_4;
| label_36:
0x00059518 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0005951a bl 0x51680 | r0 = fcn_00051680 (r0);
0x0005951e mov r4, r0 | r4 = r0;
0x00059520 ldr r0, [sp, 0x30] | r0 = var_30h;
| if (r0 != 0) {
0x00059522 cbz r0, 0x59528 |
0x00059524 bl 0x11fa4 | fcn_00011fa4 (r0);
| }
0x00059528 adds r6, 1 | r6++;
0x0005952a cmp r4, 0 |
| if (r4 == 0) {
0x0005952c beq.w 0x59386 | goto label_5;
| }
0x00059530 b 0x593b8 | goto label_6;
| label_45:
0x00059532 mov sb, r7 | sb = r7;
| label_43:
0x00059534 cmp.w sb, 0 |
| if (sb != 0) {
0x00059538 bne.w 0x592f2 | goto label_7;
| }
0x0005953c ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x0005953e str.w r8, [r5, 0x24] | __asm ("str.w r8, [r5, 0x24]");
0x00059542 rsb.w r2, r1, 1 | r2 = 1 - r1;
0x00059546 cmp r1, r8 |
0x00059548 add r2, r8 | r2 += r8;
0x0005954a str r2, [r5, 0x20] | *((r5 + 0x20)) = r2;
| if (r1 > r8) {
0x0005954c bhi.w 0x592f8 | goto label_8;
| }
0x00059550 ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
| if (r2 == 0) {
0x00059552 cbnz r2, 0x59564 |
0x00059554 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00059556 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00059558 ldr r2, [r2] | r2 = *(r2);
0x0005955a ldr r1, [r2, 0x58] | r1 = *((r2 + 0x58));
0x0005955c str r1, [r5, 0x2c] | *((r5 + 0x2c)) = r1;
0x0005955e movs r1, 1 | r1 = 1;
0x00059560 str r5, [r2, 0x58] | *((r2 + 0x58)) = r5;
0x00059562 str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
| }
0x00059564 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00059566 cmp r3, 0 |
| if (r3 != 0) {
0x00059568 bne.w 0x59698 | goto label_37;
| }
0x0005956c mov sb, r3 | sb = r3;
0x0005956e b 0x593ce | goto label_9;
| label_35:
0x00059570 adds r6, r0, 1 | r6 = r0 + 1;
0x00059572 cmp r6, r7 |
| if (r6 < r7) {
0x00059574 bls.w 0x5939c | goto label_10;
| }
| label_34:
0x00059578 movs r2, 1 | r2 = 1;
0x0005957a movs r1, 0 | r1 = 0;
0x0005957c ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005957e mov fp, sb |
0x00059580 ldr r4, [sp, 0xc] | r4 = var_ch;
0x00059582 bl 0x58214 | fcn_00058214 (r0, r1, r2, r3);
0x00059586 ldr r2, [pc, 0x23c] |
0x00059588 mov sb, r0 | sb = r0;
0x0005958a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0005958c ldr r1, [sp, 0x28] | r1 = var_28h;
0x0005958e add r2, pc | r2 = 0xb2d58;
0x00059590 ldr.w r6, [r2, 0x118] | r6 = *(0xb2e70);
0x00059594 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00059596 add r2, r6 | r2 += r6;
0x00059598 asr.w sl, r2, 0x1f | sl = r2 >> 0x1f;
0x0005959c cmp r3, r2 |
0x0005959e str r2, [sp, 0x18] | var_18h = r2;
0x000595a0 sbcs.w r2, r1, sl | __asm ("sbcs.w r2, r1, sl");
0x000595a4 itt lt |
| if (r3 >= r2) {
0x000595a6 strlt r3, [sp, 0x18] | var_18h = r3;
| }
| if (r3 >= r2) {
0x000595a8 movlt sl, r1 | sl = r1;
| }
0x000595aa ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000595ac ldr r2, [sp, 0x18] | r2 = var_18h;
0x000595ae add r6, r3 | r6 += r3;
0x000595b0 asrs r7, r6, 0x1f | r7 = r6 >> 0x1f;
0x000595b2 cmp r6, r2 |
0x000595b4 sbcs.w r2, r7, sl | __asm ("sbcs.w r2, r7, sl");
0x000595b8 ite lt |
| if (r6 >= r2) {
0x000595ba movlt r2, 1 | r2 = 1;
| }
| if (r6 < r2) {
0x000595bc movge r2, 0 | r2 = 0;
| }
0x000595be cmp r0, 0 |
0x000595c0 ite ne |
| if (r0 == 0) {
0x000595c2 movne r2, 0 | r2 = 0;
| }
| if (r0 != 0) {
0x000595c4 andeq r2, r2, 1 | r2 &= 1;
| }
0x000595c8 cmp r2, 0 |
| if (r2 == 0) {
0x000595ca beq.w 0x5974a | goto label_47;
| }
0x000595ce mov sb, sl | sb = sl;
0x000595d0 str r5, [sp, 0x2c] | var_2ch = r5;
0x000595d2 ldr.w sl, [sp, 0x20] | sl = var_20h;
0x000595d6 add.w r8, sp, 0x30 | r8 += var_30h;
0x000595da mov r5, r3 | r5 = r3;
0x000595dc str r4, [sp, 0xc] | var_ch = r4;
0x000595de b 0x59620 |
| while (r0 == 0) {
0x000595e0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000595e2 mov r2, r5 | r2 = r5;
0x000595e4 mov r0, sl | r0 = sl;
0x000595e6 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000595e8 ldr.w r3, [sl] | r3 = *(sl);
0x000595ec strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x000595f0 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000595f2 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000595f4 mov r3, r0 | r3 = r0;
0x000595f6 ldr r0, [sp, 0x30] | r0 = var_30h;
| if (r0 != 0) {
0x000595f8 cbnz r0, 0x5964a | goto label_48;
| }
| label_11:
0x000595fa ldr r2, [sp, 0xc] | r2 = var_ch;
0x000595fc adds r6, r5, r6 | r6 = r5 + r6;
0x000595fe adc.w r7, r2, r7 | __asm ("adc.w r7, r2, r7");
0x00059602 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00059604 cmp r6, r2 |
0x00059606 sbcs.w r2, r7, sb | __asm ("sbcs.w r2, r7, sb");
0x0005960a ite lt |
| if (r6 >= r2) {
0x0005960c movlt r2, 1 | r2 = 1;
| }
| if (r6 < r2) {
0x0005960e movge r2, 0 | r2 = 0;
| }
0x00059610 cmp r3, 0 |
0x00059612 ite ne |
| if (r3 == 0) {
0x00059614 movne r2, 0 | r2 = 0;
| }
| if (r3 != 0) {
0x00059616 andeq r2, r2, 1 | r2 &= 1;
| }
0x0005961a cmp r2, 0 |
| if (r2 == 0) {
0x0005961c beq.w 0x59746 | goto label_49;
| }
0x00059620 movs r3, 0 | r3 = 0;
0x00059622 mov r2, r5 | r2 = r5;
0x00059624 str r3, [sp, 0x30] | var_30h = r3;
0x00059626 mov r0, r6 | r0 = r6;
0x00059628 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005962a mov r1, r7 | r1 = r7;
0x0005962c bl 0xac13c | fcn_000ac13c (r0, r1, r2, r3);
0x00059630 movs r3, 0 | r3 = 0;
0x00059632 adds r1, r0, 1 | r1 = r0 + 1;
0x00059634 ldr.w r4, [fp, 0xcc] | r4 = *(arg_cch);
0x00059638 mov r2, r8 | r2 = r8;
0x0005963a mov r0, fp | r0 = fp;
0x0005963c blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0005963e mov r3, r0 | r3 = r0;
0x00059640 cmp r0, 0 |
0x00059642 beq 0x595e0 |
| }
0x00059644 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00059646 cmp r0, 0 |
| if (r0 == 0) {
0x00059648 beq 0x59704 | goto label_50;
| }
| label_48:
0x0005964a str r3, [sp, 0x1c] | var_1ch = r3;
0x0005964c bl 0x11fa4 | fcn_00011fa4 (r0);
0x00059650 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00059652 b 0x595fa | goto label_11;
| label_33:
0x00059654 ldrd r1, r0, [sp, 0x18] | __asm ("ldrd r1, r0, [var_18h]");
0x00059658 bl 0xab8f8 | r0 = fcn_000ab8f8 (r0, r1);
0x0005965c mul r0, r8, r0 | r0 = r8 * r0;
0x00059660 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00059662 movs r2, 0 | r2 = 0;
0x00059664 mov r1, r2 | r1 = r2;
0x00059666 str r0, [r3, 0x18] | *((r3 + 0x18)) = r0;
0x00059668 mov r0, r3 | r0 = r3;
0x0005966a bl 0x58214 | r0 = fcn_00058214 (r0, r1, r2, r3);
0x0005966e mov sb, r0 | sb = r0;
| label_20:
0x00059670 cmp.w sb, 0 |
| if (sb != 0) {
0x00059674 bne.w 0x593ba | goto label_12;
| }
0x00059678 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0005967a ldrb r2, [r0, 8] | r2 = *((r0 + 8));
| if (r2 == 0) {
0x0005967c cbz r2, 0x5968c | goto label_51;
| }
0x0005967e mov r1, sb | r1 = sb;
0x00059680 bl 0x542bc | r0 = fcn_000542bc (r0, r1);
0x00059684 mov sb, r0 | sb = r0;
0x00059686 cmp r0, 0 |
| if (r0 != 0) {
0x00059688 bne.w 0x593ba | goto label_12;
| }
| label_51:
0x0005968c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0005968e mov.w sb, 0x65 | sb = 0x65;
0x00059692 cmp r3, 0 |
| if (r3 == 0) {
0x00059694 beq.w 0x593ce | goto label_9;
| }
| label_37:
0x00059698 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x0005969a ldrb r2, [r0, 8] | r2 = *((r0 + 8));
0x0005969c cmp r2, 2 |
| if (r2 == 2) {
0x0005969e beq 0x596ae | goto label_52;
| }
| label_14:
0x000596a0 cmp r2, 0 |
| if (r2 == 0) {
0x000596a2 beq.w 0x593c2 | goto label_13;
| }
0x000596a6 movs r1, 0 | r1 = 0;
0x000596a8 bl 0x542bc | fcn_000542bc (r0, r1);
0x000596ac b 0x593c2 | goto label_13;
| label_52:
0x000596ae movs r1, 0 | r1 = 0;
0x000596b0 bl 0x58fa4 | fcn_00058fa4 (r0, r1, r2);
0x000596b4 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000596b6 ldrb r2, [r0, 8] | r2 = *((r0 + 8));
0x000596b8 b 0x596a0 | goto label_14;
| label_46:
0x000596ba mov sb, r7 | sb = r7;
0x000596bc b 0x592f2 | goto label_7;
| label_25:
0x000596be str r2, [sp, 0x10] | var_10h = r2;
0x000596c0 mov.w sb, 5 | sb = 5;
0x000596c4 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000596c6 b 0x592dc | goto label_2;
| label_31:
0x000596c8 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
| if (r3 != 0) {
0x000596ca cbz r3, 0x596d6 |
0x000596cc ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000596ce adds r3, 1 | r3++;
0x000596d0 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000596d2 ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
| if (r3 == 0) {
0x000596d4 cbz r3, 0x5971a | goto label_53;
| }
| }
| label_17:
0x000596d6 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000596d8 movs r3, 0 | r3 = 0;
0x000596da str r3, [r0, 0x30] | *((r0 + 0x30)) = r3;
0x000596dc bl 0x548fc | fcn_000548fc (r0);
0x000596e0 ldrb r2, [r4, 9] | r2 = *((r4 + 9));
0x000596e2 mov sb, r0 | sb = r0;
| if (r2 != 0) {
0x000596e4 cbz r2, 0x596ee |
0x000596e6 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x000596e8 subs r2, 1 | r2--;
0x000596ea str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
| if (r2 == 0) {
0x000596ec cbz r2, 0x59722 | goto label_54;
| }
| }
| label_18:
0x000596ee cmp.w sb, 0x65 |
0x000596f2 it ne |
| if (sb == 0x65) {
0x000596f4 cmpne sb, 0 | __asm ("cmpne sb, 0");
| goto label_55;
| }
| if (sb != 0x65) {
| label_55:
0x000596f8 bne.w 0x593ba | goto label_12;
| }
0x000596fc ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x000596fe mov.w r8, 1 | r8 = 1;
0x00059702 b 0x59302 | goto label_15;
| label_50:
0x00059704 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x00059706 mov sb, r3 | sb = r3;
0x00059708 b 0x593ba | goto label_12;
| label_29:
0x0005970a ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0005970c movs r2, 1 | r2 = 1;
0x0005970e ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00059710 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00059712 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00059714 ldr r3, [r4] | r3 = *(r4);
0x00059716 str r2, [r5, 0xc] | *((r5 + 0xc)) = r2;
0x00059718 b 0x5947e | goto label_16;
| label_53:
0x0005971a mov r0, r4 | r0 = r4;
0x0005971c bl 0x12464 | fcn_00012464 (r0);
0x00059720 b 0x596d6 | goto label_17;
| label_54:
0x00059722 mov r0, r4 | r0 = r4;
0x00059724 bl 0x95d0 | fcn_000095d0 (r0);
0x00059728 b 0x596ee | goto label_18;
| label_28:
0x0005972a ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x0005972c ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0005972e ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00059730 ldr r3, [r4] | r3 = *(r4);
0x00059732 b 0x5947e | goto label_16;
| label_32:
0x00059734 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00059736 movs r1, 2 | r1 = 2;
0x00059738 bl 0x550d8 | r0 = fcn_000550d8 (r0, r1);
0x0005973c mov sb, r0 | sb = r0;
0x0005973e cmp r0, 0 |
| if (r0 == 0) {
0x00059740 beq.w 0x59324 | goto label_19;
| }
0x00059744 b 0x593ba | goto label_12;
| label_49:
0x00059746 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x00059748 mov sb, r3 | sb = r3;
| label_47:
0x0005974a cmp.w sb, 0 |
| if (sb != 0) {
0x0005974e bne.w 0x593ba | goto label_12;
| }
0x00059752 ldr r6, [sp, 0x20] | r6 = var_20h;
0x00059754 add r1, sp, 0x30 | r1 += var_30h;
0x00059756 ldr r3, [r6] | r3 = *(r6);
0x00059758 mov r0, r6 | r0 = r6;
0x0005975a ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0005975c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0005975e mov sb, r0 | sb = r0;
0x00059760 cmp r0, 0 |
| if (r0 != 0) {
0x00059762 bne.w 0x593ba | goto label_12;
| }
0x00059766 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x0005976a ldr r1, [sp, 0x24] | r1 = var_24h;
0x0005976c ldr r4, [sp, 0x28] | r4 = var_28h;
0x0005976e cmp r1, r2 |
0x00059770 sbcs.w r3, r4, r3 | __asm ("sbcs.w r3, r4, r3");
| if (r1 >= r2) {
0x00059774 bge 0x5978a | goto label_56;
| }
0x00059776 mov r2, r1 | r2 = r1;
0x00059778 ldr r1, [r6] | r1 = *(r6);
0x0005977a mov r3, r4 | r3 = r4;
0x0005977c mov r0, r6 | r0 = r6;
0x0005977e ldr r1, [r1, 0x10] | r1 = *((r1 + 0x10));
0x00059780 blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00059782 mov sb, r0 | sb = r0;
0x00059784 cmp r0, 0 |
| if (r0 != 0) {
0x00059786 bne.w 0x593ba | goto label_12;
| }
| label_56:
0x0005978a ldr r0, [sp, 0x14] | r0 = var_14h;
0x0005978c movs r1, 0 | r1 = 0;
0x0005978e bl 0x14f9c | r0 = fcn_00014f9c (r0, r1);
0x00059792 mov sb, r0 | sb = r0;
0x00059794 b 0x59670 | goto label_20;
| label_39:
0x00059796 blx 0x7e8c | fcn_00007e8c ();
| label_42:
0x0005979a movs r3, 1 | r3 = 1;
0x0005979c str r3, [sp, 0x10] | var_10h = r3;
0x0005979e b 0x592b8 | goto label_21;
| label_41:
0x000597a0 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000597a2 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000597a4 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000597a6 movs r3, 1 | r3 = 1;
0x000597a8 str r3, [sp, 0x10] | var_10h = r3;
0x000597aa b 0x592a4 | goto label_22;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x24498 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_bind_double () | void sqlite3_bind_double (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00024498 push.w {r4, r5, r6, r7, r8, lr} |
0x0002449c mov r5, r0 | r5 = r0;
0x0002449e mov r4, r1 | r4 = r1;
0x000244a0 vmov r6, r7, d0 | __asm ("vmov r6, r7, d0");
0x000244a4 bl 0x24350 | r0 = fcn_00024350 (r0, r1);
0x000244a8 mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x000244aa cbz r0, 0x244b2 |
0x000244ac mov r0, r8 | r0 = r8;
0x000244ae pop.w {r4, r5, r6, r7, r8, pc} |
| }
0x000244b2 add.w r1, r4, r4, lsl 2 | r1 = r4 + (r4 << 2);
0x000244b6 ldr r4, [r5, 0x64] | r4 = *((r5 + 0x64));
0x000244b8 lsls r1, r1, 3 | r1 <<= 3;
0x000244ba subs r1, 0x28 | r1 -= 0x28;
0x000244bc add r4, r1 | r4 += r1;
0x000244be ldrh r3, [r4, 8] | r3 = *((r4 + 8));
0x000244c0 and r3, r3, 0x2400 | r3 &= 0x2400;
| if (r3 != 0) {
0x000244c4 cbnz r3, 0x244f6 | goto label_2;
| }
0x000244c6 movs r3, 1 | r3 = 1;
0x000244c8 strh r3, [r4, 8] | *((r4 + 8)) = r3;
| label_1:
0x000244ca movs r3, 0 | r3 = 0;
0x000244cc mov r1, r6 | r1 = r6;
0x000244ce movt r3, 0x7ff0 | r3 = (r3 & 0xFFFF) | 0x7ff00000;
0x000244d2 bics r3, r7 | __asm ("bics r3, r7");
| if (r3 == 0) {
0x000244d4 beq 0x244ec | goto label_3;
| }
| label_0:
0x000244d6 movs r3, 8 | r3 = 8;
0x000244d8 strd r6, r7, [r4] | __asm ("strd r6, r7, [r4]");
0x000244dc strh r3, [r4, 8] | *((r4 + 8)) = r3;
| do {
0x000244de ldr r3, [r5] | r3 = *(r5);
0x000244e0 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x000244e2 blx 0x81d4 | fcn_000081d4 ();
0x000244e6 mov r0, r8 | r0 = r8;
0x000244e8 pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x000244ec ubfx r2, r7, 0, 0x14 | r2 = (r7 >> 0) & ((1 << 0x14) - 1);
0x000244f0 orrs r1, r2 | r1 |= r2;
0x000244f2 bne 0x244de |
| } while (r1 != r2);
0x000244f4 b 0x244d6 | goto label_0;
| label_2:
0x000244f6 mov r0, r4 | r0 = r4;
0x000244f8 bl 0x15b10 | fcn_00015b10 (r0);
0x000244fc b 0x244ca | 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/libsqlite3.so.0.8.6 @ 0x24500 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_bind_int64 () | void sqlite3_bind_int64 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00024500 push.w {r4, r5, r6, r7, r8, lr} |
0x00024504 mov r5, r0 | r5 = r0;
0x00024506 mov r7, r2 | r7 = r2;
0x00024508 mov r6, r3 | r6 = r3;
0x0002450a mov r4, r1 | r4 = r1;
0x0002450c bl 0x24350 | r0 = fcn_00024350 (r0, r1);
0x00024510 mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x00024512 cbz r0, 0x2451a |
0x00024514 mov r0, r8 | r0 = r8;
0x00024516 pop.w {r4, r5, r6, r7, r8, pc} |
| }
0x0002451a add.w r1, r4, r4, lsl 2 | r1 = r4 + (r4 << 2);
0x0002451e ldr r0, [r5, 0x64] | r0 = *((r5 + 0x64));
0x00024520 lsls r1, r1, 3 | r1 <<= 3;
0x00024522 subs r1, 0x28 | r1 -= 0x28;
0x00024524 add r0, r1 | r0 += r1;
0x00024526 ldrh r3, [r0, 8] | r3 = *((r0 + 8));
0x00024528 and r3, r3, 0x2400 | r3 &= 0x2400;
| if (r3 != 0) {
0x0002452c cbnz r3, 0x24544 | goto label_0;
| }
0x0002452e movs r3, 4 | r3 = 4;
0x00024530 str r7, [r0] | *(r0) = r7;
0x00024532 str r6, [r0, 4] | *((r0 + 4)) = r6;
0x00024534 strh r3, [r0, 8] | *((r0 + 8)) = r3;
| do {
0x00024536 ldr r3, [r5] | r3 = *(r5);
0x00024538 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x0002453a blx 0x81d4 | fcn_000081d4 ();
0x0002453e mov r0, r8 | r0 = r8;
0x00024540 pop.w {r4, r5, r6, r7, r8, pc} |
| label_0:
0x00024544 mov r2, r7 | r2 = r7;
0x00024546 mov r3, r6 | r3 = r6;
0x00024548 bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x0002454c b 0x24536 |
| } 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/libsqlite3.so.0.8.6 @ 0x245e8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sqlite3_bind_zeroblob () | void sqlite3_bind_zeroblob (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000245e8 push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x000245ec mov r7, r0 | r7 = r0;
0x000245ee mov r4, r1 | r4 = r1;
0x000245f0 mov r6, r2 | r6 = r2;
0x000245f2 bl 0x24350 | r0 = fcn_00024350 (r0, r1);
0x000245f6 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x000245f8 cbz r0, 0x24600 |
0x000245fa mov r0, r5 | r0 = r5;
0x000245fc pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| }
0x00024600 add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x00024604 ldr.w sb, [r7, 0x64] | sb = *((r7 + 0x64));
0x00024608 lsls r4, r4, 3 | r4 <<= 3;
0x0002460a subs r4, 0x28 | r4 -= 0x28;
0x0002460c add.w r8, sb, r4 | r8 = sb + r4;
0x00024610 ldrh.w r3, [r8, 8] | r3 = *((r8 + 8));
0x00024614 and r3, r3, 0x2400 | r3 &= 0x2400;
| if (r3 == 0) {
0x00024618 cbnz r3, 0x24620 |
0x0002461a ldr.w r3, [r8, 0x18] | r3 = *((r8 + 0x18));
| if (r3 == 0) {
0x0002461e cbz r3, 0x24626 | goto label_0;
| }
| }
0x00024620 mov r0, r8 | r0 = r8;
0x00024622 bl 0x15dfc | fcn_00015dfc (r0);
| label_0:
0x00024626 bic.w r6, r6, r6, asr 31 | r6 = BIT_MASK (r6, r6);
0x0002462a movw r2, 0x4010 | r2 = 0x4010;
0x0002462e strh.w r2, [r8, 8] | *((r8 + 8)) = r2;
0x00024632 movs r3, 0 | r3 = 0;
0x00024634 movs r2, 1 | r2 = 1;
0x00024636 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x0002463a str.w r6, [sb, r4] | __asm ("str.w r6, [sb, r4]");
0x0002463e strb.w r2, [r8, 0xa] | *((r8 + 0xa)) = r2;
0x00024642 str.w r3, [r8, 0x10] | __asm ("str.w r3, [r8, 0x10]");
0x00024646 ldr r3, [r7] | r3 = *(r7);
0x00024648 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x0002464a blx 0x81d4 | fcn_000081d4 ();
0x0002464e mov r0, r5 | r0 = r5;
0x00024650 pop.w {r3, r4, r5, r6, r7, r8, sb, 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/libsqlite3.so.0.8.6 @ 0x24654 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_bind_zeroblob64 () | void sqlite3_bind_zeroblob64 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00024654 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00024658 mov r4, r0 | r4 = r0;
0x0002465a ldr r0, [r0] | r0 = *(r0);
0x0002465c mov r7, r3 | r7 = r3;
0x0002465e mov r6, r2 | r6 = r2;
0x00024660 mov r8, r1 | r8 = r1;
0x00024662 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x00024664 blx 0x8254 | fcn_00008254 ();
0x00024668 ldr r5, [r4] | r5 = *(r4);
0x0002466a ldr r2, [r5, 0x70] | r2 = *((r5 + 0x70));
0x0002466c cmp r2, r6 |
0x0002466e asr.w r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00024672 sbcs r3, r7 | __asm ("sbcs r3, r7");
0x00024674 it lo |
| if (r2 >= r6) {
0x00024676 movlo r1, 0x12 | r1 = 0x12;
| }
0x00024678 bhs 0x24690 |
| while (r0 != 0) {
0x0002467a mov r0, r5 | r0 = r5;
0x0002467c bl 0x166c8 | fcn_000166c8 (r0, r1);
0x00024680 ldr r5, [r4] | r5 = *(r4);
0x00024682 mov r4, r0 | r4 = r0;
0x00024684 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00024686 blx 0x81d4 | fcn_000081d4 ();
0x0002468a mov r0, r4 | r0 = r4;
0x0002468c pop.w {r4, r5, r6, r7, r8, pc} |
0x00024690 mov r1, r8 | r1 = r8;
0x00024692 mov r0, r4 | r0 = r4;
0x00024694 mov r2, r6 | r2 = r6;
0x00024696 blx 0x8658 | fcn_00008658 ();
0x0002469a ldr r5, [r4] | r5 = *(r4);
0x0002469c mov r1, r0 | r1 = r0;
0x0002469e ldrb.w r3, [r5, 0x53] | r3 = *((r5 + 0x53));
0x000246a2 cmp r0, 0 |
0x000246a4 it eq |
| if (r0 == 0) {
0x000246a6 cmpeq r3, 0 | __asm ("cmpeq r3, 0");
| }
0x000246a8 itet eq |
| if (r0 != 0) {
0x000246aa moveq r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x000246ac movne r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x000246ae moveq r4, r3 | r4 = r3;
| }
0x000246b0 bne 0x2467a |
| }
0x000246b2 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x000246b4 blx 0x81d4 | fcn_000081d4 ();
0x000246b8 mov r0, r4 | r0 = r4;
0x000246ba 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/libsqlite3.so.0.8.6 @ 0x90334 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_blob_open () | void sqlite3_blob_open (int16_t arg_1h, int16_t arg_53h, int16_t arg_5bh, int16_t arg_180h, int16_t arg_188h, int16_t arg_18ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| 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;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_130h;
| int16_t var_154h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00090334 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00090338 mov fp, r0 |
0x0009033a ldr.w r4, [pc, 0x580] |
0x0009033e sub sp, 0x15c |
0x00090340 ldr.w r0, [pc, 0x57c] | r0 = *(0x908c0);
0x00090344 add r4, pc | r4 = 0x120c06;
0x00090346 ldr r0, [r4, r0] |
0x00090348 movs r4, 0 | r4 = 0;
0x0009034a ldr r0, [r0] | r0 = imp._ITM_deregisterTMCloneTable;
0x0009034c str r0, [sp, 0x154] | var_154h = r0;
0x0009034e mov.w r0, 0 | r0 = 0;
0x00090352 str r3, [sp, 0x28] | var_28h = r3;
0x00090354 ldr r3, [sp, 0x18c] | r3 = *(arg_18ch);
0x00090356 ldr.w r0, [fp, 0xc] | r0 = *(arg_18ch);
0x0009035a str r1, [sp, 0x24] | var_24h = r1;
0x0009035c str r3, [sp, 0x3c] | var_3ch = r3;
0x0009035e str r4, [r3] | *(r3) = r4;
0x00090360 add r3, sp, 0x40 | r3 += var_40h;
0x00090362 str r2, [sp, 0x1c] | var_1ch = r2;
0x00090364 str r3, [sp, 0x14] | var_14h = r3;
0x00090366 str r4, [sp, 0x40] | var_40h = r4;
0x00090368 blx 0x8254 | fcn_00008254 ();
0x0009036c mov r0, fp | r0 = fp;
0x0009036e movs r2, 0x20 | r2 = 0x20;
0x00090370 movs r3, 0 | r3 = 0;
0x00090372 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x00090376 str r0, [sp, 0xc] | var_ch = r0;
0x00090378 cmp r0, 0 |
| if (r0 == 0) {
0x0009037a beq.w 0x90858 | goto label_27;
| }
0x0009037e mov r1, r4 | r1 = r4;
0x00090380 movs r2, 0x20 | r2 = 0x20;
0x00090382 blx 0x8264 | fcn_00008264 ();
0x00090386 mov.w r3, 0x8000 | r3 = fcn.00008000;
0x0009038a movs r2, 1 | r2 = 1;
0x0009038c movt r3, 0xffff | r3 = (r3 & 0xFFFF) | 0xffff0000;
0x00090390 mov r1, r4 | r1 = r4;
0x00090392 lsl.w r3, r2, r3 | r3 = r2 << r3;
0x00090396 ldr.w r8, [pc, 0x52c] | r8 = *(0x000908c4);
0x0009039a str r4, [sp, 0x20] | var_20h = r4;
0x0009039c mov r7, fp | r7 = fp;
0x0009039e str r3, [sp, 0x38] | var_38h = r3;
0x000903a0 ldr r3, [sp, 0x188] | r3 = *(arg_188h);
0x000903a2 add r8, pc | r8 += pc;
0x000903a4 ldr.w r4, [pc, 0x520] |
0x000903a8 str r1, [sp, 0x18] | var_18h = r1;
0x000903aa subs r3, r3, r1 | r3 -= r1;
0x000903ac it ne |
| if (r3 == r3) {
0x000903ae movne r3, 1 | r3 = 1;
| }
0x000903b0 add r4, pc | r4 = 0x120c7c;
0x000903b2 str r3, [sp, 0x30] | var_30h = r3;
0x000903b4 add r3, sp, 0x44 | r3 += var_44h;
0x000903b6 str r3, [sp, 0x10] | var_10h = r3;
| label_2:
0x000903b8 ldr r5, [sp, 0x10] | r5 = var_10h;
0x000903ba movs r1, 0 | r1 = 0;
0x000903bc mov.w r2, 0x110 | r2 = 0x110;
0x000903c0 mov r0, r5 | r0 = r5;
0x000903c2 blx 0x8264 | fcn_00008264 ();
0x000903c6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000903c8 str r7, [r5] | *(r5) = r7;
0x000903ca ldr r1, [r3] | r1 = *(r3);
| if (r1 != 0) {
0x000903cc cbz r1, 0x903d4 |
0x000903ce mov r0, r7 | r0 = r7;
0x000903d0 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x000903d4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000903d6 movs r2, 0 | r2 = 0;
0x000903d8 str r2, [r3] | *(r3) = r2;
0x000903da ldrb.w r3, [r7, 0x5b] | r3 = *((r7 + 0x5b));
0x000903de cmp r3, 0 |
| if (r3 == 0) {
0x000903e0 beq.w 0x90708 | goto label_28;
| }
| label_8:
0x000903e4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000903e6 movs r1, 0 | r1 = 0;
0x000903e8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000903ea ldr r0, [sp, 0x10] | r0 = var_10h;
0x000903ec bl 0x894a4 | fcn_000894a4 (r0, r1, r2, r3, r4, r5, r6);
0x000903f0 str r0, [sp, 8] | var_8h = r0;
0x000903f2 cmp r0, 0 |
| if (r0 == 0) {
0x000903f4 beq.w 0x90724 | goto label_29;
| }
0x000903f8 ldr r6, [r0, 0x38] | r6 = *((r0 + 0x38));
0x000903fa cmp r6, 0 |
| if (r6 != 0) {
0x000903fc bne.w 0x9075a | goto label_30;
| }
0x00090400 ldr r3, [sp, 8] | r3 = var_8h;
0x00090402 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x00090404 ands ip, r3, 0x80 |
| if (ip != r3) {
0x00090408 bne.w 0x907dc | goto label_31;
| }
0x0009040c ldr r3, [sp, 8] | r3 = var_8h;
0x0009040e ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00090410 cmp r0, 0 |
| if (r0 != 0) {
0x00090412 bne.w 0x90890 | goto label_32;
| }
0x00090416 ldrd r3, r2, [sp, 8] | __asm ("ldrd r3, r2, [var_ch]");
0x0009041a ldr r1, [r3, 0x48] | r1 = *((r3 + 0x48));
0x0009041c str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
0x0009041e ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x00090420 cmp r1, 0 |
| if (r1 == 0) {
0x00090422 beq.w 0x9088a | goto label_33;
| }
0x00090426 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00090428 cmp r1, r3 |
| if (r1 == r3) {
0x0009042a beq 0x9043c | goto label_20;
| }
0x0009042c add.w r5, r2, 0x10 | r5 = r2 + 0x10;
| do {
0x00090430 mov r2, r5 | r2 = r5;
0x00090432 adds r5, 0x10 | r5 += 0x10;
0x00090434 ldr r3, [r5, -0x4] | r3 = *((r5 - 0x4));
0x00090438 cmp r1, r3 |
0x0009043a bne 0x90430 |
| } while (r1 != r3);
| label_20:
0x0009043c ldr r3, [r2] | r3 = *(r2);
0x0009043e ldr r2, [sp, 0xc] | r2 = var_ch;
0x00090440 str r3, [r2, 0x18] | *((r2 + 0x18)) = r3;
0x00090442 ldr r3, [sp, 8] | r3 = var_8h;
0x00090444 ldrsh.w lr, [r3, 0x2a] |
0x00090448 cmp.w lr, 0 |
| if (lr <= 0) {
0x0009044c ble.w 0x906a6 | goto label_34;
| }
0x00090450 ldr.w sl, [r3, 4] | sl = *((r3 + 4));
0x00090454 movs r5, 0 | r5 = 0;
0x00090456 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00090458 add.w sb, r3, -1 | sb = r3 + -1;
| label_0:
0x0009045c ldr.w r3, [sl, ip, lsl 2] | offset_0 = ip << 2;
| r3 = *((sl + offset_0));
0x00090460 mov r1, sb | r1 = sb;
0x00090462 add.w fp, r3, -1 |
| do {
| label_1:
0x00090466 ldrb r3, [fp, 1]! | r3 = *(arg_1h);
0x0009046a ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x0009046e cmp r3, r2 |
| if (r3 == r2) {
0x00090470 beq 0x9054e | goto label_35;
| }
0x00090472 add r3, r4 | r3 += r4;
0x00090474 add r2, r4 | r2 += r4;
0x00090476 ldrb.w r3, [r3, 0x140] | r3 = *((r3 + 0x140));
0x0009047a ldrb.w r2, [r2, 0x140] | r2 = *((r2 + 0x140));
0x0009047e cmp r3, r2 |
0x00090480 beq 0x90466 |
| } while (r3 == r2);
0x00090482 adds r5, 1 | r5++;
0x00090484 add.w ip, ip, 5 |
0x00090488 cmp r5, lr |
| if (r5 != lr) {
0x0009048a bne 0x9045c | goto label_0;
| }
| label_4:
0x0009048c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009048e mov fp, r7 |
0x00090490 ldr r1, [r3] | r1 = *(r3);
| if (r1 != 0) {
0x00090492 cbz r1, 0x9049a |
0x00090494 mov r0, r7 | r0 = r7;
0x00090496 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0009049a ldr.w r1, [pc, 0x430] |
0x0009049e ldr r2, [sp, 0x28] | r2 = var_28h;
0x000904a0 add r1, pc | r1 = 0x120d72;
| label_7:
0x000904a2 mov r0, fp | r0 = fp;
0x000904a4 bl 0x2677c | fcn_0002677c (r0);
0x000904a8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000904aa str r0, [r3] | *(r3) = r0;
0x000904ac ldrb.w r3, [fp, 0x5b] | r3 = *(arg_5bh);
0x000904b0 cmp r3, 0 |
| if (r3 == 0) {
0x000904b2 beq.w 0x9074e | goto label_36;
| }
| label_11:
0x000904b6 movs r4, 1 | r4 = 1;
0x000904b8 mov r5, r4 | r5 = r4;
| label_3:
0x000904ba ldr r3, [sp, 0xc] | r3 = var_ch;
0x000904bc ldr r6, [r3, 0x10] | r6 = *((r3 + 0x10));
| if (r6 != 0) {
0x000904be cbz r6, 0x904e2 |
0x000904c0 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x000904c2 movw r1, 0xda3 |
0x000904c6 movw r3, 0x2973 |
0x000904c8 asrs r3, r6, 0xd | r3 = r6 >> 0xd;
0x000904ca movt r1, 0x2df2 | r1 = 0x2df20da3;
0x000904ce movt r3, 0x319c | r3 = 0x319c2973;
0x000904d2 cmp r2, r3 |
0x000904d4 it ne |
| if (r2 != r3) {
0x000904d6 cmpne r2, r1 | __asm ("cmpne r2, r1");
| }
| if (r2 == r3) {
0x000904d8 beq.w 0x90882 | goto label_37;
| }
| label_19:
0x000904dc mov r0, r6 | r0 = r6;
0x000904de bl 0x1a984 | fcn_0001a984 (r0);
| }
0x000904e2 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000904e4 mov r0, fp | r0 = fp;
0x000904e6 bl 0x159dc | fcn_000159dc (r0, r1);
| label_18:
0x000904ea ldr r3, [sp, 0x14] | r3 = var_14h;
0x000904ec ldr r3, [r3] | r3 = *(r3);
0x000904ee mov r2, r3 | r2 = r3;
| if (r3 != 0) {
0x000904f0 cbz r3, 0x904f6 |
0x000904f2 ldr r2, [pc, 0x3dc] |
0x000904f4 add r2, pc | r2 = 0x120dca;
| }
0x000904f6 mov r1, r5 | r1 = r5;
0x000904f8 mov r0, fp | r0 = fp;
0x000904fa bl 0x27824 | fcn_00027824 (r0, r1);
0x000904fe ldr r3, [sp, 0x14] | r3 = var_14h;
0x00090500 ldr r1, [r3] | r1 = *(r3);
| if (r1 != 0) {
0x00090502 cbz r1, 0x9050a |
0x00090504 mov r0, fp | r0 = fp;
0x00090506 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0009050a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0009050c bl 0x18c9c | fcn_00018c9c (r0);
0x00090510 ldrb.w r3, [fp, 0x53] | r3 = *(arg_53h);
0x00090514 cmp r3, 0 |
0x00090516 it ne |
| if (r3 == 0) {
0x00090518 orrne r4, r4, 1 | r4 |= 1;
| }
| if (r4 != 0) {
0x0009051c cbz r4, 0x90528 |
0x0009051e mov r1, r5 | r1 = r5;
0x00090520 mov r0, fp | r0 = fp;
0x00090522 bl 0x166c8 | r0 = fcn_000166c8 (r0, r1);
0x00090526 mov r4, r0 | r4 = r0;
| }
0x00090528 ldr.w r0, [fp, 0xc] | r0 = *(arg_18ch);
0x0009052c blx 0x81d4 | fcn_000081d4 ();
0x00090530 ldr r2, [pc, 0x3a0] |
0x00090532 ldr r3, [pc, 0x38c] | r3 = *(0x908c2);
0x00090534 add r2, pc | r2 = 0x120e0c;
0x00090536 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00090538 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x0009053a ldr r3, [sp, 0x154] | r3 = var_154h;
0x0009053c eors r2, r3 | r2 ^= r3;
0x0009053e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00090542 bne.w 0x908b8 | goto label_38;
| }
0x00090546 mov r0, r4 | r0 = r4;
0x00090548 add sp, 0x15c |
0x0009054a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_35:
0x0009054e cmp r3, 0 |
| if (r3 != 0) {
0x00090550 bne 0x90466 | goto label_1;
| }
0x00090552 ldr r3, [sp, 0x188] | r3 = *(arg_188h);
0x00090554 cmp r3, 0 |
| if (r3 != 0) {
0x00090556 bne.w 0x906b4 | goto label_39;
| }
| label_5:
0x0009055a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0009055c bl 0x2ae64 | fcn_0002ae64 (r0, r1);
0x00090560 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00090562 mov sb, r0 | sb = r0;
0x00090564 str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x00090566 cmp r0, 0 |
| if (r0 == 0) {
0x00090568 beq 0x90646 | goto label_13;
| }
0x0009056a ldr r3, [sp, 8] | r3 = var_8h;
0x0009056c ldr r1, [r3, 0x48] | r1 = *((r3 + 0x48));
0x0009056e cmp r1, 0 |
| if (r1 == 0) {
0x00090570 beq.w 0x908aa | goto label_40;
| }
0x00090574 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00090576 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00090578 cmp r1, r2 |
| if (r1 == r2) {
0x0009057a beq.w 0x90852 | goto label_41;
| }
| do {
0x0009057e ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x00090580 adds r3, 0x10 | r3 += 0x10;
0x00090582 adds r6, 1 | r6++;
0x00090584 cmp r1, r2 |
0x00090586 bne 0x9057e |
| } while (r1 != r2);
0x00090588 movs r3, 1 | r3 = 1;
0x0009058a lsl.w fp, r3, r6 |
| label_17:
0x0009058e ldrd r3, r2, [sb, 0x6c] | __asm ("ldrd r3, r2, [sb, 0x6c]");
0x00090592 ldrd lr, r1, [r1] | __asm ("ldrd lr, r1, [r1]");
0x00090596 cmp r3, r2 |
0x00090598 str r1, [sp, 0x2c] | var_2ch = r1;
| if (r3 >= r2) {
0x0009059a bge.w 0x907ec | goto label_42;
| }
0x0009059e ldr.w ip, [sb, 0x68] | ip = *((sb + 0x68));
0x000905a2 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x000905a6 adds r2, r3, 1 | r2 = r3 + 1;
0x000905a8 str r1, [sp, 0x34] | var_34h = r1;
0x000905aa mov.w sl, 2 | sl = 2;
0x000905ae str.w r2, [sb, 0x6c] | __asm ("str.w r2, [sb, 0x6c]");
0x000905b2 add.w r0, ip, r1, lsl 2 | r0 = ip + (r1 << 2);
0x000905b6 ldr r1, [sp, 0x30] | r1 = var_30h;
0x000905b8 str.w lr, [r0, 0xc] | __asm ("str.w lr, [r0, 0xc]");
0x000905bc str r1, [r0, 8] | *((r0 + 8)) = r1;
0x000905be movs r1, 0 | r1 = 0;
0x000905c0 str r1, [r0, 0x10] | *((r0 + 0x10)) = r1;
0x000905c2 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000905c4 str r6, [r0, 4] | *((r0 + 4)) = r6;
0x000905c6 str.w sl, [ip, r1, lsl 2] | __asm ("str.w sl, [ip, r1, lsl 2]");
| label_14:
0x000905ca ldr.w r1, [sb] | r1 = *(sb);
0x000905ce ldrb.w r1, [r1, 0x53] | r1 = *((r1 + 0x53));
| if (r1 == 0) {
0x000905d2 cbnz r1, 0x905e8 |
0x000905d4 ldr.w r1, [sb, 0x68] | r1 = *((sb + 0x68));
0x000905d8 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x000905dc add.w r3, r1, r3, lsl 2 | r3 = r1 + (r3 << 2);
0x000905e0 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000905e2 str r1, [r3, 0x10] | *((r3 + 0x10)) = r1;
0x000905e4 movs r1, 0xfd | r1 = 0xfd;
0x000905e6 strb r1, [r3, 1] | *((r3 + 1)) = r1;
| }
0x000905e8 cmp r2, 0 |
| if (r2 > 0) {
0x000905ea ble 0x905fe |
0x000905ec ldr.w r3, [sb, 0x68] | r3 = *((sb + 0x68));
0x000905f0 add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x000905f4 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x000905f8 movs r2, 1 | r2 = 1;
0x000905fa strh r2, [r3, -0x12] | *((r3 - 0x12)) = r2;
| }
0x000905fe ldr r2, [pc, 0x2d8] |
0x00090600 movs r1, 6 | r1 = 6;
0x00090602 mov r0, sb | r0 = sb;
0x00090604 add r2, pc | r2 = 0x120ee2;
0x00090606 addw r2, r2, 0xa08 | __asm ("addw r2, r2, aav.0x000000ff");
0x0009060a bl 0x1b57c | fcn_0001b57c (r0, r1, r2);
0x0009060e ldr.w r3, [sb, 0x98] | r3 = *((sb + 0x98));
0x00090612 cmp r6, 1 |
0x00090614 mov sl, r0 | sl = r0;
0x00090616 orr.w r3, r3, fp | r3 |= fp;
0x0009061a str.w r3, [sb, 0x98] | __asm ("str.w r3, [sb, 0x98]");
| if (r6 != 1) {
0x0009061e beq 0x9063c |
0x00090620 ldr.w r3, [sb] | r3 = *(sb);
0x00090624 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00090626 add.w r3, r3, r6, lsl 4 | r3 += (r6 << 4);
0x0009062a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0009062c ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 == 0) {
0x0009062e cbz r3, 0x9063c | goto label_43;
| }
0x00090630 ldr.w r3, [sb, 0x9c] | r3 = *((sb + 0x9c));
0x00090634 orr.w r3, r3, fp | r3 |= fp;
0x00090638 str.w r3, [sb, 0x9c] | __asm ("str.w r3, [sb, 0x9c]");
| }
| label_43:
0x0009063c ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x00090640 cmp r3, 0 |
| if (r3 == 0) {
0x00090642 beq.w 0x9076a | goto label_44;
| }
| label_13:
0x00090646 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00090648 strh r5, [r3, 8] | *((r3 + 8)) = r5;
0x0009064a str r7, [r3, 0x14] | *((r3 + 0x14)) = r7;
0x0009064c ldrb.w r3, [r7, 0x5b] | r3 = *((r7 + 0x5b));
0x00090650 cmp r3, 0 |
| if (r3 == 0) {
0x00090652 beq 0x90710 | goto label_45;
| }
0x00090654 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x00090658 cmp r3, 0 |
| if (r3 != 0) {
0x0009065a bne 0x9071e | goto label_46;
| }
| label_9:
0x0009065c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0009065e ldr r5, [sp, 0x18] | r5 = var_18h;
0x00090660 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00090662 str r3, [sp] | *(sp) = r3;
0x00090664 movs r3, 0x11 | r3 = 0x11;
0x00090666 adds r5, 1 | r5++;
0x00090668 str r3, [sp, 0x20] | var_20h = r3;
0x0009066a ldrd r2, r3, [sp, 0x180] | __asm ("ldrd r2, r3, [arg_180h]");
0x0009066e str r5, [sp, 0x18] | var_18h = r5;
0x00090670 bl 0x88cdc | r0 = fcn_00088cdc (r0, r1, r2, r3);
0x00090674 sub.w r3, r0, 0x11 | r3 = r0 - 0x11;
0x00090678 cmp r5, 0x32 |
0x0009067a clz r3, r3 | r3 &= r3;
0x0009067e lsr.w r3, r3, 5 | r3 >>= 5;
0x00090682 it eq |
| if (r5 != 0x32) {
0x00090684 moveq r3, 0 | r3 = 0;
| }
0x00090686 cmp r3, 0 |
| if (r3 != 0) {
0x00090688 bne.w 0x903b8 | goto label_2;
| }
0x0009068c mov r5, r0 | r5 = r0;
0x0009068e mov fp, r7 |
| label_10:
0x00090690 movs r4, 1 | r4 = 1;
0x00090692 cmp r5, 0 |
| if (r5 != 0) {
0x00090694 bne.w 0x904ba | goto label_3;
| }
0x00090698 ldrb.w r3, [fp, 0x53] | r3 = *(arg_53h);
0x0009069c cmp r3, 0 |
| if (r3 == 0) {
0x0009069e beq.w 0x90876 | goto label_47;
| }
0x000906a2 mov r4, r5 | r4 = r5;
0x000906a4 b 0x904ba | goto label_3;
| if (r3 == 0) {
| label_34:
0x000906a6 beq.w 0x9048c | goto label_4;
| }
0x000906aa ldr r3, [sp, 0x188] | r3 = *(arg_188h);
0x000906ac movs r5, 0 | r5 = 0;
0x000906ae cmp r3, 0 |
| if (r3 == 0) {
0x000906b0 beq.w 0x9055a | goto label_5;
| }
| label_39:
0x000906b4 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x000906b6 ldr r2, [sp, 8] | r2 = var_8h;
0x000906b8 lsls r3, r3, 0x11 | r3 <<= 0x11;
0x000906ba ldr r1, [r2, 8] | r1 = *((r2 + 8));
| if (r3 < r3) {
0x000906bc bmi.w 0x90804 | goto label_48;
| }
0x000906c0 cmp r1, 0 |
| if (r1 == 0) {
0x000906c2 beq.w 0x9055a | goto label_5;
| }
| label_6:
0x000906c6 ldrh r2, [r1, 0x32] | r2 = *((r1 + 0x32));
| if (r2 == 0) {
0x000906c8 cbz r2, 0x906e4 | goto label_49;
| }
0x000906ca ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000906cc add.w ip, r3, r2, lsl 1 |
| do {
0x000906d0 ldrsh r2, [r3], 2 | r2 = *(r3);
| r3 += 2;
0x000906d4 cmn.w r2, 2 |
0x000906d8 it ne |
| if (r2 != 2) {
0x000906da cmpne r2, r5 | __asm ("cmpne r2, r5");
| }
0x000906dc it eq |
| if (r2 != 2) {
0x000906de moveq r0, r8 | r0 = r8;
| }
0x000906e0 cmp ip, r3 |
0x000906e2 bne 0x906d0 |
| } while (ip != r3);
| label_49:
0x000906e4 ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x000906e6 cmp r1, 0 |
| if (r1 != 0) {
0x000906e8 bne 0x906c6 | goto label_6;
| }
0x000906ea cmp r0, 0 |
| if (r0 == 0) {
0x000906ec beq.w 0x9055a | goto label_5;
| }
| label_16:
0x000906f0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000906f2 mov fp, r7 |
0x000906f4 mov r7, r0 | r7 = r0;
0x000906f6 ldr r1, [r3] | r1 = *(r3);
| if (r1 != 0) {
0x000906f8 cbz r1, 0x90700 |
0x000906fa mov r0, fp | r0 = fp;
0x000906fc bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00090700 ldr r1, [pc, 0x1d8] |
0x00090702 mov r2, r7 | r2 = r7;
0x00090704 add r1, pc | r1 = 0x120fe4;
0x00090706 b 0x904a2 | goto label_7;
| label_28:
0x00090708 mov r0, r7 | r0 = r7;
0x0009070a bl 0x16588 | fcn_00016588 (r0);
0x0009070e b 0x903e4 | goto label_8;
| label_45:
0x00090710 mov r0, r7 | r0 = r7;
0x00090712 bl 0x1536c | fcn_0001536c (r0);
0x00090716 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x0009071a cmp r3, 0 |
| if (r3 == 0) {
0x0009071c beq 0x9065c | goto label_9;
| }
| label_46:
0x0009071e ldr r5, [sp, 0x20] | r5 = var_20h;
0x00090720 mov fp, r7 |
0x00090722 b 0x90690 | goto label_10;
| label_29:
0x00090724 mov fp, r7 |
| label_12:
0x00090726 ldr r4, [sp, 0x10] | r4 = var_10h;
0x00090728 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r3 != 0) {
0x0009072a cbz r3, 0x90744 |
0x0009072c ldr r2, [sp, 0x14] | r2 = var_14h;
0x0009072e ldr r1, [r2] | r1 = *(r2);
| if (r1 != 0) {
0x00090730 cbz r1, 0x9073a |
0x00090732 mov r0, fp | r0 = fp;
0x00090734 bl 0x159dc | fcn_000159dc (r0, r1);
0x00090738 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| }
0x0009073a ldr r2, [sp, 0x14] | r2 = var_14h;
0x0009073c str r3, [r2] | *(r2) = r3;
0x0009073e movs r3, 0 | r3 = 0;
0x00090740 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00090742 str r3, [r2, 4] | *((r2 + 4)) = r3;
| }
0x00090744 ldrb.w r3, [fp, 0x5b] | r3 = *(arg_5bh);
0x00090748 cmp r3, 0 |
| if (r3 != 0) {
0x0009074a bne.w 0x904b6 | goto label_11;
| }
| label_36:
0x0009074e mov r0, fp | r0 = fp;
0x00090750 movs r4, 1 | r4 = 1;
0x00090752 mov r5, r4 | r5 = r4;
0x00090754 bl 0x1536c | fcn_0001536c (r0);
0x00090758 b 0x904ba | goto label_3;
| label_30:
0x0009075a ldr r1, [pc, 0x184] |
0x0009075c mov fp, r7 |
0x0009075e ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00090760 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00090762 add r1, pc | r1 = 0x121048;
0x00090764 bl 0x25778 | fcn_00025778 (r0);
0x00090768 b 0x90726 | goto label_12;
| label_44:
0x0009076a ldr r2, [sp, 8] | r2 = var_8h;
0x0009076c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0009076e str.w r6, [sl, 4] | __asm ("str.w r6, [sl, 4]");
0x00090772 ldr r1, [r2, 0x1c] | r1 = *((r2 + 0x1c));
0x00090774 ldr r2, [r2] | r2 = *(r2);
0x00090776 strd r1, r3, [sl, 8] | __asm ("strd r1, r3, [sl, 8]");
0x0009077a ldr.w r3, [sb] | r3 = *(sb);
0x0009077c adds r0, 0 | r0 += 0;
0x0009077e ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
| if (r3 != 0) {
0x00090782 cbnz r3, 0x9079e | goto label_50;
| }
0x00090784 ldr.w r1, [sb, 0x68] | r1 = *((sb + 0x68));
0x00090788 mov r0, sb | r0 = sb;
0x0009078a adds r1, 0x28 | r1 += 0x28;
0x0009078c bl 0x1bdb4 | fcn_0001bdb4 (r0, r1, r2, r3);
0x00090790 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x00090794 cmp r3, 0 |
| if (r3 != 0) {
0x00090796 bne.w 0x90646 | goto label_13;
| }
0x0009079a ldr r2, [sp, 8] | r2 = var_8h;
0x0009079c ldr r1, [r2, 0x1c] | r1 = *((r2 + 0x1c));
| label_50:
0x0009079e ldr r3, [sp, 0x188] | r3 = *(arg_188h);
| if (r3 != 0) {
0x000907a0 cbz r3, 0x907a8 |
0x000907a2 movs r3, 0x63 | r3 = 0x63;
0x000907a4 strb.w r3, [sl, 0x14] | *((sl + 0x14)) = r3;
| }
0x000907a8 movs r3, 0xfd | r3 = 0xfd;
0x000907aa ldr r2, [sp, 0x10] | r2 = var_10h;
0x000907ac strb.w r3, [sl, 0x15] | *((sl + 0x15)) = r3;
0x000907b0 mov r0, sb | r0 = sb;
0x000907b2 ldr r3, [sp, 8] | r3 = var_8h;
0x000907b4 strd r1, r6, [sl, 0x1c] | __asm ("strd r1, r6, [sl, 0x1c]");
0x000907b8 mov r1, r2 | r1 = r2;
0x000907ba ldrsh.w r3, [r3, 0x2a] | r3 = *((r3 + 0x2a));
0x000907be str.w r3, [sl, 0x44] | __asm ("str.w r3, [sl, 0x44]");
0x000907c2 adds r3, 1 | r3++;
0x000907c4 str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x000907c8 mov.w r3, 0 | r3 = 0;
0x000907cc strh.w r3, [r2, 0xc4] | *((r2 + 0xc4)) = r3;
0x000907d0 movs r3, 1 | r3 = 1;
0x000907d2 strd r3, r3, [r2, 0x28] | __asm ("strd r3, r3, [r2, 0x28]");
0x000907d6 bl 0x290a0 | fcn_000290a0 (r0, r1);
0x000907da b 0x90646 | goto label_13;
| label_31:
0x000907dc ldr r1, [pc, 0x104] |
0x000907de mov fp, r7 |
0x000907e0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000907e2 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000907e4 add r1, pc | r1 = 0x1210cc;
0x000907e6 bl 0x25778 | fcn_00025778 (r0);
0x000907ea b 0x90726 | goto label_12;
| label_42:
0x000907ec ldr r3, [sp, 0x30] | r3 = var_30h;
0x000907ee mov r2, r6 | r2 = r6;
0x000907f0 movs r1, 2 | r1 = 2;
0x000907f2 mov r0, sb | r0 = sb;
0x000907f4 str.w lr, [sp] | __asm ("str.w lr, [sp]");
0x000907f8 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x000907fc ldr.w r2, [sb, 0x6c] | r2 = *((sb + 0x6c));
0x00090800 mov r3, r0 | r3 = r0;
0x00090802 b 0x905ca | goto label_14;
| label_48:
0x00090804 ldr.w sl, [r2, 0x10] | sl = *((r2 + 0x10));
0x00090808 cmp.w sl, 0 |
| if (sl == 0) {
0x0009080c beq 0x908a0 | goto label_51;
| }
0x0009080e ldr.w sb, [pc, 0xd8] | sb = *(0x000908e8);
0x00090812 mov r3, r4 | r3 = r4;
0x00090814 mov lr, r1 | lr = r1;
0x00090816 mov r4, sl | r4 = sl;
0x00090818 mov sl, r3 | sl = r3;
0x0009081a add sb, pc | sb += pc;
| label_15:
0x0009081c ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x0009081e cmp r1, 0 |
0x00090820 itt gt |
| if (r1 <= 0) {
0x00090822 movgt r3, 0 | r3 = 0;
| }
| if (r1 <= 0) {
0x00090824 addgt ip, r4, 0x24 |
| }
| if (r1 <= 0) {
0x00090828 ble 0x9083a | goto label_52;
| }
| do {
0x0009082a ldr.w r2, [ip, r3, lsl 3] | offset_1 = r3 << 3;
| r2 = *((ip + offset_1));
0x0009082e adds r3, 1 | r3++;
0x00090830 cmp r2, r5 |
0x00090832 it eq |
| if (r2 != r5) {
0x00090834 moveq r0, sb | r0 = sb;
| }
0x00090836 cmp r3, r1 |
0x00090838 bne 0x9082a |
| } while (r3 != r1);
| label_52:
0x0009083a ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x0009083c cmp r4, 0 |
| if (r4 != 0) {
0x0009083e bne 0x9081c | goto label_15;
| }
0x00090840 mov r1, lr | r1 = lr;
0x00090842 mov r4, sl | r4 = sl;
0x00090844 cmp r1, 0 |
| if (r1 != 0) {
0x00090846 bne.w 0x906c6 | goto label_6;
| }
0x0009084a cmp r0, 0 |
| if (r0 == 0) {
0x0009084c beq.w 0x9055a | goto label_5;
| }
0x00090850 b 0x906f0 | goto label_16;
| label_41:
0x00090852 mov.w fp, 1 |
0x00090856 b 0x9058e | goto label_17;
| label_27:
0x00090858 ldr r4, [sp, 0xc] | r4 = var_ch;
0x0009085a add r3, sp, 0x44 | r3 += var_44h;
0x0009085c mov r0, r3 | r0 = r3;
0x0009085e mov.w r2, 0x110 | r2 = 0x110;
0x00090862 str r3, [sp, 0x10] | var_10h = r3;
0x00090864 mov r1, r4 | r1 = r4;
0x00090866 mov r5, r4 | r5 = r4;
0x00090868 blx 0x8264 | fcn_00008264 ();
0x0009086c ldrb.w r3, [fp, 0x53] | r3 = *(arg_53h);
0x00090870 cmp r3, 0 |
| if (r3 != 0) {
0x00090872 bne.w 0x904ea | goto label_18;
| }
| label_47:
0x00090876 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00090878 movs r4, 0 | r4 = 0;
0x0009087a ldr r2, [sp, 0xc] | r2 = var_ch;
0x0009087c mov r5, r4 | r5 = r4;
0x0009087e str r2, [r3] | *(r3) = r2;
0x00090880 b 0x904ea | goto label_18;
| label_37:
0x00090882 mov r0, r6 | r0 = r6;
0x00090884 bl 0x5a870 | fcn_0005a870 (r0);
0x00090888 b 0x904dc | goto label_19;
| label_33:
0x0009088a sub.w r2, r2, 0x80000 | r2 -= 0x80000;
0x0009088e b 0x9043c | goto label_20;
| label_32:
0x00090890 ldr r1, [pc, 0x58] |
0x00090892 mov fp, r7 |
0x00090894 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00090896 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00090898 add r1, pc | r1 = 0x121188;
0x0009089a bl 0x25778 | fcn_00025778 (r0);
0x0009089e b 0x90726 | goto label_12;
| label_51:
0x000908a0 mov r0, sl | r0 = sl;
0x000908a2 cmp r1, 0 |
| if (r1 != 0) {
0x000908a4 bne.w 0x906c6 | goto label_6;
| }
0x000908a8 b 0x9055a | goto label_5;
| label_40:
0x000908aa mov.w r6, 0x8000 | r6 = fcn.00008000;
0x000908ae ldr.w fp, [sp, 0x38] | fp = var_38h;
0x000908b2 movt r6, 0xffff | r6 = (r6 & 0xFFFF) | 0xffff0000;
0x000908b6 b 0x9058e | goto label_17;
| label_38:
0x000908b8 blx 0x7e8c | fcn_00007e8c ();
| if (r1 >= 0) {
0x000908bc bls 0x90958 |
0x000908be movs r3, r0 | r3 = r0;
0x000908c0 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000908c2 movs r0, r0 |
0x000908c4 movs r2, 0xae | r2 = 0xae;
0x000908c6 movs r2, r0 | r2 = r0;
0x000908c8 ldr r5, [pc, 0x1f0] | r5 = *(0x90abc);
0x000908ca movs r2, r0 | r2 = r0;
0x000908cc invalid |
| label_25:
0x0009094e mov r0, r8 | r0 = r8;
0x00090950 add sp, 0x14 |
0x00090952 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
0x00090958 str r0, [sp, 0x130] | var_130h = r0;
0x0009095a cmp.w sb, 0 |
| if (sb == 0) {
0x0009095e beq 0x909c8 | goto label_53;
| }
0x00090960 movs r3, 0 | r3 = 0;
0x00090962 mov r2, r4 | r2 = r4;
0x00090964 str r3, [r6, 0x4c] | *((r6 + 0x4c)) = r3;
0x00090966 mov r0, sb | r0 = sb;
0x00090968 mov r3, r5 | r3 = r5;
0x0009096a blx 0x8130 | fcn_00008130 ();
0x0009096e str.w sb, [r6, 0x4c] | __asm ("str.w sb, [r6, 0x4c]");
0x00090972 mov r8, r0 | r8 = r0;
0x00090974 cmp r0, 0 |
| if (r0 != 0) {
0x00090976 bne 0x90a56 | goto label_54;
| }
| label_21:
0x00090978 ldr.w r8, [r6, 0x10] | r8 = *((r6 + 0x10));
0x0009097c mov r0, sb | r0 = sb;
0x0009097e blx 0x82f4 | r0 = fcn_000082f4 ();
0x00090982 cmp r8, r0 |
| if (r8 == r0) {
0x00090984 beq 0x90a70 | goto label_55;
| }
| do {
0x00090986 mov.w sb, 0 | sb = 0;
0x0009098a movw r8, 0x10b | r8 = 0x10b;
| label_26:
0x0009098e ldr r3, [sp, 0x34] | r3 = var_34h;
0x00090990 mov r0, r8 | r0 = r8;
0x00090992 str.w sb, [r3] | __asm ("str.w sb, [r3]");
0x00090996 add sp, 0x14 |
0x00090998 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_23:
0x000909b6 mov r0, sb | r0 = sb;
0x000909b8 str r3, [r6, 0x4c] | *((r6 + 0x4c)) = r3;
0x000909ba blx 0x8300 | fcn_00008300 ();
0x000909be cmp.w r8, 7 |
| if (r8 == 7) {
0x000909c2 beq 0x90a6a | goto label_56;
| }
0x000909c4 ldr r0, [r6, 0x4c] | r0 = *((r6 + 0x4c));
| if (r0 == 0) {
0x000909c6 cbnz r0, 0x90a06 |
| label_53:
0x000909c8 ldr r0, [pc, 0x164] |
0x000909ca ldr r1, [r6, 0x24] | r1 = *((r6 + 0x24));
0x000909cc add r0, pc | r0 = 0x121500;
0x000909ce blx 0x852c | r0 = strncmp (r0, r1, r2);
0x000909d2 mov sb, r0 | sb = r0;
0x000909d4 cmp r0, 0 |
| if (r0 == 0) {
0x000909d6 beq 0x90a6a | goto label_56;
| }
0x000909d8 add.w r3, r6, 0x4c | r3 = r6 + 0x4c;
0x000909dc strd r4, r5, [sp] | __asm ("strd r4, r5, [sp]");
0x000909e0 str r3, [sp, 0xc] | var_ch = r3;
0x000909e2 movs r3, 0 | r3 = 0;
0x000909e4 str r3, [sp, 8] | var_8h = r3;
0x000909e6 mov r2, sb | r2 = sb;
0x000909e8 ldr r3, [pc, 0x148] |
0x000909ea ldr r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x000909ec ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x000909ee add r3, pc | r3 = 0x121526;
0x000909f0 blx 0x7dd8 | r0 = fcn_00007dd8 ();
0x000909f4 mov r8, r0 | r8 = r0;
0x000909f6 mov r0, sb | r0 = sb;
0x000909f8 blx 0x84f8 | fcn_000084f8 ();
0x000909fc cmp.w r8, 0 |
| if (r8 == 0) {
0x00090a00 beq 0x90a40 | goto label_57;
| }
0x00090a02 ldr r0, [r6, 0x4c] | r0 = *((r6 + 0x4c));
| if (r0 == 0) {
0x00090a04 cbz r0, 0x90a46 | goto label_58;
| }
| }
0x00090a06 ldrb r3, [r6, 0x18] | r3 = *((r6 + 0x18));
| if (r3 == 0) {
| label_24:
0x00090a08 cbnz r3, 0x90a14 |
0x00090a0a ldr r2, [r6, 0x38] | r2 = *((r6 + 0x38));
| if (r2 != 0) {
0x00090a0c cbnz r2, 0x90a14 | goto label_59;
| }
0x00090a0e str r3, [r6, 0x4c] | *((r6 + 0x4c)) = r3;
0x00090a10 blx 0x8300 | fcn_00008300 ();
| }
| label_59:
0x00090a14 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00090a16 cmp.w r8, 1 |
0x00090a1a mov.w r3, 0 | r3 = 0;
0x00090a1e str r3, [r2] | *(r2) = r3;
| if (r8 == 1) {
0x00090a20 beq 0x90a50 | goto label_60;
| }
0x00090a22 cmp.w r8, 0 |
0x00090a26 beq 0x90986 |
| } while (r8 == 0);
| do {
| label_22:
0x00090a28 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00090a2a movs r3, 0 | r3 = 0;
0x00090a2c mov r0, r8 | r0 = r8;
0x00090a2e str r3, [r2] | *(r2) = r3;
0x00090a30 add sp, 0x14 |
0x00090a32 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_57:
0x00090a40 ldr.w sb, [r6, 0x4c] | sb = *((r6 + 0x4c));
0x00090a44 b 0x90978 | goto label_21;
| label_58:
0x00090a46 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00090a48 cmp.w r8, 1 |
0x00090a4c str r0, [r3] | *(r3) = r0;
0x00090a4e bne 0x90a28 |
| } while (r8 != 1);
| label_60:
0x00090a50 movw r8, 0x10b | r8 = 0x10b;
0x00090a54 b 0x90a28 | goto label_22;
| label_54:
0x00090a56 ldrb r3, [r6, 0x18] | r3 = *((r6 + 0x18));
| if (r3 != 0) {
0x00090a58 cbnz r3, 0x90a60 | goto label_61;
| }
0x00090a5a ldr r2, [r6, 0x38] | r2 = *((r6 + 0x38));
0x00090a5c cmp r2, 0 |
| if (r2 == 0) {
0x00090a5e beq 0x909b6 | goto label_23;
| }
| label_61:
0x00090a60 cmp.w r8, 7 |
0x00090a64 it ne |
| if (r8 != 7) {
0x00090a66 ldrne r0, [r6, 0x4c] | r0 = *((r6 + 0x4c));
| goto label_62;
| }
| if (r8 != 7) {
| label_62:
0x00090a68 bne 0x90a08 | goto label_24;
| }
| label_56:
0x00090a6a mov.w r8, 7 | r8 = 7;
0x00090a6e b 0x9094e | goto label_25;
| label_55:
0x00090a70 ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x00090a72 movs r3, 0 | r3 = 0;
0x00090a74 mov r1, r3 | r1 = r3;
0x00090a76 adds r0, 0x20 | r0 += 0x20;
0x00090a78 blx 0x7f18 | r0 = fcn_00007f18 ();
0x00090a7c mov sb, r0 | sb = r0;
0x00090a7e cmp r0, 0 |
| if (r0 == 0) {
0x00090a80 beq 0x90b2a | goto label_63;
| }
0x00090a82 ldr r2, [r6, 0x3c] | r2 = *((r6 + 0x3c));
0x00090a84 mov r1, r0 | r1 = r0;
0x00090a86 str r7, [r1], 0x20 | *(r1) = r7;
| r1 += 0x20;
0x00090a8a movs r3, 0 | r3 = 0;
0x00090a8c str r1, [r0, 0x18] | *((r0 + 0x18)) = r1;
0x00090a8e movs r0, 1 | r0 = 1;
0x00090a90 adds r2, 1 | r2++;
0x00090a92 str.w r0, [sb, 0x10] | __asm ("str.w r0, [sb, 0x10]");
0x00090a96 str r2, [r6, 0x3c] | *((r6 + 0x3c)) = r2;
0x00090a98 ldr r0, [r6, 0x4c] | r0 = *((r6 + 0x4c));
0x00090a9a ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x00090a9c strd r4, r5, [sb, 8] | __asm ("strd r4, r5, [sb, 8]");
0x00090aa0 str.w r3, [sb, 0x14] | __asm ("str.w r3, [sb, 0x14]");
0x00090aa4 str.w r3, [sb, 0x1c] | __asm ("str.w r3, [sb, 0x1c]");
0x00090aa8 blx 0x8294 | r0 = fcn_00008294 ();
0x00090aac mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x00090aae cbnz r0, 0x90b1c | goto label_64;
| }
0x00090ab0 subs r3, r4, 1 | r3 = r4 - 1;
0x00090ab2 ldr.w r4, [sb, 0x18] | r4 = *((sb + 0x18));
0x00090ab4 ands r0, r3 | r0 &= r3;
0x00090ab6 orrs r3, r5 | r3 |= r5;
0x00090ab8 beq 0x90b0a |
| while (r3 <= 0x28) {
0x00090aba ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x00090abc ldrb r1, [r6, 0x17] | r1 = *((r6 + 0x17));
0x00090abe subs r0, 4 | r0 -= 4;
0x00090ac0 bl 0xab8f8 | fcn_000ab8f8 (r0, r1);
0x00090ac4 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x00090ac6 ldrb r3, [r4, 3] | r3 = *((r4 + 3));
0x00090ac8 add.w r3, r3, r2, lsl 8 | r3 += (r2 << 8);
0x00090acc cmp r0, r3 |
| if (r0 < r3) {
0x00090ace blt 0x90b18 | goto label_65;
| }
| if (r7 != 0) {
0x00090ad0 cbz r7, 0x90ad8 |
0x00090ad2 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00090ad4 adds r3, 1 | r3++;
0x00090ad6 str r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
| }
0x00090ad8 ldr.w r2, [sb, 8] | r2 = *((sb + 8));
0x00090adc movw r3, 0x7eaf |
0x00090ae0 movt r3, 0x51d0 | r3 = 0x51d07eaf;
0x00090ae4 umull r1, r3, r3, r2 | r1:r3 = r3 * r2;
0x00090ae8 subs r1, r2, r3 | r1 = r2 - r3;
0x00090aea add.w r3, r3, r1, lsr 1 | r3 += (r1 >> 1);
0x00090aee lsrs r3, r3, 6 | r3 >>= 6;
0x00090af0 add.w r1, r3, r3, lsl 1 | r1 = r3 + (r3 << 1);
0x00090af4 add.w r3, r3, r1, lsl 5 | r3 += (r1 << 5);
0x00090af8 subs r3, r2, r3 | r3 = r2 - r3;
0x00090afa add.w r3, r6, r3, lsl 2 | r3 = r6 + (r3 << 2);
0x00090afe ldr r2, [r3, 0x74] | r2 = *((r3 + 0x74));
0x00090b00 str.w r2, [sb, 0x1c] | __asm ("str.w r2, [sb, 0x1c]");
0x00090b04 str.w sb, [r3, 0x74] | __asm ("str.w sb, [r3, 0x74]");
0x00090b08 b 0x9098e | goto label_26;
0x00090b0a ldrb r2, [r4] | r2 = *(r4);
0x00090b0c ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00090b0e add.w r3, r3, r2, lsl 8 | r3 += (r2 << 8);
0x00090b12 cmp r3, 0x28 |
0x00090b14 str r3, [r6, 0x1c] | *((r6 + 0x1c)) = r3;
0x00090b16 ble 0x90aba |
| }
| label_65:
0x00090b18 movw r8, 0x10b | r8 = 0x10b;
| label_64:
0x00090b1c ldr r3, [r6, 0x3c] | r3 = *((r6 + 0x3c));
0x00090b1e mov r0, sb | r0 = sb;
0x00090b20 subs r3, 1 | r3--;
0x00090b22 str r3, [r6, 0x3c] | *((r6 + 0x3c)) = r3;
0x00090b24 blx 0x84f8 | fcn_000084f8 ();
0x00090b28 b 0x90a28 | goto label_22;
| label_63:
0x00090b2a mov.w r8, 7 | r8 = 7;
0x00090b2e b 0x90a28 | goto label_22;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x15e30 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sqlite3_clear_bindings () | void sqlite3_clear_bindings (int16_t arg1) {
| r0 = arg1;
0x00015e30 ldr r3, [r0] | r3 = *(r0);
0x00015e32 push.w {r4, r5, r6, r7, r8, lr} |
0x00015e36 mov r8, r0 | r8 = r0;
0x00015e38 ldr r7, [r3, 0xc] | r7 = *((r3 + 0xc));
0x00015e3a mov r0, r7 | r0 = r7;
0x00015e3c blx 0x8254 | fcn_00008254 ();
0x00015e40 ldrsh.w ip, [r8, 0x10] | ip = *((r8 + 0x10));
0x00015e44 cmp.w ip, 0 |
| if (ip <= 0) {
0x00015e48 ble 0x15e7e | goto label_0;
| }
0x00015e4a ldr.w r1, [r8, 0x64] | r1 = *((r8 + 0x64));
0x00015e4e movs r4, 0 | r4 = 0;
0x00015e50 movs r6, 1 | r6 = 1;
| do {
0x00015e52 add.w r5, r4, r4, lsl 2 | r5 = r4 + (r4 << 2);
0x00015e56 adds r4, 1 | r4++;
0x00015e58 lsls r5, r5, 3 | r5 <<= 3;
0x00015e5a adds r3, r1, r5 | r3 = r1 + r5;
0x00015e5c ldrh r2, [r3, 8] | r2 = *((r3 + 8));
0x00015e5e mov r0, r3 | r0 = r3;
0x00015e60 and r2, r2, 0x2400 | r2 &= 0x2400;
| if (r2 == 0) {
0x00015e64 cbnz r2, 0x15e6a |
0x00015e66 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
| if (r2 == 0) {
0x00015e68 cbz r2, 0x15e78 | goto label_1;
| }
| }
0x00015e6a bl 0x15dfc | fcn_00015dfc (r0);
0x00015e6e ldr.w r1, [r8, 0x64] | r1 = *((r8 + 0x64));
0x00015e72 ldrsh.w ip, [r8, 0x10] | ip = *((r8 + 0x10));
0x00015e76 adds r3, r1, r5 | r3 = r1 + r5;
| label_1:
0x00015e78 cmp ip, r4 |
0x00015e7a strh r6, [r3, 8] | *((r3 + 8)) = r6;
0x00015e7c bgt 0x15e52 |
| } while (ip > r4);
| label_0:
0x00015e7e ldr.w r3, [r8, 0xd0] | r3 = *((r8 + 0xd0));
| if (r3 != 0) {
0x00015e82 cbz r3, 0x15e92 |
0x00015e84 ldrb.w r3, [r8, 0x96] | r3 = *((r8 + 0x96));
0x00015e88 movs r2, 1 | r2 = 1;
0x00015e8a bfi r3, r2, 0, 2 | value_0 = BIT_MASK (0, 2);
| value_1 = r2 & value_0;
| value_0 = ~value_0;
| r3 &= value_0;
| r3 |= value_1;
0x00015e8e strb.w r3, [r8, 0x96] | *((r8 + 0x96)) = r3;
| }
0x00015e92 mov r0, r7 | r0 = r7;
0x00015e94 blx 0x81d4 | fcn_000081d4 ();
0x00015e98 movs r0, 0 | r0 = 0;
0x00015e9a 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/libsqlite3.so.0.8.6 @ 0x3fe10 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_create_filename () | void sqlite3_create_filename (int16_t arg_28h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0003fe10 svcmi 0xf8e92d | __asm ("svcmi aav.0x000000ff");
0x0003fe14 mov r6, r1 | r6 = r1;
0x0003fe16 mov r7, r2 | r7 = r2;
0x0003fe18 mov r5, r3 | r5 = r3;
0x0003fe1a mov r8, r0 | r8 = r0;
0x0003fe1c blx 0x8160 | r0 = fcn_00008160 ();
0x0003fe20 mov r4, r0 | r4 = r0;
0x0003fe22 mov r0, r6 | r0 = r6;
0x0003fe24 blx 0x8160 | r0 = fcn_00008160 ();
0x0003fe28 mov sb, r0 | sb = r0;
0x0003fe2a mov r0, r7 | r0 = r7;
0x0003fe2c add r4, sb | r4 += sb;
0x0003fe2e blx 0x8160 | fcn_00008160 ();
0x0003fe32 adds r4, 0xa | r4 += 0xa;
0x0003fe34 lsls r3, r5, 1 | r3 = r5 << 1;
0x0003fe36 add r0, r4 | r0 += r4;
0x0003fe38 movs r4, 0 | r4 = 0;
0x0003fe3a cmp r3, r4 |
| if (r3 <= r4) {
0x0003fe3c ble 0x3fee6 | goto label_1;
| }
0x0003fe3e mov fp, r4 |
0x0003fe40 ldr r4, [sp, 0x28] | r4 = *(arg_28h);
0x0003fe42 mov sb, r0 | sb = r0;
0x0003fe44 mov sl, r4 | sl = r4;
0x0003fe46 add.w r5, r4, r5, lsl 3 | r5 = r4 + (r5 << 3);
| do {
0x0003fe4a ldr r0, [sl], 4 | r0 = *(sl);
| sl += 4;
0x0003fe4e blx 0x8160 | fcn_00008160 ();
0x0003fe52 adds r0, 1 | r0++;
0x0003fe54 adds.w r0, r0, sb | r0 += sb;
0x0003fe58 adc fp, fp, 0 | __asm ("adc fp, fp, 0");
0x0003fe5c cmp r5, sl |
0x0003fe5e mov sb, r0 | sb = r0;
0x0003fe60 bne 0x3fe4a |
| } while (r5 != sl);
0x0003fe62 mov r1, fp | r1 = fp;
0x0003fe64 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0003fe68 mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x0003fe6a cbz r0, 0x3fedc | goto label_2;
| }
0x0003fe6c movs r3, 0 | r3 = 0;
0x0003fe6e mov r0, r8 | r0 = r8;
0x0003fe70 str r3, [sl], 4 | *(sl) = r3;
| sl += 4;
0x0003fe74 blx 0x8160 | fcn_00008160 ();
0x0003fe78 mov r1, r8 | r1 = r8;
0x0003fe7a adds r2, r0, 1 | r2 = r0 + 1;
0x0003fe7c mov r0, sl | r0 = sl;
0x0003fe7e add.w sb, sl, r2 | sb = sl + r2;
0x0003fe82 blx 0x7dcc | fcn_00007dcc ();
| do {
0x0003fe86 ldr fp, [r4], 4 | fp = *(r4);
| r4 += 4;
0x0003fe8a mov r0, fp | r0 = fp;
0x0003fe8c blx 0x8160 | r0 = fcn_00008160 ();
0x0003fe90 add.w r8, r0, 1 | r8 = r0 + 1;
0x0003fe94 mov r1, fp | r1 = fp;
0x0003fe96 mov r0, sb | r0 = sb;
0x0003fe98 mov r2, r8 | r2 = r8;
0x0003fe9a blx 0x7dcc | fcn_00007dcc ();
0x0003fe9e cmp r5, r4 |
0x0003fea0 add sb, r8 | sb += r8;
0x0003fea2 bne 0x3fe86 |
| } while (r5 != r4);
| label_0:
0x0003fea4 movs r5, 0 | r5 = 0;
0x0003fea6 mov r0, r6 | r0 = r6;
0x0003fea8 strb r5, [sb], 1 | *(sb) = r5;
| sb++;
0x0003feac blx 0x8160 | fcn_00008160 ();
0x0003feb0 mov r1, r6 | r1 = r6;
0x0003feb2 adds r2, r0, 1 | r2 = r0 + 1;
0x0003feb4 mov r0, sb | r0 = sb;
0x0003feb6 add.w r6, sb, r2 | r6 = sb + r2;
0x0003feba blx 0x7dcc | fcn_00007dcc ();
0x0003febe mov r0, r7 | r0 = r7;
0x0003fec0 blx 0x8160 | r0 = fcn_00008160 ();
0x0003fec4 adds r4, r0, 1 | r4 = r0 + 1;
0x0003fec6 mov r1, r7 | r1 = r7;
0x0003fec8 mov r2, r4 | r2 = r4;
0x0003feca mov r0, r6 | r0 = r6;
0x0003fecc blx 0x7dcc | fcn_00007dcc ();
0x0003fed0 adds r3, r6, r4 | r3 = r6 + r4;
0x0003fed2 strb r5, [r6, r4] | *((r6 + r4)) = r5;
0x0003fed4 mov r0, sl | r0 = sl;
0x0003fed6 strb r5, [r3, 1] | *((r3 + 1)) = r5;
0x0003fed8 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
| label_2:
0x0003fedc mov.w sl, 0 | sl = 0;
0x0003fee0 mov r0, sl | r0 = sl;
0x0003fee2 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x0003fee6 mov r1, r4 | r1 = r4;
0x0003fee8 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0003feec mov sl, r0 | sl = r0;
0x0003feee cmp r0, 0 |
0x0003fef0 beq 0x3fedc |
| } while (r0 == 0);
0x0003fef2 str r4, [sl], 4 | *(sl) = r4;
| sl += 4;
0x0003fef6 mov r0, r8 | r0 = r8;
0x0003fef8 blx 0x8160 | fcn_00008160 ();
0x0003fefc mov r1, r8 | r1 = r8;
0x0003fefe adds r2, r0, 1 | r2 = r0 + 1;
0x0003ff00 mov r0, sl | r0 = sl;
0x0003ff02 add.w sb, sl, r2 | sb = sl + r2;
0x0003ff06 blx 0x7dcc | fcn_00007dcc ();
0x0003ff0a b 0x3fea4 | 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/libsqlite3.so.0.8.6 @ 0x1d2c4 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_db_status () | void sqlite3_db_status (int16_t arg_4h, int16_t arg_38h, int16_t arg_40h, int16_t arg_44h, int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, int16_t arg_58h, int16_t arg_5ch, int16_t arg_60h, int16_t arg_64h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t arg_78h, int16_t arg_7ch, int16_t arg_a8h, int16_t arg_ach, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| 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;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001d2c4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001d2c8 mov r6, r2 | r6 = r2;
0x0001d2ca ldr r2, [pc, 0x350] |
0x0001d2cc mov r7, r3 | r7 = r3;
0x0001d2ce sub sp, 0x14 |
0x0001d2d0 mov r4, r0 | r4 = r0;
0x0001d2d2 ldr r3, [pc, 0x34c] | r3 = *(0x1d622);
0x0001d2d4 mov r8, r1 | r8 = r1;
0x0001d2d6 add r2, pc | r2 = 0x3a8f8;
0x0001d2d8 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x0001d2da ldr r5, [sp, 0x38] | r5 = *(arg_38h);
0x0001d2dc ldr r3, [r2, r3] |
0x0001d2de ldr r3, [r3] | r3 = *(0x3a8f8);
0x0001d2e0 str r3, [sp, 0xc] | var_ch = r3;
0x0001d2e2 mov.w r3, 0 | r3 = 0;
0x0001d2e6 blx 0x8254 | fcn_00008254 ();
0x0001d2ea cmp.w r8, 0xc |
| if (r8 > 0xc) {
0x0001d2ee bhi.w 0x1d616 | goto label_26;
| }
| /* switch table (14 cases) at 0x1d2f6 */
0x0001d2f2 tbh [pc, r8, lsl 1] | __asm ("tbh [pc, r8, lsl 1]");
0x0001d310 mov.w r8, 0xa | r8 = 0xa;
0x0001d314 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0001d316 cmp r2, 0 |
| if (r2 <= 0) {
0x0001d318 ble.w 0x1d5ec | goto label_27;
| }
0x0001d31c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0001d31e movs r1, 0 | r1 = 0;
0x0001d320 lsl.w r8, r8, 2 | r8 <<= 2;
0x0001d324 mov lr, r1 | lr = r1;
0x0001d326 add.w ip, r3, r2, lsl 4 |
| do {
0x0001d32a ldr r2, [r3, 4] | r2 = *((r3 + 4));
| if (r2 != 0) {
0x0001d32c cbz r2, 0x1d340 |
0x0001d32e ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0001d330 ldr r2, [r2] | r2 = *(r2);
0x0001d332 add r2, r8 | r2 += r8;
0x0001d334 ldr.w r0, [r2, 0x9c] | r0 = *((r2 + 0x9c));
0x0001d338 add r1, r0 | r1 += r0;
| if (r5 == 0) {
0x0001d33a cbz r5, 0x1d340 | goto label_28;
| }
0x0001d33c str.w lr, [r2, 0x9c] | __asm ("str.w lr, [r2, 0x9c]");
| }
| label_28:
0x0001d340 adds r3, 0x10 | r3 += 0x10;
0x0001d342 cmp ip, r3 |
0x0001d344 bne 0x1d32a |
| } while (ip != r3);
| label_4:
0x0001d346 mov.w r8, 0 | r8 = 0;
0x0001d34a str.w r8, [r7] | __asm ("str.w r8, [r7]");
0x0001d34e str r1, [r6] | *(r6) = r1;
0x0001d350 b 0x1d36c | goto label_0;
0x0001d352 add.w r2, r4, r8, lsl 2 | r2 = r4 + (r8 << 2);
0x0001d356 movs r3, 0 | r3 = 0;
0x0001d358 str r3, [r6] | *(r6) = r3;
0x0001d35a ldr.w r1, [r2, 0x118] | r1 = *((r2 + 0x118));
0x0001d35e str r1, [r7] | *(r7) = r1;
0x0001d360 cmp r5, 0 |
| if (r5 == 0) {
0x0001d362 beq.w 0x1d5cc | goto label_29;
| }
0x0001d366 mov r8, r3 | r8 = r3;
0x0001d368 str.w r3, [r2, 0x118] | __asm ("str.w r3, aav.0x000000ff");
| label_0:
0x0001d36c ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x0001d36e blx 0x81d4 | fcn_000081d4 ();
0x0001d372 ldr r2, [pc, 0x2b0] |
0x0001d374 ldr r3, [pc, 0x2a8] | r3 = *(0x1d620);
0x0001d376 add r2, pc | r2 = 0x3a9a0;
0x0001d378 ldr r3, [r2, r3] | r3 = *(0x3a9a0);
0x0001d37a ldr r2, [r3] | r2 = *(0x3a9a0);
0x0001d37c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001d37e eors r2, r3 | r2 ^= r3;
0x0001d380 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001d384 bne.w 0x1d612 | goto label_30;
| }
0x0001d388 mov r0, r8 | r0 = r8;
0x0001d38a add sp, 0x14 |
0x0001d38c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0001d390 ldrb.w r5, [r4, 0x5b] | r5 = *((r4 + 0x5b));
0x0001d394 cmp r5, 0 |
| if (r5 == 0) {
0x0001d396 beq.w 0x1d600 | goto label_31;
| }
0x0001d39a ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0001d39c cmp r2, 0 |
0x0001d39e itt le |
| if (r2 > 0) {
0x0001d3a0 movle r3, 0 | r3 = 0;
| }
| if (r2 > 0) {
0x0001d3a2 strle r3, [sp] | *(sp) = r3;
| }
| if (r2 <= 0) {
0x0001d3a4 ble 0x1d42a | goto label_32;
| }
| label_6:
0x0001d3a6 ldr.w sb, [pc, 0x280] | sb = *(0x0001d628);
0x0001d3aa mov.w sl, 0 | sl = 0;
0x0001d3ae str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0001d3b2 add sb, pc | sb += pc;
| do {
0x0001d3b4 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0001d3b6 add.w r3, r3, sl, lsl 4 | r3 += (sl << 4);
0x0001d3ba ldr.w fp, [r3, 4] | fp = *((r3 + 4));
0x0001d3be cmp.w fp, 0 |
| if (fp != 0) {
0x0001d3c2 beq 0x1d416 |
0x0001d3c4 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0001d3c8 ldr r5, [r3] | r5 = *(r3);
0x0001d3ca ldr.w r3, [sb, 0x7c] | r3 = *((sb + 0x7c));
0x0001d3ce ldr.w r0, [r5, 0x98] | r0 = *((r5 + 0x98));
0x0001d3d2 ldrh.w r1, [r5, 0x8c] | r1 = *((r5 + 0x8c));
0x0001d3d6 add r1, r0 | r1 += r0;
0x0001d3d8 ldr.w r0, [r5, 0xd4] | r0 = *((r5 + 0xd4));
0x0001d3dc adds r1, 0x3c | r1 += 0x3c;
0x0001d3de str r1, [sp, 4] | var_4h = r1;
0x0001d3e0 ldr r0, [r0, 0x2c] | r0 = *((r0 + 0x2c));
0x0001d3e2 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0001d3e4 ldr r1, [sp, 4] | r1 = var_4h;
0x0001d3e6 ldr.w r3, [sb, 0x2c] | r3 = *((sb + 0x2c));
0x0001d3ea mul r1, r0, r1 | r1 = r0 * r1;
0x0001d3ee mov r0, r5 | r0 = r5;
0x0001d3f0 str r1, [sp, 4] | var_4h = r1;
0x0001d3f2 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0001d3f4 ldr r1, [sp, 4] | r1 = var_4h;
0x0001d3f6 cmp.w r8, 0xb |
0x0001d3fa ldr.w r3, [r5, 0x98] | r3 = *((r5 + 0x98));
0x0001d3fe add r0, r1 | r0 += r1;
0x0001d400 add r0, r3 | r0 += r3;
| if (r8 == 0xb) {
0x0001d402 bne 0x1d40e |
0x0001d404 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0001d408 ldr r1, [r3, 0x44] | r1 = *((r3 + 0x44));
0x0001d40a bl 0xab8f8 | fcn_000ab8f8 (r0, r1);
| }
0x0001d40e ldr r3, [sp] | r3 = *(sp);
0x0001d410 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0001d412 add r3, r0 | r3 += r0;
0x0001d414 str r3, [sp] | *(sp) = r3;
| }
0x0001d416 add.w sl, sl, 1 | sl++;
0x0001d41a cmp r2, sl |
0x0001d41c bgt 0x1d3b4 |
| } while (r2 > sl);
| label_7:
0x0001d41e ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
| if (r3 == 0) {
0x0001d422 cbnz r3, 0x1d42a |
0x0001d424 mov r0, r4 | r0 = r4;
0x0001d426 bl 0x1536c | fcn_0001536c (r0);
| }
| label_32:
0x0001d42a ldr r2, [sp] | r2 = *(sp);
0x0001d42c movs r3, 0 | r3 = 0;
0x0001d42e mov r8, r3 | r8 = r3;
0x0001d430 str r2, [r6] | *(r6) = r2;
0x0001d432 str r3, [r7] | *(r7) = r3;
0x0001d434 b 0x1d36c | goto label_0;
0x0001d436 ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x0001d438 movs r3, 0 | r3 = 0;
0x0001d43a str r3, [sp, 8] | var_8h = r3;
0x0001d43c add r3, sp, 8 | r3 += var_8h;
0x0001d43e str.w r3, [r4, 0x1f8] | __asm ("str.w r3, aav.0x000000ff");
| if (r5 == 0) {
0x0001d442 cbz r5, 0x1d45c | goto label_33;
| }
| do {
0x0001d444 mov r1, r5 | r1 = r5;
0x0001d446 mov r0, r4 | r0 = r4;
0x0001d448 bl 0x1a8a4 | fcn_0001a8a4 (r0, r1);
0x0001d44c mov r1, r5 | r1 = r5;
0x0001d44e mov r0, r4 | r0 = r4;
0x0001d450 bl 0x159dc | fcn_000159dc (r0, r1);
0x0001d454 ldr r5, [r5, 8] | r5 = *((r5 + 8));
0x0001d456 cmp r5, 0 |
0x0001d458 bne 0x1d444 |
| } while (r5 != 0);
0x0001d45a ldr r5, [sp, 8] | r5 = var_8h;
| label_33:
0x0001d45c movs r3, 0 | r3 = 0;
0x0001d45e str.w r3, [r4, 0x1f8] | __asm ("str.w r3, aav.0x000000ff");
0x0001d462 mov r8, r3 | r8 = r3;
0x0001d464 str r3, [r7] | *(r7) = r3;
0x0001d466 str r5, [r6] | *(r6) = r5;
0x0001d468 b 0x1d36c | goto label_0;
0x0001d46a mov r1, r7 | r1 = r7;
0x0001d46c mov r0, r4 | r0 = r4;
0x0001d46e bl 0x8738 | fcn_00008738 (r0, r1);
0x0001d472 str r0, [r6] | *(r6) = r0;
0x0001d474 cmp r5, 0 |
| if (r5 == 0) {
0x0001d476 beq.w 0x1d5cc | goto label_29;
| }
0x0001d47a ldr.w r1, [r4, 0x138] | r1 = *((r4 + 0x138));
| if (r1 == 0) {
0x0001d47e cbz r1, 0x1d494 | goto label_34;
| }
0x0001d480 mov r3, r1 | r3 = r1;
| do {
0x0001d482 mov r2, r3 | r2 = r3;
0x0001d484 ldr r3, [r3] | r3 = *(r3);
0x0001d486 cmp r3, 0 |
0x0001d488 bne 0x1d482 |
| } while (r3 != 0);
0x0001d48a ldr.w r0, [r4, 0x134] | r0 = *((r4 + 0x134));
0x0001d48e str r0, [r2] | *(r2) = r0;
0x0001d490 strd r1, r3, [r4, 0x134] | __asm ("strd r1, r3, aav.0x000000ff");
| label_34:
0x0001d494 ldr.w r1, [r4, 0x140] | r1 = *((r4 + 0x140));
0x0001d498 cmp r1, 0 |
| if (r1 == 0) {
0x0001d49a beq.w 0x1d5cc | goto label_29;
| }
0x0001d49e mov r3, r1 | r3 = r1;
| do {
0x0001d4a0 mov r2, r3 | r2 = r3;
0x0001d4a2 ldr r3, [r3] | r3 = *(r3);
0x0001d4a4 cmp r3, 0 |
0x0001d4a6 bne 0x1d4a0 |
| } while (r3 != 0);
0x0001d4a8 ldr.w r0, [r4, 0x13c] | r0 = *((r4 + 0x13c));
0x0001d4ac str r0, [r2] | *(r2) = r0;
0x0001d4ae strd r1, r3, [r4, 0x13c] | __asm ("strd r1, r3, aav.0x000000ff");
0x0001d4b2 b 0x1d36c | goto label_0;
0x0001d4b4 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x0001d4b8 movs r2, 0 | r2 = 0;
0x0001d4ba str r2, [sp, 8] | var_8h = r2;
0x0001d4bc cmp r3, 0 |
| if (r3 == 0) {
0x0001d4be beq.w 0x1d5f0 | goto label_35;
| }
| label_5:
0x0001d4c2 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0001d4c4 add r3, sp, 8 | r3 += var_8h;
0x0001d4c6 str.w r3, [r4, 0x1f8] | __asm ("str.w r3, aav.0x000000ff");
0x0001d4ca cmp r2, 0 |
| if (r2 <= 0) {
0x0001d4cc ble.w 0x1d5d2 | goto label_36;
| }
0x0001d4d0 ldr.w sb, [pc, 0x158] | sb = "INSERT INTO vacuum_db.sqlite_schema SELECT*FROM \"%w\".sqlite_schema WHERE type IN('view','trigger') OR(type='table'AND rootpage=0)";
0x0001d4d4 mov.w r8, 0 | r8 = 0;
0x0001d4d8 add sb, pc | sb += pc;
0x0001d4da b 0x1d4e4 |
| while (sl == 0) {
| label_3:
0x0001d4dc add.w r8, r8, 1 | r8++;
0x0001d4e0 cmp r2, r8 |
| if (r2 <= r8) {
0x0001d4e2 ble 0x1d5d2 | goto label_36;
| }
0x0001d4e4 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0001d4e6 add.w r3, r3, r8, lsl 4 | r3 += (r8 << 4);
0x0001d4ea ldr.w sl, [r3, 0xc] | sl = *((r3 + 0xc));
0x0001d4ee cmp.w sl, 0 |
0x0001d4f2 beq 0x1d4dc |
| }
0x0001d4f4 ldr.w r3, [sb, 0x30] | r3 = *((sb + 0x30));
0x0001d4f8 movs r0, 0x10 | r0 = 0x10;
0x0001d4fa blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0001d4fc ldr.w r2, [sl, 0x2c] | r2 = *((sl + 0x2c));
0x0001d500 ldr.w r3, [sl, 0xc] | r3 = *((sl + 0xc));
0x0001d504 add r3, r2 | r3 += r2;
0x0001d506 ldr.w r2, [sl, 0x1c] | r2 = *((sl + 0x1c));
0x0001d50a add r3, r2 | r3 += r2;
0x0001d50c ldr.w r2, [sl, 0x3c] | r2 = *((sl + 0x3c));
0x0001d510 add r3, r2 | r3 += r2;
0x0001d512 ldr r2, [sp, 8] | r2 = var_8h;
0x0001d514 mla r2, r0, r3, r2 | __asm ("mla r2, r0, r3, r2");
0x0001d518 ldr.w r0, [sl, 0x14] | r0 = *((sl + 0x14));
0x0001d51c str r2, [sp, 8] | var_8h = r2;
0x0001d51e blx 0x83c0 | fcn_000083c0 ();
0x0001d522 ldr r3, [sp, 8] | r3 = var_8h;
0x0001d524 add r3, r0 | r3 += r0;
0x0001d526 ldr.w r0, [sl, 0x34] | r0 = *((sl + 0x34));
0x0001d52a str r3, [sp, 8] | var_8h = r3;
0x0001d52c blx 0x83c0 | fcn_000083c0 ();
0x0001d530 ldr r3, [sp, 8] | r3 = var_8h;
0x0001d532 add r3, r0 | r3 += r0;
0x0001d534 ldr.w r0, [sl, 0x24] | r0 = *((sl + 0x24));
0x0001d538 str r3, [sp, 8] | var_8h = r3;
0x0001d53a blx 0x83c0 | fcn_000083c0 ();
0x0001d53e ldr r3, [sp, 8] | r3 = var_8h;
0x0001d540 add r3, r0 | r3 += r0;
0x0001d542 ldr.w r0, [sl, 0x44] | r0 = *((sl + 0x44));
0x0001d546 str r3, [sp, 8] | var_8h = r3;
0x0001d548 blx 0x83c0 | fcn_000083c0 ();
0x0001d54c ldr r3, [sp, 8] | r3 = var_8h;
0x0001d54e ldr.w r5, [sl, 0x30] | r5 = *((sl + 0x30));
0x0001d552 add r3, r0 | r3 += r0;
0x0001d554 str r3, [sp, 8] | var_8h = r3;
| if (r5 == 0) {
0x0001d556 cbz r5, 0x1d56c | goto label_37;
| }
| do {
0x0001d558 ldr r1, [r5, 8] | r1 = *((r5 + 8));
| if (r1 != 0) {
0x0001d55a cbz r1, 0x1d566 |
0x0001d55c ldrb r3, [r1, 0xa] | r3 = *((r1 + 0xa));
| if (r3 != 0) {
0x0001d55e cbnz r3, 0x1d566 | goto label_38;
| }
0x0001d560 mov r0, r4 | r0 = r4;
0x0001d562 bl 0x1921c | fcn_0001921c (r0, r1);
| }
| label_38:
0x0001d566 ldr r5, [r5] | r5 = *(r5);
0x0001d568 cmp r5, 0 |
0x0001d56a bne 0x1d558 |
| } while (r5 != 0);
| label_37:
0x0001d56c ldr.w r5, [sl, 0x10] | r5 = *((sl + 0x10));
| if (r5 != 0) {
0x0001d570 cbnz r5, 0x1d57e | goto label_2;
| }
0x0001d572 b 0x1d59c | goto label_39;
| label_1:
0x0001d574 mov r0, r4 | r0 = r4;
0x0001d576 bl 0x19014 | fcn_00019014 (r0, r1);
| do {
0x0001d57a ldr r5, [r5] | r5 = *(r5);
| if (r5 == 0) {
0x0001d57c cbz r5, 0x1d59c | goto label_39;
| }
| label_2:
0x0001d57e ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0001d580 cmp r1, 0 |
0x0001d582 beq 0x1d57a |
| } while (r1 == 0);
0x0001d584 ldr.w r3, [r4, 0x1f8] | r3 = *((r4 + 0x1f8));
0x0001d588 cmp r3, 0 |
| if (r3 != 0) {
0x0001d58a bne 0x1d574 | goto label_1;
| }
0x0001d58c ldr r3, [r1, 0x20] | r3 = *((r1 + 0x20));
0x0001d58e subs r3, 1 | r3--;
0x0001d590 str r3, [r1, 0x20] | *((r1 + 0x20)) = r3;
0x0001d592 cmp r3, 0 |
| if (r3 == 0) {
0x0001d594 beq 0x1d574 | goto label_1;
| }
0x0001d596 ldr r5, [r5] | r5 = *(r5);
0x0001d598 cmp r5, 0 |
| if (r5 != 0) {
0x0001d59a bne 0x1d57e | goto label_2;
| }
| label_39:
0x0001d59c ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0001d59e b 0x1d4dc | goto label_3;
0x0001d5a0 ldrd r2, r3, [r4, 0x1f0] | __asm ("ldrd r2, r3, aav.0x000000ff");
0x0001d5a4 movs r1, 0 | r1 = 0;
0x0001d5a6 str r1, [r7] | *(r7) = r1;
0x0001d5a8 cmp r2, 1 |
0x0001d5aa sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x0001d5ae it ge |
| if (r2 < 1) {
0x0001d5b0 movge r3, 1 | r3 = 1;
| }
| if (r2 < 1) {
0x0001d5b2 bge 0x1d5c4 |
0x0001d5b4 ldrd r2, r3, [r4, 0x1e8] | __asm ("ldrd r2, r3, aav.0x000000ff");
0x0001d5b8 cmp r2, 1 |
0x0001d5ba sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x0001d5be ite ge |
| if (r2 < 1) {
0x0001d5c0 movge r3, 1 | r3 = 1;
| }
| if (r2 < 1) {
0x0001d5c2 movlt r3, r1 | r3 = r1;
| goto label_40;
| }
| }
| label_40:
0x0001d5c4 mov.w r8, 0 | r8 = 0;
0x0001d5c8 str r3, [r6] | *(r6) = r3;
0x0001d5ca b 0x1d36c | goto label_0;
| label_29:
0x0001d5cc mov.w r8, 0 | r8 = 0;
0x0001d5d0 b 0x1d36c | goto label_0;
| label_36:
0x0001d5d2 ldrb.w r3, [r4, 0x5b] | r3 = *((r4 + 0x5b));
0x0001d5d6 movs r2, 0 | r2 = 0;
0x0001d5d8 str.w r2, [r4, 0x1f8] | __asm ("str.w r2, aav.0x000000ff");
0x0001d5dc cbz r3, 0x1d5f8 |
| while (1) {
0x0001d5de ldr r3, [sp, 8] | r3 = var_8h;
0x0001d5e0 mov.w r8, 0 | r8 = 0;
0x0001d5e4 str.w r8, [r7] | __asm ("str.w r8, [r7]");
0x0001d5e8 str r3, [r6] | *(r6) = r3;
0x0001d5ea b 0x1d36c | goto label_0;
| label_27:
0x0001d5ec movs r1, 0 | r1 = 0;
0x0001d5ee b 0x1d346 | goto label_4;
| label_35:
0x0001d5f0 mov r0, r4 | r0 = r4;
0x0001d5f2 bl 0x16588 | fcn_00016588 (r0);
0x0001d5f6 b 0x1d4c2 | goto label_5;
0x0001d5f8 mov r0, r4 | r0 = r4;
0x0001d5fa bl 0x1536c | fcn_0001536c (r0);
0x0001d5fe b 0x1d5de |
| }
| label_31:
0x0001d600 mov r0, r4 | r0 = r4;
0x0001d602 bl 0x16588 | fcn_00016588 (r0);
0x0001d606 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0001d608 cmp r2, 0 |
| if (r2 > 0) {
0x0001d60a bgt.w 0x1d3a6 | goto label_6;
| }
0x0001d60e str r5, [sp] | *(sp) = r5;
0x0001d610 b 0x1d41e | goto label_7;
| label_30:
0x0001d612 blx 0x7e8c | fcn_00007e8c ();
| label_26:
0x0001d616 mov.w r8, 1 | r8 = 1;
0x0001d61a b 0x1d36c | goto label_0;
| label_17:
0x0003adfc add sp, 0x84 |
0x0003adfe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x0003af12 ldr.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x0003af16 lsls r2, r7, 2 | r2 = r7 << 2;
0x0003af18 mov r0, r6 | r0 = r6;
0x0003af1a mov r1, r3 | r1 = r3;
0x0003af1c str r3, [sp, 0x70] | *(arg_70h) = r3;
0x0003af1e subs r1, 1 | r1--;
0x0003af20 mov r3, r4 | r3 = r4;
0x0003af22 str.w r1, [r8, 0x38] | __asm ("str.w r1, [r8, 0x38]");
0x0003af26 str r1, [sp, 0x6c] | *(arg_6ch) = r1;
0x0003af28 bl 0x1abdc | fcn_0001abdc (r0, r1);
0x0003af2c str r0, [sp, 0x5c] | *(arg_5ch) = r0;
0x0003af2e cmp r0, 0 |
| if (r0 != 0) {
0x0003af30 bne.w 0x3b22e | goto label_41;
| }
| do {
| label_9:
0x0003af34 ldr r5, [r5, 0x14] | r5 = *((r5 + 0x14));
0x0003af36 cmp r5, 0 |
| if (r5 == 0) {
0x0003af38 beq.w 0x3b43a | goto label_42;
| }
0x0003af3c ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x0003af3e ldr r2, [sp, 0x24] | r2 = var_24h;
0x0003af40 cmp r2, r5 |
0x0003af42 ite eq |
| if (r2 != r5) {
0x0003af44 moveq r3, 0 | r3 = 0;
| }
| if (r2 == r5) {
0x0003af46 andne r3, r3, 1 | r3 &= 1;
| }
0x0003af4a cmp r3, 0 |
0x0003af4c bne 0x3af34 |
| } while (r3 != 0);
0x0003af4e ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0003af50 cmp r3, 0 |
0x0003af52 ldr r3, [sp, 0x3c] | r3 = *(arg_4h);
0x0003af54 it eq |
| if (r3 != 0) {
0x0003af56 moveq r3, 0 | r3 = 0;
| }
0x0003af58 str r3, [sp, 0x3c] | *(arg_4h) = r3;
0x0003af5a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0003af5c ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
0x0003af5e ldrb.w r3, [r5, 0x37] | r3 = *((r5 + 0x37));
0x0003af62 lsls r2, r2, 0x18 | r2 <<= 0x18;
| if (r2 < r2) {
0x0003af64 bpl 0x3af70 |
0x0003af66 and r2, r3, 3 | r2 = r3 & 3;
0x0003af6a cmp r2, 2 |
| if (r2 == 2) {
0x0003af6c beq.w 0x3b430 | goto label_43;
| }
| }
0x0003af70 lsls r3, r3, 0x1c | r3 <<= 0x1c;
0x0003af72 ldrh r4, [r5, 0x34] | r4 = *((r5 + 0x34));
0x0003af74 it mi |
| if (r3 < r3) {
0x0003af76 ldrhmi r7, [r5, 0x32] | __asm ("ldrhmi r7, [r5, 0x32]");
| }
0x0003af78 ldr r2, [r5] | r2 = *(r5);
0x0003af7a ite pl |
| if (r3 < r3) {
0x0003af7c addpl r7, r4, -1 | r7 = r4 + -1;
| }
| if (r3 < r3) {
0x0003af80 add.w r7, r7, -1 | r7 += -1;
| }
| label_16:
0x0003af84 ldr r1, [sp, 0x48] | r1 = *(arg_48h);
0x0003af86 mov r0, sl | r0 = sl;
0x0003af88 bl 0x2b744 | fcn_0002b744 (r0, r1, r2);
0x0003af8c ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x0003af8e mov r0, sl | r0 = sl;
0x0003af90 ldr.w r2, [r8, 0x2c] | r2 = *((r8 + 0x2c));
0x0003af94 ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0003af96 str r1, [sp] | *(sp) = r1;
0x0003af98 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0003af9a adds r1, r7, r1 | r1 = r7 + r1;
0x0003af9c cmp r2, r1 |
0x0003af9e it lt |
| if (r2 >= r1) {
0x0003afa0 movlt r2, r1 | r2 = r1;
| }
0x0003afa2 movs r1, 0x62 | r1 = 0x62;
0x0003afa4 str.w r2, [r8, 0x2c] | __asm ("str.w r2, [r8, 0x2c]");
0x0003afa8 mov r2, sb | r2 = sb;
0x0003afaa bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003afae mov r1, r5 | r1 = r5;
0x0003afb0 mov r0, r8 | r0 = r8;
0x0003afb2 bl 0x2d434 | fcn_0002d434 (r0, r1);
0x0003afb6 mov r2, r4 | r2 = r4;
0x0003afb8 movs r4, 0 | r4 = 0;
0x0003afba mov r3, fp | r3 = fp;
0x0003afbc movs r1, 0x45 | r1 = 0x45;
0x0003afbe mov r0, sl | r0 = sl;
0x0003afc0 str r4, [sp] | *(sp) = r4;
0x0003afc2 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003afc6 ldrh r2, [r5, 0x32] | r2 = *((r5 + 0x32));
0x0003afc8 movs r1, 0x45 | r1 = 0x45;
0x0003afca ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x0003afcc mov r0, sl | r0 = sl;
0x0003afce str r4, [sp] | *(sp) = r4;
0x0003afd0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003afd4 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0003afd8 mov r2, r3 | r2 = r3;
0x0003afda str r3, [sp, 0x2c] | var_2ch = r3;
0x0003afdc ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x0003afe0 cmp r2, r3 |
| if (r2 >= r3) {
0x0003afe2 bge.w 0x3b40c | goto label_44;
| }
0x0003afe6 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0003afe8 movs r0, 0x25 | r0 = 0x25;
0x0003afea ldr.w r1, [sl, 0x68] | r1 = *((sl + 0x68));
0x0003afee add.w r3, r2, r2, lsl 2 | r3 = r2 + (r2 << 2);
0x0003aff2 adds r2, 1 | r2++;
0x0003aff4 str.w r2, [sl, 0x6c] | __asm ("str.w r2, [sl, 0x6c]");
0x0003aff8 add.w r2, r1, r3, lsl 2 | r2 = r1 + (r3 << 2);
0x0003affc strd sb, r4, [r2, 4] | __asm ("strd sb, r4, [r2, 4]");
0x0003b000 strd r4, r4, [r2, 0xc] | __asm ("strd r4, r4, [r2, 0xc]");
0x0003b004 str.w r0, [r1, r3, lsl 2] | __asm ("str.w r0, [r1, r3, lsl 2]");
| label_13:
0x0003b008 movs r3, 1 | r3 = 1;
0x0003b00a mov r2, sb | r2 = sb;
0x0003b00c movs r1, 0x5e | r1 = 0x5e;
0x0003b00e str r3, [sp] | *(sp) = r3;
0x0003b010 mov r0, sl | r0 = sl;
0x0003b012 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0003b014 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b018 ldr r6, [sp, 0x20] | r6 = var_20h;
0x0003b01a movs r4, 0 | r4 = 0;
0x0003b01c ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x0003b01e movs r1, 0x45 | r1 = 0x45;
0x0003b020 mov r0, sl | r0 = sl;
0x0003b022 ldr.w r2, [r6, 0x1d4] | r2 = *((r6 + 0x1d4));
0x0003b026 str r4, [sp] | *(sp) = r4;
0x0003b028 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b02c ldr r3, [sp, 0x54] | r3 = *(arg_54h);
0x0003b02e mov r2, fp | r2 = fp;
0x0003b030 mov r1, r4 | r1 = r4;
0x0003b032 mov r0, r8 | r0 = r8;
0x0003b034 str r4, [sp, 8] | var_8h = r4;
0x0003b036 str r3, [sp, 4] | var_4h = r3;
0x0003b038 movs r3, 4 | r3 = 4;
0x0003b03a str r3, [sp] | *(sp) = r3;
0x0003b03c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0003b03e bl 0x2bfcc | fcn_0002bfcc (r0, r1, r2, r3, r4, r5, r6);
0x0003b042 mov r3, fp | r3 = fp;
0x0003b044 mov r2, r4 | r2 = r4;
0x0003b046 movs r1, 0x45 | r1 = 0x45;
0x0003b048 mov r0, sl | r0 = sl;
0x0003b04a str r4, [sp] | *(sp) = r4;
0x0003b04c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b050 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0003b054 cmp r7, r4 |
0x0003b056 str r3, [sp, 0x40] | *(arg_40h) = r3;
| if (r7 > r4) {
0x0003b058 bgt.w 0x3af12 | goto label_8;
| }
| label_12:
0x0003b05c ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x0003b05e movs r7, 0 | r7 = 0;
0x0003b060 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0003b062 movs r1, 1 | r1 = 1;
0x0003b064 mov r0, r8 | r0 = r8;
0x0003b066 str r7, [sp, 8] | var_8h = r7;
0x0003b068 addw r3, r3, 0x988 | __asm ("addw r3, r3, aav.0x000000ff");
0x0003b06c str r3, [sp, 4] | var_4h = r3;
0x0003b06e movs r3, 2 | r3 = 2;
0x0003b070 str r3, [sp] | *(sp) = r3;
0x0003b072 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0003b074 bl 0x2bfcc | fcn_0002bfcc (r0, r1, r2, r3, r4, r5, r6);
0x0003b078 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0003b07a ldr.w r3, [r3, 0x1d4] | r3 = *((r3 + 0x1d4));
0x0003b07e cmp r3, 0 |
| if (r3 == 0) {
0x0003b080 beq.w 0x3b216 | goto label_45;
| }
0x0003b084 ldrd r6, r1, [sl, 0x6c] | __asm ("ldrd r6, r1, [sl, 0x6c]");
0x0003b088 cmp r6, r1 |
| if (r6 >= r1) {
0x0003b08a bge.w 0x3b578 | goto label_46;
| }
0x0003b08e ldr.w r0, [sl, 0x68] | r0 = *((sl + 0x68));
0x0003b092 add.w r3, r6, r6, lsl 2 | r3 = r6 + (r6 << 2);
0x0003b096 adds r4, r6, 1 | r4 = r6 + 1;
0x0003b098 mov lr, r3 | lr = r3;
0x0003b09a mov.w ip, 0x32 |
0x0003b09e str.w r4, [sl, 0x6c] | __asm ("str.w r4, [sl, 0x6c]");
0x0003b0a2 add.w r2, r0, r3, lsl 2 | r2 = r0 + (r3 << 2);
0x0003b0a6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0003b0a8 strd r7, r7, [r2, 0xc] | __asm ("strd r7, r7, [r2, 0xc]");
0x0003b0ac strd r3, r7, [r2, 4] | __asm ("strd r3, r7, [r2, 4]");
0x0003b0b0 str.w ip, [r0, lr, lsl 2] | __asm ("str.w ip, [r0, lr, lsl 2]");
| label_21:
0x0003b0b4 cmp r4, r1 |
| if (r4 >= r1) {
0x0003b0b6 bge.w 0x3b58e | goto label_47;
| }
0x0003b0ba ldr.w r0, [sl, 0x68] | r0 = *((sl + 0x68));
0x0003b0be add.w r3, r4, r4, lsl 2 | r3 = r4 + (r4 << 2);
0x0003b0c2 adds r2, r4, 1 | r2 = r4 + 1;
0x0003b0c4 ldr r7, [sp, 0x28] | r7 = var_28h;
0x0003b0c6 str.w r2, [sl, 0x6c] | __asm ("str.w r2, [sl, 0x6c]");
0x0003b0ca movs r1, 0 | r1 = 0;
0x0003b0cc mov.w ip, 0x12 |
0x0003b0d0 add.w r2, r0, r3, lsl 2 | r2 = r0 + (r3 << 2);
0x0003b0d4 strd r7, r1, [r2, 4] | __asm ("strd r7, r1, [r2, 4]");
0x0003b0d8 strd r1, r1, [r2, 0xc] | __asm ("strd r1, r1, [r2, 0xc]");
0x0003b0dc str.w ip, [r0, r3, lsl 2] | __asm ("str.w ip, [r0, r3, lsl 2]");
| label_22:
0x0003b0e0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0003b0e2 mov r2, sb | r2 = sb;
0x0003b0e4 movs r1, 0x19 | r1 = 0x19;
0x0003b0e6 mov r0, sl | r0 = sl;
0x0003b0e8 str r3, [sp] | *(sp) = r3;
0x0003b0ea movs r3, 1 | r3 = 1;
0x0003b0ec str r3, [sp, 4] | var_4h = r3;
0x0003b0ee movs r3, 0 | r3 = 0;
0x0003b0f0 bl 0x2b694 | fcn_0002b694 (r0, r1, r2, r3, r4, r5);
0x0003b0f4 ldr.w r3, [sl] | r3 = *(sl);
0x0003b0f8 cmp r6, 0 |
0x0003b0fa ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0003b0fe mov r7, r0 | r7 = r0;
0x0003b100 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0003b104 it lt |
| if (r6 >= 0) {
0x0003b106 addlt r6, r2, -1 | r6 = r2 + -1;
| }
0x0003b10a cmp r3, 0 |
| if (r3 != 0) {
0x0003b10c bne.w 0x3b428 | goto label_48;
| }
0x0003b110 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0003b114 add.w r6, r6, r6, lsl 2 | r6 += (r6 << 2);
0x0003b118 add.w r3, r3, r6, lsl 2 | r3 += (r6 << 2);
| label_15:
0x0003b11c str r2, [r3, 8] | *((r3 + 8)) = r2;
0x0003b11e movs r2, 0 | r2 = 0;
0x0003b120 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0003b122 movs r1, 5 | r1 = 5;
0x0003b124 str r2, [sp] | *(sp) = r2;
0x0003b126 mov r0, sl | r0 = sl;
0x0003b128 mov r2, sb | r2 = sb;
0x0003b12a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b12e ldr.w r3, [sl] | r3 = *(sl);
0x0003b132 cmp r4, 0 |
0x0003b134 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0003b138 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0003b13c it lt |
| if (r4 >= 0) {
0x0003b13e addlt r4, r2, -1 | r4 = r2 + -1;
| }
0x0003b142 cmp r3, 0 |
| if (r3 != 0) {
0x0003b144 bne.w 0x3b41e | goto label_49;
| }
0x0003b148 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0003b14c cmp r7, 0 |
0x0003b14e it lt |
| if (r7 >= 0) {
0x0003b150 addlt r7, r2, -1 | r7 = r2 + -1;
| }
0x0003b154 add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x0003b158 add.w r7, r7, r7, lsl 2 | r7 += (r7 << 2);
0x0003b15c add.w r4, r3, r4, lsl 2 | r4 = r3 + (r4 << 2);
0x0003b160 add.w r3, r3, r7, lsl 2 | r3 += (r7 << 2);
0x0003b164 str r2, [r4, 8] | *((r4 + 8)) = r2;
| label_14:
0x0003b166 str r2, [r3, 8] | *((r3 + 8)) = r2;
| do {
0x0003b168 ldr.w r3, [pc, 0x4a8] | r3 = *(0x0003b614);
0x0003b16c movs r4, 0 | r4 = 0;
0x0003b16e mov r1, r4 | r1 = r4;
0x0003b170 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0003b172 mov r0, r8 | r0 = r8;
0x0003b174 str r4, [sp, 8] | var_8h = r4;
0x0003b176 add r3, pc | r3 += pc;
0x0003b178 add.w r3, r3, 0x9b0 | r3 += 0x9b0;
0x0003b17c str r3, [sp, 4] | var_4h = r3;
0x0003b17e movs r3, 1 | r3 = 1;
0x0003b180 str r3, [sp] | *(sp) = r3;
0x0003b182 ldr r3, [sp, 0x64] | r3 = *(arg_64h);
0x0003b184 bl 0x2bfcc | fcn_0002bfcc (r0, r1, r2, r3, r4, r5, r6);
0x0003b188 ldr.w r3, [pc, 0x48c] |
0x0003b18c movs r1, 0x5d | r1 = 0x5d;
0x0003b18e ldr r6, [sp, 0x28] | r6 = var_28h;
0x0003b190 mov r0, sl | r0 = sl;
0x0003b192 ldr r2, [sp, 0x68] | r2 = *(arg_68h);
0x0003b194 add r3, pc | r3 = 0x767b0;
0x0003b196 str r4, [sp, 8] | var_8h = r4;
0x0003b198 str r3, [sp, 4] | var_4h = r3;
0x0003b19a movs r3, 3 | r3 = 3;
0x0003b19c str r6, [sp] | *(sp) = r6;
0x0003b19e bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0003b1a2 str r4, [sp] | *(sp) = r4;
0x0003b1a4 movs r1, 0x7b | r1 = 0x7b;
0x0003b1a6 ldr r4, [sp, 0x38] | r4 = *(arg_38h);
0x0003b1a8 mov r0, sl | r0 = sl;
0x0003b1aa ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x0003b1ac mov r2, r4 | r2 = r4;
0x0003b1ae bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b1b2 ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x0003b1b4 mov r2, r4 | r2 = r4;
0x0003b1b6 movs r1, 0x7c | r1 = 0x7c;
0x0003b1b8 mov r0, sl | r0 = sl;
0x0003b1ba str r3, [sp] | *(sp) = r3;
0x0003b1bc mov r3, r6 | r3 = r6;
0x0003b1be bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b1c2 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0003b1c6 cmp r3, 0 |
| if (r3 > 0) {
0x0003b1c8 ble 0x3b1dc |
0x0003b1ca ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0003b1ce add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0003b1d2 add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x0003b1d6 movs r1, 8 | r1 = 8;
0x0003b1d8 strh r1, [r2, -0x12] | *((r2 - 0x12)) = r1;
| }
0x0003b1dc ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0003b1de cmp r2, 0 |
0x0003b1e0 itt lt |
| if (r2 >= 0) {
0x0003b1e2 addlt r2, r3, -1 | r2 = r3 + -1;
| }
| if (r2 < 0) {
0x0003b1e6 str r2, [sp, 0x2c] | var_2ch = r2;
| }
0x0003b1e8 ldr.w r2, [sl] | r2 = *(sl);
0x0003b1ec ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
| if (r2 != 0) {
0x0003b1f0 cbnz r2, 0x3b226 | goto label_50;
| }
0x0003b1f2 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0003b1f4 add.w r1, r2, r2, lsl 2 | r1 = r2 + (r2 << 2);
0x0003b1f8 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0003b1fc add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
| label_10:
0x0003b200 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0003b202 b 0x3af34 | goto label_9;
| label_45:
0x0003b216 str r3, [sp] | *(sp) = r3;
0x0003b218 mov r2, sb | r2 = sb;
0x0003b21a ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0003b21c movs r1, 5 | r1 = 5;
0x0003b21e mov r0, sl | r0 = sl;
0x0003b220 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b224 b 0x3b168 |
| } while (1);
| label_50:
0x0003b226 ldr r2, [pc, 0x3f4] |
0x0003b228 add r2, pc | r2 = 0x7684a;
0x0003b22a adds r2, 4 | r2 += 4;
0x0003b22c b 0x3b200 | goto label_10;
| label_41:
0x0003b22e ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0003b232 mov r2, r3 | r2 = r3;
0x0003b234 str r3, [sp, 0x60] | *(arg_60h) = r3;
0x0003b236 ldr.w r3, [sl, 0x70] | r3 = *((sl + 0x70));
0x0003b23a cmp r2, r3 |
| if (r2 >= r3) {
0x0003b23c bge.w 0x3b5a0 | goto label_51;
| }
0x0003b240 ldr r1, [sp, 0x60] | r1 = *(arg_60h);
0x0003b242 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0003b246 add.w r2, r1, r1, lsl 2 | r2 = r1 + (r1 << 2);
0x0003b24a adds r1, 1 | r1++;
0x0003b24c str.w r1, [sl, 0x6c] | __asm ("str.w r1, [sl, 0x6c]");
0x0003b250 str r1, [sp, 0x40] | *(arg_40h) = r1;
0x0003b252 movs r1, 0xb | r1 = 0xb;
0x0003b254 str.w r1, [r3, r2, lsl 2] | __asm ("str.w r1, [r3, r2, lsl 2]");
0x0003b258 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x0003b25c strd r4, r4, [r3, 4] | __asm ("strd r4, r4, [r3, 4]");
0x0003b260 strd r4, r4, [r3, 0xc] | __asm ("strd r4, r4, [r3, 0xc]");
| label_23:
0x0003b264 cmp r7, 1 |
| if (r7 == 1) {
0x0003b266 beq.w 0x3b51a | goto label_52;
| }
| label_19:
0x0003b26a ldr r3, [sp, 0x5c] | r3 = *(arg_5ch);
0x0003b26c movs r4, 0 | r4 = 0;
0x0003b26e str r7, [sp, 0x30] | var_30h = r7;
0x0003b270 ldr r7, [sp, 0x28] | r7 = var_28h;
0x0003b272 subs r3, 4 | r3 -= 4;
0x0003b274 str r3, [sp, 0x78] | *(arg_78h) = r3;
0x0003b276 str r3, [sp, 0x18] | var_18h = r3;
0x0003b278 b 0x3b2e6 |
| while (r1 < r3) {
0x0003b27a ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0003b27e add.w r3, r1, r1, lsl 2 | r3 = r1 + (r1 << 2);
0x0003b282 add.w ip, r1, 1 |
0x0003b286 str.w ip, [sl, 0x6c] | __asm ("str.w ip, [sl, 0x6c]");
0x0003b28a mov.w ip, 0x34 |
0x0003b28e add.w lr, r2, r3, lsl 2 | lr = r2 + (r3 << 2);
0x0003b292 str.w r0, [lr, 0xc] | __asm ("str.w r0, [lr, 0xc]");
0x0003b296 movs r0, 0 | r0 = 0;
0x0003b298 str.w r7, [lr, 4] | __asm ("str.w r7, [lr, 4]");
0x0003b29c str.w r0, [lr, 8] | __asm ("str.w r0, [lr, 8]");
0x0003b2a0 str.w r0, [lr, 0x10] | __asm ("str.w r0, [lr, 0x10]");
0x0003b2a4 str.w ip, [r2, r3, lsl 2] | __asm ("str.w ip, [r2, r3, lsl 2]");
| label_11:
0x0003b2a8 mov r2, r6 | r2 = r6;
0x0003b2aa mvn r3, 1 | r3 = ~1;
0x0003b2ae mov r0, sl | r0 = sl;
0x0003b2b0 str r1, [sp, 0x1c] | var_1ch = r1;
0x0003b2b2 bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x0003b2b6 ldrd r3, r1, [sp, 0x18] | __asm ("ldrd r3, r1, [var_18h]");
0x0003b2ba str r1, [r3, 4]! | *((r3 += 4)) = r1;
0x0003b2be str r3, [sp, 0x18] | var_18h = r3;
0x0003b2c0 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0003b2c4 cmp r3, 0 |
0x0003b2c6 it gt |
| if (r3 <= 0) {
0x0003b2c8 ldrgt r2, [sl, 0x68] | r2 = *((sl + 0x68));
| }
0x0003b2cc add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0003b2d0 ittt gt |
| if (r3 <= 0) {
0x0003b2d2 addgt r2, r2, r3, lsl 2 | r2 += (r3 << 2);
| }
| if (r3 <= 0) {
0x0003b2d6 movgt r3, 0x80 | r3 = 0x80;
| }
| if (r3 > 0) {
0x0003b2d8 strh r3, [r2, -0x12] | *((r2 - 0x12)) = r3;
| }
0x0003b2dc adds r3, r4, 1 | r3 = r4 + 1;
0x0003b2de ldr r2, [sp, 0x30] | r2 = var_30h;
0x0003b2e0 cmp r2, r3 |
| if (r2 == r3) {
0x0003b2e2 beq 0x3b332 | goto label_53;
| }
0x0003b2e4 mov r4, r3 | r4 = r3;
0x0003b2e6 ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x0003b2e8 mov r0, r8 | r0 = r8;
0x0003b2ea ldr.w r1, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| r1 = *((r3 + offset_0));
0x0003b2ee bl 0x2d348 | fcn_0002d348 (r0, r1);
0x0003b2f2 movs r3, 0 | r3 = 0;
0x0003b2f4 mov r2, r4 | r2 = r4;
0x0003b2f6 movs r1, 0x45 | r1 = 0x45;
0x0003b2f8 str r3, [sp] | *(sp) = r3;
0x0003b2fa mov r6, r0 | r6 = r0;
0x0003b2fc mov r3, fp | r3 = fp;
0x0003b2fe mov r0, sl | r0 = sl;
0x0003b300 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b304 mov r3, r4 | r3 = r4;
0x0003b306 mov r2, sb | r2 = sb;
0x0003b308 movs r1, 0x5b | r1 = 0x5b;
0x0003b30a mov r0, sl | r0 = sl;
0x0003b30c str r7, [sp] | *(sp) = r7;
0x0003b30e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b312 ldrd r1, r3, [sl, 0x6c] | __asm ("ldrd r1, r3, [sl, 0x6c]");
0x0003b316 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0003b318 cmp r1, r3 |
0x0003b31a add.w r0, r4, r2 | r0 = r4 + r2;
0x0003b31e blt 0x3b27a |
| }
0x0003b320 movs r1, 0x34 | r1 = 0x34;
0x0003b322 str r0, [sp] | *(sp) = r0;
0x0003b324 movs r3, 0 | r3 = 0;
0x0003b326 mov r2, r7 | r2 = r7;
0x0003b328 mov r0, sl | r0 = sl;
0x0003b32a bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0003b32e mov r1, r0 | r1 = r0;
0x0003b330 b 0x3b2a8 | goto label_11;
| label_53:
0x0003b332 movs r3, 0 | r3 = 0;
0x0003b334 movs r1, 0x45 | r1 = 0x45;
0x0003b336 str r3, [sp] | *(sp) = r3;
0x0003b338 mov r0, sl | r0 = sl;
0x0003b33a mov r3, fp | r3 = fp;
0x0003b33c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b340 ldr r1, [sp, 0x6c] | r1 = *(arg_6ch);
0x0003b342 mov r0, sl | r0 = sl;
0x0003b344 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0003b348 ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x0003b34a ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0003b34e cmp r3, 0 |
0x0003b350 itt lt |
| if (r3 >= 0) {
0x0003b352 addlt r3, r1, -1 | r3 = r1 + -1;
| }
| if (r3 < 0) {
0x0003b356 str r3, [sp, 0x60] | *(arg_60h) = r3;
| }
0x0003b358 ldr.w r3, [sl] | r3 = *(sl);
0x0003b35c ldrb.w r0, [r3, 0x53] | r0 = *((r3 + 0x53));
0x0003b360 cmp r0, 0 |
| if (r0 != 0) {
0x0003b362 bne.w 0x3b512 | goto label_54;
| }
0x0003b366 ldr r3, [sp, 0x60] | r3 = *(arg_60h);
0x0003b368 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0003b36c add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x0003b370 add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
| label_18:
0x0003b374 movs r6, 0 | r6 = 0;
0x0003b376 str r5, [sp, 0x18] | var_18h = r5;
0x0003b378 str.w r8, [sp, 0x1c] | __asm ("str.w r8, [var_1ch]");
0x0003b37c mov r8, sb | r8 = sb;
0x0003b37e ldr r7, [sp, 0x78] | r7 = *(arg_78h);
0x0003b380 mov sb, r6 | sb = r6;
0x0003b382 ldr r5, [sp, 0x7c] | r5 = *(arg_7ch);
0x0003b384 ldr r6, [sp, 0x10] | r6 = var_10h;
0x0003b386 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x0003b388 b 0x3b396 |
| while (r4 != sb) {
0x0003b38a ldr.w r1, [sl] | r1 = *(sl);
0x0003b38e ldrb.w r0, [r1, 0x53] | r0 = *((r1 + 0x53));
0x0003b392 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0003b394 asrs r4, r5, 1 | r4 = r5 >> 1;
0x0003b396 ldr r3, [r7, 4]! | r3 = *((r7 += 4));
0x0003b39a mov lr, r5 | lr = r5;
0x0003b39c cmp r3, 0 |
0x0003b39e it lt |
| if (r3 >= 0) {
0x0003b3a0 addlt r3, r1, -1 | r3 = r1 + -1;
| }
0x0003b3a4 add.w ip, r3, r3, lsl 2 |
| if (r0 == 0) {
0x0003b3a8 cbnz r0, 0x3b3b2 |
0x0003b3aa ldr.w r0, [sl, 0x68] | r0 = *((sl + 0x68));
0x0003b3ae add.w lr, r0, ip, lsl 2 | lr = r0 + (ip << 2);
| }
0x0003b3b2 str.w r1, [lr, 8] | __asm ("str.w r1, [lr, 8]");
0x0003b3b6 add.w r1, sb, r6 | r1 = sb + r6;
0x0003b3ba mov r3, sb | r3 = sb;
0x0003b3bc str r1, [sp] | *(sp) = r1;
0x0003b3be mov r2, r8 | r2 = r8;
0x0003b3c0 movs r1, 0x5b | r1 = 0x5b;
0x0003b3c2 mov r0, sl | r0 = sl;
0x0003b3c4 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b3c8 cmp r4, sb |
0x0003b3ca add.w r1, sb, 1 | r1 = sb + 1;
0x0003b3ce mov sb, r1 | sb = r1;
0x0003b3d0 bne 0x3b38a |
| }
0x0003b3d2 ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0003b3d6 mov sb, r8 | sb = r8;
0x0003b3d8 ldrd r5, r8, [sp, 0x18] | __asm ("ldrd r5, r8, [var_18h]");
0x0003b3dc ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0003b3e0 cmn r2, r3 |
| if (r2 < r3) {
0x0003b3e2 bmi.w 0x3b56c | goto label_55;
| }
0x0003b3e6 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0003b3e8 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0003b3ea ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0003b3ee lsls r3, r3, 2 | r3 <<= 2;
0x0003b3f0 rsbs r3, r3, 0 | r3 -= ;
0x0003b3f2 str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_20:
0x0003b3f4 ldr r1, [sp, 0x5c] | r1 = *(arg_5ch);
0x0003b3f6 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0003b3f8 bl 0x159dc | fcn_000159dc (r0, r1);
0x0003b3fc b 0x3b05c | goto label_12;
| label_44:
0x0003b40c mov r3, r4 | r3 = r4;
0x0003b40e mov r2, sb | r2 = sb;
0x0003b410 movs r1, 0x25 | r1 = 0x25;
0x0003b412 mov r0, sl | r0 = sl;
0x0003b414 str r4, [sp] | *(sp) = r4;
0x0003b416 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0003b41a str r0, [sp, 0x2c] | var_2ch = r0;
0x0003b41c b 0x3b008 | goto label_13;
| label_49:
0x0003b41e ldr r3, [pc, 0x200] |
0x0003b420 add r3, pc | r3 = 0x76a46;
0x0003b422 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x0003b424 adds r3, 4 | r3 += 4;
0x0003b426 b 0x3b166 | goto label_14;
| label_48:
0x0003b428 ldr r3, [pc, 0x1f8] |
0x0003b42a add r3, pc | r3 = 0x76a52;
0x0003b42c adds r3, 4 | r3 += 4;
0x0003b42e b 0x3b11c | goto label_15;
| label_43:
0x0003b430 ldrh r4, [r5, 0x32] | r4 = *((r5 + 0x32));
0x0003b432 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0003b434 subs r7, r4, 1 | r7 = r4 - 1;
0x0003b436 ldr r2, [r3] | r2 = *(r3);
0x0003b438 b 0x3af84 | goto label_16;
| label_42:
0x0003b43a ldr r3, [sp, 0x3c] | r3 = *(arg_4h);
0x0003b43c and r3, r3, 1 | r3 &= 1;
0x0003b440 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0003b442 cmp r2, 0 |
0x0003b444 ite ne |
| if (r2 == 0) {
0x0003b446 movne r3, 0 | r3 = 0;
| }
| if (r2 != 0) {
0x0003b448 andeq r3, r3, 1 | r3 &= 1;
| }
0x0003b44c cmp r3, 0 |
| if (r3 == 0) {
0x0003b44e beq.w 0x3adfc | goto label_17;
| }
0x0003b452 movs r5, 0 | r5 = 0;
0x0003b454 ldr r3, [sp, 0x64] | r3 = *(arg_64h);
0x0003b456 ldr r2, [sp, 0xac] | r2 = *(arg_ach);
0x0003b458 movs r1, 0x5e | r1 = 0x5e;
0x0003b45a mov r0, sl | r0 = sl;
0x0003b45c str r5, [sp] | *(sp) = r5;
0x0003b45e bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b462 ldrd r4, r3, [sl, 0x6c] | __asm ("ldrd r4, r3, [sl, 0x6c]");
0x0003b466 cmp r4, r3 |
| if (r4 >= r3) {
0x0003b468 bge.w 0x3b5c6 | goto label_56;
| }
0x0003b46c add.w r3, r4, r4, lsl 2 | r3 = r4 + (r4 << 2);
0x0003b470 ldr.w r1, [sl, 0x68] | r1 = *((sl + 0x68));
0x0003b474 ldr r6, [sp, 0x64] | r6 = *(arg_64h);
0x0003b476 adds r2, r4, 1 | r2 = r4 + 1;
0x0003b478 lsls r3, r3, 2 | r3 <<= 2;
0x0003b47a str.w r2, [sl, 0x6c] | __asm ("str.w r2, [sl, 0x6c]");
0x0003b47e movs r0, 0x14 | r0 = 0x14;
0x0003b480 adds r2, r1, r3 | r2 = r1 + r3;
0x0003b482 strd r6, r5, [r2, 4] | __asm ("strd r6, r5, [r2, 4]");
0x0003b486 strd r5, r5, [r2, 0xc] | __asm ("strd r5, r5, [r2, 0xc]");
0x0003b48a str r0, [r1, r3] | *((r1 + r3)) = r0;
| label_25:
0x0003b48c movs r5, 0 | r5 = 0;
0x0003b48e ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x0003b490 mov r2, r5 | r2 = r5;
0x0003b492 movs r1, 0x48 | r1 = 0x48;
0x0003b494 str r5, [sp] | *(sp) = r5;
0x0003b496 mov r0, sl | r0 = sl;
0x0003b498 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b49c ldr r3, [pc, 0x188] |
0x0003b49e movs r1, 0x5d | r1 = 0x5d;
0x0003b4a0 ldr r6, [sp, 0x28] | r6 = var_28h;
0x0003b4a2 mov r0, sl | r0 = sl;
0x0003b4a4 ldr r2, [sp, 0x68] | r2 = *(arg_68h);
0x0003b4a6 add r3, pc | r3 = 0x76ad2;
0x0003b4a8 str r5, [sp, 8] | var_8h = r5;
0x0003b4aa str r3, [sp, 4] | var_4h = r3;
0x0003b4ac movs r3, 3 | r3 = 3;
0x0003b4ae str r6, [sp] | *(sp) = r6;
0x0003b4b0 bl 0x2b5f4 | fcn_0002b5f4 (r0, r1, r2, r3, r4, r5);
0x0003b4b4 str r5, [sp] | *(sp) = r5;
0x0003b4b6 movs r1, 0x7b | r1 = 0x7b;
0x0003b4b8 ldr r5, [sp, 0x38] | r5 = *(arg_38h);
0x0003b4ba mov r0, sl | r0 = sl;
0x0003b4bc ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x0003b4be mov r2, r5 | r2 = r5;
0x0003b4c0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b4c4 ldr r1, [sp, 0xa8] | r1 = *(arg_a8h);
0x0003b4c6 mov r3, r6 | r3 = r6;
0x0003b4c8 mov r2, r5 | r2 = r5;
0x0003b4ca mov r0, sl | r0 = sl;
0x0003b4cc str r1, [sp] | *(sp) = r1;
0x0003b4ce movs r1, 0x7c | r1 = 0x7c;
0x0003b4d0 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b4d4 ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0003b4d8 cmp r3, 0 |
| if (r3 > 0) {
0x0003b4da ble 0x3b4ee |
0x0003b4dc ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0003b4e0 add.w r1, r3, r3, lsl 2 | r1 = r3 + (r3 << 2);
0x0003b4e4 add.w r2, r2, r1, lsl 2 | r2 += (r1 << 2);
0x0003b4e8 movs r1, 8 | r1 = 8;
0x0003b4ea strh r1, [r2, -0x12] | *((r2 - 0x12)) = r1;
| }
0x0003b4ee ldr.w r2, [sl] | r2 = *(sl);
0x0003b4f2 cmp r4, 0 |
0x0003b4f4 it lt |
| if (r4 >= 0) {
0x0003b4f6 addlt r4, r3, -1 | r4 = r3 + -1;
| }
0x0003b4fa ldrb.w r2, [r2, 0x53] | r2 = *((r2 + 0x53));
0x0003b4fe cmp r2, 0 |
| if (r2 != 0) {
0x0003b500 bne 0x3b5ba | goto label_57;
| }
0x0003b502 ldr.w r2, [sl, 0x68] | r2 = *((sl + 0x68));
0x0003b506 add.w r4, r4, r4, lsl 2 | r4 += (r4 << 2);
0x0003b50a add.w r2, r2, r4, lsl 2 | r2 += (r4 << 2);
| label_24:
0x0003b50e str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0003b510 b 0x3adfc | goto label_17;
| label_54:
0x0003b512 ldr r3, [pc, 0x118] |
0x0003b514 add r3, pc | r3 = 0x76b46;
0x0003b516 adds r3, 4 | r3 += 4;
0x0003b518 b 0x3b374 | goto label_18;
| label_52:
0x0003b51a ldrh r3, [r5, 0x32] | r3 = *((r5 + 0x32));
0x0003b51c cmp r3, 1 |
| if (r3 != 1) {
0x0003b51e bne.w 0x3b26a | goto label_19;
| }
0x0003b522 ldrb.w r3, [r5, 0x36] | r3 = *((r5 + 0x36));
0x0003b526 cmp r3, 0 |
| if (r3 == 0) {
0x0003b528 beq.w 0x3b26a | goto label_19;
| }
0x0003b52c movs r3, 0 | r3 = 0;
0x0003b52e ldr r2, [sp, 0x10] | r2 = var_10h;
0x0003b530 str r3, [sp] | *(sp) = r3;
0x0003b532 movs r1, 0x33 | r1 = 0x33;
0x0003b534 ldr r3, [sp, 0x6c] | r3 = *(arg_6ch);
0x0003b536 mov r0, sl | r0 = sl;
0x0003b538 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0003b53c b 0x3b26a | goto label_19;
| label_55:
0x0003b56c ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0003b56e mov r1, sl | r1 = sl;
0x0003b570 rsbs r2, r3, 0 | r2 = r3 - ;
0x0003b572 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0003b576 b 0x3b3f4 | goto label_20;
| label_46:
0x0003b578 movs r1, 0x32 | r1 = 0x32;
0x0003b57a ldr r2, [sp, 0x28] | r2 = var_28h;
0x0003b57c mov r3, r7 | r3 = r7;
0x0003b57e mov r0, sl | r0 = sl;
0x0003b580 str r7, [sp] | *(sp) = r7;
0x0003b582 bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0003b586 ldrd r4, r1, [sl, 0x6c] | __asm ("ldrd r4, r1, [sl, 0x6c]");
0x0003b58a mov r6, r0 | r6 = r0;
0x0003b58c b 0x3b0b4 | goto label_21;
| label_47:
0x0003b58e movs r3, 0 | r3 = 0;
0x0003b590 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0003b592 movs r1, 0x12 | r1 = 0x12;
0x0003b594 mov r0, sl | r0 = sl;
0x0003b596 str r3, [sp] | *(sp) = r3;
0x0003b598 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0003b59c mov r4, r0 | r4 = r0;
0x0003b59e b 0x3b0e0 | goto label_22;
| label_51:
0x0003b5a0 mov r3, r4 | r3 = r4;
0x0003b5a2 mov r2, r4 | r2 = r4;
0x0003b5a4 movs r1, 0xb | r1 = 0xb;
0x0003b5a6 mov r0, sl | r0 = sl;
0x0003b5a8 str r4, [sp] | *(sp) = r4;
0x0003b5aa bl 0x2add4 | fcn_0002add4 (r0, r1, r2, r3, r4);
0x0003b5ae ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0003b5b2 str r3, [sp, 0x40] | *(arg_40h) = r3;
0x0003b5b4 subs r3, 1 | r3--;
0x0003b5b6 str r3, [sp, 0x60] | *(arg_60h) = r3;
0x0003b5b8 b 0x3b264 | goto label_23;
| label_57:
0x0003b5ba ldr r2, [pc, 0x74] |
0x0003b5bc add r2, pc | r2 = 0x76bf2;
0x0003b5be adds r2, 4 | r2 += 4;
0x0003b5c0 b 0x3b50e | goto label_24;
| label_56:
0x0003b5c6 ldr r2, [sp, 0x64] | r2 = *(arg_64h);
0x0003b5c8 mov r3, r5 | r3 = r5;
0x0003b5ca movs r1, 0x14 | r1 = 0x14;
0x0003b5cc mov r0, sl | r0 = sl;
0x0003b5ce str r5, [sp] | *(sp) = r5;
0x0003b5d0 bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0003b5d4 mov r4, r0 | r4 = r0;
0x0003b5d6 b 0x3b48c | goto label_25;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x82ce0 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_exec () | void sqlite3_exec (int16_t arg_4h, int16_t arg_58h, int16_t arg_e0h, int16_t arg_128h, int16_t arg_170h, int16_t arg_278h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_24h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h_2;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00082ce0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00082ce4 mov r7, r2 | r7 = r2;
0x00082ce6 sub sp, 0x34 |
0x00082ce8 ldr r2, [pc, 0x3b4] |
0x00082cea mov sb, r0 | sb = r0;
0x00082cec mov sl, r1 | sl = r1;
0x00082cee str r3, [sp, 8] | var_8h = r3;
0x00082cf0 ldr r3, [pc, 0x3b0] | r3 = *(0x830a4);
0x00082cf2 add r2, pc | r2 = 0x105d96;
0x00082cf4 ldr r3, [r2, r3] |
0x00082cf6 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00082cf8 str r3, [sp, 0x2c] | var_2ch = r3;
0x00082cfa mov.w r3, 0 | r3 = 0;
0x00082cfe movs r3, 0 | r3 = 0;
0x00082d00 str r3, [sp, 0x28] | var_28h = r3;
0x00082d02 ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00082d04 str r3, [sp, 0x10] | var_10h = r3;
0x00082d06 bl 0x23f1c | r0 = fcn_00023f1c (r0);
0x00082d0a cmp r0, 0 |
| if (r0 == 0) {
0x00082d0c beq.w 0x83006 | goto label_21;
| }
0x00082d10 cmp.w sl, 0 |
| if (sl == 0) {
0x00082d14 beq.w 0x82ffe | goto label_22;
| }
| label_10:
0x00082d18 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x00082d1c blx 0x8254 | fcn_00008254 ();
0x00082d20 ldr.w r3, [sb, 0x10c] | r3 = *((sb + 0x10c));
0x00082d24 movs r1, 0 | r1 = 0;
0x00082d26 str.w r1, [sb, 0x40] | __asm ("str.w r1, [sb, 0x40]");
| if (r3 != 0) {
0x00082d2a cbz r3, 0x82d32 |
0x00082d2c mov r0, sb | r0 = sb;
0x00082d2e bl 0x1663c | fcn_0001663c (r0, r1);
| }
0x00082d32 ldr r3, [pc, 0x374] |
0x00082d34 add r3, pc | r3 = 0x105de2;
0x00082d36 str r3, [sp, 0x1c] | var_1ch = r3;
0x00082d38 movw r3, 0xda3 |
0x00082d3c movt r3, 0x2df2 | r3 = 0x2df20da3;
0x00082d40 str r3, [sp, 0x14] | var_14h_2 = r3;
0x00082d42 movw r3, 0x2973 |
0x00082d46 movt r3, 0x319c | r3 = 0x319c2973;
0x00082d4a str r3, [sp, 0x18] | var_18h = r3;
| label_1:
0x00082d4c ldrb.w r5, [sl] | r5 = *(sl);
0x00082d50 cmp r5, 0 |
| if (r5 == 0) {
0x00082d52 beq.w 0x83070 | goto label_23;
| }
0x00082d56 add r6, sp, 0x28 | r6 += var_28h;
0x00082d58 add r5, sp, 0x24 | r5 += var_24h_2;
0x00082d5a movs r4, 0 | r4 = 0;
0x00082d5c mov r1, sl | r1 = sl;
| label_6:
0x00082d5e mov r3, r6 | r3 = r6;
0x00082d60 mov.w r2, -1 | r2 = -1;
0x00082d64 mov r0, sb | r0 = sb;
0x00082d66 str r5, [sp] | *(sp) = r5;
0x00082d68 str r4, [sp, 0x28] | var_28h = r4;
0x00082d6a blx 0x8490 | r0 = fcn_00008490 ();
0x00082d6e cmp r0, 0 |
| if (r0 != 0) {
0x00082d70 bne.w 0x82f7c | goto label_24;
| }
0x00082d74 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00082d76 cmp r2, 0 |
| if (r2 == 0) {
0x00082d78 beq.w 0x82fa6 | goto label_25;
| }
0x00082d7c mov r8, r0 | r8 = r0;
0x00082d7e str r0, [sp, 0xc] | var_ch_2 = r0;
0x00082d80 mov r6, r8 | r6 = r8;
0x00082d82 mov r0, r2 | r0 = r2;
0x00082d84 mov r5, r8 | r5 = r8;
0x00082d86 mov sl, r8 | sl = r8;
| label_0:
0x00082d88 blx 0x809c | r0 = fcn_0000809c ();
0x00082d8c mov r4, r0 | r4 = r0;
0x00082d8e cmp r7, 0 |
| if (r7 == 0) {
0x00082d90 beq 0x82e3c | goto label_26;
| }
0x00082d92 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x00082d94 beq.w 0x82ea0 | goto label_27;
| }
0x00082d98 eor r5, r5, 1 | r5 ^= 1;
0x00082d9c cmp r0, 0x65 |
0x00082d9e ite ne |
| if (r0 == 0x65) {
0x00082da0 movne r5, 0 | r5 = 0;
| }
| if (r0 != 0x65) {
0x00082da2 andeq r5, r5, 1 | r5 &= 1;
| }
0x00082da6 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00082da8 cmp r5, 0 |
| if (r5 == 0) {
0x00082daa beq 0x82e46 | goto label_28;
| }
0x00082dac ldr.w r3, [sb, 0x20] | r3 = *((sb + 0x20));
0x00082db0 lsls r1, r3, 0x17 | r1 = r3 << 0x17;
| if (r1 >= r3) {
0x00082db2 bpl 0x82e46 | goto label_28;
| }
0x00082db4 blx 0x8190 | r0 = fcn_00008190 ();
0x00082db8 lsls r2, r0, 3 | r2 = r0 << 3;
0x00082dba mov r6, r0 | r6 = r0;
0x00082dbc adds r2, 4 | r2 += 4;
| label_20:
0x00082dbe movs r3, 0 | r3 = 0;
0x00082dc0 mov r0, sb | r0 = sb;
0x00082dc2 bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x00082dc6 mov r8, r0 | r8 = r0;
0x00082dc8 cmp r0, 0 |
| if (r0 == 0) {
0x00082dca beq.w 0x8307a | goto label_29;
| }
0x00082dce cmp r6, 0 |
| if (r6 <= 0) {
0x00082dd0 ble.w 0x83048 | goto label_30;
| }
0x00082dd4 sub.w fp, r0, 4 |
0x00082dd8 movs r5, 0 | r5 = 0;
| do {
0x00082dda mov r1, r5 | r1 = r5;
0x00082ddc ldr r0, [sp, 0x28] | r0 = var_28h;
0x00082dde adds r5, 1 | r5++;
0x00082de0 blx 0x7d5c | fcn_00007d5c ();
0x00082de4 cmp r5, r6 |
0x00082de6 str r0, [fp, 4]! | *(arg_4h) = r0;
0x00082dea bne 0x82dda |
| } while (r5 != r6);
0x00082dec cmp r4, 0x64 |
| if (r4 == 0x64) {
0x00082dee beq.w 0x83088 | goto label_31;
| }
| label_13:
0x00082df2 ldr r0, [sp, 8] | r0 = var_8h;
0x00082df4 mov r3, r8 | r3 = r8;
0x00082df6 mov r2, sl | r2 = sl;
0x00082df8 mov r1, r6 | r1 = r6;
0x00082dfa blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00082dfc cmp r0, 0 |
| if (r0 == 0) {
0x00082dfe beq.w 0x83084 | goto label_32;
| }
| label_3:
0x00082e02 ldr r4, [sp, 0x28] | r4 = var_28h;
0x00082e04 movw r1, 0xda3 |
0x00082e08 movw r3, 0x2973 |
0x00082e0c movt r1, 0x2df2 | r1 = 0x2df20da3;
0x00082e10 movt r3, 0x319c | r3 = 0x319c2973;
0x00082e14 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00082e16 cmp r2, r3 |
0x00082e18 it ne |
| if (r2 != r3) {
0x00082e1a cmpne r2, r1 | __asm ("cmpne r2, r1");
| }
| if (r2 == r3) {
0x00082e1c beq.w 0x8302a | goto label_33;
| }
| label_12:
0x00082e20 movs r5, 4 | r5 = 4;
0x00082e22 mov r0, r4 | r0 = r4;
0x00082e24 bl 0x1a984 | fcn_0001a984 (r0);
0x00082e28 movs r3, 0 | r3 = 0;
0x00082e2a mov r1, r5 | r1 = r5;
0x00082e2c mov r0, sb | r0 = sb;
0x00082e2e str.w r5, [sb, 0x40] | __asm ("str.w r5, [sb, 0x40]");
0x00082e32 str r3, [sp, 0x28] | var_28h = r3;
0x00082e34 str r5, [sp, 0xc] | var_ch_2 = r5;
0x00082e36 bl 0x1663c | fcn_0001663c (r0, r1);
0x00082e3a b 0x82ee4 | goto label_34;
| label_26:
0x00082e3c cmp r0, 0x64 |
| if (r0 != 0x64) {
0x00082e3e bne.w 0x83084 | goto label_32;
| }
| label_4:
0x00082e42 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00082e44 b 0x82d88 | goto label_0;
| label_28:
0x00082e46 mov r6, r0 | r6 = r0;
| label_18:
0x00082e48 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00082e4a ldrd r2, r1, [sp, 0x14] | __asm ("ldrd r2, r1, [var_14h_2]");
0x00082e4e cmp r3, r1 |
0x00082e50 it ne |
| if (r3 != r1) {
0x00082e52 cmpne r3, r2 | __asm ("cmpne r3, r2");
| }
| if (r3 == r1) {
0x00082e54 beq.w 0x82ff4 | goto label_35;
| }
| label_9:
0x00082e58 mov r0, r6 | r0 = r6;
0x00082e5a bl 0x1a984 | fcn_0001a984 (r0);
0x00082e5e ldr.w sl, [sp, 0x24] | sl = var_24h_2;
0x00082e62 movs r3, 0 | r3 = 0;
0x00082e64 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00082e66 str r3, [sp, 0x28] | var_28h = r3;
0x00082e68 ldrb.w r3, [sl] | r3 = *(sl);
0x00082e6c add r3, r2 | r3 += r2;
0x00082e6e ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00082e72 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 >= r3) {
0x00082e74 bpl 0x82e88 | goto label_36;
| }
0x00082e76 ldr r2, [pc, 0x234] |
0x00082e78 add r2, pc | r2 = 0x105f2a;
| do {
0x00082e7a ldrb r3, [sl, 1]! | r3 = *((sl += 1));
0x00082e7e add r3, r2 | r3 += r2;
0x00082e80 ldrb.w r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00082e84 lsls r3, r3, 0x1f | r3 <<= 0x1f;
0x00082e86 bmi 0x82e7a |
| } while (r3 < r3);
| label_36:
0x00082e88 cmp.w r8, 0 |
| if (r8 != 0) {
0x00082e8c beq 0x82e96 |
0x00082e8e mov r1, r8 | r1 = r8;
0x00082e90 mov r0, sb | r0 = sb;
0x00082e92 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x00082e96 ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x00082e98 cmp r3, 0 |
| if (r3 == 0) {
0x00082e9a beq.w 0x82d4c | goto label_1;
| }
0x00082e9e b 0x82f7e | goto label_37;
| label_27:
0x00082ea0 cmp r5, 0 |
| if (r5 == 0) {
0x00082ea2 beq.w 0x8308e | goto label_38;
| }
0x00082ea6 cmp r6, 0 |
0x00082ea8 add.w sl, r8, r6, lsl 2 | sl = r8 + (r6 << 2);
| if (r6 <= 0) {
0x00082eac ble.w 0x83052 | goto label_39;
| }
| label_19:
0x00082eb0 sub.w r4, sl, 4 | r4 = sl - 4;
0x00082eb4 movs r5, 0 | r5 = 0;
0x00082eb6 b 0x82ebe |
| while (r0 != 0) {
| label_2:
0x00082eb8 adds r5, 1 | r5++;
0x00082eba cmp r5, r6 |
| if (r5 >= r6) {
0x00082ebc bge 0x82f60 | goto label_40;
| }
0x00082ebe ldr r0, [sp, 0x28] | r0 = var_28h;
0x00082ec0 mov r1, r5 | r1 = r5;
0x00082ec2 blx 0x81c4 | fcn_000081c4 ();
0x00082ec6 str r0, [r4, 4]! | *((r4 += 4)) = r0;
0x00082eca cmp r0, 0 |
0x00082ecc bne 0x82eb8 |
| }
0x00082ece ldr r0, [sp, 0x28] | r0 = var_28h;
0x00082ed0 mov r1, r5 | r1 = r5;
0x00082ed2 blx 0x8090 | r0 = fcn_00008090 ();
0x00082ed6 cmp r0, 5 |
| if (r0 == 5) {
0x00082ed8 beq 0x82eb8 | goto label_2;
| }
0x00082eda movs r3, 0x64 | r3 = 0x64;
0x00082edc mov r0, sb | r0 = sb;
0x00082ede str r3, [sp, 0xc] | var_ch_2 = r3;
0x00082ee0 bl 0x101ec | fcn_000101ec (r0);
| label_34:
0x00082ee4 ldr r6, [sp, 0x28] | r6 = var_28h;
| if (r6 != 0) {
0x00082ee6 cbz r6, 0x82f10 |
0x00082ee8 ldr r5, [r6, 0x14] | r5 = *((r6 + 0x14));
0x00082eea movw r2, 0xda3 |
0x00082eee movw r3, 0x2973 |
0x00082ef2 movt r2, 0x2df2 | r2 = 0x2df20da3;
0x00082ef6 movt r3, 0x319c | r3 = 0x319c2973;
0x00082efa cmp r5, r3 |
0x00082efc it ne |
| if (r5 != r3) {
0x00082efe cmpne r5, r2 | __asm ("cmpne r5, r2");
| }
0x00082f00 ite eq |
| if (r5 != r3) {
0x00082f02 moveq r5, 1 | r5 = 1;
| }
| if (r5 == r3) {
0x00082f04 movne r5, 0 | r5 = 0;
| }
| if (r5 == r3) {
0x00082f06 beq.w 0x8305a | goto label_41;
| }
0x00082f0a mov r0, r6 | r0 = r6;
0x00082f0c bl 0x1a984 | fcn_0001a984 (r0);
| }
0x00082f10 movs r5, 1 | r5 = 1;
0x00082f12 cmp.w r8, 0 |
| if (r8 == 0) {
0x00082f16 beq 0x82fb6 | goto label_42;
| }
| label_15:
0x00082f18 mov r1, r8 | r1 = r8;
0x00082f1a mov r0, sb | r0 = sb;
0x00082f1c bl 0x159dc | fcn_000159dc (r0, r1);
| label_5:
0x00082f20 ldrb.w r3, [sb, 0x53] | r3 = *((sb + 0x53));
0x00082f24 cmp r3, 0 |
0x00082f26 it ne |
| if (r3 == 0) {
0x00082f28 orrne r5, r5, 1 | r5 |= 1;
| }
0x00082f2c mov r4, r5 | r4 = r5;
0x00082f2e cmp r5, 0 |
| if (r5 != 0) {
0x00082f30 bne 0x82fb6 | goto label_42;
| }
| label_7:
0x00082f32 ldr r2, [sp, 0x10] | r2 = var_10h;
| if (r2 != 0) {
0x00082f34 cbz r2, 0x82f3a |
0x00082f36 movs r3, 0 | r3 = 0;
0x00082f38 str r3, [r2] | *(r2) = r3;
| }
| label_8:
0x00082f3a ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x00082f3e blx 0x81d4 | fcn_000081d4 ();
| label_11:
0x00082f42 ldr r2, [pc, 0x16c] |
0x00082f44 ldr r3, [pc, 0x15c] | r3 = *(0x830a4);
0x00082f46 add r2, pc | r2 = 0x105ffc;
0x00082f48 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00082f4a ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00082f4c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00082f4e eors r2, r3 | r2 ^= r3;
0x00082f50 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00082f54 bne.w 0x8309c | goto label_43;
| }
0x00082f58 mov r0, r4 | r0 = r4;
0x00082f5a add sp, 0x34 |
0x00082f5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_40:
0x00082f60 add.w r5, sl, r5, lsl 2 | r5 = sl + (r5 << 2);
| label_14:
0x00082f64 movs r3, 0 | r3 = 0;
0x00082f66 ldr r0, [sp, 8] | r0 = var_8h;
0x00082f68 str r3, [r5] | *(r5) = r3;
0x00082f6a mov r2, sl | r2 = sl;
0x00082f6c mov r3, r8 | r3 = r8;
0x00082f6e mov r1, r6 | r1 = r6;
0x00082f70 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00082f72 cmp r0, 0 |
| if (r0 != 0) {
0x00082f74 bne.w 0x82e02 | goto label_3;
| }
0x00082f78 movs r5, 1 | r5 = 1;
0x00082f7a b 0x82e42 | goto label_4;
| label_24:
0x00082f7c str r0, [sp, 0xc] | var_ch_2 = r0;
| label_37:
0x00082f7e ldr r6, [sp, 0x28] | r6 = var_28h;
0x00082f80 movs r5, 1 | r5 = 1;
| if (r6 == 0) {
0x00082f82 cbz r6, 0x82fb6 | goto label_42;
| }
| label_16:
0x00082f84 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x00082f86 movw r1, 0xda3 |
0x00082f8a movw r3, 0x2973 |
0x00082f8e movt r1, 0x2df2 | r1 = 0x2df20da3;
0x00082f92 movt r3, 0x319c | r3 = 0x319c2973;
0x00082f96 cmp r2, r3 |
0x00082f98 it ne |
| if (r2 != r3) {
0x00082f9a cmpne r2, r1 | __asm ("cmpne r2, r1");
| }
| if (r2 == r3) {
0x00082f9c beq 0x83056 | goto label_44;
| }
0x00082f9e mov r0, r6 | r0 = r6;
0x00082fa0 bl 0x1a984 | fcn_0001a984 (r0);
0x00082fa4 b 0x82f20 | goto label_5;
| label_25:
0x00082fa6 ldr r1, [sp, 0x24] | r1 = var_24h_2;
0x00082fa8 ldrb r3, [r1] | r3 = *(r1);
0x00082faa cmp r3, 0 |
| if (r3 != 0) {
0x00082fac bne.w 0x82d5e | goto label_6;
| }
0x00082fb0 mov r5, r0 | r5 = r0;
0x00082fb2 str r0, [sp, 0xc] | var_ch_2 = r0;
0x00082fb4 b 0x82f20 | goto label_5;
| label_42:
0x00082fb6 ldr r1, [sp, 0xc] | r1 = var_ch_2;
0x00082fb8 mov r0, sb | r0 = sb;
0x00082fba bl 0x166c8 | fcn_000166c8 (r0, r1);
0x00082fbe ldr r3, [sp, 0x10] | r3 = var_10h;
0x00082fc0 mov r4, r0 | r4 = r0;
0x00082fc2 cmp r0, 0 |
0x00082fc4 it ne |
| if (r0 == 0) {
0x00082fc6 cmpne r3, 0 | __asm ("cmpne r3, 0");
| goto label_45;
| }
| if (r0 == 0) {
| label_45:
0x00082fc8 beq 0x82f32 | goto label_7;
| }
0x00082fca mov r0, sb | r0 = sb;
0x00082fcc blx 0x805c | r0 = fcn_0000805c ();
0x00082fd0 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00082fd2 cbz r0, 0x83032 |
0x00082fd4 blx 0x8160 | r0 = fcn_00008160 ();
0x00082fd8 adds r7, r0, 1 | r7 = r0 + 1;
0x00082fda movs r1, 0 | r1 = 0;
0x00082fdc mov r0, r7 | r0 = r7;
0x00082fde bl 0x12abc | r0 = fcn_00012abc (r0);
0x00082fe2 mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00082fe4 cbz r0, 0x83032 | goto label_46;
| }
0x00082fe6 mov r2, r7 | r2 = r7;
0x00082fe8 mov r1, r5 | r1 = r5;
0x00082fea blx 0x7dcc | fcn_00007dcc ();
0x00082fee ldr r3, [sp, 0x10] | r3 = var_10h;
0x00082ff0 str r6, [r3] | *(r3) = r6;
0x00082ff2 b 0x82f3a | goto label_8;
| label_35:
0x00082ff4 mov r0, r6 | r0 = r6;
0x00082ff6 bl 0x5a870 | fcn_0005a870 (r0);
0x00082ffa str r0, [sp, 0xc] | var_ch_2 = r0;
0x00082ffc b 0x82e58 | goto label_9;
| label_22:
0x00082ffe ldr.w sl, [pc, 0xb4] | sl = *(0x000830b4);
0x00083002 add sl, pc | sl += pc;
0x00083004 b 0x82d18 | goto label_10;
| label_21:
0x00083006 blx 0x7f8c | fcn_00007f8c ();
0x0008300a ldr r2, [pc, 0xac] |
0x0008300c add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x00083010 ldr r1, [pc, 0xa8] |
0x00083012 movw r3, 0xecd6 |
0x00083016 str r4, [sp] | *(sp) = r4;
0x00083018 movt r3, 1 | r3 = 0x1ecd6;
0x0008301c add r2, pc | r2 = 0x1060da;
0x0008301e movs r0, 0x15 | r0 = 0x15;
0x00083020 add r1, pc | r1 = 0x1060e0;
0x00083022 movs r4, 0x15 | r4 = 0x15;
0x00083024 blx 0x8474 | fcn_00008474 ();
0x00083028 b 0x82f42 | goto label_11;
| label_33:
0x0008302a mov r0, r4 | r0 = r4;
0x0008302c bl 0x5a870 | fcn_0005a870 (r0);
0x00083030 b 0x82e20 | goto label_12;
| }
| label_46:
0x00083032 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00083034 movs r1, 7 | r1 = 7;
0x00083036 movs r3, 0 | r3 = 0;
0x00083038 mov r0, sb | r0 = sb;
0x0008303a mov r4, r1 | r4 = r1;
0x0008303c str r3, [r2] | *(r2) = r3;
0x0008303e str.w r1, [sb, 0x40] | __asm ("str.w r1, [sb, 0x40]");
0x00083042 bl 0x1663c | fcn_0001663c (r0, r1);
0x00083046 b 0x82f3a | goto label_8;
| label_30:
0x00083048 cmp r4, 0x64 |
| if (r4 != 0x64) {
0x0008304a bne.w 0x82df2 | goto label_13;
| }
0x0008304e add.w sl, r8, r6, lsl 2 | sl = r8 + (r6 << 2);
| label_39:
0x00083052 mov r5, sl | r5 = sl;
0x00083054 b 0x82f64 | goto label_14;
| label_44:
0x00083056 mov.w r8, 0 | r8 = 0;
| label_41:
0x0008305a mov r0, r6 | r0 = r6;
0x0008305c bl 0x5a870 | fcn_0005a870 (r0);
0x00083060 mov r0, r6 | r0 = r6;
0x00083062 bl 0x1a984 | fcn_0001a984 (r0);
0x00083066 cmp.w r8, 0 |
| if (r8 != 0) {
0x0008306a bne.w 0x82f18 | goto label_15;
| }
0x0008306e b 0x82f20 | goto label_5;
| label_23:
0x00083070 str r5, [sp, 0xc] | var_ch_2 = r5;
| label_17:
0x00083072 ldr r6, [sp, 0x28] | r6 = var_28h;
0x00083074 cmp r6, 0 |
| if (r6 != 0) {
0x00083076 bne 0x82f84 | goto label_16;
| }
0x00083078 b 0x82f20 | goto label_5;
| label_29:
0x0008307a subs r5, r4, 0 | r5 = r4 - 0;
0x0008307c str r4, [sp, 0xc] | var_ch_2 = r4;
0x0008307e it ne |
| if (r5 == r4) {
0x00083080 movne r5, 1 | r5 = 1;
| }
0x00083082 b 0x83072 | goto label_17;
| label_32:
0x00083084 ldr r6, [sp, 0x28] | r6 = var_28h;
0x00083086 b 0x82e48 | goto label_18;
| label_31:
0x00083088 add.w sl, r8, r6, lsl 2 | sl = r8 + (r6 << 2);
0x0008308c b 0x82eb0 | goto label_19;
| label_38:
0x0008308e ldr r0, [sp, 0x28] | r0 = var_28h;
0x00083090 blx 0x8190 | r0 = fcn_00008190 ();
0x00083094 lsls r2, r0, 3 | r2 = r0 << 3;
0x00083096 mov r6, r0 | r6 = r0;
0x00083098 adds r2, 4 | r2 += 4;
0x0008309a b 0x82dbe | goto label_20;
| label_43:
0x0008309c blx 0x7e8c | fcn_00007e8c ();
0x000830a0 add r7, sp, 0x278 | r7 += arg_278h;
0x000830a2 movs r4, r0 | r4 = r0;
0x000830a4 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x000830a6 movs r0, r0 |
0x000830a8 movs r3, 0xf8 | r3 = 0xf8;
0x000830aa movs r3, r0 | r3 = r0;
0x000830ac movs r2, 0xb4 | r2 = 0xb4;
0x000830ae movs r3, r0 | r3 = r0;
0x000830b0 add r5, sp, 0x128 | r5 += arg_128h;
0x000830b2 movs r4, r0 | r4 = r0;
0x000830b4 itet pl |
| if (r4 < r0) {
0x000830b6 movpl r2, r0 | r2 = r0;
| }
| if (r4 >= r0) {
0x000830b8 ldrmi r0, [sp, 0xe0] | r0 = *(arg_e0h);
| }
| if (r4 < r0) {
0x000830ba movpl r2, r0 | r2 = r0;
| }
0x000830bc str r6, [sp, 0x170] | *(arg_170h) = r6;
0x000830be movs r2, r0 | r2 = r0;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x3be98).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0xa4f0 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_limit () | uint32_t sqlite3_limit (int16_t arg1, uint32_t arg2, uint32_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000a4f0 cmp r1, 0xb |
| if (r1 <= 0xb) {
0x0000a4f2 bhi 0xa516 |
0x0000a4f4 lsls r1, r1, 2 | r1 <<= 2;
0x0000a4f6 cmp r2, 0 |
0x0000a4f8 add.w r3, r0, r1 | r3 = r0 + r1;
0x0000a4fc ldr r0, [r3, 0x70] | r0 = *((r3 + 0x70));
| if (r2 < 0) {
0x0000a4fe blt 0xa51a | goto label_0;
| }
0x0000a500 ldr.w ip, [pc, 0x18] |
0x0000a504 add ip, pc | ip = 0x14a24;
0x0000a506 add r1, ip | r1 += ip;
0x0000a508 ldr.w r1, [r1, 0x70c] | r1 = *((r1 + 0x70c));
0x0000a50c cmp r2, r1 |
0x0000a50e it ge |
| if (r2 < r1) {
0x0000a510 movge r2, r1 | r2 = r1;
| }
0x0000a512 str r2, [r3, 0x70] | *((r3 + 0x70)) = r2;
0x0000a514 bx lr | return;
| }
0x0000a516 mov.w r0, -1 | r0 = -1;
| label_0:
0x0000a51a bx lr | return 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/libsqlite3.so.0.8.6 @ 0x4b684 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sqlite3_load_extension () | void sqlite3_load_extension (int16_t arg_228h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| char * s2;
| int16_t var_1ch;
| int16_t var_40h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004b684 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0004b688 mov sb, r2 | sb = r2;
0x0004b68a ldr r2, [pc, 0x350] |
0x0004b68c mov r8, r3 | r8 = r3;
0x0004b68e sub sp, 0x24 |
0x0004b690 mov r6, r1 | r6 = r1;
0x0004b692 ldr r3, [pc, 0x34c] | r3 = *(0x4b9e2);
0x0004b694 mov r7, r0 | r7 = r0;
0x0004b696 add r2, pc | r2 = 0x97078;
0x0004b698 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x0004b69a movs r4, 0 | r4 = 0;
0x0004b69c ldr r3, [r2, r3] |
0x0004b69e ldr r3, [r3] | r3 = *(0x97078);
0x0004b6a0 str r3, [sp, 0x1c] | var_1ch = r3;
0x0004b6a2 mov.w r3, 0 | r3 = 0;
0x0004b6a6 blx 0x8254 | fcn_00008254 ();
0x0004b6aa mov r0, r6 | r0 = r6;
0x0004b6ac str r4, [sp, 0x18] | s2 = r4;
0x0004b6ae ldr r5, [r7] | r5 = *(r7);
0x0004b6b0 blx 0x8160 | r0 = fcn_00008160 ();
0x0004b6b4 mov sl, r0 | sl = r0;
0x0004b6b6 cmp.w r8, 0 |
| if (r8 == 0) {
0x0004b6ba beq.w 0x4b7e6 | goto label_20;
| }
0x0004b6be ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x0004b6c0 str.w r4, [r8] | __asm ("str.w r4, [r8]");
0x0004b6c4 lsls r4, r3, 0xf | r4 = r3 << 0xf;
| if (r4 >= r3) {
0x0004b6c6 bpl.w 0x4b802 | goto label_21;
| }
0x0004b6ca cmp.w sb, 0 |
| if (sb == 0) {
0x0004b6ce beq.w 0x4b7fa | goto label_22;
| }
| label_2:
0x0004b6d2 str.w sb, [sp, 0xc] | __asm ("str.w sb, [var_ch]");
| label_3:
0x0004b6d6 cmp.w sl, 0x1000 |
| if (sl > 0x1000) {
0x0004b6da bhi 0x4b7a2 | goto label_23;
| }
0x0004b6dc ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0004b6de mov r1, r6 | r1 = r6;
0x0004b6e0 mov r0, r5 | r0 = r5;
0x0004b6e2 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004b6e4 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0004b6e6 cbnz r0, 0x4b710 |
0x0004b6e8 ldr r2, [pc, 0x2f8] |
0x0004b6ea mov r1, r6 | r1 = r6;
0x0004b6ec ldr r0, [pc, 0x2f8] |
0x0004b6ee add r2, pc | r2 = 0x970d6;
0x0004b6f0 add r0, pc | r0 = 0x970dc;
0x0004b6f2 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x0004b6f6 mov fp, r0 |
0x0004b6f8 cmp r0, 0 |
| if (r0 == 0) {
0x0004b6fa beq 0x4b7f6 | goto label_5;
| }
0x0004b6fc mov r1, r0 | r1 = r0;
0x0004b6fe ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0004b700 mov r0, r5 | r0 = r5;
0x0004b702 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004b704 mov r4, r0 | r4 = r0;
0x0004b706 mov r0, fp | r0 = fp;
0x0004b708 blx 0x84f8 | fcn_000084f8 ();
0x0004b70c cmp r4, 0 |
| if (r4 == 0) {
0x0004b70e beq 0x4b7a2 | goto label_23;
| }
| }
0x0004b710 ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x0004b712 mov r1, r4 | r1 = r4;
0x0004b714 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004b716 mov r0, r5 | r0 = r5;
0x0004b718 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0004b71a orrs.w lr, sb, r0 | lr = sb | r0;
0x0004b71e mov r3, r0 | r3 = r0;
0x0004b720 it ne |
| if (lr == sb) {
0x0004b722 movne sb, 0 | sb = 0;
| }
| if (lr == sb) {
0x0004b726 beq 0x4b812 | goto label_24;
| }
| label_4:
0x0004b728 cmp r3, 0 |
| if (r3 == 0) {
0x0004b72a beq.w 0x4b952 | goto label_25;
| }
0x0004b72e mov r0, sb | r0 = sb;
0x0004b730 str r3, [sp, 0xc] | var_ch = r3;
0x0004b732 blx 0x84f8 | fcn_000084f8 ();
0x0004b736 ldr r2, [pc, 0x2b4] |
0x0004b738 add r1, sp, 0x18 | r1 += s2;
0x0004b73a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004b73c mov r0, r7 | r0 = r7;
0x0004b73e add r2, pc | r2 = 0x97130;
0x0004b740 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0004b742 mov r6, r0 | r6 = r0;
0x0004b744 cmp r0, 0 |
| if (r0 == 0) {
0x0004b746 beq.w 0x4b8ee | goto label_26;
| }
0x0004b74a cmp.w r0, 0x100 |
| if (r0 == 0x100) {
0x0004b74e beq.w 0x4b942 | goto label_27;
| }
0x0004b752 cmp.w r8, 0 |
| if (r8 != 0) {
0x0004b756 beq 0x4b766 |
0x0004b758 ldr r0, [pc, 0x294] |
0x0004b75a ldr r1, [sp, 0x18] | r1 = s2;
0x0004b75c add r0, pc | r0 = 0x97150;
0x0004b75e blx 0x852c | strncmp (r0, r1, r2);
0x0004b762 str.w r0, [r8] | __asm ("str.w r0, [r8]");
| }
0x0004b766 ldr r0, [sp, 0x18] | r0 = s2;
0x0004b768 blx 0x84f8 | fcn_000084f8 ();
0x0004b76c ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x0004b76e mov r1, r4 | r1 = r4;
0x0004b770 mov r0, r5 | r0 = r5;
0x0004b772 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| do {
| label_0:
0x0004b774 movs r1, 1 | r1 = 1;
| label_1:
0x0004b776 mov r0, r7 | r0 = r7;
0x0004b778 bl 0x166c8 | r0 = fcn_000166c8 (r0, r1);
0x0004b77c mov r4, r0 | r4 = r0;
| label_6:
0x0004b77e ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x0004b780 blx 0x81d4 | fcn_000081d4 ();
0x0004b784 ldr r2, [pc, 0x26c] |
0x0004b786 ldr r3, [pc, 0x258] | r3 = *(0x4b9e2);
0x0004b788 add r2, pc | r2 = 0x97180;
0x0004b78a ldr r3, [r2, r3] | r3 = *(0x97180);
0x0004b78c ldr r2, [r3] | r2 = *(0x97180);
0x0004b78e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0004b790 eors r2, r3 | r2 ^= r3;
0x0004b792 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004b796 bne.w 0x4b9d6 | goto label_28;
| }
0x0004b79a mov r0, r4 | r0 = r4;
0x0004b79c add sp, 0x24 |
0x0004b79e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_23:
0x0004b7a2 cmp.w r8, 0 |
0x0004b7a6 beq 0x4b774 |
| } while (r8 == 0);
0x0004b7a8 adds.w r4, sl, 0x12c | r4 = sl + 0x12c;
0x0004b7ac mov.w r3, 0 | r3 = 0;
0x0004b7b0 adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x0004b7b4 mov r0, r4 | r0 = r4;
0x0004b7b6 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0004b7ba mov r1, r0 | r1 = r0;
0x0004b7bc str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0004b7c0 str r0, [sp, 0x18] | s2 = r0;
0x0004b7c2 cmp r0, 0 |
| if (r0 == 0) {
0x0004b7c4 beq 0x4b774 | goto label_0;
| }
0x0004b7c6 ldr r2, [pc, 0x230] |
0x0004b7c8 mov.w r3, 0x1000 | r3 = 0x1000;
0x0004b7cc mov r0, r4 | r0 = r4;
0x0004b7ce str r6, [sp] | *(sp) = r6;
0x0004b7d0 add r2, pc | r2 = 0x971ce;
0x0004b7d2 blx 0x8154 | fcn_00008154 ();
0x0004b7d6 addw r1, sl, 0x12b | __asm ("addw r1, sl, aav.0x000000ff");
0x0004b7da ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0004b7dc ldr r2, [sp, 0x18] | r2 = s2;
0x0004b7de mov r0, r5 | r0 = r5;
0x0004b7e0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0004b7e2 movs r1, 1 | r1 = 1;
0x0004b7e4 b 0x4b776 | goto label_1;
| label_20:
0x0004b7e6 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x0004b7e8 lsls r3, r3, 0xf | r3 <<= 0xf;
| if (r3 >= r3) {
0x0004b7ea bpl 0x4b774 | goto label_0;
| }
0x0004b7ec cmp.w sb, 0 |
| if (sb != 0) {
0x0004b7f0 bne.w 0x4b6d2 | goto label_2;
| }
0x0004b7f4 b 0x4b7fa | goto label_22;
| label_5:
0x0004b7f6 movs r1, 7 | r1 = 7;
0x0004b7f8 b 0x4b776 | goto label_1;
| label_22:
0x0004b7fa ldr r3, [pc, 0x200] |
0x0004b7fc add r3, pc | r3 = 0x971fe;
0x0004b7fe str r3, [sp, 0xc] | var_ch = r3;
0x0004b800 b 0x4b6d6 | goto label_3;
| label_21:
0x0004b802 ldr r0, [pc, 0x1fc] |
0x0004b804 add r0, pc | r0 = 0x9720a;
0x0004b806 blx 0x852c | strncmp (r0, r1, r2);
0x0004b80a movs r1, 1 | r1 = 1;
0x0004b80c str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0004b810 b 0x4b776 | goto label_1;
| label_24:
0x0004b812 mov r0, r6 | r0 = r6;
0x0004b814 str.w lr, [sp, 0x14] | __asm ("str.w lr, [var_14h]");
0x0004b818 blx 0x8160 | r0 = fcn_00008160 ();
0x0004b81c bic r3, r0, 0xc0000000 | r3 = BIT_MASK (r0, 0xc0000000);
0x0004b820 movs r1, 0 | r1 = 0;
0x0004b822 add.w r0, r3, 0x1e | r0 = r3 + 0x1e;
0x0004b826 str r3, [sp, 0x10] | var_10h = r3;
0x0004b828 blx 0x7f18 | fcn_00007f18 ();
0x0004b82c ldrd r3, lr, [sp, 0x10] | __asm ("ldrd r3, lr, [var_14h]");
0x0004b830 str r0, [sp, 0xc] | var_ch = r0;
0x0004b832 cmp r0, 0 |
| if (r0 == 0) {
0x0004b834 beq.w 0x4b9b6 | goto label_29;
| }
0x0004b838 ldr.w ip, [pc, 0x1c8] | ip = *(0x0004ba04);
0x0004b83c add.w sb, r3, -1 | sb = r3 + -1;
0x0004b840 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004b842 add ip, pc |
0x0004b844 ldm.w ip!, {r0, r1} | r0 = *(ip!);
| r1 = *((ip! + 4));
0x0004b848 str r0, [r2] | *(r2) = r0;
0x0004b84a str r1, [r2, 4] | *((r2 + 4)) = r1;
0x0004b84c cmp r3, 0 |
| if (r3 == 0) {
0x0004b84e beq.w 0x4b9d0 | goto label_30;
| }
0x0004b852 add r3, r6 | r3 += r6;
0x0004b854 b 0x4b85e |
| while (r2 != 0x2f) {
0x0004b856 subs.w sb, sb, 1 | sb--;
| if (sb <= sb) {
0x0004b85a blo.w 0x4b9c2 | goto label_31;
| }
0x0004b85e ldrb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x0004b862 cmp r2, 0x2f |
0x0004b864 bne 0x4b856 |
| }
0x0004b866 add.w r3, sb, 1 | r3 = sb + 1;
0x0004b86a mov fp, r3 |
0x0004b86c adds r3, r6, r3 | r3 = r6 + r3;
| label_7:
0x0004b86e ldr r1, [pc, 0x198] |
0x0004b870 mov r0, r3 | r0 = r3;
0x0004b872 movs r2, 3 | r2 = 3;
0x0004b874 str r3, [sp, 0x10] | var_10h = r3;
0x0004b876 add r1, pc | r1 = 0x97284;
0x0004b878 blx 0x85a8 | fcn_000085a8 ();
0x0004b87c ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r0 == 0) {
0x0004b87e cbnz r0, 0x4b888 |
0x0004b880 add.w r3, sb, 4 | r3 = sb + 4;
0x0004b884 mov fp, r3 |
0x0004b886 adds r3, r6, r3 | r3 = r6 + r3;
| }
0x0004b888 ldrb r3, [r3] | r3 = *(r3);
0x0004b88a cmp r3, 0x2e |
0x0004b88c it ne |
| if (r3 != 0x2e) {
0x0004b88e cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r3 == 0x2e) {
0x0004b890 beq.w 0x4b9ca | goto label_32;
| }
0x0004b894 ldr.w ip, [pc, 0x174] | ip = *(0x0004ba0c);
0x0004b898 mov r2, fp | r2 = fp;
0x0004b89a ldr.w lr, [sp, 0xc] | lr = var_ch;
0x0004b89e add r2, r6 | r2 += r6;
0x0004b8a0 movs r1, 8 | r1 = 8;
0x0004b8a2 add ip, pc |
| do {
0x0004b8a4 add r3, ip | r3 += ip;
0x0004b8a6 ldrb.w r0, [r3, 0x40] | r0 = *((r3 + 0x40));
0x0004b8aa lsls r0, r0, 0x1e | r0 <<= 0x1e;
0x0004b8ac ittt mi |
| if (r0 >= r0) {
0x0004b8ae ldrbmi r3, [r3, 0x140] | r3 = *((r3 + 0x140));
| }
| if (r0 >= r0) {
0x0004b8b2 strbmi r3, [lr, r1] | *((lr + r1)) = r3;
| }
| if (r0 < r0) {
0x0004b8b6 adds r1, 1 | r1++;
| }
0x0004b8b8 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x0004b8bc cmp r3, 0x2e |
0x0004b8be it ne |
| if (r3 != 0x2e) {
0x0004b8c0 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x0004b8c2 bne 0x4b8a4 |
| } while (r3 != 0x2e);
0x0004b8c4 mov ip, r1 |
| label_8:
0x0004b8c6 ldr r3, [pc, 0x148] |
0x0004b8c8 mov r1, r4 | r1 = r4;
0x0004b8ca ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004b8cc add r3, pc | r3 = 0x972e2;
0x0004b8ce str r3, [sp, 0x10] | var_10h = r3;
0x0004b8d0 add.w lr, r2, ip | lr = r2 + ip;
0x0004b8d4 ldr r0, [r3] | r0 = *(0x972e2);
0x0004b8d6 mov sb, r2 | sb = r2;
0x0004b8d8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0004b8da str.w r0, [r2, ip] | __asm ("str.w r0, [r2, ip]");
0x0004b8de mov r0, r5 | r0 = r5;
0x0004b8e0 ldrh r3, [r3, 4] | r3 = *((r3 + 4));
0x0004b8e2 strh.w r3, [lr, 4] | *((lr + 4)) = r3;
0x0004b8e6 ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x0004b8e8 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0004b8ea mov r3, r0 | r3 = r0;
0x0004b8ec b 0x4b728 | goto label_4;
| label_26:
0x0004b8ee ldr.w r3, [r7, 0xc4] | r3 = *((r7 + 0xc4));
0x0004b8f2 adds r3, 1 | r3++;
0x0004b8f4 lsls r5, r3, 2 | r5 = r3 << 2;
0x0004b8f6 mov r3, r0 | r3 = r0;
0x0004b8f8 mov r0, r7 | r0 = r7;
0x0004b8fa mov r2, r5 | r2 = r5;
0x0004b8fc bl 0x1abdc | r0 = fcn_0001abdc (r0, r1);
0x0004b900 mov r8, r0 | r8 = r0;
0x0004b902 cmp r0, 0 |
| if (r0 == 0) {
0x0004b904 beq.w 0x4b7f6 | goto label_5;
| }
0x0004b908 mov r2, r5 | r2 = r5;
0x0004b90a mov r1, r6 | r1 = r6;
0x0004b90c blx 0x8264 | fcn_00008264 ();
0x0004b910 ldr.w r2, [r7, 0xc4] | r2 = *((r7 + 0xc4));
0x0004b914 cmp r2, 0 |
| if (r2 > 0) {
0x0004b916 ble 0x4b924 |
0x0004b918 ldr.w r1, [r7, 0xc8] | r1 = *((r7 + 0xc8));
0x0004b91c lsls r2, r2, 2 | r2 <<= 2;
0x0004b91e mov r0, r8 | r0 = r8;
0x0004b920 blx 0x7dcc | fcn_00007dcc ();
| }
0x0004b924 ldr.w r1, [r7, 0xc8] | r1 = *((r7 + 0xc8));
| if (r1 != 0) {
0x0004b928 cbz r1, 0x4b930 |
0x0004b92a mov r0, r7 | r0 = r7;
0x0004b92c bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x0004b930 ldr.w r3, [r7, 0xc4] | r3 = *((r7 + 0xc4));
0x0004b934 str.w r8, [r7, 0xc8] | __asm ("str.w r8, [r7, 0xc8]");
0x0004b938 adds r2, r3, 1 | r2 = r3 + 1;
0x0004b93a str.w r2, [r7, 0xc4] | __asm ("str.w r2, [r7, 0xc4]");
0x0004b93e str.w r4, [r8, r3, lsl 2] | __asm ("str.w r4, [r8, r3, lsl 2]");
| label_27:
0x0004b942 ldrb.w r3, [r7, 0x53] | r3 = *((r7 + 0x53));
0x0004b946 movs r4, 0 | r4 = 0;
0x0004b948 movs r1, 0 | r1 = 0;
0x0004b94a cmp r3, 0 |
| if (r3 == 0) {
0x0004b94c beq.w 0x4b77e | goto label_6;
| }
0x0004b950 b 0x4b776 | goto label_1;
| label_25:
0x0004b952 cmp.w r8, 0 |
| if (r8 != 0) {
0x0004b956 beq 0x4b9a4 |
0x0004b958 ldr.w fp, [sp, 0xc] | fp = var_ch;
0x0004b95c mov r0, fp | r0 = fp;
0x0004b95e blx 0x8160 | r0 = fcn_00008160 ();
0x0004b962 add.w r2, r0, 0x12c | r2 = r0 + 0x12c;
0x0004b966 movs r3, 0 | r3 = 0;
0x0004b968 str r2, [sp, 0xc] | var_ch = r2;
0x0004b96a adds.w r2, r2, sl | r2 += sl;
0x0004b96e adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x0004b972 mov r0, r2 | r0 = r2;
0x0004b974 str r2, [sp, 0x10] | var_10h = r2;
0x0004b976 blx 0x7f18 | fcn_00007f18 ();
0x0004b97a str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0004b97e str r0, [sp, 0x18] | s2 = r0;
| if (r0 == 0) {
0x0004b980 cbz r0, 0x4b9a4 | goto label_33;
| }
0x0004b982 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004b984 mov r1, r0 | r1 = r0;
0x0004b986 mov r3, fp | r3 = fp;
0x0004b988 str r6, [sp] | *(sp) = r6;
0x0004b98a mov r0, r2 | r0 = r2;
0x0004b98c ldr r2, [pc, 0x84] |
0x0004b98e add r2, pc | r2 = 0x973a6;
0x0004b990 blx 0x8154 | fcn_00008154 ();
0x0004b994 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0004b996 add.w r1, sl, -1 | r1 = sl + -1;
0x0004b99a ldr r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0004b99c mov r0, r5 | r0 = r5;
0x0004b99e add r1, r2 | r1 += r2;
0x0004b9a0 ldr r2, [sp, 0x18] | r2 = s2;
0x0004b9a2 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| }
| label_33:
0x0004b9a4 mov r1, r4 | r1 = r4;
0x0004b9a6 ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x0004b9a8 mov r0, r5 | r0 = r5;
0x0004b9aa blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004b9ac mov r0, sb | r0 = sb;
0x0004b9ae blx 0x84f8 | fcn_000084f8 ();
0x0004b9b2 movs r1, 1 | r1 = 1;
0x0004b9b4 b 0x4b776 | goto label_1;
| label_29:
0x0004b9b6 mov r1, r4 | r1 = r4;
0x0004b9b8 ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x0004b9ba mov r0, r5 | r0 = r5;
0x0004b9bc blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0004b9be movs r1, 7 | r1 = 7;
0x0004b9c0 b 0x4b776 | goto label_1;
| label_31:
0x0004b9c2 movs r2, 0 | r2 = 0;
0x0004b9c4 mov r3, r6 | r3 = r6;
0x0004b9c6 mov fp, r2 |
0x0004b9c8 b 0x4b86e | goto label_7;
| label_32:
0x0004b9ca mov.w ip, 8 |
0x0004b9ce b 0x4b8c6 | goto label_8;
| label_30:
0x0004b9d0 mov fp, lr |
0x0004b9d2 mov r3, r6 | r3 = r6;
0x0004b9d4 b 0x4b86e | goto label_7;
| label_28:
0x0004b9d6 blx 0x7e8c | fcn_00007e8c ();
0x0004b9da nop |
0x0004b9dc movs r5, 0xfa | r5 = 0xfa;
0x0004b9de movs r0, r1 | r0 = r1;
0x0004b9e0 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0004b9e2 movs r0, r0 |
0x0004b9e4 cmp r4, 0x56 |
0x0004b9e6 movs r6, r0 | r6 = r0;
0x0004b9e8 str r4, [r6, 0x58] | *((r6 + 0x58)) = r4;
0x0004b9ea movs r6, r0 | r6 = r0;
0x0004b9ec movs r0, 0x56 | r0 = 0x56;
0x0004b9ee movs r0, r1 | r0 = r1;
0x0004b9f0 cmp r4, 0x28 |
0x0004b9f2 movs r6, r0 | r6 = r0;
0x0004b9f4 movs r5, 8 | r5 = 8;
0x0004b9f6 movs r0, r1 | r0 = r1;
0x0004b9f8 cmp r3, 0xd4 |
0x0004b9fa movs r6, r0 | r6 = r0;
0x0004b9fc cmp r3, 0x30 |
0x0004b9fe movs r6, r0 | r6 = r0;
0x0004ba00 asrs r4, r2, 5 | r4 = r2 >> 5;
0x0004ba02 movs r6, r0 | r6 = r0;
0x0004ba04 cmp r3, 6 |
0x0004ba06 movs r6, r0 | r6 = r0;
0x0004ba08 cmp r2, 0xde |
0x0004ba0a movs r6, r0 | r6 = r0;
0x0004ba0c ldr r0, [sp, 0x228] | r0 = *(arg_228h);
0x0004ba0e movs r6, r0 | r6 = r0;
0x0004ba10 str r7, [sp, 0x40] | var_40h = r7;
0x0004ba12 movs r6, r0 | r6 = r0;
0x0004ba14 cmp r1, 0xca |
0x0004ba16 movs r6, r0 | r6 = r0;
0x0004ba18 push.w {r4, r5, r6, r7, r8, lr} |
0x0004ba1c mov r5, r0 | r5 = r0;
0x0004ba1e mov r7, r2 | r7 = r2;
0x0004ba20 ldr r0, [r2] | r0 = *(r2);
0x0004ba22 sub sp, 8 |
0x0004ba24 mov r8, r1 | r8 = r1;
0x0004ba26 ldr r2, [pc, 0x8c] |
0x0004ba28 ldr r3, [pc, 0x8c] | r3 = *(0x4bab8);
0x0004ba2a add r2, pc | r2 = 0x974e4;
0x0004ba2c ldr r3, [r2, r3] |
0x0004ba2e ldr r3, [r3] | r3 = *(0x974e4);
0x0004ba30 str r3, [sp, 4] | var_4h = r3;
0x0004ba32 mov.w r3, 0 | r3 = 0;
0x0004ba36 blx 0x8508 | r0 = fcn_00008508 ();
0x0004ba3a mov r6, r0 | r6 = r0;
0x0004ba3c mov r0, r5 | r0 = r5;
0x0004ba3e blx 0x82a0 | fcn_000082a0 ();
0x0004ba42 ldr r3, [r0, 0x20] | r3 = *((r0 + 0x20));
0x0004ba44 movs r2, 0 | r2 = 0;
0x0004ba46 str r2, [sp] | *(sp) = r2;
0x0004ba48 lsls r3, r3, 0xe | r3 <<= 0xe;
| if (r3 >= r3) {
0x0004ba4a bpl 0x4ba7c | goto label_34;
| }
0x0004ba4c cmp.w r8, 2 |
0x0004ba50 mov r4, r0 | r4 = r0;
| if (r8 == 2) {
0x0004ba52 beq 0x4ba8c | goto label_35;
| }
| if (r6 == 0) {
0x0004ba54 cbz r6, 0x4ba62 | goto label_10;
| }
| label_9:
0x0004ba56 mov r3, sp | r3 = sp;
0x0004ba58 mov r1, r6 | r1 = r6;
0x0004ba5a mov r0, r4 | r0 = r4;
0x0004ba5c blx 0x862c | r0 = fcn_0000862c ();
| if (r0 != 0) {
0x0004ba60 cbnz r0, 0x4ba9a | goto label_36;
| }
| do {
| label_10:
0x0004ba62 ldr r2, [pc, 0x58] |
0x0004ba64 ldr r3, [pc, 0x50] | r3 = *(0x4bab8);
0x0004ba66 add r2, pc | r2 = 0x97528;
0x0004ba68 ldr r3, [r2, r3] | r3 = *(0x97528);
0x0004ba6a ldr r2, [r3] | r2 = *(0x97528);
0x0004ba6c ldr r3, [sp, 4] | r3 = var_4h;
0x0004ba6e eors r2, r3 | r2 ^= r3;
0x0004ba70 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004ba74 bne 0x4baae | goto label_37;
| }
0x0004ba76 add sp, 8 |
0x0004ba78 pop.w {r4, r5, r6, r7, r8, pc} |
| label_34:
0x0004ba7c ldr r1, [pc, 0x40] |
0x0004ba7e mov.w r2, -1 | r2 = -1;
0x0004ba82 mov r0, r5 | r0 = r5;
0x0004ba84 add r1, pc | r1 = 0x97548;
0x0004ba86 blx 0x7edc | fcn_00007edc ();
0x0004ba8a b 0x4ba62 |
| } while (1);
| label_35:
0x0004ba8c ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x0004ba8e blx 0x8508 | r0 = fcn_00008508 ();
0x0004ba92 mov r2, r0 | r2 = r0;
0x0004ba94 cmp r6, 0 |
| if (r6 != 0) {
0x0004ba96 bne 0x4ba56 | goto label_9;
| }
0x0004ba98 b 0x4ba62 | goto label_10;
| label_36:
0x0004ba9a mov r0, r5 | r0 = r5;
0x0004ba9c ldr r1, [sp] | r1 = *(sp);
0x0004ba9e mov.w r2, -1 | r2 = -1;
0x0004baa2 blx 0x7edc | fcn_00007edc ();
0x0004baa6 ldr r0, [sp] | r0 = *(sp);
0x0004baa8 blx 0x84f8 | fcn_000084f8 ();
0x0004baac b 0x4ba62 | goto label_10;
| label_37:
0x0004baae blx 0x7e8c | fcn_00007e8c ();
0x0004bab2 nop |
0x0004bab4 movs r2, 0x66 | r2 = 0x66;
0x0004bab6 movs r0, r1 | r0 = r1;
0x0004bab8 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0004baba movs r0, r0 |
0x0004babc movs r2, 0x2a | r2 = 0x2a;
0x0004babe movs r0, r1 | r0 = r1;
0x0004bac0 lsrs r4, r2, 0x1b | r4 = r2 >> 0x1b;
0x0004bac2 movs r6, r0 | r6 = r0;
0x0004bac4 push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x0004bac8 mov r4, r0 | r4 = r0;
0x0004baca ldr r5, [r0, 0xc] | r5 = *((r0 + 0xc));
0x0004bacc mov r6, r1 | r6 = r1;
0x0004bace mov r8, r3 | r8 = r3;
0x0004bad0 cmp r2, 0 |
0x0004bad2 ldr r1, [r0, 0x14] | r1 = *((r0 + 0x14));
0x0004bad4 mov r7, r2 | r7 = r2;
0x0004bad6 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0004bad8 clz r0, r5 | r0 &= r5;
0x0004badc lsr.w r0, r0, 5 | r0 >>= 5;
0x0004bae0 it eq |
| if (r2 != 0) {
0x0004bae2 moveq r0, 0 | r0 = 0;
| }
0x0004bae4 cmp r0, 0 |
| if (r0 != 0) {
0x0004bae6 bne 0x4bbc2 | goto label_38;
| }
0x0004bae8 add r1, r6 | r1 += r6;
0x0004baea mov r2, r5 | r2 = r5;
0x0004baec cmp r1, r3 |
0x0004baee mov r0, r6 | r0 = r6;
| if (r1 > r3) {
0x0004baf0 bhi 0x4bb90 | goto label_14;
| }
| if (r5 == 0) {
0x0004baf2 cbz r5, 0x4bb50 | goto label_13;
| }
| label_12:
0x0004baf4 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0004baf6 cmp r3, r6 |
| if (r3 != r6) {
0x0004baf8 bne 0x4bbde | goto label_39;
| }
0x0004bafa cmp r7, 0 |
| if (r7 == 0) {
0x0004bafc beq 0x4bbd8 | goto label_40;
| }
0x0004bafe cmp r6, 0 |
| if (r6 <= 0) {
0x0004bb00 ble 0x4bb46 | goto label_16;
| }
| label_17:
0x0004bb02 subs r7, 4 | r7 -= 4;
0x0004bb04 mov.w r8, 0 | r8 = 0;
| do {
0x0004bb08 ldr r5, [r7, 4]! | r5 = *((r7 += 4));
0x0004bb0c add.w r8, r8, 1 | r8++;
0x0004bb10 mov r0, r5 | r0 = r5;
| if (r5 != 0) {
0x0004bb12 cbz r5, 0x4bb32 |
0x0004bb14 blx 0x8160 | r0 = fcn_00008160 ();
0x0004bb18 bic r5, r0, 0xc0000000 | r5 = BIT_MASK (r0, 0xc0000000);
0x0004bb1c movs r1, 0 | r1 = 0;
0x0004bb1e adds r5, 1 | r5++;
0x0004bb20 mov r0, r5 | r0 = r5;
0x0004bb22 blx 0x7f18 | fcn_00007f18 ();
0x0004bb26 mov r2, r5 | r2 = r5;
0x0004bb28 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0004bb2a cbz r0, 0x4bb86 | goto label_11;
| }
0x0004bb2c ldr r1, [r7] | r1 = *(r7);
0x0004bb2e blx 0x7dcc | fcn_00007dcc ();
| }
0x0004bb32 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0004bb34 cmp r6, r8 |
0x0004bb36 ldr r2, [r4] | r2 = *(r4);
0x0004bb38 add.w r1, r3, 1 | r1 = r3 + 1;
0x0004bb3c str r1, [r4, 0x14] | *((r4 + 0x14)) = r1;
0x0004bb3e str.w r5, [r2, r3, lsl 2] | __asm ("str.w r5, [r2, r3, lsl 2]");
0x0004bb42 bgt 0x4bb08 |
| } while (r6 > r8);
0x0004bb44 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
| label_16:
0x0004bb46 adds r2, 1 | r2++;
0x0004bb48 movs r0, 0 | r0 = 0;
0x0004bb4a str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x0004bb4c pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_13:
0x0004bb50 cmp r6, 0 |
0x0004bb52 str r6, [r4, 0x10] | *((r4 + 0x10)) = r6;
| if (r6 <= 0) {
0x0004bb54 ble 0x4bc08 | goto label_41;
| }
| label_15:
0x0004bb56 ldr.w sb, [pc, 0xb8] |
0x0004bb5a sub.w r8, r8, 4 | r8 -= 4;
0x0004bb5e movs r5, 0 | r5 = 0;
0x0004bb60 add sb, pc | sb = 0x97776;
0x0004bb62 b 0x4bb76 |
| while (r0 != 0) {
0x0004bb64 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0004bb66 cmp r6, r5 |
0x0004bb68 ldr r3, [r4] | r3 = *(r4);
0x0004bb6a add.w r1, r2, 1 | r1 = r2 + 1;
0x0004bb6e str r1, [r4, 0x14] | *((r4 + 0x14)) = r1;
0x0004bb70 str.w r0, [r3, r2, lsl 2] | __asm ("str.w r0, [r3, r2, lsl 2]");
| if (r6 == r5) {
0x0004bb74 beq 0x4bbd4 | goto label_42;
| }
0x0004bb76 ldr r1, [r8, 4]! | r1 = *((r8 += 4));
0x0004bb7a mov r0, sb | r0 = sb;
0x0004bb7c adds r5, 1 | r5++;
0x0004bb7e blx 0x852c | r0 = strncmp (r0, r1, r2);
0x0004bb82 cmp r0, 0 |
0x0004bb84 bne 0x4bb64 |
| }
| do {
| label_11:
0x0004bb86 movs r3, 7 | r3 = 7;
0x0004bb88 movs r0, 1 | r0 = 1;
0x0004bb8a str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0004bb8c pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_14:
0x0004bb90 ldr r1, [r4] | r1 = *(r4);
0x0004bb92 add.w r0, r0, r3, lsl 1 | r0 += (r3 << 1);
0x0004bb96 movs r3, 0 | r3 = 0;
0x0004bb98 lsls r2, r0, 2 | r2 = r0 << 2;
0x0004bb9a str r0, [r4, 8] | *((r4 + 8)) = r0;
| if (r1 == 0) {
0x0004bb9c cbz r1, 0x4bbf8 | goto label_43;
| }
| if (r2 == 0) {
0x0004bb9e cbz r2, 0x4bc00 | goto label_44;
| }
0x0004bba0 movw r0, 0xfeff |
0x0004bba4 movt r0, 0x7fff | r0 = 0x7ffffeff;
0x0004bba8 cmp r0, r2 |
0x0004bbaa blo 0x4bb86 |
| } while (r0 <= r2);
0x0004bbac mov r0, r1 | r0 = r1;
0x0004bbae bl 0x100c4 | r0 = fcn_000100c4 (r0, r1);
| label_18:
0x0004bbb2 cmp r0, 0 |
| if (r0 == 0) {
0x0004bbb4 beq 0x4bb86 | goto label_11;
| }
0x0004bbb6 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x0004bbb8 str r0, [r4] | *(r4) = r0;
0x0004bbba mov r2, r5 | r2 = r5;
0x0004bbbc cmp r5, 0 |
| if (r5 != 0) {
0x0004bbbe bne 0x4baf4 | goto label_12;
| }
0x0004bbc0 b 0x4bb50 | goto label_13;
| label_38:
0x0004bbc2 lsls r0, r6, 1 | r0 = r6 << 1;
0x0004bbc4 add r1, r0 | r1 += r0;
0x0004bbc6 cmp r1, r3 |
| if (r1 > r3) {
0x0004bbc8 bhi 0x4bb90 | goto label_14;
| }
0x0004bbca cmp r6, 0 |
0x0004bbcc str r6, [r4, 0x10] | *((r4 + 0x10)) = r6;
| if (r6 > 0) {
0x0004bbce bgt 0x4bb56 | goto label_15;
| }
| label_19:
0x0004bbd0 mov r2, r5 | r2 = r5;
0x0004bbd2 b 0x4bb46 | goto label_16;
| label_42:
0x0004bbd4 cmp r7, 0 |
| if (r7 != 0) {
0x0004bbd6 bne 0x4bb02 | goto label_17;
| }
| do {
| label_40:
0x0004bbd8 movs r0, 0 | r0 = 0;
0x0004bbda pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
0x0004bbdc strh r0, [r7, 0x1e] | *((r7 + 0x1e)) = r0;
| label_39:
0x0004bbde ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0004bbe0 blx 0x84f8 | fcn_000084f8 ();
0x0004bbe4 ldr r0, [pc, 0x2c] |
0x0004bbe6 add r0, pc | r0 = 0x977fe;
0x0004bbe8 blx 0x852c | strncmp (r0, r1, r2);
0x0004bbec movs r3, 1 | r3 = 1;
0x0004bbee str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0004bbf0 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0004bbf2 mov r0, r3 | r0 = r3;
0x0004bbf4 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_43:
0x0004bbf8 mov r0, r2 | r0 = r2;
0x0004bbfa bl 0x12abc | fcn_00012abc (r0);
0x0004bbfe b 0x4bbb2 | goto label_18;
| label_44:
0x0004bc00 mov r0, r1 | r0 = r1;
0x0004bc02 blx 0x84f8 | fcn_000084f8 ();
0x0004bc06 b 0x4bb86 | goto label_11;
| label_41:
0x0004bc08 cmp r7, 0 |
0x0004bc0a beq 0x4bbd8 |
| } while (r7 == 0);
0x0004bc0c b 0x4bbd0 | goto label_19;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x4f000 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_randomness () | void sqlite3_randomness (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int8_t var_1h;
| int16_t var_8h;
| int16_t var_104h;
| r0 = arg1;
| r1 = arg2;
0x0004f000 ldr r2, [pc, 0x1d0] |
0x0004f002 ldr r3, [pc, 0x1d4] | r3 = *(0x4f1da);
0x0004f004 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0004f008 sub sp, 0x10c |
0x0004f00a add r2, pc | r2 = 0x9e1e2;
0x0004f00c mov r7, r0 | r7 = r0;
0x0004f00e mov r6, r1 | r6 = r1;
0x0004f010 ldr r3, [r2, r3] |
0x0004f012 ldr r3, [r3] | r3 = *(0x9e1e2);
0x0004f014 str r3, [sp, 0x104] | var_104h = r3;
0x0004f016 mov.w r3, 0 | r3 = 0;
0x0004f01a blx 0x7c70 | r0 = fcn_00007c70 ();
0x0004f01e cmp r0, 0 |
| if (r0 != 0) {
0x0004f020 bne 0x4f0d6 | goto label_3;
| }
0x0004f022 ldr r3, [pc, 0x1b8] |
0x0004f024 mov r5, r0 | r5 = r0;
0x0004f026 mov r8, r0 | r8 = r0;
0x0004f028 add r3, pc | r3 = 0x9e20a;
0x0004f02a ldrb r2, [r3, 4] | r2 = *((r3 + 4));
| if (r2 != 0) {
0x0004f02c cbz r2, 0x4f036 |
0x0004f02e ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x0004f030 movs r0, 5 | r0 = 5;
0x0004f032 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0004f034 mov r8, r0 | r8 = r0;
| }
0x0004f036 mov r0, r8 | r0 = r8;
0x0004f038 blx 0x8254 | fcn_00008254 ();
0x0004f03c cmp r6, 0 |
0x0004f03e it ne |
| if (r6 != 0) {
0x0004f040 cmpne r7, 0 | __asm ("cmpne r7, 0");
| }
| if (r6 <= 0) {
0x0004f042 ble.w 0x4f180 | goto label_4;
| }
0x0004f046 ldr.w sl, [pc, 0x198] | sl = *(0x0004f1e0);
0x0004f04a add sl, pc | sl += pc;
0x0004f04c ldrb.w r4, [sl, 0x29c] | r4 = *((sl + 0x29c));
0x0004f050 cmp r4, 0 |
| if (r4 == 0) {
0x0004f052 beq 0x4f0f0 | goto label_5;
| }
0x0004f054 ldrb.w r0, [sl, 0x29d] | r0 = *((sl + 0x29d));
0x0004f058 ldrb.w r4, [sl, 0x29e] | r4 = *((sl + 0x29e));
| label_0:
0x0004f05c ldr.w ip, [pc, 0x184] |
0x0004f060 rsb.w sb, r6, 1 | sb = 1 - r6;
0x0004f064 mov r1, r6 | r1 = r6;
0x0004f066 add.w sl, r6, r7 | sl = r6 + r7;
0x0004f06a add sb, r0 | sb += r0;
0x0004f06c add ip, pc | ip = 0x9e254;
| do {
0x0004f06e add.w r3, r1, sb | r3 = r1 + sb;
0x0004f072 uxtb r3, r3 | r3 = (int8_t) r3;
0x0004f074 add r3, ip | r3 += ip;
0x0004f076 ldrb.w r5, [r3, 0x29f] | r5 = *((r3 + 0x29f));
0x0004f07a add r4, r5 | r4 += r5;
0x0004f07c uxtb r4, r4 | r4 = (int8_t) r4;
0x0004f07e add.w lr, ip, r4 | lr = ip + r4;
0x0004f082 ldrb.w r6, [lr, 0x29f] | r6 = *((lr + 0x29f));
0x0004f086 strb.w r6, [r3, 0x29f] | *((r3 + 0x29f)) = r6;
0x0004f08a strb.w r5, [lr, 0x29f] | *((lr + 0x29f)) = r5;
0x0004f08e ldrb.w r2, [r3, 0x29f] | r2 = *((r3 + 0x29f));
0x0004f092 add r2, r5 | r2 += r5;
0x0004f094 uxtb r2, r2 | r2 = (int8_t) r2;
0x0004f096 add r2, ip | r2 += ip;
0x0004f098 ldrb.w r2, [r2, 0x29f] | r2 = *((r2 + 0x29f));
0x0004f09c strb r2, [r1], 1 | *(r1) = r2;
| r1++;
0x0004f0a0 cmp r1, sl |
0x0004f0a2 bne 0x4f06e |
| } while (r1 != sl);
0x0004f0a4 ldr r2, [pc, 0x140] |
0x0004f0a6 add r0, r7 | r0 += r7;
0x0004f0a8 strb.w r6, [r3, 0x29f] | *((r3 + 0x29f)) = r6;
0x0004f0ac ldr r3, [pc, 0x128] | r3 = *(0x4f1d8);
0x0004f0ae add r2, pc | r2 = 0x9e29a;
0x0004f0b0 strb.w r5, [lr, 0x29f] | *((lr + 0x29f)) = r5;
0x0004f0b4 strb.w r4, [ip, 0x29e] | *((ip + 0x29e)) = r4;
0x0004f0b8 strb.w r0, [ip, 0x29d] | *((ip + 0x29d)) = r0;
0x0004f0bc ldr r3, [r2, r3] | r3 = *(0x9e29a);
0x0004f0be ldr r2, [r3] | r2 = *(0x9e29a);
0x0004f0c0 ldr r3, [sp, 0x104] | r3 = var_104h;
0x0004f0c2 eors r2, r3 | r2 ^= r3;
0x0004f0c4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004f0c8 bne 0x4f19e | goto label_6;
| }
| label_1:
0x0004f0ca mov r0, r8 | r0 = r8;
0x0004f0cc add sp, 0x10c |
0x0004f0ce pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0004f0d2 b.w 0x81d0 | void (*0x81d0)() ();
| label_3:
0x0004f0d6 ldr r2, [pc, 0x114] |
0x0004f0d8 ldr r3, [pc, 0xfc] | r3 = *(0x4f1d8);
0x0004f0da add r2, pc | r2 = 0x9e2cc;
0x0004f0dc ldr r3, [r2, r3] | r3 = *(0x9e2cc);
0x0004f0de ldr r2, [r3] | r2 = *(0x9e2cc);
0x0004f0e0 ldr r3, [sp, 0x104] | r3 = var_104h;
0x0004f0e2 eors r2, r3 | r2 ^= r3;
0x0004f0e4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004f0e8 bne 0x4f19e | goto label_6;
| }
0x0004f0ea add sp, 0x10c |
0x0004f0ec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x0004f0f0 mov r0, r4 | r0 = r4;
0x0004f0f2 blx 0x7f3c | fcn_00007f3c ();
0x0004f0f6 strb.w r4, [sl, 0x29e] | *((sl + 0x29e)) = r4;
0x0004f0fa strb.w r4, [sl, 0x29d] | *((sl + 0x29d)) = r4;
0x0004f0fe cmp r0, 0 |
| if (r0 == 0) {
0x0004f100 beq 0x4f1a2 | goto label_7;
| }
0x0004f102 ldr r3, [pc, 0xec] |
0x0004f104 add r3, pc | r3 = 0x9e2fa;
0x0004f106 ldr.w fp, [r3, 0x110] | fp = *(0x9e40a);
0x0004f10a cmp.w fp, 0 |
| if (fp != 0) {
0x0004f10e bne 0x4f1b8 | goto label_8;
| }
0x0004f110 add.w sb, sp, 4 | sb += var_4h;
0x0004f114 ldr r3, [r0, 0x38] | r3 = *((r0 + 0x38));
0x0004f116 mov r2, sb | r2 = sb;
0x0004f118 mov.w r1, 0x100 | r1 = 0x100;
0x0004f11c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x0004f11e ldrb.w r4, [sl, 0x29e] | r4 = *((sl + 0x29e));
0x0004f122 ldrb.w r0, [sl, 0x29d] | r0 = *((sl + 0x29d));
0x0004f126 ldrb.w r3, [sb] | r3 = *(sb);
| label_2:
0x0004f12a ldr r2, [pc, 0xc8] |
0x0004f12c add r2, pc | r2 = 0x9e326;
0x0004f12e addw r2, r2, 0x29e | __asm ("addw r2, r2, aav.0x000000ff");
0x0004f132 mov r1, r2 | r1 = r2;
| do {
0x0004f134 strb r5, [r1, 1]! | *((r1 += 1)) = r5;
0x0004f138 adds r5, 1 | r5++;
0x0004f13a cmp.w r5, 0x100 |
0x0004f13e bne 0x4f134 |
| } while (r5 != 0x100);
0x0004f140 ldr.w ip, [pc, 0xb4] | ip = *(0x0004f1f8);
0x0004f144 mov r5, sb | r5 = sb;
0x0004f146 add ip, pc |
0x0004f148 addw lr, ip, 0x39e | __asm ("addw lr, ip, aav.0x000000ff");
0x0004f14c b 0x4f152 |
| while (r2 != lr) {
0x0004f14e ldrb r3, [r5, 1]! | r3 = var_1h;
0x0004f152 ldrb r1, [r2, 1]! | r1 = *((r2 += 1));
0x0004f156 add r3, r4 | r3 += r4;
0x0004f158 add r3, r1 | r3 += r1;
0x0004f15a cmp r2, lr |
0x0004f15c uxtb r4, r3 | r4 = (int8_t) r3;
0x0004f15e add.w r3, ip, r4 | r3 = ip + r4;
0x0004f162 ldrb.w sb, [r3, 0x29f] | sb = *((r3 + 0x29f));
0x0004f166 strb.w r1, [r3, 0x29f] | *((r3 + 0x29f)) = r1;
0x0004f16a strb.w sb, [r2] | *(r2) = sb;
0x0004f16e bne 0x4f14e |
| }
0x0004f170 strb.w r1, [r3, 0x29f] | *((r3 + 0x29f)) = r1;
0x0004f174 movs r3, 1 | r3 = 1;
0x0004f176 strb.w sb, [ip, 0x39e] | *((ip + 0x39e)) = sb;
0x0004f17a strb.w r3, [ip, 0x29c] | *((ip + 0x29c)) = r3;
0x0004f17e b 0x4f05c | goto label_0;
| label_4:
0x0004f180 ldr r3, [pc, 0x78] |
0x0004f182 movs r2, 0 | r2 = 0;
0x0004f184 add r3, pc | r3 = 0x9e384;
0x0004f186 strb.w r2, [r3, 0x29c] | *((r3 + 0x29c)) = r2;
0x0004f18a ldr r2, [pc, 0x74] |
0x0004f18c ldr r3, [pc, 0x48] | r3 = *(0x4f1d8);
0x0004f18e add r2, pc | r2 = 0x9e394;
0x0004f190 ldr r3, [r2, r3] | r3 = *(0x9e394);
0x0004f192 ldr r2, [r3] | r2 = *(0x9e394);
0x0004f194 ldr r3, [sp, 0x104] | r3 = var_104h;
0x0004f196 eors r2, r3 | r2 ^= r3;
0x0004f198 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0004f19c beq 0x4f0ca | goto label_1;
| }
| label_6:
0x0004f19e blx 0x7e8c | fcn_00007e8c ();
| label_7:
0x0004f1a2 add.w sb, sp, 4 | sb += var_4h;
0x0004f1a6 mov.w r2, 0x100 | r2 = 0x100;
0x0004f1aa mov r1, r4 | r1 = r4;
0x0004f1ac mov r0, sb | r0 = sb;
0x0004f1ae blx 0x8264 | fcn_00008264 ();
0x0004f1b2 mov r3, r4 | r3 = r4;
0x0004f1b4 mov r0, r4 | r0 = r4;
0x0004f1b6 b 0x4f12a | goto label_2;
| label_8:
0x0004f1b8 add.w sb, sp, 4 | sb += var_4h;
0x0004f1bc movs r2, 0xfc | r2 = 0xfc;
0x0004f1be mov r1, r4 | r1 = r4;
0x0004f1c0 add r0, sp, 8 | r0 += var_8h;
0x0004f1c2 blx 0x8264 | fcn_00008264 ();
0x0004f1c6 uxtb.w r3, fp | r3 = (int8_t) fp;
0x0004f1ca mov r0, r4 | r0 = r4;
0x0004f1cc str.w fp, [sb] | __asm ("str.w fp, [sb]");
0x0004f1d0 b 0x4f12a | 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/libsqlite3.so.0.8.6 @ 0x1a444 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_result_error_nomem () | void sqlite3_result_error_nomem (int16_t arg1) {
| r0 = arg1;
0x0001a444 push {r4, lr} |
0x0001a446 mov r4, r0 | r4 = r0;
0x0001a448 ldr r0, [r0] | r0 = *(r0);
0x0001a44a ldrh r3, [r0, 8] | r3 = *((r0 + 8));
0x0001a44c and r3, r3, 0x2400 | r3 &= 0x2400;
| if (r3 != 0) {
0x0001a450 cbnz r3, 0x1a496 | goto label_0;
| }
0x0001a452 movs r3, 1 | r3 = 1;
0x0001a454 strh r3, [r0, 8] | *((r0 + 8)) = r3;
| do {
0x0001a456 ldr r3, [r0, 0x20] | r3 = *((r0 + 0x20));
0x0001a458 movs r2, 7 | r2 = 7;
0x0001a45a str r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
0x0001a45c ldrb.w r2, [r3, 0x53] | r2 = *((r3 + 0x53));
| if (r2 == 0) {
0x0001a460 cbnz r2, 0x1a494 |
0x0001a462 ldrb.w r2, [r3, 0x54] | r2 = *((r3 + 0x54));
| if (r2 != 0) {
0x0001a466 cbnz r2, 0x1a494 | goto label_1;
| }
0x0001a468 ldr.w r1, [r3, 0xbc] | r1 = *((r3 + 0xbc));
0x0001a46c movs r2, 1 | r2 = 1;
0x0001a46e strb.w r2, [r3, 0x53] | *((r3 + 0x53)) = r2;
0x0001a472 movs r0, 0 | r0 = 0;
0x0001a474 cmp r1, 0 |
0x0001a476 it gt |
| if (r1 <= 0) {
0x0001a478 strgt r2, [r3, 0x110] | *((r3 + 0x110)) = r2;
| }
0x0001a47c ldr.w r2, [r3, 0x118] | r2 = *((r3 + 0x118));
0x0001a480 ldr.w r1, [r3, 0xf4] | r1 = *((r3 + 0xf4));
0x0001a484 strh.w r0, [r3, 0x11c] | *((r3 + 0x11c)) = r0;
0x0001a488 adds r2, 1 | r2++;
0x0001a48a str.w r2, [r3, 0x118] | __asm ("str.w r2, aav.0x000000ff");
| if (r1 == 0) {
0x0001a48e cbz r1, 0x1a494 | goto label_1;
| }
0x0001a490 movs r3, 7 | r3 = 7;
0x0001a492 str r3, [r1, 0xc] | *((r1 + 0xc)) = r3;
| }
| label_1:
0x0001a494 pop {r4, pc} |
| label_0:
0x0001a496 bl 0x15b10 | fcn_00015b10 (r0);
0x0001a49a ldr r0, [r4] | r0 = *(r4);
0x0001a49c b 0x1a456 |
| } 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/libsqlite3.so.0.8.6 @ 0x836a0 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_serialize () | void sqlite3_serialize (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_0h;
| int16_t var_40h;
| int16_t var_ch_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000836a0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000836a4 mov r4, r2 | r4 = r2;
0x000836a6 ldr r2, [pc, 0x180] |
0x000836a8 mov sb, r3 | sb = r3;
0x000836aa sub sp, 0x24 |
0x000836ac movs r5, 0 | r5 = 0;
0x000836ae ldr r3, [pc, 0x17c] | r3 = *(0x8382e);
0x000836b0 mov r7, r0 | r7 = r0;
0x000836b2 add r2, pc | r2 = 0x106ee0;
0x000836b4 ldr r3, [r2, r3] |
0x000836b6 ldr r3, [r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x000836b8 str r3, [sp, 0x1c] | var_1ch = r3;
0x000836ba mov.w r3, 0 | r3 = 0;
0x000836be str r5, [sp, 0x14] | var_14h = r5;
0x000836c0 mov r5, r1 | r5 = r1;
0x000836c2 cmp r1, 0 |
| if (r1 == 0) {
0x000836c4 beq 0x8376a | goto label_4;
| }
| label_0:
0x000836c6 mov r1, r5 | r1 = r5;
0x000836c8 mov r0, r7 | r0 = r7;
0x000836ca bl 0x2ca40 | fcn_0002ca40 ();
0x000836ce mov r1, r5 | r1 = r5;
0x000836d0 mov r6, r0 | r6 = r0;
0x000836d2 mov r0, r7 | r0 = r7;
0x000836d4 bl 0x19fe4 | fcn_00019fe4 (r0, r1);
| if (r4 != 0) {
0x000836d8 cbz r4, 0x836e2 |
0x000836da vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000836de vstr d16, [r4] | __asm ("vstr d16, [r4]");
| }
0x000836e2 cmp r0, 0 |
| if (r0 < 0) {
0x000836e4 blt 0x83770 | goto label_5;
| }
| if (r6 == 0) {
0x000836e6 cbz r6, 0x8371a | goto label_6;
| }
0x000836e8 ldr r5, [r6, 4] | r5 = *((r6 + 4));
| if (r4 != 0) {
0x000836ea cbz r4, 0x836f4 |
0x000836ec ldrd r2, r3, [r5] | __asm ("ldrd r2, r3, [r5]");
0x000836f0 strd r2, r3, [r4] | __asm ("strd r2, r3, [r4]");
| }
0x000836f4 tst.w sb, 1 |
| if ((sb & 1) == 0) {
0x000836f8 beq 0x8377a | goto label_7;
| }
0x000836fa ldr r6, [r5, 0x18] | r6 = *((r5 + 0x18));
| do {
| label_1:
0x000836fc ldr r2, [pc, 0x130] |
0x000836fe ldr r3, [pc, 0x12c] | r3 = *(0x8382e);
0x00083700 add r2, pc | r2 = 0x106f34;
0x00083702 ldr r3, [r2, r3] | r3 = imp._ITM_deregisterTMCloneTable;
0x00083704 ldr r2, [r3] | r2 = imp._ITM_deregisterTMCloneTable;
0x00083706 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00083708 eors r2, r3 | r2 ^= r3;
0x0008370a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0008370e bne.w 0x83824 | goto label_8;
| }
0x00083712 mov r0, r6 | r0 = r6;
0x00083714 add sp, 0x24 |
0x00083716 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0008371a ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0008371c add.w r3, r3, r0, lsl 4 | r3 += (r0 << 4);
0x00083720 ldr.w r8, [r3, 4] | r8 = *((r3 + 4));
0x00083724 cmp.w r8, 0 |
| if (r8 == 0) {
0x00083728 beq 0x83770 | goto label_5;
| }
0x0008372a ldr r0, [pc, 0x108] |
0x0008372c mov r1, r5 | r1 = r5;
0x0008372e ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00083732 add r0, pc | r0 = 0x106f6c;
0x00083734 ldr r5, [r3, 0x24] | r5 = *((r3 + 0x24));
0x00083736 blx 0x852c | r0 = strncmp (r0, r1, r2);
0x0008373a mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x0008373c cbz r0, 0x83774 | goto label_9;
| }
0x0008373e mov r0, r7 | r0 = r7;
0x00083740 add r3, sp, 0x14 | r3 += var_14h;
0x00083742 mov.w r2, -1 | r2 = -1;
0x00083746 mov r1, sl | r1 = sl;
0x00083748 str r6, [sp] | *(sp) = r6;
0x0008374a blx 0x8490 | r0 = fcn_00008490 ();
0x0008374e mov r7, r0 | r7 = r0;
0x00083750 mov r0, sl | r0 = sl;
0x00083752 blx 0x84f8 | fcn_000084f8 ();
| if (r7 != 0) {
0x00083756 cbnz r7, 0x83770 | goto label_5;
| }
0x00083758 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0008375a blx 0x809c | r0 = fcn_0000809c ();
0x0008375e cmp r0, 0x64 |
| if (r0 == 0x64) {
0x00083760 beq 0x83792 | goto label_10;
| }
| label_2:
0x00083762 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00083764 blx 0x8484 | fcn_00008484 ();
0x00083768 b 0x836fc |
| } while (1);
| label_4:
0x0008376a ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x0008376c ldr r5, [r3] | r5 = *(r3);
0x0008376e b 0x836c6 | goto label_0;
| label_5:
0x00083770 movs r6, 0 | r6 = 0;
0x00083772 b 0x836fc | goto label_1;
| label_9:
0x00083774 blx 0x84f8 | fcn_000084f8 ();
0x00083778 b 0x836fc | goto label_1;
| label_7:
0x0008377a ldrd r0, r1, [r5] | __asm ("ldrd r0, r1, [r5]");
0x0008377e blx 0x7f18 | r0 = fcn_00007f18 ();
0x00083782 mov r6, r0 | r6 = r0;
0x00083784 cmp r0, 0 |
| if (r0 == 0) {
0x00083786 beq 0x836fc | goto label_1;
| }
0x00083788 ldr r2, [r5] | r2 = *(r5);
0x0008378a ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0008378c blx 0x7dcc | fcn_00007dcc ();
0x00083790 b 0x836fc | goto label_1;
| label_10:
0x00083792 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00083794 mov r1, r6 | r1 = r6;
0x00083796 blx 0x80d8 | fcn_000080d8 ();
0x0008379a mul r1, r5, r1 | r1 = r5 * r1;
0x0008379e asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x000837a0 mla r3, r0, r3, r1 | __asm ("mla r3, r0, r3, r1");
0x000837a4 umull r0, r1, r5, r0 | r0:r1 = r5 * r0;
0x000837a8 add r1, r3 | r1 += r3;
| if (r4 != 0) {
0x000837aa cbz r4, 0x837b0 |
0x000837ac strd r0, r1, [r4] | __asm ("strd r0, r1, [r4]");
| }
0x000837b0 ands r4, sb, 1 | r4 = sb & 1;
| if (r4 != sb) {
0x000837b4 bne 0x83762 | goto label_2;
| }
0x000837b6 blx 0x7f18 | r0 = fcn_00007f18 ();
0x000837ba mov fp, r0 |
0x000837bc cmp r0, 0 |
| if (r0 == 0) {
0x000837be beq 0x83762 | goto label_2;
| }
0x000837c0 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000837c2 mov r1, r4 | r1 = r4;
0x000837c4 blx 0x8050 | fcn_00008050 ();
0x000837c8 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000837cc subs.w sb, r0, 0 | sb = r0 - 0;
0x000837d0 ldr.w r8, [r3] | r8 = *(r3);
| if (sb <= r0) {
0x000837d4 ble 0x83820 | goto label_11;
| }
0x000837d6 mov r7, fp | r7 = fp;
0x000837d8 movs r6, 1 | r6 = 1;
0x000837da add.w sl, sp, 0x18 | sl += var_18h;
0x000837de str r4, [sp, 0xc] | var_ch_2 = r4;
0x000837e0 b 0x837fe |
| while (r0 == 0) {
0x000837e2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000837e4 mov r2, r5 | r2 = r5;
0x000837e6 mov r0, r7 | r0 = r7;
0x000837e8 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000837ea blx 0x7dcc | fcn_00007dcc ();
| label_3:
0x000837ee ldr r0, [sp, 0x18] | r0 = var_18h;
| if (r0 != 0) {
0x000837f0 cbz r0, 0x837f6 |
0x000837f2 bl 0x11fa4 | fcn_00011fa4 (r0);
| }
0x000837f6 adds r6, 1 | r6++;
0x000837f8 add r7, r5 | r7 += r5;
0x000837fa cmp sb, r6 |
| if (sb < r6) {
0x000837fc blt 0x83820 | goto label_11;
| }
0x000837fe ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x00083800 mov r2, sl | r2 = sl;
0x00083802 ldr.w r4, [r8, 0xcc] | r4 = *((r8 + 0xcc));
0x00083806 mov r1, r6 | r1 = r6;
0x00083808 mov r0, r8 | r0 = r8;
0x0008380a str r3, [sp, 0x18] | var_18h = r3;
0x0008380c movs r3, 0 | r3 = 0;
0x0008380e blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00083810 cmp r0, 0 |
0x00083812 beq 0x837e2 |
| }
0x00083814 mov r2, r5 | r2 = r5;
0x00083816 movs r1, 0 | r1 = 0;
0x00083818 mov r0, r7 | r0 = r7;
0x0008381a blx 0x8264 | fcn_00008264 ();
0x0008381e b 0x837ee | goto label_3;
| label_11:
0x00083820 mov r6, fp | r6 = fp;
0x00083822 b 0x83762 | goto label_2;
| do {
| label_8:
0x00083824 blx 0x7e8c | fcn_00007e8c ();
0x00083828 adr r5, 0x378 | r5 = 0x378;
0x0008382a movs r4, r0 | r4 = r0;
0x0008382c lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0008382e movs r0, r0 |
0x00083830 adr r5, 0x240 | r5 = 0x240;
0x00083832 movs r4, r0 | r4 = r0;
0x00083834 bne 0x83824 |
| } while (r4 != r0);
0x00083836 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/libsqlite3.so.0.8.6 @ 0x81f40 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_step () | void sqlite3_step (int16_t arg_4h, int16_t arg_190h, uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_cch;
| int16_t var_144h;
| r0 = arg1;
0x00081f40 ldr.w r3, [pc, 0xb58] | r3 = *(0x00082a9c);
0x00081f44 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00081f48 sub sp, 0x14c |
0x00081f4a ldr.w r2, [pc, 0xb54] | r2 = *(0x00082aa0);
0x00081f4e add r3, pc | r3 += pc;
0x00081f50 str r3, [sp, 0x34] | var_34h = r3;
0x00081f52 ldr.w r3, [pc, 0xb50] |
0x00081f56 add r2, pc | r2 += pc;
0x00081f58 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00081f5a ldr r3, [r3] | r3 = *(0x82aa6);
0x00081f5c str r3, [sp, 0x144] | var_144h = r3;
0x00081f5e mov.w r3, 0 | r3 = 0;
0x00081f62 cmp r0, 0 |
| if (r0 == 0) {
0x00081f64 beq.w 0x827aa | goto label_56;
| }
0x00081f68 ldr r3, [r0] | r3 = *(r0);
0x00081f6a mov sb, r0 | sb = r0;
0x00081f6c str r3, [sp, 0x1c] | var_1ch = r3;
0x00081f6e cmp r3, 0 |
| if (r3 == 0) {
0x00081f70 beq.w 0x827d8 | goto label_57;
| }
0x00081f74 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00081f76 movw r3, 0xda3 | r3 = 0xda3;
0x00081f7a mov r4, r3 | r4 = r3;
0x00081f7c mov r6, sb | r6 = sb;
0x00081f7e blx 0x8254 | fcn_00008254 ();
0x00081f82 movs r3, 0 | r3 = 0;
0x00081f84 mov r2, r4 | r2 = r4;
0x00081f86 strb.w r3, [sb, 0x95] | *((sb + 0x95)) = r3;
0x00081f8a movs r3, 0x33 | r3 = 0x33;
0x00081f8c str r3, [sp, 0x10] | var_10h = r3;
0x00081f8e mov.w r3, 0xca00 |
0x00081f92 movt r3, 0x3b9a | r3 = 0x3b9aca00;
0x00081f96 movt r2, 0x2df2 | r2 = (r2 & 0xFFFF) | 0x2df20000;
0x00081f9a str r3, [sp, 0x38] | var_38h = r3;
0x00081f9c movw r3, 0x2973 |
0x00081fa0 movt r3, 0x319c | r3 = 0x319c2973;
0x00081fa4 str r2, [sp, 0x14] | var_14h = r2;
0x00081fa6 str r3, [sp, 0x20] | var_20h = r3;
0x00081fa8 ldr.w r3, [pc, 0xafc] |
0x00081fac add r3, pc | r3 = 0x104a58;
0x00081fae str r3, [sp, 0x3c] | var_3ch = r3;
0x00081fb0 ldr.w r3, [pc, 0xaf8] |
0x00081fb4 add r3, pc | r3 = 0x104a64;
0x00081fb6 str r3, [sp, 0x40] | var_40h = r3;
| label_4:
0x00081fb8 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00081fba ldr r2, [sp, 0x14] | r2 = var_14h;
0x00081fbc cmp r3, r2 |
| if (r3 != r2) {
0x00081fbe beq 0x81fc6 |
0x00081fc0 mov r0, r6 | r0 = r6;
0x00081fc2 blx 0x7cfc | fcn_00007cfc ();
0x00081fc4 invalid |
| }
0x00081fc6 ldr.w sl, [r6] | sl = *(r6);
0x00081fca ldrb.w r3, [sl, 0x53] | r3 = *((sl + 0x53));
0x00081fce cmp r3, 0 |
| if (r3 != 0) {
0x00081fd0 bne.w 0x8237e | goto label_58;
| }
0x00081fd4 ldr r2, [r6, 0x24] | r2 = *((r6 + 0x24));
0x00081fd6 ldrb.w r3, [r6, 0x96] | r3 = *((r6 + 0x96));
0x00081fda cmp r2, 0 |
| if (r2 < 0) {
0x00081fdc blt.w 0x822f6 | goto label_59;
| }
| label_5:
0x00081fe0 ands r3, r3, 0xc | r3 &= 0xc;
| if (r3 == r3) {
0x00081fe4 beq.w 0x82148 | goto label_60;
| }
0x00081fe8 ldr r2, [r6, 0x58] | r2 = *((r6 + 0x58));
0x00081fea cmp r3, 4 |
0x00081fec ldr r1, [r6] | r1 = *(r6);
0x00081fee add.w r0, r2, 0x28 | r0 = r2 + 0x28;
0x00081ff2 str r2, [sp, 0x18] | var_18h = r2;
0x00081ff4 str r1, [sp, 0x24] | var_24h = r1;
0x00081ff6 str r0, [sp, 0x28] | var_28h = r0;
| if (r3 == 4) {
0x00081ff8 beq.w 0x82386 | goto label_61;
| }
0x00081ffc ldr r4, [r1, 0x20] | r4 = *((r1 + 0x20));
0x00081ffe movs r1, 8 | r1 = 8;
0x00082000 bl 0x16cfc | fcn_00016cfc (r0, r1);
0x00082004 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x00082006 movs r2, 0 | r2 = 0;
0x00082008 and r4, r4, 0x1000000 | r4 &= 0x1000000;
0x0008200c str r2, [r6, 0x78] | *((r6 + 0x78)) = r2;
0x0008200e cmp r3, 7 |
| if (r3 == 7) {
0x00082010 beq.w 0x8275c | goto label_62;
| }
0x00082014 ldrb.w r3, [r6, 0x96] | r3 = *((r6 + 0x96));
0x00082018 ldr.w r8, [r6, 0x6c] | r8 = *((r6 + 0x6c));
0x0008201c and fp, r3, 0xc |
0x00082020 mov r2, r8 | r2 = r8;
0x00082022 cmp r4, 0 |
| if (r4 != 0) {
0x00082024 bne.w 0x823a0 | goto label_63;
| }
0x00082028 mov sb, r4 | sb = r4;
0x0008202a mov ip, r4 |
0x0008202c mov r2, r4 | r2 = r4;
| label_8:
0x0008202e ldr r7, [r6, 0x24] | r7 = *((r6 + 0x24));
0x00082030 mov r5, sb | r5 = sb;
0x00082032 b 0x82068 |
| while (r4 < r3) {
0x00082034 ldr r3, [r6, 0x68] | r3 = *((r6 + 0x68));
| label_0:
0x00082036 add.w r1, r4, r4, lsl 2 | r1 = r4 + (r4 << 2);
0x0008203a add.w sb, r3, r1, lsl 2 | sb = r3 + (r1 << 2);
| if (r5 != 0) {
0x0008203e cbz r5, 0x82048 |
0x00082040 ldrsb.w r3, [sb, 1] | r3 = *((sb + 1));
0x00082044 adds r3, 4 | r3 += 4;
| if (r3 == 4) {
0x00082046 beq 0x82096 | goto label_64;
| }
| }
| label_1:
0x00082048 cmp.w fp, 8 |
| if (fp != 8) {
0x0008204c bne 0x82100 | goto label_65;
| }
| label_3:
0x0008204e ldrb.w r3, [sb] | r3 = *(sb);
0x00082052 cmp r3, 0xb2 |
| if (r3 == 0xb2) {
0x00082054 beq 0x82100 | goto label_65;
| }
0x00082056 cmp r7, 1 |
0x00082058 ite le |
| if (r7 > 1) {
0x0008205a movle r1, 0 | r1 = 0;
| }
| if (r7 <= 1) {
0x0008205c movgt r1, 1 | r1 = 1;
| }
0x0008205e cmp r3, 0x3e |
0x00082060 it ne |
| if (r3 == 0x3e) {
0x00082062 movne r1, 0 | r1 = 0;
| }
0x00082064 cmp r1, 0 |
| if (r1 != 0) {
0x00082066 bne 0x82100 | goto label_65;
| }
0x00082068 mov r4, r7 | r4 = r7;
0x0008206a adds r7, 1 | r7++;
0x0008206c cmp r4, r8 |
| if (r4 >= r8) {
0x0008206e bge.w 0x8242e | goto label_66;
| }
0x00082072 ldr r3, [r6, 0x6c] | r3 = *((r6 + 0x6c));
0x00082074 cmp r4, r3 |
0x00082076 blt 0x82034 |
| }
0x00082078 ldr.w r1, [ip] | r1 = *(ip);
0x0008207c subs r4, r4, r3 | r4 -= r3;
0x0008207e ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00082080 cmp r3, r4 |
| if (r3 > r4) {
0x00082082 bgt 0x82092 | goto label_67;
| }
0x00082084 mov r0, ip | r0 = ip;
| do {
0x00082086 ldr r1, [r0, 4]! | r1 = *((r0 += 4));
0x0008208a subs r4, r4, r3 | r4 -= r3;
0x0008208c ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0008208e cmp r3, r4 |
0x00082090 ble 0x82086 |
| } while (r3 <= r4);
| label_67:
0x00082092 ldr r3, [r1] | r3 = *(r1);
0x00082094 b 0x82036 | goto label_0;
| if (r2 == 0) {
| label_64:
0x00082096 cbz r2, 0x820b0 | goto label_68;
| }
0x00082098 ldr.w lr, [sb, 0x10] |
0x0008209c sub.w r1, ip, 4 | r1 = ip - 4;
0x000820a0 movs r3, 0 | r3 = 0;
| label_2:
0x000820a2 ldr r0, [r1, 4]! | r0 = *((r1 += 4));
0x000820a6 cmp r0, lr |
| if (r0 == lr) {
0x000820a8 beq 0x82048 | goto label_1;
| }
0x000820aa adds r3, 1 | r3++;
0x000820ac cmp r2, r3 |
| if (r2 != r3) {
0x000820ae bne 0x820a2 | goto label_2;
| }
| label_68:
0x000820b0 adds r3, r2, 1 | r3 = r2 + 1;
0x000820b2 subs r2, 0 |
0x000820b4 lsl.w r1, r3, 2 | r1 = r3 << 2;
0x000820b8 it ne |
| if (r2 == 0) {
0x000820ba movne r2, 1 | r2 = 1;
| }
0x000820bc mov r0, r5 | r0 = r5;
0x000820be str r3, [sp, 0x30] | var_30h = r3;
0x000820c0 str r1, [sp, 0x2c] | var_2ch = r1;
0x000820c2 bl 0x1d744 | fcn_0001d744 (r0, r1, r2);
0x000820c6 str r0, [r6, 0x28] | *((r6 + 0x28)) = r0;
0x000820c8 cmp r0, 0 |
| if (r0 != 0) {
0x000820ca bne.w 0x823e2 | goto label_69;
| }
0x000820ce ldr r3, [sp, 0x30] | r3 = var_30h;
0x000820d0 cmp.w fp, 8 |
0x000820d4 ldr.w ip, [r5, 0x10] | ip = *((r5 + 0x10));
0x000820d8 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000820da mov r2, r3 | r2 = r3;
0x000820dc ldr.w r3, [sb, 0x10] | r3 = *((sb + 0x10));
0x000820e0 ldrh r0, [r5, 8] | r0 = *((r5 + 8));
0x000820e2 add.w lr, ip, r1 | lr = ip + r1;
0x000820e6 str r3, [lr, -0x4] | *((lr - 0x4)) = r3;
0x000820ea ldr.w r3, [sb, 0x10] | r3 = *((sb + 0x10));
0x000820ee and r0, r0, 0x3e40 | r0 &= 0x3e40;
0x000820f2 orr r0, r0, 0x10 | r0 |= 0x10;
0x000820f6 str r1, [r5, 0xc] | *((r5 + 0xc)) = r1;
0x000820f8 strh r0, [r5, 8] | *((r5 + 8)) = r0;
0x000820fa ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000820fc add r8, r3 | r8 += r3;
| if (fp == 8) {
0x000820fe beq 0x8204e | goto label_3;
| }
| label_65:
0x00082100 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00082102 mov r5, sb | r5 = sb;
0x00082104 str r7, [r6, 0x24] | *((r6 + 0x24)) = r7;
0x00082106 ldr.w r3, [r3, 0x110] | r3 = *((r3 + 0x110));
0x0008210a cmp r3, 0 |
| if (r3 == 0) {
0x0008210c beq.w 0x8252a | goto label_70;
| }
0x00082110 ldr.w r1, [pc, 0x99c] | r1 = *(0x00082ab0);
0x00082114 movs r3, 9 | r3 = 9;
0x00082116 mov r0, r6 | r0 = r6;
0x00082118 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0008211a add r1, pc | r1 += pc;
0x0008211c bl 0x2671c | fcn_0002671c (r0);
| label_10:
0x00082120 ldrd r2, r3, [r6, 0x88] | __asm ("ldrd r2, r3, [r6, 0x88]");
0x00082124 cmp r2, 1 |
0x00082126 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x0008212a blt 0x82134 |
0x0008212c mov r1, r6 | r1 = r6;
0x0008212e mov r0, sl | r0 = sl;
0x00082130 bl 0xdc68 | fcn_0000dc68 (r0, r1);
| }
0x00082134 movs r5, 1 | r5 = 1;
| label_11:
0x00082136 ldrsb.w r3, [r6, 0x94] | r3 = *((r6 + 0x94));
0x0008213a cmp r3, 0 |
| if (r3 < 0) {
0x0008213c bge 0x8216c |
0x0008213e mov r0, r6 | r0 = r6;
0x00082140 bl 0x2c834 | r0 = fcn_0002c834 (r0, r1);
0x00082144 mov r5, r0 | r5 = r0;
0x00082146 b 0x8216c | goto label_71;
| label_60:
0x00082148 ldr.w r3, [sl, 0xbc] | r3 = *((sl + 0xbc));
0x0008214c mov r0, r6 | r0 = r6;
0x0008214e adds r3, 1 | r3++;
0x00082150 str.w r3, [sl, 0xbc] | __asm ("str.w r3, [sl, 0xbc]");
0x00082154 bl 0x79c70 | fcn_00079c70 (r0, r1, r2, r3, r4, r5, r6);
0x00082158 ldr.w r3, [sl, 0xbc] | r3 = *((sl + 0xbc));
0x0008215c cmp r0, 0x64 |
0x0008215e mov r5, r0 | r5 = r0;
0x00082160 add.w r3, r3, -1 | r3 += -1;
0x00082164 str.w r3, [sl, 0xbc] | __asm ("str.w r3, [sl, 0xbc]");
| if (r0 != 0x64) {
0x00082168 bne.w 0x823e6 | goto label_72;
| }
| }
| label_71:
0x0008216c ldr r7, [r6, 0x28] | r7 = *((r6 + 0x28));
0x0008216e ldr r0, [r6] | r0 = *(r6);
0x00082170 subs r3, r7, 0 | r3 = r7 - 0;
0x00082172 it ne |
| if (r3 == r7) {
0x00082174 movne r3, 1 | r3 = 1;
| }
| label_12:
0x00082176 str.w r5, [sl, 0x40] | __asm ("str.w r5, [sl, 0x40]");
0x0008217a ldrb.w r2, [r0, 0x53] | r2 = *((r0 + 0x53));
0x0008217e cmp r2, 0 |
0x00082180 it ne |
| if (r2 == 0) {
0x00082182 orrne r3, r3, 1 | r3 |= 1;
| }
0x00082186 cmp r3, 0 |
0x00082188 bne.w 0x8235c |
| while (r0 != 7) {
| label_6:
0x0008218c ldr.w r3, [sl, 0x44] | r3 = *((sl + 0x44));
0x00082190 ands r5, r3 | r5 &= r3;
0x00082192 cmp r5, 0x11 |
| if (r5 != 0x11) {
0x00082194 bne.w 0x827e4 | goto label_73;
| }
0x00082198 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0008219a subs r3, 1 | r3--;
0x0008219c str r3, [sp, 0x10] | var_10h = r3;
| if (r3 == 1) {
0x0008219e beq.w 0x827e4 | goto label_73;
| }
0x000821a0 strh r1, [r4, 0x18] | *((r4 + 0x18)) = r1;
0x000821a2 mov r0, r6 | r0 = r6;
0x000821a4 ldr.w r8, [r6, 0x24] | r8 = *((r6 + 0x24));
0x000821a8 blx 0x7c7c | fcn_00007c7c ();
0x000821ac ldr r5, [r6] | r5 = *(r6);
0x000821ae movs r3, 0 | r3 = 0;
0x000821b0 add r4, sp, 0x48 | r4 += var_48h;
0x000821b2 mov r1, r0 | r1 = r0;
0x000821b4 str r6, [sp] | *(sp) = r6;
0x000821b6 mov.w r2, -1 | r2 = -1;
0x000821ba str r3, [sp, 8] | var_8h = r3;
0x000821bc mov r0, r5 | r0 = r5;
0x000821be str r4, [sp, 4] | var_4h = r4;
0x000821c0 ldrb.w r3, [r6, 0x94] | r3 = *((r6 + 0x94));
0x000821c4 bl 0x78c84 | r0 = fcn_00078c84 (r0, r1, r2, r3, r4, r5, r6);
0x000821c8 mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x000821ca cbz r0, 0x82230 |
0x000821cc cmp r0, 7 |
0x000821ce mov sb, r6 | sb = r6;
| if (r0 == 7) {
0x000821d0 beq.w 0x82426 | goto label_74;
| }
| label_14:
0x000821d4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000821d6 ldr.w r0, [r3, 0x10c] | r0 = *((r3 + 0x10c));
0x000821da blx 0x8508 | fcn_00008508 ();
0x000821de ldr.w r1, [sb, 0x7c] | r1 = *((sb + 0x7c));
0x000821e2 mov r4, r0 | r4 = r0;
| if (r1 != 0) {
0x000821e4 cbz r1, 0x821ec |
0x000821e6 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000821e8 bl 0x159dc | fcn_000159dc (r0, r1);
| }
0x000821ec ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000821ee ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x000821f2 cmp r3, 0 |
| if (r3 == 0) {
0x000821f4 beq.w 0x82780 | goto label_75;
| }
0x000821f8 movs r3, 7 | r3 = 7;
0x000821fa movs r2, 0 | r2 = 0;
0x000821fc mov r4, r3 | r4 = r3;
0x000821fe str.w r2, [sb, 0x7c] | __asm ("str.w r2, [sb, 0x7c]");
0x00082202 str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
| label_7:
0x00082206 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00082208 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x0008220a blx 0x81d4 | fcn_000081d4 ();
| label_25:
0x0008220e ldr.w r2, [pc, 0x8a4] | r2 = *(0x00082ab4);
0x00082212 ldr.w r3, [pc, 0x890] | r3 = *(0x82aa6);
0x00082216 add r2, pc | r2 += pc;
0x00082218 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0008221a ldr r2, [r3] | r2 = *(0x82aa6);
0x0008221c ldr r3, [sp, 0x144] | r3 = var_144h;
0x0008221e eors r2, r3 | r2 ^= r3;
0x00082220 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00082224 bne.w 0x82a78 | goto label_76;
| }
0x00082228 mov r0, r4 | r0 = r4;
0x0008222a add sp, 0x14c |
0x0008222c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00082230 ldr r4, [r4] | r4 = *(r4);
0x00082232 add r5, sp, 0x60 | r5 += var_60h;
0x00082234 movs r2, 0xe0 | r2 = 0xe0;
0x00082236 mov r0, r5 | r0 = r5;
0x00082238 mov r1, r4 | r1 = r4;
0x0008223a blx 0x7dcc | fcn_00007dcc ();
0x0008223e movs r2, 0xe0 | r2 = 0xe0;
0x00082240 mov r1, r6 | r1 = r6;
0x00082242 mov r0, r4 | r0 = r4;
0x00082244 blx 0x7dcc | fcn_00007dcc ();
0x00082248 mov r1, r5 | r1 = r5;
0x0008224a movs r2, 0xe0 | r2 = 0xe0;
0x0008224c mov r0, r6 | r0 = r6;
0x0008224e blx 0x7dcc | fcn_00007dcc ();
0x00082252 ldr r1, [r6, 8] | r1 = *((r6 + 8));
0x00082254 ldrd r0, r5, [r4, 4] | __asm ("ldrd r0, r5, [r4, 4]");
0x00082258 ldr.w r2, [r4, 0xbc] | r2 = *((r4 + 0xbc));
0x0008225c str r1, [r4, 8] | *((r4 + 8)) = r1;
0x0008225e ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00082260 ldr.w r3, [r4, 0xd0] | r3 = *((r4 + 0xd0));
0x00082264 str r5, [r6, 8] | *((r6 + 8)) = r5;
0x00082266 str r1, [r4, 4] | *((r4 + 4)) = r1;
0x00082268 ldr.w r1, [r6, 0xbc] | r1 = *((r6 + 0xbc));
0x0008226c str r0, [r6, 4] | *((r6 + 4)) = r0;
0x0008226e str.w r1, [r4, 0xbc] | __asm ("str.w r1, [r4, 0xbc]");
0x00082272 str.w r2, [r6, 0xbc] | __asm ("str.w r2, [r6, 0xbc]");
0x00082276 str.w r3, [r6, 0xd0] | __asm ("str.w r3, [r6, 0xd0]");
0x0008227a ldrb.w r3, [r4, 0x94] | r3 = *((r4 + 0x94));
0x0008227e strb.w r3, [r6, 0x94] | *((r6 + 0x94)) = r3;
0x00082282 ldr.w r2, [r4, 0xa0] | r2 = *((r4 + 0xa0));
0x00082286 ldr.w r1, [r4, 0xa4] | r1 = *((r4 + 0xa4));
0x0008228a ldr.w r3, [r4, 0xa8] | r3 = *((r4 + 0xa8));
0x0008228e ldr.w r0, [r4, 0xac] | r0 = *((r4 + 0xac));
0x00082292 str.w r2, [r6, 0xa0] | __asm ("str.w r2, [r6, 0xa0]");
0x00082296 str.w r1, [r6, 0xa4] | __asm ("str.w r1, [r6, 0xa4]");
0x0008229a str.w r0, [r6, 0xac] | __asm ("str.w r0, [r6, 0xac]");
0x0008229e mov r0, r4 | r0 = r4;
0x000822a0 str.w r3, [r6, 0xa8] | __asm ("str.w r3, [r6, 0xa8]");
0x000822a4 ldr.w r1, [r4, 0xb4] | r1 = *((r4 + 0xb4));
0x000822a8 ldr.w r3, [r4, 0xb8] | r3 = *((r4 + 0xb8));
0x000822ac ldr.w r2, [r4, 0xb0] | r2 = *((r4 + 0xb0));
0x000822b0 str.w r1, [r6, 0xb4] | __asm ("str.w r1, [r6, 0xb4]");
0x000822b4 mov r1, r6 | r1 = r6;
0x000822b6 str.w r3, [r6, 0xb8] | __asm ("str.w r3, [r6, 0xb8]");
0x000822ba ldr.w r3, [r6, 0xb4] | r3 = *((r6 + 0xb4));
0x000822be str.w r2, [r6, 0xb0] | __asm ("str.w r2, [r6, 0xb0]");
0x000822c2 adds r3, 1 | r3++;
0x000822c4 str.w r3, [r6, 0xb4] | __asm ("str.w r3, [r6, 0xb4]");
0x000822c8 bl 0x15ea0 | fcn_00015ea0 (r0, r1, r2, r3);
0x000822cc ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x000822ce ldr r2, [sp, 0x14] | r2 = var_14h;
0x000822d0 ldr r1, [sp, 0x20] | r1 = var_20h;
0x000822d2 str r7, [r4, 0x28] | *((r4 + 0x28)) = r7;
0x000822d4 cmp r3, r1 |
0x000822d6 it ne |
| if (r3 != r1) {
0x000822d8 cmpne r3, r2 | __asm ("cmpne r3, r2");
| }
| if (r3 == r1) {
0x000822da beq 0x823da | goto label_77;
| }
| label_9:
0x000822dc mov r0, r4 | r0 = r4;
0x000822de bl 0x1a984 | fcn_0001a984 (r0);
0x000822e2 mov r0, r6 | r0 = r6;
0x000822e4 blx 0x7cfc | fcn_00007cfc ();
0x000822e8 cmp.w r8, 0 |
0x000822ec itt ge |
| if (r8 < 0) {
0x000822ee movge r3, 1 | r3 = 1;
| }
| if (r8 < 0) {
0x000822f0 strbge r3, [r6, 0x95] | *((r6 + 0x95)) = r3;
| }
0x000822f4 b 0x81fb8 | goto label_4;
| label_59:
0x000822f6 lsls r4, r3, 0x1e | r4 = r3 << 0x1e;
| if (r4 != r3) {
0x000822f8 bne.w 0x82414 | goto label_78;
| }
0x000822fc ldr.w r3, [sl, 0xb0] | r3 = *((sl + 0xb0));
0x00082300 cmp r3, 0 |
| if (r3 == 0) {
0x00082302 beq.w 0x824fe | goto label_79;
| }
| label_19:
0x00082306 ldrb.w r3, [sl, 0x5a] | r3 = *((sl + 0x5a));
0x0008230a tst.w r3, 0x82 |
| if ((r3 & 0x82) != 0) {
0x0008230e beq 0x82328 |
0x00082310 ldrb.w r3, [sl, 0xa9] | r3 = *((sl + 0xa9));
| if (r3 != 0) {
0x00082314 cbnz r3, 0x82328 | goto label_80;
| }
0x00082316 ldr.w r3, [r6, 0xbc] | r3 = *((r6 + 0xbc));
| if (r3 == 0) {
0x0008231a cbz r3, 0x82328 | goto label_80;
| }
0x0008231c ldr.w r0, [sl] | r0 = *(sl);
0x00082320 add.w r1, r6, 0x88 | r1 = r6 + 0x88;
0x00082324 bl 0xdbd0 | fcn_0000dbd0 (r0, r1, r2);
| }
| label_80:
0x00082328 ldr.w r3, [sl, 0xb0] | r3 = *((sl + 0xb0));
0x0008232c adds r3, 1 | r3++;
0x0008232e str.w r3, [sl, 0xb0] | __asm ("str.w r3, [sl, 0xb0]");
0x00082332 ldrb.w r3, [r6, 0x96] | r3 = *((r6 + 0x96));
0x00082336 lsls r0, r3, 0x18 | r0 = r3 << 0x18;
0x00082338 ittt pl |
| if (r0 < r3) {
0x0008233a ldrpl r2, [sl, 0xb8] | r2 = *((sl + 0xb8));
| }
| if (r0 < r3) {
0x0008233e addpl r2, 1 | r2++;
| }
| if (r0 >= r3) {
0x00082340 str.w r2, [sl, 0xb8] | __asm ("str.w r2, [sl, 0xb8]");
| }
0x00082344 ldrb.w r2, [r6, 0x97] | r2 = *((r6 + 0x97));
0x00082348 lsls r1, r2, 0x1f | r1 = r2 << 0x1f;
0x0008234a ittt mi |
| if (r1 >= r2) {
0x0008234c ldrmi r2, [sl, 0xb4] | r2 = *((sl + 0xb4));
| }
| if (r1 >= r2) {
0x00082350 addmi r2, 1 | r2++;
| }
| if (r1 < r2) {
0x00082352 str.w r2, [sl, 0xb4] | __asm ("str.w r2, [sl, 0xb4]");
| }
0x00082356 movs r2, 0 | r2 = 0;
0x00082358 str r2, [r6, 0x24] | *((r6 + 0x24)) = r2;
0x0008235a b 0x81fe0 | goto label_5;
0x0008235c mov r1, r7 | r1 = r7;
0x0008235e bl 0x166c8 | r0 = fcn_000166c8 (r0, r1);
0x00082362 cmp r0, 7 |
0x00082364 bne.w 0x8218c |
| }
| label_20:
0x00082368 ldrsb.w r3, [r6, 0x94] | r3 = *((r6 + 0x94));
0x0008236c movs r4, 7 | r4 = 7;
0x0008236e str r4, [r6, 0x28] | *((r6 + 0x28)) = r4;
0x00082370 cmp r3, 0 |
| if (r3 >= 0) {
0x00082372 bge.w 0x8218c | goto label_6;
| }
| label_13:
0x00082376 ldr.w r3, [sl, 0x44] | r3 = *((sl + 0x44));
0x0008237a ands r4, r3 | r4 &= r3;
0x0008237c b 0x82206 | goto label_7;
| label_58:
0x0008237e movs r3, 7 | r3 = 7;
0x00082380 mov r4, r3 | r4 = r3;
0x00082382 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x00082384 b 0x82206 | goto label_7;
| label_61:
0x00082386 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00082388 movs r1, 8 | r1 = 8;
0x0008238a bl 0x16cfc | fcn_00016cfc (r0, r1);
0x0008238e ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x00082390 movs r2, 0 | r2 = 0;
0x00082392 str r2, [r6, 0x78] | *((r6 + 0x78)) = r2;
0x00082394 cmp r3, 7 |
| if (r3 == 7) {
0x00082396 beq.w 0x8275c | goto label_62;
| }
0x0008239a ldrb.w r3, [r6, 0x96] | r3 = *((r6 + 0x96));
0x0008239e ldr r2, [r6, 0x6c] | r2 = *((r6 + 0x6c));
| label_63:
0x000823a0 and fp, r3, 0xc |
0x000823a4 ldr r3, [r6, 0x58] | r3 = *((r6 + 0x58));
0x000823a6 mov r8, r2 | r8 = r2;
0x000823a8 ldrh.w ip, [r3, 0x170] | ip = *((r3 + 0x170));
0x000823ac add.w sb, r3, 0x168 | sb = r3 + 0x168;
0x000823b0 ands ip, ip, 0x10 |
0x000823b4 it eq |
| if (ip == ip) {
0x000823b6 moveq r2, ip | r2 = ip;
| goto label_81;
| }
| if (ip == ip) {
| label_81:
0x000823b8 beq.w 0x8202e | goto label_8;
| }
0x000823bc ldrd r2, ip, [r3, 0x174] | __asm ("ldrd r2, ip, aav.0x000000ff");
0x000823c0 lsrs r2, r2, 2 | r2 >>= 2;
| if (r2 == r2) {
0x000823c2 beq.w 0x8202e | goto label_8;
| }
0x000823c6 add.w r0, ip, r2, lsl 2 | r0 = ip + (r2 << 2);
0x000823ca mov r3, ip | r3 = ip;
| do {
0x000823cc ldr r1, [r3], 4 | r1 = *(r3);
| r3 += 4;
0x000823d0 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000823d2 cmp r0, r3 |
0x000823d4 add r8, r1 | r8 += r1;
0x000823d6 bne 0x823cc |
| } while (r0 != r3);
0x000823d8 b 0x8202e | goto label_8;
| label_77:
0x000823da mov r0, r4 | r0 = r4;
0x000823dc bl 0x5a870 | fcn_0005a870 (r0);
0x000823e0 b 0x822dc | goto label_9;
| label_69:
0x000823e2 str r7, [r6, 0x24] | *((r6 + 0x24)) = r7;
0x000823e4 b 0x82120 | goto label_10;
| label_72:
0x000823e6 ldrd r2, r3, [r6, 0x88] | __asm ("ldrd r2, r3, [r6, 0x88]");
0x000823ea cmp r2, 1 |
0x000823ec sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x000823f0 blt 0x823fa |
0x000823f2 mov r1, r6 | r1 = r6;
0x000823f4 mov r0, sl | r0 = sl;
0x000823f6 bl 0xdc68 | fcn_0000dc68 (r0, r1);
| }
0x000823fa cmp r5, 0x65 |
| if (r5 != 0x65) {
0x000823fc bne.w 0x82136 | goto label_11;
| }
| do {
0x00082400 ldrb.w r3, [sl, 0x51] | r3 = *((sl + 0x51));
| if (r3 != 0) {
0x00082404 cbnz r3, 0x82450 | goto label_82;
| }
| label_15:
0x00082406 ldr r7, [r6, 0x28] | r7 = *((r6 + 0x28));
0x00082408 movs r5, 0x65 | r5 = 0x65;
0x0008240a ldr r0, [r6] | r0 = *(r6);
0x0008240c subs r3, r7, 0 | r3 = r7 - 0;
0x0008240e it ne |
| if (r3 == r7) {
0x00082410 movne r3, 1 | r3 = 1;
| }
0x00082412 b 0x82176 | goto label_12;
| label_78:
0x00082414 ldrsb.w r3, [r6, 0x94] | r3 = *((r6 + 0x94));
0x00082418 movs r2, 0x11 | r2 = 0x11;
0x0008241a str r2, [r6, 0x28] | *((r6 + 0x28)) = r2;
0x0008241c cmp r3, 0 |
| if (r3 < 0) {
0x0008241e blt.w 0x82764 | goto label_83;
| }
0x00082422 movs r4, 1 | r4 = 1;
0x00082424 b 0x82376 | goto label_13;
| label_74:
0x00082426 mov r0, r5 | r0 = r5;
0x00082428 bl 0x101ec | fcn_000101ec (r0);
0x0008242c b 0x821d4 | goto label_14;
| label_66:
0x0008242e ldrd r2, r3, [r6, 0x88] | __asm ("ldrd r2, r3, [r6, 0x88]");
0x00082432 movs r1, 0 | r1 = 0;
0x00082434 str r7, [r6, 0x24] | *((r6 + 0x24)) = r7;
0x00082436 str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x00082438 cmp r2, 1 |
0x0008243a sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x0008243e blt 0x82400 |
| } while (r2 < 1);
0x00082440 mov r1, r6 | r1 = r6;
0x00082442 mov r0, sl | r0 = sl;
0x00082444 bl 0xdc68 | fcn_0000dc68 (r0, r1);
0x00082448 ldrb.w r3, [sl, 0x51] | r3 = *((sl + 0x51));
0x0008244c cmp r3, 0 |
| if (r3 == 0) {
0x0008244e beq 0x82406 | goto label_15;
| }
| label_82:
0x00082450 ldr.w r2, [sl, 0x14] | r2 = *((sl + 0x14));
0x00082454 cmp r2, 0 |
| if (r2 <= 0) {
0x00082456 ble.w 0x82a36 | goto label_84;
| }
0x0008245a movs r7, 0 | r7 = 0;
0x0008245c mov r5, r7 | r5 = r7;
0x0008245e mov r8, r7 | r8 = r7;
0x00082460 b 0x824d4 | goto label_85;
| label_16:
0x00082462 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00082464 ldrb.w fp, [r4, 0xa] | fp = *((r4 + 0xa));
0x00082468 adds r2, 1 | r2++;
0x0008246a str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x0008246c cmp.w fp, 0 |
| if (fp != 0) {
0x00082470 bne 0x82504 | goto label_86;
| }
0x00082472 mov r0, r4 | r0 = r4;
0x00082474 bl 0x12464 | fcn_00012464 (r0);
0x00082478 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0008247a ldrb r2, [r4, 9] | r2 = *((r4 + 9));
0x0008247c ldr r3, [r3] | r3 = *(r3);
0x0008247e ldr.w r3, [r3, 0xd8] | r3 = *((r3 + 0xd8));
0x00082482 cmp r3, 0 |
| if (r3 == 0) {
0x00082484 beq.w 0x8273e | goto label_87;
| }
0x00082488 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x0008248a str.w fp, [r3, 0xc] | __asm ("str.w fp, [r3, 0xc]");
0x0008248e mov fp, r1 |
| if (r2 != 0) {
0x00082490 cbz r2, 0x8249c |
0x00082492 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00082494 subs r2, 1 | r2--;
0x00082496 str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x00082498 cmp r2, 0 |
| if (r2 == 0) {
0x0008249a beq 0x82522 | goto label_88;
| }
| }
| label_18:
0x0008249c cmp.w fp, 0 |
| if (fp > 0) {
0x000824a0 ble 0x824c8 |
0x000824a2 ldr.w r4, [sl, 0xf8] | r4 = *((sl + 0xf8));
0x000824a6 subs r3, r4, 0 | r3 = r4 - 0;
0x000824a8 it ne |
| if (r3 == r4) {
0x000824aa movne r3, 1 | r3 = 1;
| }
0x000824ac cmp r7, 0 |
0x000824ae it ne |
| if (r7 == 0) {
0x000824b0 movne r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x000824b2 cbz r3, 0x824c8 | goto label_21;
| }
0x000824b4 ldr.w r2, [sl, 0x10] | r2 = *((sl + 0x10));
0x000824b8 mov r3, fp | r3 = fp;
0x000824ba ldr.w r0, [sl, 0xfc] | r0 = *((sl + 0xfc));
0x000824be mov r1, sl | r1 = sl;
0x000824c0 ldr.w r2, [r2, sb] | r2 = *((r2 + sb));
0x000824c4 blx r4 | r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000824c6 mov r7, r0 | r7 = r0;
| }
| label_21:
0x000824c8 ldr.w r2, [sl, 0x14] | r2 = *((sl + 0x14));
| do {
| label_17:
0x000824cc adds r5, 1 | r5++;
0x000824ce cmp r5, r2 |
| if (r5 >= r2) {
0x000824d0 bge.w 0x82714 | goto label_89;
| }
| label_85:
0x000824d4 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x000824d8 lsl.w sb, r5, 4 | sb = r5 << 4;
0x000824dc add r3, sb | r3 += sb;
0x000824de ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x000824e0 cmp r4, 0 |
0x000824e2 beq 0x824cc |
| } while (r4 == 0);
0x000824e4 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x000824e6 cmp r3, 0 |
| if (r3 != 0) {
0x000824e8 bne 0x82462 | goto label_16;
| }
0x000824ea ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000824ec ldr r1, [r1] | r1 = *(r1);
0x000824ee ldr.w r1, [r1, 0xd8] | r1 = *((r1 + 0xd8));
0x000824f2 cmp r1, 0 |
| if (r1 == 0) {
0x000824f4 beq 0x824cc | goto label_17;
| }
0x000824f6 ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
0x000824f8 str r3, [r1, 0xc] | *((r1 + 0xc)) = r3;
0x000824fa mov fp, r2 |
0x000824fc b 0x8249c | goto label_18;
| label_79:
0x000824fe str.w r3, [sl, 0x110] | __asm ("str.w r3, aav.0x000000ff");
0x00082502 b 0x82306 | goto label_19;
| label_86:
0x00082504 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00082506 ldr r3, [r3] | r3 = *(r3);
0x00082508 ldr.w r3, [r3, 0xd8] | r3 = *((r3 + 0xd8));
0x0008250c cmp r3, 0 |
| if (r3 == 0) {
0x0008250e beq.w 0x82746 | goto label_90;
| }
0x00082512 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x00082514 subs r2, 1 | r2--;
0x00082516 str.w r8, [r3, 0xc] | __asm ("str.w r8, [r3, 0xc]");
0x0008251a str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x0008251c mov fp, r1 |
0x0008251e cmp r2, 0 |
| if (r2 != 0) {
0x00082520 bne 0x8249c | goto label_18;
| }
| label_88:
0x00082522 mov r0, r4 | r0 = r4;
0x00082524 bl 0x95d0 | fcn_000095d0 (r0);
0x00082528 b 0x8249c | goto label_18;
| label_70:
0x0008252a ldr r2, [sp, 0x38] | r2 = var_38h;
0x0008252c add r7, sp, 0x48 | r7 += var_48h;
0x0008252e strd r3, r3, [sp, 0x4c] | __asm ("strd r3, r3, [var_4ch]");
0x00082532 strh.w r3, [sp, 0x5c] | var_5ch = r3;
0x00082536 strd r2, r3, [sp, 0x54] | __asm ("strd r2, r3, [var_54h]");
0x0008253a str r3, [r7] | *(r7) = r3;
0x0008253c ldrsb.w r3, [r5, 1] | r3 = *((r5 + 1));
0x00082540 adds r3, 0x11 | r3 += 0x11;
0x00082542 cmp r3, 0xf |
| if (r3 > 0xf) {
0x00082544 bhi.w 0x828a6 | goto label_91;
| }
| /* switch table (17 cases) at 0x8254c */
0x00082548 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
0x0008256c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0008256e ldr.w fp, [r3] | fp = *(r3);
0x00082572 cmp.w fp, 0 |
| if (fp == 0) {
0x00082576 beq 0x825b4 | goto label_92;
| }
0x00082578 ldr.w r1, [pc, 0x53c] |
0x0008257c mov r8, r3 | r8 = r3;
0x0008257e mov r3, r7 | r3 = r7;
0x00082580 str r4, [sp, 0x2c] | var_2ch = r4;
0x00082582 mov r7, r6 | r7 = r6;
0x00082584 mov.w sb, 1 | sb = 1;
0x00082588 add r1, pc | r1 = 0x105044;
0x0008258a mov r6, r5 | r6 = r5;
0x0008258c movs r2, 0x5b | r2 = 0x5b;
0x0008258e mov r4, r1 | r4 = r1;
0x00082590 mov r5, r3 | r5 = r3;
| do {
0x00082592 ldr r3, [r8, 4]! | r3 = *((r8 += 4));
0x00082596 add.w sb, sb, 1 | sb++;
0x0008259a mov r1, r4 | r1 = r4;
0x0008259c mov r0, r5 | r0 = r5;
0x0008259e blx 0x8614 | fcn_00008614 ();
0x000825a2 cmp fp, sb |
0x000825a4 mov.w r2, 0x2c | r2 = 0x2c;
0x000825a8 bhs 0x82592 |
| } while (fp >= sb);
0x000825aa ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x000825ac mov r3, r5 | r3 = r5;
0x000825ae mov r5, r6 | r5 = r6;
0x000825b0 mov r6, r7 | r6 = r7;
0x000825b2 mov r7, r3 | r7 = r3;
| label_92:
0x000825b4 ldr.w r1, [pc, 0x504] |
0x000825b8 add r1, pc | r1 = 0x105078;
| label_41:
0x000825ba movs r2, 1 | r2 = 1;
0x000825bc mov r0, r7 | r0 = r7;
0x000825be blx 0x7e80 | fcn_00007e80 ();
0x000825c2 ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000825c4 and r3, r3, 7 | r3 &= 7;
| if (r3 != 0) {
| label_31:
0x000825c8 cbz r3, 0x825d0 |
0x000825ca ldr r0, [sp, 0x24] | r0 = var_24h;
0x000825cc bl 0x101ec | fcn_000101ec (r0);
| }
0x000825d0 ldr.w r8, [r7, 4] | r8 = *((r7 + 4));
0x000825d4 cmp.w r8, 0 |
| if (r8 != 0) {
0x000825d8 beq 0x825ee |
0x000825da ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000825dc movs r2, 0 | r2 = 0;
0x000825de strb.w r2, [r8, r3] | *((r8 + r3)) = r2;
0x000825e2 ldr r3, [r7, 0xc] | r3 = *((r7 + 0xc));
0x000825e4 cmp r3, 0 |
| if (r3 != 0) {
0x000825e6 bne.w 0x8276e | goto label_93;
| }
| label_22:
0x000825ea ldr.w r8, [r7, 4] | r8 = *((r7 + 4));
| }
| label_23:
0x000825ee ldrb.w r3, [r6, 0x96] | r3 = *((r6 + 0x96));
0x000825f2 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000825f4 and r3, r3, 0xc | r3 &= 0xc;
0x000825f8 ldrh r2, [r2, 0x30] | r2 = *((r2 + 0x30));
0x000825fa cmp r3, 8 |
0x000825fc and r1, r2, 0x2400 | r1 = r2 & 0x2400;
| if (r3 == 8) {
0x00082600 beq.w 0x827e8 | goto label_94;
| }
0x00082604 asrs r3, r4, 0x1f | r3 = r4 >> 0x1f;
0x00082606 cmp r1, 0 |
| if (r1 != 0) {
0x00082608 bne.w 0x827a0 | goto label_95;
| }
0x0008260c ldr r2, [sp, 0x18] | r2 = var_18h;
0x0008260e strd r4, r3, [r2, 0x28] | __asm ("strd r4, r3, [r2, 0x28]");
0x00082610 orrs r2, r1 | r2 |= r1;
0x00082612 movs r3, 4 | r3 = 4;
0x00082614 strh r3, [r2, 0x30] | *((r2 + 0x30)) = r3;
| label_24:
0x00082616 ldrb r3, [r5] | r3 = *(r5);
0x00082618 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0008261a ldr r4, [sp, 0x18] | r4 = var_18h;
0x0008261c add.w r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x00082620 movs r2, 0 | r2 = 0;
0x00082622 add.w r0, r4, 0x50 | r0 = r4 + 0x50;
0x00082626 ldr.w r1, [r3, 0xe38] | r1 = *((r3 + 0xe38));
0x0008262a movs r3, 1 | r3 = 1;
0x0008262c strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00082630 mov.w r2, -1 | r2 = -1;
0x00082634 mov.w r3, -1 | r3 = -1;
0x00082638 bl 0x26e0c | fcn_00026e0c (r0, r1, r2, r3, r4, r5);
0x0008263c ldrh.w r1, [r4, 0x80] | r1 = *((r4 + 0x80));
0x00082640 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00082642 and r1, r1, 0x2400 | r1 &= 0x2400;
0x00082646 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00082648 cmp r1, 0 |
| if (r1 != 0) {
0x0008264a bne.w 0x8289a | goto label_96;
| }
0x0008264e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082650 str r3, [r1, 0x7c] | *((r1 + 0x7c)) = r3;
0x00082652 movs r3, 4 | r3 = 4;
0x00082654 str r2, [r1, 0x78] | *((r1 + 0x78)) = r2;
0x00082656 strh.w r3, [r1, 0x80] | *((r1 + 0x80)) = r3;
| label_30:
0x0008265a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0008265c ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008265e ldrh.w r1, [r3, 0xa8] | r1 = *((r3 + 0xa8));
0x00082662 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00082664 and r1, r1, 0x2400 | r1 &= 0x2400;
0x00082668 cmp r1, 0 |
| if (r1 != 0) {
0x0008266a bne.w 0x8288e | goto label_97;
| }
0x0008266e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082670 str.w r3, [r1, 0xa4] | __asm ("str.w r3, [r1, 0xa4]");
0x00082674 movs r3, 4 | r3 = 4;
0x00082676 str.w r2, [r1, 0xa0] | __asm ("str.w r2, [r1, 0xa0]");
0x0008267a strh.w r3, [r1, 0xa8] | *((r1 + 0xa8)) = r3;
| label_29:
0x0008267e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00082680 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00082682 ldrh.w r1, [r3, 0xd0] | r1 = *((r3 + 0xd0));
0x00082686 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00082688 and r1, r1, 0x2400 | r1 &= 0x2400;
0x0008268c cmp r1, 0 |
| if (r1 != 0) {
0x0008268e bne.w 0x82882 | goto label_98;
| }
0x00082692 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082694 str.w r3, [r1, 0xcc] | __asm ("str.w r3, [r1, 0xcc]");
0x00082698 movs r3, 4 | r3 = 4;
0x0008269a str.w r2, [r1, 0xc8] | __asm ("str.w r2, [r1, 0xc8]");
0x0008269e strh.w r3, [r1, 0xd0] | *((r1 + 0xd0)) = r3;
| label_28:
0x000826a2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000826a4 ldrh r2, [r5, 2] | r2 = *((r5 + 2));
0x000826a6 ldrh.w r3, [r3, 0x120] | r3 = *((r3 + 0x120));
0x000826aa ands r3, r3, 0x2400 | r3 &= 0x2400;
| if (r3 != r3) {
0x000826ae bne.w 0x82874 | goto label_99;
| }
0x000826b2 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000826b4 str.w r3, [r1, 0x11c] | __asm ("str.w r3, aav.0x000000ff");
0x000826b8 movs r3, 4 | r3 = 4;
0x000826ba str.w r2, [r1, 0x118] | __asm ("str.w r2, aav.0x000000ff");
0x000826be strh.w r3, [r1, 0x120] | *((r1 + 0x120)) = r3;
| label_27:
0x000826c2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000826c4 ldrh.w r3, [r3, 0x148] | r3 = *((r3 + 0x148));
0x000826c8 and r3, r3, 0x2400 | r3 &= 0x2400;
0x000826cc cmp r3, 0 |
| if (r3 != 0) {
0x000826ce bne.w 0x82868 | void (*0x82868)() ();
| }
| label_26:
0x000826fa strh.w r3, [r6, 0x90] | *((r6 + 0x90)) = r3;
0x000826fe ldr r3, [sp, 0x28] | r3 = var_28h;
0x00082700 str r3, [r6, 0x78] | *((r6 + 0x78)) = r3;
0x00082702 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00082704 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x00082708 cmp r3, 0 |
| if (r3 == 0) {
0x0008270a beq.w 0x8285e | goto label_100;
| }
0x0008270e movs r3, 7 | r3 = 7;
0x00082710 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x00082712 b 0x82120 | goto label_10;
| label_89:
0x00082714 ldr r0, [r6] | r0 = *(r6);
0x00082716 mov r3, r7 | r3 = r7;
0x00082718 movs r5, 0x65 | r5 = 0x65;
0x0008271a str r7, [r6, 0x28] | *((r6 + 0x28)) = r7;
0x0008271c cmp r7, 0 |
| if (r7 == 0) {
0x0008271e beq.w 0x82176 | goto label_12;
| }
0x00082720 add r5, sp, 0xa8 | r5 = sp + 0xa8;
0x00082722 movs r5, 1 | r5 = 1;
0x00082724 mov r1, r7 | r1 = r7;
0x00082726 str.w r5, [sl, 0x40] | __asm ("str.w r5, [sl, 0x40]");
0x0008272a bl 0x166c8 | r0 = fcn_000166c8 (r0, r1);
0x0008272e cmp r0, 7 |
| if (r0 == 7) {
0x00082730 beq.w 0x82368 | goto label_20;
| }
0x00082734 ldr.w r4, [sl, 0x44] | r4 = *((sl + 0x44));
0x00082738 and r4, r4, 1 | r4 &= 1;
0x0008273c b 0x82206 | goto label_7;
| label_87:
0x0008273e cmp r2, 0 |
| if (r2 == 0) {
0x00082740 beq.w 0x824c8 | goto label_21;
| }
0x00082744 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
| label_90:
0x00082746 subs r2, 1 | r2--;
0x00082748 str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x0008274a cmp r2, 0 |
| if (r2 != 0) {
0x0008274c bne.w 0x824c8 | goto label_21;
| }
0x00082750 mov r0, r4 | r0 = r4;
0x00082752 bl 0x95d0 | fcn_000095d0 (r0);
0x00082756 ldr.w r2, [sl, 0x14] | r2 = *((sl + 0x14));
0x0008275a b 0x824cc | goto label_17;
| label_62:
0x0008275c ldr r0, [sp, 0x24] | r0 = var_24h;
0x0008275e bl 0x101ec | fcn_000101ec (r0);
0x00082762 b 0x82120 | goto label_10;
| label_83:
0x00082764 mov r0, r6 | r0 = r6;
0x00082766 bl 0x2c834 | r0 = fcn_0002c834 (r0, r1);
0x0008276a mov r5, r0 | r5 = r0;
0x0008276c b 0x8218c | goto label_6;
| label_93:
0x0008276e ldrb r3, [r7, 0x15] | r3 = *((r7 + 0x15));
0x00082770 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
| if (r1 < r3) {
0x00082772 bmi.w 0x825ea | goto label_22;
| }
0x00082776 mov r0, r7 | r0 = r7;
0x00082778 bl 0x1ba9c | r0 = fcn_0001ba9c (r0);
0x0008277c mov r8, r0 | r8 = r0;
0x0008277e b 0x825ee | goto label_23;
| label_75:
0x00082780 mov r1, r4 | r1 = r4;
0x00082782 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x00082784 mov r0, r4 | r0 = r4;
0x00082786 bl 0x1b9dc | r0 = fcn_0001b9dc (r0, r1);
0x0008278a mov r3, r0 | r3 = r0;
0x0008278c mov r1, r7 | r1 = r7;
0x0008278e mov r0, r4 | r0 = r4;
0x00082790 str.w r3, [sb, 0x7c] | __asm ("str.w r3, [sb, 0x7c]");
0x00082794 bl 0x166c8 | r0 = fcn_000166c8 (r0, r1);
0x00082798 mov r4, r0 | r4 = r0;
0x0008279a str.w r0, [sb, 0x28] | __asm ("str.w r0, [sb, 0x28]");
0x0008279e b 0x82206 | goto label_7;
| label_95:
0x000827a0 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000827a2 mov r2, r4 | r2 = r4;
0x000827a4 bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x000827a8 b 0x82616 | goto label_24;
| label_56:
0x000827aa ldr r1, [pc, 0x318] |
0x000827ac movs r0, 0x15 | r0 = 0x15;
0x000827ae add r1, pc | r1 = 0x105278;
0x000827b0 blx 0x8474 | fcn_00008474 ();
| do {
0x000827b4 blx 0x7f8c | fcn_00007f8c ();
0x000827b8 ldr r2, [pc, 0x30c] |
0x000827ba add.w r4, r0, 0x14 | r4 = r0 + 0x14;
0x000827be ldr r1, [pc, 0x30c] |
0x000827c0 movw r3, 0x4bb1 |
0x000827c4 str r4, [sp] | *(sp) = r4;
0x000827c6 movt r3, 1 | r3 = 0x14bb1;
0x000827ca add r2, pc | r2 = 0x105296;
0x000827cc movs r0, 0x15 | r0 = 0x15;
0x000827ce add r1, pc | r1 = 0x1052a0;
0x000827d0 movs r4, 0x15 | r4 = 0x15;
0x000827d2 blx 0x8474 | fcn_00008474 ();
0x000827d6 b 0x8220e | goto label_25;
| label_57:
0x000827d8 ldr r1, [pc, 0x2f4] |
0x000827da movs r0, 0x15 | r0 = 0x15;
0x000827dc add r1, pc | r1 = 0x1052b0;
0x000827de blx 0x8474 | fcn_00008474 ();
0x000827e2 b 0x827b4 |
| } while (1);
| label_73:
0x000827e4 mov r4, r5 | r4 = r5;
0x000827e6 b 0x82206 | goto label_7;
| label_94:
0x000827e8 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x000827ea asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000827ec cmp r1, 0 |
| if (r1 != 0) {
0x000827ee bne.w 0x82a16 | goto label_101;
| }
0x000827f2 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000827f4 str r3, [r1, 0x2c] | *((r1 + 0x2c)) = r3;
0x000827f6 movs r3, 4 | r3 = 4;
0x000827f8 str r2, [r1, 0x28] | *((r1 + 0x28)) = r2;
0x000827fa strh r3, [r1, 0x30] | *((r1 + 0x30)) = r3;
| label_38:
0x000827fc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000827fe ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00082800 ldrh.w r1, [r3, 0x58] | r1 = *((r3 + 0x58));
0x00082804 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00082806 and r1, r1, 0x2400 | r1 &= 0x2400;
0x0008280a cmp r1, 0 |
| if (r1 != 0) {
0x0008280c bne.w 0x82a2a | goto label_102;
| }
0x00082810 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082812 str r3, [r1, 0x54] | *((r1 + 0x54)) = r3;
0x00082814 movs r3, 4 | r3 = 4;
0x00082816 str r2, [r1, 0x50] | *((r1 + 0x50)) = r2;
0x00082818 strh.w r3, [r1, 0x58] | *((r1 + 0x58)) = r3;
| label_40:
0x0008281c ldr r3, [sp, 0x18] | r3 = var_18h;
0x0008281e ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00082820 ldrh.w r1, [r3, 0x80] | r1 = *((r3 + 0x80));
0x00082824 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00082826 and r1, r1, 0x2400 | r1 &= 0x2400;
0x0008282a cmp r1, 0 |
| if (r1 != 0) {
0x0008282c bne.w 0x82a1e | goto label_103;
| }
0x00082830 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082832 str r3, [r1, 0x7c] | *((r1 + 0x7c)) = r3;
0x00082834 movs r3, 4 | r3 = 4;
0x00082836 str r2, [r1, 0x78] | *((r1 + 0x78)) = r2;
0x00082838 strh.w r3, [r1, 0x80] | *((r1 + 0x80)) = r3;
| label_39:
0x0008283c ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008283e mov r1, r8 | r1 = r8;
0x00082840 ldr r3, [pc, 0x27c] | r3 = *(0x82ac0);
0x00082842 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00082844 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00082846 mov.w r2, -1 | r2 = -1;
0x0008284a adds r0, 0xa0 | r0 += 0xa0;
0x0008284c str r3, [sp, 4] | var_4h = r3;
0x0008284e movs r3, 1 | r3 = 1;
0x00082850 str r3, [sp] | *(sp) = r3;
0x00082852 mov.w r3, -1 | r3 = -1;
0x00082856 bl 0x26e0c | fcn_00026e0c (r0, r1, r2, r3, r4, r5);
0x0008285a movs r3, 4 | r3 = 4;
0x0008285c b 0x826fa | goto label_26;
| label_100:
0x0008285e ldr r0, [r6] | r0 = *(r6);
0x00082860 mov r7, r3 | r7 = r3;
0x00082862 movs r5, 0x64 | r5 = 0x64;
0x00082864 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x00082866 b 0x82176 | goto label_12;
| label_99:
0x00082874 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082876 movs r3, 0 | r3 = 0;
0x00082878 add.w r0, r1, 0x118 | r0 = r1 + 0x118;
0x0008287c bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x00082880 b 0x826c2 | goto label_27;
| label_98:
0x00082882 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082884 add.w r0, r1, 0xc8 | r0 = r1 + 0xc8;
0x00082888 bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x0008288c b 0x826a2 | goto label_28;
| label_97:
0x0008288e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082890 add.w r0, r1, 0xa0 | r0 = r1 + 0xa0;
0x00082894 bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x00082898 b 0x8267e | goto label_29;
| label_96:
0x0008289a ldr r1, [sp, 0x18] | r1 = var_18h;
0x0008289c add.w r0, r1, 0x78 | r0 = r1 + 0x78;
0x000828a0 bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x000828a4 b 0x8265a | goto label_30;
| label_91:
0x000828a6 ldr.w r8, [r5, 0x10] | r8 = *((r5 + 0x10));
| label_32:
0x000828aa cmp.w r8, 0 |
| if (r8 == 0) {
0x000828ae beq.w 0x825ee | goto label_23;
| }
| label_36:
0x000828b2 mov r1, r8 | r1 = r8;
0x000828b4 mov r0, r7 | r0 = r7;
0x000828b6 blx 0x85c0 | fcn_000085c0 ();
0x000828ba ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000828bc and r3, r3, 7 | r3 &= 7;
0x000828c0 b 0x825c8 | goto label_31;
0x000828c2 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000828c4 ldr r1, [pc, 0x20c] |
0x000828c6 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x000828c8 add r1, pc | r1 = 0x1053a0;
| label_35:
0x000828ca ldrsb.w r3, [r2] | r3 = *(r2);
0x000828ce mov r0, r7 | r0 = r7;
0x000828d0 ldr r2, [r2, 0x20] | r2 = *((r2 + 0x20));
0x000828d2 blx 0x8614 | fcn_00008614 ();
0x000828d6 ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000828d8 and r3, r3, 7 | r3 &= 7;
0x000828dc b 0x825c8 | goto label_31;
0x000828de ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000828e0 mov r0, r7 | r0 = r7;
0x000828e2 ldr r1, [pc, 0x1f4] |
0x000828e4 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x000828e8 add r1, pc | r1 = 0x1053c6;
0x000828ea blx 0x8614 | fcn_00008614 ();
0x000828ee ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000828f0 and r3, r3, 7 | r3 &= 7;
0x000828f4 b 0x825c8 | goto label_31;
0x000828f6 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000828f8 mov r0, r7 | r0 = r7;
0x000828fa ldr r1, [pc, 0x1e0] |
0x000828fc ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00082900 add r1, pc | r1 = 0x1053e2;
0x00082902 blx 0x8614 | fcn_00008614 ();
0x00082906 ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00082908 and r3, r3, 7 | r3 &= 7;
0x0008290c b 0x825c8 | goto label_31;
0x0008290e ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00082910 mov r0, r7 | r0 = r7;
0x00082912 ldr r1, [pc, 0x1cc] |
0x00082914 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00082916 add r1, pc | r1 = 0x1053fc;
0x00082918 blx 0x8614 | fcn_00008614 ();
0x0008291c ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x0008291e and r3, r3, 7 | r3 &= 7;
0x00082922 b 0x825c8 | goto label_31;
0x00082924 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x00082926 ldrh r3, [r2, 8] | r3 = *((r2 + 8));
0x00082928 lsls r0, r3, 0x1e | r0 = r3 << 0x1e;
| if (r0 >= r3) {
0x0008292a bpl.w 0x82a4c | goto label_104;
| }
0x0008292e ldr.w r8, [r2, 0x10] | r8 = *((r2 + 0x10));
0x00082932 b 0x828aa | goto label_32;
0x00082934 ldr.w r8, [r5, 0x10] | r8 = *((r5 + 0x10));
0x00082938 mov r0, r7 | r0 = r7;
0x0008293a ldr r1, [pc, 0x1a8] |
0x0008293c ldrh.w r2, [r8, 6] | r2 = *((r8 + 6));
0x00082940 add r1, pc | r1 = 0x10542a;
0x00082942 blx 0x8614 | fcn_00008614 ();
0x00082946 ldrh.w r3, [r8, 6] | r3 = *((r8 + 6));
0x0008294a cmp r3, 0 |
| if (r3 == 0) {
0x0008294c beq 0x82a46 | goto label_105;
| }
0x0008294e ldr r3, [pc, 0x198] |
0x00082950 add.w fp, r8, 0x10 |
0x00082954 mov.w sb, 0 | sb = 0;
0x00082958 str r4, [sp, 0x44] | var_44h = r4;
0x0008295a add r3, pc | r3 = 0x105448;
0x0008295c str r3, [sp, 0x2c] | var_2ch = r3;
0x0008295e ldr r3, [pc, 0x18c] |
0x00082960 add r3, pc | r3 = 0x105452;
0x00082962 str r3, [sp, 0x30] | var_30h = r3;
0x00082964 b 0x8298c |
| while (r2 >= r1) {
0x00082966 ldr r2, [pc, 0x188] |
0x00082968 lsls r3, r1, 0x1e | r3 = r1 << 0x1e;
0x0008296a add r2, pc | r2 = 0x105460;
| if (r3 < r1) {
0x0008296c bmi 0x829ba | goto label_106;
| }
| label_33:
0x0008296e ldr r1, [pc, 0x184] |
0x00082970 add r1, pc | r1 = 0x10546a;
| label_34:
0x00082972 mov r3, r1 | r3 = r1;
0x00082974 ldr r1, [pc, 0x180] |
0x00082976 mov r0, r7 | r0 = r7;
0x00082978 str r4, [sp] | *(sp) = r4;
0x0008297a add.w sb, sb, 1 | sb++;
0x0008297e add r1, pc | r1 = 0x10547a;
0x00082980 blx 0x8614 | fcn_00008614 ();
0x00082984 ldrh.w r3, [r8, 6] | r3 = *((r8 + 6));
0x00082988 cmp sb, r3 |
| if (sb >= r3) {
0x0008298a bge 0x82a44 | goto label_107;
| }
0x0008298c ldr r3, [fp, 4]! | r3 = *(arg_4h);
0x00082990 cmp r3, 0 |
| if (r3 == 0) {
0x00082992 beq 0x82a12 | goto label_108;
| }
0x00082994 ldr r4, [r3] | r4 = *(r3);
0x00082996 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00082998 mov r0, r4 | r0 = r4;
0x0008299a blx 0x7ca0 | fcn_00007ca0 ();
0x0008299e ldr r3, [sp, 0x30] | r3 = var_30h;
0x000829a0 cmp r0, 0 |
0x000829a2 it eq |
| if (r0 != 0) {
0x000829a4 moveq r4, r3 | r4 = r3;
| }
| label_37:
0x000829a6 ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x000829aa ldrb.w r1, [r2, sb] | r1 = *((r2 + sb));
0x000829ae lsls r2, r1, 0x1f | r2 = r1 << 0x1f;
0x000829b0 bpl 0x82966 |
| }
0x000829b2 ldr r2, [pc, 0x148] |
0x000829b4 lsls r3, r1, 0x1e | r3 = r1 << 0x1e;
0x000829b6 add r2, pc | r2 = 0x1054b8;
| if (r3 >= r1) {
0x000829b8 bpl 0x8296e | goto label_33;
| }
| label_106:
0x000829ba ldr r1, [pc, 0x144] |
0x000829bc add r1, pc | r1 = 0x1054c2;
0x000829be b 0x82972 | goto label_34;
0x000829c0 ldr r1, [pc, 0x140] |
0x000829c2 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x000829c4 add r1, pc | r1 = 0x1054cc;
0x000829c6 b 0x828ca | goto label_35;
0x000829c8 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000829ca ldr.w r8, [r3] | r8 = *(r3);
0x000829ce b 0x828aa | goto label_32;
0x000829d0 ldr r1, [pc, 0x134] |
0x000829d2 mov r0, r7 | r0 = r7;
0x000829d4 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x000829d6 add r1, pc | r1 = 0x1054e2;
0x000829d8 blx 0x8614 | fcn_00008614 ();
0x000829dc ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000829de and r3, r3, 7 | r3 &= 7;
0x000829e2 b 0x825c8 | goto label_31;
0x000829e4 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x000829e6 mov r0, r7 | r0 = r7;
0x000829e8 ldr r3, [pc, 0x120] |
0x000829ea ldr r1, [pc, 0x124] |
0x000829ec ldrb.w ip, [r2, 4] | ip = *((r2 + 4));
0x000829f0 add r3, pc | r3 = 0x105500;
0x000829f2 ldr r2, [r2] | r2 = *(r2);
0x000829f4 add r1, pc | r1 = 0x10550a;
0x000829f6 add.w r3, r3, ip, lsl 2 | r3 += (ip << 2);
0x000829fa ldr.w r3, [r3, 0xe28] | r3 = *((r3 + 0xe28));
0x000829fe blx 0x8614 | fcn_00008614 ();
0x00082a02 ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00082a04 and r3, r3, 7 | r3 &= 7;
0x00082a08 b 0x825c8 | goto label_31;
0x00082a0a ldr.w r8, [pc, 0x108] | r8 = *(0x00082b14);
0x00082a0e add r8, pc | r8 += pc;
0x00082a10 b 0x828b2 | goto label_36;
| label_108:
0x00082a12 ldr r4, [sp, 0x40] | r4 = var_40h;
0x00082a14 b 0x829a6 | goto label_37;
| label_101:
0x00082a16 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00082a18 bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x00082a1c b 0x827fc | goto label_38;
| label_103:
0x00082a1e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082a20 add.w r0, r1, 0x78 | r0 = r1 + 0x78;
0x00082a24 bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x00082a28 b 0x8283c | goto label_39;
| label_102:
0x00082a2a ldr r1, [sp, 0x18] | r1 = var_18h;
0x00082a2c add.w r0, r1, 0x50 | r0 = r1 + 0x50;
0x00082a30 bl 0x15b68 | fcn_00015b68 (r0, r1, r2, r3, r4, r5, r6);
0x00082a34 b 0x8281c | goto label_40;
| label_84:
0x00082a36 movs r3, 0 | r3 = 0;
0x00082a38 ldr r0, [r6] | r0 = *(r6);
0x00082a3a mov r7, r3 | r7 = r3;
0x00082a3c movs r5, 0x65 | r5 = 0x65;
0x00082a3e str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x00082a40 b.w 0x82176 | goto label_12;
| label_107:
0x00082a44 ldr r4, [sp, 0x44] | r4 = var_44h;
| label_105:
0x00082a46 ldr r1, [pc, 0xd0] |
0x00082a48 add r1, pc | r1 = 0x105566;
0x00082a4a b 0x825ba | goto label_41;
| label_104:
0x00082a4c tst.w r3, 0x24 |
| if ((r3 & 0x24) == 0) {
0x00082a50 bne 0x82a62 |
0x00082a52 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
| if (r1 < r3) {
0x00082a54 bmi 0x82a84 | goto label_109;
| }
0x00082a56 lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
| if (r0 < r3) {
0x00082a58 bmi 0x82a7c | goto label_110;
| }
0x00082a5a ldr.w r8, [pc, 0xc0] | r8 = *(0x00082b1c);
0x00082a5e add r8, pc | r8 += pc;
0x00082a60 b 0x828b2 | goto label_36;
| }
0x00082a62 ldr r1, [pc, 0xbc] |
0x00082a64 mov r0, r7 | r0 = r7;
0x00082a66 ldrd r2, r3, [r2] | __asm ("ldrd r2, r3, [r2]");
0x00082a6a add r1, pc | r1 = 0x105590;
0x00082a6c blx 0x8614 | fcn_00008614 ();
0x00082a70 ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00082a72 and r3, r3, 7 | r3 &= 7;
0x00082a76 b 0x825c8 | goto label_31;
| label_76:
0x00082a78 blx 0x7e8c | fcn_00007e8c ();
| label_110:
0x00082a7c ldr.w r8, [pc, 0xa4] |
0x00082a80 add r8, pc | r8 = 0x1055a8;
0x00082a82 b 0x828b2 | goto label_36;
| label_109:
0x00082a84 ldr r1, [pc, 0xa0] |
0x00082a86 mov r0, r7 | r0 = r7;
0x00082a88 ldrd r2, r3, [r2] | __asm ("ldrd r2, r3, [r2]");
0x00082a8c add r1, pc | r1 = 0x1055b8;
0x00082a8e blx 0x8614 | fcn_00008614 ();
0x00082a92 ldrb r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00082a94 and r3, r3, 7 | r3 &= 7;
0x00082a98 b 0x825c8 | goto label_31;
| label_42:
0x0008dfe4 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0008dfe6 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0008dfe8 bl 0x18a68 | fcn_00018a68 (r0, r1);
0x0008dfec ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 == 0) {
0x0008dfee cbz r3, 0x8e004 | void (*0x8e004)() ();
| }
| label_50:
0x0008eae4 ldr r3, [sp, 0x68] | r3 = var_68h;
0x0008eae6 cmp r3, 0 |
| if (r3 == 0) {
0x0008eae8 beq.w 0x8f504 | goto label_111;
| }
0x0008eaec ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008eaee cmp r3, 0 |
| if (r3 != 0) {
0x0008eaf0 bne.w 0x8f4f0 | goto label_112;
| }
| label_44:
0x0008eaf4 ldr r1, [sp, 0x7c] | r1 = var_7ch;
| if (r1 != 0) {
0x0008eaf6 cbz r1, 0x8eb1c |
0x0008eaf8 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x0008eafa mov r0, r4 | r0 = r4;
0x0008eafc str r6, [sp, 0x10] | var_10h = r6;
0x0008eafe str r3, [sp, 0xc] | var_ch = r3;
0x0008eb00 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008eb02 ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008eb04 movs r0, 0x2a | r0 = 0x2a;
0x0008eb06 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x0008eb0a subs r3, 1 | r3--;
0x0008eb0c subs r3, r3, r2 | r3 -= r2;
0x0008eb0e movs r2, 0x7e | r2 = 0x7e;
0x0008eb10 str r3, [sp, 8] | var_8h = r3;
0x0008eb12 movs r3, 2 | r3 = 2;
0x0008eb14 str r3, [sp] | *(sp) = r3;
0x0008eb16 movs r3, 0 | r3 = 0;
0x0008eb18 bl 0x8c468 | fcn_0008c468 (r0, r1, r2, r3, r4, r5, r6);
| }
0x0008eb1c ldr.w r0, [sl, 0xc] | r0 = *((sl + 0xc));
0x0008eb20 ldrd r3, r2, [r0, 0x38] | __asm ("ldrd r3, r2, [r0, 0x38]");
0x0008eb24 cmn r2, r3 |
| if (r2 < r3) {
0x0008eb26 bmi.w 0x8ecb0 | goto label_113;
| }
0x0008eb2a ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0008eb2c lsl.w r3, fp, 2 | r3 = fp << 2;
0x0008eb30 ldr.w r1, [sl, 0x6c] | r1 = *((sl + 0x6c));
0x0008eb34 rsbs r3, r3, 0 | r3 -= ;
0x0008eb36 str r1, [r2, r3] | *((r2 + r3)) = r1;
| label_43:
0x0008eb38 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008eb3a cmp r3, 0 |
| if (r3 != 0) {
0x0008eb3c bne.w 0x8f83a | goto label_114;
| }
0x0008eb40 ldr r3, [sp, 0x30] | r3 = var_30h;
| if (r3 != 0) {
0x0008eb42 cbz r3, 0x8eb74 |
0x0008eb44 ldr r1, [sp, 0x58] | r1 = var_58h;
0x0008eb46 mov r0, sl | r0 = sl;
0x0008eb48 bl 0x2b5b4 | fcn_0002b5b4 (r0, r1, r2);
0x0008eb4c ldr.w r3, [sl] | r3 = *(sl);
0x0008eb50 cmp.w r8, 0 |
0x0008eb54 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008eb58 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008eb5c it lt |
| if (r8 >= 0) {
0x0008eb5e addlt r8, r2, -1 | r8 = r2 + -1;
| }
0x0008eb62 cmp r3, 0 |
| if (r3 != 0) {
0x0008eb64 bne.w 0x8f87a | goto label_115;
| }
0x0008eb68 ldr.w r3, [sl, 0x68] | r3 = *((sl + 0x68));
0x0008eb6c movs r1, 0x14 | r1 = 0x14;
0x0008eb6e mla r3, r1, r8, r3 | __asm ("mla r3, r1, r8, r3");
| label_53:
0x0008eb72 str r2, [r3, 8] | *((r3 + 8)) = r2;
| }
| label_51:
0x0008eb74 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
| if (r3 == 0) {
0x0008eb76 cbnz r3, 0x8eb80 |
0x0008eb78 ldr r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x0008eb7a cmp r3, 0 |
| if (r3 == 0) {
0x0008eb7c beq.w 0x8f868 | goto label_116;
| }
| }
| label_52:
0x0008eb80 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0008eb82 cmp r3, 0 |
| if (r3 == 0) {
0x0008eb84 beq.w 0x8dfe4 | goto label_42;
| }
0x0008eb88 mov r2, r3 | r2 = r3;
0x0008eb8a movs r3, 0 | r3 = 0;
0x0008eb8c movs r1, 0x50 | r1 = 0x50;
0x0008eb8e str r3, [sp] | *(sp) = r3;
0x0008eb90 mov r0, sl | r0 = sl;
0x0008eb92 movs r3, 1 | r3 = 1;
0x0008eb94 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008eb98 movs r1, 1 | r1 = 1;
0x0008eb9a mov r0, sl | r0 = sl;
0x0008eb9c bl 0x1ad08 | fcn_0001ad08 (r0, r1);
0x0008eba0 ldr.w r3, [sl] | r3 = *(sl);
0x0008eba4 ldrb.w r3, [r3, 0x53] | r3 = *((r3 + 0x53));
0x0008eba8 cmp r3, 0 |
| if (r3 != 0) {
0x0008ebaa bne.w 0x8dfe4 | goto label_42;
| }
| label_113:
0x0008ecb0 rsb.w r2, fp, 0 | r2 = fp - ;
0x0008ecb4 mov r1, sl | r1 = sl;
0x0008ecb6 bl 0x1c0b8 | fcn_0001c0b8 (r0, r1, r2);
0x0008ecba b 0x8eb38 | goto label_43;
| label_112:
0x0008f4f0 movs r3, 0 | r3 = 0;
0x0008f4f2 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x0008f4f4 str r3, [sp] | *(sp) = r3;
0x0008f4f6 movs r1, 0x53 | r1 = 0x53;
0x0008f4f8 movs r3, 1 | r3 = 1;
0x0008f4fa mov r0, sl | r0 = sl;
0x0008f4fc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f500 b.w 0x8eaf4 | goto label_44;
| label_111:
0x0008f504 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008f508 cmp r3, 0 |
| if (r3 != 0) {
0x0008f50a bne.w 0x8f71c | goto label_117;
| }
0x0008f50c strh r7, [r0, 8] | *((r0 + 8)) = r7;
| label_49:
0x0008f50e ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008f510 cmp r3, 0 |
| if (r3 < 0) {
0x0008f512 blt.w 0x8f632 | goto label_118;
| }
0x0008f516 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0008f518 cmp r3, 0 |
| if (r3 != 0) {
0x0008f51a bne.w 0x8f620 | goto label_119;
| }
0x0008f51e ldr r3, [sp, 0x30] | r3 = var_30h;
0x0008f520 cmp r3, 0 |
| if (r3 == 0) {
0x0008f522 beq.w 0x8f64c | goto label_120;
| }
| label_46:
0x0008f526 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008f52a cmp r3, 0 |
| if (r3 != 0) {
0x0008f52c bne 0x8f60a | goto label_121;
| }
0x0008f52e ldr r7, [sp, 0x54] | r7 = var_54h;
0x0008f530 movs r1, 0x33 | r1 = 0x33;
0x0008f532 str r3, [sp] | *(sp) = r3;
0x0008f534 mov r0, sl | r0 = sl;
0x0008f536 mov r2, r7 | r2 = r7;
0x0008f538 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f53c ldr r1, [sp, 0x90] | r1 = var_90h;
0x0008f53e mov r5, r0 | r5 = r0;
0x0008f540 ldr r2, [sp, 0xa4] | r2 = var_a4h;
0x0008f542 mov r3, r7 | r3 = r7;
0x0008f544 mov r0, sl | r0 = sl;
0x0008f546 str r1, [sp] | *(sp) = r1;
0x0008f548 movs r1, 0x7b | r1 = 0x7b;
0x0008f54a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f54e ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008f552 mov r1, r5 | r1 = r5;
0x0008f554 mov r0, sl | r0 = sl;
0x0008f556 bl 0x9894 | fcn_00009894 (r0, r1, r2);
| label_45:
0x0008f55a movs r3, 0 | r3 = 0;
0x0008f55c ldr r2, [sp, 0x54] | r2 = var_54h;
0x0008f55e movs r1, 0xf | r1 = 0xf;
0x0008f560 mov r0, sl | r0 = sl;
0x0008f562 str r3, [sp] | *(sp) = r3;
0x0008f564 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| label_47:
0x0008f568 ldr r3, [sp, 0x90] | r3 = var_90h;
0x0008f56a cmp r3, 0 |
| if (r3 > 0) {
0x0008f56c ble 0x8f57e |
0x0008f56e mov r2, r3 | r2 = r3;
0x0008f570 movs r3, 0 | r3 = 0;
0x0008f572 str r3, [sp] | *(sp) = r3;
0x0008f574 movs r1, 0x9b | r1 = 0x9b;
0x0008f576 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0008f578 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008f57a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
| }
0x0008f57e ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008f582 tst.w r3, 0x60 |
| if ((r3 & 0x60) != 0) {
0x0008f586 bne.w 0x8f6e0 | goto label_122;
| }
| label_48:
0x0008f58a ldr.w r5, [sb, 0x38] | r5 = *((sb + 0x38));
0x0008f58e cmp r5, 0 |
| if (r5 == 0) {
0x0008f590 beq 0x8f66e | goto label_123;
| }
0x0008f592 ldr.w r5, [sb, 0x40] | r5 = *((sb + 0x40));
| if (r5 != 0) {
0x0008f596 cbnz r5, 0x8f59e | void (*0x8f59e)() ();
| }
| do {
0x0008f5fe ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008f602 cmp r3, 0 |
| if (r3 == 0) {
0x0008f604 beq 0x8f706 | goto label_124;
| }
0x0008f606 ldr r3, [r4, 8] | r3 = *((r4 + 8));
| if (r3 != 0) {
0x0008f608 cbnz r3, 0x8f664 | goto label_125;
| }
| label_121:
0x0008f60a ldr.w r3, [sl, 0x6c] | r3 = *((sl + 0x6c));
0x0008f60e movs r2, 0 | r2 = 0;
0x0008f610 str r2, [sp] | *(sp) = r2;
0x0008f612 movs r1, 0x32 | r1 = 0x32;
0x0008f614 ldr r2, [sp, 0x54] | r2 = var_54h;
0x0008f616 mov r0, sl | r0 = sl;
0x0008f618 adds r3, 2 | r3 += 2;
0x0008f61a bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f61e b 0x8f55a | goto label_45;
| label_119:
0x0008f620 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008f622 movs r1, 0x5b | r1 = 0x5b;
0x0008f624 ldr r2, [sp, 0x60] | r2 = var_60h;
0x0008f626 mov r0, sl | r0 = sl;
0x0008f628 str r3, [sp] | *(sp) = r3;
0x0008f62a ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008f62c bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f630 b 0x8f526 | goto label_46;
| label_118:
0x0008f632 ldr.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0008f636 ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x0008f638 orrs r2, r3 | r2 |= r3;
| if (r2 == r3) {
0x0008f63a beq 0x8f6ec | goto label_126;
| }
0x0008f63c movs r2, 0 | r2 = 0;
0x0008f63e ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008f640 movs r1, 0x48 | r1 = 0x48;
0x0008f642 mov r0, sl | r0 = sl;
0x0008f644 str r2, [sp] | *(sp) = r2;
0x0008f646 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f64a b 0x8f568 | goto label_47;
| label_120:
0x0008f64c ldrd r3, r2, [sp, 0x44] | __asm ("ldrd r3, r2, [var_44h]");
0x0008f650 add.w r3, r3, r2, lsl 4 | r3 += (r2 << 4);
0x0008f654 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0008f656 ldrb r3, [r1] | r3 = *(r1);
0x0008f658 cmp r3, 0x78 |
0x0008f65a beq 0x8f5fe |
| } while (r3 == 0x78);
0x0008f65c ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0008f65e cmp r3, 0 |
| if (r3 == 0) {
0x0008f660 beq.w 0x8f526 | goto label_46;
| }
| label_125:
0x0008f664 ldr r2, [sp, 0x54] | r2 = var_54h;
0x0008f666 mov r0, r4 | r0 = r4;
0x0008f668 bl 0x64e94 | fcn_00064e94 (r0, r1, r2);
0x0008f66c b 0x8f526 | goto label_46;
| label_123:
0x0008f66e ldr r3, [sp, 0x48] | r3 = var_48h;
0x0008f670 mov r1, sb | r1 = sb;
0x0008f672 ldr r7, [sp, 0x80] | r7 = var_80h;
0x0008f674 mov r0, r4 | r0 = r4;
0x0008f676 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0008f678 mvns r3, r3 | r3 = ~r3;
0x0008f67a str r6, [sp, 0x14] | var_14h = r6;
0x0008f67c lsrs r3, r3, 0x1f | r3 >>= 0x1f;
0x0008f67e str r5, [sp, 8] | var_8h = r5;
0x0008f680 str r7, [sp, 4] | var_4h = r7;
0x0008f682 str r3, [sp, 0xc] | var_ch = r3;
0x0008f684 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0008f686 str r5, [sp, 0xcc] | var_cch = r5;
0x0008f688 strd r5, r3, [sp, 0x1c] | __asm ("strd r5, r3, [sp, 0x1c]");
0x0008f68c ldr r3, [sp, 0xa8] | r3 = var_a8h;
0x0008f68e str r3, [sp] | *(sp) = r3;
0x0008f690 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x0008f692 uxtb r3, r3 | r3 = (int8_t) r3;
0x0008f694 str r3, [sp, 0x10] | var_10h = r3;
0x0008f696 add r3, sp, 0xcc | r3 += var_cch;
0x0008f698 str r3, [sp, 0x18] | var_18h = r3;
0x0008f69a ldr r3, [sp, 0xa4] | r3 = var_a4h;
0x0008f69c bl 0x8cac8 | fcn_0008cac8 (r0, r1, r2, r3, r4, r5, r6);
0x0008f6a0 mov r3, r7 | r3 = r7;
0x0008f6a2 mov r2, r5 | r2 = r5;
0x0008f6a4 mov r1, sb | r1 = sb;
0x0008f6a6 mov r0, r4 | r0 = r4;
0x0008f6a8 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x0008f6ac bl 0x89b70 | fcn_00089b70 (r0, r1, r2, r3, r4, r5, r6);
0x0008f6b0 ldr r3, [sp, 0xcc] | r3 = var_cch;
| if (r3 == 0) {
0x0008f6b2 cbz r3, 0x8f702 | void (*0x8f702)() ();
| }
| label_122:
0x0008f6e0 ldr r1, [sp, 0x78] | r1 = var_78h;
0x0008f6e2 mov r2, sb | r2 = sb;
0x0008f6e4 mov r0, r4 | r0 = r4;
0x0008f6e6 bl 0x67188 | fcn_00067188 (r0, r1, r2, r3, r4);
0x0008f6ea b 0x8f58a | goto label_48;
| label_126:
0x0008f6ec ldr r3, [sp, 0x90] | r3 = var_90h;
0x0008f6ee movs r1, 0x7b | r1 = 0x7b;
0x0008f6f0 ldr r2, [sp, 0xa4] | r2 = var_a4h;
0x0008f6f2 mov r0, sl | r0 = sl;
0x0008f6f4 str r3, [sp] | *(sp) = r3;
0x0008f6f6 movs r3, 1 | r3 = 1;
0x0008f6f8 str r3, [sp, 0x4c] | var_4ch = r3;
0x0008f6fa ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008f6fc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f700 b 0x8f568 | goto label_47;
| label_124:
0x0008f706 ldr r3, [sp, 0x90] | r3 = var_90h;
0x0008f708 movs r1, 0x7b | r1 = 0x7b;
0x0008f70a ldr r2, [sp, 0xa4] | r2 = var_a4h;
0x0008f70c mov r0, sl | r0 = sl;
0x0008f70e str r3, [sp] | *(sp) = r3;
0x0008f710 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0008f712 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f716 movs r3, 1 | r3 = 1;
0x0008f718 str r3, [sp, 0x4c] | var_4ch = r3;
0x0008f71a b 0x8f568 | goto label_47;
| label_117:
0x0008f71c ldr r3, [sp, 0x68] | r3 = var_68h;
0x0008f71e movs r1, 0x48 | r1 = 0x48;
0x0008f720 mov r0, sl | r0 = sl;
0x0008f722 mov r2, r3 | r2 = r3;
0x0008f724 str r3, [sp] | *(sp) = r3;
0x0008f726 ldr r3, [sp, 0x80] | r3 = var_80h;
0x0008f728 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f72c b 0x8f50e | goto label_49;
0x0008f7a2 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x0008f7a4 mov r0, sl | r0 = sl;
0x0008f7a6 ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008f7aa bl 0x9894 | fcn_00009894 (r0, r1, r2);
0x0008f7ae mov r3, r5 | r3 = r5;
0x0008f7b0 mov r2, r7 | r2 = r7;
0x0008f7b2 movs r1, 0xf | r1 = 0xf;
0x0008f7b4 str r5, [sp] | *(sp) = r5;
0x0008f7b6 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f7ba ldrsh.w r3, [sb, 0x2c] | r3 = *((sb + 0x2c));
0x0008f7be adds r5, r7, 1 | r5 = r7 + 1;
0x0008f7c0 ldr r2, [sp, 0x78] | r2 = var_78h;
0x0008f7c2 movs r1, 0x4d | r1 = 0x4d;
0x0008f7c4 mov r0, sl | r0 = sl;
0x0008f7c6 subs r3, 1 | r3--;
0x0008f7c8 str r3, [sp] | *(sp) = r3;
0x0008f7ca mov r3, r5 | r3 = r5;
0x0008f7cc bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f7d0 ldr.w r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x0008f7d4 tst.w r3, 0x60 |
| if ((r3 & 0x60) != 0) {
0x0008f7d8 bne 0x8f896 | goto label_127;
| }
| label_55:
0x0008f7da ldr r3, [sp, 0x68] | r3 = var_68h;
0x0008f7dc cmp r3, 0 |
| if (r3 == 0) {
0x0008f7de beq 0x8f88a | goto label_128;
| }
| label_54:
0x0008f7e0 ldr r3, [sp, 0x190] | r3 = *(arg_190h);
0x0008f7e2 mov r0, r4 | r0 = r4;
0x0008f7e4 str r6, [sp, 0x10] | var_10h = r6;
0x0008f7e6 movs r2, 0x7e | r2 = 0x7e;
0x0008f7e8 ldr r1, [sp, 0x7c] | r1 = var_7ch;
0x0008f7ea str r3, [sp, 0xc] | var_ch = r3;
0x0008f7ec ldrsh.w r3, [sb, 0x2a] | r3 = *((sb + 0x2a));
0x0008f7f0 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x0008f7f4 subs r3, r7, r3 | r3 = r7 - r3;
0x0008f7f6 subs r3, 1 | r3--;
0x0008f7f8 str r3, [sp, 8] | var_8h = r3;
0x0008f7fa movs r3, 1 | r3 = 1;
0x0008f7fc str r3, [sp] | *(sp) = r3;
0x0008f7fe movs r3, 0 | r3 = 0;
0x0008f800 bl 0x8c468 | fcn_0008c468 (r0, r1, r2, r3, r4, r5, r6);
0x0008f804 ldrsh.w r2, [sb, 0x2a] | r2 = *((sb + 0x2a));
0x0008f808 mov r1, r7 | r1 = r7;
0x0008f80a mov r0, r4 | r0 = r4;
0x0008f80c adds r2, 1 | r2++;
0x0008f80e bl 0x18120 | fcn_00018120 (r0, r1, r2);
0x0008f812 b.w 0x8eae4 | goto label_50;
| label_114:
0x0008f83a ldr r6, [sp, 0x60] | r6 = var_60h;
0x0008f83c movs r5, 0 | r5 = 0;
0x0008f83e ldr r3, [sp, 0x58] | r3 = var_58h;
0x0008f840 movs r1, 5 | r1 = 5;
0x0008f842 mov r0, sl | r0 = sl;
0x0008f844 str r5, [sp] | *(sp) = r5;
0x0008f846 mov r2, r6 | r2 = r6;
0x0008f848 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f84c ldr.w r2, [sl, 0x6c] | r2 = *((sl + 0x6c));
0x0008f850 mov r1, r8 | r1 = r8;
0x0008f852 mov r0, sl | r0 = sl;
0x0008f854 bl 0x9894 | fcn_00009894 (r0, r1, r2);
0x0008f858 mov r2, r6 | r2 = r6;
0x0008f85a mov r3, r5 | r3 = r5;
0x0008f85c movs r1, 0x76 | r1 = 0x76;
0x0008f85e str r5, [sp] | *(sp) = r5;
0x0008f860 bl 0x2ae1c | fcn_0002ae1c (r0, r1, r2, r3, r4);
0x0008f864 b.w 0x8eb74 | goto label_51;
| label_116:
0x0008f868 ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
0x0008f86a cmp r3, 0 |
| if (r3 == 0) {
0x0008f86c beq.w 0x8eb80 | goto label_52;
| }
| label_115:
0x0008f87a ldr r3, [pc, 0x2c] |
0x0008f87c add r3, pc | r3 = 0x11f12a;
0x0008f87e adds r3, 4 | r3 += 4;
0x0008f880 b.w 0x8eb72 | goto label_53;
| label_128:
0x0008f88a mov r2, r5 | r2 = r5;
0x0008f88c mov r1, sb | r1 = sb;
0x0008f88e mov r0, sl | r0 = sl;
0x0008f890 bl 0x2f4b4 | fcn_0002f4b4 (r0, r1, r2);
0x0008f894 b 0x8f7e0 | goto label_54;
| label_127:
0x0008f896 mov r2, sb | r2 = sb;
0x0008f898 mov r1, r5 | r1 = r5;
0x0008f89a mov r0, r4 | r0 = r4;
0x0008f89c bl 0x67188 | fcn_00067188 (r0, r1, r2, r3, r4);
0x0008f8a0 b 0x8f7da | goto label_55;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x1a9bc */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_stmt_status () | void sqlite3_stmt_status (int16_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0001a9bc push {r4, r5, r6, lr} |
0x0001a9be cmp r1, 0x63 |
0x0001a9c0 ldr r4, [pc, 0x70] |
0x0001a9c2 sub sp, 8 |
0x0001a9c4 ldr r3, [pc, 0x70] | r3 = *(0x1aa38);
0x0001a9c6 add r4, pc | r4 = 0x353fe;
0x0001a9c8 ldr r3, [r4, r3] |
0x0001a9ca mov r4, r0 | r4 = r0;
0x0001a9cc ldr r3, [r3] | r3 = *(0x353fe);
0x0001a9ce str r3, [sp, 4] | var_4h = r3;
0x0001a9d0 mov.w r3, 0 | r3 = 0;
| if (r1 == 0x63) {
0x0001a9d4 beq 0x1aa00 | goto label_1;
| }
0x0001a9d6 add.w r4, r0, r1, lsl 2 | r4 = r0 + (r1 << 2);
0x0001a9da ldr.w r0, [r4, 0xa0] | r0 = *((r4 + 0xa0));
0x0001a9de cbnz r2, 0x1a9f8 |
| while (1) {
| label_0:
0x0001a9e0 ldr r2, [pc, 0x58] |
0x0001a9e2 ldr r3, [pc, 0x54] | r3 = *(0x1aa3a);
0x0001a9e4 add r2, pc | r2 = 0x35424;
0x0001a9e6 ldr r3, [r2, r3] | r3 = *(0x35424);
0x0001a9e8 ldr r2, [r3] | r2 = *(0x35424);
0x0001a9ea ldr r3, [sp, 4] | r3 = var_4h;
0x0001a9ec eors r2, r3 | r2 ^= r3;
0x0001a9ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001a9f2 bne 0x1aa30 | goto label_2;
| }
0x0001a9f4 add sp, 8 |
0x0001a9f6 pop {r4, r5, r6, pc} |
0x0001a9f8 movs r3, 0 | r3 = 0;
0x0001a9fa str.w r3, [r4, 0xa0] | __asm ("str.w r3, [r4, 0xa0]");
0x0001a9fe b 0x1a9e0 |
| }
| label_1:
0x0001aa00 ldr r5, [r0] | r5 = *(r0);
0x0001aa02 movs r6, 0 | r6 = 0;
0x0001aa04 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0001aa06 blx 0x8254 | fcn_00008254 ();
0x0001aa0a mov r3, sp | r3 = sp;
0x0001aa0c mov r1, r4 | r1 = r4;
0x0001aa0e str.w r3, [r5, 0x1f8] | __asm ("str.w r3, aav.0x000000ff");
0x0001aa12 mov r0, r5 | r0 = r5;
0x0001aa14 str r6, [sp] | *(sp) = r6;
0x0001aa16 bl 0x1a8a4 | fcn_0001a8a4 (r0, r1);
0x0001aa1a mov r1, r4 | r1 = r4;
0x0001aa1c mov r0, r5 | r0 = r5;
0x0001aa1e bl 0x159dc | fcn_000159dc (r0, r1);
0x0001aa22 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x0001aa24 str.w r6, [r5, 0x1f8] | __asm ("str.w r6, aav.0x000000ff");
0x0001aa28 blx 0x81d4 | fcn_000081d4 ();
0x0001aa2c ldr r0, [sp] | r0 = *(sp);
0x0001aa2e b 0x1a9e0 | goto label_0;
| label_2:
0x0001aa30 blx 0x7e8c | fcn_00007e8c ();
0x0001aa34 adds r2, 0xca | r2 += 0xca;
0x0001aa36 movs r3, r1 | r3 = r1;
0x0001aa38 lsls r4, r1, 0xd | r4 = r1 << 0xd;
0x0001aa3a movs r0, r0 |
0x0001aa3c adds r2, 0xac | r2 += 0xac;
0x0001aa3e movs r3, r1 | r3 = r1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsqlite3.so.0.8.6 @ 0x20cc4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.sqlite3_str_vappendf () | void sqlite3_str_vappendf (int16_t arg_1h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_bp_4h;
| int16_t var_3h;
| int16_t var_1h;
| 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;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_35h;
| int16_t var_3ch;
| int16_t var_3dh;
| int16_t var_3eh;
| int16_t var_3fh;
| int16_t var_0h_2;
| int16_t var_84h;
| int16_t var_9ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| label_76:
0x0000e220 invalid |
0x0000e224 lsls r4, r3, 8 | r4 = r3 << 8;
0x0000e226 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0000e228 push {r4, r5, lr} |
0x0000e22a mov r4, r0 | r4 = r0;
0x0000e22c add.w r5, r0, 0x20 | r5 = r0 + 0x20;
0x0000e230 ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x0000e232 sub sp, 0xc |
0x0000e234 adds r1, r3, 1 | r1 = r3 + 1;
0x0000e236 strd r2, r5, [sp] | __asm ("strd r2, r5, [sp]");
0x0000e23a add.w r3, r4, 0x18 | r3 = r4 + 0x18;
0x0000e23e ldr r5, [r0, 0x14] | r5 = *((r0 + 0x14));
0x0000e240 add.w r2, r4, 0x14 | r2 = r4 + 0x14;
0x0000e244 str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
0x0000e246 add.w r1, r4, 0x10 | r1 = r4 + 0x10;
0x0000e24a ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000e24c blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000e24e cbnz r0, 0xe258 |
| while (r5 == 0x65) {
0x0000e250 movs r5, 0 | r5 = 0;
0x0000e252 mov r0, r5 | r0 = r5;
0x0000e254 add sp, 0xc |
0x0000e256 pop {r4, r5, pc} |
0x0000e258 mov r5, r0 | r5 = r0;
0x0000e25a ldr r0, [r4, 8] | r0 = *((r4 + 8));
| if (r0 != 0) {
0x0000e25c cbz r0, 0xe26a |
0x0000e25e ldr r3, [r4] | r3 = *(r4);
0x0000e260 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0000e262 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0000e264 blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x0000e266 movs r3, 0 | r3 = 0;
0x0000e268 str r3, [r4, 8] | *((r4 + 8)) = r3;
| }
0x0000e26a ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000e26c blx 0x84f8 | fcn_000084f8 ();
0x0000e270 cmp r5, 0x65 |
0x0000e272 mov.w r3, 0 | r3 = 0;
0x0000e276 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x0000e278 strd r3, r3, [r4, 0x10] | __asm ("strd r3, r3, [r4, 0x10]");
0x0000e27c strd r3, r3, [r4, 0x18] | __asm ("strd r3, r3, [r4, 0x18]");
0x0000e280 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0000e282 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x0000e284 beq 0xe250 |
| }
0x0000e286 mov r0, r5 | r0 = r5;
0x0000e288 add sp, 0xc |
0x0000e28a pop {r4, r5, pc} |
0x00020cc4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00020cc8 mov r4, r1 | r4 = r1;
0x00020cca vpush {d8, d9, d10, d11, d12, d13, d14} | __asm ("vpush {d8, d9, d10, d11, d12, d13, d14}");
0x00020cce sub sp, 0x8c |
0x00020cd0 str r0, [sp, 0x14] | var_14h = r0;
0x00020cd2 ldrb r3, [r0, 0x15] | r3 = *((r0 + 0x15));
0x00020cd4 ldr r0, [pc, 0x2d0] |
0x00020cd6 ldr r1, [pc, 0x2d4] | r1 = *(0x20fae);
0x00020cd8 add r0, pc | r0 = 0x41c84;
0x00020cda ldr r1, [r0, r1] |
0x00020cdc ldr r1, [r1] | r1 = *(0x41c84);
0x00020cde str r1, [sp, 0x84] | var_84h = r1;
0x00020ce0 mov.w r1, 0 | r1 = 0;
0x00020ce4 ands r1, r3, 2 | r1 = r3 & 2;
0x00020ce8 str r2, [sp, 8] | var_8h = r2;
0x00020cea str r1, [sp, 0x18] | var_18h = r1;
| if (r1 == r3) {
0x00020cec beq.w 0x217cc | goto label_78;
| }
0x00020cf0 mov r3, r2 | r3 = r2;
0x00020cf2 ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x00020cf6 str r3, [sp, 8] | var_8h = r3;
0x00020cf8 movs r3, 1 | r3 = 1;
0x00020cfa str r2, [sp, 0x2c] | var_2ch = r2;
0x00020cfc str r3, [sp, 0x18] | var_18h = r3;
| label_19:
0x00020cfe ldrb r3, [r4] | r3 = *(r4);
0x00020d00 cmp r3, 0 |
| if (r3 == 0) {
0x00020d02 beq.w 0x215be | goto label_9;
| }
0x00020d06 vldr d12, [pc, 0x270] | __asm ("vldr d12, aav.0x000000ff");
0x00020d0a mov.w sl, 0 | sl = 0;
0x00020d0e vldr d11, [pc, 0x270] | __asm ("vldr d11, aav.0x000000ff");
0x00020d12 vldr d9, [pc, 0x274] | __asm ("vldr d9, aav.0x000000ff");
0x00020d16 vldr d8, [pc, 0x278] | __asm ("vldr d8, aav.0x000000ff");
0x00020d1a vldr d10, [pc, 0x27c] | __asm ("vldr d10, aav.0x000000ff");
0x00020d1e vldr d13, [pc, 0x280] | __asm ("vldr d13, aav.0x000000ff");
| label_7:
0x00020d22 cmp r3, 0x25 |
| if (r3 != 0x25) {
0x00020d24 bne.w 0x216b4 | goto label_79;
| }
| label_10:
0x00020d28 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00020d2a adds r4, 1 | r4++;
0x00020d2c cmp r3, 0 |
| if (r3 == 0) {
0x00020d2e beq.w 0x216e2 | goto label_80;
| }
| label_11:
0x00020d32 movs r6, 0 | r6 = 0;
0x00020d34 mov.w r2, -1 | r2 = -1;
0x00020d38 mov sb, r6 | sb = r6;
0x00020d3a mov r5, r6 | r5 = r6;
0x00020d3c str r6, [sp, 0x1c] | var_1ch = r6;
0x00020d3e str r6, [sp, 0x10] | var_10h = r6;
0x00020d40 str r6, [sp, 4] | var_4h = r6;
0x00020d42 str r6, [sp, 0xc] | var_ch = r6;
0x00020d44 str r2, [sp] | *(sp) = r2;
| do {
| label_0:
0x00020d46 sub.w r2, r3, 0x20 | r2 = r3 - 0x20;
0x00020d4a cmp r2, 0x4c |
| if (r2 > 0x4c) {
0x00020d4c bhi 0x20df8 | goto label_1;
| }
| /* switch table (78 cases) at 0x20d52 */
0x00020d4e tbh [pc, r2, lsl 1] | __asm ("tbh [pc, r2, lsl 1]");
0x00020dec ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020df0 movs r2, 0x2b | r2 = 43;
0x00020df2 str r2, [sp, 4] | var_4h = r2;
0x00020df4 cmp r3, 0 |
0x00020df6 bne 0x20d46 |
| } while (r3 != 0);
| label_1:
0x00020df8 mov fp, r5 |
0x00020dfa movs r0, 0 | r0 = 0;
| label_2:
0x00020dfc ldr r2, [pc, 0x1b0] |
0x00020dfe movs r1, 0x64 | r1 = 0x64;
0x00020e00 movs r5, 0 | r5 = 0;
0x00020e02 add r2, pc |
0x00020e04 add.w r2, r2, 0x184 | r2 = 0x41f3a;
0x00020e08 b 0x20e16 |
| while (r1 != r3) {
0x00020e0a adds r5, 1 | r5++;
0x00020e0c cmp r5, 0x17 |
| if (r5 == 0x17) {
0x00020e0e beq.w 0x215be | goto label_9;
| }
0x00020e12 ldrb r1, [r2, 6]! | r1 = *((r2 += 6));
0x00020e16 cmp r1, r3 |
0x00020e18 bne 0x20e0a |
| }
0x00020e1a ldr r3, [pc, 0x198] |
0x00020e1c lsls r2, r5, 1 | r2 = r5 << 1;
0x00020e1e str r2, [sp, 0x24] | var_24h = r2;
0x00020e20 add r2, r5 | r2 += r5;
0x00020e22 add r3, pc | r3 = 0x41ddc;
0x00020e24 add.w r3, r3, r2, lsl 1 | r3 += (r2 << 1);
0x00020e28 ldrb.w r3, [r3, 0x187] | r3 = *((r3 + 0x187));
0x00020e2c mov r2, r3 | r2 = r3;
0x00020e2e str r3, [sp, 0x20] | var_20h = r3;
0x00020e30 cmp r2, 0x10 |
| if (r2 > 0x10) {
0x00020e32 bhi.w 0x215be | goto label_9;
| }
| /* switch table (18 cases) at 0x20e3a */
0x00020e36 tbh [pc, r2, lsl 1] | __asm ("tbh [pc, r2, lsl 1]");
0x00020e5c ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x00020e5e sub.w r5, r3, 0x30 | r5 = r3 - 48;
0x00020e62 mov r3, r5 | r3 = r5;
0x00020e64 adds r1, r4, 1 | r1 = r4 + 1;
0x00020e66 sub.w r0, r2, 0x30 | r0 = r2 - 0x30;
0x00020e6a cmp r0, 9 |
| if (r0 > 9) {
0x00020e6c bhi 0x20e8c | goto label_81;
| }
| do {
0x00020e6e add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00020e72 mov r4, r1 | r4 = r1;
0x00020e74 add.w r2, r2, r3, lsl 1 | r2 += (r3 << 1);
0x00020e78 sub.w r3, r2, 0x30 | r3 = r2 - 0x30;
0x00020e7c ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x00020e80 sub.w r0, r2, 0x30 | r0 = r2 - 0x30;
0x00020e84 cmp r0, 9 |
0x00020e86 bls 0x20e6e |
| } while (r0 < 9);
0x00020e88 bic r5, r3, 0x80000000 | r5 = BIT_MASK (r3, 0x80000000);
| label_81:
0x00020e8c cmp r2, 0x2e |
0x00020e8e it ne |
| if (r2 != 0x2e) {
0x00020e90 cmpne r2, 0x6c | __asm ("cmpne r2, 0x6c");
| }
0x00020e92 mov r3, r2 | r3 = r2;
| if (r2 != 0x2e) {
0x00020e94 bne.w 0x2174e | goto label_82;
| }
0x00020e98 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020e9c cmp r3, 0 |
| if (r3 != 0) {
0x00020e9e bne.w 0x20d46 | goto label_0;
| }
0x00020ea2 b 0x20df8 | goto label_1;
0x00020ea4 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020ea8 movs r2, 1 | r2 = 1;
0x00020eaa str r2, [sp, 0x1c] | var_1ch = r2;
0x00020eac cmp r3, 0 |
| if (r3 != 0) {
0x00020eae bne.w 0x20d46 | goto label_0;
| }
0x00020eb2 b 0x20df8 | goto label_1;
0x00020eb4 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00020eb6 mov fp, r5 |
0x00020eb8 cmp r3, 0x6c |
0x00020eba iteet eq |
| if (r3 != 0x6c) {
0x00020ebc ldrbeq r3, [r4, 2] | r3 = *((r4 + 2));
| }
| if (r3 == 0x6c) {
0x00020ebe addne r4, 1 | r4++;
| }
| if (r3 == 0x6c) {
0x00020ec0 movne r0, 1 | r0 = 1;
| }
| if (r3 != 0x6c) {
0x00020ec2 addeq r4, 2 | r4 += 2;
| }
0x00020ec4 it eq |
| if (r3 != 0x6c) {
0x00020ec6 moveq r0, 2 | r0 = 2;
| }
0x00020ec8 b 0x20dfc | goto label_2;
0x00020eca ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00020ecc cmp r3, 0x2a |
| if (r3 != 0x2a) {
0x00020ece bne.w 0x21712 | goto label_83;
| }
0x00020ed2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00020ed4 cmp r3, 0 |
| if (r3 != 0) {
0x00020ed6 bne.w 0x21780 | goto label_84;
| }
0x00020eda ldr r3, [sp, 8] | r3 = var_8h;
0x00020edc ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x00020ee0 str r2, [sp] | *(sp) = r2;
0x00020ee2 str r3, [sp, 8] | var_8h = r3;
| label_17:
0x00020ee4 ldr r3, [sp] | r3 = *(sp);
0x00020ee6 cmp r3, 0 |
| if (r3 < 0) {
0x00020ee8 bge 0x20ef8 |
0x00020eea cmp.w r3, -0x80000000 |
0x00020eee ite ne |
| if (r3 != -0x80000000) {
0x00020ef0 rsbne r3, r3, 0 | __asm ("rsbne r3, r3, 0");
| }
| if (r3 != -0x80000000) {
0x00020ef2 moveq r3, -1 | r3 = -1;
| }
0x00020ef6 str r3, [sp] | *(sp) = r3;
| }
| label_16:
0x00020ef8 ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x00020efa adds r4, 2 | r4 += 2;
| label_13:
0x00020efc cmp r3, 0x6c |
| if (r3 != 0x6c) {
0x00020efe bne.w 0x20df8 | goto label_1;
| }
0x00020f02 ldrb r3, [r4] | r3 = *(r4);
0x00020f04 cmp r3, 0 |
| if (r3 != 0) {
0x00020f06 bne.w 0x20d46 | goto label_0;
| }
0x00020f0a b 0x20df8 | goto label_1;
0x00020f0c ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020f10 movs r2, 1 | r2 = 1;
0x00020f12 str r2, [sp, 0xc] | var_ch = r2;
0x00020f14 cmp r3, 0 |
| if (r3 != 0) {
0x00020f16 bne.w 0x20d46 | goto label_0;
| }
0x00020f1a b 0x20df8 | goto label_1;
0x00020f1c ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020f20 movs r6, 0x2c | r6 = 0x2c;
0x00020f22 cmp r3, 0 |
| if (r3 != 0) {
0x00020f24 bne.w 0x20d46 | goto label_0;
| }
0x00020f28 b 0x20df8 | goto label_1;
0x00020f2a ldr r3, [sp, 0x18] | r3 = var_18h;
0x00020f2c cmp r3, 0 |
| if (r3 != 0) {
0x00020f2e bne.w 0x21758 | goto label_85;
| }
0x00020f32 ldr r3, [sp, 8] | r3 = var_8h;
0x00020f34 ldr r5, [r3], 4 | r5 = *(r3);
| r3 += 4;
0x00020f38 str r3, [sp, 8] | var_8h = r3;
| label_14:
0x00020f3a cmp r5, 0 |
| if (r5 < 0) {
0x00020f3c bge 0x20f4c |
0x00020f3e cmp.w r5, -0x80000000 |
| if (r5 == -0x80000000) {
0x00020f42 beq.w 0x21776 | goto label_86;
| }
0x00020f46 rsbs r5, r5, 0 | r5 -= ;
0x00020f48 movs r3, 1 | r3 = 1;
0x00020f4a str r3, [sp, 0xc] | var_ch = r3;
| }
| label_15:
0x00020f4c ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020f50 cmp r3, 0x6c |
0x00020f52 it ne |
| if (r3 == 0x6c) {
0x00020f54 cmpne r3, 0x2e | __asm ("cmpne r3, 0x2e");
| goto label_87;
| }
| if (r3 != 0x6c) {
| label_87:
0x00020f56 bne.w 0x20df8 | goto label_1;
| }
0x00020f5a cmp r3, 0 |
| if (r3 != 0) {
0x00020f5c bne.w 0x20d46 | goto label_0;
| }
0x00020f60 b 0x20df8 | goto label_1;
0x00020f62 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020f66 movs r2, 1 | r2 = 1;
0x00020f68 str r2, [sp, 0x10] | var_10h = r2;
0x00020f6a cmp r3, 0 |
| if (r3 != 0) {
0x00020f6c bne.w 0x20d46 | goto label_0;
| }
0x00020f70 b 0x20df8 | goto label_1;
0x00020fb8 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020fbc mov.w sb, 1 | sb = 1;
0x00020fc0 cmp r3, 0 |
| if (r3 != 0) {
0x00020fc2 bne.w 0x20d46 | goto label_0;
| }
0x00020fc6 b 0x20df8 | goto label_1;
0x00020fc8 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00020fcc movs r2, 0x20 | r2 = 0x20;
0x00020fce str r2, [sp, 4] | var_4h = r2;
0x00020fd0 cmp r3, 0 |
| if (r3 != 0) {
0x00020fd2 bne.w 0x20d46 | goto label_0;
| }
0x00020fd6 b 0x20df8 | goto label_1;
0x00020fd8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00020fda cmp r3, 0xe |
0x00020fdc ldr r3, [sp, 0x18] | r3 = var_18h;
0x00020fde ite eq |
| if (r3 != 0xe) {
0x00020fe0 moveq r8, 0x22 | r8 = 0x22;
| }
| if (r3 != 0xe) {
0x00020fe4 mov.w r8, 0x27 | r8 = 0x27;
| }
0x00020fe8 cmp r3, 0 |
| if (r3 != 0) {
0x00020fea bne.w 0x21aaa | goto label_88;
| }
0x00020fee ldr r3, [sp, 8] | r3 = var_8h;
0x00020ff0 ldr r7, [r3], 4 | r7 = *(r3);
| r3 += 4;
0x00020ff4 str r3, [sp, 8] | var_8h = r3;
| label_38:
0x00020ff6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00020ff8 sub.w r3, r3, 0xa | r3 -= 0xa;
0x00020ffc clz r3, r3 | r3 &= r3;
0x00021000 lsrs r3, r3, 5 | r3 >>= 5;
0x00021002 str r3, [sp, 4] | var_4h = r3;
0x00021004 cmp r7, 0 |
| if (r7 == 0) {
0x00021006 beq.w 0x21bf2 | goto label_89;
| }
0x0002100a ldr r3, [sp] | r3 = *(sp);
0x0002100c cmp r3, 0 |
| if (r3 == 0) {
0x0002100e beq.w 0x2208e | goto label_90;
| }
| label_50:
0x00021012 movs r1, 0 | r1 = 0;
0x00021014 ldr r0, [sp] | r0 = *(sp);
0x00021016 mov r6, r1 | r6 = r1;
0x00021018 mov r5, sb | r5 = sb;
0x0002101a b 0x21024 |
| while (r8 == r3) {
| label_3:
0x0002101c subs r0, 1 | r0--;
0x0002101e add.w r6, r6, 1 | r6++;
| if (r0 == 1) {
0x00021022 beq 0x21064 | goto label_91;
| }
| label_4:
0x00021024 ldrb r3, [r7, r6] | r3 = *((r7 + r6));
| if (r3 == 0) {
0x00021026 cbz r3, 0x21064 | goto label_91;
| }
0x00021028 cmp r8, r3 |
0x0002102a it eq |
| if (r8 != r3) {
0x0002102c addeq r1, 1 | r1++;
| }
0x0002102e beq 0x2101c |
| }
0x00021030 cmp r5, 0 |
| if (r5 == 0) {
0x00021032 beq 0x2101c | goto label_3;
| }
0x00021034 and r3, r3, 0xc0 | r3 &= 0xc0;
0x00021038 cmp r3, 0xc0 |
| if (r3 != 0xc0) {
0x0002103a bne 0x2101c | goto label_3;
| }
0x0002103c adds r3, r7, r6 | r3 = r7 + r6;
0x0002103e ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x00021040 and r3, r3, 0xc0 | r3 &= 0xc0;
0x00021044 cmp r3, 0x80 |
| if (r3 != 0x80) {
0x00021046 bne 0x2101c | goto label_3;
| }
0x00021048 adds r2, r6, 2 | r2 = r6 + 2;
0x0002104a add r2, r7 | r2 += r7;
| do {
0x0002104c subs r3, r2, r7 | r3 = r2 - r7;
0x0002104e subs r6, r3, 1 | r6 = r3 - 1;
0x00021050 ldrb r3, [r2], 1 | r3 = *(r2);
| r2++;
0x00021054 and r3, r3, 0xc0 | r3 &= 0xc0;
0x00021058 cmp r3, 0x80 |
0x0002105a beq 0x2104c |
| } while (r3 == 0x80);
0x0002105c subs r0, 1 | r0--;
0x0002105e add.w r6, r6, 1 | r6++;
| if (r0 != 1) {
0x00021062 bne 0x21024 | goto label_4;
| }
| label_91:
0x00021064 adds r2, r6, 3 | r2 = r6 + 3;
0x00021066 mov sb, r5 | sb = r5;
0x00021068 add r2, r1 | r2 += r1;
0x0002106a cmp r2, 0x46 |
| if (r2 <= 0x46) {
0x0002106c ble.w 0x21994 | goto label_92;
| }
0x00021070 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00021072 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00021074 bl 0x1bb38 | r0 = fcn_0001bb38 (r0, r1, r2);
0x00021078 mov sl, r0 | sl = r0;
0x0002107a cmp r0, 0 |
| if (r0 == 0) {
0x0002107c beq.w 0x215be | goto label_9;
| }
0x00021080 str r0, [sp, 0x28] | var_28h = r0;
| label_31:
0x00021082 ldr r3, [sp, 4] | r3 = var_4h;
0x00021084 cmp r3, 0 |
| if (r3 == 0) {
0x00021086 beq.w 0x21950 | goto label_93;
| }
0x0002108a strb.w r8, [sl] | *(sl) = r8;
0x0002108e cmp r6, 0 |
| if (r6 == 0) {
0x00021090 beq.w 0x220c6 | goto label_94;
| }
0x00021094 movs r5, 1 | r5 = 1;
| label_28:
0x00021096 subs r2, r7, 1 | r2 = r7 - 1;
| do {
0x00021098 mov r3, r2 | r3 = r2;
0x0002109a ldrb r1, [r2, 1]! | r1 = *((r2 += 1));
0x0002109e adds r3, 2 | r3 += 2;
0x000210a0 adds r0, r5, 1 | r0 = r5 + 1;
0x000210a2 subs r3, r3, r7 | r3 -= r7;
0x000210a4 cmp r8, r1 |
0x000210a6 strb.w r1, [sl, r5] | *((sl + r5)) = r1;
0x000210aa itet eq |
| if (r8 != r1) {
0x000210ac addeq r5, 2 | r5 += 2;
| }
| if (r8 == r1) {
0x000210ae movne r5, r0 | r5 = r0;
| }
| if (r8 != r1) {
0x000210b0 strbeq r8, [sl, r0] | *((sl + r0)) = r8;
| }
0x000210b4 cmp r6, r3 |
0x000210b6 bgt 0x21098 |
| } while (r6 > r3);
0x000210b8 ldr r2, [sp, 4] | r2 = var_4h;
0x000210ba mov r3, r5 | r3 = r5;
0x000210bc cmp r2, 0 |
| if (r2 != 0) {
0x000210be bne.w 0x219a0 | goto label_95;
| }
0x000210c2 add.w r2, sl, r5 | r2 = sl + r5;
| label_27:
0x000210c6 mov r3, sb | r3 = sb;
0x000210c8 movs r1, 0 | r1 = 0;
0x000210ca strb r1, [r2] | *(r2) = r1;
| label_44:
0x000210cc cmp.w fp, 0 |
0x000210d0 ite le |
| if (fp > 0) {
0x000210d2 movle r3, 0 | r3 = 0;
| }
| if (fp <= 0) {
0x000210d4 andgt r3, r3, 1 | r3 &= 1;
| }
0x000210d8 cmp r3, 0 |
| if (r3 != 0) {
0x000210da bne.w 0x21926 | goto label_96;
| }
| label_26:
0x000210de sub.w r6, fp, r5 | r6 = fp - r5;
0x000210e2 b 0x21676 | goto label_34;
0x000210e4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000210e6 sub.w r6, r3, 3 | r6 = r3 - 3;
0x000210ea ldr r3, [sp, 0x18] | r3 = var_18h;
0x000210ec clz r6, r6 | r6 &= r6;
0x000210f0 lsrs r6, r6, 5 | r6 >>= 5;
0x000210f2 cmp r3, 0 |
| if (r3 != 0) {
0x000210f4 bne.w 0x21aca | goto label_97;
| }
0x000210f8 ldr r3, [sp, 8] | r3 = var_8h;
0x000210fa adds r3, 7 | r3 += 7;
0x000210fc bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00021100 vldmia r3!, {d14} | __asm ("vldmia r3!, {d14}");
0x00021104 str r3, [sp, 8] | var_8h = r3;
| label_39:
0x00021106 ldr r3, [sp] | r3 = *(sp);
0x00021108 adds r3, 1 | r3++;
0x0002110a itt eq |
| if (r3 != 1) {
0x0002110c moveq r3, 1 | r3 = 1;
| }
| if (r3 != 1) {
0x0002110e moveq r7, 6 | r7 = 6;
| }
| if (r3 != 1) {
0x00021110 beq 0x2112c |
| label_58:
0x00021112 ldr r2, [sp] | r2 = *(sp);
0x00021114 mov.w r3, 0xe100 |
0x00021118 movt r3, 0x5f5 | r3 = 0x5f5e100;
0x0002111c cmp r2, r3 |
0x0002111e mov r7, r2 | r7 = r2;
0x00021120 it ge |
| if (r2 < r3) {
0x00021122 movge r7, r3 | r7 = r3;
| }
0x00021124 cmp r2, 0 |
0x00021126 ite le |
| if (r2 > 0) {
0x00021128 movle r3, 0 | r3 = 0;
| }
| if (r2 > 0) {
0x0002112a movgt r3, 1 | r3 = 1;
| goto label_98;
| }
| }
| label_98:
0x0002112c vcmpe.f64 d14, 0 | __asm ("vcmpe.f64 d14, 0");
0x00021130 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00021134 ittt mi |
| if (r2 >= 0) {
0x00021136 movmi r2, 0x2d | r2 = 0x2d;
| }
| if (r2 < 0) {
0x00021138 vnegmi d14, d14 | __asm ("vnegmi d14, d14");
| }
| if (r2 < 0) {
0x0002113c str r2, [sp, 4] | var_4h = r2;
| }
0x0002113e tst r3, r6 |
0x00021140 vmov r0, s28 | __asm ("vmov r0, s28");
0x00021144 vmov r2, s29 | __asm ("vmov r2, s29");
| if ((r3 & r6) == 0) {
0x00021148 beq.w 0x21960 | goto label_99;
| }
0x0002114c subs r7, 1 | r7--;
0x0002114e movw r1, 0xcccd |
0x00021152 ubfx r3, r7, 0, 0xc | r3 = (r7 >> 0) & ((1 << 0xc) - 1);
0x00021156 movt r1, 0xcccc |
0x0002115a umull r6, r1, r1, r3 | r6:r1 = r1 * r3;
0x0002115e ldr r6, [pc, 0x300] |
0x00021160 cmp r3, 9 |
0x00021162 add r6, pc | r6 = 0x425c8;
0x00021164 lsr.w r1, r1, 3 | r1 >>= 3;
0x00021168 add.w r1, r1, r1, lsl 2 | r1 = 0xcccccccd;
0x0002116c sub.w r1, r3, r1, lsl 1 | r1 = r3 - (r1 << 1);
0x00021170 add.w r1, r6, r1, lsl 3 | r1 = r6 + (r1 << 3);
0x00021174 vldr d16, [r1, 0x248] | __asm ("vldr d16, aav.0x000000ff");
| if (r3 <= 9) {
0x00021178 ble 0x21190 | goto label_48;
| }
| label_29:
0x0002117a vldr d17, [pc, 0x2dc] | __asm ("vldr d17, aav.0x000000ff");
| do {
0x0002117e subs r3, 0xa | r3 -= 0xa;
0x00021180 vmul.f64 d16, d16, d17 | __asm ("vmul.f64 d16, d16, d17");
0x00021184 cmp r3, 9 |
0x00021186 bgt 0x2117e |
| } while (r3 > 9);
| label_30:
0x00021188 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0002118a cmp r3, 1 |
| if (r3 == 1) {
0x0002118c beq.w 0x21bbc | goto label_100;
| }
| label_48:
0x00021190 movs r3, 0 | r3 = 0;
0x00021192 movs r1, 0 | r1 = 0;
0x00021194 movt r3, 0x7ff0 | r3 = (r3 & 0xFFFF) | 0x7ff00000;
0x00021198 bics r3, r2 | __asm ("bics r3, r2");
| if (r1 == 0) {
0x0002119a beq.w 0x219ce | goto label_101;
| }
| label_33:
0x0002119e vcmpe.f64 d14, 0 | __asm ("vcmpe.f64 d14, 0");
0x000211a2 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 > 0) {
0x000211a6 bgt.w 0x21c0e | goto label_102;
| }
| label_67:
0x000211aa movs r6, 0 | r6 = 0;
| label_51:
0x000211ac ldr r3, [sp, 0x20] | r3 = var_20h;
0x000211ae cmp r3, 1 |
| if (r3 == 1) {
0x000211b0 beq.w 0x21d8a | goto label_103;
| }
| label_64:
0x000211b4 vadd.f64 d14, d14, d16 | __asm ("vadd.f64 d14, d14, d16");
0x000211b8 vmov.f64 d16, 1.000000e+01 | __asm ("vmov.f64 d16, 1");
0x000211bc vcmpe.f64 d14, d16 | __asm ("vcmpe.f64 d14, d16");
0x000211c0 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 >= 1) {
0x000211c4 bge.w 0x21b62 | goto label_104;
| }
| label_42:
0x000211c8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000211ca cmp r3, 3 |
| if (r3 != 3) {
0x000211cc bne.w 0x21fb6 | goto label_105;
| }
0x000211d0 adds r0, r6, 4 | r0 = r6 + 4;
0x000211d2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000211d4 ite ge |
| if (r0 < r6) {
0x000211d6 movge r3, 0 | r3 = 0;
| }
| if (r0 >= r6) {
0x000211d8 movlt r3, 1 | r3 = 1;
| }
0x000211da cmp r6, r7 |
0x000211dc it gt |
| if (r6 <= r7) {
0x000211de orrgt r3, r3, 1 | r3 |= 1;
| }
0x000211e2 eor r2, r2, 1 | r2 ^= 1;
0x000211e6 str r2, [sp, 0x34] | var_34h = r2;
0x000211e8 cmp r3, 0 |
| if (r3 == 0) {
0x000211ea beq.w 0x21b8a | goto label_106;
| }
0x000211ee movs r3, 0 | r3 = 0;
0x000211f0 movs r2, 2 | r2 = 2;
0x000211f2 str r2, [sp, 0x20] | var_20h = r2;
0x000211f4 mov r2, r3 | r2 = r3;
0x000211f6 str r3, [sp] | *(sp) = r3;
| label_45:
0x000211f8 adds r3, r7, r3 | r3 = r7 + r3;
0x000211fa adc.w r2, r2, r7, asr 31 | __asm ("adc.w r2, r2, r7, asr 31");
0x000211fe adds.w r3, r3, fp | r3 += fp;
0x00021202 adc.w r1, r2, fp, asr 31 | __asm ("adc.w r1, r2, fp, asr 31");
0x00021206 adds.w r2, r3, 0xf | r2 = r3 + 0xf;
0x0002120a adc r3, r1, 0 | __asm ("adc r3, r1, 0");
0x0002120e cmp r2, 0x47 |
0x00021210 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x00021214 ittt lt |
| if (r2 >= 0x47) {
0x00021216 movlt r3, 0 | r3 = 0;
| }
| if (r2 >= 0x47) {
0x00021218 addlt sl, sp, 0x3c | sl += var_3ch;
| }
| if (r2 < 0x47) {
0x0002121c str r3, [sp, 0x28] | var_28h = r3;
| }
| if (r2 >= 0x47) {
0x0002121e bge.w 0x21e66 | goto label_107;
| }
| label_57:
0x00021222 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00021224 mov.w r8, 0xa | r8 = 0xa;
0x00021228 movs r2, 0x10 | r2 = 0x10;
0x0002122a mov r0, sl | r0 = sl;
0x0002122c smlabb r8, r8, sb, r2 | __asm ("smlabb r8, r8, sb, r2");
0x00021230 orr.w r3, r3, sb | r3 |= sb;
0x00021234 cmp r7, 0 |
0x00021236 it gt |
| if (r7 <= 0) {
0x00021238 orrgt r3, r3, 1 | r3 |= 1;
| }
0x0002123c str r3, [sp, 0x10] | var_10h = r3;
0x0002123e ldr r3, [sp, 4] | r3 = var_4h;
| if (r3 != 0) {
0x00021240 cbz r3, 0x21246 |
0x00021242 strb r3, [r0], 1 | *(r0) = r3;
| r0++;
| }
0x00021246 ldr r1, [sp] | r1 = *(sp);
0x00021248 cmp r1, 0 |
| if (r1 >= 0) {
0x0002124a bge.w 0x21e0a | goto label_108;
| }
0x0002124e movs r2, 0x30 | r2 = 0x30;
0x00021250 mov r3, r0 | r3 = r0;
0x00021252 strb r2, [r3], 1 | *(r3) = r2;
| r3++;
0x00021256 adds r2, r1, 1 | r2 = r1 + 1;
0x00021258 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0002125a cmp r1, 0 |
| if (r1 == 0) {
0x0002125c beq.w 0x21e5a | goto label_109;
| }
0x00021260 movs r1, 0x2e | r1 = 0x2e;
0x00021262 adds r3, r0, 2 | r3 = r0 + 2;
0x00021264 strb r1, [r0, 1] | *((r0 + 1)) = r1;
| if (r2 != 0) {
0x00021266 cbz r2, 0x2127e |
| label_56:
0x00021268 rsbs r2, r2, 0 | r2 -= ;
0x0002126a mov r0, r3 | r0 = r3;
0x0002126c movs r1, 0x30 | r1 = 0x30;
0x0002126e add r3, r2 | r3 += r2;
0x00021270 str r3, [sp, 0x30] | var_30h = r3;
0x00021272 blx 0x8264 | fcn_00008264 ();
0x00021276 ldr r2, [sp] | r2 = *(sp);
0x00021278 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0002127a add r2, r7 | r2 += r7;
0x0002127c adds r7, r2, 1 | r7 = r2 + 1;
| }
| label_55:
0x0002127e cmp r7, 0 |
| if (r7 <= 0) {
0x00021280 ble.w 0x22088 | goto label_110;
| }
0x00021284 adds r0, r3, r7 | r0 = r3 + r7;
0x00021286 vmov.f64 d17, 1.000000e+01 | __asm ("vmov.f64 d17, 1");
0x0002128a subs r7, r3, 1 | r7 = r3 - 1;
0x0002128c subs r1, r0, 1 | r1 = r0 - 1;
| do {
0x0002128e cmp.w r8, 0 |
0x00021292 it le |
| if (r8 > 0) {
0x00021294 movle r3, 0x30 | r3 = 0x30;
| }
| if (r8 > 0) {
0x00021296 ble 0x212b4 |
0x00021298 vcvt.s32.f64 s15, d14 | __asm ("vcvt.s32.f64 s15, d14");
0x0002129c add.w r8, r8, -1 | r8 += -1;
0x000212a0 vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x000212a4 vmov r3, s15 | __asm ("vmov r3, s15");
0x000212a8 adds r3, 0x30 | r3 += 0x30;
0x000212aa uxtb r3, r3 | r3 = (int8_t) r3;
0x000212ac vsub.f64 d14, d14, d16 | __asm ("vsub.f64 d14, d14, d16");
0x000212b0 vmul.f64 d14, d14, d17 | __asm ("vmul.f64 d14, d14, d17");
| }
0x000212b4 strb r3, [r7, 1]! | *((r7 += 1)) = r3;
0x000212b8 cmp r7, r1 |
0x000212ba bne 0x2128e |
| } while (r7 != r1);
0x000212bc mov r2, r0 | r2 = r0;
| label_65:
0x000212be ldr r3, [sp, 0x10] | r3 = var_10h;
0x000212c0 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000212c2 tst r3, r1 |
| if ((r3 & r1) != 0) {
0x000212c4 bne.w 0x21eb2 | goto label_111;
| }
| label_54:
0x000212c8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000212ca cmp r3, 2 |
| if (r3 == 2) {
0x000212cc beq.w 0x21d9a | goto label_112;
| }
| label_53:
0x000212d0 movs r3, 0 | r3 = 0;
0x000212d2 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000212d4 strb r3, [r2] | *(r2) = r3;
0x000212d6 sub.w r5, r2, sl | r5 = r2 - sl;
0x000212da ldr r3, [sp, 0xc] | r3 = var_ch;
0x000212dc sub.w r6, fp, r5 | r6 = fp - r5;
0x000212e0 eor r3, r3, 1 | r3 ^= 1;
0x000212e4 tst r1, r3 |
| if ((r1 & r3) == 0) {
0x000212e6 beq.w 0x21676 | goto label_34;
| }
0x000212ea cmp fp, r5 |
| if (fp > r5) {
0x000212ec bgt.w 0x21fda | goto label_113;
| }
0x000212f0 cmp r6, 0 |
| if (r6 <= 0) {
0x000212f2 ble.w 0x220f8 | goto label_114;
| }
| label_8:
0x000212f6 mov r1, r6 | r1 = r6;
0x000212f8 ldr r6, [sp, 0x14] | r6 = var_14h;
0x000212fa movs r2, 0x20 | r2 = 0x20;
0x000212fc mov r0, r6 | r0 = r6;
0x000212fe blx 0x8664 | fcn_00008664 ();
0x00021302 mov r2, r5 | r2 = r5;
0x00021304 mov r1, sl | r1 = sl;
0x00021306 mov r0, r6 | r0 = r6;
0x00021308 blx 0x7e80 | fcn_00007e80 ();
0x0002130c b 0x2169a | goto label_62;
0x0002130e movs r6, 0 | r6 = 0;
0x00021310 ldr r3, [pc, 0x150] |
0x00021312 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00021314 add r3, pc | r3 = 0x4277c;
0x00021316 add r2, r5 | r2 += r5;
0x00021318 add.w r3, r3, r2, lsl 1 | r3 += (r2 << 1);
0x0002131c ldrb.w r3, [r3, 0x186] | r3 = *((r3 + 0x186));
0x00021320 tst.w r3, 1 |
0x00021324 ldr r3, [sp, 0x18] | r3 = var_18h;
| if ((r3 & 1) == 0) {
0x00021326 beq.w 0x217a6 | goto label_115;
| }
0x0002132a cmp r3, 0 |
| if (r3 != 0) {
0x0002132c bne.w 0x21542 | goto label_116;
| }
0x00021330 cmp r0, 0 |
| if (r0 != 0) {
0x00021332 bne.w 0x21f50 | goto label_117;
| }
| label_5:
0x00021336 ldr r3, [sp, 8] | r3 = var_8h;
0x00021338 ldr r7, [r3], 4 | r7 = *(r3);
| r3 += 4;
0x0002133c str r3, [sp, 8] | var_8h = r3;
0x0002133e asrs r1, r7, 0x1f | r1 = r7 >> 0x1f;
| label_6:
0x00021340 subs.w r8, r1, 0 | r8 = r1 - 0;
| if (r8 >= r1) {
0x00021344 bge.w 0x217bc | goto label_20;
| }
0x00021348 rsbs r7, r7, 0 | r7 -= ;
0x0002134a mov.w r3, 0x2d | r3 = 0x2d;
0x0002134e sbc.w r8, r8, r8, lsl 1 | __asm ("sbc.w r8, r8, r8, lsl 1");
0x00021352 str r3, [sp, 4] | var_4h = r3;
| label_18:
0x00021354 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x00021356 cbz r3, 0x2136e |
0x00021358 ldr r3, [sp, 4] | r3 = var_4h;
0x0002135a ldr r2, [sp] | r2 = *(sp);
0x0002135c cmp r3, 0 |
0x0002135e ite eq |
| if (r3 != 0) {
0x00021360 moveq r3, fp | r3 = fp;
| }
| if (r3 == 0) {
0x00021362 subne r3, fp, 1 | r3 = fp - 1;
| }
0x00021366 cmp r2, r3 |
0x00021368 it lt |
| if (r2 >= r3) {
0x0002136a movlt r2, r3 | r2 = r3;
| }
0x0002136c str r2, [sp] | *(sp) = r2;
| }
0x0002136e ldr r0, [sp] | r0 = *(sp);
0x00021370 cmp r0, 0x24 |
| if (r0 <= 0x24) {
0x00021372 ble.w 0x21810 | goto label_118;
| }
0x00021376 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00021378 adds.w sb, r0, 0xa | sb = r0 + 0xa;
0x0002137c adc r3, r1, 0 | __asm ("adc r3, r1, 0");
| if (r6 != 0) {
0x00021380 cbz r6, 0x21398 |
0x00021382 movw r2, 0x5556 |
| /* if there is a right shift of 0, then it's a division by 1/3 */
0x00021386 movt r2, 0x5555 | r2 = 0x55555556;
0x0002138a smull r0, r2, r2, r0 | r0:r2 = r2 * r0;
0x0002138e subs r2, r2, r1 | r2 -= r1;
0x00021390 adds.w sb, r2, sb | sb = r2 + sb;
0x00021394 adc.w r3, r3, r2, asr 31 | __asm ("adc.w r3, r3, r2, asr 31");
| }
0x00021398 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0002139a mov r2, sb | r2 = sb;
0x0002139c bl 0x1bb38 | r0 = fcn_0001bb38 (r0, r1, r2);
0x000213a0 cmp r0, 0 |
| if (r0 == 0) {
0x000213a2 beq.w 0x215be | goto label_9;
| }
0x000213a6 add.w sb, sb, -1 | sb += -1;
0x000213aa str r0, [sp, 0x28] | var_28h = r0;
| label_21:
0x000213ac add.w r3, r0, sb | r3 = r0 + sb;
0x000213b0 str r3, [sp, 0x1c] | var_1ch = r3;
0x000213b2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000213b4 cmp r3, 0xf |
0x000213b6 it ne |
| if (r3 == 0xf) {
0x000213b8 ldrne sl, [sp, 0x1c] | sl = var_1ch;
| }
| if (r3 == 0xf) {
0x000213bc beq.w 0x2181c | goto label_119;
| }
| label_22:
0x000213c0 ldr r2, [pc, 0xa4] |
0x000213c2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000213c4 str r4, [sp, 0x20] | var_20h = r4;
0x000213c6 add r2, pc | r2 = 0x42832;
0x000213c8 add r3, r5 | r3 += r5;
0x000213ca mov r1, r2 | r1 = r2;
0x000213cc add.w r3, r2, r3, lsl 1 | r3 = r2 + (r3 << 1);
0x000213d0 ldrb.w r2, [r3, 0x188] | r2 = *((r3 + 0x188));
0x000213d4 ldrb.w sb, [r3, 0x185] | sb = *((r3 + 0x185));
0x000213d8 adds r2, r1, r2 | r2 = r1 + r2;
0x000213da mov r4, r2 | r4 = r2;
| do {
0x000213dc mov r0, r7 | r0 = r7;
0x000213de mov r1, r8 | r1 = r8;
0x000213e0 mov r2, sb | r2 = sb;
0x000213e2 movs r3, 0 | r3 = 0;
0x000213e4 bl 0xac1dc | fcn_000ac1dc (r0, r1, r2, r3);
0x000213e8 add r2, r4 | r2 += r4;
0x000213ea ldrb.w r3, [r2, 0x21c] | r3 = *((r2 + 0x21c));
0x000213ee mov r2, r7 | r2 = r7;
0x000213f0 cmp r2, sb |
0x000213f2 mov r7, r0 | r7 = r0;
0x000213f4 strb r3, [sl, -0x1]! | *((sl -= 0x1)) = r3;
0x000213f8 mov r3, r8 | r3 = r8;
0x000213fa sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x000213fe mov r8, r1 | r8 = r1;
0x00021400 bhs 0x213dc |
| } while (r2 >= sb);
0x00021402 ldrd r3, r4, [sp, 0x1c] | __asm ("ldrd r3, r4, [var_1ch]");
0x00021406 ldr r1, [sp] | r1 = *(sp);
0x00021408 sub.w r2, r3, sl | r2 = r3 - sl;
0x0002140c cmp r1, r2 |
| if (r1 <= r2) {
0x0002140e ble.w 0x21bee | goto label_120;
| }
0x00021412 subs r3, r2, r1 | r3 = r2 - r1;
0x00021414 subs r2, r1, r2 | r2 = r1 - r2;
0x00021416 add sl, r3 | sl += r3;
0x00021418 movs r1, 0x30 | r1 = 0x30;
0x0002141a mov r0, sl | r0 = sl;
0x0002141c blx 0x8264 | fcn_00008264 ();
| label_49:
0x00021420 cmp r6, 0 |
| if (r6 != 0) {
0x00021422 bne.w 0x218cc | goto label_121;
| }
| label_23:
0x00021426 ldr r3, [sp, 4] | r3 = var_4h;
| if (r3 != 0) {
0x00021428 cbz r3, 0x21432 |
0x0002142a strb r3, [sl, -0x1] | *((sl - 0x1)) = r3;
0x0002142e add.w sl, sl, -1 | sl += -1;
| }
0x00021432 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r3 != 0) {
0x00021434 cbz r3, 0x2144c |
0x00021436 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00021438 ldr r3, [pc, 0x30] |
0x0002143a add r2, r5 | r2 += r5;
0x0002143c add r3, pc | r3 = 0x428ac;
0x0002143e add.w r2, r3, r2, lsl 1 | r2 = r3 + (r2 << 1);
0x00021442 ldrb.w r2, [r2, 0x189] | r2 = *((r2 + 0x189));
0x00021446 cmp r2, 0 |
| if (r2 != 0) {
0x00021448 bne.w 0x219ae | goto label_122;
| }
| }
| label_32:
0x0002144c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002144e sub.w r5, r3, sl | r5 = r3 - sl;
0x00021452 sub.w r6, fp, r5 | r6 = fp - r5;
0x00021456 b 0x21676 | goto label_34;
0x00021470 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00021472 cmp r3, 0 |
| if (r3 != 0) {
0x00021474 bne.w 0x21a4e | goto label_123;
| }
0x00021478 ldr r7, [sp, 8] | r7 = var_8h;
0x0002147a ldr r3, [r7], 4 | r3 = *(r7);
| r7 += 4;
0x0002147e str r3, [sp, 0x28] | var_28h = r3;
0x00021480 cmp r3, 0 |
| if (r3 == 0) {
0x00021482 beq.w 0x21eaa | goto label_124;
| }
0x00021486 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00021488 cmp r3, 6 |
| if (r3 != 6) {
0x0002148a bne.w 0x21b6c | goto label_125;
| }
0x0002148e ldr r2, [sp, 0x14] | r2 = var_14h;
0x00021490 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00021492 cmp r3, 0 |
| if (r3 != 0) {
0x00021494 bne.w 0x21b9c | goto label_126;
| }
0x00021498 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x0002149a cmp r3, 0 |
| if (r3 == 0) {
0x0002149c beq.w 0x21b9c | goto label_126;
| }
0x000214a0 ldr r3, [sp] | r3 = *(sp);
0x000214a2 lsrs r3, r3, 0x1f | r3 >>= 0x1f;
0x000214a4 cmp.w fp, 0 |
0x000214a8 ite ne |
| if (fp == 0) {
0x000214aa movne r3, 0 | r3 = 0;
| }
| if (fp != 0) {
0x000214ac andeq r3, r3, 1 | r3 &= 1;
| }
0x000214b0 cmp r3, 0 |
| if (r3 == 0) {
0x000214b2 beq.w 0x21b9c | goto label_126;
| }
0x000214b6 ldrb r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x000214b8 ldr.w sl, [sp, 0x28] | sl = var_28h;
0x000214bc cmp r3, 0 |
| if (r3 != 0) {
0x000214be bne.w 0x21b7a | goto label_127;
| }
0x000214c2 ldr r3, [r2] | r3 = *(r2);
0x000214c4 ldr r1, [sp, 0x28] | r1 = var_28h;
0x000214c6 str r1, [r2, 4] | *((r2 + 4)) = r1;
| if (r3 != 0) {
0x000214c8 cbz r3, 0x214ec |
0x000214ca ldr.w r2, [r3, 0x14c] | r2 = *((r3 + 0x14c));
0x000214ce cmp r2, r1 |
| if (r2 < r1) {
0x000214d0 bls 0x214ec | goto label_128;
| }
0x000214d2 ldr.w r2, [r3, 0x144] | r2 = *((r3 + 0x144));
0x000214d6 cmp r2, r1 |
0x000214d8 it ls |
| if (r2 > r1) {
0x000214da movls r0, 0x80 | r0 = 0x80;
| }
| if (r2 < r1) {
0x000214dc bls 0x214f8 | goto label_129;
| }
0x000214de ldr.w r2, [r3, 0x148] | r2 = *((r3 + 0x148));
0x000214e2 cmp r2, r1 |
0x000214e4 it ls |
| if (r2 <= r1) {
0x000214e6 ldrhls r0, [r3, 0x11e] | __asm ("ldrhls r0, aav.0x000000ff");
| }
| if (r2 < r1) {
0x000214ea bls 0x214f8 | goto label_129;
| }
| }
| label_128:
0x000214ec ldr.w r3, [pc, 0xa28] | r3 = *(0x00021f18);
0x000214f0 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000214f2 add r3, pc | r3 += pc;
0x000214f4 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x000214f6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_129:
0x000214f8 ldr r5, [sp, 0x14] | r5 = var_14h;
0x000214fa ldr r6, [sp, 0x28] | r6 = var_28h;
0x000214fc str r7, [sp, 8] | var_8h = r7;
0x000214fe str r0, [r5, 8] | *((r5 + 8)) = r0;
0x00021500 mov r0, r6 | r0 = r6;
0x00021502 mov sl, r6 | sl = r6;
0x00021504 blx 0x8160 | fcn_00008160 ();
0x00021508 ldrb r3, [r5, 0x15] | r3 = *((r5 + 0x15));
0x0002150a movs r2, 0 | r2 = 0;
0x0002150c str r0, [r5, 0x10] | *((r5 + 0x10)) = r0;
0x0002150e mov r1, r6 | r1 = r6;
0x00021510 mov r0, r5 | r0 = r5;
0x00021512 orr r3, r3, 4 | r3 |= 4;
0x00021516 strb r3, [r5, 0x15] | *((r5 + 0x15)) = r3;
0x00021518 blx 0x7e80 | fcn_00007e80 ();
0x0002151c b 0x216a6 | goto label_12;
0x0002151e ldr.w r3, [pc, 0x9fc] |
0x00021522 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00021524 add r3, pc | r3 = 0x43446;
0x00021526 add r2, r5 | r2 += r5;
0x00021528 add.w r3, r3, r2, lsl 1 | r3 += (r2 << 1);
0x0002152c ldrb.w r6, [r3, 0x186] | r6 = *((r3 + 0x186));
0x00021530 ands r6, r6, 1 | r6 &= 1;
| if (r6 == r6) {
0x00021534 beq.w 0x217d4 | goto label_130;
| }
0x00021538 ldr r6, [sp, 0x18] | r6 = var_18h;
0x0002153a cmp r6, 0 |
| if (r6 == 0) {
0x0002153c beq.w 0x21336 | goto label_5;
| }
0x00021540 movs r6, 0 | r6 = 0;
| label_116:
0x00021542 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00021544 ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x00021548 cmp r2, r3 |
| if (r2 <= r3) {
0x0002154a ble.w 0x217c4 | goto label_131;
| }
0x0002154e ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00021550 ldr.w r0, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| r0 = *((r2 + offset_0));
0x00021554 adds r3, 1 | r3++;
0x00021556 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x00021558 blx 0x8584 | r0 = fcn_00008584 ();
0x0002155c mov r7, r0 | r7 = r0;
0x0002155e b 0x21340 | goto label_6;
0x00021560 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00021562 ldrb r3, [r3, 0x15] | r3 = *((r3 + 0x15));
0x00021564 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 >= r3) {
0x00021566 bpl 0x215be | goto label_9;
| }
0x00021568 ldr r5, [sp, 8] | r5 = var_8h;
0x0002156a ldr r6, [r5], 4 | r6 = *(r5);
| r5 += 4;
0x0002156e ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x00021570 cmp r1, 0 |
| if (r1 == 0) {
0x00021572 beq.w 0x21b36 | goto label_132;
| }
0x00021576 cmp.w sb, 0 |
| if (sb == 0) {
0x0002157a beq.w 0x21e92 | goto label_133;
| }
0x0002157e ldr r7, [r6, 8] | r7 = *((r6 + 8));
| if (r7 != 0) {
0x00021580 cbz r7, 0x215a0 |
| label_41:
0x00021582 ldr r1, [r6, 4] | r1 = *((r6 + 4));
| if (r1 != 0) {
0x00021584 cbz r1, 0x2159e |
0x00021586 ldr r7, [sp, 0x14] | r7 = var_14h;
0x00021588 mov r0, r7 | r0 = r7;
0x0002158a blx 0x85c0 | fcn_000085c0 ();
0x0002158e ldr.w r1, [pc, 0x990] | r1 = *(0x00021f20);
0x00021592 mov r0, r7 | r0 = r7;
0x00021594 movs r2, 1 | r2 = 1;
0x00021596 add r1, pc | r1 += pc;
0x00021598 blx 0x7e80 | fcn_00007e80 ();
0x0002159c ldr r7, [r6, 8] | r7 = *((r6 + 8));
| }
0x0002159e mov r1, r7 | r1 = r7;
| }
0x000215a0 str r5, [sp, 8] | var_8h = r5;
0x000215a2 adds r4, 1 | r4++;
0x000215a4 ldr r5, [sp, 0x14] | r5 = var_14h;
0x000215a6 mov r0, r5 | r0 = r5;
0x000215a8 blx 0x85c0 | fcn_000085c0 ();
0x000215ac movs r2, 0 | r2 = 0;
0x000215ae mov r1, sl | r1 = sl;
0x000215b0 mov r0, r5 | r0 = r5;
0x000215b2 blx 0x7e80 | fcn_00007e80 ();
0x000215b6 ldrb r3, [r4] | r3 = *(r4);
0x000215b8 cmp r3, 0 |
| if (r3 != 0) {
0x000215ba bne.w 0x20d22 | goto label_7;
| }
| do {
| label_9:
0x000215be ldr.w r2, [pc, 0x964] | r2 = *(0x00021f24);
0x000215c2 ldr.w r3, [pc, 0x964] | r3 = *(0x21f2a);
0x000215c6 add r2, pc | r2 += pc;
0x000215c8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000215ca ldr r2, [r3] | r2 = *(0x21f2a);
0x000215cc ldr r3, [sp, 0x84] | r3 = var_84h;
0x000215ce eors r2, r3 | r2 ^= r3;
0x000215d0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000215d4 bne.w 0x220f4 | goto label_134;
| }
0x000215d8 add sp, 0x8c |
0x000215da vpop {d8, d9, d10, d11, d12, d13, d14} | __asm ("vpop {d8, d9, d10, d11, d12, d13, d14}");
0x000215de pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000215e2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000215e4 ldrb r3, [r3, 0x15] | r3 = *((r3 + 0x15));
0x000215e6 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
0x000215e8 bpl 0x215be |
| } while (r2 >= r3);
0x000215ea ldr r3, [sp, 8] | r3 = var_8h;
0x000215ec ldr r1, [r3], 4 | r1 = *(r3);
| r3 += 4;
0x000215f0 cmp r1, 0 |
| if (r1 == 0) {
0x000215f2 beq.w 0x21b28 | goto label_135;
| }
0x000215f6 ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x000215f8 cmp r2, 0 |
| if (r2 != 0) {
0x000215fa bne.w 0x21e7a | goto label_136;
| }
0x000215fe ldr r0, [sp, 0x14] | r0 = var_14h;
0x00021600 mov r1, sl | r1 = sl;
0x00021602 str r3, [sp, 8] | var_8h = r3;
0x00021604 blx 0x7e80 | fcn_00007e80 ();
0x00021608 b 0x216a6 | goto label_12;
0x0002160a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0002160c cmp r3, 0 |
| if (r3 != 0) {
0x0002160e bne.w 0x21aec | goto label_137;
| }
0x00021612 ldr r2, [sp, 8] | r2 = var_8h;
0x00021614 ldr r3, [r2], 4 | r3 = *(r2);
| r2 += 4;
0x00021618 cmp r3, 0x7f |
| if (r3 < 0x7f) {
0x0002161a bls.w 0x219f4 | goto label_138;
| }
0x0002161e cmp.w r3, 0x800 |
0x00021622 and r5, r3, 0x3f | r5 = r3 & 0x3f;
0x00021626 orr r5, r5, 0x80 | r5 |= 0x80;
0x0002162a ubfx r1, r3, 6, 8 | r1 = (r3 >> 6) & ((1 << 8) - 1);
| if (r3 >= 0x800) {
0x0002162e bhs.w 0x21f6a | goto label_139;
| }
0x00021632 strb.w r5, [sp, 0x3d] | var_3dh = r5;
0x00021636 movs r5, 2 | r5 = 2;
0x00021638 subs r1, 0x40 | r1 -= 0x40;
0x0002163a str r2, [sp, 8] | var_8h = r2;
0x0002163c strb.w r1, [sp, 0x3c] | var_3ch = r1;
| label_40:
0x00021640 ldr r3, [sp] | r3 = *(sp);
0x00021642 cmp r3, 1 |
0x00021644 it le |
| if (r3 > 1) {
0x00021646 addle sl, sp, 0x3c | sl += var_3ch;
| }
| if (r3 > 1) {
0x0002164a bgt.w 0x21a0a | goto label_140;
| }
| label_35:
0x0002164e cmp.w fp, 0 |
| if (fp > 0) {
0x00021652 bgt.w 0x21a46 | goto label_141;
| }
| label_36:
0x00021656 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00021658 mov r2, r5 | r2 = r5;
0x0002165a mov r1, sl | r1 = sl;
0x0002165c blx 0x7e80 | fcn_00007e80 ();
0x00021660 b 0x216a6 | goto label_12;
0x00021662 movs r3, 0x25 | r3 = 0x25;
0x00021664 add.w r6, fp, -1 | r6 = fp + -1;
0x00021668 movs r5, 1 | r5 = 1;
0x0002166a add.w sl, sp, 0x3c | sl += var_3ch;
0x0002166e strb.w r3, [sp, 0x3c] | var_3ch = r3;
0x00021672 movs r3, 0 | r3 = 0;
0x00021674 str r3, [sp, 0x28] | var_28h = r3;
| label_34:
0x00021676 cmp r6, 0 |
| if (r6 <= 0) {
0x00021678 ble.w 0x220f8 | goto label_114;
| }
0x0002167c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002167e cmp r3, 0 |
| if (r3 == 0) {
0x00021680 beq.w 0x212f6 | goto label_8;
| }
0x00021684 mov r2, r5 | r2 = r5;
0x00021686 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00021688 mov r1, sl | r1 = sl;
0x0002168a mov r0, r5 | r0 = r5;
0x0002168c blx 0x7e80 | fcn_00007e80 ();
0x00021690 mov r1, r6 | r1 = r6;
0x00021692 movs r2, 0x20 | r2 = 0x20;
0x00021694 mov r0, r5 | r0 = r5;
0x00021696 blx 0x8664 | fcn_00008664 ();
| label_62:
0x0002169a ldr r1, [sp, 0x28] | r1 = var_28h;
| if (r1 != 0) {
0x0002169c cbz r1, 0x216a6 |
0x0002169e ldr r3, [sp, 0x14] | r3 = var_14h;
0x000216a0 ldr r0, [r3] | r0 = *(r3);
0x000216a2 bl 0x159dc | fcn_000159dc (r0, r1);
| }
| label_12:
0x000216a6 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x000216a8 adds r4, 1 | r4++;
0x000216aa cmp r3, 0 |
| if (r3 == 0) {
0x000216ac beq 0x215be | goto label_9;
| }
0x000216ae cmp r3, 0x25 |
| if (r3 == 0x25) {
0x000216b0 beq.w 0x20d28 | goto label_10;
| }
| label_79:
0x000216b4 mov r5, r4 | r5 = r4;
| do {
0x000216b6 ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
0x000216ba cmp r3, 0 |
0x000216bc it ne |
| if (r3 != 0) {
0x000216be cmpne r3, 0x25 | __asm ("cmpne r3, 0x25");
| }
0x000216c0 bne 0x216b6 |
| } while (r3 != 0);
0x000216c2 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000216c4 subs r2, r5, r4 | r2 = r5 - r4;
0x000216c6 mov r1, r4 | r1 = r4;
0x000216c8 blx 0x7e80 | fcn_00007e80 ();
0x000216cc ldrb r3, [r5] | r3 = *(r5);
0x000216ce cmp r3, 0 |
| if (r3 == 0) {
0x000216d0 beq.w 0x215be | goto label_9;
| }
0x000216d4 mov sl, r4 | sl = r4;
0x000216d6 mov r4, r5 | r4 = r5;
0x000216d8 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x000216da adds r4, 1 | r4++;
0x000216dc cmp r3, 0 |
| if (r3 != 0) {
0x000216de bne.w 0x20d32 | goto label_11;
| }
| label_80:
0x000216e2 ldr.w r1, [pc, 0x848] | r1 = *(0x00021f2c);
0x000216e6 movs r2, 1 | r2 = 1;
0x000216e8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000216ea add r1, pc | r1 += pc;
0x000216ec blx 0x7e80 | fcn_00007e80 ();
0x000216f0 b 0x215be | goto label_9;
0x000216f2 ldr r5, [sp, 0x18] | r5 = var_18h;
0x000216f4 cmp r5, 0 |
| if (r5 != 0) {
0x000216f6 bne.w 0x219e8 | goto label_142;
| }
0x000216fa ldr r3, [sp, 8] | r3 = var_8h;
0x000216fc ldr r0, [sp, 0x14] | r0 = var_14h;
0x000216fe ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x00021702 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x00021704 str r3, [sp, 8] | var_8h = r3;
0x00021706 str r1, [r2] | *(r2) = r1;
0x00021708 mov r2, r5 | r2 = r5;
0x0002170a mov r1, sl | r1 = sl;
0x0002170c blx 0x7e80 | fcn_00007e80 ();
0x00021710 b 0x216a6 | goto label_12;
| label_83:
0x00021712 sub.w r1, r3, 0x30 | r1 = r3 - 0x30;
0x00021716 mov r2, r3 | r2 = r3;
0x00021718 cmp r1, 9 |
0x0002171a add.w r4, r4, 1 | r4++;
0x0002171e itt hi |
| if (r1 <= 9) {
0x00021720 movhi r2, 0 | r2 = 0;
| }
| if (r1 > 9) {
0x00021722 strhi r2, [sp] | *(sp) = r2;
| goto label_143;
| }
| if (r1 > 9) {
| label_143:
0x00021724 bhi.w 0x20efc | goto label_13;
| }
0x00021728 movs r1, 0 | r1 = 0;
| do {
0x0002172a add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x0002172e add.w r2, r2, r1, lsl 1 | r2 += (r1 << 1);
0x00021732 sub.w r1, r2, 0x30 | r1 = r2 - 0x30;
0x00021736 ldrb r2, [r4, 1]! | r2 = *((r4 += 1));
0x0002173a sub.w r3, r2, 0x30 | r3 = r2 - 0x30;
0x0002173e cmp r3, 9 |
0x00021740 bls 0x2172a |
| } while (r3 < 9);
0x00021742 mov r3, r2 | r3 = r2;
0x00021744 bic r2, r1, 0x80000000 | r2 = BIT_MASK (r1, 0x80000000);
0x00021748 str r2, [sp] | *(sp) = r2;
0x0002174a b.w 0x20efc | goto label_13;
| label_82:
0x0002174e mov fp, r5 |
0x00021750 mov r4, r1 | r4 = r1;
0x00021752 movs r0, 0 | r0 = 0;
0x00021754 b.w 0x20dfc | goto label_2;
| label_85:
0x00021758 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0002175a ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x0002175e cmp r2, r3 |
| if (r2 > r3) {
0x00021760 ble 0x2177a |
0x00021762 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00021764 ldr.w r0, [r2, r3, lsl 2] | offset_1 = r3 << 2;
| r0 = *((r2 + offset_1));
0x00021768 adds r3, 1 | r3++;
0x0002176a str r3, [r1, 4] | *((r1 + 4)) = r3;
0x0002176c blx 0x8584 | r0 = fcn_00008584 ();
0x00021770 mov r5, r0 | r5 = r0;
0x00021772 b.w 0x20f3a | goto label_14;
| label_86:
0x00021776 movs r3, 1 | r3 = 1;
0x00021778 str r3, [sp, 0xc] | var_ch = r3;
| }
0x0002177a movs r5, 0 | r5 = 0;
0x0002177c b.w 0x20f4c | goto label_15;
| label_84:
0x00021780 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00021782 ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x00021786 cmp r2, r3 |
0x00021788 itt le |
| if (r2 > r3) {
0x0002178a movle r3, 0 | r3 = 0;
| }
| if (r2 <= r3) {
0x0002178c strle r3, [sp] | *(sp) = r3;
| goto label_144;
| }
| if (r2 <= r3) {
| label_144:
0x0002178e ble.w 0x20ef8 | goto label_16;
| }
0x00021792 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00021794 ldr.w r0, [r2, r3, lsl 2] | offset_2 = r3 << 2;
| r0 = *((r2 + offset_2));
0x00021798 adds r3, 1 | r3++;
0x0002179a str r3, [r1, 4] | *((r1 + 4)) = r3;
0x0002179c blx 0x8584 | fcn_00008584 ();
0x000217a0 str r0, [sp] | *(sp) = r0;
0x000217a2 b.w 0x20ee4 | goto label_17;
| if (r3 != 0) {
| label_115:
0x000217a6 cbnz r3, 0x217e8 | goto label_145;
| }
0x000217a8 cmp r0, 0 |
| if (r0 != 0) {
0x000217aa bne.w 0x21ef2 | goto label_146;
| }
0x000217ae ldr r3, [sp, 8] | r3 = var_8h;
0x000217b0 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000217b2 ldr r7, [r3], 4 | r7 = *(r3);
| r3 += 4;
0x000217b6 mov r8, r2 | r8 = r2;
0x000217b8 str r2, [sp, 4] | var_4h = r2;
0x000217ba str r3, [sp, 8] | var_8h = r3;
| label_20:
0x000217bc orrs.w r3, r7, r8 | r3 = r7 | r8;
| if (r3 != r7) {
0x000217c0 bne.w 0x21354 | goto label_18;
| }
| do {
| label_131:
0x000217c4 movs r7, 0 | r7 = 0;
0x000217c6 mov r8, r7 | r8 = r7;
0x000217c8 str r7, [sp, 0x10] | var_10h = r7;
0x000217ca b 0x21354 | goto label_18;
| label_78:
0x000217cc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000217ce str r3, [sp, 0x2c] | var_2ch = r3;
0x000217d0 b.w 0x20cfe | goto label_19;
| label_130:
0x000217d4 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 == 0) {
0x000217d6 cbnz r3, 0x217e8 |
| label_59:
0x000217d8 ldr r3, [sp, 8] | r3 = var_8h;
0x000217da mov.w r8, 0 | r8 = 0;
0x000217de ldr r7, [r3], 4 | r7 = *(r3);
| r3 += 4;
0x000217e2 strd r8, r3, [sp, 4] | __asm ("strd r8, r3, [var_8h]");
0x000217e6 b 0x217bc | goto label_20;
| }
| label_145:
0x000217e8 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000217ea ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x000217ee cmp r2, r3 |
0x000217f0 itt le |
| if (r2 > r3) {
0x000217f2 movle r3, 0 | r3 = 0;
| }
| if (r2 > r3) {
0x000217f4 strle r3, [sp, 4] | var_4h = r3;
| }
0x000217f6 ble 0x217c4 |
| } while (r2 <= r3);
0x000217f8 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x000217fa ldr.w r0, [r2, r3, lsl 2] | offset_3 = r3 << 2;
| r0 = *((r2 + offset_3));
0x000217fe adds r3, 1 | r3++;
0x00021800 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x00021802 movs r3, 0 | r3 = 0;
0x00021804 str r3, [sp, 4] | var_4h = r3;
0x00021806 blx 0x8584 | r0 = fcn_00008584 ();
0x0002180a mov r7, r0 | r7 = r0;
0x0002180c mov r8, r1 | r8 = r1;
0x0002180e b 0x217bc | goto label_20;
| label_118:
0x00021810 movs r3, 0 | r3 = 0;
0x00021812 mov.w sb, 0x45 | sb = 0x45;
0x00021816 add r0, sp, 0x3c | r0 += var_3ch;
0x00021818 str r3, [sp, 0x28] | var_28h = r3;
0x0002181a b 0x213ac | goto label_21;
| label_119:
0x0002181c adds.w r2, r7, r8 | r2 = r7 + r8;
0x00021820 movw r1, 0xcccd |
0x00021824 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00021828 movt r1, 0xcccc | r1 = 0xcccccccd;
0x0002182c umull r3, r0, r1, r2 | r3:r0 = r1 * r2;
0x00021830 mov.w sl, -0x33333334 | sl = -0x33333334;
0x00021834 mov.w ip, 5 |
0x00021838 bic r3, r0, 3 | r3 = BIT_MASK (r0, 3);
0x0002183c add.w r3, r3, r0, lsr 2 | r3 += (r0 >> 2);
0x00021840 subs r2, r2, r3 | r2 -= r3;
0x00021842 subs r3, r7, r2 | r3 = r7 - r2;
0x00021844 mul r0, sl, r3 | r0 = sl * r3;
0x00021848 sbc sb, r8, 0 | __asm ("sbc sb, r8, 0");
0x0002184c umull r3, lr, r3, r1 | r3:lr = r3 * r1;
0x00021850 mla r0, r1, sb, r0 | __asm ("mla r0, r1, sb, r0");
0x00021854 add lr, r0 | lr += r0;
0x00021856 and r0, r3, 1 | r0 = r3 & 1;
0x0002185a umull r0, ip, r0, ip | r0:ip = r0 * ip;
0x0002185e adds r0, r0, r2 | r0 += r2;
0x00021860 lsrs r2, r3, 1 | r2 = r3 >> 1;
0x00021862 cmp r0, 3 |
0x00021864 orr.w r2, r2, lr, lsl 31 | r2 |= (lr << 31);
0x00021868 lsr.w lr, lr, 1 | lr >>= 1;
| if (r0 <= 3) {
0x0002186c bgt 0x218b8 |
0x0002186e mul r3, sl, r2 | r3 = sl * r2;
0x00021872 mov.w ip, -0x66666667 |
0x00021876 mla r3, r1, lr, r3 | __asm ("mla r3, r1, lr, r3");
0x0002187a umull r2, r1, r2, r1 | r2:r1 = r2 * r1;
0x0002187e adds.w r2, r2, 0x33333333 | r2 += 0x33333333;
0x00021882 add r3, r1 | r3 += r1;
0x00021884 lsr.w r1, r2, 1 | r1 = r2 >> 1;
0x00021888 adc r3, r3, 0x33333333 | __asm ("adc r3, r3, aav.0x000000ff");
0x0002188c orr.w r1, r1, r3, lsl 31 | r1 |= (r3 << 31);
0x00021890 lsrs r3, r3, 1 | r3 >>= 1;
0x00021892 orr.w r3, r3, r2, lsl 31 | r3 |= (r2 << 31);
0x00021896 movw r2, 0x9999 |
0x0002189a movt r2, 0x1999 | r2 = 0x19999999;
0x0002189e cmp ip, r1 |
0x000218a0 sbcs r2, r3 | __asm ("sbcs r2, r3");
| if (ip < r1) {
0x000218a2 bhs 0x218b8 |
0x000218a4 ldr.w r3, [pc, 0x688] |
0x000218a8 add r3, pc | r3 = 0x437dc;
0x000218aa add.w r3, r3, r0, lsl 1 | r3 += (r0 << 1);
0x000218ae ldrb.w r2, [r3, 0x211] | r2 = *((r3 + 0x211));
0x000218b2 ldrb.w r3, [r3, 0x210] | r3 = *((r3 + 0x210));
0x000218b6 b 0x218bc |
| }
| } else {
0x000218b8 movs r3, 0x74 | r3 = 0x74;
0x000218ba movs r2, 0x68 | r2 = 0x68;
| }
0x000218bc ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000218be sub.w sl, r1, 2 | sl = r1 - 2;
0x000218c2 strb r2, [r1, -0x1] | *((r1 - 0x1)) = r2;
0x000218c6 strb r3, [r1, -0x2] | *((r1 - 0x2)) = r3;
0x000218ca b 0x213c0 | goto label_22;
| label_121:
0x000218cc ldr r3, [sp] | r3 = *(sp);
0x000218ce movw r2, 0x5556 |
| /* if there is a right shift of 0, then it's a division by 1/3 */
0x000218d2 movt r2, 0x5555 | r2 = 0x55555556;
0x000218d6 subs r3, 1 | r3--;
0x000218d8 smull r1, r2, r2, r3 | r1:r2 = r2 * r3;
0x000218dc sub.w r1, r2, r3, asr 31 | r1 = r2 - (r3 >> 31);
0x000218e0 add.w r2, r1, r1, lsl 1 | r2 = r1 + (r1 << 1);
0x000218e4 sub.w sl, sl, r1 | sl -= r1;
0x000218e8 subs r3, r3, r2 | r3 -= r2;
0x000218ea adds r2, r3, 1 | r2 = r3 + 1;
0x000218ec cmp r1, 0 |
| if (r1 == 0) {
0x000218ee beq.w 0x21426 | goto label_23;
| }
0x000218f2 movs r3, 0 | r3 = 0;
0x000218f4 add.w r7, sl, r1 | r7 = sl + r1;
| label_25:
0x000218f8 ldrb r0, [r7, r3] | r0 = *((r7 + r3));
0x000218fa subs r2, 1 | r2--;
0x000218fc strb.w r0, [sl, r3] | *((sl + r3)) = r0;
| if (r2 != 1) {
0x00021900 bne 0x21922 | goto label_147;
| }
| label_24:
0x00021902 subs r1, 1 | r1--;
0x00021904 add.w r2, sl, r3 | r2 = sl + r3;
0x00021908 strb r6, [r2, 1] | *((r2 + 1)) = r6;
0x0002190a add.w r3, r3, 2 | r3 += 2;
| if (r1 == 1) {
0x0002190e beq.w 0x21426 | goto label_23;
| }
0x00021912 add.w r7, sl, r1 | r7 = sl + r1;
0x00021916 movs r2, 3 | r2 = 3;
0x00021918 ldrb r0, [r7, r3] | r0 = *((r7 + r3));
0x0002191a subs r2, 1 | r2--;
0x0002191c strb.w r0, [sl, r3] | *((sl + r3)) = r0;
| if (r2 == 1) {
0x00021920 beq 0x21902 | goto label_24;
| }
| label_147:
0x00021922 adds r3, 1 | r3++;
0x00021924 b 0x218f8 | goto label_25;
| label_96:
0x00021926 subs r3, r5, 1 | r3 = r5 - 1;
| if (r3 < r5) {
0x00021928 bmi.w 0x210de | goto label_26;
| }
| label_37:
0x0002192c adds r3, 1 | r3++;
0x0002192e add.w r1, sl, r3 | r1 = sl + r3;
| do {
0x00021932 mov r3, r1 | r3 = r1;
0x00021934 ldrb r2, [r1, -0x1]! | r2 = *((r1 -= 0x1));
0x00021938 sub.w r3, r3, sl | r3 -= sl;
0x0002193c and r2, r2, 0xc0 | r2 &= 0xc0;
0x00021940 cmp r2, 0x80 |
0x00021942 it eq |
| if (r2 != 0x80) {
0x00021944 addeq fp, fp, 1 |
| }
0x00021948 cmp r3, 2 |
0x0002194a bpl 0x21932 |
| } while (r3 >= 2);
0x0002194c b.w 0x210de | goto label_26;
| label_93:
0x00021950 mov r5, r6 | r5 = r6;
0x00021952 mov r2, sl | r2 = sl;
0x00021954 cmp r6, 0 |
| if (r6 == 0) {
0x00021956 beq.w 0x210c6 | goto label_27;
| }
0x0002195a ldr r5, [sp, 4] | r5 = var_4h;
0x0002195c b.w 0x21096 | goto label_28;
| label_99:
0x00021960 movw r1, 0xcccd |
0x00021964 ubfx r3, r7, 0, 0xc | r3 = (r7 >> 0) & ((1 << 0xc) - 1);
0x00021968 movt r1, 0xcccc |
0x0002196c cmp r3, 9 |
0x0002196e umull r6, r1, r1, r3 | r6:r1 = r1 * r3;
0x00021972 ldr.w r6, [pc, 0x5c0] | r6 = *(0x00021f34);
0x00021976 add r6, pc | r6 += pc;
0x00021978 lsr.w r1, r1, 3 | r1 >>= 3;
0x0002197c add.w r1, r1, r1, lsl 2 | r1 = 0xcccccccd;
0x00021980 sub.w r1, r3, r1, lsl 1 | r1 = r3 - (r1 << 1);
0x00021984 add.w r1, r6, r1, lsl 3 | r1 = r6 + (r1 << 3);
0x00021988 vldr d16, [r1, 0x248] | __asm ("vldr d16, aav.0x000000ff");
| if (r3 > 9) {
0x0002198c bgt.w 0x2117a | goto label_29;
| }
0x00021990 b.w 0x21188 | goto label_30;
| label_92:
0x00021994 movs r3, 0 | r3 = 0;
0x00021996 add.w sl, sp, 0x3c | sl += var_3ch;
0x0002199a str r3, [sp, 0x28] | var_28h = r3;
0x0002199c b.w 0x21082 | goto label_31;
| label_95:
0x000219a0 adds r5, 1 | r5++;
0x000219a2 mov r2, r5 | r2 = r5;
| label_66:
0x000219a4 add r2, sl | r2 += sl;
0x000219a6 strb.w r8, [sl, r3] | *((sl + r3)) = r8;
0x000219aa b.w 0x210c6 | goto label_27;
| label_122:
0x000219ae adds r1, r3, r2 | r1 = r3 + r2;
0x000219b0 add.w r3, r3, 0x240 | r3 += 0x240;
0x000219b4 add r3, r2 | r3 += r2;
0x000219b6 ldrb.w r2, [r1, 0x240] | r2 = *((r1 + 0x240));
0x000219ba cmp r2, 0 |
| if (r2 == 0) {
0x000219bc beq.w 0x2144c | goto label_32;
| }
| do {
0x000219c0 strb r2, [sl, -0x1]! | *((sl -= 0x1)) = r2;
0x000219c4 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x000219c8 cmp r2, 0 |
0x000219ca bne 0x219c0 |
| } while (r2 != 0);
0x000219cc b 0x2144c | goto label_32;
| label_101:
0x000219ce ubfx r2, r2, 0, 0x14 | r2 = (r2 >> 0) & ((1 << 0x14) - 1);
0x000219d2 orrs r2, r0 | r2 |= r0;
| if (r2 == r0) {
0x000219d4 beq.w 0x2119e | goto label_33;
| }
0x000219d8 ldr.w sl, [pc, 0x55c] |
0x000219dc sub.w r6, fp, 3 | r6 = fp - 3;
0x000219e0 movs r5, 3 | r5 = 3;
0x000219e2 str r1, [sp, 0x28] | var_28h = r1;
0x000219e4 add sl, pc | sl = 0x43920;
0x000219e6 b 0x21676 | goto label_34;
| label_142:
0x000219e8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000219ea movs r2, 0 | r2 = 0;
0x000219ec mov r1, sl | r1 = sl;
0x000219ee blx 0x7e80 | fcn_00007e80 ();
0x000219f2 b 0x216a6 | goto label_12;
| label_138:
0x000219f4 strb.w r3, [sp, 0x3c] | var_3ch = r3;
0x000219f8 movs r5, 1 | r5 = 1;
0x000219fa ldr r3, [sp] | r3 = *(sp);
0x000219fc str r2, [sp, 8] | var_8h = r2;
0x000219fe cmp r3, 1 |
0x00021a00 it le |
| if (r3 <= 1) {
0x00021a02 addle sl, sp, 0x3c | sl += var_3ch;
| goto label_148;
| }
| if (r3 <= 1) {
| label_148:
0x00021a06 ble.w 0x2164e | goto label_35;
| }
| label_140:
0x00021a0a ldr r3, [sp] | r3 = *(sp);
0x00021a0c subs r6, r3, 1 | r6 = r3 - 1;
0x00021a0e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00021a10 sub.w fp, fp, r6 |
0x00021a14 eor r3, r3, 1 | r3 ^= 1;
0x00021a18 cmp.w fp, 1 |
0x00021a1c ite le |
| if (fp > 1) {
0x00021a1e movle r3, 0 | r3 = 0;
| }
| if (fp <= 1) {
0x00021a20 andgt r3, r3, 1 | r3 &= 1;
| }
0x00021a24 cmp r3, 0 |
| if (r3 != 0) {
0x00021a26 bne.w 0x21fa4 | goto label_149;
| }
| label_61:
0x00021a2a ldr r7, [sp, 0x14] | r7 = var_14h;
0x00021a2c add.w sl, sp, 0x3c | sl += var_3ch;
| do {
0x00021a30 mov r2, r5 | r2 = r5;
0x00021a32 mov r1, sl | r1 = sl;
0x00021a34 mov r0, r7 | r0 = r7;
0x00021a36 blx 0x7e80 | fcn_00007e80 ();
0x00021a3a subs r6, 1 | r6--;
0x00021a3c bne 0x21a30 |
| } while (r6 != 1);
0x00021a3e cmp.w fp, 0 |
| if (fp <= 0) {
0x00021a42 ble.w 0x21656 | goto label_36;
| }
| label_141:
0x00021a46 movs r2, 0 | r2 = 0;
0x00021a48 subs r3, r5, 1 | r3 = r5 - 1;
0x00021a4a str r2, [sp, 0x28] | var_28h = r2;
0x00021a4c b 0x2192c | goto label_37;
| label_123:
0x00021a4e ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00021a50 ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x00021a54 cmp r2, r3 |
| if (r2 <= r3) {
0x00021a56 ble.w 0x22016 | goto label_150;
| }
0x00021a5a ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00021a5c ldr.w r0, [r2, r3, lsl 2] | offset_4 = r3 << 2;
| r0 = *((r2 + offset_4));
0x00021a60 adds r3, 1 | r3++;
0x00021a62 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x00021a64 blx 0x8508 | r0 = fcn_00008508 ();
0x00021a68 mov sl, r0 | sl = r0;
0x00021a6a cmp r0, 0 |
| if (r0 == 0) {
0x00021a6c beq.w 0x22066 | goto label_151;
| }
0x00021a70 ldr r7, [sp, 8] | r7 = var_8h;
0x00021a72 movs r3, 0 | r3 = 0;
0x00021a74 str r3, [sp, 0x28] | var_28h = r3;
| label_46:
0x00021a76 ldr r3, [sp] | r3 = *(sp);
0x00021a78 adds r1, r3, 1 | r1 = r3 + 1;
| if (r1 == r3) {
0x00021a7a beq 0x21b7a | goto label_127;
| }
| label_43:
0x00021a7c cmp.w sb, 0 |
| if (sb != 0) {
0x00021a80 bne.w 0x21d46 | goto label_152;
| }
0x00021a84 cmp r3, 0 |
| if (r3 == 0) {
0x00021a86 beq.w 0x220dc | goto label_153;
| }
0x00021a8a ldr r1, [sp] | r1 = *(sp);
0x00021a8c mov r5, sb | r5 = sb;
0x00021a8e add.w r3, sl, -1 | r3 = sl + -1;
0x00021a92 b 0x21a9a |
| while (r2 != 0) {
0x00021a94 adds r5, 1 | r5++;
0x00021a96 cmp r1, r5 |
| if (r1 == r5) {
0x00021a98 beq 0x21aa2 | goto label_154;
| }
0x00021a9a ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x00021a9e cmp r2, 0 |
0x00021aa0 bne 0x21a94 |
| }
| label_154:
0x00021aa2 sub.w r6, fp, r5 | r6 = fp - r5;
0x00021aa6 str r7, [sp, 8] | var_8h = r7;
0x00021aa8 b 0x21676 | goto label_34;
| label_88:
0x00021aaa ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00021aac ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x00021ab0 cmp r2, r3 |
| if (r2 <= r3) {
0x00021ab2 ble.w 0x21bf2 | goto label_89;
| }
0x00021ab6 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00021ab8 ldr.w r0, [r2, r3, lsl 2] | offset_5 = r3 << 2;
| r0 = *((r2 + offset_5));
0x00021abc adds r3, 1 | r3++;
0x00021abe str r3, [r1, 4] | *((r1 + 4)) = r3;
0x00021ac0 blx 0x8508 | r0 = fcn_00008508 ();
0x00021ac4 mov r7, r0 | r7 = r0;
0x00021ac6 b.w 0x20ff6 | goto label_38;
| label_97:
0x00021aca ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00021acc ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x00021ad0 cmp r2, r3 |
| if (r2 <= r3) {
0x00021ad2 ble.w 0x21ee2 | goto label_155;
| }
0x00021ad6 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00021ad8 ldr.w r0, [r2, r3, lsl 2] | offset_6 = r3 << 2;
| r0 = *((r2 + offset_6));
0x00021adc adds r3, 1 | r3++;
0x00021ade str r3, [r1, 4] | *((r1 + 4)) = r3;
0x00021ae0 blx 0x84dc | fcn_000084dc ();
0x00021ae4 vmov.f64 d14, d0 | __asm ("vmov.f64 d14, d0");
0x00021ae8 b.w 0x21106 | goto label_39;
| label_137:
0x00021aec ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00021aee ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x00021af2 cmp r2, r3 |
| if (r2 <= r3) {
0x00021af4 ble.w 0x21f98 | goto label_156;
| }
0x00021af8 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00021afa ldr.w r0, [r2, r3, lsl 2] | offset_7 = r3 << 2;
| r0 = *((r2 + offset_7));
0x00021afe adds r3, 1 | r3++;
0x00021b00 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x00021b02 blx 0x8508 | r0 = fcn_00008508 ();
0x00021b06 mov r3, r0 | r3 = r0;
0x00021b08 cmp r0, 0 |
| if (r0 == 0) {
0x00021b0a beq.w 0x21f98 | goto label_156;
| }
0x00021b0e ldrb r2, [r0] | r2 = *(r0);
0x00021b10 strb.w r2, [sp, 0x3c] | var_3ch = r2;
0x00021b14 and r2, r2, 0xc0 | r2 &= 0xc0;
0x00021b18 cmp r2, 0xc0 |
0x00021b1a itt eq |
| if (r2 != 0xc0) {
0x00021b1c addeq r2, sp, 0x3d | r2 += var_3dh;
| }
| if (r2 == 0xc0) {
0x00021b20 movs r5, 1 | r5 = 1;
| }
| if (r5 == 1) {
0x00021b22 beq 0x21ba2 | goto label_47;
| }
0x00021b24 movs r5, 1 | r5 = 1;
0x00021b26 b 0x21640 | goto label_40;
| label_135:
0x00021b28 mov r2, r1 | r2 = r1;
0x00021b2a ldr r0, [sp, 0x14] | r0 = var_14h;
0x00021b2c mov r1, sl | r1 = sl;
0x00021b2e str r3, [sp, 8] | var_8h = r3;
0x00021b30 blx 0x7e80 | fcn_00007e80 ();
0x00021b34 b 0x216a6 | goto label_12;
| label_132:
0x00021b36 ldr r7, [r6, 8] | r7 = *((r6 + 8));
0x00021b38 cmp r7, 0 |
| if (r7 != 0) {
0x00021b3a bne.w 0x21582 | goto label_41;
| }
0x00021b3e ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x00021b40 cmp r2, 0 |
| if (r2 == 0) {
0x00021b42 beq.w 0x2204a | goto label_157;
| }
0x00021b46 str r5, [sp, 8] | var_8h = r5;
0x00021b48 ldr r1, [pc, 0x3f0] |
0x00021b4a ldr r5, [sp, 0x14] | r5 = var_14h;
0x00021b4c ldr r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x00021b4e add r1, pc | r1 = 0x43a8e;
0x00021b50 mov r0, r5 | r0 = r5;
0x00021b52 blx 0x8614 | fcn_00008614 ();
0x00021b56 mov r2, r7 | r2 = r7;
0x00021b58 mov r1, sl | r1 = sl;
0x00021b5a mov r0, r5 | r0 = r5;
0x00021b5c blx 0x7e80 | fcn_00007e80 ();
0x00021b60 b 0x216a6 | goto label_12;
| label_104:
0x00021b62 vmul.f64 d14, d14, d12 | __asm ("vmul.f64 d14, d14, d12");
0x00021b66 adds r6, 1 | r6++;
0x00021b68 b.w 0x211c8 | goto label_42;
| label_125:
0x00021b6c ldr r3, [sp, 0x18] | r3 = var_18h;
0x00021b6e ldr.w sl, [sp, 0x28] | sl = var_28h;
0x00021b72 str r3, [sp, 0x28] | var_28h = r3;
0x00021b74 ldr r3, [sp] | r3 = *(sp);
0x00021b76 adds r1, r3, 1 | r1 = r3 + 1;
| if (r1 != r3) {
0x00021b78 bne 0x21a7c | goto label_43;
| }
| label_127:
0x00021b7a mov r0, sl | r0 = sl;
0x00021b7c str r7, [sp, 8] | var_8h = r7;
0x00021b7e blx 0x8160 | fcn_00008160 ();
0x00021b82 mov r3, sb | r3 = sb;
0x00021b84 mov r5, r0 | r5 = r0;
0x00021b86 b.w 0x210cc | goto label_44;
| label_106:
0x00021b8a bic.w r3, r6, r6, asr 31 | r3 = BIT_MASK (r6, r6);
0x00021b8e movs r2, 1 | r2 = 1;
0x00021b90 str r2, [sp, 0x20] | var_20h = r2;
0x00021b92 subs r7, r7, r6 | r7 -= r6;
0x00021b94 asrs r2, r3, 0x1f | r2 = r3 >> 0x1f;
0x00021b96 str r6, [sp] | *(sp) = r6;
0x00021b98 b.w 0x211f8 | goto label_45;
| label_126:
0x00021b9c ldr.w sl, [sp, 0x28] | sl = var_28h;
0x00021ba0 b 0x21a76 | goto label_46;
| label_47:
0x00021ba2 ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x00021ba6 and r0, r1, 0xc0 | r0 = r1 & 0xc0;
0x00021baa cmp r0, 0x80 |
| if (r0 != 0x80) {
0x00021bac bne.w 0x21640 | goto label_40;
| }
0x00021bb0 adds r5, 1 | r5++;
0x00021bb2 strb r1, [r2], 1 | *(r2) = r1;
| r2++;
0x00021bb6 cmp r5, 4 |
| if (r5 != 4) {
0x00021bb8 bne 0x21ba2 | goto label_47;
| }
0x00021bba b 0x21640 | goto label_40;
| label_100:
0x00021bbc ubfx r2, r2, 0x14, 0xb | r2 = (r2 >> 0x14) & ((1 << 0xb) - 1);
0x00021bc0 movw r3, 0x5556 |
0x00021bc4 subw r2, r2, 0x3ff | __asm ("subw r2, r2, aav.0x000000ff");
| /* if there is a right shift of 0, then it's a division by 1/3 */
0x00021bc8 movt r3, 0x5555 | r3 = 0x55555556;
0x00021bcc smull r1, r3, r3, r2 | r1:r3 = r3 * r2;
0x00021bd0 sub.w r3, r3, r2, asr 31 | r3 -= (r2 >> 31);
0x00021bd4 add r3, r7 | r3 += r7;
0x00021bd6 cmp r3, 0xe |
| if (r3 <= 0xe) {
0x00021bd8 bgt 0x21bde |
| label_68:
0x00021bda vmla.f64 d16, d14, d13 | __asm ("vmla.f64 d16, d14, d13");
| }
0x00021bde vadd.f64 d14, d14, d16 | __asm ("vadd.f64 d14, d14, d16");
0x00021be2 vmov r0, s28 | __asm ("vmov r0, s28");
0x00021be6 vmov r2, s29 | __asm ("vmov r2, s29");
0x00021bea b.w 0x21190 | goto label_48;
| label_120:
0x00021bee str r2, [sp] | *(sp) = r2;
0x00021bf0 b 0x21420 | goto label_49;
| label_89:
0x00021bf2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00021bf4 cmp r3, 0xa |
0x00021bf6 ldr r3, [sp] | r3 = *(sp);
| if (r3 == 0xa) {
0x00021bf8 beq.w 0x21fc8 | goto label_158;
| }
0x00021bfc cmp r3, 0 |
| if (r3 == 0) {
0x00021bfe beq.w 0x220e6 | goto label_159;
| }
0x00021c02 ldr r7, [pc, 0x33c] |
0x00021c04 movs r3, 0 | r3 = 0;
0x00021c06 str r3, [sp, 4] | var_4h = r3;
0x00021c08 add r7, pc | r7 = 0x43b4e;
0x00021c0a b.w 0x21012 | goto label_50;
| label_102:
0x00021c0e vcmpe.f64 d14, d11 | __asm ("vcmpe.f64 d14, d11");
0x00021c12 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 < 0) {
0x00021c16 blt.w 0x22058 | goto label_160;
| }
0x00021c1a vldr d17, [pc, 0x2f4] | __asm ("vldr d17, aav.0x000000ff");
0x00021c1e movs r6, 0 | r6 = 0;
| do {
0x00021c20 vmov.f64 d18, d17 | __asm ("vmov.f64 d18, d17");
0x00021c24 adds r6, 0x64 | r6 += 0x64;
0x00021c26 vmul.f64 d17, d17, d11 | __asm ("vmul.f64 d17, d17, d11");
0x00021c2a cmp.w r6, 0x15e |
0x00021c2e ite gt |
| if (r6 <= 0x15e) {
0x00021c30 movgt r3, 0 | r3 = 0;
| }
| if (r6 > 0x15e) {
0x00021c32 movle r3, 1 | r3 = 1;
| }
0x00021c34 and r2, r3, 1 | r2 = r3 & 1;
0x00021c38 vcmpe.f64 d17, d14 | __asm ("vcmpe.f64 d17, d14");
0x00021c3c vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00021c40 it hi |
| if (r6 <= 0x15e) {
0x00021c42 movhi r2, 0 | r2 = 0;
| }
0x00021c44 cmp r2, 0 |
0x00021c46 bne 0x21c20 |
| } while (r2 != 0);
0x00021c48 vmul.f64 d17, d18, d9 | __asm ("vmul.f64 d17, d18, d9");
| label_63:
0x00021c4c vcmpe.f64 d14, d17 | __asm ("vcmpe.f64 d14, d17");
0x00021c50 and r2, r3, 1 | r2 = r3 & 1;
0x00021c54 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00021c58 it lt |
| if (r2 >= 0) {
0x00021c5a movlt r2, 0 | r2 = 0;
| }
| if (r2 == 0) {
0x00021c5c cbz r2, 0x21c86 | goto label_161;
| }
| do {
0x00021c5e vmov.f64 d18, d17 | __asm ("vmov.f64 d18, d17");
0x00021c62 adds r6, 0xa | r6 += 0xa;
0x00021c64 vmul.f64 d17, d17, d9 | __asm ("vmul.f64 d17, d17, d9");
0x00021c68 cmp.w r6, 0x15e |
0x00021c6c ite gt |
| if (r6 <= 0x15e) {
0x00021c6e movgt r3, 0 | r3 = 0;
| }
| if (r6 > 0x15e) {
0x00021c70 movle r3, 1 | r3 = 1;
| }
0x00021c72 and r2, r3, 1 | r2 = r3 & 1;
0x00021c76 vcmpe.f64 d17, d14 | __asm ("vcmpe.f64 d17, d14");
0x00021c7a vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00021c7e it hi |
| if (r6 <= 0x15e) {
0x00021c80 movhi r2, 0 | r2 = 0;
| }
0x00021c82 cmp r2, 0 |
0x00021c84 bne 0x21c5e |
| } while (r2 != 0);
| label_161:
0x00021c86 vmov.f64 d19, 1.000000e+01 | __asm ("vmov.f64 d19, 1");
0x00021c8a and r3, r3, 1 | r3 &= 1;
0x00021c8e vmul.f64 d17, d18, d19 | __asm ("vmul.f64 d17, d18, d19");
0x00021c92 vcmpe.f64 d17, d14 | __asm ("vcmpe.f64 d17, d14");
0x00021c96 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00021c9a it hi |
| if (r2 <= 0) {
0x00021c9c movhi r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x00021c9e cbz r3, 0x21cc8 | goto label_162;
| }
| do {
0x00021ca0 vmov.f64 d18, d17 | __asm ("vmov.f64 d18, d17");
0x00021ca4 adds r6, 1 | r6++;
0x00021ca6 vmul.f64 d17, d17, d19 | __asm ("vmul.f64 d17, d17, d19");
0x00021caa vcmpe.f64 d17, d14 | __asm ("vcmpe.f64 d17, d14");
0x00021cae vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00021cb2 ite ls |
| if (r6 > 1) {
0x00021cb4 movls r3, 1 | r3 = 1;
| }
| if (r6 <= 1) {
0x00021cb6 movhi r3, 0 | r3 = 0;
| }
0x00021cb8 cmp.w r6, 0x15e |
0x00021cbc ite gt |
| if (r6 <= 0x15e) {
0x00021cbe movgt r3, 0 | r3 = 0;
| }
| if (r6 > 0x15e) {
0x00021cc0 andle r3, r3, 1 | r3 &= 1;
| }
0x00021cc4 cmp r3, 0 |
0x00021cc6 bne 0x21ca0 |
| } while (r3 != 0);
| label_162:
0x00021cc8 vdiv.f64 d14, d14, d18 | __asm ("vdiv.f64 d14, d14, d18");
0x00021ccc vcmpe.f64 d14, d8 | __asm ("vcmpe.f64 d14, d8");
0x00021cd0 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 >= 0) {
0x00021cd4 bpl 0x21ce6 | goto label_163;
| }
| do {
0x00021cd6 vmul.f64 d14, d14, d10 | __asm ("vmul.f64 d14, d14, d10");
0x00021cda subs r6, 8 | r6 -= 8;
0x00021cdc vcmpe.f64 d14, d8 | __asm ("vcmpe.f64 d14, d8");
0x00021ce0 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00021ce4 bmi 0x21cd6 |
| } while (r6 < 8);
| label_163:
0x00021ce6 vmov.f64 d17, 1.000000e+00 | __asm ("vmov.f64 d17, 1");
0x00021cea vcmpe.f64 d14, d17 | __asm ("vcmpe.f64 d14, d17");
0x00021cee vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r6 >= 8) {
0x00021cf2 bpl 0x21d08 | goto label_164;
| }
0x00021cf4 vmov.f64 d18, 1.000000e+01 | __asm ("vmov.f64 d18, 1");
| do {
0x00021cf8 vmul.f64 d14, d14, d18 | __asm ("vmul.f64 d14, d14, d18");
0x00021cfc subs r6, 1 | r6--;
0x00021cfe vcmpe.f64 d14, d17 | __asm ("vcmpe.f64 d14, d17");
0x00021d02 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00021d06 bmi 0x21cf8 |
| } while (r6 < 1);
| label_164:
0x00021d08 cmp.w r6, 0x15e |
| if (r6 <= 0x15e) {
0x00021d0c ble.w 0x211ac | goto label_51;
| }
0x00021d10 ldr r3, [sp, 4] | r3 = var_4h;
0x00021d12 add.w sl, sp, 0x3c | sl += var_3ch;
0x00021d16 cmp r3, 0 |
0x00021d18 strb.w r3, [sp, 0x3c] | var_3ch = r3;
0x00021d1c ldr r3, [pc, 0x224] |
0x00021d1e ittee ne |
| if (r3 == 0) {
0x00021d20 subne r6, fp, 4 | r6 = fp - 4;
| }
| if (r3 != 0) {
0x00021d24 moveq r5, 4 | r5 = 4;
| }
| if (r3 != 0) {
0x00021d26 subeq r6, fp, 3 | r6 = fp - 3;
| }
| if (r3 == 0) {
0x00021d2a movs r5, 3 | r5 = 3;
| }
0x00021d2c add r3, pc | r3 = 0x43c74;
0x00021d2e ldr r0, [r3] | r0 = *(0x43c74);
0x00021d30 ite ne |
| if (r5 == 3) {
0x00021d32 movne r3, 1 | r3 = 1;
| }
| if (r5 != 3) {
0x00021d34 moveq r3, 0 | r3 = 0;
| }
0x00021d36 str.w r0, [sl, r3] | __asm ("str.w r0, [sl, r3]");
0x00021d3a itete ne |
| if (r5 == 3) {
0x00021d3c movne r3, 0 | r3 = 0;
| }
| if (r5 != 3) {
0x00021d3e ldreq r3, [sp, 4] | r3 = var_4h;
| }
| if (r5 == 3) {
0x00021d40 strne r3, [sp, 0x28] | var_28h = r3;
| }
| if (r5 != 3) {
0x00021d42 streq r3, [sp, 0x28] | var_28h = r3;
| }
0x00021d44 b 0x21676 | goto label_34;
| label_152:
0x00021d46 ldr r3, [sp] | r3 = *(sp);
0x00021d48 subs r1, r3, 1 | r1 = r3 - 1;
0x00021d4a mov r5, r3 | r5 = r3;
| if (r3 == 0) {
0x00021d4c cbz r3, 0x21d82 | goto label_60;
| }
0x00021d4e mov r5, sl | r5 = sl;
0x00021d50 b 0x21d5a |
| while (r3 < 0xbf) {
| label_52:
0x00021d52 subs r1, 1 | r1--;
0x00021d54 mov r5, r2 | r5 = r2;
| if (r1 <= 1) {
0x00021d56 blo.w 0x21f92 | goto label_165;
| }
0x00021d5a ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x00021d5c cbz r3, 0x21d7e | goto label_166;
| }
0x00021d5e cmp r3, 0xbf |
0x00021d60 add.w r2, r5, 1 | r2 = r5 + 1;
0x00021d64 bls 0x21d52 |
| }
0x00021d66 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00021d68 and r3, r3, 0xc0 | r3 &= 0xc0;
0x00021d6c cmp r3, 0x80 |
| if (r3 != 0x80) {
0x00021d6e bne 0x21d52 | goto label_52;
| }
| do {
0x00021d70 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00021d74 and r3, r3, 0xc0 | r3 &= 0xc0;
0x00021d78 cmp r3, 0x80 |
0x00021d7a beq 0x21d70 |
| } while (r3 == 0x80);
0x00021d7c b 0x21d52 | goto label_52;
| label_166:
0x00021d7e sub.w r5, r5, sl | r5 -= sl;
| label_60:
0x00021d82 movs r3, 1 | r3 = 1;
0x00021d84 str r7, [sp, 8] | var_8h = r7;
0x00021d86 b.w 0x210cc | goto label_44;
| label_103:
0x00021d8a bic.w r3, r6, r6, asr 31 | r3 = BIT_MASK (r6, r6);
0x00021d8e str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h]");
0x00021d92 str r6, [sp] | *(sp) = r6;
0x00021d94 asrs r2, r3, 0x1f | r2 = r3 >> 0x1f;
0x00021d96 b.w 0x211f8 | goto label_45;
| label_112:
0x00021d9a ldr r1, [sp, 0x24] | r1 = var_24h;
0x00021d9c cmp r6, 0 |
0x00021d9e ldr r3, [pc, 0x1a8] |
0x00021da0 it lt |
| if (r6 < 0) {
0x00021da2 rsblt r6, r6, 0 | __asm ("rsblt r6, r6, 0");
| }
0x00021da4 add r1, r5 | r1 += r5;
0x00021da6 add r3, pc | r3 = 0x43cf4;
0x00021da8 add.w r1, r3, r1, lsl 1 | r1 = r3 + (r1 << 1);
0x00021dac ldrb.w r1, [r1, 0x188] | r1 = *((r1 + 0x188));
0x00021db0 add r3, r1 | r3 += r1;
0x00021db2 mov r1, r2 | r1 = r2;
0x00021db4 ldrb.w r3, [r3, 0x21c] | r3 = *((r3 + 0x21c));
0x00021db8 strb r3, [r1], 2 | *(r1) = r3;
| r1 += 2;
0x00021dbc ite lt |
| if (r6 >= 0) {
0x00021dbe movlt r3, 0x2d | r3 = 0x2d;
| }
| if (r6 < 0) {
0x00021dc0 movge r3, 0x2b | r3 = 0x2b;
| }
0x00021dc2 cmp r6, 0x63 |
0x00021dc4 strb r3, [r2, 1] | *((r2 + 1)) = r3;
| if (r6 > 0x63) {
0x00021dc6 ble 0x21de2 |
0x00021dc8 movw r3, 0x851f |
| /* if there is a right shift of 5, then it's a division by 1/100 */
0x00021dcc movt r3, 0x51eb | r3 = 0x51eb851f;
0x00021dd0 umull r1, r3, r3, r6 | r1:r3 = r3 * r6;
0x00021dd4 movs r1, 0x64 | r1 = 0x64;
0x00021dd6 lsrs r3, r3, 5 | r3 >>= 5;
0x00021dd8 mls r6, r1, r3, r6 | __asm ("mls r6, r1, r3, r6");
0x00021ddc adds r1, r2, 3 | r1 = r2 + 3;
0x00021dde adds r3, 0x30 | r3 += 0x30;
0x00021de0 strb r3, [r2, 2] | *((r2 + 2)) = r3;
| }
0x00021de2 movw r3, 0xcccd |
0x00021de6 movt r3, 0xcccc | r3 = 0xcccccccd;
0x00021dea umull r2, r3, r3, r6 | r2:r3 = r3 * r6;
0x00021dee mov r2, r1 | r2 = r1;
0x00021df0 lsrs r3, r3, 3 | r3 >>= 3;
0x00021df2 add.w r0, r3, r3, lsl 2 | r0 = r3 + (r3 << 2);
0x00021df6 adds r3, 0x30 | r3 += 0x30;
0x00021df8 strb r3, [r2], 2 | *(r2) = r3;
| r2 += 2;
0x00021dfc sub.w r0, r6, r0, lsl 1 | r0 = r6 - (r0 << 1);
0x00021e00 add.w r3, r0, 0x30 | r3 = r0 + 0x30;
0x00021e04 strb r3, [r1, 1] | *((r1 + 1)) = r3;
0x00021e06 b.w 0x212d0 | goto label_53;
| label_108:
0x00021e0a ldr r3, [sp] | r3 = *(sp);
0x00021e0c subs r1, r0, 1 | r1 = r0 - 1;
0x00021e0e vmov.f64 d17, 1.000000e+01 | __asm ("vmov.f64 d17, 1");
0x00021e12 adds r3, r0, r3 | r3 = r0 + r3;
| do {
0x00021e14 cmp.w r8, 0 |
0x00021e18 it le |
| if (r8 > 0) {
0x00021e1a movle r2, 0x30 | r2 = 0x30;
| }
| if (r8 > 0) {
0x00021e1c ble 0x21e3a |
0x00021e1e vcvt.s32.f64 s15, d14 | __asm ("vcvt.s32.f64 s15, d14");
0x00021e22 add.w r8, r8, -1 | r8 += -1;
0x00021e26 vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x00021e2a vmov r2, s15 | __asm ("vmov r2, s15");
0x00021e2e adds r2, 0x30 | r2 += 0x30;
0x00021e30 uxtb r2, r2 | r2 = (int8_t) r2;
0x00021e32 vsub.f64 d14, d14, d16 | __asm ("vsub.f64 d14, d14, d16");
0x00021e36 vmul.f64 d14, d14, d17 | __asm ("vmul.f64 d14, d14, d17");
| }
0x00021e3a strb r2, [r1, 1]! | *((r1 += 1)) = r2;
0x00021e3e cmp r3, r1 |
0x00021e40 bne 0x21e14 |
| } while (r3 != r1);
0x00021e42 ldr r1, [sp] | r1 = *(sp);
0x00021e44 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00021e46 adds r1, 1 | r1++;
0x00021e48 adds r2, r0, r1 | r2 = r0 + r1;
0x00021e4a cmp r3, 0 |
| if (r3 == 0) {
0x00021e4c beq.w 0x212c8 | goto label_54;
| }
0x00021e50 adds r3, r2, 1 | r3 = r2 + 1;
0x00021e52 movs r2, 0x2e | r2 = 0x2e;
0x00021e54 strb r2, [r0, r1] | *((r0 + r1)) = r2;
0x00021e56 b.w 0x2127e | goto label_55;
| label_109:
0x00021e5a cmp r2, 0 |
| if (r2 != 0) {
0x00021e5c bne.w 0x21268 | goto label_56;
| }
0x00021e60 mov r2, r3 | r2 = r3;
0x00021e62 b.w 0x212c8 | goto label_54;
| label_107:
0x00021e66 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00021e68 bl 0x1bb38 | r0 = fcn_0001bb38 (r0, r1, r2);
0x00021e6c mov sl, r0 | sl = r0;
0x00021e6e cmp r0, 0 |
| if (r0 == 0) {
0x00021e70 beq.w 0x215be | goto label_9;
| }
0x00021e74 str r0, [sp, 0x28] | var_28h = r0;
0x00021e76 b.w 0x21222 | goto label_57;
| label_136:
0x00021e7a ldr r5, [sp, 0x14] | r5 = var_14h;
0x00021e7c ldr r1, [r1] | r1 = *(r1);
0x00021e7e str r3, [sp, 8] | var_8h = r3;
0x00021e80 mov r0, r5 | r0 = r5;
0x00021e82 blx 0x7e80 | fcn_00007e80 ();
0x00021e86 movs r2, 0 | r2 = 0;
0x00021e88 mov r1, sl | r1 = sl;
0x00021e8a mov r0, r5 | r0 = r5;
0x00021e8c blx 0x7e80 | fcn_00007e80 ();
0x00021e90 b 0x216a6 | goto label_12;
| label_133:
0x00021e92 str r5, [sp, 8] | var_8h = r5;
0x00021e94 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00021e96 mov r0, r5 | r0 = r5;
0x00021e98 blx 0x85c0 | fcn_000085c0 ();
0x00021e9c mov r2, sb | r2 = sb;
0x00021e9e mov r1, sl | r1 = sl;
0x00021ea0 mov r0, r5 | r0 = r5;
0x00021ea2 blx 0x7e80 | fcn_00007e80 ();
0x00021ea6 b.w 0x216a6 | goto label_12;
| label_124:
0x00021eaa ldr.w sl, [pc, 0xa0] | sl = *(0x00021f4c);
0x00021eae add sl, pc | sl += pc;
0x00021eb0 b 0x21a76 | goto label_46;
| label_111:
0x00021eb2 ldrb r1, [r2, -0x1] | r1 = *((r2 - 0x1));
0x00021eb6 cmp r1, 0x30 |
| if (r1 != 0x30) {
0x00021eb8 bne 0x21eca | goto label_167;
| }
0x00021eba subs r3, r2, 1 | r3 = r2 - 1;
0x00021ebc movs r0, 0 | r0 = 0;
| do {
0x00021ebe mov r2, r3 | r2 = r3;
0x00021ec0 strb r0, [r3] | *(r3) = r0;
0x00021ec2 ldrb r1, [r3, -0x1]! | r1 = *((r3 -= 0x1));
0x00021ec6 cmp r1, 0x30 |
0x00021ec8 beq 0x21ebe |
| } while (r1 == 0x30);
| label_167:
0x00021eca cmp r1, 0x2e |
| if (r1 != 0x2e) {
0x00021ecc bne.w 0x212c8 | goto label_54;
| }
0x00021ed0 cmp.w sb, 0 |
| if (sb == 0) {
0x00021ed4 beq.w 0x220a8 | goto label_168;
| }
0x00021ed8 movs r3, 0x30 | r3 = 0x30;
0x00021eda strb r3, [r2], 1 | *(r2) = r3;
| r2++;
0x00021ede b.w 0x212c8 | goto label_54;
| label_155:
0x00021ee2 ldr r3, [sp] | r3 = *(sp);
0x00021ee4 adds r3, 1 | r3++;
| if (r3 == 1) {
0x00021ee6 beq.w 0x22072 | goto label_169;
| }
0x00021eea vmov.i64 d14, 0 | __asm ("vmov.i64 d14, 0");
0x00021eee b.w 0x21112 | goto label_58;
| label_146:
0x00021ef2 cmp r0, 2 |
| if (r0 != 2) {
0x00021ef4 bne.w 0x217d8 | goto label_59;
| }
0x00021ef8 ldr r3, [sp, 8] | r3 = var_8h;
0x00021efa ldr r2, [sp, 0x18] | r2 = var_18h;
0x00021efc adds r3, 7 | r3 += 7;
0x00021efe bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00021f02 str r2, [sp, 4] | var_4h = r2;
0x00021f04 ldr.w r8, [r3, 4] | r8 = *((r3 + 4));
0x00021f08 ldr r7, [r3], 8 | r7 = *(r3);
| r3 += 8;
0x00021f0c str r3, [sp, 8] | var_8h = r3;
0x00021f0e b 0x217bc | goto label_20;
| label_117:
0x00021f50 cmp r0, 2 |
| if (r0 != 2) {
0x00021f52 bne.w 0x21336 | goto label_5;
| }
0x00021f56 ldr r3, [sp, 8] | r3 = var_8h;
0x00021f58 adds r3, 7 | r3 += 7;
0x00021f5a bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00021f5e ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00021f60 ldr r7, [r3], 8 | r7 = *(r3);
| r3 += 8;
0x00021f64 str r3, [sp, 8] | var_8h = r3;
0x00021f66 b.w 0x21340 | goto label_6;
| label_139:
0x00021f6a cmp.w r3, 0x10000 |
0x00021f6e and r1, r1, 0x3f | r1 &= 0x3f;
0x00021f72 orr r1, r1, 0x80 | r1 |= 0x80;
0x00021f76 ubfx r0, r3, 0xc, 8 | r0 = (r3 >> 0xc) & ((1 << 8) - 1);
| if (r3 >= 0x10000) {
0x00021f7a bhs 0x22024 | goto label_170;
| }
0x00021f7c subs r0, 0x20 | r0 -= 0x20;
0x00021f7e strb.w r5, [sp, 0x3e] | var_3eh = r5;
0x00021f82 strb.w r1, [sp, 0x3d] | var_3dh = r1;
0x00021f86 movs r5, 3 | r5 = 3;
0x00021f88 strb.w r0, [sp, 0x3c] | var_3ch = r0;
0x00021f8c str r2, [sp, 8] | var_8h = r2;
0x00021f8e b.w 0x21640 | goto label_40;
| label_165:
0x00021f92 sub.w r5, r2, sl | r5 = r2 - sl;
0x00021f96 b 0x21d82 | goto label_60;
| label_156:
0x00021f98 movs r3, 0 | r3 = 0;
0x00021f9a movs r5, 1 | r5 = 1;
0x00021f9c strb.w r3, [sp, 0x3c] | var_3ch = r3;
0x00021fa0 b.w 0x21640 | goto label_40;
| label_149:
0x00021fa4 add.w r1, fp, -1 | r1 = fp + -1;
0x00021fa8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00021faa movs r2, 0x20 | r2 = 0x20;
0x00021fac mov.w fp, 0 |
0x00021fb0 blx 0x8664 | fcn_00008664 ();
0x00021fb4 b 0x21a2a | goto label_61;
| label_105:
0x00021fb6 movs r3, 0 | r3 = 0;
0x00021fb8 movs r1, 2 | r1 = 2;
0x00021fba mov r2, r3 | r2 = r3;
0x00021fbc str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h]");
0x00021fc0 str r1, [sp, 0x20] | var_20h = r1;
0x00021fc2 str r3, [sp] | *(sp) = r3;
0x00021fc4 b.w 0x211f8 | goto label_45;
| label_158:
0x00021fc8 cmp r3, 0 |
| if (r3 == 0) {
0x00021fca beq.w 0x220e6 | goto label_159;
| }
0x00021fce ldr r7, [pc, 0x148] |
0x00021fd0 movs r3, 0 | r3 = 0;
0x00021fd2 str r3, [sp, 4] | var_4h = r3;
0x00021fd4 add r7, pc | r7 = 0x440f2;
0x00021fd6 b.w 0x21012 | goto label_50;
| label_113:
0x00021fda cmp fp, r6 |
0x00021fdc itt ge |
| if (fp < r6) {
0x00021fde addge r1, fp, 1 | r1 += arg_1h;
| }
| if (fp >= r6) {
0x00021fe2 add r1, sl | r1 += sl;
| }
| if (fp < r6) {
0x00021fe4 blt 0x21ff4 | goto label_171;
| }
| do {
0x00021fe6 ldrb r3, [r2] | r3 = *(r2);
0x00021fe8 cmp sl, r2 |
0x00021fea add.w r2, r2, -1 | r2 += -1;
0x00021fee strb r3, [r1, -0x1]! | *((r1 -= 0x1)) = r3;
0x00021ff2 bne 0x21fe6 |
| } while (sl != r2);
| label_171:
0x00021ff4 ldr r3, [sp, 4] | r3 = var_4h;
0x00021ff6 mov r2, r6 | r2 = r6;
0x00021ff8 movs r1, 0x30 | r1 = 0x30;
0x00021ffa cmp r3, 0 |
0x00021ffc ite eq |
| if (r3 != 0) {
0x00021ffe moveq r0, sl | r0 = sl;
| }
| if (r3 == 0) {
0x00022000 addne r0, sl, 1 | r0 = sl + 1;
| }
0x00022004 blx 0x8264 | fcn_00008264 ();
| label_69:
0x00022008 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0002200a mov r2, fp | r2 = fp;
0x0002200c mov r1, sl | r1 = sl;
0x0002200e blx 0x7e80 | fcn_00007e80 ();
0x00022012 b.w 0x2169a | goto label_62;
| label_150:
0x00022016 ldr.w sl, [pc, 0x104] |
0x0002201a movs r3, 0 | r3 = 0;
0x0002201c ldr r7, [sp, 8] | r7 = var_8h;
0x0002201e str r3, [sp, 0x28] | var_28h = r3;
0x00022020 add sl, pc | sl = 0x44142;
0x00022022 b 0x21a76 | goto label_46;
| label_170:
0x00022024 ubfx r3, r3, 0x12, 3 | r3 = (r3 >> 0x12) & ((1 << 3) - 1);
0x00022028 and r0, r0, 0x3f | r0 &= 0x3f;
0x0002202c subs r3, 0x10 | r3 -= 0x10;
0x0002202e strb.w r5, [sp, 0x3f] | var_3fh = r5;
0x00022032 strb.w r3, [sp, 0x3c] | var_3ch = r3;
0x00022036 sub.w r3, r0, 0x80 | r3 = r0 - 0x80;
0x0002203a movs r5, 4 | r5 = 4;
0x0002203c strb.w r1, [sp, 0x3e] | var_3eh = r1;
0x00022040 strb.w r3, [sp, 0x3d] | var_3dh = r3;
0x00022044 str r2, [sp, 8] | var_8h = r2;
0x00022046 b.w 0x21640 | goto label_40;
| label_157:
0x0002204a ldr r0, [sp, 0x14] | r0 = var_14h;
0x0002204c mov r1, sl | r1 = sl;
0x0002204e str r5, [sp, 8] | var_8h = r5;
0x00022050 blx 0x7e80 | fcn_00007e80 ();
0x00022054 b.w 0x216a6 | goto label_12;
| label_160:
0x00022058 vldr d17, [pc, 0xa4] | __asm ("vldr d17, aav.0x000000ff");
0x0002205c movs r3, 1 | r3 = 1;
0x0002205e vmov.f64 d18, 1.000000e+00 | __asm ("vmov.f64 d18, 1");
0x00022062 movs r6, 0 | r6 = 0;
0x00022064 b 0x21c4c | goto label_63;
| label_151:
0x00022066 ldr.w sl, [pc, 0xb8] | sl = *(0x00022120);
0x0002206a ldr r7, [sp, 8] | r7 = var_8h;
0x0002206c str r0, [sp, 0x28] | var_28h = r0;
0x0002206e add sl, pc | sl += pc;
0x00022070 b 0x21a76 | goto label_46;
| label_169:
0x00022072 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00022074 cmp r3, 3 |
| if (r3 == 3) {
0x00022076 bne 0x220b2 |
0x00022078 vldr d16, [pc, 0x8c] | __asm ("vldr d16, aav.0x000000ff");
0x0002207c movs r7, 5 | r7 = 5;
0x0002207e vmov.i64 d14, 0 | __asm ("vmov.i64 d14, 0");
0x00022082 movs r6, 0 | r6 = 0;
0x00022084 b.w 0x211b4 | goto label_64;
| label_110:
0x00022088 mov r2, r3 | r2 = r3;
0x0002208a b.w 0x212be | goto label_65;
| label_90:
0x0002208e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00022090 cmp r3, 0xa |
| if (r3 != 0xa) {
0x00022092 bne 0x220ce | goto label_172;
| }
0x00022094 ldr r3, [sp] | r3 = *(sp);
0x00022096 movs r2, 2 | r2 = 2;
0x00022098 add.w sl, sp, 0x3c | sl += var_3ch;
0x0002209c mov r5, r2 | r5 = r2;
0x0002209e strb.w r8, [sp, 0x3c] | var_3ch = r8;
0x000220a2 str r3, [sp, 0x28] | var_28h = r3;
0x000220a4 movs r3, 1 | r3 = 1;
0x000220a6 b 0x219a4 | goto label_66;
| label_168:
0x000220a8 strb sb, [r2, -0x1] | *((r2 - 0x1)) = sb;
0x000220ac subs r2, 1 | r2--;
0x000220ae b.w 0x212c8 | goto label_54;
| }
0x000220b2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000220b4 movs r7, 6 | r7 = 6;
0x000220b6 vldr d16, [pc, 0x58] | __asm ("vldr d16, aav.0x000000ff");
0x000220ba vmov.i64 d14, 0 | __asm ("vmov.i64 d14, 0");
0x000220be cmp r3, 1 |
| if (r3 != 1) {
0x000220c0 bne.w 0x211aa | goto label_67;
| }
0x000220c4 b 0x21bda | goto label_68;
| label_94:
0x000220c6 movs r2, 2 | r2 = 2;
0x000220c8 movs r3, 1 | r3 = 1;
0x000220ca mov r5, r2 | r5 = r2;
0x000220cc b 0x219a4 | goto label_66;
| label_172:
0x000220ce ldr r5, [sp] | r5 = *(sp);
0x000220d0 add.w sl, sp, 0x3c | sl += var_3ch;
0x000220d4 mov r2, sl | r2 = sl;
0x000220d6 str r5, [sp, 0x28] | var_28h = r5;
0x000220d8 b.w 0x210c6 | goto label_27;
| label_153:
0x000220dc mov r6, fp | r6 = fp;
0x000220de mov r5, r3 | r5 = r3;
0x000220e0 str r7, [sp, 8] | var_8h = r7;
0x000220e2 b.w 0x21676 | goto label_34;
| label_159:
0x000220e6 add.w sl, sp, 0x3c | sl += var_3ch;
0x000220ea mov r5, r3 | r5 = r3;
0x000220ec mov r2, sl | r2 = sl;
0x000220ee str r3, [sp, 0x28] | var_28h = r3;
0x000220f0 b.w 0x210c6 | goto label_27;
| label_134:
0x000220f4 blx 0x7e8c | fcn_00007e8c ();
| label_114:
0x000220f8 mov fp, r5 |
0x000220fa b 0x22008 | goto label_69;
| do {
| label_70:
0x0002fdaa ldr r4, [sp, 0x24] | r4 = var_24h;
| if (r4 != 0) {
0x0002fdac cbz r4, 0x2fdc4 |
0x0002fdae ldr r3, [sp, 0x30] | r3 = var_30h;
0x0002fdb0 movs r2, 0 | r2 = 0;
0x0002fdb2 strb r2, [r4, r3] | *((r4 + r3)) = r2;
0x0002fdb4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x0002fdb6 cbz r3, 0x2fdc2 |
0x0002fdb8 ldrb.w r3, [sp, 0x35] | r3 = var_35h;
0x0002fdbc lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x0002fdbe bpl.w 0x3002c | goto label_173;
| }
| }
0x0002fdc2 ldr r4, [sp, 0x24] | r4 = var_24h;
| }
0x0002fdc4 ldrd r1, r2, [r7, 0x6c] | __asm ("ldrd r1, r2, [r7, 0x6c]");
0x0002fdc8 ldr.w r3, [r6, 0xd4] | r3 = *((r6 + 0xd4));
0x0002fdcc cmp r1, r2 |
| if (r1 >= r2) {
0x0002fdce bge.w 0x2ffc2 | goto label_174;
| }
0x0002fdd2 adds r2, r1, 1 | r2 = r1 + 1;
0x0002fdd4 ldr r5, [r7, 0x68] | r5 = *((r7 + 0x68));
0x0002fdd6 str r2, [r7, 0x6c] | *((r7 + 0x6c)) = r2;
0x0002fdd8 add.w r2, r1, r1, lsl 2 | r2 = r1 + (r1 << 2);
0x0002fddc movs r6, 0 | r6 = 0;
0x0002fdde lsls r2, r2, 2 | r2 <<= 2;
0x0002fde0 mov.w ip, 0xb2 |
0x0002fde4 adds r0, r5, r2 | r0 = r5 + r2;
0x0002fde6 strd r1, r3, [r0, 4] | __asm ("strd r1, r3, [r0, 4]");
0x0002fdea strd r6, r6, [r0, 0xc] | __asm ("strd r6, r6, [r0, 0xc]");
0x0002fdee str.w ip, [r5, r2] | __asm ("str.w ip, [r5, r2]");
| label_75:
0x0002fdf2 mvn r3, 6 | r3 = ~6;
0x0002fdf6 mov r2, r4 | r2 = r4;
0x0002fdf8 mov r0, r7 | r0 = r7;
0x0002fdfa bl 0x1be48 | fcn_0001be48 (r0, r1, r2);
0x0002fdfe ldr r2, [pc, 0x258] |
0x0002fe00 ldr r3, [pc, 0x24c] | r3 = *(0x30050);
0x0002fe02 add r2, pc | r2 = 0x5fe60;
0x0002fe04 ldr r3, [r2, r3] | r3 = *(0x5fe60);
0x0002fe06 ldr r2, [r3] | r2 = *(0x5fe60);
0x0002fe08 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0002fe0a eors r2, r3 | r2 ^= r3;
0x0002fe0c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002fe10 bne.w 0x30048 | goto label_175;
| }
0x0002fe14 add sp, 0xa4 |
0x0002fe16 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0002fefe ldr.w r8, [r5, 0x20] | r8 = *((r5 + 0x20));
0x0002ff02 ldrh.w sl, [r5, 0x2a] | sl = *((r5 + 0x2a));
0x0002ff06 cmp.w sb, 0 |
| if (sb != 0) {
0x0002ff0a bne 0x2ff3e | goto label_176;
| }
0x0002ff0c ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0002ff0e tst.w r3, 0x30 |
0x0002ff12 beq.w 0x2fdaa |
| } while ((r3 & 0x30) == 0);
0x0002ff16 ldr r1, [pc, 0x168] |
0x0002ff18 movs r2, 2 | r2 = 2;
0x0002ff1a mov r0, fp | r0 = fp;
0x0002ff1c add r1, pc | r1 = 0x5ffa2;
0x0002ff1e blx 0x7e80 | fcn_00007e80 ();
| label_71:
0x0002ff22 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x0002ff24 lsls r0, r3, 0x1a | r0 = r3 << 0x1a;
0x0002ff26 it pl |
| if (r0 < r3) {
0x0002ff28 movpl r2, sb | r2 = sb;
| }
| if (r0 < r3) {
0x0002ff2a bmi 0x30004 | goto label_177;
| }
0x0002ff2c lsls r1, r3, 0x1b | r1 = r3 << 0x1b;
| if (r1 < r3) {
0x0002ff2e bmi 0x2ffee | goto label_178;
| }
0x0002ff30 ldr r1, [pc, 0x150] |
0x0002ff32 movs r2, 1 | r2 = 1;
0x0002ff34 mov r0, fp | r0 = fp;
0x0002ff36 add r1, pc | r1 = 0x5ffbe;
0x0002ff38 blx 0x7e80 | fcn_00007e80 ();
0x0002ff3c b 0x2fdaa | goto label_70;
| label_176:
0x0002ff3e ldr r3, [pc, 0x148] |
0x0002ff40 mov r0, fp | r0 = fp;
0x0002ff42 ldr r1, [pc, 0x148] |
0x0002ff44 movs r2, 2 | r2 = 2;
0x0002ff46 movs r4, 0 | r4 = 0;
0x0002ff48 add r3, pc | r3 = 0x5ffd6;
0x0002ff4a str r3, [sp, 0xc] | var_ch = r3;
0x0002ff4c add r1, pc | r1 = 0x5ffde;
0x0002ff4e ldr r3, [pc, 0x140] |
0x0002ff50 add r3, pc | r3 = 0x5ffe6;
0x0002ff52 str r3, [sp, 0x10] | var_10h = r3;
0x0002ff54 ldr r3, [pc, 0x13c] |
0x0002ff56 add r3, pc | r3 = 0x5ffee;
0x0002ff58 str r3, [sp, 0x14] | var_14h = r3;
0x0002ff5a blx 0x7e80 | fcn_00007e80 ();
0x0002ff5e str r6, [sp, 0x1c] | var_1ch = r6;
0x0002ff60 ldr r6, [sp, 0x14] | r6 = var_14h;
0x0002ff62 str r7, [sp, 0x18] | var_18h = r7;
0x0002ff64 mov r7, r8 | r7 = r8;
0x0002ff66 mov r8, fp | r8 = fp;
0x0002ff68 mov fp, r5 |
| do {
0x0002ff6a ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x0002ff6c ldrsh.w r2, [r2, r4, lsl 1] | offset_8 = r4 << 1;
| r2 = *((r2 + offset_8));
0x0002ff70 adds r3, r2, 2 | r3 = r2 + 2;
| if (r3 == r2) {
0x0002ff72 beq 0x2ffba | goto label_179;
| }
0x0002ff74 adds r5, r2, 1 | r5 = r2 + 1;
| if (r5 == r2) {
0x0002ff76 beq 0x2ffbe | goto label_180;
| }
0x0002ff78 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x0002ff7a add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x0002ff7e ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x0002ff80 ldr.w r5, [r1, r2, lsl 2] | offset_9 = r2 << 2;
| r5 = *((r1 + offset_9));
| if (r4 != 0) {
| label_74:
0x0002ff84 cbnz r4, 0x2ffae | goto label_181;
| }
| label_73:
0x0002ff86 cmp r4, sl |
| if (r4 >= sl) {
0x0002ff88 bge 0x2ffa8 | goto label_182;
| }
0x0002ff8a ldr r1, [pc, 0x10c] |
0x0002ff8c add r1, pc | r1 = 0x6002a;
| label_72:
0x0002ff8e mov r2, r5 | r2 = r5;
0x0002ff90 adds r4, 1 | r4++;
0x0002ff92 mov r0, r8 | r0 = r8;
0x0002ff94 blx 0x8614 | fcn_00008614 ();
0x0002ff98 cmp r4, sb |
0x0002ff9a bne 0x2ff6a |
| } while (r4 != sb);
0x0002ff9c mov r5, fp | r5 = fp;
0x0002ff9e ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x0002ffa0 mov fp, r8 |
0x0002ffa2 mov r8, r7 | r8 = r7;
0x0002ffa4 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0002ffa6 b 0x2ff22 | goto label_71;
| label_182:
0x0002ffa8 ldr r1, [pc, 0xf0] |
0x0002ffaa add r1, pc | r1 = 0x6004a;
0x0002ffac b 0x2ff8e | goto label_72;
| label_181:
0x0002ffae movs r2, 5 | r2 = 5;
0x0002ffb0 mov r1, r6 | r1 = r6;
0x0002ffb2 mov r0, r8 | r0 = r8;
0x0002ffb4 blx 0x7e80 | fcn_00007e80 ();
0x0002ffb8 b 0x2ff86 | goto label_73;
| label_179:
0x0002ffba ldr r5, [sp, 0xc] | r5 = var_ch;
0x0002ffbc b 0x2ff84 | goto label_74;
| label_180:
0x0002ffbe ldr r5, [sp, 0x10] | r5 = var_10h;
0x0002ffc0 b 0x2ff84 | goto label_74;
| label_174:
0x0002ffc2 movs r0, 0 | r0 = 0;
0x0002ffc4 mov r2, r1 | r2 = r1;
0x0002ffc6 str r0, [sp] | *(sp) = r0;
0x0002ffc8 movs r1, 0xb2 | r1 = 0xb2;
0x0002ffca mov r0, r7 | r0 = r7;
0x0002ffcc bl 0x2add4 | r0 = fcn_0002add4 (r0, r1, r2, r3, r4);
0x0002ffd0 mov r1, r0 | r1 = r0;
0x0002ffd2 b 0x2fdf2 | goto label_75;
| label_178:
0x0002ffee ldr r4, [pc, 0xb8] |
0x0002fff0 mov r3, sb | r3 = sb;
0x0002fff2 str r2, [sp] | *(sp) = r2;
0x0002fff4 mov r1, r8 | r1 = r8;
0x0002fff6 ldrh r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x0002fff8 mov r0, fp | r0 = fp;
0x0002fffa add r4, pc | r4 = 0x600a8;
0x0002fffc str r4, [sp, 4] | var_4h = r4;
0x0002fffe smc 0 | __asm ("smc 0");
0x00030000 strh r5, [r1, 6] | *((r1 + 6)) = r5;
0x00030002 strh r0, [r4, 0xe] | *((r4 + 0xe)) = r0;
| label_177:
0x00030004 bvc.w 0x65178 | __asm ("bvc.w aav.0x000000ff");
0x00030008 strb.w sb, [r0] | *(r0) = sb;
0x0003000c movs r1, r0 | r1 = r0;
0x0003000e add r3, pc | r3 += pc;
0x00030010 movs r0, r0 |
0x00030012 movs r0, r0 |
0x00030014 movs r0, r0 |
0x00030016 movs r0, r0 |
0x00030018 movs r6, r0 | r6 = r0;
0x0003001a movs r0, r0 |
0x0003001c movs r0, r0 |
0x0003001e lsls r0, r0, 0xc | r0 <<= 0xc;
| label_173:
0x0003002c movs r0, r0 |
0x0003002e movs r0, r0 |
0x00030030 movs r4, r0 | r4 = r0;
0x00030032 mov r4, r0 | r4 = r0;
0x00030034 invalid |
| label_175:
0x00030048 movs r7, r0 | r7 = r0;
0x0003004a vhadd.s32 d0, d0, d2 | __asm ("vhadd.s32 d0, d0, d2");
0x0003004e movs r0, r0 |
0x00030050 lsls r6, r2, 4 | r6 = r2 << 4;
0x00030052 movs r0, r0 |
0x00030054 lsls r5, r0, 4 | r5 = r0 << 4;
0x00030056 movs r7, r0 | r7 = r0;
0x00030058 movs r1, r0 | r1 = r0;
0x0003fd7a mov r4, r0 | r4 = r0;
0x0003fd7c ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x0003fd7e mov r5, r1 | r5 = r1;
0x0003fd80 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0003fd82 ldr r6, [r4] | r6 = *(r4);
| if (r0 != 0) {
0x0003fd84 cbz r0, 0x3fd90 |
0x0003fd86 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0003fd88 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0003fd8a blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x0003fd8c movs r3, 0 | r3 = 0;
0x0003fd8e str r3, [r4, 8] | *((r4 + 8)) = r3;
| }
0x0003fd90 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0003fd92 blx 0x84f8 | fcn_000084f8 ();
0x0003fd96 cmp r5, 1 |
0x0003fd98 mov.w r3, 0 | r3 = 0;
0x0003fd9c it ne |
| if (r5 == 1) {
0x0003fd9e movne r0, 1 | r0 = 1;
| }
0x0003fda0 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x0003fda2 strd r3, r3, [r4, 0x10] | __asm ("strd r3, r3, [r4, 0x10]");
0x0003fda6 strd r3, r3, [r4, 0x18] | __asm ("strd r3, r3, [r4, 0x18]");
0x0003fdaa str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0003fdac str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x0003fdae beq 0x3fdb2 |
| while (r0 != 0) {
0x0003fdb0 pop {r3, r4, r5, r6, r7, pc} |
0x0003fdb2 ldr r0, [r7] | r0 = *(r7);
0x0003fdb4 blx 0x8508 | r0 = fcn_00008508 ();
0x0003fdb8 mov r1, r0 | r1 = r0;
0x0003fdba ldr r0, [r7] | r0 = *(r7);
0x0003fdbc mov r7, r1 | r7 = r1;
0x0003fdbe blx 0x8448 | r0 = fcn_00008448 ();
0x0003fdc2 mov r5, r0 | r5 = r0;
0x0003fdc4 adds r0, 1 | r0++;
0x0003fdc6 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x0003fdc8 blx 0x7f18 | r0 = fcn_00007f18 ();
0x0003fdcc mov r3, r0 | r3 = r0;
0x0003fdce str r0, [r4, 4] | *((r4 + 4)) = r0;
| if (r0 == 0) {
0x0003fdd0 cbz r0, 0x3fe0a | goto label_183;
| }
0x0003fdd2 cmp r5, 0 |
| if (r5 > 0) {
0x0003fdd4 bgt 0x3fdfe | goto label_184;
| }
| label_77:
0x0003fdd6 movs r2, 0 | r2 = 0;
0x0003fdd8 strb r2, [r3, r5] | *((r3 + r5)) = r2;
0x0003fdda mov r2, r5 | r2 = r5;
0x0003fddc ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x0003fdde add.w r3, r4, 8 | r3 = r4 + 8;
0x0003fde2 ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0003fde4 ldr r5, [r1, 0xc] | r5 = *((r1 + 0xc));
0x0003fde6 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0003fde8 blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0003fdea cmp r0, 0 |
0x0003fdec bne 0x3fdb0 |
| }
0x0003fdee ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0003fdf0 mov r0, r4 | r0 = r4;
0x0003fdf2 ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x0003fdf4 str r2, [r3] | *(r3) = r2;
0x0003fdf6 pop.w {r3, r4, r5, r6, r7, lr} |
0x0003fdfa b.w 0xe220 | goto label_76;
| label_184:
0x0003fdfe mov r1, r7 | r1 = r7;
0x0003fe00 mov r2, r5 | r2 = r5;
0x0003fe02 blx 0x7dcc | fcn_00007dcc ();
0x0003fe06 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0003fe08 b 0x3fdd6 | goto label_77;
| label_183:
0x0003fe0a movs r0, 7 | r0 = 7;
0x0003fe0c 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/libsqlite3.so.0.8.6 @ 0x2d7e0 */
| #include <stdint.h>
|
; (fcn) sym.sqlite3_vtab_collation () | uint32_t sqlite3_vtab_collation (int16_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002d7e0 cmp r1, 0 |
| if (r1 >= 0) {
0x0002d7e2 blt 0x2d830 |
0x0002d7e4 push {r3, lr} |
0x0002d7e6 ldr r3, [r0] | r3 = *(r0);
0x0002d7e8 cmp r3, r1 |
0x0002d7ea it le |
| if (r3 > r1) {
0x0002d7ec movle r0, 0 | r0 = 0;
| }
| if (r3 > r1) {
0x0002d7ee ble 0x2d824 |
0x0002d7f0 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002d7f2 add.w r1, r1, r1, lsl 1 | r1 += (r1 << 1);
0x0002d7f4 lsls r1, r0, 5 | r1 = r0 << 5;
0x0002d7f6 ldr r2, [r0, 0x48] | r2 = *((r0 + 0x48));
0x0002d7f8 add.w r3, r3, r1, lsl 2 | r3 += (r1 << 2);
0x0002d7fc ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x0002d7fe ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0002d800 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0002d804 lsls r3, r3, 4 | r3 <<= 4;
0x0002d806 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002d808 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
| if (r1 == 0) {
0x0002d80a cbz r1, 0x2d826 | goto label_0;
| }
0x0002d80c ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0002d80e ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0002d810 ldr r0, [r0, 0x4c] | r0 = *((r0 + 0x4c));
0x0002d812 lsls r2, r2, 0x16 | r2 <<= 0x16;
0x0002d814 itet mi |
| if (r2 >= r2) {
0x0002d816 movmi r2, r1 | r2 = r1;
| }
| if (r2 < r2) {
0x0002d818 movpl r2, r3 | r2 = r3;
| }
| if (r2 >= r2) {
0x0002d81a movmi r1, r3 | r1 = r3;
| }
0x0002d81c bl 0x2d56c | r0 = fcn_0002d56c (r0, r1, r2);
| if (r0 == 0) {
0x0002d820 cbz r0, 0x2d826 | goto label_0;
| }
0x0002d822 ldr r0, [r0] | r0 = *(r0);
| }
0x0002d824 pop {r3, pc} |
| label_0:
0x0002d826 ldr r0, [pc, 0xc] |
0x0002d828 add r0, pc |
0x0002d82a add.w r0, r0, 0x358 | r0 = 0x5b3ba;
0x0002d82e pop {r3, pc} |
| }
0x0002d830 movs r0, 0 | r0 = 0;
0x0002d832 bx lr | return r0;
| }
[*] Function mmap used 1 times libsqlite3.so.0.8.6