[*] Binary protection state of libblkid.so.1.1.0
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of libblkid.so.1.1.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0x20ef0 */
| #include <stdint.h>
|
; (fcn) fcn.00020ef0 () | void fcn_00020ef0 (int32_t arg1, int32_t arg2) {
| void * s2;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x00020ef0 push {r0, r1, r4, r5, r6, lr} |
0x00020ef4 mov r4, r0 | r4 = r0;
0x00020ef8 mov r5, r1 | r5 = r1;
0x00020efc mov r6, r2 | r6 = r2;
0x00020f00 str r3, [sp, 4] | s2 = r3;
0x00020f04 bl 0xb3b0 | r0 = fcn_0000b3b0 (r0);
0x00020f08 cmp r0, 0 |
| if (r0 != 0) {
0x00020f0c mvneq r0, 0 | r0 = ~0;
| }
| if (r0 == 0) {
0x00020f10 beq 0x20f48 | goto label_0;
| }
0x00020f14 ldr r3, [sp, 4] | r3 = s2;
0x00020f18 cmp r3, 0 |
| if (r3 != 0) {
0x00020f1c moveq r0, r3 | r0 = r3;
| }
| if (r3 == 0) {
0x00020f20 beq 0x20f48 | goto label_0;
| }
0x00020f24 ldr r2, [r0, 0xc] | r2 = *((r0 + 0xc));
0x00020f28 cmp r2, 0 |
| if (r2 == 0) {
0x00020f2c beq 0x20f50 | goto label_1;
| }
0x00020f30 ldr r0, [r0, 0x18] | r0 = *((r0 + 0x18));
0x00020f34 mov r2, 4 | r2 = 4;
0x00020f38 add r1, sp, r2 | r1 = sp + r2;
0x00020f3c add r0, r0, r6 | r0 += r6;
0x00020f40 bl 0x5950 | memcpy (r0, r1, r2);
0x00020f44 mov r0, 0 | r0 = 0;
| do {
| label_0:
0x00020f48 add sp, sp, 8 |
0x00020f4c pop {r4, r5, r6, pc} |
| label_1:
0x00020f50 ldr r2, [pc, 0x10] | r2 = *(0x20f64);
0x00020f54 mov r1, r5 | r1 = r5;
0x00020f58 add r2, pc, r2 | r2 = pc + r2;
0x00020f5c mov r0, r4 | r0 = r4;
0x00020f60 bl 0xc6f8 | fcn_0000c6f8 (r0, r1, r2, r3, r4);
0x00020f64 b 0x20f48 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0x24848 */
| #include <stdint.h>
|
; (fcn) fcn.00024848 () | void fcn_00024848 (int32_t arg1, int32_t arg2) {
| wchar_t * pwc;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00024848 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, lr} |
0x0002484c mov r4, r0 | r4 = r0;
0x00024850 mov r5, r1 | r5 = r1;
0x00024854 cmp r1, 3 |
| if (r1 > 3) {
| /* switch table (4 cases) at 0x24860 */
0x00024858 addls pc, pc, r1, lsl 2 | pc += (r1 << 2);
| }
0x0002485c b 0x249bc | goto label_1;
0x00024860 b 0x24870 | goto label_2;
0x00024864 b 0x2493c | goto label_3;
0x00024868 b 0x249ac | goto label_4;
0x0002486c b 0x2499c | goto label_5;
| label_2:
0x00024870 ldr r7, [r0, 0x14] | r7 = *((r0 + 0x14));
0x00024874 cmp r7, 0 |
| if (r7 != 0) {
0x00024878 moveq r5, 1 | r5 = 1;
| }
| if (r7 != 0) {
0x0002487c beq 0x248c4 |
0x00024880 ldr r3, [r0] | r3 = *(r0);
0x00024884 mov r2, 0 | r2 = 0;
0x00024888 adds r7, r3, r7 | r7 = r3 + r7;
| if (r7 != r3) {
0x0002488c moveq r6, 1 | r6 = 1;
| }
| if (r7 == r3) {
0x00024890 movne r6, r2 | r6 = r2;
| }
0x00024894 cmp r3, r2 |
| if (r3 != r2) {
0x00024898 moveq r6, 1 | r6 = 1;
| }
0x0002489c cmp r6, r2 |
0x000248a0 str r2, [sp, 4] | pwc = r2;
| if (r6 != r2) {
0x000248a4 bne 0x248c4 | goto label_0;
| }
0x000248a8 cmp r3, r7 |
| if (r3 == r7) {
0x000248ac beq 0x248c4 | goto label_0;
| }
0x000248b0 ldrsb r2, [r3] | r2 = *(r3);
0x000248b4 cmp r2, 0 |
| if (r2 == 0) {
0x000248b8 movne r8, r3 | r8 = r3;
| }
| if (r2 == 0) {
0x000248bc addne sb, sp, 4 | sb += pwc;
| }
| if (r2 != 0) {
0x000248c0 bne 0x24900 | goto label_6;
| }
| }
| label_0:
0x000248c4 mov r0, r5 | r0 = r5;
0x000248c8 add sp, sp, 0xc |
0x000248cc pop {r4, r5, r6, r7, r8, sb, pc} |
| do {
0x000248d0 bl 0x5c80 | stdlib_mb_cur_max ();
0x000248d4 mov r3, 0 | r3 = 0;
0x000248d8 mov r1, r8 | r1 = r8;
0x000248dc mov r2, r0 | r2 = r0;
0x000248e0 mov r0, sb | r0 = sb;
0x000248e4 bl 0x59b0 | mbrtowc (r0, r1, r2, r3);
0x000248e8 mov r3, r8 | r3 = r8;
0x000248ec cmn r0, 2 |
| if (r0 < 2) {
0x000248f0 addhs r2, r8, 1 | r2 = r8 + 1;
| }
| if (r0 >= 2) {
0x000248f4 addlo r2, r8, r0 | r2 = r8 + r0;
| }
0x000248f8 mov r6, r0 | r6 = r0;
0x000248fc mov r8, r2 | r8 = r2;
| label_6:
0x00024900 cmp r7, r8 |
0x00024904 bhi 0x248d0 |
| } while (r7 > r8);
0x00024908 cmp r7, r3 |
| if (r7 == r3) {
0x0002490c beq 0x248c4 | goto label_0;
| }
0x00024910 ldr r0, [sp, 4] | r0 = pwc;
0x00024914 bl 0x5d70 | wcwidth ();
0x00024918 cmp r6, 0 |
| if (r6 == 0) {
0x0002491c beq 0x248c4 | goto label_0;
| }
0x00024920 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00024924 sub r6, r3, r6 | r6 = r3 - r6;
0x00024928 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0002492c str r6, [r4, 0x14] | *((r4 + 0x14)) = r6;
0x00024930 sub r0, r3, r0 | r0 = r3 - r0;
0x00024934 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00024938 b 0x248c4 | goto label_0;
| label_3:
0x0002493c ldr r2, [r0, 0x18] | r2 = *((r0 + 0x18));
0x00024940 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00024944 cmp r2, r3 |
| if (r2 >= r3) {
0x00024948 bhs 0x248c4 | goto label_0;
| }
0x0002494c ldr r2, [r0] | r2 = *(r0);
0x00024950 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x00024954 adds r0, r2, r3 | r0 = r2 + r3;
| if (r0 == r2) {
0x00024958 beq 0x24994 | goto label_7;
| }
0x0002495c ldrsb r3, [r2, r3] | r3 = *((r2 + r3));
0x00024960 cmp r3, 0 |
| if (r3 == 0) {
0x00024964 beq 0x24994 | goto label_7;
| }
0x00024968 add r1, sp, 4 | r1 += pwc;
0x0002496c bl 0x24704 | r0 = fcn_00024704 (r0, r1);
0x00024970 cmp r0, 0 |
| if (r0 == 0) {
0x00024974 beq 0x24994 | goto label_7;
| }
0x00024978 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0002497c ldr r2, [sp, 4] | r2 = pwc;
0x00024980 add r0, r3, r0 | r0 = r3 + r0;
0x00024984 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00024988 str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x0002498c add r3, r3, r2 | r3 += r2;
| do {
0x00024990 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| label_7:
0x00024994 mov r5, 0 | r5 = 0;
0x00024998 b 0x248c4 | goto label_0;
| label_5:
0x0002499c mov r5, 0 | r5 = 0;
0x000249a0 str r5, [r0, 0x14] | *((r0 + 0x14)) = r5;
0x000249a4 str r5, [r0, 0x18] | *((r0 + 0x18)) = r5;
0x000249a8 b 0x248c4 | goto label_0;
| label_4:
0x000249ac ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000249b0 str r3, [r0, 0x14] | *((r0 + 0x14)) = r3;
0x000249b4 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000249b8 b 0x24990 |
| } while (1);
| label_1:
0x000249bc mvn r5, 0x15 | r5 = ~0x15;
0x000249c0 b 0x248c4 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0x261f8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000261f8 () | void fcn_000261f8 (int32_t arg_0h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h_4;
| int32_t var_8h_5;
| int32_t var_10h;
| int32_t var_e8h_2;
| int32_t var_e8h_3;
| int32_t var_28h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_48h_2;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_58h;
| int32_t var_58h_2;
| int32_t var_60h;
| int32_t var_64h;
| int32_t var_dh;
| char * s1;
| int32_t var_1h;
| int32_t var_6fh;
| int32_t var_78h;
| int32_t var_90h;
| int32_t var_7h;
| int32_t var_80h;
| int32_t var_88h;
| int32_t var_a6h;
| int32_t var_a8h;
| int32_t var_ach;
| int32_t var_b0h;
| int32_t var_b0h_2;
| int32_t var_b8h;
| int32_t var_d8h;
| int32_t var_dch;
| int32_t var_e0h;
| int32_t var_e4h;
| int32_t var_e8h;
| int32_t var_10h_3;
| int32_t var_f0h;
| int32_t var_f4h;
| int32_t var_f8h;
| int32_t var_fch;
| int32_t var_100h;
| int32_t var_104h;
| int32_t var_108h;
| int32_t var_0h_2;
| int32_t var_8h_2;
| int32_t var_8h_3;
| int32_t var_10h_2;
| int32_t var_28h_3;
| int32_t var_30h;
| int32_t var_8h;
| int32_t var_ch_2;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h_2;
| int32_t var_2ch;
| int32_t var_4c0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x000261f8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000261fc sub sp, sp, 0x4c0 |
0x00026200 sub sp, sp, 0xc |
0x00026204 add r3, sp, 0x80 | r3 += var_80h;
0x00026208 str r3, [sp, 0x40] | var_40h = r3;
0x0002620c mov r3, 0 | r3 = 0;
0x00026210 str r3, [sp, 0x50] | var_50h = r3;
0x00026214 str r3, [sp, 0x38] | var_38h = r3;
0x00026218 mvn r3, 1 | r3 = ~1;
0x0002621c str r3, [sp, 0x34] | var_34h = r3;
0x00026220 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00026224 mov r5, r0 | r5 = r0;
0x00026228 add r4, sp, 0x108 | r4 += var_108h;
0x0002622c str r3, [sp, 0x64] | var_64h = r3;
| label_22:
0x00026230 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00026234 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00026238 strh r2, [r3] | *(r3) = r2;
0x0002623c ldr r2, [sp, 0x40] | r2 = var_40h;
0x00026240 add r3, sp, 0xa6 | r3 += var_a6h;
0x00026244 cmp r2, r3 |
| if (r2 >= r3) {
0x00026248 bhs 0x276d8 | goto label_51;
| }
0x0002624c ldr r3, [sp, 0x38] | r3 = var_38h;
0x00026250 cmp r3, 0xc |
| if (r3 == 0xc) {
0x00026254 beq 0x276e0 | goto label_52;
| }
0x00026258 ldr r3, [pc, 0x5b8] | r3 = *(0x26814);
0x0002625c ldr r2, [sp, 0x38] | r2 = var_38h;
0x00026260 add r3, pc, r3 | r3 = pc + r3;
0x00026264 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00026268 cmn r3, 0x5d |
0x0002626c str r3, [sp, 0x44] | var_44h = r3;
| if (r3 == 0x5d) {
0x00026270 beq 0x26a10 | goto label_53;
| }
0x00026274 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00026278 cmn r3, 2 |
| if (r3 != 2) {
0x0002627c bne 0x26794 | goto label_54;
| }
| do {
| label_0:
0x00026280 ldr r6, [r5] | r6 = *(r5);
0x00026284 ldrsb r7, [r6] | r7 = *(r6);
0x00026288 and r1, r7, 0xff | r1 = r7 & 0xff;
0x0002628c mov r0, r1 | r0 = r1;
0x00026290 bl 0x25d10 | r0 = fcn_00025d10 (r0);
0x00026294 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 == r0) {
0x00026298 addne r6, r6, 1 | r6++;
| }
0x0002629c str r3, [sp, 0x34] | var_34h = r3;
| if (r3 == r0) {
0x000262a0 strne r6, [r5] | *(r5) = r6;
| }
0x000262a4 bne 0x26280 |
| } while (r3 != r0);
0x000262a8 sub r2, r7, 0x30 | r2 = r7 - 0x30;
0x000262ac sub r3, r1, 0x2b | r3 = r1 - 0x2b;
0x000262b0 cmp r2, 9 |
0x000262b4 and r3, r3, 0xfd | r3 &= 0xfd;
| if (r2 < 9) {
0x000262b8 bls 0x26324 | goto label_55;
| }
0x000262bc cmp r3, 0 |
| if (r3 == 0) {
0x000262c0 beq 0x2632c | goto label_56;
| }
0x000262c4 cmp r7, 0x41 |
| if (r7 >= 0x41) {
0x000262c8 blt 0x262e0 |
0x000262cc cmp r7, 0x5a |
| if (r7 <= 0x5a) {
0x000262d0 ble 0x2657c | goto label_57;
| }
0x000262d4 sub r3, r7, 0x61 | r3 = r7 - 0x61;
0x000262d8 cmp r3, 0x19 |
| if (r3 < 0x19) {
0x000262dc bls 0x2657c | goto label_57;
| }
| }
0x000262e0 cmp r1, 0x28 |
| if (r1 != 0x28) {
0x000262e4 bne 0x26958 | goto label_58;
| }
0x000262e8 mov r2, 0 | r2 = 0;
| do {
0x000262ec ldr r3, [r5] | r3 = *(r5);
0x000262f0 add r1, r3, 1 | r1 = r3 + 1;
0x000262f4 str r1, [r5] | *(r5) = r1;
0x000262f8 ldrb r3, [r3] | r3 = *(r3);
0x000262fc cmp r3, 0 |
| if (r3 == 0) {
0x00026300 beq 0x26970 | goto label_59;
| }
0x00026304 cmp r3, 0x28 |
| if (r3 != 0x28) {
0x00026308 addeq r2, r2, 1 | r2++;
| }
| if (r3 != 0x28) {
0x0002630c beq 0x26318 |
0x00026310 cmp r3, 0x29 |
| if (r3 == 0x29) {
0x00026314 subeq r2, r2, 1 | r2--;
| goto label_60;
| }
| }
| label_60:
0x00026318 cmp r2, 0 |
0x0002631c bne 0x262ec |
| } while (r2 != 0);
0x00026320 b 0x26280 | goto label_0;
| label_55:
0x00026324 cmp r3, 0 |
| if (r3 != 0) {
0x00026328 bne 0x2636c | goto label_61;
| }
| label_56:
0x0002632c cmp r1, 0x2d |
| if (r1 == 0x2d) {
0x00026330 movne r3, 1 | r3 = 1;
| }
| if (r1 != 0x2d) {
0x00026334 mvneq r3, 0 | r3 = ~0;
| }
0x00026338 str r3, [sp, 0x34] | var_34h = r3;
| do {
0x0002633c ldr r3, [r5] | r3 = *(r5);
0x00026340 add r2, r3, 1 | r2 = r3 + 1;
0x00026344 str r2, [r5] | *(r5) = r2;
0x00026348 ldrsb r6, [r3, 1] | r6 = *((r3 + 1));
0x0002634c and r1, r6, 0xff | r1 = r6 & 0xff;
0x00026350 mov r0, r1 | r0 = r1;
0x00026354 bl 0x25d10 | r0 = fcn_00025d10 (r0);
0x00026358 cmp r0, 0 |
0x0002635c bne 0x2633c |
| } while (r0 != 0);
0x00026360 sub r6, r6, 0x30 | r6 -= 0x30;
0x00026364 cmp r6, 9 |
| if (r6 > 9) {
0x00026368 bhi 0x26280 | goto label_0;
| }
| label_61:
0x0002636c ldr lr, [r5] |
0x00026370 mov r8, 0 | r8 = 0;
0x00026374 mov ip, lr |
0x00026378 mov sb, 0 | sb = 0;
0x0002637c mov sl, 0xa | sl = 0xa;
| do {
0x00026380 sub r0, r1, 0x30 | r0 = r1 - 0x30;
0x00026384 asr r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00026388 adds r2, r0, r8 | r2 = r0 + r8;
0x0002638c adcs r3, r1, sb | __asm ("adcs r3, r1, sb");
0x00026390 mov r6, 0 | r6 = 0;
0x00026394 mov r7, 0 | r7 = 0;
| if (r2 < r0) {
0x00026398 movhs r6, 1 | r6 = 1;
| }
| if (r2 < r0) {
0x0002639c movhs r7, 0 | r7 = 0;
| }
0x000263a0 orrs r1, r6, r7 | r1 = r6 | r7;
| if (r1 != r6) {
0x000263a4 bne 0x26538 | goto label_8;
| }
0x000263a8 ldrsb r0, [ip, 1]! | r0 = *((ip += 1));
0x000263ac sub r6, r0, 0x30 | r6 = r0 - 0x30;
0x000263b0 cmp r6, 9 |
0x000263b4 and r1, r0, 0xff | r1 = r0 & 0xff;
| if (r6 >= 9) {
0x000263b8 bls 0x26434 |
0x000263bc bic r0, r0, 2 | r0 = BIT_MASK (r0, 2);
0x000263c0 cmp r0, 0x2c |
| if (r0 == 0x2c) {
0x000263c4 beq 0x26458 | goto label_62;
| }
| label_1:
0x000263c8 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000263cc lsr r1, r1, 0x1f | r1 >>= 0x1f;
0x000263d0 str r1, [sp, 0xa8] | var_a8h = r1;
0x000263d4 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000263d8 cmn r1, 1 |
| if (r1 != 1) {
0x000263dc bne 0x26568 | goto label_63;
| }
0x000263e0 rsbs r2, r2, 0 | r2 -= ;
0x000263e4 rsc r3, r3, 0 | __asm ("rsc r3, r3, 0");
0x000263e8 cmp r2, 1 |
0x000263ec strd r2, r3, [sp, 0x48] | __asm ("strd r2, r3, [var_48h]");
0x000263f0 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x000263f4 bge 0x26538 | goto label_8;
| }
| label_7:
0x000263f8 sub r3, ip, lr | r3 = ip - lr;
0x000263fc ldr r1, [sp, 0x34] | r1 = var_34h;
0x00026400 str r3, [sp, 0x60] | var_60h = r3;
0x00026404 ldr r3, [pc, 0x410] | r3 = *(0x26818);
0x00026408 ldr r2, [pc, 0x410] | r2 = *(0x2681c);
0x0002640c cmp r1, 0 |
| if (r1 == 0) {
0x00026410 movne r2, r3 | r2 = r3;
| }
0x00026414 str ip, [r5] | *(r5) = ip;
0x00026418 str r2, [sp, 0x34] | var_34h = r2;
| label_2:
0x0002641c ldr r3, [pc, 0x400] | r3 = *(0x26820);
0x00026420 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00026424 add r3, pc, r3 | r3 = pc + r3;
0x00026428 add r3, r3, r2 | r3 += r2;
0x0002642c ldrb r3, [r3, 0x72] | r3 = *((r3 + 0x72));
0x00026430 b 0x26970 | goto label_59;
| }
0x00026434 add r7, pc, 0x3d4 | r7 = pc + 0x3d4;
0x00026438 ldrd r6, r7, [r7] | __asm ("ldrd r6, r7, [r7]");
0x0002643c cmp r3, r7 |
0x00026440 cmpeq r2, r6 | __asm ("cmpeq r2, r6");
| if (r3 > r7) {
0x00026444 bhi 0x26538 | goto label_8;
| }
0x00026448 umull r8, sb, r2, sl | r8:sb = r2 * sl;
0x0002644c mla r0, sl, r3, sb | __asm ("mla r0, sl, r3, sb");
0x00026450 mov sb, r0 | sb = r0;
0x00026454 b 0x26380 |
| } while (1);
| label_62:
0x00026458 ldrsb r6, [ip, 1] | r6 = *((ip + 1));
0x0002645c sub r6, r6, 0x30 | r6 -= 0x30;
0x00026460 cmp r6, 9 |
| if (r6 > 9) {
0x00026464 bhi 0x263c8 | goto label_1;
| }
0x00026468 ldr r1, [sp, 0x34] | r1 = var_34h;
0x0002646c cmn r1, 1 |
| if (r1 != 1) {
0x00026470 bne 0x26530 | goto label_64;
| }
0x00026474 rsb lr, r2, 0 | lr = r2 - ;
0x00026478 cmp lr, 0 |
| if (lr > 0) {
0x0002647c bgt 0x26538 | goto label_8;
| }
| label_3:
0x00026480 asr r1, r2, 0x1f | r1 = r2 >> 0x1f;
0x00026484 cmp r3, r1 |
0x00026488 cmpeq r2, r2 | __asm ("cmpeq r2, r2");
| if (r3 != r1) {
0x0002648c bne 0x26538 | goto label_8;
| }
0x00026490 add ip, ip, 2 |
0x00026494 mov r2, 8 | r2 = 8;
0x00026498 mov r1, 0xa | r1 = 0xa;
| do {
0x0002649c ldrsb r3, [ip] | r3 = *(ip);
0x000264a0 mul r6, r1, r6 | r6 = r1 * r6;
0x000264a4 sub r3, r3, 0x30 | r3 -= 0x30;
0x000264a8 cmp r3, 9 |
| if (r3 > 9) {
0x000264ac addls ip, ip, 1 |
| }
| if (r3 > 9) {
0x000264b0 addls r6, r6, r3 | r6 += r3;
| }
0x000264b4 subs r2, r2, 1 | r2--;
0x000264b8 bne 0x2649c |
| } while (r2 != r2);
0x000264bc ldr r3, [sp, 0x34] | r3 = var_34h;
0x000264c0 cmn r3, 1 |
| if (r3 != 1) {
0x000264c4 moveq r2, ip | r2 = ip;
| }
| if (r3 == 1) {
0x000264c8 beq 0x26540 | goto label_6;
| }
| do {
| label_5:
0x000264cc mov r3, ip | r3 = ip;
0x000264d0 ldrsb r2, [r3] | r2 = *(r3);
0x000264d4 add ip, ip, 1 |
0x000264d8 sub r2, r2, 0x30 | r2 -= 0x30;
0x000264dc cmp r2, 9 |
0x000264e0 bls 0x264cc |
| } while (r2 < 9);
0x000264e4 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000264e8 adds r2, r6, 0 | r2 = r6 + 0;
| if (r2 == r6) {
0x000264ec movne r2, 1 | r2 = 1;
| }
0x000264f0 ands r2, r2, r1, lsr 31 | r2 &= (r1 >> 31);
| if (r2 != r2) {
0x000264f4 beq 0x2650c |
0x000264f8 subs lr, lr, 1 | lr--;
| if (lr >= lr) {
0x000264fc bpl 0x26538 | goto label_8;
| }
0x00026500 rsb r6, r6, 0x3b800000 | r6 = 0x3b800000 - r6;
0x00026504 add r6, r6, 0x1ac000 | r6 += 0x1ac000;
0x00026508 add r6, r6, 0xa00 | r6 += 0xa00;
| }
0x0002650c str r3, [r5] | *(r5) = r3;
0x00026510 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00026514 str lr, [sp, 0xa8] | var_a8h = lr;
0x00026518 cmp r3, 0 |
0x0002651c ldr r3, [pc, 0x304] | r3 = *(0x26824);
| if (r3 == 0) {
0x00026520 movne r3, 0x114 | r3 = 0x114;
| }
0x00026524 str r6, [sp, 0xac] | var_ach = r6;
| label_4:
0x00026528 str r3, [sp, 0x34] | var_34h = r3;
0x0002652c b 0x2641c | goto label_2;
| label_64:
0x00026530 subs lr, r2, 0 | lr = r2 - 0;
| if (lr >= r2) {
0x00026534 bge 0x26480 | goto label_3;
| }
| label_8:
0x00026538 mov r3, 0x3f | r3 = 0x3f;
0x0002653c b 0x26528 | goto label_4;
| label_6:
0x00026540 ldrsb r3, [r2] | r3 = *(r2);
0x00026544 mov ip, r2 |
0x00026548 sub r1, r3, 0x30 | r1 = r3 - 0x30;
0x0002654c cmp r1, 9 |
0x00026550 add r2, r2, 1 | r2++;
| if (r1 > 9) {
0x00026554 bhi 0x264cc | goto label_5;
| }
0x00026558 cmp r3, 0x30 |
| if (r3 == 0x30) {
0x0002655c beq 0x26540 | goto label_6;
| }
0x00026560 add r6, r6, 1 | r6++;
0x00026564 b 0x264cc | goto label_5;
| label_63:
0x00026568 cmp r2, 0 |
0x0002656c strd r2, r3, [sp, 0x48] | __asm ("strd r2, r3, [var_48h]");
0x00026570 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 0) {
0x00026574 bge 0x263f8 | goto label_7;
| }
0x00026578 b 0x26538 | goto label_8;
| label_57:
0x0002657c add r0, sp, 0x78 | r0 += var_78h;
0x00026580 sub r3, r0, 0xc | r3 -= s1;
0x00026584 mov r6, r3 | r6 = r3;
0x00026588 add ip, r0, 7 |
| do {
| label_9:
0x0002658c ldr r2, [r5] | r2 = *(r5);
0x00026590 cmp r3, ip |
| if (r3 >= ip) {
0x00026594 strblo r1, [r3] | *(r3) = r1;
| }
0x00026598 add r1, r2, 1 | r1 = r2 + 1;
0x0002659c str r1, [r5] | *(r5) = r1;
0x000265a0 ldrsb r2, [r2, 1] | r2 = *((r2 + 1));
| if (r3 >= ip) {
0x000265a4 addlo r3, r3, 1 | r3 += var_1h;
| }
0x000265a8 cmp r2, 0x41 |
0x000265ac and r1, r2, 0xff | r1 = r2 & 0xff;
| if (r2 < 0x41) {
0x000265b0 blt 0x265c8 | goto label_65;
| }
0x000265b4 cmp r2, 0x5a |
0x000265b8 ble 0x2658c |
| } while (r2 <= 0x5a);
0x000265bc sub r2, r2, 0x61 | r2 -= 0x61;
0x000265c0 cmp r2, 0x19 |
| if (r2 < 0x19) {
0x000265c4 bls 0x2658c | goto label_9;
| }
| label_65:
0x000265c8 cmp r1, 0x2e |
| if (r1 == 0x2e) {
0x000265cc beq 0x2658c | goto label_9;
| }
0x000265d0 mov r2, 0 | r2 = 0;
0x000265d4 strb r2, [r3] | *(r3) = r2;
0x000265d8 sub r3, r0, 0xd | r3 -= var_dh;
0x000265dc str r3, [sp, 0x3c] | var_3ch = r3;
| label_10:
0x000265e0 ldrsb sb, [r3, 1]! | sb = s1;
0x000265e4 cmp sb, 0 |
| if (sb != 0) {
0x000265e8 bne 0x26750 | goto label_66;
| }
0x000265ec ldr sl, [pc, 0x238] |
0x000265f0 add sl, pc, sl | sl = pc + sl;
0x000265f4 add sl, sl, 0x27c | sl = 0x26aa4;
| label_11:
0x000265f8 ldr r8, [sb, sl] | r8 = *((sb + sl));
0x000265fc add r7, sl, sb | r7 = sl + sb;
0x00026600 cmp r8, 0 |
| if (r8 != 0) {
0x00026604 bne 0x26768 | goto label_67;
| }
0x00026608 mov r0, r6 | r0 = r6;
0x0002660c bl 0x6118 | r0 = strlen (r0);
0x00026610 cmp r0, 3 |
0x00026614 mov sb, r0 | sb = r0;
| if (r0 != 3) {
0x00026618 moveq r8, 1 | r8 = 1;
| }
| if (r0 != 3) {
0x0002661c beq 0x26634 |
0x00026620 cmp r0, 4 |
0x00026624 ldrsbeq r8, [sp, 0x6f] | __asm ("ldrsbeq r8, [var_6fh]");
| if (r0 != 4) {
0x00026628 subeq r8, r8, 0x2e | r8 -= 0x2e;
| }
0x0002662c clzeq r8, r8 | __asm ("clzeq r8, r8");
| if (r0 == 4) {
0x00026630 lsreq r8, r8, 5 | r8 >>= 5;
| goto label_68;
| }
| }
| label_68:
0x00026634 ldr r3, [pc, 0x1f4] | r3 = *(0x2682c);
0x00026638 mov sl, 0 | sl = 0;
0x0002663c add r3, pc, r3 | r3 = pc + r3;
0x00026640 add fp, r3, 0x2b8 |
0x00026644 str r3, [sp, 0x54] | var_54h = r3;
| label_12:
0x00026648 ldr r1, [sl, fp] | r1 = *((sl + fp));
0x0002664c add r7, fp, sl | r7 = fp + sl;
0x00026650 cmp r1, 0 |
| if (r1 != 0) {
0x00026654 bne 0x267c0 | goto label_69;
| }
0x00026658 mov r1, r6 | r1 = r6;
0x0002665c mov r0, r5 | r0 = r5;
0x00026660 bl 0x26144 | r0 = fcn_00026144 (r0, r1);
0x00026664 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x00026668 bne 0x26780 | goto label_13;
| }
0x0002666c ldr r1, [pc, 0x1c0] | r1 = *(0x26830);
0x00026670 mov r0, r6 | r0 = r6;
0x00026674 add r1, pc, r1 | r1 = pc + r1;
0x00026678 bl 0x5efc | r0 = strcmp (r0, r1);
0x0002667c cmp r0, 0 |
| if (r0 == 0) {
0x00026680 beq 0x276e8 | goto label_70;
| }
0x00026684 ldr sl, [pc, 0x1ac] |
0x00026688 mov fp, r7 |
0x0002668c add sl, pc, sl | sl = pc + sl;
0x00026690 add sl, sl, 0x3e4 | sl = 0x26c18;
| label_15:
0x00026694 ldr r1, [fp, sl] | r1 = *((fp + sl));
0x00026698 add r7, sl, fp | r7 = sl + fp;
0x0002669c cmp r1, 0 |
| if (r1 != 0) {
0x000266a0 bne 0x267f8 | goto label_71;
| }
0x000266a4 sub fp, sb, 1 |
0x000266a8 ldrsb r3, [r6, fp] | r3 = *((r6 + fp));
0x000266ac cmp r3, 0x53 |
| if (r3 == 0x53) {
0x000266b0 bne 0x266e0 |
0x000266b4 ldr r3, [pc, 0x180] |
0x000266b8 mov r8, r1 | r8 = r1;
0x000266bc add r3, pc, r3 | r3 = pc + r3;
0x000266c0 add r3, r3, 0x3e4 | r3 = 0x26c1c;
0x000266c4 strb r1, [r6, fp] | *((r6 + fp)) = r1;
| label_16:
0x000266c8 ldr r1, [r8, r3] | r1 = *((r8 + r3));
0x000266cc add r7, sl, r8 | r7 = sl + r8;
0x000266d0 cmp r1, 0 |
| if (r1 != 0) {
0x000266d4 bne 0x268cc | goto label_72;
| }
0x000266d8 mov r3, 0x53 | r3 = 0x53;
0x000266dc strb r3, [r6, fp] | *((r6 + fp)) = r3;
| }
0x000266e0 ldr r8, [pc, 0x158] |
0x000266e4 mov sl, 0 | sl = 0;
0x000266e8 add r8, pc, r8 | r8 = pc + r8;
0x000266ec add r8, r8, 0x460 | r8 = 0x26c9c;
0x000266f0 add r8, r8, 8 | r8 += 8;
| label_17:
0x000266f4 ldr r1, [sl, r8] | r1 = *((sl + r8));
0x000266f8 add r7, r8, sl | r7 = r8 + sl;
0x000266fc cmp r1, 0 |
| if (r1 != 0) {
0x00026700 bne 0x268ec | goto label_73;
| }
0x00026704 cmp sb, 1 |
0x00026708 ldrsb r0, [r6] | r0 = *(r6);
| if (sb == 1) {
0x0002670c beq 0x26928 | goto label_74;
| }
| label_19:
0x00026710 mov r3, r6 | r3 = r6;
| label_21:
0x00026714 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00026718 ldrsb r2, [r1, 1]! | r2 = *((r1 += 1));
0x0002671c cmp r2, 0 |
0x00026720 str r1, [sp, 0x3c] | var_3ch = r1;
0x00026724 strb r2, [r3] | *(r3) = r2;
| if (r2 != 0) {
0x00026728 bne 0x2693c | goto label_75;
| }
0x0002672c ldr r3, [sp, 0x34] | r3 = var_34h;
0x00026730 cmp r3, 0 |
| if (r3 == 0) {
0x00026734 beq 0x26538 | goto label_8;
| }
0x00026738 mov r1, r6 | r1 = r6;
0x0002673c mov r0, r5 | r0 = r5;
0x00026740 bl 0x26144 | r0 = fcn_00026144 (r0, r1);
0x00026744 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x00026748 bne 0x26780 | goto label_13;
| }
0x0002674c b 0x26538 | goto label_8;
| label_66:
0x00026750 and r2, sb, 0xff | r2 = sb & 0xff;
0x00026754 sub sb, sb, 0x61 | sb -= 0x61;
0x00026758 cmp sb, 0x19 |
| if (sb > 0x19) {
0x0002675c subls r2, r2, 0x20 | r2 -= 0x20;
| }
0x00026760 strb r2, [r3] | *(r3) = r2;
0x00026764 b 0x265e0 | goto label_10;
| label_67:
0x00026768 mov r1, r8 | r1 = r8;
0x0002676c mov r0, r6 | r0 = r6;
0x00026770 bl 0x5efc | strcmp (r0, r1);
0x00026774 add sb, sb, 0xc | sb += 0xc;
0x00026778 cmp r0, 0 |
| if (r0 != 0) {
0x0002677c bne 0x265f8 | goto label_11;
| }
| label_13:
0x00026780 ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x00026784 asr r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x00026788 strd r2, r3, [sp, 0xa8] | __asm ("strd r2, r3, [var_a8h]");
0x0002678c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00026790 str r3, [sp, 0x34] | var_34h = r3;
| label_54:
0x00026794 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00026798 cmp r3, 0 |
| if (r3 > 0) {
0x0002679c movle r3, 0 | r3 = 0;
| }
| if (r3 > 0) {
0x000267a0 strle r3, [sp, 0x34] | var_34h = r3;
| }
| if (r3 <= 0) {
0x000267a4 ble 0x26970 | goto label_59;
| }
0x000267a8 ldr r3, [pc, 0x78] | r3 = *(0x26824);
0x000267ac ldr r2, [sp, 0x34] | r2 = var_34h;
0x000267b0 cmp r2, r3 |
| if (r2 <= r3) {
0x000267b4 movgt r3, 2 | r3 = 2;
| }
| if (r2 > r3) {
0x000267b8 bgt 0x26970 | goto label_59;
| }
0x000267bc b 0x2641c | goto label_2;
| label_69:
0x000267c0 cmp r8, 0 |
| if (r8 == 0) {
0x000267c4 beq 0x267ec | goto label_76;
| }
0x000267c8 mov r2, 3 | r2 = 3;
0x000267cc mov r0, r6 | r0 = r6;
0x000267d0 bl 0x5d34 | r0 = strncmp (r0, r1, r2);
| label_14:
0x000267d4 clz r0, r0 | r0 &= r0;
0x000267d8 lsr r0, r0, 5 | r0 >>= 5;
0x000267dc cmp r0, 0 |
0x000267e0 add sl, sl, 0xc | sl += 0xc;
| if (r0 == 0) {
0x000267e4 beq 0x26648 | goto label_12;
| }
0x000267e8 b 0x26780 | goto label_13;
| label_76:
0x000267ec mov r0, r6 | r0 = r6;
0x000267f0 bl 0x5efc | strcmp (r0, r1);
0x000267f4 b 0x267d4 | goto label_14;
| label_71:
0x000267f8 mov r0, r6 | r0 = r6;
0x000267fc bl 0x5efc | strcmp (r0, r1);
0x00026800 add fp, fp, 0xc |
0x00026804 cmp r0, 0 |
| if (r0 != 0) {
0x00026808 bne 0x26694 | goto label_15;
| }
0x0002680c b 0x26780 | goto label_13;
| label_72:
0x000268cc mov r0, r6 | r0 = r6;
0x000268d0 str r3, [sp, 0x54] | var_54h = r3;
0x000268d4 bl 0x5efc | strcmp (r0, r1);
0x000268d8 add r8, r8, 0xc | r8 += 0xc;
0x000268dc ldr r3, [sp, 0x54] | r3 = var_54h;
0x000268e0 cmp r0, 0 |
| if (r0 != 0) {
0x000268e4 bne 0x266c8 | goto label_16;
| }
0x000268e8 b 0x26780 | goto label_13;
| label_73:
0x000268ec mov r0, r6 | r0 = r6;
0x000268f0 bl 0x5efc | strcmp (r0, r1);
0x000268f4 add sl, sl, 0xc | sl += 0xc;
0x000268f8 cmp r0, 0 |
| if (r0 != 0) {
0x000268fc bne 0x266f4 | goto label_17;
| }
0x00026900 b 0x26780 | goto label_13;
| label_18:
0x00026904 ldrsb r2, [r2] | r2 = *(r2);
0x00026908 add r1, r1, 0xc | r1 += 0xc;
0x0002690c cmp r2, r0 |
| if (r2 == r0) {
0x00026910 beq 0x26780 | goto label_13;
| }
| label_20:
0x00026914 ldr r2, [r1, r3] | r2 = *((r1 + r3));
0x00026918 add r7, r3, r1 | r7 = r3 + r1;
0x0002691c cmp r2, 0 |
| if (r2 != 0) {
0x00026920 bne 0x26904 | goto label_18;
| }
0x00026924 b 0x26710 | goto label_19;
| label_74:
0x00026928 ldr r3, [pc, -0xec] |
0x0002692c add r3, pc, r3 | r3 = pc + r3;
0x00026930 add r3, r3, 0x560 | r3 = 0x26da0;
0x00026934 add r3, r3, 4 | r3 += 4;
0x00026938 b 0x26914 | goto label_20;
| label_75:
0x0002693c ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00026940 ldrsb r2, [r2] | r2 = *(r2);
0x00026944 cmp r2, 0x2e |
| if (r2 != 0x2e) {
0x00026948 moveq r2, 1 | r2 = 1;
| }
| if (r2 == 0x2e) {
0x0002694c addne r3, r3, 1 | r3 += var_1h;
| }
| if (r2 != 0x2e) {
0x00026950 streq r2, [sp, 0x34] | var_34h = r2;
| }
0x00026954 b 0x26714 | goto label_21;
| label_58:
0x00026958 add r3, r6, 1 | r3 = r6 + 1;
0x0002695c str r3, [r5] | *(r5) = r3;
0x00026960 ldrb r3, [r6] | r3 = *(r6);
0x00026964 cmp r3, 0 |
| if (r3 <= 0) {
0x00026968 movle r3, 0 | r3 = 0;
| goto label_77;
| }
| if (r3 > 0) {
| label_77:
0x0002696c bgt 0x26528 | goto label_4;
| }
| label_59:
0x00026970 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00026974 add r1, r3, r2 | r1 = r3 + r2;
0x00026978 cmp r1, 0x70 |
| if (r1 > 0x70) {
0x0002697c bhi 0x26a10 | goto label_53;
| }
0x00026980 ldr r2, [pc, -0x140] | r2 = *(0x26844);
0x00026984 add r2, pc, r2 | r2 = pc + r2;
0x00026988 add r2, r2, r1 | r2 += r1;
0x0002698c add r1, r2, 0x188 | r1 = r2 + 0x188;
0x00026990 ldrsb r1, [r1] | r1 = *(r1);
0x00026994 cmp r1, r3 |
| if (r1 != r3) {
0x00026998 bne 0x26a10 | goto label_53;
| }
0x0002699c ldrb r3, [r2, 0x1f9] | r3 = *((r2 + 0x1f9));
0x000269a0 cmp r3, 0 |
0x000269a4 str r3, [sp, 0x44] | var_44h = r3;
| if (r3 == 0) {
0x000269a8 beq 0x26a30 | goto label_78;
| }
0x000269ac ldr r3, [sp, 0x50] | r3 = var_50h;
0x000269b0 add ip, sp, 0xa8 |
0x000269b4 cmp r3, 0 |
| if (r3 == 0) {
0x000269b8 subne r3, r3, 1 | r3--;
| }
| if (r3 == 0) {
0x000269bc strne r3, [sp, 0x50] | var_50h = r3;
| }
0x000269c0 ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h]");
0x000269c4 add r4, r4, 0x30 | r4 += var_30h;
0x000269c8 strd r2, r3, [sp, 0xb0] | __asm ("strd r2, r3, [var_b0h]");
0x000269cc ldr r3, [sp, 0x60] | r3 = var_60h;
0x000269d0 mov lr, r4 | lr = r4;
0x000269d4 str r3, [sp, 0xb8] | var_b8h = r3;
0x000269d8 ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000269dc stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000269e0 ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000269e4 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000269e8 ldm ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x000269ec stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x000269f0 mvn r3, 1 | r3 = ~1;
0x000269f4 str r3, [sp, 0x34] | var_34h = r3;
| do {
| label_49:
0x000269f8 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000269fc add r3, r3, 2 | r3 += 2;
0x00026a00 str r3, [sp, 0x40] | var_40h = r3;
0x00026a04 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00026a08 str r3, [sp, 0x38] | var_38h = r3;
0x00026a0c b 0x26230 | goto label_22;
| label_53:
0x00026a10 ldr r3, [pc, -0x1cc] | r3 = *(0x26848);
0x00026a14 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00026a18 add r3, pc, r3 | r3 = pc + r3;
0x00026a1c add r3, r3, r2 | r3 += r2;
0x00026a20 ldrb r3, [r3, 0x26a] | r3 = *((r3 + 0x26a));
0x00026a24 cmp r3, 0 |
0x00026a28 str r3, [sp, 0x44] | var_44h = r3;
| if (r3 == 0) {
0x00026a2c beq 0x2760c | goto label_79;
| }
| label_78:
0x00026a30 ldr r3, [pc, -0x1e8] | r3 = *(0x2684c);
0x00026a34 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00026a38 add r3, pc, r3 | r3 = pc + r3;
0x00026a3c add r3, r3, r2 | r3 += r2;
0x00026a40 ldrb r3, [r3, 0x2dc] | r3 = *((r3 + 0x2dc));
0x00026a44 add ip, sp, 0xd8 |
0x00026a48 str r3, [sp, 0x54] | var_54h = r3;
0x00026a4c rsb lr, r3, 1 | lr = 1 - r3;
0x00026a50 mov r3, 0x30 | r3 = 0x30;
0x00026a54 mla r8, r3, lr, r4 | __asm ("mla r8, r3, lr, r4");
0x00026a58 mov r6, r8 | r6 = r8;
0x00026a5c ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00026a60 ldr fp, [r8, 8] | fp = var_8h;
0x00026a64 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00026a68 ldr sl, [r8, 0x18] | sl = var_18h;
0x00026a6c ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00026a70 ldr sb, [r8, 0x1c] | sb = var_1ch;
0x00026a74 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00026a78 ldm r6, {r0, r1, r2, r3} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
| r3 = *((r6 + 12));
0x00026a7c stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00026a80 ldr r3, [r8, 0xc] | r3 = var_ch_2;
0x00026a84 add ip, sp, 0xd8 |
0x00026a88 str r3, [sp, 0x38] | var_38h = r3;
0x00026a8c ldr r7, [r8, 0x20] | r7 = var_20h;
0x00026a90 ldr r3, [r8, 0x28] | r3 = var_28h_2;
0x00026a94 ldr r6, [r8, 0x24] | r6 = var_24h;
0x00026a98 str r3, [sp, 0x3c] | var_3ch = r3;
0x00026a9c ldr r3, [sp, 0x44] | r3 = var_44h;
0x00026aa0 ldr r8, [r8, 0x2c] | r8 = var_2ch;
0x00026aa4 sub r3, r3, 4 | r3 -= 4;
0x00026aa8 cmp r3, 0x57 |
| if (r3 > 0x57) {
| /* switch table (88 cases) at 0x26ab4 */
0x00026aac addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x00026ab0 b 0x26c28 | goto label_23;
0x00026ab4 b 0x26c14 | goto label_80;
0x00026ab8 b 0x26c28 | goto label_23;
0x00026abc b 0x26c28 | goto label_23;
0x00026ac0 b 0x26cfc | goto label_81;
0x00026ac4 b 0x26d18 | goto label_82;
0x00026ac8 b 0x26d28 | goto label_83;
0x00026acc b 0x26d38 | goto label_84;
0x00026ad0 b 0x26d08 | goto label_85;
0x00026ad4 b 0x26d48 | goto label_86;
0x00026ad8 b 0x26c28 | goto label_23;
0x00026adc b 0x26c28 | goto label_23;
0x00026ae0 b 0x26c28 | goto label_23;
0x00026ae4 b 0x26c28 | goto label_23;
0x00026ae8 b 0x26c28 | goto label_23;
0x00026aec b 0x26d58 | goto label_87;
0x00026af0 b 0x26d84 | goto label_88;
0x00026af4 b 0x26d98 | goto label_89;
0x00026af8 b 0x26c28 | goto label_23;
0x00026afc b 0x26dbc | goto label_90;
0x00026b00 b 0x26de4 | goto label_91;
0x00026b04 b 0x26df8 | goto label_92;
0x00026b08 b 0x26c28 | goto label_23;
0x00026b0c b 0x26c28 | goto label_23;
0x00026b10 b 0x26e1c | goto label_93;
0x00026b14 b 0x26e68 | goto label_94;
0x00026b18 b 0x26e90 | goto label_95;
0x00026b1c b 0x26eb8 | goto label_96;
0x00026b20 b 0x26ec4 | goto label_97;
0x00026b24 b 0x26ecc | goto label_98;
0x00026b28 b 0x26f04 | goto label_99;
0x00026b2c b 0x26f0c | goto label_100;
0x00026b30 b 0x26f4c | goto label_101;
0x00026b34 b 0x26f58 | goto label_102;
0x00026b38 b 0x26f60 | goto label_103;
0x00026b3c b 0x26f74 | goto label_104;
0x00026b40 b 0x26f8c | goto label_105;
0x00026b44 b 0x26f94 | goto label_106;
0x00026b48 b 0x26f9c | goto label_107;
0x00026b4c b 0x26fb0 | goto label_108;
0x00026b50 b 0x2700c | goto label_109;
0x00026b54 b 0x27038 | goto label_110;
0x00026b58 b 0x27054 | goto label_111;
0x00026b5c b 0x2705c | goto label_112;
0x00026b60 b 0x27074 | goto label_113;
0x00026b64 b 0x27088 | goto label_114;
0x00026b68 b 0x26c28 | goto label_23;
0x00026b6c b 0x2709c | goto label_115;
0x00026b70 b 0x270d4 | goto label_116;
0x00026b74 b 0x26ed4 | goto label_46;
0x00026b78 b 0x26ed4 | goto label_46;
0x00026b7c b 0x27110 | goto label_117;
0x00026b80 b 0x27148 | goto label_118;
0x00026b84 b 0x27174 | goto label_119;
0x00026b88 b 0x271a4 | goto label_120;
0x00026b8c b 0x271ec | goto label_121;
0x00026b90 b 0x27218 | goto label_122;
0x00026b94 b 0x27260 | goto label_123;
0x00026b98 b 0x272a8 | goto label_124;
0x00026b9c b 0x272dc | goto label_125;
0x00026ba0 b 0x27308 | goto label_126;
0x00026ba4 b 0x2734c | goto label_127;
0x00026ba8 b 0x27378 | goto label_128;
0x00026bac b 0x273b4 | goto label_129;
0x00026bb0 b 0x273ec | goto label_130;
0x00026bb4 b 0x27418 | goto label_131;
0x00026bb8 b 0x2745c | goto label_132;
0x00026bbc b 0x2748c | goto label_133;
0x00026bc0 b 0x274b4 | goto label_134;
0x00026bc4 b 0x274f0 | goto label_135;
0x00026bc8 b 0x274fc | goto label_136;
0x00026bcc b 0x26c28 | goto label_23;
0x00026bd0 b 0x27530 | goto label_137;
0x00026bd4 b 0x27540 | goto label_138;
0x00026bd8 b 0x2754c | goto label_139;
0x00026bdc b 0x2755c | goto label_140;
0x00026be0 b 0x27568 | goto label_141;
0x00026be4 b 0x27574 | goto label_142;
0x00026be8 b 0x27580 | goto label_143;
0x00026bec b 0x26c28 | goto label_23;
0x00026bf0 b 0x26c28 | goto label_23;
0x00026bf4 b 0x26c28 | goto label_23;
0x00026bf8 b 0x27590 | goto label_144;
0x00026bfc b 0x26c28 | goto label_23;
0x00026c00 b 0x27590 | goto label_144;
0x00026c04 b 0x275a4 | goto label_145;
0x00026c08 b 0x275c0 | goto label_146;
0x00026c0c b 0x275e0 | goto label_147;
0x00026c10 b 0x275f0 | goto label_148;
| label_80:
0x00026c14 ldm r4, {r0, r1} | r0 = *(r4);
| r1 = *((r4 + 4));
0x00026c18 add r3, r5, 0x58 | r3 = r5 + 0x58;
0x00026c1c stm r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00026c20 mov r3, 1 | r3 = 1;
0x00026c24 str r3, [r5, 0x90] | *((r5 + 0x90)) = r3;
| label_23:
0x00026c28 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00026c2c ldr r2, [sp, 0x54] | r2 = var_54h;
0x00026c30 add r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00026c34 sub r4, r4, r3, lsl 4 | r4 -= (r3 << 4);
0x00026c38 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00026c3c add ip, sp, 0xd8 |
0x00026c40 sub r3, r3, r2, lsl 1 | r3 -= (r2 << 1);
0x00026c44 str r3, [sp, 0x40] | var_40h = r3;
0x00026c48 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00026c4c str sl, [sp, 0xf0] | var_f0h = sl;
0x00026c50 str r3, [sp, 0xe4] | var_e4h = r3;
0x00026c54 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00026c58 str sb, [sp, 0xf4] | var_f4h = sb;
0x00026c5c str r7, [sp, 0xf8] | var_f8h = r7;
0x00026c60 str r6, [sp, 0xfc] | var_fch = r6;
0x00026c64 str r3, [sp, 0x100] | var_100h = r3;
0x00026c68 str r8, [sp, 0x104] | var_104h = r8;
0x00026c6c str fp, [sp, 0xe0] | var_e0h = fp;
0x00026c70 ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00026c74 add r4, r4, 0x30 | r4 += var_30h;
0x00026c78 mov lr, r4 | lr = r4;
0x00026c7c stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00026c80 ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00026c84 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00026c88 ldm ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x00026c8c stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x00026c90 ldr r3, [pc, -0x444] | r3 = *(0x26850);
0x00026c94 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00026c98 add r3, pc, r3 | r3 = pc + r3;
0x00026c9c add r2, r3, r2 | r2 = r3 + r2;
0x00026ca0 ldrb r2, [r2, 0x338] | r2 = *((r2 + 0x338));
0x00026ca4 ldr r1, [sp, 0x40] | r1 = var_40h;
0x00026ca8 sub r2, r2, 0x1c | r2 -= 0x1c;
0x00026cac ldrsh r0, [r1] | r0 = *(r1);
0x00026cb0 add r1, r3, r2 | r1 = r3 + r2;
0x00026cb4 add r1, r1, 0x394 | r1 += 0x394;
0x00026cb8 ldrsb r1, [r1] | r1 = *(r1);
0x00026cbc add r1, r1, r0 | r1 += r0;
0x00026cc0 cmp r1, 0x70 |
| if (r1 <= 0x70) {
0x00026cc4 bhi 0x26ce0 |
0x00026cc8 add r3, r3, r1 | r3 += r1;
0x00026ccc add r1, r3, 0x188 | r1 = r3 + 0x188;
0x00026cd0 ldrsb r1, [r1] | r1 = *(r1);
0x00026cd4 cmp r1, r0 |
| if (r1 != r0) {
0x00026cd8 ldrbeq r3, [r3, 0x1f9] | r3 = *((r3 + 0x1f9));
| }
| if (r1 == r0) {
0x00026cdc beq 0x26cf4 | goto label_149;
| }
| }
0x00026ce0 ldr r3, [pc, -0x490] | r3 = *(0x26854);
0x00026ce4 add r3, pc, r3 | r3 = pc + r3;
0x00026ce8 add r3, r3, r2 | r3 += r2;
0x00026cec add r3, r3, 0x3ac | r3 += 0x3ac;
0x00026cf0 ldrsb r3, [r3, 2] | r3 = *((r3 + 2));
| label_149:
0x00026cf4 str r3, [sp, 0x44] | var_44h = r3;
0x00026cf8 b 0x269f8 |
| } while (1);
| label_81:
0x00026cfc ldr r3, [r5, 0xa8] | r3 = *((r5 + 0xa8));
0x00026d00 add r3, r3, 1 | r3++;
0x00026d04 str r3, [r5, 0xa8] | *((r5 + 0xa8)) = r3;
| label_85:
0x00026d08 ldr r3, [r5, 0x98] | r3 = *((r5 + 0x98));
0x00026d0c add r3, r3, 1 | r3++;
0x00026d10 str r3, [r5, 0x98] | *((r5 + 0x98)) = r3;
0x00026d14 b 0x26c28 | goto label_23;
| label_82:
0x00026d18 ldr r3, [r5, 0xa8] | r3 = *((r5 + 0xa8));
0x00026d1c add r3, r3, 1 | r3++;
0x00026d20 str r3, [r5, 0xa8] | *((r5 + 0xa8)) = r3;
0x00026d24 b 0x26c28 | goto label_23;
| label_83:
0x00026d28 ldr r3, [r5, 0xa0] | r3 = *((r5 + 0xa0));
0x00026d2c add r3, r3, 1 | r3++;
0x00026d30 str r3, [r5, 0xa0] | *((r5 + 0xa0)) = r3;
0x00026d34 b 0x26c28 | goto label_23;
| label_84:
0x00026d38 ldr r3, [r5, 0xac] | r3 = *((r5 + 0xac));
0x00026d3c add r3, r3, 1 | r3++;
0x00026d40 str r3, [r5, 0xac] | *((r5 + 0xac)) = r3;
0x00026d44 b 0x26c28 | goto label_23;
| label_86:
0x00026d48 ldr r3, [r5, 0x9c] | r3 = *((r5 + 0x9c));
0x00026d4c add r3, r3, 1 | r3++;
0x00026d50 str r3, [r5, 0x9c] | *((r5 + 0x9c)) = r3;
0x00026d54 b 0x26c28 | goto label_23;
| label_87:
0x00026d58 ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x00026d5c strd r2, r3, [r5, 0x48] | __asm ("strd r2, r3, [r5, 0x48]");
0x00026d60 mov r2, 0 | r2 = 0;
0x00026d64 mov r3, 0 | r3 = 0;
0x00026d68 strd r2, r3, [r5, 0x50] | __asm ("strd r2, r3, [r5, 0x50]");
| do {
0x00026d6c mov r3, 0 | r3 = 0;
0x00026d70 str r3, [r5, 0x58] | *((r5 + 0x58)) = r3;
0x00026d74 str r3, [r5, 0x5c] | *((r5 + 0x5c)) = r3;
| label_24:
0x00026d78 ldr r3, [r4] | r3 = *(r4);
| label_25:
0x00026d7c str r3, [r5, 0x1c] | *((r5 + 0x1c)) = r3;
0x00026d80 b 0x26c28 | goto label_23;
| label_88:
0x00026d84 ldrd r0, r1, [r4, -0x28] | __asm ("ldrd r0, r1, [var_e4h]");
0x00026d88 ldrd r2, r3, [r4, -0x88] | __asm ("ldrd r2, r3, [var_80h]");
0x00026d8c strd r0, r1, [r5, 0x50] | __asm ("strd r0, r1, [r5, 0x50]");
0x00026d90 strd r2, r3, [r5, 0x48] | __asm ("strd r2, r3, [r5, 0x48]");
0x00026d94 b 0x26d6c |
| } while (1);
| label_89:
0x00026d98 ldrd r0, r1, [r4, -0x88] | __asm ("ldrd r0, r1, [var_80h]");
0x00026d9c ldr lr, [r4, -0x30] | lr = var_d8h;
0x00026da0 ldr ip, [r4, -0x2c] | ip = var_dch;
0x00026da4 ldrd r2, r3, [r4, -0xe8] | __asm ("ldrd r2, r3, [var_e8h_2]");
0x00026da8 strd r0, r1, [r5, 0x50] | __asm ("strd r0, r1, [r5, 0x50]");
0x00026dac strd r2, r3, [r5, 0x48] | __asm ("strd r2, r3, [r5, 0x48]");
0x00026db0 str lr, [r5, 0x58] |
0x00026db4 str ip, [r5, 0x5c] | *((r5 + 0x5c)) = ip;
0x00026db8 b 0x26d78 | goto label_24;
| label_90:
0x00026dbc ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x00026dc0 strd r2, r3, [r5, 0x48] | __asm ("strd r2, r3, [r5, 0x48]");
0x00026dc4 mov r2, 0 | r2 = 0;
0x00026dc8 mov r3, 0 | r3 = 0;
0x00026dcc strd r2, r3, [r5, 0x50] | __asm ("strd r2, r3, [r5, 0x50]");
| do {
0x00026dd0 mov r3, 0 | r3 = 0;
0x00026dd4 str r3, [r5, 0x58] | *((r5 + 0x58)) = r3;
0x00026dd8 str r3, [r5, 0x5c] | *((r5 + 0x5c)) = r3;
| label_26:
0x00026ddc mov r3, 2 | r3 = 2;
0x00026de0 b 0x26d7c | goto label_25;
| label_91:
0x00026de4 ldrd r0, r1, [r4, -0x28] | __asm ("ldrd r0, r1, [var_e4h]");
0x00026de8 ldrd r2, r3, [r4, -0x88] | __asm ("ldrd r2, r3, [var_80h]");
0x00026dec strd r0, r1, [r5, 0x50] | __asm ("strd r0, r1, [r5, 0x50]");
0x00026df0 strd r2, r3, [r5, 0x48] | __asm ("strd r2, r3, [r5, 0x48]");
0x00026df4 b 0x26dd0 |
| } while (1);
| label_92:
0x00026df8 ldrd r0, r1, [r4, -0x88] | __asm ("ldrd r0, r1, [var_80h]");
0x00026dfc ldr lr, [r4, -0x30] | lr = var_d8h;
0x00026e00 ldr ip, [r4, -0x2c] | ip = var_dch;
0x00026e04 ldrd r2, r3, [r4, -0xe8] | __asm ("ldrd r2, r3, [var_e8h_2]");
0x00026e08 strd r0, r1, [r5, 0x50] | __asm ("strd r0, r1, [r5, 0x50]");
0x00026e0c strd r2, r3, [r5, 0x48] | __asm ("strd r2, r3, [r5, 0x48]");
0x00026e10 str lr, [r5, 0x58] |
0x00026e14 str ip, [r5, 0x5c] | *((r5 + 0x5c)) = ip;
0x00026e18 b 0x26ddc | goto label_26;
| label_93:
0x00026e1c ldr r3, [r5, 0xac] | r3 = *((r5 + 0xac));
0x00026e20 ldr r1, [r4, 0x10] | r1 = var_10h_2;
0x00026e24 add r3, r3, 1 | r3++;
0x00026e28 str r3, [r5, 0xac] | *((r5 + 0xac)) = r3;
0x00026e2c ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x00026e30 str r1, [sp, 0x10] | var_10h = r1;
0x00026e34 ldrd r0, r1, [r4, 8] | __asm ("ldrd r0, r1, [var_8h_2]");
0x00026e38 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h_4]");
0x00026e3c ldr r1, [r4, -0x20] | r1 = var_e8h;
0x00026e40 add r0, r5, 0x18 | r0 = r5 + 0x18;
0x00026e44 str r1, [sp] | *(sp) = r1;
0x00026e48 ldr r1, [r4, -0x30] | r1 = var_d8h;
0x00026e4c bl 0x26084 | r0 = fcn_00026084 (r0, r1, r2, r3, r4);
0x00026e50 cmp r0, 0 |
| if (r0 != 0) {
0x00026e54 bne 0x26c28 | goto label_23;
| }
| label_27:
0x00026e58 mov r0, 1 | r0 = 1;
| label_50:
0x00026e5c add sp, sp, 0x4c0 |
0x00026e60 add sp, sp, 0xc |
0x00026e64 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_94:
0x00026e68 ldrd r2, r3, [r4] | __asm ("ldrd r2, r3, [r4]");
0x00026e6c cmp r2, 1 |
0x00026e70 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x00026e74 ldr r3, [r5, 0xa4] | r3 = *((r5 + 0xa4));
0x00026e78 str r2, [r5, 0x14] | *((r5 + 0x14)) = r2;
| if (r2 < 1) {
0x00026e7c movge r2, 1 | r2 = 1;
| }
| if (r2 >= 1) {
0x00026e80 movlt r2, 0 | r2 = 0;
| }
0x00026e84 add r3, r3, r2 | r3 += r2;
| do {
0x00026e88 str r3, [r5, 0xa4] | *((r5 + 0xa4)) = r3;
0x00026e8c b 0x26c28 | goto label_23;
| label_95:
0x00026e90 mov r3, 1 | r3 = 1;
0x00026e94 str r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
0x00026e98 ldrd r2, r3, [r4, -0x30] | __asm ("ldrd r2, r3, [var_d8h]");
0x00026e9c ldr r1, [r5, 0xa4] | r1 = *((r5 + 0xa4));
0x00026ea0 cmp r2, 1 |
0x00026ea4 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x00026ea8 movlt r3, 1 | r3 = 1;
| }
| if (r2 < 1) {
0x00026eac movge r3, 2 | r3 = 2;
| }
0x00026eb0 add r3, r1, r3 | r3 = r1 + r3;
0x00026eb4 b 0x26e88 |
| } while (1);
| label_96:
0x00026eb8 ldr r3, [r4] | r3 = *(r4);
| do {
| label_28:
0x00026ebc str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x00026ec0 b 0x26c28 | goto label_23;
| label_97:
0x00026ec4 mov r3, 0x1a4 | r3 = 0x1a4;
0x00026ec8 b 0x26ebc |
| } while (1);
| label_98:
0x00026ecc ldr r3, [r4, -0x30] | r3 = var_d8h;
| do {
0x00026ed0 str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
| label_46:
0x00026ed4 mov r3, 1 | r3 = 1;
0x00026ed8 add lr, r4, 8 | lr += var_8h_2;
0x00026edc str r3, [sp, 0x28] | var_28h = r3;
0x00026ee0 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00026ee4 mov ip, sp |
0x00026ee8 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00026eec ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00026ef0 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00026ef4 ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x00026ef8 stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x00026efc ldm r4, {r2, r3} | r2 = *(r4);
| r3 = *((r4 + 4));
0x00026f00 b 0x27104 | goto label_150;
| label_99:
0x00026f04 mov r3, 0x1a4 | r3 = 0x1a4;
0x00026f08 b 0x26ed0 |
| } while (1);
| label_100:
0x00026f0c ldr r1, [r4, 0x10] | r1 = var_10h_2;
0x00026f10 ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x00026f14 str r1, [sp, 0x10] | var_10h = r1;
0x00026f18 ldrd r0, r1, [r4, 8] | __asm ("ldrd r0, r1, [var_8h_2]");
0x00026f1c strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h_4]");
0x00026f20 ldr r1, [r4, -0x20] | r1 = var_e8h;
0x00026f24 add r0, r5, 0x18 | r0 = r5 + 0x18;
0x00026f28 str r1, [sp] | *(sp) = r1;
0x00026f2c ldr r1, [r4, -0x30] | r1 = var_d8h;
0x00026f30 bl 0x26084 | r0 = fcn_00026084 (r0, r1, r2, r3, r4);
0x00026f34 cmp r0, 0 |
| if (r0 == 0) {
0x00026f38 beq 0x26e58 | goto label_27;
| }
0x00026f3c ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00026f40 ldr r2, [r4, -0x60] | r2 = var_a8h;
0x00026f44 add r3, r3, r2 | r3 += r2;
0x00026f48 b 0x26ebc | goto label_28;
| label_101:
0x00026f4c ldr r3, [r4] | r3 = *(r4);
| do {
0x00026f50 add r3, r3, 0x3c | r3 += 0x3c;
0x00026f54 b 0x26ebc | goto label_28;
| label_102:
0x00026f58 ldr r3, [r4, -0x30] | r3 = var_d8h;
0x00026f5c b 0x26f50 |
| } while (1);
| label_103:
0x00026f60 mov r2, 0 | r2 = 0;
0x00026f64 mov r3, 0 | r3 = 0;
| do {
| label_29:
0x00026f68 strd r2, r3, [r5, 8] | __asm ("strd r2, r3, [r5, 8]");
0x00026f6c ldr r3, [r4] | r3 = *(r4);
0x00026f70 b 0x26f84 | goto label_151;
| label_104:
0x00026f74 mov r3, 0 | r3 = 0;
0x00026f78 mov r2, 0 | r2 = 0;
0x00026f7c strd r2, r3, [r5, 8] | __asm ("strd r2, r3, [r5, 8]");
0x00026f80 ldr r3, [r4, -0x30] | r3 = var_d8h;
| label_151:
0x00026f84 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x00026f88 b 0x26c28 | goto label_23;
| label_105:
0x00026f8c ldrd r2, r3, [r4, -0x30] | __asm ("ldrd r2, r3, [var_d8h]");
0x00026f90 b 0x26f68 |
| } while (1);
| label_106:
0x00026f94 ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x00026f98 b 0x26f68 | goto label_29;
| label_107:
0x00026f9c ldrd r2, r3, [r4, -0x58] | __asm ("ldrd r2, r3, [var_b0h]");
| do {
| label_30:
0x00026fa0 strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
0x00026fa4 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [var_8h_2]");
| label_32:
0x00026fa8 strd r2, r3, [r5, 0x40] | __asm ("strd r2, r3, [r5, 0x40]");
0x00026fac b 0x26c28 | goto label_23;
| label_108:
0x00026fb0 ldrd r2, r3, [r4, -0x58] | __asm ("ldrd r2, r3, [var_b0h]");
0x00026fb4 add ip, r5, 0x20 |
0x00026fb8 strd r2, r3, [sp, 0x58] | __asm ("strd r2, r3, [var_58h]");
0x00026fbc ldr r3, [r4, -0xb0] | r3 = var_58h;
0x00026fc0 cmp r3, 3 |
| if (r3 < 3) {
0x00026fc4 bls 0x26fe4 | goto label_152;
| }
0x00026fc8 sub lr, r4, 0xc0 | lr -= var_48h;
0x00026fcc ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00026fd0 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00026fd4 ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x00026fd8 ldrd r2, r3, [sp, 0x58] | __asm ("ldrd r2, r3, [var_58h]");
0x00026fdc stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x00026fe0 b 0x26fa0 |
| } while (1);
| label_152:
0x00026fe4 ldrd r2, r3, [r4, -0xb8] | __asm ("ldrd r2, r3, [var_50h]");
0x00026fe8 strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
0x00026fec ldrd r2, r3, [sp, 0x58] | __asm ("ldrd r2, r3, [var_58h]");
0x00026ff0 strd r2, r3, [r5, 0x40] | __asm ("strd r2, r3, [r5, 0x40]");
| label_31:
0x00026ff4 mov lr, r4 | lr = r4;
0x00026ff8 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00026ffc stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027000 ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x00027004 stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x00027008 b 0x26c28 | goto label_23;
| label_109:
0x0002700c ldrd r2, r3, [r4, -0x58] | __asm ("ldrd r2, r3, [var_b0h]");
0x00027010 strd r2, r3, [r5, 0x40] | __asm ("strd r2, r3, [r5, 0x40]");
0x00027014 ldrd r2, r3, [r4, -0x30] | __asm ("ldrd r2, r3, [var_d8h]");
0x00027018 strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
| do {
0x0002701c ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [var_8h_2]");
0x00027020 rsbs r2, r2, 0 | r2 -= ;
0x00027024 rsc r3, r3, 0 | __asm ("rsc r3, r3, 0");
0x00027028 strd r2, r3, [r5, 0x28] | __asm ("strd r2, r3, [r5, 0x28]");
0x0002702c ldr r3, [r4, 0x10] | r3 = var_10h_2;
0x00027030 str r3, [r5, 0x30] | *((r5 + 0x30)) = r3;
0x00027034 b 0x26c28 | goto label_23;
| label_110:
0x00027038 ldrd r2, r3, [r4, -0x60] | __asm ("ldrd r2, r3, [var_a8h]");
0x0002703c strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
0x00027040 ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x00027044 rsbs r2, r2, 0 | r2 -= ;
0x00027048 rsc r3, r3, 0 | __asm ("rsc r3, r3, 0");
0x0002704c strd r2, r3, [r5, 0x40] | __asm ("strd r2, r3, [r5, 0x40]");
0x00027050 b 0x2701c |
| } while (1);
| label_111:
0x00027054 ldrd r2, r3, [r4, -0x30] | __asm ("ldrd r2, r3, [var_d8h]");
0x00027058 b 0x26fa0 | goto label_30;
| label_112:
0x0002705c ldrd r2, r3, [r4, -0x90] | __asm ("ldrd r2, r3, [var_78h]");
0x00027060 strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
0x00027064 ldrd r2, r3, [r4, -0x58] | __asm ("ldrd r2, r3, [var_b0h]");
0x00027068 strd r2, r3, [r5, 0x40] | __asm ("strd r2, r3, [r5, 0x40]");
| do {
0x0002706c add ip, r5, 0x20 |
0x00027070 b 0x26ff4 | goto label_31;
| label_113:
0x00027074 ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x00027078 strd r2, r3, [r5, 0x40] | __asm ("strd r2, r3, [r5, 0x40]");
0x0002707c ldrd r2, r3, [r4] | __asm ("ldrd r2, r3, [r4]");
0x00027080 strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
0x00027084 b 0x26c28 | goto label_23;
| label_114:
0x00027088 ldrd r2, r3, [r4, -0x58] | __asm ("ldrd r2, r3, [var_b0h]");
0x0002708c strd r2, r3, [r5, 0x40] | __asm ("strd r2, r3, [r5, 0x40]");
0x00027090 ldrd r2, r3, [r4, -0x30] | __asm ("ldrd r2, r3, [var_d8h]");
0x00027094 strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
0x00027098 b 0x2706c |
| } while (1);
| label_115:
0x0002709c sub lr, r4, 0x60 | lr -= var_a8h;
0x000270a0 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000270a4 add ip, r5, 0x20 |
0x000270a8 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000270ac ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x000270b0 ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x000270b4 rsbs r2, r2, 0 | r2 -= ;
0x000270b8 rsc r3, r3, 0 | __asm ("rsc r3, r3, 0");
0x000270bc stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x000270c0 strd r2, r3, [r5, 0x38] | __asm ("strd r2, r3, [r5, 0x38]");
0x000270c4 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [var_8h_2]");
0x000270c8 rsbs r2, r2, 0 | r2 -= ;
0x000270cc rsc r3, r3, 0 | __asm ("rsc r3, r3, 0");
0x000270d0 b 0x26fa8 | goto label_32;
| label_116:
0x000270d4 mov ip, r4 |
0x000270d8 ldr r3, [ip], -0x28 | r3 = *(ip);
| ip += -0x28;
0x000270dc mov lr, sp | lr = sp;
0x000270e0 str r3, [sp, 0x28] | var_28h = r3;
0x000270e4 ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000270e8 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000270ec ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000270f0 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000270f4 ldm ip, {r0, r1} | r0 = *(ip);
| r1 = *((ip + 4));
0x000270f8 sub r3, r4, 0x30 | r3 -= var_d8h;
0x000270fc stm lr, {r0, r1} | *(lr) = r0;
| *((lr + 4)) = r1;
0x00027100 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
| label_150:
0x00027104 mov r0, r5 | r0 = r5;
0x00027108 bl 0x25e90 | fcn_00025e90 (r0, r1, r2, r3, r4, r5, r6);
0x0002710c b 0x26c28 | goto label_23;
| label_117:
0x00027110 ldr r6, [pc, -0x8bc] | r6 = *(0x26858);
0x00027114 mov lr, ip | lr = ip;
0x00027118 add r6, pc, r6 | r6 = pc + r6;
0x0002711c ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00027120 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00027124 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00027128 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x0002712c ldm r6, {r0, r1, r2, r3} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
| r3 = *((r6 + 12));
0x00027130 stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x00027134 ldrd r2, r3, [r4, -0x30] | __asm ("ldrd r2, r3, [var_d8h]");
| do {
| label_33:
0x00027138 strd r2, r3, [ip] | __asm ("strd r2, r3, [ip]");
| label_34:
0x0002713c mov r8, 0 | r8 = 0;
0x00027140 str r8, [sp, 0x3c] | var_3ch = r8;
0x00027144 b 0x27528 | goto label_153;
| label_118:
0x00027148 ldr r6, [pc, -0x8f0] | r6 = *(0x2685c);
0x0002714c mov lr, ip | lr = ip;
0x00027150 add r6, pc, r6 | r6 = pc + r6;
| label_39:
0x00027154 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00027158 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x0002715c ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00027160 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00027164 ldm r6, {r0, r1, r2, r3} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
| r3 = *((r6 + 12));
0x00027168 stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x0002716c ldrd r2, r3, [r4, -0x28] | __asm ("ldrd r2, r3, [var_e4h]");
0x00027170 b 0x27138 |
| } while (1);
| label_119:
0x00027174 ldr r6, [pc, -0x918] | r6 = *(0x26860);
0x00027178 mov lr, ip | lr = ip;
0x0002717c add r6, pc, r6 | r6 = pc + r6;
0x00027180 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00027184 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00027188 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x0002718c stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00027190 ldm r6, {r0, r1, r2, r3} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
| r3 = *((r6 + 12));
0x00027194 stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x00027198 mov r2, 1 | r2 = 1;
0x0002719c mov r3, 0 | r3 = 0;
0x000271a0 b 0x27138 | goto label_33;
| label_120:
0x000271a4 ldr lr, [pc, -0x944] | lr = *(0x26864);
0x000271a8 ldr fp, [r4, -0x30] | fp = var_d8h;
0x000271ac add lr, pc, lr | lr = pc + lr;
0x000271b0 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000271b4 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000271b8 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000271bc stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000271c0 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x000271c4 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x000271c8 ldr r3, [r4, -0x2c] | r3 = var_dch;
| do {
0x000271cc mov r8, 0 | r8 = 0;
0x000271d0 str r3, [sp, 0x38] | var_38h = r3;
0x000271d4 str r8, [sp, 0x3c] | var_3ch = r8;
0x000271d8 mov r7, r8 | r7 = r8;
0x000271dc mov r6, r8 | r6 = r8;
0x000271e0 mov sl, r8 | sl = r8;
0x000271e4 mov sb, r8 | sb = r8;
0x000271e8 b 0x26c28 | goto label_23;
| label_121:
0x000271ec ldr lr, [pc, -0x988] | lr = *(0x26868);
0x000271f0 add lr, pc, lr | lr = pc + lr;
| label_40:
0x000271f4 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000271f8 ldr fp, [r4, -0x28] | fp = var_e0h;
0x000271fc stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027200 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027204 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027208 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x0002720c stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00027210 ldr r3, [r4, -0x24] | r3 = var_e4h;
0x00027214 b 0x271cc |
| } while (1);
| label_122:
0x00027218 ldr lr, [pc, -0x9b0] | lr = *(0x2686c);
0x0002721c mov r8, 0 | r8 = 0;
0x00027220 add lr, pc, lr | lr = pc + lr;
0x00027224 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027228 mov r7, r8 | r7 = r8;
0x0002722c stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027230 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027234 mov r6, r8 | r6 = r8;
0x00027238 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002723c ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x00027240 mov sl, r8 | sl = r8;
0x00027244 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00027248 mov sb, r8 | sb = r8;
0x0002724c mov fp, 1 |
0x00027250 mov r3, r8 | r3 = r8;
0x00027254 str r8, [sp, 0x3c] | var_3ch = r8;
| label_47:
0x00027258 str r3, [sp, 0x38] | var_38h = r3;
0x0002725c b 0x26c28 | goto label_23;
| label_123:
0x00027260 ldr r6, [pc, -0x9f4] | r6 = *(0x26870);
0x00027264 mov lr, ip | lr = ip;
0x00027268 add r6, pc, r6 | r6 = pc + r6;
0x0002726c ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00027270 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x00027274 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x00027278 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x0002727c ldm r6, {r0, r1, r2, r3} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
| r3 = *((r6 + 12));
0x00027280 stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x00027284 ldr r2, [r4, -0x2c] | r2 = var_dch;
0x00027288 ldm r4, {r0, r3} | r0 = *(r4);
| r3 = *((r4 + 4));
0x0002728c ldr lr, [r4, -0x30] | lr = var_d8h;
| do {
0x00027290 mul r6, lr, r3 | r6 = lr * r3;
0x00027294 mla r1, r0, r2, r6 | __asm ("mla r1, r0, r2, r6");
0x00027298 umull r2, r3, lr, r0 | r2:r3 = lr * r0;
0x0002729c add r3, r1, r3 | r3 = r1 + r3;
| label_35:
0x000272a0 strd r2, r3, [ip, 0x10] | __asm ("strd r2, r3, [var_e8h]");
0x000272a4 b 0x2713c | goto label_34;
| label_124:
0x000272a8 ldr r6, [pc, -0xa38] | r6 = *(0x26874);
0x000272ac mov lr, ip | lr = ip;
0x000272b0 add r6, pc, r6 | r6 = pc + r6;
| label_41:
0x000272b4 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x000272b8 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000272bc ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x000272c0 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000272c4 ldm r6, {r0, r1, r2, r3} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
| r3 = *((r6 + 12));
0x000272c8 stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x000272cc ldr r2, [r4, -0x24] | r2 = var_e4h;
0x000272d0 ldm r4, {r0, r3} | r0 = *(r4);
| r3 = *((r4 + 4));
0x000272d4 ldr lr, [r4, -0x28] | lr = var_e0h;
0x000272d8 b 0x27290 |
| } while (1);
| label_125:
0x000272dc ldr r6, [pc, -0xa68] | r6 = *(0x26878);
0x000272e0 mov lr, ip | lr = ip;
0x000272e4 add r6, pc, r6 | r6 = pc + r6;
| label_45:
0x000272e8 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x000272ec stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000272f0 ldm r6!, {r0, r1, r2, r3} | r0 = *(r6!);
| r1 = *((r6! + 4));
| r2 = *((r6! + 8));
| r3 = *((r6! + 12));
0x000272f4 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000272f8 ldm r6, {r0, r1, r2, r3} | r0 = *(r6);
| r1 = *((r6 + 4));
| r2 = *((r6 + 8));
| r3 = *((r6 + 12));
0x000272fc stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x00027300 ldrd r2, r3, [r4] | __asm ("ldrd r2, r3, [r4]");
0x00027304 b 0x272a0 | goto label_35;
| label_126:
0x00027308 ldr lr, [pc, -0xa90] | lr = *(0x2687c);
0x0002730c ldr sl, [r4, -0x30] | sl = var_d8h;
0x00027310 add lr, pc, lr | lr = pc + lr;
0x00027314 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027318 ldr sb, [r4, -0x2c] | sb = var_dch;
0x0002731c stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027320 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027324 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027328 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x0002732c stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
| do {
0x00027330 mov r8, 0 | r8 = 0;
0x00027334 mov r7, r8 | r7 = r8;
0x00027338 mov r6, r8 | r6 = r8;
0x0002733c str r8, [sp, 0x3c] | var_3ch = r8;
| label_36:
0x00027340 mov fp, r7 |
0x00027344 str r6, [sp, 0x38] | var_38h = r6;
0x00027348 b 0x26c28 | goto label_23;
| label_127:
0x0002734c ldr lr, [pc, -0xad0] | lr = *(0x26880);
0x00027350 add lr, pc, lr | lr = pc + lr;
| label_42:
0x00027354 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027358 ldr sl, [r4, -0x28] | sl = var_e0h;
0x0002735c stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027360 ldr sb, [r4, -0x24] | sb = var_e4h;
0x00027364 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027368 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002736c ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x00027370 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00027374 b 0x27330 |
| } while (1);
| label_128:
0x00027378 ldr lr, [pc, -0xaf8] | lr = *(0x26884);
0x0002737c mov r8, 0 | r8 = 0;
0x00027380 add lr, pc, lr | lr = pc + lr;
0x00027384 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027388 mov r7, r8 | r7 = r8;
0x0002738c stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027390 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027394 mov r6, r8 | r6 = r8;
0x00027398 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002739c ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x000273a0 mov sl, 1 | sl = 1;
0x000273a4 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x000273a8 str r8, [sp, 0x3c] | var_3ch = r8;
| label_37:
0x000273ac mov sb, r6 | sb = r6;
0x000273b0 b 0x27340 | goto label_36;
| label_129:
0x000273b4 ldr lr, [pc, -0xb30] | lr = *(0x26888);
0x000273b8 ldr r7, [r4, -0x30] | r7 = var_d8h;
0x000273bc add lr, pc, lr | lr = pc + lr;
0x000273c0 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000273c4 ldr r6, [r4, -0x2c] | r6 = var_dch;
0x000273c8 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000273cc ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000273d0 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000273d4 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x000273d8 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
| do {
0x000273dc mov r8, 0 | r8 = 0;
0x000273e0 str r8, [sp, 0x3c] | var_3ch = r8;
0x000273e4 mov sl, r8 | sl = r8;
0x000273e8 b 0x2744c | goto label_154;
| label_130:
0x000273ec ldr lr, [pc, -0xb64] | lr = *(0x2688c);
0x000273f0 add lr, pc, lr | lr = pc + lr;
| label_43:
0x000273f4 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000273f8 ldr r7, [r4, -0x28] | r7 = var_e0h;
0x000273fc stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027400 ldr r6, [r4, -0x24] | r6 = var_e4h;
0x00027404 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027408 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002740c ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x00027410 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00027414 b 0x273dc |
| } while (1);
| label_131:
0x00027418 ldr lr, [pc, -0xb8c] | lr = *(0x26890);
0x0002741c mov r8, 0 | r8 = 0;
0x00027420 add lr, pc, lr | lr = pc + lr;
0x00027424 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027428 mov r7, 1 | r7 = 1;
0x0002742c stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027430 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027434 mov r6, r8 | r6 = r8;
0x00027438 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002743c ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x00027440 mov sl, r8 | sl = r8;
0x00027444 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00027448 str r8, [sp, 0x3c] | var_3ch = r8;
| label_154:
0x0002744c mov sb, sl | sb = sl;
0x00027450 mov fp, sl |
0x00027454 str sl, [sp, 0x38] | var_38h = sl;
0x00027458 b 0x26c28 | goto label_23;
| label_132:
0x0002745c ldr lr, [pc, -0xbcc] | lr = *(0x26894);
0x00027460 add lr, pc, lr | lr = pc + lr;
0x00027464 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027468 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002746c ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027470 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027474 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x00027478 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0002747c ldr r3, [r4, -0x30] | r3 = var_d8h;
| do {
0x00027480 str r3, [sp, 0x3c] | var_3ch = r3;
0x00027484 mov r8, 0 | r8 = 0;
0x00027488 b 0x27528 | goto label_153;
| label_133:
0x0002748c ldr lr, [pc, -0xbf8] | lr = *(0x26898);
0x00027490 add lr, pc, lr | lr = pc + lr;
| label_44:
0x00027494 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027498 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002749c ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000274a0 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000274a4 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x000274a8 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x000274ac ldr r3, [r4, -0x28] | r3 = var_e0h;
0x000274b0 b 0x27480 |
| } while (1);
| label_134:
0x000274b4 ldr lr, [pc, -0xc1c] | lr = *(0x2689c);
0x000274b8 add lr, pc, lr | lr = pc + lr;
| do {
0x000274bc ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000274c0 ldr r8, [r4, -0x2c] | r8 = var_dch;
0x000274c4 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000274c8 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000274cc mov r7, 0 | r7 = 0;
0x000274d0 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000274d4 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x000274d8 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x000274dc ldr r3, [r4, -0x30] | r3 = var_d8h;
0x000274e0 str r3, [sp, 0x3c] | var_3ch = r3;
| label_38:
0x000274e4 mov r6, r7 | r6 = r7;
0x000274e8 mov sl, r7 | sl = r7;
0x000274ec b 0x273ac | goto label_37;
| label_135:
0x000274f0 ldr lr, [pc, -0xc54] | lr = *(0x268a0);
0x000274f4 add lr, pc, lr | lr = pc + lr;
0x000274f8 b 0x274bc |
| } while (1);
| label_136:
0x000274fc ldr lr, [pc, -0xc5c] | lr = *(0x268a4);
0x00027500 mov r8, 0 | r8 = 0;
0x00027504 add lr, pc, lr | lr = pc + lr;
0x00027508 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0002750c stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027510 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x00027514 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x00027518 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x0002751c stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x00027520 mov r3, 1 | r3 = 1;
0x00027524 str r3, [sp, 0x3c] | var_3ch = r3;
| label_153:
0x00027528 mov r7, r8 | r7 = r8;
0x0002752c b 0x274e4 | goto label_38;
| label_137:
0x00027530 ldr r6, [pc, -0xc8c] | r6 = *(0x268a8);
0x00027534 mov lr, ip | lr = ip;
0x00027538 add r6, pc, r6 | r6 = pc + r6;
0x0002753c b 0x27154 | goto label_39;
| label_138:
0x00027540 ldr lr, [pc, -0xc98] | lr = *(0x268ac);
0x00027544 add lr, pc, lr | lr = pc + lr;
0x00027548 b 0x271f4 | goto label_40;
| label_139:
0x0002754c ldr r6, [pc, -0xca0] | r6 = *(0x268b0);
0x00027550 mov lr, ip | lr = ip;
0x00027554 add r6, pc, r6 | r6 = pc + r6;
0x00027558 b 0x272b4 | goto label_41;
| label_140:
0x0002755c ldr lr, [pc, -0xcac] | lr = *(0x268b4);
0x00027560 add lr, pc, lr | lr = pc + lr;
0x00027564 b 0x27354 | goto label_42;
| label_141:
0x00027568 ldr lr, [pc, -0xcb4] | lr = *(0x268b8);
0x0002756c add lr, pc, lr | lr = pc + lr;
0x00027570 b 0x273f4 | goto label_43;
| label_142:
0x00027574 ldr lr, [pc, -0xcbc] | lr = *(0x268bc);
0x00027578 add lr, pc, lr | lr = pc + lr;
0x0002757c b 0x27494 | goto label_44;
| label_143:
0x00027580 ldr r6, [pc, -0xcc4] | r6 = *(0x268c0);
0x00027584 mov lr, ip | lr = ip;
0x00027588 add r6, pc, r6 | r6 = pc + r6;
0x0002758c b 0x272e8 | goto label_45;
| label_144:
0x00027590 ldr r3, [r4, 8] | r3 = var_8h_2;
0x00027594 str r3, [sp, 0xd8] | var_d8h = r3;
0x00027598 mov r3, 0 | r3 = 0;
0x0002759c str r3, [sp, 0xdc] | var_dch = r3;
0x000275a0 b 0x26c28 | goto label_23;
| label_145:
0x000275a4 add r3, r4, 8 | r3 += var_8h_2;
0x000275a8 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x000275ac stm sp, {r0, r1, r2, r3} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r2;
| *((sp + 12)) = r3;
0x000275b0 mov r0, r5 | r0 = r5;
0x000275b4 ldm r4, {r2, r3} | r2 = *(r4);
| r3 = *((r4 + 4));
0x000275b8 bl 0x25d40 | fcn_00025d40 (r0, r1, r2);
0x000275bc b 0x26c28 | goto label_23;
| label_146:
0x000275c0 sub r3, r4, 0x28 | r3 -= var_e0h;
0x000275c4 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x000275c8 stm sp, {r0, r1, r2, r3} | *(sp) = r0;
| *((sp + 4)) = r1;
| *((sp + 8)) = r2;
| *((sp + 12)) = r3;
0x000275cc sub r3, r4, 0x30 | r3 -= var_d8h;
0x000275d0 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x000275d4 mov r0, r5 | r0 = r5;
0x000275d8 bl 0x25d40 | fcn_00025d40 (r0, r1, r2);
0x000275dc b 0x26ed4 | goto label_46;
| label_147:
0x000275e0 mov r3, 0 | r3 = 0;
0x000275e4 str r3, [sp, 0xe8] | var_e8h = r3;
0x000275e8 mov fp, r3 |
0x000275ec b 0x27258 | goto label_47;
| label_148:
0x000275f0 mov lr, r4 | lr = r4;
0x000275f4 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x000275f8 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x000275fc ldm lr, {r0, r1} | r0 = *(lr);
| r1 = *((lr + 4));
0x00027600 mov fp, r2 |
0x00027604 stm ip, {r0, r1} | *(ip) = r0;
| *((ip + 4)) = r1;
0x00027608 b 0x27258 | goto label_47;
| label_79:
0x0002760c ldr r3, [sp, 0x50] | r3 = var_50h;
0x00027610 cmp r3, 3 |
| if (r3 != 3) {
0x00027614 bne 0x27630 | goto label_155;
| }
0x00027618 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0002761c cmp r3, 0 |
| if (r3 <= 0) {
0x00027620 mvngt r3, 1 | r3 = ~1;
| }
| if (r3 <= 0) {
0x00027624 strgt r3, [sp, 0x34] | var_34h = r3;
| }
| if (r3 > 0) {
0x00027628 bgt 0x27630 | goto label_155;
| }
| if (r3 == 0) {
0x0002762c beq 0x26e58 | goto label_27;
| }
| label_155:
0x00027630 ldr r2, [pc, -0xd70] | r2 = *(0x268c4);
0x00027634 add r2, pc, r2 | r2 = pc + r2;
| label_48:
0x00027638 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0002763c ldrsb r3, [r2, r3] | r3 = *((r2 + r3));
0x00027640 cmn r3, 0x5d |
| if (r3 != 0x5d) {
0x00027644 beq 0x27674 |
0x00027648 add r3, r3, 1 | r3++;
0x0002764c cmp r3, 0x70 |
| if (r3 > 0x70) {
0x00027650 bhi 0x27674 | goto label_156;
| }
0x00027654 add r3, r2, r3 | r3 = r2 + r3;
0x00027658 ldrb r1, [r3, 0x188] | r1 = *((r3 + 0x188));
0x0002765c cmp r1, 1 |
| if (r1 != 1) {
0x00027660 bne 0x27674 | goto label_156;
| }
0x00027664 ldrb r3, [r3, 0x1f9] | r3 = *((r3 + 0x1f9));
0x00027668 cmp r3, 0 |
0x0002766c str r3, [sp, 0x44] | var_44h = r3;
| if (r3 != 0) {
0x00027670 bne 0x27698 | goto label_157;
| }
| }
| label_156:
0x00027674 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00027678 ldr r1, [sp, 0x64] | r1 = var_64h;
0x0002767c cmp r3, r1 |
| if (r3 == r1) {
0x00027680 beq 0x26e58 | goto label_27;
| }
0x00027684 ldrsh r1, [r3, -2]! | r1 = *((r3 -= 2));
0x00027688 sub r4, r4, 0x30 | r4 -= var_d8h;
0x0002768c str r1, [sp, 0x38] | var_38h = r1;
0x00027690 str r3, [sp, 0x40] | var_40h = r3;
0x00027694 b 0x27638 | goto label_48;
| label_157:
0x00027698 ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h]");
0x0002769c add ip, sp, 0xa8 |
0x000276a0 strd r2, r3, [sp, 0xb0] | __asm ("strd r2, r3, [var_b0h]");
0x000276a4 ldr r3, [sp, 0x60] | r3 = var_60h;
0x000276a8 add r4, r4, 0x30 | r4 += var_30h;
0x000276ac str r3, [sp, 0xb8] | var_b8h = r3;
0x000276b0 ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000276b4 mov lr, r4 | lr = r4;
0x000276b8 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000276bc ldm ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x000276c0 stm lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x000276c4 ldm ip, {r0, r1, r2, r3} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
| r3 = *((ip + 12));
0x000276c8 stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x000276cc mov r3, 3 | r3 = 3;
0x000276d0 str r3, [sp, 0x50] | var_50h = r3;
0x000276d4 b 0x269f8 | goto label_49;
| label_51:
0x000276d8 mov r0, 2 | r0 = 2;
0x000276dc b 0x26e5c | goto label_50;
| label_52:
0x000276e0 mov r0, 0 | r0 = 0;
0x000276e4 b 0x26e5c | goto label_50;
| label_70:
0x000276e8 ldr r3, [sp, 0x54] | r3 = var_54h;
0x000276ec add r7, r3, 0x270 | r7 = r3 + 0x270;
0x000276f0 b 0x26780 | goto label_13;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/lib/libblkid.so.1.1.0 @ 0x2cbd0 */
| #include <stdint.h>
|
; (fcn) fcn.0002cbd0 () | void fcn_0002cbd0 (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002cbd0 push {r4, r5, r6, r7, r8, lr} |
0x0002cbd4 mov r4, r0 | r4 = r0;
0x0002cbd8 ldr r0, [r0, 0x14] | r0 = *((r0 + 0x14));
0x0002cbdc lsl r3, r2, 3 | r3 = r2 << 3;
0x0002cbe0 adds r3, r3, r0 | r3 += r0;
0x0002cbe4 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
| if (r3 < r3) {
0x0002cbe8 ldrhs r3, [r4, 0x18] | r3 = *((r4 + 0x18));
| }
0x0002cbec lsr r0, r0, 3 | r0 >>= 3;
| if (r3 < r3) {
0x0002cbf0 addhs r3, r3, 1 | r3++;
| }
| if (r3 < r3) {
0x0002cbf4 strhs r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
| }
0x0002cbf8 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0002cbfc and r0, r0, 0x3f | r0 &= 0x3f;
0x0002cc00 add r3, r3, r2, lsr 29 | r3 += (r2 >> 29);
0x0002cc04 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0002cc08 add r3, r2, r0 | r3 = r2 + r0;
0x0002cc0c cmp r3, 0x3f |
0x0002cc10 mov r7, r1 | r7 = r1;
0x0002cc14 mov r6, r2 | r6 = r2;
| if (r3 > 0x3f) {
0x0002cc18 movls r5, 0 | r5 = 0;
| }
| if (r3 < 0x3f) {
0x0002cc1c bls 0x2cc54 | goto label_0;
| }
0x0002cc20 rsb r5, r0, 0x40 | r5 = 0x40 - r0;
0x0002cc24 add r0, r0, 0x1c | r0 += 0x1c;
0x0002cc28 mov r2, r5 | r2 = r5;
0x0002cc2c add r0, r4, r0 | r0 = r4 + r0;
0x0002cc30 bl 0x5950 | memcpy (r0, r1, r2);
0x0002cc34 add r1, r4, 0x1c | r1 = r4 + 0x1c;
0x0002cc38 mov r0, r4 | r0 = r4;
0x0002cc3c bl 0x2b744 | fcn_0002b744 (r0, r1);
| do {
0x0002cc40 add r3, r5, 0x3f | r3 = r5 + 0x3f;
0x0002cc44 cmp r6, r3 |
0x0002cc48 add r1, r7, r5 | r1 = r7 + r5;
| if (r6 <= r3) {
0x0002cc4c bhi 0x2cc6c |
0x0002cc50 mov r0, 0 | r0 = 0;
| label_0:
0x0002cc54 add r0, r0, 0x1c | r0 += 0x1c;
0x0002cc58 sub r2, r6, r5 | r2 = r6 - r5;
0x0002cc5c add r1, r7, r5 | r1 = r7 + r5;
0x0002cc60 add r0, r4, r0 | r0 = r4 + r0;
0x0002cc64 pop {r4, r5, r6, r7, r8, lr} |
0x0002cc68 b 0x5950 | void (*0x5950)() ();
| }
0x0002cc6c mov r0, r4 | r0 = r4;
0x0002cc70 bl 0x2b744 | fcn_0002b744 (r0, r1);
0x0002cc74 add r5, r5, 0x40 | r5 += 0x40;
0x0002cc78 b 0x2cc40 |
| } while (1);
| }
[*] Function strcat used 1 times libblkid.so.1.1.0