[*] Binary protection state of ubinize
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of ubinize
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ubinize @ 0x2598 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00002598 () | void fcn_00002598 (int16_t arg1) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| r0 = arg1;
0x00002598 push {r4, r5, r6, r7, lr} |
0x0000259a mov r6, r0 | r6 = r0;
0x0000259c ldr r4, [r6, 0x18] | r4 = *((r6 + 0x18));
0x0000259e sub sp, 0x14 |
0x000025a0 movs r0, 1 | r0 = 1;
0x000025a2 ldr r5, [pc, 0x78] |
0x000025a4 mov r1, r4 | r1 = r4;
0x000025a6 blx 0xb0c | calloc (r0, r1);
0x000025aa add r5, pc | r5 = 0x4bcc;
0x000025ac mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x000025ae cbz r0, 0x25de | goto label_0;
| }
0x000025b0 ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x000025b2 cmp r3, 0 |
0x000025b4 itt gt |
| if (r3 <= 0) {
0x000025b6 movgt r4, r0 | r4 = r0;
| }
| if (r3 <= 0) {
0x000025b8 movgt r5, 0 | r5 = 0;
| }
| if (r3 <= 0) {
0x000025ba ble 0x25d8 | goto label_1;
| }
| do {
0x000025bc mov r1, r4 | r1 = r4;
0x000025be movs r2, 0xa8 | r2 = 0xa8;
0x000025c0 mov.w r0, -1 | r0 = -1;
0x000025c4 adds r5, 1 | r5++;
0x000025c6 bl 0x30c0 | fcn_000030c0 (r0, r1, r2);
0x000025ca ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x000025cc rev r0, r0 | r0 = SWAP32 (r0);
0x000025ce str.w r0, [r4, 0xa8] | __asm ("str.w r0, [r4, 0xa8]");
0x000025d2 adds r4, 0xac | r4 += 0xac;
0x000025d4 cmp r2, r5 |
0x000025d6 bgt 0x25bc |
| } while (r2 > r5);
| do {
| label_1:
0x000025d8 mov r0, r7 | r0 = r7;
0x000025da add sp, 0x14 |
0x000025dc pop {r4, r5, r6, r7, pc} |
| label_0:
0x000025de blx 0xc8c | sprintf_chk ()
0x000025e2 ldr r3, [pc, 0x3c] | r3 = *(0x2622);
0x000025e4 movs r1, 1 | r1 = 1;
0x000025e6 ldr r2, [pc, 0x3c] |
0x000025e8 ldr r6, [r0] | r6 = *(r0);
0x000025ea ldr r5, [r5, r3] | r5 = *((r5 + r3));
0x000025ec ldr r3, [pc, 0x38] |
0x000025ee add r2, pc | r2 = 0x4c18;
0x000025f0 str r4, [sp] | *(sp) = r4;
0x000025f2 ldr r0, [r5] | r0 = *(r5);
0x000025f4 add r3, pc | r3 = 0x4c20;
0x000025f6 blx 0xcf0 | r0 = fcn_00000cf0 ();
0x000025f8 sbcs.w r6, ip, r0, ror 16 | __asm ("sbcs.w r6, ip, r0, ror 16");
0x000025fc ldr r4, [r5] | r4 = *(r5);
0x000025fe blx 0xc08 | ctype_tolower_loc ();
0x00002602 ldr r1, [pc, 0x28] |
0x00002604 movs r3, 0xb | r3 = 0xb;
0x00002606 ldr r2, [pc, 0x28] |
0x00002608 strd r6, r0, [sp, 4] | __asm ("strd r6, r0, [var_4h]");
0x0000260c mov r0, r4 | r0 = r4;
0x0000260e add r1, pc | r1 = 0x4c40;
0x00002610 str r1, [sp] | *(sp) = r1;
0x00002612 add r2, pc | r2 = 0x4c48;
0x00002614 movs r1, 1 | r1 = 1;
0x00002616 blx 0xcf0 | fcn_00000cf0 ();
0x0000261a b 0x25d8 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ubinize @ 0x2634 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.00002634 () | void fcn_00002634 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00002634 push.w {r4, r5, r6, r7, r8, lr} |
0x00002638 mov r6, r0 | r6 = r0;
0x0000263a ldr r0, [r1] | r0 = *(r1);
0x0000263c mov r7, r2 | r7 = r2;
0x0000263e movs r3, 0xac | r3 = 0xac;
0x00002640 mov r4, r1 | r4 = r1;
0x00002642 ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x00002644 sub sp, 8 |
0x00002646 ldr r1, [pc, 0xc8] |
0x00002648 mul r8, r3, r0 | r8 = r3 * r0;
0x0000264c cmp r0, r2 |
0x0000264e add r1, pc | r1 = "%s:vol_type";
0x00002650 add.w r5, r7, r8 | r5 = r7 + r8;
| if (r0 >= r2) {
0x00002654 bge 0x26fe | goto label_1;
| }
0x00002656 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00002658 ldr r2, [r6] | r2 = *(r6);
0x0000265a cmp r0, r2 |
| if (r0 >= r2) {
0x0000265c bge 0x26d8 | goto label_2;
| }
0x0000265e mov r2, r3 | r2 = r3;
0x00002660 movs r1, 0 | r1 = 0;
0x00002662 mov r0, r5 | r0 = r5;
0x00002664 blx 0xcb0 | putchar (r0);
0x00002668 ldr r6, [r6] | r6 = *(r6);
0x0000266a ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0000266c ldr r1, [r4, 0x2c] | r1 = *((r4 + 0x2c));
0x0000266e mov r2, r6 | r2 = r6;
0x00002670 asrs r3, r6, 0x1f | r3 = r6 >> 0x1f;
0x00002672 adds r0, r6, r0 | r0 = r6 + r0;
0x00002674 adc.w r1, r3, r1 | __asm ("adc.w r1, r3, r1");
0x00002678 subs r0, 1 | r0--;
0x0000267a sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0000267e bl 0x4168 | r0 = fcn_00004168 (r0, r1, r2, r3);
0x00002682 rev r0, r0 | r0 = SWAP32 (r0);
0x00002684 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00002686 str.w r0, [r7, r8] | __asm ("str.w r0, [r7, r8]");
0x0000268a mov r0, r6 | r0 = r6;
0x0000268c ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0000268e strb r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x00002690 rev r3, r1 | r1 = SWAP32 (r3);
0x00002692 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00002694 bl 0x414c | fcn_0000414c (r0, r1);
0x00002698 rev r1, r1 | r1 = SWAP32 (r1);
0x0000269a add.w r0, r5, 0x10 | r0 = r5 + 0x10;
0x0000269e str r1, [r5, 8] | *((r5 + 8)) = r1;
0x000026a0 ldrb.w r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x000026a4 strb.w r3, [r5, 0x90] | *((r5 + 0x90)) = r3;
0x000026a8 ldrd r1, r2, [r4, 0x14] | __asm ("ldrd r1, r2, [r4, 0x14]");
0x000026ac blx 0xb80 | fcn_00000b80 ();
0x000026b0 ldrh r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000026b2 movs r2, 0xa8 | r2 = 0xa8;
0x000026b4 ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x000026b6 movs r4, 0 | r4 = 0;
0x000026b8 mov.w r0, -1 | r0 = -1;
0x000026bc rev16 r3, r3 | __asm ("rev16 r3, r3");
0x000026be add r1, r5 | r1 += r5;
0x000026c0 strb r4, [r1, 0x10] | *((r1 + 0x10)) = r4;
0x000026c2 mov r1, r5 | r1 = r5;
0x000026c4 strh r3, [r5, 0xe] | *((r5 + 0xe)) = r3;
0x000026c6 bl 0x30c0 | r0 = fcn_000030c0 (r0, r1, r2);
0x000026ca rev r0, r0 | r0 = SWAP32 (r0);
0x000026cc str.w r0, [r5, 0xa8] | __asm ("str.w r0, [r5, 0xa8]");
| do {
0x000026d0 mov r0, r4 | r0 = r4;
0x000026d2 add sp, 8 |
0x000026d4 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x000026d8 ldr r4, [pc, 0x38] | r4 = *(0x2714);
0x000026da ldr r3, [pc, 0x3c] |
0x000026dc ldr r4, [r1, r4] | r4 = *((r1 + r4));
0x000026de str r2, [sp, 4] | var_4h = r2;
0x000026e0 add r3, pc | r3 = 0x4dfe;
0x000026e2 ldr r2, [pc, 0x38] |
0x000026e4 add r2, pc | r2 = 0x4e06;
| label_0:
0x000026e6 movs r1, 1 | r1 = 1;
0x000026e8 str r0, [sp] | *(sp) = r0;
0x000026ea ldr r0, [r4] | r0 = *(r4);
0x000026ec mov.w r4, -1 | r4 = -1;
0x000026ee adds r4, 0xff | r4 += 0xff;
0x000026f0 blx 0xcf0 | fcn_00000cf0 ();
0x000026f4 blx 0xc8c | sprintf_chk ()
0x000026f8 movs r3, 0x16 | r3 = 0x16;
0x000026fa str r3, [r0] | *(r0) = r3;
0x000026fc b 0x26d0 |
| } while (1);
| label_1:
0x000026fe ldr r4, [pc, 0x14] | r4 = *(0x2716);
0x00002700 ldr r3, [pc, 0x1c] |
0x00002702 ldr r4, [r1, r4] | r4 = *((r1 + r4));
0x00002704 str r2, [sp, 4] | var_4h = r2;
0x00002706 add r3, pc | r3 = 0x4e2a;
0x00002708 ldr r2, [pc, 0x18] |
0x0000270a add r2, pc | r2 = 0x4e32;
0x0000270c b 0x26e6 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ubinize @ 0x27f8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000027f8 () | void fcn_000027f8 (int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000027f8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000027fc mov r6, r0 | r6 = r0;
0x000027fe sub sp, 0x24 |
0x00002800 ldr r0, [r1] | r0 = *(r1);
0x00002802 mov fp, r2 |
0x00002804 ldr r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x00002806 str r3, [sp, 0x14] | var_14h = r3;
0x00002808 ldr r3, [pc, 0x24c] |
0x0000280a cmp r0, r2 |
0x0000280c ldr r4, [sp, 0x48] | r4 = *(arg_48h);
0x0000280e ldr.w r8, [sp, 0x4c] | r8 = *(arg_4ch);
0x00002812 add r3, pc | r3 = 0x526e;
0x00002814 ldr r5, [r1, 0x10] | r5 = *((r1 + 0x10));
0x00002816 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r0 >= r2) {
0x00002818 bge.w 0x29ba | goto label_2;
| }
0x0000281c ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x0000281e mov sl, r1 | sl = r1;
0x00002820 ldr r7, [r6] | r7 = *(r6);
0x00002822 cmp r0, r7 |
| if (r0 >= r7) {
0x00002824 bge.w 0x2990 | goto label_3;
| }
0x00002828 mov r0, r7 | r0 = r7;
0x0000282a blx 0xbfc | r0 = strerror (r0);
0x0000282e mov sb, r0 | sb = r0;
0x00002830 cmp r0, 0 |
| if (r0 == 0) {
0x00002832 beq.w 0x29cc | goto label_4;
| }
0x00002836 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00002838 mov r0, r2 | r0 = r2;
0x0000283a str r2, [sp, 0x18] | var_18h = r2;
0x0000283c blx 0xbfc | strerror (r0);
0x00002840 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00002842 mov r7, r0 | r7 = r0;
0x00002844 cmp r0, 0 |
| if (r0 == 0) {
0x00002846 beq.w 0x2a12 | goto label_5;
| }
0x00002848 strh r4, [r4, 6] | *((r4 + 6)) = r4;
0x0000284a ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x0000284c movs r1, 0xff | r1 = 0xff;
0x0000284e blx 0xcb0 | putchar (r0);
0x00002852 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00002854 mov r2, fp | r2 = fp;
0x00002856 mov r1, r7 | r1 = r7;
0x00002858 mov r0, r6 | r0 = r6;
0x0000285a bl 0x2728 | fcn_00002728 (r0, r1, r2, r3);
0x0000285e orrs.w r3, r4, r8 | r3 = r4 | r8;
0x00002862 it ne |
| if (r3 == r4) {
0x00002864 movne fp, 0 |
| }
| if (r3 != r4) {
0x00002868 bne 0x28ac | goto label_6;
| }
0x0000286a b 0x2938 | goto label_7;
| do {
0x0000286c ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x0000286e strd sb, r5, [sp] | __asm ("strd sb, r5, [sp]");
0x00002872 add r2, r7 | r2 += r7;
0x00002874 bl 0x2784 | fcn_00002784 (r0, r1, r2, r3, r4, r5);
0x00002878 ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0000287a mov r2, r5 | r2 = r5;
0x0000287c mov r1, sb | r1 = sb;
0x0000287e add r0, r7 | r0 += r7;
0x00002880 blx 0xb80 | fcn_00000b80 ();
0x00002884 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00002886 movs r1, 0xff | r1 = 0xff;
0x00002888 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0000288a adds r0, r3, r5 | r0 = r3 + r5;
0x0000288c subs r2, r2, r3 | r2 -= r3;
0x0000288e add r0, r7 | r0 += r7;
0x00002890 subs r2, r2, r5 | r2 -= r5;
0x00002892 blx 0xcb0 | putchar (r0);
0x00002896 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00002898 mov r1, r7 | r1 = r7;
0x0000289a ldr r0, [sp, 0x54] | r0 = *(arg_54h);
0x0000289c blx 0xce4 | fcn_00000ce4 ();
0x0000289e bic.w r8, r2, r3, ror 25 | r8 = BIT_MASK (r2, r3);
0x000028a2 cmp r0, r3 |
| if (r0 != r3) {
0x000028a4 bne 0x294c | goto label_8;
| }
0x000028a6 orrs.w r3, r4, r8 | r3 = r4 | r8;
| if (r3 == r4) {
0x000028aa beq 0x2938 | goto label_7;
| }
| label_6:
0x000028ac asr.w ip, r5, 0x1f |
0x000028b0 cmp r4, r5 |
0x000028b2 mov r3, r5 | r3 = r5;
0x000028b4 ldr r0, [sp, 0x50] | r0 = *(arg_50h);
0x000028b6 sbcs.w r2, r8, ip | __asm ("sbcs.w r2, r8, ip");
0x000028ba mov r1, sb | r1 = sb;
0x000028bc ittt lt |
| if (r4 < r5) {
0x000028be asrlt ip, r4, 0x1f | __asm ("asrlt ip, r4, 0x1f");
| }
| if (r4 >= r5) {
0x000028c2 movlt r5, r4 | r5 = r4;
| }
| if (r4 < r5) {
0x000028c4 mov r3, r4 | r3 = r4;
| }
0x000028c6 subs r3, r4, r3 | r3 = r4 - r3;
0x000028c8 mov r2, r5 | r2 = r5;
0x000028ca mov r4, r3 | r4 = r3;
0x000028cc sbc.w r8, r8, ip | __asm ("sbc.w r8, r8, ip");
0x000028d0 blx 0xb58 | r0 = fcn_00000b58 ();
0x000028d4 mov r2, r0 | r2 = r0;
0x000028d6 mov r3, fp | r3 = fp;
0x000028d8 cmp r5, r2 |
0x000028da mov r1, sl | r1 = sl;
0x000028dc mov r0, r6 | r0 = r6;
0x000028de add.w fp, fp, 1 |
0x000028e2 beq 0x286c |
| } while (r5 == r2);
0x000028e4 blx 0xc8c | sprintf_chk ()
0x000028e8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000028ea movs r1, 1 | r1 = 1;
0x000028ec ldr r3, [pc, 0x16c] | r3 = *(0x2a5c);
0x000028ee ldr r4, [r0] | r4 = *(r0);
0x000028f0 ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x000028f2 ldr r3, [pc, 0x16c] |
0x000028f4 ldr r2, [pc, 0x16c] |
0x000028f6 str r5, [sp] | *(sp) = r5;
0x000028f8 add r3, pc | r3 = 0x535e;
0x000028fa ldr r0, [r6] | r0 = *(r6);
0x000028fc add r2, pc | r2 = 0x5364;
0x000028fe blx 0xcf0 | fcn_00000cf0 ();
0x00002902 mov r0, r4 | r0 = r4;
0x00002904 ldr r5, [r6] | r5 = *(r6);
0x00002906 blx 0xc08 | ctype_tolower_loc ();
0x0000290a ldr r3, [pc, 0x15c] |
0x0000290c movs r1, 1 | r1 = 1;
0x0000290e ldr r2, [pc, 0x15c] |
0x00002910 str r0, [sp, 8] | var_8h = r0;
0x00002912 mov r0, r5 | r0 = r5;
0x00002914 add r3, pc | r3 = 0x5382;
0x00002916 str r4, [sp, 4] | var_4h = r4;
0x00002918 str r3, [sp] | *(sp) = r3;
0x0000291a add r2, pc | r2 = 0x538c;
0x0000291c movs r3, 0xb | r3 = 0xb;
0x0000291e blx 0xcf0 | fcn_00000cf0 ();
| do {
0x00002922 mov r0, r7 | r0 = r7;
0x00002924 blx 0xb68 | fcn_00000b68 ();
| label_1:
0x00002928 mov r0, sb | r0 = sb;
0x0000292a blx 0xb68 | fcn_00000b68 ();
0x0000292e mov.w r0, -1 | r0 = -1;
| label_0:
0x00002932 add sp, 0x24 |
0x00002934 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00002938 mov r0, r7 | r0 = r7;
0x0000293a blx 0xb68 | fcn_00000b68 ();
0x0000293e mov r0, sb | r0 = sb;
0x00002940 blx 0xb68 | fcn_00000b68 ();
0x00002944 movs r0, 0 | r0 = 0;
0x00002946 add sp, 0x24 |
0x00002948 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x0000294c str r3, [sp, 0x14] | var_14h = r3;
0x0000294e blx 0xc8c | sprintf_chk ()
0x00002952 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00002954 movs r1, 1 | r1 = 1;
0x00002956 ldr r2, [pc, 0x104] | r2 = *(0x2a5e);
0x00002958 ldr r4, [r0] | r4 = *(r0);
0x0000295a ldr r5, [r3, r2] | r5 = *((r3 + r2));
0x0000295c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000295e ldr r2, [pc, 0x110] |
0x00002960 str r3, [sp] | *(sp) = r3;
0x00002962 ldr r3, [pc, 0x110] |
0x00002964 add r2, pc | r2 = 0x53da;
0x00002966 ldr r0, [r5] | r0 = *(r5);
0x00002968 add r3, pc | r3 = 0x53e2;
0x0000296a blx 0xcf0 | fcn_00000cf0 ();
0x0000296e mov r0, r4 | r0 = r4;
0x00002970 ldr r5, [r5] | r5 = *(r5);
0x00002972 blx 0xc08 | ctype_tolower_loc ();
0x00002976 ldr r3, [pc, 0x100] |
0x00002978 movs r1, 1 | r1 = 1;
0x0000297a ldr r2, [pc, 0x100] |
0x0000297c str r0, [sp, 8] | var_8h = r0;
0x0000297e mov r0, r5 | r0 = r5;
0x00002980 add r3, pc | r3 = 0x53fe;
0x00002982 str r4, [sp, 4] | var_4h = r4;
0x00002984 str r3, [sp] | *(sp) = r3;
0x00002986 add r2, pc | r2 = 0x5408;
0x00002988 movs r3, 0xb | r3 = 0xb;
0x0000298a blx 0xcf0 | fcn_00000cf0 ();
0x0000298e b 0x2922 |
| } while (1);
| label_3:
0x00002990 ldr r2, [pc, 0xc8] | r2 = *(0x2a5c);
0x00002992 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00002994 ldr r3, [pc, 0xe8] |
0x00002996 ldr r4, [r1, r2] | r4 = *((r1 + r2));
0x00002998 ldr r2, [pc, 0xe8] |
0x0000299a add r3, pc | r3 = 0x541e;
0x0000299c str r7, [sp, 4] | var_4h = r7;
0x0000299e add r2, pc | r2 = 0x5426;
| do {
0x000029a0 movs r1, 1 | r1 = 1;
0x000029a2 str r0, [sp] | *(sp) = r0;
0x000029a4 ldr r0, [r4] | r0 = *(r4);
0x000029a6 blx 0xcf0 | fcn_00000cf0 ();
0x000029aa blx 0xc8c | sprintf_chk ()
0x000029ae movs r2, 0x16 | r2 = 0x16;
0x000029b0 mov r3, r0 | r3 = r0;
0x000029b2 str r2, [r3] | *(r3) = r2;
0x000029b4 mov.w r0, -1 | r0 = -1;
0x000029b8 b 0x2932 | goto label_0;
| label_2:
0x000029ba ldr r1, [pc, 0xa0] | r1 = *(0x2a5e);
0x000029bc ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x000029be ldr r3, [pc, 0xc8] |
0x000029c0 ldr r4, [r4, r1] | r4 = *((r4 + r1));
0x000029c2 str r2, [sp, 4] | var_4h = r2;
0x000029c4 add r3, pc | r3 = 0x5452;
0x000029c6 ldr r2, [pc, 0xc4] |
0x000029c8 add r2, pc | r2 = 0x545a;
0x000029ca b 0x29a0 |
| } while (1);
| label_4:
0x000029cc blx 0xc8c | sprintf_chk ()
0x000029d0 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000029d2 ldr r2, [pc, 0x88] | r2 = *(0x2a5e);
0x000029d4 ldr r3, [pc, 0xb8] |
0x000029d6 ldr r5, [r0] | r5 = *(r0);
0x000029d8 ldr r4, [r1, r2] | r4 = *((r1 + r2));
0x000029da movs r1, 1 | r1 = 1;
0x000029dc ldr r2, [pc, 0xb4] |
0x000029de add r3, pc | r3 = 0x5472;
0x000029e0 str r7, [sp] | *(sp) = r7;
0x000029e2 ldr r0, [r4] | r0 = *(r4);
0x000029e4 add r2, pc | r2 = 0x547c;
0x000029e6 blx 0xcf0 | fcn_00000cf0 ();
0x000029ea ldr r6, [r4] | r6 = *(r4);
0x000029ec mov r0, r5 | r0 = r5;
0x000029ee ldr r4, [pc, 0xa8] |
0x000029f0 blx 0xc08 | ctype_tolower_loc ();
0x000029f4 ldr r2, [pc, 0xa4] |
0x000029f6 mov r1, r0 | r1 = r0;
0x000029f8 add r4, pc | r4 = 0x5496;
0x000029fa strd r5, r1, [sp, 4] | __asm ("strd r5, r1, [var_4h]");
0x000029fe movs r3, 0xb | r3 = 0xb;
0x00002a00 mov r0, r6 | r0 = r6;
0x00002a02 add r2, pc | r2 = 0x54a2;
0x00002a04 movs r1, 1 | r1 = 1;
0x00002a06 str r4, [sp] | *(sp) = r4;
0x00002a08 blx 0xcf0 | fcn_00000cf0 ();
0x00002a0c mov.w r0, -1 | r0 = -1;
0x00002a10 b 0x2932 | goto label_0;
| label_5:
0x00002a12 str r2, [sp, 0x14] | var_14h = r2;
0x00002a14 blx 0xc8c | r0 = sprintf_chk ()
0x00002a16 ldmdb sl!, {r0, r1, r2, sb, fp, ip, pc} | __asm ("ldmdb sl!, {r0, r1, r2, sb, fp, ip, pc}");
0x00002a1a movs r1, 1 | r1 = 1;
0x00002a1c ldr r3, [pc, 0x3c] | r3 = *(0x2a5c);
0x00002a1e ldr r4, [r0] | r4 = *(r0);
0x00002a20 ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x00002a22 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00002a24 ldr r3, [pc, 0x78] |
0x00002a26 str r2, [sp] | *(sp) = r2;
0x00002a28 ldr r2, [pc, 0x78] |
0x00002a2a add r3, pc | r3 = 0x54ce;
0x00002a2c ldr r0, [r5] | r0 = *(r5);
0x00002a2e add r2, pc | r2 = 0x54d6;
0x00002a30 blx 0xcf0 | fcn_00000cf0 ();
0x00002a32 ldrd r4, r6, [lr, -0x80] | __asm ("ldrd r4, r6, [lr, -0x80]");
0x00002a36 ldr r5, [r5] | r5 = *(r5);
0x00002a38 blx 0xc08 | ctype_tolower_loc ();
0x00002a3c ldr r1, [pc, 0x68] |
0x00002a3e movs r3, 0xb | r3 = 0xb;
0x00002a40 ldr r2, [pc, 0x68] |
0x00002a42 strd r4, r0, [sp, 4] | __asm ("strd r4, r0, [var_4h]");
0x00002a46 mov r0, r5 | r0 = r5;
0x00002a48 add r1, pc | r1 = 0x54f4;
0x00002a4a str r1, [sp] | *(sp) = r1;
0x00002a4c add r2, pc | r2 = 0x54fc;
0x00002a4e movs r1, 1 | r1 = 1;
0x00002a50 blx 0xcf0 | fcn_00000cf0 ();
0x00002a54 b 0x2928 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ubinize @ 0x2ab0 */
| #include <stdint.h>
|
; (fcn) fcn.00002ab0 () | void fcn_00002ab0 (int16_t arg_80h, int16_t arg_88h, int16_t arg_90h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int32_t var_1ch;
| int32_t var_1ch_2;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int32_t var_30h;
| int32_t var_30h_2;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00002ab0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00002ab4 mov r8, r2 | r8 = r2;
0x00002ab6 ldr r2, [pc, 0x298] |
0x00002ab8 sub sp, 0x5c |
0x00002aba mov r4, r0 | r4 = r0;
0x00002abc mov r7, r1 | r7 = r1;
0x00002abe ldr r3, [pc, 0x294] | r3 = *(0x2d56);
0x00002ac0 movs r1, 0xd | r1 = 0xd;
0x00002ac2 add r2, pc | r2 = 0x5818;
0x00002ac4 mov.w fp, 1 |
0x00002ac6 lsrs r1, r0, 0xc | r1 = r0 >> 0xc;
0x00002ac8 movs r6, 0 | r6 = 0;
0x00002aca ldrd sb, sl, [sp, 0x90] | __asm ("ldrd sb, sl, [arg_90h]");
0x00002ace ldr r3, [r2, r3] |
0x00002ad0 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x00002ad2 ldr r3, [r3] | r3 = *(0x5818);
0x00002ad4 str r3, [sp, 0x54] | var_54h = r3;
0x00002ad6 mov.w r3, 0 | r3 = 0;
0x00002ada ldr r3, [r0] | r3 = *(r0);
0x00002adc mov r0, r2 | r0 = r2;
0x00002ade strd fp, fp, [sp, 0x1c] | __asm ("strd fp, fp, [var_0hx1c]");
0x00002ae2 str r6, [sp, 0x24] | var_24h = r6;
0x00002ae4 str r3, [sp, 0x28] | var_28h = r3;
0x00002ae6 lsls r3, r3, 1 | r3 <<= 1;
0x00002ae8 str r2, [sp, 0x10] | var_10h = r2;
0x00002aea str r3, [sp, 0x40] | var_40h = r3;
0x00002aec asrs r3, r3, 0x1f | r3 >>= 0x1f;
0x00002aee str r3, [sp, 0x44] | var_44h = r3;
0x00002af0 ldr r3, [pc, 0x264] |
0x00002af2 add r3, pc | r3 = 0x584e;
0x00002af4 str r3, [sp, 0x2c] | var_2ch = r3;
0x00002af6 movw r3, 0xefff |
0x00002afa movt r3, 0x7fff |
0x00002afe str r3, [sp, 0x18] | var_18h = r3;
0x00002b00 movs r3, 5 | r3 = 5;
0x00002b02 strd r1, r3, [sp, 0x30] | __asm ("strd r1, r3, [var_30h]");
0x00002b06 blx 0xbfc | strerror (r0);
0x00002b08 ldrd r4, fp, [sl], -0x250 | __asm ("ldrd r4, fp, [sl], -aav.0x00000001");
0x00002b0c add r3, pc | r3 = 0x80001b0f;
0x00002b0e str r3, [sp, 0x14] | var_14h = r3;
0x00002b10 cmp r0, 0 |
| if (r0 == 0) {
0x00002b12 beq.w 0x2d06 | goto label_2;
| }
0x00002b16 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00002b18 movs r1, 0xff | r1 = 0xff;
0x00002b1a mov r5, r0 | r5 = r0;
0x00002b1c str r2, [sp, 0x10] | var_10h = r2;
0x00002b1e blx 0xcb0 | putchar (r0);
0x00002b20 invalid |
0x00002b24 mov r1, sb | r1 = sb;
0x00002b26 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00002b28 adds r0, r5, r2 | r0 = r5 + r2;
0x00002b2a ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00002b2c add.w sb, r5, r3 | sb = r5 + r3;
0x00002b30 blx 0xb80 | fcn_00000b80 ();
0x00002b34 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00002b36 movs r1, 0xff | r1 = 0xff;
0x00002b38 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00002b3a ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00002b3c subs r3, r3, r0 | r3 -= r0;
0x00002b3e add r0, r2 | r0 += r2;
0x00002b40 add r0, r5 | r0 += r5;
0x00002b42 subs r2, r3, r2 | r2 = r3 - r2;
0x00002b44 blx 0xcb0 | putchar (r0);
0x00002b48 str r6, [sp] | *(sp) = r6;
0x00002b4a mov r0, sl | r0 = sl;
0x00002b4c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00002b4e smull r2, r7, r7, r3 | r2:r7 = r7 * r3;
0x00002b52 mov r3, r7 | r3 = r7;
0x00002b54 str r2, [sp, 0x10] | var_10h = r2;
0x00002b56 blx 0xbb4 | stpcpy_chk ();
0x00002b5a ldr r2, [sp, 0x10] | r2 = var_10h;
0x00002b5c cmp r1, r7 |
0x00002b5e it eq |
| if (r1 == r7) {
0x00002b60 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| }
| if (r1 != r7) {
0x00002b62 bne 0x2bfc | goto label_3;
| }
0x00002b64 ldrd r2, r3, [sp, 0x80] | __asm ("ldrd r2, r3, [arg_80h]");
0x00002b68 mov r1, r5 | r1 = r5;
0x00002b6a mov r0, r4 | r0 = r4;
0x00002b6c add r7, sp, 0x18 | r7 += var_18h;
0x00002b6e bl 0x2728 | fcn_00002728 (r0, r1, r2, r3);
0x00002b72 mov r3, r6 | r3 = r6;
0x00002b74 mov r2, sb | r2 = sb;
0x00002b76 mov r1, r7 | r1 = r7;
0x00002b78 mov r0, r4 | r0 = r4;
0x00002b7a strd r6, r6, [sp] | __asm ("strd r6, r6, [sp]");
0x00002b7e bl 0x2784 | fcn_00002784 (r0, r1, r2, r3, r4, r5);
0x00002b82 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00002b84 mov r1, r5 | r1 = r5;
0x00002b86 mov r0, sl | r0 = sl;
0x00002b88 blx 0xce4 | fcn_00000ce4 ();
0x00002b8c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00002b8e cmp r3, r0 |
| if (r3 != r0) {
0x00002b90 bne 0x2c44 | goto label_4;
| }
0x00002b92 smull r2, r8, r8, r3 | r2:r8 = r8 * r3;
0x00002b96 mov r0, sl | r0 = sl;
0x00002b98 str r6, [sp] | *(sp) = r6;
0x00002b9a mov r3, r8 | r3 = r8;
0x00002b9c str r2, [sp, 0x10] | var_10h = r2;
0x00002b9e blx 0xbb4 | stpcpy_chk ();
0x00002ba2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00002ba4 cmp r1, r8 |
0x00002ba6 it eq |
| if (r1 == r8) {
0x00002ba8 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| }
| if (r1 != r8) {
0x00002baa bne 0x2c88 | goto label_5;
| }
0x00002bac ldrd r2, r3, [sp, 0x88] | __asm ("ldrd r2, r3, [arg_88h]");
0x00002bb0 mov r0, r4 | r0 = r4;
0x00002bb2 mov r1, r5 | r1 = r5;
0x00002bb4 bl 0x2728 | fcn_00002728 (r0, r1, r2, r3);
0x00002bb8 mov r0, r4 | r0 = r4;
0x00002bba mov r2, sb | r2 = sb;
0x00002bbc mov r1, r7 | r1 = r7;
0x00002bbe mov r3, fp | r3 = fp;
0x00002bc0 strd r6, r6, [sp] | __asm ("strd r6, r6, [sp]");
0x00002bc4 bl 0x2784 | fcn_00002784 (r0, r1, r2, r3, r4, r5);
0x00002bc6 ldc2l p8, c6, [lr, 0x188] | __asm ("ldc2l p8, c6, [lr, 0x188]");
0x00002bca mov r0, sl | r0 = sl;
0x00002bcc mov r1, r5 | r1 = r5;
0x00002bce blx 0xce4 | fcn_00000ce4 ();
0x00002bd2 ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00002bd4 cmp r4, r0 |
| if (r4 != r0) {
0x00002bd6 bne 0x2cc6 | goto label_6;
| }
0x00002bd8 mov r0, r5 | r0 = r5;
0x00002bda blx 0xb68 | fcn_00000b68 ();
0x00002bde mov r0, r6 | r0 = r6;
| do {
| label_1:
0x00002be0 ldr r2, [pc, 0x17c] |
0x00002be2 ldr r3, [pc, 0x170] | r3 = *(0x2d56);
0x00002be4 add r2, pc | r2 = 0x5948;
0x00002be6 ldr r3, [r2, r3] | r3 = *(0x5948);
0x00002be8 ldr r2, [r3] | r2 = *(0x5948);
0x00002bea ldr r3, [sp, 0x54] | r3 = var_54h;
0x00002bec eors r2, r3 | r2 ^= r3;
0x00002bee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002bf2 bne.w 0x2d4c | goto label_7;
| }
0x00002bf6 add sp, 0x5c |
0x00002bf8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00002bfc blx 0xc8c | sprintf_chk ()
0x00002c00 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00002c02 mov r1, fp | r1 = fp;
0x00002c04 ldr r3, [pc, 0x15c] | r3 = *(0x2d64);
0x00002c06 ldr r4, [r0] | r4 = *(r0);
0x00002c08 ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x00002c0a ldr r3, [pc, 0x15c] |
0x00002c0c ldr r2, [pc, 0x15c] |
0x00002c0e ldr r0, [r6] | r0 = *(r6);
0x00002c10 add r3, pc | r3 = 0x597e;
0x00002c12 add r2, pc | r2 = 0x5982;
0x00002c14 blx 0xcf0 | fcn_00000cf0 ();
0x00002c16 strd r4, r6, [ip], -0x80 | __asm ("strd r4, r6, [ip], -0x80");
0x00002c1a ldr r6, [r6] | r6 = *(r6);
0x00002c1c blx 0xc08 | ctype_tolower_loc ();
0x00002c20 ldr r3, [pc, 0x14c] |
0x00002c22 mov r1, fp | r1 = fp;
0x00002c24 ldr r2, [pc, 0x14c] |
0x00002c26 str r0, [sp, 8] | var_8h = r0;
0x00002c28 mov r0, r6 | r0 = r6;
0x00002c2a add r3, pc | r3 = 0x599e;
0x00002c2c strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x00002c30 add r2, pc | r2 = 0x59a8;
0x00002c32 movs r3, 0xb | r3 = 0xb;
0x00002c34 blx 0xcf0 | fcn_00000cf0 ();
| label_0:
0x00002c38 mov r0, r5 | r0 = r5;
0x00002c3a blx 0xb68 | fcn_00000b68 ();
0x00002c3e mov.w r0, -1 | r0 = -1;
0x00002c42 b 0x2be0 |
| } while (1);
| label_4:
0x00002c44 str r3, [sp, 0x10] | var_10h = r3;
0x00002c46 blx 0xc8c | sprintf_chk ()
0x00002c4a ldr r3, [sp, 0x14] | r3 = var_14h;
0x00002c4c mov r1, fp | r1 = fp;
0x00002c4e ldr r2, [pc, 0x114] | r2 = *(0x2d66);
0x00002c50 ldr r4, [r0] | r4 = *(r0);
0x00002c52 ldr r6, [r3, r2] | r6 = *((r3 + r2));
0x00002c54 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002c56 ldr r2, [pc, 0x120] |
0x00002c58 str r3, [sp] | *(sp) = r3;
0x00002c5a ldr r3, [pc, 0x120] |
0x00002c5c add r2, pc | r2 = 0x59da;
0x00002c5e ldr r0, [r6] | r0 = *(r6);
0x00002c60 add r3, pc | r3 = 0x59e2;
0x00002c62 blx 0xcf0 | fcn_00000cf0 ();
0x00002c66 mov r0, r4 | r0 = r4;
0x00002c68 ldr r6, [r6] | r6 = *(r6);
0x00002c6a blx 0xc08 | ctype_tolower_loc ();
0x00002c6e ldr r3, [pc, 0x110] |
0x00002c70 mov r1, fp | r1 = fp;
0x00002c72 ldr r2, [pc, 0x110] |
0x00002c74 str r0, [sp, 8] | var_8h = r0;
0x00002c76 mov r0, r6 | r0 = r6;
0x00002c78 add r3, pc | r3 = 0x59fe;
0x00002c7a strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x00002c7e add r2, pc | r2 = 0x5a08;
0x00002c80 movs r3, 0xb | r3 = 0xb;
0x00002c82 blx 0xcf0 | fcn_00000cf0 ();
0x00002c86 b 0x2c38 | goto label_0;
| label_5:
0x00002c88 blx 0xc8c | sprintf_chk ()
0x00002c8c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00002c8e mov r1, fp | r1 = fp;
0x00002c90 ldr r3, [pc, 0xd0] | r3 = *(0x2d64);
0x00002c92 ldr r4, [r0] | r4 = *(r0);
0x00002c94 ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x00002c96 ldr r3, [pc, 0xf0] |
0x00002c98 ldr r2, [pc, 0xf0] |
0x00002c9a ldr r0, [r6] | r0 = *(r6);
0x00002c9c add r3, pc | r3 = 0x5a2a;
0x00002c9e add r2, pc | r2 = 0x5a2e;
0x00002ca0 blx 0xcf0 | fcn_00000cf0 ();
0x00002ca4 mov r0, r4 | r0 = r4;
0x00002ca6 ldr r6, [r6] | r6 = *(r6);
0x00002ca8 blx 0xc08 | ctype_tolower_loc ();
0x00002cac ldr r3, [pc, 0xe0] |
0x00002cae mov r1, fp | r1 = fp;
0x00002cb0 ldr r2, [pc, 0xe0] |
0x00002cb2 str r0, [sp, 8] | var_8h = r0;
0x00002cb4 mov r0, r6 | r0 = r6;
0x00002cb6 add r3, pc | r3 = 0x5a4a;
0x00002cb8 strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x00002cbc add r2, pc | r2 = 0x5a54;
0x00002cbe movs r3, 0xb | r3 = 0xb;
0x00002cc0 blx 0xcf0 | fcn_00000cf0 ();
0x00002cc4 b 0x2c38 | goto label_0;
| label_6:
0x00002cc6 blx 0xc8c | sprintf_chk ()
0x00002cca ldr r2, [sp, 0x14] | r2 = var_14h;
0x00002ccc mov r1, fp | r1 = fp;
0x00002cce ldr r3, [pc, 0x94] | r3 = *(0x2d66);
0x00002cd0 ldr r6, [r0] | r6 = *(r0);
0x00002cd2 ldr r7, [r2, r3] | r7 = *((r2 + r3));
0x00002cd4 ldr r3, [pc, 0xc0] |
0x00002cd6 ldr r2, [pc, 0xc4] |
0x00002cd8 str r4, [sp] | *(sp) = r4;
0x00002cda add r3, pc |
0x00002cdc ldr r0, [r7] | r0 = *(r7);
0x00002cde add r2, pc | r2 = 0x5a80;
0x00002ce0 blx 0xcf0 | fcn_00000cf0 ();
0x00002ce4 mov r0, r6 | r0 = r6;
0x00002ce6 ldr r4, [r7] | r4 = *(r7);
0x00002ce8 blx 0xc08 | ctype_tolower_loc ();
0x00002cea invalid |
0x00002cee mov r1, fp | r1 = fp;
0x00002cf0 ldr r2, [pc, 0xb0] |
0x00002cf2 str r0, [sp, 8] | var_8h = r0;
0x00002cf4 mov r0, r4 | r0 = r4;
0x00002cf6 add r3, pc | r3 = 0x8770;
0x00002cf8 strd r3, r6, [sp] | __asm ("strd r3, r6, [sp]");
0x00002cfc add r2, pc | r2 = 0x5aa4;
0x00002cfe movs r3, 0xb | r3 = 0xb;
0x00002d00 blx 0xcf0 | fcn_00000cf0 ();
0x00002d04 b 0x2c38 | goto label_0;
| label_2:
0x00002d06 blx 0xc8c | sprintf_chk ()
0x00002d0a ldr r2, [sp, 0x14] | r2 = var_14h;
0x00002d0c mov r1, fp | r1 = fp;
0x00002d0e ldr r3, [pc, 0x54] | r3 = *(0x2d66);
0x00002d10 ldr r5, [r0] | r5 = *(r0);
0x00002d12 ldr r4, [r2, r3] | r4 = *((r2 + r3));
0x00002d14 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00002d16 ldr r3, [pc, 0x90] |
0x00002d18 str r2, [sp] | *(sp) = r2;
0x00002d1a ldr r2, [pc, 0x90] |
0x00002d1c add r3, pc | r3 = 0x5aca;
0x00002d1e ldr r0, [r4] | r0 = *(r4);
0x00002d20 add r2, pc | r2 = 0x5ad2;
0x00002d22 blx 0xcf0 | fcn_00000cf0 ();
0x00002d26 ldr r6, [r4] | r6 = *(r4);
0x00002d28 mov r0, r5 | r0 = r5;
0x00002d2a ldr r4, [pc, 0x84] |
0x00002d2c blx 0xc08 | ctype_tolower_loc ();
0x00002d30 ldr r2, [pc, 0x80] |
0x00002d32 mov r1, fp | r1 = fp;
0x00002d34 add r4, pc | r4 = 0x5aea;
0x00002d36 str r0, [sp, 8] | var_8h = r0;
0x00002d38 movs r3, 0xb | r3 = 0xb;
0x00002d3a mov r0, r6 | r0 = r6;
0x00002d3c add r2, pc | r2 = 0x5af4;
0x00002d3e str r5, [sp, 4] | var_4h = r5;
0x00002d40 str r4, [sp] | *(sp) = r4;
0x00002d42 blx 0xcf0 | fcn_00000cf0 ();
0x00002d46 mov.w r0, -1 | r0 = -1;
0x00002d4a b 0x2be0 | goto label_1;
| label_7:
0x00002d4c blx 0xb8c | fcn_00000b8c ();
0x00002d50 add r6, r8 | r6 += r8;
0x00002d52 movs r1, r0 | r1 = r0;
0x00002d54 lsls r4, r2, 3 | r4 = r2 << 3;
0x00002d56 movs r0, r0 |
0x00002d58 adds r2, 0x9a | r2 += 0x9a;
0x00002d5a movs r0, r0 |
0x00002d5c mvns r4, r7 | r4 = ~r7;
0x00002d5e movs r1, r0 | r1 = r0;
0x00002d60 orrs r4, r4 | r4 |= r4;
0x00002d62 movs r1, r0 | r1 = r0;
0x00002d64 lsls r4, r3, 3 | r4 = r3 << 3;
0x00002d66 movs r0, r0 |
0x00002d68 adds r0, 0x5c | r0 += 0x5c;
0x00002d6a movs r0, r0 |
0x00002d6c adds r1, 0xb6 | r1 += 0xb6;
0x00002d6e movs r0, r0 |
0x00002d70 movs r2, 0xe2 | r2 = 0xe2;
0x00002d72 movs r0, r0 |
0x00002d74 adds r4, r7, r0 | r4 = r7 + r0;
0x00002d76 movs r0, r0 |
0x00002d78 adds r1, 0x94 | r1 += 0x94;
0x00002d7a movs r0, r0 |
0x00002d7c adds r0, 0xc | r0 += 0xc;
0x00002d7e movs r0, r0 |
0x00002d80 movs r2, 0x94 | r2 = 0x94;
0x00002d82 movs r0, r0 |
0x00002d84 asrs r6, r5, 0x1f | r6 = r5 >> 0x1f;
0x00002d86 movs r0, r0 |
0x00002d88 cmp r7, 0xd0 |
0x00002d8a movs r0, r0 |
0x00002d8c adds r1, 0x2a | r1 += 0x2a;
0x00002d8e movs r0, r0 |
0x00002d90 movs r2, 0x56 | r2 = 0x56;
0x00002d92 movs r0, r0 |
0x00002d94 asrs r0, r6, 0x1e | r0 = r6 >> 0x1e;
0x00002d96 movs r0, r0 |
0x00002d98 cmp r7, 0x92 |
0x00002d9a movs r0, r0 |
0x00002d9c adds r1, 0x12 | r1 += 0x12;
0x00002d9e movs r0, r0 |
0x00002da0 movs r2, 0x16 | r2 = 0x16;
0x00002da2 movs r0, r0 |
0x00002da4 asrs r0, r6, 0x1d | r0 = r6 >> 0x1d;
0x00002da6 movs r0, r0 |
0x00002da8 cmp r7, 0x50 |
0x00002daa movs r0, r0 |
0x00002dac adds r0, 0x7c | r0 += 0x7c;
0x00002dae movs r0, r0 |
0x00002db0 movs r1, 0xd8 | r1 = 0xd8;
0x00002db2 movs r0, r0 |
0x00002db4 asrs r0, r6, 0x1c | r0 = r6 >> 0x1c;
0x00002db6 movs r0, r0 |
| }
[*] Function printf used 13 times ubinize