[*] Binary protection state of kmod
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function system tear down of kmod
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/kmod @ 0x2c84 */
| #include <stdint.h>
|
; (fcn) fcn.00002c84 () | void fcn_00002c84 (int16_t arg1) {
| int16_t var_0h;
| int32_t var_0h_2;
| 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;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
0x00002c84 ldr r1, [pc, 0x3d0] |
0x00002c86 movs r3, 0 | r3 = 0;
0x00002c88 ldr r2, [pc, 0x3d0] | r2 = *(0x305c);
0x00002c8a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00002c8e sub sp, 0x2c |
0x00002c90 add r1, pc | r1 = 0x5cec;
0x00002c92 mov r7, r0 | r7 = r0;
0x00002c94 ldr r2, [r1, r2] |
0x00002c96 ldr r2, [r2] | r2 = *(0x5cec);
0x00002c98 str r2, [sp, 0x24] | var_24h = r2;
0x00002c9a mov.w r2, 0 | r2 = 0;
0x00002c9e strd r3, r3, [sp, 0x18] | __asm ("strd r3, r3, [var_18h]");
0x00002ca2 bl 0xd738 | r0 = fcn_0000d738 (r0);
0x00002ca6 mov r4, r0 | r4 = r0;
0x00002ca8 mov r6, r0 | r6 = r0;
0x00002caa cmp r0, 0 |
| if (r0 == 0) {
0x00002cac beq.w 0x2e86 | goto label_13;
| }
| label_6:
0x00002cb0 ldr r3, [pc, 0x3ac] |
0x00002cb2 add r3, pc | r3 = 0x5d16;
0x00002cb4 ldr r5, [r3] | r5 = *(0x5d16);
0x00002cb6 cmp r5, 0 |
| if (r5 == 0) {
0x00002cb8 beq.w 0x2ed2 | goto label_14;
| }
| label_3:
0x00002cbc ldr r1, [pc, 0x3a4] |
0x00002cbe mov r0, r5 | r0 = r5;
0x00002cc0 add r1, pc | r1 = 0x5d28;
0x00002cc2 blx 0x2058 | r0 = fcn_00002058 ();
0x00002cc6 cmp r0, 0 |
| if (r0 == 0) {
0x00002cc8 beq.w 0x2eec | goto label_15;
| }
| label_7:
0x00002ccc add r1, sp, 0x18 | r1 += var_18h;
0x00002cce mov r0, r7 | r0 = r7;
0x00002cd0 bl 0xe7b0 | r0 = fcn_0000e7b0 (r0, r1, r2, r3);
0x00002cd4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00002cd6 blt.w 0x2e78 | goto label_16;
| }
0x00002cda ldr r3, [pc, 0x38c] |
0x00002cdc ldr.w r8, [sp, 0x18] | r8 = var_18h;
0x00002ce0 add r3, pc | r3 = 0x5d4e;
0x00002ce2 ldr r0, [r3] | r0 = *(0x5d4e);
0x00002ce4 mov r4, r8 | r4 = r8;
0x00002ce6 cmp r0, 0 |
| if (r0 == 0) {
0x00002ce8 beq.w 0x2ea4 | goto label_17;
| }
0x00002cec ldr.w sb, [pc, 0x37c] |
0x00002cf0 add sb, pc | sb = 0x5d60;
0x00002cf2 mov r1, sb | r1 = sb;
0x00002cf4 blx 0x2058 | r0 = fcn_00002058 ();
0x00002cf8 mov r7, r0 | r7 = r0;
0x00002cfa cmp r0, 0 |
| if (r0 == 0) {
0x00002cfc beq.w 0x2f4c | goto label_18;
| }
0x00002d00 cmp r4, 0 |
0x00002d02 and lr, r0, 0xa7 | lr = r0 & 0xa7;
| label_4:
0x00002d06 movs r0, r0 |
0x00002d08 invalid |
0x00002d0c ldr.w sb, [pc, 0x368] |
0x00002d10 add r7, pc | r7 += pc;
0x00002d12 add r8, pc | r8 += pc;
0x00002d14 add sb, pc | sb = 0x5d90;
0x00002d16 b 0x2d32 |
| while (r3 != 0) {
0x00002d18 mov r1, r5 | r1 = r5;
0x00002d1a mov r0, r3 | r0 = r3;
0x00002d1c blx 0x2058 | r0 = fcn_00002058 ();
0x00002d20 cmp r0, 0 |
| if (r0 == 0) {
0x00002d22 beq 0x2e1c | goto label_19;
| }
| label_2:
0x00002d24 mov r1, r4 | r1 = r4;
0x00002d26 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00002d28 bl 0xaaac | r0 = fcn_0000aaac (r0, r1);
0x00002d2c mov r4, r0 | r4 = r0;
0x00002d2e cmp r0, 0 |
| if (r0 == 0) {
0x00002d30 beq 0x2d9e | goto label_20;
| }
| label_0:
0x00002d32 mov r0, r4 | r0 = r4;
0x00002d34 bl 0xe784 | r0 = fcn_0000e784 (r0);
0x00002d38 mov r5, r0 | r5 = r0;
0x00002d3a mov r0, r4 | r0 = r4;
0x00002d3c bl 0xe78c | fcn_0000e78c (r0);
0x00002d40 ldr r3, [r7] | r3 = *(r7);
0x00002d42 mov sl, r0 | sl = r0;
0x00002d44 cmp r3, 0 |
0x00002d46 bne 0x2d18 |
| }
0x00002d48 mov r1, r8 | r1 = r8;
0x00002d4a mov r0, r5 | r0 = r5;
0x00002d4c blx 0x2058 | r0 = fcn_00002058 ();
0x00002d50 cmp r0, 0 |
| if (r0 == 0) {
0x00002d52 beq 0x2e30 | goto label_21;
| }
0x00002d54 mov r1, sb | r1 = sb;
0x00002d56 mov r0, r5 | r0 = r5;
0x00002d58 blx 0x2058 | r0 = fcn_00002058 ();
0x00002d5c cmp r0, 0 |
| if (r0 == 0) {
0x00002d5e beq 0x2e30 | goto label_21;
| }
0x00002d60 ldr r3, [pc, 0x318] |
0x00002d62 add r3, pc | r3 = 0x5de2;
0x00002d64 ldrb.w fp, [r3] | fp = *(r3);
0x00002d68 cmp.w fp, 0 |
| if (fp == 0) {
0x00002d6c beq.w 0x2f38 | goto label_22;
| }
0x00002d70 mov r0, r5 | r0 = r5;
0x00002d72 blx 0x1d74 | fcn_00001d74 ();
0x00002d76 ldr r1, [pc, 0x308] |
0x00002d78 rsb.w r3, r0, 0xf | r3 = 0xf - r0;
0x00002d7c mov r2, r5 | r2 = r5;
0x00002d7e movs r0, 1 | r0 = 1;
0x00002d80 strd sl, fp, [sp, 4] | __asm ("strd sl, fp, [var_8h]");
0x00002d84 add r1, pc | r1 = 0x5e0a;
0x00002d86 str r1, [sp] | *(sp) = r1;
0x00002d88 ldr r1, [pc, 0x2f8] |
0x00002d8a add r1, pc | r1 = 0x5e12;
0x00002d8c blx 0x1c1c | system (r0)
0x00002d90 mov r1, r4 | r1 = r4;
0x00002d92 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00002d94 bl 0xaaac | r0 = fcn_0000aaac (r0, r1);
0x00002d98 mov r4, r0 | r4 = r0;
0x00002d9a cmp r0, 0 |
| if (r0 != 0) {
0x00002d9c bne 0x2d32 | goto label_0;
| }
| label_20:
0x00002d9e ldr r3, [pc, 0x2e8] |
0x00002da0 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x00002da2 add r3, pc |
0x00002da4 ldr r3, [r3] | r3 = *(0x5e30);
0x00002da6 cmp r3, 0 |
| if (r3 != 0) {
0x00002da8 bne 0x2e42 | goto label_23;
| }
0x00002daa cmp r4, 0 |
| if (r4 == 0) {
0x00002dac beq.w 0x304c | goto label_24;
| }
0x00002db0 ldr r7, [pc, 0x2d8] |
0x00002db2 ldr.w sb, [pc, 0x2dc] |
0x00002db6 ldr.w r8, [pc, 0x2dc] |
0x00002dba add r7, pc | r7 = 0x5e4a;
0x00002dbc add sb, pc | sb = 0x5e52;
0x00002dbe add r8, pc | r8 = 0x5e58;
0x00002dc0 b 0x2de8 |
| while (r1 != 0) {
0x00002dc2 strd r1, ip, [sp, 0x10] | __asm ("strd r1, ip, [var_10h]");
0x00002dc6 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x00002dc8 strd lr, r2, [sp, 4] | __asm ("strd lr, r2, [var_8h]");
0x00002dcc ldr r2, [pc, 0x2c8] |
0x00002dce str r1, [sp, 0xc] | var_ch = r1;
0x00002dd0 ldr r1, [pc, 0x2c8] |
0x00002dd2 str r0, [sp] | *(sp) = r0;
0x00002dd4 add r2, pc | r2 = 0x5e70;
0x00002dd6 movs r0, 1 | r0 = 1;
0x00002dd8 add r1, pc | r1 = 0x5e78;
0x00002dda blx 0x1c1c | system (r0)
| label_1:
0x00002dde mov r0, r5 | r0 = r5;
0x00002de0 blx 0x1cb0 | fcn_00001cb0 ();
0x00002de4 cmp r4, 0 |
| if (r4 == 0) {
0x00002de6 beq 0x2e52 | goto label_25;
| }
0x00002de8 mov r5, r4 | r5 = r4;
0x00002dea ldr r4, [r4] | r4 = *(r4);
0x00002dec ldrd r2, r1, [r5, 8] | __asm ("ldrd r2, r1, [r5, 8]");
0x00002df0 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00002df2 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00002df4 ldrb.w ip, [r7] | ip = *(r7);
0x00002df8 str r4, [sp, 0x1c] | var_1ch = r4;
0x00002dfa cmp r2, 0 |
| if (r2 == 0) {
0x00002dfc beq.w 0x2f1e | goto label_26;
| }
0x00002e00 ldr.w lr, [r5, 0x14] |
0x00002e04 cmp r1, 0 |
0x00002e06 bne 0x2dc2 |
| }
0x00002e08 strd r2, ip, [sp, 8] | __asm ("strd r2, ip, [var_ch]");
0x00002e0c mov r1, r8 | r1 = r8;
0x00002e0e strd r0, lr, [sp] | __asm ("strd r0, lr, [sp]");
0x00002e12 mov r2, sb | r2 = sb;
0x00002e14 movs r0, 1 | r0 = 1;
0x00002e16 blx 0x1c1c | system (r0)
0x00002e1a b 0x2dde | goto label_1;
| label_19:
0x00002e1c ldr r3, [pc, 0x280] |
0x00002e1e mov r2, sl | r2 = sl;
0x00002e20 ldr r1, [pc, 0x280] |
0x00002e22 movs r0, 1 | r0 = 1;
0x00002e24 add r3, pc | r3 = 0x5ec8;
0x00002e26 ldrb r3, [r3] | r3 = *(r3);
0x00002e28 add r1, pc | r1 = 0x5ed0;
0x00002e2a blx 0x1c1c | system (r0)
0x00002e2e b 0x2d24 | goto label_2;
| label_21:
0x00002e30 mov r1, sl | r1 = sl;
0x00002e32 mov r0, r5 | r0 = r5;
0x00002e34 add r2, sp, 0x1c | r2 += var_1ch;
0x00002e36 bl 0x2ba8 | r0 = fcn_00002ba8 (r0, r1, r2);
0x00002e3a subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x00002e3c bge.w 0x2d24 | goto label_2;
| }
0x00002e40 ldr r4, [sp, 0x1c] | r4 = var_1ch;
| if (r4 == 0) {
| label_23:
0x00002e42 cbz r4, 0x2e52 | goto label_25;
| }
| do {
0x00002e44 mov r0, r4 | r0 = r4;
0x00002e46 ldr r4, [r4] | r4 = *(r4);
0x00002e48 str r4, [sp, 0x1c] | var_1ch = r4;
0x00002e4a blx 0x1cb0 | fcn_00001cb0 ();
0x00002e4e cmp r4, 0 |
0x00002e50 bne 0x2e44 |
| } while (r4 != 0);
| label_25:
0x00002e52 ldr r4, [sp, 0x18] | r4 = var_18h;
| label_5:
0x00002e54 mov r0, r4 | r0 = r4;
0x00002e56 bl 0xe794 | fcn_0000e794 (r0);
| do {
| label_9:
0x00002e5a ldr r2, [pc, 0x24c] |
0x00002e5c ldr r3, [pc, 0x1fc] | r3 = *(0x305c);
0x00002e5e add r2, pc | r2 = 0x5f0c;
0x00002e60 ldr r3, [r2, r3] | r3 = *(0x5f0c);
0x00002e62 ldr r2, [r3] | r2 = *(0x5f0c);
0x00002e64 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00002e66 eors r2, r3 | r2 ^= r3;
0x00002e68 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002e6c bne.w 0x3052 | goto label_27;
| }
0x00002e70 mov r0, r6 | r0 = r6;
0x00002e72 add sp, 0x2c |
0x00002e74 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x00002e78 cmp r4, 0 |
0x00002e7a it eq |
| if (r4 == 0) {
0x00002e7c cmneq r6, 2 | __asm ("cmneq r6, 2");
| }
| if (r4 != 0) {
0x00002e80 bne 0x2f00 | goto label_28;
| }
| label_8:
0x00002e82 movs r6, 0 | r6 = 0;
0x00002e84 b 0x2e5a |
| } while (1);
| label_13:
0x00002e86 ldr r3, [pc, 0x224] |
0x00002e88 add r3, pc | r3 = 0x5f3a;
0x00002e8a ldr r5, [r3] | r5 = *(0x5f3a);
0x00002e8c cmp r5, 0 |
| if (r5 == 0) {
0x00002e8e beq.w 0x3018 | goto label_29;
| }
0x00002e92 ldr r1, [pc, 0x21c] |
0x00002e94 mov r0, r5 | r0 = r5;
0x00002e96 add r1, pc | r1 = 0x5f4c;
0x00002e98 blx 0x2058 | r0 = fcn_00002058 ();
| if (r0 == 0) {
0x00002e9c cbz r0, 0x2eb4 | goto label_30;
| }
0x00002e9e ldr r6, [pc, 0x214] |
0x00002ea0 add r6, pc | r6 = 0x5f5a;
0x00002ea2 b 0x2cbc | goto label_3;
| label_17:
0x00002ea4 cmp.w r8, 0 |
| if (r8 != 0) {
0x00002ea8 bne.w 0x2d06 | goto label_4;
| }
| label_12:
0x00002eac mov r4, r8 | r4 = r8;
0x00002eae mov r7, r6 | r7 = r6;
| do {
0x00002eb0 mov r6, r7 | r6 = r7;
0x00002eb2 b 0x2e54 | goto label_5;
| label_30:
0x00002eb4 mov r0, r7 | r0 = r7;
0x00002eb6 bl 0xd730 | fcn_0000d730 (r0);
0x00002eba ldr r3, [pc, 0x1fc] |
0x00002ebc mov r2, r0 | r2 = r0;
0x00002ebe ldr r1, [pc, 0x1fc] |
0x00002ec0 movs r0, 1 | r0 = 1;
0x00002ec2 add r3, pc | r3 = 0x5f80;
0x00002ec4 ldrb r3, [r3] | r3 = *(r3);
0x00002ec6 add r1, pc | r1 = 0x5f88;
0x00002ec8 blx 0x1c1c | system (r0)
| label_11:
0x00002ecc ldr r6, [pc, 0x1f0] |
0x00002ece add r6, pc | r6 = 0x5f92;
0x00002ed0 b 0x2cb0 | goto label_6;
| label_14:
0x00002ed2 ldr r1, [pc, 0x1f0] |
0x00002ed4 mov r3, r6 | r3 = r6;
0x00002ed6 ldr r2, [pc, 0x1f0] |
0x00002ed8 movs r0, 1 | r0 = 1;
0x00002eda add r1, pc | r1 = 0x5fa4;
0x00002edc ldrb r1, [r1] | r1 = *(r1);
0x00002ede add r2, pc | r2 = 0x5fac;
0x00002ee0 str r1, [sp] | *(sp) = r1;
0x00002ee2 ldr r1, [pc, 0x1e8] |
0x00002ee4 add r1, pc | r1 = 0x5fb6;
0x00002ee6 blx 0x1c1c | system (r0)
0x00002eea b 0x2ccc | goto label_7;
| label_15:
0x00002eec ldr r3, [pc, 0x1e0] |
0x00002eee mov r2, r6 | r2 = r6;
0x00002ef0 ldr r1, [pc, 0x1e0] |
0x00002ef2 movs r0, 1 | r0 = 1;
0x00002ef4 add r3, pc | r3 = 0x5fc8;
0x00002ef6 ldrb r3, [r3] | r3 = *(r3);
0x00002ef8 add r1, pc | r1 = 0x5fd0;
0x00002efa blx 0x1c1c | system (r0)
0x00002efe b 0x2e82 | goto label_8;
| label_28:
0x00002f00 mov r0, r7 | r0 = r7;
0x00002f02 bl 0xd730 | r0 = fcn_0000d730 (r0);
0x00002f06 mov r4, r0 | r4 = r0;
0x00002f08 rsbs r0, r6, 0 | r0 = r6 - ;
0x00002f0a blx 0x1b54 | fcn_00001b54 ();
0x00002f0e ldr r1, [pc, 0x1c8] |
0x00002f10 mov r3, r0 | r3 = r0;
0x00002f12 mov r2, r4 | r2 = r4;
0x00002f14 movs r0, 3 | r0 = 3;
0x00002f16 add r1, pc | r1 = 0x5ff4;
0x00002f18 bl 0x8a58 | fcn_00008a58 (r0);
0x00002f1c b 0x2e5a | goto label_9;
| label_26:
0x00002f1e strd r1, ip, [sp, 8] | __asm ("strd r1, ip, [var_ch]");
0x00002f22 ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00002f24 ldr r1, [pc, 0x1b4] |
0x00002f26 strd r0, r2, [sp] | __asm ("strd r0, r2, [sp]");
0x00002f2a movs r0, 1 | r0 = 1;
0x00002f2c ldr r2, [pc, 0x1b0] |
0x00002f2e add r1, pc | r1 = 0x600e;
0x00002f30 add r2, pc | r2 = 0x6014;
0x00002f32 blx 0x1c1c | system (r0)
0x00002f36 b 0x2dde | goto label_1;
| label_22:
0x00002f38 ldr r1, [pc, 0x1a8] |
0x00002f3a mov r3, sl | r3 = sl;
0x00002f3c mov r2, r5 | r2 = r5;
0x00002f3e str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00002f42 movs r0, 1 | r0 = 1;
0x00002f44 add r1, pc | r1 = 0x602c;
0x00002f46 blx 0x1c1c | system (r0)
0x00002f4a b 0x2d24 | goto label_2;
| label_18:
0x00002f4c str r0, [sp, 0x20] | var_20h = r0;
0x00002f4e cmp.w r8, 0 |
0x00002f52 beq 0x2eb0 |
| } while (r8 == 0);
0x00002f54 ldr.w fp, [pc, 0x190] |
0x00002f58 add.w sl, sp, 0x20 | sl += var_20h;
0x00002f5c add fp, pc | fp = 0x6048;
| do {
0x00002f5e mov r0, r4 | r0 = r4;
0x00002f60 bl 0xe784 | r0 = fcn_0000e784 (r0);
0x00002f64 mov r5, r0 | r5 = r0;
0x00002f66 mov r0, r4 | r0 = r4;
0x00002f68 bl 0xe78c | fcn_0000e78c (r0);
0x00002f6c mov r1, sb | r1 = sb;
0x00002f6e mov r6, r0 | r6 = r0;
0x00002f70 mov r0, r5 | r0 = r5;
0x00002f72 blx 0x2058 | r0 = fcn_00002058 ();
| if (r0 != 0) {
0x00002f76 cbz r0, 0x2f82 |
0x00002f78 mov r1, fp | r1 = fp;
0x00002f7a mov r0, r5 | r0 = r5;
0x00002f7c blx 0x2058 | r0 = fcn_00002058 ();
| if (r0 != 0) {
0x00002f80 cbnz r0, 0x2f90 | goto label_31;
| }
| }
0x00002f82 mov r1, r6 | r1 = r6;
0x00002f84 mov r0, r5 | r0 = r5;
0x00002f86 mov r2, sl | r2 = sl;
0x00002f88 bl 0x2ba8 | r0 = fcn_00002ba8 (r0, r1, r2);
0x00002f8c subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 < r0) {
0x00002f8e blt 0x3000 | goto label_32;
| }
| label_31:
0x00002f90 mov r1, r4 | r1 = r4;
0x00002f92 mov r0, r8 | r0 = r8;
0x00002f94 bl 0xaaac | r0 = fcn_0000aaac (r0, r1);
0x00002f98 mov r4, r0 | r4 = r0;
0x00002f9a cmp r0, 0 |
0x00002f9c bne 0x2f5e |
| } while (r0 != 0);
0x00002f9e ldr r5, [sp, 0x20] | r5 = var_20h;
0x00002fa0 cmp r5, 0 |
| if (r5 == 0) {
0x00002fa2 beq 0x3012 | goto label_33;
| }
0x00002fa4 ldr r6, [pc, 0x144] |
0x00002fa6 ldr.w sb, [pc, 0x148] |
0x00002faa ldr.w r8, [pc, 0x148] |
0x00002fae add r6, pc | r6 = 0x609e;
0x00002fb0 add sb, pc | sb = 0x60a6;
0x00002fb2 add r8, pc | r8 = 0x60ac;
0x00002fb4 b 0x2fd2 |
| while (r0 != 0) {
0x00002fb6 strd r0, lr, [sp, 0xc] | __asm ("strd r0, lr, [var_ch]");
0x00002fba ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00002fbc strd ip, r1, [sp] | __asm ("strd ip, r1, [sp]");
0x00002fc0 mov r1, r8 | r1 = r8;
0x00002fc2 str r0, [sp, 8] | var_8h = r0;
0x00002fc4 movs r0, 1 | r0 = 1;
0x00002fc6 blx 0x1c1c | system (r0)
| label_10:
0x00002fca mov r0, r4 | r0 = r4;
0x00002fcc blx 0x1cb0 | fcn_00001cb0 ();
| if (r5 == 0) {
0x00002fd0 cbz r5, 0x3012 | goto label_33;
| }
0x00002fd2 mov r4, r5 | r4 = r5;
0x00002fd4 ldr r5, [r5] | r5 = *(r5);
0x00002fd6 ldrd r1, r0, [r4, 8] | __asm ("ldrd r1, r0, [r4, 8]");
0x00002fda ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00002fdc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00002fde ldrb.w lr, [r6] |
0x00002fe2 str r5, [sp, 0x20] | var_20h = r5;
| if (r1 == 0) {
0x00002fe4 cbz r1, 0x3038 | goto label_34;
| }
0x00002fe6 ldr.w ip, [r4, 0x14] | ip = *((r4 + 0x14));
0x00002fea cmp r0, 0 |
0x00002fec bne 0x2fb6 |
| }
0x00002fee strd r1, lr, [sp, 4] | __asm ("strd r1, lr, [var_8h]");
0x00002ff2 movs r0, 1 | r0 = 1;
0x00002ff4 mov r1, sb | r1 = sb;
0x00002ff6 str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00002ffa blx 0x1c1c | system (r0)
0x00002ffe b 0x2fca | goto label_10;
| label_32:
0x00003000 ldr r4, [sp, 0x20] | r4 = var_20h;
| if (r4 == 0) {
0x00003002 cbz r4, 0x3012 | goto label_33;
| }
| do {
0x00003004 mov r0, r4 | r0 = r4;
0x00003006 ldr r4, [r4] | r4 = *(r4);
0x00003008 str r4, [sp, 0x20] | var_20h = r4;
0x0000300a blx 0x1cb0 | fcn_00001cb0 ();
0x0000300e cmp r4, 0 |
0x00003010 bne 0x3004 |
| } while (r4 != 0);
| label_33:
0x00003012 ldr r4, [sp, 0x18] | r4 = var_18h;
0x00003014 mov r6, r7 | r6 = r7;
0x00003016 b 0x2e54 | goto label_5;
| label_29:
0x00003018 mov r0, r7 | r0 = r7;
0x0000301a bl 0xd730 | fcn_0000d730 (r0);
0x0000301e ldr r1, [pc, 0xd8] |
0x00003020 mov r3, r0 | r3 = r0;
0x00003022 ldr r2, [pc, 0xd8] |
0x00003024 movs r0, 1 | r0 = 1;
0x00003026 add r1, pc | r1 = 0x6124;
0x00003028 ldrb r1, [r1] | r1 = *(r1);
0x0000302a add r2, pc | r2 = 0x612c;
0x0000302c str r1, [sp] | *(sp) = r1;
0x0000302e ldr r1, [pc, 0xd0] |
0x00003030 add r1, pc | r1 = 0x6136;
0x00003032 blx 0x1c1c | system (r0)
0x00003036 b 0x2ecc | goto label_11;
| label_34:
0x00003038 strd r0, lr, [sp, 4] | __asm ("strd r0, lr, [var_8h]");
0x0000303c movs r0, 1 | r0 = 1;
0x0000303e ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x00003040 str r1, [sp] | *(sp) = r1;
0x00003042 ldr r1, [pc, 0xc0] |
0x00003044 add r1, pc | r1 = 0x614e;
0x00003046 blx 0x1c1c | system (r0)
0x0000304a b 0x2fca | goto label_10;
| label_24:
0x0000304c ldr.w r8, [sp, 0x18] | r8 = var_18h;
0x00003050 b 0x2eac | goto label_12;
| label_27:
0x00003052 blx 0x1ed8 | fcn_00001ed8 ();
0x00003056 nop |
0x00003058 str r0, [r5, r5] | *((r5 + r5)) = r0;
0x0000305a movs r1, r0 | r1 = r0;
0x0000305c lsls r4, r4, 7 | r4 <<= 7;
0x0000305e movs r0, r0 |
0x00003060 strh r2, [r7, r7] | *((r7 + r7)) = r2;
0x00003062 movs r1, r0 | r1 = r0;
0x00003064 strb.w r0, [r0] | *(r0) = r0;
0x00003068 strh r4, [r1, r7] | *((r1 + r7)) = r4;
0x0000306a movs r1, r0 | r1 = r0;
0x0000306c ldrb.w r0, [r8, r0] | r0 = *((r8 + r0));
0x00003070 strh r4, [r3, r6] | *((r3 + r6)) = r4;
0x00003072 movs r1, r0 | r1 = r0;
0x00003074 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/kmod @ 0x5e78 */
| #include <stdint.h>
|
; (fcn) fcn.00005e78 () | void fcn_00005e78 (int16_t arg_0h, int16_t arg_4h, int16_t arg_b30h, int16_t arg_1320h, int16_t arg_3b00h, int16_t arg1, int16_t arg2, int16_t arg3, FILE * arg4) {
| int16_t var_2ch;
| int16_t var_bp_28h;
| int16_t var_804h;
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch_3;
| int16_t var_10h;
| int16_t var_18h;
| int16_t sig;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_sp_2ch;
| int16_t var_30h;
| size_t nmemb;
| 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;
| FILE * stream;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_ch_2;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_a8h;
| int16_t var_b0h;
| int16_t var_110h;
| int16_t var_10ch;
| FILE * var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h;
| int16_t var_18h_2;
| int16_t var_28h_2;
| int16_t var_1b0h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00005e78 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00005e7c mov fp, r2 |
0x00005e7e sub sp, 0x8c |
0x00005e80 ldr r2, [pc, 0x1d8] |
0x00005e82 mov r8, r0 | r8 = r0;
0x00005e84 mov r0, r1 | r0 = r1;
0x00005e86 str r3, [sp, 4] | var_4h = r3;
0x00005e88 mov r7, r1 | r7 = r1;
0x00005e8a ldr r3, [pc, 0x1d4] | r3 = *(0x6062);
0x00005e8c add r2, pc | r2 = 0xbeec;
0x00005e8e mov.w sb, 0 | sb = 0;
0x00005e92 ldr r3, [r2, r3] |
0x00005e94 ldr r3, [r3] | r3 = *(0xbeec);
0x00005e96 str r3, [sp, 0x84] | var_84h = r3;
0x00005e98 mov.w r3, 0 | r3 = 0;
0x00005e9c blx 0x1e30 | fcn_00001e30 ();
0x00005ea0 ldr r3, [pc, 0x1c0] |
0x00005ea2 str r0, [sp, 0x14] | var_14h = r0;
0x00005ea4 add r3, pc | r3 = 0xbf0c;
0x00005ea6 str r3, [sp, 8] | var_8h = r3;
0x00005ea8 ldr r3, [pc, 0x1bc] |
0x00005eaa add r3, pc | r3 = 0xbf16;
0x00005eac str r3, [sp, 0xc] | var_ch = r3;
| do {
| label_0:
0x00005eae mov r0, r7 | r0 = r7;
0x00005eb0 blx 0x1fac | r0 = strcspn (r0, r1);
0x00005eb4 mov r4, r0 | r4 = r0;
0x00005eb6 cmp r0, 0 |
| if (r0 == 0) {
0x00005eb8 beq.w 0x5fc0 | goto label_63;
| }
| label_2:
0x00005ebc ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x00005ebe add.w r5, r4, 0x13 | r5 = r4 + 0x13;
0x00005ec2 ldr.w r6, [r8] | r6 = *(r8);
0x00005ec6 cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x00005ec8 beq.w 0x5fdc | goto label_64;
| }
| label_3:
0x00005ecc ldr r1, [sp, 8] | r1 = var_8h;
0x00005ece mov r0, r5 | r0 = r5;
0x00005ed0 blx 0x2058 | r0 = fcn_00002058 ();
0x00005ed4 cmp r0, 0 |
0x00005ed6 beq 0x5eae |
| } while (r0 == 0);
0x00005ed8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00005eda mov r0, r5 | r0 = r5;
0x00005edc blx 0x2058 | r0 = fcn_00002058 ();
0x00005ee0 cmp r0, 0 |
| if (r0 == 0) {
0x00005ee2 beq 0x5eae | goto label_0;
| }
0x00005ee4 add.w r6, r6, 0x1000 | r6 += 0x1000;
0x00005ee8 ldr r6, [r6, 0x18] | r6 = *((r6 + 0x18));
| if (r6 == 0) {
0x00005eea cbz r6, 0x5efe | goto label_65;
| }
| label_1:
0x00005eec adds r1, r6, 4 | r1 = r6 + 4;
0x00005eee mov r0, r5 | r0 = r5;
0x00005ef0 blx 0x2058 | r0 = fcn_00002058 ();
0x00005ef4 cmp r0, 0 |
| if (r0 == 0) {
0x00005ef6 beq 0x5eae | goto label_0;
| }
0x00005ef8 ldr r6, [r6] | r6 = *(r6);
0x00005efa cmp r6, 0 |
| if (r6 != 0) {
0x00005efc bne 0x5eec | goto label_1;
| }
| label_65:
0x00005efe mov r0, r5 | r0 = r5;
0x00005f00 blx 0x1d74 | r0 = fcn_00001d74 ();
0x00005f04 mov r6, r0 | r6 = r0;
0x00005f06 ldr r0, [sp, 4] | r0 = var_4h;
0x00005f08 add.w sl, r6, fp | sl = r6 + fp;
0x00005f0c add.w r1, sl, 2 | r1 = sl + 2;
0x00005f10 bl 0x96c4 | r0 = fcn_000096c4 (r0, r1);
0x00005f14 cmp r0, 0 |
| if (r0 < 0) {
0x00005f16 blt 0x6004 | goto label_66;
| }
0x00005f18 ldr r3, [sp, 4] | r3 = var_4h;
0x00005f1a adds r2, r6, 1 | r2 = r6 + 1;
0x00005f1c mov r1, r5 | r1 = r5;
0x00005f1e ldr r3, [r3] | r3 = *(r3);
0x00005f20 add.w r0, r3, fp | r0 = r3 + fp;
0x00005f24 str r3, [sp, 0x10] | var_10h_2 = r3;
0x00005f26 blx 0x1d90 | feof (r0);
0x00005f2a ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x00005f2c cmp r3, 8 |
| if (r3 == 8) {
0x00005f2e beq 0x5ff4 | goto label_67;
| }
0x00005f30 cmp r3, 4 |
| if (r3 != 4) {
0x00005f32 beq 0x5f56 |
0x00005f34 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00005f36 movs r3, 0 | r3 = 0;
0x00005f38 add r2, sp, 0x18 | r2 += var_18h_2;
0x00005f3a mov r1, r5 | r1 = r5;
0x00005f3c blx 0x1f38 | r0 = fcn_00001f38 ();
0x00005f40 cmp r0, 0 |
| if (r0 < 0) {
0x00005f42 blt 0x6032 | goto label_68;
| }
0x00005f44 ldr r3, [sp, 0x28] | r3 = var_28h_2;
0x00005f46 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00005f4a cmp.w r3, 0x8000 |
| if (r3 == 0x8000) {
0x00005f4e beq 0x5ff4 | goto label_67;
| }
0x00005f50 cmp.w r3, 0x4000 |
| if (r3 != 0x4000) {
0x00005f54 bne 0x6024 | goto label_69;
| }
| }
0x00005f56 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00005f58 movs r2, 0 | r2 = 0;
0x00005f5a mov r1, r5 | r1 = r5;
0x00005f5c blx 0x1cfc | r0 = fcn_00001cfc ();
0x00005f60 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00005f62 blt 0x6014 | goto label_70;
| }
0x00005f64 blx 0x20a0 | r0 = fcn_000020a0 ();
0x00005f68 mov r5, r0 | r5 = r0;
0x00005f6a cmp r0, 0 |
| if (r0 == 0) {
0x00005f6c beq 0x6042 | goto label_71;
| }
0x00005f6e ldr r2, [sp, 0x10] | r2 = var_10h_2;
0x00005f70 movs r3, 0x2f | r3 = 0x2f;
0x00005f72 mov r1, r0 | r1 = r0;
0x00005f74 mov r0, r8 | r0 = r8;
0x00005f76 strh.w r3, [r2, sl] | *((r2 + sl)) = r3;
0x00005f7a add.w r2, sl, 1 | r2 = sl + 1;
0x00005f7e ldr r3, [sp, 4] | r3 = var_4h;
0x00005f80 bl 0x5e78 | r0 = fcn_00005e78 (r0, r1, r2, r3, r4, r5, r6);
0x00005f84 mov sb, r0 | sb = r0;
0x00005f86 mov r0, r5 | r0 = r5;
0x00005f88 blx 0x1e90 | fcn_00001e90 ();
| label_4:
0x00005f8c cmp.w sb, 0 |
| if (sb >= 0) {
0x00005f90 bge 0x5eae | goto label_0;
| }
0x00005f92 ldr r4, [sp, 0x10] | r4 = var_10h_2;
0x00005f94 rsb.w r0, sb, 0 | r0 = sb - ;
0x00005f98 mov.w sb, 0 | sb = 0;
0x00005f9c strb.w sb, [r4, sl] | *((r4 + sl)) = sb;
0x00005fa0 blx 0x1b54 | fcn_00001b54 ();
0x00005fa4 ldr r1, [pc, 0xc4] |
0x00005fa6 mov r3, r0 | r3 = r0;
0x00005fa8 mov r2, r4 | r2 = r4;
0x00005faa movs r0, 3 | r0 = 3;
0x00005fac add r1, pc | r1 = 0xc01c;
0x00005fae bl 0x8a58 | fcn_00008a58 (r0);
0x00005fb2 mov r0, r7 | r0 = r7;
0x00005fb4 blx 0x1fac | r0 = strcspn (r0, r1);
0x00005fb8 mov r4, r0 | r4 = r0;
0x00005fba cmp r0, 0 |
| if (r0 != 0) {
0x00005fbc bne.w 0x5ebc | goto label_2;
| }
| label_63:
0x00005fc0 ldr r2, [pc, 0xac] |
0x00005fc2 ldr r3, [pc, 0x9c] | r3 = *(0x6062);
0x00005fc4 add r2, pc | r2 = 0xc038;
0x00005fc6 ldr r3, [r2, r3] | r3 = *(0xc038);
0x00005fc8 ldr r2, [r3] | r2 = *(0xc038);
0x00005fca ldr r3, [sp, 0x84] | r3 = var_84h;
0x00005fcc eors r2, r3 | r2 ^= r3;
0x00005fce mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005fd2 bne 0x6056 | goto label_72;
| }
0x00005fd4 mov r0, sb | r0 = sb;
0x00005fd6 add sp, 0x8c |
0x00005fd8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_64:
0x00005fdc ldrb r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00005fde cmp r3, 0 |
| if (r3 == 0) {
0x00005fe0 beq.w 0x5eae | goto label_0;
| }
0x00005fe4 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x00005fe6 bne.w 0x5ecc | goto label_3;
| }
0x00005fea ldrb r3, [r4, 0x15] | r3 = *((r4 + 0x15));
0x00005fec cmp r3, 0 |
| if (r3 != 0) {
0x00005fee bne.w 0x5ecc | goto label_3;
| }
0x00005ff2 b 0x5eae | goto label_0;
| label_67:
0x00005ff4 ldr r3, [sp, 0x10] | r3 = var_10h_2;
0x00005ff6 mov r2, r6 | r2 = r6;
0x00005ff8 mov r1, fp | r1 = fp;
0x00005ffa mov r0, r8 | r0 = r8;
0x00005ffc bl 0x5a4c | r0 = fcn_00005a4c (r0, r1, r2, r3, r4, r5, r6);
0x00006000 mov sb, r0 | sb = r0;
0x00006002 b 0x5f8c | goto label_4;
| label_66:
0x00006004 ldr r1, [pc, 0x6c] |
0x00006006 movs r0, 3 | r0 = 3;
0x00006008 mvn sb, 0xb | sb = ~0xb;
0x0000600c add r1, pc | r1 = 0xc084;
0x0000600e bl 0x8a58 | fcn_00008a58 (r0);
0x00006012 b 0x5eae | goto label_0;
| label_70:
0x00006014 ldr r1, [pc, 0x60] |
0x00006016 mov r3, r5 | r3 = r5;
0x00006018 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000601a movs r0, 3 | r0 = 3;
0x0000601c add r1, pc | r1 = 0xc098;
0x0000601e bl 0x8a58 | fcn_00008a58 (r0);
| do {
0x00006020 ldc2 p7, c14, [fp, -0x110] | __asm ("ldc2 p7, c14, [fp, -0x110]");
| label_69:
0x00006024 ldr r1, [pc, 0x54] |
0x00006026 movs r0, 3 | r0 = 3;
0x00006028 ldr r2, [sp, 0x10] | r2 = var_10h_2;
0x0000602a add r1, pc | r1 = 0xc0aa;
0x0000602c bl 0x8a58 | fcn_00008a58 (r0);
0x00006030 b 0x5eae | goto label_0;
| label_68:
0x00006032 ldr r1, [pc, 0x4c] |
0x00006034 mov r3, r5 | r3 = r5;
0x00006036 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00006038 movs r0, 3 | r0 = 3;
0x0000603a add r1, pc | r1 = 0xc0c0;
0x0000603c bl 0x8a58 | fcn_00008a58 (r0);
0x00006040 b 0x5eae | goto label_0;
| label_71:
0x00006042 ldr r1, [pc, 0x40] |
0x00006044 mov r2, r4 | r2 = r4;
0x00006046 movs r0, 3 | r0 = 3;
0x00006048 add r1, pc | r1 = 0xc0d2;
0x0000604a bl 0x8a58 | fcn_00008a58 (r0);
0x0000604e mov r0, r4 | r0 = r4;
0x00006050 blx 0x1e60 | fcn_00001e60 ();
0x00006054 b 0x5eae | goto label_0;
| label_72:
0x00006056 blx 0x1ed8 | fcn_00001ed8 ();
0x0000605a nop |
0x0000605c subs r4, r5, 5 | r4 = r5 - 5;
0x0000605e movs r1, r0 | r1 = r0;
0x00006060 lsls r4, r4, 7 | r4 <<= 7;
0x00006062 movs r0, r0 |
| if (r0 >= r0) {
0x00006064 bge 0x6088 | goto label_73;
| }
0x00006066 movs r0, r0 |
| if (r0 >= r0) {
0x00006068 bge 0x6090 | goto label_74;
| }
0x0000606a movs r0, r0 |
0x0000606c bls 0x6020 |
| } while (r0 < r0);
0x0000606e movs r0, r0 |
0x00006070 subs r4, r6, 0 | r4 = r6 - 0;
0x00006072 movs r1, r0 | r1 = r0;
0x00006074 udf 0xc4 | __asm ("udf 0xc4");
| label_73:
0x00006088 push.w {r4, r5, r6, r7, r8, lr} |
0x0000608c mov r6, r1 | r6 = r1;
0x0000608e ldr r1, [pc, 0xa8] | r1 = *(0x613a);
| label_74:
0x00006090 sub sp, 0x110 |
0x00006092 mov r4, sp | r4 = sp;
0x00006094 mov.w r2, 0x100 | r2 = 0x100;
0x00006098 ldr r3, [pc, 0xa0] |
0x0000609a mov r8, r0 | r8 = r0;
0x0000609c add r1, pc | r1 += pc;
0x0000609e mov r0, r6 | r0 = r6;
0x000060a0 ldr r3, [r1, r3] | r3 = *((r1 + r3));
0x000060a2 ldr r3, [r3] | r3 = *(0x613c);
0x000060a4 str r3, [sp, 0x10c] | var_10ch = r3;
0x000060a6 mov.w r3, 0 | r3 = 0;
0x000060aa add r3, sp, 0xc | r3 += var_ch_2;
0x000060ac strd r3, r2, [r4] | __asm ("strd r3, r2, [r4]");
0x000060b0 movs r3, 0 | r3 = 0;
0x000060b2 strb r3, [r4, 8] | var_60h = r3;
0x000060b4 blx 0x1b90 | r0 = fcn_00001b90 ();
| if (r0 == 0) {
0x000060b8 cbz r0, 0x611e | goto label_75;
| }
0x000060ba mov r7, r0 | r7 = r0;
0x000060bc mov r0, r6 | r0 = r6;
0x000060be blx 0x1d74 | r0 = fcn_00001d74 ();
0x000060c2 mov r5, r0 | r5 = r0;
0x000060c4 mov r0, r4 | r0 = r4;
0x000060c6 adds r1, r5, 2 | r1 = r5 + 2;
0x000060c8 bl 0x96c4 | r0 = fcn_000096c4 (r0, r1);
0x000060cc cmp r0, 0 |
0x000060ce it lt |
| if (r0 >= 0) {
0x000060d0 mvnlt r5, 0xb | r5 = ~0xb;
| }
| if (r0 >= 0) {
0x000060d4 blt 0x60f6 |
0x000060d6 ldr r3, [r4] | r3 = *(r4);
0x000060d8 mov r2, r5 | r2 = r5;
0x000060da mov r1, r6 | r1 = r6;
0x000060dc mov r0, r3 | r0 = r3;
0x000060de blx 0x1d90 | feof (r0);
0x000060e2 movs r2, 0x2f | r2 = 0x2f;
0x000060e4 mov r3, r0 | r3 = r0;
0x000060e6 strh r2, [r3, r5] | *((r3 + r5)) = r2;
0x000060e8 mov r0, r8 | r0 = r8;
0x000060ea adds r2, r5, 1 | r2 = r5 + 1;
0x000060ec mov r3, r4 | r3 = r4;
0x000060ee mov r1, r7 | r1 = r7;
0x000060f0 bl 0x5e78 | r0 = fcn_00005e78 (r0, r1, r2, r3, r4, r5, r6);
0x000060f4 mov r5, r0 | r5 = r0;
| }
0x000060f6 mov r0, r7 | r0 = r7;
0x000060f8 blx 0x1e90 | fcn_00001e90 ();
| do {
0x000060fc mov r0, r4 | r0 = r4;
0x000060fe bl 0x9704 | fcn_00009704 (r0);
0x00006102 ldr r2, [pc, 0x3c] | r2 = *(0x6142);
| label_5:
0x00006104 ldr r3, [pc, 0x34] | r3 = *(0x613c);
0x00006106 add r2, pc | r2 += pc;
0x00006108 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000610a ldr r2, [r3] | r2 = *(0x613c);
0x0000610c ldr r3, [sp, 0x10c] | r3 = var_10ch;
0x0000610e eors r2, r3 | r2 ^= r3;
0x00006110 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00006114 bne 0x6134 | goto label_76;
| }
0x00006116 mov r0, r5 | r0 = r5;
0x00006118 add sp, 0x110 |
0x0000611a pop.w {r4, r5, r6, r7, r8, pc} |
| label_75:
0x0000611e blx 0x207c | fcn_0000207c ();
0x00006122 ldr r1, [pc, 0x20] |
0x00006124 mov r2, r6 | r2 = r6;
0x00006126 ldr r5, [r0] | r5 = *(r0);
0x00006128 movs r0, 3 | r0 = 3;
0x0000612a add r1, pc | r1 = 0xc274;
0x0000612c rsbs r5, r5, 0 | r5 -= ;
0x0000612e bl 0x8a58 | fcn_00008a58 (r0);
0x00006132 b 0x60fc |
| } while (1);
| label_76:
0x00006134 blx 0x1ed8 | fcn_00001ed8 ();
0x00006138 adds r4, r3, 5 | r4 = r3 + 5;
0x0000613a movs r1, r0 | r1 = r0;
0x0000613c lsls r4, r4, 7 | r4 <<= 7;
0x0000613e movs r0, r0 |
0x00006140 adds r2, r6, 3 | r2 = r6 + 3;
0x00006142 movs r1, r0 | r1 = r0;
| if (r1 >= r0) {
0x00006144 bge 0x6104 | goto label_5;
| }
0x00006146 movs r0, r0 |
0x00006148 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000614c movs r4, 0 | r4 = 0;
0x0000614e vpush {d8} | __asm ("vpush {d8}");
0x00006152 sub.w sp, sp, 0x3b00 |
0x00006156 sub sp, 0x34 |
0x00006158 mov sl, r4 | sl = r4;
0x0000615a ldr.w r2, [pc, 0xb58] |
0x0000615e add r3, sp, 0x78 | r3 += var_78h;
0x00006160 str r4, [r3] | *(r3) = r4;
0x00006162 add.w r5, sp, 0xb30 | r5 += arg_b30h;
0x00006166 ldr.w r3, [pc, 0xb50] | r3 = *(0x6cba);
0x0000616a add.w fp, sp, 0x330 |
0x0000616e add r2, pc | r2 = 0xce28;
0x00006170 strd r0, r1, [sp, 0x1c] | __asm ("strd r0, r1, [sp, 0x1c]");
0x00006174 str r5, [sp, 0x24] | var_24h = r5;
0x00006176 add.w r1, sp, 0x3b00 | r1 += arg_3b00h;
0x0000617a ldr r3, [r2, r3] |
0x0000617c add r2, sp, 0xb0 | r2 += var_b0h;
0x0000617e ldr.w sb, [pc, 0xb3c] |
0x00006182 adds r1, 0x2c | r1 += 0x2c;
0x00006184 ldr.w r8, [pc, 0xb38] |
0x00006188 sub.w r0, fp, 0x2c | r0 = fp - 0x2c;
0x0000618c ldr.w r7, [pc, 0xb34] |
0x00006190 ldr r3, [r3] | r3 = *(0xce28);
0x00006192 str r3, [r1] | *(r1) = r3;
0x00006194 mov.w r3, 0 | r3 = 0;
0x00006198 mov r6, r2 | r6 = r2;
0x0000619a mov r1, r4 | r1 = r4;
0x0000619c str r2, [sp, 0x4c] | var_4ch = r2;
0x0000619e movw r2, 0x101c | r2 = 0x101c;
0x000061a2 str r4, [sp, 0x2c] | var_sp_2ch = r4;
0x000061a4 add sb, pc | sb = 0xce66;
0x000061a6 str r0, [sp, 0x30] | var_30h = r0;
0x000061a8 add r8, pc | r8 = 0xce6c;
0x000061aa blx 0x1c64 | uname ();
0x000061ae add r3, sp, 0x110 | r3 += var_110h;
0x000061b0 sub.w r0, r6, 0x2c | r0 = r6 - 0x2c;
0x000061b4 mov r1, r4 | r1 = r4;
0x000061b6 movs r2, 0x24 | r2 = 0x24;
0x000061b8 add r7, pc | r7 = 0xce80;
0x000061ba mov r5, r3 | r5 = r3;
0x000061bc str r0, [sp, 0x48] | var_48h = r0;
0x000061be str r4, [sp, 0x28] | var_28h = r4;
0x000061c0 strd r4, r4, [sp, 0x38] | __asm ("strd r4, r4, [sp, 0x38]");
0x000061c4 strd r4, r4, [sp, 0x40] | __asm ("strd r4, r4, [sp, 0x40]");
0x000061c8 str r4, [sp, 0x34] | nmemb = r4;
0x000061ca str r3, [sp, 0x18] | var_18h = r3;
0x000061cc blx 0x1c64 | uname ();
| do {
| label_6:
0x000061d0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000061d2 mov r2, r7 | r2 = r7;
0x000061d4 ldrd r0, r1, [sp, 0x1c] | __asm ("ldrd r0, r1, [sig]");
0x000061d8 str r3, [sp] | *(sp) = r3;
0x000061da mov r3, r8 | r3 = r8;
0x000061dc str r4, [r5] | *(r5) = r4;
0x000061de blx 0x1cd4 | r0 = fcn_00001cd4 ();
0x000061e2 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x000061e4 beq.w 0x63b0 | goto label_77;
| }
0x000061e8 sub.w r3, r0, 0x3f | r3 = r0 - 0x3f;
0x000061ec cmp r3, 0x38 |
| if (r3 <= 0x38) {
0x000061ee bhi 0x622e |
| /* switch table (57 cases) at 0x61f4 */
0x000061f0 tbb [pc, r3] | __asm ("tbb [0x000061f8]");
| }
0x0000622e ldr.w r1, [pc, 0xa98] |
0x00006232 mov r2, r0 | r2 = r0;
0x00006234 movs r0, 3 | r0 = 3;
0x00006236 add r1, pc | r1 = 0xcf04;
0x00006238 bl 0x8a58 | fcn_00008a58 (r0);
| label_10:
0x0000623c ldr r0, [sp, 0x30] | r0 = var_30h;
0x0000623e movs r4, 1 | r4 = 1;
0x00006240 bl 0x4a74 | fcn_00004a74 (r0);
| label_7:
0x00006244 ldr r0, [sp, 0x2c] | r0 = var_sp_2ch;
0x00006246 blx 0x1cb0 | fcn_00001cb0 ();
0x0000624a ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000624c blx 0x1cb0 | fcn_00001cb0 ();
0x00006250 ldr.w r2, [pc, 0xa78] |
0x00006254 add.w r1, sp, 0x3b00 | r1 += arg_3b00h;
0x00006258 ldr.w r3, [pc, 0xa5c] | r3 = *(0x6cb8);
0x0000625c adds r1, 0x2c | r1 += 0x2c;
0x0000625e add r2, pc | r2 = 0xcf2e;
0x00006260 ldr r3, [r2, r3] | r3 = *(0xcf2e);
0x00006262 ldr r2, [r3] | r2 = *(0xcf2e);
0x00006264 ldr r3, [r1] | r3 = *(r1);
0x00006266 eors r2, r3 | r2 ^= r3;
0x00006268 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000626c bne.w 0x78fe | goto label_78;
| }
0x00006270 mov r0, r4 | r0 = r4;
0x00006272 add.w sp, sp, 0x3b00 |
0x00006276 add sp, 0x34 |
0x00006278 vpop {d8} | __asm ("vpop {d8}");
0x0000627c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00006280 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006282 sub.w r3, r3, 0xa20 | r3 -= 0xa20;
0x00006286 ldr r3, [r3] | r3 = *(r3);
0x00006288 cmp r3, 0 |
| if (r3 <= 0) {
0x0000628a ble.w 0x63a0 | goto label_79;
| }
0x0000628e ldr.w r2, [pc, 0xa40] |
0x00006292 lsls r3, r3, 4 | r3 <<= 4;
0x00006294 ldr.w r1, [pc, 0xa3c] |
0x00006298 movs r0, 4 | r0 = 4;
0x0000629a add r2, pc |
0x0000629c ldr r2, [r2, r3] | r2 = *(0xcf70);
0x0000629e add r1, pc | r1 = 0xcf76;
0x000062a0 bl 0x8a58 | fcn_00008a58 (r0);
0x000062a4 b 0x61d0 |
| } while (1);
0x000062a6 ldr.w r3, [pc, 0xa30] |
0x000062aa ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000062ae ldr r3, [r3] | r3 = *(0x6cda);
0x000062b0 str r3, [sp, 0x34] | nmemb = r3;
0x000062b2 b 0x61d0 | goto label_6;
0x000062b4 ldr.w r3, [pc, 0xa24] | r3 = *(0x6cdc);
0x000062b8 movs r0, 1 | r0 = 1;
0x000062ba ldr.w r1, [pc, 0xa24] |
0x000062be ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000062c2 add r1, pc | r1 = 0xcfa8;
0x000062c4 ldr r2, [r3] | r2 = *(0x6cdc);
0x000062c6 blx 0x1c1c | system (r0)
| do {
0x000062ca movs r4, 0 | r4 = 0;
0x000062cc b 0x6244 | goto label_7;
0x000062ce ldr r2, [sp, 0x24] | r2 = var_24h;
0x000062d0 movs r3, 1 | r3 = 1;
0x000062d2 strb.w r3, [r2, 0x7de] | *((r2 + 0x7de)) = r3;
0x000062d6 b 0x61d0 | goto label_6;
0x000062d8 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000062da movs r3, 1 | r3 = 1;
0x000062dc strb.w r3, [r2, 0x7df] | *((r2 + 0x7df)) = r3;
0x000062e0 b 0x61d0 | goto label_6;
0x000062e2 ldr.w r2, [pc, 0xa00] |
0x000062e6 add r2, pc | r2 = 0xcfd0;
0x000062e8 ldr r3, [r2] | r3 = *(0xcfd0);
0x000062ea adds r3, 1 | r3++;
0x000062ec str r3, [r2] | *(r2) = r3;
0x000062ee b 0x61d0 | goto label_6;
0x000062f0 ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r3 != 0) {
0x000062f2 cbz r3, 0x62fa |
0x000062f4 mov r0, r3 | r0 = r3;
0x000062f6 blx 0x1cb0 | fcn_00001cb0 ();
| }
0x000062fa ldr.w r3, [pc, 0x9ec] | r3 = *(0x6cea);
0x000062fe ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00006302 ldr r0, [r3] | r0 = *(0x6cea);
0x00006304 bl 0x9a7c | fcn_00009a7c (r0);
0x00006308 str r0, [sp, 0x28] | var_28h = r0;
0x0000630a b 0x61d0 | goto label_6;
0x0000630c ldr.w r0, [pc, 0x9dc] |
0x00006310 add r0, pc | r0 = 0xd000;
0x00006312 blx 0x1f5c | fcn_00001f5c ();
0x00006316 ldr.w r0, [pc, 0x9d8] |
0x0000631a add r0, pc | r0 = 0xd010;
0x0000631c blx 0x1f5c | fcn_00001f5c ();
0x00006320 b 0x62ca |
| } while (1);
0x00006322 ldr.w r3, [pc, 0x9c4] |
0x00006326 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x0000632a ldr r3, [r3] | r3 = *(0x6cea);
0x0000632c ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0000632e cmp r2, 0 |
| if (r2 != 0) {
0x00006330 bne.w 0x7480 | goto label_80;
| }
0x00006334 ldrb r3, [r3] | r3 = *(r3);
0x00006336 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00006338 strb.w r3, [r2, 0x7dc] | *((r2 + 0x7dc)) = r3;
0x0000633c b 0x61d0 | goto label_6;
0x0000633e ldr.w r3, [pc, 0x9a8] |
0x00006342 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00006346 ldr r3, [r3] | r3 = *(0x6cea);
0x00006348 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000634a b 0x61d0 | goto label_6;
0x0000634c ldr.w r3, [pc, 0x998] |
0x00006350 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00006352 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00006356 ldr r3, [r3] | r3 = *(0x6ce8);
0x00006358 str r3, [sp, 0x38] | var_38h = r3;
0x0000635a movs r3, 1 | r3 = 1;
0x0000635c strb.w r3, [r2, 0x7dd] | *((r2 + 0x7dd)) = r3;
0x00006360 b 0x61d0 | goto label_6;
0x00006362 add.w r6, sl, 2 | r6 = sl + 2;
0x00006366 ldr r0, [sp, 0x2c] | r0 = var_sp_2ch;
0x00006368 lsls r6, r6, 2 | r6 <<= 2;
0x0000636a mov r1, r6 | r1 = r6;
0x0000636c blx 0x200c | r0 = lzma_stream_decoder ();
0x00006370 cmp r0, 0 |
| if (r0 == 0) {
0x00006372 beq.w 0x7a2a | goto label_81;
| }
0x00006376 ldr.w r3, [pc, 0x970] |
0x0000637a add r6, r0 | r6 += r0;
0x0000637c str r0, [sp, 0x2c] | var_sp_2ch = r0;
0x0000637e add.w sl, sl, 1 | sl++;
0x00006382 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00006386 ldr r3, [r3] | r3 = *(0x6cea);
0x00006388 str r3, [r6, -0x8] | *((r6 - 0x8)) = r3;
0x0000638c movs r3, 0 | r3 = 0;
0x0000638e str r3, [r6, -0x4] | *((r6 - 0x4)) = r3;
0x00006392 b 0x61d0 | goto label_6;
0x00006394 movs r3, 1 | r3 = 1;
0x00006396 str r3, [sp, 0x44] | var_44h = r3;
0x00006398 b 0x61d0 | goto label_6;
0x0000639a movs r3, 1 | r3 = 1;
0x0000639c str r3, [sp, 0x40] | var_40h = r3;
0x0000639e b 0x61d0 | goto label_6;
| label_79:
0x000063a0 ldr.w r1, [pc, 0x950] |
0x000063a4 mov r2, r0 | r2 = r0;
0x000063a6 movs r0, 4 | r0 = 4;
0x000063a8 add r1, pc | r1 = 0xd0a0;
0x000063aa bl 0x8a58 | fcn_00008a58 (r0);
0x000063ae b 0x61d0 | goto label_6;
| label_77:
0x000063b0 ldr.w r3, [pc, 0x944] |
0x000063b4 mov r6, r0 | r6 = r0;
0x000063b6 ldr r2, [sp, 0x1c] | r2 = sig;
0x000063b8 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000063bc str r3, [sp, 0x50] | var_50h = r3;
0x000063be ldr r3, [r3] | r3 = *(0x6cf8);
0x000063c0 cmp r3, r2 |
| if (r3 < r2) {
0x000063c2 blt.w 0x667a | goto label_82;
| }
0x000063c6 add r4, sp, 0x1b0 | r4 += var_1b0h;
0x000063c8 sub.w r0, r4, 0x34 | r0 = r4 - 0x34;
0x000063cc blx 0x1c70 | r0 = strrchr (r0, r1);
0x000063d0 cmp r0, 0 |
| if (r0 < 0) {
0x000063d2 blt.w 0x744a | goto label_83;
| }
0x000063d6 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000063d8 add.w r3, r4, 0x4e | r3 = r4 + 0x4e;
0x000063dc subw r2, r2, 0x82c | __asm ("subw r2, r2, 0x82c");
0x000063e0 str r3, [r2] | *(r2) = r3;
| label_11:
0x000063e2 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000063e4 cmp r2, 0 |
| if (r2 == 0) {
0x000063e6 beq.w 0x66c4 | goto label_84;
| }
0x000063ea ldr r2, [sp, 0x28] | r2 = var_28h;
| label_13:
0x000063ec strd r2, r3, [sp, 4] | __asm ("strd r2, r3, [sp, 4]");
0x000063f0 sub.w r4, fp, 0x28 | r4 = fp - 0x28;
0x000063f4 ldr.w r3, [pc, 0x904] |
0x000063f8 movs r2, 1 | r2 = 1;
0x000063fa mov r0, r4 | r0 = r4;
0x000063fc add r3, pc | r3 = 0xd0fc;
0x000063fe str r3, [sp] | *(sp) = r3;
0x00006400 mov.w r3, 0x1000 | r3 = 0x1000;
0x00006404 mov r1, r3 | r1 = r3;
0x00006406 blx 0x1e24 | fcn_00001e24 ();
0x0000640a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000640c ldr r2, [sp, 0x40] | r2 = var_40h;
0x0000640e ldr r1, [sp, 0x1c] | r1 = sig;
0x00006410 str.w r0, [r3, 0x7d8] | __asm ("str.w r0, [r3, 0x7d8]");
0x00006414 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00006416 ldr r3, [r3] | r3 = *(r3);
0x00006418 cmp r3, r1 |
0x0000641a it eq |
| if (r3 != r1) {
0x0000641c moveq r2, 1 | r2 = 1;
| }
0x0000641e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006420 str r2, [sp, 0x40] | var_40h = r2;
0x00006422 cmp r3, 0 |
| if (r3 == 0) {
0x00006424 beq.w 0x66ae | goto label_85;
| }
0x00006426 strh r3, [r0, 0xa] | *((r0 + 0xa)) = r3;
0x00006428 ldr.w r3, [pc, 0x8ac] |
0x0000642c ldr r2, [sp, 0x34] | r2 = nmemb;
0x0000642e ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00006432 ldr r3, [r3] | r3 = *(0x6cd8);
0x00006434 cmp r3, r2 |
| if (r3 == r2) {
0x00006436 beq.w 0x66b4 | goto label_86;
| }
0x0000643a mov r0, r4 | r0 = r4;
0x0000643c blx 0x1b90 | r0 = fcn_00001b90 ();
0x00006440 mov r5, r0 | r5 = r0;
0x00006442 cmp r0, 0 |
| if (r0 == 0) {
0x00006444 beq.w 0x7a5c | goto label_87;
| }
0x00006448 blx 0x1e30 | fcn_00001e30 ();
0x0000644c ldr.w r1, [pc, 0x8b0] | r1 = fcn.0000df18;
0x00006450 movs r3, 0 | r3 = 0;
0x00006452 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00006454 add r1, pc | r1 += pc;
0x00006456 blx 0x1f38 | r0 = fcn_00001f38 ();
0x0000645a cmp r0, 0 |
| if (r0 != 0) {
0x0000645c bne.w 0x6b2c | goto label_88;
| }
0x00006460 add.w r8, sp, 0x1320 | r8 += arg_1320h;
0x00006464 mov r0, r4 | r0 = r4;
0x00006466 add.w r8, r8, 0xc | r8 += 0xc;
0x0000646a blx 0x1d74 | fcn_00001d74 ();
0x0000646e mov r1, r4 | r1 = r4;
0x00006470 mov r7, r0 | r7 = r0;
0x00006472 mov r2, r0 | r2 = r0;
0x00006474 mov.w r3, 0x1000 | r3 = 0x1000;
0x00006478 mov r0, r8 | r0 = r8;
0x0000647a blx 0x1d38 | fcn_00001d38 ();
0x0000647e ldr r1, [sp, 0x24] | r1 = var_24h;
0x00006480 movs r3, 0x2f | r3 = 0x2f;
0x00006482 strh.w r3, [r8, r7] | *((r8 + r7)) = r3;
0x00006486 adds r2, r7, 1 | r2 = r7 + 1;
0x00006488 mov r3, r8 | r3 = r8;
0x0000648a mov r0, r5 | r0 = r5;
0x0000648c sub.w r1, r1, 0xa20 | r1 -= 0xa20;
0x00006490 ldr r1, [r1, 0x50] | r1 = *((r1 + 0x50));
0x00006492 bl 0x4b00 | r0 = fcn_00004b00 (r0, r1, r2, r3);
0x00006496 mov r4, r0 | r4 = r0;
0x00006498 mov r0, r5 | r0 = r5;
0x0000649a blx 0x1e90 | fcn_00001e90 ();
| label_21:
0x0000649e cmp r4, 1 |
| if (r4 == 1) {
0x000064a0 beq.w 0x66b4 | goto label_86;
| }
| label_12:
0x000064a4 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000064a6 sub.w r5, fp, 0x28 | r5 = fp - 0x28;
0x000064aa mov r0, r5 | r0 = r5;
0x000064ac sub.w r1, r3, 0x38 | r1 = r3 - 0x38;
0x000064b0 bl 0xa178 | r0 = fcn_0000a178 (r0, r1);
0x000064b4 mov r4, r0 | r4 = r0;
0x000064b6 cmp r0, 0 |
| if (r0 == 0) {
0x000064b8 beq.w 0x6f64 | goto label_89;
| }
0x000064bc ldr.w r3, [pc, 0x844] |
0x000064c0 add r3, pc | r3 = 0xd1c8;
0x000064c2 ldr r1, [r3] | r1 = *(0xd1c8);
0x000064c4 bl 0x8b30 | fcn_00008b30 (r0, r1);
0x000064c8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000064ca movs r1, 0x80 | r1 = 0x80;
0x000064cc subw r5, r3, 0xaac | __asm ("subw r5, r3, 0xaac");
0x000064d0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000064d2 strd r3, r4, [r5] | __asm ("strd r3, r4, [r5]");
0x000064d6 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000064d8 sub.w r0, r3, 0x24 | r0 = r3 - 0x24;
0x000064dc bl 0x8fdc | fcn_00008fdc (r0, r1);
0x000064e0 movs r1, 0 | r1 = 0;
0x000064e2 mov.w r0, 0x200 | r0 = 0x200;
0x000064e6 bl 0x9094 | fcn_00009094 (r0, r1);
0x000064ea str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
0x000064ec cmp r0, 0 |
| if (r0 == 0) {
0x000064ee beq.w 0x67f2 | goto label_90;
| }
0x000064f2 movs r1, 0 | r1 = 0;
0x000064f4 mov.w r0, 0x200 | r0 = 0x200;
0x000064f8 bl 0x9094 | fcn_00009094 (r0, r1);
0x000064fc str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
0x000064fe cmp r0, 0 |
| if (r0 == 0) {
0x00006500 beq.w 0x73e4 | goto label_91;
| }
0x00006504 ldr.w r1, [pc, 0x800] | r1 = *(0x00006d08);
0x00006508 mov.w r0, 0x800 | r0 = 0x800;
0x0000650c add r1, pc | r1 += pc;
0x0000650e bl 0x9094 | fcn_00009094 (r0, r1);
0x00006512 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00006514 cmp r0, 0 |
| if (r0 == 0) {
0x00006516 beq.w 0x7592 | goto label_92;
| }
| label_17:
0x0000651a ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000651c cmp r0, 0 |
| if (r0 == 0) {
0x0000651e beq.w 0x66cc | goto label_93;
| }
0x00006522 ldr.w r1, [pc, 0x7e8] |
0x00006526 add r1, pc | r1 = 0xd238;
0x00006528 blx 0x1d9c | r0 = ftell (r0);
0x0000652c mov fp, r0 |
0x0000652e cmp r0, 0 |
| if (r0 == 0) {
0x00006530 beq.w 0x7942 | goto label_94;
| }
0x00006534 ldr.w r7, [pc, 0x7d8] |
0x00006538 add.w r8, sp, 0x1320 | r8 += arg_1320h;
0x0000653a ldr r1, [r3, r2] | r1 = *((r3 + r2));
0x0000653c ldr.w sl, [pc, 0x7d4] |
0x00006540 mov.w sb, 0 | sb = 0;
0x00006544 ldr.w r1, [pc, 0x7d0] |
0x00006548 add.w r8, r8, 0xc | r8 += 0xc;
0x0000654c add r7, pc | r7 = 0xd260;
0x0000654e ldr r2, [sp, 0x38] | r2 = var_38h;
0x00006550 add sl, pc | sl = 0xd268;
0x00006552 movs r0, 7 | r0 = 7;
0x00006554 add r1, pc | r1 = 0xd270;
0x00006556 bl 0x8a58 | fcn_00008a58 (r0);
| do {
| label_8:
0x0000655a mov r2, fp | r2 = fp;
0x0000655c mov.w r1, 0x2800 | r1 = 0x2800;
0x00006560 mov r0, r8 | r0 = r8;
0x00006562 blx 0x1c00 | r0 = fcn_00001c00 ();
0x00006564 adc.w r8, lr, r0, lsl 8 | __asm ("adc.w r8, lr, r0, lsl 8");
| if (r0 == 7) {
0x00006568 beq 0x65e4 | goto label_95;
| }
| label_9:
0x0000656a mov r1, r7 | r1 = r7;
0x0000656c mov r0, r8 | r0 = r8;
0x0000656e blx 0x1f08 | fcn_00001f08 ();
0x00006570 stcl p6, c4, [ip], {0x39} | __asm ("stcl p6, c4, [ip], {0x39}");
0x00006572 mov r1, r7 | r1 = r7;
0x00006574 mov r4, r0 | r4 = r0;
0x00006576 movs r0, 0 | r0 = 0;
0x00006578 add.w sb, sb, 1 | sb++;
0x0000657a lsrs r1, r0, 4 | r1 = r0 >> 4;
0x0000657c blx 0x1f08 | fcn_00001f08 ();
0x00006580 mov r1, r7 | r1 = r7;
0x00006582 mov r5, r0 | r5 = r0;
0x00006584 movs r0, 0 | r0 = 0;
0x00006586 blx 0x1f08 | r0 = fcn_00001f08 ();
0x00006588 stcl p13, c2, [r0], {0} | __asm ("stcl p13, c2, [r0], {0}");
0x0000658c it ne |
| if (r0 != 0) {
0x0000658e cmpne r4, 0 | __asm ("cmpne r4, 0");
| }
0x00006590 ite eq |
| if (r0 != 0) {
0x00006592 moveq r3, 1 | r3 = 1;
| }
| if (r0 == 0) {
0x00006594 movne r3, 0 | r3 = 0;
| }
0x00006596 cmp r0, 0 |
0x00006598 it eq |
| if (r0 != 0) {
0x0000659a orreq r3, r3, 1 | r3 |= 1;
| }
0x0000659e cmp r3, 0 |
0x000065a0 bne 0x655a |
| } while (r3 != 0);
0x000065a2 mov r1, sl | r1 = sl;
0x000065a4 blx 0x2058 | r0 = fcn_00002058 ();
0x000065a8 cmp r0, 0 |
| if (r0 != 0) {
0x000065aa bne 0x655a | goto label_8;
| }
0x000065ac movs r2, 0x10 | r2 = 0x10;
0x000065ae ldr r1, [sp, 0x18] | r1 = var_18h;
0x000065b0 mov r0, r4 | r0 = r4;
0x000065b2 blx 0x1ca0 | free (r0);
0x000065b6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000065b8 sub.w r3, r3, 0xa20 | r3 -= 0xa20;
0x000065bc ldr r3, [r3] | r3 = *(r3);
0x000065be ldrb r2, [r3] | r2 = *(r3);
0x000065c0 cmp r2, 0 |
| if (r2 != 0) {
0x000065c2 bne.w 0x67de | goto label_96;
| }
0x000065c6 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x000065ca mov r1, r5 | r1 = r5;
0x000065cc ldr r0, [sp, 0x48] | r0 = var_48h;
0x000065ce str r2, [sp, 8] | var_8h_2 = r2;
0x000065d0 bl 0x575c | fcn_0000575c (r0, r1, r2, r3);
0x000065d4 mov r2, fp | r2 = fp;
0x000065d6 mov.w r1, 0x2800 | r1 = 0x2800;
0x000065da mov r0, r8 | r0 = r8;
0x000065dc blx 0x1c00 | r0 = fcn_00001c00 ();
0x000065e0 cmp r0, 0 |
| if (r0 != 0) {
0x000065e2 bne 0x656a | goto label_9;
| }
| label_95:
0x000065e4 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000065e6 bl 0x57ec | fcn_000057ec (r0);
0x000065ea ldr.w r1, [pc, 0x730] |
0x000065ee movs r0, 7 | r0 = 7;
0x000065f0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000065f2 add r1, pc | r1 = 0xd314;
0x000065f4 bl 0x8a58 | fcn_00008a58 (r0);
0x000065f8 mov r0, fp | r0 = fp;
0x000065fa blx 0x1bf4 | fcn_00001bf4 ();
| label_15:
0x000065fe ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006600 cmp r3, 0 |
| if (r3 != 0) {
0x00006602 bne.w 0x6b48 | goto label_97;
| }
0x00006606 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00006608 ldr.w sb, [r3] | sb = *(r3);
0x0000660c ldr r3, [sp, 0x1c] | r3 = sig;
0x0000660e cmp r3, sb |
| if (r3 <= sb) {
0x00006610 ble.w 0x69a6 | goto label_42;
| }
0x00006614 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00006616 mov fp, r3 |
0x00006618 str r6, [sp, 0x1c] | sig = r6;
0x0000661a ldr.w sl, [sp, 0x48] | sl = var_48h;
0x0000661e ldr r6, [sp, 0x18] | r6 = var_18h;
0x00006620 add.w r4, r2, sb, lsl 2 | r4 = r2 + (sb << 2);
0x00006624 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00006626 subw r8, r2, 0xaac | __asm ("subw r8, r2, 0xaac");
0x0000662a sub.w r7, r2, 0xa20 | r7 = r2 - 0xa20;
0x0000662e b 0x665a |
| while (r3 == 0x2f) {
0x00006630 ldr.w r0, [r8, 4] | r0 = *((r8 + 4));
0x00006634 mov r2, r6 | r2 = r6;
0x00006636 mov r1, r5 | r1 = r5;
0x00006638 bl 0xcf78 | r0 = fcn_0000cf78 (r0, r1, r2);
0x0000663c cmp r0, 0 |
| if (r0 < 0) {
0x0000663e blt.w 0x7466 | goto label_98;
| }
0x00006642 ldr r1, [r7] | r1 = *(r7);
0x00006644 mov r0, sl | r0 = sl;
0x00006646 bl 0x4e24 | r0 = fcn_00004e24 (r0, r1, r2, r3);
0x0000664a cmp r0, 0 |
| if (r0 < 0) {
0x0000664c blt.w 0x7510 | goto label_99;
| }
0x0000664e strh r0, [r4, 0x3a] | *((r4 + 0x3a)) = r0;
0x00006650 add.w sb, sb, 1 | sb++;
0x00006654 cmp fp, sb |
| if (fp == sb) {
0x00006656 beq.w 0x7530 | goto label_100;
| }
0x0000665a ldr r5, [r4], 4 | r5 = *(r4);
| r4 += 4;
0x0000665e ldrb r3, [r5] | r3 = *(r5);
0x00006660 cmp r3, 0x2f |
0x00006662 beq 0x6630 |
| }
0x00006664 ldr.w r1, [pc, 0x6b8] |
0x00006668 mov r2, r5 | r2 = r5;
0x0000666a movs r0, 2 | r0 = 2;
0x0000666c add r1, pc | r1 = 0xd390;
0x0000666e bl 0x8a58 | fcn_00008a58 (r0);
| label_31:
0x00006672 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00006674 bl 0x4d7c | fcn_00004d7c (r0);
0x00006678 b 0x623c | goto label_10;
| label_82:
0x0000667a ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000667c ldr.w r1, [pc, 0x6a4] |
0x00006680 ldr.w r0, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| r0 = *((r2 + offset_0));
0x00006684 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x00006686 add r1, pc | r1 = 0xd3ae;
0x00006688 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000668a subs r2, 8 | r2 -= 8;
0x0000668c blx 0x1bc0 | r0 = fcn_00001bc0 ();
0x00006690 cmp r0, 2 |
| if (r0 != 2) {
0x00006692 bne.w 0x6f76 | goto label_101;
| }
0x00006696 ldr r0, [sp, 0x50] | r0 = var_50h;
0x00006698 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000669a ldr r2, [r0] | r2 = *(r0);
0x0000669c subw r1, r3, 0x82c | __asm ("subw r1, r3, 0x82c");
0x000066a0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000066a2 ldr.w r3, [r3, r2, lsl 2] | offset_1 = r2 << 2;
| r3 = *((r3 + offset_1));
0x000066a6 adds r2, 1 | r2++;
0x000066a8 str r2, [r0] | *(r0) = r2;
0x000066aa str r3, [r1] | *(r1) = r3;
0x000066ac b 0x63e2 | goto label_11;
| label_85:
0x000066ae ldr r3, [sp, 0x40] | r3 = var_40h;
0x000066b0 str r3, [sp, 0x44] | var_44h = r3;
0x000066b2 b 0x64a4 | goto label_12;
| label_86:
0x000066b4 movs r4, 0 | r4 = 0;
| label_34:
0x000066b6 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000066b8 bl 0x4d7c | fcn_00004d7c (r0);
0x000066bc ldr r0, [sp, 0x30] | r0 = var_30h;
0x000066be bl 0x4a74 | fcn_00004a74 (r0);
0x000066c2 b 0x6244 | goto label_7;
| label_84:
0x000066c4 ldr.w r2, [pc, 0x660] |
0x000066c8 add r2, pc | r2 = 0xd3f4;
0x000066ca b 0x63ec | goto label_13;
| label_93:
0x000066cc ldr r4, [sp, 0x3c] | r4 = var_3ch;
0x000066ce cmp r4, 0 |
| if (r4 == 0) {
0x000066d0 beq.w 0x73fc | goto label_102;
| }
0x000066d4 ldr.w r2, [pc, 0x654] |
0x000066d8 add.w r3, sp, 0x1320 | r3 += arg_1320h;
0x000066dc add r2, pc | r2 = 0xd40c;
0x000066de ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x000066e0 stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x000066e2 mov r0, r4 | r0 = r4;
0x000066e4 ldr.w r1, [pc, 0x648] |
0x000066e8 strh r2, [r3], 2 | *(r3) = r2;
| r3 += 2;
0x000066ec lsrs r2, r2, 0x10 | r2 >>= 0x10;
0x000066ee add r1, pc | r1 = 0xd422;
0x000066f0 strb r2, [r3] | *(r3) = r2;
0x000066f2 blx 0x1d9c | r0 = ftell (r0);
0x000066f6 mov r7, r0 | r7 = r0;
0x000066f8 cmp r0, 0 |
| if (r0 == 0) {
0x000066fa beq.w 0x7972 | goto label_103;
| }
0x000066fe ldr.w sl, [pc, 0x634] |
0x00006702 add.w sb, sp, 0x1320 | sb += arg_1320h;
0x00006706 ldr.w r1, [pc, 0x630] |
0x0000670a add.w r8, sp, 0x1320 | r8 += arg_1320h;
0x0000670e vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x00006712 add.w sb, sb, 0x10 | sb += 0x10;
0x00006716 add sl, pc | sl = 0xd450;
0x00006718 add.w r8, r8, 0xc | r8 += 0xc;
0x0000671c ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0000671e add r1, pc | r1 = 0xd45c;
0x00006720 movs r0, 7 | r0 = 7;
0x00006722 ldr r5, [sp, 0x38] | r5 = var_38h;
0x00006724 bl 0x8a58 | fcn_00008a58 (r0);
| do {
| label_16:
0x00006728 mov r2, r7 | r2 = r7;
0x0000672a mov.w r1, 0x2800 | r1 = 0x2800;
0x0000672e mov r0, r8 | r0 = r8;
0x00006730 blx 0x1c00 | r0 = fcn_00001c00 ();
0x00006734 cmp r0, 0 |
| if (r0 == 0) {
0x00006736 beq 0x67b0 | goto label_104;
| }
| label_14:
0x00006738 movs r1, 0x20 | r1 = 0x20;
0x0000673a mov r0, r8 | r0 = r8;
0x0000673c adds r5, 1 | r5++;
0x0000673e blx 0x1c34 | r0 = get_current_dir_name ();
0x00006742 cmp r0, 0 |
| if (r0 == 0) {
0x00006744 beq 0x67cc | goto label_105;
| }
0x00006746 adds r0, 1 | r0++;
0x00006748 movs r1, 0x20 | r1 = 0x20;
0x0000674a blx 0x1c34 | r0 = get_current_dir_name ();
0x0000674e cmp r0, 0 |
| if (r0 == 0) {
0x00006750 beq 0x67cc | goto label_105;
| }
0x00006752 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006754 sub.w r1, sb, 0x10 | r1 = sb - 0x10;
0x00006758 ldrb r2, [r0, 1] | r2 = *((r0 + 1));
0x0000675a subw r3, r3, 0xaac | __asm ("subw r3, r3, 0xaac");
0x0000675e ldr r3, [r3] | r3 = *(r3);
0x00006760 add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00006764 ldrb r3, [r3, 8] | r3 = *((r3 + 8));
0x00006766 cmp r2, r3 |
0x00006768 mov.w r2, 0xa | r2 = 0xa;
0x0000676a lsls r2, r1, 8 | r2 = r1 << 8;
0x0000676c ite ne |
| if (r2 == r1) {
0x0000676e addne r4, r0, 1 | r4 = r0 + 1;
| }
| if (r2 != r1) {
0x00006770 addeq r4, r0, 2 | r4 = r0 + 2;
| }
0x00006772 mov r0, r4 | r0 = r4;
0x00006774 blx 0x1ff4 | r0 = libc_start_main (r0, r1, r2, r3, r4, r5, r6);
0x00006778 mov fp, r0 |
0x0000677a cmp r0, 0 |
0x0000677c bne 0x6728 |
| } while (r0 != 0);
0x0000677e movs r1, 0xa | r1 = 0xa;
0x00006780 mov r0, r4 | r0 = r4;
0x00006782 blx 0x1c34 | r0 = get_current_dir_name ();
| if (r0 != 0) {
0x00006786 cbz r0, 0x678c |
0x00006788 strb.w fp, [r0] | *(r0) = fp;
| }
0x0000678c movs r3, 0 | r3 = 0;
0x0000678e ldr r0, [sp, 0x48] | r0 = var_48h;
0x00006790 add.w r1, r4, 0xa | r1 = r4 + 0xa;
0x00006794 movs r2, 1 | r2 = 1;
0x00006796 vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x0000679a str r3, [sp, 8] | var_8h_2 = r3;
0x0000679c bl 0x575c | fcn_0000575c (r0, r1, r2, r3);
0x000067a0 mov r2, r7 | r2 = r7;
0x000067a2 mov.w r1, 0x2800 | r1 = 0x2800;
0x000067a6 mov r0, r8 | r0 = r8;
0x000067a8 blx 0x1c00 | r0 = fcn_00001c00 ();
0x000067ac cmp r0, 0 |
| if (r0 != 0) {
0x000067ae bne 0x6738 | goto label_14;
| }
| label_104:
0x000067b0 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000067b2 bl 0x57ec | fcn_000057ec (r0);
0x000067b6 ldr.w r1, [pc, 0x584] |
0x000067ba movs r0, 7 | r0 = 7;
0x000067bc ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000067be add r1, pc | r1 = 0xd500;
0x000067c0 bl 0x8a58 | fcn_00008a58 (r0);
0x000067c4 mov r0, r7 | r0 = r7;
0x000067c6 blx 0x1bf4 | fcn_00001bf4 ();
0x000067ca b 0x65fe | goto label_15;
| label_105:
0x000067cc ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000067ce mov r3, r5 | r3 = r5;
0x000067d0 mov r1, sl | r1 = sl;
0x000067d2 movs r0, 3 | r0 = 3;
0x000067d4 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000067d6 strh r0, [r0] | *(r0) = r0;
0x000067d8 bl 0x8a58 | fcn_00008a58 (r0);
0x000067dc b 0x6728 | goto label_16;
| label_96:
0x000067de ldr.w r1, [pc, 0x560] |
0x000067e2 mov r3, sb | r3 = sb;
0x000067e4 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000067e6 movs r0, 3 | r0 = 3;
0x000067e8 str r4, [sp] | *(sp) = r4;
0x000067ea add r1, pc | r1 = 0xd530;
0x000067ec bl 0x8a58 | fcn_00008a58 (r0);
0x000067f0 b 0x655a | goto label_8;
| label_90:
0x000067f2 blx 0x207c | r0 = fcn_0000207c ();
0x000067f6 ldr r5, [r0] | r5 = *(r0);
0x000067f8 rsbs r5, r5, 0 | r5 -= ;
| label_39:
0x000067fa cmp r5, 0 |
| if (r5 >= 0) {
0x000067fc bge.w 0x651a | goto label_17;
| }
0x00006800 rsbs r0, r5, 0 | r0 = r5 - ;
0x00006802 blx 0x1b54 | fcn_00001b54 ();
0x00006806 ldr.w r1, [pc, 0x53c] |
0x0000680a mov r2, r0 | r2 = r0;
0x0000680c movs r0, 2 | r0 = 2;
0x0000680e add r1, pc | r1 = 0xd558;
0x00006810 bl 0x8a58 | fcn_00008a58 (r0);
0x00006814 mov r0, r4 | r0 = r4;
0x00006816 bl 0xa7d8 | fcn_0000a7d8 (r0);
0x0000681a b 0x623c | goto label_10;
| label_23:
0x0000681c ldr r2, [sp, 0x24] | r2 = var_24h;
0x0000681e mov r7, r4 | r7 = r4;
0x00006820 ldr r6, [sp, 0x38] | r6 = var_38h;
0x00006822 subw r3, r2, 0xab4 | __asm ("subw r3, r2, 0xab4");
0x00006826 ldr r5, [r3] | r5 = *(r3);
0x00006828 mov r3, r2 | r3 = r2;
0x0000682a sub.w r2, r2, 0xab0 | r2 -= 0xab0;
0x0000682e ldr r2, [r2] | r2 = *(r2);
0x00006830 str r2, [sp, 0x70] | var_70h = r2;
0x00006832 cmp r5, 0 |
| if (r5 == 0) {
0x00006834 beq.w 0x6962 | goto label_22;
| }
0x00006838 ldr.w r1, [pc, 0x50c] |
0x0000683c sub.w sl, r2, 4 | sl = r2 - 4;
0x00006840 ldr.w r4, [pc, 0x508] |
0x00006844 subw r2, r3, 0xa88 | __asm ("subw r2, r3, 0xa88");
0x00006848 str r6, [sp, 0x74] | var_74h = r6;
0x0000684a mov.w r8, 0 | r8 = 0;
0x0000684e add r1, pc | r1 = 0xd59a;
0x00006850 ldr r6, [sp, 0x18] | r6 = var_18h;
0x00006852 str r1, [sp, 0x1c] | sig = r1;
0x00006854 add r4, pc | r4 = 0xd5a4;
0x00006856 ldr.w r1, [pc, 0x4f8] |
0x0000685a str r2, [sp, 0x40] | var_40h = r2;
0x0000685c mov r2, sl | r2 = sl;
0x0000685e strd r5, r4, [sp, 0x5c] | __asm ("strd r5, r4, [sp, 0x5c]");
0x00006862 mov sl, r8 | sl = r8;
0x00006864 mov r5, r7 | r5 = r7;
0x00006866 mov r8, r2 | r8 = r2;
0x00006868 mov r7, r3 | r7 = r3;
0x0000686a add r1, pc | r1 = 0xd5c0;
0x0000686c str r1, [sp, 0x38] | var_38h = r1;
| label_18:
0x0000686e ldr r3, [r8, 4]! | r3 = *((r8 += 4));
0x00006872 movs r1, 0 | r1 = 0;
0x00006874 ldr r2, [sp, 0x40] | r2 = var_40h;
0x00006876 str r3, [sp, 0x44] | var_44h = r3;
0x00006878 adds r3, 0xc | r3 += 0xc;
0x0000687a str r1, [r2] | *(r2) = r1;
0x0000687c mov r0, r3 | r0 = r3;
0x0000687e ldr r1, [sp, 0x60] | r1 = var_60h;
0x00006880 str r3, [sp, 0x3c] | var_3ch = r3;
0x00006882 blx 0x1d9c | r0 = ftell (r0);
0x00006886 mov fp, r0 |
0x00006888 cmp r0, 0 |
| if (r0 == 0) {
0x0000688a beq.w 0x7a84 | goto label_106;
| }
0x0000688e ldr.w r3, [pc, 0x4c4] |
0x00006892 strd sl, r8, [sp, 0x54] | __asm ("strd sl, r8, [sp, 0x54]");
0x00006896 mov r8, r5 | r8 = r5;
0x00006898 add r3, pc | r3 = 0xd5f2;
0x0000689a str r3, [sp, 0x20] | var_20h = r3;
0x0000689c b 0x6932 |
| while (r0 != 0) {
0x0000689e ldrb r3, [r4] | r3 = *(r4);
0x000068a0 cmp r3, 0x23 |
0x000068a2 it ne |
| if (r3 != 0x23) {
0x000068a4 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r3 != 0x23) {
0x000068a6 beq 0x692c |
0x000068a8 ldr r1, [sp, 0x1c] | r1 = sig;
0x000068aa mov r2, r6 | r2 = r6;
0x000068ac blx 0x1f14 | r0 = fcn_00001f14 ();
0x000068b0 mov r5, r0 | r5 = r0;
0x000068b2 cmp r0, 0 |
| if (r0 == 0) {
0x000068b4 beq 0x692c | goto label_28;
| }
0x000068b6 ldr r1, [sp, 0x38] | r1 = var_38h;
0x000068b8 blx 0x2058 | r0 = fcn_00002058 ();
0x000068bc cmp r0, 0 |
| if (r0 == 0) {
0x000068be beq.w 0x6c90 | goto label_107;
| }
0x000068c2 ldr r1, [sp, 0x20] | r1 = var_20h;
0x000068c4 mov r0, r5 | r0 = r5;
0x000068c6 blx 0x2058 | r0 = fcn_00002058 ();
0x000068ca mov sb, r0 | sb = r0;
0x000068cc cmp r0, 0 |
| if (r0 == 0) {
0x000068ce beq.w 0x6da4 | goto label_108;
| }
0x000068d2 ldr.w r1, [pc, 0x484] |
0x000068d6 mov r0, r5 | r0 = r5;
0x000068d8 add r1, pc | r1 = 0xd636;
0x000068da blx 0x2058 | r0 = fcn_00002058 ();
0x000068de mov sl, r0 | sl = r0;
0x000068e0 cmp r0, 0 |
| if (r0 == 0) {
0x000068e2 beq.w 0x6e78 | goto label_109;
| }
0x000068e6 ldr.w r1, [pc, 0x474] |
0x000068ea mov r0, r5 | r0 = r5;
0x000068ec add r1, pc | r1 = 0xd64e;
0x000068ee blx 0x2058 | r0 = fcn_00002058 ();
0x000068f2 cmp r0, 0 |
| if (r0 == 0) {
0x000068f4 beq.w 0x6eec | goto label_110;
| }
0x000068f8 ldr.w r1, [pc, 0x464] |
0x000068fc mov r0, r5 | r0 = r5;
0x000068fe add r1, pc | r1 = 0xd662;
0x00006900 blx 0x2058 | r0 = fcn_00002058 ();
| if (r0 != 0) {
0x00006904 cbz r0, 0x6918 |
0x00006906 ldr.w r1, [pc, 0x45c] |
0x0000690a mov r0, r5 | r0 = r5;
0x0000690c add r1, pc | r1 = 0xd676;
0x0000690e blx 0x2058 | r0 = fcn_00002058 ();
0x00006912 cmp r0, 0 |
| if (r0 != 0) {
0x00006914 bne.w 0x6c7c | goto label_29;
| }
0x00006916 strh r2, [r6, 0xc] | *((r6 + 0xc)) = r2;
| }
0x00006918 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000691a movs r0, 6 | r0 = 6;
0x0000691c ldr.w r1, [pc, 0x448] |
0x00006920 str r5, [sp] | *(sp) = r5;
0x00006922 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00006924 ldr r3, [r3] | r3 = *(r3);
0x00006926 add r1, pc | r1 = 0xd692;
0x00006928 bl 0x8a58 | fcn_00008a58 (r0);
| }
| label_28:
0x0000692c mov r0, r4 | r0 = r4;
0x0000692e blx 0x1cb0 | fcn_00001cb0 ();
0x00006932 mov r1, r8 | r1 = r8;
0x00006934 mov r0, fp | r0 = fp;
0x00006936 bl 0x99b8 | r0 = fcn_000099b8 (r0, r1);
0x0000693a mov r4, r0 | r4 = r0;
0x0000693c cmp r0, 0 |
0x0000693e bne 0x689e |
| }
0x00006940 mov r0, fp | r0 = fp;
0x00006942 mov r5, r8 | r5 = r8;
0x00006944 ldr.w sl, [sp, 0x54] | sl = var_54h;
0x00006948 ldr.w r8, [sp, 0x58] | r8 = stream;
0x0000694c blx 0x1bf4 | fcn_00001bf4 ();
| label_61:
0x00006950 ldr r0, [sp, 0x44] | r0 = var_44h;
0x00006952 add.w sl, sl, 1 | sl++;
0x00006956 blx 0x1cb0 | fcn_00001cb0 ();
0x0000695a ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0000695c cmp sl, r3 |
| if (sl != r3) {
0x0000695e bne 0x686e | goto label_18;
| }
0x00006960 ldr r6, [sp, 0x74] | r6 = var_74h;
| label_22:
0x00006962 ldr r0, [sp, 0x70] | r0 = var_70h;
0x00006964 blx 0x1cb0 | fcn_00001cb0 ();
0x00006968 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000696a ldr.w r3, [r3, 0x7e4] | r3 = *((r3 + 0x7e4));
0x0000696e cmp r3, 0 |
| if (r3 == 0) {
0x00006970 beq.w 0x75a2 | goto label_111;
| }
| label_47:
0x00006974 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006976 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00006978 subw r4, r3, 0xaac | __asm ("subw r4, r3, 0xaac");
0x0000697c ldr r1, [r4] | r1 = *(r4);
0x0000697e adds r1, 4 | r1 += 4;
0x00006980 bl 0x6088 | r0 = void (*0x6088)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
0x00006984 cmp r0, 0 |
| if (r0 < 0) {
0x00006986 blt.w 0x755e | goto label_112;
| }
0x0000698a ldr r3, [r4] | r3 = *(r4);
0x0000698c add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00006990 ldr r4, [r3, 0x14] | r4 = *((r3 + 0x14));
| if (r4 == 0) {
0x00006992 cbz r4, 0x69a6 | goto label_42;
| }
0x00006994 ldr r5, [sp, 0x48] | r5 = var_48h;
| do {
0x00006996 add.w r1, r4, 8 | r1 = r4 + 8;
0x0000699a mov r0, r5 | r0 = r5;
0x0000699c bl 0x6088 | void (*0x6088)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
0x000069a0 ldr r4, [r4] | r4 = *(r4);
0x000069a2 cmp r4, 0 |
0x000069a4 bne 0x6996 |
| } while (r4 != 0);
| label_42:
0x000069a6 ldr r4, [sp, 0x24] | r4 = var_24h;
0x000069a8 add r7, sp, 0xa8 | r7 += var_a8h;
0x000069aa ldr.w sl, [sp, 0x18] | sl = var_18h;
0x000069ae subw r5, r4, 0xaac | __asm ("subw r5, r4, 0xaac");
0x000069b2 subw r8, r4, 0xa88 | __asm ("subw r8, r4, 0xa88");
0x000069b6 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x000069b8 mov r1, sl | r1 = sl;
0x000069ba bl 0x9640 | fcn_00009640 (r0, r1);
0x000069be mov r4, sl | r4 = sl;
0x000069c0 ldr.w sb, [sp, 0x4c] | sb = var_4ch;
0x000069c4 b 0x69dc |
| while (r0 != 0) {
0x000069c6 ldr.w r1, [r8] | r1 = *(r8);
0x000069ca sub.w r0, sb, 0x24 | r0 = sb - 0x24;
0x000069cc movs r4, r4 |
0x000069ce ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000069d0 strh r3, [r1, 0x38] | *((r1 + 0x38)) = r3;
0x000069d2 bl 0x9014 | r0 = fcn_00009014 (r0, r1);
0x000069d6 cmp r0, 0 |
| if (r0 < 0) {
0x000069d8 blt.w 0x753c | goto label_113;
| }
0x000069dc mov r2, r7 | r2 = r7;
0x000069de movs r1, 0 | r1 = 0;
0x000069e0 mov r0, r4 | r0 = r4;
0x000069e2 bl 0x9650 | r0 = fcn_00009650 (r0, r1, r2, r3);
0x000069e6 cmp r0, 0 |
0x000069e8 bne 0x69c6 |
| }
0x000069ea ldr r3, [sp, 0x24] | r3 = var_24h;
0x000069ec mov r4, r0 | r4 = r0;
0x000069ee ldr r1, [pc, 0x37c] |
0x000069f0 subw r3, r3, 0xaac | __asm ("subw r3, r3, 0xaac");
0x000069f4 ldr r0, [r3] | r0 = *(r3);
0x000069f6 add r1, pc | r1 = 0xd768;
0x000069f8 adds r0, 4 | r0 += 4;
0x000069fa bl 0x5664 | r0 = fcn_00005664 (r0, r1);
0x000069fe mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00006a00 cbz r0, 0x6a54 | goto label_114;
| }
0x00006a02 add.w r8, sp, 0x1320 | r8 += arg_1320h;
0x00006a06 add.w r8, r8, 0xc | r8 += 0xc;
0x00006a0a mov r7, r8 | r7 = r8;
| do {
| label_19:
0x00006a0c mov r2, r5 | r2 = r5;
0x00006a0e mov.w r1, 0x1000 | r1 = 0x1000;
0x00006a12 mov r0, r8 | r0 = r8;
0x00006a14 blx 0x1c00 | fcn_00001c00 ();
0x00006a16 ldrd r2, r8, [r4], 0 | __asm ("ldrd r2, r8, [r4], 0");
| if (r0 == 0) {
0x00006a1a beq.w 0x7490 | goto label_115;
| }
0x00006a1e mov r0, r8 | r0 = r8;
0x00006a20 adds r4, 1 | r4++;
0x00006a22 blx 0x1d74 | r0 = fcn_00001d74 ();
0x00006a26 cmp r0, 0 |
0x00006a28 beq 0x6a0c |
| } while (r0 == 0);
0x00006a2a add r0, r7 | r0 += r7;
0x00006a2c ldrb r3, [r0, -0x1] | r3 = *((r0 - 0x1));
0x00006a30 cmp r3, 0xa |
| if (r3 == 0xa) {
0x00006a32 beq 0x6a0c | goto label_19;
| }
0x00006a34 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006a36 movs r0, 3 | r0 = 3;
0x00006a38 ldr r1, [pc, 0x334] |
0x00006a3a str r4, [sp] | *(sp) = r4;
0x00006a3c subw r3, r3, 0xaac | __asm ("subw r3, r3, 0xaac");
0x00006a40 ldr r2, [r3] | r2 = *(r3);
0x00006a42 add r1, pc | r1 = 0xd7b6;
0x00006a44 ldr r3, [pc, 0x32c] |
0x00006a46 adds r2, 4 | r2 += 4;
0x00006a48 add r3, pc | r3 = 0xd7c0;
0x00006a4a bl 0x8a58 | fcn_00008a58 (r0);
| label_41:
0x00006a4e mov r0, r5 | r0 = r5;
0x00006a50 blx 0x1bf4 | fcn_00001bf4 ();
| label_114:
0x00006a54 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006a56 movs r0, 7 | r0 = 7;
0x00006a58 ldr r1, [pc, 0x31c] |
0x00006a5a subw r4, r3, 0xaac | __asm ("subw r4, r3, 0xaac");
0x00006a5e ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00006a60 add r1, pc | r1 = 0xd7dc;
0x00006a62 bl 0x8a58 | fcn_00008a58 (r0);
0x00006a66 ldrd r3, r2, [r4, 8] | __asm ("ldrd r3, r2, [r4, 8]");
0x00006a6a add.w fp, r3, r2, lsl 2 |
0x00006a6e cmp r3, fp |
| if (r3 >= fp) {
0x00006a70 bhs.w 0x6f92 | goto label_116;
| }
0x00006a74 ldr.w sl, [pc, 0x304] |
0x00006a78 mov r8, r3 | r8 = r3;
0x00006a7a ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006a7c mov.w sb, 0 | sb = 0;
0x00006a80 str r6, [sp, 0x20] | var_20h = r6;
0x00006a82 add sl, pc | sl = 0xd802;
0x00006a84 ldr r6, [sp, 0x48] | r6 = var_48h;
0x00006a86 sub.w r7, r3, 0xa20 | r7 = r3 - 0xa20;
0x00006a8a str.w sl, [sp, 0x1c] | __asm ("str.w sl, [sig]");
0x00006a8e b 0x6acc |
| while (r0 < 0) {
0x00006a90 adds r3, r0, 2 | r3 = r0 + 2;
0x00006a92 ldr r4, [r5, 4] | r4 = *((r5 + 4));
| if (r3 == r0) {
0x00006a94 beq 0x6b1e | goto label_117;
| }
0x00006a96 rsbs r0, r0, 0 | r0 -= ;
0x00006a98 blx 0x1b54 | fcn_00001b54 ();
0x00006a9c ldr r1, [sp, 0x1c] | r1 = sig;
0x00006a9e mov r3, r0 | r3 = r0;
0x00006aa0 mov r2, r4 | r2 = r4;
0x00006aa2 movs r0, 3 | r0 = 3;
0x00006aa4 bl 0x8a58 | fcn_00008a58 (r0);
| label_20:
0x00006aa8 mov r1, r5 | r1 = r5;
0x00006aaa ldr r0, [r1], 0x10 | r0 = *(r1);
| r1 += 0x10;
0x00006aae bl 0xe7b0 | fcn_0000e7b0 (r0, r1, r2, r3);
0x00006ab2 mov r1, r5 | r1 = r5;
0x00006ab4 ldr r0, [r1], 0x14 | r0 = *(r1);
| r1 += 0x14;
0x00006ab8 bl 0xeca8 | fcn_0000eca8 (r0, r1, r2);
0x00006abc ldr r0, [r5] | r0 = *(r5);
0x00006abe bl 0xd418 | fcn_0000d418 (r0);
0x00006ac2 cmp fp, r8 |
0x00006ac4 str.w sb, [r5] | __asm ("str.w sb, [r5]");
| if (fp < r8) {
0x00006ac8 bls.w 0x6f90 | goto label_118;
| }
0x00006acc ldr r5, [r8], 4 | r5 = *(r8);
| r8 += 4;
0x00006ad0 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00006ad2 str.w sb, [r7] | __asm ("str.w sb, [r7]");
0x00006ad6 ldr r0, [r5] | r0 = *(r5);
0x00006ad8 bl 0xeb54 | r0 = fcn_0000eb54 (r0, r1, r2, r3);
0x00006adc cmp r0, 0 |
0x00006ade blt 0x6a90 |
| }
0x00006ae0 ldr.w sl, [r7] | sl = *(r7);
0x00006ae4 cmp.w sl, 0 |
| if (sl == 0) {
0x00006ae8 beq.w 0x7536 | goto label_119;
| }
0x00006aec mov r4, sl | r4 = sl;
| do {
0x00006aee mov r0, r4 | r0 = r4;
0x00006af0 bl 0xeb18 | r0 = fcn_0000eb18 (r0);
0x00006af4 mov sl, r0 | sl = r0;
0x00006af6 mov r0, r4 | r0 = r4;
0x00006af8 bl 0xeb24 | fcn_0000eb24 (r0);
0x00006afc movs r2, 0 | r2 = 0;
0x00006afe strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x00006b02 str r5, [sp, 8] | var_8h_2 = r5;
0x00006b04 mov r0, r6 | r0 = r6;
0x00006b06 mov r1, sl | r1 = sl;
0x00006b08 bl 0x575c | fcn_0000575c (r0, r1, r2, r3);
0x00006b0c ldr r4, [r4] | r4 = *(r4);
0x00006b0e ldr r0, [r7] | r0 = *(r7);
0x00006b10 cmp r4, r0 |
| if (r4 == r0) {
0x00006b12 beq 0x6b18 | goto label_43;
| }
0x00006b14 cmp r4, 0 |
0x00006b16 bne 0x6aee |
| } while (r4 != 0);
| label_43:
0x00006b18 bl 0xeb38 | fcn_0000eb38 (r0);
0x00006b1c b 0x6aa8 | goto label_20;
| label_117:
0x00006b1e ldr r1, [pc, 0x260] |
0x00006b20 mov r2, r4 | r2 = r4;
0x00006b22 movs r0, 7 | r0 = 7;
0x00006b24 add r1, pc | r1 = 0xd8aa;
0x00006b26 bl 0x8a58 | fcn_00008a58 (r0);
0x00006b2a b 0x6aa8 | goto label_20;
| label_88:
0x00006b2c blx 0x207c | fcn_0000207c ();
0x00006b30 ldr r1, [pc, 0x250] |
0x00006b32 mov r2, r4 | r2 = r4;
0x00006b34 ldr r3, [r0] | r3 = *(r0);
0x00006b36 movs r0, 3 | r0 = 3;
0x00006b38 add r1, pc | r1 = 0xd8c0;
0x00006b3a rsbs r4, r3, 0 | r4 = r3 - ;
0x00006b3c bl 0x8a58 | fcn_00008a58 (r0);
0x00006b40 mov r0, r5 | r0 = r5;
0x00006b42 blx 0x1e90 | fcn_00001e90 ();
0x00006b46 b 0x649e | goto label_21;
| label_97:
0x00006b48 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00006b4a movs r3, 0 | r3 = 0;
0x00006b4c subw r2, r1, 0xab4 | __asm ("subw r2, r1, 0xab4");
0x00006b50 str r3, [r2] | *(r2) = r3;
0x00006b52 sub.w r2, r1, 0xab0 | r2 = r1 - 0xab0;
0x00006b56 str r3, [r2] | *(r2) = r3;
0x00006b58 ldr r3, [sp, 0x2c] | r3 = var_sp_2ch;
0x00006b5a cmp r3, 0 |
| if (r3 == 0) {
0x00006b5c beq.w 0x7554 | goto label_120;
| }
0x00006b60 ldr r3, [sp, 0x2c] | r3 = var_sp_2ch;
| label_44:
0x00006b62 ldr r5, [r3] | r5 = *(r3);
0x00006b64 str r5, [sp, 0x70] | var_70h = r5;
0x00006b66 cmp r5, 0 |
| if (r5 == 0) {
0x00006b68 beq.w 0x6962 | goto label_22;
| }
0x00006b6c ldr.w sl, [pc, 0x218] |
0x00006b70 add r7, sp, 0xa8 | r7 += var_a8h;
0x00006b72 ldr.w fp, [pc, 0x218] |
0x00006b76 mov r4, r7 | r4 = r7;
0x00006b78 ldr.w sb, [sp, 0x24] | sb = var_24h;
0x00006b7c mov r8, r3 | r8 = r3;
0x00006b7e add sl, pc | sl = 0xd90a;
0x00006b80 ldr r7, [sp, 0x4c] | r7 = var_4ch;
0x00006b82 add fp, pc | fp = 0xd914;
0x00006b84 str r6, [sp, 0x38] | var_38h = r6;
0x00006b86 str.w sl, [sp, 0x1c] | __asm ("str.w sl, [sig]");
0x00006b8a b 0x6ba6 | goto label_121;
| label_24:
0x00006b8c mov r3, r0 | r3 = r0;
0x00006b8e mov r2, r5 | r2 = r5;
0x00006b90 sub.w r1, r7, 0x34 | r1 = r7 - 0x34;
0x00006b94 sub.w r0, r7, 0x30 | r0 = r7 - 0x30;
0x00006b98 bl 0x5884 | fcn_00005884 (r0, r1, r2, r3, r4);
| label_27:
0x00006b9c ldr r5, [r8, 4]! | r5 = *((r8 += 4));
0x00006ba0 cmp r5, 0 |
| if (r5 == 0) {
0x00006ba2 beq.w 0x681c | goto label_23;
| }
| label_121:
0x00006ba6 mov r1, r4 | r1 = r4;
0x00006ba8 mov r0, r5 | r0 = r5;
0x00006baa blx 0x1d20 | r0 = fcn_00001d20 ();
0x00006bae cmp r0, 0 |
| if (r0 != 0) {
0x00006bb0 bne 0x6c60 | goto label_122;
| }
0x00006bb2 subw r2, sb, 0xa88 | __asm ("subw r2, sb, 0xa88");
0x00006bb6 ldr r2, [r2, 0x10] | r2 = *((r2 + 0x10));
0x00006bb8 and r2, r2, 0xf000 | r2 &= 0xf000;
0x00006bbc cmp.w r2, 0x4000 |
| if (r2 != 0x4000) {
0x00006bc0 bne 0x6b8c | goto label_24;
| }
0x00006bc2 mov r0, r5 | r0 = r5;
0x00006bc4 blx 0x1b90 | r0 = fcn_00001b90 ();
0x00006bc8 mov r6, r0 | r6 = r0;
0x00006bca cmp r0, 0 |
| if (r0 == 0) {
0x00006bcc beq.w 0x7a74 | goto label_123;
| }
0x00006bd0 blx 0x1fac | r0 = strcspn (r0, r1);
0x00006bd4 cmp r0, 0 |
| if (r0 == 0) {
0x00006bd6 beq 0x6c4c | goto label_124;
| }
0x00006bd8 str r4, [sp, 0x20] | var_20h = r4;
0x00006bda mov r4, r0 | r4 = r0;
0x00006bdc b 0x6c18 | goto label_125;
| label_25:
0x00006bde mov r0, r6 | r0 = r6;
0x00006be0 blx 0x1e30 | fcn_00001e30 ();
0x00006be4 mov r3, r4 | r3 = r4;
0x00006be6 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00006be8 mov r1, sl | r1 = sl;
0x00006bea blx 0x1f38 | fcn_00001f38 ();
0x00006bee sub.w r3, sb, 0xa20 | r3 = sb - 0xa20;
0x00006bf2 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00006bf4 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00006bf8 cmp.w r3, 0x4000 |
0x00006bfc mov r3, sl | r3 = sl;
| if (r3 == 0x4000) {
0x00006bfe beq 0x6c6e | goto label_126;
| }
0x00006c00 mov r2, r5 | r2 = r5;
0x00006c02 sub.w r1, r7, 0x34 | r1 = r7 - 0x34;
0x00006c06 sub.w r0, r7, 0x30 | r0 = r7 - 0x30;
0x00006c0a bl 0x5884 | fcn_00005884 (r0, r1, r2, r3, r4);
| do {
| label_26:
0x00006c0e mov r0, r6 | r0 = r6;
0x00006c10 blx 0x1fac | r0 = strcspn (r0, r1);
0x00006c14 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00006c16 cbz r0, 0x6c4a | goto label_127;
| }
| label_125:
0x00006c18 add.w sl, r4, 0x13 | sl = r4 + 0x13;
0x00006c1c mov r0, sl | r0 = sl;
0x00006c1e blx 0x1d74 | fcn_00001d74 ();
0x00006c22 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x00006c24 cmp r3, 0x2e |
0x00006c26 beq 0x6c0e |
| } while (r3 == 0x2e);
0x00006c28 cmp r0, 5 |
| if (r0 < 5) {
0x00006c2a bls 0x6c3c | goto label_128;
| }
0x00006c2c subs r0, 5 | r0 -= 5;
0x00006c2e mov r1, fp | r1 = fp;
0x00006c30 add r0, sl | r0 += sl;
0x00006c32 blx 0x2058 | r0 = fcn_00002058 ();
0x00006c36 mov r4, r0 | r4 = r0;
0x00006c38 cmp r0, 0 |
| if (r0 == 0) {
0x00006c3a beq 0x6bde | goto label_25;
| }
| label_128:
0x00006c3c ldr r1, [sp, 0x1c] | r1 = sig;
0x00006c3e mov r3, sl | r3 = sl;
0x00006c40 mov r2, r5 | r2 = r5;
0x00006c42 movs r0, 6 | r0 = 6;
0x00006c44 bl 0x8a58 | fcn_00008a58 (r0);
0x00006c48 b 0x6c0e | goto label_26;
| label_127:
0x00006c4a ldr r4, [sp, 0x20] | r4 = var_20h;
| label_124:
0x00006c4c mov r0, r6 | r0 = r6;
0x00006c4e blx 0x1e90 | fcn_00001e90 ();
0x00006c52 ldr r1, [pc, 0x13c] |
0x00006c54 mov r2, r5 | r2 = r5;
0x00006c56 movs r0, 7 | r0 = 7;
0x00006c58 add r1, pc | r1 = 0xd9ee;
0x00006c5a bl 0x8a58 | fcn_00008a58 (r0);
0x00006c5e b 0x6b9c | goto label_27;
| label_122:
0x00006c60 ldr r1, [pc, 0x130] |
0x00006c62 mov r2, r5 | r2 = r5;
0x00006c64 movs r0, 7 | r0 = 7;
0x00006c66 add r1, pc | r1 = 0xd9fe;
0x00006c68 bl 0x8a58 | fcn_00008a58 (r0);
0x00006c6c b 0x6b9c | goto label_27;
| label_126:
0x00006c6e ldr r1, [pc, 0x128] |
0x00006c70 mov r2, r5 | r2 = r5;
0x00006c72 movs r0, 3 | r0 = 3;
0x00006c74 add r1, pc | r1 = 0xda12;
0x00006c76 bl 0x8a58 | fcn_00008a58 (r0);
0x00006c7a b 0x6c0e | goto label_26;
| label_29:
0x00006c7c ldr r3, [sp, 0x40] | r3 = var_40h;
0x00006c7e movs r0, 3 | r0 = 3;
0x00006c80 ldr r1, [pc, 0x118] |
0x00006c82 str r5, [sp] | *(sp) = r5;
0x00006c84 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00006c86 ldr r3, [r3] | r3 = *(r3);
0x00006c88 add r1, pc | r1 = 0xda28;
0x00006c8a bl 0x8a58 | fcn_00008a58 (r0);
0x00006c8e b 0x692c | goto label_28;
| label_107:
0x00006c90 ldr r5, [pc, 0x10c] |
0x00006c92 ldr.w sb, [sp, 0x30] | sb = var_30h;
0x00006c96 add r5, pc | r5 = 0xda3a;
0x00006c98 b 0x6ca0 |
| while (r0 != 0) {
0x00006c9a mov r0, sb | r0 = sb;
0x00006c9c bl 0x59b8 | fcn_000059b8 (r0, r1);
0x00006ca0 mov r1, r5 | r1 = r5;
0x00006ca2 mov r2, r6 | r2 = r6;
0x00006ca4 movs r0, 0 | r0 = 0;
0x00006ca6 blx 0x1f14 | r0 = fcn_00001f14 ();
0x00006caa mov r1, r0 | r1 = r0;
0x00006cac cmp r0, 0 |
0x00006cae bne 0x6c9a |
| }
0x00006cb0 b 0x692c | goto label_28;
| label_108:
0x00006da4 ldr.w sl, [sp, 0x1c] | sl = sig;
0x00006da8 mov r2, r6 | r2 = r6;
0x00006daa mov r1, sl | r1 = sl;
0x00006dac blx 0x1f14 | fcn_00001f14 ();
0x00006db0 mov r1, sl | r1 = sl;
0x00006db2 mov r2, r6 | r2 = r6;
0x00006db4 str r0, [sp, 0x50] | var_50h = r0;
0x00006db6 mov r0, sb | r0 = sb;
0x00006db8 str.w sl, [sp, 0x1c] | __asm ("str.w sl, [sig]");
0x00006dbc blx 0x1f14 | fcn_00001f14 ();
0x00006dc0 ldr r1, [sp, 0x1c] | r1 = sig;
0x00006dc2 mov sl, r0 | sl = r0;
0x00006dc4 mov r2, r6 | r2 = r6;
0x00006dc6 mov r0, sb | r0 = sb;
0x00006dc8 blx 0x1f14 | fcn_00001f14 ();
0x00006dcc ldr r3, [sp, 0x50] | r3 = var_50h;
0x00006dce mov sb, r0 | sb = r0;
0x00006dd0 cmp.w sl, 0 |
0x00006dd4 it ne |
| if (sl != 0) {
0x00006dd6 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x00006dd8 ite eq |
| if (sl != 0) {
0x00006dda moveq r3, 1 | r3 = 1;
| }
| if (sl == 0) {
0x00006ddc movne r3, 0 | r3 = 0;
| }
0x00006dde cmp r0, 0 |
0x00006de0 it eq |
| if (r0 != 0) {
0x00006de2 orreq r3, r3, 1 | r3 |= 1;
| }
0x00006de6 str r3, [sp, 0x64] | var_ch_2 = r3;
0x00006de8 cmp r3, 0 |
| if (r3 != 0) {
0x00006dea bne.w 0x6c7c | goto label_29;
| }
0x00006dee ldr r0, [sp, 0x30] | r0 = var_30h;
0x00006df0 mov r1, sl | r1 = sl;
0x00006df2 bl 0x5568 | fcn_00005568 (r0, r1);
0x00006df6 ldr r3, [sp, 0x64] | r3 = var_ch_2;
0x00006df8 cmp r0, 0 |
| if (r0 == 0) {
0x00006dfa beq.w 0x6f4c | goto label_129;
| }
0x00006dfe ldr r0, [sp, 0x50] | r0 = var_50h;
0x00006e00 str r3, [sp, 0x68] | var_68h = r3;
0x00006e02 blx 0x1d74 | fcn_00001d74 ();
0x00006e04 vext.16 d4, d24, d2, 3 | __asm ("vext.16 d4, d24, d2, 3");
0x00006e08 mov r0, sb | r0 = sb;
0x00006e0a blx 0x1d74 | r0 = fcn_00001d74 ();
0x00006e0e mov r2, r0 | r2 = r0;
0x00006e10 add r0, sl | r0 += sl;
0x00006e12 adds r0, 0xa | r0 += 0xa;
0x00006e14 str r2, [sp, 0x64] | var_ch_2 = r2;
0x00006e16 blx 0x1ec0 | fcn_00001ec0 ();
0x00006e1a ldrd r2, r3, [sp, 0x64] | __asm ("ldrd r2, r3, [var_ch_2]");
0x00006e1e mov r5, r0 | r5 = r0;
0x00006e20 cmp r0, 0 |
| if (r0 == 0) {
0x00006e22 beq.w 0x7926 | goto label_130;
| }
0x00006e26 str r3, [sp, 0x6c] | var_6ch = r3;
0x00006e28 add.w r3, r0, 8 | r3 = r0 + 8;
0x00006e2c mov r1, sb | r1 = sb;
0x00006e2e mov r0, r3 | r0 = r3;
0x00006e30 strd r3, r2, [sp, 0x64] | __asm ("strd r3, r2, [sp, 0x64]");
0x00006e34 blx 0x1d90 | feof (r0);
0x00006e38 ldr r2, [sp, 0x68] | r2 = var_68h;
0x00006e3a movs r0, 0x2f | r0 = 0x2f;
0x00006e3c ldr r3, [sp, 0x64] | r3 = var_ch_2;
0x00006e3e ldr r1, [sp, 0x50] | r1 = var_50h;
0x00006e40 add.w sb, r2, 1 | sb = r2 + 1;
0x00006e44 add r2, r5 | r2 += r5;
0x00006e46 strb r0, [r2, 8] | *((r2 + 8)) = r0;
0x00006e48 mov r2, sl | r2 = sl;
0x00006e4a add.w r0, r3, sb | r0 = r3 + sb;
0x00006e4e blx 0x1d90 | feof (r0);
0x00006e52 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00006e54 add.w r1, sl, sb | r1 = sl + sb;
0x00006e58 adds r0, r5, r1 | r0 = r5 + r1;
0x00006e5a ldr r2, [sp, 0x64] | r2 = var_ch_2;
0x00006e5c strb r3, [r0, 8] | *((r0 + 8)) = r3;
0x00006e5e movs r0, 7 | r0 = 7;
0x00006e60 str r1, [r5, 4] | *((r5 + 4)) = r1;
0x00006e62 ldr.w r1, [pc, 0xc40] |
0x00006e66 add r1, pc | r1 = 0xe910;
0x00006e68 bl 0x8a58 | fcn_00008a58 (r0);
0x00006e6a ldc2l p8, c15, [r6, 0x35c]! | __asm ("ldc2l p8, c15, [r6, 0x35c]!");
0x00006e6e adds r7, 0xe0 | r7 += 0xe0;
0x00006e70 str.w r5, [r7, 0x7e0] | __asm ("str.w r5, [r7, 0x7e0]");
0x00006e72 ldrsb r0, [r4, r7] | r0 = *((r4 + r7));
0x00006e74 str r3, [r5] | *(r5) = r3;
0x00006e76 b 0x692c | goto label_28;
| label_109:
0x00006e78 ldr r1, [sp, 0x1c] | r1 = sig;
0x00006e7a mov r2, r6 | r2 = r6;
0x00006e7c blx 0x1f14 | fcn_00001f14 ();
0x00006e80 ldr r1, [sp, 0x1c] | r1 = sig;
0x00006e82 mov sb, r0 | sb = r0;
0x00006e84 mov r2, r6 | r2 = r6;
0x00006e86 mov r0, sl | r0 = sl;
0x00006e88 blx 0x1f14 | r0 = fcn_00001f14 ();
0x00006e8c cmp r0, 0 |
0x00006e8e it ne |
| if (r0 != 0) {
0x00006e90 cmpne sb, 0 | __asm ("cmpne sb, 0");
| }
0x00006e94 mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x00006e96 beq.w 0x6c7c | goto label_29;
| }
0x00006e9a ldr r0, [sp, 0x30] | r0 = var_30h;
0x00006e9c mov r1, sb | r1 = sb;
0x00006e9e bl 0x5568 | r0 = fcn_00005568 (r0, r1);
0x00006ea2 cmp r0, 0 |
| if (r0 == 0) {
0x00006ea4 beq.w 0x742e | goto label_131;
| }
0x00006ea8 mov r0, sl | r0 = sl;
0x00006eaa blx 0x1d74 | r0 = fcn_00001d74 ();
0x00006eae mov sb, r0 | sb = r0;
0x00006eb0 adds r0, 9 | r0 += 9;
0x00006eb2 blx 0x1ec0 | r0 = fcn_00001ec0 ();
0x00006eb6 mov r5, r0 | r5 = r0;
0x00006eb8 cmp r0, 0 |
| if (r0 == 0) {
0x00006eba beq.w 0x7934 | goto label_132;
| }
0x00006ebe add.w r3, r0, 8 | r3 = r0 + 8;
0x00006ec2 mov r1, sl | r1 = sl;
0x00006ec4 mov r0, r3 | r0 = r3;
0x00006ec6 add.w r2, sb, 1 | r2 = sb + 1;
0x00006eca blx 0x1d90 | feof (r0);
0x00006ece ldr.w r1, [pc, 0xbd8] |
0x00006ed2 mov r2, r0 | r2 = r0;
0x00006ed4 str.w sb, [r5, 4] | __asm ("str.w sb, [r5, 4]");
0x00006ed8 movs r0, 7 | r0 = 7;
0x00006eda add r1, pc | r1 = 0xe988;
0x00006edc bl 0x8a58 | fcn_00008a58 (r0);
0x00006ee0 ldr.w r3, [r7, 0x7e8] | r3 = *((r7 + 0x7e8));
0x00006ee4 str.w r5, [r7, 0x7e8] | __asm ("str.w r5, [r7, 0x7e8]");
0x00006ee8 str r3, [r5] | *(r5) = r3;
0x00006eea b 0x692c | goto label_28;
| label_110:
0x00006eec ldr.w sb, [pc, 0xbbc] |
0x00006ef0 ldr.w sl, [pc, 0xbbc] |
0x00006ef4 str r4, [sp, 0x50] | var_50h = r4;
0x00006ef6 add sb, pc | sb = 0xe9a6;
0x00006ef8 str.w r8, [sp, 0x64] | __asm ("str.w r8, [var_ch_2]");
0x00006efc add sl, pc | sl = 0xe9b0;
0x00006efe b 0x6f34 |
| while (r0 != 0) {
0x00006f00 blx 0x1d74 | r0 = fcn_00001d74 ();
0x00006f04 mov r8, r0 | r8 = r0;
0x00006f06 adds r0, 5 | r0 += 5;
0x00006f08 blx 0x1ec0 | r0 = fcn_00001ec0 ();
0x00006f0c mov r4, r0 | r4 = r0;
0x00006f0e cmp r0, 0 |
| if (r0 == 0) {
0x00006f10 beq.w 0x7a94 | goto label_133;
| }
0x00006f14 add.w r2, r8, 1 | r2 = r8 + 1;
0x00006f18 mov r1, r5 | r1 = r5;
0x00006f1a adds r0, 4 | r0 += 4;
0x00006f1c blx 0x1d90 | feof (r0);
0x00006f20 mov r2, r5 | r2 = r5;
0x00006f22 mov r1, sl | r1 = sl;
0x00006f24 movs r0, 7 | r0 = 7;
0x00006f26 bl 0x8a58 | fcn_00008a58 (r0);
0x00006f2a ldr.w r2, [r7, 0x7ec] | r2 = *((r7 + 0x7ec));
0x00006f2e str.w r4, [r7, 0x7ec] | __asm ("str.w r4, [r7, 0x7ec]");
0x00006f32 str r2, [r4] | *(r4) = r2;
| label_62:
0x00006f34 mov r2, r6 | r2 = r6;
0x00006f36 mov r1, sb | r1 = sb;
0x00006f38 movs r0, 0 | r0 = 0;
0x00006f3a blx 0x1f14 | fcn_00001f14 ();
0x00006f3c invalid |
0x00006f40 cmp r0, 0 |
0x00006f42 bne 0x6f00 |
| }
0x00006f44 ldr r4, [sp, 0x50] | r4 = var_50h;
0x00006f46 ldr.w r8, [sp, 0x64] | r8 = var_ch_2;
0x00006f4a b 0x692c | goto label_28;
| label_129:
0x00006f4c ldr r3, [sp, 0x40] | r3 = var_40h;
0x00006f4e movs r0, 6 | r0 = 6;
0x00006f50 ldr.w r1, [pc, 0xb60] |
0x00006f54 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00006f56 adr r0, 0 | r0 = 0;
0x00006f58 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00006f5a ldr r3, [r3] | r3 = *(r3);
0x00006f5c add r1, pc | r1 = 0xea14;
0x00006f5e bl 0x8a58 | fcn_00008a58 (r0);
0x00006f62 b 0x692c | goto label_28;
| label_89:
0x00006f64 ldr.w r1, [pc, 0xb50] |
0x00006f68 mov r2, r5 | r2 = r5;
0x00006f6a movs r0, 2 | r0 = 2;
0x00006f6c add r1, pc | r1 = 0xea28;
0x00006f6e bl 0x8a58 | fcn_00008a58 (r0);
0x00006f72 b.w 0x623c | goto label_10;
| label_101:
0x00006f76 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00006f78 movs r0, 3 | r0 = 3;
0x00006f7a ldr r2, [sp, 0x20] | r2 = var_20h;
0x00006f7c ldr.w r1, [pc, 0xb3c] |
0x00006f80 ldr r3, [r3] | r3 = *(r3);
0x00006f82 add r1, pc | r1 = 0xea42;
0x00006f84 ldr.w r2, [r2, r3, lsl 2] | offset_2 = r3 << 2;
| r2 = *((r2 + offset_2));
0x00006f88 bl 0x8a58 | fcn_00008a58 (r0);
0x00006f8c b.w 0x623c | goto label_10;
| label_118:
0x00006f90 ldr r6, [sp, 0x20] | r6 = var_20h;
| label_116:
0x00006f92 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006f94 subw r4, r3, 0xaac | __asm ("subw r4, r3, 0xaac");
0x00006f98 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00006f9a ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00006f9c bl 0x963c | fcn_0000963c (r0);
0x00006fa0 ldr.w r1, [pc, 0xb1c] |
0x00006fa4 mov r3, r0 | r3 = r0;
0x00006fa6 mov r2, r5 | r2 = r5;
0x00006fa8 movs r0, 7 | r0 = 7;
0x00006faa add r1, pc | r1 = 0xea6e;
0x00006fac bl 0x8a58 | fcn_00008a58 (r0);
0x00006fb0 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00006fb2 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00006fb4 bl 0x963c | fcn_0000963c (r0);
0x00006fb8 ldr.w r1, [pc, 0xb08] |
0x00006fbc mov r3, r0 | r3 = r0;
0x00006fbe mov r2, r5 | r2 = r5;
0x00006fc0 movs r0, 7 | r0 = 7;
0x00006fc2 add r1, pc | r1 = 0xea8a;
0x00006fc4 bl 0x8a58 | fcn_00008a58 (r0);
0x00006fc8 ldrd r7, r3, [r4, 8] | __asm ("ldrd r7, r3, [r4, 8]");
0x00006fcc add.w r8, r7, r3, lsl 2 | r8 = r7 + (r3 << 2);
0x00006fd0 cmp r7, r8 |
| if (r7 >= r8) {
0x00006fd2 bhs.w 0x7102 | goto label_134;
| }
0x00006fd6 ldr.w r3, [pc, 0xaf0] |
0x00006fda mov sb, r7 | sb = r7;
0x00006fdc ldr.w r7, [pc, 0xaec] |
0x00006fe0 str r6, [sp, 0x50] | var_50h = r6;
0x00006fe2 add r3, pc | r3 = 0xeab0;
0x00006fe4 str.w r8, [sp, 0x44] | __asm ("str.w r8, [var_44h]");
0x00006fe8 str r3, [sp, 0x20] | var_20h = r3;
0x00006fea add r7, pc | r7 = 0xeaba;
0x00006fec ldr.w r3, [pc, 0xae0] |
0x00006ff0 str r7, [sp, 0x4c] | var_4ch = r7;
0x00006ff2 add r3, pc | r3 = 0xeac6;
0x00006ff4 str r3, [sp, 0x3c] | var_3ch = r3;
0x00006ff6 ldr.w r3, [pc, 0xadc] |
0x00006ffa add r3, pc | r3 = 0xead4;
0x00006ffc str r3, [sp, 0x40] | var_40h = r3;
| label_30:
0x00006ffe ldr r7, [sb], 4 | r7 = *(sb);
| sb += 4;
0x00007002 ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x00007004 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x00007006 cmp r1, 0 |
| if (r1 == 0) {
0x00007008 beq.w 0x7420 | goto label_135;
| }
0x0000700c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000700e movs r0, 7 | r0 = 7;
0x00007010 subw r1, r3, 0xaac | __asm ("subw r1, r3, 0xaac");
0x00007014 ldr r4, [r1] | r4 = *(r1);
0x00007016 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x00007018 bl 0x8a58 | fcn_00008a58 (r0);
0x0000701c ldr r6, [r7, 0x14] | r6 = *((r7 + 0x14));
0x0000701e cmp r6, 0 |
| if (r6 == 0) {
0x00007020 beq 0x70f8 | goto label_40;
| }
0x00007022 mov sl, r7 | sl = r7;
0x00007024 add.w r3, r4, 0x1000 | r3 = r4 + 0x1000;
0x00007028 str r3, [sp, 0x1c] | sig = r3;
0x0000702a str.w sb, [sp, 0x38] | __asm ("str.w sb, [var_38h]");
| do {
0x0000702e mov r0, r6 | r0 = r6;
0x00007030 bl 0xec60 | r0 = fcn_0000ec60 (r0);
0x00007034 mov r5, r0 | r5 = r0;
0x00007036 mov r0, r6 | r0 = r6;
0x00007038 bl 0xec6c | r0 = fcn_0000ec6c (r0);
0x0000703c mov sb, r0 | sb = r0;
0x0000703e mov r0, r6 | r0 = r6;
0x00007040 mov r7, r1 | r7 = r1;
0x00007042 bl 0xec80 | fcn_0000ec80 (r0);
0x00007046 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00007048 mov r8, r0 | r8 = r0;
0x0000704a ldrb r2, [r5] | r2 = *(r5);
0x0000704c subw r1, r3, 0xaac | __asm ("subw r1, r3, 0xaac");
0x00007050 ldr r3, [r1] | r3 = *(r1);
0x00007052 cmp r2, 0x2e |
0x00007054 it eq |
| if (r2 != 0x2e) {
0x00007056 ldrbeq r2, [r5, 1] | r2 = *((r5 + 1));
| }
0x00007058 ldr r0, [r1, 0x20] | r0 = *((r1 + 0x20));
0x0000705a it eq |
| if (r2 != 0x2e) {
0x0000705c addeq r1, r5, 1 | r1 = r5 + 1;
| }
0x0000705e add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00007062 it ne |
| if (r2 == 0x2e) {
0x00007064 movne r1, r5 | r1 = r5;
| }
0x00007066 ldrb r3, [r3, 8] | r3 = *((r3 + 8));
0x00007068 cmp r3, r2 |
0x0000706a it eq |
| if (r3 != r2) {
0x0000706c addeq r1, 1 | r1++;
| }
0x0000706e bl 0x93dc | r0 = fcn_000093dc (r0, r1);
0x00007072 mov r4, r0 | r4 = r0;
0x00007074 cmp r0, 0 |
| if (r0 == 0) {
0x00007076 beq.w 0x7398 | goto label_136;
| }
0x0000707a ldr r3, [sp, 0x1c] | r3 = sig;
0x0000707c add.w fp, r0, 0x10 |
0x00007080 ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x00007084 ldrb r3, [r3, 9] | r3 = *((r3 + 9));
| if (r3 != 0) {
0x00007086 cbz r3, 0x70aa |
0x00007088 ldrd r0, r1, [r0, 8] | __asm ("ldrd r0, r1, [r0, 8]");
0x0000708c cmp r7, r1 |
0x0000708e it eq |
| if (r7 == r1) {
0x00007090 cmpeq sb, r0 | __asm ("cmpeq sb, r0");
| }
0x00007092 ite ne |
| if (r7 == r1) {
0x00007094 movne r3, 1 | r3 = 1;
| }
| if (r7 != r1) {
0x00007096 moveq r3, 0 | r3 = 0;
| }
0x00007098 cmp.w r8, 0x57 |
0x0000709c ite eq |
| if (r8 != 0x57) {
0x0000709e moveq r3, 0 | r3 = 0;
| }
| if (r8 == 0x57) {
0x000070a0 andne r3, r3, 1 | r3 &= 1;
| }
0x000070a4 cmp r3, 0 |
| if (r3 != 0) {
0x000070a6 bne.w 0x7376 | goto label_137;
| }
| }
| label_36:
0x000070aa ldr r3, [r4] | r3 = *(r4);
0x000070ac cmp r3, 0 |
| if (r3 == 0) {
0x000070ae beq.w 0x7372 | goto label_138;
| }
0x000070b2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| label_35:
0x000070b4 ldr r1, [sp, 0x20] | r1 = var_20h;
0x000070b6 movs r0, 7 | r0 = 7;
0x000070b8 str r3, [sp] | *(sp) = r3;
0x000070ba mov r3, fp | r3 = fp;
0x000070bc bl 0x8a58 | fcn_00008a58 (r0);
0x000070c0 ldr r1, [r4] | r1 = *(r4);
| if (r1 != 0) {
0x000070c2 cbz r1, 0x70e6 |
0x000070c4 add.w r0, sl, 0x18 | r0 = sl + 0x18;
0x000070c8 bl 0x904c | r0 = fcn_0000904c (r0, r1, r2);
0x000070cc cmp r0, 0 |
| if (r0 < 0) {
0x000070ce blt 0x70e6 | goto label_37;
| }
0x000070d0 ldr r3, [r4] | r3 = *(r4);
0x000070d2 mov r2, fp | r2 = fp;
0x000070d4 ldr.w r1, [sl, 4] | r1 = *((sl + 4));
0x000070d8 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000070da ldrh r4, [r3, 0x3a] | r4 = *((r3 + 0x3a));
0x000070dc adds r4, 1 | r4++;
0x000070de strh r4, [r3, 0x3a] | *((r3 + 0x3a)) = r4;
0x000070e0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000070e2 bl 0x56dc | fcn_000056dc ();
| }
| label_37:
0x000070e6 ldr r6, [r6] | r6 = *(r6);
0x000070e8 ldr.w r3, [sl, 0x14] | r3 = *((sl + 0x14));
0x000070ec cmp r6, r3 |
| if (r6 == r3) {
0x000070ee beq 0x70f4 | goto label_139;
| }
0x000070f0 cmp r6, 0 |
0x000070f2 bne 0x702e |
| } while (r6 != 0);
| label_139:
0x000070f4 ldr.w sb, [sp, 0x38] | sb = var_38h;
| label_40:
0x000070f8 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000070fa cmp r3, sb |
| if (r3 > sb) {
0x000070fc bhi.w 0x6ffe | goto label_30;
| }
0x00007100 ldr r6, [sp, 0x50] | r6 = var_50h;
| label_134:
0x00007102 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00007104 subw r7, r3, 0xaac | __asm ("subw r7, r3, 0xaac");
0x00007108 ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x0000710a ldr r4, [r7, 0xc] | r4 = *((r7 + 0xc));
0x0000710c bl 0x963c | fcn_0000963c (r0);
0x00007110 ldr.w r1, [pc, 0x9c4] |
0x00007114 mov r3, r0 | r3 = r0;
0x00007116 mov r2, r4 | r2 = r4;
0x00007118 movs r0, 7 | r0 = 7;
0x0000711a add r1, pc | r1 = 0xebf6;
0x0000711c bl 0x8a58 | fcn_00008a58 (r0);
0x00007120 ldr r4, [r7, 0xc] | r4 = *((r7 + 0xc));
0x00007122 uxth.w sb, r4 | sb = (int16_t) r4;
0x00007126 lsl.w r8, sb, 1 | r8 = sb << 1;
0x0000712a add.w r0, r8, sb | r0 = r8 + sb;
0x0000712e lsls r0, r0, 1 | r0 <<= 1;
0x00007130 blx 0x1ec0 | r0 = fcn_00001ec0 ();
0x00007134 mov r5, r0 | r5 = r0;
0x00007136 cmp r0, 0 |
| if (r0 == 0) {
0x00007138 beq.w 0x6672 | goto label_31;
| }
0x0000713c ldr.w r1, [pc, 0x99c] |
0x00007140 add r8, r0 | r8 += r0;
0x00007142 mov r2, sb | r2 = sb;
0x00007144 movs r0, 7 | r0 = 7;
0x00007146 add r1, pc | r1 = 0xec26;
0x00007148 bl 0x8a58 | fcn_00008a58 (r0);
0x0000714c ldr.w sl, [r7, 0xc] | sl = *((r7 + 0xc));
0x00007150 movw r3, 0xfffe | r3 = 0xfffe;
0x00007154 cmp sl, r3 |
| if (sl > r3) {
0x00007156 bhi.w 0x79a2 | goto label_140;
| }
0x0000715a uxth r4, r4 | r4 = (int16_t) r4;
0x0000715c ldr.w lr, [r7, 8] |
0x00007160 cmp r4, 0 |
| if (r4 == 0) {
0x00007162 beq 0x71ec | goto label_141;
| }
0x00007164 movs r0, 0 | r0 = 0;
0x00007166 sub.w r1, lr, 4 | r1 = lr - 4;
0x0000716a subs r2, r5, 2 | r2 = r5 - 2;
0x0000716c mov ip, r0 |
| do {
0x0000716e ldr r3, [r1, 4]! | r3 = *((r1 += 4));
0x00007172 ldrh r3, [r3, 0x3a] | r3 = *((r3 + 0x3a));
0x00007174 strh r3, [r2, 2]! | *((r2 += 2)) = r3;
| if (r3 == 0) {
0x00007178 cbnz r3, 0x7182 |
0x0000717a strh.w ip, [r8, r0, lsl 1] | offset_3 = r0 << 1;
| *((r8 + offset_3)) = ip;
0x0000717e adds r0, 1 | r0++;
0x00007180 uxth r0, r0 | r0 = (int16_t) r0;
| }
0x00007182 add.w ip, ip, 1 |
0x00007186 uxth.w ip, ip | ip = (int16_t) ip;
0x0000718a cmp r4, ip |
0x0000718c bne 0x716e |
| } while (r4 != ip);
0x0000718e movs r7, 0 | r7 = 0;
0x00007190 cmp r0, 0 |
| if (r0 == 0) {
0x00007192 beq.w 0x7640 | goto label_142;
| }
| label_32:
0x00007196 subs r0, 1 | r0--;
0x00007198 add.w r1, r7, sb | r1 = r7 + sb;
0x0000719c uxth r0, r0 | r0 = (int16_t) r0;
0x0000719e adds r2, r7, 1 | r2 = r7 + 1;
0x000071a0 ldrh.w r3, [r8, r0, lsl 1] | offset_4 = r0 << 1;
| r3 = *((r8 + offset_4));
0x000071a4 strh.w r3, [r8, r1, lsl 1] | offset_5 = r1 << 1;
| *((r8 + offset_5)) = r3;
0x000071a8 ldr.w r3, [lr, r3, lsl 2] | offset_6 = r3 << 2;
| r3 = *((lr + offset_6));
0x000071ac ldrd r1, r4, [r3, 0x18] | __asm ("ldrd r1, r4, [r3, 0x18]");
0x000071b0 str r7, [r3, 0x34] | *((r3 + 0x34)) = r7;
0x000071b2 uxth r7, r2 | r7 = (int16_t) r2;
0x000071b4 add.w r4, r1, r4, lsl 2 | r4 = r1 + (r4 << 2);
0x000071b8 cmp r1, r4 |
| if (r1 >= r4) {
0x000071ba bhs 0x71e2 | goto label_143;
| }
| do {
0x000071bc ldr r3, [r1], 4 | r3 = *(r1);
| r1 += 4;
0x000071c0 ldrh r2, [r3, 0x38] | r2 = *((r3 + 0x38));
0x000071c2 ldrh.w r3, [r5, r2, lsl 1] | offset_7 = r2 << 1;
| r3 = *((r5 + offset_7));
0x000071c6 cmp r3, 0 |
| if (r3 == 0) {
0x000071c8 beq.w 0x7902 | goto label_144;
| }
0x000071cc subs r3, 1 | r3--;
0x000071ce uxth r3, r3 | r3 = (int16_t) r3;
0x000071d0 strh.w r3, [r5, r2, lsl 1] | offset_8 = r2 << 1;
| *((r5 + offset_8)) = r3;
| if (r3 == 0) {
0x000071d4 cbnz r3, 0x71de |
0x000071d6 strh.w r2, [r8, r0, lsl 1] | offset_9 = r0 << 1;
| *((r8 + offset_9)) = r2;
0x000071da adds r0, 1 | r0++;
0x000071dc uxth r0, r0 | r0 = (int16_t) r0;
| }
0x000071de cmp r4, r1 |
0x000071e0 bhi 0x71bc |
| } while (r4 > r1);
| label_143:
0x000071e2 cmp r0, 0 |
| if (r0 != 0) {
0x000071e4 bne 0x7196 | goto label_32;
| }
0x000071e6 cmp ip, r7 |
| if (ip > r7) {
0x000071e8 bhi.w 0x7640 | goto label_142;
| }
| label_141:
0x000071ec add.w r7, lr, sl, lsl 2 | r7 = lr + (sl << 2);
0x000071f0 cmp lr, r7 |
| if (lr >= r7) {
0x000071f2 bhs 0x7212 | goto label_145;
| }
0x000071f4 ldr.w r8, [pc, 0x8e8] | r8 = *(0x00007ae0);
0x000071f8 mov r4, lr | r4 = lr;
0x000071fa add r8, pc | r8 += pc;
| do {
0x000071fc ldr r0, [r4], 4 | r0 = *(r4);
| r4 += 4;
0x00007200 ldr r3, [r0, 0x1c] | r3 = *((r0 + 0x1c));
0x00007202 cmp r3, 1 |
| if (r3 >= 1) {
0x00007204 bls 0x720e |
0x00007206 adds r0, 0x18 | r0 += 0x18;
0x00007208 mov r1, r8 | r1 = r8;
0x0000720a bl 0x9088 | fcn_00009088 (r0, r1);
| }
0x0000720e cmp r7, r4 |
0x00007210 bhi 0x71fc |
| } while (r7 > r4);
| label_145:
0x00007212 ldr.w r1, [pc, 0x8d0] |
0x00007216 mov r2, sb | r2 = sb;
0x00007218 movs r0, 7 | r0 = 7;
0x0000721a add r1, pc | r1 = 0xed04;
0x0000721c bl 0x8a58 | fcn_00008a58 (r0);
0x00007220 mov r0, r5 | r0 = r5;
0x00007222 blx 0x1cb0 | fcn_00001cb0 ();
0x00007226 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00007228 movs r1, 0 | r1 = 0;
0x0000722a ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000722c subw r3, r3, 0xaac | __asm ("subw r3, r3, 0xaac");
0x00007230 ldr r3, [r3] | r3 = *(r3);
0x00007232 adds r3, 4 | r3 += 4;
0x00007234 str r3, [sp, 0x1c] | sig = r3;
0x00007236 blx 0x1d08 | fcn_00001d08 ();
0x0000723a ldr r3, [sp, 0x34] | r3 = nmemb;
0x0000723c cmp r3, 0 |
| if (r3 == 0) {
0x0000723e beq.w 0x75b6 | goto label_146;
| }
| label_49:
0x00007242 ldr.w r3, [pc, 0x8a4] |
0x00007246 add.w sb, sp, 0x1320 | sb += arg_1320h;
0x0000724a ldr.w r4, [pc, 0x8a0] |
0x0000724e add.w sb, sb, 0x10 | sb += 0x10;
0x00007250 lsrs r0, r2, 4 | r0 = r2 >> 4;
0x00007252 mov.w sl, 0 | sl = 0;
0x00007256 add r3, pc | r3 = 0xed44;
0x00007258 str r3, [sp, 0x20] | var_20h = r3;
0x0000725a add r4, pc | r4 = 0xed4c;
0x0000725c ldr.w r3, [pc, 0x890] |
0x00007260 add r3, pc | r3 = 0xed54;
0x00007262 str r4, [r3] | *(r3) = r4;
0x00007264 add.w r3, sp, 0x1320 | r3 += arg_1320h;
0x00007266 strh r1, [r3, r6] | *((r3 + r6)) = r1;
0x00007268 adds r3, 0xc | r3 += 0xc;
0x0000726a str r3, [sp, 0x18] | var_18h = r3;
0x0000726c b 0x7294 |
| while (r3 != 0) {
0x0000726e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007270 ldr r1, [sp, 0x34] | r1 = nmemb;
0x00007272 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00007274 ldr r3, [r3] | r3 = *(r3);
0x00007276 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00007278 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_45:
0x0000727a ldr.w r3, [pc, 0x878] |
0x0000727e add r3, pc | r3 = 0xed78;
0x00007280 ldr r4, [r3] | r4 = *(0xed78);
| label_33:
0x00007282 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00007284 adds r4, 8 | r4 += 8;
0x00007286 ldr.w r2, [pc, 0x870] |
0x0000728a add r2, pc | r2 = 0xed88;
0x0000728c str r4, [r2] | *(r2) = r4;
0x0000728e cmp r3, 0 |
| if (r3 == 0) {
0x00007290 beq.w 0x75b2 | goto label_147;
| }
0x00007294 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00007296 movs r2, 0xfb | r2 = 0xfb;
0x00007298 movs r1, 0 | r1 = 0;
0x0000729a mov r0, sb | r0 = sb;
0x0000729c str.w sl, [r3] | __asm ("str.w sl, [r3]");
0x000072a0 blx 0x1c64 | uname ();
0x000072a4 ldr r3, [sp, 0x34] | r3 = nmemb;
0x000072a6 cmp r3, 0 |
0x000072a8 bne 0x726e |
| }
0x000072aa ldr r4, [r4] | r4 = *(r4);
0x000072ac sub.w r8, sb, 4 | r8 = sb - 4;
0x000072b0 blx 0x1f68 | fcn_00001f68 ();
0x000072b4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000072b6 strd r4, r0, [sp, 4] | __asm ("strd r4, r0, [sp, 4]");
0x000072ba mov r0, r8 | r0 = r8;
0x000072bc sub.w r3, r3, 0xa20 | r3 -= 0xa20;
0x000072c0 ldr r2, [r3] | r2 = *(r3);
0x000072c2 str r2, [sp, 0x10] | var_10h = r2;
0x000072c4 movs r2, 1 | r2 = 1;
0x000072c6 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000072c8 str r3, [sp, 0xc] | var_ch_3 = r3;
0x000072ca ldr.w r3, [pc, 0x830] |
0x000072ce add r3, pc | r3 = 0xedd0;
0x000072d0 str r3, [sp] | *(sp) = r3;
0x000072d2 movs r3, 0xff | r3 = 0xff;
0x000072d4 mov r1, r3 | r1 = r3;
0x000072d6 blx 0x1e24 | fcn_00001e24 ();
0x000072da mov.w r3, 0x1a4 | r3 = 0x1a4;
0x000072de movs r2, 0xc1 | r2 = 0xc1;
0x000072e0 mov r1, r8 | r1 = r8;
0x000072e2 mov r0, r6 | r0 = r6;
0x000072e4 blx 0x1cfc | r0 = fcn_00001cfc ();
0x000072e8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x000072ea blt.w 0x7576 | goto label_148;
| }
0x000072ee ldr.w r1, [pc, 0x810] |
0x000072f2 add r1, pc | r1 = 0xedf8;
0x000072f4 blx 0x1e3c | r0 = fcn_00001e3c ();
0x000072f8 mov r4, r0 | r4 = r0;
0x000072fa cmp r0, 0 |
| if (r0 == 0) {
0x000072fc beq.w 0x7a42 | goto label_149;
| }
0x00007300 ldr.w r7, [pc, 0x800] |
0x00007304 mov r1, r0 | r1 = r0;
0x00007306 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00007308 add r7, pc | r7 = 0xee10;
0x0000730a ldr r3, [r7] |
0x0000730c ldr r3, [r3, 4] | r3 = *(0xee14);
0x0000730e blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00007310 mov fp, r0 |
0x00007312 mov r0, r4 | r0 = r4;
0x00007314 blx 0x2000 | syscall ();
0x00007316 cdp p6, 7, c4, c4, c5, 0 | __asm ("cdp p6, 7, c4, c4, c5, 0");
0x0000731a mov r0, r4 | r0 = r4;
0x0000731c blx 0x1bf4 | fcn_00001bf4 ();
0x00007320 cmp.w fp, 0 |
0x00007324 orr.w r5, r5, r0 | r5 |= r0;
0x00007326 lsls r0, r0, 0x14 | r0 <<= 0x14;
| if (r0 < r0) {
0x00007328 blt.w 0x7604 | goto label_150;
| }
0x0000732c ldr r4, [r7] | r4 = *(r7);
0x0000732e mov r2, r6 | r2 = r6;
0x00007330 mov r1, r8 | r1 = r8;
0x00007332 mov r0, r6 | r0 = r6;
0x00007334 ldr r3, [r4] | r3 = *(r4);
0x00007336 blx 0x1c94 | r0 = strtoull (r0, r1, r2);
0x0000733a cmp r0, 0 |
| if (r0 != 0) {
0x0000733c bne.w 0x75e4 | goto label_151;
| }
0x00007340 cmp r5, 0 |
| if (r5 == 0) {
0x00007342 beq 0x7282 | goto label_33;
| }
0x00007344 ldr r4, [r4] | r4 = *(r4);
0x00007346 movs r0, 0x1c | r0 = 0x1c;
0x00007348 blx 0x1b54 | fcn_00001b54 ();
0x0000734c ldr.w r1, [pc, 0x7b8] |
0x00007350 mov r3, r0 | r3 = r0;
0x00007352 mov r2, r4 | r2 = r4;
0x00007354 mvn r4, 0x1b | r4 = ~0x1b;
0x00007358 movs r0, 3 | r0 = 3;
0x0000735a add r1, pc | r1 = 0xee66;
0x0000735c bl 0x8a58 | fcn_00008a58 (r0);
| label_50:
0x00007360 lsrs r4, r4, 0x1f | r4 >>= 0x1f;
| label_48:
0x00007362 adds r3, r6, 1 | r3 = r6 + 1;
| if (r3 == r6) {
0x00007364 beq.w 0x66b6 | goto label_34;
| }
0x00007366 add r1, sp, 0x29c | r1 = sp + 0x29c;
0x00007368 mov r0, r6 | r0 = r6;
0x0000736a blx 0x1e60 | fcn_00001e60 ();
0x0000736c ldcl p7, c15, [sl, -0x3fc]! | __asm ("ldcl p7, c15, [sl, -0x3fc]!");
0x0000736e b.w 0x66b6 | goto label_34;
| if (r2 == 0) {
0x00007370 cbnz r2, 0x739c |
| label_138:
0x00007372 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00007374 b 0x70b4 | goto label_35;
| label_137:
0x00007376 stm.w sp, {r0, r1, r2} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r2;
0x0000737a mov r2, fp | r2 = fp;
0x0000737c ldr.w r1, [pc, 0x78c] |
0x00007380 movs r0, 7 | r0 = 7;
0x00007382 strd sb, r7, [sp, 0x10] | __asm ("strd sb, r7, [sp, 0x10]");
0x00007386 add r1, pc | r1 = 0xee96;
0x00007388 bl 0x8a58 | fcn_00008a58 (r0);
0x0000738c ldr r3, [sp, 0x1c] | r3 = sig;
0x0000738e ldrb r3, [r3, 0xa] | r3 = *((r3 + 0xa));
| if (r3 != 0) {
0x00007390 cbnz r3, 0x73d0 | goto label_152;
| }
| label_38:
0x00007392 ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x00007396 b 0x70aa | goto label_36;
| label_136:
0x00007398 ldr.w r1, [pc, 0x774] |
| }
0x0000739c mov r3, r8 | r3 = r8;
0x0000739e ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x000073a2 movs r0, 7 | r0 = 7;
0x000073a4 str r5, [sp] | *(sp) = r5;
0x000073a6 add r1, pc | r1 = 0xeeba;
0x000073a8 bl 0x8a58 | fcn_00008a58 (r0);
0x000073ac ldr r3, [sp, 0x1c] | r3 = sig;
0x000073ae ldrb r3, [r3, 0xa] | r3 = *((r3 + 0xa));
0x000073b0 cmp r3, 0 |
0x000073b2 it ne |
| if (r3 == 0) {
0x000073b4 cmpne r8, 0x57 | __asm ("cmpne r8, 0x57");
| goto label_153;
| }
| if (r3 == 0) {
| label_153:
0x000073b8 beq.w 0x70e6 | goto label_37;
| }
0x000073bc ldr.w r1, [pc, 0x754] |
0x000073c0 mov r3, r5 | r3 = r5;
0x000073c2 ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x000073c6 movs r0, 4 | r0 = 4;
0x000073c8 add r1, pc | r1 = 0xeee0;
0x000073ca bl 0x8a58 | fcn_00008a58 (r0);
0x000073ce b 0x70e6 | goto label_37;
| label_152:
0x000073d0 ldr.w r1, [pc, 0x744] |
0x000073d4 mov r3, r5 | r3 = r5;
0x000073d6 ldr.w r2, [sl, 4] | r2 = *((sl + 4));
0x000073da movs r0, 4 | r0 = 4;
0x000073dc add r1, pc | r1 = 0xeef8;
0x000073de bl 0x8a58 | fcn_00008a58 (r0);
0x000073e2 b 0x7392 | goto label_38;
| label_91:
0x000073e4 blx 0x207c | r0 = fcn_0000207c ();
0x000073e8 ldr r5, [r0] | r5 = *(r0);
0x000073ea rsbs r5, r5, 0 | r5 -= ;
| label_46:
0x000073ec ldr r3, [sp, 0x24] | r3 = var_24h;
0x000073ee subw r3, r3, 0xaac | __asm ("subw r3, r3, 0xaac");
0x000073f2 ldr r0, [r3, 0x18] | r0 = *((r3 + 0x18));
0x000073f4 bl 0x90d4 | fcn_000090d4 (r0);
0x000073f8 b.w 0x67fa | goto label_39;
| label_102:
0x000073fc ldr r2, [sp, 0x24] | r2 = var_24h;
0x000073fe ldrb.w r3, [r2, 0x7de] | r3 = *((r2 + 0x7de));
0x00007402 addw r4, r2, 0x7d4 | __asm ("addw r4, r2, 0x7d4");
0x00007406 cmp r3, 0 |
| if (r3 == 0) {
0x00007408 beq.w 0x65fe | goto label_15;
| }
0x0000740c ldr.w r1, [pc, 0x70c] |
0x00007410 movs r0, 4 | r0 = 4;
0x00007412 add r1, pc | r1 = 0xef32;
0x00007414 bl 0x8a58 | r0 = fcn_00008a58 (r0);
0x00007416 smlad fp, r0, pc, sb | __asm ("smlad fp, r0, pc, sb");
0x0000741a strb r3, [r4, 0xa] | *((r4 + 0xa)) = r3;
0x0000741c b.w 0x65fe | goto label_15;
| label_135:
0x00007420 ldr.w r1, [pc, 0x6fc] |
0x00007424 movs r0, 7 | r0 = 7;
0x00007426 add r1, pc | r1 = 0xef4a;
0x00007428 bl 0x8a58 | fcn_00008a58 (r0);
0x0000742c b 0x70f8 | goto label_40;
| label_131:
0x0000742e ldr.w r1, [pc, 0x6f4] |
0x00007432 subw r3, r7, 0xa88 | __asm ("subw r3, r7, 0xa88");
0x00007436 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0000743a movs r0, 6 | r0 = 6;
0x0000743c ldr r3, [r3] | r3 = *(r3);
0x0000743e ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00007440 add r1, pc | r1 = 0xef6a;
0x00007442 bl 0x8a58 | fcn_00008a58 (r0);
0x00007446 b.w 0x692c | goto label_28;
| label_83:
0x0000744a blx 0x207c | r0 = fcn_0000207c ();
0x0000744e ldr r0, [r0] | r0 = *(r0);
0x00007450 blx 0x1b54 | fcn_00001b54 ();
0x00007454 ldr.w r1, [pc, 0x6d0] |
0x00007458 mov r2, r0 | r2 = r0;
0x0000745a movs r0, 2 | r0 = 2;
0x0000745c add r1, pc | r1 = 0xef88;
0x0000745e bl 0x8a58 | fcn_00008a58 (r0);
0x00007462 b.w 0x623c | goto label_10;
| label_98:
0x00007466 rsbs r0, r0, 0 | r0 -= ;
0x00007468 blx 0x1b54 | fcn_00001b54 ();
0x0000746a sbcs.w r8, r4, pc, lsr 31 | __asm ("sbcs.w r8, r4, pc, lsr 31");
0x0000746e asrs r4, r7, 0x1a | r4 = r7 >> 0x1a;
0x00007470 mov r3, r0 | r3 = r0;
0x00007472 mov r2, r5 | r2 = r5;
0x00007474 movs r0, 2 | r0 = 2;
0x00007476 add r1, pc | r1 += pc;
0x00007478 bl 0x8a58 | fcn_00008a58 (r0);
0x0000747c b.w 0x6672 | goto label_31;
| label_80:
0x00007480 ldr.w r1, [pc, 0x6ac] |
0x00007484 movs r0, 2 | r0 = 2;
0x00007486 add r1, pc | r1 = 0xefba;
0x00007488 bl 0x8a58 | fcn_00008a58 (r0);
0x0000748c b.w 0x623c | goto label_10;
| label_115:
0x00007490 mov r2, r0 | r2 = r0;
0x00007492 mov r1, r0 | r1 = r0;
0x00007494 add.w r7, sp, 0x1320 | r7 += arg_1320h;
0x00007498 mov r0, r5 | r0 = r5;
0x0000749a blx 0x1d14 | fcn_00001d14 ();
0x0000749e rsbs r4, r4, 0 | r4 -= ;
0x000074a0 ldr.w sl, [sp, 0x24] | sl = var_24h;
0x000074a4 adds r7, 0xc | r7 += 0xc;
0x000074a6 b 0x74ca |
| while (r0 != 0) {
0x000074a8 mov r0, r8 | r0 = r8;
0x000074aa blx 0x1d74 | r0 = fcn_00001d74 ();
| if (r0 != 0) {
0x000074ae cbz r0, 0x74c8 |
0x000074b0 subw r2, sl, 0xaac | __asm ("subw r2, sl, 0xaac");
0x000074b4 adds r3, r7, r0 | r3 = r7 + r0;
0x000074b6 ldr r0, [r2, 0x18] | r0 = *((r2 + 0x18));
0x000074b8 movs r2, 0 | r2 = 0;
0x000074ba mov r1, r8 | r1 = r8;
0x000074bc strb r2, [r3, -0x1] | *((r3 - 0x1)) = r2;
0x000074c0 bl 0x93dc | r0 = fcn_000093dc (r0, r1);
| if (r0 == 0) {
0x000074c4 cbz r0, 0x74c8 | goto label_154;
| }
0x000074c6 str r4, [r0, 0x30] | *((r0 + 0x30)) = r4;
| }
| label_154:
0x000074c8 adds r4, 1 | r4++;
0x000074ca mov r2, r5 | r2 = r5;
0x000074cc mov.w r1, 0x1000 | r1 = 0x1000;
0x000074d0 mov r0, r8 | r0 = r8;
0x000074d2 blx 0x1c00 | r0 = fcn_00001c00 ();
0x000074d6 cmp r0, 0 |
0x000074d8 bne 0x74a8 |
| }
0x000074da ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000074dc mov sb, r0 | sb = r0;
0x000074de ldr.w r1, [pc, 0x654] | r1 = *(0x00007b34);
0x000074e2 sub.w r0, r3, 0x24 | r0 = r3 - 0x24;
0x000074e6 add r1, pc | r1 += pc;
0x000074e8 bl 0x9088 | fcn_00009088 (r0, r1);
0x000074ec ldr r3, [sp, 0x24] | r3 = var_24h;
0x000074ee subw r3, r3, 0xaac | __asm ("subw r3, r3, 0xaac");
0x000074f2 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x000074f4 cmp r1, 0 |
| if (r1 == 0) {
0x000074f6 beq.w 0x6a4e | goto label_41;
| }
0x000074fa ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000074fc mov r0, sb | r0 = sb;
0x000074fe subs r3, 4 | r3 -= 4;
| do {
0x00007500 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x00007504 strh r0, [r2, 0x38] | *((r2 + 0x38)) = r0;
0x00007506 adds r0, 1 | r0++;
0x00007508 cmp r0, r1 |
0x0000750a bne 0x7500 |
| } while (r0 != r1);
0x0000750c b.w 0x6a4e | goto label_41;
| label_99:
0x00007510 rsbs r0, r0, 0 | r0 -= ;
0x00007512 blx 0x1b54 | fcn_00001b54 ();
0x00007516 ldr.w r1, [pc, 0x620] |
0x0000751a mov r3, r0 | r3 = r0;
0x0000751c mov r2, r5 | r2 = r5;
0x0000751e movs r0, 2 | r0 = 2;
0x00007520 add r1, pc | r1 = 0xf05e;
0x00007522 bl 0x8a58 | fcn_00008a58 (r0);
0x00007526 ldr r0, [r7] | r0 = *(r7);
0x00007528 bl 0xd418 | fcn_0000d418 (r0);
0x0000752c b.w 0x6672 | goto label_31;
| label_100:
0x00007530 ldr r6, [sp, 0x1c] | r6 = sig;
0x00007532 b.w 0x69a6 | goto label_42;
| label_119:
0x00007536 mov r0, sl | r0 = sl;
0x00007538 b.w 0x6b18 | goto label_43;
| label_113:
0x0000753c rsbs r0, r0, 0 | r0 -= ;
0x0000753e blx 0x1b54 | fcn_00001b54 ();
0x00007542 ldr.w r1, [pc, 0x5f8] |
0x00007546 mov r2, r0 | r2 = r0;
0x00007548 movs r0, 2 | r0 = 2;
0x0000754a add r1, pc | r1 = 0xf08c;
0x0000754c bl 0x8a58 | fcn_00008a58 (r0);
0x00007550 b.w 0x6672 | goto label_31;
| label_120:
0x00007554 ldr.w r3, [pc, 0x5e8] |
0x00007558 add r3, pc | r3 = 0xf09c;
0x0000755a b.w 0x6b62 | goto label_44;
| label_112:
0x0000755e rsbs r0, r0, 0 | r0 -= ;
0x00007560 blx 0x1b54 | fcn_00001b54 ();
0x00007564 ldr.w r1, [pc, 0x5dc] |
0x00007568 mov r2, r0 | r2 = r0;
0x0000756a movs r0, 2 | r0 = 2;
0x0000756c add r1, pc | r1 = 0xf0b4;
0x0000756e bl 0x8a58 | fcn_00008a58 (r0);
0x00007572 b.w 0x6672 | goto label_31;
| label_148:
0x00007576 movs r2, 0xc1 | r2 = 0xc1;
0x00007578 mov.w r1, 0x1a4 | r1 = 0x1a4;
0x0000757c strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x00007580 mov r3, r8 | r3 = r8;
0x00007582 ldr.w r1, [pc, 0x5c4] |
0x00007586 movs r0, 3 | r0 = 3;
0x00007588 ldr r2, [sp, 0x1c] | r2 = sig;
0x0000758a add r1, pc | r1 = 0xf0d8;
0x0000758c bl 0x8a58 | fcn_00008a58 (r0);
0x00007590 b 0x727a | goto label_45;
| label_92:
0x00007592 blx 0x207c | r0 = fcn_0000207c ();
0x00007596 ldr r3, [r0] | r3 = *(r0);
0x00007598 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x0000759a rsbs r5, r3, 0 | r5 = r3 - ;
0x0000759c bl 0x90d4 | fcn_000090d4 (r0);
0x000075a0 b 0x73ec | goto label_46;
| label_111:
0x000075a2 ldr.w r1, [pc, 0x5a8] |
0x000075a6 ldr r0, [sp, 0x30] | r0 = var_30h;
0x000075a8 add r1, pc | r1 = 0xf0fa;
0x000075aa bl 0x59b8 | fcn_000059b8 (r0, r1);
0x000075ae b.w 0x6974 | goto label_47;
| label_147:
0x000075b2 mov r4, r3 | r4 = r3;
0x000075b4 b 0x7362 | goto label_48;
| label_146:
0x000075b6 ldr r1, [sp, 0x34] | r1 = nmemb;
0x000075b8 ldr r0, [sp, 0x1c] | r0 = sig;
0x000075ba blx 0x1df0 | r0 = raise (r0);
0x000075be subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 >= r0) {
0x000075c0 bge.w 0x7242 | goto label_49;
| }
0x000075c4 blx 0x207c | fcn_0000207c ();
0x000075c8 ldr.w r1, [pc, 0x584] |
0x000075cc ldr r4, [r0] | r4 = *(r0);
0x000075ce movs r0, 2 | r0 = 2;
0x000075d0 ldr r2, [sp, 0x1c] | r2 = sig;
0x000075d2 add r1, pc | r1 = 0xf126;
0x000075d4 cmp r4, 0 |
0x000075d6 ite le |
| if (r4 > 0) {
0x000075d8 movle r4, 0 | r4 = 0;
| }
| if (r4 <= 0) {
0x000075da movgt r4, 1 | r4 = 1;
| }
0x000075dc bl 0x8a58 | fcn_00008a58 (r0);
0x000075e0 b.w 0x66b6 | goto label_34;
| label_151:
0x000075e4 blx 0x207c | fcn_0000207c ();
0x000075e8 ldr r3, [r4] | r3 = *(r4);
0x000075ea ldr r2, [sp, 0x1c] | r2 = sig;
0x000075ec ldr.w r1, [pc, 0x564] |
0x000075f0 ldr r4, [r0] | r4 = *(r0);
0x000075f2 movs r0, 2 | r0 = 2;
0x000075f4 str r3, [sp, 4] | var_4h_2 = r3;
0x000075f6 mov r3, r8 | r3 = r8;
0x000075f8 add r1, pc | r1 = 0xf150;
0x000075fa str r2, [sp] | *(sp) = r2;
0x000075fc rsbs r4, r4, 0 | r4 -= ;
0x000075fe bl 0x8a58 | fcn_00008a58 (r0);
0x00007602 b 0x7360 | goto label_50;
| label_150:
0x00007604 ldr r2, [sp, 0x34] | r2 = nmemb;
0x00007606 mov r1, r8 | r1 = r8;
0x00007608 mov r0, r6 | r0 = r6;
0x0000760a mov r4, fp | r4 = fp;
0x0000760c blx 0x1fc4 | r0 = fread (r0, r1, r2, r3);
0x00007610 cmp r0, 0 |
| if (r0 != 0) {
0x00007612 bne.w 0x7916 | goto label_155;
| }
| label_57:
0x00007616 ldr.w r3, [pc, 0x540] |
0x0000761a rsbs r0, r4, 0 | r0 = r4 - ;
0x0000761c add r3, pc |
0x0000761e ldr r3, [r3] | r3 = *(0xf17a);
0x00007620 ldr r4, [r3] | r4 = *(0xf17a);
0x00007622 blx 0x1b54 | fcn_00001b54 ();
0x00007626 ldr.w r1, [pc, 0x534] |
0x0000762a mov r3, r0 | r3 = r0;
0x0000762c mov r2, r4 | r2 = r4;
0x0000762e movs r0, 3 | r0 = 3;
0x00007630 add r1, pc | r1 = 0xf192;
0x00007632 bl 0x8a58 | r0 = fcn_00008a58 (r0);
0x00007636 blx 0x207c | r0 = fcn_0000207c ();
0x0000763a ldr r4, [r0] | r4 = *(r0);
0x0000763c rsbs r4, r4, 0 | r4 -= ;
0x0000763e b 0x7360 | goto label_50;
| label_142:
0x00007640 cmp.w sb, 0 |
| if (sb == 0) {
0x00007644 beq.w 0x7a24 | goto label_156;
| }
0x00007648 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000764a movs r4, 0 | r4 = 0;
0x0000764c mov r6, r5 | r6 = r5;
0x0000764e mov sb, r4 | sb = r4;
0x00007650 str r4, [sp, 0x1c] | sig = r4;
0x00007652 subw r7, r3, 0xaac | __asm ("subw r7, r3, 0xaac");
| do {
0x00007656 ldrh r3, [r6], 2 | r3 = *(r6);
| r6 += 2;
| if (r3 != 0) {
0x0000765a cbz r3, 0x7672 |
0x0000765c ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x0000765e ldr r0, [sp, 0x1c] | r0 = sig;
0x00007660 ldr r1, [r3, r4] | r1 = *((r3 + r4));
0x00007662 bl 0xa9bc | r0 = fcn_0000a9bc (r0, r1);
0x00007666 cmp r0, 0 |
| if (r0 == 0) {
0x00007668 beq.w 0x78f0 | goto label_157;
| }
0x0000766c add.w sb, sb, 1 | sb++;
0x00007670 str r0, [sp, 0x1c] | sig = r0;
| }
0x00007672 cmp r8, r6 |
0x00007674 add.w r4, r4, 4 | r4 += 4;
0x00007678 bne 0x7656 |
| } while (r8 != r6);
| label_60:
0x0000767a lsl.w r0, sb, 2 | r0 = sb << 2;
0x0000767e blx 0x1ec0 | fcn_00001ec0 ();
0x00007682 str r0, [sp, 0x20] | var_20h = r0;
0x00007684 cmp r0, 0 |
| if (r0 == 0) {
0x00007686 beq.w 0x79c4 | goto label_158;
| }
0x0000768a movs r1, 0 | r1 = 0;
0x0000768c movs r0, 0x10 | r0 = 0x10;
0x0000768e bl 0x9094 | fcn_00009094 (r0, r1);
0x00007692 str r0, [sp, 0x34] | nmemb = r0;
0x00007694 cmp r0, 0 |
| if (r0 == 0) {
0x00007696 beq.w 0x7a18 | goto label_159;
| }
0x0000769a ldr.w r7, [pc, 0x4c4] |
0x0000769e mov r8, r5 | r8 = r5;
0x000076a0 mov sl, sb | sl = sb;
0x000076a2 add r7, pc | r7 = 0xf208;
| label_51:
0x000076a4 ldr r3, [sp, 0x1c] | r3 = sig;
0x000076a6 cmp r3, 0 |
| if (r3 == 0) {
0x000076a8 beq.w 0x78d2 | goto label_160;
| }
0x000076ac ldr r3, [sp, 0x1c] | r3 = sig;
0x000076ae mov r0, r3 | r0 = r3;
0x000076b0 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x000076b2 bl 0xaa60 | fcn_0000aa60 (r0);
0x000076b6 str r0, [sp, 0x1c] | sig = r0;
0x000076b8 movs r0, 8 | r0 = 8;
0x000076ba blx 0x1ec0 | r0 = fcn_00001ec0 ();
0x000076be mov r2, r0 | r2 = r0;
0x000076c0 cmp r0, 0 |
| if (r0 == 0) {
0x000076c2 beq.w 0x7a0a | goto label_161;
| }
0x000076c6 str r4, [r0, 4] | *((r0 + 4)) = r4;
0x000076c8 movs r0, 0 | r0 = 0;
0x000076ca mov r1, r2 | r1 = r2;
0x000076cc str r0, [r2] | *(r2) = r0;
0x000076ce str r2, [sp, 0x38] | var_38h = r2;
0x000076d0 bl 0xa9bc | fcn_0000a9bc (r0, r1);
0x000076d4 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000076d6 mov r4, r0 | r4 = r0;
0x000076d8 cmp r0, 0 |
| if (r0 == 0) {
0x000076da beq.w 0x79fc | goto label_162;
| }
0x000076de ldr r3, [sp, 0x20] | r3 = var_20h;
0x000076e0 mov r6, r2 | r6 = r2;
0x000076e2 strd r8, r4, [sp, 0x38] | __asm ("strd r8, r4, [sp, 0x38]");
0x000076e6 movs r0, 1 | r0 = 1;
0x000076e8 mov r4, r2 | r4 = r2;
0x000076ea str r7, [sp, 0x40] | var_40h = r7;
0x000076ec str r2, [r3] | *(r3) = r2;
| label_52:
0x000076ee ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000076f0 subs r5, r0, 1 | r5 = r0 - 1;
0x000076f2 ldrb.w r3, [r1, 0x3c] | r3 = *((r1 + 0x3c));
| if (r3 != 0) {
0x000076f6 cbz r3, 0x76fe |
0x000076f8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000076fa cmp r1, r3 |
| if (r1 == r3) {
0x000076fc beq 0x77d0 | goto label_163;
| }
| }
0x000076fe mov.w r3, 1 | r3 = 1;
0x00007702 strb.w r3, [r1, 0x3c] | *((r1 + 0x3c)) = r3;
0x00007706 ldr r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x00007708 cmp r3, 0 |
| if (r3 == 0) {
0x0000770a beq 0x77b0 | goto label_164;
| }
0x0000770c ldr r7, [r1, 0x18] | r7 = *((r1 + 0x18));
0x0000770e add.w fp, r7, r3, lsl 2 |
0x00007712 cmp r7, fp |
| if (r7 >= fp) {
0x00007714 bhs 0x77b8 | goto label_54;
| }
0x00007716 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007718 add.w r0, r0, 0x40000000 | r0 += 0x40000000;
0x0000771c subs r0, 2 | r0 -= 2;
0x0000771e ldr.w sb, [sp, 0x3c] | sb = var_3ch;
0x00007722 str r4, [sp, 0x44] | var_44h = r4;
0x00007724 add.w r8, r3, r0, lsl 2 | r8 = r3 + (r0 << 2);
0x00007728 b 0x7730 |
| while (r0 != 0) {
0x0000772a cmp fp, r7 |
| if (fp < r7) {
0x0000772c bls 0x77ca | goto label_165;
| }
0x0000772e mov sb, r0 | sb = r0;
0x00007730 movs r0, 8 | r0 = 8;
0x00007732 ldr r4, [r7], 4 | r4 = *(r7);
| r7 += 4;
0x00007736 blx 0x1ec0 | r0 = fcn_00001ec0 ();
0x0000773a mov r1, r0 | r1 = r0;
0x0000773c cmp r0, 0 |
| if (r0 == 0) {
0x0000773e beq.w 0x79e4 | goto label_166;
| }
0x00007742 cmp r5, sl |
0x00007744 strd r6, r4, [r0] | __asm ("strd r6, r4, [r0]");
| if (r5 >= sl) {
0x00007748 bhs.w 0x79d0 | goto label_167;
| }
0x0000774c str r0, [r8, 4]! | *((r8 += 4)) = r0;
0x00007750 mov r0, sb | r0 = sb;
0x00007752 adds r5, 1 | r5++;
0x00007754 bl 0xa9bc | r0 = fcn_0000a9bc (r0, r1);
0x00007758 cmp r0, 0 |
0x0000775a bne 0x772a |
| }
0x0000775c ldr r7, [sp, 0x40] | r7 = var_40h;
0x0000775e mov r4, sb | r4 = sb;
0x00007760 mvn fp, 0xb |
0x00007764 movs r0, 3 | r0 = 3;
0x00007766 ldr.w r8, [sp, 0x38] | r8 = var_38h;
0x0000776a mov r1, r7 | r1 = r7;
0x0000776c bl 0x8a58 | fcn_00008a58 (r0);
| do {
| label_53:
0x00007770 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x00007772 mov r0, r4 | r0 = r4;
0x00007774 bl 0xaa60 | r0 = fcn_0000aa60 (r0);
0x00007778 mov r4, r0 | r4 = r0;
0x0000777a mov r0, r5 | r0 = r5;
0x0000777c blx 0x1cb0 | fcn_00001cb0 ();
0x00007780 cmp r4, 0 |
0x00007782 bne 0x7770 |
| } while (r4 != 0);
0x00007784 cmp.w fp, 0 |
| if (fp >= 0) {
0x00007788 bge 0x76a4 | goto label_51;
| }
0x0000778a mov r5, r8 | r5 = r8;
| label_59:
0x0000778c ldr r0, [sp, 0x34] | r0 = nmemb;
0x0000778e bl 0x90d4 | fcn_000090d4 (r0);
| label_56:
0x00007792 ldr r3, [sp, 0x1c] | r3 = sig;
0x00007794 ldr r0, [sp, 0x1c] | r0 = sig;
| if (r3 == 0) {
0x00007796 cbz r3, 0x77a0 | goto label_55;
| }
| do {
0x00007798 bl 0xaa60 | r0 = fcn_0000aa60 (r0);
0x0000779c cmp r0, 0 |
0x0000779e bne 0x7798 |
| } while (r0 != 0);
| label_55:
0x000077a0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000077a2 blx 0x1cb0 | fcn_00001cb0 ();
0x000077a6 mov r0, r5 | r0 = r5;
0x000077a8 blx 0x1cb0 | fcn_00001cb0 ();
0x000077ac b.w 0x6672 | goto label_31;
| label_164:
0x000077b0 ldr r0, [sp, 0x1c] | r0 = sig;
0x000077b2 bl 0xaac4 | fcn_0000aac4 (r0, r1);
0x000077b6 str r0, [sp, 0x1c] | sig = r0;
| label_54:
0x000077b8 cmp r5, 0 |
| if (r5 == 0) {
0x000077ba beq.w 0x79ba | goto label_168;
| }
| do {
0x000077be ldr r2, [sp, 0x20] | r2 = var_20h;
0x000077c0 subs r3, r5, 1 | r3 = r5 - 1;
0x000077c2 mov r0, r5 | r0 = r5;
0x000077c4 ldr.w r6, [r2, r3, lsl 2] | offset_10 = r3 << 2;
| r6 = *((r2 + offset_10));
0x000077c8 b 0x76ee | goto label_52;
| label_165:
0x000077ca ldr r4, [sp, 0x44] | r4 = var_44h;
0x000077cc str r0, [sp, 0x3c] | var_3ch = r0;
0x000077ce b 0x77be |
| } while (1);
| label_163:
0x000077d0 ldr r3, [pc, 0x390] |
0x000077d2 add.w fp, sp, 0x1b20 |
0x000077d6 add.w fp, fp, 0x10 |
0x000077da subw r2, fp, 0x804 | __asm ("subw r2, fp, 0x804");
0x000077de add r3, pc | r3 = 0xf346;
0x000077e0 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x000077e4 add.w r3, sp, 0x1320 | r3 += arg_1320h;
0x000077e8 adds r3, 0x10 | r3 += 0x10;
0x000077ea str r0, [r2] | *(r2) = r0;
0x000077ec strb r1, [r3] | *(r3) = r1;
0x000077ee movs r1, 3 | r1 = 3;
0x000077f0 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000077f2 bl 0x8fdc | fcn_00008fdc (r0, r1);
0x000077f6 ldr r7, [r6] | r7 = *(r6);
| if (r7 == 0) {
0x000077f8 cbz r7, 0x7836 | goto label_169;
| }
0x000077fa mov.w sb, 0 | sb = 0;
0x000077fe mov r8, sb | r8 = sb;
0x00007800 b 0x780a |
| while (r0 == 0) {
0x00007802 ldr r7, [r7] | r7 = *(r7);
0x00007804 add.w sb, sb, 1 | sb++;
| if (r7 == 0) {
0x00007808 cbz r7, 0x783a | goto label_170;
| }
0x0000780a ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000780c mov r1, r7 | r1 = r7;
0x0000780e ldr r0, [sp, 0x18] | r0 = var_18h;
0x00007810 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x00007812 subs r3, 1 | r3--;
0x00007814 add r8, r3 | r8 += r3;
0x00007816 bl 0x9014 | fcn_00009014 (r0, r1);
0x0000781a ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x0000781c movs r2, 0 | r2 = 0;
0x0000781e ldr r0, [sp, 0x34] | r0 = nmemb;
0x00007820 adds r1, 0x44 | r1 += 0x44;
0x00007822 bl 0x9144 | r0 = fcn_00009144 (r0, r1, r2);
0x00007826 cmp r0, 0 |
0x00007828 beq 0x7802 |
| }
0x0000782a ldr.w r8, [sp, 0x38] | r8 = var_38h;
0x0000782e mov fp, r0 |
0x00007830 ldrd r4, r7, [sp, 0x3c] | __asm ("ldrd r4, r7, [var_3ch]");
0x00007834 b 0x7770 | goto label_53;
| label_169:
0x00007836 mov sb, r7 | sb = r7;
0x00007838 mov r8, r7 | r8 = r7;
| label_170:
0x0000783a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0000783c ldr r0, [r3, 0x2c] | r0 = *((r3 + 0x2c));
0x0000783e add r0, r8 | r0 += r8;
0x00007840 add.w r0, r0, sb, lsl 2 | r0 += (sb << 2);
0x00007844 blx 0x1ec0 | fcn_00001ec0 ();
0x00007848 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000784a mov r8, r0 | r8 = r0;
0x0000784c sub.w sb, r3, 0xa20 | sb = r3 - 0xa20;
0x00007850 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x00007854 subs r3, 1 | r3--;
| if (r3 < 1) {
0x00007856 bmi.w 0x79b6 | goto label_171;
| }
0x0000785a str r5, [sp, 0x44] | var_44h = r5;
0x0000785c subw fp, fp, 0x804 | __asm ("subw fp, fp, 0x804");
0x00007860 movs r7, 0 | r7 = 0;
0x00007862 mov r5, r3 | r5 = r3;
0x00007864 str r4, [sp, 0x4c] | var_4ch = r4;
| do {
0x00007866 ldr.w r2, [sb] | r2 = *(sb);
0x0000786a add.w r0, r8, r7 | r0 = r8 + r7;
0x0000786e ldr.w r4, [r2, r5, lsl 2] | offset_11 = r5 << 2;
| r4 = *((r2 + offset_11));
0x00007872 subs r5, 1 | r5--;
0x00007874 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00007876 ldr r2, [r1, 0x2c] | r2 = *((r1 + 0x2c));
0x00007878 adds r1, 0x44 | r1 += 0x44;
0x0000787a subs r2, 1 | r2--;
0x0000787c str r2, [sp, 0x50] | var_50h = r2;
0x0000787e blx 0x1d90 | feof (r0);
0x00007882 ldr r2, [sp, 0x50] | r2 = var_50h;
0x00007884 ldr.w r0, [fp] | r0 = *(fp);
0x00007888 add r2, r7 | r2 += r7;
0x0000788a ldrb.w r7, [fp, 4] | r7 = *(arg_4h);
0x0000788e add.w r1, r8, r2 | r1 = r8 + r2;
0x00007892 str.w r0, [r8, r2] | __asm ("str.w r0, [r8, r2]");
0x00007896 ldr r0, [sp, 0x1c] | r0 = sig;
0x00007898 strb r7, [r1, 4] | *((r1 + 4)) = r7;
0x0000789a adds r7, r2, 4 | r7 = r2 + 4;
0x0000789c ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0000789e bl 0xaac4 | fcn_0000aac4 (r0, r1);
0x000078a2 str r0, [sp, 0x1c] | sig = r0;
0x000078a4 adds r0, r5, 1 | r0 = r5 + 1;
0x000078a6 bne 0x7866 |
| } while (r0 != r5);
0x000078a8 ldr r5, [sp, 0x44] | r5 = var_44h;
0x000078aa ldr r4, [sp, 0x4c] | r4 = var_4ch;
| label_58:
0x000078ac ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000078ae add.w r0, r8, r7 | r0 = r8 + r7;
0x000078b2 adds r1, 0x44 | r1 += 0x44;
0x000078b4 blx 0x1de4 | vfprintf_chk ();
0x000078b8 ldr r1, [pc, 0x2ac] |
0x000078ba mov r2, r8 | r2 = r8;
0x000078bc movs r0, 3 | r0 = 3;
0x000078be add r1, pc | r1 = 0xf42a;
0x000078c0 bl 0x8a58 | fcn_00008a58 (r0);
0x000078c4 mov r0, r8 | r0 = r8;
0x000078c6 blx 0x1cb0 | fcn_00001cb0 ();
0x000078ca ldr r0, [sp, 0x18] | r0 = var_18h;
0x000078cc bl 0x9070 | fcn_00009070 (r0);
0x000078d0 b 0x77b8 | goto label_54;
| label_160:
0x000078d2 ldr r4, [sp, 0x34] | r4 = nmemb;
0x000078d4 mov r5, r8 | r5 = r8;
0x000078d6 mov r0, r4 | r0 = r4;
0x000078d8 bl 0x963c | fcn_0000963c (r0);
0x000078dc ldr r1, [pc, 0x28c] |
0x000078de mov r2, r0 | r2 = r0;
0x000078e0 movs r0, 3 | r0 = 3;
0x000078e2 add r1, pc | r1 = 0xf452;
0x000078e4 bl 0x8a58 | fcn_00008a58 (r0);
0x000078e8 mov r0, r4 | r0 = r4;
0x000078ea bl 0x90d4 | fcn_000090d4 (r0);
0x000078ee b 0x77a0 | goto label_55;
| label_157:
0x000078f0 ldr r1, [pc, 0x27c] |
0x000078f2 str r0, [sp, 0x20] | var_20h = r0;
0x000078f4 movs r0, 3 | r0 = 3;
0x000078f6 add r1, pc | r1 = 0xf46a;
0x000078f8 bl 0x8a58 | fcn_00008a58 (r0);
0x000078fc b 0x7792 | goto label_56;
| label_78:
0x000078fe blx 0x1ed8 | fcn_00001ed8 ();
| label_144:
0x00007902 ldr r3, [pc, 0x270] |
0x00007904 movw r2, 0x7bf | r2 = 0x7bf;
0x00007908 ldr r1, [pc, 0x26c] |
0x0000790a ldr r0, [pc, 0x270] |
0x0000790c add r3, pc | r3 = 0xf486;
0x0000790e add r1, pc | r1 = 0xf48a;
0x00007910 add r0, pc | r0 = 0xf492;
0x00007912 blx 0x1c88 | renameat ();
| label_155:
0x00007916 ldr r1, [pc, 0x268] |
0x00007918 mov r3, r8 | r3 = r8;
0x0000791a ldr r2, [sp, 0x1c] | r2 = sig;
0x0000791c movs r0, 3 | r0 = 3;
0x0000791e add r1, pc | r1 = 0xf4a4;
0x00007920 bl 0x8a58 | fcn_00008a58 (r0);
0x00007924 b 0x7616 | goto label_57;
| label_130:
0x00007926 ldr r1, [pc, 0x25c] |
0x00007928 movs r0, 3 | r0 = 3;
0x0000792a add r1, pc | r1 = 0xf4b4;
0x0000792c bl 0x8a58 | fcn_00008a58 (r0);
0x00007930 b.w 0x692c | goto label_28;
| label_132:
0x00007934 ldr r1, [pc, 0x250] |
0x00007936 movs r0, 3 | r0 = 3;
0x00007938 add r1, pc | r1 = 0xf4c4;
0x0000793a bl 0x8a58 | fcn_00008a58 (r0);
0x0000793e b.w 0x692c | goto label_28;
| label_94:
0x00007942 blx 0x207c | fcn_0000207c ();
0x00007946 ldr r1, [pc, 0x244] |
0x00007948 ldr r4, [r0] | r4 = *(r0);
0x0000794a movs r0, 7 | r0 = 7;
0x0000794c ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000794e add r1, pc | r1 = 0xf4e0;
0x00007950 bl 0x8a58 | fcn_00008a58 (r0);
0x00007954 cmp r4, 0 |
| if (r4 <= 0) {
0x00007956 ble.w 0x65fe | goto label_15;
| }
0x0000795a mov r0, r4 | r0 = r4;
0x0000795c blx 0x1b54 | fcn_00001b54 ();
0x00007960 ldr r1, [pc, 0x22c] |
0x00007962 mov r3, r0 | r3 = r0;
0x00007964 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00007966 movs r0, 2 | r0 = 2;
0x00007968 add r1, pc | r1 = 0xf4fc;
0x0000796a bl 0x8a58 | fcn_00008a58 (r0);
0x0000796e b.w 0x623c | goto label_10;
| label_103:
0x00007972 blx 0x207c | fcn_0000207c ();
0x00007976 ldr r1, [pc, 0x21c] |
0x00007978 ldr r4, [r0] | r4 = *(r0);
0x0000797a movs r0, 7 | r0 = 7;
0x0000797c ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0000797e add r1, pc | r1 = 0xf518;
0x00007980 bl 0x8a58 | fcn_00008a58 (r0);
0x00007984 cmp r4, 0 |
| if (r4 <= 0) {
0x00007986 ble.w 0x65fe | goto label_15;
| }
0x0000798a mov r0, r4 | r0 = r4;
0x0000798c blx 0x1b54 | fcn_00001b54 ();
0x00007990 ldr r1, [pc, 0x204] |
0x00007992 mov r3, r0 | r3 = r0;
0x00007994 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00007996 movs r0, 2 | r0 = 2;
0x00007998 add r1, pc | r1 = 0xf534;
0x0000799a bl 0x8a58 | fcn_00008a58 (r0);
0x0000799e b.w 0x623c | goto label_10;
| label_140:
0x000079a2 ldr r3, [pc, 0x1f8] |
0x000079a4 movw r2, 0x7a2 | r2 = 0x7a2;
0x000079a8 ldr r1, [pc, 0x1f4] |
0x000079aa ldr r0, [pc, 0x1f8] |
0x000079ac add r3, pc | r3 = 0xf54e;
0x000079ae add r1, pc | r1 = 0xf552;
0x000079b0 add r0, pc | r0 = 0xf55a;
0x000079b2 blx 0x1c88 | renameat ();
| label_171:
0x000079b6 movs r7, 0 | r7 = 0;
0x000079b8 b 0x78ac | goto label_58;
| label_168:
0x000079ba ldrd r8, r4, [sp, 0x38] | __asm ("ldrd r8, r4, [var_38h]");
0x000079be mov fp, r5 |
0x000079c0 ldr r7, [sp, 0x40] | r7 = var_40h;
0x000079c2 b 0x7770 | goto label_53;
| label_158:
0x000079c4 ldr r1, [pc, 0x1e0] |
0x000079c6 movs r0, 3 | r0 = 3;
0x000079c8 add r1, pc | r1 = 0xf574;
0x000079ca bl 0x8a58 | fcn_00008a58 (r0);
0x000079ce b 0x7792 | goto label_56;
| label_167:
0x000079d0 ldr r3, [pc, 0x1d8] |
0x000079d2 movw r2, 0x73b | r2 = 0x73b;
0x000079d6 ldr r1, [pc, 0x1d8] |
0x000079d8 ldr r0, [pc, 0x1d8] |
0x000079da add r3, pc | r3 = 0xf58a;
0x000079dc add r1, pc | r1 = 0xf592;
0x000079de add r0, pc | r0 = 0xf596;
0x000079e0 blx 0x1c88 | renameat ();
| label_166:
0x000079e4 ldr r1, [pc, 0x1d0] |
0x000079e6 movs r0, 3 | r0 = 3;
0x000079e8 ldr.w r8, [sp, 0x38] | r8 = var_38h;
0x000079ec mov r4, sb | r4 = sb;
0x000079ee ldr r7, [sp, 0x40] | r7 = var_40h;
0x000079f0 mvn fp, 0xb |
0x000079f4 add r1, pc | r1 = 0xf5b0;
0x000079f6 bl 0x8a58 | fcn_00008a58 (r0);
0x000079fa b 0x7770 | goto label_53;
| label_162:
0x000079fc ldr r1, [pc, 0x1bc] |
0x000079fe movs r0, 3 | r0 = 3;
0x00007a00 mov r5, r8 | r5 = r8;
0x00007a02 add r1, pc | r1 = 0xf5c2;
0x00007a04 bl 0x8a58 | fcn_00008a58 (r0);
0x00007a08 b 0x778c | goto label_59;
| label_161:
0x00007a0a ldr r1, [pc, 0x1b4] |
0x00007a0c movs r0, 3 | r0 = 3;
0x00007a0e mov r5, r8 | r5 = r8;
0x00007a10 add r1, pc | r1 = 0xf5d6;
0x00007a12 bl 0x8a58 | fcn_00008a58 (r0);
0x00007a16 b 0x778c | goto label_59;
| label_159:
0x00007a18 ldr r1, [pc, 0x1a8] |
0x00007a1a movs r0, 3 | r0 = 3;
0x00007a1c add r1, pc | r1 = 0xf5e4;
0x00007a1e bl 0x8a58 | fcn_00008a58 (r0);
0x00007a22 b 0x7792 | goto label_56;
| label_156:
0x00007a24 str.w sb, [sp, 0x1c] | __asm ("str.w sb, [sig]");
0x00007a28 b 0x767a | goto label_60;
| label_81:
0x00007a2a ldr r3, [pc, 0x19c] |
0x00007a2c movs r2, 0x15 | r2 = 0x15;
0x00007a2e ldr r0, [pc, 0x19c] |
0x00007a30 movs r1, 1 | r1 = 1;
0x00007a32 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00007a36 add r0, pc | r0 = 0xf608;
0x00007a38 ldr r3, [r3] | r3 = *(0x7bca);
0x00007a3a blx 0x1e78 | fcn_00001e78 ();
0x00007a3e b.w 0x623c | goto label_10;
| label_149:
0x00007a42 ldr r1, [pc, 0x18c] |
0x00007a44 mov r2, r5 | r2 = r5;
0x00007a46 ldr r3, [sp, 0x1c] | r3 = sig;
0x00007a48 movs r0, 3 | r0 = 3;
0x00007a4a str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00007a4e add r1, pc | r1 = 0xf624;
0x00007a50 bl 0x8a58 | fcn_00008a58 (r0);
0x00007a54 mov r0, r5 | r0 = r5;
0x00007a56 blx 0x1e60 | fcn_00001e60 ();
0x00007a5a b 0x727a | goto label_45;
| label_87:
0x00007a5c blx 0x207c | fcn_0000207c ();
0x00007a60 ldr r1, [pc, 0x170] |
0x00007a62 mov r2, r4 | r2 = r4;
0x00007a64 ldr r3, [r0] | r3 = *(r0);
0x00007a66 movs r0, 3 | r0 = 3;
0x00007a68 add r1, pc | r1 = 0xf640;
0x00007a6a rsbs r4, r3, 0 | r4 = r3 - ;
0x00007a6c bl 0x8a58 | fcn_00008a58 (r0);
0x00007a70 b.w 0x649e | goto label_21;
| label_123:
0x00007a74 ldr r1, [pc, 0x160] |
0x00007a76 mov r2, r5 | r2 = r5;
0x00007a78 movs r0, 3 | r0 = 3;
0x00007a7a add r1, pc | r1 = 0xf656;
0x00007a7c bl 0x8a58 | fcn_00008a58 (r0);
0x00007a80 b.w 0x6b9c | goto label_27;
| label_106:
0x00007a84 ldr r1, [pc, 0x154] |
0x00007a86 movs r0, 3 | r0 = 3;
0x00007a88 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00007a8a add r1, pc | r1 = 0xf66a;
0x00007a8c bl 0x8a58 | fcn_00008a58 (r0);
0x00007a90 b.w 0x6950 | goto label_61;
| label_133:
0x00007a94 ldr r1, [pc, 0x148] |
0x00007a96 movs r0, 3 | r0 = 3;
0x00007a98 add r1, pc | r1 = 0xf67c;
0x00007a9a bl 0x8a58 | fcn_00008a58 (r0);
0x00007a9e b.w 0x6f34 | goto label_62;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/kmod @ 0x8b58 */
| #include <stdint.h>
|
; (fcn) fcn.00008b58 () | void fcn_00008b58 () {
0x00008b58 ldr r3, [pc, 0x4c] |
0x00008b5a movs r0, 1 | r0 = 1;
0x00008b5c ldr r2, [pc, 0x4c] | r2 = *(0x8bac);
0x00008b5e push {r4, r5, r6, lr} |
0x00008b60 movs r4, 0 | r4 = 0;
0x00008b62 add r3, pc |
0x00008b64 ldr r1, [pc, 0x48] |
0x00008b66 adds r4, 1 | r4++;
0x00008b68 ldr r3, [r3, r2] | r3 = *(0x1170e);
0x00008b6a add r1, pc | r1 = 0x1171e;
0x00008b6c ldr r6, [pc, 0x44] |
0x00008b6e ldr r5, [pc, 0x48] |
0x00008b70 ldr r2, [r3] | r2 = *(0x1170e);
0x00008b72 blx 0x1c1c | system (r0)
0x00008b76 ldr r3, [pc, 0x44] |
0x00008b78 add r6, pc | r6 = 0x11730;
0x00008b7a add r5, pc | r5 = 0x11738;
0x00008b7c mov r1, r6 | r1 = r6;
0x00008b7e movs r0, 1 | r0 = 1;
0x00008b80 add r3, pc | r3 = 0x11742;
0x00008b82 cbz r3, 0x8b8c |
| while (r3 != 0) {
0x00008b84 ldr r2, [r5] | r2 = *(r5);
0x00008b86 ldr r2, [r2] | r2 = *(r2);
0x00008b88 blx 0x1c1c | system (r0)
0x00008b8c cmp r4, 3 |
| if (r4 == 3) {
0x00008b8e beq 0x8ba4 | goto label_1;
| }
| label_0:
0x00008b90 ldr r3, [r5, 4]! | r3 = *((r5 += 4));
0x00008b94 adds r4, 1 | r4++;
0x00008b96 mov r1, r6 | r1 = r6;
0x00008b98 movs r0, 1 | r0 = 1;
0x00008b9a ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00008b9c cmp r3, 0 |
0x00008b9e bne 0x8b84 |
| }
0x00008ba0 cmp r4, 3 |
| if (r4 != 3) {
0x00008ba2 bne 0x8b90 | goto label_0;
| }
| label_1:
0x00008ba4 pop {r4, r5, r6, pc} |
| }
[*] Function system used 17 times kmod