[*] Binary protection state of xtables-legacy-multi
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of xtables-legacy-multi
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/xtables-legacy-multi @ 0x15d40 */
| #include <stdint.h>
|
; (fcn) fcn.00015d40 () | void fcn_00015d40 (int32_t arg_4h, int32_t arg_1b8h, int32_t arg1, int32_t arg2) {
| int32_t var_1h;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_54h;
| void * ptr;
| void * var_5ch;
| void * var_60h;
| void * var_64h;
| int32_t var_68h;
| int32_t var_6ch;
| char * format;
| int32_t var_70h_2;
| int32_t var_78h;
| int32_t var_7ch;
| int32_t var_80h;
| int32_t var_80h_2;
| int32_t var_88h;
| int32_t var_88h_2;
| void * s2;
| int32_t var_a0h;
| int32_t var_b0h;
| int32_t var_c0h;
| int32_t var_d0h;
| int32_t var_e0h;
| int32_t var_e2h;
| int32_t var_e3h;
| int32_t var_f0h;
| int32_t var_f0h_2;
| char * var_f8h;
| int32_t var_f8h_2;
| int32_t var_150h;
| int32_t var_154h;
| int32_t var_158h;
| int32_t var_15ch;
| int32_t var_164h;
| int32_t var_178h;
| char * src;
| int32_t var_184h;
| int32_t var_194h;
| r0 = arg1;
| r1 = arg2;
0x00015d40 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00015d44 sub sp, sp, 0x194 |
0x00015d48 str r3, [sp, 0x2c] | var_2ch = r3;
0x00015d4c ldrb r3, [sp, 0x1b8] | r3 = *(arg_1b8h);
0x00015d50 mov r4, r1 | r4 = r1;
0x00015d54 mov r5, r0 | r5 = r0;
0x00015d58 mov r6, r2 | r6 = r2;
0x00015d5c mov r1, 0 | r1 = 0;
0x00015d60 mov r2, 0x100 | r2 = 0x100;
0x00015d64 add r0, sp, 0x90 | r0 += s2;
0x00015d68 str r3, [sp, 0x3c] | var_3ch = r3;
0x00015d6c bl 0x125ec | memset (r0, r1, r2);
0x00015d70 ldr r3, [pc, 0xf30] | r3 = *(0x16ca4);
0x00015d74 mov r2, 1 | r2 = 1;
0x00015d78 str r2, [sp, 0x78] | var_78h = r2;
0x00015d7c ldr r2, [pc, 0xf28] | r2 = *(0x16ca8);
0x00015d80 str r3, [sp, 0x180] | src = r3;
0x00015d84 mov r3, 0 | r3 = 0;
0x00015d88 str r3, [r2] | *(r2) = r3;
0x00015d8c ldr r2, [pc, 0xf1c] |
0x00015d90 str r4, [sp, 0x184] | var_184h = r4;
0x00015d94 ldr r2, [r2] | r2 = optind;
0x00015d98 str r3, [sp, 0x50] | var_50h = r3;
0x00015d9c str r3, [sp, 0x54] | var_54h = r3;
0x00015da0 str r3, [sp, 0x58] | ptr = r3;
0x00015da4 str r3, [sp, 0x5c] | var_5ch = r3;
0x00015da8 str r3, [sp, 0x60] | var_60h = r3;
0x00015dac str r3, [sp, 0x64] | var_64h = r3;
0x00015db0 str r3, [sp, 0x7c] | var_7ch = r3;
0x00015db4 str r3, [sp, 0x68] | var_68h = r3;
| do {
0x00015db8 cmp r2, 0 |
| if (r2 == 0) {
0x00015dbc bne 0x15e6c |
0x00015dc0 ldr r3, [pc, 0xeec] | r3 = xtables_matches;
0x00015dc4 ldr r8, [r3] | r8 = xtables_matches;
| label_0:
0x00015dc8 cmp r8, 0 |
| if (r8 != 0) {
0x00015dcc bne 0x15e78 | goto label_44;
| }
0x00015dd0 ldr r2, [pc, 0xfc0] |
0x00015dd4 ldr r3, [pc, 0xedc] | r3 = xtables_targets;
0x00015dd8 ldr r2, [r2] |
0x00015ddc str r8, [r3] | *(r3) = r8;
0x00015de0 ldr r2, [r2, 0xc] | r2 = stdout;
0x00015de4 ldr r3, [pc, 0xed0] | r3 = opterr;
0x00015de8 mov fp, r8 |
0x00015dec mov r7, r8 | r7 = r8;
0x00015df0 mov sb, r8 | sb = r8;
0x00015df4 mov sl, r8 | sl = r8;
0x00015df8 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x00015dfc str r8, [sp, 0x44] | var_44h = r8;
0x00015e00 str r8, [sp, 0x34] | var_34h = r8;
0x00015e04 str r8, [sp, 0x38] | var_38h = r8;
0x00015e08 str r8, [sp, 0x30] | var_30h = r8;
0x00015e0c str r8, [sp, 0x40] | var_40h = r8;
0x00015e10 str r3, [sp, 0x48] | var_48h = r3;
| label_1:
0x00015e14 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015e18 mov r8, 0 | r8 = 0;
0x00015e1c str r8, [sp] | *(sp) = r8;
0x00015e20 ldr r2, [pc, 0xe98] | r2 = *(0x16cbc);
0x00015e24 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00015e28 mov r1, r4 | r1 = r4;
0x00015e2c mov r0, r5 | r0 = r5;
0x00015e30 bl 0x12310 | r0 = getopt_long ();
0x00015e34 cmn r0, 1 |
0x00015e38 str r0, [sp, 0x154] | var_154h = r0;
| if (r0 != 1) {
0x00015e3c bne 0x15e88 | goto label_45;
| }
0x00015e40 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00015e44 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00015e48 cmp r2, r8 |
| if (r2 == r8) {
0x00015e4c movne r3, r8 | r3 = r8;
| }
0x00015e50 cmp r3, r8 |
| if (r3 == r8) {
0x00015e54 beq 0x16984 | goto label_46;
| }
0x00015e58 ldr r3, [pc, 0xf38] |
0x00015e5c ldr r1, [pc, 0xe60] | r1 = "_:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:fbvw::W::nt:m:xc:g:46";
0x00015e60 ldr r3, [r3] |
0x00015e64 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00015e68 b 0x16518 | goto label_12;
| }
0x00015e6c str r3, [r2, 0x5c] | *((r2 + 0x5c)) = r3;
0x00015e70 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00015e74 b 0x15db8 |
| } while (1);
| label_44:
0x00015e78 str r2, [r8, 0x5c] | *((r8 + 0x5c)) = r2;
0x00015e7c str r2, [r8, 0x60] | *((r8 + 0x60)) = r2;
0x00015e80 ldr r8, [r8, 4] | r8 = *((r8 + 4));
0x00015e84 b 0x15dc8 | goto label_0;
| label_45:
0x00015e88 cmp r0, 0x57 |
| if (r0 == 0x57) {
0x00015e8c beq 0x16798 | goto label_47;
| }
| if (r0 > 0x57) {
0x00015e90 bgt 0x16084 | goto label_48;
| }
0x00015e94 cmp r0, 0x46 |
| if (r0 == 0x46) {
0x00015e98 beq 0x163a4 | goto label_49;
| }
| if (r0 > 0x46) {
0x00015e9c bgt 0x15f98 | goto label_50;
| }
0x00015ea0 cmp r0, 0x36 |
| if (r0 == 0x36) {
0x00015ea4 beq 0x16938 | goto label_51;
| }
| if (r0 <= 0x36) {
0x00015ea8 bgt 0x15f04 |
0x00015eac cmp r0, 0x30 |
| if (r0 == 0x30) {
0x00015eb0 beq 0x16800 | goto label_52;
| }
0x00015eb4 cmp r0, 0x34 |
| if (r0 == 0x34) {
0x00015eb8 beq 0x16258 | goto label_3;
| }
0x00015ebc cmp r0, 1 |
| if (r0 != 1) {
0x00015ec0 bne 0x15f24 | goto label_2;
| }
0x00015ec4 ldr r3, [pc, 0xdfc] | r3 = "--wait-interval only makes sense with --wait\n";
0x00015ec8 ldr r2, [r3] | r2 = "--wait-interval only makes sense with --wait\n";
0x00015ecc ldrb r3, [r2] | r3 = *(r2);
0x00015ed0 cmp r3, 0x21 |
| if (r3 != 0x21) {
0x00015ed4 bne 0x16970 | goto label_53;
| }
0x00015ed8 ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x00015edc cmp r3, 0 |
| if (r3 != 0) {
0x00015ee0 bne 0x16970 | goto label_53;
| }
0x00015ee4 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00015ee8 cmp r3, 0 |
| if (r3 == 0) {
0x00015eec beq 0x16960 | goto label_54;
| }
0x00015ef0 ldr r3, [pc, 0xea0] |
0x00015ef4 ldr r1, [pc, 0xdd0] | r1 = optarg;
0x00015ef8 ldr r3, [r3] |
0x00015efc ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00015f00 b 0x16518 | goto label_12;
| }
0x00015f04 cmp r0, 0x43 |
| if (r0 == 0x43) {
0x00015f08 beq 0x1623c | goto label_55;
| }
| if (r0 > 0x43) {
0x00015f0c bgt 0x15f3c | goto label_56;
| }
0x00015f10 cmp r0, 0x41 |
| if (r0 != 0x41) {
0x00015f14 ldreq r3, [sp, 0x150] | r3 = var_150h;
| }
| if (r0 != 0x41) {
0x00015f18 moveq r2, 0 | r2 = 0;
| }
| if (r0 != 0x41) {
0x00015f1c moveq r1, 0x10 | r1 = 0x10;
| }
| if (r0 == 0x41) {
0x00015f20 beq 0x16248 | goto label_8;
| }
| do {
| label_2:
0x00015f24 ldr r1, [sp, 0x48] | r1 = var_48h;
0x00015f28 add r0, sp, 0x90 | r0 += s2;
0x00015f2c bl 0x1bc7c | r0 = fcn_0001bc7c (r0, r1);
0x00015f30 cmp r0, 1 |
| if (r0 != 1) {
0x00015f34 bne 0x16258 | goto label_3;
| }
0x00015f38 b 0x15e14 | goto label_1;
| label_56:
0x00015f3c cmp r0, 0x44 |
| if (r0 == 0x44) {
0x00015f40 beq 0x16264 | goto label_57;
| }
0x00015f44 cmp r0, 0x45 |
0x00015f48 bne 0x15f24 |
| } while (r0 != 0x45);
0x00015f4c ldr r3, [sp, 0x150] | r3 = var_150h;
0x00015f50 mov r2, 0 | r2 = 0;
0x00015f54 mov r1, 0x800 | r1 = 0x800;
0x00015f58 add r0, sp, 0x68 | r0 += var_68h;
0x00015f5c bl 0x15498 | fcn_00015498 (r0, r1);
0x00015f60 ldr r3, [pc, 0xd60] | r3 = "--wait-interval only makes sense with --wait\n";
0x00015f64 mov r1, r4 | r1 = r4;
0x00015f68 mov r0, r5 | r0 = r5;
0x00015f6c ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00015f70 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00015f74 cmp r0, 0 |
| if (r0 == 0) {
0x00015f78 beq 0x16548 | goto label_58;
| }
0x00015f7c ldr r2, [pc, 0xd28] | r2 = *(0x16ca8);
0x00015f80 ldr r3, [r2] | r3 = *(0x16ca8);
0x00015f84 add r1, r3, 1 | r1 = r3 + 1;
0x00015f88 ldr r3, [r4, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r4 + offset_0));
0x00015f8c str r1, [r2] | *(r2) = r1;
0x00015f90 str r3, [sp, 0x44] | var_44h = r3;
0x00015f94 b 0x16258 | goto label_3;
| label_50:
0x00015f98 cmp r0, 0x4e |
| if (r0 == 0x4e) {
0x00015f9c beq 0x16478 | goto label_59;
| }
| if (r0 > 0x4e) {
0x00015fa0 bgt 0x15ff0 | goto label_60;
| }
0x00015fa4 cmp r0, 0x4c |
| if (r0 == 0x4c) {
0x00015fa8 beq 0x16330 | goto label_61;
| }
| if (r0 > 0x4c) {
0x00015fac bgt 0x16810 | goto label_62;
| }
0x00015fb0 cmp r0, 0x49 |
| if (r0 != 0x49) {
0x00015fb4 bne 0x15f24 | goto label_2;
| }
0x00015fb8 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00015fbc mov r2, 0 | r2 = 0;
0x00015fc0 mov r1, 1 | r1 = 1;
0x00015fc4 add r0, sp, 0x68 | r0 += var_68h;
0x00015fc8 bl 0x15498 | fcn_00015498 (r0, r1);
0x00015fcc ldr r3, [pc, 0xcf4] | r3 = "--wait-interval only makes sense with --wait\n";
0x00015fd0 mov r1, r4 | r1 = r4;
0x00015fd4 mov r0, r5 | r0 = r5;
0x00015fd8 ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00015fdc bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00015fe0 cmp r0, 0 |
| if (r0 != 0) {
0x00015fe4 moveq fp, 1 |
| }
| if (r0 == 0) {
0x00015fe8 beq 0x16258 | goto label_3;
| }
0x00015fec b 0x162ec | goto label_4;
| label_60:
0x00015ff0 cmp r0, 0x52 |
| if (r0 == 0x52) {
0x00015ff4 beq 0x162bc | goto label_63;
| }
| if (r0 > 0x52) {
0x00015ff8 bgt 0x16050 | goto label_64;
| }
0x00015ffc cmp r0, 0x50 |
| if (r0 != 0x50) {
0x00016000 bne 0x15f24 | goto label_2;
| }
0x00016004 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016008 mov r2, 0 | r2 = 0;
0x0001600c mov r1, 0x400 | r1 = 0x400;
0x00016010 add r0, sp, 0x68 | r0 += var_68h;
0x00016014 bl 0x15498 | fcn_00015498 (r0, r1);
0x00016018 ldr r3, [pc, 0xca8] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001601c mov r1, r4 | r1 = r4;
0x00016020 mov r0, r5 | r0 = r5;
0x00016024 ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00016028 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x0001602c cmp r0, 0 |
| if (r0 == 0) {
0x00016030 beq 0x16568 | goto label_65;
| }
0x00016034 ldr r2, [pc, 0xc70] | r2 = *(0x16ca8);
0x00016038 ldr r3, [r2] | r3 = *(0x16ca8);
0x0001603c add r1, r3, 1 | r1 = r3 + 1;
0x00016040 ldr r3, [r4, r3, lsl 2] | offset_1 = r3 << 2;
| r3 = *((r4 + offset_1));
0x00016044 str r1, [r2] | *(r2) = r1;
0x00016048 str r3, [sp, 0x34] | var_34h = r3;
0x0001604c b 0x16258 | goto label_3;
| label_64:
0x00016050 cmp r0, 0x53 |
| if (r0 == 0x53) {
0x00016054 beq 0x16394 | goto label_66;
| }
0x00016058 cmp r0, 0x56 |
| if (r0 != 0x56) {
0x0001605c bne 0x15f24 | goto label_2;
| }
0x00016060 ldr r1, [sp, 0x150] | r1 = var_150h;
0x00016064 ldr r3, [pc, 0xc50] | r3 = opterr;
0x00016068 cmp r1, 0 |
0x0001606c ldr r2, [r3, 8] | r2 = "_:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:fbvw::W::nt:m:xc:g:46";
| if (r1 == 0) {
0x00016070 beq 0x167f0 | goto label_67;
| }
0x00016074 mov r1, r2 | r1 = r2;
0x00016078 ldr r0, [pc, 0xc50] | r0 = "multiple_consecutive___not_allowed";
0x0001607c bl 0x122b0 | printf ("multiple_consecutive___not_allowed", r1);
0x00016080 b 0x16620 | goto label_14;
| label_48:
0x00016084 cmp r0, 0x6a |
| if (r0 == 0x6a) {
0x00016088 beq 0x166bc | goto label_68;
| }
| if (r0 > 0x6a) {
0x0001608c bgt 0x16134 | goto label_69;
| }
0x00016090 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x00016094 beq 0x16668 | goto label_70;
| }
| if (r0 > 0x64) {
0x00016098 bgt 0x160c4 | goto label_71;
| }
0x0001609c cmp r0, 0x5a |
| if (r0 == 0x5a) {
0x000160a0 beq 0x163f4 | goto label_72;
| }
0x000160a4 cmp r0, 0x63 |
| if (r0 == 0x63) {
0x000160a8 beq 0x16824 | goto label_73;
| }
0x000160ac cmp r0, 0x58 |
| if (r0 != 0x58) {
0x000160b0 bne 0x15f24 | goto label_2;
| }
0x000160b4 ldr r3, [sp, 0x150] | r3 = var_150h;
0x000160b8 mov r2, 0 | r2 = 0;
0x000160bc mov r1, 0x200 | r1 = 0x200;
0x000160c0 b 0x163b0 | goto label_74;
| label_71:
0x000160c4 cmp r0, 0x67 |
| if (r0 == 0x67) {
0x000160c8 beq 0x16688 | goto label_75;
| }
| if (r0 > 0x67) {
0x000160cc bgt 0x160fc | goto label_76;
| }
0x000160d0 cmp r0, 0x66 |
| if (r0 != 0x66) {
0x000160d4 bne 0x15f24 | goto label_2;
| }
0x000160d8 ldr r3, [sp, 0x150] | r3 = var_150h;
0x000160dc add r2, sp, 0xe3 | r2 += var_e3h;
0x000160e0 mov r1, 0x800 | r1 = 0x800;
0x000160e4 add r0, sp, 0x158 | r0 += var_158h;
0x000160e8 bl 0x15510 | fcn_00015510 (r0, r1);
0x000160ec ldrb r3, [sp, 0xe2] | r3 = var_e2h;
0x000160f0 orr r3, r3, 1 | r3 |= 1;
0x000160f4 strb r3, [sp, 0xe2] | var_e2h = r3;
0x000160f8 b 0x16258 | goto label_3;
| label_76:
0x000160fc cmp r0, 0x68 |
| if (r0 == 0x68) {
0x00016100 beq 0x16588 | goto label_77;
| }
0x00016104 cmp r0, 0x69 |
| if (r0 != 0x69) {
0x00016108 bne 0x15f24 | goto label_2;
| }
0x0001610c ldr r8, [pc, 0xbb4] | r8 = "--wait-interval only makes sense with --wait\n";
0x00016110 ldr r3, [r8] | r3 = "--wait-interval only makes sense with --wait\n";
0x00016114 ldrb r3, [r3] | r3 = *(r3);
0x00016118 cmp r3, 0 |
| if (r3 != 0) {
0x0001611c bne 0x166dc | goto label_78;
| }
| label_10:
0x00016120 ldr r3, [pc, 0xc70] |
0x00016124 ldr r1, [pc, 0xba8] | r1 = "Not__s____";
0x00016128 ldr r3, [r3] |
0x0001612c ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016130 b 0x16518 | goto label_12;
| label_69:
0x00016134 cmp r0, 0x73 |
| if (r0 == 0x73) {
0x00016138 beq 0x16648 | goto label_79;
| }
| if (r0 > 0x73) {
0x0001613c bgt 0x161e0 | goto label_80;
| }
0x00016140 cmp r0, 0x6e |
| if (r0 == 0x6e) {
0x00016144 beq 0x167d0 | goto label_81;
| }
| if (r0 > 0x6e) {
0x00016148 bgt 0x16160 | goto label_82;
| }
0x0001614c cmp r0, 0x6d |
| if (r0 != 0x6d) {
0x00016150 bne 0x15f24 | goto label_2;
| }
0x00016154 add r0, sp, 0x90 | r0 += s2;
0x00016158 bl 0x1c8e0 | fcn_0001c8e0 (r0);
0x0001615c b 0x16258 | goto label_3;
| label_82:
0x00016160 cmp r0, 0x6f |
| if (r0 == 0x6f) {
0x00016164 beq 0x16704 | goto label_83;
| }
0x00016168 cmp r0, 0x70 |
| if (r0 != 0x70) {
0x0001616c bne 0x15f24 | goto label_2;
| }
0x00016170 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016174 mov r1, 8 | r1 = 8;
0x00016178 add r2, sp, 0xe3 | r2 += var_e3h;
0x0001617c add r0, sp, 0x158 | r0 += var_158h;
0x00016180 bl 0x15510 | fcn_00015510 (r0, r1);
0x00016184 ldr r3, [pc, 0xb3c] |
0x00016188 ldr r1, [pc, 0xb48] | r1 = "Empty interface is likely to be undesired";
0x0001618c ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x00016190 str r3, [sp, 0x178] | var_178h = r3;
| label_9:
0x00016194 ldr r2, [sp, 0x178] | r2 = var_178h;
0x00016198 ldrb r3, [r2] | r3 = *(r2);
0x0001619c cmp r3, 0 |
| if (r3 != 0) {
0x000161a0 bne 0x16628 | goto label_84;
| }
0x000161a4 ldr r3, [pc, 0xb1c] | r3 = "--wait-interval only makes sense with --wait\n";
0x000161a8 ldr r0, [r3] | r0 = "--wait-interval only makes sense with --wait\n";
0x000161ac str r0, [sp, 0x178] | var_178h = r0;
0x000161b0 bl 0x12838 | r0 = xtables_parse_protocol ();
0x000161b4 cmp r0, 0 |
0x000161b8 strh r0, [sp, 0xe0] | var_e0h = r0;
| if (r0 != 0) {
0x000161bc bne 0x16258 | goto label_3;
| }
0x000161c0 ldrb r3, [sp, 0xe3] | r3 = var_e3h;
0x000161c4 tst r3, 0x40 |
| if ((r3 & 0x40) == 0) {
0x000161c8 beq 0x16258 | goto label_3;
| }
0x000161cc ldr r3, [pc, 0xbc4] |
0x000161d0 ldr r1, [pc, 0xb04] | r1 = __ctype_tolower;
0x000161d4 ldr r3, [r3] |
0x000161d8 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x000161dc b 0x16518 | goto label_12;
| label_80:
0x000161e0 cmp r0, 0x76 |
| if (r0 == 0x76) {
0x000161e4 beq 0x16738 | goto label_85;
| }
| if (r0 > 0x76) {
0x000161e8 bgt 0x16214 | goto label_86;
| }
0x000161ec cmp r0, 0x74 |
| if (r0 != 0x74) {
0x000161f0 bne 0x15f24 | goto label_2;
| }
0x000161f4 ldr r3, [sp, 0x150] | r3 = var_150h;
0x000161f8 cmp r3, 0 |
| if (r3 == 0) {
0x000161fc beq 0x167e0 | goto label_87;
| }
0x00016200 ldr r3, [pc, 0xb90] |
0x00016204 ldr r1, [pc, 0xad4] | r1 = "rule would never match protocol";
0x00016208 ldr r3, [r3] |
0x0001620c ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016210 b 0x16518 | goto label_12;
| label_86:
0x00016214 cmp r0, 0x77 |
| if (r0 == 0x77) {
0x00016218 beq 0x16768 | goto label_88;
| }
0x0001621c cmp r0, 0x78 |
| if (r0 != 0x78) {
0x00016220 ldreq r3, [sp, 0x150] | r3 = var_150h;
| }
| if (r0 != 0x78) {
0x00016224 addeq r2, sp, 0xe3 | r2 += var_e3h;
| }
| if (r0 == 0x78) {
0x00016228 moveq r1, 0x40 | r1 = 0x40;
| goto label_89;
| }
| if (r0 != 0x78) {
| label_89:
0x0001622c bne 0x15f24 | goto label_2;
| }
| label_13:
0x00016230 add r0, sp, 0x158 | r0 += var_158h;
0x00016234 bl 0x15510 | fcn_00015510 (r0, r1);
0x00016238 b 0x16258 | goto label_3;
| label_55:
0x0001623c ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016240 mov r2, r8 | r2 = r8;
0x00016244 mov r1, 0x4000 | r1 = 0x4000;
| label_8:
0x00016248 add r0, sp, 0x68 | r0 += var_68h;
0x0001624c bl 0x15498 | fcn_00015498 (r0, r1);
0x00016250 ldr r3, [pc, 0xa70] | r3 = "--wait-interval only makes sense with --wait\n";
0x00016254 ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
| do {
| label_3:
0x00016258 mov r3, 0 | r3 = 0;
0x0001625c str r3, [sp, 0x150] | var_150h = r3;
0x00016260 b 0x15e14 | goto label_1;
| label_57:
0x00016264 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016268 mov r2, 0 | r2 = 0;
0x0001626c mov r1, 2 | r1 = 2;
0x00016270 add r0, sp, 0x68 | r0 += var_68h;
0x00016274 bl 0x15498 | fcn_00015498 (r0, r1);
0x00016278 ldr r3, [pc, 0xa48] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001627c mov r1, r4 | r1 = r4;
0x00016280 mov r0, r5 | r0 = r5;
0x00016284 ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00016288 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x0001628c cmp r0, 0 |
0x00016290 beq 0x16258 |
| } while (r0 == 0);
0x00016294 ldr r2, [pc, 0xa10] | r2 = *(0x16ca8);
0x00016298 ldr r3, [r2] | r3 = *(0x16ca8);
0x0001629c add r1, r3, 1 | r1 = r3 + 1;
0x000162a0 ldr r0, [r4, r3, lsl 2] | offset_2 = r3 << 2;
| r0 = *((r4 + offset_2));
0x000162a4 str r1, [r2] | *(r2) = r1;
0x000162a8 bl 0x1563c | fcn_0001563c (r0);
0x000162ac mov r3, 4 | r3 = 4;
0x000162b0 mov fp, r0 |
| label_6:
0x000162b4 str r3, [sp, 0x68] | var_68h = r3;
0x000162b8 b 0x16258 | goto label_3;
| label_63:
0x000162bc ldr r3, [sp, 0x150] | r3 = var_150h;
0x000162c0 mov r2, r8 | r2 = r8;
0x000162c4 mov r1, 8 | r1 = 8;
0x000162c8 add r0, sp, 0x68 | r0 += var_68h;
0x000162cc bl 0x15498 | fcn_00015498 (r0, r1);
0x000162d0 ldr r3, [pc, 0x9f0] | r3 = "--wait-interval only makes sense with --wait\n";
0x000162d4 mov r1, r4 | r1 = r4;
0x000162d8 mov r0, r5 | r0 = r5;
0x000162dc ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x000162e0 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x000162e4 cmp r0, 0 |
| if (r0 != 0) {
0x000162e8 beq 0x1630c |
| label_4:
0x000162ec ldr r2, [pc, 0x9b8] | r2 = *(0x16ca8);
0x000162f0 ldr r3, [r2] | r3 = *(0x16ca8);
0x000162f4 add r1, r3, 1 | r1 = r3 + 1;
0x000162f8 ldr r0, [r4, r3, lsl 2] | offset_3 = r3 << 2;
| r0 = *((r4 + offset_3));
0x000162fc str r1, [r2] | *(r2) = r1;
0x00016300 bl 0x1563c | r0 = fcn_0001563c (r0);
0x00016304 mov fp, r0 |
0x00016308 b 0x16258 | goto label_3;
| }
0x0001630c mov r0, 8 | r0 = 8;
0x00016310 bl 0x128a4 | fcn_000128a4 (r0);
0x00016314 ldr r3, [pc, 0xa7c] |
0x00016318 ldr r1, [pc, 0x9c4] | r1 = "unexpected ! flag before --table";
0x0001631c ldr r3, [r3] |
0x00016320 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016324 mov r2, r0 | r2 = r0;
| label_7:
0x00016328 mov r0, 2 | r0 = 2;
0x0001632c blx r3 | uint32_t (*r3)(uint32_t, char*, uint32_t, char*) (r0, "unexpected ! flag before --table", r2, "Chain %s");
| label_61:
0x00016330 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016334 mov r2, 0x2080 | r2 = 0x2080;
0x00016338 mov r1, 0x20 | r1 = 0x20;
| label_5:
0x0001633c add r0, sp, 0x68 | r0 += var_68h;
0x00016340 bl 0x15498 | fcn_00015498 (r0, r1);
0x00016344 ldr r3, [pc, 0x97c] |
0x00016348 ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001634c cmp r3, 0 |
| if (r3 == 0) {
0x00016350 movne sl, r3 | sl = r3;
| }
| if (r3 == 0) {
0x00016354 bne 0x1637c |
0x00016358 mov r1, r4 | r1 = r4;
0x0001635c mov r0, r5 | r0 = r5;
0x00016360 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00016364 cmp r0, 0 |
| if (r0 == 0) {
0x00016368 ldrne r2, [pc, 0x93c] | r2 = obj.optind;
| }
| if (r0 == 0) {
0x0001636c ldrne r3, [r2] | r3 = *(r2);
| }
| if (r0 == 0) {
0x00016370 ldrne sl, [r4, r3, lsl 2] | offset_4 = r3 << 2;
| sl = *((r4 + offset_4));
| }
| if (r0 == 0) {
0x00016374 addne r1, r3, 1 | r1 = r3 + 1;
| }
| if (r0 != 0) {
0x00016378 strne r1, [r2] | *(r2) = r1;
| goto label_90;
| }
| }
| label_90:
0x0001637c mov r1, r4 | r1 = r4;
0x00016380 mov r0, r5 | r0 = r5;
0x00016384 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00016388 cmp r0, 0 |
| if (r0 == 0) {
0x0001638c beq 0x16258 | goto label_3;
| }
0x00016390 b 0x162ec | goto label_4;
| label_66:
0x00016394 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016398 mov r2, 0x2080 | r2 = 0x2080;
0x0001639c mov r1, 0x1000 | r1 = 0x1000;
0x000163a0 b 0x1633c | goto label_5;
| label_49:
0x000163a4 ldr r3, [sp, 0x150] | r3 = var_150h;
0x000163a8 mov r2, r8 | r2 = r8;
0x000163ac mov r1, 0x40 | r1 = 0x40;
| label_74:
0x000163b0 add r0, sp, 0x68 | r0 += var_68h;
0x000163b4 bl 0x15498 | fcn_00015498 (r0, r1);
0x000163b8 ldr r3, [pc, 0x908] |
0x000163bc ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x000163c0 cmp r3, 0 |
| if (r3 != 0) {
0x000163c4 movne sl, r3 | sl = r3;
| goto label_91;
| }
| if (r3 != 0) {
| label_91:
0x000163c8 bne 0x16258 | goto label_3;
| }
0x000163cc mov r1, r4 | r1 = r4;
0x000163d0 mov r0, r5 | r0 = r5;
0x000163d4 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x000163d8 cmp r0, 0 |
| if (r0 == 0) {
0x000163dc ldrne r2, [pc, 0x8c8] | r2 = obj.optind;
| }
| if (r0 == 0) {
0x000163e0 ldrne r3, [r2] | r3 = *(r2);
| }
| if (r0 == 0) {
0x000163e4 addne r1, r3, 1 | r1 = r3 + 1;
| }
| if (r0 == 0) {
0x000163e8 strne r1, [r2] | *(r2) = r1;
| }
| if (r0 == 0) {
0x000163ec ldrne sl, [r4, r3, lsl 2] | offset_5 = r3 << 2;
| sl = *((r4 + offset_5));
| }
0x000163f0 b 0x16258 | goto label_3;
| label_72:
0x000163f4 ldr r3, [sp, 0x150] | r3 = var_150h;
0x000163f8 ldr r2, [pc, 0x8e8] | r2 = "__c_requires_a_rule_number";
0x000163fc mov r1, 0x80 | r1 = 0x80;
0x00016400 add r0, sp, 0x68 | r0 += var_68h;
0x00016404 bl 0x15498 | fcn_00015498 (r0, r1);
0x00016408 ldr r3, [pc, 0x8b8] |
0x0001640c ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x00016410 cmp r3, 0 |
| if (r3 == 0) {
0x00016414 movne sl, r3 | sl = r3;
| }
| if (r3 == 0) {
0x00016418 bne 0x16440 |
0x0001641c mov r1, r4 | r1 = r4;
0x00016420 mov r0, r5 | r0 = r5;
0x00016424 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00016428 cmp r0, 0 |
| if (r0 == 0) {
0x0001642c ldrne r2, [pc, 0x878] | r2 = obj.optind;
| }
| if (r0 == 0) {
0x00016430 ldrne r3, [r2] | r3 = *(r2);
| }
| if (r0 == 0) {
0x00016434 ldrne sl, [r4, r3, lsl 2] | offset_6 = r3 << 2;
| sl = *((r4 + offset_6));
| }
| if (r0 == 0) {
0x00016438 addne r1, r3, 1 | r1 = r3 + 1;
| }
| if (r0 != 0) {
0x0001643c strne r1, [r2] | *(r2) = r1;
| goto label_92;
| }
| }
| label_92:
0x00016440 mov r1, r4 | r1 = r4;
0x00016444 mov r0, r5 | r0 = r5;
0x00016448 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x0001644c cmp r0, 0 |
| if (r0 == 0) {
0x00016450 beq 0x16258 | goto label_3;
| }
0x00016454 ldr r2, [pc, 0x850] | r2 = *(0x16ca8);
0x00016458 ldr r3, [r2] | r3 = *(0x16ca8);
0x0001645c add r1, r3, 1 | r1 = r3 + 1;
0x00016460 ldr r0, [r4, r3, lsl 2] | offset_7 = r3 << 2;
| r0 = *((r4 + offset_7));
0x00016464 str r1, [r2] | *(r2) = r1;
0x00016468 bl 0x1563c | fcn_0001563c (r0);
0x0001646c mov r3, 0x2000 | r3 = 0x2000;
0x00016470 mov fp, r0 |
0x00016474 b 0x162b4 | goto label_6;
| label_59:
0x00016478 ldr r3, [pc, 0x848] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001647c ldr r8, [r3] | r8 = "--wait-interval only makes sense with --wait\n";
0x00016480 mov r0, r8 | r0 = r8;
0x00016484 bl 0x127c0 | r0 = strlen (r0);
0x00016488 cmp r0, 0x1c |
| if (r0 >= 0x1c) {
0x0001648c bls 0x164b0 |
0x00016490 ldr r3, [pc, 0x900] |
0x00016494 ldr r1, [pc, 0x850] | r1 = *(0x16ce8);
0x00016498 ldr r3, [r3] | r3 = *(0x16d94);
0x0001649c mov r2, r8 | r2 = r8;
0x000164a0 ldr r4, [r3, 0x14] | r4 = "Chain %s";
0x000164a4 mov r3, 0x1d | r3 = 0x1d;
| label_17:
0x000164a8 mov r0, 2 | r0 = 2;
0x000164ac b 0x16ca4 | goto label_93;
| }
0x000164b0 ldrb r2, [r8] | r2 = *(r8);
0x000164b4 cmp r2, 0x21 |
0x000164b8 cmpne r2, 0x2d | __asm ("cmpne r2, 0x2d");
| if (r2 != 0x21) {
0x000164bc ldreq r3, [pc, 0x8d4] | r3 = obj.xt_params;
| }
| if (r2 != 0x21) {
0x000164c0 ldreq r1, [pc, 0x828] | r1 = "chain name not allowed to start with `%c'\n";
| }
| if (r2 != 0x21) {
0x000164c4 ldreq r3, [r3] | r3 = *(r3);
| }
| if (r2 == 0x21) {
0x000164c8 ldreq r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_94;
| }
| if (r2 == 0x21) {
| label_94:
0x000164cc beq 0x16328 | goto label_7;
| }
0x000164d0 mov r1, 2 | r1 = 2;
0x000164d4 mov r0, r8 | r0 = r8;
0x000164d8 bl 0x12280 | r0 = xtables_find_target ();
0x000164dc cmp r0, 0 |
| if (r0 != 0) {
0x000164e0 bne 0x16508 | goto label_95;
| }
0x000164e4 ldr r3, [pc, 0x808] | r3 = "chain name not allowed to start with `%c'\n";
0x000164e8 ldr r1, [r3] | r1 = "chain name not allowed to start with `%c'\n";
0x000164ec sub r3, r8, 1 | r3 = r8 - 1;
| do {
0x000164f0 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x000164f4 cmp r2, 0 |
| if (r2 == 0) {
0x000164f8 bne 0x16520 |
0x000164fc ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016500 mov r1, 0x100 | r1 = 0x100;
0x00016504 b 0x16248 | goto label_8;
| label_95:
0x00016508 ldr r3, [pc, 0x888] |
0x0001650c ldr r1, [pc, 0x7e4] | r1 = __ctype_b;
0x00016510 ldr r3, [r3] |
0x00016514 ldr r3, [r3, 0x14] | r3 = "Chain %s";
| label_12:
0x00016518 mov r0, 2 | r0 = 2;
0x0001651c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, char*) (r0, r1, "Chain %s");
| }
0x00016520 lsl r2, r2, 1 | r2 <<= 1;
0x00016524 ldrh r2, [r1, r2] | r2 = *((r1 + r2));
0x00016528 tst r2, 0x20 |
0x0001652c beq 0x164f0 |
| } while ((r2 & 0x20) == 0);
0x00016530 ldr r3, [pc, 0x860] |
0x00016534 mov r2, r8 | r2 = r8;
0x00016538 ldr r3, [r3] |
0x0001653c ldr r1, [pc, 0x7b8] | r1 = "chain_name_may_not_clash_with_target_name";
0x00016540 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016544 b 0x16328 | goto label_7;
| label_58:
0x00016548 mov r0, 0x800 | r0 = 0x800;
0x0001654c bl 0x128a4 | fcn_000128a4 (r0);
0x00016550 ldr r3, [pc, 0x840] |
0x00016554 ldr r1, [pc, 0x7a4] | r1 = "Invalid chain name `%s';
0x00016558 ldr r3, [r3] |
0x0001655c ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016560 mov r2, r0 | r2 = r0;
0x00016564 b 0x16328 | goto label_7;
| label_65:
0x00016568 mov r0, 0x400 | r0 = 0x400;
0x0001656c bl 0x128a4 | fcn_000128a4 (r0);
0x00016570 ldr r3, [pc, 0x820] |
0x00016574 ldr r1, [pc, 0x788] | r1 = "-%c requires old-chain-name and new-chain-name";
0x00016578 ldr r3, [r3] |
0x0001657c ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016580 mov r2, r0 | r2 = r0;
0x00016584 b 0x16328 | goto label_7;
| label_77:
0x00016588 ldr r3, [pc, 0x738] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001658c ldr r2, [r3] | r2 = "--wait-interval only makes sense with --wait\n";
0x00016590 cmp r2, 0 |
| if (r2 != 0) {
0x00016594 ldreq r2, [pc, 0x710] | r2 = obj.optind;
| }
| if (r2 != 0) {
0x00016598 ldreq r2, [r2] | r2 = *(r2);
| }
| if (r2 != 0) {
0x0001659c ldreq r2, [r4, r2, lsl 2] | offset_8 = r2 << 2;
| r2 = *((r4 + offset_8));
| }
| if (r2 != 0) {
0x000165a0 streq r2, [r3] | *(r3) = r2;
| }
0x000165a4 ldr r3, [sp, 0x15c] | r3 = var_15ch;
0x000165a8 cmp r3, 0 |
| if (r3 == 0) {
0x000165ac bne 0x165c8 |
0x000165b0 ldr r0, [sp, 0x178] | r0 = var_178h;
0x000165b4 cmp r0, 0 |
| if (r0 == 0) {
0x000165b8 beq 0x165c8 | goto label_96;
| }
0x000165bc add r2, sp, 0x15c | r2 += var_15ch;
0x000165c0 mov r1, 2 | r1 = 2;
0x000165c4 bl 0x12658 | xtables_find_match ();
| }
| label_96:
0x000165c8 ldr r2, [pc, 0x6ec] |
0x000165cc ldr r0, [pc, 0x734] | r0 = "__c_requires_a_chain_and_a_policy";
0x000165d0 ldr r3, [r2, 4] | r3 = *(0x16cbc);
0x000165d4 ldr r4, [sp, 0x15c] | r4 = var_15ch;
0x000165d8 str r3, [sp, 0x20] | var_20h = r3;
0x000165dc str r3, [sp, 0x1c] | var_1ch = r3;
0x000165e0 str r3, [sp, 0x18] | var_18h = r3;
0x000165e4 str r3, [sp, 0x14] | var_14h = r3;
0x000165e8 str r3, [sp, 0x10] | var_10h = r3;
0x000165ec str r3, [sp, 0xc] | var_ch = r3;
0x000165f0 str r3, [sp, 8] | var_8h = r3;
0x000165f4 str r3, [sp, 4] | var_4h = r3;
0x000165f8 str r3, [sp] | *(sp) = r3;
0x000165fc mov r1, r3 | r1 = r3;
0x00016600 ldr r2, [r2, 8] | r2 = "_:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:fbvw::W::nt:m:xc:g:46";
0x00016604 bl 0x122b0 | printf ("__c_requires_a_chain_and_a_policy", r1, r2, r3, r4);
0x00016608 ldr r0, [pc, 0x6fc] | r0 = "_s_v_sUsage:__s___ACD__chain_rule_specification__options_________s__I_chain__rulenum__rule_specification__options_________s__R_chain_rulenum_rule_specification__options_________s__D_chain_rulenum__options_________s___LS___chain__rulenum____options_";
0x0001660c bl 0x123a0 | puts ("_s_v_sUsage:__s___ACD__chain_rule_specification__options_________s__I_chain__rulenum__rule_specification__options_________s__R_chain_rulenum_rule_specification__options_________s__D_chain_rulenum__options_________s___LS___chain__rulenum____options_");
0x00016610 ldr r3, [pc, 0x69c] | r3 = xtables_matches;
0x00016614 mov r1, r4 | r1 = r4;
0x00016618 ldr r0, [r3] | r0 = xtables_matches;
0x0001661c bl 0x1b918 | fcn_0001b918 (r0, r1);
| label_14:
0x00016620 mov r0, 0 | r0 = 0;
0x00016624 bl 0x12760 | exit (r0);
| label_84:
0x00016628 ldr r0, [r1] | r0 = *(r1);
0x0001662c lsl r3, r3, 1 | r3 <<= 1;
0x00016630 ldrh r3, [r0, r3] | r3 = *((r0 + r3));
0x00016634 strb r3, [r2] | *(r2) = r3;
0x00016638 ldr r3, [sp, 0x178] | r3 = var_178h;
0x0001663c add r3, r3, 1 | r3++;
0x00016640 str r3, [sp, 0x178] | var_178h = r3;
0x00016644 b 0x16194 | goto label_9;
| label_79:
0x00016648 ldr r3, [sp, 0x150] | r3 = var_150h;
0x0001664c add r2, sp, 0xe3 | r2 += var_e3h;
0x00016650 mov r1, 2 | r1 = 2;
0x00016654 add r0, sp, 0x158 | r0 += var_158h;
0x00016658 bl 0x15510 | fcn_00015510 (r0, r1);
0x0001665c ldr r3, [pc, 0x664] | r3 = "--wait-interval only makes sense with --wait\n";
0x00016660 ldr sb, [r3] | sb = "--wait-interval only makes sense with --wait\n";
0x00016664 b 0x16258 | goto label_3;
| label_70:
0x00016668 ldr r3, [sp, 0x150] | r3 = var_150h;
0x0001666c add r2, sp, 0xe3 | r2 += var_e3h;
0x00016670 mov r1, 4 | r1 = 4;
0x00016674 add r0, sp, 0x158 | r0 += var_158h;
0x00016678 bl 0x15510 | fcn_00015510 (r0, r1);
0x0001667c ldr r3, [pc, 0x644] | r3 = "--wait-interval only makes sense with --wait\n";
0x00016680 ldr r7, [r3] | r7 = "--wait-interval only makes sense with --wait\n";
0x00016684 b 0x16258 | goto label_3;
| label_75:
0x00016688 ldr r3, [sp, 0x150] | r3 = var_150h;
0x0001668c add r2, sp, 0xe3 | r2 += var_e3h;
0x00016690 mov r1, 0x10 | r1 = 0x10;
0x00016694 add r0, sp, 0x158 | r0 += var_158h;
0x00016698 bl 0x15510 | fcn_00015510 (r0, r1);
0x0001669c ldrb r3, [sp, 0xe2] | r3 = var_e2h;
0x000166a0 orr r3, r3, 2 | r3 |= 2;
0x000166a4 strb r3, [sp, 0xe2] | var_e2h = r3;
0x000166a8 ldr r3, [pc, 0x618] | r3 = "--wait-interval only makes sense with --wait\n";
0x000166ac ldr r0, [r3] | r0 = "--wait-interval only makes sense with --wait\n";
0x000166b0 bl 0x1ca20 | fcn_0001ca20 ("--wait-interval only makes sense with --wait\n");
0x000166b4 str r0, [sp, 0x180] | src = r0;
0x000166b8 b 0x16258 | goto label_3;
| label_68:
0x000166bc add r0, sp, 0x158 | r0 += var_158h;
0x000166c0 ldr r3, [sp, 0x150] | r3 = var_150h;
0x000166c4 add r2, sp, 0xe3 | r2 += var_e3h;
0x000166c8 mov r1, 0x10 | r1 = 0x10;
0x000166cc bl 0x15510 | fcn_00015510 (r0, r1);
0x000166d0 add r0, sp, 0x90 | r0 += s2;
0x000166d4 bl 0x1cad8 | fcn_0001cad8 (r0);
0x000166d8 b 0x16258 | goto label_3;
| label_78:
0x000166dc add r2, sp, 0xe3 | r2 += var_e3h;
0x000166e0 mov r1, 0x80 | r1 = 0x80;
0x000166e4 ldr r3, [sp, 0x150] | r3 = var_150h;
0x000166e8 add r0, sp, 0x158 | r0 += var_158h;
0x000166ec bl 0x15510 | fcn_00015510 (r0, r1);
0x000166f0 add r2, sp, 0xc0 | r2 += var_c0h;
0x000166f4 add r1, sp, 0xa0 | r1 += var_a0h;
| label_11:
0x000166f8 ldr r0, [r8] | r0 = *(r8);
0x000166fc bl 0x12514 | xtables_parse_interface ();
0x00016700 b 0x16258 | goto label_3;
| label_83:
0x00016704 ldr r8, [pc, 0x5bc] | r8 = "--wait-interval only makes sense with --wait\n";
0x00016708 ldr r3, [r8] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001670c ldrb r3, [r3] | r3 = *(r3);
0x00016710 cmp r3, 0 |
| if (r3 == 0) {
0x00016714 beq 0x16120 | goto label_10;
| }
0x00016718 add r2, sp, 0xe3 | r2 += var_e3h;
0x0001671c mov r1, 0x100 | r1 = 0x100;
0x00016720 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016724 add r0, sp, 0x158 | r0 += var_158h;
0x00016728 bl 0x15510 | fcn_00015510 (r0, r1);
0x0001672c add r2, sp, 0xd0 | r2 += var_d0h;
0x00016730 add r1, sp, 0xb0 | r1 += var_b0h;
0x00016734 b 0x166f8 | goto label_11;
| label_85:
0x00016738 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0001673c cmp r3, 0 |
| if (r3 == 0) {
0x00016740 bne 0x16758 |
0x00016744 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016748 add r2, sp, 0xe3 | r2 += var_e3h;
0x0001674c mov r1, 0x20 | r1 = 0x20;
0x00016750 add r0, sp, 0x158 | r0 += var_158h;
0x00016754 bl 0x15510 | fcn_00015510 (r0, r1);
| }
0x00016758 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0001675c add r3, r3, 1 | r3++;
0x00016760 str r3, [sp, 0x30] | var_30h = r3;
0x00016764 b 0x16258 | goto label_3;
| label_88:
0x00016768 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001676c cmp r3, 0 |
| if (r3 == 0) {
0x00016770 ldrne r3, [pc, 0x620] | r3 = obj.xt_params;
| }
| if (r3 == 0) {
0x00016774 ldrne r1, [pc, 0x594] | r1 = "You cannot use `-w' from iptables-restore";
| }
| if (r3 == 0) {
0x00016778 ldrne r3, [r3] | r3 = *(r3);
| }
| if (r3 != 0) {
0x0001677c ldrne r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_97;
| }
| if (r3 != 0) {
| label_97:
0x00016780 bne 0x16518 | goto label_12;
| }
0x00016784 mov r1, r4 | r1 = r4;
0x00016788 mov r0, r5 | r0 = r5;
0x0001678c bl 0x1c0e8 | fcn_0001c0e8 ();
0x00016790 str r0, [sp, 0x38] | var_38h = r0;
0x00016794 b 0x16258 | goto label_3;
| label_47:
0x00016798 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001679c cmp r3, 0 |
| if (r3 == 0) {
0x000167a0 ldrne r3, [pc, 0x5f0] | r3 = obj.xt_params;
| }
| if (r3 == 0) {
0x000167a4 ldrne r1, [pc, 0x568] | r1 = "You cannot use `-W' from iptables-restore";
| }
| if (r3 == 0) {
0x000167a8 ldrne r3, [r3] | r3 = *(r3);
| }
| if (r3 != 0) {
0x000167ac ldrne r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_98;
| }
| if (r3 != 0) {
| label_98:
0x000167b0 bne 0x16518 | goto label_12;
| }
0x000167b4 add r2, sp, 0x78 | r2 += var_78h;
0x000167b8 mov r1, r4 | r1 = r4;
0x000167bc mov r0, r5 | r0 = r5;
0x000167c0 bl 0x1c184 | fcn_0001c184 ();
0x000167c4 mov r3, 1 | r3 = 1;
0x000167c8 str r3, [sp, 0x40] | var_40h = r3;
0x000167cc b 0x16258 | goto label_3;
| label_81:
0x000167d0 ldr r3, [sp, 0x150] | r3 = var_150h;
0x000167d4 add r2, sp, 0xe3 | r2 += var_e3h;
0x000167d8 mov r1, 1 | r1 = 1;
0x000167dc b 0x16230 | goto label_13;
| label_87:
0x000167e0 ldr r3, [pc, 0x4e0] |
0x000167e4 ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x000167e8 str r3, [r6] | *(r6) = r3;
0x000167ec b 0x16258 | goto label_3;
| label_67:
0x000167f0 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000167f4 ldr r0, [pc, 0x51c] | r0 = "You cannot use `-W' from iptables-restore";
0x000167f8 bl 0x122b0 | printf ("You cannot use `-W' from iptables-restore", r1);
0x000167fc b 0x16620 | goto label_14;
| label_52:
0x00016800 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016804 add r2, sp, 0xe3 | r2 += var_e3h;
0x00016808 mov r1, 0x200 | r1 = 0x200;
0x0001680c b 0x16230 | goto label_13;
| label_62:
0x00016810 ldr r3, [pc, 0x4b0] | r3 = "--wait-interval only makes sense with --wait\n";
0x00016814 ldr r2, [r3] | r2 = "--wait-interval only makes sense with --wait\n";
0x00016818 ldr r3, [pc, 0x4fc] | r3 = "_s_v_s__legacy_";
0x0001681c str r2, [r3] | *(r3) = r2;
0x00016820 b 0x16258 | goto label_3;
| label_73:
0x00016824 ldr r3, [sp, 0x150] | r3 = var_150h;
0x00016828 add r2, sp, 0xe3 | r2 += var_e3h;
0x0001682c mov r1, 0x400 | r1 = 0x400;
0x00016830 add r0, sp, 0x158 | r0 += var_158h;
0x00016834 bl 0x15510 | fcn_00015510 (r0, r1);
0x00016838 ldr r3, [pc, 0x488] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001683c mov r1, 0x2c | r1 = 0x2c;
0x00016840 ldr r8, [r3] | r8 = "--wait-interval only makes sense with --wait\n";
0x00016844 add r0, r8, 1 | r0 = r8 + 1;
0x00016848 bl 0x127cc | r0 = strchr (r0, r1);
0x0001684c cmp r0, 0 |
| if (r0 != 0) {
0x00016850 beq 0x1685c |
0x00016854 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x00016858 bne 0x168ac | goto label_99;
| }
| }
0x0001685c mov r1, r4 | r1 = r4;
0x00016860 mov r0, r5 | r0 = r5;
0x00016864 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00016868 cmp r0, 0 |
0x0001686c bne 0x16890 |
| while (r3 == 0) {
0x00016870 mov r0, 0x400 | r0 = 0x400;
0x00016874 bl 0x12880 | fcn_00012880 (r0);
0x00016878 ldr r3, [pc, 0x518] |
0x0001687c ldr r1, [pc, 0x49c] | r1 = xtables_modprobe_program;
0x00016880 ldr r3, [r3] |
0x00016884 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016888 mov r2, r0 | r2 = r0;
0x0001688c b 0x16328 | goto label_7;
0x00016890 ldr r2, [pc, 0x414] | r2 = *(0x16ca8);
0x00016894 ldr r3, [r2] | r3 = *(0x16ca8);
0x00016898 add r1, r3, 1 | r1 = r3 + 1;
0x0001689c ldr r3, [r4, r3, lsl 2] | offset_9 = r3 << 2;
| r3 = *((r4 + offset_9));
0x000168a0 str r1, [r2] | *(r2) = r1;
0x000168a4 cmp r3, 0 |
0x000168a8 beq 0x16870 |
| }
| label_99:
0x000168ac add r2, sp, 0x70 | r2 += format;
0x000168b0 ldr r1, [pc, 0x46c] | r1 = "__c_requires_packet_and_byte_counter";
0x000168b4 mov r0, r8 | r0 = r8;
0x000168b8 str r3, [sp, 0x4c] | var_4ch = r3;
0x000168bc bl 0x12574 | sscanf (r0, "__c_requires_packet_and_byte_counter", r2);
0x000168c0 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000168c4 cmp r0, 1 |
| if (r0 != 1) {
0x000168c8 beq 0x168ec |
0x000168cc mov r0, 0x400 | r0 = 0x400;
0x000168d0 bl 0x12880 | fcn_00012880 (r0);
0x000168d4 ldr r3, [pc, 0x4bc] |
0x000168d8 ldr r1, [pc, 0x448] | r1 = "_llu";
0x000168dc ldr r3, [r3] |
0x000168e0 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x000168e4 mov r2, r0 | r2 = r0;
0x000168e8 b 0x16328 | goto label_7;
| }
0x000168ec ldrd r0, r1, [sp, 0x70] | __asm ("ldrd r0, r1, [format]");
0x000168f0 add r2, sp, 0x70 | r2 += format;
0x000168f4 strd r0, r1, [sp, 0xf0] | __asm ("strd r0, r1, [var_f0h]");
0x000168f8 ldr r1, [pc, 0x424] | r1 = "__c_requires_packet_and_byte_counter";
0x000168fc mov r0, r3 | r0 = r3;
0x00016900 bl 0x12574 | r0 = sscanf (r0, "__c_requires_packet_and_byte_counter", r2);
0x00016904 cmp r0, 1 |
| if (r0 != 1) {
0x00016908 beq 0x1692c |
0x0001690c mov r0, 0x400 | r0 = 0x400;
0x00016910 bl 0x12880 | fcn_00012880 (r0);
0x00016914 ldr r3, [pc, 0x47c] |
0x00016918 ldr r1, [pc, 0x40c] | r1 = "-%c packet counter not numeric";
0x0001691c ldr r3, [r3] |
0x00016920 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016924 mov r2, r0 | r2 = r0;
0x00016928 b 0x16328 | goto label_7;
| }
0x0001692c ldrd r2, r3, [sp, 0x70] | __asm ("ldrd r2, r3, [format]");
0x00016930 strd r2, r3, [sp, 0xf8] | __asm ("strd r2, r3, [var_f8h]");
0x00016934 b 0x16258 | goto label_3;
| label_51:
0x00016938 ldr r3, [pc, 0x3f0] |
0x0001693c ldr r3, [r3] | r3 = "__c_byte_counter_not_numeric";
0x00016940 cmn r3, 1 |
| if (r3 == 1) {
0x00016944 movne r4, 1 | r4 = 1;
| }
| if (r3 != 1) {
0x00016948 bne 0x1756c | goto label_100;
| }
0x0001694c ldr r3, [pc, 0x438] | r3 = "Can't use -%c with %s\n";
0x00016950 ldr r0, [pc, 0x3dc] | r0 = line;
0x00016954 ldr r1, [r3] | r1 = "Can't use -%c with %s\n";
0x00016958 bl 0x127d8 | r0 = fputs (r0, "Can't use -%c with %s\n");
| do {
| label_19:
0x0001695c bl 0x15694 | fcn_00015694 ();
| label_54:
0x00016960 mov r1, 1 | r1 = 1;
0x00016964 str r1, [sp, 0x150] | var_150h = r1;
0x00016968 strb r3, [r2] | *(r2) = r3;
0x0001696c b 0x15e14 | goto label_1;
| label_53:
0x00016970 ldr r3, [pc, 0x414] | r3 = "Can't use -%c with %s\n";
0x00016974 ldr r1, [pc, 0x3bc] | r1 = "This is the IPv4 version of iptables.\n";
0x00016978 ldr r0, [r3] | r0 = "Can't use -%c with %s\n";
0x0001697c bl 0x12478 | fprintf ("Can't use -%c with %s\n", "This is the IPv4 version of iptables.\n", r2, "Can't use -%c with %s\n");
0x00016980 b 0x1695c |
| } while (1);
| label_46:
0x00016984 ldr r1, [pc, 0x3b0] | r1 = "Bad argument `%s'\n";
0x00016988 ldr r0, [r6] | r0 = *(r6);
0x0001698c bl 0x1264c | r0 = strcmp (r0, "Bad argument `%s'\n");
0x00016990 cmp r0, 0 |
| if (r0 == 0) {
0x00016994 bne 0x169e8 |
0x00016998 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001699c cmp r3, 0 |
| if (r3 != 0) {
0x000169a0 beq 0x169b8 |
0x000169a4 ldr r1, [pc, 0x394] | r1 = *(0x16d3c);
0x000169a8 mov r0, r3 | r0 = r3;
0x000169ac bl 0x1264c | r0 = strcmp (r0, r1);
0x000169b0 cmp r0, 0 |
| if (r0 == 0) {
0x000169b4 beq 0x169d4 | goto label_101;
| }
| }
0x000169b8 ldr r0, [sp, 0x180] | r0 = src;
0x000169bc cmp r0, 0 |
| if (r0 == 0) {
0x000169c0 beq 0x169e8 | goto label_102;
| }
0x000169c4 ldr r1, [pc, 0x374] | r1 = *(0x16d3c);
0x000169c8 bl 0x1264c | r0 = strcmp (r0, r1);
0x000169cc cmp r0, 0 |
| if (r0 != 0) {
0x000169d0 bne 0x169e8 | goto label_102;
| }
| label_101:
0x000169d4 ldr r3, [pc, 0x3bc] |
0x000169d8 ldr r1, [pc, 0x364] | r1 = "DROP";
0x000169dc ldr r3, [r3] |
0x000169e0 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x000169e4 b 0x16518 | goto label_12;
| }
| label_102:
0x000169e8 ldr r4, [sp, 0x15c] | r4 = var_15ch;
| do {
0x000169ec cmp r4, 0 |
| if (r4 == 0) {
0x000169f0 bne 0x16a28 |
0x000169f4 ldr r0, [sp, 0x164] | r0 = var_164h;
0x000169f8 cmp r0, 0 |
| if (r0 != 0) {
0x000169fc beq 0x16a04 |
0x00016a00 bl 0x1267c | xtables_option_tfcall ();
| }
0x00016a04 ldr r3, [pc, 0x2a0] |
0x00016a08 ldr r3, [r3] | r3 = *(0x16ca8);
0x00016a0c cmp r3, r5 |
| if (r3 >= r5) {
0x00016a10 bge 0x16a38 | goto label_103;
| }
0x00016a14 ldr r3, [pc, 0x37c] |
0x00016a18 ldr r1, [pc, 0x328] | r1 = "\nThe \"nat\" table is not intended for filtering, the use of DROP is therefore inhibited.\n\n";
0x00016a1c ldr r3, [r3] |
0x00016a20 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016a24 b 0x16518 | goto label_12;
| }
0x00016a28 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00016a2c bl 0x1270c | xtables_option_mfcall ();
0x00016a30 ldr r4, [r4] | r4 = *(r4);
0x00016a34 b 0x169ec |
| } while (1);
| label_103:
0x00016a38 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00016a3c cmp r3, 0 |
| if (r3 != 0) {
0x00016a40 ldreq r3, [pc, 0x350] | r3 = obj.xt_params;
| }
| if (r3 != 0) {
0x00016a44 ldreq r1, [pc, 0x300] | r1 = "no_command_specified";
| }
| if (r3 != 0) {
0x00016a48 ldreq r3, [r3] | r3 = *(r3);
| }
| if (r3 == 0) {
0x00016a4c ldreq r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_104;
| }
| if (r3 == 0) {
| label_104:
0x00016a50 beq 0x16518 | goto label_12;
| }
0x00016a54 ldr r2, [sp, 0x150] | r2 = var_150h;
0x00016a58 cmp r2, 0 |
| if (r2 == 0) {
0x00016a5c ldrne r3, [pc, 0x334] | r3 = obj.xt_params;
| }
| if (r2 == 0) {
0x00016a60 ldrne r1, [pc, 0x2e8] | r1 = "nothing appropriate following !";
| }
| if (r2 == 0) {
0x00016a64 ldrne r3, [r3] | r3 = *(r3);
| }
| if (r2 != 0) {
0x00016a68 ldrne r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_105;
| }
| if (r2 != 0) {
| label_105:
0x00016a6c bne 0x16518 | goto label_12;
| }
0x00016a70 ldr r2, [pc, 0x2dc] | r2 = "nothing appropriate following !";
0x00016a74 tst r3, r2 |
| if ((r3 & r2) != 0) {
0x00016a78 beq 0x16a94 |
0x00016a7c ldr r2, [sp, 0x158] | r2 = var_158h;
0x00016a80 ldr r3, [pc, 0x2d0] | r3 = *(0x16d54);
0x00016a84 tst r2, 4 |
| if ((r2 & 4) != 0) {
0x00016a88 moveq r7, r3 | r7 = r3;
| }
0x00016a8c tst r2, 2 |
| if ((r2 & 2) == 0) {
0x00016a90 beq 0x16b04 | goto label_106;
| }
| }
0x00016a94 cmp sb, 0 |
0x00016a98 beq 0x16ab0 |
| while (1) {
0x00016a9c add r3, sp, 0x50 | r3 += var_50h;
0x00016aa0 add r2, sp, 0x5c | r2 += var_5ch;
0x00016aa4 add r1, sp, 0x58 | r1 += ptr;
0x00016aa8 mov r0, sb | r0 = sb;
0x00016aac bl 0x1276c | xtables_ipparse_multiple ();
0x00016ab0 cmp r7, 0 |
| if (r7 != 0) {
0x00016ab4 beq 0x16acc |
0x00016ab8 add r3, sp, 0x54 | r3 += var_54h;
0x00016abc add r2, sp, 0x64 | r2 += var_64h;
0x00016ac0 add r1, sp, 0x60 | r1 += var_60h;
0x00016ac4 mov r0, r7 | r0 = r7;
0x00016ac8 bl 0x1276c | xtables_ipparse_multiple ();
| }
0x00016acc ldr r3, [sp, 0x50] | r3 = var_50h;
0x00016ad0 cmp r3, 1 |
| if (r3 <= 1) {
0x00016ad4 bhi 0x16ae4 |
0x00016ad8 ldr r2, [sp, 0x54] | r2 = var_54h;
0x00016adc cmp r2, 1 |
| if (r2 < 1) {
0x00016ae0 bls 0x16b0c | goto label_107;
| }
| }
0x00016ae4 ldrb r2, [sp, 0xe3] | r2 = var_e3h;
0x00016ae8 tst r2, 0x18 |
| if ((r2 & 0x18) == 0) {
0x00016aec beq 0x16b0c | goto label_107;
| }
0x00016af0 ldr r3, [pc, 0x2a0] |
0x00016af4 ldr r1, [pc, 0x260] | r1 = "_.0.0.0_0";
0x00016af8 ldr r3, [r3] |
0x00016afc ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016b00 b 0x16518 | goto label_12;
| label_106:
0x00016b04 mov sb, r3 | sb = r3;
0x00016b08 b 0x16a9c |
| }
| label_107:
0x00016b0c ldr lr, [sp, 0x68] | lr = var_68h;
0x00016b10 cmp lr, 8 |
| if (lr == 8) {
0x00016b14 bne 0x16b40 |
0x00016b18 cmp r3, 1 |
| if (r3 == 1) {
0x00016b1c bne 0x16b2c |
0x00016b20 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00016b24 cmp r3, 1 |
| if (r3 == 1) {
0x00016b28 beq 0x16b40 | goto label_108;
| }
| }
0x00016b2c ldr r3, [pc, 0x264] |
0x00016b30 ldr r1, [pc, 0x228] | r1 = "! not allowed with multiple source or destination IP addresses";
0x00016b34 ldr r3, [r3] |
0x00016b38 ldr r3, [r3, 0x14] | r3 = "Chain %s";
0x00016b3c b 0x16518 | goto label_12;
| }
| label_108:
0x00016b40 ldr r5, [sp, 0x158] | r5 = var_158h;
0x00016b44 ldr ip, [pc, 0x218] | ip = "x_____x__x__x_____x__xx_xxxxx_xxxxxxx_____x__x__x_____x__x___xxxx__xx_xxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxx_xxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxx_____x__xx_";
0x00016b48 mov r3, 0 | r3 = 0;
0x00016b4c mov r7, 0xc | r7 = 0xc;
| label_16:
0x00016b50 asr r0, r5, r3 | r0 = r5 >> r3;
0x00016b54 mov r2, 0 | r2 = 0;
0x00016b58 and r0, r0, 1 | r0 &= 1;
0x00016b5c mov r1, r2 | r1 = r2;
| do {
0x00016b60 asr r4, lr, r1 | r4 = lr >> r1;
0x00016b64 tst r4, 1 |
| if ((r4 & 1) != 0) {
0x00016b68 beq 0x16bb8 |
0x00016b6c mul r4, r7, r1 | r4 = r7 * r1;
0x00016b70 cmp r0, 0 |
0x00016b74 ldrb r4, [ip, r4] | r4 = *((ip + r4));
| if (r0 == 0) {
0x00016b78 bne 0x16ba4 |
0x00016b7c cmp r4, 0x2b |
| if (r4 != 0x2b) {
0x00016b80 bne 0x16bb8 | goto label_109;
| }
0x00016b84 ldr r2, [pc, 0x20c] |
0x00016b88 ldr r1, [pc, 0x1d8] | r1 = "x_____x__x__x_____x__xx_xxxxx_xxxxxxx_____x__x__x_____x__x___xxxx__xx_xxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxx_xxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxx_____x__xx_";
0x00016b8c ldr r2, [r2] | r2 = *(0x16d94);
0x00016b90 ldr r4, [r2, 0x14] | r4 = "Chain %s";
0x00016b94 ldr r2, [pc, 0x1d0] | r2 = "You need to supply the `-%c' option for this command\n";
0x00016b98 ldrb r2, [r2, r3] | r2 = *((r2 + r3));
| label_15:
0x00016b9c mov r0, 2 | r0 = 2;
0x00016ba0 blx r4 | uint32_t (*r4)(uint32_t, char*, uint32_t) (r0, "x_____x__x__x_____x__xx_xxxxx_xxxxxxx_____x__x__x_____x__x___xxxx__xx_xxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxx_xxxxxx_xxxxxxxxxxx_xxxxxxxxxxx_xxxxxxx_____x__xx_", r2);
| }
0x00016ba4 cmp r4, 0x78 |
| if (r4 == 0x78) {
0x00016ba8 movne r2, r0 | r2 = r0;
| }
| if (r4 != 0x78) {
0x00016bac bne 0x16bb8 | goto label_109;
| }
0x00016bb0 cmp r2, 0 |
| if (r2 == 0) {
0x00016bb4 mvneq r2, 0 | r2 = ~0;
| goto label_109;
| }
| }
| label_109:
0x00016bb8 add r1, r1, 1 | r1++;
0x00016bbc cmp r1, 0x10 |
0x00016bc0 bne 0x16b60 |
| } while (r1 != 0x10);
0x00016bc4 cmn r2, 1 |
0x00016bc8 add ip, ip, 1 |
| if (r2 == 1) {
0x00016bcc bne 0x16bec |
0x00016bd0 ldr r2, [pc, 0x1c0] |
0x00016bd4 ldr r1, [pc, 0x194] | r1 = "nsdpjvxio0cfIDDRALFZNXPESZC__unsupported_revision_";
0x00016bd8 ldr r2, [r2] | r2 = *(0x16d94);
0x00016bdc ldr r4, [r2, 0x14] | r4 = "Chain %s";
0x00016be0 ldr r2, [pc, 0x184] | r2 = "You need to supply the `-%c' option for this command\n";
0x00016be4 ldrb r2, [r2, r3] | r2 = *((r2 + r3));
0x00016be8 b 0x16b9c | goto label_15;
| }
0x00016bec add r3, r3, 1 | r3++;
0x00016bf0 cmp r3, 0xc |
| if (r3 != 0xc) {
0x00016bf4 bne 0x16b50 | goto label_16;
| }
0x00016bf8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00016bfc cmp r3, 0 |
| if (r3 == 0) {
0x00016c00 bne 0x16c10 |
0x00016c04 add r1, sp, 0x78 | r1 += var_78h;
0x00016c08 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00016c0c bl 0x1bea8 | fcn_0001bea8 (r0, r1);
| }
0x00016c10 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016c14 ldr r3, [r3] | r3 = *(r3);
0x00016c18 cmp r3, 0 |
| if (r3 == 0) {
0x00016c1c bne 0x16c30 |
0x00016c20 ldr r0, [r6] | r0 = *(r6);
0x00016c24 bl 0x12394 | iptc_init ();
0x00016c28 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016c2c str r0, [r3] | *(r3) = r0;
| }
0x00016c30 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016c34 ldr r1, [r3] | r1 = *(r3);
0x00016c38 cmp r1, 0 |
| if (r1 == 0) {
0x00016c3c movne r4, r1 | r4 = r1;
| }
| if (r1 == 0) {
0x00016c40 bne 0x16e14 |
0x00016c44 ldr r3, [pc, 0xd0] | r3 = "_s_v_s__legacy_";
0x00016c48 ldr r0, [r3] | r0 = "_s_v_s__legacy_";
0x00016c4c bl 0x125c8 | r0 = xtables_load_ko ();
0x00016c50 cmn r0, 1 |
| if (r0 != 1) {
0x00016c54 beq 0x16c68 |
0x00016c58 ldr r0, [r6] | r0 = *(r6);
0x00016c5c bl 0x12394 | iptc_init ();
0x00016c60 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016c64 str r0, [r3] | *(r3) = r0;
| }
0x00016c68 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016c6c ldr r4, [r3] | r4 = *(r3);
0x00016c70 cmp r4, 0 |
| if (r4 != 0) {
0x00016c74 bne 0x16e14 | goto label_110;
| }
0x00016c78 ldr r3, [pc, 0x118] |
0x00016c7c ldr r5, [r6] | r5 = *(r6);
0x00016c80 ldr r3, [r3] | r3 = *(0x16d94);
0x00016c84 ldr r4, [r3, 0x14] | r4 = "Chain %s";
0x00016c88 bl 0x12754 | r0 = errno_location ();
0x00016c8c ldr r0, [r0] | r0 = *(r0);
0x00016c90 bl 0x1258c | iptc_strerror ();
0x00016c94 ldr r1, [pc, 0xd8] | r1 = "Illegal option `-%c' with this command\n";
0x00016c98 mov r2, r5 | r2 = r5;
0x00016c9c mov r3, r0 | r3 = r0;
0x00016ca0 mov r0, 3 | r0 = 3;
| label_93:
0x00016ca4 blx r4 | uint32_t (*r4)(uint32_t, char*, uint32_t, uint32_t) (r0, "Illegal option `-%c' with this command\n", r2, r3);
| if (r4 != 0) {
0x00016ca8 andeq sp, r1, ip, ror 2 |
| }
| if (r4 != 0) {
0x00016cac andeq r1, r3, r4, asr r7 | r1 = r3 & (r4 >> r7);
| }
| if (r4 != 0) {
0x00016cb0 andeq r1, r3, ip, asr r7 | r1 = r3 & (ip >> r7);
| }
| if (r4 != 0) {
0x00016cb4 andeq r1, r3, r0, ror 14 | r1 = r3 & (r0 >>> 14);
| }
| if (r4 != 0) {
0x00016cb8 andeq r1, r3, ip, asr 14 | r1 = r3 & (ip >> 14);
| }
| if (r4 != 0) {
0x00016cbc andeq r1, r3, r8, asr 4 | r1 = r3 & (r8 >> 4);
| }
| if (r4 != 0) {
0x00016cc0 andeq lr, r1, sl, asr 21 | lr = r1 & (sl >> 21);
| }
| if (r4 != 0) {
0x00016cc4 andeq lr, r1, r3, lsl fp | lr = r1 & (r3 << fp);
| }
| if (r4 != 0) {
0x00016cc8 andeq r1, r3, r8, asr 14 | r1 = r3 & (r8 >> 14);
| }
| if (r4 != 0) {
0x00016ccc muleq r1, r4, sl | r1 = r4 * sl;
| }
| if (r4 != 0) {
0x00016cd0 andeq lr, r1, r0, lsl 20 | lr = r1 & (r0 << 20);
| }
| if (r4 != 0) {
0x00016cd4 andeq lr, r1, r1, ror 18 | lr = r1 & (r1 >>> 18);
| }
| if (r4 != 0) {
0x00016cd8 andeq r1, r3, r0, ror r7 | r1 = r3 & (r0 >>> r7);
| }
| if (r4 != 0) {
0x00016cdc andeq lr, r1, r1, asr 18 | lr = r1 & (r1 >> 18);
| }
0x00016ce0 ldrdeq lr, pc, [r1], -pc | __asm ("ldrdeq lr, pc, [r1], -pc");
| if (r4 != 0) {
0x00016ce4 andeq sp, r1, r0, asr sp |
| }
| if (r4 != 0) {
0x00016ce8 andeq r1, r0, r0, lsr 32 | r1 = r0 & (r0 >> 32);
| }
| if (r4 != 0) {
0x00016cec andeq sp, r1, fp, ror 26 |
| }
| if (r4 != 0) {
0x00016cf0 muleq r1, sp, sp | r1 = sp * sp;
| }
| if (r4 != 0) {
0x00016cf4 andeq r1, r3, ip, lsr r7 | r1 = r3 & (ip >> r7);
| }
| if (r4 != 0) {
0x00016cf8 andeq sp, r1, r8, asr 27 |
| }
0x00016cfc strdeq sp, lr, [r1], -r3 | __asm ("strdeq sp, lr, [r1], -r3");
| if (r4 != 0) {
0x00016d00 andeq sp, r1, fp, lsl 28 |
| }
| if (r4 != 0) {
0x00016d04 andeq sp, r1, sl, lsr lr |
| }
| if (r4 != 0) {
0x00016d08 andeq sp, r1, ip, asr lr |
| }
| if (r4 != 0) {
0x00016d0c andeq lr, r1, pc | lr = r1 & pc;
| }
| if (r4 != 0) {
0x00016d10 andeq lr, r1, fp, lsl 19 | lr = r1 & (fp << 19);
| }
0x00016d14 strheq lr, [r1], -r5 | __asm ("strheq lr, [r1], -r5");
| if (r4 != 0) {
0x00016d18 andeq sp, r1, ip, lsr 10 |
| }
| if (r4 != 0) {
0x00016d1c andeq r1, r3, r0, asr 14 | r1 = r3 & (r0 >> 14);
| }
| if (r4 != 0) {
0x00016d20 andeq lr, r1, ip, lsl 20 | lr = r1 & (ip << 20);
| }
| if (r4 != 0) {
0x00016d24 andeq sp, r1, r8, ror 25 |
| }
| if (r4 != 0) {
0x00016d28 andeq lr, r1, r1, lsr sl | lr = r1 & (r1 >> sl);
| }
| if (r4 != 0) {
0x00016d2c andeq lr, r1, r0, asr sl | lr = r1 & (r0 >> sl);
| }
| if (r4 != 0) {
0x00016d30 andeq r1, r3, r0, asr r7 | r1 = r3 & (r0 >> r7);
| }
| if (r4 != 0) {
0x00016d34 andeq lr, r1, sp, ror 20 | lr = r1 & (sp >>> 20);
| }
0x00016d38 strheq lr, [r1], -r7 | __asm ("strheq lr, [r1], -r7");
| if (r4 != 0) {
0x00016d3c andeq lr, r1, r1, asr 22 | lr = r1 & (r1 >> 22);
| }
| if (r4 != 0) {
0x00016d40 andeq sp, r1, sl, asr r2 |
| }
| if (r4 != 0) {
0x00016d44 andeq lr, r1, r5, asr 22 | lr = r1 & (r5 >> 22);
| }
| if (r4 != 0) {
0x00016d48 muleq r1, pc, fp | r1 = pc * fp;
| }
| if (r4 != 0) {
0x00016d4c andeq lr, r1, r6, asr 23 | lr = r1 & (r6 >> 23);
| }
0x00016d50 ldrdeq lr, pc, [r1], -fp | __asm ("ldrdeq lr, pc, [r1], -fp");
| if (r4 != 0) {
0x00016d54 andeq r4, r0, fp, lsl r0 | r4 = r0 & (fp << r0);
| }
| if (r4 != 0) {
0x00016d58 andeq sp, r1, r6, asr 26 |
| }
0x00016d5c strdeq lr, pc, [r1], -fp | __asm ("strdeq lr, pc, [r1], -fp");
| if (r4 != 0) {
0x00016d60 andeq lr, r1, sl, lsr ip | lr = r1 & (sl >> ip);
| }
0x00016d64 ldrdeq sp, lr, [r1], -r4 | __asm ("ldrdeq sp, lr, [r1], -r4");
| if (r4 != 0) {
0x00016d68 andeq lr, r1, sp, ror 24 | lr = r1 & (sp >>> 24);
| }
| if (r4 != 0) {
0x00016d6c andeq sp, r1, r0, ror sb |
| }
| if (r4 != 0) {
0x00016d70 andeq lr, r1, r3, lsr 25 | lr = r1 & (r3 >> 25);
| }
| if (r4 != 0) {
0x00016d74 andeq lr, r1, fp, asr 25 | lr = r1 & (fp >> 25);
| }
0x00016d78 strdeq lr, pc, [r1], -r4 | __asm ("strdeq lr, pc, [r1], -r4");
0x00016d7c strdeq lr, pc, [r1], -pc | __asm ("strdeq lr, pc, [r1], -pc");
| if (r4 != 0) {
0x00016d80 andeq lr, r1, ip, lsl sp | lr = r1 & (ip << sp);
| }
| if (r4 != 0) {
0x00016d84 andeq lr, r1, r8, lsr 26 | lr = r1 & (r8 >> 26);
| }
| if (r4 != 0) {
0x00016d88 andeq lr, r1, r5, lsl 26 | lr = r1 & (r5 << 26);
| }
| if (r4 != 0) {
0x00016d8c andeq r1, r3, r4, ror 14 | r1 = r3 & (r4 >>> 14);
| }
| if (r4 != 0) {
0x00016d90 andeq lr, r1, pc, lsr 26 | lr = r1 & (pc >> 26);
| }
| if (r4 != 0) {
0x00016d94 andeq sp, r1, ip, ror 2 |
| }
| if (r4 != 0) {
0x00016d98 andeq r1, r3, ip, ror 14 | r1 = r3 & (ip >>> 14);
| }
| if (r4 != 0) {
0x00016d9c andeq lr, r1, r7, asr sp | lr = r1 & (r7 >> sp);
| }
| if (r4 != 0) {
0x00016da0 andeq r1, r3, r8, lsr r7 | r1 = r3 & (r8 >> r7);
| }
| if (r4 != 0) {
0x00016da4 andeq r2, r0, r0, lsr 32 | r2 = r0 & (r0 >> 32);
| }
| if (r4 != 0) {
0x00016da8 andeq lr, r1, r1, ror sp | lr = r1 & (r1 >>> sp);
| }
| if (r4 != 0) {
0x00016dac andeq lr, r1, sl, ror sp | lr = r1 & (sl >>> sp);
| }
| if (r4 != 0) {
0x00016db0 andeq lr, r1, r6, lsl 27 | lr = r1 & (r6 << 27);
| }
| if (r4 != 0) {
0x00016db4 andeq lr, r1, ip, lsr 27 | lr = r1 & (ip >> 27);
| }
| if (r4 != 0) {
0x00016db8 andeq lr, r1, r0, asr 27 | lr = r1 & (r0 >> 27);
| }
| if (r4 != 0) {
0x00016dbc andeq lr, r1, r4, asr 27 | lr = r1 & (r4 >> 27);
| }
| if (r4 != 0) {
0x00016dc0 andeq lr, r1, sl, asr 27 | lr = r1 & (sl >> 27);
| }
| if (r4 != 0) {
0x00016dc4 andeq lr, r1, pc, asr 27 | lr = r1 & (pc >> 27);
| }
0x00016dc8 ldrdeq lr, pc, [r1], -pc | __asm ("ldrdeq lr, pc, [r1], -pc");
| if (r4 != 0) {
0x00016dcc andeq sp, r1, r5, asr 21 |
| }
| if (r4 != 0) {
0x00016dd0 andeq lr, r1, r6, ror 27 | lr = r1 & (r6 >>> 27);
| }
| if (r4 != 0) {
0x00016dd4 andeq lr, r1, sp, ror 27 | lr = r1 & (sp >>> 27);
| }
| if (r4 != 0) {
0x00016dd8 andeq lr, r1, r0, lsl 29 | lr = r1 & (r0 << 29);
| }
0x00016ddc strdeq lr, pc, [r1], -r1 | __asm ("strdeq lr, pc, [r1], -r1");
0x00016de0 strdeq lr, pc, [r1], -r8 | __asm ("strdeq lr, pc, [r1], -r8");
0x00016de4 strdeq lr, pc, [r1], -r2 | __asm ("strdeq lr, pc, [r1], -r2");
0x00016de8 strdeq lr, pc, [r1], -ip | __asm ("strdeq lr, pc, [r1], -ip");
| if (r4 != 0) {
0x00016dec andeq lr, r1, fp, lsl 28 | lr = r1 & (fp << 28);
| }
| if (r4 != 0) {
0x00016df0 andeq lr, r1, r3, lsl 28 | lr = r1 & (r3 << 28);
| }
| if (r4 != 0) {
0x00016df4 muleq r1, r6, sp | r1 = r6 * sp;
| }
| if (r4 != 0) {
0x00016df8 andeq lr, r1, lr, lsr 27 | lr = r1 & (lr >> 27);
| }
0x00016dfc ldrdeq lr, pc, [r1], -r4 | __asm ("ldrdeq lr, pc, [r1], -r4");
| if (r4 != 0) {
0x00016e00 muleq r1, r0, sp | r1 = r0 * sp;
| }
0x00016e04 ldrdeq lr, pc, [r1], -sb | __asm ("ldrdeq lr, pc, [r1], -sb");
| if (r4 != 0) {
0x00016e08 andeq lr, r1, r0, lsr 28 | lr = r1 & (r0 >> 28);
| }
| if (r4 != 0) {
0x00016e0c andeq lr, r1, r7, lsl lr | lr = r1 & (r7 << lr);
| }
0x00016e10 ldrdeq sp, lr, [r1], -pc | __asm ("ldrdeq sp, lr, [r1], -pc");
| }
| label_110:
0x00016e14 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00016e18 sub r5, r3, 1 | r5 = r3 - 1;
0x00016e1c cmp r3, 0x4000 |
0x00016e20 cmpne r5, 1 | __asm ("cmpne r5, 1");
0x00016e24 sub r3, r3, 8 | r3 -= 8;
| if (r3 > 0x4000) {
0x00016e28 movls r5, 1 | r5 = 1;
| }
| if (r3 <= 0x4000) {
0x00016e2c movhi r5, 0 | r5 = 0;
| }
0x00016e30 bics r3, r3, 8 | __asm ("bics r3, r3, 8");
| if (r3 != 0x4000) {
0x00016e34 moveq r5, 1 | r5 = 1;
| }
0x00016e38 cmp r5, 0 |
| if (r5 == 0) {
0x00016e3c beq 0x17004 | goto label_21;
| }
0x00016e40 ldr r1, [pc, -0xd0] | r1 = "PREROUTING";
0x00016e44 mov r0, sl | r0 = sl;
0x00016e48 bl 0x1264c | r0 = strcmp (r0, "PREROUTING");
0x00016e4c cmp r0, 0 |
| if (r0 != 0) {
0x00016e50 beq 0x16e68 |
0x00016e54 ldr r1, [pc, -0xe0] | r1 = "INPUT";
0x00016e58 mov r0, sl | r0 = sl;
0x00016e5c bl 0x1264c | r0 = strcmp (r0, "INPUT");
0x00016e60 cmp r0, 0 |
| if (r0 != 0) {
0x00016e64 bne 0x16e78 | goto label_111;
| }
| }
0x00016e68 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00016e6c tst r3, 0x100 |
| if ((r3 & 0x100) == 0) {
0x00016e70 movne r0, 0x100 | r0 = 0x100;
| }
| if ((r3 & 0x100) == 0) {
0x00016e74 bne 0x16eb0 |
| label_111:
0x00016e78 ldr r1, [pc, -0x100] | r1 = "POSTROUTING";
0x00016e7c mov r0, sl | r0 = sl;
0x00016e80 bl 0x1264c | r0 = strcmp (r0, "POSTROUTING");
0x00016e84 cmp r0, 0 |
| if (r0 != 0) {
0x00016e88 beq 0x16ea0 |
0x00016e8c ldr r1, [pc, -0x110] | r1 = "OUTPUT";
0x00016e90 mov r0, sl | r0 = sl;
0x00016e94 bl 0x1264c | r0 = strcmp (r0, "OUTPUT");
0x00016e98 cmp r0, 0 |
| if (r0 != 0) {
0x00016e9c bne 0x16ed0 | goto label_112;
| }
| }
0x00016ea0 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00016ea4 tst r3, 0x80 |
| if ((r3 & 0x80) == 0) {
0x00016ea8 beq 0x16ed0 | goto label_112;
| }
0x00016eac mov r0, 0x80 | r0 = 0x80;
| }
0x00016eb0 bl 0x12880 | fcn_00012880 (r0);
0x00016eb4 ldr r3, [pc, -0x124] | r3 = obj.xt_params;
0x00016eb8 ldr r1, [pc, -0x138] | r1 = "Can't use -%c with %s\n";
0x00016ebc ldr r3, [r3] | r3 = *(r3);
0x00016ec0 ldr r4, [r3, 0x14] | r4 = *((r3 + 0x14));
0x00016ec4 mov r3, sl | r3 = sl;
0x00016ec8 mov r2, r0 | r2 = r0;
0x00016ecc b 0x164a8 | goto label_17;
| label_112:
0x00016ed0 ldr r3, [sp, 0x164] | r3 = var_164h;
0x00016ed4 cmp r3, 0 |
| if (r3 != 0) {
0x00016ed8 beq 0x16f2c |
0x00016edc mov r1, r4 | r1 = r4;
0x00016ee0 ldr r0, [sp, 0x180] | r0 = src;
0x00016ee4 bl 0x12748 | r0 = iptc_is_chain ();
0x00016ee8 cmp r0, 0 |
| if (r0 != 0) {
0x00016eec beq 0x16f20 |
0x00016ef0 ldr r3, [pc, -0x16c] | r3 = obj.stderr;
0x00016ef4 ldr r2, [sp, 0x180] | r2 = src;
0x00016ef8 ldr r0, [r3] | r0 = *(r3);
0x00016efc ldr r1, [pc, -0x174] | r1 = "Warning: using chain %s, not extension\n";
0x00016f00 bl 0x12478 | fprintf (r0, "Warning: using chain %s, not extension\n", r2, r3);
0x00016f04 ldr r3, [sp, 0x164] | r3 = var_164h;
0x00016f08 ldr r0, [r3, 0x58] | r0 = *((r3 + 0x58));
0x00016f0c cmp r0, 0 |
| if (r0 != 0) {
0x00016f10 beq 0x16f18 |
0x00016f14 bl 0x1285c | free (r0);
| }
0x00016f18 mov r3, 0 | r3 = 0;
0x00016f1c str r3, [sp, 0x164] | var_164h = r3;
| }
0x00016f20 ldr r3, [sp, 0x164] | r3 = var_164h;
0x00016f24 cmp r3, 0 |
| if (r3 != 0) {
0x00016f28 bne 0x17100 | goto label_113;
| }
| }
0x00016f2c ldr r0, [sp, 0x180] | r0 = src;
0x00016f30 ldrb r3, [r0] | r3 = *(r0);
0x00016f34 cmp r3, 0 |
0x00016f38 bne 0x16fa0 |
| while (r0 != 0) {
0x00016f3c mov r1, 3 | r1 = 3;
0x00016f40 ldr r0, [pc, -0x1b4] | r0 = "Warning: using chain %s, not extension\n";
0x00016f44 bl 0x12280 | xtables_find_target ();
0x00016f48 ldr r4, [r0, 0x14] |
0x00016f4c mov r5, r0 | r5 = r0;
0x00016f50 add r4, r4, 0x20 | r4 = 0x16dc4;
0x00016f54 str r0, [sp, 0x164] | var_164h = r0;
0x00016f58 mov r1, r4 | r1 = r4;
0x00016f5c mov r0, 1 | r0 = 1;
0x00016f60 bl 0x12340 | xtables_calloc ();
0x00016f64 ldr r3, [sp, 0x164] | r3 = var_164h;
0x00016f68 ldr r1, [sp, 0x180] | r1 = src;
0x00016f6c str r0, [r5, 0x58] | *((r5 + 0x58)) = r0;
0x00016f70 ldr r0, [r3, 0x58] | r0 = *((r3 + 0x58));
0x00016f74 strh r4, [r0], 2 | *(r0) = r4;
| r0 += 2;
0x00016f78 bl 0x12268 | strcpy (r0, r1)
0x00016f7c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016f80 ldr r0, [sp, 0x180] | r0 = src;
0x00016f84 ldr r1, [r3] | r1 = *(r3);
0x00016f88 bl 0x12748 | r0 = iptc_is_chain ();
0x00016f8c cmp r0, 0 |
| if (r0 == 0) {
0x00016f90 beq 0x16fe4 | goto label_114;
| }
| label_18:
0x00016f94 ldr r0, [sp, 0x164] | r0 = var_164h;
0x00016f98 bl 0x1bbdc | fcn_0001bbdc (r0);
0x00016f9c b 0x16fb4 | goto label_115;
0x00016fa0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016fa4 ldr r1, [r3] | r1 = *(r3);
0x00016fa8 bl 0x12748 | r0 = iptc_is_chain ();
0x00016fac cmp r0, 0 |
0x00016fb0 bne 0x16f3c |
| }
| label_115:
0x00016fb4 ldr r3, [sp, 0x164] | r3 = var_164h;
0x00016fb8 cmp r3, 0 |
| if (r3 != 0) {
0x00016fbc bne 0x17100 | goto label_113;
| }
0x00016fc0 ldrb r5, [sp, 0xe2] | r5 = var_e2h;
0x00016fc4 ldr r2, [sp, 0x180] | r2 = src;
0x00016fc8 ands r5, r5, 2 | r5 &= 2;
| if (r5 != r5) {
0x00016fcc beq 0x16ff8 |
0x00016fd0 ldr r3, [pc, -0x240] | r3 = obj.xt_params;
0x00016fd4 ldr r1, [pc, -0x240] | r1 = "goto '%s' is not a chain\n";
0x00016fd8 ldr r3, [r3] | r3 = *(r3);
0x00016fdc ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00016fe0 b 0x16328 | goto label_7;
| label_114:
0x00016fe4 ldr r3, [sp, 0x164] | r3 = var_164h;
0x00016fe8 ldr r2, [r3, 0x58] | r2 = *((r3 + 0x58));
0x00016fec ldrb r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00016ff0 strb r3, [r2, 0x1f] | *((r2 + 0x1f)) = r3;
0x00016ff4 b 0x16f94 | goto label_18;
| }
0x00016ff8 mov r1, 3 | r1 = 3;
0x00016ffc mov r0, r2 | r0 = r2;
0x00017000 bl 0x12280 | xtables_find_target ();
| label_21:
0x00017004 ldr r4, [sp, 0x68] | r4 = var_68h;
0x00017008 cmp r4, 0x100 |
| if (r4 == 0x100) {
0x0001700c beq 0x17a9c | goto label_116;
| }
| if (r4 > 0x100) {
0x00017010 bhi 0x172c8 | goto label_117;
| }
0x00017014 cmp r4, 0x10 |
| if (r4 == 0x10) {
0x00017018 beq 0x174bc | goto label_118;
| }
| if (r4 > 0x10) {
0x0001701c bhi 0x17230 | goto label_119;
| }
0x00017020 cmp r4, 2 |
| if (r4 == 2) {
0x00017024 beq 0x175e0 | goto label_120;
| }
0x00017028 sub r8, fp, 1 | r8 = fp - 1;
| if (r4 > 2) {
0x0001702c bhi 0x171b8 | goto label_121;
| }
0x00017030 cmp r4, 1 |
| if (r4 != 1) {
0x00017034 bne 0x1695c | goto label_19;
| }
0x00017038 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0001703c ldrd r6, r7, [sp, 0x58] | __asm ("ldrd r6, r7, [ptr]");
0x00017040 ldr fp, [sp, 0x60] | fp = var_60h;
0x00017044 str r3, [sp, 0x3c] | var_3ch = r3;
0x00017048 ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001704c sub r7, r7, 4 | r7 -= 4;
0x00017050 and r3, r3, 0x20 | r3 &= 0x20;
0x00017054 str r3, [sp, 0x40] | var_40h = r3;
0x00017058 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001705c ldr r3, [r3] | r3 = *(r3);
0x00017060 str r3, [sp, 0x34] | var_34h = r3;
0x00017064 ldr r3, [sp, 0x50] | r3 = var_50h;
0x00017068 add r3, r6, r3, lsl 2 | r3 = r6 + (r3 << 2);
0x0001706c str r3, [sp, 0x44] | var_44h = r3;
0x00017070 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00017074 add r3, fp, r3, lsl 2 | r3 = fp + (r3 << 2);
0x00017078 str r3, [sp, 0x48] | var_48h = r3;
| do {
0x0001707c ldr r3, [sp, 0x44] | r3 = var_44h;
0x00017080 cmp r6, r3 |
| if (r6 == r3) {
0x00017084 beq 0x17514 | goto label_30;
| }
0x00017088 ldr r3, [r6], 4 | r3 = *(r6);
| r6 += 4;
0x0001708c mov sb, fp | sb = fp;
0x00017090 str r3, [r5] | *(r5) = r3;
0x00017094 ldr r3, [r7, 4]! | r3 = *((r7 += 4));
0x00017098 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0001709c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000170a0 sub r3, r3, 4 | r3 -= 4;
0x000170a4 str r3, [sp, 0x38] | var_38h = r3;
| label_20:
0x000170a8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000170ac cmp sb, r3 |
0x000170b0 beq 0x1707c |
| } while (sb == r3);
0x000170b4 ldr r3, [sb], 4 | r3 = *(sb);
| sb += 4;
0x000170b8 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000170bc str r3, [r5, 4] | *((r5 + 4)) = r3;
0x000170c0 ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x000170c4 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x000170c8 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000170cc str r2, [sp, 0x38] | var_38h = r2;
0x000170d0 cmp r3, 0 |
| if (r3 != 0) {
0x000170d4 beq 0x170e4 |
0x000170d8 ldr r1, [sp, 0x34] | r1 = var_34h;
0x000170dc mov r0, r5 | r0 = r5;
0x000170e0 bl 0x153c0 | fcn_000153c0 (r0, r1);
| }
0x000170e4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000170e8 mov r2, r8 | r2 = r8;
0x000170ec mov r1, r5 | r1 = r5;
0x000170f0 mov r0, sl | r0 = sl;
0x000170f4 bl 0x12784 | r0 = iptc_insert_entry ();
0x000170f8 and r4, r4, r0 | r4 &= r0;
0x000170fc b 0x170a8 | goto label_20;
| label_113:
0x00017100 ldr r7, [sp, 0x15c] | r7 = var_15ch;
0x00017104 ldr r8, [r3, 0x58] | r8 = *((r3 + 0x58));
0x00017108 mov r6, r7 | r6 = r7;
0x0001710c mov r4, 0x70 | r4 = 0x70;
| do {
0x00017110 cmp r6, 0 |
| if (r6 == 0) {
0x00017114 bne 0x17178 |
0x00017118 ldrh r0, [r8] | r0 = *(r8);
0x0001711c add r0, r0, r4 | r0 += r4;
0x00017120 bl 0x124a8 | xtables_malloc ();
0x00017124 mov r2, 0x70 | r2 = 0x70;
0x00017128 add r1, sp, 0x90 | r1 += s2;
0x0001712c lsl r4, r4, 0x10 | r4 <<= 0x10;
0x00017130 lsr r4, r4, 0x10 | r4 >>= 0x10;
0x00017134 mov r5, r0 | r5 = r0;
0x00017138 bl 0x12370 | memcpy (r0, r1, r2);
0x0001713c ldrh r3, [r8] | r3 = *(r8);
0x00017140 strh r4, [r5, 0x58] | *((r5 + 0x58)) = r4;
0x00017144 add r4, r4, r3 | r4 += r3;
0x00017148 strh r4, [r5, 0x5a] | *((r5 + 0x5a)) = r4;
0x0001714c add r4, r5, 0x70 | r4 = r5 + 0x70;
| label_22:
0x00017150 cmp r7, 0 |
0x00017154 add r0, r4, r6 | r0 = r4 + r6;
| if (r7 != 0) {
0x00017158 bne 0x17190 | goto label_122;
| }
0x0001715c ldrh r2, [r8] | r2 = *(r8);
0x00017160 mov r1, r8 | r1 = r8;
0x00017164 bl 0x12370 | memcpy (r0, r1, r2);
0x00017168 ldr r3, [sp, 0x164] | r3 = var_164h;
0x0001716c ldr r0, [r3, 0x58] | r0 = *((r3 + 0x58));
0x00017170 bl 0x1285c | free (r0);
0x00017174 b 0x17004 | goto label_21;
| }
0x00017178 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0001717c ldr r6, [r6] | r6 = *(r6);
0x00017180 ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
0x00017184 ldrh r3, [r3] | r3 = *(r3);
0x00017188 add r4, r4, r3 | r4 += r3;
0x0001718c b 0x17110 |
| } while (1);
| label_122:
0x00017190 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00017194 ldr r1, [r3, 0x58] | r1 = *((r3 + 0x58));
0x00017198 ldrh r2, [r1] | r2 = *(r1);
0x0001719c bl 0x12370 | memcpy (r0, r1, r2);
0x000171a0 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000171a4 ldr r7, [r7] | r7 = *(r7);
0x000171a8 ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
0x000171ac ldrh r3, [r3] | r3 = *(r3);
0x000171b0 add r6, r6, r3 | r6 += r3;
0x000171b4 b 0x17150 | goto label_22;
| label_121:
0x000171b8 cmp r4, 4 |
| if (r4 == 4) {
0x000171bc beq 0x176cc | goto label_123;
| }
0x000171c0 cmp r4, 8 |
| if (r4 != 8) {
0x000171c4 bne 0x1695c | goto label_19;
| }
0x000171c8 ldr ip, [sp, 0x2c] | ip = var_2ch;
0x000171cc ldr r0, [sp, 0x60] | r0 = var_60h;
0x000171d0 ldr r4, [ip] | r4 = *(ip);
0x000171d4 ldr ip, [sp, 0x58] | ip = ptr;
0x000171d8 ldr r3, [sp, 0x158] | r3 = var_158h;
0x000171dc ldr ip, [ip] | ip = *(ip);
0x000171e0 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x000171e4 ldr r2, [sp, 0x64] | r2 = var_64h;
0x000171e8 str ip, [r5] | *(r5) = ip;
0x000171ec ldr r0, [r0] | r0 = *(r0);
0x000171f0 tst r3, 0x20 |
0x000171f4 str r0, [r5, 4] | *((r5 + 4)) = r0;
0x000171f8 ldr r1, [r1] | r1 = *(r1);
0x000171fc str r1, [r5, 8] | *((r5 + 8)) = r1;
0x00017200 ldr r2, [r2] | r2 = *(r2);
0x00017204 str r2, [r5, 0xc] | *((r5 + 0xc)) = r2;
| if ((r3 & 0x20) != 0) {
0x00017208 beq 0x17218 |
0x0001720c mov r1, r4 | r1 = r4;
0x00017210 mov r0, r5 | r0 = r5;
0x00017214 bl 0x153c0 | fcn_000153c0 (r0, r1);
| }
0x00017218 mov r3, r4 | r3 = r4;
0x0001721c mov r2, r8 | r2 = r8;
0x00017220 mov r1, r5 | r1 = r5;
0x00017224 mov r0, sl | r0 = sl;
0x00017228 bl 0x127b4 | iptc_replace_entry ();
0x0001722c b 0x176e0 | goto label_32;
| label_119:
0x00017230 cmp r4, 0x40 |
0x00017234 ldr r1, [sp, 0x158] | r1 = var_158h;
| if (r4 == 0x40) {
0x00017238 beq 0x176e8 | goto label_124;
| }
| if (r4 > 0x40) {
0x0001723c bhi 0x172b8 | goto label_125;
| }
0x00017240 cmp r4, 0x20 |
| if (r4 != 0x20) {
| label_23:
0x00017244 bne 0x1695c | goto label_19;
| }
| label_26:
0x00017248 ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001724c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00017250 tst r3, 0x20 |
0x00017254 ldr r7, [r0] | r7 = *(r0);
| if ((r3 & 0x20) == 0) {
0x00017258 movne r6, 0x48 | r6 = 0x48;
| }
| if ((r3 & 0x20) != 0) {
0x0001725c moveq r6, 0xa | r6 = 0xa;
| }
0x00017260 and r1, r3, 0x40 | r1 = r3 & 0x40;
0x00017264 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x00017268 orrne r6, r6, 1 | r6 |= 1;
| }
0x0001726c and r2, r3, 0x200 | r2 = r3 & 0x200;
0x00017270 cmp r1, 0 |
| if (r1 != 0) {
0x00017274 orreq r6, r6, 4 | r6 |= 4;
| }
0x00017278 mov r0, r7 | r0 = r7;
0x0001727c cmp r2, 0 |
| if (r2 == 0) {
0x00017280 orrne r6, r6, 0x100 | r6 |= 0x100;
| }
0x00017284 bl 0x124cc | iptc_first_chain ();
0x00017288 ldr sb, [pc, -0x4f0] | sb = obj.stdout;
0x0001728c mov r4, 0 | r4 = 0;
0x00017290 mov r8, r0 | r8 = r0;
| label_33:
0x00017294 cmp r8, 0 |
| if (r8 != 0) {
0x00017298 bne 0x17718 | goto label_126;
| }
| label_24:
0x0001729c bl 0x12754 | errno_location ();
0x000172a0 mov r3, 2 | r3 = 2;
0x000172a4 cmp r4, 0 |
0x000172a8 str r3, [r0] | *(r0) = r3;
| if (r4 != 0) {
0x000172ac bne 0x17a60 | goto label_127;
| }
| label_42:
0x000172b0 mov r4, 0 | r4 = 0;
0x000172b4 b 0x17514 | goto label_30;
| label_125:
0x000172b8 cmp r4, 0x80 |
| if (r4 == 0x80) {
0x000172bc beq 0x17700 | goto label_128;
| }
0x000172c0 cmp r4, 0xa0 |
0x000172c4 b 0x17244 | goto label_23;
| label_117:
0x000172c8 cmp r4, 0x1080 |
| if (r4 == 0x1080) {
0x000172cc beq 0x17314 | goto label_27;
| }
| if (r4 > 0x1080) {
0x000172d0 bhi 0x1739c | goto label_129;
| }
0x000172d4 cmp r4, 0x400 |
| if (r4 == 0x400) {
0x000172d8 beq 0x17ac8 | goto label_130;
| }
| if (r4 > 0x400) {
0x000172dc bhi 0x17304 | goto label_131;
| }
0x000172e0 cmp r4, 0x200 |
| if (r4 != 0x200) {
0x000172e4 bne 0x1695c | goto label_19;
| }
0x000172e8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000172ec ldr r1, [sp, 0x158] | r1 = var_158h;
0x000172f0 ldr r2, [r3] | r2 = *(r3);
0x000172f4 and r1, r1, 0x20 | r1 &= 0x20;
0x000172f8 mov r0, sl | r0 = sl;
0x000172fc bl 0x158b8 | fcn_000158b8 (r0, r1);
0x00017300 b 0x176e0 | goto label_32;
| label_131:
0x00017304 cmp r4, 0x800 |
| if (r4 == 0x800) {
0x00017308 beq 0x17ab0 | goto label_132;
| }
0x0001730c cmp r4, 0x1000 |
| if (r4 != 0x1000) {
0x00017310 bne 0x1695c | goto label_19;
| }
| label_27:
0x00017314 ldr r7, [sp, 0x158] | r7 = var_158h;
0x00017318 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001731c ldr r6, [r3] | r6 = *(r3);
0x00017320 and r3, r7, 0x20 | r3 = r7 & 0x20;
0x00017324 ands r7, r7, 0x20 | r7 &= 0x20;
| if (r7 == r7) {
0x00017328 mvnne r7, 0 | r7 = ~0;
| }
0x0001732c cmp fp, 0 |
0x00017330 str r3, [sp, 0x34] | var_34h = r3;
| if (fp == 0) {
0x00017334 beq 0x17974 | goto label_133;
| }
| label_39:
0x00017338 mov r0, r6 | r0 = r6;
0x0001733c bl 0x124cc | iptc_first_chain ();
0x00017340 mov r4, 0 | r4 = 0;
0x00017344 mov r8, r0 | r8 = r0;
| label_25:
0x00017348 cmp r8, 0 |
| if (r8 == 0) {
0x0001734c beq 0x1729c | goto label_24;
| }
0x00017350 cmp sl, 0 |
| if (sl != 0) {
0x00017354 beq 0x1736c |
0x00017358 mov r1, sl | r1 = sl;
0x0001735c mov r0, r8 | r0 = r8;
0x00017360 bl 0x1264c | r0 = strcmp (r0, r1);
0x00017364 cmp r0, 0 |
| if (r0 != 0) {
0x00017368 bne 0x1738c | goto label_134;
| }
| }
0x0001736c mov r1, r6 | r1 = r6;
0x00017370 mov r0, r8 | r0 = r8;
0x00017374 bl 0x12724 | iptc_first_rule ();
0x00017378 mov sb, 0 | sb = 0;
0x0001737c mov r4, r0 | r4 = r0;
| label_41:
0x00017380 cmp r4, 0 |
| if (r4 != 0) {
0x00017384 bne 0x17a28 | goto label_135;
| }
0x00017388 mov r4, 1 | r4 = 1;
| label_134:
0x0001738c mov r0, r6 | r0 = r6;
0x00017390 bl 0x122d4 | r0 = iptc_next_chain ();
0x00017394 mov r8, r0 | r8 = r0;
0x00017398 b 0x17348 | goto label_25;
| label_129:
0x0001739c ldr r3, [pc, -0x600] | r3 = *(0x00016da4);
0x000173a0 cmp r4, r3 |
| if (r4 == r3) {
0x000173a4 beq 0x17248 | goto label_26;
| }
| if (r4 > r3) {
0x000173a8 bhi 0x173cc | goto label_136;
| }
0x000173ac cmp r4, 0x2000 |
| if (r4 != 0x2000) {
0x000173b0 bne 0x1695c | goto label_19;
| }
| label_43:
0x000173b4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000173b8 mov r1, fp | r1 = fp;
0x000173bc ldr r2, [r3] | r2 = *(r3);
0x000173c0 mov r0, sl | r0 = sl;
0x000173c4 bl 0x12634 | iptc_zero_counter ();
0x000173c8 b 0x176e0 | goto label_32;
| label_136:
0x000173cc cmp r4, 0x3000 |
| if (r4 == 0x3000) {
0x000173d0 beq 0x17314 | goto label_27;
| }
0x000173d4 cmp r4, 0x4000 |
| if (r4 != 0x4000) {
0x000173d8 bne 0x1695c | goto label_19;
| }
0x000173dc ldr r3, [sp, 0x60] | r3 = var_60h;
0x000173e0 ldr r1, [sp, 0x164] | r1 = var_164h;
0x000173e4 str r3, [sp, 0x34] | var_34h = r3;
0x000173e8 ldr r3, [sp, 0x64] | r3 = var_64h;
0x000173ec ldr r0, [sp, 0x15c] | r0 = var_15ch;
0x000173f0 str r3, [sp, 0x3c] | var_3ch = r3;
0x000173f4 ldr r3, [sp, 0x158] | r3 = var_158h;
0x000173f8 ldrd r6, r7, [sp, 0x58] | __asm ("ldrd r6, r7, [ptr]");
0x000173fc ldr r4, [sp, 0x54] | r4 = var_54h;
0x00017400 and r3, r3, 0x20 | r3 &= 0x20;
0x00017404 str r3, [sp, 0x40] | var_40h = r3;
0x00017408 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001740c ldr r8, [sp, 0x50] | r8 = var_50h;
0x00017410 ldr fp, [r3] | fp = *(r3);
0x00017414 bl 0x153e8 | fcn_000153e8 (r0, r1);
0x00017418 add r3, r6, r8, lsl 2 | r3 = r6 + (r8 << 2);
0x0001741c str r3, [sp, 0x44] | var_44h = r3;
0x00017420 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00017424 sub r7, r7, 4 | r7 -= 4;
0x00017428 add r3, r3, r4, lsl 2 | r3 += (r4 << 2);
0x0001742c mov r4, 1 | r4 = 1;
0x00017430 str r3, [sp, 0x48] | var_48h = r3;
0x00017434 mov sb, r0 | sb = r0;
| do {
0x00017438 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001743c cmp r3, r6 |
| if (r3 == r6) {
0x00017440 beq 0x17648 | goto label_137;
| }
0x00017444 ldr r3, [r6], 4 | r3 = *(r6);
| r6 += 4;
0x00017448 ldr r8, [sp, 0x34] | r8 = var_34h;
0x0001744c str r3, [r5] | *(r5) = r3;
0x00017450 ldr r3, [r7, 4]! | r3 = *((r7 += 4));
0x00017454 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x00017458 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001745c sub r3, r3, 4 | r3 -= 4;
0x00017460 str r3, [sp, 0x38] | var_38h = r3;
| label_28:
0x00017464 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00017468 cmp r3, r8 |
0x0001746c beq 0x17438 |
| } while (r3 == r8);
0x00017470 ldr r3, [r8], 4 | r3 = *(r8);
| r8 += 4;
0x00017474 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00017478 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0001747c ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x00017480 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x00017484 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00017488 str r2, [sp, 0x38] | var_38h = r2;
0x0001748c cmp r3, 0 |
| if (r3 != 0) {
0x00017490 beq 0x174a0 |
0x00017494 mov r1, fp | r1 = fp;
0x00017498 mov r0, r5 | r0 = r5;
0x0001749c bl 0x153c0 | fcn_000153c0 (r0, r1);
| }
0x000174a0 mov r3, fp | r3 = fp;
0x000174a4 mov r2, sb | r2 = sb;
0x000174a8 mov r1, r5 | r1 = r5;
0x000174ac mov r0, sl | r0 = sl;
0x000174b0 bl 0x123b8 | r0 = iptc_check_entry ();
0x000174b4 and r4, r4, r0 | r4 &= r0;
0x000174b8 b 0x17464 | goto label_28;
| label_118:
0x000174bc ldr r3, [sp, 0x64] | r3 = var_64h;
0x000174c0 ldrd r6, r7, [sp, 0x58] | __asm ("ldrd r6, r7, [ptr]");
0x000174c4 str r3, [sp, 0x38] | var_38h = r3;
0x000174c8 ldr r3, [sp, 0x158] | r3 = var_158h;
0x000174cc sub r7, r7, 4 | r7 -= 4;
0x000174d0 and r3, r3, 0x20 | r3 &= 0x20;
0x000174d4 str r3, [sp, 0x3c] | var_3ch = r3;
0x000174d8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000174dc mov r4, 1 | r4 = 1;
0x000174e0 ldr sb, [r3] | sb = *(r3);
0x000174e4 ldr r3, [sp, 0x50] | r3 = var_50h;
0x000174e8 add r3, r6, r3, lsl 2 | r3 = r6 + (r3 << 2);
0x000174ec str r3, [sp, 0x40] | var_40h = r3;
0x000174f0 ldr r3, [sp, 0x60] | r3 = var_60h;
0x000174f4 str r3, [sp, 0x34] | var_34h = r3;
0x000174f8 ldr r2, [sp, 0x34] | r2 = var_34h;
0x000174fc ldr r3, [sp, 0x54] | r3 = var_54h;
0x00017500 add r3, r2, r3, lsl 2 | r3 = r2 + (r3 << 2);
0x00017504 str r3, [sp, 0x44] | var_44h = r3;
| do {
0x00017508 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001750c cmp r3, r6 |
| if (r3 == r6) {
0x00017510 bne 0x17578 |
| label_30:
0x00017514 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00017518 cmp r3, 1 |
| if (r3 > 1) {
0x0001751c ble 0x1752c |
0x00017520 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017524 ldr r0, [r3] | r0 = *(r3);
0x00017528 bl 0x123c4 | dump_entries ();
| }
0x0001752c add r0, sp, 0x15c | r0 += var_15ch;
0x00017530 bl 0x1228c | xtables_rule_matches_free ();
0x00017534 cmp r5, 0 |
| if (r5 != 0) {
0x00017538 beq 0x17544 |
0x0001753c mov r0, r5 | r0 = r5;
0x00017540 bl 0x1285c | free (r0);
| }
0x00017544 ldr r0, [sp, 0x58] | r0 = ptr;
0x00017548 bl 0x1285c | free (r0);
0x0001754c ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x00017550 bl 0x1285c | free (r0);
0x00017554 ldr r0, [sp, 0x60] | r0 = var_60h;
0x00017558 bl 0x1285c | free (r0);
0x0001755c ldr r0, [sp, 0x64] | r0 = var_64h;
0x00017560 bl 0x1285c | free (r0);
0x00017564 mov r0, 1 | r0 = 1;
0x00017568 bl 0x125f8 | xtables_free_opts ();
| label_100:
0x0001756c mov r0, r4 | r0 = r4;
0x00017570 add sp, sp, 0x194 |
0x00017574 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00017578 ldr r3, [r6], 4 | r3 = *(r6);
| r6 += 4;
0x0001757c ldr r8, [sp, 0x34] | r8 = var_34h;
0x00017580 str r3, [r5] | *(r5) = r3;
0x00017584 ldr r3, [r7, 4]! | r3 = *((r7 += 4));
0x00017588 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0001758c ldr r3, [sp, 0x38] | r3 = var_38h;
0x00017590 sub fp, r3, 4 |
| label_29:
0x00017594 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00017598 cmp r8, r3 |
0x0001759c beq 0x17508 |
| } while (r8 == r3);
0x000175a0 ldr r2, [r8], 4 | r2 = *(r8);
| r8 += 4;
0x000175a4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000175a8 str r2, [r5, 4] | *((r5 + 4)) = r2;
0x000175ac ldr r2, [fp, 4]! | r2 = *(arg_4h);
0x000175b0 cmp r3, 0 |
0x000175b4 str r2, [r5, 0xc] | *((r5 + 0xc)) = r2;
| if (r3 != 0) {
0x000175b8 beq 0x175c8 |
0x000175bc mov r1, sb | r1 = sb;
0x000175c0 mov r0, r5 | r0 = r5;
0x000175c4 bl 0x153c0 | fcn_000153c0 (r0, r1);
| }
0x000175c8 mov r2, sb | r2 = sb;
0x000175cc mov r1, r5 | r1 = r5;
0x000175d0 mov r0, sl | r0 = sl;
0x000175d4 bl 0x12538 | r0 = iptc_append_entry ();
0x000175d8 and r4, r4, r0 | r4 &= r0;
0x000175dc b 0x17594 | goto label_29;
| label_120:
0x000175e0 ldr r3, [sp, 0x60] | r3 = var_60h;
0x000175e4 ldr r1, [sp, 0x164] | r1 = var_164h;
0x000175e8 str r3, [sp, 0x34] | var_34h = r3;
0x000175ec ldr r3, [sp, 0x64] | r3 = var_64h;
0x000175f0 ldr r0, [sp, 0x15c] | r0 = var_15ch;
0x000175f4 str r3, [sp, 0x3c] | var_3ch = r3;
0x000175f8 ldr r3, [sp, 0x158] | r3 = var_158h;
0x000175fc ldrd r6, r7, [sp, 0x58] | __asm ("ldrd r6, r7, [ptr]");
0x00017600 ldr r4, [sp, 0x54] | r4 = var_54h;
0x00017604 and r3, r3, 0x20 | r3 &= 0x20;
0x00017608 str r3, [sp, 0x40] | var_40h = r3;
0x0001760c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017610 ldr r8, [sp, 0x50] | r8 = var_50h;
0x00017614 ldr fp, [r3] | fp = *(r3);
0x00017618 bl 0x153e8 | fcn_000153e8 (r0, r1);
0x0001761c add r3, r6, r8, lsl 2 | r3 = r6 + (r8 << 2);
0x00017620 str r3, [sp, 0x48] | var_48h = r3;
0x00017624 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00017628 sub r7, r7, 4 | r7 -= 4;
0x0001762c add r3, r3, r4, lsl 2 | r3 += (r4 << 2);
0x00017630 mov r4, 1 | r4 = 1;
0x00017634 str r3, [sp, 0x44] | var_44h = r3;
0x00017638 mov sb, r0 | sb = r0;
| do {
0x0001763c ldr r3, [sp, 0x48] | r3 = var_48h;
0x00017640 cmp r6, r3 |
| if (r6 == r3) {
0x00017644 bne 0x17654 |
| label_137:
0x00017648 mov r0, sb | r0 = sb;
0x0001764c bl 0x1285c | free (r0);
0x00017650 b 0x17514 | goto label_30;
| }
0x00017654 ldr r3, [r6], 4 | r3 = *(r6);
| r6 += 4;
0x00017658 ldr r8, [sp, 0x34] | r8 = var_34h;
0x0001765c str r3, [r5] | *(r5) = r3;
0x00017660 ldr r3, [r7, 4]! | r3 = *((r7 += 4));
0x00017664 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x00017668 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001766c sub r3, r3, 4 | r3 -= 4;
0x00017670 str r3, [sp, 0x38] | var_38h = r3;
| label_31:
0x00017674 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00017678 cmp r3, r8 |
0x0001767c beq 0x1763c |
| } while (r3 == r8);
0x00017680 ldr r3, [r8], 4 | r3 = *(r8);
| r8 += 4;
0x00017684 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00017688 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0001768c ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x00017690 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x00017694 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00017698 str r2, [sp, 0x38] | var_38h = r2;
0x0001769c cmp r3, 0 |
| if (r3 != 0) {
0x000176a0 beq 0x176b0 |
0x000176a4 mov r1, fp | r1 = fp;
0x000176a8 mov r0, r5 | r0 = r5;
0x000176ac bl 0x153c0 | fcn_000153c0 (r0, r1);
| }
0x000176b0 mov r3, fp | r3 = fp;
0x000176b4 mov r2, sb | r2 = sb;
0x000176b8 mov r1, r5 | r1 = r5;
0x000176bc mov r0, sl | r0 = sl;
0x000176c0 bl 0x12424 | r0 = iptc_delete_entry ();
0x000176c4 and r4, r4, r0 | r4 &= r0;
0x000176c8 b 0x17674 | goto label_31;
| label_123:
0x000176cc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000176d0 mov r1, r8 | r1 = r8;
0x000176d4 ldr r2, [r3] | r2 = *(r3);
0x000176d8 mov r0, sl | r0 = sl;
0x000176dc bl 0x12334 | r0 = iptc_delete_num_entry ();
| do {
| label_32:
0x000176e0 mov r4, r0 | r4 = r0;
0x000176e4 b 0x17514 | goto label_30;
| label_124:
0x000176e8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000176ec and r1, r1, 0x20 | r1 &= 0x20;
0x000176f0 ldr r2, [r3] | r2 = *(r3);
0x000176f4 mov r0, sl | r0 = sl;
0x000176f8 bl 0x1585c | fcn_0001585c (r0, r1);
0x000176fc b 0x176e0 |
| } while (1);
| label_128:
0x00017700 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017704 and r1, r1, 0x20 | r1 &= 0x20;
0x00017708 ldr r2, [r3] | r2 = *(r3);
0x0001770c mov r0, sl | r0 = sl;
0x00017710 bl 0x1590c | fcn_0001590c (r0, r1);
0x00017714 b 0x176e0 | goto label_32;
| label_126:
0x00017718 cmp sl, 0 |
| if (sl != 0) {
0x0001771c beq 0x17734 |
0x00017720 mov r1, r8 | r1 = r8;
0x00017724 mov r0, sl | r0 = sl;
0x00017728 bl 0x1264c | r0 = strcmp (r0, r1);
0x0001772c cmp r0, 0 |
| if (r0 != 0) {
0x00017730 bne 0x178c4 | goto label_138;
| }
| }
0x00017734 cmp r4, 0 |
| if (r4 != 0) {
0x00017738 beq 0x17744 |
0x0001773c mov r0, 0xa | r0 = 0xa;
0x00017740 bl 0x1225c | putchar (r0);
| }
0x00017744 cmp fp, 0 |
| if (fp != 0) {
0x00017748 bne 0x178a4 | goto label_139;
| }
0x0001774c mov r2, r7 | r2 = r7;
0x00017750 add r1, sp, 0x80 | r1 += var_80h;
0x00017754 mov r0, r8 | r0 = r8;
0x00017758 bl 0x1237c | iptc_get_policy ();
0x0001775c mov r1, r8 | r1 = r8;
0x00017760 and r4, r6, 2 | r4 = r6 & 2;
0x00017764 str r0, [sp, 0x34] | var_34h = r0;
0x00017768 ldr r0, [pc, -0x9c8] | r0 = "Chain %s";
0x0001776c bl 0x122b0 | printf (r0, r1, r2, r3, r4);
0x00017770 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00017774 cmp r3, 0 |
| if (r3 == 0) {
0x00017778 beq 0x178ec | goto label_140;
| }
0x0001777c mov r1, r3 | r1 = r3;
0x00017780 ldr r0, [pc, -0x9dc] | r0 = "_policy__s";
0x00017784 bl 0x122b0 | printf ("_policy__s", r1);
0x00017788 cmp r4, 0 |
| if (r4 != 0) {
0x0001778c bne 0x177fc | goto label_141;
| }
0x00017790 ldr r1, [sb] | r1 = *(sb);
0x00017794 ldr r3, [r1, 0x34] | r3 = *((r1 + 0x34));
0x00017798 cmp r3, 0 |
| if (r3 == 0) {
0x0001779c beq 0x178e0 | goto label_142;
| }
0x000177a0 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x000177a4 ldr r2, [r1, 0x1c] | r2 = *((r1 + 0x1c));
0x000177a8 cmp r3, r2 |
| if (r3 >= r2) {
0x000177ac bhs 0x178d4 | goto label_143;
| }
0x000177b0 add r2, r3, 1 | r2 = r3 + 1;
0x000177b4 str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
0x000177b8 mov r2, 0x20 | r2 = 0x20;
0x000177bc strb r2, [r3] | *(r3) = r2;
| do {
| label_34:
0x000177c0 orr r3, r6, 0x10 | r3 = r6 | 0x10;
0x000177c4 mov r2, r3 | r2 = r3;
0x000177c8 ldrd r0, r1, [sp, 0x80] | __asm ("ldrd r0, r1, [var_80h]");
0x000177cc str r3, [sp, 0x34] | var_34h = r3;
0x000177d0 bl 0x12304 | xtables_print_num ();
0x000177d4 ldr r1, [sb] | r1 = *(sb);
0x000177d8 ldr r0, [pc, -0xa30] | r0 = "packets__";
0x000177dc bl 0x127d8 | fputs ("packets__", r1);
0x000177e0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000177e4 ldrd r0, r1, [sp, 0x88] | __asm ("ldrd r0, r1, [var_88h]");
0x000177e8 mov r2, r3 | r2 = r3;
0x000177ec bl 0x12304 | xtables_print_num ();
0x000177f0 ldr r1, [sb] | r1 = *(sb);
0x000177f4 ldr r0, [pc, -0x9fc] | r0 = "bytes";
0x000177f8 bl 0x127d8 | fputs ("bytes", r1);
| label_141:
0x000177fc ldr r0, [pc, -0xa50] | r0 = "packets__";
| label_35:
0x00017800 bl 0x123a0 | puts ("packets__");
| label_36:
0x00017804 tst r6, 0x100 |
| if ((r6 & 0x100) != 0) {
0x00017808 beq 0x17818 |
0x0001780c ldr r1, [pc, -0xa5c] | r1 = "num";
0x00017810 ldr r0, [pc, -0xa5c] | r0 = "__4s_";
0x00017814 bl 0x122b0 | printf ("__4s_", "num");
| }
0x00017818 cmp r4, 0 |
| if (r4 == 0) {
0x0001781c bne 0x17840 |
0x00017820 tst r6, 4 |
0x00017824 ldr r1, [pc, -0xa6c] | r1 = "pkts";
| if ((r6 & 4) == 0) {
0x00017828 beq 0x17918 | goto label_144;
| }
0x0001782c ldr r0, [pc, -0xa70] | r0 = "%5s ";
0x00017830 bl 0x122b0 | printf ("%5s ");
0x00017834 ldr r1, [pc, -0xa3c] | r1 = "bytes";
0x00017838 ldr r0, [pc, -0xa7c] | r0 = "%5s ";
| label_37:
0x0001783c bl 0x122b0 | printf ("%5s ", "bytes");
| }
0x00017840 ldr r1, [pc, -0xa80] | r1 = "target";
0x00017844 ldr r0, [pc, -0xa80] | r0 = "%-9s ";
0x00017848 bl 0x122b0 | printf ("%-9s ", "target");
0x0001784c ldr r1, [sb] | r1 = *(sb);
0x00017850 ldr r0, [pc, -0xa88] | r0 = "prot_";
0x00017854 bl 0x127d8 | fputs ("prot_", r1);
0x00017858 ldr r1, [sb] | r1 = *(sb);
0x0001785c ldr r0, [pc, -0xa90] | r0 = "prot_";
0x00017860 bl 0x127d8 | fputs ("prot_", r1);
0x00017864 tst r6, 0x40 |
| if ((r6 & 0x40) != 0) {
0x00017868 beq 0x17884 |
0x0001786c ldr r1, [pc, -0xa9c] | r1 = "in";
0x00017870 ldr r0, [pc, -0xa9c] | r0 = " %-6s ";
0x00017874 bl 0x122b0 | printf (" %-6s ", "in");
0x00017878 ldr r1, [pc, -0xaa0] | r1 = "out";
0x0001787c ldr r0, [pc, -0xaa0] | r0 = "__6s_";
0x00017880 bl 0x122b0 | printf ("__6s_", "out");
| }
0x00017884 ldr r1, [pc, -0xaa4] | r1 = "source";
0x00017888 ldr r0, [pc, -0xaa0] | r0 = " %-19s ";
0x0001788c bl 0x122b0 | printf (" %-19s ", "source");
0x00017890 ldr r1, [pc, -0xaac] | r1 = "destination";
0x00017894 ldr r0, [pc, -0xaac] | r0 = " %-19s ";
0x00017898 bl 0x122b0 | printf (" %-19s ", "destination");
0x0001789c mov r0, 0xa | r0 = 0xa;
0x000178a0 bl 0x1225c | putchar (r0);
| label_139:
0x000178a4 mov r0, r8 | r0 = r8;
0x000178a8 mov r1, r7 | r1 = r7;
0x000178ac bl 0x12724 | iptc_first_rule ();
0x000178b0 mov r8, 0 | r8 = 0;
0x000178b4 mov r4, r0 | r4 = r0;
| label_38:
0x000178b8 cmp r4, 0 |
| if (r4 != 0) {
0x000178bc bne 0x1792c | goto label_145;
| }
0x000178c0 mov r4, 1 | r4 = 1;
| label_138:
0x000178c4 mov r0, r7 | r0 = r7;
0x000178c8 bl 0x122d4 | r0 = iptc_next_chain ();
0x000178cc mov r8, r0 | r8 = r0;
0x000178d0 b 0x17294 | goto label_33;
| label_143:
0x000178d4 mov r0, 0x20 | r0 = 0x20;
0x000178d8 bl 0x12868 | fputc_unlocked ();
0x000178dc b 0x177c0 |
| } while (1);
| label_142:
0x000178e0 mov r0, 0x20 | r0 = 0x20;
0x000178e4 bl 0x126f4 | fputc (r0, r1);
0x000178e8 b 0x177c0 | goto label_34;
| label_140:
0x000178ec mov r2, r7 | r2 = r7;
0x000178f0 mov r1, r8 | r1 = r8;
0x000178f4 add r0, sp, 0x6c | r0 += var_6ch;
0x000178f8 bl 0x1273c | r0 = iptc_get_references ();
0x000178fc cmp r0, 0 |
| if (r0 == 0) {
0x00017900 ldreq r0, [pc, -0xb14] | r0 = " (ERROR obtaining refs)";
| goto label_146;
| }
| if (r0 == 0) {
| label_146:
0x00017904 beq 0x17800 | goto label_35;
| }
0x00017908 ldr r1, [sp, 0x6c] | r1 = var_6ch;
0x0001790c ldr r0, [pc, -0xb1c] | r0 = "__u_references_";
0x00017910 bl 0x122b0 | printf ("__u_references_", r1);
0x00017914 b 0x17804 | goto label_36;
| label_144:
0x00017918 ldr r0, [pc, -0xb24] | r0 = "_8s_";
0x0001791c bl 0x122b0 | printf ("_8s_");
0x00017920 ldr r1, [pc, -0xb28] | r1 = "bytes";
0x00017924 ldr r0, [pc, -0xb28] | r0 = "%10s ";
0x00017928 b 0x1783c | goto label_37;
| label_145:
0x0001792c add r8, r8, 1 | r8++;
0x00017930 cmp fp, r8 |
0x00017934 cmpne fp, 0 | __asm ("cmpne fp, 0");
| if (fp == r8) {
0x00017938 bne 0x17960 |
0x0001793c mov r1, r7 | r1 = r7;
0x00017940 mov r0, r4 | r0 = r4;
0x00017944 bl 0x126b8 | iptc_get_target ();
0x00017948 str r7, [sp] | *(sp) = r7;
0x0001794c mov r3, r6 | r3 = r6;
0x00017950 mov r2, r8 | r2 = r8;
0x00017954 mov r1, r0 | r1 = r0;
0x00017958 mov r0, r4 | r0 = r4;
0x0001795c bl 0x14f14 | fcn_00014f14 (r0, r1, r2, r3, r4);
| }
0x00017960 mov r0, r4 | r0 = r4;
0x00017964 mov r1, r7 | r1 = r7;
0x00017968 bl 0x12388 | r0 = iptc_next_rule ();
0x0001796c mov r4, r0 | r4 = r0;
0x00017970 b 0x178b8 | goto label_38;
| label_133:
0x00017974 mov r0, r6 | r0 = r6;
0x00017978 bl 0x124cc | iptc_first_chain ();
0x0001797c ldr r8, [pc, -0xb7c] | r8 = "_N__s";
0x00017980 ldr sb, [pc, -0xb7c] | sb = "-P %s %s";
0x00017984 mov r4, r0 | r4 = r0;
| label_40:
0x00017988 cmp r4, 0 |
| if (r4 == 0) {
0x0001798c beq 0x17338 | goto label_39;
| }
0x00017990 cmp sl, 0 |
| if (sl != 0) {
0x00017994 beq 0x179ac |
0x00017998 mov r1, sl | r1 = sl;
0x0001799c mov r0, r4 | r0 = r4;
0x000179a0 bl 0x1264c | r0 = strcmp (r0, r1);
0x000179a4 cmp r0, 0 |
| if (r0 != 0) {
0x000179a8 bne 0x17a08 | goto label_147;
| }
| }
0x000179ac mov r1, r6 | r1 = r6;
0x000179b0 mov r0, r4 | r0 = r4;
0x000179b4 bl 0x12718 | r0 = iptc_builtin ();
0x000179b8 cmp r0, 0 |
| if (r0 == 0) {
0x000179bc beq 0x17a18 | goto label_148;
| }
0x000179c0 mov r2, r6 | r2 = r6;
0x000179c4 add r1, sp, 0x80 | r1 += var_80h;
0x000179c8 mov r0, r4 | r0 = r4;
0x000179cc bl 0x1237c | iptc_get_policy ();
0x000179d0 mov r1, r4 | r1 = r4;
0x000179d4 mov r2, r0 | r2 = r0;
0x000179d8 mov r0, sb | r0 = sb;
0x000179dc bl 0x122b0 | printf (r0, r1, r2);
0x000179e0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000179e4 cmp r3, 0 |
| if (r3 != 0) {
0x000179e8 beq 0x17a00 |
0x000179ec ldrd r2, r3, [sp, 0x88] | __asm ("ldrd r2, r3, [var_88h]");
0x000179f0 ldr r0, [pc, -0xbe8] | r0 = " -c %llu %llu";
0x000179f4 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x000179f8 ldrd r2, r3, [sp, 0x80] | __asm ("ldrd r2, r3, [var_80h]");
0x000179fc bl 0x122b0 | printf (" -c %llu %llu", r1, r2);
| }
0x00017a00 mov r0, 0xa | r0 = 0xa;
0x00017a04 bl 0x1225c | putchar (r0);
| do {
| label_147:
0x00017a08 mov r0, r6 | r0 = r6;
0x00017a0c bl 0x122d4 | r0 = iptc_next_chain ();
0x00017a10 mov r4, r0 | r4 = r0;
0x00017a14 b 0x17988 | goto label_40;
| label_148:
0x00017a18 mov r1, r4 | r1 = r4;
0x00017a1c mov r0, r8 | r0 = r8;
0x00017a20 bl 0x122b0 | printf (r0, r1);
0x00017a24 b 0x17a08 |
| } while (1);
| label_135:
0x00017a28 add sb, sb, 1 | sb++;
0x00017a2c cmp fp, sb |
0x00017a30 cmpne fp, 0 | __asm ("cmpne fp, 0");
| if (fp == sb) {
0x00017a34 bne 0x17a4c |
0x00017a38 mov r3, r7 | r3 = r7;
0x00017a3c mov r2, r8 | r2 = r8;
0x00017a40 mov r1, r6 | r1 = r6;
0x00017a44 mov r0, r4 | r0 = r4;
0x00017a48 bl 0x15968 | fcn_00015968 (r0, r1);
| }
0x00017a4c mov r0, r4 | r0 = r4;
0x00017a50 mov r1, r6 | r1 = r6;
0x00017a54 bl 0x12388 | r0 = iptc_next_rule ();
0x00017a58 mov r4, r0 | r4 = r0;
0x00017a5c b 0x17380 | goto label_41;
| label_127:
0x00017a60 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00017a64 tst r3, 0x80 |
| if ((r3 & 0x80) == 0) {
0x00017a68 beq 0x17a8c | goto label_149;
| }
0x00017a6c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017a70 ldr r1, [sp, 0x158] | r1 = var_158h;
0x00017a74 ldr r2, [r3] | r2 = *(r3);
0x00017a78 and r1, r1, 0x20 | r1 &= 0x20;
0x00017a7c mov r0, sl | r0 = sl;
0x00017a80 bl 0x1590c | r0 = fcn_0001590c (r0, r1);
0x00017a84 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00017a88 beq 0x172b0 | goto label_42;
| }
| label_149:
0x00017a8c ldr r3, [sp, 0x68] | r3 = var_68h;
0x00017a90 tst r3, 0x2000 |
| if ((r3 & 0x2000) == 0) {
0x00017a94 beq 0x17514 | goto label_30;
| }
0x00017a98 b 0x173b4 | goto label_43;
| label_116:
0x00017a9c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017aa0 mov r0, sl | r0 = sl;
0x00017aa4 ldr r1, [r3] | r1 = *(r3);
0x00017aa8 bl 0x12598 | iptc_create_chain ();
0x00017aac b 0x176e0 | goto label_32;
| label_132:
0x00017ab0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017ab4 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00017ab8 ldr r2, [r3] | r2 = *(r3);
0x00017abc mov r0, sl | r0 = sl;
0x00017ac0 bl 0x12568 | iptc_rename_chain ();
0x00017ac4 b 0x176e0 | goto label_32;
| label_130:
0x00017ac8 ldr r2, [sp, 0x158] | r2 = var_158h;
0x00017acc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017ad0 ands r2, r2, 0x400 | r2 &= 0x400;
| if (r2 == r2) {
0x00017ad4 addne r2, sp, 0xf0 | r2 += var_f0h;
| }
0x00017ad8 ldr r3, [r3] | r3 = *(r3);
0x00017adc ldr r1, [sp, 0x34] | r1 = var_34h;
0x00017ae0 mov r0, sl | r0 = sl;
0x00017ae4 bl 0x12850 | iptc_set_policy ();
0x00017ae8 b 0x176e0 | goto label_32;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/xtables-legacy-multi @ 0x19350 */
| #include <stdint.h>
|
; (fcn) fcn.00019350 () | void fcn_00019350 (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00019350 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00019354 mov r8, r0 | r8 = r0;
0x00019358 mov r0, r3 | r0 = r3;
0x0001935c mov sb, r1 | sb = r1;
0x00019360 mov sl, r2 | sl = r2;
0x00019364 mov r5, r3 | r5 = r3;
0x00019368 bl 0x127fc | ip6tc_first_chain ();
0x0001936c mov r6, 0 | r6 = 0;
| do {
0x00019370 cmp r0, 0 |
| if (r0 == 0) {
0x00019374 bne 0x193bc |
0x00019378 lsl r0, r6, 5 | r0 = r6 << 5;
0x0001937c bl 0x124a8 | r0 = xtables_malloc ();
0x00019380 mov r7, r0 | r7 = r0;
0x00019384 mov r0, r5 | r0 = r5;
0x00019388 bl 0x127fc | ip6tc_first_chain ();
0x0001938c mov r4, r7 | r4 = r7;
| label_0:
0x00019390 cmp r0, 0 |
| if (r0 != 0) {
0x00019394 bne 0x193cc | goto label_3;
| }
0x00019398 mov r4, r0 | r4 = r0;
0x0001939c mov fp, 1 |
| label_1:
0x000193a0 cmp r4, r6 |
| if (r4 != r6) {
0x000193a4 bne 0x193e8 | goto label_4;
| }
0x000193a8 mov r0, r7 | r0 = r7;
0x000193ac bl 0x1285c | free (r0);
0x000193b0 mov r0, fp | r0 = fp;
0x000193b4 add sp, sp, 0xc |
0x000193b8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x000193bc mov r0, r5 | r0 = r5;
0x000193c0 add r6, r6, 1 | r6++;
0x000193c4 bl 0x12730 | ip6tc_next_chain ();
0x000193c8 b 0x19370 |
| } while (1);
| label_3:
0x000193cc mov r1, r0 | r1 = r0;
0x000193d0 mov r0, r4 | r0 = r4;
0x000193d4 bl 0x12268 | strcpy (r0, r1)
0x000193d8 mov r0, r5 | r0 = r5;
0x000193dc bl 0x12730 | ip6tc_next_chain ();
0x000193e0 add r4, r4, 0x20 | r4 += 0x20;
0x000193e4 b 0x19390 | goto label_0;
| label_4:
0x000193e8 cmp sl, 0 |
0x000193ec add r3, r7, r4, lsl 5 | r3 = r7 + (r4 << 5);
0x000193f0 beq 0x19410 |
| while (r0 != 1) {
0x000193f4 mov r2, r5 | r2 = r5;
0x000193f8 mov r1, sb | r1 = sb;
0x000193fc mov r0, r3 | r0 = r3;
0x00019400 blx r8 | r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00019404 and fp, fp, r0 |
| label_2:
0x00019408 add r4, r4, 1 | r4++;
0x0001940c b 0x193a0 | goto label_1;
0x00019410 mov r0, r3 | r0 = r3;
0x00019414 mov r1, r5 | r1 = r5;
0x00019418 str r3, [sp, 4] | var_4h = r3;
0x0001941c bl 0x12448 | ip6tc_builtin ();
0x00019420 ldr r3, [sp, 4] | r3 = var_4h;
0x00019424 cmp r0, 1 |
0x00019428 bne 0x193f4 |
| }
0x0001942c b 0x19408 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/xtables-legacy-multi @ 0x19918 */
| #include <stdint.h>
|
; (fcn) fcn.00019918 () | void fcn_00019918 (int32_t arg_1c0h, int32_t arg1, int32_t arg2) {
| int32_t var_1h;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_44h;
| void * var_48h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_54h;
| int32_t var_58h;
| int32_t var_5ch;
| void * ptr;
| void * var_64h;
| void * var_68h;
| void * var_6ch;
| int32_t var_70h;
| int32_t var_74h;
| char * format;
| int32_t var_78h_2;
| int32_t var_80h;
| int32_t var_84h;
| int32_t var_88h;
| int32_t var_88h_2;
| int32_t var_90h;
| int32_t var_90h_2;
| void * s2;
| int32_t var_d8h;
| int32_t var_e8h;
| int32_t var_f8h;
| int32_t var_108h;
| int32_t var_118h;
| int32_t var_11bh;
| int32_t var_11ch;
| int32_t var_130h;
| int32_t var_98h_2;
| char * var_a0h;
| int32_t var_a0h_2;
| int32_t var_158h;
| int32_t var_15ch;
| int32_t var_160h;
| int32_t var_164h;
| int32_t var_16ch;
| int32_t var_180h;
| char * src;
| int32_t var_18ch;
| int32_t var_19ch;
| r0 = arg1;
| r1 = arg2;
0x00019918 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001991c sub sp, sp, 0x19c |
0x00019920 str r3, [sp, 0x2c] | var_2ch = r3;
0x00019924 ldrb r3, [sp, 0x1c0] | r3 = *(arg_1c0h);
0x00019928 mov r4, r1 | r4 = r1;
0x0001992c mov r5, r0 | r5 = r0;
0x00019930 mov r6, r2 | r6 = r2;
0x00019934 mov r1, 0 | r1 = 0;
0x00019938 mov r2, 0x100 | r2 = 0x100;
0x0001993c add r0, sp, 0x98 | r0 += s2;
0x00019940 str r3, [sp, 0x3c] | var_3ch = r3;
0x00019944 bl 0x125ec | memset (r0, r1, r2);
0x00019948 ldr r3, [pc, 0xf54] | r3 = *(0x1a8a0);
0x0001994c mov r2, 1 | r2 = 1;
0x00019950 str r2, [sp, 0x80] | var_80h = r2;
0x00019954 ldr r2, [pc, 0xf4c] | r2 = *(0x1a8a4);
0x00019958 str r3, [sp, 0x188] | src = r3;
0x0001995c mov r3, 0 | r3 = 0;
0x00019960 str r3, [r2] | *(r2) = r3;
0x00019964 ldr r2, [pc, 0xf40] |
0x00019968 str r4, [sp, 0x18c] | var_18ch = r4;
0x0001996c ldr r2, [r2] | r2 = optind;
0x00019970 str r3, [sp, 0x58] | var_58h = r3;
0x00019974 str r3, [sp, 0x5c] | var_5ch = r3;
0x00019978 str r3, [sp, 0x60] | ptr = r3;
0x0001997c str r3, [sp, 0x64] | var_64h = r3;
0x00019980 str r3, [sp, 0x68] | var_68h = r3;
0x00019984 str r3, [sp, 0x6c] | var_6ch = r3;
0x00019988 str r3, [sp, 0x84] | var_84h = r3;
0x0001998c str r3, [sp, 0x70] | var_70h = r3;
| do {
0x00019990 cmp r2, 0 |
| if (r2 == 0) {
0x00019994 bne 0x19a40 |
0x00019998 ldr r3, [pc, 0xf10] | r3 = xtables_matches;
0x0001999c ldr sb, [r3] | sb = xtables_matches;
| label_0:
0x000199a0 cmp sb, 0 |
| if (sb != 0) {
0x000199a4 bne 0x19a4c | goto label_43;
| }
0x000199a8 ldr r2, [pc, 0xf04] |
0x000199ac ldr r3, [pc, 0xf04] | r3 = xt_params;
0x000199b0 ldr r2, [r2] |
0x000199b4 str sb, [r3] | *(r3) = sb;
0x000199b8 ldr r2, [r2, 0xc] | r2 = *(0x1a8bc);
0x000199bc ldr r3, [pc, 0xef8] | r3 = opterr;
0x000199c0 mov fp, sb |
0x000199c4 mov r7, sb | r7 = sb;
0x000199c8 mov sl, sb | sl = sb;
0x000199cc str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x000199d0 str sb, [sp, 0x44] | var_44h = sb;
0x000199d4 str sb, [sp, 0x34] | var_34h = sb;
0x000199d8 str sb, [sp, 0x40] | var_40h = sb;
0x000199dc str sb, [sp, 0x38] | var_38h = sb;
0x000199e0 str sb, [sp, 0x30] | var_30h = sb;
0x000199e4 str r3, [sp, 0x48] | var_48h = r3;
| label_1:
0x000199e8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000199ec mov r8, 0 | r8 = 0;
0x000199f0 str r8, [sp] | *(sp) = r8;
0x000199f4 ldr r2, [pc, 0xec4] | r2 = *(0x1a8bc);
0x000199f8 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000199fc mov r1, r4 | r1 = r4;
0x00019a00 mov r0, r5 | r0 = r5;
0x00019a04 bl 0x12310 | r0 = getopt_long ();
0x00019a08 cmn r0, 1 |
0x00019a0c str r0, [sp, 0x15c] | var_15ch = r0;
| if (r0 != 1) {
0x00019a10 bne 0x19a5c | goto label_44;
| }
0x00019a14 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00019a18 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00019a1c cmp r2, r8 |
| if (r2 == r8) {
0x00019a20 movne r3, r8 | r3 = r8;
| }
0x00019a24 cmp r3, r8 |
| if (r3 == r8) {
0x00019a28 beq 0x1a580 | goto label_45;
| }
0x00019a2c ldr r3, [pc, 0xe80] |
0x00019a30 ldr r1, [pc, 0xe8c] | r1 = "-:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:bvw::W::nt:m:xc:g:46";
0x00019a34 ldr r3, [r3] |
0x00019a38 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019a3c b 0x1a0e8 | goto label_10;
| }
0x00019a40 str r3, [r2, 0x5c] | *((r2 + 0x5c)) = r3;
0x00019a44 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00019a48 b 0x19990 |
| } while (1);
| label_43:
0x00019a4c str r2, [sb, 0x5c] | *((sb + 0x5c)) = r2;
0x00019a50 str r2, [sb, 0x60] | *((sb + 0x60)) = r2;
0x00019a54 ldr sb, [sb, 4] | sb = *((sb + 4));
0x00019a58 b 0x199a0 | goto label_0;
| label_44:
0x00019a5c cmp r0, 0x57 |
| if (r0 == 0x57) {
0x00019a60 beq 0x1a384 | goto label_46;
| }
| if (r0 > 0x57) {
0x00019a64 bgt 0x19c58 | goto label_47;
| }
0x00019a68 cmp r0, 0x46 |
| if (r0 == 0x46) {
0x00019a6c beq 0x19f74 | goto label_48;
| }
| if (r0 > 0x46) {
0x00019a70 bgt 0x19b6c | goto label_49;
| }
0x00019a74 cmp r0, 0x36 |
| if (r0 == 0x36) {
0x00019a78 beq 0x19e28 | goto label_3;
| }
| if (r0 <= 0x36) {
0x00019a7c bgt 0x19ad8 |
0x00019a80 cmp r0, 0x30 |
| if (r0 == 0x30) {
0x00019a84 beq 0x1a3f8 | goto label_50;
| }
0x00019a88 cmp r0, 0x34 |
| if (r0 == 0x34) {
0x00019a8c beq 0x1a534 | goto label_51;
| }
0x00019a90 cmp r0, 1 |
| if (r0 != 1) {
0x00019a94 bne 0x19af8 | goto label_2;
| }
0x00019a98 ldr r3, [pc, 0xe28] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019a9c ldr r2, [r3] | r2 = "--wait-interval only makes sense with --wait\n";
0x00019aa0 ldrb r3, [r2] | r3 = *(r2);
0x00019aa4 cmp r3, 0x21 |
| if (r3 != 0x21) {
0x00019aa8 bne 0x1a56c | goto label_52;
| }
0x00019aac ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x00019ab0 cmp r3, 0 |
| if (r3 != 0) {
0x00019ab4 bne 0x1a56c | goto label_52;
| }
0x00019ab8 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019abc cmp r3, 0 |
| if (r3 == 0) {
0x00019ac0 beq 0x1a55c | goto label_53;
| }
0x00019ac4 ldr r3, [pc, 0xde8] |
0x00019ac8 ldr r1, [pc, 0xdfc] | r1 = optarg;
0x00019acc ldr r3, [r3] |
0x00019ad0 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019ad4 b 0x1a0e8 | goto label_10;
| }
0x00019ad8 cmp r0, 0x43 |
| if (r0 == 0x43) {
0x00019adc beq 0x19e0c | goto label_54;
| }
| if (r0 > 0x43) {
0x00019ae0 bgt 0x19b10 | goto label_55;
| }
0x00019ae4 cmp r0, 0x41 |
| if (r0 != 0x41) {
0x00019ae8 ldreq r3, [sp, 0x158] | r3 = var_158h;
| }
| if (r0 != 0x41) {
0x00019aec moveq r2, 0 | r2 = 0;
| }
| if (r0 != 0x41) {
0x00019af0 moveq r1, 0x10 | r1 = 0x10;
| }
| if (r0 == 0x41) {
0x00019af4 beq 0x19e18 | goto label_8;
| }
| do {
| label_2:
0x00019af8 ldr r1, [sp, 0x48] | r1 = var_48h;
0x00019afc add r0, sp, 0x98 | r0 += s2;
0x00019b00 bl 0x1bc7c | r0 = fcn_0001bc7c (r0, r1);
0x00019b04 cmp r0, 1 |
| if (r0 != 1) {
0x00019b08 bne 0x19e28 | goto label_3;
| }
0x00019b0c b 0x199e8 | goto label_1;
| label_55:
0x00019b10 cmp r0, 0x44 |
| if (r0 == 0x44) {
0x00019b14 beq 0x19e34 | goto label_56;
| }
0x00019b18 cmp r0, 0x45 |
0x00019b1c bne 0x19af8 |
| } while (r0 != 0x45);
0x00019b20 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019b24 mov r2, 0 | r2 = 0;
0x00019b28 mov r1, 0x800 | r1 = 0x800;
0x00019b2c add r0, sp, 0x70 | r0 += var_70h;
0x00019b30 bl 0x1906c | fcn_0001906c (r0, r1);
0x00019b34 ldr r3, [pc, 0xd8c] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019b38 mov r1, r4 | r1 = r4;
0x00019b3c mov r0, r5 | r0 = r5;
0x00019b40 ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00019b44 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019b48 cmp r0, 0 |
| if (r0 == 0) {
0x00019b4c beq 0x1a118 | goto label_57;
| }
0x00019b50 ldr r2, [pc, 0xd50] | r2 = *(0x1a8a4);
0x00019b54 ldr r3, [r2] | r3 = *(0x1a8a4);
0x00019b58 add r1, r3, 1 | r1 = r3 + 1;
0x00019b5c ldr r3, [r4, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r4 + offset_0));
0x00019b60 str r1, [r2] | *(r2) = r1;
0x00019b64 str r3, [sp, 0x44] | var_44h = r3;
0x00019b68 b 0x19e28 | goto label_3;
| label_49:
0x00019b6c cmp r0, 0x4e |
| if (r0 == 0x4e) {
0x00019b70 beq 0x1a048 | goto label_58;
| }
| if (r0 > 0x4e) {
0x00019b74 bgt 0x19bc4 | goto label_59;
| }
0x00019b78 cmp r0, 0x4c |
| if (r0 == 0x4c) {
0x00019b7c beq 0x19f00 | goto label_60;
| }
| if (r0 > 0x4c) {
0x00019b80 bgt 0x1a408 | goto label_61;
| }
0x00019b84 cmp r0, 0x49 |
| if (r0 != 0x49) {
0x00019b88 bne 0x19af8 | goto label_2;
| }
0x00019b8c ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019b90 mov r2, 0 | r2 = 0;
0x00019b94 mov r1, 1 | r1 = 1;
0x00019b98 add r0, sp, 0x70 | r0 += var_70h;
0x00019b9c bl 0x1906c | fcn_0001906c (r0, r1);
0x00019ba0 ldr r3, [pc, 0xd20] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019ba4 mov r1, r4 | r1 = r4;
0x00019ba8 mov r0, r5 | r0 = r5;
0x00019bac ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00019bb0 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019bb4 cmp r0, 0 |
| if (r0 != 0) {
0x00019bb8 moveq fp, 1 |
| }
| if (r0 == 0) {
0x00019bbc beq 0x19e28 | goto label_3;
| }
0x00019bc0 b 0x19ebc | goto label_4;
| label_59:
0x00019bc4 cmp r0, 0x52 |
| if (r0 == 0x52) {
0x00019bc8 beq 0x19e8c | goto label_62;
| }
| if (r0 > 0x52) {
0x00019bcc bgt 0x19c24 | goto label_63;
| }
0x00019bd0 cmp r0, 0x50 |
| if (r0 != 0x50) {
0x00019bd4 bne 0x19af8 | goto label_2;
| }
0x00019bd8 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019bdc mov r2, 0 | r2 = 0;
0x00019be0 mov r1, 0x400 | r1 = 0x400;
0x00019be4 add r0, sp, 0x70 | r0 += var_70h;
0x00019be8 bl 0x1906c | fcn_0001906c (r0, r1);
0x00019bec ldr r3, [pc, 0xcd4] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019bf0 mov r1, r4 | r1 = r4;
0x00019bf4 mov r0, r5 | r0 = r5;
0x00019bf8 ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00019bfc bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019c00 cmp r0, 0 |
| if (r0 == 0) {
0x00019c04 beq 0x1a138 | goto label_64;
| }
0x00019c08 ldr r2, [pc, 0xc98] | r2 = *(0x1a8a4);
0x00019c0c ldr r3, [r2] | r3 = *(0x1a8a4);
0x00019c10 add r1, r3, 1 | r1 = r3 + 1;
0x00019c14 ldr r3, [r4, r3, lsl 2] | offset_1 = r3 << 2;
| r3 = *((r4 + offset_1));
0x00019c18 str r1, [r2] | *(r2) = r1;
0x00019c1c str r3, [sp, 0x34] | var_34h = r3;
0x00019c20 b 0x19e28 | goto label_3;
| label_63:
0x00019c24 cmp r0, 0x53 |
| if (r0 == 0x53) {
0x00019c28 beq 0x19f64 | goto label_65;
| }
0x00019c2c cmp r0, 0x56 |
| if (r0 != 0x56) {
0x00019c30 bne 0x19af8 | goto label_2;
| }
0x00019c34 ldr r1, [sp, 0x158] | r1 = var_158h;
0x00019c38 ldr r3, [pc, 0xc7c] | r3 = opterr;
0x00019c3c cmp r1, 0 |
0x00019c40 ldr r2, [r3, 8] | r2 = "-:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:bvw::W::nt:m:xc:g:46";
| if (r1 == 0) {
0x00019c44 beq 0x1a3e8 | goto label_66;
| }
0x00019c48 mov r1, r2 | r1 = r2;
0x00019c4c ldr r0, [pc, 0xc7c] | r0 = "multiple_consecutive___not_allowed";
0x00019c50 bl 0x122b0 | printf ("multiple_consecutive___not_allowed", r1);
0x00019c54 b 0x1a1f0 | goto label_13;
| label_47:
0x00019c58 cmp r0, 0x6d |
| if (r0 == 0x6d) {
0x00019c5c beq 0x1a3bc | goto label_67;
| }
| if (r0 > 0x6d) {
0x00019c60 bgt 0x19d10 | goto label_68;
| }
0x00019c64 cmp r0, 0x64 |
| if (r0 == 0x64) {
0x00019c68 beq 0x1a280 | goto label_69;
| }
| if (r0 > 0x64) {
0x00019c6c bgt 0x19c98 | goto label_70;
| }
0x00019c70 cmp r0, 0x5a |
| if (r0 == 0x5a) {
0x00019c74 beq 0x19fc4 | goto label_71;
| }
0x00019c78 cmp r0, 0x63 |
| if (r0 == 0x63) {
0x00019c7c beq 0x1a41c | goto label_72;
| }
0x00019c80 cmp r0, 0x58 |
| if (r0 != 0x58) {
0x00019c84 bne 0x19af8 | goto label_2;
| }
0x00019c88 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019c8c mov r2, 0 | r2 = 0;
0x00019c90 mov r1, 0x200 | r1 = 0x200;
0x00019c94 b 0x19f80 | goto label_73;
| label_70:
0x00019c98 cmp r0, 0x68 |
| if (r0 == 0x68) {
0x00019c9c beq 0x1a158 | goto label_74;
| }
| if (r0 > 0x68) {
0x00019ca0 bgt 0x19ce0 | goto label_75;
| }
0x00019ca4 cmp r0, 0x67 |
| if (r0 != 0x67) {
0x00019ca8 bne 0x19af8 | goto label_2;
| }
0x00019cac ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019cb0 add r2, sp, 0x11c | r2 += var_11ch;
0x00019cb4 mov r1, 0x10 | r1 = 0x10;
0x00019cb8 add r0, sp, 0x160 | r0 += var_160h;
0x00019cbc bl 0x190e4 | fcn_000190e4 (r0, r1);
0x00019cc0 ldrb r3, [sp, 0x11b] | r3 = var_11bh;
0x00019cc4 orr r3, r3, 4 | r3 |= 4;
0x00019cc8 strb r3, [sp, 0x11b] | var_11bh = r3;
0x00019ccc ldr r3, [pc, 0xbf4] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019cd0 ldr r0, [r3] | r0 = "--wait-interval only makes sense with --wait\n";
0x00019cd4 bl 0x1ca20 | fcn_0001ca20 ("--wait-interval only makes sense with --wait\n");
0x00019cd8 str r0, [sp, 0x188] | src = r0;
0x00019cdc b 0x19e28 | goto label_3;
| label_75:
0x00019ce0 cmp r0, 0x69 |
| if (r0 == 0x69) {
0x00019ce4 beq 0x1a2a0 | goto label_76;
| }
0x00019ce8 cmp r0, 0x6a |
| if (r0 != 0x6a) {
0x00019cec bne 0x19af8 | goto label_2;
| }
0x00019cf0 add r0, sp, 0x160 | r0 += var_160h;
0x00019cf4 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019cf8 add r2, sp, 0x11c | r2 += var_11ch;
0x00019cfc mov r1, 0x10 | r1 = 0x10;
0x00019d00 bl 0x190e4 | fcn_000190e4 (r0, r1);
0x00019d04 add r0, sp, 0x98 | r0 += s2;
0x00019d08 bl 0x1cad8 | fcn_0001cad8 (r0);
0x00019d0c b 0x19e28 | goto label_3;
| label_68:
0x00019d10 cmp r0, 0x73 |
| if (r0 == 0x73) {
0x00019d14 beq 0x1a260 | goto label_77;
| }
| if (r0 > 0x73) {
0x00019d18 bgt 0x19db0 | goto label_78;
| }
0x00019d1c cmp r0, 0x6f |
| if (r0 == 0x6f) {
0x00019d20 beq 0x1a2f0 | goto label_79;
| }
| if (r0 < 0x6f) {
0x00019d24 blt 0x1a3c8 | goto label_80;
| }
0x00019d28 cmp r0, 0x70 |
| if (r0 != 0x70) {
0x00019d2c bne 0x19af8 | goto label_2;
| }
0x00019d30 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019d34 mov r1, 8 | r1 = 8;
0x00019d38 add r2, sp, 0x11c | r2 += var_11ch;
0x00019d3c add r0, sp, 0x160 | r0 += var_160h;
0x00019d40 bl 0x190e4 | fcn_000190e4 (r0, r1);
0x00019d44 ldr r3, [pc, 0xb7c] |
0x00019d48 ldr r1, [pc, 0xb84] | r1 = "Not__s____";
0x00019d4c ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019d50 str r3, [sp, 0x180] | var_180h = r3;
| label_9:
0x00019d54 ldr r2, [sp, 0x180] | r2 = var_180h;
0x00019d58 ldrb r3, [r2] | r3 = *(r2);
0x00019d5c cmp r3, 0 |
| if (r3 != 0) {
0x00019d60 bne 0x1a1f8 | goto label_81;
| }
0x00019d64 ldr r3, [pc, 0xb5c] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019d68 ldr r0, [r3] | r0 = "--wait-interval only makes sense with --wait\n";
0x00019d6c str r0, [sp, 0x180] | var_180h = r0;
0x00019d70 bl 0x12838 | xtables_parse_protocol ();
0x00019d74 add r3, sp, 0x118 | r3 += var_118h;
0x00019d78 strh r0, [r3] | *(r3) = r0;
0x00019d7c ldrb r3, [sp, 0x11b] | r3 = var_11bh;
0x00019d80 cmp r0, 0 |
0x00019d84 orr r3, r3, 1 | r3 |= 1;
0x00019d88 strb r3, [sp, 0x11b] | var_11bh = r3;
| if (r0 != 0) {
0x00019d8c bne 0x1a218 | goto label_82;
| }
0x00019d90 ldrb r3, [sp, 0x11c] | r3 = var_11ch;
0x00019d94 tst r3, 0x40 |
| if ((r3 & 0x40) == 0) {
0x00019d98 beq 0x1a218 | goto label_82;
| }
0x00019d9c ldr r3, [pc, 0xb10] |
0x00019da0 ldr r1, [pc, 0xb30] | r1 = __ctype_tolower;
0x00019da4 ldr r3, [r3] |
0x00019da8 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019dac b 0x1a0e8 | goto label_10;
| label_78:
0x00019db0 cmp r0, 0x76 |
| if (r0 == 0x76) {
0x00019db4 beq 0x1a324 | goto label_83;
| }
| if (r0 > 0x76) {
0x00019db8 bgt 0x19de4 | goto label_84;
| }
0x00019dbc cmp r0, 0x74 |
| if (r0 != 0x74) {
0x00019dc0 bne 0x19af8 | goto label_2;
| }
0x00019dc4 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019dc8 cmp r3, 0 |
| if (r3 == 0) {
0x00019dcc beq 0x1a3d8 | goto label_85;
| }
0x00019dd0 ldr r3, [pc, 0xadc] |
0x00019dd4 ldr r1, [pc, 0xb00] | r1 = "rule would never match protocol";
0x00019dd8 ldr r3, [r3] |
0x00019ddc ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019de0 b 0x1a0e8 | goto label_10;
| label_84:
0x00019de4 cmp r0, 0x77 |
| if (r0 == 0x77) {
0x00019de8 beq 0x1a354 | goto label_86;
| }
0x00019dec cmp r0, 0x78 |
| if (r0 != 0x78) {
0x00019df0 ldreq r3, [sp, 0x158] | r3 = var_158h;
| }
| if (r0 != 0x78) {
0x00019df4 addeq r2, sp, 0x11c | r2 += var_11ch;
| }
| if (r0 == 0x78) {
0x00019df8 moveq r1, 0x40 | r1 = 0x40;
| goto label_87;
| }
| if (r0 != 0x78) {
| label_87:
0x00019dfc bne 0x19af8 | goto label_2;
| }
| label_12:
0x00019e00 add r0, sp, 0x160 | r0 += var_160h;
0x00019e04 bl 0x190e4 | fcn_000190e4 (r0, r1);
0x00019e08 b 0x19e28 | goto label_3;
| label_54:
0x00019e0c ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019e10 mov r2, r8 | r2 = r8;
0x00019e14 mov r1, 0x4000 | r1 = 0x4000;
| label_8:
0x00019e18 add r0, sp, 0x70 | r0 += var_70h;
0x00019e1c bl 0x1906c | fcn_0001906c (r0, r1);
0x00019e20 ldr r3, [pc, 0xaa0] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019e24 ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
| do {
| label_3:
0x00019e28 mov r3, 0 | r3 = 0;
0x00019e2c str r3, [sp, 0x158] | var_158h = r3;
0x00019e30 b 0x199e8 | goto label_1;
| label_56:
0x00019e34 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019e38 mov r2, 0 | r2 = 0;
0x00019e3c mov r1, 2 | r1 = 2;
0x00019e40 add r0, sp, 0x70 | r0 += var_70h;
0x00019e44 bl 0x1906c | fcn_0001906c (r0, r1);
0x00019e48 ldr r3, [pc, 0xa78] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019e4c mov r1, r4 | r1 = r4;
0x00019e50 mov r0, r5 | r0 = r5;
0x00019e54 ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00019e58 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019e5c cmp r0, 0 |
0x00019e60 beq 0x19e28 |
| } while (r0 == 0);
0x00019e64 ldr r2, [pc, 0xa3c] | r2 = *(0x1a8a4);
0x00019e68 ldr r3, [r2] | r3 = *(0x1a8a4);
0x00019e6c add r1, r3, 1 | r1 = r3 + 1;
0x00019e70 ldr r0, [r4, r3, lsl 2] | offset_2 = r3 << 2;
| r0 = *((r4 + offset_2));
0x00019e74 str r1, [r2] | *(r2) = r1;
0x00019e78 bl 0x19210 | fcn_00019210 (r0);
0x00019e7c mov r3, 4 | r3 = 4;
0x00019e80 mov fp, r0 |
| label_6:
0x00019e84 str r3, [sp, 0x70] | var_70h = r3;
0x00019e88 b 0x19e28 | goto label_3;
| label_62:
0x00019e8c ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019e90 mov r2, r8 | r2 = r8;
0x00019e94 mov r1, 8 | r1 = 8;
0x00019e98 add r0, sp, 0x70 | r0 += var_70h;
0x00019e9c bl 0x1906c | fcn_0001906c (r0, r1);
0x00019ea0 ldr r3, [pc, 0xa20] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019ea4 mov r1, r4 | r1 = r4;
0x00019ea8 mov r0, r5 | r0 = r5;
0x00019eac ldr sl, [r3] | sl = "--wait-interval only makes sense with --wait\n";
0x00019eb0 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019eb4 cmp r0, 0 |
| if (r0 != 0) {
0x00019eb8 beq 0x19edc |
| label_4:
0x00019ebc ldr r2, [pc, 0x9e4] | r2 = *(0x1a8a4);
0x00019ec0 ldr r3, [r2] | r3 = *(0x1a8a4);
0x00019ec4 add r1, r3, 1 | r1 = r3 + 1;
0x00019ec8 ldr r0, [r4, r3, lsl 2] | offset_3 = r3 << 2;
| r0 = *((r4 + offset_3));
0x00019ecc str r1, [r2] | *(r2) = r1;
0x00019ed0 bl 0x19210 | r0 = fcn_00019210 (r0);
0x00019ed4 mov fp, r0 |
0x00019ed8 b 0x19e28 | goto label_3;
| }
0x00019edc mov r0, 8 | r0 = 8;
0x00019ee0 bl 0x128ec | fcn_000128ec (r0);
0x00019ee4 ldr r3, [pc, 0x9c8] |
0x00019ee8 ldr r1, [pc, 0x9f0] | r1 = "unexpected ! flag before --table";
0x00019eec ldr r3, [r3] |
0x00019ef0 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019ef4 mov r2, r0 | r2 = r0;
| label_7:
0x00019ef8 mov r0, 2 | r0 = 2;
0x00019efc blx r3 | uint32_t (*r3)(uint32_t, char*, uint32_t, char*) (r0, "unexpected ! flag before --table", r2, "--wait-interval only makes sense with --wait\n");
| label_60:
0x00019f00 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019f04 mov r2, 0x2080 | r2 = 0x2080;
0x00019f08 mov r1, 0x20 | r1 = 0x20;
| label_5:
0x00019f0c add r0, sp, 0x70 | r0 += var_70h;
0x00019f10 bl 0x1906c | fcn_0001906c (r0, r1);
0x00019f14 ldr r3, [pc, 0x9ac] |
0x00019f18 ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019f1c cmp r3, 0 |
| if (r3 == 0) {
0x00019f20 movne sl, r3 | sl = r3;
| }
| if (r3 == 0) {
0x00019f24 bne 0x19f4c |
0x00019f28 mov r1, r4 | r1 = r4;
0x00019f2c mov r0, r5 | r0 = r5;
0x00019f30 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019f34 cmp r0, 0 |
| if (r0 == 0) {
0x00019f38 ldrne r2, [pc, 0x968] | r2 = obj.optind;
| }
| if (r0 == 0) {
0x00019f3c ldrne r3, [r2] | r3 = *(r2);
| }
| if (r0 == 0) {
0x00019f40 ldrne sl, [r4, r3, lsl 2] | offset_4 = r3 << 2;
| sl = *((r4 + offset_4));
| }
| if (r0 == 0) {
0x00019f44 addne r1, r3, 1 | r1 = r3 + 1;
| }
| if (r0 != 0) {
0x00019f48 strne r1, [r2] | *(r2) = r1;
| goto label_88;
| }
| }
| label_88:
0x00019f4c mov r1, r4 | r1 = r4;
0x00019f50 mov r0, r5 | r0 = r5;
0x00019f54 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019f58 cmp r0, 0 |
| if (r0 == 0) {
0x00019f5c beq 0x19e28 | goto label_3;
| }
0x00019f60 b 0x19ebc | goto label_4;
| label_65:
0x00019f64 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019f68 mov r2, 0x2080 | r2 = 0x2080;
0x00019f6c mov r1, 0x1000 | r1 = 0x1000;
0x00019f70 b 0x19f0c | goto label_5;
| label_48:
0x00019f74 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019f78 mov r2, r8 | r2 = r8;
0x00019f7c mov r1, 0x40 | r1 = 0x40;
| label_73:
0x00019f80 add r0, sp, 0x70 | r0 += var_70h;
0x00019f84 bl 0x1906c | fcn_0001906c (r0, r1);
0x00019f88 ldr r3, [pc, 0x938] |
0x00019f8c ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019f90 cmp r3, 0 |
| if (r3 != 0) {
0x00019f94 movne sl, r3 | sl = r3;
| goto label_89;
| }
| if (r3 != 0) {
| label_89:
0x00019f98 bne 0x19e28 | goto label_3;
| }
0x00019f9c mov r1, r4 | r1 = r4;
0x00019fa0 mov r0, r5 | r0 = r5;
0x00019fa4 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019fa8 cmp r0, 0 |
| if (r0 == 0) {
0x00019fac ldrne r2, [pc, 0x8f4] | r2 = obj.optind;
| }
| if (r0 == 0) {
0x00019fb0 ldrne r3, [r2] | r3 = *(r2);
| }
| if (r0 == 0) {
0x00019fb4 addne r1, r3, 1 | r1 = r3 + 1;
| }
| if (r0 == 0) {
0x00019fb8 strne r1, [r2] | *(r2) = r1;
| }
| if (r0 == 0) {
0x00019fbc ldrne sl, [r4, r3, lsl 2] | offset_5 = r3 << 2;
| sl = *((r4 + offset_5));
| }
0x00019fc0 b 0x19e28 | goto label_3;
| label_71:
0x00019fc4 ldr r3, [sp, 0x158] | r3 = var_158h;
0x00019fc8 ldr r2, [pc, 0x914] | r2 = "__c_requires_a_rule_number";
0x00019fcc mov r1, 0x80 | r1 = 0x80;
0x00019fd0 add r0, sp, 0x70 | r0 += var_70h;
0x00019fd4 bl 0x1906c | fcn_0001906c (r0, r1);
0x00019fd8 ldr r3, [pc, 0x8e8] |
0x00019fdc ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x00019fe0 cmp r3, 0 |
| if (r3 == 0) {
0x00019fe4 movne sl, r3 | sl = r3;
| }
| if (r3 == 0) {
0x00019fe8 bne 0x1a010 |
0x00019fec mov r1, r4 | r1 = r4;
0x00019ff0 mov r0, r5 | r0 = r5;
0x00019ff4 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x00019ff8 cmp r0, 0 |
| if (r0 == 0) {
0x00019ffc ldrne r2, [pc, 0x8a4] | r2 = obj.optind;
| }
| if (r0 == 0) {
0x0001a000 ldrne r3, [r2] | r3 = *(r2);
| }
| if (r0 == 0) {
0x0001a004 ldrne sl, [r4, r3, lsl 2] | offset_6 = r3 << 2;
| sl = *((r4 + offset_6));
| }
| if (r0 == 0) {
0x0001a008 addne r1, r3, 1 | r1 = r3 + 1;
| }
| if (r0 != 0) {
0x0001a00c strne r1, [r2] | *(r2) = r1;
| goto label_90;
| }
| }
| label_90:
0x0001a010 mov r1, r4 | r1 = r4;
0x0001a014 mov r0, r5 | r0 = r5;
0x0001a018 bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x0001a01c cmp r0, 0 |
| if (r0 == 0) {
0x0001a020 beq 0x19e28 | goto label_3;
| }
0x0001a024 ldr r2, [pc, 0x87c] | r2 = *(0x1a8a4);
0x0001a028 ldr r3, [r2] | r3 = *(0x1a8a4);
0x0001a02c add r1, r3, 1 | r1 = r3 + 1;
0x0001a030 ldr r0, [r4, r3, lsl 2] | offset_7 = r3 << 2;
| r0 = *((r4 + offset_7));
0x0001a034 str r1, [r2] | *(r2) = r1;
0x0001a038 bl 0x19210 | fcn_00019210 (r0);
0x0001a03c mov r3, 0x2000 | r3 = 0x2000;
0x0001a040 mov fp, r0 |
0x0001a044 b 0x19e84 | goto label_6;
| label_58:
0x0001a048 ldr r3, [pc, 0x878] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a04c ldr r8, [r3] | r8 = "--wait-interval only makes sense with --wait\n";
0x0001a050 mov r0, r8 | r0 = r8;
0x0001a054 bl 0x127c0 | r0 = strlen (r0);
0x0001a058 cmp r0, 0x1c |
| if (r0 >= 0x1c) {
0x0001a05c bls 0x1a080 |
0x0001a060 ldr r3, [pc, 0x84c] |
0x0001a064 ldr r1, [pc, 0x87c] | r1 = *(0x1a8e4);
0x0001a068 ldr r3, [r3] | r3 = xtables_targets;
0x0001a06c mov r2, r8 | r2 = r8;
0x0001a070 ldr r4, [r3, 0x14] | r4 = "--wait-interval only makes sense with --wait\n";
0x0001a074 mov r3, 0x1d | r3 = 0x1d;
| label_16:
0x0001a078 mov r0, 2 | r0 = 2;
0x0001a07c b 0x1a8a0 | goto label_91;
| }
0x0001a080 ldrb r2, [r8] | r2 = *(r8);
0x0001a084 cmp r2, 0x21 |
0x0001a088 cmpne r2, 0x2d | __asm ("cmpne r2, 0x2d");
| if (r2 != 0x21) {
0x0001a08c ldreq r3, [pc, 0x820] | r3 = obj.xt_params;
| }
| if (r2 != 0x21) {
0x0001a090 ldreq r1, [pc, 0x854] | r1 = "chain name not allowed to start with `%c'\n";
| }
| if (r2 != 0x21) {
0x0001a094 ldreq r3, [r3] | r3 = *(r3);
| }
| if (r2 == 0x21) {
0x0001a098 ldreq r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_92;
| }
| if (r2 == 0x21) {
| label_92:
0x0001a09c beq 0x19ef8 | goto label_7;
| }
0x0001a0a0 mov r1, 2 | r1 = 2;
0x0001a0a4 mov r0, r8 | r0 = r8;
0x0001a0a8 bl 0x12280 | r0 = xtables_find_target ();
0x0001a0ac cmp r0, 0 |
| if (r0 != 0) {
0x0001a0b0 bne 0x1a0d8 | goto label_93;
| }
0x0001a0b4 ldr r3, [pc, 0x834] | r3 = "chain name not allowed to start with `%c'\n";
0x0001a0b8 ldr r1, [r3] | r1 = "chain name not allowed to start with `%c'\n";
0x0001a0bc sub r3, r8, 1 | r3 = r8 - 1;
| do {
0x0001a0c0 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x0001a0c4 cmp r2, 0 |
| if (r2 == 0) {
0x0001a0c8 bne 0x1a0f0 |
0x0001a0cc ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a0d0 mov r1, 0x100 | r1 = 0x100;
0x0001a0d4 b 0x19e18 | goto label_8;
| label_93:
0x0001a0d8 ldr r3, [pc, 0x7d4] |
0x0001a0dc ldr r1, [pc, 0x810] | r1 = __ctype_b;
0x0001a0e0 ldr r3, [r3] |
0x0001a0e4 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
| label_10:
0x0001a0e8 mov r0, 2 | r0 = 2;
0x0001a0ec blx r3 | uint32_t (*r3)(uint32_t, uint32_t, char*) (r0, r1, "--wait-interval only makes sense with --wait\n");
| }
0x0001a0f0 lsl r2, r2, 1 | r2 <<= 1;
0x0001a0f4 ldrh r2, [r1, r2] | r2 = *((r1 + r2));
0x0001a0f8 tst r2, 0x20 |
0x0001a0fc beq 0x1a0c0 |
| } while ((r2 & 0x20) == 0);
0x0001a100 ldr r3, [pc, 0x7ac] |
0x0001a104 mov r2, r8 | r2 = r8;
0x0001a108 ldr r3, [r3] |
0x0001a10c ldr r1, [pc, 0x7e4] | r1 = "chain_name_may_not_clash_with_target_name";
0x0001a110 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a114 b 0x19ef8 | goto label_7;
| label_57:
0x0001a118 mov r0, 0x800 | r0 = 0x800;
0x0001a11c bl 0x128ec | fcn_000128ec (r0);
0x0001a120 ldr r3, [pc, 0x78c] |
0x0001a124 ldr r1, [pc, 0x7d0] | r1 = "Invalid chain name `%s';
0x0001a128 ldr r3, [r3] |
0x0001a12c ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a130 mov r2, r0 | r2 = r0;
0x0001a134 b 0x19ef8 | goto label_7;
| label_64:
0x0001a138 mov r0, 0x400 | r0 = 0x400;
0x0001a13c bl 0x128ec | fcn_000128ec (r0);
0x0001a140 ldr r3, [pc, 0x76c] |
0x0001a144 ldr r1, [pc, 0x7b4] | r1 = "-%c requires old-chain-name and new-chain-name";
0x0001a148 ldr r3, [r3] |
0x0001a14c ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a150 mov r2, r0 | r2 = r0;
0x0001a154 b 0x19ef8 | goto label_7;
| label_74:
0x0001a158 ldr r3, [pc, 0x768] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a15c ldr r2, [r3] | r2 = "--wait-interval only makes sense with --wait\n";
0x0001a160 cmp r2, 0 |
| if (r2 != 0) {
0x0001a164 ldreq r2, [pc, 0x73c] | r2 = obj.optind;
| }
| if (r2 != 0) {
0x0001a168 ldreq r2, [r2] | r2 = *(r2);
| }
| if (r2 != 0) {
0x0001a16c ldreq r2, [r4, r2, lsl 2] | offset_8 = r2 << 2;
| r2 = *((r4 + offset_8));
| }
| if (r2 != 0) {
0x0001a170 streq r2, [r3] | *(r3) = r2;
| }
0x0001a174 ldr r3, [sp, 0x164] | r3 = var_164h;
0x0001a178 cmp r3, 0 |
| if (r3 == 0) {
0x0001a17c bne 0x1a198 |
0x0001a180 ldr r0, [sp, 0x180] | r0 = var_180h;
0x0001a184 cmp r0, 0 |
| if (r0 == 0) {
0x0001a188 beq 0x1a198 | goto label_94;
| }
0x0001a18c add r2, sp, 0x164 | r2 += var_164h;
0x0001a190 mov r1, 2 | r1 = 2;
0x0001a194 bl 0x12658 | xtables_find_match ();
| }
| label_94:
0x0001a198 ldr r2, [pc, 0x71c] |
0x0001a19c ldr r0, [pc, 0x760] | r0 = "__c_requires_a_chain_and_a_policy";
0x0001a1a0 ldr r3, [r2, 4] | r3 = *(0x1a8bc);
0x0001a1a4 ldr r4, [sp, 0x164] | r4 = var_164h;
0x0001a1a8 str r3, [sp, 0x20] | var_20h = r3;
0x0001a1ac str r3, [sp, 0x1c] | var_1ch = r3;
0x0001a1b0 str r3, [sp, 0x18] | var_18h = r3;
0x0001a1b4 str r3, [sp, 0x14] | var_14h = r3;
0x0001a1b8 str r3, [sp, 0x10] | var_10h = r3;
0x0001a1bc str r3, [sp, 0xc] | var_ch = r3;
0x0001a1c0 str r3, [sp, 8] | var_8h = r3;
0x0001a1c4 str r3, [sp, 4] | var_4h = r3;
0x0001a1c8 str r3, [sp] | *(sp) = r3;
0x0001a1cc mov r1, r3 | r1 = r3;
0x0001a1d0 ldr r2, [r2, 8] | r2 = "-:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:bvw::W::nt:m:xc:g:46";
0x0001a1d4 bl 0x122b0 | printf ("__c_requires_a_chain_and_a_policy", r1, r2, r3, r4);
0x0001a1d8 ldr r0, [pc, 0x728] | r0 = "_s_v_sUsage:__s___ACD__chain_rule_specification__options_________s__I_chain__rulenum__rule_specification__options_________s__R_chain_rulenum_rule_specification__options_________s__D_chain_rulenum__options_________s___LS___chain__rulenum____options_";
0x0001a1dc bl 0x123a0 | puts ("_s_v_sUsage:__s___ACD__chain_rule_specification__options_________s__I_chain__rulenum__rule_specification__options_________s__R_chain_rulenum_rule_specification__options_________s__D_chain_rulenum__options_________s___LS___chain__rulenum____options_");
0x0001a1e0 ldr r3, [pc, 0x6c8] | r3 = xtables_matches;
0x0001a1e4 mov r1, r4 | r1 = r4;
0x0001a1e8 ldr r0, [r3] | r0 = xtables_matches;
0x0001a1ec bl 0x1b918 | fcn_0001b918 (r0, r1);
| label_13:
0x0001a1f0 mov r0, 0 | r0 = 0;
0x0001a1f4 bl 0x12760 | exit (r0);
| label_81:
0x0001a1f8 ldr r0, [r1] | r0 = *(r1);
0x0001a1fc lsl r3, r3, 1 | r3 <<= 1;
0x0001a200 ldrh r3, [r0, r3] | r3 = *((r0 + r3));
0x0001a204 strb r3, [r2] | *(r2) = r3;
0x0001a208 ldr r3, [sp, 0x180] | r3 = var_180h;
0x0001a20c add r3, r3, 1 | r3++;
0x0001a210 str r3, [sp, 0x180] | var_180h = r3;
0x0001a214 b 0x19d54 | goto label_9;
| label_82:
0x0001a218 sub r0, r0, 0x2b | r0 -= 0x2b;
0x0001a21c lsl r0, r0, 0x10 | r0 <<= 0x10;
0x0001a220 lsr r0, r0, 0x10 | r0 >>= 0x10;
0x0001a224 cmp r0, 0x11 |
| if (r0 > 0x11) {
0x0001a228 bhi 0x19e28 | goto label_3;
| }
0x0001a22c ldr r3, [pc, 0x6d8] | r3 = "Commands:Either_long_or_short_options_are_allowed.____append___A_chainAppend_to_chain____check____C_chainCheck_for_the_existence_of_a_rule____delete___D_chainDelete_matching_rule_from_chain____delete___D_chain_rulenumDelete_rule_rulenum__1";
0x0001a230 mvn r0, r3, lsr r0 | r0 = ~r3;
0x0001a234 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x0001a238 bne 0x19e28 | goto label_3;
| }
0x0001a23c ldrb r3, [sp, 0x11c] | r3 = var_11ch;
0x0001a240 tst r3, 0x40 |
| if ((r3 & 0x40) != 0) {
0x0001a244 bne 0x19e28 | goto label_3;
| }
0x0001a248 ldr r3, [pc, 0x744] | r3 = "Can't use -%c with %s\n";
0x0001a24c ldr r2, [sp, 0x180] | r2 = var_180h;
0x0001a250 ldr r1, [pc, 0x6b8] | r1 = *(0x1a90c);
0x0001a254 ldr r0, [r3] | r0 = "Can't use -%c with %s\n";
0x0001a258 bl 0x12478 | fprintf ("Can't use -%c with %s\n", r1, r2, "Can't use -%c with %s\n");
0x0001a25c b 0x19e28 | goto label_3;
| label_77:
0x0001a260 ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a264 add r2, sp, 0x11c | r2 += var_11ch;
0x0001a268 mov r1, 2 | r1 = 2;
0x0001a26c add r0, sp, 0x160 | r0 += var_160h;
0x0001a270 bl 0x190e4 | fcn_000190e4 (r0, r1);
0x0001a274 ldr r3, [pc, 0x64c] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a278 ldr sb, [r3] | sb = "--wait-interval only makes sense with --wait\n";
0x0001a27c b 0x19e28 | goto label_3;
| label_69:
0x0001a280 ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a284 add r2, sp, 0x11c | r2 += var_11ch;
0x0001a288 mov r1, 4 | r1 = 4;
0x0001a28c add r0, sp, 0x160 | r0 += var_160h;
0x0001a290 bl 0x190e4 | fcn_000190e4 (r0, r1);
0x0001a294 ldr r3, [pc, 0x62c] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a298 ldr r7, [r3] | r7 = "--wait-interval only makes sense with --wait\n";
0x0001a29c b 0x19e28 | goto label_3;
| label_76:
0x0001a2a0 ldr r8, [pc, 0x620] | r8 = "--wait-interval only makes sense with --wait\n";
0x0001a2a4 ldr r3, [r8] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a2a8 ldrb r3, [r3] | r3 = *(r3);
0x0001a2ac cmp r3, 0 |
0x0001a2b0 bne 0x1a2c8 |
| while (r3 == 0) {
0x0001a2b4 ldr r3, [pc, 0x5f8] |
0x0001a2b8 ldr r1, [pc, 0x654] | r1 = "Warning:_never_matched_protocol:__s._use_extension_match_instead.";
0x0001a2bc ldr r3, [r3] |
0x0001a2c0 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a2c4 b 0x1a0e8 | goto label_10;
0x0001a2c8 add r2, sp, 0x11c | r2 += var_11ch;
0x0001a2cc mov r1, 0x80 | r1 = 0x80;
0x0001a2d0 ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a2d4 add r0, sp, 0x160 | r0 += var_160h;
0x0001a2d8 bl 0x190e4 | fcn_000190e4 (r0, r1);
0x0001a2dc add r2, sp, 0xf8 | r2 += var_f8h;
0x0001a2e0 add r1, sp, 0xd8 | r1 += var_d8h;
| label_11:
0x0001a2e4 ldr r0, [r8] | r0 = *(r8);
0x0001a2e8 bl 0x12514 | xtables_parse_interface ();
0x0001a2ec b 0x19e28 | goto label_3;
| label_79:
0x0001a2f0 ldr r8, [pc, 0x5d0] | r8 = "--wait-interval only makes sense with --wait\n";
0x0001a2f4 ldr r3, [r8] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a2f8 ldrb r3, [r3] | r3 = *(r3);
0x0001a2fc cmp r3, 0 |
0x0001a300 beq 0x1a2b4 |
| }
0x0001a304 add r2, sp, 0x11c | r2 += var_11ch;
0x0001a308 mov r1, 0x100 | r1 = 0x100;
0x0001a30c ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a310 add r0, sp, 0x160 | r0 += var_160h;
0x0001a314 bl 0x190e4 | fcn_000190e4 (r0, r1);
0x0001a318 add r2, sp, 0x108 | r2 += var_108h;
0x0001a31c add r1, sp, 0xe8 | r1 += var_e8h;
0x0001a320 b 0x1a2e4 | goto label_11;
| label_83:
0x0001a324 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0001a328 cmp r3, 0 |
| if (r3 == 0) {
0x0001a32c bne 0x1a344 |
0x0001a330 ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a334 add r2, sp, 0x11c | r2 += var_11ch;
0x0001a338 mov r1, 0x20 | r1 = 0x20;
0x0001a33c add r0, sp, 0x160 | r0 += var_160h;
0x0001a340 bl 0x190e4 | fcn_000190e4 (r0, r1);
| }
0x0001a344 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0001a348 add r3, r3, 1 | r3++;
0x0001a34c str r3, [sp, 0x30] | var_30h = r3;
0x0001a350 b 0x19e28 | goto label_3;
| label_86:
0x0001a354 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001a358 cmp r3, 0 |
| if (r3 == 0) {
0x0001a35c ldrne r3, [pc, 0x550] | r3 = obj.xt_params;
| }
| if (r3 == 0) {
0x0001a360 ldrne r1, [pc, 0x5b0] | r1 = "You cannot use `-w' from ip6tables-restore";
| }
| if (r3 == 0) {
0x0001a364 ldrne r3, [r3] | r3 = *(r3);
| }
| if (r3 != 0) {
0x0001a368 ldrne r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_95;
| }
| if (r3 != 0) {
| label_95:
0x0001a36c bne 0x1a0e8 | goto label_10;
| }
0x0001a370 mov r1, r4 | r1 = r4;
0x0001a374 mov r0, r5 | r0 = r5;
0x0001a378 bl 0x1c0e8 | fcn_0001c0e8 ();
0x0001a37c str r0, [sp, 0x38] | var_38h = r0;
0x0001a380 b 0x19e28 | goto label_3;
| label_46:
0x0001a384 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001a388 cmp r3, 0 |
| if (r3 == 0) {
0x0001a38c ldrne r3, [pc, 0x520] | r3 = obj.xt_params;
| }
| if (r3 == 0) {
0x0001a390 ldrne r1, [pc, 0x584] | r1 = "You cannot use `-W' from ip6tables-restore";
| }
| if (r3 == 0) {
0x0001a394 ldrne r3, [r3] | r3 = *(r3);
| }
| if (r3 != 0) {
0x0001a398 ldrne r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_96;
| }
| if (r3 != 0) {
| label_96:
0x0001a39c bne 0x1a0e8 | goto label_10;
| }
0x0001a3a0 add r2, sp, 0x80 | r2 += var_80h;
0x0001a3a4 mov r1, r4 | r1 = r4;
0x0001a3a8 mov r0, r5 | r0 = r5;
0x0001a3ac bl 0x1c184 | fcn_0001c184 ();
0x0001a3b0 mov r3, 1 | r3 = 1;
0x0001a3b4 str r3, [sp, 0x40] | var_40h = r3;
0x0001a3b8 b 0x19e28 | goto label_3;
| label_67:
0x0001a3bc add r0, sp, 0x98 | r0 += s2;
0x0001a3c0 bl 0x1c8e0 | fcn_0001c8e0 (r0);
0x0001a3c4 b 0x19e28 | goto label_3;
| label_80:
0x0001a3c8 ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a3cc add r2, sp, 0x11c | r2 += var_11ch;
0x0001a3d0 mov r1, 1 | r1 = 1;
0x0001a3d4 b 0x19e00 | goto label_12;
| label_85:
0x0001a3d8 ldr r3, [pc, 0x4e8] |
0x0001a3dc ldr r3, [r3] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a3e0 str r3, [r6] | *(r6) = r3;
0x0001a3e4 b 0x19e28 | goto label_3;
| label_66:
0x0001a3e8 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0001a3ec ldr r0, [pc, 0x52c] | r0 = "You cannot use `-W' from ip6tables-restore";
0x0001a3f0 bl 0x122b0 | printf ("You cannot use `-W' from ip6tables-restore", r1);
0x0001a3f4 b 0x1a1f0 | goto label_13;
| label_50:
0x0001a3f8 ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a3fc add r2, sp, 0x11c | r2 += var_11ch;
0x0001a400 mov r1, 0x200 | r1 = 0x200;
0x0001a404 b 0x19e00 | goto label_12;
| label_61:
0x0001a408 ldr r3, [pc, 0x4b8] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a40c ldr r2, [r3] | r2 = "--wait-interval only makes sense with --wait\n";
0x0001a410 ldr r3, [pc, 0x50c] | r3 = "_s_v_s__legacy_";
0x0001a414 str r2, [r3] | *(r3) = r2;
0x0001a418 b 0x19e28 | goto label_3;
| label_72:
0x0001a41c ldr r3, [sp, 0x158] | r3 = var_158h;
0x0001a420 add r2, sp, 0x11c | r2 += var_11ch;
0x0001a424 mov r1, 0x400 | r1 = 0x400;
0x0001a428 add r0, sp, 0x160 | r0 += var_160h;
0x0001a42c bl 0x190e4 | fcn_000190e4 (r0, r1);
0x0001a430 ldr r3, [pc, 0x490] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a434 mov r1, 0x2c | r1 = 0x2c;
0x0001a438 ldr r8, [r3] | r8 = "--wait-interval only makes sense with --wait\n";
0x0001a43c add r0, r8, 1 | r0 = r8 + 1;
0x0001a440 bl 0x127cc | r0 = strchr (r0, r1);
0x0001a444 cmp r0, 0 |
| if (r0 != 0) {
0x0001a448 beq 0x1a454 |
0x0001a44c adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0001a450 bne 0x1a4a4 | goto label_97;
| }
| }
0x0001a454 mov r1, r4 | r1 = r4;
0x0001a458 mov r0, r5 | r0 = r5;
0x0001a45c bl 0x1c0b0 | r0 = fcn_0001c0b0 (r0, r1);
0x0001a460 cmp r0, 0 |
0x0001a464 bne 0x1a488 |
| while (r3 == 0) {
0x0001a468 mov r0, 0x400 | r0 = 0x400;
0x0001a46c bl 0x128c8 | fcn_000128c8 (r0);
0x0001a470 ldr r3, [pc, 0x43c] |
0x0001a474 ldr r1, [pc, 0x4ac] | r1 = xtables_modprobe_program;
0x0001a478 ldr r3, [r3] |
0x0001a47c ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a480 mov r2, r0 | r2 = r0;
0x0001a484 b 0x19ef8 | goto label_7;
0x0001a488 ldr r2, [pc, 0x418] | r2 = *(0x1a8a4);
0x0001a48c ldr r3, [r2] | r3 = *(0x1a8a4);
0x0001a490 add r1, r3, 1 | r1 = r3 + 1;
0x0001a494 ldr r3, [r4, r3, lsl 2] | offset_9 = r3 << 2;
| r3 = *((r4 + offset_9));
0x0001a498 str r1, [r2] | *(r2) = r1;
0x0001a49c cmp r3, 0 |
0x0001a4a0 beq 0x1a468 |
| }
| label_97:
0x0001a4a4 add r2, sp, 0x78 | r2 += format;
0x0001a4a8 ldr r1, [pc, 0x47c] | r1 = "__c_requires_packet_and_byte_counter";
0x0001a4ac mov r0, r8 | r0 = r8;
0x0001a4b0 str r3, [sp, 0x4c] | var_4ch = r3;
0x0001a4b4 bl 0x12574 | sscanf (r0, "__c_requires_packet_and_byte_counter", r2);
0x0001a4b8 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0001a4bc cmp r0, 1 |
| if (r0 != 1) {
0x0001a4c0 beq 0x1a4e4 |
0x0001a4c4 mov r0, 0x400 | r0 = 0x400;
0x0001a4c8 bl 0x128c8 | fcn_000128c8 (r0);
0x0001a4cc ldr r3, [pc, 0x3e0] |
0x0001a4d0 ldr r1, [pc, 0x458] | r1 = "_llu";
0x0001a4d4 ldr r3, [r3] |
0x0001a4d8 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a4dc mov r2, r0 | r2 = r0;
0x0001a4e0 b 0x19ef8 | goto label_7;
| }
0x0001a4e4 ldrd r0, r1, [sp, 0x78] | __asm ("ldrd r0, r1, [format]");
0x0001a4e8 add r8, sp, 0x98 | r8 += s2;
0x0001a4ec strd r0, r1, [r8, 0x98] | __asm ("strd r0, r1, [var_130h]");
0x0001a4f0 ldr r1, [pc, 0x434] | r1 = "__c_requires_packet_and_byte_counter";
0x0001a4f4 add r2, sp, 0x78 | r2 += format;
0x0001a4f8 mov r0, r3 | r0 = r3;
0x0001a4fc bl 0x12574 | r0 = sscanf (r0, "__c_requires_packet_and_byte_counter", r2);
0x0001a500 cmp r0, 1 |
| if (r0 != 1) {
0x0001a504 beq 0x1a528 |
0x0001a508 mov r0, 0x400 | r0 = 0x400;
0x0001a50c bl 0x128c8 | fcn_000128c8 (r0);
0x0001a510 ldr r3, [pc, 0x39c] |
0x0001a514 ldr r1, [pc, 0x418] | r1 = "-%c packet counter not numeric";
0x0001a518 ldr r3, [r3] |
0x0001a51c ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a520 mov r2, r0 | r2 = r0;
0x0001a524 b 0x19ef8 | goto label_7;
| }
0x0001a528 ldrd r2, r3, [sp, 0x78] | __asm ("ldrd r2, r3, [format]");
0x0001a52c strd r2, r3, [r8, 0xa0] | __asm ("strd r2, r3, [var_a0h]");
0x0001a530 b 0x19e28 | goto label_3;
| label_51:
0x0001a534 ldr r3, [pc, 0x3fc] |
0x0001a538 ldr r3, [r3] | r3 = "__c_byte_counter_not_numeric";
0x0001a53c cmn r3, 1 |
| if (r3 == 1) {
0x0001a540 movne r5, 1 | r5 = 1;
| }
| if (r3 != 1) {
0x0001a544 bne 0x1b11c | goto label_98;
| }
0x0001a548 ldr r3, [pc, 0x444] | r3 = "Can't use -%c with %s\n";
0x0001a54c ldr r0, [pc, 0x3e8] | r0 = line;
0x0001a550 ldr r1, [r3] | r1 = "Can't use -%c with %s\n";
0x0001a554 bl 0x127d8 | r0 = fputs (r0, "Can't use -%c with %s\n");
| do {
| label_18:
0x0001a558 bl 0x19268 | fcn_00019268 ();
| label_53:
0x0001a55c mov r1, 1 | r1 = 1;
0x0001a560 str r1, [sp, 0x158] | var_158h = r1;
0x0001a564 strb r3, [r2] | *(r2) = r3;
0x0001a568 b 0x199e8 | goto label_1;
| label_52:
0x0001a56c ldr r3, [pc, 0x420] | r3 = "Can't use -%c with %s\n";
0x0001a570 ldr r1, [pc, 0x3c8] | r1 = "This is the IPv6 version of ip6tables.\n";
0x0001a574 ldr r0, [r3] | r0 = "Can't use -%c with %s\n";
0x0001a578 bl 0x12478 | fprintf ("Can't use -%c with %s\n", "This is the IPv6 version of ip6tables.\n", r2, "Can't use -%c with %s\n");
0x0001a57c b 0x1a558 |
| } while (1);
| label_45:
0x0001a580 ldr r1, [pc, 0x3bc] | r1 = "Bad argument `%s'\n";
0x0001a584 ldr r0, [r6] | r0 = *(r6);
0x0001a588 bl 0x1264c | r0 = strcmp (r0, "Bad argument `%s'\n");
0x0001a58c cmp r0, 0 |
| if (r0 == 0) {
0x0001a590 bne 0x1a5e4 |
0x0001a594 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001a598 cmp r3, 0 |
| if (r3 != 0) {
0x0001a59c beq 0x1a5b4 |
0x0001a5a0 ldr r1, [pc, 0x3a0] | r1 = *(0x1a944);
0x0001a5a4 mov r0, r3 | r0 = r3;
0x0001a5a8 bl 0x1264c | r0 = strcmp (r0, r1);
0x0001a5ac cmp r0, 0 |
| if (r0 == 0) {
0x0001a5b0 beq 0x1a5d0 | goto label_99;
| }
| }
0x0001a5b4 ldr r0, [sp, 0x188] | r0 = src;
0x0001a5b8 cmp r0, 0 |
| if (r0 == 0) {
0x0001a5bc beq 0x1a5e4 | goto label_100;
| }
0x0001a5c0 ldr r1, [pc, 0x380] | r1 = *(0x1a944);
0x0001a5c4 bl 0x1264c | r0 = strcmp (r0, r1);
0x0001a5c8 cmp r0, 0 |
| if (r0 != 0) {
0x0001a5cc bne 0x1a5e4 | goto label_100;
| }
| label_99:
0x0001a5d0 ldr r3, [pc, 0x2dc] |
0x0001a5d4 ldr r1, [pc, 0x370] | r1 = "DROP";
0x0001a5d8 ldr r3, [r3] |
0x0001a5dc ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a5e0 b 0x1a0e8 | goto label_10;
| }
| label_100:
0x0001a5e4 ldr r4, [sp, 0x164] | r4 = var_164h;
| do {
0x0001a5e8 cmp r4, 0 |
| if (r4 == 0) {
0x0001a5ec bne 0x1a624 |
0x0001a5f0 ldr r0, [sp, 0x16c] | r0 = var_16ch;
0x0001a5f4 cmp r0, 0 |
| if (r0 != 0) {
0x0001a5f8 beq 0x1a600 |
0x0001a5fc bl 0x1267c | xtables_option_tfcall ();
| }
0x0001a600 ldr r3, [pc, 0x2a0] |
0x0001a604 ldr r3, [r3] | r3 = *(0x1a8a4);
0x0001a608 cmp r3, r5 |
| if (r3 >= r5) {
0x0001a60c bge 0x1a634 | goto label_101;
| }
0x0001a610 ldr r3, [pc, 0x29c] |
0x0001a614 ldr r1, [pc, 0x334] | r1 = "\nThe \"nat\" table is not intended for filtering, the use of DROP is therefore inhibited.\n\n";
0x0001a618 ldr r3, [r3] |
0x0001a61c ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a620 b 0x1a0e8 | goto label_10;
| }
0x0001a624 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0001a628 bl 0x1270c | xtables_option_mfcall ();
0x0001a62c ldr r4, [r4] | r4 = *(r4);
0x0001a630 b 0x1a5e8 |
| } while (1);
| label_101:
0x0001a634 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0001a638 cmp r3, 0 |
| if (r3 != 0) {
0x0001a63c ldreq r3, [pc, 0x270] | r3 = obj.xt_params;
| }
| if (r3 != 0) {
0x0001a640 ldreq r1, [pc, 0x30c] | r1 = "no_command_specified";
| }
| if (r3 != 0) {
0x0001a644 ldreq r3, [r3] | r3 = *(r3);
| }
| if (r3 == 0) {
0x0001a648 ldreq r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_102;
| }
| if (r3 == 0) {
| label_102:
0x0001a64c beq 0x1a0e8 | goto label_10;
| }
0x0001a650 ldr r2, [sp, 0x158] | r2 = var_158h;
0x0001a654 cmp r2, 0 |
| if (r2 == 0) {
0x0001a658 ldrne r3, [pc, 0x254] | r3 = obj.xt_params;
| }
| if (r2 == 0) {
0x0001a65c ldrne r1, [pc, 0x2f4] | r1 = "nothing appropriate following !";
| }
| if (r2 == 0) {
0x0001a660 ldrne r3, [r3] | r3 = *(r3);
| }
| if (r2 != 0) {
0x0001a664 ldrne r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| goto label_103;
| }
| if (r2 != 0) {
| label_103:
0x0001a668 bne 0x1a0e8 | goto label_10;
| }
0x0001a66c ldr r2, [pc, 0x2e8] | r2 = "nothing appropriate following !";
0x0001a670 tst r3, r2 |
| if ((r3 & r2) != 0) {
0x0001a674 beq 0x1a690 |
0x0001a678 ldr r2, [sp, 0x160] | r2 = var_160h;
0x0001a67c ldr r3, [pc, 0x2dc] | r3 = *(0x1a95c);
0x0001a680 tst r2, 4 |
| if ((r2 & 4) != 0) {
0x0001a684 moveq r7, r3 | r7 = r3;
| }
0x0001a688 tst r2, 2 |
| if ((r2 & 2) == 0) {
0x0001a68c beq 0x1a700 | goto label_104;
| }
| }
0x0001a690 cmp sb, 0 |
0x0001a694 beq 0x1a6ac |
| while (1) {
0x0001a698 add r3, sp, 0x58 | r3 += var_58h;
0x0001a69c add r2, sp, 0x68 | r2 += var_68h;
0x0001a6a0 add r1, sp, 0x60 | r1 += ptr;
0x0001a6a4 mov r0, sb | r0 = sb;
0x0001a6a8 bl 0x12670 | xtables_ip6parse_multiple ();
0x0001a6ac cmp r7, 0 |
| if (r7 != 0) {
0x0001a6b0 beq 0x1a6c8 |
0x0001a6b4 add r3, sp, 0x5c | r3 += var_5ch;
0x0001a6b8 add r2, sp, 0x6c | r2 += var_6ch;
0x0001a6bc add r1, sp, 0x64 | r1 += var_64h;
0x0001a6c0 mov r0, r7 | r0 = r7;
0x0001a6c4 bl 0x12670 | xtables_ip6parse_multiple ();
| }
0x0001a6c8 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001a6cc cmp r3, 1 |
| if (r3 <= 1) {
0x0001a6d0 bhi 0x1a6e0 |
0x0001a6d4 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0001a6d8 cmp r2, 1 |
| if (r2 < 1) {
0x0001a6dc bls 0x1a708 | goto label_105;
| }
| }
0x0001a6e0 ldrb r2, [sp, 0x11c] | r2 = var_11ch;
0x0001a6e4 tst r2, 0x18 |
| if ((r2 & 0x18) == 0) {
0x0001a6e8 beq 0x1a708 | goto label_105;
| }
0x0001a6ec ldr r3, [pc, 0x1c0] |
0x0001a6f0 ldr r1, [pc, 0x26c] | r1 = "::0_0";
0x0001a6f4 ldr r3, [r3] |
0x0001a6f8 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a6fc b 0x1a0e8 | goto label_10;
| label_104:
0x0001a700 mov sb, r3 | sb = r3;
0x0001a704 b 0x1a698 |
| }
| label_105:
0x0001a708 ldr lr, [sp, 0x70] | lr = var_70h;
0x0001a70c cmp lr, 8 |
| if (lr == 8) {
0x0001a710 bne 0x1a73c |
0x0001a714 cmp r3, 1 |
| if (r3 == 1) {
0x0001a718 bne 0x1a728 |
0x0001a71c ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0001a720 cmp r3, 1 |
| if (r3 == 1) {
0x0001a724 beq 0x1a73c | goto label_106;
| }
| }
0x0001a728 ldr r3, [pc, 0x184] |
0x0001a72c ldr r1, [pc, 0x234] | r1 = "! not allowed with multiple source or destination IP addresses";
0x0001a730 ldr r3, [r3] |
0x0001a734 ldr r3, [r3, 0x14] | r3 = "--wait-interval only makes sense with --wait\n";
0x0001a738 b 0x1a0e8 | goto label_10;
| }
| label_106:
0x0001a73c ldr r5, [sp, 0x160] | r5 = var_160h;
0x0001a740 ldr ip, [pc, 0x224] | ip = "x_____x__x_x_____x__xxxxxxx_xxxxxx_____x__x_x_____x__x__xxxx__xx_xxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxx_xxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxx_____x__xx";
0x0001a744 mov r3, 0 | r3 = 0;
0x0001a748 mov r7, 0xb | r7 = 0xb;
| label_15:
0x0001a74c asr r0, r5, r3 | r0 = r5 >> r3;
0x0001a750 mov r2, 0 | r2 = 0;
0x0001a754 and r0, r0, 1 | r0 &= 1;
0x0001a758 mov r1, r2 | r1 = r2;
| do {
0x0001a75c asr r4, lr, r1 | r4 = lr >> r1;
0x0001a760 tst r4, 1 |
| if ((r4 & 1) != 0) {
0x0001a764 beq 0x1a7b4 |
0x0001a768 mul r4, r7, r1 | r4 = r7 * r1;
0x0001a76c cmp r0, 0 |
0x0001a770 ldrb r4, [ip, r4] | r4 = *((ip + r4));
| if (r0 == 0) {
0x0001a774 bne 0x1a7a0 |
0x0001a778 cmp r4, 0x2b |
| if (r4 != 0x2b) {
0x0001a77c bne 0x1a7b4 | goto label_107;
| }
0x0001a780 ldr r2, [pc, 0x12c] |
0x0001a784 ldr r1, [pc, 0x1e4] | r1 = "x_____x__x_x_____x__xxxxxxx_xxxxxx_____x__x_x_____x__x__xxxx__xx_xxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxx_xxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxx_____x__xx";
0x0001a788 ldr r2, [r2] | r2 = xtables_targets;
0x0001a78c ldr r4, [r2, 0x14] | r4 = "--wait-interval only makes sense with --wait\n";
0x0001a790 ldr r2, [pc, 0x1dc] | r2 = "You need to supply the `-%c' option for this command\n";
0x0001a794 ldrb r2, [r2, r3] | r2 = *((r2 + r3));
| label_14:
0x0001a798 mov r0, 2 | r0 = 2;
0x0001a79c blx r4 | uint32_t (*r4)(uint32_t, char*, uint32_t) (r0, "x_____x__x_x_____x__xxxxxxx_xxxxxx_____x__x_x_____x__x__xxxx__xx_xxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxx_xxxxx_xxxxxxxxxx_xxxxxxxxxx_xxxxxx_____x__xx", r2);
| }
0x0001a7a0 cmp r4, 0x78 |
| if (r4 == 0x78) {
0x0001a7a4 movne r2, r0 | r2 = r0;
| }
| if (r4 != 0x78) {
0x0001a7a8 bne 0x1a7b4 | goto label_107;
| }
0x0001a7ac cmp r2, 0 |
| if (r2 == 0) {
0x0001a7b0 mvneq r2, 0 | r2 = ~0;
| goto label_107;
| }
| }
| label_107:
0x0001a7b4 add r1, r1, 1 | r1++;
0x0001a7b8 cmp r1, 0x10 |
0x0001a7bc bne 0x1a75c |
| } while (r1 != 0x10);
0x0001a7c0 cmn r2, 1 |
0x0001a7c4 add ip, ip, 1 |
| if (r2 == 1) {
0x0001a7c8 bne 0x1a7e8 |
0x0001a7cc ldr r2, [pc, 0xe0] |
0x0001a7d0 ldr r1, [pc, 0x1a0] | r1 = "nsdpjvxio0cIDDRALFZNXPESZC__unsupported_revision_";
0x0001a7d4 ldr r2, [r2] | r2 = xtables_targets;
0x0001a7d8 ldr r4, [r2, 0x14] | r4 = "--wait-interval only makes sense with --wait\n";
0x0001a7dc ldr r2, [pc, 0x190] | r2 = "You need to supply the `-%c' option for this command\n";
0x0001a7e0 ldrb r2, [r2, r3] | r2 = *((r2 + r3));
0x0001a7e4 b 0x1a798 | goto label_14;
| }
0x0001a7e8 add r3, r3, 1 | r3++;
0x0001a7ec cmp r3, 0xb |
| if (r3 != 0xb) {
0x0001a7f0 bne 0x1a74c | goto label_15;
| }
0x0001a7f4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001a7f8 cmp r3, 0 |
| if (r3 == 0) {
0x0001a7fc bne 0x1a80c |
0x0001a800 add r1, sp, 0x80 | r1 += var_80h;
0x0001a804 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0001a808 bl 0x1bea8 | fcn_0001bea8 (r0, r1);
| }
0x0001a80c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001a810 ldr r3, [r3] | r3 = *(r3);
0x0001a814 cmp r3, 0 |
| if (r3 == 0) {
0x0001a818 bne 0x1a82c |
0x0001a81c ldr r0, [r6] | r0 = *(r6);
0x0001a820 bl 0x125a4 | ip6tc_init ();
0x0001a824 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001a828 str r0, [r3] | *(r3) = r0;
| }
0x0001a82c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001a830 ldr r1, [r3] | r1 = *(r3);
0x0001a834 cmp r1, 0 |
| if (r1 == 0) {
0x0001a838 movne r5, r1 | r5 = r1;
| }
| if (r1 == 0) {
0x0001a83c bne 0x1aa1c |
0x0001a840 ldr r3, [pc, 0xdc] | r3 = "_s_v_s__legacy_";
0x0001a844 ldr r0, [r3] | r0 = "_s_v_s__legacy_";
0x0001a848 bl 0x125c8 | r0 = xtables_load_ko ();
0x0001a84c cmn r0, 1 |
| if (r0 != 1) {
0x0001a850 beq 0x1a864 |
0x0001a854 ldr r0, [r6] | r0 = *(r6);
0x0001a858 bl 0x125a4 | ip6tc_init ();
0x0001a85c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001a860 str r0, [r3] | *(r3) = r0;
| }
0x0001a864 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001a868 ldr r5, [r3] | r5 = *(r3);
0x0001a86c cmp r5, 0 |
| if (r5 != 0) {
0x0001a870 bne 0x1aa1c | goto label_108;
| }
0x0001a874 ldr r3, [pc, 0x38] |
0x0001a878 ldr r5, [r6] | r5 = *(r6);
0x0001a87c ldr r3, [r3] | r3 = xtables_targets;
0x0001a880 ldr r4, [r3, 0x14] | r4 = "--wait-interval only makes sense with --wait\n";
0x0001a884 bl 0x12754 | r0 = errno_location ();
0x0001a888 ldr r0, [r0] | r0 = *(r0);
0x0001a88c bl 0x12508 | ip6tc_strerror ();
0x0001a890 ldr r1, [pc, 0xe4] | r1 = "Illegal option `-%c' with this command\n";
0x0001a894 mov r2, r5 | r2 = r5;
0x0001a898 mov r3, r0 | r3 = r0;
0x0001a89c mov r0, 3 | r0 = 3;
| label_91:
0x0001a8a0 blx r4 | uint32_t (*r4)(uint32_t, char*, uint32_t, uint32_t) (r0, "Illegal option `-%c' with this command\n", r2, r3);
| if (r5 != 0) {
0x0001a8a4 andeq sp, r1, ip, ror 2 |
| }
| if (r5 != 0) {
0x0001a8a8 andeq r1, r3, r4, asr r7 | r1 = r3 & (r4 >> r7);
| }
| if (r5 != 0) {
0x0001a8ac andeq r1, r3, ip, asr r7 | r1 = r3 & (ip >> r7);
| }
| if (r5 != 0) {
0x0001a8b0 andeq r1, r3, r0, ror 14 | r1 = r3 & (r0 >>> 14);
| }
| if (r5 != 0) {
0x0001a8b4 andeq r1, r3, ip, ror 14 | r1 = r3 & (ip >>> 14);
| }
| if (r5 != 0) {
0x0001a8b8 andeq r1, r3, ip, asr 14 | r1 = r3 & (ip >> 14);
| }
| if (r5 != 0) {
0x0001a8bc andeq r1, r3, ip, asr 9 | r1 = r3 & (ip >> 9);
| }
| if (r5 != 0) {
0x0001a8c0 andeq pc, r1, r7, lsr 24 | pc = r1 & (r7 >> 24);
| }
| if (r5 != 0) {
0x0001a8c4 andeq lr, r1, r3, lsl fp | lr = r1 & (r3 << fp);
| }
| if (r5 != 0) {
0x0001a8c8 andeq r1, r3, r8, asr 14 | r1 = r3 & (r8 >> 14);
| }
| if (r5 != 0) {
0x0001a8cc muleq r1, r4, sl | r1 = r4 * sl;
| }
| if (r5 != 0) {
0x0001a8d0 andeq lr, r1, r0, lsl 20 | lr = r1 & (r0 << 20);
| }
| if (r5 != 0) {
0x0001a8d4 andeq r1, r3, r0, ror r7 | r1 = r3 & (r0 >>> r7);
| }
| if (r5 != 0) {
0x0001a8d8 andeq lr, r1, r1, asr 18 | lr = r1 & (r1 >> 18);
| }
0x0001a8dc ldrdeq lr, pc, [r1], -pc | __asm ("ldrdeq lr, pc, [r1], -pc");
| if (r5 != 0) {
0x0001a8e0 andeq sp, r1, r0, asr sp |
| }
| if (r5 != 0) {
0x0001a8e4 andeq r1, r0, r0, lsr 32 | r1 = r0 & (r0 >> 32);
| }
| if (r5 != 0) {
0x0001a8e8 andeq sp, r1, fp, ror 26 |
| }
| if (r5 != 0) {
0x0001a8ec muleq r1, sp, sp | r1 = sp * sp;
| }
| if (r5 != 0) {
0x0001a8f0 andeq r1, r3, ip, lsr r7 | r1 = r3 & (ip >> r7);
| }
| if (r5 != 0) {
0x0001a8f4 andeq sp, r1, r8, asr 27 |
| }
0x0001a8f8 strdeq sp, lr, [r1], -r3 | __asm ("strdeq sp, lr, [r1], -r3");
| if (r5 != 0) {
0x0001a8fc andeq sp, r1, fp, lsl 28 |
| }
| if (r5 != 0) {
0x0001a900 andeq sp, r1, sl, lsr lr |
| }
| if (r5 != 0) {
0x0001a904 andeq sp, r1, ip, asr lr |
| }
| if (r5 != 0) {
0x0001a908 andeq pc, r1, r4, ror 4 | pc = r1 & (r4 >>> 4);
| }
| if (r5 != 0) {
0x0001a90c andeq r0, r2, r3, lsl 2 | r0 = r2 & (r3 << 2);
| }
| if (r5 != 0) {
0x0001a910 andeq pc, r1, r6, ror 22 | pc = r1 & (r6 >>> 22);
| }
| if (r5 != 0) {
0x0001a914 andeq lr, r1, r1, ror 18 | lr = r1 & (r1 >>> 18);
| }
| if (r5 != 0) {
0x0001a918 andeq pc, r1, sb, lsr 23 | pc = r1 & (sb >> 23);
| }
0x0001a91c invalid |
| }
| label_108:
0x0001aa1c ldr r3, [sp, 0x70] | r3 = var_70h;
0x0001aa20 sub r4, r3, 1 | r4 = r3 - 1;
0x0001aa24 cmp r3, 0x4000 |
0x0001aa28 cmpne r4, 1 | __asm ("cmpne r4, 1");
0x0001aa2c sub r3, r3, 8 | r3 -= 8;
| if (r3 > 0x4000) {
0x0001aa30 movls r4, 1 | r4 = 1;
| }
| if (r3 <= 0x4000) {
0x0001aa34 movhi r4, 0 | r4 = 0;
| }
0x0001aa38 bics r3, r3, 8 | __asm ("bics r3, r3, 8");
| if (r3 != 0x4000) {
0x0001aa3c moveq r4, 1 | r4 = 1;
| }
0x0001aa40 cmp r4, 0 |
| if (r4 == 0) {
0x0001aa44 beq 0x1abe0 | goto label_19;
| }
0x0001aa48 ldr r1, [pc, -0xd0] | r1 = "PREROUTING";
0x0001aa4c mov r0, sl | r0 = sl;
0x0001aa50 bl 0x1264c | r0 = strcmp (r0, "PREROUTING");
0x0001aa54 cmp r0, 0 |
| if (r0 != 0) {
0x0001aa58 beq 0x1aa70 |
0x0001aa5c ldr r1, [pc, -0xe0] | r1 = "INPUT";
0x0001aa60 mov r0, sl | r0 = sl;
0x0001aa64 bl 0x1264c | r0 = strcmp (r0, "INPUT");
0x0001aa68 cmp r0, 0 |
| if (r0 != 0) {
0x0001aa6c bne 0x1aa80 | goto label_109;
| }
| }
0x0001aa70 ldr r3, [sp, 0x160] | r3 = var_160h;
0x0001aa74 tst r3, 0x100 |
| if ((r3 & 0x100) == 0) {
0x0001aa78 movne r0, 0x100 | r0 = 0x100;
| }
| if ((r3 & 0x100) == 0) {
0x0001aa7c bne 0x1aab8 |
| label_109:
0x0001aa80 ldr r1, [pc, -0x100] | r1 = "POSTROUTING";
0x0001aa84 mov r0, sl | r0 = sl;
0x0001aa88 bl 0x1264c | r0 = strcmp (r0, "POSTROUTING");
0x0001aa8c cmp r0, 0 |
| if (r0 != 0) {
0x0001aa90 beq 0x1aaa8 |
0x0001aa94 ldr r1, [pc, -0x110] | r1 = "OUTPUT";
0x0001aa98 mov r0, sl | r0 = sl;
0x0001aa9c bl 0x1264c | r0 = strcmp (r0, "OUTPUT");
0x0001aaa0 cmp r0, 0 |
| if (r0 != 0) {
0x0001aaa4 bne 0x1aad8 | goto label_110;
| }
| }
0x0001aaa8 ldr r3, [sp, 0x160] | r3 = var_160h;
0x0001aaac tst r3, 0x80 |
| if ((r3 & 0x80) == 0) {
0x0001aab0 beq 0x1aad8 | goto label_110;
| }
0x0001aab4 mov r0, 0x80 | r0 = 0x80;
| }
0x0001aab8 bl 0x128c8 | fcn_000128c8 (r0);
0x0001aabc ldr r3, [pc, -0x124] | r3 = obj.xt_params;
0x0001aac0 ldr r1, [pc, -0x138] | r1 = "Can't use -%c with %s\n";
0x0001aac4 ldr r3, [r3] | r3 = *(r3);
0x0001aac8 ldr r4, [r3, 0x14] | r4 = *((r3 + 0x14));
0x0001aacc mov r3, sl | r3 = sl;
0x0001aad0 mov r2, r0 | r2 = r0;
0x0001aad4 b 0x1a078 | goto label_16;
| label_110:
0x0001aad8 ldr r3, [sp, 0x16c] | r3 = var_16ch;
0x0001aadc cmp r3, 0 |
| if (r3 != 0) {
0x0001aae0 beq 0x1ab34 |
0x0001aae4 mov r1, r5 | r1 = r5;
0x0001aae8 ldr r0, [sp, 0x188] | r0 = src;
0x0001aaec bl 0x125e0 | r0 = ip6tc_is_chain ();
0x0001aaf0 cmp r0, 0 |
| if (r0 != 0) {
0x0001aaf4 beq 0x1ab28 |
0x0001aaf8 ldr r3, [pc, -0x16c] | r3 = obj.stderr;
0x0001aafc ldr r2, [sp, 0x188] | r2 = src;
0x0001ab00 ldr r0, [r3] | r0 = *(r3);
0x0001ab04 ldr r1, [pc, -0x174] | r1 = "Warning: using chain %s, not extension\n";
0x0001ab08 bl 0x12478 | fprintf (r0, "Warning: using chain %s, not extension\n", r2, r3);
0x0001ab0c ldr r3, [sp, 0x16c] | r3 = var_16ch;
0x0001ab10 ldr r0, [r3, 0x58] | r0 = *((r3 + 0x58));
0x0001ab14 cmp r0, 0 |
| if (r0 != 0) {
0x0001ab18 beq 0x1ab20 |
0x0001ab1c bl 0x1285c | free (r0);
| }
0x0001ab20 mov r3, 0 | r3 = 0;
0x0001ab24 str r3, [sp, 0x16c] | var_16ch = r3;
| }
0x0001ab28 ldr r3, [sp, 0x16c] | r3 = var_16ch;
0x0001ab2c cmp r3, 0 |
| if (r3 != 0) {
0x0001ab30 bne 0x1acbc | goto label_111;
| }
| }
0x0001ab34 ldr r0, [sp, 0x188] | r0 = src;
0x0001ab38 ldrb r3, [r0] | r3 = *(r0);
0x0001ab3c cmp r3, 0 |
0x0001ab40 bne 0x1abbc |
| while (r0 != 0) {
0x0001ab44 mov r1, 3 | r1 = 3;
0x0001ab48 ldr r0, [pc, -0x1b4] | r0 = "Warning: using chain %s, not extension\n";
0x0001ab4c bl 0x12280 | xtables_find_target ();
0x0001ab50 ldr r4, [r0, 0x14] |
0x0001ab54 mov r5, r0 | r5 = r0;
0x0001ab58 add r4, r4, 0x20 | r4 = 0x1a9cc;
0x0001ab5c str r0, [sp, 0x16c] | var_16ch = r0;
0x0001ab60 mov r1, r4 | r1 = r4;
0x0001ab64 mov r0, 1 | r0 = 1;
0x0001ab68 bl 0x12340 | xtables_calloc ();
0x0001ab6c ldr r3, [sp, 0x16c] | r3 = var_16ch;
0x0001ab70 ldr r1, [sp, 0x188] | r1 = src;
0x0001ab74 str r0, [r5, 0x58] | *((r5 + 0x58)) = r0;
0x0001ab78 ldr r0, [r3, 0x58] | r0 = *((r3 + 0x58));
0x0001ab7c strh r4, [r0], 2 | *(r0) = r4;
| r0 += 2;
0x0001ab80 bl 0x12268 | strcpy (r0, r1)
0x0001ab84 ldr r0, [sp, 0x16c] | r0 = var_16ch;
0x0001ab88 bl 0x1bbdc | fcn_0001bbdc (r0);
| label_17:
0x0001ab8c ldr r3, [sp, 0x16c] | r3 = var_16ch;
0x0001ab90 cmp r3, 0 |
| if (r3 != 0) {
0x0001ab94 bne 0x1acbc | goto label_111;
| }
0x0001ab98 ldrb r4, [sp, 0x11b] | r4 = var_11bh;
0x0001ab9c ldr r2, [sp, 0x188] | r2 = src;
0x0001aba0 ands r4, r4, 4 | r4 &= 4;
| if (r4 == r4) {
0x0001aba4 beq 0x1abd4 | goto label_112;
| }
0x0001aba8 ldr r3, [pc, -0x210] | r3 = obj.xt_params;
0x0001abac ldr r1, [pc, -0x210] | r1 = "goto '%s' is not a chain\n";
0x0001abb0 ldr r3, [r3] | r3 = *(r3);
0x0001abb4 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0001abb8 b 0x19ef8 | goto label_7;
0x0001abbc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001abc0 ldr r1, [r3] | r1 = *(r3);
0x0001abc4 bl 0x125e0 | r0 = ip6tc_is_chain ();
0x0001abc8 cmp r0, 0 |
0x0001abcc bne 0x1ab44 |
| }
0x0001abd0 b 0x1ab8c | goto label_17;
| label_112:
0x0001abd4 mov r1, 3 | r1 = 3;
0x0001abd8 mov r0, r2 | r0 = r2;
0x0001abdc bl 0x12280 | xtables_find_target ();
| label_19:
0x0001abe0 ldr r5, [sp, 0x70] | r5 = var_70h;
0x0001abe4 cmp r5, 0x100 |
| if (r5 == 0x100) {
0x0001abe8 beq 0x1b774 | goto label_113;
| }
| if (r5 > 0x100) {
0x0001abec bhi 0x1ae90 | goto label_114;
| }
0x0001abf0 cmp r5, 0x10 |
| if (r5 == 0x10) {
0x0001abf4 beq 0x1b060 | goto label_115;
| }
| if (r5 > 0x10) {
0x0001abf8 bhi 0x1adf8 | goto label_116;
| }
0x0001abfc cmp r5, 2 |
| if (r5 == 2) {
0x0001ac00 beq 0x1b1c0 | goto label_117;
| }
0x0001ac04 sub sb, fp, 1 | sb = fp - 1;
| if (r5 > 2) {
0x0001ac08 bhi 0x1ad74 | goto label_118;
| }
0x0001ac0c cmp r5, 1 |
| if (r5 != 1) {
0x0001ac10 bne 0x1a558 | goto label_18;
| }
0x0001ac14 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001ac18 mov r6, 0 | r6 = 0;
0x0001ac1c str r3, [sp, 0x34] | var_34h = r3;
0x0001ac20 ldr r3, [sp, 0x60] | r3 = ptr;
0x0001ac24 add fp, r4, 0x10 |
0x0001ac28 str r3, [sp, 0x38] | var_38h = r3;
0x0001ac2c ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001ac30 str r3, [sp, 0x3c] | var_3ch = r3;
0x0001ac34 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0001ac38 str r3, [sp, 0x40] | var_40h = r3;
0x0001ac3c ldr r3, [sp, 0x64] | r3 = var_64h;
0x0001ac40 str r3, [sp, 0x44] | var_44h = r3;
0x0001ac44 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0001ac48 str r3, [sp, 0x48] | var_48h = r3;
0x0001ac4c ldr r3, [sp, 0x160] | r3 = var_160h;
0x0001ac50 and r3, r3, 0x20 | r3 &= 0x20;
0x0001ac54 str r3, [sp, 0x4c] | var_4ch = r3;
0x0001ac58 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001ac5c ldr r8, [r3] | r8 = *(r3);
0x0001ac60 add r3, r4, 0x20 | r3 = r4 + 0x20;
0x0001ac64 str r3, [sp, 0x54] | var_54h = r3;
| do {
0x0001ac68 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001ac6c cmp r3, r6 |
| if (r3 == r6) {
0x0001ac70 beq 0x1b0c4 | goto label_27;
| }
0x0001ac74 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001ac78 lsl ip, r6, 4 |
0x0001ac7c add r3, r3, ip | r3 += ip;
0x0001ac80 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001ac84 mov r7, 0 | r7 = 0;
0x0001ac88 stm r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
0x0001ac8c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001ac90 add r3, r3, ip | r3 += ip;
0x0001ac94 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001ac98 ldr ip, [sp, 0x54] | ip = var_54h;
0x0001ac9c stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001aca0 add r3, r4, 0x30 | r3 = r4 + 0x30;
0x0001aca4 str r3, [sp, 0x50] | var_50h = r3;
| label_30:
0x0001aca8 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001acac cmp r3, r7 |
| if (r3 != r7) {
0x0001acb0 bne 0x1b360 | goto label_119;
| }
0x0001acb4 add r6, r6, 1 | r6++;
0x0001acb8 b 0x1ac68 |
| } while (1);
| label_111:
0x0001acbc ldr r7, [sp, 0x164] | r7 = var_164h;
0x0001acc0 ldr r8, [r3, 0x58] | r8 = *((r3 + 0x58));
0x0001acc4 mov r6, r7 | r6 = r7;
0x0001acc8 mov r5, 0xa8 | r5 = 0xa8;
| do {
0x0001accc cmp r6, 0 |
| if (r6 == 0) {
0x0001acd0 bne 0x1ad34 |
0x0001acd4 ldrh r0, [r8] | r0 = *(r8);
0x0001acd8 add r0, r0, r5 | r0 += r5;
0x0001acdc bl 0x124a8 | xtables_malloc ();
0x0001ace0 mov r2, 0xa8 | r2 = 0xa8;
0x0001ace4 add r1, sp, 0x98 | r1 += s2;
0x0001ace8 lsl r5, r5, 0x10 | r5 <<= 0x10;
0x0001acec lsr r5, r5, 0x10 | r5 >>= 0x10;
0x0001acf0 mov r4, r0 | r4 = r0;
0x0001acf4 bl 0x12370 | memcpy (r0, r1, r2);
0x0001acf8 ldrh r3, [r8] | r3 = *(r8);
0x0001acfc strh r5, [r4, 0x8c] | *((r4 + 0x8c)) = r5;
0x0001ad00 add r5, r5, r3 | r5 += r3;
0x0001ad04 strh r5, [r4, 0x8e] | *((r4 + 0x8e)) = r5;
0x0001ad08 add r5, r4, 0xa8 | r5 = r4 + 0xa8;
| label_20:
0x0001ad0c cmp r7, 0 |
0x0001ad10 add r0, r5, r6 | r0 = r5 + r6;
| if (r7 != 0) {
0x0001ad14 bne 0x1ad4c | goto label_120;
| }
0x0001ad18 ldrh r2, [r8] | r2 = *(r8);
0x0001ad1c mov r1, r8 | r1 = r8;
0x0001ad20 bl 0x12370 | memcpy (r0, r1, r2);
0x0001ad24 ldr r3, [sp, 0x16c] | r3 = var_16ch;
0x0001ad28 ldr r0, [r3, 0x58] | r0 = *((r3 + 0x58));
0x0001ad2c bl 0x1285c | free (r0);
0x0001ad30 b 0x1abe0 | goto label_19;
| }
0x0001ad34 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0001ad38 ldr r6, [r6] | r6 = *(r6);
0x0001ad3c ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
0x0001ad40 ldrh r3, [r3] | r3 = *(r3);
0x0001ad44 add r5, r5, r3 | r5 += r3;
0x0001ad48 b 0x1accc |
| } while (1);
| label_120:
0x0001ad4c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0001ad50 ldr r1, [r3, 0x58] | r1 = *((r3 + 0x58));
0x0001ad54 ldrh r2, [r1] | r2 = *(r1);
0x0001ad58 bl 0x12370 | memcpy (r0, r1, r2);
0x0001ad5c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0001ad60 ldr r7, [r7] | r7 = *(r7);
0x0001ad64 ldr r3, [r3, 0x58] | r3 = *((r3 + 0x58));
0x0001ad68 ldrh r3, [r3] | r3 = *(r3);
0x0001ad6c add r6, r6, r3 | r6 += r3;
0x0001ad70 b 0x1ad0c | goto label_20;
| label_118:
0x0001ad74 cmp r5, 4 |
| if (r5 == 4) {
0x0001ad78 beq 0x1b2e4 | goto label_121;
| }
0x0001ad7c cmp r5, 8 |
| if (r5 != 8) {
0x0001ad80 bne 0x1a558 | goto label_18;
| }
0x0001ad84 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001ad88 ldr r7, [sp, 0x64] | r7 = var_64h;
0x0001ad8c ldr r6, [r3] | r6 = *(r3);
0x0001ad90 ldr r3, [sp, 0x60] | r3 = ptr;
0x0001ad94 ldr r8, [sp, 0x160] | r8 = var_160h;
0x0001ad98 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001ad9c ldr r5, [sp, 0x68] | r5 = var_68h;
0x0001ada0 ldr lr, [sp, 0x6c] | lr = var_6ch;
0x0001ada4 stm r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
0x0001ada8 ldm r7, {r0, r1, r2, r3} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
| r3 = *((r7 + 12));
0x0001adac add ip, r4, 0x10 |
0x0001adb0 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001adb4 ldm r5, {r0, r1, r2, r3} | r0 = *(r5);
| r1 = *((r5 + 4));
| r2 = *((r5 + 8));
| r3 = *((r5 + 12));
0x0001adb8 add ip, r4, 0x20 |
0x0001adbc stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001adc0 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x0001adc4 add ip, r4, 0x30 |
0x0001adc8 tst r8, 0x20 |
0x0001adcc stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
| if ((r8 & 0x20) != 0) {
0x0001add0 beq 0x1ade0 |
0x0001add4 mov r1, r6 | r1 = r6;
0x0001add8 mov r0, r4 | r0 = r4;
0x0001addc bl 0x18f94 | fcn_00018f94 (r0, r1);
| }
0x0001ade0 mov r3, r6 | r3 = r6;
0x0001ade4 mov r2, sb | r2 = sb;
0x0001ade8 mov r1, r4 | r1 = r4;
0x0001adec mov r0, sl | r0 = sl;
0x0001adf0 bl 0x1279c | ip6tc_replace_entry ();
0x0001adf4 b 0x1b2f8 | goto label_31;
| label_116:
0x0001adf8 cmp r5, 0x40 |
0x0001adfc ldr r1, [sp, 0x160] | r1 = var_160h;
| if (r5 == 0x40) {
0x0001ae00 beq 0x1b3c0 | goto label_122;
| }
| if (r5 > 0x40) {
0x0001ae04 bhi 0x1ae80 | goto label_123;
| }
0x0001ae08 cmp r5, 0x20 |
| if (r5 != 0x20) {
| label_21:
0x0001ae0c bne 0x1a558 | goto label_18;
| }
| label_24:
0x0001ae10 ldr r3, [sp, 0x160] | r3 = var_160h;
0x0001ae14 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0001ae18 tst r3, 0x20 |
0x0001ae1c ldr r7, [r0] | r7 = *(r0);
| if ((r3 & 0x20) == 0) {
0x0001ae20 movne r6, 0x48 | r6 = 0x48;
| }
| if ((r3 & 0x20) != 0) {
0x0001ae24 moveq r6, 0xa | r6 = 0xa;
| }
0x0001ae28 and r1, r3, 0x40 | r1 = r3 & 0x40;
0x0001ae2c tst r3, 1 |
| if ((r3 & 1) == 0) {
0x0001ae30 orrne r6, r6, 1 | r6 |= 1;
| }
0x0001ae34 and r2, r3, 0x200 | r2 = r3 & 0x200;
0x0001ae38 cmp r1, 0 |
| if (r1 != 0) {
0x0001ae3c orreq r6, r6, 4 | r6 |= 4;
| }
0x0001ae40 mov r0, r7 | r0 = r7;
0x0001ae44 cmp r2, 0 |
| if (r2 == 0) {
0x0001ae48 orrne r6, r6, 0x100 | r6 |= 0x100;
| }
0x0001ae4c bl 0x127fc | ip6tc_first_chain ();
0x0001ae50 ldr sb, [pc, -0x4b0] | sb = obj.stdout;
0x0001ae54 mov r5, 0 | r5 = 0;
0x0001ae58 mov r8, r0 | r8 = r0;
| label_32:
0x0001ae5c cmp r8, 0 |
| if (r8 != 0) {
0x0001ae60 bne 0x1b3f0 | goto label_124;
| }
| label_22:
0x0001ae64 bl 0x12754 | errno_location ();
0x0001ae68 mov r3, 2 | r3 = 2;
0x0001ae6c cmp r5, 0 |
0x0001ae70 str r3, [r0] | *(r0) = r3;
| if (r5 != 0) {
0x0001ae74 bne 0x1b738 | goto label_125;
| }
| label_41:
0x0001ae78 mov r5, 0 | r5 = 0;
0x0001ae7c b 0x1b0c4 | goto label_27;
| label_123:
0x0001ae80 cmp r5, 0x80 |
| if (r5 == 0x80) {
0x0001ae84 beq 0x1b3d8 | goto label_126;
| }
0x0001ae88 cmp r5, 0xa0 |
0x0001ae8c b 0x1ae0c | goto label_21;
| label_114:
0x0001ae90 cmp r5, 0x1080 |
| if (r5 == 0x1080) {
0x0001ae94 beq 0x1aedc | goto label_25;
| }
| if (r5 > 0x1080) {
0x0001ae98 bhi 0x1af64 | goto label_127;
| }
0x0001ae9c cmp r5, 0x400 |
| if (r5 == 0x400) {
0x0001aea0 beq 0x1b7a0 | goto label_128;
| }
| if (r5 > 0x400) {
0x0001aea4 bhi 0x1aecc | goto label_129;
| }
0x0001aea8 cmp r5, 0x200 |
| if (r5 != 0x200) {
0x0001aeac bne 0x1a558 | goto label_18;
| }
0x0001aeb0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001aeb4 ldr r1, [sp, 0x160] | r1 = var_160h;
0x0001aeb8 ldr r2, [r3] | r2 = *(r3);
0x0001aebc and r1, r1, 0x20 | r1 &= 0x20;
0x0001aec0 mov r0, sl | r0 = sl;
0x0001aec4 bl 0x1948c | fcn_0001948c (r0, r1);
0x0001aec8 b 0x1b2f8 | goto label_31;
| label_129:
0x0001aecc cmp r5, 0x800 |
| if (r5 == 0x800) {
0x0001aed0 beq 0x1b788 | goto label_130;
| }
0x0001aed4 cmp r5, 0x1000 |
| if (r5 != 0x1000) {
0x0001aed8 bne 0x1a558 | goto label_18;
| }
| label_25:
0x0001aedc ldr r7, [sp, 0x160] | r7 = var_160h;
0x0001aee0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001aee4 ldr r6, [r3] | r6 = *(r3);
0x0001aee8 and r3, r7, 0x20 | r3 = r7 & 0x20;
0x0001aeec ands r7, r7, 0x20 | r7 &= 0x20;
| if (r7 == r7) {
0x0001aef0 mvnne r7, 0 | r7 = ~0;
| }
0x0001aef4 cmp fp, 0 |
0x0001aef8 str r3, [sp, 0x34] | var_34h = r3;
| if (fp == 0) {
0x0001aefc beq 0x1b64c | goto label_131;
| }
| label_38:
0x0001af00 mov r0, r6 | r0 = r6;
0x0001af04 bl 0x127fc | ip6tc_first_chain ();
0x0001af08 mov r5, 0 | r5 = 0;
0x0001af0c mov r8, r0 | r8 = r0;
| label_23:
0x0001af10 cmp r8, 0 |
| if (r8 == 0) {
0x0001af14 beq 0x1ae64 | goto label_22;
| }
0x0001af18 cmp sl, 0 |
| if (sl != 0) {
0x0001af1c beq 0x1af34 |
0x0001af20 mov r1, sl | r1 = sl;
0x0001af24 mov r0, r8 | r0 = r8;
0x0001af28 bl 0x1264c | r0 = strcmp (r0, r1);
0x0001af2c cmp r0, 0 |
| if (r0 != 0) {
0x0001af30 bne 0x1af54 | goto label_132;
| }
| }
0x0001af34 mov r1, r6 | r1 = r6;
0x0001af38 mov r0, r8 | r0 = r8;
0x0001af3c bl 0x125d4 | ip6tc_first_rule ();
0x0001af40 mov sb, 0 | sb = 0;
0x0001af44 mov r5, r0 | r5 = r0;
| label_40:
0x0001af48 cmp r5, 0 |
| if (r5 != 0) {
0x0001af4c bne 0x1b700 | goto label_133;
| }
0x0001af50 mov r5, 1 | r5 = 1;
| label_132:
0x0001af54 mov r0, r6 | r0 = r6;
0x0001af58 bl 0x12730 | r0 = ip6tc_next_chain ();
0x0001af5c mov r8, r0 | r8 = r0;
0x0001af60 b 0x1af10 | goto label_23;
| label_127:
0x0001af64 ldr r3, [pc, -0x5c0] | r3 = *(0x0001a9ac);
0x0001af68 cmp r5, r3 |
| if (r5 == r3) {
0x0001af6c beq 0x1ae10 | goto label_24;
| }
| if (r5 > r3) {
0x0001af70 bhi 0x1af94 | goto label_134;
| }
0x0001af74 cmp r5, 0x2000 |
| if (r5 != 0x2000) {
0x0001af78 bne 0x1a558 | goto label_18;
| }
| label_42:
0x0001af7c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001af80 mov r1, fp | r1 = fp;
0x0001af84 ldr r2, [r3] | r2 = *(r3);
0x0001af88 mov r0, sl | r0 = sl;
0x0001af8c bl 0x122a4 | ip6tc_zero_counter ();
0x0001af90 b 0x1b2f8 | goto label_31;
| label_134:
0x0001af94 cmp r5, 0x3000 |
| if (r5 == 0x3000) {
0x0001af98 beq 0x1aedc | goto label_25;
| }
0x0001af9c cmp r5, 0x4000 |
| if (r5 != 0x4000) {
0x0001afa0 bne 0x1a558 | goto label_18;
| }
0x0001afa4 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001afa8 ldr r1, [sp, 0x16c] | r1 = var_16ch;
0x0001afac str r3, [sp, 0x34] | var_34h = r3;
0x0001afb0 ldr r3, [sp, 0x60] | r3 = ptr;
0x0001afb4 ldr r0, [sp, 0x164] | r0 = var_164h;
0x0001afb8 str r3, [sp, 0x38] | var_38h = r3;
0x0001afbc ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001afc0 mov r5, 1 | r5 = 1;
0x0001afc4 str r3, [sp, 0x3c] | var_3ch = r3;
0x0001afc8 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0001afcc mov r6, 0 | r6 = 0;
0x0001afd0 str r3, [sp, 0x40] | var_40h = r3;
0x0001afd4 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0001afd8 add fp, r4, 0x10 |
0x0001afdc str r3, [sp, 0x44] | var_44h = r3;
0x0001afe0 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0001afe4 str r3, [sp, 0x48] | var_48h = r3;
0x0001afe8 ldr r3, [sp, 0x160] | r3 = var_160h;
0x0001afec and r3, r3, 0x20 | r3 &= 0x20;
0x0001aff0 str r3, [sp, 0x4c] | var_4ch = r3;
0x0001aff4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001aff8 ldr r8, [r3] | r8 = *(r3);
0x0001affc bl 0x18fbc | fcn_00018fbc (r0, r1);
0x0001b000 add r3, r4, 0x20 | r3 = r4 + 0x20;
0x0001b004 str r3, [sp, 0x54] | var_54h = r3;
0x0001b008 mov sb, r0 | sb = r0;
| do {
0x0001b00c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001b010 cmp r3, r6 |
| if (r3 == r6) {
0x0001b014 beq 0x1b234 | goto label_135;
| }
0x0001b018 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001b01c lsl ip, r6, 4 |
0x0001b020 add r3, r3, ip | r3 += ip;
0x0001b024 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b028 mov r7, 0 | r7 = 0;
0x0001b02c stm r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
0x0001b030 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001b034 add r3, r3, ip | r3 += ip;
0x0001b038 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b03c ldr ip, [sp, 0x54] | ip = var_54h;
0x0001b040 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001b044 add r3, r4, 0x30 | r3 = r4 + 0x30;
0x0001b048 str r3, [sp, 0x50] | var_50h = r3;
| label_29:
0x0001b04c ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001b050 cmp r3, r7 |
| if (r3 != r7) {
0x0001b054 bne 0x1b300 | goto label_136;
| }
0x0001b058 add r6, r6, 1 | r6++;
0x0001b05c b 0x1b00c |
| } while (1);
| label_115:
0x0001b060 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001b064 mov r5, 1 | r5 = 1;
0x0001b068 str r3, [sp, 0x34] | var_34h = r3;
0x0001b06c ldr r3, [sp, 0x60] | r3 = ptr;
0x0001b070 mov r6, 0 | r6 = 0;
0x0001b074 str r3, [sp, 0x38] | var_38h = r3;
0x0001b078 ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001b07c add fp, r4, 0x20 |
0x0001b080 str r3, [sp, 0x3c] | var_3ch = r3;
0x0001b084 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0001b088 str r3, [sp, 0x40] | var_40h = r3;
0x0001b08c ldr r3, [sp, 0x64] | r3 = var_64h;
0x0001b090 str r3, [sp, 0x44] | var_44h = r3;
0x0001b094 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0001b098 str r3, [sp, 0x48] | var_48h = r3;
0x0001b09c ldr r3, [sp, 0x160] | r3 = var_160h;
0x0001b0a0 and r3, r3, 0x20 | r3 &= 0x20;
0x0001b0a4 str r3, [sp, 0x4c] | var_4ch = r3;
0x0001b0a8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b0ac ldr r7, [r3] | r7 = *(r3);
0x0001b0b0 add r3, r4, 0x10 | r3 = r4 + 0x10;
0x0001b0b4 str r3, [sp, 0x50] | var_50h = r3;
| do {
0x0001b0b8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001b0bc cmp r3, r6 |
| if (r3 == r6) {
0x0001b0c0 bne 0x1b128 |
| label_27:
0x0001b0c4 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0001b0c8 cmp r3, 1 |
| if (r3 > 1) {
0x0001b0cc ble 0x1b0dc |
0x0001b0d0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b0d4 ldr r0, [r3] | r0 = *(r3);
0x0001b0d8 bl 0x124c0 | dump_entries6 ();
| }
0x0001b0dc add r0, sp, 0x164 | r0 += var_164h;
0x0001b0e0 bl 0x1228c | xtables_rule_matches_free ();
0x0001b0e4 cmp r4, 0 |
| if (r4 != 0) {
0x0001b0e8 beq 0x1b0f4 |
0x0001b0ec mov r0, r4 | r0 = r4;
0x0001b0f0 bl 0x1285c | free (r0);
| }
0x0001b0f4 ldr r0, [sp, 0x60] | r0 = ptr;
0x0001b0f8 bl 0x1285c | free (r0);
0x0001b0fc ldr r0, [sp, 0x68] | r0 = var_68h;
0x0001b100 bl 0x1285c | free (r0);
0x0001b104 ldr r0, [sp, 0x64] | r0 = var_64h;
0x0001b108 bl 0x1285c | free (r0);
0x0001b10c ldr r0, [sp, 0x6c] | r0 = var_6ch;
0x0001b110 bl 0x1285c | free (r0);
0x0001b114 mov r0, 1 | r0 = 1;
0x0001b118 bl 0x125f8 | xtables_free_opts ();
| label_98:
0x0001b11c mov r0, r5 | r0 = r5;
0x0001b120 add sp, sp, 0x19c |
0x0001b124 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0001b128 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001b12c lsl ip, r6, 4 |
0x0001b130 add r3, r3, ip | r3 += ip;
0x0001b134 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b138 mov r8, 0 | r8 = 0;
0x0001b13c stm r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
0x0001b140 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001b144 add sb, r4, 0x30 | sb = r4 + 0x30;
0x0001b148 add r3, r3, ip | r3 += ip;
0x0001b14c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b150 stm fp, {r0, r1, r2, r3} | *(fp) = r0;
| *((fp + 4)) = r1;
| *((fp + 8)) = r2;
| *((fp + 12)) = r3;
| label_26:
0x0001b154 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001b158 cmp r3, r8 |
| if (r3 != r8) {
0x0001b15c addeq r6, r6, 1 | r6++;
| }
0x0001b160 beq 0x1b0b8 |
| } while (r3 == r8);
0x0001b164 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001b168 lsl ip, r8, 4 |
0x0001b16c add r3, r3, ip | r3 += ip;
0x0001b170 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b174 ldr lr, [sp, 0x50] | lr = var_50h;
0x0001b178 stm lr, {r0, r1, r2, r3} | *(lr) = r0;
| *((lr + 4)) = r1;
| *((lr + 8)) = r2;
| *((lr + 12)) = r3;
0x0001b17c ldr r3, [sp, 0x48] | r3 = var_48h;
0x0001b180 add r3, r3, ip | r3 += ip;
0x0001b184 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b188 stm sb, {r0, r1, r2, r3} | *(sb) = r0;
| *((sb + 4)) = r1;
| *((sb + 8)) = r2;
| *((sb + 12)) = r3;
0x0001b18c ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0001b190 cmp r3, 0 |
| if (r3 != 0) {
0x0001b194 beq 0x1b1a4 |
0x0001b198 mov r1, r7 | r1 = r7;
0x0001b19c mov r0, r4 | r0 = r4;
0x0001b1a0 bl 0x18f94 | fcn_00018f94 (r0, r1);
| }
0x0001b1a4 mov r2, r7 | r2 = r7;
0x0001b1a8 mov r1, r4 | r1 = r4;
0x0001b1ac mov r0, sl | r0 = sl;
0x0001b1b0 bl 0x12808 | ip6tc_append_entry ();
0x0001b1b4 add r8, r8, 1 | r8++;
0x0001b1b8 and r5, r5, r0 | r5 &= r0;
0x0001b1bc b 0x1b154 | goto label_26;
| label_117:
0x0001b1c0 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001b1c4 ldr r1, [sp, 0x16c] | r1 = var_16ch;
0x0001b1c8 str r3, [sp, 0x34] | var_34h = r3;
0x0001b1cc ldr r3, [sp, 0x60] | r3 = ptr;
0x0001b1d0 ldr r0, [sp, 0x164] | r0 = var_164h;
0x0001b1d4 str r3, [sp, 0x38] | var_38h = r3;
0x0001b1d8 ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001b1dc mov r5, 1 | r5 = 1;
0x0001b1e0 str r3, [sp, 0x3c] | var_3ch = r3;
0x0001b1e4 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0001b1e8 mov r6, 0 | r6 = 0;
0x0001b1ec str r3, [sp, 0x40] | var_40h = r3;
0x0001b1f0 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0001b1f4 add fp, r4, 0x10 |
0x0001b1f8 str r3, [sp, 0x44] | var_44h = r3;
0x0001b1fc ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0001b200 str r3, [sp, 0x48] | var_48h = r3;
0x0001b204 ldr r3, [sp, 0x160] | r3 = var_160h;
0x0001b208 and r3, r3, 0x20 | r3 &= 0x20;
0x0001b20c str r3, [sp, 0x4c] | var_4ch = r3;
0x0001b210 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b214 ldr r8, [r3] | r8 = *(r3);
0x0001b218 bl 0x18fbc | fcn_00018fbc (r0, r1);
0x0001b21c add r3, r4, 0x20 | r3 = r4 + 0x20;
0x0001b220 str r3, [sp, 0x54] | var_54h = r3;
0x0001b224 mov sb, r0 | sb = r0;
| do {
0x0001b228 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001b22c cmp r3, r6 |
| if (r3 == r6) {
0x0001b230 bne 0x1b240 |
| label_135:
0x0001b234 mov r0, sb | r0 = sb;
0x0001b238 bl 0x1285c | free (r0);
0x0001b23c b 0x1b0c4 | goto label_27;
| }
0x0001b240 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001b244 lsl ip, r6, 4 |
0x0001b248 add r3, r3, ip | r3 += ip;
0x0001b24c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b250 mov r7, 0 | r7 = 0;
0x0001b254 stm r4, {r0, r1, r2, r3} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
| *((r4 + 12)) = r3;
0x0001b258 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001b25c add r3, r3, ip | r3 += ip;
0x0001b260 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b264 ldr ip, [sp, 0x54] | ip = var_54h;
0x0001b268 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001b26c add r3, r4, 0x30 | r3 = r4 + 0x30;
0x0001b270 str r3, [sp, 0x50] | var_50h = r3;
| label_28:
0x0001b274 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001b278 cmp r3, r7 |
| if (r3 != r7) {
0x0001b27c addeq r6, r6, 1 | r6++;
| }
0x0001b280 beq 0x1b228 |
| } while (r3 == r7);
0x0001b284 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001b288 lsl ip, r7, 4 |
0x0001b28c add r3, r3, ip | r3 += ip;
0x0001b290 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b294 stm fp, {r0, r1, r2, r3} | *(fp) = r0;
| *((fp + 4)) = r1;
| *((fp + 8)) = r2;
| *((fp + 12)) = r3;
0x0001b298 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0001b29c add r3, r3, ip | r3 += ip;
0x0001b2a0 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b2a4 ldr ip, [sp, 0x50] | ip = var_50h;
0x0001b2a8 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001b2ac ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0001b2b0 cmp r3, 0 |
| if (r3 != 0) {
0x0001b2b4 beq 0x1b2c4 |
0x0001b2b8 mov r1, r8 | r1 = r8;
0x0001b2bc mov r0, r4 | r0 = r4;
0x0001b2c0 bl 0x18f94 | fcn_00018f94 (r0, r1);
| }
0x0001b2c4 mov r3, r8 | r3 = r8;
0x0001b2c8 mov r2, sb | r2 = sb;
0x0001b2cc mov r1, r4 | r1 = r4;
0x0001b2d0 mov r0, sl | r0 = sl;
0x0001b2d4 bl 0x12430 | ip6tc_delete_entry ();
0x0001b2d8 add r7, r7, 1 | r7++;
0x0001b2dc and r5, r5, r0 | r5 &= r0;
0x0001b2e0 b 0x1b274 | goto label_28;
| label_121:
0x0001b2e4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b2e8 mov r1, sb | r1 = sb;
0x0001b2ec ldr r2, [r3] | r2 = *(r3);
0x0001b2f0 mov r0, sl | r0 = sl;
0x0001b2f4 bl 0x12694 | r0 = ip6tc_delete_num_entry ();
| do {
| label_31:
0x0001b2f8 mov r5, r0 | r5 = r0;
0x0001b2fc b 0x1b0c4 | goto label_27;
| label_136:
0x0001b300 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001b304 lsl ip, r7, 4 |
0x0001b308 add r3, r3, ip | r3 += ip;
0x0001b30c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b310 stm fp, {r0, r1, r2, r3} | *(fp) = r0;
| *((fp + 4)) = r1;
| *((fp + 8)) = r2;
| *((fp + 12)) = r3;
0x0001b314 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0001b318 add r3, r3, ip | r3 += ip;
0x0001b31c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b320 ldr ip, [sp, 0x50] | ip = var_50h;
0x0001b324 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001b328 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0001b32c cmp r3, 0 |
| if (r3 != 0) {
0x0001b330 beq 0x1b340 |
0x0001b334 mov r1, r8 | r1 = r8;
0x0001b338 mov r0, r4 | r0 = r4;
0x0001b33c bl 0x18f94 | fcn_00018f94 (r0, r1);
| }
0x0001b340 mov r3, r8 | r3 = r8;
0x0001b344 mov r2, sb | r2 = sb;
0x0001b348 mov r1, r4 | r1 = r4;
0x0001b34c mov r0, sl | r0 = sl;
0x0001b350 bl 0x12790 | ip6tc_check_entry ();
0x0001b354 add r7, r7, 1 | r7++;
0x0001b358 and r5, r5, r0 | r5 &= r0;
0x0001b35c b 0x1b04c | goto label_29;
| label_119:
0x0001b360 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001b364 lsl ip, r7, 4 |
0x0001b368 add r3, r3, ip | r3 += ip;
0x0001b36c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b370 stm fp, {r0, r1, r2, r3} | *(fp) = r0;
| *((fp + 4)) = r1;
| *((fp + 8)) = r2;
| *((fp + 12)) = r3;
0x0001b374 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0001b378 add r3, r3, ip | r3 += ip;
0x0001b37c ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x0001b380 ldr ip, [sp, 0x50] | ip = var_50h;
0x0001b384 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0001b388 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0001b38c cmp r3, 0 |
| if (r3 != 0) {
0x0001b390 beq 0x1b3a0 |
0x0001b394 mov r1, r8 | r1 = r8;
0x0001b398 mov r0, r4 | r0 = r4;
0x0001b39c bl 0x18f94 | fcn_00018f94 (r0, r1);
| }
0x0001b3a0 mov r3, r8 | r3 = r8;
0x0001b3a4 mov r2, sb | r2 = sb;
0x0001b3a8 mov r1, r4 | r1 = r4;
0x0001b3ac mov r0, sl | r0 = sl;
0x0001b3b0 bl 0x126ac | ip6tc_insert_entry ();
0x0001b3b4 add r7, r7, 1 | r7++;
0x0001b3b8 and r5, r5, r0 | r5 &= r0;
0x0001b3bc b 0x1aca8 | goto label_30;
| label_122:
0x0001b3c0 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b3c4 and r1, r1, 0x20 | r1 &= 0x20;
0x0001b3c8 ldr r2, [r3] | r2 = *(r3);
0x0001b3cc mov r0, sl | r0 = sl;
0x0001b3d0 bl 0x19430 | fcn_00019430 (r0, r1);
0x0001b3d4 b 0x1b2f8 |
| } while (1);
| label_126:
0x0001b3d8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b3dc and r1, r1, 0x20 | r1 &= 0x20;
0x0001b3e0 ldr r2, [r3] | r2 = *(r3);
0x0001b3e4 mov r0, sl | r0 = sl;
0x0001b3e8 bl 0x194e0 | fcn_000194e0 (r0, r1);
0x0001b3ec b 0x1b2f8 | goto label_31;
| label_124:
0x0001b3f0 cmp sl, 0 |
| if (sl != 0) {
0x0001b3f4 beq 0x1b40c |
0x0001b3f8 mov r1, r8 | r1 = r8;
0x0001b3fc mov r0, sl | r0 = sl;
0x0001b400 bl 0x1264c | r0 = strcmp (r0, r1);
0x0001b404 cmp r0, 0 |
| if (r0 != 0) {
0x0001b408 bne 0x1b59c | goto label_137;
| }
| }
0x0001b40c cmp r5, 0 |
| if (r5 != 0) {
0x0001b410 beq 0x1b41c |
0x0001b414 mov r0, 0xa | r0 = 0xa;
0x0001b418 bl 0x1225c | putchar (r0);
| }
0x0001b41c cmp fp, 0 |
| if (fp != 0) {
0x0001b420 bne 0x1b57c | goto label_138;
| }
0x0001b424 mov r2, r7 | r2 = r7;
0x0001b428 add r1, sp, 0x88 | r1 += var_88h;
0x0001b42c mov r0, r8 | r0 = r8;
0x0001b430 bl 0x12640 | ip6tc_get_policy ();
0x0001b434 mov r1, r8 | r1 = r8;
0x0001b438 and r5, r6, 2 | r5 = r6 & 2;
0x0001b43c str r0, [sp, 0x34] | var_34h = r0;
0x0001b440 ldr r0, [pc, -0xa98] | r0 = "Chain %s";
0x0001b444 bl 0x122b0 | printf (r0, r1, r2, r3, r4, r5);
0x0001b448 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001b44c cmp r3, 0 |
| if (r3 == 0) {
0x0001b450 beq 0x1b5c4 | goto label_139;
| }
0x0001b454 mov r1, r3 | r1 = r3;
0x0001b458 ldr r0, [pc, -0xaac] | r0 = "_policy__s";
0x0001b45c bl 0x122b0 | printf ("_policy__s", r1);
0x0001b460 cmp r5, 0 |
| if (r5 != 0) {
0x0001b464 bne 0x1b4d4 | goto label_140;
| }
0x0001b468 ldr r1, [sb] | r1 = *(sb);
0x0001b46c ldr r3, [r1, 0x34] | r3 = *((r1 + 0x34));
0x0001b470 cmp r3, 0 |
| if (r3 == 0) {
0x0001b474 beq 0x1b5b8 | goto label_141;
| }
0x0001b478 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0001b47c ldr r2, [r1, 0x1c] | r2 = *((r1 + 0x1c));
0x0001b480 cmp r3, r2 |
| if (r3 >= r2) {
0x0001b484 bhs 0x1b5ac | goto label_142;
| }
0x0001b488 add r2, r3, 1 | r2 = r3 + 1;
0x0001b48c str r2, [r1, 0x10] | *((r1 + 0x10)) = r2;
0x0001b490 mov r2, 0x20 | r2 = 0x20;
0x0001b494 strb r2, [r3] | *(r3) = r2;
| do {
| label_33:
0x0001b498 orr r3, r6, 0x10 | r3 = r6 | 0x10;
0x0001b49c mov r2, r3 | r2 = r3;
0x0001b4a0 ldrd r0, r1, [sp, 0x88] | __asm ("ldrd r0, r1, [var_88h]");
0x0001b4a4 str r3, [sp, 0x34] | var_34h = r3;
0x0001b4a8 bl 0x12304 | xtables_print_num ();
0x0001b4ac ldr r1, [sb] | r1 = *(sb);
0x0001b4b0 ldr r0, [pc, -0xb00] | r0 = "packets__";
0x0001b4b4 bl 0x127d8 | fputs ("packets__", r1);
0x0001b4b8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001b4bc ldrd r0, r1, [sp, 0x90] | __asm ("ldrd r0, r1, [var_90h]");
0x0001b4c0 mov r2, r3 | r2 = r3;
0x0001b4c4 bl 0x12304 | xtables_print_num ();
0x0001b4c8 ldr r1, [sb] | r1 = *(sb);
0x0001b4cc ldr r0, [pc, -0xacc] | r0 = "bytes";
0x0001b4d0 bl 0x127d8 | fputs ("bytes", r1);
| label_140:
0x0001b4d4 ldr r0, [pc, -0xb20] | r0 = "packets__";
| label_34:
0x0001b4d8 bl 0x123a0 | puts ("packets__");
| label_35:
0x0001b4dc tst r6, 0x100 |
| if ((r6 & 0x100) != 0) {
0x0001b4e0 beq 0x1b4f0 |
0x0001b4e4 ldr r1, [pc, -0xb2c] | r1 = "num";
0x0001b4e8 ldr r0, [pc, -0xb2c] | r0 = "__4s_";
0x0001b4ec bl 0x122b0 | printf ("__4s_", "num");
| }
0x0001b4f0 cmp r5, 0 |
| if (r5 == 0) {
0x0001b4f4 bne 0x1b518 |
0x0001b4f8 tst r6, 4 |
0x0001b4fc ldr r1, [pc, -0xb3c] | r1 = "pkts";
| if ((r6 & 4) == 0) {
0x0001b500 beq 0x1b5f0 | goto label_143;
| }
0x0001b504 ldr r0, [pc, -0xb40] | r0 = "%5s ";
0x0001b508 bl 0x122b0 | printf ("%5s ");
0x0001b50c ldr r1, [pc, -0xb0c] | r1 = "bytes";
0x0001b510 ldr r0, [pc, -0xb4c] | r0 = "%5s ";
| label_36:
0x0001b514 bl 0x122b0 | printf ("%5s ", "bytes");
| }
0x0001b518 ldr r1, [pc, -0xb50] | r1 = "target";
0x0001b51c ldr r0, [pc, -0xb50] | r0 = "%-9s ";
0x0001b520 bl 0x122b0 | printf ("%-9s ", "target");
0x0001b524 ldr r1, [sb] | r1 = *(sb);
0x0001b528 ldr r0, [pc, -0xb58] | r0 = "prot_";
0x0001b52c bl 0x127d8 | fputs ("prot_", r1);
0x0001b530 ldr r1, [sb] | r1 = *(sb);
0x0001b534 ldr r0, [pc, -0xb60] | r0 = "prot_";
0x0001b538 bl 0x127d8 | fputs ("prot_", r1);
0x0001b53c tst r6, 0x40 |
| if ((r6 & 0x40) != 0) {
0x0001b540 beq 0x1b55c |
0x0001b544 ldr r1, [pc, -0xb6c] | r1 = "in";
0x0001b548 ldr r0, [pc, -0xb6c] | r0 = " %-6s ";
0x0001b54c bl 0x122b0 | printf (" %-6s ", "in");
0x0001b550 ldr r1, [pc, -0xb70] | r1 = "out";
0x0001b554 ldr r0, [pc, -0xb70] | r0 = "__6s_";
0x0001b558 bl 0x122b0 | printf ("__6s_", "out");
| }
0x0001b55c ldr r1, [pc, -0xb74] | r1 = "source";
0x0001b560 ldr r0, [pc, -0xb70] | r0 = " %-19s ";
0x0001b564 bl 0x122b0 | printf (" %-19s ", "source");
0x0001b568 ldr r1, [pc, -0xb7c] | r1 = "destination";
0x0001b56c ldr r0, [pc, -0xb7c] | r0 = " %-19s ";
0x0001b570 bl 0x122b0 | printf (" %-19s ", "destination");
0x0001b574 mov r0, 0xa | r0 = 0xa;
0x0001b578 bl 0x1225c | putchar (r0);
| label_138:
0x0001b57c mov r0, r8 | r0 = r8;
0x0001b580 mov r1, r7 | r1 = r7;
0x0001b584 bl 0x125d4 | ip6tc_first_rule ();
0x0001b588 mov r8, 0 | r8 = 0;
0x0001b58c mov r5, r0 | r5 = r0;
| label_37:
0x0001b590 cmp r5, 0 |
| if (r5 != 0) {
0x0001b594 bne 0x1b604 | goto label_144;
| }
0x0001b598 mov r5, 1 | r5 = 1;
| label_137:
0x0001b59c mov r0, r7 | r0 = r7;
0x0001b5a0 bl 0x12730 | r0 = ip6tc_next_chain ();
0x0001b5a4 mov r8, r0 | r8 = r0;
0x0001b5a8 b 0x1ae5c | goto label_32;
| label_142:
0x0001b5ac mov r0, 0x20 | r0 = 0x20;
0x0001b5b0 bl 0x12868 | fputc_unlocked ();
0x0001b5b4 b 0x1b498 |
| } while (1);
| label_141:
0x0001b5b8 mov r0, 0x20 | r0 = 0x20;
0x0001b5bc bl 0x126f4 | fputc (r0, r1);
0x0001b5c0 b 0x1b498 | goto label_33;
| label_139:
0x0001b5c4 mov r2, r7 | r2 = r7;
0x0001b5c8 mov r1, r8 | r1 = r8;
0x0001b5cc add r0, sp, 0x74 | r0 += var_74h;
0x0001b5d0 bl 0x126a0 | r0 = ip6tc_get_references ();
0x0001b5d4 cmp r0, 0 |
| if (r0 == 0) {
0x0001b5d8 ldreq r0, [pc, -0xbe4] | r0 = " (ERROR obtaining refs)";
| goto label_145;
| }
| if (r0 == 0) {
| label_145:
0x0001b5dc beq 0x1b4d8 | goto label_34;
| }
0x0001b5e0 ldr r1, [sp, 0x74] | r1 = var_74h;
0x0001b5e4 ldr r0, [pc, -0xbec] | r0 = "__u_references_";
0x0001b5e8 bl 0x122b0 | printf ("__u_references_", r1);
0x0001b5ec b 0x1b4dc | goto label_35;
| label_143:
0x0001b5f0 ldr r0, [pc, -0xbf4] | r0 = "_8s_";
0x0001b5f4 bl 0x122b0 | printf ("_8s_");
0x0001b5f8 ldr r1, [pc, -0xbf8] | r1 = "bytes";
0x0001b5fc ldr r0, [pc, -0xbf8] | r0 = "%10s ";
0x0001b600 b 0x1b514 | goto label_36;
| label_144:
0x0001b604 add r8, r8, 1 | r8++;
0x0001b608 cmp fp, r8 |
0x0001b60c cmpne fp, 0 | __asm ("cmpne fp, 0");
| if (fp == r8) {
0x0001b610 bne 0x1b638 |
0x0001b614 mov r1, r7 | r1 = r7;
0x0001b618 mov r0, r5 | r0 = r5;
0x0001b61c bl 0x126dc | ip6tc_get_target ();
0x0001b620 str r7, [sp] | *(sp) = r7;
0x0001b624 mov r3, r6 | r3 = r6;
0x0001b628 mov r2, r8 | r2 = r8;
0x0001b62c mov r1, r0 | r1 = r0;
0x0001b630 mov r0, r5 | r0 = r5;
0x0001b634 bl 0x18b28 | fcn_00018b28 (r0, r1, r2, r3, r4);
| }
0x0001b638 mov r0, r5 | r0 = r5;
0x0001b63c mov r1, r7 | r1 = r7;
0x0001b640 bl 0x123f4 | r0 = ip6tc_next_rule ();
0x0001b644 mov r5, r0 | r5 = r0;
0x0001b648 b 0x1b590 | goto label_37;
| label_131:
0x0001b64c mov r0, r6 | r0 = r6;
0x0001b650 bl 0x127fc | ip6tc_first_chain ();
0x0001b654 ldr r8, [pc, -0xc4c] | r8 = "_N__s";
0x0001b658 ldr sb, [pc, -0xc4c] | sb = "-P %s %s";
0x0001b65c mov r5, r0 | r5 = r0;
| label_39:
0x0001b660 cmp r5, 0 |
| if (r5 == 0) {
0x0001b664 beq 0x1af00 | goto label_38;
| }
0x0001b668 cmp sl, 0 |
| if (sl != 0) {
0x0001b66c beq 0x1b684 |
0x0001b670 mov r1, sl | r1 = sl;
0x0001b674 mov r0, r5 | r0 = r5;
0x0001b678 bl 0x1264c | r0 = strcmp (r0, r1);
0x0001b67c cmp r0, 0 |
| if (r0 != 0) {
0x0001b680 bne 0x1b6e0 | goto label_146;
| }
| }
0x0001b684 mov r1, r6 | r1 = r6;
0x0001b688 mov r0, r5 | r0 = r5;
0x0001b68c bl 0x12448 | r0 = ip6tc_builtin ();
0x0001b690 cmp r0, 0 |
| if (r0 == 0) {
0x0001b694 beq 0x1b6f0 | goto label_147;
| }
0x0001b698 mov r2, r6 | r2 = r6;
0x0001b69c add r1, sp, 0x88 | r1 += var_88h;
0x0001b6a0 mov r0, r5 | r0 = r5;
0x0001b6a4 bl 0x12640 | ip6tc_get_policy ();
0x0001b6a8 mov r1, r5 | r1 = r5;
0x0001b6ac mov r2, r0 | r2 = r0;
0x0001b6b0 mov r0, sb | r0 = sb;
0x0001b6b4 bl 0x122b0 | printf (r0, r1, r2);
0x0001b6b8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001b6bc cmp r3, 0 |
| if (r3 != 0) {
0x0001b6c0 beq 0x1b6d8 |
0x0001b6c4 ldrd r2, r3, [sp, 0x90] | __asm ("ldrd r2, r3, [var_90h]");
0x0001b6c8 ldr r0, [pc, -0xcb8] | r0 = " -c %llu %llu";
0x0001b6cc strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001b6d0 ldrd r2, r3, [sp, 0x88] | __asm ("ldrd r2, r3, [var_88h]");
0x0001b6d4 bl 0x122b0 | printf (" -c %llu %llu", r1, r2);
| }
0x0001b6d8 mov r0, 0xa | r0 = 0xa;
0x0001b6dc bl 0x1225c | putchar (r0);
| do {
| label_146:
0x0001b6e0 mov r0, r6 | r0 = r6;
0x0001b6e4 bl 0x12730 | r0 = ip6tc_next_chain ();
0x0001b6e8 mov r5, r0 | r5 = r0;
0x0001b6ec b 0x1b660 | goto label_39;
| label_147:
0x0001b6f0 mov r1, r5 | r1 = r5;
0x0001b6f4 mov r0, r8 | r0 = r8;
0x0001b6f8 bl 0x122b0 | printf (r0, r1);
0x0001b6fc b 0x1b6e0 |
| } while (1);
| label_133:
0x0001b700 add sb, sb, 1 | sb++;
0x0001b704 cmp fp, sb |
0x0001b708 cmpne fp, 0 | __asm ("cmpne fp, 0");
| if (fp == sb) {
0x0001b70c bne 0x1b724 |
0x0001b710 mov r3, r7 | r3 = r7;
0x0001b714 mov r2, r8 | r2 = r8;
0x0001b718 mov r1, r6 | r1 = r6;
0x0001b71c mov r0, r5 | r0 = r5;
0x0001b720 bl 0x1953c | fcn_0001953c (r0, r1);
| }
0x0001b724 mov r0, r5 | r0 = r5;
0x0001b728 mov r1, r6 | r1 = r6;
0x0001b72c bl 0x123f4 | r0 = ip6tc_next_rule ();
0x0001b730 mov r5, r0 | r5 = r0;
0x0001b734 b 0x1af48 | goto label_40;
| label_125:
0x0001b738 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0001b73c tst r3, 0x80 |
| if ((r3 & 0x80) == 0) {
0x0001b740 beq 0x1b764 | goto label_148;
| }
0x0001b744 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b748 ldr r1, [sp, 0x160] | r1 = var_160h;
0x0001b74c ldr r2, [r3] | r2 = *(r3);
0x0001b750 and r1, r1, 0x20 | r1 &= 0x20;
0x0001b754 mov r0, sl | r0 = sl;
0x0001b758 bl 0x194e0 | r0 = fcn_000194e0 (r0, r1);
0x0001b75c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0001b760 beq 0x1ae78 | goto label_41;
| }
| label_148:
0x0001b764 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0001b768 tst r3, 0x2000 |
| if ((r3 & 0x2000) == 0) {
0x0001b76c beq 0x1b0c4 | goto label_27;
| }
0x0001b770 b 0x1af7c | goto label_42;
| label_113:
0x0001b774 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b778 mov r0, sl | r0 = sl;
0x0001b77c ldr r1, [r3] | r1 = *(r3);
0x0001b780 bl 0x124d8 | ip6tc_create_chain ();
0x0001b784 b 0x1b2f8 | goto label_31;
| label_130:
0x0001b788 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b78c ldr r1, [sp, 0x44] | r1 = var_44h;
0x0001b790 ldr r2, [r3] | r2 = *(r3);
0x0001b794 mov r0, sl | r0 = sl;
0x0001b798 bl 0x12274 | ip6tc_rename_chain ();
0x0001b79c b 0x1b2f8 | goto label_31;
| label_128:
0x0001b7a0 ldr r2, [sp, 0x160] | r2 = var_160h;
0x0001b7a4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b7a8 ands r2, r2, 0x400 | r2 &= 0x400;
| if (r2 == r2) {
0x0001b7ac addne r2, sp, 0x130 | r2 += var_130h;
| }
0x0001b7b0 ldr r3, [r3] | r3 = *(r3);
0x0001b7b4 ldr r1, [sp, 0x34] | r1 = var_34h;
0x0001b7b8 mov r0, sl | r0 = sl;
0x0001b7bc bl 0x12250 | ip6tc_set_policy ();
0x0001b7c0 b 0x1b2f8 | goto label_31;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/xtables-legacy-multi @ 0x1bc7c */
| #include <stdint.h>
|
; (fcn) fcn.0001bc7c () | void fcn_0001bc7c (void * arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0001bc7c ldr r3, [r0, 0xd4] | r3 = *((r0 + 0xd4));
0x0001bc80 push {r0, r1, r2, r4, r5, r6, r7, lr} |
0x0001bc84 cmp r3, 0 |
0x0001bc88 mov r4, r0 | r4 = r0;
0x0001bc8c mov r6, r1 | r6 = r1;
| if (r3 == 0) {
0x0001bc90 beq 0x1bcec | goto label_4;
| }
0x0001bc94 ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
0x0001bc98 cmp r2, 0 |
| if (r2 == 0) {
0x0001bc9c bne 0x1bcac |
0x0001bca0 ldr r2, [r3, 0x3c] | r2 = *((r3 + 0x3c));
0x0001bca4 cmp r2, 0 |
| if (r2 == 0) {
0x0001bca8 beq 0x1bcec | goto label_4;
| }
| }
0x0001bcac ldr r0, [r4, 0xc4] | r0 = *((r4 + 0xc4));
0x0001bcb0 ldr r2, [r3, 0x54] | r2 = *((r3 + 0x54));
0x0001bcb4 cmp r0, r2 |
| if (r0 <= r2) {
0x0001bcb8 blo 0x1bcec | goto label_4;
| }
0x0001bcbc add r2, r2, 0x100 | r2 += 0x100;
0x0001bcc0 cmp r0, r2 |
| if (r0 >= r2) {
0x0001bcc4 bhs 0x1bcec | goto label_4;
| }
0x0001bcc8 ldr r2, [r4, 0xc0] | r2 = *((r4 + 0xc0));
0x0001bccc str r4, [sp] | *(sp) = r4;
0x0001bcd0 adds r2, r2, 0 | r2 += 0;
| if (r2 == r2) {
0x0001bcd4 movne r2, 1 | r2 = 1;
| }
0x0001bcd8 ldr r1, [r4, 0xf4] | r1 = *((r4 + 0xf4));
0x0001bcdc bl 0x1231c | xtables_option_tpcall ();
| do {
0x0001bce0 mov r0, 0 | r0 = 0;
| label_2:
0x0001bce4 add sp, sp, 0xc |
0x0001bce8 pop {r4, r5, r6, r7, pc} |
| label_4:
0x0001bcec ldr r2, [r4, 0xcc] | r2 = *((r4 + 0xcc));
| label_0:
0x0001bcf0 cmp r2, 0 |
| if (r2 == 0) {
0x0001bcf4 bne 0x1bd8c |
0x0001bcf8 mov r0, r4 | r0 = r4;
0x0001bcfc bl 0x1ba7c | fcn_0001ba7c (r0);
0x0001bd00 ldr r7, [pc, 0x178] | r7 = *(0x1be7c);
0x0001bd04 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0001bd08 beq 0x1be1c | goto label_5;
| }
0x0001bd0c mov r0, 1 | r0 = 1;
0x0001bd10 str r0, [r4, 0xec] | *((r4 + 0xec)) = r0;
0x0001bd14 ldr r4, [r5, 0x14] | r4 = *((r5 + 0x14));
0x0001bd18 add r4, r4, 0x20 | r4 += 0x20;
0x0001bd1c mov r1, r4 | r1 = r4;
0x0001bd20 bl 0x12340 | xtables_calloc ();
0x0001bd24 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0001bd28 str r0, [r5, 0x58] | *((r5 + 0x58)) = r0;
0x0001bd2c strh r4, [r0], 2 | *(r0) = r4;
| r0 += 2;
0x0001bd30 bl 0x12268 | strcpy (r0, r1)
0x0001bd34 ldr r3, [r5, 0x58] | r3 = *((r5 + 0x58));
0x0001bd38 ldrb r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0001bd3c mov r0, r5 | r0 = r5;
0x0001bd40 strb r2, [r3, 0x1f] | *((r3 + 0x1f)) = r2;
0x0001bd44 bl 0x1bc2c | fcn_0001bc2c (r0);
0x0001bd48 ldr r2, [r5, 0x44] | r2 = *((r5 + 0x44));
0x0001bd4c add r3, r5, 0x54 | r3 = r5 + 0x54;
0x0001bd50 cmp r2, 0 |
| if (r2 == 0) {
0x0001bd54 beq 0x1bdf4 | goto label_6;
| }
0x0001bd58 ldr r1, [r6, 0x10] | r1 = *((r6 + 0x10));
0x0001bd5c ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0001bd60 bl 0x122c8 | xtables_options_xfrm ();
| label_1:
0x0001bd64 str r0, [r6, 0x10] | *((r6 + 0x10)) = r0;
0x0001bd68 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0001bd6c cmp r3, 0 |
| if (r3 != 0) {
0x0001bd70 bne 0x1be08 | goto label_7;
| }
0x0001bd74 ldr r3, [pc, 0x108] |
0x0001bd78 ldr r1, [pc, 0x108] | r1 = xt_params;
0x0001bd7c ldr r3, [r3] |
0x0001bd80 mov r0, 1 | r0 = 1;
0x0001bd84 ldr r3, [r3, 0x14] | r3 = optarg;
0x0001bd88 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| }
0x0001bd8c ldrb r3, [r2, 8] | r3 = *((r2 + 8));
0x0001bd90 cmp r3, 0 |
| if (r3 != 0) {
0x0001bd94 bne 0x1bdec | goto label_8;
| }
0x0001bd98 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0001bd9c ldr r1, [r3, 0x3c] | r1 = *((r3 + 0x3c));
0x0001bda0 cmp r1, 0 |
| if (r1 == 0) {
0x0001bda4 bne 0x1bdb4 |
0x0001bda8 ldr r1, [r3, 0x24] | r1 = *((r3 + 0x24));
0x0001bdac cmp r1, 0 |
| if (r1 == 0) {
0x0001bdb0 beq 0x1bdec | goto label_8;
| }
| }
0x0001bdb4 ldr r0, [r4, 0xc4] | r0 = *((r4 + 0xc4));
0x0001bdb8 ldr r1, [r3, 0x54] | r1 = *((r3 + 0x54));
0x0001bdbc cmp r0, r1 |
| if (r0 <= r1) {
0x0001bdc0 blo 0x1bdec | goto label_8;
| }
0x0001bdc4 add r1, r1, 0x100 | r1 += 0x100;
0x0001bdc8 cmp r0, r1 |
| if (r0 >= r1) {
0x0001bdcc bhs 0x1bdec | goto label_8;
| }
0x0001bdd0 ldr r2, [r4, 0xc0] | r2 = *((r4 + 0xc0));
0x0001bdd4 str r4, [sp] | *(sp) = r4;
0x0001bdd8 adds r2, r2, 0 | r2 += 0;
| if (r2 == r2) {
0x0001bddc movne r2, 1 | r2 = 1;
| }
0x0001bde0 ldr r1, [r4, 0xf4] | r1 = *((r4 + 0xf4));
0x0001bde4 bl 0x12700 | xtables_option_mpcall ();
0x0001bde8 b 0x1bce0 |
| } while (1);
| label_8:
0x0001bdec ldr r2, [r2] | r2 = *(r2);
0x0001bdf0 b 0x1bcf0 | goto label_0;
| label_6:
0x0001bdf4 ldr r2, [r5, 0x38] | r2 = *((r5 + 0x38));
0x0001bdf8 ldr r1, [r6, 0x10] | r1 = *((r6 + 0x10));
0x0001bdfc ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0001be00 bl 0x1249c | xtables_merge_options ();
0x0001be04 b 0x1bd64 | goto label_1;
| label_7:
0x0001be08 ldr r3, [r7] | r3 = *(r7);
0x0001be0c mov r0, 1 | r0 = 1;
0x0001be10 sub r3, r3, 1 | r3--;
0x0001be14 str r3, [r7] | *(r7) = r3;
0x0001be18 b 0x1bce4 | goto label_2;
| label_5:
0x0001be1c ldr r3, [pc, 0x60] |
0x0001be20 ldr r2, [r4, 0xc4] | r2 = *((r4 + 0xc4));
0x0001be24 ldr r3, [r3] |
0x0001be28 cmp r2, 0x3a |
0x0001be2c ldr r3, [r3, 0x14] | r3 = optarg;
| if (r2 != 0x3a) {
0x0001be30 bne 0x1be50 | goto label_9;
| }
0x0001be34 ldr r2, [r7] | r2 = *(r7);
0x0001be38 ldr r1, [r4, 0xf4] | r1 = *((r4 + 0xf4));
0x0001be3c sub r2, r2, 0xc0000001 | r2 -= 0xc0000001;
0x0001be40 ldr r2, [r1, r2, lsl 2] | offset_0 = r2 << 2;
| r2 = *((r1 + offset_0));
0x0001be44 ldr r1, [pc, 0x40] | r1 = "cant_alloc_memory_";
| do {
| label_3:
0x0001be48 mov r0, 2 | r0 = 2;
0x0001be4c blx r3 | uint32_t (*r3)(uint32_t, char*, uint32_t) (r0, "cant_alloc_memory_", r2);
| label_9:
0x0001be50 cmp r2, 0x3f |
| if (r2 != 0x3f) {
0x0001be54 bne 0x1be70 | goto label_10;
| }
0x0001be58 ldr r2, [r7] | r2 = *(r7);
0x0001be5c ldr r1, [r4, 0xf4] | r1 = *((r4 + 0xf4));
0x0001be60 sub r2, r2, 0xc0000001 | r2 -= 0xc0000001;
0x0001be64 ldr r2, [r1, r2, lsl 2] | offset_1 = r2 << 2;
| r2 = *((r1 + offset_1));
0x0001be68 ldr r1, [pc, 0x20] | r1 = "option___s__requires_an_argument";
0x0001be6c b 0x1be48 |
| } while (1);
| label_10:
0x0001be70 ldr r2, [pc, 0x1c] |
0x0001be74 ldr r1, [pc, 0x1c] | r1 = optarg;
0x0001be78 ldr r2, [r2] | r2 = "unknown option \"%s\";
0x0001be7c b 0x1be48 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/xtables-legacy-multi @ 0x1c8e0 */
| #include <stdint.h>
|
; (fcn) fcn.0001c8e0 () | void fcn_0001c8e0 (void * arg1) {
| r0 = arg1;
0x0001c8e0 push {r4, r5, r6, r7, r8, lr} |
0x0001c8e4 ldr r6, [pc, 0x11c] | r6 = *(0x1ca04);
0x0001c8e8 ldr r2, [r0, 0xc0] | r2 = *((r0 + 0xc0));
0x0001c8ec ldr r3, [r6] | r3 = *(0x1ca04);
0x0001c8f0 cmp r2, 0 |
0x0001c8f4 ldr r5, [r3, 0x10] | r5 = "cant_alloc_memory_";
| if (r2 == 0) {
0x0001c8f8 beq 0x1c90c | goto label_3;
| }
0x0001c8fc ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0001c900 ldr r1, [pc, 0x104] | r1 = xt_params;
0x0001c904 mov r0, 2 | r0 = 2;
| do {
0x0001c908 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_3:
0x0001c90c ldr r3, [pc, 0xfc] | r3 = "unexpected___flag_before___match";
0x0001c910 add r2, r0, 0xcc | r2 = r0 + 0xcc;
0x0001c914 mov r1, 3 | r1 = 3;
0x0001c918 ldr r0, [r3] | r0 = "unexpected___flag_before___match";
0x0001c91c bl 0x12658 | xtables_find_match ();
0x0001c920 ldr r7, [r0, 0x14] |
0x0001c924 mov r4, r0 | r4 = r0;
0x0001c928 add r7, r7, 0x20 | r7 = 0x1ca40;
0x0001c92c mov r1, r7 | r1 = r7;
0x0001c930 mov r0, 1 | r0 = 1;
0x0001c934 bl 0x12340 | xtables_calloc ();
0x0001c938 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x0001c93c cmp r1, 0 |
0x0001c940 str r0, [r4, 0x58] | *((r4 + 0x58)) = r0;
0x0001c944 strh r7, [r0], 2 | *(r0) = r7;
| r0 += 2;
| if (r1 != 0) {
0x0001c948 bne 0x1c9b4 | goto label_4;
| }
0x0001c94c ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001c950 bl 0x12268 | strcpy (r0, r1)
| label_0:
0x0001c954 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x0001c958 ldrb r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0001c95c mov r0, r4 | r0 = r4;
0x0001c960 strb r2, [r3, 0x1f] | *((r3 + 0x1f)) = r2;
0x0001c964 bl 0x1bc2c | fcn_0001bc2c (r0);
0x0001c968 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0001c96c cmp r3, r4 |
0x0001c970 popeq {r4, r5, r6, r7, r8, pc} |
0x0001c974 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x0001c978 ldr r0, [r6] | r0 = *(r6);
0x0001c97c cmp r2, 0 |
| if (r2 == 0) {
0x0001c980 beq 0x1c9e0 | goto label_5;
| }
0x0001c984 add r3, r4, 0x54 | r3 = r4 + 0x54;
0x0001c988 mov r1, r5 | r1 = r5;
0x0001c98c ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x0001c990 bl 0x122c8 | r0 = xtables_options_xfrm ();
| label_2:
0x0001c994 mov r5, r0 | r5 = r0;
| label_1:
0x0001c998 cmp r5, 0 |
0x0001c99c ldr r3, [r6] | r3 = *(r6);
| if (r5 != 0) {
0x0001c9a0 bne 0x1ca00 | goto label_6;
| }
0x0001c9a4 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0001c9a8 ldr r1, [pc, 0x64] | r1 = optarg;
0x0001c9ac mov r0, 1 | r0 = 1;
0x0001c9b0 b 0x1c908 |
| } while (1);
| label_4:
0x0001c9b4 bl 0x12268 | strcpy (r0, r1)
0x0001c9b8 ldrb r3, [r4, 0x11] | r3 = *((r4 + 0x11));
0x0001c9bc tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0001c9c0 bne 0x1c954 | goto label_0;
| }
0x0001c9c4 ldr r0, [pc, 0x4c] |
0x0001c9c8 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0001c9cc ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0001c9d0 ldr r1, [pc, 0x44] | r1 = stderr;
0x0001c9d4 ldr r0, [r0] | r0 = "cant_alloc_memory_";
0x0001c9d8 bl 0x12478 | fprintf ("cant_alloc_memory_", r1, r2, r3);
0x0001c9dc b 0x1c954 | goto label_0;
| label_5:
0x0001c9e0 ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x0001c9e4 cmp r2, 0 |
| if (r2 == 0) {
0x0001c9e8 beq 0x1c998 | goto label_1;
| }
0x0001c9ec add r3, r4, 0x54 | r3 = r4 + 0x54;
0x0001c9f0 mov r1, r5 | r1 = r5;
0x0001c9f4 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x0001c9f8 bl 0x1249c | xtables_merge_options ();
0x0001c9fc b 0x1c994 | goto label_2;
| label_6:
0x0001ca00 str r5, [r3, 0x10] | *((r3 + 0x10)) = r5;
0x0001ca04 pop {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/xtables-legacy-multi @ 0x1cad8 */
| #include <stdint.h>
|
; (fcn) fcn.0001cad8 () | void fcn_0001cad8 (void * arg1) {
| r0 = arg1;
0x0001cad8 push {r4, r5, r6, r7, r8, lr} |
0x0001cadc ldr r5, [pc, 0x108] | r5 = *(0x1cbe8);
0x0001cae0 mov r4, r0 | r4 = r0;
0x0001cae4 ldr r3, [r5] | r3 = *(0x1cbe8);
0x0001cae8 ldr r8, [r3, 0x10] | r8 = stderr;
0x0001caec ldr r3, [pc, 0xfc] | r3 = xt_params;
0x0001caf0 ldr r0, [r3] | r0 = xt_params;
0x0001caf4 bl 0x1ca20 | fcn_0001ca20 (r0);
0x0001caf8 mov r1, 2 | r1 = 2;
0x0001cafc str r0, [r4, 0xf0] | *((r4 + 0xf0)) = r0;
0x0001cb00 bl 0x12280 | r0 = xtables_find_target ();
0x0001cb04 cmp r0, 0 |
0x0001cb08 str r0, [r4, 0xd4] | *((r4 + 0xd4)) = r0;
0x0001cb0c popeq {r4, r5, r6, r7, r8, pc} |
0x0001cb10 ldr r6, [r0, 0x14] |
0x0001cb14 mov r7, r0 | r7 = r0;
0x0001cb18 add r6, r6, 0x20 | r6 = 0x1cc20;
0x0001cb1c mov r1, r6 | r1 = r6;
0x0001cb20 mov r0, 1 | r0 = 1;
0x0001cb24 bl 0x12340 | xtables_calloc ();
0x0001cb28 ldr r3, [r4, 0xd4] | r3 = *((r4 + 0xd4));
0x0001cb2c ldr r1, [r3, 0xc] | r1 = stderr;
0x0001cb30 cmp r1, 0 |
0x0001cb34 str r0, [r7, 0x58] | *((r7 + 0x58)) = r0;
0x0001cb38 ldr r0, [r3, 0x58] | r0 = *(0x1cc44);
0x0001cb3c strh r6, [r0], 2 | *(r0) = r6;
| r0 += 2;
| if (r1 != 0) {
0x0001cb40 bne 0x1cba0 | goto label_2;
| }
0x0001cb44 ldr r1, [r4, 0xf0] | r1 = *((r4 + 0xf0));
0x0001cb48 bl 0x12268 | strcpy (r0, r1)
| do {
| label_0:
0x0001cb4c ldr r0, [r4, 0xd4] | r0 = *((r4 + 0xd4));
0x0001cb50 ldr r3, [r0, 0x58] | r3 = *((r0 + 0x58));
0x0001cb54 ldrb r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x0001cb58 strb r2, [r3, 0x1f] | *((r3 + 0x1f)) = r2;
0x0001cb5c bl 0x1bbdc | fcn_0001bbdc (r0);
0x0001cb60 ldr r1, [r4, 0xd4] | r1 = *((r4 + 0xd4));
0x0001cb64 ldr r0, [r5] | r0 = *(r5);
0x0001cb68 ldr r2, [r1, 0x44] | r2 = *((r1 + 0x44));
0x0001cb6c add r3, r1, 0x54 | r3 = r1 + 0x54;
0x0001cb70 cmp r2, 0 |
| if (r2 == 0) {
0x0001cb74 beq 0x1cbd0 | goto label_3;
| }
0x0001cb78 mov r1, r8 | r1 = r8;
0x0001cb7c ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x0001cb80 bl 0x122c8 | r0 = xtables_options_xfrm ();
| label_1:
0x0001cb84 cmp r0, 0 |
0x0001cb88 ldr r3, [r5] | r3 = *(r5);
| if (r0 != 0) {
0x0001cb8c bne 0x1cbe4 | goto label_4;
| }
0x0001cb90 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0001cb94 ldr r1, [pc, 0x58] | r1 = optarg;
0x0001cb98 mov r0, 1 | r0 = 1;
0x0001cb9c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_2:
0x0001cba0 bl 0x12268 | strcpy (r0, r1)
0x0001cba4 ldr r3, [r4, 0xd4] | r3 = *((r4 + 0xd4));
0x0001cba8 ldrb r2, [r3, 0x11] | r2 = *((r3 + 0x11));
0x0001cbac tst r2, 1 |
0x0001cbb0 bne 0x1cb4c |
| } while ((r2 & 1) != 0);
0x0001cbb4 ldr r0, [pc, 0x3c] |
0x0001cbb8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0001cbbc ldr r2, [r4, 0xf0] | r2 = *((r4 + 0xf0));
0x0001cbc0 ldr r1, [pc, 0x34] | r1 = stderr;
0x0001cbc4 ldr r0, [r0] | r0 = "cant_alloc_memory_";
0x0001cbc8 bl 0x12478 | fprintf ("cant_alloc_memory_", r1, r2, r3);
0x0001cbcc b 0x1cb4c | goto label_0;
| label_3:
0x0001cbd0 ldr r2, [r1, 0x38] | r2 = *((r1 + 0x38));
0x0001cbd4 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x0001cbd8 mov r1, r8 | r1 = r8;
0x0001cbdc bl 0x1249c | xtables_merge_options ();
0x0001cbe0 b 0x1cb84 | goto label_1;
| label_4:
0x0001cbe4 str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x0001cbe8 pop {r4, r5, r6, r7, r8, pc} |
| }
[*] Function strcpy used 9 times xtables-legacy-multi