[*] Binary protection state of libxt_limit.so
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libxt_limit.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_limit.so @ 0xd14 */
| #include <stdint.h>
|
; (fcn) fcn.00000d14 () | void fcn_00000d14 (int32_t arg1) {
| r0 = arg1;
0x00000d14 push {r4, r5, r6, lr} |
0x00000d18 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00000d1c bne 0xd38 |
0x00000d20 ldr r0, [pc, 0xec] | r0 = *(0xe10);
0x00000d24 mov r2, 0 | r2 = 0;
0x00000d28 ldr r3, [pc, 0xe8] | r3 = *(0xe14);
0x00000d2c add r0, pc, r0 | r0 = pc + r0;
0x00000d30 pop {r4, r5, r6, lr} |
0x00000d34 b 0x614 | void (*0x614)() ();
| }
0x00000d38 ldr r5, [pc, 0xdc] | r5 = *(0xe18);
0x00000d3c cmp r4, r5 |
| if (r4 > r5) {
0x00000d40 bhi 0xe04 | goto label_1;
| }
0x00000d44 mov r1, r4 | r1 = r4;
0x00000d48 mov r0, r5 | r0 = r5;
0x00000d4c bl 0xf7c | fcn_00000f7c (r0, r1);
0x00000d50 mov r1, r4 | r1 = r4;
0x00000d54 mov r6, r0 | r6 = r0;
0x00000d58 mov r0, r5 | r0 = r5;
0x00000d5c bl 0x1024 | fcn_00001024 (r0, r1);
0x00000d60 cmp r6, r1 |
| if (r6 <= r1) {
0x00000d64 blo 0xe04 | goto label_1;
| }
0x00000d68 ldr r5, [pc, 0xb0] | r5 = *(0xe1c);
0x00000d6c cmp r4, r5 |
| if (r4 > r5) {
0x00000d70 bhi 0xe0c | goto label_2;
| }
0x00000d74 mov r1, r4 | r1 = r4;
0x00000d78 mov r0, r5 | r0 = r5;
0x00000d7c bl 0xf7c | fcn_00000f7c (r0, r1);
0x00000d80 mov r1, r4 | r1 = r4;
0x00000d84 mov r6, r0 | r6 = r0;
0x00000d88 mov r0, r5 | r0 = r5;
0x00000d8c bl 0x1024 | fcn_00001024 (r0, r1);
0x00000d90 cmp r6, r1 |
| if (r6 <= r1) {
0x00000d94 blo 0xe0c | goto label_2;
| }
0x00000d98 ldr r6, [pc, 0x84] | r6 = *(0xe20);
0x00000d9c cmp r4, r6 |
| if (r4 <= r6) {
0x00000da0 movhi r1, 3 | r1 = 3;
| }
| if (r4 > r6) {
0x00000da4 bhi 0xdd0 | goto label_0;
| }
0x00000da8 mov r1, r4 | r1 = r4;
0x00000dac mov r0, r6 | r0 = r6;
0x00000db0 bl 0xf7c | fcn_00000f7c (r0, r1);
0x00000db4 mov r1, r4 | r1 = r4;
0x00000db8 mov r5, r0 | r5 = r0;
0x00000dbc mov r0, r6 | r0 = r6;
0x00000dc0 bl 0x1024 | fcn_00001024 (r0, r1);
0x00000dc4 cmp r5, r1 |
| if (r5 < r1) {
0x00000dc8 movhs r1, 4 | r1 = 4;
| }
0x00000dcc movlo r1, 3 | r1 = 3;
| while (1) {
| label_0:
0x00000dd0 ldr r5, [pc, 0x50] | r5 = *(0xe24);
0x00000dd4 sub r1, r1, 1 | r1--;
0x00000dd8 add r5, pc, r5 | r5 = pc + r5;
0x00000ddc add r5, r5, r1, lsl 3 | r5 += (r1 << 3);
0x00000de0 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x00000de4 mov r1, r4 | r1 = r4;
0x00000de8 bl 0xf7c | fcn_00000f7c (r0, r1);
0x00000dec ldr r2, [r5, 0x20] | r2 = *((r5 + 0x20));
0x00000df0 pop {r4, r5, r6, lr} |
0x00000df4 mov r1, r0 | r1 = r0;
0x00000df8 ldr r0, [pc, 0x2c] | r0 = *(0xe28);
0x00000dfc add r0, pc, r0 | r0 = pc + r0;
0x00000e00 b 0x614 | void (*0x614)() ();
| label_1:
0x00000e04 mov r1, 1 | r1 = 1;
0x00000e08 b 0xdd0 |
| }
| label_2:
0x00000e0c mov r1, 2 | r1 = 2;
0x00000e10 b 0xdd0 | goto label_0;
| }
[*] Function printf used 1 times libxt_limit.so