[*] Binary protection state of xtables-legacy-multi
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of xtables-legacy-multi
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/xtables-legacy-multi @ 0x4434 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00004434 () | void fcn_00004434 (int16_t arg_260h, int16_t arg_2c0h_2, int16_t arg_2c0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_14h_2;
| 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;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_48h;
| int32_t var_48h_2;
| int16_t var_50h;
| int32_t var_50h_2;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_e4h;
| int16_t var_e8h;
| int16_t var_ech;
| int16_t var_f0h;
| int16_t var_f4h;
| int16_t var_f8h;
| int16_t var_128h;
| int16_t var_130h;
| int8_t var_52h;
| int16_t var_190h;
| int32_t var_c4h;
| int16_t var_1f8h;
| int32_t var_d0h;
| int32_t var_f0h_2;
| int32_t var_f4h_2;
| int16_t var_234h;
| int16_t var_23ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00004434 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00004438 mov r5, r2 | r5 = r2;
0x0000443a sub.w sp, sp, 0x23c |
0x0000443e ldr.w r2, [pc, 0xb2c] |
0x00004440 cmp r3, 0x2c |
0x00004442 mov r7, r1 | r7 = r1;
0x00004444 mov fp, r0 |
0x00004446 str r3, [sp, 0x18] | var_18h = r3;
0x00004448 add r6, sp, 0x5c | r6 += var_5ch;
0x0000444a ldr.w r3, [pc, 0xb24] | r3 = *(0x4f72);
0x0000444e add r2, pc | r2 = 0x93c0;
0x00004450 add r4, sp, 0x40 | r4 += var_40h;
0x00004452 ldrb.w sl, [sp, 0x260] | sl = *(arg_260h);
0x00004456 ldr.w sb, [pc, 0xb1c] |
0x0000445a add.w r8, sp, 0x130 | r8 += var_130h;
0x0000445e ldr r3, [r2, r3] |
0x00004460 movs r2, 0x28 | r2 = 0x28;
0x00004462 add sb, pc | sb = 0x93dc;
0x00004464 ldr r3, [r3] | r3 = *(0x93c0);
0x00004466 str r3, [sp, 0x234] | var_234h = r3;
0x00004468 mov.w r3, 0 | r3 = 0;
0x0000446c ldr.w r3, [pc, 0xb08] |
0x00004470 add r3, pc | r3 = 0x93ec;
0x00004472 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00004476 stm.w r4, {r0, r1} | *(r4) = r0;
| *((r4 + 4)) = r1;
0x0000447a movs r1, 0 | r1 = 0;
0x0000447c mov r0, r6 | r0 = r6;
0x0000447e blx 0x25fc | iptc_next_chain ();
0x00004482 ldr r3, [r5] | r3 = *(r5);
0x00004484 mov.w r2, 0x100 | r2 = 0x100;
0x00004488 strb.w sl, [sp, 0x74] | var_74h = sl;
0x0000448c movs r1, 0 | r1 = 0;
0x0000448e mov r0, r8 | r0 = r8;
0x00004490 str r3, [sp, 0x64] | var_64h = r3;
0x00004492 ldr.w r3, [pc, 0xae8] | r3 = *(0x4f7e);
0x00004496 ldr.w r3, [sb, r3] |
0x0000449a str r4, [sp, 0x84] | var_84h = r4;
0x0000449c add r4, sp, 0x88 | r4 += var_88h;
0x0000449e str r3, [sp, 0x34] | var_34h = r3;
0x000044a0 ldr r3, [r3] | r3 = *(0x93dc);
0x000044a2 str r3, [sp, 0x78] | var_78h = r3;
0x000044a4 blx 0x25fc | iptc_next_chain ();
0x000044a8 ldr.w r3, [pc, 0xad4] |
0x000044ac movs r2, 0xa4 | r2 = 0xa4;
0x000044ae movs r1, 0 | r1 = 0;
0x000044b0 add r0, sp, 0x8c | r0 += var_8ch;
0x000044b2 str.w r7, [r8, 0xf4] | __asm ("str.w r7, [var_f4h_2]");
0x000044b4 strb r4, [r6, 3] | *((r6 + 3)) = r4;
0x000044b6 add r3, pc | r3 = 0x943a;
0x000044b8 str.w r3, [r8, 0xf0] | __asm ("str.w r3, [var_f0h_2]");
0x000044ba adds r0, 0xf0 | r0 += 0xf0;
0x000044bc blx 0x25fc | iptc_next_chain ();
0x000044c0 movs r3, 2 | r3 = 2;
0x000044c2 mov r1, r7 | r1 = r7;
0x000044c4 mov r2, r6 | r2 = r6;
0x000044c6 str r3, [sp, 0x88] | var_88h = r3;
0x000044c8 mov r0, fp | r0 = fp;
0x000044ca mov r3, r8 | r3 = r8;
0x000044cc str r4, [sp] | *(sp) = r4;
0x000044ce bl 0x7fdc | fcn_00007fdc (r0, r1, r2, r3, r4);
0x000044d2 ldr r3, [sp, 0x64] | r3 = var_64h;
0x000044d4 ldr r7, [sp, 0x5c] | r7 = var_5ch;
0x000044d6 ldr r6, [sp, 0xf4] | r6 = var_f4h;
0x000044d8 str r3, [r5] | *(r5) = r3;
0x000044da ldr r3, [sp, 0x68] | r3 = var_68h;
0x000044dc str r3, [sp, 8] | var_8h = r3;
0x000044de ldr r3, [sp, 0x60] | r3 = var_60h;
0x000044e0 str r3, [sp, 0xc] | var_ch = r3;
0x000044e2 ldr r3, [sp, 0x70] | r3 = var_70h;
0x000044e4 str r3, [sp, 0x2c] | var_2ch = r3;
0x000044e6 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x000044e8 str r3, [sp, 0x30] | var_30h = r3;
0x000044ea ldr r3, [sp, 0x7c] | r3 = var_7ch;
0x000044ec str r3, [sp, 0x28] | var_28h = r3;
0x000044ee ldr r3, [sp, 0xe8] | r3 = var_e8h;
0x000044f0 str r3, [sp, 0x1c] | var_1ch = r3;
0x000044f2 ldr r3, [sp, 0xe4] | r3 = var_e4h;
0x000044f4 str r3, [sp, 0x20] | var_20h = r3;
0x000044f6 ldr r3, [sp, 0xf0] | r3 = var_f0h;
0x000044f8 str r3, [sp, 0x10] | var_10h = r3;
0x000044fa ldr r3, [sp, 0xec] | r3 = var_ech;
0x000044fc str r3, [sp, 0x24] | var_24h = r3;
0x000044fe ldr r3, [sp, 0xf8] | r3 = var_f8h;
0x00004500 str r3, [sp, 0x14] | var_14h = r3;
0x00004502 cmp.w sl, 0 |
| if (sl == 0) {
0x00004506 beq.w 0x489a | goto label_36;
| }
0x0000450a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000450c ldr r1, [r3] | r1 = *(r3);
0x0000450e cmp r1, 0 |
| if (r1 == 0) {
0x00004510 beq.w 0x48aa | goto label_37;
| }
| label_7:
0x00004514 cmp r7, 0x10 |
| if (r7 > 0x10) {
0x00004516 bhi 0x4604 | goto label_38;
| }
0x00004518 cmp r7, 0 |
| if (r7 == 0) {
0x0000451a beq.w 0x4e3e | goto label_39;
| }
0x0000451e mov.w r4, 0x106 |
0x00004522 movt r4, 1 | r4 = 0x10106;
0x00004526 lsrs r4, r7 | r4 >>= r7;
0x00004528 ands r4, r4, 1 | r4 &= 1;
| if (r4 != r4) {
0x0000452c bne.w 0x47e8 | goto label_40;
| }
| label_1:
0x00004530 cmp r7, 0x80 |
| if (r7 < 0x80) {
0x00004532 bls.w 0x471c | goto label_41;
| }
0x00004536 cmp.w r7, 0x800 |
| if (r7 == 0x800) {
0x0000453a beq.w 0x4d76 | goto label_42;
| }
| if (r7 < 0x800) {
0x0000453e bls.w 0x46d6 | goto label_43;
| }
0x00004542 movw r3, 0x2020 | r3 = 0x2020;
0x00004546 cmp r7, r3 |
| if (r7 == r3) {
0x00004548 beq.w 0x4bd6 | goto label_44;
| }
| if (r7 < r3) {
0x0000454c bls.w 0x467c | goto label_45;
| }
0x00004550 cmp.w r7, 0x3000 |
| if (r7 == 0x3000) {
0x00004554 beq.w 0x4d86 | goto label_46;
| }
0x00004558 cmp.w r7, 0x4000 |
| if (r7 != 0x4000) {
0x0000455c bne.w 0x46cc | goto label_4;
| }
0x00004560 ldr.w r3, [r8, 0xc4] | r3 = var_c4h;
0x00004564 ldr.w r1, [r8, 0xd0] | r1 = var_d0h;
0x00004568 ldr.w r0, [r8, 0xc8] | r0 = var_1f8h;
0x0000456c and r3, r3, 0x20 | r3 &= 0x20;
0x00004570 str r3, [sp, 0xc] | var_ch = r3;
0x00004572 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004574 ldr.w sl, [r3] | sl = *(r3);
0x00004578 bl 0x3ffc | fcn_00003ffc (r0, r1, r2);
0x0000457a stc2l p11, c9, [r0, -0x1c] | __asm ("stc2l p11, c9, [r0, -0x1c]");
0x0000457e mov fp, r0 |
0x00004580 cmp r3, 0 |
| if (r3 == 0) {
0x00004582 beq.w 0x4ee0 | goto label_47;
| }
0x00004586 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00004588 movs r5, 1 | r5 = 1;
0x0000458a movs r2, 0 | r2 = 0;
0x0000458c sub.w ip, r3, 4 |
0x00004590 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00004592 subs r0, r3, 4 | r0 = r3 - 4;
0x00004594 mov r3, r6 | r3 = r6;
0x00004596 mov r6, sl | r6 = sl;
0x00004598 mov sl, r3 | sl = r3;
| label_13:
0x0000459a ldr r3, [ip, 4]! | r3 = *((ip += 4));
0x0000459e str r3, [r4] | *(r4) = r3;
0x000045a0 ldr r3, [r0, 4]! | r3 = *((r0 += 4));
0x000045a4 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x000045a6 cmp.w sl, 0 |
0x000045a8 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x000045aa beq.w 0x4ca0 | goto label_48;
| }
0x000045ae ldr r3, [sp, 0x10] | r3 = var_10h;
0x000045b0 movs r7, 0 | r7 = 0;
0x000045b2 strd r2, ip, [sp, 0x2c] | __asm ("strd r2, ip, [var_2ch]");
0x000045b6 str r0, [sp, 0x34] | var_34h = r0;
0x000045b8 sub.w sb, r3, 4 | sb = r3 - 4;
0x000045bc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000045be sub.w r8, r3, 4 | r8 = r3 - 4;
0x000045c2 b 0x45dc |
| while (r3 == 0) {
| label_0:
0x000045c4 ldr r0, [sp, 8] | r0 = var_8h;
0x000045c6 adds r7, 1 | r7++;
0x000045c8 mov r3, r6 | r3 = r6;
0x000045ca mov r2, fp | r2 = fp;
0x000045cc mov r1, r4 | r1 = r4;
0x000045ce blx 0x282c | fcn_0000282c ();
0x000045d2 cmp sl, r7 |
0x000045d4 and.w r5, r5, r0 | r5 &= r0;
| if (sl == r7) {
0x000045d8 beq.w 0x4c9a | goto label_49;
| }
0x000045dc ldr r3, [sb, 4]! | r3 = *((sb += 4));
0x000045e0 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x000045e2 ldr r3, [r8, 4]! | r3 = *((r8 += 4));
0x000045e6 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x000045e8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000045ea cmp r3, 0 |
0x000045ec beq 0x45c4 |
| }
0x000045ee ldrh.w r1, [r4, 0x58] | r1 = *((r4 + 0x58));
0x000045f2 movs r3, 0x5b | r3 = 0x5b;
0x000045f4 movs r2, 0 | r2 = 0;
0x000045f6 mov r0, r4 | r0 = r4;
0x000045f8 str r6, [sp] | *(sp) = r6;
0x000045fa add r1, r4 | r1 += r4;
0x000045fc adds r1, 2 | r1 += 2;
0x000045fe bl 0x3df8 | fcn_00003df8 (r0, r1, r2, r3, r4);
0x00004602 b 0x45c4 | goto label_0;
| label_38:
0x00004604 cmp.w r7, 0x4000 |
| if (r7 == 0x4000) {
0x00004608 beq.w 0x47e8 | goto label_40;
| }
| label_9:
0x0000460c cmp r7, 0x80 |
0x0000460e mov.w r4, 0 | r4 = 0;
| if (r7 != 0x80) {
0x00004612 bne 0x4530 | goto label_1;
| }
| label_6:
0x00004614 ldr.w r1, [r8, 0xc4] | r1 = var_c4h;
0x00004618 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000461a ldr r0, [sp, 8] | r0 = var_8h;
0x0000461c and r1, r1, 0x20 | r1 &= 0x20;
0x00004620 ldr r2, [r3] | r2 = *(r3);
0x00004622 bl 0x41dc | r0 = fcn_000041dc (r0, r1, r2);
0x00004626 mov r5, r0 | r5 = r0;
| do {
| label_3:
0x00004628 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000462a cmp r3, 1 |
| if (r3 > 1) {
0x0000462c bgt.w 0x47d2 | goto label_12;
| }
| label_11:
0x00004630 add r0, sp, 0x1f8 | r0 += var_1f8h;
0x00004632 blx 0x27c8 | fcn_000027c8 ();
0x00004636 cmp r4, 0 |
| if (r4 != 0) {
0x00004638 bne 0x46b6 | goto label_5;
| }
| label_2:
0x0000463a ldr r0, [sp, 0x20] | r0 = var_20h;
0x0000463c blx 0x22c4 | fcn_000022c4 ();
0x00004640 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00004642 blx 0x22c4 | fcn_000022c4 ();
0x00004646 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00004648 blx 0x22c4 | fcn_000022c4 ();
0x0000464c ldr r0, [sp, 0x14] | r0 = var_14h;
0x0000464e blx 0x22c4 | fcn_000022c4 ();
0x00004652 movs r0, 1 | r0 = 1;
0x00004654 blx 0x2340 | fcn_00002340 ();
0x00004658 ldr.w r2, [pc, 0x928] |
0x0000465c ldr.w r3, [pc, 0x910] | r3 = *(0x4f70);
0x00004660 add r2, pc | r2 = 0x95e8;
0x00004662 ldr r3, [r2, r3] | r3 = *(0x95e8);
0x00004664 ldr r2, [r3] | r2 = *(0x95e8);
0x00004666 ldr r3, [sp, 0x234] | r3 = var_234h;
0x00004668 eors r2, r3 | r2 ^= r3;
0x0000466a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000466e bne.w 0x4f52 | goto label_50;
| }
0x00004672 mov r0, r5 | r0 = r5;
0x00004674 add.w sp, sp, 0x23c |
0x00004678 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_45:
0x0000467c cmp.w r7, 0x2000 |
| if (r7 != 0x2000) {
0x00004680 bne 0x46be | goto label_51;
| }
| label_10:
0x00004682 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004684 ldrd r0, r1, [sp, 8] | __asm ("ldrd r0, r1, [var_8h]");
0x00004688 ldr r2, [r3] | r2 = *(r3);
0x0000468a blx 0x2704 | r0 = ip6tc_commit ();
0x0000468e mov r5, r0 | r5 = r0;
0x00004690 b 0x4628 |
| } while (1);
| label_5:
0x000046b6 mov r0, r4 | r0 = r4;
0x000046b8 blx 0x22c4 | fcn_000022c4 ();
0x000046bc b 0x463a | goto label_2;
| if (r7 > 0x2000) {
| label_51:
0x000046be bhi 0x46cc | goto label_4;
| }
0x000046c0 bic r3, r7, 0x80 | r3 = BIT_MASK (r7, 0x80);
0x000046c4 cmp.w r3, 0x1000 |
| if (r3 == 0x1000) {
0x000046c8 beq.w 0x4d86 | goto label_46;
| }
| do {
| label_4:
0x000046cc invalid |
0x000046ce movs r0, 2 | r0 = 2;
0x000046d0 ldr r1, [r3] | r1 = *(r3);
0x000046d2 bl 0x7f80 | fcn_00007f80 (r0, r1);
| label_43:
0x000046d6 cmp.w r7, 0x200 |
| if (r7 == 0x200) {
0x000046da beq.w 0x4e20 | goto label_52;
| }
| if (r7 < 0x200) {
0x000046de bls 0x4702 | goto label_53;
| }
0x000046e0 cmp.w r7, 0x400 |
0x000046e4 bne 0x46cc |
| } while (r7 != 0x400);
0x000046e6 ldr.w r2, [r8, 0xc4] | r2 = var_c4h;
0x000046ea ldr r3, [sp, 0x18] | r3 = var_18h;
0x000046ec ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000046ee ands r2, r2, 0x400 | r2 &= 0x400;
0x000046f2 ldr r0, [sp, 8] | r0 = var_8h;
0x000046f4 ldr r3, [r3] | r3 = *(r3);
0x000046f6 it ne |
| if (r2 == r2) {
0x000046f8 addne r2, sp, 0x190 | r2 += var_190h;
| }
0x000046fa blx 0x278c | r0 = fcn_0000278c ();
0x000046fe mov r5, r0 | r5 = r0;
0x00004700 b 0x4628 | goto label_3;
| label_53:
0x00004702 cmp r7, 0xa0 |
| if (r7 == 0xa0) {
0x00004704 beq.w 0x4bd6 | goto label_44;
| }
0x00004708 cmp.w r7, 0x100 |
| if (r7 != 0x100) {
0x0000470c bne 0x46cc | goto label_4;
| }
0x0000470e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004710 ldr r0, [sp, 8] | r0 = var_8h;
0x00004712 ldr r1, [r3] | r1 = *(r3);
0x00004714 blx 0x23c4 | fcn_000023c4 ();
0x00004716 cdp p6, 5, c4, c6, c5, 0 | __asm ("cdp p6, 5, c4, c6, c5, 0");
0x0000471a b 0x4628 | goto label_3;
| label_41:
0x0000471c cmp r7, 0x20 |
| if (r7 > 0x20) {
0x0000471e bhi 0x47b4 | goto label_54;
| }
0x00004720 cmp r7, 0x20 |
| if (r7 > 0x20) {
0x00004722 bhi 0x46cc | goto label_4;
| }
0x00004724 adr r3, 8 | r3 = 8;
0x00004726 ldr.w r2, [r3, r7, lsl 2] | offset_0 = r7 << 2;
| r2 = *((r3 + offset_0));
0x0000472a add r3, r2 | r3 += r2;
| /* switch table (33 cases) at 0x4730 */
0x0000472c bx r3 | return uint32_t (*r3)() ();
| label_54:
0x000047b4 cmp r7, 0x40 |
| if (r7 != 0x40) {
0x000047b6 bne 0x46cc | goto label_4;
| }
0x000047b8 ldr.w r1, [r8, 0xc4] | r1 = var_c4h;
0x000047bc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000047be ldr r0, [sp, 8] | r0 = var_8h;
0x000047c0 and r1, r1, 0x20 | r1 &= 0x20;
0x000047c4 ldr r2, [r3] | r2 = *(r3);
0x000047c6 bl 0x4124 | r0 = fcn_00004124 (r0, r1, r2);
0x000047ca mov r5, r0 | r5 = r0;
0x000047cc b 0x4628 | goto label_3;
| label_25:
0x000047ce mov r4, r7 | r4 = r7;
0x000047d0 movs r5, 1 | r5 = 1;
| label_12:
0x000047d2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000047d4 ldr r0, [r3] | r0 = *(r3);
0x000047d6 blx 0x26c4 | fcn_000026c4 ();
0x000047da add r0, sp, 0x1f8 | r0 += var_1f8h;
0x000047dc blx 0x27c8 | fcn_000027c8 ();
0x000047de invalid |
| if (r5 == 1) {
0x000047e2 beq.w 0x463a | goto label_2;
| }
0x000047e6 b 0x46b6 | goto label_5;
| label_40:
0x000047e8 ldr.w r3, [r8, 0xd0] | r3 = var_d0h;
0x000047ec ldr.w r0, [r8, 0xf0] | r0 = var_f0h_2;
0x000047f0 cmp r3, 0 |
| if (r3 == 0) {
0x000047f2 beq.w 0x492a | goto label_55;
| }
0x000047f6 blx 0x2560 | r0 = ip6tc_is_chain ();
0x000047fa cmp r0, 0 |
| if (r0 != 0) {
0x000047fc bne 0x48fe | goto label_56;
| }
0x000047fe ldr.w r3, [r8, 0xd0] | r3 = var_d0h;
0x00004802 cmp r3, 0 |
| if (r3 == 0) {
0x00004804 beq.w 0x492a | goto label_55;
| }
| label_8:
0x00004808 ldr.w fp, [r3, 0x58] | fp = *((r3 + 0x58));
0x0000480c ldr.w sb, [r8, 0xc8] | sb = var_1f8h;
0x00004810 ldrh.w r0, [fp] | r0 = *(fp);
0x00004814 cmp.w sb, 0 |
0x00004816 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x00004818 beq.w 0x4ef0 | goto label_57;
| }
0x0000481c mov r5, sb | r5 = sb;
0x0000481e mov.w sl, 0x70 | sl = 0x70;
| do {
0x00004822 ldrd r5, r3, [r5] | __asm ("ldrd r5, r3, [r5]");
0x00004826 ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
0x00004828 ldrh r3, [r3] | r3 = *(r3);
0x0000482a add sl, r3 | sl += r3;
0x0000482c cmp r5, 0 |
0x0000482e bne 0x4822 |
| } while (r5 != 0);
0x00004830 add r0, sl | r0 += sl;
0x00004832 uxth.w sl, sl | sl = (int16_t) sl;
0x00004836 blx 0x2494 | xtables_ip6addr_to_anyname ();
0x0000483a movs r2, 0x70 | r2 = 0x70;
0x0000483c mov r1, r8 | r1 = r8;
0x0000483e mov r4, r0 | r4 = r0;
0x00004840 blx 0x22e8 | fcn_000022e8 ();
0x00004844 ldrh.w r3, [fp] | r3 = *(fp);
0x00004848 strh.w sl, [r4, 0x58] | *((r4 + 0x58)) = sl;
0x0000484c add sl, r3 | sl += r3;
0x0000484e mov r3, r4 | r3 = r4;
0x00004850 strh.w sl, [r4, 0x5a] | *((r4 + 0x5a)) = sl;
0x00004854 add.w sl, r4, 0x70 | sl = r4 + 0x70;
0x00004858 mov r4, sb | r4 = sb;
0x0000485a mov sb, r3 | sb = r3;
| do {
0x0000485c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000485e add.w r0, sl, r5 | r0 = sl + r5;
0x00004862 ldr r1, [r3, 0x58] | r1 = *((r3 + 0x58));
0x00004864 ldrh r2, [r1] | r2 = *(r1);
0x00004866 blx 0x22e8 | fcn_000022e8 ();
0x0000486a ldrd r4, r3, [r4] | __asm ("ldrd r4, r3, [r4]");
0x0000486e ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
0x00004870 ldrh r3, [r3] | r3 = *(r3);
0x00004872 add r5, r3 | r5 += r3;
0x00004874 cmp r4, 0 |
0x00004876 bne 0x485c |
| } while (r4 != 0);
0x00004878 ldrh.w r2, [fp] | r2 = *(fp);
0x0000487c mov r4, sb | r4 = sb;
0x0000487e add.w r0, sl, r5 | r0 = sl + r5;
| label_29:
0x00004882 mov r1, fp | r1 = fp;
0x00004884 blx 0x22e8 | fcn_000022e8 ();
0x00004888 ldr.w r3, [r8, 0xd0] | r3 = var_d0h;
0x0000488a adds r0, 0xd0 | r0 += 0xd0;
0x0000488c ldr r0, [r3, 0x58] | r0 = *((r3 + 0x58));
0x0000488e blx 0x22c4 | fcn_000022c4 ();
0x00004892 cmp r7, 0x80 |
| if (r7 != 0x80) {
0x00004894 bne.w 0x4530 | goto label_1;
| }
0x00004898 b 0x4614 | goto label_6;
| label_36:
0x0000489a ldr r0, [sp, 0x128] | r0 = var_128h;
0x0000489c bl 0x68f0 | fcn_000068f0 (r0);
0x000048a0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000048a2 ldr r1, [r3] | r1 = *(r3);
0x000048a4 cmp r1, 0 |
| if (r1 != 0) {
0x000048a6 bne.w 0x4514 | goto label_7;
| }
| label_37:
0x000048aa ldr r0, [r5] | r0 = *(r5);
0x000048ac blx 0x25d8 | sprintf_chk ()
0x000048b0 ldr r4, [sp, 0x18] | r4 = var_18h;
0x000048b2 mov r1, r0 | r1 = r0;
0x000048b4 str r0, [r4] | *(r4) = r0;
0x000048b6 cmp r0, 0 |
| if (r0 != 0) {
0x000048b8 bne.w 0x4514 | goto label_7;
| }
0x000048bc ldr.w r3, [pc, 0x6c8] | r3 = *(0x4f88);
0x000048c0 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000048c4 ldr r0, [r3] | r0 = *(0x4f88);
0x000048c6 blx 0x26e0 | iptc_zero_counter ();
0x000048ca adds r0, 1 | r0++;
| if (r0 != 1) {
0x000048cc bne.w 0x4d1a | goto label_58;
| }
0x000048d0 ldr r1, [r4] | r1 = *(r4);
0x000048d2 cmp r1, 0 |
| if (r1 != 0) {
0x000048d4 bne.w 0x4514 | goto label_7;
| }
| label_18:
0x000048d8 ldr.w r3, [pc, 0x6b0] |
0x000048dc ldr r5, [r5] | r5 = *(r5);
0x000048de ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000048e2 ldr r3, [r3] | r3 = *(0x4f8c);
0x000048e4 ldr r4, [r3, 0x14] | r4 = *(0x4fa0);
0x000048e6 blx 0x25b4 | r0 = ip6tc_free ();
0x000048ea ldr r0, [r0] | r0 = *(r0);
0x000048ec blx 0x23dc | fcn_000023dc ();
0x000048f0 ldr.w r1, [pc, 0x69c] |
0x000048f4 mov r3, r0 | r3 = r0;
0x000048f6 mov r2, r5 | r2 = r5;
0x000048f8 movs r0, 3 | r0 = 3;
0x000048fa add r1, pc | r1 = 0x988e;
0x000048fc blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| label_56:
0x000048fe ldr.w r3, [pc, 0x694] | r3 = *(0x4f96);
0x00004902 movs r1, 1 | r1 = 1;
0x00004904 ldr.w r2, [pc, 0x690] |
0x00004908 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x0000490c add r2, pc | r2 = 0x98a8;
0x0000490e ldr r0, [r3] | r0 = *(0x4f96);
0x00004910 ldr.w r3, [r8, 0xf0] | r3 = var_f0h_2;
0x00004914 blx 0x26b8 | fcn_000026b8 ();
0x00004916 mrc p8, 6, apsr_nzcv, c0, c8, 6 | __asm ("mrc p8, 6, apsr_nzcv, c0, c8, 6");
0x0000491a adds r0, 0xd0 | r0 += 0xd0;
0x0000491c ldr r0, [r3, 0x58] | r0 = *(0x4fee);
| if (r0 != 0) {
0x0000491e cbz r0, 0x4924 |
0x00004920 blx 0x22c4 | fcn_000022c4 ();
| }
0x00004924 movs r3, 0 | r3 = 0;
0x00004926 str.w r3, [r8, 0xd0] | __asm ("str.w r3, [var_d0h]");
| label_55:
0x0000492a ldr.w r0, [r8, 0xf0] | r0 = var_f0h_2;
0x0000492e ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x00004930 cbz r3, 0x493c |
0x00004932 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004934 ldr r1, [r3] | r1 = *(r3);
0x00004936 blx 0x2560 | r0 = ip6tc_is_chain ();
| if (r0 == 0) {
0x0000493a cbz r0, 0x4990 | goto label_59;
| }
| }
0x0000493c ldr.w r0, [pc, 0x65c] |
0x00004940 movs r1, 3 | r1 = 3;
0x00004942 add r0, pc | r0 = 0x98e2;
0x00004944 blx 0x26f8 | strtok (r0, r1);
0x00004948 ldr r5, [r0, 0x14] | r5 = *(0x98f6);
0x0000494a mov r4, r0 | r4 = r0;
0x0000494c str.w r0, [r8, 0xd0] | __asm ("str.w r0, [var_d0h]");
0x00004950 movs r0, 1 | r0 = 1;
0x00004952 adds r5, 0x20 | r5 += 0x20;
0x00004954 mov r1, r5 | r1 = r5;
0x00004956 blx 0x26a8 | fcn_000026a8 ();
0x0000495a ldr.w r3, [r8, 0xd0] | r3 = var_d0h;
0x0000495e movs r2, 0x1d | r2 = 0x1d;
0x00004960 str r0, [r4, 0x58] | *((r4 + 0x58)) = r0;
0x00004962 ldr.w r1, [r8, 0xf0] | r1 = var_f0h_2;
0x00004966 ldr r0, [r3, 0x58] | r0 = *((r3 + 0x58));
0x00004968 strh r5, [r0], 2 | *(r0) = r5;
| r0 += 2;
0x0000496c blx 0x2430 | fcn_00002430 ();
0x00004970 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004972 ldr.w r0, [r8, 0xf0] | r0 = var_f0h_2;
0x00004976 ldr r1, [r3] | r1 = *(r3);
0x00004978 blx 0x2560 | r0 = ip6tc_is_chain ();
0x0000497c cmp r0, 0 |
| if (r0 != 0) {
0x0000497e bne.w 0x4e38 | goto label_60;
| }
0x00004982 ldr.w r0, [r8, 0xd0] | r0 = var_d0h;
0x00004986 ldr r3, [r0, 0x58] | r3 = *((r0 + 0x58));
0x00004988 ldrb r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x0000498a strb r2, [r3, 0x1f] | *((r3 + 0x1f)) = r2;
| label_24:
0x0000498c bl 0x66dc | fcn_000066dc (r0);
| label_59:
0x00004990 ldr.w r3, [r8, 0xd0] | r3 = var_d0h;
0x00004994 cmp r3, 0 |
| if (r3 != 0) {
0x00004996 bne.w 0x4808 | goto label_8;
| }
0x0000499a ldrb.w r3, [r8, 0x52] | r3 = var_52h;
0x0000499e ldr.w r0, [r8, 0xf0] | r0 = var_f0h_2;
0x000049a2 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 < r3) {
0x000049a4 bmi.w 0x4f56 | goto label_61;
| }
0x000049a8 movs r1, 3 | r1 = 3;
0x000049aa blx 0x26f8 | strtok (r0, r1);
0x000049ae b 0x460c | goto label_9;
| label_44:
0x00004bd6 ldr.w r2, [r8, 0xc4] | r2 = var_c4h;
0x00004bda ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004bdc tst.w r2, 0x20 |
0x00004be0 and r0, r2, 0x40 | r0 = r2 & 0x40;
0x00004be4 ite ne |
| if ((r2 & 0x20) == 0) {
0x00004be6 movne fp, 0x48 |
| }
| if ((r2 & 0x20) == 0) {
0x00004bea mov.w fp, 0xa |
| }
0x00004bee lsls r5, r2, 0x1f | r5 = r2 << 0x1f;
0x00004bf0 ldr r6, [r3] | r6 = *(r3);
0x00004bf2 and r1, r2, 0x200 | r1 = r2 & 0x200;
0x00004bf6 it mi |
| if (r5 >= r2) {
0x00004bf8 orrmi fp, fp, 1 |
| }
| if (r0 == 0) {
0x00004bfc cbnz r0, 0x4c02 |
0x00004bfe orr fp, fp, 4 |
| }
0x00004c02 cmp r1, 0 |
| if (r1 != 0) {
0x00004c04 bne.w 0x4e52 | goto label_62;
| }
| label_26:
0x00004c08 mov r0, r6 | r0 = r6;
0x00004c0a blx 0x2364 | r0 = fcn_00002364 ();
0x00004c0e mov sb, r0 | sb = r0;
0x00004c10 cmp r0, 0 |
| if (r0 == 0) {
0x00004c12 beq.w 0x4f48 | goto label_63;
| }
0x00004c16 mov sl, r4 | sl = r4;
0x00004c18 str r7, [sp, 0x2c] | var_2ch = r7;
0x00004c1a ldr r4, [sp, 8] | r4 = var_8h;
0x00004c1c movs r5, 0 | r5 = 0;
0x00004c1e ldr r7, [sp, 0xc] | r7 = var_ch;
0x00004c20 add r3, sp, 0x48 | r3 += var_48h;
0x00004c22 str r3, [sp, 0x1c] | var_1ch = r3;
0x00004c24 str.w r8, [sp, 0x30] | __asm ("str.w r8, [var_30h]");
| do {
0x00004c28 cmp r4, 0 |
| if (r4 == 0) {
0x00004c2a beq 0x4cac | goto label_64;
| }
0x00004c2c mov r1, sb | r1 = sb;
0x00004c2e mov r0, r4 | r0 = r4;
0x00004c30 blx 0x2248 | r0 = strcmp (r0, r1);
0x00004c34 cmp r0, 0 |
| if (r0 == 0) {
0x00004c36 beq 0x4cac | goto label_64;
| }
| label_16:
0x00004c38 mov r0, r6 | r0 = r6;
0x00004c3a blx 0x2608 | r0 = putchar (r0);
0x00004c3e mov sb, r0 | sb = r0;
0x00004c40 cmp r0, 0 |
0x00004c42 bne 0x4c28 |
| } while (r0 != 0);
0x00004c44 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x00004c46 mov r4, sl | r4 = sl;
| label_21:
0x00004c48 blx 0x25b4 | ip6tc_free ();
0x00004c4c movs r3, 2 | r3 = 2;
0x00004c4e ldr.w r8, [sp, 0x30] | r8 = var_30h;
0x00004c52 str r3, [r0] | *(r0) = r3;
0x00004c54 cmp r5, 0 |
| if (r5 == 0) {
0x00004c56 beq.w 0x4d72 | goto label_33;
| }
0x00004c5a lsls r2, r7, 0x18 | r2 = r7 << 0x18;
| if (r2 < r7) {
0x00004c5c bmi 0x4d58 | goto label_65;
| }
| label_20:
0x00004c5e lsls r3, r7, 0x12 | r3 = r7 << 0x12;
| if (r3 >= r7) {
0x00004c60 bpl.w 0x4628 | goto label_3;
| }
0x00004c64 b 0x4682 | goto label_10;
| label_14:
0x00004c76 mov r0, fp | r0 = fp;
0x00004c78 blx 0x22c4 | fcn_000022c4 ();
0x00004c7c ldr r3, [sp, 0x28] | r3 = var_28h;
0x00004c7e cmp r3, 1 |
| if (r3 <= 1) {
0x00004c80 ble.w 0x4630 | goto label_11;
| }
0x00004c84 b 0x47d2 | goto label_12;
| label_49:
0x00004c9a ldrd r2, ip, [sp, 0x2c] | __asm ("ldrd r2, ip, [var_2ch]");
0x00004c9e ldr r0, [sp, 0x34] | r0 = var_34h;
| label_48:
0x00004ca0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00004ca2 adds r2, 1 | r2++;
0x00004ca4 cmp r3, r2 |
| if (r3 != r2) {
0x00004ca6 bne.w 0x459a | goto label_13;
| }
0x00004caa b 0x4c76 | goto label_14;
| if (r5 != 0) {
| label_64:
0x00004cac cbnz r5, 0x4d12 | goto label_66;
| }
| label_17:
0x00004cae cmp r7, 0 |
| if (r7 == 0) {
0x00004cb0 beq 0x4d2e | goto label_67;
| }
| label_19:
0x00004cb2 mov r0, sb | r0 = sb;
0x00004cb4 mov r1, r6 | r1 = r6;
0x00004cb6 clz r8, r7 | r8 &= r7;
0x00004cba mov.w sb, 0 | sb = 0;
0x00004cbe blx 0x2780 | fcn_00002780 ();
0x00004cc2 lsr.w r8, r8, 5 | r8 >>= 5;
0x00004cc6 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00004cc8 cbnz r0, 0x4cd8 | goto label_15;
| }
0x00004cca b 0x4d0e | goto label_68;
| do {
0x00004ccc mov r0, r5 | r0 = r5;
0x00004cce mov r1, r6 | r1 = r6;
0x00004cd0 blx 0x2844 | r0 = fcn_00002844 ();
0x00004cd4 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00004cd6 cbz r0, 0x4d0e | goto label_68;
| }
| label_15:
0x00004cd8 add.w sb, sb, 1 | sb++;
0x00004cdc cmp r7, sb |
0x00004cde ite ne |
| if (r7 == sb) {
0x00004ce0 movne r3, r8 | r3 = r8;
| }
| if (r7 != sb) {
0x00004ce2 orreq r3, r8, 1 | r3 = r8 | 1;
| }
0x00004ce6 cmp r3, 0 |
0x00004ce8 beq 0x4ccc |
| } while (r3 == 0);
0x00004cea mov r1, r6 | r1 = r6;
0x00004cec mov r0, r5 | r0 = r5;
0x00004cee blx 0x2664 | fcn_00002664 ();
0x00004cf2 mov r3, fp | r3 = fp;
0x00004cf4 mov r1, r0 | r1 = r0;
0x00004cf6 mov r2, sb | r2 = sb;
0x00004cf8 mov r0, r5 | r0 = r5;
0x00004cfa str r6, [sp] | *(sp) = r6;
0x00004cfc bl 0x3df8 | fcn_00003df8 (r0, r1, r2, r3, r4);
0x00004d00 mov r0, r5 | r0 = r5;
0x00004d02 mov r1, r6 | r1 = r6;
0x00004d04 blx 0x2844 | r0 = fcn_00002844 ();
0x00004d08 mov r5, r0 | r5 = r0;
0x00004d0a cmp r0, 0 |
| if (r0 != 0) {
0x00004d0c bne 0x4cd8 | goto label_15;
| }
| label_68:
0x00004d0e movs r5, 1 | r5 = 1;
0x00004d10 b 0x4c38 | goto label_16;
| label_66:
0x00004d12 movs r0, 0xa | r0 = 0xa;
0x00004d14 blx 0x2618 | r0 = fcn_00002618 ();
0x00004d16 stc p7, c14, [r0], {0xc9} | __asm ("stc p7, c14, [r0], {0xc9}");
0x00004d18 b 0x4cae | goto label_17;
| label_58:
0x00004d1a ldr r0, [r5] | r0 = *(r5);
0x00004d1c blx 0x25d8 | sprintf_chk ()
0x00004d20 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004d22 mov r1, r0 | r1 = r0;
0x00004d24 str r0, [r3] | *(r3) = r0;
0x00004d26 cmp r1, 0 |
| if (r1 != 0) {
0x00004d28 bne.w 0x4514 | goto label_7;
| }
0x00004d2c b 0x48d8 | goto label_18;
| label_67:
0x00004d2e ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00004d30 mov r2, r6 | r2 = r6;
0x00004d32 mov r0, sb | r0 = sb;
0x00004d34 blx 0x2710 | r0 = xtables_find_match ();
0x00004d38 mov r5, r0 | r5 = r0;
0x00004d3a cmp r0, 0 |
| if (r0 == 0) {
0x00004d3c beq.w 0x4f2a | goto label_69;
| }
| label_31:
0x00004d40 mov.w r3, -1 | r3 = -1;
| label_32:
0x00004d44 str r3, [sp] | *(sp) = r3;
0x00004d46 movs r3, 0 | r3 = 0;
0x00004d48 str r3, [sp, 4] | var_4h_2 = r3;
0x00004d4a mov r2, r5 | r2 = r5;
0x00004d4c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00004d4e mov r1, sb | r1 = sb;
0x00004d50 mov r0, fp | r0 = fp;
0x00004d52 bl 0x6ecc | fcn_00006ecc (r0, r1, r2, r3);
0x00004d56 b 0x4cb2 | goto label_19;
| label_65:
0x00004d58 ldr.w r1, [r8, 0xc4] | r1 = *((r8 + 0xc4));
0x00004d5c ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004d5e ldr r0, [sp, 8] | r0 = var_8h;
0x00004d60 and r1, r1, 0x20 | r1 &= 0x20;
0x00004d64 ldr r2, [r3] | r2 = *(r3);
0x00004d66 bl 0x41dc | r0 = fcn_000041dc (r0, r1, r2);
0x00004d6a mov r5, r0 | r5 = r0;
0x00004d6c cmp r0, 0 |
| if (r0 != 0) {
0x00004d6e bne.w 0x4c5e | goto label_20;
| }
| label_33:
0x00004d72 movs r5, 0 | r5 = 0;
0x00004d74 b 0x4628 | goto label_3;
| label_42:
0x00004d76 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004d78 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00004d7a ldr r0, [sp, 8] | r0 = var_8h;
0x00004d7c ldr r2, [r3] | r2 = *(r3);
0x00004d7e blx 0x2224 | r0 = iptc_rename_chain ();
0x00004d82 mov r5, r0 | r5 = r0;
0x00004d84 b 0x4628 | goto label_3;
| label_46:
0x00004d86 ldr.w r3, [r8, 0xc4] | r3 = var_c4h;
0x00004d8a ldr r2, [sp, 0x18] | r2 = var_18h;
0x00004d8c and fp, r3, 0x20 |
0x00004d90 sbfx sl, r3, 5, 1 | __asm ("sbfx sl, r3, 5, 1");
0x00004d94 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00004d96 ldr r6, [r2] | r6 = *(r2);
0x00004d98 cmp r3, 0 |
| if (r3 == 0) {
0x00004d9a beq 0x4e58 | goto label_70;
| }
| label_27:
0x00004d9c mov r0, r6 | r0 = r6;
0x00004d9e blx 0x2364 | r0 = fcn_00002364 ();
0x00004da2 mov sb, r0 | sb = r0;
0x00004da4 cmp r0, 0 |
| if (r0 == 0) {
0x00004da6 beq.w 0x4f48 | goto label_63;
| }
0x00004daa mov fp, r4 |
0x00004dac str r7, [sp, 0x2c] | var_2ch = r7;
0x00004dae ldr r4, [sp, 8] | r4 = var_8h;
0x00004db0 movs r5, 0 | r5 = 0;
0x00004db2 ldr r7, [sp, 0xc] | r7 = var_ch;
0x00004db4 str.w r8, [sp, 0x30] | __asm ("str.w r8, [var_30h]");
| do {
| if (r4 == 0) {
0x00004db8 cbz r4, 0x4dd6 | goto label_71;
| }
0x00004dba mov r1, r4 | r1 = r4;
0x00004dbc mov r0, sb | r0 = sb;
0x00004dbe blx 0x2248 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00004dc2 cbz r0, 0x4dd6 | goto label_71;
| }
| label_23:
0x00004dc4 mov r0, r6 | r0 = r6;
0x00004dc6 blx 0x2608 | r0 = putchar (r0);
0x00004dca mov sb, r0 | sb = r0;
0x00004dcc cmp r0, 0 |
0x00004dce bne 0x4db8 |
| } while (r0 != 0);
0x00004dd0 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x00004dd2 mov r4, fp | r4 = fp;
0x00004dd4 b 0x4c48 | goto label_21;
| label_71:
0x00004dd6 mov r1, r6 | r1 = r6;
0x00004dd8 mov r0, sb | r0 = sb;
0x00004dda clz r8, r7 | r8 &= r7;
0x00004dde movs r5, 0 | r5 = 0;
0x00004de0 lsr.w r8, r8, 5 | r8 >>= 5;
0x00004de4 blx 0x2780 | r0 = fcn_00002780 ();
| if (r0 != 0) {
0x00004de8 cbnz r0, 0x4df4 | goto label_22;
| }
0x00004dea b 0x4e1c | goto label_72;
| do {
0x00004dec mov r1, r6 | r1 = r6;
0x00004dee blx 0x2844 | r0 = fcn_00002844 ();
| if (r0 == 0) {
0x00004df2 cbz r0, 0x4e1c | goto label_72;
| }
| label_22:
0x00004df4 adds r5, 1 | r5++;
0x00004df6 cmp r7, r5 |
0x00004df8 ite ne |
| if (r7 == r5) {
0x00004dfa movne r3, r8 | r3 = r8;
| }
| if (r7 != r5) {
0x00004dfc orreq r3, r8, 1 | r3 = r8 | 1;
| }
0x00004e00 cmp r3, 0 |
0x00004e02 beq 0x4dec |
| } while (r3 == 0);
0x00004e04 mov r1, r6 | r1 = r6;
0x00004e06 mov r3, sl | r3 = sl;
0x00004e08 mov r2, sb | r2 = sb;
0x00004e0a str r0, [sp, 0x1c] | var_1ch = r0;
0x00004e0c bl 0x4238 | fcn_00004238 (r0, r1, r2, r3, r4);
0x00004e10 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00004e12 mov r1, r6 | r1 = r6;
0x00004e14 blx 0x2844 | fcn_00002844 ();
0x00004e16 ldc p8, c2, [r6, -0] | __asm ("ldc p8, c2, [r6, -0]");
| if (r3 != 0) {
0x00004e1a bne 0x4df4 | goto label_22;
| }
| label_72:
0x00004e1c movs r5, 1 | r5 = 1;
0x00004e1e b 0x4dc4 | goto label_23;
| label_52:
0x00004e20 ldr.w r1, [r8, 0xc4] | r1 = var_c4h;
0x00004e24 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00004e26 ldr r0, [sp, 8] | r0 = var_8h;
0x00004e28 and r1, r1, 0x20 | r1 &= 0x20;
0x00004e2c ldr r2, [r3] | r2 = *(r3);
0x00004e2e bl 0x4180 | r0 = fcn_00004180 (r0, r1, r2);
0x00004e32 mov r5, r0 | r5 = r0;
0x00004e34 b.w 0x4628 | goto label_3;
| label_60:
0x00004e38 ldr.w r0, [r8, 0xd0] | r0 = var_d0h;
0x00004e3c b 0x498c | goto label_24;
| label_39:
0x00004e3e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00004e40 cmp r3, 1 |
| if (r3 > 1) {
0x00004e42 bgt.w 0x47ce | goto label_25;
| }
0x00004e46 add r0, sp, 0x1f8 | r0 += var_1f8h;
0x00004e48 movs r5, 1 | r5 = 1;
0x00004e4a blx 0x27c8 | fcn_000027c8 ();
0x00004e4e b.w 0x463a | goto label_2;
| label_62:
0x00004e52 orr fp, fp, 0x100 |
0x00004e56 b 0x4c08 | goto label_26;
| label_70:
0x00004e58 mov r0, r6 | r0 = r6;
0x00004e5a blx 0x2364 | r0 = fcn_00002364 ();
0x00004e5e mov r5, r0 | r5 = r0;
0x00004e60 cmp r0, 0 |
| if (r0 == 0) {
0x00004e62 beq 0x4d9c | goto label_27;
| }
0x00004e64 ldr r3, [pc, 0x138] |
0x00004e66 add r3, pc | r3 = 0x9e0a;
0x00004e68 str r3, [sp, 0x1c] | var_1ch = r3;
0x00004e6a ldr r3, [pc, 0x138] |
0x00004e6c add r3, pc | r3 = 0x9e16;
0x00004e6e str r3, [sp, 0x2c] | var_2ch = r3;
0x00004e70 ldr r3, [pc, 0x134] |
0x00004e72 add r3, pc | r3 = 0x9e1e;
0x00004e74 strd r3, r7, [sp, 0x30] | __asm ("strd r3, r7, [var_34h]");
0x00004e78 mov r3, r4 | r3 = r4;
0x00004e7a ldr r7, [sp, 8] | r7 = var_8h;
0x00004e7c mov r4, fp | r4 = fp;
0x00004e7e mov fp, r3 |
| do {
| if (r7 != 0) {
0x00004e80 cbz r7, 0x4e8c |
0x00004e82 mov r1, r7 | r1 = r7;
0x00004e84 mov r0, r5 | r0 = r5;
0x00004e86 blx 0x2248 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00004e8a cbnz r0, 0x4eb8 | goto label_28;
| }
| }
0x00004e8c mov r1, r6 | r1 = r6;
0x00004e8e mov r0, r5 | r0 = r5;
0x00004e90 blx 0x24b8 | r0 = ip6tc_rename_chain ();
| if (r0 == 0) {
0x00004e94 cbz r0, 0x4ee4 | goto label_73;
| }
0x00004e96 add.w sb, sp, 0x48 | sb += var_48h;
0x00004e9a mov r2, r6 | r2 = r6;
0x00004e9c mov r1, sb | r1 = sb;
0x00004e9e mov r0, r5 | r0 = r5;
0x00004ea0 blx 0x2710 | xtables_find_match ();
0x00004ea4 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00004ea6 mov r3, r0 | r3 = r0;
0x00004ea8 mov r2, r5 | r2 = r5;
0x00004eaa movs r0, 1 | r0 = 1;
0x00004eac blx 0x2674 | ip6tc_flush_entries ();
| if (r4 != 0) {
0x00004eb0 cbnz r4, 0x4f14 | goto label_74;
| }
| label_30:
0x00004eb2 movs r0, 0xa | r0 = 0xa;
0x00004eb4 blx 0x2618 | fcn_00002618 ();
| label_28:
0x00004eb8 mov r0, r6 | r0 = r6;
0x00004eba blx 0x2608 | r0 = putchar (r0);
0x00004ebe mov r5, r0 | r5 = r0;
0x00004ec0 cmp r0, 0 |
0x00004ec2 bne 0x4e80 |
| } while (r0 != 0);
0x00004ec4 ldr r7, [sp, 0x34] | r7 = var_34h;
0x00004ec6 mov r4, fp | r4 = fp;
0x00004ec8 b 0x4d9c | goto label_27;
| label_47:
0x00004ee0 movs r5, 1 | r5 = 1;
0x00004ee2 b 0x4c76 | goto label_14;
| label_73:
0x00004ee4 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00004ee6 mov r2, r5 | r2 = r5;
0x00004ee8 movs r0, 1 | r0 = 1;
0x00004eea blx 0x2674 | ip6tc_flush_entries ();
0x00004eee b 0x4eb8 | goto label_28;
| label_57:
0x00004ef0 movs r5, 0x70 | r5 = 0x70;
0x00004ef2 adds r0, 0x70 | r0 += 0x70;
0x00004ef4 blx 0x2494 | xtables_ip6addr_to_anyname ();
0x00004ef8 mov r2, r5 | r2 = r5;
0x00004efa mov r1, r8 | r1 = r8;
0x00004efc mov r4, r0 | r4 = r0;
0x00004efe blx 0x22e8 | fcn_000022e8 ();
0x00004f02 ldrh.w r2, [fp] | r2 = *(fp);
0x00004f06 adds r0, r4, r5 | r0 = r4 + r5;
0x00004f08 strh.w r5, [r4, 0x58] | *((r4 + 0x58)) = r5;
0x00004f0c adds r3, r2, r5 | r3 = r2 + r5;
0x00004f0e strh.w r3, [r4, 0x5a] | *((r4 + 0x5a)) = r3;
0x00004f12 b 0x4882 | goto label_29;
| label_74:
0x00004f14 ldrd r2, r3, [sp, 0x50] | __asm ("ldrd r2, r3, [var_50h]");
0x00004f18 movs r0, 1 | r0 = 1;
0x00004f1a ldr r1, [sp, 0x30] | r1 = var_30h;
0x00004f1c strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00004f20 ldrd r2, r3, [sp, 0x48] | __asm ("ldrd r2, r3, [var_48h]");
0x00004f24 blx 0x2674 | ip6tc_flush_entries ();
0x00004f28 b 0x4eb2 | goto label_30;
| label_69:
0x00004f2a add.w r8, sp, 0x3c | r8 += var_3ch;
0x00004f2e mov r2, r6 | r2 = r6;
0x00004f30 mov r1, sb | r1 = sb;
0x00004f32 mov r0, r8 | r0 = r8;
0x00004f34 blx 0x24d0 | r0 = ctype_tolower_loc ();
0x00004f38 cmp r0, 0 |
| if (r0 == 0) {
0x00004f3a beq.w 0x4d40 | goto label_31;
| }
0x00004f3e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00004f40 b 0x4d44 | goto label_32;
| label_63:
0x00004f48 blx 0x25b4 | ip6tc_free ();
0x00004f4c movs r3, 2 | r3 = 2;
0x00004f4e str r3, [r0] | *(r0) = r3;
0x00004f50 b 0x4d72 | goto label_33;
| label_50:
0x00004f52 blx 0x2370 | fcn_00002370 ();
| label_61:
0x00004f56 ldr r3, [pc, 0x34] |
0x00004f58 mov r2, r0 | r2 = r0;
0x00004f5a ldr r1, [pc, 0x50] |
0x00004f5c movs r0, 2 | r0 = 2;
0x00004f5e ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00004f62 add r1, pc | r1 = 0x9f14;
0x00004f64 ldr r3, [r3] |
0x00004f66 ldr r3, [r3, 0x14] | r3 = *(0x4fa2);
0x00004f68 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00004f6a nop |
0x00004f6c add r1, sp, 0x88 | r1 += var_88h;
0x00004f6e movs r0, r0 |
0x00004f70 lsls r0, r1, 9 | r0 = r1 << 9;
0x00004f72 movs r0, r0 |
0x00004f74 add r1, sp, 0x38 | r1 += var_38h;
0x00004f76 movs r0, r0 |
0x00004f78 add r3, sp, 0x2c0 | r3 += arg_2c0h;
0x00004f7a movs r0, r0 |
0x00004f7c lsls r0, r6, 9 | r0 = r6 << 9;
0x00004f7e movs r0, r0 |
0x00004f80 strh r2, [r2, 0x30] | *((r2 + 0x30)) = r2;
0x00004f82 movs r0, r0 |
0x00004f84 adr r7, 0x40 | r7 = 0x40;
0x00004f86 movs r0, r0 |
0x00004f88 lsls r0, r1, 0xa | r0 = r1 << 0xa;
0x00004f8a movs r0, r0 |
0x00004f8c lsls r0, r7, 8 | r0 = r7 << 8;
0x00004f8e movs r0, r0 |
0x00004f90 str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x00004f92 movs r0, r0 |
0x00004f94 lsls r0, r3, 9 | r0 = r3 << 9;
0x00004f96 movs r0, r0 |
0x00004f98 str r4, [r7, 0xc] | *((r7 + 0xc)) = r4;
0x00004f9a movs r0, r0 |
0x00004f9c strh r6, [r0, 0xc] | *((r0 + 0xc)) = r6;
0x00004f9e movs r0, r0 |
0x00004fa0 ldrh r2, [r6, r7] | r2 = *((r6 + r7));
0x00004fa2 movs r0, r0 |
0x00004fa4 ldrh r0, [r4, r7] | r0 = *((r4 + r7));
0x00004fa6 movs r0, r0 |
0x00004fa8 ldrh r6, [r7, r3] | r6 = *((r7 + r3));
0x00004faa movs r0, r0 |
0x00004fac ldrh r6, [r1, r3] | r6 = *((r1 + r3));
0x00004fae movs r0, r0 |
0x00004fb0 push.w {r4, r5, r6, r7, r8, lr} |
0x00004fb2 rors r0, r6 | __asm ("rors r0, r6");
0x00004fb4 sub sp, 0x18 |
0x00004fb6 ldr r6, [pc, 0xd0] |
0x00004fb8 movs r7, 0 | r7 = 0;
0x00004fba mov r8, r1 | r8 = r1;
0x00004fbc movs r1, 0xa | r1 = 0xa;
0x00004fbe ldr r5, [pc, 0xcc] | r5 = *(0x508e);
0x00004fc0 add r6, pc | r6 = 0xa04e;
0x00004fc2 ldr r4, [pc, 0xcc] |
0x00004fc4 ldr r2, [pc, 0xcc] |
0x00004fc6 ldr r5, [r6, r5] |
0x00004fc8 mov r6, r0 | r6 = r0;
0x00004fca ldr r3, [pc, 0xcc] | r3 = *(0x509a);
0x00004fcc add r4, pc | r4 = 0xa062;
0x00004fce add r2, pc | r2 = 0xa066;
0x00004fd0 ldr r5, [r5] | r5 = *(0xa04e);
0x00004fd2 str r5, [sp, 0x14] | var_14h_2 = r5;
0x00004fd4 lsls r1, r6, 1 | r1 = r6 << 1;
0x00004fd6 movs r0, r0 |
0x00004fd8 strd r2, r7, [sp, 0xc] | __asm ("strd r2, r7, [var_10h_2]");
0x00004fdc ldr r5, [r4, r3] | r5 = *(0xa062);
0x00004fde ldr r3, [pc, 0xbc] |
0x00004fe0 mov r0, r5 | r0 = r5;
0x00004fe2 add r3, pc | r3 = 0xa084;
0x00004fe4 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00004fe6 blx 0x28a8 | r0 = fcn_000028a8 ();
0x00004fea cmp r0, r7 |
| if (r0 < r7) {
0x00004fec blt 0x5050 | goto label_75;
| }
0x00004fee add r3, sp, 0x10 | r3 += var_10h_2;
0x00004ff0 mov r1, r8 | r1 = r8;
0x00004ff2 mov r0, r6 | r0 = r6;
0x00004ff4 add r2, sp, 0xc | r2 += var_ch_2;
0x00004ff6 str r7, [sp] | *(sp) = r7;
0x00004ff8 bl 0x571c | r0 = fcn_0000571c (r0, r1, r2, r3, r4);
| if (r0 != 0) {
0x00004ffc cbnz r0, 0x5038 | goto label_76;
| }
0x00004ffe blx 0x2590 | xtables_merge_options ();
| label_34:
0x00005002 blx 0x25b4 | ip6tc_free ();
0x00005006 ldr r3, [pc, 0x98] | r3 = *(0x50a2);
0x00005008 mov r5, r0 | r5 = r0;
0x0000500a ldr r0, [r0] | r0 = *(r0);
0x0000500c ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x0000500e cmp r0, 0x16 |
0x00005010 ldr r4, [r3] | r4 = *(0x50a2);
| if (r0 == 0x16) {
0x00005012 beq 0x506c | goto label_77;
| }
0x00005014 blx 0x2764 | iptc_set_policy ();
0x00005018 ldr r2, [pc, 0x88] |
0x0000501a mov r3, r0 | r3 = r0;
0x0000501c movs r1, 1 | r1 = 1;
0x0000501e mov r0, r4 | r0 = r4;
0x00005020 add r2, pc | r2 = 0xa0c8;
0x00005022 blx 0x26b8 | fcn_000026b8 ();
| label_35:
0x00005026 ldr r3, [r5] | r3 = *(r5);
0x00005028 cmp r3, 0xb |
| if (r3 == 0xb) {
0x0000502a beq 0x5080 | goto label_78;
| }
0x0000502c movs r5, 0 | r5 = 0;
| do {
0x0000502e clz r0, r5 | r0 &= r5;
0x00005032 lsrs r0, r0, 5 | r0 >>= 5;
0x00005034 blx 0x2518 | xtables_ipaddr_to_anyname ();
| label_76:
0x00005038 ldr r0, [sp, 0x10] | r0 = var_10h_2;
0x0000503a blx 0x2728 | r0 = iptc_append_entry ();
0x0000503e mov r5, r0 | r5 = r0;
0x00005040 ldr r0, [sp, 0x10] | r0 = var_10h_2;
0x00005042 blx 0x25c0 | xtables_ipparse_multiple ();
0x00005046 blx 0x2590 | xtables_merge_options ();
0x0000504a cmp r5, 0 |
0x0000504c bne 0x502e |
| } while (r5 != 0);
0x0000504e b 0x5002 | goto label_34;
| label_75:
0x00005050 ldr r1, [pc, 0x4c] | r1 = *(0x50a0);
0x00005052 ldrd r3, r6, [r5, 4] | __asm ("ldrd r3, r6, [r5, 4]");
0x00005056 ldr r2, [pc, 0x50] |
0x00005058 ldr r0, [r4, r1] | r0 = *((r4 + r1));
0x0000505a movs r1, 1 | r1 = 1;
0x0000505c str r6, [sp] | *(sp) = r6;
0x0000505e add r2, pc | r2 = 0xa10c;
0x00005060 ldr r0, [r0] | r0 = *(r0);
0x00005062 blx 0x26b8 | fcn_000026b8 ();
0x00005066 movs r0, 1 | r0 = 1;
0x00005068 blx 0x2518 | xtables_ipaddr_to_anyname ();
| label_77:
0x0000506c blx 0x2764 | iptc_set_policy ();
0x00005070 ldr r2, [pc, 0x38] |
0x00005072 mov r3, r0 | r3 = r0;
0x00005074 movs r1, 1 | r1 = 1;
0x00005076 mov r0, r4 | r0 = r4;
0x00005078 add r2, pc | r2 = 0xa128;
0x0000507a blx 0x26b8 | fcn_000026b8 ();
0x0000507e b 0x5026 | goto label_35;
| label_78:
0x00005080 movs r0, 4 | r0 = 4;
0x00005082 blx 0x2518 | xtables_ipaddr_to_anyname ();
0x00005086 nop |
0x00005088 ldr r5, [sp, 0x2c0] | r5 = *(arg_2c0h_2);
0x0000508a movs r0, r0 |
0x0000508c lsls r0, r1, 9 | r0 = r1 << 9;
0x0000508e movs r0, r0 |
0x00005090 ldr r5, [sp, 0x290] | r5 = *(arg_260h);
0x00005092 movs r0, r0 |
0x00005094 ldr r6, [r0, r2] | r6 = *((r0 + r2));
0x00005096 movs r0, r0 |
0x00005098 lsls r4, r7, 8 | r4 = r7 << 8;
0x0000509a movs r0, r0 |
0x0000509c strb r6, [r6, r0] | *((r6 + r0)) = r6;
0x0000509e movs r0, r0 |
0x000050a0 lsls r0, r3, 9 | r0 = r3 << 9;
0x000050a2 movs r0, r0 |
0x000050a4 ldrh r0, [r5, r7] | r0 = *((r5 + r7));
0x000050a6 movs r0, r0 |
0x000050a8 ldrsb r6, [r7, r7] | r6 = *((r7 + r7));
0x000050aa movs r0, r0 |
0x000050ac ldrh r4, [r3, r5] | r4 = *((r3 + r5));
0x000050ae movs r0, r0 |
| }
[*] Function sprintf used 3 times xtables-legacy-multi