[*] Binary protection state of nf_conntrack.ko
No RELRO No Canary found NX disabled REL No RPATH No RUNPATH Symbols
[*] Function strcpy tear down of nf_conntrack.ko
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x80027f8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.__nf_conntrack_confirm () | void nf_conntrack_confirm (int32_t arg1) {
| int32_t var_0h;
| r0 = arg1;
0x080027f8 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x080027fc ldr r3, [r0, 0x50] | r3 = *((r0 + 0x50));
0x08002800 bic r4, r3, 7 | r4 = BIT_MASK (r3, 7);
0x08002804 and r3, r3, 7 | r3 &= 7;
0x08002808 cmp r3, 2 |
0x0800280c ldr r7, [r4, 0x74] | r7 = *((r4 + 0x74));
| if (r3 > 2) {
0x08002810 bhi 0x8002c14 | goto label_8;
| }
0x08002814 mov r3, sp | r3 = sp;
0x08002818 mov r8, r0 | r8 = r0;
0x0800281c bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08002820 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08002824 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08002828 add r2, r2, 0x200 | r2 += 0x200;
0x0800282c str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08002830 stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
0x08002834 stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
0x08002838 add sb, r4, 0x44 | sb = r4 + 0x44;
| do {
| label_3:
0x0800283c ldr fp, [r5, 0x10] | fp = *((r5 + 0x10));
0x08002840 tst fp, 1 |
| if ((fp & 1) != 0) {
0x08002844 bne 0x8002bd4 | goto label_9;
| }
0x08002848 ldr r3, [r4, 0x40] | r3 = *((r4 + 0x40));
0x0800284c mov r1, r7 | r1 = r7;
0x08002850 ldr r6, [r5, 0x18] | r6 = *((r5 + 0x18));
0x08002854 mov r0, sb | r0 = sb;
0x08002858 umull r3, r6, r6, r3 | r3:r6 = r6 * r3;
0x0800285c bl 0x800086c | hash_conntrack_raw ();
0x08002860 ldr sl, [r5, 0x18] | sl = *((r5 + 0x18));
0x08002864 mov r3, r0 | r3 = r0;
0x08002868 mov r2, fp | r2 = fp;
0x0800286c mov r0, r6 | r0 = r6;
0x08002870 umull r3, sl, sl, r3 | r3:sl = sl * r3;
0x08002874 mov r1, sl | r1 = sl;
0x08002878 bl 0x80007f0 | r0 = nf_conntrack_double_lock_constprop_0 ();
0x0800287c cmp r0, 0 |
0x08002880 bne 0x800283c |
| } while (r0 != 0);
0x08002884 ldr sb, [r4, 0x6c] | sb = *((r4 + 0x6c));
0x08002888 ubfx sb, sb, 3, 1 | sb = (sb >> 3) & ((1 << 1) - 1);
0x0800288c cmp sb, 0 |
| if (sb != 0) {
0x08002890 bne 0x8002c58 | goto label_10;
| }
0x08002894 mov r0, r4 | r0 = r4;
0x08002898 bl 0x8000258 | nf_ct_del_from_dying_or_unconfirmed_list ();
0x0800289c ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x080028a0 tst r3, 0x200 |
| if ((r3 & 0x200) != 0) {
0x080028a4 bne 0x8002c8c | goto label_11;
| }
0x080028a8 ldr lr, [r5] |
0x080028ac ldr r3, [lr, r6, lsl 2] | offset_0 = r6 << 2;
| r3 = *((lr + offset_0));
0x080028b0 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x080028b4 bne 0x80029cc | goto label_12;
| }
0x080028b8 ldr r1, [r4, 0x14] | r1 = *((r4 + 0x14));
0x080028bc mvn ip, 0xb |
0x080028c0 mov r0, 1 | r0 = 1;
0x080028c4 b 0x80028d4 |
| while (r1 != r2) {
| label_0:
0x080028c8 ldr r3, [r3] | r3 = *(r3);
0x080028cc tst r3, 1 |
| if ((r3 & 1) != 0) {
0x080028d0 bne 0x80029cc | goto label_12;
| }
| label_1:
0x080028d4 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x080028d8 cmp r1, r2 |
0x080028dc bne 0x80028c8 |
| }
0x080028e0 ldr r5, [r4, 0x18] | r5 = *((r4 + 0x18));
0x080028e4 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x080028e8 cmp r5, r2 |
| if (r5 != r2) {
0x080028ec bne 0x80028c8 | goto label_0;
| }
0x080028f0 ldr r5, [r4, 0x1c] | r5 = *((r4 + 0x1c));
0x080028f4 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x080028f8 cmp r5, r2 |
| if (r5 != r2) {
0x080028fc bne 0x80028c8 | goto label_0;
| }
0x08002900 ldr r5, [r4, 0x20] | r5 = *((r4 + 0x20));
0x08002904 ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x08002908 cmp r5, r2 |
| if (r5 != r2) {
0x0800290c bne 0x80028c8 | goto label_0;
| }
0x08002910 ldr r5, [r4, 0x24] | r5 = *((r4 + 0x24));
0x08002914 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x08002918 cmp r5, r2 |
| if (r5 != r2) {
0x0800291c bne 0x80028c8 | goto label_0;
| }
0x08002920 ldr r5, [r4, 0x28] | r5 = *((r4 + 0x28));
0x08002924 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x08002928 cmp r5, r2 |
| if (r5 != r2) {
0x0800292c bne 0x80028c8 | goto label_0;
| }
0x08002930 ldr r5, [r4, 0x2c] | r5 = *((r4 + 0x2c));
0x08002934 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x08002938 cmp r5, r2 |
| if (r5 != r2) {
0x0800293c bne 0x80028c8 | goto label_0;
| }
0x08002940 ldr r5, [r4, 0x30] | r5 = *((r4 + 0x30));
0x08002944 ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
0x08002948 cmp r5, r2 |
| if (r5 != r2) {
0x0800294c bne 0x80028c8 | goto label_0;
| }
0x08002950 ldr r5, [r4, 0x34] | r5 = *((r4 + 0x34));
0x08002954 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x08002958 cmp r5, r2 |
| if (r5 != r2) {
0x0800295c bne 0x80028c8 | goto label_0;
| }
0x08002960 ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x08002964 ldr r5, [r3, 0x2c] | r5 = *((r3 + 0x2c));
0x08002968 eor r2, r2, r5 | r2 ^= r5;
0x0800296c bics r2, r2, 0xff000000 | __asm ("bics r2, r2, 0xff000000");
| if (r5 != r2) {
0x08002970 bne 0x80028c8 | goto label_0;
| }
0x08002974 ldrb r2, [r3, 0x2f] | r2 = *((r3 + 0x2f));
0x08002978 ldrb r5, [r3, 0x2f] | r5 = *((r3 + 0x2f));
0x0800297c ldrb sb, [r4, 0xb] | sb = *((r4 + 0xb));
0x08002980 add r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x08002984 lsl r5, r0, r5 | r5 = r0 << r5;
0x08002988 sub r2, ip, r2, lsl 4 | r2 = ip - (r2 << 4);
0x0800298c and sb, sb, r5 | sb &= r5;
0x08002990 add r2, r3, r2 | r2 = r3 + r2;
0x08002994 ldrb fp, [r2, 0xb] | fp = *((r2 + 0xb));
0x08002998 ands fp, fp, r5 |
| if (fp != fp) {
0x0800299c bne 0x8002c3c | goto label_13;
| }
0x080029a0 cmp sb, 0 |
| if (sb != 0) {
0x080029a4 bne 0x8002c48 | goto label_14;
| }
| label_5:
0x080029a8 ldr r5, [r2, 0x6c] | r5 = *((r2 + 0x6c));
0x080029ac tst r5, 8 |
| if ((r5 & 8) == 0) {
0x080029b0 beq 0x80028c8 | goto label_0;
| }
0x080029b4 ldr r2, [r2, 0x74] | r2 = *((r2 + 0x74));
0x080029b8 cmp r7, r2 |
| if (r7 == r2) {
0x080029bc beq 0x8002ae0 | goto label_15;
| }
0x080029c0 ldr r3, [r3] | r3 = *(r3);
0x080029c4 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x080029c8 beq 0x80028d4 | goto label_1;
| }
| label_12:
0x080029cc ldr r3, [lr, sl, lsl 2] | offset_1 = sl << 2;
| r3 = *((lr + offset_1));
0x080029d0 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x080029d4 bne 0x8002af8 | goto label_16;
| }
0x080029d8 ldr r0, [r4, 0x44] | r0 = *((r4 + 0x44));
0x080029dc mvn lr, 0xb | lr = ~0xb;
0x080029e0 mov ip, 1 |
0x080029e4 b 0x80029f4 |
| while (r0 != r2) {
| label_2:
0x080029e8 ldr r3, [r3] | r3 = *(r3);
0x080029ec tst r3, 1 |
| if ((r3 & 1) != 0) {
0x080029f0 bne 0x8002af8 | goto label_16;
| }
0x080029f4 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x080029f8 cmp r0, r2 |
0x080029fc bne 0x80029e8 |
| }
0x08002a00 ldr r1, [r4, 0x48] | r1 = *((r4 + 0x48));
0x08002a04 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x08002a08 cmp r1, r2 |
| if (r1 != r2) {
0x08002a0c bne 0x80029e8 | goto label_2;
| }
0x08002a10 ldr r1, [r4, 0x4c] | r1 = *((r4 + 0x4c));
0x08002a14 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x08002a18 cmp r1, r2 |
| if (r1 != r2) {
0x08002a1c bne 0x80029e8 | goto label_2;
| }
0x08002a20 ldr r1, [r4, 0x50] | r1 = *((r4 + 0x50));
0x08002a24 ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x08002a28 cmp r1, r2 |
| if (r1 != r2) {
0x08002a2c bne 0x80029e8 | goto label_2;
| }
0x08002a30 ldr r1, [r4, 0x54] | r1 = *((r4 + 0x54));
0x08002a34 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x08002a38 cmp r1, r2 |
| if (r1 != r2) {
0x08002a3c bne 0x80029e8 | goto label_2;
| }
0x08002a40 ldr r1, [r4, 0x58] | r1 = *((r4 + 0x58));
0x08002a44 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x08002a48 cmp r1, r2 |
| if (r1 != r2) {
0x08002a4c bne 0x80029e8 | goto label_2;
| }
0x08002a50 ldr r1, [r4, 0x5c] | r1 = *((r4 + 0x5c));
0x08002a54 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x08002a58 cmp r1, r2 |
| if (r1 != r2) {
0x08002a5c bne 0x80029e8 | goto label_2;
| }
0x08002a60 ldr r1, [r4, 0x60] | r1 = *((r4 + 0x60));
0x08002a64 ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
0x08002a68 cmp r1, r2 |
| if (r1 != r2) {
0x08002a6c bne 0x80029e8 | goto label_2;
| }
0x08002a70 ldr r1, [r4, 0x64] | r1 = *((r4 + 0x64));
0x08002a74 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x08002a78 cmp r1, r2 |
| if (r1 != r2) {
0x08002a7c bne 0x80029e8 | goto label_2;
| }
0x08002a80 ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x08002a84 ldr r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x08002a88 eor r2, r2, r1 | r2 ^= r1;
0x08002a8c bics r2, r2, 0xff000000 | __asm ("bics r2, r2, 0xff000000");
| if (r1 != r2) {
0x08002a90 bne 0x80029e8 | goto label_2;
| }
0x08002a94 ldrb r2, [r3, 0x2f] | r2 = *((r3 + 0x2f));
0x08002a98 ldrb r1, [r3, 0x2f] | r1 = *((r3 + 0x2f));
0x08002a9c ldrb r5, [r4, 0xb] | r5 = *((r4 + 0xb));
0x08002aa0 add r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x08002aa4 lsl r1, ip, r1 | r1 = ip << r1;
0x08002aa8 sub r2, lr, r2, lsl 4 | r2 = lr - (r2 << 4);
0x08002aac and r5, r5, r1 | r5 &= r1;
0x08002ab0 add r2, r3, r2 | r2 = r3 + r2;
0x08002ab4 ldrb sb, [r2, 0xb] | sb = *((r2 + 0xb));
0x08002ab8 ands sb, sb, r1 | sb &= r1;
| if (sb != sb) {
0x08002abc bne 0x8002c20 | goto label_17;
| }
0x08002ac0 cmp r5, 0 |
| if (r5 != 0) {
0x08002ac4 bne 0x8002c2c | goto label_18;
| }
| label_4:
0x08002ac8 ldr r1, [r2, 0x6c] | r1 = *((r2 + 0x6c));
0x08002acc tst r1, 8 |
| if ((r1 & 8) == 0) {
0x08002ad0 beq 0x80029e8 | goto label_2;
| }
0x08002ad4 ldr r2, [r2, 0x74] | r2 = *((r2 + 0x74));
0x08002ad8 cmp r7, r2 |
| if (r7 != r2) {
0x08002adc bne 0x80029e8 | goto label_2;
| }
| label_15:
0x08002ae0 mov r2, sl | r2 = sl;
0x08002ae4 mov r1, r3 | r1 = r3;
0x08002ae8 mov r0, r8 | r0 = r8;
0x08002aec stmdaeq r0, {r2, r5, r6, r7, lr, pc} | __asm ("stmdaeq r0, {r2, r5, r6, r7, lr, pc}");
0x08002af0 mov sb, r0 | sb = r0;
0x08002af4 b 0x8002ca4 | goto label_19;
| label_16:
0x08002af8 stmdaeq r1, {r0, r1, r2, r5, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r5, r7, sb, sl, fp, lr, pc}");
0x08002afc stmdaeq r1, {r0, r1, r2, r5, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r5, r7, sb, sl, fp, lr, pc}");
0x08002b00 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x08002b04 mov r0, r4 | r0 = r4;
0x08002b08 ldr r2, [r2] | r2 = *(r2);
0x08002b0c add r3, r3, r2 | r3 += r2;
0x08002b10 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x08002b14 bl 0x8000fcc | nf_conntrack_insert_prepare ();
0x08002b18 mov r2, sl | r2 = sl;
0x08002b1c mov r1, r6 | r1 = r6;
0x08002b20 mov r0, r4 | r0 = r4;
0x08002b24 bl 0x8000070 | nf_conntrack_hash_insert ();
0x08002b28 mov r1, sl | r1 = sl;
0x08002b2c mov r0, r6 | r0 = r6;
0x08002b30 bl 0x800060c | nf_conntrack_double_unlock ();
0x08002b34 ldr r0, [pc, 0x1c0] | r0 = *(0x8002cf8);
0x08002b38 mov r1, 0x200 | r1 = 0x200;
0x08002b3c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08002b40 ldr r3, [r4, 0x8c] | r3 = *((r4 + 0x8c));
0x08002b44 cmp r3, 0 |
| if (r3 != 0) {
0x08002b48 beq 0x8002c0c |
0x08002b4c ldrb r2, [r3] | r2 = *(r3);
0x08002b50 ldr r1, [r4, 0x74] | r1 = *((r4 + 0x74));
0x08002b54 cmp r2, 0 |
| if (r2 != 0) {
0x08002b58 beq 0x8002bd8 |
0x08002b5c cmn r3, r2 |
| if (r3 == r2) {
0x08002b60 beq 0x8002bd8 | goto label_20;
| }
0x08002b64 ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x08002b68 cmp r2, 0 |
| if (r2 == 0) {
0x08002b6c beq 0x8002bd8 | goto label_20;
| }
0x08002b70 ldr r2, [r1, 0x660] | r2 = *((r1 + 0x660));
0x08002b74 cmp r2, 0 |
| if (r2 == 0) {
0x08002b78 beq 0x8002bd8 | goto label_20;
| }
0x08002b7c ldrb r2, [r3, 4] | r2 = *((r3 + 4));
0x08002b80 cmp r2, 0 |
| if (r2 == 0) {
0x08002b84 beq 0x8002bd8 | goto label_20;
| }
0x08002b88 cmn r3, r2 |
| if (r3 == r2) {
0x08002b8c beq 0x8002ce0 | goto label_21;
| }
0x08002b90 mrs r0, apsr | r0 = apsr;
0x08002b94 cpsid i | __asm ("cpsid i");
0x08002b98 ldr r1, [r3, r2] | r1 = *((r3 + r2));
0x08002b9c orr r1, r1, 0x40 | r1 |= 0x40;
0x08002ba0 str r1, [r3, r2] | *((r3 + r2)) = r1;
0x08002ba4 msr cpsr_c, r0 | cpsr_c = r0;
0x08002ba8 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x08002bac ldr r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x08002bb0 ldr r3, [r3, 0x660] | r3 = *((r3 + 0x660));
0x08002bb4 cmp r3, 0 |
| if (r3 == 0) {
0x08002bb8 beq 0x8002c14 | goto label_8;
| }
0x08002bbc ldr r3, [r4, 0x8c] | r3 = *((r4 + 0x8c));
0x08002bc0 cmp r3, 0 |
| if (r3 == 0) {
0x08002bc4 beq 0x8002c14 | goto label_8;
| }
0x08002bc8 subs r0, r0, 0 |
| if (r0 == r0) {
0x08002bcc movne r0, 1 | r0 = 1;
| }
0x08002bd0 b 0x8002bf0 | goto label_22;
| label_9:
0x08002bd4 b 0x800283c | goto label_3;
| }
| label_20:
0x08002bd8 ldr r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x08002bdc ldr r2, [r1, 0x660] | r2 = *((r1 + 0x660));
0x08002be0 subs r0, r0, 0 |
| if (r0 == r0) {
0x08002be4 movne r0, 1 | r0 = 1;
| }
0x08002be8 cmp r2, 0 |
| if (r2 == 0) {
0x08002bec beq 0x8002c14 | goto label_8;
| }
| label_22:
0x08002bf0 ldrb r2, [r3, 4] | r2 = *((r3 + 4));
0x08002bf4 cmp r2, 0 |
| if (r2 == 0) {
0x08002bf8 beq 0x8002c14 | goto label_8;
| }
| label_7:
0x08002bfc adds r1, r3, r2 | r1 = r3 + r2;
| if (r1 == r3) {
0x08002c00 beq 0x8002c14 | goto label_8;
| }
0x08002c04 stmdaeq r1, {r0, r1, r2, r4, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r4, r8, sb, sl, fp, lr, pc}");
0x08002c08 b 0x8002c14 |
| } else {
0x08002c0c ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x08002c10 ldr r3, [r3, 0x660] | r3 = *((r3 + 0x660));
| }
| label_8:
0x08002c14 mov sb, 1 | sb = 1;
| label_6:
0x08002c18 mov r0, sb | r0 = sb;
0x08002c1c pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x08002c20 ldrh sb, [r2, 8] | sb = *((r2 + 8));
0x08002c24 cmp r5, 0 |
| if (r5 != 0) {
0x08002c28 beq 0x8002c30 |
| label_18:
0x08002c2c ldrh r5, [r4, 8] | r5 = *((r4 + 8));
| }
0x08002c30 cmp sb, r5 |
| if (sb != r5) {
0x08002c34 bne 0x80029e8 | goto label_2;
| }
0x08002c38 b 0x8002ac8 | goto label_4;
| label_13:
0x08002c3c ldrh fp, [r2, 8] | fp = *((r2 + 8));
0x08002c40 cmp sb, 0 |
| if (sb != 0) {
0x08002c44 beq 0x8002c4c |
| label_14:
0x08002c48 ldrh sb, [r4, 8] | sb = *((r4 + 8));
| }
0x08002c4c cmp fp, sb |
| if (fp != sb) {
0x08002c50 bne 0x80028c8 | goto label_0;
| }
0x08002c54 b 0x80029a8 | goto label_5;
| label_10:
0x08002c58 stmdaeq r0, {r4, ip, sp, lr, pc} | __asm ("stmdaeq r0, {r4, ip, sp, lr, pc}");
0x08002c5c stmdaeq r0, {r4, ip, sp, lr, pc} | __asm ("stmdaeq r0, {r4, ip, sp, lr, pc}");
0x08002c60 ldrb r3, [r2] | r3 = *(r2);
0x08002c64 cmp r3, 0 |
0x08002c68 beq 0x8002cc0 |
| while (1) {
0x08002c6c mov r1, sl | r1 = sl;
0x08002c70 mov r0, r6 | r0 = r6;
0x08002c74 bl 0x800060c | nf_conntrack_double_unlock ();
0x08002c78 ldr r0, [pc, 0x80] | r0 = .text;
0x08002c7c mov r1, 0x200 | r1 = 0x200;
0x08002c80 mov sb, 0 | sb = 0;
0x08002c84 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08002c88 b 0x8002c18 | goto label_6;
| label_11:
0x08002c8c mov r0, r4 | r0 = r4;
0x08002c90 bl 0x8000124 | nf_ct_add_to_dying_list ();
0x08002c94 ldr r2, [r7, 0x65c] | r2 = *((r7 + 0x65c));
0x08002c98 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x08002c9c add r3, r3, 1 | r3++;
0x08002ca0 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
| label_19:
0x08002ca4 mov r1, sl | r1 = sl;
0x08002ca8 mov r0, r6 | r0 = r6;
0x08002cac bl 0x800060c | nf_conntrack_double_unlock ();
0x08002cb0 ldr r0, [pc, 0x4c] | r0 = .text;
0x08002cb4 mov r1, 0x200 | r1 = 0x200;
0x08002cb8 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08002cbc b 0x8002c18 | goto label_6;
0x08002cc0 mov r1, 1 | r1 = 1;
0x08002cc4 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
0x08002cc8 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
0x08002ccc strb r1, [r2] | *(r2) = r1;
0x08002cd0 mov r2, 9 | r2 = 9;
0x08002cd4 mov r1, 0x460 | r1 = 0x460;
0x08002cd8 stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}");
0x08002cdc b 0x8002c6c |
| }
| label_21:
0x08002ce0 ldr r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x08002ce4 ldr r1, [r1, 0x660] | r1 = *((r1 + 0x660));
0x08002ce8 subs r0, r0, 0 |
| if (r0 == r0) {
0x08002cec movne r0, 1 | r0 = 1;
| }
0x08002cf0 cmp r1, 0 |
| if (r1 != 0) {
0x08002cf4 bne 0x8002bfc | goto label_7;
| }
0x08002cf8 b 0x8002c14 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x800106c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.destroy_conntrack () | void destroy_conntrack (int32_t arg1) {
| int32_t var_0h;
| r0 = arg1;
0x0800106c push {r4, lr} |
0x08001070 mov r4, r0 | r4 = r0;
0x08001074 ldr r3, [r0] | r3 = *(r0);
0x08001078 cmp r3, 0 |
| if (r3 != 0) {
0x0800107c bne 0x8001100 | goto label_1;
| }
0x08001080 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x08001084 tst r3, 0x800 |
| if ((r3 & 0x800) != 0) {
0x08001088 bne 0x8001124 | goto label_2;
| }
| label_0:
0x0800108c mov r3, sp | r3 = sp;
0x08001090 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08001094 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08001098 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800109c add r2, r2, 0x200 | r2 += 0x200;
0x080010a0 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x080010a4 mov r0, r4 | r0 = r4;
0x080010a8 stmdaeq r0, {r3, r4, r5, r6, r7, sb, fp, ip, lr} | __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, sb, fp, ip, lr}");
0x080010ac mov r0, r4 | r0 = r4;
0x080010b0 bl 0x8000258 | nf_ct_del_from_dying_or_unconfirmed_list ();
0x080010b4 ldr r0, [pc, 0x7c] | r0 = *(0x8001134);
0x080010b8 mov r1, 0x200 | r1 = 0x200;
0x080010bc stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x080010c0 ldr r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x080010c4 cmp r0, 0 |
| if (r0 == 0) {
0x080010c8 beq 0x80010ec | goto label_3;
| }
0x080010cc pld [r0] | __asm ("pld [r0]");
| do {
0x080010d0 ldrex r3, [r0] | __asm ("ldrex r3, [r0]");
0x080010d4 sub r3, r3, 1 | r3--;
0x080010d8 strex r2, r3, [r0] | __asm ("strex r2, r3, [r0]");
0x080010dc teq r2, 0 | __asm ("teq r2, 0");
0x080010e0 bne 0x80010d0 |
| } while (r0 != 0);
0x080010e4 cmp r3, 0 |
0x080010e8 beq 0x80010f8 |
| while (1) {
| label_3:
0x080010ec mov r0, r4 | r0 = r4;
0x080010f0 pop {r4, lr} |
0x080010f4 stmdaeq r0, {r4, r6, r7, r8, sb} | __asm ("stmdaeq r0, {r4, r6, r7, r8, sb}");
0x080010f8 stmdaeq r1, {r0, r1, r3, r4, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r3, r4, r6, r7, sb, sl, fp, lr, pc}");
0x080010fc b 0x80010ec |
| }
| label_1:
0x08001100 mov r3, 0 | r3 = 0;
0x08001104 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
0x08001108 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
0x0800110c mov r2, 9 | r2 = 9;
0x08001110 movw r1, 0x25a | r1 = 0x25a;
0x08001114 stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}");
0x08001118 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x0800111c tst r3, 0x800 |
| if ((r3 & 0x800) == 0) {
0x08001120 beq 0x800108c | goto label_0;
| }
| label_2:
0x08001124 mov r0, r4 | r0 = r4;
0x08001128 stmdaeq r0, {r2, r3, r4, r6, sb, fp, sp, pc} | __asm ("stmdaeq r0, {r2, r3, r4, r6, sb, fp, sp, pc}");
0x0800112c mov r0, r4 | r0 = r4;
0x08001130 pop {r4, lr} |
0x08001134 stmdaeq r1, {r0, r1, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r7, sb, sl, fp, lr, pc}");
0x08001138 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x800bb84 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ecache_work_evict_list () | void ecache_work_evict_list (int32_t arg1) {
| int32_t var_0h;
| int32_t var_100h;
| r0 = arg1;
0x0800bb84 push {r4, r5, r6, r7, r8, lr} |
0x0800bb88 sub sp, sp, 0x100 |
0x0800bb8c mov r3, sp | r3 = sp;
0x0800bb90 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x0800bb94 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0800bb98 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800bb9c add r2, r2, 1 | r2++;
0x0800bba0 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0800bba4 ldr r5, [r0, 4] | r5 = *((r0 + 4));
0x0800bba8 ands r6, r5, 1 | r6 = r5 & 1;
| if (r6 == r5) {
0x0800bbac movne r6, 0 | r6 = 0;
| }
| if (r6 == r5) {
0x0800bbb0 movne r5, 2 | r5 = 2;
| }
| if (r6 != r5) {
0x0800bbb4 bne 0x800bc64 | goto label_3;
| }
0x0800bbb8 mvn r7, 0xb | r7 = ~0xb;
0x0800bbbc b 0x800bbcc |
| while ((r3 & 8) == 0) {
| label_0:
0x0800bbc0 ldr r5, [r5] | r5 = *(r5);
0x0800bbc4 tst r5, 1 |
| if ((r5 & 1) != 0) {
0x0800bbc8 bne 0x800bce4 | goto label_5;
| }
0x0800bbcc ldrb r3, [r5, 0x2f] | r3 = *((r5 + 0x2f));
0x0800bbd0 add r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0800bbd4 sub r4, r7, r3, lsl 4 | r4 = r7 - (r3 << 4);
0x0800bbd8 add r4, r5, r4 | r4 = r5 + r4;
0x0800bbdc ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x0800bbe0 tst r3, 8 |
0x0800bbe4 beq 0x800bbc0 |
| }
0x0800bbe8 ldr r3, [r4, 0x8c] | r3 = *((r4 + 0x8c));
0x0800bbec cmp r3, 0 |
| if (r3 == 0) {
0x0800bbf0 beq 0x800bbc0 | goto label_0;
| }
0x0800bbf4 ldrb r2, [r3, 4] | r2 = *((r3 + 4));
0x0800bbf8 cmp r2, 0 |
| if (r2 == 0) {
0x0800bbfc beq 0x800bbc0 | goto label_0;
| }
0x0800bc00 adds r8, r3, r2 | r8 = r3 + r2;
| if (r8 == r3) {
0x0800bc04 beq 0x800bbc0 | goto label_0;
| }
0x0800bc08 ldrb r3, [r8, 0xa] | r3 = *((r8 + 0xa));
0x0800bc0c cmp r3, 1 |
| if (r3 != 1) {
0x0800bc10 bne 0x800bbc0 | goto label_0;
| }
0x0800bc14 ldr r0, [r4, 0x74] | r0 = *((r4 + 0x74));
0x0800bc18 mov r3, 0 | r3 = 0;
0x0800bc1c mov r1, r4 | r1 = r4;
0x0800bc20 mov r2, r3 | r2 = r3;
0x0800bc24 ldr r0, [r0, 0x660] | r0 = *((r0 + 0x660));
0x0800bc28 cmp r0, r3 |
| if (r0 != r3) {
0x0800bc2c beq 0x800bc40 |
0x0800bc30 mov r0, 4 | r0 = 4;
0x0800bc34 stmdaeq r0, {r4, r5, r6, fp, ip, sp, pc} | __asm ("stmdaeq r0, {r4, r5, r6, fp, ip, sp, pc}");
0x0800bc38 cmp r0, 0 |
| if (r0 != 0) {
0x0800bc3c bne 0x800bd1c | goto label_6;
| }
| }
0x0800bc40 add r3, sp, 0x100 | r3 += var_100h;
0x0800bc44 mov r2, 2 | r2 = 2;
0x0800bc48 add r3, r3, r6, lsl 2 | r3 += (r6 << 2);
0x0800bc4c add r6, r6, 1 | r6++;
0x0800bc50 cmp r6, 0x3f |
0x0800bc54 strb r2, [r8, 0xa] | *((r8 + 0xa)) = r2;
0x0800bc58 str r4, [r3, -0x100] | var_0h = r4;
| if (r6 < 0x3f) {
0x0800bc5c bls 0x800bbc0 | goto label_0;
| }
0x0800bc60 mov r5, 1 | r5 = 1;
| label_3:
0x0800bc64 mov r3, sp | r3 = sp;
0x0800bc68 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x0800bc6c bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0800bc70 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800bc74 sub r2, r2, 1 | r2--;
0x0800bc78 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0800bc7c cmp r2, 0 |
| if (r2 == 0) {
0x0800bc80 beq 0x800bd08 | goto label_7;
| }
| label_4:
0x0800bc84 cmp r6, 0 |
| if (r6 == 0) {
0x0800bc88 beq 0x800bcd8 | goto label_8;
| }
0x0800bc8c add r4, sp, r6, lsl 2 | r4 = sp + (r6 << 2);
0x0800bc90 b 0x800bc9c | goto label_2;
| label_1:
0x0800bc94 cmp r6, 0 |
| if (r6 == 0) {
0x0800bc98 beq 0x800bcd8 | goto label_8;
| }
| label_2:
0x0800bc9c ldr r0, [r4, -4]! | r0 = *((r4 -= 4));
0x0800bca0 sub r6, r6, 1 | r6--;
0x0800bca4 cmp r0, 0 |
| if (r0 == 0) {
0x0800bca8 beq 0x800bcec | goto label_9;
| }
0x0800bcac pld [r0] | __asm ("pld [r0]");
| do {
0x0800bcb0 ldrex r3, [r0] | __asm ("ldrex r3, [r0]");
0x0800bcb4 sub r3, r3, 1 | r3--;
0x0800bcb8 strex r2, r3, [r0] | __asm ("strex r2, r3, [r0]");
0x0800bcbc teq r2, 0 | __asm ("teq r2, 0");
0x0800bcc0 bne 0x800bcb0 |
| } while (r0 != 0);
0x0800bcc4 cmp r3, 0 |
| if (r3 != 0) {
0x0800bcc8 bne 0x800bc94 | goto label_1;
| }
0x0800bccc stmdaeq r1, {r0, r1, r3, r4, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r3, r4, r6, r7, sb, sl, fp, lr, pc}");
0x0800bcd0 cmp r6, 0 |
| if (r6 != 0) {
0x0800bcd4 bne 0x800bc9c | goto label_2;
| }
| label_8:
0x0800bcd8 mov r0, r5 | r0 = r5;
0x0800bcdc add sp, sp, 0x100 |
0x0800bce0 pop {r4, r5, r6, r7, r8, pc} |
| label_5:
0x0800bce4 mov r5, 2 | r5 = 2;
0x0800bce8 b 0x800bc64 | goto label_3;
| label_9:
0x0800bcec mov r3, r0 | r3 = r0;
0x0800bcf0 mov r2, 9 | r2 = 9;
0x0800bcf4 mov r1, 0xa1 | r1 = 0xa1;
0x0800bcf8 stmdaeq r0, {r4, r7, sb, sl, sp, lr, pc} | __asm ("stmdaeq r0, {r4, r7, sb, sl, sp, lr, pc}");
0x0800bcfc stmdaeq r0, {r4, r7, sb, sl, sp, lr, pc} | __asm ("stmdaeq r0, {r4, r7, sb, sl, sp, lr, pc}");
0x0800bd00 stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r3, r7, sb, sl, fp, lr, pc}");
0x0800bd04 b 0x800bc94 | goto label_1;
| label_7:
0x0800bd08 ldr r3, [r3] | r3 = *(r3);
0x0800bd0c tst r3, 2 |
| if ((r3 & 2) == 0) {
0x0800bd10 beq 0x800bc84 | goto label_4;
| }
0x0800bd14 stmdaeq r1, {r0, r1, r3, r4, r5, r6, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r3, r4, r5, r6, sb, sl, fp, lr, pc}");
0x0800bd18 b 0x800bc84 | goto label_4;
| label_6:
0x0800bd1c mov r5, 0 | r5 = 0;
0x0800bd20 b 0x800bc64 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x800bd24 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ecache_work () | void ecache_work (int32_t arg1) {
| int32_t var_0h;
| r0 = arg1;
0x0800bd24 push {r4, lr} |
0x0800bd28 mov r4, r0 | r4 = r0;
0x0800bd2c mov r3, sp | r3 = sp;
0x0800bd30 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x0800bd34 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0800bd38 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800bd3c add r2, r2, 0x200 | r2 += 0x200;
0x0800bd40 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0800bd44 ldr r0, [r0, 0x4c] | r0 = *((r0 + 0x4c));
0x0800bd48 bl 0x800bb84 | r0 = ecache_work_evict_list ();
0x0800bd4c mov r3, r0 | r3 = r0;
0x0800bd50 cmp r3, 0 |
0x0800bd54 ldr r0, [pc, 0x60] | r0 = *(0x800bdb8);
| if (r3 == 0) {
0x0800bd58 beq 0x800bda8 | goto label_0;
| }
0x0800bd5c cmp r3, 1 |
| if (r3 != 1) {
0x0800bd60 beq 0x800bd78 |
0x0800bd64 mov r1, 0x200 | r1 = 0x200;
0x0800bd68 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x0800bd6c mov r3, 0 | r3 = 0;
0x0800bd70 strb r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0800bd74 pop {r4, pc} |
| }
0x0800bd78 mov r1, 0x200 | r1 = 0x200;
0x0800bd7c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x0800bd80 mov r1, 0 | r1 = 0;
0x0800bd84 mov r3, r1 | r3 = r1;
| do {
0x0800bd88 stmdaeq r1, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, lr, pc}");
0x0800bd8c stmdaeq r1, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, lr, pc}");
0x0800bd90 strb r1, [r4, 0x2c] | *((r4 + 0x2c)) = r1;
0x0800bd94 mov r2, r4 | r2 = r4;
0x0800bd98 ldr r1, [r0] | r1 = *(r0);
0x0800bd9c mov r0, 1 | r0 = 1;
0x0800bda0 pop {r4, lr} |
0x0800bda4 stmdaeq r1, {r0, r1, r5, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r5, r6, r7, sb, sl, fp, lr, pc}");
| label_0:
0x0800bda8 mov r1, 0x200 | r1 = 0x200;
0x0800bdac stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x0800bdb0 mov r1, 1 | r1 = 1;
0x0800bdb4 mov r3, 0xa | r3 = 0xa;
0x0800bdb8 b 0x800bd88 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8001e80 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.nf_conntrack_hash_check_insert () | void nf_conntrack_hash_check_insert (int32_t arg1) {
| int32_t var_0h;
| r0 = arg1;
0x08001e80 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x08001e84 mov r4, r0 | r4 = r0;
0x08001e88 mov r3, sp | r3 = sp;
0x08001e8c ldr r6, [r0, 0x74] | r6 = *((r0 + 0x74));
0x08001e90 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08001e94 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08001e98 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08001e9c add r2, r2, 0x200 | r2 += 0x200;
0x08001ea0 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08001ea4 stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
0x08001ea8 stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
0x08001eac add r8, r0, 0x14 | r8 = r0 + 0x14;
0x08001eb0 add r7, r0, 0x44 | r7 = r0 + 0x44;
| do {
| label_1:
0x08001eb4 ldr sl, [sb, 0x10] | sl = *((sb + 0x10));
0x08001eb8 tst sl, 1 |
| if ((sl & 1) != 0) {
0x08001ebc bne 0x8002040 | goto label_7;
| }
0x08001ec0 mov r1, r6 | r1 = r6;
0x08001ec4 mov r0, r8 | r0 = r8;
0x08001ec8 bl 0x800086c | hash_conntrack_raw ();
0x08001ecc ldr r5, [sb, 0x18] | r5 = *((sb + 0x18));
0x08001ed0 mov r3, r0 | r3 = r0;
0x08001ed4 mov r1, r6 | r1 = r6;
0x08001ed8 mov r0, r7 | r0 = r7;
0x08001edc umull r3, r5, r5, r3 | r3:r5 = r5 * r3;
0x08001ee0 bl 0x800086c | hash_conntrack_raw ();
0x08001ee4 ldr r1, [sb, 0x18] | r1 = *((sb + 0x18));
0x08001ee8 mov r3, r0 | r3 = r0;
0x08001eec mov r2, sl | r2 = sl;
0x08001ef0 mov r0, r5 | r0 = r5;
0x08001ef4 umull r3, sl, r1, r3 | r3:sl = r1 * r3;
0x08001ef8 mov r1, sl | r1 = sl;
0x08001efc bl 0x80007f0 | r0 = nf_conntrack_double_lock_constprop_0 ();
0x08001f00 cmp r0, 0 |
0x08001f04 bne 0x8001eb4 |
| } while (r0 != 0);
0x08001f08 ldr r7, [sb] | r7 = *(sb);
0x08001f0c ldr r3, [r7, r5, lsl 2] | offset_0 = r5 << 2;
| r3 = *((r7 + offset_0));
0x08001f10 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x08001f14 bne 0x8002044 | goto label_8;
| }
0x08001f18 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08001f1c mvn lr, 0xb | lr = ~0xb;
0x08001f20 mov ip, 1 |
0x08001f24 b 0x8001f34 |
| while (r0 != r2) {
| label_0:
0x08001f28 ldr r3, [r3] | r3 = *(r3);
0x08001f2c tst r3, 1 |
| if ((r3 & 1) != 0) {
0x08001f30 bne 0x8002044 | goto label_8;
| }
0x08001f34 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x08001f38 cmp r0, r2 |
0x08001f3c bne 0x8001f28 |
| }
0x08001f40 ldr r1, [r4, 0x18] | r1 = *((r4 + 0x18));
0x08001f44 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x08001f48 cmp r1, r2 |
| if (r1 != r2) {
0x08001f4c bne 0x8001f28 | goto label_0;
| }
0x08001f50 ldr r1, [r4, 0x1c] | r1 = *((r4 + 0x1c));
0x08001f54 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x08001f58 cmp r1, r2 |
| if (r1 != r2) {
0x08001f5c bne 0x8001f28 | goto label_0;
| }
0x08001f60 ldr r1, [r4, 0x20] | r1 = *((r4 + 0x20));
0x08001f64 ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x08001f68 cmp r1, r2 |
| if (r1 != r2) {
0x08001f6c bne 0x8001f28 | goto label_0;
| }
0x08001f70 ldr r1, [r4, 0x24] | r1 = *((r4 + 0x24));
0x08001f74 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x08001f78 cmp r1, r2 |
| if (r1 != r2) {
0x08001f7c bne 0x8001f28 | goto label_0;
| }
0x08001f80 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x08001f84 ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x08001f88 cmp r1, r2 |
| if (r1 != r2) {
0x08001f8c bne 0x8001f28 | goto label_0;
| }
0x08001f90 ldr r1, [r4, 0x2c] | r1 = *((r4 + 0x2c));
0x08001f94 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x08001f98 cmp r1, r2 |
| if (r1 != r2) {
0x08001f9c bne 0x8001f28 | goto label_0;
| }
0x08001fa0 ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
0x08001fa4 ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
0x08001fa8 cmp r1, r2 |
| if (r1 != r2) {
0x08001fac bne 0x8001f28 | goto label_0;
| }
0x08001fb0 ldr r1, [r4, 0x34] | r1 = *((r4 + 0x34));
0x08001fb4 ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x08001fb8 cmp r1, r2 |
| if (r1 != r2) {
0x08001fbc bne 0x8001f28 | goto label_0;
| }
0x08001fc0 ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x08001fc4 ldr r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x08001fc8 eor r2, r2, r1 | r2 ^= r1;
0x08001fcc bics r2, r2, 0xff000000 | __asm ("bics r2, r2, 0xff000000");
| if (r1 != r2) {
0x08001fd0 bne 0x8001f28 | goto label_0;
| }
0x08001fd4 ldrb r2, [r3, 0x2f] | r2 = *((r3 + 0x2f));
0x08001fd8 ldrb r8, [r4, 0xb] | r8 = *((r4 + 0xb));
0x08001fdc mov r1, r2 | r1 = r2;
0x08001fe0 add r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x08001fe4 lsl r1, ip, r1 | r1 = ip << r1;
0x08001fe8 sub r2, lr, r2, lsl 4 | r2 = lr - (r2 << 4);
0x08001fec and r8, r8, r1 | r8 &= r1;
0x08001ff0 add r2, r3, r2 | r2 = r3 + r2;
0x08001ff4 ldrb sb, [r2, 0xb] | sb = *((r2 + 0xb));
0x08001ff8 ands sb, sb, r1 | sb &= r1;
| if (sb != sb) {
0x08001ffc bne 0x80021ac | goto label_9;
| }
0x08002000 cmp r8, 0 |
| if (r8 != 0) {
0x08002004 bne 0x80021b8 | goto label_10;
| }
| label_5:
0x08002008 ldr r1, [r2, 0x6c] | r1 = *((r2 + 0x6c));
0x0800200c tst r1, 8 |
| if ((r1 & 8) == 0) {
0x08002010 beq 0x8001f28 | goto label_0;
| }
0x08002014 ldr r2, [r2, 0x74] | r2 = *((r2 + 0x74));
0x08002018 cmp r6, r2 |
| if (r6 != r2) {
0x0800201c bne 0x8001f28 | goto label_0;
| }
| label_3:
0x08002020 mov r1, sl | r1 = sl;
0x08002024 mov r0, r5 | r0 = r5;
0x08002028 bl 0x800060c | nf_conntrack_double_unlock ();
0x0800202c ldr r0, [pc, 0x1b0] | r0 = *(0x80021e0);
0x08002030 mov r1, 0x200 | r1 = 0x200;
0x08002034 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08002038 mvn r0, 0x10 | r0 = ~0x10;
0x0800203c pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_7:
0x08002040 b 0x8001eb4 | goto label_1;
| label_8:
0x08002044 ldr r3, [r7, sl, lsl 2] | offset_1 = sl << 2;
| r3 = *((r7 + offset_1));
0x08002048 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0800204c bne 0x8002164 | goto label_11;
| }
0x08002050 ldr ip, [r4, 0x44] | ip = *((r4 + 0x44));
0x08002054 mvn r7, 0xb | r7 = ~0xb;
0x08002058 mov lr, 1 | lr = 1;
0x0800205c b 0x800206c |
| while (ip != r2) {
| label_2:
0x08002060 ldr r3, [r3] | r3 = *(r3);
0x08002064 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x08002068 bne 0x8002164 | goto label_11;
| }
| label_4:
0x0800206c ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x08002070 cmp ip, r2 |
0x08002074 bne 0x8002060 |
| }
0x08002078 ldr r1, [r4, 0x48] | r1 = *((r4 + 0x48));
0x0800207c ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x08002080 cmp r1, r2 |
| if (r1 != r2) {
0x08002084 bne 0x8002060 | goto label_2;
| }
0x08002088 ldr r1, [r4, 0x4c] | r1 = *((r4 + 0x4c));
0x0800208c ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x08002090 cmp r1, r2 |
| if (r1 != r2) {
0x08002094 bne 0x8002060 | goto label_2;
| }
0x08002098 ldr r1, [r4, 0x50] | r1 = *((r4 + 0x50));
0x0800209c ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x080020a0 cmp r1, r2 |
| if (r1 != r2) {
0x080020a4 bne 0x8002060 | goto label_2;
| }
0x080020a8 ldr r1, [r4, 0x54] | r1 = *((r4 + 0x54));
0x080020ac ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x080020b0 cmp r1, r2 |
| if (r1 != r2) {
0x080020b4 bne 0x8002060 | goto label_2;
| }
0x080020b8 ldr r1, [r4, 0x58] | r1 = *((r4 + 0x58));
0x080020bc ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x080020c0 cmp r1, r2 |
| if (r1 != r2) {
0x080020c4 bne 0x8002060 | goto label_2;
| }
0x080020c8 ldr r1, [r4, 0x5c] | r1 = *((r4 + 0x5c));
0x080020cc ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x080020d0 cmp r1, r2 |
| if (r1 != r2) {
0x080020d4 bne 0x8002060 | goto label_2;
| }
0x080020d8 ldr r1, [r4, 0x60] | r1 = *((r4 + 0x60));
0x080020dc ldr r2, [r3, 0x24] | r2 = *((r3 + 0x24));
0x080020e0 cmp r1, r2 |
| if (r1 != r2) {
0x080020e4 bne 0x8002060 | goto label_2;
| }
0x080020e8 ldr r1, [r4, 0x64] | r1 = *((r4 + 0x64));
0x080020ec ldr r2, [r3, 0x28] | r2 = *((r3 + 0x28));
0x080020f0 cmp r1, r2 |
| if (r1 != r2) {
0x080020f4 bne 0x8002060 | goto label_2;
| }
0x080020f8 ldr r2, [r4, 0x68] | r2 = *((r4 + 0x68));
0x080020fc ldr r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x08002100 eor r2, r2, r1 | r2 ^= r1;
0x08002104 bics r2, r2, 0xff000000 | __asm ("bics r2, r2, 0xff000000");
| if (r1 != r2) {
0x08002108 bne 0x8002060 | goto label_2;
| }
0x0800210c ldrb r2, [r3, 0x2f] | r2 = *((r3 + 0x2f));
0x08002110 ldrb r8, [r4, 0xb] | r8 = *((r4 + 0xb));
0x08002114 mov r1, r2 | r1 = r2;
0x08002118 add r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x0800211c lsl r1, lr, r1 | r1 = lr << r1;
0x08002120 sub r2, r7, r2, lsl 4 | r2 = r7 - (r2 << 4);
0x08002124 and r8, r8, r1 | r8 &= r1;
0x08002128 add r2, r3, r2 | r2 = r3 + r2;
0x0800212c ldrb r0, [r2, 0xb] | r0 = *((r2 + 0xb));
0x08002130 ands r0, r0, r1 | r0 &= r1;
| if (r0 != r0) {
0x08002134 bne 0x80021c8 | goto label_12;
| }
0x08002138 cmp r8, 0 |
| if (r8 != 0) {
0x0800213c bne 0x80021d4 | goto label_13;
| }
| label_6:
0x08002140 ldr r1, [r2, 0x6c] | r1 = *((r2 + 0x6c));
0x08002144 tst r1, 8 |
| if ((r1 & 8) == 0) {
0x08002148 beq 0x8002060 | goto label_2;
| }
0x0800214c ldr r2, [r2, 0x74] | r2 = *((r2 + 0x74));
0x08002150 cmp r6, r2 |
| if (r6 == r2) {
0x08002154 beq 0x8002020 | goto label_3;
| }
0x08002158 ldr r3, [r3] | r3 = *(r3);
0x0800215c tst r3, 1 |
| if ((r3 & 1) == 0) {
0x08002160 beq 0x800206c | goto label_4;
| }
| label_11:
0x08002164 mov r3, 2 | r3 = 2;
0x08002168 mov r2, sl | r2 = sl;
0x0800216c str r3, [r4] | *(r4) = r3;
0x08002170 mov r0, r4 | r0 = r4;
0x08002174 mov r1, r5 | r1 = r5;
0x08002178 bl 0x8000070 | nf_conntrack_hash_insert ();
0x0800217c mov r1, sl | r1 = sl;
0x08002180 mov r0, r5 | r0 = r5;
0x08002184 bl 0x800060c | nf_conntrack_double_unlock ();
0x08002188 ldr r2, [r6, 0x65c] | r2 = *((r6 + 0x65c));
0x0800218c ldr r0, [pc, 0x54] | r0 = .text;
0x08002190 mov r1, 0x200 | r1 = 0x200;
0x08002194 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08002198 add r3, r3, 1 | r3++;
0x0800219c str r3, [r2, 8] | *((r2 + 8)) = r3;
0x080021a0 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x080021a4 mov r0, 0 | r0 = 0;
0x080021a8 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_9:
0x080021ac ldrh sb, [r2, 8] | sb = *((r2 + 8));
0x080021b0 cmp r8, 0 |
| if (r8 != 0) {
0x080021b4 beq 0x80021bc |
| label_10:
0x080021b8 ldrh r8, [r4, 8] | r8 = *((r4 + 8));
| }
0x080021bc cmp r8, sb |
| if (r8 != sb) {
0x080021c0 bne 0x8001f28 | goto label_0;
| }
0x080021c4 b 0x8002008 | goto label_5;
| label_12:
0x080021c8 ldrh r0, [r2, 8] | r0 = *((r2 + 8));
0x080021cc cmp r8, 0 |
| if (r8 != 0) {
0x080021d0 beq 0x80021d8 |
| label_13:
0x080021d4 ldrh r8, [r4, 8] | r8 = *((r4 + 8));
| }
0x080021d8 cmp r8, r0 |
| if (r8 != r0) {
0x080021dc bne 0x8002060 | goto label_2;
| }
0x080021e0 b 0x8002140 | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x80089c0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) sym.nf_conntrack_tcp_packet () | void nf_conntrack_tcp_packet (int32_t arg_b8h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| 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_24h;
| int32_t var_28h;
| 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_4eh;
| int32_t var_54h;
| int32_t var_68h;
| int32_t var_94h;
| r0 = arg1;
| r1 = arg2;
0x080089c0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x080089c4 mov r7, r2 | r7 = r2;
0x080089c8 mov r6, r1 | r6 = r1;
0x080089cc sub sp, sp, 0x94 |
0x080089d0 ldr r5, [r1, 0xa8] | r5 = *((r1 + 0xa8));
0x080089d4 mov r4, r0 | r4 = r0;
0x080089d8 str r3, [sp, 0xc] | var_ch = r3;
0x080089dc ldrd r2, r3, [r1, 0x54] | __asm ("ldrd r2, r3, [r1, 0x54]");
0x080089e0 ldr r8, [sp, 0xb8] | r8 = *(arg_b8h);
0x080089e4 sub r3, r2, r3 | r3 = r2 - r3;
0x080089e8 sub r3, r3, r7 | r3 -= r7;
0x080089ec cmp r3, 0x13 |
0x080089f0 ldr r3, [r0, 0x74] | r3 = *((r0 + 0x74));
0x080089f4 str r3, [sp, 0x24] | var_24h = r3;
| if (r3 > 0x13) {
0x080089f8 bgt 0x8008b60 | goto label_26;
| }
0x080089fc cmp r1, 0 |
| if (r1 == 0) {
0x08008a00 beq 0x80092bc | goto label_4;
| }
0x08008a04 mov r1, r7 | r1 = r7;
0x08008a08 add r2, sp, 0x54 | r2 += var_54h;
0x08008a0c mov r0, r6 | r0 = r6;
0x08008a10 mov r3, 0x14 | r3 = 0x14;
0x08008a14 stmdaeq r1, {r0, r1, r2, r3, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r3, r6, r7, sb, sl, fp, lr, pc}");
0x08008a18 cmp r0, 0 |
| if (r0 < 0) {
0x08008a1c blt 0x80092bc | goto label_4;
| }
0x08008a20 ldr r2, [r6, 0x54] | r2 = *((r6 + 0x54));
0x08008a24 add r5, sp, 0x54 | r5 += var_54h;
| do {
0x08008a28 ldrb r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x08008a2c sub r2, r2, r7 | r2 -= r7;
0x08008a30 ldr r1, [r8, 0x14] | r1 = *((r8 + 0x14));
0x08008a34 lsr r3, r3, 4 | r3 >>= 4;
0x08008a38 lsl r3, r3, 2 | r3 <<= 2;
0x08008a3c cmp r3, 0x13 |
| if (r3 <= 0x13) {
0x08008a40 movgt r0, 0 | r0 = 0;
| }
| if (r3 > 0x13) {
0x08008a44 movle r0, 1 | r0 = 1;
| }
0x08008a48 cmp r2, r3 |
| if (r2 >= r3) {
0x08008a4c orrlo r0, r0, 1 | r0 |= 1;
| }
0x08008a50 cmp r0, 0 |
| if (r0 != 0) {
0x08008a54 bne 0x8009da4 | goto label_27;
| }
0x08008a58 ldr r3, [r1, 0x654] | r3 = *((r1 + 0x654));
0x08008a5c cmp r3, 0 |
| if (r3 != 0) {
0x08008a60 beq 0x8008a70 |
0x08008a64 ldr r1, [r8] | r1 = *(r8);
0x08008a68 cmp r1, 0 |
| if (r1 == 0) {
0x08008a6c beq 0x8009560 | goto label_28;
| }
| }
| label_14:
0x08008a70 ldrb r3, [r5, 0xd] | r3 = *((r5 + 0xd));
0x08008a74 stmdaeq r0, {r6, r8, sb, fp, lr, pc} | __asm ("stmdaeq r0, {r6, r8, sb, fp, lr, pc}");
0x08008a78 stmdaeq r0, {r6, r8, sb, fp, lr, pc} | __asm ("stmdaeq r0, {r6, r8, sb, fp, lr, pc}");
0x08008a7c and r3, r3, 0x37 | r3 &= 0x37;
0x08008a80 add r3, sl, r3 | r3 = sl + r3;
0x08008a84 ldrb r3, [r3, 0xd0] | r3 = *((r3 + 0xd0));
0x08008a88 cmp r3, 0 |
| if (r3 == 0) {
0x08008a8c beq 0x8009d78 | goto label_29;
| }
0x08008a90 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x08008a94 tst r3, 8 |
| if ((r3 & 8) == 0) {
0x08008a98 beq 0x8008b6c | goto label_30;
| }
| label_0:
0x08008a9c mov r3, sp | r3 = sp;
0x08008aa0 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08008aa4 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08008aa8 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x08008aac add r3, r3, 0x200 | r3 += 0x200;
0x08008ab0 add r3, r3, 1 | r3++;
0x08008ab4 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x08008ab8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x08008abc ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x08008ac0 cmp r3, 2 |
0x08008ac4 ldrb sb, [r4, 0xb8] | sb = *((r4 + 0xb8));
0x08008ac8 str sb, [sp, 0x18] | var_18h = sb;
| if (r3 > 2) {
0x08008acc movls fp, 0 |
| }
| if (r3 <= 2) {
0x08008ad0 movhi fp, 1 |
| }
0x08008ad4 tst r2, 4 |
| if ((r2 & 4) != 0) {
0x08008ad8 bne 0x8008b8c | goto label_31;
| }
0x08008adc tst r2, 2 |
0x08008ae0 ubfxne r3, r2, 4, 1 | __asm ("ubfxne r3, r2, 4, 1");
| if ((r2 & 2) == 0) {
0x08008ae4 strne r3, [sp, 0x10] | var_10h = r3;
| }
| if ((r2 & 2) == 0) {
0x08008ae8 bne 0x8008b04 |
0x08008aec tst r2, 1 |
| if ((r2 & 1) != 0) {
0x08008af0 bne 0x80096cc | goto label_32;
| }
0x08008af4 tst r2, 0x10 |
| if ((r2 & 0x10) != 0) {
0x08008af8 moveq r3, 5 | r3 = 5;
| }
| if ((r2 & 0x10) == 0) {
0x08008afc movne r3, 3 | r3 = 3;
| }
0x08008b00 str r3, [sp, 0x10] | var_10h = r3;
| }
| label_1:
0x08008b04 ldr r0, [sp, 0x10] | r0 = var_10h;
0x08008b08 mov r3, 0x3c | r3 = 0x3c;
0x08008b0c mov r1, 0xa | r1 = 0xa;
0x08008b10 mul r3, r3, fp | r3 *= fp;
0x08008b14 mla r3, r1, r0, r3 | __asm ("mla r3, r1, r0, r3");
0x08008b18 add r3, sl, r3 | r3 = sl + r3;
0x08008b1c add r3, r3, sb | r3 += sb;
0x08008b20 ldrb r8, [r3, 0x58] | r8 = *((r3 + 0x58));
0x08008b24 sub r3, r8, 1 | r3 = r8 - 1;
0x08008b28 cmp r3, r1 |
| if (r3 > r1) {
0x08008b2c ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x08008b30 b 0x8008b98 | goto label_33;
0x08008b34 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b38 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b3c stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b40 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b44 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b48 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b4c stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b50 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b54 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b58 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08008b5c stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
| label_26:
0x08008b60 adds r5, r5, r7 | r5 += r7;
0x08008b64 bne 0x8008a28 |
| } while (r5 != r5);
0x08008b68 b 0x80092bc | goto label_4;
| label_30:
0x08008b6c mov r3, r5 | r3 = r5;
0x08008b70 mov r2, r7 | r2 = r7;
0x08008b74 mov r1, r6 | r1 = r6;
0x08008b78 mov r0, r4 | r0 = r4;
0x08008b7c bl 0x8008840 | r0 = tcp_new ();
0x08008b80 cmp r0, 0 |
| if (r0 != 0) {
0x08008b84 bne 0x8008a9c | goto label_0;
| }
0x08008b88 b 0x80092bc | goto label_4;
| label_31:
0x08008b8c mov r3, 4 | r3 = 4;
0x08008b90 str r3, [sp, 0x10] | var_10h = r3;
0x08008b94 b 0x8008b04 | goto label_1;
| label_33:
0x08008b98 ldr r3, [sp, 0xc] | r3 = var_ch;
0x08008b9c ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x08008ba0 cmp r3, 2 |
0x08008ba4 str r0, [sp, 0x30] | var_30h = r0;
0x08008ba8 rev r0, r0 | r0 = SWAP32 (r0);
0x08008bac str r0, [sp, 0x20] | var_20h = r0;
| if (r3 > 2) {
0x08008bb0 movls r3, 1 | r3 = 1;
| }
| if (r3 <= 2) {
0x08008bb4 movhi r3, 0 | r3 = 0;
| }
0x08008bb8 mov r1, r3 | r1 = r3;
0x08008bbc str r3, [sp, 0x14] | var_14h = r3;
0x08008bc0 mov r3, 0x14 | r3 = 0x14;
0x08008bc4 mla r3, r3, r1, r4 | __asm ("mla r3, r3, r1, r4");
0x08008bc8 ldrb r1, [r3, 0xa1] | r1 = *((r3 + 0xa1));
0x08008bcc ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x08008bd0 rev r3, r3 | r3 = SWAP32 (r3);
0x08008bd4 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 <= 2) {
0x08008bd8 movhi r3, 0x14 | r3 = 0x14;
| }
| if (r3 > 2) {
0x08008bdc movls r3, 0 | r3 = 0;
| }
0x08008be0 str r3, [sp, 0x34] | var_34h = r3;
0x08008be4 add r3, r3, 0x90 | r3 += 0x90;
0x08008be8 ldrb sb, [r5, 0xc] | sb = *((r5 + 0xc));
0x08008bec add r3, r4, r3 | r3 = r4 + r3;
0x08008bf0 tst r1, 2 |
0x08008bf4 str r3, [sp, 0x44] | var_44h = r3;
0x08008bf8 ldr r1, [r6, 0x54] | r1 = *((r6 + 0x54));
0x08008bfc ldrh r3, [r5, 0xe] | r3 = *((r5 + 0xe));
0x08008c00 lsr sb, sb, 4 | sb >>= 4;
0x08008c04 ldr r0, [sp, 0x20] | r0 = var_20h;
0x08008c08 rev16 ip, r3 | __asm ("rev16 ip, r3");
0x08008c0c lsl sb, sb, 2 | sb <<= 2;
0x08008c10 sub r3, r1, r7 | r3 = r1 - r7;
0x08008c14 strh ip, [sp, 0x4e] | var_4eh = ip;
0x08008c18 sub r3, r3, sb | r3 -= sb;
0x08008c1c add r3, r3, r0 | r3 += r0;
0x08008c20 and r0, r2, 1 | r0 = r2 & 1;
0x08008c24 add r3, r3, r0 | r3 += r0;
0x08008c28 ubfx r2, r2, 1, 1 | r2 = (r2 >> 1) & ((1 << 1) - 1);
0x08008c2c add r3, r3, r2 | r3 += r2;
0x08008c30 ldr r2, [r4, 0x74] | r2 = *((r4 + 0x74));
0x08008c34 str r3, [sp, 0x28] | var_28h = r3;
0x08008c38 uxth r3, ip | r3 = (int16_t) ip;
0x08008c3c str r2, [sp, 0x40] | var_40h = r2;
0x08008c40 str r3, [sp, 0x38] | var_38h = r3;
0x08008c44 str r3, [sp, 0x48] | var_48h = r3;
| if ((r1 & 2) != 0) {
0x08008c48 bne 0x800944c | goto label_34;
| }
| label_10:
0x08008c4c ldr sl, [sp, 0x1c] | sl = var_1ch;
| label_12:
0x08008c50 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x08008c54 mov sb, 0x14 | sb = 0x14;
0x08008c58 ldr r1, [sp, 0x14] | r1 = var_14h;
0x08008c5c mov r0, r4 | r0 = r4;
0x08008c60 sub r2, r3, 1 | r2 = r3 - 1;
0x08008c64 stmdaeq r0, {r5, r6, r8, sb, fp, sp, pc} | __asm ("stmdaeq r0, {r5, r6, r8, sb, fp, sp, pc}");
0x08008c68 sub r3, sl, r0 | r3 = sl - r0;
0x08008c6c mla sl, sb, fp, r4 | __asm ("mla sl, sb, fp, r4");
0x08008c70 str r3, [sp, 0x2c] | var_2ch = r3;
0x08008c74 str r0, [sp, 0x3c] | var_3ch = r0;
0x08008c78 ldr r3, [sl, 0x98] | r3 = *((sl + 0x98));
0x08008c7c cmp r3, 0 |
| if (r3 != 0) {
0x08008c80 bne 0x8009338 | goto label_35;
| }
0x08008c84 ldrb r3, [r5, 0xd] | r3 = *((r5 + 0xd));
0x08008c88 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x08008c8c bne 0x8009630 | goto label_36;
| }
0x08008c90 ldr r3, [sp, 0x14] | r3 = var_14h;
0x08008c94 ldr r1, [sp, 0x28] | r1 = var_28h;
0x08008c98 ldr r0, [sp, 0x38] | r0 = var_38h;
0x08008c9c mla sb, sb, r3, r4 | __asm ("mla sb, sb, r3, r4");
0x08008ca0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x08008ca4 add r2, r4, r3 | r2 = r4 + r3;
0x08008ca8 str r1, [r2, 0x90] | *((r2 + 0x90)) = r1;
0x08008cac ldrb r3, [sl, 0xa0] | r3 = *((sl + 0xa0));
0x08008cb0 lsl r3, r0, r3 | r3 = r0 << r3;
0x08008cb4 cmp r3, 1 |
| if (r3 >= 1) {
0x08008cb8 movlo r3, 1 | r3 = 1;
| }
0x08008cbc str r3, [sl, 0x98] | *((sl + 0x98)) = r3;
0x08008cc0 add r3, r1, r3 | r3 = r1 + r3;
0x08008cc4 str r3, [r2, 0x94] | *((r2 + 0x94)) = r3;
0x08008cc8 ldr ip, [sb, 0x98] | ip = *((sb + 0x98));
0x08008ccc cmp ip, 0 |
| if (ip != 0) {
0x08008cd0 bne 0x8009614 | goto label_37;
| }
0x08008cd4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x08008cd8 str r3, [sb, 0x94] | *((sb + 0x94)) = r3;
0x08008cdc str r3, [sb, 0x90] | *((sb + 0x90)) = r3;
0x08008ce0 ldr r3, [r2, 0x94] | r3 = *((r2 + 0x94));
| label_17:
0x08008ce4 ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x08008ce8 tst r2, 0x10 |
| if ((r2 & 0x10) != 0) {
0x08008cec bne 0x8009374 | goto label_18;
| }
| label_5:
0x08008cf0 ldr r0, [sp, 0x14] | r0 = var_14h;
0x08008cf4 mov r1, 0x14 | r1 = 0x14;
0x08008cf8 mla r1, r1, r0, r4 | __asm ("mla r1, r1, r0, r4");
0x08008cfc ldr r1, [r1, 0x90] | r1 = *((r1 + 0x90));
0x08008d00 str r1, [sp, 0x2c] | var_2ch = r1;
0x08008d04 mov sb, r1 | sb = r1;
| label_6:
0x08008d08 ldr r1, [sp, 0x30] | r1 = var_30h;
0x08008d0c clz r1, r1 | r1 &= r1;
0x08008d10 lsr r1, r1, 5 | r1 >>= 5;
0x08008d14 ands r1, r1, r2, lsr 2 | r1 &= (r2 >> 2);
| if (r1 != r1) {
0x08008d18 bne 0x8009538 | goto label_38;
| }
| label_13:
0x08008d1c ldr r1, [sp, 0x20] | r1 = var_20h;
0x08008d20 cmp ip, 0 |
0x08008d24 sub r0, r1, r3 | r0 = r1 - r3;
0x08008d28 sub r0, r0, 1 | r0--;
| if (ip == 0) {
0x08008d2c beq 0x80092c4 | goto label_39;
| }
0x08008d30 mov lr, 0x14 | lr = 0x14;
0x08008d34 mla lr, lr, fp, r4 | __asm ("mla lr, lr, fp, r4");
0x08008d38 ldr r1, [lr, 0x90] | r1 = *((lr + 0x90));
0x08008d3c sub r1, r1, 1 | r1--;
0x08008d40 sub r1, r1, ip | r1 -= ip;
0x08008d44 ldr ip, [sp, 0x28] | ip = var_28h;
0x08008d48 sub r1, r1, ip | r1 -= ip;
0x08008d4c cmp r1, 0 |
| if (r1 < 0) {
0x08008d50 blt 0x80092c4 | goto label_39;
| }
0x08008d54 cmp r0, 0 |
| if (r0 < 0) {
0x08008d58 blt 0x80095ac | goto label_40;
| }
| label_2:
0x08008d5c mov r3, 0x14 | r3 = 0x14;
0x08008d60 mla r3, r3, fp, r4 | __asm ("mla r3, r3, fp, r4");
0x08008d64 ldrb r3, [r3, 0xa1] | r3 = *((r3 + 0xa1));
0x08008d68 tst r3, 8 |
| if ((r3 & 8) == 0) {
0x08008d6c bne 0x8008d80 |
0x08008d70 ldr r3, [sp, 0x40] | r3 = var_40h;
0x08008d74 ldr r3, [r3, 0x6a8] | r3 = *((r3 + 0x6a8));
0x08008d78 cmp r3, 0 |
| if (r3 == 0) {
0x08008d7c beq 0x8009d6c | goto label_41;
| }
| }
| label_3:
0x08008d80 ldr r2, [sp, 0x18] | r2 = var_18h;
0x08008d84 sub r3, r8, 4 | r3 = r8 - 4;
0x08008d88 clz r3, r3 | r3 &= r3;
0x08008d8c ldrb r1, [r4, 0xba] | r1 = *((r4 + 0xba));
0x08008d90 cmp r8, r2 |
0x08008d94 lsr r3, r3, 5 | r3 >>= 5;
| if (r8 != r2) {
0x08008d98 moveq r3, 0 | r3 = 0;
| }
| label_21:
0x08008d9c cmp r3, 0 |
0x08008da0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x08008da4 strb r3, [r4, 0xbb] | *((r4 + 0xbb)) = r3;
| if (r3 == 0) {
0x08008da8 movne r3, 0x14 | r3 = 0x14;
| }
0x08008dac strb fp, [r4, 0xb9] | *((r4 + 0xb9)) = fp;
0x08008db0 strb r8, [r4, 0xb8] | *((r4 + 0xb8)) = r8;
0x08008db4 mlane r3, r3, fp, r4 | __asm ("mlane r3, r3, fp, r4");
| if (r3 == 0) {
0x08008db8 ldrbne r2, [r3, 0xa1] | r2 = *((r3 + 0xa1));
| }
| if (r3 == 0) {
0x08008dbc orrne r2, r2, 4 | r2 |= 4;
| }
| if (r3 == 0) {
0x08008dc0 strbne r2, [r3, 0xa1] | *((r3 + 0xa1)) = r2;
| }
0x08008dc4 ldr r3, [r4, 0x8c] | r3 = *((r4 + 0x8c));
0x08008dc8 cmp r3, 0 |
| if (r3 != 0) {
0x08008dcc beq 0x8008ddc |
0x08008dd0 ldrb r2, [r3, 6] | r2 = *((r3 + 6));
0x08008dd4 cmp r2, 0 |
| if (r2 != 0) {
0x08008dd8 bne 0x800942c | goto label_42;
| }
| }
| label_8:
0x08008ddc ldr r3, [sp, 0x24] | r3 = var_24h;
0x08008de0 add r7, r3, 0x660 | r7 = r3 + 0x660;
0x08008de4 add r7, r7, 0xc | r7 += 0xc;
| label_9:
0x08008de8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x08008dec ldr r3, [r3, 0x6ac] | r3 = *((r3 + 0x6ac));
0x08008df0 cmp r3, r1 |
| if (r3 <= r1) {
0x08008df4 bgt 0x8008e08 |
0x08008df8 ldr sb, [r7, 0x30] | sb = *((r7 + 0x30));
0x08008dfc ldr r3, [r7, r8, lsl 2] | offset_1 = r8 << 2;
| r3 = *((r7 + offset_1));
0x08008e00 cmp r3, sb |
| if (r3 > sb) {
0x08008e04 bhi 0x8008e58 | goto label_43;
| }
| }
0x08008e08 ldr r3, [sp, 0x10] | r3 = var_10h;
0x08008e0c cmp r3, 4 |
| if (r3 != 4) {
0x08008e10 ldreq sb, [r7, 0x20] | sb = *((r7 + 0x20));
| }
| if (r3 != 4) {
0x08008e14 beq 0x8008e58 |
0x08008e18 ldrb r3, [r4, 0xa1] | r3 = *((r4 + 0xa1));
0x08008e1c ldrb r2, [r4, 0xb5] | r2 = *((r4 + 0xb5));
0x08008e20 ldr sb, [r7, r8, lsl 2] | offset_2 = r8 << 2;
| sb = *((r7 + offset_2));
0x08008e24 orr r3, r3, r2 | r3 |= r2;
0x08008e28 tst r3, 0x10 |
| if ((r3 & 0x10) != 0) {
0x08008e2c beq 0x8008e40 |
0x08008e30 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x08008e34 cmp r3, sb |
| if (r3 >= sb) {
0x08008e38 movlo sb, r3 | sb = r3;
| }
| if (r3 <= sb) {
0x08008e3c blo 0x8008e58 | goto label_43;
| }
| }
0x08008e40 ldrh r3, [r4, 0xc8] | r3 = *((r4 + 0xc8));
0x08008e44 cmp r3, 0 |
| if (r3 != 0) {
0x08008e48 bne 0x8008e58 | goto label_43;
| }
0x08008e4c ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x08008e50 cmp sb, r3 |
| if (sb >= r3) {
0x08008e54 movhs sb, r3 | sb = r3;
| goto label_43;
| }
| }
| label_43:
0x08008e58 ldr r0, [pc, 0xf58] | r0 = *(0x8009db4);
0x08008e5c movw r1, 0x201 | r1 = 0x201;
0x08008e60 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08008e64 ldr r3, [sp, 0x18] | r3 = var_18h;
0x08008e68 cmp r3, r8 |
| if (r3 != r8) {
0x08008e6c beq 0x8008eb8 |
0x08008e70 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x08008e74 ldr r3, [r3, 0x660] | r3 = *((r3 + 0x660));
0x08008e78 cmp r3, 0 |
| if (r3 == 0) {
0x08008e7c beq 0x8008eb8 | goto label_44;
| }
0x08008e80 ldr r3, [r4, 0x8c] | r3 = *((r4 + 0x8c));
0x08008e84 cmp r3, 0 |
| if (r3 == 0) {
0x08008e88 beq 0x8008eb8 | goto label_44;
| }
0x08008e8c ldrb r2, [r3, 4] | r2 = *((r3 + 4));
0x08008e90 cmp r2, 0 |
| if (r2 == 0) {
0x08008e94 beq 0x8008eb8 | goto label_44;
| }
0x08008e98 cmn r3, r2 |
| if (r3 == r2) {
0x08008e9c beq 0x8008eb8 | goto label_44;
| }
0x08008ea0 mrs r0, apsr | r0 = apsr;
0x08008ea4 cpsid i | __asm ("cpsid i");
0x08008ea8 ldr r1, [r3, r2] | r1 = *((r3 + r2));
0x08008eac orr r1, r1, 0x20 | r1 |= 0x20;
0x08008eb0 str r1, [r3, r2] | *((r3 + r2)) = r1;
0x08008eb4 msr cpsr_c, r0 | cpsr_c = r0;
| }
| label_44:
0x08008eb8 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x08008ebc tst r3, 2 |
| if ((r3 & 2) != 0) {
0x08008ec0 bne 0x80093a8 | goto label_45;
| }
0x08008ec4 ldrb r3, [r5, 0xd] | r3 = *((r5 + 0xd));
0x08008ec8 tst r3, 4 |
| if ((r3 & 4) != 0) {
0x08008ecc bne 0x80096d8 | goto label_46;
| }
0x08008ed0 cmp r8, 3 |
| if (r8 == 3) {
0x08008ed4 bne 0x8008ee4 |
0x08008ed8 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x08008edc cmp sb, r3 |
| if (sb >= r3) {
0x08008ee0 movhs sb, r3 | sb = r3;
| goto label_7;
| }
| }
| label_7:
0x08008ee4 mov ip, 1 |
0x08008ee8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x08008eec mov r3, sb | r3 = sb;
0x08008ef0 mov r2, r6 | r2 = r6;
0x08008ef4 mov r0, r4 | r0 = r4;
0x08008ef8 str ip, [sp] | *(sp) = ip;
0x08008efc stmdaeq r0, {r2, r3, r5, r6, r8, sb, sl} | __asm ("stmdaeq r0, {r2, r3, r5, r6, r8, sb, sl}");
| label_20:
0x08008f00 mov r0, 1 | r0 = 1;
| do {
0x08008f04 add sp, sp, 0x94 |
0x08008f08 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x080092bc mvn r0, 0 | r0 = ~0;
0x080092c0 b 0x8008f04 |
| } while (1);
| label_39:
0x080092c4 cmp r0, 0 |
| if (r0 >= 0) {
0x080092c8 bge 0x8008d5c | goto label_2;
| }
0x080092cc ldr r0, [sp, 0x14] | r0 = var_14h;
0x080092d0 mov r1, 0x14 | r1 = 0x14;
0x080092d4 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x080092d8 mla sl, r1, r0, r4 | __asm ("mla sl, r1, r0, r4");
0x080092dc mla r1, r1, fp, r4 | __asm ("mla r1, r1, fp, r4");
0x080092e0 ldr r0, [sl, 0x90] | r0 = *((sl + 0x90));
0x080092e4 sub ip, r7, r0 |
0x080092e8 cmp ip, 1 |
| if (ip < 1) {
0x080092ec bmi 0x80096ec | goto label_47;
| }
0x080092f0 ldrb r3, [r1, 0xa1] | r3 = *((r1 + 0xa1));
0x080092f4 tst r3, 8 |
| if ((r3 & 8) != 0) {
0x080092f8 bne 0x8008d80 | goto label_3;
| }
0x080092fc ldr r3, [sp, 0x40] | r3 = var_40h;
0x08009300 ldr r3, [r3, 0x6a8] | r3 = *((r3 + 0x6a8));
0x08009304 cmp r3, 0 |
| if (r3 != 0) {
0x08009308 bne 0x8008d80 | goto label_3;
| }
0x0800930c stmdaeq r0, {r3, r4, r5, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r3, r4, r5, sb, sp, lr, pc}");
0x08009310 stmdaeq r0, {r3, r4, r5, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r3, r4, r5, sb, sp, lr, pc}");
| label_15:
0x08009314 mov r1, r4 | r1 = r4;
0x08009318 mov r0, r6 | r0 = r6;
0x0800931c stmdaeq r0, {r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
0x08009320 stmdaeq r0, {r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
0x08009324 stmdaeq r0, {r6, r7, r8, sb, lr, pc} | __asm ("stmdaeq r0, {r6, r7, r8, sb, lr, pc}");
0x08009328 ldr r0, [pc, 0xa94] | r0 = .text;
0x0800932c movw r1, 0x201 | r1 = 0x201;
0x08009330 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08009334 b 0x80092bc | goto label_4;
| label_35:
0x08009338 ldrb r3, [r4, 0xb8] | r3 = *((r4 + 0xb8));
0x0800933c cmp r3, 1 |
| if (r3 == 1) {
0x08009340 beq 0x80095d4 | goto label_48;
| }
0x08009344 cmp r3, 2 |
| if (r3 == 2) {
0x08009348 movne r2, 0 | r2 = 0;
| }
| if (r3 != 2) {
0x0800934c andeq r2, fp, 1 | r2 = fp & 1;
| }
0x08009350 cmp r2, 0 |
| if (r2 != 0) {
0x08009354 bne 0x80095e0 | goto label_49;
| }
| label_16:
0x08009358 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0800935c ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x08009360 tst r2, 0x10 |
0x08009364 mla sb, sb, r3, r4 | __asm ("mla sb, sb, r3, r4");
0x08009368 ldr r3, [sl, 0x94] | r3 = *((sl + 0x94));
0x0800936c ldr ip, [sb, 0x98] | ip = *((sb + 0x98));
| if ((r2 & 0x10) == 0) {
0x08009370 beq 0x8008cf0 | goto label_5;
| }
| label_18:
0x08009374 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x08009378 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x0800937c subs sb, r1, r0 | sb = r1 - r0;
0x08009380 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x08009384 and r0, r0, 0x1400 | r0 &= 0x1400;
| if (sb != r1) {
0x08009388 moveq r1, 1 | r1 = 1;
| }
| if (sb == r1) {
0x0800938c movne r1, 0 | r1 = 0;
| }
0x08009390 cmp r0, 0x1400 |
| if (r0 == 0x1400) {
0x08009394 movne r1, 0 | r1 = 0;
| }
| if (r0 != 0x1400) {
0x08009398 andeq r1, r1, 1 | r1 &= 1;
| }
0x0800939c cmp r1, 0 |
| if (r1 == 0) {
0x080093a0 beq 0x8008d08 | goto label_6;
| }
0x080093a4 b 0x8008cf0 | goto label_5;
| label_45:
0x080093a8 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x080093ac tst r3, 4 |
| if ((r3 & 4) != 0) {
0x080093b0 bne 0x8008ee4 | goto label_7;
| }
0x080093b4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x080093b8 sub r3, r3, 2 | r3 -= 2;
0x080093bc cmp r3, 1 |
0x080093c0 cmpls r8, 3 | __asm ("cmpls r8, 3");
| if (r3 != 1) {
0x080093c4 bne 0x8008ee4 | goto label_7;
| }
0x080093c8 mrs r2, apsr | r2 = apsr;
0x080093cc cpsid i | __asm ("cpsid i");
0x080093d0 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x080093d4 orr r3, r3, 4 | r3 |= 4;
0x080093d8 str r3, [r4, 0x6c] | *((r4 + 0x6c)) = r3;
0x080093dc msr cpsr_c, r2 | cpsr_c = r2;
0x080093e0 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x080093e4 ldr r3, [r3, 0x660] | r3 = *((r3 + 0x660));
0x080093e8 cmp r3, 0 |
| if (r3 == 0) {
0x080093ec beq 0x8008ee4 | goto label_7;
| }
0x080093f0 ldr r3, [r4, 0x8c] | r3 = *((r4 + 0x8c));
0x080093f4 cmp r3, 0 |
| if (r3 == 0) {
0x080093f8 beq 0x8008ee4 | goto label_7;
| }
0x080093fc ldrb r2, [r3, 4] | r2 = *((r3 + 4));
0x08009400 cmp r2, 0 |
| if (r2 == 0) {
0x08009404 beq 0x8008ee4 | goto label_7;
| }
0x08009408 cmn r3, r2 |
| if (r3 == r2) {
0x0800940c beq 0x8008ee4 | goto label_7;
| }
0x08009410 mrs r0, apsr | r0 = apsr;
0x08009414 cpsid i | __asm ("cpsid i");
0x08009418 ldr r1, [r3, r2] | r1 = *((r3 + r2));
0x0800941c orr r1, r1, 0x10 | r1 |= 0x10;
0x08009420 str r1, [r3, r2] | *((r3 + r2)) = r1;
0x08009424 msr cpsr_c, r0 | cpsr_c = r0;
0x08009428 b 0x8008ee4 | goto label_7;
| label_42:
0x0800942c cmn r3, r2 |
| if (r3 == r2) {
0x08009430 beq 0x8008ddc | goto label_8;
| }
0x08009434 ldr r7, [r3, r2] | r7 = *((r3 + r2));
0x08009438 cmp r7, 0 |
| if (r7 == 0) {
0x0800943c beq 0x8008ddc | goto label_8;
| }
0x08009440 adds r7, r7, 8 | r7 += 8;
| if (r7 != r7) {
0x08009444 bne 0x8008de8 | goto label_9;
| }
0x08009448 b 0x8008ddc | goto label_8;
| label_34:
0x0800944c subs sb, sb, 0x14 | sb -= 0x14;
| if (sb == sb) {
0x08009450 beq 0x8008c4c | goto label_10;
| }
0x08009454 ldr r3, [r6, 0x58] | r3 = *((r6 + 0x58));
0x08009458 sub r3, r1, r3 | r3 = r1 - r3;
0x0800945c add r1, r7, 0x14 | r1 = r7 + 0x14;
0x08009460 sub r3, r3, r1 | r3 -= r1;
0x08009464 cmp sb, r3 |
0x08009468 ldr r3, [r6, 0xa8] | r3 = *((r6 + 0xa8));
| if (sb <= r3) {
0x0800946c ble 0x8009978 | goto label_50;
| }
0x08009470 cmp r6, 0 |
| if (r6 == 0) {
0x08009474 beq 0x8009980 | goto label_51;
| }
0x08009478 mov r3, sb | r3 = sb;
0x0800947c add r2, sp, 0x68 | r2 += var_68h;
0x08009480 mov r0, r6 | r0 = r6;
0x08009484 stmdaeq r1, {r0, r1, r2, r3, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r3, r6, r7, sb, sl, fp, lr, pc}");
0x08009488 cmp r0, 0 |
| if (r0 < 0) {
0x0800948c blt 0x8009980 | goto label_51;
| }
0x08009490 add r3, sp, 0x68 | r3 += var_68h;
| label_22:
0x08009494 cmp sb, 0xc |
| if (sb == 0xc) {
0x08009498 beq 0x80099e0 | goto label_52;
| }
| label_11:
0x0800949c cmp sb, 0 |
| if (sb <= 0) {
0x080094a0 ble 0x8008c4c | goto label_10;
| }
| label_23:
0x080094a4 ldrb r2, [r3] | r2 = *(r3);
0x080094a8 cmp r2, 0 |
| if (r2 == 0) {
0x080094ac beq 0x8008c4c | goto label_10;
| }
0x080094b0 cmp r2, 1 |
| if (r2 != 1) {
0x080094b4 addeq r3, r3, 1 | r3++;
| }
| if (r2 == 1) {
0x080094b8 subeq sb, sb, 1 | sb--;
| goto label_53;
| }
| if (r2 == 1) {
| label_53:
0x080094bc beq 0x800949c | goto label_11;
| }
0x080094c0 cmp sb, 1 |
| if (sb == 1) {
0x080094c4 beq 0x8008c4c | goto label_10;
| }
0x080094c8 ldrb r1, [r3, 1] | r1 = *((r3 + 1));
0x080094cc cmp sb, r1 |
0x080094d0 cmpge r1, 1 | __asm ("cmpge r1, 1");
| if (sb <= r1) {
0x080094d4 ble 0x8008c4c | goto label_10;
| }
0x080094d8 sub r2, r2, 5 | r2 -= 5;
0x080094dc cmp r1, 9 |
0x080094e0 clz r2, r2 | r2 &= r2;
0x080094e4 lsr r2, r2, 5 | r2 >>= 5;
| if (r1 > 9) {
0x080094e8 movle r2, 0 | r2 = 0;
| }
0x080094ec cmp r2, 0 |
| if (r2 == 0) {
0x080094f0 beq 0x800952c | goto label_54;
| }
0x080094f4 sub r2, r1, 2 | r2 = r1 - 2;
0x080094f8 ands r0, r2, 7 | r0 = r2 & 7;
| if (r0 != r2) {
0x080094fc bne 0x800952c | goto label_54;
| }
0x08009500 ldr sl, [sp, 0x1c] | sl = var_1ch;
| do {
0x08009504 add r1, r3, r0 | r1 = r3 + r0;
0x08009508 add r0, r0, 8 | r0 += 8;
0x0800950c ldr r1, [r1, 6] | r1 = *((r1 + 6));
0x08009510 rev r1, r1 | r1 = SWAP32 (r1);
0x08009514 sub ip, sl, r1 |
0x08009518 cmp ip, 0 |
| if (ip >= 0) {
0x0800951c movlt sl, r1 | sl = r1;
| }
0x08009520 cmp r0, r2 |
0x08009524 blt 0x8009504 |
| } while (r0 < r2);
0x08009528 b 0x8008c50 | goto label_12;
| label_54:
0x0800952c add r3, r3, r1 | r3 += r1;
0x08009530 sub sb, sb, r1 | sb -= r1;
0x08009534 b 0x800949c | goto label_11;
| label_38:
0x08009538 ldrb r1, [r4, 0xb8] | r1 = *((r4 + 0xb8));
0x0800953c cmp r1, 1 |
| if (r1 != 1) {
0x08009540 moveq r1, 0x14 | r1 = 0x14;
| }
| if (r1 == 1) {
0x08009544 movne r1, 0 | r1 = 0;
| }
| if (r1 == 1) {
0x08009548 strne r1, [sp, 0x20] | var_20h = r1;
| }
0x0800954c mlaeq r1, r1, fp, r4 | __asm ("mlaeq r1, r1, fp, r4");
| if (r1 != 1) {
0x08009550 ldreq r1, [r1, 0x90] | r1 = *((r1 + 0x90));
| }
| if (r1 != 1) {
0x08009554 streq r1, [sp, 0x20] | var_20h = r1;
| }
| if (r1 != 1) {
0x08009558 streq r1, [sp, 0x28] | var_28h = r1;
| }
0x0800955c b 0x8008d1c | goto label_13;
| label_28:
0x08009560 ldrb r3, [r8, 4] | r3 = *((r8 + 4));
0x08009564 mov r2, r7 | r2 = r7;
0x08009568 str r3, [sp] | *(sp) = r3;
0x0800956c mov r0, r6 | r0 = r6;
0x08009570 mov r3, 6 | r3 = 6;
0x08009574 stmdaeq r1, {r0, r1, ip, lr, pc} | __asm ("stmdaeq r1, {r0, r1, ip, lr, pc}");
0x08009578 cmp r0, 0 |
| if (r0 == 0) {
0x0800957c beq 0x8008a70 | goto label_14;
| }
0x08009580 ldrb r2, [r8, 4] | r2 = *((r8 + 4));
0x08009584 mov r0, r6 | r0 = r6;
0x08009588 ldr r1, [r8, 0x14] | r1 = *((r8 + 0x14));
0x0800958c stmdaeq r0, {r2, r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r6, r7, sb, sp, lr, pc}");
0x08009590 stmdaeq r0, {r2, r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r6, r7, sb, sp, lr, pc}");
0x08009594 stmdaeq r0, {r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
0x08009598 stmdaeq r0, {r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
0x0800959c stm sp, {r3, ip} | *(sp) = r3;
| *((sp + 4)) = ip;
0x080095a0 mov r3, 6 | r3 = 6;
0x080095a4 stmdaeq r0, {r6, r8, sb, lr, pc} | __asm ("stmdaeq r0, {r6, r8, sb, lr, pc}");
0x080095a8 b 0x80092bc | goto label_4;
| label_40:
0x080095ac ldrb r3, [lr, 0xa1] | r3 = *((lr + 0xa1));
0x080095b0 tst r3, 8 |
| if ((r3 & 8) != 0) {
0x080095b4 bne 0x8008d80 | goto label_3;
| }
0x080095b8 ldr r3, [sp, 0x40] | r3 = var_40h;
0x080095bc ldr r3, [r3, 0x6a8] | r3 = *((r3 + 0x6a8));
0x080095c0 cmp r3, 0 |
| if (r3 != 0) {
0x080095c4 bne 0x8008d80 | goto label_3;
| }
0x080095c8 stmdaeq r0, {r3, r4, r5, r6, r7, r8, sp, lr, pc} | __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, r8, sp, lr, pc}");
0x080095cc stmdaeq r0, {r3, r4, r5, r6, r7, r8, sp, lr, pc} | __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, r8, sp, lr, pc}");
0x080095d0 b 0x8009314 | goto label_15;
| label_48:
0x080095d4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x080095d8 cmp r3, 2 |
| if (r3 > 2) {
0x080095dc bhi 0x8009358 | goto label_16;
| }
| label_49:
0x080095e0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x080095e4 ldr r2, [sp, 0x28] | r2 = var_28h;
0x080095e8 add sb, r4, r3 | sb = r4 + r3;
0x080095ec ldr r3, [sb, 0x90] | r3 = *((sb + 0x90));
0x080095f0 sub r3, r3, r2 | r3 -= r2;
0x080095f4 cmp r3, 0 |
| if (r3 < 0) {
0x080095f8 blt 0x80099f8 | goto label_55;
| }
0x080095fc ldr r1, [sp, 0x14] | r1 = var_14h;
0x08009600 mov r2, 0x14 | r2 = 0x14;
0x08009604 ldr r3, [sb, 0x94] | r3 = *((sb + 0x94));
0x08009608 mla r2, r2, r1, r4 | __asm ("mla r2, r2, r1, r4");
0x0800960c ldr ip, [r2, 0x98] | ip = *((r2 + 0x98));
0x08009610 b 0x8008ce4 | goto label_17;
| label_37:
0x08009614 ldr r1, [sb, 0x90] | r1 = *((sb + 0x90));
0x08009618 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0800961c add r1, r1, 1 | r1++;
0x08009620 cmp r0, r1 |
| if (r0 != r1) {
0x08009624 streq r0, [sb, 0x90] | *((sb + 0x90)) = r0;
| }
| if (r0 != r1) {
0x08009628 ldreq r3, [r2, 0x94] | r3 = *((r2 + 0x94));
| }
0x0800962c b 0x8008ce4 | goto label_17;
| label_36:
0x08009630 ldr r0, [sp, 0x34] | r0 = var_34h;
0x08009634 mov r1, r7 | r1 = r7;
0x08009638 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0800963c add r7, r4, r0 | r7 = r4 + r0;
0x08009640 ldr r0, [sp, 0x28] | r0 = var_28h;
0x08009644 cmp r2, 1 |
0x08009648 ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r2 >= 1) {
0x0800964c movlo r2, 1 | r2 = 1;
| }
0x08009650 str r0, [r7, 0x94] | *((r7 + 0x94)) = r0;
0x08009654 str r0, [r7, 0x90] | *((r7 + 0x90)) = r0;
0x08009658 mov r0, r6 | r0 = r6;
0x0800965c str r2, [sl, 0x98] | *((sl + 0x98)) = r2;
0x08009660 mov r2, r5 | r2 = r5;
0x08009664 bl 0x8008720 | tcp_options ();
0x08009668 ldrb r3, [sl, 0xa1] | r3 = *((sl + 0xa1));
0x0800966c tst r3, 1 |
| if ((r3 & 1) == 0) {
0x08009670 beq 0x80096ac | goto label_56;
| }
0x08009674 ldr r3, [sp, 0x14] | r3 = var_14h;
0x08009678 mla sb, sb, r3, r4 | __asm ("mla sb, sb, r3, r4");
0x0800967c ldrb r3, [sb, 0xa1] | r3 = *((sb + 0xa1));
0x08009680 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x08009684 beq 0x80096ac | goto label_56;
| }
| label_19:
0x08009688 ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x0800968c tst r2, 0x10 |
| if ((r2 & 0x10) == 0) {
0x08009690 beq 0x8008d80 | goto label_3;
| }
0x08009694 ldr r0, [sp, 0x14] | r0 = var_14h;
0x08009698 mov r1, 0x14 | r1 = 0x14;
0x0800969c ldr r3, [r7, 0x94] | r3 = *((r7 + 0x94));
0x080096a0 mla r1, r1, r0, r4 | __asm ("mla r1, r1, r0, r4");
0x080096a4 ldr ip, [r1, 0x98] | ip = *((r1 + 0x98));
0x080096a8 b 0x8009374 | goto label_18;
| label_56:
0x080096ac ldr r1, [sp, 0x14] | r1 = var_14h;
0x080096b0 mov r3, 0x14 | r3 = 0x14;
0x080096b4 mov r2, 0 | r2 = 0;
0x080096b8 mla r1, r3, r1, r4 | __asm ("mla r1, r3, r1, r4");
0x080096bc mla r3, r3, fp, r4 | __asm ("mla r3, r3, fp, r4");
0x080096c0 strb r2, [r1, 0xa0] | *((r1 + 0xa0)) = r2;
0x080096c4 strb r2, [r3, 0xa0] | *((r3 + 0xa0)) = r2;
0x080096c8 b 0x8009688 | goto label_19;
| label_32:
0x080096cc mov r3, 2 | r3 = 2;
0x080096d0 str r3, [sp, 0x10] | var_10h = r3;
0x080096d4 b 0x8008b04 | goto label_1;
| label_46:
0x080096d8 ldr r1, [sp, 0xc] | r1 = var_ch;
0x080096dc mov r2, r6 | r2 = r6;
0x080096e0 mov r0, r4 | r0 = r4;
0x080096e4 stmdaeq r0, {r5, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r5, r6, r7, r8, sl, fp, ip}");
0x080096e8 b 0x8008f00 | goto label_20;
| label_47:
0x080096ec mvn ip, r7 |
0x080096f0 ldr r7, [r1, 0x98] | r7 = *((r1 + 0x98));
0x080096f4 mov lr, 0x1d0 |
0x080096f8 movt lr, 1 | lr = 0x101d0;
0x080096fc cmp r7, lr |
| if (r7 < lr) {
0x08009700 subhs r0, r0, r7 | r0 -= r7;
| }
| if (r7 >= lr) {
0x08009704 sublo r0, r0, lr | r0 -= lr;
| }
0x08009708 cmn ip, r0 |
| if (ip < r0) {
0x0800970c bmi 0x800983c | goto label_57;
| }
0x08009710 ldrb r3, [r1, 0xa1] | r3 = *((r1 + 0xa1));
0x08009714 tst r3, 8 |
| if ((r3 & 8) != 0) {
0x08009718 bne 0x8008d80 | goto label_3;
| }
0x0800971c ldr r3, [sp, 0x40] | r3 = var_40h;
0x08009720 ldr r3, [r3, 0x6a8] | r3 = *((r3 + 0x6a8));
0x08009724 cmp r3, 0 |
| if (r3 != 0) {
0x08009728 bne 0x8008d80 | goto label_3;
| }
0x0800972c stmdaeq r0, {r4, r5, r6, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, sb, sp, lr, pc}");
0x08009730 stmdaeq r0, {r4, r5, r6, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r4, r5, r6, sb, sp, lr, pc}");
0x08009734 b 0x8009314 | goto label_15;
| label_57:
0x0800983c tst r2, 2 |
0x08009840 ldr r0, [sp, 0x28] | r0 = var_28h;
| if ((r2 & 2) != 0) {
0x08009844 ldrbeq r2, [r1, 0xa0] | r2 = *((r1 + 0xa0));
| }
| if ((r2 & 2) != 0) {
0x08009848 ldreq r1, [sp, 0x38] | r1 = var_38h;
| }
| if ((r2 & 2) != 0) {
0x0800984c lsleq r2, r1, r2 | r2 = r1 << r2;
| }
| if ((r2 & 2) != 0) {
0x08009850 streq r2, [sp, 0x48] | var_48h = r2;
| }
0x08009854 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x08009858 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0800985c sub r2, r2, sb | r2 -= sb;
0x08009860 add r2, r2, r1 | r2 += r1;
0x08009864 cmp r7, r2 |
| if (r7 >= r2) {
0x08009868 movlo r1, 0x14 | r1 = 0x14;
| }
0x0800986c mlalo r1, r1, fp, r4 | __asm ("mlalo r1, r1, fp, r4");
| if (r7 >= r2) {
0x08009870 strlo r2, [r1, 0x98] | *((r1 + 0x98)) = r2;
| }
0x08009874 ldr r2, [sp, 0x34] | r2 = var_34h;
0x08009878 add r1, r4, r2 | r1 = r4 + r2;
0x0800987c ldr r2, [r1, 0x90] | r2 = *((r1 + 0x90));
0x08009880 sub r2, r2, r0 | r2 -= r0;
0x08009884 cmp r2, 0 |
| if (r2 < 0) {
0x08009888 bge 0x80098a4 |
0x0800988c mov r2, 0x14 | r2 = 0x14;
0x08009890 str r0, [r1, 0x90] | *((r1 + 0x90)) = r0;
0x08009894 mla r2, r2, fp, r4 | __asm ("mla r2, r2, fp, r4");
0x08009898 ldrb r1, [r2, 0xa1] | r1 = *((r2 + 0xa1));
0x0800989c orr r1, r1, 0x10 | r1 |= 0x10;
0x080098a0 strb r1, [r2, 0xa1] | *((r2 + 0xa1)) = r1;
| }
0x080098a4 ldrb r2, [r5, 0xd] | r2 = *((r5 + 0xd));
0x080098a8 tst r2, 0x10 |
| if ((r2 & 0x10) != 0) {
0x080098ac beq 0x80098d0 |
0x080098b0 mov r2, 0x14 | r2 = 0x14;
0x080098b4 mla r2, r2, fp, r4 | __asm ("mla r2, r2, fp, r4");
0x080098b8 ldrb r1, [r2, 0xa1] | r1 = *((r2 + 0xa1));
0x080098bc tst r1, 0x20 |
| if ((r1 & 0x20) != 0) {
0x080098c0 bne 0x8009bac | goto label_58;
| }
0x080098c4 orr r1, r1, 0x20 | r1 |= 0x20;
0x080098c8 str sb, [r2, 0x9c] | *((r2 + 0x9c)) = sb;
0x080098cc strb r1, [r2, 0xa1] | *((r2 + 0xa1)) = r1;
| }
| label_24:
0x080098d0 ldr r1, [sp, 0x14] | r1 = var_14h;
0x080098d4 mov r2, 0x14 | r2 = 0x14;
0x080098d8 mla r2, r2, r1, r4 | __asm ("mla r2, r2, r1, r4");
0x080098dc ldr r1, [r2, 0x98] | r1 = *((r2 + 0x98));
0x080098e0 cmp r1, 0 |
| if (r1 != 0) {
0x080098e4 beq 0x8009900 |
0x080098e8 ldr ip, [sp, 0x28] | ip = var_28h;
0x080098ec sub r0, r3, ip | r0 = r3 - ip;
0x080098f0 cmp r0, 0 |
| if (r0 >= 0) {
0x080098f4 sublt r3, r1, r3 | r3 = r1 - r3;
| }
| if (r0 >= 0) {
0x080098f8 addlt r3, r3, ip | r3 += ip;
| }
| if (r0 < 0) {
0x080098fc strlt r3, [r2, 0x98] | *((r2 + 0x98)) = r3;
| goto label_59;
| }
| }
| label_59:
0x08009900 ldr r0, [sp, 0x48] | r0 = var_48h;
0x08009904 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x08009908 ldr r2, [sl, 0x94] | r2 = *((sl + 0x94));
0x0800990c add r3, r0, r3 | r3 = r0 + r3;
0x08009910 mvn r1, r3 | r1 = ~r3;
0x08009914 cmn r1, r2 |
| if (r1 < r2) {
0x08009918 bpl 0x800992c |
0x0800991c cmp r0, 0 |
| if (r0 != 0) {
0x08009920 ldreq r3, [sp, 0x2c] | r3 = var_2ch;
| }
| if (r0 != 0) {
0x08009924 addeq r3, r3, 1 | r3++;
| }
0x08009928 str r3, [sl, 0x94] | *((sl + 0x94)) = r3;
| }
0x0800992c ldr r3, [sl, 0x90] | r3 = *((sl + 0x90));
0x08009930 cmp sb, r3 |
| if (sb == r3) {
0x08009934 bne 0x8009950 |
0x08009938 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0800993c mov r3, 0x14 | r3 = 0x14;
0x08009940 mla r3, r3, r2, r4 | __asm ("mla r3, r3, r2, r4");
0x08009944 ldrb r2, [r3, 0xa1] | r2 = *((r3 + 0xa1));
0x08009948 bic r2, r2, 0x10 | r2 = BIT_MASK (r2, 0x10);
0x0800994c strb r2, [r3, 0xa1] | *((r3 + 0xa1)) = r2;
| }
0x08009950 ldr r3, [sp, 0x18] | r3 = var_18h;
0x08009954 ldr r2, [sp, 0x10] | r2 = var_10h;
0x08009958 subs r3, r8, r3 | r3 = r8 - r3;
| if (r3 == r8) {
0x0800995c movne r3, 1 | r3 = 1;
| }
0x08009960 cmp r8, 4 |
| if (r8 == 4) {
0x08009964 movne r3, 0 | r3 = 0;
| }
0x08009968 cmp r2, 3 |
| if (r2 == 3) {
0x0800996c beq 0x8009afc | goto label_60;
| }
0x08009970 ldrb r1, [r4, 0xba] | r1 = *((r4 + 0xba));
0x08009974 b 0x8008d9c | goto label_21;
| label_50:
0x08009978 adds r3, r3, r1 | r3 += r1;
| if (r3 != r3) {
0x0800997c bne 0x8009494 | goto label_22;
| }
| label_51:
0x08009980 udf 0x12 | __asm ("udf 0x12");
| label_52:
0x080099e0 ldr r1, [r3] | r1 = *(r3);
0x080099e4 movw r2, 0x101 |
0x080099e8 movt r2, 0xa08 | r2 = 0xa080101;
0x080099ec cmp r1, r2 |
| if (r1 != r2) {
0x080099f0 bne 0x80094a4 | goto label_23;
| }
0x080099f4 b 0x8008c4c | goto label_10;
| label_55:
0x080099f8 mov r1, r7 | r1 = r7;
0x080099fc mov r7, 0x14 | r7 = 0x14;
0x08009a00 ldr r2, [sp, 0x38] | r2 = var_38h;
0x08009a04 mla r0, r7, fp, r4 | __asm ("mla r0, r7, fp, r4");
0x08009a08 ldr r3, [sp, 0x28] | r3 = var_28h;
0x08009a0c cmp r2, 1 |
0x08009a10 str r3, [sb, 0x94] | *((sb + 0x94)) = r3;
| if (r2 < 1) {
0x08009a14 movhs ip, r2 |
| }
0x08009a18 str r3, [sb, 0x90] | *((sb + 0x90)) = r3;
| if (r2 >= 1) {
0x08009a1c movlo ip, 1 |
| }
0x08009a20 ldr r3, [sp, 0x44] | r3 = var_44h;
0x08009a24 str ip, [r0, 0x98] | *((r0 + 0x98)) = ip;
0x08009a28 mov r2, r5 | r2 = r5;
0x08009a2c mov r0, r6 | r0 = r6;
0x08009a30 bl 0x8008720 | tcp_options ();
0x08009a34 ldr r3, [sp, 0x14] | r3 = var_14h;
0x08009a38 mla r7, r7, r3, r4 | __asm ("mla r7, r7, r3, r4");
0x08009a3c ldr r3, [sb, 0x94] | r3 = *((sb + 0x94));
0x08009a40 ldr ip, [r7, 0x98] | ip = *((r7 + 0x98));
0x08009a44 b 0x8008ce4 | goto label_17;
| label_60:
0x08009afc ldrb r2, [r4, 0xb9] | r2 = *((r4 + 0xb9));
0x08009b00 cmp fp, r2 |
0x08009b04 beq 0x8009bc0 |
| while (r1 != r2) {
| label_25:
0x08009b08 ldr r2, [sp, 0x20] | r2 = var_20h;
0x08009b0c mov r1, 0 | r1 = 0;
0x08009b10 str r2, [r4, 0xbc] | *((r4 + 0xbc)) = r2;
0x08009b14 ldr r2, [sp, 0x28] | r2 = var_28h;
0x08009b18 str r2, [r4, 0xc4] | *((r4 + 0xc4)) = r2;
0x08009b1c ldrh r2, [sp, 0x4e] | r2 = var_4eh;
0x08009b20 str sb, [r4, 0xc0] | *((r4 + 0xc0)) = sb;
0x08009b24 strh r2, [r4, 0xc8] | *((r4 + 0xc8)) = r2;
0x08009b28 strb r1, [r4, 0xba] | *((r4 + 0xba)) = r1;
0x08009b2c b 0x8008d9c | goto label_21;
| label_58:
0x08009bac ldr r1, [r2, 0x9c] | r1 = *((r2 + 0x9c));
0x08009bb0 sub r1, r1, sb | r1 -= sb;
0x08009bb4 cmp r1, 0 |
| if (r1 >= 0) {
0x08009bb8 strlt sb, [r2, 0x9c] | *((r2 + 0x9c)) = sb;
| }
0x08009bbc b 0x80098d0 | goto label_24;
0x08009bc0 ldr r2, [r4, 0xbc] | r2 = *((r4 + 0xbc));
0x08009bc4 ldr r1, [sp, 0x20] | r1 = var_20h;
0x08009bc8 cmp r1, r2 |
0x08009bcc bne 0x8009b08 |
| }
0x08009bd0 ldr r2, [r4, 0xc0] | r2 = *((r4 + 0xc0));
0x08009bd4 cmp sb, r2 |
| if (sb != r2) {
0x08009bd8 bne 0x8009b08 | goto label_25;
| }
0x08009bdc ldr r2, [r4, 0xc4] | r2 = *((r4 + 0xc4));
0x08009be0 ldr r1, [sp, 0x28] | r1 = var_28h;
0x08009be4 cmp r1, r2 |
| if (r1 != r2) {
0x08009be8 bne 0x8009b08 | goto label_25;
| }
0x08009bec ldrh r2, [r4, 0xc8] | r2 = *((r4 + 0xc8));
0x08009bf0 ldr r1, [sp, 0x38] | r1 = var_38h;
0x08009bf4 cmp r2, r1 |
| if (r2 != r1) {
0x08009bf8 bne 0x8009b08 | goto label_25;
| }
0x08009bfc ldrb r1, [r4, 0xba] | r1 = *((r4 + 0xba));
0x08009c00 add r1, r1, 1 | r1++;
0x08009c04 uxtb r1, r1 | r1 = (int8_t) r1;
0x08009c08 strb r1, [r4, 0xba] | *((r4 + 0xba)) = r1;
0x08009c0c b 0x8008d9c | goto label_21;
| label_41:
0x08009d6c stmdaeq r0, {r3, r4, r5, r7, r8, sp, lr, pc} | __asm ("stmdaeq r0, {r3, r4, r5, r7, r8, sp, lr, pc}");
0x08009d70 stmdaeq r0, {r3, r4, r5, r7, r8, sp, lr, pc} | __asm ("stmdaeq r0, {r3, r4, r5, r7, r8, sp, lr, pc}");
0x08009d74 b 0x8009314 | goto label_15;
| label_29:
0x08009d78 ldrb r2, [r8, 4] | r2 = *((r8 + 4));
0x08009d7c stmdaeq r0, {r2, r4, r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r4, r6, r7, sb, sp, lr, pc}");
0x08009d80 stmdaeq r0, {r2, r4, r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r4, r6, r7, sb, sp, lr, pc}");
0x08009d84 ldr r1, [r8, 0x14] | r1 = *((r8 + 0x14));
0x08009d88 mov r0, r6 | r0 = r6;
| do {
0x08009d8c stmdaeq r0, {r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
0x08009d90 stmdaeq r0, {r6, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r6, r7, sb, sp, lr, pc}");
0x08009d94 stm sp, {r3, ip} | *(sp) = r3;
| *((sp + 4)) = ip;
0x08009d98 mov r3, 6 | r3 = 6;
0x08009d9c stmdaeq r0, {r6, r8, sb, lr, pc} | __asm ("stmdaeq r0, {r6, r8, sb, lr, pc}");
0x08009da0 b 0x80092bc | goto label_4;
| label_27:
0x08009da4 stmdaeq r0, {r2, r3, r5, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r3, r5, r7, sb, sp, lr, pc}");
0x08009da8 stmdaeq r0, {r2, r3, r5, r7, sb, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r3, r5, r7, sb, sp, lr, pc}");
0x08009dac ldrb r2, [r8, 4] | r2 = *((r8 + 4));
0x08009db0 mov r0, r6 | r0 = r6;
0x08009db4 b 0x8009d8c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8005610 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.nf_ct_expectation_timed_out () | void nf_ct_expectation_timed_out (int32_t arg1) {
| int32_t var_0h;
| r0 = arg1;
0x08005610 push {r4, r5, r6, lr} |
0x08005614 movw r5, 0x201 | r5 = 0x201;
0x08005618 sub r4, r0, 0x58 | r4 = r0 - 0x58;
0x0800561c mov r3, sp | r3 = sp;
0x08005620 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08005624 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08005628 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800562c add r2, r2, r5 | r2 += r5;
0x08005630 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08005634 mov r2, 0 | r2 = 0;
0x08005638 mov r0, r4 | r0 = r4;
0x0800563c mov r1, r2 | r1 = r2;
0x08005640 stmdaeq r0, {r3, r6, r7, sl, ip, lr} | __asm ("stmdaeq r0, {r3, r6, r7, sl, ip, lr}");
0x08005644 ldr r0, [pc, 0x10] | r0 = *(0x8005658);
0x08005648 mov r1, r5 | r1 = r5;
0x0800564c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08005650 mov r0, r4 | r0 = r4;
0x08005654 pop {r4, r5, r6, lr} |
0x08005658 stmdaeq r0, {r7, sl, ip, lr} | __asm ("stmdaeq r0, {r7, sl, ip, lr}");
0x0800565c stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x80066cc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.nf_ct_helper_expectfn_register () | void nf_ct_helper_expectfn_register (int32_t arg_34h, int32_t arg1) {
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_30h;
| r0 = arg1;
0x080066cc mov r3, sp | r3 = sp;
0x080066d0 movw r1, 0x201 | r1 = 0x201;
0x080066d4 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x080066d8 mov r3, r0 | r3 = r0;
0x080066dc bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x080066e0 ldr r0, [r2, 4] | r0 = *((r2 + 4));
0x080066e4 add r0, r0, r1 | r0 += r1;
0x080066e8 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x080066ec stmdaeq r0, {r3, r4, r5, r6, sb, sl, fp, sp, lr, pc} | __asm ("stmdaeq r0, {r3, r4, r5, r6, sb, sl, fp, sp, lr, pc}");
0x080066f0 stmdaeq r0, {r3, r4, r5, r6, sb, sl, fp, sp, lr, pc} | __asm ("stmdaeq r0, {r3, r4, r5, r6, sb, sl, fp, sp, lr, pc}");
0x080066f4 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x080066f8 ldr ip, [r2] | ip = *(r2);
0x080066fc str ip, [r3] | *(r3) = ip;
0x08006700 ldr r0, [pc, 8] | r0 = sym.__nf_conntrack_hash_insert;
0x08006704 str r3, [ip, 4] | *((ip + 4)) = r3;
0x08006708 str r3, [r2] | *(r2) = r3;
0x0800670c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08006710 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8006714 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.nf_ct_helper_expectfn_unregister () | void nf_ct_helper_expectfn_unregister (int32_t arg1) {
| r0 = arg1;
0x08006714 mov r3, sp | r3 = sp;
0x08006718 movw r1, 0x201 | r1 = 0x201;
0x0800671c bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08006720 mov r3, r0 | r3 = r0;
0x08006724 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08006728 ldr r0, [r2, 4] | r0 = *((r2 + 4));
0x0800672c add r0, r0, r1 | r0 += r1;
0x08006730 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x08006734 ldm r3, {r0, r2} | r0 = *(r3);
| r2 = *((r3 + 4));
0x08006738 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x0800673c movw ip, 0x122 | ip = 0x122;
0x08006740 str r0, [r2] | *(r2) = r0;
0x08006744 ldr r0, [pc, 4] | r0 = sym.__nf_conntrack_hash_insert;
0x08006748 str ip, [r3, 4] | *((r3 + 4)) = ip;
0x0800674c stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08006750 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8005af8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.nf_ct_remove_expectations () | void nf_ct_remove_expectations (int32_t arg1) {
| int32_t var_0h;
| r0 = arg1;
0x08005af8 ldr r3, [r0, 0x8c] | r3 = *((r0 + 0x8c));
0x08005afc cmp r3, 0 |
| if (r3 != 0) {
0x08005b00 bxeq lr | return;
| }
0x08005b04 ldrb r2, [r3] | r2 = *(r3);
0x08005b08 cmp r2, 0 |
| if (r2 != 0) {
0x08005b0c bxeq lr | return;
| }
0x08005b10 adds r3, r3, r2 | r3 += r2;
| if (r3 != r3) {
0x08005b14 bxeq lr | return;
| }
0x08005b18 push {r4, r5, r6, lr} |
0x08005b1c mov r2, sp | r2 = sp;
0x08005b20 bic r1, r2, 0x1fc0 | r1 = BIT_MASK (r2, 0x1fc0);
0x08005b24 bic r1, r1, 0x3f | r1 = BIT_MASK (r1, 0x3f);
0x08005b28 ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x08005b2c add r2, r2, 0x200 | r2 += 0x200;
0x08005b30 add r2, r2, 1 | r2++;
0x08005b34 str r2, [r1, 4] | *((r1 + 4)) = r2;
0x08005b38 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x08005b3c cmp r4, 0 |
| if (r4 != 0) {
0x08005b40 bne 0x8005b50 | goto label_0;
| }
0x08005b44 b 0x8005b88 | goto label_1;
| do {
0x08005b48 cmp r4, 0 |
| if (r4 == 0) {
0x08005b4c beq 0x8005b88 | goto label_1;
| }
| label_0:
0x08005b50 mov r5, r4 | r5 = r4;
0x08005b54 ldr r4, [r4] | r4 = *(r4);
0x08005b58 add r0, r5, 0x58 | r0 = r5 + 0x58;
0x08005b5c stmdaeq r1, {r0, r1, r5, r7, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r5, r7, r8, sb, sl, fp, lr, pc}");
0x08005b60 cmp r0, 0 |
0x08005b64 beq 0x8005b48 |
| } while (r0 == 0);
0x08005b68 mov r2, 0 | r2 = 0;
0x08005b6c mov r0, r5 | r0 = r5;
0x08005b70 mov r1, r2 | r1 = r2;
0x08005b74 stmdaeq r0, {r3, r6, r7, sl, ip, lr} | __asm ("stmdaeq r0, {r3, r6, r7, sl, ip, lr}");
0x08005b78 mov r0, r5 | r0 = r5;
0x08005b7c stmdaeq r0, {r7, sl, ip, lr} | __asm ("stmdaeq r0, {r7, sl, ip, lr}");
0x08005b80 cmp r4, 0 |
| if (r4 != 0) {
0x08005b84 bne 0x8005b50 | goto label_0;
| }
| label_1:
0x08005b88 pop {r4, r5, r6, lr} |
0x08005b8c movw r1, 0x201 | r1 = 0x201;
0x08005b90 ldr r0, [pc] | r0 = *(0x8005b90);
0x08005b94 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08005b98 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/netfilter/nf_conntrack.ko @ 0x8005b9c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.nf_ct_unexpect_related () | void nf_ct_unexpect_related (int32_t arg_8ch, uint32_t arg1) {
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_14h_2;
| int32_t var_18h_2;
| int32_t var_0h;
| r0 = arg1;
0x08005b9c push {r4, lr} |
0x08005ba0 mov r4, r0 | r4 = r0;
0x08005ba4 mov r3, sp | r3 = sp;
0x08005ba8 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08005bac bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08005bb0 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x08005bb4 add r3, r3, 0x200 | r3 += 0x200;
0x08005bb8 add r3, r3, 1 | r3++;
0x08005bbc str r3, [r2, 4] | *((r2 + 4)) = r3;
0x08005bc0 add r0, r0, 0x58 | r0 += 0x58;
0x08005bc4 stmdaeq r1, {r0, r1, r5, r7, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r5, r7, r8, sb, sl, fp, lr, pc}");
0x08005bc8 cmp r0, 0 |
| if (r0 == 0) {
0x08005bcc bne 0x8005be0 |
0x08005bd0 pop {r4, lr} |
0x08005bd4 movw r1, 0x201 | r1 = 0x201;
0x08005bd8 ldr r0, [pc, 0x28] | r0 = *(0x8005c04);
0x08005bdc stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
| }
0x08005be0 mov r0, r4 | r0 = r4;
0x08005be4 mov r2, 0 | r2 = 0;
0x08005be8 mov r1, r2 | r1 = r2;
0x08005bec stmdaeq r0, {r3, r6, r7, sl, ip, lr} | __asm ("stmdaeq r0, {r3, r6, r7, sl, ip, lr}");
0x08005bf0 mov r0, r4 | r0 = r4;
0x08005bf4 stmdaeq r0, {r7, sl, ip, lr} | __asm ("stmdaeq r0, {r7, sl, ip, lr}");
0x08005bf8 ldr r0, [pc, 8] | r0 = sym.__nf_conntrack_hash_insert;
0x08005bfc pop {r4, lr} |
0x08005c00 movw r1, 0x201 | r1 = 0x201;
0x08005c04 stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r0, r1, r2, r7, sb, sl, fp, lr, pc}");
0x08005c08 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
| }
[*] Function strcpy used 1 times nf_conntrack.ko