[*] Binary protection state of libelf-0.185.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of libelf-0.185.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libelf-0.185.so @ 0x3374 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00003374 () | void fcn_00003374 (int16_t arg_2d0h, int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_62h;
| int16_t var_64h;
| int16_t var_66h;
| int16_t var_68h;
| int16_t var_6ch;
| r0 = arg1;
| if (? < ?) {
0x00003374 strhs pc, [r0, -0x8df]! | *((r0 -= 0x8df)) = pc;
| }
0x00003378 ldr.w r3, [pc, 0x520] |
0x0000337c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00003380 sub sp, 0x74 |
0x00003382 add r2, pc | r2 += pc;
0x00003384 ldr r6, [r0] | r6 = *(r0);
0x00003386 mov r4, r0 | r4 = r0;
0x00003388 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000338a ldr r3, [r3] | r3 = *(0x389c);
0x0000338c str r3, [sp, 0x6c] | var_6ch = r3;
0x0000338e mov.w r3, 0 | r3 = 0;
0x00003392 ldrd r7, r3, [r0, 0x50] | __asm ("ldrd r7, r3, [r0, 0x50]");
0x00003396 str r3, [sp, 0xc] | var_ch = r3;
0x00003398 cmp r6, 0 |
| if (r6 == 0) {
0x0000339a beq.w 0x35ac | goto label_19;
| }
0x0000339e ldr r2, [r0, 0x20] | r2 = *((r0 + 0x20));
0x000033a0 ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x000033a2 adds r3, r3, r2 | r3 += r2;
0x000033a4 ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x000033a6 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x000033aa cmp r3, r7 |
0x000033ac sbcs r1, r2, 0 | __asm ("sbcs r1, r2, 0");
| if (r3 < r7) {
0x000033b0 blt 0x3404 | goto label_4;
| }
0x000033b2 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000033b4 subs r3, r3, r7 | r3 -= r7;
0x000033b6 sbc.w r2, r2, r1 | __asm ("sbc.w r2, r2, r1");
0x000033ba cmp r3, 0x3c |
0x000033bc sbcs r2, r2, 0 | __asm ("sbcs r2, r2, 0");
| if (r3 < 0x3c) {
0x000033c0 blt 0x3404 | goto label_4;
| }
0x000033c2 adds r5, r6, r7 | r5 = r6 + r7;
| label_6:
0x000033c4 ldrb.w r3, [r5, 0x3a] | r3 = *((r5 + 0x3a));
0x000033c8 cmp r3, 0x60 |
| if (r3 == 0x60) {
0x000033ca beq 0x3410 | goto label_20;
| }
| label_0:
0x000033cc movs r0, 0xf | r0 = 0xf;
0x000033ce mov.w r6, -1 | r6 = -1;
0x000033d2 bl 0x259c | fcn_0000259c (r0);
| do {
| label_1:
0x000033d6 ldr.w r2, [pc, 0x4c8] | r2 = *(0x000038a0);
0x000033da ldr.w r3, [pc, 0x4c0] | r3 = *(0x389e);
0x000033de add r2, pc | r2 += pc;
0x000033e0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000033e2 ldr r2, [r3] | r2 = *(0x389e);
0x000033e4 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000033e6 eors r2, r3 | r2 ^= r3;
0x000033e8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000033ec bne.w 0x3892 | goto label_21;
| }
0x000033f0 mov r0, r6 | r0 = r6;
0x000033f2 add sp, 0x74 |
0x000033f4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x000033f8 blx 0x2328 | r0 = memset (r0, r1, r2);
0x000033fc ldr r3, [r0] | r3 = *(r0);
0x000033fe cmp r3, 4 |
| if (r3 == 4) {
0x00003400 beq.w 0x35bc | goto label_5;
| }
| label_4:
0x00003404 movs r0, 0xe | r0 = 0xe;
0x00003406 mov.w r6, -1 | r6 = -1;
0x0000340a bl 0x259c | fcn_0000259c (r0);
0x0000340e b 0x33d6 |
| } while (1);
| label_20:
0x00003410 ldrb.w r3, [r5, 0x3b] | r3 = *((r5 + 0x3b));
0x00003414 cmp r3, 0xa |
| if (r3 != 0xa) {
0x00003416 bne 0x33cc | goto label_0;
| }
0x00003418 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0000341a movs r6, 0 | r6 = 0;
0x0000341c ldr r0, [r5] | r0 = *(r5);
0x0000341e ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00003420 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00003422 str.w r0, [r4, 0xcc] | __asm ("str.w r0, [r4, 0xcc]");
0x00003426 str.w r1, [r4, 0xd0] | __asm ("str.w r1, [r4, 0xd0]");
0x0000342a str.w r2, [r4, 0xd4] | __asm ("str.w r2, [r4, 0xd4]");
0x0000342e strb.w r6, [r4, 0xdc] | *((r4 + 0xdc)) = r6;
0x00003432 str.w r3, [r4, 0xd8] | __asm ("str.w r3, [r4, 0xd8]");
0x00003436 ldrb r3, [r5] | r3 = *(r5);
0x00003438 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x0000343a bne.w 0x3592 | goto label_22;
| }
0x0000343e ldrb r7, [r5, 1] | r7 = *((r5 + 1));
0x00003440 cmp r7, 0x20 |
| if (r7 == 0x20) {
0x00003442 beq.w 0x35fa | goto label_23;
| }
0x00003446 cmp r7, 0x53 |
| if (r7 == 0x53) {
0x00003448 beq.w 0x3632 | goto label_24;
| }
0x0000344c cmp r7, 0x2f |
| if (r7 == 0x2f) {
0x0000344e bne 0x3464 |
0x00003450 ldr.w r1, [pc, 0x450] |
0x00003454 movs r2, 0x10 | r2 = 0x10;
0x00003456 mov r0, r5 | r0 = r5;
0x00003458 add r1, pc | r1 = 0x6d00;
0x0000345a blx 0x2234 | r0 = fcn_00002234 ();
0x0000345e cmp r0, 0 |
| if (r0 == 0) {
0x00003460 beq.w 0x3672 | goto label_25;
| }
| }
| label_7:
0x00003464 blx 0x22f8 | r0 = inflateEnd ();
0x00003468 ldr r3, [r0] | r3 = *(r0);
0x0000346a ldrh.w r3, [r3, r7, lsl 1] | offset_0 = r7 << 1;
| r3 = *((r3 + offset_0));
0x0000346e lsls r1, r3, 0x14 | r1 = r3 << 0x14;
| if (r1 >= r3) {
0x00003470 bpl.w 0x3626 | goto label_9;
| }
0x00003474 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x00003476 cmp r3, 0 |
| if (r3 == 0) {
0x00003478 beq.w 0x368a | goto label_26;
| }
| label_14:
0x0000347c movs r2, 0xa | r2 = 0xa;
0x0000347e movs r1, 0 | r1 = 0;
0x00003480 adds r0, r5, 1 | r0 = r5 + 1;
0x00003482 blx 0x21cc | strtol (r0, r1, r2);
0x00003486 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x00003488 cmp r3, r0 |
| if (r3 < r0) {
0x0000348a bls.w 0x3626 | goto label_9;
| }
0x0000348e ldr r7, [r4, 0x44] | r7 = *((r4 + 0x44));
0x00003490 add r7, r0 | r7 += r0;
| label_2:
0x00003492 str r7, [r4, 0x58] | *((r4 + 0x58)) = r7;
0x00003494 ldrb.w r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x00003498 cmp r3, 0x20 |
| if (r3 == 0x20) {
0x0000349a beq.w 0x3626 | goto label_9;
| }
0x0000349e ldrb r3, [r5, 0x1b] | r3 = *((r5 + 0x1b));
0x000034a0 add.w r7, r5, 0x10 | r7 = r5 + 0x10;
0x000034a4 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x000034a6 beq 0x34ba |
0x000034a8 ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x000034aa add r3, sp, 0x5c | r3 += var_5ch;
0x000034ac ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x000034ae mov r7, r3 | r7 = r3;
0x000034b0 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000034b2 stm r3!, {r0, r1, r2} | *(r3!) = r0;
| *((r3! + 4)) = r1;
| *((r3! + 8)) = r2;
0x000034b4 movs r3, 0 | r3 = 0;
0x000034b6 strb.w r3, [sp, 0x68] | var_68h = r3;
| }
0x000034ba movs r2, 0xa | r2 = 0xa;
0x000034bc mov r0, r7 | r0 = r7;
0x000034be movs r1, 0 | r1 = 0;
0x000034c0 blx 0x21cc | strtol (r0, r1, r2);
0x000034c4 str r0, [r4, 0x5c] | *((r4 + 0x5c)) = r0;
0x000034c6 add.w r3, r5, 0x1c | r3 = r5 + 0x1c;
0x000034ca ldrb.w r2, [r5, 0x21] | r2 = *((r5 + 0x21));
0x000034ce cmp r2, 0x20 |
| if (r2 != 0x20) {
0x000034d0 beq 0x34e4 |
0x000034d2 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x000034d4 movs r1, 0 | r1 = 0;
0x000034d6 str r0, [sp, 0x5c] | var_5ch = r0;
0x000034d8 ldrh r2, [r3, 4] | r2 = *((r3 + 4));
0x000034da add r3, sp, 0x5c | r3 += var_5ch;
0x000034dc strb.w r1, [sp, 0x62] | var_62h = r1;
0x000034e0 strh.w r2, [sp, 0x60] | var_60h = r2;
| }
0x000034e4 movs r2, 0xa | r2 = 0xa;
0x000034e6 mov r0, r3 | r0 = r3;
0x000034e8 movs r1, 0 | r1 = 0;
0x000034ea blx 0x21cc | strtol (r0, r1, r2);
0x000034ee str r0, [r4, 0x60] | *((r4 + 0x60)) = r0;
0x000034f0 add.w r3, r5, 0x22 | r3 = r5 + 0x22;
0x000034f4 ldrb.w r2, [r5, 0x27] | r2 = *((r5 + 0x27));
0x000034f8 cmp r2, 0x20 |
| if (r2 != 0x20) {
0x000034fa beq 0x3510 |
0x000034fc ldr.w r0, [r5, 0x22] | r0 = *((r5 + 0x22));
0x00003500 movs r1, 0 | r1 = 0;
0x00003502 str r0, [sp, 0x5c] | var_5ch = r0;
0x00003504 ldrh r2, [r3, 4] | r2 = *((r3 + 4));
0x00003506 add r3, sp, 0x5c | r3 += var_5ch;
0x00003508 strb.w r1, [sp, 0x62] | var_62h = r1;
0x0000350c strh.w r2, [sp, 0x60] | var_60h = r2;
| }
0x00003510 mov r0, r3 | r0 = r3;
0x00003512 movs r2, 0xa | r2 = 0xa;
0x00003514 movs r1, 0 | r1 = 0;
0x00003516 add.w r7, r5, 0x28 | r7 = r5 + 0x28;
0x0000351a blx 0x21cc | strtol (r0, r1, r2);
0x0000351e str r0, [r4, 0x64] | *((r4 + 0x64)) = r0;
0x00003520 ldrb.w r3, [r5, 0x2f] | r3 = *((r5 + 0x2f));
0x00003524 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x00003526 beq 0x3538 |
0x00003528 ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x0000352a add r3, sp, 0x5c | r3 += var_5ch;
0x0000352c ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0000352e mov r7, r3 | r7 = r3;
0x00003530 stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x00003532 movs r3, 0 | r3 = 0;
0x00003534 strb.w r3, [sp, 0x64] | var_64h = r3;
0x00003536 adds r0, 0x64 | r0 += 0x64;
| }
0x00003538 movs r2, 0xa | r2 = 0xa;
0x0000353a mov r0, r7 | r0 = r7;
0x0000353c movs r1, 0 | r1 = 0;
0x0000353e blx 0x21cc | strtol (r0, r1, r2);
0x00003542 str r0, [r4, 0x68] | *((r4 + 0x68)) = r0;
0x00003544 add.w r3, r5, 0x30 | r3 = r5 + 0x30;
0x00003548 ldrb.w r2, [r5, 0x39] | r2 = *((r5 + 0x39));
0x0000354c cmp r2, 0x20 |
| if (r2 != 0x20) {
0x0000354e beq 0x3566 |
0x00003550 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00003552 ldr r0, [r5, 0x30] | r0 = *((r5 + 0x30));
0x00003554 add r5, sp, 0x5c | r5 += var_5ch;
0x00003556 mov r2, r5 | r2 = r5;
0x00003558 stm r2!, {r0, r1} | *(r2!) = r0;
| *((r2! + 4)) = r1;
0x0000355a ldrh r1, [r3, 8] | r1 = *((r3 + 8));
0x0000355c mov r3, r5 | r3 = r5;
0x0000355e strh r1, [r2] | *(r2) = r1;
0x00003560 movs r2, 0 | r2 = 0;
0x00003562 strb.w r2, [sp, 0x66] | var_66h = r2;
| }
0x00003566 movs r2, 0xa | r2 = 0xa;
0x00003568 movs r1, 0 | r1 = 0;
0x0000356a mov r0, r3 | r0 = r3;
0x0000356c blx 0x228c | fcn_0000228c ();
0x00003570 cmp r1, 0 |
0x00003572 strd r0, r1, [r4, 0x70] | __asm ("strd r0, r1, [r4, 0x70]");
| if (r1 < 0) {
0x00003576 blt 0x3626 | goto label_9;
| }
0x00003578 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0000357a ldr r2, [r4, 0x20] | r2 = *((r4 + 0x20));
0x0000357c subs r3, 0x3c | r3 -= 0x3c;
0x0000357e add r3, r2 | r3 += r2;
0x00003580 ldr r2, [r4, 0x50] | r2 = *((r4 + 0x50));
0x00003582 subs r3, r3, r2 | r3 -= r2;
0x00003584 cmp r3, r0 |
| if (r3 >= r0) {
0x00003586 bhs.w 0x33d6 | goto label_1;
| }
0x0000358a movs r2, 0 | r2 = 0;
0x0000358c strd r3, r2, [r4, 0x70] | __asm ("strd r3, r2, [r4, 0x70]");
0x00003590 b 0x33d6 | goto label_1;
| label_22:
0x00003592 add.w r7, r4, 0xbc | r7 = r4 + 0xbc;
0x00003596 movs r3, 0x10 | r3 = 0x10;
0x00003598 movs r2, 0x2f | r2 = 0x2f;
0x0000359a mov r1, r5 | r1 = r5;
0x0000359c mov r0, r7 | r0 = r7;
0x0000359e blx 0x21a8 | r0 = memccpy ();
0x000035a2 cmp r0, 0 |
| if (r0 == 0) {
0x000035a4 beq 0x3658 | goto label_27;
| }
0x000035a6 strb r6, [r0, -0x1] | *((r0 - 0x1)) = r6;
0x000035aa b 0x3492 | goto label_2;
| label_19:
0x000035ac ldr.w sl, [r0, 0x18] | sl = *((r0 + 0x18));
0x000035b0 add.w r5, r0, 0x80 | r5 = r0 + 0x80;
0x000035b4 mov.w r8, 0x3c | r8 = 0x3c;
0x000035b8 mov fp, r5 |
0x000035ba mov sb, r6 | sb = r6;
| label_5:
0x000035bc adds r3, r6, r7 | r3 = r6 + r7;
0x000035be mov r2, r8 | r2 = r8;
0x000035c0 str r3, [sp] | *(sp) = r3;
0x000035c2 mov r1, fp | r1 = fp;
0x000035c4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000035c6 mov r0, sl | r0 = sl;
0x000035c8 adc.w r3, r3, sb | __asm ("adc.w r3, r3, sb");
0x000035cc str r3, [sp, 4] | var_4h = r3;
0x000035ce blx 0x22a4 | r0 = fcn_000022a4 ();
0x000035d2 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x000035d4 beq.w 0x33f8 | goto label_3;
| }
0x000035d8 cmp r0, 0 |
| if (r0 <= 0) {
0x000035da ble.w 0x3404 | goto label_4;
| }
0x000035de add r6, r0 | r6 += r0;
0x000035e0 cmp r6, 0x3b |
| if (r6 <= 0x3b) {
0x000035e2 bgt 0x35f2 |
0x000035e4 asr.w sb, r6, 0x1f | sb = r6 >> 0x1f;
0x000035e8 rsb.w r8, r6, 0x3c | r8 = 0x3c - r6;
0x000035ec add.w fp, r5, r6 |
0x000035f0 b 0x35bc | goto label_5;
| }
0x000035f2 cmp r6, 0x3c |
| if (r6 == 0x3c) {
0x000035f4 beq.w 0x33c4 | goto label_6;
| }
0x000035f8 b 0x3404 | goto label_4;
| label_23:
0x000035fa ldr r1, [pc, 0x2ac] |
0x000035fc movs r2, 0x10 | r2 = 0x10;
0x000035fe mov r0, r5 | r0 = r5;
0x00003600 add r1, pc | r1 = 0x6eae;
0x00003602 blx 0x2234 | r0 = fcn_00002234 ();
0x00003606 cmp r0, 0 |
| if (r0 != 0) {
0x00003608 bne.w 0x3464 | goto label_7;
| }
0x0000360c ldr r3, [pc, 0x29c] |
0x0000360e add.w r7, r4, 0xbc | r7 = r4 + 0xbc;
0x00003612 add r3, pc | r3 = 0x6ec2;
0x00003614 ldrh r3, [r3] | r3 = *(r3);
0x00003616 strh.w r3, [r4, 0xbc] | *((r4 + 0xbc)) = r3;
0x0000361a b 0x3492 | goto label_2;
| label_11:
0x0000361c blx 0x2328 | r0 = memset (r0, r1, r2);
0x00003620 ldr r3, [r0] | r3 = *(r0);
0x00003622 cmp r3, 4 |
| if (r3 == 4) {
0x00003624 beq 0x3722 | goto label_12;
| }
| label_9:
0x00003626 movs r0, 0x10 | r0 = 0x10;
0x00003628 mov.w r6, -1 | r6 = -1;
0x0000362c bl 0x259c | fcn_0000259c (r0);
0x00003630 b 0x33d6 | goto label_1;
| label_24:
0x00003632 ldr r1, [pc, 0x27c] |
0x00003634 movs r2, 0x10 | r2 = 0x10;
0x00003636 mov r0, r5 | r0 = r5;
0x00003638 add r1, pc | r1 = 0x6eee;
0x0000363a blx 0x2234 | r0 = fcn_00002234 ();
0x0000363e cmp r0, 0 |
| if (r0 != 0) {
0x00003640 bne.w 0x3464 | goto label_7;
| }
0x00003644 ldr r3, [pc, 0x26c] |
0x00003646 add.w r7, r4, 0xbc | r7 = r4 + 0xbc;
0x0000364a add r3, pc | r3 = 0x6f02;
0x0000364c ldm r3!, {r0, r1} | r0 = *(r3!);
| r1 = *((r3! + 4));
0x0000364e str.w r0, [r4, 0xbc] | __asm ("str.w r0, [r4, 0xbc]");
0x00003652 str.w r1, [r4, 0xc0] | __asm ("str.w r1, [r4, 0xc0]");
0x00003656 b 0x3492 | goto label_2;
| label_27:
0x00003658 mov r1, r6 | r1 = r6;
0x0000365a mov r3, r4 | r3 = r4;
0x0000365c strb r6, [r3, 0xcb]! | *((r3 += 0xcb)) = r6;
| label_8:
0x00003660 ldrb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x00003664 cmp r2, 0x20 |
| if (r2 != 0x20) {
0x00003666 bne.w 0x3492 | goto label_2;
| }
0x0000366a cmp r7, r3 |
0x0000366c strb r1, [r3] | *(r3) = r1;
| if (r7 != r3) {
0x0000366e bne 0x3660 | goto label_8;
| }
0x00003670 b 0x3492 | goto label_2;
| label_25:
0x00003672 ldr r3, [pc, 0x244] |
0x00003674 add.w r2, r4, 0xbc | r2 = r4 + 0xbc;
0x00003678 mov r7, r2 | r7 = r2;
0x0000367a add r3, pc | r3 = 0x6f38;
0x0000367c ldrh r1, [r3] | r1 = *(r3);
0x0000367e ldrb r3, [r3, 2] | r3 = *((r3 + 2));
0x00003680 strh.w r1, [r4, 0xbc] | *((r4 + 0xbc)) = r1;
0x00003684 strb.w r3, [r4, 0xbe] | *((r4 + 0xbe)) = r3;
0x00003688 b 0x3492 | goto label_2;
| label_26:
0x0000368a ldr r2, [pc, 0x230] |
0x0000368c movs r7, 8 | r7 = 8;
0x0000368e mov sl, r3 | sl = r3;
0x00003690 strd r5, r6, [sp, 0x18] | __asm ("strd r5, r6, [var_18h]");
0x00003694 add r2, pc | r2 = 0x6f56;
0x00003696 str r2, [sp, 0x14] | var_14h = r2;
0x00003698 add r2, sp, 0x20 | r2 += var_20h;
0x0000369a str r2, [sp, 0xc] | var_ch = r2;
0x0000369c b 0x3704 | goto label_28;
| label_10:
0x0000369e ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x000036a0 cmp r7, r2 |
| if (r7 > r2) {
0x000036a2 bhi 0x3626 | goto label_9;
| }
0x000036a4 subs r2, r2, r7 | r2 -= r7;
0x000036a6 sbc.w r1, sl, sl, lsl 1 | __asm ("sbc.w r1, sl, sl, lsl 1");
0x000036aa cmp r2, 0x3c |
0x000036ac sbcs r1, r1, 0 | __asm ("sbcs r1, r1, 0");
| if (r2 < 0x3c) {
0x000036b0 blt 0x3626 | goto label_9;
| }
0x000036b2 add r5, r7 | r5 += r7;
| label_13:
0x000036b4 ldrb.w r2, [r5, 0x39] | r2 = *((r5 + 0x39));
0x000036b8 add.w r3, r5, 0x30 | r3 = r5 + 0x30;
0x000036bc cmp r2, 0x20 |
| if (r2 != 0x20) {
0x000036be beq 0x36d8 |
0x000036c0 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000036c2 add r6, sp, 0x5c | r6 += var_5ch;
0x000036c4 ldr r0, [r5, 0x30] | r0 = *((r5 + 0x30));
0x000036c6 mov r2, r6 | r2 = r6;
0x000036c8 mov.w ip, 0 |
0x000036cc stm r2!, {r0, r1} | *(r2!) = r0;
| *((r2! + 4)) = r1;
0x000036ce ldrh r3, [r3, 8] | r3 = *((r3 + 8));
0x000036d0 strh r3, [r2] | *(r2) = r3;
0x000036d2 mov r3, r6 | r3 = r6;
0x000036d4 strb.w ip, [sp, 0x66] | var_66h = ip;
| }
0x000036d8 movs r2, 0xa | r2 = 0xa;
0x000036da movs r1, 0 | r1 = 0;
0x000036dc mov r0, r3 | r0 = r3;
0x000036de blx 0x21cc | strtol (r0, r1, r2);
0x000036e2 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000036e4 mov r8, r0 | r8 = r0;
0x000036e6 movs r2, 0x10 | r2 = 0x10;
0x000036e8 mov r0, r5 | r0 = r5;
0x000036ea blx 0x2234 | r0 = fcn_00002234 ();
0x000036ee cmp r0, 0 |
| if (r0 == 0) {
0x000036f0 beq 0x3768 | goto label_29;
| }
0x000036f2 add.w r3, r8, 1 | r3 = r8 + 1;
0x000036f6 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x000036fa adds r3, 0x3c | r3 += 0x3c;
0x000036fc adds r3, r3, r7 | r3 += r7;
0x000036fe mov r7, r3 | r7 = r3;
0x00003700 adc sl, sl, 0 | __asm ("adc sl, sl, 0");
| label_28:
0x00003704 ldr r5, [r4] | r5 = *(r4);
0x00003706 cmp r5, 0 |
| if (r5 != 0) {
0x00003708 bne 0x369e | goto label_10;
| }
0x0000370a mov fp, r5 |
0x0000370c ldr r5, [r4, 0x20] | r5 = *((r4 + 0x20));
0x0000370e ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x00003710 mov.w r8, 0x3c | r8 = 0x3c;
0x00003714 ldr.w sb, [r4, 0x18] | sb = *((r4 + 0x18));
0x00003718 mov r6, fp | r6 = fp;
0x0000371a adds r5, r7, r5 | r5 = r7 + r5;
0x0000371c adc.w r3, sl, r2 | __asm ("adc.w r3, sl, r2");
0x00003720 str r3, [sp, 0x10] | var_10h = r3;
| label_12:
0x00003722 adds.w r3, fp, r5 | r3 = fp + r5;
0x00003726 mov r2, r8 | r2 = r8;
0x00003728 str r3, [sp] | *(sp) = r3;
0x0000372a mov r0, sb | r0 = sb;
0x0000372c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000372e adc.w r3, r3, r6 | __asm ("adc.w r3, r3, r6");
0x00003732 str r3, [sp, 4] | var_4h = r3;
0x00003734 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00003736 add.w r1, r3, fp | r1 = r3 + fp;
0x0000373a blx 0x22a4 | r0 = fcn_000022a4 ();
0x0000373e adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x00003740 beq.w 0x361c | goto label_11;
| }
0x00003744 cmp r0, 0 |
| if (r0 <= 0) {
0x00003746 ble.w 0x3626 | goto label_9;
| }
0x0000374a add fp, r0 |
0x0000374c cmp.w fp, 0x3b |
| if (fp <= 0x3b) {
0x00003750 bgt 0x375c |
0x00003752 asr.w r6, fp, 0x1f | r6 = fp >> 0x1f;
0x00003756 rsb.w r8, fp, 0x3c | r8 = 0x3c - fp;
0x0000375a b 0x3722 | goto label_12;
| }
0x0000375c cmp.w fp, 0x3c |
| if (fp != 0x3c) {
0x00003760 bne.w 0x3626 | goto label_9;
| }
0x00003764 ldr r5, [sp, 0xc] | r5 = var_ch;
0x00003766 b 0x36b4 | goto label_13;
| label_29:
0x00003768 ldr.w fp, [r4] | fp = *(r4);
0x0000376c mov sb, r0 | sb = r0;
0x0000376e ldr r5, [sp, 0x18] | r5 = var_18h;
0x00003770 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x00003772 str.w sl, [sp, 0xc] | __asm ("str.w sl, [var_ch]");
0x00003776 cmp.w fp, 0 |
| if (fp == 0) {
0x0000377a beq 0x37e4 | goto label_30;
| }
0x0000377c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0000377e subs r3, r3, r7 | r3 -= r7;
0x00003780 sbc.w r2, sl, sl, lsl 1 | __asm ("sbc.w r2, sl, sl, lsl 1");
0x00003784 subs r3, 0x3b | r3 -= 0x3b;
0x00003786 adc r2, r2, -1 | __asm ("adc r2, r2, -1");
0x0000378a cmp r8, r3 |
0x0000378c sbcs.w r2, r0, r2 | __asm ("sbcs.w r2, r0, r2");
| if (r8 >= r3) {
0x00003790 bge.w 0x3626 | goto label_9;
| }
0x00003794 mov r0, r8 | r0 = r8;
0x00003796 blx 0x22c8 | r0 = deflateInit_ ();
0x0000379a mov sl, r0 | sl = r0;
0x0000379c cmp r0, 0 |
| if (r0 == 0) {
0x0000379e beq.w 0x3626 | goto label_9;
| }
0x000037a2 add.w r1, r7, 0x3c | r1 = r7 + 0x3c;
0x000037a6 mov r2, r8 | r2 = r8;
0x000037a8 add r1, fp | r1 += fp;
0x000037aa blx 0x2210 | fcn_00002210 ();
0x000037ac invalid |
| label_17:
0x000037ae strd r0, r8, [r4, 0x44] | __asm ("strd r0, r8, [r4, 0x44]");
0x000037b2 mov.w sb, 0 | sb = 0;
0x000037b6 add r8, sl | r8 += sl;
0x000037b8 b 0x37c6 | goto label_31;
| label_15:
0x000037ba mov sl, r0 | sl = r0;
0x000037bc strb sb, [sl], 1 | *(sl) = sb;
| sl++;
0x000037c0 cmp sl, r8 |
| if (sl >= r8) {
0x000037c2 bhs.w 0x347c | goto label_14;
| }
| label_31:
0x000037c6 sub.w r7, r8, sl | r7 = r8 - sl;
0x000037ca movs r1, 0x2f | r1 = 0x2f;
0x000037cc mov r2, r7 | r2 = r7;
0x000037ce mov r0, sl | r0 = sl;
0x000037d0 blx 0x2364 | r0 = inflateInit_ ();
0x000037d4 cmp r0, 0 |
| if (r0 != 0) {
0x000037d6 bne 0x37ba | goto label_15;
| }
0x000037d8 mov r1, r0 | r1 = r0;
0x000037da mov r2, r7 | r2 = r7;
0x000037dc mov r0, sl | r0 = sl;
0x000037de blx 0x2334 | pwrite64 ();
0x000037e2 b 0x347c | goto label_14;
| label_30:
0x000037e4 mov r0, r8 | r0 = r8;
0x000037e6 blx 0x22c8 | r0 = deflateInit_ ();
0x000037ea mov sl, r0 | sl = r0;
0x000037ec cmp r0, 0 |
| if (r0 == 0) {
0x000037ee beq.w 0x3626 | goto label_9;
| }
0x000037f2 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x000037f4 mov fp, r8 |
0x000037f6 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x000037f8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000037fa adds r3, r7, r3 | r3 = r7 + r3;
0x000037fc mov r7, sl | r7 = sl;
0x000037fe str.w sb, [sp, 0xc] | __asm ("str.w sb, [var_ch]");
0x00003802 adc.w r2, r1, r2 | __asm ("adc.w r2, r1, r2");
0x00003806 adds r3, 0x3c | r3 += 0x3c;
0x00003808 str r3, [sp, 0x14] | var_14h = r3;
0x0000380a adc r3, r2, 0 | __asm ("adc r3, r2, 0");
0x0000380e str r3, [sp, 0x18] | var_18h = r3;
0x00003810 mov r2, r4 | r2 = r4;
0x00003812 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00003814 mov r4, r8 | r4 = r8;
0x00003816 mov r8, r2 | r8 = r2;
0x00003818 str r3, [sp, 0x10] | var_10h = r3;
| do {
| label_16:
0x0000381a ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000381c mov r1, r7 | r1 = r7;
0x0000381e ldr r0, [sp, 0x10] | r0 = var_10h;
0x00003820 adds.w r2, sb, r3 | r2 = sb + r3;
0x00003824 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00003826 str r2, [sp] | *(sp) = r2;
0x00003828 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000382a adc.w r2, r3, r2 | __asm ("adc.w r2, r3, r2");
0x0000382e str r2, [sp, 4] | var_4h = r2;
0x00003830 mov r2, fp | r2 = fp;
0x00003832 blx 0x22a4 | r0 = fcn_000022a4 ();
0x00003836 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00003838 beq 0x3854 | goto label_32;
| }
0x0000383a cmp r0, 0 |
| if (r0 <= 0) {
0x0000383c ble 0x3884 | goto label_33;
| }
0x0000383e add sb, r0 | sb += r0;
0x00003840 cmp r4, sb |
| if (r4 < sb) {
0x00003842 bls 0x387a | goto label_34;
| }
0x00003844 asr.w r3, sb, 0x1f | r3 = sb >> 0x1f;
0x00003848 sub.w fp, r4, sb |
0x0000384c add.w r7, sl, sb | r7 = sl + sb;
0x00003850 str r3, [sp, 0xc] | var_ch = r3;
0x00003852 b 0x381a |
| } while (1);
| label_32:
0x00003854 str r0, [sp, 0x1c] | var_1ch = r0;
0x00003856 blx 0x2328 | r0 = memset (r0, r1, r2);
0x0000385a ldr r0, [r0] | r0 = *(r0);
0x0000385c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000385e cmp r0, 4 |
| if (r0 == 4) {
0x00003860 beq 0x381a | goto label_16;
| }
0x00003862 mov r3, r2 | r3 = r2;
0x00003864 mov r2, r8 | r2 = r8;
0x00003866 mov r8, r4 | r8 = r4;
0x00003868 mov r4, r2 | r4 = r2;
| label_18:
0x0000386a cmp r8, r3 |
0x0000386c mov r0, sl | r0 = sl;
| if (r8 == r3) {
0x0000386e beq 0x37ae | goto label_17;
| }
0x00003870 blx 0x21f4 | fcn_000021f4 ();
0x00003874 movs r3, 0 | r3 = 0;
0x00003876 str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x00003878 b 0x3626 | goto label_9;
| label_34:
0x0000387a mov r3, r8 | r3 = r8;
0x0000387c mov r8, r4 | r8 = r4;
0x0000387e mov r4, r3 | r4 = r3;
0x00003880 mov r3, sb | r3 = sb;
0x00003882 b 0x386a | goto label_18;
| label_33:
0x00003884 mov r2, r8 | r2 = r8;
0x00003886 mov r3, r0 | r3 = r0;
0x00003888 mov r8, r4 | r8 = r4;
0x0000388a mov r4, r2 | r4 = r2;
| if (r3 != 0) {
0x0000388c bne 0x386a | goto label_18;
| }
0x0000388e mov r3, sb | r3 = sb;
0x00003890 b 0x386a | goto label_18;
| label_21:
0x00003892 blx 0x2250 | sysconf ();
0x00003896 nop |
0x00003898 ldm r3!, {r1, r4, r5, r6} | r1 = *(r3!);
| r4 = *((r3! + 4));
| r5 = *((r3! + 8));
| r6 = *((r3! + 12));
0x0000389a movs r1, r0 | r1 = r0;
0x0000389c lsls r4, r7, 3 | r4 = r7 << 3;
0x0000389e movs r0, r0 |
0x000038a0 ldm r3!, {r1, r2, r4} | r1 = *(r3!);
| r2 = *((r3! + 4));
| r4 = *((r3! + 8));
0x000038a2 movs r1, r0 | r1 = r0;
0x000038a4 add r1, sp, 0x2d0 | r1 += arg_2d0h;
0x000038a6 movs r0, r0 |
0x000038a8 adr r7, 0x360 | r7 = 0x360;
0x000038aa movs r0, r0 |
0x000038ac adr r7, 0x368 | r7 = 0x368;
0x000038ae movs r0, r0 |
0x000038b0 adr r7, 0x2e0 | r7 = 0x2e0;
0x000038b2 movs r0, r0 |
0x000038b4 adr r7, 0x2e8 | r7 = 0x2e8;
0x000038b6 movs r0, r0 |
0x000038b8 adr r7, 0x298 | r7 = 0x298;
0x000038ba movs r0, r0 |
0x000038bc adr r7, 0x1e0 | r7 = 0x1e0;
0x000038be movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libelf-0.185.so @ 0x9774 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00009774 () | void fcn_00009774 (int16_t arg_18h, int16_t arg_20h, int16_t arg_24h, int16_t arg_2ch, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_50h, int16_t arg_54h, int16_t arg_a8h, int16_t arg_10a0h, int16_t arg_9000h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_14h;
| int16_t var_18h_2;
| int16_t var_1ch_2;
| int16_t var_20h_2;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch_2;
| int16_t var_50h;
| int16_t var_54h_2;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_c0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00009774 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00009778 mov fp, r0 |
0x0000977a ldr.w r4, [pc, 0x75c] | r4 = *(0x00009ed8);
0x0000977e sub.w sp, sp, 0x9000 |
0x00009782 sub sp, 0xc4 |
0x00009784 movs r3, 0 | r3 = 0;
0x00009786 ldr.w r0, [pc, 0x754] |
0x0000978a add r5, sp, 0xc0 | r5 += var_c0h;
0x0000978c add r4, pc | r4 += pc;
0x0000978e str r5, [sp, 0x3c] | var_3ch = r5;
0x00009790 add.w r6, sp, 0x9000 | r6 += arg_9000h;
0x00009794 ldr r0, [r4, r0] | r0 = *((r4 + r0));
0x00009796 adds r6, 0xbc | r6 += 0xbc;
0x00009798 ldr r0, [r0] | r0 = *(0x9ede);
0x0000979a str r0, [r6] | *(r6) = r0;
0x0000979c mov.w r0, 0 | r0 = 0;
0x000097a0 str r3, [r5, -0x40] | *((r5 - 0x40)) = r3;
0x000097a4 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x000097a8 str r2, [sp, 0x50] | var_50h = r2;
0x000097aa ldr.w r2, [fp, 0x2c] | r2 = *(arg_2ch);
0x000097ae str r3, [sp, 0x18] | var_18h_2 = r3;
0x000097b0 ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x000097b4 str r1, [sp, 0x38] | var_38h = r1;
0x000097b6 orrs r3, r2 | r3 |= r2;
0x000097b8 ands r3, r3, 1 | r3 &= 1;
0x000097bc str r3, [sp, 0x40] | var_40h = r3;
| if (r3 == r3) {
0x000097be beq 0x9814 | goto label_29;
| }
0x000097c0 ldr.w r3, [pc, 0x71c] |
0x000097c4 add r3, pc | r3 = 0x136a8;
0x000097c6 ldr r2, [r3, 0xc] | r2 = *(0x136b4);
0x000097c8 cmp r2, 0x34 |
| if (r2 != 0x34) {
0x000097ca bne.w 0x9ea6 | goto label_30;
| }
0x000097ce ldr r3, [sp, 0x38] | r3 = var_38h;
0x000097d0 ldr r6, [sp, 0x18] | r6 = var_18h_2;
0x000097d2 cmp r3, 0 |
| if (r3 != 0) {
0x000097d4 bne.w 0x9e04 | goto label_31;
| }
| label_25:
0x000097d8 ldr.w r5, [fp, 0x18] | r5 = *(arg_18h);
0x000097dc movs r7, 0 | r7 = 0;
0x000097de mov.w sl, 0x34 | sl = 0x34;
0x000097e2 mov sb, r6 | sb = r6;
0x000097e4 mov r4, r7 | r4 = r7;
| do {
| label_6:
0x000097e6 mov r2, sl | r2 = sl;
0x000097e8 mov r1, sb | r1 = sb;
0x000097ea mov r0, r5 | r0 = r5;
0x000097ec strd r7, r4, [sp] | __asm ("strd r7, r4, [sp]");
0x000097f0 blx 0x2340 | r0 = deflateEnd ();
0x000097f4 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x000097f6 beq.w 0x9b28 | goto label_32;
| }
0x000097fa cmp r0, 0 |
| if (r0 <= 0) {
0x000097fc ble.w 0x9b34 | goto label_12;
| }
0x00009800 add r7, r0 | r7 += r0;
0x00009802 cmp r7, 0x33 |
| if (r7 > 0x33) {
0x00009804 bgt.w 0x9bc6 | goto label_33;
| }
0x00009808 asrs r4, r7, 0x1f | r4 = r7 >> 0x1f;
0x0000980a rsb.w sl, r7, 0x34 | sl = 0x34 - r7;
0x0000980e add.w sb, r6, r7 | sb = r6 + r7;
0x00009812 b 0x97e6 |
| } while (1);
| label_29:
0x00009814 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00009816 str r3, [sp, 0x44] | var_44h = r3;
| label_13:
0x00009818 ldr.w r3, [pc, 0x6c8] |
0x0000981c add r3, pc |
0x0000981e ldr r3, [r3, 0x18] | r3 = *(0x1371c);
0x00009820 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x00009822 bne.w 0x9e90 | goto label_34;
| }
0x00009826 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00009828 mov r0, fp | r0 = fp;
0x0000982a sub.w r1, r3, 0x3c | r1 = r3 - 0x3c;
0x0000982e bl 0xbee8 | fcn_0000bee8 (r0, r1);
0x00009832 str r0, [sp, 0x40] | var_40h = r0;
0x00009834 cmp r0, 0 |
| if (r0 != 0) {
0x00009836 bne.w 0x9dd0 | goto label_35;
| }
0x0000983a ldr.w r7, [fp, 0x40] | r7 = *(arg_40h);
0x0000983e cmp r7, 0 |
| if (r7 == 0) {
0x00009840 beq.w 0x9d56 | goto label_36;
| }
0x00009844 ldr.w r2, [fp, 0x2c] | r2 = *(arg_2ch);
0x00009848 ldr.w r3, [fp, 0x54] | r3 = *(arg_54h);
0x0000984c orrs r3, r2 | r3 |= r2;
0x0000984e ldr r2, [sp, 0x18] | r2 = var_18h_2;
0x00009850 ands r3, r3, 1 | r3 &= 1;
0x00009854 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x00009856 ldr r5, [r2, 0x1c] | r5 = *((r2 + 0x1c));
| if (r3 == r3) {
0x00009858 beq 0x98f2 | goto label_37;
| }
0x0000985a ldrh r2, [r2, 0x28] | r2 = *((r2 + 0x28));
0x0000985c cmp r2, r5 |
| if (r2 <= r5) {
0x0000985e blo.w 0x9daa | goto label_38;
| }
| label_22:
0x00009862 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00009864 ldr r4, [r3, -0x3c] | r4 = *((r3 - 0x3c));
0x00009868 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000986a cmp r3, 0 |
| if (r3 != 0) {
0x0000986c bne.w 0x9e2e | goto label_39;
| }
0x00009870 str r3, [sp, 0x20] | var_20h_2 = r3;
| label_26:
0x00009872 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00009874 mov.w sl, 0 | sl = 0;
0x00009878 ldr.w sb, [fp, 0x18] | sb = *(arg_18h);
0x0000987c mov r8, r7 | r8 = r7;
0x0000987e mov r6, sl | r6 = sl;
0x00009880 ldr r5, [r3, -0x3c] | r5 = *((r3 - 0x3c));
0x00009884 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00009886 lsls r5, r5, 5 | r5 <<= 5;
0x00009888 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0000988a mov r4, r5 | r4 = r5;
0x0000988c str r3, [sp, 0x14] | var_14h = r3;
| do {
| label_8:
0x0000988e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00009890 mov r2, r4 | r2 = r4;
0x00009892 mov r1, r8 | r1 = r8;
0x00009894 mov r0, sb | r0 = sb;
0x00009896 adds.w r3, sl, r3 | r3 = sl + r3;
0x0000989a str r3, [sp] | *(sp) = r3;
0x0000989c adc r3, r6, 0 | __asm ("adc r3, r6, 0");
0x000098a0 str r3, [sp, 4] | var_4h = r3;
0x000098a2 blx 0x2340 | r0 = deflateEnd ();
0x000098a6 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x000098a8 beq.w 0x9b3c | goto label_40;
| }
0x000098ac cmp r0, 0 |
| if (r0 <= 0) {
0x000098ae ble 0x98c4 | goto label_41;
| }
0x000098b0 add sl, r0 | sl += r0;
0x000098b2 cmp r5, sl |
| if (r5 < sl) {
0x000098b4 bls 0x98c8 | goto label_28;
| }
0x000098b6 asr.w r6, sl, 0x1f | r6 = sl >> 0x1f;
0x000098ba sub.w r4, r5, sl | r4 = r5 - sl;
0x000098be add.w r8, r7, sl | r8 = r7 + sl;
0x000098c2 b 0x988e |
| } while (1);
| if (r5 != sl) {
| label_41:
0x000098c4 bne.w 0x9e8c | goto label_42;
| }
| label_28:
0x000098c8 cmp r5, sl |
| if (r5 != sl) {
0x000098ca bne.w 0x9b48 | goto label_43;
| }
0x000098ce ldr r0, [sp, 0x20] | r0 = var_20h_2;
0x000098d0 blx 0x21f4 | fcn_000021f4 ();
0x000098d4 ldr.w r3, [fp, 0x54] | r3 = *(arg_54h);
0x000098d8 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x000098dc str.w r3, [fp, 0x54] | __asm ("str.w r3, [arg_54h]");
0x000098e0 ldr.w r3, [fp, 0x40] | r3 = *(arg_40h);
0x000098e4 cmp r3, 0 |
| if (r3 == 0) {
0x000098e6 beq.w 0x9d52 | goto label_44;
| }
0x000098ea ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x000098ec ldr r5, [r3, 0x1c] | r5 = *((r3 + 0x1c));
0x000098ee movs r3, 1 | r3 = 1;
0x000098f0 str r3, [sp, 0x44] | var_44h = r3;
| label_37:
0x000098f2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000098f4 movs r7, 0 | r7 = 0;
0x000098f6 ldr r3, [r3, -0x3c] | r3 = *((r3 - 0x3c));
0x000098fa add.w r5, r5, r3, lsl 5 | r5 += (r3 << 5);
| label_18:
0x000098fe ldr r2, [sp, 0x50] | r2 = var_50h;
| if (r2 != 0) {
0x00009900 cbz r2, 0x995c |
0x00009902 movw r3, 0x745d |
0x00009906 movt r3, 0x5d1 | r3 = 0x5d1745d;
0x0000990a cmp r2, r3 |
| if (r2 > r3) {
0x0000990c bhi.w 0x9dca | goto label_45;
| }
0x00009910 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00009912 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x00009914 str r3, [sp, 0x74] | var_74h = r3;
0x00009916 ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x0000991a str r3, [sp, 0x78] | var_78h = r3;
0x0000991c ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00009920 str r3, [sp, 0x7c] | var_7ch = r3;
0x00009922 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00009924 cmp r3, 0 |
| if (r3 != 0) {
0x00009926 bne 0x9994 | goto label_46;
| }
0x00009928 ldr.w r3, [fp, 0x3c] | r3 = *(arg_3ch);
0x0000992c str r3, [sp, 0x5c] | var_5ch = r3;
| if (r3 == 0) {
0x0000992e cbz r3, 0x9994 | goto label_46;
| }
0x00009930 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00009934 lsls r6, r3, 0x1f | r6 = r3 << 0x1f;
0x00009936 str r3, [sp, 0x48] | var_48h = r3;
| if (r6 < r3) {
0x00009938 bmi 0x9994 | goto label_46;
| }
0x0000993a ldr r3, [sp, 0x50] | r3 = var_50h;
0x0000993c lsls r3, r3, 2 | r3 <<= 2;
0x0000993e str r3, [sp, 0x64] | var_64h = r3;
0x00009940 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00009942 str r3, [sp, 0x68] | var_68h = r3;
0x00009944 b 0x99b2 | goto label_47;
| label_3:
0x00009946 it ne |
| if (r3 == r3) {
0x00009948 movne r3, r0 | r3 = r0;
| }
| label_4:
0x0000994a cmp r3, r5 |
| if (r3 != r5) {
0x0000994c bne.w 0x9d3a | goto label_24;
| }
| label_2:
0x00009950 ldr r0, [sp, 0x68] | r0 = var_68h;
0x00009952 blx 0x21f4 | fcn_000021f4 ();
0x00009956 ldr r0, [sp, 0x60] | r0 = var_60h;
0x00009958 blx 0x21f4 | fcn_000021f4 ();
| }
0x0000995c ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00009960 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00009964 str.w r3, [fp, 0x2c] | __asm ("str.w r3, [arg_2ch]");
| label_7:
0x00009968 ldr.w r2, [pc, 0x57c] | r2 = *(0x00009ee8);
0x0000996c add.w r1, sp, 0x9000 | r1 += arg_9000h;
0x00009970 ldr.w r3, [pc, 0x568] | r3 = *(0x9edc);
0x00009974 adds r1, 0xbc | r1 += 0xbc;
0x00009976 add r2, pc | r2 += pc;
0x00009978 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000997a ldr r2, [r3] | r2 = *(0x9edc);
0x0000997c ldr r3, [r1] | r3 = *(r1);
0x0000997e eors r2, r3 | r2 ^= r3;
0x00009980 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00009984 bne.w 0x9ebc | goto label_48;
| }
0x00009988 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0000998a add.w sp, sp, 0x9000 |
0x0000998e add sp, 0xc4 |
0x00009990 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_46:
0x00009994 ldr r2, [sp, 0x50] | r2 = var_50h;
0x00009996 lsls r3, r2, 2 | r3 = r2 << 2;
0x00009998 adds r0, r3, r2 | r0 = r3 + r2;
0x0000999a str r3, [sp, 0x64] | var_64h = r3;
0x0000999c lsls r0, r0, 3 | r0 <<= 3;
0x0000999e blx 0x22c8 | deflateInit_ ();
0x000099a2 str r0, [sp, 0x5c] | var_5ch = r0;
0x000099a4 cmp r0, 0 |
| if (r0 == 0) {
0x000099a6 beq.w 0x9e4e | goto label_49;
| }
0x000099aa ldr.w r2, [fp, 0x2c] | r2 = *(arg_2ch);
0x000099ae str r0, [sp, 0x68] | var_68h = r0;
0x000099b0 str r2, [sp, 0x48] | var_48h = r2;
| label_47:
0x000099b2 ldr r0, [sp, 0x64] | r0 = var_64h;
0x000099b4 add.w r4, fp, 0xa8 | r4 += arg_a8h;
0x000099b8 blx 0x22c8 | deflateInit_ ();
0x000099bc str r0, [sp, 0x60] | var_60h = r0;
0x000099be ldr r1, [sp, 0x60] | r1 = var_60h;
0x000099c0 cmp r0, 0 |
| if (r0 == 0) {
0x000099c2 beq.w 0x9e1a | goto label_50;
| }
| label_0:
0x000099c6 ldr r2, [r4] | r2 = *(r4);
| if (r2 == 0) {
0x000099c8 cbz r2, 0x99e0 | goto label_51;
| }
0x000099ca mov r3, r1 | r3 = r1;
0x000099cc add.w r1, r1, r2, lsl 2 | r1 += (r2 << 2);
0x000099d0 add.w r2, r4, 0x10 | r2 = r4 + 0x10;
| do {
0x000099d4 str r2, [r3], 4 | *(r3) = r2;
| r3 += 4;
0x000099d8 cmp r1, r3 |
0x000099da add.w r2, r2, 0x98 | r2 += 0x98;
0x000099de bne 0x99d4 |
| } while (r1 != r3);
| label_51:
0x000099e0 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x000099e2 cmp r4, 0 |
| if (r4 != 0) {
0x000099e4 bne 0x99c6 | goto label_0;
| }
0x000099e6 ldr.w r2, [pc, 0x504] | r2 = *(0x00009eec);
0x000099ea mov r6, r5 | r6 = r5;
0x000099ec ldr r0, [sp, 0x60] | r0 = var_60h;
0x000099ee ldr r3, [sp, 0x64] | r3 = var_64h;
0x000099f0 add r2, pc | r2 += pc;
0x000099f2 str r2, [sp, 0x70] | var_70h = r2;
0x000099f4 subs r1, r1, r0 | r1 -= r0;
0x000099f6 adds r3, r0, r3 | r3 = r0 + r3;
0x000099f8 ldr.w r2, [pc, 0x4f4] | r2 = *(0x00009ef0);
0x000099fc str r3, [sp, 0x54] | var_54h_2 = r3;
0x000099fe asrs r1, r1, 2 | r1 >>= 2;
0x00009a00 ldr.w r3, [pc, 0x4f0] | r3 = *(0x00009ef4);
0x00009a04 add r2, pc | r2 += pc;
0x00009a06 str r0, [sp, 0x30] | var_30h = r0;
0x00009a08 str r2, [sp, 0x6c] | var_6ch = r2;
0x00009a0a movs r2, 4 | r2 = 4;
0x00009a0c add r3, pc | r3 += pc;
0x00009a0e blx 0x23d0 | inflateReset ();
0x00009a12 str.w fp, [sp, 0x24] | __asm ("str.w fp, [var_24h]");
| label_1:
0x00009a16 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00009a18 ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x00009a1c str r3, [sp, 0x30] | var_30h = r3;
0x00009a1e ldr r3, [r2, 0x68] | r3 = *((r2 + 0x68));
0x00009a20 str r2, [sp, 0x20] | var_20h_2 = r2;
0x00009a22 cmp r3, 0 |
| if (r3 != 0) {
0x00009a24 bne.w 0x9b54 | goto label_52;
| }
0x00009a28 ldr r3, [r2, 0x78] | r3 = *((r2 + 0x78));
0x00009a2a lsls r4, r3, 0x1f | r4 = r3 << 0x1f;
| if (r4 < r3) {
0x00009a2c bmi.w 0x9ec0 | goto label_53;
| }
| label_9:
0x00009a30 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00009a32 cmp r3, 0 |
| if (r3 != 0) {
0x00009a34 bne.w 0x9baa | goto label_54;
| }
| label_10:
0x00009a38 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00009a3a ldr r3, [r2, 0x3c] | r3 = *((r2 + 0x3c));
| if (r3 != 0) {
0x00009a3c cbz r3, 0x9a44 |
0x00009a3e ldr r3, [r2, 0x2c] | r3 = *((r2 + 0x2c));
0x00009a40 lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
| if (r0 >= r3) {
0x00009a42 bpl 0x9a86 | goto label_11;
| }
| }
0x00009a44 ldr r2, [sp, 0x20] | r2 = var_20h_2;
0x00009a46 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x00009a48 ldr r3, [r2, 0x68] | r3 = *((r2 + 0x68));
0x00009a4a ldr r2, [r2, 0x70] | r2 = *((r2 + 0x70));
0x00009a4c add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00009a50 add.w ip, r2, 0x20 |
0x00009a54 add.w r3, r1, r3, lsl 3 | r3 = r1 + (r3 << 3);
| do {
0x00009a58 ldr r5, [r2] | r5 = *(r2);
0x00009a5a adds r2, 0x10 | r2 += 0x10;
0x00009a5c ldr r4, [r2, -0xc] | r4 = *((r2 - 0xc));
0x00009a60 adds r3, 0x10 | r3 += 0x10;
0x00009a62 ldr r0, [r2, -0x8] | r0 = *((r2 - 0x8));
0x00009a66 ldr r1, [r2, -0x4] | r1 = *((r2 - 0x4));
0x00009a6a cmp r2, ip |
0x00009a6c str r5, [r3, -0x10] | *((r3 - 0x10)) = r5;
0x00009a70 str r4, [r3, -0xc] | *((r3 - 0xc)) = r4;
0x00009a74 str r0, [r3, -0x8] | *((r3 - 0x8)) = r0;
0x00009a78 str r1, [r3, -0x4] | *((r3 - 0x4)) = r1;
0x00009a7c bne 0x9a58 |
| } while (r2 != ip);
0x00009a7e ldr r1, [r2] | r1 = *(r2);
0x00009a80 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00009a82 str r1, [r3] | *(r3) = r1;
0x00009a84 str r2, [r3, 4] | *((r3 + 4)) = r2;
| label_11:
0x00009a86 ldr r2, [sp, 0x20] | r2 = var_20h_2;
0x00009a88 ldr r1, [sp, 0x48] | r1 = var_48h;
0x00009a8a ldr r3, [r2, 0x74] | r3 = *((r2 + 0x74));
0x00009a8c orrs r1, r3 | r1 |= r3;
0x00009a8e bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00009a92 str r3, [r2, 0x74] | *((r2 + 0x74)) = r3;
0x00009a94 ldr r3, [sp, 0x54] | r3 = var_54h_2;
0x00009a96 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00009a98 str r1, [sp, 0x48] | var_48h = r1;
0x00009a9a cmp r3, r2 |
| if (r3 != r2) {
0x00009a9c bne 0x9a16 | goto label_1;
| }
0x00009a9e ldrd r3, r2, [sp, 0x74] | __asm ("ldrd r3, r2, [var_74h]");
0x00009aa2 ldr.w fp, [sp, 0x24] | fp = var_24h;
0x00009aa6 adds r4, r3, r2 | r4 = r3 + r2;
0x00009aa8 ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x00009aaa adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00009aae cmp r6, r4 |
0x00009ab0 str r3, [sp, 0x14] | var_14h = r3;
0x00009ab2 sbcs.w r3, r7, r3 | __asm ("sbcs.w r3, r7, r3");
0x00009ab6 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00009aba and r3, r3, 1 | r3 &= 1;
0x00009abe it ge |
| if (r6 < r4) {
0x00009ac0 movge r3, 0 | r3 = 0;
| }
0x00009ac2 cmp r3, 0 |
| if (r3 != 0) {
0x00009ac4 bne.w 0x9e5c | goto label_55;
| }
| label_27:
0x00009ac8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00009aca lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
| if (r1 >= r3) {
0x00009acc bpl.w 0x9950 | goto label_2;
| }
0x00009ad0 ldr r5, [sp, 0x64] | r5 = var_64h;
0x00009ad2 mov.w sb, 0 | sb = 0;
0x00009ad6 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00009ad8 mov r7, sb | r7 = sb;
0x00009ada ldr.w r8, [fp, 0x18] | r8 = *(arg_18h);
0x00009ade ldr.w sl, [sp, 0x5c] | sl = var_5ch;
0x00009ae2 add r5, r3 | r5 += r3;
0x00009ae4 lsls r5, r5, 3 | r5 <<= 3;
0x00009ae6 mov r6, r5 | r6 = r5;
| label_5:
0x00009ae8 adds.w r3, sb, r4 | r3 = sb + r4;
0x00009aec mov r2, r6 | r2 = r6;
0x00009aee str r3, [sp] | *(sp) = r3;
0x00009af0 mov r1, sl | r1 = sl;
0x00009af2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00009af4 mov r0, r8 | r0 = r8;
0x00009af6 adc.w r3, r3, r7 | __asm ("adc.w r3, r3, r7");
0x00009afa str r3, [sp, 4] | var_4h = r3;
0x00009afc blx 0x2340 | r0 = deflateEnd ();
0x00009b00 adds r2, r0, 1 | r2 = r0 + 1;
0x00009b02 mov r3, sb | r3 = sb;
| if (r2 == r0) {
0x00009b04 beq.w 0x9df8 | goto label_56;
| }
0x00009b08 cmp r0, 0 |
| if (r0 <= 0) {
0x00009b0a ble.w 0x9946 | goto label_3;
| }
0x00009b0e add sb, r0 | sb += r0;
0x00009b10 cmp r5, sb |
0x00009b12 mov r3, sb | r3 = sb;
| if (r5 < sb) {
0x00009b14 bls.w 0x994a | goto label_4;
| }
0x00009b16 add r7, sp, 0x64 | r7 = sp + 0x64;
0x00009b18 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00009b1a asr.w r7, sb, 0x1f | r7 = sb >> 0x1f;
0x00009b1e sub.w r6, r5, sb | r6 = r5 - sb;
0x00009b22 add.w sl, r3, sb | sl = r3 + sb;
0x00009b26 b 0x9ae8 | goto label_5;
| label_32:
0x00009b28 blx 0x2328 | r0 = memset (r0, r1, r2);
0x00009b2c ldr r3, [r0] | r3 = *(r0);
0x00009b2e cmp r3, 4 |
| if (r3 == 4) {
0x00009b30 beq.w 0x97e6 | goto label_6;
| }
| label_12:
0x00009b34 movs r0, 0x14 | r0 = 0x14;
0x00009b36 bl 0x259c | fcn_0000259c (r0);
0x00009b3a b 0x9968 | goto label_7;
| label_40:
0x00009b3c blx 0x2328 | r0 = memset (r0, r1, r2);
0x00009b40 ldr r3, [r0] | r3 = *(r0);
0x00009b42 cmp r3, 4 |
| if (r3 == 4) {
0x00009b44 beq.w 0x988e | goto label_8;
| }
| label_43:
0x00009b48 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00009b4a movs r0, 0x14 | r0 = 0x14;
0x00009b4c str r3, [sp, 0x40] | var_40h = r3;
0x00009b4e bl 0x259c | fcn_0000259c (r0);
0x00009b52 b 0x9968 | goto label_7;
| label_52:
0x00009b54 ldr r1, [sp, 0x20] | r1 = var_20h_2;
0x00009b56 ldr r4, [r1, 0x70] | r4 = *((r1 + 0x70));
0x00009b58 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00009b5a cmp r3, 8 |
| if (r3 == 8) {
0x00009b5c beq.w 0x9a30 | goto label_9;
| }
0x00009b60 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00009b62 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00009b64 ldr r2, [r0, 0x20] | r2 = *((r0 + 0x20));
0x00009b66 adds r3, r3, r2 | r3 += r2;
0x00009b68 ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x00009b6a str r3, [sp, 0x2c] | var_2ch = r3;
0x00009b6c ldr r3, [r1, 0x30] | r3 = *((r1 + 0x30));
0x00009b6e adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00009b72 str r2, [sp, 0x34] | var_34h = r2;
0x00009b74 cmp r3, 0 |
| if (r3 != 0) {
0x00009b76 bne 0x9be4 | goto label_57;
| }
0x00009b78 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00009b7a cmp r6, r3 |
0x00009b7c ldr r3, [sp, 0x34] | r3 = var_34h;
0x00009b7e sbcs.w r3, r7, r3 | __asm ("sbcs.w r3, r7, r3");
0x00009b82 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00009b84 and r3, r3, 1 | r3 &= 1;
0x00009b88 it ge |
| if (r6 < r3) {
0x00009b8a movge r3, 0 | r3 = 0;
| }
0x00009b8c cmp r3, 0 |
| if (r3 != 0) {
0x00009b8e bne.w 0x9d84 | goto label_58;
| }
| label_20:
0x00009b92 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00009b94 ldr r6, [r4, 0x14] | r6 = *((r4 + 0x14));
0x00009b96 adds r6, r6, r3 | r6 += r3;
0x00009b98 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00009b9a adc r7, r3, 0 | __asm ("adc r7, r3, 0");
0x00009b9e movs r3, 0 | r3 = 0;
0x00009ba0 str r3, [sp, 0x44] | var_44h = r3;
0x00009ba2 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00009ba4 cmp r3, 0 |
| if (r3 == 0) {
0x00009ba6 beq.w 0x9a38 | goto label_10;
| }
| label_54:
0x00009baa ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x00009bac ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x00009bae ldr r0, [r3, 0x68] | r0 = *((r3 + 0x68));
0x00009bb0 ldr r1, [r3, 0x70] | r1 = *((r3 + 0x70));
0x00009bb2 movs r3, 1 | r3 = 1;
0x00009bb4 add.w r0, r0, r0, lsl 2 | r0 += (r0 << 2);
0x00009bb8 add.w r0, r2, r0, lsl 3 | r0 = r2 + (r0 << 3);
0x00009bbc ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x00009bbe ldr r4, [r2, 0x24] | r4 = *((r2 + 0x24));
0x00009bc0 movs r2, 0x28 | r2 = 0x28;
0x00009bc2 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00009bc4 b 0x9a86 | goto label_11;
| label_33:
0x00009bc6 cmp r7, 0x34 |
| if (r7 != 0x34) {
0x00009bc8 bne 0x9b34 | goto label_12;
| }
0x00009bca ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x00009bce bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x00009bd2 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
0x00009bd6 ldr.w r3, [fp, 0x40] | r3 = *(arg_40h);
0x00009bda clz r3, r3 | r3 &= r3;
0x00009bde lsrs r3, r3, 5 | r3 >>= 5;
0x00009be0 str r3, [sp, 0x44] | var_44h = r3;
0x00009be2 b 0x9818 | goto label_13;
| label_57:
0x00009be4 add.w r3, sp, 0x10a0 | r3 += arg_10a0h;
0x00009be8 movs r4, 0 | r4 = 0;
0x00009bea adds r3, 0x1c | r3 += 0x1c;
0x00009bec mov r2, r6 | r2 = r6;
0x00009bee str r3, [sp, 0x58] | var_58h = r3;
0x00009bf0 mov r3, r7 | r3 = r7;
0x00009bf2 mov r7, r1 | r7 = r1;
0x00009bf4 b 0x9c32 |
| while (r2 < r5) {
0x00009bf6 orrs r0, r1 | r0 |= r1;
0x00009bf8 ldr r0, [sp, 0x44] | r0 = var_44h;
0x00009bfa and r0, r0, 1 | r0 &= 1;
0x00009bfe it ne |
| if (r0 == r1) {
0x00009c00 movne r0, 0 | r0 = 0;
| }
0x00009c02 cmp r0, 0 |
| if (r0 != 0) {
0x00009c04 bne 0x9cf2 | goto label_59;
| }
0x00009c06 ldr r0, [sp, 0x20] | r0 = var_20h_2;
0x00009c08 ldr r5, [sp, 0x24] | r5 = var_24h;
0x00009c0a ldr r0, [r0, 0x78] | r0 = *((r0 + 0x78));
0x00009c0c ldr r5, [r5, 0x2c] | r5 = *((r5 + 0x2c));
0x00009c0e orrs r0, r5 | r0 |= r5;
0x00009c10 ldr r5, [r7, 0x2c] | r5 = *((r7 + 0x2c));
0x00009c12 orrs r0, r5 | r0 |= r5;
0x00009c14 lsls r0, r0, 0x1f | r0 <<= 0x1f;
| if (r0 < r0) {
0x00009c16 bmi 0x9cf2 | goto label_59;
| }
0x00009c18 ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
| label_14:
0x00009c1a ldr r3, [sp, 0x14] | r3 = var_14h;
0x00009c1c bic r5, r5, 1 | r5 = BIT_MASK (r5, 1);
0x00009c20 str r5, [r7, 0x2c] | *((r7 + 0x2c)) = r5;
0x00009c22 ldr r7, [r7, 0x28] | r7 = *((r7 + 0x28));
0x00009c24 adds r2, r6, r3 | r2 = r6 + r3;
0x00009c26 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00009c28 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00009c2c cmp r7, 0 |
| if (r7 == 0) {
0x00009c2e beq.w 0x9dd8 | goto label_60;
| }
0x00009c32 ldrd r1, r0, [r7, 0x10] | __asm ("ldrd r1, r0, [r7, 0x10]");
0x00009c36 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x00009c38 ldr r6, [sp, 0x34] | r6 = var_34h;
0x00009c3a adds r5, r1, r5 | r5 = r1 + r5;
0x00009c3c adc.w r6, r0, r6 | __asm ("adc.w r6, r0, r6");
0x00009c40 cmp r2, r5 |
0x00009c42 str r5, [sp, 0x14] | var_14h = r5;
0x00009c44 sbcs.w r5, r3, r6 | __asm ("sbcs.w r5, r3, r6");
0x00009c48 str r6, [sp, 0x18] | var_18h_2 = r6;
0x00009c4a blt 0x9bf6 |
| }
| label_16:
0x00009c4c ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x00009c4e ldr r2, [sp, 0x24] | r2 = var_24h;
0x00009c50 ldr r5, [r7, 0x2c] | r5 = *((r7 + 0x2c));
0x00009c52 ldr r3, [r3, 0x78] | r3 = *((r3 + 0x78));
0x00009c54 ldr r2, [r2, 0x2c] | r2 = *((r2 + 0x2c));
0x00009c56 ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
0x00009c58 orrs r3, r2 | r3 |= r2;
0x00009c5a orrs r3, r5 | r3 |= r5;
0x00009c5c lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
| if (r2 >= r3) {
0x00009c5e bpl 0x9c1a | goto label_14;
| }
0x00009c60 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00009c62 ldr r3, [r7] | r3 = *(r7);
0x00009c64 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x00009c66 cmp r2, 0 |
| if (r2 != 0) {
0x00009c68 bne 0x9d60 | goto label_61;
| }
0x00009c6a ldr r2, [sp, 0x58] | r2 = var_58h;
0x00009c6c subs r3, r3, r2 | r3 -= r2;
0x00009c6e it ne |
| if (r3 == r3) {
0x00009c70 movne r3, 1 | r3 = 1;
| }
0x00009c72 str r3, [sp, 0x4c] | var_4ch_2 = r3;
| label_19:
0x00009c74 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00009c76 movs r4, 0 | r4 = 0;
0x00009c78 ldr.w r8, [sp, 0x1c] | r8 = var_1ch_2;
0x00009c7c mov sl, r6 | sl = r6;
0x00009c7e str r7, [sp, 0x28] | var_28h = r7;
0x00009c80 mov sb, r4 | sb = r4;
0x00009c82 ldr.w fp, [r3, 0x18] | fp = *((r3 + 0x18));
0x00009c86 mov r7, r8 | r7 = r8;
0x00009c88 mov r8, r6 | r8 = r6;
| do {
| label_15:
0x00009c8a ldr r3, [sp, 0x14] | r3 = var_14h;
0x00009c8c mov r2, sl | r2 = sl;
0x00009c8e mov r1, r7 | r1 = r7;
0x00009c90 mov r0, fp | r0 = fp;
0x00009c92 adds r3, r4, r3 | r3 = r4 + r3;
0x00009c94 str r3, [sp] | *(sp) = r3;
0x00009c96 ldr r3, [sp, 0x18] | r3 = var_18h_2;
0x00009c98 adc.w r3, r3, sb | __asm ("adc.w r3, r3, sb");
0x00009c9c str r3, [sp, 4] | var_4h = r3;
0x00009c9e blx 0x2340 | r0 = deflateEnd ();
0x00009ca2 adds r3, r0, 1 | r3 = r0 + 1;
0x00009ca4 mov r5, r0 | r5 = r0;
| if (r3 == r0) {
0x00009ca6 beq 0x9cc0 | goto label_62;
| }
0x00009ca8 cmp r0, 0 |
| if (r0 <= 0) {
0x00009caa ble 0x9d28 | goto label_63;
| }
0x00009cac add r4, r0 | r4 += r0;
0x00009cae cmp r8, r4 |
| if (r8 < r4) {
0x00009cb0 bls 0x9d22 | goto label_64;
| }
0x00009cb2 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00009cb4 asr.w sb, r4, 0x1f | sb = r4 >> 0x1f;
0x00009cb8 sub.w sl, r8, r4 | sl = r8 - r4;
0x00009cbc adds r7, r3, r4 | r7 = r3 + r4;
0x00009cbe b 0x9c8a |
| } while (1);
| label_62:
0x00009cc0 blx 0x2328 | r0 = memset (r0, r1, r2);
0x00009cc4 ldr r3, [r0] | r3 = *(r0);
0x00009cc6 cmp r3, 4 |
| if (r3 == 4) {
0x00009cc8 beq 0x9c8a | goto label_15;
| }
0x00009cca ldr r7, [sp, 0x28] | r7 = var_28h;
| do {
| label_17:
0x00009ccc ldr r2, [r7] | r2 = *(r7);
0x00009cce ldr r3, [sp, 0x4c] | r3 = var_4ch_2;
0x00009cd0 ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00009cd2 ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
0x00009cd4 cmp r2, r1 |
0x00009cd6 ite eq |
| if (r2 != r1) {
0x00009cd8 moveq r3, 0 | r3 = 0;
| }
| if (r2 == r1) {
0x00009cda andne r3, r3, 1 | r3 &= 1;
| }
0x00009cde cmp r6, r5 |
| if (r6 != r5) {
0x00009ce0 bne 0x9d32 | goto label_65;
| }
| if (r3 != 0) {
0x00009ce2 cbz r3, 0x9cec |
0x00009ce4 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x00009ce6 blx 0x21f4 | fcn_000021f4 ();
0x00009cea ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
| }
0x00009cec ldr r5, [r7, 0x2c] | r5 = *((r7 + 0x2c));
0x00009cee movs r4, 1 | r4 = 1;
0x00009cf0 b 0x9c1a | goto label_14;
| label_59:
0x00009cf2 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x00009cf4 subs r1, r1, r2 | r1 -= r2;
0x00009cf6 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00009cf8 add r1, r5 | r1 += r5;
0x00009cfa str r1, [sp] | *(sp) = r1;
0x00009cfc sub.w r1, r0, 0x40 | r1 = r0 - 0x40;
0x00009d00 str r1, [sp, 8] | var_8h_2 = r1;
0x00009d02 subs r1, r0, 4 | r1 = r0 - 4;
0x00009d04 str r1, [sp, 4] | var_4h = r1;
0x00009d06 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00009d08 ldr r0, [r1, 0x18] | r0 = *((r1 + 0x18));
0x00009d0a bl 0x8e68 | r0 = fcn_00008e68 (r0, r1, r2, r3, r4, r5);
| if (r0 != 0) {
0x00009d0e cbnz r0, 0x9d40 | goto label_21;
| }
0x00009d10 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00009d12 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00009d14 adds r3, r5, r3 | r3 = r5 + r3;
0x00009d16 str r3, [sp, 0x14] | var_14h = r3;
0x00009d18 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00009d1a adc.w r3, r2, r3 | __asm ("adc.w r3, r2, r3");
0x00009d1e str r3, [sp, 0x18] | var_18h_2 = r3;
0x00009d20 b 0x9c4c | goto label_16;
| label_64:
0x00009d22 ldr r7, [sp, 0x28] | r7 = var_28h;
0x00009d24 mov r5, r4 | r5 = r4;
0x00009d26 b 0x9ccc |
| } while (1);
| label_63:
0x00009d28 mov r5, r4 | r5 = r4;
0x00009d2a ldr r7, [sp, 0x28] | r7 = var_28h;
0x00009d2c it ne |
| if (r3 == r5) {
0x00009d2e movne r5, r0 | r5 = r0;
| }
0x00009d30 b 0x9ccc | goto label_17;
| if (r3 != 0) {
| label_65:
0x00009d32 cbz r3, 0x9d3a |
0x00009d34 mov r0, r1 | r0 = r1;
0x00009d36 blx 0x21f4 | fcn_000021f4 ();
| }
| label_24:
0x00009d3a movs r0, 0x14 | r0 = 0x14;
0x00009d3c bl 0x259c | fcn_0000259c (r0);
| label_21:
0x00009d40 ldr r0, [sp, 0x68] | r0 = var_68h;
0x00009d42 movs r3, 1 | r3 = 1;
0x00009d44 str r3, [sp, 0x40] | var_40h = r3;
0x00009d46 blx 0x21f4 | fcn_000021f4 ();
0x00009d4a ldr r0, [sp, 0x60] | r0 = var_60h;
0x00009d4c blx 0x21f4 | fcn_000021f4 ();
0x00009d50 b 0x9968 | goto label_7;
| label_44:
0x00009d52 movs r3, 1 | r3 = 1;
0x00009d54 str r3, [sp, 0x44] | var_44h = r3;
| label_36:
0x00009d56 ldr r3, [pc, 0x1a0] |
0x00009d58 movs r7, 0 | r7 = 0;
0x00009d5a add r3, pc | r3 = 0x13c58;
0x00009d5c ldr r5, [r3, 0xc] | r5 = *(0x13c64);
0x00009d5e b 0x98fe | goto label_18;
| label_61:
0x00009d60 cmp.w r6, 0x8000 |
| if (r6 > 0x8000) {
0x00009d64 bhi 0x9de0 | goto label_66;
| }
0x00009d66 ldr r5, [sp, 0x58] | r5 = var_58h;
0x00009d68 movs r3, 0 | r3 = 0;
0x00009d6a str r3, [sp, 0x4c] | var_4ch_2 = r3;
| label_23:
0x00009d6c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00009d6e mov r2, r6 | r2 = r6;
0x00009d70 ldr r0, [sp, 0x70] | r0 = var_70h;
0x00009d72 ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00009d74 ldr.w r4, [r0, r3, lsl 2] | offset_0 = r3 << 2;
| r4 = *((r0 + offset_0));
0x00009d78 movs r3, 1 | r3 = 1;
0x00009d7a mov r0, r5 | r0 = r5;
0x00009d7c blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00009d7e ldr r6, [r7, 0xc] | r6 = *((r7 + 0xc));
0x00009d80 str r5, [sp, 0x1c] | var_1ch_2 = r5;
0x00009d82 b 0x9c74 | goto label_19;
| label_58:
0x00009d84 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00009d86 mov r3, r7 | r3 = r7;
0x00009d88 sub.w r2, r1, 0x40 | r2 = r1 - 0x40;
0x00009d8c str r2, [sp, 8] | var_8h_2 = r2;
0x00009d8e subs r2, r1, 4 | r2 = r1 - 4;
0x00009d90 str r2, [sp, 4] | var_4h = r2;
0x00009d92 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00009d94 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00009d96 subs r2, r2, r6 | r2 -= r6;
0x00009d98 str r2, [sp] | *(sp) = r2;
0x00009d9a mov r2, r6 | r2 = r6;
0x00009d9c ldr r0, [r1, 0x18] | r0 = *((r1 + 0x18));
0x00009d9e bl 0x8e68 | r0 = fcn_00008e68 (r0, r1, r2, r3, r4, r5);
0x00009da2 cmp r0, 0 |
| if (r0 == 0) {
0x00009da4 beq.w 0x9b92 | goto label_20;
| }
0x00009da8 b 0x9d40 | goto label_21;
| label_38:
0x00009daa ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00009dac subs r5, r5, r2 | r5 -= r2;
0x00009dae str r5, [sp] | *(sp) = r5;
0x00009db0 sub.w r3, r1, 0x40 | r3 = r1 - 0x40;
0x00009db4 str r3, [sp, 8] | var_8h_2 = r3;
0x00009db6 subs r3, r1, 4 | r3 = r1 - 4;
0x00009db8 str r3, [sp, 4] | var_4h = r3;
0x00009dba ldr r3, [sp, 0x40] | r3 = var_40h;
0x00009dbc ldr.w r0, [fp, 0x18] | r0 = *(arg_18h);
0x00009dc0 bl 0x8e68 | r0 = fcn_00008e68 (r0, r1, r2, r3, r4, r5);
0x00009dc4 cmp r0, 0 |
| if (r0 == 0) {
0x00009dc6 beq.w 0x9862 | goto label_22;
| }
| label_45:
0x00009dca movs r3, 1 | r3 = 1;
0x00009dcc str r3, [sp, 0x40] | var_40h = r3;
0x00009dce b 0x9968 | goto label_7;
| label_35:
0x00009dd0 mov.w r3, -1 | r3 = -1;
0x00009dd4 str r3, [sp, 0x40] | var_40h = r3;
0x00009dd6 b 0x9968 | goto label_7;
| label_60:
0x00009dd8 mov r6, r2 | r6 = r2;
0x00009dda mov r7, r3 | r7 = r3;
0x00009ddc str r4, [sp, 0x44] | var_44h = r4;
0x00009dde b 0x9a30 | goto label_9;
| label_66:
0x00009de0 mov r0, r6 | r0 = r6;
0x00009de2 blx 0x22c8 | r0 = deflateInit_ ();
0x00009de6 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00009de8 cbz r0, 0x9df0 |
0x00009dea movs r3, 1 | r3 = 1;
0x00009dec str r3, [sp, 0x4c] | var_4ch_2 = r3;
0x00009dee b 0x9d6c | goto label_23;
| }
0x00009df0 movs r0, 8 | r0 = 8;
0x00009df2 bl 0x259c | fcn_0000259c (r0);
0x00009df6 b 0x9d40 | goto label_21;
| label_56:
0x00009df8 blx 0x2328 | r0 = memset (r0, r1, r2);
0x00009dfc ldr r3, [r0] | r3 = *(r0);
0x00009dfe cmp r3, 4 |
| if (r3 != 4) {
0x00009e00 bne 0x9d3a | goto label_24;
| }
0x00009e02 b 0x9ae8 | goto label_5;
| label_31:
0x00009e04 ldr r3, [pc, 0xf4] |
0x00009e06 ldr r1, [sp, 0x18] | r1 = var_18h_2;
0x00009e08 add r3, pc | r3 = 0x13d08;
0x00009e0a ldr r4, [r3, 0xc] | r4 = *(0x13d14);
0x00009e0c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00009e0e sub.w r6, r3, 0x38 | r6 = r3 - 0x38;
0x00009e12 movs r3, 1 | r3 = 1;
0x00009e14 mov r0, r6 | r0 = r6;
0x00009e16 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00009e18 b 0x97d8 | goto label_25;
| label_50:
0x00009e1a ldr r0, [sp, 0x68] | r0 = var_68h;
0x00009e1c mov.w r3, -1 | r3 = -1;
0x00009e20 str r3, [sp, 0x40] | var_40h = r3;
0x00009e22 blx 0x21f4 | fcn_000021f4 ();
0x00009e26 movs r0, 8 | r0 = 8;
0x00009e28 bl 0x259c | fcn_0000259c (r0);
0x00009e2c b 0x9968 | goto label_7;
| label_39:
0x00009e2e lsls r4, r4, 5 | r4 <<= 5;
0x00009e30 mov r0, r4 | r0 = r4;
0x00009e32 blx 0x22c8 | deflateInit_ ();
0x00009e36 str r0, [sp, 0x20] | var_20h_2 = r0;
| if (r0 == 0) {
0x00009e38 cbz r0, 0x9e80 | goto label_67;
| }
0x00009e3a ldr r3, [pc, 0xc4] |
0x00009e3c mov r2, r4 | r2 = r4;
0x00009e3e ldr.w r1, [fp, 0x40] | r1 = *(arg_40h);
0x00009e42 ldr r7, [sp, 0x20] | r7 = var_20h_2;
0x00009e44 add r3, pc | r3 = 0x13d4a;
0x00009e46 ldr r4, [r3, 0x18] | r4 = *(0x13d62);
0x00009e48 movs r3, 1 | r3 = 1;
0x00009e4a blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x00009e4c b 0x9872 | goto label_26;
| label_49:
0x00009e4e mov.w r3, -1 | r3 = -1;
0x00009e52 movs r0, 8 | r0 = 8;
0x00009e54 str r3, [sp, 0x40] | var_40h = r3;
0x00009e56 bl 0x259c | fcn_0000259c (r0);
0x00009e5a b 0x9968 | goto label_7;
| label_55:
0x00009e5c ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00009e5e mov r3, r7 | r3 = r7;
0x00009e60 sub.w r2, r1, 0x40 | r2 = r1 - 0x40;
0x00009e64 str r2, [sp, 8] | var_8h_2 = r2;
0x00009e66 subs r2, r1, 4 | r2 = r1 - 4;
0x00009e68 str r2, [sp, 4] | var_4h = r2;
0x00009e6a subs r2, r4, r6 | r2 = r4 - r6;
0x00009e6c str r2, [sp] | *(sp) = r2;
0x00009e6e mov r2, r6 | r2 = r6;
0x00009e70 ldr.w r0, [fp, 0x18] | r0 = *(arg_18h);
0x00009e74 bl 0x8e68 | r0 = fcn_00008e68 (r0, r1, r2, r3, r4, r5);
0x00009e78 cmp r0, 0 |
| if (r0 == 0) {
0x00009e7a beq.w 0x9ac8 | goto label_27;
| }
0x00009e7e b 0x9d40 | goto label_21;
| label_67:
0x00009e80 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00009e82 movs r0, 8 | r0 = 8;
0x00009e84 str r3, [sp, 0x40] | var_40h = r3;
0x00009e86 bl 0x259c | fcn_0000259c (r0);
0x00009e8a b 0x9968 | goto label_7;
| label_42:
0x00009e8c mov sl, r0 | sl = r0;
0x00009e8e b 0x98c8 | goto label_28;
| label_34:
0x00009e90 ldr r3, [pc, 0x70] |
0x00009e92 movw r2, 0x24a | r2 = 0x24a;
0x00009e96 ldr r1, [pc, 0x70] |
0x00009e98 ldr r0, [pc, 0x70] |
0x00009e9a add r3, pc | r3 = 0x13da2;
0x00009e9c add r1, pc | r1 = 0x13daa;
0x00009e9e adds r3, 0x14 | r3 += 0x14;
0x00009ea0 add r0, pc | r0 = 0x13db0;
0x00009ea2 blx 0x2424 | fchmod (r0, r1);
| label_30:
0x00009ea6 ldr r3, [pc, 0x68] |
0x00009ea8 mov.w r2, 0x228 | r2 = 0x228;
0x00009eac ldr r1, [pc, 0x64] |
0x00009eae ldr r0, [pc, 0x68] |
0x00009eb0 add r3, pc | r3 = 0x13dc6;
0x00009eb2 add r1, pc | r1 = 0x13dca;
0x00009eb4 adds r3, 0x14 | r3 += 0x14;
0x00009eb6 add r0, pc | r0 = 0x13dd4;
0x00009eb8 blx 0x2424 | r0 = fchmod (r0, r1);
| label_48:
0x00009ebc blx 0x2250 | sysconf ();
| label_53:
0x00009ec0 ldr r3, [pc, 0x58] |
0x00009ec2 movw r2, 0x2c3 | r2 = 0x2c3;
0x00009ec6 ldr r1, [pc, 0x58] |
0x00009ec8 ldr r0, [pc, 0x58] |
0x00009eca add r3, pc | r3 = 0x13dea;
0x00009ecc add r1, pc | r1 = 0x13df2;
0x00009ece adds r3, 0x14 | r3 += 0x14;
0x00009ed0 add r0, pc | r0 = 0x13df8;
0x00009ed2 blx 0x2424 | fchmod (r0, r1);
0x00009ed6 nop |
0x00009ed8 str r0, [r5, 0x74] | *((r5 + 0x74)) = r0;
0x00009eda movs r1, r0 | r1 = r0;
0x00009edc lsls r4, r7, 3 | r4 = r7 << 3;
0x00009ede movs r0, r0 |
0x00009ee0 bx r2 | return uint32_t (*r2)() ();
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libelf-0.185.so @ 0xa870).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libelf-0.185.so @ 0x5cdc */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.elf_getarsym () | void elf_getarsym (int16_t arg_0h, int16_t arg_4h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| char * base;
| int16_t var_42h;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
| if (? < ?) {
0x00005cdc strbhs pc, [ip, -0x8df] | *((ip - 0x8df)) = pc;
| }
0x00005ce0 ldr.w r3, [pc, 0x54c] |
0x00005ce4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00005ce8 sub sp, 0x54 |
0x00005cea add r2, pc | r2 += pc;
0x00005cec ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005cee ldr r3, [r3] | r3 = *(0x6230);
0x00005cf0 str r3, [sp, 0x4c] | var_4ch = r3;
0x00005cf2 mov.w r3, 0 | r3 = 0;
0x00005cf6 ldr r3, [r0, 0xc] | r3 = *(arg_0hxc);
0x00005cf8 cmp r3, 1 |
| if (r3 != 1) {
0x00005cfa bne 0x5dee | goto label_22;
| }
0x00005cfc mov r4, r0 | r4 = r0;
0x00005cfe mov r5, r1 | r5 = r1;
| if (r1 != 0) {
0x00005d00 cbz r1, 0x5d06 |
0x00005d02 ldr r3, [r0, 0x40] | r3 = *(arg_0hx40);
0x00005d04 str r3, [r1] | *(r1) = r3;
| }
0x00005d06 ldr r6, [r4, 0x3c] | r6 = *((r4 + 0x3c));
0x00005d08 adds r1, r6, 1 | r1 = r6 + 1;
| if (r1 == r6) {
0x00005d0a beq.w 0x6072 | goto label_23;
| }
0x00005d0e cbz r6, 0x5d38 |
| while (1) {
| if (r5 != 0) {
0x00005d10 cbz r5, 0x5d16 |
0x00005d12 ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x00005d14 str r3, [r5] | *(r5) = r3;
| }
| label_2:
0x00005d16 ldr.w r2, [pc, 0x51c] | r2 = *(0x00006234);
0x00005d1a ldr.w r3, [pc, 0x514] | r3 = *(0x6232);
0x00005d1e add r2, pc | r2 += pc;
0x00005d20 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005d22 ldr r2, [r3] | r2 = *(0x6232);
0x00005d24 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00005d26 eors r2, r3 | r2 ^= r3;
0x00005d28 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005d2c bne.w 0x61f0 | goto label_24;
| }
0x00005d30 mov r0, r6 | r0 = r6;
0x00005d32 add sp, 0x54 |
0x00005d34 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00005d38 ldr r3, [r4] | r3 = *(r4);
0x00005d3a mov r2, r3 | r2 = r3;
0x00005d3c str r3, [sp, 0xc] | var_ch = r3;
0x00005d3e mov.w r3, -1 | r3 = -1;
0x00005d42 str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
| if (r2 == 0) {
0x00005d44 cbz r2, 0x5d70 | goto label_25;
| }
0x00005d46 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00005d48 cmp r3, 0x43 |
| if (r3 < 0x43) {
0x00005d4a bls 0x5df8 | goto label_4;
| }
0x00005d4c ldr r7, [r4, 0x20] | r7 = *((r4 + 0x20));
0x00005d4e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00005d50 adds r7, 8 | r7 += 8;
0x00005d52 add r3, r7 | r3 += r7;
0x00005d54 mov r7, r3 | r7 = r3;
| label_8:
0x00005d56 ldrb.w r3, [r7, 0x3a] | r3 = *((r7 + 0x3a));
0x00005d5a cmp r3, 0x60 |
| if (r3 == 0x60) {
0x00005d5c beq 0x5e04 | goto label_26;
| }
| label_3:
0x00005d5e movs r3, 0 | r3 = 0;
0x00005d60 movs r0, 0xf | r0 = 0xf;
0x00005d62 str r3, [sp, 0xc] | var_ch = r3;
0x00005d64 bl 0x259c | fcn_0000259c (r0);
| label_1:
0x00005d68 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00005d6a blx 0x21f4 | fcn_000021f4 ();
0x00005d6e b 0x5d10 |
| }
| label_25:
0x00005d70 ldr.w fp, [r4, 0x18] | fp = *((r4 + 0x18));
0x00005d74 cmp.w fp, -1 |
| if (fp == -1) {
0x00005d78 beq.w 0x6218 | goto label_27;
| }
0x00005d7c ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00005d7e mov.w sb, 0x3c | sb = 0x3c;
0x00005d82 add.w r7, r4, 0x80 | r7 = r4 + 0x80;
0x00005d86 mov sl, sb | sl = sb;
0x00005d88 mov sb, r7 | sb = r7;
0x00005d8a adds r3, 8 | r3 += 8;
0x00005d8c str r3, [sp, 0x10] | var_10h = r3;
0x00005d8e ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00005d90 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00005d94 str r3, [sp, 0x14] | var_14h = r3;
0x00005d96 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00005d98 mov r8, r3 | r8 = r3;
0x00005d9a str r3, [sp, 8] | var_8h = r3;
| do {
| label_0:
0x00005d9c ldr r3, [sp, 0x10] | r3 = var_10h;
0x00005d9e mov r1, sb | r1 = sb;
0x00005da0 ldr r2, [sp, 8] | r2 = var_8h;
0x00005da2 mov r0, fp | r0 = fp;
0x00005da4 adds.w r3, r8, r3 | r3 = r8 + r3;
0x00005da8 str r3, [sp] | *(sp) = r3;
0x00005daa ldr r3, [sp, 0x14] | r3 = var_14h;
0x00005dac adc.w r3, r3, r2 | __asm ("adc.w r3, r3, r2");
0x00005db0 mov r2, sl | r2 = sl;
0x00005db2 str r3, [sp, 4] | *(arg_4h) = r3;
0x00005db4 blx 0x22a4 | r0 = fcn_000022a4 ();
0x00005db8 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x00005dba beq 0x5dda | goto label_28;
| }
0x00005dbc cmp r0, 0 |
| if (r0 <= 0) {
0x00005dbe ble 0x5de4 | goto label_9;
| }
0x00005dc0 add r8, r0 | r8 += r0;
0x00005dc2 cmp.w r8, 0x3b |
| if (r8 > 0x3b) {
0x00005dc6 bgt.w 0x5ff2 | goto label_29;
| }
0x00005dca asr.w r3, r8, 0x1f | r3 = r8 >> 0x1f;
0x00005dce rsb.w sl, r8, 0x3c | sl = 0x3c - r8;
0x00005dd2 add.w sb, r7, r8 | sb = r7 + r8;
0x00005dd6 str r3, [sp, 8] | var_8h = r3;
0x00005dd8 b 0x5d9c |
| } while (1);
| label_28:
0x00005dda blx 0x2328 | r0 = memset (r0, r1, r2);
0x00005dde ldr r3, [r0] | r3 = *(r0);
0x00005de0 cmp r3, 4 |
| if (r3 == 4) {
0x00005de2 beq 0x5d9c | goto label_0;
| }
| label_9:
0x00005de4 movs r0, 0x13 | r0 = 0x13;
0x00005de6 movs r6, 0 | r6 = 0;
0x00005de8 bl 0x259c | fcn_0000259c (r0);
0x00005dec b 0x5d68 | goto label_1;
| label_22:
0x00005dee movs r0, 0x11 | r0 = 0x11;
0x00005df0 movs r6, 0 | r6 = 0;
0x00005df2 bl 0x259c | fcn_0000259c (r0);
0x00005df6 b 0x5d16 | goto label_2;
| label_4:
0x00005df8 movs r3, 0 | r3 = 0;
0x00005dfa movs r0, 0x12 | r0 = 0x12;
0x00005dfc str r3, [sp, 0xc] | var_ch = r3;
0x00005dfe bl 0x259c | fcn_0000259c (r0);
0x00005e02 b 0x5d68 | goto label_1;
| label_26:
0x00005e04 ldrb.w r3, [r7, 0x3b] | r3 = *((r7 + 0x3b));
0x00005e08 cmp r3, 0xa |
| if (r3 != 0xa) {
0x00005e0a bne 0x5d5e | goto label_3;
| }
0x00005e0c ldr.w r1, [pc, 0x428] |
0x00005e10 movs r3, 0 | r3 = 0;
0x00005e12 movs r2, 0x10 | r2 = 0x10;
0x00005e14 mov r0, r7 | r0 = r7;
0x00005e16 str r3, [sp, 0x20] | var_20h = r3;
0x00005e18 add r1, pc | r1 = 0xc054;
0x00005e1a blx 0x2234 | r0 = fcn_00002234 ();
0x00005e1e cmp r0, 0 |
| if (r0 == 0) {
0x00005e20 beq.w 0x5ffc | goto label_30;
| }
0x00005e24 ldr.w r1, [pc, 0x414] |
0x00005e28 movs r2, 0x10 | r2 = 0x10;
0x00005e2a mov r0, r7 | r0 = r7;
0x00005e2c add r1, pc | r1 = 0xc06c;
0x00005e2e blx 0x2234 | r0 = fcn_00002234 ();
0x00005e32 cmp r0, 0 |
| if (r0 != 0) {
0x00005e34 bne 0x5df8 | goto label_4;
| }
0x00005e36 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00005e38 movs r2, 1 | r2 = 1;
0x00005e3a adds r3, 0x44 | r3 += 0x44;
0x00005e3c str r3, [sp, 8] | var_8h = r3;
0x00005e3e movs r3, 8 | r3 = 8;
0x00005e40 mov sb, r3 | sb = r3;
0x00005e42 strd r2, r3, [sp, 0x18] | __asm ("strd r2, r3, [sp, 0x18]");
| label_10:
0x00005e46 ldr r2, [r4] | r2 = *(r4);
0x00005e48 str r2, [sp, 0xc] | var_ch = r2;
0x00005e4a cmp r2, 0 |
| if (r2 == 0) {
0x00005e4c beq.w 0x600e | goto label_31;
| }
0x00005e50 ldr r1, [sp, 8] | r1 = var_8h;
0x00005e52 adds r3, r2, r1 | r3 = r2 + r1;
0x00005e54 ldr r0, [r2, r1] | r0 = *((r2 + r1));
0x00005e56 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00005e58 add r3, sp, 0x30 | r3 += var_30h;
0x00005e5a stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
| label_12:
0x00005e5c ldr r3, [sp, 0x18] | r3 = var_18h;
0x00005e5e cmp r3, 0 |
| if (r3 == 0) {
0x00005e60 beq.w 0x5fe6 | goto label_32;
| }
0x00005e64 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00005e66 rev r3, r3 | r3 = SWAP32 (r3);
0x00005e68 str r3, [sp, 0x10] | var_10h = r3;
0x00005e6a ldr r3, [sp, 0x34] | r3 = var_34h;
0x00005e6c rev.w sl, r3 | r3 = SWAP32 (sl);
| label_7:
0x00005e70 ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x00005e72 add r2, sp, 0x38 | r2 += base;
0x00005e74 ldr r1, [r7, 0x34] | r1 = *((r7 + 0x34));
0x00005e76 mov r3, r2 | r3 = r2;
0x00005e78 ldrh r7, [r7, 0x38] | r7 = *((r7 + 0x38));
0x00005e7a stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x00005e7c mov r0, r2 | r0 = r2;
0x00005e7e strh r7, [r3] | *(r3) = r7;
0x00005e80 movs r1, 0 | r1 = 0;
0x00005e82 movs r2, 0xa | r2 = 0xa;
0x00005e84 strb.w r1, [sp, 0x42] | var_42h = r1;
0x00005e88 blx 0x21cc | strtol (r0, r1, r2);
0x00005e8c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00005e8e mov fp, r0 |
0x00005e90 cmp r3, r0 |
| if (r3 <= r0) {
0x00005e92 blo 0x5df8 | goto label_4;
| }
0x00005e94 movw r2, 0x5555 |
0x00005e98 subs r3, r3, r0 | r3 -= r0;
0x00005e9a movt r2, 0x1555 | r2 = 0x15555555;
0x00005e9e cmp sl, r2 |
0x00005ea0 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00005ea2 sbcs r2, r2, 0 | __asm ("sbcs r2, r2, 0");
0x00005ea6 ite hs |
| if (sl < r2) {
0x00005ea8 movhs r7, 1 | r7 = 1;
| }
| if (sl >= r2) {
0x00005eaa movlo r7, 0 | r7 = 0;
| }
0x00005eac cmp r3, 0x43 |
0x00005eae it ls |
| if (r3 > 0x43) {
0x00005eb0 orrls r7, r7, 1 | r7 |= 1;
| }
0x00005eb4 cmp r7, 0 |
| if (r7 != 0) {
0x00005eb6 bne 0x5df8 | goto label_4;
| }
0x00005eb8 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00005eba bl 0xd2b0 | fcn_0000d2b0 (r0, r1, r2);
0x00005ebe ldr r2, [sp, 0x10] | r2 = var_10h;
0x00005ec0 cmp r0, sl |
0x00005ec2 sbcs r7, r2 | __asm ("sbcs r7, r2");
| if (r0 <= sl) {
0x00005ec4 blo 0x5df8 | goto label_4;
| }
0x00005ec6 adds.w r3, sl, 1 | r3 = sl + 1;
0x00005eca add.w r1, r3, r3, lsl 1 | r1 = r3 + (r3 << 1);
0x00005ece str r3, [sp, 0x24] | var_24h = r3;
0x00005ed0 lsls r1, r1, 2 | r1 <<= 2;
0x00005ed2 mov r0, r1 | r0 = r1;
0x00005ed4 str r1, [sp, 0xc] | var_ch = r1;
0x00005ed6 blx 0x22c8 | deflateInit_ ();
0x00005eda str r0, [sp, 0x14] | var_14h = r0;
0x00005edc str r0, [r4, 0x3c] | *((r4 + 0x3c)) = r0;
0x00005ede cmp r0, 0 |
| if (r0 == 0) {
0x00005ee0 beq.w 0x6212 | goto label_33;
| }
0x00005ee4 ldr r3, [sp, 8] | r3 = var_8h;
0x00005ee6 ldr r7, [r4] | r7 = *(r4);
0x00005ee8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00005eea add r3, sb | r3 += sb;
0x00005eec mov r8, r3 | r8 = r3;
0x00005eee ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00005ef0 mul sb, sl, r3 | sb = sl * r3;
0x00005ef4 cmp r7, 0 |
| if (r7 == 0) {
0x00005ef6 beq.w 0x60ac | goto label_34;
| }
0x00005efa add.w r3, r7, r8 | r3 = r7 + r8;
0x00005efe mov r2, r3 | r2 = r3;
0x00005f00 mov fp, r3 |
0x00005f02 rsb.w r3, sl, 0 | r3 = sl - ;
0x00005f06 ands r3, r2 | r3 &= r2;
0x00005f08 it eq |
| if (r3 != r2) {
0x00005f0a streq r3, [sp, 0xc] | var_ch = r3;
| }
| if (r3 != r2) {
0x00005f0c bne.w 0x607c | goto label_35;
| }
| label_14:
0x00005f10 add sb, r8 | sb += r8;
0x00005f12 add r7, sb | r7 += sb;
| label_17:
0x00005f14 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00005f16 orrs.w r3, sl, r3 | r3 = sl | r3;
| if (r3 == sl) {
0x00005f1a beq 0x5fbe | goto label_36;
| }
0x00005f1c str r6, [sp, 0x1c] | var_1ch = r6;
0x00005f1e mov.w r8, 0 | r8 = 0;
0x00005f22 ldr.w sb, [sp, 0x14] | sb = var_14h;
0x00005f26 mov r0, r7 | r0 = r7;
0x00005f28 ldr r6, [sp, 0x10] | r6 = var_10h;
0x00005f2a mov r7, fp | r7 = fp;
0x00005f2c str r4, [sp, 8] | var_8h = r4;
0x00005f2e ldr r4, [sp, 0x18] | r4 = var_18h;
0x00005f30 str r5, [sp, 0x18] | var_18h = r5;
0x00005f32 mov r5, r8 | r5 = r8;
| label_5:
0x00005f34 str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x00005f38 cmp r4, 0 |
| if (r4 == 0) {
0x00005f3a beq 0x5fda | goto label_37;
| }
0x00005f3c ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x00005f40 ldr.w r1, [fp] | r1 = *(fp);
0x00005f44 rev r2, r2 | r2 = SWAP32 (r2);
0x00005f46 str.w r2, [sb, 4] | __asm ("str.w r2, [sb, 4]");
0x00005f4a cmp r1, 0 |
| if (r1 != 0) {
0x00005f4c bne.w 0x6096 | goto label_38;
| }
| label_6:
0x00005f50 ldrb r2, [r0] | r2 = *(r0);
| if (r2 == 0) {
0x00005f52 cbz r2, 0x5f94 | goto label_39;
| }
0x00005f54 ldrb r1, [r0, 1] | r1 = *((r0 + 1));
| if (r1 == 0) {
0x00005f56 cbz r1, 0x5f94 | goto label_39;
| }
0x00005f58 add.w r2, r1, r2, lsl 4 | r2 = r1 + (r2 << 4);
0x00005f5c ldrb r1, [r0, 2] | r1 = *((r0 + 2));
| if (r1 == 0) {
0x00005f5e cbz r1, 0x5f94 | goto label_39;
| }
0x00005f60 add.w r2, r1, r2, lsl 4 | r2 = r1 + (r2 << 4);
0x00005f64 ldrb r1, [r0, 3] | r1 = *((r0 + 3));
| if (r1 == 0) {
0x00005f66 cbz r1, 0x5f94 | goto label_39;
| }
0x00005f68 add.w r2, r1, r2, lsl 4 | r2 = r1 + (r2 << 4);
0x00005f6c ldrb r1, [r0, 4] | r1 = *((r0 + 4));
| if (r1 == 0) {
0x00005f6e cbz r1, 0x5f94 | goto label_39;
| }
0x00005f70 ldrb r3, [r0, 5] | r3 = *((r0 + 5));
0x00005f72 add.w r2, r1, r2, lsl 4 | r2 = r1 + (r2 << 4);
0x00005f76 add.w lr, r0, 5 | lr = r0 + 5;
| if (r3 == 0) {
0x00005f7a cbz r3, 0x5f90 | goto label_40;
| }
| do {
0x00005f7c add.w r2, r3, r2, lsl 4 | r2 = r3 + (r2 << 4);
0x00005f80 ldrb r3, [lr, 1]! | r3 = *((lr += 1));
0x00005f84 lsrs r1, r2, 0x18 | r1 = r2 >> 0x18;
0x00005f86 and r1, r1, 0xf0 | r1 &= 0xf0;
0x00005f8a eors r2, r1 | r2 ^= r1;
0x00005f8c cmp r3, 0 |
0x00005f8e bne 0x5f7c |
| } while (r3 != 0);
| label_40:
0x00005f90 bic r2, r2, 0xf0000000 | r2 = BIT_MASK (r2, 0xf0000000);
| label_39:
0x00005f94 str.w r2, [sb, 8] | __asm ("str.w r2, [sb, 8]");
0x00005f98 movs r1, 0 | r1 = 0;
0x00005f9a blx 0x2274 | deflate ();
0x00005f9e adds.w r8, r8, 1 | r8++;
0x00005fa2 add.w sb, sb, 0xc | sb += 0xc;
0x00005fa6 adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x00005faa add.w fp, fp, 8 |
0x00005fae cmp r6, r5 |
0x00005fb0 it eq |
| if (r6 == r5) {
0x00005fb2 cmpeq sl, r8 | __asm ("cmpeq sl, r8");
| }
0x00005fb4 add.w r0, r0, 1 | r0++;
| if (r6 != r5) {
0x00005fb8 bne 0x5f34 | goto label_5;
| }
0x00005fba ldr r4, [sp, 8] | r4 = var_8h;
0x00005fbc ldr r5, [sp, 0x18] | r5 = var_18h;
| label_36:
0x00005fbe add.w r3, sl, sl, lsl 1 | r3 = sl + (sl << 1);
0x00005fc2 ldr r6, [sp, 0x14] | r6 = var_14h;
0x00005fc4 movs r2, 0 | r2 = 0;
0x00005fc6 lsls r3, r3, 2 | r3 <<= 2;
0x00005fc8 str r2, [r6, r3] | *((r6 + r3)) = r2;
0x00005fca add r3, r6 | r3 += r6;
0x00005fcc str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00005fce mov.w r2, -1 | r2 = -1;
0x00005fd2 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00005fd4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00005fd6 str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
0x00005fd8 b 0x5d68 | goto label_1;
| label_37:
0x00005fda ldr.w r2, [r7, r8, lsl 2] | offset_0 = r8 << 2;
| r2 = *((r7 + offset_0));
0x00005fde rev r2, r2 | r2 = SWAP32 (r2);
0x00005fe0 str.w r2, [sb, 4] | __asm ("str.w r2, [sb, 4]");
0x00005fe4 b 0x5f50 | goto label_6;
| label_32:
0x00005fe6 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00005fe8 rev.w sl, r3 | r3 = SWAP32 (sl);
0x00005fec ldr r3, [sp, 0x18] | r3 = var_18h;
0x00005fee str r3, [sp, 0x10] | var_10h = r3;
0x00005ff0 b 0x5e70 | goto label_7;
| label_29:
0x00005ff2 cmp.w r8, 0x3c |
| if (r8 == 0x3c) {
0x00005ff6 beq.w 0x5d56 | goto label_8;
| }
0x00005ffa b 0x5de4 | goto label_9;
| label_30:
0x00005ffc ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00005ffe ldr r2, [sp, 0x20] | r2 = var_20h;
0x00006000 adds r3, 0x44 | r3 += 0x44;
0x00006002 str r3, [sp, 8] | var_8h = r3;
0x00006004 movs r3, 4 | r3 = 4;
0x00006006 mov sb, r3 | sb = r3;
0x00006008 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000600a str r2, [sp, 0x18] | var_18h = r2;
0x0000600c b 0x5e46 | goto label_10;
| label_31:
0x0000600e ldr.w sl, [sp, 0xc] | sl = var_ch;
0x00006012 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00006014 mov r8, sl | r8 = sl;
0x00006016 mov fp, sl |
0x00006018 mov sl, sb | sl = sb;
0x0000601a str r3, [sp, 0x10] | var_10h = r3;
0x0000601c add r3, sp, 0x30 | r3 += var_30h;
0x0000601e str r3, [sp, 0x14] | var_14h = r3;
| do {
| label_11:
0x00006020 ldr r3, [sp, 8] | r3 = var_8h;
0x00006022 mov r2, sl | r2 = sl;
0x00006024 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00006026 adds.w r3, r8, r3 | r3 = r8 + r3;
0x0000602a str r3, [sp] | *(sp) = r3;
0x0000602c adc r3, fp, 0 | __asm ("adc r3, arg_0h");
0x00006030 str r3, [sp, 4] | *(arg_4h) = r3;
0x00006032 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00006034 add.w r1, r3, r8 | r1 = r3 + r8;
0x00006038 blx 0x22a4 | r0 = fcn_000022a4 ();
0x0000603c adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0000603e beq 0x6054 | goto label_41;
| }
0x00006040 cmp r0, 0 |
| if (r0 <= 0) {
0x00006042 ble 0x6068 | goto label_42;
| }
0x00006044 add r8, r0 | r8 += r0;
0x00006046 cmp sb, r8 |
| if (sb < r8) {
0x00006048 bls 0x606a | goto label_43;
| }
0x0000604a asr.w fp, r8, 0x1f |
0x0000604e sub.w sl, sb, r8 | sl = sb - r8;
0x00006052 b 0x6020 |
| } while (1);
| label_41:
0x00006054 blx 0x2328 | r0 = memset (r0, r1, r2);
0x00006058 ldr r3, [r0] | r3 = *(r0);
0x0000605a cmp r3, 4 |
| if (r3 == 4) {
0x0000605c beq 0x6020 | goto label_11;
| }
| do {
| label_13:
0x0000605e movs r0, 0x12 | r0 = 0x12;
0x00006060 movs r6, 0 | r6 = 0;
0x00006062 bl 0x259c | fcn_0000259c (r0);
0x00006066 b 0x5d68 | goto label_1;
| label_42:
0x00006068 bne 0x605e |
| } while (r6 != 0);
| label_43:
0x0000606a cmp sb, r8 |
| if (sb == r8) {
0x0000606c beq.w 0x5e5c | goto label_12;
| }
0x00006070 b 0x605e | goto label_13;
| label_23:
0x00006072 movs r0, 0x12 | r0 = 0x12;
0x00006074 movs r6, 0 | r6 = 0;
0x00006076 bl 0x259c | fcn_0000259c (r0);
0x0000607a b 0x5d16 | goto label_2;
| label_35:
0x0000607c mov r0, sb | r0 = sb;
0x0000607e blx 0x22c8 | deflateInit_ ();
0x00006082 str r0, [sp, 0xc] | var_ch = r0;
0x00006084 cmp r0, 0 |
| if (r0 == 0) {
0x00006086 beq.w 0x61d8 | goto label_44;
| }
0x0000608a mov r1, fp | r1 = fp;
0x0000608c mov r2, sb | r2 = sb;
0x0000608e blx 0x2210 | r0 = fcn_00002210 ();
0x00006092 mov fp, r0 |
0x00006094 b 0x5f10 | goto label_14;
| label_38:
0x00006096 ldr r4, [sp, 8] | r4 = var_8h;
0x00006098 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x0000609a ldr r5, [sp, 0x18] | r5 = var_18h;
0x0000609c ldr r7, [r4] | r7 = *(r4);
0x0000609e cmp r7, 0 |
| if (r7 == 0) {
0x000060a0 beq.w 0x61ce | goto label_45;
| }
| label_19:
0x000060a4 movs r0, 0xe | r0 = 0xe;
0x000060a6 bl 0x259c | fcn_0000259c (r0);
0x000060aa b 0x5d68 | goto label_1;
| label_34:
0x000060ac mov r0, sb | r0 = sb;
0x000060ae str r1, [sp, 8] | var_8h = r1;
0x000060b0 blx 0x22c8 | deflateInit_ ();
0x000060b4 ldr r1, [sp, 8] | r1 = var_8h;
0x000060b6 str r0, [sp, 0xc] | var_ch = r0;
0x000060b8 cmp r0, 0 |
| if (r0 == 0) {
0x000060ba beq.w 0x61d8 | goto label_44;
| }
0x000060be sub.w r3, fp, sb | r3 = fp - sb;
0x000060c2 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000060c4 add r1, r3 | r1 += r3;
0x000060c6 str r3, [sp, 0x1c] | var_1ch = r3;
0x000060c8 blx 0x2268 | rawmemchr ();
0x000060cc str r0, [sp, 0x2c] | var_2ch = r0;
0x000060ce cmp r0, 0 |
| if (r0 == 0) {
0x000060d0 beq.w 0x61fe | goto label_46;
| }
0x000060d4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000060d6 mov r2, sb | r2 = sb;
0x000060d8 ldr.w fp, [sp, 0xc] | fp = var_ch;
0x000060dc str r6, [sp, 0x28] | var_28h = r6;
0x000060de mov r6, sb | r6 = sb;
0x000060e0 str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x000060e2 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000060e4 mov sb, fp | sb = fp;
0x000060e6 mov fp, sl |
0x000060e8 mov sl, r2 | sl = r2;
0x000060ea str r7, [sp, 8] | var_8h = r7;
0x000060ec str r3, [sp, 0x14] | var_14h = r3;
| do {
| label_15:
0x000060ee ldr r3, [sp, 8] | r3 = var_8h;
0x000060f0 adds.w r0, r7, r8 | r0 = r7 + r8;
0x000060f4 str r0, [sp] | *(sp) = r0;
0x000060f6 mov r1, sb | r1 = sb;
0x000060f8 mov r2, sl | r2 = sl;
0x000060fa adc r0, r3, 0 | __asm ("adc r0, r3, 0");
0x000060fe str r0, [sp, 4] | *(arg_4h) = r0;
0x00006100 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00006102 blx 0x22a4 | r0 = fcn_000022a4 ();
0x00006106 adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x00006108 beq 0x6124 | goto label_47;
| }
0x0000610a cmp r0, 0 |
| if (r0 <= 0) {
0x0000610c ble 0x61e4 | goto label_48;
| }
0x0000610e add r7, r0 | r7 += r0;
0x00006110 cmp r6, r7 |
| if (r6 < r7) {
0x00006112 bls 0x6140 | goto label_49;
| }
0x00006114 asrs r3, r7, 0x1f | r3 = r7 >> 0x1f;
0x00006116 sub.w sl, r6, r7 | sl = r6 - r7;
0x0000611a str r3, [sp, 8] | var_8h = r3;
0x0000611c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000611e add.w sb, r3, r7 | sb = r3 + r7;
0x00006122 b 0x60ee |
| } while (1);
| label_47:
0x00006124 blx 0x2328 | r0 = memset (r0, r1, r2);
0x00006128 ldr r0, [r0] | r0 = *(r0);
0x0000612a cmp r0, 4 |
| if (r0 == 4) {
0x0000612c beq 0x60ee | goto label_15;
| }
| do {
0x0000612e ldr r0, [r4, 0x3c] | r0 = *((r4 + 0x3c));
| label_18:
0x00006130 movs r6, 0 | r6 = 0;
0x00006132 blx 0x21f4 | fcn_000021f4 ();
0x00006136 movs r0, 0x12 | r0 = 0x12;
0x00006138 str r6, [r4, 0x3c] | *((r4 + 0x3c)) = r6;
0x0000613a bl 0x259c | fcn_0000259c (r0);
0x0000613e b 0x5d68 | goto label_1;
| label_49:
0x00006140 mov sb, r6 | sb = r6;
0x00006142 ldr r6, [sp, 0x28] | r6 = var_28h;
0x00006144 mov sl, fp | sl = fp;
| label_20:
0x00006146 cmp sb, r7 |
0x00006148 bne 0x612e |
| } while (sb != r7);
0x0000614a add.w r3, sb, r8 | r3 = sb + r8;
0x0000614e ldr.w r8, [sp, 0x1c] | r8 = var_1ch;
0x00006152 str r3, [sp, 0x28] | var_28h = r3;
0x00006154 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00006156 ldr.w sb, [sp, 0x20] | sb = var_20h;
0x0000615a add.w r7, r3, r3, lsl 1 | r7 = r3 + (r3 << 1);
0x0000615e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00006160 add.w r7, r3, r7, lsl 2 | r7 = r3 + (r7 << 2);
0x00006164 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00006166 mov fp, r7 |
0x00006168 str r3, [sp, 0x14] | var_14h = r3;
0x0000616a movs r3, 0 | r3 = 0;
0x0000616c str r3, [sp, 8] | var_8h = r3;
| do {
| label_16:
0x0000616e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00006170 mov r2, r8 | r2 = r8;
0x00006172 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00006174 mov r1, fp | r1 = fp;
0x00006176 adds.w r3, sb, r3 | r3 = sb + r3;
0x0000617a str r3, [sp] | *(sp) = r3;
0x0000617c ldr r3, [sp, 8] | r3 = var_8h;
0x0000617e adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00006182 str r3, [sp, 4] | *(arg_4h) = r3;
0x00006184 blx 0x22a4 | r0 = fcn_000022a4 ();
0x00006188 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x0000618a beq 0x61a8 | goto label_50;
| }
0x0000618c cmp r0, 0 |
| if (r0 <= 0) {
0x0000618e ble 0x61f4 | goto label_51;
| }
0x00006190 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00006192 add sb, r0 | sb += r0;
0x00006194 cmp r3, sb |
| if (r3 < sb) {
0x00006196 bls 0x61b8 | goto label_21;
| }
0x00006198 asr.w r2, sb, 0x1f | r2 = sb >> 0x1f;
0x0000619c sub.w r8, r3, sb | r8 = r3 - sb;
0x000061a0 add.w fp, r7, sb |
0x000061a4 str r2, [sp, 8] | var_8h = r2;
0x000061a6 b 0x616e |
| } while (1);
| label_50:
0x000061a8 str r0, [sp, 0x20] | var_20h = r0;
0x000061aa blx 0x2328 | r0 = memset (r0, r1, r2);
0x000061ae ldr r0, [r0] | r0 = *(r0);
0x000061b0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000061b2 cmp r0, 4 |
| if (r0 == 4) {
0x000061b4 beq 0x616e | goto label_16;
| }
0x000061b6 mov sb, r3 | sb = r3;
| label_21:
0x000061b8 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
0x000061ba mov r0, r3 | r0 = r3;
0x000061bc str r3, [sp, 0x14] | var_14h = r3;
0x000061be ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000061c0 cmp r3, sb |
0x000061c2 itt eq |
| if (r3 != sb) {
0x000061c4 ldreq r3, [sp, 0xc] | r3 = var_ch;
| }
| if (r3 == sb) {
0x000061c6 moveq fp, r3 | goto label_52;
| }
| if (r3 == sb) {
| label_52:
0x000061c8 beq.w 0x5f14 | goto label_17;
| }
0x000061cc b 0x6130 | goto label_18;
| label_45:
0x000061ce ldr r0, [sp, 0x14] | r0 = var_14h;
0x000061d0 blx 0x21f4 | fcn_000021f4 ();
0x000061d4 str r7, [r4, 0x3c] | *((r4 + 0x3c)) = r7;
0x000061d6 b 0x60a4 | goto label_19;
| label_44:
0x000061d8 movs r3, 0 | r3 = 0;
0x000061da movs r0, 8 | r0 = 8;
0x000061dc str r3, [sp, 0xc] | var_ch = r3;
0x000061de bl 0x259c | fcn_0000259c (r0);
0x000061e2 b 0x5d68 | goto label_1;
| label_48:
0x000061e4 mov sb, r6 | sb = r6;
0x000061e6 mov sl, fp | sl = fp;
0x000061e8 ldr r6, [sp, 0x28] | r6 = var_28h;
| if (r0 == 8) {
0x000061ea beq 0x6146 | goto label_20;
| }
0x000061ec mov r7, r0 | r7 = r0;
0x000061ee b 0x6146 | goto label_20;
| label_24:
0x000061f0 blx 0x2250 | sysconf ();
| label_51:
0x000061f4 mov r2, sb | r2 = sb;
0x000061f6 mov sb, r0 | sb = r0;
| if (r0 != 8) {
0x000061f8 bne 0x61b8 | goto label_21;
| }
0x000061fa mov sb, r2 | sb = r2;
0x000061fc b 0x61b8 | goto label_21;
| label_46:
0x000061fe ldr r0, [sp, 0x14] | r0 = var_14h;
0x00006200 blx 0x21f4 | fcn_000021f4 ();
0x00006204 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00006206 movs r0, 8 | r0 = 8;
0x00006208 str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x0000620a mov r6, r3 | r6 = r3;
0x0000620c bl 0x259c | fcn_0000259c (r0);
0x00006210 b 0x5d68 | goto label_1;
| label_33:
0x00006212 ldr r6, [sp, 0x14] | r6 = var_14h;
0x00006214 str r6, [sp, 0xc] | var_ch = r6;
0x00006216 b 0x5d68 | goto label_1;
| label_27:
0x00006218 ldr r3, [pc, 0x24] |
0x0000621a movs r2, 0x72 | r2 = 0x72;
0x0000621c ldr r1, [pc, 0x24] |
0x0000621e ldr r0, [pc, 0x28] |
0x00006220 add r3, pc | r3 = 0xc464;
0x00006222 add r1, pc | r1 = 0xc46a;
0x00006224 add r0, pc | r0 = 0xc472;
0x00006226 blx 0x2424 | fchmod (r0, r1);
0x0000622a nop |
0x0000622c adr r2, 0x28 | r2 = 0x28;
0x0000622e movs r1, r0 | r1 = r0;
0x00006230 lsls r4, r7, 3 | r4 = r7 << 3;
0x00006232 movs r0, r0 |
0x00006234 adr r1, 0x358 | r1 = 0x358;
0x00006236 movs r1, r0 | r1 = r0;
0x00006238 ldrb r0, [r0, 0x1f] | r0 = *((r0 + 0x1f));
0x0000623a movs r0, r0 |
0x0000623c ldrb r4, [r0, 0x1f] | r4 = *((r0 + 0x1f));
0x0000623e movs r0, r0 |
0x00006240 ldrb r0, [r5, 0x1b] | r0 = *((r5 + 0x1b));
0x00006242 movs r0, r0 |
0x00006244 ldrb r6, [r4, 0x1a] | r6 = *((r4 + 0x1a));
0x00006246 movs r0, r0 |
0x00006248 ldrb r0, [r2, 0x1b] | r0 = *((r2 + 0x1b));
0x0000624a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libelf-0.185.so @ 0xc058 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) sym.elf_getshstrndx () | void elf_getshstrndx (uint32_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h_3;
| int16_t var_8h_3;
| int16_t var_20h;
| int16_t var_30h;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
0x0000c058 blmi 0x1c1ea1c | __asm ("blmi 0x1c1ea1c");
0x0000c05c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000c060 sub sp, 0x54 |
0x0000c062 add r2, pc | r2 += pc;
0x0000c064 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000c066 ldr r3, [r3] | r3 = *(r3);
0x0000c068 str r3, [sp, 0x4c] | var_4ch = r3;
0x0000c06a mov.w r3, 0 | r3 = 0;
0x0000c06e cmp r0, 0 |
| if (r0 == 0) {
0x0000c070 beq 0xc16e | goto label_6;
| }
0x0000c072 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0000c074 mov r4, r0 | r4 = r0;
0x0000c076 cmp r3, 3 |
| if (r3 != 3) {
0x0000c078 bne 0xc0de | goto label_10;
| }
0x0000c07a ldr r3, [r0, 0x38] | r3 = *((r0 + 0x38));
0x0000c07c cmp r3, 0 |
| if (r3 == 0) {
0x0000c07e beq 0xc0ea | goto label_11;
| }
0x0000c080 ldr r2, [r0, 0x14] | r2 = *((r0 + 0x14));
0x0000c082 mov r5, r1 | r5 = r1;
0x0000c084 cmp r2, 1 |
| if (r2 == 1) {
0x0000c086 beq 0xc0b2 | goto label_12;
| }
0x0000c088 ldrh r2, [r3, 0x3e] | r2 = *((r3 + 0x3e));
0x0000c08a movw r1, 0xffff | r1 = 0xffff;
0x0000c08e cmp r2, r1 |
| if (r2 == r1) {
0x0000c090 beq 0xc0ce | goto label_13;
| }
| do {
| label_0:
0x0000c092 movs r0, 0 | r0 = 0;
0x0000c094 str r2, [r5] | *(r5) = r2;
| label_1:
0x0000c096 ldr r2, [pc, 0x188] |
0x0000c098 ldr r3, [pc, 0x180] | r3 = *(0xc21c);
0x0000c09a add r2, pc | r2 = 0x182c0;
0x0000c09c ldr r3, [r2, r3] | r3 = *(0x182c0);
0x0000c09e ldr r2, [r3] | r2 = *(0x182c0);
0x0000c0a0 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0000c0a2 eors r2, r3 | r2 ^= r3;
0x0000c0a4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000c0a8 bne.w 0xc212 | goto label_14;
| }
0x0000c0ac add sp, 0x54 |
0x0000c0ae pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x0000c0b2 ldrh r2, [r3, 0x32] | r2 = *((r3 + 0x32));
0x0000c0b4 movw r1, 0xffff | r1 = 0xffff;
0x0000c0b8 cmp r2, r1 |
0x0000c0ba bne 0xc092 |
| } while (r2 != r1);
0x0000c0bc ldr.w r2, [r0, 0xa8] | r2 = *((r0 + 0xa8));
| if (r2 == 0) {
0x0000c0c0 cbz r2, 0xc108 | goto label_9;
| }
0x0000c0c2 ldr.w r2, [r0, 0x128] | r2 = *((r0 + 0x128));
0x0000c0c6 cmp r2, 0 |
| if (r2 == 0) {
0x0000c0c8 beq 0xc174 | goto label_15;
| }
| label_8:
0x0000c0ca ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
0x0000c0cc b 0xc092 | goto label_0;
| label_13:
0x0000c0ce ldr.w r2, [r0, 0xa8] | r2 = *((r0 + 0xa8));
| if (r2 == 0) {
0x0000c0d2 cbz r2, 0xc108 | goto label_9;
| }
0x0000c0d4 ldr.w r2, [r0, 0x128] | r2 = *((r0 + 0x128));
| if (r2 == 0) {
0x0000c0d8 cbz r2, 0xc114 | goto label_16;
| }
| do {
0x0000c0da ldr r2, [r2, 0x28] | r2 = *((r2 + 0x28));
0x0000c0dc b 0xc092 | goto label_0;
| label_10:
0x0000c0de movs r0, 4 | r0 = 4;
0x0000c0e0 bl 0x259c | fcn_0000259c (r0);
0x0000c0e4 mov.w r0, -1 | r0 = -1;
0x0000c0e8 b 0xc096 | goto label_1;
| label_11:
0x0000c0ea movs r0, 0x1a | r0 = 0x1a;
0x0000c0ec bl 0x259c | fcn_0000259c (r0);
0x0000c0f0 mov.w r0, -1 | r0 = -1;
0x0000c0f4 b 0xc096 | goto label_1;
| label_2:
0x0000c0f6 ldr r3, [r0, 0x20] | r3 = *((r0 + 0x20));
0x0000c0f8 add r3, r7 | r3 += r7;
0x0000c0fa add r2, r3 | r2 += r3;
0x0000c0fc lsls r1, r2, 0x1d | r1 = r2 << 0x1d;
| if (r1 != r2) {
0x0000c0fe bne 0xc120 | goto label_17;
| }
0x0000c100 ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x0000c102 subs r3, r3, r7 | r3 -= r7;
0x0000c104 cmp r3, 0x3f |
0x0000c106 bhi 0xc0da |
| } while (r3 > 0x3f);
| label_9:
0x0000c108 movs r0, 0x20 | r0 = 0x20;
0x0000c10a bl 0x259c | fcn_0000259c (r0);
0x0000c10e mov.w r0, -1 | r0 = -1;
0x0000c112 b 0xc096 | goto label_1;
| label_16:
0x0000c114 ldr r2, [r0] | r2 = *(r0);
0x0000c116 ldr r7, [r3, 0x28] | r7 = *((r3 + 0x28));
| if (r2 == 0) {
0x0000c118 cbz r2, 0xc120 | goto label_17;
| }
0x0000c11a ldrb r3, [r3, 5] | r3 = *((r3 + 5));
0x0000c11c cmp r3, 1 |
| if (r3 == 1) {
0x0000c11e beq 0xc0f6 | goto label_2;
| }
| label_17:
0x0000c120 ldr.w sl, [r4, 0x18] | sl = *((r4 + 0x18));
0x0000c124 movs r6, 0 | r6 = 0;
0x0000c126 add.w sb, sp, 8 | sb += var_8h_3;
0x0000c12a mov.w fp, 0x40 |
0x0000c12e mov r8, r6 | r8 = r6;
| do {
| label_3:
0x0000c130 adds r3, r6, r7 | r3 = r6 + r7;
0x0000c132 mov r2, fp | r2 = fp;
0x0000c134 str r3, [sp] | *(sp) = r3;
0x0000c136 adc r3, r8, 0 | __asm ("adc r3, r8, 0");
0x0000c13a str r3, [sp, 4] | var_4h_3 = r3;
0x0000c13c add.w r1, sb, r6 | r1 = sb + r6;
0x0000c140 mov r0, sl | r0 = sl;
0x0000c142 blx 0x22a4 | r0 = fcn_000022a4 ();
0x0000c146 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0000c148 beq 0xc15e | goto label_18;
| }
0x0000c14a cmp r0, 0 |
| if (r0 <= 0) {
0x0000c14c ble 0xc1de | goto label_19;
| }
0x0000c14e add r6, r0 | r6 += r0;
0x0000c150 cmp r6, 0x3f |
| if (r6 > 0x3f) {
0x0000c152 bgt 0xc1ca | goto label_20;
| }
0x0000c154 asr.w r8, r6, 0x1f | r8 = r6 >> 0x1f;
0x0000c158 rsb.w fp, r6, 0x40 |
0x0000c15c b 0xc130 |
| } while (1);
| label_18:
0x0000c15e blx 0x2328 | r0 = memset (r0, r1, r2);
0x0000c162 ldr r3, [r0] | r3 = *(r0);
0x0000c164 cmp r3, 4 |
| if (r3 == 4) {
0x0000c166 beq 0xc130 | goto label_3;
| }
| label_4:
0x0000c168 movs r0, 9 | r0 = 9;
0x0000c16a bl 0x259c | fcn_0000259c (r0);
| label_6:
0x0000c16e mov.w r0, -1 | r0 = -1;
0x0000c172 b 0xc096 | goto label_1;
| label_15:
0x0000c174 ldr r2, [r0] | r2 = *(r0);
0x0000c176 ldr r7, [r3, 0x20] | r7 = *((r3 + 0x20));
| if (r2 != 0) {
0x0000c178 cbz r2, 0xc180 |
0x0000c17a ldrb r3, [r3, 5] | r3 = *((r3 + 5));
0x0000c17c cmp r3, 1 |
| if (r3 == 1) {
0x0000c17e beq 0xc1fc | goto label_21;
| }
| }
| label_7:
0x0000c180 ldr.w sl, [r4, 0x18] | sl = *((r4 + 0x18));
0x0000c184 movs r6, 0 | r6 = 0;
0x0000c186 mov.w fp, 0x28 |
0x0000c18a add.w sb, sp, 8 | sb += var_8h_3;
0x0000c18e mov r8, r6 | r8 = r6;
| do {
| label_5:
0x0000c190 adds r3, r6, r7 | r3 = r6 + r7;
0x0000c192 mov r2, fp | r2 = fp;
0x0000c194 str r3, [sp] | *(sp) = r3;
0x0000c196 adc r3, r8, 0 | __asm ("adc r3, r8, 0");
0x0000c19a str r3, [sp, 4] | var_4h_3 = r3;
0x0000c19c add.w r1, sb, r6 | r1 = sb + r6;
0x0000c1a0 mov r0, sl | r0 = sl;
0x0000c1a2 blx 0x22a4 | r0 = fcn_000022a4 ();
0x0000c1a6 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0000c1a8 beq 0xc1be | goto label_22;
| }
0x0000c1aa cmp r0, 0 |
| if (r0 <= 0) {
0x0000c1ac ble 0xc1de | goto label_19;
| }
0x0000c1ae add r6, r0 | r6 += r0;
0x0000c1b0 cmp r6, 0x27 |
| if (r6 > 0x27) {
0x0000c1b2 bgt 0xc1e8 | goto label_23;
| }
0x0000c1b4 asr.w r8, r6, 0x1f | r8 = r6 >> 0x1f;
0x0000c1b8 rsb.w fp, r6, 0x28 |
0x0000c1bc b 0xc190 |
| } while (1);
| label_22:
0x0000c1be blx 0x2328 | r0 = memset (r0, r1, r2);
0x0000c1c2 ldr r3, [r0] | r3 = *(r0);
0x0000c1c4 cmp r3, 4 |
| if (r3 != 4) {
0x0000c1c6 bne 0xc168 | goto label_4;
| }
0x0000c1c8 b 0xc190 | goto label_5;
| label_20:
0x0000c1ca cmp r6, 0x40 |
| if (r6 != 0x40) {
0x0000c1cc bne 0xc1e0 | goto label_24;
| }
0x0000c1ce ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0000c1d0 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0000c1d2 ldrb r3, [r3, 5] | r3 = *((r3 + 5));
0x0000c1d4 cmp r3, 1 |
| if (r3 == 1) {
0x0000c1d6 beq.w 0xc092 | goto label_0;
| }
0x0000c1da rev r2, r2 | r2 = SWAP32 (r2);
0x0000c1dc b 0xc092 | goto label_0;
| if (r3 != 1) {
| label_19:
0x0000c1de bne 0xc168 | goto label_4;
| }
| do {
| label_24:
0x0000c1e0 movs r0, 0xa | r0 = 0xa;
0x0000c1e2 bl 0x259c | fcn_0000259c (r0);
0x0000c1e6 b 0xc16e | goto label_6;
| label_23:
0x0000c1e8 cmp r6, 0x28 |
0x0000c1ea bne 0xc1e0 |
| } while (r6 != 0x28);
0x0000c1ec ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0000c1ee ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000c1f0 ldrb r3, [r3, 5] | r3 = *((r3 + 5));
0x0000c1f2 cmp r3, 1 |
| if (r3 == 1) {
0x0000c1f4 beq.w 0xc092 | goto label_0;
| }
0x0000c1f8 rev r2, r2 | r2 = SWAP32 (r2);
0x0000c1fa b 0xc092 | goto label_0;
| label_21:
0x0000c1fc ldr r3, [r0, 0x20] | r3 = *((r0 + 0x20));
0x0000c1fe add r3, r7 | r3 += r7;
0x0000c200 add r2, r3 | r2 += r3;
0x0000c202 lsls r1, r2, 0x1e | r1 = r2 << 0x1e;
| if (r1 != r2) {
0x0000c204 bne 0xc180 | goto label_7;
| }
0x0000c206 ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x0000c208 subs r3, r3, r7 | r3 -= r7;
0x0000c20a cmp r3, 0x27 |
| if (r3 > 0x27) {
0x0000c20c bhi.w 0xc0ca | goto label_8;
| }
0x0000c210 b 0xc108 | goto label_9;
| label_14:
0x0000c212 blx 0x2250 | sysconf ();
0x0000c216 nop |
0x0000c218 subs r6, 0x92 | r6 -= 0x92;
0x0000c21a movs r1, r0 | r1 = r0;
0x0000c21c lsls r4, r7, 3 | r4 = r7 << 3;
0x0000c21e movs r0, r0 |
0x0000c220 subs r6, 0x5a | r6 -= 0x5a;
0x0000c222 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libelf-0.185.so @ 0x7d10 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.elf_update () | void elf_update (int16_t arg_0h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_38h, int16_t arg_40h, int16_t arg_44h, int16_t arg_50h, int16_t arg_60h, int16_t arg_70h, int16_t arg_74h, int16_t arg_a8h, int16_t arg_b0h, int16_t arg_128h, int16_t arg_12ch, int16_t arg_150h, int16_t arg1, uint32_t arg2) {
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_14h_3;
| int16_t var_18h_2;
| int16_t var_1ch_2;
| int16_t var_20h_2;
| int16_t var_24h;
| int16_t var_28h_2;
| int16_t var_2ch;
| int16_t var_30h_2;
| int16_t var_34h_2;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h_2;
| int16_t var_28h;
| int16_t var_2ch_2;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_14h;
| int16_t var_18h_3;
| int16_t var_28h_3;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
0x00007d10 push {sb, sp} |
0x00007d14 mvns r0, r6 | r0 = ~r6;
0x00007d16 cmp r1, r2 |
0x00007d18 it ne |
| if (r1 != r2) {
0x00007d1a cmpne r1, 3 | __asm ("cmpne r1, 3");
| }
0x00007d1c mov r4, r0 | r4 = r0;
0x00007d1e ite ne |
| if (r1 == r2) {
0x00007d20 movne r3, 1 | r3 = 1;
| }
| if (r1 != r2) {
0x00007d22 moveq r3, 0 | r3 = 0;
| }
0x00007d24 ldr r0, [pc, 0x280] |
0x00007d26 mov r5, r1 | r5 = r1;
0x00007d28 cmp r1, 0xa |
0x00007d2a ite eq |
| if (r1 != 0xa) {
0x00007d2c moveq r3, 0 | r3 = 0;
| }
| if (r1 == 0xa) {
0x00007d2e andne r3, r3, 1 | r3 &= 1;
| }
0x00007d32 ldr r1, [pc, 0x278] | r1 = *(0x7fae);
0x00007d34 sub sp, 0x8c |
0x00007d36 add r0, pc | r0 = 0xfce2;
0x00007d38 ldr r1, [r0, r1] |
0x00007d3a ldr r1, [r1] | r1 = *(0xfce2);
0x00007d3c str r1, [sp, 0x84] | var_84h = r1;
0x00007d3e mov.w r1, 0 | r1 = 0;
0x00007d42 str r2, [sp, 0x14] | var_14h = r2;
0x00007d44 cmp r3, 0 |
| if (r3 != 0) {
0x00007d46 bne.w 0x7e7a | goto label_54;
| }
0x00007d4a cmp r4, 0 |
| if (r4 == 0) {
0x00007d4c beq 0x7e16 | goto label_3;
| }
0x00007d4e ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00007d50 cmp r3, 3 |
| if (r3 != 3) {
0x00007d52 bne.w 0x7f86 | goto label_55;
| }
0x00007d56 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x00007d58 cmp r3, 0 |
| if (r3 == 0) {
0x00007d5a beq.w 0x7f94 | goto label_56;
| }
0x00007d5e ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x00007d60 ldr.w r8, [r3] | r8 = *(r3);
0x00007d64 cmp.w r8, 0 |
| if (r8 != 0) {
0x00007d68 bne 0x7e1e | goto label_57;
| }
0x00007d6a ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00007d6c mov r2, r8 | r2 = r8;
0x00007d6e add r1, sp, 0x14 | r1 += var_14h;
0x00007d70 mov r0, r4 | r0 = r4;
0x00007d72 cmp r3, 1 |
| if (r3 == 1) {
0x00007d74 beq 0x7e3a | goto label_58;
| }
| label_1:
0x00007d76 bl 0x8658 | r0 = void (*0x8658)() ();
0x00007d7a mov r6, r0 | r6 = r0;
0x00007d7c mov r7, r1 | r7 = r1;
| label_2:
0x00007d7e cmp.w r7, -1 |
0x00007d82 it eq |
| if (r7 == -1) {
0x00007d84 cmpeq r6, -1 | __asm ("cmpeq r6, -1");
| }
| if (r7 == -1) {
0x00007d88 beq 0x7e16 | goto label_3;
| }
0x00007d8a cmp r5, 0xa |
0x00007d8c it ne |
| if (r5 != 0xa) {
0x00007d8e cmpne r5, 3 | __asm ("cmpne r5, 3");
| }
| if (r5 != 0xa) {
0x00007d90 bne 0x7dee | goto label_0;
| }
0x00007d92 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00007d94 sub.w r2, r3, 9 | r2 = r3 - 9;
0x00007d98 subs r3, 2 | r3 -= 2;
0x00007d9a cmp r2, 1 |
0x00007d9c it hi |
| if (r2 > 1) {
0x00007d9e cmphi r3, 1 | __asm ("cmphi r3, 1");
| }
| if (r2 > 1) {
0x00007da0 bhi.w 0x7f78 | goto label_59;
| }
0x00007da4 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00007da6 adds r1, r3, 1 | r1 = r3 + 1;
| if (r1 == r3) {
0x00007da8 beq.w 0x7f1a | goto label_60;
| }
0x00007dac mov r0, r3 | r0 = r3;
0x00007dae add r1, sp, 0x18 | r1 += var_18h_3;
0x00007db0 ldr.w sb, [sp, 0x14] | sb = var_14h;
0x00007db4 ldr r5, [r4, 0x14] | r5 = *((r4 + 0x14));
0x00007db6 blx 0x23e8 | r0 = mremap ();
0x00007dba cmp r0, 0 |
| if (r0 != 0) {
0x00007dbc bne.w 0x7f0c | goto label_10;
| }
0x00007dc0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00007dc2 cmp r3, 0 |
| if (r3 == 0) {
0x00007dc4 beq 0x7e44 | goto label_61;
| }
0x00007dc6 ldr r3, [r4] | r3 = *(r4);
0x00007dc8 cmp r3, 0 |
| if (r3 == 0) {
0x00007dca beq 0x7e60 | goto label_8;
| }
| label_6:
0x00007dcc cmp r5, 1 |
0x00007dce mov r2, r8 | r2 = r8;
0x00007dd0 mov r1, sb | r1 = sb;
0x00007dd2 mov r0, r4 | r0 = r4;
| if (r5 == 1) {
0x00007dd4 beq 0x7e0e | goto label_62;
| }
0x00007dd6 bl 0xa054 | r0 = fcn_0000a054 (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00007dda cbnz r0, 0x7e16 | goto label_3;
| }
| do {
| label_4:
0x00007ddc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00007dde cmp r3, 0 |
| if (r3 == 0) {
0x00007de0 beq.w 0x7f38 | goto label_63;
| }
0x00007de4 ldr r1, [sp, 0x28] | r1 = var_28h_3;
0x00007de6 tst.w r1, 0xc00 |
| if ((r1 & 0xc00) != 0) {
0x00007dea bne.w 0x7f64 | goto label_64;
| }
| label_0:
0x00007dee ldr r2, [pc, 0x1c0] |
0x00007df0 ldr r3, [pc, 0x1b8] | r3 = *(0x7fac);
0x00007df2 add r2, pc | r2 = 0xfda8;
0x00007df4 ldr r3, [r2, r3] | r3 = *(0xfda8);
0x00007df6 ldr r2, [r3] | r2 = *(0xfda8);
0x00007df8 ldr r3, [sp, 0x84] | r3 = var_84h;
0x00007dfa eors r2, r3 | r2 ^= r3;
0x00007dfc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00007e00 bne.w 0x7fa2 | goto label_65;
| }
0x00007e04 mov r0, r6 | r0 = r6;
0x00007e06 mov r1, r7 | r1 = r7;
0x00007e08 add sp, 0x8c |
0x00007e0a pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_62:
0x00007e0e bl 0x8f3c | r0 = fcn_00008f3c (r0, r1, r2, r3, r4, r5, r6);
0x00007e12 cmp r0, 0 |
0x00007e14 beq 0x7ddc |
| } while (r0 == 0);
| label_3:
0x00007e16 mov.w r6, -1 | r6 = -1;
0x00007e1a mov r7, r6 | r7 = r6;
0x00007e1c b 0x7dee | goto label_0;
| label_57:
0x00007e1e add.w r8, r8, -1 | r8 += -1;
0x00007e22 movs r2, 0x98 | r2 = 0x98;
0x00007e24 mla r3, r2, r8, r3 | __asm ("mla r3, r2, r8, r3");
0x00007e28 add r1, sp, 0x14 | r1 += var_14h;
0x00007e2a mov r0, r4 | r0 = r4;
0x00007e2c ldr r3, [r3, 0x78] | r3 = *((r3 + 0x78));
0x00007e2e add.w r8, r3, 1 | r8 = r3 + 1;
0x00007e32 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00007e34 mov r2, r8 | r2 = r8;
0x00007e36 cmp r3, 1 |
| if (r3 != 1) {
0x00007e38 bne 0x7d76 | goto label_1;
| }
| label_58:
0x00007e3a bl 0x7fb4 | r0 = void (*0x7fb4)() ();
0x00007e3e mov r6, r0 | r6 = r0;
0x00007e40 mov r7, r1 | r7 = r1;
0x00007e42 b 0x7d7e | goto label_2;
| label_61:
0x00007e44 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00007e46 adds r2, r3, 1 | r2 = r3 + 1;
| if (r2 != r3) {
0x00007e48 beq 0x7e4e |
0x00007e4a cmp r3, r6 |
| if (r3 >= r6) {
0x00007e4c bhs 0x7efa | goto label_66;
| }
| }
0x00007e4e ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00007e50 mov r2, r6 | r2 = r6;
0x00007e52 mov r3, r7 | r3 = r7;
0x00007e54 blx 0x2228 | r0 = fcn_00002228 ();
0x00007e58 cmp r0, 0 |
| if (r0 != 0) {
0x00007e5a bne 0x7f0c | goto label_10;
| }
0x00007e5c ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00007e5e cbnz r3, 0x7eb8 | goto label_67;
| }
| label_8:
0x00007e60 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00007e62 cmp r3, 0xa |
| if (r3 == 0xa) {
0x00007e64 beq 0x7e88 | goto label_68;
| }
| label_5:
0x00007e66 cmp r5, 1 |
| if (r5 == 1) {
0x00007e68 beq 0x7f26 | goto label_69;
| }
0x00007e6a mov r2, r8 | r2 = r8;
0x00007e6c mov r1, sb | r1 = sb;
0x00007e6e mov r0, r4 | r0 = r4;
0x00007e70 bl 0xa870 | r0 = fcn_0000a870 (r0, r1, r2, r3, r4, r5, r6);
0x00007e74 cmp r0, 0 |
| if (r0 != 0) {
0x00007e76 bne 0x7e16 | goto label_3;
| }
0x00007e78 b 0x7ddc | goto label_4;
| label_54:
0x00007e7a mov.w r6, -1 | r6 = -1;
0x00007e7e movs r0, 0xd | r0 = 0xd;
0x00007e80 mov r7, r6 | r7 = r6;
0x00007e82 bl 0x259c | fcn_0000259c (r0);
0x00007e86 b 0x7dee | goto label_0;
| label_68:
0x00007e88 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00007e8c movs r2, 3 | r2 = 3;
0x00007e8e mov r1, r6 | r1 = r6;
0x00007e90 movs r0, 0 | r0 = 0;
0x00007e92 vstr d16, [sp, 8] | __asm ("vstr d16, [sp, 8]");
0x00007e96 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00007e98 str r3, [sp] | *(sp) = r3;
0x00007e9a movs r3, 1 | r3 = 1;
0x00007e9c blx 0x221c | r0 = fcn_0000221c ();
0x00007ea0 adds r3, r0, 1 | r3 = r0 + 1;
0x00007ea2 str r0, [r4] | *(r4) = r0;
0x00007ea4 itt eq |
| if (r3 != r0) {
0x00007ea6 moveq r3, 0 | r3 = 0;
| }
| if (r3 == r0) {
0x00007ea8 streq r3, [r4] | *(r4) = r3;
| goto label_70;
| }
| if (r3 == r0) {
| label_70:
0x00007eaa beq 0x7e66 | goto label_5;
| }
0x00007eac ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
0x00007eae orr r3, r3, 0x40 | r3 |= 0x40;
0x00007eb2 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x00007eb4 cmp r0, 0 |
| if (r0 == 0) {
0x00007eb6 beq 0x7e66 | goto label_5;
| }
| label_67:
0x00007eb8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00007eba cmp r3, 0 |
| if (r3 != 0) {
0x00007ebc bne 0x7dcc | goto label_6;
| }
0x00007ebe ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
| label_7:
0x00007ec0 adds r1, r3, 1 | r1 = r3 + 1;
| if (r1 == r3) {
0x00007ec2 beq 0x7ec8 | goto label_71;
| }
0x00007ec4 cmp r3, r6 |
| if (r3 >= r6) {
0x00007ec6 bhs 0x7dcc | goto label_6;
| }
| label_71:
0x00007ec8 strd r6, r7, [sp] | __asm ("strd r6, r7, [sp]");
0x00007ecc movs r2, 0 | r2 = 0;
0x00007ece ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00007ed0 movs r3, 0 | r3 = 0;
0x00007ed2 blx 0x2388 | r0 = fcntl64 ();
| if (r0 != 0) {
0x00007ed6 cbnz r0, 0x7f02 | goto label_72;
| }
| label_9:
0x00007ed8 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00007eda cmp r3, 9 |
| if (r3 != 9) {
0x00007edc bne.w 0x7dcc | goto label_6;
| }
0x00007ee0 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00007ee2 cmp r6, r1 |
| if (r6 < r1) {
0x00007ee4 bls.w 0x7dcc | goto label_6;
| }
0x00007ee8 ldr r0, [r4] | r0 = *(r4);
0x00007eea movs r3, 0 | r3 = 0;
0x00007eec mov r2, r6 | r2 = r6;
0x00007eee blx 0x23f4 | tls_get_addr ();
0x00007ef2 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00007ef4 beq 0x7f0c | goto label_10;
| }
0x00007ef6 str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x00007ef8 b 0x7dcc | goto label_6;
| label_66:
0x00007efa ldr r2, [r4] | r2 = *(r4);
0x00007efc cmp r2, 0 |
| if (r2 != 0) {
0x00007efe bne 0x7ec0 | goto label_7;
| }
0x00007f00 b 0x7e60 | goto label_8;
| label_72:
0x00007f02 blx 0x2328 | r0 = memset (r0, r1, r2);
0x00007f06 ldr r3, [r0] | r3 = *(r0);
0x00007f08 cmp r3, 0x1c |
| if (r3 != 0x1c) {
0x00007f0a bne 0x7ed8 | goto label_9;
| }
| label_10:
0x00007f0c mov.w r6, -1 | r6 = -1;
0x00007f10 movs r0, 0x14 | r0 = 0x14;
0x00007f12 mov r7, r6 | r7 = r6;
0x00007f14 bl 0x259c | fcn_0000259c (r0);
0x00007f18 b 0x7dee | goto label_0;
| label_60:
0x00007f1a movs r0, 0x1b | r0 = 0x1b;
0x00007f1c mov r6, r3 | r6 = r3;
0x00007f1e mov r7, r3 | r7 = r3;
0x00007f20 bl 0x259c | fcn_0000259c (r0);
0x00007f24 b 0x7dee | goto label_0;
| label_69:
0x00007f26 mov r2, r8 | r2 = r8;
0x00007f28 mov r1, sb | r1 = sb;
0x00007f2a mov r0, r4 | r0 = r4;
0x00007f2c bl 0x9774 | r0 = fcn_00009774 (r0, r1, r2, r3, r4, r5, r6);
0x00007f30 cmp r0, 0 |
| if (r0 != 0) {
0x00007f32 bne.w 0x7e16 | goto label_3;
| }
0x00007f36 b 0x7ddc | goto label_4;
| label_63:
0x00007f38 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00007f3a adds r2, r3, 1 | r2 = r3 + 1;
| if (r2 != r3) {
0x00007f3c beq 0x7f42 |
0x00007f3e cmp r3, r6 |
| if (r3 > r6) {
0x00007f40 bhi 0x7f4e | goto label_73;
| }
| }
0x00007f42 ldr r1, [sp, 0x28] | r1 = var_28h_3;
0x00007f44 tst.w r1, 0xc00 |
| if ((r1 & 0xc00) != 0) {
0x00007f48 bne 0x7f64 | goto label_64;
| }
| label_11:
0x00007f4a str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x00007f4c b 0x7dee | goto label_0;
| label_73:
0x00007f4e ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00007f50 mov r2, r6 | r2 = r6;
0x00007f52 mov r3, r7 | r3 = r7;
0x00007f54 blx 0x2228 | r0 = fcn_00002228 ();
0x00007f58 cmp r0, 0 |
| if (r0 != 0) {
0x00007f5a bne 0x7f0c | goto label_10;
| }
0x00007f5c ldr r1, [sp, 0x28] | r1 = var_28h_3;
0x00007f5e tst.w r1, 0xc00 |
| if ((r1 & 0xc00) == 0) {
0x00007f62 beq 0x7f6e | goto label_74;
| }
| label_64:
0x00007f64 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00007f66 blx 0x2430 | r0 = fcn_00002430 ();
0x00007f6a cmp r0, 0 |
| if (r0 != 0) {
0x00007f6c bne 0x7f0c | goto label_10;
| }
| label_74:
0x00007f6e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00007f70 cmp r3, 0 |
| if (r3 != 0) {
0x00007f72 bne.w 0x7dee | goto label_0;
| }
0x00007f76 b 0x7f4a | goto label_11;
| label_59:
0x00007f78 mov.w r6, -1 | r6 = -1;
0x00007f7c movs r0, 0x26 | r0 = 0x26;
0x00007f7e mov r7, r6 | r7 = r6;
0x00007f80 bl 0x259c | fcn_0000259c (r0);
0x00007f84 b 0x7dee | goto label_0;
| label_55:
0x00007f86 mov.w r6, -1 | r6 = -1;
0x00007f8a movs r0, 4 | r0 = 4;
0x00007f8c mov r7, r6 | r7 = r6;
0x00007f8e bl 0x259c | fcn_0000259c (r0);
0x00007f92 b 0x7dee | goto label_0;
| label_56:
0x00007f94 mov.w r6, -1 | r6 = -1;
0x00007f98 movs r0, 0x1a | r0 = 0x1a;
0x00007f9a mov r7, r6 | r7 = r6;
0x00007f9c bl 0x259c | fcn_0000259c (r0);
0x00007fa0 b 0x7dee | goto label_0;
| label_65:
0x00007fa2 blx 0x2250 | sysconf ();
0x00007fa6 nop |
0x00007fa8 strh r6, [r7, 0xc] | *((r7 + 0xc)) = r6;
0x00007faa movs r1, r0 | r1 = r0;
0x00007fac lsls r4, r7, 3 | r4 = r7 << 3;
0x00007fae movs r0, r0 |
0x00007fb0 strh r2, [r0, 8] | *((r0 + 8)) = r2;
0x00007fb2 movs r1, r0 | r1 = r0;
0x00007fb4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00007fb8 mov r8, r2 | r8 = r2;
0x00007fba ldr.w r2, [pc, 0x63c] | r2 = *(0x000085f8);
0x00007fbe sub sp, 0x3c |
0x00007fc0 mov fp, r0 |
0x00007fc2 mov r4, r1 | r4 = r1;
0x00007fc4 ldr.w r3, [pc, 0x634] |
0x00007fc8 add r2, pc | r2 += pc;
0x00007fca ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00007fcc ldr r3, [r3] | r3 = *(0x85fc);
0x00007fce str r3, [sp, 0x34] | var_34h = r3;
0x00007fd0 mov.w r3, 0 | r3 = 0;
0x00007fd4 bl 0x4d20 | r0 = fcn_00004d20 (r0);
0x00007fd8 ldrb r3, [r0] | r3 = *(r0);
0x00007fda mov sb, r0 | sb = r0;
0x00007fdc cmp r3, 0x7f |
| if (r3 == 0x7f) {
0x00007fde beq.w 0x8418 | goto label_75;
| }
| label_25:
0x00007fe2 ldr.w r3, [pc, 0x61c] |
0x00007fe6 add r3, pc | r3 = 0x105ec;
0x00007fe8 ldr r0, [r3] | r0 = *(0x105ec);
0x00007fea str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x00007fee ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x00007ff2 orr r3, r3, 1 | r3 |= 1;
0x00007ff6 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
| label_26:
0x00007ffa ldrb.w r3, [sb, 4] | r3 = *((sb + 4));
0x00007ffe cmp r3, 1 |
| if (r3 != 1) {
0x00008000 beq 0x8014 |
0x00008002 movs r3, 1 | r3 = 1;
0x00008004 strb.w r3, [sb, 4] | *((sb + 4)) = r3;
0x00008008 ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x0000800c orr r3, r3, 1 | r3 |= 1;
0x00008010 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
| }
0x00008014 ldrb.w r3, [sb, 5] | r3 = *((sb + 5));
0x00008018 cmp r3, 0 |
| if (r3 == 0) {
0x0000801a beq.w 0x84c0 | goto label_76;
| }
0x0000801e cmp r3, 2 |
| if (r3 > 2) {
0x00008020 bhi.w 0x84e8 | goto label_77;
| }
0x00008024 subs r3, 1 | r3--;
0x00008026 it ne |
| if (r3 == 1) {
0x00008028 movne r3, 1 | r3 = 1;
| }
0x0000802a str r3, [r4] | *(r4) = r3;
| label_30:
0x0000802c ldrb.w r3, [sb, 6] | r3 = *((sb + 6));
0x00008030 cmp r3, 1 |
| if (r3 != 1) {
0x00008032 beq 0x8046 |
0x00008034 movs r3, 1 | r3 = 1;
0x00008036 strb.w r3, [sb, 6] | *((sb + 6)) = r3;
0x0000803a ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x0000803e orr r3, r3, 1 | r3 |= 1;
0x00008042 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
| }
0x00008046 ldr.w r3, [sb, 0x14] | r3 = *((sb + 0x14));
0x0000804a cmp r3, 0 |
| if (r3 == 0) {
0x0000804c beq.w 0x84d4 | goto label_78;
| }
0x00008050 cmp r3, 1 |
| if (r3 != 1) {
0x00008052 bne.w 0x840a | goto label_79;
| }
| label_31:
0x00008056 cmp.w r8, 0xff00 |
0x0000805a ldrh.w r3, [sb, 0x30] | r3 = *((sb + 0x30));
| if (r8 >= 0xff00) {
0x0000805e bhs.w 0x84f6 | goto label_80;
| }
0x00008062 cmp r8, r3 |
0x00008064 itttt ne |
| if (r8 != r3) {
0x00008066 strhne r8, [sb, 0x30] | __asm ("strhne r8, [sb, 0x30]");
| }
| if (r8 == r3) {
0x0000806a ldrne r3, [fp, 0x50] | r3 = *(arg_50h);
| }
| if (r8 != r3) {
0x0000806e orr r3, r3, 1 | r3 |= 1;
| }
| if (r8 != r3) {
0x00008072 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
| }
| label_32:
0x00008076 ldr.w r3, [pc, 0x58c] |
0x0000807a ldrh.w r2, [sb, 0x28] | r2 = *((sb + 0x28));
0x0000807e add r3, pc | r3 = 0x10688;
0x00008080 ldr.w sl, [r3, 0xc] | sl = *(0x10694);
0x00008084 cmp r2, sl |
0x00008086 itttt ne |
| if (r2 != sl) {
0x00008088 strhne sl, [sb, 0x28] | __asm ("strhne sl, [sb, 0x28]");
| }
| if (r2 == sl) {
0x0000808c ldrne r3, [fp, 0x50] | r3 = *(arg_50h);
| }
| if (r2 != sl) {
0x00008090 orr r3, r3, 1 | r3 |= 1;
| }
| if (r2 != sl) {
0x00008094 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
| }
0x00008098 ldrh.w r3, [sb, 0x2c] | r3 = *((sb + 0x2c));
0x0000809c cmp r3, 0 |
0x0000809e beq.w 0x81c8 |
| while (r2 == 0) {
0x000080a2 ldr.w r3, [fp, 0x40] | r3 = *(arg_40h);
0x000080a6 cmp r3, 0 |
| if (r3 == 0) {
0x000080a8 beq.w 0x81ec | goto label_81;
| }
| label_12:
0x000080ac add r1, sp, 0x30 | r1 += var_30h;
0x000080ae mov r0, fp | r0 = fp;
0x000080b0 bl 0xbee8 | fcn_0000bee8 (r0, r1);
0x000080b4 str r0, [sp, 4] | var_4h = r0;
0x000080b6 cmp r0, 0 |
| if (r0 != 0) {
0x000080b8 bne.w 0x8442 | goto label_33;
| }
0x000080bc ldr.w r3, [pc, 0x548] |
0x000080c0 ldr.w r1, [fp, 0x2c] | r1 = *(arg_2ch);
0x000080c4 ldr r2, [sp, 0x30] | r2 = var_30h;
0x000080c6 add r3, pc |
0x000080c8 ldr r3, [r3, 0x18] | r3 = *(0x106ea);
0x000080ca lsls r1, r1, 0x1d | r1 <<= 0x1d;
0x000080cc mul r3, r2, r3 | r3 = r2 * r3;
0x000080d0 ldr.w r2, [sb, 0x1c] | r2 = *((sb + 0x1c));
| if (r1 >= r1) {
0x000080d4 bpl.w 0x8232 | goto label_82;
| }
0x000080d8 add r2, r3 | r2 += r3;
0x000080da cmp sl, r2 |
0x000080dc it lo |
| if (sl >= r2) {
0x000080de movlo sl, r2 | sl = r2;
| }
| label_14:
0x000080e0 cmp.w r8, 0 |
| if (r8 == 0) {
0x000080e4 beq.w 0x8206 | goto label_36;
| }
| label_13:
0x000080e8 ldr.w r3, [fp, 0xa8] | r3 = *(arg_a8h);
0x000080ec cmp r3, 0 |
| if (r3 == 0) {
0x000080ee beq.w 0x85ae | goto label_83;
| }
0x000080f2 cmp.w r8, 0xff00 |
| if (r8 > 0xff00) {
0x000080f6 blo 0x8116 |
0x000080f8 ldr.w r2, [fp, 0x128] | r2 = *(arg_128h);
0x000080fc ldr r1, [r2, 0x14] | r1 = *((r2 + 0x14));
0x000080fe cmp r1, r8 |
| if (r1 == r8) {
0x00008100 beq 0x8116 | goto label_84;
| }
0x00008102 str.w r8, [r2, 0x14] | __asm ("str.w r8, [r2, 0x14]");
0x00008106 ldr.w r3, [fp, 0x12c] | r3 = *(arg_12ch);
0x0000810a orr r3, r3, 1 | r3 |= 1;
0x0000810e str.w r3, [fp, 0x12c] | __asm ("str.w r3, [arg_12ch]");
0x00008112 ldr.w r3, [fp, 0xa8] | r3 = *(arg_a8h);
| }
| label_84:
0x00008116 cmp r3, 1 |
0x00008118 add.w r2, fp, 0xa8 | r2 += arg_a8h;
0x0000811c it hi |
| if (r3 <= 1) {
0x0000811e addhi r0, fp, 0x150 | r0 += arg_150h;
| }
0x00008122 str r2, [sp, 8] | var_8h = r2;
| if (r3 < 1) {
0x00008124 bls.w 0x84b2 | goto label_85;
| }
| label_29:
0x00008128 ldr r3, [r0, 0x70] | r3 = *((r0 + 0x70));
0x0000812a cmp r3, 0 |
| if (r3 == 0) {
0x0000812c beq.w 0x8516 | goto label_86;
| }
| label_28:
0x00008130 movw r3, 0xfffa |
0x00008134 movs r0, 1 | r0 = 1;
0x00008136 movt r3, 0x6fff | r3 = 0x6ffffffa;
0x0000813a str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
0x0000813e str r3, [sp, 0x10] | var_10h = r3;
0x00008140 movw r3, 0xfffc |
0x00008144 movt r3, 0x6fff | r3 = 0x6ffffffc;
0x00008148 str.w r8, [sp, 0x28] | __asm ("str.w r8, [var_28h]");
0x0000814c str r3, [sp, 0x14] | var_14h_2 = r3;
0x0000814e ldr.w r3, [pc, 0x4bc] |
0x00008152 add r3, pc | r3 = 0x10764;
0x00008154 str r3, [sp, 0x20] | var_20h = r3;
0x00008156 ldr.w r3, [pc, 0x4b8] |
0x0000815a add r3, pc | r3 = 0x10770;
0x0000815c str r3, [sp, 0x18] | var_18h = r3;
0x0000815e movs r3, 0 | r3 = 0;
0x00008160 str r3, [sp, 0xc] | var_ch = r3;
| label_16:
0x00008162 ldr r2, [sp, 8] | r2 = var_8h;
0x00008164 mov sb, r0 | sb = r0;
0x00008166 ldr r3, [r2] | r3 = *(r2);
0x00008168 cmp r0, r3 |
| if (r0 >= r3) {
0x0000816a bhs.w 0x82ea | goto label_87;
| }
0x0000816e movs r4, 0x98 | r4 = 0x98;
0x00008170 mla r4, r4, r0, r2 | __asm ("mla r4, r4, r0, r2");
0x00008174 adds r4, 0x10 | r4 += 0x10;
| label_15:
0x00008176 ldr r7, [r4, 0x70] | r7 = *((r4 + 0x70));
0x00008178 cmp r7, 0 |
| if (r7 == 0) {
0x0000817a beq.w 0x859c | goto label_88;
| }
0x0000817e ldr r6, [r7, 0x20] | r6 = *((r7 + 0x20));
0x00008180 ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x00008182 cmp r6, 1 |
0x00008184 it lo |
| if (r6 >= 1) {
0x00008186 movlo r6, 1 | r6 = 1;
| }
0x00008188 subs r3, r6, 1 | r3 = r6 - 1;
0x0000818a tst r3, r6 |
| if ((r3 & r6) != 0) {
0x0000818c bne.w 0x844a | goto label_89;
| }
0x0000818e strh r5, [r3, 0xa] | *((r3 + 0xa)) = r5;
0x00008190 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00008192 cmp r3, 0x12 |
| if (r3 > 0x12) {
0x00008194 bhi.w 0x8302 | goto label_90;
| }
0x00008198 cmp r3, 1 |
| if (r3 < 1) {
0x0000819a bls 0x8252 | goto label_17;
| }
0x0000819c subs r3, 2 | r3 -= 2;
0x0000819e cmp r3, 0x10 |
| if (r3 > 0x10) {
0x000081a0 bhi 0x8242 | goto label_91;
| }
| /* switch table (18 cases) at 0x81a6 */
0x000081a2 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
0x000081c8 ldr.w r2, [sb, 0x1c] | r2 = *((sb + 0x1c));
0x000081cc cmp r2, 0 |
0x000081ce beq.w 0x80a2 |
| }
0x000081d2 str.w r3, [sb, 0x1c] | __asm ("str.w r3, [sb, 0x1c]");
0x000081d6 ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x000081da orr r3, r3, 1 | r3 |= 1;
0x000081de str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
0x000081e2 ldr.w r3, [fp, 0x40] | r3 = *(arg_40h);
0x000081e6 cmp r3, 0 |
| if (r3 != 0) {
0x000081e8 bne.w 0x80ac | goto label_12;
| }
| label_81:
0x000081ec mov r0, fp | r0 = fp;
0x000081ee bl 0x5038 | fcn_00005038 (r0);
0x000081f2 ldr.w r3, [fp, 0x40] | r3 = *(arg_40h);
0x000081f6 cmp r3, 0 |
| if (r3 != 0) {
0x000081f8 bne.w 0x80ac | goto label_12;
| }
0x000081fc str r3, [sp, 4] | var_4h = r3;
0x000081fe cmp.w r8, 0 |
| if (r8 != 0) {
0x00008202 bne.w 0x80e8 | goto label_13;
| }
| label_36:
0x00008206 ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x0000820a mov r0, sl | r0 = sl;
0x0000820c ldr r2, [sp, 4] | r2 = var_4h;
0x0000820e movs r1, 0 | r1 = 0;
0x00008210 orrs r3, r2 | r3 |= r2;
0x00008212 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
| label_24:
0x00008216 ldr r2, [pc, 0x3fc] |
0x00008218 ldr r3, [pc, 0x3e0] | r3 = *(0x85fc);
0x0000821a add r2, pc | r2 = 0x10834;
0x0000821c ldr r3, [r2, r3] | r3 = *(0x10834);
0x0000821e ldr r2, [r3] | r2 = *(0x10834);
0x00008220 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00008222 eors r2, r3 | r2 ^= r3;
0x00008224 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00008228 bne.w 0x8560 | goto label_92;
| }
0x0000822c add sp, 0x3c |
0x0000822e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_82:
0x00008232 cmp r2, sl |
0x00008234 ittt ne |
| if (r2 == sl) {
0x00008236 movne r2, 1 | r2 = 1;
| }
| if (r2 == sl) {
0x00008238 strne sl, [sb, 0x1c] | *((sb + 0x1c)) = sl;
| }
| if (r2 != sl) {
0x0000823c str r2, [sp, 4] | var_4h = r2;
| }
0x0000823e add sl, r3 | sl += r3;
0x00008240 b 0x80e0 | goto label_14;
| label_91:
0x00008242 mov r3, r2 | r3 = r2;
| label_18:
0x00008244 cmp r3, r2 |
0x00008246 itttt ne |
| if (r3 == r2) {
0x00008248 strne r3, [r7, 0x24] | *((r7 + 0x24)) = r3;
| }
| if (r3 == r2) {
0x0000824a ldrne r3, [r4, 0x74] | r3 = *((r4 + 0x74));
| }
| if (r3 == r2) {
0x0000824c orrne r3, r3, 1 | r3 |= 1;
| }
| if (r3 != r2) {
0x00008250 str r3, [r4, 0x74] | *((r4 + 0x74)) = r3;
| }
| label_17:
0x00008252 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00008254 lsls r3, r3, 0x14 | r3 <<= 0x14;
| if (r3 < r3) {
0x00008256 bpl 0x8272 |
0x00008258 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000825a ldrb r6, [r3, 0x19] | r6 = *((r3 + 0x19));
0x0000825c ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x0000825e cmp r6, 1 |
0x00008260 it lo |
| if (r6 >= 1) {
0x00008262 movlo r6, 1 | r6 = 1;
| }
0x00008264 cmp r3, r6 |
0x00008266 itttt ne |
| if (r3 == r6) {
0x00008268 strne r6, [r7, 0x20] | *((r7 + 0x20)) = r6;
| }
| if (r3 == r6) {
0x0000826a ldrne r3, [r4, 0x74] | r3 = *((r4 + 0x74));
| }
| if (r3 == r6) {
0x0000826c orrne r3, r3, 1 | r3 |= 1;
| }
| if (r3 == r6) {
0x00008270 str r3, [r4, 0x74] | *((r4 + 0x74)) = r3;
| goto label_93;
| }
| }
| label_93:
0x00008272 ldr r3, [r4, 0x60] | r3 = *((r4 + 0x60));
0x00008274 cmp r3, 0 |
| if (r3 == 0) {
0x00008276 beq.w 0x8436 | goto label_94;
| }
| label_27:
0x0000827a ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0000827c cmp r3, 0 |
| if (r3 != 0) {
0x0000827e bne 0x8318 | goto label_95;
| }
0x00008280 ldr.w r1, [fp, 0x2c] | r1 = *(arg_2ch);
0x00008284 ldr r5, [r4, 0x44] | r5 = *((r4 + 0x44));
0x00008286 and r1, r1, 4 | r1 &= 4;
0x0000828a cmp r1, 0 |
| if (r1 == 0) {
0x0000828c beq 0x837c | goto label_96;
| }
| label_19:
0x0000828e ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00008290 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x00008292 cmp r3, 8 |
| if (r3 != 8) {
0x00008294 beq 0x82a0 |
0x00008296 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00008298 add r3, r2 | r3 += r2;
0x0000829a cmp sl, r3 |
0x0000829c it lo |
| if (sl < r3) {
0x0000829e movlo sl, r3 | sl = r3;
| goto label_97;
| }
| }
| if (r2 != 0) {
| label_97:
0x000082a0 cbz r2, 0x82b8 |
0x000082a2 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x000082a4 subs r2, r3, 1 | r2 = r3 - 1;
0x000082a6 tst r2, r3 |
| if ((r2 & r3) != 0) {
0x000082a8 bne.w 0x844a | goto label_89;
| }
0x000082ac cmp r3, 1 |
0x000082ae it lo |
| if (r3 >= 1) {
0x000082b0 movlo r3, 1 | r3 = 1;
| }
0x000082b2 cmp r6, r3 |
| if (r6 > r3) {
0x000082b4 bhi.w 0x844a | goto label_89;
| }
| }
| label_20:
0x000082b8 ldr r1, [r7, 0x24] | r1 = *((r7 + 0x24));
0x000082ba cmp r1, 1 |
| if (r1 >= 1) {
0x000082bc bls 0x82da |
0x000082be ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x000082c2 lsls r5, r3, 0x1c | r5 = r3 << 0x1c;
| if (r5 < r3) {
0x000082c4 bmi 0x82da | goto label_98;
| }
0x000082c6 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x000082c8 lsls r0, r3, 0x14 | r0 = r3 << 0x14;
| if (r0 < r3) {
0x000082ca bmi.w 0x8540 | goto label_99;
| }
0x000082ce ldr r0, [r7, 0x14] | r0 = *((r7 + 0x14));
| label_34:
0x000082d0 bl 0xd50c | fcn_0000d50c (r0, r1, r2);
0x000082d4 cmp r1, 0 |
| if (r1 != 0) {
0x000082d6 bne.w 0x8524 | goto label_100;
| }
| }
| label_98:
0x000082da ldr r3, [sp, 8] | r3 = var_8h;
0x000082dc add.w sb, sb, 1 | sb++;
0x000082e0 adds r4, 0x98 | r4 += 0x98;
0x000082e2 ldr r3, [r3] | r3 = *(r3);
0x000082e4 cmp r3, sb |
| if (r3 > sb) {
0x000082e6 bhi.w 0x8176 | goto label_15;
| }
| label_87:
0x000082ea ldr r1, [sp, 8] | r1 = var_8h;
0x000082ec ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x000082ee cmp r2, 0 |
| if (r2 == 0) {
0x000082f0 beq.w 0x8564 | goto label_101;
| }
0x000082f4 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000082f6 movs r0, 0 | r0 = 0;
0x000082f8 cmp r1, r3 |
| if (r1 != r3) {
0x000082fa bne.w 0x85e2 | goto label_102;
| }
0x000082fe str r2, [sp, 8] | var_8h = r2;
0x00008300 b 0x8162 | goto label_16;
| label_90:
0x00008302 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00008304 cmp r3, r1 |
| if (r3 == r1) {
0x00008306 beq.w 0x8510 | goto label_103;
| }
0x0000830a ldr r1, [sp, 0x14] | r1 = var_14h_2;
0x0000830c cmp r3, r1 |
| if (r3 != r1) {
0x0000830e bne 0x8252 | goto label_17;
| }
0x00008310 ldr r3, [pc, 0x304] |
0x00008312 add r3, pc |
0x00008314 ldr r3, [r3, 0x50] | r3 = *(0x1097e);
0x00008316 b 0x8244 | goto label_18;
| label_95:
0x00008318 str.w sl, [sp, 0x2c] | __asm ("str.w sl, [var_2ch_2]");
0x0000831c mov r0, r4 | r0 = r4;
0x0000831e mov sl, sb | sl = sb;
0x00008320 movs r5, 0 | r5 = 0;
0x00008322 mov ip, r6 |
0x00008324 mov lr, r4 | lr = r4;
0x00008326 mov sb, r7 | sb = r7;
0x00008328 add.w r3, r4, 0x38 | r3 = r4 + 0x38;
0x0000832c str r3, [sp, 0x24] | var_24h_2 = r3;
| do {
0x0000832e cmp lr, r0 |
0x00008330 mov r2, r0 | r2 = r0;
| if (lr == r0) {
0x00008332 beq 0x83f0 | goto label_104;
| }
| label_22:
0x00008334 ldr r7, [r2, 8] | r7 = *((r2 + 8));
0x00008336 cmp r7, 1 |
| if (r7 != 1) {
0x00008338 bne 0x840a | goto label_79;
| }
| label_23:
0x0000833a ldr r3, [r2, 0x18] | r3 = *((r2 + 0x18));
0x0000833c subs r1, r3, 1 | r1 = r3 - 1;
0x0000833e tst r1, r3 |
| if ((r1 & r3) != 0) {
0x00008340 bne.w 0x844a | goto label_89;
| }
0x00008344 ldr.w r1, [fp, 0x2c] | r1 = *(arg_2ch);
0x00008348 cmp ip, r3 |
0x0000834a it lo |
| if (ip >= r3) {
0x0000834c movlo ip, r3 |
| }
0x0000834e ldrd r6, r8, [r2, 0x10] | __asm ("ldrd r6, r8, [r2, 0x10]");
0x00008352 ldr r4, [r2, 0xc] | r4 = *((r2 + 0xc));
0x00008354 ands r1, r1, 4 | r1 &= 4;
| if (r1 == r1) {
0x00008358 beq 0x83d6 | goto label_105;
| }
0x0000835a ldr.w r3, [sb, 0x14] | r3 = *((sb + 0x14));
0x0000835e add r6, r4 | r6 += r4;
0x00008360 cmp r6, r3 |
| if (r6 > r3) {
0x00008362 bhi.w 0x851c | goto label_106;
| }
| label_21:
0x00008366 ldr r0, [r0, 0x28] | r0 = *((r0 + 0x28));
0x00008368 cmp r0, 0 |
0x0000836a bne 0x832e |
| } while (r0 != 0);
0x0000836c mov r7, sb | r7 = sb;
0x0000836e mov r6, ip | r6 = ip;
0x00008370 mov sb, sl | sb = sl;
0x00008372 mov r4, lr | r4 = lr;
0x00008374 ldr.w sl, [sp, 0x2c] | sl = var_2ch_2;
0x00008378 cmp r1, 0 |
| if (r1 != 0) {
0x0000837a bne 0x828e | goto label_19;
| }
| label_96:
0x0000837c ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
0x0000837e cmp r3, r6 |
0x00008380 itttt ne |
| if (r3 == r6) {
0x00008382 strne r6, [r7, 0x20] | *((r7 + 0x20)) = r6;
| }
| if (r3 == r6) {
0x00008384 ldrne r3, [r4, 0x74] | r3 = *((r4 + 0x74));
| }
| if (r3 == r6) {
0x00008386 orrne r3, r3, 1 | r3 |= 1;
| }
| if (r3 != r6) {
0x0000838a str r3, [r4, 0x74] | *((r4 + 0x74)) = r3;
| }
0x0000838c add.w r3, sl, -1 | r3 = sl + -1;
0x00008390 add r3, r6 | r3 += r6;
0x00008392 rsbs r6, r6, 0 | r6 -= ;
0x00008394 and.w sl, r6, r3 | sl = r6 & r3;
0x00008398 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0000839a cmp r3, sl |
| if (r3 != sl) {
0x0000839c beq 0x83b0 |
0x0000839e str.w sl, [r7, 0x10] | __asm ("str.w sl, [r7, 0x10]");
0x000083a2 ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
0x000083a4 cmp r1, 0 |
| if (r1 == 0) {
0x000083a6 beq.w 0x8552 | goto label_107;
| }
| label_35:
0x000083aa movs r3, 1 | r3 = 1;
0x000083ac mov r1, r3 | r1 = r3;
0x000083ae str r3, [sp, 0xc] | var_ch = r3;
| }
0x000083b0 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x000083b2 cmp r3, r5 |
0x000083b4 itttt ne |
| if (r3 == r5) {
0x000083b6 movne r3, 1 | r3 = 1;
| }
| if (r3 == r5) {
0x000083b8 strne r5, [r7, 0x14] | *((r7 + 0x14)) = r5;
| }
| if (r3 == r5) {
0x000083ba movne r1, r3 | r1 = r3;
| }
| if (r3 == r5) {
0x000083bc strne r3, [sp, 0xc] | var_ch = r3;
| }
0x000083be ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000083c0 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000083c2 cmp r3, 8 |
0x000083c4 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x000083c6 it ne |
| if (r3 == 8) {
0x000083c8 addne sl, r5 | sl += r5;
| }
0x000083ca orrs r3, r1 | r3 |= r1;
0x000083cc str r3, [r4, 0x74] | *((r4 + 0x74)) = r3;
0x000083ce ldr r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x000083d0 orrs r3, r2 | r3 |= r2;
0x000083d2 str r3, [r4, 0x78] | *((r4 + 0x78)) = r3;
0x000083d4 b 0x82b8 | goto label_20;
| label_105:
0x000083d6 adds r5, r3, r5 | r5 = r3 + r5;
0x000083d8 rsbs r3, r3, 0 | r3 -= ;
0x000083da subs r5, 1 | r5--;
0x000083dc ands r5, r3 | r5 &= r3;
0x000083de cmp r8, r1 |
0x000083e0 it eq |
| if (r8 == r1) {
0x000083e2 cmpeq r6, r5 | __asm ("cmpeq r6, r5");
| }
0x000083e4 itt ne |
| if (r8 == r1) {
0x000083e6 strne r7, [sp, 0xc] | var_ch = r7;
| }
| if (r8 != r1) {
0x000083e8 strdne r5, r1, [r2, 0x10] | __asm ("strdne r5, r1, [r2, 0x10]");
| }
0x000083ec adds r5, r4, r5 | r5 = r4 + r5;
0x000083ee b 0x8366 | goto label_21;
| label_104:
0x000083f0 ldr.w r3, [lr] | r3 = *(lr);
0x000083f4 cmp r3, 0 |
| if (r3 != 0) {
0x000083f6 bne 0x8334 | goto label_22;
| }
0x000083f8 ldr.w r3, [lr, 0x38] | r3 = *((lr + 0x38));
0x000083fc ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x000083fe cmp r3, 0 |
0x00008400 it eq |
| if (r3 != 0) {
0x00008402 moveq r2, lr | r2 = lr;
| }
0x00008404 ldr r7, [r2, 8] | r7 = *((r2 + 8));
0x00008406 cmp r7, 1 |
| if (r7 == 1) {
0x00008408 beq 0x833a | goto label_23;
| }
| label_79:
0x0000840a movs r0, 2 | r0 = 2;
0x0000840c bl 0x259c | fcn_0000259c (r0);
0x00008410 mov.w r0, -1 | r0 = -1;
0x00008414 mov r1, r0 | r1 = r0;
0x00008416 b 0x8216 | goto label_24;
| label_75:
0x00008418 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0000841a adds r2, r0, 1 | r2 = r0 + 1;
0x0000841c cmp r3, 0x45 |
| if (r3 != 0x45) {
0x0000841e bne.w 0x7fe2 | goto label_25;
| }
0x00008422 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00008426 cmp r3, 0x4c |
| if (r3 != 0x4c) {
0x00008428 bne.w 0x7fe2 | goto label_25;
| }
0x0000842c ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x0000842e cmp r3, 0x46 |
| if (r3 != 0x46) {
0x00008430 bne.w 0x7fe2 | goto label_25;
| }
0x00008434 b 0x7ffa | goto label_26;
| label_94:
0x00008436 mov r0, r4 | r0 = r4;
0x00008438 bl 0x7330 | r0 = fcn_00007330 (r0, r1);
0x0000843c cmp r0, 0 |
| if (r0 == 0) {
0x0000843e beq.w 0x827a | goto label_27;
| }
| label_33:
0x00008442 mov.w r0, -1 | r0 = -1;
0x00008446 mov r1, r0 | r1 = r0;
0x00008448 b 0x8216 | goto label_24;
| label_89:
0x0000844a movs r0, 0x24 | r0 = 0x24;
0x0000844c bl 0x259c | fcn_0000259c (r0);
0x00008450 mov.w r0, -1 | r0 = -1;
0x00008454 mov r1, r0 | r1 = r0;
0x00008456 b 0x8216 | goto label_24;
0x00008458 ldr r3, [pc, 0x1c0] |
0x0000845a add r3, pc |
0x0000845c ldr r3, [r3, 0x2c] | r3 = *(0x10aa6);
0x0000845e b 0x8244 | goto label_18;
0x00008460 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00008462 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00008464 cmp r3, 1 |
| if (r3 != 1) {
0x00008466 bne 0x8532 | goto label_108;
| }
0x00008468 ldr r3, [pc, 0x1b4] |
0x0000846a add r3, pc |
0x0000846c ldr r3, [r3, 0x30] | r3 = *(0x10abe);
0x0000846e b 0x8244 | goto label_18;
0x00008470 ldr r3, [pc, 0x1b0] |
0x00008472 add r3, pc |
0x00008474 ldr r3, [r3, 0x20] | r3 = *(0x10aba);
0x00008476 b 0x8244 | goto label_18;
0x00008478 ldr r3, [pc, 0x1ac] |
0x0000847a add r3, pc |
0x0000847c ldr r3, [r3, 8] | r3 = *(0x10aae);
0x0000847e b 0x8244 | goto label_18;
0x00008480 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00008482 movw r1, 0x9026 | r1 = 0x9026;
0x00008486 ldrh r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x00008488 cmp r3, r1 |
0x0000848a it eq |
| if (r3 == r1) {
0x0000848c moveq r3, 8 | r3 = 8;
| goto label_109;
| }
| if (r3 == r1) {
| label_109:
0x0000848e beq.w 0x8244 | goto label_18;
| }
0x00008492 cmp r3, 0x16 |
0x00008494 it ne |
| if (r3 != 0x16) {
0x00008496 movne r3, 4 | r3 = 4;
| goto label_110;
| }
| if (r3 != 0x16) {
| label_110:
0x00008498 bne.w 0x8244 | goto label_18;
| }
0x0000849c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000849e ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x000084a0 cmp r3, 2 |
0x000084a2 ite ne |
| if (r3 == 2) {
0x000084a4 movne r3, 4 | r3 = 4;
| }
| if (r3 != 2) {
0x000084a6 moveq r3, 8 | r3 = 8;
| }
0x000084a8 b 0x8244 | goto label_18;
0x000084aa ldr r3, [pc, 0x180] |
0x000084ac add r3, pc |
0x000084ae ldr r3, [r3, 0x1c] | r3 = *(0x10afa);
0x000084b0 b 0x8244 | goto label_18;
| label_85:
0x000084b2 ldr.w r0, [fp, 0xb0] | r0 = *(arg_b0h);
0x000084b6 cmp r0, 0 |
| if (r0 == 0) {
0x000084b8 beq.w 0x8130 | goto label_28;
| }
0x000084bc adds r0, 0x10 | r0 += 0x10;
0x000084be b 0x8128 | goto label_29;
| label_76:
0x000084c0 movs r3, 1 | r3 = 1;
0x000084c2 strb.w r3, [sb, 5] | *((sb + 5)) = r3;
0x000084c6 ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x000084ca orr r3, r3, 1 | r3 |= 1;
0x000084ce str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
0x000084d2 b 0x802c | goto label_30;
| label_78:
0x000084d4 movs r3, 1 | r3 = 1;
0x000084d6 str.w r3, [sb, 0x14] | __asm ("str.w r3, [sb, 0x14]");
0x000084da ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x000084dc adds r0, 0x50 | r0 += 0x50;
0x000084de orr r3, r3, 1 | r3 |= 1;
0x000084e2 str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
0x000084e6 b 0x8056 | goto label_31;
| label_77:
0x000084e8 movs r0, 0x22 | r0 = 0x22;
0x000084ea bl 0x259c | fcn_0000259c (r0);
0x000084ec invalid |
0x000084f0 adds r0, 0xff | r0 += 0xff;
0x000084f2 mov r1, r0 | r1 = r0;
0x000084f4 b 0x8216 | goto label_24;
| label_80:
0x000084f6 cmp r3, 0 |
| if (r3 == 0) {
0x000084f8 beq.w 0x8076 | goto label_32;
| }
0x000084fc movs r3, 0 | r3 = 0;
0x000084fe strh.w r3, [sb, 0x30] | *((sb + 0x30)) = r3;
0x00008502 ldr.w r3, [fp, 0x50] | r3 = *(arg_50h);
0x00008506 orr r3, r3, 1 | r3 |= 1;
0x0000850a str.w r3, [fp, 0x50] | __asm ("str.w r3, [arg_50h]");
0x0000850e b 0x8076 | goto label_32;
| label_103:
0x00008510 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008512 ldr r3, [r3, 0x54] | r3 = *((r3 + 0x54));
0x00008514 b 0x8244 | goto label_18;
| label_86:
0x00008516 bl 0x6ab0 | fcn_00006ab0 (r0);
0x0000851a b 0x8130 | goto label_28;
| label_106:
0x0000851c movs r0, 0x23 | r0 = 0x23;
0x0000851e bl 0x259c | fcn_0000259c (r0);
0x00008522 b 0x8442 | goto label_33;
| label_100:
0x00008524 movs r0, 0x25 | r0 = 0x25;
0x00008526 bl 0x259c | fcn_0000259c (r0);
0x0000852a mov.w r0, -1 | r0 = -1;
0x0000852e mov r1, r0 | r1 = r0;
0x00008530 b 0x8216 | goto label_24;
| label_108:
0x00008532 movs r0, 0x28 | r0 = 0x28;
0x00008534 bl 0x259c | fcn_0000259c (r0);
0x00008536 invalid |
0x0000853a adds r0, 0xff | r0 += 0xff;
0x0000853c mov r1, r0 | r1 = r0;
0x0000853e b 0x8216 | goto label_24;
| label_99:
0x00008540 mov r0, r4 | r0 = r4;
0x00008542 blx 0x2200 | r0 = fcn_00002200 ();
0x00008546 cmp r0, 0 |
| if (r0 == 0) {
0x00008548 beq.w 0x8442 | goto label_33;
| }
0x0000854c ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x0000854e ldr r1, [r7, 0x24] | r1 = *((r7 + 0x24));
0x00008550 b 0x82d0 | goto label_34;
| label_107:
0x00008552 mov r0, r4 | r0 = r4;
0x00008554 bl 0x77c8 | r0 = fcn_000077c8 (r0, r1);
0x00008558 cmp r0, 0 |
| if (r0 != 0) {
0x0000855a bne.w 0x83aa | goto label_35;
| }
0x0000855e b 0x8442 | goto label_33;
| label_92:
0x00008560 blx 0x2250 | sysconf ();
| label_101:
0x00008564 ldr r3, [pc, 0xc8] |
0x00008566 ldr.w sb, [sp, 0x1c] | sb = var_1ch;
0x0000856a ldr.w r8, [sp, 0x28] | r8 = var_28h;
0x0000856e add r3, pc |
0x00008570 ldrh.w r2, [sb, 0x2e] | r2 = *((sb + 0x2e));
0x00008574 ldr r3, [r3, 0x24] | r3 = *(0x10bc6);
0x00008576 ldr.w r1, [sb, 0x20] | r1 = *((sb + 0x20));
0x0000857a cmp r2, r3 |
0x0000857c ittt ne |
| if (r2 == r3) {
0x0000857e movne r2, 1 | r2 = 1;
| }
| if (r2 != r3) {
0x00008580 strhne r3, [sb, 0x2e] | __asm ("strhne r3, [sb, 0x2e]");
| }
| if (r2 != r3) {
0x00008584 str r2, [sp, 4] | var_4h = r2;
| }
0x00008586 mul r3, r3, r8 | r3 *= r8;
0x0000858a ldr.w r2, [fp, 0x2c] | r2 = *(arg_2ch);
0x0000858e lsls r2, r2, 0x1d | r2 <<= 0x1d;
| if (r2 < r2) {
0x00008590 bpl 0x85c0 |
0x00008592 add r1, r3 | r1 += r3;
0x00008594 cmp sl, r1 |
0x00008596 it lo |
| if (sl >= r1) {
0x00008598 movlo sl, r1 | sl = r1;
| }
0x0000859a b 0x8206 | goto label_36;
| label_88:
0x0000859c ldr r3, [pc, 0x94] |
0x0000859e movs r2, 0xd6 | r2 = 0xd6;
0x000085a0 ldr r1, [pc, 0x94] |
0x000085a2 ldr r0, [pc, 0x98] |
0x000085a4 add r3, pc | r3 = 0x10bdc;
0x000085a6 add r1, pc | r1 = 0x10be2;
0x000085a8 add r0, pc | r0 = 0x10bea;
0x000085aa blx 0x2424 | fchmod (r0, r1);
| label_83:
0x000085ae ldr r3, [pc, 0x90] |
0x000085b0 movs r2, 0xb4 | r2 = 0xb4;
0x000085b2 ldr r1, [pc, 0x90] |
0x000085b4 ldr r0, [pc, 0x90] |
0x000085b6 add r3, pc | r3 = 0x10bfc;
0x000085b8 add r1, pc | r1 = 0x10c02;
0x000085ba add r0, pc | r0 = 0x10c06;
0x000085bc blx 0x2424 | fchmod (r0, r1);
| }
0x000085c0 add.w r2, sl, 3 | r2 = sl + 3;
0x000085c4 bic r2, r2, 3 | r2 = BIT_MASK (r2, 3);
0x000085c8 cmp r1, r2 |
0x000085ca add.w sl, r3, r2 | sl = r3 + r2;
0x000085ce itttt ne |
| if (r1 == r2) {
0x000085d0 strne r2, [sb, 0x20] | *((sb + 0x20)) = r2;
| }
| if (r1 == r2) {
0x000085d4 ldrne r1, [fp, 0x2c] | r1 = *(arg_2ch);
| }
| if (r1 != r2) {
0x000085d8 orr r1, r1, 1 | r1 |= 1;
| }
| if (r1 != r2) {
0x000085dc str.w r1, [fp, 0x2c] | __asm ("str.w r1, [arg_2ch]");
| }
0x000085e0 b 0x8206 | goto label_36;
| label_102:
0x000085e2 ldr r3, [pc, 0x68] |
0x000085e4 movw r2, 0x1a7 |
0x000085e8 ldr r1, [pc, 0x64] |
0x000085ea ldr r0, [pc, 0x68] |
0x000085ec add r3, pc | r3 = 0x10c3e;
0x000085ee add r1, pc | r1 = 0x10c42;
0x000085f0 add r0, pc | r0 = 0x10c4a;
0x000085f2 blx 0x2424 | fchmod (r0, r1);
0x000085f6 nop |
0x000085f8 ldrb r4, [r5, 0x1c] | r4 = *((r5 + 0x1c));
0x000085fa movs r1, r0 | r1 = r0;
0x000085fc lsls r4, r7, 3 | r4 = r7 << 3;
0x000085fe movs r0, r0 |
0x00008600 ldrb r6, [r0, r6] | r6 = *((r0 + r6));
0x00008602 movs r0, r0 |
0x00008604 ldrsh r2, [r3, r1] | r2 = *((r3 + r1));
0x00008606 movs r0, r0 |
0x00008608 ldrsh r2, [r2, r0] | r2 = *((r2 + r0));
0x0000860a movs r0, r0 |
0x0000860c ldrb r6, [r0, r6] | r6 = *((r0 + r6));
0x0000860e movs r0, r0 |
0x00008610 str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
0x00008612 movs r0, r0 |
0x00008614 ldrb r2, [r3, 0x13] | r2 = *((r3 + 0x13));
0x00008616 movs r1, r0 | r1 = r0;
0x00008618 ldrh r6, [r0, r7] | r6 = *((r0 + r7));
0x0000861a movs r0, r0 |
0x0000861c ldrh r6, [r7, r1] | r6 = *((r7 + r1));
0x0000861e movs r0, r0 |
0x00008620 ldrh r6, [r5, r1] | r6 = *((r5 + r1));
0x00008622 movs r0, r0 |
0x00008624 ldrh r6, [r4, r1] | r6 = *((r4 + r1));
0x00008626 movs r0, r0 |
0x00008628 ldrh r6, [r3, r1] | r6 = *((r3 + r1));
0x0000862a movs r0, r0 |
0x0000862c ldrh r4, [r5, r0] | r4 = *((r5 + r0));
0x0000862e movs r0, r0 |
0x00008630 ldr r2, [r5, r5] | r2 = *((r5 + r5));
0x00008632 movs r0, r0 |
0x00008634 ldrsh r0, [r1, r4] | r0 = *((r1 + r4));
0x00008636 movs r0, r0 |
0x00008638 ldrsh r6, [r4, r1] | r6 = *((r4 + r1));
0x0000863a movs r0, r0 |
0x0000863c ldrsh r4, [r0, r3] | r4 = *((r0 + r3));
0x0000863e movs r0, r0 |
0x00008640 ldrsh r6, [r6, r3] | r6 = *((r6 + r3));
0x00008642 movs r0, r0 |
0x00008644 ldrsh r4, [r2, r1] | r4 = *((r2 + r1));
0x00008646 movs r0, r0 |
0x00008648 ldrsh r2, [r0, r2] | r2 = *((r0 + r2));
0x0000864a movs r0, r0 |
0x0000864c ldrsh r0, [r0, r3] | r0 = *((r0 + r3));
0x0000864e movs r0, r0 |
0x00008650 ldrsh r6, [r3, r0] | r6 = *((r3 + r0));
0x00008652 movs r0, r0 |
0x00008654 ldrsh r4, [r1, r2] | r4 = *((r1 + r2));
0x00008656 movs r0, r0 |
0x00008658 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000865c mov fp, r2 |
0x0000865e ldr.w r2, [pc, 0x768] | r2 = *(0x00008dc8);
0x00008662 sub sp, 0x44 |
0x00008664 mov sl, r0 | sl = r0;
0x00008666 mov r4, r1 | r4 = r1;
0x00008668 ldr.w r3, [pc, 0x760] | r3 = *(0x8dcc);
0x0000866c add r2, pc | r2 = 0x8817;
0x0000866e ldr r3, [r2, r3] |
0x00008670 ldr r3, [r3] | r3 = *(0x8817);
0x00008672 str r3, [sp, 0x3c] | var_3ch = r3;
0x00008674 mov.w r3, 0 | r3 = 0;
0x00008678 bl 0x4d80 | r0 = fcn_00004d80 (r0);
0x0000867c ldrb r3, [r0] | r3 = *(r0);
0x0000867e mov sb, r0 | sb = r0;
0x00008680 cmp r3, 0x7f |
| if (r3 == 0x7f) {
0x00008682 beq.w 0x8bb4 | goto label_111;
| }
| label_45:
0x00008686 ldr.w r3, [pc, 0x748] |
0x0000868a add r3, pc | r3 = 0x11460;
0x0000868c ldr r0, [r3] | r0 = *(0x11460);
0x0000868e str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x00008692 ldr.w r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x00008696 orr r3, r3, 1 | r3 |= 1;
0x0000869a str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
| label_46:
0x0000869e ldrb.w r3, [sb, 4] | r3 = *((sb + 4));
0x000086a2 cmp r3, 2 |
| if (r3 != 2) {
0x000086a4 beq 0x86b8 |
0x000086a6 movs r3, 2 | r3 = 2;
0x000086a8 strb.w r3, [sb, 4] | *((sb + 4)) = r3;
0x000086aa adds r0, 4 | r0 += 4;
0x000086ac ldr.w r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x000086b0 orr r3, r3, 1 | r3 |= 1;
0x000086b4 str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
| }
0x000086b8 ldrb.w r3, [sb, 5] | r3 = *((sb + 5));
0x000086bc cmp r3, 0 |
| if (r3 == 0) {
0x000086be beq.w 0x8c6c | goto label_112;
| }
0x000086c0 strh r5, [r2, 0x16] | *((r2 + 0x16)) = r5;
0x000086c2 cmp r3, 2 |
| if (r3 > 2) {
0x000086c4 bhi.w 0x8c94 | goto label_113;
| }
0x000086c8 subs r3, 1 | r3--;
0x000086ca it ne |
| if (r3 == 1) {
0x000086cc movne r3, 1 | r3 = 1;
| }
0x000086ce str r3, [r4] | *(r4) = r3;
| label_50:
0x000086d0 ldrb.w r3, [sb, 6] | r3 = *((sb + 6));
0x000086d4 cmp r3, 1 |
| if (r3 != 1) {
0x000086d6 beq 0x86ea |
0x000086d8 movs r3, 1 | r3 = 1;
0x000086da strb.w r3, [sb, 6] | *((sb + 6)) = r3;
0x000086de ldr.w r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x000086e2 orr r3, r3, 1 | r3 |= 1;
0x000086e6 str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
| }
0x000086ea ldr.w r3, [sb, 0x14] | r3 = *((sb + 0x14));
0x000086ee cmp r3, 0 |
| if (r3 == 0) {
0x000086f0 beq.w 0x8c80 | goto label_114;
| }
0x000086f4 cmp r3, 1 |
| if (r3 != 1) {
0x000086f6 bne.w 0x8ba6 | goto label_115;
| }
| label_51:
0x000086fa cmp.w fp, 0xff00 |
0x000086fe ldrh.w r3, [sb, 0x3c] | r3 = *((sb + 0x3c));
| if (fp >= 0xff00) {
0x00008702 bhs.w 0x8ca2 | goto label_116;
| }
0x00008706 cmp fp, r3 |
0x00008708 itttt ne |
| if (fp != r3) {
0x0000870a strhne fp, [sb, 0x3c] | __asm ("strhne fp, [sb, 0x3c]");
| }
| if (fp == r3) {
0x0000870e ldrne r3, [sl, 0x50] | r3 = *((sl + 0x50));
| }
| if (fp != r3) {
0x00008712 orr r3, r3, 1 | r3 |= 1;
| }
| if (fp != r3) {
0x00008716 str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
| }
| label_52:
0x0000871a ldr.w r3, [pc, 0x6b8] |
0x0000871e ldrh.w r2, [sb, 0x34] | r2 = *((sb + 0x34));
0x00008722 add r3, pc | r3 = 0x114fc;
0x00008724 ldr r4, [r3, 0x78] | r4 = *(0x11574);
0x00008726 cmp r2, r4 |
0x00008728 itttt ne |
| if (r2 != r4) {
0x0000872a strhne r4, [sb, 0x34] | __asm ("strhne r4, [sb, 0x34]");
| }
| if (r2 == r4) {
0x0000872e ldrne r3, [sl, 0x50] | r3 = *((sl + 0x50));
| }
| if (r2 != r4) {
0x00008732 orr r3, r3, 1 | r3 |= 1;
| }
| if (r2 != r4) {
0x00008736 str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
| }
0x0000873a ldrh.w r3, [sb, 0x38] | r3 = *((sb + 0x38));
0x0000873e cmp r3, 0 |
0x00008740 beq.w 0x8894 |
| while (r3 == r2) {
0x00008744 ldr.w r3, [sl, 0x40] | r3 = *((sl + 0x40));
0x00008748 movs r5, 0 | r5 = 0;
0x0000874a strd r5, r4, [sp, 4] | __asm ("strd r5, r4, [var_8h_2]");
0x0000874e cmp r3, 0 |
| if (r3 == 0) {
0x00008750 beq.w 0x88c2 | goto label_117;
| }
| label_37:
0x00008754 add r1, sp, 0x38 | r1 += var_38h;
0x00008756 mov r0, sl | r0 = sl;
0x00008758 bl 0xbee8 | fcn_0000bee8 (r0, r1);
0x0000875c str r0, [sp, 0xc] | var_ch_2 = r0;
0x0000875e cmp r0, 0 |
| if (r0 != 0) {
0x00008760 bne.w 0x8bde | goto label_118;
| }
0x00008764 ldr.w r3, [pc, 0x670] |
0x00008768 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000876a ldrd r1, r0, [sb, 0x20] | __asm ("ldrd r1, r0, [sb, 0x20]");
0x0000876e add r3, pc |
0x00008770 ldr r6, [sp, 0xc] | r6 = var_ch_2;
0x00008772 ldr.w r3, [r3, 0x84] | r3 = *(0x115ce);
0x00008776 mul r3, r2, r3 | r3 = r2 * r3;
0x0000877a ldr.w r2, [sl, 0x2c] | r2 = *((sl + 0x2c));
0x0000877e lsls r7, r2, 0x1d | r7 = r2 << 0x1d;
| if (r7 >= r2) {
0x00008780 bpl.w 0x890e | goto label_119;
| }
0x00008784 adds r1, r1, r3 | r1 += r3;
0x00008786 adc r0, r0, 0 | __asm ("adc r0, r0, 0");
0x0000878a cmp r4, r1 |
0x0000878c sbcs r5, r0 | __asm ("sbcs r5, r0");
0x0000878e it lo |
| if (r4 < r1) {
0x00008790 strdlo r0, r1, [sp, 4] | __asm ("strdlo r0, r1, [var_8h_2]");
| }
| label_39:
0x00008794 cmp.w fp, 0 |
| if (fp == 0) {
0x00008798 beq.w 0x88de | goto label_53;
| }
| label_38:
0x0000879c ldr.w r3, [sl, 0xa8] | r3 = *((sl + 0xa8));
0x000087a0 cmp r3, 0 |
| if (r3 == 0) {
0x000087a2 beq.w 0x8d7a | goto label_120;
| }
0x000087a6 cmp.w fp, 0xff00 |
| if (fp > 0xff00) {
0x000087aa blo 0x87ce |
0x000087ac ldr.w r2, [sl, 0x128] | r2 = *((sl + 0x128));
0x000087b0 movs r4, 0 | r4 = 0;
0x000087b2 ldrd r0, r1, [r2, 0x20] | __asm ("ldrd r0, r1, [r2, 0x20]");
0x000087b6 cmp r1, r4 |
0x000087b8 it eq |
| if (r1 == r4) {
0x000087ba cmpeq r0, fp | __asm ("cmpeq r0, fp");
| }
0x000087bc itttt ne |
| if (r1 != r4) {
0x000087be strdne fp, r4, [r2, 0x20] | __asm ("strdne fp, r4, [r2, 0x20]");
| }
| if (r1 == r4) {
0x000087c2 ldrne r2, [sl, 0x12c] | r2 = *((sl + 0x12c));
| }
| if (r1 != r4) {
0x000087c6 orr r2, r2, 1 | r2 |= 1;
| }
| if (r1 == r4) {
0x000087ca str.w r2, [sl, 0x12c] | __asm ("str.w r2, aav.0x000000ff");
| goto label_121;
| }
| }
| label_121:
0x000087ce cmp r3, 1 |
0x000087d0 add.w r2, sl, 0xa8 | r2 = sl + 0xa8;
0x000087d4 it ne |
| if (r3 == 1) {
0x000087d6 addne r0, sl, 0x150 | r0 = sl + 0x150;
| }
0x000087da str r2, [sp, 0x10] | var_10h_2 = r2;
| if (r3 == 1) {
0x000087dc beq.w 0x8c5e | goto label_122;
| }
| label_49:
0x000087e0 ldr r3, [r0, 0x70] | r3 = *((r0 + 0x70));
0x000087e2 cmp r3, 0 |
| if (r3 == 0) {
0x000087e4 beq.w 0x8cc6 | goto label_123;
| }
| label_48:
0x000087e8 movw r3, 0xfffa |
0x000087ec movs r0, 1 | r0 = 1;
0x000087ee movt r3, 0x6fff | r3 = 0x6ffffffa;
0x000087f2 str.w sb, [sp, 0x28] | __asm ("str.w sb, [var_28h_2]");
0x000087f6 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x000087f8 movw r3, 0xfffc |
0x000087fc movt r3, 0x6fff | r3 = 0x6ffffffc;
0x00008800 str.w fp, [sp, 0x34] | __asm ("str.w fp, [var_34h_2]");
0x00008804 str r3, [sp, 0x20] | var_20h_2 = r3;
0x00008806 ldr.w r3, [pc, 0x5d4] |
0x0000880a add r3, pc | r3 = 0x115ec;
0x0000880c str r3, [sp, 0x2c] | var_2ch = r3;
0x0000880e ldr.w r3, [pc, 0x5d0] |
0x00008812 add r3, pc | r3 = 0x115f8;
0x00008814 str r3, [sp, 0x24] | var_24h = r3;
0x00008816 movs r3, 0 | r3 = 0;
0x00008818 str r3, [sp, 0x14] | var_14h_3 = r3;
| label_40:
0x0000881a ldr r2, [sp, 0x10] | r2 = var_10h_2;
0x0000881c str r0, [sp, 0x18] | var_18h_2 = r0;
0x0000881e ldr r3, [r2] | r3 = *(r2);
0x00008820 cmp r0, r3 |
| if (r0 >= r3) {
0x00008822 bhs.w 0x8a28 | goto label_124;
| }
0x00008826 movs r3, 0x98 | r3 = 0x98;
0x00008828 mla r3, r3, r0, r2 | __asm ("mla r3, r3, r0, r2");
0x0000882c add.w fp, r3, 0x10 |
0x00008830 ldr.w r5, [fp, 0x70] | r5 = *(arg_70h);
0x00008834 cmp r5, 0 |
| if (r5 == 0) {
0x00008836 beq.w 0x8d68 | goto label_125;
| }
0x0000883a ldrd r6, r7, [r5, 0x30] | __asm ("ldrd r6, r7, [r5, 0x30]");
0x0000883e ldrd r1, r2, [r5, 0x38] | __asm ("ldrd r1, r2, [r5, 0x38]");
0x00008842 orrs.w r3, r6, r7 | r3 = r6 | r7;
0x00008846 itt eq |
| if (r3 != r6) {
0x00008848 moveq r6, 1 | r6 = 1;
| }
| if (r3 != r6) {
0x0000884a moveq r7, 0 | r7 = 0;
| }
0x0000884c subs r0, r6, 1 | r0 = r6 - 1;
0x0000884e adc r3, r7, -1 | __asm ("adc r3, r7, -1");
0x00008852 ands r0, r6 | r0 &= r6;
0x00008854 ands r3, r7 | r3 &= r7;
0x00008856 orrs r3, r0 | r3 |= r0;
| if (r3 != r0) {
0x00008858 bne.w 0x8be6 | goto label_126;
| }
0x0000885c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0000885e cmp r3, 0x12 |
| if (r3 > 0x12) {
0x00008860 bhi.w 0x8a40 | goto label_127;
| }
0x00008864 cmp r3, 1 |
| if (r3 < 1) {
0x00008866 bls 0x8946 | goto label_41;
| }
0x00008868 subs r3, 2 | r3 -= 2;
0x0000886a cmp r3, 0x10 |
| if (r3 > 0x10) {
0x0000886c bhi 0x892a | goto label_128;
| }
| /* switch table (18 cases) at 0x8872 */
0x0000886e tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
0x00008894 ldrd r3, r2, [sb, 0x20] | __asm ("ldrd r3, r2, [sb, 0x20]");
0x00008898 orrs r3, r2 | r3 |= r2;
0x0000889a beq.w 0x8744 |
| }
0x0000889e vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000088a2 movs r5, 0 | r5 = 0;
0x000088a4 strd r5, r4, [sp, 4] | __asm ("strd r5, r4, [var_8h_2]");
0x000088a8 vstr d16, [sb, 0x20] | __asm ("vstr d16, [sb, 0x20]");
0x000088ac ldr.w r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x000088b0 orr r3, r3, 1 | r3 |= 1;
0x000088b4 str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
0x000088b8 ldr.w r3, [sl, 0x40] | r3 = *((sl + 0x40));
0x000088bc cmp r3, 0 |
| if (r3 != 0) {
0x000088be bne.w 0x8754 | goto label_37;
| }
| label_117:
0x000088c2 mov r0, sl | r0 = sl;
0x000088c4 bl 0x52e8 | fcn_000052e8 (r0);
0x000088c8 ldr.w r3, [sl, 0x40] | r3 = *((sl + 0x40));
0x000088cc cmp r3, 0 |
| if (r3 != 0) {
0x000088ce bne.w 0x8754 | goto label_37;
| }
0x000088d2 ldr r3, [sp, 4] | r3 = var_4h_2;
0x000088d4 str r3, [sp, 0xc] | var_ch_2 = r3;
0x000088d6 cmp.w fp, 0 |
| if (fp != 0) {
0x000088da bne.w 0x879c | goto label_38;
| }
| label_53:
0x000088de ldr.w r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x000088e2 ldr r2, [sp, 0xc] | r2 = var_ch_2;
0x000088e4 ldrd r1, r0, [sp, 4] | __asm ("ldrd r1, r0, [var_8h_2]");
0x000088e8 orrs r3, r2 | r3 |= r2;
0x000088ea str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
| label_44:
0x000088ee ldr.w r2, [pc, 0x4f4] | r2 = *(0x00008de4);
0x000088f2 ldr.w r3, [pc, 0x4d8] | r3 = *(0x8dce);
0x000088f6 add r2, pc | r2 += pc;
0x000088f8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000088fa ldr r2, [r3] | r2 = *(0x8dce);
0x000088fc ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000088fe eors r2, r3 | r2 ^= r3;
0x00008900 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00008904 bne.w 0x8d1a | goto label_129;
| }
0x00008908 add sp, 0x44 |
0x0000890a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_119:
0x0000890e cmp r0, r5 |
0x00008910 it eq |
| if (r0 == r5) {
0x00008912 cmpeq r1, r4 | __asm ("cmpeq r1, r4");
| }
0x00008914 ittt ne |
| if (r0 == r5) {
0x00008916 movne r2, 1 | r2 = 1;
| }
| if (r0 != r5) {
0x00008918 strdne r4, r5, [sb, 0x20] | __asm ("strdne r4, r5, [sb, 0x20]");
| }
| if (r0 != r5) {
0x0000891c str r2, [sp, 0xc] | var_ch_2 = r2;
| }
0x0000891e adds r4, r4, r3 | r4 += r3;
0x00008920 adc r3, r6, 0 | __asm ("adc r3, r6, 0");
0x00008924 str r4, [sp, 8] | var_8h_2 = r4;
0x00008926 str r3, [sp, 4] | var_4h_2 = r3;
0x00008928 b 0x8794 | goto label_39;
| label_128:
0x0000892a mov r0, r1 | r0 = r1;
0x0000892c mov r3, r2 | r3 = r2;
| label_42:
0x0000892e cmp r3, r2 |
0x00008930 it eq |
| if (r3 == r2) {
0x00008932 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
0x00008934 itttt ne |
| if (r3 != r2) {
0x00008936 strdne r0, r3, [r5, 0x38] | __asm ("strdne r0, r3, [r5, 0x38]");
| }
| if (r3 == r2) {
0x0000893a ldrne r3, [fp, 0x74] | r3 = *(arg_74h);
| }
| if (r3 != r2) {
0x0000893e orr r3, r3, 1 | r3 |= 1;
| }
| if (r3 != r2) {
0x00008942 str.w r3, [fp, 0x74] | __asm ("str.w r3, [arg_74h]");
| }
| label_41:
0x00008946 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00008948 movs r2, 0 | r2 = 0;
0x0000894a lsls r4, r3, 0x14 | r4 = r3 << 0x14;
| if (r4 < r3) {
0x0000894c bpl 0x8978 |
0x0000894e ldr r3, [sp, 0x24] | r3 = var_24h;
0x00008950 mov r7, r2 | r7 = r2;
0x00008952 ldrb.w r6, [r3, 0x34] | r6 = *((r3 + 0x34));
0x00008956 ldrd r2, r3, [r5, 0x30] | __asm ("ldrd r2, r3, [r5, 0x30]");
0x0000895a cmp r6, 1 |
0x0000895c it lo |
| if (r6 >= 1) {
0x0000895e movlo r6, 1 | r6 = 1;
| }
0x00008960 cmp r3, r7 |
0x00008962 it eq |
| if (r3 == r7) {
0x00008964 cmpeq r2, r6 | __asm ("cmpeq r2, r6");
| }
0x00008966 itttt ne |
| if (r3 != r7) {
0x00008968 strdne r6, r7, [r5, 0x30] | __asm ("strdne r6, r7, [r5, 0x30]");
| }
| if (r3 == r7) {
0x0000896c ldrne r3, [fp, 0x74] | r3 = *(arg_74h);
| }
| if (r3 != r7) {
0x00008970 orr r3, r3, 1 | r3 |= 1;
| }
| if (r3 == r7) {
0x00008974 str.w r3, [fp, 0x74] | __asm ("str.w r3, [arg_74h]");
| goto label_130;
| }
| }
| label_130:
0x00008978 ldr.w r3, [fp, 0x60] | r3 = *(arg_60h);
0x0000897c cmp r3, 0 |
| if (r3 == 0) {
0x0000897e beq.w 0x8bd2 | goto label_131;
| }
| label_47:
0x00008982 ldr.w r3, [fp, 0x30] | r3 = *(arg_30h);
0x00008986 cmp r3, 0 |
| if (r3 != 0) {
0x00008988 bne 0x8a5c | goto label_132;
| }
0x0000898a ldr.w r2, [sl, 0x2c] | r2 = *((sl + 0x2c));
0x0000898e mov r8, r3 | r8 = r3;
0x00008990 ldr.w r4, [fp, 0x44] | r4 = *(arg_44h);
0x00008994 and r2, r2, 4 | r2 &= 4;
0x00008998 cmp r2, 0 |
| if (r2 == 0) {
0x0000899a beq.w 0x8ac6 | goto label_133;
| }
0x0000899e ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000089a0 ldrd r1, r0, [r5, 0x20] | __asm ("ldrd r1, r0, [r5, 0x20]");
0x000089a4 cmp r3, 8 |
| if (r3 != 8) {
0x000089a6 beq 0x89c0 |
0x000089a8 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000089aa ldr r4, [sp, 8] | r4 = var_8h_2;
0x000089ac ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x000089ae adds r3, r1, r3 | r3 = r1 + r3;
0x000089b0 adc.w r2, r0, r2 | __asm ("adc.w r2, r0, r2");
0x000089b4 cmp r4, r3 |
0x000089b6 ldr r4, [sp, 4] | r4 = var_4h_2;
0x000089b8 sbcs r4, r2 | __asm ("sbcs r4, r2");
0x000089ba it lo |
| if (r4 >= r3) {
0x000089bc strdlo r2, r3, [sp, 4] | __asm ("strdlo r2, r3, [var_8h_2]");
| goto label_134;
| }
| }
| label_134:
0x000089c0 orrs r0, r1 | r0 |= r1;
| if (r0 == r1) {
0x000089c2 beq 0x89ea | void (*0x89ea)() ();
| }
| label_124:
0x00008a28 ldr r1, [sp, 0x10] | r1 = var_10h_2;
0x00008a2a ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00008a2c cmp r2, 0 |
| if (r2 == 0) {
0x00008a2e beq.w 0x8d1e | goto label_135;
| }
0x00008a32 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00008a34 movs r0, 0 | r0 = 0;
0x00008a36 cmp r1, r3 |
| if (r1 != r3) {
0x00008a38 bne.w 0x8db4 | goto label_136;
| }
0x00008a3c str r2, [sp, 0x10] | var_10h_2 = r2;
0x00008a3e b 0x881a | goto label_40;
| label_127:
0x00008a40 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x00008a42 cmp r3, r0 |
| if (r3 == r0) {
0x00008a44 beq.w 0x8cbc | goto label_137;
| }
0x00008a48 ldr r0, [sp, 0x20] | r0 = var_20h_2;
0x00008a4a cmp r3, r0 |
| if (r3 != r0) {
0x00008a4c bne.w 0x8946 | goto label_41;
| }
0x00008a50 ldr r3, [pc, 0x394] |
0x00008a52 add r3, pc | r3 = 0x1183e;
0x00008a54 ldr.w r0, [r3, 0xbc] | r0 = *(0x118fa);
0x00008a58 movs r3, 0 | r3 = 0;
0x00008a5a b 0x892e | goto label_42;
| label_132:
0x00008a5c movs r4, 0 | r4 = 0;
0x00008a5e mov r0, fp | r0 = fp;
0x00008a60 mov sb, r4 | sb = r4;
0x00008a62 add.w r3, fp, 0x38 | r3 += arg_38h;
0x00008a66 str r3, [sp, 0x30] | var_30h_2 = r3;
0x00008a68 cmp fp, r0 |
0x00008a6a mov r1, r0 | r1 = r0;
| if (fp == r0) {
0x00008a6c beq.w 0x8b88 | goto label_138;
| }
| label_43:
0x00008a70 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00008a72 cmp r3, 1 |
| if (r3 != 1) {
0x00008a74 bne.w 0x8ba6 | goto label_115;
| }
| label_133:
0x00008ac6 ldrd r1, r3, [r5, 0x30] | __asm ("ldrd r1, r3, [r5, 0x30]");
0x00008aca cmp r3, r7 |
0x00008acc it eq |
| if (r3 == r7) {
0x00008ace cmpeq r1, r6 | __asm ("cmpeq r1, r6");
| }
0x00008ad0 ldr r1, [sp, 4] | r1 = var_4h_2;
0x00008ad2 itttt ne |
| if (r3 != r7) {
0x00008ad4 strdne r6, r7, [r5, 0x30] | __asm ("strdne r6, r7, [r5, 0x30]");
| }
| if (r3 == r7) {
0x00008ad8 ldrne r3, [fp, 0x74] | r3 = *(arg_74h);
| }
| if (r3 != r7) {
0x00008adc orr r3, r3, 1 | r3 |= 1;
| }
| if (r3 != r7) {
0x00008ae0 str.w r3, [fp, 0x74] | __asm ("str.w r3, [arg_74h]");
| }
0x00008ae4 ldr r3, [sp, 8] | r3 = var_8h_2;
0x00008ae6 subs r3, 1 | r3--;
0x00008ae8 adc r1, r1, -1 | __asm ("adc r1, r1, -1");
0x00008aec adds r3, r3, r6 | r3 += r6;
0x00008aee adc.w r1, r7, r1 | __asm ("adc.w r1, r7, r1");
0x00008af2 rsbs r6, r6, 0 | r6 -= ;
0x00008af4 sbc.w r7, r7, r7, lsl 1 | __asm ("sbc.w r7, r7, r7, lsl 1");
0x00008af8 and.w r0, r6, r3 | r0 = r6 & r3;
0x00008afc str r0, [sp, 8] | var_8h_2 = r0;
0x00008afe and.w r6, r7, r1 | r6 = r7 & r1;
0x00008b02 ldrd r1, r3, [r5, 0x18] | __asm ("ldrd r1, r3, [r5, 0x18]");
0x00008b06 str r6, [sp, 4] | var_4h_2 = r6;
0x00008b08 cmp r3, r6 |
0x00008b0a it eq |
| if (r3 == r6) {
0x00008b0c cmpeq r1, r0 | __asm ("cmpeq r1, r0");
| }
| if (r3 == r6) {
0x00008b0e beq 0x8b24 | goto label_139;
| }
0x00008b10 strd r0, r6, [r5, 0x18] | __asm ("strd r0, r6, [r5, 0x18]");
0x00008b14 ldr.w r1, [fp, 0x30] | r1 = *(arg_30h);
0x00008b18 cmp r1, 0 |
| if (r1 == 0) {
0x00008b1a beq.w 0x8d0c | void (*0x8d0c)() ();
| }
| label_139:
0x00008b24 ldrd r1, r3, [r5, 0x20] | __asm ("ldrd r1, r3, [r5, 0x20]");
0x00008b28 cmp r3, r8 |
0x00008b2a it eq |
| if (r3 == r8) {
0x00008b2c cmpeq r1, r4 | __asm ("cmpeq r1, r4");
| }
0x00008b2e itttt ne |
| if (r3 == r8) {
0x00008b30 movne r3, 1 | r3 = 1;
| }
| if (r3 != r8) {
0x00008b32 strdne r4, r8, [r5, 0x20] | __asm ("strdne r4, r8, [r5, 0x20]");
| }
| if (r3 == r8) {
0x00008b36 movne r2, r3 | r2 = r3;
| }
| if (r3 != r8) {
0x00008b38 str r3, [sp, 0x14] | var_14h_3 = r3;
| }
0x00008b3a ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00008b3c cmp r3, 8 |
| if (r3 == 8) {
0x00008b3e beq 0x8b4e | void (*0x8b4e)() ();
| }
| label_138:
0x00008b88 ldr.w r3, [fp] | r3 = *(fp);
0x00008b8c cmp r3, 0 |
| if (r3 != 0) {
0x00008b8e bne.w 0x8a70 | goto label_43;
| }
0x00008b92 ldr.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x00008b96 ldr r1, [sp, 0x30] | r1 = var_30h_2;
0x00008b98 cmp r3, 0 |
0x00008b9a it eq |
| if (r3 != 0) {
0x00008b9c moveq r1, fp | r1 = fp;
| }
0x00008b9e ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00008ba0 cmp r3, 1 |
| if (r3 == 1) {
0x00008ba2 beq.w 0x8a78 | void (*0x8a78)() ();
| }
| label_115:
0x00008ba6 movs r0, 2 | r0 = 2;
0x00008ba8 bl 0x259c | fcn_0000259c (r0);
0x00008bac mov.w r0, -1 | r0 = -1;
0x00008bb0 mov r1, r0 | r1 = r0;
0x00008bb2 b 0x88ee | goto label_44;
| label_111:
0x00008bb4 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00008bb6 adds r2, r0, 1 | r2 = r0 + 1;
0x00008bb8 cmp r3, 0x45 |
| if (r3 != 0x45) {
0x00008bba bne.w 0x8686 | goto label_45;
| }
0x00008bbe ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00008bc2 cmp r3, 0x4c |
| if (r3 != 0x4c) {
0x00008bc4 bne.w 0x8686 | goto label_45;
| }
0x00008bc8 ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x00008bca cmp r3, 0x46 |
| if (r3 != 0x46) {
0x00008bcc bne.w 0x8686 | goto label_45;
| }
0x00008bd0 b 0x869e | goto label_46;
| label_131:
0x00008bd2 mov r0, fp | r0 = fp;
0x00008bd4 bl 0x7330 | r0 = fcn_00007330 (r0, r1);
0x00008bd8 cmp r0, 0 |
| if (r0 == 0) {
0x00008bda beq.w 0x8982 | goto label_47;
| }
| label_118:
0x00008bde mov.w r0, -1 | r0 = -1;
0x00008be2 mov r1, r0 | r1 = r0;
0x00008be4 b 0x88ee | goto label_44;
| label_126:
0x00008be6 movs r0, 0x24 | r0 = 0x24;
0x00008be8 bl 0x259c | fcn_0000259c (r0);
0x00008bec mov.w r0, -1 | r0 = -1;
0x00008bf0 mov r1, r0 | r1 = r0;
0x00008bf2 b 0x88ee | goto label_44;
0x00008bf4 ldr r3, [pc, 0x1f4] |
0x00008bf6 add r3, pc | r3 = 0x119e6;
0x00008bf8 ldr.w r0, [r3, 0x98] | r0 = *(0x11a7e);
0x00008bfc movs r3, 0 | r3 = 0;
0x00008bfe b 0x892e | goto label_42;
0x00008c00 ldr r3, [sp, 0x28] | r3 = var_28h_2;
0x00008c02 ldrh r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00008c04 cmp r3, 1 |
| if (r3 != 1) {
0x00008c06 bne 0x8ce8 | goto label_140;
| }
0x00008c08 ldr r3, [pc, 0x1e4] |
0x00008c0a add r3, pc | r3 = 0x119fe;
0x00008c0c ldr r0, [r3, 0x30] | r0 = *(0x11a2e);
0x00008c0e movs r3, 0 | r3 = 0;
0x00008c10 b 0x892e | goto label_42;
0x00008c12 ldr r3, [pc, 0x1e0] |
0x00008c14 add r3, pc | r3 = 0x11a0e;
0x00008c16 ldr.w r0, [r3, 0x8c] | r0 = *(0x11a9a);
0x00008c1a movs r3, 0 | r3 = 0;
0x00008c1c b 0x892e | goto label_42;
0x00008c1e ldr r3, [pc, 0x1d8] |
0x00008c20 add r3, pc | r3 = 0x11a1e;
0x00008c22 ldr r0, [r3, 0x74] | r0 = *(0x11a92);
0x00008c24 movs r3, 0 | r3 = 0;
0x00008c26 b 0x892e | goto label_42;
0x00008c28 ldr r3, [sp, 0x28] | r3 = var_28h_2;
0x00008c2a movw r0, 0x9026 | r0 = 0x9026;
0x00008c2e ldrh r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x00008c30 cmp r3, r0 |
| if (r3 == r0) {
0x00008c32 beq 0x8cd4 | goto label_141;
| }
0x00008c34 cmp r3, 0x16 |
0x00008c36 itt ne |
| if (r3 == 0x16) {
0x00008c38 movne r0, 4 | r0 = 4;
| }
| if (r3 != 0x16) {
0x00008c3a movne r3, 0 | r3 = 0;
| goto label_142;
| }
| if (r3 != 0x16) {
| label_142:
0x00008c3c bne.w 0x892e | goto label_42;
| }
0x00008c40 ldr r3, [sp, 0x28] | r3 = var_28h_2;
0x00008c42 ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x00008c44 cmp r3, 2 |
0x00008c46 mov.w r3, 0 | r3 = 0;
0x00008c4a ite ne |
| if (r3 == 2) {
0x00008c4c movne r0, 4 | r0 = 4;
| }
| if (r3 != 2) {
0x00008c4e moveq r0, 8 | r0 = 8;
| }
0x00008c50 b 0x892e | goto label_42;
0x00008c52 ldr r3, [pc, 0x1a8] |
0x00008c54 add r3, pc | r3 = 0x11a56;
0x00008c56 ldr.w r0, [r3, 0x88] | r0 = *(0x11ade);
0x00008c5a movs r3, 0 | r3 = 0;
0x00008c5c b 0x892e | goto label_42;
| label_122:
0x00008c5e ldr.w r0, [sl, 0xb0] | r0 = *((sl + 0xb0));
0x00008c62 cmp r0, 0 |
| if (r0 == 0) {
0x00008c64 beq.w 0x87e8 | goto label_48;
| }
0x00008c68 adds r0, 0x10 | r0 += 0x10;
0x00008c6a b 0x87e0 | goto label_49;
| label_112:
0x00008c6c movs r3, 1 | r3 = 1;
0x00008c6e strb.w r3, [sb, 5] | *((sb + 5)) = r3;
0x00008c72 ldr.w r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x00008c76 orr r3, r3, 1 | r3 |= 1;
0x00008c7a str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
0x00008c7e b 0x86d0 | goto label_50;
| label_114:
0x00008c80 movs r3, 1 | r3 = 1;
0x00008c82 str.w r3, [sb, 0x14] | __asm ("str.w r3, [sb, 0x14]");
0x00008c86 ldr.w r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x00008c8a orr r3, r3, 1 | r3 |= 1;
0x00008c8e str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
0x00008c92 b 0x86fa | goto label_51;
| label_113:
0x00008c94 movs r0, 0x22 | r0 = 0x22;
0x00008c96 bl 0x259c | fcn_0000259c (r0);
0x00008c9a mov.w r0, -1 | r0 = -1;
0x00008c9e mov r1, r0 | r1 = r0;
0x00008ca0 b 0x88ee | goto label_44;
| label_116:
0x00008ca2 cmp r3, 0 |
| if (r3 == 0) {
0x00008ca4 beq.w 0x871a | goto label_52;
| }
0x00008ca8 movs r3, 0 | r3 = 0;
0x00008caa strh.w r3, [sb, 0x3c] | *((sb + 0x3c)) = r3;
0x00008cae ldr.w r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x00008cb2 orr r3, r3, 1 | r3 |= 1;
0x00008cb6 str.w r3, [sl, 0x50] | __asm ("str.w r3, [sl, 0x50]");
0x00008cba b 0x871a | goto label_52;
| label_137:
0x00008cbc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00008cbe ldr.w r0, [r3, 0xc0] | r0 = *((r3 + 0xc0));
0x00008cc2 movs r3, 0 | r3 = 0;
0x00008cc4 b 0x892e | goto label_42;
| label_123:
0x00008cc6 bl 0x6ef4 | fcn_00006ef4 (r0);
0x00008cca b 0x87e8 | goto label_48;
| label_141:
0x00008cd4 movs r0, 8 | r0 = 8;
0x00008cd6 movs r3, 0 | r3 = 0;
0x00008cd8 b 0x892e | goto label_42;
| label_140:
0x00008ce8 movs r0, 0x28 | r0 = 0x28;
0x00008cea bl 0x259c | fcn_0000259c (r0);
0x00008cee mov.w r0, -1 | r0 = -1;
0x00008cf2 mov r1, r0 | r1 = r0;
0x00008cf4 b 0x88ee | goto label_44;
| label_129:
0x00008d1a blx 0x2250 | sysconf ();
| label_135:
0x00008d1e ldr r3, [pc, 0xe0] |
0x00008d20 movs r4, 0 | r4 = 0;
0x00008d22 ldr.w sb, [sp, 0x28] | sb = var_28h_2;
0x00008d26 ldr.w r0, [sl, 0x2c] | r0 = *((sl + 0x2c));
0x00008d2a add r3, pc |
0x00008d2c ldr.w fp, [sp, 0x34] | fp = var_34h_2;
0x00008d30 ldrh.w r2, [sb, 0x3a] | r2 = *((sb + 0x3a));
0x00008d34 ldr.w r3, [r3, 0x90] | r3 = *(0x11bc0);
0x00008d38 ldrd r5, r1, [sb, 0x28] | __asm ("ldrd r5, r1, [sb, 0x28]");
0x00008d3c cmp r2, r3 |
0x00008d3e ittt ne |
| if (r2 == r3) {
0x00008d40 movne r2, 1 | r2 = 1;
| }
| if (r2 != r3) {
0x00008d42 strhne r3, [sb, 0x3a] | __asm ("strhne r3, [sb, 0x3a]");
| }
| if (r2 != r3) {
0x00008d46 str r2, [sp, 0xc] | var_ch_2 = r2;
| }
0x00008d48 lsls r2, r0, 0x1d | r2 = r0 << 0x1d;
0x00008d4a mul r3, r3, fp | r3 *= fp;
| if (r2 >= r0) {
0x00008d4e bpl 0x8d8c | goto label_143;
| }
0x00008d50 ldr r2, [sp, 8] | r2 = var_8h_2;
0x00008d52 adds r3, r3, r5 | r3 += r5;
0x00008d54 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00008d58 cmp r2, r3 |
0x00008d5a ldr r2, [sp, 4] | r2 = var_4h_2;
0x00008d5c sbcs r2, r1 | __asm ("sbcs r2, r1");
| if (r2 >= r3) {
0x00008d5e bhs.w 0x88de | goto label_53;
| }
0x00008d62 strd r1, r3, [sp, 4] | __asm ("strd r1, r3, [var_8h_2]");
0x00008d66 b 0x88de | goto label_53;
| label_125:
0x00008d68 ldr r3, [pc, 0x98] |
0x00008d6a movs r2, 0xd6 | r2 = 0xd6;
0x00008d6c ldr r1, [pc, 0x98] |
0x00008d6e ldr r0, [pc, 0x9c] |
0x00008d70 add r3, pc | r3 = 0x11b78;
0x00008d72 add r1, pc | r1 = 0x11b7e;
0x00008d74 add r0, pc | r0 = 0x11b86;
0x00008d76 blx 0x2424 | fchmod (r0, r1);
| label_120:
0x00008d7a ldr r3, [pc, 0x94] |
0x00008d7c movs r2, 0xb4 | r2 = 0xb4;
0x00008d7e ldr r1, [pc, 0x94] |
0x00008d80 ldr r0, [pc, 0x94] |
0x00008d82 add r3, pc | r3 = 0x11b98;
0x00008d84 add r1, pc | r1 = 0x11b9e;
0x00008d86 add r0, pc | r0 = 0x11ba2;
0x00008d88 blx 0x2424 | fchmod (r0, r1);
| label_143:
0x00008d8c ldr r2, [sp, 8] | r2 = var_8h_2;
0x00008d8e adds r2, 7 | r2 += 7;
0x00008d90 bic r2, r2, 7 | r2 = BIT_MASK (r2, 7);
0x00008d94 cmp r1, r4 |
0x00008d96 it eq |
| if (r1 == r4) {
0x00008d98 cmpeq r5, r2 | __asm ("cmpeq r5, r2");
| }
0x00008d9a ittt ne |
| if (r1 == r4) {
0x00008d9c orrne r0, r0, 1 | r0 |= 1;
| }
| if (r1 != r4) {
0x00008da0 strdne r2, r4, [sb, 0x28] | __asm ("strdne r2, r4, [sb, 0x28]");
| }
| if (r1 != r4) {
0x00008da4 str.w r0, [sl, 0x2c] | __asm ("str.w r0, [sl, 0x2c]");
| }
0x00008da8 adds r3, r3, r2 | r3 += r2;
0x00008daa str r3, [sp, 8] | var_8h_2 = r3;
0x00008dac adc r3, r4, 0 | __asm ("adc r3, r4, 0");
0x00008db0 str r3, [sp, 4] | var_4h_2 = r3;
0x00008db2 b 0x88de | goto label_53;
| label_136:
0x00008db4 ldr r3, [pc, 0x64] |
0x00008db6 movw r2, 0x1a7 | r2 = 0x1a7;
0x00008dba ldr r1, [pc, 0x64] |
0x00008dbc ldr r0, [pc, 0x64] |
0x00008dbe add r3, pc | r3 = 0x11bde;
0x00008dc0 add r1, pc |
0x00008dc2 add r0, pc |
0x00008dc4 blx 0x2424 | fchmod (r0, r1);
0x00008dc8 ldrb r0, [r1, 2] | r0 = *((r1 + 2));
0x00008dca movs r1, r0 | r1 = r0;
0x00008dcc lsls r4, r7, 3 | r4 = r7 << 3;
0x00008dce movs r0, r0 |
0x00008dd0 ldrsb r2, [r4, r3] | r2 = *((r4 + r3));
0x00008dd2 movs r0, r0 |
0x00008dd4 ldrsb r6, [r6, r6] | r6 = *((r6 + r6));
0x00008dd6 movs r0, r0 |
0x00008dd8 ldrsb r2, [r5, r5] | r2 = *((r5 + r5));
0x00008dda movs r0, r0 |
0x00008ddc ldrsb r6, [r1, r3] | r6 = *((r1 + r3));
0x00008dde movs r0, r0 |
0x00008de0 ldrh r2, [r5, r5] | r2 = *((r5 + r5));
0x00008de2 movs r0, r0 |
0x00008de4 strb r6, [r7, 0x17] | *((r7 + 0x17)) = r6;
0x00008de6 movs r1, r0 | r1 = r0;
0x00008de8 strb r6, [r0, r2] | *((r0 + r2)) = r6;
0x00008dea movs r0, r0 |
0x00008dec strh r2, [r4, r3] | *((r4 + r3)) = r2;
0x00008dee movs r0, r0 |
0x00008df0 strh r6, [r1, r3] | *((r1 + r3)) = r6;
0x00008df2 movs r0, r0 |
0x00008df4 strh r4, [r0, r3] | *((r0 + r3)) = r4;
0x00008df6 movs r0, r0 |
0x00008df8 strh r0, [r7, r2] | *((r7 + r2)) = r0;
0x00008dfa movs r0, r0 |
0x00008dfc strh r4, [r0, r2] | *((r0 + r2)) = r4;
0x00008dfe movs r0, r0 |
0x00008e00 str r6, [r5, r6] | *((r5 + r6)) = r6;
0x00008e02 movs r0, r0 |
0x00008e04 ldrsb r0, [r3, r5] | r0 = *((r3 + r5));
0x00008e06 movs r0, r0 |
0x00008e08 ldrsb r2, [r3, r2] | r2 = *((r3 + r2));
0x00008e0a movs r0, r0 |
0x00008e0c ldrsb r0, [r7, r3] | r0 = *((r7 + r3));
0x00008e0e movs r0, r0 |
0x00008e10 ldrsb r6, [r0, r5] | r6 = *((r0 + r5));
0x00008e12 movs r0, r0 |
0x00008e14 ldrsb r0, [r1, r2] | r0 = *((r1 + r2));
0x00008e16 movs r0, r0 |
0x00008e18 ldrsb r6, [r6, r2] | r6 = *((r6 + r2));
0x00008e1a movs r0, r0 |
0x00008e1c ldrsb r2, [r1, r4] | r2 = *((r1 + r4));
0x00008e1e movs r0, r0 |
0x00008e20 ldrsb r4, [r1, r1] | r4 = *((r1 + r1));
0x00008e22 movs r0, r0 |
0x00008e24 ldrsb r2, [r7, r2] | r2 = *((r7 + r2));
0x00008e26 movs r0, r0 |
0x00008e28 ldr r0, [r0] | r0 = *(0x11bea);
0x00008e2a ldr r1, [r1] | r1 = *(0x11be6);
0x00008e2c push {r4, r5} |
0x00008e2e ldr r2, [r0, 0x70] | r2 = *(0x11c5a);
0x00008e30 ldr r3, [r1, 0x70] | r3 = *(0x11c56);
0x00008e32 ldr r4, [r2, 0x10] | r4 = *(0x11c6a);
0x00008e34 ldr r5, [r3, 0x10] | r5 = *(0x11c66);
0x00008e36 cmp r4, r5 |
| if (r4 > r5) {
0x00008e38 blo 0x8e58 |
| if (r4 > r5) {
0x00008e3a bhi 0x8e60 | goto label_144;
| }
0x00008e3c ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x00008e3e ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00008e40 cmp r2, r3 |
| if (r2 <= r3) {
0x00008e42 blo 0x8e58 | goto label_145;
| }
| if (r2 > r3) {
0x00008e44 bhi 0x8e60 | goto label_144;
| }
0x00008e46 ldr r2, [r0, 0x68] | r2 = *((r0 + 0x68));
0x00008e48 ldr r3, [r1, 0x68] | r3 = *((r1 + 0x68));
0x00008e4a cmp r2, r3 |
| if (r2 <= r3) {
0x00008e4c blo 0x8e58 | goto label_145;
| }
0x00008e4e ite hi |
| if (r2 <= r3) {
0x00008e50 movhi r0, 1 | r0 = 1;
| }
| if (r2 > r3) {
0x00008e52 movls r0, 0 | r0 = 0;
| }
0x00008e54 pop {r4, r5} |
0x00008e56 bx lr | return;
| }
| label_145:
0x00008e58 mov.w r0, -1 | r0 = -1;
0x00008e5c pop {r4, r5} |
0x00008e5e bx lr | return;
| label_144:
0x00008e60 movs r0, 1 | r0 = 1;
0x00008e62 pop {r4, r5} |
0x00008e64 bx lr | return;
| }
[*] Function strcat used 1 times libelf-0.185.so