[*] Binary protection state of libxt_conntrack.so

  
  	Partial RELRO  No Canary found   NX disabled  DSO          No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of libxt_conntrack.so

    ; 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/lib/xtables/libxt_conntrack.so @ 0x1034 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) fcn.00001034 ()          | void fcn_00001034 (uint32_t arg1) {
                                     |     r0 = arg1;
    0x00001034 tst r0, 1             |     
    0x00001038 push {r4, lr}         |     
    0x0000103c mov r4, r0            |     r4 = r0;
                                     |     if ((r0 & 1) == 0) {
    0x00001040 beq 0x1104            |         goto label_0;
                                     |     }
    0x00001044 ldr r1, [pc, 0xc4]    |     r1 = *(0x110c);
    0x00001048 ldr r0, [pc, 0xc4]    |     r0 = *(0x1110);
    0x0000104c add r1, pc, r1        |     r1 = pc + r1;
    0x00001050 add r0, pc, r0        |     r0 = pc + r0;
    0x00001054 bl 0xacc              |     printf (r0, r1)
    0x00001058 ldr r1, [pc, 0xb8]    |     r1 = *(0x1114);
    0x0000105c add r1, pc, r1        |     r1 = pc + r1;
                                     |     do {
    0x00001060 tst r4, 8             |         
                                     |         if ((r4 & 8) != 0) {
    0x00001064 beq 0x107c            |             
    0x00001068 ldr r0, [pc, 0xac]    |             r0 = *(0x1118);
    0x0000106c add r0, pc, r0        |             r0 = pc + r0;
    0x00001070 bl 0xacc              |             printf (r0)
    0x00001074 ldr r1, [pc, 0xa4]    |             r1 = *(0x111c);
    0x00001078 add r1, pc, r1        |             r1 = pc + r1;
                                     |         }
    0x0000107c tst r4, 4             |         
                                     |         if ((r4 & 4) != 0) {
    0x00001080 beq 0x1098            |             
    0x00001084 ldr r0, [pc, 0x98]    |             r0 = *(0x1120);
    0x00001088 add r0, pc, r0        |             r0 = pc + r0;
    0x0000108c bl 0xacc              |             printf (r0)
    0x00001090 ldr r1, [pc, 0x90]    |             r1 = *(0x1124);
    0x00001094 add r1, pc, r1        |             r1 = pc + r1;
                                     |         }
    0x00001098 tst r4, 2             |         
                                     |         if ((r4 & 2) != 0) {
    0x0000109c beq 0x10b4            |             
    0x000010a0 ldr r0, [pc, 0x84]    |             r0 = *(0x1128);
    0x000010a4 add r0, pc, r0        |             r0 = pc + r0;
    0x000010a8 bl 0xacc              |             printf (r0)
    0x000010ac ldr r1, [pc, 0x7c]    |             r1 = *(0x112c);
    0x000010b0 add r1, pc, r1        |             r1 = pc + r1;
                                     |         }
    0x000010b4 tst r4, 0x100         |         
                                     |         if ((r4 & 0x100) != 0) {
    0x000010b8 beq 0x10d0            |             
    0x000010bc ldr r0, [pc, 0x70]    |             r0 = *(0x1130);
    0x000010c0 add r0, pc, r0        |             r0 = pc + r0;
    0x000010c4 bl 0xacc              |             printf (r0)
    0x000010c8 ldr r1, [pc, 0x68]    |             r1 = *(0x1134);
    0x000010cc add r1, pc, r1        |             r1 = pc + r1;
                                     |         }
    0x000010d0 tst r4, 0x40          |         
                                     |         if ((r4 & 0x40) != 0) {
    0x000010d4 beq 0x10ec            |             
    0x000010d8 ldr r0, [pc, 0x5c]    |             r0 = *(0x1138);
    0x000010dc add r0, pc, r0        |             r0 = pc + r0;
    0x000010e0 bl 0xacc              |             printf (r0)
    0x000010e4 ldr r1, [pc, 0x54]    |             r1 = *(0x113c);
    0x000010e8 add r1, pc, r1        |             r1 = pc + r1;
                                     |         }
    0x000010ec tst r4, 0x80          |         
    0x000010f0 popeq {r4, pc}        |         
    0x000010f4 ldr r0, [pc, 0x48]    |         r0 = *(0x1140);
    0x000010f8 pop {r4, lr}          |         
    0x000010fc add r0, pc, r0        |         r0 = pc + r0;
    0x00001100 b 0xacc               |         void (*0xacc)() ();
                                     | label_0:
    0x00001104 ldr r1, [pc, 0x3c]    |         r1 = *(0x1144);
    0x00001108 add r1, pc, r1        |         r1 = pc + r1;
    0x0000110c b 0x1060              |         
                                     |     } while (1);
                                     | }
    ; 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/lib/xtables/libxt_conntrack.so @ 0x114c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000114c ()              | void fcn_0000114c (int32_t arg1, int32_t arg2) {
                                         |     int32_t var_0h;
                                         |     int32_t var_ch;
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x0000114c cmp r3, r2                |     
    0x00001150 cmpne r3, 0               |     __asm ("cmpne r3, 0");
    0x00001154 push {r0, r1, r2, lr}     |     
                                         |     if (r3 == r2) {
    0x00001158 bne 0x117c                |         
    0x0000115c mov r3, r2                |         r3 = r2;
    0x00001160 mov r2, r1                |         r2 = r1;
    0x00001164 mov r1, r0                |         r1 = r0;
    0x00001168 ldr r0, [pc, 0x34]        |         r0 = *(0x11a0);
    0x0000116c add r0, pc, r0            |         r0 = pc + r0;
    0x00001170 add sp, sp, 0xc           |         
    0x00001174 pop {lr}                  |         
    0x00001178 b 0xacc                   |         void (*0xacc)() ();
                                         |     }
    0x0000117c mov ip, r3                |     
    0x00001180 mov r3, r2                |     r3 = r2;
    0x00001184 mov r2, r1                |     r2 = r1;
    0x00001188 mov r1, r0                |     r1 = r0;
    0x0000118c ldr r0, [pc, 0x14]        |     r0 = *(0x11a4);
    0x00001190 str ip, [sp]              |     *(sp) = ip;
    0x00001194 add r0, pc, r0            |     r0 = pc + r0;
    0x00001198 bl 0xacc                  |     printf (r0, r1, r2, r3)
    0x0000119c add sp, sp, 0xc           |     
    0x000011a0 pop {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/lib/xtables/libxt_conntrack.so @ 0x11ac */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) fcn.000011ac ()          | void fcn_000011ac (uint32_t arg1) {
                                     |     r0 = arg1;
    0x000011ac tst r0, 1             |     
    0x000011b0 push {r4, lr}         |     
    0x000011b4 mov r4, r0            |     r4 = r0;
                                     |     if ((r0 & 1) == 0) {
    0x000011b8 beq 0x1228            |         goto label_1;
                                     |     }
    0x000011bc ldr r1, [pc, 0x84]    |     r1 = *(0x1244);
    0x000011c0 ldr r0, [pc, 0x84]    |     r0 = *(0x1248);
    0x000011c4 add r1, pc, r1        |     r1 = pc + r1;
    0x000011c8 add r0, pc, r0        |     r0 = pc + r0;
    0x000011cc bl 0xacc              |     printf (r0, r1)
    0x000011d0 ldr r1, [pc, 0x78]    |     r1 = *(0x124c);
    0x000011d4 add r1, pc, r1        |     r1 = pc + r1;
                                     |     do {
    0x000011d8 tst r4, 2             |         
                                     |         if ((r4 & 2) != 0) {
    0x000011dc beq 0x11f4            |             
    0x000011e0 ldr r0, [pc, 0x6c]    |             r0 = *(0x1250);
    0x000011e4 add r0, pc, r0        |             r0 = pc + r0;
    0x000011e8 bl 0xacc              |             printf (r0)
    0x000011ec ldr r1, [pc, 0x64]    |             r1 = *(0x1254);
    0x000011f0 add r1, pc, r1        |             r1 = pc + r1;
                                     |         }
    0x000011f4 tst r4, 4             |         
                                     |         if ((r4 & 4) != 0) {
    0x000011f8 beq 0x1210            |             
    0x000011fc ldr r0, [pc, 0x58]    |             r0 = *(0x1258);
    0x00001200 add r0, pc, r0        |             r0 = pc + r0;
    0x00001204 bl 0xacc              |             printf (r0)
    0x00001208 ldr r1, [pc, 0x50]    |             r1 = *(0x125c);
    0x0000120c add r1, pc, r1        |             r1 = pc + r1;
                                     |         }
    0x00001210 tst r4, 8             |         
                                     |         if ((r4 & 8) == 0) {
    0x00001214 beq 0x1234            |             goto label_2;
                                     |         }
    0x00001218 ldr r0, [pc, 0x44]    |         r0 = *(0x1260);
    0x0000121c add r0, pc, r0        |         r0 = pc + r0;
                                     | label_0:
    0x00001220 pop {r4, lr}          |         
    0x00001224 b 0xacc               |         void (*0xacc)() ();
                                     | label_1:
    0x00001228 ldr r1, [pc, 0x38]    |         r1 = *(0x1264);
    0x0000122c add r1, pc, r1        |         r1 = pc + r1;
    0x00001230 b 0x11d8              |         
                                     |     } while (1);
                                     | label_2:
    0x00001234 cmp r4, 0             |     
    0x00001238 popne {r4, pc}        |     
    0x0000123c ldr r0, [pc, 0x28]    |     r0 = *(0x1268);
    0x00001240 add r0, pc, r0        |     r0 = pc + r0;
    0x00001244 b 0x1220              |     goto label_0;
                                     | }
    ; 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/lib/xtables/libxt_conntrack.so @ 0x24a8 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.000024a8 ()              | void fcn_000024a8 (int32_t arg1, int32_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x000024a8 cmp r2, 2                 |     
    0x000024ac push {r4, r5, r6, lr}     |     
    0x000024b0 mov ip, r0                |     
    0x000024b4 mov r4, r1                |     r4 = r1;
                                         |     if (r2 != 2) {
    0x000024b8 bne 0x252c                |         goto label_2;
                                         |     }
    0x000024bc cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x000024c0 bne 0x24e0                |         
    0x000024c4 ldr r3, [r0]              |         r3 = *(r0);
    0x000024c8 cmp r3, 0                 |         
                                         |         if (r3 != 0) {
    0x000024cc bne 0x2508                |             goto label_3;
                                         |         }
                                         | label_0:
    0x000024d0 ldr r0, [pc, 0xe0]        |         r0 = *(0x25b4);
    0x000024d4 pop {r4, r5, r6, lr}      |         
    0x000024d8 add r0, pc, r0            |         r0 = pc + r0;
    0x000024dc b 0xacc                   |         void (*0xacc)() ();
                                         |     }
    0x000024e0 bl 0xb08                  |     r0 = xtables_ipaddr_to_numeric ();
    0x000024e4 mov r5, r0                |     r5 = r0;
    0x000024e8 mov r0, r4                |     r0 = r4;
    0x000024ec bl 0xb68                  |     xtables_ipmask_to_numeric ();
    0x000024f0 mov r1, r5                |     r1 = r5;
    0x000024f4 mov r2, r0                |     r2 = r0;
    0x000024f8 ldr r0, [pc, 0xbc]        |     r0 = *(0x25b8);
    0x000024fc add r0, pc, r0            |     r0 = pc + r0;
                                         |     do {
                                         | label_1:
    0x00002500 pop {r4, r5, r6, lr}      |         
    0x00002504 b 0xacc                   |         void (*0xacc)() ();
                                         | label_3:
    0x00002508 bl 0xb74                  |         r0 = xtables_ipaddr_to_anyname ();
    0x0000250c mov r5, r0                |         r5 = r0;
    0x00002510 mov r0, r4                |         r0 = r4;
    0x00002514 bl 0xb68                  |         xtables_ipmask_to_numeric ();
    0x00002518 mov r1, r5                |         r1 = r5;
    0x0000251c mov r2, r0                |         r2 = r0;
    0x00002520 ldr r0, [pc, 0x98]        |         r0 = *(0x25bc);
    0x00002524 add r0, pc, r0            |         r0 = pc + r0;
    0x00002528 b 0x2500                  |         
                                         |     } while (1);
                                         | label_2:
    0x0000252c cmp r2, 0xa               |     
    0x00002530 popne {r4, r5, r6, pc}    |     
    0x00002534 cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x00002538 bne 0x2594                |         goto label_4;
                                         |     }
    0x0000253c ldr r3, [r0]              |     r3 = *(r0);
    0x00002540 cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x00002544 bne 0x256c                |         goto label_5;
                                         |     }
    0x00002548 ldr r3, [r0, 4]           |     r3 = *((r0 + 4));
    0x0000254c cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x00002550 bne 0x256c                |         goto label_5;
                                         |     }
    0x00002554 ldr r3, [r0, 8]           |     r3 = *((r0 + 8));
    0x00002558 cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x0000255c bne 0x256c                |         goto label_5;
                                         |     }
    0x00002560 ldr r3, [r0, 0xc]         |     r3 = *((r0 + 0xc));
    0x00002564 cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x00002568 beq 0x24d0                |         goto label_0;
                                         |     }
                                         | label_5:
    0x0000256c mov r0, ip                |     r0 = ip;
    0x00002570 bl 0xb44                  |     r0 = xtables_ip6addr_to_anyname ();
    0x00002574 mov r5, r0                |     r5 = r0;
    0x00002578 mov r0, r4                |     r0 = r4;
    0x0000257c bl 0xac0                  |     xtables_ip6mask_to_numeric ();
    0x00002580 mov r1, r5                |     r1 = r5;
    0x00002584 mov r2, r0                |     r2 = r0;
    0x00002588 ldr r0, [pc, 0x34]        |     r0 = *(0x25c0);
    0x0000258c add r0, pc, r0            |     r0 = pc + r0;
    0x00002590 b 0x2500                  |     goto label_1;
                                         | label_4:
    0x00002594 bl 0xafc                  |     r0 = xtables_ip6addr_to_numeric ();
    0x00002598 mov r5, r0                |     r5 = r0;
    0x0000259c mov r0, r4                |     r0 = r4;
    0x000025a0 bl 0xac0                  |     xtables_ip6mask_to_numeric ();
    0x000025a4 mov r1, r5                |     r1 = r5;
    0x000025a8 mov r2, r0                |     r2 = r0;
    0x000025ac ldr r0, [pc, 0x14]        |     r0 = *(0x25c4);
    0x000025b0 add r0, pc, r0            |     r0 = pc + r0;
    0x000025b4 b 0x2500                  |     goto label_1;
                                         | }
    ; 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/lib/xtables/libxt_conntrack.so @ 0x25cc */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.000025cc ()                      | void fcn_000025cc (int32_t arg_18h, int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x000025cc push {r4, r5, r6, r7, r8, lr}     |     
    0x000025d0 ldrb r6, [sp, 0x18]               |     r6 = *(arg_18h);
    0x000025d4 mov r8, r3                        |     r8 = r3;
    0x000025d8 ldrh r3, [r0, 0x92]               |     r3 = *(arg_18hx92);
    0x000025dc mov r4, r0                        |     r4 = r0;
    0x000025e0 tst r3, 1                         |     
    0x000025e4 mov r5, r1                        |     r5 = r1;
    0x000025e8 mov r7, r2                        |     r7 = r2;
                                                 |     if ((r3 & 1) == 0) {
    0x000025ec beq 0x2634                        |         goto label_2;
                                                 |     }
    0x000025f0 ldrh r3, [r0, 0x94]               |     r3 = *((r0 + 0x94));
    0x000025f4 tst r3, 1                         |     
                                                 |     if ((r3 & 1) != 0) {
    0x000025f8 beq 0x2608                        |         
    0x000025fc ldr r0, [pc, 0x3bc]               |         r0 = *(0x29bc);
    0x00002600 add r0, pc, r0                    |         r0 = pc + r0;
    0x00002604 bl 0xacc                          |         printf (r0)
                                                 |     }
    0x00002608 ldrh r3, [r4, 0x92]               |     r3 = *((r4 + 0x92));
    0x0000260c tst r3, 0x2000                    |     
                                                 |     if ((r3 & 0x2000) == 0) {
    0x00002610 beq 0x2998                        |         goto label_3;
                                                 |     }
    0x00002614 ldr r2, [pc, 0x3a8]               |     r2 = *(0x29c0);
    0x00002618 add r2, pc, r2                    |     r2 = pc + r2;
                                                 |     do {
    0x0000261c ldr r0, [pc, 0x3a4]               |         r0 = *(0x29c4);
    0x00002620 mov r1, r5                        |         r1 = r5;
    0x00002624 add r0, pc, r0                    |         r0 = pc + r0;
    0x00002628 bl 0xacc                          |         printf (r0, r1, r2)
    0x0000262c ldrh r0, [r4, 0x96]               |         r0 = *((r4 + 0x96));
    0x00002630 bl 0x1034                         |         fcn_00001034 (r0);
                                                 | label_2:
    0x00002634 ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x00002638 tst r3, 2                         |         
                                                 |         if ((r3 & 2) != 0) {
    0x0000263c beq 0x266c                        |             
    0x00002640 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x00002644 tst r3, 2                         |             
                                                 |             if ((r3 & 2) != 0) {
    0x00002648 beq 0x2658                        |                 
    0x0000264c ldr r0, [pc, 0x378]               |                 r0 = *(0x29c8);
    0x00002650 add r0, pc, r0                    |                 r0 = pc + r0;
    0x00002654 bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x00002658 ldr r0, [pc, 0x370]               |             r0 = *(0x29cc);
    0x0000265c ldrh r2, [r4, 0x88]               |             r2 = *((r4 + 0x88));
    0x00002660 mov r1, r5                        |             r1 = r5;
    0x00002664 add r0, pc, r0                    |             r0 = pc + r0;
    0x00002668 bl 0xacc                          |             printf (r0, r1, r2)
                                                 |         }
    0x0000266c ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x00002670 tst r3, 4                         |         
                                                 |         if ((r3 & 4) != 0) {
    0x00002674 beq 0x26b4                        |             
    0x00002678 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x0000267c tst r3, 4                         |             
                                                 |             if ((r3 & 4) != 0) {
    0x00002680 beq 0x2690                        |                 
    0x00002684 ldr r0, [pc, 0x348]               |                 r0 = *(0x29d0);
    0x00002688 add r0, pc, r0                    |                 r0 = pc + r0;
    0x0000268c bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x00002690 ldr r0, [pc, 0x340]               |             r0 = *(0x29d4);
    0x00002694 mov r1, r5                        |             r1 = r5;
    0x00002698 add r0, pc, r0                    |             r0 = pc + r0;
    0x0000269c bl 0xacc                          |             printf (r0, r1)
    0x000026a0 mov r3, r8                        |             r3 = r8;
    0x000026a4 mov r2, r7                        |             r2 = r7;
    0x000026a8 add r1, r4, 0x10                  |             r1 = r4 + 0x10;
    0x000026ac mov r0, r4                        |             r0 = r4;
    0x000026b0 bl 0x24a8                         |             fcn_000024a8 (r0, r1);
                                                 |         }
    0x000026b4 ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x000026b8 tst r3, 8                         |         
                                                 |         if ((r3 & 8) != 0) {
    0x000026bc beq 0x26fc                        |             
    0x000026c0 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x000026c4 tst r3, 8                         |             
                                                 |             if ((r3 & 8) != 0) {
    0x000026c8 beq 0x26d8                        |                 
    0x000026cc ldr r0, [pc, 0x308]               |                 r0 = *(0x29d8);
    0x000026d0 add r0, pc, r0                    |                 r0 = pc + r0;
    0x000026d4 bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x000026d8 ldr r0, [pc, 0x300]               |             r0 = *(0x29dc);
    0x000026dc mov r1, r5                        |             r1 = r5;
    0x000026e0 add r0, pc, r0                    |             r0 = pc + r0;
    0x000026e4 bl 0xacc                          |             printf (r0, r1)
    0x000026e8 mov r3, r8                        |             r3 = r8;
    0x000026ec mov r2, r7                        |             r2 = r7;
    0x000026f0 add r1, r4, 0x30                  |             r1 = r4 + 0x30;
    0x000026f4 add r0, r4, 0x20                  |             r0 = r4 + 0x20;
    0x000026f8 bl 0x24a8                         |             fcn_000024a8 (r0, r1);
                                                 |         }
    0x000026fc ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x00002700 tst r3, 0x10                      |         
                                                 |         if ((r3 & 0x10) != 0) {
    0x00002704 beq 0x2744                        |             
    0x00002708 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x0000270c tst r3, 0x10                      |             
                                                 |             if ((r3 & 0x10) != 0) {
    0x00002710 beq 0x2720                        |                 
    0x00002714 ldr r0, [pc, 0x2c8]               |                 r0 = *(0x29e0);
    0x00002718 add r0, pc, r0                    |                 r0 = pc + r0;
    0x0000271c bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x00002720 ldr r0, [pc, 0x2c0]               |             r0 = *(0x29e4);
    0x00002724 mov r1, r5                        |             r1 = r5;
    0x00002728 add r0, pc, r0                    |             r0 = pc + r0;
    0x0000272c bl 0xacc                          |             printf (r0, r1)
    0x00002730 mov r3, r8                        |             r3 = r8;
    0x00002734 mov r2, r7                        |             r2 = r7;
    0x00002738 add r1, r4, 0x50                  |             r1 = r4 + 0x50;
    0x0000273c add r0, r4, 0x40                  |             r0 = r4 + 0x40;
    0x00002740 bl 0x24a8                         |             fcn_000024a8 (r0, r1);
                                                 |         }
    0x00002744 ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x00002748 tst r3, 0x20                      |         
                                                 |         if ((r3 & 0x20) != 0) {
    0x0000274c beq 0x278c                        |             
    0x00002750 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x00002754 tst r3, 0x20                      |             
                                                 |             if ((r3 & 0x20) != 0) {
    0x00002758 beq 0x2768                        |                 
    0x0000275c ldr r0, [pc, 0x288]               |                 r0 = *(0x29e8);
    0x00002760 add r0, pc, r0                    |                 r0 = pc + r0;
    0x00002764 bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x00002768 ldr r0, [pc, 0x280]               |             r0 = *(0x29ec);
    0x0000276c mov r1, r5                        |             r1 = r5;
    0x00002770 add r0, pc, r0                    |             r0 = pc + r0;
    0x00002774 bl 0xacc                          |             printf (r0, r1)
    0x00002778 mov r3, r8                        |             r3 = r8;
    0x0000277c mov r2, r7                        |             r2 = r7;
    0x00002780 add r1, r4, 0x70                  |             r1 = r4 + 0x70;
    0x00002784 add r0, r4, 0x60                  |             r0 = r4 + 0x60;
    0x00002788 bl 0x24a8                         |             fcn_000024a8 (r0, r1);
                                                 |         }
    0x0000278c ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x00002790 tst r3, 0x100                     |         
                                                 |         if ((r3 & 0x100) != 0) {
    0x00002794 beq 0x27e0                        |             
    0x00002798 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x0000279c tst r3, 0x100                     |             
                                                 |             if ((r3 & 0x100) != 0) {
    0x000027a0 beq 0x27b0                        |                 
    0x000027a4 ldr r0, [pc, 0x248]               |                 r0 = *(0x29f0);
    0x000027a8 add r0, pc, r0                    |                 r0 = pc + r0;
    0x000027ac bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x000027b0 ldrh r2, [r4, 0x8a]               |             r2 = *((r4 + 0x8a));
    0x000027b4 cmp r6, 0                         |             
                                                 |             if (r6 != 0) {
    0x000027b8 lsreq r3, r2, 8                   |                 r3 = r2 >> 8;
                                                 |             }
    0x000027bc ldr r1, [pc, 0x234]               |             r1 = *(0x29f4);
                                                 |             if (r6 != 0) {
    0x000027c0 orreq r2, r3, r2, lsl 8           |                 r2 = r3 | (r2 << 8);
                                                 |             }
                                                 |             if (r6 != 0) {
    0x000027c4 lsleq r2, r2, 0x10                |                 r2 <<= 0x10;
                                                 |             }
    0x000027c8 ldrhne r3, [r4, 0x9a]             |             __asm ("ldrhne r3, [r4, 0x9a]");
                                                 |             if (r6 != 0) {
    0x000027cc lsreq r2, r2, 0x10                |                 r2 >>= 0x10;
                                                 |             }
                                                 |             if (r6 != 0) {
    0x000027d0 moveq r3, r6                      |                 r3 = r6;
                                                 |             }
    0x000027d4 add r1, pc, r1                    |             r1 = pc + r1;
    0x000027d8 mov r0, r5                        |             r0 = r5;
    0x000027dc bl 0x114c                         |             fcn_0000114c (r0, r1);
                                                 |         }
    0x000027e0 ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x000027e4 tst r3, 0x200                     |         
                                                 |         if ((r3 & 0x200) != 0) {
    0x000027e8 beq 0x2834                        |             
    0x000027ec ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x000027f0 tst r3, 0x200                     |             
                                                 |             if ((r3 & 0x200) != 0) {
    0x000027f4 beq 0x2804                        |                 
    0x000027f8 ldr r0, [pc, 0x1fc]               |                 r0 = *(0x29f8);
    0x000027fc add r0, pc, r0                    |                 r0 = pc + r0;
    0x00002800 bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x00002804 ldrh r2, [r4, 0x8c]               |             r2 = *((r4 + 0x8c));
    0x00002808 cmp r6, 0                         |             
                                                 |             if (r6 != 0) {
    0x0000280c lsreq r3, r2, 8                   |                 r3 = r2 >> 8;
                                                 |             }
    0x00002810 ldr r1, [pc, 0x1e8]               |             r1 = *(0x29fc);
                                                 |             if (r6 != 0) {
    0x00002814 orreq r2, r3, r2, lsl 8           |                 r2 = r3 | (r2 << 8);
                                                 |             }
                                                 |             if (r6 != 0) {
    0x00002818 lsleq r2, r2, 0x10                |                 r2 <<= 0x10;
                                                 |             }
    0x0000281c ldrhne r3, [r4, 0x9c]             |             __asm ("ldrhne r3, [r4, 0x9c]");
                                                 |             if (r6 != 0) {
    0x00002820 lsreq r2, r2, 0x10                |                 r2 >>= 0x10;
                                                 |             }
                                                 |             if (r6 != 0) {
    0x00002824 moveq r3, r6                      |                 r3 = r6;
                                                 |             }
    0x00002828 add r1, pc, r1                    |             r1 = pc + r1;
    0x0000282c mov r0, r5                        |             r0 = r5;
    0x00002830 bl 0x114c                         |             fcn_0000114c (r0, r1);
                                                 |         }
    0x00002834 ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x00002838 tst r3, 0x400                     |         
                                                 |         if ((r3 & 0x400) != 0) {
    0x0000283c beq 0x2888                        |             
    0x00002840 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x00002844 tst r3, 0x400                     |             
                                                 |             if ((r3 & 0x400) != 0) {
    0x00002848 beq 0x2858                        |                 
    0x0000284c ldr r0, [pc, 0x1b0]               |                 r0 = *(0x2a00);
    0x00002850 add r0, pc, r0                    |                 r0 = pc + r0;
    0x00002854 bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x00002858 ldrh r2, [r4, 0x8e]               |             r2 = *((r4 + 0x8e));
    0x0000285c cmp r6, 0                         |             
                                                 |             if (r6 != 0) {
    0x00002860 lsreq r3, r2, 8                   |                 r3 = r2 >> 8;
                                                 |             }
    0x00002864 ldr r1, [pc, 0x19c]               |             r1 = *(0x2a04);
                                                 |             if (r6 != 0) {
    0x00002868 orreq r2, r3, r2, lsl 8           |                 r2 = r3 | (r2 << 8);
                                                 |             }
                                                 |             if (r6 != 0) {
    0x0000286c lsleq r2, r2, 0x10                |                 r2 <<= 0x10;
                                                 |             }
    0x00002870 ldrhne r3, [r4, 0x9e]             |             __asm ("ldrhne r3, [r4, 0x9e]");
                                                 |             if (r6 != 0) {
    0x00002874 lsreq r2, r2, 0x10                |                 r2 >>= 0x10;
                                                 |             }
                                                 |             if (r6 != 0) {
    0x00002878 moveq r3, r6                      |                 r3 = r6;
                                                 |             }
    0x0000287c add r1, pc, r1                    |             r1 = pc + r1;
    0x00002880 mov r0, r5                        |             r0 = r5;
    0x00002884 bl 0x114c                         |             fcn_0000114c (r0, r1);
                                                 |         }
    0x00002888 ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x0000288c tst r3, 0x800                     |         
                                                 |         if ((r3 & 0x800) != 0) {
    0x00002890 beq 0x28dc                        |             
    0x00002894 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x00002898 tst r3, 0x800                     |             
                                                 |             if ((r3 & 0x800) != 0) {
    0x0000289c beq 0x28ac                        |                 
    0x000028a0 ldr r0, [pc, 0x164]               |                 r0 = *(0x2a08);
    0x000028a4 add r0, pc, r0                    |                 r0 = pc + r0;
    0x000028a8 bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x000028ac ldrh r2, [r4, 0x90]               |             r2 = *((r4 + 0x90));
    0x000028b0 cmp r6, 0                         |             
                                                 |             if (r6 != 0) {
    0x000028b4 lsreq r3, r2, 8                   |                 r3 = r2 >> 8;
                                                 |             }
    0x000028b8 ldr r1, [pc, 0x150]               |             r1 = *(0x2a0c);
                                                 |             if (r6 != 0) {
    0x000028bc orreq r2, r3, r2, lsl 8           |                 r2 = r3 | (r2 << 8);
                                                 |             }
                                                 |             if (r6 != 0) {
    0x000028c0 lsleq r2, r2, 0x10                |                 r2 <<= 0x10;
                                                 |             }
    0x000028c4 ldrhne r3, [r4, 0xa0]             |             __asm ("ldrhne r3, [r4, 0xa0]");
                                                 |             if (r6 != 0) {
    0x000028c8 lsreq r2, r2, 0x10                |                 r2 >>= 0x10;
                                                 |             }
                                                 |             if (r6 != 0) {
    0x000028cc moveq r3, r6                      |                 r3 = r6;
                                                 |             }
    0x000028d0 add r1, pc, r1                    |             r1 = pc + r1;
    0x000028d4 mov r0, r5                        |             r0 = r5;
    0x000028d8 bl 0x114c                         |             fcn_0000114c (r0, r1);
                                                 |         }
    0x000028dc ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x000028e0 tst r3, 0x40                      |         
                                                 |         if ((r3 & 0x40) != 0) {
    0x000028e4 beq 0x2918                        |             
    0x000028e8 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x000028ec tst r3, 0x40                      |             
                                                 |             if ((r3 & 0x40) != 0) {
    0x000028f0 beq 0x2900                        |                 
    0x000028f4 ldr r0, [pc, 0x118]               |                 r0 = *(0x2a10);
    0x000028f8 add r0, pc, r0                    |                 r0 = pc + r0;
    0x000028fc bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x00002900 ldr r0, [pc, 0x110]               |             r0 = *(0x2a14);
    0x00002904 mov r1, r5                        |             r1 = r5;
    0x00002908 add r0, pc, r0                    |             r0 = pc + r0;
    0x0000290c bl 0xacc                          |             printf (r0, r1)
    0x00002910 ldrh r0, [r4, 0x98]               |             r0 = *((r4 + 0x98));
    0x00002914 bl 0x11ac                         |             fcn_000011ac (r0);
                                                 |         }
    0x00002918 ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x0000291c tst r3, 0x80                      |         
                                                 |         if ((r3 & 0x80) != 0) {
    0x00002920 beq 0x296c                        |             
    0x00002924 ldrh r3, [r4, 0x94]               |             r3 = *((r4 + 0x94));
    0x00002928 tst r3, 0x80                      |             
                                                 |             if ((r3 & 0x80) != 0) {
    0x0000292c beq 0x293c                        |                 
    0x00002930 ldr r0, [pc, 0xe4]                |                 r0 = *(0x2a18);
    0x00002934 add r0, pc, r0                    |                 r0 = pc + r0;
    0x00002938 bl 0xacc                          |                 printf (r0)
                                                 |             }
    0x0000293c ldr r0, [pc, 0xdc]                |             r0 = *(0x2a1c);
    0x00002940 mov r1, r5                        |             r1 = r5;
    0x00002944 add r0, pc, r0                    |             r0 = pc + r0;
    0x00002948 bl 0xacc                          |             printf (r0, r1)
    0x0000294c ldr r2, [r4, 0x84]                |             r2 = *((r4 + 0x84));
    0x00002950 ldr r1, [r4, 0x80]                |             r1 = *((r4 + 0x80));
    0x00002954 cmp r2, r1                        |             
                                                 |             if (r2 != r1) {
    0x00002958 bne 0x29a4                        |                 goto label_4;
                                                 |             }
    0x0000295c ldr r0, [pc, 0xc0]                |             r0 = *(0x2a20);
    0x00002960 mov r1, r2                        |             r1 = r2;
    0x00002964 add r0, pc, r0                    |             r0 = pc + r0;
    0x00002968 bl 0xacc                          |             printf (r0, r1)
                                                 |         }
                                                 | label_0:
    0x0000296c ldrh r3, [r4, 0x92]               |         r3 = *((r4 + 0x92));
    0x00002970 tst r3, 0x1000                    |         
    0x00002974 popeq {r4, r5, r6, r7, r8, pc}    |         
    0x00002978 ldrh r3, [r4, 0x94]               |         r3 = *((r4 + 0x94));
    0x0000297c mov r1, r5                        |         r1 = r5;
    0x00002980 tst r3, 0x1000                    |         
                                                 |         if ((r3 & 0x1000) == 0) {
    0x00002984 beq 0x29b4                        |             goto label_5;
                                                 |         }
    0x00002988 ldr r0, [pc, 0x98]                |         r0 = *(0x2a24);
    0x0000298c add r0, pc, r0                    |         r0 = pc + r0;
                                                 | label_1:
    0x00002990 pop {r4, r5, r6, r7, r8, lr}      |         
    0x00002994 b 0xacc                           |         void (*0xacc)() ();
                                                 | label_3:
    0x00002998 ldr r2, [pc, 0x8c]                |         r2 = *(0x2a28);
    0x0000299c add r2, pc, r2                    |         r2 = pc + r2;
    0x000029a0 b 0x261c                          |         
                                                 |     } while (1);
                                                 | label_4:
    0x000029a4 ldr r0, [pc, 0x84]                |     r0 = *(0x2a2c);
    0x000029a8 add r0, pc, r0                    |     r0 = pc + r0;
    0x000029ac bl 0xacc                          |     printf (r0)
    0x000029b0 b 0x296c                          |     goto label_0;
                                                 | label_5:
    0x000029b4 ldr r0, [pc, 0x78]                |     r0 = *(0x2a30);
    0x000029b8 add r0, pc, r0                    |     r0 = pc + r0;
    0x000029bc b 0x2990                          |     goto label_1;
                                                 | }
    ; 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/lib/xtables/libxt_conntrack.so @ 0x34b4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.000034b4 ()              | void fcn_000034b4 (int32_t arg1, int32_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x000034b4 push {r4, r5, r6, lr}     |     
    0x000034b8 mov r4, r1                |     r4 = r1;
    0x000034bc ldr r1, [r1]              |     r1 = *(r1);
    0x000034c0 mov r3, r0                |     r3 = r0;
    0x000034c4 cmp r1, 0                 |     
                                         |     if (r1 == 0) {
    0x000034c8 bne 0x34e4                |         
    0x000034cc cmp r2, 0                 |         
                                         |         if (r2 != 0) {
    0x000034d0 bne 0x34ec                |             goto label_0;
                                         |         }
    0x000034d4 ldr r0, [pc, 0x60]        |         r0 = *(0x3538);
    0x000034d8 pop {r4, r5, r6, lr}      |         
    0x000034dc add r0, pc, r0            |         r0 = pc + r0;
    0x000034e0 b 0xacc                   |         void (*0xacc)() ();
                                         |     }
    0x000034e4 cmp r2, 0                 |     
                                         |     if (r2 == 0) {
    0x000034e8 beq 0x3518                |         goto label_1;
                                         |     }
                                         | label_0:
    0x000034ec mov r0, r3                |     r0 = r3;
    0x000034f0 bl 0xb08                  |     r0 = xtables_ipaddr_to_numeric ();
    0x000034f4 mov r5, r0                |     r5 = r0;
    0x000034f8 mov r0, r4                |     r0 = r4;
    0x000034fc bl 0xb68                  |     xtables_ipmask_to_numeric ();
    0x00003500 mov r1, r5                |     r1 = r5;
    0x00003504 mov r2, r0                |     r2 = r0;
    0x00003508 ldr r0, [pc, 0x30]        |     r0 = *(0x353c);
    0x0000350c add r0, pc, r0            |     r0 = pc + r0;
                                         |     do {
    0x00003510 pop {r4, r5, r6, lr}      |         
    0x00003514 b 0xacc                   |         void (*0xacc)() ();
                                         | label_1:
    0x00003518 bl 0xb74                  |         r0 = xtables_ipaddr_to_anyname ();
    0x0000351c mov r5, r0                |         r5 = r0;
    0x00003520 mov r0, r4                |         r0 = r4;
    0x00003524 bl 0xb68                  |         xtables_ipmask_to_numeric ();
    0x00003528 mov r1, r5                |         r1 = r5;
    0x0000352c mov r2, r0                |         r2 = r0;
    0x00003530 ldr r0, [pc, 0xc]         |         r0 = *(0x3540);
    0x00003534 add r0, pc, r0            |         r0 = pc + r0;
    0x00003538 b 0x3510                  |         
                                         |     } while (1);
                                         | }

[*] Function printf used 33 times libxt_conntrack.so