[*] Binary protection state of zabbix_agentd
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of zabbix_agentd
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x31348 */
| #include <stdint.h>
|
; (fcn) fcn.00031348 () | void fcn_00031348 (int16_t arg1) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
0x00031348 ldr r2, [pc, 0x1c0] |
0x0003134a ldr r3, [pc, 0x1c4] | r3 = *(0x31512);
0x0003134c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00031350 sub sp, 0x1c |
0x00031352 add r2, pc | r2 = 0x62862;
0x00031354 movs r4, 0 | r4 = 0;
0x00031356 ldr r3, [r2, r3] |
0x00031358 ldr r3, [r3] | r3 = imp.__environ;
0x0003135a str r3, [sp, 0x14] | var_14h = r3;
0x0003135c mov.w r3, 0 | r3 = 0;
0x00031360 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00031362 strd r4, r4, [sp, 8] | __asm ("strd r4, r4, [var_8h]");
0x00031366 str r4, [sp, 0x10] | var_10h = r4;
0x00031368 cmp r3, r4 |
0x0003136a it le |
| if (r3 > r4) {
0x0003136c movle r0, r4 | r0 = r4;
| }
| if (r3 <= r4) {
0x0003136e ble 0x313b6 | goto label_2;
| }
0x00031370 ldr r3, [r0] | r3 = *(r0);
0x00031372 mov r5, r0 | r5 = r0;
0x00031374 ldr.w sl, [pc, 0x19c] | sl = *(0x00031514);
0x00031378 add.w fp, sp, 0x10 |
0x0003137c ldr.w sb, [pc, 0x198] |
0x00031380 add.w r8, sp, 0xc | r8 += var_ch;
0x00031384 ldr r6, [r3] | r6 = *(r3);
0x00031386 add r7, sp, 8 | r7 += var_8h;
0x00031388 ldr r3, [pc, 0x190] |
0x0003138a add sl, pc | sl += pc;
0x0003138c add sb, pc | sb = 0x628a8;
0x0003138e add r3, pc | r3 = 0x628ae;
0x00031390 str r3, [sp, 4] | var_4h = r3;
| label_0:
0x00031392 ldrb r3, [r6] | r3 = *(r6);
0x00031394 subs r3, 1 | r3--;
0x00031396 cmp r3, 0x13 |
| if (r3 > 0x13) {
0x00031398 bhi.w 0x314fc | goto label_3;
| }
| /* switch table (20 cases) at 0x313a0 */
0x0003139c tbb [pc, r3] | __asm ("tbb case.0x3207a.11");
| do {
0x000313b4 ldr r0, [sp, 8] | r0 = var_8h;
| label_2:
0x000313b6 ldr r2, [pc, 0x168] |
0x000313b8 ldr r3, [pc, 0x154] | r3 = *(0x31510);
0x000313ba add r2, pc | r2 = 0x628e0;
0x000313bc ldr r3, [r2, r3] | r3 = imp.__environ;
0x000313be ldr r2, [r3] | r2 = imp.__environ;
0x000313c0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000313c2 eors r2, r3 | r2 ^= r3;
0x000313c4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000313c8 bne.w 0x314f8 | goto label_4;
| }
0x000313cc add sp, 0x1c |
0x000313ce pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000313d2 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000313d4 mov r2, fp | r2 = fp;
0x000313d6 mov r1, r8 | r1 = r8;
0x000313d8 mov r0, r7 | r0 = r7;
0x000313da bl 0x39168 | zbx_strcpy_alloc ()
| label_1:
0x000313de ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000313e0 adds r4, 1 | r4++;
0x000313e2 cmp r3, r4 |
0x000313e4 ble 0x313b4 |
| } while (r3 <= r4);
0x000313e6 ldr r0, [r5] | r0 = *(r5);
0x000313e8 mov r2, fp | r2 = fp;
0x000313ea ldr r3, [pc, 0x138] |
0x000313ec mov r1, r8 | r1 = r8;
0x000313ee ldr.w r6, [r0, r4, lsl 2] | offset_0 = r4 << 2;
| r6 = *((r0 + offset_0));
0x000313f2 mov r0, r7 | r0 = r7;
0x000313f4 add r3, pc | r3 = 0x6291e;
0x000313f6 bl 0x39168 | zbx_strcpy_alloc ()
0x000313fa b 0x31392 | goto label_0;
0x000313fc mov r3, sl | r3 = sl;
0x000313fe mov r2, fp | r2 = fp;
0x00031400 mov r1, r8 | r1 = r8;
0x00031402 mov r0, r7 | r0 = r7;
0x00031404 bl 0x39168 | zbx_strcpy_alloc ()
0x00031408 b 0x313de | goto label_1;
0x0003140a ldr r3, [pc, 0x11c] |
0x0003140c mov r2, fp | r2 = fp;
0x0003140e mov r1, r8 | r1 = r8;
0x00031410 mov r0, r7 | r0 = r7;
0x00031412 add r3, pc | r3 = 0x62940;
0x00031414 bl 0x39168 | zbx_strcpy_alloc ()
0x00031418 b 0x313de | goto label_1;
0x0003141a ldr r3, [pc, 0x110] |
0x0003141c mov r2, fp | r2 = fp;
0x0003141e mov r1, r8 | r1 = r8;
0x00031420 mov r0, r7 | r0 = r7;
0x00031422 add r3, pc | r3 = 0x62954;
0x00031424 bl 0x39168 | zbx_strcpy_alloc ()
0x00031428 b 0x313de | goto label_1;
0x0003142a ldr r3, [pc, 0x104] |
0x0003142c mov r2, fp | r2 = fp;
0x0003142e mov r1, r8 | r1 = r8;
0x00031430 mov r0, r7 | r0 = r7;
0x00031432 add r3, pc | r3 = 0x62968;
0x00031434 bl 0x39168 | zbx_strcpy_alloc ()
0x00031438 b 0x313de | goto label_1;
0x0003143a ldr r3, [pc, 0xf8] |
0x0003143c mov r2, fp | r2 = fp;
0x0003143e mov r1, r8 | r1 = r8;
0x00031440 mov r0, r7 | r0 = r7;
0x00031442 add r3, pc | r3 = 0x6297c;
0x00031444 bl 0x39168 | zbx_strcpy_alloc ()
0x00031448 b 0x313de | goto label_1;
0x0003144a ldr r3, [pc, 0xec] |
0x0003144c mov r2, fp | r2 = fp;
0x0003144e mov r1, r8 | r1 = r8;
0x00031450 mov r0, r7 | r0 = r7;
0x00031452 add r3, pc | r3 = 0x62990;
0x00031454 bl 0x39168 | zbx_strcpy_alloc ()
0x00031458 b 0x313de | goto label_1;
0x0003145a ldr r3, [pc, 0xe0] |
0x0003145c mov r2, fp | r2 = fp;
0x0003145e mov r1, r8 | r1 = r8;
0x00031460 mov r0, r7 | r0 = r7;
0x00031462 add r3, pc | r3 = 0x629a4;
0x00031464 bl 0x39168 | zbx_strcpy_alloc ()
0x00031468 b 0x313de | goto label_1;
0x0003146a ldr r3, [pc, 0xd4] |
0x0003146c mov r2, fp | r2 = fp;
0x0003146e mov r1, r8 | r1 = r8;
0x00031470 mov r0, r7 | r0 = r7;
0x00031472 add r3, pc | r3 = 0x629b8;
0x00031474 bl 0x39168 | zbx_strcpy_alloc ()
0x00031478 b 0x313de | goto label_1;
0x0003147a ldr r3, [pc, 0xc8] |
0x0003147c mov r2, fp | r2 = fp;
0x0003147e mov r1, r8 | r1 = r8;
0x00031480 mov r0, r7 | r0 = r7;
0x00031482 add r3, pc | r3 = 0x629cc;
0x00031484 bl 0x39168 | zbx_strcpy_alloc ()
0x00031488 b 0x313de | goto label_1;
0x0003148a ldr r3, [pc, 0xbc] |
0x0003148c mov r2, fp | r2 = fp;
0x0003148e mov r1, r8 | r1 = r8;
0x00031490 mov r0, r7 | r0 = r7;
0x00031492 add r3, pc | r3 = 0x629e0;
0x00031494 bl 0x39168 | zbx_strcpy_alloc ()
0x00031498 b 0x313de | goto label_1;
0x0003149a ldr r3, [pc, 0xb0] |
0x0003149c mov r2, fp | r2 = fp;
0x0003149e mov r1, r8 | r1 = r8;
0x000314a0 mov r0, r7 | r0 = r7;
0x000314a2 add r3, pc | r3 = 0x629f4;
0x000314a4 bl 0x39168 | zbx_strcpy_alloc ()
0x000314a8 b 0x313de | goto label_1;
0x000314aa ldr r3, [pc, 0xa4] |
0x000314ac mov r2, fp | r2 = fp;
0x000314ae mov r1, r8 | r1 = r8;
0x000314b0 mov r0, r7 | r0 = r7;
0x000314b2 add r3, pc | r3 = 0x62a08;
0x000314b4 bl 0x39168 | zbx_strcpy_alloc ()
0x000314b8 b 0x313de | goto label_1;
0x000314ba ldr r3, [pc, 0x98] |
0x000314bc mov r2, fp | r2 = fp;
0x000314be mov r1, r8 | r1 = r8;
0x000314c0 mov r0, r7 | r0 = r7;
0x000314c2 add r3, pc | r3 = 0x62a1c;
0x000314c4 bl 0x39168 | zbx_strcpy_alloc ()
0x000314c8 b 0x313de | goto label_1;
0x000314ca ldr r3, [pc, 0x8c] |
0x000314cc mov r2, fp | r2 = fp;
0x000314ce mov r1, r8 | r1 = r8;
0x000314d0 mov r0, r7 | r0 = r7;
0x000314d2 add r3, pc | r3 = 0x62a30;
0x000314d4 bl 0x39168 | zbx_strcpy_alloc ()
0x000314d8 b 0x313de | goto label_1;
0x000314da ldr r3, [pc, 0x80] |
0x000314dc mov r2, fp | r2 = fp;
0x000314de mov r1, r8 | r1 = r8;
0x000314e0 mov r0, r7 | r0 = r7;
0x000314e2 add r3, pc | r3 = 0x62a44;
0x000314e4 bl 0x39168 | zbx_strcpy_alloc ()
0x000314e8 b 0x313de | goto label_1;
0x000314ea mov r3, sb | r3 = sb;
0x000314ec mov r2, fp | r2 = fp;
0x000314ee mov r1, r8 | r1 = r8;
0x000314f0 mov r0, r7 | r0 = r7;
0x000314f2 bl 0x39168 | zbx_strcpy_alloc ()
0x000314f6 b 0x313de | goto label_1;
| label_4:
0x000314f8 blx 0xbe48 | fcn_0000be48 ();
| label_3:
0x000314fc ldr r3, [sp, 4] | r3 = var_4h;
0x000314fe mov r2, fp | r2 = fp;
0x00031500 mov r1, r8 | r1 = r8;
0x00031502 mov r0, r7 | r0 = r7;
0x00031504 bl 0x39168 | zbx_strcpy_alloc ()
0x00031508 b 0x313de | 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/sbin/zabbix_agentd @ 0x3f970 */
| #include <stdint.h>
|
; (fcn) fcn.0003f970 () | void fcn_0003f970 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_3ch;
| int16_t var_1020h;
| r0 = arg1;
| do {
| if (r5 != 0) {
0x0003f84a cbz r5, 0x3f862 |
0x0003f84c mov r0, r5 | r0 = r5;
0x0003f84e blx 0xbfd8 | r0 = getenv (r0);
0x0003f852 cmp r0, 0 |
| if (r0 == 0) {
0x0003f854 beq.w 0x3fc7c | goto label_13;
| }
0x0003f858 blx 0xc494 | fcn_0000c494 ();
0x0003f85c adds r0, 1 | r0++;
| if (r0 == 1) {
0x0003f85e beq.w 0x3fc7c | goto label_13;
| }
| }
0x0003f862 sub.w r0, r4, 0xc | r0 = r4 - 0xc;
0x0003f866 blx 0xc260 | strtok (r0, r1);
0x0003f86a adds r0, 1 | r0++;
| if (r0 == 1) {
0x0003f86c beq.w 0x3fc7c | goto label_13;
| }
0x0003f870 bl 0x2a3d4 | r0 = zbx_fork ();
0x0003f874 adds r3, r0, 1 | r3 = r0 + 1;
0x0003f876 mov r6, r0 | r6 = r0;
| if (r3 == r0) {
0x0003f878 beq.w 0x3fc6c | goto label_14;
| }
0x0003f87c cmp r0, 0 |
| if (r0 != 0) {
0x0003f87e bne.w 0x3f9e2 | goto label_15;
| }
0x0003f882 ldr r0, [r4, -0xc] | r0 = *((r4 - 0xc));
0x0003f886 blx 0xc47c | fcn_0000c47c ();
0x0003f88a mov r1, r6 | r1 = r6;
0x0003f88c mov r0, r6 | r0 = r6;
0x0003f88e blx 0xc354 | fcn_0000c354 ();
0x0003f892 adds r0, 1 | r0++;
0x0003f894 ldr.w r3, [sb] | r3 = *(sb);
| if (r0 == 1) {
0x0003f898 beq.w 0x3fcf0 | goto label_16;
| }
0x0003f89c cmp r3, 3 |
| if (r3 > 3) {
0x0003f89e bgt.w 0x3f9ae | goto label_17;
| }
| label_2:
0x0003f8a2 movs r0, 1 | r0 = 1;
0x0003f8a4 blx 0xbec4 | r0 = initgroups ();
0x0003f8a8 mov r7, r0 | r7 = r0;
0x0003f8aa adds r0, r7, 1 | r0 = r7 + 1;
| if (r0 == r7) {
0x0003f8ac beq.w 0x3fcc8 | goto label_18;
| }
0x0003f8b0 movs r0, 2 | r0 = 2;
0x0003f8b2 blx 0xbec4 | r0 = initgroups ();
0x0003f8b6 adds r1, r0, 1 | r1 = r0 + 1;
0x0003f8b8 mov r6, r0 | r6 = r0;
| if (r1 == r0) {
0x0003f8ba beq.w 0x3fc8a | goto label_19;
| }
0x0003f8be movs r2, 1 | r2 = 1;
0x0003f8c0 movs r1, 2 | r1 = 2;
0x0003f8c2 mov r0, r7 | r0 = r7;
0x0003f8c4 blx 0xc29c | shutdown ();
0x0003f8c8 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0003f8ca beq 0x3f988 | goto label_20;
| }
| label_1:
0x0003f8cc movs r2, 1 | r2 = 1;
0x0003f8ce movs r1, 2 | r1 = 2;
0x0003f8d0 mov r0, r6 | r0 = r6;
0x0003f8d2 blx 0xc29c | shutdown ();
0x0003f8d6 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0003f8d8 beq 0x3f962 | goto label_21;
| }
| label_0:
0x0003f8da movs r1, 1 | r1 = 1;
0x0003f8dc ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x0003f8e0 blx 0xbea0 | realloc (r0, r1);
0x0003f8e4 ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x0003f8e8 movs r1, 2 | r1 = 2;
0x0003f8ea blx 0xbea0 | realloc (r0, r1);
0x0003f8ee ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x0003f8f2 blx 0xc47c | fcn_0000c47c ();
| if (r5 != 0) {
0x0003f8f6 cbz r5, 0x3f902 |
0x0003f8f8 mov r0, r5 | r0 = r5;
0x0003f8fa blx 0xbf18 | r0 = pcre_exec ();
0x0003f8fe cmp r0, 0 |
| if (r0 != 0) {
0x0003f900 bne 0x3f9c0 | goto label_22;
| }
| }
0x0003f902 ldr.w r2, [pc, 0x440] |
0x0003f906 movs r3, 0 | r3 = 0;
0x0003f908 ldr.w r1, [pc, 0x43c] |
0x0003f90c ldr.w r0, [pc, 0x43c] |
0x0003f910 add r2, pc | r2 = 0x7f65a;
0x0003f912 str r3, [sp] | *(sp) = r3;
0x0003f914 add r1, pc | r1 = 0x7f660;
0x0003f916 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0003f918 add r0, pc | r0 = 0x7f668;
0x0003f91a blx 0xc300 | fcn_0000c300 ();
0x0003f91e movs r1, 1 | r1 = 1;
0x0003f920 mov r0, r7 | r0 = r7;
0x0003f922 blx 0xbea0 | realloc (r0, r1);
0x0003f926 movs r1, 2 | r1 = 2;
0x0003f928 mov r0, r6 | r0 = r6;
0x0003f92a blx 0xbea0 | realloc (r0, r1);
0x0003f92e mov r0, r7 | r0 = r7;
0x0003f930 blx 0xc47c | fcn_0000c47c ();
0x0003f934 mov r0, r6 | r0 = r6;
0x0003f936 blx 0xc47c | fcn_0000c47c ();
0x0003f93a ldr.w r3, [sb] | r3 = *(sb);
0x0003f93e cmp r3, 2 |
| if (r3 > 2) {
0x0003f940 bgt.w 0x3fb48 | goto label_23;
| }
| label_3:
0x0003f944 movs r0, 1 | r0 = 1;
0x0003f946 blx 0xc0f0 | fcn_0000c0f0 ();
0x0003f94a ldr.w r2, [pc, 0x404] | r2 = *(0x0003fd50);
0x0003f94e movs r0, 4 | r0 = 4;
0x0003f950 ldr.w r1, [pc, 0x400] | r1 = *(0x0003fd54);
0x0003f954 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0003f956 add r2, pc | r2 += pc;
0x0003f958 adds r2, 0xc | r2 += 0xc;
0x0003f95a add r1, pc | r1 += pc;
0x0003f95c bl 0x271b0 | zbx_zabbix_log ();
0x0003f960 b 0x3f84a |
| } while (1);
| label_21:
0x0003f962 ldr.w r3, [sb] | r3 = *(sb);
0x0003f966 cmp r3, 2 |
| if (r3 <= 2) {
0x0003f968 ble 0x3f8da | goto label_0;
| }
0x0003f96a blx 0xc15c | r0 = fcn_0000c15c ();
0x0003f96e ldr r0, [r0] | r0 = *(r0);
0x0003f970 bl 0x26fdc | zbx_strerror ();
0x0003f974 ldr r2, [pc, 0x3e0] |
0x0003f976 mov r3, r0 | r3 = r0;
0x0003f978 ldr r1, [pc, 0x3e0] |
0x0003f97a movs r0, 3 | r0 = 3;
0x0003f97c add r2, pc | r2 = 0x7f6d8;
0x0003f97e adds r2, 0xc | r2 += 0xc;
0x0003f980 add r1, pc | r1 = 0x7f6e0;
0x0003f982 bl 0x271b0 | zbx_zabbix_log ();
0x0003f986 b 0x3f8da | goto label_0;
| label_20:
0x0003f988 ldr.w r3, [sb] | r3 = *(sb);
0x0003f98c cmp r3, 2 |
| if (r3 <= 2) {
0x0003f98e ble 0x3f8cc | goto label_1;
| }
0x0003f990 blx 0xc15c | r0 = fcn_0000c15c ();
0x0003f994 ldr r0, [r0] | r0 = *(r0);
0x0003f996 bl 0x26fdc | zbx_strerror ();
0x0003f99a ldr r2, [pc, 0x3c4] |
0x0003f99c mov r3, r0 | r3 = r0;
0x0003f99e ldr r1, [pc, 0x3c4] |
0x0003f9a0 movs r0, 3 | r0 = 3;
0x0003f9a2 add r2, pc | r2 = 0x7f708;
0x0003f9a4 adds r2, 0xc | r2 += 0xc;
0x0003f9a6 add r1, pc | r1 = 0x7f710;
0x0003f9a8 bl 0x271b0 | zbx_zabbix_log ();
0x0003f9ac b 0x3f8cc | goto label_1;
| label_17:
0x0003f9ae ldr r2, [pc, 0x3b8] |
0x0003f9b0 movs r0, 4 | r0 = 4;
0x0003f9b2 ldr r1, [pc, 0x3b8] |
0x0003f9b4 add r2, pc | r2 = 0x7f722;
0x0003f9b6 adds r2, 0xc | r2 += 0xc;
0x0003f9b8 add r1, pc | r1 = 0x7f72a;
0x0003f9ba bl 0x271b0 | zbx_zabbix_log ();
0x0003f9be b 0x3f8a2 | goto label_2;
| label_22:
0x0003f9c0 ldr r3, [pc, 0x3ac] | r3 = *(0x3fd70);
0x0003f9c2 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0003f9c6 ldr r4, [r3] | r4 = *(0x3fd70);
0x0003f9c8 blx 0xc15c | r0 = fcn_0000c15c ();
0x0003f9cc ldr r0, [r0] | r0 = *(r0);
0x0003f9ce bl 0x26fdc | zbx_strerror ();
0x0003f9d2 ldr r2, [pc, 0x3a0] |
0x0003f9d4 mov r3, r0 | r3 = r0;
0x0003f9d6 movs r1, 1 | r1 = 1;
0x0003f9d8 mov r0, r4 | r0 = r4;
0x0003f9da add r2, pc | r2 = 0x7f754;
0x0003f9dc blx 0xc20c | setegid ();
0x0003f9e0 b 0x3f944 | goto label_3;
| label_15:
0x0003f9e2 ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x0003f9e6 blx 0xc47c | fcn_0000c47c ();
0x0003f9ea ldr.w r3, [sb] | r3 = *(sb);
0x0003f9ee cmp r3, 3 |
| if (r3 > 3) {
0x0003f9f0 bgt.w 0x3fb94 | goto label_24;
| }
| label_7:
0x0003f9f4 ldr r8, [r4, -0xc] | r8 = *((r4 - 0xc));
0x0003f9f8 cmp.w r8, -1 |
| if (r8 == -1) {
0x0003f9fc beq.w 0x3fc7c | goto label_13;
| }
0x0003fa00 add r5, sp, 0x3c | r5 += var_3ch;
0x0003fa02 mov.w fp, 0 |
0x0003fa06 sub.w sl, r4, 0x18 | sl = r4 - 0x18;
0x0003fa0a b 0x3fa2e |
| while (r0 > 0) {
0x0003fa0c ldr r3, [r4, -0x18] | r3 = *((r4 - 0x18));
0x0003fa10 add r3, r0 | r3 += r0;
0x0003fa12 cmp.w r3, 0x80000 |
| if (r3 >= case.0x3207a.11) {
0x0003fa16 bhs 0x3fb00 | goto label_25;
| }
0x0003fa18 add r0, r4 | r0 += r4;
0x0003fa1a mov r3, r5 | r3 = r5;
0x0003fa1c strb fp, [r0, -0x4] | *((r0 - 0x4)) = fp;
0x0003fa20 mov r2, sl | r2 = sl;
0x0003fa22 sub.w r1, r4, 0x1c | r1 = r4 - 0x1c;
0x0003fa26 sub.w r0, r4, 0x14 | r0 = r4 - 0x14;
0x0003fa2a bl 0x39168 | zbx_strcpy_alloc ()
0x0003fa2e movw r2, 0xfff | r2 = (r2 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x0003fa32 mov r1, r5 | r1 = r5;
0x0003fa34 mov r0, r8 | r0 = r8;
0x0003fa36 blx 0xbcac | r0 = fcn_0000bcac ();
0x0003fa3a cmp r0, 0 |
0x0003fa3c bgt 0x3fa0c |
| }
0x0003fa3e str r0, [sp, 0x1c] | var_1ch = r0;
0x0003fa40 mov r0, r8 | r0 = r8;
0x0003fa42 blx 0xc47c | fcn_0000c47c ();
0x0003fa46 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0003fa48 adds r2, r3, 1 | r2 = r3 + 1;
| if (r2 != r3) {
0x0003fa4a bne 0x3fb0a | goto label_26;
| }
| label_5:
0x0003fa4c blx 0xc15c | r0 = fcn_0000c15c ();
0x0003fa50 mov r8, r0 | r8 = r0;
0x0003fa52 ldr r0, [r0] | r0 = *(r0);
0x0003fa54 rsbs r5, r6, 0 | r5 = r6 - ;
0x0003fa56 cmp r0, 4 |
| if (r0 != 4) {
0x0003fa58 bne.w 0x3fb62 | goto label_27;
| }
0x0003fa5c mov r0, r5 | r0 = r5;
0x0003fa5e movs r1, 0xf | r1 = 0xf;
0x0003fa60 blx 0xc0c8 | exit (r0);
0x0003fa64 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0003fa66 bne 0x3fa72 |
0x0003fa68 ldr.w r3, [sb] | r3 = *(sb);
0x0003fa6c cmp r3, 1 |
| if (r3 > 1) {
0x0003fa6e bgt.w 0x3fbde | goto label_28;
| }
| }
| label_8:
0x0003fa72 movs r1, 0 | r1 = 0;
0x0003fa74 mov r0, r6 | r0 = r6;
0x0003fa76 bl 0x3f5c4 | r0 = fcn_0003f5c4 (r0, r1);
0x0003fa7a bl 0x37e10 | zbx_alarm_off ();
0x0003fa7e ldr r1, [pc, 0x2f8] |
0x0003fa80 mvn r5, 3 | r5 = ~3;
0x0003fa84 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0003fa86 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0003fa88 add r1, pc | r1 = 0x7f806;
0x0003fa8a bl 0x394f0 | zbx_strlcpy ();
| label_6:
0x0003fa8e ldr r3, [sp, 0x10] | r3 = var_10h;
0x0003fa90 ldrb r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x0003fa92 cbz r3, 0x3faea | goto label_29;
| }
0x0003fa94 ldr.w r3, [sb] | r3 = *(sb);
0x0003fa98 cmp r3, 2 |
| if (r3 <= 2) {
0x0003fa9a ble 0x3faea | goto label_29;
| }
| label_10:
0x0003fa9c ldr r1, [pc, 0x2dc] |
0x0003fa9e movs r0, 3 | r0 = 3;
0x0003faa0 ldrd r2, r3, [sp, 0xc] | __asm ("ldrd r2, r3, [var_ch]");
0x0003faa4 add r1, pc | r1 = 0x7f824;
0x0003faa6 bl 0x271b0 | zbx_zabbix_log ();
0x0003faaa subs r3, r5, 0 | r3 = r5 - 0;
0x0003faac it ne |
| if (r3 == r5) {
0x0003faae movne r3, 1 | r3 = 1;
| }
| label_9:
0x0003fab0 cmp r7, 0 |
0x0003fab2 it eq |
| if (r7 != 0) {
0x0003fab4 orreq r3, r3, 1 | r3 |= 1;
| }
| if (r3 != 0) {
0x0003fab8 cbnz r3, 0x3faea | goto label_29;
| }
0x0003faba mov r5, r3 | r5 = r3;
| label_4:
0x0003fabc ldr r3, [r4, -0x14] | r3 = *((r4 - 0x14));
0x0003fac0 str r3, [r7] | *(r7) = r3;
| do {
0x0003fac2 ldr r2, [pc, 0x2bc] |
0x0003fac4 add.w r1, sp, 0x1020 | r1 += var_1020h;
0x0003fac8 ldr r3, [pc, 0x268] | r3 = *(0x3fd34);
0x0003faca adds r1, 0x1c | r1 += 0x1c;
0x0003facc add r2, pc | r2 = 0x7f852;
0x0003face ldr r3, [r2, r3] | r3 = *(0x7f852);
0x0003fad0 ldr r2, [r3] | r2 = *(0x7f852);
0x0003fad2 ldr r3, [r1] | r3 = *(r1);
0x0003fad4 eors r2, r3 | r2 ^= r3;
0x0003fad6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003fada bne.w 0x3fd14 | goto label_30;
| }
0x0003fade mov r0, r5 | r0 = r5;
0x0003fae0 add.w sp, sp, 0x1040 |
0x0003fae4 add sp, 4 |
0x0003fae6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_29:
0x0003faea ldr r0, [r4, -0x14] | r0 = *((r4 - 0x14));
| if (r0 != 0) {
0x0003faee cbz r0, 0x3fafa |
0x0003faf0 blx 0xbd14 | gai_strerror ();
0x0003faf4 movs r3, 0 | r3 = 0;
0x0003faf6 str r3, [r4, -0x14] | *((r4 - 0x14)) = r3;
| }
0x0003fafa cmp r7, 0 |
0x0003fafc beq 0x3fac2 |
| } while (r7 == 0);
0x0003fafe b 0x3fabc | goto label_4;
| label_25:
0x0003fb00 str r0, [sp, 0x1c] | var_1ch = r0;
0x0003fb02 mov r0, r8 | r0 = r8;
0x0003fb04 blx 0xc47c | fcn_0000c47c ();
0x0003fb08 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| label_26:
0x0003fb0a sub.w r1, r4, 0x10 | r1 = r4 - 0x10;
0x0003fb0e mov r0, r6 | r0 = r6;
0x0003fb10 str r3, [sp, 0x1c] | var_1ch = r3;
0x0003fb12 bl 0x3f5c4 | fcn_0003f5c4 (r0, r1);
0x0003fb16 adds r0, 1 | r0++;
0x0003fb18 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r0 == 1) {
0x0003fb1a beq 0x3fa4c | goto label_5;
| }
0x0003fb1c ldr r2, [r4, -0x18] | r2 = *((r4 - 0x18));
0x0003fb20 add r2, r3 | r2 += r3;
0x0003fb22 cmp.w r2, 0x80000 |
| if (r2 > case.0x3207a.11) {
0x0003fb26 blo 0x3fbaa |
0x0003fb28 ldr.w r3, [sb] | r3 = *(sb);
0x0003fb2c cmp r3, 1 |
| if (r3 <= 1) {
0x0003fb2e ble 0x3fc2e | goto label_31;
| }
0x0003fb30 ldr r1, [pc, 0x250] |
0x0003fb32 mov.w r2, 0x200 | r2 = case.0x3207a.11;
0x0003fb36 movs r0, 2 | r0 = 2;
0x0003fb38 mov.w r5, -1 | r5 = -1;
0x0003fb3c add r1, pc | r1 = 0x7f8c4;
0x0003fb3e bl 0x271b0 | zbx_zabbix_log ();
0x0003fb42 bl 0x37e10 | zbx_alarm_off ();
0x0003fb46 b 0x3fa8e | goto label_6;
| label_23:
0x0003fb48 blx 0xc15c | r0 = fcn_0000c15c ();
0x0003fb4c ldr r0, [r0] | r0 = *(r0);
0x0003fb4e bl 0x26fdc | zbx_strerror ();
0x0003fb52 ldr r1, [pc, 0x234] |
0x0003fb54 mov r3, r0 | r3 = r0;
0x0003fb56 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0003fb58 movs r0, 3 | r0 = 3;
0x0003fb5a add r1, pc | r1 = 0x7f8e8;
0x0003fb5c bl 0x271b0 | zbx_zabbix_log ();
0x0003fb60 b 0x3f944 | goto label_3;
| label_27:
0x0003fb62 bl 0x26fdc | zbx_strerror ();
0x0003fb66 ldr r2, [pc, 0x224] |
0x0003fb68 mov r3, r0 | r3 = r0;
0x0003fb6a ldr r1, [sp, 0x14] | r1 = var_14h;
0x0003fb6c ldr r0, [sp, 0x10] | r0 = var_10h;
0x0003fb6e add r2, pc | r2 = 0x7f900;
0x0003fb70 bl 0x38ea0 | zbx_snprintf ();
0x0003fb74 mov r0, r5 | r0 = r5;
0x0003fb76 movs r1, 0xf | r1 = 0xf;
0x0003fb78 blx 0xc0c8 | r0 = exit (r0);
0x0003fb7c adds r3, r0, 1 | r3 = r0 + 1;
0x0003fb7e mov r5, r0 | r5 = r0;
| if (r3 == r0) {
0x0003fb80 beq 0x3fc56 | goto label_32;
| }
0x0003fb82 movs r1, 0 | r1 = 0;
0x0003fb84 mov r0, r6 | r0 = r6;
0x0003fb86 bl 0x3f5c4 | fcn_0003f5c4 (r0, r1);
0x0003fb8a mov.w r5, -1 | r5 = -1;
0x0003fb8e bl 0x37e10 | zbx_alarm_off ();
0x0003fb92 b 0x3fa8e | goto label_6;
| label_24:
0x0003fb94 ldr r2, [pc, 0x1f8] |
0x0003fb96 movs r0, 4 | r0 = 4;
0x0003fb98 ldr r1, [pc, 0x1f8] |
0x0003fb9a ldr r3, [r4, -0xc] | r3 = *((r4 - 0xc));
0x0003fb9e add r2, pc | r2 = 0x7f932;
0x0003fba0 adds r2, 0xc | r2 += 0xc;
0x0003fba2 add r1, pc | r1 = 0x7f93a;
0x0003fba4 bl 0x271b0 | zbx_zabbix_log ();
0x0003fba8 b 0x3f9f4 | goto label_7;
| }
0x0003fbaa ldr r3, [r4, -0x10] | r3 = *((r4 - 0x10));
0x0003fbae ands r5, r3, 0x7f | r5 = r3 & 0x7f;
| if (r5 != r3) {
0x0003fbb2 bne 0x3fbf6 | goto label_33;
| }
0x0003fbb4 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0003fbb6 cmp r2, 1 |
| if (r2 != 1) {
0x0003fbb8 bne 0x3fc38 | goto label_34;
| }
0x0003fbba ubfx r3, r3, 8, 8 | r3 = (r3 >> 8) & ((1 << 8) - 1);
0x0003fbbe cmp r3, 0 |
| if (r3 == 0) {
0x0003fbc0 beq 0x3fc38 | goto label_34;
| }
0x0003fbc2 ldr r1, [r4, -0x14] | r1 = *((r4 - 0x14));
0x0003fbc6 ldrb r2, [r1] | r2 = *(r1);
0x0003fbc8 cmp r2, 0 |
| if (r2 == 0) {
0x0003fbca beq 0x3fcb2 | goto label_35;
| }
| do {
| label_11:
0x0003fbcc ldrd r0, r2, [sp, 0x10] | __asm ("ldrd r0, r2, [var_10h]");
0x0003fbd0 mov.w r5, -1 | r5 = -1;
0x0003fbd4 bl 0x394f0 | zbx_strlcpy ();
0x0003fbd8 bl 0x37e10 | zbx_alarm_off ();
0x0003fbdc b 0x3fa8e | goto label_6;
| label_28:
0x0003fbde ldr.w r0, [r8] | r0 = *(r8);
0x0003fbe2 bl 0x26fdc | zbx_strerror ();
0x0003fbe6 ldr r1, [pc, 0x1b0] |
0x0003fbe8 mov r3, r0 | r3 = r0;
0x0003fbea ldr r2, [sp, 0xc] | r2 = var_ch;
0x0003fbec movs r0, 2 | r0 = 2;
0x0003fbee add r1, pc | r1 = 0x7f98c;
0x0003fbf0 bl 0x271b0 | zbx_zabbix_log ();
0x0003fbf4 b 0x3fa72 | goto label_8;
| label_33:
0x0003fbf6 ldr r1, [r4, -0x14] | r1 = *((r4 - 0x14));
0x0003fbfa ldrb r3, [r1] | r3 = *(r1);
0x0003fbfc cmp r3, 0 |
0x0003fbfe bne 0x3fbcc |
| } while (r3 != 0);
0x0003fc00 adds r3, r5, 1 | r3 = r5 + 1;
0x0003fc02 sbfx r3, r3, 1, 7 | __asm ("sbfx r3, r3, 1, 7");
0x0003fc06 cmp r3, 0 |
| if (r3 > 0) {
0x0003fc08 ble 0x3fc22 |
0x0003fc0a ldr r2, [pc, 0x190] |
0x0003fc0c mov r3, r5 | r3 = r5;
0x0003fc0e ldr r1, [sp, 0x14] | r1 = var_14h;
0x0003fc10 mov.w r5, -1 | r5 = -1;
0x0003fc14 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0003fc16 add r2, pc | r2 = 0x7f9b8;
0x0003fc18 bl 0x38ea0 | zbx_snprintf ();
0x0003fc1c bl 0x37e10 | zbx_alarm_off ();
0x0003fc20 b 0x3fa8e | goto label_6;
| }
0x0003fc22 ldr r1, [pc, 0x17c] |
0x0003fc24 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0003fc26 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0003fc28 add r1, pc | r1 = 0x7f9ce;
0x0003fc2a bl 0x394f0 | zbx_strlcpy ();
| label_31:
0x0003fc2e mov.w r5, -1 | r5 = -1;
0x0003fc32 bl 0x37e10 | zbx_alarm_off ();
0x0003fc36 b 0x3fa8e | goto label_6;
| label_34:
0x0003fc38 bl 0x37e10 | zbx_alarm_off ();
0x0003fc3c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0003fc3e ldrb r3, [r3] | r3 = *(r3);
0x0003fc40 cmp r3, 0 |
| if (r3 == 0) {
0x0003fc42 beq.w 0x3fab0 | goto label_9;
| }
0x0003fc46 ldr.w r3, [sb] | r3 = *(sb);
0x0003fc4a cmp r3, 2 |
0x0003fc4c it le |
| if (r3 <= 2) {
0x0003fc4e movle r3, 0 | r3 = 0;
| goto label_36;
| }
| if (r3 <= 2) {
| label_36:
0x0003fc50 ble.w 0x3fab0 | goto label_9;
| }
0x0003fc54 b 0x3fa9c | goto label_10;
| label_32:
0x0003fc56 ldr.w r3, [sb] | r3 = *(sb);
0x0003fc5a cmp r3, 1 |
| if (r3 > 1) {
0x0003fc5c bgt 0x3fd18 | goto label_37;
| }
| label_12:
0x0003fc5e movs r1, 0 | r1 = 0;
0x0003fc60 mov r0, r6 | r0 = r6;
0x0003fc62 bl 0x3f5c4 | r0 = fcn_0003f5c4 (r0, r1);
0x0003fc66 bl 0x37e10 | zbx_alarm_off ();
0x0003fc6a b 0x3fa8e | goto label_6;
| label_14:
0x0003fc6c ldr r0, [r4, -0xc] | r0 = *((r4 - 0xc));
0x0003fc70 blx 0xc47c | fcn_0000c47c ();
0x0003fc74 ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x0003fc78 blx 0xc47c | fcn_0000c47c ();
| label_13:
0x0003fc7c blx 0xc15c | r0 = fcn_0000c15c ();
0x0003fc80 ldr r0, [r0] | r0 = *(r0);
0x0003fc82 bl 0x26fdc | r0 = zbx_strerror ();
0x0003fc86 mov r1, r0 | r1 = r0;
0x0003fc88 b 0x3fbcc | goto label_11;
| label_19:
0x0003fc8a ldr.w r3, [sb] | r3 = *(sb);
0x0003fc8e cmp r3, 1 |
| if (r3 <= 1) {
0x0003fc90 ble.w 0x3f944 | goto label_3;
| }
0x0003fc94 blx 0xc15c | r0 = fcn_0000c15c ();
0x0003fc98 ldr r0, [r0] | r0 = *(r0);
0x0003fc9a bl 0x26fdc | zbx_strerror ();
0x0003fc9e ldr r2, [pc, 0x104] |
0x0003fca0 mov r3, r0 | r3 = r0;
0x0003fca2 ldr r1, [pc, 0x104] |
0x0003fca4 movs r0, 2 | r0 = 2;
0x0003fca6 add r2, pc | r2 = 0x7fa50;
0x0003fca8 add r1, pc | r1 = 0x7fa56;
0x0003fcaa adds r2, 0xc | r2 += 0xc;
0x0003fcac bl 0x271b0 | zbx_zabbix_log ();
0x0003fcb0 b 0x3f944 | goto label_3;
| label_35:
0x0003fcb2 ldr r2, [pc, 0xf8] |
0x0003fcb4 mov.w r5, -1 | r5 = -1;
0x0003fcb8 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0003fcba ldr r0, [sp, 0x10] | r0 = var_10h;
0x0003fcbc add r2, pc | r2 = 0x7fa6e;
0x0003fcbe bl 0x38ea0 | zbx_snprintf ();
0x0003fcc2 bl 0x37e10 | zbx_alarm_off ();
0x0003fcc6 b 0x3fa8e | goto label_6;
| label_18:
0x0003fcc8 ldr.w r3, [sb] | r3 = *(sb);
0x0003fccc cmp r3, 1 |
| if (r3 <= 1) {
0x0003fcce ble.w 0x3f944 | goto label_3;
| }
0x0003fcd2 blx 0xc15c | r0 = fcn_0000c15c ();
0x0003fcd6 ldr r0, [r0] | r0 = *(r0);
0x0003fcd8 bl 0x26fdc | zbx_strerror ();
0x0003fcdc ldr r2, [pc, 0xd0] |
0x0003fcde mov r3, r0 | r3 = r0;
0x0003fce0 ldr r1, [pc, 0xd0] |
0x0003fce2 movs r0, 2 | r0 = 2;
0x0003fce4 add r2, pc | r2 = 0x7fa98;
0x0003fce6 add r1, pc | r1 = 0x7fa9e;
0x0003fce8 adds r2, 0xc | r2 += 0xc;
0x0003fcea bl 0x271b0 | zbx_zabbix_log ();
0x0003fcee b 0x3f944 | goto label_3;
| label_16:
0x0003fcf0 cmp r3, 1 |
| if (r3 <= 1) {
0x0003fcf2 ble.w 0x3f944 | goto label_3;
| }
0x0003fcf6 blx 0xc15c | r0 = fcn_0000c15c ();
0x0003fcfa ldr r0, [r0] | r0 = *(r0);
0x0003fcfc bl 0x26fdc | zbx_strerror ();
0x0003fd00 ldr r2, [pc, 0xb4] |
0x0003fd02 mov r3, r0 | r3 = r0;
0x0003fd04 ldr r1, [pc, 0xb4] |
0x0003fd06 movs r0, 2 | r0 = 2;
0x0003fd08 add r2, pc | r2 = 0x7fac4;
0x0003fd0a add r1, pc | r1 = 0x7faca;
0x0003fd0c adds r2, 0xc | r2 += 0xc;
0x0003fd0e bl 0x271b0 | zbx_zabbix_log ();
0x0003fd12 b 0x3f944 | goto label_3;
| label_30:
0x0003fd14 blx 0xbe48 | fcn_0000be48 ();
| label_37:
0x0003fd18 ldr.w r0, [r8] | r0 = *(r8);
0x0003fd1c bl 0x26fdc | zbx_strerror ();
0x0003fd20 ldr r1, [pc, 0x9c] |
0x0003fd22 mov r3, r0 | r3 = r0;
0x0003fd24 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0003fd26 movs r0, 2 | r0 = 2;
0x0003fd28 add r1, pc | r1 = 0x7faec;
0x0003fd2a bl 0x271b0 | zbx_zabbix_log ();
0x0003fd2e b 0x3fc5e | 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/sbin/zabbix_agentd @ 0x4074c */
| #include <stdint.h>
|
; (fcn) fcn.0004074c () | void fcn_0004074c (int16_t arg_0h, int16_t arg_1h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_48h, int16_t arg_4ch, int16_t arg_854h, int16_t arg_880h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_18h_2;
| int16_t var_24h;
| int32_t var_854h;
| int16_t var_85ch;
| int16_t var_4h;
| 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;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004074c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00040750 subw sp, sp, 0x85c | __asm ("subw sp, sp, case.0x3207a.11");
0x00040754 strd r2, r3, [sp, 0x14] | __asm ("strd r2, r3, [sp, 0x14]");
0x00040758 add.w fp, sp, 0x54 |
0x0004075c ldr r2, [pc, 0x30c] |
0x0004075e ldr.w r4, [sp, 0x880] | r4 = *(arg_880h);
0x00040762 ldr r3, [pc, 0x30c] | r3 = *(0x40a72);
0x00040764 add r2, pc | r2 = 0x811d4;
0x00040766 str r0, [sp, 0xc] | var_ch = r0;
0x00040768 str r4, [sp, 0x1c] | var_1ch = r4;
0x0004076a mov r4, r1 | r4 = r1;
0x0004076c ldr r3, [r2, r3] |
0x0004076e ldr r3, [r3] | r3 = *(0x811d4);
0x00040770 str.w r3, [sp, 0x854] | __asm ("str.w r3, [arg_854h]");
0x00040774 mov.w r3, 0 | r3 = 0;
0x00040778 cmp r1, 0 |
| if (r1 == 0) {
0x0004077a beq.w 0x40956 | goto label_8;
| }
0x0004077e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00040780 add.w r0, fp, r1 | r0 = fp + r1;
0x00040784 mov r2, fp | r2 = fp;
0x00040786 subs r3, 4 | r3 -= 4;
0x00040788 mov r1, r3 | r1 = r3;
0x0004078a str r3, [sp, 0x24] | *(arg_24h) = r3;
0x0004078c b 0x40798 |
| while (r3 < 0x7f) {
0x0004078e strb r3, [r2], 1 | *(r2) = r3;
| r2++;
0x00040792 cmp r2, r0 |
| if (r2 == r0) {
0x00040794 beq.w 0x40956 | goto label_8;
| }
0x00040798 ldr r3, [r1, 4]! | r3 = *((r1 += 4));
0x0004079c cmp r3, 0x7f |
0x0004079e bls 0x4078e |
| }
0x000407a0 ldr r3, [pc, 0x2d0] |
0x000407a2 mov.w sb, 0 | sb = 0;
0x000407a6 ldrd r1, r2, [sp, 0x18] | __asm ("ldrd r1, r2, [var_18h]");
0x000407aa mov sl, sb | sl = sb;
0x000407ac ldr r0, [sp, 0x14] | r0 = var_14h;
0x000407ae add r3, pc | r3 = 0x81226;
0x000407b0 bl 0x39168 | zbx_strcpy_alloc ()
0x000407b4 ldr r2, [sp, 0x24] | r2 = *(arg_24h);
0x000407b6 b 0x407ba |
| while (r4 != r8) {
0x000407b8 mov sl, r8 | sl = r8;
0x000407ba ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x000407be cmp r3, 0x7f |
| if (r3 <= 0x7f) {
0x000407c0 bhi 0x407d4 |
0x000407c2 rsb.w r1, sb, 0x800 | r1 = case.0x3207a.11 - sb;
0x000407c6 cmp r1, 1 |
| if (r1 < 1) {
0x000407c8 bls.w 0x40988 | goto label_5;
| }
0x000407cc strb.w r3, [fp, sb] | *((fp + sb)) = r3;
0x000407d0 add.w sb, sb, 1 | sb++;
| }
0x000407d4 add.w r8, sl, 1 | r8 = sl + 1;
0x000407d8 cmp r4, r8 |
0x000407da bne 0x407b8 |
| }
0x000407dc cmp.w sb, 0 |
| if (sb == 0) {
0x000407e0 beq.w 0x4098e | goto label_9;
| }
0x000407e4 cmp r8, sb |
0x000407e6 mov.w r3, 0x2d | r3 = 0x2d;
0x000407ea add.w r7, sb, 1 | r7 = sb + 1;
0x000407ee strb.w r3, [fp, sb] | *((fp + sb)) = r3;
| if (r8 < sb) {
0x000407f2 bls.w 0x40a4c | goto label_10;
| }
0x000407f6 str.w sb, [sp, 0x30] | __asm ("str.w sb, [arg_30h]");
| label_3:
0x000407fa movw r3, 0x41d5 | r3 = (r3 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x000407fe str.w r8, [sp, 0x4c] | __asm ("str.w r8, [arg_4ch]");
0x00040802 movt r3, 0xd41d | r3 = (r3 & 0xFFFF) | 0xNaN0000;
0x00040806 str.w sl, [sp, 0x20] | __asm ("str.w sl, [var_20h]");
0x0004080a str r3, [sp, 0x48] | *(arg_48h) = r3;
0x0004080c movs r4, 0 | r4 = 0;
0x0004080e ldr r3, [pc, 0x268] |
0x00040810 movs r5, 0x80 | r5 = 0x80;
0x00040812 str.w sb, [sp, 0x44] | __asm ("str.w sb, [arg_44h]");
0x00040816 str.w fp, [sp, 0x34] | __asm ("str.w fp, [arg_34h]");
0x0004081a add r3, pc | r3 = 0x81298;
0x0004081c str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x0004081e ldr r3, [pc, 0x25c] |
0x00040820 add r3, pc | r3 = 0x812a2;
0x00040822 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00040824 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00040826 add.w r3, r3, r8, lsl 2 | r3 += (r8 << 2);
0x0004082a mov r8, r7 | r8 = r7;
0x0004082c str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x0004082e movs r3, 0x48 | r3 = 0x48;
0x00040830 mov sl, r3 | sl = r3;
| label_4:
0x00040832 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00040834 mov.w fp, -1 |
0x00040838 ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
| do {
0x0004083a ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x0004083e cmp r2, r5 |
| if (r2 > r5) {
0x00040840 blo 0x40848 |
0x00040842 cmp fp, r2 |
0x00040844 it hs |
| if (fp >= r2) {
0x00040846 movhs fp, r2 | goto label_11;
| }
| }
| label_11:
0x00040848 cmp r1, r3 |
0x0004084a bne 0x4083a |
| } while (r1 != r3);
0x0004084c ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x0004084e sub.w r5, fp, r5 | r5 = fp - r5;
0x00040852 mvns r0, r4 | r0 = ~r4;
0x00040854 adds r6, r3, 1 | r6 = r3 + 1;
0x00040856 mov r1, r6 | r1 = r6;
0x00040858 bl 0x40cf8 | r0 = fcn_00040cf8 (r0, r1, r2);
0x0004085c cmp r5, r0 |
| if (r5 > r0) {
0x0004085e bhi.w 0x40988 | goto label_5;
| }
0x00040862 mla r3, r6, r5, r4 | __asm ("mla r3, r6, r5, r4");
0x00040866 str.w fp, [sp, 0x10] | __asm ("str.w fp, [var_10h]");
0x0004086a mov.w sb, 0 | sb = 0;
0x0004086e str r3, [sp, 8] | var_8h = r3;
0x00040870 ldr r3, [pc, 0x20c] |
0x00040872 add r3, pc | r3 = 0x812f6;
0x00040874 str r3, [sp, 0x28] | *(arg_28h) = r3;
0x00040876 ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x00040878 str r3, [sp, 4] | var_4h = r3;
0x0004087a b 0x40894 |
| while (r3 <= r2) {
0x0004087c ldr r3, [sp, 8] | r3 = var_8h;
0x0004087e adds r3, 1 | r3++;
0x00040880 str r3, [sp, 8] | var_8h = r3;
| if (r3 == 1) {
0x00040882 beq.w 0x40988 | goto label_5;
| }
| label_0:
0x00040886 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00040888 add.w r3, sb, 1 | r3 = sb + 1;
0x0004088c cmp sb, r2 |
| if (sb == r2) {
0x0004088e beq.w 0x40a2e | goto label_12;
| }
0x00040892 mov sb, r3 | sb = r3;
0x00040894 ldr r2, [sp, 4] | r2 = var_4h;
0x00040896 ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x0004089a str r2, [sp, 4] | var_4h = r2;
0x0004089c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004089e cmp r3, r2 |
0x000408a0 blo 0x4087c |
| }
| if (r3 != r2) {
0x000408a2 bne 0x40886 | goto label_0;
| }
0x000408a4 cmp.w r8, 0x800 |
| if (r8 >= 0x800) {
0x000408a8 bhs 0x40988 | goto label_5;
| }
0x000408aa ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x000408ac add.w r6, r8, 1 | r6 = r8 + 1;
0x000408b0 ldr r0, [sp, 8] | r0 = var_8h;
0x000408b2 movs r5, 0x24 | r5 = 0x24;
0x000408b4 ldr.w fp, [sp, 0x38] | fp = *(arg_38h);
0x000408b8 add r8, r3 | r8 += r3;
0x000408ba str.w sb, [sp, 0x40] | __asm ("str.w sb, [arg_40h]");
0x000408be b 0x40910 |
| while (sl <= r5) {
0x000408c0 add.w r3, sl, 0x1a | r3 = sl + 0x1a;
0x000408c4 cmp r3, r5 |
0x000408c6 it hi |
| if (r3 <= r5) {
0x000408c8 subhi sb, r5, sl | sb = r5 - sl;
| }
| if (r3 > r5) {
0x000408cc bhi 0x40918 | goto label_13;
| }
0x000408ce cmp r0, 0x19 |
| if (r0 < 0x19) {
0x000408d0 bls.w 0x40a5a | goto label_14;
| }
0x000408d4 movw r1, 0xcccd | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x000408d8 sub.w r4, r0, 0x1a | r4 = r0 - 0x1a;
0x000408dc movt r1, 0xcccc | r1 = (r1 & 0xFFFF) | 0xNaN0000;
0x000408e0 movs r7, 0xa | r7 = 0xa;
0x000408e2 umull r3, r1, r1, r4 | r3:r1 = r1 * r4;
0x000408e6 lsrs r1, r1, 3 | r1 >>= 3;
0x000408e8 add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x000408ec sub.w r1, r4, r1, lsl 1 | r1 = r4 - (r1 << 1);
0x000408f0 adds r1, 0x1a | r1 += 0x1a;
| label_2:
0x000408f2 adds r1, 0x16 | r1 += 0x16;
0x000408f4 uxtb r1, r1 | r1 = (int8_t) r1;
| label_1:
0x000408f6 strb r1, [r8], 1 | *(r8) = r1;
| r8++;
0x000408fa mov r0, r4 | r0 = r4;
0x000408fc mov r1, r7 | r1 = r7;
0x000408fe adds r5, 0x24 | r5 += 0x24;
0x00040900 bl 0x40cf8 | fcn_00040cf8 (r0, r1, r2);
0x00040904 cmp.w r6, 0x800 |
0x00040908 add.w r3, r6, 1 | r3 = r6 + 1;
| if (r6 >= 0x800) {
0x0004090c bhs 0x40988 | goto label_5;
| }
0x0004090e mov r6, r3 | r6 = r3;
0x00040910 cmp sl, r5 |
0x00040912 blo 0x408c0 |
| }
0x00040914 mov.w sb, 1 | sb = 1;
| label_13:
0x00040918 cmp sb, r0 |
| if (sb > r0) {
0x0004091a bhi 0x40996 | goto label_15;
| }
0x0004091c sub.w r4, r0, sb | r4 = r0 - sb;
0x00040920 rsb.w r7, sb, 0x24 | r7 = 0x24 - sb;
0x00040924 mov r1, r7 | r1 = r7;
0x00040926 mov r0, r4 | r0 = r4;
0x00040928 bl 0x40f54 | fcn_00040f54 (r0);
0x0004092c add r1, sb | r1 += sb;
0x0004092e cmp r1, 0x19 |
0x00040930 itt ls |
| if (r1 > 0x19) {
0x00040932 addls r1, 0x61 | r1 += 0x61;
| }
| if (r1 > 0x19) {
0x00040934 uxtbls r1, r1 | __asm ("uxtbls r1, r1");
| goto label_16;
| }
| if (r1 < 0x19) {
| label_16:
0x00040936 bls 0x408f6 | goto label_1;
| }
0x00040938 sub.w r3, r1, 0x1a | r3 = r1 - 0x1a;
0x0004093c cmp r3, 9 |
| if (r3 < 9) {
0x0004093e bls 0x408f2 | goto label_2;
| }
0x00040940 ldr r0, [pc, 0x140] |
0x00040942 mov r2, fp | r2 = fp;
0x00040944 ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x00040946 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00040948 add r0, pc | r0 = 0x813d0;
0x0004094a bl 0x38c64 | zbx_error ();
0x0004094e bl 0x2b778 | zbx_backtrace ();
0x00040952 movs r1, 0 | r1 = 0;
0x00040954 b 0x408f6 | goto label_1;
| label_8:
0x00040956 movs r3, 0 | r3 = 0;
0x00040958 strb.w r3, [fp, r4] | *((fp + r4)) = r3;
| label_6:
0x0004095c ldr r0, [sp, 0x14] | r0 = var_14h;
0x0004095e mov r3, fp | r3 = fp;
0x00040960 ldrd r1, r2, [sp, 0x18] | __asm ("ldrd r1, r2, [var_18h]");
0x00040964 bl 0x39168 | zbx_strcpy_alloc ()
0x00040968 movs r0, 0 | r0 = 0;
| do {
0x0004096a ldr r2, [pc, 0x11c] |
0x0004096c ldr r3, [pc, 0x100] | r3 = *(0x40a70);
0x0004096e add r2, pc | r2 = 0x813fc;
0x00040970 ldr r3, [r2, r3] | r3 = *(0x813fc);
0x00040972 ldr r2, [r3] | r2 = *(0x813fc);
0x00040974 ldr.w r3, [sp, 0x854] | r3 = *(arg_854h);
0x00040978 eors r2, r3 | r2 ^= r3;
0x0004097a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004097e bne 0x40a66 | goto label_17;
| }
0x00040980 addw sp, sp, 0x85c | __asm ("addw sp, var_85ch");
0x00040984 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00040988 mov.w r0, -1 | r0 = -1;
0x0004098c b 0x4096a |
| } while (1);
| label_9:
0x0004098e mov r7, sb | r7 = sb;
0x00040990 str.w sb, [sp, 0x30] | __asm ("str.w sb, [arg_30h]");
0x00040994 b 0x407fa | goto label_3;
| label_15:
0x00040996 cmp r0, 0x19 |
0x00040998 ldr.w sb, [sp, 0x40] | sb = *(arg_40h);
| if (r0 < 0x19) {
0x0004099c bls 0x40a5e | goto label_18;
| }
0x0004099e sub.w r3, r0, 0x1a | r3 = r0 - 0x1a;
0x000409a2 cmp r3, 9 |
0x000409a4 itt ls |
| if (r3 > 9) {
0x000409a6 addls r3, r0, 0x16 | r3 = r0 + 0x16;
| }
| if (r3 <= 9) {
0x000409aa uxtb r3, r3 | r3 = (int8_t) r3;
| }
| if (r3 >= 9) {
0x000409ac bls 0x409c8 |
0x000409ae ldr r3, [pc, 0xdc] |
0x000409b0 ldr r2, [pc, 0xdc] |
0x000409b2 ldr r1, [pc, 0xe0] |
0x000409b4 ldr r0, [pc, 0xe0] |
0x000409b6 add r3, pc | r3 = 0x81448;
0x000409b8 add r2, pc | r2 = 0x8144c;
0x000409ba add r1, pc | r1 = 0x81454;
0x000409bc add r0, pc | r0 = 0x81458;
0x000409be bl 0x38c64 | zbx_error ();
0x000409c2 bl 0x2b778 | zbx_backtrace ();
0x000409c6 movs r3, 0 | r3 = 0;
| }
| label_7:
0x000409c8 ldr r4, [sp, 0x30] | r4 = *(arg_30h);
0x000409ca mov.w sl, 0 | sl = 0;
0x000409ce strb.w r3, [r8] | *(r8) = r3;
0x000409d2 ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x000409d4 adds r5, r4, 1 | r5 = r4 + 1;
0x000409d6 ldr r0, [sp, 8] | r0 = var_8h;
0x000409d8 cmp r3, r4 |
0x000409da ite eq |
| if (r3 != r4) {
0x000409dc moveq r1, 0x2bc | r1 = case.0x3207a.11;
| }
| if (r3 != r4) {
0x000409e0 movs r1, 2 | r1 = 2;
| }
0x000409e2 bl 0x40cf8 | fcn_00040cf8 (r0, r1, r2);
0x000409e6 mov r1, r5 | r1 = r5;
0x000409e8 mov r4, r0 | r4 = r0;
0x000409ea bl 0x40cf8 | r0 = fcn_00040cf8 (r0, r1, r2);
0x000409ee adds r1, r4, r0 | r1 = r4 + r0;
0x000409f0 cmp.w r1, 0x1c8 |
| if (r1 <= 0x1c8) {
0x000409f4 blo 0x40a16 | goto label_19;
| }
0x000409f6 ldr r4, [sp, 0x48] | r4 = *(arg_48h);
0x000409f8 movw r0, 0x3e57 | r0 = (r0 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
| do {
0x000409fc umull r2, r3, r4, r1 | r2:r3 = r4 * r1;
0x00040a00 mov r2, r1 | r2 = r1;
0x00040a02 cmp r2, r0 |
0x00040a04 add.w sl, sl, 0x24 | sl += 0x24;
0x00040a08 sub.w r1, r1, r3 | r1 -= r3;
0x00040a0c add.w r3, r3, r1, lsr 1 | r3 += (r1 >> 1);
0x00040a10 lsr.w r1, r3, 5 | r1 = r3 >> 5;
0x00040a14 bhi 0x409fc |
| } while (r2 > r0);
| label_19:
0x00040a16 add.w r0, r1, r1, lsl 3 | r0 = r1 + (r1 << 3);
0x00040a1a adds r1, 0x26 | r1 += 0x26;
0x00040a1c str r5, [sp, 0x30] | *(arg_30h) = r5;
0x00040a1e mov r8, r6 | r8 = r6;
0x00040a20 lsls r0, r0, 2 | r0 <<= 2;
0x00040a22 bl 0x40cf8 | fcn_00040cf8 (r0, r1, r2);
0x00040a26 movs r3, 0 | r3 = 0;
0x00040a28 add sl, r0 | sl += r0;
0x00040a2a str r3, [sp, 8] | var_8h = r3;
0x00040a2c b 0x40886 | goto label_0;
| label_12:
0x00040a2e ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x00040a30 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00040a32 ldr.w fp, [sp, 0x10] | fp = var_10h;
0x00040a36 ldr r4, [sp, 8] | r4 = var_8h;
0x00040a38 cmp r3, r2 |
0x00040a3a add.w r5, fp, 1 | r5 += arg_1h;
0x00040a3e add.w r4, r4, 1 | r4++;
| if (r3 > r2) {
0x00040a42 bhi.w 0x40832 | goto label_4;
| }
0x00040a46 ldr.w fp, [sp, 0x34] | fp = *(arg_34h);
0x00040a4a mov r7, r8 | r7 = r8;
| label_10:
0x00040a4c cmp.w r7, 0x800 |
| if (r7 >= 0x800) {
0x00040a50 bhs 0x40988 | goto label_5;
| }
0x00040a52 movs r3, 0 | r3 = 0;
0x00040a54 strb.w r3, [fp, r7] | *((fp + r7)) = r3;
0x00040a58 b 0x4095c | goto label_6;
| label_14:
0x00040a5a ldr.w sb, [sp, 0x40] | sb = *(arg_40h);
| label_18:
0x00040a5e add.w r3, r0, 0x61 | r3 = r0 + 0x61;
0x00040a62 uxtb r3, r3 | r3 = (int8_t) r3;
0x00040a64 b 0x409c8 | goto label_7;
| label_17:
0x00040a66 blx 0xbe48 | fcn_0000be48 ();
0x00040a6a nop |
0x00040a6c stm r4!, {r3, r7} | *(r4!) = r3;
| *((r4! + 4)) = r7;
0x00040a6e movs r1, r0 | r1 = r0;
0x00040a70 lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x00040a72 movs r0, r0 |
| if (r2 != 0) {
0x00040a74 cbnz r2, 0x40af6 | void (*0x40af6)() ();
| }
0x00040a76 movs r0, r0 |
0x00040a78 asrs r6, r5, 0x1e | r6 = r5 >> 0x1e;
0x00040a7a movs r0, r0 |
| if (r0 != 0) {
0x00040a7c cbnz r0, 0x40ae4 | void (*0x40ae4)() ();
| }
0x00040a7e movs r0, r0 |
| if (r2 != 0) {
0x00040a80 cbnz r2, 0x40ace | void (*0x40ace)() ();
| }
0x00040a82 movs r0, r0 |
0x00040a84 adds r0, r7, r2 | r0 = r7 + r2;
0x00040a86 movs r0, r0 |
0x00040a88 stm r2!, {r1, r2, r3, r4, r5, r6} | *(r2!) = r1;
| *((r2! + 4)) = r2;
| *((r2! + 8)) = r3;
| *((r2! + 12)) = r4;
| *((r2! + 16)) = r5;
| *((r2! + 20)) = r6;
0x00040a8a movs r1, r0 | r1 = r0;
0x00040a8c asrs r2, r2, 0x18 | r2 >>= 0x18;
0x00040a8e movs r0, r0 |
| if (r0 != 0) {
0x00040a90 cbnz r0, 0x40ad2 | void (*0x40ad2)() ();
| }
0x00040a92 movs r0, r0 |
| if (r2 != 0) {
0x00040a94 cbnz r2, 0x40ad0 | void (*0x40ad0)() ();
| }
0x00040a96 movs r0, r0 |
0x00040a98 adds r4, r0, r1 | r4 = r0 + r1;
0x00040a9a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x239bc */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_CONTENTS () | void VFS_FILE_CONTENTS (int16_t arg_290h, int16_t arg_3c0h, int16_t arg_10000h, int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_ach;
| int16_t var_b0h;
| r0 = arg1;
| r1 = arg2;
0x000239bc ldr r2, [pc, 0x35c] |
0x000239be ldr r3, [pc, 0x360] | r3 = *(0x23d22);
0x000239c0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000239c4 mov r7, r0 | r7 = r0;
0x000239c6 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x000239ca add r2, pc | r2 = 0x476ea;
0x000239cc sub.w sp, sp, 0x10000 |
0x000239d0 movs r6, 0 | r6 = 0;
0x000239d2 ldr r3, [r2, r3] |
0x000239d4 sub sp, 0xb4 |
0x000239d6 add.w r0, sp, 0x10000 | r0 += arg_10000h;
0x000239d8 adds r0, 0x80 | r0 += 0x80;
0x000239da add r4, sp, 0xb0 | r4 += var_b0h;
0x000239dc adds r0, 0xac | r0 += 0xac;
0x000239de mov r5, r1 | r5 = r1;
0x000239e0 ldr r3, [r3] | r3 = *(0x476ea);
0x000239e2 str r3, [r0] | *(r0) = r3;
0x000239e4 mov.w r3, 0 | r3 = 0;
0x000239e8 strd r6, r6, [r4, -0x9c] | __asm ("strd r6, r6, [r4, -0x9c]");
0x000239ec str r6, [r4, -0x94] | *((r4 - 0x94)) = r6;
0x000239f0 bl 0x34f20 | zbx_time ();
0x000239f4 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000239f6 ldr.w r8, [pc, 0x32c] |
0x000239fa cmp r3, 2 |
0x000239fc add r8, pc | r8 = 0x47726;
| if (r3 > 2) {
0x000239fe bgt.w 0x23b66 | goto label_9;
| }
0x00023a02 cmp r3, 0 |
0x00023a04 vmov.f64 d9, d0 | __asm ("vmov.f64 d9, d0");
0x00023a08 itt gt |
| if (r3 <= 0) {
0x00023a0a ldrgt r2, [r7, 8] | r2 = *((r7 + 8));
| }
| if (r3 <= 0) {
0x00023a0c ldrgt r6, [r2] | r6 = *(r2);
| }
0x00023a0e cmp r3, 2 |
| if (r3 == 2) {
0x00023a10 beq.w 0x23b50 | goto label_10;
| }
| label_1:
0x00023a14 movs r3, 0 | r3 = 0;
0x00023a16 strb r3, [r4, -0x24] | *((r4 - 0x24)) = r3;
| if (r6 != 0) {
| label_2:
0x00023a1a cbz r6, 0x23a20 |
0x00023a1c ldrb r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x00023a1e cbnz r3, 0x23a6a | goto label_11;
| }
| }
0x00023a20 ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x00023a22 movs r6, 1 | r6 = 1;
0x00023a24 ldr r3, [pc, 0x300] |
0x00023a26 movs r2, 0 | r2 = 0;
0x00023a28 movw r1, 0x139 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00023a2c orr r0, r0, 0x20 | r0 |= 0x20;
0x00023a30 str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x00023a32 add r3, pc | r3 = 0x4775e;
0x00023a34 ldr r0, [pc, 0x2f4] |
0x00023a36 add r0, pc | r0 = 0x47766;
0x00023a38 bl 0x35d28 | zbx_strdup2 ();
0x00023a3c str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| label_3:
0x00023a3e ldr r2, [pc, 0x2f0] |
0x00023a40 add.w r1, sp, 0x10000 | r1 += arg_10000h;
0x00023a44 ldr r3, [pc, 0x2d8] | r3 = *(0x23d20);
0x00023a46 adds r1, 0xac | r1 += 0xac;
0x00023a48 add r2, pc | r2 = 0x4777e;
0x00023a4a ldr r3, [r2, r3] | r3 = *(0x4777e);
0x00023a4c ldr r2, [r3] | r2 = *(0x4777e);
0x00023a4e ldr r3, [r1] | r3 = *(r1);
0x00023a50 eors r2, r3 | r2 ^= r3;
0x00023a52 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00023a56 bne.w 0x23d16 | goto label_12;
| }
0x00023a5a mov r0, r6 | r0 = r6;
0x00023a5c add.w sp, sp, 0x10000 |
0x00023a60 add sp, 0xb4 |
0x00023a62 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x00023a66 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x00023a6a movs r1, 0 | r1 = 0;
0x00023a6c mov r0, r6 | r0 = r6;
0x00023a6e blx 0xbfe4 | r0 = puts (r0);
0x00023a72 adds r3, r0, 1 | r3 = r0 + 1;
0x00023a74 mov r7, r0 | r7 = r0;
| if (r3 == r0) {
0x00023a76 beq.w 0x23bac | goto label_13;
| }
0x00023a7a ldr r3, [pc, 0x2b8] | r3 = *(0x23d36);
0x00023a7c ldr.w fp, [r8, r3] | fp = *((r8 + r3));
0x00023a80 vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x00023a84 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x00023a88 bl 0x34f20 | zbx_time ();
0x00023a8c vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x00023a90 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x00023a94 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 < r0) {
0x00023a98 bmi 0x23b86 | goto label_14;
| }
0x00023a9a sub.w r1, r4, 0x90 | r1 = r4 - 0x90;
0x00023a9e mov r0, r7 | r0 = r7;
0x00023aa0 blx 0xc40c | r0 = fcn_0000c40c ();
0x00023aa4 mov r6, r0 | r6 = r0;
0x00023aa6 cmp r0, 0 |
| if (r0 != 0) {
0x00023aa8 bne.w 0x23bf0 | goto label_15;
| }
0x00023aac ldrd r2, r3, [r4, -0x60] | __asm ("ldrd r2, r3, [r4, -0x60]");
0x00023ab0 cmp.w r2, 0x10001 |
0x00023ab4 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 0x10001) {
0x00023ab8 bge.w 0x23bd0 | goto label_16;
| }
0x00023abc vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x00023ac0 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x00023ac4 bl 0x34f20 | zbx_time ();
0x00023ac8 vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x00023acc vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x00023ad0 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 < 0x10001) {
0x00023ad4 bmi.w 0x23cb4 | goto label_17;
| }
0x00023ad8 sub.w r3, r4, 0x94 | r3 = r4 - 0x94;
0x00023adc mov r8, r6 | r8 = r6;
0x00023ade add.w sl, sp, 0x8c | sl += var_8ch;
0x00023ae2 add.w sb, sp, 0xac | sb += var_ach;
0x00023ae6 str r3, [sp, 4] | var_4h = r3;
0x00023ae8 sub.w r3, r4, 0x98 | r3 = r4 - 0x98;
0x00023aec strd r3, r6, [sp, 8] | __asm ("strd r3, r6, [sp, 8]");
| do {
| label_0:
0x00023af0 mov r3, sl | r3 = sl;
0x00023af2 mov.w r2, 0x10000 | r2 = case.0x3207a.11;
0x00023af6 mov r1, sb | r1 = sb;
0x00023af8 mov r0, r7 | r0 = r7;
0x00023afa bl 0x34a50 | r0 = zbx_read ();
0x00023afe subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 <= r0) {
0x00023b00 ble.w 0x23c14 | goto label_18;
| }
0x00023b04 vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x00023b08 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x00023b0c bl 0x34f20 | zbx_time ();
0x00023b10 vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x00023b14 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x00023b18 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r6 < r0) {
0x00023b1c bmi.w 0x23c5a | goto label_19;
| }
0x00023b20 add r8, r6 | r8 += r6;
0x00023b22 cmp.w r8, 0x10000 |
| if (r8 > 0x10000) {
0x00023b26 bgt.w 0x23c8c | goto label_20;
| }
0x00023b2a mov r1, r6 | r1 = r6;
0x00023b2c mov r2, sl | r2 = sl;
0x00023b2e mov r0, sb | r0 = sb;
0x00023b30 bl 0x3a550 | r0 = convert_to_utf8 ();
0x00023b34 mov r6, r0 | r6 = r0;
0x00023b36 mov r3, r0 | r3 = r0;
0x00023b38 ldr r2, [sp, 4] | r2 = var_4h;
0x00023b3a sub.w r0, r4, 0x9c | r0 = r4 - 0x9c;
0x00023b3e ldr r1, [sp, 8] | r1 = var_8h_2;
0x00023b40 bl 0x39168 | zbx_strcpy_alloc ()
0x00023b44 cmp r6, 0 |
0x00023b46 beq 0x23af0 |
| } while (r6 == 0);
0x00023b48 mov r0, r6 | r0 = r6;
0x00023b4a blx 0xbd14 | gai_strerror ();
0x00023b4e b 0x23af0 | goto label_0;
| label_10:
0x00023b50 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00023b52 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00023b54 cmp r1, 0 |
| if (r1 == 0) {
0x00023b56 beq.w 0x23a14 | goto label_1;
| }
0x00023b5a movs r2, 0x20 | r2 = 0x20;
0x00023b5c sub.w r0, r4, 0x24 | r0 = r4 - 0x24;
0x00023b60 bl 0x394f0 | zbx_strlcpy ();
0x00023b64 b 0x23a1a | goto label_2;
| label_9:
0x00023b66 ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x00023b68 mov r2, r6 | r2 = r6;
0x00023b6a ldr r3, [pc, 0x1cc] |
0x00023b6c movw r1, 0x12b | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00023b70 movs r6, 1 | r6 = 1;
0x00023b72 orr r0, r0, 0x20 | r0 |= 0x20;
0x00023b76 str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x00023b78 add r3, pc | r3 = 0x478b6;
0x00023b7a ldr r0, [pc, 0x1c0] |
0x00023b7c add r0, pc | r0 = 0x478be;
0x00023b7e bl 0x35d28 | zbx_strdup2 ();
0x00023b82 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00023b84 b 0x23a3e | goto label_3;
| label_14:
0x00023b86 ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x00023b88 movs r6, 1 | r6 = 1;
0x00023b8a ldr r3, [pc, 0x1b4] |
0x00023b8c movs r2, 0 | r2 = 0;
0x00023b8e ldr r0, [pc, 0x1b4] |
0x00023b90 orr r1, r1, 0x20 | r1 |= 0x20;
0x00023b94 str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x00023b96 add r3, pc | r3 = 0x478dc;
0x00023b98 add r0, pc | r0 = 0x478e2;
0x00023b9a movw r1, 0x145 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00023b9e bl 0x35d28 | zbx_strdup2 ();
0x00023ba2 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| do {
| label_4:
0x00023ba4 mov r0, r7 | r0 = r7;
0x00023ba6 blx 0xc47c | fcn_0000c47c ();
0x00023baa b 0x23a3e | goto label_3;
| label_13:
0x00023bac ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x00023bae movs r6, 1 | r6 = 1;
0x00023bb0 orr r3, r3, 0x20 | r3 |= 0x20;
0x00023bb4 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x00023bb6 blx 0xc15c | r0 = fcn_0000c15c ();
0x00023bba ldr r0, [r0] | r0 = *(r0);
0x00023bbc bl 0x26fdc | zbx_strerror ();
0x00023bc0 ldr r1, [pc, 0x184] |
0x00023bc2 mov r2, r0 | r2 = r0;
0x00023bc4 movs r0, 0 | r0 = 0;
0x00023bc6 add r1, pc | r1 = 0x47912;
0x00023bc8 bl 0x396b0 | zbx_dsprintf ();
0x00023bcc str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00023bce b 0x23a3e | goto label_3;
| label_16:
0x00023bd0 ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x00023bd2 mov r2, r0 | r2 = r0;
0x00023bd4 ldr r3, [pc, 0x174] |
0x00023bd6 movs r6, 1 | r6 = 1;
0x00023bd8 ldr r0, [pc, 0x174] |
0x00023bda orr r1, r1, 0x20 | r1 |= 0x20;
0x00023bde str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x00023be0 add r3, pc | r3 = 0x47930;
0x00023be2 add r0, pc | r0 = 0x47936;
0x00023be4 movw r1, 0x151 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00023be8 bl 0x35d28 | zbx_strdup2 ();
0x00023bec str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00023bee b 0x23ba4 |
| } while (1);
| label_15:
0x00023bf0 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x00023bf2 movs r6, 1 | r6 = 1;
0x00023bf4 orr r3, r3, 0x20 | r3 |= 0x20;
0x00023bf8 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x00023bfa blx 0xc15c | r0 = fcn_0000c15c ();
0x00023bfe ldr r0, [r0] | r0 = *(r0);
0x00023c00 bl 0x26fdc | zbx_strerror ();
0x00023c04 ldr r1, [pc, 0x14c] |
0x00023c06 mov r2, r0 | r2 = r0;
0x00023c08 movs r0, 0 | r0 = 0;
0x00023c0a add r1, pc | r1 = 0x47962;
0x00023c0c bl 0x396b0 | zbx_dsprintf ();
0x00023c10 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00023c12 b 0x23ba4 | goto label_4;
| label_18:
0x00023c14 mov r1, r6 | r1 = r6;
0x00023c16 ldr r6, [sp, 0xc] | r6 = var_ch;
0x00023c18 adds r1, 1 | r1++;
| if (r1 == 1) {
0x00023c1a beq 0x23cf0 | goto label_21;
| }
0x00023c1c ldr r3, [r4, -0x94] | r3 = *((r4 - 0x94));
0x00023c20 ldr r0, [r4, -0x9c] | r0 = *((r4 - 0x9c));
0x00023c24 cmp r3, 0 |
| if (r3 != 0) {
0x00023c26 bne 0x23cd4 | goto label_22;
| }
| label_5:
0x00023c28 ldr r0, [r4, -0x9c] | r0 = *((r4 - 0x9c));
| if (r0 != 0) {
0x00023c2c cbz r0, 0x23c38 |
0x00023c2e blx 0xbd14 | gai_strerror ();
0x00023c32 movs r3, 0 | r3 = 0;
0x00023c34 str r3, [r4, -0x9c] | *((r4 - 0x9c)) = r3;
| }
0x00023c38 ldr r3, [pc, 0x11c] |
0x00023c3a movs r2, 0 | r2 = 0;
0x00023c3c ldr r0, [pc, 0x11c] |
0x00023c3e movw r1, 0x17f | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00023c42 add r3, pc | r3 = 0x4799e;
0x00023c44 add r0, pc | r0 = "GET %s%s HTTP/1.1\r\nHost: %s%s%s\r\nConnection: close\r\n\r\n";
0x00023c46 bl 0x35d28 | zbx_strdup2 ();
0x00023c4a str r0, [r4, -0x9c] | *((r4 - 0x9c)) = r0;
| label_6:
0x00023c4e ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x00023c50 str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
0x00023c52 orr r3, r3, 8 | r3 |= 8;
0x00023c56 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x00023c58 b 0x23ba4 | goto label_4;
| label_19:
0x00023c5a ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x00023c5c movw r1, 0x161 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00023c60 ldr r3, [pc, 0xfc] |
0x00023c62 ldr r0, [pc, 0x100] |
0x00023c64 orr r2, r2, 0x20 | r2 |= 0x20;
0x00023c68 add r3, pc | r3 = 0x479cc;
0x00023c6a str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x00023c6c add r0, pc | r0 = 0x479d6;
0x00023c6e movs r2, 0 | r2 = 0;
0x00023c70 bl 0x35d28 | zbx_strdup2 ();
0x00023c74 ldr r3, [r4, -0x9c] | r3 = *((r4 - 0x9c));
0x00023c78 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| if (r3 == 0) {
0x00023c7a cbz r3, 0x23cb0 | goto label_8;
| }
| do {
| label_7:
0x00023c7c mov r0, r3 | r0 = r3;
0x00023c7e movs r6, 1 | r6 = 1;
0x00023c80 blx 0xbd14 | gai_strerror ();
0x00023c84 movs r3, 0 | r3 = 0;
0x00023c86 str r3, [r4, -0x9c] | *((r4 - 0x9c)) = r3;
0x00023c8a b 0x23ba4 | goto label_4;
| label_20:
0x00023c8c ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x00023c8e mov.w r1, 0x168 | r1 = case.0x3207a.11;
0x00023c92 ldr r3, [pc, 0xd4] |
0x00023c94 ldr r0, [pc, 0xd4] |
0x00023c96 orr r2, r2, 0x20 | r2 |= 0x20;
0x00023c9a add r3, pc | r3 = 0x47a08;
0x00023c9c str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x00023c9e add r0, pc | r0 = 0x47a0e;
0x00023ca0 movs r2, 0 | r2 = 0;
0x00023ca2 bl 0x35d28 | zbx_strdup2 ();
0x00023ca6 ldr r3, [r4, -0x9c] | r3 = *((r4 - 0x9c));
0x00023caa str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00023cac cmp r3, 0 |
0x00023cae bne 0x23c7c |
| } while (r3 != 0);
| label_8:
0x00023cb0 movs r6, 1 | r6 = 1;
0x00023cb2 b 0x23ba4 | goto label_4;
| label_17:
0x00023cb4 ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x00023cb6 mov r2, r6 | r2 = r6;
0x00023cb8 ldr r3, [pc, 0xb4] |
0x00023cba movs r6, 1 | r6 = 1;
0x00023cbc ldr r0, [pc, 0xb4] |
0x00023cbe orr r1, r1, 0x20 | r1 |= 0x20;
0x00023cc2 str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x00023cc4 add r3, pc | r3 = 0x47a38;
0x00023cc6 add r0, pc | r0 = 0x47a3e;
0x00023cc8 movw r1, 0x157 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00023ccc bl 0x35d28 | zbx_strdup2 ();
0x00023cd0 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00023cd2 b 0x23ba4 | goto label_4;
| label_22:
0x00023cd4 ldr r1, [pc, 0xa0] |
0x00023cd6 add r1, pc | r1 = 0x47a52;
0x00023cd8 bl 0x3936c | zbx_rtrim ();
0x00023cdc ldr r3, [r4, -0x94] | r3 = *((r4 - 0x94));
0x00023ce0 subs r3, r3, r0 | r3 -= r0;
0x00023ce2 str r3, [r4, -0x94] | *((r4 - 0x94)) = r3;
0x00023ce6 cmp r3, 0 |
| if (r3 == 0) {
0x00023ce8 beq 0x23c28 | goto label_5;
| }
0x00023cea ldr r0, [r4, -0x9c] | r0 = *((r4 - 0x9c));
0x00023cee b 0x23c4e | goto label_6;
| label_21:
0x00023cf0 ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x00023cf2 mov.w r1, 0x174 | r1 = case.0x3207a.11;
0x00023cf6 ldr r3, [pc, 0x84] |
0x00023cf8 ldr r0, [pc, 0x84] |
0x00023cfa orr r2, r2, 0x20 | r2 |= 0x20;
0x00023cfe add r3, pc | r3 = "%04d-%02d-%02d,%02d:%02d:%02d.%03ld,%1c%02d:%02d";
0x00023d00 str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x00023d02 add r0, pc | r0 = 0x47a86;
0x00023d04 movs r2, 0 | r2 = 0;
0x00023d06 bl 0x35d28 | zbx_strdup2 ();
0x00023d0a ldr r3, [r4, -0x9c] | r3 = *((r4 - 0x9c));
0x00023d0e str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00023d10 cmp r3, 0 |
| if (r3 != 0) {
0x00023d12 bne 0x23c7c | goto label_7;
| }
0x00023d14 b 0x23cb0 | goto label_8;
| label_12:
0x00023d16 blx 0xbe48 | fcn_0000be48 ();
0x00023d1a nop |
0x00023d1c str r2, [sp, 0x88] | var_88h = r2;
0x00023d1e movs r3, r0 | r3 = r0;
0x00023d20 lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x00023d22 movs r0, r0 |
0x00023d24 str r1, [sp, 0x3c0] | *(arg_3c0h) = r1;
0x00023d26 movs r3, r0 | r3 = r0;
0x00023d28 lsrs r2, r6, 0x1e | r2 = r6 >> 0x1e;
0x00023d2a movs r2, r0 | r2 = r0;
0x00023d2c subs r0, 0xe6 | r0 -= 0xe6;
0x00023d2e movs r2, r0 | r2 = r0;
0x00023d30 str r1, [sp, 0x290] | *(arg_290h) = r1;
0x00023d32 movs r3, r0 | r3 = r0;
0x00023d34 lsls r0, r4, 0xf | r0 = r4 << 0xf;
0x00023d36 movs r0, r0 |
0x00023d38 lsrs r4, r2, 0x19 | r4 = r2 >> 0x19;
0x00023d3a movs r2, r0 | r2 = r0;
0x00023d3c adds r7, 0xa0 | r7 += 0xa0;
0x00023d3e movs r2, r0 | r2 = r0;
0x00023d40 adds r7, 0xda | r7 += 0xda;
0x00023d42 movs r2, r0 | r2 = r0;
0x00023d44 adds r7, 0x84 | r7 += 0x84;
0x00023d46 movs r2, r0 | r2 = r0;
0x00023d48 adds r7, 0x92 | r7 += 0x92;
0x00023d4a movs r2, r0 | r2 = r0;
0x00023d4c adds r7, 0xb0 | r7 += 0xb0;
0x00023d4e movs r2, r0 | r2 = r0;
0x00023d50 adds r7, 0x3a | r7 += 0x3a;
0x00023d52 movs r2, r0 | r2 = r0;
0x00023d54 adds r7, 0x1a | r7 += 0x1a;
0x00023d56 movs r2, r0 | r2 = r0;
0x00023d58 subs r6, r7, 7 | r6 = r7 - 7;
0x00023d5a movs r2, r0 | r2 = r0;
0x00023d5c adds r6, 0xd8 | r6 += 0xd8;
0x00023d5e movs r2, r0 | r2 = r0;
0x00023d60 adds r7, 8 | r7 += 8;
0x00023d62 movs r2, r0 | r2 = r0;
0x00023d64 adds r6, 0xb0 | r6 += 0xb0;
0x00023d66 movs r2, r0 | r2 = r0;
0x00023d68 adds r6, 0xf6 | r6 += 0xf6;
0x00023d6a movs r2, r0 | r2 = r0;
0x00023d6c adds r6, 0x7e | r6 += 0x7e;
0x00023d6e movs r2, r0 | r2 = r0;
0x00023d70 adds r6, 0xac | r6 += 0xac;
0x00023d72 movs r2, r0 | r2 = r0;
0x00023d74 adds r6, 0x56 | r6 += 0x56;
0x00023d76 movs r2, r0 | r2 = r0;
0x00023d78 ldrb r6, [r7, 9] | r6 = *((r7 + 9));
0x00023d7a movs r2, r0 | r2 = r0;
0x00023d7c movs r4, 0xe2 | r4 = 0xe2;
0x00023d7e movs r2, r0 | r2 = r0;
0x00023d80 adds r6, 0x1a | r6 += 0x1a;
0x00023d82 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/sbin/zabbix_agentd @ 0x170cc */
| #include <stdint.h>
|
; (fcn) sym.add_user_parameter () | void add_user_parameter (int16_t arg_24h, int16_t arg_2ch, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_65h, int16_t arg_7ch, int16_t arg_28h, int16_t arg_30h, int16_t arg_87ch, uint32_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_ch;
| int16_t var_18h_2;
| int16_t var_34h;
| int16_t var_14h;
| int16_t var_28h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_4ch;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000170cc svcmi 0xf0e92d | __asm ("svcmi case.0x3207a.11");
0x000170d0 mov r5, r2 | r5 = r2;
0x000170d2 ldr r2, [pc, 0xd0] |
0x000170d4 mov fp, r3 |
0x000170d6 sub sp, 0x3c |
0x000170d8 movs r4, 0 | r4 = 0;
0x000170da ldr r3, [pc, 0xcc] | r3 = *(0x171aa);
0x000170dc add.w r8, sp, 0x10 | r8 += var_ch;
0x000170e0 add r2, pc | r2 = 0x2e28a;
0x000170e2 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000170e6 ldr.w sl, [pc, 0xc4] | sl = *(0x000171ac);
0x000170ea mov r6, r1 | r6 = r1;
0x000170ec ldr r3, [r2, r3] |
0x000170ee mov r1, r8 | r1 = r8;
0x000170f0 mov r7, r0 | r7 = r0;
0x000170f2 add sl, pc | sl += pc;
0x000170f4 ldr r3, [r3] | r3 = *(0x2e28a);
0x000170f6 str r3, [sp, 0x34] | var_34h = r3;
0x000170f8 mov.w r3, 0 | r3 = 0;
0x000170fc vstr d16, [sp, 0x20] | __asm ("vstr d16, [sp, 0x20]");
0x00017100 strd r4, r4, [sp, 0x10] | __asm ("strd r4, r4, [sp, 0x10]");
0x00017104 str r4, [sp, 0x18] | var_18h_2 = r4;
0x00017106 strd r4, r4, [sp, 0x28] | __asm ("strd r4, r4, [sp, 0x28]");
0x0001710a bl 0x16fa4 | r0 = parse_item_key ();
| if (r0 == 0) {
0x0001710e cbz r0, 0x17154 | goto label_34;
| }
0x00017110 ldr.w sb, [sp, 0x10] | sb = var_ch;
0x00017114 mov r4, r0 | r4 = r0;
| label_0:
0x00017116 ldr r1, [pc, 0x98] |
0x00017118 mov r2, fp | r2 = fp;
0x0001711a mov r0, r5 | r0 = r5;
0x0001711c add r1, pc | r1 = 0x2e2d2;
0x0001711e bl 0x394f0 | zbx_strlcpy ();
| do {
0x00017122 cmp.w sb, 0 |
| if (sb != 0) {
0x00017126 beq 0x17132 |
0x00017128 mov r0, sb | r0 = sb;
0x0001712a blx 0xbd14 | gai_strerror ();
0x0001712e movs r3, 0 | r3 = 0;
0x00017130 str r3, [sp, 0x10] | var_ch = r3;
| }
0x00017132 mov r0, r8 | r0 = r8;
0x00017134 bl 0x1642c | fcn_0001642c (r0);
0x00017138 ldr r2, [pc, 0x78] |
0x0001713a ldr r3, [pc, 0x6c] | r3 = *(0x171aa);
0x0001713c add r2, pc | r2 = 0x2e2f4;
0x0001713e ldr r3, [r2, r3] | r3 = *(0x2e2f4);
0x00017140 ldr r2, [r3] | r2 = *(0x2e2f4);
0x00017142 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00017144 eors r2, r3 | r2 ^= r3;
0x00017146 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001714a bne 0x1719e | goto label_35;
| }
0x0001714c mov r0, r4 | r0 = r4;
0x0001714e add sp, 0x3c |
0x00017150 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_34:
0x00017154 ldrd sb, r3, [sp, 0x10] | __asm ("ldrd sb, r3, [var_ch]");
0x00017158 cmp r3, 1 |
| if (r3 == 1) {
0x0001715a beq 0x17186 | goto label_36;
| }
| if (r3 != 0) {
0x0001715c cbnz r3, 0x17180 | goto label_37;
| }
0x0001715e movs r3, 4 | r3 = 4;
| label_1:
0x00017160 ldr r1, [pc, 0x54] | r1 = *(0x171b8);
0x00017162 mov r2, r5 | r2 = r5;
0x00017164 strd sb, r3, [sp] | __asm ("strd sb, r3, [sp]");
0x00017168 mov r3, fp | r3 = fp;
0x0001716a ldr r0, [pc, 0x50] |
0x0001716c ldr.w r1, [sl, r1] | r1 = *((sl + r1));
0x00017170 add r0, pc | r0 = 0x2e332;
0x00017172 strd r1, r6, [sp, 8] | __asm ("strd r1, r6, [sp, 8]");
0x00017176 mov r1, sp | r1 = sp;
0x00017178 bl 0x16358 | r0 = fcn_00016358 (r0, r1, r2, r3);
0x0001717c mov r4, r0 | r4 = r0;
0x0001717e b 0x17122 |
| } while (1);
| do {
| label_37:
0x00017180 mov.w r4, -1 | r4 = -1;
0x00017184 b 0x17116 | goto label_0;
| label_36:
0x00017186 mov r0, sb | r0 = sb;
0x00017188 blx 0xc114 | r0 = fcn_0000c114 ();
0x0001718c adds r1, r7, r0 | r1 = r7 + r0;
0x0001718e ldr r0, [pc, 0x30] |
0x00017190 add r0, pc | r0 = 0x2e356;
0x00017192 blx 0xbc58 | r0 = fcn_0000bc58 ();
0x00017196 cmp r0, 0 |
0x00017198 bne 0x17180 |
| } while (r0 != 0);
0x0001719a movs r3, 5 | r3 = 5;
0x0001719c b 0x17160 | goto label_1;
| label_35:
0x0001719e blx 0xbe48 | fcn_0000be48 ();
0x000171a2 nop |
0x000171a4 ldrh r4, [r1, r4] | r4 = *((r1 + r4));
0x000171a6 movs r4, r0 | r4 = r0;
0x000171a8 lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x000171aa movs r0, r0 |
| do {
0x000171ac ldrh r2, [r7, r3] | r2 = *((r7 + r3));
0x000171ae movs r4, r0 | r4 = r0;
| if (r4 > r0) {
0x000171b0 bgt 0x1728c | goto label_38;
| }
0x000171b2 movs r2, r0 | r2 = r0;
0x000171b4 ldrh r0, [r6, r2] | r0 = *((r6 + r2));
0x000171b6 movs r4, r0 | r4 = r0;
0x000171b8 lsls r0, r1, 0xf | r0 = r1 << 0xf;
0x000171ba movs r0, r0 |
0x000171bc str r0, [r2, 0x74] | *((r2 + 0x74)) = r0;
0x000171be movs r4, r0 | r4 = r0;
0x000171c0 blt 0x171ac |
| } while (r4 < r0);
0x000171c2 movs r2, r0 | r2 = r0;
| label_38:
0x0001728c cdp2 p8, 8, c2, c11, c0, 0 | __asm ("cdp2 p8, 8, c2, c11, c0, 0");
| if (r2 != r0) {
0x00017290 bne.w 0x1762c | goto label_9;
| }
0x00017294 lsls r6, r7, 0x1f | r6 = r7 << 0x1f;
| if (r6 >= r7) {
0x00017296 bpl 0x17366 | goto label_39;
| }
0x00017298 ldr.w r3, [pc, 0x444] |
0x0001729c add r3, pc | r3 = 0x2e980;
0x0001729e ldr r4, [r3, 4] | r4 = *(0x2e984);
0x000172a0 ldr r0, [r4] | r0 = *(0x2e984);
0x000172a2 cmp r0, 0 |
| if (r0 == 0) {
0x000172a4 beq 0x1738e | goto label_40;
| }
0x000172a6 ldr.w r8, [r5] | r8 = *(r5);
0x000172aa b 0x172b4 |
| while (r0 != 0) {
0x000172ac ldr r0, [r4, 0x10]! | r0 = *((r4 += 0x10));
0x000172b0 cmp r0, 0 |
| if (r0 == 0) {
0x000172b2 beq 0x1738e | goto label_40;
| }
0x000172b4 mov r1, r8 | r1 = r8;
0x000172b6 mov r6, r4 | r6 = r4;
0x000172b8 blx 0xbc58 | r0 = fcn_0000bc58 ();
0x000172bc cmp r0, 0 |
0x000172be bne 0x172ac |
| }
| label_4:
0x000172c0 ldr r3, [r6] | r3 = *(r6);
0x000172c2 cmp r3, 0 |
| if (r3 == 0) {
0x000172c4 beq.w 0x17588 | goto label_41;
| }
0x000172c8 lsls r4, r7, 0x1e | r4 = r7 << 0x1e;
0x000172ca ldr r3, [r6, 4] | r3 = *((r6 + 4));
| if (r4 < r7) {
0x000172cc bpl 0x172d6 |
0x000172ce ands r2, r3, 2 | r2 = r3 & 2;
| if (r2 == r3) {
0x000172d2 beq.w 0x175d0 | goto label_42;
| }
| }
0x000172d6 ands r2, r3, 1 | r2 = r3 & 1;
| if (r2 == r3) {
0x000172da beq 0x173ba | goto label_43;
| }
0x000172dc lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 >= r3) {
0x000172de bpl.w 0x173e4 | goto label_8;
| }
0x000172e2 movs r3, 0 | r3 = 0;
0x000172e4 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000172e6 str r3, [sp, 0x28] | *((sp + 0x28)) = r3;
0x000172e8 add r7, sp, 0x28 | r7 = sp + 0x28;
0x000172ea str r3, [sp, 0x2c] | *(arg_2ch) = r3;
0x000172ec add.w sb, sp, 0x2c | sb += arg_2ch;
0x000172f0 str r3, [sp, 0x30] | *((sp + 0x30)) = r3;
0x000172f2 add.w r8, sp, 0x30 | r8 = sp + 0x30;
0x000172f6 ldr r3, [pc, 0x3ec] |
0x000172f8 mov sl, r2 | sl = r2;
0x000172fa str r2, [sp, 0x14] | var_14h = r2;
0x000172fc str r6, [sp, 0x24] | *(arg_24h) = r6;
0x000172fe add r3, pc | r3 = 0x2e9e8;
0x00017300 str r3, [sp, 0x20] | *((sp + 0x20)) = r3;
0x00017302 add r3, sp, 0x64 | r3 += var_8h;
0x00017304 str r3, [sp, 8] | *((sp + 8)) = r3;
0x00017306 b 0x17328 |
| while (r3 == 0) {
0x00017308 ldrb r3, [r4] | r3 = *(r4);
0x0001730a cmp r3, 0x30 |
| if (r3 == 0x30) {
0x0001730c beq 0x17358 | goto label_44;
| }
| label_2:
0x0001730e sub.w r2, r3, 0x31 | r2 = r3 - 0x31;
0x00017312 cmp r2, 8 |
| if (r2 > 8) {
0x00017314 bhi.w 0x17428 | goto label_45;
| }
0x00017318 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x0001731a sub.w r1, r3, 0x30 | r1 = r3 - 0x30;
0x0001731e cmp r1, r2 |
| if (r1 <= r2) {
0x00017320 ble.w 0x17446 | goto label_46;
| }
| label_3:
0x00017324 add.w sl, r4, 1 | sl = r4 + 1;
0x00017328 movs r1, 0x24 | r1 = 0x24;
0x0001732a mov r0, sl | r0 = sl;
0x0001732c blx 0xc138 | r0 = fcn_0000c138 ();
0x00017330 mov r4, r0 | r4 = r0;
0x00017332 cmp r0, 0 |
| if (r0 == 0) {
0x00017334 beq.w 0x175b2 | goto label_47;
| }
0x00017338 sub.w r3, r4, sl | r3 = r4 - sl;
0x0001733c mov r2, r8 | r2 = r8;
0x0001733e str r3, [sp] | *(sp) = r3;
0x00017340 mov r1, sb | r1 = sb;
0x00017342 mov r3, sl | r3 = sl;
0x00017344 mov r0, r7 | r0 = r7;
0x00017346 bl 0x3905c | zbx_strncpy_alloc ();
0x0001734a ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0001734c cmp r3, 0 |
0x0001734e beq 0x17308 |
| }
0x00017350 cmp r3, 0x30 |
0x00017352 add.w r4, r4, 1 | r4++;
| if (r3 != 0x30) {
0x00017356 bne 0x1730e | goto label_2;
| }
| label_44:
0x00017358 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001735a mov r2, r8 | r2 = r8;
0x0001735c mov r1, sb | r1 = sb;
0x0001735e mov r0, r7 | r0 = r7;
0x00017360 bl 0x39168 | zbx_strcpy_alloc ()
0x00017364 b 0x17324 | goto label_3;
| label_39:
0x00017366 mov r0, r5 | r0 = r5;
0x00017368 bl 0x16c4c | r0 = check_request_access_rules ();
0x0001736c cmp r0, 0 |
| if (r0 != 0) {
0x0001736e bne.w 0x17650 | goto label_48;
| }
0x00017372 ldr r3, [pc, 0x374] |
0x00017374 ldr r2, [sp, 0x10] | r2 = *((sp + 0x10));
0x00017376 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00017378 ldr r3, [r3] | r3 = *(0x176ea);
0x0001737a cmp r3, 1 |
| if (r3 != 1) {
0x0001737c beq 0x1738e |
0x0001737e ldr r1, [pc, 0x36c] |
0x00017380 ldr r0, [r5] | r0 = *(r5);
0x00017382 add r1, pc | r1 = 0x2ea74;
0x00017384 blx 0xbc58 | r0 = fcn_0000bc58 ();
0x00017388 cmp r0, 0 |
| if (r0 == 0) {
0x0001738a beq.w 0x175f2 | goto label_49;
| }
| }
| label_40:
0x0001738e ldr r3, [pc, 0x360] |
0x00017390 add r3, pc | r3 = 0x2ea86;
0x00017392 ldr r4, [r3] | r4 = *(0x2ea86);
0x00017394 ldr r0, [r4] | r0 = *(0x2ea86);
0x00017396 cmp r0, 0 |
| if (r0 == 0) {
0x00017398 beq.w 0x17588 | goto label_41;
| }
0x0001739c ldr.w r8, [r5] | r8 = *(r5);
0x000173a0 b 0x173ac |
| while (r0 != 0) {
0x000173a2 ldr r0, [r4, 0x10]! | r0 = *((r4 += 0x10));
0x000173a6 cmp r0, 0 |
| if (r0 == 0) {
0x000173a8 beq.w 0x17588 | goto label_41;
| }
0x000173ac mov r1, r8 | r1 = r8;
0x000173ae mov r6, r4 | r6 = r4;
0x000173b0 blx 0xbc58 | r0 = fcn_0000bc58 ();
0x000173b4 cmp r0, 0 |
0x000173b6 bne 0x173a2 |
| }
0x000173b8 b 0x172c0 | goto label_4;
| label_43:
0x000173ba ldr r4, [r5, 4] | r4 = *((r5 + 4));
0x000173bc cmp r4, 0 |
| if (r4 != 0) {
0x000173be bne.w 0x17680 | goto label_50;
| }
0x000173c2 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 < r3) {
0x000173c4 bpl 0x173e4 |
0x000173c6 mov r0, r5 | r0 = r5;
0x000173c8 bl 0x1642c | fcn_0001642c (r0);
0x000173cc ldr r0, [pc, 0x324] |
0x000173ce movw r1, 0x492 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x000173d2 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000173d4 mov r2, r4 | r2 = r4;
0x000173d6 add r0, pc | r0 = 0x2eace;
0x000173d8 bl 0x35d28 | r0 = zbx_strdup2 ();
0x000173dc mov r1, r0 | r1 = r0;
0x000173de mov r0, r5 | r0 = r5;
0x000173e0 bl 0x16474 | fcn_00016474 (r0, r1);
| }
| label_8:
0x000173e4 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x000173e6 mov r0, r5 | r0 = r5;
0x000173e8 ldr r1, [sp, 0xc] | r1 = *((sp + 0xc));
0x000173ea blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000173ec mov r4, r0 | r4 = r0;
0x000173ee cmp r0, 0 |
| if (r0 != 0) {
0x000173f0 bne.w 0x17616 | goto label_51;
| }
| label_6:
0x000173f4 ldr r0, [r5] | r0 = *(r5);
| if (r0 != 0) {
0x000173f6 cbz r0, 0x17400 |
0x000173f8 blx 0xbd14 | gai_strerror ();
0x000173fc movs r3, 0 | r3 = 0;
0x000173fe str r3, [r5] | *(r5) = r3;
| }
0x00017400 mov r0, r5 | r0 = r5;
0x00017402 bl 0x1642c | fcn_0001642c (r0);
0x00017406 ldr r2, [pc, 0x2f0] |
0x00017408 ldr r3, [pc, 0x2d0] | r3 = *(0x176dc);
0x0001740a add r2, pc | r2 = 0x2eb08;
0x0001740c ldr r3, [r2, r3] | r3 = *(0x2eb08);
0x0001740e ldr r2, [r3] | r2 = *(0x2eb08);
0x00017410 ldr.w r3, [sp, 0x87c] | r3 = *(arg_87ch);
0x00017414 eors r2, r3 | r2 ^= r3;
0x00017416 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001741a bne.w 0x176d0 | goto label_52;
| }
0x0001741e mov r0, r4 | r0 = r4;
0x00017420 addw sp, sp, 0x884 | __asm ("addw sp, sp, case.0x3207a.11");
0x00017424 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_45:
0x00017428 cmp r3, 0x24 |
| if (r3 != 0x24) {
0x0001742a beq 0x1743a |
0x0001742c movs r3, 0x24 | r3 = 0x24;
0x0001742e mov r2, r8 | r2 = r8;
0x00017430 mov r1, sb | r1 = sb;
0x00017432 mov r0, r7 | r0 = r7;
0x00017434 bl 0x39190 | zbx_chrcpy_alloc ();
0x00017438 ldrb r3, [r4] | r3 = *(r4);
| }
0x0001743a mov r2, r8 | r2 = r8;
0x0001743c mov r1, sb | r1 = sb;
0x0001743e mov r0, r7 | r0 = r7;
0x00017440 bl 0x39190 | zbx_chrcpy_alloc ();
0x00017444 b 0x17324 | goto label_3;
| label_46:
0x00017446 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00017448 add.w r3, r3, 0x40000000 | r3 += case.0x3207a.11;
0x0001744c subs r3, 0x31 | r3 -= 0x31;
0x0001744e ldr.w ip, [sp, 0x20] | ip = *((sp + 0x20));
0x00017450 stm r0!, {r5} | *(r0!) = r5;
0x00017452 add.w sl, sp, 0x38 | sl += arg_38h;
0x00017456 ldr r6, [sp, 8] | r6 = *((sp + 8));
0x00017458 ldr.w fp, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| fp = *((r2 + offset_0));
0x0001745c add r2, sp, 0x34 | r2 += arg_34h;
0x0001745e str r2, [sp, 0x1c] | *((sp + 0x1c)) = r2;
0x00017460 movs r2, 0x80 | r2 = 0x80;
0x00017462 movs r3, 0 | r3 = 0;
0x00017464 str.w r2, [sl] | __asm ("str.w r2, [sl]");
0x00017468 add r2, sp, 0x3c | r2 += arg_3ch;
0x0001746a str r3, [sp, 0x34] | *(arg_34h) = r3;
0x0001746c str r2, [sp, 0x18] | *((sp + 0x18)) = r2;
0x0001746e str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x00017470 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00017474 ldr.w lr, [pc, 0x284] | lr = *(0x176fc);
0x00017478 stm r6!, {r0, r1, r2, r3} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r3;
0x0001747a ldm.w ip, {r0, r1} | r0 = *(ip);
| r1 = *((ip + 4));
0x0001747e ldr r3, [sp, 0x10] | r3 = *((sp + 0x10));
0x00017480 stm.w r6, {r0, r1} | *(r6) = r0;
| *((r6 + 4)) = r1;
0x00017484 ldr.w r3, [r3, lr] | r3 = *((r3 + lr));
0x00017488 ldr r3, [r3] | r3 = *(r3);
0x0001748a cmp r3, 0 |
| if (r3 != 0) {
0x0001748c bne 0x1757a | goto label_53;
| }
0x0001748e ldr r6, [sp, 8] | r6 = *((sp + 8));
0x00017490 movs r1, 0x5c | r1 = 0x5c;
| label_7:
0x00017492 mov r0, fp | r0 = fp;
0x00017494 blx 0xc138 | r0 = fcn_0000c138 ();
0x00017498 cmp r0, 0 |
| if (r0 == 0) {
0x0001749a beq 0x17572 | goto label_54;
| }
0x0001749c ldr r0, [pc, 0x260] |
0x0001749e movs r3, 0x80 | r3 = 0x80;
0x000174a0 ldr.w fp, [sp, 0x1c] | fp = *((sp + 0x1c));
0x000174a4 movs r2, 0 | r2 = 0;
0x000174a6 movw r1, 0x3e2 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x000174aa ldr.w sb, [pc, 0x258] |
0x000174ae add r0, pc | r0 = 0x2ebb2;
0x000174b0 add.w r6, sp, 0x65 | r6 += arg_65h;
0x000174b4 bl 0x35c28 | zbx_malloc2 ();
0x000174b8 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x000174bc add sb, pc | sb = 0x2ebc6;
0x000174be blx 0xc0d4 | feof (r0);
0x000174c2 ldr r2, [pc, 0x244] |
0x000174c4 mov r8, r0 | r8 = r0;
0x000174c6 str r7, [sp, 0x10] | *((sp + 0x10)) = r7;
0x000174c8 movs r4, 0x27 | r4 = 0x27;
0x000174ca ldr r7, [sp, 0x18] | r7 = *((sp + 0x18));
0x000174cc movs r3, 0x5c | r3 = 0x5c;
0x000174ce add r2, pc | r2 = 0x2ebdc;
0x000174d0 str r5, [sp, 0x14] | var_14h = r5;
0x000174d2 mov r5, r2 | r5 = r2;
0x000174d4 mov r2, sb | r2 = sb;
0x000174d6 mov sb, sl | sb = sl;
0x000174d8 mov sl, r2 | sl = r2;
| do {
0x000174da ldr.w r2, [r8] | r2 = *(r8);
0x000174de sxth.w ip, r3 | __asm ("sxth.w ip, r3");
0x000174e2 ldrh.w r2, [r2, ip, lsl 1] | offset_1 = ip << 1;
| r2 = *((r2 + offset_1));
0x000174e6 lsls r0, r2, 0x11 | r0 = r2 << 0x11;
| if (r0 >= r2) {
0x000174e8 bpl 0x17510 | goto label_55;
| }
0x000174ea mov r2, r7 | r2 = r7;
0x000174ec mov r1, sb | r1 = sb;
0x000174ee mov r0, fp | r0 = fp;
0x000174f0 bl 0x39190 | zbx_chrcpy_alloc ();
| if (r4 == 0) {
0x000174f4 cbz r4, 0x17522 | goto label_56;
| }
| label_5:
0x000174f6 ldr r3, [sp, 8] | r3 = *((sp + 8));
0x000174f8 cmp r3, r6 |
| if (r3 != r6) {
0x000174fa beq 0x17508 |
0x000174fc mov r3, sl | r3 = sl;
0x000174fe mov r2, r7 | r2 = r7;
0x00017500 mov r1, sb | r1 = sb;
0x00017502 mov r0, fp | r0 = fp;
0x00017504 bl 0x39168 | zbx_strcpy_alloc ()
| }
0x00017508 mov r3, r4 | r3 = r4;
0x0001750a ldrb r4, [r6, 1]! | r4 = *((r6 += 1));
0x0001750e b 0x174da |
| } while (1);
| label_55:
0x00017510 str r3, [sp] | *(sp) = r3;
0x00017512 mov r2, r7 | r2 = r7;
0x00017514 mov r3, r5 | r3 = r5;
0x00017516 mov r1, sb | r1 = sb;
0x00017518 mov r0, fp | r0 = fp;
0x0001751a bl 0x38f1c | zbx_snprintf_alloc ();
0x0001751e cmp r4, 0 |
| if (r4 != 0) {
0x00017520 bne 0x174f6 | goto label_5;
| }
| label_56:
0x00017522 ldr r2, [pc, 0x1e8] |
0x00017524 add r4, sp, 0x7c | r4 += arg_7ch;
0x00017526 ldr.w r3, [fp] | r3 = *(fp);
0x0001752a mov.w r1, 0x800 | r1 = case.0x3207a.11;
0x0001752e mov r0, r4 | r0 = r4;
0x00017530 ldrd r7, r5, [sp, 0x10] | __asm ("ldrd r7, r5, [sp, 0x10]");
0x00017534 add r2, pc | r2 = 0x2ec46;
0x00017536 bl 0x38ea0 | zbx_snprintf ();
0x0001753a ldr.w r0, [fp] | r0 = *(fp);
| if (r0 != 0) {
0x0001753e cbz r0, 0x17544 |
0x00017540 blx 0xbd14 | gai_strerror ();
| }
0x00017544 ldr r0, [r7] | r0 = *(r7);
| if (r0 != 0) {
0x00017546 cbz r0, 0x17550 |
0x00017548 blx 0xbd14 | gai_strerror ();
0x0001754c movs r3, 0 | r3 = 0;
0x0001754e str r3, [r7] | *(r7) = r3;
| }
0x00017550 ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x00017552 mov r3, r4 | r3 = r4;
0x00017554 ldr r0, [pc, 0x1b8] |
0x00017556 movs r2, 0 | r2 = 0;
0x00017558 mvn r4, 1 | r4 = ~1;
0x0001755c ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x0001755e add r0, pc | r0 = 0x2ec72;
0x00017560 orr r1, r1, 0x20 | r1 |= 0x20;
0x00017564 str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x00017566 mov.w r1, 0x488 | r1 = case.0x3207a.11;
0x0001756a bl 0x35d28 | zbx_strdup2 ();
0x0001756e str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x00017570 b 0x173f4 | goto label_6;
| label_54:
0x00017572 ldrb r1, [r6, 1]! | r1 = *((r6 += 1));
0x00017576 cmp r1, 0 |
| if (r1 != 0) {
0x00017578 bne 0x17492 | goto label_7;
| }
| label_53:
0x0001757a mov r3, fp | r3 = fp;
0x0001757c mov r2, r8 | r2 = r8;
0x0001757e mov r1, sb | r1 = sb;
0x00017580 mov r0, r7 | r0 = r7;
0x00017582 bl 0x39168 | zbx_strcpy_alloc ()
0x00017586 b 0x17324 | goto label_3;
| label_41:
0x00017588 ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x0001758a movs r2, 0 | r2 = 0;
0x0001758c ldr r3, [pc, 0x184] |
0x0001758e mvn r4, 1 | r4 = ~1;
0x00017592 ldr r0, [pc, 0x184] |
0x00017594 ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x00017596 add r3, pc | r3 = 0x2ecae;
0x00017598 add r0, pc | r0 = 0x2ecb6;
0x0001759a orr r1, r1, 0x20 | r1 |= 0x20;
0x0001759e str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x000175a0 movw r1, 0x46e | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x000175a4 bl 0x35d28 | zbx_strdup2 ();
0x000175a8 str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x000175aa b 0x173f4 | goto label_6;
| label_47:
0x000175b2 mov r1, sb | r1 = sb;
0x000175b4 mov r3, sl | r3 = sl;
0x000175b6 mov r2, r8 | r2 = r8;
0x000175b8 mov r0, r7 | r0 = r7;
0x000175ba ldr r6, [sp, 0x24] | r6 = *(arg_24h);
0x000175bc bl 0x39168 | zbx_strcpy_alloc ()
0x000175c0 mov r0, r5 | r0 = r5;
0x000175c2 bl 0x1642c | fcn_0001642c (r0);
0x000175c6 ldr r1, [r7] | r1 = *(r7);
0x000175c8 mov r0, r5 | r0 = r5;
0x000175ca bl 0x16474 | fcn_00016474 (r0, r1);
0x000175ce b 0x173e4 | goto label_8;
| label_42:
0x000175d0 ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x000175d2 mvn r4, 1 | r4 = ~1;
0x000175d6 ldr r3, [pc, 0x144] |
0x000175d8 ldr r0, [pc, 0x144] |
0x000175da ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x000175dc add r3, pc | r3 = 0x2ecfe;
0x000175de add r0, pc | r0 = 0x2ed02;
0x000175e0 orr r1, r1, 0x20 | r1 |= 0x20;
0x000175e4 str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x000175e6 movw r1, 0x475 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x000175ea bl 0x35d28 | zbx_strdup2 ();
0x000175ee str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x000175f0 b 0x173f4 | goto label_6;
| label_49:
0x000175f2 ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x000175f4 mov r2, r0 | r2 = r0;
0x000175f6 ldr r3, [pc, 0x12c] |
0x000175f8 mvn r4, 1 | r4 = ~1;
0x000175fc ldr r0, [pc, 0x128] |
0x000175fe ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x00017600 add r3, pc | r3 = 0x2ed2a;
0x00017602 add r0, pc | r0 = 0x2ed2e;
0x00017604 orr r1, r1, 0x20 | r1 |= 0x20;
0x00017608 str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x0001760a movw r1, 0x455 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x0001760e bl 0x35d28 | zbx_strdup2 ();
0x00017612 str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x00017614 b 0x173f4 | goto label_6;
| label_51:
0x00017616 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00017618 lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
| if (r1 < r3) {
0x0001761a bpl 0x17626 |
0x0001761c ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0001761e ldr r1, [r3, 0x28] | r1 = *((r3 + 0x28));
0x00017620 ands r2, r1, 0x20 | r2 = r1 & 0x20;
| if (r2 == r1) {
0x00017624 beq 0x176a2 | goto label_57;
| }
| }
0x00017626 mvn r4, 1 | r4 = ~1;
0x0001762a b 0x173f4 | goto label_6;
| label_9:
0x0001762c ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x0001762e movs r2, 0 | r2 = 0;
0x00017630 ldr r3, [pc, 0xf8] |
0x00017632 mvn r4, 1 | r4 = ~1;
0x00017636 ldr r0, [pc, 0xf8] |
0x00017638 ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x0001763a add r3, pc | r3 = 0x2ed6a;
0x0001763c add r0, pc | r0 = 0x2ed72;
0x0001763e orr r1, r1, 0x20 | r1 |= 0x20;
0x00017642 str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x00017644 movw r1, 0x446 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017648 bl 0x35d28 | zbx_strdup2 ();
0x0001764c str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x0001764e b 0x173f4 | goto label_6;
| label_48:
0x00017650 ldr r3, [pc, 0xe0] |
0x00017652 ldr r2, [sp, 0x10] | r2 = *((sp + 0x10));
0x00017654 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00017656 ldr r3, [r3] | r3 = *(0x17734);
0x00017658 cmp r3, 3 |
0x0001765a bgt 0x176c2 |
| while (1) {
0x0001765c ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x0001765e movs r2, 0 | r2 = 0;
0x00017660 ldr r3, [pc, 0xd4] |
0x00017662 mvn r4, 1 | r4 = ~1;
0x00017666 ldr r0, [pc, 0xd4] | r0 = *(0x1773e);
0x00017668 ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x0001766a add r3, pc | r3 = 0x2eda6;
| label_13:
0x0001766c add r0, pc | r0 += pc;
0x0001766e orr r1, r1, 0x20 | r1 |= 0x20;
0x00017672 str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x00017674 movw r1, 0x44d | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017678 bl 0x35d28 | zbx_strdup2 ();
0x0001767c str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x0001767e b 0x173f4 | goto label_6;
| label_50:
0x00017680 ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x00017682 mvn r4, 1 | r4 = ~1;
0x00017686 ldr r3, [pc, 0xb8] |
0x00017688 ldr r0, [pc, 0xb8] |
0x0001768a ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x0001768c add r3, pc | r3 = 0x2edd2;
0x0001768e add r0, pc | r0 = 0x2edd6;
0x00017690 orr r1, r1, 0x20 | r1 |= 0x20;
0x00017694 str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x00017696 movw r1, 0x47c | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x0001769a bl 0x35d28 | zbx_strdup2 ();
0x0001769e str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x000176a0 b 0x173f4 | goto label_6;
| label_57:
0x000176a2 ldr r6, [sp, 0xc] | r6 = *((sp + 0xc));
0x000176a4 orr r1, r1, 0x20 | r1 |= 0x20;
0x000176a8 ldr r3, [pc, 0x9c] |
0x000176aa mvn r4, 1 | r4 = ~1;
0x000176ae ldr r0, [pc, 0x9c] | r0 = *(0x1774e);
0x000176b0 str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x000176b2 movw r1, 0x49c | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x000176b6 add r3, pc | r3 = 0x2ee02;
| label_12:
0x000176b8 add r0, pc | r0 += pc;
0x000176ba bl 0x35d28 | zbx_strdup2 ();
0x000176be str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x000176c0 b 0x173f4 | goto label_6;
0x000176c2 ldr r1, [pc, 0x8c] | r1 = *(0x17752);
0x000176c4 mov r2, r4 | r2 = r4;
0x000176c6 movs r0, 4 | r0 = 4;
| label_11:
0x000176c8 add r1, pc | r1 += pc;
0x000176ca bl 0x271b0 | zbx_zabbix_log ();
0x000176ce b 0x1765c |
| }
| label_52:
0x000176d0 blx 0xbe48 | fcn_0000be48 ();
0x000176d4 ldr r4, [r2, r6] | r4 = *((r2 + r6));
0x000176d6 movs r4, r0 | r4 = r0;
| label_10:
0x000176d8 ldr r6, [r1, r6] | r6 = *((r1 + r6));
0x000176da movs r4, r0 | r4 = r0;
0x000176dc lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x000176de movs r0, r0 |
0x000176e0 str r4, [r4, 0x60] | *((r4 + 0x60)) = r4;
0x000176e2 movs r4, r0 | r4 = r0;
| if (r4 < r0) {
0x000176e4 blt 0x17794 | goto label_58;
| }
0x000176e6 movs r2, r0 | r2 = r0;
0x000176e8 lsls r4, r3, 0xf | r4 = r3 << 0xf;
0x000176ea movs r0, r0 |
| if (r0 > r0) {
0x000176ec bhi 0x1762c | goto label_9;
| }
0x000176ee movs r2, r0 | r2 = r0;
0x000176f0 str r0, [r6, 0x50] | *((r6 + 0x50)) = r0;
0x000176f2 movs r4, r0 | r4 = r0;
| if (r4 <= r0) {
| label_14:
0x000176f4 bhi 0x176fc |
0x000176f6 movs r2, r0 | r2 = r0;
0x000176f8 ldrsb r2, [r4, r7] | r2 = *((r4 + r7));
0x000176fa movs r4, r0 | r4 = r0;
| }
0x000176fc lsls r4, r6, 0xd | r4 = r6 << 0xd;
0x000176fe movs r0, r0 |
0x00017700 bvc 0x17758 | __asm ("bvc case.0x3207a.11");
0x00017702 movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00017704 bls 0x177a8 | goto label_59;
| }
0x00017706 movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00017708 bls 0x17790 | goto label_60;
| }
0x0001770a movs r2, r0 | r2 = r0;
| if (r2 > r0) {
0x0001770c bhi 0x176d8 | goto label_10;
| }
0x0001770e movs r2, r0 | r2 = r0;
0x00017710 bvs 0x17808 | __asm ("bvs case.0x3207a.11");
0x00017712 movs r2, r0 | r2 = r0;
| if (r2 > r0) {
0x00017714 bhi 0x1774c | goto label_61;
| }
0x00017716 movs r2, r0 | r2 = r0;
| do {
0x00017718 bvs 0x1779c | __asm ("bvs case.0x3207a.11");
0x0001771a movs r2, r0 | r2 = r0;
0x0001771c bvc 0x176c8 | __asm ("bvc case.0x3207a.11");
| goto label_11;
0x0001771e movs r2, r0 | r2 = r0;
0x00017720 bpl 0x17718 |
| } while (r2 >= r0);
0x00017722 movs r2, r0 | r2 = r0;
0x00017724 bvc 0x176b8 | __asm ("bvc case.0x3207a.11");
| goto label_12;
0x00017726 movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00017728 bpl 0x176d8 | goto label_10;
| }
0x0001772a movs r2, r0 | r2 = r0;
| if (r2 <= r0) {
0x0001772c blo 0x177dc | goto label_62;
| }
0x0001772e movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00017730 bpl 0x1766c | goto label_13;
| }
0x00017732 movs r2, r0 | r2 = r0;
0x00017734 lsls r0, r6, 0xe | r0 = r6 << 0xe;
0x00017736 movs r0, r0 |
0x00017738 bvc 0x177c8 | __asm ("bvc case.0x3207a.11");
0x0001773a movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x0001773c bpl 0x17818 | goto label_21;
| }
0x0001773e movs r2, r0 | r2 = r0;
0x00017740 bvc 0x17804 | __asm ("bvc case.0x3207a.11");
0x00017742 movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00017744 bpl 0x177dc | goto label_62;
| }
0x00017746 movs r2, r0 | r2 = r0;
0x00017748 invalid |
| if (r2 < r0) {
| label_61:
0x0001774c bpl 0x17790 |
0x0001774e movs r2, r0 | r2 = r0;
0x00017750 bvs 0x176f4 | __asm ("bvs case.0x3207a.11");
| goto label_14;
0x00017752 movs r2, r0 | r2 = r0;
0x00017758 mov r3, r0 | r3 = r0;
0x0001775a push {r4, r5, lr} |
0x0001775c sub sp, 0x54 |
0x0001775e ldr r5, [pc, 0x108] |
0x00017760 mov r4, r0 | r4 = r0;
0x00017762 add ip, pc |
0x00017764 movs r2, 0x2d | r2 = 0x2d;
0x00017766 ldr r1, [pc, 0x104] |
0x00017768 movs r0, 1 | r0 = 1;
0x0001776a ldr.w r5, [ip, r5] | r5 = *((ip + r5));
0x0001776e add r1, pc | r1 = 0x2efe0;
0x00017770 ldr r5, [r5] | r5 = *(0x1786a);
0x00017772 str r5, [sp, 0x4c] | var_4ch = r5;
0x00017774 mov.w r5, 0 | r5 = 0;
0x00017778 mov r5, sp | r5 = sp;
0x0001777a blx 0xc1d0 | fileno (r0);
0x0001777e movs r1, 0 | r1 = 0;
0x00017780 movs r2, 0x30 | r2 = 0x30;
0x00017782 mov r0, r5 | r0 = r5;
0x00017784 blx 0xc1ac | statvfs64 ();
0x00017788 mov r0, r4 | r0 = r4;
0x0001778a ldr r4, [pc, 0xe4] | r4 = *(0x17872);
0x0001778c mov r2, r5 | r2 = r5;
0x0001778e movs r1, 4 | r1 = 4;
| }
| label_60:
0x00017790 bl 0x17240 | process ();
| label_58:
0x00017794 add r4, pc | r4 += pc;
0x00017796 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
| if (r0 != 0) {
0x00017798 cbnz r0, 0x177dc | goto label_62;
| }
0x0001779a lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
| if (r1 < r3) {
0x0001779c bmi 0x17808 | goto label_63;
| }
0x0001779e lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 < r3) {
0x000177a0 bmi 0x1781c | goto label_64;
| }
| label_16:
0x000177a2 lsls r0, r3, 0x1d | r0 = r3 << 0x1d;
| if (r0 < r3) {
0x000177a4 bmi 0x1783a | goto label_65;
| }
| label_17:
0x000177a6 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
| if (r1 < r3) {
| label_59:
0x000177a8 bmi 0x1784c | goto label_66;
| }
| label_18:
0x000177aa lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 < r3) {
0x000177ac bmi 0x177fa | goto label_19;
| }
| do {
| label_15:
0x000177ae mov r0, r5 | r0 = r5;
0x000177b0 bl 0x16ee0 | free_result ();
0x000177b4 movs r0, 0xa | r0 = 0xa;
0x000177b6 invalid |
| label_22:
0x000177b8 vstr d4, [r0, -0xb8] | __asm ("vstr d4, [r0, -0xb8]");
0x000177bc ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x000177be ldr r0, [r3] | r0 = *(r3);
0x000177c0 blx 0xbcd0 | fcn_0000bcd0 ();
0x000177c4 ldr r2, [pc, 0xb0] | r2 = *(0x17878);
0x000177c6 ldr r3, [pc, 0xa0] | r3 = *(0x1786a);
0x000177c8 add r2, pc | r2 += pc;
0x000177ca ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000177cc ldr r2, [r3] | r2 = *(r3);
0x000177ce ldr r3, [sp, 0x4c] | r3 = *((sp + 0x4c));
0x000177d0 eors r2, r3 | r2 ^= r3;
0x000177d2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000177d6 bne 0x17860 | goto label_67;
| }
0x000177d8 add sp, 0x54 |
0x000177da pop {r4, r5, pc} |
| label_62:
0x000177dc lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 >= r3) {
0x000177de bpl 0x177ee | goto label_68;
| }
0x000177e0 ldr r1, [pc, 0x98] |
0x000177e2 movs r0, 1 | r0 = 1;
0x000177e4 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000177e6 add r1, pc | r1 = 0x2f066;
0x000177e8 blx 0xc1d0 | fileno (r0);
0x000177ec b 0x177ae |
| } while (1);
| label_68:
0x000177ee ldr r1, [pc, 0x90] |
0x000177f0 movs r0, 1 | r0 = 1;
0x000177f2 add r1, pc | r1 = 0x2f078;
| label_20:
0x000177f4 blx 0xc1d0 | fileno (r0);
0x000177f8 b 0x177ae | goto label_15;
| label_19:
0x000177fa ldr r1, [pc, 0x88] |
0x000177fc movs r0, 1 | r0 = 1;
0x000177fe ldr r2, [sp, 0x20] | r2 = var_20h;
0x00017800 add r1, pc | r1 = 0x2f08a;
0x00017802 invalid |
0x00017804 stcl p7, c14, [r6], 0x348 | __asm ("stcl p7, c14, [r6], case.0x3207a.11");
| label_63:
0x00017808 ldr r1, [pc, 0x7c] |
0x0001780a movs r0, 1 | r0 = 1;
0x0001780c ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [sp, 8]");
0x00017810 add r1, pc | r1 = 0x2f09c;
0x00017812 blx 0xc1d0 | fileno (r0);
0x00017816 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
| label_21:
0x00017818 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 >= r3) {
0x0001781a bpl 0x177a2 | goto label_16;
| }
| label_64:
0x0001781c vldr d0, [sp, 0x10] | __asm ("vldr d0, [sp, 0x10]");
0x00017820 movs r1, 0x19 | r1 = 0x19;
0x00017822 add r0, sp, 0x30 | r0 += arg_30h;
0x00017824 bl 0x3cf64 | zbx_print_double ();
0x00017828 ldr r1, [pc, 0x60] |
0x0001782a mov r2, r0 | r2 = r0;
0x0001782c movs r0, 1 | r0 = 1;
0x0001782e add r1, pc | r1 = 0x2f0be;
0x00017830 blx 0xc1d0 | fileno (r0);
0x00017834 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x00017836 lsls r0, r3, 0x1d | r0 = r3 << 0x1d;
| if (r0 >= r3) {
0x00017838 bpl 0x177a6 | goto label_17;
| }
| label_65:
0x0001783a ldr r1, [pc, 0x54] |
0x0001783c movs r0, 1 | r0 = 1;
0x0001783e ldr r2, [sp, 0x18] | r2 = var_18h;
0x00017840 add r1, pc | r1 = 0x2f0d6;
0x00017842 blx 0xc1d0 | fileno (r0);
0x00017844 vstmia r6, {d25, d26, d27, d28, d29} | __asm ("vstmia r6, {d25, d26, d27, d28, d29}");
0x00017848 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
| if (r1 >= r3) {
0x0001784a bpl 0x177aa | goto label_18;
| }
| label_66:
0x0001784c ldr r1, [pc, 0x44] |
0x0001784e movs r0, 1 | r0 = 1;
0x00017850 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00017852 add r1, pc | r1 = 0x2f0ea;
0x00017854 blx 0xc1d0 | fileno (r0);
0x00017858 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x0001785a lsls r2, r3, 0x1a | r2 = r3 << 0x1a;
| if (r2 >= r3) {
0x0001785c bpl 0x177ae | goto label_15;
| }
0x0001785e b 0x177fa | goto label_19;
| label_67:
0x00017860 blx 0xbe48 | fcn_0000be48 ();
0x00017864 strb r2, [r1, r2] | *((r1 + r2)) = r2;
0x00017866 movs r4, r0 | r4 = r0;
0x00017868 lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x0001786a movs r0, r0 |
0x0001786c bvs 0x1786c | __asm ("bvs case.0x3207a.11");
0x0001786e movs r2, r0 | r2 = r0;
0x00017870 strb r0, [r3, r1] | *((r3 + r1)) = r0;
0x00017872 movs r4, r0 | r4 = r0;
0x00017874 lsls r4, r1, 0xe | r4 = r1 << 0xe;
0x00017876 movs r0, r0 |
0x00017878 strb r4, [r4, r0] | *((r4 + r0)) = r4;
0x0001787a movs r4, r0 | r4 = r0;
0x0001787c bvs 0x177f4 | __asm ("bvs case.0x3207a.11");
| goto label_20;
0x0001787e movs r2, r0 | r2 = r0;
0x00017880 bvs 0x17818 | __asm ("bvs case.0x3207a.11");
| goto label_21;
0x00017882 movs r2, r0 | r2 = r0;
0x00017884 bvs 0x177b8 | __asm ("bvs case.0x3207a.11");
| goto label_22;
0x00017886 movs r2, r0 | r2 = r0;
0x00017888 bvs 0x17954 | __asm ("bvs case.0x3207a.11");
0x0001788a movs r2, r0 | r2 = r0;
0x0001788c bvs 0x17934 | __asm ("bvs case.0x3207a.11");
0x0001788e movs r2, r0 | r2 = r0;
0x00017890 bvs 0x17924 | __asm ("bvs case.0x3207a.11");
0x00017892 movs r2, r0 | r2 = r0;
0x00017894 bvs 0x17914 | __asm ("bvs case.0x3207a.11");
0x00017896 movs r2, r0 | r2 = r0;
| do {
| label_23:
0x000178cc ldr r3, [r6] | r3 = *(r6);
0x000178ce adds r4, 0x10 | r4 += 0x10;
0x000178d0 ldr r5, [r3, r4] | r5 = *((r3 + r4));
0x000178d2 cmp r5, 0 |
| if (r5 == 0) {
0x000178d4 beq 0x17950 | goto label_69;
| }
| label_24:
0x000178d6 mov r1, r7 | r1 = r7;
0x000178d8 mov r0, r5 | r0 = r5;
0x000178da blx 0xbc58 | r0 = fcn_0000bc58 ();
0x000178de cmp r0, 0 |
0x000178e0 beq 0x178cc |
| } while (r0 == 0);
0x000178e2 movs r0, 0 | r0 = 0;
0x000178e4 add.w fp, sp, 8 |
0x000178e8 add.w sl, sp, 4 | sl += var_4h;
0x000178ec mov r8, sp | r8 = sp;
0x000178ee mov r3, r5 | r3 = r5;
0x000178f0 mov r2, fp | r2 = fp;
0x000178f2 str r0, [sp, 8] | var_8h = r0;
0x000178f4 mov r1, sl | r1 = sl;
0x000178f6 mov r0, r8 | r0 = r8;
0x000178f8 bl 0x39168 | zbx_strcpy_alloc ()
0x000178fc ldr.w r2, [sb] | r2 = *(sb);
0x00017900 add r2, r4 | r2 += r4;
0x00017902 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00017904 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x00017906 bmi 0x17936 |
0x00017908 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
| if (r3 == 0) {
0x0001790a cbz r3, 0x17936 | goto label_70;
| }
0x0001790c movs r3, 0x5b | r3 = 0x5b;
0x0001790e mov r2, fp | r2 = fp;
0x00017910 mov r1, sl | r1 = sl;
0x00017912 mov r0, r8 | r0 = r8;
0x00017914 bl 0x39190 | zbx_chrcpy_alloc ();
0x00017918 ldr.w r3, [sb] | r3 = *(sb);
0x0001791c mov r2, fp | r2 = fp;
0x0001791e mov r1, sl | r1 = sl;
0x00017920 mov r0, r8 | r0 = r8;
0x00017922 add r3, r4 | r3 += r4;
0x00017924 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00017926 bl 0x39168 | zbx_strcpy_alloc ()
0x0001792a mov r2, fp | r2 = fp;
0x0001792c mov r1, sl | r1 = sl;
0x0001792e mov r0, r8 | r0 = r8;
0x00017930 movs r3, 0x5d | r3 = 0x5d;
0x00017932 bl 0x39190 | zbx_chrcpy_alloc ();
0x00017934 invalid |
| }
| label_70:
0x00017936 ldr r0, [sp] | r0 = *(sp);
0x00017938 bl 0x171c4 | r0 = check_key_access_rules ();
0x0001793c cmp r0, 0 |
| if (r0 != 0) {
0x0001793e bne 0x178cc | goto label_23;
| }
0x00017940 ldr r0, [sp] | r0 = *(sp);
0x00017942 adds r4, 0x10 | r4 += 0x10;
0x00017944 bl 0x17754 | test_parameter ();
0x00017948 ldr r3, [r6] | r3 = *(r6);
0x0001794a ldr r5, [r3, r4] | r5 = *((r3 + r4));
0x0001794c cmp r5, 0 |
| if (r5 != 0) {
0x0001794e bne 0x178d6 | goto label_24;
| }
| label_69:
0x00017950 ldr r0, [sp] | r0 = *(sp);
| if (r0 != 0) {
0x00017952 cbz r0, 0x1795a |
0x00017954 blx 0xbd14 | gai_strerror ();
0x00017958 str r5, [sp] | *(sp) = r5;
| }
0x0001795a bl 0x34294 | test_aliases ();
0x0001795e ldr r2, [pc, 0x30] |
0x00017960 ldr r3, [pc, 0x1c] | r3 = *(0x17980);
0x00017962 add r2, pc | r2 = 0x2f2f8;
0x00017964 ldr r3, [r2, r3] | r3 = *(0x2f2f8);
0x00017966 ldr r2, [r3] | r2 = *(0x2f2f8);
0x00017968 ldr r3, [sp, 0xc] | r3 = *((sp + 0xc));
0x0001796a eors r2, r3 | r2 ^= r3;
0x0001796c mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00017970 bne 0x17978 |
0x00017972 add sp, 0x14 |
0x00017974 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00017978 blx 0xbe48 | fcn_0000be48 ();
0x0001797c strh r2, [r1, r5] | *((r1 + r5)) = r2;
0x0001797e movs r4, r0 | r4 = r0;
0x00017980 lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x00017982 movs r0, r0 |
0x00017984 str r6, [r2] | *(r2) = r6;
0x00017986 movs r4, r0 | r4 = r0;
0x00017988 bvs 0x179a8 | __asm ("bvs case.0x3207a.11");
0x0001798a movs r2, r0 | r2 = r0;
0x0001798c ldrsh r0, [r7, r7] | r0 = *((r7 + r7));
0x0001798e movs r4, r0 | r4 = r0;
0x00017990 strh r2, [r1, r2] | *((r1 + r2)) = r2;
0x00017992 movs r4, r0 | r4 = r0;
0x000179a8 mov.w r3, 0 | r3 = 0;
0x000179ac cmp r0, 0 |
| if (r0 == 0) {
0x000179ae beq.w 0x17ada | goto label_71;
| }
0x000179b2 mov r4, r0 | r4 = r0;
0x000179b4 cmp r1, 4 |
| if (r1 > 4) {
0x000179b6 bhi.w 0x17ad0 | goto label_72;
| }
| /* switch table (5 cases) at 0x179be */
0x000179ba tbb [pc, r1] | __asm ("tbb case.0x3207a.11");
0x000179c4 mov r0, r5 | r0 = r5;
0x000179c6 bl 0x3a9cc | zbx_replace_invalid_utf8 ();
0x000179ca ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000179cc mov r3, r5 | r3 = r5;
0x000179ce movs r2, 0 | r2 = 0;
0x000179d0 mov.w r1, 0x4d8 | r1 = case.0x3207a.11;
0x000179d4 orr r0, r0, 8 | r0 |= 8;
0x000179d8 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x000179da ldr r0, [pc, 0x11c] |
0x000179dc add r0, pc | r0 = 0x2f4da;
0x000179de bl 0x35d28 | r0 = zbx_strdup2 ();
0x000179e2 mov r3, r0 | r3 = r0;
0x000179e4 movs r0, 0 | r0 = 0;
0x000179e6 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| do {
| label_25:
0x000179e8 ldr r2, [pc, 0x110] |
0x000179ea ldr r3, [pc, 0x108] | r3 = *(0x17af6);
0x000179ec add r2, pc | r2 = 0x2f4ec;
0x000179ee ldr r3, [r2, r3] | r3 = *(0x2f4ec);
0x000179f0 ldr r2, [r3] | r2 = *(0x2f4ec);
0x000179f2 ldr r3, [sp, 0x1c] | r3 = *((sp + 0x1c));
0x000179f4 eors r2, r3 | r2 ^= r3;
0x000179f6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000179fa bne 0x17ad6 | goto label_73;
| }
0x000179fc add sp, 0x20 |
0x000179fe pop.w {r4, r5, r6, r7, r8, pc} |
0x00017a02 mov r0, r5 | r0 = r5;
0x00017a04 bl 0x3cc9c | zbx_trim_float ();
0x00017a08 add r1, sp, 0x10 | r1 += var_10h;
0x00017a0a mov r0, r5 | r0 = r5;
0x00017a0c bl 0x365b0 | r0 = is_double ();
0x00017a10 cmp r0, 0 |
| if (r0 != 0) {
0x00017a12 bne 0x17ad0 | goto label_72;
| }
0x00017a14 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00017a16 ldrd r6, r7, [sp, 0x10] | __asm ("ldrd r6, r7, [var_10h]");
0x00017a1a orr r3, r3, 2 | r3 |= 2;
0x00017a1e strd r6, r7, [r4, 0x10] | __asm ("strd r6, r7, [r4, 0x10]");
0x00017a22 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00017a24 b 0x179e8 |
| } while (1);
0x00017a26 mov r0, r5 | r0 = r5;
0x00017a28 bl 0x3a9cc | zbx_replace_invalid_utf8 ();
0x00017a2c ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00017a2e mov r3, r5 | r3 = r5;
0x00017a30 movs r2, 0 | r2 = 0;
0x00017a32 movw r1, 0x4d3 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017a36 orr r0, r0, 4 | r0 |= 4;
| label_26:
0x00017a38 movs r4, r0 | r4 = r0;
0x00017a3a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00017a3c ldr r0, [pc, 0xc0] |
0x00017a3e add r0, pc | r0 = 0x2f542;
0x00017a40 bl 0x35d28 | r0 = zbx_strdup2 ();
0x00017a44 mov r3, r0 | r3 = r0;
0x00017a46 movs r0, 0 | r0 = 0;
0x00017a48 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x00017a4a b 0x179e8 | goto label_25;
0x00017a4c ldr.w r8, [pc, 0xb4] | r8 = *(0x00017b04);
0x00017a50 mov r0, r5 | r0 = r5;
0x00017a52 bl 0x3a9cc | zbx_replace_invalid_utf8 ();
0x00017a56 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
0x00017a58 movs r3, 0x14 | r3 = 0x14;
0x00017a5a add r8, pc | r8 += pc;
0x00017a5c movw r1, 0x4ab | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017a60 mov r0, r8 | r0 = r8;
0x00017a62 movs r7, 0 | r7 = 0;
0x00017a64 bl 0x35c28 | r0 = zbx_malloc2 ();
0x00017a68 mov r6, r0 | r6 = r0;
0x00017a6a str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
0x00017a6c mov r3, r5 | r3 = r5;
0x00017a6e mov r0, r8 | r0 = r8;
0x00017a70 mov r2, r7 | r2 = r7;
0x00017a72 movw r1, 0x4af | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017a76 strd r7, r7, [r6] | __asm ("strd r7, r7, [r6]");
0x00017a7a strd r7, r7, [r6, 8] | __asm ("strd r7, r7, [r6, 8]");
0x00017a7e str r7, [r6, 0x10] | *((r6 + 0x10)) = r7;
0x00017a80 bl 0x35d28 | zbx_strdup2 ();
0x00017a84 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00017a86 str r0, [r6] | *(r6) = r0;
0x00017a88 mov r0, r7 | r0 = r7;
0x00017a8a orr r3, r3, 0x10 | r3 |= 0x10;
0x00017a8e str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00017a90 b 0x179e8 | goto label_25;
0x00017a92 mov r0, r5 | r0 = r5;
0x00017a94 bl 0x3cc94 | zbx_trim_integer ();
0x00017a98 mov r0, r5 | r0 = r5;
0x00017a9a bl 0x39304 | del_zeros ();
0x00017a9e vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x00017aa2 movs r3, 8 | r3 = 8;
0x00017aa4 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00017aa8 add r2, sp, 0x10 | r2 += var_10h;
0x00017aaa mov.w r1, -1 | r1 = -1;
0x00017aae mov r0, r5 | r0 = r5;
0x00017ab0 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x00017ab4 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00017ab8 bl 0x367c8 | r0 = is_uint_n_range ();
| if (r0 == 0) {
0x00017abc cbnz r0, 0x17ad0 |
0x00017abe ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00017ac0 ldrd r6, r7, [sp, 0x10] | __asm ("ldrd r6, r7, [var_10h]");
0x00017ac4 orr r3, r3, 1 | r3 |= 1;
0x00017ac8 strd r6, r7, [r4, 8] | __asm ("strd r6, r7, [r4, 8]");
0x00017acc str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00017ace b 0x179e8 | goto label_25;
| }
| label_72:
0x00017ad0 mov.w r0, -1 | r0 = -1;
0x00017ad4 b 0x179e8 | goto label_25;
| label_73:
0x00017ad6 blx 0xbe48 | fcn_0000be48 ();
| label_71:
0x00017ada ldr r3, [pc, 0x2c] |
0x00017adc mov.w r2, 0x4b8 | r2 = case.0x3207a.11;
0x00017ae0 ldr r1, [pc, 0x28] |
0x00017ae2 ldr r0, [pc, 0x2c] |
0x00017ae4 add r3, pc | r3 = 0x2f5f2;
0x00017ae6 add r1, pc | r1 = 0x2f5f6;
0x00017ae8 adds r3, 0x28 | r3 += 0x28;
0x00017aea add r0, pc | r0 = 0x2f600;
0x00017aec blx 0xc4a0 | fcn_0000c4a0 ();
0x00017af0 strh r4, [r1, r1] | *((r1 + r1)) = r4;
0x00017af2 movs r4, r0 | r4 = r0;
| do {
| label_27:
0x00017af4 lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x00017af6 movs r0, r0 |
0x00017af8 bne 0x17af4 |
| } while (r0 != r0);
0x00017afa movs r2, r0 | r2 = r0;
0x00017afc strh r0, [r0, r0] | *((r0 + r0)) = r0;
0x00017afe movs r4, r0 | r4 = r0;
| if (r4 != r0) {
0x00017b00 bne 0x17a38 | goto label_26;
| }
0x00017b02 movs r2, r0 | r2 = r0;
| if (r2 != r0) {
0x00017b04 bne 0x17c04 | goto label_74;
| }
0x00017b06 movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x00017b08 bpl 0x17ba4 | goto label_75;
| }
0x00017b0a movs r2, r0 | r2 = r0;
| if (r2 == r0) {
0x00017b0c beq 0x17af4 | goto label_27;
| }
0x00017b0e movs r2, r0 | r2 = r0;
0x00017b10 blo 0x17b10 |
0x00017b12 movs r2, r0 | r2 = r0;
| label_28:
0x00017b7e movs r5, 0 | r5 = 0;
| do {
| label_29:
0x00017b80 ldr r2, [pc, 0x2cc] |
0x00017b82 ldr r3, [pc, 0x2c8] | r3 = *(0x17e4e);
0x00017b84 add r2, pc | r2 = 0x2f9d8;
0x00017b86 ldr r3, [r2, r3] | r3 = *(0x2f9d8);
0x00017b88 ldr r2, [r3] | r2 = *(0x2f9d8);
0x00017b8a ldr r3, [sp, 0x1c] | r3 = var_8h;
0x00017b8c eors r2, r3 | r2 ^= r3;
0x00017b8e mov.w r3, 0 | r3 = 0;
0x00017b90 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00017b92 bne.w 0x17e2c | goto label_76;
| }
0x00017b96 mov r0, r5 | r0 = r5;
0x00017b98 add sp, 0x24 |
0x00017b9a pop {r4, r5, r6, r7, pc} |
| label_75:
0x00017ba4 ldr r5, [r0, 0x24] | r5 = *((r0 + 0x24));
0x00017ba6 bne 0x17b80 |
| } while (r0 != r0);
0x00017ba8 lsls r1, r3, 0x1b | r1 = r3 << 0x1b;
| if (r1 == r3) {
0x00017baa beq 0x17b7e | goto label_28;
| }
0x00017bac ldr r7, [pc, 0x2a4] |
0x00017bae movs r3, 0x14 | r3 = 0x14;
0x00017bb0 ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x00017bb2 movw r1, 0x584 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017bb6 add r7, pc | r7 = 0x2fa0e;
0x00017bb8 mov r0, r7 | r0 = r7;
0x00017bba bl 0x35c28 | zbx_malloc2 ();
0x00017bbe ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00017bc0 mov r5, r0 | r5 = r0;
0x00017bc2 str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
0x00017bc4 strd r6, r6, [r0] | __asm ("strd r6, r6, [r0]");
0x00017bc8 ands r2, r3, 4 | r2 = r3 & 4;
0x00017bcc strd r6, r6, [r0, 8] | __asm ("strd r6, r6, [r0, 8]");
0x00017bd0 str r6, [r0, 0x10] | *((r0 + 0x10)) = r6;
| if (r2 != r3) {
0x00017bd2 bne.w 0x17d94 | goto label_77;
| }
0x00017bd6 ands r0, r3, 8 | r0 = r3 & 8;
| if (r0 != r3) {
0x00017bda bne.w 0x17dee | goto label_78;
| }
0x00017bde ands r1, r3, 1 | r1 = r3 & 1;
| if (r1 != r3) {
0x00017be2 bne.w 0x17e02 | goto label_79;
| }
0x00017be6 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 < r3) {
0x00017be8 bmi.w 0x17e16 | goto label_80;
| }
| label_31:
0x00017bec orr r3, r3, 0x10 | r3 |= 0x10;
0x00017bf0 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00017bf2 b 0x17b80 | goto label_29;
| label_74:
0x00017c04 lsls r0, r1, 8 | r0 = r1 << 8;
| if (r0 != r1) {
0x00017c06 bne 0x17c38 | goto label_81;
| }
0x00017c08 ands r0, r1, 4 | r0 = r1 & 4;
| if (r0 != r1) {
0x00017c0c bne.w 0x17d6a | goto label_82;
| }
0x00017c10 ands r5, r1, 1 | r5 = r1 & 1;
| if (r5 != r1) {
0x00017c14 bne.w 0x17d80 | goto label_83;
| }
0x00017c18 lsls r6, r1, 0x1e | r6 = r1 << 0x1e;
| if (r6 >= r1) {
0x00017c1a bpl 0x17b7e | goto label_28;
| }
0x00017c1c orr r1, r1, 8 | r1 |= 8;
0x00017c20 ldrd r2, r3, [r4, 0x10] | __asm ("ldrd r2, r3, [r4, 0x10]");
0x00017c24 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x00017c26 mov r0, r5 | r0 = r5;
0x00017c28 ldr r1, [pc, 0x22c] |
0x00017c2a add r1, pc | r1 = 0x2fa86;
0x00017c2c bl 0x396b0 | zbx_dsprintf ();
| label_30:
0x00017c30 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00017c32 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x00017c34 lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
| if (r0 >= r3) {
0x00017c36 bpl 0x17b7e | goto label_28;
| }
| label_81:
0x00017c38 add.w r5, r4, 0x1c | r5 = r4 + 0x1c;
0x00017c3c b 0x17b80 | goto label_29;
| label_82:
0x00017d6a orr r0, r1, 8 | r0 = r1 | 8;
0x00017d6e ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00017d70 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00017d72 movw r1, 0x56b | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
| do {
0x00017d74 str r3, [r5, r5] | *((r5 + r5)) = r3;
0x00017d76 ldr r0, [pc, 0xec] |
0x00017d78 add r0, pc | r0 = 0x2fbe2;
0x00017d7a bl 0x35d28 | zbx_strdup2 ();
0x00017d7e b 0x17c30 | goto label_30;
| label_83:
0x00017d80 orr r1, r1, 8 | r1 |= 8;
0x00017d84 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00017d88 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x00017d8a ldr r1, [pc, 0xdc] |
0x00017d8c add r1, pc | r1 = 0x2fbfa;
0x00017d8e bl 0x396b0 | zbx_dsprintf ();
0x00017d92 b 0x17c30 | goto label_30;
| label_77:
0x00017d94 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00017d96 mov r2, r6 | r2 = r6;
0x00017d98 mov r0, r7 | r0 = r7;
0x00017d9a movw r1, 0x589 | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017d9e bl 0x35d28 | zbx_strdup2 ();
0x00017da2 str r0, [r5] | *(r5) = r0;
0x00017da4 ldrd r5, r3, [r4, 0x24] | __asm ("ldrd r5, r3, [r4, 0x24]");
0x00017da8 b 0x17bec | goto label_31;
| label_78:
0x00017dee ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00017df0 mov r0, r7 | r0 = r7;
0x00017df2 movw r1, 0x58b | r1 = (r1 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017df6 bl 0x35d28 | zbx_strdup2 ();
0x00017dfa str r0, [r5] | *(r5) = r0;
0x00017dfc ldrd r5, r3, [r4, 0x24] | __asm ("ldrd r5, r3, [r4, 0x24]");
0x00017e00 b 0x17bec | goto label_31;
| label_79:
0x00017e02 ldr r1, [pc, 0x6c] |
0x00017e04 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00017e08 add r1, pc | r1 = 0x2fc7e;
0x00017e0a bl 0x396b0 | zbx_dsprintf ();
0x00017e0e str r0, [r5] | *(r5) = r0;
0x00017e10 ldrd r5, r3, [r4, 0x24] | __asm ("ldrd r5, r3, [r4, 0x24]");
0x00017e14 b 0x17bec | goto label_31;
| label_80:
0x00017e16 mov r0, r1 | r0 = r1;
0x00017e18 ldr r1, [pc, 0x58] |
0x00017e1a ldrd r2, r3, [r4, 0x10] | __asm ("ldrd r2, r3, [r4, 0x10]");
0x00017e1e add r1, pc | r1 = 0x2fc96;
0x00017e20 bl 0x396b0 | zbx_dsprintf ();
0x00017e24 str r0, [r5] | *(r5) = r0;
0x00017e26 ldrd r5, r3, [r4, 0x24] | __asm ("ldrd r5, r3, [r4, 0x24]");
0x00017e2a b 0x17bec | goto label_31;
| label_76:
0x00017e2c blx 0xbe48 | fcn_0000be48 ();
0x00017e30 ldr r3, [pc, 0x44] |
0x00017e32 movw r2, 0x5b2 | r2 = (r2 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00017e36 ldr r1, [pc, 0x44] |
0x00017e38 ldr r0, [pc, 0x44] |
0x00017e3a add r3, pc | r3 = 0x2fcb6;
0x00017e3c add r1, pc | r1 = 0x2fcbe;
0x00017e3e adds r3, 0x38 | r3 += 0x38;
0x00017e40 add r0, pc | r0 = 0x2fcc4;
0x00017e42 blx 0xc4a0 | fcn_0000c4a0 ();
0x00017e46 nop |
0x00017e48 str r0, [r7, r2] | *((r7 + r2)) = r0;
0x00017e4a movs r4, r0 | r4 = r0;
0x00017e4c lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x00017e4e movs r0, r0 |
0x00017e50 str r0, [r5, r1] | *((r5 + r1)) = r0;
0x00017e52 movs r4, r0 | r4 = r0;
| if (r4 == r0) {
0x00017e54 beq 0x17e9c | goto label_33;
| }
0x00017e56 movs r2, r0 | r2 = r0;
0x00017e58 lsls r2, r4, 0xa | r2 = r4 << 0xa;
0x00017e5a movs r3, r0 | r3 = r0;
0x00017e5c lsls r4, r3, 9 | r4 = r3 << 9;
0x00017e5e movs r3, r0 | r3 = r0;
0x00017e60 ldm r6!, {r1, r7} | r1 = *(r6!);
| r7 = *((r6! + 4));
0x00017e62 movs r2, r0 | r2 = r0;
0x00017e64 ldm r6, {r5, r6} | r5 = *(r6);
| r6 = *((r6 + 4));
0x00017e66 movs r2, r0 | r2 = r0;
0x00017e68 b 0x17d74 |
| } while (1);
| do {
0x00017e94 movs r3, 0 | r3 = 0;
0x00017e96 strb r3, [ip, -0x1] | *((ip - 0x1)) = r3;
0x00017e9a bx lr | return;
| label_33:
0x00017e9c ldrb.w ip, [r1, 1] | ip = *((r1 + 1));
0x00017ea0 cmp.w ip, 0x22 |
| if (ip == 0x22) {
0x00017ea4 beq 0x17ebe | goto label_84;
| }
| label_32:
0x00017ea6 strb r3, [r0] | *(r0) = r3;
0x00017ea8 mov ip, r2 |
0x00017eaa ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x00017eae mov r0, r2 | r0 = r2;
0x00017eb0 adds r2, 1 | r2++;
0x00017eb2 cmp r3, 0 |
0x00017eb4 beq 0x17e94 |
| } while (r3 == 0);
0x00017eb6 cmp r3, 0x5c |
| if (r3 != 0x5c) {
0x00017eb8 bne 0x17ea6 | goto label_32;
| }
0x00017eba b 0x17e9c | goto label_33;
| label_84:
0x00017ebe adds r1, 1 | r1++;
0x00017ec0 mov r3, ip | r3 = ip;
0x00017ec2 b 0x17ea6 | goto label_32;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1010c */
| #include <stdint.h>
|
; (fcn) sym.listener_thread () | void listener_thread (int16_t arg_24h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_60h, int16_t arg_e0ch, uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| 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;
0x0001010c ldr r2, [pc, 0x304] |
0x0001010e ldr r3, [pc, 0x308] | r3 = *(0x1041a);
0x00010110 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010114 subw sp, sp, 0xe14 | __asm ("subw sp, sp, case.0x3207a.11");
0x00010118 add r2, pc | r2 = 0x20530;
0x0001011a ldr r7, [pc, 0x300] |
0x0001011c ldr r3, [r2, r3] |
0x0001011e add r7, pc | r7 = 0x20540;
0x00010120 ldr r3, [r3] | r3 = *(0x20530);
0x00010122 str.w r3, [sp, 0xe0c] | __asm ("str.w r3, [arg_e0ch]");
0x00010126 mov.w r3, 0 | r3 = 0;
0x0001012a cmp r0, 0 |
| if (arg_24h == ) {
0x0001012c beq.w 0x10346 | goto label_10;
| }
0x00010130 ldr r3, [r0, 0xc] | r3 = *(arg_24hxc);
0x00010132 mov r5, r0 | r5 = r0;
0x00010134 cmp r3, 0 |
| if (r3 == 0) {
0x00010136 beq.w 0x1026a | goto label_11;
| }
0x0001013a ldr r2, [pc, 0x2e4] | r2 = *(0x10422);
0x0001013c ldrb r1, [r0, 8] | r1 = *((r0 + 8));
0x0001013e ldr r3, [pc, 0x2e4] | r3 = *(0x10426);
0x00010140 ldr r2, [r7, r2] | r2 = *((r7 + r2));
0x00010142 strb r1, [r2] | *(r2) = r1;
0x00010144 str r2, [sp, 0xc] | var_ch = r2;
0x00010146 ldr r6, [r7, r3] | r6 = *((r7 + r3));
0x00010148 ldr r3, [r0] | r3 = *(r0);
0x0001014a str r3, [r6] | *(r6) = r3;
0x0001014c ldr r3, [pc, 0x2d8] | r3 = *(0x10428);
0x0001014e ldr r4, [r7, r3] | r4 = *((r7 + r3));
0x00010150 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00010152 str r3, [r4] | *(r4) = r3;
0x00010154 ldr r3, [pc, 0x2d4] | r3 = *(0x1042c);
0x00010156 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00010158 ldrb r0, [r3] | r0 = *(r3);
0x0001015a bl 0x3a048 | get_program_type_string ();
0x0001015e ldr r2, [sp, 0xc] | r2 = var_ch;
0x00010160 ldr.w r8, [r6] | r8 = *(r6);
0x00010164 mov r6, r0 | r6 = r0;
0x00010166 ldrb r0, [r2] | r0 = *(r2);
0x00010168 bl 0x39e88 | get_process_type_string ();
0x0001016c str r0, [sp] | *(sp) = r0;
0x0001016e mov r3, r8 | r3 = r8;
0x00010170 ldr r1, [r4] | r1 = *(r4);
0x00010172 mov r2, r6 | r2 = r6;
0x00010174 movs r0, 0x7f | r0 = 0x7f;
0x00010176 add r6, sp, 0x60 | r6 += arg_60h;
0x00010178 str r1, [sp, 4] | var_4h = r1;
0x0001017a ldr r1, [pc, 0x2b4] |
0x0001017c add r1, pc | r1 = 0x205b2;
0x0001017e bl 0x271b0 | zbx_zabbix_log ();
0x00010182 ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x00010184 movw r2, 0xdac | r2 = (r2 & 0xFFFF0000) | (case.0x3207a.11 & 0xFFFF);
0x00010188 mov r0, r6 | r0 = r6;
0x0001018a blx 0xbd78 | fcn_0000bd78 ();
0x0001018e mov r0, r5 | r0 = r5;
0x00010190 blx 0xbd14 | gai_strerror ();
0x00010194 ldr r3, [pc, 0x29c] | r3 = *(0x10434);
0x00010196 ldr r5, [r7, r3] | r5 = *((r7 + r3));
0x00010198 ldr r3, [r5] | r3 = *(r5);
0x0001019a cmp r3, 0 |
| if (r3 != 0) {
0x0001019c bne 0x10228 | goto label_12;
| }
0x0001019e ldr r3, [pc, 0x298] | r3 = *(0x1043a);
0x000101a0 ldr.w fp, [pc, 0x298] | fp = *(0x0001043c);
0x000101a4 ldr.w r8, [r7, r3] | r8 = *((r7 + r3));
0x000101a8 ldr r3, [pc, 0x294] | r3 = *(0x10440);
0x000101aa add fp, pc |
0x000101ac ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000101ae str r3, [sp, 8] | var_8h = r3;
0x000101b0 ldr r3, [pc, 0x290] | r3 = *(0x10444);
0x000101b2 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x000101b4 str r3, [sp, 0x14] | var_14h = r3;
0x000101b6 ldr r3, [pc, 0x290] | r3 = *(0x1044a);
0x000101b8 ldr.w sb, [r7, r3] | sb = *((r7 + r3));
0x000101bc ldr r3, [pc, 0x28c] |
0x000101be ldr r7, [pc, 0x290] |
0x000101c0 add r3, pc | r3 = 0x20610;
0x000101c2 str r3, [sp, 0x10] | var_10h = r3;
0x000101c4 add r3, sp, 0x30 | r3 += arg_30h;
0x000101c6 str r3, [sp, 0x1c] | var_1ch = r3;
0x000101c8 add r3, sp, 0x2c | r3 += arg_2ch;
0x000101ca add r7, pc | r7 = 0x20620;
0x000101cc str r3, [sp, 0x18] | var_18h = r3;
0x000101ce b 0x101ea |
| while (sl != 0) {
| label_3:
0x000101d0 blx 0xc15c | r0 = fcn_0000c15c ();
0x000101d4 ldr r3, [r0] | r3 = *(r0);
0x000101d6 cmp r3, 4 |
| if (r3 != 4) {
0x000101d8 beq 0x101e6 |
0x000101da ldr.w r3, [sb] | r3 = *(sb);
0x000101de cmp r3, 2 |
| if (r3 > 2) {
0x000101e0 bgt 0x1024c | goto label_13;
| }
| label_2:
0x000101e2 ldr r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x000101e4 cbz r3, 0x10244 | goto label_14;
| }
| }
| label_1:
0x000101e6 ldr r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x000101e8 cbnz r3, 0x10228 | goto label_12;
| }
| label_0:
0x000101ea ldr r1, [r4] | r1 = *(r4);
0x000101ec mov r0, r7 | r0 = r7;
0x000101ee bl 0x35e5c | zbx_setproctitle ();
0x000101f2 ldr.w r1, [r8] | r1 = *(r8);
0x000101f6 mov r0, r6 | r0 = r6;
0x000101f8 bl 0x2cf64 | r0 = zbx_tcp_accept ();
0x000101fc mov sl, r0 | sl = r0;
0x000101fe bl 0x34f20 | zbx_time ();
0x00010202 bl 0x37efc | zbx_update_env ();
0x00010206 cmp.w sl, 0 |
0x0001020a bne 0x101d0 |
| }
0x0001020c ldr r1, [r4] | r1 = *(r4);
0x0001020e mov r0, fp | r0 = fp;
0x00010210 bl 0x35e5c | zbx_setproctitle ();
0x00010214 ldr r3, [sp, 8] | r3 = var_8h;
0x00010216 mov r0, r6 | r0 = r6;
0x00010218 ldr r1, [r3] | r1 = *(r3);
0x0001021a ldrb r3, [r1] | r3 = *(r1);
| if (r3 != 0) {
0x0001021c cbnz r3, 0x1025c | goto label_15;
| }
0x0001021e bl 0x2d22c | zbx_tcp_unaccept ();
0x00010222 ldr r3, [r5] | r3 = *(r5);
0x00010224 cmp r3, 0 |
| if (r3 == 0) {
0x00010226 beq 0x101ea | goto label_0;
| }
| label_12:
0x00010228 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001022a ldrb r0, [r3] | r0 = *(r3);
0x0001022c bl 0x39e88 | r0 = get_process_type_string ();
0x00010230 mov r1, r0 | r1 = r0;
0x00010232 ldr r0, [pc, 0x220] |
0x00010234 ldr r2, [r4] | r2 = *(r4);
0x00010236 add r0, pc | r0 = 0x20690;
0x00010238 bl 0x35e5c | zbx_setproctitle ();
| do {
0x0001023c movs r0, 0x3c | r0 = 0x3c;
0x0001023e blx 0xbe00 | fcn_0000be00 ();
0x00010242 b 0x1023c |
| } while (1);
| label_14:
0x00010244 movs r0, 1 | r0 = 1;
0x00010246 blx 0xbe00 | fcn_0000be00 ();
0x0001024a b 0x101e6 | goto label_1;
| label_13:
0x0001024c bl 0x2c798 | zbx_socket_strerror ();
0x00010250 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00010252 mov r2, r0 | r2 = r0;
0x00010254 movs r0, 3 | r0 = 3;
0x00010256 bl 0x271b0 | zbx_zabbix_log ();
0x0001025a b 0x101e2 | goto label_2;
| label_15:
0x0001025c bl 0x2db48 | r0 = zbx_tcp_check_allowed_peers ();
| if (r0 != 0) {
0x00010260 cbz r0, 0x1027c |
0x00010262 mov r0, r6 | r0 = r6;
0x00010264 bl 0x2d22c | zbx_tcp_unaccept ();
0x00010268 b 0x101d0 | goto label_3;
| label_11:
0x0001026a ldr r3, [pc, 0x1ec] |
0x0001026c movs r2, 0x6f | r2 = 0x6f;
0x0001026e ldr r1, [pc, 0x1ec] |
0x00010270 ldr r0, [pc, 0x1ec] |
0x00010272 add r3, pc | r3 = 0x206d0;
0x00010274 add r1, pc | r1 = 0x206d6;
0x00010276 add r0, pc | r0 = 0x206da;
0x00010278 blx 0xc4a0 | fcn_0000c4a0 ();
| }
0x0001027c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001027e mov r0, r6 | r0 = r6;
0x00010280 ldr r1, [r3] | r1 = *(r3);
0x00010282 bl 0x2d45c | zbx_tcp_recv_ext ();
0x00010286 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00010288 beq 0x10336 | goto label_16;
| }
0x0001028a ldr r1, [pc, 0x1d8] |
0x0001028c ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x0001028e add r1, pc | r1 = 0x206f8;
0x00010290 bl 0x3936c | zbx_rtrim ();
0x00010294 ldr.w r3, [sb] | r3 = *(sb);
0x00010298 cmp r3, 3 |
| if (r3 > 3) {
0x0001029a bgt 0x1038e | goto label_17;
| }
| label_4:
0x0001029c ldr.w sl, [sp, 0x1c] | sl = var_1ch;
0x000102a0 mov r0, sl | r0 = sl;
0x000102a2 bl 0x16eb8 | init_result ();
0x000102a6 ldr r0, [r6, 0xc] | r0 = *((r6 + 0xc));
0x000102a8 mov r2, sl | r2 = sl;
0x000102aa movs r1, 4 | r1 = 4;
0x000102ac bl 0x17240 | r0 = process ();
0x000102b0 cmp r0, 0 |
| if (r0 == 0) {
0x000102b2 beq 0x10358 | goto label_18;
| }
0x000102b4 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000102b6 movs r1, 0x20 | r1 = 0x20;
0x000102b8 bl 0x17b2c | get_result_value_by_type ();
0x000102bc str r0, [sp, 0x20] | var_20h = r0;
0x000102be cmp r0, 0 |
| if (r0 == 0) {
0x000102c0 beq 0x103bc | goto label_19;
| }
0x000102c2 ldr.w r3, [sb] | r3 = *(sb);
0x000102c6 movs r2, 0 | r2 = 0;
0x000102c8 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000102ca cmp r3, 3 |
0x000102cc str r2, [r1] | *(r1) = r2;
| if (r3 > 3) {
0x000102ce bgt 0x103ae | goto label_20;
| }
| label_6:
0x000102d0 ldr.w sl, [pc, 0x194] | sl = *(0x00010468);
0x000102d4 add sl, pc | sl += pc;
0x000102d6 ldr.w r2, [sl] | r2 = *(sl);
0x000102da cmp r2, 0 |
| if (r2 == 0) {
0x000102dc beq.w 0x103f2 | goto label_21;
| }
| label_9:
0x000102e0 movs r3, 0x10 | r3 = 0x10;
0x000102e2 ldr.w sl, [pc, 0x188] | sl = *(0x0001046c);
0x000102e4 adr r1, 0x220 | r1 = 0x220;
0x000102e6 str r3, [sp] | *(sp) = r3;
0x000102e8 ldr r1, [pc, 0x184] |
0x000102ea ldr r3, [pc, 0x188] |
0x000102ec add sl, pc | sl += pc;
0x000102ee mov r0, sl | r0 = sl;
0x000102f0 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000102f2 add r1, pc | r1 = 0x20766;
0x000102f4 add r3, pc |
0x000102f6 str r1, [sp, 0x24] | *(arg_24h) = r1;
0x000102f8 bl 0x3905c | zbx_strncpy_alloc ();
0x000102fc ldr r0, [sp, 0x18] | r0 = var_18h;
0x000102fe ldr r3, [sp, 0x20] | r3 = var_20h;
0x00010300 ldr r1, [sp, 0x24] | r1 = *(arg_24h);
0x00010302 ldr r2, [r0] | r2 = *(r0);
0x00010304 ldr r3, [r3] |
0x00010306 adds r2, 1 | r2++;
0x00010308 str r2, [r0] | *(r0) = r2;
0x0001030a mov r2, r0 | r2 = r0;
0x0001030c mov r0, sl | r0 = sl;
0x0001030e bl 0x39168 | zbx_strcpy_alloc ()
0x00010312 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00010314 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00010316 ldr.w r1, [sl] | r1 = *(sl);
0x0001031a ldr r3, [r3] | r3 = *(0x2076e);
0x0001031c str r3, [sp] | *(sp) = r3;
0x0001031e movs r3, 1 | r3 = 1;
0x00010320 ldr r2, [r0] | r2 = *(r0);
0x00010322 mov r0, r6 | r0 = r6;
0x00010324 bl 0x2c968 | r0 = zbx_tcp_send_ext ();
0x00010328 mov sl, r0 | sl = r0;
| do {
| label_7:
0x0001032a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0001032c bl 0x16ee0 | free_result ();
0x00010330 cmp.w sl, -1 |
| if (sl == -1) {
0x00010334 bne 0x1033e |
| label_16:
0x00010336 ldr.w r3, [sb] | r3 = *(sb);
0x0001033a cmp r3, 3 |
| if (r3 > 3) {
0x0001033c bgt 0x1039c | goto label_22;
| }
| }
| label_5:
0x0001033e mov r0, r6 | r0 = r6;
0x00010340 bl 0x2d22c | zbx_tcp_unaccept ();
0x00010344 b 0x101e6 | goto label_1;
| label_10:
0x00010346 ldr r3, [pc, 0x130] |
0x00010348 movs r2, 0x6e | r2 = 0x6e;
0x0001034a ldr r1, [pc, 0x130] |
0x0001034c ldr r0, [pc, 0x130] |
0x0001034e add r3, pc | r3 = 0x207cc;
0x00010350 add r1, pc | r1 = 0x207d2;
0x00010352 add r0, pc | r0 = 0x207d6;
0x00010354 blx 0xc4a0 | fcn_0000c4a0 ();
| label_18:
0x00010358 mov r0, sl | r0 = sl;
0x0001035a movs r1, 8 | r1 = 8;
0x0001035c bl 0x17b2c | r0 = get_result_value_by_type ();
0x00010360 mov sl, r0 | sl = r0;
0x00010362 cmp r0, 0 |
| if (r0 == 0) {
0x00010364 beq 0x103ea | goto label_23;
| }
0x00010366 ldr.w r3, [sb] | r3 = *(sb);
0x0001036a cmp r3, 3 |
| if (r3 > 3) {
0x0001036c bgt 0x103dc | goto label_24;
| }
| label_8:
0x0001036e ldr.w sl, [sl] | sl = *(sl);
0x00010372 mov r0, sl | r0 = sl;
0x00010374 blx 0xc114 | fcn_0000c114 ();
0x00010378 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001037a mov r2, r0 | r2 = r0;
0x0001037c mov r1, sl | r1 = sl;
0x0001037e mov r0, r6 | r0 = r6;
0x00010380 ldr r3, [r3] | r3 = *(r3);
0x00010382 str r3, [sp] | *(sp) = r3;
0x00010384 movs r3, 1 | r3 = 1;
0x00010386 bl 0x2c968 | r0 = zbx_tcp_send_ext ();
0x0001038a mov sl, r0 | sl = r0;
0x0001038c b 0x1032a |
| } while (1);
| label_17:
0x0001038e ldr r1, [pc, 0xf4] |
0x00010390 movs r0, 4 | r0 = 4;
0x00010392 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x00010394 add r1, pc | r1 = 0x2081e;
0x00010396 bl 0x271b0 | zbx_zabbix_log ();
0x0001039a b 0x1029c | goto label_4;
| label_22:
0x0001039c bl 0x2c798 | zbx_socket_strerror ();
0x000103a0 ldr r1, [pc, 0xe4] |
0x000103a2 mov r2, r0 | r2 = r0;
0x000103a4 movs r0, 4 | r0 = 4;
0x000103a6 add r1, pc | r1 = 0x20832;
0x000103a8 bl 0x271b0 | zbx_zabbix_log ();
0x000103ac b 0x1033e | goto label_5;
| label_20:
0x000103ae ldr r1, [pc, 0xdc] |
0x000103b0 ldr r2, [r0] | r2 = *(r0);
0x000103b2 movs r0, 4 | r0 = 4;
0x000103b4 add r1, pc | r1 = 0x20846;
0x000103b6 bl 0x271b0 | zbx_zabbix_log ();
0x000103ba b 0x102d0 | goto label_6;
| label_19:
0x000103bc ldr.w r3, [sb] | r3 = *(sb);
0x000103c0 cmp r3, 3 |
0x000103c2 bgt 0x10408 |
| while (1) {
0x000103c4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000103c6 movs r2, 0x10 | r2 = 0x10;
0x000103c8 ldr r1, [pc, 0xc4] |
0x000103ca mov r0, r6 | r0 = r6;
0x000103cc ldr r3, [r3] | r3 = *(r3);
0x000103ce add r1, pc | r1 = 0x20862;
0x000103d0 str r3, [sp] | *(sp) = r3;
0x000103d2 movs r3, 1 | r3 = 1;
0x000103d4 bl 0x2c968 | r0 = zbx_tcp_send_ext ();
0x000103d8 mov sl, r0 | sl = r0;
0x000103da b 0x1032a | goto label_7;
| label_24:
0x000103dc ldr r1, [pc, 0xb4] |
0x000103de ldr r2, [r0] | r2 = *(r0);
0x000103e0 movs r0, 4 | r0 = 4;
0x000103e2 add r1, pc | r1 = 0x2087a;
0x000103e4 bl 0x271b0 | zbx_zabbix_log ();
0x000103e8 b 0x1036e | goto label_8;
| label_23:
0x000103ea ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000103ec bl 0x16ee0 | free_result ();
0x000103f0 b 0x1033e | goto label_5;
| label_21:
0x000103f2 ldr r3, [pc, 0xa4] |
0x000103f4 movs r1, 0x4e | r1 = 0x4e;
0x000103f6 ldr r0, [pc, 0xa4] |
0x000103f8 add r3, pc |
0x000103fa ldr r3, [r3] | r3 = *(0x20896);
0x000103fc add r0, pc | r0 = 0x2089e;
0x000103fe bl 0x35c28 | zbx_malloc2 ();
0x00010402 str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x00010406 b 0x102e0 | goto label_9;
0x00010408 ldr r1, [pc, 0x94] |
0x0001040a movs r0, 4 | r0 = 4;
0x0001040c add r1, pc | r1 = 0x208b0;
0x0001040e bl 0x271b0 | zbx_zabbix_log ();
0x00010412 b 0x103c4 |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x28014 */
| #include <stdint.h>
|
; (fcn) sym.regexp_sub_ex () | void regexp_sub_ex (int16_t arg_58h, int16_t arg_5ch, int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00028014 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00028018 mov fp, r1 |
0x0002801a sub sp, 0x34 |
0x0002801c ldr r1, [pc, 0x324] |
0x0002801e mov r8, r0 | r8 = r0;
0x00028020 mov r0, r3 | r0 = r3;
0x00028022 ldr r4, [sp, 0x58] | r4 = *(arg_58h);
0x00028024 ldr r3, [pc, 0x320] | r3 = *(0x28348);
0x00028026 add r1, pc | r1 = 0x5036e;
0x00028028 str r4, [sp, 0x14] | var_14h = r4;
0x0002802a ldr r3, [r1, r3] |
0x0002802c ldr r3, [r3] | r3 = *(0x5036e);
0x0002802e str r3, [sp, 0x2c] | var_2ch = r3;
0x00028030 mov.w r3, 0 | r3 = 0;
0x00028034 ldr r3, [sp, 0x5c] | r3 = *(arg_5ch);
0x00028036 str r3, [sp, 0x10] | var_10h = r3;
0x00028038 cmp r2, 0 |
| if (r2 == 0) {
0x0002803a beq.w 0x28226 | goto label_11;
| }
0x0002803e ldrb r3, [r2] | r3 = *(r2);
0x00028040 mov r1, r2 | r1 = r2;
0x00028042 cmp r3, 0 |
| if (r3 == 0) {
0x00028044 beq.w 0x28226 | goto label_11;
| }
0x00028048 cmp r3, 0x40 |
| if (r3 != 0x40) {
0x0002804a bne.w 0x2823a | goto label_12;
| }
0x0002804e ldr.w sb, [r8, 4] | sb = *((r8 + 4));
0x00028052 adds r7, r2, 1 | r7 = r2 + 1;
0x00028054 cmp.w sb, 0 |
| if (sb <= 0) {
0x00028058 ble.w 0x28302 | goto label_13;
| }
0x0002805c movs r3, 0 | r3 = 0;
0x0002805e mov sl, r7 | sl = r7;
0x00028060 mov.w r4, -1 | r4 = -1;
0x00028064 mov r6, r3 | r6 = r3;
0x00028066 mov r7, sb | r7 = sb;
0x00028068 str r3, [sp, 0x18] | var_18h = r3;
| do {
0x0002806a ldr.w r3, [r8] | r3 = *(r8);
0x0002806e mov r1, sl | r1 = sl;
0x00028070 ldr.w sb, [r3, r6, lsl 2] | offset_0 = r6 << 2;
| sb = *((r3 + offset_0));
0x00028074 ldr.w r0, [sb] | r0 = *(sb);
0x00028078 blx 0xbc58 | fcn_0000bc58 ();
0x0002807c str r0, [sp, 0xc] | var_ch = r0;
0x0002807e cmp r0, 0 |
| if (r0 == 0) {
0x00028080 bne 0x280f6 |
0x00028082 ldr.w r4, [sb, 8] | r4 = *((sb + 8));
0x00028086 cmp r4, 4 |
| if (r4 > 4) {
0x00028088 bhi.w 0x28328 | goto label_14;
| }
| /* switch table (5 cases) at 0x28090 */
0x0002808c tbb [pc, r4] | __asm ("tbb case.0x3207a.11");
0x00028096 ldrb.w r3, [sb, 0xd] | r3 = *((sb + 0xd));
0x0002809a mov r0, fp | r0 = fp;
0x0002809c ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x000280a0 cmp r3, 0 |
0x000280a2 mov.w r3, -1 | r3 = -1;
0x000280a6 ite ne |
| if (r3 == 0) {
0x000280a8 movne r2, 2 | r2 = 2;
| }
| if (r3 != 0) {
0x000280aa moveq r2, 3 | r2 = 3;
| }
0x000280ac str r3, [sp, 0x28] | var_28h = r3;
0x000280ae add r3, sp, 0x28 | r3 += var_28h;
0x000280b0 bl 0x279b0 | r0 = fcn_000279b0 (r0, r1, r2, r3);
0x000280b4 cmp r0, 0 |
| if (r0 == 0) {
0x000280b6 beq.w 0x282c2 | goto label_15;
| }
| label_1:
0x000280ba ldr r4, [sp, 0x18] | r4 = var_18h;
| if (r4 == 0) {
0x000280bc cbz r4, 0x28120 | goto label_2;
| }
0x000280be movs r6, 0 | r6 = 0;
0x000280c0 b 0x281ba | goto label_16;
0x000280c2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000280c4 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x000280c8 ldrb.w r2, [sb, 0xd] | r2 = *((sb + 0xd));
0x000280cc cmp r3, 0 |
| if (r3 == 0) {
0x000280ce beq.w 0x282a2 | goto label_17;
| }
0x000280d2 movs r3, 0 | r3 = 0;
0x000280d4 mov r0, fp | r0 = fp;
0x000280d6 str r3, [sp, 0x28] | var_28h = r3;
0x000280d8 add r3, sp, 0x28 | r3 += var_28h;
0x000280da str r3, [sp] | *(sp) = r3;
0x000280dc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000280de bl 0x27db4 | r0 = fcn_00027db4 (r0, r1, r2, r3);
0x000280e2 cmp r0, 1 |
0x000280e4 mov r4, r0 | r4 = r0;
| if (r0 == 1) {
0x000280e6 beq.w 0x28262 | goto label_18;
| }
| label_6:
0x000280ea adds r3, r4, 1 | r3 = r4 + 1;
| label_0:
0x000280ec cmp r3, 1 |
| if (r3 < 1) {
0x000280ee bls.w 0x2830c | goto label_19;
| }
0x000280f2 ldr.w r7, [r8, 4] | r7 = *((r8 + 4));
| }
| label_4:
0x000280f6 adds r6, 1 | r6++;
0x000280f8 cmp r7, r6 |
0x000280fa bgt 0x2806a |
| } while (r7 > r6);
0x000280fc sub.w r6, r4, 1 | r6 = r4 - 1;
0x00028100 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00028102 clz r6, r6 | r6 &= r6;
0x00028106 lsrs r6, r6, 5 | r6 >>= 5;
0x00028108 cmp r3, 0 |
0x0002810a ite eq |
| if (r3 != 0) {
0x0002810c moveq r3, 0 | r3 = 0;
| }
| if (r3 == 0) {
0x0002810e andne r3, r6, 1 | r3 = r6 & 1;
| }
0x00028112 cmp r3, 0 |
| if (r3 == 0) {
0x00028114 beq.w 0x28272 | goto label_20;
| }
0x00028118 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0002811a movs r4, 1 | r4 = 1;
0x0002811c ldr r2, [sp, 0x18] | r2 = var_18h;
0x0002811e str r2, [r3] | *(r3) = r2;
| label_2:
0x00028120 ldr r2, [pc, 0x228] |
0x00028122 ldr r3, [pc, 0x224] | r3 = *(0x2834a);
0x00028124 add r2, pc | r2 = 0x50474;
0x00028126 ldr r3, [r2, r3] | r3 = *(0x50474);
0x00028128 ldr r2, [r3] | r2 = *(0x50474);
0x0002812a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0002812c eors r2, r3 | r2 ^= r3;
0x0002812e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00028132 bne.w 0x28308 | goto label_21;
| }
0x00028136 mov r0, r4 | r0 = r4;
0x00028138 add sp, 0x34 |
0x0002813a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0002813e ldrb.w r3, [sb, 0xd] | r3 = *((sb + 0xd));
0x00028142 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x00028146 cmp r3, 0 |
| if (r3 == 0) {
0x00028148 beq.w 0x28284 | goto label_22;
| }
0x0002814c cmp r3, 1 |
| if (r3 != 1) {
0x0002814e bne 0x28236 | goto label_23;
| }
0x00028150 mov r0, fp | r0 = fp;
0x00028152 blx 0xbbe8 | r0 = strstr (r0, r1);
0x00028156 clz r4, r0 | r4 &= r0;
0x0002815a lsrs r4, r4, 5 | r4 >>= 5;
0x0002815c adds r3, r4, 1 | r3 = r4 + 1;
0x0002815e b 0x280ec | goto label_0;
0x00028160 ldr.w r5, [sb, 4] | r5 = *((sb + 4));
0x00028164 ldrb.w r7, [sb, 0xd] | r7 = *((sb + 0xd));
0x00028168 ldrb.w sb, [sb, 0xc] | sb = *((sb + 0xc));
0x0002816c ldrb r3, [r5] | r3 = *(r5);
0x0002816e cmp r3, 0 |
| if (r3 == 0) {
0x00028170 beq 0x280ba | goto label_1;
| }
0x00028172 str r4, [sp, 0x1c] | var_1ch = r4;
0x00028174 mov r4, r7 | r4 = r7;
0x00028176 mov r7, r5 | r7 = r5;
| do {
| label_3:
0x00028178 mov r1, sb | r1 = sb;
0x0002817a mov r0, r7 | r0 = r7;
0x0002817c blx 0xc138 | r0 = fcn_0000c138 ();
0x00028180 mov r5, r0 | r5 = r0;
0x00028182 cmp r0, 0 |
| if (r0 == 0) {
0x00028184 beq 0x281ea | goto label_24;
| }
0x00028186 mov.w r3, 0 | r3 = 0;
0x0002818a strb r3, [r0] | *(r0) = r3;
0x0002818c cmp r4, 0 |
| if (r4 == 0) {
0x0002818e beq 0x2821c | goto label_25;
| }
0x00028190 cmp r4, 1 |
| if (r4 == 1) {
0x00028192 beq 0x281f2 | goto label_26;
| }
0x00028194 mov r7, r0 | r7 = r0;
0x00028196 strb sb, [r7], 1 | *(r7) = sb;
| r7++;
0x0002819a ldrb r2, [r0, 1] | r2 = *((r0 + 1));
0x0002819c cmp r2, 0 |
0x0002819e bne 0x28178 |
| } while (r2 != 0);
| label_8:
0x000281a0 ldr r4, [sp, 0xc] | r4 = var_ch;
0x000281a2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000281a4 subs r2, r4, 1 | r2 = r4 - 1;
0x000281a6 rsbs r6, r2, 0 | r6 = r2 - ;
0x000281a8 adcs r6, r2 | __asm ("adcs r6, r2");
0x000281aa cmp r3, 0 |
0x000281ac ldr r3, [sp, 0x18] | r3 = var_18h;
0x000281ae it eq |
| if (r3 != 0) {
0x000281b0 moveq r6, 0 | r6 = 0;
| }
0x000281b2 cmp r3, 0 |
| if (r3 == 0) {
0x000281b4 beq 0x28120 | goto label_2;
| }
0x000281b6 ldr r4, [sp, 0xc] | r4 = var_ch;
| label_9:
0x000281b8 str r4, [sp, 0xc] | var_ch = r4;
| label_16:
0x000281ba ldr r0, [sp, 0x18] | r0 = var_18h;
0x000281bc ldr r4, [sp, 0xc] | r4 = var_ch;
0x000281be blx 0xbd14 | gai_strerror ();
0x000281c2 cmp r6, 0 |
| if (r6 != 0) {
0x000281c4 bne 0x2822a | goto label_7;
| }
0x000281c6 b 0x28120 | goto label_2;
0x000281c8 ldrb.w r3, [sb, 0xd] | r3 = *((sb + 0xd));
0x000281cc ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x000281d0 cmp r3, 0 |
| if (r3 == 0) {
0x000281d2 beq 0x28294 | goto label_27;
| }
0x000281d4 cmp r3, 1 |
| if (r3 != 1) {
0x000281d6 bne.w 0x280ba | goto label_1;
| }
0x000281da mov r0, fp | r0 = fp;
0x000281dc blx 0xbbe8 | r0 = strstr (r0, r1);
0x000281e0 subs r4, r0, 0 | r4 = r0 - 0;
0x000281e2 it ne |
| if (r4 == r0) {
0x000281e4 movne r4, 1 | r4 = 1;
| }
0x000281e6 adds r3, r4, 1 | r3 = r4 + 1;
0x000281e8 b 0x280ec | goto label_0;
| if (r4 == 0) {
| label_24:
0x000281ea cbz r4, 0x2821c | goto label_25;
| }
0x000281ec cmp r4, 1 |
| if (r4 != 1) {
0x000281ee bne.w 0x280ba | goto label_1;
| }
| label_26:
0x000281f2 mov r1, r7 | r1 = r7;
0x000281f4 mov r0, fp | r0 = fp;
0x000281f6 blx 0xbbe8 | strstr (r0, r1);
0x000281f8 invalid |
| label_5:
0x000281fa subs r1, r0, 0 | r1 = r0 - 0;
0x000281fc it ne |
| if (r1 == r0) {
0x000281fe movne r1, 1 | r1 = 1;
| }
0x00028200 cmp r5, 0 |
| if (r5 == 0) {
0x00028202 beq 0x282da | goto label_28;
| }
0x00028204 mov r7, r5 | r7 = r5;
0x00028206 strb sb, [r7], 1 | *(r7) = sb;
| r7++;
0x0002820a ldrb r2, [r5, 1] | r2 = *((r5 + 1));
0x0002820c cmp r2, 0 |
| if (r2 == 0) {
0x0002820e beq 0x282da | goto label_28;
| }
0x00028210 cmp r0, 0 |
| if (r0 == 0) {
0x00028212 beq 0x28178 | goto label_3;
| }
0x00028214 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x00028216 ldr.w r7, [r8, 4] | r7 = *((r8 + 4));
0x0002821a b 0x280f6 | goto label_4;
| label_25:
0x0002821c mov r1, r7 | r1 = r7;
0x0002821e mov r0, fp | r0 = fp;
0x00028220 bl 0x39df0 | zbx_strcasestr ();
0x00028224 b 0x281fa | goto label_5;
| label_11:
0x00028226 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00028228 cbz r3, 0x28232 |
| while (r6 != 0) {
| label_7:
0x0002822a ldr r3, [sp, 0x10] | r3 = var_10h;
0x0002822c ldr r4, [r3] | r4 = *(r3);
0x0002822e cmp r4, 0 |
| if (r4 == 0) {
0x00028230 beq 0x282e0 | goto label_29;
| }
0x00028232 movs r4, 1 | r4 = 1;
0x00028234 b 0x28120 | goto label_2;
| label_23:
0x00028236 movs r4, 1 | r4 = 1;
0x00028238 b 0x280f6 | goto label_4;
| label_12:
0x0002823a ldr r5, [sp, 0x10] | r5 = var_10h;
0x0002823c mov r2, r0 | r2 = r0;
0x0002823e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00028240 mov r0, fp | r0 = fp;
0x00028242 str r5, [sp] | *(sp) = r5;
0x00028244 bl 0x27db4 | r0 = fcn_00027db4 (r0, r1, r2, r3);
0x00028248 sub.w r6, r0, 1 | r6 = r0 - 1;
0x0002824c cmp r5, 0 |
0x0002824e clz r6, r6 | r6 &= r6;
0x00028252 mov r4, r0 | r4 = r0;
0x00028254 lsr.w r6, r6, 5 | r6 >>= 5;
0x00028258 it eq |
| if (r5 != 0) {
0x0002825a moveq r6, 0 | r6 = 0;
| }
0x0002825c cmp r6, 0 |
0x0002825e bne 0x2822a |
| }
0x00028260 b 0x28120 | goto label_2;
| label_18:
0x00028262 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x00028264 cbz r3, 0x2826c |
0x00028266 mov r0, r3 | r0 = r3;
0x00028268 blx 0xbd14 | gai_strerror ();
| }
0x0002826c ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002826e str r3, [sp, 0x18] | var_18h = r3;
0x00028270 b 0x280ea | goto label_6;
| label_20:
0x00028272 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00028274 cmp r3, 0 |
0x00028276 ite eq |
| if (r3 != 0) {
0x00028278 moveq r6, 0 | r6 = 0;
| }
| if (r3 == 0) {
0x0002827a andne r6, r6, 1 | r6 &= 1;
| }
0x0002827e cmp r6, 0 |
| if (r6 != 0) {
0x00028280 bne 0x2822a | goto label_7;
| }
0x00028282 b 0x28120 | goto label_2;
| label_22:
0x00028284 mov r0, fp | r0 = fp;
0x00028286 bl 0x39df0 | r0 = zbx_strcasestr ();
0x0002828a clz r4, r0 | r4 &= r0;
0x0002828e lsrs r4, r4, 5 | r4 >>= 5;
0x00028290 adds r3, r4, 1 | r3 = r4 + 1;
0x00028292 b 0x280ec | goto label_0;
| label_27:
0x00028294 mov r0, fp | r0 = fp;
0x00028296 bl 0x39df0 | r0 = zbx_strcasestr ();
0x0002829a subs r4, r0, 0 | r4 = r0 - 0;
0x0002829c it ne |
| if (r4 == r0) {
0x0002829e movne r4, 1 | r4 = 1;
| }
0x000282a0 b 0x280ea | goto label_6;
| label_17:
0x000282a2 cmp r2, 0 |
0x000282a4 mov.w r3, -1 | r3 = -1;
0x000282a8 ite eq |
| if (r2 != 0) {
0x000282aa moveq r2, r4 | r2 = r4;
| }
| if (r2 == 0) {
0x000282ac movne r2, 2 | r2 = 2;
| }
0x000282ae str r3, [sp, 0x28] | var_28h = r3;
0x000282b0 mov r0, fp | r0 = fp;
0x000282b2 add r3, sp, 0x28 | r3 += var_28h;
0x000282b4 bl 0x279b0 | r0 = fcn_000279b0 (r0, r1, r2, r3);
| if (r0 == 0) {
0x000282b8 cbz r0, 0x282f4 | goto label_30;
| }
| do {
0x000282ba ldr.w r7, [r8, 4] | r7 = *((r8 + 4));
0x000282be movs r4, 1 | r4 = 1;
0x000282c0 b 0x280f6 | goto label_4;
| label_15:
0x000282c2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000282c4 adds r3, 1 | r3++;
0x000282c6 bne 0x282ba |
| } while (r3 != 1);
| label_10:
0x000282c8 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000282ca mov.w r4, -1 | r4 = -1;
0x000282ce cmp r0, 0 |
| if (r0 == 0) {
0x000282d0 beq.w 0x28120 | goto label_2;
| }
0x000282d4 blx 0xbd14 | gai_strerror ();
0x000282d8 b 0x28120 | goto label_2;
| label_28:
0x000282da adds r3, r1, 1 | r3 = r1 + 1;
0x000282dc mov r4, r1 | r4 = r1;
0x000282de b 0x280ec | goto label_0;
| label_29:
0x000282e0 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000282e2 mov r3, fp | r3 = fp;
0x000282e4 add r2, sp, 0x24 | r2 += var_24h;
0x000282e6 add r1, sp, 0x28 | r1 += var_28h;
0x000282e8 strd r4, r4, [sp, 0x24] | __asm ("strd r4, r4, [var_24h]");
0x000282ec movs r4, 1 | r4 = 1;
0x000282ee bl 0x39168 | zbx_strcpy_alloc ()
0x000282f2 b 0x28120 | goto label_2;
| label_30:
0x000282f4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000282f6 adds r1, r3, 1 | r1 = r3 + 1;
0x000282f8 it eq |
| if (r1 == r3) {
0x000282fa streq r3, [sp, 0xc] | var_ch = r3;
| goto label_31;
| }
| if (r1 != r3) {
| label_31:
0x000282fc bne.w 0x280ba | goto label_1;
| }
0x00028300 b 0x281a0 | goto label_8;
| label_13:
0x00028302 mov.w r4, -1 | r4 = -1;
0x00028306 b 0x28120 | goto label_2;
| label_21:
0x00028308 blx 0xbe48 | fcn_0000be48 ();
| label_19:
0x0002830c ldr r6, [sp, 0x10] | r6 = var_10h;
0x0002830e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00028310 subs r6, 0 |
0x00028312 it ne |
| if (r6 == 0) {
0x00028314 movne r6, 1 | r6 = 1;
| }
0x00028316 cmp r4, 1 |
0x00028318 it ne |
| if (r4 == 1) {
0x0002831a movne r6, 0 | r6 = 0;
| }
0x0002831c cmp r3, 0 |
| if (r3 != 0) {
0x0002831e bne.w 0x281b8 | goto label_9;
| }
0x00028322 cmp r6, 0 |
| if (r6 != 0) {
0x00028324 bne 0x2822a | goto label_7;
| }
0x00028326 b 0x28120 | goto label_2;
| label_14:
0x00028328 ldr r2, [pc, 0x24] |
0x0002832a ldr r3, [pc, 0x28] |
0x0002832c ldr r1, [pc, 0x28] |
0x0002832e ldr r0, [pc, 0x2c] |
0x00028330 add r2, pc | r2 = 0x50684;
0x00028332 add r3, pc | r3 = 0x5068c;
0x00028334 adds r2, 0xc | r2 += 0xc;
0x00028336 add r1, pc | r1 = 0x50692;
0x00028338 add r0, pc | r0 = 0x5069a;
0x0002833a bl 0x38c64 | zbx_error ();
0x0002833e bl 0x2b778 | zbx_backtrace ();
0x00028342 b 0x282c8 | goto label_10;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x34394 */
| #include <stdint.h>
|
; (fcn) sym.zbx_alias_get () | void zbx_alias_get (int16_t arg_200h, int16_t arg1) {
| int16_t var_48h;
| int16_t var_54h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_28h;
| r0 = arg1;
0x00034394 ldr r1, [pc, 0xe8] |
0x00034396 movs r3, 0 | r3 = 0;
0x00034398 ldr r2, [pc, 0xe8] | r2 = *(0x34484);
0x0003439a push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0003439e sub sp, 0x1c |
0x000343a0 add r1, pc | r1 = 0x68824;
0x000343a2 mov r5, r0 | r5 = r0;
0x000343a4 add r0, sp, 0x10 | r0 += var_10h;
0x000343a6 ldr r2, [r1, r2] |
0x000343a8 ldr r2, [r2] | r2 = *(0x68824);
0x000343aa str r2, [sp, 0x14] | var_14h = r2;
0x000343ac mov.w r2, 0 | r2 = 0;
0x000343b0 strd r3, r5, [sp, 0xc] | __asm ("strd r3, r5, [var_10h]");
0x000343b4 bl 0x3986c | r0 = parse_key ();
| if (r0 != 0) {
0x000343b8 cbnz r0, 0x343de | goto label_1;
| }
0x000343ba ldr r3, [sp, 0x10] | r3 = var_10h;
0x000343bc ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x000343be cbnz r3, 0x343de | goto label_1;
| }
0x000343c0 ldr r3, [pc, 0xc4] |
0x000343c2 add r3, pc | r3 = 0x6884e;
0x000343c4 ldr r6, [r3] | r6 = *(0x6884e);
| if (r6 == 0) {
0x000343c6 cbz r6, 0x343de | goto label_1;
| }
0x000343c8 mov r4, r6 | r4 = r6;
0x000343ca b 0x343d0 |
| while (r0 != 0) {
0x000343cc ldr r4, [r4] | r4 = *(r4);
| if (r4 == 0) {
0x000343ce cbz r4, 0x343fa | goto label_2;
| }
0x000343d0 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000343d2 mov r1, r5 | r1 = r5;
0x000343d4 blx 0xbc58 | r0 = fcn_0000bc58 ();
0x000343d8 cmp r0, 0 |
0x000343da bne 0x343cc |
| }
| do {
0x000343dc ldr r5, [r4, 8] | r5 = *((r4 + 8));
| label_1:
0x000343de ldr r2, [pc, 0xac] |
0x000343e0 ldr r3, [pc, 0xa0] | r3 = *(0x34484);
0x000343e2 add r2, pc | r2 = 0x68874;
0x000343e4 ldr r3, [r2, r3] | r3 = *(0x68874);
0x000343e6 ldr r2, [r3] | r2 = *(0x68874);
0x000343e8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000343ea eors r2, r3 | r2 ^= r3;
0x000343ec mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000343f0 bne 0x3447a | goto label_3;
| }
0x000343f2 mov r0, r5 | r0 = r5;
0x000343f4 add sp, 0x1c |
0x000343f6 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x000343fa ldr.w r8, [pc, 0x94] | r8 = *(0x00034490);
0x000343fe add r8, pc | r8 += pc;
| label_0:
0x00034400 ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x00034402 mov r0, r7 | r0 = r7;
0x00034404 blx 0xc114 | r0 = fcn_0000c114 ();
0x00034408 cmp r0, 3 |
0x0003440a mov r4, r0 | r4 = r0;
| if (r0 < 3) {
0x0003440c bls 0x3446e | goto label_4;
| }
0x0003440e sub.w sb, r0, 3 | sb = r0 - 3;
0x00034412 mov r1, r8 | r1 = r8;
0x00034414 add.w r0, r7, sb | r0 = r7 + sb;
0x00034418 blx 0xbc58 | r0 = fcn_0000bc58 ();
| if (r0 != 0) {
0x0003441c cbnz r0, 0x3446e | goto label_4;
| }
0x0003441e subs r2, r4, 2 | r2 = r4 - 2;
0x00034420 mov r0, r7 | r0 = r7;
0x00034422 mov r1, r5 | r1 = r5;
0x00034424 blx 0xc448 | r0 = fcn_0000c448 ();
| if (r0 != 0) {
0x00034428 cbnz r0, 0x3446e | goto label_4;
| }
0x0003442a ldr r6, [r6, 8] | r6 = *((r6 + 8));
0x0003442c mov r0, r6 | r0 = r6;
0x0003442e blx 0xc114 | r0 = fcn_0000c114 ();
0x00034432 cmp r0, 3 |
| if (r0 < 3) {
0x00034434 bls 0x34476 | goto label_5;
| }
0x00034436 subs r4, r0, 3 | r4 = r0 - 3;
0x00034438 mov r1, r8 | r1 = r8;
0x0003443a adds r0, r6, r4 | r0 = r6 + r4;
0x0003443c blx 0xbc58 | r0 = fcn_0000bc58 ();
| if (r0 != 0) {
0x00034440 cbnz r0, 0x34476 | goto label_5;
| }
0x00034442 str r4, [sp] | *(sp) = r4;
0x00034444 mov r3, r6 | r3 = r6;
0x00034446 ldr r4, [pc, 0x4c] |
0x00034448 add r6, sp, 0xc | r6 += var_54h;
0x0003444a mov r2, r6 | r2 = r6;
0x0003444c add r4, pc | r4 = 0x688e6;
0x0003444e add.w r8, r4, 4 | r8 = r4 + 4;
0x00034452 add.w r7, r4, 8 | r7 = r4 + 8;
0x00034456 mov r1, r8 | r1 = r8;
0x00034458 mov r0, r7 | r0 = r7;
0x0003445a bl 0x3905c | zbx_strncpy_alloc ();
0x0003445e add.w r3, r5, sb | r3 = r5 + sb;
0x00034462 mov r2, r6 | r2 = r6;
0x00034464 mov r1, r8 | r1 = r8;
0x00034466 mov r0, r7 | r0 = r7;
0x00034468 bl 0x39168 | zbx_strcpy_alloc ()
0x0003446c b 0x343dc |
| } while (1);
| label_4:
0x0003446e ldr r6, [r6] | r6 = *(r6);
0x00034470 cmp r6, 0 |
| if (r6 != 0) {
0x00034472 bne 0x34400 | goto label_0;
| }
0x00034474 b 0x343de | goto label_1;
| label_5:
0x00034476 mov r5, r6 | r5 = r6;
0x00034478 b 0x343de | goto label_1;
| label_3:
0x0003447a blx 0xbe48 | fcn_0000be48 ();
0x0003447e nop |
0x00034480 ldrh r4, [r1, 2] | r4 = *((r1 + 2));
0x00034482 movs r2, r0 | r2 = r0;
0x00034484 lsls r4, r2, 0xc | r4 = r2 << 0xc;
0x00034486 movs r0, r0 |
0x00034488 add r7, sp, 0x28 | r7 += var_28h;
0x0003448a movs r2, r0 | r2 = r0;
0x0003448c ldrh r2, [r1] | r2 = *(r1);
0x0003448e movs r2, r0 | r2 = r0;
0x00034490 lsrs r6, r0, 6 | r6 = r0 >> 6;
0x00034492 movs r1, r0 | r1 = r0;
0x00034494 add r6, sp, 0x200 | r6 += arg_200h;
0x00034496 movs r2, r0 | r2 = r0;
| }
[*] Function strcpy used 33 times zabbix_agentd