[*] Binary protection state of libnetsnmp.so.40.1.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libnetsnmp.so.40.1.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x2ddbc */
| #include <stdint.h>
|
; (fcn) sym.netsnmp_tdomain_transport_tspec () | void netsnmp_tdomain_transport_tspec (int16_t arg_4h, int16_t arg_3ch, int16_t arg_43ch, int16_t arg1) {
| int16_t var_1h;
| int16_t var_8h_3;
| int16_t var_18h_2;
| int16_t var_1ch_3;
| int32_t var_43ch;
| int16_t var_28h;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| r0 = arg1;
0x0002ddbc strths pc, [r0], 0x8df | __asm ("strths pc, [r0], aav.0x000224de");
0x0002ddc0 movs r1, 0x28 | r1 = 0x28;
0x0002ddc2 ldr.w r3, [pc, 0x4a0] |
0x0002ddc6 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002ddca subw sp, sp, 0x444 | __asm ("subw sp, sp, case.0x269a8.32");
0x0002ddce add r2, pc | r2 += pc;
0x0002ddd0 mov r6, r0 | r6 = r0;
0x0002ddd2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002ddd4 ldr r2, [r6] | r2 = *(r6);
0x0002ddd6 ldr r4, [r6, 4] | r4 = *((r6 + 4));
0x0002ddd8 ldr r3, [r3] | r3 = *(0x2e266);
0x0002ddda str.w r3, [sp, 0x43c] | __asm ("str.w r3, [arg_43ch]");
0x0002ddde mov.w r3, 0 | r3 = 0;
0x0002dde2 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0002dde4 movs r0, 0 | r0 = 0;
0x0002dde6 ldrd r8, sb, [r6, 0xc] | __asm ("ldrd r8, sb, [r6, 0xc]");
0x0002ddea str r2, [sp, 0x1c] | var_1ch = r2;
0x0002ddec and r3, r3, 1 | r3 &= 1;
0x0002ddf0 str r3, [sp, 0x14] | var_14h = r3;
0x0002ddf2 blx 0x1096c | r0 = fcn_0001096c ();
0x0002ddf6 cmp r0, 0 |
| if (r0 == 0) {
0x0002ddf8 beq.w 0x2e040 | goto label_20;
| }
0x0002ddfc cmp r4, 0 |
| if (r4 == 0) {
0x0002ddfe beq 0x2def2 | goto label_8;
| }
| label_9:
0x0002de00 movs r1, 0x3a | r1 = 0x3a;
0x0002de02 mov r0, r4 | r0 = r4;
0x0002de04 blx 0xfbc8 | r0 = fcn_0000fbc8 ();
0x0002de08 cmp r0, 0 |
| if (r0 == 0) {
0x0002de0a beq 0x2deea | goto label_21;
| }
0x0002de0c adds r7, r0, 1 | r7 = r0 + 1;
0x0002de0e sub.w fp, r0, r4 |
0x0002de12 subs r0, r7, r4 | r0 = r7 - r4;
0x0002de14 blx 0x10d34 | fcn_00010d34 ();
0x0002de16 invalid |
0x0002de1a mov r1, r4 | r1 = r4;
0x0002de1c mov sl, r0 | sl = r0;
0x0002de1e blx 0x1063c | fcn_0001063c ();
0x0002de22 ldr.w r3, [pc, 0x444] |
0x0002de26 add r3, pc | r3 = 0x5c094;
0x0002de28 ldr r5, [r3, 8] | r5 = *(0x5c09c);
0x0002de2a movs r3, 0 | r3 = 0;
0x0002de2c strb.w r3, [sl, fp] | *((sl + fp)) = r3;
0x0002de30 cmp r5, 0 |
| if (r5 == 0) {
0x0002de32 beq 0x2dee4 | goto label_22;
| }
| label_1:
0x0002de34 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002de36 ldr r0, [r3] | r0 = *(r3);
0x0002de38 mov fp, r3 |
| if (r0 != 0) {
0x0002de3a cbnz r0, 0x2de46 | goto label_23;
| }
0x0002de3c b 0x2dede | goto label_24;
| do {
0x0002de3e ldr r0, [fp, 4]! | r0 = *(arg_4h);
0x0002de42 cmp r0, 0 |
| if (r0 == 0) {
0x0002de44 beq 0x2dede | goto label_24;
| }
| label_23:
0x0002de46 mov r1, sl | r1 = sl;
0x0002de48 blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002de4c cmp r0, 0 |
0x0002de4e bne 0x2de3e |
| } while (r0 != 0);
0x0002de50 mov r8, r0 | r8 = r0;
0x0002de52 str r0, [sp, 0x18] | var_18h = r0;
0x0002de54 mov r0, sl | r0 = sl;
0x0002de56 mov sl, r4 | sl = r4;
0x0002de58 mov r4, r7 | r4 = r7;
0x0002de5a mov r7, r8 | r7 = r8;
0x0002de5c blx 0x10168 | fcn_00010168 ();
0x0002de60 str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
| label_2:
0x0002de64 ldr.w r3, [pc, 0x404] |
0x0002de68 add.w r8, sp, 0x20 | r8 += var_20h;
0x0002de6c add r3, pc | r3 = 0x5c0dc;
0x0002de6e str r3, [sp, 8] | var_8h = r3;
0x0002de70 movs r3, 0 | r3 = 0;
0x0002de72 str r3, [sp, 0xc] | var_ch = r3;
| if (r5 != 0) {
| label_0:
0x0002de74 cbz r5, 0x2dea2 |
0x0002de76 cmp.w sb, 0 |
| if (sb == 0) {
0x0002de7a beq.w 0x2dfc0 | goto label_25;
| }
0x0002de7e ldr.w fp, [r5, 0x1c] | fp = *((r5 + 0x1c));
0x0002de82 mov ip, sb |
0x0002de84 cmp.w fp, 0 |
| if (fp != 0) {
0x0002de88 bne 0x2df7c | goto label_26;
| }
| label_5:
0x0002de8a ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0002de8c cmp r3, 0 |
| if (r3 == 0) {
0x0002de8e beq.w 0x2dff8 | goto label_27;
| }
0x0002de92 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0002de94 mov r0, r4 | r0 = r4;
0x0002de96 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
| label_7:
0x0002de98 cmp r0, 0 |
| if (r0 != 0) {
0x0002de9a bne.w 0x2dfa6 | goto label_28;
| }
| label_4:
0x0002de9e movs r3, 1 | r3 = 1;
0x0002dea0 str r3, [sp, 0xc] | var_ch = r3;
| }
0x0002dea2 ldr r3, [sp, 8] | r3 = var_8h;
0x0002dea4 ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x0002dea6 mov r3, r7 | r3 = r7;
| do {
0x0002dea8 cmp r3, 0 |
| if (r3 == 0) {
0x0002deaa beq.w 0x2e004 | goto label_29;
| }
0x0002deae ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x0002deb2 cmp r2, 0 |
| if (r2 == 0) {
0x0002deb4 beq.w 0x2e004 | goto label_29;
| }
0x0002deb8 mov r7, r3 | r7 = r3;
0x0002deba cmp r5, 0 |
0x0002debc beq 0x2dea8 |
| } while (r5 == 0);
0x0002debe mov fp, r2 |
| label_3:
0x0002dec0 ldr r4, [r5, 8] | r4 = *((r5 + 8));
0x0002dec2 ldr r0, [r4] | r0 = *(r4);
| if (r0 != 0) {
0x0002dec4 cbnz r0, 0x2ded0 | goto label_30;
| }
0x0002dec6 b 0x2df72 | goto label_31;
| do {
0x0002dec8 ldr r0, [r4, 4]! | r0 = *((r4 += 4));
0x0002decc cmp r0, 0 |
| if (r0 == 0) {
0x0002dece beq 0x2df72 | goto label_31;
| }
| label_30:
0x0002ded0 mov r1, fp | r1 = fp;
0x0002ded2 blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002ded6 cmp r0, 0 |
0x0002ded8 bne 0x2dec8 |
| } while (r0 != 0);
0x0002deda mov r4, sl | r4 = sl;
0x0002dedc b 0x2de74 | goto label_0;
| label_24:
0x0002dede ldr r5, [r5, 0x14] | r5 = *((r5 + 0x14));
0x0002dee0 cmp r5, 0 |
| if (r5 != 0) {
0x0002dee2 bne 0x2de34 | goto label_1;
| }
| label_22:
0x0002dee4 mov r0, sl | r0 = sl;
0x0002dee6 blx 0x10168 | fcn_00010168 ();
| label_21:
0x0002deea ldrb r3, [r4] | r3 = *(r4);
0x0002deec cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0002deee beq.w 0x2e142 | goto label_32;
| }
| label_8:
0x0002def2 cmp.w r8, 0 |
| if (r8 == 0) {
0x0002def6 beq.w 0x2e182 | goto label_33;
| }
0x0002defa movs r1, 0x2c | r1 = 0x2c;
0x0002defc mov r0, r8 | r0 = r8;
0x0002defe blx 0xfbc8 | r0 = fcn_0000fbc8 ();
0x0002df02 mov r7, r0 | r7 = r0;
0x0002df04 cmp r0, 0 |
| if (r0 == 0) {
0x0002df06 beq.w 0x2e112 | goto label_34;
| }
0x0002df0a add.w sl, sp, 0x20 | sl += var_20h;
0x0002df0e movs r5, 0 | r5 = 0;
0x0002df10 mov r0, r8 | r0 = r8;
0x0002df12 str.w r5, [sl] | __asm ("str.w r5, [sl]");
0x0002df16 blx 0x10d18 | fcn_00010d18 ();
0x0002df1a ldrb.w r3, [r8, 1] | r3 = *((r8 + 1));
0x0002df1e add.w r8, r8, 1 | r8++;
0x0002df22 str r0, [sp, 0x18] | var_18h = r0;
0x0002df24 cmp r3, 0 |
| if (r3 == 0) {
0x0002df26 beq.w 0x2e210 | goto label_35;
| }
0x0002df2a mov r2, r5 | r2 = r5;
| do {
0x0002df2c cmp r3, 0x2c |
0x0002df2e ldrb r3, [r8, 1]! | r3 = *((r8 += 1));
0x0002df32 it eq |
| if (r3 != 0x2c) {
0x0002df34 addeq r2, 1 | r2++;
| }
0x0002df36 cmp r3, 0 |
0x0002df38 bne 0x2df2c |
| } while (r3 != 0);
0x0002df3a adds r0, r2, 2 | r0 = r2 + 2;
| label_18:
0x0002df3c ldr.w fp, [pc, 0x330] |
0x0002df40 movs r1, 4 | r1 = 4;
0x0002df42 blx 0xfca0 | r0 = fcn_0000fca0 ();
0x0002df46 mov r7, r0 | r7 = r0;
0x0002df48 mov r2, sl | r2 = sl;
0x0002df4a add fp, pc | fp = 0x5c1be;
0x0002df4c mov r8, r7 | r8 = r7;
0x0002df4e ldr r0, [sp, 0x18] | r0 = var_18h;
0x0002df50 mov r1, fp | r1 = fp;
0x0002df52 blx 0x10f3c | fcn_00010f3c ();
0x0002df56 str r0, [r7] | *(r7) = r0;
| do {
0x0002df58 mov r2, sl | r2 = sl;
0x0002df5a mov r1, fp | r1 = fp;
0x0002df5c movs r0, 0 | r0 = 0;
0x0002df5e blx 0x10f3c | fcn_00010f3c ();
0x0002df62 str r0, [r8, 4]! | *((r8 += 4)) = r0;
0x0002df66 cmp r0, 0 |
0x0002df68 bne 0x2df58 |
| } while (r0 != 0);
0x0002df6a mov r5, r0 | r5 = r0;
0x0002df6c mov sl, r4 | sl = r4;
0x0002df6e str r7, [sp, 0x10] | var_10h = r7;
0x0002df70 b 0x2de64 | goto label_2;
| label_31:
0x0002df72 ldr r5, [r5, 0x14] | r5 = *((r5 + 0x14));
0x0002df74 cmp r5, 0 |
| if (r5 != 0) {
0x0002df76 bne 0x2dec0 | goto label_3;
| }
0x0002df78 mov r4, sl | r4 = sl;
0x0002df7a b 0x2de74 | goto label_0;
| label_26:
0x0002df7c ldr r0, [r6] | r0 = *(r6);
0x0002df7e mov r5, r8 | r5 = r8;
0x0002df80 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0002df82 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0002df84 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0002df86 stm r5!, {r0, r1, r2, r3} | *(r5!) = r0;
| *((r5! + 4)) = r1;
| *((r5! + 8)) = r2;
| *((r5! + 12)) = r3;
0x0002df88 ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0002df8a ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x0002df8c ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x0002df8e stm r5!, {r0, r1, r2} | *(r5!) = r0;
| *((r5! + 4)) = r1;
| *((r5! + 8)) = r2;
| label_6:
0x0002df90 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0002df94 mov r0, r8 | r0 = r8;
0x0002df96 cmp r3, r4 |
0x0002df98 it ne |
| if (r3 == r4) {
0x0002df9a strne r4, [r8, 4] | *((r8 + 4)) = r4;
| }
0x0002df9c ands r4, r0 | r4 &= r0;
0x0002df9e blx fp | r0 = fp (r0, r1, r2, r3);
0x0002dfa0 cmp r0, 0 |
| if (r0 == 0) {
0x0002dfa2 beq.w 0x2de9e | goto label_4;
| }
| label_28:
0x0002dfa6 ldr r5, [sp, 0x10] | r5 = var_10h;
0x0002dfa8 mov r4, r0 | r4 = r0;
0x0002dfaa cmp r5, 0 |
| if (r5 == 0) {
0x0002dfac beq.w 0x2e13e | goto label_36;
| }
0x0002dfb0 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0002dfb2 blx 0x10168 | fcn_00010168 ();
0x0002dfb6 mov r0, r5 | r0 = r5;
0x0002dfb8 blx 0x10168 | fcn_00010168 ();
0x0002dfbc str r4, [sp, 0x10] | var_10h = r4;
0x0002dfbe b 0x2e01e | goto label_12;
| label_25:
0x0002dfc0 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002dfc2 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0002dfc4 ldr r1, [r3] | r1 = *(r3);
0x0002dfc6 blx 0xfddc | fcn_0000fddc ();
0x0002dfc8 invalid |
0x0002dfcc add sp, 0x70 |
0x0002dfce mov ip, r0 |
0x0002dfd0 cmp.w fp, 0 |
| if (fp == 0) {
0x0002dfd4 beq.w 0x2de8a | goto label_5;
| }
0x0002dfd8 ldr r0, [r6] | r0 = *(r6);
0x0002dfda mov r5, r8 | r5 = r8;
0x0002dfdc ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x0002dfde ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0002dfe0 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0002dfe2 stm r5!, {r0, r1, r2, r3} | *(r5!) = r0;
| *((r5! + 4)) = r1;
| *((r5! + 8)) = r2;
| *((r5! + 12)) = r3;
0x0002dfe4 ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0002dfe6 ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x0002dfe8 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x0002dfea stm r5!, {r0, r1, r2} | *(r5!) = r0;
| *((r5! + 4)) = r1;
| *((r5! + 8)) = r2;
0x0002dfec cmp.w ip, 0 |
| if (ip == 0) {
0x0002dff0 beq 0x2df90 | goto label_6;
| }
0x0002dff2 str.w ip, [r8, 0x10] | __asm ("str.w ip, [r8, 0x10]");
0x0002dff6 b 0x2df90 | goto label_6;
| label_27:
0x0002dff8 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x0002dffa mov r2, ip | r2 = ip;
0x0002dffc ldr r1, [sp, 0x14] | r1 = var_14h;
0x0002dffe mov r0, r4 | r0 = r4;
0x0002e000 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0002e002 b 0x2de98 | goto label_7;
| label_29:
0x0002e004 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002e006 cmp r3, 0 |
| if (r3 == 0) {
0x0002e008 beq 0x2e106 | goto label_37;
| }
| label_11:
0x0002e00a ldr r4, [sp, 0x10] | r4 = var_10h;
| if (r4 != 0) {
0x0002e00c cbz r4, 0x2e01e |
0x0002e00e ldr r0, [sp, 0x18] | r0 = var_18h;
0x0002e010 blx 0x10168 | fcn_00010168 ();
0x0002e014 mov r0, r4 | r0 = r4;
0x0002e016 blx 0x10168 | fcn_00010168 ();
0x0002e01a movs r3, 0 | r3 = 0;
0x0002e01c str r3, [sp, 0x10] | var_10h = r3;
| }
| label_12:
0x0002e01e ldr r2, [pc, 0x254] |
0x0002e020 ldr r3, [pc, 0x240] | r3 = *(0x2e264);
0x0002e022 add r2, pc | r2 = 0x5c29c;
0x0002e024 ldr r3, [r2, r3] | r3 = *(0x5c29c);
0x0002e026 ldr r2, [r3] | r2 = *(0x5c29c);
0x0002e028 ldr.w r3, [sp, 0x43c] | r3 = *(arg_43ch);
0x0002e02c eors r2, r3 | r2 ^= r3;
0x0002e02e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002e032 bne.w 0x2e25a | goto label_38;
| }
0x0002e036 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0002e038 addw sp, sp, 0x444 | __asm ("addw sp, var_28h");
0x0002e03c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x0002e040 cmp r4, 0 |
| if (r4 == 0) {
0x0002e042 beq.w 0x2def2 | goto label_8;
| }
0x0002e046 ldrb r5, [r4] | r5 = *(r4);
| if (r5 == 0) {
0x0002e048 cbz r5, 0x2e07a | goto label_39;
| }
0x0002e04a mov r7, r4 | r7 = r4;
| label_10:
0x0002e04c cmp r5, 0x2e |
| if (r5 == 0x2e) {
0x0002e04e beq 0x2e072 | goto label_40;
| }
0x0002e050 blx 0x10cf0 | r0 = fcn_00010cf0 ();
0x0002e054 ldr r3, [r0] | r3 = *(r0);
0x0002e056 cmp r5, 0x2d |
0x0002e058 ldrh.w r3, [r3, r5, lsl 1] | offset_0 = r5 << 1;
| r3 = *((r3 + offset_0));
0x0002e05a adds r0, 0x15 | r0 += 0x15;
0x0002e05c and r3, r3, 0xb00 | r3 &= case.0x269a8.32;
0x0002e060 clz r3, r3 | r3 &= r3;
0x0002e064 lsr.w r3, r3, 5 | r3 >>= 5;
0x0002e068 it eq |
| if (r0 != 0x15) {
0x0002e06a moveq r3, 0 | r3 = 0;
| }
0x0002e06c cmp r3, 0 |
| if (r3 != 0) {
0x0002e06e bne.w 0x2de00 | goto label_9;
| }
| label_40:
0x0002e072 ldrb r5, [r7, 1]! | r5 = *((r7 += 1));
0x0002e076 cmp r5, 0 |
| if (r5 != 0) {
0x0002e078 bne 0x2e04c | goto label_10;
| }
| label_39:
0x0002e07a ldr r2, [pc, 0x1fc] |
0x0002e07c add r2, pc | r2 = 0x5c2fa;
0x0002e07e ldr r3, [r2, 0xc] | r3 = *(0x5c306);
0x0002e080 cmp r3, 0 |
| if (r3 == 0) {
0x0002e082 beq.w 0x2e1f8 | goto label_41;
| }
| label_17:
0x0002e086 movs r1, 0x1b | r1 = 0x1b;
0x0002e088 movs r0, 0 | r0 = 0;
0x0002e08a blx 0xfce0 | r0 = fcn_0000fce0 ();
0x0002e08e mov r5, r0 | r5 = r0;
0x0002e090 cmp r0, 0 |
| if (r0 == 0) {
0x0002e092 beq.w 0x2e1ae | goto label_42;
| }
0x0002e096 blx 0x10d18 | r0 = fcn_00010d18 ();
0x0002e09a mov r5, r0 | r5 = r0;
0x0002e09c ldr r0, [pc, 0x1dc] |
0x0002e09e add r7, sp, 0x3c | r7 += arg_3ch;
0x0002e0a0 add r0, pc | r0 = 0x5c320;
0x0002e0a2 blx 0xfea8 | fcn_0000fea8 ();
0x0002e0a6 ldr r3, [pc, 0x1d8] |
0x0002e0a8 movs r2, 1 | r2 = 1;
0x0002e0aa mov sl, r0 | sl = r0;
0x0002e0ac movw r1, 0x3ff | r1 = (r1 & 0xFFFF0000) | (case.0x269a8.32 & 0xFFFF);
0x0002e0b0 mov r0, r7 | r0 = r7;
0x0002e0b2 str r4, [sp, 4] | var_4h_2 = r4;
0x0002e0b4 add r3, pc | r3 = 0x5c33a;
0x0002e0b6 str r3, [sp] | *(sp) = r3;
0x0002e0b8 mov.w r3, 0x400 | r3 = case.0x269a8.32;
0x0002e0bc blx 0x10a44 | fcn_00010a44 ();
0x0002e0c0 add r1, sp, 0x20 | r1 += var_20h;
0x0002e0c2 movs r0, 2 | r0 = 2;
0x0002e0c4 strd r7, sl, [r1] | __asm ("strd r7, sl, [r1]");
0x0002e0c8 mov.w sl, 0 | sl = 0;
0x0002e0cc str.w sl, [r1, 8] | __asm ("str.w sl, [r1, 8]");
0x0002e0d0 blx 0x10c08 | fprintf_chk ()
0x0002e0d4 mov r0, sl | r0 = sl;
0x0002e0d6 movs r1, 0x1b | r1 = 0x1b;
0x0002e0d8 blx 0xfce0 | r0 = fcn_0000fce0 ();
0x0002e0dc mov r2, r0 | r2 = r0;
| if (r0 != 0) {
0x0002e0de cbz r0, 0x2e0ee |
| label_16:
0x0002e0e0 mov r1, r2 | r1 = r2;
0x0002e0e2 mov r0, r7 | r0 = r7;
0x0002e0e4 mov.w r2, 0x400 | r2 = case.0x269a8.32;
0x0002e0e8 mov r4, r7 | r4 = r7;
0x0002e0ea blx 0xf7f4 | fcn_0000f7f4 ();
| }
0x0002e0ee mov r2, r5 | r2 = r5;
0x0002e0f0 movs r1, 0x1b | r1 = 0x1b;
0x0002e0f2 movs r0, 0 | r0 = 0;
0x0002e0f4 blx 0x10be4 | chdir ();
0x0002e0f8 cmp r5, 0 |
| if (r5 == 0) {
0x0002e0fa beq.w 0x2de00 | goto label_9;
| }
0x0002e0fe mov r0, r5 | r0 = r5;
0x0002e100 blx 0x10168 | fcn_00010168 ();
0x0002e104 b 0x2de00 | goto label_9;
| label_37:
0x0002e106 ldr r1, [pc, 0x17c] |
0x0002e108 movs r0, 3 | r0 = 3;
0x0002e10a add r1, pc | r1 = 0x5c394;
0x0002e10c blx 0x11494 | fcn_00011494 ();
0x0002e110 b 0x2e00a | goto label_11;
| label_34:
0x0002e112 ldr r3, [pc, 0x174] |
0x0002e114 add r3, pc | r3 = 0x5c3a2;
0x0002e116 ldr r5, [r3, 8] | r5 = *(0x5c3aa);
0x0002e118 cmp r5, 0 |
| if (r5 == 0) {
0x0002e11a beq 0x2e19e | goto label_43;
| }
| label_13:
0x0002e11c ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002e11e ldr r0, [r3] | r0 = *(r3);
0x0002e120 mov sl, r3 | sl = r3;
| if (r0 != 0) {
0x0002e122 cbnz r0, 0x2e12c | goto label_44;
| }
0x0002e124 b 0x2e172 | goto label_45;
| do {
0x0002e126 ldr r0, [sl, 4]! | r0 = *((sl += 4));
| if (r0 == 0) {
0x0002e12a cbz r0, 0x2e172 | goto label_45;
| }
| label_44:
0x0002e12c mov r1, r8 | r1 = r8;
0x0002e12e blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002e132 cmp r0, 0 |
0x0002e134 bne 0x2e126 |
| } while (r0 != 0);
0x0002e136 mov sl, r4 | sl = r4;
0x0002e138 str r0, [sp, 0x18] | var_18h = r0;
0x0002e13a str r0, [sp, 0x10] | var_10h = r0;
0x0002e13c b 0x2de64 | goto label_2;
| label_36:
0x0002e13e str r0, [sp, 0x10] | var_10h = r0;
0x0002e140 b 0x2e01e | goto label_12;
| label_32:
0x0002e142 ldr r3, [pc, 0x148] |
0x0002e144 add r3, pc | r3 = 0x5c3d6;
0x0002e146 ldr r5, [r3, 8] | r5 = *(0x5c3de);
| if (r5 == 0) {
0x0002e148 cbz r5, 0x2e178 | goto label_15;
| }
0x0002e14a ldr.w r8, [pc, 0x144] |
0x0002e14e add r8, pc | r8 = 0x5c3e4;
| label_14:
0x0002e150 ldr r7, [r5, 8] | r7 = *((r5 + 8));
0x0002e152 ldr r0, [r7] | r0 = *(r7);
| if (r0 != 0) {
0x0002e154 cbnz r0, 0x2e15e | goto label_46;
| }
0x0002e156 b 0x2e1a6 | goto label_47;
| do {
0x0002e158 ldr r0, [r7, 4]! | r0 = *((r7 += 4));
| if (r0 == 0) {
0x0002e15c cbz r0, 0x2e1a6 | goto label_47;
| }
| label_46:
0x0002e15e mov r1, r8 | r1 = r8;
0x0002e160 blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002e164 cmp r0, 0 |
0x0002e166 bne 0x2e158 |
| } while (r0 != 0);
0x0002e168 mov r7, r0 | r7 = r0;
0x0002e16a mov sl, r4 | sl = r4;
0x0002e16c str r0, [sp, 0x18] | var_18h = r0;
0x0002e16e str r0, [sp, 0x10] | var_10h = r0;
0x0002e170 b 0x2de64 | goto label_2;
| label_45:
0x0002e172 ldr r5, [r5, 0x14] | r5 = *((r5 + 0x14));
0x0002e174 cmp r5, 0 |
| if (r5 != 0) {
0x0002e176 bne 0x2e11c | goto label_13;
| }
| label_15:
0x0002e178 mov sl, r4 | sl = r4;
0x0002e17a mov r7, r5 | r7 = r5;
0x0002e17c str r5, [sp, 0x18] | var_18h = r5;
0x0002e17e str r5, [sp, 0x10] | var_10h = r5;
0x0002e180 b 0x2de64 | goto label_2;
| label_33:
0x0002e182 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0002e184 blx 0x1059c | r0 = fcn_0001059c ();
0x0002e188 mov r7, r0 | r7 = r0;
0x0002e18a cmp r0, 0 |
| if (r0 == 0) {
0x0002e18c beq 0x2e220 | goto label_48;
| }
0x0002e18e ldr r5, [r0] | r5 = *(r0);
0x0002e190 mov r3, r0 | r3 = r0;
0x0002e192 cmp r5, 0 |
| if (r5 == 0) {
0x0002e194 beq 0x2e214 | goto label_49;
| }
| do {
0x0002e196 ldr r5, [r3, 4]! | r5 = *((r3 += 4));
0x0002e19a cmp r5, 0 |
0x0002e19c bne 0x2e196 |
| } while (r5 != 0);
| label_43:
0x0002e19e mov sl, r4 | sl = r4;
0x0002e1a0 str r5, [sp, 0x18] | var_18h = r5;
0x0002e1a2 str r5, [sp, 0x10] | var_10h = r5;
0x0002e1a4 b 0x2de64 | goto label_2;
| label_47:
0x0002e1a6 ldr r5, [r5, 0x14] | r5 = *((r5 + 0x14));
0x0002e1a8 cmp r5, 0 |
| if (r5 != 0) {
0x0002e1aa bne 0x2e150 | goto label_14;
| }
0x0002e1ac b 0x2e178 | goto label_15;
| label_42:
0x0002e1ae ldr r0, [pc, 0xe4] |
0x0002e1b0 add r7, sp, 0x3c | r7 += arg_3ch;
0x0002e1b2 add r0, pc | r0 = 0x5c44c;
0x0002e1b4 blx 0xfea8 | fcn_0000fea8 ();
0x0002e1b8 ldr r3, [pc, 0xdc] |
0x0002e1ba movs r2, 1 | r2 = 1;
0x0002e1bc movw r1, 0x3ff | r1 = (r1 & 0xFFFF0000) | (case.0x269a8.32 & 0xFFFF);
0x0002e1c0 mov sl, r0 | sl = r0;
0x0002e1c2 str r4, [sp, 4] | var_4h_2 = r4;
0x0002e1c4 mov r0, r7 | r0 = r7;
0x0002e1c6 add r3, pc | r3 = 0x5c462;
0x0002e1c8 str r3, [sp] | *(sp) = r3;
0x0002e1ca mov.w r3, 0x400 | r3 = case.0x269a8.32;
0x0002e1ce blx 0x10a44 | fcn_00010a44 ();
0x0002e1d2 add r1, sp, 0x20 | r1 += var_20h;
0x0002e1d4 str r5, [r1, 8] | *((r1 + 8)) = r5;
0x0002e1d6 strd r7, sl, [r1] | __asm ("strd r7, sl, [r1]");
0x0002e1da movs r0, 2 | r0 = 2;
0x0002e1dc blx 0x10c08 | fprintf_chk ()
0x0002e1e0 movs r1, 0x1b | r1 = 0x1b;
0x0002e1e2 mov r0, r5 | r0 = r5;
0x0002e1e4 blx 0xfce0 | r0 = fcn_0000fce0 ();
0x0002e1e8 mov r2, r0 | r2 = r0;
0x0002e1ea cmp r0, 0 |
| if (r0 != 0) {
0x0002e1ec bne.w 0x2e0e0 | goto label_16;
| }
0x0002e1f0 movs r1, 0x1b | r1 = 0x1b;
0x0002e1f2 blx 0x10be4 | chdir ();
0x0002e1f6 b 0x2de00 | goto label_9;
| label_41:
0x0002e1f8 movs r1, 0x1b | r1 = 0x1b;
0x0002e1fa movs r0, 4 | r0 = 4;
0x0002e1fc str r1, [sp] | *(sp) = r1;
0x0002e1fe movs r1, 1 | r1 = 1;
0x0002e200 str r1, [r2, 0xc] | *((r2 + 0xc)) = r1;
0x0002e202 ldr r2, [pc, 0x98] |
0x0002e204 ldr r1, [pc, 0x98] |
0x0002e206 add r2, pc | r2 = 0x5c4a8;
0x0002e208 add r1, pc | r1 = 0x5c4ac;
0x0002e20a blx 0x100e0 | fcn_000100e0 ();
0x0002e20e b 0x2e086 | goto label_17;
| label_35:
0x0002e210 movs r0, 2 | r0 = 2;
0x0002e212 b 0x2df3c | goto label_18;
| do {
| label_49:
0x0002e214 mov sl, r4 | sl = r4;
0x0002e216 str.w r8, [sp, 0x18] | __asm ("str.w r8, [var_18h]");
0x0002e21a str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
0x0002e21e b 0x2de64 | goto label_2;
| label_48:
0x0002e220 ldr r3, [pc, 0x80] |
0x0002e222 add r3, pc | r3 = 0x5c4ca;
0x0002e224 ldr r5, [r3, 8] | r5 = *(0x5c4d2);
0x0002e226 cmp r5, 0 |
0x0002e228 beq 0x2e214 |
| } while (r5 == 0);
0x0002e22a ldr.w sl, [pc, 0x7c] |
0x0002e22e add sl, pc | sl = 0x5c4dc;
| label_19:
0x0002e230 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002e232 ldr r0, [r3] | r0 = *(r3);
0x0002e234 mov r8, r3 | r8 = r3;
| if (r0 != 0) {
0x0002e236 cbnz r0, 0x2e240 | goto label_50;
| }
0x0002e238 b 0x2e252 | goto label_51;
| do {
0x0002e23a ldr r0, [r8, 4]! | r0 = *((r8 += 4));
| if (r0 == 0) {
0x0002e23e cbz r0, 0x2e252 | goto label_51;
| }
| label_50:
0x0002e240 mov r1, sl | r1 = sl;
0x0002e242 blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002e246 cmp r0, 0 |
0x0002e248 bne 0x2e23a |
| } while (r0 != 0);
0x0002e24a mov sl, r4 | sl = r4;
0x0002e24c str r0, [sp, 0x18] | var_18h = r0;
0x0002e24e str r0, [sp, 0x10] | var_10h = r0;
0x0002e250 b 0x2de64 | goto label_2;
| label_51:
0x0002e252 ldr r5, [r5, 0x14] | r5 = *((r5 + 0x14));
0x0002e254 cmp r5, 0 |
| if (r5 != 0) {
0x0002e256 bne 0x2e230 | goto label_19;
| }
0x0002e258 b 0x2e178 | goto label_15;
| label_38:
0x0002e25a blx 0x10d58 | fcn_00010d58 ();
0x0002e25e nop |
0x0002e260 movs r4, 0xde | r4 = 0xde;
0x0002e262 movs r2, r0 | r2 = r0;
0x0002e264 lsrs r4, r7, 0x11 | r4 = r7 >> 0x11;
0x0002e266 movs r0, r0 |
0x0002e268 str r6, [r1, 0x48] | *((r1 + 0x48)) = r6;
0x0002e26a movs r2, r0 | r2 = r0;
0x0002e26c str r0, [r1, 0x44] | *((r1 + 0x44)) = r0;
0x0002e26e movs r2, r0 | r2 = r0;
0x0002e270 add.w r0, r2, r0 | r0 = r2 + r0;
0x0002e274 movs r2, 0x8a | r2 = 0x8a;
0x0002e276 movs r2, r0 | r2 = r0;
0x0002e278 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
0x0002e27a movs r2, r0 | r2 = r0;
0x0002e27c rev16 r4, r4 | __asm ("rev16 r4, r4");
0x0002e27e movs r0, r0 |
0x0002e280 lsls r4, r0, 5 | r4 = r0 << 5;
0x0002e282 movs r1, r0 | r1 = r0;
0x0002e284 lsls r2, r0, 4 | r2 = r0 << 4;
0x0002e286 movs r1, r0 | r1 = r0;
0x0002e288 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0002e28a movs r2, r0 | r2 = r0;
0x0002e28c str r0, [r6, 0x14] | *((r6 + 0x14)) = r0;
0x0002e28e movs r2, r0 | r2 = r0;
0x0002e290 lsls r6, r6, 2 | r6 <<= 2;
0x0002e292 movs r1, r0 | r1 = r0;
| if (r2 != 0) {
0x0002e294 cbnz r2, 0x2e2ac | void (*0x2e2ac)() ();
| }
0x0002e296 movs r0, r0 |
0x0002e298 movs r2, r6 | r2 = r6;
0x0002e29a movs r1, r0 | r1 = r0;
0x0002e29c vaddl.u32 q8, d6, d0 | __asm ("vaddl.u32 q8, d6, d0");
0x0002e2a0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x23334 */
| #include <stdint.h>
|
; (fcn) sym.read_config_get_handlers () | void read_config_get_handlers (int16_t arg1) {
| r0 = arg1;
0x00023334 push {r3, r4, r5, lr} |
0x00023336 mov r5, r0 | r5 = r0;
0x00023338 ldr r3, [pc, 0x20] |
0x0002333a ldr r2, [pc, 0x24] | r2 = *(0x23362);
0x0002333c add r3, pc |
0x0002333e ldr r3, [r3, r2] | r3 = *(0x4669c);
0x00023340 ldr r4, [r3] | r4 = *(0x4669c);
| if (r4 != 0) {
0x00023342 cbnz r4, 0x2334a | goto label_0;
| }
0x00023344 b 0x23358 | goto label_1;
| do {
0x00023346 ldr r4, [r4, 8] | r4 = *((r4 + 8));
| if (r4 == 0) {
0x00023348 cbz r4, 0x23358 | goto label_1;
| }
| label_0:
0x0002334a ldr r0, [r4] | r0 = *(r4);
0x0002334c mov r1, r5 | r1 = r5;
0x0002334e blx 0x11768 | r0 = fcn_00011768 ();
0x00023352 cmp r0, 0 |
0x00023354 bne 0x23346 |
| } while (r0 != 0);
0x00023356 ldr r4, [r4, 4] | r4 = *((r4 + 4));
| label_1:
0x00023358 mov r0, r4 | r0 = r4;
0x0002335a pop {r3, r4, r5, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x23364 */
| #include <stdint.h>
|
; (fcn) sym.read_config_find_handler () | void read_config_find_handler (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00023364 push {r3, r4, r5, lr} |
0x00023366 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00023368 cbz r0, 0x2337e | goto label_0;
| }
0x0002336a mov r5, r1 | r5 = r1;
0x0002336c b 0x23372 |
| while (r0 != 0) {
0x0002336e ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
| if (r4 == 0) {
0x00023370 cbz r4, 0x2337e | goto label_0;
| }
0x00023372 ldr r1, [r4] | r1 = *(r4);
0x00023374 mov r0, r5 | r0 = r5;
0x00023376 blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002337a cmp r0, 0 |
0x0002337c bne 0x2336e |
| }
| label_0:
0x0002337e mov r0, r4 | r0 = r4;
0x00023380 pop {r3, r4, r5, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x2369c */
| #include <stdint.h>
|
; (fcn) sym.read_config_print_usage () | void read_config_print_usage (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x0002369c ldr r3, [pc, 0x6c] |
0x0002369e ldr r2, [pc, 0x70] | r2 = *(0x23712);
0x000236a0 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000236a4 mov r6, r0 | r6 = r0;
0x000236a6 add r3, pc |
0x000236a8 sub sp, 0xc |
0x000236aa ldr r3, [r3, r2] | r3 = *(0x46db6);
0x000236ac ldr.w r8, [r3] | r8 = *(0x46db6);
| if (r0 == 0) {
0x000236b0 cbz r0, 0x23704 | goto label_2;
| }
| label_1:
0x000236b2 cmp.w r8, 0 |
| if (r8 == 0) {
0x000236b6 beq 0x236fe | goto label_3;
| }
0x000236b8 ldr.w sb, [pc, 0x58] |
0x000236bc ldr r7, [pc, 0x58] |
0x000236be add sb, pc | sb = 0x46dd6;
0x000236c0 add r7, pc | r7 = 0x46ddc;
| label_0:
0x000236c2 ldr.w r3, [r8] | r3 = *(r8);
0x000236c6 mov r2, r6 | r2 = r6;
0x000236c8 mov r1, sb | r1 = sb;
0x000236ca movs r0, 6 | r0 = 6;
0x000236cc str r3, [sp] | *(sp) = r3;
0x000236ce blx 0x11494 | fcn_00011494 ();
0x000236d2 ldr.w r4, [r8, 4] | r4 = *((r8 + 4));
| if (r4 == 0) {
0x000236d6 cbz r4, 0x236f4 | goto label_4;
| }
| do {
0x000236d8 ldr r5, [r4, 0x14] | r5 = *((r4 + 0x14));
0x000236da mov r3, r6 | r3 = r6;
0x000236dc mov r2, r6 | r2 = r6;
0x000236de mov r1, r7 | r1 = r7;
0x000236e0 movs r0, 6 | r0 = 6;
| if (r5 != 0) {
0x000236e2 cbz r5, 0x236ee |
0x000236e4 str r5, [sp, 4] | var_4h = r5;
0x000236e6 ldr r5, [r4] | r5 = *(r4);
0x000236e8 str r5, [sp] | *(sp) = r5;
0x000236ea blx 0x11494 | fcn_00011494 ();
| }
0x000236ee ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
0x000236f0 cmp r4, 0 |
0x000236f2 bne 0x236d8 |
| } while (r4 != 0);
| label_4:
0x000236f4 ldr.w r8, [r8, 8] | r8 = *((r8 + 8));
0x000236f8 cmp.w r8, 0 |
| if (r8 != 0) {
0x000236fc bne 0x236c2 | goto label_0;
| }
| label_3:
0x000236fe add sp, 0xc |
0x00023700 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x00023704 ldr r6, [pc, 0x14] |
0x00023706 add r6, pc | r6 = 0x46e26;
0x00023708 b 0x236b2 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x23720 */
| #include <stdint.h>
|
; (fcn) sym.read_config_store () | void read_config_store (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_14h;
| int16_t var_213h;
| int16_t var_214h;
| r0 = arg1;
| r1 = arg2;
| label_3:
0x00023550 ldr r2, [pc, 0xe8] |
0x00023552 ldr r3, [pc, 0xec] | r3 = *(0x23642);
0x00023554 push.w {r4, r5, r6, r7, r8, lr} |
0x00023558 mov r8, r0 | r8 = r0;
0x0002355a add r2, pc | r2 = 0x46b9a;
0x0002355c ldr r0, [pc, 0xe4] |
0x0002355e sub.w sp, sp, 0x218 |
0x00023562 mov r7, r1 | r7 = r1;
0x00023564 ldr r3, [r2, r3] |
0x00023566 add r0, pc | r0 = 0x46bae;
0x00023568 ldr r3, [r3] | r3 = *(0x46b9a);
0x0002356a str r3, [sp, 0x214] | var_214h = r3;
0x0002356c mov.w r3, 0 | r3 = 0;
0x00023570 blx 0x10cfc | r0 = fcn_00010cfc ();
0x00023574 mov r5, r0 | r5 = r0;
0x00023576 cmp r0, 0 |
| if (r0 == 0) {
0x00023578 beq 0x23604 | goto label_4;
| }
| label_1:
0x0002357a movs r0, 0x1f | r0 = 0x1f;
0x0002357c blx 0x103c0 | fcn_000103c0 ();
0x00023580 movs r2, 1 | r2 = 1;
0x00023582 mov r6, r0 | r6 = r0;
0x00023584 mov.w r1, 0x1c0 | r1 = case.0x269a8.32;
0x00023588 mov r0, r5 | r0 = r5;
0x0002358a blx 0x10fb8 | r0 = fcn_00010fb8 ();
| if (r0 != 0) {
0x0002358e cbnz r0, 0x235f6 | goto label_5;
| }
| label_0:
0x00023590 ldr r1, [pc, 0xb4] |
0x00023592 mov r0, r5 | r0 = r5;
0x00023594 add r1, pc | r1 = 0x46be0;
0x00023596 blx 0xfd38 | r0 = fcn_0000fd38 ();
0x0002359a mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0002359c cbnz r0, 0x235ce | goto label_6;
| }
0x0002359e ldr r0, [pc, 0xac] |
0x000235a0 mov r1, r8 | r1 = r8;
0x000235a2 add r0, pc | r0 = 0x46bf4;
0x000235a4 blx 0x11768 | r0 = fcn_00011768 ();
0x000235a8 cmp r0, 0 |
| if (r0 != 0) {
0x000235aa bne 0x2362a | goto label_7;
| }
| do {
| label_2:
0x000235ac mov r0, r6 | r0 = r6;
0x000235ae blx 0x103c0 | fcn_000103c0 ();
0x000235b2 ldr r2, [pc, 0x9c] |
0x000235b4 ldr r3, [pc, 0x88] | r3 = *(0x23640);
0x000235b6 add r2, pc | r2 = 0x46c0c;
0x000235b8 ldr r3, [r2, r3] | r3 = *(0x46c0c);
0x000235ba ldr r2, [r3] | r2 = *(0x46c0c);
0x000235bc ldr r3, [sp, 0x214] | r3 = var_214h;
0x000235be eors r2, r3 | r2 ^= r3;
0x000235c0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000235c4 bne 0x23638 | goto label_8;
| }
0x000235c6 add.w sp, sp, 0x218 |
0x000235ca pop.w {r4, r5, r6, r7, r8, pc} |
| label_6:
0x000235ce mov r1, r4 | r1 = r4;
0x000235d0 mov r0, r7 | r0 = r7;
0x000235d2 blx 0x11940 | fcn_00011940 ();
0x000235d6 mov r1, r4 | r1 = r4;
0x000235d8 movs r0, 0xa | r0 = 0xa;
0x000235da blx 0x10e68 | fcn_00010e68 ();
0x000235de mov r0, r4 | r0 = r4;
0x000235e0 blx 0x103dc | fcn_000103dc ();
0x000235e4 mov r0, r4 | r0 = r4;
0x000235e6 blx 0xf610 | fcn_0000f610 ();
0x000235ea blx 0xfec0 | fcn_0000fec0 ();
0x000235ee mov r0, r4 | r0 = r4;
0x000235f0 blx 0xfb10 | fcn_0000fb10 ();
0x000235f4 b 0x235ac |
| } while (1);
| label_5:
0x000235f6 ldr r1, [pc, 0x5c] |
0x000235f8 add r2, sp, 0x14 | r2 += var_14h;
0x000235fa movs r0, 3 | r0 = 3;
0x000235fc add r1, pc | r1 = 0x46c56;
0x000235fe blx 0x11494 | fcn_00011494 ();
0x00023602 b 0x23590 | goto label_0;
| label_4:
0x00023604 blx 0x10d80 | fcn_00010d80 ();
0x00023608 ldr r3, [pc, 0x4c] |
0x0002360a add r4, sp, 0x14 | r4 += var_14h;
0x0002360c strd r0, r8, [sp, 4] | __asm ("strd r0, r8, [sp, 4]");
0x00023610 movs r2, 1 | r2 = 1;
0x00023612 mov r0, r4 | r0 = r4;
0x00023614 add r3, pc | r3 = 0x46c70;
0x00023616 str r3, [sp] | *(sp) = r3;
0x00023618 mov.w r3, 0x200 | r3 = case.0x269a8.32;
0x0002361c mov r1, r3 | r1 = r3;
0x0002361e blx 0x10a44 | fcn_00010a44 ();
0x00023622 strb.w r5, [sp, 0x213] | var_213h = r5;
0x00023626 mov r5, r4 | r5 = r4;
0x00023628 b 0x2357a | goto label_1;
| label_7:
0x0002362a ldr r1, [pc, 0x30] |
0x0002362c mov r2, r5 | r2 = r5;
0x0002362e movs r0, 3 | r0 = 3;
0x00023630 add r1, pc | r1 = 0x46c92;
0x00023632 blx 0x11494 | fcn_00011494 ();
0x00023636 b 0x235ac | goto label_2;
| label_8:
0x00023638 blx 0x10d58 | fcn_00010d58 ();
0x0002363c ldm r5!, {r1, r4, r6} | r1 = *(r5!);
| r4 = *((r5! + 4));
| r6 = *((r5! + 8));
0x0002363e movs r2, r0 | r2 = r0;
0x00023640 lsrs r4, r7, 0x11 | r4 = r7 >> 0x11;
0x00023642 movs r0, r0 |
0x00023644 ldrh r2, [r7, 0x3a] | r2 = *((r7 + 0x3a));
0x00023646 movs r1, r0 | r1 = r0;
0x00023648 ldr r0, [r1, 0x7c] | r0 = *((r1 + 0x7c));
0x0002364a movs r1, r0 | r1 = r0;
0x0002364c ldrh r6, [r4, 0xa] | r6 = *((r4 + 0xa));
0x0002364e movs r1, r0 | r1 = r0;
0x00023650 ldm r4, {r1, r2, r4, r5, r6, r7} | r1 = *(r4);
| r2 = *((r4 + 4));
| r4 = *((r4 + 8));
| r5 = *((r4 + 12));
| r6 = *((r4 + 16));
| r7 = *((r4 + 20));
0x00023652 movs r2, r0 | r2 = r0;
0x00023654 ldrh r0, [r1, 0x38] | r0 = *((r1 + 0x38));
0x00023656 movs r1, r0 | r1 = r0;
0x00023658 ldrh r4, [r4, 0x36] | r4 = *((r4 + 0x36));
0x0002365a movs r1, r0 | r1 = r0;
0x0002365c ldrh r0, [r1, 0x38] | r0 = *((r1 + 0x38));
0x0002365e movs r1, r0 | r1 = r0;
0x00023720 push {r3, r4, r5, lr} |
0x00023722 mov r4, r0 | r4 = r0;
0x00023724 mov r5, r1 | r5 = r1;
0x00023726 movs r0, 0 | r0 = 0;
0x00023728 movs r1, 0x20 | r1 = 0x20;
0x0002372a blx 0x1096c | r0 = fcn_0001096c ();
0x0002372e cbz r0, 0x23732 |
| while (r0 != 0) {
0x00023730 pop {r3, r4, r5, pc} |
0x00023732 movs r1, 0x23 | r1 = 0x23;
0x00023734 blx 0x1096c | r0 = fcn_0001096c ();
0x00023738 cmp r0, 0 |
0x0002373a bne 0x23730 |
| }
0x0002373c mov r1, r5 | r1 = r5;
0x0002373e mov r0, r4 | r0 = r4;
0x00023740 pop.w {r3, r4, r5, lr} |
0x00023744 b 0x23550 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x23eb8 */
| #include <stdint.h>
|
; (fcn) sym.read_config () | void read_config (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int32_t var_4h_4;
| int32_t var_4h_5;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_410h;
| int32_t var_4h_2;
| int32_t var_8h;
| int16_t var_1h;
| int16_t var_4h;
| int16_t var_3h;
| int16_t var_48h;
| int16_t var_4h_3;
| int8_t var_1h_2;
| int16_t var_448h;
| int16_t var_1440h;
| int32_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00023eb8 ldr.w r3, [pc, 0x4d4] |
0x00023ebc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00023ec0 sub.w sp, sp, 0x1440 |
0x00023ec4 sub sp, 0xc |
0x00023ec6 mov fp, r2 |
0x00023ec8 add r3, pc | r3 = 0x4825c;
0x00023eca strd r1, r0, [sp, 0x14] | __asm ("strd r1, r0, [var_18h]");
0x00023ece add.w r0, sp, 0x1440 | r0 += var_1440h;
0x00023ed2 ldr r1, [r3, 4] | r1 = *(0x48260);
0x00023ed4 adds r0, 4 | r0 += 4;
0x00023ed6 ldr.w r2, [pc, 0x4bc] | r2 = *(0x24396);
0x00023eda str r1, [sp, 0x24] | var_24h = r1;
0x00023edc ldr.w r1, [pc, 0x4b8] |
0x00023ee0 add r1, pc | r1 = 0x4827c;
0x00023ee2 ldr r2, [r1, r2] |
0x00023ee4 ldr r1, [r3] | r1 = *(0x4825c);
0x00023ee6 ldr r2, [r2] | r2 = *(0x4827c);
0x00023ee8 str r2, [r0] | *(r0) = r2;
0x00023eea mov.w r2, 0 | r2 = 0;
0x00023eee ldr r2, [r3, 0x10] | r2 = *(0x4826c);
0x00023ef0 str r1, [sp, 0x28] | var_28h = r1;
| if (r2 == 0) {
0x00023ef2 cbnz r2, 0x23ef6 |
0x00023ef4 str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
| }
0x00023ef6 ldr.w r1, [pc, 0x4a4] |
0x00023efa ldr r0, [sp, 0x18] | r0 = var_18h;
0x00023efc add r1, pc | r1 = 0x4829e;
0x00023efe blx 0xfd38 | r0 = fcn_0000fd38 ();
0x00023f02 mov r6, r0 | r6 = r0;
0x00023f04 cmp r0, 0 |
| if (r0 == 0) {
0x00023f06 beq.w 0x24338 | goto label_13;
| }
0x00023f0a ldr.w r3, [pc, 0x494] |
0x00023f0e add r3, pc | r3 = 0x482b4;
0x00023f10 ldr r1, [r3, 0x14] | r1 = *(0x482c8);
0x00023f12 cmp.w r1, 0x1000 |
| if (r1 > 0x1000) {
0x00023f16 bgt.w 0x24352 | goto label_14;
| }
0x00023f1a ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00023f1c cmp r2, 0x10 |
| if (r2 > 0x10) {
0x00023f1e bgt.w 0x24378 | goto label_15;
| }
0x00023f22 adds r2, 1 | r2++;
0x00023f24 movs r5, 0 | r5 = 0;
0x00023f26 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x00023f28 adds r1, 1 | r1++;
0x00023f2a ldr r2, [sp, 0x18] | r2 = var_18h;
0x00023f2c mov r4, r5 | r4 = r5;
0x00023f2e str r1, [r3, 0x14] | *((r3 + 0x14)) = r1;
0x00023f30 str r5, [r3] | *(r3) = r5;
0x00023f32 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00023f34 ldr.w r3, [pc, 0x46c] |
0x00023f38 add r3, pc | r3 = 0x482e0;
0x00023f3a str r3, [sp, 0x2c] | var_2ch = r3;
0x00023f3c ldr.w r3, [pc, 0x468] |
0x00023f40 add r3, pc | r3 = 0x482ec;
0x00023f42 str r3, [sp, 0x20] | var_20h = r3;
0x00023f44 ldr.w r3, [pc, 0x464] |
0x00023f48 add r3, pc | r3 = 0x482f8;
0x00023f4a str r3, [sp, 0x30] | var_30h = r3;
0x00023f4c ldr.w r3, [pc, 0x460] |
0x00023f50 add r3, pc | r3 = 0x48304;
0x00023f52 str r3, [sp, 0x34] | var_34h = r3;
| label_1:
0x00023f54 movs r7, 0 | r7 = 0;
0x00023f56 b 0x23f7a |
| while (r3 <= r5) {
| label_0:
0x00023f58 add.w sb, r4, r7 | sb = r4 + r7;
0x00023f5c mov r2, r6 | r2 = r6;
0x00023f5e subs r1, r5, r7 | r1 = r5 - r7;
0x00023f60 mov r0, sb | r0 = sb;
0x00023f62 blx 0xfb28 | r0 = fcn_0000fb28 ();
| if (r0 == 0) {
0x00023f66 cbz r0, 0x23f96 | goto label_16;
| }
0x00023f68 mov r0, sb | r0 = sb;
0x00023f6a blx 0x10548 | r0 = fcn_00010548 ();
0x00023f6e add r7, r0 | r7 += r0;
0x00023f70 subs r3, r7, 1 | r3 = r7 - 1;
0x00023f72 ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x00023f74 add r3, r4 | r3 += r4;
0x00023f76 cmp r2, 0xa |
| if (r2 == 0xa) {
0x00023f78 beq 0x24034 | goto label_17;
| }
0x00023f7a adds r3, r7, 1 | r3 = r7 + 1;
0x00023f7c cmp r3, r5 |
0x00023f7e blo 0x23f58 |
| }
0x00023f80 add.w r5, r5, 0x100 | r5 += case.0x269a8.32;
0x00023f84 mov r0, r4 | r0 = r4;
0x00023f86 mov r1, r5 | r1 = r5;
0x00023f88 blx 0x11594 | r0 = fcn_00011594 ();
0x00023f8c cmp r0, 0 |
| if (r0 == 0) {
0x00023f8e beq.w 0x2431e | goto label_18;
| }
0x00023f92 mov r4, r0 | r4 = r0;
0x00023f94 b 0x23f58 | goto label_0;
| label_16:
0x00023f96 strb.w r0, [sb] | *(sb) = r0;
0x00023f9a mov r8, r0 | r8 = r0;
0x00023f9c mov r0, r6 | r0 = r6;
0x00023f9e blx 0xfb10 | fcn_0000fb10 ();
0x00023fa2 ldr.w r2, [pc, 0x410] |
0x00023fa6 mov r0, r4 | r0 = r4;
0x00023fa8 add r2, pc | r2 = 0x48362;
0x00023faa ldr r3, [r2] | r3 = *(0x48362);
0x00023fac adds r3, 1 | r3++;
0x00023fae str r3, [r2] | *(r2) = r3;
0x00023fb0 blx 0xf718 | r0 = fcn_0000f718 ();
| if (r0 == 0) {
0x00023fb4 cbz r0, 0x23ff4 | goto label_3;
| }
0x00023fb6 mov r6, r8 | r6 = r8;
| label_2:
0x00023fb8 add.w sb, sp, 0x48 | sb += var_48h;
0x00023fbc mov.w r2, 0x400 | r2 = case.0x269a8.32;
0x00023fbe str r0, [r0, 0x28] | *((r0 + 0x28)) = r0;
0x00023fc0 sub.w r8, sb, 4 | r8 -= var_4h;
0x00023fc4 add.w sl, sp, 0x448 | sl += var_448h;
0x00023fc8 mov r1, r8 | r1 = r8;
0x00023fca blx 0x101b4 | fcn_000101b4 ();
0x00023fce ldrb.w r3, [r8] | r3 = *(r8);
0x00023fd2 mov r7, r0 | r7 = r0;
0x00023fd4 cmp r3, 0x5b |
| if (r3 == 0x5b) {
0x00023fd6 beq 0x2404e | goto label_19;
| }
0x00023fd8 cmp r3, 0x69 |
| if (r3 == 0x69) {
0x00023fda beq 0x24076 | goto label_20;
| }
| label_4:
0x00023fdc ldr.w sl, [sp, 0x14] | sl = var_14h;
| label_6:
0x00023fe0 cmp r7, 0 |
| if (r7 == 0) {
0x00023fe2 beq 0x240d0 | goto label_21;
| }
0x00023fe4 mov r2, r7 | r2 = r7;
0x00023fe6 mov r1, r8 | r1 = r8;
0x00023fe8 mov r0, sl | r0 = sl;
0x00023fea mov r3, fp | r3 = fp;
0x00023fec blx 0x10b04 | fcn_00010b04 ();
| label_5:
0x00023ff0 cmp r6, 0 |
| if (r6 != 0) {
0x00023ff2 bne 0x23f54 | goto label_1;
| }
| label_3:
0x00023ff4 mov r0, r4 | r0 = r4;
0x00023ff6 blx 0x10168 | fcn_00010168 ();
0x00023ffa ldr r3, [pc, 0x3bc] |
0x00023ffc movs r0, 0 | r0 = 0;
0x00023ffe ldr r1, [sp, 0x28] | r1 = var_28h;
0x00024000 add r3, pc | r3 = 0x483be;
0x00024002 ldr r2, [r3, 0x10] | r2 = *(0x483ce);
0x00024004 str r1, [r3] | *(r3) = r1;
0x00024006 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00024008 subs r2, 1 | r2--;
0x0002400a str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x0002400c str r1, [r3, 4] | *((r3 + 4)) = r1;
| label_12:
0x0002400e ldr r2, [pc, 0x3ac] |
0x00024010 add.w r1, sp, 0x1440 | r1 += var_1440h;
0x00024014 ldr r3, [pc, 0x37c] | r3 = *(0x24394);
0x00024016 adds r1, 4 | r1 += 4;
0x00024018 add r2, pc | r2 = 0x483da;
0x0002401a ldr r3, [r2, r3] | r3 = *(0x483da);
0x0002401c ldr r2, [r3] | r2 = *(0x483da);
0x0002401e ldr r3, [r1] | r3 = *(r1);
0x00024020 eors r2, r3 | r2 ^= r3;
0x00024022 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00024026 bne.w 0x24374 | goto label_22;
| }
0x0002402a add.w sp, sp, 0x1440 |
0x0002402e add sp, 0xc |
0x00024030 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x00024034 ldr r2, [pc, 0x388] |
0x00024036 movs r1, 0 | r1 = 0;
0x00024038 strb r1, [r3] | *(r3) = r1;
0x0002403a mov r0, r4 | r0 = r4;
0x0002403c add r2, pc | r2 = 0x48400;
0x0002403e ldr r3, [r2] | r3 = *(0x48400);
0x00024040 adds r3, 1 | r3++;
0x00024042 str r3, [r2] | *(r2) = r3;
0x00024044 blx 0xf718 | r0 = fcn_0000f718 ();
0x00024048 cmp r0, 0 |
| if (r0 == 0) {
0x0002404a beq 0x23f54 | goto label_1;
| }
0x0002404c b 0x23fb8 | goto label_2;
| label_19:
0x0002404e mov r0, r8 | r0 = r8;
0x00024050 str.w r8, [sp, 0x1c] | __asm ("str.w r8, [var_1ch]");
0x00024054 blx 0x10548 | fcn_00010548 ();
0x00024058 subs r3, r0, 1 | r3 -= var_1h;
0x0002405a ldrb.w r1, [r8, r3] | r1 = *((r8 + r3));
0x0002405e cmp r1, 0x5d |
| if (r1 == 0x5d) {
0x00024060 beq 0x240e0 | goto label_23;
| }
0x00024062 ldr r0, [pc, 0x360] |
0x00024064 sub.w r1, sb, 3 | r1 -= var_3h;
0x00024068 add r0, pc | r0 = 0x48432;
0x0002406a blx 0x11018 | fcn_00011018 ();
0x0002406e cmp r6, 0 |
| if (r6 != 0) {
0x00024070 bne.w 0x23f54 | goto label_1;
| }
0x00024074 b 0x23ff4 | goto label_3;
| label_20:
0x00024076 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00024078 movs r2, 7 | r2 = 7;
0x0002407a mov r0, r8 | r0 = r8;
0x0002407c blx 0x10bfc | r0 = fcn_00010bfc ();
0x00024080 cmp r0, 0 |
| if (r0 != 0) {
0x00024082 bne 0x23fdc | goto label_4;
| }
0x00024084 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00024086 mov r0, r8 | r0 = r8;
0x00024088 blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002408c cmp r0, 0 |
| if (r0 == 0) {
0x0002408e beq.w 0x241de | goto label_24;
| }
0x00024092 ldr r1, [pc, 0x334] |
0x00024094 mov r0, r8 | r0 = r8;
0x00024096 add r1, pc | r1 = 0x48464;
0x00024098 blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002409c cmp r0, 0 |
| if (r0 != 0) {
0x0002409e bne 0x24114 | goto label_25;
| }
0x000240a0 cmp r7, 0 |
| if (r7 == 0) {
0x000240a2 beq.w 0x242ac | goto label_26;
| }
0x000240a6 mov r0, r7 | r0 = r7;
0x000240a8 sub.w sl, sl, 4 | sl -= var_4h_3;
0x000240ac blx 0xf7a8 | fcn_0000f7a8 ();
0x000240b0 mov sb, r4 | sb = r4;
0x000240b2 mov r8, r0 | r8 = r0;
0x000240b4 cmp r0, 0 |
| if (r0 != 0) {
0x000240b6 bne 0x241b6 | goto label_7;
| }
0x000240b8 cmp.w fp, 1 |
| if (fp == 1) {
0x000240bc beq 0x23ff0 | goto label_5;
| }
0x000240be ldr r0, [pc, 0x30c] |
0x000240c0 mov r1, r7 | r1 = r7;
0x000240c2 add r0, pc | r0 = 0x48494;
0x000240c4 blx 0x11018 | fcn_00011018 ();
0x000240c8 cmp r6, 0 |
| if (r6 != 0) {
0x000240ca bne.w 0x23f54 | goto label_1;
| }
0x000240ce b 0x23ff4 | goto label_3;
| label_21:
0x000240d0 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000240d2 mov r1, r8 | r1 = r8;
0x000240d4 blx 0x11018 | fcn_00011018 ();
0x000240d8 cmp r6, 0 |
| if (r6 != 0) {
0x000240da bne.w 0x23f54 | goto label_1;
| }
0x000240de b 0x23ff4 | goto label_3;
| label_23:
0x000240e0 movs r1, 0 | r1 = 0;
0x000240e2 sub.w sb, sb, 3 | sb -= var_3h;
0x000240e6 mov r0, sb | r0 = sb;
0x000240e8 strb.w r1, [r8, r3] | *((r8 + r3)) = r1;
0x000240ec blx 0xfea8 | r0 = fcn_0000fea8 ();
0x000240f0 mov sl, r0 | sl = r0;
0x000240f2 cmp r0, 0 |
| if (r0 == 0) {
0x000240f4 beq.w 0x24288 | goto label_27;
| }
| if (r7 != 0) {
0x000240f8 cbz r7, 0x2410a |
0x000240fa mov r0, r7 | r0 = r7;
0x000240fc mov.w r2, 0x400 | r2 = case.0x269a8.32;
0x00024100 mov r1, r8 | r1 = r8;
0x00024102 blx 0x101b4 | r0 = fcn_000101b4 ();
0x00024106 mov r7, r0 | r7 = r0;
0x00024108 b 0x23fe0 | goto label_6;
| }
0x0002410a str r0, [sp, 0x14] | var_14h = r0;
0x0002410c cmp r6, 0 |
| if (r6 != 0) {
0x0002410e bne.w 0x23f54 | goto label_1;
| }
0x00024112 b 0x23ff4 | goto label_3;
| label_25:
0x00024114 ldr r1, [pc, 0x2b8] |
0x00024116 mov r0, r8 | r0 = r8;
0x00024118 add r1, pc | r1 = 0x484ec;
0x0002411a blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002411e cmp r0, 0 |
| if (r0 != 0) {
0x00024120 bne 0x24204 | goto label_28;
| }
0x00024122 cmp r7, 0 |
| if (r7 == 0) {
0x00024124 beq.w 0x242d6 | goto label_29;
| }
0x00024128 ldrb r2, [r7] | r2 = *(r7);
0x0002412a cmp r2, 0x2f |
| if (r2 == 0x2f) {
0x0002412c beq.w 0x2429a | goto label_30;
| }
0x00024130 sub.w r8, sl, 4 | r8 -= var_4h_3;
0x00024134 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00024136 mov.w r2, 0x1000 | r2 = case.0x269a8.32;
0x0002413a str r0, [sp, 0x1c] | var_1ch = r0;
0x0002413c mov r0, r8 | r0 = r8;
0x0002413e blx 0xf7f4 | fcn_0000f7f4 ();
0x00024142 movs r1, 0x2f | r1 = 0x2f;
0x00024144 mov r0, r8 | r0 = r8;
0x00024146 blx 0xfe9c | fcn_0000fe9c ();
0x0002414a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002414c cmp r0, 0 |
| if (r0 == 0) {
0x0002414e beq.w 0x24318 | goto label_31;
| }
0x00024152 strb r3, [r0, 1] | var_1h_2 = r3;
| label_11:
0x00024154 mov r1, r7 | r1 = r7;
0x00024156 mov.w r2, 0x1000 | r2 = case.0x269a8.32;
0x0002415a mov r0, r8 | r0 = r8;
0x0002415c blx 0x110e4 | fcn_000110e4 ();
| label_9:
0x00024160 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00024162 mov r2, fp | r2 = fp;
0x00024164 mov r0, r8 | r0 = r8;
0x00024166 bl 0x23eb8 | r0 = read_config ();
0x0002416a cmp r0, 0 |
0x0002416c it ne |
| if (r0 == 0) {
0x0002416e cmpne fp, 1 | __asm ("cmpne fp, 1");
| goto label_32;
| }
| if (r0 == 0) {
| label_32:
0x00024172 beq.w 0x23ff0 | goto label_5;
| }
0x00024176 ldr r0, [pc, 0x25c] |
0x00024178 mov r1, r8 | r1 = r8;
0x0002417a add r0, pc | r0 = 0x48554;
0x0002417c blx 0x11018 | fcn_00011018 ();
0x00024180 cmp r6, 0 |
| if (r6 != 0) {
0x00024182 bne.w 0x23f54 | goto label_1;
| }
0x00024186 b 0x23ff4 | goto label_3;
| label_8:
0x00024188 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002418a adds r2, 6 | r2 += 6;
0x0002418c ldr r1, [sp, 0x30] | r1 = var_30h;
0x0002418e adds r0, r3, r2 | r0 = r3 + r2;
0x00024190 blx 0x11768 | r0 = fcn_00011768 ();
| if (r0 != 0) {
0x00024194 cbnz r0, 0x241b6 | goto label_7;
| }
0x00024196 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00024198 movs r2, 1 | r2 = 1;
0x0002419a mov r0, sl | r0 = sl;
0x0002419c strd r7, r4, [sp, 4] | __asm ("strd r7, r4, [var_4h_4]");
0x000241a0 str r3, [sp] | *(sp) = r3;
0x000241a2 mov.w r3, 0x1000 | r3 = case.0x269a8.32;
0x000241a6 mov r1, r3 | r1 = r3;
0x000241a8 blx 0x10a44 | fcn_00010a44 ();
0x000241ac ldr r1, [sp, 0x14] | r1 = var_14h;
0x000241ae mov r2, fp | r2 = fp;
0x000241b0 mov r0, sl | r0 = sl;
0x000241b2 bl 0x23eb8 | read_config ();
| do {
| label_7:
0x000241b6 mov r0, r8 | r0 = r8;
0x000241b8 blx 0x1167c | r0 = fcn_0001167c ();
0x000241bc mov r3, r0 | r3 = r0;
0x000241be cmp r0, 0 |
| if (r0 == 0) {
0x000241c0 beq.w 0x242c6 | goto label_33;
| }
0x000241c4 ldrb r2, [r3, 0xb] | r2 = *((r3 + 0xb));
0x000241c6 cmp r2, 0x2e |
0x000241c8 beq 0x241b6 |
| } while (r2 == 0x2e);
0x000241ca add.w r4, r3, 0xb | r4 = r3 + 0xb;
0x000241ce str r3, [sp, 0x1c] | var_1ch = r3;
0x000241d0 mov r0, r4 | r0 = r4;
0x000241d2 blx 0x10548 | r0 = fcn_00010548 ();
0x000241d6 cmp r0, 5 |
0x000241d8 mov r2, r0 | r2 = r0;
| if (r0 < 5) {
0x000241da bls 0x241b6 | goto label_7;
| }
0x000241dc b 0x24188 | goto label_8;
| label_24:
0x000241de cmp.w fp, 1 |
| if (fp == 1) {
0x000241e2 beq.w 0x23ff0 | goto label_5;
| }
0x000241e6 movs r1, 0x11 | r1 = 0x11;
0x000241e8 blx 0x1096c | r0 = fcn_0001096c ();
0x000241ec cmp r0, 0 |
| if (r0 != 0) {
0x000241ee bne.w 0x23ff0 | goto label_5;
| }
0x000241f2 ldr r0, [pc, 0x1e4] |
0x000241f4 mov r1, r8 | r1 = r8;
0x000241f6 add r0, pc | r0 = 0x485d4;
0x000241f8 blx 0x118ec | fcn_000118ec ();
0x000241fc cmp r6, 0 |
| if (r6 != 0) {
0x000241fe bne.w 0x23f54 | goto label_1;
| }
0x00024202 b 0x23ff4 | goto label_3;
| label_28:
0x00024204 ldr r1, [pc, 0x1d4] |
0x00024206 mov r0, r8 | r0 = r8;
0x00024208 add r1, pc | r1 = 0x485e8;
0x0002420a blx 0xfbe0 | r0 = fcn_0000fbe0 ();
0x0002420e cmp r0, 0 |
| if (r0 != 0) {
0x00024210 bne.w 0x23fdc | goto label_4;
| }
0x00024214 cmp r7, 0 |
| if (r7 == 0) {
0x00024216 beq 0x242fe | goto label_34;
| }
0x00024218 str r0, [sp, 0x1c] | var_1ch = r0;
0x0002421a mov r0, r7 | r0 = r7;
0x0002421c blx 0x10548 | fcn_00010548 ();
0x00024220 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00024222 sub.w sl, sl, 0x410 | sl -= var_410h;
0x00024226 cmp r0, 5 |
0x00024228 str.w r7, [sl] | __asm ("str.w r7, [sl]");
0x0002422c str.w r3, [sl, 8] | __asm ("str.w r3, [var_8h]");
0x00024230 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00024232 str.w r3, [sl, 4] | __asm ("str.w r3, [var_4h_2]");
| if (r0 < 5) {
0x00024236 bls 0x242f0 | goto label_35;
| }
0x00024238 ldr r1, [pc, 0x1a4] |
0x0002423a sub.w r8, r0, 5 | r8 = r0 - 5;
0x0002423c lsrs r5, r0, 0x20 | r5 = r0 >> 0x20;
0x0002423e add.w sl, r7, r8 | sl = r7 + r8;
0x00024242 mov r0, sl | r0 = sl;
0x00024244 add r1, pc | r1 = 0x48628;
0x00024246 blx 0x11768 | r0 = fcn_00011768 ();
| if (r0 == 0) {
0x0002424a cbnz r0, 0x24252 |
0x0002424c movs r3, 0 | r3 = 0;
0x0002424e strb.w r3, [r7, r8] | *((r7 + r8)) = r3;
| }
0x00024252 sub.w r1, sb, 0x10 | r1 -= var_410h;
0x00024256 mov r0, fp | r0 = fp;
0x00024258 blx 0x10c08 | fprintf_chk ()
0x0002425c ldrb.w r2, [sl] | r2 = *(sl);
0x00024260 mov r3, r0 | r3 = r0;
| if (r2 == 0) {
0x00024262 cbnz r2, 0x2426a |
0x00024264 movs r2, 0x2e | r2 = 0x2e;
0x00024266 strb.w r2, [sl] | *(sl) = r2;
| }
| label_10:
0x0002426a cmp r3, 0 |
0x0002426c it ne |
| if (r3 == 0) {
0x0002426e cmpne fp, 1 | __asm ("cmpne fp, 1");
| goto label_36;
| }
| if (r3 == 0) {
| label_36:
0x00024272 beq.w 0x23ff0 | goto label_5;
| }
0x00024276 ldr r0, [pc, 0x16c] |
0x00024278 mov r1, r7 | r1 = r7;
0x0002427a add r0, pc | r0 = 0x48664;
0x0002427c blx 0x11018 | fcn_00011018 ();
0x00024280 cmp r6, 0 |
| if (r6 != 0) {
0x00024282 bne.w 0x23f54 | goto label_1;
| }
0x00024286 b 0x23ff4 | goto label_3;
| label_27:
0x00024288 ldr r0, [pc, 0x15c] |
0x0002428a mov r1, sb | r1 = sb;
0x0002428c add r0, pc | r0 = 0x48678;
0x0002428e blx 0x11018 | fcn_00011018 ();
0x00024292 cmp r6, 0 |
| if (r6 != 0) {
0x00024294 bne.w 0x23f54 | goto label_1;
| }
0x00024298 b 0x23ff4 | goto label_3;
| label_30:
0x0002429a sub.w r8, sl, 4 | r8 -= var_4h_3;
0x0002429e mov r1, r7 | r1 = r7;
0x000242a0 mov.w r2, 0x1000 | r2 = case.0x269a8.32;
0x000242a4 mov r0, r8 | r0 = r8;
0x000242a6 blx 0xf7f4 | fcn_0000f7f4 ();
0x000242aa b 0x24160 | goto label_9;
| label_26:
0x000242ac cmp.w fp, 1 |
| if (fp == 1) {
0x000242b0 beq.w 0x23ff0 | goto label_5;
| }
0x000242b4 ldr r0, [pc, 0x134] |
0x000242b6 mov r1, r8 | r1 = r8;
0x000242b8 add r0, pc | r0 = 0x486a8;
0x000242ba blx 0x11018 | fcn_00011018 ();
0x000242be cmp r6, 0 |
| if (r6 != 0) {
0x000242c0 bne.w 0x23f54 | goto label_1;
| }
0x000242c4 b 0x23ff4 | goto label_3;
| label_33:
0x000242c6 mov r0, r8 | r0 = r8;
0x000242c8 mov r4, sb | r4 = sb;
0x000242ca blx 0x10bc8 | fcn_00010bc8 ();
0x000242ce cmp r6, 0 |
| if (r6 != 0) {
0x000242d0 bne.w 0x23f54 | goto label_1;
| }
0x000242d4 b 0x23ff4 | goto label_3;
| label_29:
0x000242d6 cmp.w fp, 1 |
| if (fp == 1) {
0x000242da beq.w 0x23ff0 | goto label_5;
| }
0x000242de ldr r0, [pc, 0x110] |
0x000242e0 mov r1, r8 | r1 = r8;
0x000242e2 add r0, pc | r0 = 0x486d8;
0x000242e4 blx 0x11018 | fcn_00011018 ();
0x000242e8 cmp r6, 0 |
| if (r6 != 0) {
0x000242ea bne.w 0x23f54 | goto label_1;
| }
0x000242ee b 0x23ff4 | goto label_3;
| label_35:
0x000242f0 sub.w r1, sb, 0x10 | r1 -= var_410h;
0x000242f4 mov r0, fp | r0 = fp;
0x000242f6 blx 0x10c08 | r0 = fprintf_chk ()
0x000242fa mov r3, r0 | r3 = r0;
0x000242fc b 0x2426a | goto label_10;
| label_34:
0x000242fe cmp.w fp, 1 |
| if (fp == 1) {
0x00024302 beq.w 0x23ff0 | goto label_5;
| }
0x00024306 ldr r0, [pc, 0xec] |
0x00024308 mov r1, r8 | r1 = r8;
0x0002430a add r0, pc | r0 = 0x48704;
0x0002430c blx 0x11018 | fcn_00011018 ();
0x00024310 cmp r6, 0 |
| if (r6 != 0) {
0x00024312 bne.w 0x23f54 | goto label_1;
| }
0x00024316 b 0x23ff4 | goto label_3;
| label_31:
0x00024318 strb r0, [sl, -0x4] | *((sl - 0x4)) = r0;
0x0002431c b 0x24154 | goto label_11;
| label_18:
0x0002431e ldr r0, [pc, 0xd8] |
0x00024320 add r0, pc | r0 = 0x4871e;
0x00024322 blx 0x11018 | fcn_00011018 ();
0x00024326 mov r0, r4 | r0 = r4;
0x00024328 blx 0x10168 | fcn_00010168 ();
0x0002432c mov r0, r6 | r0 = r6;
0x0002432e blx 0xfb10 | fcn_0000fb10 ();
0x00024332 mov.w r0, -1 | r0 = -1;
0x00024336 b 0x2400e | goto label_12;
| label_13:
0x00024338 blx 0x117cc | r0 = fcn_000117cc ();
0x0002433c ldr r0, [r0] | r0 = *(r0);
0x0002433e cmp r0, 2 |
| if (r0 != 2) {
0x00024340 beq 0x2436a |
0x00024342 cmp r0, 0xd |
| if (r0 == 0xd) {
0x00024344 beq 0x2436a | goto label_37;
| }
0x00024346 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00024348 blx 0x106e4 | fcn_000106e4 ();
0x0002434c mov.w r0, -1 | r0 = -1;
0x00024350 b 0x2400e | goto label_12;
| label_14:
0x00024352 ldr r0, [pc, 0xa8] |
0x00024354 mov.w r1, 0x1000 | r1 = case.0x269a8.32;
0x00024358 add r0, pc | r0 = 0x4875a;
0x0002435a blx 0x11018 | fcn_00011018 ();
0x0002435e mov r0, r6 | r0 = r6;
0x00024360 blx 0xfb10 | fcn_0000fb10 ();
0x00024364 mov.w r0, -1 | r0 = -1;
0x00024368 b 0x2400e | goto label_12;
| }
| label_37:
0x0002436a blx 0xf5f8 | fcn_0000f5f8 ();
0x0002436e mov.w r0, -1 | r0 = -1;
0x00024372 b 0x2400e | goto label_12;
| label_22:
0x00024374 blx 0x10d58 | fcn_00010d58 ();
| label_15:
0x00024378 ldr r0, [pc, 0x84] |
0x0002437a movs r1, 0x10 | r1 = 0x10;
0x0002437c add r0, pc | r0 = 0x48780;
0x0002437e blx 0x11018 | fcn_00011018 ();
0x00024382 mov r0, r6 | r0 = r6;
0x00024384 blx 0xfb10 | fcn_0000fb10 ();
0x00024388 mov.w r0, -1 | r0 = -1;
0x0002438c b 0x2400e | goto label_12;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24404 */
| #include <stdint.h>
|
; (fcn) sym.read_config_with_type_when () | void read_config_with_type_when (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| do {
0x0000fb44 bx pc | return void (*pc)() ();
0x00024404 push {r3, r4, r5, lr} |
0x00024406 mov r4, r0 | r4 = r0;
0x00024408 mov r0, r1 | r0 = r1;
0x0002440a mov r5, r2 | r5 = r2;
0x0002440c blx 0xfea8 | r0 = fcn_0000fea8 ();
| if (r0 == 0) {
0x00024410 cbz r0, 0x24420 | goto label_0;
| }
0x00024412 mov r1, r0 | r1 = r0;
0x00024414 mov r2, r5 | r2 = r5;
0x00024416 mov r0, r4 | r0 = r4;
0x00024418 pop.w {r3, r4, r5, lr} |
0x0002441c b.w 0xfb44 |
| } while (1);
| label_0:
0x00024420 mov.w r0, -1 | r0 = -1;
0x00024424 pop {r3, r4, r5, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24428 */
| #include <stdint.h>
|
; (fcn) sym.read_config_with_type () | void read_config_with_type () {
| do {
0x00010068 bx pc | return void (*pc)() ();
0x00024428 movs r2, 2 | r2 = 2;
0x0002442a b.w 0x10068 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24430 */
| #include <stdint.h>
|
; (fcn) sym.read_configs_optional () | void read_configs_optional (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_64h;
| r0 = arg1;
| r1 = arg2;
0x00024430 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00024434 movs r3, 0 | r3 = 0;
0x00024436 ldr r5, [pc, 0xc0] |
0x00024438 sub sp, 0x6c |
0x0002443a mov r4, r0 | r4 = r0;
0x0002443c mov sl, r1 | sl = r1;
0x0002443e ldr r2, [pc, 0xbc] | r2 = *(0x244fe);
0x00024440 mov r0, r3 | r0 = r3;
0x00024442 add r5, pc | r5 = 0x48940;
0x00024444 movs r1, 6 | r1 = 6;
0x00024446 ldr r2, [r5, r2] |
0x00024448 ldr r2, [r2] | r2 = *(0x48940);
0x0002444a str r2, [sp, 0x64] | var_64h = r2;
0x0002444c mov.w r2, 0 | r2 = 0;
0x00024450 str r3, [sp, 4] | var_4h = r3;
0x00024452 blx 0xfce0 | fcn_0000fce0 ();
0x00024454 mcrr p8, 0, r2, r6, c0 | __asm ("mcrr p8, 0, r2, r6, c0");
0x00024458 it ne |
| if (r1 != 6) {
0x0002445a cmpne r4, 0 | __asm ("cmpne r4, 0");
| }
| if (r1 == 6) {
0x0002445c beq 0x244ec | goto label_1;
| }
0x0002445e mov sb, r0 | sb = r0;
0x00024460 mov r0, r4 | r0 = r4;
0x00024462 blx 0x10d18 | r0 = fcn_00010d18 ();
0x00024466 mov fp, r0 |
0x00024468 cmp r0, 0 |
| if (r0 == 0) {
0x0002446a beq 0x244ec | goto label_1;
| }
0x0002446c ldr r6, [pc, 0x90] |
0x0002446e add r7, sp, 4 | r7 += var_4h;
0x00024470 mov r2, r7 | r2 = r7;
0x00024472 mov.w r5, -1 | r5 = -1;
0x00024476 add r6, pc | r6 = 0x4897a;
0x00024478 mov r1, r6 | r1 = r6;
0x0002447a blx 0x10f3c | r0 = fcn_00010f3c ();
0x0002447e mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00024480 cbz r0, 0x244ca | goto label_2;
| }
0x00024482 add.w r8, sp, 8 | r8 += var_8h;
0x00024486 b 0x2449c |
| while (r0 != 0) {
0x00024488 mov r0, r4 | r0 = r4;
0x0002448a blx 0x106e4 | fcn_000106e4 ();
0x0002448e mov r2, r7 | r2 = r7;
0x00024490 mov r1, r6 | r1 = r6;
0x00024492 movs r0, 0 | r0 = 0;
0x00024494 blx 0x10f3c | r0 = fcn_00010f3c ();
0x00024498 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0002449a cbz r0, 0x244ca | goto label_2;
| }
| label_0:
0x0002449c mov r1, r8 | r1 = r8;
0x0002449e mov r0, r4 | r0 = r4;
0x000244a0 blx 0x116d4 | r0 = fcn_000116d4 ();
0x000244a4 cmp r0, 0 |
0x000244a6 bne 0x24488 |
| }
0x000244a8 mov r2, sl | r2 = sl;
0x000244aa mov r1, sb | r1 = sb;
0x000244ac mov r0, r4 | r0 = r4;
0x000244ae blx 0x1006c | fcn_0001006c ();
0x000244b2 mov r2, r7 | r2 = r7;
0x000244b4 cmp r0, 0 |
0x000244b6 mov r1, r6 | r1 = r6;
0x000244b8 mov.w r0, 0 | r0 = 0;
0x000244bc it eq |
| if (r0 != 0) {
0x000244be moveq r5, 0 | r5 = 0;
| }
0x000244c0 blx 0x10f3c | r0 = fcn_00010f3c ();
0x000244c4 mov r4, r0 | r4 = r0;
0x000244c6 cmp r0, 0 |
| if (r0 != 0) {
0x000244c8 bne 0x2449c | goto label_0;
| }
| label_2:
0x000244ca mov r0, fp | r0 = fp;
0x000244cc blx 0x10168 | fcn_00010168 ();
| do {
0x000244d0 ldr r2, [pc, 0x30] |
0x000244d2 ldr r3, [pc, 0x28] | r3 = *(0x244fe);
0x000244d4 add r2, pc | r2 = 0x489dc;
0x000244d6 ldr r3, [r2, r3] | r3 = *(0x489dc);
0x000244d8 ldr r2, [r3] | r2 = *(0x489dc);
0x000244da ldr r3, [sp, 0x64] | r3 = var_64h;
0x000244dc eors r2, r3 | r2 ^= r3;
0x000244de mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000244e2 bne 0x244f2 | goto label_3;
| }
0x000244e4 mov r0, r5 | r0 = r5;
0x000244e6 add sp, 0x6c |
0x000244e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x000244ec mov.w r5, -1 | r5 = -1;
0x000244f0 b 0x244d0 |
| } while (1);
| label_3:
0x000244f2 blx 0x10d58 | fcn_00010d58 ();
0x000244f6 nop |
0x000244f8 bkpt 0x6a | __asm ("bkpt 0x6a");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x246e4 */
| #include <stdint.h>
|
; (fcn) sym.read_config_files_of_type () | void read_config_files_of_type (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x000246e4 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, case.0x269a8.32");
0x000246e8 mov r7, r0 | r7 = r0;
0x000246ea sub sp, 0xc |
0x000246ec mov r5, r1 | r5 = r1;
0x000246ee movs r0, 0 | r0 = 0;
0x000246f0 movs r1, 0x20 | r1 = 0x20;
0x000246f2 blx 0x1096c | r0 = fcn_0001096c ();
0x000246f6 cmp r0, 0 |
| if (r0 != 0) {
0x000246f8 bne 0x2479e | goto label_2;
| }
0x000246fa movs r1, 6 | r1 = 6;
0x000246fc blx 0x1096c | fcn_0001096c ();
0x00024700 clz r3, r5 | r3 &= r5;
0x00024704 lsrs r3, r3, 5 | r3 >>= 5;
0x00024706 cmp r0, 0 |
0x00024708 it ne |
| if (r0 == 0) {
0x0002470a orrne r3, r3, 1 | r3 |= 1;
| }
0x0002470e cmp r3, 0 |
| if (r3 != 0) {
0x00024710 bne 0x2479e | goto label_2;
| }
0x00024712 blx 0x10464 | r0 = fcn_00010464 ();
0x00024716 mov sb, r0 | sb = r0;
0x00024718 ldr r0, [pc, 0x88] |
0x0002471a add r0, pc | r0 = 0x48ec2;
0x0002471c blx 0x10cfc | r0 = fcn_00010cfc ();
0x00024720 mov r8, r0 | r8 = r0;
0x00024722 ldr r0, [pc, 0x84] |
0x00024724 add r0, pc | r0 = 0x48ed2;
0x00024726 blx 0x10cfc | fcn_00010cfc ();
0x00024728 invalid |
0x0002472a mov r6, r0 | r6 = r0;
0x0002472c blx 0x10d80 | fcn_00010d80 ();
0x00024730 blx 0x10d18 | r0 = fcn_00010d18 ();
0x00024734 mov r4, r0 | r4 = r0;
| if (r6 == 0) {
0x00024736 cbz r6, 0x2475e | goto label_3;
| }
0x00024738 mov r1, r5 | r1 = r5;
0x0002473a mov r2, r7 | r2 = r7;
0x0002473c mov r0, r6 | r0 = r6;
0x0002473e mov r3, r4 | r3 = r4;
0x00024740 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00024744 bl 0x24508 | r0 = fcn_00024508 (r0, r1, r2, r3, r4);
0x00024748 subs r5, r0, 0 | r5 = r0 - 0;
0x0002474a it ne |
| if (r5 == r0) {
0x0002474c movne r5, 1 | r5 = 1;
| }
0x0002474e rsbs r5, r5, 0 | r5 -= ;
| do {
| label_0:
0x00024750 mov r0, r4 | r0 = r4;
0x00024752 blx 0x10168 | fcn_00010168 ();
| label_1:
0x00024756 mov r0, r5 | r0 = r5;
0x00024758 add sp, 0xc |
0x0002475a pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_3:
0x0002475e mov r3, r4 | r3 = r4;
0x00024760 mov r1, r5 | r1 = r5;
0x00024762 mov r2, r7 | r2 = r7;
0x00024764 mov r0, sb | r0 = sb;
0x00024766 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0002476a bl 0x24508 | r0 = fcn_00024508 (r0, r1, r2, r3, r4);
0x0002476e mov r6, r0 | r6 = r0;
0x00024770 mov r0, r4 | r0 = r4;
0x00024772 blx 0x10168 | fcn_00010168 ();
0x00024776 blx 0x10d80 | fcn_00010d80 ();
0x00024778 add.w r7, r4, ip, asr 31 | r7 = r4 + (ip >> 31);
0x0002477c pkhtb r6, lr, sb, asr 0x10 | __asm ("pkhtb r6, lr, sb, asr 0x10");
0x00024780 mov r2, r7 | r2 = r7;
0x00024782 mov r3, r0 | r3 = r0;
0x00024784 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00024788 mov r4, r0 | r4 = r0;
0x0002478a bl 0x24508 | r0 = fcn_00024508 (r0, r1, r2, r3, r4);
0x0002478e mov r5, r0 | r5 = r0;
0x00024790 cmp r0, 0 |
0x00024792 beq 0x24750 |
| } while (r0 == 0);
0x00024794 subs r3, r6, 0 | r3 = r6 - 0;
0x00024796 it ne |
| if (r3 == r6) {
0x00024798 movne r3, 1 | r3 = 1;
| }
0x0002479a rsbs r5, r3, 0 | r5 = r3 - ;
0x0002479c b 0x24750 | goto label_0;
| label_2:
0x0002479e mov.w r5, -1 | r5 = -1;
0x000247a2 b 0x24756 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x247ac */
| #include <stdint.h>
|
; (fcn) sym.read_config_files () | void read_config_files (uint32_t arg1) {
| r0 = arg1;
0x000247ac ldr r3, [pc, 0x5c] |
0x000247ae cmp r0, 1 |
0x000247b0 ldr r1, [pc, 0x5c] | r1 = *(0x24810);
0x000247b2 ldr r2, [pc, 0x60] |
0x000247b4 add r3, pc | r3 = 0x48fc4;
0x000247b6 push {r4, r5, r6, lr} |
0x000247b8 ldr r1, [r3, r1] | r1 = *(0x48fc4);
0x000247ba mov.w r4, 0 | r4 = 0;
0x000247be add r2, pc | r2 = 0x48fd8;
0x000247c0 mov r6, r0 | r6 = r0;
0x000247c2 str r4, [r2, 0xc] | *((r2 + 0xc)) = r4;
0x000247c4 ldr r4, [r1] | r4 = *(0x48fc4);
| if (r0 == 1) {
0x000247c6 beq 0x247f8 | goto label_3;
| }
| if (r4 == 0) {
0x000247c8 cbz r4, 0x24806 | goto label_4;
| }
| label_0:
0x000247ca mov.w r5, -1 | r5 = -1;
| do {
0x000247ce mov r1, r4 | r1 = r4;
0x000247d0 mov r0, r6 | r0 = r6;
0x000247d2 blx 0x10c08 | fprintf_chk ()
0x000247d6 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x000247d8 cmp r0, 0 |
0x000247da it eq |
| if (r0 != 0) {
0x000247dc moveq r5, 0 | r5 = 0;
| }
0x000247de cmp r4, 0 |
0x000247e0 bne 0x247ce |
| } while (r4 != 0);
| label_1:
0x000247e2 ldr r3, [pc, 0x34] |
0x000247e4 add r3, pc | r3 = 0x49002;
0x000247e6 ldr r2, [r3, 0xc] | r2 = *(0x4900e);
| if (r2 != 0) {
0x000247e8 cbz r2, 0x247f4 |
0x000247ea ldr r1, [pc, 0x30] |
0x000247ec movs r0, 3 | r0 = 3;
0x000247ee add r1, pc | r1 = 0x49010;
0x000247f0 blx 0x11494 | fcn_00011494 ();
| }
| label_2:
0x000247f4 mov r0, r5 | r0 = r5;
0x000247f6 pop {r4, r5, r6, pc} |
| label_3:
0x000247f8 blx 0xf51c | fcn_0000f51c ();
0x000247fc cmp r4, 0 |
| if (r4 != 0) {
0x000247fe bne 0x247ca | goto label_0;
| }
0x00024800 mov.w r5, -1 | r5 = -1;
0x00024804 b 0x247e2 | goto label_1;
| label_4:
0x00024806 mov.w r5, -1 | r5 = -1;
0x0002480a b 0x247f4 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24820 */
| #include <stdint.h>
|
; (fcn) sym.read_configs () | void read_configs () {
0x00024820 push {r4, lr} |
0x00024822 movs r1, 5 | r1 = 5;
0x00024824 movs r0, 0 | r0 = 0;
0x00024826 blx 0xfce0 | fcn_0000fce0 ();
0x0002482a movs r2, 0 | r2 = 0;
0x0002482c mov r4, r0 | r4 = r0;
0x0002482e movs r1, 7 | r1 = 7;
0x00024830 mov r0, r2 | r0 = r2;
0x00024832 blx 0xf958 | fcn_0000f958 ();
| if (r4 == 0) {
0x00024836 cbz r4, 0x24874 | goto label_0;
| }
0x00024838 ldrb r3, [r4] | r3 = *(r4);
0x0002483a cmp r3, 0x2d |
| if (r3 == 0x2d) {
0x0002483c beq 0x2486c | goto label_1;
| }
0x0002483e movs r0, 0 | r0 = 0;
0x00024840 blx 0xfbf8 | fcn_0000fbf8 ();
0x00024844 movs r1, 0 | r1 = 0;
0x00024846 mov r0, r4 | r0 = r4;
0x00024848 blx 0x101dc | fcn_000101dc ();
| do {
0x0002484c movs r1, 1 | r1 = 1;
0x0002484e movs r0, 0 | r0 = 0;
0x00024850 blx 0x10158 | fcn_00010158 ();
0x00024854 movs r2, 1 | r2 = 1;
0x00024856 movs r1, 0x1b | r1 = 0x1b;
0x00024858 movs r0, 0 | r0 = 0;
0x0002485a blx 0xf8c4 | clock_gettime ();
0x0002485e movs r2, 0 | r2 = 0;
0x00024860 pop.w {r4, lr} |
0x00024864 mov r1, r2 | r1 = r2;
0x00024866 mov r0, r2 | r0 = r2;
0x00024868 b.w 0xf954 | void (*0xf954)() ();
| label_1:
0x0002486c movs r1, 0 | r1 = 0;
0x0002486e adds r0, r4, 1 | r0 = r4 + 1;
0x00024870 blx 0x101dc | fcn_000101dc ();
| label_0:
0x00024874 movs r0, 0 | r0 = 0;
0x00024876 blx 0xfbf8 | fcn_0000fbf8 ();
0x0002487a b 0x2484c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x2491c */
| #include <stdint.h>
|
; (fcn) sym.read_config_save_octet_string () | void read_config_save_octet_string (int16_t arg1, uint32_t arg2, uint32_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0002491c cmp r2, 0 |
0x0002491e it ne |
| if (r2 != 0) {
0x00024920 cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
0x00024922 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00024926 mov r7, r0 | r7 = r0;
0x00024928 sub sp, 8 |
0x0002492a mov r6, r1 | r6 = r1;
| if (r2 == 0) {
0x0002492c beq 0x249ce | goto label_1;
| }
0x0002492e mov r5, r2 | r5 = r2;
0x00024930 blx 0x10cf0 | r0 = fcn_00010cf0 ();
0x00024934 ldr r2, [r0] | r2 = *(r0);
0x00024936 subs r1, r6, 1 | r1 = r6 - 1;
0x00024938 mov r4, r1 | r4 = r1;
0x0002493a mov.w lr, 0 | lr = 0;
| do {
0x0002493e ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00024942 add.w lr, lr, 1 | lr++;
0x00024946 ldrh.w ip, [r2, r3, lsl 1] | offset_0 = r3 << 1;
| ip = *((r2 + offset_0));
0x0002494a sub.w r3, r3, 0x20 | r3 -= 0x20;
0x0002494e clz r3, r3 | r3 &= r3;
0x00024952 lsrs r3, r3, 5 | r3 >>= 5;
0x00024954 and ip, ip, 0xc00 |
0x00024958 cmp.w ip, 0 |
0x0002495c it ne |
| if (ip == 0) {
0x0002495e orrne r3, r3, 1 | r3 |= 1;
| }
| if (r3 == 0) {
0x00024962 cbz r3, 0x2498a | goto label_2;
| }
0x00024964 cmp r5, lr |
0x00024966 bhi 0x2493e |
| } while (r5 > lr);
| if (r5 == lr) {
0x00024968 bne 0x2498a |
0x0002496a movs r4, 0x22 | r4 = 0x22;
0x0002496c mov r2, r5 | r2 = r5;
0x0002496e strb r4, [r7], 1 | *(r7) = r4;
| r7++;
0x00024972 mov r1, r6 | r1 = r6;
0x00024974 mov r0, r7 | r0 = r7;
0x00024976 blx 0x1063c | fcn_0001063c ();
0x0002497a adds r3, r7, r5 | r3 = r7 + r5;
0x0002497c movs r2, 0 | r2 = 0;
0x0002497e adds r0, r3, 1 | r0 = r3 + 1;
0x00024980 strb r4, [r7, r5] | *((r7 + r5)) = r4;
0x00024982 strb r2, [r3, 1] | *((r3 + 1)) = r2;
| label_0:
0x00024984 add sp, 8 |
0x00024986 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x00024988 strh r0, [r6, 0x3e] | *((r6 + 0x3e)) = r0;
| }
| label_2:
0x0002498a ldr r3, [pc, 0x68] |
0x0002498c mov sb, r7 | sb = r7;
0x0002498e ldr.w sl, [pc, 0x68] |
0x00024992 add.w r8, r5, -1 | r8 = r5 + -1;
0x00024996 add r8, r6 | r8 += r6;
0x00024998 mov r4, r1 | r4 = r1;
0x0002499a add r3, pc | r3 = 0x49394;
0x0002499c ldrh r2, [r3] | r2 = *(r3);
0x0002499e add sl, pc | sl = 0x4939c;
0x000249a0 ldrb r3, [r3, 2] | r3 = *((r3 + 2));
0x000249a2 strh r2, [r7] | *(r7) = r2;
0x000249a4 strb r3, [sb, 2]! | *((sb += 2)) = r3;
0x000249a8 mov r6, sb | r6 = sb;
| do {
0x000249aa ldrb r7, [r4, 1]! | r7 = *((r4 += 1));
0x000249ae mov r0, r6 | r0 = r6;
0x000249b0 mov r3, sl | r3 = sl;
0x000249b2 mov.w r2, -1 | r2 = -1;
0x000249b6 movs r1, 1 | r1 = 1;
0x000249b8 adds r6, 2 | r6 += 2;
0x000249ba str r7, [sp] | *(sp) = r7;
0x000249bc blx 0x114a0 | fcn_000114a0 ();
0x000249c0 cmp r8, r4 |
0x000249c2 bne 0x249aa |
| } while (r8 != r4);
0x000249c4 add.w r0, sb, r5, lsl 1 | r0 = sb + (r5 << 1);
0x000249c8 add sp, 8 |
0x000249ca pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_1:
0x000249ce adds r0, 2 | r0 += 2;
| if (r1 == 0) {
0x000249d0 cbnz r1, 0x249e4 |
0x000249d2 ldr r3, [pc, 0x28] |
0x000249d4 add r3, pc | r3 = 0x493d6;
0x000249d6 ldrh r2, [r3] | r2 = *(r3);
0x000249d8 ldrb r3, [r3, 2] | r3 = *((r3 + 2));
0x000249da strh r2, [r7] | *(r7) = r2;
0x000249dc strb r3, [r7, 2] | *((r7 + 2)) = r3;
0x000249de add sp, 8 |
0x000249e0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x000249e4 ldr r3, [pc, 0x18] |
0x000249e6 add r3, pc | r3 = 0x493ea;
0x000249e8 ldrh r2, [r3] | r2 = *(r3);
0x000249ea ldrb r3, [r3, 2] | r3 = *((r3 + 2));
0x000249ec strh r2, [r7] | *(r7) = r2;
0x000249ee strb r3, [r7, 2] | *((r7 + 2)) = r3;
0x000249f0 b 0x24984 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24a04 */
| #include <stdint.h>
|
; (fcn) sym.read_config_read_octet_string_const () | void read_config_read_octet_string_const (uint32_t arg1, uint32_t arg2, uint32_t arg3) {
| int16_t var_0h_2;
| int16_t c;
| int16_t var_8h;
| int16_t var_1000h;
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00024a04 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00024a08 cmp r2, 0 |
0x00024a0a it ne |
| if (r2 != 0) {
0x00024a0c cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
0x00024a0e mov r7, r1 | r7 = r1;
0x00024a10 ldr r1, [pc, 0x18c] |
0x00024a12 mov r6, r2 | r6 = r2;
0x00024a14 sub.w sp, sp, 0x1000 |
0x00024a18 ldr r2, [pc, 0x188] | r2 = *(0x24ba4);
0x00024a1a sub sp, 0xc |
0x00024a1c add r1, pc | r1 = 0x495c0;
0x00024a1e ite eq |
| if (r2 != 0) {
0x00024a20 moveq r3, 1 | r3 = 1;
| }
| if (r2 == 0) {
0x00024a22 movne r3, 0 | r3 = 0;
| }
0x00024a24 add.w r5, sp, 0x1000 | r5 += var_1000h;
0x00024a28 ldr r2, [r1, r2] |
0x00024a2a cmp r0, 0 |
0x00024a2c it eq |
| if (r0 != 0) {
0x00024a2e orreq r3, r3, 1 | r3 |= 1;
| }
0x00024a32 adds r5, 4 | r5 += 4;
0x00024a34 ldr r2, [r2] | r2 = *(0x495c0);
0x00024a36 str r2, [r5] | *(r5) = r2;
0x00024a38 mov.w r2, 0 | r2 = 0;
0x00024a3c cmp r3, 0 |
| if (r3 != 0) {
0x00024a3e bne 0x24ae4 | goto label_3;
| }
0x00024a40 ldr r1, [pc, 0x164] |
0x00024a42 movs r2, 2 | r2 = 2;
0x00024a44 mov r4, r0 | r4 = r0;
0x00024a46 add r1, pc | r1 = 0x495f2;
0x00024a48 blx 0x10bfc | r0 = fcn_00010bfc ();
| if (r0 != 0) {
0x00024a4c cbz r0, 0x24a8c |
0x00024a4e ldr r1, [r7] | r1 = *(r7);
0x00024a50 cmp r1, 0 |
| if (r1 == 0) {
0x00024a52 beq 0x24af2 | goto label_4;
| }
0x00024a54 mov r0, r4 | r0 = r4;
0x00024a56 ldr r2, [r6] | r2 = *(r6);
0x00024a58 blx 0xfb58 | strchr (r0, r1);
0x00024a5c ldr r3, [r6] | r3 = *(r6);
0x00024a5e mov r4, r0 | r4 = r0;
0x00024a60 cmp r3, 0 |
| if (r3 != 0) {
0x00024a62 bne 0x24ae8 | goto label_5;
| }
| label_0:
0x00024a64 ldr r2, [pc, 0x144] |
0x00024a66 add.w r1, sp, 0x1000 | r1 += var_1000h;
0x00024a6a ldr r3, [pc, 0x138] | r3 = *(0x24ba6);
0x00024a6c adds r1, 4 | r1 += 4;
0x00024a6e add r2, pc | r2 = 0x4961e;
0x00024a70 ldr r3, [r2, r3] | r3 = *(0x4961e);
0x00024a72 ldr r2, [r3] | r2 = *(0x4961e);
0x00024a74 ldr r3, [r1] | r3 = *(r1);
0x00024a76 eors r2, r3 | r2 ^= r3;
0x00024a78 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00024a7c bne.w 0x24b9c | goto label_6;
| }
0x00024a80 mov r0, r4 | r0 = r4;
0x00024a82 add.w sp, sp, 0x1000 |
0x00024a86 add sp, 0xc |
0x00024a88 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00024a8c adds r4, 2 | r4 += 2;
0x00024a8e mov r0, r4 | r0 = r4;
0x00024a90 blx 0x10f80 | r0 = fcn_00010f80 ();
0x00024a94 cmp r0, 0 |
| if (r0 == 0) {
0x00024a96 beq 0x24b22 | goto label_7;
| }
0x00024a98 subs r0, r0, r4 | r0 -= r4;
| label_1:
0x00024a9a ands sb, r0, 1 | sb = r0 & 1;
| if (sb != r0) {
0x00024a9e bne 0x24b8e | goto label_8;
| }
0x00024aa0 ldr r5, [r7] | r5 = *(r7);
0x00024aa2 lsr.w r8, r0, 1 | r8 = r0 >> 1;
0x00024aa6 cmp r5, 0 |
| if (r5 == 0) {
0x00024aa8 beq 0x24b7c | goto label_9;
| }
0x00024aaa ldr r2, [r6] | r2 = *(r6);
0x00024aac cmp r2, r8 |
| if (r2 < r8) {
0x00024aae bls 0x24b3e | goto label_10;
| }
| label_2:
0x00024ab0 cmp.w r8, 0 |
| if (r8 == 0) {
0x00024ab4 beq 0x24b2a | goto label_11;
| }
0x00024ab6 ldr.w fp, [pc, 0xf8] |
0x00024aba add.w r7, r5, r8 | r7 = r5 + r8;
0x00024abe add.w sl, sp, 8 | sl += var_8h;
0x00024ac2 mov sb, sp | sb = sp;
0x00024ac4 add fp, pc | fp = 0x4967a;
0x00024ac6 b 0x24ad6 |
| while (r0 == 1) {
0x00024ac8 ldr r3, [sl, -0x8] | r3 = *((sl - 0x8));
0x00024acc adds r4, 2 | r4 += 2;
0x00024ace strb r3, [r5], 1 | *(r5) = r3;
| r5++;
0x00024ad2 cmp r7, r5 |
| if (r7 == r5) {
0x00024ad4 beq 0x24b2c | goto label_12;
| }
0x00024ad6 mov r2, sb | r2 = sb;
0x00024ad8 mov r1, fp | r1 = fp;
0x00024ada mov r0, r4 | r0 = r4;
0x00024adc blx 0xfa2c | r0 = fcn_0000fa2c ();
0x00024ae0 cmp r0, 1 |
0x00024ae2 beq 0x24ac8 |
| }
| do {
| label_3:
0x00024ae4 movs r4, 0 | r4 = 0;
0x00024ae6 b 0x24a64 | goto label_0;
| label_5:
0x00024ae8 ldr r0, [r7] | r0 = *(r7);
0x00024aea blx 0x10548 | fcn_00010548 ();
0x00024aee str r0, [r6] | *(r6) = r0;
0x00024af0 b 0x24a64 | goto label_0;
| label_4:
0x00024af2 add r5, sp, 4 | r5 += c;
0x00024af4 mov.w r2, 0x1000 | r2 = case.0x269a8.32;
0x00024af8 mov r1, r5 | r1 = r5;
0x00024afa mov r0, r4 | r0 = r4;
0x00024afc blx 0xfb58 | r0 = strchr (r0, r1);
0x00024b00 mov r4, r0 | r4 = r0;
0x00024b02 mov r0, r5 | r0 = r5;
0x00024b04 blx 0x10548 | fcn_00010548 ();
0x00024b08 str r0, [r6] | *(r6) = r0;
0x00024b0a adds r0, 1 | r0++;
0x00024b0c blx 0x10d34 | fcn_00010d34 ();
0x00024b10 str r0, [r7] | *(r7) = r0;
0x00024b12 cmp r0, 0 |
0x00024b14 beq 0x24ae4 |
| } while (r0 == 0);
0x00024b16 ldr r2, [r6] | r2 = *(r6);
0x00024b18 mov r1, r5 | r1 = r5;
0x00024b1a adds r2, 1 | r2++;
0x00024b1c blx 0x1063c | fcn_0001063c ();
0x00024b20 b 0x24a64 | goto label_0;
| label_7:
0x00024b22 mov r0, r4 | r0 = r4;
0x00024b24 blx 0x10548 | fcn_00010548 ();
0x00024b28 b 0x24a9a | goto label_1;
| label_11:
0x00024b2a mov r7, r5 | r7 = r5;
| label_12:
0x00024b2c movs r3, 0 | r3 = 0;
0x00024b2e mov r0, r4 | r0 = r4;
0x00024b30 strb r3, [r7] | *(r7) = r3;
0x00024b32 str.w r8, [r6] | __asm ("str.w r8, [r6]");
0x00024b36 blx 0xfb04 | r0 = fcn_0000fb04 ();
0x00024b3a mov r4, r0 | r4 = r0;
0x00024b3c b 0x24a64 | goto label_0;
| label_10:
0x00024b3e ldr r1, [pc, 0x74] |
0x00024b40 mov r3, r8 | r3 = r8;
0x00024b42 movs r0, 4 | r0 = 4;
0x00024b44 add r1, pc | r1 = 0x496fe;
0x00024b46 blx 0x11494 | fcn_00011494 ();
0x00024b4a mov r0, r4 | r0 = r4;
0x00024b4c str.w sb, [r6] | __asm ("str.w sb, [r6]");
0x00024b50 blx 0x10f80 | fcn_00010f80 ();
0x00024b54 ldr r2, [pc, 0x60] |
0x00024b56 add.w r1, sp, 0x1000 | r1 += var_1000h;
0x00024b58 str r0, [r0, r6] | *((r0 + r6)) = r0;
0x00024b5a ldr r3, [pc, 0x48] | r3 = *(0x24ba6);
0x00024b5c adds r1, 4 | r1 += 4;
0x00024b5e add r2, pc | r2 = 0x4971a;
0x00024b60 ldr r3, [r2, r3] | r3 = *(0x4971a);
0x00024b62 ldr r2, [r3] | r2 = *(0x4971a);
0x00024b64 ldr r3, [r1] | r3 = *(0x496fe);
0x00024b66 eors r2, r3 | r2 ^= r3;
0x00024b68 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00024b6c bne 0x24b9c | goto label_6;
| }
0x00024b6e add.w sp, sp, 0x1000 |
0x00024b72 add sp, 0xc |
0x00024b74 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00024b78 b.w 0xfb00 | void (*0xfb00)() ();
| label_9:
0x00024b7c add.w r0, r8, 1 | r0 = r8 + 1;
0x00024b80 blx 0x10d34 | r0 = fcn_00010d34 ();
0x00024b84 mov r5, r0 | r5 = r0;
0x00024b86 str r0, [r7] | *(r7) = r0;
0x00024b88 cmp r0, 0 |
| if (r0 != 0) {
0x00024b8a bne 0x24ab0 | goto label_2;
| }
0x00024b8c b 0x24ae4 | goto label_3;
| label_8:
0x00024b8e ldr r1, [pc, 0x2c] |
0x00024b90 movs r0, 4 | r0 = 4;
0x00024b92 movs r4, 0 | r4 = 0;
0x00024b94 add r1, pc | r1 = 0x49756;
0x00024b96 blx 0x11494 | fcn_00011494 ();
0x00024b9a b 0x24a64 | goto label_0;
| label_6:
0x00024b9c blx 0x10d58 | fcn_00010d58 ();
0x00024ba0 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24bc0 */
| #include <stdint.h>
|
; (fcn) sym.read_config_read_octet_string () | void read_config_read_octet_string () {
| do {
0x00010a90 invalid | void (*0x10a94)() ();
0x00024bc0 b.w 0x10a90 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24bc4 */
| #include <stdint.h>
|
; (fcn) sym.read_config_save_objid () | void read_config_save_objid (int16_t arg1, int16_t arg2, uint32_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00024bc4 cmp r2, 0 |
0x00024bc6 push.w {r4, r5, r6, r7, r8, lr} |
0x00024bca mov r4, r0 | r4 = r0;
0x00024bcc sub sp, 8 |
| if (r2 == 0) {
0x00024bce beq 0x24c06 | goto label_0;
| }
| if (r2 <= 0) {
0x00024bd0 ble 0x24bfe | goto label_1;
| }
0x00024bd2 ldr.w r8, [pc, 0x54] |
0x00024bd6 add.w r7, r1, r2, lsl 2 | r7 = r1 + (r2 << 2);
0x00024bda mov r5, r1 | r5 = r1;
0x00024bdc add r8, pc | r8 = 0x4980a;
| do {
0x00024bde ldr r6, [r5], 4 | r6 = *(r5);
| r5 += 4;
0x00024be2 mov r3, r8 | r3 = r8;
0x00024be4 mov.w r2, -1 | r2 = -1;
0x00024be8 movs r1, 1 | r1 = 1;
0x00024bea mov r0, r4 | r0 = r4;
0x00024bec str r6, [sp] | *(sp) = r6;
0x00024bee blx 0x114a0 | fcn_000114a0 ();
0x00024bf2 mov r0, r4 | r0 = r4;
0x00024bf4 blx 0x10548 | fcn_00010548 ();
0x00024bf8 cmp r5, r7 |
0x00024bfa add r4, r0 | r4 += r0;
0x00024bfc bne 0x24bde |
| } while (r5 != r7);
| label_1:
0x00024bfe mov r0, r4 | r0 = r4;
0x00024c00 add sp, 8 |
0x00024c02 pop.w {r4, r5, r6, r7, r8, pc} |
| label_0:
0x00024c06 blx 0x10548 | fcn_00010548 ();
0x00024c0a ldr r2, [pc, 0x20] |
0x00024c0c adds r1, r4, r0 | r1 = r4 + r0;
0x00024c0e mov r3, r0 | r3 = r0;
0x00024c10 add r2, pc | r2 = 0x49842;
0x00024c12 ldr r0, [r2] | r0 = *(0x49842);
0x00024c14 ldrb r2, [r2, 4] | r2 = *((r2 + 4));
0x00024c16 str r0, [r4, r3] | *((r4 + r3)) = r0;
0x00024c18 adds r3, 4 | r3 += 4;
0x00024c1a add r4, r3 | r4 += r3;
0x00024c1c strb r2, [r1, 4] | *((r1 + 4)) = r2;
0x00024c1e mov r0, r4 | r0 = r4;
0x00024c20 add sp, 8 |
0x00024c22 pop.w {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24c30 */
| #include <stdint.h>
|
; (fcn) sym.read_config_read_objid_const () | void read_config_read_objid_const (int16_t arg_a04h, uint32_t arg1, uint32_t arg2, uint32_t arg3) {
| int16_t var_a0ch;
| int16_t c;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| do {
0x00010f9c invalid | void (*0x10fa0)() ();
0x00024c30 cmp r2, 0 |
0x00024c32 it ne |
| if (r2 != 0) {
0x00024c34 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x00024c36 push {r4, r5, r6, r7, lr} |
0x00024c38 ite eq |
| if (r2 != 0) {
0x00024c3a moveq r3, 1 | r3 = 1;
| }
| if (r2 == 0) {
0x00024c3c movne r3, 0 | r3 = 0;
| }
0x00024c3e cmp r1, 0 |
0x00024c40 it eq |
| if (r1 != 0) {
0x00024c42 orreq r3, r3, 1 | r3 |= 1;
| }
0x00024c46 mov r5, r1 | r5 = r1;
0x00024c48 ldr r1, [pc, 0xa8] |
0x00024c4a mov r6, r2 | r6 = r2;
0x00024c4c ldr r2, [pc, 0xa8] | r2 = *(0x24cf8);
0x00024c4e subw sp, sp, 0xa0c | __asm ("subw sp, sp, case.0x269a8.32");
0x00024c52 add r1, pc | r1 = 0x4994a;
0x00024c54 ldr r2, [r1, r2] |
0x00024c56 ldr r2, [r2] | r2 = *(0x4994a);
0x00024c58 str.w r2, [sp, 0xa04] | __asm ("str.w r2, [arg_a04h]");
0x00024c5c mov.w r2, 0 | r2 = 0;
| if (r3 != 0) {
0x00024c60 cbnz r3, 0x24cbc | goto label_2;
| }
0x00024c62 ldr r3, [r5] | r3 = *(r5);
0x00024c64 mov r4, r0 | r4 = r0;
0x00024c66 cmp r3, 0 |
| if (r3 == 0) {
0x00024c68 beq 0x24cda | goto label_3;
| }
| label_1:
0x00024c6a ldr r1, [pc, 0x90] |
0x00024c6c movs r2, 4 | r2 = 4;
0x00024c6e mov r0, r4 | r0 = r4;
0x00024c70 add r1, pc | r1 = 0x49972;
0x00024c72 blx 0x11524 | r0 = fcn_00011524 ();
| if (r0 != 0) {
0x00024c76 cbnz r0, 0x24c9e | goto label_4;
| }
0x00024c78 str r0, [r6] | *(r6) = r0;
| label_0:
0x00024c7a ldr r2, [pc, 0x84] |
0x00024c7c ldr r3, [pc, 0x78] | r3 = *(0x24cf8);
0x00024c7e add r2, pc | r2 = 0x49984;
0x00024c80 ldr r3, [r2, r3] | r3 = *(0x49984);
0x00024c82 ldr r2, [r3] | r2 = *(0x49984);
0x00024c84 ldr.w r3, [sp, 0xa04] | r3 = *(arg_a04h);
0x00024c88 eors r2, r3 | r2 ^= r3;
0x00024c8a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00024c8e bne 0x24cf0 | goto label_5;
| }
0x00024c90 mov r0, r4 | r0 = r4;
0x00024c92 addw sp, sp, 0xa0c | __asm ("addw sp, var_a0ch");
0x00024c96 pop.w {r4, r5, r6, r7, lr} |
0x00024c9a b.w 0x10f9c |
| } while (1);
| label_4:
0x00024c9e add r7, sp, 4 | r7 += c;
0x00024ca0 mov.w r2, 0xa00 | r2 = case.0x269a8.32;
0x00024ca4 mov r1, r7 | r1 = r7;
0x00024ca6 mov r0, r4 | r0 = r4;
0x00024ca8 blx 0xfb58 | strchr (r0, r1);
0x00024cac ldr r1, [r5] | r1 = *(r5);
0x00024cae mov r2, r6 | r2 = r6;
0x00024cb0 mov r0, r7 | r0 = r7;
0x00024cb2 blx 0x110a8 | r0 = fcn_000110a8 ();
0x00024cb6 cmp r0, 0 |
| if (r0 != 0) {
0x00024cb8 bne 0x24c7a | goto label_0;
| }
0x00024cba str r0, [r6] | *(r6) = r0;
| do {
| label_2:
0x00024cbc ldr r2, [pc, 0x44] |
0x00024cbe ldr r3, [pc, 0x38] | r3 = *(0x24cfa);
0x00024cc0 add r2, pc | r2 = 0x499c8;
0x00024cc2 ldr r3, [r2, r3] | r3 = *(0x499c8);
0x00024cc4 ldr r2, [r3] | r2 = *(0x499c8);
0x00024cc6 ldr.w r3, [sp, 0xa04] | r3 = *(arg_a04h);
0x00024cc8 subs r2, 4 | r2 -= 4;
0x00024cca eors r2, r3 | r2 ^= r3;
0x00024ccc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00024cd0 bne 0x24cf0 | goto label_5;
| }
0x00024cd2 movs r0, 0 | r0 = 0;
0x00024cd4 addw sp, sp, 0xa0c | __asm ("addw sp, var_a0ch");
0x00024cd8 pop {r4, r5, r6, r7, pc} |
| label_3:
0x00024cda mov.w r0, 0x200 | r0 = case.0x269a8.32;
0x00024cde str r3, [r6] | *(r6) = r3;
0x00024ce0 blx 0x10d34 | fcn_00010d34 ();
0x00024ce4 str r0, [r5] | *(r5) = r0;
0x00024ce6 cmp r0, 0 |
0x00024ce8 beq 0x24cbc |
| } while (r0 == 0);
0x00024cea movs r3, 0x80 | r3 = 0x80;
0x00024cec str r3, [r6] | *(r6) = r3;
0x00024cee b 0x24c6a | goto label_1;
| label_5:
0x00024cf0 blx 0x10d58 | fcn_00010d58 ();
0x00024cf4 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24d08 */
| #include <stdint.h>
|
; (fcn) sym.read_config_read_objid () | void read_config_read_objid () {
| do {
0x00010e58 invalid | void (*0x10e5c)() ();
0x00024d08 b.w 0x10e58 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24d0c */
| #include <stdint.h>
|
; (fcn) sym.read_config_read_data () | uint32_t read_config_read_data (uint32_t arg1, uint32_t arg2, uint32_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| label_2:
0x00011510 bx pc | return void (*pc)() ();
| do {
| label_1:
0x00011848 bx pc | return void (*pc)() ();
0x00024d0c cmp r2, 0 |
0x00024d0e it ne |
| if (r2 != 0) {
0x00024d10 cmpne r1, 0 | __asm ("cmpne r1, 0");
| }
| if (r2 == 0) {
0x00024d12 beq 0x24da6 | goto label_3;
| }
0x00024d14 cmp r0, 6 |
0x00024d16 push {r3, r4, r5, lr} |
0x00024d18 mov r5, r2 | r5 = r2;
0x00024d1a mov r4, r1 | r4 = r1;
| if (r0 == 6) {
0x00024d1c beq 0x24d98 | goto label_4;
| }
| if (r0 <= 6) {
0x00024d1e ble 0x24d44 | goto label_5;
| }
0x00024d20 cmp r0, 0x40 |
| if (r0 == 0x40) {
0x00024d22 beq 0x24d72 | goto label_6;
| }
0x00024d24 subs r0, 0x42 | r0 -= 0x42;
0x00024d26 cmp r0, 1 |
| if (r0 >= 1) {
0x00024d28 bls 0x24d2e |
| label_0:
0x00024d2a movs r0, 0 | r0 = 0;
0x00024d2c pop {r3, r4, r5, pc} |
| }
0x00024d2e movs r2, 0 | r2 = 0;
0x00024d30 mov r0, r1 | r0 = r1;
0x00024d32 mov r1, r2 | r1 = r2;
0x00024d34 blx 0x105c0 | fcn_000105c0 ();
0x00024d38 str r0, [r5] | *(r5) = r0;
0x00024d3a mov r0, r4 | r0 = r4;
0x00024d3c pop.w {r3, r4, r5, lr} |
0x00024d40 b.w 0x11848 |
| } while (1);
| label_5:
0x00024d44 cmp r0, 2 |
| if (r0 == 2) {
0x00024d46 beq 0x24d5c | goto label_7;
| }
0x00024d48 subs r0, 3 | r0 -= 3;
0x00024d4a cmp r0, 1 |
| if (r0 > 1) {
0x00024d4c bhi 0x24d2a | goto label_0;
| }
0x00024d4e mov r2, r3 | r2 = r3;
0x00024d50 mov r1, r5 | r1 = r5;
0x00024d52 mov r0, r4 | r0 = r4;
0x00024d54 pop.w {r3, r4, r5, lr} |
0x00024d58 b.w 0x117e4 | void (*0x117e4)() ();
0x00024d5a pop {r2, r6, pc} |
| label_7:
0x00024d5c mov r0, r4 | r0 = r4;
0x00024d5e movs r2, 0xa | r2 = 0xa;
0x00024d60 movs r1, 0 | r1 = 0;
0x00024d62 blx 0x107c8 | fcn_000107c8 ();
0x00024d66 str r0, [r5] | *(r5) = r0;
0x00024d68 mov r0, r4 | r0 = r4;
0x00024d6a pop.w {r3, r4, r5, lr} |
0x00024d6e b.w 0x11848 | goto label_1;
| label_6:
0x00024d72 mov r0, r1 | r0 = r1;
0x00024d74 blx 0xfa94 | fcn_0000fa94 ();
0x00024d78 str r0, [r5] | *(r5) = r0;
0x00024d7a adds r0, 1 | r0++;
| if (r0 != 1) {
0x00024d7c bne 0x24d8e | goto label_8;
| }
0x00024d7e ldr r1, [pc, 0x2c] |
0x00024d80 movs r2, 0xf | r2 = 0xf;
0x00024d82 mov r0, r4 | r0 = r4;
0x00024d84 add r1, pc | r1 = 0x49b36;
0x00024d86 blx 0x11524 | r0 = fcn_00011524 ();
0x00024d8a cmp r0, 0 |
| if (r0 != 0) {
0x00024d8c bne 0x24d2a | goto label_0;
| }
| label_8:
0x00024d8e mov r0, r4 | r0 = r4;
0x00024d90 pop.w {r3, r4, r5, lr} |
0x00024d94 b.w 0x11848 | goto label_1;
| label_4:
0x00024d98 mov r2, r3 | r2 = r3;
0x00024d9a mov r1, r5 | r1 = r5;
0x00024d9c mov r0, r4 | r0 = r4;
0x00024d9e pop.w {r3, r4, r5, lr} |
0x00024da2 b.w 0x11510 | goto label_2;
| label_3:
0x00024da6 movs r0, 0 | r0 = 0;
0x00024da8 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24db0 */
| #include <stdint.h>
|
; (fcn) sym.read_config_read_memory () | void read_config_read_memory (uint32_t arg1, uint32_t arg2, uint32_t arg3, int16_t arg4) {
| uint32_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_4h_2;
| int32_t var_4h_3;
| int16_t var_a0ch;
| int16_t var_a10h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00024db0 push.w {r4, r5, r6, r7, r8, lr} |
0x00024db4 cmp r1, 0 |
0x00024db6 it ne |
| if (r1 != 0) {
0x00024db8 cmpne r2, 0 | __asm ("cmpne r2, 0");
| }
0x00024dba ldr r5, [pc, 0x16c] |
0x00024dbc sub.w sp, sp, 0xa10 |
0x00024dc0 add.w ip, sp, 4 |
0x00024dc4 it eq |
| if (r1 != 0) {
0x00024dc6 moveq r7, 1 | r7 = 1;
| }
0x00024dc8 ldr r4, [pc, 0x160] | r4 = *(0x24f2c);
0x00024dca it ne |
| if (r1 == 0) {
0x00024dcc movne r7, 0 | r7 = 0;
| }
0x00024dce add r5, pc | r5 = 0x49cfc;
0x00024dd0 ldr r4, [r5, r4] |
0x00024dd2 ldr r4, [r4] | r4 = *(0x49cfc);
0x00024dd4 str.w r4, [sp, 0xa0c] | __asm ("str.w r4, [var_a0ch]");
0x00024dd8 mov.w r4, 0 | r4 = 0;
0x00024ddc str.w r2, [ip] | __asm ("str.w r2, [ip]");
| if (r1 == 0) {
0x00024de0 beq 0x24e98 | goto label_1;
| }
0x00024de2 cmp r0, 0x43 |
0x00024de4 mov r6, r3 | r6 = r3;
0x00024de6 mov r5, r2 | r5 = r2;
0x00024de8 mov r4, r1 | r4 = r1;
| if (r0 > 0x43) {
0x00024dea bgt 0x24e86 | goto label_3;
| }
0x00024dec cmp r0, 0x40 |
| if (r0 > 0x40) {
0x00024dee bgt 0x24ec4 | goto label_4;
| }
0x00024df0 cmp r0, 6 |
| if (r0 == 6) {
0x00024df2 beq 0x24e9c | goto label_5;
| }
| if (r0 <= 6) {
0x00024df4 ble 0x24e40 | goto label_6;
| }
0x00024df6 cmp r0, 0x40 |
| if (r0 != 0x40) {
0x00024df8 bne 0x24e98 | goto label_1;
| }
0x00024dfa ldr r3, [r3] | r3 = *(r3);
0x00024dfc cmp r3, 3 |
| if (r3 < 3) {
0x00024dfe bls 0x24e98 | goto label_1;
| }
0x00024e00 add r7, sp, 0xc | r7 += var_ch;
0x00024e02 mov.w r2, 0xa00 | r2 = case.0x269a8.32;
0x00024e06 mov r0, r1 | r0 = r1;
0x00024e08 mov r1, r7 | r1 = r7;
0x00024e0a blx 0x101b4 | r0 = fcn_000101b4 ();
0x00024e0e mov r4, r0 | r4 = r0;
0x00024e10 mov r0, r7 | r0 = r7;
0x00024e12 blx 0xfa94 | fcn_0000fa94 ();
0x00024e14 cdp p0, 4, c6, c0, c8, 1 | __asm ("cdp p0, 4, c6, c0, c8, 1");
0x00024e18 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00024e1a beq 0x24eee | goto label_7;
| }
| label_2:
0x00024e1c movs r3, 4 | r3 = 4;
0x00024e1e str r3, [r6] | *(r6) = r3;
| do {
| label_0:
0x00024e20 ldr r2, [pc, 0x10c] |
0x00024e22 ldr r3, [pc, 0x108] | r3 = *(0x24f2e);
0x00024e24 add r2, pc | r2 = 0x49d58;
0x00024e26 ldr r3, [r2, r3] | r3 = *(0x49d58);
0x00024e28 ldr r2, [r3] | r2 = *(0x49d58);
0x00024e2a ldr.w r3, [sp, 0xa0c] | r3 = var_a0ch;
0x00024e2e eors r2, r3 | r2 ^= r3;
0x00024e30 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00024e34 bne 0x24f24 | goto label_8;
| }
0x00024e36 mov r0, r4 | r0 = r4;
0x00024e38 add.w sp, sp, 0xa10 |
0x00024e3c pop.w {r4, r5, r6, r7, r8, pc} |
| label_6:
0x00024e40 cmp r0, 2 |
| if (r0 != 2) {
0x00024e42 bne 0x24e6e | goto label_9;
| }
0x00024e44 ldr r3, [r3] | r3 = *(r3);
0x00024e46 cmp r3, 3 |
| if (r3 < 3) {
0x00024e48 bls 0x24e98 | goto label_1;
| }
0x00024e4a add.w r8, sp, 0xc | r8 += var_ch;
0x00024e4e mov r0, r1 | r0 = r1;
0x00024e50 mov.w r2, 0xa00 | r2 = case.0x269a8.32;
0x00024e54 mov r1, r8 | r1 = r8;
0x00024e56 blx 0x101b4 | fcn_000101b4 ();
0x00024e5a mov r1, r7 | r1 = r7;
0x00024e5c mov r4, r0 | r4 = r0;
0x00024e5e movs r2, 0xa | r2 = 0xa;
0x00024e60 mov r0, r8 | r0 = r8;
0x00024e62 blx 0x107c8 | fcn_000107c8 ();
0x00024e66 movs r3, 4 | r3 = 4;
0x00024e68 str r0, [r5] | *(r5) = r0;
0x00024e6a str r3, [r6] | *(r6) = r3;
0x00024e6c b 0x24e20 |
| } while (1);
| label_9:
0x00024e6e subs r0, 3 | r0 -= 3;
0x00024e70 cmp r0, 1 |
0x00024e72 it hi |
| if (r0 > 1) {
0x00024e74 movhi r4, r7 | r4 = r7;
| goto label_10;
| }
| if (r0 > 1) {
| label_10:
0x00024e76 bhi 0x24e20 | goto label_0;
| }
| do {
0x00024e78 mov r0, r4 | r0 = r4;
0x00024e7a mov r2, r6 | r2 = r6;
0x00024e7c mov r1, ip | r1 = ip;
0x00024e7e blx 0x117e8 | r0 = fcn_000117e8 ();
0x00024e82 mov r4, r0 | r4 = r0;
0x00024e84 b 0x24e20 | goto label_0;
| label_3:
0x00024e86 cmp r0, 0xc4 |
0x00024e88 beq 0x24e78 |
| } while (r0 == 0xc4);
0x00024e8a cmp r0, 0xc6 |
| if (r0 == 0xc6) {
0x00024e8c beq 0x24e9c | goto label_5;
| }
0x00024e8e cmp r0, 0x46 |
| if (r0 != 0x46) {
0x00024e90 bne 0x24e98 | goto label_1;
| }
0x00024e92 ldr r3, [r3] | r3 = *(r3);
0x00024e94 cmp r3, 7 |
0x00024e96 bhi 0x24eb0 |
| while (r3 < 3) {
| label_1:
0x00024e98 movs r4, 0 | r4 = 0;
0x00024e9a b 0x24e20 | goto label_0;
| label_5:
0x00024e9c mov r0, r4 | r0 = r4;
0x00024e9e mov r2, r6 | r2 = r6;
0x00024ea0 mov r1, ip | r1 = ip;
0x00024ea2 blx 0x11514 | fcn_00011514 ();
0x00024ea6 ldr r3, [r6] | r3 = *(r6);
0x00024ea8 mov r4, r0 | r4 = r0;
0x00024eaa lsls r3, r3, 2 | r3 <<= 2;
0x00024eac str r3, [r6] | *(r6) = r3;
0x00024eae b 0x24e20 | goto label_0;
0x00024eb0 movs r3, 8 | r3 = 8;
0x00024eb2 mov r0, r2 | r0 = r2;
0x00024eb4 str r3, [r6] | *(r6) = r3;
0x00024eb6 blx 0xf854 | fcn_0000f854 ();
0x00024eba mov r0, r4 | r0 = r4;
0x00024ebc blx 0x1184c | r0 = fcn_0001184c ();
0x00024ec0 mov r4, r0 | r4 = r0;
0x00024ec2 b 0x24e20 | goto label_0;
| label_4:
0x00024ec4 ldr r3, [r3] | r3 = *(r3);
0x00024ec6 cmp r3, 3 |
0x00024ec8 bls 0x24e98 |
| }
0x00024eca add.w r8, sp, 0xc | r8 += var_ch;
0x00024ece mov r0, r1 | r0 = r1;
0x00024ed0 mov.w r2, 0xa00 | r2 = case.0x269a8.32;
0x00024ed4 mov r1, r8 | r1 = r8;
0x00024ed6 blx 0x101b4 | fcn_000101b4 ();
0x00024ed8 strd r4, r6, [lr, -0xe8]! | __asm ("strd r4, r6, [lr, -0xe8]!");
0x00024edc mov r4, r0 | r4 = r0;
0x00024ede mov r1, r7 | r1 = r7;
0x00024ee0 mov r0, r8 | r0 = r8;
0x00024ee2 blx 0x105c0 | fcn_000105c0 ();
0x00024ee6 movs r3, 4 | r3 = 4;
0x00024ee8 str r0, [r5] | *(r5) = r0;
0x00024eea str r3, [r6] | *(r6) = r3;
0x00024eec b 0x24e20 | goto label_0;
| label_7:
0x00024eee ldr r2, [sp, 0xc] | r2 = var_ch;
0x00024ef0 movw r3, 0x3532 |
0x00024ef4 movt r3, 0x2e35 | r3 = 0xNaN;
0x00024ef8 cmp r2, r3 |
| if (r2 != r3) {
0x00024efa bne 0x24e98 | goto label_1;
| }
0x00024efc ldr r1, [sp, 0x10] | r1 = var_10h;
0x00024efe add r3, sp, 0x10 | r3 += var_10h;
0x00024f00 cmp r1, r2 |
| if (r1 != r2) {
0x00024f02 bne 0x24e98 | goto label_1;
| }
0x00024f04 ldr r1, [r3, 4]! | r1 = var_4h_2;
0x00024f08 movw r2, 0x3532 |
0x00024f0c movt r2, 0x2e35 | r2 = 0xNaN;
0x00024f10 cmp r1, r2 |
| if (r1 != r2) {
0x00024f12 bne 0x24e98 | goto label_1;
| }
0x00024f14 ldr r2, [r3, 4] | r2 = var_4h_3;
0x00024f16 movw r3, 0x3532 |
0x00024f1a movt r3, 0x35 | r3 = 0xNaN;
0x00024f1e cmp r2, r3 |
| if (r2 != r3) {
0x00024f20 bne 0x24e98 | goto label_1;
| }
0x00024f22 b 0x24e1c | goto label_2;
| label_8:
0x00024f24 blx 0x10d58 | fcn_00010d58 ();
0x00024f28 push {r1, r2, r3, r4, r6, r7} |
0x00024f2a movs r2, r0 | r2 = r0;
0x00024f2c lsrs r4, r7, 0x11 | r4 = r7 >> 0x11;
0x00024f2e movs r0, r0 |
0x00024f30 push {r3, r7} |
0x00024f32 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24f34 */
| #include <stdint.h>
|
; (fcn) sym.read_config_store_data_prefix () | void read_config_store_data_prefix (int16_t arg1, uint32_t arg2, int16_t arg3, uint32_t arg4) {
| int16_t var_18h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| label_3:
0x0000ff30 invalid | void (*0xff34)() ();
| label_0:
0x000111d0 bx pc | return void (*pc)() ();
0x00024f34 push {r4, r5, lr} |
0x00024f36 mov r4, r2 | r4 = r2;
0x00024f38 cmp r3, 0 |
0x00024f3a it ne |
| if (r3 != 0) {
0x00024f3c cmpne r4, 0 | __asm ("cmpne r4, 0");
| }
0x00024f3e sub sp, 0xc |
0x00024f40 mov r5, r0 | r5 = r0;
0x00024f42 it ne |
| if (r3 == 0) {
0x00024f44 movne r0, 1 | r0 = 1;
| }
0x00024f46 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00024f48 it eq |
| if (r3 != 0) {
0x00024f4a moveq r0, 0 | r0 = 0;
| }
| if (r3 == 0) {
0x00024f4c beq 0x24f60 | goto label_4;
| }
0x00024f4e cmp r1, 6 |
| if (r1 == 6) {
0x00024f50 beq 0x24fbe | goto label_5;
| }
| if (r1 <= 6) {
0x00024f52 ble 0x24f86 | goto label_6;
| }
0x00024f54 cmp r1, 0x40 |
| if (r1 == 0x40) {
0x00024f56 beq 0x24faa | goto label_7;
| }
0x00024f58 subs r1, 0x42 | r1 -= 0x42;
0x00024f5a cmp r1, 1 |
0x00024f5c bls 0x24f64 |
| while (r1 > 1) {
0x00024f5e movs r0, 0 | r0 = 0;
| label_4:
0x00024f60 add sp, 0xc |
0x00024f62 pop {r4, r5, pc} |
0x00024f64 ldr r1, [r3] | r1 = *(r3);
0x00024f66 ldr r3, [pc, 0x68] |
0x00024f68 add r3, pc | r3 = 0x49f3e;
| label_1:
0x00024f6a mov.w r2, -1 | r2 = -1;
0x00024f6e strd r5, r1, [sp] | __asm ("strd r5, r1, [sp]");
0x00024f70 str r0, [r0, r4] | *((r0 + r4)) = r0;
| label_2:
0x00024f72 movs r1, 1 | r1 = 1;
0x00024f74 mov r0, r4 | r0 = r4;
0x00024f76 blx 0x114a0 | fcn_000114a0 ();
0x00024f7a mov r0, r4 | r0 = r4;
0x00024f7c blx 0x10548 | fcn_00010548 ();
0x00024f7e invalid |
0x00024f82 add sp, 0xc |
0x00024f84 pop {r4, r5, pc} |
| label_6:
0x00024f86 cmp r1, 2 |
| if (r1 == 2) {
0x00024f88 beq 0x24fa2 | goto label_8;
| }
0x00024f8a subs r1, 3 | r1 -= 3;
0x00024f8c cmp r1, 1 |
0x00024f8e bhi 0x24f5e |
| }
0x00024f90 mov r0, r4 | r0 = r4;
0x00024f92 strb r5, [r0], 1 | *(r0) = r5;
| r0++;
0x00024f96 ldr r1, [r3] | r1 = *(r3);
0x00024f98 add sp, 0xc |
0x00024f9a pop.w {r4, r5, lr} |
0x00024f9e b.w 0x111d0 | goto label_0;
| label_8:
0x00024fa2 ldr r1, [r3] | r1 = *(r3);
0x00024fa4 ldr r3, [pc, 0x2c] |
0x00024fa6 add r3, pc | r3 = 0x49f7e;
0x00024fa8 b 0x24f6a | goto label_1;
| label_7:
0x00024faa ldr r0, [r3] | r0 = *(r3);
0x00024fac blx 0xf8e8 | fcn_0000f8e8 ();
0x00024fb0 ldr r3, [pc, 0x24] |
0x00024fb2 mov.w r2, -1 | r2 = -1;
0x00024fb6 strd r5, r0, [sp] | __asm ("strd r5, r0, [sp]");
0x00024fba add r3, pc | r3 = 0x49f96;
0x00024fbc b 0x24f72 | goto label_2;
| label_5:
0x00024fbe mov r0, r4 | r0 = r4;
0x00024fc0 strb r5, [r0], 1 | *(r0) = r5;
| r0++;
0x00024fc4 ldr r1, [r3] | r1 = *(r3);
0x00024fc6 add sp, 0xc |
0x00024fc8 pop.w {r4, r5, lr} |
0x00024fcc b.w 0xff30 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x24fdc */
| #include <stdint.h>
|
; (fcn) sym.read_config_store_data () | void read_config_store_data (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00024fdc mov ip, r3 |
0x00024fde push {r4, lr} |
0x00024fe0 mov r3, r2 | r3 = r2;
0x00024fe2 sub sp, 8 |
0x00024fe4 mov r4, ip | r4 = ip;
0x00024fe6 cmp.w ip, 0 |
| if (ip != 0) {
0x00024fea beq 0x24ff0 |
0x00024fec ldr.w r4, [ip] | r4 = *(ip);
| }
0x00024ff0 mov r2, r1 | r2 = r1;
0x00024ff2 str r4, [sp] | *(sp) = r4;
0x00024ff4 mov r1, r0 | r1 = r0;
0x00024ff6 movs r0, 0x20 | r0 = 0x20;
0x00024ff8 blx 0x10c14 | HMAC ();
0x00024ffc add sp, 8 |
0x00024ffe pop {r4, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x246e4 */
| #include <stdint.h>
|
; (fcn) sym.read_config_files_of_type () | void read_config_files_of_type (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x000246e4 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, case.0x269a8.32");
0x000246e8 mov r7, r0 | r7 = r0;
0x000246ea sub sp, 0xc |
0x000246ec mov r5, r1 | r5 = r1;
0x000246ee movs r0, 0 | r0 = 0;
0x000246f0 movs r1, 0x20 | r1 = 0x20;
0x000246f2 blx 0x1096c | r0 = fcn_0001096c ();
0x000246f6 cmp r0, 0 |
| if (r0 != 0) {
0x000246f8 bne 0x2479e | goto label_2;
| }
0x000246fa movs r1, 6 | r1 = 6;
0x000246fc blx 0x1096c | fcn_0001096c ();
0x00024700 clz r3, r5 | r3 &= r5;
0x00024704 lsrs r3, r3, 5 | r3 >>= 5;
0x00024706 cmp r0, 0 |
0x00024708 it ne |
| if (r0 == 0) {
0x0002470a orrne r3, r3, 1 | r3 |= 1;
| }
0x0002470e cmp r3, 0 |
| if (r3 != 0) {
0x00024710 bne 0x2479e | goto label_2;
| }
0x00024712 blx 0x10464 | r0 = fcn_00010464 ();
0x00024716 mov sb, r0 | sb = r0;
0x00024718 ldr r0, [pc, 0x88] |
0x0002471a add r0, pc | r0 = 0x48ec2;
0x0002471c blx 0x10cfc | r0 = fcn_00010cfc ();
0x00024720 mov r8, r0 | r8 = r0;
0x00024722 ldr r0, [pc, 0x84] |
0x00024724 add r0, pc | r0 = 0x48ed2;
0x00024726 blx 0x10cfc | fcn_00010cfc ();
0x00024728 invalid |
0x0002472a mov r6, r0 | r6 = r0;
0x0002472c blx 0x10d80 | fcn_00010d80 ();
0x00024730 blx 0x10d18 | r0 = fcn_00010d18 ();
0x00024734 mov r4, r0 | r4 = r0;
| if (r6 == 0) {
0x00024736 cbz r6, 0x2475e | goto label_3;
| }
0x00024738 mov r1, r5 | r1 = r5;
0x0002473a mov r2, r7 | r2 = r7;
0x0002473c mov r0, r6 | r0 = r6;
0x0002473e mov r3, r4 | r3 = r4;
0x00024740 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00024744 bl 0x24508 | r0 = fcn_00024508 (r0, r1, r2, r3, r4);
0x00024748 subs r5, r0, 0 | r5 = r0 - 0;
0x0002474a it ne |
| if (r5 == r0) {
0x0002474c movne r5, 1 | r5 = 1;
| }
0x0002474e rsbs r5, r5, 0 | r5 -= ;
| do {
| label_0:
0x00024750 mov r0, r4 | r0 = r4;
0x00024752 blx 0x10168 | fcn_00010168 ();
| label_1:
0x00024756 mov r0, r5 | r0 = r5;
0x00024758 add sp, 0xc |
0x0002475a pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_3:
0x0002475e mov r3, r4 | r3 = r4;
0x00024760 mov r1, r5 | r1 = r5;
0x00024762 mov r2, r7 | r2 = r7;
0x00024764 mov r0, sb | r0 = sb;
0x00024766 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0002476a bl 0x24508 | r0 = fcn_00024508 (r0, r1, r2, r3, r4);
0x0002476e mov r6, r0 | r6 = r0;
0x00024770 mov r0, r4 | r0 = r4;
0x00024772 blx 0x10168 | fcn_00010168 ();
0x00024776 blx 0x10d80 | fcn_00010d80 ();
0x00024778 add.w r7, r4, ip, asr 31 | r7 = r4 + (ip >> 31);
0x0002477c pkhtb r6, lr, sb, asr 0x10 | __asm ("pkhtb r6, lr, sb, asr 0x10");
0x00024780 mov r2, r7 | r2 = r7;
0x00024782 mov r3, r0 | r3 = r0;
0x00024784 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00024788 mov r4, r0 | r4 = r0;
0x0002478a bl 0x24508 | r0 = fcn_00024508 (r0, r1, r2, r3, r4);
0x0002478e mov r5, r0 | r5 = r0;
0x00024790 cmp r0, 0 |
0x00024792 beq 0x24750 |
| } while (r0 == 0);
0x00024794 subs r3, r6, 0 | r3 = r6 - 0;
0x00024796 it ne |
| if (r3 == r6) {
0x00024798 movne r3, 1 | r3 = 1;
| }
0x0002479a rsbs r5, r3, 0 | r5 = r3 - ;
0x0002479c b 0x24750 | goto label_0;
| label_2:
0x0002479e mov.w r5, -1 | r5 = -1;
0x000247a2 b 0x24756 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmp.so.40.1.0 @ 0x247ac */
| #include <stdint.h>
|
; (fcn) sym.read_config_files () | void read_config_files (uint32_t arg1) {
| r0 = arg1;
0x000247ac ldr r3, [pc, 0x5c] |
0x000247ae cmp r0, 1 |
0x000247b0 ldr r1, [pc, 0x5c] | r1 = *(0x24810);
0x000247b2 ldr r2, [pc, 0x60] |
0x000247b4 add r3, pc | r3 = 0x48fc4;
0x000247b6 push {r4, r5, r6, lr} |
0x000247b8 ldr r1, [r3, r1] | r1 = *(0x48fc4);
0x000247ba mov.w r4, 0 | r4 = 0;
0x000247be add r2, pc | r2 = 0x48fd8;
0x000247c0 mov r6, r0 | r6 = r0;
0x000247c2 str r4, [r2, 0xc] | *((r2 + 0xc)) = r4;
0x000247c4 ldr r4, [r1] | r4 = *(0x48fc4);
| if (r0 == 1) {
0x000247c6 beq 0x247f8 | goto label_3;
| }
| if (r4 == 0) {
0x000247c8 cbz r4, 0x24806 | goto label_4;
| }
| label_0:
0x000247ca mov.w r5, -1 | r5 = -1;
| do {
0x000247ce mov r1, r4 | r1 = r4;
0x000247d0 mov r0, r6 | r0 = r6;
0x000247d2 blx 0x10c08 | fprintf_chk ()
0x000247d6 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x000247d8 cmp r0, 0 |
0x000247da it eq |
| if (r0 != 0) {
0x000247dc moveq r5, 0 | r5 = 0;
| }
0x000247de cmp r4, 0 |
0x000247e0 bne 0x247ce |
| } while (r4 != 0);
| label_1:
0x000247e2 ldr r3, [pc, 0x34] |
0x000247e4 add r3, pc | r3 = 0x49002;
0x000247e6 ldr r2, [r3, 0xc] | r2 = *(0x4900e);
| if (r2 != 0) {
0x000247e8 cbz r2, 0x247f4 |
0x000247ea ldr r1, [pc, 0x30] |
0x000247ec movs r0, 3 | r0 = 3;
0x000247ee add r1, pc | r1 = 0x49010;
0x000247f0 blx 0x11494 | fcn_00011494 ();
| }
| label_2:
0x000247f4 mov r0, r5 | r0 = r5;
0x000247f6 pop {r4, r5, r6, pc} |
| label_3:
0x000247f8 blx 0xf51c | fcn_0000f51c ();
0x000247fc cmp r4, 0 |
| if (r4 != 0) {
0x000247fe bne 0x247ca | goto label_0;
| }
0x00024800 mov.w r5, -1 | r5 = -1;
0x00024804 b 0x247e2 | goto label_1;
| label_4:
0x00024806 mov.w r5, -1 | r5 = -1;
0x0002480a b 0x247f4 | goto label_2;
| }
[*] Function fprintf used 7 times libnetsnmp.so.40.1.0